diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..8acacbd --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,67 @@ +workflows: + version: 2 + build: + jobs: + - build + +version: 2 +jobs: + build: + docker: + - image: buildpack-deps:bionic + steps: + - run: + name: Install pre deps + command: | + apt-get update -yqq \ + && apt-get install -yqq \ + build-essential \ + cmake \ + gcc \ + g++ \ + qt5-default \ + qt5-qmake \ + qtmultimedia5-dev \ + libqt5svg5-dev \ + libx11-dev \ + libavformat-dev \ + libavcodec-dev \ + libavutil-dev \ + libswscale-dev \ + libqt5x11extras5-dev \ + libxcb-util-dev \ + libxcb-cursor-dev \ + libxcb1-dev \ + - run: + name: QMake Version + command: qmake --version + - checkout + - run: git submodule sync + - run: git submodule update --init + - run: + name: LS + command: ls -lahR ~/project + - run: + name: Create Build Env + command: mkdir build && pwd && ls + - run: + name: Build + command: | + cd build && pwd && ls; + qmake ..; + make -j2; + cd ..; + - run: + name: Create Artifact Path + command: mkdir /kshare + - run: + name: Store Build + command: cp build/src/kshare /kshare/ + - run: + name: Build Debian Package + command: | + cd packages/; + ./makedeb.sh ci; + cp *.deb /kshare/ + - store_artifacts: + path: /kshare/ diff --git a/.clang-format b/.clang-format index ec84205..4fbd279 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,4 @@ +# vim: set syntax=yaml : AccessModifierOffset: -4 AlignEscapedNewlinesLeft: false AlignTrailingComments: true @@ -24,7 +25,7 @@ IndentFunctionDeclarationAfterType: false IndentWidth: 4 Language: Cpp MaxEmptyLinesToKeep: 2 -NamespaceIndentation: None +NamespaceIndentation: All ObjCSpaceAfterProperty: true ObjCSpaceBeforeProtocolList: true PenaltyBreakBeforeFirstCallParameter: 100 diff --git a/.gitignore b/.gitignore index 3dc99e9..7c5a8db 100644 --- a/.gitignore +++ b/.gitignore @@ -38,13 +38,19 @@ CMakeLists.txt.user Makefile # Executable -KShare +./KShare # Other *.out - +tags *.Debug - +*.kdev* +.clang vgcore.* *.Release + +.*_history + +.idea/ +build/ \ No newline at end of file diff --git a/AppVeyor/appveyor.yml b/AppVeyor/appveyor.yml new file mode 100644 index 0000000..dd4278b --- /dev/null +++ b/AppVeyor/appveyor.yml @@ -0,0 +1,32 @@ +environment: + QTDIR: C:\Qt\5.9\mingw53_32 +platform: x86 +build_script: + - dir + - mkdir build + - cd build + - set PATH=%PATH%;%QTDIR%\bin;C:\Qt\Tools\mingw530_32\bin;C:\MinGW\msys\1.0\bin + - git submodule update --init --recursive + - curl -kLO https://ffmpeg.zeranoe.com/builds/win64/dev/ffmpeg-3.3.2-win64-dev.zip + - 7z x ffmpeg-3.3.2-win64-dev.zip + - set FFMPEG_DEV_PATH=%CD%\ffmpeg-3.3.2-win64-dev + - curl -kLO https://ffmpeg.zeranoe.com/builds/win64/shared/ffmpeg-3.3.2-win64-shared.zip + - 7z x ffmpeg-3.3.2-win64-shared.zip + - set FFMPEG_SHARED_PATH=%cd%\ffmpeg-3.3.2-win64-shared + - curl -v -L --http1.1 --tlsv1.2 "https://downloads.sourceforge.net/project/qtav/depends/QtAV-depends-windows-x86+x64.7z" -o av.7z + - 7z x av.7z > NUL + - xcopy ffmpeg-3.3.2-win64-shared\* %QTDIR% /e /i /Y + - xcopy ffmpeg-3.3.2-win64-dev\* %QTDIR% /e /i /Y + - xcopy QtAV-depends-windows-x86+x64\* %QTDIR% /e /i /Y + - qmake CONFIG+=nopkg ../KShare.pro + - mingw32-make.exe -j%NUMBER_OF_PROCESSORS% + - copy src\release\kshare.exe ..\KShare.exe + - cd .. + - bash AppVeyor\make_installer.sh +artifacts: + - path: KShare.exe + name: Shared link + - path: installer.exe + name: Installer + - path: portable.zip + name: Portable version diff --git a/AppVeyor/make_installer.sh b/AppVeyor/make_installer.sh new file mode 100644 index 0000000..e34ad32 --- /dev/null +++ b/AppVeyor/make_installer.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +function addFile { + cp $1 . || (echo cp $1 failed ; return 1) + 7z a -tzip portable.zip $(basename $1) > /dev/null + echo "Source: \"$(basename $1)\"; DestDir: \"{app}\"; Flags: ignoreversion" >> installer.iss + echo $1 +} + +function addFileIn { + name=$2\\$(basename $1) + mkdir -p $2 + cp $1 $2 || (echo cp $name failed ; return 1) + 7z a -tzip portable.zip $name > /dev/null + echo "Source: \"$name\"; DestDir: \"{app}\\$2\"; Flags: ignoreversion" >> installer.iss + echo $name +} + +ver=$(cat src/main.cpp | grep setApplicationVersion | sed "s/\\s*a.setApplicationVersion(\"//g" | sed "s/\");//g") + +cd packages/windows +cp ../../KShare.exe . || exit 3 +7z a -tzip portable.zip KShare.exe + +cp /c/Windows/System32/msvcr120.dll /c/projects/kshare/packages/windows/ + +sed "s/;VER;/$ver/" installer.iss.pattern.top > installer.iss + +addFile ../../build/QtAV-depends-windows-x86+x64/bin/avcodec-57.dll +addFile ../../build/QtAV-depends-windows-x86+x64/bin/avformat-57.dll +addFile ../../build/QtAV-depends-windows-x86+x64/bin/avutil-55.dll +addFile ../../build/QtAV-depends-windows-x86+x64/bin/swresample-2.dll +addFile ../../build/QtAV-depends-windows-x86+x64/bin/swscale-4.dll +addFile /c/Qt/5.9/mingw53_32/bin/Qt5Core.dll +addFile /c/Qt/5.9/mingw53_32/bin/Qt5Network.dll +addFile /c/Qt/5.9/mingw53_32/bin/Qt5Gui.dll +addFile /c/Qt/5.9/mingw53_32/bin/Qt5Widgets.dll +addFile /c/Qt/5.9/mingw53_32/bin/Qt5WinExtras.dll +addFile /c/Qt/5.9/mingw53_32/bin/Qt5Multimedia.dll + +addFileIn /c/Qt/5.9/mingw53_32/plugins/platforms/qwindows.dll platforms +addFileIn /c/Qt/5.9/mingw53_32/plugins/mediaservice/dsengine.dll mediaservice + +addFile /c/Qt/5.9/mingw53_32/bin/LIBSTDC++-6.DLL +addFile /c/Qt/5.9/mingw53_32/bin/LIBWINPTHREAD-1.DLL +addFile /c/Qt/5.9/mingw53_32/bin/LIBGCC_S_DW2-1.DLL + +addFile /c/OpenSSL-Win32/bin/libeay32.dll +addFile /c/OpenSSL-Win32/bin/ssleay32.dll +#addFile /c/OpenSSL-Win32/bin/msvcr120.dll +addFile /c/Windows/System32/msvcr120.dll + +echo ----------------- +ls /c/OpenSSL-Win32/bin/ -R +echo ----------------- + +cat installer.iss.pattern.bottom >> installer.iss +"C:\Program Files (x86)\Inno Setup 5\ISCC.exe" installer.iss +cp Output/setup.exe ../../installer.exe || exit 1 +cp portable.zip ../../ || exit 2 diff --git a/KShare.desktop b/KShare.desktop new file mode 100755 index 0000000..e392cdd --- /dev/null +++ b/KShare.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Name=KShare +Comment=The free and open source and cross platform screen sharing software. +GenericName=Screenshot Capture Utility +Exec=/usr/bin/kshare +Icon=/usr/share/pixmaps/KShare.png +Type=Application +StartupNotify=false +Categories=Qt;Utility; +StartupWMClass=KShare +Actions=StartInBackground + +[Desktop Action StartInBackground] +Name=Start without showing the window +Exec=/usr/bin/kshare -b diff --git a/KShare.pro b/KShare.pro index 283fe23..5f95a79 100644 --- a/KShare.pro +++ b/KShare.pro @@ -1,157 +1,12 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2017-04-19T15:47:09 -# -#------------------------------------------------- - -QT += core gui network - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - -TARGET = KShare -TEMPLATE = app - -CONFIG += c++11 - -# The following define makes your compiler emit warnings if you use -# any feature of Qt which as been marked as deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if you use deprecated APIs. -# In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. -#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - - -SOURCES += main.cpp\ - mainwindow.cpp \ - cropeditor/cropeditor.cpp \ - cropeditor/cropview.cpp \ - cropeditor/cropscene.cpp \ - uploaders/uploadersingleton.cpp \ - screenshotter.cpp \ - screenshotutil.cpp \ - uploaders/default/imguruploader.cpp \ - io/ioutils.cpp \ - settings.cpp \ - uploaders/default/clipboarduploader.cpp \ - formatter.cpp \ - uploaders/customuploader.cpp \ - notifications.cpp \ - hotkeying.cpp \ - cropeditor/drawing/dotitem.cpp \ - cropeditor/settings/brushpenselection.cpp \ - cropeditor/drawing/bluritem.cpp \ - cropeditor/drawing/pathitem.cpp \ - cropeditor/drawing/lineitem.cpp \ - cropeditor/drawing/textitem.cpp \ - colorpicker/colorpickerscene.cpp \ - worker/worker.cpp \ - screenareaselector/screenareaselector.cpp \ - recording/recordingpreview.cpp \ - recording/recordingcontroller.cpp \ - recording/recordingformats.cpp \ - formats.cpp \ - recording/encoders/encoder.cpp \ - recording/encoders/encodersettings.cpp \ - recording/encoders/encodersettingsdialog.cpp \ - settingsdialog.cpp \ - aboutbox.cpp \ - cropeditor/drawing/eraseritem.cpp \ - cropeditor/drawing/rectitem.cpp \ - cropeditor/drawing/ellipseitem.cpp \ - hotkeyinputdialog.cpp \ - cropeditor/drawing/arrowitem.cpp \ - uploaders/default/imgursettingsdialog.cpp \ - uploaders/default/imgplusuploader.cpp - -HEADERS += mainwindow.hpp \ - cropeditor/cropeditor.hpp \ - cropeditor/cropview.hpp \ - cropeditor/cropscene.hpp \ - uploaders/uploader.hpp \ - uploaders/uploadersingleton.hpp \ - screenshotter.hpp \ - screenshotutil.hpp \ - uploaders/default/imguruploader.hpp \ - io/ioutils.hpp \ - settings.hpp \ - uploaders/default/clipboarduploader.hpp \ - formatter.hpp \ - uploaders/customuploader.hpp \ - notifications.hpp \ - hotkeying.hpp \ - cropeditor/drawing/drawitem.hpp \ - cropeditor/drawing/dotitem.hpp \ - cropeditor/settings/brushpenselection.hpp \ - cropeditor/drawing/bluritem.hpp \ - cropeditor/drawing/pathitem.hpp \ - cropeditor/drawing/lineitem.hpp \ - cropeditor/drawing/textitem.hpp \ - colorpicker/colorpickerscene.hpp \ - platformbackend.hpp \ - worker/worker.hpp \ - screenareaselector/screenareaselector.hpp \ - recording/recordingpreview.hpp \ - recording/recordingcontroller.hpp \ - recording/recordingformats.hpp \ - formats.hpp \ - recording/encoders/encoder.hpp \ - recording/encoders/encodersettings.hpp \ - recording/encoders/encodersettingsdialog.hpp \ - settingsdialog.hpp \ - aboutbox.hpp \ - cropeditor/drawing/eraseritem.hpp \ - cropeditor/drawing/rectitem.hpp \ - cropeditor/drawing/ellipseitem.hpp \ - hotkeyinputdialog.hpp \ - cropeditor/drawing/arrowitem.hpp \ - uploaders/default/imgursettingsdialog.hpp \ - uploaders/default/imgplusuploader.hpp - -CONFIG += link_pkgconfig -PKGCONFIG += libavformat libavcodec libswscale libavutil - -mac { - SOURCES += $$PWD/platformspecifics/mac/macbackend.cpp - HEADERS += $$PWD/platformspecifics/mac/macbackend.hpp - LIBS += -framework Carbon - warning(Mac is on TODO); -} else:win32 { - SOURCES += $$PWD/platformspecifics/u32/u32backend.cpp - HEADERS += $$PWD/platformspecifics/u32/u32backend.hpp - LIBS += -luser32 -lkernel32 -lpthread - QT += winextras -} else:unix { - SOURCES += $$PWD/platformspecifics/x11/x11backend.cpp - HEADERS += $$PWD/platformspecifics/x11/x11backend.hpp - QT += x11extras - LIBS += -lxcb-cursor -lxcb-xfixes -lxcb -} else { - error(Unsupported platform); -} - -FORMS += mainwindow.ui \ - cropeditor/settings/brushpenselection.ui \ - recording/encoders/encodersettingsdialog.ui \ - settingsdialog.ui \ - aboutbox.ui \ - hotkeyinputdialog.ui \ - uploaders/default/imgursettingsdialog.ui +TEMPLATE = subdirs +SUBDIRS += src DISTFILES += \ README.md \ LICENSE \ - OlderSystemFix.patch - -RESOURCES += \ - icon.qrc - -ICON = icons/icon.ico - -# Enable debug symbols -QMAKE_CFLAGS_DEBUG += -g - -include(QHotkey/qhotkey.pri) + OlderSystemFix.patch \ + AppVeyor/appveyor.yml \ + AppVeyor/make_installer.sh \ + .circleci/config.yml \ + .travis.yml \ + install.sh diff --git a/LICENSE b/LICENSE index e8d61c9..d33a28d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2017 ArsenArsen +Copyright (c) 2018 ArsenArsen 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: diff --git a/OlderSystemFix.patch b/OlderSystemFix.patch index 2741241..5f285d7 100644 --- a/OlderSystemFix.patch +++ b/OlderSystemFix.patch @@ -1,7 +1,7 @@ -diff --git a/recording/encoders/encoder.cpp b/recording/encoders/encoder.cpp +diff --git a/src/recording/encoders/encoder.cpp b/src/recording/encoders/encoder.cpp index 481ba40..c04d32b 100644 ---- a/recording/encoders/encoder.cpp -+++ b/recording/encoders/encoder.cpp +--- a/src/recording/encoders/encoder.cpp ++++ b/src/recording/encoders/encoder.cpp @@ -64,8 +64,8 @@ Encoder::Encoder(QString &targetFile, QSize res, CodecSettings *settings) { if (ret < 0) throwAVErr(ret, "codec open"); if (codec->capabilities & AV_CODEC_CAP_DR1) avcodec_align_dimensions(out->enc, &out->enc->width, &out->enc->height); diff --git a/README.md b/README.md index 2f417bf..939f3cf 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,25 @@ # KShare -A [ShareX](https://getsharex.com/) inspired cross platform utility written with Qt. +A [ShareX](https://getsharex.com/) inspired cross platform utility written with Qt. +Originally written by [ArsenArsen](https://github.com/ArsenArsen) and here enhanced with [these](https://github.com/Gurkengewuerz/KShare/projects/1) features. + +| | Linux | Windows | +|--------|-------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| master | [![CircleCI](https://circleci.com/gh/Gurkengewuerz/KShare/tree/master.svg?style=svg)](https://circleci.com/gh/Gurkengewuerz/KShare/tree/master) | [![Build status](https://ci.appveyor.com/api/projects/status/ujxmg1dk7f5p8ijh/branch/master?svg=true)](https://ci.appveyor.com/project/Gurkengewuerz/kshare/branch/master) | +| dev | [![CircleCI](https://circleci.com/gh/Gurkengewuerz/KShare/tree/dev.svg?style=svg)](https://circleci.com/gh/Gurkengewuerz/KShare/tree/dev) | [![Build status](https://ci.appveyor.com/api/projects/status/ujxmg1dk7f5p8ijh/branch/dev?svg=true)](https://ci.appveyor.com/project/Gurkengewuerz/kshare/branch/dev) | -|Linux|Windows|OS X| -|:---:|:-----:|:--:| -|[![Build Status](https://nativeci.arsenarsen.com/job/KShare/badge/icon)](https://nativeci.arsenarsen.com/job/KShare)| [![Build Status](https://nativeci.arsenarsen.com/job/KShare%20Windows%20x86_64/badge/icon)](https://nativeci.arsenarsen.com/job/KShare%20Windows%20x86_64/)| Soon | ## Screenshot -Made with KShare itself, of course :) - -![](http://i.imgur.com/ffWvCun.png) +Made with KShare itself, of course :) +![](https://i.imgur.com/oJrCNkq.png) ## Usage -See the [wiki](https://gitlab.com/ArsenArsen/KShare/wikis/home). +See the [wiki](https://github.com/ArsenArsen/KShare/wiki). +Please note that KShare is not compatiable with Wayland due to some permission issues. Please use X.Org instead. ## Dependencies * Qt 5 Widgets * Qt 5 GUI * Qt 5 Network +* Qt 5 Multimedia * Qt 5 X11Extras | Winextras * [QHotkey](https://github.com/Skycoder42/QHotkey) * libavformat @@ -23,42 +27,36 @@ See the [wiki](https://gitlab.com/ArsenArsen/KShare/wikis/home). * libavutil * libswscale +Additionally, on Linux, you require: +* XCB +* XCB xfixes +* XCB cursor +* Notifications Daemon with org.freedesktop.notifications DBus support (like dunst) + Despite the name implying so, this project does not depend on the KDE API at all. -## Goals -See the [project board](https://gitlab.com/ArsenArsen/KShare/boards) - ## Install - -### **NOTE:** These links are temporarily down and will be fixed with the next release. Current (potentially unstable) development builds are available at [this location](https://nativeci.arsenarsen.com/job/KShare%20(dev)) - |Distro|Link| |:----:|:--:| |Arch Linux (development)|[kshare-git](https://aur.archlinux.org/packages/kshare-git/)| -|Ubuntu (development)|[Ubuntu .deb](https://nativeci.arsenarsen.com/job/KShare/lastSuccessfulBuild/artifact/packages/simpleName.deb)| +|Ubuntu/Debian (development)|[.deb](https://nativeci.arsenarsen.com/job/KShare%20\(dev\)/main=linux/lastSuccessfulBuild/artifact/packages/simpleName.deb)| |Arch Linux |[kshare](https://aur.archlinux.org/packages/kshare/)| -|Ubuntu |[Ubuntu .deb](https://nativeci.arsenarsen.com/job/KShare%20Stable/lastSuccessfulBuild/artifact/packages/simpleName.deb)| - -I do plan to make a Debian packages. +|Ubuntu/Debian |[.deb](https://nativeci.arsenarsen.com/job/KShare%20\(master\)/main=linux/lastSuccessfulBuild/artifact/packages/simpleName.deb)| For other UNIX-like platforms, and MSYS2 (for Windows): You have to obtain the dependencies though. ```bash -git clone https://gitlab.com/ArsenArsen/KShare.git +git clone --recursive https://github.com/ArsenArsen/KShare.git cd KShare -qmake // Might be qmake-qt5 on your system +qmake # Might be qmake-qt5 on your system make ``` -On systems with FFMpeg pre-3.1 you need to apply `OlderSystemFix.patch` to `recording/encoders/encoder.cpp`. +On systems with FFMpeg pre-3.1 you need to apply `OlderSystemFix.patch` to `src/recording/encoders/encoder.cpp`. On systems with Qt pre-5.7 you need to install the Qt version from their website. +You can attempt to `curl https://raw.githubusercontent.com/ArsenArsen/KShare/master/install.sh | bash` -## Support (and contact) -There's a few ways to get support, you can: -* join `#kshare` on [Freenode](https://webchat.freenode.net/?channels=kshare) -* open an issue +You can find more details [here](https://blog.arsenarsen.com/posts/compiling-kshare-on-linux-mac-os-x-and-windows-final-revision) -If someone can answer, they probably will. - -###### Started on 19th of April 2017 to bring some attention and improvement to Linux screenshotting. +###### Started on 19th of April 2017 by [ArsenArsen](https://github.com/ArsenArsen) to bring some attention and improvement to Linux screenshotting. diff --git a/aboutbox.ui b/aboutbox.ui deleted file mode 100644 index 8c48a8f..0000000 --- a/aboutbox.ui +++ /dev/null @@ -1,319 +0,0 @@ - - - AboutBox - - - - 0 - 0 - 531 - 231 - - - - About KShare - - - - - - <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - The free and open source and cross platform screen sharing software</span></p><p>Version %0<br/>Links: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Source code</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Website</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> - - - - - - - <!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:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This software uses and possibly bundles Qt, OpenSSL, FFMpeg, and QHotkey, whose licenses are respectively:</p> -<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">------------------------------ </span><a href="http://code.qt.io/cgit/qt/qt5.git/tree/LICENSE.LGPLv3"><span style=" font-family:'Noto Mono'; text-decoration: underline; color:#007af4;">Qt</span></a><span style=" font-family:'Noto Mono';">:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">GNU LESSER GENERAL PUBLIC LICENSE</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">Contact: </span><a href="http://www.qt.io/licensing/"><span style=" font-family:'Noto Mono'; text-decoration: underline; color:#007af4;">http://www.qt.io/licensing/</span></a></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">You may use, distribute and copy the Qt Toolkit under the terms of</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">GNU Lesser General Public License version 3, which is displayed below.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">This license makes reference to the version 3 of the GNU General</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">Public License, which you can find in the </span><a href="http://code.qt.io/cgit/qt/qt5.git/tree/LICENSE.LGPLv3"><span style=" font-family:'Noto Mono'; text-decoration: underline; color:#007af4;">LICENSE.GPLv3</span></a><span style=" font-family:'Noto Mono';"> file.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">------------------------------ </span><a href="https://www.openssl.org/source/license.html"><span style=" text-decoration: underline; color:#007af4;">OpenSSL</span></a><span style=" font-family:'Noto Mono';">:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">LICENSE ISSUES</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">==============</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">The OpenSSL toolkit stays under a double license, i.e. both the conditions of</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">See below for the actual license texts.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">OpenSSL License</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">---------------</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">/* ====================================================================</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Redistribution and use in source and binary forms, with or without</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* modification, are permitted provided that the following conditions</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* are met:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 1. Redistributions of source code must retain the above copyright</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* notice, this list of conditions and the following disclaimer. </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 2. Redistributions in binary form must reproduce the above copyright</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* notice, this list of conditions and the following disclaimer in</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* the documentation and/or other materials provided with the</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* distribution.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 3. All advertising materials mentioning features or use of this</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* software must display the following acknowledgment:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* &quot;This product includes software developed by the OpenSSL Project</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* for use in the OpenSSL Toolkit. (http://www.openssl.org/)&quot;</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 4. The names &quot;OpenSSL Toolkit&quot; and &quot;OpenSSL Project&quot; must not be used to</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* endorse or promote products derived from this software without</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* prior written permission. For written permission, please contact</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* openssl-core@openssl.org.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 5. Products derived from this software may not be called &quot;OpenSSL&quot;</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* nor may &quot;OpenSSL&quot; appear in their names without prior written</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* permission of the OpenSSL Project.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 6. Redistributions of any form whatsoever must retain the following</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* acknowledgment:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* &quot;This product includes software developed by the OpenSSL Project</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* for use in the OpenSSL Toolkit (http://www.openssl.org/)&quot;</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* OF THE POSSIBILITY OF SUCH DAMAGE.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* ====================================================================</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* This product includes cryptographic software written by Eric Young</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* (eay@cryptsoft.com). This product includes software written by Tim</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Hudson (tjh@cryptsoft.com).</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*/</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">Original SSLeay License</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">-----------------------</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* All rights reserved.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* This package is an SSL implementation written</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* by Eric Young (eay@cryptsoft.com).</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* The implementation was written so as to conform with Netscapes SSL.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* This library is free for commercial and non-commercial use as long as</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* the following conditions are aheared to. The following conditions</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* apply to all code found in this distribution, be it the RC4, RSA,</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* lhash, DES, etc., code; not just the SSL code. The SSL documentation</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* included with this distribution is covered by the same copyright terms</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* except that the holder is Tim Hudson (tjh@cryptsoft.com).</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Copyright remains Eric Young's, and as such any Copyright notices in</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* the code are not to be removed.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* If this package is used in a product, Eric Young should be given attribution</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* as the author of the parts of the library used.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* This can be in the form of a textual message at program startup or</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* in documentation (online or textual) provided with the package.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Redistribution and use in source and binary forms, with or without</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* modification, are permitted provided that the following conditions</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* are met:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 1. Redistributions of source code must retain the copyright</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* notice, this list of conditions and the following disclaimer.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 2. Redistributions in binary form must reproduce the above copyright</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* notice, this list of conditions and the following disclaimer in the</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* documentation and/or other materials provided with the distribution.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 3. All advertising materials mentioning features or use of this software</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* must display the following acknowledgement:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* &quot;This product includes cryptographic software written by</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Eric Young (eay@cryptsoft.com)&quot;</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* The word 'cryptographic' can be left out if the rouines from the library</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* being used are not cryptographic related :-).</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* 4. If you include any Windows specific code (or a derivative thereof) from </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* the apps directory (application code) you must include an acknowledgement:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* &quot;This product includes software written by Tim Hudson (tjh@cryptsoft.com)&quot;</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* SUCH DAMAGE.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* The licence and distribution terms for any publically available version or</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* derivative of this code cannot be changed. i.e. this code cannot simply be</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* copied and put under another distribution licence</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* [including the GNU Public Licence.]</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">*/</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">------------------------------ </span><a href="https://github.com/FFmpeg/FFmpeg/blob/master/LICENSE.md"><span style=" text-decoration: underline; color:#007af4;">FFMpeg</span></a>:</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:xx-large; font-weight:600;">License</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Most files in FFmpeg are under the GNU Lesser General Public License version 2.1 or later (LGPL v2.1+). Read the file <span style=" font-family:'Noto Mono';">COPYING.LGPLv2.1</span> for details. Some other files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to FFmpeg.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Some optional parts of FFmpeg are licensed under the GNU General Public License version 2 or later (GPL v2+). See the file <span style=" font-family:'Noto Mono';">COPYING.GPLv2</span> for details. None of these parts are used by default, you have to explicitly pass <span style=" font-family:'Noto Mono';">--enable-gpl</span> to configure to activate them. In this case, FFmpeg's license changes to GPL v2+.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specifically, the GPL parts of FFmpeg are:</p> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libpostproc</li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">optional x86 optimization in the files </li> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libavcodec/x86/flac_dsp_gpl.asm</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libavcodec/x86/idct_mmx.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libavfilter/x86/vf_removegrain.asm</span></li></ul> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the following building and testing tools </li> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">compat/solaris/make_sunver.pl</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">doc/t2h.pm</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">doc/texi2pod.pl</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libswresample/swresample-test.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">tests/checkasm/*</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">tests/tiny_ssim.c</span></li></ul> -<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the following filters in libavfilter: </li></ul> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_blackframe.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_boxblur.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_colormatrix.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_cover_rect.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_cropdetect.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_delogo.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_eq.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_find_rect.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_fspp.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_geq.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_histeq.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_hqdn3d.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_interlace.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_kerndeint.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_mcdeint.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_mpdecimate.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_owdenoise.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_perspective.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_phase.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_pp.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_pp7.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_pullup.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_repeatfields.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_sab.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_smartblur.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_spp.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_stereo3d.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_super2xsai.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_tinterlace.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_uspp.c</span></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vsrc_mptestsrc.c</span></li></ul> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then the configure parameter <span style=" font-family:'Noto Mono';">--enable-version3</span> will activate this licensing option for you. Read the file <span style=" font-family:'Noto Mono';">COPYING.LGPLv3</span> or, if you have enabled GPL parts, <span style=" font-family:'Noto Mono';">COPYING.GPLv3</span> to learn the exact legal terms that apply in this case.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There are a handful of files under other licensing terms, namely:</p> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The files <span style=" font-family:'Noto Mono';">libavcodec/jfdctfst.c</span>, <span style=" font-family:'Noto Mono';">libavcodec/jfdctint_template.c</span> and <span style=" font-family:'Noto Mono';">libavcodec/jrevdct.c</span> are taken from libjpeg, see the top of the files for licensing details. Specifically note that you must credit the IJG in the documentation accompanying your program if you only distribute executables. You must also indicate any changes including additions and deletions to those three files in the documentation.</li> -<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">tests/reference.pnm</span> is under the expat license.</li></ul> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="user-content-external-libraries"></a><span style=" font-size:x-large; font-weight:600;">E</span><span style=" font-size:x-large; font-weight:600;">xternal libraries</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">FFmpeg can be combined with a number of external libraries, which sometimes affect the licensing of binaries resulting from the combination.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="user-content-compatible-libraries"></a><span style=" font-size:large; font-weight:600;">C</span><span style=" font-size:large; font-weight:600;">ompatible libraries</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The following libraries are under GPL:</p> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">frei0r</li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libcdio</li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">librubberband</li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libvidstab</li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libx264</li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libx265</li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libxavs</li> -<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libxvid</li></ul> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by passing <span style=" font-family:'Noto Mono';">--enable-gpl</span> to configure.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The OpenCORE and VisualOn libraries are under the Apache License 2.0. That license is incompatible with the LGPL v2.1 and the GPL v2, but not with version 3 of those licenses. So to combine these libraries with FFmpeg, the license version needs to be upgraded by passing <span style=" font-family:'Noto Mono';">--enable-version3</span> to configure.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="user-content-incompatible-libraries"></a><span style=" font-size:large; font-weight:600;">I</span><span style=" font-size:large; font-weight:600;">ncompatible libraries</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There are certain libraries you can combine with FFmpeg whose licenses are not compatible with the GPL and/or the LGPL. If you wish to enable these libraries, even in circumstances that their license may be incompatible, pass <span style=" font-family:'Noto Mono';">--enable-nonfree</span> to configure. But note that if you enable any of these libraries the resulting binary will be under a complex license mix that is more restrictive than the LGPL and that may result in additional obligations. It is possible that these restrictions cause the resulting binary to be unredistributable.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The Fraunhofer FDK AAC and OpenSSL libraries are under licenses which are incompatible with the GPLv2 and v3. To the best of our knowledge, they are compatible with the LGPL.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The NVENC library, while its header file is licensed under the compatible MIT license, requires a proprietary binary blob at run time, and is deemed to be incompatible with the GPL. We are not certain if it is compatible with the LGPL, but we require <span style=" font-family:'Noto Mono';">--enable-nonfree</span> even with LGPL configurations in case it is not.</p> -<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">------------------------------ </span><a href="https://github.com/Skycoder42/QHotkey/"><span style=" text-decoration: underline; color:#007af4;">QHotkey</span></a><span style=" font-family:'Noto Mono';">:</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">Copyright (c) 2016, Felix Barz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">All rights reserved.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">Redistribution and use in source and binary forms, with or without</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">modification, are permitted provided that the following conditions are met:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Redistributions of source code must retain the above copyright notice, this</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';"> list of conditions and the following disclaimer.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Redistributions in binary form must reproduce the above copyright notice,</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';"> this list of conditions and the following disclaimer in the documentation</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';"> and/or other materials provided with the distribution.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">* Neither the name of QHotkey nor the names of its</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';"> contributors may be used to endorse or promote products derived from</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';"> this software without specific prior written permission.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></p> -<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></p></body></html> - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - AboutBox - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - AboutBox - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/colorpicker/colorpickerscene.cpp b/colorpicker/colorpickerscene.cpp deleted file mode 100644 index 840ace5..0000000 --- a/colorpicker/colorpickerscene.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "colorpickerscene.hpp" -#include -#include -#include -#include -#include -#include - -ColorPickerScene::ColorPickerScene(QPixmap pixmap, QWidget *parentWidget) -: QGraphicsScene(), QGraphicsView(this, parentWidget) { - setFrameShape(QFrame::NoFrame); // Time taken to solve: A george99g and 38 minutes. - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setWindowFlags(windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); - setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing); - setCursor(QCursor(Qt::CrossCursor)); - setMouseTracking(true); - setWindowTitle("KShare Color Picker"); - setGeometry(pixmap.rect()); - setAttribute(Qt::WA_DeleteOnClose); - - pItem = addPixmap(pixmap); - pItem->setZValue(-2); - ellipse = addEllipse(QRectF(QCursor::pos(), QSize(20, 20)), QPen(Qt::cyan), Qt::NoBrush); - QFont font("Monospace"); - font.setStyleHint(QFont::Monospace); - text = addText("#hiyouu", font); - textBackground = addRect(text->boundingRect(), Qt::NoPen, QBrush(Qt::black)); - text->setPos(QCursor::pos() + QPoint(25, 0)); - textBackground->setPos(text->pos()); - textBackground->setZValue(-1); - color = pItem->pixmap().toImage().pixelColor(QCursor::pos()); - text->setPlainText(color.name()); - ellipse->setBrush(color); - image = pixmap.toImage(); - - show(); -} - -void ColorPickerScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - color = image.pixelColor(event->scenePos().toPoint()); - text->setPlainText(color.name()); - ellipse->setBrush(color); - - qreal bottom = rect().bottom(); // max y - qreal right = rect().right(); // max x - qreal width = text->boundingRect().width(); - qreal height = text->boundingRect().height(); - - QPointF origPoint = event->scenePos() + QPoint(25, 0); - QPointF scopePoint = event->scenePos(); - QPointF resPoint = origPoint; - if (origPoint.x() + width > right) { - scopePoint -= QPoint(20, 0); - resPoint -= QPoint(50 + width, 0); - } - if (origPoint.y() + height > bottom) { - scopePoint -= QPoint(0, 20); - resPoint -= QPoint(0, height); - } - - ellipse->setRect(QRectF(scopePoint, QSize(20, 20))); - text->setPos(resPoint); - textBackground->setPos(text->pos()); -} - -void ColorPickerScene::keyPressEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Return) QApplication::clipboard()->setText(color.name()); - if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Escape) close(); -} - -void ColorPickerScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *) { - QApplication::clipboard()->setText(color.name()); - close(); -} diff --git a/cropeditor/cropscene.cpp b/cropeditor/cropscene.cpp deleted file mode 100644 index c0765a2..0000000 --- a/cropeditor/cropscene.cpp +++ /dev/null @@ -1,325 +0,0 @@ -#include "cropscene.hpp" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -CropScene::CropScene(QObject *parent, QPixmap pixmap) -: QGraphicsScene(parent), drawingSelectionMaker([] { return nullptr; }), prevButtons(Qt::NoButton), - _brush(Qt::SolidPattern), _font(settings::settings().value("font", QFont()).value()) { - _pixmap = pixmap; - pen().setColor(settings::settings().value("penColor", pen().color()).value()); - pen().setCosmetic(settings::settings().value("penCosmetic", pen().isCosmetic()).toBool()); - pen().setWidthF(settings::settings().value("penWidth", pen().widthF()).toFloat()); - brush().setColor(settings::settings().value("brushColor", brush().color()).value()); - brush().setStyle((Qt::BrushStyle)settings::settings().value("brushStyle", (int)Qt::SolidPattern).toInt()); - - addDrawingAction(menu, "Dot", [] { return new DotItem; }); - addDrawingAction(menu, "Path", [] { return new PathItem; }); - addDrawingAction(menu, "Blur", [] { return new BlurItem; }); - addDrawingAction(menu, "Straight line", [] { return new LineItem; }); - addDrawingAction(menu, "Text", [] { return new TextItem; }); - addDrawingAction(menu, "Rectangle", [] { return new RectItem; }); - addDrawingAction(menu, "Ellipse", [] { return new EllipseItem; }); - addDrawingAction(menu, "Arrow", [] { return new ArrowItem; }); - - menu.addSeparator(); - addDrawingAction(menu, "Eraser", [] { return new EraserItem; }); - QAction *clear = menu.addAction("Clear all drawing"); - connect(clear, &QAction::triggered, [&] { - auto its = items(); - for (auto i : its) { - if (i != rect && i != polyItem && i->zValue() != -1) removeItem(i); - } - }); - - QAction *reset = menu.addAction("Reset pen selection"); - connect(reset, &QAction::triggered, [&] { setDrawingSelection("None", [] { return nullptr; }); }); - - menu.addSeparator(); - QAction *settings = new QAction; - settings->setText("Settings"); - menu.addSeparator(); - display = menu.addAction(drawingName); - display->setDisabled(true); - connect(settings, &QAction::triggered, [&] { - hide(); - BrushPenSelection(this).exec(); - show(); - }); - menu.addAction(settings); - - magnifier = addPixmap(pixmap.copy(0, 0, 11, 11).scaled(110, 110)); - magnifierBox = addRect(magnifier->boundingRect(), QPen(Qt::cyan)); - magnifier->setZValue(1); - magnifierBox->setZValue(1.1); - magnifierBox->setParentItem(magnifier); - magnifierHint = addText("ptr: (0, 0)\nsel: (0, 0, 0, 0)"); - magnifierHint->setParentItem(magnifier); - magnifierHint->setY(magnifier->boundingRect().height()); - QColor c(Qt::cyan); - c.setAlphaF(.25); - magnifierHintBox = addRect(magnifierHint->boundingRect(), Qt::NoPen, c); - magnifierHintBox->setParentItem(magnifierHint); - magnifierHintBox->setZValue(1); - magnifierHint->setZValue(1.1); - initMagnifierGrid(); - updateMag(QPointF(0, 0)); - - connect(menu.addAction("Set Font"), &QAction::triggered, this, &CropScene::fontAsk); - - QTimer::singleShot(0, [&] { - QPolygonF poly; - poly.append(sceneRect().topLeft()); - poly.append(sceneRect().topRight()); - poly.append(sceneRect().bottomRight()); - poly.append(sceneRect().bottomLeft()); - polyItem = new QGraphicsPolygonItem(poly); - polyItem->setBrush(QBrush(QColor(0, 0, 0, 191))); - polyItem->setPen(QPen(Qt::NoPen)); - addItem(polyItem); - }); -} - -CropScene::~CropScene() { - delete drawingSelection; -} - -QPen &CropScene::pen() { - return _pen; -} - -QBrush &CropScene::brush() { - return _brush; -} - -QFont &CropScene::font() { - return _font; -} - -void CropScene::setDrawingSelection(QString name, std::function drawAction) { - this->setFocus(); - drawingSelectionMaker = drawAction; - drawingSelection = drawAction(); - drawingName = name; - if (drawingSelection) - if (!drawingSelection->init(this)) setDrawingSelection("None", [] { return nullptr; }); -} - -void CropScene::hide() { - setVisible(false); -} - -void CropScene::show() { - setVisible(true); -} - -void CropScene::setVisible(bool visible) { - for (auto view : views()) { - if (view->isVisible()) fullscreen |= view->isFullScreen(); - view->setVisible(visible); - if (visible && fullscreen) view->showFullScreen(); - } -} - -void CropScene::fontAsk() { - hide(); - bool ok = false; - QFont font = QFontDialog::getFont(&ok, this->font(), nullptr, "Font to use"); - if (ok) _font = font; - show(); -} - -void CropScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { - updateMag(e->scenePos()); - - auto buttons = e->buttons(); - if (e->modifiers() & Qt::ControlModifier && buttons == Qt::LeftButton) { - QTransform stupidThing = views()[0]->transform(); - auto item = itemAt(e->scenePos(), stupidThing); - if (item && item != polyItem && item != rect && item->zValue() != -1) { - QPointF delta = e->scenePos() - e->lastScenePos(); - item->moveBy(delta.x(), delta.y()); - } - return; - } - if (buttons == Qt::LeftButton || (prevButtons == Qt::NoButton && prevButtons != buttons)) { - if (drawingSelection) { - drawingSelection->mouseDragEvent(e, this); - } else { - QPointF p = e->scenePos(); - if (rect == nullptr) { - rect = new QGraphicsRectItem(p.x(), p.y(), 1, 1); - initPos = p; - QPen pen(Qt::NoBrush, 1); - pen.setColor(Qt::cyan); - rect->setPen(pen); - rect->setZValue(-0.1); - addItem(rect); - } else { - if (prevButtons == Qt::NoButton) { - initPos = p; - rect->setRect(p.x(), p.y(), 1, 1); - } else { - rect->setRect(QRect(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()), - qAbs(initPos.y() - p.y()))); - } - } - QPolygonF poly; - QPointF theMagicWikipediaPoint(rect->rect().right(), sceneRect().bottom()); - poly << sceneRect().topLeft(); - poly << sceneRect().topRight(); - poly << sceneRect().bottomRight(); - poly << theMagicWikipediaPoint; - poly << rect->rect().bottomRight(); - poly << rect->rect().topRight(); - poly << rect->rect().topLeft(); - poly << rect->rect().bottomLeft(); - poly << rect->rect().bottomRight(); - poly << theMagicWikipediaPoint; - poly << sceneRect().bottomLeft(); - poly << sceneRect().topLeft(); - - this->polyItem->setPolygon(poly); - e->accept(); - } - } - prevButtons = buttons; -} - -void CropScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { - if (drawingSelection) { - drawingSelection->mouseDragEndEvent(e, this); - delete drawingSelection; - drawingSelection = drawingSelectionMaker(); - if (drawingSelection) - if (!drawingSelection->init(this)) setDrawingSelection("None", [] { return nullptr; }); - } else if (settings::settings().value("quickMode", false).toBool()) - done(true); - prevButtons = Qt::NoButton; -} - -void CropScene::mousePressEvent(QGraphicsSceneMouseEvent *e) { - if (e->modifiers() & Qt::AltModifier) { - QTransform stupidThing = views()[0]->transform(); - auto item = itemAt(e->scenePos(), stupidThing); - if (item && item != polyItem && item != rect && item->zValue() != -1) { - removeItem(item); - } - } -} - -void CropScene::wheelEvent(QGraphicsSceneWheelEvent *event) { - int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt(); - if (pixCnt % 2 == 0) pixCnt++; - if (pixCnt > 20) return; - if (event->delta() > 0 && pixCnt < 19) - settings::settings().setValue("magnifierPixelCount", pixCnt += 2); - else if (pixCnt > 1) - settings::settings().setValue("magnifierPixelCount", pixCnt -= 2); - - for (auto item : gridRectsX) delete item; - gridRectsX.clear(); - for (auto item : gridRectsY) delete item; - gridRectsY.clear(); - - initMagnifierGrid(); - updateMag(event->scenePos()); -} - -void CropScene::addDrawingAction(QMenu &menu, QString name, std::function item) { - QAction *action = new QAction; - action->setText(name); - connect(action, &QAction::triggered, [this, item, name](bool) { setDrawingSelection(name, item); }); - menu.addAction(action); -} - -void CropScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *e) { - display->setText(drawingName); - menu.exec(e->screenPos()); - e->accept(); -} - -void CropScene::keyReleaseEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter || event->key() == Qt::Key_Escape) - done(event->key() != Qt::Key_Escape); -} - -void CropScene::updateMag(QPointF scenePos) { - QString rectStr("(0, 0, 0, 0)"); - if (rect) { - rectStr = "(%0, %1, %2, %3)"; - rectStr = rectStr.arg(rect->rect().x()).arg(rect->rect().y()).arg(rect->rect().width()).arg(rect->rect().height()); - } - magnifierHint->setPlainText(QString("ptr: (%0, %1)\nsel: %2").arg(scenePos.x()).arg(scenePos.y()).arg(rectStr)); - magnifierHintBox->setRect(magnifierHint->boundingRect()); - - int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt(); - if (pixCnt % 2 == 0) pixCnt++; - QPointF magnifierTopLeft = scenePos - QPointF(pixCnt / 2., pixCnt / 2.); - QPointF magnifierPos = scenePos + QPointF(5, 5); - - magnifier->setPos(magnifierPos); - magnifier->setPixmap(_pixmap.copy(magnifierTopLeft.x(), magnifierTopLeft.y(), pixCnt, pixCnt).scaled(110, 110)); - QPointF bottomRight = magnifierHintBox->sceneBoundingRect().bottomRight(); - if (magnifier->sceneBoundingRect().bottom() > bottomRight.y()) - bottomRight.setY(magnifier->sceneBoundingRect().bottom()); - - if (magnifier->sceneBoundingRect().right() > bottomRight.x()) - bottomRight.setX(magnifier->sceneBoundingRect().right()); - - if (bottomRight.x() > sceneRect().right()) - magnifierPos -= QPointF(qMax(130., magnifierHintBox->boundingRect().width()), 0); - if (bottomRight.y() > sceneRect().bottom()) - magnifierPos -= QPointF(0, 130 + magnifierHintBox->boundingRect().height()); - magnifier->setPos(magnifierPos); -} - -void CropScene::initMagnifierGrid() { - QColor c(Qt::cyan); - c.setAlphaF(.25); - int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt(); - if (pixCnt % 2 == 0) pixCnt++; - for (int i = 0; i < pixCnt; i++) { - auto gridRectX = addRect(0, i * 110. / pixCnt, 110, 110. / pixCnt, QPen(Qt::black, 0.5)); - auto gridRectY = addRect(i * 110. / pixCnt, 0, 110. / pixCnt, 110, QPen(Qt::black, 0.5)); - gridRectX->setParentItem(magnifierBox); - gridRectY->setParentItem(magnifierBox); - gridRectX->setZValue(1); - gridRectY->setZValue(1); - gridRectsX.append(gridRectX); - gridRectsY.append(gridRectY); - if (i == (pixCnt / 2)) { - gridRectX->setBrush(c); - gridRectY->setBrush(c); - } - } -} - -void CropScene::done(bool notEsc) { - if (notEsc && rect) { - rect->setPen(QPen(Qt::NoPen)); - magnifier->setVisible(false); - magnifierBox->setVisible(false); - magnifierHint->setVisible(false); - magnifierHintBox->setVisible(false); - emit closedWithRect(rect->rect().toRect()); - } else - emit closedWithRect(QRect()); -} diff --git a/cropeditor/cropscene.hpp b/cropeditor/cropscene.hpp deleted file mode 100644 index 0f93daa..0000000 --- a/cropeditor/cropscene.hpp +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef CROPSCENE_HPP -#define CROPSCENE_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -class CropScene; - -#include - -class CropScene : public QGraphicsScene { - Q_OBJECT -public: - CropScene(QObject *parent, QPixmap pixmap); - ~CropScene(); - QPen &pen(); - QBrush &brush(); - QFont &font(); - void setDrawingSelection(QString name, std::function drawAction); - QPixmap pixmap() { - return _pixmap; - } - QGraphicsPolygonItem *polyItm() { - return polyItem; - } - QGraphicsRectItem *selRect() { - return rect; - } - void hide(); - void show(); - void setVisible(bool visible); - -public slots: - void fontAsk(); - -signals: - void closedWithRect(QRect rect); - -protected: - void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override; - void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override; - void mousePressEvent(QGraphicsSceneMouseEvent *e) override; - void wheelEvent(QGraphicsSceneWheelEvent *event) override; // WHEEEEEEL - void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override; - - void keyReleaseEvent(QKeyEvent *e) override; - -private: - void updateMag(QPointF scenePos); - void initMagnifierGrid(); - void addDrawingAction(QMenu &menu, QString name, std::function item); - void done(bool notEsc); - bool fullscreen; - std::function drawingSelectionMaker; - QFlags prevButtons; - QPixmap _pixmap; - QGraphicsRectItem *rect = nullptr; - QGraphicsPixmapItem *magnifier = nullptr; - QGraphicsRectItem *magnifierBox = nullptr; - QGraphicsTextItem *magnifierHint = nullptr; - QGraphicsRectItem *magnifierHintBox = nullptr; - QPointF initPos; - QPen _pen; - QBrush _brush; - QFont _font; - QGraphicsPolygonItem *polyItem = nullptr; - DrawItem *drawingSelection = nullptr; - QMenu menu; - QString drawingName = "None"; - QAction *display; - QList gridRectsX; - QList gridRectsY; -}; - -#endif // CROPSCENE_HPP diff --git a/cropeditor/cropview.hpp b/cropeditor/cropview.hpp deleted file mode 100644 index fab9983..0000000 --- a/cropeditor/cropview.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef CROPVIEW_HPP -#define CROPVIEW_HPP - -#include -#include - -class CropView : public QGraphicsView { -public: - CropView(QGraphicsScene *scene); -}; - -#endif // CROPVIEW_HPP diff --git a/cropeditor/drawing/dotitem.cpp b/cropeditor/drawing/dotitem.cpp deleted file mode 100644 index e6af596..0000000 --- a/cropeditor/drawing/dotitem.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "dotitem.hpp" - -DotItem::DotItem() { -} - -DotItem::~DotItem() { -} - -void DotItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { - scene->addEllipse(e->pos().x() - 1.5, e->pos().y() - 1.5, 3, 3, scene->pen(), scene->brush())->setPos(e->scenePos()); -} - -void DotItem::mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) { -} diff --git a/cropeditor/drawing/dotitem.hpp b/cropeditor/drawing/dotitem.hpp deleted file mode 100644 index 232f284..0000000 --- a/cropeditor/drawing/dotitem.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef DOTITEM_HPP -#define DOTITEM_HPP - -#include "../cropscene.hpp" -#include "drawitem.hpp" - -class DotItem : public DrawItem { -public: - DotItem(); - ~DotItem(); - QString name() { - return "Dots (drag to add)"; - } - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene); - void mouseDragEndEvent(QGraphicsSceneMouseEvent *e, CropScene *scene); -}; - -#endif // DOTITEM_HPP diff --git a/cropeditor/drawing/ellipseitem.cpp b/cropeditor/drawing/ellipseitem.cpp deleted file mode 100644 index ff1cfce..0000000 --- a/cropeditor/drawing/ellipseitem.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "ellipseitem.hpp" - -void EllipseItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { - if (!ellie) { - ellie = scene->addEllipse(e->scenePos().x(), e->scenePos().y(), 0, 0, scene->pen(), scene->brush()); - initPos = e->scenePos(); - } else { - auto p = e->scenePos(); - ellie->setRect(QRectF(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()), - qAbs(initPos.y() - p.y()))); - } -} diff --git a/cropeditor/drawing/eraseritem.cpp b/cropeditor/drawing/eraseritem.cpp deleted file mode 100644 index 0d3a53c..0000000 --- a/cropeditor/drawing/eraseritem.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "eraseritem.hpp" - -EraserItem::EraserItem() { -} - -EraserItem::~EraserItem() { -} - -void EraserItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { - for (auto i : scene->items()) { - if (i->contains(e->scenePos()) && i->zValue() != -1 && i != scene->polyItm() && i != scene->selRect()) { - scene->removeItem(i); - break; - } - } -} diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 0000000..d35b615 --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gem "github-pages", group: :jekyll_plugins diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock new file mode 100644 index 0000000..9c69262 --- /dev/null +++ b/docs/Gemfile.lock @@ -0,0 +1,216 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.8) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.1) + public_suffix (~> 2.0, >= 2.0.2) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + colorator (1.1.0) + ethon (0.10.1) + ffi (>= 1.3.0) + execjs (2.7.0) + faraday (0.13.0) + multipart-post (>= 1.2, < 3) + ffi (1.9.18) + forwardable-extended (2.6.0) + gemoji (3.0.0) + github-pages (155) + activesupport (= 4.2.8) + github-pages-health-check (= 1.3.5) + jekyll (= 3.5.2) + jekyll-avatar (= 0.4.2) + jekyll-coffeescript (= 1.0.1) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.9.2) + jekyll-gist (= 1.4.1) + jekyll-github-metadata (= 2.8.0) + jekyll-mentions (= 1.2.0) + jekyll-optional-front-matter (= 0.2.0) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.1.0) + jekyll-redirect-from (= 0.12.1) + jekyll-relative-links (= 0.4.1) + jekyll-sass-converter (= 1.5.0) + jekyll-seo-tag (= 2.2.3) + jekyll-sitemap (= 1.0.0) + jekyll-swiss (= 0.4.0) + jekyll-theme-architect (= 0.1.0) + jekyll-theme-cayman (= 0.1.0) + jekyll-theme-dinky (= 0.1.0) + jekyll-theme-hacker (= 0.1.0) + jekyll-theme-leap-day (= 0.1.0) + jekyll-theme-merlot (= 0.1.0) + jekyll-theme-midnight (= 0.1.0) + jekyll-theme-minimal (= 0.1.0) + jekyll-theme-modernist (= 0.1.0) + jekyll-theme-primer (= 0.5.0) + jekyll-theme-slate (= 0.1.0) + jekyll-theme-tactile (= 0.1.0) + jekyll-theme-time-machine (= 0.1.0) + jekyll-titles-from-headings (= 0.4.0) + jemoji (= 0.8.0) + kramdown (= 1.13.2) + liquid (= 4.0.0) + listen (= 3.0.6) + mercenary (~> 0.3) + minima (= 2.1.1) + rouge (= 1.11.1) + terminal-table (~> 1.4) + github-pages-health-check (1.3.5) + addressable (~> 2.3) + net-dns (~> 0.8) + octokit (~> 4.0) + public_suffix (~> 2.0) + typhoeus (~> 0.7) + html-pipeline (2.7.0) + activesupport (>= 2) + nokogiri (>= 1.4) + i18n (0.8.6) + jekyll (3.5.2) + addressable (~> 2.4) + colorator (~> 1.0) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 1.1) + kramdown (~> 1.3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (~> 1.7) + safe_yaml (~> 1.0) + jekyll-avatar (0.4.2) + jekyll (~> 3.0) + jekyll-coffeescript (1.0.1) + coffee-script (~> 2.2) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.9.2) + jekyll (~> 3.3) + jekyll-gist (1.4.1) + octokit (~> 4.2) + jekyll-github-metadata (2.8.0) + jekyll (~> 3.1) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.2.0) + activesupport (~> 4.0) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-optional-front-matter (0.2.0) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.1.0) + jekyll (~> 3.0) + jekyll-redirect-from (0.12.1) + jekyll (~> 3.3) + jekyll-relative-links (0.4.1) + jekyll (~> 3.3) + jekyll-sass-converter (1.5.0) + sass (~> 3.4) + jekyll-seo-tag (2.2.3) + jekyll (~> 3.3) + jekyll-sitemap (1.0.0) + jekyll (~> 3.3) + jekyll-swiss (0.4.0) + jekyll-theme-architect (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.2) + jekyll-theme-slate (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.0) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.4.0) + jekyll (~> 3.3) + jekyll-watch (1.5.0) + listen (~> 3.0, < 3.1) + jemoji (0.8.0) + activesupport (~> 4.0) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0) + kramdown (1.13.2) + liquid (4.0.0) + listen (3.0.6) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9.7) + mercenary (0.3.6) + mini_portile2 (2.2.0) + minima (2.1.1) + jekyll (~> 3.3) + minitest (5.10.3) + multipart-post (2.0.0) + net-dns (0.8.0) + nokogiri (1.8.0) + mini_portile2 (~> 2.2.0) + octokit (4.7.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.14.0) + forwardable-extended (~> 2.6) + public_suffix (2.0.5) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (1.11.1) + safe_yaml (1.0.4) + sass (3.5.1) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (0.8.0) + ethon (>= 0.8.0) + tzinfo (1.2.3) + thread_safe (~> 0.1) + unicode-display_width (1.3.0) + +PLATFORMS + ruby + +DEPENDENCIES + github-pages + +BUNDLED WITH + 1.15.3 diff --git a/docs/_config.yml b/docs/_config.yml index fff4ab9..c5bddac 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1 +1,2 @@ theme: jekyll-theme-minimal +categories: [wiki] diff --git a/docs/_layouts/layout.html b/docs/_layouts/layout.html new file mode 100644 index 0000000..87645da --- /dev/null +++ b/docs/_layouts/layout.html @@ -0,0 +1,66 @@ + + + + + + +{% seo %} + + + + + + +
+
+

{{ site.title | default: site.github.repository_name }}

+

{{ site.description | default: site.github.project_tagline }}

+

Click here to visit the wiki

+ + {% if site.github.is_project_page %} +

View the Project on GitHub {{ github_name }}

+ {% endif %} + + {% if site.github.is_user_page %} +

View My GitHub Profile

+ {% endif %} + + {% if site.show_downloads %} + + {% endif %} +
+
+ + {{ content }} + +
+
+

Copyright (c) ArsenArsen 2017

+ {% if site.github.is_project_page %} +

This project is maintained by {{ site.github.owner_name }}

+ {% endif %} +

Hosted on GitHub Pages — Theme by orderedlist

+
+
+ + + + {% if site.google_analytics %} + + {% endif %} + + diff --git a/docs/_layouts/wikipage.html b/docs/_layouts/wikipage.html new file mode 100644 index 0000000..6a5e042 --- /dev/null +++ b/docs/_layouts/wikipage.html @@ -0,0 +1,75 @@ + + + + + + + {% seo %} + + + + + + +
+
+

{{ site.title | default: site.github.repository_name }}

+

{{ site.description | default: site.github.project_tagline }}

+

Click here to go back to the homepage

+ + {% for page in site.pages %} + {% if page.categories contains 'wiki' %} + {{ page.title }}
+ {% endif %} + {% endfor %} + + +
+
+ {% if site.github.is_project_page %} +

View the Project on GitHub {{ github_name }}

+ {% endif %} + + {% if site.github.is_user_page %} +

View My GitHub Profile

+ {% endif %} + + {% if site.show_downloads %} + + {% endif %} +
+
+ + {{ content }} + +
+
+

Copyright (c) ArsenArsen 2017

+ {% if site.github.is_project_page %} +

This project is maintained by {{ site.github.owner_name }}

+ {% endif %} +

Hosted on GitHub Pages — Theme by orderedlist

+
+
+ + + + {% if site.google_analytics %} + + {% endif %} + + diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss new file mode 100644 index 0000000..55a2807 --- /dev/null +++ b/docs/assets/css/style.scss @@ -0,0 +1,13 @@ +--- +--- + +@import "{{ site.theme }}"; + +/* stupid css killed the cat */ +header ul { + background: none; + border-radius: 0px; + border: 0px solid #e0e0e0; + + +} diff --git a/docs/README.md b/docs/index.md similarity index 61% rename from docs/README.md rename to docs/index.md index 2980699..c6c60f6 100644 --- a/docs/README.md +++ b/docs/index.md @@ -1,6 +1,10 @@ +--- +layout: layout +--- + + # **KShare** ## The free open source and cross platform screen sharing software -###### Inspired by [ShareX](https://getsharex.com) KShare is a screenshotting utility built using Qt and written in C++. It has many features, including: @@ -14,31 +18,36 @@ It has many features, including: * Automatic upload/clipboard copying, * Hotkeys, * Color picker, and last but not least, -* Custom upload destinations +* Custom upload destinations, +* Upload from clipboard, +* Upload History, +* Crossplatform, +* Windows 10 Darkmode ## Enough talking, show us how it looks -The main window is rather simple, with only a log, and a button in it: -![image1](http://i.imgur.com/QOebwEM.png) +The main window is rather simple, with only a log, and a button in it: +![image1](https://i.imgur.com/Tnrj90b.png) -The settings have quite a bit more going on: -![image2](http://i.imgur.com/kZzQzGr.png) +The settings have quite a bit more going on: +![image2](https://i.imgur.com/GFN2jCU.png) -The area selection editor is simple: -![image3](http://i.imgur.com/kyWZk3p.jpg) +The area selection editor is simple: +![image3](https://i.imgur.com/Cbi8YsL.png) -And the color picker is the simplest thing ever: +And the color picker is the simplest thing ever: ![image4](http://i.imgur.com/VIeGbdQ.jpg) -The way you select the area to record is by resizing this simple widget: +The way you select the area to record is by resizing this simple widget: ![image5](http://i.imgur.com/0iXFHnm.png) -And when you start recording there is a simple preview shown: +And when you start recording there is a simple preview shown: ![image6](http://i.imgur.com/6fu33TR.png) ## Download Currently, the only good download I provide is for Arch Linux and Ubuntu 17.04 The Arch download is on the AUR as `kshare` and `kshare-git`, -and the Ubuntu build is a .deb found on my CI: [kshare.deb](https://nativeci.arsenarsen.com/job/KShare/73/artifact/packages/simpleName.deb) +The OS X and Debian/Ubuntu builds can be found here: [CI](https://nativeci.arsenarsen.com/job/KShare%20(master\)) +There is a windows build on [AppVeyor]() ## Wait.. how do I actually use this? diff --git a/docs/wiki/Basic-usage.md b/docs/wiki/Basic-usage.md new file mode 100644 index 0000000..165cc17 --- /dev/null +++ b/docs/wiki/Basic-usage.md @@ -0,0 +1,42 @@ +--- +title: Basic Usage +categories: [wiki] +layout: wikipage +--- +# Basic usage +When you start the app (with no arguments, discussed later) a window is popped up, and a tray icon is made. + +## The window +![](http://i.imgur.com/QOebwEM.png) + +The main window is a log window with a settings button. + +The menu bar has a `File` menu. It has two options, `Quit`, which exits ~~no need to press it :^)~~, and `About`, which contains licensing information: +![](http://i.imgur.com/4fVJb1w.png) + +There is a second menu, namely `Screenshot`. It has two options, area, and fullscreen capture. See below. + +The third, `Utility`, menu has the color picker in it. + +The fourth and final menu, `Recording`, has a start and stop recording button. + +## The tray +![](http://i.imgur.com/quVDzRN.png) + +The tray consists of a small, but nice, icon made by @BriannaFoxwell. Upon right clicking it you get the context menu shown above. The menu is rather simple, containing basic controls, and screenshotting options. +These options will be explained below. + +## Screenshotting options +### Area capture +Area capture takes a snapshot of the screen, and shows you a fullscreen editor for you to select a region in. This editor is explained in a section below. + +### Fullscreen capture +Fullscreen capture takes a snapshot of the entire screen and skips the editor part. Straight to the destination (explained later as well). + +### Active window capture +Takes the active window and uploads it straight to your destination of choice + +## Crop Editor +Crop Editor is a window you can use to select the area of the screen to upload. It consists of a grey overlay and a re-sizable rectangle. The rectangle is resized by holding the mouse buttons. When you let go of the button, a new selection will start replacing the old one. On the first press the same thing happens. +Press `Escape` to cancel, and `Return`, or `Enter` to submit. +Oh. And you can draw with the bar that appears on the top. diff --git a/docs/wiki/Destinations.md b/docs/wiki/Destinations.md new file mode 100644 index 0000000..b0da1ff --- /dev/null +++ b/docs/wiki/Destinations.md @@ -0,0 +1,45 @@ +--- +title: Destinations +categories: [wiki] +layout: wikipage +--- +# Destinations +Destinations determine where your image goes + +There is a set of default uploaders, two, to be exact. +## Default uploaders: +### imgur +Uploads your image to imgur. +### clipboard +Copies your image to clipboard. + +## Custom uploaders +Placed into `CONFIG PATH/KShare/uploaders` +Eg: `$HOME/.config/KShare/uploaders` +All uploaders have to be `.uploader` files! +Custom uploaders can be added, and are made with JSON, and follow this template: +```js +{ + "name": "", // String, required + "desc": "", // String, optional + "method": "", // String, default: "POST", for now, just POST. Request more if you need them + "target": "", // URL, required + "format": "", // String, default: "json", can be `x-www-form-urlencoded` or `json` or `multipart-form-data`. Setting to `PLAIN` will make the body ignored and only the image sent. + "base64": false, // Optional, makes the data base64 + "body": {}, // A JSON object, where one of the nodes can be a string in the format `/ANYTHING/`. In `ANYTHING`, `%contenttype` is replaced with the image type and `%imagedata` is replaced with the image encoded with `imageformat`. Unless you use multipart, see below + "return": "" // Return pathspec. `|` copies the entire body, `.path.to.node` copies the value of the node. The dot IS IMPORTANT. Without it, nothing happens. If one of the nodes is not a string, the string is copied, if one is an object, recursion continues, if one is null, nothing is copied, otherwise the node is JSON stringified. Only supports JSON for now. +} +``` +Note that QJson does not support comments. +### Multipart +Multipart is obviously made out of multiple parts. The way you define a multipart body is: +```js +[ + { + "__HeaderName": "HeaderValue", // No limit here. Must start with __, which is removed later. + "body": { /* same way you define it for anything json */ }, // Can be string. Strings matching `/.../` are processed same way as in a json field. + "name": "files[]" // Info to add to Content-Disposition (eg part name, filename, ...) + } +] +``` +This would go in the `body` field of the above JSON. diff --git a/docs/wiki/Encoder-settings.md b/docs/wiki/Encoder-settings.md new file mode 100644 index 0000000..9cb32db --- /dev/null +++ b/docs/wiki/Encoder-settings.md @@ -0,0 +1,29 @@ +--- +title: Encoder Settings +categories: [wiki] +layout: wikipage +--- +# Encoder settings +The encoders used can be customized to a high degree. Every encoder besides GIF has some settings. +![](http://i.imgur.com/O8nfeos.png) + +## Image encoder settings +The only option here is quality, by default it uses the default for the format you use. You can change it by unticking format default. [More info](http://doc.qt.io/qt-5/qpixmap.html#save) + +## Video encoder settings +The common settings are bitrate and GOP size. + +GOP Size is the size of a group of pictures. +Bitrate is the target bitrate. + +### h264/h265 +The H.26[45] MP4 codec has a few presets to choose. The recommended is to choose the slowest one you can cope with. +I recommend medium. + +CRF is the constant rate factor of this video stream, and again I recommend leaving the default value, `23`. + +### VP9 +VP9 is the WebP codec. Only option it has is lossless encoding, and you want it off, trust me. + +### GIF +GIF has no options. It's terrible whatever you do to it. diff --git a/docs/wiki/Hotkeys.md b/docs/wiki/Hotkeys.md new file mode 100644 index 0000000..4dddc94 --- /dev/null +++ b/docs/wiki/Hotkeys.md @@ -0,0 +1,23 @@ +--- +title: Hotkeys +categories: [wiki] +layout: wikipage +--- +# Hotkeys +Hotkeys are configured in the settings UI. +![](http://i.imgur.com/esYoMWo.png) +Currently available hotkeys are: +## Fullscreen image +This bind lets you take a fullscreen image and upload it instantly. +## Area image +Equivalent to `Take area shot` and `Screenshot -> Area`. Takes a snapshot and opens the crop editor. +## Active window +Equivalent to `Active window` and `Screenshot -> Active window`. Takes a snapshot of the active window and sends it. +## Color picker +Opens the color picker +## Recording start/stop +Starts and stops recording + +## Editing hotkeys +All binds can be modified using by double clicking the hotkey name. +You can either type the hotkey in or press record and press the key combination you want on your keyboard diff --git a/docs/wiki/Settings.md b/docs/wiki/Settings.md new file mode 100644 index 0000000..db7d683 --- /dev/null +++ b/docs/wiki/Settings.md @@ -0,0 +1,23 @@ +--- +title: Settings +categories: [wiki] +layout: wikipage +--- +# Settings +## Destination +![](http://i.imgur.com/540REFK.png) +Select the active destination. Adding more is possible and explained it Custom Uploaders +**Default:** `imgur` +## Filename scheme +![](http://i.imgur.com/RHHEO3K.png) +Used to generate filenames. Extensions are placed in place of `%ext`. `%(DATE FORMAT)date` can be used to replace the date format with a format as specified by [this documentation page](http://doc.qt.io/qt-5/qdatetime.html#toString) +**Default:** `Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext` +## Delay before taking a screenshot +![](http://i.imgur.com/j0D7OqI.png) +Applies only to the buttons in menus. Hotkeys do not follow this rule. In seconds. Mostly used to let animations fade. +Min: `0.00` +Max: `99.99` +**Default:** `0.25` + +## Hotkeys +**Explained on a separate page.** diff --git a/docs/wiki/Tools.md b/docs/wiki/Tools.md new file mode 100644 index 0000000..b8b1ac3 --- /dev/null +++ b/docs/wiki/Tools.md @@ -0,0 +1,34 @@ +--- +title: Tools +categories: [wiki] +layout: wikipage +--- +# Drawing +![](http://i.imgur.com/5nWhpqw.png) +On-screen drawing is pretty simple. Right click in the crop editor to show a pen selection tool. When you click on a pen it will stay selected until you press `Reset`. + +You can move drawings around by Ctrl+Dragging them + +## Available pens: +### Free draw (pen icon) +Makes a path where your mouse went. +### Blur (badly made blurred rectangle icon) +Allows you to set a rectangle to blur out. +### Straight line +A line between where you start and end dragging +### Text +Asks you to insert some text. +**WARNING:** Avoid pressing esc +### Rectangle +Drag to draw a rectangle +### Ellipse +Drag to draw an ellipse +### Arrow +Draws an arrow from start to end of your drag +### Eraser[](https://www.youtube.com/watch?v=OjGrcJ4lZCc) +Removes all items you drag your mouse over + +### Clear all drawings +Removes all drawings +### Reset +Allows you to choose a region to cut for the final result. diff --git a/docs/wiki/index.md b/docs/wiki/index.md new file mode 100644 index 0000000..384d708 --- /dev/null +++ b/docs/wiki/index.md @@ -0,0 +1,11 @@ +--- +title: Index +categories: [wiki] +layout: wikipage +--- + +# Welcome to the KShare wiki! +The cross platform screenshotting utility + +# Usage +See the [`Basic usage`](/wiki/Basic-Usage.html) page diff --git a/examples/php_filehost.uploader b/examples/php_filehost.uploader new file mode 100644 index 0000000..a461d90 --- /dev/null +++ b/examples/php_filehost.uploader @@ -0,0 +1,15 @@ +{ + "name": "Gurkengewuerz Share", + "target": "https://share.example.com/index.php?token=XXXXXXXXXXXXXXXXX", + "format": "multipart-form-data", + "body": [ + { + "__Content-Type": "/%contenttype/", + "filename": "/%filename/", + "name": "file", + "body": "/%imagedata/" + } + ], + "return": "|" +} + diff --git a/examples/pictshare.uploader b/examples/pictshare.uploader new file mode 100644 index 0000000..85fdb07 --- /dev/null +++ b/examples/pictshare.uploader @@ -0,0 +1,11 @@ +{ + "name": "PictShare", + "desc" : "Example", + "target": ".../backend.php", + "base64": true, + "format": "x-www-form-urlencoded", + "body": { + "base64": "/data:%contenttype;base64,%imagedata/" + }, + "return": ".url" +} diff --git a/examples/pomf.uploader b/examples/pomf.uploader new file mode 100644 index 0000000..5a46025 --- /dev/null +++ b/examples/pomf.uploader @@ -0,0 +1,15 @@ +{ + "name": "Uploader name", + "target": "POMF endpoint", + "format": "multipart-form-data", + "body": [ + { + "__Content-Type": "/%contenttype/", + "filename": "/image.%format/", + "name": "files[]", + "body": "/%imagedata/" + } + ], + "return": ".files.0.url", + "return_prepend": "Add only if the host does not fill out url" +} diff --git a/formats.hpp b/formats.hpp deleted file mode 100644 index 8d46706..0000000 --- a/formats.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef FORMATS_HPP -#define FORMATS_HPP - -#include - -namespace formats { -enum class Normal { PNG, JPG, None }; -QString normalFormatName(Normal format); -Normal normalFormatFromName(QString format); -QString normalFormatMIME(Normal format); - -enum class Recording { GIF, WebM, MP4, None }; -QString recordingFormatName(Recording format); -Recording recordingFormatFromName(QString format); -QString recordingFormatMIME(Recording format); -} -#endif // FORMATS_HPP diff --git a/formatter.cpp b/formatter.cpp deleted file mode 100644 index 9f53a16..0000000 --- a/formatter.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "formatter.hpp" - -#include -#include - -QString formatter::format(QString toFormat, QString ext) { - QRegExp dateRegex("%\\((.+)\\)date"); - dateRegex.indexIn(toFormat); - QStringList capturedTexts(dateRegex.capturedTexts()); - QString formatted(toFormat); - QDateTime date = QDateTime::currentDateTime(); - for (int i = 0; i < capturedTexts.length(); i += 2) { - formatted = formatted.replace(capturedTexts.at(i), date.toString(capturedTexts.at(i + 1))); - } - formatted = formatted.replace(QRegExp("%(?!%)ext"), ext); - return formatted; -} diff --git a/hotkeying.hpp b/hotkeying.hpp deleted file mode 100644 index 696a680..0000000 --- a/hotkeying.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef HOTKEYING_HPP -#define HOTKEYING_HPP - -#include -#include -#include - -namespace hotkeying { -void hotkey(QString seqName, QKeySequence seq, std::function func); -bool valid(QString seq); -void load(QString seqName, std::function func, QString def = QString()); -QString sequence(QString seqName); -} - -#endif // HOTKEYING_HPP diff --git a/icon.qrc b/icon.qrc deleted file mode 100644 index 1e85526..0000000 --- a/icon.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - icons/icon.png - icons/icon.svg - - diff --git a/icons/icon.png b/icons/icon.png deleted file mode 100644 index cc3b7fb..0000000 Binary files a/icons/icon.png and /dev/null differ diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..ff25c32 --- /dev/null +++ b/install.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +uname=$(uname) +function installIfNeeded { + brew ls --versions $1 > /dev/null + if [[ ! $? = 0 ]]; then brew install $1 + else brew upgrade $1; fi +} + +resultfile="" + +if [[ "$uname" = "Darwin" ]]; then +export PATH="/usr/local/opt/qt/bin:$PATH" +command -v brew >/dev/null || { echo "Homebrew is required!"; exit } +installIfNeeded qt +installIfNeeded ffmpeg +installIfNeeded pkg-config +installIfNeeded git +brew link --force qt +resultfile="$(pwd)/KShare/build/KShare.app/" +elif [[ "$uname" = "Linux" ]]; then +echo "Please install Qt5 GUI, Widgets, Networking, and X11 Extras, qmake, ffmpeg development files, git, and pkgconfig" +sh +resultfile="$(pwd)/KShare/build/src/KShare" +else echo "Unsupported OS!" && exit 1; fi + +git clone --recursive https://github.com/Gurkengewuerz/KShare.git || exit 2 +cd KShare +mkdir build || exit 3 +cd build +qmake-qt5 .. || qmake .. || exit 4 +make || exit 5 +echo "------------------------------------------------------" +echo "Resulting file is $resultfile" +if [[ "$uname" = "Linux" ]]; then echo "To link the file into path, run sudo ln -s $resultfile /usr/bin/kshare"; fi +cd .. +echo "To update, go to $(pwd), git pull, cd build, and \`make\`" +echo "------------------------------------------------------" diff --git a/io/ioutils.hpp b/io/ioutils.hpp deleted file mode 100644 index d4e50c7..0000000 --- a/io/ioutils.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef IOUTILS_HPP -#define IOUTILS_HPP - -#include -#include -#include -#include -#include - -namespace ioutils { -extern QNetworkAccessManager networkManager; -void getJson(QUrl target, QList> headers, std::function callback); -void postJson(QUrl target, - QList> headers, - QByteArray body, - std::function callback); -void getData(QUrl target, QList> headers, std::function callback); -void postData(QUrl target, QList> headers, QByteArray body, std::function callback); -void postMultipart(QUrl target, - QList> headers, - QHttpMultiPart *body, - std::function callback); -void postMultipartData(QUrl target, - QList> headers, - QHttpMultiPart *body, - std::function callback); -} - -#endif // IOUTILS_HPP diff --git a/main.cpp b/main.cpp deleted file mode 100644 index 6a98de1..0000000 --- a/main.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include "mainwindow.hpp" -#include "screenshotutil.hpp" -#include "ui_mainwindow.h" -#include -#include -#include -#include -#include -#include -#include -extern "C" { -#include -#include -} -#include -#include -#include -#include - -bool verbose = false; - -// I've experiments to run -// There is research to be done -// On the people who are -// still alive -bool stillAlive = true; - -#define LOGACT(lvl) \ - std::cout << lvl << stdMsg << "\n"; \ - if (stillAlive && MainWindow::inst() && MainWindow::inst()->valid()) { \ - MainWindow::inst()->ui->logBox->addItem(lvl + msg); \ - } - -void handler(QtMsgType type, const QMessageLogContext &, const QString &msg) { - std::string stdMsg = msg.toStdString(); - switch (type) { - case QtDebugMsg: - if (verbose) { - LOGACT("DEBUG: ") - } - break; - case QtInfoMsg: - LOGACT("INFO: ") - if (stillAlive) notifications::notifyNolog("KShare", msg); - break; - case QtWarningMsg: - LOGACT("WARN: ") - if (stillAlive) notifications::notifyNolog("KShare Warning", msg, QSystemTrayIcon::Warning); - break; - case QtCriticalMsg: - LOGACT("CRIT: ") - if (stillAlive) notifications::notifyNolog("KShare Critical Error", msg, QSystemTrayIcon::Critical); - break; - case QtFatalMsg: - LOGACT("FATAL: ") - if (stillAlive) notifications::notifyNolog("KShare Fatal Error", msg, QSystemTrayIcon::Critical); - break; - } -} - -int main(int argc, char *argv[]) { - av_register_all(); - qInstallMessageHandler(handler); - QApplication a(argc, argv); - a.setQuitOnLastWindowClosed(false); - a.setApplicationName("KShare"); - a.setOrganizationName("ArsenArsen"); - a.setApplicationVersion("4.1"); - - QCommandLineParser parser; - parser.addHelpOption(); - - QCommandLineOption h({ "b", "background" }, "Does not show the main window, starts in tray."); - QCommandLineOption v({ "v", "verbose" }, "Enables QtDebugMsg outputs"); - QCommandLineOption ver({ "ver", "version" }, "Prints KShare version"); - parser.addOption(h); - parser.addOption(v); - parser.addOption(ver); - parser.process(a); - - if (parser.isSet(ver)) { - printf("%s %s\n", a.applicationName().toLocal8Bit().constData(), a.applicationVersion().toLocal8Bit().constData()); - return 0; - } - - verbose = parser.isSet(v); - MainWindow w; - Worker::init(); - a.connect(&a, &QApplication::aboutToQuit, Worker::end); - a.connect(&a, &QApplication::aboutToQuit, [] { stillAlive = false; }); - - if (!parser.isSet(h)) w.show(); - return a.exec(); -} diff --git a/mainwindow.cpp b/mainwindow.cpp deleted file mode 100644 index 9d9e0eb..0000000 --- a/mainwindow.cpp +++ /dev/null @@ -1,165 +0,0 @@ -#include "mainwindow.hpp" -#include "aboutbox.hpp" -#include "screenshotter.hpp" -#include "screenshotutil.hpp" -#include "settingsdialog.hpp" -#include "ui_mainwindow.h" -#include -#include -#include -#include -#include -#include -#include -#include - -MainWindow *MainWindow::instance; - -void MainWindow::rec() { - if (controller->isRunning()) return; - auto f - = static_cast(settings::settings().value("recording/format", (int)formats::Recording::None).toInt()); - if (f >= formats::Recording::None) return; - RecordingContext *ctx = new RecordingContext; - RecordingFormats *format = new RecordingFormats(f); - ctx->consumer = format->getConsumer(); - ctx->finalizer = format->getFinalizer(); - ctx->validator = format->getValidator(); - ctx->format = format->getFormat(); - ctx->postUploadTask = format->getPostUploadTask(); - ctx->anotherFormat = format->getAnotherFormat(); - controller->start(ctx); -} - -void addHotkey(QString name, std::function action) { - hotkeying::load(name, action); -} - -MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { - instance = this; - ui->setupUi(this); - setWindowIcon(QIcon(":/icons/icon.svg")); - tray = new QSystemTrayIcon(windowIcon(), this); - tray->setToolTip("KShare"); - tray->setVisible(true); - QMenu *menu = new QMenu(this); - QAction *quit = new QAction("Quit", this); - QAction *shtoggle = new QAction("Show/Hide", this); - QAction *fullscreen = new QAction("Take fullscreen shot", this); - QAction *area = new QAction("Take area shot", this); - -#ifdef PLATFORM_CAPABILITY_ACTIVEWINDOW - QAction *active = new QAction("Screenshot active window", this); - connect(active, &QAction::triggered, this, [] { screenshotter::activeDelayed(); }); -#endif - QAction *picker = new QAction("Show color picker", this); - QAction *rec = new QAction("Record screen", this); - QAction *recoff = new QAction("Stop recording", this); - menu->addActions({ quit, shtoggle, picker }); - menu->addSeparator(); - menu->addActions({ fullscreen, area, active }); -#ifdef PLATFORM_CAPABILITY_ACTIVEWINDOW - menu->addAction(area); -#endif - menu->addSeparator(); - menu->addActions({ rec, recoff }); - connect(quit, &QAction::triggered, this, &MainWindow::quit); - connect(shtoggle, &QAction::triggered, this, &MainWindow::toggleVisible); - connect(picker, &QAction::triggered, [] { ColorPickerScene::showPicker(); }); - connect(tray, &QSystemTrayIcon::messageClicked, this, &MainWindow::toggleVisible); - connect(tray, &QSystemTrayIcon::activated, this, [this](QSystemTrayIcon::ActivationReason reason) { - if (reason == QSystemTrayIcon::DoubleClick) toggleVisible(); - }); - connect(fullscreen, &QAction::triggered, this, [] { screenshotter::fullscreenDelayed(); }); - connect(area, &QAction::triggered, this, [] { screenshotter::areaDelayed(); }); - connect(rec, &QAction::triggered, this, &MainWindow::rec); - connect(recoff, &QAction::triggered, [this] { controller->end(); }); - connect(ui->settings, &QPushButton::clicked, this, &MainWindow::on_actionSettings_triggered); - - tray->setContextMenu(menu); - - addHotkey("fullscreen", [] { screenshotter::fullscreen(); }); - addHotkey("area", [] { screenshotter::area(); }); - addHotkey("active", [] { screenshotter::active(); }); - addHotkey("picker", [] { ColorPickerScene::showPicker(); }); - addHotkey("recordingstop", [&] { controller->end(); }); - addHotkey("recordingstart", [&] { this->rec(); }); - - auto errors = UploaderSingleton::inst().errors(); - for (auto err : errors) ui->logBox->addItem(QString("ERROR: ") + err.what()); - setWindowTitle("KShare v" + QApplication::applicationVersion()); - val = true; -} - -MainWindow::~MainWindow() { - delete ui; -} - -bool MainWindow::valid() { - return val; -} - -MainWindow *MainWindow::inst() { - return instance; -} - -void MainWindow::closeEvent(QCloseEvent *event) { - if (settings::settings().value("hideOnClose", true).toBool()) { - event->ignore(); - hide(); - } else - QApplication::exit(0); -} - -void MainWindow::quit() { - QCoreApplication::quit(); -} - -void MainWindow::toggleVisible() { - this->setVisible(!this->isVisible()); - if (this->isVisible()) { - this->raise(); // that didn't work - this->setWindowState(Qt::WindowActive); // maybe that works - this->activateWindow(); // maybe that works - } -} - -void MainWindow::on_actionQuit_triggered() { - quit(); -} - -void MainWindow::on_actionFullscreen_triggered() { - screenshotter::fullscreenDelayed(); -} - -void MainWindow::on_actionArea_triggered() { - screenshotter::areaDelayed(); -} - -void MainWindow::on_actionStart_triggered() { - rec(); -} - -void MainWindow::on_actionStop_triggered() { - controller->end(); -} - -void MainWindow::on_actionColor_Picker_triggered() { - ColorPickerScene::showPicker(); -} - -void MainWindow::on_actionSettings_triggered() { - SettingsDialog *dialog = new SettingsDialog(this); - dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->show(); -} - -void MainWindow::on_actionAbout_triggered() { - AboutBox *box = new AboutBox(this); - box->setAttribute(Qt::WA_DeleteOnClose); - box->show(); -} - -void MainWindow::on_actionActive_window_triggered() { - screenshotter::activeDelayed(); -} diff --git a/mainwindow.ui b/mainwindow.ui deleted file mode 100644 index 699f6df..0000000 --- a/mainwindow.ui +++ /dev/null @@ -1,143 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 352 - 220 - - - - KShare - - - - :/icons/icon.jpg:/icons/icon.jpg - - - - - 0 - 0 - - - - - - - Settings - - - - - - - Log - - - - - - - - - - - - - - 0 - 0 - 352 - 25 - - - - - Fi&le - - - - - - - - - Scree&nshot - - - - - - - - &Utilities - - - - - - &Recording - - - - - - - - - - - - - &Quit - - - - - &Fullscreen - - - - - &Area - - - - - &Color Picker - - - - - Start - - - - - Stop - - - - - Settings - - - - - About - - - - - Active window - - - - - - - diff --git a/notifications.cpp b/notifications.cpp deleted file mode 100644 index ce8aa0a..0000000 --- a/notifications.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "notifications.hpp" - -#include "mainwindow.hpp" -#include "ui_mainwindow.h" -#include - -void notifications::notify(QString title, QString body, QSystemTrayIcon::MessageIcon icon) { - if (!MainWindow::inst() || !MainWindow::inst()->valid()) return; - notifyNolog(title, body, icon); - MainWindow::inst()->ui->logBox->addItem(title + ": " + body); -} - -void notifications::notifyNolog(QString title, QString body, QSystemTrayIcon::MessageIcon icon) { - if (!MainWindow::inst()) return; - MainWindow::inst()->tray->showMessage(title, body, icon, 5000); - MainWindow::inst()->statusBar()->showMessage(title + ": " + body); -} diff --git a/notifications.hpp b/notifications.hpp deleted file mode 100644 index 137d31a..0000000 --- a/notifications.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NOTIFICATIONS_HPP -#define NOTIFICATIONS_HPP - -#include -#include - -namespace notifications { -void notify(QString title, QString body, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information); -void notifyNolog(QString title, QString body, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information); -} - -#endif // NOTIFICATIONS_HPP diff --git a/packages/arch/KShare/PKGBUILD b/packages/arch/KShare/PKGBUILD new file mode 100644 index 0000000..5837045 --- /dev/null +++ b/packages/arch/KShare/PKGBUILD @@ -0,0 +1,40 @@ +# Maintainer: Gurkengewuerz +pkgname=kshare-git +pkgver=v4.1.r196.gc38161b +pkgrel=1 +pkgdesc="The free and open source and cross platform screen sharing software." +arch=('i686' 'x86_64') +url="https://github.com/Gurkengewuerz/KShare" +license=('MIT') +provides=(kshare) +conflicts=(kshare) +depends=(qt5-base qt5-x11extras qt5-svg xcb-util-cursor ffmpeg libxfixes) +makedepends=(git pkg-config) +source=(git+https://github.com/Gurkengewuerz/KShare.git#branch=dev) +sha1sums=('SKIP') + +pkgver() { + cd KShare + echo "v4.1.r196.gc38161b" +} + +prepare() { + cd KShare + git submodule update --init --recursive +} + +build() { + cd KShare + qmake + make +} + +package() { + cd KShare + install -Dm755 src/kshare "$pkgdir/usr/bin/kshare" + install -Dm644 src/icons/icon.png "$pkgdir/usr/share/pixmaps/KShare.png" + install -Dm644 KShare.desktop "$pkgdir/usr/share/applications/KShare.desktop" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/${pkgname}/LICENSE" +} + diff --git a/packages/arch/Stable-KShare/PKGBUILD b/packages/arch/Stable-KShare/PKGBUILD new file mode 100644 index 0000000..518da34 --- /dev/null +++ b/packages/arch/Stable-KShare/PKGBUILD @@ -0,0 +1,35 @@ +# Maintainer: Gurkengewuerz +pkgname=kshare +pkgver=v5.0.0 +pkgrel=1 +conflicts=("kshare-git") +pkgdesc="The free and open source and cross platform screen sharing software." +arch=('i686' 'x86_64') +url="https://github.com/Gurkengewuerz/KShare" +license=('MIT') +provides=('kshare=$pkgver') +depends=(qt5-base qt5-x11extras qt5-svg xcb-util-cursor ffmpeg libxfixes) +makedepends=(git pkg-config) +source=(git+https://github.com/Gurkengewuerz/KShare.git) +sha1sums=('SKIP') + +prepare() { + cd KShare + git submodule update --init --recursive +} + +build() { + cd KShare + qmake + make +} + +package() { + cd KShare + install -Dm755 src/kshare "$pkgdir/usr/bin/kshare" + install -Dm644 src/icons/icon.png "$pkgdir/usr/share/pixmaps/KShare.png" + install -Dm644 KShare.desktop "$pkgdir/usr/share/applications/KShare.desktop" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/${pkgname}/LICENSE" +} + diff --git a/packages/deb/DEBIAN/control b/packages/deb/DEBIAN/control index db85e9b..bd230e7 100644 --- a/packages/deb/DEBIAN/control +++ b/packages/deb/DEBIAN/control @@ -4,6 +4,6 @@ Architecture: all Essential: no Section: contrib Priority: optional -Depends: qt5-default (>=5.7.0), libqt5x11extras5 (>=5.7.0), libavcodec57 (>=3.2.0), libavformat57 (>=3.2.0), libswscale4 (>=3.2.0), libavutil55 (>=3.2.0), libxcb-cursor0 (>=0.1.0), libxcb1 (>=1.11.0), libxcb-xfixes0 (>=1.11.0) +Depends: libqt5gui5 (>=5.7.0), libqt5svg5 (>=5.7.0), libqt5x11extras5 (>=5.7.0), libqt5multimedia5 (>=5.7.0), libqt5multimedia5-plugins (>=5.7.0), libavcodec57 (>=3.2.0), libavformat57 (>=3.2.0), libswscale4 (>=3.2.0), libavutil55 (>=3.2.0), libxcb-cursor0 (>=0.1.0), libxcb1 (>=1.11.0), libxcb-xfixes0 (>=1.11.0), libxcb-util0 (>=0.3.8)|libxcb-util1 (>=0.3.8), libxcb-xfixes0 (>=1.11.0) Maintainer: ArsenArsen Description: The free open source and cross platform screen sharing software diff --git a/packages/deb/usr/share/applications/KShare.desktop b/packages/deb/usr/share/applications/KShare.desktop new file mode 100755 index 0000000..2a9774b --- /dev/null +++ b/packages/deb/usr/share/applications/KShare.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Name=KShare +Comment=A ShareX inspired cross platform screen capture utility written with Qt. +GenericName=Screenshot Capture Utility +Exec=/usr/bin/kshare +Icon=/usr/share/pixmaps/KShare.png +Type=Application +StartupNotify=false +Categories=Qt;Utility; +StartupWMClass=KSharee +Actions=StartInBackground + +[Desktop Action StartInBackground] +Name=Start without showing the window +Exec=kshare -b diff --git a/packages/deb/usr/share/pixmaps/KShare.png b/packages/deb/usr/share/pixmaps/KShare.png new file mode 100644 index 0000000..8667c3f Binary files /dev/null and b/packages/deb/usr/share/pixmaps/KShare.png differ diff --git a/packages/macos/Info.plist b/packages/macos/Info.plist new file mode 100644 index 0000000..c23fa53 --- /dev/null +++ b/packages/macos/Info.plist @@ -0,0 +1,20 @@ + + + + + NSPrincipalClass + NSApplication + CFBundleIconFile + icon.icns + CFBundlePackageType + APPL + CFBundleGetInfoString + Created by Qt/QMake + CFBundleSignature + ???? + CFBundleExecutable + KShare + CFBundleIdentifier + com.arsenarsen.KShare + + diff --git a/packages/makedeb.sh b/packages/makedeb.sh index 11c96e7..d47ff1f 100755 --- a/packages/makedeb.sh +++ b/packages/makedeb.sh @@ -1,26 +1,36 @@ #!/usr/bin/env bash +VERSION=$(grep setApplicationVersion ../src/main.cpp | head -n1 | cut -d \" -f2) +echo "Make Debian package for v$VERSION" >&2 + +cp deb work -r +sed "s/%ver/$VERSION/g" deb/DEBIAN/control > work/DEBIAN/control +mkdir -p work/usr/bin + if [[ "$1" == "" ]] then - echo "Provide a version with arg1" >&2 - exit 1 -fi -[[ ! -d work ]] && cp deb work -r -sed "s/%ver/$1/g" deb/DEBIAN/control > work/DEBIAN/control -mkdir -p work/usr/bin -mkdir compiling -cd compiling -qmake ../../KShare.pro -if make -then -cd .. -cp compiling/KShare work/usr/bin/kshare + echo "Fresh Compile Binary" >&2 + mkdir compiling + cd compiling + qmake ../../KShare.pro + if make + then + cd .. + cp compiling/src/kshare work/usr/bin/kshare + else + rm -rf compiling + echo "Failed to make!" + exit 2 + fi else - rm -rf compiling - echo "Failed to make!" - exit 2 + echo "Using pre-compiled binary (please only use in circleci)" >&2 + pwd + + cp ../build/src/kshare work/usr/bin/kshare fi + cd work -md5sum usr/bin/kshare > DEBIAN/md5sums +md5sum usr/bin/kshare usr/share/applications/KShare.desktop > DEBIAN/md5sums cd .. dpkg-deb -b work/ +mv work.deb kshare_v${VERSION}.deb rm -rf work diff --git a/packages/windows/LICENSE.txt b/packages/windows/LICENSE.txt new file mode 100644 index 0000000..2c68ee9 --- /dev/null +++ b/packages/windows/LICENSE.txt @@ -0,0 +1,255 @@ +Copyright (c) 2017 ArsenArsen + +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. + +This software uses and possibly bundles Qt, OpenSSL, FFMpeg, and QHotkey, whose licenses are respectively: + +------------------------------ Qt: +GNU LESSER GENERAL PUBLIC LICENSE + + +The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd. +Contact: http://www.qt.io/licensing/ + + +You may use, distribute and copy the Qt Toolkit under the terms of +GNU Lesser General Public License version 3, which is displayed below. +This license makes reference to the version 3 of the GNU General +Public License, which you can find in the LICENSE.GPLv3 file. + + +------------------------------ OpenSSL: +LICENSE ISSUES +============== + + +The OpenSSL toolkit stays under a double license, i.e. both the conditions of +the OpenSSL License and the original SSLeay license apply to the toolkit. +See below for the actual license texts. + + +OpenSSL License +--------------- + + +/* ==================================================================== +* Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* +* 2. 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. +* +* 3. All advertising materials mentioning features or use of this +* software must display the following acknowledgment: +* "This product includes software developed by the OpenSSL Project +* for use in the OpenSSL Toolkit. (http://www.openssl.org/)" +* +* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to +* endorse or promote products derived from this software without +* prior written permission. For written permission, please contact +* openssl-core@openssl.org. +* +* 5. Products derived from this software may not be called "OpenSSL" +* nor may "OpenSSL" appear in their names without prior written +* permission of the OpenSSL Project. +* +* 6. Redistributions of any form whatsoever must retain the following +* acknowledgment: +* "This product includes software developed by the OpenSSL Project +* for use in the OpenSSL Toolkit (http://www.openssl.org/)" +* +* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY +* EXPRESSED 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 OpenSSL PROJECT OR +* ITS 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. +* ==================================================================== +* +* This product includes cryptographic software written by Eric Young +* (eay@cryptsoft.com). This product includes software written by Tim +* Hudson (tjh@cryptsoft.com). +* +*/ + + +Original SSLeay License +----------------------- + + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +* All rights reserved. +* +* This package is an SSL implementation written +* by Eric Young (eay@cryptsoft.com). +* The implementation was written so as to conform with Netscapes SSL. +* +* This library is free for commercial and non-commercial use as long as +* the following conditions are aheared to. The following conditions +* apply to all code found in this distribution, be it the RC4, RSA, +* lhash, DES, etc., code; not just the SSL code. The SSL documentation +* included with this distribution is covered by the same copyright terms +* except that the holder is Tim Hudson (tjh@cryptsoft.com). +* +* Copyright remains Eric Young's, and as such any Copyright notices in +* the code are not to be removed. +* If this package is used in a product, Eric Young should be given attribution +* as the author of the parts of the library used. +* This can be in the form of a textual message at program startup or +* in documentation (online or textual) provided with the package. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the copyright +* notice, this list of conditions and the following disclaimer. +* 2. 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. +* 3. All advertising materials mentioning features or use of this software +* must display the following acknowledgement: +* "This product includes cryptographic software written by +* Eric Young (eay@cryptsoft.com)" +* The word 'cryptographic' can be left out if the rouines from the library +* being used are not cryptographic related :-). +* 4. If you include any Windows specific code (or a derivative thereof) from +* the apps directory (application code) you must include an acknowledgement: +* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" +* +* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. +* +* The licence and distribution terms for any publically available version or +* derivative of this code cannot be changed. i.e. this code cannot simply be +* copied and put under another distribution licence +* [including the GNU Public Licence.] +*/ + + +------------------------------ FFMpeg: +License +Most files in FFmpeg are under the GNU Lesser General Public License version 2.1 or later (LGPL v2.1+). Read the file COPYING.LGPLv2.1 for details. Some other files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to FFmpeg. +Some optional parts of FFmpeg are licensed under the GNU General Public License version 2 or later (GPL v2+). See the file COPYING.GPLv2 for details. None of these parts are used by default, you have to explicitly pass --enable-gpl to configure to activate them. In this case, FFmpeg's license changes to GPL v2+. +Specifically, the GPL parts of FFmpeg are: +libpostproc +optional x86 optimization in the files +libavcodec/x86/flac_dsp_gpl.asm +libavcodec/x86/idct_mmx.c +libavfilter/x86/vf_removegrain.asm +the following building and testing tools +compat/solaris/make_sunver.pl +doc/t2h.pm +doc/texi2pod.pl +libswresample/swresample-test.c +tests/checkasm/* +tests/tiny_ssim.c +the following filters in libavfilter: +vf_blackframe.c +vf_boxblur.c +vf_colormatrix.c +vf_cover_rect.c +vf_cropdetect.c +vf_delogo.c +vf_eq.c +vf_find_rect.c +vf_fspp.c +vf_geq.c +vf_histeq.c +vf_hqdn3d.c +vf_interlace.c +vf_kerndeint.c +vf_mcdeint.c +vf_mpdecimate.c +vf_owdenoise.c +vf_perspective.c +vf_phase.c +vf_pp.c +vf_pp7.c +vf_pullup.c +vf_repeatfields.c +vf_sab.c +vf_smartblur.c +vf_spp.c +vf_stereo3d.c +vf_super2xsai.c +vf_tinterlace.c +vf_uspp.c +vsrc_mptestsrc.c +Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then the configure parameter --enable-version3 will activate this licensing option for you. Read the file COPYING.LGPLv3 or, if you have enabled GPL parts, COPYING.GPLv3 to learn the exact legal terms that apply in this case. +There are a handful of files under other licensing terms, namely: +The files libavcodec/jfdctfst.c, libavcodec/jfdctint_template.c and libavcodec/jrevdct.c are taken from libjpeg, see the top of the files for licensing details. Specifically note that you must credit the IJG in the documentation accompanying your program if you only distribute executables. You must also indicate any changes including additions and deletions to those three files in the documentation. +tests/reference.pnm is under the expat license. +External libraries +FFmpeg can be combined with a number of external libraries, which sometimes affect the licensing of binaries resulting from the combination. +Compatible libraries +The following libraries are under GPL: +frei0r +libcdio +librubberband +libvidstab +libx264 +libx265 +libxavs +libxvid +When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by passing --enable-gpl to configure. +The OpenCORE and VisualOn libraries are under the Apache License 2.0. That license is incompatible with the LGPL v2.1 and the GPL v2, but not with version 3 of those licenses. So to combine these libraries with FFmpeg, the license version needs to be upgraded by passing --enable-version3 to configure. +Incompatible libraries +There are certain libraries you can combine with FFmpeg whose licenses are not compatible with the GPL and/or the LGPL. If you wish to enable these libraries, even in circumstances that their license may be incompatible, pass --enable-nonfree to configure. But note that if you enable any of these libraries the resulting binary will be under a complex license mix that is more restrictive than the LGPL and that may result in additional obligations. It is possible that these restrictions cause the resulting binary to be unredistributable. +The Fraunhofer FDK AAC and OpenSSL libraries are under licenses which are incompatible with the GPLv2 and v3. To the best of our knowledge, they are compatible with the LGPL. +The NVENC library, while its header file is licensed under the compatible MIT license, requires a proprietary binary blob at run time, and is deemed to be incompatible with the GPL. We are not certain if it is compatible with the LGPL, but we require --enable-nonfree even with LGPL configurations in case it is not. + +------------------------------ QHotkey: +Copyright (c) 2016, Felix Barz +All rights reserved. + +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 QHotkey 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 HOLDER 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. diff --git a/packages/windows/installer.iss.pattern.bottom b/packages/windows/installer.iss.pattern.bottom new file mode 100644 index 0000000..cedf697 --- /dev/null +++ b/packages/windows/installer.iss.pattern.bottom @@ -0,0 +1,11 @@ +;Source: "FILE"; DestDir: "{app}"; Flags: ignoreversion +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" +Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent + diff --git a/packages/windows/installer.iss.pattern.top b/packages/windows/installer.iss.pattern.top new file mode 100644 index 0000000..6887350 --- /dev/null +++ b/packages/windows/installer.iss.pattern.top @@ -0,0 +1,37 @@ +; Script generated by the Inno Script Studio Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName "KShare" +#define MyAppVersion ";VER;" +#define MyAppPublisher "ArsenArsen" +#define MyAppURL "http://kshare.arsenarsen.com/" +#define MyAppExeName "KShare.exe" + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. +; Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{4D052A58-8982-4FB0-A542-22D1E3936AA9} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={pf}\{#MyAppName} +DefaultGroupName={#MyAppName} +LicenseFile=LICENSE.txt +OutputBaseFilename=setup +Compression=lzma +SolidCompression=yes + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "KShare.exe"; DestDir: "{app}"; Flags: ignoreversion + diff --git a/platformspecifics/mac/macbackend.cpp b/platformspecifics/mac/macbackend.cpp deleted file mode 100644 index c750eb9..0000000 --- a/platformspecifics/mac/macbackend.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "macbackend.hpp" - -QPixmap PlatformBackend::getCursor() { -#warning "TODO: Mac backend" - return std::tuple(QPoint(0, 0), QPixmap()); - // Not Monday: https://developer.apple.com/reference/appkit/nscursor/1527062-image - // Some on how to do NSImage -> QPixmap: http://stackoverflow.com/a/2468961/3809164 - // This is gonna be easier than with Windows -} - -pid_t PlatformBackend::pid() { - return getpid(); -} diff --git a/recording/encoders/encoder.cpp.orig b/recording/encoders/encoder.cpp.orig deleted file mode 100644 index 481ba40..0000000 --- a/recording/encoders/encoder.cpp.orig +++ /dev/null @@ -1,171 +0,0 @@ -#include "encoder.hpp" - -#include -extern "C" { -#include -#include -} - -inline void throwAVErr(int ret, std::string section) { - char err[AV_ERROR_MAX_STRING_SIZE]; - av_make_error_string(err, AV_ERROR_MAX_STRING_SIZE, ret); - std::string newString(err); - throw std::runtime_error("Error during: " + section + ": " + newString); -} - -#define OR_DEF(s, e1, e2) s ? s->e1 : e2 - -Encoder::Encoder(QString &targetFile, QSize res, CodecSettings *settings) { - int ret; - // Format - ret = avformat_alloc_output_context2(&fc, NULL, NULL, targetFile.toLocal8Bit().constData()); - if (ret < 0) throwAVErr(ret, "format alloc"); - - // Stream - out->st = avformat_new_stream(fc, NULL); - if (!out->st) throw std::runtime_error("Unable to allocate video context"); - out->st->id = fc->nb_streams - 1; - if (fc->oformat->flags & AVFMT_GLOBALHEADER) fc->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; - av_dump_format(fc, 0, targetFile.toLocal8Bit().constData(), 1); - - // Codec - if (!fc->oformat->video_codec) throw std::runtime_error("Video codec not found"); - codec = avcodec_find_encoder(fc->oformat->video_codec); - if (!codec) throw std::runtime_error("Video codec not found"); - out->enc = avcodec_alloc_context3(codec); - if (!out->enc) throw std::runtime_error("Unable to allocate video context"); - - int fps = settings::settings().value("recording/framerate", 30).toInt(); - - out->enc->codec_id = codec->id; - out->enc->codec = codec; - - out->enc->bit_rate = OR_DEF(settings, bitrate, 400000); - out->enc->width = res.width() % 2 ? res.width() - 1 : res.width(); - out->enc->height = res.height() % 2 ? res.height() - 1 : res.height(); - size = QSize(out->enc->width, out->enc->height); - out->st->time_base = { 1, fps }; - out->enc->time_base = out->st->time_base; - - out->enc->gop_size = OR_DEF(settings, gopSize, 12); - out->enc->pix_fmt = AV_PIX_FMT_YUV420P; // blaze it - AVDictionary *dict = NULL; - if (out->enc->codec_id == AV_CODEC_ID_GIF) - out->enc->pix_fmt = AV_PIX_FMT_RGB8; - else if (out->enc->codec_id == AV_CODEC_ID_H264 || out->enc->codec_id == AV_CODEC_ID_H265) { - av_dict_set(&dict, "preset", settings ? settings->h264Profile.toLocal8Bit().constData() : "medium", 0); - av_dict_set_int(&dict, "crf", OR_DEF(settings, h264Crf, 12), 0); - } else if (out->enc->codec_id == AV_CODEC_ID_VP8 || out->enc->codec_id == AV_CODEC_ID_VP9) - av_dict_set_int(&dict, "lossless", OR_DEF(settings, vp9Lossless, false), 0); - - - ret = avcodec_open2(out->enc, codec, &dict); - av_dict_free(&dict); - if (ret < 0) throwAVErr(ret, "codec open"); - if (codec->capabilities & AV_CODEC_CAP_DR1) avcodec_align_dimensions(out->enc, &out->enc->width, &out->enc->height); - - ret = avcodec_parameters_from_context(out->st->codecpar, out->enc); - if (ret < 0) throwAVErr(ret, "stream opt copy"); - - // Frames - out->frame = av_frame_alloc(); - if (!out->frame) { - throw std::runtime_error("frame alloc"); - } - out->frame->format = out->enc->pix_fmt; - out->frame->width = out->enc->width; - out->frame->height = out->enc->height; - ret = av_frame_get_buffer(out->frame, 32); - if (ret < 0) throwAVErr(ret, "frame buffer alloc"); - - // Writer - ret = avio_open(&fc->pb, targetFile.toLocal8Bit().constData(), AVIO_FLAG_WRITE); - if (ret < 0) throwAVErr(ret, "writer open"); - ret = avformat_write_header(fc, NULL); - if (ret < 0) throwAVErr(ret, "write header"); - - success = true; -} - -void Encoder::setFrameRGB(QImage img) { - uint8_t *rgb = (uint8_t *)img.bits(); - int ret = av_frame_make_writable(out->frame); - if (ret < 0) throwAVErr(ret, "setFrameRGB"); - int lineSize[1] = { img.bytesPerLine() }; - out->sws = sws_getCachedContext(out->sws, out->enc->width, out->enc->height, AV_PIX_FMT_RGB24, out->enc->width, - out->enc->height, (AVPixelFormat)out->frame->format, 0, 0, 0, 0); - sws_scale(out->sws, (const uint8_t *const *)&rgb, lineSize, 0, out->enc->height, out->frame->data, out->frame->linesize); - out->frame->pts = out->nextPts++; -} - -Encoder::~Encoder() { - end(); -} - -bool Encoder::addFrame(QImage frm) { - if (!success) return false; - if (frm.size() != size) frm = frm.copy(QRect(QPoint(0, 0), size)); - if (frm.format() != QImage::Format_RGB888) frm = frm.convertToFormat(QImage::Format_RGB888); - setFrameRGB(frm); - AVPacket pkt; - pkt.size = 0; - pkt.data = NULL; - av_init_packet(&pkt); - int ret = avcodec_send_frame(out->enc, out->frame); - if (ret == AVERROR(EAGAIN)) { - do { - ret = avcodec_receive_packet(out->enc, &pkt); - if (ret < 0) { - if (ret != AVERROR(EAGAIN)) - throwAVErr(ret, "receive packet"); - else - break; - } - av_packet_rescale_ts(&pkt, out->enc->time_base, out->st->time_base); - pkt.stream_index = out->st->index; - ret = av_interleaved_write_frame(fc, &pkt); - } while (ret >= 0); - if (ret < 0 && ret != AVERROR(EAGAIN)) { - av_packet_unref(&pkt); - throwAVErr(ret, "send frame"); - } - } - av_packet_unref(&pkt); - if (ret < 0 && ret != AVERROR(EAGAIN)) throwAVErr(ret, "send frame"); - return true; -} - -bool Encoder::isRunning() { - return success; -} - -bool Encoder::end() { - if (ended) return false; - ended = true; - if (!success) { - goto cleanup; - } - avcodec_send_frame(out->enc, NULL); - int ret; - AVPacket pkt; - pkt.size = 0; - pkt.data = NULL; - av_init_packet(&pkt); - do { - ret = avcodec_receive_packet(out->enc, &pkt); - if (ret < 0) break; - av_packet_rescale_ts(&pkt, out->enc->time_base, out->st->time_base); - pkt.stream_index = out->st->index; - av_interleaved_write_frame(fc, &pkt); - } while (ret >= 0); - av_write_trailer(fc); -cleanup: - avcodec_free_context(&out->enc); - av_frame_free(&out->frame); - sws_freeContext(out->sws); - delete out; - if (!(fc->oformat->flags & AVFMT_NOFILE)) // - avio_closep(&fc->pb); - avformat_free_context(fc); - return success; -} diff --git a/screenshotter.cpp b/screenshotter.cpp deleted file mode 100644 index 18e5655..0000000 --- a/screenshotter.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "screenshotter.hpp" -#include "cropeditor/cropeditor.hpp" -#include "mainwindow.hpp" -#include "screenshotutil.hpp" -#include "uploaders/uploadersingleton.hpp" -#include -#include -#include -#include - -void screenshotter::area() { - CropEditor *editor = new CropEditor(screenshotutil::fullscreen(settings::settings().value("captureCursor", true).toBool())); - QObject::connect(editor, &CropEditor::cropped, [&](QPixmap pixmap) { UploaderSingleton::inst().upload(pixmap); }); -} - -void screenshotter::fullscreen() { - UploaderSingleton::inst().upload(screenshotutil::fullscreen(settings::settings().value("captureCursor", true).toBool())); -} - -void screenshotter::areaDelayed() { - QTimer::singleShot(settings::settings().value("delay", 0.5).toFloat() * 1000, &screenshotter::area); -} - -void screenshotter::fullscreenDelayed() { - QTimer::singleShot(settings::settings().value("delay", 0.5).toFloat() * 1000, &screenshotter::fullscreen); -} - -void screenshotter::activeDelayed() { - QTimer::singleShot(settings::settings().value("delay", 0.5).toFloat() * 1000, &screenshotter::active); -} - -void screenshotter::active() { -#ifdef PLATFORM_CAPABILITY_ACTIVEWINDOW - UploaderSingleton::inst().upload(screenshotutil::window(PlatformBackend::inst().getActiveWID())); -#endif -} diff --git a/screenshotter.hpp b/screenshotter.hpp deleted file mode 100644 index 4c6be91..0000000 --- a/screenshotter.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SCREENSHOTTER_HPP -#define SCREENSHOTTER_HPP - -namespace screenshotter { -void fullscreen(); -void fullscreenDelayed(); - -void area(); -void areaDelayed(); - -void activeDelayed(); -void active(); -} - -#endif // SCREENSHOTTER_HPP diff --git a/screenshotutil.cpp b/screenshotutil.cpp deleted file mode 100644 index d0ec325..0000000 --- a/screenshotutil.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "screenshotutil.hpp" - -#include -#include -#include -#include -#include -#include -#include - -QPixmap screenshotutil::fullscreen(bool cursor) { - QPixmap image; - QPainter painter; - - // Hack for https://bugreports.qt.io/browse/QTBUG-58110 - static QStringList qVer = QString(qVersion()).split('.'); -#ifdef Q_OS_LINUX - if (qVer.at(0).toInt() == 5 && qVer.at(1).toInt() < 9) { - image = window(0); - painter.begin(&image); - } else { -#endif - int height = 0, width = 0; - for (QScreen *screen : QApplication::screens()) { - QRect geo = screen->geometry(); - width = qMax(geo.left() + geo.width(), width); - height = qMax(geo.top() + geo.height(), height); - } - image = QPixmap(width, height); - image.fill(Qt::transparent); - width = 0; - painter.begin(&image); - - for (QScreen *screen : QApplication::screens()) { - QPixmap currentScreen = window(0, screen); - painter.drawPixmap(screen->geometry().topLeft(), currentScreen); - width += screen->size().width(); - } -#ifdef Q_OS_LINUX - } -#endif - -#ifdef PLATFORM_CAPABILITY_CURSOR - if (cursor) { - auto cursorData = PlatformBackend::inst().getCursor(); - painter.drawPixmap(QCursor::pos() - std::get<0>(cursorData), std::get<1>(cursorData)); - } -#endif - painter.end(); - return image; -} - -QPixmap screenshotutil::window(WId wid, QScreen *w) { - return w->grabWindow(wid); -} - -void screenshotutil::toClipboard(QString value) { - QApplication::clipboard()->setText(value); -} - -QPixmap screenshotutil::fullscreenArea(bool cursor, qreal x, qreal y, qreal w, qreal h) { - return fullscreen(cursor).copy(x, y, w, h); -} diff --git a/screenshotutil.hpp b/screenshotutil.hpp deleted file mode 100644 index 02808ea..0000000 --- a/screenshotutil.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SCREENSHOTUTIL_HPP -#define SCREENSHOTUTIL_HPP - -#include -#include - -namespace screenshotutil { -QPixmap fullscreen(bool cursor = true); -QPixmap fullscreenArea(bool cursor = true, qreal x = 0, qreal y = 0, qreal w = -1, qreal h = -1); -QPixmap window(WId wid, QScreen *w = QApplication::primaryScreen()); -void toClipboard(QString value); -} - -#endif // SCREENSHOTUTIL_HPP diff --git a/settings.cpp b/settings.cpp deleted file mode 100644 index 4ab49d6..0000000 --- a/settings.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "settings.hpp" - -#include -#include - -QMutex *lock = new QMutex; - -QSettings &settings::settings() { - QMutexLocker l(lock); - static QDir configDir(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation)); - if (configDir.dirName() != "KShare") { - configDir.mkdir("KShare"); - configDir.cd("KShare"); - } - static QSettings settings(configDir.absoluteFilePath("settings.ini"), QSettings::IniFormat); - return settings; -} diff --git a/aboutbox.cpp b/src/aboutbox.cpp similarity index 100% rename from aboutbox.cpp rename to src/aboutbox.cpp diff --git a/aboutbox.hpp b/src/aboutbox.hpp similarity index 92% rename from aboutbox.hpp rename to src/aboutbox.hpp index d0d9df1..878a9c6 100644 --- a/aboutbox.hpp +++ b/src/aboutbox.hpp @@ -4,7 +4,7 @@ #include namespace Ui { -class AboutBox; + class AboutBox; } class AboutBox : public QDialog { diff --git a/src/aboutbox.ui b/src/aboutbox.ui new file mode 100644 index 0000000..c350b7e --- /dev/null +++ b/src/aboutbox.ui @@ -0,0 +1,328 @@ + + + AboutBox + + + + 0 + 0 + 670 + 470 + + + + About KShare + + + + + + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - The free and open source and cross platform screen sharing software</span></p><p>Version %0<br/>Links: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Source code</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Website</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + + + true + + + + + + + <!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:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This software uses and possibly bundles Qt, OpenSSL, FFMpeg, and QHotkey, whose licenses are respectively:</span></p> +<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Icons made by <a href="https://www.flaticon.com/authors/maxim-basinski"><span style=" text-decoration: underline; color:#0000ff;">Maxim Basinski</span></a> from <a href="https://www.flaticon.com/"><span style=" text-decoration: underline; color:#0000ff;">www.flaticon.com</span></a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/"><span style=" text-decoration: underline; color:#0000ff;">CC 3.0 BY</span></a></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">------------------------------ </span><a href="http://code.qt.io/cgit/qt/qt5.git/tree/LICENSE.LGPLv3"><span style=" font-family:'Noto Mono'; font-size:10pt; text-decoration: underline; color:#007af4;">Qt</span></a><span style=" font-family:'Noto Mono'; font-size:10pt;">:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">GNU LESSER GENERAL PUBLIC LICENSE</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">The Qt Toolkit is Copyright (C) 2015 The Qt Company Ltd.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">Contact: </span><a href="http://www.qt.io/licensing/"><span style=" font-family:'Noto Mono'; font-size:10pt; text-decoration: underline; color:#007af4;">http://www.qt.io/licensing/</span></a></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">You may use, distribute and copy the Qt Toolkit under the terms of</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">GNU Lesser General Public License version 3, which is displayed below.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">This license makes reference to the version 3 of the GNU General</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">Public License, which you can find in the </span><a href="http://code.qt.io/cgit/qt/qt5.git/tree/LICENSE.LGPLv3"><span style=" font-family:'Noto Mono'; font-size:10pt; text-decoration: underline; color:#007af4;">LICENSE.GPLv3</span></a><span style=" font-family:'Noto Mono'; font-size:10pt;"> file.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">------------------------------ </span><a href="https://www.openssl.org/source/license.html"><span style=" font-size:10pt; text-decoration: underline; color:#007af4;">OpenSSL</span></a><span style=" font-family:'Noto Mono'; font-size:10pt;">:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">LICENSE ISSUES</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">==============</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">The OpenSSL toolkit stays under a double license, i.e. both the conditions of</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">See below for the actual license texts.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">OpenSSL License</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">---------------</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">/* ====================================================================</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Redistribution and use in source and binary forms, with or without</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* modification, are permitted provided that the following conditions</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* are met:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 1. Redistributions of source code must retain the above copyright</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* notice, this list of conditions and the following disclaimer. </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 2. Redistributions in binary form must reproduce the above copyright</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* notice, this list of conditions and the following disclaimer in</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* the documentation and/or other materials provided with the</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* distribution.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 3. All advertising materials mentioning features or use of this</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* software must display the following acknowledgment:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* &quot;This product includes software developed by the OpenSSL Project</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* for use in the OpenSSL Toolkit. (http://www.openssl.org/)&quot;</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 4. The names &quot;OpenSSL Toolkit&quot; and &quot;OpenSSL Project&quot; must not be used to</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* endorse or promote products derived from this software without</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* prior written permission. For written permission, please contact</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* openssl-core@openssl.org.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 5. Products derived from this software may not be called &quot;OpenSSL&quot;</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* nor may &quot;OpenSSL&quot; appear in their names without prior written</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* permission of the OpenSSL Project.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 6. Redistributions of any form whatsoever must retain the following</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* acknowledgment:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* &quot;This product includes software developed by the OpenSSL Project</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* for use in the OpenSSL Toolkit (http://www.openssl.org/)&quot;</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* OF THE POSSIBILITY OF SUCH DAMAGE.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* ====================================================================</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* This product includes cryptographic software written by Eric Young</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* (eay@cryptsoft.com). This product includes software written by Tim</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Hudson (tjh@cryptsoft.com).</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*/</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">Original SSLeay License</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">-----------------------</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* All rights reserved.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* This package is an SSL implementation written</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* by Eric Young (eay@cryptsoft.com).</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* The implementation was written so as to conform with Netscapes SSL.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* This library is free for commercial and non-commercial use as long as</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* the following conditions are aheared to. The following conditions</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* apply to all code found in this distribution, be it the RC4, RSA,</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* lhash, DES, etc., code; not just the SSL code. The SSL documentation</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* included with this distribution is covered by the same copyright terms</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* except that the holder is Tim Hudson (tjh@cryptsoft.com).</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Copyright remains Eric Young's, and as such any Copyright notices in</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* the code are not to be removed.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* If this package is used in a product, Eric Young should be given attribution</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* as the author of the parts of the library used.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* This can be in the form of a textual message at program startup or</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* in documentation (online or textual) provided with the package.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Redistribution and use in source and binary forms, with or without</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* modification, are permitted provided that the following conditions</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* are met:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 1. Redistributions of source code must retain the copyright</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* notice, this list of conditions and the following disclaimer.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 2. Redistributions in binary form must reproduce the above copyright</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* notice, this list of conditions and the following disclaimer in the</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* documentation and/or other materials provided with the distribution.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 3. All advertising materials mentioning features or use of this software</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* must display the following acknowledgement:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* &quot;This product includes cryptographic software written by</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Eric Young (eay@cryptsoft.com)&quot;</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* The word 'cryptographic' can be left out if the rouines from the library</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* being used are not cryptographic related :-).</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* 4. If you include any Windows specific code (or a derivative thereof) from </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* the apps directory (application code) you must include an acknowledgement:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* &quot;This product includes software written by Tim Hudson (tjh@cryptsoft.com)&quot;</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* SUCH DAMAGE.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* The licence and distribution terms for any publically available version or</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* derivative of this code cannot be changed. i.e. this code cannot simply be</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* copied and put under another distribution licence</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* [including the GNU Public Licence.]</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">*/</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">------------------------------ </span><a href="https://github.com/FFmpeg/FFmpeg/blob/master/LICENSE.md"><span style=" font-size:10pt; text-decoration: underline; color:#007af4;">FFMpeg</span></a><span style=" font-size:10pt;">:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">License</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Most files in FFmpeg are under the GNU Lesser General Public License version 2.1 or later (LGPL v2.1+). Read the file </span><span style=" font-family:'Noto Mono'; font-size:10pt;">COPYING.LGPLv2.1</span><span style=" font-size:10pt;"> for details. Some other files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to FFmpeg.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some optional parts of FFmpeg are licensed under the GNU General Public License version 2 or later (GPL v2+). See the file </span><span style=" font-family:'Noto Mono'; font-size:10pt;">COPYING.GPLv2</span><span style=" font-size:10pt;"> for details. None of these parts are used by default, you have to explicitly pass </span><span style=" font-family:'Noto Mono'; font-size:10pt;">--enable-gpl</span><span style=" font-size:10pt;"> to configure to activate them. In this case, FFmpeg's license changes to GPL v2+.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Specifically, the GPL parts of FFmpeg are:</span></p> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-size:10pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libpostproc</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">optional x86 optimization in the files </li> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;"><li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libavcodec/x86/flac_dsp_gpl.asm</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libavcodec/x86/idct_mmx.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libavfilter/x86/vf_removegrain.asm</span></li></ul> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the following building and testing tools </li> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;"><li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">compat/solaris/make_sunver.pl</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">doc/t2h.pm</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">doc/texi2pod.pl</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">libswresample/swresample-test.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">tests/checkasm/*</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">tests/tiny_ssim.c</span></li></ul> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the following filters in libavfilter: </li></ul> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;"><li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_blackframe.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_boxblur.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_colormatrix.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_cover_rect.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_cropdetect.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_delogo.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_eq.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_find_rect.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_fspp.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_geq.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_histeq.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_hqdn3d.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_interlace.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_kerndeint.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_mcdeint.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_mpdecimate.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_owdenoise.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_perspective.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_phase.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_pp.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_pp7.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_pullup.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_repeatfields.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_sab.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_smartblur.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_spp.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_stereo3d.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_super2xsai.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_tinterlace.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vf_uspp.c</span></li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">vsrc_mptestsrc.c</span></li></ul> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then the configure parameter </span><span style=" font-family:'Noto Mono'; font-size:10pt;">--enable-version3</span><span style=" font-size:10pt;"> will activate this licensing option for you. Read the file </span><span style=" font-family:'Noto Mono'; font-size:10pt;">COPYING.LGPLv3</span><span style=" font-size:10pt;"> or, if you have enabled GPL parts, </span><span style=" font-family:'Noto Mono'; font-size:10pt;">COPYING.GPLv3</span><span style=" font-size:10pt;"> to learn the exact legal terms that apply in this case.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">There are a handful of files under other licensing terms, namely:</span></p> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-size:10pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The files <span style=" font-family:'Noto Mono';">libavcodec/jfdctfst.c</span>, <span style=" font-family:'Noto Mono';">libavcodec/jfdctint_template.c</span> and <span style=" font-family:'Noto Mono';">libavcodec/jrevdct.c</span> are taken from libjpeg, see the top of the files for licensing details. Specifically note that you must credit the IJG in the documentation accompanying your program if you only distribute executables. You must also indicate any changes including additions and deletions to those three files in the documentation.</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono';">tests/reference.pnm</span> is under the expat license.</li></ul> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="user-content-external-libraries"></a><span style=" font-size:10pt; font-weight:600;">E</span><span style=" font-size:10pt; font-weight:600;">xternal libraries</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">FFmpeg can be combined with a number of external libraries, which sometimes affect the licensing of binaries resulting from the combination.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="user-content-compatible-libraries"></a><span style=" font-size:10pt; font-weight:600;">C</span><span style=" font-size:10pt; font-weight:600;">ompatible libraries</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The following libraries are under GPL:</span></p> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-size:10pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">frei0r</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libcdio</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">librubberband</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libvidstab</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libx264</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libx265</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libxavs</li> +<li style=" font-size:10pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">libxvid</li></ul> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by passing </span><span style=" font-family:'Noto Mono'; font-size:10pt;">--enable-gpl</span><span style=" font-size:10pt;"> to configure.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenCORE and VisualOn libraries are under the Apache License 2.0. That license is incompatible with the LGPL v2.1 and the GPL v2, but not with version 3 of those licenses. So to combine these libraries with FFmpeg, the license version needs to be upgraded by passing </span><span style=" font-family:'Noto Mono'; font-size:10pt;">--enable-version3</span><span style=" font-size:10pt;"> to configure.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="user-content-incompatible-libraries"></a><span style=" font-size:10pt; font-weight:600;">I</span><span style=" font-size:10pt; font-weight:600;">ncompatible libraries</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">There are certain libraries you can combine with FFmpeg whose licenses are not compatible with the GPL and/or the LGPL. If you wish to enable these libraries, even in circumstances that their license may be incompatible, pass </span><span style=" font-family:'Noto Mono'; font-size:10pt;">--enable-nonfree</span><span style=" font-size:10pt;"> to configure. But note that if you enable any of these libraries the resulting binary will be under a complex license mix that is more restrictive than the LGPL and that may result in additional obligations. It is possible that these restrictions cause the resulting binary to be unredistributable.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The Fraunhofer FDK AAC and OpenSSL libraries are under licenses which are incompatible with the GPLv2 and v3. To the best of our knowledge, they are compatible with the LGPL.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The NVENC library, while its header file is licensed under the compatible MIT license, requires a proprietary binary blob at run time, and is deemed to be incompatible with the GPL. We are not certain if it is compatible with the LGPL, but we require </span><span style=" font-family:'Noto Mono'; font-size:10pt;">--enable-nonfree</span><span style=" font-size:10pt;"> even with LGPL configurations in case it is not.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">------------------------------ </span><a href="https://github.com/Skycoder42/QHotkey/"><span style=" font-size:10pt; text-decoration: underline; color:#007af4;">QHotkey</span></a><span style=" font-family:'Noto Mono'; font-size:10pt;">:</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">Copyright (c) 2016, Felix Barz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">All rights reserved.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono'; font-size:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">Redistribution and use in source and binary forms, with or without</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">modification, are permitted provided that the following conditions are met:</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono'; font-size:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Redistributions of source code must retain the above copyright notice, this</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;"> list of conditions and the following disclaimer.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono'; font-size:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Redistributions in binary form must reproduce the above copyright notice,</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;"> this list of conditions and the following disclaimer in the documentation</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;"> and/or other materials provided with the distribution.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono'; font-size:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">* Neither the name of QHotkey nor the names of its</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;"> contributors may be used to endorse or promote products derived from</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;"> this software without specific prior written permission.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Mono'; font-size:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></p> +<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Mono'; font-size:10pt;">OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></p></body></html> + + + true + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + AboutBox + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + AboutBox + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/clipboard/clipboardcopy.cpp b/src/clipboard/clipboardcopy.cpp new file mode 100644 index 0000000..372cb0a --- /dev/null +++ b/src/clipboard/clipboardcopy.cpp @@ -0,0 +1,62 @@ +#include "clipboardcopy.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void clipboardcopy::copyClipboard() { + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + + if(mimeData->hasImage()) { + QPixmap map = qvariant_cast(mimeData->imageData()); + UploaderSingleton::inst().upload(map, false); + } else if(mimeData->hasText()) { +#ifdef Q_OS_WIN + QUrl fileUrl(mimeData->text()); + QFileInfo fileInfo(fileUrl.toLocalFile()); +#else + QFileInfo fileInfo(mimeData->text()); +#endif + if(fileInfo.exists() && fileInfo.isReadable() && fileInfo.isFile()) { + QMimeDatabase db; + QMimeType mimeType = db.mimeTypeForFile(fileInfo); + QString type = mimeType.name(); + QFile file(fileInfo.absoluteFilePath()); + UploaderSingleton::inst().upload(file); + } else if (fileInfo.exists() && fileInfo.isReadable() && fileInfo.isDir()) { + notifications::notify("KShare - Directory is not uploadable", fileInfo.absolutePath(), QSystemTrayIcon::Warning); + notifications::playSound(notifications::Sound::ERROR); + } else { + QTemporaryFile tmpFile; + tmpFile.setAutoRemove(true); + if(tmpFile.open()) { + QTextStream stream(&tmpFile); + stream.setCodec("UTF-8"); + stream << mimeData->text(); + stream.flush(); + tmpFile.seek(0); + UploaderSingleton::inst().upload(tmpFile); + } else { + logger::warn("Can not open tmp file"); + notifications::playSound(notifications::Sound::ERROR); + } + } + } else { + notifications::notify("Unsupported File Format", "Can not upload clipboard", QSystemTrayIcon::Warning); + notifications::playSound(notifications::Sound::ERROR); + } +} diff --git a/src/clipboard/clipboardcopy.hpp b/src/clipboard/clipboardcopy.hpp new file mode 100644 index 0000000..9f12ff9 --- /dev/null +++ b/src/clipboard/clipboardcopy.hpp @@ -0,0 +1,10 @@ +#ifndef KSHARE_CLIPBOARDCOPY_HPP +#define KSHARE_CLIPBOARDCOPY_HPP + + +namespace clipboardcopy { + void copyClipboard(); +} + + +#endif //KSHARE_CLIPBOARDCOPY_HPP diff --git a/src/colorpicker/colorpickerscene.cpp b/src/colorpicker/colorpickerscene.cpp new file mode 100644 index 0000000..275e06f --- /dev/null +++ b/src/colorpicker/colorpickerscene.cpp @@ -0,0 +1,42 @@ +#include "colorpickerscene.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +ColorPickerScene::ColorPickerScene(QPixmap pixmap, QWidget *parentWidget) +: ScreenOverlay(pixmap, parentWidget), ScreenOverlayView(this, parentWidget), image(pixmap.toImage()) { + setWindowTitle(tr("KShare Color Picker")); + setAttribute(Qt::WA_DeleteOnClose); + setCursor(Qt::BlankCursor); + + activateWindow(); + setGeometry(pixmap.rect()); + ScreenOverlay::show(); +} + +void ColorPickerScene::keyPressEvent(QKeyEvent *event) { + color = image.pixelColor(cursorPos().toPoint()); + if (event->key() == Qt::Key_Return) { + QApplication::clipboard()->setText(color.name()); + logger::info(tr("Copied hex code to clipboard.")); + } + if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Escape) close(); +} + +void ColorPickerScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *) { + color = image.pixelColor(cursorPos().toPoint()); + QApplication::clipboard()->setText(color.name()); + close(); + logger::info(tr("Copied hex code to clipboard.")); +} + +QString ColorPickerScene::generateHint() { + color = image.pixelColor(cursorPos().toPoint()); + return color.name(); +} diff --git a/colorpicker/colorpickerscene.hpp b/src/colorpicker/colorpickerscene.hpp similarity index 50% rename from colorpicker/colorpickerscene.hpp rename to src/colorpicker/colorpickerscene.hpp index e2e9c55..db8529d 100644 --- a/colorpicker/colorpickerscene.hpp +++ b/src/colorpicker/colorpickerscene.hpp @@ -5,28 +5,28 @@ #include #include #include -#include #include #include -#include +#include +#include +#include -class ColorPickerScene : public QGraphicsScene, public QGraphicsView { +class ColorPickerScene : public ScreenOverlay, public ScreenOverlayView { + Q_DECLARE_TR_FUNCTIONS(ColorPickerScene) public: - ColorPickerScene(QPixmap pixmap, QWidget *parentWidget); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; + ColorPickerScene(QPixmap pixmap, QWidget *parent = nullptr); void keyPressEvent(QKeyEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *) override; static void showPicker() { - new ColorPickerScene(screenshotutil::fullscreen(), 0); + new ColorPickerScene(utils::fullscreen()); } +protected: + QString generateHint() override; + private: QImage image; QColor color; - QGraphicsEllipseItem *ellipse = 0; - QGraphicsPixmapItem *pItem = 0; - QGraphicsTextItem *text; - QGraphicsRectItem *textBackground; }; #endif // COLORPICKERSCENE_HPP diff --git a/cropeditor/cropeditor.cpp b/src/cropeditor/cropeditor.cpp similarity index 72% rename from cropeditor/cropeditor.cpp rename to src/cropeditor/cropeditor.cpp index de15ffa..1ea927e 100644 --- a/cropeditor/cropeditor.cpp +++ b/src/cropeditor/cropeditor.cpp @@ -8,22 +8,24 @@ #include #include #include +#include CropEditor::CropEditor(QPixmap image, QObject *parent) : QObject(parent) { scene = new CropScene(parent, image); view = new CropView(scene); - qreal ratio = QApplication::primaryScreen()->devicePixelRatio(); + view->raise(); QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(image); pixmapItem->setZValue(-1); - pixmapItem->setScale(1 / ratio); scene->addItem(pixmapItem); scene->setSceneRect(image.rect()); view->resize(image.width(), image.height()); view->setMinimumSize(image.size()); - view->move(settings::settings().value("cropx", 0).toInt(), settings::settings().value("cropy", 0).toInt()); - view->setWindowTitle("KShare Crop Editor"); - view->show(); - + QPoint p = utils::smallestScreenCoordinate() + + QPoint(settings::settings().value("cropx", 0).toInt(), settings::settings().value("cropy", 0).toInt()); + view->move(p.x(), p.y()); + view->setWindowTitle(tr("KShare Crop Editor")); + view->activateWindow(); + scene->show(); connect(scene, &CropScene::closedWithRect, this, &CropEditor::crop); } diff --git a/cropeditor/cropeditor.hpp b/src/cropeditor/cropeditor.hpp similarity index 100% rename from cropeditor/cropeditor.hpp rename to src/cropeditor/cropeditor.hpp diff --git a/cropeditor/cropeditor.ui b/src/cropeditor/cropeditor.ui similarity index 100% rename from cropeditor/cropeditor.ui rename to src/cropeditor/cropeditor.ui diff --git a/src/cropeditor/cropscene.cpp b/src/cropeditor/cropscene.cpp new file mode 100644 index 0000000..f66e740 --- /dev/null +++ b/src/cropeditor/cropscene.cpp @@ -0,0 +1,344 @@ +// vim: set sw=4 tw=4 : +#include "cropscene.hpp" +#include "selectionrectangle.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +CropScene::CropScene(QObject *parent, QPixmap pixmap) +: ScreenOverlay(pixmap, parent), drawingSelectionMaker([] { return nullptr; }), prevButtons(Qt::NoButton), + _brush(Qt::SolidPattern), _font(settings::settings().value("font", QFont()).value()) { + pen().setColor(settings::settings().value("penColor", pen().color()).value()); + pen().setCosmetic(settings::settings().value("penCosmetic", pen().isCosmetic()).toBool()); + pen().setWidthF(settings::settings().value("penWidth", pen().widthF()).toReal()); + brush().setColor(settings::settings().value("brushColor", brush().color()).value()); + brush().setStyle( + static_cast(settings::settings().value("brushStyle", static_cast(Qt::SolidPattern)).toInt())); + setHighlight(settings::settings().value("highlightColor", QColor(Qt::cyan)).value()); + + menu = new QMenuBar; + addDrawingAction(menu, tr("Free draw"), ":/icons/pencil.png", [] { return new PathItem; }); + addDrawingAction(menu, tr("Blur"), ":/icons/blur.png", [] { return new BlurItem; }); + addDrawingAction(menu, tr("Straight line"), ":/icons/line.png", [] { return new LineItem; }); + addDrawingAction(menu, tr("Text"), ":/icons/text.png", [] { return new TextItem; }); + addDrawingAction(menu, tr("Rectangle"), ":/icons/rectangle.png", [] { return new RectItem; }); + addDrawingAction(menu, tr("Highlighter"), ":/icons/highlighter.png", [] { return new Highlighter; }); + addDrawingAction(menu, tr("Ellipse"), ":/icons/circle.png", [] { return new EllipseItem; }); + addDrawingAction(menu, tr("Arrow"), ":/icons/arrow.png", [] { return new ArrowItem; }); + + menu->addSeparator(); + addDrawingAction(menu, tr("Eraser"), ":/icons/erase.png", [] { return new EraserItem; }); + QAction *clear = menu->addAction(""); + clear->setToolTip(tr("Clear all drawing")); + clear->setIcon(QIcon(":/icons/delete.png")); + connect(clear, &QAction::triggered, [&] { + auto its = items(); + for (auto i : its) { + if (i != polyItem && i != rect && i->zValue() != -1 && i != proxyMenu && i != hint && i->zValue() != 199) { + removeItem(i); + } + } + }); + + addDrawingAction(menu, tr("None"), ":/icons/crop.png", [] { return nullptr; }); + + menu->addSeparator(); + QAction *settings = menu->addAction(""); + settings->setToolTip(tr("Settings")); + settings->setIcon(QIcon(":/icons/settings.png")); + connect(settings, &QAction::triggered, [&] { + hide(); + BrushPenSelection(this).exec(); + show(); + }); + menu->addSeparator(); + display = menu->addAction(drawingName); + display->setDisabled(true); + + QAction *fonts = menu->addAction(""); + fonts->setIcon(QIcon(":/icons/fontsettings.png")); + connect(fonts, &QAction::triggered, this, &CropScene::fontAsk); + + menu->addAction(fonts); + menu->addSeparator(); + QAction *confirm = menu->addAction(""); + confirm->setToolTip(tr("Confirm")); + confirm->setIcon(QIcon(":/icons/accept.png")); + connect(confirm, &QAction::triggered, [this] { done(true); }); + menu->addAction(confirm); + + QAction *cancel = menu->addAction(""); + cancel->setToolTip(tr("Cancel")); + cancel->setIcon(QIcon(":/icons/cancel.png")); + connect(cancel, &QAction::triggered, [this] { done(false); }); + menu->addAction(cancel); + + addItem(hint); + hint->setPos(5, 5); + hint->setZValue(2); + hint->setVisible(settings::settings().value("crophint", true).toBool()); + + QPolygonF poly; + QRect prect = pixmap.rect(); + poly.append(prect.topLeft()); + poly.append(prect.topRight()); + poly.append(prect.bottomRight()); + poly.append(prect.bottomLeft()); + polyItem = new QGraphicsPolygonItem(poly); + polyItem->setBrush(QBrush(QColor(0, 0, 0, settings::settings().value("overlayAlpha", 96).toInt()))); + polyItem->setPen(QPen(Qt::NoPen)); + polyItem->setZValue(1); + addItem(polyItem); + + auto widget = addWidget(menu); + widget->setFlag(QGraphicsItem::ItemIsMovable, true); + widget->setZValue(100); + widget->setPos(100, 100); + proxyMenu = widget; + + QTimer::singleShot(0, [&, widget] { + auto screen = QApplication::primaryScreen(); + int w = screen->geometry().width(); + widget->setPos(views()[0]->mapToScene( + QPoint(screen->geometry().x() + (w - widget->boundingRect().width()) / 2, screen->geometry().y() + 100))); + setGrid(settings::settings().value("gridEnabled", true).toBool()); + }); +} + +CropScene::~CropScene() { + delete drawingSelection; +} + +QPen &CropScene::pen() { + return _pen; +} + +QBrush &CropScene::brush() { + return _brush; +} + +QFont &CropScene::font() { + return _font; +} + +void CropScene::setDrawingSelection(QString name, std::function drawAction) { + if (drawingSelection) { + delete drawingSelection; + drawingSelection = 0; + } + this->setFocus(); + drawingSelectionMaker = drawAction; + drawingSelection = drawAction(); + drawingName = name; + display->setText(drawingName); + if (drawingSelection) + if (!drawingSelection->init(this)) setDrawingSelection(tr("None"), [] { return nullptr; }); + menu->adjustSize(); + auto screen = QApplication::primaryScreen(); + int w = screen->geometry().width(); + proxyMenu->setPos(views()[0]->mapToScene( + QPoint(screen->geometry().x() + (w - proxyMenu->boundingRect().width()) / 2, screen->geometry().y() + 100))); +} + +QGraphicsItem *CropScene::whichItem(QPointF scenePos) { + for (auto item : items()) { + if (item->sceneBoundingRect().contains(scenePos)) + if (item != polyItem && item != rect && item->zValue() != 199 && item->zValue() != -1) return item; + } + return nullptr; +} + +void CropScene::fontAsk() { + hide(); + bool ok = false; + QFont font = QFontDialog::getFont(&ok, this->font(), this->views()[0], "Font to use"); + if (ok) _font = font; + show(); +} + +void CropScene::mouseMoved(QGraphicsSceneMouseEvent *e, QPointF cursorPos, QPointF delta) { + hint->setVisible(settings::settings().value("crophint").toBool() && !hint->sceneBoundingRect().contains(cursorPos)); + if (rect && !drawingRect) { + // qAbs(e->scenePos().() - rect->rect().()) < 10 + bool close = false; + QRectF newRect = rect->rect(); + if (qAbs(e->scenePos().x() - rect->rect().right()) < 10) { + if (qAbs(e->scenePos().y() - rect->rect().bottom()) < 10) { + close = true; + views()[0]->setCursor(Qt::SizeFDiagCursor); + if (e->buttons() & Qt::LeftButton) newRect.setBottomRight(cursorPos); + } else if (qAbs(e->scenePos().y() - rect->rect().top()) < 10) { + close = true; + views()[0]->setCursor(Qt::SizeBDiagCursor); + if (e->buttons() & Qt::LeftButton) newRect.setTopRight(cursorPos); + } + } else if (qAbs(e->scenePos().x() - rect->rect().left()) < 10) { + if (qAbs(e->scenePos().y() - rect->rect().top()) < 10) { + close = true; + views()[0]->setCursor(Qt::SizeFDiagCursor); + if (e->buttons() & Qt::LeftButton) newRect.setTopLeft(cursorPos); + } else if (qAbs(e->scenePos().y() - rect->rect().bottom()) < 10) { + close = true; + views()[0]->setCursor(Qt::SizeBDiagCursor); + if (e->buttons() & Qt::LeftButton) newRect.setBottomLeft(cursorPos); + } + } + if (!close) { + views()[0]->setCursor(Qt::BlankCursor); + } else { + rect->setRect(newRect); + prevButtons = e->buttons(); + updatePoly(); + return; + } + } + + auto buttons = e->buttons(); + if (e->modifiers() & Qt::ControlModifier && buttons == Qt::LeftButton) { + auto item = whichItem(cursorPos); + if (item) item->moveBy(delta.x(), delta.y()); + return; + } + if (buttons == Qt::LeftButton) { + if (!proxyMenu->sceneBoundingRect().contains(cursorPos)) { + if (drawingSelection) { + drawingSelection->mouseDragEvent(e, this); + } else { + QPointF p = cursorPos; + if (!drawingRect || rect == nullptr) { + if (rect) { + delete rect; + rect = nullptr; + } + drawingRect = true; + rect = new SelectionRectangle(p.x(), p.y(), 1, 1); + initPos = p; + QPen pen(Qt::NoBrush, 1); + pen.setColor(highlight()); + rect->setPen(pen); + rect->setZValue(1); + addItem(rect); + } else { + if (prevButtons == Qt::NoButton && !keyboardActiveSelection()) { + initPos = p; + rect->setRect(p.x(), p.y(), 1, 1); + } else { + rect->setRect(QRect(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), + qAbs(initPos.x() - p.x()), qAbs(initPos.y() - p.y()))); + } + } + updatePoly(); + } + } + } + prevButtons = buttons; + + setMagVisibility(!proxyMenu->sceneBoundingRect().contains(cursorPos)); +} + +void CropScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { + drawingRect = false; + if (drawingSelection) { + drawingSelection->mouseDragEndEvent(e, this); + setDrawingSelection(drawingName, drawingSelectionMaker); + } else if (!proxyMenu->sceneBoundingRect().contains(e->scenePos()) && settings::settings().value("quickMode", false).toBool()) { + done(true); + } + prevButtons = Qt::NoButton; + + if (e->modifiers() & Qt::ControlModifier) e->accept(); + QGraphicsScene::mouseReleaseEvent(e); +} + +void CropScene::mousePressEvent(QGraphicsSceneMouseEvent *e) { + if (e->modifiers() & Qt::AltModifier) { + auto item = whichItem(cursorPos()); + if (item && item != proxyMenu) removeItem(item); + } + + if (e->modifiers() & Qt::ControlModifier) e->accept(); + QGraphicsScene::mousePressEvent(e); +} + +void CropScene::addDrawingAction(QMenuBar *menu, QString name, QString icon, std::function item) { + QAction *action = menu->addAction(""); + action->setToolTip(name); + action->setIcon(QIcon(icon)); + connect(action, &QAction::triggered, [this, item, name](bool) { setDrawingSelection(name, item); }); +} + +void CropScene::keyReleaseEvent(QKeyEvent *event) { + if (((event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) && !drawingSelection) || event->key() == Qt::Key_Escape) + done(event->key() != Qt::Key_Escape); + else if (event->key() == Qt::Key_F1) { + bool enabled = !settings::settings().value("crophint", true).toBool(); + hint->setVisible(enabled); + settings::settings().setValue("crophint", enabled); + } + + if (event->modifiers() & Qt::ControlModifier) event->accept(); +} + + +void CropScene::updatePoly() { + QPolygonF poly; + QPointF theMagicWikipediaPoint(rect->rect().right(), sceneRect().bottom()); + poly << sceneRect().topLeft(); + poly << sceneRect().topRight(); + poly << sceneRect().bottomRight(); + poly << theMagicWikipediaPoint; + poly << rect->rect().bottomRight(); + poly << rect->rect().topRight(); + poly << rect->rect().topLeft(); + poly << rect->rect().bottomLeft(); + poly << rect->rect().bottomRight(); + poly << theMagicWikipediaPoint; + poly << sceneRect().bottomLeft(); + poly << sceneRect().topLeft(); + + this->polyItem->setPolygon(poly); +} + +void CropScene::done(bool notEsc) { + if (notEsc && rect) { + QRectF rect2 = rect->rect(); + hint->setVisible(false); + rect->setRect(QRect(-100, -100, 0, 0)); + proxyMenu->setVisible(false); + hideMag(); + emit closedWithRect(rect2.toRect()); + } else + emit closedWithRect(QRect()); +} + +QString CropScene::generateHint() { + QString rectStr("(-1, -1, 0, 0)"); + if (rect) { + rectStr = "(%0, %1, %2, %3)"; + rectStr = rectStr.arg(qRound(rect->rect().x())) + .arg(qRound(rect->rect().y())) + .arg(qRound(rect->rect().width())) + .arg(qRound(rect->rect().height())); + } + return QString("ptr: (%0, %1)\nsel: %2").arg(qRound(cursorPos().x())).arg(qRound(cursorPos().y())).arg(rectStr); +} diff --git a/src/cropeditor/cropscene.hpp b/src/cropeditor/cropscene.hpp new file mode 100644 index 0000000..6e25311 --- /dev/null +++ b/src/cropeditor/cropscene.hpp @@ -0,0 +1,87 @@ +#ifndef CROPSCENE_HPP +#define CROPSCENE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +class CropScene; + +#include + +class CropScene : public ScreenOverlay { + Q_OBJECT +public: + CropScene(QObject *parent, QPixmap pixmap); + ~CropScene(); + QPen &pen(); + QBrush &brush(); + QFont &font(); + void setDrawingSelection(QString name, std::function drawAction); + QGraphicsPolygonItem *polyItm() { + return polyItem; + } + QGraphicsRectItem *selRect() { + return rect; + } + QGraphicsItem *whichItem(QPointF scenePos); + void setVisible(bool visible); + +public slots: + void fontAsk(); + +signals: + void closedWithRect(QRect rect); + +protected: + void mouseMoved(QGraphicsSceneMouseEvent *e, QPointF cursorPos, QPointF delta) override; + void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override; + void mousePressEvent(QGraphicsSceneMouseEvent *e) override; + void keyReleaseEvent(QKeyEvent *e) override; + QString generateHint() override; + +private slots: + void done(bool notEsc = true); + +private: + void updatePoly(); + void addDrawingAction(QMenuBar *menu, QString name, QString icon, std::function item); + std::function drawingSelectionMaker; + QFlags prevButtons; + QGraphicsRectItem *rect = nullptr; + bool drawingRect = true; + QPointF initPos; + QPen _pen; + QBrush _brush; + QFont _font; + QGraphicsPolygonItem *polyItem = nullptr; + DrawItem *drawingSelection = nullptr; + QMenuBar *menu = nullptr; + QGraphicsProxyWidget *proxyMenu = nullptr; + QString drawingName = "None"; + QAction *display; + QGraphicsPixmapItem *hint + = new QGraphicsPixmapItem(utils::renderText(tr( // + "Press F1 to toggle this hint\n" + "\tHold Shift to slow the cursor down\n" + "\tCtrl+Drag a thing to move it around\n" + "\tAlt+Click a drawing to remove it\n" + "\tPress Return/Enter to finish\n" + "\tPress ESC to cancel\n" + "\tUse the menu bar to draw\n" + "\tNOTE: You must select 'Crop' before closing the editor\n" + "\tIf you do not it will not close."), + 5, + QColor(0, 0, 0, 125), + Qt::white)); +}; + +#endif // CROPSCENE_HPP diff --git a/src/cropeditor/cropview.cpp b/src/cropeditor/cropview.cpp new file mode 100644 index 0000000..275270d --- /dev/null +++ b/src/cropeditor/cropview.cpp @@ -0,0 +1,20 @@ +#include "cropview.hpp" + +#include +#include + +CropView::CropView(QGraphicsScene *scene) : ScreenOverlayView(scene) { + setCursor(Qt::BlankCursor); +} + +CropView::~CropView() { +} + +void CropView::showEvent(QShowEvent *) { + QPoint p = utils::smallestScreenCoordinate() + + QPoint(settings::settings().value("cropx", 0).toInt(), settings::settings().value("cropy", 0).toInt()); + if (QApplication::screens().size() == 1) showFullScreen(); + move(p); + setWindowTitle(tr("KShare Crop Editor")); + activateWindow(); +} diff --git a/src/cropeditor/cropview.hpp b/src/cropeditor/cropview.hpp new file mode 100644 index 0000000..23a0754 --- /dev/null +++ b/src/cropeditor/cropview.hpp @@ -0,0 +1,18 @@ +#ifndef CROPVIEW_HPP +#define CROPVIEW_HPP + +#include +#include +#include + +class CropView : public ScreenOverlayView { + Q_DECLARE_TR_FUNCTIONS(CropScene) +public: + CropView(QGraphicsScene *scene); + ~CropView(); + +protected: + void showEvent(QShowEvent *e) override; +}; + +#endif // CROPVIEW_HPP diff --git a/cropeditor/drawing/arrowitem.cpp b/src/cropeditor/drawing/arrowitem.cpp similarity index 60% rename from cropeditor/drawing/arrowitem.cpp rename to src/cropeditor/drawing/arrowitem.cpp index e1558e4..812e6a7 100644 --- a/cropeditor/drawing/arrowitem.cpp +++ b/src/cropeditor/drawing/arrowitem.cpp @@ -2,9 +2,9 @@ #include #include -void ArrowItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { +void ArrowItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { if (init.isNull()) { - init = e->scenePos(); + init = scene->cursorPos(); line = scene->addLine(QLineF(init, init), scene->pen()); QPainterPath poly; qreal w = settings::settings().value("arrow/width", 20).toDouble() / 2; @@ -14,8 +14,9 @@ void ArrowItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { poly.lineTo(QPoint(w, h)); head = scene->addPath(poly, scene->pen(), scene->brush()); } else { - line->setLine(QLineF(init, e->scenePos())); - head->setRotation(270 + qRadiansToDegrees(qAtan2((init.y() - e->scenePos().y()), (init.x() - e->scenePos().x())))); + line->setLine(QLineF(init, scene->cursorPos())); + head->setRotation( + 270 + qRadiansToDegrees(qAtan2((init.y() - scene->cursorPos().y()), (init.x() - scene->cursorPos().x())))); } - head->setPos(e->scenePos()); + head->setPos(scene->cursorPos()); } diff --git a/cropeditor/drawing/arrowitem.hpp b/src/cropeditor/drawing/arrowitem.hpp similarity index 83% rename from cropeditor/drawing/arrowitem.hpp rename to src/cropeditor/drawing/arrowitem.hpp index 13050f1..c43be3f 100644 --- a/cropeditor/drawing/arrowitem.hpp +++ b/src/cropeditor/drawing/arrowitem.hpp @@ -11,7 +11,7 @@ public: QString name() override { return "Arrow"; } - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override { } diff --git a/cropeditor/drawing/bluritem.cpp b/src/cropeditor/drawing/bluritem.cpp similarity index 61% rename from cropeditor/drawing/bluritem.cpp rename to src/cropeditor/drawing/bluritem.cpp index aa2b2a8..9f69b75 100644 --- a/cropeditor/drawing/bluritem.cpp +++ b/src/cropeditor/drawing/bluritem.cpp @@ -9,26 +9,28 @@ bool BlurItem::init(CropScene *) { blurHints.setFlag(QGraphicsBlurEffect::PerformanceHint, settings::settings().value("blur/performanceHint", true).toBool()); blurHints.setFlag(QGraphicsBlurEffect::QualityHint, settings::settings().value("blur/qualityHint", false).toBool()); effect->setBlurHints(blurHints); - effect->setBlurRadius(settings::settings().value("blurRadius", 5.).toDouble()); + effect->setBlurRadius(settings::settings().value("blur/radius", 5.).toDouble()); return true; } -void BlurItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { +void BlurItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { if (pos.isNull()) { - pos = e->scenePos(); - rect = scene->addRect(QRect(e->scenePos().toPoint(), QSize(1, 1)), QPen(Qt::cyan), Qt::NoBrush); + pos = scene->cursorPos(); + rect = scene->addRect(QRect(scene->cursorPos().toPoint(), QSize(1, 1)), QPen(scene->highlight()), Qt::NoBrush); pixmap = scene->addPixmap(scene->pixmap().copy(rect->rect().toRect())); - pixmap->setPos(e->scenePos()); - pixmap->setZValue(rect->zValue() - 0.1); + pixmap->setPos(scene->cursorPos()); pixmap->setGraphicsEffect(effect); } else { - QPointF p = e->scenePos(); + QPointF p = scene->cursorPos(); rect->setRect(QRect(qMin(pos.x(), p.x()), qMin(pos.y(), p.y()), qAbs(pos.x() - p.x()), qAbs(pos.y() - p.y()))); - pixmap->setPixmap(scene->pixmap().copy(rect->rect().toRect())); + auto area = rect->rect(); + if (area.width() > 1 && area.height() > 1 && area.top() > 1 && area.left() > 1) + pixmap->setPixmap(scene->pixmap().copy(rect->rect().toRect())); pixmap->setPos(rect->rect().topLeft()); } } void BlurItem::mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) { - if (rect != nullptr) rect->setPen(Qt::NoPen); + delete rect; + rect = 0; } diff --git a/cropeditor/drawing/bluritem.hpp b/src/cropeditor/drawing/bluritem.hpp similarity index 74% rename from cropeditor/drawing/bluritem.hpp rename to src/cropeditor/drawing/bluritem.hpp index c95229a..43e876b 100644 --- a/cropeditor/drawing/bluritem.hpp +++ b/src/cropeditor/drawing/bluritem.hpp @@ -7,20 +7,20 @@ class BlurItem : public DrawItem { public: - QString name() { + QString name() override { return "Blur"; } ~BlurItem() { } bool init(CropScene *) override; - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; private: QGraphicsBlurEffect *effect; QPointF pos; - QGraphicsRectItem *rect; + QGraphicsRectItem *rect = 0; QGraphicsPixmapItem *pixmap; }; diff --git a/cropeditor/drawing/drawitem.hpp b/src/cropeditor/drawing/drawitem.hpp similarity index 100% rename from cropeditor/drawing/drawitem.hpp rename to src/cropeditor/drawing/drawitem.hpp diff --git a/src/cropeditor/drawing/ellipseitem.cpp b/src/cropeditor/drawing/ellipseitem.cpp new file mode 100644 index 0000000..bb8f4da --- /dev/null +++ b/src/cropeditor/drawing/ellipseitem.cpp @@ -0,0 +1,12 @@ +#include "ellipseitem.hpp" + +void EllipseItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { + if (!ellie) { + ellie = scene->addEllipse(scene->cursorPos().x(), scene->cursorPos().y(), 0, 0, scene->pen(), scene->brush()); + initPos = scene->cursorPos(); + } else { + auto p = scene->cursorPos(); + ellie->setRect(QRectF(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()), + qAbs(initPos.y() - p.y()))); + } +} diff --git a/cropeditor/drawing/ellipseitem.hpp b/src/cropeditor/drawing/ellipseitem.hpp similarity index 78% rename from cropeditor/drawing/ellipseitem.hpp rename to src/cropeditor/drawing/ellipseitem.hpp index 116da7c..46c8678 100644 --- a/cropeditor/drawing/ellipseitem.hpp +++ b/src/cropeditor/drawing/ellipseitem.hpp @@ -7,12 +7,12 @@ class EllipseItem : public DrawItem { public: EllipseItem() { } - QString name() { + QString name() override { return "Blur"; } ~EllipseItem() { } - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override { } diff --git a/src/cropeditor/drawing/eraseritem.cpp b/src/cropeditor/drawing/eraseritem.cpp new file mode 100644 index 0000000..43f31f0 --- /dev/null +++ b/src/cropeditor/drawing/eraseritem.cpp @@ -0,0 +1,16 @@ +#include "eraseritem.hpp" + +EraserItem::EraserItem() { +} + +EraserItem::~EraserItem() { +} + +void EraserItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { + for (auto i : scene->items()) { + if (i->contains(scene->cursorPos()) && i->zValue() != -1 && i != scene->polyItm() && i != scene->selRect()) { + scene->removeItem(i); + break; + } + } +} diff --git a/cropeditor/drawing/eraseritem.hpp b/src/cropeditor/drawing/eraseritem.hpp similarity index 80% rename from cropeditor/drawing/eraseritem.hpp rename to src/cropeditor/drawing/eraseritem.hpp index 078cd2d..9184629 100644 --- a/cropeditor/drawing/eraseritem.hpp +++ b/src/cropeditor/drawing/eraseritem.hpp @@ -10,7 +10,7 @@ public: QString name() override { return "Eraser"; } - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override { } }; diff --git a/src/cropeditor/drawing/highlighter.cpp b/src/cropeditor/drawing/highlighter.cpp new file mode 100644 index 0000000..31e64f9 --- /dev/null +++ b/src/cropeditor/drawing/highlighter.cpp @@ -0,0 +1,37 @@ +#include "highlighter.hpp" + +#include + +void Highlighter::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { + if (pos.isNull()) { + pos = scene->cursorPos(); + rect = scene->addRect(QRect(scene->cursorPos().toPoint(), QSize(1, 1)), QPen(scene->highlight()), Qt::NoBrush); + pixmap = scene->addPixmap(scene->pixmap().copy(rect->rect().toRect())); + pixmap->setPos(scene->cursorPos()); + } else { + QPointF p = scene->cursorPos(); + rect->setRect(QRect(qMin(pos.x(), p.x()), qMin(pos.y(), p.y()), qAbs(pos.x() - p.x()), qAbs(pos.y() - p.y()))); + auto area = rect->rect(); + if (area.width() > 1 && area.height() > 1 && area.top() > 1 && area.left() > 1) { + // toImage conversion needed for access to the underlying image data for altering + auto pm = scene->pixmap().copy(rect->rect().toRect()).toImage(); + if (pm.format() != QImage::Format_RGB32) { + pm = pm.convertToFormat(QImage::Format_RGB32); + } + for (int y = 0; y < pm.height(); y++) { + QRgb *line = (QRgb *)pm.scanLine(y); + for (int x = 0; x < pm.width(); x++) { + QRgb &pix = line[x]; + pix = qRgb(qMin(255, qRed(pix)), qMin(255, qGreen(pix)), 0); + } + } + pixmap->setPixmap(QPixmap::fromImage(pm)); + } + pixmap->setPos(rect->rect().topLeft()); + } +} + +void Highlighter::mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) { + delete rect; + rect = 0; +} diff --git a/src/cropeditor/drawing/highlighter.hpp b/src/cropeditor/drawing/highlighter.hpp new file mode 100644 index 0000000..b8d4c61 --- /dev/null +++ b/src/cropeditor/drawing/highlighter.hpp @@ -0,0 +1,21 @@ +#ifndef HIGHLIGHTER_HPP +#define HIGHLIGHTER_HPP + +#include "drawitem.hpp" +#include + +class Highlighter : public DrawItem { +public: + QString name() override { + return "Highlighter"; + } + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; + void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; + +private: + QPointF pos; + QGraphicsRectItem *rect = 0; + QGraphicsPixmapItem *pixmap; +}; + +#endif /* HIGHLIGHTER_HPP */ diff --git a/cropeditor/drawing/lineitem.cpp b/src/cropeditor/drawing/lineitem.cpp similarity index 58% rename from cropeditor/drawing/lineitem.cpp rename to src/cropeditor/drawing/lineitem.cpp index 563ce3f..aa9bc5e 100644 --- a/cropeditor/drawing/lineitem.cpp +++ b/src/cropeditor/drawing/lineitem.cpp @@ -3,12 +3,12 @@ LineItem::LineItem() { } -void LineItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { +void LineItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { if (init.isNull()) { - init = e->scenePos(); + init = scene->cursorPos(); line = scene->addLine(QLineF(init, init), scene->pen()); } else { - line->setLine(QLineF(init, e->scenePos())); + line->setLine(QLineF(init, scene->cursorPos())); } } diff --git a/cropeditor/drawing/lineitem.hpp b/src/cropeditor/drawing/lineitem.hpp similarity index 81% rename from cropeditor/drawing/lineitem.hpp rename to src/cropeditor/drawing/lineitem.hpp index c72edd8..a6f59fe 100644 --- a/cropeditor/drawing/lineitem.hpp +++ b/src/cropeditor/drawing/lineitem.hpp @@ -9,7 +9,7 @@ public: QString name() override { return "Straight line"; } - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; private: diff --git a/cropeditor/drawing/pathitem.cpp b/src/cropeditor/drawing/pathitem.cpp similarity index 69% rename from cropeditor/drawing/pathitem.cpp rename to src/cropeditor/drawing/pathitem.cpp index 9bc15b7..65f8796 100644 --- a/cropeditor/drawing/pathitem.cpp +++ b/src/cropeditor/drawing/pathitem.cpp @@ -9,13 +9,13 @@ PathItem::~PathItem() { delete path; } -void PathItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { +void PathItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { if (path == nullptr) { - path = new QPainterPath(e->scenePos()); + path = new QPainterPath(scene->cursorPos()); pathItem = scene->addPath(*path, scene->pen(), settings::settings().value("brushPath", false).toBool() ? scene->brush() : QBrush()); } else { - path->quadTo(path->currentPosition(), e->scenePos()); + path->quadTo(path->currentPosition(), scene->cursorPos()); pathItem->setPath(*path); } } diff --git a/cropeditor/drawing/pathitem.hpp b/src/cropeditor/drawing/pathitem.hpp similarity index 85% rename from cropeditor/drawing/pathitem.hpp rename to src/cropeditor/drawing/pathitem.hpp index e2dfba9..6eb347a 100644 --- a/cropeditor/drawing/pathitem.hpp +++ b/src/cropeditor/drawing/pathitem.hpp @@ -11,7 +11,7 @@ public: QString name() { return "Path"; } - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene); + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene); void mouseDragEndEvent(QGraphicsSceneMouseEvent *e, CropScene *scene); private: diff --git a/cropeditor/drawing/rectitem.cpp b/src/cropeditor/drawing/rectitem.cpp similarity index 63% rename from cropeditor/drawing/rectitem.cpp rename to src/cropeditor/drawing/rectitem.cpp index 5524661..f862114 100644 --- a/cropeditor/drawing/rectitem.cpp +++ b/src/cropeditor/drawing/rectitem.cpp @@ -6,14 +6,14 @@ RectItem::RectItem() { RectItem::~RectItem() { } -void RectItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { +void RectItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { if (!rect) { - rect = scene->addRect(e->scenePos().x(), e->scenePos().y(), 0, 0); + rect = scene->addRect(scene->cursorPos().x(), scene->cursorPos().y(), 0, 0); rect->setBrush(scene->brush()); rect->setPen(scene->pen()); - initPos = e->scenePos(); + initPos = scene->cursorPos(); } else { - auto p = e->scenePos(); + auto p = scene->cursorPos(); rect->setRect( QRect(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()), qAbs(initPos.y() - p.y()))); } diff --git a/cropeditor/drawing/rectitem.hpp b/src/cropeditor/drawing/rectitem.hpp similarity index 82% rename from cropeditor/drawing/rectitem.hpp rename to src/cropeditor/drawing/rectitem.hpp index 8e09d80..a0e32bf 100644 --- a/cropeditor/drawing/rectitem.hpp +++ b/src/cropeditor/drawing/rectitem.hpp @@ -10,7 +10,7 @@ public: QString name() override { return "Rectangle"; } - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; private: diff --git a/cropeditor/drawing/textitem.cpp b/src/cropeditor/drawing/textitem.cpp similarity index 54% rename from cropeditor/drawing/textitem.cpp rename to src/cropeditor/drawing/textitem.cpp index bf67849..bcf00c0 100644 --- a/cropeditor/drawing/textitem.cpp +++ b/src/cropeditor/drawing/textitem.cpp @@ -5,20 +5,21 @@ bool TextItem::init(CropScene *s) { bool ok; s->hide(); - text = QInputDialog::getText(nullptr, "Text to add", "Input", QLineEdit::Normal, QString(), &ok); + text = QInputDialog::getText(nullptr, tr("Text to add"), tr("Input"), QLineEdit::Normal, QString(), &ok); s->show(); return ok; } -void TextItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { +void TextItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) { if (!textItem) { textItem = scene->addSimpleText(text, scene->font()); - textItem->setPos(e->scenePos()); + textItem->setPos(scene->cursorPos()); textItem->setPen(scene->pen().color()); textItem->setBrush(scene->pen().color()); } else { - auto ee - = 180 + qRadiansToDegrees(qAtan2((textItem->pos().y() - e->scenePos().y()), (textItem->pos().x() - e->scenePos().x()))); + auto ee = 180 + + qRadiansToDegrees(qAtan2((textItem->pos().y() - scene->cursorPos().y()), + (textItem->pos().x() - scene->cursorPos().x()))); textItem->setRotation(ee); } } diff --git a/cropeditor/drawing/textitem.hpp b/src/cropeditor/drawing/textitem.hpp similarity index 73% rename from cropeditor/drawing/textitem.hpp rename to src/cropeditor/drawing/textitem.hpp index b2660ef..9c49bf1 100644 --- a/cropeditor/drawing/textitem.hpp +++ b/src/cropeditor/drawing/textitem.hpp @@ -2,13 +2,15 @@ #define TEXTITEM_HPP #include "drawitem.hpp" +#include #include class TextItem : public DrawItem { + Q_DECLARE_TR_FUNCTIONS(TextItem) public: QString name() override; bool init(CropScene *s) override; - void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; + void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; private: diff --git a/src/cropeditor/selectionrectangle.cpp b/src/cropeditor/selectionrectangle.cpp new file mode 100644 index 0000000..ae9df3c --- /dev/null +++ b/src/cropeditor/selectionrectangle.cpp @@ -0,0 +1,42 @@ +#include "selectionrectangle.hpp" + +#include +#include +#include + +SelectionRectangle::SelectionRectangle() { +} + +SelectionRectangle::SelectionRectangle(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent) +: QGraphicsRectItem(x, y, w, h, parent) { +} + +SelectionRectangle::SelectionRectangle(QRectF rect, QGraphicsItem *parent) +: SelectionRectangle(rect.left(), rect.top(), rect.width(), rect.height(), parent) { +} + +void SelectionRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) { + QRect rect = this->rect().toRect(); + if (rect.height() > 30 && rect.width() > 30) { + painter->setPen(Qt::NoPen); + painter->setBrush(pen().color()); + + // Before you panick, the * 16 things are needed because here angles are 1/16th of their value + // The - 10 is accounting for sizes. + // Trail and error ftw + + // Bottom left + painter->drawPie(rect.left() - 10, rect.bottom() - 10, 20, 20, 0, 90 * 16); + // Top right + painter->drawPie(rect.right() - 10, rect.bottom() - 10, 20, 20, 90 * 16, 90 * 16); + + + // Top left + painter->drawPie(rect.left() - 10, rect.top() - 10, 20, 20, 270 * 16, 90 * 16); + // Top right + painter->drawPie(rect.right() - 10, rect.top() - 10, 20, 20, 180 * 16, 90 * 16); + } + painter->setBrush(brush()); + painter->setPen(pen()); + QGraphicsRectItem::paint(painter, options, widget); +} diff --git a/src/cropeditor/selectionrectangle.hpp b/src/cropeditor/selectionrectangle.hpp new file mode 100644 index 0000000..e8a27f9 --- /dev/null +++ b/src/cropeditor/selectionrectangle.hpp @@ -0,0 +1,17 @@ +#ifndef SELECTIONRECTANGLE_HPP +#define SELECTIONRECTANGLE_HPP + +#include +#include + +class SelectionRectangle : public QGraphicsRectItem { +public: + SelectionRectangle(); + explicit SelectionRectangle(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent = nullptr); + explicit SelectionRectangle(QRectF rect, QGraphicsItem *parent = nullptr); + +protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget) override; +}; + +#endif // SELECTIONRECTANGLE_HPP diff --git a/cropeditor/settings/brushpenselection.cpp b/src/cropeditor/settings/brushpenselection.cpp similarity index 93% rename from cropeditor/settings/brushpenselection.cpp rename to src/cropeditor/settings/brushpenselection.cpp index f2301ed..4e78a18 100644 --- a/cropeditor/settings/brushpenselection.cpp +++ b/src/cropeditor/settings/brushpenselection.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,7 @@ BrushPenSelection::BrushPenSelection(CropScene *scene) : QDialog(), ui(new Ui::B ui->alphaSlider->setValue(brush.alpha()); ui->alphaSpin->setValue(brush.alpha()); - setWindowTitle("Crop editor settings"); + setWindowTitle(tr("Crop editor settings")); this->scene = scene; } @@ -46,12 +47,12 @@ BrushPenSelection::~BrushPenSelection() { } void BrushPenSelection::on_penColor_clicked(bool) { - pen = QColorDialog::getColor(pen, this, "Pen Color"); + pen = QColorDialog::getColor(pen, this, tr("Pen Color")); pen.setAlpha(ui->penAlphaSpin->value()); } void BrushPenSelection::on_brushColor_clicked(bool) { - brush = QColorDialog::getColor(brush, this, "Brush Color"); + brush = QColorDialog::getColor(brush, this, tr("Brush Color")); brush.setAlpha(ui->alphaSpin->value()); } @@ -66,6 +67,7 @@ void BrushPenSelection::on_buttonBox_accepted() { settings::settings().setValue("penCosmetic", scene->pen().isCosmetic()); settings::settings().setValue("penWidth", scene->pen().widthF()); settings::settings().setValue("brushColor", scene->brush().color()); + settings::settings().setValue("gridEnabled", scene->grid()); settings::settings().setValue("brushStyle", (int)scene->brush().style()); settings::settings().setValue("brushPath", ui->pathItemHasBrush->isChecked()); settings::settings().setValue("blur/radius", ui->radSpinner->value()); diff --git a/cropeditor/settings/brushpenselection.hpp b/src/cropeditor/settings/brushpenselection.hpp similarity index 96% rename from cropeditor/settings/brushpenselection.hpp rename to src/cropeditor/settings/brushpenselection.hpp index 3ae277d..e383f7f 100644 --- a/cropeditor/settings/brushpenselection.hpp +++ b/src/cropeditor/settings/brushpenselection.hpp @@ -5,7 +5,7 @@ #include namespace Ui { -class BrushPenSelection; + class BrushPenSelection; } class BrushPenSelection : public QDialog { diff --git a/cropeditor/settings/brushpenselection.ui b/src/cropeditor/settings/brushpenselection.ui similarity index 94% rename from cropeditor/settings/brushpenselection.ui rename to src/cropeditor/settings/brushpenselection.ui index b949d86..beb301b 100644 --- a/cropeditor/settings/brushpenselection.ui +++ b/src/cropeditor/settings/brushpenselection.ui @@ -14,172 +14,9 @@ Qt::StrongFocus - Dialog + Dialog - - - - Pen settings - - - - - - 2500 - - - Qt::Horizontal - - - - - - - Choose pen color - - - - - - - Cosmetic - - - - - - - Width - - - - - - - Pen alpha - - - - - - - - - - 255 - - - Qt::Horizontal - - - - - - - 255 - - - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - true - - - - - - - Blur settings - - - - - - Performance Hint - - - - - - - http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum - - - <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Blur Hints - - - true - - - Qt::TextBrowserInteraction - - - - - - - px - - - 30.000000000000000 - - - - - - - 3000 - - - Qt::Horizontal - - - - - - - Blur Radius - - - - - - - Animated Hint - - - - - - - Quality Hint - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - @@ -306,6 +143,83 @@ + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + true + + + + + + + Pen settings + + + + + + 2500 + + + Qt::Horizontal + + + + + + + Choose pen color + + + + + + + Cosmetic + + + + + + + Width + + + + + + + Pen alpha + + + + + + + + + + 255 + + + Qt::Horizontal + + + + + + + 255 + + + + + + @@ -322,20 +236,93 @@ - w: + w: - px + px - h: + h: - px + px + + + + + + + + + + Blur settings + + + + + + 3000 + + + Qt::Horizontal + + + + + + + Performance Hint + + + + + + + Animated Hint + + + + + + + Quality Hint + + + + + + + http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum + + + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Blur Hints + + + true + + + Qt::TextBrowserInteraction + + + + + + + Blur Radius + + + + + + + px + + + 30.000000000000000 diff --git a/src/filenamevalidator.cpp b/src/filenamevalidator.cpp new file mode 100644 index 0000000..928f1d0 --- /dev/null +++ b/src/filenamevalidator.cpp @@ -0,0 +1,12 @@ +#include "filenamevalidator.hpp" + +#include +#include + +FilenameValidator::FilenameValidator(QObject *parent) : QValidator(parent) { +} + +QValidator::State FilenameValidator::validate(QString &input, int &) const { + QString name = formatter::format(input, "lol"); + return PlatformBackend::inst().filenameValid(name) ? State::Acceptable : State::Invalid; +} diff --git a/src/filenamevalidator.hpp b/src/filenamevalidator.hpp new file mode 100644 index 0000000..66a46b7 --- /dev/null +++ b/src/filenamevalidator.hpp @@ -0,0 +1,12 @@ +#ifndef FILENAMEVALIDATOR_HPP +#define FILENAMEVALIDATOR_HPP + +#include + +class FilenameValidator : public QValidator { +public: + FilenameValidator(QObject *parent = nullptr); + QValidator::State validate(QString &input, int &) const override; +}; + +#endif // FILENAMEVALIDATOR_HPP diff --git a/formats.cpp b/src/formats.cpp similarity index 88% rename from formats.cpp rename to src/formats.cpp index 21a8089..5e08ad3 100644 --- a/formats.cpp +++ b/src/formats.cpp @@ -4,13 +4,10 @@ QString formats::normalFormatName(formats::Normal format) { switch (format) { case Normal::JPG: return "JPG"; - break; case Normal::PNG: return "PNG"; - break; default: return QString(); - break; } } @@ -25,13 +22,10 @@ QString formats::normalFormatMIME(formats::Normal format) { switch (format) { case Normal::JPG: return "image/jpeg"; - break; case Normal::PNG: return "image/png"; - break; default: return QString(); - break; } } @@ -39,16 +33,12 @@ QString formats::recordingFormatName(formats::Recording format) { switch (format) { case Recording::GIF: return "GIF"; - break; case Recording::WebM: return "WEBM"; - break; case Recording::MP4: return "MP4"; - break; default: return QString(); - break; } } @@ -63,15 +53,11 @@ QString formats::recordingFormatMIME(formats::Recording format) { switch (format) { case Recording::GIF: return "image/gif"; - break; case Recording::WebM: return "video/webm"; - break; case Recording::MP4: return "video/mp4"; - break; default: return QString(); - break; } } diff --git a/src/formats.hpp b/src/formats.hpp new file mode 100644 index 0000000..a5acd7c --- /dev/null +++ b/src/formats.hpp @@ -0,0 +1,17 @@ +#ifndef FORMATS_HPP +#define FORMATS_HPP + +#include + +namespace formats { + enum class Normal { PNG, JPG, None }; + QString normalFormatName(Normal format); + Normal normalFormatFromName(QString format); + QString normalFormatMIME(Normal format); + + enum class Recording { GIF, WebM, MP4, None }; + QString recordingFormatName(Recording format); + Recording recordingFormatFromName(QString format); + QString recordingFormatMIME(Recording format); +} // namespace formats +#endif // FORMATS_HPP diff --git a/src/formatter.cpp b/src/formatter.cpp new file mode 100644 index 0000000..43995e6 --- /dev/null +++ b/src/formatter.cpp @@ -0,0 +1,29 @@ +#include "formatter.hpp" + +#include +#include + +QString formatter::format(QString toFormat, QString ext, QMap variables) { + QString formatted(toFormat); + + QRegExp dateRegex("%(?!%)\\((.+)\\)date"); + dateRegex.indexIn(toFormat); + QStringList capturedTexts(dateRegex.capturedTexts()); + QDateTime date = QDateTime::currentDateTime(); + for (int i = 0; i < capturedTexts.length(); i += 2) { + formatted = formatted.replace(capturedTexts.at(i), date.toString(capturedTexts.at(i + 1))); + } + + QRegExp randomRegex("%(?!%)\\((.+)\\)random"); + randomRegex.indexIn(toFormat); + QStringList randomTexts(randomRegex.capturedTexts()); + for (int i = 0; i < randomTexts.length(); i += 2) { + QStringList list = randomTexts.at(i + 1).split('|'); + formatted = formatted.replace(randomTexts.at(i), list.at(rand() % (list.length()))); + } + + for (QString var : variables.keys()) formatted.replace("%" + var, variables[var]); + + formatted = formatted.replace(QRegExp("%(?!%)ext"), ext); + return formatted; +} diff --git a/formatter.hpp b/src/formatter.hpp similarity index 50% rename from formatter.hpp rename to src/formatter.hpp index 797c2ec..3bf8b0f 100644 --- a/formatter.hpp +++ b/src/formatter.hpp @@ -1,11 +1,12 @@ #ifndef FORMATTER_HPP #define FORMATTER_HPP +#include #include #include namespace formatter { -QString format(QString toFormat, QString ext); + QString format(QString toFormat, QString ext, QMap variables = QMap()); } #endif // FORMATTER_HPP diff --git a/hotkeying.cpp b/src/hotkeying.cpp similarity index 74% rename from hotkeying.cpp rename to src/hotkeying.cpp index 17288ca..4940bb8 100644 --- a/hotkeying.cpp +++ b/src/hotkeying.cpp @@ -19,7 +19,7 @@ void hotkeying::hotkey(QString seqName, QKeySequence seq, std::function settings::settings().setValue(seqName.prepend("hotkey_"), seq.toString()); if (!hotkey->isRegistered() && !seq.toString().isEmpty()) qWarning().noquote().nospace() - << "Could not bind the hotkey " << seqName << "! Is the keybind already registered?"; + << QObject::tr("Could not bind the hotkey %1! Is the keybind already registered?").arg(seqName); } // forces the hotkey from settings @@ -28,15 +28,17 @@ void hotkeying::load(QString seqName, std::function func, QString def) { QString name = seqName; name.prepend("hotkey_"); if (hotkeys.contains(seqName)) return; - if (settings::settings().contains(name)) - h = new QHotkey(QKeySequence(settings::settings().value(name).toString()), true); - else - h = new QHotkey(def.isNull() ? "" : def, true); + QString k = settings::settings().value(name).toString(); + if (!k.isEmpty()) { + h = new QHotkey(QKeySequence(k), true); + } else + h = new QHotkey(def.isEmpty() ? "" : def, true); QObject::connect(h, &QHotkey::activated, func); hotkeys.insert(seqName, h); - if (!h->isRegistered() && (settings::settings().contains(name) || !def.isEmpty())) + if (!h->isRegistered() && !h->shortcut().toString().isEmpty()) qWarning().noquote().nospace() - << "Could not bind the hotkey " << seqName << "! Is the keybind already registered?"; + << QObject::tr("Could not bind the hotkey %1! Is the keybind already registered?").arg(seqName); + ; } bool hotkeying::valid(QString seq) { diff --git a/src/hotkeying.hpp b/src/hotkeying.hpp new file mode 100644 index 0000000..a901599 --- /dev/null +++ b/src/hotkeying.hpp @@ -0,0 +1,15 @@ +#ifndef HOTKEYING_HPP +#define HOTKEYING_HPP + +#include +#include +#include + +namespace hotkeying { + void hotkey(QString seqName, QKeySequence seq, std::function func); + bool valid(QString seq); + void load(QString seqName, std::function func, QString def = QString()); + QString sequence(QString seqName); +} // namespace hotkeying + +#endif // HOTKEYING_HPP diff --git a/hotkeyinputdialog.cpp b/src/hotkeyinputdialog.cpp similarity index 78% rename from hotkeyinputdialog.cpp rename to src/hotkeyinputdialog.cpp index 8663f15..770c756 100644 --- a/hotkeyinputdialog.cpp +++ b/src/hotkeyinputdialog.cpp @@ -21,17 +21,22 @@ HotkeyInputDialog::~HotkeyInputDialog() { void HotkeyInputDialog::keyPressEvent(QKeyEvent *e) { if (e->key() == Qt::Key_Shift || e->key() == Qt::Key_Control || e->key() == Qt::Key_Alt || e->key() == Qt::Key_AltGr - || e->key() == Qt::Key_Context1 || e->key() == Qt::Key_Context2 || e->key() == Qt::Key_Context3 || e->key() == Qt::Key_Context4) + || e->key() == Qt::Key_Context1 || e->key() == Qt::Key_Context2 || e->key() == Qt::Key_Context3 + || e->key() == Qt::Key_Context4 || e->key() == Qt::Key_Meta) return; if (recording) { QKeySequence seq(e->modifiers() + e->key()); ui->keySeq->setText(seq.toString()); recording = false; - ui->recordButton->setText("Record"); + ui->recordButton->setText(tr("Record")); } } void HotkeyInputDialog::on_recordButton_clicked() { recording = !recording; - ui->recordButton->setText(recording ? "Stop recording" : "Record"); + ui->recordButton->setText(recording ? tr("Stop recording") : tr("Record")); + if (recording) + grabKeyboard(); + else + releaseKeyboard(); } diff --git a/hotkeyinputdialog.hpp b/src/hotkeyinputdialog.hpp similarity index 95% rename from hotkeyinputdialog.hpp rename to src/hotkeyinputdialog.hpp index 155aca4..f25b929 100644 --- a/hotkeyinputdialog.hpp +++ b/src/hotkeyinputdialog.hpp @@ -4,7 +4,7 @@ #include namespace Ui { -class HotkeyInputDialog; + class HotkeyInputDialog; } class HotkeyInputDialog : public QDialog { diff --git a/hotkeyinputdialog.ui b/src/hotkeyinputdialog.ui similarity index 97% rename from hotkeyinputdialog.ui rename to src/hotkeyinputdialog.ui index 859ec05..22a2c36 100644 --- a/hotkeyinputdialog.ui +++ b/src/hotkeyinputdialog.ui @@ -11,7 +11,7 @@ - Dialog + Dialog diff --git a/src/icon.qrc b/src/icon.qrc new file mode 100644 index 0000000..71966a8 --- /dev/null +++ b/src/icon.qrc @@ -0,0 +1,25 @@ + + + icons/icon.svg + icons/icon.png + icons/icon.ico + icons/pencil.png + icons/rectangle.png + icons/line.png + icons/text.png + icons/delete.png + icons/arrow.png + icons/settings.png + icons/fontsettings.png + icons/erase.png + icons/blur.png + icons/accept.png + icons/cancel.png + icons/crop.png + icons/circle.png + icons/highlighter.png + icons/infinity.png + icons/checked.png + icons/error.png + + diff --git a/src/icon.rc b/src/icon.rc new file mode 100644 index 0000000..2e42c32 --- /dev/null +++ b/src/icon.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "icons/icon.ico" diff --git a/src/icons/KShare.png b/src/icons/KShare.png new file mode 100644 index 0000000..8667c3f Binary files /dev/null and b/src/icons/KShare.png differ diff --git a/src/icons/NOTICE.md b/src/icons/NOTICE.md new file mode 100644 index 0000000..5556507 --- /dev/null +++ b/src/icons/NOTICE.md @@ -0,0 +1,11 @@ +The following icons are from [iconmonstr](https://iconmonstr.com/): + +* [pencil.svg](https://iconmonstr.com/pencil-9/) +* [rectangle.svg](https://iconmonstr.com/square-4/) +* [circle.svg](https://iconmonstr.com/circle-2/) +* [arrow.svg](https://iconmonstr.com/arrow-19/) +* [delete.svg](https://iconmonstr.com/x-mark-12/) +* [settings.svg](https://iconmonstr.com/gear-1/) +* [erase.svg](https://iconmonstr.com/x-mark-4/) +* [accept.svg](https://iconmonstr.com/checkbox-21/) +* [cancel.svg](https://iconmonstr.com/x-mark-8/) diff --git a/src/icons/accept.png b/src/icons/accept.png new file mode 100644 index 0000000..13edeba Binary files /dev/null and b/src/icons/accept.png differ diff --git a/src/icons/accept.svg b/src/icons/accept.svg new file mode 100644 index 0000000..b209b7b --- /dev/null +++ b/src/icons/accept.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/arrow.png b/src/icons/arrow.png new file mode 100644 index 0000000..8407380 Binary files /dev/null and b/src/icons/arrow.png differ diff --git a/src/icons/arrow.svg b/src/icons/arrow.svg new file mode 100644 index 0000000..3c73d35 --- /dev/null +++ b/src/icons/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/blur.png b/src/icons/blur.png new file mode 100644 index 0000000..bcc1aa1 Binary files /dev/null and b/src/icons/blur.png differ diff --git a/src/icons/blur.svg b/src/icons/blur.svg new file mode 100644 index 0000000..9eae77a --- /dev/null +++ b/src/icons/blur.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/cancel.png b/src/icons/cancel.png new file mode 100644 index 0000000..2288739 Binary files /dev/null and b/src/icons/cancel.png differ diff --git a/src/icons/cancel.svg b/src/icons/cancel.svg new file mode 100644 index 0000000..8a69429 --- /dev/null +++ b/src/icons/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/checked.png b/src/icons/checked.png new file mode 100644 index 0000000..44e0f80 Binary files /dev/null and b/src/icons/checked.png differ diff --git a/src/icons/circle.png b/src/icons/circle.png new file mode 100644 index 0000000..460a0b7 Binary files /dev/null and b/src/icons/circle.png differ diff --git a/src/icons/circle.svg b/src/icons/circle.svg new file mode 100644 index 0000000..8868ede --- /dev/null +++ b/src/icons/circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/crop.png b/src/icons/crop.png new file mode 100644 index 0000000..9a08c61 Binary files /dev/null and b/src/icons/crop.png differ diff --git a/src/icons/crop.svg b/src/icons/crop.svg new file mode 100644 index 0000000..fb234b0 --- /dev/null +++ b/src/icons/crop.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/icons/delete.png b/src/icons/delete.png new file mode 100644 index 0000000..451d62d Binary files /dev/null and b/src/icons/delete.png differ diff --git a/src/icons/delete.svg b/src/icons/delete.svg new file mode 100644 index 0000000..dd335ca --- /dev/null +++ b/src/icons/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/erase.png b/src/icons/erase.png new file mode 100644 index 0000000..010b805 Binary files /dev/null and b/src/icons/erase.png differ diff --git a/src/icons/erase.svg b/src/icons/erase.svg new file mode 100644 index 0000000..8cc0a22 --- /dev/null +++ b/src/icons/erase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/error.png b/src/icons/error.png new file mode 100644 index 0000000..ebc3967 Binary files /dev/null and b/src/icons/error.png differ diff --git a/src/icons/fontsettings.png b/src/icons/fontsettings.png new file mode 100644 index 0000000..9681d64 Binary files /dev/null and b/src/icons/fontsettings.png differ diff --git a/src/icons/fontsettings.svg b/src/icons/fontsettings.svg new file mode 100644 index 0000000..bb9e5e4 --- /dev/null +++ b/src/icons/fontsettings.svg @@ -0,0 +1,70 @@ + + + + + + + + + + image/svg+xml + + + + + + + F + + diff --git a/src/icons/highlighter.png b/src/icons/highlighter.png new file mode 100644 index 0000000..e70d900 Binary files /dev/null and b/src/icons/highlighter.png differ diff --git a/src/icons/highlighter.svg b/src/icons/highlighter.svg new file mode 100644 index 0000000..1aded2b --- /dev/null +++ b/src/icons/highlighter.svg @@ -0,0 +1,58 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/icon.icns b/src/icons/icon.icns new file mode 100644 index 0000000..402501f Binary files /dev/null and b/src/icons/icon.icns differ diff --git a/icons/icon.ico b/src/icons/icon.ico similarity index 100% rename from icons/icon.ico rename to src/icons/icon.ico diff --git a/src/icons/icon.png b/src/icons/icon.png new file mode 100644 index 0000000..8667c3f Binary files /dev/null and b/src/icons/icon.png differ diff --git a/icons/icon.svg b/src/icons/icon.svg similarity index 100% rename from icons/icon.svg rename to src/icons/icon.svg diff --git a/src/icons/infinity.png b/src/icons/infinity.png new file mode 100644 index 0000000..a409750 Binary files /dev/null and b/src/icons/infinity.png differ diff --git a/src/icons/line.png b/src/icons/line.png new file mode 100644 index 0000000..f77ffc8 Binary files /dev/null and b/src/icons/line.png differ diff --git a/src/icons/line.svg b/src/icons/line.svg new file mode 100644 index 0000000..f40ea3b --- /dev/null +++ b/src/icons/line.svg @@ -0,0 +1,63 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/pencil.png b/src/icons/pencil.png new file mode 100644 index 0000000..6d13c2a Binary files /dev/null and b/src/icons/pencil.png differ diff --git a/src/icons/pencil.svg b/src/icons/pencil.svg new file mode 100644 index 0000000..e9c292c --- /dev/null +++ b/src/icons/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/rectangle.png b/src/icons/rectangle.png new file mode 100644 index 0000000..e724024 Binary files /dev/null and b/src/icons/rectangle.png differ diff --git a/src/icons/rectangle.svg b/src/icons/rectangle.svg new file mode 100644 index 0000000..2e739ff --- /dev/null +++ b/src/icons/rectangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/settings.png b/src/icons/settings.png new file mode 100644 index 0000000..55e8173 Binary files /dev/null and b/src/icons/settings.png differ diff --git a/src/icons/settings.svg b/src/icons/settings.svg new file mode 100644 index 0000000..9a64fbd --- /dev/null +++ b/src/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/text.png b/src/icons/text.png new file mode 100644 index 0000000..713010f Binary files /dev/null and b/src/icons/text.png differ diff --git a/src/icons/text.svg b/src/icons/text.svg new file mode 100644 index 0000000..91db3b5 --- /dev/null +++ b/src/icons/text.svg @@ -0,0 +1,70 @@ + + + + + + + + + + image/svg+xml + + + + + + + A + + diff --git a/io/ioutils.cpp b/src/io/ioutils.cpp similarity index 62% rename from io/ioutils.cpp rename to src/io/ioutils.cpp index 2d190e6..4502671 100644 --- a/io/ioutils.cpp +++ b/src/io/ioutils.cpp @@ -3,19 +3,45 @@ #include #include #include +#include +#include +#include QNetworkAccessManager ioutils::networkManager; +void ioutils::addLogEntry(QNetworkReply* reply, QByteArray data, QString result, ScreenshotFile sf) { + requestlogging::RequestContext ctx; + + ctx.reply = reply; + ctx.response = data; + ctx.result = result; + ctx.screenshotFile = sf; + + requestlogging::addEntry(ctx); +} + +int tasks = 0; + +void addTask() { + requestlogging::indicator::show(++tasks); +} + +void removeTask() { + requestlogging::indicator::show(--tasks); +} + void ioutils::postMultipart(QUrl target, QList> headers, QHttpMultiPart *body, std::function callback) { QNetworkRequest req(target); for (auto header : headers) { - req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); + if (header.first.toLower() != "content-type") req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); } QNetworkReply *reply = networkManager.post(req, body); + addTask(); QObject::connect(reply, &QNetworkReply::finished, [reply, callback] { + removeTask(); QByteArray data = reply->readAll(); callback(QJsonDocument::fromJson(data), data, reply); delete reply; @@ -28,11 +54,14 @@ void ioutils::postMultipartData(QUrl target, std::function callback) { QNetworkRequest req(target); for (auto header : headers) { - req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); + if (header.first.toLower() != "content-type") req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); } QNetworkReply *reply = networkManager.post(req, body); + addTask(); QObject::connect(reply, &QNetworkReply::finished, [reply, callback] { - callback(reply->readAll(), reply); + removeTask(); + QByteArray data = reply->readAll(); + callback(data, reply); delete reply; }); } @@ -45,7 +74,9 @@ void ioutils::getJson(QUrl target, req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); } QNetworkReply *reply = networkManager.get(req); + addTask(); QObject::connect(reply, &QNetworkReply::finished, [reply, callback] { + removeTask(); QByteArray data = reply->readAll(); callback(QJsonDocument::fromJson(data), data, reply); reply->deleteLater(); @@ -61,7 +92,9 @@ void ioutils::postJson(QUrl target, req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); } QNetworkReply *reply = networkManager.post(req, body); + addTask(); QObject::connect(reply, &QNetworkReply::finished, [reply, callback] { + removeTask(); QByteArray data = reply->readAll(); callback(QJsonDocument::fromJson(data), data, reply); delete reply; @@ -74,8 +107,11 @@ void ioutils::getData(QUrl target, QList> headers, std:: req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); } QNetworkReply *reply = networkManager.get(req); + addTask(); QObject::connect(reply, &QNetworkReply::finished, [reply, callback] { - callback(reply->readAll(), reply); + removeTask(); + QByteArray data = reply->readAll(); + callback(data, reply); delete reply; }); } @@ -89,8 +125,44 @@ void ioutils::postData(QUrl target, req.setRawHeader(header.first.toUtf8(), header.second.toUtf8()); } QNetworkReply *reply = networkManager.post(req, body); + addTask(); QObject::connect(reply, &QNetworkReply::finished, [reply, callback] { - callback(reply->readAll(), reply); + removeTask(); + QByteArray data = reply->readAll(); + callback(data, reply); delete reply; }); } + + +QString ioutils::methodString(QNetworkAccessManager::Operation operation) { + switch (operation) { + case QNetworkAccessManager::GetOperation: + return "GET"; + case QNetworkAccessManager::PostOperation: + return "POST"; + case QNetworkAccessManager::PutOperation: + return "PUT"; + case QNetworkAccessManager::DeleteOperation: + return "DELETE"; + case QNetworkAccessManager::HeadOperation: + return "HEAD"; + default: + return "Unknown"; + } +} + +QString ioutils::httpString(int responseCode) { + switch (responseCode) { + case 200: + return "OK"; + case 201: + return "CREATED"; + case 500: + return "Internal Server Error"; + case 503: + return "Service Unavailable"; + default: + return "Unknown"; + } +} diff --git a/src/io/ioutils.hpp b/src/io/ioutils.hpp new file mode 100644 index 0000000..bb36dc1 --- /dev/null +++ b/src/io/ioutils.hpp @@ -0,0 +1,35 @@ +#ifndef IOUTILS_HPP +#define IOUTILS_HPP + +#include +#include +#include +#include +#include +#include + +namespace ioutils { + extern QNetworkAccessManager networkManager; + void addLogEntry(QNetworkReply* reply, QByteArray data, QString result, ScreenshotFile sf); + void getJson(QUrl target, + QList> headers, + std::function callback); + void postJson(QUrl target, + QList> headers, + QByteArray body, + std::function callback); + void getData(QUrl target, QList> headers, std::function callback); + void postData(QUrl target, QList> headers, QByteArray body, std::function callback); + void postMultipart(QUrl target, + QList> headers, + QHttpMultiPart *body, + std::function callback); + void postMultipartData(QUrl target, + QList> headers, + QHttpMultiPart *body, + std::function callback); + QString methodString(QNetworkAccessManager::Operation operation); + QString httpString(int responseCode); +} // namespace ioutils + +#endif // IOUTILS_HPP diff --git a/src/logger.cpp b/src/logger.cpp new file mode 100644 index 0000000..8a79337 --- /dev/null +++ b/src/logger.cpp @@ -0,0 +1,48 @@ +#include "logger.hpp" +#include "mainwindow.hpp" +#include "notifications.hpp" +#include +#include +#include +#include + +void logger::info(QString info) { + qInfo() << info; + if (MainWindow::inst() && MainWindow::inst()->valid()) { + MainWindow::inst()->ui->logBox->addItem(info); + notifications::notifyNolog(QObject::tr("KShare Message"), info, QSystemTrayIcon::Information); + } +} + +void logger::warn(QString info) { + qWarning() << info; + if (MainWindow::inst() && MainWindow::inst()->valid()) { + MainWindow::inst()->ui->logBox->addItem(info); + notifications::notifyNolog(QObject::tr("KShare Warning"), info, QSystemTrayIcon::Warning); + } +} + +void logger::error(QString info) { + std::cerr << "ERROR: " << info.toStdString(); + if (MainWindow::inst() && MainWindow::inst()->valid()) { + MainWindow::inst()->ui->logBox->addItem(info); + notifications::notifyNolog(QObject::tr("KShare Error"), info, QSystemTrayIcon::Critical); + } +} + +void logger::fatal(QString info) { + std::cerr << "FATAL: " << info.toStdString(); + if (MainWindow::inst() && MainWindow::inst()->valid()) { + MainWindow::inst()->ui->logBox->addItem(info); + notifications::notifyNolog(QObject::tr("KShare Fatal Error"), info, QSystemTrayIcon::Critical); + } +} + +void logger::abort(QString info) { + std::cerr << "ABORT:" << info.toStdString(); + if (MainWindow::inst() && MainWindow::inst()->valid()) { + MainWindow::inst()->ui->logBox->addItem(info); + notifications::notifyNolog(QObject::tr("KShare Even More Fatal Error"), info, QSystemTrayIcon::Critical); + } + ::abort(); +} diff --git a/src/logger.hpp b/src/logger.hpp new file mode 100644 index 0000000..3e240ca --- /dev/null +++ b/src/logger.hpp @@ -0,0 +1,14 @@ +#ifndef LOGGER_HPP +#define LOGGER_HPP + +#include + +namespace logger { + void info(QString info); // Something went okay, notify user about it + void warn(QString info); // Something that does not interrupt execution, but could be improved + void error(QString info); // Oh no - it errored, but is recoverable, and still important enough to notify + void fatal(QString info); // Unrecoverable error, procedure aborts and notifies the user + void abort(QString info); // tell the user that it gonna ded +} // namespace logger + +#endif /* LOGGER_HPP */ diff --git a/src/logs/requestlogging.cpp b/src/logs/requestlogging.cpp new file mode 100644 index 0000000..11ce363 --- /dev/null +++ b/src/logs/requestlogging.cpp @@ -0,0 +1,107 @@ +#include "requestlogging.hpp" +#include +#include +#include +#include +#include + +#include "mainwindow.hpp" + +// $type $url $status $time +// $type = GET POST PATCH DELETE etc +// $url = request target +// $status = response code +// $time = time of request, file name for response: $SETTINGS_DIR/responses/$time + +QDir responses(settings::dir().absoluteFilePath("responses")); +QString requestPath = settings::dir().absoluteFilePath("history"); + + +void requestlogging::addEntry(RequestContext context) { + if (!responses.exists()) responses.mkpath("."); + QString timeNow = QDateTime::currentDateTime().toUTC().toString("yyyy-MM-dd HH-mm-ss-zzz"); + QFile responseFile(responses.absoluteFilePath(timeNow)); + QFile requestFile(requestPath); + + if (!responseFile.open(QIODevice::WriteOnly)) { + qCritical().noquote() << "Could not save response! " + responseFile.errorString(); + return; + } + + if (!requestFile.open(QIODevice::Append)) { + qCritical().noquote() << "Could not append request! " + responseFile.errorString(); + return; + } + + for (auto header : context.reply->rawHeaderList()) + responseFile.write(header + ": " + context.reply->rawHeader(header) + "\n"); + responseFile.write("\n\n" + context.response); + responseFile.close(); + + ScreenshotFile sf = context.screenshotFile; + + QTextStream(&requestFile) << ioutils::methodString(context.reply->operation()) << " " // $type + << context.reply->url().toString().replace(" ", "%20") << " " // $url + << context.result.replace(" ", "%20") << " " // $result + << sf.getSubfolder().replace(" ", "_") << " " // $subfolder + << sf.getFilename().replace(" ", "_") << " " // $filename + << context.reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() << " " // $status + << timeNow.replace(" ", "_") << endl + << flush; // $time + requestFile.close(); + + MainWindow::inst()->addResponse( + context.reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), + sf, + context.result, + context.reply->url().toString(), + timeNow.replace("_", " ")); +} + +using requestlogging::LoggedRequest; + +QList requestlogging::getRequests() { + QList ret; + + QFile requestFile(requestPath); + if (!requestFile.exists() || !requestFile.open(QIODevice::ReadOnly)) return ret; + QByteArray line; + + requestFile.seek(requestFile.size()); + long int pos = requestFile.pos(); + int count = 0; + + while(pos) { + requestFile.seek(--pos); + QString s = requestFile.read(1); + if(s == '\n') { + if(count++ == 8) break; + } + } + + while ((line = requestFile.readLine()).size() != 0) { + LoggedRequest r; + QTextStream stream(&line); + ScreenshotFile sf; + stream >> r.type; + stream >> r.url; + stream >> r.result; + stream >> sf.subfolder; + stream >> sf.filename; + stream >> r.responseCode; + stream >> r.time; + r.time = r.time.replace("_", " "); + sf.subfolder = sf.subfolder.replace("_", " "); + sf.filename = sf.filename.replace("_", " "); + r.screenshotFile = sf; + ret.append(r); + } + + requestFile.close(); + + return ret; +} + +void requestlogging::indicator::show(int count) { + MainWindow::inst()->setTrayIcon(utils::getTrayIcon(count)); +} diff --git a/src/logs/requestlogging.hpp b/src/logs/requestlogging.hpp new file mode 100644 index 0000000..8728685 --- /dev/null +++ b/src/logs/requestlogging.hpp @@ -0,0 +1,61 @@ +#ifndef REQUESTLOGGING_HPP +#define REQUESTLOGGING_HPP + +#include +#include +#include +#include +#include + +namespace requestlogging { + struct RequestContext { + QByteArray response; + QNetworkReply *reply; + ScreenshotFile screenshotFile; + QString result; + }; + + class LoggedRequest { + friend QList getRequests(); + + public: + QString getUrl() { + return url; + } + ScreenshotFile getScreenshotFile() { + return screenshotFile; + } + QString getType() { + return type; + } + QString getResult() { + return result; + } + QString getTime() { + return time; + } + int getResponseCode() { + return responseCode; + } + QByteArray getResponse() { + return QFile(settings::dir().absoluteFilePath("responses/" + time)).readAll(); + } + + private: + QString url; + ScreenshotFile screenshotFile; + QString result; + QString type; + QString time; + int responseCode; + }; + + QList getRequests(); + void addEntry(RequestContext context); + + namespace indicator { + void show(int count); + } // namespace indicator +} // namespace requestlogging + +#endif // REQUESTLOGGING_HPP diff --git a/src/logs/screenshotfile.h b/src/logs/screenshotfile.h new file mode 100644 index 0000000..dea2aeb --- /dev/null +++ b/src/logs/screenshotfile.h @@ -0,0 +1,26 @@ +#ifndef SCREENSHOTFILE_H +#define SCREENSHOTFILE_H + +#include +#include +#include +#include +#include + + +class ScreenshotFile { + + public: + QString getSubfolder() { + return subfolder; + } + QString getFilename() { + return filename; + } + + QString subfolder; + QString filename; +}; + + +#endif // SCREENSHOTFILE_H diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..ceeb67f --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,167 @@ +#include "mainwindow.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +extern "C" { +#include +#include +} +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool verbose = false; + +// I've experiments to run +// There is research to be done +// On the people who are +// still alive +bool stillAlive = true; + +#define LOGACT(lvl) std::cout << lvl << stdMsg << "\n" << std::flush; +void handler(QtMsgType type, const QMessageLogContext &, const QString &msg) { + if (!verbose && msg.startsWith("QPixmap::fromWinHBITMAP")) return; + std::string stdMsg = msg.toStdString(); + switch (type) { + case QtDebugMsg: + if (verbose) { + LOGACT("DEBUG: ") + } + break; + case QtInfoMsg: + LOGACT("INFO: ") + break; + case QtWarningMsg: + LOGACT("WARN: ") + break; + case QtCriticalMsg: + LOGACT("CRIT: ") + break; + case QtFatalMsg: + LOGACT("FATAL: ") + break; + } +} + +void loadTranslation(QString locale) { + QFile resource(":/translations/" + locale + ".qm"); + if (!resource.exists()) return; + resource.open(QIODevice::ReadOnly); + + QTranslator *translator = new QTranslator; + QByteArray file = resource.readAll(); + QByteArray *permFile = new QByteArray; + permFile->swap(file); + translator->load((const unsigned char *)permFile->constData(), permFile->size()); + QApplication::installTranslator(translator); +} + +int main(int argc, char *argv[]) { + av_register_all(); + qInstallMessageHandler(handler); + QApplication a(argc, argv); + a.setQuitOnLastWindowClosed(false); + a.setApplicationName("KShare"); + a.setOrganizationName("ArsenArsen"); + a.setApplicationVersion("5.0.0"); + + QString locale = QLocale::system().name(); + if (locale != "en_US") loadTranslation(locale); + + int theme = settings::settings().value("theme", 0).toInt(); + + if(theme == 0) { + // System Default +#ifdef Q_OS_WIN + QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize",QSettings::NativeFormat); + if(settings.value("AppsUseLightTheme")==0){ + qApp->setStyle(QStyleFactory::create("Fusion")); + QPalette darkPalette; + QColor darkColor = QColor(45,45,45); + QColor disabledColor = QColor(127,127,127); + darkPalette.setColor(QPalette::Window, darkColor); + darkPalette.setColor(QPalette::WindowText, Qt::white); + darkPalette.setColor(QPalette::Base, QColor(18,18,18)); + darkPalette.setColor(QPalette::AlternateBase, darkColor); + darkPalette.setColor(QPalette::ToolTipBase, Qt::white); + darkPalette.setColor(QPalette::ToolTipText, Qt::white); + darkPalette.setColor(QPalette::Text, Qt::white); + darkPalette.setColor(QPalette::Disabled, QPalette::Text, disabledColor); + darkPalette.setColor(QPalette::Button, darkColor); + darkPalette.setColor(QPalette::ButtonText, Qt::white); + darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, disabledColor); + darkPalette.setColor(QPalette::BrightText, Qt::red); + darkPalette.setColor(QPalette::Link, QColor(42, 130, 218)); + + darkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); + darkPalette.setColor(QPalette::HighlightedText, Qt::black); + darkPalette.setColor(QPalette::Disabled, QPalette::HighlightedText, disabledColor); + + qApp->setPalette(darkPalette); + + qApp->setStyleSheet("QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }"); + } +#endif + } else { + QString path = ""; + + if(theme == 1) { + // QDarkStyle + path = ":qdarkstyle/style.qss"; + } else if(theme == 2) { + // Breeze Light + path = ":/light.qss"; + } else if(theme == 3) { + // Breeze Dark + path = ":/dark.qss"; + } + + QFile f(path); + if (!f.exists()) + { + printf("Unable to set stylesheet, file not found\n"); + } + else + { + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + qApp->setStyleSheet(ts.readAll()); + } + } + + QCommandLineParser parser; + parser.addHelpOption(); + + QCommandLineOption h({ "b", "background" }, "Does not show the main window, starts in tray."); + QCommandLineOption v({ "v", "verbose" }, "Enables QtDebugMsg outputs"); + QCommandLineOption ver({ "ver", "version" }, "Prints KShare version"); + parser.addOption(h); + parser.addOption(v); + parser.addOption(ver); + parser.process(a); + + if (parser.isSet(ver)) { + printf("%s %s\n", a.applicationName().toLocal8Bit().constData(), a.applicationVersion().toLocal8Bit().constData()); + return 0; + } + + verbose = parser.isSet(v); + MainWindow w; + Worker::init(); + a.connect(&a, &QApplication::aboutToQuit, Worker::end); + a.connect(&a, &QApplication::aboutToQuit, [] { stillAlive = false; }); + + if (!parser.isSet(h)) w.show(); + return a.exec(); +} diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp new file mode 100644 index 0000000..ff902d2 --- /dev/null +++ b/src/mainwindow.cpp @@ -0,0 +1,344 @@ +#include "mainwindow.hpp" +#include "aboutbox.hpp" +#include "screenshotter.hpp" +#include "settingsdialog.hpp" +#include "ui_mainwindow.h" +#include "utils.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "io/ioutils.hpp" +#include +#include +#include +#include + +MainWindow *MainWindow::instance; +qint8 trayIconClicks = 0; +bool wasDoubleCLick = false; + +using requestlogging::LoggedRequest; + +void MainWindow::rec() { + if (controller->isRunning()) return; + auto f = static_cast( + settings::settings().value("recording/format", static_cast(formats::Recording::None)).toInt()); + if (f >= formats::Recording::None) { + logger::warn(tr("Recording format not set in settings. Aborting.")); + return; + } + RecordingContext *ctx = new RecordingContext; + RecordingFormats *format = new RecordingFormats(f); + ctx->consumer = format->getConsumer(); + ctx->finalizer = format->getFinalizer(); + ctx->validator = format->getValidator(); + ctx->format = format->getFormat(); + ctx->postUploadTask = format->getPostUploadTask(); + ctx->anotherFormat = format->getAnotherFormat(); + controller->start(ctx); +} + +#define ACTION(english, menu) \ + [&]() -> QAction * { \ + QAction *a = menu->addAction(english); \ + return a; \ + }() + +void addHotkey(QString name, std::function action) { + hotkeying::load(name, action); +} + +MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { + instance = this; + ui->setupUi(this); + setWindowIcon(QIcon(":/icons/icon.png")); + tray = new QSystemTrayIcon(windowIcon(), this); + tray->setToolTip("KShare"); + tray->setVisible(true); + menu = new QMenu(this); + QAction *shtoggle = ACTION(tr("Show/Hide"), menu); + QAction *fullscreen = ACTION(tr("Take fullscreen shot"), menu); + QAction *area = ACTION(tr("Take area shot"), menu); + +#ifdef PLATFORM_CAPABILITY_ACTIVEWINDOW + QAction *active = ACTION(tr("Screenshot active window"), menu); + connect(active, &QAction::triggered, this, [] { screenshotter::activeDelayed(); }); +#endif + QAction *copyClipboard = ACTION(tr("Copy from Clipbaord"), menu); + QAction *picker = ACTION(tr("Show color picker"), menu); + QAction *rec = ACTION(tr("Record screen"), menu); + QAction *recoff = ACTION(tr("Stop recording"), menu); + QAction *recabort = ACTION(tr("Abort recording"), menu); + menu->addActions({ shtoggle, picker }); + menu->addSeparator(); + menu->addActions({ fullscreen, area, copyClipboard }); +#ifdef PLATFORM_CAPABILITY_ACTIVEWINDOW + menu->addAction(active); +#endif + menu->addSeparator(); + menu->addActions({ rec, recoff, recabort }); + + QAction *quit = ACTION(tr("Quit"), menu); + QAction *about = ACTION(tr("About"), menu); + menu->addSeparator(); + menu->addActions({ about, quit }); + + connect(quit, &QAction::triggered, this, &MainWindow::quit); + connect(shtoggle, &QAction::triggered, this, &MainWindow::toggleVisible); + connect(picker, &QAction::triggered, [] { ColorPickerScene::showPicker(); }); + connect(tray, &QSystemTrayIcon::messageClicked, this, &QWidget::show); + + connect(tray, &QSystemTrayIcon::activated, this, [this](QSystemTrayIcon::ActivationReason reason) { + if (reason == QSystemTrayIcon::MiddleClick) { + screenshotter::fullscreenDelayed(); + return; + } + + + if (reason == QSystemTrayIcon::DoubleClick) { + wasDoubleCLick = true; + toggleVisible(); + return; + } + + if (reason != QSystemTrayIcon::Trigger) return; + + trayIconClicks++; + if (trayIconClicks == 1) { + QTimer::singleShot(QApplication::doubleClickInterval(), [this] { + if(wasDoubleCLick) { + wasDoubleCLick = false; + trayIconClicks = 0; + return; + } + if(trayIconClicks == 1) { + // Single Click + screenshotter::areaDelayed(); + } else { + // Double Click + toggleVisible(); + } + trayIconClicks = 0; + }); + } + }); + connect(fullscreen, &QAction::triggered, this, [] { screenshotter::fullscreenDelayed(); }); + connect(area, &QAction::triggered, this, [] { screenshotter::areaDelayed(); }); + connect(copyClipboard, &QAction::triggered, this, &clipboardcopy::copyClipboard); + connect(rec, &QAction::triggered, this, &MainWindow::rec); + connect(recoff, &QAction::triggered, controller, &RecordingController::end); + connect(recabort, &QAction::triggered, controller, &RecordingController::abort); + connect(about, &QAction::triggered, this, &MainWindow::on_actionAbout_triggered); + + connect(ui->settingsButton, &QPushButton::clicked, this, &MainWindow::on_actionSettings_triggered); + connect(ui->fullscreenButton, &QPushButton::clicked, this, [] { screenshotter::fullscreenDelayed(); }); + connect(ui->areaButton, &QPushButton::clicked, this, [] { screenshotter::areaDelayed(); }); + connect(ui->aboutButton, &QPushButton::clicked, this, &MainWindow::on_actionAbout_triggered); + connect(ui->screenshotFolderButton, &QPushButton::clicked, this, &MainWindow::openScreenshotFolder); + connect(ui->clipboardButton, &QPushButton::clicked, this, &clipboardcopy::copyClipboard); + connect(ui->colorPickerButton, &QPushButton::clicked, this, [] { ColorPickerScene::showPicker(); }); + + ui->treeWidget->addAction(ui->actionOpenURL); + ui->treeWidget->addAction(ui->actionOpenLocalFile); + ui->treeWidget->addAction(ui->actionOpenRequest); + ui->treeWidget->addAction(ui->actionCopyLinktoClipboard); + + ui->aboutButton->setFocus(); + + tray->setContextMenu(menu); + + addHotkey("fullscreen", [] { screenshotter::fullscreen(); }); + addHotkey("area", [] { screenshotter::area(); }); + addHotkey("active", [] { screenshotter::active(); }); + addHotkey("picker", [] { ColorPickerScene::showPicker(); }); + addHotkey("clipboard", [] { clipboardcopy::copyClipboard(); }); + addHotkey("recordingstop", [&] { controller->end(); }); + addHotkey("recordingabort", [&] { controller->abort(); }); + addHotkey("recordingstart", [&] { this->rec(); }); + + auto errors = UploaderSingleton::inst().errors(); + for (auto err : errors) ui->logBox->addItem(QString("ERROR: ") + err.what()); + setWindowTitle("KShare v" + QApplication::applicationVersion()); + val = true; + + QList requests = requestlogging::getRequests(); + for (LoggedRequest req : requests) { + addResponse(req.getResponseCode(), req.getScreenshotFile(), req.getResult(), req.getUrl(), req.getTime()); + } +} + +MainWindow::~MainWindow() { + delete ui; +} + +bool MainWindow::valid() { + return val; +} + +MainWindow *MainWindow::inst() { + return instance; +} + +void MainWindow::closeEvent(QCloseEvent *event) { + if (settings::settings().value("hideOnClose", true).toBool()) { + event->ignore(); + hide(); + } else + QApplication::exit(0); +} + +void MainWindow::quit() { + QApplication::quit(); +} + +void MainWindow::toggleVisible() { + this->setVisible(!this->isVisible()); + if (this->isVisible()) { + this->raise(); // that didn't work + this->setWindowState(Qt::WindowActive); // maybe that works + this->activateWindow(); // maybe that works + } +} + +void MainWindow::on_actionQuit_triggered() { + quit(); +} + +void MainWindow::on_actionStart_triggered() { + rec(); +} + +void MainWindow::on_actionStop_triggered() { + controller->end(); +} + +void MainWindow::on_actionSettings_triggered() { + SettingsDialog *dialog = new SettingsDialog(this); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->show(); +} + +void MainWindow::on_actionAbout_triggered() { + AboutBox *box = new AboutBox(this); + box->setAttribute(Qt::WA_DeleteOnClose); + box->show(); +} + +void MainWindow::on_actionAbort_triggered() { + controller->abort(); +} + +void MainWindow::on_actionOpenRequest_triggered() { + QString file = ui->treeWidget->currentItem()->text(4); + file = settings::dir().absoluteFilePath("responses/" + file.left(file.length() - 4)); + + QFile dataFile(file); + if (!dataFile.open(QIODevice::ReadOnly)) { + logger::info(file); + logger::error(dataFile.errorString()); + return; + } + MonospaceTextDialog *dialog = new MonospaceTextDialog(file, dataFile.readAll()); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->show(); +} + +void MainWindow::on_actionOpenURL_triggered() { + QDesktopServices::openUrl(QUrl(ui->treeWidget->currentItem()->text(2))); +} + +void MainWindow::on_actionOpenLocalFile_triggered() { + // TODO: Cleanup code, because this switch function is used 3 times + QString file = ui->treeWidget->currentItem()->text(1); + QDir saveDir; + switch (settings::settings().value("saveLocation", 1).toInt()) { + case 0: + saveDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); + if (QStandardPaths::writableLocation(QStandardPaths::PicturesLocation).isEmpty()) { + qFatal("%s", tr("Cannot determine location for pictures").toLocal8Bit().constData()); + } + break; + case 1: + if (QStandardPaths::writableLocation(QStandardPaths::HomeLocation).isEmpty()) { + qFatal("%s", tr("Cannot determine location of your home directory").toLocal8Bit().constData()); + } + saveDir = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Screenshots"; + break; + default: + qFatal("%s", tr("Invalid config [saveLocation not int or is not in range]").toLocal8Bit().constData()); + return; + case 2: + // Do not Save images + return; + } + + QDesktopServices::openUrl(QUrl::fromLocalFile(saveDir.absoluteFilePath(file))); +} + +void MainWindow::on_actionCopyLinktoClipboard_triggered() { + QApplication::clipboard()->setText(ui->treeWidget->currentItem()->text(2)); +} + +void MainWindow::on_treeWidget_doubleClicked(const QModelIndex &) { + on_actionOpenURL_triggered(); +} + +void MainWindow::openScreenshotFolder() { + QDir saveDir; + switch (settings::settings().value("saveLocation", 1).toInt()) { + case 0: + saveDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); + if (QStandardPaths::writableLocation(QStandardPaths::PicturesLocation).isEmpty()) { + qFatal("%s", tr("Cannot determine location for pictures").toLocal8Bit().constData()); + } + break; + case 1: + if (QStandardPaths::writableLocation(QStandardPaths::HomeLocation).isEmpty()) { + qFatal("%s", tr("Cannot determine location of your home directory").toLocal8Bit().constData()); + } + saveDir = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Screenshots"; + break; + default: + qFatal("%s", tr("Invalid config [saveLocation not int or is not in range]").toLocal8Bit().constData()); + return; + case 2: + // Do not Save images + return; + } + + QDesktopServices::openUrl(QUrl::fromLocalFile(saveDir.absolutePath())); +} + +void MainWindow::setTrayIcon(QIcon icon) { + tray->setIcon(icon); +} + +void MainWindow::addResponse(int httpCode, ScreenshotFile sf, QString result, QString url, QString time) { + QString httpStatus = ioutils::httpString(httpCode); + QTreeWidgetItem* tw = new QTreeWidgetItem({ QString::number(httpCode) + " " + httpStatus, sf.getSubfolder() + QDir::separator() + sf.getFilename(), result, url, time + " UTC" }); + + if(httpCode >= 200 && httpCode < 300) { + tw->setIcon(0, *(new QIcon(":/icons/checked.png"))); + } else { + tw->setIcon(0, *(new QIcon(":/icons/error.png"))); + } + + ui->treeWidget->insertTopLevelItem(0, tw); +} diff --git a/mainwindow.hpp b/src/mainwindow.hpp similarity index 62% rename from mainwindow.hpp rename to src/mainwindow.hpp index 4eb3b53..3b3d5a2 100644 --- a/mainwindow.hpp +++ b/src/mainwindow.hpp @@ -9,9 +9,10 @@ #include #include +#include namespace Ui { -class MainWindow; + class MainWindow; } class MainWindow : public QMainWindow { @@ -21,34 +22,39 @@ private slots: void toggleVisible(); void on_actionQuit_triggered(); - void on_actionFullscreen_triggered(); - void on_actionArea_triggered(); void on_actionStart_triggered(); void on_actionStop_triggered(); void on_actionSettings_triggered(); - void on_actionColor_Picker_triggered(); void on_actionAbout_triggered(); - - void on_actionActive_window_triggered(); + void on_actionAbort_triggered(); + void on_actionOpenRequest_triggered(); + void on_actionOpenURL_triggered(); + void on_actionOpenLocalFile_triggered(); + void on_actionCopyLinktoClipboard_triggered(); + void openScreenshotFolder(); + void on_treeWidget_doubleClicked(const QModelIndex &); public: static MainWindow *inst(); explicit MainWindow(QWidget *parent = 0); ~MainWindow(); bool valid(); - Ui::MainWindow *ui; + void setTrayIcon(QIcon icon); + void addResponse(int httpCode, ScreenshotFile sf, QString result, QString url, QString time); RecordingController *controller = new RecordingController; QSystemTrayIcon *tray; + Ui::MainWindow *ui; public slots: void rec(); private: bool val = false; + QMenu *menu; static MainWindow *instance; protected: - void closeEvent(QCloseEvent *event); + void closeEvent(QCloseEvent *event) override; }; #endif // MAINWINDOW_HPP diff --git a/src/mainwindow.ui b/src/mainwindow.ui new file mode 100644 index 0000000..cfd1eff --- /dev/null +++ b/src/mainwindow.ui @@ -0,0 +1,289 @@ + + + MainWindow + + + + 0 + 0 + 931 + 386 + + + + + 12 + + + + KShare + + + + :/icons/icon.svg:/icons/icon.svg + + + + + 0 + 0 + + + + + + + Qt::Vertical + + + + + + + + + Copy Clipboard + + + true + + + + + + + Settings + + + true + + + + + + + Area + + + true + + + + + + + Open color picker + + + true + + + + + + + About + + + false + + + false + + + true + + + + + + + Fullscreen + + + true + + + + + + + Open Screenshot Folder + + + true + + + + + + + + + 0 + + + + Request History + + + + + + Qt::ActionsContextMenu + + + 0 + + + true + + + false + + + false + + + + Status + + + + + Filename + + + + + URL + + + + + Request + + + + + Time + + + + + + + + + Log + + + + + + true + + + + 0 + 0 + + + + + + + + + + + + + + + 0 + 0 + 931 + 28 + + + + + Fi&le + + + + + + + + + &Recording + + + + + + + + + + + &Quit + + + Ctrl+Q + + + + + &Start + + + + + St&op + + + + + &Settings + + + + + &About + + + + + &Abort + + + + + Open URL + + + + + Open Local File + + + + + Open Request + + + + + Copy Link to Clipboard + + + + + + + + + diff --git a/src/monospacetextdialog.cpp b/src/monospacetextdialog.cpp new file mode 100644 index 0000000..7fefacf --- /dev/null +++ b/src/monospacetextdialog.cpp @@ -0,0 +1,13 @@ +#include "monospacetextdialog.hpp" +#include "ui_monospacetextdialog.h" + +MonospaceTextDialog::MonospaceTextDialog(QString name, QByteArray data, QWidget *parent) +: QDialog(parent), ui(new Ui::MonospaceTextDialog) { + ui->setupUi(this); + setWindowTitle(name); + ui->textEdit->setText(data); +} + +MonospaceTextDialog::~MonospaceTextDialog() { + delete ui; +} diff --git a/src/monospacetextdialog.hpp b/src/monospacetextdialog.hpp new file mode 100644 index 0000000..39012e0 --- /dev/null +++ b/src/monospacetextdialog.hpp @@ -0,0 +1,21 @@ +#ifndef MONOSPACETEXTDIALOG_H +#define MONOSPACETEXTDIALOG_H + +#include + +namespace Ui { + class MonospaceTextDialog; +} + +class MonospaceTextDialog : public QDialog { + Q_OBJECT + +public: + explicit MonospaceTextDialog(QString name, QByteArray data, QWidget *parent = 0); + ~MonospaceTextDialog(); + +private: + Ui::MonospaceTextDialog *ui; +}; + +#endif // MONOSPACETEXTDIALOG_H diff --git a/src/monospacetextdialog.ui b/src/monospacetextdialog.ui new file mode 100644 index 0000000..8749ed5 --- /dev/null +++ b/src/monospacetextdialog.ui @@ -0,0 +1,79 @@ + + + MonospaceTextDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + + true + + + + Monospace + + + + true + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + + buttonBox + accepted() + MonospaceTextDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + MonospaceTextDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/notifications.cpp b/src/notifications.cpp new file mode 100644 index 0000000..3106553 --- /dev/null +++ b/src/notifications.cpp @@ -0,0 +1,52 @@ +#include "notifications.hpp" + +#include "systemnotification.h" +#include "mainwindow.hpp" +#include "ui_mainwindow.h" +#include +#include + +void notifications::notify(QString title, QString body, QSystemTrayIcon::MessageIcon icon) { + if (!MainWindow::inst() || !MainWindow::inst()->valid()) return; + notifyNolog(title, body, icon); + MainWindow::inst()->ui->logBox->addItem(title + ": " + body); +} + +void notifications::notifyNolog(QString title, QString body, QSystemTrayIcon::MessageIcon icon) { + + if(icon == QSystemTrayIcon::Critical) { + QApplication::alert(MainWindow::inst()); + } + + SystemNotification().sendMessage(body, title, icon); + + MainWindow::inst()->statusBar()->showMessage(title + ": " + body); +} + +void notifications::playSound(notifications::Sound soundType) { + QMediaPlayer*mediaPlayer = new QMediaPlayer(MainWindow::inst()); + + switch (soundType) { + case notifications::Sound::CAPTURE: + mediaPlayer->setMedia(QUrl("qrc:/capturesound.wav")); + break; + + case notifications::Sound::SUCCESS: + mediaPlayer->setMedia(QUrl("qrc:/successsound.wav")); + break; + + case notifications::Sound::ERROR: + mediaPlayer->setMedia(QUrl("qrc:/errorsound.wav")); + break; + + default: + break; + } + + mediaPlayer->setVolume(25); + mediaPlayer->play(); + + if(mediaPlayer->error() != QMediaPlayer::NoError && mediaPlayer->error() != QMediaPlayer::ServiceMissingError) + notifications::notify(QString::number(mediaPlayer->error()), mediaPlayer->errorString(), QSystemTrayIcon::Warning); + +} diff --git a/src/notifications.hpp b/src/notifications.hpp new file mode 100644 index 0000000..9ff6930 --- /dev/null +++ b/src/notifications.hpp @@ -0,0 +1,14 @@ +#ifndef NOTIFICATIONS_HPP +#define NOTIFICATIONS_HPP + +#include +#include + +namespace notifications { + enum class Sound { ERROR = 0, SUCCESS = 1, CAPTURE = 2 }; + void notify(QString title, QString body, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information); + void notifyNolog(QString title, QString body, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information); + void playSound(notifications::Sound soundType); +} // namespace notifications + +#endif // NOTIFICATIONS_HPP diff --git a/platformbackend.hpp b/src/platformbackend.hpp similarity index 71% rename from platformbackend.hpp rename to src/platformbackend.hpp index 8133ebc..56c484a 100644 --- a/platformbackend.hpp +++ b/src/platformbackend.hpp @@ -1,13 +1,14 @@ #ifndef PLATFORMBACKEND_HPP #define PLATFORMBACKEND_HPP +#include -#ifdef __APPLE__ +#ifdef Q_OS_MACOS #include #endif -#ifdef _WIN32 +#ifdef Q_OS_WIN #include #endif -#ifdef __unix__ +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) #include #endif diff --git a/src/platformspecifics/mac/macbackend.cpp b/src/platformspecifics/mac/macbackend.cpp new file mode 100644 index 0000000..6940291 --- /dev/null +++ b/src/platformspecifics/mac/macbackend.cpp @@ -0,0 +1,33 @@ +#include "macbackend.hpp" + +#include +#include + +std::tuple PlatformBackend::getCursor() { +#warning "TODO: Mac backend" + return std::tuple(QPoint(0, 0), QPixmap()); + // Not Monday: https://developer.apple.com/reference/appkit/nscursor/1527062-image + // Some on how to do NSImage -> QPixmap: http://stackoverflow.com/a/2468961/3809164 + // This is gonna be easier than with Windows +} + +pid_t PlatformBackend::pid() { + return getpid(); +} + +bool PlatformBackend::filenameValid(QString name) { + return !name.contains('/'); +} + +QString PlatformBackend::getCurrentUser() { + auto pwent = getpwuid(getuid()); + if (!pwent) { + if (qEnvironmentVariableIsSet("USER")) + return QString::fromLocal8Bit(qgetenv("USER")); + else + return QString(); + } + QString ret = QString::fromLocal8Bit(pwent->pw_name); + endpwent(); + return ret; +} diff --git a/platformspecifics/mac/macbackend.hpp b/src/platformspecifics/mac/macbackend.hpp similarity index 64% rename from platformspecifics/mac/macbackend.hpp rename to src/platformspecifics/mac/macbackend.hpp index 4016511..c26dd0c 100644 --- a/platformspecifics/mac/macbackend.hpp +++ b/src/platformspecifics/mac/macbackend.hpp @@ -4,15 +4,18 @@ #include #define PLATFORM_CAPABILITY_PID +#define PLATFORM_CAPABILITY_CURRENT_USER class PlatformBackend { public: - QPixmap getCursor(); + std::tuple getCursor(); pid_t pid(); static PlatformBackend &inst() { static PlatformBackend inst; return inst; } + bool filenameValid(QString name); + QString getCurrentUser(); }; #endif // MACBACKEND_HPP diff --git a/platformspecifics/u32/u32backend.cpp b/src/platformspecifics/u32/u32backend.cpp similarity index 52% rename from platformspecifics/u32/u32backend.cpp rename to src/platformspecifics/u32/u32backend.cpp index 344ba68..9f5de0c 100644 --- a/platformspecifics/u32/u32backend.cpp +++ b/src/platformspecifics/u32/u32backend.cpp @@ -1,5 +1,6 @@ #include "u32backend.hpp" +#include #include #include #include @@ -28,3 +29,29 @@ DWORD PlatformBackend::pid() { WId PlatformBackend::getActiveWID() { return (WId)GetForegroundWindow(); } + +QString illegal(QStringLiteral("<>:\"/\\|?*")); +QStringList illegalNames({ "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", + "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }); + +bool PlatformBackend::filenameValid(QString name) { + int periods = 0; + for (QChar c : name) { + if (c == '.') periods++; + if (illegal.contains(c)) return false; + if (c < 32) return false; + } + if (periods == name.length()) return false; + return !illegalNames.contains(name); +} + +QString PlatformBackend::getCurrentUser() { + WCHAR username[UNLEN + 1]; + DWORD username_len = UNLEN + 1; + QString userName; + if (GetUserName(username, &username_len)) { + userName = QString::fromWCharArray(username, username_len - 1); + } + delete[] username; + return userName; +} diff --git a/platformspecifics/u32/u32backend.hpp b/src/platformspecifics/u32/u32backend.hpp similarity index 80% rename from platformspecifics/u32/u32backend.hpp rename to src/platformspecifics/u32/u32backend.hpp index 8cb9075..e1acaec 100644 --- a/platformspecifics/u32/u32backend.hpp +++ b/src/platformspecifics/u32/u32backend.hpp @@ -7,6 +7,7 @@ #define PLATFORM_CAPABILITY_PID #define PLATFORM_CAPABILITY_ACTIVEWINDOW #define PLATFORM_CAPABILITY_CURSOR +#define PLATFORM_CAPABILITY_CURRENT_USER class PlatformBackend { public: @@ -17,6 +18,8 @@ public: return inst; } WId getActiveWID(); + bool filenameValid(QString name); + QString getCurrentUser(); }; #endif // U32BACKEND_HPP diff --git a/platformspecifics/x11/x11backend.cpp b/src/platformspecifics/x11/x11backend.cpp similarity index 81% rename from platformspecifics/x11/x11backend.cpp rename to src/platformspecifics/x11/x11backend.cpp index 8bf841b..dc49485 100644 --- a/platformspecifics/x11/x11backend.cpp +++ b/src/platformspecifics/x11/x11backend.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -28,7 +29,6 @@ pid_t PlatformBackend::pid() { return getpid(); } - WId PlatformBackend::getActiveWID() { xcb_connection_t *connection = QX11Info::connection(); xcb_get_input_focus_reply_t *focusReply; @@ -54,3 +54,20 @@ WId PlatformBackend::getActiveWID() { delete treeReply; return window; } + +bool PlatformBackend::filenameValid(QString name) { + return !name.contains('/'); +} + +QString PlatformBackend::getCurrentUser() { + auto pwent = getpwuid(getuid()); + if (!pwent) { + if (qEnvironmentVariableIsSet("USER")) + return QString::fromLocal8Bit(qgetenv("USER")); + else + return QString(); + } + QString ret = QString::fromLocal8Bit(pwent->pw_name); + endpwent(); + return ret; +} diff --git a/platformspecifics/x11/x11backend.hpp b/src/platformspecifics/x11/x11backend.hpp similarity index 79% rename from platformspecifics/x11/x11backend.hpp rename to src/platformspecifics/x11/x11backend.hpp index fc1f1c5..71cbeec 100644 --- a/platformspecifics/x11/x11backend.hpp +++ b/src/platformspecifics/x11/x11backend.hpp @@ -6,6 +6,7 @@ #define PLATFORM_CAPABILITY_PID #define PLATFORM_CAPABILITY_ACTIVEWINDOW #define PLATFORM_CAPABILITY_CURSOR +#define PLATFORM_CAPABILITY_CURRENT_USER class PlatformBackend { public: @@ -16,6 +17,8 @@ public: return inst; } WId getActiveWID(); + bool filenameValid(QString name); + QString getCurrentUser(); }; #endif // X11BACKEND_HPP diff --git a/recording/encoders/encoder.cpp b/src/recording/encoders/encoder.cpp similarity index 100% rename from recording/encoders/encoder.cpp rename to src/recording/encoders/encoder.cpp diff --git a/recording/encoders/encoder.hpp b/src/recording/encoders/encoder.hpp similarity index 100% rename from recording/encoders/encoder.hpp rename to src/recording/encoders/encoder.hpp diff --git a/recording/encoders/encodersettings.cpp b/src/recording/encoders/encodersettings.cpp similarity index 100% rename from recording/encoders/encodersettings.cpp rename to src/recording/encoders/encodersettings.cpp diff --git a/recording/encoders/encodersettings.hpp b/src/recording/encoders/encodersettings.hpp similarity index 100% rename from recording/encoders/encodersettings.hpp rename to src/recording/encoders/encodersettings.hpp diff --git a/recording/encoders/encodersettingsdialog.cpp b/src/recording/encoders/encodersettingsdialog.cpp similarity index 95% rename from recording/encoders/encodersettingsdialog.cpp rename to src/recording/encoders/encodersettingsdialog.cpp index e182f8c..d70ba73 100644 --- a/recording/encoders/encodersettingsdialog.cpp +++ b/src/recording/encoders/encodersettingsdialog.cpp @@ -8,7 +8,7 @@ EncoderSettingsDialog::EncoderSettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::EncoderSettingsDialog) { ui->setupUi(this); - setWindowTitle("KShare Encoder Settings"); + setWindowTitle(tr("KShare Encoder Settings")); connect(ui->buttonBox, &QDialogButtonBox::accepted, [&] { EncoderSettings::inst().setbitrate(ui->bitrate->value()); EncoderSettings::inst().seth264Crf(ui->crf->value()); diff --git a/recording/encoders/encodersettingsdialog.hpp b/src/recording/encoders/encodersettingsdialog.hpp similarity index 92% rename from recording/encoders/encodersettingsdialog.hpp rename to src/recording/encoders/encodersettingsdialog.hpp index 0891c16..06f419c 100644 --- a/recording/encoders/encodersettingsdialog.hpp +++ b/src/recording/encoders/encodersettingsdialog.hpp @@ -4,7 +4,7 @@ #include namespace Ui { -class EncoderSettingsDialog; + class EncoderSettingsDialog; } class EncoderSettingsDialog : public QDialog { diff --git a/recording/encoders/encodersettingsdialog.ui b/src/recording/encoders/encodersettingsdialog.ui similarity index 83% rename from recording/encoders/encodersettingsdialog.ui rename to src/recording/encoders/encodersettingsdialog.ui index 0ba32c2..d161af7 100644 --- a/recording/encoders/encodersettingsdialog.ui +++ b/src/recording/encoders/encodersettingsdialog.ui @@ -11,9 +11,9 @@ - Dialog + Dialog - + @@ -38,6 +38,9 @@ <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Quality</span></a></p></body></html> + + true + @@ -62,14 +65,14 @@ - 0 + 2 Qt::LeftToRight - h264/h265 + h264/h265 @@ -77,64 +80,67 @@ <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Preset</span></a></p></body></html> + + true + - medium + ultrafast - 5 + 0 - ultrafast + ultrafast - superfast + superfast - veryfast + veryfast - faster + faster - fast + fast - medium + medium - slow + slow - slower + slower - veryslow + veryslow - placebo + placebo @@ -144,6 +150,9 @@ <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">CRF</span></a></p></body></html> + + true + @@ -160,9 +169,9 @@ - VP9 + VP9 - + @@ -174,14 +183,17 @@ - GIF + GIF - + TODO: Find whatever configuration GIF can have in ffmpeg's libav + + true + @@ -193,12 +205,15 @@ Bitrate + + true + - kbps + kbps 999999.000000000000000 @@ -216,6 +231,9 @@ GOP size + + true + diff --git a/recording/recordingcontroller.cpp b/src/recording/recordingcontroller.cpp similarity index 81% rename from recording/recordingcontroller.cpp rename to src/recording/recordingcontroller.cpp index 5320e70..56df9b9 100644 --- a/recording/recordingcontroller.cpp +++ b/src/recording/recordingcontroller.cpp @@ -5,10 +5,10 @@ #include #include #include -#include #include #include #include +#include #include RecordingController::RecordingController() : timer(this) { @@ -56,6 +56,30 @@ bool RecordingController::end() { return true; } +bool RecordingController::abort() { + emit ended(); + if (!isRunning()) return false; + area = QRect(); + if (preview) { + preview->close(); + preview->deleteLater(); + } + + preview = 0; + WorkerContext *c = new WorkerContext; + c->consumer = [&](QImage) { + _context->finalizer(); + _context->postUploadTask(); + }; + c->targetFormat = QImage::Format_Alpha8; + c->pixmap = QPixmap(0, 0); + Worker::queue(c); + + frame = 0; + time = 0; + return true; +} + void RecordingController::queue(_QueueContext arr) { QMutexLocker l(&lock); uploadQueue.enqueue(arr); @@ -78,8 +102,8 @@ void RecordingController::timeout() { time++; int localTime = time * timer.interval() - 3000; if (localTime > 0) { - QPixmap pp = screenshotutil::fullscreenArea(settings::settings().value("captureCursor", true).toBool(), - area.x(), area.y(), area.width(), area.height()); + QPixmap pp = utils::fullscreenArea(settings::settings().value("captureCursor", true).toBool(), area.x(), + area.y(), area.width(), area.height()); WorkerContext *context = new WorkerContext; context->consumer = _context->consumer; context->targetFormat = _context->format; diff --git a/recording/recordingcontroller.hpp b/src/recording/recordingcontroller.hpp similarity index 98% rename from recording/recordingcontroller.hpp rename to src/recording/recordingcontroller.hpp index 96044d5..e4792c3 100644 --- a/recording/recordingcontroller.hpp +++ b/src/recording/recordingcontroller.hpp @@ -38,6 +38,7 @@ public slots: // Returns false if not running bool end(); void queue(_QueueContext arr); + bool abort(); private slots: void timeout(); void startWithArea(QRect newArea); diff --git a/recording/recordingformats.cpp b/src/recording/recordingformats.cpp similarity index 63% rename from recording/recordingformats.cpp rename to src/recording/recordingformats.cpp index dfb5d37..ae8c217 100644 --- a/recording/recordingformats.cpp +++ b/src/recording/recordingformats.cpp @@ -2,12 +2,12 @@ #include #include -#include #include #include #include #include #include +#include #include #include #include @@ -17,24 +17,15 @@ #include RecordingFormats::RecordingFormats(formats::Recording f) { - QString tmp = QStandardPaths::writableLocation(QStandardPaths::TempLocation); - if (tmp.isEmpty()) { + if (!tmpDir.isValid()) { validator = [](QSize) { return false; }; + logger::fatal(tr("Could not create temporary directory. Error: ") + tmpDir.errorString()); return; } - tmpDir = QDir(tmp); - QString name - = QString("KShareTemp-") + QString::number(PlatformBackend::inst().pid()) + "-" + QTime::currentTime().toString(); - tmpDir.mkdir(name); - tmpDir.cd(name); iFormat = QImage::Format_RGB888; - path = tmpDir.absoluteFilePath("res." + formats::recordingFormatName(f).toLower()); + path = tmpDir.path() + "/res." + formats::recordingFormatName(f).toLower(); finalizer = [&] { delete enc; - if (interrupt || !frameAdded) { - tmpDir.removeRecursively(); - return QString(); - } return QFile(path).size() > 0 ? path : QString(); }; validator = [&](QSize s) { @@ -48,9 +39,7 @@ RecordingFormats::RecordingFormats(formats::Recording f) { return false; } } catch (std::runtime_error &e) { - // notifications::notify("KShare Video Encoder Error", e.what(), - // QSystemTrayIcon::Critical); - qCritical() << "Encoder error: " << e.what(); + logger::fatal(tr("Encoder error: ") + e.what()); interrupt = true; delete enc; return false; @@ -63,16 +52,11 @@ RecordingFormats::RecordingFormats(formats::Recording f) { frameAdded = true; enc->addFrame(img); } catch (std::runtime_error &e) { - // notifications::notify("KShare Video Encoder Error", e.what(), - // QSystemTrayIcon::Critical); - qCritical() << "Encoder error: " << e.what(); + logger::fatal(tr("Encoder error: ") + e.what()); interrupt = true; } }; - postUploadTask = [&] { - tmpDir.removeRecursively(); - QScopedPointer th(this); - }; + postUploadTask = [&] { QScopedPointer th(this); }; anotherFormat = formats::recordingFormatName(f); } diff --git a/recording/recordingformats.hpp b/src/recording/recordingformats.hpp similarity index 88% rename from recording/recordingformats.hpp rename to src/recording/recordingformats.hpp index ad5825d..1a75438 100644 --- a/recording/recordingformats.hpp +++ b/src/recording/recordingformats.hpp @@ -1,16 +1,19 @@ #ifndef RECORDINGFORMATS_HPP #define RECORDINGFORMATS_HPP +#include #include #include #include #include +#include #include #include #include class RecordingFormats { + Q_DECLARE_TR_FUNCTIONS(RecordingFormats) public: RecordingFormats(formats::Recording f); std::function getConsumer(); @@ -27,7 +30,7 @@ private: std::function postUploadTask; std::vector frames; QImage::Format iFormat; - QDir tmpDir; + QTemporaryDir tmpDir; QString path; Encoder *enc = NULL; bool interrupt = false; diff --git a/recording/recordingpreview.cpp b/src/recording/recordingpreview.cpp similarity index 87% rename from recording/recordingpreview.cpp rename to src/recording/recordingpreview.cpp index cab4563..3e31c41 100644 --- a/recording/recordingpreview.cpp +++ b/src/recording/recordingpreview.cpp @@ -1,13 +1,12 @@ #include "recordingpreview.hpp" #include -#include #include #include #include #include #include -QSize max(300, 300); +static QSize max(300, 300); inline bool sizeGreater(QSize one, QSize two) { return one.height() > two.height() || one.width() > two.width(); @@ -44,7 +43,7 @@ RecordingPreview::RecordingPreview(QRect area, QWidget *parent) : QWidget(parent label->setPixmap(empty); layout()->addWidget(hintLabel); layout()->addWidget(label); - hintLabel->setText(QString("Time: 00:00\nFrame: 0\nStop key: ") + hotkeying::sequence("recordingstop")); + hintLabel->setText(QString(tr("Time: 00:00\nFrame: 0\nStop key: ")) + hotkeying::sequence("recordingstop")); } RecordingPreview::~RecordingPreview() { @@ -58,6 +57,5 @@ void RecordingPreview::setPixmap(QPixmap map) { } void RecordingPreview::setTime(QString time, int frame) { if (isVisible()) - hintLabel->setText(QString("Time: ") + time + "\nFrame: " + QString::number(frame) - + "\nStop key: " + hotkeying::sequence("recordingstop")); + hintLabel->setText(tr("Time: %1\nFrame: %2\nStop key: %3").arg(time).arg(frame).arg(hotkeying::sequence("recordingstop"))); } diff --git a/recording/recordingpreview.hpp b/src/recording/recordingpreview.hpp similarity index 100% rename from recording/recordingpreview.hpp rename to src/recording/recordingpreview.hpp diff --git a/screenareaselector/screenareaselector.cpp b/src/screenareaselector/screenareaselector.cpp similarity index 72% rename from screenareaselector/screenareaselector.cpp rename to src/screenareaselector/screenareaselector.cpp index 4a731b5..b5376eb 100644 --- a/screenareaselector/screenareaselector.cpp +++ b/src/screenareaselector/screenareaselector.cpp @@ -6,12 +6,15 @@ #include #include +static QString hintPattern(ScreenAreaSelector::tr("Set the recording region by resizing this.\n%1x%2")); + ScreenAreaSelector::ScreenAreaSelector() { setAttribute(Qt::WA_TranslucentBackground); setAttribute(Qt::WA_DeleteOnClose); setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); setStyleSheet("background-color: rgba(0, 0, 0, 0.5);"); - setWindowTitle("KShare: Select Area (By resizing this window)"); + setWindowTitle(tr("KShare: Select Area (By resizing this window)")); + setAutoFillBackground(true); QTimer::singleShot(0, [&] { QVariant val = settings::settings().value("screenareaselector/rect"); if (val.canConvert()) { @@ -19,7 +22,7 @@ ScreenAreaSelector::ScreenAreaSelector() { resize(rect.size()); move(rect.topLeft()); } - hintLabel->setText(QString::number(width()) + "x" + QString::number(height())); + hintLabel->setText(hintPattern.arg(QString::number(width()), QString::number(height()))); show(); }); setLayout(new QStackedLayout()); @@ -35,7 +38,7 @@ ScreenAreaSelector::~ScreenAreaSelector() { void ScreenAreaSelector::keyPressEvent(QKeyEvent *event) { event->accept(); if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { - QRect r = QRect(pos(), rect().size()); + QRect r = QRect(mapToGlobal(QPoint(0, 0)), rect().size()); emit selectedArea(r); close(); } else if (event->key() == Qt::Key_Escape) @@ -43,10 +46,10 @@ void ScreenAreaSelector::keyPressEvent(QKeyEvent *event) { } void ScreenAreaSelector::resizeEvent(QResizeEvent *) { - hintLabel->setText(QString::number(width()) + "x" + QString::number(height())); + hintLabel->setText(hintPattern.arg(QString::number(width()), QString::number(height()))); } void ScreenAreaSelector::closeEvent(QCloseEvent *) { - QRect r = QRect(pos(), rect().size()); + QRect r = QRect(mapToGlobal(QPoint(0, 0)), rect().size()); settings::settings().setValue("screenareaselector/rect", r); } diff --git a/screenareaselector/screenareaselector.hpp b/src/screenareaselector/screenareaselector.hpp similarity index 100% rename from screenareaselector/screenareaselector.hpp rename to src/screenareaselector/screenareaselector.hpp diff --git a/src/screenoverlay/screenoverlay.cpp b/src/screenoverlay/screenoverlay.cpp new file mode 100644 index 0000000..06f94d0 --- /dev/null +++ b/src/screenoverlay/screenoverlay.cpp @@ -0,0 +1,315 @@ +#include "screenoverlay.hpp" + +#include "screenoverlaysettings.hpp" +#include +#include +#include +#include +#include +#include +#include +#include + +ScreenOverlay::ScreenOverlay(QPixmap pixmap, QObject *parent) : QGraphicsScene(parent), _pixmap(pixmap) { + setCursorPos(QCursor::pos()); + addPixmap(pixmap)->setZValue(-1); + QPolygonF cursorPoly; + cursorPoly << QPoint(-10, 0) // + << QPoint(10, 0) // + << QPoint(0, 0) // + << QPoint(0, 10) // + << QPoint(0, -10) // + << QPoint(0, 0); + + cursorItem = addPolygon(cursorPoly, QPen(Qt::white)); + cursorItem->setZValue(199); + + magnifier = addPixmap(QPixmap(110, 110)); + magnifierBox = addRect(magnifier->boundingRect(), QPen(highlight())); + magnifier->setZValue(199); + magnifierBox->setZValue(199); + magnifierBox->setParentItem(magnifier); + magnifierHint = addText("ptr: (0, 0)\nsel: (-1, -1, 0, 0)"); + magnifierHint->setParentItem(magnifier); + magnifierHint->setY(magnifier->boundingRect().height()); + QColor c(highlight()); + c.setAlphaF(.25); + magnifierHintBox = addRect(magnifierHint->boundingRect(), Qt::NoPen, c); + magnifierHintBox->setParentItem(magnifierHint); + magnifierHintBox->setZValue(199); + magnifierHint->setZValue(199); + updateMag(); + loadSettings(); +} + +void ScreenOverlay::wheelEvent(QGraphicsSceneWheelEvent *e) { + int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt(); + if (pixCnt % 2 == 0) pixCnt++; + if (pixCnt > 20) return; + if (e->delta() > 0 && pixCnt < 19) + settings::settings().setValue("magnifierPixelCount", pixCnt += 2); + else if (pixCnt > 1) + settings::settings().setValue("magnifierPixelCount", pixCnt -= 2); + + for (auto item : gridRectsX) delete item; + gridRectsX.clear(); + for (auto item : gridRectsY) delete item; + gridRectsY.clear(); + + if (grid()) updateMagnifierGrid(); + updateMag(); + + QGraphicsScene::wheelEvent(e); +} + +void ScreenOverlay::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { + QPointF delta = e->scenePos() - cursorPos(); + if (e->modifiers() & Qt::ShiftModifier) { + setCursorPos(cursorPos() + (delta / 2)); + QCursor::setPos(views()[0]->mapToGlobal(cursorPos().toPoint())); + } else + setCursorPos(e->scenePos()); + updateMag(); + mouseMoved(e, cursorPos(), delta); +} + +void ScreenOverlay::moveMouse(QPoint newPos, bool spaceHeld) { + QMouseEvent eve(QEvent::MouseMove, newPos, spaceHeld ? Qt::LeftButton : Qt::NoButton, + spaceHeld ? Qt::LeftButton : Qt::NoButton, Qt::NoModifier); + for (auto &v : views()) { + QCursor::setPos(v->mapToGlobal(newPos)); + QApplication::sendEvent(v->viewport(), &eve); + } +} + +void ScreenOverlay::moveMouseBy(QPoint delta, bool spaceHeld) { + moveMouse(cursorPos().toPoint() + delta, spaceHeld); +} + +void ScreenOverlay::hideMag() { + setMagVisibility(false); +} + +void ScreenOverlay::setMagVisibility(bool visible) { + magnifier->setVisible(visible); + cursorItem->setVisible(visible); + magnifierBox->setVisible(visible); + magnifierHint->setVisible(visible); + magnifierHintBox->setVisible(visible); + for (auto *view : views()) { + view->setCursor(visible ? Qt::BlankCursor : Qt::ArrowCursor); + } +} + +void ScreenOverlay::showMag() { + setMagVisibility(true); +} + +void ScreenOverlay::updateMagnifierGrid() { + if (!grid()) return; + int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt(); + if (pixCnt % 2 == 0) pixCnt++; + if (gridRectsX.size() == gridRectsY.size() && gridRectsY.size() == pixCnt) return; + + QColor c(highlight()); + c.setAlphaF(.25); + for (int i = 0; i < pixCnt; i++) { + auto gridRectX = addRect(0, i * 110. / pixCnt, 110, 110. / pixCnt, QPen(Qt::black, 0.5)); + auto gridRectY = addRect(i * 110. / pixCnt, 0, 110. / pixCnt, 110, QPen(Qt::black, 0.5)); + gridRectX->setParentItem(magnifierBox); + gridRectY->setParentItem(magnifierBox); + gridRectX->setZValue(199); + gridRectY->setZValue(199); + gridRectsX.append(gridRectX); + gridRectsY.append(gridRectY); + if (i == (pixCnt / 2)) { + gridRectX->setBrush(c); + gridRectY->setBrush(c); + } + } +} + +void ScreenOverlay::updateMag() { + updateMagnifierGrid(); + QString hint = generateHint(); + magnifierHint->setVisible(!hint.isEmpty()); + magnifierHintBox->setVisible(!hint.isEmpty()); + magnifierHint->setPlainText(hint); + magnifierHintBox->setRect(magnifierHint->boundingRect()); + + int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt(); + if (pixCnt % 2 == 0) pixCnt++; + QPointF magnifierTopLeft = cursorPos() - QPointF(pixCnt / 2, pixCnt / 2); + QPointF magnifierPos = cursorPos() + QPointF(5, 5); + + magnifier->setPos(magnifierPos); + magnifier->setPixmap(utils::extend(pixmap(), pixCnt, foreground()) + .copy(magnifierTopLeft.x() + pixCnt, magnifierTopLeft.y() + pixCnt, pixCnt, pixCnt) + .scaled(110, 110)); + QPointF bottomRight = magnifierHintBox->sceneBoundingRect().bottomRight(); + if (magnifier->sceneBoundingRect().bottom() > bottomRight.y()) + bottomRight.setY(magnifier->sceneBoundingRect().bottom()); + + if (magnifier->sceneBoundingRect().right() > bottomRight.x()) + bottomRight.setX(magnifier->sceneBoundingRect().right()); + + if (bottomRight.x() > sceneRect().right()) + magnifierPos -= QPointF(qMax(130., magnifierHintBox->boundingRect().width()), 0); + if (bottomRight.y() > sceneRect().bottom()) + magnifierPos -= QPointF(0, 130 + magnifierHintBox->boundingRect().height()); + magnifier->setPos(magnifierPos); + cursorItem->setPos(cursorPos()); +} + +void ScreenOverlay::setHighlight(QColor highlight) { + _highlight = highlight; + QColor c = highlight; + c.setAlphaF(.4); + magnifierHintBox->setBrush(c); + magnifierBox->setPen(c); + if (grid()) setGrid(true); + int i = settings::settings().value("magnifierPixelCount", 11).toInt() / 2; + if (gridRectsX.isEmpty() || gridRectsY.isEmpty()) return; + gridRectsX[i]->setBrush(c); + gridRectsY[i]->setBrush(c); + updateMag(); + highlightChanged(highlight); +} + +void ScreenOverlay::keyPressEvent(QKeyEvent *e) { + if (e->key() == Qt::Key_Space) { + selectActive = !selectActive; + if (!selectActive) { + for (auto *v : views()) { + QMouseEvent eve(QEvent::MouseButtonRelease, cursorPos(), Qt::LeftButton, Qt::LeftButton, e->modifiers()); + QApplication::sendEvent(v->viewport(), &eve); + } + } + } + + int modifier = 1; + if(e->modifiers() == Qt::ShiftModifier) modifier = 10; + + switch (movementPattern()) { + case MP_JKL: + if (e->key() == Qt::Key_J) + moveMouseBy(QPoint(-1 * modifier, 0), selectActive); + else if (e->key() == Qt::Key_K) + moveMouseBy(QPoint(0, 1 * modifier), selectActive); + else if (e->key() == Qt::Key_L) + moveMouseBy(QPoint(0, -1 * modifier), selectActive); + else if (e->key() == Qt::Key_Semicolon) + moveMouseBy(QPoint(1 * modifier, 0), selectActive); + break; + case MP_HJKL: + if (e->key() == Qt::Key_H) + moveMouseBy(QPoint(-1 * modifier, 0), selectActive); + else if (e->key() == Qt::Key_J) + moveMouseBy(QPoint(0, 1 * modifier), selectActive); + else if (e->key() == Qt::Key_K) + moveMouseBy(QPoint(0, -1 * modifier), selectActive); + else if (e->key() == Qt::Key_L) + moveMouseBy(QPoint(1 * modifier, 0), selectActive); + break; + case MP_ARROWS: + if (e->key() == Qt::Key_Left) + moveMouseBy(QPoint(-1 * modifier, 0), selectActive); + else if (e->key() == Qt::Key_Down) + moveMouseBy(QPoint(0, 1 * modifier), selectActive); + else if (e->key() == Qt::Key_Up) + moveMouseBy(QPoint(0, -1 * modifier), selectActive); + else if (e->key() == Qt::Key_Right) + moveMouseBy(QPoint(1 * modifier, 0), selectActive); + break; + } + e->accept(); +} + +void ScreenOverlay::hide() { + for (auto &v : views()) { + v->hide(); + } +} + +void ScreenOverlay::show() { + for (auto &v : views()) { + if (QApplication::screens().size() > 1) + v->show(); + else + v->showFullScreen(); + } +} + +void ScreenOverlay::showSettings() { + hide(); + ScreenOverlaySettings(this).exec(); + show(); +} + +void ScreenOverlay::loadSettings() { + setHighlight(settings::settings().value("highlightColor", QColor(Qt::cyan)).value()); + setMovementPattern(settings::settings().value("movementPattern", MP_HJKL).value()); + setGrid(settings::settings().value("gridEnabled", true).toBool()); + setForeground(settings::settings().value("foregroundColor", QColor(Qt::white)).value()); +} + +void ScreenOverlay::contextMenuEvent(QGraphicsSceneContextMenuEvent *e) { + QMenu menu(e->widget()); + connect(menu.addAction("Screen overlay settings"), &QAction::triggered, this, &ScreenOverlay::showSettings); + customizeContextMenu(e, &menu); + menu.exec(e->screenPos()); +} + +void ScreenOverlay::setCursorPos(QPointF cursorPos) { + if (!pixmap().rect().contains(cursorPos.toPoint())) return; + _cursorPos = cursorPos; +} + +QPointF ScreenOverlay::cursorPos() { + return _cursorPos; +} + +void ScreenOverlay::setGrid(bool grid) { + _grid = grid; + if (grid) { + updateMagnifierGrid(); + } else { + for (auto r : gridRectsX) delete r; + gridRectsX.clear(); + for (auto r : gridRectsY) delete r; + gridRectsY.clear(); + } +} + +bool ScreenOverlay::grid() { + return _grid; +} + +QColor ScreenOverlay::highlight() { + return _highlight; +} + +QPixmap &ScreenOverlay::pixmap() { + return _pixmap; +} + +void ScreenOverlay::setMovementPattern(MovementPattern nmp) { + _movementPattern = nmp; +} + +ScreenOverlay::MovementPattern ScreenOverlay::movementPattern() { + return _movementPattern; +} + +bool ScreenOverlay::keyboardActiveSelection() { + return selectActive; +} + +QColor ScreenOverlay::foreground() { + return _foreground; +} + +void ScreenOverlay::setForeground(QColor fg) { + _foreground = fg; + magnifierHint->setDefaultTextColor(fg); +} diff --git a/src/screenoverlay/screenoverlay.hpp b/src/screenoverlay/screenoverlay.hpp new file mode 100644 index 0000000..d6f8d1c --- /dev/null +++ b/src/screenoverlay/screenoverlay.hpp @@ -0,0 +1,78 @@ +#ifndef SCREENOVERLAY_HPP +#define SCREENOVERLAY_HPP + +#include +#include +#include +#include +#include + +class ScreenOverlay : public QGraphicsScene { + Q_OBJECT +public: + enum MovementPattern { MP_JKL, MP_HJKL, MP_ARROWS }; + + explicit ScreenOverlay(QPixmap pixmap, QObject *parent = 0); + + MovementPattern movementPattern(); + void setMovementPattern(MovementPattern nmp); + + QPixmap &pixmap(); + void updateMagnifierGrid(); + QColor highlight(); + void setHighlight(QColor highlight); + QColor foreground(); + void setForeground(QColor foreground); + bool grid(); + void setGrid(bool grid); + QPointF cursorPos(); + void setCursorPos(QPointF cursorPos); + +public slots: + void showSettings(); + void hide(); + void show(); + void loadSettings(); + void updateMag(); + void hideMag(); + void showMag(); + void setMagVisibility(bool visible); + void moveMouse(QPoint newPoint, bool spaceHeld = false); + void moveMouseBy(QPoint delta, bool spaceHeld = false); + +protected: + bool keyboardActiveSelection(); + void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override; + void wheelEvent(QGraphicsSceneWheelEvent *e) override; + void keyPressEvent(QKeyEvent *e) override; + void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override; + + virtual void mouseMoved(QGraphicsSceneMouseEvent *, QPointF, QPointF) { + } + virtual void highlightChanged(QColor) { + } + virtual QString generateHint() { + return QString(); + } + virtual void customizeContextMenu(QGraphicsSceneContextMenuEvent *, QMenu *) { + } + +private: + QPointF _cursorPos = QPoint(0, 0); + QGraphicsPixmapItem *magnifier = nullptr; + QGraphicsRectItem *magnifierBox = nullptr; + QGraphicsTextItem *magnifierHint = nullptr; + QGraphicsRectItem *magnifierHintBox = nullptr; + QGraphicsPolygonItem *cursorItem = nullptr; + QList gridRectsX; + QList gridRectsY; + QColor _highlight = Qt::cyan, _foreground = Qt::white; + bool _grid = true; + bool selectActive = false; + QPixmap _pixmap; + MovementPattern _movementPattern = MP_ARROWS; +}; + +Q_DECLARE_METATYPE(ScreenOverlay::MovementPattern) + +#endif /* SCREENOVERLAY_HPP */ diff --git a/src/screenoverlay/screenoverlaysettings.cpp b/src/screenoverlay/screenoverlaysettings.cpp new file mode 100644 index 0000000..6727665 --- /dev/null +++ b/src/screenoverlay/screenoverlaysettings.cpp @@ -0,0 +1,57 @@ +#include "screenoverlaysettings.hpp" +#include "ui_screenoverlaysettings.h" + +#include +#include + +ScreenOverlaySettings::ScreenOverlaySettings(ScreenOverlay *overlay, QWidget *parent) +: QDialog(parent), ui(new Ui::ScreenOverlaySettings), overlay(overlay) { + ui->setupUi(this); + + ui->gridBox->setChecked(overlay->grid()); + ui->movementPattern->setCurrentIndex(overlay->movementPattern()); + + int overlayAlpha = settings::settings().value("overlayAlpha", 96).toInt(); + ui->overlayAlphaSlider->setValue(overlayAlpha); + ui->overlayAlphaSpinner->setValue(overlayAlpha); + + highlight = overlay->highlight(); + fg = overlay->foreground(); + ui->preview->setStyleSheet(QString("background-color: %1; color: %2;").arg(highlight.name()).arg(fg.name())); +} + +void ScreenOverlaySettings::on_buttonBox_accepted() { + settings::settings().setValue("gridEnabled", ui->gridBox->isChecked()); + settings::settings().setValue("highlightColor", highlight); + settings::settings().setValue("foregroundColor", fg); + settings::settings().setValue("movementPattern", ui->movementPattern->currentIndex()); + + settings::settings().setValue("overlayAlpha", ui->overlayAlphaSpinner->value()); + overlay->loadSettings(); +} + +void ScreenOverlaySettings::on_fgColor_pressed() { + QColor fog = QColorDialog::getColor("Foreground color", this, tr("Foreground color")); + if (!fog.isValid()) return; + fg = fog; + ui->preview->setStyleSheet(QString("background-color: %1; color: %2;").arg(highlight.name()).arg(fg.name())); +} + +void ScreenOverlaySettings::on_setHighlight_pressed() { + QColor hl = QColorDialog::getColor(highlight, this, tr("Highlight color")); + if (!hl.isValid()) return; + highlight = hl; + ui->preview->setStyleSheet(QString("background-color: %1; color: %2;").arg(highlight.name()).arg(fg.name())); +} + +void ScreenOverlaySettings::on_overlayAlphaSlider_sliderMoved(int position) { + ui->overlayAlphaSpinner->setValue(position); +} + +void ScreenOverlaySettings::on_overlayAlphaSpinner_valueChanged(int arg1) { + ui->overlayAlphaSlider->setValue(arg1); +} + +ScreenOverlaySettings::~ScreenOverlaySettings() { + delete ui; +} diff --git a/src/screenoverlay/screenoverlaysettings.hpp b/src/screenoverlay/screenoverlaysettings.hpp new file mode 100644 index 0000000..bb4c787 --- /dev/null +++ b/src/screenoverlay/screenoverlaysettings.hpp @@ -0,0 +1,31 @@ +#ifndef SCREENOVERLAYSETTINGS_H +#define SCREENOVERLAYSETTINGS_H + +#include "screenoverlay.hpp" +#include + +namespace Ui { + class ScreenOverlaySettings; +} + +class ScreenOverlaySettings : public QDialog { + Q_OBJECT + +public: + explicit ScreenOverlaySettings(ScreenOverlay *overlay, QWidget *parent = 0); + ~ScreenOverlaySettings(); + +private slots: + void on_buttonBox_accepted(); + void on_setHighlight_pressed(); + void on_fgColor_pressed(); + void on_overlayAlphaSpinner_valueChanged(int arg); + void on_overlayAlphaSlider_sliderMoved(int arg); + +private: + Ui::ScreenOverlaySettings *ui; + QColor fg, highlight; + ScreenOverlay *overlay; +}; + +#endif // SCREENOVERLAYSETTINGS_H diff --git a/src/screenoverlay/screenoverlaysettings.ui b/src/screenoverlay/screenoverlaysettings.ui new file mode 100644 index 0000000..19e8120 --- /dev/null +++ b/src/screenoverlay/screenoverlaysettings.ui @@ -0,0 +1,158 @@ + + + ScreenOverlaySettings + + + + 0 + 0 + 211 + 356 + + + + Screen overlay settings + + + + + + Keyboard movement pattern + + + + + + + + JKL; movement (Home-row) + + + + + HJKL movement (Vim-like) + + + + + Arrow movement + + + + + + + + Enable grid + + + + + + + Overlay Alpha + + + + + + + + + 255 + + + Qt::Horizontal + + + + + + + 255 + + + + + + + + + Colors + + + + + + Set highlight color + + + + + + + Set foreground color + + + + + + + Preview + + + Qt::AlignCenter + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + ScreenOverlaySettings + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ScreenOverlaySettings + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/cropeditor/cropview.cpp b/src/screenoverlay/screenoverlayview.cpp similarity index 55% rename from cropeditor/cropview.cpp rename to src/screenoverlay/screenoverlayview.cpp index c4599c3..94feb82 100644 --- a/cropeditor/cropview.cpp +++ b/src/screenoverlay/screenoverlayview.cpp @@ -1,12 +1,16 @@ -#include "cropview.hpp" +#include "screenoverlayview.hpp" -CropView::CropView(QGraphicsScene *scene) : QGraphicsView(scene) { +ScreenOverlayView::ScreenOverlayView(QGraphicsScene *scene, QWidget *parent) : QGraphicsView(scene, parent) { setFrameShape(QFrame::NoFrame); // Time taken to solve: A george99g and 38 minutes. setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setWindowFlags(windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); + setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint); setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing); - setCursor(QCursor(Qt::CrossCursor)); setMouseTracking(true); setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); } + +void ScreenOverlayView::showEvent(QShowEvent *) { + move(0, 0); + activateWindow(); +} diff --git a/src/screenoverlay/screenoverlayview.hpp b/src/screenoverlay/screenoverlayview.hpp new file mode 100644 index 0000000..4aa5a6a --- /dev/null +++ b/src/screenoverlay/screenoverlayview.hpp @@ -0,0 +1,16 @@ +#ifndef SCREENOVERLAYVIEW_HPP +#define SCREENOVERLAYVIEW_HPP + +#include + +class ScreenOverlayView : public QGraphicsView { +public: + ScreenOverlayView(QGraphicsScene *scene, QWidget *parent = 0); + ~ScreenOverlayView() { + } + +protected: + void showEvent(QShowEvent *); +}; + +#endif // SCREENOVERLAYVIEW_HPP diff --git a/src/screenshotter.cpp b/src/screenshotter.cpp new file mode 100644 index 0000000..f7b1fe9 --- /dev/null +++ b/src/screenshotter.cpp @@ -0,0 +1,49 @@ +#include "screenshotter.hpp" +#include "cropeditor/cropeditor.hpp" +#include "mainwindow.hpp" +#include "uploaders/uploadersingleton.hpp" +#include "utils.hpp" +#include +#include +#include +#include + +void areaScreenshotCallback(QPixmap p) { + CropEditor *editor = new CropEditor(p); + QObject::connect(editor, &CropEditor::cropped, [&](QPixmap pixmap) { UploaderSingleton::inst().upload(pixmap); }); +} + +void screenshotter::area() { + if (!settings::settings().value("command/fullscreenCommand", "").toString().isEmpty()) + utils::externalScreenshot(areaScreenshotCallback); + else + areaScreenshotCallback(utils::fullscreen(settings::settings().value("captureCursor", true).toBool())); +} + +void screenshotter::fullscreen() { + if (!settings::settings().value("command/fullscreenCommand", "").toString().isEmpty()) + utils::externalScreenshot([](QPixmap p) { UploaderSingleton::inst().upload(p); }); + else + UploaderSingleton::inst().upload(utils::fullscreen(settings::settings().value("captureCursor", true).toBool())); +} + +void screenshotter::areaDelayed() { + QTimer::singleShot(settings::settings().value("delay", 0.5).toFloat() * 1000, &screenshotter::area); +} + +void screenshotter::fullscreenDelayed() { + QTimer::singleShot(settings::settings().value("delay", 0.5).toFloat() * 1000, &screenshotter::fullscreen); +} + +void screenshotter::activeDelayed() { + QTimer::singleShot(settings::settings().value("delay", 0.5).toFloat() * 1000, &screenshotter::active); +} + +void screenshotter::active() { +#ifdef PLATFORM_CAPABILITY_ACTIVEWINDOW + if (!settings::settings().value("command/activeCommand", "").toString().isEmpty()) + utils::externalScreenshotActive([](QPixmap p) { UploaderSingleton::inst().upload(p); }); + else + UploaderSingleton::inst().upload(utils::window(PlatformBackend::inst().getActiveWID())); +#endif +} diff --git a/src/screenshotter.hpp b/src/screenshotter.hpp new file mode 100644 index 0000000..f0f7d0d --- /dev/null +++ b/src/screenshotter.hpp @@ -0,0 +1,15 @@ +#ifndef SCREENSHOTTER_HPP +#define SCREENSHOTTER_HPP + +namespace screenshotter { + void fullscreen(); + void fullscreenDelayed(); + + void area(); + void areaDelayed(); + + void activeDelayed(); + void active(); +} // namespace screenshotter + +#endif // SCREENSHOTTER_HPP diff --git a/src/settings.cpp b/src/settings.cpp new file mode 100644 index 0000000..64f1853 --- /dev/null +++ b/src/settings.cpp @@ -0,0 +1,23 @@ +#include "settings.hpp" + +#include +#include + +QSettings &settings::settings() { + static QSettings settings(dir().absoluteFilePath("settings.ini"), QSettings::IniFormat); + return settings; +} + +QDir settings::dir() { + static QDir configDir(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation)); + if (configDir.dirName() != "KShare") { + if (!configDir.cd("KShare")) { + if (!configDir.mkdir("KShare")) { + logger::abort(QObject::tr("Could not make config directory")); + } else { + configDir.cd("KShare"); + } + } + } + return configDir; +} diff --git a/settings.hpp b/src/settings.hpp similarity index 65% rename from settings.hpp rename to src/settings.hpp index e2a7870..22661de 100644 --- a/settings.hpp +++ b/src/settings.hpp @@ -5,7 +5,8 @@ #include namespace settings { -QSettings &settings(); -} + QSettings &settings(); + QDir dir(); +} // namespace settings #endif // SETTINGS_HPP diff --git a/settingsdialog.cpp b/src/settingsdialog.cpp similarity index 73% rename from settingsdialog.cpp rename to src/settingsdialog.cpp index 7c2ed0c..bae28e6 100644 --- a/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -1,4 +1,5 @@ #include "settingsdialog.hpp" +#include "filenamevalidator.hpp" #include "hotkeyinputdialog.hpp" #include "mainwindow.hpp" #include "ui_settingsdialog.h" @@ -18,8 +19,9 @@ #include #include #include +#include -QMap> fncs; +static QMap> fncs; void addHotkeyItem(QListWidget *hotkeys, QString text, QString name, std::function func, QString def = QString()) { QListWidgetItem *item = new QListWidgetItem(text, hotkeys); @@ -41,7 +43,9 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Se for (Uploader *u : UploaderSingleton::inst().uploaderList()) newUploader(u); // Set filename scheme - setScheme(settings::settings().value("fileFormat", "Screenshot %(yyyy-MM-dd HH:mm:ss)date.%ext").toString()); + setScheme(settings::settings().value("fileFormat", "Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext").toString()); + + ui->folderFormat->setText(settings::settings().value("folderFormat", "%(yyyy-MM)date").toString()); // Set delay if ((settings::settings().contains("delay"))) @@ -51,19 +55,21 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Se ui->hotkeys->setSelectionMode(QListWidget::SingleSelection); - addHotkeyItem(ui->hotkeys, "Fullscreen image", "fullscreen", [] { screenshotter::fullscreen(); }); - addHotkeyItem(ui->hotkeys, "Area image", "area", [] { screenshotter::area(); }); + addHotkeyItem(ui->hotkeys, tr("Fullscreen image"), "fullscreen", [] { screenshotter::fullscreen(); }); + addHotkeyItem(ui->hotkeys, tr("Area image"), "area", [] { screenshotter::area(); }); #ifdef PLATFORM_CAPABILITY_ACTIVEWINDOW - addHotkeyItem(ui->hotkeys, "Active window", "active", [&] { screenshotter::active(); }); + addHotkeyItem(ui->hotkeys, tr("Active window"), "active", [&] { screenshotter::active(); }); #endif - addHotkeyItem(ui->hotkeys, "Color picker", "picker", [] { ColorPickerScene::showPicker(); }); - addHotkeyItem(ui->hotkeys, "Stop Recording", "recordingstop", [&] { MainWindow::inst()->controller->end(); }); - addHotkeyItem(ui->hotkeys, "Start Recording", "recordingstart", [&] { MainWindow::inst()->rec(); }); + addHotkeyItem(ui->hotkeys, tr("Copy from Clipboard"), "clipboard", [] { clipboardcopy::copyClipboard(); }); + addHotkeyItem(ui->hotkeys, tr("Color picker"), "picker", [] { ColorPickerScene::showPicker(); }); + addHotkeyItem(ui->hotkeys, tr("Stop Recording"), "recordingstop", [&] { MainWindow::inst()->controller->end(); }); + addHotkeyItem(ui->hotkeys, tr("Start Recording"), "recordingstart", [&] { MainWindow::inst()->rec(); }); ui->quickMode->setChecked(settings::settings().value("quickMode", false).toBool()); ui->hideToTray->setChecked(settings::settings().value("hideOnClose", true).toBool()); ui->captureCursor->setChecked(settings::settings().value("captureCursor", true).toBool()); ui->saveLocation->setCurrentIndex(settings::settings().value("saveLocation", 1).toInt()); + ui->themeSelection->setCurrentIndex(settings::settings().value("theme", 0).toInt()); for (int i = 0; i < (int)formats::Recording::None; i++) { ui->formatBox->addItem(formats::recordingFormatName(static_cast(i))); } @@ -77,10 +83,14 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Se ui->cropX->setValue(settings::settings().value("cropx", 0).toInt()); ui->cropY->setValue(settings::settings().value("cropy", 0).toInt()); setWindowTitle("Settings"); + ui->nameScheme->setValidator(new FilenameValidator(ui->nameScheme)); #ifndef PLATFORM_CAPABILITY_CURSOR ui->captureCursor->setEnabled(false); - ui->captureCursor->setText("Capture cursor (disabled: implementation missing)"); + ui->captureCursor->setText(tr("Capture cursor (disabled: implementation missing)")); #endif + ui->fpsMax->setValue(settings::settings().value("recording/framerate", 30).toInt()); + ui->focusedCapture->setText(settings::settings().value("command/activeCommand", "").toString()); + ui->fullscreenCapture->setText(settings::settings().value("command/fullscreenCommand", "").toString()); } void SettingsDialog::setScheme(QString scheme) { @@ -115,6 +125,10 @@ void SettingsDialog::on_nameScheme_textChanged(const QString &arg1) { settings::settings().setValue("fileFormat", arg1); } +void SettingsDialog::on_folderFormat_textChanged(const QString &arg1) { + settings::settings().setValue("folderFormat", arg1); +} + void SettingsDialog::on_delay_valueChanged(double arg1) { settings::settings().setValue("delay", arg1); } @@ -162,6 +176,10 @@ void SettingsDialog::on_saveLocation_currentIndexChanged(int index) { settings::settings().setValue("saveLocation", index); } +void SettingsDialog::on_themeSelection_currentIndexChanged(int index) { + settings::settings().setValue("theme", index); +} + void SettingsDialog::on_cropX_valueChanged(int arg1) { settings::settings().setValue("cropx", arg1); } @@ -169,3 +187,15 @@ void SettingsDialog::on_cropX_valueChanged(int arg1) { void SettingsDialog::on_cropY_valueChanged(int arg1) { settings::settings().setValue("cropy", arg1); } + +void SettingsDialog::on_focusedCapture_textChanged(QString arg1) { + settings::settings().setValue("command/activeCommand", arg1); +} + +void SettingsDialog::on_fullscreenCapture_textChanged(QString arg1) { + settings::settings().setValue("command/fullscreenCommand", arg1); +} + +void SettingsDialog::on_fpsMax_valueChanged(int arg1) { + settings::settings().setValue("recording/framerate", arg1); +} diff --git a/settingsdialog.hpp b/src/settingsdialog.hpp similarity index 79% rename from settingsdialog.hpp rename to src/settingsdialog.hpp index a75ea21..8c5a161 100644 --- a/settingsdialog.hpp +++ b/src/settingsdialog.hpp @@ -6,7 +6,7 @@ #include namespace Ui { -class SettingsDialog; + class SettingsDialog; } class SettingsDialog : public QDialog { @@ -30,13 +30,16 @@ private slots: void on_imageFormatBox_currentIndexChanged(int index); void on_pushButton_clicked(); void on_nameScheme_textChanged(const QString &arg1); + void on_folderFormat_textChanged(const QString &arg1); void newUploader(Uploader *u); void uploaderChanged(QString newName); void on_saveLocation_currentIndexChanged(int index); - + void on_themeSelection_currentIndexChanged(int index); void on_cropX_valueChanged(int arg1); - void on_cropY_valueChanged(int arg1); + void on_fpsMax_valueChanged(int arg1); + void on_fullscreenCapture_textChanged(QString newVal); + void on_focusedCapture_textChanged(QString newVal); private: Ui::SettingsDialog *ui; diff --git a/settingsdialog.ui b/src/settingsdialog.ui similarity index 67% rename from settingsdialog.ui rename to src/settingsdialog.ui index ba64411..08968b0 100644 --- a/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -6,167 +6,27 @@ 0 0 - 485 - 638 + 650 + 759 Crop editor settings - - - - - - - Quick mode (mouse release screenshots) - - - - - - - Delay before taking a screenshot - - - - - - - In seconds - - - A delay before taking a screenshot, in seconds - - - s - - - - - - - - - - - - - Hotkeys - - - - - - - Still image format - - - - - - - Recording format - - - - - - - Capture cursor - - - - - - - %(date format)date and %ext are supported - - - Screenshot %(yyyy-MM-dd HH:mm:ss)date.%ext - - - - - - - File name scheme: - - - - - - - Pressing <X> hides to tray - - - - - - - -1 - - - - - - - Open settings directory - - - - - - - Destination: - - - - - - - - Pictures folder - - - - - Screenshots folder (In your user folder) - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - - - - - File save location - - - - + Advanced - + - x: + x: -999999 @@ -176,10 +36,10 @@ - + - y: + y: -999999 @@ -206,6 +66,233 @@ + + + + FPS + + + 255 + + + + + + + Frames Per Second For Recording + + + + + + + Delay before taking a screenshot + + + + + + + Recording format + + + + + + + Capture cursor + + + + + + + %(date format)date and %ext are supported + + + Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext + + + + + + + -1 + + + + + + + File name scheme: + + + + + + + + + + Focused capture command (save to %FILE_PATH or print to stdout) + + + + + + + + + + %(yyyy-MM)date + + + + + + + Screenshot Subfolder + + + + + + + Pressing <X> hides to tray + + + + + + + + Pictures folder + + + + + Screenshots folder (In your user folder) + + + + + Do not save + + + + + + + + Open settings directory + + + + + + + Destination: + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + + + + + File save location + + + + + + + + + + + + + In seconds + + + A delay before taking a screenshot, in seconds + + + s + + + + + + + Quick mode (mouse release screenshots) + + + + + + + Fullscreen capture command (save to %FILE_PATH or print to stdout) + + + + + + + Hotkeys + + + + + + + Still image format + + + + + + + + + + Theme + + + + + + + + System Default + + + + + QDarkStyle + + + + + Breeze Light + + + + + Breeze Dark + + + + diff --git a/src/sounds.qrc b/src/sounds.qrc new file mode 100644 index 0000000..882c4d7 --- /dev/null +++ b/src/sounds.qrc @@ -0,0 +1,7 @@ + + + sounds/CaptureSound.wav + sounds/ErrorSound.wav + sounds/TaskCompletedSound.wav + + diff --git a/src/sounds/CaptureSound.wav b/src/sounds/CaptureSound.wav new file mode 100644 index 0000000..20191c9 Binary files /dev/null and b/src/sounds/CaptureSound.wav differ diff --git a/src/sounds/ErrorSound.wav b/src/sounds/ErrorSound.wav new file mode 100644 index 0000000..3877d07 Binary files /dev/null and b/src/sounds/ErrorSound.wav differ diff --git a/src/sounds/TaskCompletedSound.wav b/src/sounds/TaskCompletedSound.wav new file mode 100644 index 0000000..e19a75e Binary files /dev/null and b/src/sounds/TaskCompletedSound.wav differ diff --git a/src/src.pro b/src/src.pro new file mode 100644 index 0000000..d0227e5 --- /dev/null +++ b/src/src.pro @@ -0,0 +1,204 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2017-04-19T15:47:09 +# +#------------------------------------------------- + +QT += core gui network widgets svg multimedia + +TARGET = kshare +TEMPLATE = app + +CONFIG += c++11 thread + +QMAKE_CXXFLAGS += -Wall -Wpedantic -Wextra + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which as been marked as deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + + +SOURCES += main.cpp\ + mainwindow.cpp \ + cropeditor/cropeditor.cpp \ + cropeditor/cropview.cpp \ + cropeditor/cropscene.cpp \ + uploaders/uploadersingleton.cpp \ + screenshotter.cpp \ + utils.cpp \ + uploaders/default/imguruploader.cpp \ + io/ioutils.cpp \ + settings.cpp \ + uploaders/default/clipboarduploader.cpp \ + formatter.cpp \ + uploaders/customuploader.cpp \ + notifications.cpp \ + hotkeying.cpp \ + cropeditor/settings/brushpenselection.cpp \ + cropeditor/drawing/bluritem.cpp \ + cropeditor/drawing/pathitem.cpp \ + cropeditor/drawing/lineitem.cpp \ + cropeditor/drawing/textitem.cpp \ + colorpicker/colorpickerscene.cpp \ + worker/worker.cpp \ + screenareaselector/screenareaselector.cpp \ + recording/recordingpreview.cpp \ + recording/recordingcontroller.cpp \ + recording/recordingformats.cpp \ + formats.cpp \ + recording/encoders/encoder.cpp \ + recording/encoders/encodersettings.cpp \ + recording/encoders/encodersettingsdialog.cpp \ + settingsdialog.cpp \ + aboutbox.cpp \ + cropeditor/drawing/eraseritem.cpp \ + cropeditor/drawing/rectitem.cpp \ + cropeditor/drawing/ellipseitem.cpp \ + cropeditor/drawing/highlighter.cpp \ + hotkeyinputdialog.cpp \ + cropeditor/drawing/arrowitem.cpp \ + uploaders/default/imgursettingsdialog.cpp \ + filenamevalidator.cpp \ + logs/requestlogging.cpp \ + monospacetextdialog.cpp \ + cropeditor/selectionrectangle.cpp \ + screenoverlay/screenoverlayview.cpp \ + screenoverlay/screenoverlay.cpp \ + screenoverlay/screenoverlaysettings.cpp \ + logger.cpp \ + clipboard/clipboardcopy.cpp \ + systemnotification.cpp + +HEADERS += mainwindow.hpp \ + cropeditor/cropeditor.hpp \ + cropeditor/cropview.hpp \ + cropeditor/cropscene.hpp \ + uploaders/uploader.hpp \ + uploaders/uploadersingleton.hpp \ + screenshotter.hpp \ + utils.hpp \ + uploaders/default/imguruploader.hpp \ + io/ioutils.hpp \ + settings.hpp \ + uploaders/default/clipboarduploader.hpp \ + formatter.hpp \ + uploaders/customuploader.hpp \ + notifications.hpp \ + hotkeying.hpp \ + cropeditor/drawing/drawitem.hpp \ + cropeditor/settings/brushpenselection.hpp \ + cropeditor/drawing/bluritem.hpp \ + cropeditor/drawing/pathitem.hpp \ + cropeditor/drawing/lineitem.hpp \ + cropeditor/drawing/textitem.hpp \ + colorpicker/colorpickerscene.hpp \ + platformbackend.hpp \ + worker/worker.hpp \ + screenareaselector/screenareaselector.hpp \ + recording/recordingpreview.hpp \ + recording/recordingcontroller.hpp \ + recording/recordingformats.hpp \ + formats.hpp \ + recording/encoders/encoder.hpp \ + recording/encoders/encodersettings.hpp \ + recording/encoders/encodersettingsdialog.hpp \ + settingsdialog.hpp \ + aboutbox.hpp \ + cropeditor/drawing/eraseritem.hpp \ + cropeditor/drawing/rectitem.hpp \ + cropeditor/drawing/ellipseitem.hpp \ + cropeditor/drawing/highlighter.hpp \ + hotkeyinputdialog.hpp \ + cropeditor/drawing/arrowitem.hpp \ + uploaders/default/imgursettingsdialog.hpp \ + filenamevalidator.hpp \ + logs/requestlogging.hpp \ + monospacetextdialog.hpp \ + cropeditor/selectionrectangle.hpp \ + screenoverlay/screenoverlayview.hpp \ + screenoverlay/screenoverlay.hpp \ + screenoverlay/screenoverlaysettings.hpp \ + logger.hpp \ + clipboard/clipboardcopy.hpp \ + systemnotification.h \ + logs/screenshotfile.h + +nopkg { +# win32 { +# !exists($$(FFMPEG_DEV_PATH)\README.txt) { +# error("You must define a valid FFMPEG_DEV_PATH") +# } + +# !exists($$(FFMPEG_SHARED_PATH)\README.txt) { +# error("You must define a valid FFMPEG_SHARED_PATH") +# } + +# INCLUDEPATH += $$(FFMPEG_DEV_PATH)\include +# LIBS += -L$$(FFMPEG_DEV_PATH)\lib +# message(Set the library and include paths); +# } + LIBS += -lavcodec -lavformat -lavutil -lswscale + message(nopkg); +} else { + CONFIG += link_pkgconfig + PKGCONFIG += libavformat libavcodec libswscale libavutil +} + +mac { + ICON = $$PWD/icons/icon.icns + SOURCES += $$PWD/platformspecifics/mac/macbackend.cpp + HEADERS += $$PWD/platformspecifics/mac/macbackend.hpp + LIBS += -framework Carbon + QMAKE_INFO_PLIST = $$PWD/../packages/macos/Info.plist + QT += dbus + warning(Mac is on TODO); +} else:win32 { + RC_FILE = $$PWD/icon.rc + SOURCES += $$PWD/platformspecifics/u32/u32backend.cpp + HEADERS += $$PWD/platformspecifics/u32/u32backend.hpp + LIBS += -luser32 -lkernel32 -lpthread + QT += winextras +} else:unix { + RC_FILE = $$PWD/icon.rc + SOURCES += $$PWD/platformspecifics/x11/x11backend.cpp + HEADERS += $$PWD/platformspecifics/x11/x11backend.hpp + QT += x11extras dbus + LIBS += -lxcb-cursor -lxcb-xfixes -lxcb + + target.path = bin/ + icon.files = $$PWD/icons/KShare.png + icon.path = share/pixmaps/ + desktop.files = $$PWD/../KShare.desktop + desktop.path = share/applications/ + INSTALLS += target icon desktop +} else { + error(Unsupported platform); +} + +FORMS += mainwindow.ui \ + cropeditor/settings/brushpenselection.ui \ + recording/encoders/encodersettingsdialog.ui \ + settingsdialog.ui \ + aboutbox.ui \ + hotkeyinputdialog.ui \ + uploaders/default/imgursettingsdialog.ui \ + monospacetextdialog.ui \ + screenoverlay/screenoverlaysettings.ui + +RESOURCES += \ + icon.qrc \ + sounds.qrc \ + translations.qrc \ + ../themes/qdarkstyle/style.qrc \ + ../themes/breeze/breeze.qrc + +QMAKE_CFLAGS_DEBUG += -g + +include($$PWD/../QHotkey/qhotkey.pri) diff --git a/src/systemnotification.cpp b/src/systemnotification.cpp new file mode 100644 index 0000000..6c36861 --- /dev/null +++ b/src/systemnotification.cpp @@ -0,0 +1,75 @@ +#include "systemnotification.h" +#include +#include + +#ifndef Q_OS_WIN +#include +#include +#include +#else +#include "mainwindow.hpp" +#include "ui_mainwindow.h" +#endif + +#if defined(Q_OS_LINUX) || defined(Q_OS_UNIX) +SystemNotification::SystemNotification(QObject *parent) : QObject(parent) { + m_interface = new QDBusInterface(QStringLiteral("org.freedesktop.Notifications"), + QStringLiteral("/org/freedesktop/Notifications"), + QStringLiteral("org.freedesktop.Notifications"), + QDBusConnection::sessionBus(), + this); +} +#else +SystemNotification::SystemNotification(QObject *parent) : QObject(parent) { + m_interface = nullptr; +} +#endif + +void SystemNotification::sendMessage(const QString &text, const QString &savePath) { + sendMessage(text, tr("KShare Info"), QSystemTrayIcon::Information, savePath); +} + +void SystemNotification::sendMessage( + const QString &text, + const QString &title, + const QSystemTrayIcon::MessageIcon icon, + const QString &savePath, + const int timeout) +{ + +#ifndef Q_OS_WIN + QList args; + QVariantMap hintsMap; + if (!savePath.isEmpty()) { + QUrl fullPath = QUrl::fromLocalFile(savePath); + // allows the notification to be dragged and dropped + hintsMap[QStringLiteral("x-kde-urls")] = QStringList({fullPath.toString()}); + } + + QString iconString = ""; + switch (icon) { + case QSystemTrayIcon::Warning: + iconString = "dialog-warning"; + break; + case QSystemTrayIcon::Critical: + iconString = "dialog-error"; + break; + default: + iconString = "dialog-information"; + break; + } + + args << (qAppName()) //appname + << static_cast(0) //id + << iconString //icon + << title //summary + << text //body + << QStringList() //actions + << hintsMap //hints + << timeout; //timeout + m_interface->callWithArgumentList(QDBus::AutoDetect, QStringLiteral("Notify"), args); +#else + if (!MainWindow::inst()) return; + MainWindow::inst()->tray->showMessage(text, title, icon, timeout); +#endif +} diff --git a/src/systemnotification.h b/src/systemnotification.h new file mode 100644 index 0000000..aec0a02 --- /dev/null +++ b/src/systemnotification.h @@ -0,0 +1,41 @@ +// Copyright(c) 2017-2019 Alejandro Sirgo Rica & Contributors +// +// This file is part of Flameshot. +// +// Flameshot 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. +// +// Flameshot 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 Flameshot. If not, see . + +#pragma once + +#include +#include + +class QDBusInterface; + +class SystemNotification : public QObject { + Q_OBJECT +public: + explicit SystemNotification(QObject *parent = nullptr); + + void sendMessage(const QString &text, + const QString &savePath = {}); + + void sendMessage(const QString &text, + const QString &title, + const QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, + const QString &savePath = {}, + const int timeout = 5000); + +private: + QDBusInterface *m_interface; +}; diff --git a/src/translations.qrc b/src/translations.qrc new file mode 100644 index 0000000..647e497 --- /dev/null +++ b/src/translations.qrc @@ -0,0 +1,8 @@ + + + ../translations/sr_RS.qm + ../translations/ru_RU.qm + ../translations/bg_BG.qm + ../translations/de_DE.qm + + diff --git a/uploaders/customuploader.cpp b/src/uploaders/customuploader.cpp similarity index 55% rename from uploaders/customuploader.cpp rename to src/uploaders/customuploader.cpp index 84973d6..e575886 100644 --- a/uploaders/customuploader.cpp +++ b/src/uploaders/customuploader.cpp @@ -9,8 +9,10 @@ #include #include #include +#include #include #include +#include using formats::normalFormatFromName; using formats::normalFormatMIME; @@ -18,8 +20,8 @@ using formats::recordingFormatFromName; using formats::recordingFormatMIME; using std::runtime_error; -void error(QString absFilePath, QString err) { - throw runtime_error((QString("Invalid file: ").append(absFilePath) + ": " + err).toStdString()); +[[noreturn]] void error(QString absFilePath, QString err) { + throw runtime_error((QObject::tr("Invalid file: ").append(absFilePath) + ": " + err).toStdString()); } CustomUploader::CustomUploader(QString absFilePath) { @@ -28,16 +30,16 @@ CustomUploader::CustomUploader(QString absFilePath) { if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) error(absFilePath, file.errorString()); QJsonDocument doc = QJsonDocument::fromJson(file.readAll()); if (!doc.isObject()) { - error(absFilePath, "Root not an object"); + error(absFilePath, tr("Root not an object")); } QJsonObject obj = doc.object(); if (!obj["name"].isString()) - error(absFilePath, "name is not a string"); + error(absFilePath, tr("name is not a string")); else uName = obj["name"].toString(); - if (!obj.contains("desc")) { + if (obj.contains("desc")) { if (!obj["desc"].isString()) - /*t*/ error(absFilePath, "desc not a string"); + /*t*/ error(absFilePath, tr("desc not a string")); else desc = obj["desc"].toString(); @@ -45,19 +47,19 @@ CustomUploader::CustomUploader(QString absFilePath) { desc = absFilePath; QJsonValue m = obj["method"]; if (!m.isUndefined() && !m.isNull()) { - if (!m.isString()) error(absFilePath, "method not a string"); + if (!m.isString()) error(absFilePath, tr("method not a string")); QString toCheck = m.toString().toLower(); if (toCheck == "post") method = HttpMethod::POST; else - error(absFilePath, "method invalid"); + error(absFilePath, tr("method invalid")); } QJsonValue url = obj["target"]; if (!url.isString()) { - error(absFilePath, "target missing"); + error(absFilePath, tr("target missing")); } QUrl target(url.toString()); - if (!target.isValid()) error(absFilePath, "target not URL"); + if (!target.isValid()) error(absFilePath, tr("target not URL")); this->target = target; QJsonValue formatValue = obj["format"]; if (!formatValue.isUndefined() && !formatValue.isNull()) { @@ -72,45 +74,47 @@ CustomUploader::CustomUploader(QString absFilePath) { else if (formatString == "multipart-form-data") rFormat = RequestFormat::MULTIPART_FORM_DATA; else - error(absFilePath, "format invalid"); + error(absFilePath, tr("format invalid")); } } else - error(absFilePath, "format provided but not string"); + error(absFilePath, tr("format provided but not string")); QJsonValue bodyValue = obj["body"]; if (rFormat != RequestFormat::PLAIN) { - if (bodyValue.isUndefined()) error(absFilePath, "body not set"); + if (bodyValue.isUndefined()) error(absFilePath, tr("body not set")); if (rFormat == RequestFormat::MULTIPART_FORM_DATA) { if (bodyValue.isArray()) { for (QJsonValue val : bodyValue.toArray()) { - if (!val.isObject()) error(absFilePath, "all elements of body must be objects"); + if (!val.isObject()) error(absFilePath, tr("all elements of body must be objects")); if (!val.toObject()["body"].isObject() && !val.toObject().value("body").isString()) - error(absFilePath, "all parts must have a body which is object or string!"); + error(absFilePath, tr("all parts must have a body which is object or string!")); QJsonObject vo = val.toObject(); for (auto v : vo["body"].toObject()) if (!v.isObject() && !v.isString()) - error(absFilePath, "all parts of body must be string or object"); + error(absFilePath, tr("all parts of body must be string or object")); for (auto v : vo.keys()) if (v.startsWith("__") && !vo[v].isString()) - error(absFilePath, "all __headers must be strings"); + //: __ + error(absFilePath, tr("all __headers must be strings")); } body = bodyValue; } else - error(absFilePath, "body not array (needed for multipart)"); + error(absFilePath, tr("body not array (needed for multipart)")); } else { if (bodyValue.isObject()) body = bodyValue; else - error(absFilePath, "body not object"); + error(absFilePath, tr("body not object")); } } else { if (bodyValue.isString()) { body = bodyValue; } else - error(absFilePath, "body not string (reason: format: PLAIN)"); + //: `format: PLAIN` should stay the same + error(absFilePath, tr("body not string (reason: format: PLAIN)")); } QJsonValue headerVal = obj["headers"]; if (!(headerVal.isUndefined() || headerVal.isNull())) { - if (!headerVal.isObject()) error(absFilePath, "headers must be object"); + if (!headerVal.isObject()) error(absFilePath, tr("headers must be object")); headers = headerVal.toObject(); } else headers = QJsonObject(); @@ -118,18 +122,21 @@ CustomUploader::CustomUploader(QString absFilePath) { if (returnPsVal.isString()) { returnPathspec = returnPsVal.toString(); } else - error(absFilePath, "return invalid"); + error(absFilePath, tr("return invalid")); QJsonValue fileLimit = obj["fileLimit"]; if (!fileLimit.isNull() && !fileLimit.isUndefined()) { - if (!fileLimit.isDouble()) error(absFilePath, "fileLimit not double"); + //: fileLimit stays English + if (!fileLimit.isDouble()) error(absFilePath, tr("fileLimit not decimal")); limit = fileLimit.toDouble(); } QJsonValue bool64 = obj["base64"]; if (!bool64.isNull() && !bool64.isUndefined()) { - if (!bool64.isBool()) error(absFilePath, "base64 must be boolean"); + if (!bool64.isBool()) error(absFilePath, tr("base64 must be boolean")); base64 = bool64.toBool(); - if (rFormat == RequestFormat::JSON && !base64) error(absFilePath, "base64 required with json"); + if (rFormat == RequestFormat::JSON && !base64) error(absFilePath, tr("base64 required with json")); } + urlPrepend = obj["return_prepend"].toString(); + urlAppend = obj["return_append"].toString(); } QString CustomUploader::name() { @@ -168,25 +175,6 @@ QList> getHeaders(QJsonObject h, QString imageFormat, Re return headers; } -QJsonObject recurseAndReplace(QJsonObject &body, QByteArray &data, QString contentType) { - QJsonObject o; - for (QString s : body.keys()) { - QJsonValue v = body[s]; - if (v.isObject()) { - QJsonObject vo = v.toObject(); - o.insert(s, recurseAndReplace(vo, data, contentType)); - } else if (v.isString()) { - QString str = v.toString(); - if (str.startsWith("/") && str.endsWith("/")) { - o.insert(s, str.mid(1, str.length() - 2).replace("%imagedata", data).replace("%contenttype", contentType)); - } else - o.insert(s, v); - } else - o.insert(s, v); - } - return o; -} - QString parsePathspec(QJsonDocument &response, QString &pathspec) { if (!pathspec.startsWith(".")) { // Does not point to anything @@ -199,17 +187,13 @@ QString parsePathspec(QJsonDocument &response, QString &pathspec) { return QString::fromUtf8(response.toJson()); } QJsonValue val = o[fields.at(0)]; - if (val.isUndefined() || val.isNull()) - return ""; - else if (val.isString()) - return val.toString(); - else if (!val.isObject()) - return QString::fromUtf8(QJsonDocument::fromVariant(val.toVariant()).toJson()); for (int i = 1; i < fields.size(); i++) { if (val.isUndefined() || val.isNull()) return ""; else if (val.isString()) return val.toString(); + else if (val.isArray()) + val = val.toArray()[fields.at(i).toInt()]; else if (!val.isObject()) return QString::fromUtf8(QJsonDocument::fromVariant(val.toVariant()).toJson()); else @@ -225,30 +209,72 @@ QString parsePathspec(QJsonDocument &response, QString &pathspec) { return ""; } -void parseResult(QJsonDocument result, QByteArray data, QString returnPathspec, QString name) { +void CustomUploader::parseResult(QNetworkReply *r, QJsonDocument result, QByteArray data, QString returnPathspec, QString name, ScreenshotFile sf) { if (result.isObject()) { - qDebug() << result.object()[".url"]; - QString url = parsePathspec(result, returnPathspec); + QString url + = formatter::format(urlPrepend, "") + parsePathspec(result, returnPathspec) + formatter::format(urlAppend, ""); + notifications::playSound(notifications::Sound::SUCCESS); if (!url.isEmpty()) { QApplication::clipboard()->setText(url); - notifications::notify("KShare Custom Uploader " + name, "Copied upload link to clipboard!"); + notifications::notify(tr("KShare Custom Uploader ") + name, tr("Copied upload link to clipboard!")); + ioutils::addLogEntry(r, data, url, sf); } else { - notifications::notify("KShare Custom Uploader " + name, "Upload done, but result empty!"); + notifications::notify(tr("KShare Custom Uploader ") + name, tr("Upload done, but result empty!")); QApplication::clipboard()->setText(data); + ioutils::addLogEntry(r, data, "", sf); } } else { - notifications::notify("KShare Custom Uploader " + name, - "Upload done, but result is not JSON Object! Result in clipboard."); + notifications::playSound(notifications::Sound::ERROR); + notifications::notify(tr("KShare Custom Uploader ") + name, + tr("Upload done, but result is not JSON Object! Result in clipboard.")); QApplication::clipboard()->setText(data); + ioutils::addLogEntry(r, data, "", sf); } } -void CustomUploader::doUpload(QByteArray imgData, QString format) { - auto h = getHeaders(headers, format, this->rFormat); - QByteArray data; - if (base64) imgData = imgData.toBase64(); +QByteArray substituteArgs(QByteArray arr, QString format, ScreenshotFile sf, QByteArray imgData = QByteArray()) { QString mime = normalFormatMIME(normalFormatFromName(format)); if (mime.isEmpty()) mime = recordingFormatMIME(recordingFormatFromName(format)); + if (arr.startsWith("/") && arr.endsWith("/")) { + arr = arr.mid(1, arr.length() - 2); + + arr = formatter::format(QString::fromUtf8(arr), format.toLower(), + { { "format", format.toLower() }, { "FORMAT", format }, { "contenttype", mime } }) + .toUtf8(); + + QByteArray fA = sf.getFilename().toLocal8Bit(); + arr.replace("%filename", fA.data()); + + if (imgData.isNull()) return arr; + return arr.replace("%imagedata", imgData); + } else + return arr; +} + + +QJsonObject recurseAndReplace(QJsonObject &body, QByteArray &data, QString format, ScreenshotFile sf) { + QJsonObject o; + for (QString s : body.keys()) { + QJsonValue v = body[s]; + if (v.isObject()) { + QJsonObject vo = v.toObject(); + o.insert(s, recurseAndReplace(vo, data, format, sf)); + } else if (v.isString()) { + QString str = v.toString(); + if (str.startsWith("/") && str.endsWith("/")) { + o.insert(s, QString::fromUtf8(substituteArgs(str.toUtf8(), format, sf, data))); + } else + o.insert(s, v); + } else + o.insert(s, v); + } + return o; +} + +void CustomUploader::doUpload(QByteArray imgData, QString format, ScreenshotFile sf) { + auto h = getHeaders(headers, format, this->rFormat); + QByteArray data; + if (base64) imgData = imgData.toBase64(QByteArray::Base64UrlEncoding); switch (this->rFormat) { case RequestFormat::PLAIN: { @@ -256,14 +282,10 @@ void CustomUploader::doUpload(QByteArray imgData, QString format) { } break; case RequestFormat::JSON: { if (body.isString()) { - QStringList split = body.toString().replace("%contenttype", mime).split("%imagedata"); - for (int i = 0; i < split.size(); i++) { - data.append(split[i]); - if (i < split.size() - 1) data.append(imgData); - } + data = substituteArgs(body.toString().toUtf8(), format, sf, imgData); } else { QJsonObject vo = body.toObject(); - data = QJsonDocument::fromVariant(recurseAndReplace(vo, imgData, mime).toVariantMap()).toJson(); + data = QJsonDocument::fromVariant(recurseAndReplace(vo, imgData, format, sf).toVariantMap()).toJson(); } } break; case RequestFormat::X_WWW_FORM_URLENCODED: { @@ -271,17 +293,7 @@ void CustomUploader::doUpload(QByteArray imgData, QString format) { for (QString key : body.keys()) { QJsonValue val = body[key]; if (val.isString()) { - QString str = val.toString(); - QByteArray strB; - if (str.startsWith("/") && str.endsWith("/")) { - str = str.mid(1, str.length() - 2); - QStringList split = str.replace("%contenttype", mime).split("%imagedata"); - for (int i = 0; i < split.size(); i++) { - strB.append(split[i]); - if (i < split.size() - 1) strB.append(imgData); - } - } - data.append(QUrl::toPercentEncoding(key)).append('=').append(strB); + data.append(QUrl::toPercentEncoding(key)).append('=').append(substituteArgs(val.toString().toUtf8(), format, sf, imgData)); } else { if (!data.isEmpty()) data.append('&'); data.append(QUrl::toPercentEncoding(key)) @@ -293,72 +305,83 @@ void CustomUploader::doUpload(QByteArray imgData, QString format) { case RequestFormat::MULTIPART_FORM_DATA: { QHttpMultiPart *multipart = new QHttpMultiPart(QHttpMultiPart::FormDataType); auto arr = body.toArray(); + QList buffersToDelete; + QList arraysToDelete; for (QJsonValue val : arr) { auto valo = val.toObject(); QHttpPart part; QJsonValue bd = valo["body"]; if (bd.isString()) { - QString s = bd.toString(); - QByteArray body; - if (s.startsWith("/") && s.endsWith("/")) { - s = s.mid(1, s.length() - 1); - QStringList split = s.replace("%contenttype", mime).split("%imagedata"); - for (int i = 0; i < split.size(); i++) { - body.append(split[i]); - if (i < split.size() - 1) body.append(imgData); - } - } - QBuffer *buffer = new QBuffer(&imgData); + QByteArray body = substituteArgs(bd.toString().toUtf8(), format, sf, imgData); + QByteArray *bodyHeap = new QByteArray; + body.swap(*bodyHeap); + QBuffer *buffer = new QBuffer(bodyHeap); buffer->open(QIODevice::ReadOnly); part.setBodyDevice(buffer); - multipart->append(part); + buffersToDelete.append(buffer); + arraysToDelete.append(bodyHeap); } else { auto bdo = bd.toObject(); - QJsonObject result = recurseAndReplace(bdo, imgData, mime); + QJsonObject result = recurseAndReplace(bdo, imgData, format, sf); part.setBody(QJsonDocument::fromVariant(result.toVariantMap()).toJson()); - multipart->append(part); } + QByteArray cdh("form-data"); for (QString headerVal : valo.keys()) { if (headerVal.startsWith("__")) { headerVal = headerVal.mid(2); - QString str = valo[headerVal].toString(); - if (str.startsWith("/") && str.endsWith("/")) - str = str.mid(1, str.length() - 1).replace("%contenttype", mime); - part.setRawHeader(headerVal.toLatin1(), str.toLatin1()); - } + QByteArray str = valo["__" + headerVal].toString().toUtf8(); + if (str.startsWith("/") && str.endsWith("/")) str = substituteArgs(str, format, sf); + part.setRawHeader(headerVal.toLatin1(), str); + } else if (headerVal != "body") + cdh += "; " + headerVal + "=\"" + + substituteArgs(valo[headerVal].toString().toUtf8(), format, sf).replace("\"", "\\\"") + "\""; } + part.setHeader(QNetworkRequest::ContentDispositionHeader, cdh); + multipart->append(part); } switch (method) { case HttpMethod::POST: if (returnPathspec == "|") { - ioutils::postMultipartData(target, h, multipart, [&](QByteArray result, QNetworkReply *) { - QApplication::clipboard()->setText(QString::fromUtf8(result)); - notifications::notify("KShare Custom Uploader " + name(), "Copied upload result to clipboard!"); - }); + ioutils::postMultipartData(target, h, multipart, + [&, buffersToDelete, arraysToDelete, sf](QByteArray result, QNetworkReply *r) { + ioutils::addLogEntry(r, result, QString::fromUtf8(result), sf); + QApplication::clipboard()->setText(QString::fromUtf8(result)); + for (auto buffer : buffersToDelete) buffer->deleteLater(); + for (auto arr : arraysToDelete) delete arr; + notifications::playSound(notifications::Sound::SUCCESS); + notifications::notify(tr("KShare Custom Uploader ") + name(), + tr("Copied upload result to clipboard!")); + }); } else { - ioutils::postMultipart(target, h, multipart, [&](QJsonDocument result, QByteArray data, QNetworkReply *) { - parseResult(result, data, returnPathspec, name()); - }); + ioutils::postMultipart(target, h, multipart, + [&, buffersToDelete, arraysToDelete, sf](QJsonDocument result, QByteArray data, QNetworkReply *r) { + for (auto buffer : buffersToDelete) buffer->deleteLater(); + for (auto arr : arraysToDelete) delete arr; + parseResult(r, result, data, returnPathspec, name(), sf); + }); } break; } return; - } break; + } } if (limit > 0 && data.size() > limit) { - notifications::notify("KShare Custom Uploader " + name(), "File limit exceeded!"); + notifications::playSound(notifications::Sound::ERROR); + notifications::notify(tr("KShare Custom Uploader ") + name(), tr("File limit exceeded!")); return; } switch (method) { case HttpMethod::POST: if (returnPathspec == "|") { - ioutils::postData(target, h, data, [&](QByteArray result, QNetworkReply *) { + ioutils::postData(target, h, data, [&, sf](QByteArray result, QNetworkReply *r) { + ioutils::addLogEntry(r, result, QString::fromUtf8(result), sf); QApplication::clipboard()->setText(QString::fromUtf8(result)); - notifications::notify("KShare Custom Uploader " + name(), "Copied upload result to clipboard!"); + notifications::playSound(notifications::Sound::SUCCESS); + notifications::notify(tr("KShare Custom Uploader ") + name(), tr("Copied upload result to clipboard!")); }); } else { - ioutils::postJson(target, h, data, [&](QJsonDocument result, QByteArray data, QNetworkReply *) { - parseResult(result, data, returnPathspec, name()); + ioutils::postJson(target, h, data, [&, sf](QJsonDocument result, QByteArray data, QNetworkReply *r) { + parseResult(r, result, data, returnPathspec, name(), sf); }); } break; diff --git a/uploaders/customuploader.hpp b/src/uploaders/customuploader.hpp similarity index 65% rename from uploaders/customuploader.hpp rename to src/uploaders/customuploader.hpp index 5a0e791..cea0c06 100644 --- a/uploaders/customuploader.hpp +++ b/src/uploaders/customuploader.hpp @@ -2,20 +2,25 @@ #define CUSTOMUPLOADER_HPP #include "uploader.hpp" +#include #include #include #include +#include +#include enum class HttpMethod { POST }; enum class RequestFormat { X_WWW_FORM_URLENCODED, JSON, MULTIPART_FORM_DATA, PLAIN }; class CustomUploader : public Uploader { + Q_DECLARE_TR_FUNCTIONS(CustomUploader) + public: CustomUploader(QString absFilePath); QString name(); QString description(); - void doUpload(QByteArray imgData, QString format); + void doUpload(QByteArray imgData, QString format, ScreenshotFile sf); private: double limit = -1; @@ -28,6 +33,8 @@ private: QJsonObject headers; bool base64 = false; QString returnPathspec; + QString urlPrepend, urlAppend; + void parseResult(QNetworkReply *r, QJsonDocument result, QByteArray data, QString returnPathspec, QString name, ScreenshotFile sf); }; #endif // CUSTOMUPLOADER_HPP diff --git a/uploaders/default/clipboarduploader.cpp b/src/uploaders/default/clipboarduploader.cpp similarity index 80% rename from uploaders/default/clipboarduploader.cpp rename to src/uploaders/default/clipboarduploader.cpp index 57aa7a2..c5422c3 100644 --- a/uploaders/default/clipboarduploader.cpp +++ b/src/uploaders/default/clipboarduploader.cpp @@ -5,8 +5,10 @@ #include #include #include +#include +#include -void ClipboardUploader::doUpload(QByteArray imgData, QString format) { +void ClipboardUploader::doUpload(QByteArray imgData, QString format, ScreenshotFile sf) { auto f = formats::recordingFormatFromName(format); if (f != formats::Recording::None) { auto data = new QMimeData(); @@ -14,5 +16,5 @@ void ClipboardUploader::doUpload(QByteArray imgData, QString format) { QApplication::clipboard()->setMimeData(data); } else QApplication::clipboard()->setImage(QImage::fromData(imgData, format.toLocal8Bit().constData())); - notifications::notify("KShare", "Copied to clipboard!"); + notifications::notify("KShare", tr("Copied to clipboard!")); } diff --git a/uploaders/default/clipboarduploader.hpp b/src/uploaders/default/clipboarduploader.hpp similarity index 65% rename from uploaders/default/clipboarduploader.hpp rename to src/uploaders/default/clipboarduploader.hpp index 5794386..390dbeb 100644 --- a/uploaders/default/clipboarduploader.hpp +++ b/src/uploaders/default/clipboarduploader.hpp @@ -1,10 +1,13 @@ #ifndef CLIPBOARDUPLOADER_HPP #define CLIPBOARDUPLOADER_HPP +#include #include #include +#include class ClipboardUploader : public Uploader { + Q_DECLARE_TR_FUNCTIONS(ClipboardUploader) public: QString name() { return "clipboard"; @@ -13,7 +16,7 @@ public: return "Copies the image to clipboard"; } - void doUpload(QByteArray imgData, QString format); + void doUpload(QByteArray imgData, QString format, ScreenshotFile sf); }; #endif // CLIPBOARDUPLOADER_HPP diff --git a/uploaders/default/imgursettingsdialog.cpp b/src/uploaders/default/imgursettingsdialog.cpp similarity index 98% rename from uploaders/default/imgursettingsdialog.cpp rename to src/uploaders/default/imgursettingsdialog.cpp index f69aba6..fbaa65e 100644 --- a/uploaders/default/imgursettingsdialog.cpp +++ b/src/uploaders/default/imgursettingsdialog.cpp @@ -60,7 +60,7 @@ void ImgurSettingsDialog::on_authorize_clicked() { QDateTime::currentDateTimeUtc().addSecs(res["expires_in"].toInt())); settings::settings().setValue("imgur/refresh", res["refresh_token"].toString()); settings::settings().setValue("imgur/access", res["refresh_token"].toString()); - ui->status->setText("It works!"); + ui->status->setText(tr("It works!")); ui->status->setStyleSheet("* { color: green; }"); ui->authorize->setEnabled(false); diff --git a/uploaders/default/imgursettingsdialog.hpp b/src/uploaders/default/imgursettingsdialog.hpp similarity index 93% rename from uploaders/default/imgursettingsdialog.hpp rename to src/uploaders/default/imgursettingsdialog.hpp index 2d47c1b..9e4054a 100644 --- a/uploaders/default/imgursettingsdialog.hpp +++ b/src/uploaders/default/imgursettingsdialog.hpp @@ -4,7 +4,7 @@ #include namespace Ui { -class ImgurSettingsDialog; + class ImgurSettingsDialog; } class ImgurSettingsDialog : public QDialog { diff --git a/uploaders/default/imgursettingsdialog.ui b/src/uploaders/default/imgursettingsdialog.ui similarity index 100% rename from uploaders/default/imgursettingsdialog.ui rename to src/uploaders/default/imgursettingsdialog.ui diff --git a/uploaders/default/imguruploader.cpp b/src/uploaders/default/imguruploader.cpp similarity index 67% rename from uploaders/default/imguruploader.cpp rename to src/uploaders/default/imguruploader.cpp index 7103215..4107c3c 100644 --- a/uploaders/default/imguruploader.cpp +++ b/src/uploaders/default/imguruploader.cpp @@ -5,13 +5,15 @@ #include #include #include +#include #include #include #include -#include #include +#include +#include -struct SegfaultWorkaround { +struct SegfaultWorkaround { // I'm a scrub for doing this SegfaultWorkaround(QByteArray a, ImgurUploader *u, QString m) : byteArray(), dis(u), mime(m) { a.swap(byteArray); QJsonObject object; @@ -24,14 +26,15 @@ struct SegfaultWorkaround { QUrl("https://api.imgur.com/oauth2/token"), QList>({ QPair("Content-Type", "applicaton/json") }), QJsonDocument::fromVariant(object.toVariantMap()).toJson(), [&](QJsonDocument response, QByteArray, QNetworkReply *r) { + ScreenshotFile sf; qDebug() << response; if (r->error() != QNetworkReply::NoError || !response.isObject()) { - dis->handleSend(QStringLiteral("Client-ID 8a98f183fc895da"), mime, byteArray); + dis->handleSend(QStringLiteral("Client-ID 8a98f183fc895da"), mime, byteArray, sf); return; } QJsonObject res = response.object(); if (res.value("success").toBool()) { - dis->handleSend(QStringLiteral("Client-ID 8a98f183fc895da"), mime, byteArray); + dis->handleSend(QStringLiteral("Client-ID 8a98f183fc895da"), mime, byteArray, sf); return; } @@ -40,7 +43,7 @@ struct SegfaultWorkaround { settings::settings().setValue("imgur/refresh", res["refresh_token"].toString()); settings::settings().setValue("imgur/access", token); - dis->handleSend(token.prepend("Bearer "), mime, byteArray); + dis->handleSend(token.prepend("Bearer "), mime, byteArray, sf); QScopedPointer(this); }); } @@ -49,11 +52,11 @@ private: QByteArray byteArray; ImgurUploader *dis; QString mime; -}; +}; // I feel terrible for making this. I am sorry, reader -void ImgurUploader::doUpload(QByteArray byteArray, QString format) { +void ImgurUploader::doUpload(QByteArray byteArray, QString format, ScreenshotFile sf) { if (byteArray.size() > 1e+7) { - notifications::notify("KShare imgur Uploader ", "Failed upload! Image too big"); + notifications::notify(tr("KShare imgur Uploader"), tr("Failed upload! Image too big")); return; } QString mime; @@ -68,29 +71,37 @@ void ImgurUploader::doUpload(QByteArray byteArray, QString format) { if (QDateTime::currentDateTimeUtc() > expireTime) { new SegfaultWorkaround(byteArray, this, mime); } else - handleSend("Bearer " + settings::settings().value("imgur/access").toString(), mime, byteArray); + handleSend("Bearer " + settings::settings().value("imgur/access").toString(), mime, byteArray, sf); } else - handleSend(QStringLiteral("Client-ID 8a98f183fc895da"), mime, byteArray); + handleSend(QStringLiteral("Client-ID 8a98f183fc895da"), mime, byteArray, sf); } void ImgurUploader::showSettings() { (new ImgurSettingsDialog())->show(); } -void ImgurUploader::handleSend(QString auth, QString mime, QByteArray byteArray) { +void ImgurUploader::handleSend(QString auth, QString mime, QByteArray byteArray, ScreenshotFile sf) { ioutils::postJson(QUrl("https://api.imgur.com/3/image"), QList>() << QPair("Content-Type", mime.toUtf8()) << QPair("Authorization", auth), - byteArray, [](QJsonDocument res, QByteArray, QNetworkReply *) { + byteArray, [byteArray, this, mime, sf](QJsonDocument res, QByteArray data, QNetworkReply *r) { QString result = res.object()["data"].toObject()["link"].toString(); + if (r->error() == QNetworkReply::ContentAccessDenied) { + new SegfaultWorkaround(byteArray, this, mime); + return; + } if (!result.isEmpty()) { - screenshotutil::toClipboard(result); - notifications::notify("KShare imgur Uploader ", "Uploaded to imgur!"); + ioutils::addLogEntry(r, data, result, sf); + utils::toClipboard(result); + notifications::notify(tr("KShare imgur Uploader"), tr("Uploaded to imgur!")); + notifications::playSound(notifications::Sound::SUCCESS); } else { - notifications::notify("KShare imgur Uploader ", - QString("Failed upload! imgur said: HTTP %2: %1") - .arg(res.object()["data"].toObject()["error"].toString()) - .arg(QString::number(res.object()["status"].toInt()))); + ioutils::addLogEntry(r, data, result, sf); + notifications::notify(tr("KShare imgur Uploader "), + QString(tr("Failed upload! imgur said: HTTP %1: %2")) + .arg(r->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()) + .arg(r->errorString())); + notifications::playSound(notifications::Sound::ERROR); } }); } diff --git a/uploaders/default/imguruploader.hpp b/src/uploaders/default/imguruploader.hpp similarity index 68% rename from uploaders/default/imguruploader.hpp rename to src/uploaders/default/imguruploader.hpp index 5419f31..130ba00 100644 --- a/uploaders/default/imguruploader.hpp +++ b/src/uploaders/default/imguruploader.hpp @@ -2,8 +2,11 @@ #define IMGURUPLOADER_HPP #include "../uploader.hpp" +#include +#include class ImgurUploader : public Uploader { + Q_DECLARE_TR_FUNCTIONS(ImgurUploader) friend struct SegfaultWorkaround; public: @@ -13,11 +16,11 @@ public: QString description() override { return "imgur.com uploader"; } - void doUpload(QByteArray byteArray, QString) override; + void doUpload(QByteArray byteArray, QString, ScreenshotFile sf) override; void showSettings() override; private: - void handleSend(QString auth, QString mime, QByteArray byteArray); + void handleSend(QString auth, QString mime, QByteArray byteArray, ScreenshotFile sf); }; #endif // IMGURUPLOADER_HPP diff --git a/uploaders/uploader.hpp b/src/uploaders/uploader.hpp similarity index 71% rename from uploaders/uploader.hpp rename to src/uploaders/uploader.hpp index 357c852..39fa640 100644 --- a/uploaders/uploader.hpp +++ b/src/uploaders/uploader.hpp @@ -3,10 +3,11 @@ #include #include +#include class Uploader { public: - virtual void doUpload(QByteArray imgData, QString format) = 0; + virtual void doUpload(QByteArray imgData, QString format, ScreenshotFile sf) = 0; virtual QString name() = 0; virtual QString description() = 0; virtual void showSettings() { diff --git a/src/uploaders/uploadersingleton.cpp b/src/uploaders/uploadersingleton.cpp new file mode 100644 index 0000000..c3548ee --- /dev/null +++ b/src/uploaders/uploadersingleton.cpp @@ -0,0 +1,203 @@ +#include "uploadersingleton.hpp" +#include "customuploader.hpp" +#include "default/clipboarduploader.hpp" +#include "default/imguruploader.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "mainwindow.hpp" +#include + +UploaderSingleton::UploaderSingleton() : QObject() { + updateSaveSettings(); + QDir configDir(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation)); + configDir.mkpath("KShare/uploaders"); + configDir.cd("KShare/uploaders"); + configDir.setNameFilters({ "*.uploader" }); + for (QString file : configDir.entryList()) { + try { + registerUploader(new CustomUploader(configDir.absoluteFilePath(file))); + } catch (std::runtime_error &e) { + logger::warn(QString::fromStdString(e.what())); + errs << e; + } + } + + // UPLOADERS + registerUploader(new ImgurUploader); + registerUploader(new ClipboardUploader); + // --------- + + if (settings::settings().contains("uploader")) + uploader = settings::settings().value("uploader").toString(); + else + settings::settings().setValue("uploader", uploader); + if (!uploaders.contains(uploader)) { + uploader = "imgur"; + settings::settings().setValue("uploader", uploader); + } +} + +void UploaderSingleton::registerUploader(Uploader *uploader) { + if (uploaders.contains(uploader->name())) + throw std::runtime_error((tr("Ambigious uploader ") + uploader->name()).toStdString()); + uploaders.insert(uploader->name(), uploader); + emit newUploader(uploader); +} + +void UploaderSingleton::upload(QPixmap pixmap, bool save) { + updateSaveSettings(); + auto u = uploaders.value(uploader); + if (!u->validate()) { + u = uploaders.value("imgur"); + set("imgur"); + logger::warn(tr("Currently selected uploader is not set up properly! Falling back to imgur")); + } + QString format = settings::settings().value("captureformat", "PNG").toString(); + QFile *file = nullptr; + if (saveImages && save) { + file = new QFile(saveDir.absoluteFilePath( + formatter::format(settings::settings().value("fileFormat", "Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext").toString(), + format.toLower()))); + } else { + file = new QTemporaryFile(); + } + if (file->open(QFile::ReadWrite)) { + notifications::playSound(notifications::Sound::CAPTURE); + pixmap.save(file, format.toLocal8Bit().constData(), settings::settings().value("imageQuality", -1).toInt()); + file->seek(0); + u->doUpload(file->readAll(), format, getScreenshotFile(*file)); + } else + notifications::notify(tr("KShare - Failed to save picture"), file->errorString(), QSystemTrayIcon::Warning); + delete file; +} + +void UploaderSingleton::upload(QPixmap pixmap) { + UploaderSingleton::upload(pixmap, true); +} + +void UploaderSingleton::upload(QByteArray img, QString format) { + updateSaveSettings(); + if (img.isEmpty()) return; + QFile *file = nullptr; + if (saveImages) { + file = new QFile(saveDir.absoluteFilePath( + formatter::format(settings::settings().value("fileFormat", "Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext").toString(), + format.toLower()))); + } else { + file = new QTemporaryFile(); + } + if (file->open(QFile::WriteOnly)) { + notifications::playSound(notifications::Sound::CAPTURE); + file->write(img); + file->close(); + } + uploaders.value(uploader)->doUpload(img, format, getScreenshotFile(*file)); + delete file; +} + +void UploaderSingleton::upload(QFile &img, QString format) { + updateSaveSettings(); + if (img.size() <= 0) return; + if (!saveImages || img.rename(saveDir.absoluteFilePath( + formatter::format(settings::settings().value("fileFormat", "Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext").toString(), + format.toLower())))) { + notifications::playSound(notifications::Sound::CAPTURE); + if (img.open(QFile::ReadWrite)) + uploaders.value(uploader)->doUpload(img.readAll(), format, getScreenshotFile(img)); + else + notifications::notify(tr("KShare - Failed to save picture"), img.errorString(), QSystemTrayIcon::Warning); + } else + notifications::notify(tr("KShare - Failed to save picture"), img.errorString(), QSystemTrayIcon::Warning); +} + +void UploaderSingleton::upload(QFile &img) { + updateSaveSettings(); + if (img.size() <= 0) return; + if (img.open(QFile::ReadWrite)) + uploaders.value(uploader)->doUpload(img.readAll(), "", getScreenshotFile(img)); + else + notifications::notify(tr("KShare - Failed to open File"), img.errorString(), QSystemTrayIcon::Warning); +} + +void UploaderSingleton::showSettings() { + uploaders.value(uploader)->showSettings(); +} + +bool UploaderSingleton::validate() { + return uploaders.value(uploader)->validate(); +} + +QList UploaderSingleton::uploaderList() { + return uploaders.values(); +} + +void UploaderSingleton::set(QString uploader) { + if (uploaders.contains(uploader)) { + this->uploader = uploader; + settings::settings().setValue("uploader", uploader); + emit uploaderChanged(uploader); + } +} + +QString UploaderSingleton::selectedUploader() { + return uploader; +} + +QList UploaderSingleton::errors() { + return errs; +} + +QString UploaderSingleton::currentUploader() { + return uploader; +} + +QString UploaderSingleton::getFormattedSubfolder() { + return formatter::format(settings::settings().value("folderFormat", "%(yyyy-MM)date").toString(), ""); +} + +ScreenshotFile UploaderSingleton::getScreenshotFile(QFile &f) { + ScreenshotFile sf; + sf.subfolder = getFormattedSubfolder(); + QFileInfo fi(f); + sf.filename = fi.fileName(); + return sf; +} + +void UploaderSingleton::updateSaveSettings() { + switch (settings::settings().value("saveLocation", 1).toInt()) { + case 0: + saveDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); + if (QStandardPaths::writableLocation(QStandardPaths::PicturesLocation).isEmpty()) { + qFatal("%s", tr("Cannot determine location for pictures").toLocal8Bit().constData()); + } + break; + case 1: + if (QStandardPaths::writableLocation(QStandardPaths::HomeLocation).isEmpty()) { + qFatal("%s", tr("Cannot determine location of your home directory").toLocal8Bit().constData()); + } + saveDir = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Screenshots"; + break; + default: + qFatal("%s", tr("Invalid config [saveLocation not int or is not in range]").toLocal8Bit().constData()); + case 2: + saveImages = false; + break; + } + + saveDir = QDir(saveDir.absolutePath() + QDir::separator() + getFormattedSubfolder()); + + if (!saveDir.exists()) { + if (!saveDir.mkpath(".")) { + qFatal("Could not create the path %s to store images in!", saveDir.absolutePath().toLocal8Bit().constData()); + } + } +} diff --git a/uploaders/uploadersingleton.hpp b/src/uploaders/uploadersingleton.hpp similarity index 79% rename from uploaders/uploadersingleton.hpp rename to src/uploaders/uploadersingleton.hpp index fc1fb2a..c4dc91a 100644 --- a/uploaders/uploadersingleton.hpp +++ b/src/uploaders/uploadersingleton.hpp @@ -4,6 +4,7 @@ #include "uploader.hpp" #include #include +#include class UploaderSingleton : public QObject { Q_OBJECT @@ -13,9 +14,11 @@ public: return inst; } void registerUploader(Uploader *uploader); + void upload(QPixmap pixmap, bool save); void upload(QPixmap pixmap); void upload(QByteArray img, QString format); void upload(QFile &img, QString format); + void upload(QFile &img); void showSettings(); QList uploaderList(); void set(QString uploader); @@ -29,11 +32,15 @@ signals: void uploaderChanged(QString newName); private: + void updateSaveSettings(); + QString getFormattedSubfolder(); + ScreenshotFile getScreenshotFile(QFile &f); QDir saveDir; - UploaderSingleton(); + bool saveImages = true; QMap uploaders; QString uploader = "imgur"; QList errs; + UploaderSingleton(); }; #endif // UPLOADERSINGLETON_HPP diff --git a/src/utils.cpp b/src/utils.cpp new file mode 100644 index 0000000..a340e33 --- /dev/null +++ b/src/utils.cpp @@ -0,0 +1,212 @@ +#include "utils.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QColor utils::invertColor(QColor color) { + return QColor(255 - color.red(), 255 - color.green(), 255 - color.blue()); +} + +QPixmap utils::extend(QPixmap img, int extraSize, QColor hl) { + QPixmap newImg(img.width() + extraSize * 2, img.height() + extraSize * 2); + newImg.fill(hl); + QPainter ptr(&newImg); + ptr.drawPixmap(extraSize, extraSize, img); + ptr.end(); + return newImg; +} + +QPixmap utils::fullscreen(bool cursor) { + QPixmap image; + QPainter painter; + QPoint smallestCoordinate = smallestScreenCoordinate(); + +// Hack for https://bugreports.qt.io/browse/QTBUG-58110 +#ifdef Q_OS_LINUX + static QStringList qVer = QString(qVersion()).split('.'); + if (qVer.at(0).toInt() == 5 && qVer.at(1).toInt() < 9) { + image = window(0); + painter.begin(&image); + } else { +#endif + int height = 0, width = 0; + int ox = smallestCoordinate.x() * -1, oy = smallestCoordinate.y() * -1; + for (QScreen *screen : QApplication::screens()) { + QRect geo = screen->geometry(); + width = qMax(ox + geo.left() + geo.width(), width); + height = qMax(oy + geo.top() + geo.height(), height); + } + image = QPixmap(width, height); + image.fill(Qt::transparent); + width = 0; + painter.begin(&image); + painter.translate(ox, oy); + + for (QScreen *screen : QApplication::screens()) { + QPixmap currentScreen = window(0, screen); + QRect geo = screen->geometry(); + painter.drawPixmap(geo.left(), geo.top(), geo.width(), geo.height(), currentScreen); + width += screen->size().width(); + } +#ifdef Q_OS_LINUX + } +#endif + +#ifdef PLATFORM_CAPABILITY_CURSOR + if (cursor) { + auto cursorData = PlatformBackend::inst().getCursor(); + painter.drawPixmap(QCursor::pos() - std::get<0>(cursorData), std::get<1>(cursorData)); + } +#endif + painter.end(); + return image; +} + +QPixmap utils::window(WId wid, QScreen *w) { + return w->grabWindow(wid); +} + +void utils::toClipboard(QString value) { + QApplication::clipboard()->setText(value); +} + +QPixmap utils::fullscreenArea(bool cursor, qreal x, qreal y, qreal w, qreal h) { + return fullscreen(cursor).copy(x, y, w, h); +} + +QPoint utils::smallestScreenCoordinate() { + QPoint smallestCoordinate; + for (QScreen *screen : QApplication::screens()) { + smallestCoordinate.rx() = qMin(smallestCoordinate.x(), screen->geometry().left()); + smallestCoordinate.ry() = qMin(smallestCoordinate.y(), screen->geometry().top()); + } + return smallestCoordinate; +} + +QPixmap utils::renderText(QString toRender, int padding, QColor background, QColor pen, QFont font) { + QFontMetrics metric(font); + QStringList lines = toRender.replace("\r", "").split('\n'); + QSize resultingSize(0, padding * 2); + int lineSpace = metric.leading(); + for (QString line : lines) { + QRect br = metric.boundingRect(line); + resultingSize.rheight() += lineSpace + br.height(); + resultingSize.rwidth() = qMax(br.width(), resultingSize.width()); + } + resultingSize.rwidth() += padding * 2; + QPixmap renderred(resultingSize); + renderred.fill(background); + QPainter painter(&renderred); + painter.setPen(pen); + int y = padding; + for (QString line : lines) { + QRect br = metric.boundingRect(line); + painter.drawText(padding, y, br.width(), br.height(), 0, line); + y += lineSpace + br.height(); + } + painter.end(); + return renderred; +} + +QString utils::randomString(int length) { + QString str; + str.resize(length); + for (int s = 0; s < length; s++) str[s] = QChar('A' + char(qrand() % ('Z' - 'A'))); + return str; +} + +void utils::externalScreenshot(std::function callback) { + QString cmd = settings::settings().value("command/fullscreenCommand", "").toString(); + QStringList args = cmd.split(' '); + QString tempPath; + for (QString &arg : args) { + if (arg == "%FILE_PATH") { + if (tempPath.isEmpty()) tempPath = "KShare-Ext-Screenshot." + randomString(5); + arg = tempPath; + } + } + QProcess *process = new QProcess; + QObject::connect(process, QOverload::of(&QProcess::finished), + [callback, process, tempPath](int code, QProcess::ExitStatus) { + if (code != 0) { + logger::fatal(QObject::tr("Failed to take external screenshot: \n") + process->readAllStandardError()); + } else { + QPixmap pixmap; + if (!tempPath.isEmpty()) + pixmap.load(tempPath); + else + pixmap.loadFromData(process->readAllStandardOutput()); + callback(pixmap); + } + if (!tempPath.isEmpty()) QFile(tempPath).remove(); + }); + QObject::connect(process, &QProcess::errorOccurred, [](QProcess::ProcessError err) { + if (err == QProcess::FailedToStart) settings::settings().remove("command/fullscreenCommand"); + }); + process->start(args.takeFirst(), args); +} + +void utils::externalScreenshotActive(std::function callback) { + QString cmd = settings::settings().value("command/activeCommand", "").toString(); + QStringList args = cmd.split(' '); + QString tempPath; + for (QString &arg : args) { + if (arg == "%FILE_PATH") { + if (tempPath.isEmpty()) tempPath = "KShare-Ext-Screenshot." + randomString(5); + arg = tempPath; + } + } + QProcess *process = new QProcess; + QObject::connect(process, QOverload::of(&QProcess::finished), + [callback, process, tempPath](int code, QProcess::ExitStatus) { + if (code != 0) { + logger::fatal(QObject::tr("Failed to take external screenshot: \n") + process->readAllStandardError()); + } else { + QPixmap pixmap; + if (!tempPath.isEmpty()) + pixmap.load(tempPath); + else + pixmap.loadFromData(process->readAllStandardOutput()); + callback(pixmap); + } + if (!tempPath.isEmpty()) QFile(tempPath).remove(); + }); + QObject::connect(process, &QProcess::errorOccurred, [](QProcess::ProcessError err) { + if (err == QProcess::FailedToStart) settings::settings().remove("command/activeCommand"); + }); + process->start(args.takeFirst(), args); +} + +QIcon defaultIcon() { + static QIcon icon = QIcon(":/icons/icon.png"); + return icon; +} + +QIcon infinity() { + static QIcon icon = QIcon(":/icons/infinity.png"); + return icon; +} + +QIcon utils::getTrayIcon(int num) { + if (!num) { + return defaultIcon(); + } else if (num < 100) { + QPixmap unscaled = utils::renderText(QString::number(num), 0, Qt::lightGray, Qt::black); + int dim = qMax(unscaled.width(), unscaled.height()); + QPixmap scaled(dim, dim); + scaled.fill(Qt::lightGray); + QPainter *painter = new QPainter(&scaled); + painter->drawPixmap((dim / 2) - (unscaled.width() / 2), 0, unscaled); + delete painter; + return scaled; + } else { + return infinity(); + } +} diff --git a/src/utils.hpp b/src/utils.hpp new file mode 100644 index 0000000..b563ca3 --- /dev/null +++ b/src/utils.hpp @@ -0,0 +1,27 @@ +#ifndef UTILS_HPP +#define UTILS_HPP + +#include +#include +#include +#include +#include +#include + +namespace utils { + QColor invertColor(QColor color); + QPixmap extend(QPixmap pixmap, int extraSize = 25, QColor hl = Qt::transparent); + QPixmap fullscreen(bool cursor = true); + QPixmap fullscreenArea(bool cursor = true, qreal x = 0, qreal y = 0, qreal w = -1, qreal h = -1); + QPixmap window(WId wid, QScreen *w = QApplication::primaryScreen()); + void toClipboard(QString value); + QPoint smallestScreenCoordinate(); + QPixmap + renderText(QString toRender, int padding = 5, QColor background = Qt::transparent, QColor pen = Qt::white, QFont font = QFont()); + void externalScreenshot(std::function callback); + void externalScreenshotActive(std::function callback); + QString randomString(int length); + QIcon getTrayIcon(int num); +} // namespace utils + +#endif // UTILS_HPP diff --git a/worker/worker.cpp b/src/worker/worker.cpp similarity index 93% rename from worker/worker.cpp rename to src/worker/worker.cpp index 598ab68..3b599cf 100644 --- a/worker/worker.cpp +++ b/src/worker/worker.cpp @@ -13,13 +13,14 @@ QMutex Worker::lock; // 1. Convert the image to the right format // 2. Consume the image. void Worker::queue(WorkerContext *context) { + init(); QMutexLocker ml(&lock); _WorkerContext *c = new _WorkerContext; c->image = context->pixmap.toImage(); c->consumer = context->consumer; c->targetFormat = context->targetFormat; c->underlyingThing = context; - inst->qqueue.enqueue(c); + inst->qqueue.enqueue(std::move(c)); } void Worker::init() { @@ -60,11 +61,12 @@ void Worker::process() { lock.lock(); if (!qqueue.isEmpty()) { _WorkerContext *c = qqueue.dequeue(); + lock.unlock(); c->consumer(c->image.convertToFormat(c->targetFormat)); delete c->underlyingThing; delete c; - } - lock.unlock(); + } else + lock.unlock(); std::this_thread::sleep_for(std::chrono::milliseconds(10)); // STL likes it's scopes } emit finished(); diff --git a/worker/worker.hpp b/src/worker/worker.hpp similarity index 100% rename from worker/worker.hpp rename to src/worker/worker.hpp diff --git a/themes/breeze/.gitignore b/themes/breeze/.gitignore new file mode 100644 index 0000000..8d35cb3 --- /dev/null +++ b/themes/breeze/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +*.pyc diff --git a/themes/breeze/LICENSE.md b/themes/breeze/LICENSE.md new file mode 100644 index 0000000..ef01015 --- /dev/null +++ b/themes/breeze/LICENSE.md @@ -0,0 +1,26 @@ +The MIT License (MIT) +===================== + +Copyright © `<2013-2014>` `` +Copyright © `<2015-2016>` `` + +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. diff --git a/themes/breeze/README.md b/themes/breeze/README.md new file mode 100644 index 0000000..fd2c406 --- /dev/null +++ b/themes/breeze/README.md @@ -0,0 +1,96 @@ +BreezeStyleSheets +================= + +Breeze and BreezeDark-like stylesheets for Qt Applications. + +C++ Installation +================ + +Copy `breeze.qrc`, `dark.qss`, `light.qss` and the `dark` and `light` folders into your project directory and add the qrc file to your project file. + +For example: + +```qmake +TARGET = app +SOURCES = main.cpp +RESOURCES = breeze.qrc +``` + +To load the stylesheet in C++, load the file using QFile and read the data. For example, to load BreezeDark, run: + +```cpp + +#include +#include +#include + + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + // set stylesheet + QFile file(":/dark.qss"); + file.open(QFile::ReadOnly | QFile::Text); + QTextStream stream(&file); + app.setStyleSheet(stream.readAll()); + + // code goes here + + return app.exec(); +} +``` + +PyQt5 Installation +================== + +To compile the stylesheet for use with PyQt5, compile with the following command `pyrcc5 breeze.qrc -o breeze_resources.py`, and import the stylesheets. Afterwards, to load the stylesheet in Python, load the file using QFile and read the data. For example, to load BreezeDark, run: + + +```python + +from PyQt5 import QtWidgets +from PyQt5.QtCore import QFile, QTextStream +import breeze_resources + + +def main(): + app = QtWidgets.QApplication(sys.argv) + + # set stylesheet + file = QFile(":/dark.qss") + file.open(QFile.ReadOnly | QFile.Text) + stream = QTextStream(file) + app.setStyleSheet(stream.readAll()) + + # code goes here + + app.exec_() +} +``` + +License +======= + +MIT, see [license](/LICENSE.md). + +Example +======= + +**Breeze/BreezeDark** + +Example user interface using the Breeze and BreezeDark stylesheets side-by-side. + +![BreezeDark](/assets/Breeze.gif) + +Acknowledgements +================ + +BreezeStyleSheets is a fork of [QDarkStyleSheet](https://github.com/ColinDuquesnoy/QDarkStyleSheet). + +Contact +======= + +Email: ahuszagh@gmail.com +Twitter: KardOnIce + diff --git a/themes/breeze/assets/Breeze.gif b/themes/breeze/assets/Breeze.gif new file mode 100644 index 0000000..af6a135 Binary files /dev/null and b/themes/breeze/assets/Breeze.gif differ diff --git a/themes/breeze/breeze.qrc b/themes/breeze/breeze.qrc new file mode 100644 index 0000000..88fb185 --- /dev/null +++ b/themes/breeze/breeze.qrc @@ -0,0 +1,89 @@ + + + light/hmovetoolbar.svg + light/vmovetoolbar.svg + light/hsepartoolbar.svg + light/vsepartoolbars.svg + light/stylesheet-branch-end.svg + light/stylesheet-branch-end-closed.svg + light/stylesheet-branch-end-open.svg + light/stylesheet-vline.svg + light/stylesheet-branch-more.svg + light/branch_closed.svg + light/branch_closed-on.svg + light/branch_open.svg + light/branch_open-on.svg + light/down_arrow.svg + light/down_arrow_disabled.svg + light/down_arrow-hover.svg + light/left_arrow.svg + light/left_arrow_disabled.svg + light/right_arrow.svg + light/right_arrow_disabled.svg + light/up_arrow.svg + light/up_arrow_disabled.svg + light/up_arrow-hover.svg + light/sizegrip.svg + light/transparent.svg + light/close.svg + light/close-hover.svg + light/close-pressed.svg + light/undock.svg + light/undock-hover.svg + light/checkbox_checked-hover.svg + light/checkbox_checked.svg + light/checkbox_checked_disabled.svg + light/checkbox_indeterminate.svg + light/checkbox_indeterminate-hover.svg + light/checkbox_indeterminate_disabled.svg + light/checkbox_unchecked-hover.svg + light/checkbox_unchecked_disabled.svg + light/radio_checked-hover.svg + light/radio_checked.svg + light/radio_checked_disabled.svg + light/radio_unchecked-hover.svg + light/radio_unchecked_disabled.svg + dark/hmovetoolbar.svg + dark/vmovetoolbar.svg + dark/hsepartoolbar.svg + dark/vsepartoolbars.svg + dark/stylesheet-branch-end.svg + dark/stylesheet-branch-end-closed.svg + dark/stylesheet-branch-end-open.svg + dark/stylesheet-vline.svg + dark/stylesheet-branch-more.svg + dark/branch_closed.svg + dark/branch_closed-on.svg + dark/branch_open.svg + dark/branch_open-on.svg + dark/down_arrow.svg + dark/down_arrow_disabled.svg + dark/down_arrow-hover.svg + dark/left_arrow.svg + dark/left_arrow_disabled.svg + dark/right_arrow.svg + dark/right_arrow_disabled.svg + dark/up_arrow.svg + dark/up_arrow_disabled.svg + dark/up_arrow-hover.svg + dark/sizegrip.svg + dark/transparent.svg + dark/close.svg + dark/close-hover.svg + dark/close-pressed.svg + dark/undock.svg + dark/undock-hover.svg + dark/checkbox_checked.svg + dark/checkbox_checked_disabled.svg + dark/checkbox_indeterminate.svg + dark/checkbox_indeterminate_disabled.svg + dark/checkbox_unchecked.svg + dark/checkbox_unchecked_disabled.svg + dark/radio_checked.svg + dark/radio_checked_disabled.svg + dark/radio_unchecked.svg + dark/radio_unchecked_disabled.svg + light.qss + dark.qss + + diff --git a/themes/breeze/breeze_resources.py b/themes/breeze/breeze_resources.py new file mode 100644 index 0000000..fb51bcf --- /dev/null +++ b/themes/breeze/breeze_resources.py @@ -0,0 +1,3225 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt5 (Qt v5.11.1) +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore + +qt_resource_data = b"\ +\x00\x00\x13\xe6\ +\x00\ +\x00\x7c\x42\x78\x9c\xdd\x1d\x5d\x73\xdb\x36\xf2\x3d\xbf\x02\x75\ +\x5e\xe2\x9e\x14\x4b\x96\xed\xc4\x4c\xd3\x19\xd9\x96\x63\xcd\xd9\ +\x96\x23\x29\xcd\x65\x3a\x9d\x0e\x29\x42\x16\x1b\x8a\x64\x49\x2a\ +\xb6\x7b\x73\xff\xfd\x16\x20\x09\x02\x20\x40\x42\xb2\xec\xcb\x35\ +\x4e\x53\x99\x04\xf6\x0b\x8b\xc5\x62\xb1\x0b\xed\xfd\xf8\x02\xfd\ +\x88\xd0\x49\x8c\xf1\x5f\x18\x25\xe9\x83\x8f\x93\x05\xc6\xe9\x6b\ +\x78\x4c\xdf\x58\xf6\x2a\x5d\x84\xb1\x85\x4e\x43\xdf\x0b\xd0\xd9\ +\xea\xcf\x15\x4e\x82\xf0\x21\x7b\x89\x5d\x2f\x25\x2f\xfb\x3e\xbe\ +\x47\x17\xab\xe4\x2f\xfb\x76\x91\xbd\xf1\xbd\x19\x0e\x12\x6c\xa1\ +\xab\xe1\xb4\x85\x12\x8c\xd1\xe5\xf0\x74\x70\x3d\x19\xbc\x5e\xba\ +\x05\xec\xe9\xc2\x4b\x10\xfc\x0d\x63\xef\xd6\x0b\x6c\xdf\x7f\x40\ +\x36\x9a\x87\xf1\x57\x14\xce\xd1\xc7\x33\x3b\xfe\x3a\x21\x04\x4d\ +\x08\x41\x2d\x64\x07\x2e\x69\xec\xd8\x09\x76\x51\x18\xe4\x34\xef\ +\x71\xf4\x93\x1e\x68\x16\xfa\x61\x8c\x92\xd9\x02\x2f\x71\x0b\x39\ +\xab\x94\x74\x02\xca\x83\x10\xdd\xd9\x80\x60\x3e\xf7\x7c\xcf\x4e\ +\x01\xc6\x9d\x97\x2e\xd0\x3f\xcf\x06\x05\xaf\xed\x6d\xfc\xc9\x19\ +\xc3\x84\x6f\x74\x99\x09\x01\xbd\x82\x5f\x76\x73\x2c\xa7\x61\xf4\ +\x00\xfc\x2e\x52\xf4\x6a\xb6\x8b\x7e\xda\xef\x74\x7b\x6d\xf8\xe7\ +\xe0\x67\xf4\x93\x24\xe2\x9f\xd5\xcd\x0f\x49\xf3\x23\x68\xce\x0b\ +\xfd\xe7\x1c\xfa\x0d\x8e\x97\x5e\x92\x78\x20\x1f\x60\x7b\x81\x63\ +\xec\x3c\xa0\xdb\xd8\x0e\x80\xe1\x16\x9a\x83\x98\x88\x6c\x67\x0b\ +\x3b\xbe\x05\xe9\xa4\x21\x48\xf5\x01\x45\x38\x4e\xa0\x43\xe8\xa4\ +\xb6\x17\x78\xc1\x2d\x01\x64\x83\x20\xa3\x07\xd2\x38\x25\xa3\x94\ +\x84\xf3\xf4\xce\x8e\x31\x1d\x05\x3b\x49\xc2\x59\x26\x43\x37\x9c\ +\xad\x96\x38\x48\xed\x94\xa0\x04\xd1\xe2\x04\xbd\x4a\x17\x98\x80\ +\xd8\x99\xe4\x9d\x76\x76\x29\x2a\x17\xdb\x3e\x19\x09\x78\x8d\x8a\ +\x57\x74\x10\x42\x18\xa4\x18\x27\x69\xec\xcd\x08\x98\x16\x34\x9a\ +\xf9\x2b\x37\xa7\xa4\x68\xe1\x7b\x4b\x2f\xc7\x43\x20\x50\xa1\x24\ +\x04\xee\x2a\x01\x56\x08\xb5\x2d\xb4\x0c\x5d\x6f\x4e\xfe\x8f\x29\ +\x7f\xd1\xca\xf1\xbd\x64\xd1\x22\x60\x5c\x8f\x20\x00\x7d\x80\xe7\ +\x09\x79\x4e\x87\x86\xaa\xd5\x1e\x51\x18\xec\xfb\x04\x88\x07\x0c\ +\x50\xa6\x4b\x1a\x33\xd5\x4b\x43\x02\x25\x22\xf2\x4d\x73\x89\x51\ +\xec\x77\x8b\x70\x29\xb2\x04\xe2\x9a\xaf\xe2\x00\x10\x63\x97\xf2\ +\x1d\x82\xf8\x28\xd2\x3f\xf0\x2c\xcd\x01\x91\x1e\xf3\xd0\xf7\xc3\ +\x3b\x60\x13\x10\x07\x30\x93\x80\xb5\xc4\xca\x07\x92\xa8\x90\xed\ +\x84\xdf\x30\xe5\x2c\xd3\x80\x20\x4c\x81\xea\x8c\x1a\x32\x28\x51\ +\x39\xd8\xf9\xab\x64\x01\xb3\x08\x39\x38\x97\x20\xe0\xf7\x02\x3a\ +\x9a\x1c\x73\x31\xa1\x24\x49\x41\x25\x3c\x18\x8f\x28\x8c\x29\x5e\ +\x99\xe9\x62\x52\x4c\x2f\x06\x68\x32\x3a\x9f\x7e\xee\x8f\x07\x68\ +\x38\x41\x37\xe3\xd1\x2f\xc3\xb3\xc1\x19\xda\xe9\x4f\xe0\xf7\x9d\ +\x16\xfa\x3c\x9c\x5e\x8c\x3e\x4d\x11\xb4\x18\xf7\xaf\xa7\x5f\xd0\ +\xe8\x1c\xf5\xaf\xbf\xa0\x7f\x0e\xaf\xcf\x5a\x68\xf0\xaf\x9b\xf1\ +\x60\x32\x21\xa0\x46\x63\x34\xbc\xba\xb9\x1c\x0e\xe0\xf1\xf0\xfa\ +\xf4\xf2\xd3\xd9\xf0\xfa\x03\x3a\x81\xae\xd7\x23\x98\x2b\x43\x98\ +\x24\x00\x77\x3a\xa2\x38\x73\x68\xc3\xc1\x04\xe0\x91\xde\x57\x83\ +\xf1\xe9\x05\x3c\xe9\x9f\x0c\x2f\x87\xd3\x2f\x2d\x74\x3e\x9c\x5e\ +\x03\x64\x74\x0e\x70\xfb\xe8\xa6\x3f\x9e\x0e\x4f\x3f\x5d\xf6\xc7\ +\xe8\xe6\xd3\xf8\x66\x34\x19\x00\x11\x67\x00\xf9\x7a\x78\x7d\x3e\ +\x06\x44\x83\xab\xc1\xf5\x94\x70\x05\xb8\xe1\x31\x1a\xfc\x02\xbf\ +\xa3\xc9\x45\xff\xf2\x92\x22\xec\x7f\x02\x36\xc6\x13\x42\xe5\xe9\ +\xe8\xe6\xcb\x78\xf8\xe1\x62\x8a\x2e\x46\x97\x67\x03\x78\x78\x32\ +\x00\xfa\xfa\x27\x97\x83\x0c\xdb\xf5\x17\x3a\x35\x2f\xfb\xc3\xab\ +\x16\x3a\xeb\x5f\xf5\x3f\x0c\x68\xc7\x11\x00\x1a\xd3\x96\x39\x8d\ +\x9f\x2f\x06\xf4\x11\xa0\xec\xc3\xdf\xd3\xe9\x70\x74\x4d\xe4\x73\ +\x3a\xba\x9e\x8e\xe1\x57\xaa\x99\xd3\xd1\x78\xca\x7a\x7f\x1e\x4e\ +\x06\x2d\xd4\x1f\x0f\x27\x44\x38\xe7\xe3\x11\x60\x20\xd2\x85\x4e\ +\x23\x0a\x07\xba\x5e\x0f\x32\x40\x44\xf2\x84\x76\x02\x84\x8d\x11\ +\xb4\x22\xec\x7c\x9a\x0c\x4a\x8a\xce\x06\xfd\x4b\x00\x37\x21\xfd\ +\xf9\x01\x7d\xbd\x4d\xb3\xb7\xf7\xe2\xc5\xc7\x69\x18\xfa\x53\x2f\ +\x7a\xf1\xef\x17\x08\xfe\x38\xf6\xec\xeb\x6d\x1c\xae\x02\xb7\x4d\ +\xad\xb2\x85\x1c\x1f\x1e\xbd\xa3\x2f\xf3\x27\x77\x0b\x2f\xc5\xd9\ +\x93\xc8\x76\xc9\x9c\xb7\x50\xe7\xf5\x21\xbe\x7f\xf7\xe2\x3f\x00\ +\xf0\xb3\xe7\xde\xe2\x34\x87\x97\x77\x79\xd9\xeb\xf6\x8e\x7a\x27\ +\xef\x34\x38\x5e\x0e\xce\xcf\x3b\xe7\xdd\xec\x35\x4c\x6b\x4c\x8d\ +\x4a\xbb\xd2\xf0\x65\xaf\xd7\x3f\x38\x3b\x97\xdb\x35\x21\xf1\xbd\ +\x08\xf8\x08\x63\x17\xc7\xf9\x4b\xfa\xb9\xed\x2d\xed\x5b\x58\xee\ +\x82\x30\xc0\xfc\x73\xe0\x26\xba\x47\x29\x58\xe0\x24\x82\x69\x15\ +\xa4\xbc\x0c\xc0\xac\x81\xc5\x87\x5e\x1d\x9e\x5b\x0b\x24\xb2\xb4\ +\x16\x30\xf7\x63\xad\x20\x05\xe2\x65\x92\x65\x50\x19\x73\xd8\x6d\ +\x86\x06\x3d\x5f\x7c\x3c\x5d\xe0\xd9\xd7\x93\xf0\x3e\x6f\x0e\x74\ +\xcf\xf8\x61\x11\x08\x2f\xd9\x55\xc9\x6d\x09\xcb\x8c\x07\xa2\x0f\ +\xd3\x34\x5c\x12\x00\xfb\x0c\x00\x01\x9a\x3e\x58\x68\xbf\x93\xf3\ +\x5e\x60\xb5\xc0\x50\xdb\x8e\xcf\xa8\x2d\xe0\x9e\xf4\x4f\x8e\x4f\ +\xde\x66\x6d\x3f\x00\xf5\x11\x69\x6b\x79\x60\x37\x67\x36\xf8\x20\ +\x79\xeb\x1c\xa3\x8f\xe7\xa9\x80\x4f\xf5\x5c\xc0\x5a\x42\xb2\x56\ +\xc1\x8c\x3c\x85\x05\xb3\xe1\xbd\x35\x87\xd5\x2f\x29\xa4\x2a\xa8\ +\xc1\x2a\xf6\x5f\x59\x7b\x3e\x31\xdb\x7b\xb4\xb5\x13\xde\xff\xce\ +\x3a\xfe\x5e\xf0\xf8\x3a\xf9\x76\xbb\x6b\x40\x49\xa6\x0d\x8d\xf4\ +\x44\xb0\x8a\x26\x94\x6e\x85\x84\x14\xd0\xea\x5b\x51\xee\x1a\x5b\ +\xe5\x38\x05\x29\x54\xa7\x81\x99\x5c\xda\x94\xb0\x06\xa1\xe4\x6d\ +\xcd\xc5\x9e\x77\x30\x03\xcb\xb8\xae\x6b\x53\x2f\x67\x13\xf9\x6d\ +\x51\x7a\xeb\xb1\x57\x37\xf4\x42\x9b\xb5\xe5\x6b\x34\x78\xf0\x09\ +\xa7\xc4\x6d\x09\xc0\x7d\x34\x47\x21\x74\x5b\x07\xc5\xba\xbc\x08\ +\x9d\xd7\xe7\xa8\x56\x7b\xc4\x96\xe5\xc8\x9b\x41\x96\xcc\xe2\xba\ +\xbc\x98\x9a\x9c\x42\x07\x8a\xe6\x0d\xaa\xb2\x3e\x55\x1b\x9b\xc0\ +\x06\x8a\xaa\x0d\xb7\x64\x98\xc7\xb6\xeb\x85\x27\x2b\x58\xc2\x82\ +\xa7\x5a\x11\x25\x34\x26\x4b\x20\xdf\x5c\xb3\x76\x35\x35\x31\x5c\ +\xbe\x62\x02\xc6\x58\x44\xf5\x0b\x4e\x63\xc3\x26\x7b\xa8\x10\xb3\ +\x31\xe5\x95\xe9\xac\xa1\x46\xb5\xc0\x3c\x92\x86\xaa\x8d\xae\xc7\ +\xcd\xec\x48\x43\xb3\x27\x10\xd7\xda\xa4\x9a\x59\x58\x01\xf8\x9a\ +\x23\x21\xcf\x87\xcd\xb9\xda\x48\x79\x8d\xed\x89\xc1\x4c\xb9\xc2\ +\xc1\xea\xc4\xae\xf1\xeb\xf9\xcd\x8b\xca\xaf\xcf\x01\x58\xd4\xb3\ +\xaf\x80\xb1\xf8\x9d\x86\xa2\x83\x7e\x2b\x20\xf5\x14\x36\x30\xaf\ +\xbb\xf8\x1e\x25\xa1\xef\xb9\xa2\x0d\x12\x41\xab\x75\x51\xd9\x79\ +\x83\x3d\x8d\xc2\x78\xb6\x29\x6c\x61\xef\xc8\x19\xd6\x6e\x61\x58\ +\x09\x95\xa6\x44\xe9\xb1\x0a\xb6\x9a\x80\x04\xae\x67\x6c\x45\x28\ +\xdb\x1c\x4a\x6d\xca\x51\x12\xb7\xb7\xa8\x07\xff\xb1\x4f\xca\x4d\ +\x0a\x5b\x5b\x54\x64\xf3\xa3\x85\xf6\x7e\x24\xf1\x33\x1c\x7f\xc3\ +\x74\x6d\x22\x91\xa5\xb8\xdc\xd2\xe6\xfd\xc9\x0e\x5d\x24\x4c\xd6\ +\x06\x9d\xbe\x59\xd0\x10\x50\x71\xdb\xac\x05\x26\x0a\x2f\xec\xb0\ +\x78\x55\xa2\xd3\xc1\xf1\x57\x58\xc1\x57\x57\xe2\x36\x2e\x20\x15\ +\x92\x03\x66\x60\x5e\xb7\xf1\xfd\xcc\x5f\x25\xde\x37\x12\xcb\xca\ +\xe7\x24\x7a\x8f\xe8\xd4\x02\x86\xee\xb3\x58\x75\xf9\x8e\x80\x7c\ +\x45\xc2\xcc\x1f\xfb\x94\x69\xea\x22\x10\xc2\xd3\x41\x01\x68\x97\ +\x48\xa0\x60\x9f\xcd\x73\x01\x57\x39\xeb\xb7\xe4\x3c\x18\x62\xab\ +\xcc\xcb\x27\x45\xbb\x85\x1d\x94\x11\x82\x0d\xb8\xaa\x60\x02\x6d\ +\x50\x6b\x02\x35\xb6\x24\xbe\x0f\x76\x5b\x56\x86\xcd\x34\x61\x13\ +\x2d\x30\x34\xf9\x0d\x68\xcc\x05\xf5\x28\x7c\xeb\x31\xd5\x3c\xe8\ +\x8f\x18\xf0\x7a\x14\xd4\x26\xb4\xed\x38\x0e\xef\xd4\x06\xb6\x01\ +\x38\xf9\xf7\x77\xda\x3d\x07\x4d\xda\xdf\x79\x6e\xba\x20\x10\x8e\ +\x0a\x08\xa5\x15\x3b\xce\x6d\x0f\x8b\x9b\x69\x3c\xf0\x83\x43\xf2\ +\xd3\x18\x79\x24\x9c\xf4\x9d\x04\x6c\xf4\x2c\x1d\x82\xa1\xfd\xc5\ +\xc3\x05\x23\xb6\x0f\x5b\x32\xba\xb9\x5c\x73\xf1\xd7\x2d\x04\xbd\ +\x7e\xef\xb8\x77\x2c\x88\x84\x08\x77\x95\x08\x2b\x56\xce\x56\xe1\ +\x56\x16\x2b\x77\x75\x07\x20\x2d\x8e\x5c\x60\xf0\xe3\xd4\x76\x24\ +\x30\x6c\xc3\xa6\x72\x57\x8b\x67\x13\x00\x84\xd5\xa8\x32\xff\x8d\ +\xc0\xbe\x04\x7f\x6e\xe0\x7a\xa9\xde\x31\x3a\x3f\x25\x3f\xea\x48\ +\x31\xc7\x3b\xb5\x04\x56\x46\xbe\x81\x1b\xa3\x97\x9a\x6e\x41\x2c\ +\xf6\x9e\xc6\x7e\x8e\x16\x7a\xe1\xb3\xa4\x61\x54\x5d\x16\xcb\x87\ +\x62\xc0\x33\xf5\x52\xbf\x08\x9c\x24\x2b\x07\x5c\x90\x34\x0e\xfd\ +\x76\x76\x84\x6a\xe5\xbd\xdf\xc9\xaf\xa3\x30\xa1\xc7\x4b\xe0\xe5\ +\x85\x11\x9a\x81\xd3\x50\x44\xaf\x0b\x22\x0a\xa7\xa3\xe2\x51\xb1\ +\xf5\x59\x49\x21\xf8\x60\x6f\x0a\x22\x0b\x8d\x9f\xcc\x00\xa5\xdf\ +\x8f\xb1\x2d\x9a\x01\x85\x08\x36\xf0\x12\x2b\x0e\x6e\x86\x8e\x68\ +\xf3\x02\xa4\xf0\x17\x70\x6c\xfb\x92\x9b\xd2\x2d\xd5\xa4\x34\x24\ +\xc4\x01\xa3\x2f\xf8\xcf\x2a\xb2\xf8\xe0\xfd\xcb\xfd\xfe\xfe\xf1\ +\xbe\x6e\xba\x1d\x54\x9d\x21\xa6\xbf\x45\x47\x91\x64\x6b\x61\x07\ +\xae\x8f\xab\xa4\x2b\x20\x1c\x75\x0e\xcf\x0f\x73\xf7\x78\x09\x03\ +\xc0\x0c\x9a\x3c\x07\x24\x82\x24\x8c\x30\xae\x6d\xba\x7d\xaa\xe0\ +\x64\xb2\x61\x32\x61\x9f\xd6\x30\xb9\xf2\x9a\xc4\xd9\xde\xae\x6c\ +\x79\xd9\x03\xa5\xae\x52\xa0\x95\xf7\xb2\xaa\x4b\xec\x41\xcb\x26\ +\xf6\x22\xc6\x5e\x64\xc8\x1e\x99\x1d\x7a\xee\x2a\xdc\xc8\xec\x2a\ +\xb9\x23\x30\xd7\x65\x4e\x31\x76\x79\x6c\xa5\xa9\x15\xdb\xaa\x6c\ +\xb8\x6c\x3e\xd5\xd0\x35\x8d\x5d\xce\x1e\x6a\x6a\x66\xc0\x5f\x39\ +\x88\x8f\x66\x6f\x93\xb1\x5b\x45\x99\x47\xc3\x51\x2d\xb2\xe5\x86\ +\x77\x41\xa5\x89\x62\xa3\xce\x56\xcd\x8a\x6a\x44\x84\x67\x1d\x78\ +\x22\x35\xa9\x41\x1d\x70\xae\x2b\x0c\x40\x0a\x2e\x5f\x8d\x69\xe2\ +\xad\x62\x21\xd1\xaa\xcd\xad\x58\xdb\xea\xe4\xdb\xd0\xe6\xaa\x8d\ +\x6a\x33\xdd\xb2\x49\x2d\x3d\xc2\xf5\x6c\x2a\xd3\x48\x09\xa5\xb8\ +\xda\x08\x76\xb5\xc9\xe4\xac\xa2\x6d\x1b\x1c\x58\xb0\x37\xb6\x37\ +\xdb\xe3\x8b\x68\xf9\xb6\x39\xcb\xa2\x3e\x1b\xaf\x14\x05\x73\x2c\ +\x4c\x5d\xdb\x88\x5a\x1a\xc3\xc1\x7b\xae\x31\xab\x1f\x34\x15\x5f\ +\xd5\x46\x06\x16\xb4\x1c\xbb\xff\xd1\x90\x31\x1b\x5a\x50\x2d\x32\ +\xc5\x59\x50\xed\xdc\x6f\xb4\x9f\x6a\xd0\xcc\x7a\x9a\x00\xfe\x38\ +\xc5\xf7\x69\xfd\x76\x66\x93\xad\x9e\x10\x7c\xbd\xf1\x6d\x2f\xd8\ +\x16\x9e\xb5\x7d\x73\x42\xc1\x05\xb6\xa1\x01\xd9\xdb\x92\xe8\x0a\ +\x8d\xb5\xe8\xe9\x68\x8a\xb2\xea\xb7\x74\x35\x14\x4c\xbc\xbf\xf0\ +\x87\xb8\xcc\x37\xd2\x2a\x6e\x02\x0d\x6f\xa1\xa1\x62\xe1\x2f\x19\ +\x2e\x77\x0b\x65\xa0\x17\x64\xfc\xd9\x0b\x40\xaf\xaa\x31\x50\x33\ +\x61\x57\xf3\x9b\xd8\x56\x8b\xed\x16\xb8\xf3\x44\x8d\xf4\x5d\x9b\ +\x26\x13\x8a\xd1\x77\x15\x6d\xec\x34\x46\x47\xe2\x9b\xb7\xf0\x73\ +\xb4\x36\x89\x8d\x1b\x35\x9e\x07\x21\x02\xae\x0f\x1d\x33\x03\x61\ +\xa6\x2e\x26\x64\xae\x17\x69\xfe\x78\x1e\xdb\x4b\xfc\xeb\x9c\xfc\ +\x3b\x59\xd8\x11\x7e\xbf\xb3\xbf\xf3\x5b\x0b\x91\x78\x7a\xf6\xce\ +\xb2\x6e\xec\x00\xfb\xe8\xfd\x7b\xd4\xb9\xef\x74\x3a\x3d\x1a\x38\ +\xac\x76\xeb\xc9\xdd\x60\x60\xcc\x7a\x1e\xc8\x3d\x2f\x48\x28\x84\ +\x75\x3b\xd0\x74\x3b\x94\xbb\xfd\x22\x74\x3b\xd4\x74\x3b\xda\xf9\ +\x4d\xe8\x45\xf3\xab\x5d\x91\xd2\x23\xd2\x57\x98\x50\x6c\xa3\x29\ +\x07\x07\xc4\x51\xac\x0f\xc0\x28\x27\x89\x62\xe4\x9d\x99\x33\x9f\ +\xed\x6b\x8c\x13\x1b\xb9\x49\x6a\x93\xc8\xa1\x90\x1e\xa8\xf7\x20\ +\xf3\x94\xbb\xff\xe4\x19\x8a\xdc\x01\x9c\xde\xe9\xec\x1d\xf7\xde\ +\xf6\x2a\x51\x08\x69\x06\xf0\xbc\xcc\x61\x09\x6b\xdf\xe5\xda\xed\ +\x84\xbe\x2b\x20\xac\xd9\xe9\x6b\xad\xd6\x62\x09\x93\x39\x85\xfe\ +\x8e\x1d\xcb\x96\x0b\xbd\x07\x3b\x25\x45\x32\xe1\xd9\x51\xe9\x9e\ +\xca\x88\xe5\x85\x4b\x8b\xf6\x5b\x3d\xda\xc3\x72\xba\x31\xb4\xdd\ +\x0a\x52\xde\x22\x99\x33\x4c\x7b\xe9\x51\xe7\xc1\x26\x89\xe3\x5e\ +\x0d\x72\x73\xa6\x79\xd4\x89\x02\xf7\x51\xb9\x55\x61\xb8\xb9\xe0\ +\xd7\xcd\x2a\x59\x08\x49\x22\x66\xc9\xaa\x7f\x12\x1f\x0c\xcc\x13\ +\x51\x71\x50\xbb\x57\xf7\x5d\xaa\xe6\x2d\xf4\x90\x7d\x40\xf7\xfb\ +\xc5\x03\xf8\xd0\x6d\xa1\x84\x86\xdd\x3a\x85\xea\xb1\x07\xd0\xf4\ +\x25\xb6\xb1\x83\x67\xbb\xef\xea\xe7\xae\x34\x1d\x15\xb1\xca\xea\ +\x14\xae\x09\xb8\x2a\x3c\x07\xe9\x7c\x5e\x14\x4f\xe5\x38\xbd\x6a\ +\x02\x70\x07\x77\xf1\xfe\x7a\x6c\x38\x07\xe4\xc7\x8c\x8d\x76\x21\ +\x32\xfd\xe9\x71\xe5\x95\xb4\xa4\x48\xd1\x51\x99\xaa\x9a\x58\x72\ +\x41\xa8\x24\x15\x3e\x3c\x2e\x26\x4b\xd3\xcc\xa8\x70\xe9\x84\x5c\ +\x4a\xae\x3e\xab\x59\x3c\x45\x7f\x8a\xa0\xb8\x4a\x17\xb8\x70\xe4\ +\x9b\xd2\x48\x73\xec\x49\x47\x4f\xf5\x0b\xbe\x34\xb4\x47\xfd\xa3\ +\xe3\xa3\x63\x51\x10\x6c\x4b\xc3\x82\xce\x91\x17\xf0\xcf\x8b\x03\ +\x05\xf6\xa0\x70\x95\xd9\x03\xc1\x81\xae\xc0\xa3\x6e\x2d\xeb\x1b\ +\x63\x5c\x3e\x30\x39\x2f\x51\x59\x80\x2a\xfd\x5c\x22\x29\x27\x2b\ +\xf9\x95\x92\x45\xee\xbd\xc8\x2a\xf7\x42\x64\x8e\x47\x56\x65\x5d\ +\x81\xaf\xe4\x98\x87\x29\x88\x42\x4e\xfa\xa8\x3f\x12\x63\xcc\x33\ +\x23\x29\x4d\xc8\x9e\x7a\xd6\xf1\xae\x72\x9d\xe6\x1f\xd8\xe4\x47\ +\xc4\x85\x74\x07\x71\x0d\x47\x4c\x8f\x38\xb3\x30\x9a\x9d\x82\x3c\ +\x2c\x37\x0e\xa3\x36\xd9\xbd\xea\x4f\x76\x72\x91\xd4\xc7\x0a\xf8\ +\xb8\xab\x18\x87\xe3\x99\x22\x52\x65\x16\x55\xb2\x5c\xf4\x5d\x4e\ +\xac\x6b\xc7\x40\xbe\xfd\x50\x6d\xa0\x75\xf2\x80\x86\xcc\x26\x72\ +\x92\x93\xe3\xeb\x99\x95\x55\x37\x93\xc4\xc2\xf6\xf3\x6b\x84\x26\ +\x6a\xce\x1f\xf2\x83\xde\x72\x0d\x67\xc7\xc1\x3a\xbc\xa0\xaa\x2d\ +\xcd\x1b\x96\x92\xaf\x7a\x69\x96\x5a\xa9\x8c\xa7\x18\xd1\x2a\xd9\ +\x04\x65\x8a\x91\xa9\xa5\xaf\x2a\xe9\xd9\xf1\xd9\xdb\xb3\x37\x9b\ +\x04\x0d\xd4\x0b\x81\x6c\xc1\x56\x51\xdb\xe1\x7d\xa5\x86\x53\x3e\ +\xcd\x8c\xe0\x8b\x70\x94\x13\x22\x3b\xe7\x2c\xe6\x84\x8a\x10\x3a\ +\x62\xcf\x48\x4a\x76\x6e\xa0\xa2\x84\x85\xb6\x14\x06\xbf\x0c\x7b\ +\x71\x39\xd0\xfa\x46\xe1\x7c\xde\xa8\x79\x75\xd1\xe5\x4d\x14\x50\ +\x38\xde\x30\xc9\x07\x55\x44\x48\x37\xc3\x5b\x4e\x3a\x95\x50\xb8\ +\x29\x59\x27\x3b\x7e\xc2\x1b\x48\x6f\x0b\xc6\xa6\x8e\x04\x33\x09\ +\x6e\x6e\x3c\x2e\x6d\x07\xfb\xb2\x17\xc3\x8c\x03\xbf\x59\x2e\x32\ +\x3e\x6a\x3c\x1e\x2e\x24\xb5\xf7\x23\x3a\x19\x8d\x69\xc1\x24\x09\ +\x3f\x94\xf9\x22\x56\x64\x07\xb8\xc6\x46\x95\xc7\x09\xe5\x46\x52\ +\xec\x6c\xc1\xc2\x62\x9a\x71\x51\x24\x26\x68\x61\x65\x0b\x90\x79\ +\x02\x87\x98\x6e\xaa\x82\x48\xe6\xb5\x29\xbc\x7c\xcb\x50\x07\x8e\ +\x36\x31\x85\x97\xf9\x48\x12\xb8\x32\xc4\xf1\x67\x04\xbe\x05\xec\ +\x82\x1f\xda\x6e\x6c\xdf\x9d\xd8\x49\x56\x6e\x58\xf6\xcc\xc6\x81\ +\x44\x85\xc8\xbe\x9f\x14\x2c\xb3\xf2\x6a\xe4\x3c\xe4\x39\xaa\x30\ +\x9e\x4a\xc3\xdf\x13\x71\xaa\x13\x8a\x6a\xa2\x31\x59\x2f\x6b\xe6\ +\x87\x09\x96\x0c\xb1\x3e\x59\x90\x34\x5e\x27\x92\x2b\xda\x75\x45\ +\x0a\x89\x8a\x0c\xd3\xca\x21\xda\x85\xcf\x67\x7f\x42\x92\x54\x29\ +\xd6\x7a\xa2\xf2\xd6\xdb\x24\x6b\x8f\x54\x2b\xdf\xa0\x69\xff\x84\ +\x4d\x71\x4a\x65\x6a\x3b\xdc\x0c\x6d\x3e\xcf\xd0\xd4\xc3\x72\x2e\ +\x66\xf3\xd6\x34\xdf\x33\x98\x7b\x35\x7c\xb0\xae\x61\x13\x2b\x07\ +\x39\x88\x5b\x4b\x1d\x5f\xed\x7e\x40\xe9\xf9\xee\x4b\xb3\xa3\x90\ +\x93\xe5\xdb\x49\xda\xaa\x3e\x0e\x03\xff\xa1\x1d\x32\x53\xf9\x3c\ +\x72\xe4\x13\xbc\xfe\xa6\xe2\xfe\xa1\x21\xd1\x5d\xc3\x01\xef\x06\ +\x3f\x89\xfe\x6e\x95\xc9\xb9\x17\x27\xe9\x73\xb3\xfa\x64\x23\xd5\ +\x50\xff\x1e\xdf\x3a\xf6\xab\xa3\x6e\x0b\x75\xdf\xf4\x5a\x68\xbf\ +\xb7\xdf\x22\xe4\xee\xaa\x18\x30\x68\x5a\x37\x62\xf5\x54\x66\x42\ +\x7f\x7a\x5a\x0b\xef\x6a\x3a\x1d\x5d\xa9\xcd\xaf\xe0\xd4\x3c\x8f\ +\xe5\x10\x8a\x6d\xb6\x64\x15\xc4\x18\x41\x83\x6a\x69\x22\x09\xaa\ +\xdd\xe8\xa1\x4a\xe3\x72\x06\x14\xd6\x38\x7f\xf3\x3d\x1b\xe4\xbf\ +\x8b\xf4\xbf\x4b\xe3\xfc\x78\x09\x68\xb8\xfd\x9f\x58\xe9\x27\xe3\ +\xe6\xfb\x37\xd7\x15\x42\x9f\xd7\x62\x5f\x0e\xce\xa7\x6a\x7b\xcd\ +\x6d\x19\x1f\x6b\x56\x1a\x5c\x33\x43\xab\xb2\xb1\xb5\xd0\x2e\xf0\ +\x6b\xda\x8a\x62\x2f\xa2\x34\x16\x74\xc8\x15\x86\x9a\x3e\xdf\xb2\ +\x99\x36\x92\x67\xb3\xf9\xfd\xfb\xc8\xfd\xf9\x9d\x4a\x33\xf7\xf9\ +\x31\xdc\xd7\x33\xfa\xbc\xf6\x4c\xcf\x70\x03\x95\xcf\x6b\xcc\xb2\ +\x3b\xd1\x94\xd6\x8c\x8f\x58\x3d\xcb\xf4\x6b\x5a\xc6\xeb\xb5\xb1\ +\x61\x56\x99\x2d\x94\xba\x56\x8d\x73\x2a\x33\x09\x0a\x63\x96\xbd\ +\xf8\x9e\xad\xd9\xff\xbf\xd8\x37\xb4\x65\x87\x07\x87\x6f\x0e\x9f\ +\x4a\xfa\x8f\x63\xbe\x81\xcf\xef\xd5\x94\xc9\x64\x3e\xa3\x2d\xcb\ +\xe9\x40\x59\xc6\x58\x7e\xf5\x07\x57\x74\x6c\xe1\xc0\xf0\xc6\x8f\ +\x4a\xc9\x94\x0e\x3a\x1d\xb8\xf5\x80\x57\xea\x95\x4c\x28\x37\xbf\ +\xac\x44\x5f\xb1\x67\xc0\x83\x31\x1a\x7d\xe5\x1c\xc1\x72\x16\xce\ +\xbe\x8a\x39\x9c\x5c\xf0\x59\xcc\x14\x55\x1d\x83\x1c\x74\x7a\xe7\ +\xbd\x3c\xdb\x86\x16\xc6\x3a\x76\xdc\xce\x82\xdf\xe4\x72\x0e\x91\ +\x12\x6e\x9e\x72\x21\x71\xd6\x2d\x08\xe3\xa5\xed\x1b\xf5\x13\x29\ +\x17\x63\xf4\x2d\xf1\xd5\xdc\x0f\xed\x54\x75\xb0\x21\x72\xa2\xb9\ +\x7b\x45\x69\x0f\x6a\xc2\xf3\x86\xb8\xc5\x71\x22\x59\x1e\x7b\x00\ +\x0e\x7a\x6a\xf8\xe3\x01\x35\x1e\x8b\x70\xe0\xb8\x63\x11\x54\x2f\ +\xb5\x26\x78\xe5\x91\x4f\x03\x20\x33\xf2\xe4\x43\x9b\x26\xa0\xcd\ +\xe7\x2e\x1c\x58\xfe\xd8\x25\x07\x5c\x24\x4d\xd1\x64\xad\x24\xe5\ +\xb3\x90\x36\xc8\xce\x28\xd2\x94\xe8\x80\xb3\x7c\x2c\xcb\x01\x65\ +\x98\x2d\xac\x85\x9d\xb4\x13\xcf\xf1\x61\x9d\x4d\xac\x1f\x6c\xf7\ +\x8f\xd0\x0b\x92\x36\x7f\x5b\x90\x76\xae\x96\xd7\x7f\xb7\xbf\x91\ +\x04\xce\x8c\x85\x8e\xc8\x83\x1a\xd1\xa6\x78\x32\x58\xed\x65\x18\ +\x37\x60\xfb\x81\xa0\x9b\x2d\x3c\xdf\x05\x6d\xcf\x7e\xdb\x16\x72\ +\x1c\xb8\xcd\x9c\x6a\x50\xd3\x21\x17\xf2\xe2\x8a\x4e\xd9\x1b\xb1\ +\x2f\xdf\x75\x33\x42\x33\xeb\x56\xd2\x4b\x40\x28\xfa\x66\x1d\x7e\ +\xe7\x1a\x6b\x58\x0b\xa3\x9c\x2c\x35\x7f\x2a\xc6\xaa\x5d\xb6\xc0\ +\x16\x01\x6a\xc8\x14\x6b\xca\x16\x2a\x3f\x27\x90\x8c\x3f\x37\xc5\ +\xd8\x83\x92\x05\xf5\x75\x4c\xfc\x21\x36\x0f\x4b\xf6\xa1\x2a\xb0\ +\x15\x0d\x44\x5c\xdb\xf1\xc2\xf8\x6b\x82\x75\x2e\xab\x8a\x9d\xfc\ +\xe6\x0d\x0b\x50\x01\x72\x5d\x22\xbe\x64\x7c\xf8\x45\xb7\xcc\x1d\ +\x51\xdc\x6c\x00\x04\x1c\x9f\xf6\x3b\xfd\x3c\xe9\x9a\xab\xae\xaf\ +\x5b\xc2\x78\xba\x9a\xef\x3e\xa8\x0d\x22\x94\xd6\x72\x70\x9a\x67\ +\x8b\xb3\x03\xee\xca\x1d\x2f\xdc\xa3\x82\xd2\x76\xe7\xf5\x5b\x52\ +\xb3\xaa\x21\xf7\x58\x23\x46\x65\x49\x41\x8d\x10\x59\x4a\xce\x1a\ +\x32\xd4\xa6\x93\x57\xc6\xb6\xa9\xd4\xf9\x49\x25\xd8\xc9\x65\x68\ +\x2a\xc1\xca\x80\xcb\x97\xc4\xc8\xec\xac\x77\x41\x8d\x1e\x0d\x2b\ +\x80\xd5\xa0\x69\xcc\xeb\x3e\xec\xce\xf6\xe7\x33\x11\x8d\xa2\xa0\ +\x9e\x43\x51\xa9\x27\x55\x0d\x8d\x22\x57\xbf\x66\xac\x55\x25\xfe\ +\x0a\x72\xea\x10\xf2\x43\x5d\x93\xcc\xc3\x9c\x7e\xf3\xac\x48\x83\ +\x3c\x2a\x6d\xd2\x28\x5f\x4d\xae\x8e\x14\x88\x54\xfd\x1a\x85\xd1\ +\x2a\xba\x0a\x5d\xfc\x7e\xa7\xbb\xf3\x1b\xc9\x5d\x22\x41\x13\x7a\ +\xed\x1d\xbd\xda\x88\xb6\xba\x21\x8d\xca\x62\x36\xa9\x64\x63\xbf\ +\x48\x7a\xb2\xbf\x62\xfa\xcd\x20\xa4\x33\xc9\x7c\xa2\xb0\x8b\x8b\ +\xc5\xf2\x3b\xf3\xd4\xa8\xf7\x25\xd4\xc3\x80\x7e\xad\x42\x3d\xde\ +\xee\x66\x78\x2d\x6b\x09\x8c\xb5\xe5\xfb\xce\xd7\x4c\x0f\xe4\xef\ +\xec\x29\x13\xc7\x0a\x51\x24\x0b\x6f\x9e\x22\x2f\x45\x36\x72\xe0\ +\xdf\x3c\xe7\xab\x2c\xbe\x92\x72\x0a\xe9\xb3\xa3\xea\xe8\xe4\xa4\ +\xae\x9b\xb7\xad\xac\xf7\x32\x45\xc9\x96\x5f\x99\x0a\xd5\xb6\x60\ +\x43\x65\x16\xee\xc2\x2a\xf1\x94\x17\xee\x72\x0f\xb9\x82\x09\x0d\ +\x45\x8d\x95\x13\x07\x6f\x9c\xb7\xc4\xe4\x68\xe9\xe1\x1b\xd4\xcf\ +\x17\x01\xf3\x9a\x17\x57\x55\xe3\xec\x47\x91\x32\x34\xa5\x69\x04\ +\x7a\x45\x10\x64\x43\xfa\x8f\x6c\x19\xa4\x3a\x9f\xf5\x86\x47\x41\ +\x88\x52\x7c\x4f\xc6\x16\x14\x91\x7c\x55\x49\x38\xa3\xdf\x2d\x93\ +\x7d\xfd\x09\xaf\x85\xd5\x02\x2c\x21\x94\xa8\xa8\x3b\x53\x6b\x25\ +\xf5\x61\x4d\xe4\x20\x55\x31\xa9\xe7\xe0\x46\xc5\x1a\x99\xd0\xf8\ +\x7a\x8d\x22\xb4\xfa\xb6\xe2\x8d\x9a\x8e\xd8\x6d\xec\xb9\x44\x00\ +\xea\xa2\xaa\xa6\x8d\x64\x81\xad\xc5\x57\xf6\x6b\x6e\xf0\x8a\x34\ +\x0e\xb3\x4e\xa9\x0d\xbe\xb0\x42\x06\xc5\x1c\x67\x7b\x96\x7a\xdf\ +\xf0\x56\x41\x36\x7c\xb7\x06\x9d\x58\x3d\x3d\x5c\x69\x13\xa0\x28\ +\x8e\x6a\x96\x86\x6b\x63\x7c\x5c\x43\xba\x08\x49\x12\x46\x75\x23\ +\x62\x22\xad\x06\x94\x3a\x88\x9a\x9d\x8d\xa9\x30\x0b\xcf\x49\x83\ +\x56\xa5\x6c\xf5\x27\xa2\xda\xe8\xbb\xda\xcd\x88\x64\x27\x23\xaa\ +\x58\x10\xf2\x64\xfd\x1b\x2d\x9a\x6e\xd6\xd8\xac\x18\x47\x43\x3d\ +\x31\x90\x6d\x1b\x96\x4c\x56\x4b\xa2\xbd\x83\xc3\x2a\xdd\xda\x2c\ +\xa6\xde\x6a\x6c\x26\x9d\x38\x19\x85\xf2\x6b\x41\x2a\x00\x55\x32\ +\x9c\x95\x00\x38\x9f\x3d\x27\x1e\x35\x37\x54\x93\xdf\x90\x24\xd2\ +\x00\x55\x05\xab\x1a\x6e\x55\x01\x29\x4a\x5d\x5f\x20\xe1\x80\x89\ +\x3f\x1a\x52\xdc\x7a\x70\x0c\xb3\x93\xec\xd1\x00\x2c\x75\xc5\xe8\ +\x85\xb6\xc4\x2d\x4c\xc2\x38\xe5\x6e\xb6\x25\x07\xaf\x3c\xd6\x4a\ +\x89\x9c\x89\x8f\x25\xf3\x5f\xd4\xee\xe8\x41\x48\xe5\x3a\xcc\xba\ +\x9e\x86\x71\x80\xe3\x62\x79\x5c\x6b\xce\xe8\x4f\xd1\x1a\x67\x04\ +\x5b\xd9\xd7\xa8\x7c\xab\xbb\x0f\x22\xbc\x37\xf8\x8e\xa4\x2a\xed\ +\xca\xa2\xce\x02\xa0\x22\x10\xad\x6a\x3e\x49\xed\x74\x95\x54\x6e\ +\x74\x2f\x48\x97\xbe\x3b\x8a\x84\x99\xf3\x7e\x91\xef\xa5\x69\xb9\ +\x97\x55\xfa\x08\xaa\x6b\x63\xe4\x8e\x4d\xf6\x9b\xbf\x30\xa6\xd1\ +\x57\x52\x00\x97\x26\x94\x58\xc8\xaf\xec\x23\x19\x11\xe9\xc2\x18\ +\xea\x92\xc5\xe1\x2d\x59\x5b\x95\x97\x7e\xaa\x8b\xcb\xa5\x5d\x6f\ +\x4d\xbc\x46\xbd\x2d\x16\x29\x61\x3a\xc6\xdb\x65\xce\x97\xe3\xaf\ +\x48\xad\xd4\x39\xa9\xae\x19\x10\xaf\xa8\x91\x6f\x1f\xe0\xd4\x9e\ +\x67\x1d\x4c\xcd\x2a\xf8\x6a\x24\x81\x6a\xa0\xc1\x78\x01\x2d\xc3\ +\x02\xea\xa2\xd3\x86\xa2\xef\xbc\x31\x3d\x17\x5b\x81\xc5\x50\x56\ +\xac\xb2\xcd\x31\x77\xc3\x0b\x57\x58\xc8\x1d\xad\x71\x20\xac\x4a\ +\x1d\xa9\xc2\x13\x27\xbf\xab\x2a\x37\xa5\xab\x2a\xb3\x8b\xd6\x34\ +\x11\xb0\x5c\x22\x2a\xd5\xad\x16\x6f\x56\x49\x34\xdb\x08\x6f\x5a\ +\x10\xa9\x29\xc0\x6c\xa9\xde\x94\x9e\xaa\x86\x4a\xd6\x57\xf7\xde\ +\xb4\x02\xa9\xe0\x46\x57\x19\xb5\x2e\x4f\x5c\xf1\xa6\xb2\xe0\xb5\ +\x86\x64\xae\xab\xae\x09\xab\xf9\x6c\x66\x48\x75\x8a\x2d\xd6\x70\ +\xea\x94\xb5\x5a\x6b\xfc\x08\x75\x2d\xae\xcf\xdb\x58\x63\x85\xb2\ +\x59\x15\xa5\x8f\x0d\xdf\x18\x8f\xb1\xa2\xa4\x5e\xf5\x4e\xab\xbb\ +\x8a\xfe\xfa\x16\xa6\xfa\x5b\xf2\xf5\x48\x0d\x56\x17\x20\x6b\x0a\ +\x8f\x6b\x49\xd7\xeb\xb1\xaa\x7a\xd9\x84\x35\x95\x2e\xcb\xf7\x90\ +\xd4\xc6\xde\xc1\x67\xad\xdb\x27\x6b\xae\xb7\xd9\xe6\x2d\x48\x07\ +\x33\xc7\x05\xb9\xf1\xb7\x20\xf5\x7a\xf6\x01\x7e\xbb\x2b\x90\x95\ +\xdf\x1d\xa7\x22\xaa\xc1\xff\xd9\x9c\x34\x07\xbb\x73\x3c\x13\x48\ +\xcb\xbc\xfc\x5d\x73\x89\xa9\x2f\x88\x69\x0a\x1d\x3e\x2b\xcd\xff\ +\x05\x72\x84\x38\x4d\ +\x00\x00\x13\xbb\ +\x00\ +\x00\x7c\x55\x78\x9c\xdd\x1d\x6b\x73\xdb\x36\xf2\x7b\x7e\x05\x9a\ +\x7c\x49\x72\x52\xfc\x90\xad\xc4\x4c\xd3\x19\xd9\x96\x63\xcd\xd9\ +\x96\x23\x29\xcd\x65\x6e\x6e\x3a\x94\x08\x59\xbc\x50\x24\x4b\x52\ +\xb1\xdd\x9b\xfb\xef\xb7\x00\x09\x10\x00\x01\x12\x92\x65\x37\xd7\ +\x38\x4d\x65\x72\xb1\x2f\x2c\x16\x8b\x05\x16\xda\x79\xfd\x0c\xbd\ +\x46\xe8\x38\xc1\xf8\x0f\x7c\xea\x26\xdf\x50\x9a\xdd\x07\x38\x5d\ +\x60\x9c\xbd\x81\x57\xf4\xad\xe3\xae\xb2\x45\x94\x38\xe8\x24\x0a\ +\xfc\x10\x9d\xae\x7e\x5f\xe1\x34\x8c\xee\xf3\x97\xd8\xf3\x33\xf2\ +\xb2\x17\xe0\x3b\x74\xbe\x4a\xff\x70\x6f\x16\xf9\x9b\xc0\x9f\xe1\ +\x30\xc5\x0e\xba\x1c\x4c\x5a\x28\xc5\x18\x5d\x0c\x4e\xfa\x57\xe3\ +\xfe\x9b\xa5\xc7\x70\x4f\x16\x7e\x8a\xe0\x6f\x94\xf8\x37\x7e\xe8\ +\x06\xc1\x3d\x72\xd1\x3c\x02\x46\xa2\x39\xfa\x44\x38\x1a\x13\x86\ +\xc6\x84\xa1\x16\x72\x43\x8f\x00\x4f\xdd\x14\x7b\x28\x0a\x0b\xbe\ +\x77\x54\x19\x66\x51\x10\x25\x28\x9d\x2d\xf0\x12\xb7\xd0\x74\x95\ +\x91\x46\xc0\x79\x18\xa1\x5b\x17\x08\xcc\xe7\x7e\xe0\xbb\x19\xe0\ +\xb8\xf5\xb3\x05\xfa\xfb\x69\x9f\xc9\xda\xde\xc6\x9f\x42\x30\x4c\ +\xe4\x46\x17\xb9\x12\xd0\x4b\xf8\xe5\x55\x41\xe5\x24\x8a\xef\x41\ +\xde\x45\x86\x5e\xce\x5e\xa1\x9f\xf7\x77\xf7\x3a\x6d\xf8\xe7\xe0\ +\x17\xf4\xb3\xa2\xe2\x5f\xf4\xe0\x87\x04\xbc\x0b\xe0\xa2\xd2\x7f\ +\x29\xb0\x5f\xe3\x64\xe9\xa7\xa9\x0f\xfa\x01\xb1\x17\x38\xc1\xd3\ +\x7b\x74\x93\xb8\x21\x08\xdc\x42\x73\x50\x13\xd1\xed\x6c\xe1\x26\ +\x37\xa0\x9d\x2c\x02\xad\xde\xa3\x18\x27\x29\x34\x88\xa6\x99\xeb\ +\x87\x7e\x78\x43\x10\xb9\xa0\xc8\xf8\x9e\x00\x67\xa4\x97\xd2\x68\ +\x9e\xdd\xba\x09\xa6\xbd\xe0\xa6\x69\x34\xcb\x75\xe8\x45\xb3\xd5\ +\x12\x87\x99\x9b\x11\x92\xa0\x5a\x9c\xa2\x97\xd9\x02\x13\x14\xcf\ +\xc7\x45\xa3\xe7\xaf\x28\x29\x0f\xbb\x01\xe9\x09\x78\x8d\xd8\x2b\ +\xda\x09\x11\x74\x52\x82\xd3\x2c\xf1\x67\x04\x4d\x0b\x80\x66\xc1\ +\xca\x2b\x38\x61\x10\x81\xbf\xf4\x0b\x3a\x04\x03\x55\x4a\x4a\xf0\ +\xae\x52\x10\x85\x70\xdb\x42\xcb\xc8\xf3\xe7\xe4\xff\x98\xca\x17\ +\xaf\xa6\x81\x9f\x2e\x5a\x04\x8d\xe7\x13\x02\x60\x0f\xf0\x3c\x25\ +\xcf\x69\xd7\x50\xb3\xda\x21\x06\x83\x83\x80\x20\xf1\x41\x00\x2a\ +\x74\xc9\x63\x6e\x7a\x59\x44\xb0\xc4\x44\xbf\x59\xa1\x31\x4a\xfd\ +\x76\x11\x2d\x65\x91\x40\x5d\xf3\x55\x12\x02\x61\xec\x51\xb9\x23\ +\x50\x1f\x25\xfa\x6f\x3c\xcb\x0a\x44\xa4\xc5\x3c\x0a\x82\xe8\x16\ +\xc4\x04\xc2\x21\x8c\x24\x10\x2d\x75\x8a\x8e\x24\x26\xe4\x4e\xa3\ +\xef\x98\x4a\x96\x5b\x40\x18\x65\xc0\x75\xce\x0d\xe9\x94\xb8\xec\ +\xec\xe2\x55\xba\x80\x51\x84\xa6\xb8\xd0\x20\xd0\xf7\x43\xda\x9b\ +\x82\x70\x09\xe1\x24\xcd\xc0\x24\x7c\xe8\x8f\x38\x4a\x28\x5d\x55\ +\x68\x36\x28\x26\xe7\x7d\x34\x1e\x9e\x4d\xbe\xf4\x46\x7d\x34\x18\ +\xa3\xeb\xd1\xf0\xd7\xc1\x69\xff\x14\x3d\xef\x8d\xe1\xf7\xe7\x2d\ +\xf4\x65\x30\x39\x1f\x7e\x9e\x20\x80\x18\xf5\xae\x26\x5f\xd1\xf0\ +\x0c\xf5\xae\xbe\xa2\xbf\x0f\xae\x4e\x5b\xa8\xff\x8f\xeb\x51\x7f\ +\x3c\x26\xa8\x86\x23\x34\xb8\xbc\xbe\x18\xf4\xe1\xf1\xe0\xea\xe4\ +\xe2\xf3\xe9\xe0\xea\x23\x3a\x86\xa6\x57\x43\x18\x2b\x03\x18\x24\ +\x80\x77\x32\xa4\x34\x0b\x6c\x83\xfe\x18\xf0\x91\xd6\x97\xfd\xd1\ +\xc9\x39\x3c\xe9\x1d\x0f\x2e\x06\x93\xaf\x2d\x74\x36\x98\x5c\x01\ +\x66\x74\x06\x78\x7b\xe8\xba\x37\x9a\x0c\x4e\x3e\x5f\xf4\x46\xe8\ +\xfa\xf3\xe8\x7a\x38\xee\x03\x13\xa7\x80\xf9\x6a\x70\x75\x36\x02\ +\x42\xfd\xcb\xfe\xd5\x84\x48\x05\xb4\xe1\x31\xea\xff\x0a\xbf\xa3\ +\xf1\x79\xef\xe2\x82\x12\xec\x7d\x06\x31\x46\x63\xc2\xe5\xc9\xf0\ +\xfa\xeb\x68\xf0\xf1\x7c\x82\xce\x87\x17\xa7\x7d\x78\x78\xdc\x07\ +\xfe\x7a\xc7\x17\xfd\x9c\xda\xd5\x57\x3a\x34\x2f\x7a\x83\xcb\x16\ +\x3a\xed\x5d\xf6\x3e\xf6\x69\xc3\x21\x20\x1a\x51\xc8\x82\xc7\x2f\ +\xe7\x7d\xfa\x08\x48\xf6\xe0\xef\xc9\x64\x30\xbc\x22\xfa\x39\x19\ +\x5e\x4d\x46\xf0\x2b\xb5\xcc\xc9\x70\x34\xe1\xad\xbf\x0c\xc6\xfd\ +\x16\xea\x8d\x06\x63\xa2\x9c\xb3\xd1\x10\x28\x10\xed\x42\xa3\x21\ +\xc5\x03\x4d\xaf\xfa\x39\x22\xa2\x79\xc2\x3b\x41\xc2\xfb\x08\xa0\ +\x88\x38\x9f\xc7\xfd\x92\xa3\xd3\x7e\xef\x02\xd0\x8d\x49\x7b\xb1\ +\x43\xdf\x6c\xd3\xed\xed\x3c\x7b\xf6\x69\x12\x45\xc1\xc4\x8f\x9f\ +\xfd\xe7\x19\x82\x3f\xd3\x28\xf1\x30\xcc\x0e\xbb\x6f\xf6\xc0\x53\ +\xa5\xe0\xdd\x3c\xf4\x02\xcf\xe7\xbb\xf3\xbd\xf7\x39\x80\x3b\xfb\ +\x76\x93\x44\xab\xd0\x6b\x53\xb7\xed\xa0\x17\x9d\xbd\x4e\xb7\x33\ +\xcd\x5f\xbb\x41\x86\x93\x10\xfc\x4c\x5b\x07\x38\x3d\xd8\x3d\x38\ +\xcc\x01\xd9\x33\x11\x77\xec\x7a\xc4\x83\x10\xea\x87\xf8\x2e\x7f\ +\x16\xc5\xee\xcc\xcf\xee\x1d\xb4\xbf\xbb\xfb\xfe\xd9\x7f\x81\xe1\ +\x2f\xbe\x77\x83\xb3\x82\x5f\x1d\x9a\x06\x16\xc1\x6d\x60\xea\xb4\ +\xaa\x2c\xbe\xe8\x78\x2e\xc6\x47\x2a\x5c\x13\x91\xc0\x8f\x9d\x42\ +\x73\xef\x05\x2d\xb6\xfd\xa5\x7b\x03\xd3\x69\x18\x85\xf8\xbd\xac\ +\xdd\xf8\x0e\x65\xe0\xe1\xd3\x18\x86\x6d\x98\xa1\x69\x00\xd8\x0a\ +\x79\x57\x19\xcc\x28\xd0\x4a\x92\xd6\xf1\x33\xbc\x74\x16\xe0\x5b\ +\x12\xd6\x51\x1a\x21\x05\xe6\x55\x96\x55\x54\xb9\x70\xd8\x6b\xc6\ +\x06\x2d\x9f\x7d\x3a\x59\xe0\xd9\xb7\xe3\xe8\xae\x00\x4f\x49\xa7\ +\xa8\x1d\xc5\x18\x2f\xc5\xd5\xe9\x6d\x09\xd3\x98\x0f\xaa\x8f\xb2\ +\x2c\x5a\x12\x04\xfb\xe6\x9e\x66\x54\x1d\x98\x08\xdc\x69\xc0\xb9\ +\x65\x78\xdf\x76\xdf\x1e\xbd\x9d\xe5\xb0\x1f\x81\xfb\x98\xc0\x3a\ +\x3e\xf8\xe5\x99\x0b\x31\x4e\x01\x5d\x50\x0c\xf0\x3c\xe3\xf4\x24\ +\xec\x65\x0b\x67\x15\xce\xc8\x53\x98\x78\x1b\xde\x3b\x73\x98\x45\ +\x53\x69\xd0\xb0\xee\x5e\x25\xc1\x4b\x67\xc7\x83\xc0\x66\x87\x02\ +\x4f\xa3\xbb\xdf\x78\xbb\xdf\x98\x28\x6f\xd2\xef\x37\xaf\x2c\x18\ +\xc9\x3b\xbd\x91\x9d\x18\x26\xe3\x94\xb2\xad\x51\x84\x06\x5b\x3d\ +\x14\x15\xae\x11\xaa\xa0\xa9\x78\x0e\xd5\xda\xad\xd4\xd2\xa0\x8d\ +\x02\xca\x5a\xdd\x6b\x61\xad\xd5\xb0\xaa\x91\x3a\x98\xfa\x3e\xb0\ +\xe9\x01\x1b\xfd\x6f\x4f\xfb\x76\x5a\x82\x4f\x38\x23\x51\x0b\xf1\ +\xea\xd6\x3d\x20\xb5\x5a\x87\x42\xad\xa6\x65\xc8\xba\x7e\x93\x21\ +\x75\xba\x7a\x1c\xee\x15\x4f\xb5\x26\x29\x5b\xef\xc0\x6c\x80\x81\ +\x37\x98\xca\xda\x4c\x6d\xec\xac\x1a\x18\xaa\x02\x6e\xc7\x83\x8e\ +\x5c\xcf\x8f\x8e\x57\x30\xa5\x84\x8f\x35\x43\x29\x64\x6c\xa6\x24\ +\x11\xdc\x30\xc7\x34\x81\xd8\x4d\x33\x09\xc1\x52\xab\x21\x0b\x4a\ +\x6c\x34\x35\x02\x36\x39\x1e\x8d\x9a\x6d\x39\xb7\x60\x58\x37\x15\ +\x3c\x8c\x7a\xd5\x0d\xd6\x93\x6e\xd2\x94\xea\xc4\x1b\xc0\xb6\xaf\ +\xce\xb5\x05\x52\x6c\x79\x63\x8a\x0d\x43\xf3\x61\x9e\xa0\xd9\xc8\ +\x3f\x5d\xe2\x70\x75\xec\xd6\x45\xc8\xc2\x32\x40\x17\x21\x17\x08\ +\x1c\x1a\x23\x57\xd0\x38\x62\xcc\xae\x69\x60\x0e\xaa\x95\x96\xc6\ +\x85\x96\xe8\x3d\x64\xd4\x7a\x2b\xd1\x36\xde\x60\x75\xa0\x71\x7b\ +\x6d\x8a\x5b\x5a\x97\x09\x2e\x71\x8f\xb9\x44\xc2\xa5\x2d\x53\x66\ +\xaa\x92\x97\x25\x28\x41\xea\x19\xf7\xe5\x25\xcc\xa1\x02\x53\xf6\ +\x92\xbc\x74\x44\x1d\xf8\x8f\x7f\x92\xe4\x63\xcb\x00\x3e\x2b\xe8\ +\xd8\x16\x7b\x0b\xed\xbc\x26\x99\x2e\x9c\x7c\xc7\x74\x56\x21\x39\ +\xa0\xa4\x5c\x1c\x16\xed\xc9\x5a\x5a\x66\x4c\xb5\x06\x93\xbd\x39\ +\x00\x08\xa4\x84\x05\xcb\x02\x93\xd4\x91\xb4\x36\x12\x4d\x29\x20\ +\x6f\xa7\xc1\x0a\x6b\xe4\xda\x53\xa4\x4d\x18\x26\xa6\x39\x10\x06\ +\x46\x75\x1b\xdf\xcd\x82\x55\xea\x7f\x27\x59\xa7\x62\x48\xa2\x0f\ +\x88\x0e\x2d\x10\xe8\x2e\xcf\x2a\x97\xef\x08\xca\x97\x24\x21\xfc\ +\xa9\x47\x85\xa6\x73\x3b\x61\x3c\xeb\x33\x44\xaf\x88\x06\x98\xf8\ +\x7c\x98\x4b\xb4\xca\x41\xbf\x9d\x59\xdf\x92\x58\x65\x58\x3e\x26\ +\xd5\x87\xaf\x54\xac\xf0\xaf\x2f\x53\x85\x10\x58\x82\xde\x0a\xa8\ +\xa3\x25\x59\x78\x70\xd9\xaa\x21\x6c\x66\x05\x1b\x58\x80\xa5\xb7\ +\x6f\xa0\x62\xad\xa6\x07\x91\x5b\x4b\xa4\xe6\x0e\xdf\xbc\xb3\xeb\ +\x29\x50\x5f\xd0\x76\x93\x24\xba\xd5\x3b\x56\x13\x6e\xea\x70\x76\ +\x68\xf3\xdf\x68\xf3\x02\x35\x81\xbf\xf5\xbd\x6c\x41\x30\x74\x19\ +\x86\xd2\x7b\x1d\x15\x3e\x87\x67\x9e\x0c\x31\xf3\xc1\x21\xf9\x69\ +\xcc\xdd\x11\x49\x7a\xd3\x14\x7c\xf3\x2c\x1b\x80\x83\xfd\xd5\xc7\ +\x4c\x90\xfa\xac\x63\xcd\xa4\x6f\x9a\x00\x3a\xbd\xce\x51\xe7\x48\ +\x52\x09\x51\xee\x2a\x95\x66\xaa\x42\x2c\x16\xe8\xb1\x19\xbb\x1a\ +\xb3\x2b\x93\xa2\x90\x5a\xfb\x34\x71\xa7\x0a\x1a\xbe\xc2\xd2\x05\ +\x90\xec\xd9\x18\x10\x61\x3d\xa9\x3c\x6a\x23\xb8\x2f\x20\x8a\xeb\ +\x7b\x7e\x66\x0e\x88\xf6\x3b\xfb\xdd\xfd\x23\x73\xf6\xb5\x90\x9d\ +\x7a\x01\x27\x67\xdf\x22\x7c\x31\x6b\xcd\x34\x11\xb2\xc5\xa2\x75\ +\x7c\x63\xc4\xce\x62\x95\x2c\x8a\xab\xd3\x61\xf9\x50\x4e\x19\x66\ +\x7e\x16\xb0\xdc\x46\xba\x9a\x42\xe8\x91\x25\x51\xd0\xce\x37\x39\ +\x9d\xa2\xf5\x7b\xf5\x75\x1c\xa5\x74\x03\x08\xa2\xbb\x28\x46\x33\ +\x08\x16\x58\xfe\x97\x31\xc1\x82\x8d\x4a\x24\xc5\xe7\x65\x2d\x87\ +\x10\x7b\xbd\x65\x4c\x32\x8b\x1f\xcf\x80\x64\xd0\x4b\xb0\x2b\x7b\ +\x01\x8d\x0a\x36\x88\x0e\x2b\x81\x6d\x4e\x8e\x58\xf3\x02\xb4\xf0\ +\x07\x48\xec\x06\x4a\x78\xb2\x57\x9a\x49\xe9\x48\x48\xe0\x45\x5f\ +\x88\x9f\x75\x6c\x89\xe9\xef\x17\xfb\xbd\xfd\xa3\x7d\xd3\x70\x3b\ +\xa8\x06\x41\xa5\xfd\x16\x0d\x65\x96\x9d\x85\x1b\x7a\x01\xae\xb2\ +\xde\x10\x16\x2f\xa1\x03\xb8\x43\x53\xc7\x80\xc2\x90\x42\x11\xfa\ +\xb5\x4d\x17\x4d\x15\x9a\x5c\x37\x31\xd3\x09\xff\xd4\xb4\xb6\x2a\ +\x3d\xae\x3a\x21\x09\xae\x77\x4f\x75\xbc\xfc\x81\xd6\x54\x29\xd2\ +\xca\x7b\xd5\xd2\x15\xe9\x00\xb2\x49\x3a\xde\xe3\xfc\x53\x83\x74\ +\x64\x6c\x6c\x5b\x38\x82\x73\x5d\xd9\x34\x3d\xc7\x57\xf8\x0d\x60\ +\x7c\x85\x62\xd3\x85\x4f\xd7\x73\x4d\x5d\xa7\x13\x4f\x07\xd6\x2c\ +\x5e\xd9\x87\x7f\x4a\xd7\xad\xe2\x3c\x9c\x11\x98\x96\xa5\xf2\xa2\ +\xdb\xb0\x02\xa2\x59\x9d\xf3\x29\xb3\xd2\xe5\x31\x11\xd9\x84\x9e\ +\x28\x4d\x01\xa8\x43\x2e\x34\x05\xfd\x67\x10\xee\xd5\xf8\x25\xd1\ +\x25\x32\x8d\x56\x1d\x6e\xc5\xd5\x56\x87\xde\x86\x0e\x57\xef\x51\ +\x9b\xf9\x56\xfd\x69\x19\x0e\xae\xe7\x50\xb9\x41\x2a\x24\xe5\xa9\ +\x46\x72\x3b\x0d\x0e\x67\x15\x9b\xdd\x4d\xc5\x46\x55\x23\x36\x4d\ +\xfb\x1b\x7b\x9b\xad\x89\x45\x6c\x7c\xdb\x82\xe5\x89\x9e\x8d\x67\ +\x09\x26\x5b\xad\xa3\xe1\x40\xd4\xcd\xd8\x75\xdd\x53\xf5\x58\x7d\ +\x97\xd5\x4e\x0f\xb2\x58\x96\x3d\xf7\x27\x75\x18\xf7\x9f\x8c\xe9\ +\x16\x32\x78\x4f\xe3\xb8\x6f\xf4\x9d\x7a\xd4\xdc\x73\xda\x20\xfe\ +\x34\xc1\x77\x99\xfd\x3a\xc6\x76\x8d\x27\x65\x5b\xaf\x03\xd7\x0f\ +\xad\xe9\x34\x11\x5a\x3b\x2a\x27\x2c\x9c\x63\x17\x00\xc8\xaa\x96\ +\xe4\x54\x68\x86\xc5\xcc\x48\x53\x5e\xd5\xbc\x98\xab\xe1\x60\xec\ +\xff\x81\x3f\x26\xca\x59\x20\x8d\xe1\xa6\x00\x77\x03\x70\x9a\x49\ +\xbf\x94\xb7\x5c\x26\x94\x99\x5d\xd0\xf1\x17\x3f\x04\xbb\xaa\x26\ +\x3d\xed\x16\xee\xb7\x0b\x3f\xc3\xfa\x35\x16\x5f\x26\x08\x5b\x7f\ +\x06\xe5\x7b\x2e\x3d\xe7\x27\xa7\xdb\x75\xbc\xf1\x13\x37\xc6\x6e\ +\x78\x07\x3f\xdd\xb5\x59\x6c\x5c\xa1\xa9\x32\xd8\x24\x8b\xb9\x87\ +\xb0\x33\x17\x1b\x3e\xd7\xcb\x2d\x7f\x3a\x4b\xdc\x25\xfe\xe7\x9c\ +\xfc\x3b\x5e\xb8\x31\xfe\xf0\x7c\xff\xf9\xbf\x5a\x88\x64\xd0\xf3\ +\x77\x8e\x73\xed\x86\x38\x40\x1f\x3e\xa0\xdd\xbb\xdd\xdd\xdd\x0e\ +\x4d\x17\x56\x9b\x75\xd4\x66\xd0\x33\x76\x2d\x0f\xd4\x96\xe7\x24\ +\x09\xc2\x9b\x1d\x18\x9a\x1d\xaa\xcd\x7e\x95\x9a\x1d\x1a\x9a\x75\ +\x9f\xff\x4b\x6a\x45\xcf\x3e\x7b\x32\xa7\x5d\xd2\x56\x1a\x50\x7c\ +\x89\xa9\xa6\x05\xe4\x5e\xac\x4f\xbd\x68\x47\x49\x43\xcf\x57\x9c\ +\x13\xef\xb9\x71\xe6\x92\x9c\xa1\x74\xb4\xce\x1c\x3e\x16\xc7\xd5\ +\xfe\x5b\x9c\x1e\x14\xb6\xdc\xcc\x11\x67\xe7\xa8\xf3\xae\xf3\x4e\ +\x65\x53\x4d\x8c\x09\xb2\xcc\x61\x0e\x6b\xdf\x16\xd6\x3d\x8d\x02\ +\x4f\x22\x58\xb3\xc6\x37\x79\xad\xc5\x12\x06\x73\x06\xcd\xa7\x6e\ +\xa2\x7a\x2e\xf4\x01\xfc\x94\x92\xc2\x84\x67\xdd\x32\x34\x55\xe9\ +\xaa\x13\x97\x89\xea\xf7\x7a\xaa\x87\xe5\x60\xe3\x54\xf7\x2a\x34\ +\x45\x87\x64\x2d\x2e\x6d\x64\xa6\x5c\xe4\x98\x14\x79\x3b\x35\xb4\ +\xad\x45\x16\x29\xa7\x1a\xd2\xdd\x72\x8d\xc2\x49\x0b\x29\xaf\xeb\ +\x55\xba\x90\x0e\x73\xd8\x1d\xf2\xfc\x9d\xc4\x5f\xe0\x9a\x88\x79\ +\x83\xc9\xbd\xbc\xdb\xa3\x26\xde\x42\xf7\xf9\x07\x74\xb7\xcf\x1e\ +\xc0\x87\xbd\x16\x4a\x69\xb2\x6d\x97\x9d\x4b\xe5\x0f\x00\xb4\xb0\ +\xc4\x57\xef\xeb\xc7\xad\x32\x14\x35\x63\xad\x3a\x7c\x6b\xd2\xac\ +\x9a\xa8\x41\xd9\x8b\x97\xd5\x53\xd9\x3b\xaf\x9f\x43\x6d\xc5\x90\ +\xf2\xf1\x0d\x62\xb4\x99\xca\xcc\x7b\xc5\x95\x57\xca\x74\xa2\xe4\ +\x44\x55\xae\x6a\x32\xc8\x8c\x51\x45\x2b\x62\x52\x5c\x9e\xec\x14\ +\x40\x65\x53\xbd\x5e\x7b\x92\xc0\xed\x3d\xb3\xc4\xf0\x8e\x9b\xf2\ +\x49\xb4\x9c\x46\xc2\xb9\x59\xf3\xd1\x63\x79\xe5\xfc\x18\x79\x77\ +\x9d\xe1\x09\x19\xcf\xb7\xe5\x6c\x20\xa8\x48\xd9\xdb\xb2\x9a\x5f\ +\xd8\xab\x6e\xaf\x7b\xd4\x3d\xaa\xa0\xac\x3f\xc5\xbc\xf9\x28\x06\ +\x5b\x70\x0f\xe6\xf2\x28\xa6\x03\xfb\x55\x8d\xea\x9a\xce\x4c\x57\ +\x55\xf1\x68\xfc\xbf\xdb\x85\x09\xb2\x2b\xf1\x9f\x2b\xf7\x21\xfc\ +\x33\x03\xe4\x6b\x56\xbe\x9f\x10\xfb\xa1\xf8\x9c\xed\x15\xf1\x07\ +\x6c\x31\xc4\x1f\x48\x4b\xa4\x0a\x3e\xba\x6e\xe1\x6d\x13\x8c\xcb\ +\x07\x36\x5b\x61\x76\xfc\x0b\x47\x6c\x55\x83\x12\x5e\x69\x45\x14\ +\xde\xcb\xa2\x0a\x2f\x64\xe1\x44\x62\x55\xd1\x35\xf4\x4a\x89\x45\ +\x9c\x92\x2a\xec\x5d\x8e\x24\x3c\x9f\x09\x15\xaf\xdb\xd1\xbb\x56\ +\x71\x31\x54\xe7\x71\x60\xbc\xc0\x8f\x4c\x0b\x99\xf6\x58\x1b\x56\ +\xdd\x0f\xd8\x8e\xb2\xf2\x8a\x92\x3e\x1c\x2f\x89\xe2\x36\xc9\x4f\ +\x98\x37\xed\x0a\x95\xd4\x27\x83\xc4\xa4\xba\x9c\x65\x15\x85\x22\ +\x5a\xe5\xd3\xa6\x32\x3d\xd1\x77\x05\xb3\x24\xfa\x81\x81\x7f\x5f\ +\x05\x30\x46\xf1\xc0\x43\x3e\xf1\x09\x9a\x53\xf7\x4e\xf2\x89\x45\ +\x0f\xa6\xa8\x85\x67\x6c\xec\x73\x4f\x35\xbb\x2f\xc5\x16\x7e\x19\ +\xa7\xf1\x8d\x7e\x13\x59\xb0\xd4\x96\xe1\x0d\x3f\xad\xad\x7b\x69\ +\x75\xcc\x55\x9b\x2f\xb3\x62\x55\xf1\x08\xda\x33\x63\xb6\xf3\xeb\ +\xa6\xc9\x27\xdd\xd0\xd0\x4f\xbf\xaa\xff\x5a\xc5\xed\xa9\x18\x0e\ +\x37\x6c\xdf\x1a\xc6\x83\x58\x9f\xa4\x1d\x0e\xf9\x06\x36\x1b\x11\ +\x3a\x46\x68\x87\x3d\x21\x2b\xf9\x9e\x90\x8e\x13\x9e\xba\xd4\xb8\ +\xfb\x32\xad\x29\x9c\x46\x37\x03\x45\xf3\x79\x93\xe1\xd5\xed\x1c\ +\x6c\x62\x7f\xd2\xce\x95\x3a\x41\xda\xa5\xbf\x37\x23\x5b\x8e\x38\ +\x9d\x4a\x84\xf1\x58\xa7\x39\x71\xb4\x37\xeb\x6e\x0b\x8e\xa6\x8e\ +\x03\x2b\xfd\x6d\xee\x38\x2e\xdc\x29\x0e\xd4\xf8\x85\x3b\x86\x32\ +\x0f\xb2\xf3\x1a\x1d\x0f\x47\xb4\xee\x94\x64\x8a\xca\x43\x3d\x4e\ +\xec\x86\xb8\xc6\xdf\x94\xfb\x3e\xe5\xaa\x5f\x6e\xec\xc0\x14\x61\ +\x7b\x2c\x86\x9d\x1e\x31\xe2\xca\xa7\x12\xfb\x53\x36\xf2\x59\x60\ +\x1d\x46\x32\x46\x6d\xf1\x15\x2b\xbc\x3a\x74\x14\xc4\x16\x5f\x1e\ +\xed\x08\xe8\x28\xbe\x32\x1d\xf5\x7b\x0c\x61\x02\x4e\xb2\xfb\xb6\ +\x97\xb8\xb7\xc7\x6e\x9a\x97\x55\x96\x4d\xf3\x8e\x20\x19\x3c\x92\ +\xa5\x21\x85\xdf\xbc\x4c\x1d\x4d\xef\x8b\x13\xc4\xd0\xa1\x5a\x2f\ +\xde\x11\x64\x30\x1e\xfb\xaa\xc9\x9c\xe5\xad\x9c\x59\x10\xa5\x58\ +\xf1\xaa\xc6\xd3\x9c\x04\x56\xb0\xe1\xda\xb3\xe9\x3a\x02\x76\xe3\ +\x25\x6f\x41\x41\xd7\x49\xf1\x6f\xc6\x91\x6d\x6d\x16\x6d\x53\x00\ +\x6f\x93\xab\x1d\x52\xcd\x7d\x8d\x26\xbd\x63\x3e\x76\x29\x93\x99\ +\x3b\x15\x86\x5e\xf3\xa6\x92\xa1\x9e\x57\x88\x02\x9b\x57\xed\x45\ +\x58\xbf\xc6\xa1\xfe\x6a\x82\xc2\xb4\xbe\x3f\xdc\x8d\xef\x54\x62\ +\x79\x70\x6a\x8c\xd9\xb5\xd1\xe9\xbe\x62\xf6\x4c\x51\x4e\xe0\xa6\ +\x59\xab\xfa\x38\x0a\x83\xfb\x76\xc4\x9d\xe0\xd3\x28\x52\x3c\x5f\ +\xf7\x57\xd5\xf7\x4f\x0d\x05\x06\x06\x11\x0e\x0f\x0e\xdf\x1e\x1e\ +\x3f\xa2\x05\x6f\x55\xc8\xb9\x9f\xa4\xd9\x53\x8b\xfa\x68\x3d\xd5\ +\x90\x3b\x4a\x6e\xa6\xee\xcb\xee\x5e\x0b\xed\xbd\xed\xb4\x10\x2c\ +\x2b\x5a\x04\xab\x36\xfd\x63\x01\x5a\xd7\x63\xf5\x5c\xe6\x4a\x7f\ +\x7c\x5e\x59\xe0\x34\x99\x0c\x2f\xb9\x03\x96\x19\x93\x02\x96\xa7\ +\xf1\x1d\x52\x95\xd3\x96\xfc\x82\xbc\x92\x6f\xb0\x2d\xc3\x7a\x5f\ +\xb7\x6a\xcc\x9d\x8c\xda\x9b\x85\x04\x1a\x87\x5c\xbc\xf9\x91\x7d\ +\xf2\x5f\x46\xfd\x3f\xa4\x7f\x7e\xb8\x0a\x0c\xd2\xfe\xdf\x3b\x6a\ +\xb5\xd7\x7e\x58\x5f\x5d\x61\xf4\x69\xdd\xf5\x45\xff\x6c\xa2\x8f\ +\x96\x85\xa5\xe0\x43\x3d\x4a\x43\x60\x66\xe9\x50\x36\x76\x14\x46\ +\xa3\x59\xd3\x4d\xb0\xa5\x88\xde\x4f\xd0\x3e\xd7\x38\x69\xfa\x7c\ +\xcb\x2e\xda\x4a\xa1\xcd\xae\xf7\x2f\xa4\xf8\xa7\x77\x55\x76\xd1\ +\xf3\x43\xc4\xaf\x17\xf4\x69\x3d\x9a\x59\xe0\x06\x2e\x9f\xd6\x9d\ +\xe5\x97\xc6\x69\xfd\x99\x98\x8b\x7a\x92\xf1\xd7\x34\x85\x3f\x68\ +\x58\xd9\x4d\xf9\x26\xa8\xe6\x41\x95\x3b\x05\x8d\x3b\xcb\x5f\xfc\ +\xc8\xfe\xec\x2f\xa0\xf7\x1f\xd5\x9b\x6d\x2e\x7d\x83\x9c\x3f\xaa\ +\x33\x53\xd9\x7c\x42\x6f\x56\xf0\x81\xf2\xb3\x7b\xc5\x95\x2b\x42\ +\xd5\xb7\x83\x43\xbb\x9b\x56\x2a\x45\x6b\x26\xe4\xb4\xdf\xd6\xc2\ +\x5d\xa9\x18\xb3\xe1\xdb\xfa\x8a\x18\x73\xc1\xa4\x85\x04\xb6\x54\ +\xcc\x85\x8b\x84\xc8\x69\x34\xfb\x26\x1f\xa3\x15\x72\xcf\x9a\xe3\ +\x78\x8a\x59\x1d\xec\x76\xce\x3a\x67\x39\x00\xad\x4a\x9e\xba\x49\ +\x3b\xcf\x7d\x93\x1b\x51\x24\x46\x84\x21\x2a\x24\xc4\x79\xab\x30\ +\x4a\x96\x6e\x60\xd3\x4c\xe6\x5b\xce\xcf\xb7\xe4\x57\xf3\x20\x72\ +\x33\xdd\x6e\x85\x2c\x87\xe1\xba\x1b\xad\x27\xa8\xdb\x31\xb0\x22\ +\xad\xdb\x31\x0d\x3d\x68\x69\x10\x4f\x44\x64\xb9\x01\x4b\xd1\x09\ +\x3b\x22\xa8\x5e\x69\xf6\xfb\x38\x0d\x88\x36\xdb\xaf\x69\x42\xba\ +\xf1\x96\x4b\x81\x98\x9d\x69\xa2\x67\xa9\xd2\x4c\x3c\x24\xf4\x80\ +\xe3\x13\x22\x66\xc7\x99\x82\x29\xcc\x16\xce\xc2\x4d\xdb\xa9\x3f\ +\x0d\x60\x82\x4d\x9d\x9f\x5c\xef\xdf\x91\x1f\xa6\x6d\xf1\x7a\x26\ +\x13\xf7\xe5\xc5\xe8\xed\xef\xe4\x4c\x5e\x2e\xc0\xae\x0d\x9d\x0d\ +\xc9\xe4\xa8\xda\xcb\x28\x69\x20\xf6\x13\xa1\x36\x5b\xf8\x81\x07\ +\x96\x9e\xff\xb6\x25\xda\x38\xf4\x9a\xe5\x34\x50\xa6\xdd\x2d\x1d\ +\x59\x63\x8d\xf2\x37\x72\x5b\xb1\xe9\x46\x7c\xe6\x5e\xad\x64\x97\ +\x60\xa8\x36\xcd\xe1\x7f\x13\x60\x0d\x82\x45\x71\xc1\x94\x5e\x3a\ +\x9d\x58\xd5\x26\x0f\x17\x8a\xe0\xb4\x13\x89\x43\x16\x2b\x91\xb5\ +\x8c\x1f\xe5\xcc\xa9\xfe\x73\x76\xef\x86\xeb\x1a\xb8\x01\x55\x82\ +\xbd\x07\x5a\xaf\x01\x71\x7e\x73\x95\x16\x73\x93\x9d\x19\x30\xc6\ +\x7e\xf8\x6d\x53\x73\x37\xa0\xcc\x4f\xf1\x59\x1a\x9a\x05\x8b\xc4\ +\x08\xc2\xcc\xdd\xcc\x76\x8d\x3c\x62\x4c\x7b\x9b\x6d\x9a\x04\x05\ +\x56\xa2\x7c\xc1\x35\xf3\x07\x25\x5d\xfd\xc5\x69\xe2\x81\x06\x11\ +\x97\x1a\x74\x57\x70\x6b\x00\x64\x5a\xdb\x09\xdb\xc5\xab\xb1\x4d\ +\x6b\x1c\x8d\x38\xfc\xb2\x1c\x07\x68\x01\x75\x53\x0d\x8d\x7a\x32\ +\x59\x08\xd5\xca\x93\x41\x9a\xcb\x48\xc8\x32\xaa\x7b\xe8\x1e\x4a\ +\xf7\xb1\x55\x0f\x8a\x6a\x96\x37\x8c\xaf\xe6\xeb\x4a\xb4\x87\x6d\ +\x15\x86\xbb\xfb\xdd\xc3\x6e\x51\x61\xc5\x4f\x45\x54\xae\x65\x12\ +\x1e\x31\x4e\xdb\xbb\x6f\xde\x91\x52\x73\x03\xbb\x47\x2a\xbb\x85\ +\x1a\xb5\xe5\x40\x35\x4a\xe4\x07\xae\xb6\xa1\xc3\x8e\x41\x87\x35\ +\xf5\xc4\x8f\xa8\xc1\xdd\x42\x87\xb6\x1a\xac\x74\x78\x59\x52\x6e\ +\x84\x50\x6e\x7e\x52\x05\x36\x61\xe0\xef\xd7\xba\x95\x8a\x21\xd1\ +\xdc\x70\x21\x90\xa8\x14\x79\x6b\x97\x3c\xd5\xb2\x96\x9a\x6e\x34\ +\xdc\xb9\xa1\xb2\x53\x47\x50\xec\xc5\x9a\x43\x5b\x7c\x11\x68\x7f\ +\x94\xd5\xe2\xc0\x9c\xf1\xa4\xaf\x78\xbf\x83\x3e\x6f\x24\x73\xf5\ +\xcf\x38\x8a\x57\xf1\x65\xe4\xe1\x0f\xcf\xf7\x8a\x32\x53\x92\x43\ +\xa3\xb7\x4f\xd2\x9b\xc6\x28\xd8\x35\x81\x2a\x2b\x4c\x95\x5a\xaa\ +\x7d\x76\xba\xcd\xfd\x86\xe9\x57\xe9\x90\xc6\xe4\x88\x1b\x45\xce\ +\xee\xf8\x2b\xae\xae\xd4\xd3\xde\x57\x69\x0f\x42\xfa\x45\x24\xf5\ +\x84\xf7\x36\x23\xec\x38\x4b\x90\xac\xad\xde\xe0\x2f\xc7\x60\xe5\ +\xad\xb4\x96\x27\x3d\xa5\x3b\xb5\xc8\x03\x7e\x6e\x70\xbf\xaa\xf7\ +\x82\x05\xf3\x21\xfa\xb5\xc8\x2b\xb8\xf9\xec\xa8\x92\xd3\xad\xf6\ +\x36\xb4\x47\xe9\x72\xb9\x92\x4e\x79\xe7\xb4\xf0\x50\x28\x53\x31\ +\x70\xd4\x5c\xaf\x52\x19\xde\x06\x7e\x9a\x4d\x5e\xa2\xbc\xe6\x4d\ +\x70\xd5\x9d\x93\x6e\xac\x4d\x35\x1a\x80\xc0\x56\x09\x81\xbc\x42\ +\xf5\x6f\xf9\x24\x45\x8d\x36\x6f\x0d\x8f\xc2\x08\x65\xf8\x8e\x94\ +\xaa\x82\xd5\x90\x6f\xe7\x89\x66\xf4\xeb\x94\xf2\x6f\xfc\x29\x0e\ +\x89\xaa\x97\x75\x68\xbf\xd1\xa4\x5a\xd2\xa9\x37\x3f\x1a\x17\xda\ +\xe8\x41\x29\x54\xd3\x0f\xa2\x8d\x4a\x64\x72\xa5\x89\x55\x32\x2c\ +\x57\xfe\xae\x12\x2c\xda\xf6\xd8\x4d\xe2\x7b\x44\x01\xb6\x15\xec\ +\x42\x7e\x40\xa0\xd6\x12\x2f\xcc\x30\x5c\x89\x17\x1b\xe2\x59\xb1\ +\x14\x4c\x8a\x63\x35\x65\x5b\xda\xeb\x97\x4d\xf3\x9b\xae\x82\x4d\ +\x25\xce\x23\x61\x77\x96\xf9\xdf\x71\x95\x56\x15\x40\xe1\x52\x01\ +\xd8\x84\x29\x13\x46\x43\xf8\x6e\x19\xbd\xbf\x38\x78\x3b\x7d\x37\ +\xef\x98\xc9\x56\x7b\xcc\xa6\x62\x59\xb3\x25\xa1\x9f\x6e\x63\x75\ +\xb2\x8d\x2b\xc3\x90\x3c\x59\xff\xb6\x95\xa6\x2b\x44\x37\xab\x24\ +\x32\x70\x4f\xbc\x4c\xdb\x0d\xfc\x1b\x5e\x08\x63\xbc\x1f\xc6\x29\ +\xc3\xbb\x7c\xa3\xa1\xd5\x08\xa6\xec\xc3\x59\xed\x6f\xd4\xa2\xd4\ +\x20\xaa\xa4\x71\xb5\x08\x84\xd8\xb6\x9e\x79\x11\x50\xcf\x7e\xc3\ +\xe9\x99\x06\xac\x3a\x5c\xaa\x08\x7a\x24\x72\x75\x74\xf5\x62\x15\ +\x9d\x29\x75\x0e\xf0\x61\xee\xf6\xc9\xa4\x93\xdf\xaf\x4c\x22\xa3\ +\x34\x4a\x32\xe1\xa2\x65\xb2\x19\x2d\x92\xac\x94\xf6\x59\x46\x1f\ +\x22\x0e\x56\x75\x64\xc4\xa0\x14\x1a\x71\xf7\x75\x12\x25\x21\x4e\ +\xd8\xf4\xb2\xd6\x70\x31\xef\x2a\x36\x0e\x06\x3e\x33\xae\x51\xb1\ +\x57\x77\x4d\x49\x74\x67\xf3\xb5\x57\xd5\x0b\x13\x74\xa5\xa8\x0c\ +\xa1\x26\x3f\xaf\x03\x1f\x67\x6e\xb6\x4a\x2b\x5f\x2d\xc0\x58\x57\ +\xbe\x0e\x8c\xf4\x85\x78\xa3\x4e\xbe\xf2\xcc\xaf\xc5\x61\xcf\x68\ +\xa4\x41\x1f\x35\xd7\xe6\x53\x0e\xe2\xc0\xcf\xb2\x72\x61\xa8\x9d\ +\xad\x75\x17\x23\xa9\x0d\x9b\xe6\x00\xf1\x4a\xa4\xc6\xa8\x45\x83\ +\x5c\x19\x95\xf2\x6d\x15\xda\x36\x8a\x27\x52\x6e\x44\xa2\xc1\x51\ +\x12\xdd\x90\x19\x5c\x7b\x9f\xad\x46\x86\xea\x12\xb2\x26\xaf\xa1\ +\x5f\x63\xca\x9c\x70\x6b\x15\x9d\xbb\x10\x55\x89\xb7\xff\x56\xaa\ +\xc3\x74\x77\x69\xc8\x77\x30\xa9\x77\x51\x08\x03\x48\x14\x1d\xfc\ +\xd5\x2a\xfc\xb6\xf6\xb5\xb8\x6b\xce\xc2\xc2\xa2\x3e\x2f\xd8\xa3\ +\x5b\x88\x2b\x70\x23\xda\xf2\x5b\xbe\x64\x14\x6e\x23\x12\xca\x24\ +\x85\x5d\x48\x01\x85\x53\x29\x8a\xd5\x84\xb7\xe4\x77\x5d\x19\xaa\ +\x72\xa5\x6a\x7e\x29\xa0\x21\xe9\x53\x08\xa7\xb3\xc2\x6a\x25\x6a\ +\x95\x45\xab\x5a\xec\x4d\xcb\x3b\x0d\xd5\xa4\x2d\xdd\x9b\x32\xb2\ +\x35\x30\xc9\xdb\x9a\xde\x5b\x6e\x1a\x32\x61\x4c\xe5\x63\xeb\x8a\ +\x24\x54\xa2\x6a\x6b\x77\x6b\x38\x16\x9a\x9a\x40\x78\x01\x6b\xa3\ +\x3c\xba\xbd\x7e\xb9\x20\xd5\x64\xa9\xd5\xaa\xe9\x07\xd8\x2a\xbb\ +\xe8\x71\x63\x73\x95\x4a\x80\x75\x9c\xae\x79\x7d\xc0\xc6\x3d\xac\ +\xb9\x1a\x40\xf7\xce\x68\xb8\x9a\xf6\x66\x08\x4b\xe3\x2d\xc5\x7a\ +\xa0\xf9\xea\x4b\xa9\x0d\x25\xd4\xb5\x9c\x9b\x8d\x58\x57\x87\x6d\ +\x21\x59\xd5\x90\xff\x07\x73\x31\x5c\xaa\ +\x00\x00\x02\x2d\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x39\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x20\x39\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x36\x20\x39\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x6d\x20\x35\x2e\x30\x38\x32\x33\x30\x32\x38\x2c\x31\x2e\x31\x38\ +\x39\x34\x35\x39\x33\x20\x2d\x33\x2e\x33\x31\x30\x33\x32\x31\x2c\ +\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x33\x2e\x33\x31\x31\x37\ +\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x63\x20\ +\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x35\x20\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x20\x30\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\ +\x39\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\x39\ +\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x2d\x33\x2e\x35\x39\x37\ +\x33\x31\x30\x31\x37\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\ +\x20\x30\x2c\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\ +\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x38\x20\x4c\x20\x34\x2e\x35\x31\x32\x35\x38\x36\ +\x36\x2c\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x37\x20\x63\x20\x30\ +\x2e\x31\x35\x37\x37\x30\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x20\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x34\x20\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x2c\x30\x20\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x35\x20\x30\x2e\x31\x35\x36\x32\x38\x31\ +\x33\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x33\ +\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\ +\x42\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x32\x38\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\ +\x3d\x22\x33\x36\x22\x20\x79\x3d\x22\x32\x38\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ +\x37\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x4e\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x22\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x34\x62\x34\x62\x34\ +\x62\x22\x20\x64\x3d\x22\x4d\x35\x2c\x31\x32\x56\x36\x4c\x39\x2c\ +\x39\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\xec\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x33\x31\x33\x36\x33\x42\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x33\x31\x33\x36\x33\x42\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x37\x2e\x31\x20\x68\x2d\ +\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\x31\ +\x33\x36\x33\x42\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x31\x33\x20\x68\x2d\ +\x38\x20\x76\x2d\x38\x20\x68\x30\x2e\x39\x20\x76\x37\x2e\x31\x20\ +\x68\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\ +\x31\x33\x36\x33\x42\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x35\x20\x4c\x20\ +\x35\x2c\x31\x33\x20\x76\x2d\x38\x20\x68\x38\x20\x7a\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\x42\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xfe\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x36\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x34\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x36\x20\x36\ +\x34\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x36\ +\x20\x36\x34\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\ +\x63\x74\x20\x66\x69\x6c\x6c\x3d\x22\x23\x37\x36\x37\x39\x37\x63\ +\x22\x20\x78\x3d\x22\x32\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\ +\x64\x74\x68\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\ +\x36\x32\x2e\x35\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x37\x36\x37\x39\x37\x63\x22\x20\x78\ +\x3d\x22\x39\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\ +\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x32\x2e\ +\x35\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\x0a\ +\x00\x00\x02\x12\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x20\x36\x30\x30\ +\x2c\x31\x30\x35\x30\x20\x43\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\ +\x31\x30\x35\x30\x20\x31\x35\x30\x2c\x38\x34\x38\x2e\x35\x32\x38\ +\x20\x31\x35\x30\x2c\x36\x30\x30\x20\x31\x35\x30\x2c\x33\x35\x31\ +\x2e\x34\x37\x32\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\x31\x35\x30\ +\x20\x36\x30\x30\x2c\x31\x35\x30\x20\x63\x20\x32\x34\x38\x2e\x35\ +\x32\x38\x2c\x30\x20\x34\x35\x30\x2c\x32\x30\x31\x2e\x34\x37\x32\ +\x20\x34\x35\x30\x2c\x34\x35\x30\x20\x30\x2c\x32\x34\x38\x2e\x35\ +\x32\x38\x20\x2d\x32\x30\x31\x2e\x34\x37\x32\x2c\x34\x35\x30\x20\ +\x2d\x34\x35\x30\x2c\x34\x35\x30\x20\x7a\x20\x4d\x20\x38\x38\x38\ +\x2e\x34\x36\x32\x2c\x38\x32\x37\x2e\x38\x35\x31\x20\x36\x36\x31\ +\x2e\x39\x37\x34\x2c\x36\x30\x31\x2e\x31\x32\x32\x20\x6c\x20\x30\ +\x2c\x2d\x32\x2e\x32\x34\x34\x20\x32\x32\x36\x2e\x34\x38\x38\x2c\ +\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x30\x2c\x2d\x36\x30\x2e\x36\ +\x31\x31\x20\x2d\x36\x30\x2e\x38\x34\x38\x2c\x30\x20\x51\x20\x37\ +\x32\x37\x2e\x33\x33\x39\x2c\x34\x31\x31\x2e\x39\x38\x36\x20\x36\ +\x32\x37\x2e\x30\x34\x33\x2c\x35\x31\x32\x2e\x34\x35\x31\x20\x36\ +\x31\x33\x2e\x35\x32\x34\x2c\x35\x32\x35\x2e\x33\x35\x38\x20\x36\ +\x30\x30\x2c\x35\x33\x38\x2e\x32\x36\x37\x20\x6c\x20\x2d\x32\x32\ +\x36\x2e\x34\x38\x37\x2c\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x2d\ +\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x36\x30\x2e\x36\x31\ +\x31\x20\x4c\x20\x35\x33\x38\x2e\x30\x32\x36\x2c\x36\x30\x30\x20\ +\x33\x31\x31\x2e\x35\x33\x38\x2c\x38\x32\x36\x2e\x37\x32\x39\x20\ +\x6c\x20\x30\x2c\x36\x31\x2e\x37\x33\x33\x20\x36\x30\x2e\x38\x34\ +\x38\x2c\x30\x20\x71\x20\x33\x34\x2e\x33\x36\x33\x2c\x2d\x33\x34\ +\x2e\x37\x39\x32\x20\x36\x38\x2e\x37\x33\x35\x2c\x2d\x36\x39\x2e\ +\x35\x39\x20\x4c\x20\x36\x30\x30\x2c\x36\x36\x31\x2e\x37\x33\x33\ +\x20\x6c\x20\x32\x32\x36\x2e\x34\x38\x37\x2c\x32\x32\x36\x2e\x37\ +\x32\x39\x20\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x2d\x36\ +\x30\x2e\x36\x31\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x36\x32\x36\x35\x36\x38\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x02\x2d\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x39\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x20\x39\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x36\x20\x39\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x6d\x20\x35\x2e\x30\x38\x32\x33\x30\x32\x38\x2c\x31\x2e\x31\x38\ +\x39\x34\x35\x39\x33\x20\x2d\x33\x2e\x33\x31\x30\x33\x32\x31\x2c\ +\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x33\x2e\x33\x31\x31\x37\ +\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x63\x20\ +\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x35\x20\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x20\x30\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\ +\x39\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\x39\ +\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x2d\x33\x2e\x35\x39\x37\ +\x33\x31\x30\x31\x37\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\ +\x20\x30\x2c\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\ +\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x38\x20\x4c\x20\x34\x2e\x35\x31\x32\x35\x38\x36\ +\x36\x2c\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x37\x20\x63\x20\x30\ +\x2e\x31\x35\x37\x37\x30\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x20\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x34\x20\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x2c\x30\x20\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x35\x20\x30\x2e\x31\x35\x36\x32\x38\x31\ +\x33\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x33\ +\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\x30\x62\x30\x62\ +\x30\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x99\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x34\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x34\x20\x31\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x34\ +\x20\x31\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\ +\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\x64\x61\ +\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\x31\x22\x20\x78\ +\x3d\x22\x31\x36\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\ +\x68\x3d\x22\x34\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x38\x22\ +\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x4c\ +\x69\x67\x68\x74\x31\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\ +\x3d\x22\x4c\x69\x67\x68\x74\x31\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\x31\x36\x22\x20\ +\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x33\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\x32\x22\x20\ +\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\x6b\x32\ +\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\x31\x22\ +\x20\x78\x3d\x22\x32\x35\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\ +\x64\x74\x68\x3d\x22\x34\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\ +\x38\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\ +\x22\x4c\x69\x67\x68\x74\x32\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\ +\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\x32\x22\x20\x66\x69\x6c\x6c\ +\x3d\x22\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\x32\x35\ +\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x33\ +\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x22\x2f\x3e\x0a\x20\ +\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\x33\ +\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\ +\x6b\x33\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\ +\x31\x22\x20\x78\x3d\x22\x33\x34\x22\x20\x79\x3d\x22\x31\x22\x20\ +\x77\x69\x64\x74\x68\x3d\x22\x34\x22\x20\x68\x65\x69\x67\x68\x74\ +\x3d\x22\x38\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\ +\x64\x3d\x22\x4c\x69\x67\x68\x74\x33\x22\x20\x64\x61\x74\x61\x2d\ +\x6e\x61\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\x33\x22\x20\x66\x69\ +\x6c\x6c\x3d\x22\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\ +\x33\x34\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\ +\x22\x33\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x22\x2f\x3e\ +\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xf4\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x30\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\ +\x30\x62\x30\x62\x30\x22\x20\x64\x3d\x22\x4d\x32\x32\x2e\x31\x2c\ +\x31\x30\x32\x32\x2e\x31\x4c\x2d\x32\x32\x2e\x31\x2c\x39\x37\x37\ +\x2e\x39\x6c\x31\x30\x30\x30\x2d\x31\x30\x30\x30\x4c\x31\x30\x32\ +\x32\x2e\x31\x2c\x32\x32\x2e\x31\x5a\x6d\x32\x32\x30\x2c\x33\x30\ +\x4c\x31\x39\x37\x2e\x39\x2c\x31\x30\x30\x37\x2e\x39\x6c\x31\x30\ +\x30\x30\x2d\x31\x30\x30\x30\x4c\x31\x32\x34\x32\x2e\x31\x2c\x35\ +\x32\x2e\x31\x5a\x6d\x32\x35\x30\x2c\x30\x4c\x34\x34\x37\x2e\x39\ +\x2c\x31\x30\x30\x37\x2e\x39\x6c\x31\x30\x30\x30\x2d\x31\x30\x30\ +\x30\x4c\x31\x34\x39\x32\x2e\x31\x2c\x35\x32\x2e\x31\x5a\x6d\x32\ +\x35\x30\x2c\x30\x4c\x36\x39\x37\x2e\x39\x2c\x31\x30\x30\x37\x2e\ +\x39\x6c\x31\x30\x33\x30\x2d\x31\x30\x33\x30\x4c\x31\x37\x37\x32\ +\x2e\x31\x2c\x32\x32\x2e\x31\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\x0a\ +\x00\x00\x02\x2a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x39\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x20\x39\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x36\x20\x39\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x6d\x20\x30\x2e\x39\x31\x36\x36\x39\x37\x32\x2c\x31\x2e\x31\x38\ +\x39\x34\x35\x39\x33\x20\x33\x2e\x33\x31\x30\x33\x32\x31\x2c\x33\ +\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x2d\x33\x2e\x33\x31\x31\x37\ +\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x63\x20\ +\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\x37\x37\ +\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\ +\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x30\x2e\x35\x37\x31\x31\ +\x37\x34\x39\x20\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\ +\x35\x37\x37\x31\x32\x33\x20\x30\x2e\x34\x31\x33\x34\x33\x34\x39\ +\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x30\x2e\x35\x37\x31\ +\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x33\x2e\x35\x39\x37\x33\x31\ +\x30\x32\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\x20\x30\x2c\ +\x30\x20\x30\x2c\x30\x20\x63\x20\x30\x2e\x31\x35\x37\x37\x30\x31\ +\x39\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x20\x30\x2e\x31\ +\x35\x37\x37\x30\x31\x39\x2c\x2d\x30\x2e\x34\x31\x33\x34\x36\x32\ +\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x20\x4c\ +\x20\x31\x2e\x34\x38\x36\x34\x31\x33\x34\x2c\x30\x2e\x36\x31\x38\ +\x32\x38\x34\x33\x37\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\ +\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x20\x2d\x30\x2e\ +\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x20\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x2c\x30\x20\ +\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\ +\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\x30\x2e\x30\x30\x31\ +\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x33\x20\x7a\x22\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\x42\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x2a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x30\x2e\x39\x31\ +\x37\x36\x39\x37\x31\x38\x20\x34\x2e\x35\x2c\x34\x2e\x32\x32\x38\ +\x30\x31\x38\x32\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x30\ +\x2e\x39\x31\x36\x32\x37\x36\x34\x38\x20\x63\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\ +\x37\x30\x32\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x30\x32\x20\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\ +\x2e\x34\x31\x33\x34\x33\x34\x39\x32\x20\x30\x2c\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x32\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\ +\x32\x38\x33\x2c\x33\x2e\x35\x39\x37\x33\x31\x30\x32\x20\x30\x2c\ +\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\ +\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\ +\x39\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\ +\x20\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x31\x2e\x34\x38\x37\ +\x34\x31\x33\x34\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\ +\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\ +\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x31\x20\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x31\x20\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x39\x2c\x30\x2e\x30\x30\x31\x34\x32\x20\x7a\x22\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\x42\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\xec\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x35\x31\x63\x32\x66\x63\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x35\x31\x63\x32\x66\x63\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x37\x2e\x31\x20\x68\x2d\ +\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\x31\ +\x63\x32\x66\x63\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x31\x33\x20\x68\x2d\ +\x38\x20\x76\x2d\x38\x20\x68\x30\x2e\x39\x20\x76\x37\x2e\x31\x20\ +\x68\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\ +\x31\x63\x32\x66\x63\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x35\x20\x4c\x20\ +\x35\x2c\x31\x33\x20\x76\x2d\x38\x20\x68\x38\x20\x7a\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x35\x31\x63\x32\x66\x63\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x22\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x35\x2e\x30\x38\ +\x33\x33\x30\x32\x38\x20\x34\x2e\x35\x2c\x31\x2e\x37\x37\x32\x39\ +\x38\x31\x38\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x35\x2e\ +\x30\x38\x34\x37\x32\x33\x35\x20\x63\x20\x30\x2e\x31\x35\x37\x37\ +\x31\x32\x35\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\ +\x34\x33\x34\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\x2c\x2d\ +\x33\x2e\x35\x39\x37\x33\x31\x30\x31\x39\x20\x30\x2c\x30\x20\x30\ +\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\ +\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\x20\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x34\x2e\x35\x31\x33\x35\ +\x38\x36\x36\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\ +\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x34\x2c\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x20\x30\ +\x2c\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x20\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x35\x2c\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x20\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x36\x32\x38\ +\x31\x33\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x33\x31\x33\x36\x33\x42\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x34\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\ +\x3d\x22\x36\x35\x22\x20\x79\x3d\x22\x32\x38\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\ +\x38\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x4a\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x22\x20\x68\x65\ +\x69\x67\x68\x74\x3d\x22\x36\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\ +\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x30\x30\x30\x22\x20\x64\x3d\ +\x22\x4d\x31\x2c\x31\x48\x38\x4c\x34\x2e\x35\x2c\x35\x5a\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xbc\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x37\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x33\x70\x78\x22\x20\x76\x69\ +\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x37\x20\x36\x33\x22\ +\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x37\x20\x36\x33\ +\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\ +\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x37\x36\x37\x39\x37\x63\x22\x20\x78\ +\x3d\x22\x32\x22\x20\x79\x3d\x22\x31\x33\x22\x20\x77\x69\x64\x74\ +\x68\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x37\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x4a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x35\x31\x63\x32\x66\x63\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x35\x31\x63\x32\x66\x63\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x38\x20\x76\x2d\x38\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x35\x31\x63\x32\x66\x63\x22\x20\x66\x69\x6c\x6c\ +\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x22\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x35\x2e\x30\x38\ +\x33\x33\x30\x32\x38\x20\x34\x2e\x35\x2c\x31\x2e\x37\x37\x32\x39\ +\x38\x31\x38\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x35\x2e\ +\x30\x38\x34\x37\x32\x33\x35\x20\x63\x20\x30\x2e\x31\x35\x37\x37\ +\x31\x32\x35\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\ +\x34\x33\x34\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\x2c\x2d\ +\x33\x2e\x35\x39\x37\x33\x31\x30\x31\x39\x20\x30\x2c\x30\x20\x30\ +\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\ +\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\x20\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x34\x2e\x35\x31\x33\x35\ +\x38\x36\x36\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\ +\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x34\x2c\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x20\x30\ +\x2c\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x20\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x35\x2c\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x20\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x36\x32\x38\ +\x31\x33\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x62\x30\x62\x30\x62\x30\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\x04\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x35\x31\x63\x32\x66\x63\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x35\x31\x63\x32\x66\x63\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\x0a\ +\x00\x00\x01\xec\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x33\x64\x61\x65\x65\x39\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x33\x64\x61\x65\x65\x39\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x37\x2e\x31\x20\x68\x2d\ +\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\x64\ +\x61\x65\x65\x39\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x31\x33\x20\x68\x2d\ +\x38\x20\x76\x2d\x38\x20\x68\x30\x2e\x39\x20\x76\x37\x2e\x31\x20\ +\x68\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\ +\x64\x61\x65\x65\x39\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x35\x20\x4c\x20\ +\x35\x2c\x31\x33\x20\x76\x2d\x38\x20\x68\x38\x20\x7a\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x33\x64\x61\x65\x65\x39\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x12\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x20\x36\x30\x30\ +\x2c\x31\x30\x35\x30\x20\x43\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\ +\x31\x30\x35\x30\x20\x31\x35\x30\x2c\x38\x34\x38\x2e\x35\x32\x38\ +\x20\x31\x35\x30\x2c\x36\x30\x30\x20\x31\x35\x30\x2c\x33\x35\x31\ +\x2e\x34\x37\x32\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\x31\x35\x30\ +\x20\x36\x30\x30\x2c\x31\x35\x30\x20\x63\x20\x32\x34\x38\x2e\x35\ +\x32\x38\x2c\x30\x20\x34\x35\x30\x2c\x32\x30\x31\x2e\x34\x37\x32\ +\x20\x34\x35\x30\x2c\x34\x35\x30\x20\x30\x2c\x32\x34\x38\x2e\x35\ +\x32\x38\x20\x2d\x32\x30\x31\x2e\x34\x37\x32\x2c\x34\x35\x30\x20\ +\x2d\x34\x35\x30\x2c\x34\x35\x30\x20\x7a\x20\x4d\x20\x38\x38\x38\ +\x2e\x34\x36\x32\x2c\x38\x32\x37\x2e\x38\x35\x31\x20\x36\x36\x31\ +\x2e\x39\x37\x34\x2c\x36\x30\x31\x2e\x31\x32\x32\x20\x6c\x20\x30\ +\x2c\x2d\x32\x2e\x32\x34\x34\x20\x32\x32\x36\x2e\x34\x38\x38\x2c\ +\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x30\x2c\x2d\x36\x30\x2e\x36\ +\x31\x31\x20\x2d\x36\x30\x2e\x38\x34\x38\x2c\x30\x20\x51\x20\x37\ +\x32\x37\x2e\x33\x33\x39\x2c\x34\x31\x31\x2e\x39\x38\x36\x20\x36\ +\x32\x37\x2e\x30\x34\x33\x2c\x35\x31\x32\x2e\x34\x35\x31\x20\x36\ +\x31\x33\x2e\x35\x32\x34\x2c\x35\x32\x35\x2e\x33\x35\x38\x20\x36\ +\x30\x30\x2c\x35\x33\x38\x2e\x32\x36\x37\x20\x6c\x20\x2d\x32\x32\ +\x36\x2e\x34\x38\x37\x2c\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x2d\ +\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x36\x30\x2e\x36\x31\ +\x31\x20\x4c\x20\x35\x33\x38\x2e\x30\x32\x36\x2c\x36\x30\x30\x20\ +\x33\x31\x31\x2e\x35\x33\x38\x2c\x38\x32\x36\x2e\x37\x32\x39\x20\ +\x6c\x20\x30\x2c\x36\x31\x2e\x37\x33\x33\x20\x36\x30\x2e\x38\x34\ +\x38\x2c\x30\x20\x71\x20\x33\x34\x2e\x33\x36\x33\x2c\x2d\x33\x34\ +\x2e\x37\x39\x32\x20\x36\x38\x2e\x37\x33\x35\x2c\x2d\x36\x39\x2e\ +\x35\x39\x20\x4c\x20\x36\x30\x30\x2c\x36\x36\x31\x2e\x37\x33\x33\ +\x20\x6c\x20\x32\x32\x36\x2e\x34\x38\x37\x2c\x32\x32\x36\x2e\x37\ +\x32\x39\x20\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x2d\x36\ +\x30\x2e\x36\x31\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x62\x33\x33\x65\x33\x65\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x02\x2a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x30\x2e\x39\x31\ +\x37\x36\x39\x37\x31\x38\x20\x34\x2e\x35\x2c\x34\x2e\x32\x32\x38\ +\x30\x31\x38\x32\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x30\ +\x2e\x39\x31\x36\x32\x37\x36\x34\x38\x20\x63\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\ +\x37\x30\x32\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x30\x32\x20\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\ +\x2e\x34\x31\x33\x34\x33\x34\x39\x32\x20\x30\x2c\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x32\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\ +\x32\x38\x33\x2c\x33\x2e\x35\x39\x37\x33\x31\x30\x32\x20\x30\x2c\ +\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\ +\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\ +\x39\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\ +\x20\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x31\x2e\x34\x38\x37\ +\x34\x31\x33\x34\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\ +\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\ +\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x31\x20\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x31\x20\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x39\x2c\x30\x2e\x30\x30\x31\x34\x32\x20\x7a\x22\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\x64\x61\x65\x65\x39\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x22\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x35\x2e\x30\x38\ +\x33\x33\x30\x32\x38\x20\x34\x2e\x35\x2c\x31\x2e\x37\x37\x32\x39\ +\x38\x31\x38\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x35\x2e\ +\x30\x38\x34\x37\x32\x33\x35\x20\x63\x20\x30\x2e\x31\x35\x37\x37\ +\x31\x32\x35\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\ +\x34\x33\x34\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\x2c\x2d\ +\x33\x2e\x35\x39\x37\x33\x31\x30\x31\x39\x20\x30\x2c\x30\x20\x30\ +\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\ +\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\x20\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x34\x2e\x35\x31\x33\x35\ +\x38\x36\x36\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\ +\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x34\x2c\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x20\x30\ +\x2c\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x20\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x35\x2c\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x20\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x36\x32\x38\ +\x31\x33\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x33\x64\x61\x65\x65\x39\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\xcf\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x22\x20\x68\x65\ +\x69\x67\x68\x74\x3d\x22\x39\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\ +\x68\x20\x64\x3d\x22\x6d\x20\x30\x2e\x39\x31\x36\x36\x39\x37\x32\ +\x2c\x31\x2e\x31\x38\x39\x34\x35\x39\x33\x20\x33\x2e\x33\x31\x30\ +\x33\x32\x31\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x2d\x33\ +\x2e\x33\x31\x31\x37\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\ +\x30\x38\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\ +\x2e\x31\x35\x37\x37\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x30\ +\x2e\x35\x37\x31\x31\x37\x34\x39\x20\x30\x2e\x31\x35\x37\x37\x30\ +\x32\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x30\x2e\x34\x31\ +\x33\x34\x33\x34\x39\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\ +\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x33\x2e\ +\x35\x39\x37\x33\x31\x30\x32\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\ +\x38\x33\x20\x30\x2c\x30\x20\x30\x2c\x30\x20\x63\x20\x30\x2e\x31\ +\x35\x37\x37\x30\x31\x39\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x2c\x2d\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\ +\x37\x34\x38\x20\x4c\x20\x31\x2e\x34\x38\x36\x34\x31\x33\x34\x2c\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x37\x20\x63\x20\x2d\x30\x2e\ +\x31\x35\x37\x37\x30\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x34\x20\x2d\x30\x2e\x35\x37\x31\x31\x33\ +\x36\x39\x2c\x30\x20\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\ +\x30\x2e\x30\x30\x31\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\ +\x39\x33\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\x30\x62\ +\x30\x62\x30\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x5e\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x22\x20\x68\x65\ +\x69\x67\x68\x74\x3d\x22\x39\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\ +\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x30\x30\x30\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x20\x64\x3d\x22\x4d\x31\x2c\x38\x56\x31\x4c\x35\x2c\x34\x2e\ +\x35\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x34\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\ +\x3d\x22\x36\x35\x22\x20\x79\x3d\x22\x32\x38\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\ +\x38\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x55\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x35\x31\x63\x32\x66\x63\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\ +\x31\x63\x32\x66\x63\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x3c\x2f\x73\ +\x76\x67\x3e\x0a\ +\x00\x00\x00\x52\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x22\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x34\x62\x34\x62\x34\ +\x62\x22\x20\x64\x3d\x22\x4d\x35\x2e\x35\x2c\x33\x48\x31\x32\x2e\ +\x35\x4c\x39\x2c\x39\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\xab\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\x42\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\ +\x31\x33\x36\x33\x42\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2c\x31\x30\x61\x36\x2c\ +\x36\x20\x30\x20\x31\x2c\x30\x20\x31\x32\x2c\x30\x61\x36\x2c\x36\ +\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x32\x2c\x30\x22\x20\x66\x69\ +\x6c\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\x42\x22\x20\x66\x69\x6c\ +\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\ +\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\xab\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x33\x64\x61\x65\x65\x39\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\ +\x64\x61\x65\x65\x39\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2c\x31\x30\x61\x36\x2c\ +\x36\x20\x30\x20\x31\x2c\x30\x20\x31\x32\x2c\x30\x61\x36\x2c\x36\ +\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x32\x2c\x30\x22\x20\x66\x69\ +\x6c\x6c\x3d\x22\x23\x33\x64\x61\x65\x65\x39\x22\x20\x66\x69\x6c\ +\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\ +\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x55\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\x42\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\ +\x31\x33\x36\x33\x42\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x3c\x2f\x73\ +\x76\x67\x3e\x0a\ +\x00\x00\x01\x57\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x30\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x30\x30\x22\x20\x3e\ +\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x69\x64\x3d\x22\x42\x6f\x74\ +\x74\x6f\x6d\x43\x69\x72\x63\x6c\x65\x22\x20\x64\x3d\x22\x4d\x31\ +\x30\x30\x2c\x35\x30\x30\x20\x61\x32\x35\x30\x2c\x32\x35\x30\x2c\ +\x20\x30\x2c\x20\x31\x2c\x30\x2c\x20\x38\x30\x30\x2c\x30\x20\x4d\ +\x37\x37\x35\x2c\x35\x30\x30\x20\x4c\x35\x30\x30\x2c\x37\x37\x35\ +\x20\x4c\x32\x32\x35\x2c\x35\x30\x30\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x61\x32\x61\x32\x61\x32\x22\x20\x2f\x3e\x0a\x20\ +\x20\x3c\x70\x61\x74\x68\x20\x69\x64\x3d\x22\x54\x6f\x70\x43\x69\ +\x72\x63\x6c\x65\x22\x20\x64\x3d\x22\x4d\x39\x30\x30\x2c\x35\x30\ +\x30\x20\x61\x32\x35\x30\x2c\x32\x35\x30\x2c\x20\x30\x2c\x20\x31\ +\x2c\x30\x2c\x20\x2d\x38\x30\x30\x2c\x30\x20\x4d\x32\x32\x35\x2c\ +\x35\x30\x30\x20\x4c\x35\x30\x30\x2c\x32\x32\x35\x20\x4c\x37\x37\ +\x35\x2c\x35\x30\x30\x20\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x61\x32\x61\x32\x61\x32\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x69\x64\x3d\x22\x49\x6e\x73\x69\x64\x65\x22\x20\ +\x64\x3d\x22\x4d\x32\x37\x35\x2c\x35\x30\x30\x20\x4c\x20\x35\x30\ +\x30\x2c\x37\x32\x35\x20\x4c\x20\x37\x32\x35\x2c\x35\x30\x30\x20\ +\x4c\x20\x35\x30\x30\x2c\x32\x37\x35\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x61\x32\x61\x32\x61\x32\x22\x20\x2f\x3e\x0a\x3c\ +\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x4a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x33\x64\x61\x65\x65\x39\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x33\x64\x61\x65\x65\x39\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x38\x20\x76\x2d\x38\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x33\x64\x61\x65\x65\x39\x22\x20\x66\x69\x6c\x6c\ +\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x5a\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\ +\x32\x22\x20\x78\x3d\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\ +\x22\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x62\x63\x62\x66\x63\x32\x22\x20\x78\ +\x3d\x22\x33\x36\x22\x20\x79\x3d\x22\x33\x30\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x34\ +\x34\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x90\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x30\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x30\x30\x22\x20\x3e\ +\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x30\ +\x2c\x35\x30\x30\x20\x4c\x20\x35\x30\x30\x2c\x37\x35\x30\x20\x4c\ +\x20\x37\x35\x30\x2c\x35\x30\x30\x20\x4c\x20\x35\x30\x30\x2c\x32\ +\x35\x30\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x6e\x6f\x6e\x65\ +\x22\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x23\x61\x32\x61\x32\x61\ +\x32\x22\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\ +\x22\x35\x30\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x2a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x30\x2e\x39\x31\ +\x37\x36\x39\x37\x31\x38\x20\x34\x2e\x35\x2c\x34\x2e\x32\x32\x38\ +\x30\x31\x38\x32\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x30\ +\x2e\x39\x31\x36\x32\x37\x36\x34\x38\x20\x63\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\ +\x37\x30\x32\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x30\x32\x20\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\ +\x2e\x34\x31\x33\x34\x33\x34\x39\x32\x20\x30\x2c\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x32\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\ +\x32\x38\x33\x2c\x33\x2e\x35\x39\x37\x33\x31\x30\x32\x20\x30\x2c\ +\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\ +\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\ +\x39\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\ +\x20\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x31\x2e\x34\x38\x37\ +\x34\x31\x33\x34\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\ +\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\ +\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x31\x20\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x31\x20\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x39\x2c\x30\x2e\x30\x30\x31\x34\x32\x20\x7a\x22\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\x30\x62\x30\x62\x30\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x4a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x33\x31\x33\x36\x33\x42\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x33\x31\x33\x36\x33\x42\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x38\x20\x76\x2d\x38\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x33\x31\x33\x36\x33\x42\x22\x20\x66\x69\x6c\x6c\ +\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x04\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x33\x31\x33\x36\x33\x42\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x33\x31\x33\x36\x33\x42\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\x0a\ +\x00\x00\x00\x1e\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x34\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x36\x34\x22\x2f\x3e\x0a\ +\x00\x00\x02\x3e\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x33\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x70\x78\x22\x20\x76\x69\ +\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x33\x20\x37\x22\ +\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x36\x33\x20\x37\ +\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\ +\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x69\x64\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\x64\x61\x74\x61\x2d\ +\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\x31\x22\x20\x78\x3d\x22\x32\ +\x35\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\ +\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x22\x2f\x3e\x0a\ +\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\ +\x32\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\ +\x72\x6b\x32\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\ +\x33\x31\x22\x20\x78\x3d\x22\x33\x38\x22\x20\x79\x3d\x22\x31\x22\ +\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\ +\x74\x3d\x22\x35\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x69\x64\x3d\x22\x4c\x69\x67\x68\x74\x31\x22\x20\x64\x61\x74\x61\ +\x2d\x6e\x61\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\x31\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\ +\x22\x32\x33\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\ +\x3d\x22\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x22\x2f\ +\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x4c\x69\ +\x67\x68\x74\x32\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\ +\x22\x4c\x69\x67\x68\x74\x32\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\x33\x30\x22\x20\x79\ +\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x22\x2f\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x4c\x69\x67\x68\x74\x33\x22\x20\ +\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\ +\x33\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x37\x66\x38\x37\x39\x35\ +\x22\x20\x78\x3d\x22\x33\x36\x22\x20\x79\x3d\x22\x31\x22\x20\x77\ +\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\ +\x22\x35\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x12\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x20\x36\x30\x30\ +\x2c\x31\x30\x35\x30\x20\x43\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\ +\x31\x30\x35\x30\x20\x31\x35\x30\x2c\x38\x34\x38\x2e\x35\x32\x38\ +\x20\x31\x35\x30\x2c\x36\x30\x30\x20\x31\x35\x30\x2c\x33\x35\x31\ +\x2e\x34\x37\x32\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\x31\x35\x30\ +\x20\x36\x30\x30\x2c\x31\x35\x30\x20\x63\x20\x32\x34\x38\x2e\x35\ +\x32\x38\x2c\x30\x20\x34\x35\x30\x2c\x32\x30\x31\x2e\x34\x37\x32\ +\x20\x34\x35\x30\x2c\x34\x35\x30\x20\x30\x2c\x32\x34\x38\x2e\x35\ +\x32\x38\x20\x2d\x32\x30\x31\x2e\x34\x37\x32\x2c\x34\x35\x30\x20\ +\x2d\x34\x35\x30\x2c\x34\x35\x30\x20\x7a\x20\x4d\x20\x38\x38\x38\ +\x2e\x34\x36\x32\x2c\x38\x32\x37\x2e\x38\x35\x31\x20\x36\x36\x31\ +\x2e\x39\x37\x34\x2c\x36\x30\x31\x2e\x31\x32\x32\x20\x6c\x20\x30\ +\x2c\x2d\x32\x2e\x32\x34\x34\x20\x32\x32\x36\x2e\x34\x38\x38\x2c\ +\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x30\x2c\x2d\x36\x30\x2e\x36\ +\x31\x31\x20\x2d\x36\x30\x2e\x38\x34\x38\x2c\x30\x20\x51\x20\x37\ +\x32\x37\x2e\x33\x33\x39\x2c\x34\x31\x31\x2e\x39\x38\x36\x20\x36\ +\x32\x37\x2e\x30\x34\x33\x2c\x35\x31\x32\x2e\x34\x35\x31\x20\x36\ +\x31\x33\x2e\x35\x32\x34\x2c\x35\x32\x35\x2e\x33\x35\x38\x20\x36\ +\x30\x30\x2c\x35\x33\x38\x2e\x32\x36\x37\x20\x6c\x20\x2d\x32\x32\ +\x36\x2e\x34\x38\x37\x2c\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x2d\ +\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x36\x30\x2e\x36\x31\ +\x31\x20\x4c\x20\x35\x33\x38\x2e\x30\x32\x36\x2c\x36\x30\x30\x20\ +\x33\x31\x31\x2e\x35\x33\x38\x2c\x38\x32\x36\x2e\x37\x32\x39\x20\ +\x6c\x20\x30\x2c\x36\x31\x2e\x37\x33\x33\x20\x36\x30\x2e\x38\x34\ +\x38\x2c\x30\x20\x71\x20\x33\x34\x2e\x33\x36\x33\x2c\x2d\x33\x34\ +\x2e\x37\x39\x32\x20\x36\x38\x2e\x37\x33\x35\x2c\x2d\x36\x39\x2e\ +\x35\x39\x20\x4c\x20\x36\x30\x30\x2c\x36\x36\x31\x2e\x37\x33\x33\ +\x20\x6c\x20\x32\x32\x36\x2e\x34\x38\x37\x2c\x32\x32\x36\x2e\x37\ +\x32\x39\x20\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x2d\x36\ +\x30\x2e\x36\x31\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x64\x63\x37\x36\x37\x36\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\xab\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x35\x31\x63\x32\x66\x63\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\ +\x31\x63\x32\x66\x63\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2c\x31\x30\x61\x36\x2c\ +\x36\x20\x30\x20\x31\x2c\x30\x20\x31\x32\x2c\x30\x61\x36\x2c\x36\ +\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x32\x2c\x30\x22\x20\x66\x69\ +\x6c\x6c\x3d\x22\x23\x35\x31\x63\x32\x66\x63\x22\x20\x66\x69\x6c\ +\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\ +\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x2a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x39\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x20\x39\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x36\x20\x39\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x6d\x20\x35\x2e\x30\x38\x32\x33\x30\x32\x38\x2c\x31\x2e\x31\x38\ +\x39\x34\x35\x39\x33\x20\x2d\x33\x2e\x33\x31\x30\x33\x32\x31\x2c\ +\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x33\x2e\x33\x31\x31\x37\ +\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x63\x20\ +\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x35\x20\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x20\x30\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\ +\x39\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\x39\ +\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x2d\x33\x2e\x35\x39\x37\ +\x33\x31\x30\x31\x37\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\ +\x20\x30\x2c\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\ +\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x38\x20\x4c\x20\x34\x2e\x35\x31\x32\x35\x38\x36\ +\x36\x2c\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x37\x20\x63\x20\x30\ +\x2e\x31\x35\x37\x37\x30\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x20\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x34\x20\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x2c\x30\x20\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x35\x20\x30\x2e\x31\x35\x36\x32\x38\x31\ +\x33\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x33\ +\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x66\x66\x66\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x32\x38\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\ +\x3d\x22\x33\x36\x22\x20\x79\x3d\x22\x32\x38\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\ +\x37\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x4e\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x22\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x61\x66\x61\x66\x61\ +\x66\x22\x20\x64\x3d\x22\x4d\x35\x2c\x31\x32\x56\x36\x4c\x39\x2c\ +\x39\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\xec\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x63\x38\x63\x39\x63\x61\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x63\x38\x63\x39\x63\x61\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x37\x2e\x31\x20\x68\x2d\ +\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x63\x38\ +\x63\x39\x63\x61\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x31\x33\x20\x68\x2d\ +\x38\x20\x76\x2d\x38\x20\x68\x30\x2e\x39\x20\x76\x37\x2e\x31\x20\ +\x68\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x63\ +\x38\x63\x39\x63\x61\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x35\x20\x4c\x20\ +\x35\x2c\x31\x33\x20\x76\x2d\x38\x20\x68\x38\x20\x7a\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x63\x38\x63\x39\x63\x61\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xfd\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x36\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x34\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x36\x20\x36\ +\x34\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x36\ +\x20\x36\x34\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\ +\x63\x74\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\x66\x35\x66\x35\x66\ +\x22\x20\x78\x3d\x22\x32\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\ +\x64\x74\x68\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\ +\x36\x32\x2e\x35\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x35\x66\x35\x66\x35\x66\x22\x20\x78\ +\x3d\x22\x39\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\ +\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x32\x2e\ +\x35\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x12\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x20\x36\x30\x30\ +\x2c\x31\x30\x35\x30\x20\x43\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\ +\x31\x30\x35\x30\x20\x31\x35\x30\x2c\x38\x34\x38\x2e\x35\x32\x38\ +\x20\x31\x35\x30\x2c\x36\x30\x30\x20\x31\x35\x30\x2c\x33\x35\x31\ +\x2e\x34\x37\x32\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\x31\x35\x30\ +\x20\x36\x30\x30\x2c\x31\x35\x30\x20\x63\x20\x32\x34\x38\x2e\x35\ +\x32\x38\x2c\x30\x20\x34\x35\x30\x2c\x32\x30\x31\x2e\x34\x37\x32\ +\x20\x34\x35\x30\x2c\x34\x35\x30\x20\x30\x2c\x32\x34\x38\x2e\x35\ +\x32\x38\x20\x2d\x32\x30\x31\x2e\x34\x37\x32\x2c\x34\x35\x30\x20\ +\x2d\x34\x35\x30\x2c\x34\x35\x30\x20\x7a\x20\x4d\x20\x38\x38\x38\ +\x2e\x34\x36\x32\x2c\x38\x32\x37\x2e\x38\x35\x31\x20\x36\x36\x31\ +\x2e\x39\x37\x34\x2c\x36\x30\x31\x2e\x31\x32\x32\x20\x6c\x20\x30\ +\x2c\x2d\x32\x2e\x32\x34\x34\x20\x32\x32\x36\x2e\x34\x38\x38\x2c\ +\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x30\x2c\x2d\x36\x30\x2e\x36\ +\x31\x31\x20\x2d\x36\x30\x2e\x38\x34\x38\x2c\x30\x20\x51\x20\x37\ +\x32\x37\x2e\x33\x33\x39\x2c\x34\x31\x31\x2e\x39\x38\x36\x20\x36\ +\x32\x37\x2e\x30\x34\x33\x2c\x35\x31\x32\x2e\x34\x35\x31\x20\x36\ +\x31\x33\x2e\x35\x32\x34\x2c\x35\x32\x35\x2e\x33\x35\x38\x20\x36\ +\x30\x30\x2c\x35\x33\x38\x2e\x32\x36\x37\x20\x6c\x20\x2d\x32\x32\ +\x36\x2e\x34\x38\x37\x2c\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x2d\ +\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x36\x30\x2e\x36\x31\ +\x31\x20\x4c\x20\x35\x33\x38\x2e\x30\x32\x36\x2c\x36\x30\x30\x20\ +\x33\x31\x31\x2e\x35\x33\x38\x2c\x38\x32\x36\x2e\x37\x32\x39\x20\ +\x6c\x20\x30\x2c\x36\x31\x2e\x37\x33\x33\x20\x36\x30\x2e\x38\x34\ +\x38\x2c\x30\x20\x71\x20\x33\x34\x2e\x33\x36\x33\x2c\x2d\x33\x34\ +\x2e\x37\x39\x32\x20\x36\x38\x2e\x37\x33\x35\x2c\x2d\x36\x39\x2e\ +\x35\x39\x20\x4c\x20\x36\x30\x30\x2c\x36\x36\x31\x2e\x37\x33\x33\ +\x20\x6c\x20\x32\x32\x36\x2e\x34\x38\x37\x2c\x32\x32\x36\x2e\x37\ +\x32\x39\x20\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x2d\x36\ +\x30\x2e\x36\x31\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x36\x32\x36\x35\x36\x38\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x02\x2d\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x39\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x20\x39\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x36\x20\x39\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x6d\x20\x35\x2e\x30\x38\x32\x33\x30\x32\x38\x2c\x31\x2e\x31\x38\ +\x39\x34\x35\x39\x33\x20\x2d\x33\x2e\x33\x31\x30\x33\x32\x31\x2c\ +\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x33\x2e\x33\x31\x31\x37\ +\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x63\x20\ +\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x35\x20\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x20\x30\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\ +\x39\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\x39\ +\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x2d\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x2d\x33\x2e\x35\x39\x37\ +\x33\x31\x30\x31\x37\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\ +\x20\x30\x2c\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\ +\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x31\x2c\x2d\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x38\x20\x4c\x20\x34\x2e\x35\x31\x32\x35\x38\x36\ +\x36\x2c\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x37\x20\x63\x20\x30\ +\x2e\x31\x35\x37\x37\x30\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x20\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x34\x20\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x2c\x30\x20\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x35\x20\x30\x2e\x31\x35\x36\x32\x38\x31\ +\x33\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x33\ +\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\x30\x62\x30\x62\ +\x30\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x99\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x34\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x34\x20\x31\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x34\ +\x20\x31\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\ +\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\x64\x61\ +\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\x31\x22\x20\x78\ +\x3d\x22\x31\x36\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\ +\x68\x3d\x22\x34\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x38\x22\ +\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x4c\ +\x69\x67\x68\x74\x31\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\ +\x3d\x22\x4c\x69\x67\x68\x74\x31\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\x31\x36\x22\x20\ +\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x33\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\x32\x22\x20\ +\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\x6b\x32\ +\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\x31\x22\ +\x20\x78\x3d\x22\x32\x35\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\ +\x64\x74\x68\x3d\x22\x34\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\ +\x38\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\ +\x22\x4c\x69\x67\x68\x74\x32\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\ +\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\x32\x22\x20\x66\x69\x6c\x6c\ +\x3d\x22\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\x32\x35\ +\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x33\ +\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x22\x2f\x3e\x0a\x20\ +\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\x33\ +\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\ +\x6b\x33\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\ +\x31\x22\x20\x78\x3d\x22\x33\x34\x22\x20\x79\x3d\x22\x31\x22\x20\ +\x77\x69\x64\x74\x68\x3d\x22\x34\x22\x20\x68\x65\x69\x67\x68\x74\ +\x3d\x22\x38\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\ +\x64\x3d\x22\x4c\x69\x67\x68\x74\x33\x22\x20\x64\x61\x74\x61\x2d\ +\x6e\x61\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\x33\x22\x20\x66\x69\ +\x6c\x6c\x3d\x22\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\ +\x33\x34\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\ +\x22\x33\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x22\x2f\x3e\ +\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xf4\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x30\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\ +\x30\x62\x30\x62\x30\x22\x20\x64\x3d\x22\x4d\x32\x32\x2e\x31\x2c\ +\x31\x30\x32\x32\x2e\x31\x4c\x2d\x32\x32\x2e\x31\x2c\x39\x37\x37\ +\x2e\x39\x6c\x31\x30\x30\x30\x2d\x31\x30\x30\x30\x4c\x31\x30\x32\ +\x32\x2e\x31\x2c\x32\x32\x2e\x31\x5a\x6d\x32\x32\x30\x2c\x33\x30\ +\x4c\x31\x39\x37\x2e\x39\x2c\x31\x30\x30\x37\x2e\x39\x6c\x31\x30\ +\x30\x30\x2d\x31\x30\x30\x30\x4c\x31\x32\x34\x32\x2e\x31\x2c\x35\ +\x32\x2e\x31\x5a\x6d\x32\x35\x30\x2c\x30\x4c\x34\x34\x37\x2e\x39\ +\x2c\x31\x30\x30\x37\x2e\x39\x6c\x31\x30\x30\x30\x2d\x31\x30\x30\ +\x30\x4c\x31\x34\x39\x32\x2e\x31\x2c\x35\x32\x2e\x31\x5a\x6d\x32\ +\x35\x30\x2c\x30\x4c\x36\x39\x37\x2e\x39\x2c\x31\x30\x30\x37\x2e\ +\x39\x6c\x31\x30\x33\x30\x2d\x31\x30\x33\x30\x4c\x31\x37\x37\x32\ +\x2e\x31\x2c\x32\x32\x2e\x31\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\x0a\ +\x00\x00\x01\xcc\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x22\x20\x68\x65\ +\x69\x67\x68\x74\x3d\x22\x39\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\ +\x68\x20\x64\x3d\x22\x6d\x20\x30\x2e\x39\x31\x36\x36\x39\x37\x32\ +\x2c\x31\x2e\x31\x38\x39\x34\x35\x39\x33\x20\x33\x2e\x33\x31\x30\ +\x33\x32\x31\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x2d\x33\ +\x2e\x33\x31\x31\x37\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\ +\x30\x38\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\ +\x2e\x31\x35\x37\x37\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x30\ +\x2e\x35\x37\x31\x31\x37\x34\x39\x20\x30\x2e\x31\x35\x37\x37\x30\ +\x32\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x30\x2e\x34\x31\ +\x33\x34\x33\x34\x39\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\ +\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x33\x2e\ +\x35\x39\x37\x33\x31\x30\x32\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\ +\x38\x33\x20\x30\x2c\x30\x20\x30\x2c\x30\x20\x63\x20\x30\x2e\x31\ +\x35\x37\x37\x30\x31\x39\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x2c\x2d\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\ +\x37\x34\x38\x20\x4c\x20\x31\x2e\x34\x38\x36\x34\x31\x33\x34\x2c\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x37\x20\x63\x20\x2d\x30\x2e\ +\x31\x35\x37\x37\x30\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x34\x20\x2d\x30\x2e\x35\x37\x31\x31\x33\ +\x36\x39\x2c\x30\x20\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\ +\x30\x2e\x30\x30\x31\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\ +\x39\x33\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x66\x66\x66\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x27\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x30\x2e\x39\x31\ +\x37\x36\x39\x37\x31\x38\x20\x34\x2e\x35\x2c\x34\x2e\x32\x32\x38\ +\x30\x31\x38\x32\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x30\ +\x2e\x39\x31\x36\x32\x37\x36\x34\x38\x20\x63\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\ +\x37\x30\x32\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x30\x32\x20\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\ +\x2e\x34\x31\x33\x34\x33\x34\x39\x32\x20\x30\x2c\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x32\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\ +\x32\x38\x33\x2c\x33\x2e\x35\x39\x37\x33\x31\x30\x32\x20\x30\x2c\ +\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\ +\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\ +\x39\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\ +\x20\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x31\x2e\x34\x38\x37\ +\x34\x31\x33\x34\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\ +\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\ +\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x31\x20\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x31\x20\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x39\x2c\x30\x2e\x30\x30\x31\x34\x32\x20\x7a\x22\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x66\x66\x66\x22\x2f\x3e\x0a\x3c\ +\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x1f\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x35\x2e\x30\x38\ +\x33\x33\x30\x32\x38\x20\x34\x2e\x35\x2c\x31\x2e\x37\x37\x32\x39\ +\x38\x31\x38\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x35\x2e\ +\x30\x38\x34\x37\x32\x33\x35\x20\x63\x20\x30\x2e\x31\x35\x37\x37\ +\x31\x32\x35\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\ +\x34\x33\x34\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\x2c\x2d\ +\x33\x2e\x35\x39\x37\x33\x31\x30\x31\x39\x20\x30\x2c\x30\x20\x30\ +\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\ +\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\x20\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x34\x2e\x35\x31\x33\x35\ +\x38\x36\x36\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\ +\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x34\x2c\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x20\x30\ +\x2c\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x20\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x35\x2c\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x20\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x36\x32\x38\ +\x31\x33\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x66\x66\x66\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x55\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x35\x38\x64\x33\x66\x66\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\ +\x38\x64\x33\x66\x66\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x3c\x2f\x73\ +\x76\x67\x3e\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x34\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\ +\x3d\x22\x36\x35\x22\x20\x79\x3d\x22\x32\x38\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\ +\x38\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x4a\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x22\x20\x68\x65\ +\x69\x67\x68\x74\x3d\x22\x36\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\ +\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x66\x66\x66\x22\x20\x64\x3d\ +\x22\x4d\x31\x2c\x31\x48\x38\x4c\x34\x2e\x35\x2c\x35\x5a\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xbc\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x37\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x33\x70\x78\x22\x20\x76\x69\ +\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x37\x20\x36\x33\x22\ +\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x37\x20\x36\x33\ +\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\ +\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x35\x66\x35\x66\x35\x66\x22\x20\x78\ +\x3d\x22\x32\x22\x20\x79\x3d\x22\x31\x33\x22\x20\x77\x69\x64\x74\ +\x68\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x37\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x22\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x35\x2e\x30\x38\ +\x33\x33\x30\x32\x38\x20\x34\x2e\x35\x2c\x31\x2e\x37\x37\x32\x39\ +\x38\x31\x38\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x35\x2e\ +\x30\x38\x34\x37\x32\x33\x35\x20\x63\x20\x30\x2e\x31\x35\x37\x37\ +\x31\x32\x35\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\ +\x34\x33\x34\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\x2c\x2d\ +\x33\x2e\x35\x39\x37\x33\x31\x30\x31\x39\x20\x30\x2c\x30\x20\x30\ +\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\ +\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\x20\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x34\x2e\x35\x31\x33\x35\ +\x38\x36\x36\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\ +\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x34\x2c\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x20\x30\ +\x2c\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x20\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x35\x2c\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x20\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x36\x32\x38\ +\x31\x33\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x62\x30\x62\x30\x62\x30\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\xec\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x35\x38\x64\x33\x66\x66\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x35\x38\x64\x33\x66\x66\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x37\x2e\x31\x20\x68\x2d\ +\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\x38\ +\x64\x33\x66\x66\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x31\x33\x20\x68\x2d\ +\x38\x20\x76\x2d\x38\x20\x68\x30\x2e\x39\x20\x76\x37\x2e\x31\x20\ +\x68\x37\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\ +\x38\x64\x33\x66\x66\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x33\x2c\x35\x20\x4c\x20\ +\x35\x2c\x31\x33\x20\x76\x2d\x38\x20\x68\x38\x20\x7a\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x35\x38\x64\x33\x66\x66\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x12\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x20\x36\x30\x30\ +\x2c\x31\x30\x35\x30\x20\x43\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\ +\x31\x30\x35\x30\x20\x31\x35\x30\x2c\x38\x34\x38\x2e\x35\x32\x38\ +\x20\x31\x35\x30\x2c\x36\x30\x30\x20\x31\x35\x30\x2c\x33\x35\x31\ +\x2e\x34\x37\x32\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\x31\x35\x30\ +\x20\x36\x30\x30\x2c\x31\x35\x30\x20\x63\x20\x32\x34\x38\x2e\x35\ +\x32\x38\x2c\x30\x20\x34\x35\x30\x2c\x32\x30\x31\x2e\x34\x37\x32\ +\x20\x34\x35\x30\x2c\x34\x35\x30\x20\x30\x2c\x32\x34\x38\x2e\x35\ +\x32\x38\x20\x2d\x32\x30\x31\x2e\x34\x37\x32\x2c\x34\x35\x30\x20\ +\x2d\x34\x35\x30\x2c\x34\x35\x30\x20\x7a\x20\x4d\x20\x38\x38\x38\ +\x2e\x34\x36\x32\x2c\x38\x32\x37\x2e\x38\x35\x31\x20\x36\x36\x31\ +\x2e\x39\x37\x34\x2c\x36\x30\x31\x2e\x31\x32\x32\x20\x6c\x20\x30\ +\x2c\x2d\x32\x2e\x32\x34\x34\x20\x32\x32\x36\x2e\x34\x38\x38\x2c\ +\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x30\x2c\x2d\x36\x30\x2e\x36\ +\x31\x31\x20\x2d\x36\x30\x2e\x38\x34\x38\x2c\x30\x20\x51\x20\x37\ +\x32\x37\x2e\x33\x33\x39\x2c\x34\x31\x31\x2e\x39\x38\x36\x20\x36\ +\x32\x37\x2e\x30\x34\x33\x2c\x35\x31\x32\x2e\x34\x35\x31\x20\x36\ +\x31\x33\x2e\x35\x32\x34\x2c\x35\x32\x35\x2e\x33\x35\x38\x20\x36\ +\x30\x30\x2c\x35\x33\x38\x2e\x32\x36\x37\x20\x6c\x20\x2d\x32\x32\ +\x36\x2e\x34\x38\x37\x2c\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x2d\ +\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x36\x30\x2e\x36\x31\ +\x31\x20\x4c\x20\x35\x33\x38\x2e\x30\x32\x36\x2c\x36\x30\x30\x20\ +\x33\x31\x31\x2e\x35\x33\x38\x2c\x38\x32\x36\x2e\x37\x32\x39\x20\ +\x6c\x20\x30\x2c\x36\x31\x2e\x37\x33\x33\x20\x36\x30\x2e\x38\x34\ +\x38\x2c\x30\x20\x71\x20\x33\x34\x2e\x33\x36\x33\x2c\x2d\x33\x34\ +\x2e\x37\x39\x32\x20\x36\x38\x2e\x37\x33\x35\x2c\x2d\x36\x39\x2e\ +\x35\x39\x20\x4c\x20\x36\x30\x30\x2c\x36\x36\x31\x2e\x37\x33\x33\ +\x20\x6c\x20\x32\x32\x36\x2e\x34\x38\x37\x2c\x32\x32\x36\x2e\x37\ +\x32\x39\x20\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x2d\x36\ +\x30\x2e\x36\x31\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x62\x33\x33\x65\x33\x65\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x02\x2a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x30\x2e\x39\x31\ +\x37\x36\x39\x37\x31\x38\x20\x34\x2e\x35\x2c\x34\x2e\x32\x32\x38\ +\x30\x31\x38\x32\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x30\ +\x2e\x39\x31\x36\x32\x37\x36\x34\x38\x20\x63\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\ +\x37\x30\x32\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x30\x32\x20\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\ +\x2e\x34\x31\x33\x34\x33\x34\x39\x32\x20\x30\x2c\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x32\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\ +\x32\x38\x33\x2c\x33\x2e\x35\x39\x37\x33\x31\x30\x32\x20\x30\x2c\ +\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\ +\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\ +\x39\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\ +\x20\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x31\x2e\x34\x38\x37\ +\x34\x31\x33\x34\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\ +\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\ +\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x31\x20\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x31\x20\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x39\x2c\x30\x2e\x30\x30\x31\x34\x32\x20\x7a\x22\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x33\x64\x61\x65\x65\x39\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x22\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x35\x2e\x30\x38\ +\x33\x33\x30\x32\x38\x20\x34\x2e\x35\x2c\x31\x2e\x37\x37\x32\x39\ +\x38\x31\x38\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x35\x2e\ +\x30\x38\x34\x37\x32\x33\x35\x20\x63\x20\x30\x2e\x31\x35\x37\x37\ +\x31\x32\x35\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\ +\x34\x33\x34\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\ +\x39\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\x32\x38\x33\x2c\x2d\ +\x33\x2e\x35\x39\x37\x33\x31\x30\x31\x39\x20\x30\x2c\x30\x20\x30\ +\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\x34\x31\ +\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x31\x39\ +\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\x20\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x34\x2e\x35\x31\x33\x35\ +\x38\x36\x36\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\x34\ +\x2c\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x34\x2c\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x20\x30\ +\x2c\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x20\x30\x2e\x31\x35\x37\ +\x37\x31\x32\x35\x2c\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x20\x30\ +\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x36\x32\x38\ +\x31\x33\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x2d\x30\x2e\ +\x30\x30\x31\x34\x32\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x33\x64\x61\x65\x65\x39\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\xcf\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x22\x20\x68\x65\ +\x69\x67\x68\x74\x3d\x22\x39\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\ +\x68\x20\x64\x3d\x22\x6d\x20\x30\x2e\x39\x31\x36\x36\x39\x37\x32\ +\x2c\x31\x2e\x31\x38\x39\x34\x35\x39\x33\x20\x33\x2e\x33\x31\x30\ +\x33\x32\x31\x2c\x33\x2e\x33\x31\x30\x35\x34\x30\x38\x20\x2d\x33\ +\x2e\x33\x31\x31\x37\x34\x31\x37\x2c\x33\x2e\x33\x31\x30\x35\x34\ +\x30\x38\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x2c\x30\ +\x2e\x31\x35\x37\x37\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x30\ +\x2e\x35\x37\x31\x31\x37\x34\x39\x20\x30\x2e\x31\x35\x37\x37\x30\ +\x32\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\x30\x2e\x34\x31\ +\x33\x34\x33\x34\x39\x2c\x30\x2e\x31\x35\x37\x37\x31\x32\x33\x20\ +\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x2c\x30\x20\x6c\x20\x33\x2e\ +\x35\x39\x37\x33\x31\x30\x32\x2c\x2d\x33\x2e\x35\x39\x36\x31\x32\ +\x38\x33\x20\x30\x2c\x30\x20\x30\x2c\x30\x20\x63\x20\x30\x2e\x31\ +\x35\x37\x37\x30\x31\x39\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x2c\x2d\x30\x2e\x34\ +\x31\x33\x34\x36\x32\x34\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\ +\x37\x34\x38\x20\x4c\x20\x31\x2e\x34\x38\x36\x34\x31\x33\x34\x2c\ +\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x37\x20\x63\x20\x2d\x30\x2e\ +\x31\x35\x37\x37\x30\x32\x2c\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x20\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\x39\x2c\x2d\x30\x2e\ +\x31\x35\x37\x37\x31\x32\x34\x20\x2d\x30\x2e\x35\x37\x31\x31\x33\ +\x36\x39\x2c\x30\x20\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x2c\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x20\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x2c\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x33\x20\ +\x30\x2e\x30\x30\x31\x34\x32\x2c\x30\x2e\x35\x37\x31\x31\x37\x34\ +\x39\x33\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\x30\x62\ +\x30\x62\x30\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x5e\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x22\x20\x68\x65\ +\x69\x67\x68\x74\x3d\x22\x39\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\ +\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x66\x66\x66\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x20\x64\x3d\x22\x4d\x31\x2c\x38\x56\x31\x4c\x35\x2c\x34\x2e\ +\x35\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x34\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\ +\x3d\x22\x36\x35\x22\x20\x79\x3d\x22\x32\x38\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\ +\x38\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x52\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x22\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x66\x69\x6c\x6c\x3d\x22\x23\x61\x66\x61\x66\x61\ +\x66\x22\x20\x64\x3d\x22\x4d\x35\x2e\x35\x2c\x33\x48\x31\x32\x2e\ +\x35\x4c\x39\x2c\x39\x5a\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +\x00\x00\x01\xab\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x63\x38\x63\x39\x63\x61\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x63\ +\x38\x63\x39\x63\x61\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2c\x31\x30\x61\x36\x2c\ +\x36\x20\x30\x20\x31\x2c\x30\x20\x31\x32\x2c\x30\x61\x36\x2c\x36\ +\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x32\x2c\x30\x22\x20\x66\x69\ +\x6c\x6c\x3d\x22\x23\x63\x38\x63\x39\x63\x61\x22\x20\x66\x69\x6c\ +\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\ +\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\xab\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x35\x38\x64\x33\x66\x66\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x35\ +\x38\x64\x33\x66\x66\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2c\x31\x30\x61\x36\x2c\ +\x36\x20\x30\x20\x31\x2c\x30\x20\x31\x32\x2c\x30\x61\x36\x2c\x36\ +\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x32\x2c\x30\x22\x20\x66\x69\ +\x6c\x6c\x3d\x22\x23\x35\x38\x64\x33\x66\x66\x22\x20\x66\x69\x6c\ +\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\ +\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x55\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x30\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x30\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\ +\x30\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\ +\x20\x32\x30\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\ +\x30\x20\x31\x2c\x30\x20\x31\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\ +\x20\x61\x38\x2e\x31\x2c\x38\x2e\x31\x20\x30\x20\x31\x2c\x31\x20\ +\x2d\x31\x36\x2e\x32\x2c\x30\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x63\x38\x63\x39\x63\x61\x22\x20\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\ +\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\ +\x31\x2c\x31\x30\x61\x39\x2c\x39\x20\x30\x20\x31\x2c\x31\x20\x31\ +\x38\x2c\x30\x20\x68\x2d\x30\x2e\x39\x20\x61\x38\x2e\x31\x2c\x38\ +\x2e\x31\x20\x30\x20\x31\x2c\x30\x20\x2d\x31\x36\x2e\x32\x2c\x30\ +\x20\x68\x2d\x30\x2e\x39\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x63\ +\x38\x63\x39\x63\x61\x22\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\x3e\x0a\x3c\x2f\x73\ +\x76\x67\x3e\x0a\ +\x00\x00\x01\x57\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x30\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x30\x30\x22\x20\x3e\ +\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x69\x64\x3d\x22\x42\x6f\x74\ +\x74\x6f\x6d\x43\x69\x72\x63\x6c\x65\x22\x20\x64\x3d\x22\x4d\x31\ +\x30\x30\x2c\x35\x30\x30\x20\x61\x32\x35\x30\x2c\x32\x35\x30\x2c\ +\x20\x30\x2c\x20\x31\x2c\x30\x2c\x20\x38\x30\x30\x2c\x30\x20\x4d\ +\x37\x37\x35\x2c\x35\x30\x30\x20\x4c\x35\x30\x30\x2c\x37\x37\x35\ +\x20\x4c\x32\x32\x35\x2c\x35\x30\x30\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x61\x32\x61\x32\x61\x32\x22\x20\x2f\x3e\x0a\x20\ +\x20\x3c\x70\x61\x74\x68\x20\x69\x64\x3d\x22\x54\x6f\x70\x43\x69\ +\x72\x63\x6c\x65\x22\x20\x64\x3d\x22\x4d\x39\x30\x30\x2c\x35\x30\ +\x30\x20\x61\x32\x35\x30\x2c\x32\x35\x30\x2c\x20\x30\x2c\x20\x31\ +\x2c\x30\x2c\x20\x2d\x38\x30\x30\x2c\x30\x20\x4d\x32\x32\x35\x2c\ +\x35\x30\x30\x20\x4c\x35\x30\x30\x2c\x32\x32\x35\x20\x4c\x37\x37\ +\x35\x2c\x35\x30\x30\x20\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x61\x32\x61\x32\x61\x32\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x69\x64\x3d\x22\x49\x6e\x73\x69\x64\x65\x22\x20\ +\x64\x3d\x22\x4d\x32\x37\x35\x2c\x35\x30\x30\x20\x4c\x20\x35\x30\ +\x30\x2c\x37\x32\x35\x20\x4c\x20\x37\x32\x35\x2c\x35\x30\x30\x20\ +\x4c\x20\x35\x30\x30\x2c\x32\x37\x35\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x61\x32\x61\x32\x61\x32\x22\x20\x2f\x3e\x0a\x3c\ +\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x4a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x35\x38\x64\x33\x66\x66\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x35\x38\x64\x33\x66\x66\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x38\x20\x76\x2d\x38\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x35\x38\x64\x33\x66\x66\x22\x20\x66\x69\x6c\x6c\ +\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x5a\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x66\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\ +\x38\x22\x20\x78\x3d\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\ +\x22\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\xad\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x38\x31\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x56\x4c\x69\x6e\x65\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\x3d\ +\x22\x33\x36\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x38\x22\x2f\x3e\x0a\x20\x20\x3c\ +\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x48\x4c\x69\x6e\x65\x22\x20\ +\x66\x69\x6c\x6c\x3d\x22\x23\x36\x32\x36\x35\x36\x38\x22\x20\x78\ +\x3d\x22\x33\x36\x22\x20\x79\x3d\x22\x33\x30\x22\x20\x68\x65\x69\ +\x67\x68\x74\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x34\ +\x34\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x00\x90\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x30\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x30\x30\x30\x22\x20\x3e\ +\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x30\ +\x2c\x35\x30\x30\x20\x4c\x20\x35\x30\x30\x2c\x37\x35\x30\x20\x4c\ +\x20\x37\x35\x30\x2c\x35\x30\x30\x20\x4c\x20\x35\x30\x30\x2c\x32\ +\x35\x30\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x6e\x6f\x6e\x65\ +\x22\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x23\x61\x32\x61\x32\x61\ +\x32\x22\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\ +\x22\x35\x30\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x02\x2a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x39\x70\x78\x22\x20\ +\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x70\x78\x22\x20\x76\x69\x65\ +\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x39\x20\x36\x22\x20\x65\ +\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ +\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x39\x20\x36\x22\x20\x78\ +\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ +\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\ +\x4d\x20\x31\x2e\x31\x38\x39\x34\x35\x39\x32\x2c\x30\x2e\x39\x31\ +\x37\x36\x39\x37\x31\x38\x20\x34\x2e\x35\x2c\x34\x2e\x32\x32\x38\ +\x30\x31\x38\x32\x20\x37\x2e\x38\x31\x30\x35\x34\x30\x38\x2c\x30\ +\x2e\x39\x31\x36\x32\x37\x36\x34\x38\x20\x63\x20\x30\x2e\x31\x35\ +\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\ +\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\x2d\x30\x2e\x31\x35\x37\ +\x37\x30\x32\x20\x30\x2e\x35\x37\x31\x31\x37\x34\x39\x2c\x30\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\ +\x30\x32\x30\x32\x20\x30\x2e\x31\x35\x37\x37\x31\x32\x34\x2c\x30\ +\x2e\x34\x31\x33\x34\x33\x34\x39\x32\x20\x30\x2c\x30\x2e\x35\x37\ +\x31\x31\x33\x36\x39\x32\x20\x6c\x20\x2d\x33\x2e\x35\x39\x36\x31\ +\x32\x38\x33\x2c\x33\x2e\x35\x39\x37\x33\x31\x30\x32\x20\x30\x2c\ +\x30\x20\x30\x2c\x30\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\ +\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\x39\x20\x2d\x30\x2e\ +\x34\x31\x33\x34\x36\x32\x34\x2c\x30\x2e\x31\x35\x37\x37\x30\x31\ +\x39\x20\x2d\x30\x2e\x35\x37\x31\x31\x37\x34\x38\x2c\x30\x20\x4c\ +\x20\x30\x2e\x36\x31\x38\x32\x38\x34\x33\x2c\x31\x2e\x34\x38\x37\ +\x34\x31\x33\x34\x20\x63\x20\x2d\x30\x2e\x31\x35\x37\x37\x31\x32\ +\x34\x2c\x2d\x30\x2e\x31\x35\x37\x37\x30\x32\x20\x2d\x30\x2e\x31\ +\x35\x37\x37\x31\x32\x34\x2c\x2d\x30\x2e\x34\x31\x33\x34\x33\x34\ +\x39\x20\x30\x2c\x2d\x30\x2e\x35\x37\x31\x31\x33\x36\x39\x32\x20\ +\x30\x2e\x31\x35\x37\x37\x31\x32\x35\x2c\x2d\x30\x2e\x31\x35\x36\ +\x32\x38\x31\x33\x31\x20\x30\x2e\x34\x31\x33\x34\x36\x32\x34\x2c\ +\x2d\x30\x2e\x31\x35\x36\x32\x38\x31\x33\x31\x20\x30\x2e\x35\x37\ +\x31\x31\x37\x34\x39\x2c\x30\x2e\x30\x30\x31\x34\x32\x20\x7a\x22\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x62\x30\x62\x30\x62\x30\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x4a\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x63\x38\x63\x39\x63\x61\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x63\x38\x63\x39\x63\x61\x22\x2f\x3e\x0a\x20\x20\x3c\x70\ +\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2c\x35\x20\x68\x38\x20\x76\ +\x38\x20\x68\x2d\x38\x20\x76\x2d\x38\x20\x7a\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x63\x38\x63\x39\x63\x61\x22\x20\x66\x69\x6c\x6c\ +\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x2f\ +\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x04\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x63\x38\x63\x39\x63\x61\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x63\x38\x63\x39\x63\x61\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\x0a\ +\x00\x00\x00\x1e\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x34\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x36\x34\x22\x2f\x3e\x0a\ +\x00\x00\x02\x3e\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x33\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x70\x78\x22\x20\x76\x69\ +\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x36\x33\x20\x37\x22\ +\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\ +\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x36\x33\x20\x37\ +\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\ +\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x69\x64\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\x64\x61\x74\x61\x2d\ +\x6e\x61\x6d\x65\x3d\x22\x44\x61\x72\x6b\x31\x22\x20\x66\x69\x6c\ +\x6c\x3d\x22\x23\x32\x39\x32\x63\x33\x31\x22\x20\x78\x3d\x22\x32\ +\x35\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\ +\x31\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x22\x2f\x3e\x0a\ +\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x44\x61\x72\x6b\ +\x32\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x44\x61\ +\x72\x6b\x32\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x39\x32\x63\ +\x33\x31\x22\x20\x78\x3d\x22\x33\x38\x22\x20\x79\x3d\x22\x31\x22\ +\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x22\x20\x68\x65\x69\x67\x68\ +\x74\x3d\x22\x35\x22\x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\ +\x69\x64\x3d\x22\x4c\x69\x67\x68\x74\x31\x22\x20\x64\x61\x74\x61\ +\x2d\x6e\x61\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\x31\x22\x20\x66\ +\x69\x6c\x6c\x3d\x22\x23\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\ +\x22\x32\x33\x22\x20\x79\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\ +\x3d\x22\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x22\x2f\ +\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x20\x69\x64\x3d\x22\x4c\x69\ +\x67\x68\x74\x32\x22\x20\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\ +\x22\x4c\x69\x67\x68\x74\x32\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x37\x66\x38\x37\x39\x35\x22\x20\x78\x3d\x22\x33\x30\x22\x20\x79\ +\x3d\x22\x31\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\ +\x65\x69\x67\x68\x74\x3d\x22\x35\x22\x2f\x3e\x0a\x20\x20\x3c\x72\ +\x65\x63\x74\x20\x69\x64\x3d\x22\x4c\x69\x67\x68\x74\x33\x22\x20\ +\x64\x61\x74\x61\x2d\x6e\x61\x6d\x65\x3d\x22\x4c\x69\x67\x68\x74\ +\x33\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x37\x66\x38\x37\x39\x35\ +\x22\x20\x78\x3d\x22\x33\x36\x22\x20\x79\x3d\x22\x31\x22\x20\x77\ +\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x68\x65\x69\x67\x68\x74\x3d\ +\x22\x35\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x01\x04\ +\x3c\ +\x73\x76\x67\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\x3d\x22\x30\ +\x70\x78\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x38\x70\x78\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x38\x70\x78\x22\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x31\x38\x20\x31\ +\x38\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\ +\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x31\x38\ +\x20\x31\x38\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\ +\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x32\x2c\x32\x20\x68\x31\x34\x20\x76\ +\x31\x34\x20\x68\x2d\x30\x2e\x39\x20\x76\x2d\x31\x33\x2e\x31\x20\ +\x68\x2d\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\ +\x23\x35\x38\x64\x33\x66\x66\x22\x2f\x3e\x0a\x20\x20\x3c\x70\x61\ +\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x2c\x31\x36\x20\x68\x2d\x31\ +\x34\x20\x76\x2d\x31\x34\x20\x68\x30\x2e\x39\x20\x76\x31\x33\x2e\ +\x31\x20\x68\x31\x33\x2e\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\ +\x22\x23\x35\x38\x64\x33\x66\x66\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\ +\x67\x3e\x0a\ +\x00\x00\x02\x12\ +\x3c\ +\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x30\x30\x22\ +\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x31\x32\x30\x30\x22\x3e\x0a\ +\x20\x20\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x20\x36\x30\x30\ +\x2c\x31\x30\x35\x30\x20\x43\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\ +\x31\x30\x35\x30\x20\x31\x35\x30\x2c\x38\x34\x38\x2e\x35\x32\x38\ +\x20\x31\x35\x30\x2c\x36\x30\x30\x20\x31\x35\x30\x2c\x33\x35\x31\ +\x2e\x34\x37\x32\x20\x33\x35\x31\x2e\x34\x37\x32\x2c\x31\x35\x30\ +\x20\x36\x30\x30\x2c\x31\x35\x30\x20\x63\x20\x32\x34\x38\x2e\x35\ +\x32\x38\x2c\x30\x20\x34\x35\x30\x2c\x32\x30\x31\x2e\x34\x37\x32\ +\x20\x34\x35\x30\x2c\x34\x35\x30\x20\x30\x2c\x32\x34\x38\x2e\x35\ +\x32\x38\x20\x2d\x32\x30\x31\x2e\x34\x37\x32\x2c\x34\x35\x30\x20\ +\x2d\x34\x35\x30\x2c\x34\x35\x30\x20\x7a\x20\x4d\x20\x38\x38\x38\ +\x2e\x34\x36\x32\x2c\x38\x32\x37\x2e\x38\x35\x31\x20\x36\x36\x31\ +\x2e\x39\x37\x34\x2c\x36\x30\x31\x2e\x31\x32\x32\x20\x6c\x20\x30\ +\x2c\x2d\x32\x2e\x32\x34\x34\x20\x32\x32\x36\x2e\x34\x38\x38\x2c\ +\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x30\x2c\x2d\x36\x30\x2e\x36\ +\x31\x31\x20\x2d\x36\x30\x2e\x38\x34\x38\x2c\x30\x20\x51\x20\x37\ +\x32\x37\x2e\x33\x33\x39\x2c\x34\x31\x31\x2e\x39\x38\x36\x20\x36\ +\x32\x37\x2e\x30\x34\x33\x2c\x35\x31\x32\x2e\x34\x35\x31\x20\x36\ +\x31\x33\x2e\x35\x32\x34\x2c\x35\x32\x35\x2e\x33\x35\x38\x20\x36\ +\x30\x30\x2c\x35\x33\x38\x2e\x32\x36\x37\x20\x6c\x20\x2d\x32\x32\ +\x36\x2e\x34\x38\x37\x2c\x2d\x32\x32\x36\x2e\x37\x32\x39\x20\x2d\ +\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x36\x30\x2e\x36\x31\ +\x31\x20\x4c\x20\x35\x33\x38\x2e\x30\x32\x36\x2c\x36\x30\x30\x20\ +\x33\x31\x31\x2e\x35\x33\x38\x2c\x38\x32\x36\x2e\x37\x32\x39\x20\ +\x6c\x20\x30\x2c\x36\x31\x2e\x37\x33\x33\x20\x36\x30\x2e\x38\x34\ +\x38\x2c\x30\x20\x71\x20\x33\x34\x2e\x33\x36\x33\x2c\x2d\x33\x34\ +\x2e\x37\x39\x32\x20\x36\x38\x2e\x37\x33\x35\x2c\x2d\x36\x39\x2e\ +\x35\x39\x20\x4c\x20\x36\x30\x30\x2c\x36\x36\x31\x2e\x37\x33\x33\ +\x20\x6c\x20\x32\x32\x36\x2e\x34\x38\x37\x2c\x32\x32\x36\x2e\x37\ +\x32\x39\x20\x36\x31\x2e\x39\x37\x35\x2c\x30\x20\x30\x2c\x2d\x36\ +\x30\x2e\x36\x31\x31\x20\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\ +\x62\x33\x37\x39\x37\x39\x22\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\ +\x0a\ +" + +qt_resource_name = b"\ +\x00\x09\ +\x0d\xf7\xbd\x43\ +\x00\x6c\ +\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x71\x00\x73\x00\x73\ +\x00\x04\ +\x00\x06\xa8\x8b\ +\x00\x64\ +\x00\x61\x00\x72\x00\x6b\ +\x00\x05\ +\x00\x72\xfd\xf4\ +\x00\x6c\ +\x00\x69\x00\x67\x00\x68\x00\x74\ +\x00\x08\ +\x08\x8e\x55\xe3\ +\x00\x64\ +\x00\x61\x00\x72\x00\x6b\x00\x2e\x00\x71\x00\x73\x00\x73\ +\x00\x0e\ +\x0e\xde\xf7\x47\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x19\ +\x08\x3e\xc1\x87\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x65\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x11\ +\x0b\xda\x3d\x27\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\ +\x00\x23\ +\x06\xf2\x17\xc7\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x73\ +\x00\x76\x00\x67\ +\x00\x10\ +\x01\x08\xc7\x27\ +\x00\x68\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x09\ +\x06\x98\x8e\xa7\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x17\ +\x0c\x65\xc3\x87\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\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\x73\x00\x76\x00\x67\ +\x00\x10\ +\x01\x0f\x47\x27\ +\x00\x76\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0c\ +\x06\x41\x4d\x07\ +\x00\x73\ +\x00\x69\x00\x7a\x00\x65\x00\x67\x00\x72\x00\x69\x00\x70\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0f\ +\x02\x9f\x08\x07\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0e\ +\x04\xa2\xf1\x27\ +\x00\x64\ +\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x20\ +\x0f\xca\xd6\x47\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0c\ +\x06\xe6\xeb\xe7\ +\x00\x75\ +\x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1e\ +\x03\xc6\x81\x67\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x65\x00\x6e\x00\x64\x00\x2d\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x12\ +\x07\x8f\x90\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\ +\x00\x67\ +\x00\x11\ +\x08\x0c\x67\x27\ +\x00\x68\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\ +\x00\x1a\ +\x03\x1c\x29\x07\ +\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\x2d\ +\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x15\ +\x0f\xf3\xcd\x87\ +\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\x73\x00\x76\x00\x67\ +\x00\x1c\ +\x0e\x2e\x13\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\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1a\ +\x01\x87\xa3\xe7\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x11\ +\x08\x90\x99\xe7\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\ +\x00\x14\ +\x05\x80\x73\xc7\ +\x00\x64\ +\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\ +\x00\x73\x00\x76\x00\x67\ +\x00\x12\ +\x01\x08\x46\x47\ +\x00\x75\ +\x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\ +\x00\x67\ +\x00\x18\ +\x03\x8e\xd3\xe7\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\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\x73\x00\x76\x00\x67\ +\x00\x14\ +\x06\x5e\x21\x87\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2d\x00\x6f\x00\x6e\x00\x2e\ +\x00\x73\x00\x76\x00\x67\ +\x00\x20\ +\x0e\x63\xf6\x07\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x65\x00\x6e\x00\x64\x00\x2d\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x19\ +\x0d\x54\xa7\x67\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2d\x00\x68\ +\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0f\ +\x06\x53\x28\x27\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1a\ +\x0e\xbc\xce\xe7\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x64\x00\x69\x00\x73\ +\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x11\ +\x0a\xe5\x61\x87\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\ +\x00\x1c\ +\x01\xe0\x47\x87\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x64\ +\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x10\ +\x07\xee\x36\xc7\ +\x00\x75\ +\x00\x6e\x00\x64\x00\x6f\x00\x63\x00\x6b\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x14\ +\x07\xec\xdc\x47\ +\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\x73\x00\x76\x00\x67\ +\x00\x14\ +\x0b\xc5\xda\x47\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x76\x00\x6c\x00\x69\x00\x6e\x00\x65\x00\x2e\ +\x00\x73\x00\x76\x00\x67\ +\x00\x1a\ +\x01\x21\xe6\xc7\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x6d\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0a\ +\x05\x95\xd3\xa7\ +\x00\x75\ +\x00\x6e\x00\x64\x00\x6f\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x17\ +\x0c\xab\x5c\x87\ +\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\x73\x00\x76\x00\x67\ +\x00\x1d\ +\x09\x07\x8c\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1f\ +\x0a\xae\x2a\xc7\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0f\ +\x0c\xe2\x65\xe7\ +\x00\x74\ +\x00\x72\x00\x61\x00\x6e\x00\x73\x00\x70\x00\x61\x00\x72\x00\x65\x00\x6e\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x12\ +\x04\x89\x85\xc7\ +\x00\x76\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x73\x00\x2e\x00\x73\x00\x76\ +\x00\x67\ +\x00\x0f\ +\x01\xf4\x8c\xc7\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x17\ +\x09\x0f\x52\xa7\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2d\x00\x68\x00\x6f\x00\x76\ +\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x13\ +\x08\xc8\x9b\x67\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2e\x00\x73\ +\x00\x76\x00\x67\ +\x00\x16\ +\x01\x75\xc1\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\x2e\x00\x73\x00\x76\x00\x67\ +" + +qt_resource_struct_v1 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\ +\x00\x00\x00\x18\x00\x02\x00\x00\x00\x28\x00\x00\x00\x30\ +\x00\x00\x00\x26\x00\x02\x00\x00\x00\x2b\x00\x00\x00\x05\ +\x00\x00\x00\x36\x00\x01\x00\x00\x00\x01\x00\x00\x13\xea\ +\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x04\x46\x00\x00\x00\x00\x00\x01\x00\x00\x4a\x8c\ +\x00\x00\x01\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xcd\ +\x00\x00\x01\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x32\x16\ +\x00\x00\x06\x98\x00\x00\x00\x00\x00\x01\x00\x00\x59\x05\ +\x00\x00\x03\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x44\x58\ +\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\xa5\ +\x00\x00\x07\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x61\x32\ +\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x35\xab\ +\x00\x00\x03\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x3f\xdc\ +\x00\x00\x04\x70\x00\x00\x00\x00\x00\x01\x00\x00\x4c\xb2\ +\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\x1d\ +\x00\x00\x07\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xf0\ +\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x37\xd9\ +\x00\x00\x04\x18\x00\x00\x00\x00\x00\x01\x00\x00\x48\x5e\ +\x00\x00\x06\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x59\xb6\ +\x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x34\xb3\ +\x00\x00\x05\x52\x00\x00\x00\x00\x00\x01\x00\x00\x50\xf1\ +\x00\x00\x04\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x85\ +\x00\x00\x01\x40\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xcf\ +\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x3b\xf7\ +\x00\x00\x00\xce\x00\x00\x00\x00\x00\x01\x00\x00\x2a\xdd\ +\x00\x00\x02\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xce\ +\x00\x00\x06\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x57\x59\ +\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x55\xfe\ +\x00\x00\x02\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x1c\ +\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x29\xda\ +\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x46\x48\ +\x00\x00\x07\x20\x00\x00\x00\x00\x00\x01\x00\x00\x5c\x78\ +\x00\x00\x08\x16\x00\x00\x00\x00\x00\x01\x00\x00\x63\x48\ +\x00\x00\x07\x60\x00\x00\x00\x00\x00\x01\x00\x00\x5d\xc6\ +\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf6\ +\x00\x00\x06\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x58\xa7\ +\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x8b\ +\x00\x00\x01\x58\x00\x00\x00\x00\x00\x01\x00\x00\x2f\xe5\ +\x00\x00\x06\xec\x00\x00\x00\x00\x00\x01\x00\x00\x5a\x4a\ +\x00\x00\x07\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xce\ +\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x4f\x98\ +\x00\x00\x03\x78\x00\x00\x00\x00\x00\x01\x00\x00\x43\x50\ +\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x4e\xe7\ +\x00\x00\x05\x76\x00\x00\x00\x00\x00\x01\x00\x00\x51\x47\ +\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x27\xa9\ +\x00\x00\x02\x16\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x07\ +\x00\x00\x03\x48\x00\x00\x00\x00\x00\x01\x00\x00\x41\x2a\ +\x00\x00\x04\x46\x00\x00\x00\x00\x00\x01\x00\x00\x84\x85\ +\x00\x00\x01\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x18\ +\x00\x00\x01\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x6f\x60\ +\x00\x00\x06\x98\x00\x00\x00\x00\x00\x01\x00\x00\x91\xa5\ +\x00\x00\x08\x76\x00\x00\x00\x00\x00\x01\x00\x00\x99\xd2\ +\x00\x00\x03\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x7e\x51\ +\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8d\x45\ +\x00\x00\x07\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x9a\xda\ +\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x72\xf5\ +\x00\x00\x04\x70\x00\x00\x00\x00\x00\x01\x00\x00\x86\xab\ +\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x7a\x6c\ +\x00\x00\x07\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x97\x90\ +\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x74\xc5\ +\x00\x00\x04\x18\x00\x00\x00\x00\x00\x01\x00\x00\x82\x57\ +\x00\x00\x06\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x92\x56\ +\x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x71\xfd\ +\x00\x00\x05\x52\x00\x00\x00\x00\x00\x01\x00\x00\x89\x91\ +\x00\x00\x04\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x88\x7e\ +\x00\x00\x01\x40\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x19\ +\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x76\xf0\ +\x00\x00\x00\xce\x00\x00\x00\x00\x00\x01\x00\x00\x68\x28\ +\x00\x00\x02\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x1d\ +\x00\x00\x06\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xf9\ +\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x8e\x9e\ +\x00\x00\x02\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x6b\ +\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x67\x25\ +\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x80\x41\ +\x00\x00\x08\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x79\x13\ +\x00\x00\x07\x20\x00\x00\x00\x00\x00\x01\x00\x00\x95\x18\ +\x00\x00\x07\x60\x00\x00\x00\x00\x00\x01\x00\x00\x96\x66\ +\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x8b\x96\ +\x00\x00\x06\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x91\x47\ +\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x67\xd6\ +\x00\x00\x01\x58\x00\x00\x00\x00\x00\x01\x00\x00\x6d\x2f\ +\x00\x00\x06\xec\x00\x00\x00\x00\x00\x01\x00\x00\x92\xea\ +\x00\x00\x07\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x97\x6e\ +\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x88\xe0\ +\x00\x00\x05\x76\x00\x00\x00\x00\x00\x01\x00\x00\x89\xe7\ +\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x64\xf7\ +\x00\x00\x03\x48\x00\x00\x00\x00\x00\x01\x00\x00\x7c\x2b\ +" + +qt_resource_struct_v2 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x18\x00\x02\x00\x00\x00\x28\x00\x00\x00\x30\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x26\x00\x02\x00\x00\x00\x2b\x00\x00\x00\x05\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x36\x00\x01\x00\x00\x00\x01\x00\x00\x13\xea\ +\x00\x00\x01\x67\xc8\xe1\x67\x3a\ +\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x67\xc8\xe2\x74\xb5\ +\x00\x00\x04\x46\x00\x00\x00\x00\x00\x01\x00\x00\x4a\x8c\ +\x00\x00\x01\x66\xfc\x03\x12\xba\ +\x00\x00\x01\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xcd\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x01\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x32\x16\ +\x00\x00\x01\x66\xfc\x03\x12\xba\ +\x00\x00\x06\x98\x00\x00\x00\x00\x00\x01\x00\x00\x59\x05\ +\x00\x00\x01\x67\xc8\xde\x99\x00\ +\x00\x00\x03\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x44\x58\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\xa5\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x07\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x61\x32\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x35\xab\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x03\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x3f\xdc\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x04\x70\x00\x00\x00\x00\x00\x01\x00\x00\x4c\xb2\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\x1d\ +\x00\x00\x01\x67\xc8\xe3\x1f\x17\ +\x00\x00\x07\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xf0\ +\x00\x00\x01\x66\xfc\x03\x12\xba\ +\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x37\xd9\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x04\x18\x00\x00\x00\x00\x00\x01\x00\x00\x48\x5e\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x06\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x59\xb6\ +\x00\x00\x01\x66\xfc\x03\x12\xba\ +\x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x34\xb3\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x05\x52\x00\x00\x00\x00\x00\x01\x00\x00\x50\xf1\ +\x00\x00\x01\x67\xc8\xd4\xf6\xae\ +\x00\x00\x04\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x85\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x01\x40\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xcf\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x3b\xf7\ +\x00\x00\x01\x66\xfc\x03\x12\xba\ +\x00\x00\x00\xce\x00\x00\x00\x00\x00\x01\x00\x00\x2a\xdd\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x02\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xce\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x06\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x57\x59\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x55\xfe\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x02\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x1c\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x29\xda\ +\x00\x00\x01\x67\xc8\xe2\xbc\x24\ +\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x46\x48\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x07\x20\x00\x00\x00\x00\x00\x01\x00\x00\x5c\x78\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x08\x16\x00\x00\x00\x00\x00\x01\x00\x00\x63\x48\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x07\x60\x00\x00\x00\x00\x00\x01\x00\x00\x5d\xc6\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf6\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x06\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x58\xa7\ +\x00\x00\x01\x67\xc8\xde\xd7\xd2\ +\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x8b\ +\x00\x00\x01\x67\xc8\xd4\xdc\x23\ +\x00\x00\x01\x58\x00\x00\x00\x00\x00\x01\x00\x00\x2f\xe5\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x06\xec\x00\x00\x00\x00\x00\x01\x00\x00\x5a\x4a\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x07\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xce\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x4f\x98\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x03\x78\x00\x00\x00\x00\x00\x01\x00\x00\x43\x50\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x4e\xe7\ +\x00\x00\x01\x67\xc8\xe3\x0c\x9f\ +\x00\x00\x05\x76\x00\x00\x00\x00\x00\x01\x00\x00\x51\x47\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x27\xa9\ +\x00\x00\x01\x66\xfc\x03\x12\xb9\ +\x00\x00\x02\x16\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x07\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x03\x48\x00\x00\x00\x00\x00\x01\x00\x00\x41\x2a\ +\x00\x00\x01\x66\xfc\x03\x12\xba\ +\x00\x00\x04\x46\x00\x00\x00\x00\x00\x01\x00\x00\x84\x85\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x01\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x18\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x01\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x6f\x60\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x06\x98\x00\x00\x00\x00\x00\x01\x00\x00\x91\xa5\ +\x00\x00\x01\x67\xc8\xde\x93\xfc\ +\x00\x00\x08\x76\x00\x00\x00\x00\x00\x01\x00\x00\x99\xd2\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x03\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x7e\x51\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8d\x45\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x07\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x9a\xda\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x72\xf5\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x04\x70\x00\x00\x00\x00\x00\x01\x00\x00\x86\xab\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x02\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x7a\x6c\ +\x00\x00\x01\x67\xc8\xe1\xbf\x42\ +\x00\x00\x07\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x97\x90\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x74\xc5\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x04\x18\x00\x00\x00\x00\x00\x01\x00\x00\x82\x57\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x06\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x92\x56\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x71\xfd\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x05\x52\x00\x00\x00\x00\x00\x01\x00\x00\x89\x91\ +\x00\x00\x01\x67\xc8\xd1\xff\x66\ +\x00\x00\x04\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x88\x7e\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x01\x40\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x19\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x76\xf0\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x00\xce\x00\x00\x00\x00\x00\x01\x00\x00\x68\x28\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x02\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x1d\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x06\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xf9\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x8e\x9e\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x02\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x6b\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x67\x25\ +\x00\x00\x01\x67\xc8\xe2\xb9\x80\ +\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x80\x41\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x08\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x79\x13\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x07\x20\x00\x00\x00\x00\x00\x01\x00\x00\x95\x18\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x07\x60\x00\x00\x00\x00\x00\x01\x00\x00\x96\x66\ +\x00\x00\x01\x66\xfc\x03\x12\xb6\ +\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x8b\x96\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x06\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x91\x47\ +\x00\x00\x01\x67\xc8\xde\xc4\x8f\ +\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x67\xd6\ +\x00\x00\x01\x67\xc8\xd4\xc3\xf3\ +\x00\x00\x01\x58\x00\x00\x00\x00\x00\x01\x00\x00\x6d\x2f\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x06\xec\x00\x00\x00\x00\x00\x01\x00\x00\x92\xea\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x07\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x97\x6e\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x88\xe0\ +\x00\x00\x01\x67\xc8\xe1\x09\xc5\ +\x00\x00\x05\x76\x00\x00\x00\x00\x00\x01\x00\x00\x89\xe7\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x64\xf7\ +\x00\x00\x01\x66\xfc\x03\x12\xb7\ +\x00\x00\x03\x48\x00\x00\x00\x00\x00\x01\x00\x00\x7c\x2b\ +\x00\x00\x01\x66\xfc\x03\x12\xb8\ +" + +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() diff --git a/themes/breeze/dark.py b/themes/breeze/dark.py new file mode 100644 index 0000000..b5fb492 --- /dev/null +++ b/themes/breeze/dark.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# +# The MIT License (MIT) +# +# Copyright (c) <2013-2014> +# +# 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. +# +""" +A simple example of use. + +Load an ui made in QtDesigner and apply the DarkStyleSheet. + + +Requirements: + - Python 2 or Python 3 + - PyQt4 + +.. note.. :: qdarkstyle does not have to be installed to run + the example + +""" +import logging +import sys +from PyQt5 import QtWidgets, QtCore +from PyQt5.QtCore import QFile, QTextStream +# make the example runnable without the need to install + +import example +import breeze_resources + +def main(): + """ + Application entry point + """ + logging.basicConfig(level=logging.DEBUG) + # create the application and the main window + app = QtWidgets.QApplication(sys.argv) + #app.setStyle(QtWidgets.QStyleFactory.create("fusion")) + window = QtWidgets.QMainWindow() + + # setup ui + ui = example.Ui_MainWindow() + ui.setupUi(window) + ui.bt_delay_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_instant_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_menu_button_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + window.setWindowTitle("BreezeDark example") + + # tabify dock widgets to show bug #6 + window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) + + # setup stylesheet + file = QFile(":/dark.qss") + file.open(QFile.ReadOnly | QFile.Text) + stream = QTextStream(file) + app.setStyleSheet(stream.readAll()) + + # auto quit after 2s when testing on travis-ci + if "--travis" in sys.argv: + QtCore.QTimer.singleShot(2000, app.exit) + + # run + window.show() + app.exec_() + + +if __name__ == "__main__": + main() diff --git a/themes/breeze/dark.qss b/themes/breeze/dark.qss new file mode 100644 index 0000000..65938c8 --- /dev/null +++ b/themes/breeze/dark.qss @@ -0,0 +1,1648 @@ +/* + * BreezeDark stylesheet. + * + * :author: Colin Duquesnoy + * :editor: Alex Huszagh + * :license: MIT, see LICENSE.md + * + * This is originally a fork of QDarkStyleSheet, and is based on Breeze/ + * BreezeDark color scheme, but is in no way affiliated with KDE. + * + * --------------------------------------------------------------------- + * The MIT License (MIT) + * + * Copyright (c) <2013-2014> + * Copyright (c) <2015-2016> + * + * 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. + * --------------------------------------------------------------------- + */ + +QToolTip +{ + border: 0.1ex solid #eff0f1; + background-color: #31363b; + alternate-background-color: #3b4045; + color: #eff0f1; + padding: 0.5ex; + opacity: 200; +} + +QWidget +{ + color: #eff0f1; + background-color: #31363b; + selection-background-color:#3daee9; + selection-color: #eff0f1; + background-clip: border; + border-image: none; + border: 0px transparent black; + outline: 0; +} + +QWidget:item:hover +{ + background-color: #3daee9; + color: #eff0f1; +} + +QWidget:item:selected +{ + background-color: #3daee9; +} + + +QCheckBox +{ + spacing: 0.5ex; + outline: none; + color: #eff0f1; + margin-bottom: 0.2ex; + opacity: 200; +} + +QCheckBox:disabled +{ + color: #76797c; +} + +QGroupBox::indicator +{ + margin-left: 0.2ex; +} + +QCheckBox::indicator:unchecked, +QCheckBox::indicator:unchecked:focus +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:pressed, +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed +{ + border: none; + border-image: url(:/dark/checkbox_unchecked.svg); +} + +QCheckBox::indicator:checked +{ + border-image: url(:/dark/checkbox_checked.svg); +} + +QCheckBox::indicator:checked:hover, +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed, +QGroupBox::indicator:checked:hover, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed +{ + border: none; + border-image: url(:/dark/checkbox_checked.svg); +} + +QCheckBox::indicator:indeterminate +{ + border-image: url(:/dark/checkbox_indeterminate.svg); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:hover, +QCheckBox::indicator:indeterminate:pressed +{ + border-image: url(:/dark/checkbox_indeterminate.svg); +} + +QCheckBox::indicator:indeterminate:disabled +{ + border-image: url(:/dark/checkbox_indeterminate_disabled.svg); +} + +QCheckBox::indicator:checked:disabled, +QGroupBox::indicator:checked:disabled +{ + border-image: url(:/dark/checkbox_checked_disabled.svg); +} + +QCheckBox::indicator:unchecked:disabled, +QGroupBox::indicator:unchecked:disabled +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QRadioButton +{ + spacing: 0.5ex; + outline: none; + color: #eff0f1; + margin-bottom: 0.2ex; +} + +QRadioButton:disabled +{ + color: #76797c; +} + +QRadioButton::indicator:unchecked, +QRadioButton::indicator:unchecked:focus +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + + +QRadioButton::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:pressed +{ + border: none; + outline: none; + border-image: url(:/dark/radio_unchecked.svg); +} + + +QRadioButton::indicator:checked +{ + border: none; + outline: none; + border-image: url(:/dark/radio_checked.svg); +} + +QRadioButton::indicator:checked:hover, +QRadioButton::indicator:checked:focus, +QRadioButton::indicator:checked:pressed +{ + border: none; + outline: none; + border-image: url(:/dark/radio_checked.svg); +} + +QRadioButton::indicator:checked:disabled +{ + outline: none; + border-image: url(:/dark/radio_checked_disabled.svg); +} + +QRadioButton::indicator:unchecked:disabled +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + +QMenuBar +{ + background-color: #31363b; + color: #eff0f1; +} + +QMenuBar::item +{ + background: transparent; +} + +QMenuBar::item:selected +{ + background: transparent; + border: 0.1ex solid #76797c; +} + +QMenuBar::item:pressed +{ + border: 0.1ex solid #76797c; + background-color: #3daee9; + color: #eff0f1; + margin-bottom: -0.1ex; + padding-bottom: 0.1ex; +} + +QMenu +{ + border: 0.1ex solid #76797c; + color: #eff0f1; + margin: 0.2ex; +} + +QMenu::icon +{ + margin: 0.5ex; +} + +QMenu::item +{ + padding: 0.5ex 3ex 0.5ex 3ex; + margin-left: 0.5ex; + border: 0.1ex solid transparent; /* reserve space for selection border */ +} + +QMenu::item:selected +{ + color: #eff0f1; +} + +QMenu::separator +{ + height: 0.2ex; + background: lightblue; + margin-left: 1ex; + margin-right: 0.5ex; +} + +/* non-exclusive indicator = check box style indicator + (see QActionGroup::setExclusive) */ +QMenu::indicator:non-exclusive:unchecked +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:unchecked:selected +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:checked +{ + border-image: url(:/dark/checkbox_checked.svg); +} + +QMenu::indicator:non-exclusive:checked:selected +{ + border-image: url(:/dark/checkbox_checked.svg); +} + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ +QMenu::indicator:exclusive:unchecked +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:unchecked:selected +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:checked +{ + border-image: url(:/dark/radio_checked.svg); +} + +QMenu::indicator:exclusive:checked:selected +{ + border-image: url(:/dark/radio_checked.svg); +} + +QMenu::right-arrow +{ + margin: 0.5ex; + border-image: url(:/light/right_arrow.svg); + width: 0.6ex; + height: 0.9ex; +} + + +QWidget:disabled +{ + color: #454545; + background-color: #31363b; +} + +QAbstractItemView +{ + alternate-background-color: #31363b; + color: #eff0f1; + border: 0.1ex solid 3A3939; + border-radius: 0.2ex; +} + +QWidget:focus, +QMenuBar:focus +{ + border: 0.1ex solid #3daee9; +} + +QTabWidget:focus, +QCheckBox:focus, +QRadioButton:focus, +QSlider:focus +{ + border: none; +} + +QLineEdit +{ + background-color: #232629; + padding: 0.5ex; + border-style: solid; + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + color: #eff0f1; +} + +QGroupBox +{ + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + padding-top: 1ex; + margin-top: 1ex; +} + +QGroupBox::title +{ + subcontrol-origin: margin; + subcontrol-position: top center; + padding-left: 0.1ex; + padding-right: 0.1ex; + margin-top: -0.7ex; +} + +QAbstractScrollArea +{ + border-radius: 0.2ex; + border: 0.1ex solid #76797c; + background-color: transparent; +} + +QScrollBar:horizontal +{ + height: 1.5ex; + margin: 0.3ex 1.5ex 0.3ex 1.5ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; + background-color: #2A2929; +} + +QScrollBar::handle:horizontal +{ + background-color: #3daee9; + min-width: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::add-line:horizontal +{ + margin: 0px 0.3ex 0px 0.3ex; + border-image: url(:/dark/right_arrow_disabled.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal +{ + margin: 0ex 0.3ex 0ex 0.3ex; + border-image: url(:/dark/left_arrow_disabled.svg); + width: 1ex; + height: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on +{ + border-image: url(:/dark/right_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on +{ + border-image: url(:/dark/left_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal +{ + background: none; +} + + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal +{ + background: none; +} + +QScrollBar:vertical +{ + background-color: #2A2929; + width: 1.5ex; + margin: 1.5ex 0.3ex 1.5ex 0.3ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; +} + +QScrollBar::handle:vertical +{ + background-color: #3daee9; + min-height: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::sub-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/dark/up_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/dark/down_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on +{ + + border-image: url(:/dark/up_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on +{ + border-image: url(:/dark/down_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical +{ + background: none; +} + + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical +{ + background: none; +} + +QTextEdit +{ + background-color: #232629; + color: #eff0f1; + border: 0.1ex solid #76797c; +} + +QPlainTextEdit +{ + background-color: #232629;; + color: #eff0f1; + border-radius: 0.2ex; + border: 0.1ex solid #76797c; +} + +QHeaderView::section +{ + background-color: #76797c; + color: #eff0f1; + padding: 0.5ex; + border: 0.1ex solid #76797c; +} + +QSizeGrip +{ + border-image: url(:/dark/sizegrip.svg); + width: 1.2ex; + height: 1.2ex; +} + +QMainWindow::separator +{ + background-color: #31363b; + color: white; + padding-left: 0.4ex; + spacing: 0.2ex; + border: 0.1ex dashed #76797c; +} + +QMainWindow::separator:hover +{ + + background-color: #787876; + color: white; + padding-left: 0.4ex; + border: 0.1ex solid #76797c; + spacing: 0.2ex; +} + +QMenu::separator +{ + height: 0.1ex; + background-color: #76797c; + color: white; + padding-left: 0.4ex; + margin-left: 1ex; + margin-right: 0.5ex; +} + +QFrame[frameShape="2"], /* QFrame::Panel == 0x0003 */ +QFrame[frameShape="3"], /* QFrame::WinPanel == 0x0003 */ +QFrame[frameShape="4"], /* QFrame::HLine == 0x0004 */ +QFrame[frameShape="5"], /* QFrame::VLine == 0x0005 */ +QFrame[frameShape="6"] /* QFrame::StyledPanel == 0x0006 */ +{ + border-width: 0.1ex; + padding: 0.1ex; + border-style: solid; + border-color: #31363b; + background-color: #76797c; + border-radius: 0.5ex; +} + +QStackedWidget +{ + border: 0.1ex transparent black; +} + +QToolBar +{ + border: 0.1ex transparent #393838; + background: 0.1ex solid #31363b; + font-weight: bold; +} + +QToolBar::handle:horizontal +{ + border-image: url(:/dark/hmovetoolbar.svg); + width = 1.6ex; + height = 6.4ex; +} + +QToolBar::handle:vertical +{ + border-image: url(:/dark/vmovetoolbar.svg); + width = 5.4ex; + height = 1ex; +} + +QToolBar::separator:horizontal +{ + border-image: url(:/dark/hsepartoolbar.svg); + width = 0.7ex; + height = 6.3ex; +} + +QToolBar::separator:vertical +{ + border-image: url(:/dark/vsepartoolbars.svg); + width = 6.3ex; + height = 0.7ex; +} + +QPushButton +{ + color: #eff0f1; + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #3b4045, stop: 0.5 #31363b); + border-width: 0.1ex; + border-color: #76797c; + border-style: solid; + padding: 0.5ex; + border-radius: 0.2ex; + outline: none; +} + +QPushButton:disabled +{ + background-color: #31363b; + border-width: 0.1ex; + border-color: #454545; + border-style: solid; + padding-top: 0.5ex; + padding-bottom: 0.5ex; + padding-left: 1ex; + padding-right: 1ex; + border-radius: 0.2ex; + color: #454545; +} + +QPushButton:focus +{ + color: white; +} + +QPushButton:pressed +{ + background-color: #31363b; + padding-top: -1.5ex; + padding-bottom: -1.7ex; +} + +QComboBox +{ + selection-background-color: #3daee9; + border-style: solid; + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + padding: 0.5ex; + min-width: 7.5ex; +} + +QPushButton:checked +{ + background-color: #76797c; + border-color: #6A6969; +} + +QPushButton:hover +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #454a4f, stop: 0.5 #3b4045); + border: 0.1ex solid #3daee9; + color: #eff0f1; +} + +QPushButton:checked:hover +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #808386, stop: 0.5 #76797c); + border: 0.1ex solid #3daee9; + color: #eff0f1; +} + +QComboBox:hover, +QAbstractSpinBox:hover, +QLineEdit:hover, +QTextEdit:hover, +QPlainTextEdit:hover, +QAbstractView:hover, +QTreeView:hover +{ + border: 0.1ex solid #3daee9; + color: #eff0f1; +} + +QComboBox:hover:pressed, +QPushButton:hover:pressed, +QAbstractSpinBox:hover:pressed, +QLineEdit:hover:pressed, +QTextEdit:hover:pressed, +QPlainTextEdit:hover:pressed, +QAbstractView:hover:pressed, +QTreeView:hover:pressed +{ + background-color: #31363b; +} + +QComboBox:on +{ + padding-top: 0.3ex; + padding-left: 0.4ex; + selection-background-color: #4a4a4a; +} + +QComboBox QAbstractItemView +{ + background-color: #232629; + border-radius: 0.2ex; + border: 0.1ex solid #76797c; + selection-background-color: #3daee9; +} + +QComboBox::drop-down +{ + subcontrol-origin: padding; + subcontrol-position: top right; + width: 1.5ex; + + border-left-width: 0ex; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 0.3ex; + border-bottom-right-radius: 0.3ex; +} + +QComboBox::down-arrow +{ + border-image: url(:/dark/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus +{ + border-image: url(:/dark/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox +{ + padding: 0.5ex; + border: 0.1ex solid #76797c; + background-color: #232629; + color: #eff0f1; + border-radius: 0.2ex; + min-width: 7.5ex; +} + +QAbstractSpinBox:up-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center right; +} + +QAbstractSpinBox:down-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center left; +} + +QAbstractSpinBox::up-arrow, +QAbstractSpinBox::up-arrow:disabled, +QAbstractSpinBox::up-arrow:off +{ + border-image: url(:/dark/up_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::up-arrow:hover +{ + border-image: url(:/dark/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow, +QAbstractSpinBox::down-arrow:disabled, +QAbstractSpinBox::down-arrow:off +{ + border-image: url(:/dark/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow:hover +{ + border-image: url(:/dark/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QLabel +{ + border: 0ex solid black; +} + +/* BORDERS */ +QTabWidget::pane +{ + padding: 0.5ex; + margin: 0.1ex; +} + +QTabWidget::pane:top +{ + border: 0.1ex solid #76797c; + top: -0.1ex; +} + +QTabWidget::pane:bottom +{ + border: 0.1ex solid #76797c; + bottom: -0.1ex; +} + +QTabWidget::pane:left +{ + border: 0.1ex solid #76797c; + right: -0.1ex; +} + +QTabWidget::pane:right +{ + border: 0.1ex solid #76797c; + left: -0.1ex; +} + + +QTabBar +{ + qproperty-drawBase: 0; + left: 0.5ex; /* move to the right by 0.5ex */ + border-radius: 0.3ex; +} + +QTabBar:focus +{ + border: 0ex transparent black; +} + +QTabBar::close-button +{ + border-image: url(:/dark/close.svg); + background: transparent; +} + +QTabBar::close-button:hover +{ + border-image: url(:/dark/close-hover.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +QTabBar::close-button:pressed +{ + border-image: url(:/dark/close-pressed.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +/* TOP TABS */ +QTabBar::tab:top +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-top: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + min-width: 50px; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:last, +QTabBar::tab:top:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + border-top: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + min-width: 50px; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:first:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-left: 0.1ex solid #76797c; +} + +QTabBar::tab:top:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +/* BOTTOM TABS */ + +QTabBar::tab:bottom +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 50px; +} + +QTabBar::tab:bottom:last, +QTabBar::tab:bottom:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 50px; +} + +QTabBar::tab:bottom:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:first:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-left: 0.1ex solid #76797c; +} + +QTabBar::tab:bottom:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +/* LEFT TABS */ +QTabBar::tab:left +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:left:last, +QTabBar::tab:left:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:left:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:left:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-top: 0.1ex solid #76797c; +} + +QTabBar::tab:left:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +/* RIGHT TABS */ +QTabBar::tab:right +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-left: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:right:last, +QTabBar::tab:right:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + border-left: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:right:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; +} + +QTabBar::tab:right:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-top: 0.1ex solid #76797c; +} + +QTabBar::tab:right:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +QTabBar QToolButton::right-arrow:enabled +{ + border-image: url(:/dark/right_arrow.svg); +} + +QTabBar QToolButton::left-arrow:enabled +{ + border-image: url(:/dark/left_arrow.svg); +} + +QTabBar QToolButton::right-arrow:disabled +{ + border-image: url(:/dark/right_arrow_disabled.svg); +} + +QTabBar QToolButton::left-arrow:disabled +{ + border-image: url(:/dark/left_arrow_disabled.svg); +} + +QDockWidget +{ + background: #31363b; + border: 0.1ex solid #403F3F; + titlebar-close-icon: url(:/dark/transparent.svg); + titlebar-normal-icon: url(:/dark/transparent.svg); +} + +QDockWidget::close-button, +QDockWidget::float-button +{ + border: 0.1ex solid transparent; + border-radius: 0.2ex; + background: transparent; +} + +QDockWidget::float-button +{ + border-image: url(:/dark/undock.svg); +} + +QDockWidget::float-button:hover +{ + border-image: url(:/dark/undock-hover.svg) ; +} + +QDockWidget::close-button +{ + border-image: url(:/dark/close.svg) ; +} + +QDockWidget::close-button:hover +{ + border-image: url(:/dark/close-hover.svg) ; +} + +QDockWidget::close-button:pressed +{ + border-image: url(:/dark/close-pressed.svg) ; +} + +QTreeView, +QListView +{ + border: 0.1ex solid #76797c; + background-color: #232629; +} + +QTreeView::branch:has-siblings:!adjoins-item +{ + border-image: url(:/dark/stylesheet-vline.svg) 0; +} + +QTreeView::branch:has-siblings:adjoins-item +{ + border-image: url(:/dark/stylesheet-branch-more.svg) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item +{ + border-image: url(:/dark/stylesheet-branch-end.svg) 0; +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings +{ + border-image: url(:/dark/stylesheet-branch-end-closed.svg) 0; + image: url(:/dark/branch_closed.svg); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings +{ + border-image: url(:/dark/stylesheet-branch-end-open.svg) 0; + image: url(:/dark/branch_open.svg); +} + +/* +QTreeView::branch:has-siblings:!adjoins-item { + background: cyan; +} + +QTreeView::branch:has-siblings:adjoins-item { + background: red; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + background: blue; +} + +QTreeView::branch:closed:has-children:has-siblings { + background: pink; +} + +QTreeView::branch:has-children:!has-siblings:closed { + background: gray; +} + +QTreeView::branch:open:has-children:has-siblings { + background: magenta; +} + +QTreeView::branch:open:has-children:!has-siblings { + background: green; +} +*/ + +QTableView::item, +QListView::item, +QTreeView::item +{ + padding: 0.3ex; +} + +QTableView::item:!selected:hover, +QListView::item:!selected:hover, +QTreeView::item:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + outline: 0; + color: #eff0f1; + padding: 0.3ex; +} + + +QSlider::groove:horizontal +{ + border: 0.1ex solid #31363b; + height: 0.4ex; + background: #565a5e; + margin: 0ex; + border-radius: 0.2ex; +} + +QSlider::handle:horizontal +{ + background: #232629; + border: 0.1ex solid #626568; + width: 1.6ex; + height: 1.6ex; + margin: -0.8ex 0; + border-radius: 0.9ex; +} + +QSlider::groove:vertical +{ + border: 0.1ex solid #31363b; + width: 0.4ex; + background: #565a5e; + margin: 0ex; + border-radius: 0.3ex; +} + +QSlider::handle:vertical +{ + background: #232629; + border: 0.1ex solid #626568; + width: 1.6ex; + height: 1.6ex; + margin: 0 -0.8ex; + border-radius: 0.9ex; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:horizontal:focus, +QSlider::handle:vertical:hover, +QSlider::handle:vertical:focus +{ + border: 0.1ex solid #3daee9; +} + +QSlider::sub-page:horizontal, +QSlider::add-page:vertical +{ + background: #3daee9; + border-radius: 0.3ex; +} + +QSlider::add-page:horizontal, +QSlider::sub-page:vertical +{ + background: #626568; + border-radius: 0.3ex; +} + +QToolButton +{ + background-color: transparent; + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + margin: 0.3ex; + padding: 0.5ex; +} + +QToolButton[popupMode="1"] /* only for MenuButtonPopup */ +{ + padding-right: 2ex; /* make way for the popup button */ +} + +QToolButton[popupMode="2"] /* only for InstantPopup */ +{ + padding-right: 1ex; /* make way for the popup button */ +} + +QToolButton::menu-indicator +{ + border-image: none; + image: url(:/dark/down_arrow.svg); + top: -0.7ex; + left: -0.2ex; +} + +QToolButton::menu-arrow +{ + border-image: none; + image: url(:/dark/down_arrow.svg); +} + +QToolButton:hover, +QToolButton::menu-button:hover +{ + background-color: transparent; + border: 0.1ex solid #3daee9; +} + +QToolButton:checked, +QToolButton:pressed, +QToolButton::menu-button:pressed +{ + background-color: #3daee9; + border: 0.1ex solid #3daee9; + padding: 0.5ex; +} + +QToolButton::menu-button +{ + border: 0.1ex solid #76797c; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + /* 1ex width + 0.4ex for border + no text = 2ex allocated above */ + width: 1ex; + padding: 0.5ex; + outline: none; +} + +QToolButton::menu-arrow:open +{ + border: 0.1ex solid #76797c; +} + +QPushButton::menu-indicator +{ + subcontrol-origin: padding; + subcontrol-position: bottom right; + left: 0.8ex; +} + +QTableView +{ + border: 0.1ex solid #76797c; + gridline-color: #31363b; + background-color: #232629; +} + + +QTableView, +QHeaderView +{ + border-radius: 0px; +} + +QTableView::item:pressed, +QListView::item:pressed, +QTreeView::item:pressed +{ + background: #3daee9; + color: #eff0f1; +} + +QTableView::item:selected:active, +QTreeView::item:selected:active, +QListView::item:selected:active +{ + background: #3daee9; + color: #eff0f1; +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover +{ + background-color: #47b8f3; + color: #eff0f1; +} + +QHeaderView +{ + background-color: #31363b; + border: 0.1ex transparent; + border-radius: 0px; + margin: 0px; + padding: 0px; + +} + +QHeaderView::section +{ + background-color: #31363b; + color: #eff0f1; + padding: 0.5ex; + border: 0.1ex solid #76797c; + border-radius: 0px; + text-align: center; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one +{ + border-top: 0.1ex solid #76797c; +} + +QHeaderView::section::vertical +{ + border-top: transparent; +} + +QHeaderView::section::horizontal::first, +QHeaderView::section::horizontal::only-one +{ + border-left: 0.1ex solid #76797c; +} + +QHeaderView::section::horizontal +{ + border-left: transparent; +} + + +QHeaderView::section:checked +{ + color: white; + background-color: #334e5e; +} + + /* style the sort indicator */ +QHeaderView::down-arrow +{ + image: url(:/dark/down_arrow.svg); +} + +QHeaderView::up-arrow +{ + image: url(:/dark/up_arrow.svg); +} + +QTableCornerButton::section +{ + background-color: #31363b; + border: 0.1ex transparent #76797c; + border-radius: 0px; +} + +QToolBox +{ + padding: 0.5ex; + border: 0.1ex transparent black; +} + +QToolBox:selected +{ + background-color: #31363b; + border-color: #3daee9; +} + +QToolBox:hover +{ + border-color: #3daee9; +} + +QStatusBar::item +{ + border: 0px transparent dark; +} + +QFrame[height="3"], +QFrame[width="3"] +{ + background-color: #76797c; +} + +QSplitter::handle +{ + border: 0.1ex dashed #76797c; +} + +QSplitter::handle:hover +{ + background-color: #787876; + border: 0.1ex solid #76797c; +} + +QSplitter::handle:horizontal +{ + width: 0.1ex; +} + +QSplitter::handle:vertical +{ + height: 0.1ex; +} + +QProgressBar:horizontal +{ + background-color: #626568; + border: 0.1ex solid #31363b; + border-radius: 0.3ex; + height: 0.5ex; + text-align: right; + margin-top: 0.5ex; + margin-bottom: 0.5ex; + margin-right: 5ex; + padding: 0px; +} + +QProgressBar::chunk:horizontal +{ + background-color: #3daee9; + border: 0.1ex transparent; + border-radius: 0.3ex; +} + +QSpinBox, +QDoubleSpinBox +{ + padding-right: 1.5ex; +} + +QSpinBox::up-button, +QDoubleSpinBox::up-button +{ + subcontrol-origin: content; + subcontrol-position: right top; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow +{ + border-image: url(:/dark/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:hover, +QSpinBox::up-arrow:pressed, +QDoubleSpinBox::up-arrow:hover, +QDoubleSpinBox::up-arrow:pressed +{ + border-image: url(:/dark/up_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:off +{ + border-image: url(:/dark/up_arrow_disabled.svg); +} + +QSpinBox::down-button, +QDoubleSpinBox::down-button +{ + subcontrol-origin: content; + subcontrol-position: right bottom; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow +{ + border-image: url(:/dark/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:hover, +QSpinBox::down-arrow:pressed, +QDoubleSpinBox::down-arrow:hover, +QDoubleSpinBox::down-arrow:pressed +{ + border-image: url(:/dark/down_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:off +{ + border-image: url(:/dark/down_arrow_disabled.svg); +} diff --git a/themes/breeze/dark/branch_closed-on.svg b/themes/breeze/dark/branch_closed-on.svg new file mode 100755 index 0000000..8bd398f --- /dev/null +++ b/themes/breeze/dark/branch_closed-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/branch_closed.svg b/themes/breeze/dark/branch_closed.svg new file mode 100755 index 0000000..f5a072f --- /dev/null +++ b/themes/breeze/dark/branch_closed.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/branch_open-on.svg b/themes/breeze/dark/branch_open-on.svg new file mode 100755 index 0000000..4dd0c06 --- /dev/null +++ b/themes/breeze/dark/branch_open-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/branch_open.svg b/themes/breeze/dark/branch_open.svg new file mode 100755 index 0000000..0745890 --- /dev/null +++ b/themes/breeze/dark/branch_open.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/checkbox_checked.svg b/themes/breeze/dark/checkbox_checked.svg new file mode 100755 index 0000000..6753d8b --- /dev/null +++ b/themes/breeze/dark/checkbox_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/dark/checkbox_checked_disabled.svg b/themes/breeze/dark/checkbox_checked_disabled.svg new file mode 100755 index 0000000..ff7e63a --- /dev/null +++ b/themes/breeze/dark/checkbox_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/dark/checkbox_indeterminate.svg b/themes/breeze/dark/checkbox_indeterminate.svg new file mode 100755 index 0000000..0f17124 --- /dev/null +++ b/themes/breeze/dark/checkbox_indeterminate.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/breeze/dark/checkbox_indeterminate_disabled.svg b/themes/breeze/dark/checkbox_indeterminate_disabled.svg new file mode 100755 index 0000000..bc0f285 --- /dev/null +++ b/themes/breeze/dark/checkbox_indeterminate_disabled.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/breeze/dark/checkbox_unchecked.svg b/themes/breeze/dark/checkbox_unchecked.svg new file mode 100755 index 0000000..6f3e569 --- /dev/null +++ b/themes/breeze/dark/checkbox_unchecked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/checkbox_unchecked_disabled.svg b/themes/breeze/dark/checkbox_unchecked_disabled.svg new file mode 100755 index 0000000..dd73f75 --- /dev/null +++ b/themes/breeze/dark/checkbox_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/close-hover.svg b/themes/breeze/dark/close-hover.svg new file mode 100755 index 0000000..e2b0dd8 --- /dev/null +++ b/themes/breeze/dark/close-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/close-pressed.svg b/themes/breeze/dark/close-pressed.svg new file mode 100755 index 0000000..a0dc249 --- /dev/null +++ b/themes/breeze/dark/close-pressed.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/close.svg b/themes/breeze/dark/close.svg new file mode 100755 index 0000000..07b50c9 --- /dev/null +++ b/themes/breeze/dark/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/down_arrow-hover.svg b/themes/breeze/dark/down_arrow-hover.svg new file mode 100755 index 0000000..408397f --- /dev/null +++ b/themes/breeze/dark/down_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/down_arrow.svg b/themes/breeze/dark/down_arrow.svg new file mode 100755 index 0000000..a50df00 --- /dev/null +++ b/themes/breeze/dark/down_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/down_arrow_disabled.svg b/themes/breeze/dark/down_arrow_disabled.svg new file mode 100755 index 0000000..af74a30 --- /dev/null +++ b/themes/breeze/dark/down_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/hmovetoolbar.svg b/themes/breeze/dark/hmovetoolbar.svg new file mode 100755 index 0000000..e4904db --- /dev/null +++ b/themes/breeze/dark/hmovetoolbar.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/hsepartoolbar.svg b/themes/breeze/dark/hsepartoolbar.svg new file mode 100755 index 0000000..89beb22 --- /dev/null +++ b/themes/breeze/dark/hsepartoolbar.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/left_arrow.svg b/themes/breeze/dark/left_arrow.svg new file mode 100755 index 0000000..9c787ce --- /dev/null +++ b/themes/breeze/dark/left_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/left_arrow_disabled.svg b/themes/breeze/dark/left_arrow_disabled.svg new file mode 100755 index 0000000..2d749e7 --- /dev/null +++ b/themes/breeze/dark/left_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/radio_checked.svg b/themes/breeze/dark/radio_checked.svg new file mode 100755 index 0000000..b8f7064 --- /dev/null +++ b/themes/breeze/dark/radio_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/dark/radio_checked_disabled.svg b/themes/breeze/dark/radio_checked_disabled.svg new file mode 100755 index 0000000..523ee00 --- /dev/null +++ b/themes/breeze/dark/radio_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/dark/radio_unchecked.svg b/themes/breeze/dark/radio_unchecked.svg new file mode 100755 index 0000000..1a556e3 --- /dev/null +++ b/themes/breeze/dark/radio_unchecked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/radio_unchecked_disabled.svg b/themes/breeze/dark/radio_unchecked_disabled.svg new file mode 100755 index 0000000..b3da8a2 --- /dev/null +++ b/themes/breeze/dark/radio_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/right_arrow.svg b/themes/breeze/dark/right_arrow.svg new file mode 100755 index 0000000..b793513 --- /dev/null +++ b/themes/breeze/dark/right_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/right_arrow_disabled.svg b/themes/breeze/dark/right_arrow_disabled.svg new file mode 100755 index 0000000..4940025 --- /dev/null +++ b/themes/breeze/dark/right_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/sizegrip.svg b/themes/breeze/dark/sizegrip.svg new file mode 100755 index 0000000..3388f07 --- /dev/null +++ b/themes/breeze/dark/sizegrip.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/spinup_disabled.svg b/themes/breeze/dark/spinup_disabled.svg new file mode 100755 index 0000000..838436d --- /dev/null +++ b/themes/breeze/dark/spinup_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/stylesheet-branch-end-closed.svg b/themes/breeze/dark/stylesheet-branch-end-closed.svg new file mode 100755 index 0000000..eb73b13 --- /dev/null +++ b/themes/breeze/dark/stylesheet-branch-end-closed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/stylesheet-branch-end-open.svg b/themes/breeze/dark/stylesheet-branch-end-open.svg new file mode 100755 index 0000000..eb73b13 --- /dev/null +++ b/themes/breeze/dark/stylesheet-branch-end-open.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/stylesheet-branch-end.svg b/themes/breeze/dark/stylesheet-branch-end.svg new file mode 100755 index 0000000..334ca0c --- /dev/null +++ b/themes/breeze/dark/stylesheet-branch-end.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/stylesheet-branch-more.svg b/themes/breeze/dark/stylesheet-branch-more.svg new file mode 100755 index 0000000..f5250ba --- /dev/null +++ b/themes/breeze/dark/stylesheet-branch-more.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/dark/stylesheet-vline.svg b/themes/breeze/dark/stylesheet-vline.svg new file mode 100755 index 0000000..4e7ff6a --- /dev/null +++ b/themes/breeze/dark/stylesheet-vline.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/transparent.svg b/themes/breeze/dark/transparent.svg new file mode 100755 index 0000000..3a8ca5c --- /dev/null +++ b/themes/breeze/dark/transparent.svg @@ -0,0 +1 @@ + diff --git a/themes/breeze/dark/undock-hover.svg b/themes/breeze/dark/undock-hover.svg new file mode 100755 index 0000000..6bddbd7 --- /dev/null +++ b/themes/breeze/dark/undock-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/dark/undock.svg b/themes/breeze/dark/undock.svg new file mode 100755 index 0000000..9ab2197 --- /dev/null +++ b/themes/breeze/dark/undock.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/up_arrow-hover.svg b/themes/breeze/dark/up_arrow-hover.svg new file mode 100755 index 0000000..dd1271a --- /dev/null +++ b/themes/breeze/dark/up_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/up_arrow.svg b/themes/breeze/dark/up_arrow.svg new file mode 100755 index 0000000..9f42239 --- /dev/null +++ b/themes/breeze/dark/up_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/up_arrow_disabled.svg b/themes/breeze/dark/up_arrow_disabled.svg new file mode 100755 index 0000000..742e1c5 --- /dev/null +++ b/themes/breeze/dark/up_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/dark/vmovetoolbar.svg b/themes/breeze/dark/vmovetoolbar.svg new file mode 100755 index 0000000..0a30d45 --- /dev/null +++ b/themes/breeze/dark/vmovetoolbar.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/themes/breeze/dark/vsepartoolbars.svg b/themes/breeze/dark/vsepartoolbars.svg new file mode 100755 index 0000000..00e91ab --- /dev/null +++ b/themes/breeze/dark/vsepartoolbars.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/breeze/example.py b/themes/breeze/example.py new file mode 100644 index 0000000..2adcdec --- /dev/null +++ b/themes/breeze/example.py @@ -0,0 +1,359 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'example.ui' +# +# Created by: PyQt5 UI code generator 5.4.2 +# +# 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(1068, 824) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.tabWidget = QtWidgets.QTabWidget(self.centralwidget) + self.tabWidget.setTabPosition(QtWidgets.QTabWidget.East) + self.tabWidget.setTabsClosable(True) + self.tabWidget.setObjectName("tabWidget") + self.tab = QtWidgets.QWidget() + self.tab.setObjectName("tab") + self.gridLayout = QtWidgets.QGridLayout(self.tab) + self.gridLayout.setObjectName("gridLayout") + self.groupBox = QtWidgets.QGroupBox(self.tab) + self.groupBox.setObjectName("groupBox") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.groupBox) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.toolBox = QtWidgets.QToolBox(self.groupBox) + self.toolBox.setObjectName("toolBox") + self.page = QtWidgets.QWidget() + self.page.setGeometry(QtCore.QRect(0, 0, 718, 227)) + self.page.setObjectName("page") + self.gridLayout_4 = QtWidgets.QGridLayout(self.page) + self.gridLayout_4.setObjectName("gridLayout_4") + self.lineEdit = QtWidgets.QLineEdit(self.page) + self.lineEdit.setObjectName("lineEdit") + self.gridLayout_4.addWidget(self.lineEdit, 0, 0, 1, 1) + self.toolBox.addItem(self.page, "") + self.page_2 = QtWidgets.QWidget() + self.page_2.setGeometry(QtCore.QRect(0, 0, 718, 227)) + self.page_2.setObjectName("page_2") + self.gridLayout_5 = QtWidgets.QGridLayout(self.page_2) + self.gridLayout_5.setObjectName("gridLayout_5") + self.listWidget = QtWidgets.QListWidget(self.page_2) + self.listWidget.setObjectName("listWidget") + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + self.gridLayout_5.addWidget(self.listWidget, 0, 0, 1, 1) + self.toolBox.addItem(self.page_2, "") + self.verticalLayout_3.addWidget(self.toolBox) + self.gridLayout.addWidget(self.groupBox, 1, 0, 1, 1) + self.tabWidget_2 = QtWidgets.QTabWidget(self.tab) + self.tabWidget_2.setObjectName("tabWidget_2") + self.tab_3 = QtWidgets.QWidget() + self.tab_3.setObjectName("tab_3") + self.gridLayout_6 = QtWidgets.QGridLayout(self.tab_3) + self.gridLayout_6.setObjectName("gridLayout_6") + self.checkableButton = QtWidgets.QPushButton(self.tab_3) + self.checkableButton.setCheckable(True) + self.checkableButton.setChecked(True) + self.checkableButton.setObjectName("checkableButton") + self.gridLayout_6.addWidget(self.checkableButton, 1, 0, 1, 1) + self.pushButton = QtWidgets.QPushButton(self.tab_3) + self.pushButton.setObjectName("pushButton") + self.gridLayout_6.addWidget(self.pushButton, 0, 0, 1, 1) + self.pushButton_5 = QtWidgets.QPushButton(self.tab_3) + self.pushButton_5.setObjectName("pushButton_5") + self.gridLayout_6.addWidget(self.pushButton_5, 2, 0, 1, 1) + self.tabWidget_2.addTab(self.tab_3, "") + self.tab_5 = QtWidgets.QWidget() + self.tab_5.setObjectName("tab_5") + self.gridLayout_7 = QtWidgets.QGridLayout(self.tab_5) + self.gridLayout_7.setObjectName("gridLayout_7") + self.tableWidget = QtWidgets.QTableWidget(self.tab_5) + self.tableWidget.setObjectName("tableWidget") + self.tableWidget.setColumnCount(2) + self.tableWidget.setRowCount(4) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(3, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + self.gridLayout_7.addWidget(self.tableWidget, 0, 0, 1, 1) + self.tabWidget_2.addTab(self.tab_5, "") + self.tab_4 = QtWidgets.QWidget() + self.tab_4.setObjectName("tab_4") + self.tabWidget_2.addTab(self.tab_4, "") + self.gridLayout.addWidget(self.tabWidget_2, 0, 0, 1, 1) + self.tabWidget.addTab(self.tab, "") + self.tab_2 = QtWidgets.QWidget() + self.tab_2.setObjectName("tab_2") + self.gridLayout_2 = QtWidgets.QGridLayout(self.tab_2) + self.gridLayout_2.setObjectName("gridLayout_2") + self.groupBox_2 = QtWidgets.QGroupBox(self.tab_2) + self.groupBox_2.setObjectName("groupBox_2") + self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_2) + self.verticalLayout_4.setObjectName("verticalLayout_4") + self.label = QtWidgets.QLabel(self.groupBox_2) + self.label.setObjectName("label") + self.verticalLayout_4.addWidget(self.label) + self.radioButton = QtWidgets.QRadioButton(self.groupBox_2) + self.radioButton.setObjectName("radioButton") + self.verticalLayout_4.addWidget(self.radioButton) + self.checkBox = QtWidgets.QCheckBox(self.groupBox_2) + self.checkBox.setObjectName("checkBox") + self.verticalLayout_4.addWidget(self.checkBox) + self.checkBox_2 = QtWidgets.QCheckBox(self.groupBox_2) + self.checkBox_2.setTristate(True) + self.checkBox_2.setObjectName("checkBox_2") + self.verticalLayout_4.addWidget(self.checkBox_2) + self.treeWidget = QtWidgets.QTreeWidget(self.groupBox_2) + self.treeWidget.setObjectName("treeWidget") + item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) + item_1 = QtWidgets.QTreeWidgetItem(self.treeWidget) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + item_2.setText(0, "subitem") + self.verticalLayout_4.addWidget(self.treeWidget) + self.gridLayout_2.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tabWidget.addTab(self.tab_2, "") + self.verticalLayout_5.addWidget(self.tabWidget) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) + self.pushButton_2.setObjectName("pushButton_2") + self.horizontalLayout.addWidget(self.pushButton_2) + self.bt_delay_popup = QtWidgets.QToolButton(self.centralwidget) + self.bt_delay_popup.setObjectName("bt_delay_popup") + self.horizontalLayout.addWidget(self.bt_delay_popup) + self.bt_instant_popup = QtWidgets.QToolButton(self.centralwidget) + self.bt_instant_popup.setPopupMode(QtWidgets.QToolButton.InstantPopup) + self.bt_instant_popup.setObjectName("bt_instant_popup") + self.horizontalLayout.addWidget(self.bt_instant_popup) + self.bt_menu_button_popup = QtWidgets.QToolButton(self.centralwidget) + self.bt_menu_button_popup.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self.bt_menu_button_popup.setObjectName("bt_menu_button_popup") + self.horizontalLayout.addWidget(self.bt_menu_button_popup) + self.line_2 = QtWidgets.QFrame(self.centralwidget) + self.line_2.setFrameShape(QtWidgets.QFrame.VLine) + self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_2.setObjectName("line_2") + self.horizontalLayout.addWidget(self.line_2) + self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget) + self.pushButton_3.setEnabled(False) + self.pushButton_3.setObjectName("pushButton_3") + self.horizontalLayout.addWidget(self.pushButton_3) + self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget) + self.doubleSpinBox.setObjectName("doubleSpinBox") + self.horizontalLayout.addWidget(self.doubleSpinBox) + self.toolButton = QtWidgets.QToolButton(self.centralwidget) + self.toolButton.setPopupMode(QtWidgets.QToolButton.InstantPopup) + self.toolButton.setObjectName("toolButton") + self.horizontalLayout.addWidget(self.toolButton) + self.verticalLayout_5.addLayout(self.horizontalLayout) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1068, 29)) + self.menubar.setObjectName("menubar") + self.menuMenu = QtWidgets.QMenu(self.menubar) + self.menuMenu.setObjectName("menuMenu") + self.menuSubmenu_2 = QtWidgets.QMenu(self.menuMenu) + self.menuSubmenu_2.setObjectName("menuSubmenu_2") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.dockWidget1 = QtWidgets.QDockWidget(MainWindow) + self.dockWidget1.setObjectName("dockWidget1") + self.dockWidgetContents = QtWidgets.QWidget() + self.dockWidgetContents.setObjectName("dockWidgetContents") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.dockWidgetContents) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.comboBox = QtWidgets.QComboBox(self.dockWidgetContents) + self.comboBox.setObjectName("comboBox") + self.comboBox.addItem("") + self.comboBox.addItem("") + self.verticalLayout.addWidget(self.comboBox) + self.horizontalSlider = QtWidgets.QSlider(self.dockWidgetContents) + self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) + self.horizontalSlider.setObjectName("horizontalSlider") + self.verticalLayout.addWidget(self.horizontalSlider) + self.textEdit = QtWidgets.QTextEdit(self.dockWidgetContents) + self.textEdit.setObjectName("textEdit") + self.verticalLayout.addWidget(self.textEdit) + self.line = QtWidgets.QFrame(self.dockWidgetContents) + self.line.setFrameShape(QtWidgets.QFrame.HLine) + self.line.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line.setObjectName("line") + self.verticalLayout.addWidget(self.line) + self.progressBar = QtWidgets.QProgressBar(self.dockWidgetContents) + self.progressBar.setProperty("value", 24) + self.progressBar.setObjectName("progressBar") + self.verticalLayout.addWidget(self.progressBar) + self.verticalLayout_2.addLayout(self.verticalLayout) + self.frame = QtWidgets.QFrame(self.dockWidgetContents) + self.frame.setMinimumSize(QtCore.QSize(0, 100)) + self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.frame.setFrameShadow(QtWidgets.QFrame.Raised) + self.frame.setLineWidth(3) + self.frame.setObjectName("frame") + self.verticalLayout_2.addWidget(self.frame) + self.dockWidget1.setWidget(self.dockWidgetContents) + MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget1) + self.toolBar = QtWidgets.QToolBar(MainWindow) + self.toolBar.setObjectName("toolBar") + MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) + self.dockWidget2 = QtWidgets.QDockWidget(MainWindow) + self.dockWidget2.setObjectName("dockWidget2") + self.dockWidgetContents_2 = QtWidgets.QWidget() + self.dockWidgetContents_2.setObjectName("dockWidgetContents_2") + self.gridLayout_3 = QtWidgets.QGridLayout(self.dockWidgetContents_2) + self.gridLayout_3.setObjectName("gridLayout_3") + self.verticalSlider = QtWidgets.QSlider(self.dockWidgetContents_2) + self.verticalSlider.setOrientation(QtCore.Qt.Vertical) + self.verticalSlider.setObjectName("verticalSlider") + self.gridLayout_3.addWidget(self.verticalSlider, 0, 0, 1, 1) + self.dockWidget2.setWidget(self.dockWidgetContents_2) + MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget2) + self.actionAction = QtWidgets.QAction(MainWindow) + self.actionAction.setObjectName("actionAction") + self.actionSub_menu = QtWidgets.QAction(MainWindow) + self.actionSub_menu.setObjectName("actionSub_menu") + self.actionAction_C = QtWidgets.QAction(MainWindow) + self.actionAction_C.setObjectName("actionAction_C") + self.menuSubmenu_2.addAction(self.actionSub_menu) + self.menuSubmenu_2.addAction(self.actionAction_C) + self.menuMenu.addAction(self.actionAction) + self.menuMenu.addAction(self.menuSubmenu_2.menuAction()) + self.menubar.addAction(self.menuMenu.menuAction()) + self.toolBar.addAction(self.actionAction) + self.toolBar.addAction(self.actionSub_menu) + + self.retranslateUi(MainWindow) + self.tabWidget.setCurrentIndex(0) + self.toolBox.setCurrentIndex(1) + self.tabWidget_2.setCurrentIndex(0) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + MainWindow.setTabOrder(self.pushButton, self.checkableButton) + MainWindow.setTabOrder(self.checkableButton, self.pushButton_5) + MainWindow.setTabOrder(self.pushButton_5, self.tabWidget_2) + MainWindow.setTabOrder(self.tabWidget_2, self.tableWidget) + MainWindow.setTabOrder(self.tableWidget, self.radioButton) + MainWindow.setTabOrder(self.radioButton, self.checkBox) + MainWindow.setTabOrder(self.checkBox, self.checkBox_2) + MainWindow.setTabOrder(self.checkBox_2, self.treeWidget) + MainWindow.setTabOrder(self.treeWidget, self.pushButton_2) + MainWindow.setTabOrder(self.pushButton_2, self.bt_delay_popup) + MainWindow.setTabOrder(self.bt_delay_popup, self.bt_instant_popup) + MainWindow.setTabOrder(self.bt_instant_popup, self.bt_menu_button_popup) + MainWindow.setTabOrder(self.bt_menu_button_popup, self.pushButton_3) + MainWindow.setTabOrder(self.pushButton_3, self.doubleSpinBox) + MainWindow.setTabOrder(self.doubleSpinBox, self.toolButton) + MainWindow.setTabOrder(self.toolButton, self.comboBox) + MainWindow.setTabOrder(self.comboBox, self.horizontalSlider) + MainWindow.setTabOrder(self.horizontalSlider, self.textEdit) + MainWindow.setTabOrder(self.textEdit, self.verticalSlider) + MainWindow.setTabOrder(self.verticalSlider, self.tabWidget) + MainWindow.setTabOrder(self.tabWidget, self.lineEdit) + MainWindow.setTabOrder(self.lineEdit, self.listWidget) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.groupBox.setTitle(_translate("MainWindow", "ToolBox")) + self.toolBox.setItemText(self.toolBox.indexOf(self.page), _translate("MainWindow", "Page 1")) + __sortingEnabled = self.listWidget.isSortingEnabled() + self.listWidget.setSortingEnabled(False) + item = self.listWidget.item(0) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(1) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(2) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(3) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(4) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(5) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(6) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(7) + item.setText(_translate("MainWindow", "New Item")) + self.listWidget.setSortingEnabled(__sortingEnabled) + self.toolBox.setItemText(self.toolBox.indexOf(self.page_2), _translate("MainWindow", "Page 2")) + self.checkableButton.setText(_translate("MainWindow", "Checkable button")) + self.pushButton.setText(_translate("MainWindow", "PushButton")) + self.pushButton_5.setText(_translate("MainWindow", "PushButton")) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_3), _translate("MainWindow", "Tab 1")) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.verticalHeaderItem(2) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.verticalHeaderItem(3) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("MainWindow", "New Column")) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("MainWindow", "New Column 2")) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_5), _translate("MainWindow", "Page")) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_4), _translate("MainWindow", "Tab 2")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1")) + self.groupBox_2.setTitle(_translate("MainWindow", "GroupBox")) + self.label.setText(_translate("MainWindow", "TextLabel")) + self.radioButton.setText(_translate("MainWindow", "RadioB&utton")) + self.checkBox.setText(_translate("MainWindow", "CheckBox")) + self.checkBox_2.setText(_translate("MainWindow", "CheckBox Tristate")) + self.treeWidget.headerItem().setText(0, _translate("MainWindow", "qdz")) + __sortingEnabled = self.treeWidget.isSortingEnabled() + self.treeWidget.setSortingEnabled(False) + self.treeWidget.topLevelItem(0).setText(0, _translate("MainWindow", "qzd")) + self.treeWidget.topLevelItem(1).setText(0, _translate("MainWindow", "effefe")) + self.treeWidget.setSortingEnabled(__sortingEnabled) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2")) + self.pushButton_2.setText(_translate("MainWindow", "PushButton")) + self.bt_delay_popup.setText(_translate("MainWindow", "Delayed popup ")) + self.bt_instant_popup.setText(_translate("MainWindow", "Instant popup")) + self.bt_menu_button_popup.setText(_translate("MainWindow", "MenuButtonPopup")) + self.pushButton_3.setText(_translate("MainWindow", "Disabled")) + self.toolButton.setText(_translate("MainWindow", "...")) + self.menuMenu.setTitle(_translate("MainWindow", "&Menu")) + self.menuSubmenu_2.setTitle(_translate("MainWindow", "&Submenu 2")) + self.dockWidget1.setWindowTitle(_translate("MainWindow", "&Dock widget 1")) + self.comboBox.setItemText(0, _translate("MainWindow", "Item 0")) + self.comboBox.setItemText(1, _translate("MainWindow", "Item 2")) + self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) + self.dockWidget2.setWindowTitle(_translate("MainWindow", "Dock widget &2")) + self.actionAction.setText(_translate("MainWindow", "&Action")) + self.actionSub_menu.setText(_translate("MainWindow", "&Action B")) + self.actionSub_menu.setToolTip(_translate("MainWindow", "submenu")) + self.actionAction_C.setText(_translate("MainWindow", "Action &C")) + diff --git a/themes/breeze/light.py b/themes/breeze/light.py new file mode 100644 index 0000000..7e2e30c --- /dev/null +++ b/themes/breeze/light.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# +# The MIT License (MIT) +# +# Copyright (c) <2013-2014> +# +# 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. +# +""" +A simple example of use. + +Load an ui made in QtDesigner and apply the DarkStyleSheet. + + +Requirements: + - Python 2 or Python 3 + - PyQt4 + +.. note.. :: qdarkstyle does not have to be installed to run + the example + +""" +import logging +import sys +from PyQt5 import QtWidgets, QtCore +from PyQt5.QtCore import QFile, QTextStream +# make the example runnable without the need to install + +import example +import breeze_resources + +def main(): + """ + Application entry point + """ + logging.basicConfig(level=logging.DEBUG) + # create the application and the main window + app = QtWidgets.QApplication(sys.argv) + #app.setStyle(QtWidgets.QStyleFactory.create("fusion")) + window = QtWidgets.QMainWindow() + + # setup ui + ui = example.Ui_MainWindow() + ui.setupUi(window) + ui.bt_delay_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_instant_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_menu_button_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + window.setWindowTitle("Breeze example") + + # tabify dock widgets to show bug #6 + window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) + + # setup stylesheet + file = QFile(":/light.qss") + file.open(QFile.ReadOnly | QFile.Text) + stream = QTextStream(file) + app.setStyleSheet(stream.readAll()) + + # auto quit after 2s when testing on travis-ci + if "--travis" in sys.argv: + QtCore.QTimer.singleShot(2000, app.exit) + + # run + window.show() + app.exec_() + + +if __name__ == "__main__": + main() diff --git a/themes/breeze/light.qss b/themes/breeze/light.qss new file mode 100644 index 0000000..e625231 --- /dev/null +++ b/themes/breeze/light.qss @@ -0,0 +1,1654 @@ +/* + * Breeze stylesheet. + * + * :author: Colin Duquesnoy + * :editor: Alex Huszagh + * :license: MIT, see LICENSE.md + * + * This is originally a fork of QDarkStyleSheet, and is based on Breeze/ + * BreezeDark color scheme, but is in no way affiliated with KDE. + * + * --------------------------------------------------------------------- + * The MIT License (MIT) + * + * Copyright (c) <2013-2014> + * Copyright (c) <2015-2016> + * + * 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. + * --------------------------------------------------------------------- + */ + +QToolTip +{ + background-color: black; + color: white; + padding: 0.5ex; +} + +QWidget +{ + color: #31363B; + background-color: #EFF0F1; + selection-background-color:#33A4DF; + selection-color: #31363B; + background-clip: border; + border-image: none; + border: 0px transparent black; + outline: 0; +} + +QWidget:item:hover +{ + background-color: #33A4DF; + color: #31363B; +} + +QWidget:item:selected +{ + background-color: #33A4DF; +} + + +QCheckBox +{ + spacing: 0.5ex; + outline: none; + color: #31363B; + margin-bottom: 0.2ex; + opacity: 200; +} + +QCheckBox:disabled +{ + color: #BAB9B8; +} + +QGroupBox::indicator +{ + margin-left: 0.2ex; + margin-left: 0.2ex; +} + +QCheckBox::indicator:unchecked, +QCheckBox::indicator:unchecked:focus +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:pressed, +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed +{ + border: none; + border-image: url(:/light/checkbox_unchecked-hover.svg); +} + +QCheckBox::indicator:checked +{ + border-image: url(:/light/checkbox_checked.svg); +} + +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed +{ + border: none; + border-image: url(:/light/checkbox_checked.svg); +} + +QCheckBox::indicator:checked:hover, +QGroupBox::indicator:checked:hover +{ + border-image: url(:/light/checkbox_checked-hover.svg); +} + +QCheckBox::indicator:indeterminate +{ + border-image: url(:/light/checkbox_indeterminate.svg); +} + +QCheckBox::indicator:indeterminate:hover +{ + border-image: url(:/light/checkbox_indeterminate-hover.svg); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:pressed +{ +} + +QCheckBox::indicator:indeterminate:disabled +{ + border-image: url(:/light/checkbox_indeterminate_disabled.svg); +} + +QCheckBox::indicator:checked:disabled, +QGroupBox::indicator:checked:disabled +{ + border-image: url(:/light/checkbox_checked_disabled.svg); +} + +QCheckBox::indicator:unchecked:disabled, +QGroupBox::indicator:unchecked:disabled +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QRadioButton +{ + spacing: 0.5ex; + outline: none; + color: #31363B; + margin-bottom: 0.2ex; +} + +QRadioButton:disabled +{ + color: #BAB9B8; +} + +QRadioButton::indicator:unchecked, +QRadioButton::indicator:unchecked:focus +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QRadioButton::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:pressed +{ + border: none; + outline: none; + border-image: url(:/light/radio_unchecked-hover.svg); +} + +QRadioButton::indicator:checked +{ + border: none; + outline: none; + border-image: url(:/light/radio_checked.svg); +} + +QRadioButton::indicator:checked:focus, +QRadioButton::indicator:checked:pressed +{ + border: none; + outline: none; + border-image: url(:/light/radio_checked.svg); +} + +QRadioButton::indicator:checked:hover +{ + border-image: url(:/light/radio_checked-hover.svg); +} + +QRadioButton::indicator:checked:disabled +{ + outline: none; + border-image: url(:/light/radio_checked_disabled.svg); +} + +QRadioButton::indicator:unchecked:disabled +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QMenuBar +{ + background-color: #EFF0F1; + color: #31363B; +} + +QMenuBar::item +{ + background: transparent; +} + +QMenuBar::item:selected +{ + background: transparent; + border: 0.1ex solid #BAB9B8; +} + +QMenuBar::item:pressed +{ + border: 0.1ex solid #BAB9B8; + background-color: #33A4DF; + color: #31363B; + margin-bottom: -0.1ex; + padding-bottom: 0.1ex; +} + +QMenu +{ + border: 0.1ex solid #BAB9B8; + color: #31363B; + margin: 0.2ex; +} + +QMenu::icon +{ + margin: 0.5ex; +} + +QMenu::item +{ + padding: 0.5ex 3ex 0.5ex 3ex; + margin-left: 0.5ex; + border: 0.1ex solid transparent; /* reserve space for selection border */ +} + +QMenu::item:selected +{ + color: #31363B; +} + +QMenu::separator +{ + height: 0.2ex; + background: lightblue; + margin-left: 1ex; + margin-right: 0.5ex; +} + +/* non-exclusive indicator = check box style indicator + (see QActionGroup::setExclusive) */ +QMenu::indicator:non-exclusive:unchecked +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:unchecked:selected +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:checked +{ + border-image: url(:/light/checkbox_checked.svg); +} + +QMenu::indicator:non-exclusive:checked:selected +{ + border-image: url(:/light/checkbox_checked.svg); +} + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ +QMenu::indicator:exclusive:unchecked +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:unchecked:selected +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:checked +{ + border-image: url(:/light/radio_checked.svg); +} + +QMenu::indicator:exclusive:checked:selected +{ + border-image: url(:/light/radio_checked.svg); +} + +QMenu::right-arrow +{ + margin: 0.5ex; + border-image: url(:/light/right_arrow.svg); + width: 0.6ex; + height: 0.9ex; +} + + +QWidget:disabled +{ + color: #454545; + background-color: #EFF0F1; +} + +QAbstractItemView +{ + alternate-background-color: #EFF0F1; + color: #31363B; + border: 0.1ex solid 3A3939; + border-radius: 0.2ex; +} + +QWidget:focus, +QMenuBar:focus +{ + border: 0.1ex solid #33A4DF; +} + +QTabWidget:focus, +QCheckBox:focus, +QRadioButton:focus, +QSlider:focus +{ + border: none; +} + +QLineEdit +{ + background-color: #FCFCFC; + padding: 0.5ex; + border-style: solid; + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + color: #31363B; +} + +QGroupBox +{ + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + padding-top: 1ex; + margin-top: 1ex; +} + +QGroupBox::title +{ + subcontrol-origin: margin; + subcontrol-position: top center; + padding-left: 0.1ex; + padding-right: 0.1ex; + margin-top: -0.7ex; +} + +QAbstractScrollArea +{ + border-radius: 0.2ex; + border: 0.1ex solid #BAB9B8; + background-color: transparent; +} + +QScrollBar:horizontal +{ + height: 1.5ex; + margin: 0.3ex 1.5ex 0.3ex 1.5ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; + background-color: #2A2929; +} + +QScrollBar::handle:horizontal +{ + background-color: #605F5F; + min-width: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::add-line:horizontal +{ + margin: 0ex 0.3ex 0ex 0.3ex; + border-image: url(:/light/right_arrow_disabled.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal +{ + margin: 0px 0.3ex 0px 0.3ex; + border-image: url(:/light/left_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover,QScrollBar::add-line:horizontal:on +{ + border-image: url(:/light/right_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + + +QScrollBar::sub-line:horizontal:hover, QScrollBar::sub-line:horizontal:on +{ + border-image: url(:/light/left_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal +{ + background: none; +} + + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal +{ + background: none; +} + +QScrollBar:vertical +{ + background-color: #2A2929; + width: 1.5ex; + margin: 1.5ex 0.3ex 1.5ex 0.3ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; +} + +QScrollBar::handle:vertical +{ + background-color: #605F5F; + min-height: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::sub-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/light/up_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/light/down_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on +{ + + border-image: url(:/light/up_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on +{ + border-image: url(:/light/down_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical +{ + background: none; +} + + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical +{ + background: none; +} + +QTextEdit +{ + background-color: #EFF0F1; + color: #31363B; + border: 0.1ex solid #BAB9B8; +} + +QPlainTextEdit +{ + background-color: #EFF0F1; + color: #31363B; + border-radius: 0.2ex; + border: 0.1ex solid #BAB9B8; +} + +QHeaderView::section +{ + background-color: #BAB9B8; + color: #31363B; + padding: 0.5ex; + border: 0.1ex solid #BAB9B8; +} + +QSizeGrip +{ + border-image: url(:/light/sizegrip.svg); + width: 1.2ex; + height: 1.2ex; +} + +QMainWindow::separator +{ + background-color: #EFF0F1; + color: white; + padding-left: 0.4ex; + spacing: 0.2ex; + border: 0.1ex dashed #BAB9B8; +} + +QMainWindow::separator:hover +{ + + background-color: #787876; + color: white; + padding-left: 0.4ex; + border: 0.1ex solid #BAB9B8; + spacing: 0.2x; +} + +QMenu::separator +{ + height: 0.1ex; + background-color: #BAB9B8; + color: white; + padding-left: 0.4ex; + margin-left: 1ex; + margin-right: 0.5ex; +} + +QFrame[frameShape="2"], /* QFrame::Panel == 0x0003 */ +QFrame[frameShape="3"], /* QFrame::WinPanel == 0x0003 */ +QFrame[frameShape="4"], /* QFrame::HLine == 0x0004 */ +QFrame[frameShape="5"], /* QFrame::VLine == 0x0005 */ +QFrame[frameShape="6"] /* QFrame::StyledPanel == 0x0006 */ +{ + border-width: 0.1ex; + padding: 0.1ex; + border-style: solid; + border-color: #EFF0F1; + background-color: #bcbfc2; + border-radius: 0.5ex; +} + +QStackedWidget +{ + border: 0.1ex transparent black; +} + +QToolBar +{ + border: 0.1ex transparent #393838; + background: 0.1ex solid #EFF0F1; + font-weight: bold; +} + +QToolBar::handle:horizontal +{ + border-image: url(:/light/hmovetoolbar.svg); + width = 1.6ex; + height = 6.4ex; +} + +QToolBar::handle:vertical +{ + border-image: url(:/light/vmovetoolbar.svg); + width = 5.4ex; + height = 1ex; +} + +QToolBar::separator:horizontal +{ + border-image: url(:/light/hsepartoolbar.svg); + width = 0.7ex; + height = 6.3ex; +} + +QToolBar::separator:vertical +{ + border-image: url(:/light/vsepartoolbars.svg); + width = 6.3ex; + height = 0.7ex; +} + +QPushButton +{ + color: #31363B; + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #EFF0F1, stop: 0.5 #eaebec); + border-width: 0.1ex; + border-color: #BAB9B8; + border-style: solid; + padding: 0.5ex; + border-radius: 0.2ex; + outline: none; +} + +QPushButton:disabled +{ + background-color: #e0e1e2; + border-width: 0.1ex; + border-color: #b4b4b4; + border-style: solid; + padding-top: 0.5ex; + padding-bottom: 0.5ex; + padding-left: 1ex; + padding-right: 1ex; + border-radius: 0.2ex; + color: #b4b4b4; +} + +QPushButton:focus +{ + color: black; +} + +QComboBox +{ + selection-background-color: #33A4DF; + border-style: solid; + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + padding: 0.5ex; + min-width: 7.5ex; +} + +QPushButton:checked +{ + background-color: #BAB9B8; + border-color: #6A6969; +} + +QComboBox:hover, +QAbstractSpinBox:hover, +QLineEdit:hover, +QTextEdit:hover, +QPlainTextEdit:hover, +QAbstractView:hover, +QTreeView:hover +{ + border: 0.1ex solid #33A4DF; + color: #31363B; +} + +QComboBox:hover:pressed, +QPushButton:hover:pressed, +QAbstractSpinBox:hover:pressed, +QLineEdit:hover:pressed, +QTextEdit:hover:pressed, +QPlainTextEdit:hover:pressed, +QAbstractView:hover:pressed, +QTreeView:hover:pressed +{ + background-color: #EFF0F1; +} + +QComboBox:on +{ + padding-top: 0.3ex; + padding-left: 0.4ex; + selection-background-color: #4a4a4a; +} + +QComboBox QAbstractItemView +{ + background-color: #FCFCFC; + border-radius: 0.2ex; + border: 0.1ex solid #BAB9B8; + selection-background-color: #33A4DF; +} + +QComboBox::drop-down +{ + subcontrol-origin: padding; + subcontrol-position: top right; + width: 1.5ex; + + border-left-width: 0ex; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 0.3ex; + border-bottom-right-radius: 0.3ex; +} + +QComboBox::down-arrow +{ + border-image: url(:/light/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus +{ + border-image: url(:/light/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox +{ + padding: 0.5ex; + border: 0.1ex solid #BAB9B8; + background-color: #D9D8D7; + color: #31363B; + border-radius: 0.2ex; + min-width: 7.5ex; +} + +QAbstractSpinBox:up-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center right; +} + +QAbstractSpinBox:down-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center left; +} + +QAbstractSpinBox::up-arrow, +QAbstractSpinBox::up-arrow:disabled, +QAbstractSpinBox::up-arrow:off +{ + border-image: url(:/light/up_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::up-arrow:hover +{ + border-image: url(:/light/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow, +QAbstractSpinBox::down-arrow:disabled, +QAbstractSpinBox::down-arrow:off +{ + border-image: url(:/light/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow:hover +{ + border-image: url(:/light/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QLabel +{ + border: 0ex solid black; +} + +QTabWidget{ + border: 0.1ex solid #BAB9B8; +} + +/* BORDERS */ +QTabWidget::pane +{ + padding: 0.5ex; + margin: 0.1ex; +} + +QTabWidget::pane:top +{ + border: 0.1ex solid #BAB9B8; + top: -0.1ex; +} + +QTabWidget::pane:bottom +{ + border: 0.1ex solid #BAB9B8; + bottom: -0.1ex; +} + +QTabWidget::pane:left +{ + border: 0.1ex solid #BAB9B8; + right: -0.1ex; +} + +QTabWidget::pane:right +{ + border: 0.1ex solid #BAB9B8; + left: -0.1ex; +} + +QTabBar +{ + qproperty-drawBase: 0; + left: 0.5ex; /* move to the right by 0.5ex */ + border-radius: 0.3ex; +} + +QTabBar:focus +{ + border: 0ex transparent black; +} + +QTabBar::close-button +{ + border-image: url(:/light/close.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +QTabBar::close-button:hover +{ + border-image: url(:/light/close-hover.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +QTabBar::close-button:pressed +{ + border-image: url(:/light/close-pressed.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +/* TOP TABS */ +QTabBar::tab:top +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-top: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + min-width: 5ex; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:last, +QTabBar::tab:top:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + border-top: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + min-width: 5ex; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:first:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-left: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:top:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +/* BOTTOM TABS */ +QTabBar::tab:bottom +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 5ex; +} + +QTabBar::tab:bottom:last, +QTabBar::tab:bottom:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 5ex; +} + +QTabBar::tab:bottom:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:first:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-left: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:bottom:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +/* LEFT TABS */ +QTabBar::tab:left +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:left:last, +QTabBar::tab:left:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:left:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:left:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-top: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:left:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +/* RIGHT TABS */ +QTabBar::tab:right +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-left: 0.1ex solid #BAB9B8; + background-color: #D9D8D7; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:right:last, +QTabBar::tab:right:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + border-left: 0.1ex solid #BAB9B8; + background-color: #D9D8D7; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:right:!selected +{ + color: #31363B; + background-color: #54575B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; +} + +QTabBar::tab:right:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-top: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:right:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +QTabBar QToolButton::right-arrow:enabled +{ + border-image: url(:/light/right_arrow.svg); +} + +QTabBar QToolButton::left-arrow:enabled +{ + border-image: url(:/light/left_arrow.svg); +} + +QTabBar QToolButton::right-arrow:disabled +{ + border-image: url(:/light/right_arrow_disabled.svg); +} + +QTabBar QToolButton::left-arrow:disabled +{ + border-image: url(:/light/left_arrow_disabled.svg); +} + +QDockWidget +{ + background: #EFF0F1; + border: 0.1ex solid #403F3F; + titlebar-close-icon: url(:/light/transparent.svg); + titlebar-normal-icon: url(:/light/transparent.svg); +} + +QDockWidget::close-button, +QDockWidget::float-button +{ + border: 0.1ex solid transparent; + border-radius: 0.2ex; + background: transparent; +} + + +QDockWidget::float-button +{ + border-image: url(:/dark/undock.svg); +} + +QDockWidget::float-button:hover +{ + border-image: url(:/dark/undock-hover.svg) ; +} + +QDockWidget::close-button +{ + border-image: url(:/dark/close.svg) ; +} + +QDockWidget::close-button:hover +{ + border-image: url(:/dark/close-hover.svg) ; +} + +QDockWidget::close-button:pressed +{ + border-image: url(:/dark/close-pressed.svg) ; +} + +QTreeView, +QListView +{ + border: 0.1ex solid #BAB9B8; + background-color: #FCFCFC; +} + + +QTreeView::branch:has-siblings:!adjoins-item +{ + border-image: url(:/light/stylesheet-vline.svg) 0; +} + +QTreeView::branch:has-siblings:adjoins-item +{ + border-image: url(:/light/stylesheet-branch-more.svg) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item +{ + border-image: url(:/light/stylesheet-branch-end.svg) 0; +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings +{ + border-image: url(:/light/stylesheet-branch-end-closed.svg) 0; + image: url(:/light/branch_closed.svg); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings +{ + border-image: url(:/light/stylesheet-branch-end-open.svg) 0; + image: url(:/light/branch_open.svg); +} + +QTableView::item, +QListView::item, +QTreeView::item +{ + padding: 0.3ex; +} + +QTableView::item:!selected:hover, +QListView::item:!selected:hover, +QTreeView::item:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + outline: 0; + color: #31363B; + padding: 0.3ex; +} + +QSlider::groove:horizontal +{ + border: 0.1ex solid #EFF0F1; + height: 0.4ex; + background: #9CA0A4; + margin: 0px; + border-radius: 0.2ex; +} + +QSlider::handle:horizontal +{ + background: #D9D8D7; + border: 0.1ex solid #BABEC2; + width: 1.6ex; + height: 1.6ex; + margin: -0.8ex 0; + border-radius: 0.9ex; +} + +QSlider::groove:vertical +{ + border: 0.1ex solid #EFF0F1; + width: 0.4ex; + background: #9CA0A4; + margin: 0ex; + border-radius: 0.3ex; +} + +QSlider::handle:vertical +{ + background: #D9D8D7; + border: 0.1ex solid #BABEC2; + width: 1.6ex; + height: 1.6ex; + margin: 0 -0.8ex; + border-radius: 0.9ex; +} + +QSlider::handle:horizontal:focus, +QSlider::handle:vertical:focus +{ + border: 0.1ex solid #33A4DF; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover +{ + border: 0.1ex solid #51c2fc; +} + +QSlider::sub-page:horizontal, +QSlider::add-page:vertical +{ + background: #33A4DF; + border-radius: 0.3ex; +} + +QSlider::add-page:horizontal, +QSlider::sub-page:vertical +{ + background: #BABEC2; + border-radius: 0.3ex; +} + +QToolButton +{ + background-color: transparent; + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + margin: 0.3ex; + padding: 0.5ex; +} + +QToolButton[popupMode="1"] /* only for MenuButtonPopup */ +{ + padding-right: 2ex; /* make way for the popup button */ +} + +QToolButton[popupMode="2"] /* only for InstantPopup */ +{ + padding-right: 1ex; /* make way for the popup button */ +} + +QToolButton::menu-indicator +{ + border-image: url(:/light/down_arrow.svg); + top: -0.7ex; left: -0.2ex; /* shift it a bit */ + width = 0.9ex; + height = 0.6ex; +} + +QToolButton::menu-arrow +{ + border-image: url(:/light/down_arrow.svg); + width = 0.9ex; + height = 0.6ex; +} + +QToolButton:hover, +QToolButton::menu-button:hover +{ + background-color: transparent; + border: 0.1ex solid #33A4DF; +} + +QToolButton:checked, +QToolButton:pressed, +QToolButton::menu-button:pressed +{ + background-color: #47b8fc; + border: 0.1ex solid #47b8fc; + padding: 0.5ex; +} + +QToolButton::menu-button +{ + border: 0.1ex solid #BAB9B8; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + /* 1ex width + 0.4ex for border + no text = 2ex allocated above */ + width: 1ex; + padding: 0.5ex; + outline: none; +} + +QToolButton::menu-arrow:open +{ + border: 0.1ex solid #BAB9B8; +} + +QPushButton::menu-indicator +{ + subcontrol-origin: padding; + subcontrol-position: bottom right; + left: 0.8ex; +} + +QTableView +{ + border: 0.1ex solid #BAB9B8; + gridline-color: #BAB9B8; + background-color: #FCFCFC; +} + + +QTableView, +QHeaderView +{ + border-radius: 0px; +} + +QTableView::item:pressed +{ + background: #33A4DF; + color: #31363B; +} + +QTableView::item:selected:active +{ + background: #33A4DF; + color: #31363B; +} + +QTableView::item:selected:hover +{ + background-color: #47b8f3; + color: #31363B; +} + +QListView::item:pressed, +QTreeView::item:pressed +{ + background: #3daee9; + color: #31363B; +} + +QTreeView::item:selected:active, +QListView::item:selected:active +{ + background: #3daee9; + color: #31363B; +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover +{ + background-color: #51c2fc; + color: #31363B; +} + + +QHeaderView +{ + background-color: #EFF0F1; + border: 0.1ex transparent; + border-radius: 0px; + margin: 0px; + padding: 0px; + +} + +QHeaderView::section +{ + background-color: #EFF0F1; + color: #31363B; + padding: 0.5ex; + border: 0.1ex solid #BAB9B8; + border-radius: 0px; + text-align: center; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one +{ + border-top: 0.1ex solid #BAB9B8; +} + +QHeaderView::section::vertical +{ + border-top: transparent; +} + +QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::only-one +{ + border-left: 0.1ex solid #BAB9B8; +} + +QHeaderView::section::horizontal +{ + border-left: transparent; +} + + +QHeaderView::section:checked + + { + color: black; + background-color: #b9dae7; + } + + /* style the sort indicator */ +QHeaderView::down-arrow +{ + image: url(:/light/down_arrow.svg); +} + +QHeaderView::up-arrow +{ + image: url(:/light/up_arrow.svg); +} + +QTableCornerButton::section +{ + background-color: #EFF0F1; + border: 0.1ex transparent #BAB9B8; + border-radius: 0px; +} + +QToolBox +{ + padding: 0.5ex; + border: 0.1ex transparent black; +} + +QToolBox:selected +{ + background-color: #EFF0F1; + border-color: #33A4DF; +} + +QToolBox:hover +{ + border-color: #33A4DF; +} + +QStatusBar::item +{ + border: 0px transparent dark; +} + +QSplitter::handle +{ + border: 0.1ex dashed #BAB9B8; +} + +QSplitter::handle:hover +{ + background-color: #787876; + border: 0.1ex solid #BAB9B8; +} + +QSplitter::handle:horizontal +{ + width: 0.1ex; +} + +QSplitter::handle:vertical +{ + height: 0.1ex; +} + +QProgressBar:horizontal +{ + background-color: #BABEC2; + border: 0.1ex solid #EFF0F1; + border-radius: 0.3ex; + height: 0.5ex; + text-align: right; + margin-top: 0.5ex; + margin-bottom: 0.5ex; + margin-right: 5ex; + padding: 0px; +} + +QProgressBar::chunk:horizontal +{ + background-color: #33A4DF; + border: 0.1ex transparent; + border-radius: 0.3ex; +} + +QAbstractSpinBox +{ + background-color: #EFF0F1; +} + +QSpinBox, +QDoubleSpinBox +{ + padding-right: 1.5ex; +} + +QSpinBox::up-button, +QDoubleSpinBox::up-button +{ + subcontrol-origin: content; + subcontrol-position: right top; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow +{ + border-image: url(:/light/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:hover, +QSpinBox::up-arrow:pressed, +QDoubleSpinBox::up-arrow:hover, +QDoubleSpinBox::up-arrow:pressed +{ + border-image: url(:/light/up_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:off +{ + border-image: url(:/light/up_arrow_disabled.svg); +} + +QSpinBox::down-button, +QDoubleSpinBox::down-button +{ + subcontrol-origin: content; + subcontrol-position: right bottom; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow +{ + border-image: url(:/light/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:hover, +QSpinBox::down-arrow:pressed, +QDoubleSpinBox::down-arrow:hover, +QDoubleSpinBox::down-arrow:pressed +{ + border-image: url(:/light/down_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:off +{ + border-image: url(:/light/down_arrow_disabled.svg); +} + +QPushButton:hover +{ + border: 0.1ex solid #3daef3; + color: #31363B; +} + +QPushButton:focus +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #4cbdff, stop: 0.5 #33a4e8); + color: white; +} + +QPushButton:focus:hover +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #bedfec, stop: 0.5 #b9dae7); + color: #31363B; +} + +QPushButton:focus:pressed, +QPushButton:pressed +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #bedfec, stop: 0.5 #b9dae7); + color: #31363B; +} + diff --git a/themes/breeze/light/branch_closed-on.svg b/themes/breeze/light/branch_closed-on.svg new file mode 100755 index 0000000..23c5421 --- /dev/null +++ b/themes/breeze/light/branch_closed-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/branch_closed.svg b/themes/breeze/light/branch_closed.svg new file mode 100755 index 0000000..286c1a9 --- /dev/null +++ b/themes/breeze/light/branch_closed.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/branch_open-on.svg b/themes/breeze/light/branch_open-on.svg new file mode 100755 index 0000000..9e75927 --- /dev/null +++ b/themes/breeze/light/branch_open-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/branch_open.svg b/themes/breeze/light/branch_open.svg new file mode 100755 index 0000000..514a312 --- /dev/null +++ b/themes/breeze/light/branch_open.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/checkbox_checked-hover.svg b/themes/breeze/light/checkbox_checked-hover.svg new file mode 100755 index 0000000..64d6667 --- /dev/null +++ b/themes/breeze/light/checkbox_checked-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/checkbox_checked.svg b/themes/breeze/light/checkbox_checked.svg new file mode 100755 index 0000000..f3acb63 --- /dev/null +++ b/themes/breeze/light/checkbox_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/checkbox_checked_disabled.svg b/themes/breeze/light/checkbox_checked_disabled.svg new file mode 100755 index 0000000..b7be04b --- /dev/null +++ b/themes/breeze/light/checkbox_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/checkbox_indeterminate-hover.svg b/themes/breeze/light/checkbox_indeterminate-hover.svg new file mode 100755 index 0000000..def9596 --- /dev/null +++ b/themes/breeze/light/checkbox_indeterminate-hover.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/breeze/light/checkbox_indeterminate.svg b/themes/breeze/light/checkbox_indeterminate.svg new file mode 100755 index 0000000..a619ab0 --- /dev/null +++ b/themes/breeze/light/checkbox_indeterminate.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/breeze/light/checkbox_indeterminate_disabled.svg b/themes/breeze/light/checkbox_indeterminate_disabled.svg new file mode 100755 index 0000000..74d7168 --- /dev/null +++ b/themes/breeze/light/checkbox_indeterminate_disabled.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/breeze/light/checkbox_unchecked-hover.svg b/themes/breeze/light/checkbox_unchecked-hover.svg new file mode 100755 index 0000000..8f0bb01 --- /dev/null +++ b/themes/breeze/light/checkbox_unchecked-hover.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/checkbox_unchecked_disabled.svg b/themes/breeze/light/checkbox_unchecked_disabled.svg new file mode 100755 index 0000000..0ef4300 --- /dev/null +++ b/themes/breeze/light/checkbox_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/close-hover.svg b/themes/breeze/light/close-hover.svg new file mode 100755 index 0000000..cb44c78 --- /dev/null +++ b/themes/breeze/light/close-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/close-pressed.svg b/themes/breeze/light/close-pressed.svg new file mode 100755 index 0000000..a0dc249 --- /dev/null +++ b/themes/breeze/light/close-pressed.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/close.svg b/themes/breeze/light/close.svg new file mode 100755 index 0000000..07b50c9 --- /dev/null +++ b/themes/breeze/light/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/down_arrow-hover.svg b/themes/breeze/light/down_arrow-hover.svg new file mode 100755 index 0000000..408397f --- /dev/null +++ b/themes/breeze/light/down_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/down_arrow.svg b/themes/breeze/light/down_arrow.svg new file mode 100755 index 0000000..34c5d6a --- /dev/null +++ b/themes/breeze/light/down_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/down_arrow_disabled.svg b/themes/breeze/light/down_arrow_disabled.svg new file mode 100755 index 0000000..af74a30 --- /dev/null +++ b/themes/breeze/light/down_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/hmovetoolbar.svg b/themes/breeze/light/hmovetoolbar.svg new file mode 100755 index 0000000..57e54c9 --- /dev/null +++ b/themes/breeze/light/hmovetoolbar.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/hsepartoolbar.svg b/themes/breeze/light/hsepartoolbar.svg new file mode 100755 index 0000000..a446425 --- /dev/null +++ b/themes/breeze/light/hsepartoolbar.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/left_arrow.svg b/themes/breeze/light/left_arrow.svg new file mode 100755 index 0000000..f77acf4 --- /dev/null +++ b/themes/breeze/light/left_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/left_arrow_disabled.svg b/themes/breeze/light/left_arrow_disabled.svg new file mode 100755 index 0000000..2d749e7 --- /dev/null +++ b/themes/breeze/light/left_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/radio_checked-hover.svg b/themes/breeze/light/radio_checked-hover.svg new file mode 100755 index 0000000..f3d5c98 --- /dev/null +++ b/themes/breeze/light/radio_checked-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/radio_checked.svg b/themes/breeze/light/radio_checked.svg new file mode 100755 index 0000000..86ff6bf --- /dev/null +++ b/themes/breeze/light/radio_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/radio_checked_disabled.svg b/themes/breeze/light/radio_checked_disabled.svg new file mode 100755 index 0000000..269ae12 --- /dev/null +++ b/themes/breeze/light/radio_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/radio_unchecked-hover.svg b/themes/breeze/light/radio_unchecked-hover.svg new file mode 100755 index 0000000..f5fc943 --- /dev/null +++ b/themes/breeze/light/radio_unchecked-hover.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/radio_unchecked_disabled.svg b/themes/breeze/light/radio_unchecked_disabled.svg new file mode 100755 index 0000000..41f503d --- /dev/null +++ b/themes/breeze/light/radio_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/right_arrow.svg b/themes/breeze/light/right_arrow.svg new file mode 100755 index 0000000..a43ea2b --- /dev/null +++ b/themes/breeze/light/right_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/right_arrow_disabled.svg b/themes/breeze/light/right_arrow_disabled.svg new file mode 100755 index 0000000..4940025 --- /dev/null +++ b/themes/breeze/light/right_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/sizegrip.svg b/themes/breeze/light/sizegrip.svg new file mode 100755 index 0000000..3388f07 --- /dev/null +++ b/themes/breeze/light/sizegrip.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/spinup_disabled.svg b/themes/breeze/light/spinup_disabled.svg new file mode 100755 index 0000000..838436d --- /dev/null +++ b/themes/breeze/light/spinup_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/stylesheet-branch-end-closed.svg b/themes/breeze/light/stylesheet-branch-end-closed.svg new file mode 100755 index 0000000..a31f5c0 --- /dev/null +++ b/themes/breeze/light/stylesheet-branch-end-closed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/stylesheet-branch-end-open.svg b/themes/breeze/light/stylesheet-branch-end-open.svg new file mode 100755 index 0000000..a31f5c0 --- /dev/null +++ b/themes/breeze/light/stylesheet-branch-end-open.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/stylesheet-branch-end.svg b/themes/breeze/light/stylesheet-branch-end.svg new file mode 100755 index 0000000..a1c0a42 --- /dev/null +++ b/themes/breeze/light/stylesheet-branch-end.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/stylesheet-branch-more.svg b/themes/breeze/light/stylesheet-branch-more.svg new file mode 100755 index 0000000..ebef839 --- /dev/null +++ b/themes/breeze/light/stylesheet-branch-more.svg @@ -0,0 +1,4 @@ + + + + diff --git a/themes/breeze/light/stylesheet-vline.svg b/themes/breeze/light/stylesheet-vline.svg new file mode 100755 index 0000000..688177e --- /dev/null +++ b/themes/breeze/light/stylesheet-vline.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/transparent.svg b/themes/breeze/light/transparent.svg new file mode 100755 index 0000000..3a8ca5c --- /dev/null +++ b/themes/breeze/light/transparent.svg @@ -0,0 +1 @@ + diff --git a/themes/breeze/light/undock-hover.svg b/themes/breeze/light/undock-hover.svg new file mode 100755 index 0000000..6bddbd7 --- /dev/null +++ b/themes/breeze/light/undock-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/breeze/light/undock.svg b/themes/breeze/light/undock.svg new file mode 100755 index 0000000..9ab2197 --- /dev/null +++ b/themes/breeze/light/undock.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/up_arrow-hover.svg b/themes/breeze/light/up_arrow-hover.svg new file mode 100755 index 0000000..dd1271a --- /dev/null +++ b/themes/breeze/light/up_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/up_arrow.svg b/themes/breeze/light/up_arrow.svg new file mode 100755 index 0000000..b02bb26 --- /dev/null +++ b/themes/breeze/light/up_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/up_arrow_disabled.svg b/themes/breeze/light/up_arrow_disabled.svg new file mode 100755 index 0000000..742e1c5 --- /dev/null +++ b/themes/breeze/light/up_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/themes/breeze/light/vmovetoolbar.svg b/themes/breeze/light/vmovetoolbar.svg new file mode 100755 index 0000000..0a30d45 --- /dev/null +++ b/themes/breeze/light/vmovetoolbar.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/themes/breeze/light/vsepartoolbars.svg b/themes/breeze/light/vsepartoolbars.svg new file mode 100755 index 0000000..00e91ab --- /dev/null +++ b/themes/breeze/light/vsepartoolbars.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/themes/breeze/native.py b/themes/breeze/native.py new file mode 100644 index 0000000..0269795 --- /dev/null +++ b/themes/breeze/native.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# +# The MIT License (MIT) +# +# Copyright (c) <2013-2014> +# +# 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. +# +""" +A simple example of use. + +Load an ui made in QtDesigner and apply the DarkStyleSheet. + + +Requirements: + - Python 2 or Python 3 + - PyQt4 + +.. note.. :: qdarkstyle does not have to be installed to run + the example + +""" +import logging +import sys +from PyQt5 import QtWidgets, QtCore +# make the example runnable without the need to install + +import example + + +def main(): + """ + Application entry point + """ + logging.basicConfig(level=logging.DEBUG) + # create the application and the main window + app = QtWidgets.QApplication(sys.argv) + #app.setStyle(QtWidgets.QStyleFactory.create("fusion")) + window = QtWidgets.QMainWindow() + + # setup ui + ui = example.Ui_MainWindow() + ui.setupUi(window) + ui.bt_delay_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_instant_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_menu_button_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + window.setWindowTitle("Native example") + + # tabify dock widgets to show bug #6 + window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) + + # auto quit after 2s when testing on travis-ci + if "--travis" in sys.argv: + QtCore.QTimer.singleShot(2000, app.exit) + + # run + window.show() + app.exec_() + + +if __name__ == "__main__": + main() diff --git a/themes/qdarkstyle/__init__.py b/themes/qdarkstyle/__init__.py new file mode 100644 index 0000000..94cb9c8 --- /dev/null +++ b/themes/qdarkstyle/__init__.py @@ -0,0 +1,473 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""QDarkStyle is a dark stylesheet for Python and Qt applications. + +This module provides a function to transparently load the stylesheets +with the correct rc file. + +First, start importing our module + +.. code-block:: python + + import qdarkstyle + +Then you can get stylesheet provided by QDarkStyle for various Qt wrappers +as shown bellow + +.. code-block:: python + + # PySide + dark_stylesheet = qdarkstyle.load_stylesheet_pyside() + # PySide 2 + dark_stylesheet = qdarkstyle.load_stylesheet_pyside2() + # PyQt4 + dark_stylesheet = qdarkstyle.load_stylesheet_pyqt() + # PyQt5 + dark_stylesheet = qdarkstyle.load_stylesheet_pyqt5() + +Or from environment variables provided for QtPy or PyQtGraph, see + +.. code-block:: python + + # QtPy + dark_stylesheet = qdarkstyle.load_stylesheet_from_environment() + # PyQtGraph + dark_stylesheet = qdarkstyle.load_stylesheet_from_environment(is_pyqtgraph) + +Finally, set your QApplication with it + +.. code-block:: python + + app.setStyleSheet(dark_stylesheet) + +Enjoy! + +""" + +import logging +import os +import platform +import sys +import warnings +import copy + +if sys.version_info >= (3, 4): + import importlib + +__version__ = "2.6.8" + + +QT_BINDINGS = ['PyQt4', 'PyQt5', 'PySide', 'PySide2'] +"""list: values of all Qt bindings to import.""" + +QT_ABSTRACTIONS = ['qtpy', 'pyqtgraph', 'Qt'] +"""list: values of all Qt abstraction layers to import.""" + +QT4_IMPORT_API = ['QtCore', 'QtGui'] +"""list: which subpackage to import for Qt4 API.""" + +QT5_IMPORT_API = ['QtCore', 'QtGui', 'QtWidgets'] +"""list: which subpackage to import for Qt5 API.""" + +QT_API_VALUES = ['pyqt', 'pyqt5', 'pyside', 'pyside2'] +"""list: values for QT_API environment variable used by QtPy.""" + +QT_LIB_VALUES = ['PyQt', 'PyQt5', 'PySide', 'PySide2'] +"""list: values for PYQTGRAPH_QT_LIB environment variable used by PyQtGraph.""" + +QT_BINDING = 'Not set or nonexistent' +"""str: Qt binding in use.""" + +QT_ABSTRACTION = 'Not set or nonexistent' +"""str: Qt abstraction layer in use.""" + + +def _logger(): + return logging.getLogger('qdarkstyle') + + +def _qt_wrapper_import(qt_api): + """ + Check if Qt API defined can be imported. + + :param qt_api: Qt API string to test import + + :return load function fot given qt_api, otherwise empty string + + """ + qt_wrapper = '' + loader = "" + + try: + if qt_api == 'PyQt' or qt_api == 'pyqt': + import PyQt4 + qt_wrapper = 'PyQt4' + loader = load_stylesheet_pyqt() + elif qt_api == 'PyQt5' or qt_api == 'pyqt5': + import PyQt5 + qt_wrapper = 'PyQt5' + loader = load_stylesheet_pyqt5() + elif qt_api == 'PySide' or qt_api == 'pyside': + import PySide + qt_wrapper = 'PySide' + loader = load_stylesheet_pyside() + elif qt_api == 'PySide2' or qt_api == 'pyside2': + import PySide2 + qt_wrapper = 'PySide2' + loader = load_stylesheet_pyside2() + except ImportError as err: + _logger().error("Impossible import Qt wrapper.\n %s", str(err)) + else: + _logger().info("Using Qt wrapper = %s ", qt_wrapper) + QT_BINDING = qt_wrapper + finally: + return loader + + +def load_stylesheet_from_environment(is_pyqtgraph=False): + """ + Load the stylesheet from QT_API (or PYQTGRAPH_QT_LIB) environment variable. + + :param is_pyqtgraph: True if it is to be set using PYQTGRAPH_QT_LIB + + :raise KeyError: if QT_API/PYQTGRAPH_QT_LIB does not exist + + :return the stylesheet string + """ + warnings.warn( + "load_stylesheet_from_environment() will be deprecated in version 3," + "use load_stylesheet()", + PendingDeprecationWarning + ) + qt_api = '' + pyqtgraph_qt_lib = '' + + loader = "" + + # Get values from QT_API + try: + qt_api = os.environ['QT_API'] + except KeyError as err: + # Log this error just if using QT_API + if not is_pyqtgraph: + _logger().error("QT_API does not exist, do os.environ['QT_API']= " + "and choose one option from %s", QT_API_VALUES) + else: + if not is_pyqtgraph: + if qt_api in QT_API_VALUES: + QT_ABSTRACTION = "qtpy" + _logger().info("Found QT_API='%s'", qt_api) + loader = _qt_wrapper_import(qt_api) + else: + # Raise this error because the function need this key/value + raise KeyError("QT_API=%s is unknown, please use a value " + "from %s", + (qt_api, QT_API_VALUES)) + + # Get values from PYQTGRAPH_QT_LIB + try: + pyqtgraph_qt_lib = os.environ['PYQTGRAPH_QT_LIB'] + except KeyError as err: + # Log this error just if using PYQTGRAPH_QT_LIB + if is_pyqtgraph: + _logger().error("PYQTGRAP_QT_API does not exist, do " + "os.environ['PYQTGRAPH_QT_LIB']= " + "and choose one option from %s", + QT_LIB_VALUES) + else: + + if is_pyqtgraph: + if pyqtgraph_qt_lib in QT_LIB_VALUES: + QT_ABSTRACTION = "pyqtgraph" + _logger().info("Found PYQTGRAPH_QT_LIB='%s'", pyqtgraph_qt_lib) + loader = _qt_wrapper_import(pyqtgraph_qt_lib) + else: + # Raise this error because the function need this key/value + raise KeyError("PYQTGRAPH_QT_LIB=%s is unknown, please use a " + "value from %s", ( + pyqtgraph_qt_lib, + QT_LIB_VALUES)) + + # Just a warning if both are set but differs each other + if qt_api and pyqtgraph_qt_lib: + if qt_api != pyqtgraph_qt_lib.lower(): + _logger().warning("Both QT_API=%s and PYQTGRAPH_QT_LIB=%s are set, " + "but with different values, this could cause " + "some issues if using them in the same project!", + qt_api, pyqtgraph_qt_lib) + + return loader + + +def load_stylesheet(pyside=True): + """ + Load the stylesheet. Takes care of importing the rc module. + + :param pyside: True to load the pyside rc file, False to load the PyQt rc file + + :return the stylesheet string + """ + warnings.warn( + "load_stylesheet() will not receive pyside parameter in version 3. " + "Set QtPy environment variable to specify the Qt binding insteady.", + PendingDeprecationWarning + ) + # Smart import of the rc file + + pyside_ver = None + + if pyside: + + # Detect the PySide version available + try: + import PySide + except ImportError: # Compatible with py27 + import PySide2 + pyside_ver = 2 + else: + pyside_ver = 1 + + if pyside_ver == 1: + import qdarkstyle.pyside_style_rc + else: + import qdarkstyle.pyside2_style_rc + else: + import qdarkstyle.pyqt_style_rc + + # Load the stylesheet content from resources + if not pyside: + from PyQt4.QtCore import QFile, QTextStream + else: + if pyside_ver == 1: + from PySide.QtCore import QFile, QTextStream + else: + from PySide2.QtCore import QFile, QTextStream + + f = QFile(":qdarkstyle/style.qss") + if not f.exists(): + _logger().error("Unable to load stylesheet, file not found in " + "resources") + return "" + else: + f.open(QFile.ReadOnly | QFile.Text) + ts = QTextStream(f) + stylesheet = ts.readAll() + if platform.system().lower() == 'darwin': # see issue #12 on github + mac_fix = ''' + QDockWidget::title + { + background-color: #32414B; + text-align: center; + height: 12px; + } + ''' + stylesheet += mac_fix + return stylesheet + + +def load_stylesheet_pyside(): + """ + Load the stylesheet for use in a pyside application. + + :return the stylesheet string + """ + warnings.warn( + "load_stylesheet_pyside() will be deprecated in version 3," + "set QtPy environment variable to specify the Qt binding and " + "use load_stylesheet()", + PendingDeprecationWarning + ) + return load_stylesheet(pyside=True) + + +def load_stylesheet_pyside2(): + """ + Load the stylesheet for use in a pyside2 application. + + :raise NotImplementedError: Because it is not supported yet + """ + warnings.warn( + "load_stylesheet_pyside2() will be deprecated in version 3," + "set QtPy environment variable to specify the Qt binding and " + "use load_stylesheet()", + PendingDeprecationWarning + ) + return load_stylesheet(pyside=True) + + +def load_stylesheet_pyqt(): + """ + Load the stylesheet for use in a pyqt4 application. + + :return the stylesheet string + """ + warnings.warn( + "load_stylesheet_pyqt() will be deprecated in version 3," + "set QtPy environment variable to specify the Qt binding and " + "use load_stylesheet()", + PendingDeprecationWarning + ) + return load_stylesheet(pyside=False) + + +def load_stylesheet_pyqt5(): + """ + Load the stylesheet for use in a pyqt5 application. + + :param pyside: True to load the pyside rc file, False to load the PyQt rc file + + :return the stylesheet string + """ + warnings.warn( + "load_stylesheet_pyqt5() will be deprecated in version 3," + "set QtPy environment variable to specify the Qt binding and " + "use load_stylesheet()", + PendingDeprecationWarning + ) + # Smart import of the rc file + import qdarkstyle.pyqt5_style_rc + + # Load the stylesheet content from resources + from PyQt5.QtCore import QFile, QTextStream + + f = QFile(":qdarkstyle/style.qss") + if not f.exists(): + _logger().error("Unable to load stylesheet, file not found in " + "resources") + return "" + else: + f.open(QFile.ReadOnly | QFile.Text) + ts = QTextStream(f) + stylesheet = ts.readAll() + if platform.system().lower() == 'darwin': # see issue #12 on github + mac_fix = ''' + QDockWidget::title + { + background-color: #32414B; + text-align: center; + height: 12px; + } + ''' + stylesheet += mac_fix + return stylesheet + + +def information(): + """Get system and runtime information.""" + info = [] + qt_api = '' + qt_lib = '' + qt_bin = '' + + try: + qt_api = os.environ['QT_API'] + except KeyError: + qt_api = 'Not set or nonexistent' + + try: + from Qt import __binding__ + except Exception: + # It should be (KeyError, ModuleNotFoundError, ImportError) + # but each python version have a different one, and not define others + qt_lib = 'Not set or nonexistent' + else: + qt_lib = __binding__ + + try: + qt_bin = os.environ['PYQTGRAPH_QT_LIB'] + except KeyError: + qt_bin = 'Not set or nonexistent' + + info.append('QDarkStyle: %s' % __version__) + info.append('OS: %s %s %s' % (platform.system(), platform.release(), platform.machine())) + info.append('Platform: %s' % sys.platform) + info.append('Python: %s' % '.'.join(str(e) for e in sys.version_info[:])) + info.append('Python API: %s' % sys.api_version) + + info.append('Binding in use: %s' % QT_BINDING) + info.append('Abstraction in use: %s' % QT_ABSTRACTION) + + info.append('qtpy (QT_API): %s' % qt_api) + info.append('pyqtgraph (PYQTGRAPH_QT_LIB): %s' % qt_lib) + info.append('Qt.py (__binding__): %s' % qt_bin) + + return info + + +def qt_bindings(): + """Return a list of qt bindings available.""" + return _check_imports(import_list=QT_BINDINGS) + + +def qt_abstractions(): + """Return a list of qt abstraction layers available.""" + return _check_imports(import_list=QT_ABSTRACTIONS) + + +def _check_imports(import_list): + """Return a list of imports available.""" + + # Disable warnings here + warnings.filterwarnings("ignore") + + import_list_return = copy.deepcopy(import_list) + # Using import_list_return var in for, does not work in py2.7 + # when removing the element, it reflects on for list + # so it skips next element + for current_import in import_list: + + spec = True + # Copy the sys path to make sure to not insert anything + sys_path = sys.path + + # Check import + if sys.version_info >= (3, 4): + spec = importlib.util.find_spec(current_import) + else: + try: + __import__(current_import) + except RuntimeWarning: + spec = True + except Exception: + spec = None + else: + spec = True + + if spec is None: + # Remove if not available + import_list_return.remove(current_import) + + # Restore sys path + sys.path = sys_path + + # Restore warnings + warnings.resetwarnings() + + return import_list_return + + +def _import_qt_modules_from(use_binding='pyqt5', use_abstraction='qtpy'): + """New approach to import modules using importlib.""" + + if not sys.version_info >= (3, 4): + print('Function not available for Python < 3.4') + + spec_binding = importlib.util.find_spec(use_binding) + spec_abstraction = importlib.util.find_spec(use_abstraction) + + if spec_binding is None: + print("Cannot find Qt binding: ", use_binding) + else: + module = importlib.util.module_from_spec(spec_binding) + spec.loader.exec_module(module) + # Adding the module to sys.modules is optional. + sys.modules[name] = module + + if spec_abstraction is None: + print("Cannot find Qt abstraction layer: ", use_abstraction) + else: + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + # Adding the module to sys.modules is optional. + sys.modules[name] = module diff --git a/themes/qdarkstyle/__main__.py b/themes/qdarkstyle/__main__.py new file mode 100755 index 0000000..c9d757a --- /dev/null +++ b/themes/qdarkstyle/__main__.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from qdarkstyle import qt_bindings, qt_abstractions, information, __version__ +import qdarkstyle +import argparse +import sys + +from os.path import abspath, dirname +sys.path.insert(0, abspath(dirname(abspath(__file__)) + '/..')) + + +def print_list_md(info): + """Print a list of information, line by line.""" + for item in info: + print(' - ' + item) + + +def main(): + """Execute QDarkStyle example.""" + parser = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('-i', '--information', action='store_true', + help="Show information about environment (important for bug report)") + parser.add_argument('-b', '--bindings', action='store_true', + help="Show available bindings for Qt") + parser.add_argument('-a', '--abstractions', action='store_true', + help="Show available abstraction layers for Qt bindings") + # parser.add_argument('-e', '--example', action='store_true', + # help="Show qdarkstyle example, subcommand.") + parser.add_argument('-v', '--version', action='store_true', + help="Show qdarkstyle version") + parser.add_argument('--all', action='store_true', + help="Show all information options at once") + + # parsing arguments from command line + args = parser.parse_args() + + parser.print_help() + + if args.information or args.all: + info = information() + print('\nInformation about your current environment setup:') + print_list_md(info) + + if args.bindings or args.all: + info = qt_bindings() + print('\nQt bindings available:') + print_list_md(info) + + if args.abstractions or args.all: + info = qt_abstractions() + print('\nQt abstraction layers available:') + print_list_md(info) + + if args.version: + info = __version__ + print('\nVersion: %s' % info) + + # if args.example: + # example.main() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/themes/qdarkstyle/pyqt5_style_rc.py b/themes/qdarkstyle/pyqt5_style_rc.py new file mode 100644 index 0000000..147fbb8 --- /dev/null +++ b/themes/qdarkstyle/pyqt5_style_rc.py @@ -0,0 +1,1635 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt5 (Qt v5.6.2) +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore + +qt_resource_data = b"\ +\x00\x00\x17\x1d\ +\x00\ +\x00\xa6\xa5\x78\x9c\xdd\x3d\x6d\x73\xdb\x36\xd2\xdf\xfd\x2b\x90\ +\xf8\x8b\xd3\xc7\x8a\x2d\xc9\x76\x13\x75\xf2\xc1\x8e\x9d\x5e\xe6\ +\x49\x93\xb4\x76\xdb\xb9\xb9\xb9\xf1\x50\x12\x2c\xf1\x4c\x91\x0a\ +\x49\xc5\xf1\x75\xfc\xdf\x0f\xef\xc4\x3b\x40\x91\x76\xee\x79\xdc\ +\xab\xcf\x05\x81\xc5\xee\x62\xb1\xbb\x58\x60\x81\x83\x1f\xc0\xaf\ +\xe7\x49\x79\x7b\x59\xdf\x67\xf0\x72\x09\x61\x0d\x06\x5b\xfe\xec\ +\xec\x5c\x2d\xd3\x0a\xa0\xff\xd5\x4b\x08\x56\x49\x9a\x83\x0a\x43\ +\x05\x15\x06\xbb\x4f\x4a\xd7\x49\x06\xeb\x1a\x82\x65\x52\x81\x3c\ +\xcd\x59\xb5\x59\x91\x15\x65\xf5\x72\xe7\x7d\x8d\x5b\x4f\x93\x0a\ +\xce\x41\x91\xa3\x06\x25\x44\xad\x61\x06\x67\x75\x9a\x2f\x58\xb5\ +\x7d\x56\xbe\x28\xe1\x7d\x5a\x2d\xc1\xde\x34\x99\xdd\x2e\xca\x62\ +\x93\xcf\x5f\xb0\x2a\x3b\xeb\x6c\x53\xb1\x6a\x77\xcb\xb4\x26\xd5\ +\x6e\x8a\x12\xaa\xd5\x5e\x82\x8b\x64\xb6\x44\x1d\xd4\xa0\xb8\x01\ +\x77\xe9\x7c\x01\xeb\x0a\xff\x89\x31\xad\x92\x15\xdc\xa9\xef\xd7\ +\x18\xd7\xaf\x10\x24\x60\x09\x93\x39\x2c\x41\x96\xde\x42\x54\x21\ +\xad\x26\x3b\x3b\x00\xfd\x58\xf8\x80\x8b\x7f\x46\x3d\xad\x3f\x22\ +\x18\x40\x29\xb6\x71\xed\x34\x9f\x03\x88\x11\xa1\x18\x60\x16\x54\ +\x70\x9d\x94\x49\x8d\xd8\x70\x97\xd6\x4b\x77\xe7\xbf\xfe\x49\x9a\ +\x48\xfd\xb0\x41\x58\x25\xb7\x10\xfd\x46\x24\x23\xd0\xd5\x3d\xa8\ +\x0b\x70\x93\xa2\x7e\x12\xf4\xef\x6c\x99\xe4\x0b\x44\x60\x81\x1a\ +\xcd\xaa\x0a\x7d\x80\xd9\xfc\x25\xb8\x42\x44\x23\xd6\xa7\xb3\x9d\ +\x59\x91\xdf\xa4\x8b\x0d\x42\x20\x45\xa3\x80\xa0\xcd\x61\x35\x2b\ +\xd3\x29\x42\x67\x0a\xb3\xac\xb8\x7b\x49\x7b\xbf\xbc\xf8\x70\xf1\ +\xf6\xea\xfd\xa7\x8f\x40\x25\x08\xb0\x1f\x34\x72\xd7\x59\xba\x58\ +\xd6\x00\xec\x0e\x7f\x7c\x7d\x7a\x71\x88\xfe\xff\xe8\xd5\xdb\xf3\ +\x11\xd8\x63\xa3\x5a\xe4\x07\xcb\xe2\x2b\x2c\x0f\x12\xf4\x1f\x5f\ +\xe1\x0b\xa5\x6d\x5e\x94\xab\x24\x03\xbb\xe3\xf1\x8f\xc7\xa7\x63\ +\xdc\xf6\xe4\xe8\xf4\x90\xb7\x85\x73\xb5\xf6\x1c\x49\x31\xc0\x3d\ +\xbd\x3a\x3a\x39\x3e\xc7\xb5\x8f\x0f\x4f\x2e\x9a\xda\x60\x9e\x56\ +\xc9\x34\xc3\xcd\x48\xbb\x77\x9f\x7e\xbb\xf8\xf9\xb7\x4f\xbf\x7f\ +\x3c\x07\x56\xec\x91\xbc\x08\xec\x2f\xde\xbd\x3b\x7c\x37\x04\xbb\ +\xe8\x37\xfa\x07\xec\xd5\xf0\x5b\x5d\x1d\x64\x09\x62\x47\xf5\x42\ +\x69\xc1\x70\xe6\x3f\xbb\xa7\xe4\x07\xec\xe5\x45\x0d\x36\x58\xae\ +\xef\x61\xad\xb6\xe0\x78\x1f\x1f\x1e\xbf\x3b\x79\x0d\x76\x7f\x7c\ +\x85\xff\x01\x7b\x1c\x5d\x40\x3a\x63\x48\x9f\x9d\xbe\xfd\x5f\x1f\ +\xd2\x68\x2e\x08\xa4\x8f\xce\x8f\x8f\x8e\xcf\x04\xe0\xbd\x4d\xbe\ +\x2e\x61\x55\xc9\x7c\xc3\xd5\x05\x97\x87\xe3\x93\x31\xaa\x3e\x1e\ +\x1d\x0d\x8f\xce\xd0\xb4\x2a\x4a\x24\x72\xfb\x82\x6d\xfb\x80\x35\ +\xdf\x47\x12\x04\x67\xb7\xf8\x8f\xba\x28\xb2\x69\x82\xe7\xe4\x0a\ +\xe6\x9b\x4a\x05\xcc\x09\x1b\x8d\x47\x27\x23\x44\xd8\xf0\x35\xfa\ +\xeb\x5c\x99\xaf\x3b\x3b\xef\x6f\x90\x74\x57\x75\x89\x45\xb2\x04\ +\x86\xe4\x95\xf0\xcb\x26\x2d\x89\xe0\xcd\x12\xc4\x3f\x3c\x3b\x13\ +\x30\xdd\x2c\x6e\xd2\x6f\xa0\x28\x91\x3c\xdf\xa3\xe9\x90\x2f\x76\ +\xd0\x40\xc0\x7d\x70\x0b\xe1\x9a\xcc\xde\x59\xb1\x42\x18\xd5\x54\ +\x8b\x24\x35\x9a\x38\x48\xd7\xa0\x49\x90\x17\xd3\x62\x7e\x5f\xb1\ +\x39\x30\x07\x29\xd2\x4b\x69\x3e\xcb\x36\x73\xac\x60\x50\xcb\x9d\ +\xb4\xaa\x36\x10\xe4\x9b\xd5\x14\x96\x2f\x77\xb6\xd5\x85\x96\x1f\ +\xf0\xc3\xc1\x0e\xfa\x39\xf8\x81\xcf\xda\xad\x15\xad\x02\x91\x03\ +\xfb\x6b\x87\xf1\x9d\xf1\x76\x40\x74\xdc\x84\xb3\xfd\x27\xfa\x99\ +\x8c\xe9\x04\x1c\xae\xbf\xa1\xf9\x9f\xa5\x73\x3e\xdc\xf4\xf3\x3a\ +\x99\x63\x3e\x90\xef\xb4\x84\x03\xa1\x82\x4f\xcb\xc4\xd4\x1d\xd8\ +\x7a\x23\x73\x54\xaf\xa8\x83\x79\x10\x78\x4f\x84\x98\x47\x11\xc0\ +\xcb\xe8\x24\x89\xc2\x07\x6b\x01\x17\x3e\x1c\x8c\x84\x4f\x5a\xc3\ +\xd5\x44\xe8\x0c\x37\x52\x8c\x4e\xbd\x25\xd1\x66\xbe\x66\x58\xfd\ +\xa9\xb4\xf0\x11\x78\xa0\xc2\xf1\x0b\xb2\x88\x7f\x22\x5d\x5d\xdc\ +\x75\x12\x10\x2c\x1c\x08\x1c\xb1\x06\xc9\xfc\x5f\x9b\xaa\xa6\x76\ +\xb9\x5a\x67\x29\xb2\xc0\x25\x12\x7b\xf2\xdf\xf3\x62\x76\xcb\x2c\ +\xcf\x3e\xc0\x5a\xea\x8b\xa8\xa1\xfc\x10\xe9\x95\x90\x9b\x4c\x98\ +\x91\x2a\x3c\xe4\xca\xc2\x25\x64\x8f\x4b\x9e\x3c\xae\xd5\x3a\x99\ +\x51\xc9\xd3\x24\x71\x84\x25\xf1\xc1\xd5\x73\x88\xdd\x54\xf5\x39\ +\x65\x9f\x8f\x86\x0f\x7e\x99\xfe\xbb\xc8\x6b\xa4\x20\x69\x27\x88\ +\x53\xf5\x72\x02\x8e\xf9\x04\x59\x25\xe5\x22\xcd\x07\x75\xb1\x66\ +\xb8\x4a\x85\xd3\xa2\xae\x8b\x95\x54\x9e\xae\x92\x05\x9c\x80\x4d\ +\x99\xed\x4d\x0e\xbe\x54\xd5\x75\x8a\x14\x5e\x75\x50\xce\x0e\xfe\ +\x20\x5d\x32\x75\xfa\x72\x9d\x2f\x5e\xf8\xb0\x42\x34\xd7\xe9\x4c\ +\xe0\xb4\x84\x58\xe3\x9b\x48\x65\xf0\xa6\x36\xb1\x2a\x69\xe5\x08\ +\xa4\xfe\x66\x47\x0a\x0b\xe9\x15\x2a\xbc\x4a\xd7\x5d\x55\x18\xd5\ +\x60\x1c\x58\xd4\xac\xe1\xc3\x38\x94\x86\xd1\xa2\x20\xe4\xb2\x46\ +\xad\xfd\x84\xfe\xeb\xe0\x87\x12\xae\x90\xd8\xf0\xe2\x7d\x6c\x85\ +\x01\xb6\x27\xc8\x68\x4c\x0b\xd4\xc1\x37\x62\xd7\xea\x74\x8d\xb0\ +\xc3\xed\x0b\x2c\x9c\xf5\x3d\xe2\xd9\x18\x41\xc0\xed\xe7\x9b\x19\ +\xb1\x17\xc8\x6c\x21\xc9\x2d\x61\x3e\x23\x2e\x56\x89\xbc\x34\x64\ +\xa9\xf0\xe4\x41\x4d\x19\xab\x2e\xeb\xa4\xde\x54\x67\x49\xd9\x8d\ +\x59\x94\x55\x0d\xb0\xbf\x5c\xdc\x50\xe6\x9c\xe0\x65\x33\x19\x11\ +\x01\x88\x58\xe4\x1d\x56\xeb\x7b\xec\x53\xee\xbe\x1e\x8e\x0e\xf7\ +\xf1\xef\x21\x45\x5a\xea\xe4\xff\xf1\xd0\xc8\x54\x7e\xc0\x8e\x9c\ +\x93\xc6\x06\x54\x1d\x66\x1e\x1e\xf1\xb7\xd8\x3d\x3a\x43\xb8\xf6\ +\x31\x39\x04\xb0\x56\xf6\x51\xb1\xd7\x5c\xb7\x1e\xf1\x29\x5f\x6c\ +\x6a\xec\x10\x4d\x90\xbe\xcf\xa1\x32\x10\x54\x91\x89\x8a\xbc\x94\ +\x6b\xb2\x23\xae\x8d\x39\x56\x93\x9b\x62\x86\x96\x5a\xaa\x30\x52\ +\xa8\x72\x35\xd0\x8f\xb5\x57\x7a\x9e\x20\xb5\x88\x94\x60\x63\x7f\ +\x14\xad\x27\x48\x60\x0a\x7b\x78\xc2\x0b\xb8\xb6\xa4\x25\x0e\x90\ +\x93\x4d\xce\x9c\x5c\x06\xdc\xad\x25\x49\x3d\x24\x99\xd7\xa2\x89\ +\xa4\xbf\xbd\xa0\xa9\xf5\xda\x0f\xd5\x22\x2c\x0e\xd6\x62\xce\xb9\ +\x75\x28\xda\x12\x70\x4d\xba\x8c\x26\x43\x1b\xd4\x56\x3d\xf1\xb6\ +\x81\xce\x5a\x0f\x46\xdc\x50\xc4\x0c\x44\xcc\x30\xf4\x38\x08\x6d\ +\x86\x40\x1f\x80\xb6\xdc\x89\xe5\x3e\xfa\x0b\x22\xc5\xb9\x4a\xf3\ +\xa4\x86\xf1\x63\xa0\x34\x6b\xd3\xc5\x16\x12\xa5\xb4\xdf\x8a\x2e\ +\xef\x00\xab\x35\x7d\xe2\xa2\xd6\x54\x05\xa2\x35\x1d\x9a\x10\x60\ +\xe3\x42\x02\x4b\x7d\x19\x17\x01\x8c\xe2\x77\x83\x3c\xdd\xc1\x1d\ +\xd3\x8f\xd3\x22\x9b\x3b\xed\xba\xe9\xd8\x0f\xca\x64\x9e\x6e\x2a\ +\xd3\x78\x48\x25\xb2\xb3\x2c\xd4\xaf\x84\xc6\x64\x52\xa7\x75\xc6\ +\x25\xac\xda\x4c\x11\x7b\xea\xb2\xc8\x06\xc8\x0b\x47\x0d\x27\x0c\ +\xc0\x4f\xfa\xe7\x75\x51\xa5\x78\x5d\x87\x6c\x75\xb1\x06\xd8\x00\ +\xd0\x2a\xd4\x14\x8c\x75\x6b\xe6\x28\x2e\x35\x2f\x5a\x31\x89\xaf\ +\x5c\x26\xb1\x31\x23\x0d\x15\xbd\x59\xa6\x48\x90\x23\x4f\x7d\x8b\ +\xb9\xf1\xd7\xe2\xd3\xc0\x5f\xeb\x51\xcd\x8d\xad\xeb\x18\x22\x62\ +\x48\x78\x02\x55\xed\xeb\xb6\xbd\x66\xf3\xe8\x6a\xff\x10\xf5\x6b\ +\x96\xb1\xee\xf9\x0d\x4d\xf1\xe2\x6c\x83\x04\x3f\xef\xa2\x7e\xa8\ +\xee\x91\x81\x75\xf7\x6d\xf5\xb8\xc1\xe1\x4f\x8e\x71\xd5\x7c\xdf\ +\x07\x15\x93\x80\x3f\x2b\xd7\xec\x1e\xb8\x6a\x8b\x1c\x68\x15\xeb\ +\xf3\xb3\xcb\x50\xd2\x87\x9e\xc5\x81\x9f\x11\x86\x6e\x0a\xd2\x25\ +\x29\x30\x23\x46\xc2\xb4\xe2\xe8\x58\xd7\x8a\xb4\xc4\xdd\x79\x0b\ +\x97\x1d\x9b\xaa\xc2\xea\xaf\x87\x40\x0b\xf5\x13\xac\xc8\x75\x50\ +\xb0\x62\x48\x11\x59\x78\x17\x4d\x99\xa1\x9a\x1c\xd8\xa8\x8c\xeb\ +\x05\x87\x68\xde\x46\x72\x36\x92\xaf\x8f\xc8\xd5\xed\x78\xaa\xeb\ +\x89\x0e\x1d\x5b\x2c\x40\x50\xba\xa2\x8d\x80\x2e\x39\x76\x0b\xf0\ +\x0b\xcc\x37\x9d\x43\x59\xdc\x02\x70\x60\x51\xe1\x63\x35\x22\xec\ +\x70\x4b\x7d\xfa\xef\xa1\xe9\xd1\xaa\xe5\x87\x8e\xb8\x30\x6b\x42\ +\xc2\xfb\x06\xaa\x6a\x74\xc8\xe2\xf6\x1a\x20\xf4\xbd\x05\xd3\x4b\ +\xf6\x42\xf7\xec\xe0\x98\x5d\xa9\x93\xc0\xd2\x93\x7f\x3b\x28\x72\ +\xff\x42\x36\x30\x9a\x56\xd7\xcd\x8c\xfa\x41\x92\xa9\xce\x7b\x61\ +\xb2\x4c\x69\x03\xeb\xa0\xce\x8d\x7e\x83\x1e\x01\x67\xee\x74\x08\ +\x93\x64\x0e\x99\x75\xeb\xc1\xd6\x95\xba\x18\xd1\x97\x48\xe1\xd0\ +\x7d\x83\x1d\x9e\xc2\xca\xaa\xc0\xc2\x77\x02\xef\x48\x6b\xd7\x08\ +\xb4\x2c\x1a\x60\x84\x7f\xf1\x3f\xcc\xa9\x26\x89\x64\x13\x53\x06\ +\x68\x20\x91\xb0\xc1\xf2\x2b\x24\x4e\x06\x24\x91\x5b\xb1\xe1\xc6\ +\x00\x00\x16\x7a\x6d\xfa\xd7\x67\x83\x65\xd2\x36\xf5\x35\x37\x83\ +\xaf\x9f\x46\xc6\xfa\x69\x64\x25\xff\xa4\x91\x39\xa4\x7b\x07\xf0\ +\xdb\x2c\xdb\x54\x29\x42\xb8\x01\xfc\x86\x6e\x6d\x93\x40\x33\x3d\ +\xbb\xd2\x7c\xdb\xab\x20\x04\xbf\x9e\x12\x7a\x88\xe3\x8d\xe5\xa2\ +\xbe\xe0\x50\x5e\x34\xf2\x27\x6b\x62\xa5\xa7\xbe\xa2\x8a\x91\x9d\ +\xe8\xcc\xed\x1a\x98\xf3\x77\xdb\x43\x88\x2e\xaa\x83\x2d\xa8\xf2\ +\xda\x34\xbb\x1c\x10\x73\x08\xa6\xd4\xef\xee\x47\x14\xb6\x11\x03\ +\xb7\xa7\x1a\x01\x3d\x9e\x53\x61\xe3\xef\xe9\xaf\x1d\x2d\x6d\x28\ +\xd9\x92\x8e\x20\x15\x44\x8f\x0e\x92\xb2\x2c\xee\x34\xc5\x29\x56\ +\x1d\x9e\x3e\x70\xe3\x6b\xd2\x98\x00\xe6\x66\xec\x74\x8a\x8f\xb1\ +\xcc\xea\xf7\x48\xad\xfd\x91\xc2\x6d\x77\xef\xa9\xec\x18\xc0\x28\ +\x9a\x49\x56\xc3\x12\x47\x06\xad\x47\x1d\x02\x8b\xbf\x2d\xc2\x78\ +\x0f\x36\x54\x7e\xfd\x80\xfc\xd7\x8b\x79\x5a\xeb\xc6\x63\x24\x19\ +\x75\xde\xea\x72\x56\x16\x59\x76\x5a\xc2\x64\x2b\x7e\xa8\xdc\x90\ +\x80\x45\x2d\x81\x7b\x0b\x5c\xda\x7c\x49\x13\x29\xdd\xd9\xb6\x6c\ +\x5f\x91\x0d\xe1\x6e\x2c\x51\x59\x23\x01\xe3\xd1\x81\xf6\x7b\x6d\ +\x0a\x62\x7d\xed\x54\x73\x60\xe6\x19\x0a\x35\xce\x29\x4f\x3f\x24\ +\x41\xa4\x54\xfc\xd1\x69\x1c\xfd\x14\x4b\x18\x4e\x96\x49\x3e\xcf\ +\xa0\x89\xa9\x05\x82\x2d\x80\xd3\x12\xaf\x15\x72\xe5\x98\xf3\x42\ +\xc2\xca\x41\x6c\xda\x9c\x2a\xf2\x2c\x67\xda\xe0\xa4\xa1\x84\x66\ +\xc4\x80\x2c\x5b\x0d\x16\x49\x2e\xa7\xfc\xaf\xd2\x5b\x94\x32\xd5\ +\xd5\xb5\xec\xe2\x1d\x1a\x2e\x9e\x28\xb1\x6e\x03\x10\xb0\xc6\x77\ +\x7d\x17\x41\xa3\x11\xd5\x8c\xa0\x71\xcc\x68\x1c\x47\xd3\x88\x9d\ +\x4f\x37\x89\x26\x45\x06\xd1\x56\x12\x9b\x5d\x8e\x78\x0a\x2d\xa3\ +\x28\xc2\x2e\x81\x6a\x4d\x90\xb6\xc5\x90\xf6\x40\x66\x5f\x23\x69\ +\xa3\xd3\x56\x2d\x9e\xce\x66\x58\xbf\xd3\x68\x6e\xd6\xd4\x85\x91\ +\xd0\x57\xe9\x9b\x17\x77\xb9\x51\xc5\x12\xc2\x68\xc2\xba\x9a\x10\ +\xac\x31\xed\x2e\xe8\x98\x7b\x5a\x85\x48\xd8\xda\xf1\xb5\x80\x11\ +\x37\xb6\xc9\xf8\x6c\x54\x0c\x85\x37\x2c\x14\xe3\xe6\x98\xfa\x37\ +\x8c\x66\x0b\x5b\x80\xf5\x2b\x17\x8e\x57\x9a\xea\x68\x81\xcb\x13\ +\x59\x02\x05\x53\xe7\xec\xd2\x18\xc4\xc7\x45\xd2\x90\x2d\x2c\xc1\ +\x66\xdd\xbf\x8e\xac\x8b\xf5\xd6\x2a\xb2\x57\xe2\xf0\x4c\xec\x9f\ +\x3c\x1a\x4c\xdb\x5a\x39\xaa\x32\xe5\x50\x8d\xa2\x52\xbc\x62\xe4\ +\x23\xf9\x5f\x32\x80\x5e\x0b\xb7\x05\x79\xcd\x58\x7e\xb7\x21\x14\ +\x9a\x9f\xa3\xef\xd4\xfb\x4e\x1d\x16\xd2\xfa\x76\xc8\x42\xe7\xc7\ +\xc0\x25\xe7\x84\xe1\xb7\x1a\x2f\x15\x3b\x2d\x28\xc4\x39\x61\x06\ +\x6c\xfb\xfd\x4f\x8f\x92\x7e\x90\x3a\x50\xb5\xac\x5f\x8d\xda\x96\ +\x86\x02\x8e\x33\x8f\x40\xcb\x94\x70\xa4\x02\x7c\xce\x92\x34\x17\ +\x54\x77\xe4\x9e\x0a\xac\x23\x0b\x2d\x8b\x2d\x3f\x6b\x95\xde\xbb\ +\xf2\x57\x05\xd6\x91\xc9\x97\xe9\xbf\xe1\xcf\x65\x5f\x67\xd9\x05\ +\xb4\x50\xa8\xaa\x42\x15\x17\xa8\xa2\x65\xb5\xe3\x08\x68\x37\xe7\ +\xc9\x71\x74\xab\x6b\x0e\x91\x38\x4f\x2e\x01\x33\x37\x03\x5a\xb8\ +\x54\xd6\x8d\x38\x29\x5d\xa0\xb7\x6d\x43\x0e\xcc\x29\xc2\x16\x77\ +\x4f\x9c\xd6\xb2\xef\x15\x9a\x9b\x8b\x96\xa3\x70\x0f\x52\xdf\xf4\ +\x0f\x12\x1d\x0e\xa2\x21\xb5\x73\x47\x1a\xd8\xd8\x0b\x27\xd7\x93\ +\x95\x81\x4f\xc8\x9b\x99\x22\x7a\x0f\x8e\x1c\x91\x88\x0e\xfe\x08\ +\x74\x10\xce\x8e\x19\x47\x50\xe1\x48\x78\xb1\xf4\xe2\xa0\x24\xa2\ +\x13\x57\x56\x4d\x33\x78\xbb\x5f\xea\x6b\xf6\xfd\x1a\xe9\x93\xeb\ +\xa9\xfd\x3c\x92\x2b\x95\xc9\x97\x26\xd7\x66\x85\xac\x07\x4d\xd7\ +\x69\xde\xe1\x88\xa7\x16\x34\x65\xc0\xfa\x88\x98\xfa\x36\x32\x45\ +\x0a\x14\x2e\x04\x3c\xf5\x0c\x27\x6f\x20\x27\x68\xbc\x0f\x86\xc3\ +\x21\x4b\xda\xd0\x37\x83\x69\xa3\x98\x16\xda\x66\xa9\x76\x72\xf3\ +\xc8\xb7\xae\x62\x48\x49\x71\x2e\x1c\xeb\x07\x34\xe1\x64\x4e\x13\ +\xa4\xd1\x52\xf2\xf0\x35\xdf\xa4\xd4\xf8\x87\x9d\x2e\x87\x74\x58\ +\x12\x45\xb4\xec\x36\xd3\xb3\xa3\x28\xfa\x5d\x5f\x39\xf8\xc1\x48\ +\xa2\x0c\x70\xad\x31\xf9\xc2\x58\x0f\xdd\x73\x12\x84\xe3\xb8\xef\ +\xf9\x26\xe2\xc6\xde\x4a\xc5\xcd\x4d\xd0\xc4\xf9\x96\x74\x6c\x0c\ +\x5e\xeb\xa6\xee\x75\x10\x77\xc5\x79\x88\x5e\x85\xd8\x40\x12\x3f\ +\xf9\x29\xc7\x94\x0a\x7c\xff\xc3\xda\x38\xfc\xb6\x31\x93\x96\x03\ +\xbe\xa1\x95\xaa\xc5\x0c\xae\x7f\x49\xdb\x7e\x78\x95\x60\x55\xcc\ +\x00\x1b\xeb\x30\x1b\x58\x02\x6a\x6b\x3f\x53\x87\xd6\xcd\xd3\xec\ +\xe8\xfc\x28\xea\x1d\x81\x3b\x7f\x7f\xf9\xf9\xc3\xe9\xdf\x2f\xfb\ +\x70\xaa\x7a\xc6\x8e\x18\x33\x9a\x54\xd7\x0f\xbc\x40\x86\xde\x56\ +\x39\xee\xda\xe1\x1a\xa7\x35\x27\x92\x40\xfa\x9f\xb4\x3c\xf3\x1b\ +\x79\x00\x49\xdb\x1e\xc4\xeb\x9a\x33\x24\xd5\x15\xec\xe4\x2f\x37\ +\x4b\x66\x0e\xec\xb1\x1c\x00\x57\x14\x53\xea\x7b\x4b\xc6\x05\x90\ +\x30\xc3\xaf\x7e\x24\x78\x20\x48\x2e\x7b\x66\x2b\x14\x13\x5d\x2f\ +\xb7\x9f\x2a\xb5\x2f\x79\x69\xb2\x4e\xb2\x5e\xa6\xb3\xaa\xc3\x79\ +\x80\x41\x93\xab\x23\xc1\x7a\xea\xb1\x94\x3b\xff\x7e\x83\xa9\x60\ +\xd1\x24\x82\x48\x85\xcf\xac\xa5\xf2\x78\xaa\x1f\xda\x0e\xe8\xdb\ +\x24\x83\xf9\x3c\x29\x3b\xae\xbe\x59\x6a\xaf\x0a\x2c\x88\x83\x8f\ +\x35\x2a\xac\xee\x79\xb6\x44\x83\xbf\x3d\xff\x48\xee\x41\xe9\xe3\ +\x3c\x40\x03\x6c\xab\xd0\xd3\x83\x0c\xa2\x1f\xf2\x3e\x97\xc5\x02\ +\x0f\x7f\xc7\xc0\x04\x8b\xae\x49\xc0\x9e\x72\x72\xe2\x72\x7c\x41\ +\xd0\x20\xc9\xd2\x05\x32\x62\x33\xe4\xa8\x62\x1f\xf4\x41\xc5\xe9\ +\xfb\xcc\xd9\x58\xe4\x26\xb3\xe5\x26\xbf\xf5\xed\x6a\x99\xbe\x95\ +\x89\xae\x39\x29\xcc\x3e\x62\xf8\x20\xdd\x18\xd3\x42\x39\x3d\x82\ +\x87\x77\xf6\xfb\xd5\xd5\xa7\x8f\x9d\x1d\xbc\x47\xf3\xf0\x3e\x6f\ +\xaa\x65\xf7\x6c\x30\x3e\x81\x1a\x60\xce\xa1\x61\x37\x59\xf5\x3e\ +\x81\x84\x4f\x28\x62\x4a\x96\x44\xac\x06\xc1\x08\x21\x0a\x84\x47\ +\xb7\x9d\x4c\x2a\xa2\x58\xea\x64\xb4\xb4\x2c\x9e\x4e\x58\xf5\xc5\ +\x2a\x47\x1e\xca\xd3\xe9\x9f\xb6\x08\x4f\xf0\x4d\x66\x03\xfd\xac\ +\xb9\x65\xb5\xcf\x00\xb7\x5c\xee\x6b\xf7\x68\x48\x1d\x6b\xae\x48\ +\x6b\x06\xc9\x47\xdb\x24\xb0\xdc\x21\xb2\x8c\x49\xb7\xc5\xb1\x89\ +\x7a\x10\x60\x73\x65\x96\xd4\x58\xf2\xcd\x2c\x38\xf2\xaf\x5b\xad\ +\xb8\xa5\x40\x6f\x0f\x1a\x4a\x02\x16\x11\x2d\xea\x34\xcb\x5c\x79\ +\x1c\x52\xee\x47\x83\x4d\x78\xde\xb7\x90\x1c\x09\x6c\x5f\x02\xa9\ +\xc3\xd5\x55\x41\x60\x4f\xb6\x69\x28\x96\x6a\x06\xe9\x91\xa2\xfc\ +\x60\xa3\x2f\x5e\x6a\x91\x44\x91\x1b\xd4\xc4\x5c\xaf\xf0\x7d\x98\ +\xc5\x1d\x40\x03\x4e\x2f\x77\x2c\xf2\xec\x9e\x5f\xac\x46\x52\xb1\ +\x48\x4f\x9f\x8b\xf5\x66\x0d\x56\xc5\x1c\xea\x82\xf4\x8f\x35\xfe\ +\xf4\x0b\xfa\xf2\xe6\xf9\xf0\xf9\x3f\xad\x07\xaa\xa5\x12\x1e\xe8\ +\x1e\xca\x61\x76\xd2\x27\xce\xb6\xd1\x3b\x64\xb1\x73\x37\x7f\x69\ +\x7b\x7c\x55\x28\xb8\x4b\x28\x0c\x72\x47\x2b\x69\xcd\xe2\xa2\x0a\ +\x10\xc3\xe9\x21\x31\x7b\x99\x23\x8c\x21\x69\x65\xf2\xe3\x7d\x5e\ +\xd5\x49\x5e\x53\xdc\x50\x57\xe7\x30\x4b\xee\xe1\x3c\x8e\x39\xa3\ +\x6d\x98\xa3\x70\x47\xe9\x3e\x86\x35\x51\xbc\xd1\x24\x94\x1a\x0f\ +\x25\xa4\xec\xca\x5b\x6c\xb5\x83\x2e\x35\xab\x8b\x35\xa5\xd4\x05\ +\x80\x6d\xab\xb8\x2a\x21\xaa\xc8\x79\x39\x12\xa1\x05\xff\x43\x12\ +\xbd\x30\x75\x2c\x43\xeb\x0d\x18\xe1\x70\x55\x92\x65\xc5\x8c\x5c\ +\x40\x9b\x4c\xf1\x85\x5c\x8c\x61\xc6\x59\x3c\x8b\x2d\x75\xb0\xc3\ +\x36\x7b\x95\xef\xca\x54\x0e\x9f\x0d\xb0\x76\xa5\x9b\xed\x96\xa7\ +\x78\xc8\x16\xd6\xe0\x95\x34\xb9\xaa\x65\x7a\x53\x83\xb4\xc6\x97\ +\x8e\xa2\xdf\x8c\x0d\x34\x5c\x3f\x38\x62\x15\xad\xf5\xac\xf8\xc9\ +\x29\x27\x2d\x23\xdb\x76\x58\x93\x62\x0d\xf3\x28\x45\x4a\xa2\x17\ +\xc5\x6a\x95\xe4\xf3\x0f\x69\x7e\xdb\xc5\x2a\xb2\xe8\x85\x01\xac\ +\x2f\xab\xb8\x95\xeb\x7e\x68\xb5\x9d\x0f\x36\x44\xc3\xce\xa8\x81\ +\xb1\x3d\x84\xd0\xc5\xa7\xd0\x19\x8a\xc0\xbd\xff\xf8\xf9\xf7\x2b\ +\xb4\xdc\x03\x1f\x3f\x81\x77\xef\x2f\x3e\x9c\x6f\xb9\xf4\x7b\xac\ +\xf5\xde\x5b\x7c\x09\xdf\xb4\x97\xab\x87\x28\x2c\x69\x5b\x7a\x3b\ +\x3f\x29\xfa\x2a\xda\x96\x1b\xc8\xf2\x19\xd8\xe1\xcb\x63\xb8\xa2\ +\xfb\xd3\x80\xec\x11\xef\x92\xcd\xe9\xdd\xe1\x70\x48\xad\x0c\x53\ +\x0a\xe8\xbb\x7d\x2b\x5c\xdb\x62\xde\x1d\x8e\x47\x96\x36\xea\x66\ +\xb8\xbf\x8d\xb4\x89\xfd\xe3\xb1\xb0\x76\x46\x9b\x66\x2f\x5b\x70\ +\xdb\x95\x58\xe6\xf2\xee\xe6\x9d\x4c\x96\x79\xe1\xae\xbc\xa8\xf0\ +\x0e\x9e\xec\x02\x72\xec\xfb\xb8\x3d\x90\x83\x8a\x75\x18\xa5\x26\ +\x42\xc3\xf9\xa5\x4e\x39\xf9\xf4\x11\xc2\x39\x1d\x12\x76\xb3\x65\ +\x63\xa1\x06\xca\xc8\x36\xdd\x98\xd7\xa9\xe8\x9d\x18\xda\xc9\x83\ +\x90\x43\x93\x79\x40\x58\x2a\x74\xa0\x05\xe7\x78\x8b\xac\x45\xeb\ +\xbe\xa9\xb4\xf8\xd0\xda\xa9\xeb\x1a\xc7\x89\x2c\xad\x8d\xbe\x45\ +\x6b\x6c\xc1\xe9\x84\x49\x00\xe6\x25\xf2\xad\xb0\xf1\xed\xb2\xe8\ +\xd7\xce\x6d\xf0\xeb\x6c\xf4\xb3\xe2\x58\x11\xf1\x39\x6c\xfd\xe6\ +\x39\xcc\x46\xbe\x93\x9c\xe4\x09\x25\x2a\xe0\x20\xea\xa9\x4a\x56\ +\x07\x71\x2c\x99\x4b\xce\x0f\xb1\x25\xdf\xe1\x34\x80\x0b\x24\x9a\ +\x4e\xfb\x8e\x2f\xe2\x7a\x3d\xdb\x47\xf9\xea\x8e\x76\x2e\x14\x39\ +\x3c\x89\xb8\xd5\x75\x3f\x63\x20\x0e\x4f\x12\x60\x6e\xad\xa4\xe7\ +\x1b\xd2\xea\xfe\x1b\xa6\x58\xa5\x09\x82\x80\xb8\xe0\xcf\xad\x69\ +\x13\xcf\xe3\xd6\xcc\x1d\x62\x70\x26\xa3\x30\x8c\xe2\xf2\x7d\x14\ +\xab\xfb\x3d\x70\xf2\x0f\x07\x8b\xed\xcb\x30\xc2\xb9\x9f\xed\x32\ +\x7d\xe4\x2c\x4a\x99\xca\x57\x3a\x95\x78\xa1\x01\x02\xfb\xae\x4e\ +\x24\x1d\x89\x40\xf1\x29\x40\x16\x61\xf3\x1c\xea\x6f\x23\x6a\x8c\ +\x01\x3d\x8c\xaa\x0f\xa1\x16\x72\xd6\x3f\x42\xdb\x0a\x99\x8f\xa0\ +\xc7\x10\xb1\x43\xba\x9a\x6d\x23\x62\x81\x4c\xb3\x56\x02\x46\x36\ +\x91\xf1\xcb\x1b\x5d\xf5\xad\xd8\x44\x56\x6f\x1e\x08\x38\x80\xfe\ +\x93\xa9\x0d\x30\xe5\xc4\x29\x77\xb3\xfd\x87\x54\x23\x1b\xb7\x3b\ +\xaf\xea\x32\xe9\xad\x97\x45\xd6\xcd\x73\x86\x70\x0f\x4e\xb4\x00\ +\xd5\x6d\x03\x41\x80\xe9\x18\xe3\x4f\xa6\x7f\xa6\xdd\x9f\x53\x61\ +\xd1\x47\x0c\xcc\x96\x0b\x21\xa2\x77\xb1\xab\x16\x19\x96\x76\x33\ +\x03\x00\x5c\x10\x11\x74\x70\x97\xe4\xd8\x5f\xa5\x0c\xac\x98\x23\ +\x7d\x34\xc4\x2b\xcc\xd1\x09\xf9\x3d\x26\x4e\xb5\x04\xee\x5d\x89\ +\x1f\x7c\x8a\x0b\x9f\x37\xad\x94\x33\x74\xce\xa3\x69\x18\x2d\xf2\ +\xb0\x11\x40\x15\x52\xbc\x9e\xbc\x29\x8b\x15\xfa\x85\xba\xdc\xe7\ +\x9e\x3f\x0b\x16\x62\x3c\x45\xac\x8b\x77\x34\x99\xac\x93\x3c\x02\ +\x3b\x9f\x00\x2b\x51\x1d\xa0\xfe\x20\xfc\xe8\x15\xfc\xf3\x62\x83\ +\xe4\x98\xe3\x92\xe6\x15\xd2\x63\x80\xf4\x7d\x87\xe6\xe5\xfa\xfe\ +\x4b\x7d\xcc\xe7\xa3\x11\x13\xd2\xb0\x8d\x78\xf0\x25\x94\xf0\xa2\ +\x6c\x13\x60\xf8\x3d\xe4\xbb\x34\x42\xd9\x1c\x2b\xf9\xb2\x46\xab\ +\x14\xa4\xa3\xef\x07\xf3\x32\xb9\x3b\x4b\x2a\x38\xf1\x39\x11\x56\ +\x7b\xe7\xbe\x4b\x0f\x41\xe2\x41\x06\xaa\xbb\x48\x78\x81\x8c\x39\ +\x5a\xf7\xe1\x08\x38\xd1\x5d\x60\x7a\x8f\xbf\xa0\x75\x1f\x0f\x3a\ +\xf0\x87\x1a\x18\xc3\x1f\x04\xda\x93\xc9\x2c\x2b\x2a\xa8\x9d\xb3\ +\x6e\xba\x93\x11\xd4\x43\xfa\xa2\x82\xe7\x8e\x27\x0c\x5c\x0e\x93\ +\x5a\x3a\x8d\x3c\x50\x4c\x9b\x90\xba\x21\x80\xd1\xd7\x7a\x93\x46\ +\xac\xb6\xf6\x82\x0a\x83\x5b\x27\x53\xc4\x46\x21\x7f\x1d\x04\x84\ +\xc0\x9a\x60\x63\xc7\xa1\xd9\xb7\xda\x84\x49\x1b\xcb\xe2\x1b\x38\ +\xf4\x12\x48\x6f\x92\x10\x60\xd0\x03\x38\x10\x9b\xfc\x38\x08\x10\ +\xc1\x0d\x74\x2f\xae\x00\x7f\x84\xfe\xa9\x75\x0f\x20\x50\x8a\x24\ +\xa6\x7e\x30\x30\x45\xea\x99\x90\x29\xfc\xe8\x9f\xc0\x62\x5b\x99\ +\x7a\xb6\x85\x50\x85\xee\x3f\xf6\xdf\xcf\x63\x11\xaa\x10\x12\x86\ +\x54\xf5\x87\x01\x91\x98\x50\xff\x96\x51\xed\x0f\x03\x0a\x3c\x84\ +\x82\x29\xd9\x9d\x30\x78\x6c\x55\xf5\xcc\x1a\xb0\x93\xbd\x6e\x1b\ +\x1d\xc6\xab\x5b\x21\x79\xb1\x88\x89\x1f\xb4\x24\xce\x21\x59\xb0\ +\xf1\xdf\x0f\x5c\xbf\xc7\xd3\x33\xca\x56\xf9\xf2\x43\x57\xdf\x04\ +\x30\x58\x1e\xe7\xe2\x78\x2e\x77\xd5\xee\x26\x6d\xb9\xd6\x31\x16\ +\x65\xce\xd5\x16\xed\x53\xcd\xd7\x0b\x68\x1c\xc7\x7e\x39\x09\x98\ +\xba\xa2\xa1\x8e\x78\xa9\x3e\x2e\xb2\x5d\x0d\x9d\x50\x74\xb3\xd0\ +\x67\x81\xf5\x78\x46\xaf\xa8\x37\x6a\xa3\x45\xee\xbd\x0f\xdb\xa6\ +\x96\xba\x05\x6b\x9f\x89\xac\x3f\x0f\x4b\x74\xd5\x1d\xb8\x88\xd8\ +\x4c\x90\x7b\x5a\xb9\x54\x43\xe9\xde\x51\x72\x87\xdb\x6d\x02\x1e\ +\x70\xa7\x7c\x8c\x8c\x79\xff\xd0\xe2\x78\x19\x72\xd7\x8d\xa8\xa0\ +\xe9\x6e\x2f\x80\x26\xce\xb1\xd2\x87\x69\x68\xc7\x32\x8b\x60\xd9\ +\x45\xc2\x21\x6e\xfa\xf3\x8a\x2d\x1e\x56\x0b\xcf\xec\x56\x52\xa5\ +\x3c\x0b\xe9\x75\x92\x3b\x0b\x95\xc5\x9d\xb6\x6a\xb3\x2e\xfb\x52\ +\x1e\x67\xac\xbd\x44\x59\x10\x8e\x15\x29\xba\x00\xfe\x3f\x2a\x53\ +\x31\x73\xda\x5e\x27\x28\x51\xea\xb2\xa7\xb3\x48\xd9\x16\x48\xed\ +\x2d\xa4\x93\xa4\x90\x73\xdd\x5e\xa4\x6c\x08\x87\x65\x0a\x28\x07\ +\xbb\xa4\x8b\x89\x27\x30\x8f\x7c\xb8\xc1\x76\x9b\x84\x15\x3a\xe1\ +\x42\x3b\xe0\xc6\x25\x87\x31\x98\xc7\xbf\x39\xe1\xbe\xfd\x33\x82\ +\x86\xe8\x6e\xdc\x17\x70\xda\x7b\x09\x39\xc8\x80\xfe\x88\x40\xe4\ +\xee\x70\x7c\xe2\x3c\x21\x69\x3c\xea\x85\x57\x54\xe7\xc5\xec\xb6\ +\x87\xa0\x35\x5d\x52\x51\x60\x52\xd0\x5a\x1c\xca\x0c\xbe\x0a\xdb\ +\xe7\xad\xc9\xe4\xe9\xb6\x69\x52\x0e\x68\xd0\x0b\x73\x3f\x18\xb1\ +\x53\xda\xd1\x87\xe8\xdd\x0d\x11\xbe\x88\x52\x69\xe4\x1a\xc2\xd5\ +\x87\xe3\xc4\x5c\x3b\xa1\xd1\x63\xc4\x71\xfa\xf2\x2b\xc0\x97\x2e\ +\xd1\xb3\xbc\xa4\x3a\xea\x55\x3f\x0a\x2c\x3d\x7a\xe4\x8f\xf8\xc8\ +\x9d\xdb\x22\x9c\x51\xd7\x12\x39\x0f\x54\x35\x07\x02\x5c\xfd\x84\ +\x34\x54\x0c\xae\xad\xd2\x5f\x15\x28\x37\x59\x91\xd4\x4f\x40\xb1\ +\xdc\xcf\xb6\x14\x2b\x30\xda\x50\x4c\x83\x1f\x25\x84\xf4\xda\xf3\ +\x2b\xac\x39\xf8\x0d\xe8\x55\xdd\x2e\xa7\x9b\x45\x3f\x18\xb0\xc9\ +\xb4\x4c\xf2\xd9\x52\xc9\x33\xd7\x3e\xb9\xb6\x5f\x2d\x13\x43\x3a\ +\xd2\x24\xeb\x35\x0e\x50\x40\x4c\xaa\x41\x95\x4e\x91\x6a\x58\x54\ +\x93\x67\xc9\xfc\x5f\x45\x9a\x57\x03\xf9\x59\x1b\x3a\x44\x6e\x45\ +\xba\x4d\x47\x8f\xd8\xcf\x33\xdc\xd1\x6c\x99\x66\x73\x54\x93\xfe\ +\xd7\x53\x74\xeb\xe9\x95\x4c\x2e\x65\x34\x79\x23\xfa\x45\x6d\x2b\ +\x37\x0d\x1a\x31\x0a\xe7\x9a\xc2\xf1\xa1\x87\x4f\x84\x7b\x70\xb4\ +\x21\x67\x36\xd9\x06\x35\x0c\xa5\x13\xdf\x9a\x14\x81\xb6\xdc\x8b\ +\xdc\xe1\x51\x78\x38\x28\xbc\xd8\x06\xd8\xe8\xc6\xd5\xcf\xcc\x76\ +\x98\x62\x58\x2a\x9e\x5c\xf3\xb0\xe3\x8e\x9a\xc3\xaa\xe0\xe3\xaa\ +\xc0\xd5\x98\xb3\xc6\xdb\x22\xdb\xac\x72\x77\x15\xdd\xcd\xd0\x33\ +\xb3\x65\xdf\xd8\x6f\x44\x35\x6a\x42\xc4\x04\x69\x09\x93\x62\x77\ +\xf0\x03\x47\x0e\xb4\x98\x7c\x83\x94\xfe\xd8\xdb\xbe\x42\x52\x9f\ +\xaf\x57\xdb\x3a\x15\xef\xb5\x38\xba\xed\xe9\xb5\x21\x0f\xbd\xb6\ +\x81\x72\xbe\xd8\xe7\xab\xc3\xcc\xb2\x9f\x7f\xa2\x37\x5f\x1d\xde\ +\x9b\xaf\x4e\xeb\x57\x99\x5d\x4f\xff\x79\x47\xc5\xcb\x1c\xf3\xa1\ +\x48\x7f\x2d\x3f\x83\xcc\x3e\xfd\xb5\x7c\x4c\x72\xbd\x4c\xd9\xe9\ +\x45\x5f\x1b\x71\xf6\x37\xb5\xc3\x35\x7d\x0c\xb3\xbe\xbe\xed\x20\ +\xd4\xde\x7f\xb8\xa6\x8f\x79\x8f\xf9\xfa\x77\x98\xe0\x18\xa4\xb6\ +\x44\xc6\x62\x82\xa4\x21\x90\x55\xb1\xa2\x75\xe3\x0e\x99\x6d\x91\ +\x0f\xb6\x28\xd3\x39\xb6\x3e\xd1\x6b\x0d\xc5\xdc\x48\xf7\xe0\x09\ +\xa6\xca\x65\xc2\xac\x48\x85\x92\x29\xe9\xe3\x08\x1d\xc3\xc4\xb6\ +\x02\x90\xcb\x04\x26\x52\xa1\x84\x49\x87\x1b\xe9\x1a\x1c\xcc\xa9\ +\x67\xb1\xaf\x36\x8b\x1a\x7a\x8c\x20\x90\x1f\x2e\x9d\x44\xd6\x1c\ +\x81\x66\xe2\x6a\x1e\x80\xf4\x41\x33\xfd\xcd\x17\xc3\xe6\x87\x13\ +\xd9\xa5\x9b\x09\x5c\x2e\x49\x32\xab\xd3\xaf\xd0\xe3\x93\x34\x15\ +\x5c\x4e\x89\xa8\xe1\xf6\x4a\x68\x95\x38\x4c\x49\x3f\x6f\x8b\x32\ +\x87\x25\x8f\x8e\x55\xec\xb9\xc5\xd6\x43\x62\x7b\xd4\xd1\x36\x95\ +\xe4\x77\x3b\xff\x06\x13\xf4\xa9\xdb\xd5\x66\x62\x65\x2c\x01\x6b\ +\x11\x4e\xa0\x07\x18\x9d\xc8\x07\x92\x43\x3d\xf4\x49\xf8\x74\xb8\ +\xed\x25\x8c\xd8\xc8\xd2\x5f\x78\x14\x23\xaf\xe4\x75\xe7\x9c\x0b\ +\xf2\xe5\xdb\x99\xe8\x1b\x34\x0e\x64\x34\x1f\x36\x32\xae\x2f\x8b\ +\xab\x07\x68\xe8\xe1\x34\x27\xf4\xe6\xa0\xbd\x0d\xba\x2d\x2b\x64\ +\xdf\x51\xd5\x75\xb2\xdf\xa6\xbc\xfd\x00\x26\x37\x69\x59\xd5\xc1\ +\x7e\x26\xf8\x66\x02\xb4\xb6\x53\x4f\xca\xd2\x2d\x1d\x47\x50\xcb\ +\x0b\xd0\x0f\x46\x5e\xbf\x84\x58\xe5\x27\x40\xae\x68\x27\xc1\x79\ +\x99\x6d\x44\xe7\x01\x48\xea\xc1\xa4\xab\x25\x5a\xc7\x83\x0a\xd6\ +\x35\x09\x53\xec\xd1\x56\x07\x24\x04\x7f\x40\xe3\xee\x07\xba\xd8\ +\xbc\xc0\xa0\xf0\x09\xe6\xcd\x82\xa5\x49\xcb\x93\x94\x26\xbb\x35\ +\x6d\xc8\xd1\x39\x12\x34\xd6\x94\x94\x25\x39\x2e\x30\x4f\x03\x1b\ +\x03\xf2\x24\x65\xe5\xf6\x43\x3e\x2d\xaf\x0d\x90\x51\xe6\x37\x28\ +\xff\xb7\x20\x6c\x5e\xd1\x2c\xee\xec\xe9\x25\xc9\x7c\x47\xc0\xfa\ +\xcb\x61\x0e\x62\xee\x9e\xc1\xf9\x87\xae\x37\xbb\x0d\x40\x23\x73\ +\xbb\x52\x01\x84\x8f\xd0\x3d\x96\x4b\xec\xda\x13\x0d\x9f\x2d\x68\ +\x6e\x4b\x95\xf0\x8c\xd1\x84\x4a\xfd\x76\xa7\xa3\x3c\x07\xfd\x1c\ +\x8c\x33\x0f\xc5\xb5\x7a\xfa\x61\x14\x18\x63\x99\x84\xad\x6c\xbe\ +\x9d\x96\xc6\x44\xd9\x69\x69\xf7\x4c\xa7\x0a\xc4\xdc\x10\xf1\x3c\ +\x04\x66\x47\x4f\xbb\x4c\x05\x5f\x11\xe0\x7e\x52\xd4\x2d\xfe\xc1\ +\x33\xa4\x34\x65\xa5\xdb\x9c\x16\xd3\xda\xcc\x7f\x69\xfd\x1e\x0d\ +\x01\xf1\x0f\x92\xd5\x72\xb9\x4c\xd6\xf0\xcd\xf3\x43\x71\xc5\x50\ +\x0c\x48\xab\x6b\xd7\x00\xa6\xba\xf2\xcd\xf3\xf1\xf3\x7f\xee\xf3\ +\x32\xa2\x50\x49\x51\xd4\x50\x93\x74\xe5\x75\x96\x92\x8d\xcb\x3e\ +\xb8\x26\x80\x45\xc9\x34\x7e\xc5\x5d\x4e\xc1\xd0\x53\x32\x84\x27\ +\xcd\xb2\x08\x19\x70\xe9\xe1\x8e\x96\x8e\xbc\xcd\x76\x38\x91\x18\ +\x1a\x0e\xbd\x13\x8d\xd0\x2a\x55\xd6\x67\xf6\xe6\xf6\x47\x4e\x22\ +\x9e\x8a\x76\xbd\x3f\x62\xeb\xc6\xf1\xca\x49\x44\x2f\x8e\xa7\x54\ +\xe8\x41\x83\xa4\x86\xdd\xdf\xdf\x62\xe7\x0c\x18\x2c\x86\x61\xf4\ +\xdd\x2b\x7d\x67\x37\x46\x3c\x38\xd2\x5c\xd1\x12\xff\xe4\x88\xb3\ +\x4d\x8b\x3b\x63\x94\x47\xdf\x1e\x24\x9e\xc5\x5e\x1e\x22\x99\x3e\ +\xd1\xf4\x49\xef\xa5\xe8\x7a\x4a\x4f\xc2\xba\xaf\xdb\x23\x6c\x20\ +\xe9\xed\x11\xd6\x2f\x3c\x50\x65\xfd\xb8\xfd\xed\x11\x8d\xf8\xb7\ +\xbd\x43\xc7\x73\x49\x71\xc4\x2c\x88\x96\x17\x8e\x55\x13\xd2\x73\ +\x9e\x71\x88\x7d\xf7\xa2\x6b\x88\x71\xe7\x73\x56\xd4\x6e\xd7\x01\ +\xcf\x3f\x76\x59\xd1\x6c\x53\xd3\xac\xd3\x0a\x5f\x17\xb8\x46\xcd\ +\xc8\xb1\xaa\x23\x9a\x5d\xfa\x1f\xa9\x64\xb9\x34\ +\x00\x00\x02\x84\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x36\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x4e\x14\x51\x14\x86\xbf\x33\x92\x2c\xfb\x06\xc8\x03\x58\ +\x6c\x23\x54\x92\x30\x2b\x1d\x0d\x24\x1a\x6a\x5b\x89\xb1\xd2\xc4\ +\x64\xee\x05\x34\x63\xe2\x38\x33\xc4\x44\x1b\x6d\x2c\x8c\x2f\xb0\ +\x58\x40\x65\xb3\x90\x49\x84\x06\xb4\x60\x13\x13\x68\x11\x9f\x60\ +\xd9\x68\xee\xb1\x60\x10\x4c\x9c\xcd\xce\x2e\xb1\x71\xbf\xf6\xfc\ +\x33\xe7\xcf\xcd\x3d\xff\x3d\x30\x64\xc8\xff\x8e\x94\x11\x87\x61\ +\x38\xd2\xe9\x74\xe6\x55\x75\x01\xb8\x01\x8c\xe7\xa5\x23\x60\x47\ +\x44\x1a\x95\x4a\x65\x3d\x0c\xc3\x9f\x97\x6e\xc0\x18\x33\x0b\xbc\ +\x04\x6a\xc0\x1e\xb0\x05\x7c\xcb\xcb\x57\x81\x9b\xc0\x24\xd0\x72\ +\xce\x3d\x58\x5d\x5d\xfd\x78\x59\x06\x24\x08\x02\x2b\x22\x11\xb0\ +\x26\x22\x2b\x71\x1c\xb7\xfe\x26\xb4\xd6\xd6\x54\xf5\x19\x70\x1b\ +\x58\x4e\x92\x24\x01\x74\x20\x03\x41\x10\x2c\x89\xc8\x53\x11\xb9\ +\x1f\xc7\xf1\xdb\x1e\x0c\x63\xad\xbd\xab\xaa\x6f\x80\x27\x49\x92\ +\xc4\xdd\xb4\x57\xba\x15\x8d\x31\xb3\x22\xf2\x4e\x44\xee\xf5\xda\ +\x1c\x20\xcb\xb2\x5d\xdf\xf7\xbf\x03\xaf\x7c\xdf\xff\x94\x65\xd9\ +\x61\x91\xb6\xf0\x04\xc2\x30\x1c\x39\x39\x39\xf9\x02\x7c\x4d\x92\ +\x64\xa1\xd7\xe6\x17\x09\x82\x60\x4d\x44\xae\x8d\x8e\x8e\x5e\x2f\ +\xba\x98\x5e\xd1\xc7\x9d\x4e\x67\x1e\xa8\x89\xc8\x4a\x3f\xcd\x01\ +\x3c\xcf\x5b\x06\x6a\xed\x76\x7b\xae\x50\x53\x54\xc8\x47\x6d\xaf\ +\xe8\xc2\xf5\x42\x1c\xc7\x2d\x55\xfd\x2c\x22\x85\x27\x58\x68\x80\ +\xd3\x39\xdf\xea\xb7\xf9\x19\x22\xb2\x09\x4c\xf5\x63\x60\x9c\xf3\ +\x39\xef\x1b\x55\x3d\xe6\x3c\xb0\x4a\x19\xf8\x27\x74\x33\x70\xc4\ +\x69\xc2\x0d\x84\x88\x8c\xe5\xff\x2a\x6d\x60\x87\xd3\x78\x1d\x08\ +\x55\x9d\x01\xb6\x4b\x1b\x10\x91\x06\x30\x69\xad\xad\xf5\xdb\xdc\ +\x5a\x5b\x13\x91\x09\x55\x6d\x94\x36\x50\xa9\x54\xd6\x81\x56\x9e\ +\xed\x7d\xe1\x9c\x8b\x80\xfd\x6a\xb5\xba\x51\xa4\x29\x8c\xe2\x66\ +\xb3\xe9\x7c\xdf\x3f\x00\xa2\x7a\xbd\x7e\x94\x65\xd9\x6e\x99\xe6\ +\xc6\x98\x45\x11\x79\xe4\x9c\xbb\x13\x45\xd1\x41\x69\x03\x00\x59\ +\x96\x1d\x4e\x4f\x4f\xff\x00\x5e\xd4\xeb\xf5\xe3\x5e\x4d\x18\x63\ +\x16\x81\xd7\xc0\xe3\x34\x4d\xdf\x77\xd3\xf6\xf4\x1c\x1b\x63\x0c\ +\xf0\x5c\x55\x3f\x78\x9e\xb7\xdc\xed\x39\x76\xce\x45\x22\x72\x4b\ +\x55\x97\xd2\x34\x4d\x19\xf4\x39\x3e\xe3\xe2\x42\x92\xc7\xeb\x66\ +\x1e\x32\x88\xc8\x98\xaa\xce\x88\xc8\x04\xb0\xef\x9c\x7b\x78\x99\ +\x0b\xc9\x6f\xc2\x30\x1c\x69\xb7\xdb\x73\x79\xb6\x4f\xf1\xe7\x4a\ +\xb6\xad\xaa\x8d\x6a\xb5\xba\x51\x66\x25\x1b\x32\x64\xc8\x2f\xff\ +\x42\xe0\x3f\x4f\xfa\x9f\x03\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x02\xe1\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x93\x49\x44\x41\x54\x58\x85\xed\ +\x96\x3f\x4f\x14\x51\x14\xc5\x7f\x67\x42\x18\xb6\xb5\x52\x3e\x80\ +\xc5\x36\x4a\x25\x95\x76\x52\x80\x62\xe8\xb4\xd3\x44\x8a\xad\xa4\ +\x9a\x19\x20\x66\x4c\xc4\x99\xa5\xa1\x92\x68\x4c\xb4\xd3\x0e\xff\ +\x00\x85\x5a\x69\xa5\x95\x6e\x21\x89\x5f\x00\xad\x6c\x97\xd9\x98\ +\x77\x2d\xf6\x0d\xac\x09\xbb\xb8\x80\x36\xee\xe9\xde\xbc\xfb\xde\ +\x3d\xf7\xce\x7d\xe7\x5e\x18\x60\x80\xff\x1d\xea\xc7\x38\x4d\xd3\ +\xa1\xa2\x28\xa6\xcc\x6c\x06\x38\x07\x8c\xfa\xad\x6d\xe0\xa3\xa4\ +\xb5\x30\x0c\x37\xd2\x34\xfd\x79\xec\x04\xe2\x38\xbe\x08\xac\x00\ +\x55\xe0\x13\xf0\x1e\xf8\xe6\xb7\x4f\x01\xe7\x81\x31\x60\xcb\x39\ +\x77\x6b\x79\x79\xf9\xed\x71\x11\x50\x14\x45\x89\xa4\x25\xe0\xb9\ +\xa4\xc5\x2c\xcb\xb6\xf6\x33\x4c\x92\xa4\x6a\x66\x77\x81\x2b\xc0\ +\x42\x9e\xe7\x39\x60\x47\x22\x10\x45\xd1\xbc\xa4\x3b\x92\x6a\x59\ +\x96\x3d\xfa\x03\xc2\x24\x49\x72\xd3\xcc\x56\x81\xdb\x79\x9e\x67\ +\x87\x26\xe0\xd3\xfe\x5a\xd2\x6c\x87\x73\xc5\x71\x7c\x0d\xa8\x01\ +\x67\xfc\xb7\x06\xb0\x9a\xe7\xf9\x53\x7c\xc4\x71\x1c\xcf\x02\x0f\ +\x81\x89\x3c\xcf\xdf\xf4\x4d\x20\x4d\xd3\xa1\x9d\x9d\x9d\x06\xf0\ +\x35\xcf\xf3\x19\x80\xb9\xb9\xb9\x13\x61\x18\x3e\x01\x2e\x03\x0e\ +\x08\xbc\xb9\x03\x02\x33\x7b\xd9\x6a\xb5\x6e\xac\xac\xac\xfc\x00\ +\x88\xa2\xe8\xb9\xa4\xd3\x23\x23\x23\x67\xba\x15\x66\xb0\xdf\x47\ +\x80\xa2\x28\xa6\x80\xaa\xa4\xc5\x92\xac\x77\x3e\xb5\xcf\xd9\x00\ +\x40\xd2\xa5\xe1\xe1\xe1\xc7\x65\x60\x41\x10\x2c\x00\xd5\x66\xb3\ +\x39\xd9\xcd\x4f\x57\x02\xfe\xa9\x7d\x2a\x0b\xce\xa7\xfd\x72\xaf\ +\x33\x40\x20\x69\x3a\x8a\xa2\xab\x00\x59\x96\x6d\x99\xd9\x67\x49\ +\x33\x7d\x13\xa0\xfd\xce\xdf\x77\xac\x6b\xb4\x53\x7d\x10\x9c\xa4\ +\x5a\xb9\x90\xf4\x0e\x18\x3f\x0c\x81\x51\xf6\xde\x39\xb4\x0b\xae\ +\x97\xfd\xee\x9d\x92\xca\xe2\xc4\xcc\xbe\xb3\x27\x58\x7d\x11\xf8\ +\x27\xe8\x45\x60\x9b\xb6\xc2\x95\x68\xf0\x87\xbf\xc0\xcc\x1a\xe5\ +\x42\xd2\x49\x7f\x57\xdf\x04\x3e\xd2\x96\xd7\x12\xab\x07\xd8\xef\ +\xde\xe9\x45\x08\x00\x33\xbb\x00\x7c\xe8\x9b\x80\xa4\x35\x60\x2c\ +\x49\x92\x2a\x80\x17\x99\x57\xf4\xce\x82\x33\xb3\x97\xf5\x7a\xfd\ +\x19\xb4\xa5\x59\xd2\x59\x33\x5b\xeb\x9b\x40\x18\x86\x1b\xc0\x96\ +\xd7\x76\x00\x2b\x8a\xe2\xba\x99\xad\x97\xce\x3a\x1d\x03\x98\xd9\ +\x7a\xab\xd5\xba\x81\x57\x43\xe7\xdc\x12\xf0\xa5\x52\xa9\x6c\x76\ +\x0d\xb4\x47\x34\x5d\xa5\x38\x8a\xa2\xab\x92\x6a\x65\xb5\x9b\x59\ +\xc3\xcc\x56\x7d\xe4\x9d\x52\xfc\xc0\x39\x37\xd1\xab\x33\xfe\x95\ +\x66\xe4\x9d\xdf\xe7\xa8\xcd\xa8\xb4\x89\xe3\x38\x06\xee\x99\xd9\ +\x8b\x20\x08\x16\x7a\xb5\x63\xe7\xdc\x92\xa4\x69\x33\x9b\xaf\xd7\ +\xeb\x75\x8e\xda\x8e\x4b\x74\x0e\x24\x5e\x5e\xdf\x79\x91\x41\xd2\ +\x49\x33\xbb\x20\xe9\x2c\xf0\xc5\x39\x37\x77\x9c\x03\xc9\x2e\xd2\ +\x34\x1d\x6a\x36\x9b\x93\x5e\xdb\xc7\xf9\x7d\x24\xfb\x60\x66\x6b\ +\x95\x4a\x65\xb3\x9f\x91\x6c\x80\x01\x06\xf8\x05\x68\xaf\x24\x28\ +\x9c\x6b\x07\xff\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x29\xb3\ +\x47\xee\x04\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xe0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x29\x1c\x08\x84\x7e\x56\x00\x00\x00\x60\x49\x44\x41\x54\x78\ +\xda\xed\xd9\xb1\x0d\x00\x20\x08\x00\x41\x71\x50\x86\x63\x51\xed\ +\x8d\x85\x25\x89\x77\xa5\x15\xf9\x48\x45\x8c\xa6\xaa\x6a\x9d\x6f\ +\x99\x19\x1d\x67\x9d\x03\x11\x45\x14\x11\x11\x45\x14\x51\x44\x44\ +\x14\x51\x44\x11\x11\x51\x44\x11\x45\x44\x44\x11\x45\x14\x11\x11\ +\x45\x14\xf1\x5b\xd1\x75\xb0\xdb\xdd\xd9\x4f\xb4\xce\x88\x28\x22\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x36\xce\x69\x07\x1e\xe9\ +\x39\x55\x40\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\x9e\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x0f\xfd\ +\x8f\xf8\x2e\x00\x00\x00\x22\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xfe\x9f\x87\xb1\x18\x91\x05\x18\x0d\xe1\x42\x48\x2a\x0c\x19\ +\x18\x18\x91\x05\x10\x2a\xd1\x00\x00\xca\xb5\x07\xd2\x76\xbb\xb2\ +\xc5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\x96\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0d\x1b\x75\xfe\x31\x99\x00\x00\x00\x27\x49\x44\x41\x54\x08\xd7\ +\x65\x8c\xb1\x0d\x00\x00\x08\x83\xe0\xff\xa3\x75\x70\xb1\xca\xd4\ +\x90\x50\x78\x08\x55\x21\x14\xb6\x54\x70\xe6\x48\x8d\x87\xcc\x0f\ +\x0d\xe0\xf0\x08\x02\x34\xe2\x2b\xa7\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x01\x8d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3f\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x86\x5c\ +\xc0\x13\x14\xf4\x0e\x9e\xc2\x12\x48\x94\xb6\x8b\xba\x51\x08\x7a\ +\x0a\xcf\x50\x0a\x3d\x41\x2e\x90\x3b\xb8\xd1\x2e\x95\x90\xbf\x8b\ +\x9a\x62\x15\x29\x94\xa4\x5d\x74\xbe\xd5\xe4\xcd\x90\xff\x63\x66\ +\xf3\x1e\xfc\x77\xec\xbc\x10\xc7\xf1\xc0\xcc\xee\x24\xf5\xcd\x2c\ +\xa8\x23\x44\xd2\xce\xcc\x32\x49\xcb\xc5\x62\xf1\x72\x55\x60\x32\ +\x99\xcc\x24\xdd\x03\x7b\x49\xb9\x99\xbd\xd5\x24\xd0\x31\xb3\x10\ +\x68\x03\xb3\xf9\x7c\xfe\x78\x21\x90\x24\xc9\x10\x78\x06\x5e\x8b\ +\xa2\x18\xa5\x69\xba\xa9\x23\xbc\x22\x8a\xa2\x9e\xef\xfb\x6b\xe0\ +\x56\xd2\xb0\xba\x09\xef\xe4\xcc\x18\xd8\x37\x11\x0e\x90\xa6\xe9\ +\xa6\x28\x8a\x11\x70\xf0\x3c\x6f\x5c\xd5\x3f\x05\x24\xf5\x25\xe5\ +\x4d\x84\x9f\x4a\x00\xb9\xa4\xfe\x85\x80\x99\x05\x75\xbd\xf9\x37\ +\xec\x80\xee\x85\xc0\x5f\xe1\x04\x9c\x80\x13\x70\x02\x4e\xc0\x09\ +\x38\x01\x27\xe0\x57\x0b\x49\x3b\xa0\xf3\x0b\x99\x01\xb0\xad\x3e\ +\x4e\x5b\xb2\xcc\xcc\xc2\x28\x8a\x7a\x4d\x25\x1f\xff\x1d\x9a\x59\ +\x76\x21\x20\x69\x09\xb4\x7d\xdf\x5f\x37\x21\x31\x9d\x4e\x6f\x8e\ +\x6d\x79\xab\x2c\xcb\x55\x55\xff\x32\x98\x24\x49\xf2\x04\x3c\x00\ +\x07\x20\xe7\xa3\x81\xac\x83\x00\x08\x81\x16\xd7\x06\x93\x8a\x38\ +\x8e\x07\x9e\xe7\x8d\x8f\xad\x73\xf7\x7c\xff\x87\x6c\xcd\x2c\x2b\ +\xcb\x72\x75\x3e\x9a\x39\xde\x01\x23\x94\x7d\x48\x8c\x1a\x35\x0f\ +\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\x3f\x08\x06\x00\x00\x00\x2c\x7b\xd2\x13\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2e\x14\xfa\xd6\xc4\xae\x00\x00\x00\x39\x49\x44\ +\x41\x54\x38\xcb\x63\x60\x20\x06\xc4\xc7\xc7\x33\xc4\xc7\xc7\xa3\ +\x88\x31\x61\x53\x84\x53\x12\xaf\xce\x91\x28\xc9\x82\xc4\xfe\x8f\ +\xc4\x66\x1c\x0d\xa1\x51\xc9\x51\xc9\x51\x49\x7c\x05\x06\xe3\x68\ +\x08\x91\x2a\x49\x3e\x00\x00\x88\x4b\x04\xd3\x39\x2e\x90\x3f\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1c\x1f\x24\ +\xc6\x09\x17\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\xff\xcf\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x0e\ +\xa3\x21\x9c\xc3\x68\x88\x61\x1a\x0a\x00\x00\x6d\x84\x09\x75\x37\ +\x9e\xd9\x23\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x0d\xfc\ +\x52\x2b\x9c\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\x93\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0c\x2b\x4a\x3c\x30\x74\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\ +\x63\x60\x40\x05\xff\xff\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\ +\xc5\x70\x0e\x23\x23\x9c\xc3\xc8\x88\x61\x1a\x0a\x00\x00\x9e\x14\ +\x0a\x05\x2b\xca\xe5\x75\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\x82\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x34\x49\x44\x41\x54\x58\x85\xed\ +\xd7\xb1\x4e\xc2\x50\x18\x86\xe1\xf7\x37\x14\x46\xca\x82\xd7\xd0\ +\x85\x44\x48\xea\x0a\xd1\x54\x22\xc6\x1b\xe0\x2a\xea\x2c\x0e\xb2\ +\xc3\x55\x70\x09\xc4\xd8\x98\xb0\x77\xd0\x84\xa5\xf7\xc0\x42\x1d\ +\xb1\x24\xc7\xa1\x2d\x36\xb5\x38\x98\x36\x0e\x9e\x6f\x3c\x6d\xfa\ +\x3d\xe7\x74\xf9\x0f\xfc\xf7\x48\x7e\xa1\x3b\x18\x5d\x81\xba\x03\ +\xb1\x01\xb3\xa4\x9e\x10\x94\x0f\x32\x7b\x5d\x2d\x9f\x8f\x02\x7a\ +\xfd\x9b\xa9\x12\x75\x0f\xec\x04\x02\x85\x7a\x2f\xa3\x5d\x90\xa6\ +\x02\x0b\x68\x28\x98\xbe\xad\x96\x0f\xdf\x00\xdd\xfe\xf5\x10\x91\ +\x27\xe0\x65\x6f\x44\xe3\xb5\xe7\x6d\xca\x28\x4f\xd3\x71\x9c\x76\ +\x2d\x32\x16\xc0\x25\x30\x4c\x4f\xe2\x24\xc3\x74\x81\x5d\x15\xe5\ +\x00\x6b\xcf\xdb\xec\x8d\x68\x0c\x7c\x00\x6e\xba\xfe\x05\x40\x6c\ +\x81\xa0\x8a\xf2\x2c\x02\x08\x00\xbb\x00\x80\x59\xd6\x3f\xff\x39\ +\x2a\x04\x5a\x45\x80\x3f\x89\x06\x68\x80\x06\x68\x80\x06\x68\x80\ +\x06\x68\x40\x16\x10\x0a\xd2\xac\xbe\x52\x4c\x60\x5b\x00\x50\xbe\ +\x02\xab\xe3\x38\xed\xaa\xaa\x93\x6f\x5b\x80\x5f\x00\x90\x19\xd0\ +\xa8\x45\xc6\xa2\x0a\xc4\xf9\xc5\xed\x69\x32\x96\xd7\x81\xf9\xa1\ +\x35\xfb\xd2\xd9\x60\xf4\x28\x30\x21\x1e\x9d\x83\x64\x80\x2c\x21\ +\x62\x12\xef\xbc\x7e\xf4\x62\x92\x26\xbe\x9a\xe1\x12\x8f\xce\xad\ +\xfc\xf3\x5f\x66\x4b\x7c\xec\xf3\xfc\xd5\x4c\xe7\x13\xc4\xb0\x5f\ +\x44\xcf\x0c\x5b\xaa\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x14\x1f\xf9\ +\x23\xd9\x0b\x00\x00\x00\x23\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xe6\x7c\x80\xb1\x18\x91\x05\x52\x04\xe0\x42\x08\x15\x29\x02\ +\x0c\x0c\x8c\xc8\x02\x08\x95\x68\x00\x00\xac\xac\x07\x90\x4e\x65\ +\x34\xac\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x8e\ +\x00\ +\x00\x0b\x17\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\xf6\x40\xcc\xce\xc1\x06\x24\xf7\x97\ +\x4d\x95\x07\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x2e\xf2\x1e\x31\xe0\x70\xfe\x3f\xf3\x91\x9b\x82\ +\x83\x8f\xc4\xf2\x55\x52\x2f\xcd\x76\x7c\xe4\x9f\x12\x96\x7b\xbf\ +\x7d\xa3\x4e\xca\x82\xc7\xdf\xe7\x7e\xd1\x94\xe2\x8e\xfc\xde\xc8\ +\x60\xb1\x71\xc3\x04\xdd\xb3\x0f\x5a\x8d\xcc\x1f\x86\x19\x97\x16\ +\xfa\xe5\xbe\x7c\xd2\xe7\x99\x2a\x79\xa4\x60\x5b\xf5\xc5\x73\x7f\ +\x16\x69\xb3\x2d\x9b\x6d\x6d\x55\xf6\x66\xd2\xdb\xa2\x15\x2b\x96\ +\x84\x05\x6e\x2d\xda\x2b\xd8\x9f\xfd\xf9\xd7\x8b\xb9\x9b\xf7\x9f\ +\x7e\xc9\xef\xa1\xa8\xe3\xfd\xb6\xee\xd8\x13\x06\x06\x2e\x86\x4c\ +\xa0\x93\x22\x7c\x7d\xac\x92\xf3\x73\xf5\x12\x53\xf2\x93\x52\xf5\ +\x2a\x72\x0b\x18\x40\xc0\xc6\xbe\xa2\x20\x31\x39\x3b\xb5\x44\x21\ +\x29\x35\x3d\x33\xcf\x56\xe9\xfd\xee\xfd\x4a\x0a\x99\x29\xb6\x4a\ +\xe1\xa6\xbe\x06\xbe\x05\xce\xa9\x19\x99\x1e\x55\x45\xa9\xc1\x55\ +\x7e\x21\xc9\x55\xd9\xc9\x96\x29\x4a\xf6\x76\x5c\x36\x15\x56\x40\ +\x03\x72\x53\x4b\x12\x15\x2a\x72\x73\xf2\x8a\xad\x2a\x6c\x95\xc0\ +\xe6\x5a\x01\xd9\x20\x61\x7d\x25\x05\xb0\x92\x92\x6c\x5b\xa5\x08\ +\xdf\x00\x05\xe7\xfc\xa2\x54\x05\x13\x3d\x13\x3d\x03\x5d\xd7\x8a\ +\xcc\x32\x23\x25\x3b\x2e\x05\x9b\xa2\x94\x34\xab\x20\x17\x37\xa8\ +\x11\x40\x9e\xad\x52\x46\x49\x49\x81\x95\xbe\x7e\x79\x79\xb9\x5e\ +\xb9\xb1\x5e\x7e\x51\xba\xbe\xa1\xa5\xa5\xa5\xbe\x81\x91\xbe\x91\ +\x91\x2e\x50\x85\x6e\x71\x65\x5e\x49\x62\x85\x6e\x5e\xb1\x32\xc8\ +\x08\x88\x19\x2e\xa9\xc5\xc9\x45\x99\x05\x25\x99\xf9\x79\x0a\x20\ +\x7e\x62\x52\x7e\x69\x89\xad\x92\x12\x50\x5e\x01\x6a\x38\x28\xf8\ +\xe1\xa6\xe7\x15\x43\x03\x01\x18\x1c\xfa\x20\x19\x7d\x43\x3d\x03\ +\x7d\x64\xe5\x25\x99\x69\x38\x94\x83\x64\x10\xca\x41\x9a\xad\x02\ +\x32\x2b\x52\x73\x22\x5c\x32\x73\x53\xf3\x8a\x81\x4e\xb0\x55\x32\ +\x33\x46\x93\x8c\x44\x92\x34\x07\xcb\x81\x8c\xb1\xf2\xcc\x4d\x4c\ +\x4f\x0d\xcf\x4c\x29\xc9\x80\xeb\x41\x88\x7b\xa4\x66\xa6\x67\x94\ +\xa0\xa8\xf7\x2f\xca\x4c\x05\xfa\xbe\x04\x6c\x8e\xa1\x92\x3e\x28\ +\x0c\xf5\xa1\x81\x08\x8c\x13\x7d\x78\xa4\xd8\x81\xbd\x42\x6b\x30\ +\x6a\xc9\xa8\x25\xa3\x96\x8c\x5a\x32\x6a\xc9\xa8\x25\xa3\x96\x0c\ +\x2a\x4b\xb8\x10\xcd\xba\xd4\x3c\x60\x5b\xae\x1c\xd8\x68\x73\x60\ +\x88\x2a\x04\x36\xf8\x58\x8a\x9d\x3c\x43\x38\x80\xa0\x86\x23\xa5\ +\x03\xc8\xd7\xf7\x74\x71\x0c\xb1\x38\x9d\x9c\x20\xc1\xaa\x2c\x6c\ +\x70\x48\xe2\xe3\xc7\x8f\x4b\x5e\xfc\xb6\x9f\xf1\xd7\x89\x27\x62\ +\x47\x81\x22\xf3\x65\x8f\xbe\x9f\x82\x2f\x7f\xb6\x72\x8b\xf7\x3d\ +\xfb\x29\xc8\xcb\xd0\x9d\xc3\xfa\x52\xd3\xfb\x8f\x28\xa8\xf1\xe8\ +\xe9\xea\xe7\xb2\xce\x29\xa1\x09\x00\xa6\x21\x0d\x8f\ +\x00\x00\x02\x29\ +\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\x01\xe0\x49\x44\x41\x54\x78\x9c\xed\x5b\x49\x72\xc0\x20\ +\x0c\x73\x3b\x7d\x74\x9e\x90\x5f\xb7\x27\x66\x68\x86\x04\x03\x92\ +\xec\x36\xe8\x4c\xbc\x28\x62\x37\x66\x1b\x1b\x1b\x6f\xc6\x87\xd2\ +\xd9\x71\x1c\xdf\x9e\x76\xe7\x79\xca\xe2\xa2\x3a\xf2\x26\xdc\x03\ +\x93\x10\xb8\x61\x54\xd2\x77\x40\x93\x01\x33\xc6\x4e\xfc\x0a\x14\ +\x11\x10\x23\xea\xe4\x0b\x10\x24\x2c\x19\x88\x4a\xfc\x8a\x15\x22\ +\xa6\x3f\xcc\x92\x7c\xc1\x2c\x09\xc3\x1f\x65\x4b\xfc\x8a\x51\x22\ +\x86\x1a\x67\x4f\xbe\x60\x84\x04\x77\xc3\xbf\x92\x7c\x81\x97\x84\ +\x2f\x76\x20\x4f\xa8\x83\x8c\x22\xd8\xc5\x12\x23\xb8\xd6\x1f\x42\ +\xfb\xf1\xa8\xa0\xdb\x40\x95\x3c\xcb\x5f\x8f\x84\x4f\xa4\x33\x0f\ +\x7a\x01\x29\x37\x42\x66\x1d\x05\x44\x48\x92\xe1\xfb\xc9\x6f\x1a\ +\x29\xb2\x63\xb8\xf3\x2f\xe9\x02\xb3\x7d\x5e\xd1\x1d\x9a\x0e\x54\ +\xf2\xab\xfd\x28\x06\xc6\x96\x0f\xaa\x02\x46\x92\x8a\x52\x02\x8d\ +\x80\x99\x3f\x1a\x41\x02\x65\x31\xb2\x2a\x67\x66\x77\xb8\xda\x86\ +\x2b\x00\x11\xbc\x52\x09\x50\x02\x90\x7f\x4e\x45\x02\x8c\x00\x86\ +\x6c\x15\x24\xfc\x32\x32\x1b\x28\x7b\x0a\x43\xdb\xaf\xed\x2d\x2b\ +\x40\x31\x7f\x33\x95\xb0\x44\x80\x72\x57\xc7\x22\x61\x9a\x00\x65\ +\xf2\x1e\xbb\xb3\x24\xc0\xa7\x41\xf6\xc9\x0e\xda\xbe\x74\x1d\x90\ +\xd1\xfe\x34\x01\x11\xcb\x56\x46\xb7\x5b\x52\x80\x92\x04\xd6\x98\ +\xb3\xdc\x05\x14\x24\x30\x07\x5c\xc8\x18\xc0\x24\x81\x3d\xdb\x40\ +\x77\x83\xcc\x15\x1b\xc2\x5e\xcb\x26\x74\x16\x40\x2a\x41\xb5\xce\ +\x90\xae\x03\xbc\x24\x28\x17\x59\x94\x13\xa1\x15\x12\xd4\x2b\x4c\ +\xea\xa1\xe8\x68\x32\x11\xbb\x4a\xea\xa1\xe8\x88\x12\x22\xf6\x16\ +\x66\x82\x7b\x01\x0f\x09\x51\xc9\x9b\xed\x9b\x21\xdd\xe5\x28\xf2\ +\x4c\x10\x09\xe9\xe5\xa8\x99\x4f\x09\x4a\xf5\xc9\xaf\xc7\x7b\xc9\ +\xa9\x2b\x45\x42\x0a\x24\xcc\x34\x15\x22\x77\x7e\x6a\x84\x95\xc8\ +\x98\xf1\x6b\x84\x20\x25\x32\x05\xff\xb5\x4a\x4c\x3e\x06\x64\xc3\ +\x2e\x94\x1c\x35\x9e\x9d\x04\x6a\xa9\x6c\x8d\x6c\x44\xc8\x8a\xa5\ +\x6b\x64\x21\x21\xa4\x5c\xbe\x20\x9a\x84\xd5\x33\xc7\xfd\x64\x06\ +\x61\xa4\xc6\x6b\x1f\x4d\xb5\xf0\xca\x67\x73\x4f\xc8\xf8\x70\x72\ +\xe3\xed\xf8\x01\xed\x72\x72\xcc\x11\x4e\x0c\xe5\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x95\ +\x00\ +\x00\x0b\x1f\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\x0e\x40\x2c\xc0\xc1\x06\x24\x97\x3d\ +\xaf\xd4\x04\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x4e\xf3\x1e\x76\xe0\x70\x79\x1f\x32\x51\xe8\xc7\ +\xdb\x0d\x53\x84\x23\xb7\x4d\xe1\x0b\xaa\x73\xc8\x3e\xfd\xd1\xfa\ +\x40\xc6\x96\xdf\x2c\x6f\xef\x9f\x77\x5c\xef\x16\x71\xd2\xdd\x47\ +\xe5\x40\xeb\xf2\xe5\xfb\xb4\x7d\xe2\x24\x36\x6b\x78\xbf\x9f\xd5\ +\x5d\x3c\x3b\xe4\xd2\x6e\xb5\xcb\xa2\x13\x8c\x6f\xbc\x6f\xaf\xfb\ +\x26\x7e\xd8\xa0\xb0\xc5\x3d\x21\xe1\xf0\xb2\xd4\xeb\x77\xaf\x6c\ +\x49\xeb\xbe\x75\xaa\xd6\xed\x9f\xe7\xba\xfb\xdf\xde\x3c\x7d\x99\ +\xf6\x8b\xd1\xbe\x5a\x47\xe0\x86\xd1\xd4\x23\x0c\x0c\x5c\x4c\x99\ +\x40\x27\x45\xf8\xfa\x58\x25\xe7\xe7\xea\x25\xa6\xe4\x27\xa5\xea\ +\x55\xe4\x16\x30\x80\x80\x8d\x7d\x45\x41\x62\x72\x76\x6a\x89\x42\ +\x52\x6a\x7a\x66\x9e\xad\xd2\xfb\xdd\xfb\x95\x14\x32\x53\x6c\x95\ +\xc2\x4d\x7d\x0d\x7c\x0b\x9c\x53\x33\x32\x3d\xaa\x8a\x52\x83\xab\ +\xfc\x42\x92\xab\xb2\x93\x2d\x53\x94\xec\xed\xb8\x6c\x2a\xac\x80\ +\x06\xe4\xa6\x96\x24\x2a\x54\xe4\xe6\xe4\x15\x5b\x55\xd8\x2a\x81\ +\xcd\xb5\x02\xb2\x41\xc2\xfa\x4a\x0a\x60\x25\x25\xd9\xb6\x4a\x11\ +\xbe\x01\x0a\xce\xf9\x45\xa9\x0a\x26\x7a\x26\x7a\x06\xba\xae\x15\ +\x99\x65\x46\x4a\x76\x5c\x0a\x36\x45\x29\x69\x56\x41\x2e\x6e\x50\ +\x23\x80\x3c\x5b\xa5\x8c\x92\x92\x02\x2b\x7d\xfd\xf2\xf2\x72\xbd\ +\x72\x63\xbd\xfc\xa2\x74\x7d\x43\x4b\x4b\x4b\x7d\x03\x23\x7d\x23\ +\x23\x5d\xa0\x0a\xdd\xe2\xca\xbc\x92\xc4\x0a\xdd\xbc\x62\x65\x90\ +\x11\x10\x33\x5c\x52\x8b\x93\x8b\x32\x0b\x4a\x32\xf3\xf3\x14\x40\ +\xfc\xc4\xa4\xfc\xd2\x12\x5b\x25\x25\xa0\xbc\x02\xd4\x70\x50\xf0\ +\xc3\x4d\xcf\x2b\x86\x06\x02\x30\x38\xf4\x41\x32\xfa\x86\x7a\x06\ +\xfa\xc8\xca\x4b\x32\xd3\x70\x28\x07\xc9\x20\x94\x83\x34\x5b\x05\ +\x64\x56\xa4\xe6\x44\xb8\x64\xe6\xa6\xe6\x15\x03\x9d\x60\xab\x64\ +\x66\x82\x26\x19\x89\x24\x69\x68\x06\x96\x04\x99\x63\xe5\x99\x9b\ +\x98\x9e\x1a\x9e\x99\x52\x92\x01\xd7\x84\x10\xf7\x48\xcd\x4c\xcf\ +\x28\x41\xd5\xe0\x5f\x94\x99\x0a\xf4\x7f\x09\xc4\x24\x25\x7d\x50\ +\x28\xea\x43\x83\x11\x18\x2b\xfa\xf0\x68\xb1\x03\x7b\x86\xd6\x60\ +\xd4\x92\x51\x4b\x46\x2d\x19\xb5\x64\xd4\x92\x51\x4b\x46\x2d\x19\ +\x54\x96\x70\x21\x1a\x76\xa9\x79\xc0\xd6\x5c\x39\xb0\xd9\xa6\x5e\ +\xf8\x9e\x0f\xd8\xe4\x63\x29\x76\xf2\x0c\xe1\x00\x82\x1a\x8e\x94\ +\x0e\x20\xdf\xd4\xd3\xc5\x31\x24\xe2\xf0\xdb\xab\x1b\x79\x19\x0c\ +\x38\x58\x0c\x4f\x2c\x3a\x73\x6c\x89\xe7\x6c\xd9\x7b\xef\x34\x26\ +\x3a\x84\xbb\x6e\xfb\xd7\x3e\x73\xa7\xe7\xe9\xf7\x79\xf3\xbf\x70\ +\x5b\xcc\x63\x98\xe0\x28\x39\xc5\xb1\xc1\x83\xff\xd8\x5c\x0e\xee\ +\x55\xc9\xa5\x1a\xa0\x46\xa4\xa7\xab\x9f\xcb\x3a\xa7\x84\x26\x00\ +\xe3\x91\x12\xf6\ +\x00\x00\x01\x9d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x4f\x49\x44\x41\x54\x58\x85\xed\ +\x97\xbf\x4e\xc2\x50\x14\x87\xbf\x43\x28\x8c\x94\x05\x9f\x81\x85\ +\x44\x4c\x70\x85\x68\x2a\x11\xe3\x0b\xf0\x14\x75\x56\x07\xd9\xe1\ +\x29\x78\x04\x62\x6c\x4c\xba\x77\xc0\x84\xa5\xef\xc0\x02\x8e\x58\ +\x92\xeb\x50\x8a\x4d\xf9\xd3\x44\x5a\x17\xef\xb7\xf5\xde\x9b\xfe\ +\xbe\x9e\xa6\xe9\x39\xf0\xdf\x91\xe4\x42\xb3\xd3\xbb\x01\xf5\x00\ +\xd2\x02\xcc\x8c\x72\x96\xa0\x3c\x90\xe1\xd4\x9d\xbc\x1d\x14\xb8\ +\x68\xdf\x0d\x94\xa8\x47\x60\x25\xe0\x2b\xd4\x67\x16\xe9\x82\x54\ +\x14\xd4\x81\xb2\x82\xc1\x87\x3b\x79\xde\x11\x68\xb6\x6f\xbb\x88\ +\xbc\x02\xef\x6b\x23\xe8\xcf\x1c\x67\x9e\x45\x78\x44\xc3\xb2\x6a\ +\xc5\xc0\x18\x03\xd7\x40\x37\xaa\x44\x21\xa6\x69\x03\xab\x3c\xc2\ +\x01\x66\x8e\x33\x5f\x1b\x41\x1f\xf8\x02\xec\x68\xfd\x47\x00\x69\ +\x09\xf8\x79\x84\xc7\x25\x00\x1f\x68\xed\x11\xc0\xcc\xea\x9d\x1f\ +\x47\x2d\x81\x6a\x74\x55\x4c\x3b\xde\xec\xf4\xd4\x29\x71\x53\x77\ +\xb2\xf3\xa5\xc5\x29\x1c\xdb\xfc\x0b\xb4\x80\x16\xd0\x02\x5a\x40\ +\x0b\x68\x01\x2d\x90\xda\x0f\xa4\xfd\xcf\x4f\x25\x5e\x81\xa5\x20\ +\x95\x3c\xc3\x42\xc4\x04\x16\x7b\x04\x94\xa7\xa0\xde\xb0\xac\x5a\ +\x5e\xd1\x9b\x7b\xd7\x01\x6f\x8f\x80\x0c\x81\x72\x31\x30\xc6\x79\ +\x48\x5c\x5e\xdd\x9f\x6d\xda\xf2\x12\x30\xda\xa6\xc6\x0f\x9d\x77\ +\x7a\x2f\x02\x4f\x84\xad\xb3\xbf\x69\x20\x33\x40\x4c\xc2\x27\x2f\ +\x1d\x1c\x4c\x22\xc2\xd1\x0c\x9b\xb0\x75\xae\x26\xf7\x7f\xc9\x82\ +\xb0\xec\xa3\xe4\x68\xa6\xf9\x06\xfe\xc1\x65\x8b\x9b\xf2\xc3\xc8\ +\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\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x53\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbf\x4f\x13\x61\x18\xc7\x3f\xcf\xb5\x13\xa6\x86\xd1\x76\xa3\ +\x03\x90\x2e\xd2\xeb\x00\x13\x5c\x4b\x42\x82\x57\xa2\x61\x76\xc5\ +\x38\x6a\xe2\x20\x3f\xdc\xa8\xd1\xc4\x44\x17\x27\x06\xe3\x3f\x50\ +\x1c\x5a\x18\x08\x50\x18\x14\x12\x69\x71\xa0\x89\x0d\xa4\x4c\x2d\ +\x6e\xc4\x46\x16\xec\x3d\x0e\x80\x61\xe0\xe0\xae\x10\x17\xfb\x59\ +\xdf\xef\x7b\xdf\xef\xdd\xbd\xef\xf3\x3c\xd0\xa6\xcd\xff\x8e\xf8\ +\x11\x5b\x96\x15\x6c\x10\x4a\xab\xe8\xb8\xa0\xfd\x0a\x91\xd3\x87\ +\xd4\x14\xd9\x14\x95\x6c\x88\x46\xae\x50\x28\xfc\xbe\xf1\x00\x89\ +\xd4\xd8\x88\xaa\xf3\x16\x88\x21\x52\x02\x67\x5d\x1d\xa9\x03\x88\ +\xa1\x61\x30\x06\x51\x8d\x03\x65\xc3\xd0\x27\x5f\x97\x17\x96\x6e\ +\x2a\x80\x98\x49\x7b\x12\xc8\xa0\xcc\x6b\xc0\x99\x29\x2d\x2f\x96\ +\x2f\x12\xc6\x87\x47\x63\xd2\x34\x66\x11\x1e\x08\x32\xbd\xb5\x9a\ +\x7b\x05\xa8\xc7\x77\xbc\x18\x33\x69\x4f\x99\x49\xfb\xd8\x4c\xa5\ +\x27\x3c\xef\x49\xa5\x27\xcc\xa4\x7d\x9c\x48\xa6\x27\xaf\xd2\x06\ +\x2e\x5b\x4c\xa4\xc6\x46\x40\x3f\x20\xf2\xb8\xb8\x92\x9b\xf3\x1a\ +\xa0\x5e\xad\x14\xc3\x5d\xdd\x3f\x80\x77\x91\x68\xef\x97\x7a\xb5\ +\xb2\xe7\xa6\x75\xfd\x05\x96\x65\x05\x7f\xca\xad\x6f\x28\xdf\x8b\ +\x85\xfc\xb8\x57\xf3\xf3\x98\xa9\x7b\xf3\xa8\x74\xdf\xd6\x5f\x77\ +\xdd\x0e\xa6\xe1\xb6\xb9\x41\x28\x0d\xc4\x34\xe0\xcc\xb4\x62\x0e\ +\xa0\xa2\xd3\x40\xec\x50\x3a\x6c\x37\x8d\x6b\x00\x15\x1d\x47\xa4\ +\xe4\x76\xe0\xbc\x50\x5a\x5e\x2c\x0b\x6c\x07\xc0\xf5\x0b\xba\x06\ +\x10\xb4\x1f\x9c\xf5\x56\xcd\xcf\x50\xd1\x35\x90\x01\xdf\x01\x14\ +\x22\x67\xf7\xfc\x3a\x08\x1c\x9c\x15\x2c\x5f\x01\xfe\x15\x41\xb7\ +\x05\x81\x1a\x86\x86\xaf\x6b\xa0\x70\x47\xa0\xe6\x3b\x80\x22\x9b\ +\x20\x83\xd7\x0d\x20\x2a\x43\xa0\x1b\x6e\xeb\xee\x87\x50\x25\x8b\ +\x6a\x3c\x3e\x3c\x1a\x6b\xd5\x3c\x3e\x3c\x1a\x53\xe8\x6b\x42\xd6\ +\x77\x80\x10\x8d\x1c\x50\x96\xa6\x31\xdb\x6a\x00\x51\xc9\x08\xec\ +\x74\xea\x51\xde\x4d\xe3\x5a\x8a\xf7\xf7\xf7\x9d\x48\xb4\x77\x17\ +\x34\x13\x8e\xf6\xd4\xea\xd5\x4a\xd1\x8f\xb9\x99\xb4\x1f\x81\x3c\ +\x33\x0c\x7d\xf8\x79\x75\x69\xd7\x77\x00\x80\x7a\xb5\xb2\x17\xee\ +\xea\x3e\x06\xde\x84\xa3\x3d\x07\x5e\x43\x9c\x98\xf3\x5e\x90\x17\ +\x5b\x2b\xf9\x8f\x97\x69\x3d\xb5\xe3\x44\x32\xfd\x5c\xd1\x97\x88\ +\x7e\x52\xd1\xe9\x4b\xdb\xb1\x4a\x06\x95\xfb\x22\x3a\xb5\xb5\xb2\ +\xf0\x9a\x2b\xda\x71\x4b\x03\x89\xc0\xb6\x8a\xae\x09\x1c\xc0\xe9\ +\x55\x53\x19\x52\xe8\x13\xd8\x11\x43\x9f\xde\xe4\x40\xf2\x17\xcb\ +\xb2\x82\x87\xd2\x61\x9f\xd4\x76\x19\x38\x3f\x92\x81\x6e\x34\x21\ +\xdb\xa9\x47\x79\x3f\x23\x59\x9b\x36\x6d\xfe\x00\x0a\x49\xe7\x8d\ +\x0a\x55\xe0\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x00\xef\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x2a\x32\xff\x7f\x20\x5a\x00\x00\x00\x6f\x49\x44\x41\x54\x78\ +\xda\xed\xd0\xb1\x0d\x00\x30\x08\x03\x41\xc8\xa0\x0c\xc7\xa2\x49\ +\xcf\x04\x28\xba\x2f\x5d\x59\x97\xb1\xb4\xee\xbe\x73\xab\xaa\xdc\ +\xf8\xf5\x84\x20\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\x21\ +\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\x41\ +\x84\x08\x51\x10\x21\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\ +\x21\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\ +\x41\x84\x08\x51\x10\x21\x42\xfc\xaa\x07\x12\x55\x04\x74\x56\x9e\ +\x9e\x54\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x3b\xdc\ +\x3b\x0c\x9b\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xb6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x11\x08\x06\x00\x00\x00\xc7\x78\x6c\x30\ +\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\xdc\x08\x17\ +\x0b\x2c\x0d\x1f\x43\xaa\xe1\x00\x00\x00\x36\x49\x44\x41\x54\x38\ +\xcb\x63\x60\x20\x01\x2c\x5a\xb4\xe8\xff\xa2\x45\x8b\xfe\x93\xa2\ +\x87\x89\x81\xc6\x60\xd4\x82\x11\x60\x01\x23\xa9\xc9\x74\xd0\xf9\ +\x80\x85\x1c\x4d\x71\x71\x71\x8c\xa3\xa9\x68\xd4\x82\x61\x64\x01\ +\x00\x31\xb5\x09\xec\x1f\x4b\xb4\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x0e\x16\ +\x4d\x5b\x6f\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x20\xb9\ +\x8d\x77\xe9\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xe6\x7c\x60\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x48\x11\x40\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x23\xed\x08\xaf\x64\x9f\x0f\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x03\x18\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xca\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x6f\x14\x57\x10\xc6\x7f\xdf\xf3\xc9\x41\x44\x8e\x50\xaa\ +\x84\x3f\x20\xc5\x35\xc6\x77\x05\xa4\x81\x5d\x23\xc5\xc2\xb7\x40\ +\xe4\x0e\xba\x20\xe1\xc2\x55\xd2\x05\x4c\x89\xa3\xa4\x4a\x67\x25\ +\x8a\x94\x74\xa1\x33\x10\x9f\x8d\x0c\xb2\x39\x68\x02\x52\x6c\x73\ +\x05\x96\xf2\x0f\x38\x54\x11\x8a\x15\x94\x00\xb7\x5f\x8a\xdb\x3d\ +\x5f\x24\xaf\xed\x43\x4e\x95\xfb\xaa\xb7\xb3\x33\x6f\xbe\x99\xf7\ +\xde\xcc\x40\x1f\x7d\xfc\xdf\xa1\x5e\x94\xa3\x28\x2a\x6d\x31\x94\ +\x58\x9e\x10\x3e\x6e\x38\x9a\x6d\xb2\x69\xf4\x58\xd6\xdc\x10\x5b\ +\xf5\x46\xa3\xf1\xfa\xc0\x09\x54\x47\xcf\x7e\x64\xa7\x5f\x03\x65\ +\xa4\x75\x48\x1f\x3a\xd5\x6f\x00\x0a\x7e\x1f\xc2\x49\xec\x11\x60\ +\x23\x04\x7f\xfa\xcb\xf2\xe2\xbd\x83\x22\xa0\x4a\x5c\xbb\x02\xcc\ +\x60\x6e\x7a\x20\xbd\xb6\xbe\x7c\x67\x63\x27\xc5\x91\xd3\x67\xca\ +\x6a\x85\xeb\x88\x8f\x85\xa6\x57\xef\xd7\xbf\x04\xbc\xcf\x18\x77\ +\x46\x25\xae\x5d\xad\xc4\xb5\x57\x95\xd1\xe4\xf2\xbe\x6d\x46\x93\ +\xcb\x95\xb8\xf6\xaa\x1a\x27\x57\xf6\xd2\xdd\x35\x03\x59\xda\x97\ +\x90\x26\xd7\x56\xea\xdf\xe5\x36\x95\x28\xb9\x88\x3c\x05\x1e\xce\ +\x44\x4d\xac\xd9\xb5\x46\xfd\x47\xb2\x88\x2b\x71\x6d\x12\xf8\x56\ +\x0a\x63\xab\x2b\xf3\x77\x7b\x26\x10\x45\x51\xe9\x0f\xbd\xdd\xc4\ +\xfc\xba\xd6\x58\x98\x00\xf8\x70\x6c\xec\xdd\xbf\x5f\x96\x7e\x00\ +\xce\x21\xa5\xd8\xa1\xbd\x4b\x7b\x6d\x7c\xfb\xd0\x60\xeb\xd2\xcf\ +\x4b\x4b\xbf\xb7\x33\x31\x7e\x13\xeb\x83\x77\xfc\xe7\x70\xd1\xc5\ +\x0c\x45\x04\xb6\x18\x4a\x80\xb2\x07\xd2\x6b\x39\xd9\xb6\x73\x25\ +\x00\x1d\xe7\x5d\x6b\x11\xce\xfe\xf5\x72\xe0\xfb\x3c\x30\xcb\xd3\ +\x40\xf9\xb9\x0e\xd7\x8a\xfc\x14\x12\xb0\x3c\x81\xb4\x9e\x5f\xb8\ +\x4a\x94\x5c\x04\xce\x81\x0b\x6d\xc0\x41\xe8\x7c\x35\x1e\xbf\x00\ +\xb0\xbe\x7c\x67\x43\xf0\x64\x00\x26\x7a\x26\x20\x7c\x1c\xd2\x87\ +\xdb\x02\x4f\x21\xa5\xc5\xce\x3b\x86\x69\x8a\xa6\xba\x02\x79\x00\ +\x3a\x51\xa4\x5e\x2a\xfa\x61\x38\x9a\xbf\xf3\x4c\x32\x8c\x8b\x09\ +\x77\x19\x06\x60\x78\x9b\x0f\xcf\xf2\x82\xb5\x13\xf6\xde\xf0\x3f\ +\xc6\x2e\x47\xc0\x66\xbb\xc2\x75\x24\xcd\xfd\x1e\x01\xd0\xcc\x3f\ +\x0d\xef\x09\x36\x7b\x26\x60\xf4\x18\xc2\xc9\x6d\x81\x66\xff\x75\ +\xf3\x8b\x0d\x43\xc0\xb3\x1d\x3e\xd6\x29\xf0\xa3\x9e\x09\xc8\x9a\ +\xc3\x1e\x19\x39\x7d\xa6\x0c\x90\x15\x99\x9f\x60\xb7\x2c\x28\x35\ +\xbe\xbd\x7a\x7f\xf1\x06\xb4\x4b\xb3\xe1\x58\x0b\xe6\x7a\x26\x30\ +\xc4\x56\x1d\xd8\x50\x2b\x5c\xcf\x44\x7e\x6b\xf0\xf5\x27\x26\x9d\ +\x6f\xfb\x62\x9b\x48\xb6\x36\xe9\xfc\xa1\xc1\xd6\x25\xb2\x6a\x28\ +\x6b\x46\xf0\xf4\x88\x5f\x2c\x14\x52\x2e\x8e\xa6\xb8\x14\x57\xe3\ +\xf1\x0b\xd9\x53\xcb\x6f\x7b\x33\xe0\xd9\x2c\xf2\xee\x52\xfc\x4d\ +\x08\x1e\xdb\x6f\x67\xdc\x11\x6f\xd4\x8c\xe2\xda\xe4\x81\x34\xa3\ +\x5c\xa7\x1a\x27\x9f\x1b\x7f\x81\x7c\xcb\xf2\xf4\xae\xed\xd8\x9a\ +\xc1\x3a\x2f\xf9\xea\xea\xca\xe2\x57\xec\xd1\x8e\xdf\x68\x20\x11\ +\x3c\xb1\xfc\x40\xf0\x0c\xb2\xa7\x66\x9d\x32\x1c\x13\x3c\x55\xf0\ +\x67\x07\x39\x90\x74\x10\x45\x51\xe9\xb9\x0e\xd7\xda\xb5\x5d\x27\ +\xba\x47\x32\xf0\xa3\x16\xcc\x1d\xf1\x8b\x85\x5e\x46\xb2\x3e\xfa\ +\xe8\xe3\x1f\x72\x78\x36\x82\x63\xad\x95\xaf\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x03\x0a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xbc\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbd\x4f\x14\x51\x14\xc5\x7f\x67\x86\xd0\x48\x2c\x98\x31\x51\ +\xff\x00\x8b\xd5\x15\xad\xb4\xd2\xd8\x68\x21\x7e\x84\x4e\x3a\x4d\ +\xa4\xa0\x52\x59\x8d\x82\x05\x85\x1a\x95\x41\x3b\xa2\x31\xd1\x4e\ +\x3b\x14\xc1\x42\x2d\x08\x54\x5a\xe9\xee\xba\x24\xfe\x03\x68\xe2\ +\x0e\x85\xc1\x06\xdc\x77\x2d\x76\x46\x88\xb2\xcb\x2e\xc1\xca\x3d\ +\xd5\x7b\x33\xf7\xe3\xbc\xfb\xde\x3b\xf7\x41\x0b\x2d\xfc\xef\x50\ +\x53\xd6\xc3\xd3\x6d\x41\x47\xd0\x2d\xac\x07\x74\x00\xd8\x99\xfc\ +\x99\x07\x7b\x6f\x68\x3c\x5e\x8c\xa7\x18\x3e\xf2\x73\xd3\x09\x74\ +\xde\x2d\x1e\xf5\x3c\xbb\x0f\x64\x80\x0f\x86\x66\x31\xfb\x52\x8d\ +\xa2\x1d\xc2\x0e\x01\xfb\x81\x39\x87\x2e\x2c\xe4\xb2\x6f\x37\x87\ +\x80\x99\xb6\x8d\x16\xae\x19\xba\x29\xf1\xbc\x62\xfe\xf5\x85\xdc\ +\xee\xb9\x35\x49\x46\xa5\x8c\xaf\xca\x0d\x33\x4e\x9b\x69\x28\xce\ +\xed\xb9\x8d\x64\x8d\x2e\x72\x4d\x6c\x8b\xf2\x83\x61\x54\x58\x0e\ +\x47\x0a\xe7\x1b\xf5\x09\x47\x0a\xe7\xc3\xa8\xb0\x1c\x8c\x14\xaf\ +\xad\x67\x5b\xb7\x02\x49\xd9\x5f\x63\xf4\x95\x2f\xef\x7d\x04\x80\ +\x99\xc2\xd1\x62\xaf\x41\xbf\xa0\x0b\xc0\x20\x2f\x18\x2b\x0f\x64\ +\x9f\xa6\x2b\x0e\xa3\x42\x1f\xf0\xd0\x39\x1d\x5b\xb8\x92\x7d\xd3\ +\x3c\x81\xe1\xe9\xb6\xb0\x23\xc8\x4b\x7c\xfe\x36\xb0\xb7\x07\x60\ +\xeb\xbd\x52\x67\xbb\x55\x9e\x60\x9c\x34\xc3\x49\x78\x55\x4e\xc9\ +\x58\x4c\x2c\xc9\x3f\xf7\xfd\xd2\xee\x85\x84\xc4\x73\x60\x57\x79\ +\x31\xee\xaa\x75\x30\xbd\x5a\xf9\x83\x8e\xa0\x1b\xc8\x54\xcc\xbf\ +\x9e\xae\xbc\xdd\x2a\x4f\xcc\xe8\x06\x48\x93\xaf\x1e\x9b\x71\xa2\ +\xdd\x2a\x8f\x31\x13\x80\xc3\x1f\x02\x32\xc1\x96\xe0\x78\xad\x3c\ +\x35\x09\x54\xaf\x1a\x1f\xd2\x03\x17\x8e\x16\x7b\x31\x4e\xaa\xae\ +\x0f\x1e\xc6\xa9\x30\x2a\x9e\x01\xa8\xfa\xda\x47\x0f\xf5\x34\x4d\ +\x00\x74\xc0\xd0\x6c\x3a\x33\xe8\x37\xc3\xd5\xb6\x4f\xec\x0c\x87\ +\x67\xfd\x2b\x7e\xde\x8c\xc9\x0e\xd6\xb2\x6f\xab\x13\x6b\xe7\xef\ +\x7b\x0e\x08\xba\x50\x3d\xc2\x89\x9d\xf0\x40\x5d\xab\x28\x7d\x65\ +\x45\xb0\xfe\xc2\xba\x01\xff\x35\xea\x11\x98\x47\xda\x91\x4e\x0c\ +\xf2\x0d\x6f\x01\x96\x5f\xf9\xa2\xed\xc0\xfc\x06\x08\xd8\xfb\x44\ +\x5e\xab\x61\x60\x4c\x8d\x6e\x81\xd3\xd8\x8a\x9f\x3b\x2c\xd3\xbb\ +\xa6\x09\x18\x1a\x07\xf6\x77\x46\xa5\x0c\x40\x55\x64\x78\x69\xd4\ +\xae\x82\x81\x43\x4c\x94\x73\xd9\x67\x50\x95\x66\xd0\x3e\x87\x8d\ +\x37\x4d\x20\x5e\x8c\xa7\x80\x39\x5f\x95\x1b\xc9\xd2\x6c\x49\xfe\ +\x59\x89\x49\x48\x4b\x9d\x24\x4e\xc6\x12\x93\x4b\xf2\xcf\xa5\x6a\ +\xe8\x51\xb9\x09\x94\xe2\x1f\xf1\xab\x5a\x79\x36\x26\xc5\x51\xf1\ +\x4c\xf5\xaa\xa5\xa7\xdd\xf2\x38\x8d\x95\x73\xd9\x67\x7f\x48\xf1\ +\x03\x87\x8e\x35\xda\x19\xd7\xc4\x86\x9a\x51\x54\xe8\xdb\x94\x66\ +\x04\x80\x99\x82\xe8\xd3\x55\xc9\x6e\x01\x2f\x1c\xfe\x50\xbd\x76\ +\x9c\x94\xfd\x94\xc1\x60\x3c\x90\xbd\xb3\x5e\x3b\xde\xe0\x83\xc4\ +\x3e\x1a\xde\x4c\x22\x32\x80\xb6\x0b\x77\x18\xb4\x0f\x28\x39\x74\ +\x71\xf3\x1e\x24\xab\x31\x3c\xdd\x16\x6c\x09\x8e\x7b\xa8\x27\x91\ +\xd7\xdf\x4f\x32\x99\xde\x39\x6c\x3c\xfe\x11\xbf\x6a\xe6\x49\xd6\ +\x42\x0b\x2d\xfc\x02\x9d\x07\x3c\xe4\x1f\x0b\x5f\x15\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x8a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3c\x49\x44\x41\x54\x58\x85\xed\ +\xd7\x31\x4e\xc2\x50\x1c\xc7\xf1\xef\x9f\x26\x30\x5a\xa2\x96\x33\ +\x74\x11\x27\x4e\x60\x02\x77\xe0\x14\x18\xbb\xa9\x83\x8c\x34\xe0\ +\x25\x38\x83\x31\xf1\x04\x9d\x00\x87\x9e\x01\x62\x42\x1d\x21\x69\ +\xff\x0e\x94\x86\xb4\xe0\xa0\x6d\x1c\x7c\xbf\xf1\xf5\xa5\xbf\x4f\ +\xde\x5b\xfe\x0f\xfe\x7b\x24\xbf\xe0\xf8\xb3\xae\x4a\xed\x56\x95\ +\x0e\x60\x97\xd4\x13\x89\x10\x88\x26\xe3\xd5\xdd\xf5\xeb\x49\xc0\ +\xb9\xbf\x18\x0a\xdc\x03\x1b\xd0\x10\x95\xcf\x52\xea\x45\xcf\x40\ +\x5c\xa0\x81\x32\xfc\xf0\xae\x1e\x0b\x80\xcb\xf1\xbc\xa7\x89\xbc\ +\x00\x6f\x96\x6a\x7f\xe9\xb5\x57\xa5\x94\xa7\x69\x8d\xe6\x4e\x2c\ +\x32\x05\x6e\x6a\x24\xbd\xfd\x49\xd4\xb2\x1d\x2a\x03\x60\x53\x45\ +\x39\xc0\xd2\x6b\xaf\x2c\xd5\x3e\xb0\x8d\xb1\x06\xfb\xf5\x0c\xb0\ +\xbb\x73\x0d\xab\x28\x3f\x44\x00\xa1\xa0\x9d\x02\x00\xb0\x4b\xbb\ +\xf3\xef\xa2\x44\x40\xf3\x18\xe0\x4f\x62\x00\x06\x60\x00\x06\x60\ +\x00\x06\x60\x00\x06\x70\x08\x88\x76\xd3\x6b\xc5\x11\x6c\x60\x5d\ +\x00\x88\x10\x80\xb8\xad\xd1\xdc\xa9\xaa\x3b\xfd\xb7\xab\x48\x50\ +\x04\x68\x32\x06\x1a\xb1\xc8\xb4\x0a\x84\xf3\xfc\xde\x4a\xc7\xf2\ +\xba\x45\x3c\xc9\x7a\x0f\x37\x5d\x8c\x16\x4f\x08\x0f\xc0\x16\x08\ +\xd3\x01\xf2\xf7\xd9\x1d\xbb\x0b\xd4\x4f\x3e\x4c\x32\xa9\x3f\xeb\ +\xc6\x58\x83\x74\x74\x6e\xe6\xbf\xff\x30\x6b\x45\x02\x8b\x78\x92\ +\x7f\x9a\x99\x7c\x01\x0b\xfa\x6f\x38\x11\xee\x15\x0b\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa4\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x56\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x67\x8a\x2e\xab\xd4\xc6\x33\x64\ +\xa3\x5d\x79\x82\x82\xde\xc1\x53\x58\x74\xd7\x76\xa1\x4b\x83\xf6\ +\x12\x9e\xa1\x14\x7a\x82\xac\xd4\x2e\x72\x06\x45\xd0\x2e\x15\x92\ +\xd7\x85\x31\x48\xd2\x74\xd1\x26\x28\x34\xdf\x72\x66\x98\xff\xe3\ +\x0d\x33\xbc\x81\xff\x8e\x44\x07\x4c\x7b\xd6\x52\x29\x3c\xa8\xd2\ +\x04\xca\x29\xe5\x6c\x45\x70\x44\xfd\xf1\xaa\x77\xf7\x96\x28\x70\ +\x63\x2f\x86\x02\x8f\xc0\x0e\xd4\x45\xe5\x33\x95\x78\xd1\x6b\x10\ +\x0b\x28\xa1\x0c\xd7\xfd\xfa\x73\x4c\xe0\x76\x3c\x6f\xab\x2f\xaf\ +\xc0\xbb\xa1\xda\x59\xf6\x1b\xab\x54\xc2\x03\x6a\xa3\xb9\xe9\x89\ +\x4c\x81\xfb\x02\x7e\xfb\x58\x89\x42\xb8\x42\xa5\x0b\xec\xb2\x08\ +\x07\x58\xf6\x1b\x2b\x43\xb5\x03\xec\x3d\x8c\xee\x71\x3c\x14\x38\ +\x9c\xb9\xba\x59\x84\x9f\x4a\x00\xae\xa0\xcd\x98\x00\x50\x4e\xed\ +\xcc\x7f\x42\xd9\x02\x95\xef\x04\xce\x42\x2e\x70\x76\x81\xab\xa4\ +\x89\xaa\xbd\xd0\x34\x83\xd6\xbd\x7a\xec\xd5\x85\x0b\xa8\x40\x2e\ +\x90\x0b\xe4\x02\x89\xef\x40\xd2\xbd\x4d\x9b\xb3\x57\x20\x17\xb8\ +\x28\x81\xed\xa1\x7b\xcd\x18\xa1\x0c\x6c\x62\x02\x22\x38\x20\x56\ +\x6d\x34\x37\xb3\xca\x0e\xf6\xb6\x14\x71\xe2\x02\xea\x8f\x81\x92\ +\x27\x32\xcd\x42\xc2\x7c\xf9\xa8\x05\x6d\x79\xd1\xc0\x9b\x84\xb9\ +\xa7\x8b\xaa\xa3\xc5\x00\xe1\x09\xd8\x03\x6e\xd0\x40\xfe\x9d\x43\ +\xd9\x2d\xa0\x98\xf8\x31\x09\x4d\xed\x59\xcb\xc3\xe8\x06\xad\x73\ +\x25\x3a\xff\x4b\x36\x8a\x38\x06\xde\x24\xfa\x35\xcb\xf9\x02\xdd\ +\x44\x74\xcb\x69\x25\xf5\xbc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x06\x2f\ +\xe0\x09\x0a\x7a\x07\x4f\x61\x09\x64\x94\xb6\x8b\xba\x89\x10\xf4\ +\x14\x9e\xa1\x14\x7a\x02\x2f\xe0\x1d\xdc\x68\x97\x4a\xc8\xdf\x45\ +\x4d\x49\x15\x2b\xb4\x49\x37\xcd\xb7\x9b\x37\xc3\xfc\x1f\x19\xc2\ +\xbc\x81\xff\x8e\x9d\x16\xa2\x28\xea\x9b\xd9\x9d\xa4\x9e\x99\x05\ +\x65\x84\x48\xda\x99\xd9\x4a\xd2\x7c\x36\x9b\xbd\x5c\x14\x18\x8f\ +\xc7\x53\x49\xf7\xc0\x5e\xd2\xda\xcc\xde\x4a\x12\x68\x99\x59\x17\ +\x68\x02\xd3\x38\x8e\x1f\xcf\x04\x9c\x73\x03\xe0\x19\x78\x4d\xd3\ +\x74\x98\x24\xc9\xa6\x8c\xf0\x9c\x30\x0c\x3b\xbe\xef\x2f\x81\x5b\ +\x49\x83\xfc\x4b\x78\x85\x35\x23\x60\x5f\x45\x38\x40\x92\x24\x9b\ +\x34\x4d\x87\xc0\xc1\xf3\xbc\x51\x5e\xff\x14\x90\xd4\x93\xb4\xae\ +\x22\xbc\x28\x01\xac\x25\xf5\xce\x04\xcc\x2c\x28\xeb\xcc\xaf\xb0\ +\x03\xda\xf9\xc0\xbf\xb6\xda\x39\xa7\xdf\xa4\xc5\x71\x7c\xf6\xa7\ +\x15\xf1\xbe\x9b\xfc\x0b\x6a\x81\x5a\xa0\x16\xa8\x05\x6a\x81\x5a\ +\xa0\x16\xb8\xda\x0f\x5c\xbb\xcf\x4b\x13\x90\xb4\x03\x5a\x55\x86\ +\x1d\x09\x80\x6d\x3e\x28\xb6\x64\x2b\x33\xeb\x86\x61\xd8\xa9\x2a\ +\xf9\xb8\x77\xd7\xcc\x56\x67\x02\x92\xe6\x40\xd3\xf7\xfd\x65\x15\ +\x12\x93\xc9\xe4\xe6\xd8\x96\x37\xb2\x2c\x5b\xe4\xf5\x2f\xe7\xeb\ +\x9c\x7b\x02\x1e\x80\x03\xb0\xe6\xa3\x81\x2c\x83\x00\xe8\x02\x0d\ +\x2e\x3d\x4c\x72\xa2\x28\xea\x7b\x9e\x37\x3a\xb6\xce\xed\xd3\xf9\ +\x1f\xb2\x35\xb3\x55\x96\x65\x8b\xd3\xa7\x59\xcd\x3b\xf1\x23\x82\ +\xe5\xfb\x4f\xe3\xdb\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x02\x04\x6d\ +\x98\x1b\x69\x00\x00\x00\x29\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\xff\xcf\xa3\x08\x18\x32\x32\x30\x20\x0b\x32\x1a\ +\x32\x30\x30\x42\x98\x10\x41\x46\x43\x14\x13\x50\xb5\xa3\x01\x00\ +\xd6\x10\x07\xd2\x2f\x48\xdf\x4a\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x02\x6b\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x1d\x49\x44\x41\x54\x58\x85\xed\ +\x96\x31\x4f\x13\x61\x18\xc7\x7f\xcf\x5d\x37\x3a\x71\x25\x01\x3e\ +\x80\x43\xb5\x08\x13\x4e\x12\x16\x1d\x20\x41\xfb\x1d\x60\xb6\xa1\ +\x12\xa1\x0c\x1d\xc0\xa8\x3d\xe3\xa4\x89\xe1\x3b\x14\x07\x18\xc4\ +\xa1\x81\x09\x26\xa0\xd8\x26\x7e\x81\x6a\x22\xd7\xa9\x4c\xd0\xf7\ +\x71\xe8\x81\x0c\x5c\xdb\xbb\x36\x2e\xf6\xbf\xde\xfb\xdc\xff\x77\ +\x4f\xee\x7d\xfe\x0f\x0c\x34\xd0\xff\x2e\x09\x75\x3a\x5f\x8a\x39\ +\x71\x67\x5e\xd0\x34\xc8\x34\x30\xee\x3f\xa9\x81\x1e\x29\x52\xf4\ +\x1a\xde\x0e\xf9\xd9\xab\xbe\x03\x0c\xbf\x3b\x7b\x62\x59\xfa\x01\ +\x48\x02\xc7\x8a\x1c\xa0\xfa\xb3\xf5\x16\x19\x13\xf4\x31\x30\x05\ +\x54\x0d\xf2\xa2\x9e\x4d\x7d\xeb\x0f\x80\xaa\x8c\xbc\x2f\xaf\x2a\ +\xb2\x29\xc2\x76\x53\xed\xf5\x7a\xf6\x7e\xf5\x4e\x48\xb7\x92\xb4\ +\xa5\xb9\xa1\xca\x33\x55\xc9\x79\xd9\x07\x6f\x10\xd1\x6e\x3f\xf2\ +\x4e\x8d\xb8\xa7\x6b\x09\xb7\x7c\x99\x28\x94\x17\xbb\xad\x49\x14\ +\xca\x8b\x09\xb7\x7c\xe9\x14\xce\x56\x3b\x9d\x6d\xdb\x01\xbf\xed\ +\x5f\x51\x96\xce\x5f\x4e\x6c\x75\x0b\x00\x90\x70\xcb\x4b\xc0\x67\ +\x63\xe4\x69\x7d\x25\xb5\x17\x1e\x20\x5f\x8a\x25\xe2\xce\xa9\x08\ +\x3f\x7e\x2f\x4f\xa4\xc3\x98\xdf\x82\xd8\x06\xee\x9d\x37\xbc\x87\ +\x41\x3f\xa6\x15\x54\xec\xc4\x9d\x79\x20\xd9\x54\x7b\x3d\x8a\x39\ +\x80\xc1\xce\x01\x49\x67\xc8\x99\x0b\x3a\x13\x08\xd0\xba\x6a\x1c\ +\x07\xfd\x70\xdd\xa8\x55\xab\x27\x16\x12\xd8\xc1\x40\x00\x90\x69\ +\x45\x0e\xa2\x9a\x5f\x4b\xb1\xf6\x55\xf4\x51\x04\x00\xc6\x6f\xee\ +\x79\x6f\x08\xbf\xf8\x3b\xb0\x42\x01\xfc\x13\xb5\x03\xa8\x21\x32\ +\xd6\xbb\x85\x8c\x02\xb5\x08\x00\x7a\xe4\x8f\xd7\xde\xec\x31\x33\ +\xa2\x72\x18\x1a\x40\x91\x22\x30\x35\xec\x56\x92\x51\xcd\x5b\xb5\ +\x32\x69\xd0\x62\x68\x00\xaf\xe1\xed\x00\x55\x5b\x9a\x1b\x51\x01\ +\x2c\x9a\x9b\x40\xc5\xbb\xf0\x76\x43\x03\x90\x9f\xbd\x32\x46\x32\ +\xaa\x3c\x0f\x93\x03\xd7\xf2\x47\xf1\x82\x41\x32\xed\xe2\xb9\xed\ +\x2d\xa8\xaf\xa4\xf6\x04\xcd\x21\x7c\x0a\x15\x46\x2d\xf3\x8f\xaa\ +\x92\xeb\x14\xcb\x5d\xc5\xb1\xe3\x7e\x7f\x25\xa2\xaf\x81\x2f\x06\ +\x3b\xd7\x2e\x8e\xfd\xb6\x2f\x28\xac\x79\xcb\xa9\xb7\x9d\xe2\x38\ +\xe2\x42\xa2\x27\x8a\xb5\xef\x0f\x19\x40\x46\x05\x33\x03\x32\x09\ +\x54\x0c\x92\xe9\xdf\x42\x72\x5b\xf9\x52\xcc\x19\x72\xe6\x2c\x24\ +\xed\x8f\xd7\x9b\x95\x4c\x54\x0e\x0d\x5a\xf4\x2e\xbc\xdd\x30\x2b\ +\xd9\x40\x03\x0d\xf4\x07\x31\xe2\xd8\x82\x22\x4a\xad\xa7\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1d\x00\xb0\ +\xd5\x35\xa3\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xfe\x9f\x67\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x60\x34\x44\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x64\x40\x09\x75\x86\xb3\xad\x9c\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x02\x2b\ +\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\x01\xe2\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x0e\xc3\x20\ +\x10\x43\x69\x4f\x9d\x23\x70\xeb\x76\x85\x84\x10\x81\x81\xb1\x0d\ +\x51\xf0\x3a\x35\xf1\xe3\x93\x0c\x25\x21\x1c\x1d\x1d\xbd\x59\x1f\ +\x65\x63\xd7\x75\xfd\x2c\xd7\xc5\x18\x65\xf7\x45\x6d\xc8\x1a\xb8\ +\x27\x26\x10\xb8\x31\x2a\xf4\x9d\xd0\x30\x60\x66\xec\xe0\xa5\x50\ +\x20\x20\x26\xea\xf0\x49\x08\x08\x2e\x83\x55\xc1\x4b\x79\x40\x4c\ +\xff\x70\x97\xf0\x49\xb3\x10\x86\x7f\xb4\x5b\xf0\x52\xa3\x20\x86\ +\x2e\xde\x3d\x7c\xd2\x08\x04\xf3\x85\x4f\x09\x9f\x64\x85\xf0\x65\ +\xdf\xc8\xee\x32\x51\x7a\x5a\xef\x27\x59\x46\x41\xf7\x82\x5e\xf8\ +\xbc\x11\x15\xa8\x32\x58\xab\xdd\x1e\x04\xe8\x14\x88\x31\x7e\xd8\ +\x85\x0c\xda\xbf\x09\x60\xb6\x47\x59\x10\x66\x7c\x7b\x19\x6e\x01\ +\x78\x87\x33\x1a\x82\xc7\xaf\x95\xc5\x3d\x05\x3c\xf3\xcf\xaa\x96\ +\x8f\xb7\xa3\xaa\xc6\x33\xa6\xac\x9b\x44\xfa\xd6\xbc\x60\x8b\x20\ +\x63\x24\x30\x7b\x3e\x09\xfa\x14\x40\x42\x50\x84\x0f\xa1\x32\x05\ +\x10\xe6\xde\x9b\x67\x86\x2f\xbd\x29\xaf\xc2\x9e\x91\xa0\xea\xf9\ +\x24\x5a\x2d\x30\x03\x41\x1d\x3e\x04\x72\x31\x34\x02\x61\x45\xf8\ +\x10\x8a\x35\x80\xd5\x50\x2f\x9c\x3a\x7c\xde\x9e\xa4\x1c\x9e\x5d\ +\x13\x14\xc5\x95\x6c\x3f\x60\x34\x8c\xaa\xb2\x94\x6e\x88\x58\x43\ +\x29\xf7\x1f\xe4\x3b\x42\xbd\x70\xea\xcd\x17\x39\x00\xcf\x7b\x00\ +\x43\x52\x00\xd6\x70\x4a\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd9\ +\x47\x9d\x02\x02\x1d\x80\x25\xfc\x4a\x08\x94\x6a\x30\x69\xb4\xe7\ +\x15\x2f\x45\x92\x6a\xb0\xd6\x50\xae\xbb\x30\x2b\x46\x02\x05\x80\ +\xa7\x27\xd5\x10\xe0\x00\x10\xc3\x58\x09\x01\xb6\x29\x1a\x02\x7e\ +\x0e\x2b\xfc\x60\x23\x80\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\ +\x43\x70\xdf\xb8\xaa\x9e\x67\x6d\xb4\x2e\xd9\x13\xdc\xc1\x2f\xe9\ +\x16\x00\xeb\xbf\x38\x8f\x18\x8b\x33\x7c\x04\xb0\xeb\x79\xb4\xbf\ +\xfb\x80\xc4\xee\xea\x8d\xe4\x73\x44\xc6\x6a\xf6\x34\x08\xe7\x94\ +\x98\x51\xe7\xa0\xe4\xa8\xf9\xee\x10\xa8\x47\x65\x73\xed\x06\x42\ +\x76\x58\x3a\xd7\x2e\x10\x96\x1c\x97\x4f\x5a\x0d\xc1\x5b\x10\x9d\ +\x4f\x66\x10\x26\xb9\x5e\xfb\xd1\x54\x4d\xaf\xfc\x6c\xae\xa5\x1d\ +\x3f\x9c\x3c\x7a\xbb\xfe\x5f\x58\x5a\xcd\xa5\xce\x7b\xda\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xdc\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x40\x08\x06\x00\x00\x00\x13\x7d\xf7\x96\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2d\x19\xaf\x4a\xeb\xd0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x40\x49\x44\x41\x54\x58\xc3\xed\xce\x31\ +\x0a\x00\x20\x0c\x03\x40\xf5\xa3\x7d\x5b\x5f\xaa\x53\xc1\xc9\xc5\ +\x45\xe4\x32\x05\x1a\x8e\xb6\x76\x99\x5e\x25\x22\x66\xf5\xcc\xec\ +\xfb\xe8\x74\x1b\xb7\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\xf0\x36\xf0\x41\x16\x0b\x42\x08\x78\x15\x57\x44\xa2\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x92\xc3\x20\ +\x10\x43\xc9\x9c\x61\x0e\x98\xc5\x1c\x2b\x8b\x39\x60\xee\x90\xac\ +\xa8\xa2\x28\x1b\x1a\x5a\x12\xed\x32\x5a\x3b\xc2\x7a\x7c\xec\x26\ +\x38\xa5\xad\xad\xad\x3b\xeb\xa1\x6c\xec\xf7\xef\xff\x63\xb9\xee\ +\xfd\x7a\xca\xee\x8b\xda\x90\x35\x70\x4f\x4c\x20\x70\x63\x54\xe8\ +\x33\xa1\x61\xc0\xcc\xd8\xc1\x6b\xa1\x40\x40\x4c\xd4\xe1\xb3\x10\ +\x10\x5c\x06\xab\x82\xd7\xf2\x80\x98\xfe\x61\x94\xf0\x59\xb3\x10\ +\x86\x7f\x14\x2d\x78\xad\x51\x10\x43\x17\x47\x0f\x9f\x35\x02\xc1\ +\x7c\xe1\x55\xc2\x67\x59\x21\xfc\xb0\x6f\x24\xba\x4c\x94\xae\xd6\ +\xfb\x59\x96\x51\xd0\xbd\xa0\x17\xbe\x6c\x44\x05\xaa\x0e\xd6\x6a\ +\xb7\x07\x01\x3a\x05\xde\xaf\xe7\x83\x5d\xc8\xa0\xfd\x9b\x00\x66\ +\x7b\x94\x05\x61\xc6\xb7\x97\xe1\x14\x80\x77\x38\xa3\x21\x78\xfc\ +\x5a\x59\xdc\x53\xc0\x33\xff\xac\x6a\xf9\x78\x3b\xea\xd0\x78\xc6\ +\x94\x75\x93\x48\xdf\x23\x2f\xd8\x22\xc8\x18\x09\xcc\x9e\xcf\x82\ +\x3e\x05\x90\x10\x14\xe1\x53\x3a\x98\x02\x08\x73\xef\xcd\x33\xc3\ +\xd7\xde\x94\x57\x61\xcf\x48\x50\xf5\x7c\x16\xad\x16\x98\x81\xa0\ +\x0e\x9f\x12\xb9\x18\x1a\x81\xb0\x22\x7c\x4a\xd5\x1a\xc0\x6a\xa8\ +\x17\x4e\x1d\xbe\x6c\x4f\x52\x0e\xcf\xae\x09\x8a\xe2\x4a\xb6\x1f\ +\x30\x1a\x46\x55\x59\x4a\x37\x44\xac\xa1\x94\xfb\x0f\xf2\x1d\xa1\ +\x5e\x38\xf5\xe6\x8b\x1c\x80\xe7\x3d\x80\x21\x29\x00\x6b\x38\x25\ +\x04\x19\x00\x64\x2d\x80\x94\x04\xc0\xec\xa3\x4e\x01\x81\x0e\xc0\ +\x12\x7e\x25\x04\x4a\x35\x98\x35\xda\xf3\x8a\x97\x22\x49\x35\x78\ +\xd4\x50\xa9\xb3\x30\x2b\x46\x02\x05\x80\xa7\x27\xd5\x10\xe0\x00\ +\x10\xc3\x58\x09\x01\xb6\x29\x9a\x12\x7e\x0e\x2b\xfc\x60\x23\x80\ +\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\x43\x70\xdf\xb8\xaa\x9e\ +\x67\x6d\xb4\x2e\xd9\x13\x8c\xe0\x97\x75\x0a\x80\xf5\x5f\x9c\x47\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\xdf\x7d\x40\x22\xba\x7a\x23\ +\x79\x1f\x91\xb1\x9a\x5d\x0d\xc2\x3e\x25\x66\xd4\x3e\x28\x39\x6a\ +\x1e\x1d\x02\xf5\xa8\x6c\xa9\x68\x20\x64\x87\xa5\x4b\x45\x81\xb0\ +\xe4\xb8\x7c\xd6\x6a\x08\xde\x82\x68\x7f\x32\x83\x30\x29\x75\xdb\ +\x8f\xa6\x8e\x74\xcb\xcf\xe6\x5a\x8a\xf8\xe1\xe4\xd6\xdd\xf5\x05\ +\x90\xc2\x5a\x7d\xfa\xa7\x95\xa2\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x01\xa8\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x5a\x49\x44\x41\x54\x58\x85\xed\ +\x97\x4d\x6a\xc2\x50\x14\x85\xbf\x1b\x82\x0e\xab\x13\xbb\x06\x37\ +\xe0\x0a\x0a\xba\x07\x57\x61\x09\xe4\x29\x6d\x07\x75\x12\x21\xe8\ +\x2a\x5c\x43\x29\x74\x05\xd9\x80\x7b\x70\xa2\x1d\x2a\x21\xa7\x83\ +\x1a\xb1\x86\x50\x28\xb1\x16\x9a\x33\x7b\xf7\x3e\xde\xf9\xb8\xef\ +\x87\xfb\xe0\xbf\xcb\xce\x03\x61\x18\xf6\xcd\xec\x5e\x52\xcf\xcc\ +\x5a\x55\x98\x48\xda\x9a\x59\x22\x69\x3e\x9b\xcd\x5e\x4b\x01\xc6\ +\xe3\xf1\x54\xd2\x03\xb0\x93\xb4\x32\xb3\xf7\x8a\x00\x6e\xcc\xac\ +\x0b\x34\x81\x69\x14\x45\x4f\x05\x00\xe7\xdc\x00\x78\x01\xde\xd2\ +\x34\x1d\xc6\x71\xbc\xae\xc2\x3c\x57\x10\x04\x1d\xdf\xf7\x97\xc0\ +\x9d\xa4\x41\x5e\x09\xef\x64\xce\x08\xd8\x5d\xc2\x1c\x20\x8e\xe3\ +\x75\x9a\xa6\x43\x60\xef\x79\xde\x28\x8f\x1f\x01\x24\xf5\x24\xad\ +\x2e\x61\x7e\x0a\x01\xac\x24\xf5\x0a\x00\x66\xd6\xaa\x6a\xcf\xbf\ +\xd1\x16\x68\x17\x00\xae\xa5\x1a\xe0\xea\x00\x7e\x59\xc2\x39\xa7\ +\x2a\x8d\xa2\x28\x2a\xbc\xba\xf0\x07\x2a\x50\x03\xd4\x00\x35\x40\ +\xe9\x3b\x50\x76\x6f\xab\xd6\xd5\x2b\x50\x03\x5c\x1d\xe0\x78\x08\ +\x25\x6d\x81\x9b\x5f\xf0\x6c\x01\x9b\x7c\x70\xda\x92\x25\x66\xd6\ +\x0d\x82\xa0\x73\x29\xe7\xc3\xda\x5d\x33\x4b\x0a\x00\x92\xe6\x40\ +\xd3\xf7\xfd\xe5\x25\x20\x26\x93\xc9\xed\xa1\x2d\x6f\x64\x59\xb6\ +\xc8\xe3\x5f\xee\xba\x73\xee\x19\x78\x04\xf6\xc0\x8a\xcf\x06\xb2\ +\x0a\xb5\x80\x2e\xd0\xa0\xec\x63\x92\x2b\x0c\xc3\xbe\xe7\x79\xa3\ +\x43\xeb\xdc\x3e\xcf\xff\x50\x1b\x33\x4b\xb2\x2c\x5b\x9c\x7f\xcd\ +\x6a\x7d\x00\x2c\x83\x82\xe5\xf9\x1d\x9c\xb3\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xc3\ +\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\x0b\x13\x00\x00\ +\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xdc\x0b\x07\x09\x2e\x37\xff\x44\xe8\xf0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x27\x49\x44\x41\x54\x78\xda\xed\xc1\x01\ +\x0d\x00\x00\x00\xc2\xa0\xf7\x4f\x6d\x0e\x37\xa0\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x77\x03\x40\x40\ +\x00\x01\xaf\x7a\x0e\xe8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\xdd\x91\xc3\x20\ +\x10\x83\x37\x57\xc3\xd5\x91\xea\x52\xc6\x55\x77\x75\xa4\x87\xe4\ +\x89\x19\x86\xb1\x61\x61\x25\x81\xc7\xe8\xd9\x11\xd6\xc7\x8f\xbd\ +\x04\x9b\x6d\x6d\x6d\xdd\x59\x0f\x65\x63\xbf\x7f\xff\x1f\xcf\x75\ +\xef\xd7\x53\x76\x5f\xd4\x86\xbc\x81\x5b\x62\x02\x81\x1b\xa3\x42\ +\x9f\x09\x0d\x03\x66\xc6\x0e\x5e\x0a\x05\x02\x62\xa2\x0e\x9f\x84\ +\x80\x10\x32\x98\x15\xbc\x54\x04\xc4\xf0\x0f\x57\x09\x9f\x34\x0a\ +\xa1\xfb\x47\xab\x05\x2f\xd5\x0b\xa2\xeb\xe2\xd5\xc3\x27\xf5\x40\ +\x70\x5f\x78\x95\xf0\x49\x5e\x08\x3f\xec\x1b\x59\x5d\x2e\x4a\x57\ +\xeb\xfd\x24\xcf\x28\x68\x5e\xd0\x0a\x9f\x37\xa2\x02\x55\x06\xab\ +\xb5\xdb\x82\x00\x9d\x02\xef\xd7\xf3\xc1\x2e\x64\xd0\xfe\x55\x00\ +\xa3\x3d\xca\x82\x30\xe2\xdb\xca\x70\x0a\x20\x3a\x9c\xd1\x10\x22\ +\x7e\xb5\x2c\xe1\x29\x10\x99\x7f\x5e\xd5\x7c\xa2\x1d\x75\x68\x3c\ +\x62\xca\xba\x49\xa4\xef\x91\x17\x6c\x11\x64\x8c\x04\x66\xcf\x27\ +\x41\x9f\x02\x48\x08\x8a\xf0\x66\x07\x53\x00\x61\x1e\xbd\x79\x66\ +\xf8\xd2\x9b\xf2\x2a\x1c\x19\x09\xaa\x9e\x4f\xa2\xd5\x02\x23\x10\ +\xd4\xe1\xcd\xc8\xc5\x50\x0f\x84\x19\xe1\xcd\x8a\x35\x80\xd5\x50\ +\x2b\x9c\x3a\x7c\xde\x9e\xa4\x1c\x1e\x5d\x13\x14\xc5\x95\x6c\x3f\ +\xa0\x37\x8c\xaa\xb2\x94\x6e\x88\x78\x43\x29\xf7\x1f\xe4\x3b\x42\ +\xad\x70\xea\xcd\x17\x39\x80\xc8\x7b\x00\x43\x52\x00\xde\x70\x4a\ +\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd1\x47\x9d\x02\x02\x1d\x80\ +\x27\xfc\x4c\x08\x94\x6a\x30\xa9\xb7\xe7\x15\x2f\x45\x92\x6a\xf0\ +\xa8\xa1\x5c\x67\x61\x66\x8c\x04\x0a\x80\x48\x4f\xaa\x21\xc0\x01\ +\x20\x86\xb1\x12\x02\x6c\x53\xd4\x0c\x3f\x87\x15\x7e\xb0\x11\xc0\ +\x58\xc0\x14\x23\x01\x02\x80\xb9\x7a\xb3\x21\x84\x6f\x5c\x55\xcf\ +\xb3\x36\x5a\xa7\xec\x09\xae\xe0\x97\x74\x0a\x80\xf5\x5f\x5c\x44\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\x3f\x7c\x40\x62\x75\xb5\x46\ +\xf2\x3e\x22\xe3\x35\xbb\x1a\x84\x7d\x4a\xcc\xa9\x7d\x50\xb2\xd7\ +\x7c\x75\x08\xd4\xa3\xb2\xb9\x56\x03\x21\x3b\x2c\x9d\x6b\x15\x08\ +\x53\x8e\xcb\x27\xcd\x86\x10\x2d\x88\xf6\x27\x33\x08\x93\x5c\xb7\ +\xfd\x68\xea\x48\xb7\xfc\x6c\xae\xa6\x15\x3f\x9c\xdc\xba\xbb\xbe\ +\x18\x5f\x5a\xd7\x14\x54\xdf\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x50\x10\x86\xbf\x49\x8a\x5d\x56\xa9\x8d\x67\xc8\ +\x46\xbb\xf2\x04\x05\xbd\x83\xa7\xb0\xe8\xae\xed\xa2\x2e\x0d\xda\ +\x4b\x78\x86\x52\xe8\x09\xb2\x52\xbb\xc8\x19\x14\x41\xbb\x54\x48\ +\xa6\x0b\x63\x10\x83\x0a\x35\xe9\xa6\xef\xdb\xe5\xbd\x21\xff\xc7\ +\x3c\x42\xe6\xc1\x7f\x47\x0e\x17\x1c\x6f\xdc\x50\xb1\x1e\x55\xa9\ +\x03\xc5\x8c\x72\x56\x22\xf8\xa2\xd1\x60\xde\xb9\xff\x38\x2a\x70\ +\xeb\x4d\x7b\x02\x4f\xc0\x1a\x34\x40\xe5\x3b\x93\x78\xd1\x1b\x10\ +\x17\xb8\x46\xe9\x2d\xba\xd5\x97\x94\xc0\xdd\x60\xd2\xd4\x48\xde\ +\x81\x4f\x5b\xb5\x35\xeb\xd6\xe6\x99\x84\xc7\x54\xfa\x13\x27\x14\ +\x19\x01\x0f\x16\x51\x73\xd7\x09\x2b\xa9\x50\x69\x03\xeb\x3c\xc2\ +\x01\x66\xdd\xda\xdc\x56\x6d\x01\x9b\x10\xbb\xbd\x5b\x4f\x04\xb6\ +\x67\xae\x41\x1e\xe1\xfb\x12\x40\x20\x68\x3d\x25\x00\x14\x33\x3b\ +\xf3\x53\x28\x2b\xa0\xb4\x7b\xbc\x3a\x57\x5f\xf6\xa6\x7a\x49\xde\ +\xa2\x53\x4d\x7d\x69\xfb\x58\xa7\x36\xff\x02\x23\x60\x04\x8c\x80\ +\x11\x30\x02\x46\xc0\x08\x9c\x9d\x07\xce\xfd\xcf\x2f\x65\xbf\x03\ +\xab\xed\xf4\x9a\x33\x42\x11\x58\xa6\x04\x44\xf0\x41\xdc\x4a\x7f\ +\xe2\xe4\x95\x1d\xbf\xdb\x55\xc4\x4f\x0b\x68\x34\x00\xae\x43\x91\ +\x51\x1e\x12\xce\xdb\x57\x25\x1e\xcb\x0b\x36\xe1\x30\xc9\xdd\x2f\ +\x2a\xf7\xa7\xaf\x08\xcf\xc0\x06\x08\xe2\x01\xf2\x72\xb6\x6d\x77\ +\x81\xc2\xd1\x8b\x49\x62\xea\x8d\x1b\x21\x76\x3b\x1e\x9d\x4b\x87\ +\xfb\xbf\x64\xa9\x88\x6f\x13\x0e\x0f\xaf\x66\x86\x1f\xb5\xcb\x74\ +\xcb\x4c\x58\x91\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +" + +qt_resource_name = b"\ +\x00\x09\ +\x09\x5f\x97\x13\ +\x00\x71\ +\x00\x73\x00\x73\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x73\ +\x00\x0a\ +\x09\x24\x4d\x25\ +\x00\x71\ +\x00\x64\x00\x61\x00\x72\x00\x6b\x00\x73\x00\x74\x00\x79\x00\x6c\x00\x65\ +\x00\x09\ +\x00\x28\xad\x23\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x73\x00\x73\ +\x00\x02\ +\x00\x00\x07\x83\ +\x00\x72\ +\x00\x63\ +\x00\x13\ +\x08\xc8\x96\xe7\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\x11\ +\x0a\xe5\x6c\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\x11\ +\x0b\xda\x30\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x19\ +\x08\x3e\xcc\x07\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x65\x00\x6e\x00\x64\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\x12\ +\x07\x8f\x9d\x27\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2d\x00\x6f\x00\x6e\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\x11\ +\x08\x8c\x6a\xa7\ +\x00\x48\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x0f\ +\x02\x9f\x05\x87\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x18\ +\x03\x8e\xde\x67\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\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\x14\ +\x06\x5e\x2c\x07\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2d\x00\x6f\x00\x6e\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\x1f\ +\x0a\xae\x27\x47\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\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\x11\ +\x08\xc4\x6a\xa7\ +\x00\x56\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x0a\ +\x05\x95\xde\x27\ +\x00\x75\ +\x00\x6e\x00\x64\x00\x6f\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x10\ +\x01\x07\x4a\xa7\ +\x00\x56\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1d\ +\x09\x07\x81\x07\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x01\xe0\x4a\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\x14\ +\x0b\xc5\xd7\xc7\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x76\x00\x6c\x00\x69\x00\x6e\x00\x65\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\x1a\ +\x01\x21\xeb\x47\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x6d\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x06\x53\x25\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x17\ +\x0c\x65\xce\x07\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\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\x1a\ +\x0e\xbc\xc3\x67\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\x17\ +\x0f\x1e\x9b\x47\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\x00\x6f\x00\x63\ +\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x08\x3f\xda\x67\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x20\ +\x09\xd7\x1f\xa7\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x66\x00\x6f\x00\x63\x00\x75\x00\x73\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\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\x19\ +\x0b\x59\x6e\x87\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\ +\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0e\ +\x0e\xde\xfa\xc7\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x09\ +\x06\x98\x83\x27\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x10\ +\x01\x00\xca\xa7\ +\x00\x48\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x08\x90\x94\x67\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\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\x1a\ +\x01\x87\xae\x67\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x0c\xe2\x68\x67\ +\x00\x74\ +\x00\x72\x00\x61\x00\x6e\x00\x73\x00\x70\x00\x61\x00\x72\x00\x65\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x01\xf4\x81\x47\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1a\ +\x05\x11\xe0\xe7\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\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\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00\x2b\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ +\x00\x00\x00\x4a\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\ +\x00\x00\x06\x52\x00\x00\x00\x00\x00\x01\x00\x00\x46\x60\ +\x00\x00\x03\x06\x00\x01\x00\x00\x00\x01\x00\x00\x2a\xdf\ +\x00\x00\x04\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x33\x5b\ +\x00\x00\x01\x50\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x52\ +\x00\x00\x06\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x49\x79\ +\x00\x00\x03\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x19\ +\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xec\ +\x00\x00\x01\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x21\x93\ +\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x00\x22\x37\ +\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x40\x6f\ +\x00\x00\x07\x22\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x25\ +\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x28\xb2\ +\x00\x00\x02\x32\x00\x00\x00\x00\x00\x01\x00\x00\x23\x72\ +\x00\x00\x04\x46\x00\x00\x00\x00\x00\x01\x00\x00\x34\x15\ +\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x22\xdb\ +\x00\x00\x06\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x44\x31\ +\x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x16\ +\x00\x00\x01\x26\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xb8\ +\x00\x00\x05\x90\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xc9\ +\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x32\ +\x00\x00\x05\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x93\ +\x00\x00\x01\x82\x00\x00\x00\x00\x00\x01\x00\x00\x20\xe3\ +\x00\x00\x06\x78\x00\x00\x00\x00\x00\x01\x00\x00\x47\x40\ +\x00\x00\x02\xc4\x00\x01\x00\x00\x00\x01\x00\x00\x26\x20\ +\x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x17\x21\ +\x00\x00\x03\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x78\ +\x00\x00\x05\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x3d\x21\ +\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x00\x23\xf7\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x19\xa9\ +\x00\x00\x05\xe0\x00\x00\x00\x00\x00\x01\x00\x00\x41\x18\ +\x00\x00\x03\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x31\xbe\ +\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x8e\ +\x00\x00\x04\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x34\xbf\ +\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x32\xb1\ +\x00\x00\x06\xda\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x25\ +\x00\x00\x04\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x35\x69\ +\x00\x00\x06\x18\x00\x00\x00\x00\x00\x01\x00\x00\x43\x87\ +\x00\x00\x04\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x38\x85\ +\x00\x00\x02\x94\x00\x00\x00\x00\x00\x01\x00\x00\x25\x7d\ +\x00\x00\x00\x32\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() diff --git a/themes/qdarkstyle/pyqt_style_rc.py b/themes/qdarkstyle/pyqt_style_rc.py new file mode 100644 index 0000000..eb2d514 --- /dev/null +++ b/themes/qdarkstyle/pyqt_style_rc.py @@ -0,0 +1,1635 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt4 (Qt v4.8.7) +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore + +qt_resource_data = b"\ +\x00\x00\x17\x1d\ +\x00\ +\x00\xa6\xa5\x78\x9c\xdd\x3d\x6d\x73\xdb\x36\xd2\xdf\xfd\x2b\x90\ +\xf8\x8b\xd3\xc7\x8a\x2d\xc9\x76\x13\x75\xf2\xc1\x8e\x9d\x5e\xe6\ +\x49\x93\xb4\x76\xdb\xb9\xb9\xb9\xf1\x50\x12\x2c\xf1\x4c\x91\x0a\ +\x49\xc5\xf1\x75\xfc\xdf\x0f\xef\xc4\x3b\x40\x91\x76\xee\x79\xdc\ +\xab\xcf\x05\x81\xc5\xee\x62\xb1\xbb\x58\x60\x81\x83\x1f\xc0\xaf\ +\xe7\x49\x79\x7b\x59\xdf\x67\xf0\x72\x09\x61\x0d\x06\x5b\xfe\xec\ +\xec\x5c\x2d\xd3\x0a\xa0\xff\xd5\x4b\x08\x56\x49\x9a\x83\x0a\x43\ +\x05\x15\x06\xbb\x4f\x4a\xd7\x49\x06\xeb\x1a\x82\x65\x52\x81\x3c\ +\xcd\x59\xb5\x59\x91\x15\x65\xf5\x72\xe7\x7d\x8d\x5b\x4f\x93\x0a\ +\xce\x41\x91\xa3\x06\x25\x44\xad\x61\x06\x67\x75\x9a\x2f\x58\xb5\ +\x7d\x56\xbe\x28\xe1\x7d\x5a\x2d\xc1\xde\x34\x99\xdd\x2e\xca\x62\ +\x93\xcf\x5f\xb0\x2a\x3b\xeb\x6c\x53\xb1\x6a\x77\xcb\xb4\x26\xd5\ +\x6e\x8a\x12\xaa\xd5\x5e\x82\x8b\x64\xb6\x44\x1d\xd4\xa0\xb8\x01\ +\x77\xe9\x7c\x01\xeb\x0a\xff\x89\x31\xad\x92\x15\xdc\xa9\xef\xd7\ +\x18\xd7\xaf\x10\x24\x60\x09\x93\x39\x2c\x41\x96\xde\x42\x54\x21\ +\xad\x26\x3b\x3b\x00\xfd\x58\xf8\x80\x8b\x7f\x46\x3d\xad\x3f\x22\ +\x18\x40\x29\xb6\x71\xed\x34\x9f\x03\x88\x11\xa1\x18\x60\x16\x54\ +\x70\x9d\x94\x49\x8d\xd8\x70\x97\xd6\x4b\x77\xe7\xbf\xfe\x49\x9a\ +\x48\xfd\xb0\x41\x58\x25\xb7\x10\xfd\x46\x24\x23\xd0\xd5\x3d\xa8\ +\x0b\x70\x93\xa2\x7e\x12\xf4\xef\x6c\x99\xe4\x0b\x44\x60\x81\x1a\ +\xcd\xaa\x0a\x7d\x80\xd9\xfc\x25\xb8\x42\x44\x23\xd6\xa7\xb3\x9d\ +\x59\x91\xdf\xa4\x8b\x0d\x42\x20\x45\xa3\x80\xa0\xcd\x61\x35\x2b\ +\xd3\x29\x42\x67\x0a\xb3\xac\xb8\x7b\x49\x7b\xbf\xbc\xf8\x70\xf1\ +\xf6\xea\xfd\xa7\x8f\x40\x25\x08\xb0\x1f\x34\x72\xd7\x59\xba\x58\ +\xd6\x00\xec\x0e\x7f\x7c\x7d\x7a\x71\x88\xfe\xff\xe8\xd5\xdb\xf3\ +\x11\xd8\x63\xa3\x5a\xe4\x07\xcb\xe2\x2b\x2c\x0f\x12\xf4\x1f\x5f\ +\xe1\x0b\xa5\x6d\x5e\x94\xab\x24\x03\xbb\xe3\xf1\x8f\xc7\xa7\x63\ +\xdc\xf6\xe4\xe8\xf4\x90\xb7\x85\x73\xb5\xf6\x1c\x49\x31\xc0\x3d\ +\xbd\x3a\x3a\x39\x3e\xc7\xb5\x8f\x0f\x4f\x2e\x9a\xda\x60\x9e\x56\ +\xc9\x34\xc3\xcd\x48\xbb\x77\x9f\x7e\xbb\xf8\xf9\xb7\x4f\xbf\x7f\ +\x3c\x07\x56\xec\x91\xbc\x08\xec\x2f\xde\xbd\x3b\x7c\x37\x04\xbb\ +\xe8\x37\xfa\x07\xec\xd5\xf0\x5b\x5d\x1d\x64\x09\x62\x47\xf5\x42\ +\x69\xc1\x70\xe6\x3f\xbb\xa7\xe4\x07\xec\xe5\x45\x0d\x36\x58\xae\ +\xef\x61\xad\xb6\xe0\x78\x1f\x1f\x1e\xbf\x3b\x79\x0d\x76\x7f\x7c\ +\x85\xff\x01\x7b\x1c\x5d\x40\x3a\x63\x48\x9f\x9d\xbe\xfd\x5f\x1f\ +\xd2\x68\x2e\x08\xa4\x8f\xce\x8f\x8f\x8e\xcf\x04\xe0\xbd\x4d\xbe\ +\x2e\x61\x55\xc9\x7c\xc3\xd5\x05\x97\x87\xe3\x93\x31\xaa\x3e\x1e\ +\x1d\x0d\x8f\xce\xd0\xb4\x2a\x4a\x24\x72\xfb\x82\x6d\xfb\x80\x35\ +\xdf\x47\x12\x04\x67\xb7\xf8\x8f\xba\x28\xb2\x69\x82\xe7\xe4\x0a\ +\xe6\x9b\x4a\x05\xcc\x09\x1b\x8d\x47\x27\x23\x44\xd8\xf0\x35\xfa\ +\xeb\x5c\x99\xaf\x3b\x3b\xef\x6f\x90\x74\x57\x75\x89\x45\xb2\x04\ +\x86\xe4\x95\xf0\xcb\x26\x2d\x89\xe0\xcd\x12\xc4\x3f\x3c\x3b\x13\ +\x30\xdd\x2c\x6e\xd2\x6f\xa0\x28\x91\x3c\xdf\xa3\xe9\x90\x2f\x76\ +\xd0\x40\xc0\x7d\x70\x0b\xe1\x9a\xcc\xde\x59\xb1\x42\x18\xd5\x54\ +\x8b\x24\x35\x9a\x38\x48\xd7\xa0\x49\x90\x17\xd3\x62\x7e\x5f\xb1\ +\x39\x30\x07\x29\xd2\x4b\x69\x3e\xcb\x36\x73\xac\x60\x50\xcb\x9d\ +\xb4\xaa\x36\x10\xe4\x9b\xd5\x14\x96\x2f\x77\xb6\xd5\x85\x96\x1f\ +\xf0\xc3\xc1\x0e\xfa\x39\xf8\x81\xcf\xda\xad\x15\xad\x02\x91\x03\ +\xfb\x6b\x87\xf1\x9d\xf1\x76\x40\x74\xdc\x84\xb3\xfd\x27\xfa\x99\ +\x8c\xe9\x04\x1c\xae\xbf\xa1\xf9\x9f\xa5\x73\x3e\xdc\xf4\xf3\x3a\ +\x99\x63\x3e\x90\xef\xb4\x84\x03\xa1\x82\x4f\xcb\xc4\xd4\x1d\xd8\ +\x7a\x23\x73\x54\xaf\xa8\x83\x79\x10\x78\x4f\x84\x98\x47\x11\xc0\ +\xcb\xe8\x24\x89\xc2\x07\x6b\x01\x17\x3e\x1c\x8c\x84\x4f\x5a\xc3\ +\xd5\x44\xe8\x0c\x37\x52\x8c\x4e\xbd\x25\xd1\x66\xbe\x66\x58\xfd\ +\xa9\xb4\xf0\x11\x78\xa0\xc2\xf1\x0b\xb2\x88\x7f\x22\x5d\x5d\xdc\ +\x75\x12\x10\x2c\x1c\x08\x1c\xb1\x06\xc9\xfc\x5f\x9b\xaa\xa6\x76\ +\xb9\x5a\x67\x29\xb2\xc0\x25\x12\x7b\xf2\xdf\xf3\x62\x76\xcb\x2c\ +\xcf\x3e\xc0\x5a\xea\x8b\xa8\xa1\xfc\x10\xe9\x95\x90\x9b\x4c\x98\ +\x91\x2a\x3c\xe4\xca\xc2\x25\x64\x8f\x4b\x9e\x3c\xae\xd5\x3a\x99\ +\x51\xc9\xd3\x24\x71\x84\x25\xf1\xc1\xd5\x73\x88\xdd\x54\xf5\x39\ +\x65\x9f\x8f\x86\x0f\x7e\x99\xfe\xbb\xc8\x6b\xa4\x20\x69\x27\x88\ +\x53\xf5\x72\x02\x8e\xf9\x04\x59\x25\xe5\x22\xcd\x07\x75\xb1\x66\ +\xb8\x4a\x85\xd3\xa2\xae\x8b\x95\x54\x9e\xae\x92\x05\x9c\x80\x4d\ +\x99\xed\x4d\x0e\xbe\x54\xd5\x75\x8a\x14\x5e\x75\x50\xce\x0e\xfe\ +\x20\x5d\x32\x75\xfa\x72\x9d\x2f\x5e\xf8\xb0\x42\x34\xd7\xe9\x4c\ +\xe0\xb4\x84\x58\xe3\x9b\x48\x65\xf0\xa6\x36\xb1\x2a\x69\xe5\x08\ +\xa4\xfe\x66\x47\x0a\x0b\xe9\x15\x2a\xbc\x4a\xd7\x5d\x55\x18\xd5\ +\x60\x1c\x58\xd4\xac\xe1\xc3\x38\x94\x86\xd1\xa2\x20\xe4\xb2\x46\ +\xad\xfd\x84\xfe\xeb\xe0\x87\x12\xae\x90\xd8\xf0\xe2\x7d\x6c\x85\ +\x01\xb6\x27\xc8\x68\x4c\x0b\xd4\xc1\x37\x62\xd7\xea\x74\x8d\xb0\ +\xc3\xed\x0b\x2c\x9c\xf5\x3d\xe2\xd9\x18\x41\xc0\xed\xe7\x9b\x19\ +\xb1\x17\xc8\x6c\x21\xc9\x2d\x61\x3e\x23\x2e\x56\x89\xbc\x34\x64\ +\xa9\xf0\xe4\x41\x4d\x19\xab\x2e\xeb\xa4\xde\x54\x67\x49\xd9\x8d\ +\x59\x94\x55\x0d\xb0\xbf\x5c\xdc\x50\xe6\x9c\xe0\x65\x33\x19\x11\ +\x01\x88\x58\xe4\x1d\x56\xeb\x7b\xec\x53\xee\xbe\x1e\x8e\x0e\xf7\ +\xf1\xef\x21\x45\x5a\xea\xe4\xff\xf1\xd0\xc8\x54\x7e\xc0\x8e\x9c\ +\x93\xc6\x06\x54\x1d\x66\x1e\x1e\xf1\xb7\xd8\x3d\x3a\x43\xb8\xf6\ +\x31\x39\x04\xb0\x56\xf6\x51\xb1\xd7\x5c\xb7\x1e\xf1\x29\x5f\x6c\ +\x6a\xec\x10\x4d\x90\xbe\xcf\xa1\x32\x10\x54\x91\x89\x8a\xbc\x94\ +\x6b\xb2\x23\xae\x8d\x39\x56\x93\x9b\x62\x86\x96\x5a\xaa\x30\x52\ +\xa8\x72\x35\xd0\x8f\xb5\x57\x7a\x9e\x20\xb5\x88\x94\x60\x63\x7f\ +\x14\xad\x27\x48\x60\x0a\x7b\x78\xc2\x0b\xb8\xb6\xa4\x25\x0e\x90\ +\x93\x4d\xce\x9c\x5c\x06\xdc\xad\x25\x49\x3d\x24\x99\xd7\xa2\x89\ +\xa4\xbf\xbd\xa0\xa9\xf5\xda\x0f\xd5\x22\x2c\x0e\xd6\x62\xce\xb9\ +\x75\x28\xda\x12\x70\x4d\xba\x8c\x26\x43\x1b\xd4\x56\x3d\xf1\xb6\ +\x81\xce\x5a\x0f\x46\xdc\x50\xc4\x0c\x44\xcc\x30\xf4\x38\x08\x6d\ +\x86\x40\x1f\x80\xb6\xdc\x89\xe5\x3e\xfa\x0b\x22\xc5\xb9\x4a\xf3\ +\xa4\x86\xf1\x63\xa0\x34\x6b\xd3\xc5\x16\x12\xa5\xb4\xdf\x8a\x2e\ +\xef\x00\xab\x35\x7d\xe2\xa2\xd6\x54\x05\xa2\x35\x1d\x9a\x10\x60\ +\xe3\x42\x02\x4b\x7d\x19\x17\x01\x8c\xe2\x77\x83\x3c\xdd\xc1\x1d\ +\xd3\x8f\xd3\x22\x9b\x3b\xed\xba\xe9\xd8\x0f\xca\x64\x9e\x6e\x2a\ +\xd3\x78\x48\x25\xb2\xb3\x2c\xd4\xaf\x84\xc6\x64\x52\xa7\x75\xc6\ +\x25\xac\xda\x4c\x11\x7b\xea\xb2\xc8\x06\xc8\x0b\x47\x0d\x27\x0c\ +\xc0\x4f\xfa\xe7\x75\x51\xa5\x78\x5d\x87\x6c\x75\xb1\x06\xd8\x00\ +\xd0\x2a\xd4\x14\x8c\x75\x6b\xe6\x28\x2e\x35\x2f\x5a\x31\x89\xaf\ +\x5c\x26\xb1\x31\x23\x0d\x15\xbd\x59\xa6\x48\x90\x23\x4f\x7d\x8b\ +\xb9\xf1\xd7\xe2\xd3\xc0\x5f\xeb\x51\xcd\x8d\xad\xeb\x18\x22\x62\ +\x48\x78\x02\x55\xed\xeb\xb6\xbd\x66\xf3\xe8\x6a\xff\x10\xf5\x6b\ +\x96\xb1\xee\xf9\x0d\x4d\xf1\xe2\x6c\x83\x04\x3f\xef\xa2\x7e\xa8\ +\xee\x91\x81\x75\xf7\x6d\xf5\xb8\xc1\xe1\x4f\x8e\x71\xd5\x7c\xdf\ +\x07\x15\x93\x80\x3f\x2b\xd7\xec\x1e\xb8\x6a\x8b\x1c\x68\x15\xeb\ +\xf3\xb3\xcb\x50\xd2\x87\x9e\xc5\x81\x9f\x11\x86\x6e\x0a\xd2\x25\ +\x29\x30\x23\x46\xc2\xb4\xe2\xe8\x58\xd7\x8a\xb4\xc4\xdd\x79\x0b\ +\x97\x1d\x9b\xaa\xc2\xea\xaf\x87\x40\x0b\xf5\x13\xac\xc8\x75\x50\ +\xb0\x62\x48\x11\x59\x78\x17\x4d\x99\xa1\x9a\x1c\xd8\xa8\x8c\xeb\ +\x05\x87\x68\xde\x46\x72\x36\x92\xaf\x8f\xc8\xd5\xed\x78\xaa\xeb\ +\x89\x0e\x1d\x5b\x2c\x40\x50\xba\xa2\x8d\x80\x2e\x39\x76\x0b\xf0\ +\x0b\xcc\x37\x9d\x43\x59\xdc\x02\x70\x60\x51\xe1\x63\x35\x22\xec\ +\x70\x4b\x7d\xfa\xef\xa1\xe9\xd1\xaa\xe5\x87\x8e\xb8\x30\x6b\x42\ +\xc2\xfb\x06\xaa\x6a\x74\xc8\xe2\xf6\x1a\x20\xf4\xbd\x05\xd3\x4b\ +\xf6\x42\xf7\xec\xe0\x98\x5d\xa9\x93\xc0\xd2\x93\x7f\x3b\x28\x72\ +\xff\x42\x36\x30\x9a\x56\xd7\xcd\x8c\xfa\x41\x92\xa9\xce\x7b\x61\ +\xb2\x4c\x69\x03\xeb\xa0\xce\x8d\x7e\x83\x1e\x01\x67\xee\x74\x08\ +\x93\x64\x0e\x99\x75\xeb\xc1\xd6\x95\xba\x18\xd1\x97\x48\xe1\xd0\ +\x7d\x83\x1d\x9e\xc2\xca\xaa\xc0\xc2\x77\x02\xef\x48\x6b\xd7\x08\ +\xb4\x2c\x1a\x60\x84\x7f\xf1\x3f\xcc\xa9\x26\x89\x64\x13\x53\x06\ +\x68\x20\x91\xb0\xc1\xf2\x2b\x24\x4e\x06\x24\x91\x5b\xb1\xe1\xc6\ +\x00\x00\x16\x7a\x6d\xfa\xd7\x67\x83\x65\xd2\x36\xf5\x35\x37\x83\ +\xaf\x9f\x46\xc6\xfa\x69\x64\x25\xff\xa4\x91\x39\xa4\x7b\x07\xf0\ +\xdb\x2c\xdb\x54\x29\x42\xb8\x01\xfc\x86\x6e\x6d\x93\x40\x33\x3d\ +\xbb\xd2\x7c\xdb\xab\x20\x04\xbf\x9e\x12\x7a\x88\xe3\x8d\xe5\xa2\ +\xbe\xe0\x50\x5e\x34\xf2\x27\x6b\x62\xa5\xa7\xbe\xa2\x8a\x91\x9d\ +\xe8\xcc\xed\x1a\x98\xf3\x77\xdb\x43\x88\x2e\xaa\x83\x2d\xa8\xf2\ +\xda\x34\xbb\x1c\x10\x73\x08\xa6\xd4\xef\xee\x47\x14\xb6\x11\x03\ +\xb7\xa7\x1a\x01\x3d\x9e\x53\x61\xe3\xef\xe9\xaf\x1d\x2d\x6d\x28\ +\xd9\x92\x8e\x20\x15\x44\x8f\x0e\x92\xb2\x2c\xee\x34\xc5\x29\x56\ +\x1d\x9e\x3e\x70\xe3\x6b\xd2\x98\x00\xe6\x66\xec\x74\x8a\x8f\xb1\ +\xcc\xea\xf7\x48\xad\xfd\x91\xc2\x6d\x77\xef\xa9\xec\x18\xc0\x28\ +\x9a\x49\x56\xc3\x12\x47\x06\xad\x47\x1d\x02\x8b\xbf\x2d\xc2\x78\ +\x0f\x36\x54\x7e\xfd\x80\xfc\xd7\x8b\x79\x5a\xeb\xc6\x63\x24\x19\ +\x75\xde\xea\x72\x56\x16\x59\x76\x5a\xc2\x64\x2b\x7e\xa8\xdc\x90\ +\x80\x45\x2d\x81\x7b\x0b\x5c\xda\x7c\x49\x13\x29\xdd\xd9\xb6\x6c\ +\x5f\x91\x0d\xe1\x6e\x2c\x51\x59\x23\x01\xe3\xd1\x81\xf6\x7b\x6d\ +\x0a\x62\x7d\xed\x54\x73\x60\xe6\x19\x0a\x35\xce\x29\x4f\x3f\x24\ +\x41\xa4\x54\xfc\xd1\x69\x1c\xfd\x14\x4b\x18\x4e\x96\x49\x3e\xcf\ +\xa0\x89\xa9\x05\x82\x2d\x80\xd3\x12\xaf\x15\x72\xe5\x98\xf3\x42\ +\xc2\xca\x41\x6c\xda\x9c\x2a\xf2\x2c\x67\xda\xe0\xa4\xa1\x84\x66\ +\xc4\x80\x2c\x5b\x0d\x16\x49\x2e\xa7\xfc\xaf\xd2\x5b\x94\x32\xd5\ +\xd5\xb5\xec\xe2\x1d\x1a\x2e\x9e\x28\xb1\x6e\x03\x10\xb0\xc6\x77\ +\x7d\x17\x41\xa3\x11\xd5\x8c\xa0\x71\xcc\x68\x1c\x47\xd3\x88\x9d\ +\x4f\x37\x89\x26\x45\x06\xd1\x56\x12\x9b\x5d\x8e\x78\x0a\x2d\xa3\ +\x28\xc2\x2e\x81\x6a\x4d\x90\xb6\xc5\x90\xf6\x40\x66\x5f\x23\x69\ +\xa3\xd3\x56\x2d\x9e\xce\x66\x58\xbf\xd3\x68\x6e\xd6\xd4\x85\x91\ +\xd0\x57\xe9\x9b\x17\x77\xb9\x51\xc5\x12\xc2\x68\xc2\xba\x9a\x10\ +\xac\x31\xed\x2e\xe8\x98\x7b\x5a\x85\x48\xd8\xda\xf1\xb5\x80\x11\ +\x37\xb6\xc9\xf8\x6c\x54\x0c\x85\x37\x2c\x14\xe3\xe6\x98\xfa\x37\ +\x8c\x66\x0b\x5b\x80\xf5\x2b\x17\x8e\x57\x9a\xea\x68\x81\xcb\x13\ +\x59\x02\x05\x53\xe7\xec\xd2\x18\xc4\xc7\x45\xd2\x90\x2d\x2c\xc1\ +\x66\xdd\xbf\x8e\xac\x8b\xf5\xd6\x2a\xb2\x57\xe2\xf0\x4c\xec\x9f\ +\x3c\x1a\x4c\xdb\x5a\x39\xaa\x32\xe5\x50\x8d\xa2\x52\xbc\x62\xe4\ +\x23\xf9\x5f\x32\x80\x5e\x0b\xb7\x05\x79\xcd\x58\x7e\xb7\x21\x14\ +\x9a\x9f\xa3\xef\xd4\xfb\x4e\x1d\x16\xd2\xfa\x76\xc8\x42\xe7\xc7\ +\xc0\x25\xe7\x84\xe1\xb7\x1a\x2f\x15\x3b\x2d\x28\xc4\x39\x61\x06\ +\x6c\xfb\xfd\x4f\x8f\x92\x7e\x90\x3a\x50\xb5\xac\x5f\x8d\xda\x96\ +\x86\x02\x8e\x33\x8f\x40\xcb\x94\x70\xa4\x02\x7c\xce\x92\x34\x17\ +\x54\x77\xe4\x9e\x0a\xac\x23\x0b\x2d\x8b\x2d\x3f\x6b\x95\xde\xbb\ +\xf2\x57\x05\xd6\x91\xc9\x97\xe9\xbf\xe1\xcf\x65\x5f\x67\xd9\x05\ +\xb4\x50\xa8\xaa\x42\x15\x17\xa8\xa2\x65\xb5\xe3\x08\x68\x37\xe7\ +\xc9\x71\x74\xab\x6b\x0e\x91\x38\x4f\x2e\x01\x33\x37\x03\x5a\xb8\ +\x54\xd6\x8d\x38\x29\x5d\xa0\xb7\x6d\x43\x0e\xcc\x29\xc2\x16\x77\ +\x4f\x9c\xd6\xb2\xef\x15\x9a\x9b\x8b\x96\xa3\x70\x0f\x52\xdf\xf4\ +\x0f\x12\x1d\x0e\xa2\x21\xb5\x73\x47\x1a\xd8\xd8\x0b\x27\xd7\x93\ +\x95\x81\x4f\xc8\x9b\x99\x22\x7a\x0f\x8e\x1c\x91\x88\x0e\xfe\x08\ +\x74\x10\xce\x8e\x19\x47\x50\xe1\x48\x78\xb1\xf4\xe2\xa0\x24\xa2\ +\x13\x57\x56\x4d\x33\x78\xbb\x5f\xea\x6b\xf6\xfd\x1a\xe9\x93\xeb\ +\xa9\xfd\x3c\x92\x2b\x95\xc9\x97\x26\xd7\x66\x85\xac\x07\x4d\xd7\ +\x69\xde\xe1\x88\xa7\x16\x34\x65\xc0\xfa\x88\x98\xfa\x36\x32\x45\ +\x0a\x14\x2e\x04\x3c\xf5\x0c\x27\x6f\x20\x27\x68\xbc\x0f\x86\xc3\ +\x21\x4b\xda\xd0\x37\x83\x69\xa3\x98\x16\xda\x66\xa9\x76\x72\xf3\ +\xc8\xb7\xae\x62\x48\x49\x71\x2e\x1c\xeb\x07\x34\xe1\x64\x4e\x13\ +\xa4\xd1\x52\xf2\xf0\x35\xdf\xa4\xd4\xf8\x87\x9d\x2e\x87\x74\x58\ +\x12\x45\xb4\xec\x36\xd3\xb3\xa3\x28\xfa\x5d\x5f\x39\xf8\xc1\x48\ +\xa2\x0c\x70\xad\x31\xf9\xc2\x58\x0f\xdd\x73\x12\x84\xe3\xb8\xef\ +\xf9\x26\xe2\xc6\xde\x4a\xc5\xcd\x4d\xd0\xc4\xf9\x96\x74\x6c\x0c\ +\x5e\xeb\xa6\xee\x75\x10\x77\xc5\x79\x88\x5e\x85\xd8\x40\x12\x3f\ +\xf9\x29\xc7\x94\x0a\x7c\xff\xc3\xda\x38\xfc\xb6\x31\x93\x96\x03\ +\xbe\xa1\x95\xaa\xc5\x0c\xae\x7f\x49\xdb\x7e\x78\x95\x60\x55\xcc\ +\x00\x1b\xeb\x30\x1b\x58\x02\x6a\x6b\x3f\x53\x87\xd6\xcd\xd3\xec\ +\xe8\xfc\x28\xea\x1d\x81\x3b\x7f\x7f\xf9\xf9\xc3\xe9\xdf\x2f\xfb\ +\x70\xaa\x7a\xc6\x8e\x18\x33\x9a\x54\xd7\x0f\xbc\x40\x86\xde\x56\ +\x39\xee\xda\xe1\x1a\xa7\x35\x27\x92\x40\xfa\x9f\xb4\x3c\xf3\x1b\ +\x79\x00\x49\xdb\x1e\xc4\xeb\x9a\x33\x24\xd5\x15\xec\xe4\x2f\x37\ +\x4b\x66\x0e\xec\xb1\x1c\x00\x57\x14\x53\xea\x7b\x4b\xc6\x05\x90\ +\x30\xc3\xaf\x7e\x24\x78\x20\x48\x2e\x7b\x66\x2b\x14\x13\x5d\x2f\ +\xb7\x9f\x2a\xb5\x2f\x79\x69\xb2\x4e\xb2\x5e\xa6\xb3\xaa\xc3\x79\ +\x80\x41\x93\xab\x23\xc1\x7a\xea\xb1\x94\x3b\xff\x7e\x83\xa9\x60\ +\xd1\x24\x82\x48\x85\xcf\xac\xa5\xf2\x78\xaa\x1f\xda\x0e\xe8\xdb\ +\x24\x83\xf9\x3c\x29\x3b\xae\xbe\x59\x6a\xaf\x0a\x2c\x88\x83\x8f\ +\x35\x2a\xac\xee\x79\xb6\x44\x83\xbf\x3d\xff\x48\xee\x41\xe9\xe3\ +\x3c\x40\x03\x6c\xab\xd0\xd3\x83\x0c\xa2\x1f\xf2\x3e\x97\xc5\x02\ +\x0f\x7f\xc7\xc0\x04\x8b\xae\x49\xc0\x9e\x72\x72\xe2\x72\x7c\x41\ +\xd0\x20\xc9\xd2\x05\x32\x62\x33\xe4\xa8\x62\x1f\xf4\x41\xc5\xe9\ +\xfb\xcc\xd9\x58\xe4\x26\xb3\xe5\x26\xbf\xf5\xed\x6a\x99\xbe\x95\ +\x89\xae\x39\x29\xcc\x3e\x62\xf8\x20\xdd\x18\xd3\x42\x39\x3d\x82\ +\x87\x77\xf6\xfb\xd5\xd5\xa7\x8f\x9d\x1d\xbc\x47\xf3\xf0\x3e\x6f\ +\xaa\x65\xf7\x6c\x30\x3e\x81\x1a\x60\xce\xa1\x61\x37\x59\xf5\x3e\ +\x81\x84\x4f\x28\x62\x4a\x96\x44\xac\x06\xc1\x08\x21\x0a\x84\x47\ +\xb7\x9d\x4c\x2a\xa2\x58\xea\x64\xb4\xb4\x2c\x9e\x4e\x58\xf5\xc5\ +\x2a\x47\x1e\xca\xd3\xe9\x9f\xb6\x08\x4f\xf0\x4d\x66\x03\xfd\xac\ +\xb9\x65\xb5\xcf\x00\xb7\x5c\xee\x6b\xf7\x68\x48\x1d\x6b\xae\x48\ +\x6b\x06\xc9\x47\xdb\x24\xb0\xdc\x21\xb2\x8c\x49\xb7\xc5\xb1\x89\ +\x7a\x10\x60\x73\x65\x96\xd4\x58\xf2\xcd\x2c\x38\xf2\xaf\x5b\xad\ +\xb8\xa5\x40\x6f\x0f\x1a\x4a\x02\x16\x11\x2d\xea\x34\xcb\x5c\x79\ +\x1c\x52\xee\x47\x83\x4d\x78\xde\xb7\x90\x1c\x09\x6c\x5f\x02\xa9\ +\xc3\xd5\x55\x41\x60\x4f\xb6\x69\x28\x96\x6a\x06\xe9\x91\xa2\xfc\ +\x60\xa3\x2f\x5e\x6a\x91\x44\x91\x1b\xd4\xc4\x5c\xaf\xf0\x7d\x98\ +\xc5\x1d\x40\x03\x4e\x2f\x77\x2c\xf2\xec\x9e\x5f\xac\x46\x52\xb1\ +\x48\x4f\x9f\x8b\xf5\x66\x0d\x56\xc5\x1c\xea\x82\xf4\x8f\x35\xfe\ +\xf4\x0b\xfa\xf2\xe6\xf9\xf0\xf9\x3f\xad\x07\xaa\xa5\x12\x1e\xe8\ +\x1e\xca\x61\x76\xd2\x27\xce\xb6\xd1\x3b\x64\xb1\x73\x37\x7f\x69\ +\x7b\x7c\x55\x28\xb8\x4b\x28\x0c\x72\x47\x2b\x69\xcd\xe2\xa2\x0a\ +\x10\xc3\xe9\x21\x31\x7b\x99\x23\x8c\x21\x69\x65\xf2\xe3\x7d\x5e\ +\xd5\x49\x5e\x53\xdc\x50\x57\xe7\x30\x4b\xee\xe1\x3c\x8e\x39\xa3\ +\x6d\x98\xa3\x70\x47\xe9\x3e\x86\x35\x51\xbc\xd1\x24\x94\x1a\x0f\ +\x25\xa4\xec\xca\x5b\x6c\xb5\x83\x2e\x35\xab\x8b\x35\xa5\xd4\x05\ +\x80\x6d\xab\xb8\x2a\x21\xaa\xc8\x79\x39\x12\xa1\x05\xff\x43\x12\ +\xbd\x30\x75\x2c\x43\xeb\x0d\x18\xe1\x70\x55\x92\x65\xc5\x8c\x5c\ +\x40\x9b\x4c\xf1\x85\x5c\x8c\x61\xc6\x59\x3c\x8b\x2d\x75\xb0\xc3\ +\x36\x7b\x95\xef\xca\x54\x0e\x9f\x0d\xb0\x76\xa5\x9b\xed\x96\xa7\ +\x78\xc8\x16\xd6\xe0\x95\x34\xb9\xaa\x65\x7a\x53\x83\xb4\xc6\x97\ +\x8e\xa2\xdf\x8c\x0d\x34\x5c\x3f\x38\x62\x15\xad\xf5\xac\xf8\xc9\ +\x29\x27\x2d\x23\xdb\x76\x58\x93\x62\x0d\xf3\x28\x45\x4a\xa2\x17\ +\xc5\x6a\x95\xe4\xf3\x0f\x69\x7e\xdb\xc5\x2a\xb2\xe8\x85\x01\xac\ +\x2f\xab\xb8\x95\xeb\x7e\x68\xb5\x9d\x0f\x36\x44\xc3\xce\xa8\x81\ +\xb1\x3d\x84\xd0\xc5\xa7\xd0\x19\x8a\xc0\xbd\xff\xf8\xf9\xf7\x2b\ +\xb4\xdc\x03\x1f\x3f\x81\x77\xef\x2f\x3e\x9c\x6f\xb9\xf4\x7b\xac\ +\xf5\xde\x5b\x7c\x09\xdf\xb4\x97\xab\x87\x28\x2c\x69\x5b\x7a\x3b\ +\x3f\x29\xfa\x2a\xda\x96\x1b\xc8\xf2\x19\xd8\xe1\xcb\x63\xb8\xa2\ +\xfb\xd3\x80\xec\x11\xef\x92\xcd\xe9\xdd\xe1\x70\x48\xad\x0c\x53\ +\x0a\xe8\xbb\x7d\x2b\x5c\xdb\x62\xde\x1d\x8e\x47\x96\x36\xea\x66\ +\xb8\xbf\x8d\xb4\x89\xfd\xe3\xb1\xb0\x76\x46\x9b\x66\x2f\x5b\x70\ +\xdb\x95\x58\xe6\xf2\xee\xe6\x9d\x4c\x96\x79\xe1\xae\xbc\xa8\xf0\ +\x0e\x9e\xec\x02\x72\xec\xfb\xb8\x3d\x90\x83\x8a\x75\x18\xa5\x26\ +\x42\xc3\xf9\xa5\x4e\x39\xf9\xf4\x11\xc2\x39\x1d\x12\x76\xb3\x65\ +\x63\xa1\x06\xca\xc8\x36\xdd\x98\xd7\xa9\xe8\x9d\x18\xda\xc9\x83\ +\x90\x43\x93\x79\x40\x58\x2a\x74\xa0\x05\xe7\x78\x8b\xac\x45\xeb\ +\xbe\xa9\xb4\xf8\xd0\xda\xa9\xeb\x1a\xc7\x89\x2c\xad\x8d\xbe\x45\ +\x6b\x6c\xc1\xe9\x84\x49\x00\xe6\x25\xf2\xad\xb0\xf1\xed\xb2\xe8\ +\xd7\xce\x6d\xf0\xeb\x6c\xf4\xb3\xe2\x58\x11\xf1\x39\x6c\xfd\xe6\ +\x39\xcc\x46\xbe\x93\x9c\xe4\x09\x25\x2a\xe0\x20\xea\xa9\x4a\x56\ +\x07\x71\x2c\x99\x4b\xce\x0f\xb1\x25\xdf\xe1\x34\x80\x0b\x24\x9a\ +\x4e\xfb\x8e\x2f\xe2\x7a\x3d\xdb\x47\xf9\xea\x8e\x76\x2e\x14\x39\ +\x3c\x89\xb8\xd5\x75\x3f\x63\x20\x0e\x4f\x12\x60\x6e\xad\xa4\xe7\ +\x1b\xd2\xea\xfe\x1b\xa6\x58\xa5\x09\x82\x80\xb8\xe0\xcf\xad\x69\ +\x13\xcf\xe3\xd6\xcc\x1d\x62\x70\x26\xa3\x30\x8c\xe2\xf2\x7d\x14\ +\xab\xfb\x3d\x70\xf2\x0f\x07\x8b\xed\xcb\x30\xc2\xb9\x9f\xed\x32\ +\x7d\xe4\x2c\x4a\x99\xca\x57\x3a\x95\x78\xa1\x01\x02\xfb\xae\x4e\ +\x24\x1d\x89\x40\xf1\x29\x40\x16\x61\xf3\x1c\xea\x6f\x23\x6a\x8c\ +\x01\x3d\x8c\xaa\x0f\xa1\x16\x72\xd6\x3f\x42\xdb\x0a\x99\x8f\xa0\ +\xc7\x10\xb1\x43\xba\x9a\x6d\x23\x62\x81\x4c\xb3\x56\x02\x46\x36\ +\x91\xf1\xcb\x1b\x5d\xf5\xad\xd8\x44\x56\x6f\x1e\x08\x38\x80\xfe\ +\x93\xa9\x0d\x30\xe5\xc4\x29\x77\xb3\xfd\x87\x54\x23\x1b\xb7\x3b\ +\xaf\xea\x32\xe9\xad\x97\x45\xd6\xcd\x73\x86\x70\x0f\x4e\xb4\x00\ +\xd5\x6d\x03\x41\x80\xe9\x18\xe3\x4f\xa6\x7f\xa6\xdd\x9f\x53\x61\ +\xd1\x47\x0c\xcc\x96\x0b\x21\xa2\x77\xb1\xab\x16\x19\x96\x76\x33\ +\x03\x00\x5c\x10\x11\x74\x70\x97\xe4\xd8\x5f\xa5\x0c\xac\x98\x23\ +\x7d\x34\xc4\x2b\xcc\xd1\x09\xf9\x3d\x26\x4e\xb5\x04\xee\x5d\x89\ +\x1f\x7c\x8a\x0b\x9f\x37\xad\x94\x33\x74\xce\xa3\x69\x18\x2d\xf2\ +\xb0\x11\x40\x15\x52\xbc\x9e\xbc\x29\x8b\x15\xfa\x85\xba\xdc\xe7\ +\x9e\x3f\x0b\x16\x62\x3c\x45\xac\x8b\x77\x34\x99\xac\x93\x3c\x02\ +\x3b\x9f\x00\x2b\x51\x1d\xa0\xfe\x20\xfc\xe8\x15\xfc\xf3\x62\x83\ +\xe4\x98\xe3\x92\xe6\x15\xd2\x63\x80\xf4\x7d\x87\xe6\xe5\xfa\xfe\ +\x4b\x7d\xcc\xe7\xa3\x11\x13\xd2\xb0\x8d\x78\xf0\x25\x94\xf0\xa2\ +\x6c\x13\x60\xf8\x3d\xe4\xbb\x34\x42\xd9\x1c\x2b\xf9\xb2\x46\xab\ +\x14\xa4\xa3\xef\x07\xf3\x32\xb9\x3b\x4b\x2a\x38\xf1\x39\x11\x56\ +\x7b\xe7\xbe\x4b\x0f\x41\xe2\x41\x06\xaa\xbb\x48\x78\x81\x8c\x39\ +\x5a\xf7\xe1\x08\x38\xd1\x5d\x60\x7a\x8f\xbf\xa0\x75\x1f\x0f\x3a\ +\xf0\x87\x1a\x18\xc3\x1f\x04\xda\x93\xc9\x2c\x2b\x2a\xa8\x9d\xb3\ +\x6e\xba\x93\x11\xd4\x43\xfa\xa2\x82\xe7\x8e\x27\x0c\x5c\x0e\x93\ +\x5a\x3a\x8d\x3c\x50\x4c\x9b\x90\xba\x21\x80\xd1\xd7\x7a\x93\x46\ +\xac\xb6\xf6\x82\x0a\x83\x5b\x27\x53\xc4\x46\x21\x7f\x1d\x04\x84\ +\xc0\x9a\x60\x63\xc7\xa1\xd9\xb7\xda\x84\x49\x1b\xcb\xe2\x1b\x38\ +\xf4\x12\x48\x6f\x92\x10\x60\xd0\x03\x38\x10\x9b\xfc\x38\x08\x10\ +\xc1\x0d\x74\x2f\xae\x00\x7f\x84\xfe\xa9\x75\x0f\x20\x50\x8a\x24\ +\xa6\x7e\x30\x30\x45\xea\x99\x90\x29\xfc\xe8\x9f\xc0\x62\x5b\x99\ +\x7a\xb6\x85\x50\x85\xee\x3f\xf6\xdf\xcf\x63\x11\xaa\x10\x12\x86\ +\x54\xf5\x87\x01\x91\x98\x50\xff\x96\x51\xed\x0f\x03\x0a\x3c\x84\ +\x82\x29\xd9\x9d\x30\x78\x6c\x55\xf5\xcc\x1a\xb0\x93\xbd\x6e\x1b\ +\x1d\xc6\xab\x5b\x21\x79\xb1\x88\x89\x1f\xb4\x24\xce\x21\x59\xb0\ +\xf1\xdf\x0f\x5c\xbf\xc7\xd3\x33\xca\x56\xf9\xf2\x43\x57\xdf\x04\ +\x30\x58\x1e\xe7\xe2\x78\x2e\x77\xd5\xee\x26\x6d\xb9\xd6\x31\x16\ +\x65\xce\xd5\x16\xed\x53\xcd\xd7\x0b\x68\x1c\xc7\x7e\x39\x09\x98\ +\xba\xa2\xa1\x8e\x78\xa9\x3e\x2e\xb2\x5d\x0d\x9d\x50\x74\xb3\xd0\ +\x67\x81\xf5\x78\x46\xaf\xa8\x37\x6a\xa3\x45\xee\xbd\x0f\xdb\xa6\ +\x96\xba\x05\x6b\x9f\x89\xac\x3f\x0f\x4b\x74\xd5\x1d\xb8\x88\xd8\ +\x4c\x90\x7b\x5a\xb9\x54\x43\xe9\xde\x51\x72\x87\xdb\x6d\x02\x1e\ +\x70\xa7\x7c\x8c\x8c\x79\xff\xd0\xe2\x78\x19\x72\xd7\x8d\xa8\xa0\ +\xe9\x6e\x2f\x80\x26\xce\xb1\xd2\x87\x69\x68\xc7\x32\x8b\x60\xd9\ +\x45\xc2\x21\x6e\xfa\xf3\x8a\x2d\x1e\x56\x0b\xcf\xec\x56\x52\xa5\ +\x3c\x0b\xe9\x75\x92\x3b\x0b\x95\xc5\x9d\xb6\x6a\xb3\x2e\xfb\x52\ +\x1e\x67\xac\xbd\x44\x59\x10\x8e\x15\x29\xba\x00\xfe\x3f\x2a\x53\ +\x31\x73\xda\x5e\x27\x28\x51\xea\xb2\xa7\xb3\x48\xd9\x16\x48\xed\ +\x2d\xa4\x93\xa4\x90\x73\xdd\x5e\xa4\x6c\x08\x87\x65\x0a\x28\x07\ +\xbb\xa4\x8b\x89\x27\x30\x8f\x7c\xb8\xc1\x76\x9b\x84\x15\x3a\xe1\ +\x42\x3b\xe0\xc6\x25\x87\x31\x98\xc7\xbf\x39\xe1\xbe\xfd\x33\x82\ +\x86\xe8\x6e\xdc\x17\x70\xda\x7b\x09\x39\xc8\x80\xfe\x88\x40\xe4\ +\xee\x70\x7c\xe2\x3c\x21\x69\x3c\xea\x85\x57\x54\xe7\xc5\xec\xb6\ +\x87\xa0\x35\x5d\x52\x51\x60\x52\xd0\x5a\x1c\xca\x0c\xbe\x0a\xdb\ +\xe7\xad\xc9\xe4\xe9\xb6\x69\x52\x0e\x68\xd0\x0b\x73\x3f\x18\xb1\ +\x53\xda\xd1\x87\xe8\xdd\x0d\x11\xbe\x88\x52\x69\xe4\x1a\xc2\xd5\ +\x87\xe3\xc4\x5c\x3b\xa1\xd1\x63\xc4\x71\xfa\xf2\x2b\xc0\x97\x2e\ +\xd1\xb3\xbc\xa4\x3a\xea\x55\x3f\x0a\x2c\x3d\x7a\xe4\x8f\xf8\xc8\ +\x9d\xdb\x22\x9c\x51\xd7\x12\x39\x0f\x54\x35\x07\x02\x5c\xfd\x84\ +\x34\x54\x0c\xae\xad\xd2\x5f\x15\x28\x37\x59\x91\xd4\x4f\x40\xb1\ +\xdc\xcf\xb6\x14\x2b\x30\xda\x50\x4c\x83\x1f\x25\x84\xf4\xda\xf3\ +\x2b\xac\x39\xf8\x0d\xe8\x55\xdd\x2e\xa7\x9b\x45\x3f\x18\xb0\xc9\ +\xb4\x4c\xf2\xd9\x52\xc9\x33\xd7\x3e\xb9\xb6\x5f\x2d\x13\x43\x3a\ +\xd2\x24\xeb\x35\x0e\x50\x40\x4c\xaa\x41\x95\x4e\x91\x6a\x58\x54\ +\x93\x67\xc9\xfc\x5f\x45\x9a\x57\x03\xf9\x59\x1b\x3a\x44\x6e\x45\ +\xba\x4d\x47\x8f\xd8\xcf\x33\xdc\xd1\x6c\x99\x66\x73\x54\x93\xfe\ +\xd7\x53\x74\xeb\xe9\x95\x4c\x2e\x65\x34\x79\x23\xfa\x45\x6d\x2b\ +\x37\x0d\x1a\x31\x0a\xe7\x9a\xc2\xf1\xa1\x87\x4f\x84\x7b\x70\xb4\ +\x21\x67\x36\xd9\x06\x35\x0c\xa5\x13\xdf\x9a\x14\x81\xb6\xdc\x8b\ +\xdc\xe1\x51\x78\x38\x28\xbc\xd8\x06\xd8\xe8\xc6\xd5\xcf\xcc\x76\ +\x98\x62\x58\x2a\x9e\x5c\xf3\xb0\xe3\x8e\x9a\xc3\xaa\xe0\xe3\xaa\ +\xc0\xd5\x98\xb3\xc6\xdb\x22\xdb\xac\x72\x77\x15\xdd\xcd\xd0\x33\ +\xb3\x65\xdf\xd8\x6f\x44\x35\x6a\x42\xc4\x04\x69\x09\x93\x62\x77\ +\xf0\x03\x47\x0e\xb4\x98\x7c\x83\x94\xfe\xd8\xdb\xbe\x42\x52\x9f\ +\xaf\x57\xdb\x3a\x15\xef\xb5\x38\xba\xed\xe9\xb5\x21\x0f\xbd\xb6\ +\x81\x72\xbe\xd8\xe7\xab\xc3\xcc\xb2\x9f\x7f\xa2\x37\x5f\x1d\xde\ +\x9b\xaf\x4e\xeb\x57\x99\x5d\x4f\xff\x79\x47\xc5\xcb\x1c\xf3\xa1\ +\x48\x7f\x2d\x3f\x83\xcc\x3e\xfd\xb5\x7c\x4c\x72\xbd\x4c\xd9\xe9\ +\x45\x5f\x1b\x71\xf6\x37\xb5\xc3\x35\x7d\x0c\xb3\xbe\xbe\xed\x20\ +\xd4\xde\x7f\xb8\xa6\x8f\x79\x8f\xf9\xfa\x77\x98\xe0\x18\xa4\xb6\ +\x44\xc6\x62\x82\xa4\x21\x90\x55\xb1\xa2\x75\xe3\x0e\x99\x6d\x91\ +\x0f\xb6\x28\xd3\x39\xb6\x3e\xd1\x6b\x0d\xc5\xdc\x48\xf7\xe0\x09\ +\xa6\xca\x65\xc2\xac\x48\x85\x92\x29\xe9\xe3\x08\x1d\xc3\xc4\xb6\ +\x02\x90\xcb\x04\x26\x52\xa1\x84\x49\x87\x1b\xe9\x1a\x1c\xcc\xa9\ +\x67\xb1\xaf\x36\x8b\x1a\x7a\x8c\x20\x90\x1f\x2e\x9d\x44\xd6\x1c\ +\x81\x66\xe2\x6a\x1e\x80\xf4\x41\x33\xfd\xcd\x17\xc3\xe6\x87\x13\ +\xd9\xa5\x9b\x09\x5c\x2e\x49\x32\xab\xd3\xaf\xd0\xe3\x93\x34\x15\ +\x5c\x4e\x89\xa8\xe1\xf6\x4a\x68\x95\x38\x4c\x49\x3f\x6f\x8b\x32\ +\x87\x25\x8f\x8e\x55\xec\xb9\xc5\xd6\x43\x62\x7b\xd4\xd1\x36\x95\ +\xe4\x77\x3b\xff\x06\x13\xf4\xa9\xdb\xd5\x66\x62\x65\x2c\x01\x6b\ +\x11\x4e\xa0\x07\x18\x9d\xc8\x07\x92\x43\x3d\xf4\x49\xf8\x74\xb8\ +\xed\x25\x8c\xd8\xc8\xd2\x5f\x78\x14\x23\xaf\xe4\x75\xe7\x9c\x0b\ +\xf2\xe5\xdb\x99\xe8\x1b\x34\x0e\x64\x34\x1f\x36\x32\xae\x2f\x8b\ +\xab\x07\x68\xe8\xe1\x34\x27\xf4\xe6\xa0\xbd\x0d\xba\x2d\x2b\x64\ +\xdf\x51\xd5\x75\xb2\xdf\xa6\xbc\xfd\x00\x26\x37\x69\x59\xd5\xc1\ +\x7e\x26\xf8\x66\x02\xb4\xb6\x53\x4f\xca\xd2\x2d\x1d\x47\x50\xcb\ +\x0b\xd0\x0f\x46\x5e\xbf\x84\x58\xe5\x27\x40\xae\x68\x27\xc1\x79\ +\x99\x6d\x44\xe7\x01\x48\xea\xc1\xa4\xab\x25\x5a\xc7\x83\x0a\xd6\ +\x35\x09\x53\xec\xd1\x56\x07\x24\x04\x7f\x40\xe3\xee\x07\xba\xd8\ +\xbc\xc0\xa0\xf0\x09\xe6\xcd\x82\xa5\x49\xcb\x93\x94\x26\xbb\x35\ +\x6d\xc8\xd1\x39\x12\x34\xd6\x94\x94\x25\x39\x2e\x30\x4f\x03\x1b\ +\x03\xf2\x24\x65\xe5\xf6\x43\x3e\x2d\xaf\x0d\x90\x51\xe6\x37\x28\ +\xff\xb7\x20\x6c\x5e\xd1\x2c\xee\xec\xe9\x25\xc9\x7c\x47\xc0\xfa\ +\xcb\x61\x0e\x62\xee\x9e\xc1\xf9\x87\xae\x37\xbb\x0d\x40\x23\x73\ +\xbb\x52\x01\x84\x8f\xd0\x3d\x96\x4b\xec\xda\x13\x0d\x9f\x2d\x68\ +\x6e\x4b\x95\xf0\x8c\xd1\x84\x4a\xfd\x76\xa7\xa3\x3c\x07\xfd\x1c\ +\x8c\x33\x0f\xc5\xb5\x7a\xfa\x61\x14\x18\x63\x99\x84\xad\x6c\xbe\ +\x9d\x96\xc6\x44\xd9\x69\x69\xf7\x4c\xa7\x0a\xc4\xdc\x10\xf1\x3c\ +\x04\x66\x47\x4f\xbb\x4c\x05\x5f\x11\xe0\x7e\x52\xd4\x2d\xfe\xc1\ +\x33\xa4\x34\x65\xa5\xdb\x9c\x16\xd3\xda\xcc\x7f\x69\xfd\x1e\x0d\ +\x01\xf1\x0f\x92\xd5\x72\xb9\x4c\xd6\xf0\xcd\xf3\x43\x71\xc5\x50\ +\x0c\x48\xab\x6b\xd7\x00\xa6\xba\xf2\xcd\xf3\xf1\xf3\x7f\xee\xf3\ +\x32\xa2\x50\x49\x51\xd4\x50\x93\x74\xe5\x75\x96\x92\x8d\xcb\x3e\ +\xb8\x26\x80\x45\xc9\x34\x7e\xc5\x5d\x4e\xc1\xd0\x53\x32\x84\x27\ +\xcd\xb2\x08\x19\x70\xe9\xe1\x8e\x96\x8e\xbc\xcd\x76\x38\x91\x18\ +\x1a\x0e\xbd\x13\x8d\xd0\x2a\x55\xd6\x67\xf6\xe6\xf6\x47\x4e\x22\ +\x9e\x8a\x76\xbd\x3f\x62\xeb\xc6\xf1\xca\x49\x44\x2f\x8e\xa7\x54\ +\xe8\x41\x83\xa4\x86\xdd\xdf\xdf\x62\xe7\x0c\x18\x2c\x86\x61\xf4\ +\xdd\x2b\x7d\x67\x37\x46\x3c\x38\xd2\x5c\xd1\x12\xff\xe4\x88\xb3\ +\x4d\x8b\x3b\x63\x94\x47\xdf\x1e\x24\x9e\xc5\x5e\x1e\x22\x99\x3e\ +\xd1\xf4\x49\xef\xa5\xe8\x7a\x4a\x4f\xc2\xba\xaf\xdb\x23\x6c\x20\ +\xe9\xed\x11\xd6\x2f\x3c\x50\x65\xfd\xb8\xfd\xed\x11\x8d\xf8\xb7\ +\xbd\x43\xc7\x73\x49\x71\xc4\x2c\x88\x96\x17\x8e\x55\x13\xd2\x73\ +\x9e\x71\x88\x7d\xf7\xa2\x6b\x88\x71\xe7\x73\x56\xd4\x6e\xd7\x01\ +\xcf\x3f\x76\x59\xd1\x6c\x53\xd3\xac\xd3\x0a\x5f\x17\xb8\x46\xcd\ +\xc8\xb1\xaa\x23\x9a\x5d\xfa\x1f\xa9\x64\xb9\x34\ +\x00\x00\x02\xe1\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x93\x49\x44\x41\x54\x58\x85\xed\ +\x96\x3f\x4f\x14\x51\x14\xc5\x7f\x67\x42\x18\xb6\xb5\x52\x3e\x80\ +\xc5\x36\x4a\x25\x95\x76\x52\x80\x62\xe8\xb4\xd3\x44\x8a\xad\xa4\ +\x9a\x19\x20\x66\x4c\xc4\x99\xa5\xa1\x92\x68\x4c\xb4\xd3\x0e\xff\ +\x00\x85\x5a\x69\xa5\x95\x6e\x21\x89\x5f\x00\xad\x6c\x97\xd9\x98\ +\x77\x2d\xf6\x0d\xac\x09\xbb\xb8\x80\x36\xee\xe9\xde\xbc\xfb\xde\ +\x3d\xf7\xce\x7d\xe7\x5e\x18\x60\x80\xff\x1d\xea\xc7\x38\x4d\xd3\ +\xa1\xa2\x28\xa6\xcc\x6c\x06\x38\x07\x8c\xfa\xad\x6d\xe0\xa3\xa4\ +\xb5\x30\x0c\x37\xd2\x34\xfd\x79\xec\x04\xe2\x38\xbe\x08\xac\x00\ +\x55\xe0\x13\xf0\x1e\xf8\xe6\xb7\x4f\x01\xe7\x81\x31\x60\xcb\x39\ +\x77\x6b\x79\x79\xf9\xed\x71\x11\x50\x14\x45\x89\xa4\x25\xe0\xb9\ +\xa4\xc5\x2c\xcb\xb6\xf6\x33\x4c\x92\xa4\x6a\x66\x77\x81\x2b\xc0\ +\x42\x9e\xe7\x39\x60\x47\x22\x10\x45\xd1\xbc\xa4\x3b\x92\x6a\x59\ +\x96\x3d\xfa\x03\xc2\x24\x49\x72\xd3\xcc\x56\x81\xdb\x79\x9e\x67\ +\x87\x26\xe0\xd3\xfe\x5a\xd2\x6c\x87\x73\xc5\x71\x7c\x0d\xa8\x01\ +\x67\xfc\xb7\x06\xb0\x9a\xe7\xf9\x53\x7c\xc4\x71\x1c\xcf\x02\x0f\ +\x81\x89\x3c\xcf\xdf\xf4\x4d\x20\x4d\xd3\xa1\x9d\x9d\x9d\x06\xf0\ +\x35\xcf\xf3\x19\x80\xb9\xb9\xb9\x13\x61\x18\x3e\x01\x2e\x03\x0e\ +\x08\xbc\xb9\x03\x02\x33\x7b\xd9\x6a\xb5\x6e\xac\xac\xac\xfc\x00\ +\x88\xa2\xe8\xb9\xa4\xd3\x23\x23\x23\x67\xba\x15\x66\xb0\xdf\x47\ +\x80\xa2\x28\xa6\x80\xaa\xa4\xc5\x92\xac\x77\x3e\xb5\xcf\xd9\x00\ +\x40\xd2\xa5\xe1\xe1\xe1\xc7\x65\x60\x41\x10\x2c\x00\xd5\x66\xb3\ +\x39\xd9\xcd\x4f\x57\x02\xfe\xa9\x7d\x2a\x0b\xce\xa7\xfd\x72\xaf\ +\x33\x40\x20\x69\x3a\x8a\xa2\xab\x00\x59\x96\x6d\x99\xd9\x67\x49\ +\x33\x7d\x13\xa0\xfd\xce\xdf\x77\xac\x6b\xb4\x53\x7d\x10\x9c\xa4\ +\x5a\xb9\x90\xf4\x0e\x18\x3f\x0c\x81\x51\xf6\xde\x39\xb4\x0b\xae\ +\x97\xfd\xee\x9d\x92\xca\xe2\xc4\xcc\xbe\xb3\x27\x58\x7d\x11\xf8\ +\x27\xe8\x45\x60\x9b\xb6\xc2\x95\x68\xf0\x87\xbf\xc0\xcc\x1a\xe5\ +\x42\xd2\x49\x7f\x57\xdf\x04\x3e\xd2\x96\xd7\x12\xab\x07\xd8\xef\ +\xde\xe9\x45\x08\x00\x33\xbb\x00\x7c\xe8\x9b\x80\xa4\x35\x60\x2c\ +\x49\x92\x2a\x80\x17\x99\x57\xf4\xce\x82\x33\xb3\x97\xf5\x7a\xfd\ +\x19\xb4\xa5\x59\xd2\x59\x33\x5b\xeb\x9b\x40\x18\x86\x1b\xc0\x96\ +\xd7\x76\x00\x2b\x8a\xe2\xba\x99\xad\x97\xce\x3a\x1d\x03\x98\xd9\ +\x7a\xab\xd5\xba\x81\x57\x43\xe7\xdc\x12\xf0\xa5\x52\xa9\x6c\x76\ +\x0d\xb4\x47\x34\x5d\xa5\x38\x8a\xa2\xab\x92\x6a\x65\xb5\x9b\x59\ +\xc3\xcc\x56\x7d\xe4\x9d\x52\xfc\xc0\x39\x37\xd1\xab\x33\xfe\x95\ +\x66\xe4\x9d\xdf\xe7\xa8\xcd\xa8\xb4\x89\xe3\x38\x06\xee\x99\xd9\ +\x8b\x20\x08\x16\x7a\xb5\x63\xe7\xdc\x92\xa4\x69\x33\x9b\xaf\xd7\ +\xeb\x75\x8e\xda\x8e\x4b\x74\x0e\x24\x5e\x5e\xdf\x79\x91\x41\xd2\ +\x49\x33\xbb\x20\xe9\x2c\xf0\xc5\x39\x37\x77\x9c\x03\xc9\x2e\xd2\ +\x34\x1d\x6a\x36\x9b\x93\x5e\xdb\xc7\xf9\x7d\x24\xfb\x60\x66\x6b\ +\x95\x4a\x65\xb3\x9f\x91\x6c\x80\x01\x06\xf8\x05\x68\xaf\x24\x28\ +\x9c\x6b\x07\xff\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x02\x2b\ +\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\x01\xe2\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x0e\xc3\x20\ +\x10\x43\x69\x4f\x9d\x23\x70\xeb\x76\x85\x84\x10\x81\x81\xb1\x0d\ +\x51\xf0\x3a\x35\xf1\xe3\x93\x0c\x25\x21\x1c\x1d\x1d\xbd\x59\x1f\ +\x65\x63\xd7\x75\xfd\x2c\xd7\xc5\x18\x65\xf7\x45\x6d\xc8\x1a\xb8\ +\x27\x26\x10\xb8\x31\x2a\xf4\x9d\xd0\x30\x60\x66\xec\xe0\xa5\x50\ +\x20\x20\x26\xea\xf0\x49\x08\x08\x2e\x83\x55\xc1\x4b\x79\x40\x4c\ +\xff\x70\x97\xf0\x49\xb3\x10\x86\x7f\xb4\x5b\xf0\x52\xa3\x20\x86\ +\x2e\xde\x3d\x7c\xd2\x08\x04\xf3\x85\x4f\x09\x9f\x64\x85\xf0\x65\ +\xdf\xc8\xee\x32\x51\x7a\x5a\xef\x27\x59\x46\x41\xf7\x82\x5e\xf8\ +\xbc\x11\x15\xa8\x32\x58\xab\xdd\x1e\x04\xe8\x14\x88\x31\x7e\xd8\ +\x85\x0c\xda\xbf\x09\x60\xb6\x47\x59\x10\x66\x7c\x7b\x19\x6e\x01\ +\x78\x87\x33\x1a\x82\xc7\xaf\x95\xc5\x3d\x05\x3c\xf3\xcf\xaa\x96\ +\x8f\xb7\xa3\xaa\xc6\x33\xa6\xac\x9b\x44\xfa\xd6\xbc\x60\x8b\x20\ +\x63\x24\x30\x7b\x3e\x09\xfa\x14\x40\x42\x50\x84\x0f\xa1\x32\x05\ +\x10\xe6\xde\x9b\x67\x86\x2f\xbd\x29\xaf\xc2\x9e\x91\xa0\xea\xf9\ +\x24\x5a\x2d\x30\x03\x41\x1d\x3e\x04\x72\x31\x34\x02\x61\x45\xf8\ +\x10\x8a\x35\x80\xd5\x50\x2f\x9c\x3a\x7c\xde\x9e\xa4\x1c\x9e\x5d\ +\x13\x14\xc5\x95\x6c\x3f\x60\x34\x8c\xaa\xb2\x94\x6e\x88\x58\x43\ +\x29\xf7\x1f\xe4\x3b\x42\xbd\x70\xea\xcd\x17\x39\x00\xcf\x7b\x00\ +\x43\x52\x00\xd6\x70\x4a\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd9\ +\x47\x9d\x02\x02\x1d\x80\x25\xfc\x4a\x08\x94\x6a\x30\x69\xb4\xe7\ +\x15\x2f\x45\x92\x6a\xb0\xd6\x50\xae\xbb\x30\x2b\x46\x02\x05\x80\ +\xa7\x27\xd5\x10\xe0\x00\x10\xc3\x58\x09\x01\xb6\x29\x1a\x02\x7e\ +\x0e\x2b\xfc\x60\x23\x80\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\ +\x43\x70\xdf\xb8\xaa\x9e\x67\x6d\xb4\x2e\xd9\x13\xdc\xc1\x2f\xe9\ +\x16\x00\xeb\xbf\x38\x8f\x18\x8b\x33\x7c\x04\xb0\xeb\x79\xb4\xbf\ +\xfb\x80\xc4\xee\xea\x8d\xe4\x73\x44\xc6\x6a\xf6\x34\x08\xe7\x94\ +\x98\x51\xe7\xa0\xe4\xa8\xf9\xee\x10\xa8\x47\x65\x73\xed\x06\x42\ +\x76\x58\x3a\xd7\x2e\x10\x96\x1c\x97\x4f\x5a\x0d\xc1\x5b\x10\x9d\ +\x4f\x66\x10\x26\xb9\x5e\xfb\xd1\x54\x4d\xaf\xfc\x6c\xae\xa5\x1d\ +\x3f\x9c\x3c\x7a\xbb\xfe\x5f\x58\x5a\xcd\xa5\xce\x7b\xda\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\x3f\x08\x06\x00\x00\x00\x2c\x7b\xd2\x13\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2e\x14\xfa\xd6\xc4\xae\x00\x00\x00\x39\x49\x44\ +\x41\x54\x38\xcb\x63\x60\x20\x06\xc4\xc7\xc7\x33\xc4\xc7\xc7\xa3\ +\x88\x31\x61\x53\x84\x53\x12\xaf\xce\x91\x28\xc9\x82\xc4\xfe\x8f\ +\xc4\x66\x1c\x0d\xa1\x51\xc9\x51\xc9\x51\x49\x7c\x05\x06\xe3\x68\ +\x08\x91\x2a\x49\x3e\x00\x00\x88\x4b\x04\xd3\x39\x2e\x90\x3f\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xb6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x11\x08\x06\x00\x00\x00\xc7\x78\x6c\x30\ +\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\xdc\x08\x17\ +\x0b\x2c\x0d\x1f\x43\xaa\xe1\x00\x00\x00\x36\x49\x44\x41\x54\x38\ +\xcb\x63\x60\x20\x01\x2c\x5a\xb4\xe8\xff\xa2\x45\x8b\xfe\x93\xa2\ +\x87\x89\x81\xc6\x60\xd4\x82\x11\x60\x01\x23\xa9\xc9\x74\xd0\xf9\ +\x80\x85\x1c\x4d\x71\x71\x71\x8c\xa3\xa9\x68\xd4\x82\x61\x64\x01\ +\x00\x31\xb5\x09\xec\x1f\x4b\xb4\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x02\x29\ +\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\x01\xe0\x49\x44\x41\x54\x78\x9c\xed\x5b\x49\x72\xc0\x20\ +\x0c\x73\x3b\x7d\x74\x9e\x90\x5f\xb7\x27\x66\x68\x86\x04\x03\x92\ +\xec\x36\xe8\x4c\xbc\x28\x62\x37\x66\x1b\x1b\x1b\x6f\xc6\x87\xd2\ +\xd9\x71\x1c\xdf\x9e\x76\xe7\x79\xca\xe2\xa2\x3a\xf2\x26\xdc\x03\ +\x93\x10\xb8\x61\x54\xd2\x77\x40\x93\x01\x33\xc6\x4e\xfc\x0a\x14\ +\x11\x10\x23\xea\xe4\x0b\x10\x24\x2c\x19\x88\x4a\xfc\x8a\x15\x22\ +\xa6\x3f\xcc\x92\x7c\xc1\x2c\x09\xc3\x1f\x65\x4b\xfc\x8a\x51\x22\ +\x86\x1a\x67\x4f\xbe\x60\x84\x04\x77\xc3\xbf\x92\x7c\x81\x97\x84\ +\x2f\x76\x20\x4f\xa8\x83\x8c\x22\xd8\xc5\x12\x23\xb8\xd6\x1f\x42\ +\xfb\xf1\xa8\xa0\xdb\x40\x95\x3c\xcb\x5f\x8f\x84\x4f\xa4\x33\x0f\ +\x7a\x01\x29\x37\x42\x66\x1d\x05\x44\x48\x92\xe1\xfb\xc9\x6f\x1a\ +\x29\xb2\x63\xb8\xf3\x2f\xe9\x02\xb3\x7d\x5e\xd1\x1d\x9a\x0e\x54\ +\xf2\xab\xfd\x28\x06\xc6\x96\x0f\xaa\x02\x46\x92\x8a\x52\x02\x8d\ +\x80\x99\x3f\x1a\x41\x02\x65\x31\xb2\x2a\x67\x66\x77\xb8\xda\x86\ +\x2b\x00\x11\xbc\x52\x09\x50\x02\x90\x7f\x4e\x45\x02\x8c\x00\x86\ +\x6c\x15\x24\xfc\x32\x32\x1b\x28\x7b\x0a\x43\xdb\xaf\xed\x2d\x2b\ +\x40\x31\x7f\x33\x95\xb0\x44\x80\x72\x57\xc7\x22\x61\x9a\x00\x65\ +\xf2\x1e\xbb\xb3\x24\xc0\xa7\x41\xf6\xc9\x0e\xda\xbe\x74\x1d\x90\ +\xd1\xfe\x34\x01\x11\xcb\x56\x46\xb7\x5b\x52\x80\x92\x04\xd6\x98\ +\xb3\xdc\x05\x14\x24\x30\x07\x5c\xc8\x18\xc0\x24\x81\x3d\xdb\x40\ +\x77\x83\xcc\x15\x1b\xc2\x5e\xcb\x26\x74\x16\x40\x2a\x41\xb5\xce\ +\x90\xae\x03\xbc\x24\x28\x17\x59\x94\x13\xa1\x15\x12\xd4\x2b\x4c\ +\xea\xa1\xe8\x68\x32\x11\xbb\x4a\xea\xa1\xe8\x88\x12\x22\xf6\x16\ +\x66\x82\x7b\x01\x0f\x09\x51\xc9\x9b\xed\x9b\x21\xdd\xe5\x28\xf2\ +\x4c\x10\x09\xe9\xe5\xa8\x99\x4f\x09\x4a\xf5\xc9\xaf\xc7\x7b\xc9\ +\xa9\x2b\x45\x42\x0a\x24\xcc\x34\x15\x22\x77\x7e\x6a\x84\x95\xc8\ +\x98\xf1\x6b\x84\x20\x25\x32\x05\xff\xb5\x4a\x4c\x3e\x06\x64\xc3\ +\x2e\x94\x1c\x35\x9e\x9d\x04\x6a\xa9\x6c\x8d\x6c\x44\xc8\x8a\xa5\ +\x6b\x64\x21\x21\xa4\x5c\xbe\x20\x9a\x84\xd5\x33\xc7\xfd\x64\x06\ +\x61\xa4\xc6\x6b\x1f\x4d\xb5\xf0\xca\x67\x73\x4f\xc8\xf8\x70\x72\ +\xe3\xed\xf8\x01\xed\x72\x72\xcc\x11\x4e\x0c\xe5\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x84\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x36\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x4e\x14\x51\x14\x86\xbf\x33\x92\x2c\xfb\x06\xc8\x03\x58\ +\x6c\x23\x54\x92\x30\x2b\x1d\x0d\x24\x1a\x6a\x5b\x89\xb1\xd2\xc4\ +\x64\xee\x05\x34\x63\xe2\x38\x33\xc4\x44\x1b\x6d\x2c\x8c\x2f\xb0\ +\x58\x40\x65\xb3\x90\x49\x84\x06\xb4\x60\x13\x13\x68\x11\x9f\x60\ +\xd9\x68\xee\xb1\x60\x10\x4c\x9c\xcd\xce\x2e\xb1\x71\xbf\xf6\xfc\ +\x33\xe7\xcf\xcd\x3d\xff\x3d\x30\x64\xc8\xff\x8e\x94\x11\x87\x61\ +\x38\xd2\xe9\x74\xe6\x55\x75\x01\xb8\x01\x8c\xe7\xa5\x23\x60\x47\ +\x44\x1a\x95\x4a\x65\x3d\x0c\xc3\x9f\x97\x6e\xc0\x18\x33\x0b\xbc\ +\x04\x6a\xc0\x1e\xb0\x05\x7c\xcb\xcb\x57\x81\x9b\xc0\x24\xd0\x72\ +\xce\x3d\x58\x5d\x5d\xfd\x78\x59\x06\x24\x08\x02\x2b\x22\x11\xb0\ +\x26\x22\x2b\x71\x1c\xb7\xfe\x26\xb4\xd6\xd6\x54\xf5\x19\x70\x1b\ +\x58\x4e\x92\x24\x01\x74\x20\x03\x41\x10\x2c\x89\xc8\x53\x11\xb9\ +\x1f\xc7\xf1\xdb\x1e\x0c\x63\xad\xbd\xab\xaa\x6f\x80\x27\x49\x92\ +\xc4\xdd\xb4\x57\xba\x15\x8d\x31\xb3\x22\xf2\x4e\x44\xee\xf5\xda\ +\x1c\x20\xcb\xb2\x5d\xdf\xf7\xbf\x03\xaf\x7c\xdf\xff\x94\x65\xd9\ +\x61\x91\xb6\xf0\x04\xc2\x30\x1c\x39\x39\x39\xf9\x02\x7c\x4d\x92\ +\x64\xa1\xd7\xe6\x17\x09\x82\x60\x4d\x44\xae\x8d\x8e\x8e\x5e\x2f\ +\xba\x98\x5e\xd1\xc7\x9d\x4e\x67\x1e\xa8\x89\xc8\x4a\x3f\xcd\x01\ +\x3c\xcf\x5b\x06\x6a\xed\x76\x7b\xae\x50\x53\x54\xc8\x47\x6d\xaf\ +\xe8\xc2\xf5\x42\x1c\xc7\x2d\x55\xfd\x2c\x22\x85\x27\x58\x68\x80\ +\xd3\x39\xdf\xea\xb7\xf9\x19\x22\xb2\x09\x4c\xf5\x63\x60\x9c\xf3\ +\x39\xef\x1b\x55\x3d\xe6\x3c\xb0\x4a\x19\xf8\x27\x74\x33\x70\xc4\ +\x69\xc2\x0d\x84\x88\x8c\xe5\xff\x2a\x6d\x60\x87\xd3\x78\x1d\x08\ +\x55\x9d\x01\xb6\x4b\x1b\x10\x91\x06\x30\x69\xad\xad\xf5\xdb\xdc\ +\x5a\x5b\x13\x91\x09\x55\x6d\x94\x36\x50\xa9\x54\xd6\x81\x56\x9e\ +\xed\x7d\xe1\x9c\x8b\x80\xfd\x6a\xb5\xba\x51\xa4\x29\x8c\xe2\x66\ +\xb3\xe9\x7c\xdf\x3f\x00\xa2\x7a\xbd\x7e\x94\x65\xd9\x6e\x99\xe6\ +\xc6\x98\x45\x11\x79\xe4\x9c\xbb\x13\x45\xd1\x41\x69\x03\x00\x59\ +\x96\x1d\x4e\x4f\x4f\xff\x00\x5e\xd4\xeb\xf5\xe3\x5e\x4d\x18\x63\ +\x16\x81\xd7\xc0\xe3\x34\x4d\xdf\x77\xd3\xf6\xf4\x1c\x1b\x63\x0c\ +\xf0\x5c\x55\x3f\x78\x9e\xb7\xdc\xed\x39\x76\xce\x45\x22\x72\x4b\ +\x55\x97\xd2\x34\x4d\x19\xf4\x39\x3e\xe3\xe2\x42\x92\xc7\xeb\x66\ +\x1e\x32\x88\xc8\x98\xaa\xce\x88\xc8\x04\xb0\xef\x9c\x7b\x78\x99\ +\x0b\xc9\x6f\xc2\x30\x1c\x69\xb7\xdb\x73\x79\xb6\x4f\xf1\xe7\x4a\ +\xb6\xad\xaa\x8d\x6a\xb5\xba\x51\x66\x25\x1b\x32\x64\xc8\x2f\xff\ +\x42\xe0\x3f\x4f\xfa\x9f\x03\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x14\x1f\xf9\ +\x23\xd9\x0b\x00\x00\x00\x23\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xe6\x7c\x80\xb1\x18\x91\x05\x52\x04\xe0\x42\x08\x15\x29\x02\ +\x0c\x0c\x8c\xc8\x02\x08\x95\x68\x00\x00\xac\xac\x07\x90\x4e\x65\ +\x34\xac\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x82\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x34\x49\x44\x41\x54\x58\x85\xed\ +\xd7\xb1\x4e\xc2\x50\x18\x86\xe1\xf7\x37\x14\x46\xca\x82\xd7\xd0\ +\x85\x44\x48\xea\x0a\xd1\x54\x22\xc6\x1b\xe0\x2a\xea\x2c\x0e\xb2\ +\xc3\x55\x70\x09\xc4\xd8\x98\xb0\x77\xd0\x84\xa5\xf7\xc0\x42\x1d\ +\xb1\x24\xc7\xa1\x2d\x36\xb5\x38\x98\x36\x0e\x9e\x6f\x3c\x6d\xfa\ +\x3d\xe7\x74\xf9\x0f\xfc\xf7\x48\x7e\xa1\x3b\x18\x5d\x81\xba\x03\ +\xb1\x01\xb3\xa4\x9e\x10\x94\x0f\x32\x7b\x5d\x2d\x9f\x8f\x02\x7a\ +\xfd\x9b\xa9\x12\x75\x0f\xec\x04\x02\x85\x7a\x2f\xa3\x5d\x90\xa6\ +\x02\x0b\x68\x28\x98\xbe\xad\x96\x0f\xdf\x00\xdd\xfe\xf5\x10\x91\ +\x27\xe0\x65\x6f\x44\xe3\xb5\xe7\x6d\xca\x28\x4f\xd3\x71\x9c\x76\ +\x2d\x32\x16\xc0\x25\x30\x4c\x4f\xe2\x24\xc3\x74\x81\x5d\x15\xe5\ +\x00\x6b\xcf\xdb\xec\x8d\x68\x0c\x7c\x00\x6e\xba\xfe\x05\x40\x6c\ +\x81\xa0\x8a\xf2\x2c\x02\x08\x00\xbb\x00\x80\x59\xd6\x3f\xff\x39\ +\x2a\x04\x5a\x45\x80\x3f\x89\x06\x68\x80\x06\x68\x80\x06\x68\x80\ +\x06\x68\x40\x16\x10\x0a\xd2\xac\xbe\x52\x4c\x60\x5b\x00\x50\xbe\ +\x02\xab\xe3\x38\xed\xaa\xaa\x93\x6f\x5b\x80\x5f\x00\x90\x19\xd0\ +\xa8\x45\xc6\xa2\x0a\xc4\xf9\xc5\xed\x69\x32\x96\xd7\x81\xf9\xa1\ +\x35\xfb\xd2\xd9\x60\xf4\x28\x30\x21\x1e\x9d\x83\x64\x80\x2c\x21\ +\x62\x12\xef\xbc\x7e\xf4\x62\x92\x26\xbe\x9a\xe1\x12\x8f\xce\xad\ +\xfc\xf3\x5f\x66\x4b\x7c\xec\xf3\xfc\xd5\x4c\xe7\x13\xc4\xb0\x5f\ +\x44\xcf\x0c\x5b\xaa\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +\x00\x00\x00\xc3\ +\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\x0b\x13\x00\x00\ +\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xdc\x0b\x07\x09\x2e\x37\xff\x44\xe8\xf0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x27\x49\x44\x41\x54\x78\xda\xed\xc1\x01\ +\x0d\x00\x00\x00\xc2\xa0\xf7\x4f\x6d\x0e\x37\xa0\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x77\x03\x40\x40\ +\x00\x01\xaf\x7a\x0e\xe8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x01\x8d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3f\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x86\x5c\ +\xc0\x13\x14\xf4\x0e\x9e\xc2\x12\x48\x94\xb6\x8b\xba\x51\x08\x7a\ +\x0a\xcf\x50\x0a\x3d\x41\x2e\x90\x3b\xb8\xd1\x2e\x95\x90\xbf\x8b\ +\x9a\x62\x15\x29\x94\xa4\x5d\x74\xbe\xd5\xe4\xcd\x90\xff\x63\x66\ +\xf3\x1e\xfc\x77\xec\xbc\x10\xc7\xf1\xc0\xcc\xee\x24\xf5\xcd\x2c\ +\xa8\x23\x44\xd2\xce\xcc\x32\x49\xcb\xc5\x62\xf1\x72\x55\x60\x32\ +\x99\xcc\x24\xdd\x03\x7b\x49\xb9\x99\xbd\xd5\x24\xd0\x31\xb3\x10\ +\x68\x03\xb3\xf9\x7c\xfe\x78\x21\x90\x24\xc9\x10\x78\x06\x5e\x8b\ +\xa2\x18\xa5\x69\xba\xa9\x23\xbc\x22\x8a\xa2\x9e\xef\xfb\x6b\xe0\ +\x56\xd2\xb0\xba\x09\xef\xe4\xcc\x18\xd8\x37\x11\x0e\x90\xa6\xe9\ +\xa6\x28\x8a\x11\x70\xf0\x3c\x6f\x5c\xd5\x3f\x05\x24\xf5\x25\xe5\ +\x4d\x84\x9f\x4a\x00\xb9\xa4\xfe\x85\x80\x99\x05\x75\xbd\xf9\x37\ +\xec\x80\xee\x85\xc0\x5f\xe1\x04\x9c\x80\x13\x70\x02\x4e\xc0\x09\ +\x38\x01\x27\xe0\x57\x0b\x49\x3b\xa0\xf3\x0b\x99\x01\xb0\xad\x3e\ +\x4e\x5b\xb2\xcc\xcc\xc2\x28\x8a\x7a\x4d\x25\x1f\xff\x1d\x9a\x59\ +\x76\x21\x20\x69\x09\xb4\x7d\xdf\x5f\x37\x21\x31\x9d\x4e\x6f\x8e\ +\x6d\x79\xab\x2c\xcb\x55\x55\xff\x32\x98\x24\x49\xf2\x04\x3c\x00\ +\x07\x20\xe7\xa3\x81\xac\x83\x00\x08\x81\x16\xd7\x06\x93\x8a\x38\ +\x8e\x07\x9e\xe7\x8d\x8f\xad\x73\xf7\x7c\xff\x87\x6c\xcd\x2c\x2b\ +\xcb\x72\x75\x3e\x9a\x39\xde\x01\x23\x94\x7d\x48\x8c\x1a\x35\x0f\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xef\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x2a\x32\xff\x7f\x20\x5a\x00\x00\x00\x6f\x49\x44\x41\x54\x78\ +\xda\xed\xd0\xb1\x0d\x00\x30\x08\x03\x41\xc8\xa0\x0c\xc7\xa2\x49\ +\xcf\x04\x28\xba\x2f\x5d\x59\x97\xb1\xb4\xee\xbe\x73\xab\xaa\xdc\ +\xf8\xf5\x84\x20\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\x21\ +\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\x41\ +\x84\x08\x51\x10\x21\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\ +\x21\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\ +\x41\x84\x08\x51\x10\x21\x42\xfc\xaa\x07\x12\x55\x04\x74\x56\x9e\ +\x9e\x54\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x92\xc3\x20\ +\x10\x43\xc9\x9c\x61\x0e\x98\xc5\x1c\x2b\x8b\x39\x60\xee\x90\xac\ +\xa8\xa2\x28\x1b\x1a\x5a\x12\xed\x32\x5a\x3b\xc2\x7a\x7c\xec\x26\ +\x38\xa5\xad\xad\xad\x3b\xeb\xa1\x6c\xec\xf7\xef\xff\x63\xb9\xee\ +\xfd\x7a\xca\xee\x8b\xda\x90\x35\x70\x4f\x4c\x20\x70\x63\x54\xe8\ +\x33\xa1\x61\xc0\xcc\xd8\xc1\x6b\xa1\x40\x40\x4c\xd4\xe1\xb3\x10\ +\x10\x5c\x06\xab\x82\xd7\xf2\x80\x98\xfe\x61\x94\xf0\x59\xb3\x10\ +\x86\x7f\x14\x2d\x78\xad\x51\x10\x43\x17\x47\x0f\x9f\x35\x02\xc1\ +\x7c\xe1\x55\xc2\x67\x59\x21\xfc\xb0\x6f\x24\xba\x4c\x94\xae\xd6\ +\xfb\x59\x96\x51\xd0\xbd\xa0\x17\xbe\x6c\x44\x05\xaa\x0e\xd6\x6a\ +\xb7\x07\x01\x3a\x05\xde\xaf\xe7\x83\x5d\xc8\xa0\xfd\x9b\x00\x66\ +\x7b\x94\x05\x61\xc6\xb7\x97\xe1\x14\x80\x77\x38\xa3\x21\x78\xfc\ +\x5a\x59\xdc\x53\xc0\x33\xff\xac\x6a\xf9\x78\x3b\xea\xd0\x78\xc6\ +\x94\x75\x93\x48\xdf\x23\x2f\xd8\x22\xc8\x18\x09\xcc\x9e\xcf\x82\ +\x3e\x05\x90\x10\x14\xe1\x53\x3a\x98\x02\x08\x73\xef\xcd\x33\xc3\ +\xd7\xde\x94\x57\x61\xcf\x48\x50\xf5\x7c\x16\xad\x16\x98\x81\xa0\ +\x0e\x9f\x12\xb9\x18\x1a\x81\xb0\x22\x7c\x4a\xd5\x1a\xc0\x6a\xa8\ +\x17\x4e\x1d\xbe\x6c\x4f\x52\x0e\xcf\xae\x09\x8a\xe2\x4a\xb6\x1f\ +\x30\x1a\x46\x55\x59\x4a\x37\x44\xac\xa1\x94\xfb\x0f\xf2\x1d\xa1\ +\x5e\x38\xf5\xe6\x8b\x1c\x80\xe7\x3d\x80\x21\x29\x00\x6b\x38\x25\ +\x04\x19\x00\x64\x2d\x80\x94\x04\xc0\xec\xa3\x4e\x01\x81\x0e\xc0\ +\x12\x7e\x25\x04\x4a\x35\x98\x35\xda\xf3\x8a\x97\x22\x49\x35\x78\ +\xd4\x50\xa9\xb3\x30\x2b\x46\x02\x05\x80\xa7\x27\xd5\x10\xe0\x00\ +\x10\xc3\x58\x09\x01\xb6\x29\x9a\x12\x7e\x0e\x2b\xfc\x60\x23\x80\ +\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\x43\x70\xdf\xb8\xaa\x9e\ +\x67\x6d\xb4\x2e\xd9\x13\x8c\xe0\x97\x75\x0a\x80\xf5\x5f\x9c\x47\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\xdf\x7d\x40\x22\xba\x7a\x23\ +\x79\x1f\x91\xb1\x9a\x5d\x0d\xc2\x3e\x25\x66\xd4\x3e\x28\x39\x6a\ +\x1e\x1d\x02\xf5\xa8\x6c\xa9\x68\x20\x64\x87\xa5\x4b\x45\x81\xb0\ +\xe4\xb8\x7c\xd6\x6a\x08\xde\x82\x68\x7f\x32\x83\x30\x29\x75\xdb\ +\x8f\xa6\x8e\x74\xcb\xcf\xe6\x5a\x8a\xf8\xe1\xe4\xd6\xdd\xf5\x05\ +\x90\xc2\x5a\x7d\xfa\xa7\x95\xa2\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x06\x2f\ +\xe0\x09\x0a\x7a\x07\x4f\x61\x09\x64\x94\xb6\x8b\xba\x89\x10\xf4\ +\x14\x9e\xa1\x14\x7a\x02\x2f\xe0\x1d\xdc\x68\x97\x4a\xc8\xdf\x45\ +\x4d\x49\x15\x2b\xb4\x49\x37\xcd\xb7\x9b\x37\xc3\xfc\x1f\x19\xc2\ +\xbc\x81\xff\x8e\x9d\x16\xa2\x28\xea\x9b\xd9\x9d\xa4\x9e\x99\x05\ +\x65\x84\x48\xda\x99\xd9\x4a\xd2\x7c\x36\x9b\xbd\x5c\x14\x18\x8f\ +\xc7\x53\x49\xf7\xc0\x5e\xd2\xda\xcc\xde\x4a\x12\x68\x99\x59\x17\ +\x68\x02\xd3\x38\x8e\x1f\xcf\x04\x9c\x73\x03\xe0\x19\x78\x4d\xd3\ +\x74\x98\x24\xc9\xa6\x8c\xf0\x9c\x30\x0c\x3b\xbe\xef\x2f\x81\x5b\ +\x49\x83\xfc\x4b\x78\x85\x35\x23\x60\x5f\x45\x38\x40\x92\x24\x9b\ +\x34\x4d\x87\xc0\xc1\xf3\xbc\x51\x5e\xff\x14\x90\xd4\x93\xb4\xae\ +\x22\xbc\x28\x01\xac\x25\xf5\xce\x04\xcc\x2c\x28\xeb\xcc\xaf\xb0\ +\x03\xda\xf9\xc0\xbf\xb6\xda\x39\xa7\xdf\xa4\xc5\x71\x7c\xf6\xa7\ +\x15\xf1\xbe\x9b\xfc\x0b\x6a\x81\x5a\xa0\x16\xa8\x05\x6a\x81\x5a\ +\xa0\x16\xb8\xda\x0f\x5c\xbb\xcf\x4b\x13\x90\xb4\x03\x5a\x55\x86\ +\x1d\x09\x80\x6d\x3e\x28\xb6\x64\x2b\x33\xeb\x86\x61\xd8\xa9\x2a\ +\xf9\xb8\x77\xd7\xcc\x56\x67\x02\x92\xe6\x40\xd3\xf7\xfd\x65\x15\ +\x12\x93\xc9\xe4\xe6\xd8\x96\x37\xb2\x2c\x5b\xe4\xf5\x2f\xe7\xeb\ +\x9c\x7b\x02\x1e\x80\x03\xb0\xe6\xa3\x81\x2c\x83\x00\xe8\x02\x0d\ +\x2e\x3d\x4c\x72\xa2\x28\xea\x7b\x9e\x37\x3a\xb6\xce\xed\xd3\xf9\ +\x1f\xb2\x35\xb3\x55\x96\x65\x8b\xd3\xa7\x59\xcd\x3b\xf1\x23\x82\ +\xe5\xfb\x4f\xe3\xdb\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1d\x00\xb0\ +\xd5\x35\xa3\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xfe\x9f\x67\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x60\x34\x44\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x64\x40\x09\x75\x86\xb3\xad\x9c\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\x96\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0d\x1b\x75\xfe\x31\x99\x00\x00\x00\x27\x49\x44\x41\x54\x08\xd7\ +\x65\x8c\xb1\x0d\x00\x00\x08\x83\xe0\xff\xa3\x75\x70\xb1\xca\xd4\ +\x90\x50\x78\x08\x55\x21\x14\xb6\x54\x70\xe6\x48\x8d\x87\xcc\x0f\ +\x0d\xe0\xf0\x08\x02\x34\xe2\x2b\xa7\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1c\x1f\x24\ +\xc6\x09\x17\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\xff\xcf\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x0e\ +\xa3\x21\x9c\xc3\x68\x88\x61\x1a\x0a\x00\x00\x6d\x84\x09\x75\x37\ +\x9e\xd9\x23\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x02\x04\x6d\ +\x98\x1b\x69\x00\x00\x00\x29\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\xff\xcf\xa3\x08\x18\x32\x32\x30\x20\x0b\x32\x1a\ +\x32\x30\x30\x42\x98\x10\x41\x46\x43\x14\x13\x50\xb5\xa3\x01\x00\ +\xd6\x10\x07\xd2\x2f\x48\xdf\x4a\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x02\x8e\ +\x00\ +\x00\x0b\x17\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\xf6\x40\xcc\xce\xc1\x06\x24\xf7\x97\ +\x4d\x95\x07\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x2e\xf2\x1e\x31\xe0\x70\xfe\x3f\xf3\x91\x9b\x82\ +\x83\x8f\xc4\xf2\x55\x52\x2f\xcd\x76\x7c\xe4\x9f\x12\x96\x7b\xbf\ +\x7d\xa3\x4e\xca\x82\xc7\xdf\xe7\x7e\xd1\x94\xe2\x8e\xfc\xde\xc8\ +\x60\xb1\x71\xc3\x04\xdd\xb3\x0f\x5a\x8d\xcc\x1f\x86\x19\x97\x16\ +\xfa\xe5\xbe\x7c\xd2\xe7\x99\x2a\x79\xa4\x60\x5b\xf5\xc5\x73\x7f\ +\x16\x69\xb3\x2d\x9b\x6d\x6d\x55\xf6\x66\xd2\xdb\xa2\x15\x2b\x96\ +\x84\x05\x6e\x2d\xda\x2b\xd8\x9f\xfd\xf9\xd7\x8b\xb9\x9b\xf7\x9f\ +\x7e\xc9\xef\xa1\xa8\xe3\xfd\xb6\xee\xd8\x13\x06\x06\x2e\x86\x4c\ +\xa0\x93\x22\x7c\x7d\xac\x92\xf3\x73\xf5\x12\x53\xf2\x93\x52\xf5\ +\x2a\x72\x0b\x18\x40\xc0\xc6\xbe\xa2\x20\x31\x39\x3b\xb5\x44\x21\ +\x29\x35\x3d\x33\xcf\x56\xe9\xfd\xee\xfd\x4a\x0a\x99\x29\xb6\x4a\ +\xe1\xa6\xbe\x06\xbe\x05\xce\xa9\x19\x99\x1e\x55\x45\xa9\xc1\x55\ +\x7e\x21\xc9\x55\xd9\xc9\x96\x29\x4a\xf6\x76\x5c\x36\x15\x56\x40\ +\x03\x72\x53\x4b\x12\x15\x2a\x72\x73\xf2\x8a\xad\x2a\x6c\x95\xc0\ +\xe6\x5a\x01\xd9\x20\x61\x7d\x25\x05\xb0\x92\x92\x6c\x5b\xa5\x08\ +\xdf\x00\x05\xe7\xfc\xa2\x54\x05\x13\x3d\x13\x3d\x03\x5d\xd7\x8a\ +\xcc\x32\x23\x25\x3b\x2e\x05\x9b\xa2\x94\x34\xab\x20\x17\x37\xa8\ +\x11\x40\x9e\xad\x52\x46\x49\x49\x81\x95\xbe\x7e\x79\x79\xb9\x5e\ +\xb9\xb1\x5e\x7e\x51\xba\xbe\xa1\xa5\xa5\xa5\xbe\x81\x91\xbe\x91\ +\x91\x2e\x50\x85\x6e\x71\x65\x5e\x49\x62\x85\x6e\x5e\xb1\x32\xc8\ +\x08\x88\x19\x2e\xa9\xc5\xc9\x45\x99\x05\x25\x99\xf9\x79\x0a\x20\ +\x7e\x62\x52\x7e\x69\x89\xad\x92\x12\x50\x5e\x01\x6a\x38\x28\xf8\ +\xe1\xa6\xe7\x15\x43\x03\x01\x18\x1c\xfa\x20\x19\x7d\x43\x3d\x03\ +\x7d\x64\xe5\x25\x99\x69\x38\x94\x83\x64\x10\xca\x41\x9a\xad\x02\ +\x32\x2b\x52\x73\x22\x5c\x32\x73\x53\xf3\x8a\x81\x4e\xb0\x55\x32\ +\x33\x46\x93\x8c\x44\x92\x34\x07\xcb\x81\x8c\xb1\xf2\xcc\x4d\x4c\ +\x4f\x0d\xcf\x4c\x29\xc9\x80\xeb\x41\x88\x7b\xa4\x66\xa6\x67\x94\ +\xa0\xa8\xf7\x2f\xca\x4c\x05\xfa\xbe\x04\x6c\x8e\xa1\x92\x3e\x28\ +\x0c\xf5\xa1\x81\x08\x8c\x13\x7d\x78\xa4\xd8\x81\xbd\x42\x6b\x30\ +\x6a\xc9\xa8\x25\xa3\x96\x8c\x5a\x32\x6a\xc9\xa8\x25\xa3\x96\x0c\ +\x2a\x4b\xb8\x10\xcd\xba\xd4\x3c\x60\x5b\xae\x1c\xd8\x68\x73\x60\ +\x88\x2a\x04\x36\xf8\x58\x8a\x9d\x3c\x43\x38\x80\xa0\x86\x23\xa5\ +\x03\xc8\xd7\xf7\x74\x71\x0c\xb1\x38\x9d\x9c\x20\xc1\xaa\x2c\x6c\ +\x70\x48\xe2\xe3\xc7\x8f\x4b\x5e\xfc\xb6\x9f\xf1\xd7\x89\x27\x62\ +\x47\x81\x22\xf3\x65\x8f\xbe\x9f\x82\x2f\x7f\xb6\x72\x8b\xf7\x3d\ +\xfb\x29\xc8\xcb\xd0\x9d\xc3\xfa\x52\xd3\xfb\x8f\x28\xa8\xf1\xe8\ +\xe9\xea\xe7\xb2\xce\x29\xa1\x09\x00\xa6\x21\x0d\x8f\ +\x00\x00\x02\x95\ +\x00\ +\x00\x0b\x1f\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\x0e\x40\x2c\xc0\xc1\x06\x24\x97\x3d\ +\xaf\xd4\x04\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x4e\xf3\x1e\x76\xe0\x70\x79\x1f\x32\x51\xe8\xc7\ +\xdb\x0d\x53\x84\x23\xb7\x4d\xe1\x0b\xaa\x73\xc8\x3e\xfd\xd1\xfa\ +\x40\xc6\x96\xdf\x2c\x6f\xef\x9f\x77\x5c\xef\x16\x71\xd2\xdd\x47\ +\xe5\x40\xeb\xf2\xe5\xfb\xb4\x7d\xe2\x24\x36\x6b\x78\xbf\x9f\xd5\ +\x5d\x3c\x3b\xe4\xd2\x6e\xb5\xcb\xa2\x13\x8c\x6f\xbc\x6f\xaf\xfb\ +\x26\x7e\xd8\xa0\xb0\xc5\x3d\x21\xe1\xf0\xb2\xd4\xeb\x77\xaf\x6c\ +\x49\xeb\xbe\x75\xaa\xd6\xed\x9f\xe7\xba\xfb\xdf\xde\x3c\x7d\x99\ +\xf6\x8b\xd1\xbe\x5a\x47\xe0\x86\xd1\xd4\x23\x0c\x0c\x5c\x4c\x99\ +\x40\x27\x45\xf8\xfa\x58\x25\xe7\xe7\xea\x25\xa6\xe4\x27\xa5\xea\ +\x55\xe4\x16\x30\x80\x80\x8d\x7d\x45\x41\x62\x72\x76\x6a\x89\x42\ +\x52\x6a\x7a\x66\x9e\xad\xd2\xfb\xdd\xfb\x95\x14\x32\x53\x6c\x95\ +\xc2\x4d\x7d\x0d\x7c\x0b\x9c\x53\x33\x32\x3d\xaa\x8a\x52\x83\xab\ +\xfc\x42\x92\xab\xb2\x93\x2d\x53\x94\xec\xed\xb8\x6c\x2a\xac\x80\ +\x06\xe4\xa6\x96\x24\x2a\x54\xe4\xe6\xe4\x15\x5b\x55\xd8\x2a\x81\ +\xcd\xb5\x02\xb2\x41\xc2\xfa\x4a\x0a\x60\x25\x25\xd9\xb6\x4a\x11\ +\xbe\x01\x0a\xce\xf9\x45\xa9\x0a\x26\x7a\x26\x7a\x06\xba\xae\x15\ +\x99\x65\x46\x4a\x76\x5c\x0a\x36\x45\x29\x69\x56\x41\x2e\x6e\x50\ +\x23\x80\x3c\x5b\xa5\x8c\x92\x92\x02\x2b\x7d\xfd\xf2\xf2\x72\xbd\ +\x72\x63\xbd\xfc\xa2\x74\x7d\x43\x4b\x4b\x4b\x7d\x03\x23\x7d\x23\ +\x23\x5d\xa0\x0a\xdd\xe2\xca\xbc\x92\xc4\x0a\xdd\xbc\x62\x65\x90\ +\x11\x10\x33\x5c\x52\x8b\x93\x8b\x32\x0b\x4a\x32\xf3\xf3\x14\x40\ +\xfc\xc4\xa4\xfc\xd2\x12\x5b\x25\x25\xa0\xbc\x02\xd4\x70\x50\xf0\ +\xc3\x4d\xcf\x2b\x86\x06\x02\x30\x38\xf4\x41\x32\xfa\x86\x7a\x06\ +\xfa\xc8\xca\x4b\x32\xd3\x70\x28\x07\xc9\x20\x94\x83\x34\x5b\x05\ +\x64\x56\xa4\xe6\x44\xb8\x64\xe6\xa6\xe6\x15\x03\x9d\x60\xab\x64\ +\x66\x82\x26\x19\x89\x24\x69\x68\x06\x96\x04\x99\x63\xe5\x99\x9b\ +\x98\x9e\x1a\x9e\x99\x52\x92\x01\xd7\x84\x10\xf7\x48\xcd\x4c\xcf\ +\x28\x41\xd5\xe0\x5f\x94\x99\x0a\xf4\x7f\x09\xc4\x24\x25\x7d\x50\ +\x28\xea\x43\x83\x11\x18\x2b\xfa\xf0\x68\xb1\x03\x7b\x86\xd6\x60\ +\xd4\x92\x51\x4b\x46\x2d\x19\xb5\x64\xd4\x92\x51\x4b\x46\x2d\x19\ +\x54\x96\x70\x21\x1a\x76\xa9\x79\xc0\xd6\x5c\x39\xb0\xd9\xa6\x5e\ +\xf8\x9e\x0f\xd8\xe4\x63\x29\x76\xf2\x0c\xe1\x00\x82\x1a\x8e\x94\ +\x0e\x20\xdf\xd4\xd3\xc5\x31\x24\xe2\xf0\xdb\xab\x1b\x79\x19\x0c\ +\x38\x58\x0c\x4f\x2c\x3a\x73\x6c\x89\xe7\x6c\xd9\x7b\xef\x34\x26\ +\x3a\x84\xbb\x6e\xfb\xd7\x3e\x73\xa7\xe7\xe9\xf7\x79\xf3\xbf\x70\ +\x5b\xcc\x63\x98\xe0\x28\x39\xc5\xb1\xc1\x83\xff\xd8\x5c\x0e\xee\ +\x55\xc9\xa5\x1a\xa0\x46\xa4\xa7\xab\x9f\xcb\x3a\xa7\x84\x26\x00\ +\xe3\x91\x12\xf6\ +\x00\x00\x00\xe0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x29\x1c\x08\x84\x7e\x56\x00\x00\x00\x60\x49\x44\x41\x54\x78\ +\xda\xed\xd9\xb1\x0d\x00\x20\x08\x00\x41\x71\x50\x86\x63\x51\xed\ +\x8d\x85\x25\x89\x77\xa5\x15\xf9\x48\x45\x8c\xa6\xaa\x6a\x9d\x6f\ +\x99\x19\x1d\x67\x9d\x03\x11\x45\x14\x11\x11\x45\x14\x51\x44\x44\ +\x14\x51\x44\x11\x11\x51\x44\x11\x45\x44\x44\x11\x45\x14\x11\x11\ +\x45\x14\xf1\x5b\xd1\x75\xb0\xdb\xdd\xd9\x4f\xb4\xce\x88\x28\x22\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x36\xce\x69\x07\x1e\xe9\ +\x39\x55\x40\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\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x53\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbf\x4f\x13\x61\x18\xc7\x3f\xcf\xb5\x13\xa6\x86\xd1\x76\xa3\ +\x03\x90\x2e\xd2\xeb\x00\x13\x5c\x4b\x42\x82\x57\xa2\x61\x76\xc5\ +\x38\x6a\xe2\x20\x3f\xdc\xa8\xd1\xc4\x44\x17\x27\x06\xe3\x3f\x50\ +\x1c\x5a\x18\x08\x50\x18\x14\x12\x69\x71\xa0\x89\x0d\xa4\x4c\x2d\ +\x6e\xc4\x46\x16\xec\x3d\x0e\x80\x61\xe0\xe0\xae\x10\x17\xfb\x59\ +\xdf\xef\x7b\xdf\xef\xdd\xbd\xef\xf3\x3c\xd0\xa6\xcd\xff\x8e\xf8\ +\x11\x5b\x96\x15\x6c\x10\x4a\xab\xe8\xb8\xa0\xfd\x0a\x91\xd3\x87\ +\xd4\x14\xd9\x14\x95\x6c\x88\x46\xae\x50\x28\xfc\xbe\xf1\x00\x89\ +\xd4\xd8\x88\xaa\xf3\x16\x88\x21\x52\x02\x67\x5d\x1d\xa9\x03\x88\ +\xa1\x61\x30\x06\x51\x8d\x03\x65\xc3\xd0\x27\x5f\x97\x17\x96\x6e\ +\x2a\x80\x98\x49\x7b\x12\xc8\xa0\xcc\x6b\xc0\x99\x29\x2d\x2f\x96\ +\x2f\x12\xc6\x87\x47\x63\xd2\x34\x66\x11\x1e\x08\x32\xbd\xb5\x9a\ +\x7b\x05\xa8\xc7\x77\xbc\x18\x33\x69\x4f\x99\x49\xfb\xd8\x4c\xa5\ +\x27\x3c\xef\x49\xa5\x27\xcc\xa4\x7d\x9c\x48\xa6\x27\xaf\xd2\x06\ +\x2e\x5b\x4c\xa4\xc6\x46\x40\x3f\x20\xf2\xb8\xb8\x92\x9b\xf3\x1a\ +\xa0\x5e\xad\x14\xc3\x5d\xdd\x3f\x80\x77\x91\x68\xef\x97\x7a\xb5\ +\xb2\xe7\xa6\x75\xfd\x05\x96\x65\x05\x7f\xca\xad\x6f\x28\xdf\x8b\ +\x85\xfc\xb8\x57\xf3\xf3\x98\xa9\x7b\xf3\xa8\x74\xdf\xd6\x5f\x77\ +\xdd\x0e\xa6\xe1\xb6\xb9\x41\x28\x0d\xc4\x34\xe0\xcc\xb4\x62\x0e\ +\xa0\xa2\xd3\x40\xec\x50\x3a\x6c\x37\x8d\x6b\x00\x15\x1d\x47\xa4\ +\xe4\x76\xe0\xbc\x50\x5a\x5e\x2c\x0b\x6c\x07\xc0\xf5\x0b\xba\x06\ +\x10\xb4\x1f\x9c\xf5\x56\xcd\xcf\x50\xd1\x35\x90\x01\xdf\x01\x14\ +\x22\x67\xf7\xfc\x3a\x08\x1c\x9c\x15\x2c\x5f\x01\xfe\x15\x41\xb7\ +\x05\x81\x1a\x86\x86\xaf\x6b\xa0\x70\x47\xa0\xe6\x3b\x80\x22\x9b\ +\x20\x83\xd7\x0d\x20\x2a\x43\xa0\x1b\x6e\xeb\xee\x87\x50\x25\x8b\ +\x6a\x3c\x3e\x3c\x1a\x6b\xd5\x3c\x3e\x3c\x1a\x53\xe8\x6b\x42\xd6\ +\x77\x80\x10\x8d\x1c\x50\x96\xa6\x31\xdb\x6a\x00\x51\xc9\x08\xec\ +\x74\xea\x51\xde\x4d\xe3\x5a\x8a\xf7\xf7\xf7\x9d\x48\xb4\x77\x17\ +\x34\x13\x8e\xf6\xd4\xea\xd5\x4a\xd1\x8f\xb9\x99\xb4\x1f\x81\x3c\ +\x33\x0c\x7d\xf8\x79\x75\x69\xd7\x77\x00\x80\x7a\xb5\xb2\x17\xee\ +\xea\x3e\x06\xde\x84\xa3\x3d\x07\x5e\x43\x9c\x98\xf3\x5e\x90\x17\ +\x5b\x2b\xf9\x8f\x97\x69\x3d\xb5\xe3\x44\x32\xfd\x5c\xd1\x97\x88\ +\x7e\x52\xd1\xe9\x4b\xdb\xb1\x4a\x06\x95\xfb\x22\x3a\xb5\xb5\xb2\ +\xf0\x9a\x2b\xda\x71\x4b\x03\x89\xc0\xb6\x8a\xae\x09\x1c\xc0\xe9\ +\x55\x53\x19\x52\xe8\x13\xd8\x11\x43\x9f\xde\xe4\x40\xf2\x17\xcb\ +\xb2\x82\x87\xd2\x61\x9f\xd4\x76\x19\x38\x3f\x92\x81\x6e\x34\x21\ +\xdb\xa9\x47\x79\x3f\x23\x59\x9b\x36\x6d\xfe\x00\x0a\x49\xe7\x8d\ +\x0a\x55\xe0\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x00\x93\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0c\x2b\x4a\x3c\x30\x74\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\ +\x63\x60\x40\x05\xff\xff\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\ +\xc5\x70\x0e\x23\x23\x9c\xc3\xc8\x88\x61\x1a\x0a\x00\x00\x9e\x14\ +\x0a\x05\x2b\xca\xe5\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x0e\x16\ +\x4d\x5b\x6f\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\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\x00\xdc\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x40\x08\x06\x00\x00\x00\x13\x7d\xf7\x96\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2d\x19\xaf\x4a\xeb\xd0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x40\x49\x44\x41\x54\x58\xc3\xed\xce\x31\ +\x0a\x00\x20\x0c\x03\x40\xf5\xa3\x7d\x5b\x5f\xaa\x53\xc1\xc9\xc5\ +\x45\xe4\x32\x05\x1a\x8e\xb6\x76\x99\x5e\x25\x22\x66\xf5\xcc\xec\ +\xfb\xe8\x74\x1b\xb7\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\xf0\x36\xf0\x41\x16\x0b\x42\x08\x78\x15\x57\x44\xa2\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x8a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3c\x49\x44\x41\x54\x58\x85\xed\ +\xd7\x31\x4e\xc2\x50\x1c\xc7\xf1\xef\x9f\x26\x30\x5a\xa2\x96\x33\ +\x74\x11\x27\x4e\x60\x02\x77\xe0\x14\x18\xbb\xa9\x83\x8c\x34\xe0\ +\x25\x38\x83\x31\xf1\x04\x9d\x00\x87\x9e\x01\x62\x42\x1d\x21\x69\ +\xff\x0e\x94\x86\xb4\xe0\xa0\x6d\x1c\x7c\xbf\xf1\xf5\xa5\xbf\x4f\ +\xde\x5b\xfe\x0f\xfe\x7b\x24\xbf\xe0\xf8\xb3\xae\x4a\xed\x56\x95\ +\x0e\x60\x97\xd4\x13\x89\x10\x88\x26\xe3\xd5\xdd\xf5\xeb\x49\xc0\ +\xb9\xbf\x18\x0a\xdc\x03\x1b\xd0\x10\x95\xcf\x52\xea\x45\xcf\x40\ +\x5c\xa0\x81\x32\xfc\xf0\xae\x1e\x0b\x80\xcb\xf1\xbc\xa7\x89\xbc\ +\x00\x6f\x96\x6a\x7f\xe9\xb5\x57\xa5\x94\xa7\x69\x8d\xe6\x4e\x2c\ +\x32\x05\x6e\x6a\x24\xbd\xfd\x49\xd4\xb2\x1d\x2a\x03\x60\x53\x45\ +\x39\xc0\xd2\x6b\xaf\x2c\xd5\x3e\xb0\x8d\xb1\x06\xfb\xf5\x0c\xb0\ +\xbb\x73\x0d\xab\x28\x3f\x44\x00\xa1\xa0\x9d\x02\x00\xb0\x4b\xbb\ +\xf3\xef\xa2\x44\x40\xf3\x18\xe0\x4f\x62\x00\x06\x60\x00\x06\x60\ +\x00\x06\x60\x00\x06\x70\x08\x88\x76\xd3\x6b\xc5\x11\x6c\x60\x5d\ +\x00\x88\x10\x80\xb8\xad\xd1\xdc\xa9\xaa\x3b\xfd\xb7\xab\x48\x50\ +\x04\x68\x32\x06\x1a\xb1\xc8\xb4\x0a\x84\xf3\xfc\xde\x4a\xc7\xf2\ +\xba\x45\x3c\xc9\x7a\x0f\x37\x5d\x8c\x16\x4f\x08\x0f\xc0\x16\x08\ +\xd3\x01\xf2\xf7\xd9\x1d\xbb\x0b\xd4\x4f\x3e\x4c\x32\xa9\x3f\xeb\ +\xc6\x58\x83\x74\x74\x6e\xe6\xbf\xff\x30\x6b\x45\x02\x8b\x78\x92\ +\x7f\x9a\x99\x7c\x01\x0b\xfa\x6f\x38\x11\xee\x15\x0b\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\xdd\x91\xc3\x20\ +\x10\x83\x37\x57\xc3\xd5\x91\xea\x52\xc6\x55\x77\x75\xa4\x87\xe4\ +\x89\x19\x86\xb1\x61\x61\x25\x81\xc7\xe8\xd9\x11\xd6\xc7\x8f\xbd\ +\x04\x9b\x6d\x6d\x6d\xdd\x59\x0f\x65\x63\xbf\x7f\xff\x1f\xcf\x75\ +\xef\xd7\x53\x76\x5f\xd4\x86\xbc\x81\x5b\x62\x02\x81\x1b\xa3\x42\ +\x9f\x09\x0d\x03\x66\xc6\x0e\x5e\x0a\x05\x02\x62\xa2\x0e\x9f\x84\ +\x80\x10\x32\x98\x15\xbc\x54\x04\xc4\xf0\x0f\x57\x09\x9f\x34\x0a\ +\xa1\xfb\x47\xab\x05\x2f\xd5\x0b\xa2\xeb\xe2\xd5\xc3\x27\xf5\x40\ +\x70\x5f\x78\x95\xf0\x49\x5e\x08\x3f\xec\x1b\x59\x5d\x2e\x4a\x57\ +\xeb\xfd\x24\xcf\x28\x68\x5e\xd0\x0a\x9f\x37\xa2\x02\x55\x06\xab\ +\xb5\xdb\x82\x00\x9d\x02\xef\xd7\xf3\xc1\x2e\x64\xd0\xfe\x55\x00\ +\xa3\x3d\xca\x82\x30\xe2\xdb\xca\x70\x0a\x20\x3a\x9c\xd1\x10\x22\ +\x7e\xb5\x2c\xe1\x29\x10\x99\x7f\x5e\xd5\x7c\xa2\x1d\x75\x68\x3c\ +\x62\xca\xba\x49\xa4\xef\x91\x17\x6c\x11\x64\x8c\x04\x66\xcf\x27\ +\x41\x9f\x02\x48\x08\x8a\xf0\x66\x07\x53\x00\x61\x1e\xbd\x79\x66\ +\xf8\xd2\x9b\xf2\x2a\x1c\x19\x09\xaa\x9e\x4f\xa2\xd5\x02\x23\x10\ +\xd4\xe1\xcd\xc8\xc5\x50\x0f\x84\x19\xe1\xcd\x8a\x35\x80\xd5\x50\ +\x2b\x9c\x3a\x7c\xde\x9e\xa4\x1c\x1e\x5d\x13\x14\xc5\x95\x6c\x3f\ +\xa0\x37\x8c\xaa\xb2\x94\x6e\x88\x78\x43\x29\xf7\x1f\xe4\x3b\x42\ +\xad\x70\xea\xcd\x17\x39\x80\xc8\x7b\x00\x43\x52\x00\xde\x70\x4a\ +\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd1\x47\x9d\x02\x02\x1d\x80\ +\x27\xfc\x4c\x08\x94\x6a\x30\xa9\xb7\xe7\x15\x2f\x45\x92\x6a\xf0\ +\xa8\xa1\x5c\x67\x61\x66\x8c\x04\x0a\x80\x48\x4f\xaa\x21\xc0\x01\ +\x20\x86\xb1\x12\x02\x6c\x53\xd4\x0c\x3f\x87\x15\x7e\xb0\x11\xc0\ +\x58\xc0\x14\x23\x01\x02\x80\xb9\x7a\xb3\x21\x84\x6f\x5c\x55\xcf\ +\xb3\x36\x5a\xa7\xec\x09\xae\xe0\x97\x74\x0a\x80\xf5\x5f\x5c\x44\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\x3f\x7c\x40\x62\x75\xb5\x46\ +\xf2\x3e\x22\xe3\x35\xbb\x1a\x84\x7d\x4a\xcc\xa9\x7d\x50\xb2\xd7\ +\x7c\x75\x08\xd4\xa3\xb2\xb9\x56\x03\x21\x3b\x2c\x9d\x6b\x15\x08\ +\x53\x8e\xcb\x27\xcd\x86\x10\x2d\x88\xf6\x27\x33\x08\x93\x5c\xb7\ +\xfd\x68\xea\x48\xb7\xfc\x6c\xae\xa6\x15\x3f\x9c\xdc\xba\xbb\xbe\ +\x18\x5f\x5a\xd7\x14\x54\xdf\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x0d\xfc\ +\x52\x2b\x9c\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x03\x18\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xca\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x6f\x14\x57\x10\xc6\x7f\xdf\xf3\xc9\x41\x44\x8e\x50\xaa\ +\x84\x3f\x20\xc5\x35\xc6\x77\x05\xa4\x81\x5d\x23\xc5\xc2\xb7\x40\ +\xe4\x0e\xba\x20\xe1\xc2\x55\xd2\x05\x4c\x89\xa3\xa4\x4a\x67\x25\ +\x8a\x94\x74\xa1\x33\x10\x9f\x8d\x0c\xb2\x39\x68\x02\x52\x6c\x73\ +\x05\x96\xf2\x0f\x38\x54\x11\x8a\x15\x94\x00\xb7\x5f\x8a\xdb\x3d\ +\x5f\x24\xaf\xed\x43\x4e\x95\xfb\xaa\xb7\xb3\x33\x6f\xbe\x99\xf7\ +\xde\xcc\x40\x1f\x7d\xfc\xdf\xa1\x5e\x94\xa3\x28\x2a\x6d\x31\x94\ +\x58\x9e\x10\x3e\x6e\x38\x9a\x6d\xb2\x69\xf4\x58\xd6\xdc\x10\x5b\ +\xf5\x46\xa3\xf1\xfa\xc0\x09\x54\x47\xcf\x7e\x64\xa7\x5f\x03\x65\ +\xa4\x75\x48\x1f\x3a\xd5\x6f\x00\x0a\x7e\x1f\xc2\x49\xec\x11\x60\ +\x23\x04\x7f\xfa\xcb\xf2\xe2\xbd\x83\x22\xa0\x4a\x5c\xbb\x02\xcc\ +\x60\x6e\x7a\x20\xbd\xb6\xbe\x7c\x67\x63\x27\xc5\x91\xd3\x67\xca\ +\x6a\x85\xeb\x88\x8f\x85\xa6\x57\xef\xd7\xbf\x04\xbc\xcf\x18\x77\ +\x46\x25\xae\x5d\xad\xc4\xb5\x57\x95\xd1\xe4\xf2\xbe\x6d\x46\x93\ +\xcb\x95\xb8\xf6\xaa\x1a\x27\x57\xf6\xd2\xdd\x35\x03\x59\xda\x97\ +\x90\x26\xd7\x56\xea\xdf\xe5\x36\x95\x28\xb9\x88\x3c\x05\x1e\xce\ +\x44\x4d\xac\xd9\xb5\x46\xfd\x47\xb2\x88\x2b\x71\x6d\x12\xf8\x56\ +\x0a\x63\xab\x2b\xf3\x77\x7b\x26\x10\x45\x51\xe9\x0f\xbd\xdd\xc4\ +\xfc\xba\xd6\x58\x98\x00\xf8\x70\x6c\xec\xdd\xbf\x5f\x96\x7e\x00\ +\xce\x21\xa5\xd8\xa1\xbd\x4b\x7b\x6d\x7c\xfb\xd0\x60\xeb\xd2\xcf\ +\x4b\x4b\xbf\xb7\x33\x31\x7e\x13\xeb\x83\x77\xfc\xe7\x70\xd1\xc5\ +\x0c\x45\x04\xb6\x18\x4a\x80\xb2\x07\xd2\x6b\x39\xd9\xb6\x73\x25\ +\x00\x1d\xe7\x5d\x6b\x11\xce\xfe\xf5\x72\xe0\xfb\x3c\x30\xcb\xd3\ +\x40\xf9\xb9\x0e\xd7\x8a\xfc\x14\x12\xb0\x3c\x81\xb4\x9e\x5f\xb8\ +\x4a\x94\x5c\x04\xce\x81\x0b\x6d\xc0\x41\xe8\x7c\x35\x1e\xbf\x00\ +\xb0\xbe\x7c\x67\x43\xf0\x64\x00\x26\x7a\x26\x20\x7c\x1c\xd2\x87\ +\xdb\x02\x4f\x21\xa5\xc5\xce\x3b\x86\x69\x8a\xa6\xba\x02\x79\x00\ +\x3a\x51\xa4\x5e\x2a\xfa\x61\x38\x9a\xbf\xf3\x4c\x32\x8c\x8b\x09\ +\x77\x19\x06\x60\x78\x9b\x0f\xcf\xf2\x82\xb5\x13\xf6\xde\xf0\x3f\ +\xc6\x2e\x47\xc0\x66\xbb\xc2\x75\x24\xcd\xfd\x1e\x01\xd0\xcc\x3f\ +\x0d\xef\x09\x36\x7b\x26\x60\xf4\x18\xc2\xc9\x6d\x81\x66\xff\x75\ +\xf3\x8b\x0d\x43\xc0\xb3\x1d\x3e\xd6\x29\xf0\xa3\x9e\x09\xc8\x9a\ +\xc3\x1e\x19\x39\x7d\xa6\x0c\x90\x15\x99\x9f\x60\xb7\x2c\x28\x35\ +\xbe\xbd\x7a\x7f\xf1\x06\xb4\x4b\xb3\xe1\x58\x0b\xe6\x7a\x26\x30\ +\xc4\x56\x1d\xd8\x50\x2b\x5c\xcf\x44\x7e\x6b\xf0\xf5\x27\x26\x9d\ +\x6f\xfb\x62\x9b\x48\xb6\x36\xe9\xfc\xa1\xc1\xd6\x25\xb2\x6a\x28\ +\x6b\x46\xf0\xf4\x88\x5f\x2c\x14\x52\x2e\x8e\xa6\xb8\x14\x57\xe3\ +\xf1\x0b\xd9\x53\xcb\x6f\x7b\x33\xe0\xd9\x2c\xf2\xee\x52\xfc\x4d\ +\x08\x1e\xdb\x6f\x67\xdc\x11\x6f\xd4\x8c\xe2\xda\xe4\x81\x34\xa3\ +\x5c\xa7\x1a\x27\x9f\x1b\x7f\x81\x7c\xcb\xf2\xf4\xae\xed\xd8\x9a\ +\xc1\x3a\x2f\xf9\xea\xea\xca\xe2\x57\xec\xd1\x8e\xdf\x68\x20\x11\ +\x3c\xb1\xfc\x40\xf0\x0c\xb2\xa7\x66\x9d\x32\x1c\x13\x3c\x55\xf0\ +\x67\x07\x39\x90\x74\x10\x45\x51\xe9\xb9\x0e\xd7\xda\xb5\x5d\x27\ +\xba\x47\x32\xf0\xa3\x16\xcc\x1d\xf1\x8b\x85\x5e\x46\xb2\x3e\xfa\ +\xe8\xe3\x1f\x72\x78\x36\x82\x63\xad\x95\xaf\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x3b\xdc\ +\x3b\x0c\x9b\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x29\xb3\ +\x47\xee\x04\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa8\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x5a\x49\x44\x41\x54\x58\x85\xed\ +\x97\x4d\x6a\xc2\x50\x14\x85\xbf\x1b\x82\x0e\xab\x13\xbb\x06\x37\ +\xe0\x0a\x0a\xba\x07\x57\x61\x09\xe4\x29\x6d\x07\x75\x12\x21\xe8\ +\x2a\x5c\x43\x29\x74\x05\xd9\x80\x7b\x70\xa2\x1d\x2a\x21\xa7\x83\ +\x1a\xb1\x86\x50\x28\xb1\x16\x9a\x33\x7b\xf7\x3e\xde\xf9\xb8\xef\ +\x87\xfb\xe0\xbf\xcb\xce\x03\x61\x18\xf6\xcd\xec\x5e\x52\xcf\xcc\ +\x5a\x55\x98\x48\xda\x9a\x59\x22\x69\x3e\x9b\xcd\x5e\x4b\x01\xc6\ +\xe3\xf1\x54\xd2\x03\xb0\x93\xb4\x32\xb3\xf7\x8a\x00\x6e\xcc\xac\ +\x0b\x34\x81\x69\x14\x45\x4f\x05\x00\xe7\xdc\x00\x78\x01\xde\xd2\ +\x34\x1d\xc6\x71\xbc\xae\xc2\x3c\x57\x10\x04\x1d\xdf\xf7\x97\xc0\ +\x9d\xa4\x41\x5e\x09\xef\x64\xce\x08\xd8\x5d\xc2\x1c\x20\x8e\xe3\ +\x75\x9a\xa6\x43\x60\xef\x79\xde\x28\x8f\x1f\x01\x24\xf5\x24\xad\ +\x2e\x61\x7e\x0a\x01\xac\x24\xf5\x0a\x00\x66\xd6\xaa\x6a\xcf\xbf\ +\xd1\x16\x68\x17\x00\xae\xa5\x1a\xe0\xea\x00\x7e\x59\xc2\x39\xa7\ +\x2a\x8d\xa2\x28\x2a\xbc\xba\xf0\x07\x2a\x50\x03\xd4\x00\x35\x40\ +\xe9\x3b\x50\x76\x6f\xab\xd6\xd5\x2b\x50\x03\x5c\x1d\xe0\x78\x08\ +\x25\x6d\x81\x9b\x5f\xf0\x6c\x01\x9b\x7c\x70\xda\x92\x25\x66\xd6\ +\x0d\x82\xa0\x73\x29\xe7\xc3\xda\x5d\x33\x4b\x0a\x00\x92\xe6\x40\ +\xd3\xf7\xfd\xe5\x25\x20\x26\x93\xc9\xed\xa1\x2d\x6f\x64\x59\xb6\ +\xc8\xe3\x5f\xee\xba\x73\xee\x19\x78\x04\xf6\xc0\x8a\xcf\x06\xb2\ +\x0a\xb5\x80\x2e\xd0\xa0\xec\x63\x92\x2b\x0c\xc3\xbe\xe7\x79\xa3\ +\x43\xeb\xdc\x3e\xcf\xff\x50\x1b\x33\x4b\xb2\x2c\x5b\x9c\x7f\xcd\ +\x6a\x7d\x00\x2c\x83\x82\xe5\xf9\x1d\x9c\xb3\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x20\xb9\ +\x8d\x77\xe9\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xe6\x7c\x60\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x48\x11\x40\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x23\xed\x08\xaf\x64\x9f\x0f\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x02\x6b\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x1d\x49\x44\x41\x54\x58\x85\xed\ +\x96\x31\x4f\x13\x61\x18\xc7\x7f\xcf\x5d\x37\x3a\x71\x25\x01\x3e\ +\x80\x43\xb5\x08\x13\x4e\x12\x16\x1d\x20\x41\xfb\x1d\x60\xb6\xa1\ +\x12\xa1\x0c\x1d\xc0\xa8\x3d\xe3\xa4\x89\xe1\x3b\x14\x07\x18\xc4\ +\xa1\x81\x09\x26\xa0\xd8\x26\x7e\x81\x6a\x22\xd7\xa9\x4c\xd0\xf7\ +\x71\xe8\x81\x0c\x5c\xdb\xbb\x36\x2e\xf6\xbf\xde\xfb\xdc\xff\x77\ +\x4f\xee\x7d\xfe\x0f\x0c\x34\xd0\xff\x2e\x09\x75\x3a\x5f\x8a\x39\ +\x71\x67\x5e\xd0\x34\xc8\x34\x30\xee\x3f\xa9\x81\x1e\x29\x52\xf4\ +\x1a\xde\x0e\xf9\xd9\xab\xbe\x03\x0c\xbf\x3b\x7b\x62\x59\xfa\x01\ +\x48\x02\xc7\x8a\x1c\xa0\xfa\xb3\xf5\x16\x19\x13\xf4\x31\x30\x05\ +\x54\x0d\xf2\xa2\x9e\x4d\x7d\xeb\x0f\x80\xaa\x8c\xbc\x2f\xaf\x2a\ +\xb2\x29\xc2\x76\x53\xed\xf5\x7a\xf6\x7e\xf5\x4e\x48\xb7\x92\xb4\ +\xa5\xb9\xa1\xca\x33\x55\xc9\x79\xd9\x07\x6f\x10\xd1\x6e\x3f\xf2\ +\x4e\x8d\xb8\xa7\x6b\x09\xb7\x7c\x99\x28\x94\x17\xbb\xad\x49\x14\ +\xca\x8b\x09\xb7\x7c\xe9\x14\xce\x56\x3b\x9d\x6d\xdb\x01\xbf\xed\ +\x5f\x51\x96\xce\x5f\x4e\x6c\x75\x0b\x00\x90\x70\xcb\x4b\xc0\x67\ +\x63\xe4\x69\x7d\x25\xb5\x17\x1e\x20\x5f\x8a\x25\xe2\xce\xa9\x08\ +\x3f\x7e\x2f\x4f\xa4\xc3\x98\xdf\x82\xd8\x06\xee\x9d\x37\xbc\x87\ +\x41\x3f\xa6\x15\x54\xec\xc4\x9d\x79\x20\xd9\x54\x7b\x3d\x8a\x39\ +\x80\xc1\xce\x01\x49\x67\xc8\x99\x0b\x3a\x13\x08\xd0\xba\x6a\x1c\ +\x07\xfd\x70\xdd\xa8\x55\xab\x27\x16\x12\xd8\xc1\x40\x00\x90\x69\ +\x45\x0e\xa2\x9a\x5f\x4b\xb1\xf6\x55\xf4\x51\x04\x00\xc6\x6f\xee\ +\x79\x6f\x08\xbf\xf8\x3b\xb0\x42\x01\xfc\x13\xb5\x03\xa8\x21\x32\ +\xd6\xbb\x85\x8c\x02\xb5\x08\x00\x7a\xe4\x8f\xd7\xde\xec\x31\x33\ +\xa2\x72\x18\x1a\x40\x91\x22\x30\x35\xec\x56\x92\x51\xcd\x5b\xb5\ +\x32\x69\xd0\x62\x68\x00\xaf\xe1\xed\x00\x55\x5b\x9a\x1b\x51\x01\ +\x2c\x9a\x9b\x40\xc5\xbb\xf0\x76\x43\x03\x90\x9f\xbd\x32\x46\x32\ +\xaa\x3c\x0f\x93\x03\xd7\xf2\x47\xf1\x82\x41\x32\xed\xe2\xb9\xed\ +\x2d\xa8\xaf\xa4\xf6\x04\xcd\x21\x7c\x0a\x15\x46\x2d\xf3\x8f\xaa\ +\x92\xeb\x14\xcb\x5d\xc5\xb1\xe3\x7e\x7f\x25\xa2\xaf\x81\x2f\x06\ +\x3b\xd7\x2e\x8e\xfd\xb6\x2f\x28\xac\x79\xcb\xa9\xb7\x9d\xe2\x38\ +\xe2\x42\xa2\x27\x8a\xb5\xef\x0f\x19\x40\x46\x05\x33\x03\x32\x09\ +\x54\x0c\x92\xe9\xdf\x42\x72\x5b\xf9\x52\xcc\x19\x72\xe6\x2c\x24\ +\xed\x8f\xd7\x9b\x95\x4c\x54\x0e\x0d\x5a\xf4\x2e\xbc\xdd\x30\x2b\ +\xd9\x40\x03\x0d\xf4\x07\x31\xe2\xd8\x82\x22\x4a\xad\xa7\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x50\x10\x86\xbf\x49\x8a\x5d\x56\xa9\x8d\x67\xc8\ +\x46\xbb\xf2\x04\x05\xbd\x83\xa7\xb0\xe8\xae\xed\xa2\x2e\x0d\xda\ +\x4b\x78\x86\x52\xe8\x09\xb2\x52\xbb\xc8\x19\x14\x41\xbb\x54\x48\ +\xa6\x0b\x63\x10\x83\x0a\x35\xe9\xa6\xef\xdb\xe5\xbd\x21\xff\xc7\ +\x3c\x42\xe6\xc1\x7f\x47\x0e\x17\x1c\x6f\xdc\x50\xb1\x1e\x55\xa9\ +\x03\xc5\x8c\x72\x56\x22\xf8\xa2\xd1\x60\xde\xb9\xff\x38\x2a\x70\ +\xeb\x4d\x7b\x02\x4f\xc0\x1a\x34\x40\xe5\x3b\x93\x78\xd1\x1b\x10\ +\x17\xb8\x46\xe9\x2d\xba\xd5\x97\x94\xc0\xdd\x60\xd2\xd4\x48\xde\ +\x81\x4f\x5b\xb5\x35\xeb\xd6\xe6\x99\x84\xc7\x54\xfa\x13\x27\x14\ +\x19\x01\x0f\x16\x51\x73\xd7\x09\x2b\xa9\x50\x69\x03\xeb\x3c\xc2\ +\x01\x66\xdd\xda\xdc\x56\x6d\x01\x9b\x10\xbb\xbd\x5b\x4f\x04\xb6\ +\x67\xae\x41\x1e\xe1\xfb\x12\x40\x20\x68\x3d\x25\x00\x14\x33\x3b\ +\xf3\x53\x28\x2b\xa0\xb4\x7b\xbc\x3a\x57\x5f\xf6\xa6\x7a\x49\xde\ +\xa2\x53\x4d\x7d\x69\xfb\x58\xa7\x36\xff\x02\x23\x60\x04\x8c\x80\ +\x11\x30\x02\x46\xc0\x08\x9c\x9d\x07\xce\xfd\xcf\x2f\x65\xbf\x03\ +\xab\xed\xf4\x9a\x33\x42\x11\x58\xa6\x04\x44\xf0\x41\xdc\x4a\x7f\ +\xe2\xe4\x95\x1d\xbf\xdb\x55\xc4\x4f\x0b\x68\x34\x00\xae\x43\x91\ +\x51\x1e\x12\xce\xdb\x57\x25\x1e\xcb\x0b\x36\xe1\x30\xc9\xdd\x2f\ +\x2a\xf7\xa7\xaf\x08\xcf\xc0\x06\x08\xe2\x01\xf2\x72\xb6\x6d\x77\ +\x81\xc2\xd1\x8b\x49\x62\xea\x8d\x1b\x21\x76\x3b\x1e\x9d\x4b\x87\ +\xfb\xbf\x64\xa9\x88\x6f\x13\x0e\x0f\xaf\x66\x86\x1f\xb5\xcb\x74\ +\xcb\x4c\x58\x91\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +\x00\x00\x03\x0a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xbc\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbd\x4f\x14\x51\x14\xc5\x7f\x67\x86\xd0\x48\x2c\x98\x31\x51\ +\xff\x00\x8b\xd5\x15\xad\xb4\xd2\xd8\x68\x21\x7e\x84\x4e\x3a\x4d\ +\xa4\xa0\x52\x59\x8d\x82\x05\x85\x1a\x95\x41\x3b\xa2\x31\xd1\x4e\ +\x3b\x14\xc1\x42\x2d\x08\x54\x5a\xe9\xee\xba\x24\xfe\x03\x68\xe2\ +\x0e\x85\xc1\x06\xdc\x77\x2d\x76\x46\x88\xb2\xcb\x2e\xc1\xca\x3d\ +\xd5\x7b\x33\xf7\xe3\xbc\xfb\xde\x3b\xf7\x41\x0b\x2d\xfc\xef\x50\ +\x53\xd6\xc3\xd3\x6d\x41\x47\xd0\x2d\xac\x07\x74\x00\xd8\x99\xfc\ +\x99\x07\x7b\x6f\x68\x3c\x5e\x8c\xa7\x18\x3e\xf2\x73\xd3\x09\x74\ +\xde\x2d\x1e\xf5\x3c\xbb\x0f\x64\x80\x0f\x86\x66\x31\xfb\x52\x8d\ +\xa2\x1d\xc2\x0e\x01\xfb\x81\x39\x87\x2e\x2c\xe4\xb2\x6f\x37\x87\ +\x80\x99\xb6\x8d\x16\xae\x19\xba\x29\xf1\xbc\x62\xfe\xf5\x85\xdc\ +\xee\xb9\x35\x49\x46\xa5\x8c\xaf\xca\x0d\x33\x4e\x9b\x69\x28\xce\ +\xed\xb9\x8d\x64\x8d\x2e\x72\x4d\x6c\x8b\xf2\x83\x61\x54\x58\x0e\ +\x47\x0a\xe7\x1b\xf5\x09\x47\x0a\xe7\xc3\xa8\xb0\x1c\x8c\x14\xaf\ +\xad\x67\x5b\xb7\x02\x49\xd9\x5f\x63\xf4\x95\x2f\xef\x7d\x04\x80\ +\x99\xc2\xd1\x62\xaf\x41\xbf\xa0\x0b\xc0\x20\x2f\x18\x2b\x0f\x64\ +\x9f\xa6\x2b\x0e\xa3\x42\x1f\xf0\xd0\x39\x1d\x5b\xb8\x92\x7d\xd3\ +\x3c\x81\xe1\xe9\xb6\xb0\x23\xc8\x4b\x7c\xfe\x36\xb0\xb7\x07\x60\ +\xeb\xbd\x52\x67\xbb\x55\x9e\x60\x9c\x34\xc3\x49\x78\x55\x4e\xc9\ +\x58\x4c\x2c\xc9\x3f\xf7\xfd\xd2\xee\x85\x84\xc4\x73\x60\x57\x79\ +\x31\xee\xaa\x75\x30\xbd\x5a\xf9\x83\x8e\xa0\x1b\xc8\x54\xcc\xbf\ +\x9e\xae\xbc\xdd\x2a\x4f\xcc\xe8\x06\x48\x93\xaf\x1e\x9b\x71\xa2\ +\xdd\x2a\x8f\x31\x13\x80\xc3\x1f\x02\x32\xc1\x96\xe0\x78\xad\x3c\ +\x35\x09\x54\xaf\x1a\x1f\xd2\x03\x17\x8e\x16\x7b\x31\x4e\xaa\xae\ +\x0f\x1e\xc6\xa9\x30\x2a\x9e\x01\xa8\xfa\xda\x47\x0f\xf5\x34\x4d\ +\x00\x74\xc0\xd0\x6c\x3a\x33\xe8\x37\xc3\xd5\xb6\x4f\xec\x0c\x87\ +\x67\xfd\x2b\x7e\xde\x8c\xc9\x0e\xd6\xb2\x6f\xab\x13\x6b\xe7\xef\ +\x7b\x0e\x08\xba\x50\x3d\xc2\x89\x9d\xf0\x40\x5d\xab\x28\x7d\x65\ +\x45\xb0\xfe\xc2\xba\x01\xff\x35\xea\x11\x98\x47\xda\x91\x4e\x0c\ +\xf2\x0d\x6f\x01\x96\x5f\xf9\xa2\xed\xc0\xfc\x06\x08\xd8\xfb\x44\ +\x5e\xab\x61\x60\x4c\x8d\x6e\x81\xd3\xd8\x8a\x9f\x3b\x2c\xd3\xbb\ +\xa6\x09\x18\x1a\x07\xf6\x77\x46\xa5\x0c\x40\x55\x64\x78\x69\xd4\ +\xae\x82\x81\x43\x4c\x94\x73\xd9\x67\x50\x95\x66\xd0\x3e\x87\x8d\ +\x37\x4d\x20\x5e\x8c\xa7\x80\x39\x5f\x95\x1b\xc9\xd2\x6c\x49\xfe\ +\x59\x89\x49\x48\x4b\x9d\x24\x4e\xc6\x12\x93\x4b\xf2\xcf\xa5\x6a\ +\xe8\x51\xb9\x09\x94\xe2\x1f\xf1\xab\x5a\x79\x36\x26\xc5\x51\xf1\ +\x4c\xf5\xaa\xa5\xa7\xdd\xf2\x38\x8d\x95\x73\xd9\x67\x7f\x48\xf1\ +\x03\x87\x8e\x35\xda\x19\xd7\xc4\x86\x9a\x51\x54\xe8\xdb\x94\x66\ +\x04\x80\x99\x82\xe8\xd3\x55\xc9\x6e\x01\x2f\x1c\xfe\x50\xbd\x76\ +\x9c\x94\xfd\x94\xc1\x60\x3c\x90\xbd\xb3\x5e\x3b\xde\xe0\x83\xc4\ +\x3e\x1a\xde\x4c\x22\x32\x80\xb6\x0b\x77\x18\xb4\x0f\x28\x39\x74\ +\x71\xf3\x1e\x24\xab\x31\x3c\xdd\x16\x6c\x09\x8e\x7b\xa8\x27\x91\ +\xd7\xdf\x4f\x32\x99\xde\x39\x6c\x3c\xfe\x11\xbf\x6a\xe6\x49\xd6\ +\x42\x0b\x2d\xfc\x02\x9d\x07\x3c\xe4\x1f\x0b\x5f\x15\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa4\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x56\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x67\x8a\x2e\xab\xd4\xc6\x33\x64\ +\xa3\x5d\x79\x82\x82\xde\xc1\x53\x58\x74\xd7\x76\xa1\x4b\x83\xf6\ +\x12\x9e\xa1\x14\x7a\x82\xac\xd4\x2e\x72\x06\x45\xd0\x2e\x15\x92\ +\xd7\x85\x31\x48\xd2\x74\xd1\x26\x28\x34\xdf\x72\x66\x98\xff\xe3\ +\x0d\x33\xbc\x81\xff\x8e\x44\x07\x4c\x7b\xd6\x52\x29\x3c\xa8\xd2\ +\x04\xca\x29\xe5\x6c\x45\x70\x44\xfd\xf1\xaa\x77\xf7\x96\x28\x70\ +\x63\x2f\x86\x02\x8f\xc0\x0e\xd4\x45\xe5\x33\x95\x78\xd1\x6b\x10\ +\x0b\x28\xa1\x0c\xd7\xfd\xfa\x73\x4c\xe0\x76\x3c\x6f\xab\x2f\xaf\ +\xc0\xbb\xa1\xda\x59\xf6\x1b\xab\x54\xc2\x03\x6a\xa3\xb9\xe9\x89\ +\x4c\x81\xfb\x02\x7e\xfb\x58\x89\x42\xb8\x42\xa5\x0b\xec\xb2\x08\ +\x07\x58\xf6\x1b\x2b\x43\xb5\x03\xec\x3d\x8c\xee\x71\x3c\x14\x38\ +\x9c\xb9\xba\x59\x84\x9f\x4a\x00\xae\xa0\xcd\x98\x00\x50\x4e\xed\ +\xcc\x7f\x42\xd9\x02\x95\xef\x04\xce\x42\x2e\x70\x76\x81\xab\xa4\ +\x89\xaa\xbd\xd0\x34\x83\xd6\xbd\x7a\xec\xd5\x85\x0b\xa8\x40\x2e\ +\x90\x0b\xe4\x02\x89\xef\x40\xd2\xbd\x4d\x9b\xb3\x57\x20\x17\xb8\ +\x28\x81\xed\xa1\x7b\xcd\x18\xa1\x0c\x6c\x62\x02\x22\x38\x20\x56\ +\x6d\x34\x37\xb3\xca\x0e\xf6\xb6\x14\x71\xe2\x02\xea\x8f\x81\x92\ +\x27\x32\xcd\x42\xc2\x7c\xf9\xa8\x05\x6d\x79\xd1\xc0\x9b\x84\xb9\ +\xa7\x8b\xaa\xa3\xc5\x00\xe1\x09\xd8\x03\x6e\xd0\x40\xfe\x9d\x43\ +\xd9\x2d\xa0\x98\xf8\x31\x09\x4d\xed\x59\xcb\xc3\xe8\x06\xad\x73\ +\x25\x3a\xff\x4b\x36\x8a\x38\x06\xde\x24\xfa\x35\xcb\xf9\x02\xdd\ +\x44\x74\xcb\x69\x25\xf5\xbc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x00\x9e\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x0f\xfd\ +\x8f\xf8\x2e\x00\x00\x00\x22\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xfe\x9f\x87\xb1\x18\x91\x05\x18\x0d\xe1\x42\x48\x2a\x0c\x19\ +\x18\x18\x91\x05\x10\x2a\xd1\x00\x00\xca\xb5\x07\xd2\x76\xbb\xb2\ +\xc5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x9d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x4f\x49\x44\x41\x54\x58\x85\xed\ +\x97\xbf\x4e\xc2\x50\x14\x87\xbf\x43\x28\x8c\x94\x05\x9f\x81\x85\ +\x44\x4c\x70\x85\x68\x2a\x11\xe3\x0b\xf0\x14\x75\x56\x07\xd9\xe1\ +\x29\x78\x04\x62\x6c\x4c\xba\x77\xc0\x84\xa5\xef\xc0\x02\x8e\x58\ +\x92\xeb\x50\x8a\x4d\xf9\xd3\x44\x5a\x17\xef\xb7\xf5\xde\x9b\xfe\ +\xbe\x9e\xa6\xe9\x39\xf0\xdf\x91\xe4\x42\xb3\xd3\xbb\x01\xf5\x00\ +\xd2\x02\xcc\x8c\x72\x96\xa0\x3c\x90\xe1\xd4\x9d\xbc\x1d\x14\xb8\ +\x68\xdf\x0d\x94\xa8\x47\x60\x25\xe0\x2b\xd4\x67\x16\xe9\x82\x54\ +\x14\xd4\x81\xb2\x82\xc1\x87\x3b\x79\xde\x11\x68\xb6\x6f\xbb\x88\ +\xbc\x02\xef\x6b\x23\xe8\xcf\x1c\x67\x9e\x45\x78\x44\xc3\xb2\x6a\ +\xc5\xc0\x18\x03\xd7\x40\x37\xaa\x44\x21\xa6\x69\x03\xab\x3c\xc2\ +\x01\x66\x8e\x33\x5f\x1b\x41\x1f\xf8\x02\xec\x68\xfd\x47\x00\x69\ +\x09\xf8\x79\x84\xc7\x25\x00\x1f\x68\xed\x11\xc0\xcc\xea\x9d\x1f\ +\x47\x2d\x81\x6a\x74\x55\x4c\x3b\xde\xec\xf4\xd4\x29\x71\x53\x77\ +\xb2\xf3\xa5\xc5\x29\x1c\xdb\xfc\x0b\xb4\x80\x16\xd0\x02\x5a\x40\ +\x0b\x68\x01\x2d\x90\xda\x0f\xa4\xfd\xcf\x4f\x25\x5e\x81\xa5\x20\ +\x95\x3c\xc3\x42\xc4\x04\x16\x7b\x04\x94\xa7\xa0\xde\xb0\xac\x5a\ +\x5e\xd1\x9b\x7b\xd7\x01\x6f\x8f\x80\x0c\x81\x72\x31\x30\xc6\x79\ +\x48\x5c\x5e\xdd\x9f\x6d\xda\xf2\x12\x30\xda\xa6\xc6\x0f\x9d\x77\ +\x7a\x2f\x02\x4f\x84\xad\xb3\xbf\x69\x20\x33\x40\x4c\xc2\x27\x2f\ +\x1d\x1c\x4c\x22\xc2\xd1\x0c\x9b\xb0\x75\xae\x26\xf7\x7f\xc9\x82\ +\xb0\xec\xa3\xe4\x68\xa6\xf9\x06\xfe\xc1\x65\x8b\x9b\xf2\xc3\xc8\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +" + +qt_resource_name = b"\ +\x00\x09\ +\x09\x5f\x97\x13\ +\x00\x71\ +\x00\x73\x00\x73\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x73\ +\x00\x0a\ +\x09\x24\x4d\x25\ +\x00\x71\ +\x00\x64\x00\x61\x00\x72\x00\x6b\x00\x73\x00\x74\x00\x79\x00\x6c\x00\x65\ +\x00\x09\ +\x00\x28\xad\x23\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x73\x00\x73\ +\x00\x02\ +\x00\x00\x07\x83\ +\x00\x72\ +\x00\x63\ +\x00\x11\ +\x0a\xe5\x6c\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\x09\ +\x06\x98\x83\x27\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x08\x8c\x6a\xa7\ +\x00\x48\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x1a\ +\x01\x21\xeb\x47\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x6d\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0a\ +\x05\x95\xde\x27\ +\x00\x75\ +\x00\x6e\x00\x64\x00\x6f\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x13\ +\x08\xc8\x96\xe7\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\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\x1f\ +\x0a\xae\x27\x47\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x0c\xe2\x68\x67\ +\x00\x74\ +\x00\x72\x00\x61\x00\x6e\x00\x73\x00\x70\x00\x61\x00\x72\x00\x65\x00\x6e\x00\x74\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\x14\ +\x0b\xc5\xd7\xc7\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x76\x00\x6c\x00\x69\x00\x6e\x00\x65\x00\x2e\ +\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x08\x90\x94\x67\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\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\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\x0e\ +\x0e\xde\xfa\xc7\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x12\ +\x07\x8f\x9d\x27\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\ +\x00\x67\ +\x00\x0f\ +\x02\x9f\x05\x87\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\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\x11\ +\x08\xc4\x6a\xa7\ +\x00\x56\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x10\ +\x01\x07\x4a\xa7\ +\x00\x56\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x19\ +\x08\x3e\xcc\x07\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x65\x00\x6e\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x01\xe0\x4a\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\x14\ +\x06\x5e\x2c\x07\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2d\x00\x6f\x00\x6e\x00\x2e\ +\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x06\x53\x25\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\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\x10\ +\x01\x00\xca\xa7\ +\x00\x48\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x08\x3f\xda\x67\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x01\xf4\x81\x47\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x18\ +\x03\x8e\xde\x67\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\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\x1a\ +\x0e\xbc\xc3\x67\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\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\x11\ +\x0b\xda\x30\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x1a\ +\x01\x87\xae\x67\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x17\ +\x0c\x65\xce\x07\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\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\x19\ +\x0b\x59\x6e\x87\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\ +\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1a\ +\x05\x11\xe0\xe7\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x17\ +\x0f\x1e\x9b\x47\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\x00\x6f\x00\x63\ +\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x20\ +\x09\xd7\x1f\xa7\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x66\x00\x6f\x00\x63\x00\x75\x00\x73\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\x1d\ +\x09\x07\x81\x07\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\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\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00\x2b\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ +\x00\x00\x00\x4a\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\ +\x00\x00\x04\x50\x00\x00\x00\x00\x00\x01\x00\x00\x38\xb2\ +\x00\x00\x03\x44\x00\x01\x00\x00\x00\x01\x00\x00\x30\xca\ +\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x1c\xe5\ +\x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x25\x44\ +\x00\x00\x05\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x42\x67\ +\x00\x00\x03\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x34\x47\ +\x00\x00\x04\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x20\ +\x00\x00\x02\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xeb\ +\x00\x00\x04\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x3d\x59\ +\x00\x00\x02\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x8f\ +\x00\x00\x06\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x47\x2c\ +\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x9f\ +\x00\x00\x04\x32\x00\x00\x00\x00\x00\x01\x00\x00\x38\x2d\ +\x00\x00\x04\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x37\x83\ +\x00\x00\x03\xe0\x00\x00\x00\x00\x00\x01\x00\x00\x36\xec\ +\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x06\ +\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x4d\x88\ +\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x2c\x51\ +\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x01\ +\x00\x00\x03\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x33\x63\ +\x00\x00\x04\x76\x00\x00\x00\x00\x00\x01\x00\x00\x39\x92\ +\x00\x00\x00\x94\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x35\ +\x00\x00\x02\x34\x00\x00\x00\x00\x00\x01\x00\x00\x27\xc8\ +\x00\x00\x03\x1c\x00\x01\x00\x00\x00\x01\x00\x00\x2e\x38\ +\x00\x00\x01\x10\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xcc\ +\x00\x00\x07\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x2a\ +\x00\x00\x06\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xe0\ +\x00\x00\x01\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x22\xf7\ +\x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x17\x21\ +\x00\x00\x06\x12\x00\x00\x00\x00\x00\x01\x00\x00\x44\xbd\ +\x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00\x26\xd5\ +\x00\x00\x05\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x41\xc3\ +\x00\x00\x05\xde\x00\x00\x00\x00\x00\x01\x00\x00\x44\x13\ +\x00\x00\x05\x48\x00\x00\x00\x00\x00\x01\x00\x00\x41\x19\ +\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x24\x7d\ +\x00\x00\x05\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x3d\xfd\ +\x00\x00\x02\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x2b\xa7\ +\x00\x00\x06\x84\x00\x00\x00\x00\x00\x01\x00\x00\x48\xd2\ +\x00\x00\x01\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x22\x54\ +\x00\x00\x00\x32\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() diff --git a/themes/qdarkstyle/pyqtgraph_style_rc.py b/themes/qdarkstyle/pyqtgraph_style_rc.py new file mode 100644 index 0000000..8121056 --- /dev/null +++ b/themes/qdarkstyle/pyqtgraph_style_rc.py @@ -0,0 +1,1635 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt4 (Qt v4.8.7) +# +# WARNING! All changes made in this file will be lost! + +from pyqtgraph.Qt import QtCore + +qt_resource_data = b"\ +\x00\x00\x17\x1d\ +\x00\ +\x00\xa6\xa5\x78\x9c\xdd\x3d\x6d\x73\xdb\x36\xd2\xdf\xfd\x2b\x90\ +\xf8\x8b\xd3\xc7\x8a\x2d\xc9\x76\x13\x75\xf2\xc1\x8e\x9d\x5e\xe6\ +\x49\x93\xb4\x76\xdb\xb9\xb9\xb9\xf1\x50\x12\x2c\xf1\x4c\x91\x0a\ +\x49\xc5\xf1\x75\xfc\xdf\x0f\xef\xc4\x3b\x40\x91\x76\xee\x79\xdc\ +\xab\xcf\x05\x81\xc5\xee\x62\xb1\xbb\x58\x60\x81\x83\x1f\xc0\xaf\ +\xe7\x49\x79\x7b\x59\xdf\x67\xf0\x72\x09\x61\x0d\x06\x5b\xfe\xec\ +\xec\x5c\x2d\xd3\x0a\xa0\xff\xd5\x4b\x08\x56\x49\x9a\x83\x0a\x43\ +\x05\x15\x06\xbb\x4f\x4a\xd7\x49\x06\xeb\x1a\x82\x65\x52\x81\x3c\ +\xcd\x59\xb5\x59\x91\x15\x65\xf5\x72\xe7\x7d\x8d\x5b\x4f\x93\x0a\ +\xce\x41\x91\xa3\x06\x25\x44\xad\x61\x06\x67\x75\x9a\x2f\x58\xb5\ +\x7d\x56\xbe\x28\xe1\x7d\x5a\x2d\xc1\xde\x34\x99\xdd\x2e\xca\x62\ +\x93\xcf\x5f\xb0\x2a\x3b\xeb\x6c\x53\xb1\x6a\x77\xcb\xb4\x26\xd5\ +\x6e\x8a\x12\xaa\xd5\x5e\x82\x8b\x64\xb6\x44\x1d\xd4\xa0\xb8\x01\ +\x77\xe9\x7c\x01\xeb\x0a\xff\x89\x31\xad\x92\x15\xdc\xa9\xef\xd7\ +\x18\xd7\xaf\x10\x24\x60\x09\x93\x39\x2c\x41\x96\xde\x42\x54\x21\ +\xad\x26\x3b\x3b\x00\xfd\x58\xf8\x80\x8b\x7f\x46\x3d\xad\x3f\x22\ +\x18\x40\x29\xb6\x71\xed\x34\x9f\x03\x88\x11\xa1\x18\x60\x16\x54\ +\x70\x9d\x94\x49\x8d\xd8\x70\x97\xd6\x4b\x77\xe7\xbf\xfe\x49\x9a\ +\x48\xfd\xb0\x41\x58\x25\xb7\x10\xfd\x46\x24\x23\xd0\xd5\x3d\xa8\ +\x0b\x70\x93\xa2\x7e\x12\xf4\xef\x6c\x99\xe4\x0b\x44\x60\x81\x1a\ +\xcd\xaa\x0a\x7d\x80\xd9\xfc\x25\xb8\x42\x44\x23\xd6\xa7\xb3\x9d\ +\x59\x91\xdf\xa4\x8b\x0d\x42\x20\x45\xa3\x80\xa0\xcd\x61\x35\x2b\ +\xd3\x29\x42\x67\x0a\xb3\xac\xb8\x7b\x49\x7b\xbf\xbc\xf8\x70\xf1\ +\xf6\xea\xfd\xa7\x8f\x40\x25\x08\xb0\x1f\x34\x72\xd7\x59\xba\x58\ +\xd6\x00\xec\x0e\x7f\x7c\x7d\x7a\x71\x88\xfe\xff\xe8\xd5\xdb\xf3\ +\x11\xd8\x63\xa3\x5a\xe4\x07\xcb\xe2\x2b\x2c\x0f\x12\xf4\x1f\x5f\ +\xe1\x0b\xa5\x6d\x5e\x94\xab\x24\x03\xbb\xe3\xf1\x8f\xc7\xa7\x63\ +\xdc\xf6\xe4\xe8\xf4\x90\xb7\x85\x73\xb5\xf6\x1c\x49\x31\xc0\x3d\ +\xbd\x3a\x3a\x39\x3e\xc7\xb5\x8f\x0f\x4f\x2e\x9a\xda\x60\x9e\x56\ +\xc9\x34\xc3\xcd\x48\xbb\x77\x9f\x7e\xbb\xf8\xf9\xb7\x4f\xbf\x7f\ +\x3c\x07\x56\xec\x91\xbc\x08\xec\x2f\xde\xbd\x3b\x7c\x37\x04\xbb\ +\xe8\x37\xfa\x07\xec\xd5\xf0\x5b\x5d\x1d\x64\x09\x62\x47\xf5\x42\ +\x69\xc1\x70\xe6\x3f\xbb\xa7\xe4\x07\xec\xe5\x45\x0d\x36\x58\xae\ +\xef\x61\xad\xb6\xe0\x78\x1f\x1f\x1e\xbf\x3b\x79\x0d\x76\x7f\x7c\ +\x85\xff\x01\x7b\x1c\x5d\x40\x3a\x63\x48\x9f\x9d\xbe\xfd\x5f\x1f\ +\xd2\x68\x2e\x08\xa4\x8f\xce\x8f\x8f\x8e\xcf\x04\xe0\xbd\x4d\xbe\ +\x2e\x61\x55\xc9\x7c\xc3\xd5\x05\x97\x87\xe3\x93\x31\xaa\x3e\x1e\ +\x1d\x0d\x8f\xce\xd0\xb4\x2a\x4a\x24\x72\xfb\x82\x6d\xfb\x80\x35\ +\xdf\x47\x12\x04\x67\xb7\xf8\x8f\xba\x28\xb2\x69\x82\xe7\xe4\x0a\ +\xe6\x9b\x4a\x05\xcc\x09\x1b\x8d\x47\x27\x23\x44\xd8\xf0\x35\xfa\ +\xeb\x5c\x99\xaf\x3b\x3b\xef\x6f\x90\x74\x57\x75\x89\x45\xb2\x04\ +\x86\xe4\x95\xf0\xcb\x26\x2d\x89\xe0\xcd\x12\xc4\x3f\x3c\x3b\x13\ +\x30\xdd\x2c\x6e\xd2\x6f\xa0\x28\x91\x3c\xdf\xa3\xe9\x90\x2f\x76\ +\xd0\x40\xc0\x7d\x70\x0b\xe1\x9a\xcc\xde\x59\xb1\x42\x18\xd5\x54\ +\x8b\x24\x35\x9a\x38\x48\xd7\xa0\x49\x90\x17\xd3\x62\x7e\x5f\xb1\ +\x39\x30\x07\x29\xd2\x4b\x69\x3e\xcb\x36\x73\xac\x60\x50\xcb\x9d\ +\xb4\xaa\x36\x10\xe4\x9b\xd5\x14\x96\x2f\x77\xb6\xd5\x85\x96\x1f\ +\xf0\xc3\xc1\x0e\xfa\x39\xf8\x81\xcf\xda\xad\x15\xad\x02\x91\x03\ +\xfb\x6b\x87\xf1\x9d\xf1\x76\x40\x74\xdc\x84\xb3\xfd\x27\xfa\x99\ +\x8c\xe9\x04\x1c\xae\xbf\xa1\xf9\x9f\xa5\x73\x3e\xdc\xf4\xf3\x3a\ +\x99\x63\x3e\x90\xef\xb4\x84\x03\xa1\x82\x4f\xcb\xc4\xd4\x1d\xd8\ +\x7a\x23\x73\x54\xaf\xa8\x83\x79\x10\x78\x4f\x84\x98\x47\x11\xc0\ +\xcb\xe8\x24\x89\xc2\x07\x6b\x01\x17\x3e\x1c\x8c\x84\x4f\x5a\xc3\ +\xd5\x44\xe8\x0c\x37\x52\x8c\x4e\xbd\x25\xd1\x66\xbe\x66\x58\xfd\ +\xa9\xb4\xf0\x11\x78\xa0\xc2\xf1\x0b\xb2\x88\x7f\x22\x5d\x5d\xdc\ +\x75\x12\x10\x2c\x1c\x08\x1c\xb1\x06\xc9\xfc\x5f\x9b\xaa\xa6\x76\ +\xb9\x5a\x67\x29\xb2\xc0\x25\x12\x7b\xf2\xdf\xf3\x62\x76\xcb\x2c\ +\xcf\x3e\xc0\x5a\xea\x8b\xa8\xa1\xfc\x10\xe9\x95\x90\x9b\x4c\x98\ +\x91\x2a\x3c\xe4\xca\xc2\x25\x64\x8f\x4b\x9e\x3c\xae\xd5\x3a\x99\ +\x51\xc9\xd3\x24\x71\x84\x25\xf1\xc1\xd5\x73\x88\xdd\x54\xf5\x39\ +\x65\x9f\x8f\x86\x0f\x7e\x99\xfe\xbb\xc8\x6b\xa4\x20\x69\x27\x88\ +\x53\xf5\x72\x02\x8e\xf9\x04\x59\x25\xe5\x22\xcd\x07\x75\xb1\x66\ +\xb8\x4a\x85\xd3\xa2\xae\x8b\x95\x54\x9e\xae\x92\x05\x9c\x80\x4d\ +\x99\xed\x4d\x0e\xbe\x54\xd5\x75\x8a\x14\x5e\x75\x50\xce\x0e\xfe\ +\x20\x5d\x32\x75\xfa\x72\x9d\x2f\x5e\xf8\xb0\x42\x34\xd7\xe9\x4c\ +\xe0\xb4\x84\x58\xe3\x9b\x48\x65\xf0\xa6\x36\xb1\x2a\x69\xe5\x08\ +\xa4\xfe\x66\x47\x0a\x0b\xe9\x15\x2a\xbc\x4a\xd7\x5d\x55\x18\xd5\ +\x60\x1c\x58\xd4\xac\xe1\xc3\x38\x94\x86\xd1\xa2\x20\xe4\xb2\x46\ +\xad\xfd\x84\xfe\xeb\xe0\x87\x12\xae\x90\xd8\xf0\xe2\x7d\x6c\x85\ +\x01\xb6\x27\xc8\x68\x4c\x0b\xd4\xc1\x37\x62\xd7\xea\x74\x8d\xb0\ +\xc3\xed\x0b\x2c\x9c\xf5\x3d\xe2\xd9\x18\x41\xc0\xed\xe7\x9b\x19\ +\xb1\x17\xc8\x6c\x21\xc9\x2d\x61\x3e\x23\x2e\x56\x89\xbc\x34\x64\ +\xa9\xf0\xe4\x41\x4d\x19\xab\x2e\xeb\xa4\xde\x54\x67\x49\xd9\x8d\ +\x59\x94\x55\x0d\xb0\xbf\x5c\xdc\x50\xe6\x9c\xe0\x65\x33\x19\x11\ +\x01\x88\x58\xe4\x1d\x56\xeb\x7b\xec\x53\xee\xbe\x1e\x8e\x0e\xf7\ +\xf1\xef\x21\x45\x5a\xea\xe4\xff\xf1\xd0\xc8\x54\x7e\xc0\x8e\x9c\ +\x93\xc6\x06\x54\x1d\x66\x1e\x1e\xf1\xb7\xd8\x3d\x3a\x43\xb8\xf6\ +\x31\x39\x04\xb0\x56\xf6\x51\xb1\xd7\x5c\xb7\x1e\xf1\x29\x5f\x6c\ +\x6a\xec\x10\x4d\x90\xbe\xcf\xa1\x32\x10\x54\x91\x89\x8a\xbc\x94\ +\x6b\xb2\x23\xae\x8d\x39\x56\x93\x9b\x62\x86\x96\x5a\xaa\x30\x52\ +\xa8\x72\x35\xd0\x8f\xb5\x57\x7a\x9e\x20\xb5\x88\x94\x60\x63\x7f\ +\x14\xad\x27\x48\x60\x0a\x7b\x78\xc2\x0b\xb8\xb6\xa4\x25\x0e\x90\ +\x93\x4d\xce\x9c\x5c\x06\xdc\xad\x25\x49\x3d\x24\x99\xd7\xa2\x89\ +\xa4\xbf\xbd\xa0\xa9\xf5\xda\x0f\xd5\x22\x2c\x0e\xd6\x62\xce\xb9\ +\x75\x28\xda\x12\x70\x4d\xba\x8c\x26\x43\x1b\xd4\x56\x3d\xf1\xb6\ +\x81\xce\x5a\x0f\x46\xdc\x50\xc4\x0c\x44\xcc\x30\xf4\x38\x08\x6d\ +\x86\x40\x1f\x80\xb6\xdc\x89\xe5\x3e\xfa\x0b\x22\xc5\xb9\x4a\xf3\ +\xa4\x86\xf1\x63\xa0\x34\x6b\xd3\xc5\x16\x12\xa5\xb4\xdf\x8a\x2e\ +\xef\x00\xab\x35\x7d\xe2\xa2\xd6\x54\x05\xa2\x35\x1d\x9a\x10\x60\ +\xe3\x42\x02\x4b\x7d\x19\x17\x01\x8c\xe2\x77\x83\x3c\xdd\xc1\x1d\ +\xd3\x8f\xd3\x22\x9b\x3b\xed\xba\xe9\xd8\x0f\xca\x64\x9e\x6e\x2a\ +\xd3\x78\x48\x25\xb2\xb3\x2c\xd4\xaf\x84\xc6\x64\x52\xa7\x75\xc6\ +\x25\xac\xda\x4c\x11\x7b\xea\xb2\xc8\x06\xc8\x0b\x47\x0d\x27\x0c\ +\xc0\x4f\xfa\xe7\x75\x51\xa5\x78\x5d\x87\x6c\x75\xb1\x06\xd8\x00\ +\xd0\x2a\xd4\x14\x8c\x75\x6b\xe6\x28\x2e\x35\x2f\x5a\x31\x89\xaf\ +\x5c\x26\xb1\x31\x23\x0d\x15\xbd\x59\xa6\x48\x90\x23\x4f\x7d\x8b\ +\xb9\xf1\xd7\xe2\xd3\xc0\x5f\xeb\x51\xcd\x8d\xad\xeb\x18\x22\x62\ +\x48\x78\x02\x55\xed\xeb\xb6\xbd\x66\xf3\xe8\x6a\xff\x10\xf5\x6b\ +\x96\xb1\xee\xf9\x0d\x4d\xf1\xe2\x6c\x83\x04\x3f\xef\xa2\x7e\xa8\ +\xee\x91\x81\x75\xf7\x6d\xf5\xb8\xc1\xe1\x4f\x8e\x71\xd5\x7c\xdf\ +\x07\x15\x93\x80\x3f\x2b\xd7\xec\x1e\xb8\x6a\x8b\x1c\x68\x15\xeb\ +\xf3\xb3\xcb\x50\xd2\x87\x9e\xc5\x81\x9f\x11\x86\x6e\x0a\xd2\x25\ +\x29\x30\x23\x46\xc2\xb4\xe2\xe8\x58\xd7\x8a\xb4\xc4\xdd\x79\x0b\ +\x97\x1d\x9b\xaa\xc2\xea\xaf\x87\x40\x0b\xf5\x13\xac\xc8\x75\x50\ +\xb0\x62\x48\x11\x59\x78\x17\x4d\x99\xa1\x9a\x1c\xd8\xa8\x8c\xeb\ +\x05\x87\x68\xde\x46\x72\x36\x92\xaf\x8f\xc8\xd5\xed\x78\xaa\xeb\ +\x89\x0e\x1d\x5b\x2c\x40\x50\xba\xa2\x8d\x80\x2e\x39\x76\x0b\xf0\ +\x0b\xcc\x37\x9d\x43\x59\xdc\x02\x70\x60\x51\xe1\x63\x35\x22\xec\ +\x70\x4b\x7d\xfa\xef\xa1\xe9\xd1\xaa\xe5\x87\x8e\xb8\x30\x6b\x42\ +\xc2\xfb\x06\xaa\x6a\x74\xc8\xe2\xf6\x1a\x20\xf4\xbd\x05\xd3\x4b\ +\xf6\x42\xf7\xec\xe0\x98\x5d\xa9\x93\xc0\xd2\x93\x7f\x3b\x28\x72\ +\xff\x42\x36\x30\x9a\x56\xd7\xcd\x8c\xfa\x41\x92\xa9\xce\x7b\x61\ +\xb2\x4c\x69\x03\xeb\xa0\xce\x8d\x7e\x83\x1e\x01\x67\xee\x74\x08\ +\x93\x64\x0e\x99\x75\xeb\xc1\xd6\x95\xba\x18\xd1\x97\x48\xe1\xd0\ +\x7d\x83\x1d\x9e\xc2\xca\xaa\xc0\xc2\x77\x02\xef\x48\x6b\xd7\x08\ +\xb4\x2c\x1a\x60\x84\x7f\xf1\x3f\xcc\xa9\x26\x89\x64\x13\x53\x06\ +\x68\x20\x91\xb0\xc1\xf2\x2b\x24\x4e\x06\x24\x91\x5b\xb1\xe1\xc6\ +\x00\x00\x16\x7a\x6d\xfa\xd7\x67\x83\x65\xd2\x36\xf5\x35\x37\x83\ +\xaf\x9f\x46\xc6\xfa\x69\x64\x25\xff\xa4\x91\x39\xa4\x7b\x07\xf0\ +\xdb\x2c\xdb\x54\x29\x42\xb8\x01\xfc\x86\x6e\x6d\x93\x40\x33\x3d\ +\xbb\xd2\x7c\xdb\xab\x20\x04\xbf\x9e\x12\x7a\x88\xe3\x8d\xe5\xa2\ +\xbe\xe0\x50\x5e\x34\xf2\x27\x6b\x62\xa5\xa7\xbe\xa2\x8a\x91\x9d\ +\xe8\xcc\xed\x1a\x98\xf3\x77\xdb\x43\x88\x2e\xaa\x83\x2d\xa8\xf2\ +\xda\x34\xbb\x1c\x10\x73\x08\xa6\xd4\xef\xee\x47\x14\xb6\x11\x03\ +\xb7\xa7\x1a\x01\x3d\x9e\x53\x61\xe3\xef\xe9\xaf\x1d\x2d\x6d\x28\ +\xd9\x92\x8e\x20\x15\x44\x8f\x0e\x92\xb2\x2c\xee\x34\xc5\x29\x56\ +\x1d\x9e\x3e\x70\xe3\x6b\xd2\x98\x00\xe6\x66\xec\x74\x8a\x8f\xb1\ +\xcc\xea\xf7\x48\xad\xfd\x91\xc2\x6d\x77\xef\xa9\xec\x18\xc0\x28\ +\x9a\x49\x56\xc3\x12\x47\x06\xad\x47\x1d\x02\x8b\xbf\x2d\xc2\x78\ +\x0f\x36\x54\x7e\xfd\x80\xfc\xd7\x8b\x79\x5a\xeb\xc6\x63\x24\x19\ +\x75\xde\xea\x72\x56\x16\x59\x76\x5a\xc2\x64\x2b\x7e\xa8\xdc\x90\ +\x80\x45\x2d\x81\x7b\x0b\x5c\xda\x7c\x49\x13\x29\xdd\xd9\xb6\x6c\ +\x5f\x91\x0d\xe1\x6e\x2c\x51\x59\x23\x01\xe3\xd1\x81\xf6\x7b\x6d\ +\x0a\x62\x7d\xed\x54\x73\x60\xe6\x19\x0a\x35\xce\x29\x4f\x3f\x24\ +\x41\xa4\x54\xfc\xd1\x69\x1c\xfd\x14\x4b\x18\x4e\x96\x49\x3e\xcf\ +\xa0\x89\xa9\x05\x82\x2d\x80\xd3\x12\xaf\x15\x72\xe5\x98\xf3\x42\ +\xc2\xca\x41\x6c\xda\x9c\x2a\xf2\x2c\x67\xda\xe0\xa4\xa1\x84\x66\ +\xc4\x80\x2c\x5b\x0d\x16\x49\x2e\xa7\xfc\xaf\xd2\x5b\x94\x32\xd5\ +\xd5\xb5\xec\xe2\x1d\x1a\x2e\x9e\x28\xb1\x6e\x03\x10\xb0\xc6\x77\ +\x7d\x17\x41\xa3\x11\xd5\x8c\xa0\x71\xcc\x68\x1c\x47\xd3\x88\x9d\ +\x4f\x37\x89\x26\x45\x06\xd1\x56\x12\x9b\x5d\x8e\x78\x0a\x2d\xa3\ +\x28\xc2\x2e\x81\x6a\x4d\x90\xb6\xc5\x90\xf6\x40\x66\x5f\x23\x69\ +\xa3\xd3\x56\x2d\x9e\xce\x66\x58\xbf\xd3\x68\x6e\xd6\xd4\x85\x91\ +\xd0\x57\xe9\x9b\x17\x77\xb9\x51\xc5\x12\xc2\x68\xc2\xba\x9a\x10\ +\xac\x31\xed\x2e\xe8\x98\x7b\x5a\x85\x48\xd8\xda\xf1\xb5\x80\x11\ +\x37\xb6\xc9\xf8\x6c\x54\x0c\x85\x37\x2c\x14\xe3\xe6\x98\xfa\x37\ +\x8c\x66\x0b\x5b\x80\xf5\x2b\x17\x8e\x57\x9a\xea\x68\x81\xcb\x13\ +\x59\x02\x05\x53\xe7\xec\xd2\x18\xc4\xc7\x45\xd2\x90\x2d\x2c\xc1\ +\x66\xdd\xbf\x8e\xac\x8b\xf5\xd6\x2a\xb2\x57\xe2\xf0\x4c\xec\x9f\ +\x3c\x1a\x4c\xdb\x5a\x39\xaa\x32\xe5\x50\x8d\xa2\x52\xbc\x62\xe4\ +\x23\xf9\x5f\x32\x80\x5e\x0b\xb7\x05\x79\xcd\x58\x7e\xb7\x21\x14\ +\x9a\x9f\xa3\xef\xd4\xfb\x4e\x1d\x16\xd2\xfa\x76\xc8\x42\xe7\xc7\ +\xc0\x25\xe7\x84\xe1\xb7\x1a\x2f\x15\x3b\x2d\x28\xc4\x39\x61\x06\ +\x6c\xfb\xfd\x4f\x8f\x92\x7e\x90\x3a\x50\xb5\xac\x5f\x8d\xda\x96\ +\x86\x02\x8e\x33\x8f\x40\xcb\x94\x70\xa4\x02\x7c\xce\x92\x34\x17\ +\x54\x77\xe4\x9e\x0a\xac\x23\x0b\x2d\x8b\x2d\x3f\x6b\x95\xde\xbb\ +\xf2\x57\x05\xd6\x91\xc9\x97\xe9\xbf\xe1\xcf\x65\x5f\x67\xd9\x05\ +\xb4\x50\xa8\xaa\x42\x15\x17\xa8\xa2\x65\xb5\xe3\x08\x68\x37\xe7\ +\xc9\x71\x74\xab\x6b\x0e\x91\x38\x4f\x2e\x01\x33\x37\x03\x5a\xb8\ +\x54\xd6\x8d\x38\x29\x5d\xa0\xb7\x6d\x43\x0e\xcc\x29\xc2\x16\x77\ +\x4f\x9c\xd6\xb2\xef\x15\x9a\x9b\x8b\x96\xa3\x70\x0f\x52\xdf\xf4\ +\x0f\x12\x1d\x0e\xa2\x21\xb5\x73\x47\x1a\xd8\xd8\x0b\x27\xd7\x93\ +\x95\x81\x4f\xc8\x9b\x99\x22\x7a\x0f\x8e\x1c\x91\x88\x0e\xfe\x08\ +\x74\x10\xce\x8e\x19\x47\x50\xe1\x48\x78\xb1\xf4\xe2\xa0\x24\xa2\ +\x13\x57\x56\x4d\x33\x78\xbb\x5f\xea\x6b\xf6\xfd\x1a\xe9\x93\xeb\ +\xa9\xfd\x3c\x92\x2b\x95\xc9\x97\x26\xd7\x66\x85\xac\x07\x4d\xd7\ +\x69\xde\xe1\x88\xa7\x16\x34\x65\xc0\xfa\x88\x98\xfa\x36\x32\x45\ +\x0a\x14\x2e\x04\x3c\xf5\x0c\x27\x6f\x20\x27\x68\xbc\x0f\x86\xc3\ +\x21\x4b\xda\xd0\x37\x83\x69\xa3\x98\x16\xda\x66\xa9\x76\x72\xf3\ +\xc8\xb7\xae\x62\x48\x49\x71\x2e\x1c\xeb\x07\x34\xe1\x64\x4e\x13\ +\xa4\xd1\x52\xf2\xf0\x35\xdf\xa4\xd4\xf8\x87\x9d\x2e\x87\x74\x58\ +\x12\x45\xb4\xec\x36\xd3\xb3\xa3\x28\xfa\x5d\x5f\x39\xf8\xc1\x48\ +\xa2\x0c\x70\xad\x31\xf9\xc2\x58\x0f\xdd\x73\x12\x84\xe3\xb8\xef\ +\xf9\x26\xe2\xc6\xde\x4a\xc5\xcd\x4d\xd0\xc4\xf9\x96\x74\x6c\x0c\ +\x5e\xeb\xa6\xee\x75\x10\x77\xc5\x79\x88\x5e\x85\xd8\x40\x12\x3f\ +\xf9\x29\xc7\x94\x0a\x7c\xff\xc3\xda\x38\xfc\xb6\x31\x93\x96\x03\ +\xbe\xa1\x95\xaa\xc5\x0c\xae\x7f\x49\xdb\x7e\x78\x95\x60\x55\xcc\ +\x00\x1b\xeb\x30\x1b\x58\x02\x6a\x6b\x3f\x53\x87\xd6\xcd\xd3\xec\ +\xe8\xfc\x28\xea\x1d\x81\x3b\x7f\x7f\xf9\xf9\xc3\xe9\xdf\x2f\xfb\ +\x70\xaa\x7a\xc6\x8e\x18\x33\x9a\x54\xd7\x0f\xbc\x40\x86\xde\x56\ +\x39\xee\xda\xe1\x1a\xa7\x35\x27\x92\x40\xfa\x9f\xb4\x3c\xf3\x1b\ +\x79\x00\x49\xdb\x1e\xc4\xeb\x9a\x33\x24\xd5\x15\xec\xe4\x2f\x37\ +\x4b\x66\x0e\xec\xb1\x1c\x00\x57\x14\x53\xea\x7b\x4b\xc6\x05\x90\ +\x30\xc3\xaf\x7e\x24\x78\x20\x48\x2e\x7b\x66\x2b\x14\x13\x5d\x2f\ +\xb7\x9f\x2a\xb5\x2f\x79\x69\xb2\x4e\xb2\x5e\xa6\xb3\xaa\xc3\x79\ +\x80\x41\x93\xab\x23\xc1\x7a\xea\xb1\x94\x3b\xff\x7e\x83\xa9\x60\ +\xd1\x24\x82\x48\x85\xcf\xac\xa5\xf2\x78\xaa\x1f\xda\x0e\xe8\xdb\ +\x24\x83\xf9\x3c\x29\x3b\xae\xbe\x59\x6a\xaf\x0a\x2c\x88\x83\x8f\ +\x35\x2a\xac\xee\x79\xb6\x44\x83\xbf\x3d\xff\x48\xee\x41\xe9\xe3\ +\x3c\x40\x03\x6c\xab\xd0\xd3\x83\x0c\xa2\x1f\xf2\x3e\x97\xc5\x02\ +\x0f\x7f\xc7\xc0\x04\x8b\xae\x49\xc0\x9e\x72\x72\xe2\x72\x7c\x41\ +\xd0\x20\xc9\xd2\x05\x32\x62\x33\xe4\xa8\x62\x1f\xf4\x41\xc5\xe9\ +\xfb\xcc\xd9\x58\xe4\x26\xb3\xe5\x26\xbf\xf5\xed\x6a\x99\xbe\x95\ +\x89\xae\x39\x29\xcc\x3e\x62\xf8\x20\xdd\x18\xd3\x42\x39\x3d\x82\ +\x87\x77\xf6\xfb\xd5\xd5\xa7\x8f\x9d\x1d\xbc\x47\xf3\xf0\x3e\x6f\ +\xaa\x65\xf7\x6c\x30\x3e\x81\x1a\x60\xce\xa1\x61\x37\x59\xf5\x3e\ +\x81\x84\x4f\x28\x62\x4a\x96\x44\xac\x06\xc1\x08\x21\x0a\x84\x47\ +\xb7\x9d\x4c\x2a\xa2\x58\xea\x64\xb4\xb4\x2c\x9e\x4e\x58\xf5\xc5\ +\x2a\x47\x1e\xca\xd3\xe9\x9f\xb6\x08\x4f\xf0\x4d\x66\x03\xfd\xac\ +\xb9\x65\xb5\xcf\x00\xb7\x5c\xee\x6b\xf7\x68\x48\x1d\x6b\xae\x48\ +\x6b\x06\xc9\x47\xdb\x24\xb0\xdc\x21\xb2\x8c\x49\xb7\xc5\xb1\x89\ +\x7a\x10\x60\x73\x65\x96\xd4\x58\xf2\xcd\x2c\x38\xf2\xaf\x5b\xad\ +\xb8\xa5\x40\x6f\x0f\x1a\x4a\x02\x16\x11\x2d\xea\x34\xcb\x5c\x79\ +\x1c\x52\xee\x47\x83\x4d\x78\xde\xb7\x90\x1c\x09\x6c\x5f\x02\xa9\ +\xc3\xd5\x55\x41\x60\x4f\xb6\x69\x28\x96\x6a\x06\xe9\x91\xa2\xfc\ +\x60\xa3\x2f\x5e\x6a\x91\x44\x91\x1b\xd4\xc4\x5c\xaf\xf0\x7d\x98\ +\xc5\x1d\x40\x03\x4e\x2f\x77\x2c\xf2\xec\x9e\x5f\xac\x46\x52\xb1\ +\x48\x4f\x9f\x8b\xf5\x66\x0d\x56\xc5\x1c\xea\x82\xf4\x8f\x35\xfe\ +\xf4\x0b\xfa\xf2\xe6\xf9\xf0\xf9\x3f\xad\x07\xaa\xa5\x12\x1e\xe8\ +\x1e\xca\x61\x76\xd2\x27\xce\xb6\xd1\x3b\x64\xb1\x73\x37\x7f\x69\ +\x7b\x7c\x55\x28\xb8\x4b\x28\x0c\x72\x47\x2b\x69\xcd\xe2\xa2\x0a\ +\x10\xc3\xe9\x21\x31\x7b\x99\x23\x8c\x21\x69\x65\xf2\xe3\x7d\x5e\ +\xd5\x49\x5e\x53\xdc\x50\x57\xe7\x30\x4b\xee\xe1\x3c\x8e\x39\xa3\ +\x6d\x98\xa3\x70\x47\xe9\x3e\x86\x35\x51\xbc\xd1\x24\x94\x1a\x0f\ +\x25\xa4\xec\xca\x5b\x6c\xb5\x83\x2e\x35\xab\x8b\x35\xa5\xd4\x05\ +\x80\x6d\xab\xb8\x2a\x21\xaa\xc8\x79\x39\x12\xa1\x05\xff\x43\x12\ +\xbd\x30\x75\x2c\x43\xeb\x0d\x18\xe1\x70\x55\x92\x65\xc5\x8c\x5c\ +\x40\x9b\x4c\xf1\x85\x5c\x8c\x61\xc6\x59\x3c\x8b\x2d\x75\xb0\xc3\ +\x36\x7b\x95\xef\xca\x54\x0e\x9f\x0d\xb0\x76\xa5\x9b\xed\x96\xa7\ +\x78\xc8\x16\xd6\xe0\x95\x34\xb9\xaa\x65\x7a\x53\x83\xb4\xc6\x97\ +\x8e\xa2\xdf\x8c\x0d\x34\x5c\x3f\x38\x62\x15\xad\xf5\xac\xf8\xc9\ +\x29\x27\x2d\x23\xdb\x76\x58\x93\x62\x0d\xf3\x28\x45\x4a\xa2\x17\ +\xc5\x6a\x95\xe4\xf3\x0f\x69\x7e\xdb\xc5\x2a\xb2\xe8\x85\x01\xac\ +\x2f\xab\xb8\x95\xeb\x7e\x68\xb5\x9d\x0f\x36\x44\xc3\xce\xa8\x81\ +\xb1\x3d\x84\xd0\xc5\xa7\xd0\x19\x8a\xc0\xbd\xff\xf8\xf9\xf7\x2b\ +\xb4\xdc\x03\x1f\x3f\x81\x77\xef\x2f\x3e\x9c\x6f\xb9\xf4\x7b\xac\ +\xf5\xde\x5b\x7c\x09\xdf\xb4\x97\xab\x87\x28\x2c\x69\x5b\x7a\x3b\ +\x3f\x29\xfa\x2a\xda\x96\x1b\xc8\xf2\x19\xd8\xe1\xcb\x63\xb8\xa2\ +\xfb\xd3\x80\xec\x11\xef\x92\xcd\xe9\xdd\xe1\x70\x48\xad\x0c\x53\ +\x0a\xe8\xbb\x7d\x2b\x5c\xdb\x62\xde\x1d\x8e\x47\x96\x36\xea\x66\ +\xb8\xbf\x8d\xb4\x89\xfd\xe3\xb1\xb0\x76\x46\x9b\x66\x2f\x5b\x70\ +\xdb\x95\x58\xe6\xf2\xee\xe6\x9d\x4c\x96\x79\xe1\xae\xbc\xa8\xf0\ +\x0e\x9e\xec\x02\x72\xec\xfb\xb8\x3d\x90\x83\x8a\x75\x18\xa5\x26\ +\x42\xc3\xf9\xa5\x4e\x39\xf9\xf4\x11\xc2\x39\x1d\x12\x76\xb3\x65\ +\x63\xa1\x06\xca\xc8\x36\xdd\x98\xd7\xa9\xe8\x9d\x18\xda\xc9\x83\ +\x90\x43\x93\x79\x40\x58\x2a\x74\xa0\x05\xe7\x78\x8b\xac\x45\xeb\ +\xbe\xa9\xb4\xf8\xd0\xda\xa9\xeb\x1a\xc7\x89\x2c\xad\x8d\xbe\x45\ +\x6b\x6c\xc1\xe9\x84\x49\x00\xe6\x25\xf2\xad\xb0\xf1\xed\xb2\xe8\ +\xd7\xce\x6d\xf0\xeb\x6c\xf4\xb3\xe2\x58\x11\xf1\x39\x6c\xfd\xe6\ +\x39\xcc\x46\xbe\x93\x9c\xe4\x09\x25\x2a\xe0\x20\xea\xa9\x4a\x56\ +\x07\x71\x2c\x99\x4b\xce\x0f\xb1\x25\xdf\xe1\x34\x80\x0b\x24\x9a\ +\x4e\xfb\x8e\x2f\xe2\x7a\x3d\xdb\x47\xf9\xea\x8e\x76\x2e\x14\x39\ +\x3c\x89\xb8\xd5\x75\x3f\x63\x20\x0e\x4f\x12\x60\x6e\xad\xa4\xe7\ +\x1b\xd2\xea\xfe\x1b\xa6\x58\xa5\x09\x82\x80\xb8\xe0\xcf\xad\x69\ +\x13\xcf\xe3\xd6\xcc\x1d\x62\x70\x26\xa3\x30\x8c\xe2\xf2\x7d\x14\ +\xab\xfb\x3d\x70\xf2\x0f\x07\x8b\xed\xcb\x30\xc2\xb9\x9f\xed\x32\ +\x7d\xe4\x2c\x4a\x99\xca\x57\x3a\x95\x78\xa1\x01\x02\xfb\xae\x4e\ +\x24\x1d\x89\x40\xf1\x29\x40\x16\x61\xf3\x1c\xea\x6f\x23\x6a\x8c\ +\x01\x3d\x8c\xaa\x0f\xa1\x16\x72\xd6\x3f\x42\xdb\x0a\x99\x8f\xa0\ +\xc7\x10\xb1\x43\xba\x9a\x6d\x23\x62\x81\x4c\xb3\x56\x02\x46\x36\ +\x91\xf1\xcb\x1b\x5d\xf5\xad\xd8\x44\x56\x6f\x1e\x08\x38\x80\xfe\ +\x93\xa9\x0d\x30\xe5\xc4\x29\x77\xb3\xfd\x87\x54\x23\x1b\xb7\x3b\ +\xaf\xea\x32\xe9\xad\x97\x45\xd6\xcd\x73\x86\x70\x0f\x4e\xb4\x00\ +\xd5\x6d\x03\x41\x80\xe9\x18\xe3\x4f\xa6\x7f\xa6\xdd\x9f\x53\x61\ +\xd1\x47\x0c\xcc\x96\x0b\x21\xa2\x77\xb1\xab\x16\x19\x96\x76\x33\ +\x03\x00\x5c\x10\x11\x74\x70\x97\xe4\xd8\x5f\xa5\x0c\xac\x98\x23\ +\x7d\x34\xc4\x2b\xcc\xd1\x09\xf9\x3d\x26\x4e\xb5\x04\xee\x5d\x89\ +\x1f\x7c\x8a\x0b\x9f\x37\xad\x94\x33\x74\xce\xa3\x69\x18\x2d\xf2\ +\xb0\x11\x40\x15\x52\xbc\x9e\xbc\x29\x8b\x15\xfa\x85\xba\xdc\xe7\ +\x9e\x3f\x0b\x16\x62\x3c\x45\xac\x8b\x77\x34\x99\xac\x93\x3c\x02\ +\x3b\x9f\x00\x2b\x51\x1d\xa0\xfe\x20\xfc\xe8\x15\xfc\xf3\x62\x83\ +\xe4\x98\xe3\x92\xe6\x15\xd2\x63\x80\xf4\x7d\x87\xe6\xe5\xfa\xfe\ +\x4b\x7d\xcc\xe7\xa3\x11\x13\xd2\xb0\x8d\x78\xf0\x25\x94\xf0\xa2\ +\x6c\x13\x60\xf8\x3d\xe4\xbb\x34\x42\xd9\x1c\x2b\xf9\xb2\x46\xab\ +\x14\xa4\xa3\xef\x07\xf3\x32\xb9\x3b\x4b\x2a\x38\xf1\x39\x11\x56\ +\x7b\xe7\xbe\x4b\x0f\x41\xe2\x41\x06\xaa\xbb\x48\x78\x81\x8c\x39\ +\x5a\xf7\xe1\x08\x38\xd1\x5d\x60\x7a\x8f\xbf\xa0\x75\x1f\x0f\x3a\ +\xf0\x87\x1a\x18\xc3\x1f\x04\xda\x93\xc9\x2c\x2b\x2a\xa8\x9d\xb3\ +\x6e\xba\x93\x11\xd4\x43\xfa\xa2\x82\xe7\x8e\x27\x0c\x5c\x0e\x93\ +\x5a\x3a\x8d\x3c\x50\x4c\x9b\x90\xba\x21\x80\xd1\xd7\x7a\x93\x46\ +\xac\xb6\xf6\x82\x0a\x83\x5b\x27\x53\xc4\x46\x21\x7f\x1d\x04\x84\ +\xc0\x9a\x60\x63\xc7\xa1\xd9\xb7\xda\x84\x49\x1b\xcb\xe2\x1b\x38\ +\xf4\x12\x48\x6f\x92\x10\x60\xd0\x03\x38\x10\x9b\xfc\x38\x08\x10\ +\xc1\x0d\x74\x2f\xae\x00\x7f\x84\xfe\xa9\x75\x0f\x20\x50\x8a\x24\ +\xa6\x7e\x30\x30\x45\xea\x99\x90\x29\xfc\xe8\x9f\xc0\x62\x5b\x99\ +\x7a\xb6\x85\x50\x85\xee\x3f\xf6\xdf\xcf\x63\x11\xaa\x10\x12\x86\ +\x54\xf5\x87\x01\x91\x98\x50\xff\x96\x51\xed\x0f\x03\x0a\x3c\x84\ +\x82\x29\xd9\x9d\x30\x78\x6c\x55\xf5\xcc\x1a\xb0\x93\xbd\x6e\x1b\ +\x1d\xc6\xab\x5b\x21\x79\xb1\x88\x89\x1f\xb4\x24\xce\x21\x59\xb0\ +\xf1\xdf\x0f\x5c\xbf\xc7\xd3\x33\xca\x56\xf9\xf2\x43\x57\xdf\x04\ +\x30\x58\x1e\xe7\xe2\x78\x2e\x77\xd5\xee\x26\x6d\xb9\xd6\x31\x16\ +\x65\xce\xd5\x16\xed\x53\xcd\xd7\x0b\x68\x1c\xc7\x7e\x39\x09\x98\ +\xba\xa2\xa1\x8e\x78\xa9\x3e\x2e\xb2\x5d\x0d\x9d\x50\x74\xb3\xd0\ +\x67\x81\xf5\x78\x46\xaf\xa8\x37\x6a\xa3\x45\xee\xbd\x0f\xdb\xa6\ +\x96\xba\x05\x6b\x9f\x89\xac\x3f\x0f\x4b\x74\xd5\x1d\xb8\x88\xd8\ +\x4c\x90\x7b\x5a\xb9\x54\x43\xe9\xde\x51\x72\x87\xdb\x6d\x02\x1e\ +\x70\xa7\x7c\x8c\x8c\x79\xff\xd0\xe2\x78\x19\x72\xd7\x8d\xa8\xa0\ +\xe9\x6e\x2f\x80\x26\xce\xb1\xd2\x87\x69\x68\xc7\x32\x8b\x60\xd9\ +\x45\xc2\x21\x6e\xfa\xf3\x8a\x2d\x1e\x56\x0b\xcf\xec\x56\x52\xa5\ +\x3c\x0b\xe9\x75\x92\x3b\x0b\x95\xc5\x9d\xb6\x6a\xb3\x2e\xfb\x52\ +\x1e\x67\xac\xbd\x44\x59\x10\x8e\x15\x29\xba\x00\xfe\x3f\x2a\x53\ +\x31\x73\xda\x5e\x27\x28\x51\xea\xb2\xa7\xb3\x48\xd9\x16\x48\xed\ +\x2d\xa4\x93\xa4\x90\x73\xdd\x5e\xa4\x6c\x08\x87\x65\x0a\x28\x07\ +\xbb\xa4\x8b\x89\x27\x30\x8f\x7c\xb8\xc1\x76\x9b\x84\x15\x3a\xe1\ +\x42\x3b\xe0\xc6\x25\x87\x31\x98\xc7\xbf\x39\xe1\xbe\xfd\x33\x82\ +\x86\xe8\x6e\xdc\x17\x70\xda\x7b\x09\x39\xc8\x80\xfe\x88\x40\xe4\ +\xee\x70\x7c\xe2\x3c\x21\x69\x3c\xea\x85\x57\x54\xe7\xc5\xec\xb6\ +\x87\xa0\x35\x5d\x52\x51\x60\x52\xd0\x5a\x1c\xca\x0c\xbe\x0a\xdb\ +\xe7\xad\xc9\xe4\xe9\xb6\x69\x52\x0e\x68\xd0\x0b\x73\x3f\x18\xb1\ +\x53\xda\xd1\x87\xe8\xdd\x0d\x11\xbe\x88\x52\x69\xe4\x1a\xc2\xd5\ +\x87\xe3\xc4\x5c\x3b\xa1\xd1\x63\xc4\x71\xfa\xf2\x2b\xc0\x97\x2e\ +\xd1\xb3\xbc\xa4\x3a\xea\x55\x3f\x0a\x2c\x3d\x7a\xe4\x8f\xf8\xc8\ +\x9d\xdb\x22\x9c\x51\xd7\x12\x39\x0f\x54\x35\x07\x02\x5c\xfd\x84\ +\x34\x54\x0c\xae\xad\xd2\x5f\x15\x28\x37\x59\x91\xd4\x4f\x40\xb1\ +\xdc\xcf\xb6\x14\x2b\x30\xda\x50\x4c\x83\x1f\x25\x84\xf4\xda\xf3\ +\x2b\xac\x39\xf8\x0d\xe8\x55\xdd\x2e\xa7\x9b\x45\x3f\x18\xb0\xc9\ +\xb4\x4c\xf2\xd9\x52\xc9\x33\xd7\x3e\xb9\xb6\x5f\x2d\x13\x43\x3a\ +\xd2\x24\xeb\x35\x0e\x50\x40\x4c\xaa\x41\x95\x4e\x91\x6a\x58\x54\ +\x93\x67\xc9\xfc\x5f\x45\x9a\x57\x03\xf9\x59\x1b\x3a\x44\x6e\x45\ +\xba\x4d\x47\x8f\xd8\xcf\x33\xdc\xd1\x6c\x99\x66\x73\x54\x93\xfe\ +\xd7\x53\x74\xeb\xe9\x95\x4c\x2e\x65\x34\x79\x23\xfa\x45\x6d\x2b\ +\x37\x0d\x1a\x31\x0a\xe7\x9a\xc2\xf1\xa1\x87\x4f\x84\x7b\x70\xb4\ +\x21\x67\x36\xd9\x06\x35\x0c\xa5\x13\xdf\x9a\x14\x81\xb6\xdc\x8b\ +\xdc\xe1\x51\x78\x38\x28\xbc\xd8\x06\xd8\xe8\xc6\xd5\xcf\xcc\x76\ +\x98\x62\x58\x2a\x9e\x5c\xf3\xb0\xe3\x8e\x9a\xc3\xaa\xe0\xe3\xaa\ +\xc0\xd5\x98\xb3\xc6\xdb\x22\xdb\xac\x72\x77\x15\xdd\xcd\xd0\x33\ +\xb3\x65\xdf\xd8\x6f\x44\x35\x6a\x42\xc4\x04\x69\x09\x93\x62\x77\ +\xf0\x03\x47\x0e\xb4\x98\x7c\x83\x94\xfe\xd8\xdb\xbe\x42\x52\x9f\ +\xaf\x57\xdb\x3a\x15\xef\xb5\x38\xba\xed\xe9\xb5\x21\x0f\xbd\xb6\ +\x81\x72\xbe\xd8\xe7\xab\xc3\xcc\xb2\x9f\x7f\xa2\x37\x5f\x1d\xde\ +\x9b\xaf\x4e\xeb\x57\x99\x5d\x4f\xff\x79\x47\xc5\xcb\x1c\xf3\xa1\ +\x48\x7f\x2d\x3f\x83\xcc\x3e\xfd\xb5\x7c\x4c\x72\xbd\x4c\xd9\xe9\ +\x45\x5f\x1b\x71\xf6\x37\xb5\xc3\x35\x7d\x0c\xb3\xbe\xbe\xed\x20\ +\xd4\xde\x7f\xb8\xa6\x8f\x79\x8f\xf9\xfa\x77\x98\xe0\x18\xa4\xb6\ +\x44\xc6\x62\x82\xa4\x21\x90\x55\xb1\xa2\x75\xe3\x0e\x99\x6d\x91\ +\x0f\xb6\x28\xd3\x39\xb6\x3e\xd1\x6b\x0d\xc5\xdc\x48\xf7\xe0\x09\ +\xa6\xca\x65\xc2\xac\x48\x85\x92\x29\xe9\xe3\x08\x1d\xc3\xc4\xb6\ +\x02\x90\xcb\x04\x26\x52\xa1\x84\x49\x87\x1b\xe9\x1a\x1c\xcc\xa9\ +\x67\xb1\xaf\x36\x8b\x1a\x7a\x8c\x20\x90\x1f\x2e\x9d\x44\xd6\x1c\ +\x81\x66\xe2\x6a\x1e\x80\xf4\x41\x33\xfd\xcd\x17\xc3\xe6\x87\x13\ +\xd9\xa5\x9b\x09\x5c\x2e\x49\x32\xab\xd3\xaf\xd0\xe3\x93\x34\x15\ +\x5c\x4e\x89\xa8\xe1\xf6\x4a\x68\x95\x38\x4c\x49\x3f\x6f\x8b\x32\ +\x87\x25\x8f\x8e\x55\xec\xb9\xc5\xd6\x43\x62\x7b\xd4\xd1\x36\x95\ +\xe4\x77\x3b\xff\x06\x13\xf4\xa9\xdb\xd5\x66\x62\x65\x2c\x01\x6b\ +\x11\x4e\xa0\x07\x18\x9d\xc8\x07\x92\x43\x3d\xf4\x49\xf8\x74\xb8\ +\xed\x25\x8c\xd8\xc8\xd2\x5f\x78\x14\x23\xaf\xe4\x75\xe7\x9c\x0b\ +\xf2\xe5\xdb\x99\xe8\x1b\x34\x0e\x64\x34\x1f\x36\x32\xae\x2f\x8b\ +\xab\x07\x68\xe8\xe1\x34\x27\xf4\xe6\xa0\xbd\x0d\xba\x2d\x2b\x64\ +\xdf\x51\xd5\x75\xb2\xdf\xa6\xbc\xfd\x00\x26\x37\x69\x59\xd5\xc1\ +\x7e\x26\xf8\x66\x02\xb4\xb6\x53\x4f\xca\xd2\x2d\x1d\x47\x50\xcb\ +\x0b\xd0\x0f\x46\x5e\xbf\x84\x58\xe5\x27\x40\xae\x68\x27\xc1\x79\ +\x99\x6d\x44\xe7\x01\x48\xea\xc1\xa4\xab\x25\x5a\xc7\x83\x0a\xd6\ +\x35\x09\x53\xec\xd1\x56\x07\x24\x04\x7f\x40\xe3\xee\x07\xba\xd8\ +\xbc\xc0\xa0\xf0\x09\xe6\xcd\x82\xa5\x49\xcb\x93\x94\x26\xbb\x35\ +\x6d\xc8\xd1\x39\x12\x34\xd6\x94\x94\x25\x39\x2e\x30\x4f\x03\x1b\ +\x03\xf2\x24\x65\xe5\xf6\x43\x3e\x2d\xaf\x0d\x90\x51\xe6\x37\x28\ +\xff\xb7\x20\x6c\x5e\xd1\x2c\xee\xec\xe9\x25\xc9\x7c\x47\xc0\xfa\ +\xcb\x61\x0e\x62\xee\x9e\xc1\xf9\x87\xae\x37\xbb\x0d\x40\x23\x73\ +\xbb\x52\x01\x84\x8f\xd0\x3d\x96\x4b\xec\xda\x13\x0d\x9f\x2d\x68\ +\x6e\x4b\x95\xf0\x8c\xd1\x84\x4a\xfd\x76\xa7\xa3\x3c\x07\xfd\x1c\ +\x8c\x33\x0f\xc5\xb5\x7a\xfa\x61\x14\x18\x63\x99\x84\xad\x6c\xbe\ +\x9d\x96\xc6\x44\xd9\x69\x69\xf7\x4c\xa7\x0a\xc4\xdc\x10\xf1\x3c\ +\x04\x66\x47\x4f\xbb\x4c\x05\x5f\x11\xe0\x7e\x52\xd4\x2d\xfe\xc1\ +\x33\xa4\x34\x65\xa5\xdb\x9c\x16\xd3\xda\xcc\x7f\x69\xfd\x1e\x0d\ +\x01\xf1\x0f\x92\xd5\x72\xb9\x4c\xd6\xf0\xcd\xf3\x43\x71\xc5\x50\ +\x0c\x48\xab\x6b\xd7\x00\xa6\xba\xf2\xcd\xf3\xf1\xf3\x7f\xee\xf3\ +\x32\xa2\x50\x49\x51\xd4\x50\x93\x74\xe5\x75\x96\x92\x8d\xcb\x3e\ +\xb8\x26\x80\x45\xc9\x34\x7e\xc5\x5d\x4e\xc1\xd0\x53\x32\x84\x27\ +\xcd\xb2\x08\x19\x70\xe9\xe1\x8e\x96\x8e\xbc\xcd\x76\x38\x91\x18\ +\x1a\x0e\xbd\x13\x8d\xd0\x2a\x55\xd6\x67\xf6\xe6\xf6\x47\x4e\x22\ +\x9e\x8a\x76\xbd\x3f\x62\xeb\xc6\xf1\xca\x49\x44\x2f\x8e\xa7\x54\ +\xe8\x41\x83\xa4\x86\xdd\xdf\xdf\x62\xe7\x0c\x18\x2c\x86\x61\xf4\ +\xdd\x2b\x7d\x67\x37\x46\x3c\x38\xd2\x5c\xd1\x12\xff\xe4\x88\xb3\ +\x4d\x8b\x3b\x63\x94\x47\xdf\x1e\x24\x9e\xc5\x5e\x1e\x22\x99\x3e\ +\xd1\xf4\x49\xef\xa5\xe8\x7a\x4a\x4f\xc2\xba\xaf\xdb\x23\x6c\x20\ +\xe9\xed\x11\xd6\x2f\x3c\x50\x65\xfd\xb8\xfd\xed\x11\x8d\xf8\xb7\ +\xbd\x43\xc7\x73\x49\x71\xc4\x2c\x88\x96\x17\x8e\x55\x13\xd2\x73\ +\x9e\x71\x88\x7d\xf7\xa2\x6b\x88\x71\xe7\x73\x56\xd4\x6e\xd7\x01\ +\xcf\x3f\x76\x59\xd1\x6c\x53\xd3\xac\xd3\x0a\x5f\x17\xb8\x46\xcd\ +\xc8\xb1\xaa\x23\x9a\x5d\xfa\x1f\xa9\x64\xb9\x34\ +\x00\x00\x02\xe1\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x93\x49\x44\x41\x54\x58\x85\xed\ +\x96\x3f\x4f\x14\x51\x14\xc5\x7f\x67\x42\x18\xb6\xb5\x52\x3e\x80\ +\xc5\x36\x4a\x25\x95\x76\x52\x80\x62\xe8\xb4\xd3\x44\x8a\xad\xa4\ +\x9a\x19\x20\x66\x4c\xc4\x99\xa5\xa1\x92\x68\x4c\xb4\xd3\x0e\xff\ +\x00\x85\x5a\x69\xa5\x95\x6e\x21\x89\x5f\x00\xad\x6c\x97\xd9\x98\ +\x77\x2d\xf6\x0d\xac\x09\xbb\xb8\x80\x36\xee\xe9\xde\xbc\xfb\xde\ +\x3d\xf7\xce\x7d\xe7\x5e\x18\x60\x80\xff\x1d\xea\xc7\x38\x4d\xd3\ +\xa1\xa2\x28\xa6\xcc\x6c\x06\x38\x07\x8c\xfa\xad\x6d\xe0\xa3\xa4\ +\xb5\x30\x0c\x37\xd2\x34\xfd\x79\xec\x04\xe2\x38\xbe\x08\xac\x00\ +\x55\xe0\x13\xf0\x1e\xf8\xe6\xb7\x4f\x01\xe7\x81\x31\x60\xcb\x39\ +\x77\x6b\x79\x79\xf9\xed\x71\x11\x50\x14\x45\x89\xa4\x25\xe0\xb9\ +\xa4\xc5\x2c\xcb\xb6\xf6\x33\x4c\x92\xa4\x6a\x66\x77\x81\x2b\xc0\ +\x42\x9e\xe7\x39\x60\x47\x22\x10\x45\xd1\xbc\xa4\x3b\x92\x6a\x59\ +\x96\x3d\xfa\x03\xc2\x24\x49\x72\xd3\xcc\x56\x81\xdb\x79\x9e\x67\ +\x87\x26\xe0\xd3\xfe\x5a\xd2\x6c\x87\x73\xc5\x71\x7c\x0d\xa8\x01\ +\x67\xfc\xb7\x06\xb0\x9a\xe7\xf9\x53\x7c\xc4\x71\x1c\xcf\x02\x0f\ +\x81\x89\x3c\xcf\xdf\xf4\x4d\x20\x4d\xd3\xa1\x9d\x9d\x9d\x06\xf0\ +\x35\xcf\xf3\x19\x80\xb9\xb9\xb9\x13\x61\x18\x3e\x01\x2e\x03\x0e\ +\x08\xbc\xb9\x03\x02\x33\x7b\xd9\x6a\xb5\x6e\xac\xac\xac\xfc\x00\ +\x88\xa2\xe8\xb9\xa4\xd3\x23\x23\x23\x67\xba\x15\x66\xb0\xdf\x47\ +\x80\xa2\x28\xa6\x80\xaa\xa4\xc5\x92\xac\x77\x3e\xb5\xcf\xd9\x00\ +\x40\xd2\xa5\xe1\xe1\xe1\xc7\x65\x60\x41\x10\x2c\x00\xd5\x66\xb3\ +\x39\xd9\xcd\x4f\x57\x02\xfe\xa9\x7d\x2a\x0b\xce\xa7\xfd\x72\xaf\ +\x33\x40\x20\x69\x3a\x8a\xa2\xab\x00\x59\x96\x6d\x99\xd9\x67\x49\ +\x33\x7d\x13\xa0\xfd\xce\xdf\x77\xac\x6b\xb4\x53\x7d\x10\x9c\xa4\ +\x5a\xb9\x90\xf4\x0e\x18\x3f\x0c\x81\x51\xf6\xde\x39\xb4\x0b\xae\ +\x97\xfd\xee\x9d\x92\xca\xe2\xc4\xcc\xbe\xb3\x27\x58\x7d\x11\xf8\ +\x27\xe8\x45\x60\x9b\xb6\xc2\x95\x68\xf0\x87\xbf\xc0\xcc\x1a\xe5\ +\x42\xd2\x49\x7f\x57\xdf\x04\x3e\xd2\x96\xd7\x12\xab\x07\xd8\xef\ +\xde\xe9\x45\x08\x00\x33\xbb\x00\x7c\xe8\x9b\x80\xa4\x35\x60\x2c\ +\x49\x92\x2a\x80\x17\x99\x57\xf4\xce\x82\x33\xb3\x97\xf5\x7a\xfd\ +\x19\xb4\xa5\x59\xd2\x59\x33\x5b\xeb\x9b\x40\x18\x86\x1b\xc0\x96\ +\xd7\x76\x00\x2b\x8a\xe2\xba\x99\xad\x97\xce\x3a\x1d\x03\x98\xd9\ +\x7a\xab\xd5\xba\x81\x57\x43\xe7\xdc\x12\xf0\xa5\x52\xa9\x6c\x76\ +\x0d\xb4\x47\x34\x5d\xa5\x38\x8a\xa2\xab\x92\x6a\x65\xb5\x9b\x59\ +\xc3\xcc\x56\x7d\xe4\x9d\x52\xfc\xc0\x39\x37\xd1\xab\x33\xfe\x95\ +\x66\xe4\x9d\xdf\xe7\xa8\xcd\xa8\xb4\x89\xe3\x38\x06\xee\x99\xd9\ +\x8b\x20\x08\x16\x7a\xb5\x63\xe7\xdc\x92\xa4\x69\x33\x9b\xaf\xd7\ +\xeb\x75\x8e\xda\x8e\x4b\x74\x0e\x24\x5e\x5e\xdf\x79\x91\x41\xd2\ +\x49\x33\xbb\x20\xe9\x2c\xf0\xc5\x39\x37\x77\x9c\x03\xc9\x2e\xd2\ +\x34\x1d\x6a\x36\x9b\x93\x5e\xdb\xc7\xf9\x7d\x24\xfb\x60\x66\x6b\ +\x95\x4a\x65\xb3\x9f\x91\x6c\x80\x01\x06\xf8\x05\x68\xaf\x24\x28\ +\x9c\x6b\x07\xff\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x02\x2b\ +\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\x01\xe2\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x0e\xc3\x20\ +\x10\x43\x69\x4f\x9d\x23\x70\xeb\x76\x85\x84\x10\x81\x81\xb1\x0d\ +\x51\xf0\x3a\x35\xf1\xe3\x93\x0c\x25\x21\x1c\x1d\x1d\xbd\x59\x1f\ +\x65\x63\xd7\x75\xfd\x2c\xd7\xc5\x18\x65\xf7\x45\x6d\xc8\x1a\xb8\ +\x27\x26\x10\xb8\x31\x2a\xf4\x9d\xd0\x30\x60\x66\xec\xe0\xa5\x50\ +\x20\x20\x26\xea\xf0\x49\x08\x08\x2e\x83\x55\xc1\x4b\x79\x40\x4c\ +\xff\x70\x97\xf0\x49\xb3\x10\x86\x7f\xb4\x5b\xf0\x52\xa3\x20\x86\ +\x2e\xde\x3d\x7c\xd2\x08\x04\xf3\x85\x4f\x09\x9f\x64\x85\xf0\x65\ +\xdf\xc8\xee\x32\x51\x7a\x5a\xef\x27\x59\x46\x41\xf7\x82\x5e\xf8\ +\xbc\x11\x15\xa8\x32\x58\xab\xdd\x1e\x04\xe8\x14\x88\x31\x7e\xd8\ +\x85\x0c\xda\xbf\x09\x60\xb6\x47\x59\x10\x66\x7c\x7b\x19\x6e\x01\ +\x78\x87\x33\x1a\x82\xc7\xaf\x95\xc5\x3d\x05\x3c\xf3\xcf\xaa\x96\ +\x8f\xb7\xa3\xaa\xc6\x33\xa6\xac\x9b\x44\xfa\xd6\xbc\x60\x8b\x20\ +\x63\x24\x30\x7b\x3e\x09\xfa\x14\x40\x42\x50\x84\x0f\xa1\x32\x05\ +\x10\xe6\xde\x9b\x67\x86\x2f\xbd\x29\xaf\xc2\x9e\x91\xa0\xea\xf9\ +\x24\x5a\x2d\x30\x03\x41\x1d\x3e\x04\x72\x31\x34\x02\x61\x45\xf8\ +\x10\x8a\x35\x80\xd5\x50\x2f\x9c\x3a\x7c\xde\x9e\xa4\x1c\x9e\x5d\ +\x13\x14\xc5\x95\x6c\x3f\x60\x34\x8c\xaa\xb2\x94\x6e\x88\x58\x43\ +\x29\xf7\x1f\xe4\x3b\x42\xbd\x70\xea\xcd\x17\x39\x00\xcf\x7b\x00\ +\x43\x52\x00\xd6\x70\x4a\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd9\ +\x47\x9d\x02\x02\x1d\x80\x25\xfc\x4a\x08\x94\x6a\x30\x69\xb4\xe7\ +\x15\x2f\x45\x92\x6a\xb0\xd6\x50\xae\xbb\x30\x2b\x46\x02\x05\x80\ +\xa7\x27\xd5\x10\xe0\x00\x10\xc3\x58\x09\x01\xb6\x29\x1a\x02\x7e\ +\x0e\x2b\xfc\x60\x23\x80\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\ +\x43\x70\xdf\xb8\xaa\x9e\x67\x6d\xb4\x2e\xd9\x13\xdc\xc1\x2f\xe9\ +\x16\x00\xeb\xbf\x38\x8f\x18\x8b\x33\x7c\x04\xb0\xeb\x79\xb4\xbf\ +\xfb\x80\xc4\xee\xea\x8d\xe4\x73\x44\xc6\x6a\xf6\x34\x08\xe7\x94\ +\x98\x51\xe7\xa0\xe4\xa8\xf9\xee\x10\xa8\x47\x65\x73\xed\x06\x42\ +\x76\x58\x3a\xd7\x2e\x10\x96\x1c\x97\x4f\x5a\x0d\xc1\x5b\x10\x9d\ +\x4f\x66\x10\x26\xb9\x5e\xfb\xd1\x54\x4d\xaf\xfc\x6c\xae\xa5\x1d\ +\x3f\x9c\x3c\x7a\xbb\xfe\x5f\x58\x5a\xcd\xa5\xce\x7b\xda\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\x3f\x08\x06\x00\x00\x00\x2c\x7b\xd2\x13\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2e\x14\xfa\xd6\xc4\xae\x00\x00\x00\x39\x49\x44\ +\x41\x54\x38\xcb\x63\x60\x20\x06\xc4\xc7\xc7\x33\xc4\xc7\xc7\xa3\ +\x88\x31\x61\x53\x84\x53\x12\xaf\xce\x91\x28\xc9\x82\xc4\xfe\x8f\ +\xc4\x66\x1c\x0d\xa1\x51\xc9\x51\xc9\x51\x49\x7c\x05\x06\xe3\x68\ +\x08\x91\x2a\x49\x3e\x00\x00\x88\x4b\x04\xd3\x39\x2e\x90\x3f\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xb6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x11\x08\x06\x00\x00\x00\xc7\x78\x6c\x30\ +\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\xdc\x08\x17\ +\x0b\x2c\x0d\x1f\x43\xaa\xe1\x00\x00\x00\x36\x49\x44\x41\x54\x38\ +\xcb\x63\x60\x20\x01\x2c\x5a\xb4\xe8\xff\xa2\x45\x8b\xfe\x93\xa2\ +\x87\x89\x81\xc6\x60\xd4\x82\x11\x60\x01\x23\xa9\xc9\x74\xd0\xf9\ +\x80\x85\x1c\x4d\x71\x71\x71\x8c\xa3\xa9\x68\xd4\x82\x61\x64\x01\ +\x00\x31\xb5\x09\xec\x1f\x4b\xb4\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x02\x29\ +\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\x01\xe0\x49\x44\x41\x54\x78\x9c\xed\x5b\x49\x72\xc0\x20\ +\x0c\x73\x3b\x7d\x74\x9e\x90\x5f\xb7\x27\x66\x68\x86\x04\x03\x92\ +\xec\x36\xe8\x4c\xbc\x28\x62\x37\x66\x1b\x1b\x1b\x6f\xc6\x87\xd2\ +\xd9\x71\x1c\xdf\x9e\x76\xe7\x79\xca\xe2\xa2\x3a\xf2\x26\xdc\x03\ +\x93\x10\xb8\x61\x54\xd2\x77\x40\x93\x01\x33\xc6\x4e\xfc\x0a\x14\ +\x11\x10\x23\xea\xe4\x0b\x10\x24\x2c\x19\x88\x4a\xfc\x8a\x15\x22\ +\xa6\x3f\xcc\x92\x7c\xc1\x2c\x09\xc3\x1f\x65\x4b\xfc\x8a\x51\x22\ +\x86\x1a\x67\x4f\xbe\x60\x84\x04\x77\xc3\xbf\x92\x7c\x81\x97\x84\ +\x2f\x76\x20\x4f\xa8\x83\x8c\x22\xd8\xc5\x12\x23\xb8\xd6\x1f\x42\ +\xfb\xf1\xa8\xa0\xdb\x40\x95\x3c\xcb\x5f\x8f\x84\x4f\xa4\x33\x0f\ +\x7a\x01\x29\x37\x42\x66\x1d\x05\x44\x48\x92\xe1\xfb\xc9\x6f\x1a\ +\x29\xb2\x63\xb8\xf3\x2f\xe9\x02\xb3\x7d\x5e\xd1\x1d\x9a\x0e\x54\ +\xf2\xab\xfd\x28\x06\xc6\x96\x0f\xaa\x02\x46\x92\x8a\x52\x02\x8d\ +\x80\x99\x3f\x1a\x41\x02\x65\x31\xb2\x2a\x67\x66\x77\xb8\xda\x86\ +\x2b\x00\x11\xbc\x52\x09\x50\x02\x90\x7f\x4e\x45\x02\x8c\x00\x86\ +\x6c\x15\x24\xfc\x32\x32\x1b\x28\x7b\x0a\x43\xdb\xaf\xed\x2d\x2b\ +\x40\x31\x7f\x33\x95\xb0\x44\x80\x72\x57\xc7\x22\x61\x9a\x00\x65\ +\xf2\x1e\xbb\xb3\x24\xc0\xa7\x41\xf6\xc9\x0e\xda\xbe\x74\x1d\x90\ +\xd1\xfe\x34\x01\x11\xcb\x56\x46\xb7\x5b\x52\x80\x92\x04\xd6\x98\ +\xb3\xdc\x05\x14\x24\x30\x07\x5c\xc8\x18\xc0\x24\x81\x3d\xdb\x40\ +\x77\x83\xcc\x15\x1b\xc2\x5e\xcb\x26\x74\x16\x40\x2a\x41\xb5\xce\ +\x90\xae\x03\xbc\x24\x28\x17\x59\x94\x13\xa1\x15\x12\xd4\x2b\x4c\ +\xea\xa1\xe8\x68\x32\x11\xbb\x4a\xea\xa1\xe8\x88\x12\x22\xf6\x16\ +\x66\x82\x7b\x01\x0f\x09\x51\xc9\x9b\xed\x9b\x21\xdd\xe5\x28\xf2\ +\x4c\x10\x09\xe9\xe5\xa8\x99\x4f\x09\x4a\xf5\xc9\xaf\xc7\x7b\xc9\ +\xa9\x2b\x45\x42\x0a\x24\xcc\x34\x15\x22\x77\x7e\x6a\x84\x95\xc8\ +\x98\xf1\x6b\x84\x20\x25\x32\x05\xff\xb5\x4a\x4c\x3e\x06\x64\xc3\ +\x2e\x94\x1c\x35\x9e\x9d\x04\x6a\xa9\x6c\x8d\x6c\x44\xc8\x8a\xa5\ +\x6b\x64\x21\x21\xa4\x5c\xbe\x20\x9a\x84\xd5\x33\xc7\xfd\x64\x06\ +\x61\xa4\xc6\x6b\x1f\x4d\xb5\xf0\xca\x67\x73\x4f\xc8\xf8\x70\x72\ +\xe3\xed\xf8\x01\xed\x72\x72\xcc\x11\x4e\x0c\xe5\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x84\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x36\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x4e\x14\x51\x14\x86\xbf\x33\x92\x2c\xfb\x06\xc8\x03\x58\ +\x6c\x23\x54\x92\x30\x2b\x1d\x0d\x24\x1a\x6a\x5b\x89\xb1\xd2\xc4\ +\x64\xee\x05\x34\x63\xe2\x38\x33\xc4\x44\x1b\x6d\x2c\x8c\x2f\xb0\ +\x58\x40\x65\xb3\x90\x49\x84\x06\xb4\x60\x13\x13\x68\x11\x9f\x60\ +\xd9\x68\xee\xb1\x60\x10\x4c\x9c\xcd\xce\x2e\xb1\x71\xbf\xf6\xfc\ +\x33\xe7\xcf\xcd\x3d\xff\x3d\x30\x64\xc8\xff\x8e\x94\x11\x87\x61\ +\x38\xd2\xe9\x74\xe6\x55\x75\x01\xb8\x01\x8c\xe7\xa5\x23\x60\x47\ +\x44\x1a\x95\x4a\x65\x3d\x0c\xc3\x9f\x97\x6e\xc0\x18\x33\x0b\xbc\ +\x04\x6a\xc0\x1e\xb0\x05\x7c\xcb\xcb\x57\x81\x9b\xc0\x24\xd0\x72\ +\xce\x3d\x58\x5d\x5d\xfd\x78\x59\x06\x24\x08\x02\x2b\x22\x11\xb0\ +\x26\x22\x2b\x71\x1c\xb7\xfe\x26\xb4\xd6\xd6\x54\xf5\x19\x70\x1b\ +\x58\x4e\x92\x24\x01\x74\x20\x03\x41\x10\x2c\x89\xc8\x53\x11\xb9\ +\x1f\xc7\xf1\xdb\x1e\x0c\x63\xad\xbd\xab\xaa\x6f\x80\x27\x49\x92\ +\xc4\xdd\xb4\x57\xba\x15\x8d\x31\xb3\x22\xf2\x4e\x44\xee\xf5\xda\ +\x1c\x20\xcb\xb2\x5d\xdf\xf7\xbf\x03\xaf\x7c\xdf\xff\x94\x65\xd9\ +\x61\x91\xb6\xf0\x04\xc2\x30\x1c\x39\x39\x39\xf9\x02\x7c\x4d\x92\ +\x64\xa1\xd7\xe6\x17\x09\x82\x60\x4d\x44\xae\x8d\x8e\x8e\x5e\x2f\ +\xba\x98\x5e\xd1\xc7\x9d\x4e\x67\x1e\xa8\x89\xc8\x4a\x3f\xcd\x01\ +\x3c\xcf\x5b\x06\x6a\xed\x76\x7b\xae\x50\x53\x54\xc8\x47\x6d\xaf\ +\xe8\xc2\xf5\x42\x1c\xc7\x2d\x55\xfd\x2c\x22\x85\x27\x58\x68\x80\ +\xd3\x39\xdf\xea\xb7\xf9\x19\x22\xb2\x09\x4c\xf5\x63\x60\x9c\xf3\ +\x39\xef\x1b\x55\x3d\xe6\x3c\xb0\x4a\x19\xf8\x27\x74\x33\x70\xc4\ +\x69\xc2\x0d\x84\x88\x8c\xe5\xff\x2a\x6d\x60\x87\xd3\x78\x1d\x08\ +\x55\x9d\x01\xb6\x4b\x1b\x10\x91\x06\x30\x69\xad\xad\xf5\xdb\xdc\ +\x5a\x5b\x13\x91\x09\x55\x6d\x94\x36\x50\xa9\x54\xd6\x81\x56\x9e\ +\xed\x7d\xe1\x9c\x8b\x80\xfd\x6a\xb5\xba\x51\xa4\x29\x8c\xe2\x66\ +\xb3\xe9\x7c\xdf\x3f\x00\xa2\x7a\xbd\x7e\x94\x65\xd9\x6e\x99\xe6\ +\xc6\x98\x45\x11\x79\xe4\x9c\xbb\x13\x45\xd1\x41\x69\x03\x00\x59\ +\x96\x1d\x4e\x4f\x4f\xff\x00\x5e\xd4\xeb\xf5\xe3\x5e\x4d\x18\x63\ +\x16\x81\xd7\xc0\xe3\x34\x4d\xdf\x77\xd3\xf6\xf4\x1c\x1b\x63\x0c\ +\xf0\x5c\x55\x3f\x78\x9e\xb7\xdc\xed\x39\x76\xce\x45\x22\x72\x4b\ +\x55\x97\xd2\x34\x4d\x19\xf4\x39\x3e\xe3\xe2\x42\x92\xc7\xeb\x66\ +\x1e\x32\x88\xc8\x98\xaa\xce\x88\xc8\x04\xb0\xef\x9c\x7b\x78\x99\ +\x0b\xc9\x6f\xc2\x30\x1c\x69\xb7\xdb\x73\x79\xb6\x4f\xf1\xe7\x4a\ +\xb6\xad\xaa\x8d\x6a\xb5\xba\x51\x66\x25\x1b\x32\x64\xc8\x2f\xff\ +\x42\xe0\x3f\x4f\xfa\x9f\x03\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x14\x1f\xf9\ +\x23\xd9\x0b\x00\x00\x00\x23\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xe6\x7c\x80\xb1\x18\x91\x05\x52\x04\xe0\x42\x08\x15\x29\x02\ +\x0c\x0c\x8c\xc8\x02\x08\x95\x68\x00\x00\xac\xac\x07\x90\x4e\x65\ +\x34\xac\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x82\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x34\x49\x44\x41\x54\x58\x85\xed\ +\xd7\xb1\x4e\xc2\x50\x18\x86\xe1\xf7\x37\x14\x46\xca\x82\xd7\xd0\ +\x85\x44\x48\xea\x0a\xd1\x54\x22\xc6\x1b\xe0\x2a\xea\x2c\x0e\xb2\ +\xc3\x55\x70\x09\xc4\xd8\x98\xb0\x77\xd0\x84\xa5\xf7\xc0\x42\x1d\ +\xb1\x24\xc7\xa1\x2d\x36\xb5\x38\x98\x36\x0e\x9e\x6f\x3c\x6d\xfa\ +\x3d\xe7\x74\xf9\x0f\xfc\xf7\x48\x7e\xa1\x3b\x18\x5d\x81\xba\x03\ +\xb1\x01\xb3\xa4\x9e\x10\x94\x0f\x32\x7b\x5d\x2d\x9f\x8f\x02\x7a\ +\xfd\x9b\xa9\x12\x75\x0f\xec\x04\x02\x85\x7a\x2f\xa3\x5d\x90\xa6\ +\x02\x0b\x68\x28\x98\xbe\xad\x96\x0f\xdf\x00\xdd\xfe\xf5\x10\x91\ +\x27\xe0\x65\x6f\x44\xe3\xb5\xe7\x6d\xca\x28\x4f\xd3\x71\x9c\x76\ +\x2d\x32\x16\xc0\x25\x30\x4c\x4f\xe2\x24\xc3\x74\x81\x5d\x15\xe5\ +\x00\x6b\xcf\xdb\xec\x8d\x68\x0c\x7c\x00\x6e\xba\xfe\x05\x40\x6c\ +\x81\xa0\x8a\xf2\x2c\x02\x08\x00\xbb\x00\x80\x59\xd6\x3f\xff\x39\ +\x2a\x04\x5a\x45\x80\x3f\x89\x06\x68\x80\x06\x68\x80\x06\x68\x80\ +\x06\x68\x40\x16\x10\x0a\xd2\xac\xbe\x52\x4c\x60\x5b\x00\x50\xbe\ +\x02\xab\xe3\x38\xed\xaa\xaa\x93\x6f\x5b\x80\x5f\x00\x90\x19\xd0\ +\xa8\x45\xc6\xa2\x0a\xc4\xf9\xc5\xed\x69\x32\x96\xd7\x81\xf9\xa1\ +\x35\xfb\xd2\xd9\x60\xf4\x28\x30\x21\x1e\x9d\x83\x64\x80\x2c\x21\ +\x62\x12\xef\xbc\x7e\xf4\x62\x92\x26\xbe\x9a\xe1\x12\x8f\xce\xad\ +\xfc\xf3\x5f\x66\x4b\x7c\xec\xf3\xfc\xd5\x4c\xe7\x13\xc4\xb0\x5f\ +\x44\xcf\x0c\x5b\xaa\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +\x00\x00\x00\xc3\ +\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\x0b\x13\x00\x00\ +\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xdc\x0b\x07\x09\x2e\x37\xff\x44\xe8\xf0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x27\x49\x44\x41\x54\x78\xda\xed\xc1\x01\ +\x0d\x00\x00\x00\xc2\xa0\xf7\x4f\x6d\x0e\x37\xa0\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x77\x03\x40\x40\ +\x00\x01\xaf\x7a\x0e\xe8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x01\x8d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3f\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x86\x5c\ +\xc0\x13\x14\xf4\x0e\x9e\xc2\x12\x48\x94\xb6\x8b\xba\x51\x08\x7a\ +\x0a\xcf\x50\x0a\x3d\x41\x2e\x90\x3b\xb8\xd1\x2e\x95\x90\xbf\x8b\ +\x9a\x62\x15\x29\x94\xa4\x5d\x74\xbe\xd5\xe4\xcd\x90\xff\x63\x66\ +\xf3\x1e\xfc\x77\xec\xbc\x10\xc7\xf1\xc0\xcc\xee\x24\xf5\xcd\x2c\ +\xa8\x23\x44\xd2\xce\xcc\x32\x49\xcb\xc5\x62\xf1\x72\x55\x60\x32\ +\x99\xcc\x24\xdd\x03\x7b\x49\xb9\x99\xbd\xd5\x24\xd0\x31\xb3\x10\ +\x68\x03\xb3\xf9\x7c\xfe\x78\x21\x90\x24\xc9\x10\x78\x06\x5e\x8b\ +\xa2\x18\xa5\x69\xba\xa9\x23\xbc\x22\x8a\xa2\x9e\xef\xfb\x6b\xe0\ +\x56\xd2\xb0\xba\x09\xef\xe4\xcc\x18\xd8\x37\x11\x0e\x90\xa6\xe9\ +\xa6\x28\x8a\x11\x70\xf0\x3c\x6f\x5c\xd5\x3f\x05\x24\xf5\x25\xe5\ +\x4d\x84\x9f\x4a\x00\xb9\xa4\xfe\x85\x80\x99\x05\x75\xbd\xf9\x37\ +\xec\x80\xee\x85\xc0\x5f\xe1\x04\x9c\x80\x13\x70\x02\x4e\xc0\x09\ +\x38\x01\x27\xe0\x57\x0b\x49\x3b\xa0\xf3\x0b\x99\x01\xb0\xad\x3e\ +\x4e\x5b\xb2\xcc\xcc\xc2\x28\x8a\x7a\x4d\x25\x1f\xff\x1d\x9a\x59\ +\x76\x21\x20\x69\x09\xb4\x7d\xdf\x5f\x37\x21\x31\x9d\x4e\x6f\x8e\ +\x6d\x79\xab\x2c\xcb\x55\x55\xff\x32\x98\x24\x49\xf2\x04\x3c\x00\ +\x07\x20\xe7\xa3\x81\xac\x83\x00\x08\x81\x16\xd7\x06\x93\x8a\x38\ +\x8e\x07\x9e\xe7\x8d\x8f\xad\x73\xf7\x7c\xff\x87\x6c\xcd\x2c\x2b\ +\xcb\x72\x75\x3e\x9a\x39\xde\x01\x23\x94\x7d\x48\x8c\x1a\x35\x0f\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xef\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x2a\x32\xff\x7f\x20\x5a\x00\x00\x00\x6f\x49\x44\x41\x54\x78\ +\xda\xed\xd0\xb1\x0d\x00\x30\x08\x03\x41\xc8\xa0\x0c\xc7\xa2\x49\ +\xcf\x04\x28\xba\x2f\x5d\x59\x97\xb1\xb4\xee\xbe\x73\xab\xaa\xdc\ +\xf8\xf5\x84\x20\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\x21\ +\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\x41\ +\x84\x08\x51\x10\x21\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\ +\x21\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\ +\x41\x84\x08\x51\x10\x21\x42\xfc\xaa\x07\x12\x55\x04\x74\x56\x9e\ +\x9e\x54\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x92\xc3\x20\ +\x10\x43\xc9\x9c\x61\x0e\x98\xc5\x1c\x2b\x8b\x39\x60\xee\x90\xac\ +\xa8\xa2\x28\x1b\x1a\x5a\x12\xed\x32\x5a\x3b\xc2\x7a\x7c\xec\x26\ +\x38\xa5\xad\xad\xad\x3b\xeb\xa1\x6c\xec\xf7\xef\xff\x63\xb9\xee\ +\xfd\x7a\xca\xee\x8b\xda\x90\x35\x70\x4f\x4c\x20\x70\x63\x54\xe8\ +\x33\xa1\x61\xc0\xcc\xd8\xc1\x6b\xa1\x40\x40\x4c\xd4\xe1\xb3\x10\ +\x10\x5c\x06\xab\x82\xd7\xf2\x80\x98\xfe\x61\x94\xf0\x59\xb3\x10\ +\x86\x7f\x14\x2d\x78\xad\x51\x10\x43\x17\x47\x0f\x9f\x35\x02\xc1\ +\x7c\xe1\x55\xc2\x67\x59\x21\xfc\xb0\x6f\x24\xba\x4c\x94\xae\xd6\ +\xfb\x59\x96\x51\xd0\xbd\xa0\x17\xbe\x6c\x44\x05\xaa\x0e\xd6\x6a\ +\xb7\x07\x01\x3a\x05\xde\xaf\xe7\x83\x5d\xc8\xa0\xfd\x9b\x00\x66\ +\x7b\x94\x05\x61\xc6\xb7\x97\xe1\x14\x80\x77\x38\xa3\x21\x78\xfc\ +\x5a\x59\xdc\x53\xc0\x33\xff\xac\x6a\xf9\x78\x3b\xea\xd0\x78\xc6\ +\x94\x75\x93\x48\xdf\x23\x2f\xd8\x22\xc8\x18\x09\xcc\x9e\xcf\x82\ +\x3e\x05\x90\x10\x14\xe1\x53\x3a\x98\x02\x08\x73\xef\xcd\x33\xc3\ +\xd7\xde\x94\x57\x61\xcf\x48\x50\xf5\x7c\x16\xad\x16\x98\x81\xa0\ +\x0e\x9f\x12\xb9\x18\x1a\x81\xb0\x22\x7c\x4a\xd5\x1a\xc0\x6a\xa8\ +\x17\x4e\x1d\xbe\x6c\x4f\x52\x0e\xcf\xae\x09\x8a\xe2\x4a\xb6\x1f\ +\x30\x1a\x46\x55\x59\x4a\x37\x44\xac\xa1\x94\xfb\x0f\xf2\x1d\xa1\ +\x5e\x38\xf5\xe6\x8b\x1c\x80\xe7\x3d\x80\x21\x29\x00\x6b\x38\x25\ +\x04\x19\x00\x64\x2d\x80\x94\x04\xc0\xec\xa3\x4e\x01\x81\x0e\xc0\ +\x12\x7e\x25\x04\x4a\x35\x98\x35\xda\xf3\x8a\x97\x22\x49\x35\x78\ +\xd4\x50\xa9\xb3\x30\x2b\x46\x02\x05\x80\xa7\x27\xd5\x10\xe0\x00\ +\x10\xc3\x58\x09\x01\xb6\x29\x9a\x12\x7e\x0e\x2b\xfc\x60\x23\x80\ +\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\x43\x70\xdf\xb8\xaa\x9e\ +\x67\x6d\xb4\x2e\xd9\x13\x8c\xe0\x97\x75\x0a\x80\xf5\x5f\x9c\x47\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\xdf\x7d\x40\x22\xba\x7a\x23\ +\x79\x1f\x91\xb1\x9a\x5d\x0d\xc2\x3e\x25\x66\xd4\x3e\x28\x39\x6a\ +\x1e\x1d\x02\xf5\xa8\x6c\xa9\x68\x20\x64\x87\xa5\x4b\x45\x81\xb0\ +\xe4\xb8\x7c\xd6\x6a\x08\xde\x82\x68\x7f\x32\x83\x30\x29\x75\xdb\ +\x8f\xa6\x8e\x74\xcb\xcf\xe6\x5a\x8a\xf8\xe1\xe4\xd6\xdd\xf5\x05\ +\x90\xc2\x5a\x7d\xfa\xa7\x95\xa2\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x06\x2f\ +\xe0\x09\x0a\x7a\x07\x4f\x61\x09\x64\x94\xb6\x8b\xba\x89\x10\xf4\ +\x14\x9e\xa1\x14\x7a\x02\x2f\xe0\x1d\xdc\x68\x97\x4a\xc8\xdf\x45\ +\x4d\x49\x15\x2b\xb4\x49\x37\xcd\xb7\x9b\x37\xc3\xfc\x1f\x19\xc2\ +\xbc\x81\xff\x8e\x9d\x16\xa2\x28\xea\x9b\xd9\x9d\xa4\x9e\x99\x05\ +\x65\x84\x48\xda\x99\xd9\x4a\xd2\x7c\x36\x9b\xbd\x5c\x14\x18\x8f\ +\xc7\x53\x49\xf7\xc0\x5e\xd2\xda\xcc\xde\x4a\x12\x68\x99\x59\x17\ +\x68\x02\xd3\x38\x8e\x1f\xcf\x04\x9c\x73\x03\xe0\x19\x78\x4d\xd3\ +\x74\x98\x24\xc9\xa6\x8c\xf0\x9c\x30\x0c\x3b\xbe\xef\x2f\x81\x5b\ +\x49\x83\xfc\x4b\x78\x85\x35\x23\x60\x5f\x45\x38\x40\x92\x24\x9b\ +\x34\x4d\x87\xc0\xc1\xf3\xbc\x51\x5e\xff\x14\x90\xd4\x93\xb4\xae\ +\x22\xbc\x28\x01\xac\x25\xf5\xce\x04\xcc\x2c\x28\xeb\xcc\xaf\xb0\ +\x03\xda\xf9\xc0\xbf\xb6\xda\x39\xa7\xdf\xa4\xc5\x71\x7c\xf6\xa7\ +\x15\xf1\xbe\x9b\xfc\x0b\x6a\x81\x5a\xa0\x16\xa8\x05\x6a\x81\x5a\ +\xa0\x16\xb8\xda\x0f\x5c\xbb\xcf\x4b\x13\x90\xb4\x03\x5a\x55\x86\ +\x1d\x09\x80\x6d\x3e\x28\xb6\x64\x2b\x33\xeb\x86\x61\xd8\xa9\x2a\ +\xf9\xb8\x77\xd7\xcc\x56\x67\x02\x92\xe6\x40\xd3\xf7\xfd\x65\x15\ +\x12\x93\xc9\xe4\xe6\xd8\x96\x37\xb2\x2c\x5b\xe4\xf5\x2f\xe7\xeb\ +\x9c\x7b\x02\x1e\x80\x03\xb0\xe6\xa3\x81\x2c\x83\x00\xe8\x02\x0d\ +\x2e\x3d\x4c\x72\xa2\x28\xea\x7b\x9e\x37\x3a\xb6\xce\xed\xd3\xf9\ +\x1f\xb2\x35\xb3\x55\x96\x65\x8b\xd3\xa7\x59\xcd\x3b\xf1\x23\x82\ +\xe5\xfb\x4f\xe3\xdb\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1d\x00\xb0\ +\xd5\x35\xa3\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xfe\x9f\x67\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x60\x34\x44\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x64\x40\x09\x75\x86\xb3\xad\x9c\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\x96\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0d\x1b\x75\xfe\x31\x99\x00\x00\x00\x27\x49\x44\x41\x54\x08\xd7\ +\x65\x8c\xb1\x0d\x00\x00\x08\x83\xe0\xff\xa3\x75\x70\xb1\xca\xd4\ +\x90\x50\x78\x08\x55\x21\x14\xb6\x54\x70\xe6\x48\x8d\x87\xcc\x0f\ +\x0d\xe0\xf0\x08\x02\x34\xe2\x2b\xa7\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1c\x1f\x24\ +\xc6\x09\x17\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\xff\xcf\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x0e\ +\xa3\x21\x9c\xc3\x68\x88\x61\x1a\x0a\x00\x00\x6d\x84\x09\x75\x37\ +\x9e\xd9\x23\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x02\x04\x6d\ +\x98\x1b\x69\x00\x00\x00\x29\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\xff\xcf\xa3\x08\x18\x32\x32\x30\x20\x0b\x32\x1a\ +\x32\x30\x30\x42\x98\x10\x41\x46\x43\x14\x13\x50\xb5\xa3\x01\x00\ +\xd6\x10\x07\xd2\x2f\x48\xdf\x4a\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x02\x8e\ +\x00\ +\x00\x0b\x17\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\xf6\x40\xcc\xce\xc1\x06\x24\xf7\x97\ +\x4d\x95\x07\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x2e\xf2\x1e\x31\xe0\x70\xfe\x3f\xf3\x91\x9b\x82\ +\x83\x8f\xc4\xf2\x55\x52\x2f\xcd\x76\x7c\xe4\x9f\x12\x96\x7b\xbf\ +\x7d\xa3\x4e\xca\x82\xc7\xdf\xe7\x7e\xd1\x94\xe2\x8e\xfc\xde\xc8\ +\x60\xb1\x71\xc3\x04\xdd\xb3\x0f\x5a\x8d\xcc\x1f\x86\x19\x97\x16\ +\xfa\xe5\xbe\x7c\xd2\xe7\x99\x2a\x79\xa4\x60\x5b\xf5\xc5\x73\x7f\ +\x16\x69\xb3\x2d\x9b\x6d\x6d\x55\xf6\x66\xd2\xdb\xa2\x15\x2b\x96\ +\x84\x05\x6e\x2d\xda\x2b\xd8\x9f\xfd\xf9\xd7\x8b\xb9\x9b\xf7\x9f\ +\x7e\xc9\xef\xa1\xa8\xe3\xfd\xb6\xee\xd8\x13\x06\x06\x2e\x86\x4c\ +\xa0\x93\x22\x7c\x7d\xac\x92\xf3\x73\xf5\x12\x53\xf2\x93\x52\xf5\ +\x2a\x72\x0b\x18\x40\xc0\xc6\xbe\xa2\x20\x31\x39\x3b\xb5\x44\x21\ +\x29\x35\x3d\x33\xcf\x56\xe9\xfd\xee\xfd\x4a\x0a\x99\x29\xb6\x4a\ +\xe1\xa6\xbe\x06\xbe\x05\xce\xa9\x19\x99\x1e\x55\x45\xa9\xc1\x55\ +\x7e\x21\xc9\x55\xd9\xc9\x96\x29\x4a\xf6\x76\x5c\x36\x15\x56\x40\ +\x03\x72\x53\x4b\x12\x15\x2a\x72\x73\xf2\x8a\xad\x2a\x6c\x95\xc0\ +\xe6\x5a\x01\xd9\x20\x61\x7d\x25\x05\xb0\x92\x92\x6c\x5b\xa5\x08\ +\xdf\x00\x05\xe7\xfc\xa2\x54\x05\x13\x3d\x13\x3d\x03\x5d\xd7\x8a\ +\xcc\x32\x23\x25\x3b\x2e\x05\x9b\xa2\x94\x34\xab\x20\x17\x37\xa8\ +\x11\x40\x9e\xad\x52\x46\x49\x49\x81\x95\xbe\x7e\x79\x79\xb9\x5e\ +\xb9\xb1\x5e\x7e\x51\xba\xbe\xa1\xa5\xa5\xa5\xbe\x81\x91\xbe\x91\ +\x91\x2e\x50\x85\x6e\x71\x65\x5e\x49\x62\x85\x6e\x5e\xb1\x32\xc8\ +\x08\x88\x19\x2e\xa9\xc5\xc9\x45\x99\x05\x25\x99\xf9\x79\x0a\x20\ +\x7e\x62\x52\x7e\x69\x89\xad\x92\x12\x50\x5e\x01\x6a\x38\x28\xf8\ +\xe1\xa6\xe7\x15\x43\x03\x01\x18\x1c\xfa\x20\x19\x7d\x43\x3d\x03\ +\x7d\x64\xe5\x25\x99\x69\x38\x94\x83\x64\x10\xca\x41\x9a\xad\x02\ +\x32\x2b\x52\x73\x22\x5c\x32\x73\x53\xf3\x8a\x81\x4e\xb0\x55\x32\ +\x33\x46\x93\x8c\x44\x92\x34\x07\xcb\x81\x8c\xb1\xf2\xcc\x4d\x4c\ +\x4f\x0d\xcf\x4c\x29\xc9\x80\xeb\x41\x88\x7b\xa4\x66\xa6\x67\x94\ +\xa0\xa8\xf7\x2f\xca\x4c\x05\xfa\xbe\x04\x6c\x8e\xa1\x92\x3e\x28\ +\x0c\xf5\xa1\x81\x08\x8c\x13\x7d\x78\xa4\xd8\x81\xbd\x42\x6b\x30\ +\x6a\xc9\xa8\x25\xa3\x96\x8c\x5a\x32\x6a\xc9\xa8\x25\xa3\x96\x0c\ +\x2a\x4b\xb8\x10\xcd\xba\xd4\x3c\x60\x5b\xae\x1c\xd8\x68\x73\x60\ +\x88\x2a\x04\x36\xf8\x58\x8a\x9d\x3c\x43\x38\x80\xa0\x86\x23\xa5\ +\x03\xc8\xd7\xf7\x74\x71\x0c\xb1\x38\x9d\x9c\x20\xc1\xaa\x2c\x6c\ +\x70\x48\xe2\xe3\xc7\x8f\x4b\x5e\xfc\xb6\x9f\xf1\xd7\x89\x27\x62\ +\x47\x81\x22\xf3\x65\x8f\xbe\x9f\x82\x2f\x7f\xb6\x72\x8b\xf7\x3d\ +\xfb\x29\xc8\xcb\xd0\x9d\xc3\xfa\x52\xd3\xfb\x8f\x28\xa8\xf1\xe8\ +\xe9\xea\xe7\xb2\xce\x29\xa1\x09\x00\xa6\x21\x0d\x8f\ +\x00\x00\x02\x95\ +\x00\ +\x00\x0b\x1f\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\x0e\x40\x2c\xc0\xc1\x06\x24\x97\x3d\ +\xaf\xd4\x04\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x4e\xf3\x1e\x76\xe0\x70\x79\x1f\x32\x51\xe8\xc7\ +\xdb\x0d\x53\x84\x23\xb7\x4d\xe1\x0b\xaa\x73\xc8\x3e\xfd\xd1\xfa\ +\x40\xc6\x96\xdf\x2c\x6f\xef\x9f\x77\x5c\xef\x16\x71\xd2\xdd\x47\ +\xe5\x40\xeb\xf2\xe5\xfb\xb4\x7d\xe2\x24\x36\x6b\x78\xbf\x9f\xd5\ +\x5d\x3c\x3b\xe4\xd2\x6e\xb5\xcb\xa2\x13\x8c\x6f\xbc\x6f\xaf\xfb\ +\x26\x7e\xd8\xa0\xb0\xc5\x3d\x21\xe1\xf0\xb2\xd4\xeb\x77\xaf\x6c\ +\x49\xeb\xbe\x75\xaa\xd6\xed\x9f\xe7\xba\xfb\xdf\xde\x3c\x7d\x99\ +\xf6\x8b\xd1\xbe\x5a\x47\xe0\x86\xd1\xd4\x23\x0c\x0c\x5c\x4c\x99\ +\x40\x27\x45\xf8\xfa\x58\x25\xe7\xe7\xea\x25\xa6\xe4\x27\xa5\xea\ +\x55\xe4\x16\x30\x80\x80\x8d\x7d\x45\x41\x62\x72\x76\x6a\x89\x42\ +\x52\x6a\x7a\x66\x9e\xad\xd2\xfb\xdd\xfb\x95\x14\x32\x53\x6c\x95\ +\xc2\x4d\x7d\x0d\x7c\x0b\x9c\x53\x33\x32\x3d\xaa\x8a\x52\x83\xab\ +\xfc\x42\x92\xab\xb2\x93\x2d\x53\x94\xec\xed\xb8\x6c\x2a\xac\x80\ +\x06\xe4\xa6\x96\x24\x2a\x54\xe4\xe6\xe4\x15\x5b\x55\xd8\x2a\x81\ +\xcd\xb5\x02\xb2\x41\xc2\xfa\x4a\x0a\x60\x25\x25\xd9\xb6\x4a\x11\ +\xbe\x01\x0a\xce\xf9\x45\xa9\x0a\x26\x7a\x26\x7a\x06\xba\xae\x15\ +\x99\x65\x46\x4a\x76\x5c\x0a\x36\x45\x29\x69\x56\x41\x2e\x6e\x50\ +\x23\x80\x3c\x5b\xa5\x8c\x92\x92\x02\x2b\x7d\xfd\xf2\xf2\x72\xbd\ +\x72\x63\xbd\xfc\xa2\x74\x7d\x43\x4b\x4b\x4b\x7d\x03\x23\x7d\x23\ +\x23\x5d\xa0\x0a\xdd\xe2\xca\xbc\x92\xc4\x0a\xdd\xbc\x62\x65\x90\ +\x11\x10\x33\x5c\x52\x8b\x93\x8b\x32\x0b\x4a\x32\xf3\xf3\x14\x40\ +\xfc\xc4\xa4\xfc\xd2\x12\x5b\x25\x25\xa0\xbc\x02\xd4\x70\x50\xf0\ +\xc3\x4d\xcf\x2b\x86\x06\x02\x30\x38\xf4\x41\x32\xfa\x86\x7a\x06\ +\xfa\xc8\xca\x4b\x32\xd3\x70\x28\x07\xc9\x20\x94\x83\x34\x5b\x05\ +\x64\x56\xa4\xe6\x44\xb8\x64\xe6\xa6\xe6\x15\x03\x9d\x60\xab\x64\ +\x66\x82\x26\x19\x89\x24\x69\x68\x06\x96\x04\x99\x63\xe5\x99\x9b\ +\x98\x9e\x1a\x9e\x99\x52\x92\x01\xd7\x84\x10\xf7\x48\xcd\x4c\xcf\ +\x28\x41\xd5\xe0\x5f\x94\x99\x0a\xf4\x7f\x09\xc4\x24\x25\x7d\x50\ +\x28\xea\x43\x83\x11\x18\x2b\xfa\xf0\x68\xb1\x03\x7b\x86\xd6\x60\ +\xd4\x92\x51\x4b\x46\x2d\x19\xb5\x64\xd4\x92\x51\x4b\x46\x2d\x19\ +\x54\x96\x70\x21\x1a\x76\xa9\x79\xc0\xd6\x5c\x39\xb0\xd9\xa6\x5e\ +\xf8\x9e\x0f\xd8\xe4\x63\x29\x76\xf2\x0c\xe1\x00\x82\x1a\x8e\x94\ +\x0e\x20\xdf\xd4\xd3\xc5\x31\x24\xe2\xf0\xdb\xab\x1b\x79\x19\x0c\ +\x38\x58\x0c\x4f\x2c\x3a\x73\x6c\x89\xe7\x6c\xd9\x7b\xef\x34\x26\ +\x3a\x84\xbb\x6e\xfb\xd7\x3e\x73\xa7\xe7\xe9\xf7\x79\xf3\xbf\x70\ +\x5b\xcc\x63\x98\xe0\x28\x39\xc5\xb1\xc1\x83\xff\xd8\x5c\x0e\xee\ +\x55\xc9\xa5\x1a\xa0\x46\xa4\xa7\xab\x9f\xcb\x3a\xa7\x84\x26\x00\ +\xe3\x91\x12\xf6\ +\x00\x00\x00\xe0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x29\x1c\x08\x84\x7e\x56\x00\x00\x00\x60\x49\x44\x41\x54\x78\ +\xda\xed\xd9\xb1\x0d\x00\x20\x08\x00\x41\x71\x50\x86\x63\x51\xed\ +\x8d\x85\x25\x89\x77\xa5\x15\xf9\x48\x45\x8c\xa6\xaa\x6a\x9d\x6f\ +\x99\x19\x1d\x67\x9d\x03\x11\x45\x14\x11\x11\x45\x14\x51\x44\x44\ +\x14\x51\x44\x11\x11\x51\x44\x11\x45\x44\x44\x11\x45\x14\x11\x11\ +\x45\x14\xf1\x5b\xd1\x75\xb0\xdb\xdd\xd9\x4f\xb4\xce\x88\x28\x22\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x36\xce\x69\x07\x1e\xe9\ +\x39\x55\x40\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\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x53\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbf\x4f\x13\x61\x18\xc7\x3f\xcf\xb5\x13\xa6\x86\xd1\x76\xa3\ +\x03\x90\x2e\xd2\xeb\x00\x13\x5c\x4b\x42\x82\x57\xa2\x61\x76\xc5\ +\x38\x6a\xe2\x20\x3f\xdc\xa8\xd1\xc4\x44\x17\x27\x06\xe3\x3f\x50\ +\x1c\x5a\x18\x08\x50\x18\x14\x12\x69\x71\xa0\x89\x0d\xa4\x4c\x2d\ +\x6e\xc4\x46\x16\xec\x3d\x0e\x80\x61\xe0\xe0\xae\x10\x17\xfb\x59\ +\xdf\xef\x7b\xdf\xef\xdd\xbd\xef\xf3\x3c\xd0\xa6\xcd\xff\x8e\xf8\ +\x11\x5b\x96\x15\x6c\x10\x4a\xab\xe8\xb8\xa0\xfd\x0a\x91\xd3\x87\ +\xd4\x14\xd9\x14\x95\x6c\x88\x46\xae\x50\x28\xfc\xbe\xf1\x00\x89\ +\xd4\xd8\x88\xaa\xf3\x16\x88\x21\x52\x02\x67\x5d\x1d\xa9\x03\x88\ +\xa1\x61\x30\x06\x51\x8d\x03\x65\xc3\xd0\x27\x5f\x97\x17\x96\x6e\ +\x2a\x80\x98\x49\x7b\x12\xc8\xa0\xcc\x6b\xc0\x99\x29\x2d\x2f\x96\ +\x2f\x12\xc6\x87\x47\x63\xd2\x34\x66\x11\x1e\x08\x32\xbd\xb5\x9a\ +\x7b\x05\xa8\xc7\x77\xbc\x18\x33\x69\x4f\x99\x49\xfb\xd8\x4c\xa5\ +\x27\x3c\xef\x49\xa5\x27\xcc\xa4\x7d\x9c\x48\xa6\x27\xaf\xd2\x06\ +\x2e\x5b\x4c\xa4\xc6\x46\x40\x3f\x20\xf2\xb8\xb8\x92\x9b\xf3\x1a\ +\xa0\x5e\xad\x14\xc3\x5d\xdd\x3f\x80\x77\x91\x68\xef\x97\x7a\xb5\ +\xb2\xe7\xa6\x75\xfd\x05\x96\x65\x05\x7f\xca\xad\x6f\x28\xdf\x8b\ +\x85\xfc\xb8\x57\xf3\xf3\x98\xa9\x7b\xf3\xa8\x74\xdf\xd6\x5f\x77\ +\xdd\x0e\xa6\xe1\xb6\xb9\x41\x28\x0d\xc4\x34\xe0\xcc\xb4\x62\x0e\ +\xa0\xa2\xd3\x40\xec\x50\x3a\x6c\x37\x8d\x6b\x00\x15\x1d\x47\xa4\ +\xe4\x76\xe0\xbc\x50\x5a\x5e\x2c\x0b\x6c\x07\xc0\xf5\x0b\xba\x06\ +\x10\xb4\x1f\x9c\xf5\x56\xcd\xcf\x50\xd1\x35\x90\x01\xdf\x01\x14\ +\x22\x67\xf7\xfc\x3a\x08\x1c\x9c\x15\x2c\x5f\x01\xfe\x15\x41\xb7\ +\x05\x81\x1a\x86\x86\xaf\x6b\xa0\x70\x47\xa0\xe6\x3b\x80\x22\x9b\ +\x20\x83\xd7\x0d\x20\x2a\x43\xa0\x1b\x6e\xeb\xee\x87\x50\x25\x8b\ +\x6a\x3c\x3e\x3c\x1a\x6b\xd5\x3c\x3e\x3c\x1a\x53\xe8\x6b\x42\xd6\ +\x77\x80\x10\x8d\x1c\x50\x96\xa6\x31\xdb\x6a\x00\x51\xc9\x08\xec\ +\x74\xea\x51\xde\x4d\xe3\x5a\x8a\xf7\xf7\xf7\x9d\x48\xb4\x77\x17\ +\x34\x13\x8e\xf6\xd4\xea\xd5\x4a\xd1\x8f\xb9\x99\xb4\x1f\x81\x3c\ +\x33\x0c\x7d\xf8\x79\x75\x69\xd7\x77\x00\x80\x7a\xb5\xb2\x17\xee\ +\xea\x3e\x06\xde\x84\xa3\x3d\x07\x5e\x43\x9c\x98\xf3\x5e\x90\x17\ +\x5b\x2b\xf9\x8f\x97\x69\x3d\xb5\xe3\x44\x32\xfd\x5c\xd1\x97\x88\ +\x7e\x52\xd1\xe9\x4b\xdb\xb1\x4a\x06\x95\xfb\x22\x3a\xb5\xb5\xb2\ +\xf0\x9a\x2b\xda\x71\x4b\x03\x89\xc0\xb6\x8a\xae\x09\x1c\xc0\xe9\ +\x55\x53\x19\x52\xe8\x13\xd8\x11\x43\x9f\xde\xe4\x40\xf2\x17\xcb\ +\xb2\x82\x87\xd2\x61\x9f\xd4\x76\x19\x38\x3f\x92\x81\x6e\x34\x21\ +\xdb\xa9\x47\x79\x3f\x23\x59\x9b\x36\x6d\xfe\x00\x0a\x49\xe7\x8d\ +\x0a\x55\xe0\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x00\x93\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0c\x2b\x4a\x3c\x30\x74\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\ +\x63\x60\x40\x05\xff\xff\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\ +\xc5\x70\x0e\x23\x23\x9c\xc3\xc8\x88\x61\x1a\x0a\x00\x00\x9e\x14\ +\x0a\x05\x2b\xca\xe5\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x0e\x16\ +\x4d\x5b\x6f\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\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\x00\xdc\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x40\x08\x06\x00\x00\x00\x13\x7d\xf7\x96\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2d\x19\xaf\x4a\xeb\xd0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x40\x49\x44\x41\x54\x58\xc3\xed\xce\x31\ +\x0a\x00\x20\x0c\x03\x40\xf5\xa3\x7d\x5b\x5f\xaa\x53\xc1\xc9\xc5\ +\x45\xe4\x32\x05\x1a\x8e\xb6\x76\x99\x5e\x25\x22\x66\xf5\xcc\xec\ +\xfb\xe8\x74\x1b\xb7\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\xf0\x36\xf0\x41\x16\x0b\x42\x08\x78\x15\x57\x44\xa2\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x8a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3c\x49\x44\x41\x54\x58\x85\xed\ +\xd7\x31\x4e\xc2\x50\x1c\xc7\xf1\xef\x9f\x26\x30\x5a\xa2\x96\x33\ +\x74\x11\x27\x4e\x60\x02\x77\xe0\x14\x18\xbb\xa9\x83\x8c\x34\xe0\ +\x25\x38\x83\x31\xf1\x04\x9d\x00\x87\x9e\x01\x62\x42\x1d\x21\x69\ +\xff\x0e\x94\x86\xb4\xe0\xa0\x6d\x1c\x7c\xbf\xf1\xf5\xa5\xbf\x4f\ +\xde\x5b\xfe\x0f\xfe\x7b\x24\xbf\xe0\xf8\xb3\xae\x4a\xed\x56\x95\ +\x0e\x60\x97\xd4\x13\x89\x10\x88\x26\xe3\xd5\xdd\xf5\xeb\x49\xc0\ +\xb9\xbf\x18\x0a\xdc\x03\x1b\xd0\x10\x95\xcf\x52\xea\x45\xcf\x40\ +\x5c\xa0\x81\x32\xfc\xf0\xae\x1e\x0b\x80\xcb\xf1\xbc\xa7\x89\xbc\ +\x00\x6f\x96\x6a\x7f\xe9\xb5\x57\xa5\x94\xa7\x69\x8d\xe6\x4e\x2c\ +\x32\x05\x6e\x6a\x24\xbd\xfd\x49\xd4\xb2\x1d\x2a\x03\x60\x53\x45\ +\x39\xc0\xd2\x6b\xaf\x2c\xd5\x3e\xb0\x8d\xb1\x06\xfb\xf5\x0c\xb0\ +\xbb\x73\x0d\xab\x28\x3f\x44\x00\xa1\xa0\x9d\x02\x00\xb0\x4b\xbb\ +\xf3\xef\xa2\x44\x40\xf3\x18\xe0\x4f\x62\x00\x06\x60\x00\x06\x60\ +\x00\x06\x60\x00\x06\x70\x08\x88\x76\xd3\x6b\xc5\x11\x6c\x60\x5d\ +\x00\x88\x10\x80\xb8\xad\xd1\xdc\xa9\xaa\x3b\xfd\xb7\xab\x48\x50\ +\x04\x68\x32\x06\x1a\xb1\xc8\xb4\x0a\x84\xf3\xfc\xde\x4a\xc7\xf2\ +\xba\x45\x3c\xc9\x7a\x0f\x37\x5d\x8c\x16\x4f\x08\x0f\xc0\x16\x08\ +\xd3\x01\xf2\xf7\xd9\x1d\xbb\x0b\xd4\x4f\x3e\x4c\x32\xa9\x3f\xeb\ +\xc6\x58\x83\x74\x74\x6e\xe6\xbf\xff\x30\x6b\x45\x02\x8b\x78\x92\ +\x7f\x9a\x99\x7c\x01\x0b\xfa\x6f\x38\x11\xee\x15\x0b\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\xdd\x91\xc3\x20\ +\x10\x83\x37\x57\xc3\xd5\x91\xea\x52\xc6\x55\x77\x75\xa4\x87\xe4\ +\x89\x19\x86\xb1\x61\x61\x25\x81\xc7\xe8\xd9\x11\xd6\xc7\x8f\xbd\ +\x04\x9b\x6d\x6d\x6d\xdd\x59\x0f\x65\x63\xbf\x7f\xff\x1f\xcf\x75\ +\xef\xd7\x53\x76\x5f\xd4\x86\xbc\x81\x5b\x62\x02\x81\x1b\xa3\x42\ +\x9f\x09\x0d\x03\x66\xc6\x0e\x5e\x0a\x05\x02\x62\xa2\x0e\x9f\x84\ +\x80\x10\x32\x98\x15\xbc\x54\x04\xc4\xf0\x0f\x57\x09\x9f\x34\x0a\ +\xa1\xfb\x47\xab\x05\x2f\xd5\x0b\xa2\xeb\xe2\xd5\xc3\x27\xf5\x40\ +\x70\x5f\x78\x95\xf0\x49\x5e\x08\x3f\xec\x1b\x59\x5d\x2e\x4a\x57\ +\xeb\xfd\x24\xcf\x28\x68\x5e\xd0\x0a\x9f\x37\xa2\x02\x55\x06\xab\ +\xb5\xdb\x82\x00\x9d\x02\xef\xd7\xf3\xc1\x2e\x64\xd0\xfe\x55\x00\ +\xa3\x3d\xca\x82\x30\xe2\xdb\xca\x70\x0a\x20\x3a\x9c\xd1\x10\x22\ +\x7e\xb5\x2c\xe1\x29\x10\x99\x7f\x5e\xd5\x7c\xa2\x1d\x75\x68\x3c\ +\x62\xca\xba\x49\xa4\xef\x91\x17\x6c\x11\x64\x8c\x04\x66\xcf\x27\ +\x41\x9f\x02\x48\x08\x8a\xf0\x66\x07\x53\x00\x61\x1e\xbd\x79\x66\ +\xf8\xd2\x9b\xf2\x2a\x1c\x19\x09\xaa\x9e\x4f\xa2\xd5\x02\x23\x10\ +\xd4\xe1\xcd\xc8\xc5\x50\x0f\x84\x19\xe1\xcd\x8a\x35\x80\xd5\x50\ +\x2b\x9c\x3a\x7c\xde\x9e\xa4\x1c\x1e\x5d\x13\x14\xc5\x95\x6c\x3f\ +\xa0\x37\x8c\xaa\xb2\x94\x6e\x88\x78\x43\x29\xf7\x1f\xe4\x3b\x42\ +\xad\x70\xea\xcd\x17\x39\x80\xc8\x7b\x00\x43\x52\x00\xde\x70\x4a\ +\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd1\x47\x9d\x02\x02\x1d\x80\ +\x27\xfc\x4c\x08\x94\x6a\x30\xa9\xb7\xe7\x15\x2f\x45\x92\x6a\xf0\ +\xa8\xa1\x5c\x67\x61\x66\x8c\x04\x0a\x80\x48\x4f\xaa\x21\xc0\x01\ +\x20\x86\xb1\x12\x02\x6c\x53\xd4\x0c\x3f\x87\x15\x7e\xb0\x11\xc0\ +\x58\xc0\x14\x23\x01\x02\x80\xb9\x7a\xb3\x21\x84\x6f\x5c\x55\xcf\ +\xb3\x36\x5a\xa7\xec\x09\xae\xe0\x97\x74\x0a\x80\xf5\x5f\x5c\x44\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\x3f\x7c\x40\x62\x75\xb5\x46\ +\xf2\x3e\x22\xe3\x35\xbb\x1a\x84\x7d\x4a\xcc\xa9\x7d\x50\xb2\xd7\ +\x7c\x75\x08\xd4\xa3\xb2\xb9\x56\x03\x21\x3b\x2c\x9d\x6b\x15\x08\ +\x53\x8e\xcb\x27\xcd\x86\x10\x2d\x88\xf6\x27\x33\x08\x93\x5c\xb7\ +\xfd\x68\xea\x48\xb7\xfc\x6c\xae\xa6\x15\x3f\x9c\xdc\xba\xbb\xbe\ +\x18\x5f\x5a\xd7\x14\x54\xdf\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x0d\xfc\ +\x52\x2b\x9c\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x03\x18\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xca\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x6f\x14\x57\x10\xc6\x7f\xdf\xf3\xc9\x41\x44\x8e\x50\xaa\ +\x84\x3f\x20\xc5\x35\xc6\x77\x05\xa4\x81\x5d\x23\xc5\xc2\xb7\x40\ +\xe4\x0e\xba\x20\xe1\xc2\x55\xd2\x05\x4c\x89\xa3\xa4\x4a\x67\x25\ +\x8a\x94\x74\xa1\x33\x10\x9f\x8d\x0c\xb2\x39\x68\x02\x52\x6c\x73\ +\x05\x96\xf2\x0f\x38\x54\x11\x8a\x15\x94\x00\xb7\x5f\x8a\xdb\x3d\ +\x5f\x24\xaf\xed\x43\x4e\x95\xfb\xaa\xb7\xb3\x33\x6f\xbe\x99\xf7\ +\xde\xcc\x40\x1f\x7d\xfc\xdf\xa1\x5e\x94\xa3\x28\x2a\x6d\x31\x94\ +\x58\x9e\x10\x3e\x6e\x38\x9a\x6d\xb2\x69\xf4\x58\xd6\xdc\x10\x5b\ +\xf5\x46\xa3\xf1\xfa\xc0\x09\x54\x47\xcf\x7e\x64\xa7\x5f\x03\x65\ +\xa4\x75\x48\x1f\x3a\xd5\x6f\x00\x0a\x7e\x1f\xc2\x49\xec\x11\x60\ +\x23\x04\x7f\xfa\xcb\xf2\xe2\xbd\x83\x22\xa0\x4a\x5c\xbb\x02\xcc\ +\x60\x6e\x7a\x20\xbd\xb6\xbe\x7c\x67\x63\x27\xc5\x91\xd3\x67\xca\ +\x6a\x85\xeb\x88\x8f\x85\xa6\x57\xef\xd7\xbf\x04\xbc\xcf\x18\x77\ +\x46\x25\xae\x5d\xad\xc4\xb5\x57\x95\xd1\xe4\xf2\xbe\x6d\x46\x93\ +\xcb\x95\xb8\xf6\xaa\x1a\x27\x57\xf6\xd2\xdd\x35\x03\x59\xda\x97\ +\x90\x26\xd7\x56\xea\xdf\xe5\x36\x95\x28\xb9\x88\x3c\x05\x1e\xce\ +\x44\x4d\xac\xd9\xb5\x46\xfd\x47\xb2\x88\x2b\x71\x6d\x12\xf8\x56\ +\x0a\x63\xab\x2b\xf3\x77\x7b\x26\x10\x45\x51\xe9\x0f\xbd\xdd\xc4\ +\xfc\xba\xd6\x58\x98\x00\xf8\x70\x6c\xec\xdd\xbf\x5f\x96\x7e\x00\ +\xce\x21\xa5\xd8\xa1\xbd\x4b\x7b\x6d\x7c\xfb\xd0\x60\xeb\xd2\xcf\ +\x4b\x4b\xbf\xb7\x33\x31\x7e\x13\xeb\x83\x77\xfc\xe7\x70\xd1\xc5\ +\x0c\x45\x04\xb6\x18\x4a\x80\xb2\x07\xd2\x6b\x39\xd9\xb6\x73\x25\ +\x00\x1d\xe7\x5d\x6b\x11\xce\xfe\xf5\x72\xe0\xfb\x3c\x30\xcb\xd3\ +\x40\xf9\xb9\x0e\xd7\x8a\xfc\x14\x12\xb0\x3c\x81\xb4\x9e\x5f\xb8\ +\x4a\x94\x5c\x04\xce\x81\x0b\x6d\xc0\x41\xe8\x7c\x35\x1e\xbf\x00\ +\xb0\xbe\x7c\x67\x43\xf0\x64\x00\x26\x7a\x26\x20\x7c\x1c\xd2\x87\ +\xdb\x02\x4f\x21\xa5\xc5\xce\x3b\x86\x69\x8a\xa6\xba\x02\x79\x00\ +\x3a\x51\xa4\x5e\x2a\xfa\x61\x38\x9a\xbf\xf3\x4c\x32\x8c\x8b\x09\ +\x77\x19\x06\x60\x78\x9b\x0f\xcf\xf2\x82\xb5\x13\xf6\xde\xf0\x3f\ +\xc6\x2e\x47\xc0\x66\xbb\xc2\x75\x24\xcd\xfd\x1e\x01\xd0\xcc\x3f\ +\x0d\xef\x09\x36\x7b\x26\x60\xf4\x18\xc2\xc9\x6d\x81\x66\xff\x75\ +\xf3\x8b\x0d\x43\xc0\xb3\x1d\x3e\xd6\x29\xf0\xa3\x9e\x09\xc8\x9a\ +\xc3\x1e\x19\x39\x7d\xa6\x0c\x90\x15\x99\x9f\x60\xb7\x2c\x28\x35\ +\xbe\xbd\x7a\x7f\xf1\x06\xb4\x4b\xb3\xe1\x58\x0b\xe6\x7a\x26\x30\ +\xc4\x56\x1d\xd8\x50\x2b\x5c\xcf\x44\x7e\x6b\xf0\xf5\x27\x26\x9d\ +\x6f\xfb\x62\x9b\x48\xb6\x36\xe9\xfc\xa1\xc1\xd6\x25\xb2\x6a\x28\ +\x6b\x46\xf0\xf4\x88\x5f\x2c\x14\x52\x2e\x8e\xa6\xb8\x14\x57\xe3\ +\xf1\x0b\xd9\x53\xcb\x6f\x7b\x33\xe0\xd9\x2c\xf2\xee\x52\xfc\x4d\ +\x08\x1e\xdb\x6f\x67\xdc\x11\x6f\xd4\x8c\xe2\xda\xe4\x81\x34\xa3\ +\x5c\xa7\x1a\x27\x9f\x1b\x7f\x81\x7c\xcb\xf2\xf4\xae\xed\xd8\x9a\ +\xc1\x3a\x2f\xf9\xea\xea\xca\xe2\x57\xec\xd1\x8e\xdf\x68\x20\x11\ +\x3c\xb1\xfc\x40\xf0\x0c\xb2\xa7\x66\x9d\x32\x1c\x13\x3c\x55\xf0\ +\x67\x07\x39\x90\x74\x10\x45\x51\xe9\xb9\x0e\xd7\xda\xb5\x5d\x27\ +\xba\x47\x32\xf0\xa3\x16\xcc\x1d\xf1\x8b\x85\x5e\x46\xb2\x3e\xfa\ +\xe8\xe3\x1f\x72\x78\x36\x82\x63\xad\x95\xaf\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x3b\xdc\ +\x3b\x0c\x9b\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x29\xb3\ +\x47\xee\x04\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa8\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x5a\x49\x44\x41\x54\x58\x85\xed\ +\x97\x4d\x6a\xc2\x50\x14\x85\xbf\x1b\x82\x0e\xab\x13\xbb\x06\x37\ +\xe0\x0a\x0a\xba\x07\x57\x61\x09\xe4\x29\x6d\x07\x75\x12\x21\xe8\ +\x2a\x5c\x43\x29\x74\x05\xd9\x80\x7b\x70\xa2\x1d\x2a\x21\xa7\x83\ +\x1a\xb1\x86\x50\x28\xb1\x16\x9a\x33\x7b\xf7\x3e\xde\xf9\xb8\xef\ +\x87\xfb\xe0\xbf\xcb\xce\x03\x61\x18\xf6\xcd\xec\x5e\x52\xcf\xcc\ +\x5a\x55\x98\x48\xda\x9a\x59\x22\x69\x3e\x9b\xcd\x5e\x4b\x01\xc6\ +\xe3\xf1\x54\xd2\x03\xb0\x93\xb4\x32\xb3\xf7\x8a\x00\x6e\xcc\xac\ +\x0b\x34\x81\x69\x14\x45\x4f\x05\x00\xe7\xdc\x00\x78\x01\xde\xd2\ +\x34\x1d\xc6\x71\xbc\xae\xc2\x3c\x57\x10\x04\x1d\xdf\xf7\x97\xc0\ +\x9d\xa4\x41\x5e\x09\xef\x64\xce\x08\xd8\x5d\xc2\x1c\x20\x8e\xe3\ +\x75\x9a\xa6\x43\x60\xef\x79\xde\x28\x8f\x1f\x01\x24\xf5\x24\xad\ +\x2e\x61\x7e\x0a\x01\xac\x24\xf5\x0a\x00\x66\xd6\xaa\x6a\xcf\xbf\ +\xd1\x16\x68\x17\x00\xae\xa5\x1a\xe0\xea\x00\x7e\x59\xc2\x39\xa7\ +\x2a\x8d\xa2\x28\x2a\xbc\xba\xf0\x07\x2a\x50\x03\xd4\x00\x35\x40\ +\xe9\x3b\x50\x76\x6f\xab\xd6\xd5\x2b\x50\x03\x5c\x1d\xe0\x78\x08\ +\x25\x6d\x81\x9b\x5f\xf0\x6c\x01\x9b\x7c\x70\xda\x92\x25\x66\xd6\ +\x0d\x82\xa0\x73\x29\xe7\xc3\xda\x5d\x33\x4b\x0a\x00\x92\xe6\x40\ +\xd3\xf7\xfd\xe5\x25\x20\x26\x93\xc9\xed\xa1\x2d\x6f\x64\x59\xb6\ +\xc8\xe3\x5f\xee\xba\x73\xee\x19\x78\x04\xf6\xc0\x8a\xcf\x06\xb2\ +\x0a\xb5\x80\x2e\xd0\xa0\xec\x63\x92\x2b\x0c\xc3\xbe\xe7\x79\xa3\ +\x43\xeb\xdc\x3e\xcf\xff\x50\x1b\x33\x4b\xb2\x2c\x5b\x9c\x7f\xcd\ +\x6a\x7d\x00\x2c\x83\x82\xe5\xf9\x1d\x9c\xb3\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x20\xb9\ +\x8d\x77\xe9\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xe6\x7c\x60\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x48\x11\x40\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x23\xed\x08\xaf\x64\x9f\x0f\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x02\x6b\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x1d\x49\x44\x41\x54\x58\x85\xed\ +\x96\x31\x4f\x13\x61\x18\xc7\x7f\xcf\x5d\x37\x3a\x71\x25\x01\x3e\ +\x80\x43\xb5\x08\x13\x4e\x12\x16\x1d\x20\x41\xfb\x1d\x60\xb6\xa1\ +\x12\xa1\x0c\x1d\xc0\xa8\x3d\xe3\xa4\x89\xe1\x3b\x14\x07\x18\xc4\ +\xa1\x81\x09\x26\xa0\xd8\x26\x7e\x81\x6a\x22\xd7\xa9\x4c\xd0\xf7\ +\x71\xe8\x81\x0c\x5c\xdb\xbb\x36\x2e\xf6\xbf\xde\xfb\xdc\xff\x77\ +\x4f\xee\x7d\xfe\x0f\x0c\x34\xd0\xff\x2e\x09\x75\x3a\x5f\x8a\x39\ +\x71\x67\x5e\xd0\x34\xc8\x34\x30\xee\x3f\xa9\x81\x1e\x29\x52\xf4\ +\x1a\xde\x0e\xf9\xd9\xab\xbe\x03\x0c\xbf\x3b\x7b\x62\x59\xfa\x01\ +\x48\x02\xc7\x8a\x1c\xa0\xfa\xb3\xf5\x16\x19\x13\xf4\x31\x30\x05\ +\x54\x0d\xf2\xa2\x9e\x4d\x7d\xeb\x0f\x80\xaa\x8c\xbc\x2f\xaf\x2a\ +\xb2\x29\xc2\x76\x53\xed\xf5\x7a\xf6\x7e\xf5\x4e\x48\xb7\x92\xb4\ +\xa5\xb9\xa1\xca\x33\x55\xc9\x79\xd9\x07\x6f\x10\xd1\x6e\x3f\xf2\ +\x4e\x8d\xb8\xa7\x6b\x09\xb7\x7c\x99\x28\x94\x17\xbb\xad\x49\x14\ +\xca\x8b\x09\xb7\x7c\xe9\x14\xce\x56\x3b\x9d\x6d\xdb\x01\xbf\xed\ +\x5f\x51\x96\xce\x5f\x4e\x6c\x75\x0b\x00\x90\x70\xcb\x4b\xc0\x67\ +\x63\xe4\x69\x7d\x25\xb5\x17\x1e\x20\x5f\x8a\x25\xe2\xce\xa9\x08\ +\x3f\x7e\x2f\x4f\xa4\xc3\x98\xdf\x82\xd8\x06\xee\x9d\x37\xbc\x87\ +\x41\x3f\xa6\x15\x54\xec\xc4\x9d\x79\x20\xd9\x54\x7b\x3d\x8a\x39\ +\x80\xc1\xce\x01\x49\x67\xc8\x99\x0b\x3a\x13\x08\xd0\xba\x6a\x1c\ +\x07\xfd\x70\xdd\xa8\x55\xab\x27\x16\x12\xd8\xc1\x40\x00\x90\x69\ +\x45\x0e\xa2\x9a\x5f\x4b\xb1\xf6\x55\xf4\x51\x04\x00\xc6\x6f\xee\ +\x79\x6f\x08\xbf\xf8\x3b\xb0\x42\x01\xfc\x13\xb5\x03\xa8\x21\x32\ +\xd6\xbb\x85\x8c\x02\xb5\x08\x00\x7a\xe4\x8f\xd7\xde\xec\x31\x33\ +\xa2\x72\x18\x1a\x40\x91\x22\x30\x35\xec\x56\x92\x51\xcd\x5b\xb5\ +\x32\x69\xd0\x62\x68\x00\xaf\xe1\xed\x00\x55\x5b\x9a\x1b\x51\x01\ +\x2c\x9a\x9b\x40\xc5\xbb\xf0\x76\x43\x03\x90\x9f\xbd\x32\x46\x32\ +\xaa\x3c\x0f\x93\x03\xd7\xf2\x47\xf1\x82\x41\x32\xed\xe2\xb9\xed\ +\x2d\xa8\xaf\xa4\xf6\x04\xcd\x21\x7c\x0a\x15\x46\x2d\xf3\x8f\xaa\ +\x92\xeb\x14\xcb\x5d\xc5\xb1\xe3\x7e\x7f\x25\xa2\xaf\x81\x2f\x06\ +\x3b\xd7\x2e\x8e\xfd\xb6\x2f\x28\xac\x79\xcb\xa9\xb7\x9d\xe2\x38\ +\xe2\x42\xa2\x27\x8a\xb5\xef\x0f\x19\x40\x46\x05\x33\x03\x32\x09\ +\x54\x0c\x92\xe9\xdf\x42\x72\x5b\xf9\x52\xcc\x19\x72\xe6\x2c\x24\ +\xed\x8f\xd7\x9b\x95\x4c\x54\x0e\x0d\x5a\xf4\x2e\xbc\xdd\x30\x2b\ +\xd9\x40\x03\x0d\xf4\x07\x31\xe2\xd8\x82\x22\x4a\xad\xa7\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x50\x10\x86\xbf\x49\x8a\x5d\x56\xa9\x8d\x67\xc8\ +\x46\xbb\xf2\x04\x05\xbd\x83\xa7\xb0\xe8\xae\xed\xa2\x2e\x0d\xda\ +\x4b\x78\x86\x52\xe8\x09\xb2\x52\xbb\xc8\x19\x14\x41\xbb\x54\x48\ +\xa6\x0b\x63\x10\x83\x0a\x35\xe9\xa6\xef\xdb\xe5\xbd\x21\xff\xc7\ +\x3c\x42\xe6\xc1\x7f\x47\x0e\x17\x1c\x6f\xdc\x50\xb1\x1e\x55\xa9\ +\x03\xc5\x8c\x72\x56\x22\xf8\xa2\xd1\x60\xde\xb9\xff\x38\x2a\x70\ +\xeb\x4d\x7b\x02\x4f\xc0\x1a\x34\x40\xe5\x3b\x93\x78\xd1\x1b\x10\ +\x17\xb8\x46\xe9\x2d\xba\xd5\x97\x94\xc0\xdd\x60\xd2\xd4\x48\xde\ +\x81\x4f\x5b\xb5\x35\xeb\xd6\xe6\x99\x84\xc7\x54\xfa\x13\x27\x14\ +\x19\x01\x0f\x16\x51\x73\xd7\x09\x2b\xa9\x50\x69\x03\xeb\x3c\xc2\ +\x01\x66\xdd\xda\xdc\x56\x6d\x01\x9b\x10\xbb\xbd\x5b\x4f\x04\xb6\ +\x67\xae\x41\x1e\xe1\xfb\x12\x40\x20\x68\x3d\x25\x00\x14\x33\x3b\ +\xf3\x53\x28\x2b\xa0\xb4\x7b\xbc\x3a\x57\x5f\xf6\xa6\x7a\x49\xde\ +\xa2\x53\x4d\x7d\x69\xfb\x58\xa7\x36\xff\x02\x23\x60\x04\x8c\x80\ +\x11\x30\x02\x46\xc0\x08\x9c\x9d\x07\xce\xfd\xcf\x2f\x65\xbf\x03\ +\xab\xed\xf4\x9a\x33\x42\x11\x58\xa6\x04\x44\xf0\x41\xdc\x4a\x7f\ +\xe2\xe4\x95\x1d\xbf\xdb\x55\xc4\x4f\x0b\x68\x34\x00\xae\x43\x91\ +\x51\x1e\x12\xce\xdb\x57\x25\x1e\xcb\x0b\x36\xe1\x30\xc9\xdd\x2f\ +\x2a\xf7\xa7\xaf\x08\xcf\xc0\x06\x08\xe2\x01\xf2\x72\xb6\x6d\x77\ +\x81\xc2\xd1\x8b\x49\x62\xea\x8d\x1b\x21\x76\x3b\x1e\x9d\x4b\x87\ +\xfb\xbf\x64\xa9\x88\x6f\x13\x0e\x0f\xaf\x66\x86\x1f\xb5\xcb\x74\ +\xcb\x4c\x58\x91\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +\x00\x00\x03\x0a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xbc\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbd\x4f\x14\x51\x14\xc5\x7f\x67\x86\xd0\x48\x2c\x98\x31\x51\ +\xff\x00\x8b\xd5\x15\xad\xb4\xd2\xd8\x68\x21\x7e\x84\x4e\x3a\x4d\ +\xa4\xa0\x52\x59\x8d\x82\x05\x85\x1a\x95\x41\x3b\xa2\x31\xd1\x4e\ +\x3b\x14\xc1\x42\x2d\x08\x54\x5a\xe9\xee\xba\x24\xfe\x03\x68\xe2\ +\x0e\x85\xc1\x06\xdc\x77\x2d\x76\x46\x88\xb2\xcb\x2e\xc1\xca\x3d\ +\xd5\x7b\x33\xf7\xe3\xbc\xfb\xde\x3b\xf7\x41\x0b\x2d\xfc\xef\x50\ +\x53\xd6\xc3\xd3\x6d\x41\x47\xd0\x2d\xac\x07\x74\x00\xd8\x99\xfc\ +\x99\x07\x7b\x6f\x68\x3c\x5e\x8c\xa7\x18\x3e\xf2\x73\xd3\x09\x74\ +\xde\x2d\x1e\xf5\x3c\xbb\x0f\x64\x80\x0f\x86\x66\x31\xfb\x52\x8d\ +\xa2\x1d\xc2\x0e\x01\xfb\x81\x39\x87\x2e\x2c\xe4\xb2\x6f\x37\x87\ +\x80\x99\xb6\x8d\x16\xae\x19\xba\x29\xf1\xbc\x62\xfe\xf5\x85\xdc\ +\xee\xb9\x35\x49\x46\xa5\x8c\xaf\xca\x0d\x33\x4e\x9b\x69\x28\xce\ +\xed\xb9\x8d\x64\x8d\x2e\x72\x4d\x6c\x8b\xf2\x83\x61\x54\x58\x0e\ +\x47\x0a\xe7\x1b\xf5\x09\x47\x0a\xe7\xc3\xa8\xb0\x1c\x8c\x14\xaf\ +\xad\x67\x5b\xb7\x02\x49\xd9\x5f\x63\xf4\x95\x2f\xef\x7d\x04\x80\ +\x99\xc2\xd1\x62\xaf\x41\xbf\xa0\x0b\xc0\x20\x2f\x18\x2b\x0f\x64\ +\x9f\xa6\x2b\x0e\xa3\x42\x1f\xf0\xd0\x39\x1d\x5b\xb8\x92\x7d\xd3\ +\x3c\x81\xe1\xe9\xb6\xb0\x23\xc8\x4b\x7c\xfe\x36\xb0\xb7\x07\x60\ +\xeb\xbd\x52\x67\xbb\x55\x9e\x60\x9c\x34\xc3\x49\x78\x55\x4e\xc9\ +\x58\x4c\x2c\xc9\x3f\xf7\xfd\xd2\xee\x85\x84\xc4\x73\x60\x57\x79\ +\x31\xee\xaa\x75\x30\xbd\x5a\xf9\x83\x8e\xa0\x1b\xc8\x54\xcc\xbf\ +\x9e\xae\xbc\xdd\x2a\x4f\xcc\xe8\x06\x48\x93\xaf\x1e\x9b\x71\xa2\ +\xdd\x2a\x8f\x31\x13\x80\xc3\x1f\x02\x32\xc1\x96\xe0\x78\xad\x3c\ +\x35\x09\x54\xaf\x1a\x1f\xd2\x03\x17\x8e\x16\x7b\x31\x4e\xaa\xae\ +\x0f\x1e\xc6\xa9\x30\x2a\x9e\x01\xa8\xfa\xda\x47\x0f\xf5\x34\x4d\ +\x00\x74\xc0\xd0\x6c\x3a\x33\xe8\x37\xc3\xd5\xb6\x4f\xec\x0c\x87\ +\x67\xfd\x2b\x7e\xde\x8c\xc9\x0e\xd6\xb2\x6f\xab\x13\x6b\xe7\xef\ +\x7b\x0e\x08\xba\x50\x3d\xc2\x89\x9d\xf0\x40\x5d\xab\x28\x7d\x65\ +\x45\xb0\xfe\xc2\xba\x01\xff\x35\xea\x11\x98\x47\xda\x91\x4e\x0c\ +\xf2\x0d\x6f\x01\x96\x5f\xf9\xa2\xed\xc0\xfc\x06\x08\xd8\xfb\x44\ +\x5e\xab\x61\x60\x4c\x8d\x6e\x81\xd3\xd8\x8a\x9f\x3b\x2c\xd3\xbb\ +\xa6\x09\x18\x1a\x07\xf6\x77\x46\xa5\x0c\x40\x55\x64\x78\x69\xd4\ +\xae\x82\x81\x43\x4c\x94\x73\xd9\x67\x50\x95\x66\xd0\x3e\x87\x8d\ +\x37\x4d\x20\x5e\x8c\xa7\x80\x39\x5f\x95\x1b\xc9\xd2\x6c\x49\xfe\ +\x59\x89\x49\x48\x4b\x9d\x24\x4e\xc6\x12\x93\x4b\xf2\xcf\xa5\x6a\ +\xe8\x51\xb9\x09\x94\xe2\x1f\xf1\xab\x5a\x79\x36\x26\xc5\x51\xf1\ +\x4c\xf5\xaa\xa5\xa7\xdd\xf2\x38\x8d\x95\x73\xd9\x67\x7f\x48\xf1\ +\x03\x87\x8e\x35\xda\x19\xd7\xc4\x86\x9a\x51\x54\xe8\xdb\x94\x66\ +\x04\x80\x99\x82\xe8\xd3\x55\xc9\x6e\x01\x2f\x1c\xfe\x50\xbd\x76\ +\x9c\x94\xfd\x94\xc1\x60\x3c\x90\xbd\xb3\x5e\x3b\xde\xe0\x83\xc4\ +\x3e\x1a\xde\x4c\x22\x32\x80\xb6\x0b\x77\x18\xb4\x0f\x28\x39\x74\ +\x71\xf3\x1e\x24\xab\x31\x3c\xdd\x16\x6c\x09\x8e\x7b\xa8\x27\x91\ +\xd7\xdf\x4f\x32\x99\xde\x39\x6c\x3c\xfe\x11\xbf\x6a\xe6\x49\xd6\ +\x42\x0b\x2d\xfc\x02\x9d\x07\x3c\xe4\x1f\x0b\x5f\x15\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa4\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x56\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x67\x8a\x2e\xab\xd4\xc6\x33\x64\ +\xa3\x5d\x79\x82\x82\xde\xc1\x53\x58\x74\xd7\x76\xa1\x4b\x83\xf6\ +\x12\x9e\xa1\x14\x7a\x82\xac\xd4\x2e\x72\x06\x45\xd0\x2e\x15\x92\ +\xd7\x85\x31\x48\xd2\x74\xd1\x26\x28\x34\xdf\x72\x66\x98\xff\xe3\ +\x0d\x33\xbc\x81\xff\x8e\x44\x07\x4c\x7b\xd6\x52\x29\x3c\xa8\xd2\ +\x04\xca\x29\xe5\x6c\x45\x70\x44\xfd\xf1\xaa\x77\xf7\x96\x28\x70\ +\x63\x2f\x86\x02\x8f\xc0\x0e\xd4\x45\xe5\x33\x95\x78\xd1\x6b\x10\ +\x0b\x28\xa1\x0c\xd7\xfd\xfa\x73\x4c\xe0\x76\x3c\x6f\xab\x2f\xaf\ +\xc0\xbb\xa1\xda\x59\xf6\x1b\xab\x54\xc2\x03\x6a\xa3\xb9\xe9\x89\ +\x4c\x81\xfb\x02\x7e\xfb\x58\x89\x42\xb8\x42\xa5\x0b\xec\xb2\x08\ +\x07\x58\xf6\x1b\x2b\x43\xb5\x03\xec\x3d\x8c\xee\x71\x3c\x14\x38\ +\x9c\xb9\xba\x59\x84\x9f\x4a\x00\xae\xa0\xcd\x98\x00\x50\x4e\xed\ +\xcc\x7f\x42\xd9\x02\x95\xef\x04\xce\x42\x2e\x70\x76\x81\xab\xa4\ +\x89\xaa\xbd\xd0\x34\x83\xd6\xbd\x7a\xec\xd5\x85\x0b\xa8\x40\x2e\ +\x90\x0b\xe4\x02\x89\xef\x40\xd2\xbd\x4d\x9b\xb3\x57\x20\x17\xb8\ +\x28\x81\xed\xa1\x7b\xcd\x18\xa1\x0c\x6c\x62\x02\x22\x38\x20\x56\ +\x6d\x34\x37\xb3\xca\x0e\xf6\xb6\x14\x71\xe2\x02\xea\x8f\x81\x92\ +\x27\x32\xcd\x42\xc2\x7c\xf9\xa8\x05\x6d\x79\xd1\xc0\x9b\x84\xb9\ +\xa7\x8b\xaa\xa3\xc5\x00\xe1\x09\xd8\x03\x6e\xd0\x40\xfe\x9d\x43\ +\xd9\x2d\xa0\x98\xf8\x31\x09\x4d\xed\x59\xcb\xc3\xe8\x06\xad\x73\ +\x25\x3a\xff\x4b\x36\x8a\x38\x06\xde\x24\xfa\x35\xcb\xf9\x02\xdd\ +\x44\x74\xcb\x69\x25\xf5\xbc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x00\x9e\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x0f\xfd\ +\x8f\xf8\x2e\x00\x00\x00\x22\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xfe\x9f\x87\xb1\x18\x91\x05\x18\x0d\xe1\x42\x48\x2a\x0c\x19\ +\x18\x18\x91\x05\x10\x2a\xd1\x00\x00\xca\xb5\x07\xd2\x76\xbb\xb2\ +\xc5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x9d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x4f\x49\x44\x41\x54\x58\x85\xed\ +\x97\xbf\x4e\xc2\x50\x14\x87\xbf\x43\x28\x8c\x94\x05\x9f\x81\x85\ +\x44\x4c\x70\x85\x68\x2a\x11\xe3\x0b\xf0\x14\x75\x56\x07\xd9\xe1\ +\x29\x78\x04\x62\x6c\x4c\xba\x77\xc0\x84\xa5\xef\xc0\x02\x8e\x58\ +\x92\xeb\x50\x8a\x4d\xf9\xd3\x44\x5a\x17\xef\xb7\xf5\xde\x9b\xfe\ +\xbe\x9e\xa6\xe9\x39\xf0\xdf\x91\xe4\x42\xb3\xd3\xbb\x01\xf5\x00\ +\xd2\x02\xcc\x8c\x72\x96\xa0\x3c\x90\xe1\xd4\x9d\xbc\x1d\x14\xb8\ +\x68\xdf\x0d\x94\xa8\x47\x60\x25\xe0\x2b\xd4\x67\x16\xe9\x82\x54\ +\x14\xd4\x81\xb2\x82\xc1\x87\x3b\x79\xde\x11\x68\xb6\x6f\xbb\x88\ +\xbc\x02\xef\x6b\x23\xe8\xcf\x1c\x67\x9e\x45\x78\x44\xc3\xb2\x6a\ +\xc5\xc0\x18\x03\xd7\x40\x37\xaa\x44\x21\xa6\x69\x03\xab\x3c\xc2\ +\x01\x66\x8e\x33\x5f\x1b\x41\x1f\xf8\x02\xec\x68\xfd\x47\x00\x69\ +\x09\xf8\x79\x84\xc7\x25\x00\x1f\x68\xed\x11\xc0\xcc\xea\x9d\x1f\ +\x47\x2d\x81\x6a\x74\x55\x4c\x3b\xde\xec\xf4\xd4\x29\x71\x53\x77\ +\xb2\xf3\xa5\xc5\x29\x1c\xdb\xfc\x0b\xb4\x80\x16\xd0\x02\x5a\x40\ +\x0b\x68\x01\x2d\x90\xda\x0f\xa4\xfd\xcf\x4f\x25\x5e\x81\xa5\x20\ +\x95\x3c\xc3\x42\xc4\x04\x16\x7b\x04\x94\xa7\xa0\xde\xb0\xac\x5a\ +\x5e\xd1\x9b\x7b\xd7\x01\x6f\x8f\x80\x0c\x81\x72\x31\x30\xc6\x79\ +\x48\x5c\x5e\xdd\x9f\x6d\xda\xf2\x12\x30\xda\xa6\xc6\x0f\x9d\x77\ +\x7a\x2f\x02\x4f\x84\xad\xb3\xbf\x69\x20\x33\x40\x4c\xc2\x27\x2f\ +\x1d\x1c\x4c\x22\xc2\xd1\x0c\x9b\xb0\x75\xae\x26\xf7\x7f\xc9\x82\ +\xb0\xec\xa3\xe4\x68\xa6\xf9\x06\xfe\xc1\x65\x8b\x9b\xf2\xc3\xc8\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +" + +qt_resource_name = b"\ +\x00\x09\ +\x09\x5f\x97\x13\ +\x00\x71\ +\x00\x73\x00\x73\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x73\ +\x00\x0a\ +\x09\x24\x4d\x25\ +\x00\x71\ +\x00\x64\x00\x61\x00\x72\x00\x6b\x00\x73\x00\x74\x00\x79\x00\x6c\x00\x65\ +\x00\x09\ +\x00\x28\xad\x23\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x73\x00\x73\ +\x00\x02\ +\x00\x00\x07\x83\ +\x00\x72\ +\x00\x63\ +\x00\x11\ +\x0a\xe5\x6c\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\x09\ +\x06\x98\x83\x27\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x08\x8c\x6a\xa7\ +\x00\x48\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x1a\ +\x01\x21\xeb\x47\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x6d\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0a\ +\x05\x95\xde\x27\ +\x00\x75\ +\x00\x6e\x00\x64\x00\x6f\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x13\ +\x08\xc8\x96\xe7\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\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\x1f\ +\x0a\xae\x27\x47\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x0c\xe2\x68\x67\ +\x00\x74\ +\x00\x72\x00\x61\x00\x6e\x00\x73\x00\x70\x00\x61\x00\x72\x00\x65\x00\x6e\x00\x74\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\x14\ +\x0b\xc5\xd7\xc7\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x76\x00\x6c\x00\x69\x00\x6e\x00\x65\x00\x2e\ +\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x08\x90\x94\x67\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\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\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\x0e\ +\x0e\xde\xfa\xc7\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x12\ +\x07\x8f\x9d\x27\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\ +\x00\x67\ +\x00\x0f\ +\x02\x9f\x05\x87\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\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\x11\ +\x08\xc4\x6a\xa7\ +\x00\x56\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x10\ +\x01\x07\x4a\xa7\ +\x00\x56\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x19\ +\x08\x3e\xcc\x07\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x65\x00\x6e\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x01\xe0\x4a\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\x14\ +\x06\x5e\x2c\x07\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2d\x00\x6f\x00\x6e\x00\x2e\ +\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x06\x53\x25\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\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\x10\ +\x01\x00\xca\xa7\ +\x00\x48\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x08\x3f\xda\x67\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x01\xf4\x81\x47\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x18\ +\x03\x8e\xde\x67\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\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\x1a\ +\x0e\xbc\xc3\x67\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\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\x11\ +\x0b\xda\x30\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x1a\ +\x01\x87\xae\x67\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x17\ +\x0c\x65\xce\x07\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\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\x19\ +\x0b\x59\x6e\x87\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\ +\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1a\ +\x05\x11\xe0\xe7\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x17\ +\x0f\x1e\x9b\x47\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\x00\x6f\x00\x63\ +\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x20\ +\x09\xd7\x1f\xa7\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x66\x00\x6f\x00\x63\x00\x75\x00\x73\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\x1d\ +\x09\x07\x81\x07\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\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\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00\x2b\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ +\x00\x00\x00\x4a\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\ +\x00\x00\x04\x50\x00\x00\x00\x00\x00\x01\x00\x00\x38\xb2\ +\x00\x00\x03\x44\x00\x01\x00\x00\x00\x01\x00\x00\x30\xca\ +\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x1c\xe5\ +\x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x25\x44\ +\x00\x00\x05\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x42\x67\ +\x00\x00\x03\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x34\x47\ +\x00\x00\x04\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x20\ +\x00\x00\x02\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xeb\ +\x00\x00\x04\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x3d\x59\ +\x00\x00\x02\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x8f\ +\x00\x00\x06\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x47\x2c\ +\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x9f\ +\x00\x00\x04\x32\x00\x00\x00\x00\x00\x01\x00\x00\x38\x2d\ +\x00\x00\x04\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x37\x83\ +\x00\x00\x03\xe0\x00\x00\x00\x00\x00\x01\x00\x00\x36\xec\ +\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x06\ +\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x4d\x88\ +\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x2c\x51\ +\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x01\ +\x00\x00\x03\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x33\x63\ +\x00\x00\x04\x76\x00\x00\x00\x00\x00\x01\x00\x00\x39\x92\ +\x00\x00\x00\x94\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x35\ +\x00\x00\x02\x34\x00\x00\x00\x00\x00\x01\x00\x00\x27\xc8\ +\x00\x00\x03\x1c\x00\x01\x00\x00\x00\x01\x00\x00\x2e\x38\ +\x00\x00\x01\x10\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xcc\ +\x00\x00\x07\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x2a\ +\x00\x00\x06\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xe0\ +\x00\x00\x01\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x22\xf7\ +\x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x17\x21\ +\x00\x00\x06\x12\x00\x00\x00\x00\x00\x01\x00\x00\x44\xbd\ +\x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00\x26\xd5\ +\x00\x00\x05\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x41\xc3\ +\x00\x00\x05\xde\x00\x00\x00\x00\x00\x01\x00\x00\x44\x13\ +\x00\x00\x05\x48\x00\x00\x00\x00\x00\x01\x00\x00\x41\x19\ +\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x24\x7d\ +\x00\x00\x05\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x3d\xfd\ +\x00\x00\x02\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x2b\xa7\ +\x00\x00\x06\x84\x00\x00\x00\x00\x00\x01\x00\x00\x48\xd2\ +\x00\x00\x01\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x22\x54\ +\x00\x00\x00\x32\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() diff --git a/themes/qdarkstyle/pyside2_style_rc.py b/themes/qdarkstyle/pyside2_style_rc.py new file mode 100644 index 0000000..3ec7302 --- /dev/null +++ b/themes/qdarkstyle/pyside2_style_rc.py @@ -0,0 +1,4206 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created: qua mai 1 18:37:33 2019 +# by: The Resource Compiler for PySide2 (Qt v5.12.2) +# +# WARNING! All changes made in this file will be lost! + +from PySide2 import QtCore + +qt_resource_data = b"\ +\x00\x00\xa6\xa5\ +/\ +* QDarkStyleShee\ +t --------------\ +----------------\ +----------------\ +----------\x0a\x0aThis\ + is the main sty\ +le sheet, the pa\ +lette has nine m\ +ain colors.\x0aIt i\ +s based on three\ + selecting color\ +s, three greyish\ + (background) co\ +lors\x0aplus three \ +whitish (foregro\ +und) colors. Eac\ +h set of widgets\ + of the same\x0atyp\ +e have a header \ +like this:\x0a\x0a \ +----------------\ +--\x0a GroupName\ + --------\x0a --\ +----------------\ +\x0a\x0aAnd each widge\ +t is separated w\ +ith a header lik\ +e this:\x0a\x0a QWi\ +dgetName ------\x0a\ +\x0aThis makes more\ + easy to find an\ +d change some cs\ +s field. The bas\ +ic\x0aconfiguration\ + is described be\ +llow.\x0a\x0a SELEC\ +TION -----------\ +-\x0a\x0a sel_l\ +ight #179AE0 #1\ +48CD2 (selection\ +/hover/active)\x0a \ + sel_norma\ +l #3375A3 #1464A\ +0 (selected)\x0a \ + sel_dark \ +#18465D #14506E \ +(selected disabl\ +ed)\x0a\x0a FOREGRO\ +UND -----------\x0a\ +\x0a for_lig\ +ht #EFF0F1 #F0F\ +0F0 (texts/label\ +s)\x0a for_n\ +ormal #A\ +AAAAA (not used \ +yet)\x0a for\ +_dark #505F69 \ +#787878 (disable\ +d texts)\x0a\x0a BA\ +CKGROUND -------\ +----\x0a\x0a ba\ +c_light #4D545B\ + #505F69 (unpres\ +sed)\x0a bac\ +_normal #31363B \ +#32414B (border,\ + disabled, press\ +ed, checked, too\ +lbars, menus)\x0a \ + bac_dark \ + #232629 #19232D\ + (background)\x0a\x0aI\ +f a stranger con\ +figuration is re\ +quired because o\ +f a bugfix or an\ +ything\x0aelse, kee\ +p the comment on\ + that line to no\ +bodys changed it\ +, including the\x0a\ +issue number.\x0a--\ +----------------\ +----------------\ +----------------\ +----------------\ +--------- */\x0a\x0a\x0a\x0a\ +/* QWidget -----\ +----------------\ +----------------\ +----------------\ +----------- */\x0a\x0a\ +QWidget {\x0a ba\ +ckground-color: \ +#19232D;\x0a bor\ +der: 0px solid #\ +32414B;\x0a padd\ +ing: 0px;\x0a co\ +lor: #F0F0F0;\x0a \ + selection-back\ +ground-color: #1\ +464A0;\x0a selec\ +tion-color: #F0F\ +0F0;\x0a}\x0a\x0aQWidget:\ +disabled {\x0a b\ +ackground-color:\ + #19232D;\x0a co\ +lor: #787878;\x0a \ + selection-back\ +ground-color: #1\ +4506E;\x0a selec\ +tion-color: #787\ +878;\x0a}\x0a\x0aQWidget:\ +item:selected {\x0a\ + background-c\ +olor: #1464A0;\x0a}\ +\x0a\x0aQWidget:item:h\ +over {\x0a backg\ +round-color: #14\ +8CD2;\x0a color:\ + #32414B;\x0a}\x0a\x0a/* \ +QMainWindow ----\ +----------------\ +----------------\ +----------------\ +-------- */\x0a/* T\ +his adjusts the \ +splitter in the \ +dock widget, not\ + qsplitter \ + */\x0a\x0a\x0aQMa\ +inWindow::separa\ +tor {\x0a backgr\ +ound-color: #324\ +14B;\x0a border:\ + 0 solid #19232D\ +;\x0a spacing: 0\ +;\x0a padding: 2\ +px;\x0a}\x0a\x0aQMainWind\ +ow::separator:ho\ +ver {\x0a backgr\ +ound-color: #505\ +F69;\x0a border:\ + 0px solid #148C\ +D2;\x0a}\x0a\x0aQMainWind\ +ow::separator:ho\ +rizontal {\x0a w\ +idth: 5px;\x0a m\ +argin-top: 2px;\x0a\ + margin-botto\ +m: 2px;\x0a imag\ +e: url(:/qss_ico\ +ns/rc/Vsepartool\ +bar.png);\x0a}\x0a\x0aQMa\ +inWindow::separa\ +tor:vertical {\x0a \ + height: 5px;\x0a\ + margin-left:\ + 2px;\x0a margin\ +-right: 2px;\x0a \ + image: url(:/qs\ +s_icons/rc/Hsepa\ +rtoolbar.png);\x0a}\ +\x0a\x0a/* QToolTip --\ +----------------\ +----------------\ +----------------\ +------------- */\ +\x0a\x0aQToolTip {\x0a \ + background-colo\ +r: #148CD2;\x0a \ +border: 1px soli\ +d #19232D;\x0a c\ +olor: #19232D;\x0a \ + padding: 0; \ + /*remove paddin\ +g, for fix combo\ + box tooltip*/\x0a \ + opacity: 230;\ + /*reducing tran\ +sparency to read\ + better*/\x0a}\x0a\x0a/* \ +QStatusBar -----\ +----------------\ +----------------\ +----------------\ +-------- */\x0a\x0aQSt\ +atusBar {\x0a bo\ +rder: 1px solid \ +#32414B;\x0a bac\ +kground: #32414B\ +; /*fixes spyder\ + #9120,#9121*/\x0a}\ +\x0a\x0aQStatusBar QTo\ +olTip {\x0a back\ +ground-color: #1\ +48CD2;\x0a borde\ +r: 1px solid #19\ +232D;\x0a color:\ + #19232D;\x0a pa\ +dding: 0; /*re\ +move padding, fo\ +r fix combo box \ +tooltip*/\x0a op\ +acity: 230; /*re\ +ducing transpare\ +ncy to read bett\ +er*/\x0a}\x0a\x0aQStatusB\ +ar QLabel {\x0a \ +background-color\ +: transparent; /\ +*fixes spyder #9\ +120,#9121*/\x0a}\x0a\x0a/\ +* QCheckBox ----\ +----------------\ +----------------\ +----------------\ +---------- */\x0a\x0aQ\ +CheckBox {\x0a b\ +ackground-color:\ + #19232D;\x0a co\ +lor: #F0F0F0;\x0a \ + spacing: 4px;\x0a\ + outline: non\ +e;\x0a padding-t\ +op: 4px;\x0a pad\ +ding-bottom: 4px\ +;\x0a}\x0a\x0aQCheckBox:f\ +ocus {\x0a borde\ +r: none;\x0a}\x0a\x0aQChe\ +ckBox QWidget:di\ +sabled {\x0a bac\ +kground-color: #\ +19232D;\x0a colo\ +r: #787878;\x0a}\x0a\x0aQ\ +CheckBox::indica\ +tor {\x0a margin\ +-left: 4px;\x0a \ +width: 16px;\x0a \ + height: 16px;\x0a}\ +\x0a\x0aQCheckBox::ind\ +icator:unchecked\ + {\x0a image: ur\ +l(:/qss_icons/rc\ +/checkbox_unchec\ +ked.png);\x0a}\x0a\x0aQCh\ +eckBox::indicato\ +r:unchecked:hove\ +r,\x0aQCheckBox::in\ +dicator:unchecke\ +d:focus,\x0aQCheckB\ +ox::indicator:un\ +checked:pressed \ +{\x0a border: no\ +ne;\x0a image: u\ +rl(:/qss_icons/r\ +c/checkbox_unche\ +cked_focus.png);\ +\x0a}\x0a\x0aQCheckBox::i\ +ndicator:uncheck\ +ed:disabled {\x0a \ + image: url(:/q\ +ss_icons/rc/chec\ +kbox_unchecked_d\ +isabled.png);\x0a}\x0a\ +\x0aQCheckBox::indi\ +cator:checked {\x0a\ + image: url(:\ +/qss_icons/rc/ch\ +eckbox_checked.p\ +ng);\x0a}\x0a\x0aQCheckBo\ +x::indicator:che\ +cked:hover,\x0aQChe\ +ckBox::indicator\ +:checked:focus,\x0a\ +QCheckBox::indic\ +ator:checked:pre\ +ssed {\x0a borde\ +r: none;\x0a ima\ +ge: url(:/qss_ic\ +ons/rc/checkbox_\ +checked_focus.pn\ +g);\x0a}\x0a\x0aQCheckBox\ +::indicator:chec\ +ked:disabled{\x0a \ + image: url(:/q\ +ss_icons/rc/chec\ +kbox_checked_dis\ +abled.png);\x0a}\x0a\x0aQ\ +CheckBox::indica\ +tor:indeterminat\ +e {\x0a image: u\ +rl(:/qss_icons/r\ +c/checkbox_indet\ +erminate.png);\x0a}\ +\x0a\x0aQCheckBox::ind\ +icator:indetermi\ +nate:disabled {\x0a\ + image: url(:\ +/qss_icons/rc/ch\ +eckbox_indetermi\ +nate_disabled.pn\ +g);\x0a}\x0a\x0aQCheckBox\ +::indicator:inde\ +terminate:focus,\ +\x0aQCheckBox::indi\ +cator:indetermin\ +ate:hover,\x0aQChec\ +kBox::indicator:\ +indeterminate:pr\ +essed {\x0a imag\ +e: url(:/qss_ico\ +ns/rc/checkbox_i\ +ndeterminate_foc\ +us.png);\x0a}\x0a\x0a/* Q\ +GroupBox -------\ +----------------\ +----------------\ +----------------\ +------- */\x0a\x0aQGro\ +upBox {\x0a font\ +-weight: bold;\x0a \ + border: 1px s\ +olid #32414B;\x0a \ + border-radius:\ + 4px;\x0a paddin\ +g: 4px;\x0a marg\ +in-top: 16px;\x0a}\x0a\ +\x0a\x0a\x0aQGroupBox::ti\ +tle {\x0a subcon\ +trol-origin: mar\ +gin;\x0a subcont\ +rol-position: to\ +p left;\x0a left\ +: 3px;\x0a paddi\ +ng-left: 3px;\x0a \ + padding-right:\ + 5px;\x0a paddin\ +g-top: 8px;\x0a \ +padding-bottom: \ +16px;\x0a}\x0a\x0aQGroupB\ +ox::indicator {\x0a\ + margin-left:\ + 4px;\x0a width:\ + 16px;\x0a heigh\ +t: 16px;\x0a}\x0a\x0aQGro\ +upBox::indicator\ + {\x0a margin-le\ +ft: 2px;\x0a}\x0a\x0aQGro\ +upBox::indicator\ +:unchecked:hover\ +,\x0aQGroupBox::ind\ +icator:unchecked\ +:focus,\x0aQGroupBo\ +x::indicator:unc\ +hecked:pressed {\ +\x0a border: non\ +e;\x0a image: ur\ +l(:/qss_icons/rc\ +/checkbox_unchec\ +ked_focus.png);\x0a\ +}\x0a\x0aQGroupBox::in\ +dicator:checked:\ +hover,\x0aQGroupBox\ +::indicator:chec\ +ked:focus,\x0aQGrou\ +pBox::indicator:\ +checked:pressed \ +{\x0a border: no\ +ne;\x0a image: u\ +rl(:/qss_icons/r\ +c/checkbox_check\ +ed_focus.png);\x0a}\ +\x0a\x0aQGroupBox::ind\ +icator:checked:d\ +isabled {\x0a im\ +age: url(:/qss_i\ +cons/rc/checkbox\ +_checked_disable\ +d.png);\x0a}\x0a\x0aQGrou\ +pBox::indicator:\ +unchecked:disabl\ +ed {\x0a image: \ +url(:/qss_icons/\ +rc/checkbox_unch\ +ecked_disabled.p\ +ng);\x0a}\x0a\x0a/* QRadi\ +oButton --------\ +----------------\ +----------------\ +----------------\ +--- */\x0a\x0aQRadioBu\ +tton {\x0a backg\ +round-color: #19\ +232D;\x0a color:\ + #F0F0F0;\x0a sp\ +acing: 0;\x0a pa\ +dding: 0;\x0a bo\ +rder: none;\x0a \ +outline: none;\x0a}\ +\x0a\x0aQRadioButton:f\ +ocus {\x0a borde\ +r: none;\x0a}\x0a\x0aQRad\ +ioButton:disable\ +d {\x0a backgrou\ +nd-color: #19232\ +D;\x0a color: #7\ +87878;\x0a borde\ +r: none;\x0a out\ +line: none;\x0a}\x0a\x0aQ\ +RadioButton QWid\ +get {\x0a backgr\ +ound-color: #192\ +32D;\x0a color: \ +#F0F0F0;\x0a spa\ +cing: 0px;\x0a p\ +adding: 0px;\x0a \ + outline: none;\x0a\ + border: none\ +;\x0a}\x0a\x0aQRadioButto\ +n::indicator {\x0a \ + border: none;\ +\x0a outline: no\ +ne;\x0a margin-b\ +ottom: 2px;\x0a \ +width: 25px;\x0a \ + height: 25px;\x0a}\ +\x0a\x0aQRadioButton::\ +indicator:unchec\ +ked {\x0a image:\ + url(:/qss_icons\ +/rc/radio_unchec\ +ked.png);\x0a}\x0a\x0aQRa\ +dioButton::indic\ +ator:unchecked:h\ +over,\x0aQRadioButt\ +on::indicator:un\ +checked:focus,\x0aQ\ +RadioButton::ind\ +icator:unchecked\ +:pressed {\x0a b\ +order: none;\x0a \ + outline: none;\x0a\ + image: url(:\ +/qss_icons/rc/ra\ +dio_unchecked_fo\ +cus.png);\x0a}\x0a\x0aQRa\ +dioButton::indic\ +ator:checked {\x0a \ + border: none;\ +\x0a outline: no\ +ne;\x0a image: u\ +rl(:/qss_icons/r\ +c/radio_checked.\ +png);\x0a}\x0a\x0aQRadioB\ +utton::indicator\ +:checked:hover,\x0a\ +QRadioButton::in\ +dicator:checked:\ +focus,\x0aQRadioBut\ +ton::indicator:c\ +hecked:pressed {\ +\x0a border: non\ +e;\x0a outline: \ +none;\x0a image:\ + url(:/qss_icons\ +/rc/radio_checke\ +d_focus.png);\x0a}\x0a\ +\x0aQRadioButton::i\ +ndicator:checked\ +:disabled {\x0a \ +outline: none;\x0a \ + image: url(:/\ +qss_icons/rc/rad\ +io_checked_disab\ +led.png);\x0a}\x0a\x0aQRa\ +dioButton::indic\ +ator:unchecked:d\ +isabled {\x0a im\ +age: url(:/qss_i\ +cons/rc/radio_un\ +checked_disabled\ +.png);\x0a}\x0a\x0a/* QMe\ +nuBar ----------\ +----------------\ +----------------\ +----------------\ +----- */\x0a\x0aQMenuB\ +ar {\x0a backgro\ +und-color: #3241\ +4B;\x0a padding:\ + 2px;\x0a border\ +: 1px solid #192\ +32D;\x0a color: \ +#F0F0F0;\x0a}\x0a\x0aQMen\ +uBar:focus {\x0a \ + border: 1px sol\ +id #148CD2;\x0a}\x0a\x0aQ\ +MenuBar::item {\x0a\ + background: \ +transparent;\x0a \ + padding: 4px;\x0a}\ +\x0a\x0aQMenuBar::item\ +:selected {\x0a \ +padding: 4px;\x0a \ + background: tr\ +ansparent;\x0a b\ +order: 0px solid\ + #32414B;\x0a}\x0a\x0aQMe\ +nuBar::item:pres\ +sed {\x0a paddin\ +g: 4px;\x0a bord\ +er: 0px solid #3\ +2414B;\x0a backg\ +round-color: #14\ +8CD2;\x0a color:\ + #F0F0F0;\x0a ma\ +rgin-bottom: 0px\ +;\x0a padding-bo\ +ttom: 0px;\x0a}\x0a\x0a/*\ + QMenu ---------\ +----------------\ +----------------\ +----------------\ +--------- */\x0a\x0aQM\ +enu {\x0a border\ +: 0px solid #324\ +14B;\x0a color: \ +#F0F0F0;\x0a mar\ +gin: 0px;\x0a}\x0a\x0aQMe\ +nu::separator {\x0a\ + height: 2px;\ +\x0a background-\ +color: #505F69;\x0a\ + color: #F0F0\ +F0;\x0a padding-\ +left: 4px;\x0a m\ +argin-left: 2px;\ +\x0a margin-righ\ +t: 2px;\x0a}\x0a\x0aQMenu\ +::icon {\x0a mar\ +gin: 0px;\x0a pa\ +dding-left:4px;\x0a\ +}\x0a\x0aQMenu::item {\ +\x0a padding: 4p\ +x 24px 4px 24px;\ +\x0a border: 1px\ + transparent #32\ +414B; /* reserv\ +e space for sele\ +ction border */\x0a\ +}\x0a\x0aQMenu::item:s\ +elected {\x0a co\ +lor: #F0F0F0;\x0a}\x0a\ +\x0a\x0a\x0aQMenu::indica\ +tor {\x0a width:\ + 12px;\x0a heigh\ +t: 12px;\x0a pad\ +ding-left:6px;\x0a}\ +\x0a\x0a/* non-exclusi\ +ve indicator = c\ +heck box style i\ +ndicator (see QA\ +ctionGroup::setE\ +xclusive) */\x0a\x0aQM\ +enu::indicator:n\ +on-exclusive:unc\ +hecked {\x0a ima\ +ge: url(:/qss_ic\ +ons/rc/checkbox_\ +unchecked.png);\x0a\ +}\x0a\x0aQMenu::indica\ +tor:non-exclusiv\ +e:unchecked:sele\ +cted {\x0a image\ +: url(:/qss_icon\ +s/rc/checkbox_un\ +checked_disabled\ +.png);\x0a}\x0a\x0aQMenu:\ +:indicator:non-e\ +xclusive:checked\ + {\x0a image: ur\ +l(:/qss_icons/rc\ +/checkbox_checke\ +d.png);\x0a}\x0a\x0aQMenu\ +::indicator:non-\ +exclusive:checke\ +d:selected {\x0a \ + image: url(:/qs\ +s_icons/rc/check\ +box_checked_disa\ +bled.png);\x0a}\x0a\x0a/*\ + exclusive indic\ +ator = radio but\ +ton style indica\ +tor (see QAction\ +Group::setExclus\ +ive) */\x0a\x0aQMenu::\ +indicator:exclus\ +ive:unchecked {\x0a\ + image: url(:\ +/qss_icons/rc/ra\ +dio_unchecked.pn\ +g);\x0a}\x0a\x0aQMenu::in\ +dicator:exclusiv\ +e:unchecked:sele\ +cted {\x0a image\ +: url(:/qss_icon\ +s/rc/radio_unche\ +cked_disabled.pn\ +g);\x0a}\x0a\x0aQMenu::in\ +dicator:exclusiv\ +e:checked {\x0a \ +image: url(:/qss\ +_icons/rc/radio_\ +checked.png);\x0a}\x0a\ +\x0aQMenu::indicato\ +r:exclusive:chec\ +ked:selected {\x0a \ + image: url(:/\ +qss_icons/rc/rad\ +io_checked_disab\ +led.png);\x0a}\x0a\x0aQMe\ +nu::right-arrow \ +{\x0a margin: 5p\ +x;\x0a image: ur\ +l(:/qss_icons/rc\ +/right_arrow.png\ +)\x0a}\x0a\x0a/* QAbstrac\ +tItemView ------\ +----------------\ +----------------\ +----------------\ + */\x0a\x0aQAbstractIt\ +emView {\x0a alt\ +ernate-backgroun\ +d-color: #19232D\ +;\x0a color: #F0\ +F0F0;\x0a border\ +: 1px solid #324\ +14B;\x0a border-\ +radius: 4px;\x0a}\x0a\x0a\ +QAbstractItemVie\ +w QLineEdit {\x0a \ + padding: 2px;\x0a\ +}\x0a\x0a/* QAbstractS\ +crollArea ------\ +----------------\ +----------------\ +-------------- *\ +/\x0a\x0aQAbstractScro\ +llArea {\x0a bac\ +kground-color: #\ +19232D;\x0a bord\ +er: 1px solid #3\ +2414B;\x0a borde\ +r-radius: 4px;\x0a \ + padding: 4px;\ +\x0a color: #F0F\ +0F0;\x0a}\x0a\x0aQAbstrac\ +tScrollArea:disa\ +bled {\x0a color\ +: #787878;\x0a}\x0a\x0a/*\ + QScrollArea ---\ +----------------\ +----------------\ +----------------\ +--------- */\x0a\x0aQS\ +crollArea QWidge\ +t QWidget:disabl\ +ed {\x0a backgro\ +und-color: #1923\ +2D;\x0a}\x0a\x0a/* QScrol\ +lBar -----------\ +----------------\ +----------------\ +----------------\ +-- */\x0a\x0aQScrollBa\ +r:horizontal {\x0a \ + height: 16px;\ +\x0a margin: 2px\ + 16px 2px 16px;\x0a\ + border: 1px \ +solid #32414B;\x0a \ + border-radius\ +: 4px;\x0a backg\ +round-color: #19\ +232D;\x0a}\x0a\x0aQScroll\ +Bar::handle:hori\ +zontal {\x0a bac\ +kground-color: #\ +787878;\x0a bord\ +er: 1px solid #3\ +2414B;\x0a borde\ +r-radius: 4px;\x0a \ + min-width: 8p\ +x;\x0a\x0a}\x0a\x0aQScrollBa\ +r::handle:horizo\ +ntal:hover {\x0a \ + background-colo\ +r: #148CD2;\x0a \ +border: 1px soli\ +d #148CD2;\x0a b\ +order-radius: 4p\ +x;\x0a min-width\ +: 8px;\x0a}\x0a\x0aQScrol\ +lBar::add-line:h\ +orizontal {\x0a \ +margin: 0px 0px \ +0px 0px;\x0a bor\ +der-image: url(:\ +/qss_icons/rc/ri\ +ght_arrow_disabl\ +ed.png);\x0a wid\ +th: 10px;\x0a he\ +ight: 10px;\x0a \ +subcontrol-posit\ +ion: right;\x0a \ +subcontrol-origi\ +n: margin;\x0a}\x0a\x0aQS\ +crollBar::sub-li\ +ne:horizontal {\x0a\ + margin: 0px \ +3px 0px 3px;\x0a \ + border-image: u\ +rl(:/qss_icons/r\ +c/left_arrow_dis\ +abled.png);\x0a \ +height: 10px;\x0a \ + width: 10px;\x0a \ + subcontrol-po\ +sition: left;\x0a \ + subcontrol-ori\ +gin: margin;\x0a}\x0a\x0a\ +QScrollBar::add-\ +line:horizontal:\ +hover,\x0aQScrollBa\ +r::add-line:hori\ +zontal:on {\x0a \ +border-image: ur\ +l(:/qss_icons/rc\ +/right_arrow.png\ +);\x0a height: 1\ +0px;\x0a width: \ +10px;\x0a subcon\ +trol-position: r\ +ight;\x0a subcon\ +trol-origin: mar\ +gin;\x0a}\x0a\x0aQScrollB\ +ar::sub-line:hor\ +izontal:hover,\x0aQ\ +ScrollBar::sub-l\ +ine:horizontal:o\ +n {\x0a border-i\ +mage: url(:/qss_\ +icons/rc/left_ar\ +row.png);\x0a he\ +ight: 10px;\x0a \ +width: 10px;\x0a \ + subcontrol-posi\ +tion: left;\x0a \ +subcontrol-origi\ +n: margin;\x0a}\x0a\x0aQS\ +crollBar::up-arr\ +ow:horizontal,\x0aQ\ +ScrollBar::down-\ +arrow:horizontal\ + {\x0a backgroun\ +d: none;\x0a}\x0a\x0aQScr\ +ollBar::add-page\ +:horizontal,\x0aQSc\ +rollBar::sub-pag\ +e:horizontal {\x0a \ + background: n\ +one;\x0a}\x0a\x0aQScrollB\ +ar:vertical {\x0a \ + background-col\ +or: #19232D;\x0a \ + width: 16px;\x0a \ + margin: 16px 2\ +px 16px 2px;\x0a \ + border: 1px sol\ +id #32414B;\x0a \ +border-radius: 4\ +px;\x0a}\x0a\x0aQScrollBa\ +r::handle:vertic\ +al {\x0a backgro\ +und-color: #7878\ +78;\x0a border: \ +1px solid #32414\ +B;\x0a min-heigh\ +t: 8px;\x0a bord\ +er-radius: 4px;\x0a\ +}\x0a\x0aQScrollBar::h\ +andle:vertical:h\ +over {\x0a backg\ +round-color: #14\ +8CD2;\x0a border\ +: 1px solid #148\ +CD2;\x0a border-\ +radius: 4px;\x0a \ + min-height: 8px\ +;\x0a\x0a}\x0a\x0aQScrollBar\ +::sub-line:verti\ +cal {\x0a margin\ +: 3px 0px 3px 0p\ +x;\x0a border-im\ +age: url(:/qss_i\ +cons/rc/up_arrow\ +_disabled.png);\x0a\ + height: 10px\ +;\x0a width: 10p\ +x;\x0a subcontro\ +l-position: top;\ +\x0a subcontrol-\ +origin: margin;\x0a\ +}\x0a\x0aQScrollBar::a\ +dd-line:vertical\ + {\x0a margin: 3\ +px 0px 3px 0px;\x0a\ + border-image\ +: url(:/qss_icon\ +s/rc/down_arrow_\ +disabled.png);\x0a \ + height: 10px;\ +\x0a width: 10px\ +;\x0a subcontrol\ +-position: botto\ +m;\x0a subcontro\ +l-origin: margin\ +;\x0a}\x0a\x0aQScrollBar:\ +:sub-line:vertic\ +al:hover,\x0aQScrol\ +lBar::sub-line:v\ +ertical:on {\x0a \ + border-image: u\ +rl(:/qss_icons/r\ +c/up_arrow.png);\ +\x0a height: 10p\ +x;\x0a width: 10\ +px;\x0a subcontr\ +ol-position: top\ +;\x0a subcontrol\ +-origin: margin;\ +\x0a}\x0a\x0aQScrollBar::\ +add-line:vertica\ +l:hover,\x0aQScroll\ +Bar::add-line:ve\ +rtical:on {\x0a \ +border-image: ur\ +l(:/qss_icons/rc\ +/down_arrow.png)\ +;\x0a height: 10\ +px;\x0a width: 1\ +0px;\x0a subcont\ +rol-position: bo\ +ttom;\x0a subcon\ +trol-origin: mar\ +gin;\x0a}\x0a\x0aQScrollB\ +ar::up-arrow:ver\ +tical,\x0aQScrollBa\ +r::down-arrow:ve\ +rtical {\x0a bac\ +kground: none;\x0a}\ +\x0a\x0aQScrollBar::ad\ +d-page:vertical,\ +\x0aQScrollBar::sub\ +-page:vertical {\ +\x0a background:\ + none;\x0a}\x0a\x0a/* QTe\ +xtEdit----------\ +----------------\ +----------------\ +----------------\ +----- */\x0a\x0aQTextE\ +dit {\x0a backgr\ +ound-color: #192\ +32D;\x0a color: \ +#F0F0F0;\x0a bor\ +der: 1px solid #\ +32414B;\x0a}\x0a\x0aQText\ +Edit:hover {\x0a \ + border: 1px sol\ +id #148CD2;\x0a \ +color: #F0F0F0;\x0a\ +}\x0a\x0aQTextEdit:sel\ +ected {\x0a back\ +ground: #1464A0;\ +\x0a color: #324\ +14B;\x0a}\x0a\x0a/* QPlai\ +nTextEdit ------\ +----------------\ +----------------\ +----------------\ +--- */\x0a\x0aQPlainTe\ +xtEdit {\x0a bac\ +kground-color: #\ +19232D;\x0a colo\ +r: #F0F0F0;\x0a \ +border-radius: 4\ +px;\x0a border: \ +1px solid #32414\ +B;\x0a}\x0a\x0aQPlainText\ +Edit:hover {\x0a \ + border: 1px sol\ +id #148CD2;\x0a \ +color: #F0F0F0;\x0a\ +}\x0a\x0aQPlainTextEdi\ +t:selected {\x0a \ + background: #14\ +64A0;\x0a color:\ + #32414B;\x0a}\x0a\x0a/* \ +QSizeGrip ------\ +----------------\ +----------------\ +----------------\ +--------- */\x0a\x0aQS\ +izeGrip {\x0a im\ +age: url(:/qss_i\ +cons/rc/sizegrip\ +.png);\x0a width\ +: 12px;\x0a heig\ +ht: 12px;\x0a}\x0a\x0a/* \ +QStackedWidget -\ +----------------\ +----------------\ +----------------\ +-------- */\x0a\x0aQSt\ +ackedWidget {\x0a \ + padding: 4px;\x0a\ + border: 1px \ +solid #32414B;\x0a \ + border: 1px s\ +olid #19232D;\x0a}\x0a\ +\x0a/* QToolBar ---\ +----------------\ +----------------\ +----------------\ +------------ */\x0a\ +\x0aQToolBar {\x0a \ +background-color\ +: #32414B;\x0a b\ +order-bottom: 1p\ +x solid #19232D;\ +\x0a padding: 2p\ +x;\x0a font-weig\ +ht: bold;\x0a}\x0a\x0aQTo\ +olBar QToolButto\ +n{\x0a backgroun\ +d-color: #32414B\ +;\x0a}\x0a\x0aQToolBar::h\ +andle:horizontal\ + {\x0a width: 6p\ +x;\x0a image: ur\ +l(:/qss_icons/rc\ +/Hmovetoolbar.pn\ +g);\x0a}\x0a\x0aQToolBar:\ +:handle:vertical\ + {\x0a height: 6\ +px;\x0a image: u\ +rl(:/qss_icons/r\ +c/Vmovetoolbar.p\ +ng);\x0a}\x0a\x0aQToolBar\ +::separator:hori\ +zontal {\x0a wid\ +th: 3px;\x0a ima\ +ge: url(:/qss_ic\ +ons/rc/Hsepartoo\ +lbar.png);\x0a}\x0a\x0aQT\ +oolBar::separato\ +r:vertical {\x0a \ + height: 3px;\x0a \ + image: url(:/q\ +ss_icons/rc/Vsep\ +artoolbar.png);\x0a\ +}\x0a\x0aQToolButton#q\ +t_toolbar_ext_bu\ +tton {\x0a backg\ +round: #32414B;\x0a\ + border: 0px;\ +\x0a color: #F0F\ +0F0;\x0a image: \ +url(:/qss_icons/\ +rc/right_arrow.p\ +ng);\x0a}\x0a\x0a/* QAbst\ +ractSpinBox ----\ +----------------\ +----------------\ +----------------\ +--- */\x0a\x0aQAbstrac\ +tSpinBox {\x0a b\ +ackground-color:\ + #19232D;\x0a bo\ +rder: 1px solid \ +#32414B;\x0a col\ +or: #F0F0F0;\x0a \ + padding-top: 2p\ +x; /* This f\ +ix 103, 111*/\x0a \ + padding-botto\ +m: 2px; /* This\ + fix 103, 111*/\ +\x0a padding-lef\ +t: 4px;\x0a padd\ +ing-right: 4px;\x0a\ + border-radiu\ +s: 4px;\x0a /* m\ +in-width: 5px; r\ +emoved to fix 10\ +9 */\x0a}\x0a\x0aQAbstrac\ +tSpinBox:up-butt\ +on {\x0a backgro\ +und-color: trans\ +parent #19232D;\x0a\ + subcontrol-o\ +rigin: border;\x0a \ + subcontrol-po\ +sition: top righ\ +t;\x0a border-le\ +ft: 1px solid #3\ +2414B;\x0a margi\ +n: 1px;\x0a}\x0a\x0aQAbst\ +ractSpinBox::up-\ +arrow,\x0aQAbstract\ +SpinBox::up-arro\ +w:disabled,\x0aQAbs\ +tractSpinBox::up\ +-arrow:off {\x0a \ + image: url(:/qs\ +s_icons/rc/up_ar\ +row_disabled.png\ +);\x0a width: 9p\ +x;\x0a height: 9\ +px;\x0a}\x0a\x0aQAbstract\ +SpinBox::up-arro\ +w:hover {\x0a im\ +age: url(:/qss_i\ +cons/rc/up_arrow\ +.png);\x0a}\x0a\x0aQAbstr\ +actSpinBox:down-\ +button {\x0a bac\ +kground-color: t\ +ransparent #1923\ +2D;\x0a subcontr\ +ol-origin: borde\ +r;\x0a subcontro\ +l-position: bott\ +om right;\x0a bo\ +rder-left: 1px s\ +olid #32414B;\x0a \ + margin: 1px;\x0a}\ +\x0a\x0aQAbstractSpinB\ +ox::down-arrow,\x0a\ +QAbstractSpinBox\ +::down-arrow:dis\ +abled,\x0aQAbstract\ +SpinBox::down-ar\ +row:off {\x0a im\ +age: url(:/qss_i\ +cons/rc/down_arr\ +ow_disabled.png)\ +;\x0a width: 9px\ +;\x0a height: 9p\ +x;\x0a}\x0a\x0aQAbstractS\ +pinBox::down-arr\ +ow:hover {\x0a i\ +mage: url(:/qss_\ +icons/rc/down_ar\ +row.png);\x0a}\x0a\x0aQAb\ +stractSpinBox:ho\ +ver{\x0a border:\ + 1px solid #148C\ +D2;\x0a color: #\ +F0F0F0;\x0a}\x0a\x0aQAbst\ +ractSpinBox:sele\ +cted {\x0a backg\ +round: #1464A0;\x0a\ + color: #3241\ +4B;\x0a}\x0a\x0a/* ------\ +----------------\ +----------------\ +----------------\ +----------------\ +-- */\x0a/* DISPLAY\ +S --------------\ +----------------\ +----------------\ +----------------\ +- */\x0a/* --------\ +----------------\ +----------------\ +----------------\ +----------------\ + */\x0a\x0a/* QLabel -\ +----------------\ +----------------\ +----------------\ +----------------\ + */\x0a\x0aQLabel {\x0a \ + background-col\ +or: #19232D;\x0a \ + border: 0px sol\ +id #32414B;\x0a \ +padding: 2px;\x0a \ + margin: 0px;\x0a \ + color: #F0F0F\ +0\x0a}\x0a\x0aQLabel::dis\ +abled {\x0a back\ +ground-color: #1\ +9232D;\x0a borde\ +r: 0px solid #32\ +414B;\x0a color:\ + #787878;\x0a}\x0a\x0a/* \ +QTextBrowser ---\ +----------------\ +----------------\ +----------------\ +-------- */\x0a\x0aQTe\ +xtBrowser {\x0a \ +background-color\ +: #19232D;\x0a b\ +order: 1px solid\ + #32414B;\x0a co\ +lor: #F0F0F0;\x0a \ + border-radius:\ + 4px;\x0a}\x0a\x0aQTextBr\ +owser:disabled {\ +\x0a background-\ +color: #19232D;\x0a\ + border: 1px \ +solid #32414B;\x0a \ + color: #78787\ +8;\x0a border-ra\ +dius: 4px;\x0a}\x0a\x0aQT\ +extBrowser:hover\ +,\x0aQTextBrowser:!\ +hover,\x0aQTextBrow\ +ser::selected,\x0aQ\ +TextBrowser::pre\ +ssed {\x0a borde\ +r: 1px solid #32\ +414B;\x0a}\x0a\x0a/* QGra\ +phicsView ------\ +----------------\ +----------------\ +----------------\ +--- */\x0a\x0aQGraphic\ +sView {\x0a back\ +ground-color: #1\ +9232D;\x0a borde\ +r: 1px solid #32\ +414B;\x0a color:\ + #F0F0F0;\x0a bo\ +rder-radius: 4px\ +;\x0a}\x0a\x0aQGraphicsVi\ +ew:disabled {\x0a \ + background-col\ +or: #19232D;\x0a \ + border: 1px sol\ +id #32414B;\x0a \ +color: #787878;\x0a\ + border-radiu\ +s: 4px;\x0a}\x0a\x0aQGrap\ +hicsView:hover,\x0a\ +QGraphicsView:!h\ +over,\x0aQGraphicsV\ +iew::selected,\x0aQ\ +GraphicsView::pr\ +essed {\x0a bord\ +er: 1px solid #3\ +2414B;\x0a}\x0a\x0a/* QCa\ +lendarWidget ---\ +----------------\ +----------------\ +----------------\ +----- */\x0a\x0aQCalen\ +darWidget {\x0a \ +border: 1px soli\ +d #32414B;\x0a b\ +order-radius: 4p\ +x;\x0a}\x0a\x0aQCalendarW\ +idget:disabled {\ +\x0a background-\ +color: #19232D;\x0a\ + color: #7878\ +78;\x0a}\x0a\x0a/* QLCDNu\ +mber -----------\ +----------------\ +----------------\ +----------------\ +-- */\x0a\x0aQLCDNumbe\ +r {\x0a backgrou\ +nd-color: #19232\ +D;\x0a color: #F\ +0F0F0;\x0a}\x0a\x0aQLCDNu\ +mber:disabled {\x0a\ + background-c\ +olor: #19232D;\x0a \ + color: #78787\ +8;\x0a}\x0a\x0a/* QProgre\ +ssBar ----------\ +----------------\ +----------------\ +----------------\ +- */\x0a\x0aQProgressB\ +ar {\x0a backgro\ +und-color: #1923\ +2D;\x0a border: \ +1px solid #32414\ +B;\x0a color: #F\ +0F0F0;\x0a borde\ +r-radius: 4px;\x0a \ + text-align: c\ +enter;\x0a}\x0a\x0aQProgr\ +essBar:disabled \ +{\x0a background\ +-color: #19232D;\ +\x0a border: 1px\ + solid #32414B;\x0a\ + color: #7878\ +78;\x0a border-r\ +adius: 4px;\x0a \ +text-align: cent\ +er;\x0a}\x0a\x0aQProgress\ +Bar::chunk {\x0a \ + background-colo\ +r: #1464A0;\x0a \ +color: #19232D;\x0a\ + border-radiu\ +s: 4px;\x0a}\x0a\x0aQProg\ +ressBar::chunk:d\ +isabled {\x0a ba\ +ckground-color: \ +#14506E;\x0a col\ +or: #787878;\x0a \ + border-radius: \ +4px;\x0a}\x0a\x0a\x0a/* ----\ +----------------\ +----------------\ +----------------\ +----------------\ +---- */\x0a/* BUTTO\ +NS -------------\ +----------------\ +----------------\ +----------------\ +--- */\x0a/* ------\ +----------------\ +----------------\ +----------------\ +----------------\ +-- */\x0a\x0a/* QPushB\ +utton ----------\ +----------------\ +----------------\ +----------------\ +-- */\x0a\x0aQPushButt\ +on {\x0a backgro\ +und-color: #505F\ +69 ;\x0a border:\ + 1px solid #3241\ +4B;\x0a color: #\ +F0F0F0;\x0a bord\ +er-radius: 4px;\x0a\ + padding: 3px\ +;\x0a outline: n\ +one;\x0a}\x0a\x0aQPushBut\ +ton:disabled {\x0a \ + background-co\ +lor: #32414B;\x0a \ + border: 1px so\ +lid #32414B;\x0a \ + color: #787878;\ +\x0a border-radi\ +us: 4px;\x0a pad\ +ding: 3px;\x0a}\x0a\x0a\x0aQ\ +PushButton:check\ +ed {\x0a backgro\ +und-color: #3241\ +4B;\x0a border: \ +1px solid #32414\ +B;\x0a border-ra\ +dius: 4px;\x0a p\ +adding: 3px;\x0a \ + outline: none;\x0a\ +}\x0a\x0aQPushButton:c\ +hecked:disabled \ +{\x0a background\ +-color: #19232D;\ +\x0a border: 1px\ + solid #32414B;\x0a\ + color: #7878\ +78;\x0a border-r\ +adius: 4px;\x0a \ +padding: 3px;\x0a \ + outline: none;\ +\x0a}\x0a\x0aQPushButton:\ +:menu-indicator \ +{\x0a subcontrol\ +-origin: padding\ +;\x0a subcontrol\ +-position: botto\ +m right;\x0a bot\ +tom: 4px;\x0a}\x0a\x0aQPu\ +shButton:pressed\ + {\x0a backgroun\ +d-color: #19232D\ +;\x0a border: 1p\ +x solid #19232D;\ +\x0a}\x0a\x0aQPushButton:\ +hover,\x0aQPushButt\ +on:checked:hover\ +{\x0a border: 1p\ +x solid #148CD2;\ +\x0a color: #F0F\ +0F0;\x0a}\x0a\x0aQPushBut\ +ton:pressed:hove\ +r{\x0a border: 1\ +px solid #1464A0\ +;\x0a}\x0a\x0aQPushButton\ +:selected,\x0aQPush\ +Button:checked:s\ +elected{\x0a bac\ +kground: #1464A0\ +;\x0a color: #32\ +414B;\x0a}\x0a\x0a/* QToo\ +lButton --------\ +----------------\ +----------------\ +----------------\ +---- */\x0a\x0aQToolBu\ +tton {\x0a backg\ +round-color: tra\ +nsparent;\x0a bo\ +rder: 1px solid \ +#32414B;\x0a bor\ +der-radius: 4px;\ +\x0a margin: 0px\ +;\x0a padding: 2\ +px;\x0a}\x0a\x0aQToolButt\ +on:checked {\x0a \ + background-colo\ +r: #19232D;\x0a \ +border: 1px soli\ +d #19232D;\x0a}\x0a\x0aQT\ +oolButton:presse\ +d {\x0a backgrou\ +nd-color: #19232\ +D;\x0a border: 1\ +px solid #19232D\ +;\x0a\x0a}\x0a\x0aQToolButto\ +n:disabled {\x0a \ + border: 1px sol\ +id #32414B;\x0a}\x0a\x0aQ\ +ToolButton:hover\ +,\x0aQToolButton:ch\ +ecked:hover{\x0a \ + border: 1px sol\ +id #148CD2;\x0a}\x0aQT\ +oolButton:presse\ +d:hover{\x0a bor\ +der: 1px solid #\ +1464A0;\x0a}\x0a\x0a/* th\ +e subcontrols be\ +low are used onl\ +y in the MenuBut\ +tonPopup mode */\ +\x0a\x0aQToolButton[po\ +pupMode=\x221\x22] {\x0a \ + padding: 2px;\ +\x0a padding-rig\ +ht: 12px; /*\ + only for MenuBu\ +ttonPopup */\x0a \ + border: 1px sol\ +id #32414B; /*\ + make way for th\ +e popup button *\ +/\x0a border-rad\ +ius: 4px;\x0a}\x0a\x0a/* \ +The subcontrol b\ +elow is used onl\ +y in the Instant\ +Popup or Delayed\ +Popup mode */\x0a\x0aQ\ +ToolButton[popup\ +Mode=\x222\x22] {\x0a \ +padding: 2px;\x0a \ + padding-right:\ + 12px; /* o\ +nly for InstantP\ +opup */\x0a bord\ +er: 1px solid #3\ +2414B; /* mak\ +e way for the po\ +pup button */\x0a}\x0a\ +\x0aQToolButton::me\ +nu-button {\x0a \ +padding: 2px;\x0a \ + border-radius:\ + 4px;\x0a border\ +: 1px solid #324\ +14B;\x0a border-\ +top-right-radius\ +: 4px;\x0a borde\ +r-bottom-right-r\ +adius: 4px;\x0a \ +/* 16px width + \ +4px for border =\ + 20px allocated \ +above */\x0a wid\ +th: 16px;\x0a ou\ +tline: none;\x0a}\x0a\x0a\ +QToolButton::men\ +u-button:hover,\x0a\ +QToolButton::men\ +u-button:checked\ +:hover {\x0a bor\ +der: 1px solid #\ +148CD2;\x0a}\x0a\x0aQTool\ +Button::menu-ind\ +icator {\x0a ima\ +ge: url(:/qss_ic\ +ons/rc/down_arro\ +w.png);\x0a top:\ + -8px; /* sh\ +ift it a bit */\x0a\ + left: -4px; \ + /* shift it a\ + bit */\x0a}\x0a\x0aQTool\ +Button::menu-arr\ +ow {\x0a image: \ +url(:/qss_icons/\ +rc/down_arrow.pn\ +g);\x0a}\x0a\x0aQToolButt\ +on::menu-arrow:o\ +pen {\x0a border\ +: 1px solid #324\ +14B;\x0a}\x0a\x0a/* QComm\ +andLinkButton --\ +----------------\ +----------------\ +----------------\ +--- */\x0a\x0aQCommand\ +LinkButton {\x0a \ + background-colo\ +r: transparent;\x0a\ + border: 1px \ +solid #32414B;\x0a \ + color: #F0F0F\ +0;\x0a border-ra\ +dius: 4px;\x0a p\ +adding: 0px;\x0a \ + margin: 0px;\x0a}\x0a\ +\x0aQCommandLinkBut\ +ton:disabled {\x0a \ + background-co\ +lor: transparent\ +;\x0a color: #78\ +7878;\x0a}\x0a\x0a/* ----\ +----------------\ +----------------\ +----------------\ +----------------\ +---- */\x0a/* INPUT\ +S - NO FIELDS --\ +----------------\ +----------------\ +----------------\ +--- */\x0a/* ------\ +----------------\ +----------------\ +----------------\ +----------------\ +-- */\x0a\x0a/* QCombo\ +box ------------\ +----------------\ +----------------\ +----------------\ +-- */\x0aQComboBox \ +{\x0a border: 1p\ +x solid #32414B;\ +\x0a border-radi\ +us: 4px;\x0a sel\ +ection-backgroun\ +d-color: #1464A0\ +;\x0a padding-le\ +ft: 4px;\x0a pad\ +ding-right: 4px;\ +\x0a min-height:\ + 1.5em; /* fi\ +x #103, #111 \ + */\x0a /* padd\ +ing-top: 2px; \ + removed to fix\ + #132 */\x0a /* \ +padding-bottom: \ +2px; removed to\ + fix #132 */\x0a \ + /* min-width: 7\ +5px; remove\ +d to fix #109 */\ +\x0a}\x0a\x0aQComboBox QA\ +bstractItemView \ +{\x0a background\ +-color: #19232d;\ +\x0a border-radi\ +us: 4px;\x0a bor\ +der: 1px solid #\ +32414B;\x0a sele\ +ction-color: #14\ +8CD2;\x0a select\ +ion-background-c\ +olor: #32414B;\x0a}\ +\x0a\x0aQComboBox:disa\ +bled {\x0a backg\ +round-color: #19\ +232D;\x0a color:\ + #787878;\x0a}\x0a\x0aQCo\ +mboBox:hover{\x0a \ + border: 1px so\ +lid #148CD2;\x0a}\x0a\x0a\ +QComboBox:on {\x0a \ + selection-bac\ +kground-color: #\ +19232D;\x0a}\x0a\x0a/* Ne\ +eded to remove i\ +ndicator - fix #\ +132 */\x0aQComboBox\ +::indicator {\x0a \ + background-col\ +or:transparent;\x0a\ + selection-ba\ +ckground-color:t\ +ransparent;\x0a \ +color:transparen\ +t;\x0a selection\ +-color:transpare\ +nt;\x0a}\x0a\x0a/* Needed\ + to remove indic\ +ator - fix #132 \ +*/\x0aQComboBox::it\ +em:alternate {\x0a \ + background: #\ +19232D;\x0a}\x0a\x0aQComb\ +oBox::item:check\ +ed {\x0a font-we\ +ight: bold;\x0a}\x0a\x0aQ\ +ComboBox::item:s\ +elected {\x0a bo\ +rder: 0px solid \ +transparent;\x0a}\x0a\x0a\ +QComboBox::drop-\ +down {\x0a subco\ +ntrol-origin: pa\ +dding;\x0a subco\ +ntrol-position: \ +top right;\x0a w\ +idth: 20px;\x0a \ +border-left-widt\ +h: 0px;\x0a bord\ +er-left-color: #\ +32414B;\x0a bord\ +er-left-style: s\ +olid;\x0a border\ +-top-right-radiu\ +s: 3px;\x0a bord\ +er-bottom-right-\ +radius: 3px;\x0a}\x0a\x0a\ +QComboBox::down-\ +arrow {\x0a imag\ +e: url(:/qss_ico\ +ns/rc/down_arrow\ +_disabled.png);\x0a\ +}\x0a\x0aQComboBox::do\ +wn-arrow:on,\x0aQCo\ +mboBox::down-arr\ +ow:hover,\x0aQCombo\ +Box::down-arrow:\ +focus {\x0a imag\ +e: url(:/qss_ico\ +ns/rc/down_arrow\ +.png);\x0a}\x0a\x0a/* QSl\ +ider -----------\ +----------------\ +----------------\ +----------------\ +----- */\x0a\x0aQSlide\ +r:disabled {\x0a \ + background: #19\ +232D;\x0a}\x0a\x0aQSlider\ +:focus {\x0a bor\ +der: none;\x0a}\x0a\x0aQS\ +lider::groove:ho\ +rizontal {\x0a b\ +ackground: #3241\ +4B;\x0a border: \ +1px solid #32414\ +B;\x0a height: 4\ +px;\x0a margin: \ +0px;\x0a border-\ +radius: 4px;\x0a}\x0a\x0a\ +QSlider::sub-pag\ +e:horizontal {\x0a \ + background: #\ +1464A0;\x0a bord\ +er: 1px solid #3\ +2414B;\x0a heigh\ +t: 4px;\x0a marg\ +in: 0px;\x0a bor\ +der-radius: 4px;\ +\x0a}\x0a\x0aQSlider::sub\ +-page:horizontal\ +:disabled {\x0a \ +background: #145\ +06E;\x0a}\x0a\x0aQSlider:\ +:handle:horizont\ +al {\x0a backgro\ +und: #787878;\x0a \ + border: 1px so\ +lid #32414B;\x0a \ + width: 8px;\x0a \ + height: 8px;\x0a \ + margin: -8px 0\ +;\x0a border-rad\ +ius: 4px;\x0a}\x0a\x0aQSl\ +ider::handle:hor\ +izontal:hover {\x0a\ + background: \ +#148CD2;\x0a bor\ +der: 1px solid #\ +148CD2;\x0a}\x0a\x0aQSlid\ +er::groove:verti\ +cal {\x0a backgr\ +ound: #32414B;\x0a \ + border: 1px s\ +olid #32414B;\x0a \ + width: 4px;\x0a \ + margin: 0px;\x0a \ + border-radius\ +: 4px;\x0a}\x0a\x0aQSlide\ +r::sub-page:vert\ +ical {\x0a backg\ +round: #1464A0;\x0a\ + border: 1px \ +solid #32414B;\x0a \ + width: 4px;\x0a \ + margin: 0px;\x0a\ + border-radiu\ +s: 4px;\x0a}\x0a\x0aQSlid\ +er::sub-page:ver\ +tical:disabled {\ +\x0a background:\ + #14506E;\x0a}\x0a\x0aQSl\ +ider::handle:ver\ +tical {\x0a back\ +ground: #787878;\ +\x0a border: 1px\ + solid #32414B;\x0a\ + width: 8px;\x0a\ + height: 8px;\ +\x0a margin: 0 -\ +8px;\x0a border-\ +radius: 4px;\x0a}\x0a\x0a\ +QSlider::handle:\ +vertical:hover {\ +\x0a background:\ + #148CD2;\x0a bo\ +rder: 1px solid \ +#148CD2;\x0a}\x0a\x0a/* Q\ +Line -----------\ +----------------\ +----------------\ +----------------\ +------- */\x0a\x0aQLin\ +eEdit {\x0a back\ +ground-color: #1\ +9232D;\x0a paddi\ +ng-top: 2px; \ + /* This QLineEd\ +it fix 103, 111\ + */\x0a padding-\ +bottom: 2px; /*\ + This QLineEdit \ +fix 103, 111 */\ +\x0a padding-lef\ +t: 4px;\x0a padd\ +ing-right: 4px;\x0a\ + border-style\ +: solid;\x0a bor\ +der: 1px solid #\ +32414B;\x0a bord\ +er-radius: 4px;\x0a\ + color: #F0F0\ +F0;\x0a}\x0a\x0aQLineEdit\ +:disabled {\x0a \ +background-color\ +: #19232D;\x0a c\ +olor: #787878;\x0a}\ +\x0a\x0aQLineEdit:hove\ +r{\x0a border: 1\ +px solid #148CD2\ +;\x0a color: #F0\ +F0F0;\x0a}\x0a\x0aQLineEd\ +it:selected{\x0a \ + background: #14\ +64A0;\x0a color:\ + #32414B;\x0a}\x0a\x0a/* \ +QTabWiget ------\ +----------------\ +----------------\ +----------------\ +-------- */\x0a\x0aQTa\ +bWidget {\x0a pa\ +dding: 2px;\x0a \ +selection-backgr\ +ound-color: #324\ +14B;\x0a}\x0a\x0a\x0aQTabWid\ +get QWidget QWid\ +get /* add\ + wanted borders \ +fix #141, #126, \ +#123 */\x0aQTabWidg\ +et QFrame {\x0a \ +border: 1px soli\ +d #32414B;\x0a}\x0a\x0aQT\ +abWidget QLabel \ +{\x0a border: 0p\ +x solid #32414B;\ + /* label derive\ +d from frame, re\ +move border #141\ + */\x0a}\x0a\x0aQTabWidge\ +t::pane {\x0a bo\ +rder: 1px solid \ +#32414B;\x0a bor\ +der-radius: 4px;\ +\x0a padding: 0p\ +x; \ + /* fixes double\ + border inside p\ +ane wit pyqt5 */\ +\x0a margin: 0px\ +;\x0a}\x0a\x0aQTabWidget:\ +:pane:selected {\ +\x0a background-\ +color: #32414B;\x0a\ + border: 1px \ +solid #1464A0;\x0a}\ +\x0a\x0a/* QTabBar ---\ +----------------\ +----------------\ +----------------\ +------------- */\ +\x0a\x0aQTabBar {\x0a \ +qproperty-drawBa\ +se: 0;\x0a borde\ +r-radius: 4px;\x0a \ + margin: 0px;\x0a\ + padding: 2px\ +;\x0a border: 0;\ +\x0a\x0a /* left: 5\ +px; move to the \ +right by 5px - r\ +emoved for fix *\ +/\x0a }\x0a\x0aQTabBar\ +::close-button {\ +\x0a border: 0;\x0a\ + margin: 2px;\ +\x0a padding: 0;\ +\x0a image: url(\ +:/qss_icons/rc/c\ +lose.png);\x0a}\x0a\x0aQT\ +abBar::close-but\ +ton:hover {\x0a \ +image: url(:/qss\ +_icons/rc/close-\ +hover.png);\x0a}\x0a\x0aQ\ +TabBar::close-bu\ +tton:pressed {\x0a \ + image: url(:/\ +qss_icons/rc/clo\ +se-pressed.png);\ +\x0a}\x0a\x0a/* QTabBar::\ +tab - selected -\ +----------------\ +----------------\ +-------------- *\ +/\x0a\x0aQTabBar::tab:\ +top:selected:dis\ +abled {\x0a bord\ +er-bottom: 3px s\ +olid #14506E;\x0a \ + color: #787878\ +;\x0a background\ +-color: #32414B;\ +\x0a}\x0a\x0aQTabBar::tab\ +:bottom:selected\ +:disabled {\x0a \ +border-top: 3px \ +solid #14506E;\x0a \ + color: #78787\ +8;\x0a backgroun\ +d-color: #32414B\ +;\x0a}\x0a\x0aQTabBar::ta\ +b:left:selected:\ +disabled {\x0a b\ +order-left: 3px \ +solid #14506E;\x0a \ + color: #78787\ +8;\x0a backgroun\ +d-color: #32414B\ +;\x0a}\x0a\x0aQTabBar::ta\ +b:right:selected\ +:disabled {\x0a \ +border-right: 3p\ +x solid #14506E;\ +\x0a color: #787\ +878;\x0a backgro\ +und-color: #3241\ +4B;\x0a}\x0a\x0a/* QTabBa\ +r::tab - !select\ +ed and disabled \ +----------------\ +----------------\ +-- */\x0a\x0aQTabBar::\ +tab:top:!selecte\ +d:disabled {\x0a \ + border-bottom: \ +3px solid #19232\ +D;\x0a color: #7\ +87878;\x0a backg\ +round-color: #19\ +232D;\x0a}\x0a\x0aQTabBar\ +::tab:bottom:!se\ +lected:disabled \ +{\x0a border-top\ +: 3px solid #192\ +32D;\x0a color: \ +#787878;\x0a bac\ +kground-color: #\ +19232D;\x0a}\x0a\x0aQTabB\ +ar::tab:left:!se\ +lected:disabled \ +{\x0a border-rig\ +ht: 3px solid #1\ +9232D;\x0a color\ +: #787878;\x0a b\ +ackground-color:\ + #19232D;\x0a}\x0a\x0aQTa\ +bBar::tab:right:\ +!selected:disabl\ +ed {\x0a border-\ +left: 3px solid \ +#19232D;\x0a col\ +or: #787878;\x0a \ + background-colo\ +r: #19232D;\x0a}\x0a\x0a/\ +* QTabBar::tab -\ + selected ------\ +----------------\ +----------------\ +--------- */\x0a\x0aQT\ +abBar::tab:top:!\ +selected {\x0a b\ +order-bottom: 2p\ +x solid #19232D;\ +\x0a margin-top:\ + 2px;\x0a}\x0a\x0aQTabBar\ +::tab:bottom:!se\ +lected {\x0a bor\ +der-top: 2px sol\ +id #19232D;\x0a \ +margin-bottom: 3\ +px;\x0a}\x0a\x0aQTabBar::\ +tab:left:!select\ +ed {\x0a border-\ +left: 2px solid \ +#19232D;\x0a mar\ +gin-right: 2px;\x0a\ +}\x0a\x0aQTabBar::tab:\ +right:!selected \ +{\x0a border-rig\ +ht: 2px solid #1\ +9232D;\x0a margi\ +n-left: 2px;\x0a}\x0a\x0a\ +\x0aQTabBar::tab:to\ +p {\x0a backgrou\ +nd-color: #32414\ +B;\x0a color: #F\ +0F0F0;\x0a margi\ +n-left: 2px;\x0a \ + padding-left: 4\ +px;\x0a padding-\ +right: 4px;\x0a \ +padding-top: 2px\ +;\x0a padding-bo\ +ttom: 2px;\x0a m\ +in-width: 5px;\x0a \ + border-bottom\ +: 3px solid #324\ +14B;\x0a border-\ +top-left-radius:\ + 3px;\x0a border\ +-top-right-radiu\ +s: 3px;\x0a}\x0a\x0aQTabB\ +ar::tab:top:sele\ +cted {\x0a backg\ +round-color: #50\ +5F69;\x0a color:\ + #F0F0F0;\x0a bo\ +rder-bottom: 3px\ + solid #1464A0;\x0a\ + border-top-l\ +eft-radius: 3px;\ +\x0a border-top-\ +right-radius: 3p\ +x;\x0a}\x0a\x0aQTabBar::t\ +ab:top:!selected\ +:hover {\x0a bor\ +der: 1px solid #\ +148CD2;\x0a bord\ +er-bottom: 3px s\ +olid #148CD2;\x0a \ + padding: 0px;\x0a\ +}\x0a\x0aQTabBar::tab:\ +bottom {\x0a col\ +or: #F0F0F0;\x0a \ + border-top: 3px\ + solid #32414B;\x0a\ + background-c\ +olor: #32414B;\x0a \ + margin-left: \ +2px;\x0a padding\ +-left: 4px;\x0a \ +padding-right: 4\ +px;\x0a padding-\ +top: 2px;\x0a pa\ +dding-bottom: 2p\ +x;\x0a border-bo\ +ttom-left-radius\ +: 3px;\x0a borde\ +r-bottom-right-r\ +adius: 3px;\x0a \ +min-width: 5px;\x0a\ +}\x0a\x0aQTabBar::tab:\ +bottom:selected \ +{\x0a color: #F0\ +F0F0;\x0a backgr\ +ound-color: #505\ +F69;\x0a border-\ +top: 3px solid #\ +1464A0;\x0a bord\ +er-bottom-left-r\ +adius: 3px;\x0a \ +border-bottom-ri\ +ght-radius: 3px;\ +\x0a}\x0a\x0aQTabBar::tab\ +:bottom:!selecte\ +d:hover {\x0a bo\ +rder: 1px solid \ +#148CD2;\x0a bor\ +der-top: 3px sol\ +id #148CD2;\x0a \ +padding: 0px;\x0a}\x0a\ +\x0aQTabBar::tab:le\ +ft {\x0a color: \ +#F0F0F0;\x0a bac\ +kground-color: #\ +32414B;\x0a marg\ +in-top: 2px;\x0a \ + padding-left: 2\ +px;\x0a padding-\ +right: 2px;\x0a \ +padding-top: 4px\ +;\x0a padding-bo\ +ttom: 4px;\x0a b\ +order-top-right-\ +radius: 3px;\x0a \ + border-bottom-r\ +ight-radius: 3px\ +;\x0a min-height\ +: 5px;\x0a}\x0a\x0aQTabBa\ +r::tab:left:sele\ +cted {\x0a color\ +: #F0F0F0;\x0a b\ +ackground-color:\ + #505F69;\x0a bo\ +rder-left: 3px s\ +olid #1464A0;\x0a \ + border-top-rig\ +ht-radius: 3px;\x0a\ + border-botto\ +m-right-radius: \ +3px;\x0a}\x0a\x0aQTabBar:\ +:tab:left:!selec\ +ted:hover {\x0a \ +border: 1px soli\ +d #148CD2;\x0a b\ +order-left: 3px \ +solid #148CD2;\x0a \ + padding: 0px;\ +\x0a}\x0a\x0aQTabBar::tab\ +:right {\x0a col\ +or: #F0F0F0;\x0a \ + background-colo\ +r: #32414B;\x0a \ +margin-top: 2px;\ +\x0a padding-lef\ +t: 2px;\x0a padd\ +ing-right: 2px;\x0a\ + padding-top:\ + 4px;\x0a paddin\ +g-bottom: 4px;\x0a \ + border-top-le\ +ft-radius: 3px;\x0a\ + border-botto\ +m-left-radius: 3\ +px;\x0a min-heig\ +ht: 5px;\x0a}\x0a\x0aQTab\ +Bar::tab:right:s\ +elected {\x0a co\ +lor: #F0F0F0;\x0a \ + background-col\ +or: #505F69;\x0a \ + border-right: 3\ +px solid #1464A0\ +;\x0a border-top\ +-left-radius: 3p\ +x;\x0a border-bo\ +ttom-left-radius\ +: 3px;\x0a}\x0a\x0aQTabBa\ +r::tab:right:!se\ +lected:hover {\x0a \ + border: 1px s\ +olid #148CD2;\x0a \ + border-right: \ +3px solid #148CD\ +2;\x0a padding: \ +0px;\x0a}\x0a\x0aQTabBar \ +QToolButton::rig\ +ht-arrow:enabled\ + {\x0a image: ur\ +l(:/qss_icons/rc\ +/right_arrow.png\ +);\x0a}\x0a\x0aQTabBar QT\ +oolButton::left-\ +arrow:enabled {\x0a\ + image: url(:\ +/qss_icons/rc/le\ +ft_arrow.png);\x0a}\ +\x0a\x0aQTabBar QToolB\ +utton::right-arr\ +ow:disabled {\x0a \ + image: url(:/q\ +ss_icons/rc/righ\ +t_arrow_disabled\ +.png);\x0a}\x0a\x0aQTabBa\ +r QToolButton::l\ +eft-arrow:disabl\ +ed {\x0a image: \ +url(:/qss_icons/\ +rc/left_arrow_di\ +sabled.png);\x0a}\x0a\x0a\ +QTabBar QToolBut\ +ton{\x0a backgro\ +und-color: #3241\ +4B; /* fix\ +es #136 */\x0a w\ +idth: 16px;\x0a \ +height: 16px;\x0a}\x0a\ +\x0a/* QDockWiget -\ +----------------\ +----------------\ +----------------\ +------------ */\x0a\ +\x0aQDockWidget {\x0a \ + outline: 1px \ +solid #32414B;\x0a \ + background-co\ +lor: #19232D;\x0a \ + border: 1px so\ +lid #32414B;\x0a \ + border-radius: \ +4px;\x0a titleba\ +r-close-icon: ur\ +l(:/qss_icons/rc\ +/close.png);\x0a \ + titlebar-normal\ +-icon: url(:/qss\ +_icons/rc/undock\ +.png);\x0a}\x0a\x0aQDockW\ +idget::title {\x0a \ + padding: 6px;\ + /* better siz\ +e for title bar \ +*/\x0a border: n\ +one;\x0a backgro\ +und-color: #3241\ +4B;\x0a}\x0a\x0aQDockWidg\ +et::close-button\ + {\x0a backgroun\ +d-color: #32414B\ +;\x0a border-rad\ +ius: 4px;\x0a bo\ +rder: none;\x0a}\x0a\x0aQ\ +DockWidget::clos\ +e-button:hover {\ +\x0a border: 1px\ + solid #32414B;\x0a\ +}\x0a\x0aQDockWidget::\ +close-button:pre\ +ssed {\x0a borde\ +r: 1px solid #32\ +414B;\x0a}\x0a\x0aQDockWi\ +dget::float-butt\ +on {\x0a backgro\ +und-color: #3241\ +4B;\x0a border-r\ +adius: 4px;\x0a \ +border: none;\x0a}\x0a\ +\x0aQDockWidget::fl\ +oat-button:hover\ + {\x0a border: 1\ +px solid #32414B\ +;\x0a}\x0a\x0aQDockWidget\ +::float-button:p\ +ressed {\x0a bor\ +der: 1px solid #\ +32414B;\x0a}\x0a\x0a\x0a/* Q\ +TreeView QTableV\ +iew QListView --\ +----------------\ +----------------\ +------- */\x0a\x0aQTre\ +eView:branch:sel\ +ected,\x0aQTreeView\ +:branch:hover {\x0a\ + background: \ +url(:/qss_icons/\ +rc/transparent.p\ +ng);\x0a}\x0a\x0aQTreeVie\ +w::branch:has-si\ +blings:!adjoins-\ +item {\x0a borde\ +r-image: url(:/q\ +ss_icons/rc/tran\ +sparent.png);\x0a}\x0a\ +\x0aQTreeView::bran\ +ch:has-siblings:\ +adjoins-item {\x0a \ + border-image:\ + url(:/qss_icons\ +/rc/transparent.\ +png);\x0a}\x0a\x0aQTreeVi\ +ew::branch:!has-\ +children:!has-si\ +blings:adjoins-i\ +tem {\x0a border\ +-image: url(:/qs\ +s_icons/rc/trans\ +parent.png);\x0a}\x0a\x0a\ +QTreeView::branc\ +h:has-children:!\ +has-siblings:clo\ +sed,\x0aQTreeView::\ +branch:closed:ha\ +s-children:has-s\ +iblings {\x0a im\ +age: url(:/qss_i\ +cons/rc/branch_c\ +losed.png);\x0a}\x0a\x0aQ\ +TreeView::branch\ +:open:has-childr\ +en:!has-siblings\ +,\x0aQTreeView::bra\ +nch:open:has-chi\ +ldren:has-siblin\ +gs {\x0a image: \ +url(:/qss_icons/\ +rc/branch_open.p\ +ng);\x0a}\x0a\x0aQTreeVie\ +w::branch:has-ch\ +ildren:!has-sibl\ +ings:closed:hove\ +r,\x0aQTreeView::br\ +anch:closed:has-\ +children:has-sib\ +lings:hover {\x0a \ + image: url(:/q\ +ss_icons/rc/bran\ +ch_closed-on.png\ +);\x0a}\x0a\x0aQTreeView:\ +:branch:open:has\ +-children:!has-s\ +iblings:hover,\x0aQ\ +TreeView::branch\ +:open:has-childr\ +en:has-siblings:\ +hover {\x0a imag\ +e: url(:/qss_ico\ +ns/rc/branch_ope\ +n-on.png);\x0a}\x0a\x0aQL\ +istView::item:!s\ +elected:hover,\x0aQ\ +TreeView::item:!\ +selected:hover,\x0a\ +QTableView::item\ +:!selected:hover\ +,\x0aQColumnView::i\ +tem:!selected:ho\ +ver {\x0a outlin\ +e: 0;\x0a color:\ + #148CD2;\x0a ba\ +ckground-color: \ +#32414B;\x0a}\x0a\x0aQLis\ +tView::item:sele\ +cted:hover,\x0aQTre\ +eView::item:sele\ +cted:hover,\x0aQTab\ +leView::item:sel\ +ected:hover,\x0aQCo\ +lumnView::item:s\ +elected:hover {\x0a\ + background: \ +#1464A0;\x0a col\ +or: #19232D;\x0a}\x0a\ +\x0aQTreeView::indi\ +cator:checked,\x0aQ\ +ListView::indica\ +tor:checked {\x0a \ + image: url(:/q\ +ss_icons/rc/chec\ +kbox_checked.png\ +);\x0a}\x0a\x0aQTreeView:\ +:indicator:unche\ +cked,\x0aQListView:\ +:indicator:unche\ +cked {\x0a image\ +: url(:/qss_icon\ +s/rc/checkbox_un\ +checked.png);\x0a}\x0a\ +\x0aQTreeView::indi\ +cator:checked:ho\ +ver,\x0aQTreeView::\ +indicator:checke\ +d:focus,\x0aQTreeVi\ +ew::indicator:ch\ +ecked:pressed,\x0aQ\ +ListView::indica\ +tor:checked:hove\ +r,\x0aQListView::in\ +dicator:checked:\ +focus,\x0aQListView\ +::indicator:chec\ +ked:pressed {\x0a \ + image: url(:/q\ +ss_icons/rc/chec\ +kbox_checked_foc\ +us.png);\x0a}\x0a\x0aQTre\ +eView::indicator\ +:unchecked:hover\ +,\x0aQTreeView::ind\ +icator:unchecked\ +:focus,\x0aQTreeVie\ +w::indicator:unc\ +hecked:pressed,\x0a\ +QListView::indic\ +ator:unchecked:h\ +over,\x0aQListView:\ +:indicator:unche\ +cked:focus,\x0aQLis\ +tView::indicator\ +:unchecked:press\ +ed {\x0a image: \ +url(:/qss_icons/\ +rc/checkbox_unch\ +ecked_focus.png)\ +;\x0a}\x0a\x0aQTreeView::\ +indicator:indete\ +rminate:hover,\x0aQ\ +TreeView::indica\ +tor:indeterminat\ +e:focus,\x0aQTreeVi\ +ew::indicator:in\ +determinate:pres\ +sed,\x0aQListView::\ +indicator:indete\ +rminate:hover,\x0aQ\ +ListView::indica\ +tor:indeterminat\ +e:focus,\x0aQListVi\ +ew::indicator:in\ +determinate:pres\ +sed {\x0a image:\ + url(:/qss_icons\ +/rc/checkbox_ind\ +eterminate_focus\ +.png);\x0a}\x0a\x0aQTreeV\ +iew::indicator:i\ +ndeterminate,\x0aQL\ +istView::indicat\ +or:indeterminate\ + {\x0a image: ur\ +l(:/qss_icons/rc\ +/checkbox_indete\ +rminate.png);\x0a}\x0a\ +\x0aQListView,\x0aQTre\ +eView,\x0aQTableVie\ +w,\x0aQColumnView {\ +\x0a background-\ +color: #19232D;\x0a\ + border: 1px \ +solid #32414B;\x0a \ + color: #F0F0F\ +0;\x0a gridline-\ +color: #32414B;\x0a\ + border-radiu\ +s: 4px;\x0a}\x0a\x0aQList\ +View:disabled,\x0aQ\ +TreeView:disable\ +d,\x0aQTableView:di\ +sabled,\x0aQColumnV\ +iew:disabled {\x0a \ + background-co\ +lor: #19232D;\x0a \ + color: #787878\ +;\x0a}\x0a\x0aQListView:s\ +elected,\x0aQTreeVi\ +ew:selected,\x0aQTa\ +bleView:selected\ +,\x0aQColumnView:se\ +lected {\x0a bac\ +kground: #1464A0\ +;\x0a color: #32\ +414B;\x0a}\x0a\x0aQListVi\ +ew:hover,\x0aQTreeV\ +iew::hover,\x0aQTab\ +leView::hover,\x0aQ\ +ColumnView::hove\ +r {\x0a backgrou\ +nd-color: #19232\ +D;\x0a border: 1\ +px solid #148CD2\ +;\x0a}\x0a\x0aQListView::\ +item:pressed,\x0aQT\ +reeView::item:pr\ +essed,\x0aQTableVie\ +w::item:pressed,\ +\x0aQColumnView::it\ +em:pressed {\x0a \ + background-colo\ +r: #1464A0;\x0a}\x0a\x0aQ\ +ListView::item:s\ +elected:active,\x0a\ +QTreeView::item:\ +selected:active,\ +\x0aQTableView::ite\ +m:selected:activ\ +e,\x0aQColumnView::\ +item:selected:ac\ +tive {\x0a backg\ +round-color: #14\ +64A0;\x0a}\x0a\x0aQTableC\ +ornerButton::sec\ +tion {\x0a backg\ +round-color: #19\ +232D;\x0a border\ +: 1px transparen\ +t #32414B;\x0a b\ +order-radius: 0p\ +x;\x0a}\x0a\x0a/* QHeader\ +View -----------\ +----------------\ +----------------\ +----------------\ +- */\x0a\x0aQHeaderVie\ +w {\x0a backgrou\ +nd-color: #32414\ +B;\x0a border: 0\ +px transparent #\ +32414B;\x0a padd\ +ing: 0px;\x0a ma\ +rgin: 0px;\x0a b\ +order-radius: 0p\ +x;\x0a}\x0a\x0aQHeaderVie\ +w:disabled {\x0a \ + background-colo\ +r: #32414B;\x0a \ +border: 1px tran\ +sparent #32414B;\ +\x0a padding: 2p\ +x;\x0a}\x0a\x0aQHeaderVie\ +w::section {\x0a \ + background-colo\ +r: #32414B;\x0a \ +color: #F0F0F0;\x0a\ + padding: 2px\ +;\x0a border-rad\ +ius: 0px;\x0a te\ +xt-align: left;\x0a\ +}\x0a\x0aQHeaderView::\ +section:checked \ +{\x0a color: #F0\ +F0F0;\x0a backgr\ +ound-color: #146\ +4A0;\x0a}\x0a\x0aQHeaderV\ +iew::section:che\ +cked:disabled {\x0a\ + color: #7878\ +78;\x0a backgrou\ +nd-color: #14506\ +E;\x0a}\x0a\x0aQHeaderVie\ +w::section::hori\ +zontal:disabled,\ +\x0aQHeaderView::se\ +ction::vertical:\ +disabled {\x0a c\ +olor: #787878;\x0a}\ +\x0a\x0aQHeaderView::s\ +ection::vertical\ +::first,\x0aQHeader\ +View::section::v\ +ertical::only-on\ +e {\x0a border-t\ +op: 1px solid #3\ +2414B;\x0a}\x0a\x0aQHeade\ +rView::section::\ +vertical {\x0a b\ +order-top: 1px s\ +olid #19232D;\x0a}\x0a\ +\x0aQHeaderView::se\ +ction::horizonta\ +l::first,\x0aQHeade\ +rView::section::\ +horizontal::only\ +-one {\x0a borde\ +r-left: 1px soli\ +d #32414B;\x0a}\x0a\x0aQH\ +eaderView::secti\ +on::horizontal {\ +\x0a border-left\ +: 1px solid #192\ +32D;\x0a}\x0a\x0a/* Those\ + settings (borde\ +r/width/height/b\ +ackground-color)\ + solve bug */\x0a/*\ + transparent arr\ +ow background an\ +d size */\x0a\x0aQHead\ +erView::down-arr\ +ow {\x0a backgro\ +und-color: #3241\ +4B;\x0a width: 1\ +6px;\x0a height:\ + 16px;\x0a borde\ +r-right: 1px sol\ +id #19232D;\x0a \ +image: url(:/qss\ +_icons/rc/down_a\ +rrow.png);\x0a}\x0a\x0aQH\ +eaderView::up-ar\ +row {\x0a backgr\ +ound-color: #324\ +14B;\x0a width: \ +16px;\x0a height\ +: 16px;\x0a bord\ +er-right: 1px so\ +lid #19232D;\x0a \ + image: url(:/qs\ +s_icons/rc/up_ar\ +row.png);\x0a}\x0a\x0a/* \ +QToolBox -------\ +----------------\ +----------------\ +----------------\ +------- */\x0a\x0aQToo\ +lBox {\x0a paddi\ +ng: 0px;\x0a bor\ +der: 1px solid #\ +32414B;\x0a}\x0a\x0aQTool\ +Box::selected {\x0a\ + padding: 0px\ +;\x0a border: 2p\ +x solid #1464A0;\ +\x0a}\x0a\x0aQToolBox::ta\ +b {\x0a backgrou\ +nd-color: #19232\ +D;\x0a border: 1\ +px solid #32414B\ +;\x0a color: #F0\ +F0F0;\x0a border\ +-top-left-radius\ +: 4px;\x0a borde\ +r-top-right-radi\ +us: 4px;\x0a}\x0a\x0aQToo\ +lBox::tab:disabl\ +ed {\x0a color: \ +#787878;\x0a}\x0a\x0aQToo\ +lBox::tab:select\ +ed {\x0a backgro\ +und-color: #505F\ +69;\x0a border-b\ +ottom: 2px solid\ + #1464A0;\x0a}\x0a\x0aQTo\ +olBox::tab:!sele\ +cted {\x0a backg\ +round-color: #32\ +414B;\x0a border\ +-bottom: 2px sol\ +id #32414B;\x0a}\x0a\x0aQ\ +ToolBox::tab:sel\ +ected:disabled {\ +\x0a background-\ +color: #32414B;\x0a\ + border-botto\ +m: 2px solid #14\ +506E;\x0a}\x0a\x0aQToolBo\ +x::tab:!selected\ +:disabled {\x0a \ +background-color\ +: #19232D;\x0a}\x0a\x0aQT\ +oolBox::tab:hove\ +r {\x0a border-c\ +olor: #148CD2;\x0a \ + border-bottom\ +: 2px solid #148\ +CD2;\x0a}\x0a\x0aQToolBox\ + QScrollArea QWi\ +dget QWidget {\x0a \ + padding: 0px;\ +\x0a background-\ +color: #19232D;\x0a\ +}\x0a\x0a/* QFrame ---\ +----------------\ +----------------\ +----------------\ +-------------- *\ +/\x0a\x0aQFrame {\x0a \ +border-radius: 4\ +px;\x0a border: \ +1px solid #32414\ +B;\x0a}\x0a\x0aQFrame[fra\ +meShape=\x220\x22] {\x0a \ + border-radius\ +: 4px;\x0a borde\ +r: 1px transpare\ +nt #32414B;\x0a}\x0a\x0aQ\ +Frame[height=\x223\x22\ +],\x0aQFrame[width=\ +\x223\x22] {\x0a backg\ +round-color: #19\ +232D;\x0a}\x0a\x0a/* QSpl\ +itter ----------\ +----------------\ +----------------\ +----------------\ +---- */\x0a\x0aQSplitt\ +er {\x0a backgro\ +und-color: #3241\ +4B;\x0a spacing:\ + 0;\x0a padding:\ + 0;\x0a margin: \ +0;\x0a}\x0a\x0aQSplitter:\ +:separator {\x0a \ + background-colo\ +r: #32414B;\x0a \ +border: 0 solid \ +#19232D;\x0a spa\ +cing: 0;\x0a pad\ +ding: 1px;\x0a m\ +argin: 0;\x0a}\x0a\x0aQSp\ +litter::separato\ +r:hover {\x0a ba\ +ckground-color: \ +#787878;\x0a}\x0a\x0aQSpl\ +itter::separator\ +:horizontal {\x0a \ + width: 5px;\x0a \ + image: url(:/q\ +ss_icons/rc/Vsep\ +artoolbar.png);\x0a\ +}\x0a\x0aQSplitter::se\ +parator:vertical\ + {\x0a height: 5\ +px;\x0a image: u\ +rl(:/qss_icons/r\ +c/Hsepartoolbar.\ +png);\x0a}\x0a\x0a\x0a/* QDa\ +teEdit----------\ +----------------\ +----------------\ +----------------\ +---- */\x0a\x0aQDateEd\ +it {\x0a selecti\ +on-background-co\ +lor: #1464A0;\x0a \ + border-style: \ +solid;\x0a borde\ +r: 1px solid #32\ +414B;\x0a border\ +-radius: 4px;\x0a \ + padding-top: 2\ +px; /* This \ +fix #103, #111*\ +/\x0a padding-bo\ +ttom: 2px; /* T\ +his fix #103, #\ +111*/\x0a paddin\ +g-left: 4px;\x0a \ + padding-right: \ +4px;\x0a min-wid\ +th: 10px;\x0a}\x0a\x0aQDa\ +teEdit:on {\x0a \ +selection-backgr\ +ound-color: #146\ +4A0;\x0a}\x0a\x0aQDateEdi\ +t::drop-down {\x0a \ + subcontrol-or\ +igin: padding;\x0a \ + subcontrol-po\ +sition: top righ\ +t;\x0a width: 20\ +px;\x0a border-t\ +op-right-radius:\ + 3px;\x0a border\ +-bottom-right-ra\ +dius: 3px;\x0a}\x0a\x0aQD\ +ateEdit::down-ar\ +row {\x0a image:\ + url(:/qss_icons\ +/rc/down_arrow_d\ +isabled.png);\x0a}\x0a\ +\x0aQDateEdit::down\ +-arrow:on,\x0aQDate\ +Edit::down-arrow\ +:hover,\x0aQDateEdi\ +t::down-arrow:fo\ +cus {\x0a image:\ + url(:/qss_icons\ +/rc/down_arrow.p\ +ng);\x0a}\x0a\x0aQDateEdi\ +t QAbstractItemV\ +iew {\x0a backgr\ +ound-color: #192\ +32D;\x0a border-\ +radius: 4px;\x0a \ + border: 1px sol\ +id #32414B;\x0a \ +selection-backgr\ +ound-color: #146\ +4A0;\x0a}\x0a\x0aQAbstrac\ +tView:hover{\x0a \ + border: 1px sol\ +id #148CD2;\x0a \ +color: #F0F0F0;\x0a\ +}\x0a\x0aQAbstractView\ +:selected {\x0a \ +background: #146\ +4A0;\x0a color: \ +#32414B;\x0a}\x0a\x0a\x0aPlo\ +tWidget {\x0a pa\ +dding: 0px; /* t\ +o fix cut labels\ + in plots #134 *\ +/\x0a}\x0a\ +\x00\x00\x02\xe1\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x93IDATX\x85\xed\ +\x96?O\x14Q\x14\xc5\x7fgB\x18\xb6\xb5R>\x80\ +\xc56J%\x95vR\x80b\xe8\xb4\xd3D\x8a\xad\xa4\ +\x9a\x19 fL\xc4\x99\xa5\xa1\x92hL\xb4\xd3\x0e\xff\ +\x00\x85Zi\xa5\x95n!\x89_\x00\xadl\x97\xd9\x98\ +w-\xf6\x0d\xac\x09\xbb\xb8\x806\xee\xe9\xde\xbc\xfb\xde\ +=\xf7\xce}\xe7^\x18`\x80\xff\x1d\xea\xc78M\xd3\ +\xa1\xa2(\xa6\xccl\x068\x07\x8c\xfa\xadm\xe0\xa3\xa4\ +\xb50\x0c7\xd24\xfdy\xec\x04\xe28\xbe\x08\xac\x00\ +U\xe0\x13\xf0\x1e\xf8\xe6\xb7O\x01\xe7\x811`\xcb9\ +wkyy\xf9\xedq\x11P\x14E\x89\xa4%\xe0\xb9\ +\xa4\xc5,\xcb\xb6\xf63L\x92\xa4jfw\x81+\xc0\ +B\x9e\xe79`G\x22\x10E\xd1\xbc\xa4;\x92jY\ +\x96=\xfa\x03\xc2$Ir\xd3\xccV\x81\xdby\x9eg\ +\x87&\xe0\xd3\xfeZ\xd2l\x87s\xc5q|\x0d\xa8\x01\ +g\xfc\xb7\x06\xb0\x9a\xe7\xf9S|\xc4q\x1c\xcf\x02\x0f\ +\x81\x89<\xcf\xdf\xf4M M\xd3\xa1\x9d\x9d\x9d\x06\xf0\ +5\xcf\xf3\x19\x80\xb9\xb9\xb9\x13a\x18>\x01.\x03\x0e\ +\x08\xbc\xb9\x03\x023{\xd9j\xb5n\xac\xac\xac\xfc\x00\ +\x88\xa2\xe8\xb9\xa4\xd3###g\xba\x15f\xb0\xdfG\ +\x80\xa2(\xa6\x80\xaa\xa4\xc5\x92\xacw>\xb5\xcf\xd9\x00\ +@\xd2\xa5\xe1\xe1\xe1\xc7e`A\x10,\x00\xd5f\xb3\ +9\xd9\xcdOW\x02\xfe\xa9}*\x0b\xce\xa7\xfdr\xaf\ +3@ i:\x8a\xa2\xab\x00Y\x96m\x99\xd9gI\ +3}\x13\xa0\xfd\xce\xdfw\xack\xb4S}\x10\x9c\xa4\ +Z\xb9\x90\xf4\x0e\x18?\x0c\x81Q\xf6\xde9\xb4\x0b\xae\ +\x97\xfd\xee\x9d\x92\xca\xe2\xc4\xcc\xbe\xb3'X}\x11\xf8\ +'\xe8E`\x9b\xb6\xc2\x95h\xf0\x87\xbf\xc0\xcc\x1a\xe5\ +B\xd2I\x7fW\xdf\x04>\xd2\x96\xd7\x12\xab\x07\xd8\xef\ +\xde\xe9E\x08\x003\xbb\x00|\xe8\x9b\x80\xa45`,\ +I\x92*\x80\x17\x99W\xf4\xce\x823\xb3\x97\xf5z\xfd\ +\x19\xb4\xa5Y\xd2Y3[\xeb\x9b@\x18\x86\x1b\xc0\x96\ +\xd7v\x00+\x8a\xe2\xba\x99\xad\x97\xce:\x1d\x03\x98\xd9\ +z\xab\xd5\xba\x81WC\xe7\xdc\x12\xf0\xa5R\xa9lv\ +\x0d\xb4G4]\xa58\x8a\xa2\xab\x92je\xb5\x9bY\ +\xc3\xccV}\xe4\x9dR\xfc\xc097\xd1\xab3\xfe\x95\ +f\xe4\x9d\xdf\xe7\xa8\xcd\xa8\xb4\x89\xe38\x06\xee\x99\xd9\ +\x8b \x08\x16z\xb5c\xe7\xdc\x92\xa4i3\x9b\xaf\xd7\ +\xebu\x8e\xda\x8eKt\x0e$^^\xdfy\x91A\xd2\ +I3\xbb \xe9,\xf0\xc597w\x9c\x03\xc9.\xd2\ +4\x1dj6\x9b\x93^\xdb\xc7\xf9}$\xfb`fk\ +\x95Je\xb3\x9f\x91l\x80\x01\x06\xf8\x05h\xaf$(\ +\x9ck\x07\xff\x00\x00\x00\x00IEND\xaeB`\x82\ +\ +\x00\x00\x00\xc3\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\ +\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\ +\xdc\x0b\x07\x09.7\xffD\xe8\xf0\x00\x00\x00\x1diT\ +XtComment\x00\x00\x00\x00\x00Cr\ +eated with GIMPd\ +.e\x07\x00\x00\x00'IDATx\xda\xed\xc1\x01\ +\x0d\x00\x00\x00\xc2\xa0\xf7Om\x0e7\xa0\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80w\x03@@\ +\x00\x01\xafz\x0e\xe8\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +\x00\x00\x00\x93\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x02bKGD\x00\xd3\xb5W\xa0\x5c\x00\x00\ +\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\ +\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x0b\x07\x0c\ +\x0c+J<0t\x00\x00\x00$IDAT\x08\xd7\ +c`@\x05\xff\xff\xc3XL\xc8\x5c&dY&d\ +\xc5p\x0e##\x9c\xc3\xc8\x88a\x1a\x0a\x00\x00\x9e\x14\ +\x0a\x05+\xca\xe5u\x00\x00\x00\x00IEND\xaeB\ +`\x82\ +\x00\x00\x01\x8a\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\xb0\x8d\xb1\x06\xfb\xf5\x0c\xb0\ +\xbbs\x0d\xab(?D\x00\xa1\xa0\x9d\x02\x00\xb0K\xbb\ +\xf3\xef\xa2D@\xf3\x18\xe0Ob\x00\x06`\x00\x06`\ +\x00\x06`\x00\x06p\x08\x88v\xd3k\xc5\x11l`]\ +\x00\x88\x10\x80\xb8\xad\xd1\xdc\xa9\xaa;\xfd\xb7\xabHP\ +\x04h2\x06\x1a\xb1\xc8\xb4\x0a\x84\xf3\xfc\xdeJ\xc7\xf2\ +\xbaE<\xc9z\x0f7]\x8c\x16O\x08\x0f\xc0\x16\x08\ +\xd3\x01\xf2\xf7\xd9\x1d\xbb\x0b\xd4O>L2\xa9?\xeb\ +\xc6X\x83ttn\xe6\xbf\xff0kE\x02\x8bx\x92\ +\x7f\x9a\x99|\x01\x0b\xfao8\x11\xee\x15\x0b\x00\x00\x00\ +\x00IEND\xaeB`\x82\ +\x00\x00\x01\x82\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x014IDATX\x85\xed\ +\xd7\xb1N\xc2P\x18\x86\xe1\xf77\x14F\xca\x82\xd7\xd0\ +\x85DH\xea\x0a\xd1T\x22\xc6\x1b\xe0*\xea,\x0e\xb2\ +\xc3Up\x09\xc4\xd8\x98\xb0w\xd0\x84\xa5\xf7\xc0B\x1d\ +\xb1$\xc7\xa1-6\xb58\x986\x0e\x9eo\x02\xd8\xf5<\xda?|@bu\xb5F\ +\xf2>\x22\xe35\xbb\x1a\x84}J\xcc\xa9}P\xb2\xd7\ +|u\x08\xd4\xa3\xb2\xb9V\x03!;,\x9dk\x15\x08\ +S\x8e\xcb'\xcd\x86\x10-\x88\xf6'3\x08\x93\x5c\xb7\ +\xfdh\xeaH\xb7\xfcl\xae\xa6\x15?\x9c\xdc\xba\xbb\xbe\ +\x18_Z\xd7\x14T\xdf\xfe\x00\x00\x00\x00IEND\ +\xaeB`\x82\ +\x00\x00\x00\xef\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00Q\x00\x00\x00:\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ +\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\ +\x0b*2\xff\x7f Z\x00\x00\x00oIDATx\ +\xda\xed\xd0\xb1\x0d\x000\x08\x03A\xc8\xa0\x0c\xc7\xa2I\ +\xcf\x04(\xba/]Y\x97\xb1\xb4\xee\xbes\xab\xaa\xdc\ +\xf8\xf5\x84 B\x84(\x88\x10!B\x14D\x88\x10!\ +\x0a\x22D\x88\x10\x05\x11\x22D\x88\x82\x08\x11\x22DA\ +\x84\x08Q\x10!B\x84(\x88\x10!B\x14D\x88\x10\ +!\x0a\x22D\x88\x10\x05\x11\x22D\x88\x82\x08\x11\x22D\ +A\x84\x08Q\x10!B\xfc\xaa\x07\x12U\x04tV\x9e\ +\x9eT\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\xb6\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x18\x00\x00\x00\x11\x08\x06\x00\x00\x00\xc7xl0\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ +\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\ +\x0b,\x0d\x1fC\xaa\xe1\x00\x00\x006IDAT8\ +\xcbc` \x01,Z\xb4\xe8\xff\xa2E\x8b\xfe\x93\xa2\ +\x87\x89\x81\xc6`\xd4\x82\x11`\x01#\xa9\xc9t\xd0\xf9\ +\x80\x85\x1cMqqq\x8c\xa3\xa9h\xd4\x82ad\x01\ +\x001\xb5\x09\xec\x1fK\xb4\x15\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x00\x81\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x10\x00\x00\x00\x10\x01\x03\x00\x00\x00%=m\x22\ +\x00\x00\x00\x06PLTE\x00\x00\x00\xae\xae\xaewk\ +\xd6-\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\ +\x00\x00)IDATx^\x05\xc0\xb1\x0d\x00 \x08\ +\x04\xc0\xc3X\xd8\xfe\x0a\xcc\xc2p\x8cm(\x0e\x97G\ +h\x86Uq\xda\x1do%\xba\xcd\xd8\xfd5\x0a\x04\x1b\ +\xd6\xd9\x1a\x92\x00\x00\x00\x00IEND\xaeB`\x82\ +\ +\x00\x00\x02)\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\ +\x00\x00\x01\xe0IDATx\x9c\xed[Ir\xc0 \ +\x0cs;}t\x9e\x90_\xb7'fh\x86\x04\x03\x92\ +\xec6\xe8L\xbc(b7f\x1b\x1b\x1bo\xc6\x87\xd2\ +\xd9q\x1c\xdf\x9ev\xe7y\xca\xe2\xa2:\xf2&\xdc\x03\ +\x93\x10\xb8aT\xd2w@\x93\x013\xc6N\xfc\x0a\x14\ +\x11\x10#\xea\xe4\x0b\x10$,\x19\x88J\xfc\x8a\x15\x22\ +\xa6?\xcc\x92|\xc1,\x09\xc3\x1feK\xfc\x8aQ\x22\ +\x86\x1agO\xbe`\x84\x04w\xc3\xbf\x92|\x81\x97\x84\ +/v O\xa8\x83\x8c\x22\xd8\xc5\x12#\xb8\xd6\x1fB\ +\xfb\xf1\xa8\xa0\xdb@\x95<\xcb_\x8f\x84O\xa43\x0f\ +z\x01)7Bf\x1d\x05DH\x92\xe1\xfb\xc9o\x1a\ +)\xb2c\xb8\xf3/\xe9\x02\xb3}^\xd1\x1d\x9a\x0eT\ +\xf2\xab\xfd(\x06\xc6\x96\x0f\xaa\x02F\x92\x8aR\x02\x8d\ +\x80\x99?\x1aA\x02e1\xb2*gfw\xb8\xda\x86\ ++\x00\x11\xbcR\x09P\x02\x90\x7fNE\x02\x8c\x00\x86\ +l\x15$\xfc22\x1b({\x0aC\xdb\xaf\xed-+\ +@1\x7f3\x95\xb0D\x80rW\xc7\x22a\x9a\x00e\ +\xf2\x1e\xbb\xb3$\xc0\xa7A\xf6\xc9\x0e\xda\xbet\x1d\x90\ +\xd1\xfe4\x01\x11\xcbVF\xb7[R\x80\x92\x04\xd6\x98\ +\xb3\xdc\x05\x14$0\x07\x5c\xc8\x18\xc0$\x81=\xdb@\ +w\x83\xcc\x15\x1b\xc2^\xcb&t\x16@*A\xb5\xce\ +\x90\xae\x03\xbc$(\x17Y\x94\x13\xa1\x15\x12\xd4+L\ +\xea\xa1\xe8h2\x11\xbbJ\xea\xa1\xe8\x88\x12\x22\xf6\x16\ +f\x82{\x01\x0f\x09Q\xc9\x9b\xed\x9b!\xdd\xe5(\xf2\ +L\x10\x09\xe9\xe5\xa8\x99O\x09J\xf5\xc9\xaf\xc7{\xc9\ +\xa9+EB\x0a$\xcc4\x15\x22w~j\x84\x95\xc8\ +\x98\xf1k\x84 %2\x05\xff\xb5JL>\x06d\xc3\ +.\x94\x1c5\x9e\x9d\x04j\xa9l\x8dlD\xc8\x8a\xa5\ +kd!!\xa4\x5c\xbe \x9a\x84\xd53\xc7\xfdd\x06\ +a\xa4\xc6k\x1fM\xb5\xf0\xcagsO\xc8\xf8pr\ +\xe3\xed\xf8\x01\xedrr\xcc\x11N\x0c\xe5\x00\x00\x00\x00\ +IEND\xaeB`\x82\ +\x00\x00\x00\xac\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x07\x00\x00\x00?\x08\x06\x00\x00\x00,{\xd2\x13\ +\x00\x00\x00\x06bKGD\x00\xb3\x00y\x00y\xdc\xdd\ +S\xfc\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\ +\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\ +\xdf\x04\x19\x10.\x14\xfa\xd6\xc4\xae\x00\x00\x009ID\ +AT8\xcbc` \x06\xc4\xc7\xc73\xc4\xc7\xc7\xa3\ +\x881aS\x84S\x12\xaf\xce\x91(\xc9\x82\xc4\xfe\x8f\ +\xc4f\x1c\x0d\xa1Q\xc9Q\xc9QI|\x05\x06\xe3h\ +\x08\x91*I>\x00\x00\x88K\x04\xd39.\x90?\x00\ +\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x025\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\ +\x00\x00\x01\xecIDATx\x9c\xed\x9bK\x92\xc3 \ +\x10C\xc9\x9ca\x0e\x98\xc5\x1c+\x8b9`\xee\x90\xac\ +\xa8\xa2(\x1b\x1aZ\x12\xed2Z;\xc2z|\xec&\ +8\xa5\xad\xad\xad;\xeb\xa1l\xec\xf7\xef\xffc\xb9\xee\ +\xfdz\xca\xee\x8b\xda\x905pOL pcT\xe8\ +3\xa1a\xc0\xcc\xd8\xc1k\xa1@@L\xd4\xe1\xb3\x10\ +\x10\x5c\x06\xab\x82\xd7\xf2\x80\x98\xfea\x94\xf0Y\xb3\x10\ +\x86\x7f\x14-x\xadQ\x10C\x17G\x0f\x9f5\x02\xc1\ +|\xe1U\xc2gY!\xfc\xb0o$\xbaL\x94\xae\xd6\ +\xfbY\x96Q\xd0\xbd\xa0\x17\xbelD\x05\xaa\x0e\xd6j\ +\xb7\x07\x01:\x05\xde\xaf\xe7\x83]\xc8\xa0\xfd\x9b\x00f\ +{\x94\x05a\xc6\xb7\x97\xe1\x14\x80w8\xa3!x\xfc\ +ZY\xdcS\xc03\xff\xacj\xf9x;\xea\xd0x\xc6\ +\x94u\x93H\xdf#/\xd8\x22\xc8\x18\x09\xcc\x9e\xcf\x82\ +>\x05\x90\x10\x14\xe1S:\x98\x02\x08s\xef\xcd3\xc3\ +\xd7\xde\x94Wa\xcfHP\xf5|\x16\xad\x16\x98\x81\xa0\ +\x0e\x9f\x12\xb9\x18\x1a\x81\xb0\x22|J\xd5\x1a\xc0j\xa8\ +\x17N\x1d\xbelOR\x0e\xcf\xae\x09\x8a\xe2J\xb6\x1f\ +0\x1aFUYJ7D\xac\xa1\x94\xfb\x0f\xf2\x1d\xa1\ +^8\xf5\xe6\x8b\x1c\x80\xe7=\x80!)\x00k8%\ +\x04\x19\x00d-\x80\x94\x04\xc0\xec\xa3N\x01\x81\x0e\xc0\ +\x12~%\x04J5\x985\xda\xf3\x8a\x97\x22I5x\ +\xd4P\xa9\xb30+F\x02\x05\x80\xa7'\xd5\x10\xe0\x00\ +\x10\xc3X\x09\x01\xb6)\x9a\x12~\x0e+\xfc`#\x80\ +\xb1\x80)F\x02\x04\x00s\xf5fCp\xdf\xb8\xaa\x9e\ +gm\xb4.\xd9\x13\x8c\xe0\x97u\x0a\x80\xf5_\x9cG\ +\x8c\xc5\x19>\x02\xd8\xf5<\xda\xdf}@\x22\xbaz#\ +y\x1f\x91\xb1\x9a]\x0d\xc2>%f\xd4>(9j\ +\x1e\x1d\x02\xf5\xa8l\xa9h d\x87\xa5KE\x81\xb0\ +\xe4\xb8|\xd6j\x08\xde\x82h\x7f2\x830)u\xdb\ +\x8f\xa6\x8et\xcb\xcf\xe6Z\x8a\xf8\xe1\xe4\xd6\xdd\xf5\x05\ +\x90\xc2Z}\xfa\xa7\x95\xa2\x00\x00\x00\x00IEND\ +\xaeB`\x82\ +\x00\x00\x0b\x1f\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00\x10\x08\x06\x00\x00\x00\xa6\xe7y)\ +\x00\x00\x00\x87zTXtRaw prof\ +ile type exif\x00\x00x\ +\xdaU\x8e\xcb\x0d\xc3@\x08D\xefT\x91\x12\xf8\xed\xb0\ +\x94\x13Y\xb6\x94\x0eR~@k\xcb\xf1;\xc0h\xb4\ +\xfb\x04\xed\xdf\xcfA\xafFX\xc9GL$\xc0\x85\xa7\ +\xa7\xbe+L^\x18\xb3(K\xef\x9a\x8bs\x9bT\xd2\ +\xbb&\xd3\x15\x903\xd8\xef\x87~\xf6\x17\xc30q\x84\ +G``\xc3\xa6e\xd7\xdd\xd4\xb4f\x8b\xda\xca}F\ +\xfeI\xae\xdf\xf6\xec\xe5\xe9f\xfa\x01?{,\x10\xd8\ +2\x95\xc4\x00\x00\x0a\x02iTXtXML:c\ +om.adobe.xmp\x00\x00\x00\x00\ +\x00\x0a\x0a \x0a \ +\ +\x0a \x0a\x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ +\x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a\ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \x0a'q\xef\ +\x0e\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\ +\x88\x00\x00\x005IDATX\xc3\xed\xd5\xb1\x0d\x00\ +0\x08\x041\xc8\xa2\xcc\xc6\xa4I\x9b\x1d\xde\xee(\x91\ +@WE\xb6\xfe\x87\x99\xb9I\xcb\xefn\x9f\xf4\x0b8\ +\x9e\x00\x90A\x19\x94A\x80H\x0f\xc6\x9d\x08\x0b\xaac\ +u(\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x03\x0a\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xbcIDATX\x85\xed\ +\x96\xbdO\x14Q\x14\xc5\x7fg\x86\xd0H,\x981Q\ +\xff\x00\x8b\xd5\x15\xad\xb4\xd2\xd8h!~\x84N:M\ +\xa4\xa0RY\x8d\x82\x05\x85\x1a\x95A;\xa21\xd1N\ +;\x14\xc1B-\x08TZ\xe9\xee\xba$\xfe\x03h\xe2\ +\x0e\x85\xc1\x06\xdcw-vF\x88\xb2\xcb.\xc1\xca=\ +\xd5{3\xf7\xe3\xbc\xfb\xde;\xf7A\x0b-\xfc\xefP\ +S\xd6\xc3\xd3mAG\xd0-\xac\x07t\x00\xd8\x99\xfc\ +\x99\x07{oh<^\x8c\xa7\x18>\xf2s\xd3\x09t\ +\xde-\x1e\xf5<\xbb\x0fd\x80\x0f\x86f1\xfbR\x8d\ +\xa2\x1d\xc2\x0e\x01\xfb\x819\x87.,\xe4\xb2o7\x87\ +\x80\x99\xb6\x8d\x16\xae\x19\xba)\xf1\xbcb\xfe\xf5\x85\xdc\ +\xee\xb95IF\xa5\x8c\xaf\xca\x0d3N\x9bi(\xce\ +\xed\xb9\x8dd\x8d.rMl\x8b\xf2\x83aTX\x0e\ +G\x0a\xe7\x1b\xf5\x09G\x0a\xe7\xc3\xa8\xb0\x1c\x8c\x14\xaf\ +\xadg[\xb7\x02I\xd9_c\xf4\x95/\xef}\x04\x80\ +\x99\xc2\xd1b\xafA\xbf\xa0\x0b\xc0 /\x18+\x0fd\ +\x9f\xa6+\x0e\xa3B\x1f\xf0\xd09\x1d[\xb8\x92}\xd3\ +<\x81\xe1\xe9\xb6\xb0#\xc8K|\xfe6\xb0\xb7\x07`\ +\xeb\xbdRg\xbbU\x9e`\x9c4\xc3IxUN\xc9\ +XL,\xc9?\xf7\xfd\xd2\xee\x85\x84\xc4s`Wy\ +1\xee\xaau0\xbdZ\xf9\x83\x8e\xa0\x1b\xc8T\xcc\xbf\ +\x9e\xae\xbc\xdd*O\xcc\xe8\x06H\x93\xaf\x1e\x9bq\xa2\ +\xdd*\x8f1\x13\x80\xc3\x1f\x022\xc1\x96\xe0x\xad<\ +5\x09T\xaf\x1a\x1f\xd2\x03\x17\x8e\x16{1N\xaa\xae\ +\x0f\x1e\xc6\xa90*\x9e\x01\xa8\xfa\xdaG\x0f\xf54M\ +\x00t\xc0\xd0l:3\xe87\xc3\xd5\xb6O\xec\x0c\x87\ +g\xfd+~\xde\x8c\xc9\x0e\xd6\xb2o\xab\x13k\xe7\xef\ +{\x0e\x08\xbaP=\xc2\x89\x9d\xf0@]\xab(}e\ +E\xb0\xfe\xc2\xba\x01\xff5\xea\x11\x98G\xda\x91N\x0c\ +\xf2\x0do\x01\x96_\xf9\xa2\xed\xc0\xfc\x06\x08\xd8\xfbD\ +^\xaba`L\x8dn\x81\xd3\xd8\x8a\x9f;,\xd3\xbb\ +\xa6\x09\x18\x1a\x07\xf6wF\xa5\x0c@Udxi\xd4\ +\xae\x82\x81CL\x94s\xd9gP\x95f\xd0>\x87\x8d\ +7M ^\x8c\xa7\x809_\x95\x1b\xc9\xd2lI\xfe\ +Y\x89IHK\x9d$N\xc6\x12\x93K\xf2\xcf\xa5j\ +\xe8Q\xb9\x09\x94\xe2\x1f\xf1\xabZy6&\xc5Q\xf1\ +L\xf5\xaa\xa5\xa7\xdd\xf28\x8d\x95s\xd9g\x7fH\xf1\ +\x03\x87\x8e5\xda\x19\xd7\xc4\x86\x9aQT\xe8\xdb\x94f\ +\x04\x80\x99\x82\xe8\xd3U\xc9n\x01/\x1c\xfeP\xbdv\ +\x9c\x94\xfd\x94\xc1`<\x90\xbd\xb3^;\xde\xe0\x83\xc4\ +>\x1a\xdeL\x222\x80\xb6\x0bw\x18\xb4\x0f(9t\ +q\xf3\x1e$\xab1<\xdd\x16l\x09\x8e{\xa8'\x91\ +\xd7\xdfO2\x99\xde9l<\xfe\x11\xbfj\xe6I\xd6\ +B\x0b-\xfc\x02\x9d\x07<\xe4\x1f\x0b_\x15\x00\x00\x00\ +\x00IEND\xaeB`\x82\ +\x00\x00\x01\x9d\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01OIDATX\x85\xed\ +\x97\xbfN\xc2P\x14\x87\xbfC(\x8c\x94\x05\x9f\x81\x85\ +DLp\x85h*\x11\xe3\x0b\xf0\x14uV\x07\xd9\xe1\ +)x\x04blL\xbaw\xc0\x84\xa5\xef\xc0\x02\x8eX\ +\x92\xebP\x8aM\xf9\xd3DZ\x17\xef\xb7\xf5\xde\x9b\xfe\ +\xbe\x9e\xa6\xe99\xf0\xdf\x91\xe4B\xb3\xd3\xbb\x01\xf5\x00\ +\xd2\x02\xcc\x8cr\x96\xa0<\x90\xe1\xd4\x9d\xbc\x1d\x14\xb8\ +h\xdf\x0d\x94\xa8G`%\xe0+\xd4g\x16\xe9\x82T\ +\x14\xd4\x81\xb2\x82\xc1\x87;y\xde\x11h\xb6o\xbb\x88\ +\xbc\x02\xefk#\xe8\xcf\x1cg\x9eExD\xc3\xb2j\ +\xc5\xc0\x18\x03\xd7@7\xaaD!\xa6i\x03\xab<\xc2\ +\x01f\x8e3_\x1bA\x1f\xf8\x02\xech\xfdG\x00i\ +\x09\xf8y\x84\xc7%\x00\x1fh\xed\x11\xc0\xcc\xea\x9d\x1f\ +G-\x81jtUL;\xde\xec\xf4\xd4)qSw\ +\xb2\xf3\xa5\xc5)\x1c\xdb\xfc\x0b\xb4\x80\x16\xd0\x02Z@\ +\x0bh\x01-\x90\xda\x0f\xa4\xfd\xcfO%^\x81\xa5 \ +\x95<\xc3B\xc4\x04\x16{\x04\x94\xa7\xa0\xde\xb0\xacZ\ +^\xd1\x9b{\xd7\x01o\x8f\x80\x0c\x81r10\xc6y\ +H\x5c^\xdd\x9fm\xda\xf2\x120\xda\xa6\xc6\x0f\x9dw\ +z/\x02O\x84\xad\xb3\xbfi 3@L\xc2'/\ +\x1d\x1cL\x22\xc2\xd1\x0c\x9b\xb0u\xae&\xf7\x7f\xc9\x82\ +\xb0\xec\xa3\xe4h\xa6\xf9\x06\xfe\xc1e\x8b\x9b\xf2\xc3\xc8\ +\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x01\xa2\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01TIDATX\x85\xed\ +\x97Aj\xc2@\x14\x86\xbf\x17\x82.\x8d\x1b{\x06/\ +\xe0\x09\x0az\x07Oa\x09d\x94\xb6\x8b\xba\x89\x10\xf4\ +\x14\x9e\xa1\x14z\x02/\xe0\x1d\xdch\x97J\xc8\xdfE\ +MI\x15+\xb4I7\xcd\xb7\x9b7\xc3\xfc\x1f\x19\xc2\ +\xbc\x81\xff\x8e\x9d\x16\xa2(\xea\x9b\xd9\x9d\xa4\x9e\x99\x05\ +e\x84H\xda\x99\xd9J\xd2|6\x9b\xbd\x5c\x14\x18\x8f\ +\xc7SI\xf7\xc0^\xd2\xda\xcc\xdeJ\x12h\x99Y\x17\ +h\x02\xd38\x8e\x1f\xcf\x04\x9cs\x03\xe0\x19xM\xd3\ +t\x98$\xc9\xa6\x8c\xf0\x9c0\x0c;\xbe\xef/\x81[\ +I\x83\xfcKx\x855#`_E8@\x92$\x9b\ +4M\x87\xc0\xc1\xf3\xbcQ^\xff\x14\x90\xd4\x93\xb4\xae\ +\x22\xbc(\x01\xac%\xf5\xce\x04\xcc,(\xeb\xcc\xaf\xb0\ +\x03\xda\xf9\xc0\xbf\xb6\xda9\xa7\xdf\xa4\xc5q|\xf6\xa7\ +\x15\xf1\xbe\x9b\xfc\x0bj\x81Z\xa0\x16\xa8\x05j\x81Z\ +\xa0\x16\xb8\xda\x0f\x5c\xbb\xcfK\x13\x90\xb4\x03ZU\x86\ +\x1d\x09\x80m>(\xb6d+3\xeb\x86a\xd8\xa9*\ +\xf9\xb8w\xd7\xccVg\x02\x92\xe6@\xd3\xf7\xfde\x15\ +\x12\x93\xc9\xe4\xe6\xd8\x967\xb2,[\xe4\xf5/\xe7\xeb\ +\x9c{\x02\x1e\x80\x03\xb0\xe6\xa3\x81,\x83\x00\xe8\x02\x0d\ +.=Lr\xa2(\xea{\x9e7:\xb6\xce\xed\xd3\xf9\ +\x1f\xb25\xb3U\x96e\x8b\xd3\xa7Y\xcd;\xf1#\x82\ +\xe5\xfbO\xe3\xdb\x00\x00\x00\x00IEND\xaeB`\ +\x82\ +\x00\x00\x00\xa0\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09p\ +HYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ +\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x14\x1c\x1f$\ +\xc6\x09\x17\x00\x00\x00$IDAT\x08\xd7c`@\ +\x05\xff\xcf\xc3XL\xc8\x5c&dY&d\xc5p\x0e\ +\xa3!\x9c\xc3h\x88a\x1a\x0a\x00\x00m\x84\x09u7\ +\x9e\xd9#\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\xe0\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00Q\x00\x00\x00:\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ +\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ +\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\ +\x0b)\x1c\x08\x84~V\x00\x00\x00`IDATx\ +\xda\xed\xd9\xb1\x0d\x00 \x08\x00AqP\x86cQ\xed\ +\x8d\x85%\x89w\xa5\x15\xf9HE\x8c\xa6\xaaj\x9do\ +\x99\x19\x1dg\x9d\x03\x11E\x14\x11\x11E\x14QDD\ +\x14QD\x11\x11QD\x11EDD\x11E\x14\x11\x11\ +E\x14\xf1[\xd1u\xb0\xdb\xdd\xd9O\xb4\xce\x88(\x22\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf6\xcei\x07\x1e\xe9\ +9U@\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x01\xa8\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01ZIDATX\x85\xed\ +\x97Mj\xc2P\x14\x85\xbf\x1b\x82\x0e\xab\x13\xbb\x067\ +\xe0\x0a\x0a\xba\x07Wa\x09\xe4)m\x07u\x12!\xe8\ +*\x5cC)t\x05\xd9\x80{p\xa2\x1d*!\xa7\x83\ +\x1a\xb1\x86P(\xb1\x16\x9a3{\xf7>\xde\xf9\xb8\xef\ +\x87\xfb\xe0\xbf\xcb\xce\x03a\x18\xf6\xcd\xec^R\xcf\xcc\ +ZU\x98H\xda\x9aY\x22i>\x9b\xcd^K\x01\xc6\ +\xe3\xf1T\xd2\x03\xb0\x93\xb42\xb3\xf7\x8a\x00n\xcc\xac\ +\x0b4\x81i\x14EO\x05\x00\xe7\xdc\x00x\x01\xde\xd2\ +4\x1d\xc6q\xbc\xae\xc2\xcf\xffP\x1b3K\xb2,[\x9c\x7f\xcd\ +j}\x00,\x83\x82\xe5\xf9\x1d\x9c\xb3\x00\x00\x00\x00I\ +END\xaeB`\x82\ +\x00\x00\x01\xa2\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01TIDATX\x85\xed\ +\x97Aj\xc2P\x10\x86\xbfI\x8a]V\xa9\x8dg\xc8\ +F\xbb\xf2\x04\x05\xbd\x83\xa7\xb0\xe8\xae\xed\xa2.\x0d\xda\ +Kx\x86R\xe8\x09\xb2R\xbb\xc8\x19\x14A\xbbTH\ +\xa6\x0bc\x10\x83\x0a5\xe9\xa6\xef\xdb\xe5\xbd!\xff\xc7\ + \x0b\xa4\x08020 \x0b\xa6\ +\x08000B\x98\x10\xc1\x14\x01\x14\x13P\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90]f\x1f\x83\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x00\xa6\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09p\ +HYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ +\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x08\x15;\xdc\ +;\x0c\x9b\x00\x00\x00*IDAT\x08\xd7c`\xc0\ +\x00\x8c\x0c\x0cs> \x0b\xa4\x08020 \x0b\xa6\ +\x08000B\x98\x10\xc1\x14\x01\x14\x13P\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90]f\x1f\x83\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x00\xdc\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x10\x00\x00\x00@\x08\x06\x00\x00\x00\x13}\xf7\x96\ +\x00\x00\x00\x06bKGD\x00\xb3\x00y\x00y\xdc\xdd\ +S\xfc\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\ +\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\ +\xdf\x04\x19\x10-\x19\xafJ\xeb\xd0\x00\x00\x00\x1diT\ +XtComment\x00\x00\x00\x00\x00Cr\ +eated with GIMPd\ +.e\x07\x00\x00\x00@IDATX\xc3\xed\xce1\ +\x0a\x00 \x0c\x03@\xf5\xa3}[_\xaaS\xc1\xc9\xc5\ +E\xe42\x05\x1a\x8e\xb6v\x99^%\x22f\xf5\xcc\xec\ +\xfb\xe8t\x1b\xb7\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\xf06\xf0A\x16\x0bB\x08x\x15WD\xa2\x00\ +\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\xa6\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09p\ +HYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ +\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x14\x1d\x00\xb0\ +\xd55\xa3\x00\x00\x00*IDAT\x08\xd7c`\xc0\ +\x06\xfe\x9fg``B0\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +d``b``4D\xe2 s\x19\x90\x8d@\x02\ +\x00d@\x09u\x86\xb3\xad\x9c\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x02k\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x1dIDATX\x85\xed\ +\x961O\x13a\x18\xc7\x7f\xcf]7:q%\x01>\ +\x80C\xb5\x08\x13N\x12\x16\x1d A\xfb\x1d`\xb6\xa1\ +\x12\xa1\x0c\x1d\xc0\xa8=\xe3\xa4\x89\xe1;\x14\x07\x18\xc4\ +\xa1\x81\x09&\xa0\xd8&~\x81j\x22\xd7\xa9L\xd0\xf7\ +q\xe8\x81\x0c\x5c\xdb\xbb6.\xf6\xbf\xde\xfb\xdc\xffw\ +O\xee}\xfe\x0f\x0c4\xd0\xff.\x09u:_\x8a9\ +qg^\xd04\xc840\xee?\xa9\x81\x1e)R\xf4\ +\x1a\xde\x0e\xf9\xd9\xab\xbe\x03\x0c\xbf;{bY\xfa\x01\ +H\x02\xc7\x8a\x1c\xa0\xfa\xb3\xf5\x16\x19\x13\xf410\x05\ +T\x0d\xf2\xa2\x9eM}\xeb\x0f\x80\xaa\x8c\xbc/\xaf*\ +\xb2)\xc2vS\xed\xf5z\xf6~\xf5NH\xb7\x92\xb4\ +\xa5\xb9\xa1\xca3U\xc9y\xd9\x07o\x10\xd1n?\xf2\ +N\x8d\xb8\xa7k\x09\xb7|\x99(\x94\x17\xbb\xadI\x14\ +\xca\x8b\x09\xb7|\xe9\x14\xceV;\x9dm\xdb\x01\xbf\xed\ +_Q\x96\xce_Nlu\x0b\x00\x90p\xcbK\xc0g\ +c\xe4i}%\xb5\x17\x1e _\x8a%\xe2\xce\xa9\x08\ +?~/O\xa4\xc3\x98\xdf\x82\xd8\x06\xee\x9d7\xbc\x87\ +A?\xa6\x15T\xec\xc4\x9dy \xd9T{=\x8a9\ +\x80\xc1\xce\x01Ig\xc8\x99\x0b:\x13\x08\xd0\xbaj\x1c\ +\x07\xfdp\xdd\xa8U\xab'\x16\x12\xd8\xc1@\x00\x90i\ +E\x0e\xa2\x9a_K\xb1\xf6U\xf4Q\x04\x00\xc6o\xee\ +yo\x08\xbf\xf8;\xb0B\x01\xfc\x13\xb5\x03\xa8!2\ +\xd6\xbb\x85\x8c\x02\xb5\x08\x00z\xe4\x8f\xd7\xde\xec13\ +\xa2r\x18\x1a@\x91\x2205\xecV\x92Q\xcd[\xb5\ +2i\xd0bh\x00\xaf\xe1\xed\x00U[\x9a\x1bQ\x01\ +,\x9a\x9b@\xc5\xbb\xf0vC\x03\x90\x9f\xbd2F2\ +\xaa<\x0f\x93\x03\xd7\xf2G\xf1\x82A2\xed\xe2\xb9\xed\ +-\xa8\xaf\xa4\xf6\x04\xcd!|\x0a\x15F-\xf3\x8f\xaa\ +\x92\xeb\x14\xcb]\xc5\xb1\xe3~\x7f%\xa2\xaf\x81/\x06\ +;\xd7.\x8e\xfd\xb6/(\xacy\xcb\xa9\xb7\x9d\xe28\ +\xe2B\xa2'\x8a\xb5\xef\x0f\x19@F\x053\x032\x09\ +T\x0c\x92\xe9\xdfBr[\xf9R\xcc\x19r\xe6,$\ +\xed\x8f\xd7\x9b\x95LT\x0e\x0dZ\xf4.\xbc\xdd0+\ +\xd9@\x03\x0d\xf4\x071\xe2\xd8\x82\x22J\xad\xa7\x00\x00\ +\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\x96\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\ +\x00\x00\x00\x02bKGD\x00\xd3\xb5W\xa0\x5c\x00\x00\ +\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\ +\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x0b\x07\x0c\ +\x0d\x1bu\xfe1\x99\x00\x00\x00'IDAT\x08\xd7\ +e\x8c\xb1\x0d\x00\x00\x08\x83\xe0\xff\xa3up\xb1\xca\xd4\ +\x90Px\x08U!\x14\xb6Tp\xe6H\x8d\x87\xcc\x0f\ +\x0d\xe0\xf0\x08\x024\xe2+\xa7\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x03\x18\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xcaIDATX\x85\xed\ +\x96\xb1o\x14W\x10\xc6\x7f\xdf\xf3\xc9AD\x8eP\xaa\ +\x84? \xc55\xc6w\x05\xa4\x81]#\xc5\xc2\xb7@\ +\xe4\x0e\xba \xe1\xc2U\xd2\x05L\x89\xa3\xa4Jg%\ +\x8a\x94t\xa13\x10\x9f\x8d\x0c\xb29h\x02Rls\ +\x05\x96\xf2\x0f8T\x11\x8a\x15\x94\x00\xb7_\x8a\xdb=\ +_$\xaf\xedCN\x95\xfb\xaa\xb7\xb33o\xbe\x99\xf7\ +\xde\xcc@\x1f}\xfc\xdf\xa1^\x94\xa3(*m1\x94\ +X\x9e\x10>n8\x9am\xb2i\xf4X\xd6\xdc\x10[\ +\xf5F\xa3\xf1\xfa\xc0\x09TG\xcf~d\xa7_\x03e\ +\xa4uH\x1f:\xd5o\x00\x0a~\x1f\xc2I\xec\x11`\ +#\x04\x7f\xfa\xcb\xf2\xe2\xbd\x83\x22\xa0J\x5c\xbb\x02\xcc\ +`nz \xbd\xb6\xbe|gc'\xc5\x91\xd3g\xca\ +j\x85\xeb\x88\x8f\x85\xa6W\xef\xd7\xbf\x04\xbc\xcf\x18w\ +F%\xae]\xad\xc4\xb5W\x95\xd1\xe4\xf2\xbemF\x93\ +\xcb\x95\xb8\xf6\xaa\x1a'W\xf6\xd2\xdd5\x03Y\xda\x97\ +\x90&\xd7V\xea\xdf\xe56\x95(\xb9\x88<\x05\x1e\xce\ +DM\xac\xd9\xb5F\xfdG\xb2\x88+qm\x12\xf8V\ +\x0ac\xab+\xf3w{&\x10EQ\xe9\x0f\xbd\xdd\xc4\ +\xfc\xba\xd6X\x98\x00\xf8pl\xec\xdd\xbf_\x96~\x00\ +\xce!\xa5\xd8\xa1\xbdK{m|\xfb\xd0`\xeb\xd2\xcf\ +KK\xbf\xb731~\x13\xeb\x83w\xfc\xe7p\xd1\xc5\ +\x0cE\x04\xb6\x18J\x80\xb2\x07\xd2k9\xd9\xb6s%\ +\x00\x1d\xe7]k\x11\xce\xfe\xf5r\xe0\xfb<0\xcb\xd3\ +@\xf9\xb9\x0e\xd7\x8a\xfc\x14\x12\xb0<\x81\xb4\x9e_\xb8\ +J\x94\x5c\x04\xce\x81\x0bm\xc0A\xe8|5\x1e\xbf\x00\ +\xb0\xbe|gC\xf0d\x00&z& |\x1c\xd2\x87\ +\xdb\x02O!\xa5\xc5\xce;\x86i\x8a\xa6\xba\x02y\x00\ +:Q\xa4^*\xfaa8\x9a\xbf\xf3L2\x8c\x8b\x09\ +w\x19\x06`x\x9b\x0f\xcf\xf2\x82\xb5\x13\xf6\xde\xf0?\ +\xc6.G\xc0f\xbb\xc2u$\xcd\xfd\x1e\x01\xd0\xcc?\ +\x0d\xef\x096{&`\xf4\x18\xc2\xc9m\x81f\xffu\ +\xf3\x8b\x0dC\xc0\xb3\x1d>\xd6)\xf0\xa3\x9e\x09\xc8\x9a\ +\xc3\x1e\x199}\xa6\x0c\x90\x15\x99\x9f`\xb7,(5\ +\xbe\xbdz\x7f\xf1\x06\xb4K\xb3\xe1X\x0b\xe6z&0\ +\xc4V\x1d\xd8P+\x5c\xcfD~k\xf0\xf5'&\x9d\ +o\xfbb\x9bH\xb66\xe9\xfc\xa1\xc1\xd6%\xb2j(\ +kF\xf0\xf4\x88_,\x14R.\x8e\xa6\xb8\x14W\xe3\ +\xf1\x0b\xd9S\xcbo{3\xe0\xd9,\xf2\xeeR\xfcM\ +\x08\x1e\xdbog\xdc\x11o\xd4\x8c\xe2\xda\xe4\x814\xa3\ +\x5c\xa7\x1a'\x9f\x1b\x7f\x81|\xcb\xf2\xf4\xae\xed\xd8\x9a\ +\xc1:/\xf9\xea\xea\xca\xe2W\xec\xd1\x8e\xdfh \x11\ +<\xb1\xfc@\xf0\x0c\xb2\xa7f\x9d2\x1c\x13\xfa\ +\xe8\xe3\x1frx6\x82c\xad\x95\xaf\x00\x00\x00\x00I\ +END\xaeB`\x82\ +\x00\x00\x0b\x17\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00?\x00\x00\x00\x07\x08\x06\x00\x00\x00\xbfv\x95\x1f\ +\x00\x00\x00\x87zTXtRaw prof\ +ile type exif\x00\x00x\ +\xdaU\x8e\xd1\x0d\xc40\x08C\xff\x99\xe2F @L\ +\x18\xa7\xaa\x1a\xe96\xb8\xf1\x0f\x94Vm\xdf\x87\xb1,\ +d\xa0\xe3\xf7\x9d\xf4)\x1a\x0bY\xf7\x81\x008\xb1\xb0\ +\x90-\xcd\xe0\x8527\xe1V3uqNm\xe9\xe4\ +\x8eIe\x19\xc4p\xb6{\xd1\xce\xfc\xa2+\x06\xa6\x9b\ +;:v\xec\x92\xedr\xa8\xa8\xa4VQ\xb5r\xbd\x11\ +\x8fk\xf3\xfa\xe8\x9d\xb3\xbf\xcb\xe9\x0fH!,K\xed\ +~\xc6\xe4\x00\x00\x0a\x00iTXtXML:c\ +om.adobe.xmp\x00\x00\x00\x00\ +\x00\x0a\x0a \x0a \ +\x0a \ +\x0a\x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ +\x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a\ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \ + \ + \ + \ + \x0a \ + \ + \x0a@\x00Zq\x00\ +\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ +\x00\x00/IDAT8\xcbc`\x18\x05#\x130\ +\xc2\x18\xf1\xf1\xf1\xa4\xe8\xfb?\x98\xfdB\x0cX\xb8p\ +!\x03\xd3H\x8e\xf9\x11\xe9\xf9\x85\x0b\x17\x8e\xe6\xf9\x11\ +\x0d\x00\x8bl\x05\xe9)K\xfc\x15\x00\x00\x00\x00IE\ +ND\xaeB`\x82\ +\x00\x00\x00\xa0\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09p\ +HYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ +\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x14\x1f\x0d\xfc\ +R+\x9c\x00\x00\x00$IDAT\x08\xd7c`@\ +\x05s>\xc0XL\xc8\x5c&dY&d\xc5pN\ +\x8a\x00\x9c\x93\x22\x80a\x1a\x0a\x00\x00)\x95\x08\xaf\x88\ +\xac\xba4\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x02+\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\ +\x00\x00\x01\xe2IDATx\x9c\xed\x9bK\x0e\xc3 \ +\x10CiO\x9d#p\xebv\x85\x84\x10\x81\x81\xb1\x0d\ +Q\xf0:5\xf1\xe3\x93\x0c%!\x1c\x1d\x1d\xbdY\x1f\ +ec\xd7u\xfd,\xd7\xc5\x18e\xf7Em\xc8\x1a\xb8\ +'&\x10\xb81*\xf4\x9d\xd00`f\xec\xe0\xa5P\ + &\xea\xf0I\x08\x08.\x83U\xc1Ky@L\ +\xffp\x97\xf0I\xb3\x10\x86\x7f\xb4[\xf0R\xa3 \x86\ +.\xde=|\xd2\x08\x04\xf3\x85O\x09\x9fd\x85\xf0e\ +\xdf\xc8\xee2QzZ\xef'YFA\xf7\x82^\xf8\ +\xbc\x11\x15\xa82X\xab\xdd\x1e\x04\xe8\x14\x881~\xd8\ +\x85\x0c\xda\xbf\x09`\xb6GY\x10f|{\x19n\x01\ +x\x873\x1a\x82\xc7\xaf\x95\xc5=\x05<\xf3\xcf\xaa\x96\ +\x8f\xb7\xa3\xaa\xc63\xa6\xac\x9bD\xfa\xd6\xbc`\x8b \ +c$0{>\x09\xfa\x14@BP\x84\x0f\xa12\x05\ +\x10\xe6\xde\x9bg\x86/\xbd)\xaf\xc2\x9e\x91\xa0\xea\xf9\ +$Z-0\x03A\x1d>\x04r14\x02aE\xf8\ +\x10\x8a5\x80\xd5P/\x9c:|\xde\x9e\xa4\x1c\x9e]\ +\x13\x14\xc5\x95l?`4\x8c\xaa\xb2\x94n\x88XC\ +)\xf7\x1f\xe4;B\xbdp\xea\xcd\x179\x00\xcf{\x00\ +CR\x00\xd6pJ\x082\x00\xc8Z\x00)\x09\x80\xd9\ +G\x9d\x02\x02\x1d\x80%\xfcJ\x08\x94j0i\xb4\xe7\ +\x15/E\x92j\xb0\xd6P\xae\xbb0+F\x02\x05\x80\ +\xa7'\xd5\x10\xe0\x00\x10\xc3X\x09\x01\xb6)\x1a\x02~\ +\x0e+\xfc`#\x80\xb1\x80)F\x02\x04\x00s\xf5f\ +Cp\xdf\xb8\xaa\x9egm\xb4.\xd9\x13\xdc\xc1/\xe9\ +\x16\x00\xeb\xbf8\x8f\x18\x8b3|\x04\xb0\xeby\xb4\xbf\ +\xfb\x80\xc4\xee\xea\x8d\xe4sD\xc6j\xf64\x08\xe7\x94\ +\x98Q\xe7\xa0\xe4\xa8\xf9\xee\x10\xa8Ges\xed\x06B\ +vX:\xd7.\x10\x96\x1c\x97OZ\x0d\xc1[\x10\x9d\ +Of\x10&\xb9^\xfb\xd1TM\xaf\xfcl\xae\xa5\x1d\ +?\x9c\xc0XL\xc8\x5c&dY&d\xc5pN\ +\x8a\x00\x9c\x93\x22\x80a\x1a\x0a\x00\x00)\x95\x08\xaf\x88\ +\xac\xba4\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x01\x8d\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01?IDATX\x85\xed\ +\x97Aj\xc2@\x14\x86\xbf\x17\x82.\x8d\x1b{\x86\x5c\ +\xc0\x13\x14\xf4\x0e\x9e\xc2\x12H\x94\xb6\x8b\xbaQ\x08z\ +\x0a\xcfP\x0a=A.\x90;\xb8\xd1.\x95\x90\xbf\x8b\ +\x9ab\x15)\x94\xa4]t\xbe\xd5\xe4\xcd\x90\xffcf\ +\xf3\x1e\xfcw\xec\xbc\x10\xc7\xf1\xc0\xcc\xee$\xf5\xcd,\ +\xa8#D\xd2\xce\xcc2I\xcb\xc5b\xf1rU`2\ +\x99\xcc$\xdd\x03{I\xb9\x99\xbd\xd5$\xd01\xb3\x10\ +h\x03\xb3\xf9|\xfex!\x90$\xc9\x10x\x06^\x8b\ +\xa2\x18\xa5i\xba\xa9#\xbc\x22\x8a\xa2\x9e\xef\xfbk\xe0\ +V\xd2\xb0\xba\x09\xef\xe4\xcc\x18\xd87\x11\x0e\x90\xa6\xe9\ +\xa6(\x8a\x11p\xf0\ +N[\xb2\xcc\xcc\xc2(\x8azM%\x1f\xff\x1d\x9aY\ +v! i\x09\xb4}\xdf_7!1\x9dNo\x8e\ +my\xab,\xcbUU\xff2\x98$I\xf2\x04<\x00\ +\x07 \xe7\xa3\x81\xac\x83\x00\x08\x81\x16\xd7\x06\x93\x8a8\ +\x8e\x07\x9e\xe7\x8d\x8f\xads\xf7|\xff\x87l\xcd,+\ +\xcbru>\x9a9\xde\x01#\x94}H\x8c\x1a5\x0f\ +\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x00\xa5\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02bKGD\x00\x9cS4\xfc]\x00\x00\x00\x09p\ +HYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ +\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x0b\x02\x04m\ +\x98\x1bi\x00\x00\x00)IDAT\x08\xd7c`\xc0\ +\x00\x8c\x0c\x0c\xff\xcf\xa3\x08\x18220 \x0b2\x1a\ +200B\x98\x10AFC\x14\x13P\xb5\xa3\x01\x00\ +\xd6\x10\x07\xd2/H\xdfJ\x00\x00\x00\x00IEND\ +\xaeB`\x82\ +\x00\x00\x00\x9e\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09p\ +HYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ +\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x08\x15\x0f\xfd\ +\x8f\xf8.\x00\x00\x00\x22IDAT\x08\xd7c`\xc0\ +\x0d\xfe\x9f\x87\xb1\x18\x91\x05\x18\x0d\xe1BH*\x0c\x19\ +\x18\x18\x91\x05\x10*\xd1\x00\x00\xca\xb5\x07\xd2v\xbb\xb2\ +\xc5\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x02\xa1\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02SIDATX\x85\xed\ +\x96\xbfO\x13a\x18\xc7?\xcf\xb5\x13\xa6\x86\xd1v\xa3\ +\x03\x90.\xd2\xeb\x00\x13\x5cKB\x82W\xa2av\xc5\ +8j\xe2 ?\xdc\xa8\xd1\xc4D\x17'\x06\xe3?P\ +\x1cZ\x18\x08P\x18\x14\x12iq\xa0\x89\x0d\xa4L-\ +n\xc4F\x16\xec=\x0e\x80a\xe0\xe0\xae\x10\x17\xfbY\ +\xdf\xef{\xdf\xef\xdd\xbd\xef\xf3<\xd0\xa6\xcd\xff\x8e\xf8\ +\x11[\x96\x15l\x10J\xab\xe8\xb8\xa0\xfd\x0a\x91\xd3\x87\ +\xd4\x14\xd9\x14\x95l\x88F\xaeP(\xfc\xbe\xf1\x00\x89\ +\xd4\xd8\x88\xaa\xf3\x16\x88!R\x02g]\x1d\xa9\x03\x88\ +\xa1a0\x06Q\x8d\x03e\xc3\xd0'_\x97\x17\x96n\ +*\x80\x98I{\x12\xc8\xa0\xcck\xc0\x99)-/\x96\ +/\x12\xc6\x87Gc\xd24f\x11\x1e\x082\xbd\xb5\x9a\ +{\x05\xa8\xc7w\xbc\x183iO\x99I\xfb\xd8L\xa5\ +'<\xefI\xa5'\xcc\xa4}\x9cH\xa6'\xaf\xd2\x06\ +.[L\xa4\xc6F@? \xf2\xb8\xb8\x92\x9b\xf3\x1a\ +\xa0^\xad\x14\xc3]\xdd?\x80w\x91h\xef\x97z\xb5\ +\xb2\xe7\xa6u\xfd\x05\x96e\x05\x7f\xca\xado(\xdf\x8b\ +\x85\xfc\xb8W\xf3\xf3\x98\xa9{\xf3\xa8t\xdf\xd6_w\ +\xdd\x0e\xa6\xe1\xb6\xb9A(\x0d\xc44\xe0\xcc\xb4b\x0e\ +\xa0\xa2\xd3@\xecP:l7\x8dk\x00\x15\x1dG\xa4\ +\xe4v\xe0\xbcPZ^,\x0bl\x07\xc0\xf5\x0b\xba\x06\ +\x10\xb4\x1f\x9c\xf5V\xcd\xcfP\xd15\x90\x01\xdf\x01\x14\ +\x22g\xf7\xfc:\x08\x1c\x9c\x15,_\x01\xfe\x15A\xb7\ +\x05\x81\x1a\x86\x86\xafk\xa0pG\xa0\xe6;\x80\x22\x9b\ + \x83\xd7\x0d *C\xa0\x1bn\xeb\xee\x87P%\x8b\ +j<><\x1ak\xd5<><\x1aS\xe8kB\xd6\ +w\x80\x10\x8d\x1cP\x96\xa61\xdbj\x00Q\xc9\x08\xec\ +t\xeaQ\xdeM\xe3Z\x8a\xf7\xf7\xf7\x9dH\xb4w\x17\ +4\x13\x8e\xf6\xd4\xea\xd5J\xd1\x8f\xb9\x99\xb4\x1f\x81<\ +3\x0c}\xf8yui\xd7w\x00\x80z\xb5\xb2\x17\xee\ +\xea>\x06\xde\x84\xa3=\x07^C\x9c\x98\xf3^\x90\x17\ +[+\xf9\x8f\x97i=\xb5\xe3D2\xfd\x5c\xd1\x97\x88\ +~R\xd1\xe9K\xdb\xb1J\x06\x95\xfb\x22:\xb5\xb5\xb2\ +\xf0\x9a+\xdaqK\x03\x89\xc0\xb6\x8a\xae\x09\x1c\xc0\xe9\ +US\x19R\xe8\x13\xd8\x11C\x9f\xde\xe4@\xf2\x17\xcb\ +\xb2\x82\x87\xd2a\x9f\xd4v\x198?\x92\x81n4!\ +\xdb\xa9Gy?#Y\x9b6m\xfe\x00\x0aI\xe7\x8d\ +\x0aU\xe0c\x00\x00\x00\x00IEND\xaeB`\x82\ +\ +\x00\x00\x00\x9f\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\ +\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09p\ +HYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ +\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x08\x14\x1f\xf9\ +#\xd9\x0b\x00\x00\x00#IDAT\x08\xd7c`\xc0\ +\x0d\xe6|\x80\xb1\x18\x91\x05R\x04\xe0B\x08\x15)\x02\ +\x0c\x0c\x8c\xc8\x02\x08\x95h\x00\x00\xac\xac\x07\x90Ne\ +4\xac\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x01\xa4\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01VIDATX\x85\xed\ +\x97Aj\xc2@\x14\x86\xbfg\x8a.\xab\xd4\xc63d\ +\xa3]y\x82\x82\xde\xc1SXt\xd7v\xa1K\x83\xf6\ +\x12\x9e\xa1\x14z\x82\xac\xd4.r\x06E\xd0.\x15\x92\ +\xd7\x851H\xd2t\xd1&(4\xdfrf\x98\xff\xe3\ +\x0d3\xbc\x81\xff\x8eD\x07L{\xd6R)<\xa8\xd2\ +\x04\xca)\xe5lEpD\xfd\xf1\xaaw\xf7\x96(p\ +c/\x86\x02\x8f\xc0\x0e\xd4E\xe53\x95x\xd1k\x10\ +\x0b(\xa1\x0c\xd7\xfd\xfasL\xe0v\xe3\xe2B\x92\xc7\xebf\ +\x1e2\x88\xc8\x98\xaa\xce\x88\xc8\x04\xb0\xef\x9c{x\x99\ +\x0b\xc9o\xc20\x1ci\xb7\xdbsy\xb6O\xf1\xe7J\ +\xb6\xad\xaa\x8dj\xb5\xbaQf%\x1b2d\xc8/\xff\ +B\xe0?O\xfa\x9f\x03\x00\x00\x00\x00IEND\xae\ +B`\x82\ +" + +qt_resource_name = b"\ +\x00\x09\ +\x09_\x97\x13\ +\x00q\ +\x00s\x00s\x00_\x00i\x00c\x00o\x00n\x00s\ +\x00\x0a\ +\x09$M%\ +\x00q\ +\x00d\x00a\x00r\x00k\x00s\x00t\x00y\x00l\x00e\ +\x00\x09\ +\x00(\xad#\ +\x00s\ +\x00t\x00y\x00l\x00e\x00.\x00q\x00s\x00s\ +\x00\x02\ +\x00\x00\x07\x83\ +\x00r\ +\x00c\ +\x00\x11\ +\x0a\xe5l\x07\ +\x00r\ +\x00a\x00d\x00i\x00o\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00.\x00p\x00n\x00g\ +\ +\x00\x0f\ +\x0c\xe2hg\ +\x00t\ +\x00r\x00a\x00n\x00s\x00p\x00a\x00r\x00e\x00n\x00t\x00.\x00p\x00n\x00g\ +\x00\x14\ +\x06^,\x07\ +\x00b\ +\x00r\x00a\x00n\x00c\x00h\x00_\x00c\x00l\x00o\x00s\x00e\x00d\x00-\x00o\x00n\x00.\ +\x00p\x00n\x00g\ +\x00\x1c\ +\x08?\xdag\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\ +\x00d\x00_\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\ +\x00\x1f\ +\x0a\xae'G\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\ +\x00d\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x01\xf4\x81G\ +\x00c\ +\x00l\x00o\x00s\x00e\x00-\x00h\x00o\x00v\x00e\x00r\x00.\x00p\x00n\x00g\ +\x00\x14\ +\x0b\xc5\xd7\xc7\ +\x00s\ +\x00t\x00y\x00l\x00e\x00s\x00h\x00e\x00e\x00t\x00-\x00v\x00l\x00i\x00n\x00e\x00.\ +\x00p\x00n\x00g\ +\x00\x1a\ +\x01!\xebG\ +\x00s\ +\x00t\x00y\x00l\x00e\x00s\x00h\x00e\x00e\x00t\x00-\x00b\x00r\x00a\x00n\x00c\x00h\ +\x00-\x00m\x00o\x00r\x00e\x00.\x00p\x00n\x00g\ +\x00\x0c\ +\x06A@\x87\ +\x00s\ +\x00i\x00z\x00e\x00g\x00r\x00i\x00p\x00.\x00p\x00n\x00g\ +\x00\x0a\ +\x05\x95\xde'\ +\x00u\ +\x00n\x00d\x00o\x00c\x00k\x00.\x00p\x00n\x00g\ +\x00\x11\ +\x08\x8cj\xa7\ +\x00H\ +\x00s\x00e\x00p\x00a\x00r\x00t\x00o\x00o\x00l\x00b\x00a\x00r\x00.\x00p\x00n\x00g\ +\ +\x00\x11\ +\x08\x90\x94g\ +\x00c\ +\x00l\x00o\x00s\x00e\x00-\x00p\x00r\x00e\x00s\x00s\x00e\x00d\x00.\x00p\x00n\x00g\ +\ +\x00\x10\ +\x01\x07J\xa7\ +\x00V\ +\x00m\x00o\x00v\x00e\x00t\x00o\x00o\x00l\x00b\x00a\x00r\x00.\x00p\x00n\x00g\ +\x00\x17\ +\x0f\x1e\x9bG\ +\x00r\ +\x00a\x00d\x00i\x00o\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00f\x00o\x00c\ +\x00u\x00s\x00.\x00p\x00n\x00g\ +\x00\x1d\ +\x09\x07\x81\x07\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\ +\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x14\ +\x07\xec\xd1\xc7\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00.\ +\x00p\x00n\x00g\ +\x00\x0f\ +\x02\x9f\x05\x87\ +\x00r\ +\x00i\x00g\x00h\x00t\x00_\x00a\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\ +\x00\x19\ +\x08>\xcc\x07\ +\x00s\ +\x00t\x00y\x00l\x00e\x00s\x00h\x00e\x00e\x00t\x00-\x00b\x00r\x00a\x00n\x00c\x00h\ +\x00-\x00e\x00n\x00d\x00.\x00p\x00n\x00g\ +\x00\x1a\ +\x01\x87\xaeg\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00i\x00n\x00d\x00e\x00t\x00e\x00r\x00m\ +\x00i\x00n\x00a\x00t\x00e\x00.\x00p\x00n\x00g\ +\x00\x1a\ +\x05\x11\xe0\xe7\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\ +\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\ +\x00\x0f\ +\x06S%\xa7\ +\x00b\ +\x00r\x00a\x00n\x00c\x00h\x00_\x00o\x00p\x00e\x00n\x00.\x00p\x00n\x00g\ +\x00\x17\ +\x0c\xabQ\x07\ +\x00d\ +\x00o\x00w\x00n\x00_\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00i\x00s\x00a\x00b\x00l\ +\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x10\ +\x01\x00\xca\xa7\ +\x00H\ +\x00m\x00o\x00v\x00e\x00t\x00o\x00o\x00l\x00b\x00a\x00r\x00.\x00p\x00n\x00g\ +\x00\x0e\ +\x0e\xde\xfa\xc7\ +\x00l\ +\x00e\x00f\x00t\x00_\x00a\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\ +\x00\x19\ +\x0bYn\x87\ +\x00r\ +\x00a\x00d\x00i\x00o\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00f\ +\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\ +\x00\x12\ +\x07\x8f\x9d'\ +\x00b\ +\x00r\x00a\x00n\x00c\x00h\x00_\x00o\x00p\x00e\x00n\x00-\x00o\x00n\x00.\x00p\x00n\ +\x00g\ +\x00\x1a\ +\x0e\xbc\xc3g\ +\x00r\ +\x00a\x00d\x00i\x00o\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00d\x00i\x00s\ +\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x11\ +\x08\xc4j\xa7\ +\x00V\ +\x00s\x00e\x00p\x00a\x00r\x00t\x00o\x00o\x00l\x00b\x00a\x00r\x00.\x00p\x00n\x00g\ +\ +\x00\x18\ +\x03\x8e\xdeg\ +\x00r\ +\x00i\x00g\x00h\x00t\x00_\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00i\x00s\x00a\x00b\ +\x00l\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x09\ +\x06\x98\x83'\ +\x00c\ +\x00l\x00o\x00s\x00e\x00.\x00p\x00n\x00g\ +\x00\x11\ +\x0b\xda0\xa7\ +\x00b\ +\x00r\x00a\x00n\x00c\x00h\x00_\x00c\x00l\x00o\x00s\x00e\x00d\x00.\x00p\x00n\x00g\ +\ +\x00\x16\ +\x01u\xcc\x87\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\ +\x00d\x00.\x00p\x00n\x00g\ +\x00\x0e\ +\x04\xa2\xfc\xa7\ +\x00d\ +\x00o\x00w\x00n\x00_\x00a\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\ +\x00\x0c\ +\x06\xe6\xe6g\ +\x00u\ +\x00p\x00_\x00a\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\ +\x00\x1c\ +\x01\xe0J\x07\ +\x00r\ +\x00a\x00d\x00i\x00o\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00d\ +\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x15\ +\x0f\xf3\xc0\x07\ +\x00u\ +\x00p\x00_\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\ +\x00.\x00p\x00n\x00g\ +\x00 \ +\x09\xd7\x1f\xa7\ +\x00c\ +\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00i\x00n\x00d\x00e\x00t\x00e\x00r\x00m\ +\x00i\x00n\x00a\x00t\x00e\x00_\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\ +\x00\x17\ +\x0ce\xce\x07\ +\x00l\ +\x00e\x00f\x00t\x00_\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00i\x00s\x00a\x00b\x00l\ +\x00e\x00d\x00.\x00p\x00n\x00g\ +\x00\x13\ +\x08\xc8\x96\xe7\ +\x00r\ +\x00a\x00d\x00i\x00o\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00.\x00p\ +\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ +\x00\x00\x00\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00+\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ +\x00\x00\x00J\x00\x02\x00\x00\x00'\x00\x00\x00\x04\ +\x00\x00\x04T\x00\x00\x00\x00\x00\x01\x00\x00\xcf'\ +\x00\x00\x02d\x00\x00\x00\x00\x00\x01\x00\x00\xb7\x81\ +\x00\x00\x01\xa2\x00\x00\x00\x00\x00\x01\x00\x00\xb1,\ +\x00\x00\x05\xd6\x00\x00\x00\x00\x00\x01\x00\x00\xe5h\ +\x00\x00\x03\x88\x00\x00\x00\x00\x00\x01\x00\x00\xca\x81\ +\x00\x00\x06H\x00\x00\x00\x00\x00\x01\x00\x00\xe8D\ +\x00\x00\x01P\x00\x00\x00\x00\x00\x01\x00\x00\xae\x00\ +\x00\x00\x03,\x00\x00\x00\x00\x00\x01\x00\x00\xc8\xf9\ +\x00\x00\x05`\x00\x00\x00\x00\x00\x01\x00\x00\xe1\xf1\ +\x00\x00\x06\x08\x00\x00\x00\x00\x00\x01\x00\x00\xe6\xf9\ +\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00\xcc-\ +\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\xb2k\ +\x00\x00\x01\xdc\x00\x00\x00\x00\x00\x01\x00\x00\xb1\xe6\ +\x00\x00\x03\xfc\x00\x00\x00\x00\x00\x01\x00\x00\xcd\xd3\ +\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xaaU\ +\x00\x00\x05\x96\x00\x00\x00\x00\x00\x01\x00\x00\xe2\x95\ +\x00\x00\x06*\x00\x00\x00\x00\x00\x01\x00\x00\xe7\xa2\ +\x00\x00\x04\xd4\x00\x00\x00\x00\x00\x01\x00\x00\xd3 \ +\x00\x00\x02\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xc7S\ +\x00\x00\x03P\x00\x00\x00\x00\x00\x01\x00\x00\xc9\x9d\ +\x00\x00\x00\xce\x00\x00\x00\x00\x00\x01\x00\x00\xaa\xec\ +\x00\x00\x02\x14\x00\x00\x00\x00\x00\x01\x00\x00\xb4\x98\ +\x00\x00\x02<\x00\x00\x00\x00\x00\x01\x00\x00\xb5H\ +\x00\x00\x058\x00\x00\x00\x00\x00\x01\x00\x00\xd6\xd6\ +\x00\x00\x070\x00\x00\x00\x00\x00\x01\x00\x00\xed\xde\ +\x00\x00\x02\xbe\x00\x00\x00\x00\x00\x01\x00\x00\xc5\xb2\ +\x00\x00\x06\xb6\x00\x00\x00\x00\x00\x01\x00\x00\xeb\x8c\ +\x00\x00\x01\x0c\x00\x00\x00\x00\x00\x01\x00\x00\xacz\ +\x00\x00\x00T\x00\x00\x00\x00\x00\x01\x00\x00\xa6\xa9\ +\x00\x00\x04\x9c\x00\x00\x00\x00\x00\x01\x00\x00\xd0\xb1\ +\x00\x00\x01t\x00\x00\x00\x00\x00\x01\x00\x00\xb09\ +\x00\x00\x05\xae\x00\x00\x00\x00\x00\x01\x00\x00\xe4\xc4\ +\x00\x00\x06\xfc\x00\x00\x00\x00\x00\x01\x00\x00\xed4\ +\x00\x00\x04 \x00\x00\x00\x00\x00\x01\x00\x00\xce}\ +\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00\xa9\x8e\ +\x00\x00\x04\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xd3\xba\ +\x00\x00\x04z\x00\x00\x00\x00\x00\x01\x00\x00\xd0\x07\ +\x00\x00\x02\x8a\x00\x00\x00\x00\x00\x01\x00\x00\xc2\xa4\ +\x00\x00\x06\x86\x00\x00\x00\x00\x00\x01\x00\x00\xea\xe9\ +\x00\x00\x002\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() diff --git a/themes/qdarkstyle/pyside_style_rc.py b/themes/qdarkstyle/pyside_style_rc.py new file mode 100644 index 0000000..bc58eda --- /dev/null +++ b/themes/qdarkstyle/pyside_style_rc.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created: qua mai 1 18:37:33 2019 +# by: The Resource Compiler for PySide (Qt v4.8.7) +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore + +qt_resource_data = b"\x00\x00\xa6\xa5/* QDarkStyleSheet --------------------------------------------------------\x0a\x0aThis is the main style sheet, the palette has nine main colors.\x0aIt is based on three selecting colors, three greyish (background) colors\x0aplus three whitish (foreground) colors. Each set of widgets of the same\x0atype have a header like this:\x0a\x0a ------------------\x0a GroupName --------\x0a ------------------\x0a\x0aAnd each widget is separated with a header like this:\x0a\x0a QWidgetName ------\x0a\x0aThis makes more easy to find and change some css field. The basic\x0aconfiguration is described bellow.\x0a\x0a SELECTION ------------\x0a\x0a sel_light #179AE0 #148CD2 (selection/hover/active)\x0a sel_normal #3375A3 #1464A0 (selected)\x0a sel_dark #18465D #14506E (selected disabled)\x0a\x0a FOREGROUND -----------\x0a\x0a for_light #EFF0F1 #F0F0F0 (texts/labels)\x0a for_normal #AAAAAA (not used yet)\x0a for_dark #505F69 #787878 (disabled texts)\x0a\x0a BACKGROUND -----------\x0a\x0a bac_light #4D545B #505F69 (unpressed)\x0a bac_normal #31363B #32414B (border, disabled, pressed, checked, toolbars, menus)\x0a bac_dark #232629 #19232D (background)\x0a\x0aIf a stranger configuration is required because of a bugfix or anything\x0aelse, keep the comment on that line to nobodys changed it, including the\x0aissue number.\x0a--------------------------------------------------------------------------- */\x0a\x0a\x0a\x0a/* QWidget ---------------------------------------------------------------- */\x0a\x0aQWidget {\x0a background-color: #19232D;\x0a border: 0px solid #32414B;\x0a padding: 0px;\x0a color: #F0F0F0;\x0a selection-background-color: #1464A0;\x0a selection-color: #F0F0F0;\x0a}\x0a\x0aQWidget:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a selection-background-color: #14506E;\x0a selection-color: #787878;\x0a}\x0a\x0aQWidget:item:selected {\x0a background-color: #1464A0;\x0a}\x0a\x0aQWidget:item:hover {\x0a background-color: #148CD2;\x0a color: #32414B;\x0a}\x0a\x0a/* QMainWindow ------------------------------------------------------------ */\x0a/* This adjusts the splitter in the dock widget, not qsplitter */\x0a\x0a\x0aQMainWindow::separator {\x0a background-color: #32414B;\x0a border: 0 solid #19232D;\x0a spacing: 0;\x0a padding: 2px;\x0a}\x0a\x0aQMainWindow::separator:hover {\x0a background-color: #505F69;\x0a border: 0px solid #148CD2;\x0a}\x0a\x0aQMainWindow::separator:horizontal {\x0a width: 5px;\x0a margin-top: 2px;\x0a margin-bottom: 2px;\x0a image: url(:/qss_icons/rc/Vsepartoolbar.png);\x0a}\x0a\x0aQMainWindow::separator:vertical {\x0a height: 5px;\x0a margin-left: 2px;\x0a margin-right: 2px;\x0a image: url(:/qss_icons/rc/Hsepartoolbar.png);\x0a}\x0a\x0a/* QToolTip --------------------------------------------------------------- */\x0a\x0aQToolTip {\x0a background-color: #148CD2;\x0a border: 1px solid #19232D;\x0a color: #19232D;\x0a padding: 0; /*remove padding, for fix combo box tooltip*/\x0a opacity: 230; /*reducing transparency to read better*/\x0a}\x0a\x0a/* QStatusBar ------------------------------------------------------------- */\x0a\x0aQStatusBar {\x0a border: 1px solid #32414B;\x0a background: #32414B; /*fixes spyder #9120,#9121*/\x0a}\x0a\x0aQStatusBar QToolTip {\x0a background-color: #148CD2;\x0a border: 1px solid #19232D;\x0a color: #19232D;\x0a padding: 0; /*remove padding, for fix combo box tooltip*/\x0a opacity: 230; /*reducing transparency to read better*/\x0a}\x0a\x0aQStatusBar QLabel {\x0a background-color: transparent; /*fixes spyder #9120,#9121*/\x0a}\x0a\x0a/* QCheckBox -------------------------------------------------------------- */\x0a\x0aQCheckBox {\x0a background-color: #19232D;\x0a color: #F0F0F0;\x0a spacing: 4px;\x0a outline: none;\x0a padding-top: 4px;\x0a padding-bottom: 4px;\x0a}\x0a\x0aQCheckBox:focus {\x0a border: none;\x0a}\x0a\x0aQCheckBox QWidget:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a}\x0a\x0aQCheckBox::indicator {\x0a margin-left: 4px;\x0a width: 16px;\x0a height: 16px;\x0a}\x0a\x0aQCheckBox::indicator:unchecked {\x0a image: url(:/qss_icons/rc/checkbox_unchecked.png);\x0a}\x0a\x0aQCheckBox::indicator:unchecked:hover,\x0aQCheckBox::indicator:unchecked:focus,\x0aQCheckBox::indicator:unchecked:pressed {\x0a border: none;\x0a image: url(:/qss_icons/rc/checkbox_unchecked_focus.png);\x0a}\x0a\x0aQCheckBox::indicator:unchecked:disabled {\x0a image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png);\x0a}\x0a\x0aQCheckBox::indicator:checked {\x0a image: url(:/qss_icons/rc/checkbox_checked.png);\x0a}\x0a\x0aQCheckBox::indicator:checked:hover,\x0aQCheckBox::indicator:checked:focus,\x0aQCheckBox::indicator:checked:pressed {\x0a border: none;\x0a image: url(:/qss_icons/rc/checkbox_checked_focus.png);\x0a}\x0a\x0aQCheckBox::indicator:checked:disabled{\x0a image: url(:/qss_icons/rc/checkbox_checked_disabled.png);\x0a}\x0a\x0aQCheckBox::indicator:indeterminate {\x0a image: url(:/qss_icons/rc/checkbox_indeterminate.png);\x0a}\x0a\x0aQCheckBox::indicator:indeterminate:disabled {\x0a image: url(:/qss_icons/rc/checkbox_indeterminate_disabled.png);\x0a}\x0a\x0aQCheckBox::indicator:indeterminate:focus,\x0aQCheckBox::indicator:indeterminate:hover,\x0aQCheckBox::indicator:indeterminate:pressed {\x0a image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png);\x0a}\x0a\x0a/* QGroupBox -------------------------------------------------------------- */\x0a\x0aQGroupBox {\x0a font-weight: bold;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a padding: 4px;\x0a margin-top: 16px;\x0a}\x0a\x0a\x0a\x0aQGroupBox::title {\x0a subcontrol-origin: margin;\x0a subcontrol-position: top left;\x0a left: 3px;\x0a padding-left: 3px;\x0a padding-right: 5px;\x0a padding-top: 8px;\x0a padding-bottom: 16px;\x0a}\x0a\x0aQGroupBox::indicator {\x0a margin-left: 4px;\x0a width: 16px;\x0a height: 16px;\x0a}\x0a\x0aQGroupBox::indicator {\x0a margin-left: 2px;\x0a}\x0a\x0aQGroupBox::indicator:unchecked:hover,\x0aQGroupBox::indicator:unchecked:focus,\x0aQGroupBox::indicator:unchecked:pressed {\x0a border: none;\x0a image: url(:/qss_icons/rc/checkbox_unchecked_focus.png);\x0a}\x0a\x0aQGroupBox::indicator:checked:hover,\x0aQGroupBox::indicator:checked:focus,\x0aQGroupBox::indicator:checked:pressed {\x0a border: none;\x0a image: url(:/qss_icons/rc/checkbox_checked_focus.png);\x0a}\x0a\x0aQGroupBox::indicator:checked:disabled {\x0a image: url(:/qss_icons/rc/checkbox_checked_disabled.png);\x0a}\x0a\x0aQGroupBox::indicator:unchecked:disabled {\x0a image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png);\x0a}\x0a\x0a/* QRadioButton ----------------------------------------------------------- */\x0a\x0aQRadioButton {\x0a background-color: #19232D;\x0a color: #F0F0F0;\x0a spacing: 0;\x0a padding: 0;\x0a border: none;\x0a outline: none;\x0a}\x0a\x0aQRadioButton:focus {\x0a border: none;\x0a}\x0a\x0aQRadioButton:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a border: none;\x0a outline: none;\x0a}\x0a\x0aQRadioButton QWidget {\x0a background-color: #19232D;\x0a color: #F0F0F0;\x0a spacing: 0px;\x0a padding: 0px;\x0a outline: none;\x0a border: none;\x0a}\x0a\x0aQRadioButton::indicator {\x0a border: none;\x0a outline: none;\x0a margin-bottom: 2px;\x0a width: 25px;\x0a height: 25px;\x0a}\x0a\x0aQRadioButton::indicator:unchecked {\x0a image: url(:/qss_icons/rc/radio_unchecked.png);\x0a}\x0a\x0aQRadioButton::indicator:unchecked:hover,\x0aQRadioButton::indicator:unchecked:focus,\x0aQRadioButton::indicator:unchecked:pressed {\x0a border: none;\x0a outline: none;\x0a image: url(:/qss_icons/rc/radio_unchecked_focus.png);\x0a}\x0a\x0aQRadioButton::indicator:checked {\x0a border: none;\x0a outline: none;\x0a image: url(:/qss_icons/rc/radio_checked.png);\x0a}\x0a\x0aQRadioButton::indicator:checked:hover,\x0aQRadioButton::indicator:checked:focus,\x0aQRadioButton::indicator:checked:pressed {\x0a border: none;\x0a outline: none;\x0a image: url(:/qss_icons/rc/radio_checked_focus.png);\x0a}\x0a\x0aQRadioButton::indicator:checked:disabled {\x0a outline: none;\x0a image: url(:/qss_icons/rc/radio_checked_disabled.png);\x0a}\x0a\x0aQRadioButton::indicator:unchecked:disabled {\x0a image: url(:/qss_icons/rc/radio_unchecked_disabled.png);\x0a}\x0a\x0a/* QMenuBar --------------------------------------------------------------- */\x0a\x0aQMenuBar {\x0a background-color: #32414B;\x0a padding: 2px;\x0a border: 1px solid #19232D;\x0a color: #F0F0F0;\x0a}\x0a\x0aQMenuBar:focus {\x0a border: 1px solid #148CD2;\x0a}\x0a\x0aQMenuBar::item {\x0a background: transparent;\x0a padding: 4px;\x0a}\x0a\x0aQMenuBar::item:selected {\x0a padding: 4px;\x0a background: transparent;\x0a border: 0px solid #32414B;\x0a}\x0a\x0aQMenuBar::item:pressed {\x0a padding: 4px;\x0a border: 0px solid #32414B;\x0a background-color: #148CD2;\x0a color: #F0F0F0;\x0a margin-bottom: 0px;\x0a padding-bottom: 0px;\x0a}\x0a\x0a/* QMenu ------------------------------------------------------------------ */\x0a\x0aQMenu {\x0a border: 0px solid #32414B;\x0a color: #F0F0F0;\x0a margin: 0px;\x0a}\x0a\x0aQMenu::separator {\x0a height: 2px;\x0a background-color: #505F69;\x0a color: #F0F0F0;\x0a padding-left: 4px;\x0a margin-left: 2px;\x0a margin-right: 2px;\x0a}\x0a\x0aQMenu::icon {\x0a margin: 0px;\x0a padding-left:4px;\x0a}\x0a\x0aQMenu::item {\x0a padding: 4px 24px 4px 24px;\x0a border: 1px transparent #32414B; /* reserve space for selection border */\x0a}\x0a\x0aQMenu::item:selected {\x0a color: #F0F0F0;\x0a}\x0a\x0a\x0a\x0aQMenu::indicator {\x0a width: 12px;\x0a height: 12px;\x0a padding-left:6px;\x0a}\x0a\x0a/* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */\x0a\x0aQMenu::indicator:non-exclusive:unchecked {\x0a image: url(:/qss_icons/rc/checkbox_unchecked.png);\x0a}\x0a\x0aQMenu::indicator:non-exclusive:unchecked:selected {\x0a image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png);\x0a}\x0a\x0aQMenu::indicator:non-exclusive:checked {\x0a image: url(:/qss_icons/rc/checkbox_checked.png);\x0a}\x0a\x0aQMenu::indicator:non-exclusive:checked:selected {\x0a image: url(:/qss_icons/rc/checkbox_checked_disabled.png);\x0a}\x0a\x0a/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */\x0a\x0aQMenu::indicator:exclusive:unchecked {\x0a image: url(:/qss_icons/rc/radio_unchecked.png);\x0a}\x0a\x0aQMenu::indicator:exclusive:unchecked:selected {\x0a image: url(:/qss_icons/rc/radio_unchecked_disabled.png);\x0a}\x0a\x0aQMenu::indicator:exclusive:checked {\x0a image: url(:/qss_icons/rc/radio_checked.png);\x0a}\x0a\x0aQMenu::indicator:exclusive:checked:selected {\x0a image: url(:/qss_icons/rc/radio_checked_disabled.png);\x0a}\x0a\x0aQMenu::right-arrow {\x0a margin: 5px;\x0a image: url(:/qss_icons/rc/right_arrow.png)\x0a}\x0a\x0a/* QAbstractItemView ------------------------------------------------------ */\x0a\x0aQAbstractItemView {\x0a alternate-background-color: #19232D;\x0a color: #F0F0F0;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a}\x0a\x0aQAbstractItemView QLineEdit {\x0a padding: 2px;\x0a}\x0a\x0a/* QAbstractScrollArea ---------------------------------------------------- */\x0a\x0aQAbstractScrollArea {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a padding: 4px;\x0a color: #F0F0F0;\x0a}\x0a\x0aQAbstractScrollArea:disabled {\x0a color: #787878;\x0a}\x0a\x0a/* QScrollArea ------------------------------------------------------------ */\x0a\x0aQScrollArea QWidget QWidget:disabled {\x0a background-color: #19232D;\x0a}\x0a\x0a/* QScrollBar ------------------------------------------------------------- */\x0a\x0aQScrollBar:horizontal {\x0a height: 16px;\x0a margin: 2px 16px 2px 16px;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a background-color: #19232D;\x0a}\x0a\x0aQScrollBar::handle:horizontal {\x0a background-color: #787878;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a min-width: 8px;\x0a\x0a}\x0a\x0aQScrollBar::handle:horizontal:hover {\x0a background-color: #148CD2;\x0a border: 1px solid #148CD2;\x0a border-radius: 4px;\x0a min-width: 8px;\x0a}\x0a\x0aQScrollBar::add-line:horizontal {\x0a margin: 0px 0px 0px 0px;\x0a border-image: url(:/qss_icons/rc/right_arrow_disabled.png);\x0a width: 10px;\x0a height: 10px;\x0a subcontrol-position: right;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::sub-line:horizontal {\x0a margin: 0px 3px 0px 3px;\x0a border-image: url(:/qss_icons/rc/left_arrow_disabled.png);\x0a height: 10px;\x0a width: 10px;\x0a subcontrol-position: left;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::add-line:horizontal:hover,\x0aQScrollBar::add-line:horizontal:on {\x0a border-image: url(:/qss_icons/rc/right_arrow.png);\x0a height: 10px;\x0a width: 10px;\x0a subcontrol-position: right;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::sub-line:horizontal:hover,\x0aQScrollBar::sub-line:horizontal:on {\x0a border-image: url(:/qss_icons/rc/left_arrow.png);\x0a height: 10px;\x0a width: 10px;\x0a subcontrol-position: left;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::up-arrow:horizontal,\x0aQScrollBar::down-arrow:horizontal {\x0a background: none;\x0a}\x0a\x0aQScrollBar::add-page:horizontal,\x0aQScrollBar::sub-page:horizontal {\x0a background: none;\x0a}\x0a\x0aQScrollBar:vertical {\x0a background-color: #19232D;\x0a width: 16px;\x0a margin: 16px 2px 16px 2px;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a}\x0a\x0aQScrollBar::handle:vertical {\x0a background-color: #787878;\x0a border: 1px solid #32414B;\x0a min-height: 8px;\x0a border-radius: 4px;\x0a}\x0a\x0aQScrollBar::handle:vertical:hover {\x0a background-color: #148CD2;\x0a border: 1px solid #148CD2;\x0a border-radius: 4px;\x0a min-height: 8px;\x0a\x0a}\x0a\x0aQScrollBar::sub-line:vertical {\x0a margin: 3px 0px 3px 0px;\x0a border-image: url(:/qss_icons/rc/up_arrow_disabled.png);\x0a height: 10px;\x0a width: 10px;\x0a subcontrol-position: top;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::add-line:vertical {\x0a margin: 3px 0px 3px 0px;\x0a border-image: url(:/qss_icons/rc/down_arrow_disabled.png);\x0a height: 10px;\x0a width: 10px;\x0a subcontrol-position: bottom;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::sub-line:vertical:hover,\x0aQScrollBar::sub-line:vertical:on {\x0a border-image: url(:/qss_icons/rc/up_arrow.png);\x0a height: 10px;\x0a width: 10px;\x0a subcontrol-position: top;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::add-line:vertical:hover,\x0aQScrollBar::add-line:vertical:on {\x0a border-image: url(:/qss_icons/rc/down_arrow.png);\x0a height: 10px;\x0a width: 10px;\x0a subcontrol-position: bottom;\x0a subcontrol-origin: margin;\x0a}\x0a\x0aQScrollBar::up-arrow:vertical,\x0aQScrollBar::down-arrow:vertical {\x0a background: none;\x0a}\x0a\x0aQScrollBar::add-page:vertical,\x0aQScrollBar::sub-page:vertical {\x0a background: none;\x0a}\x0a\x0a/* QTextEdit--------------------------------------------------------------- */\x0a\x0aQTextEdit {\x0a background-color: #19232D;\x0a color: #F0F0F0;\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQTextEdit:hover {\x0a border: 1px solid #148CD2;\x0a color: #F0F0F0;\x0a}\x0a\x0aQTextEdit:selected {\x0a background: #1464A0;\x0a color: #32414B;\x0a}\x0a\x0a/* QPlainTextEdit --------------------------------------------------------- */\x0a\x0aQPlainTextEdit {\x0a background-color: #19232D;\x0a color: #F0F0F0;\x0a border-radius: 4px;\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQPlainTextEdit:hover {\x0a border: 1px solid #148CD2;\x0a color: #F0F0F0;\x0a}\x0a\x0aQPlainTextEdit:selected {\x0a background: #1464A0;\x0a color: #32414B;\x0a}\x0a\x0a/* QSizeGrip --------------------------------------------------------------- */\x0a\x0aQSizeGrip {\x0a image: url(:/qss_icons/rc/sizegrip.png);\x0a width: 12px;\x0a height: 12px;\x0a}\x0a\x0a/* QStackedWidget --------------------------------------------------------- */\x0a\x0aQStackedWidget {\x0a padding: 4px;\x0a border: 1px solid #32414B;\x0a border: 1px solid #19232D;\x0a}\x0a\x0a/* QToolBar --------------------------------------------------------------- */\x0a\x0aQToolBar {\x0a background-color: #32414B;\x0a border-bottom: 1px solid #19232D;\x0a padding: 2px;\x0a font-weight: bold;\x0a}\x0a\x0aQToolBar QToolButton{\x0a background-color: #32414B;\x0a}\x0a\x0aQToolBar::handle:horizontal {\x0a width: 6px;\x0a image: url(:/qss_icons/rc/Hmovetoolbar.png);\x0a}\x0a\x0aQToolBar::handle:vertical {\x0a height: 6px;\x0a image: url(:/qss_icons/rc/Vmovetoolbar.png);\x0a}\x0a\x0aQToolBar::separator:horizontal {\x0a width: 3px;\x0a image: url(:/qss_icons/rc/Hsepartoolbar.png);\x0a}\x0a\x0aQToolBar::separator:vertical {\x0a height: 3px;\x0a image: url(:/qss_icons/rc/Vsepartoolbar.png);\x0a}\x0a\x0aQToolButton#qt_toolbar_ext_button {\x0a background: #32414B;\x0a border: 0px;\x0a color: #F0F0F0;\x0a image: url(:/qss_icons/rc/right_arrow.png);\x0a}\x0a\x0a/* QAbstractSpinBox ------------------------------------------------------- */\x0a\x0aQAbstractSpinBox {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a padding-top: 2px; /* This fix 103, 111*/\x0a padding-bottom: 2px; /* This fix 103, 111*/\x0a padding-left: 4px;\x0a padding-right: 4px;\x0a border-radius: 4px;\x0a /* min-width: 5px; removed to fix 109 */\x0a}\x0a\x0aQAbstractSpinBox:up-button {\x0a background-color: transparent #19232D;\x0a subcontrol-origin: border;\x0a subcontrol-position: top right;\x0a border-left: 1px solid #32414B;\x0a margin: 1px;\x0a}\x0a\x0aQAbstractSpinBox::up-arrow,\x0aQAbstractSpinBox::up-arrow:disabled,\x0aQAbstractSpinBox::up-arrow:off {\x0a image: url(:/qss_icons/rc/up_arrow_disabled.png);\x0a width: 9px;\x0a height: 9px;\x0a}\x0a\x0aQAbstractSpinBox::up-arrow:hover {\x0a image: url(:/qss_icons/rc/up_arrow.png);\x0a}\x0a\x0aQAbstractSpinBox:down-button {\x0a background-color: transparent #19232D;\x0a subcontrol-origin: border;\x0a subcontrol-position: bottom right;\x0a border-left: 1px solid #32414B;\x0a margin: 1px;\x0a}\x0a\x0aQAbstractSpinBox::down-arrow,\x0aQAbstractSpinBox::down-arrow:disabled,\x0aQAbstractSpinBox::down-arrow:off {\x0a image: url(:/qss_icons/rc/down_arrow_disabled.png);\x0a width: 9px;\x0a height: 9px;\x0a}\x0a\x0aQAbstractSpinBox::down-arrow:hover {\x0a image: url(:/qss_icons/rc/down_arrow.png);\x0a}\x0a\x0aQAbstractSpinBox:hover{\x0a border: 1px solid #148CD2;\x0a color: #F0F0F0;\x0a}\x0a\x0aQAbstractSpinBox:selected {\x0a background: #1464A0;\x0a color: #32414B;\x0a}\x0a\x0a/* ------------------------------------------------------------------------ */\x0a/* DISPLAYS --------------------------------------------------------------- */\x0a/* ------------------------------------------------------------------------ */\x0a\x0a/* QLabel ----------------------------------------------------------------- */\x0a\x0aQLabel {\x0a background-color: #19232D;\x0a border: 0px solid #32414B;\x0a padding: 2px;\x0a margin: 0px;\x0a color: #F0F0F0\x0a}\x0a\x0aQLabel::disabled {\x0a background-color: #19232D;\x0a border: 0px solid #32414B;\x0a color: #787878;\x0a}\x0a\x0a/* QTextBrowser ----------------------------------------------------------- */\x0a\x0aQTextBrowser {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a border-radius: 4px;\x0a}\x0a\x0aQTextBrowser:disabled {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #787878;\x0a border-radius: 4px;\x0a}\x0a\x0aQTextBrowser:hover,\x0aQTextBrowser:!hover,\x0aQTextBrowser::selected,\x0aQTextBrowser::pressed {\x0a border: 1px solid #32414B;\x0a}\x0a\x0a/* QGraphicsView --------------------------------------------------------- */\x0a\x0aQGraphicsView {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a border-radius: 4px;\x0a}\x0a\x0aQGraphicsView:disabled {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #787878;\x0a border-radius: 4px;\x0a}\x0a\x0aQGraphicsView:hover,\x0aQGraphicsView:!hover,\x0aQGraphicsView::selected,\x0aQGraphicsView::pressed {\x0a border: 1px solid #32414B;\x0a}\x0a\x0a/* QCalendarWidget -------------------------------------------------------- */\x0a\x0aQCalendarWidget {\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a}\x0a\x0aQCalendarWidget:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a}\x0a\x0a/* QLCDNumber ------------------------------------------------------------- */\x0a\x0aQLCDNumber {\x0a background-color: #19232D;\x0a color: #F0F0F0;\x0a}\x0a\x0aQLCDNumber:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a}\x0a\x0a/* QProgressBar ----------------------------------------------------------- */\x0a\x0aQProgressBar {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a border-radius: 4px;\x0a text-align: center;\x0a}\x0a\x0aQProgressBar:disabled {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #787878;\x0a border-radius: 4px;\x0a text-align: center;\x0a}\x0a\x0aQProgressBar::chunk {\x0a background-color: #1464A0;\x0a color: #19232D;\x0a border-radius: 4px;\x0a}\x0a\x0aQProgressBar::chunk:disabled {\x0a background-color: #14506E;\x0a color: #787878;\x0a border-radius: 4px;\x0a}\x0a\x0a\x0a/* ------------------------------------------------------------------------ */\x0a/* BUTTONS ---------------------------------------------------------------- */\x0a/* ------------------------------------------------------------------------ */\x0a\x0a/* QPushButton ------------------------------------------------------------ */\x0a\x0aQPushButton {\x0a background-color: #505F69 ;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a border-radius: 4px;\x0a padding: 3px;\x0a outline: none;\x0a}\x0a\x0aQPushButton:disabled {\x0a background-color: #32414B;\x0a border: 1px solid #32414B;\x0a color: #787878;\x0a border-radius: 4px;\x0a padding: 3px;\x0a}\x0a\x0a\x0aQPushButton:checked {\x0a background-color: #32414B;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a padding: 3px;\x0a outline: none;\x0a}\x0a\x0aQPushButton:checked:disabled {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #787878;\x0a border-radius: 4px;\x0a padding: 3px;\x0a outline: none;\x0a}\x0a\x0aQPushButton::menu-indicator {\x0a subcontrol-origin: padding;\x0a subcontrol-position: bottom right;\x0a bottom: 4px;\x0a}\x0a\x0aQPushButton:pressed {\x0a background-color: #19232D;\x0a border: 1px solid #19232D;\x0a}\x0a\x0aQPushButton:hover,\x0aQPushButton:checked:hover{\x0a border: 1px solid #148CD2;\x0a color: #F0F0F0;\x0a}\x0a\x0aQPushButton:pressed:hover{\x0a border: 1px solid #1464A0;\x0a}\x0a\x0aQPushButton:selected,\x0aQPushButton:checked:selected{\x0a background: #1464A0;\x0a color: #32414B;\x0a}\x0a\x0a/* QToolButton ------------------------------------------------------------ */\x0a\x0aQToolButton {\x0a background-color: transparent;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a margin: 0px;\x0a padding: 2px;\x0a}\x0a\x0aQToolButton:checked {\x0a background-color: #19232D;\x0a border: 1px solid #19232D;\x0a}\x0a\x0aQToolButton:pressed {\x0a background-color: #19232D;\x0a border: 1px solid #19232D;\x0a\x0a}\x0a\x0aQToolButton:disabled {\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQToolButton:hover,\x0aQToolButton:checked:hover{\x0a border: 1px solid #148CD2;\x0a}\x0aQToolButton:pressed:hover{\x0a border: 1px solid #1464A0;\x0a}\x0a\x0a/* the subcontrols below are used only in the MenuButtonPopup mode */\x0a\x0aQToolButton[popupMode=\x221\x22] {\x0a padding: 2px;\x0a padding-right: 12px; /* only for MenuButtonPopup */\x0a border: 1px solid #32414B; /* make way for the popup button */\x0a border-radius: 4px;\x0a}\x0a\x0a/* The subcontrol below is used only in the InstantPopup or DelayedPopup mode */\x0a\x0aQToolButton[popupMode=\x222\x22] {\x0a padding: 2px;\x0a padding-right: 12px; /* only for InstantPopup */\x0a border: 1px solid #32414B; /* make way for the popup button */\x0a}\x0a\x0aQToolButton::menu-button {\x0a padding: 2px;\x0a border-radius: 4px;\x0a border: 1px solid #32414B;\x0a border-top-right-radius: 4px;\x0a border-bottom-right-radius: 4px;\x0a /* 16px width + 4px for border = 20px allocated above */\x0a width: 16px;\x0a outline: none;\x0a}\x0a\x0aQToolButton::menu-button:hover,\x0aQToolButton::menu-button:checked:hover {\x0a border: 1px solid #148CD2;\x0a}\x0a\x0aQToolButton::menu-indicator {\x0a image: url(:/qss_icons/rc/down_arrow.png);\x0a top: -8px; /* shift it a bit */\x0a left: -4px; /* shift it a bit */\x0a}\x0a\x0aQToolButton::menu-arrow {\x0a image: url(:/qss_icons/rc/down_arrow.png);\x0a}\x0a\x0aQToolButton::menu-arrow:open {\x0a border: 1px solid #32414B;\x0a}\x0a\x0a/* QCommandLinkButton ----------------------------------------------------- */\x0a\x0aQCommandLinkButton {\x0a background-color: transparent;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a border-radius: 4px;\x0a padding: 0px;\x0a margin: 0px;\x0a}\x0a\x0aQCommandLinkButton:disabled {\x0a background-color: transparent;\x0a color: #787878;\x0a}\x0a\x0a/* ------------------------------------------------------------------------ */\x0a/* INPUTS - NO FIELDS ----------------------------------------------------- */\x0a/* ------------------------------------------------------------------------ */\x0a\x0a/* QCombobox -------------------------------------------------------------- */\x0aQComboBox {\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a selection-background-color: #1464A0;\x0a padding-left: 4px;\x0a padding-right: 4px;\x0a min-height: 1.5em; /* fix #103, #111 */\x0a /* padding-top: 2px; removed to fix #132 */\x0a /* padding-bottom: 2px; removed to fix #132 */\x0a /* min-width: 75px; removed to fix #109 */\x0a}\x0a\x0aQComboBox QAbstractItemView {\x0a background-color: #19232d;\x0a border-radius: 4px;\x0a border: 1px solid #32414B;\x0a selection-color: #148CD2;\x0a selection-background-color: #32414B;\x0a}\x0a\x0aQComboBox:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a}\x0a\x0aQComboBox:hover{\x0a border: 1px solid #148CD2;\x0a}\x0a\x0aQComboBox:on {\x0a selection-background-color: #19232D;\x0a}\x0a\x0a/* Needed to remove indicator - fix #132 */\x0aQComboBox::indicator {\x0a background-color:transparent;\x0a selection-background-color:transparent;\x0a color:transparent;\x0a selection-color:transparent;\x0a}\x0a\x0a/* Needed to remove indicator - fix #132 */\x0aQComboBox::item:alternate {\x0a background: #19232D;\x0a}\x0a\x0aQComboBox::item:checked {\x0a font-weight: bold;\x0a}\x0a\x0aQComboBox::item:selected {\x0a border: 0px solid transparent;\x0a}\x0a\x0aQComboBox::drop-down {\x0a subcontrol-origin: padding;\x0a subcontrol-position: top right;\x0a width: 20px;\x0a border-left-width: 0px;\x0a border-left-color: #32414B;\x0a border-left-style: solid;\x0a border-top-right-radius: 3px;\x0a border-bottom-right-radius: 3px;\x0a}\x0a\x0aQComboBox::down-arrow {\x0a image: url(:/qss_icons/rc/down_arrow_disabled.png);\x0a}\x0a\x0aQComboBox::down-arrow:on,\x0aQComboBox::down-arrow:hover,\x0aQComboBox::down-arrow:focus {\x0a image: url(:/qss_icons/rc/down_arrow.png);\x0a}\x0a\x0a/* QSlider ---------------------------------------------------------------- */\x0a\x0aQSlider:disabled {\x0a background: #19232D;\x0a}\x0a\x0aQSlider:focus {\x0a border: none;\x0a}\x0a\x0aQSlider::groove:horizontal {\x0a background: #32414B;\x0a border: 1px solid #32414B;\x0a height: 4px;\x0a margin: 0px;\x0a border-radius: 4px;\x0a}\x0a\x0aQSlider::sub-page:horizontal {\x0a background: #1464A0;\x0a border: 1px solid #32414B;\x0a height: 4px;\x0a margin: 0px;\x0a border-radius: 4px;\x0a}\x0a\x0aQSlider::sub-page:horizontal:disabled {\x0a background: #14506E;\x0a}\x0a\x0aQSlider::handle:horizontal {\x0a background: #787878;\x0a border: 1px solid #32414B;\x0a width: 8px;\x0a height: 8px;\x0a margin: -8px 0;\x0a border-radius: 4px;\x0a}\x0a\x0aQSlider::handle:horizontal:hover {\x0a background: #148CD2;\x0a border: 1px solid #148CD2;\x0a}\x0a\x0aQSlider::groove:vertical {\x0a background: #32414B;\x0a border: 1px solid #32414B;\x0a width: 4px;\x0a margin: 0px;\x0a border-radius: 4px;\x0a}\x0a\x0aQSlider::sub-page:vertical {\x0a background: #1464A0;\x0a border: 1px solid #32414B;\x0a width: 4px;\x0a margin: 0px;\x0a border-radius: 4px;\x0a}\x0a\x0aQSlider::sub-page:vertical:disabled {\x0a background: #14506E;\x0a}\x0a\x0aQSlider::handle:vertical {\x0a background: #787878;\x0a border: 1px solid #32414B;\x0a width: 8px;\x0a height: 8px;\x0a margin: 0 -8px;\x0a border-radius: 4px;\x0a}\x0a\x0aQSlider::handle:vertical:hover {\x0a background: #148CD2;\x0a border: 1px solid #148CD2;\x0a}\x0a\x0a/* QLine ------------------------------------------------------------------ */\x0a\x0aQLineEdit {\x0a background-color: #19232D;\x0a padding-top: 2px; /* This QLineEdit fix 103, 111 */\x0a padding-bottom: 2px; /* This QLineEdit fix 103, 111 */\x0a padding-left: 4px;\x0a padding-right: 4px;\x0a border-style: solid;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a color: #F0F0F0;\x0a}\x0a\x0aQLineEdit:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a}\x0a\x0aQLineEdit:hover{\x0a border: 1px solid #148CD2;\x0a color: #F0F0F0;\x0a}\x0a\x0aQLineEdit:selected{\x0a background: #1464A0;\x0a color: #32414B;\x0a}\x0a\x0a/* QTabWiget -------------------------------------------------------------- */\x0a\x0aQTabWidget {\x0a padding: 2px;\x0a selection-background-color: #32414B;\x0a}\x0a\x0a\x0aQTabWidget QWidget QWidget /* add wanted borders fix #141, #126, #123 */\x0aQTabWidget QFrame {\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQTabWidget QLabel {\x0a border: 0px solid #32414B; /* label derived from frame, remove border #141 */\x0a}\x0a\x0aQTabWidget::pane {\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a padding: 0px; /* fixes double border inside pane wit pyqt5 */\x0a margin: 0px;\x0a}\x0a\x0aQTabWidget::pane:selected {\x0a background-color: #32414B;\x0a border: 1px solid #1464A0;\x0a}\x0a\x0a/* QTabBar ---------------------------------------------------------------- */\x0a\x0aQTabBar {\x0a qproperty-drawBase: 0;\x0a border-radius: 4px;\x0a margin: 0px;\x0a padding: 2px;\x0a border: 0;\x0a\x0a /* left: 5px; move to the right by 5px - removed for fix */\x0a }\x0a\x0aQTabBar::close-button {\x0a border: 0;\x0a margin: 2px;\x0a padding: 0;\x0a image: url(:/qss_icons/rc/close.png);\x0a}\x0a\x0aQTabBar::close-button:hover {\x0a image: url(:/qss_icons/rc/close-hover.png);\x0a}\x0a\x0aQTabBar::close-button:pressed {\x0a image: url(:/qss_icons/rc/close-pressed.png);\x0a}\x0a\x0a/* QTabBar::tab - selected ----------------------------------------------- */\x0a\x0aQTabBar::tab:top:selected:disabled {\x0a border-bottom: 3px solid #14506E;\x0a color: #787878;\x0a background-color: #32414B;\x0a}\x0a\x0aQTabBar::tab:bottom:selected:disabled {\x0a border-top: 3px solid #14506E;\x0a color: #787878;\x0a background-color: #32414B;\x0a}\x0a\x0aQTabBar::tab:left:selected:disabled {\x0a border-left: 3px solid #14506E;\x0a color: #787878;\x0a background-color: #32414B;\x0a}\x0a\x0aQTabBar::tab:right:selected:disabled {\x0a border-right: 3px solid #14506E;\x0a color: #787878;\x0a background-color: #32414B;\x0a}\x0a\x0a/* QTabBar::tab - !selected and disabled ---------------------------------- */\x0a\x0aQTabBar::tab:top:!selected:disabled {\x0a border-bottom: 3px solid #19232D;\x0a color: #787878;\x0a background-color: #19232D;\x0a}\x0a\x0aQTabBar::tab:bottom:!selected:disabled {\x0a border-top: 3px solid #19232D;\x0a color: #787878;\x0a background-color: #19232D;\x0a}\x0a\x0aQTabBar::tab:left:!selected:disabled {\x0a border-right: 3px solid #19232D;\x0a color: #787878;\x0a background-color: #19232D;\x0a}\x0a\x0aQTabBar::tab:right:!selected:disabled {\x0a border-left: 3px solid #19232D;\x0a color: #787878;\x0a background-color: #19232D;\x0a}\x0a\x0a/* QTabBar::tab - selected ----------------------------------------------- */\x0a\x0aQTabBar::tab:top:!selected {\x0a border-bottom: 2px solid #19232D;\x0a margin-top: 2px;\x0a}\x0a\x0aQTabBar::tab:bottom:!selected {\x0a border-top: 2px solid #19232D;\x0a margin-bottom: 3px;\x0a}\x0a\x0aQTabBar::tab:left:!selected {\x0a border-left: 2px solid #19232D;\x0a margin-right: 2px;\x0a}\x0a\x0aQTabBar::tab:right:!selected {\x0a border-right: 2px solid #19232D;\x0a margin-left: 2px;\x0a}\x0a\x0a\x0aQTabBar::tab:top {\x0a background-color: #32414B;\x0a color: #F0F0F0;\x0a margin-left: 2px;\x0a padding-left: 4px;\x0a padding-right: 4px;\x0a padding-top: 2px;\x0a padding-bottom: 2px;\x0a min-width: 5px;\x0a border-bottom: 3px solid #32414B;\x0a border-top-left-radius: 3px;\x0a border-top-right-radius: 3px;\x0a}\x0a\x0aQTabBar::tab:top:selected {\x0a background-color: #505F69;\x0a color: #F0F0F0;\x0a border-bottom: 3px solid #1464A0;\x0a border-top-left-radius: 3px;\x0a border-top-right-radius: 3px;\x0a}\x0a\x0aQTabBar::tab:top:!selected:hover {\x0a border: 1px solid #148CD2;\x0a border-bottom: 3px solid #148CD2;\x0a padding: 0px;\x0a}\x0a\x0aQTabBar::tab:bottom {\x0a color: #F0F0F0;\x0a border-top: 3px solid #32414B;\x0a background-color: #32414B;\x0a margin-left: 2px;\x0a padding-left: 4px;\x0a padding-right: 4px;\x0a padding-top: 2px;\x0a padding-bottom: 2px;\x0a border-bottom-left-radius: 3px;\x0a border-bottom-right-radius: 3px;\x0a min-width: 5px;\x0a}\x0a\x0aQTabBar::tab:bottom:selected {\x0a color: #F0F0F0;\x0a background-color: #505F69;\x0a border-top: 3px solid #1464A0;\x0a border-bottom-left-radius: 3px;\x0a border-bottom-right-radius: 3px;\x0a}\x0a\x0aQTabBar::tab:bottom:!selected:hover {\x0a border: 1px solid #148CD2;\x0a border-top: 3px solid #148CD2;\x0a padding: 0px;\x0a}\x0a\x0aQTabBar::tab:left {\x0a color: #F0F0F0;\x0a background-color: #32414B;\x0a margin-top: 2px;\x0a padding-left: 2px;\x0a padding-right: 2px;\x0a padding-top: 4px;\x0a padding-bottom: 4px;\x0a border-top-right-radius: 3px;\x0a border-bottom-right-radius: 3px;\x0a min-height: 5px;\x0a}\x0a\x0aQTabBar::tab:left:selected {\x0a color: #F0F0F0;\x0a background-color: #505F69;\x0a border-left: 3px solid #1464A0;\x0a border-top-right-radius: 3px;\x0a border-bottom-right-radius: 3px;\x0a}\x0a\x0aQTabBar::tab:left:!selected:hover {\x0a border: 1px solid #148CD2;\x0a border-left: 3px solid #148CD2;\x0a padding: 0px;\x0a}\x0a\x0aQTabBar::tab:right {\x0a color: #F0F0F0;\x0a background-color: #32414B;\x0a margin-top: 2px;\x0a padding-left: 2px;\x0a padding-right: 2px;\x0a padding-top: 4px;\x0a padding-bottom: 4px;\x0a border-top-left-radius: 3px;\x0a border-bottom-left-radius: 3px;\x0a min-height: 5px;\x0a}\x0a\x0aQTabBar::tab:right:selected {\x0a color: #F0F0F0;\x0a background-color: #505F69;\x0a border-right: 3px solid #1464A0;\x0a border-top-left-radius: 3px;\x0a border-bottom-left-radius: 3px;\x0a}\x0a\x0aQTabBar::tab:right:!selected:hover {\x0a border: 1px solid #148CD2;\x0a border-right: 3px solid #148CD2;\x0a padding: 0px;\x0a}\x0a\x0aQTabBar QToolButton::right-arrow:enabled {\x0a image: url(:/qss_icons/rc/right_arrow.png);\x0a}\x0a\x0aQTabBar QToolButton::left-arrow:enabled {\x0a image: url(:/qss_icons/rc/left_arrow.png);\x0a}\x0a\x0aQTabBar QToolButton::right-arrow:disabled {\x0a image: url(:/qss_icons/rc/right_arrow_disabled.png);\x0a}\x0a\x0aQTabBar QToolButton::left-arrow:disabled {\x0a image: url(:/qss_icons/rc/left_arrow_disabled.png);\x0a}\x0a\x0aQTabBar QToolButton{\x0a background-color: #32414B; /* fixes #136 */\x0a width: 16px;\x0a height: 16px;\x0a}\x0a\x0a/* QDockWiget ------------------------------------------------------------- */\x0a\x0aQDockWidget {\x0a outline: 1px solid #32414B;\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a titlebar-close-icon: url(:/qss_icons/rc/close.png);\x0a titlebar-normal-icon: url(:/qss_icons/rc/undock.png);\x0a}\x0a\x0aQDockWidget::title {\x0a padding: 6px; /* better size for title bar */\x0a border: none;\x0a background-color: #32414B;\x0a}\x0a\x0aQDockWidget::close-button {\x0a background-color: #32414B;\x0a border-radius: 4px;\x0a border: none;\x0a}\x0a\x0aQDockWidget::close-button:hover {\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQDockWidget::close-button:pressed {\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQDockWidget::float-button {\x0a background-color: #32414B;\x0a border-radius: 4px;\x0a border: none;\x0a}\x0a\x0aQDockWidget::float-button:hover {\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQDockWidget::float-button:pressed {\x0a border: 1px solid #32414B;\x0a}\x0a\x0a\x0a/* QTreeView QTableView QListView ----------------------------------------- */\x0a\x0aQTreeView:branch:selected,\x0aQTreeView:branch:hover {\x0a background: url(:/qss_icons/rc/transparent.png);\x0a}\x0a\x0aQTreeView::branch:has-siblings:!adjoins-item {\x0a border-image: url(:/qss_icons/rc/transparent.png);\x0a}\x0a\x0aQTreeView::branch:has-siblings:adjoins-item {\x0a border-image: url(:/qss_icons/rc/transparent.png);\x0a}\x0a\x0aQTreeView::branch:!has-children:!has-siblings:adjoins-item {\x0a border-image: url(:/qss_icons/rc/transparent.png);\x0a}\x0a\x0aQTreeView::branch:has-children:!has-siblings:closed,\x0aQTreeView::branch:closed:has-children:has-siblings {\x0a image: url(:/qss_icons/rc/branch_closed.png);\x0a}\x0a\x0aQTreeView::branch:open:has-children:!has-siblings,\x0aQTreeView::branch:open:has-children:has-siblings {\x0a image: url(:/qss_icons/rc/branch_open.png);\x0a}\x0a\x0aQTreeView::branch:has-children:!has-siblings:closed:hover,\x0aQTreeView::branch:closed:has-children:has-siblings:hover {\x0a image: url(:/qss_icons/rc/branch_closed-on.png);\x0a}\x0a\x0aQTreeView::branch:open:has-children:!has-siblings:hover,\x0aQTreeView::branch:open:has-children:has-siblings:hover {\x0a image: url(:/qss_icons/rc/branch_open-on.png);\x0a}\x0a\x0aQListView::item:!selected:hover,\x0aQTreeView::item:!selected:hover,\x0aQTableView::item:!selected:hover,\x0aQColumnView::item:!selected:hover {\x0a outline: 0;\x0a color: #148CD2;\x0a background-color: #32414B;\x0a}\x0a\x0aQListView::item:selected:hover,\x0aQTreeView::item:selected:hover,\x0aQTableView::item:selected:hover,\x0aQColumnView::item:selected:hover {\x0a background: #1464A0;\x0a color: #19232D;\x0a}\x0a\x0aQTreeView::indicator:checked,\x0aQListView::indicator:checked {\x0a image: url(:/qss_icons/rc/checkbox_checked.png);\x0a}\x0a\x0aQTreeView::indicator:unchecked,\x0aQListView::indicator:unchecked {\x0a image: url(:/qss_icons/rc/checkbox_unchecked.png);\x0a}\x0a\x0aQTreeView::indicator:checked:hover,\x0aQTreeView::indicator:checked:focus,\x0aQTreeView::indicator:checked:pressed,\x0aQListView::indicator:checked:hover,\x0aQListView::indicator:checked:focus,\x0aQListView::indicator:checked:pressed {\x0a image: url(:/qss_icons/rc/checkbox_checked_focus.png);\x0a}\x0a\x0aQTreeView::indicator:unchecked:hover,\x0aQTreeView::indicator:unchecked:focus,\x0aQTreeView::indicator:unchecked:pressed,\x0aQListView::indicator:unchecked:hover,\x0aQListView::indicator:unchecked:focus,\x0aQListView::indicator:unchecked:pressed {\x0a image: url(:/qss_icons/rc/checkbox_unchecked_focus.png);\x0a}\x0a\x0aQTreeView::indicator:indeterminate:hover,\x0aQTreeView::indicator:indeterminate:focus,\x0aQTreeView::indicator:indeterminate:pressed,\x0aQListView::indicator:indeterminate:hover,\x0aQListView::indicator:indeterminate:focus,\x0aQListView::indicator:indeterminate:pressed {\x0a image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png);\x0a}\x0a\x0aQTreeView::indicator:indeterminate,\x0aQListView::indicator:indeterminate {\x0a image: url(:/qss_icons/rc/checkbox_indeterminate.png);\x0a}\x0a\x0aQListView,\x0aQTreeView,\x0aQTableView,\x0aQColumnView {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a gridline-color: #32414B;\x0a border-radius: 4px;\x0a}\x0a\x0aQListView:disabled,\x0aQTreeView:disabled,\x0aQTableView:disabled,\x0aQColumnView:disabled {\x0a background-color: #19232D;\x0a color: #787878;\x0a}\x0a\x0aQListView:selected,\x0aQTreeView:selected,\x0aQTableView:selected,\x0aQColumnView:selected {\x0a background: #1464A0;\x0a color: #32414B;\x0a}\x0a\x0aQListView:hover,\x0aQTreeView::hover,\x0aQTableView::hover,\x0aQColumnView::hover {\x0a background-color: #19232D;\x0a border: 1px solid #148CD2;\x0a}\x0a\x0aQListView::item:pressed,\x0aQTreeView::item:pressed,\x0aQTableView::item:pressed,\x0aQColumnView::item:pressed {\x0a background-color: #1464A0;\x0a}\x0a\x0aQListView::item:selected:active,\x0aQTreeView::item:selected:active,\x0aQTableView::item:selected:active,\x0aQColumnView::item:selected:active {\x0a background-color: #1464A0;\x0a}\x0a\x0aQTableCornerButton::section {\x0a background-color: #19232D;\x0a border: 1px transparent #32414B;\x0a border-radius: 0px;\x0a}\x0a\x0a/* QHeaderView ------------------------------------------------------------ */\x0a\x0aQHeaderView {\x0a background-color: #32414B;\x0a border: 0px transparent #32414B;\x0a padding: 0px;\x0a margin: 0px;\x0a border-radius: 0px;\x0a}\x0a\x0aQHeaderView:disabled {\x0a background-color: #32414B;\x0a border: 1px transparent #32414B;\x0a padding: 2px;\x0a}\x0a\x0aQHeaderView::section {\x0a background-color: #32414B;\x0a color: #F0F0F0;\x0a padding: 2px;\x0a border-radius: 0px;\x0a text-align: left;\x0a}\x0a\x0aQHeaderView::section:checked {\x0a color: #F0F0F0;\x0a background-color: #1464A0;\x0a}\x0a\x0aQHeaderView::section:checked:disabled {\x0a color: #787878;\x0a background-color: #14506E;\x0a}\x0a\x0aQHeaderView::section::horizontal:disabled,\x0aQHeaderView::section::vertical:disabled {\x0a color: #787878;\x0a}\x0a\x0aQHeaderView::section::vertical::first,\x0aQHeaderView::section::vertical::only-one {\x0a border-top: 1px solid #32414B;\x0a}\x0a\x0aQHeaderView::section::vertical {\x0a border-top: 1px solid #19232D;\x0a}\x0a\x0aQHeaderView::section::horizontal::first,\x0aQHeaderView::section::horizontal::only-one {\x0a border-left: 1px solid #32414B;\x0a}\x0a\x0aQHeaderView::section::horizontal {\x0a border-left: 1px solid #19232D;\x0a}\x0a\x0a/* Those settings (border/width/height/background-color) solve bug */\x0a/* transparent arrow background and size */\x0a\x0aQHeaderView::down-arrow {\x0a background-color: #32414B;\x0a width: 16px;\x0a height: 16px;\x0a border-right: 1px solid #19232D;\x0a image: url(:/qss_icons/rc/down_arrow.png);\x0a}\x0a\x0aQHeaderView::up-arrow {\x0a background-color: #32414B;\x0a width: 16px;\x0a height: 16px;\x0a border-right: 1px solid #19232D;\x0a image: url(:/qss_icons/rc/up_arrow.png);\x0a}\x0a\x0a/* QToolBox -------------------------------------------------------------- */\x0a\x0aQToolBox {\x0a padding: 0px;\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQToolBox::selected {\x0a padding: 0px;\x0a border: 2px solid #1464A0;\x0a}\x0a\x0aQToolBox::tab {\x0a background-color: #19232D;\x0a border: 1px solid #32414B;\x0a color: #F0F0F0;\x0a border-top-left-radius: 4px;\x0a border-top-right-radius: 4px;\x0a}\x0a\x0aQToolBox::tab:disabled {\x0a color: #787878;\x0a}\x0a\x0aQToolBox::tab:selected {\x0a background-color: #505F69;\x0a border-bottom: 2px solid #1464A0;\x0a}\x0a\x0aQToolBox::tab:!selected {\x0a background-color: #32414B;\x0a border-bottom: 2px solid #32414B;\x0a}\x0a\x0aQToolBox::tab:selected:disabled {\x0a background-color: #32414B;\x0a border-bottom: 2px solid #14506E;\x0a}\x0a\x0aQToolBox::tab:!selected:disabled {\x0a background-color: #19232D;\x0a}\x0a\x0aQToolBox::tab:hover {\x0a border-color: #148CD2;\x0a border-bottom: 2px solid #148CD2;\x0a}\x0a\x0aQToolBox QScrollArea QWidget QWidget {\x0a padding: 0px;\x0a background-color: #19232D;\x0a}\x0a\x0a/* QFrame ----------------------------------------------------------------- */\x0a\x0aQFrame {\x0a border-radius: 4px;\x0a border: 1px solid #32414B;\x0a}\x0a\x0aQFrame[frameShape=\x220\x22] {\x0a border-radius: 4px;\x0a border: 1px transparent #32414B;\x0a}\x0a\x0aQFrame[height=\x223\x22],\x0aQFrame[width=\x223\x22] {\x0a background-color: #19232D;\x0a}\x0a\x0a/* QSplitter -------------------------------------------------------------- */\x0a\x0aQSplitter {\x0a background-color: #32414B;\x0a spacing: 0;\x0a padding: 0;\x0a margin: 0;\x0a}\x0a\x0aQSplitter::separator {\x0a background-color: #32414B;\x0a border: 0 solid #19232D;\x0a spacing: 0;\x0a padding: 1px;\x0a margin: 0;\x0a}\x0a\x0aQSplitter::separator:hover {\x0a background-color: #787878;\x0a}\x0a\x0aQSplitter::separator:horizontal {\x0a width: 5px;\x0a image: url(:/qss_icons/rc/Vsepartoolbar.png);\x0a}\x0a\x0aQSplitter::separator:vertical {\x0a height: 5px;\x0a image: url(:/qss_icons/rc/Hsepartoolbar.png);\x0a}\x0a\x0a\x0a/* QDateEdit-------------------------------------------------------------- */\x0a\x0aQDateEdit {\x0a selection-background-color: #1464A0;\x0a border-style: solid;\x0a border: 1px solid #32414B;\x0a border-radius: 4px;\x0a padding-top: 2px; /* This fix #103, #111*/\x0a padding-bottom: 2px; /* This fix #103, #111*/\x0a padding-left: 4px;\x0a padding-right: 4px;\x0a min-width: 10px;\x0a}\x0a\x0aQDateEdit:on {\x0a selection-background-color: #1464A0;\x0a}\x0a\x0aQDateEdit::drop-down {\x0a subcontrol-origin: padding;\x0a subcontrol-position: top right;\x0a width: 20px;\x0a border-top-right-radius: 3px;\x0a border-bottom-right-radius: 3px;\x0a}\x0a\x0aQDateEdit::down-arrow {\x0a image: url(:/qss_icons/rc/down_arrow_disabled.png);\x0a}\x0a\x0aQDateEdit::down-arrow:on,\x0aQDateEdit::down-arrow:hover,\x0aQDateEdit::down-arrow:focus {\x0a image: url(:/qss_icons/rc/down_arrow.png);\x0a}\x0a\x0aQDateEdit QAbstractItemView {\x0a background-color: #19232D;\x0a border-radius: 4px;\x0a border: 1px solid #32414B;\x0a selection-background-color: #1464A0;\x0a}\x0a\x0aQAbstractView:hover{\x0a border: 1px solid #148CD2;\x0a color: #F0F0F0;\x0a}\x0a\x0aQAbstractView:selected {\x0a background: #1464A0;\x0a color: #32414B;\x0a}\x0a\x0a\x0aPlotWidget {\x0a padding: 0px; /* to fix cut labels in plots #134 */\x0a}\x0a\x00\x00\x02\xe1\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x02\x93IDATX\x85\xed\x96?O\x14Q\x14\xc5\x7fgB\x18\xb6\xb5R>\x80\xc56J%\x95vR\x80b\xe8\xb4\xd3D\x8a\xad\xa4\x9a\x19 fL\xc4\x99\xa5\xa1\x92hL\xb4\xd3\x0e\xff\x00\x85Zi\xa5\x95n!\x89_\x00\xadl\x97\xd9\x98w-\xf6\x0d\xac\x09\xbb\xb8\x806\xee\xe9\xde\xbc\xfb\xde=\xf7\xce}\xe7^\x18`\x80\xff\x1d\xea\xc78M\xd3\xa1\xa2(\xa6\xccl\x068\x07\x8c\xfa\xadm\xe0\xa3\xa4\xb50\x0c7\xd24\xfdy\xec\x04\xe28\xbe\x08\xac\x00U\xe0\x13\xf0\x1e\xf8\xe6\xb7O\x01\xe7\x811`\xcb9wkyy\xf9\xedq\x11P\x14E\x89\xa4%\xe0\xb9\xa4\xc5,\xcb\xb6\xf63L\x92\xa4jfw\x81+\xc0B\x9e\xe79`G\x22\x10E\xd1\xbc\xa4;\x92jY\x96=\xfa\x03\xc2$Ir\xd3\xccV\x81\xdby\x9eg\x87&\xe0\xd3\xfeZ\xd2l\x87s\xc5q|\x0d\xa8\x01g\xfc\xb7\x06\xb0\x9a\xe7\xf9S|\xc4q\x1c\xcf\x02\x0f\x81\x89<\xcf\xdf\xf4M M\xd3\xa1\x9d\x9d\x9d\x06\xf05\xcf\xf3\x19\x80\xb9\xb9\xb9\x13a\x18>\x01.\x03\x0e\x08\xbc\xb9\x03\x023{\xd9j\xb5n\xac\xac\xac\xfc\x00\x88\xa2\xe8\xb9\xa4\xd3###g\xba\x15f\xb0\xdfG\x80\xa2(\xa6\x80\xaa\xa4\xc5\x92\xacw>\xb5\xcf\xd9\x00@\xd2\xa5\xe1\xe1\xe1\xc7e`A\x10,\x00\xd5f\xb39\xd9\xcdOW\x02\xfe\xa9}*\x0b\xce\xa7\xfdr\xaf3@ i:\x8a\xa2\xab\x00Y\x96m\x99\xd9gI3}\x13\xa0\xfd\xce\xdfw\xack\xb4S}\x10\x9c\xa4Z\xb9\x90\xf4\x0e\x18?\x0c\x81Q\xf6\xde9\xb4\x0b\xae\x97\xfd\xee\x9d\x92\xca\xe2\xc4\xcc\xbe\xb3'X}\x11\xf8'\xe8E`\x9b\xb6\xc2\x95h\xf0\x87\xbf\xc0\xcc\x1a\xe5B\xd2I\x7fW\xdf\x04>\xd2\x96\xd7\x12\xab\x07\xd8\xef\xde\xe9E\x08\x003\xbb\x00|\xe8\x9b\x80\xa45`,I\x92*\x80\x17\x99W\xf4\xce\x823\xb3\x97\xf5z\xfd\x19\xb4\xa5Y\xd2Y3[\xeb\x9b@\x18\x86\x1b\xc0\x96\xd7v\x00+\x8a\xe2\xba\x99\xad\x97\xce:\x1d\x03\x98\xd9z\xab\xd5\xba\x81WC\xe7\xdc\x12\xf0\xa5R\xa9lv\x0d\xb4G4]\xa58\x8a\xa2\xab\x92je\xb5\x9bY\xc3\xccV}\xe4\x9dR\xfc\xc097\xd1\xab3\xfe\x95f\xe4\x9d\xdf\xe7\xa8\xcd\xa8\xb4\x89\xe38\x06\xee\x99\xd9\x8b \x08\x16z\xb5c\xe7\xdc\x92\xa4i3\x9b\xaf\xd7\xebu\x8e\xda\x8eKt\x0e$^^\xdfy\x91A\xd2I3\xbb \xe9,\xf0\xc597w\x9c\x03\xc9.\xd24\x1dj6\x9b\x93^\xdb\xc7\xf9}$\xfb`fk\x95Je\xb3\x9f\x91l\x80\x01\x06\xf8\x05h\xaf$(\x9ck\x07\xff\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x02+\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x01\xe2IDATx\x9c\xed\x9bK\x0e\xc3 \x10CiO\x9d#p\xebv\x85\x84\x10\x81\x81\xb1\x0dQ\xf0:5\xf1\xe3\x93\x0c%!\x1c\x1d\x1d\xbdY\x1fec\xd7u\xfd,\xd7\xc5\x18e\xf7Em\xc8\x1a\xb8'&\x10\xb81*\xf4\x9d\xd00`f\xec\xe0\xa5P &\xea\xf0I\x08\x08.\x83U\xc1Ky@L\xffp\x97\xf0I\xb3\x10\x86\x7f\xb4[\xf0R\xa3 \x86.\xde=|\xd2\x08\x04\xf3\x85O\x09\x9fd\x85\xf0e\xdf\xc8\xee2QzZ\xef'YFA\xf7\x82^\xf8\xbc\x11\x15\xa82X\xab\xdd\x1e\x04\xe8\x14\x881~\xd8\x85\x0c\xda\xbf\x09`\xb6GY\x10f|{\x19n\x01x\x873\x1a\x82\xc7\xaf\x95\xc5=\x05<\xf3\xcf\xaa\x96\x8f\xb7\xa3\xaa\xc63\xa6\xac\x9bD\xfa\xd6\xbc`\x8b c$0{>\x09\xfa\x14@BP\x84\x0f\xa12\x05\x10\xe6\xde\x9bg\x86/\xbd)\xaf\xc2\x9e\x91\xa0\xea\xf9$Z-0\x03A\x1d>\x04r14\x02aE\xf8\x10\x8a5\x80\xd5P/\x9c:|\xde\x9e\xa4\x1c\x9e]\x13\x14\xc5\x95l?`4\x8c\xaa\xb2\x94n\x88XC)\xf7\x1f\xe4;B\xbdp\xea\xcd\x179\x00\xcf{\x00CR\x00\xd6pJ\x082\x00\xc8Z\x00)\x09\x80\xd9G\x9d\x02\x02\x1d\x80%\xfcJ\x08\x94j0i\xb4\xe7\x15/E\x92j\xb0\xd6P\xae\xbb0+F\x02\x05\x80\xa7'\xd5\x10\xe0\x00\x10\xc3X\x09\x01\xb6)\x1a\x02~\x0e+\xfc`#\x80\xb1\x80)F\x02\x04\x00s\xf5fCp\xdf\xb8\xaa\x9egm\xb4.\xd9\x13\xdc\xc1/\xe9\x16\x00\xeb\xbf8\x8f\x18\x8b3|\x04\xb0\xeby\xb4\xbf\xfb\x80\xc4\xee\xea\x8d\xe4sD\xc6j\xf64\x08\xe7\x94\x98Q\xe7\xa0\xe4\xa8\xf9\xee\x10\xa8Ges\xed\x06BvX:\xd7.\x10\x96\x1c\x97OZ\x0d\xc1[\x10\x9dOf\x10&\xb9^\xfb\xd1TM\xaf\xfcl\xae\xa5\x1d?\x9c\x00\x00\x88K\x04\xd39.\x90?\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xb6\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x18\x00\x00\x00\x11\x08\x06\x00\x00\x00\xc7xl0\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x0b,\x0d\x1fC\xaa\xe1\x00\x00\x006IDAT8\xcbc` \x01,Z\xb4\xe8\xff\xa2E\x8b\xfe\x93\xa2\x87\x89\x81\xc6`\xd4\x82\x11`\x01#\xa9\xc9t\xd0\xf9\x80\x85\x1cMqqq\x8c\xa3\xa9h\xd4\x82ad\x01\x001\xb5\x09\xec\x1fK\xb4\x15\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x02)\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x01\xe0IDATx\x9c\xed[Ir\xc0 \x0cs;}t\x9e\x90_\xb7'fh\x86\x04\x03\x92\xec6\xe8L\xbc(b7f\x1b\x1b\x1bo\xc6\x87\xd2\xd9q\x1c\xdf\x9ev\xe7y\xca\xe2\xa2:\xf2&\xdc\x03\x93\x10\xb8aT\xd2w@\x93\x013\xc6N\xfc\x0a\x14\x11\x10#\xea\xe4\x0b\x10$,\x19\x88J\xfc\x8a\x15\x22\xa6?\xcc\x92|\xc1,\x09\xc3\x1feK\xfc\x8aQ\x22\x86\x1agO\xbe`\x84\x04w\xc3\xbf\x92|\x81\x97\x84/v O\xa8\x83\x8c\x22\xd8\xc5\x12#\xb8\xd6\x1fB\xfb\xf1\xa8\xa0\xdb@\x95<\xcb_\x8f\x84O\xa43\x0fz\x01)7Bf\x1d\x05DH\x92\xe1\xfb\xc9o\x1a)\xb2c\xb8\xf3/\xe9\x02\xb3}^\xd1\x1d\x9a\x0eT\xf2\xab\xfd(\x06\xc6\x96\x0f\xaa\x02F\x92\x8aR\x02\x8d\x80\x99?\x1aA\x02e1\xb2*gfw\xb8\xda\x86+\x00\x11\xbcR\x09P\x02\x90\x7fNE\x02\x8c\x00\x86l\x15$\xfc22\x1b({\x0aC\xdb\xaf\xed-+@1\x7f3\x95\xb0D\x80rW\xc7\x22a\x9a\x00e\xf2\x1e\xbb\xb3$\xc0\xa7A\xf6\xc9\x0e\xda\xbet\x1d\x90\xd1\xfe4\x01\x11\xcbVF\xb7[R\x80\x92\x04\xd6\x98\xb3\xdc\x05\x14$0\x07\x5c\xc8\x18\xc0$\x81=\xdb@w\x83\xcc\x15\x1b\xc2^\xcb&t\x16@*A\xb5\xce\x90\xae\x03\xbc$(\x17Y\x94\x13\xa1\x15\x12\xd4+L\xea\xa1\xe8h2\x11\xbbJ\xea\xa1\xe8\x88\x12\x22\xf6\x16f\x82{\x01\x0f\x09Q\xc9\x9b\xed\x9b!\xdd\xe5(\xf2L\x10\x09\xe9\xe5\xa8\x99O\x09J\xf5\xc9\xaf\xc7{\xc9\xa9+EB\x0a$\xcc4\x15\x22w~j\x84\x95\xc8\x98\xf1k\x84 %2\x05\xff\xb5JL>\x06d\xc3.\x94\x1c5\x9e\x9d\x04j\xa9l\x8dlD\xc8\x8a\xa5kd!!\xa4\x5c\xbe \x9a\x84\xd53\xc7\xfdd\x06a\xa4\xc6k\x1fM\xb5\xf0\xcagsO\xc8\xf8pr\xe3\xed\xf8\x01\xedrr\xcc\x11N\x0c\xe5\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x02\x84\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x026IDATX\x85\xed\x96\xb1N\x14Q\x14\x86\xbf3\x92,\xfb\x06\xc8\x03Xl#T\x920+\x1d\x0d$\x1aj[\x89\xb1\xd2\xc4d\xee\x054c\xe283\xc4D\x1bm,\x8c/\xb0X@e\xb3\x90I\x84\x06\xb4`\x13\x13h\x11\x9f`\xd9h\xee\xb1`\x10L\x9c\xcd\xce.\xb1q\xbf\xf6\xfc3\xe7\xcf\xcd=\xff=0d\xc8\xff\x8e\x94\x11\x87a8\xd2\xe9t\xe6Uu\x01\xb8\x01\x8c\xe7\xa5#`GD\x1a\x95Je=\x0c\xc3\x9f\x97n\xc0\x183\x0b\xbc\x04j\xc0\x1e\xb0\x05|\xcb\xcbW\x81\x9b\xc0$\xd0r\xce=X]]\xfdxY\x06$\x08\x02+\x22\x11\xb0&\x22+q\x1c\xb7\xfe&\xb4\xd6\xd6T\xf5\x19p\x1bXN\x92$\x01t \x03A\x10,\x89\xc8S\x11\xb9\x1f\xc7\xf1\xdb\x1e\x0cc\xad\xbd\xab\xaao\x80'I\x92\xc4\xdd\xb4W\xba\x15\x8d1\xb3\x22\xf2ND\xee\xf5\xda\x1c \xcb\xb2]\xdf\xf7\xbf\x03\xaf|\xdf\xff\x94e\xd9a\x91\xb6\xf0\x04\xc20\x1c999\xf9\x02|M\x92d\xa1\xd7\xe6\x17\x09\x82`MD\xae\x8d\x8e\x8e^/\xba\x98^\xd1\xc7\x9dNg\x1e\xa8\x89\xc8J?\xcd\x01<\xcf[\x06j\xedv{\xaePST\xc8Gm\xaf\xe8\xc2\xf5B\x1c\xc7-U\xfd,\x22\x85'Xh\x80\xd39\xdf\xea\xb7\xf9\x19\x22\xb2\x09L\xf5c`\x9c\xf39\xef\x1bU=\xe6<\xb0J\x19\xf8't3p\xc4i\xc2\x0d\x84\x88\x8c\xe5\xff*m`\x87\xd3x\x1d\x08U\x9d\x01\xb6K\x1b\x10\x91\x060i\xad\xad\xf5\xdb\xdcZ[\x13\x91\x09Um\x946P\xa9T\xd6\x81V\x9e\xed}\xe1\x9c\x8b\x80\xfdj\xb5\xbaQ\xa4)\x8c\xe2f\xb3\xe9|\xdf?\x00\xa2z\xbd~\x94e\xd9n\x99\xe6\xc6\x98E\x11y\xe4\x9c\xbb\x13E\xd1Ai\x03\x00Y\x96\x1dNOO\xff\x00^\xd4\xeb\xf5\xe3^M\x18c\x16\x81\xd7\xc0\xe34M\xdfw\xd3\xf6\xf4\x1c\x1bc\x0c\xf0\x5cU?x\x9e\xb7\xdc\xed9v\xceE\x22rKU\x97\xd24M\x19\xf49>\xe3\xe2B\x92\xc7\xebf\x1e2\x88\xc8\x98\xaa\xce\x88\xc8\x04\xb0\xef\x9c{x\x99\x0b\xc9o\xc20\x1ci\xb7\xdbsy\xb6O\xf1\xe7J\xb6\xad\xaa\x8dj\xb5\xbaQf%\x1b2d\xc8/\xffB\xe0?O\xfa\x9f\x03\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\x9f\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x08\x14\x1f\xf9#\xd9\x0b\x00\x00\x00#IDAT\x08\xd7c`\xc0\x0d\xe6|\x80\xb1\x18\x91\x05R\x04\xe0B\x08\x15)\x02\x0c\x0c\x8c\xc8\x02\x08\x95h\x00\x00\xac\xac\x07\x90Ne4\xac\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x01\x82\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x014IDATX\x85\xed\xd7\xb1N\xc2P\x18\x86\xe1\xf77\x14F\xca\x82\xd7\xd0\x85DH\xea\x0a\xd1T\x22\xc6\x1b\xe0*\xea,\x0e\xb2\xc3Up\x09\xc4\xd8\x98\xb0w\xd0\x84\xa5\xf7\xc0B\x1d\xb1$\xc7\xa1-6\xb58\x986\x0e\x9eoN[\xb2\xcc\xcc\xc2(\x8azM%\x1f\xff\x1d\x9aYv! i\x09\xb4}\xdf_7!1\x9dNo\x8emy\xab,\xcbUU\xff2\x98$I\xf2\x04<\x00\x07 \xe7\xa3\x81\xac\x83\x00\x08\x81\x16\xd7\x06\x93\x8a8\x8e\x07\x9e\xe7\x8d\x8f\xads\xf7|\xff\x87l\xcd,+\xcbru>\x9a9\xde\x01#\x94}H\x8c\x1a5\x0f\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xef\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00Q\x00\x00\x00:\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x0b*2\xff\x7f Z\x00\x00\x00oIDATx\xda\xed\xd0\xb1\x0d\x000\x08\x03A\xc8\xa0\x0c\xc7\xa2I\xcf\x04(\xba/]Y\x97\xb1\xb4\xee\xbes\xab\xaa\xdc\xf8\xf5\x84 B\x84(\x88\x10!B\x14D\x88\x10!\x0a\x22D\x88\x10\x05\x11\x22D\x88\x82\x08\x11\x22DA\x84\x08Q\x10!B\x84(\x88\x10!B\x14D\x88\x10!\x0a\x22D\x88\x10\x05\x11\x22D\x88\x82\x08\x11\x22DA\x84\x08Q\x10!B\xfc\xaa\x07\x12U\x04tV\x9e\x9eT\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x025\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x01\xecIDATx\x9c\xed\x9bK\x92\xc3 \x10C\xc9\x9ca\x0e\x98\xc5\x1c+\x8b9`\xee\x90\xac\xa8\xa2(\x1b\x1aZ\x12\xed2Z;\xc2z|\xec&8\xa5\xad\xad\xad;\xeb\xa1l\xec\xf7\xef\xffc\xb9\xee\xfdz\xca\xee\x8b\xda\x905pOL pcT\xe83\xa1a\xc0\xcc\xd8\xc1k\xa1@@L\xd4\xe1\xb3\x10\x10\x5c\x06\xab\x82\xd7\xf2\x80\x98\xfea\x94\xf0Y\xb3\x10\x86\x7f\x14-x\xadQ\x10C\x17G\x0f\x9f5\x02\xc1|\xe1U\xc2gY!\xfc\xb0o$\xbaL\x94\xae\xd6\xfbY\x96Q\xd0\xbd\xa0\x17\xbelD\x05\xaa\x0e\xd6j\xb7\x07\x01:\x05\xde\xaf\xe7\x83]\xc8\xa0\xfd\x9b\x00f{\x94\x05a\xc6\xb7\x97\xe1\x14\x80w8\xa3!x\xfcZY\xdcS\xc03\xff\xacj\xf9x;\xea\xd0x\xc6\x94u\x93H\xdf#/\xd8\x22\xc8\x18\x09\xcc\x9e\xcf\x82>\x05\x90\x10\x14\xe1S:\x98\x02\x08s\xef\xcd3\xc3\xd7\xde\x94Wa\xcfHP\xf5|\x16\xad\x16\x98\x81\xa0\x0e\x9f\x12\xb9\x18\x1a\x81\xb0\x22|J\xd5\x1a\xc0j\xa8\x17N\x1d\xbelOR\x0e\xcf\xae\x09\x8a\xe2J\xb6\x1f0\x1aFUYJ7D\xac\xa1\x94\xfb\x0f\xf2\x1d\xa1^8\xf5\xe6\x8b\x1c\x80\xe7=\x80!)\x00k8%\x04\x19\x00d-\x80\x94\x04\xc0\xec\xa3N\x01\x81\x0e\xc0\x12~%\x04J5\x985\xda\xf3\x8a\x97\x22I5x\xd4P\xa9\xb30+F\x02\x05\x80\xa7'\xd5\x10\xe0\x00\x10\xc3X\x09\x01\xb6)\x9a\x12~\x0e+\xfc`#\x80\xb1\x80)F\x02\x04\x00s\xf5fCp\xdf\xb8\xaa\x9egm\xb4.\xd9\x13\x8c\xe0\x97u\x0a\x80\xf5_\x9cG\x8c\xc5\x19>\x02\xd8\xf5<\xda\xdf}@\x22\xbaz#y\x1f\x91\xb1\x9a]\x0d\xc2>%f\xd4>(9j\x1e\x1d\x02\xf5\xa8l\xa9h d\x87\xa5KE\x81\xb0\xe4\xb8|\xd6j\x08\xde\x82h\x7f2\x830)u\xdb\x8f\xa6\x8et\xcb\xcf\xe6Z\x8a\xf8\xe1\xe4\xd6\xdd\xf5\x05\x90\xc2Z}\xfa\xa7\x95\xa2\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x01\xa2\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x01TIDATX\x85\xed\x97Aj\xc2@\x14\x86\xbf\x17\x82.\x8d\x1b{\x06/\xe0\x09\x0az\x07Oa\x09d\x94\xb6\x8b\xba\x89\x10\xf4\x14\x9e\xa1\x14z\x02/\xe0\x1d\xdch\x97J\xc8\xdfEMI\x15+\xb4I7\xcd\xb7\x9b7\xc3\xfc\x1f\x19\xc2\xbc\x81\xff\x8e\x9d\x16\xa2(\xea\x9b\xd9\x9d\xa4\x9e\x99\x05e\x84H\xda\x99\xd9J\xd2|6\x9b\xbd\x5c\x14\x18\x8f\xc7SI\xf7\xc0^\xd2\xda\xcc\xdeJ\x12h\x99Y\x17h\x02\xd38\x8e\x1f\xcf\x04\x9cs\x03\xe0\x19xM\xd3t\x98$\xc9\xa6\x8c\xf0\x9c0\x0c;\xbe\xef/\x81[I\x83\xfcKx\x855#`_E8@\x92$\x9b4M\x87\xc0\xc1\xf3\xbcQ^\xff\x14\x90\xd4\x93\xb4\xae\x22\xbc(\x01\xac%\xf5\xce\x04\xcc,(\xeb\xcc\xaf\xb0\x03\xda\xf9\xc0\xbf\xb6\xda9\xa7\xdf\xa4\xc5q|\xf6\xa7\x15\xf1\xbe\x9b\xfc\x0bj\x81Z\xa0\x16\xa8\x05j\x81Z\xa0\x16\xb8\xda\x0f\x5c\xbb\xcfK\x13\x90\xb4\x03ZU\x86\x1d\x09\x80m>(\xb6d+3\xeb\x86a\xd8\xa9*\xf9\xb8w\xd7\xccVg\x02\x92\xe6@\xd3\xf7\xfde\x15\x12\x93\xc9\xe4\xe6\xd8\x967\xb2,[\xe4\xf5/\xe7\xeb\x9c{\x02\x1e\x80\x03\xb0\xe6\xa3\x81,\x83\x00\xe8\x02\x0d.=Lr\xa2(\xea{\x9e7:\xb6\xce\xed\xd3\xf9\x1f\xb25\xb3U\x96e\x8b\xd3\xa7Y\xcd;\xf1#\x82\xe5\xfbO\xe3\xdb\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa6\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x14\x1d\x00\xb0\xd55\xa3\x00\x00\x00*IDAT\x08\xd7c`\xc0\x06\xfe\x9fg``B0\xa1\x1c\x08\x93\x81\x81\x09\xc1d``b``4D\xe2 s\x19\x90\x8d@\x02\x00d@\x09u\x86\xb3\xad\x9c\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\x96\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\x00\x00\x00\x02bKGD\x00\xd3\xb5W\xa0\x5c\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x0b\x07\x0c\x0d\x1bu\xfe1\x99\x00\x00\x00'IDAT\x08\xd7e\x8c\xb1\x0d\x00\x00\x08\x83\xe0\xff\xa3up\xb1\xca\xd4\x90Px\x08U!\x14\xb6Tp\xe6H\x8d\x87\xcc\x0f\x0d\xe0\xf0\x08\x024\xe2+\xa7\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa0\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x14\x1c\x1f$\xc6\x09\x17\x00\x00\x00$IDAT\x08\xd7c`@\x05\xff\xcf\xc3XL\xc8\x5c&dY&d\xc5p\x0e\xa3!\x9c\xc3h\x88a\x1a\x0a\x00\x00m\x84\x09u7\x9e\xd9#\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa5\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\x9cS4\xfc]\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x0b\x02\x04m\x98\x1bi\x00\x00\x00)IDAT\x08\xd7c`\xc0\x00\x8c\x0c\x0c\xff\xcf\xa3\x08\x18220 \x0b2\x1a200B\x98\x10AFC\x14\x13P\xb5\xa3\x01\x00\xd6\x10\x07\xd2/H\xdfJ\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x0b\x17\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00?\x00\x00\x00\x07\x08\x06\x00\x00\x00\xbfv\x95\x1f\x00\x00\x00\x87zTXtRaw profile type exif\x00\x00x\xdaU\x8e\xd1\x0d\xc40\x08C\xff\x99\xe2F @L\x18\xa7\xaa\x1a\xe96\xb8\xf1\x0f\x94Vm\xdf\x87\xb1,d\xa0\xe3\xf7\x9d\xf4)\x1a\x0bY\xf7\x81\x008\xb1\xb0\x90-\xcd\xe0\x8527\xe1V3uqNm\xe9\xe4\x8eIe\x19\xc4p\xb6{\xd1\xce\xfc\xa2+\x06\xa6\x9b;:v\xec\x92\xedr\xa8\xa8\xa4VQ\xb5r\xbd\x11\x8fk\xf3\xfa\xe8\x9d\xb3\xbf\xcb\xe9\x0fH!,K\xed~\xc6\xe4\x00\x00\x0a\x00iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a@\x00Zq\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00/IDAT8\xcbc`\x18\x05#\x130\xc2\x18\xf1\xf1\xf1\xa4\xe8\xfb?\x98\xfdB\x0cX\xb8p!\x03\xd3H\x8e\xf9\x11\xe9\xf9\x85\x0b\x17\x8e\xe6\xf9\x11\x0d\x00\x8bl\x05\xe9)K\xfc\x15\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x0b\x1f\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00@\x00\x00\x00\x10\x08\x06\x00\x00\x00\xa6\xe7y)\x00\x00\x00\x87zTXtRaw profile type exif\x00\x00x\xdaU\x8e\xcb\x0d\xc3@\x08D\xefT\x91\x12\xf8\xed\xb0\x94\x13Y\xb6\x94\x0eR~@k\xcb\xf1;\xc0h\xb4\xfb\x04\xed\xdf\xcfA\xafFX\xc9GL$\xc0\x85\xa7\xa7\xbe+L^\x18\xb3(K\xef\x9a\x8bs\x9bT\xd2\xbb&\xd3\x15\x903\xd8\xef\x87~\xf6\x17\xc30q\x84G``\xc3\xa6e\xd7\xdd\xd4\xb4f\x8b\xda\xca}F\xfeI\xae\xdf\xf6\xec\xe5\xe9f\xfa\x01?{,\x10\xd82\x95\xc4\x00\x00\x0a\x02iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a'q\xef\x0e\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x005IDATX\xc3\xed\xd5\xb1\x0d\x000\x08\x041\xc8\xa2\xcc\xc6\xa4I\x9b\x1d\xde\xee(\x91@WE\xb6\xfe\x87\x99\xb9I\xcb\xefn\x9f\xf4\x0b8\x9e\x00\x90A\x19\x94A\x80H\x0f\xc6\x9d\x08\x0b\xaacu(\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xe0\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00Q\x00\x00\x00:\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x0b)\x1c\x08\x84~V\x00\x00\x00`IDATx\xda\xed\xd9\xb1\x0d\x00 \x08\x00AqP\x86cQ\xed\x8d\x85%\x89w\xa5\x15\xf9HE\x8c\xa6\xaaj\x9do\x99\x19\x1dg\x9d\x03\x11E\x14\x11\x11E\x14QDD\x14QD\x11\x11QD\x11EDD\x11E\x14\x11\x11E\x14\xf1[\xd1u\xb0\xdb\xdd\xd9O\xb4\xce\x88(\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf6\xcei\x07\x1e\xe99U@\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x02\xa1\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x02SIDATX\x85\xed\x96\xbfO\x13a\x18\xc7?\xcf\xb5\x13\xa6\x86\xd1v\xa3\x03\x90.\xd2\xeb\x00\x13\x5cKB\x82W\xa2av\xc58j\xe2 ?\xdc\xa8\xd1\xc4D\x17'\x06\xe3?P\x1cZ\x18\x08P\x18\x14\x12iq\xa0\x89\x0d\xa4L-n\xc4F\x16\xec=\x0e\x80a\xe0\xe0\xae\x10\x17\xfbY\xdf\xef{\xdf\xef\xdd\xbd\xef\xf3<\xd0\xa6\xcd\xff\x8e\xf8\x11[\x96\x15l\x10J\xab\xe8\xb8\xa0\xfd\x0a\x91\xd3\x87\xd4\x14\xd9\x14\x95l\x88F\xaeP(\xfc\xbe\xf1\x00\x89\xd4\xd8\x88\xaa\xf3\x16\x88!R\x02g]\x1d\xa9\x03\x88\xa1a0\x06Q\x8d\x03e\xc3\xd0'_\x97\x17\x96n*\x80\x98I{\x12\xc8\xa0\xcck\xc0\x99)-/\x96/\x12\xc6\x87Gc\xd24f\x11\x1e\x082\xbd\xb5\x9a{\x05\xa8\xc7w\xbc\x183iO\x99I\xfb\xd8L\xa5'<\xefI\xa5'\xcc\xa4}\x9cH\xa6'\xaf\xd2\x06.[L\xa4\xc6F@? \xf2\xb8\xb8\x92\x9b\xf3\x1a\xa0^\xad\x14\xc3]\xdd?\x80w\x91h\xef\x97z\xb5\xb2\xe7\xa6u\xfd\x05\x96e\x05\x7f\xca\xado(\xdf\x8b\x85\xfc\xb8W\xf3\xf3\x98\xa9{\xf3\xa8t\xdf\xd6_w\xdd\x0e\xa6\xe1\xb6\xb9A(\x0d\xc44\xe0\xcc\xb4b\x0e\xa0\xa2\xd3@\xecP:l7\x8dk\x00\x15\x1dG\xa4\xe4v\xe0\xbcPZ^,\x0bl\x07\xc0\xf5\x0b\xba\x06\x10\xb4\x1f\x9c\xf5V\xcd\xcfP\xd15\x90\x01\xdf\x01\x14\x22g\xf7\xfc:\x08\x1c\x9c\x15,_\x01\xfe\x15A\xb7\x05\x81\x1a\x86\x86\xafk\xa0pG\xa0\xe6;\x80\x22\x9b \x83\xd7\x0d *C\xa0\x1bn\xeb\xee\x87P%\x8bj<><\x1ak\xd5<><\x1aS\xe8kB\xd6w\x80\x10\x8d\x1cP\x96\xa61\xdbj\x00Q\xc9\x08\xect\xeaQ\xdeM\xe3Z\x8a\xf7\xf7\xf7\x9dH\xb4w\x174\x13\x8e\xf6\xd4\xea\xd5J\xd1\x8f\xb9\x99\xb4\x1f\x81<3\x0c}\xf8yui\xd7w\x00\x80z\xb5\xb2\x17\xee\xea>\x06\xde\x84\xa3=\x07^C\x9c\x98\xf3^\x90\x17[+\xf9\x8f\x97i=\xb5\xe3D2\xfd\x5c\xd1\x97\x88~R\xd1\xe9K\xdb\xb1J\x06\x95\xfb\x22:\xb5\xb5\xb2\xf0\x9a+\xdaqK\x03\x89\xc0\xb6\x8a\xae\x09\x1c\xc0\xe9US\x19R\xe8\x13\xd8\x11C\x9f\xde\xe4@\xf2\x17\xcb\xb2\x82\x87\xd2a\x9f\xd4v\x198?\x92\x81n4!\xdb\xa9Gy?#Y\x9b6m\xfe\x00\x0aI\xe7\x8d\x0aU\xe0c\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\x93\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\x00\x00\x00\x02bKGD\x00\xd3\xb5W\xa0\x5c\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x0b\x07\x0c\x0c+J<0t\x00\x00\x00$IDAT\x08\xd7c`@\x05\xff\xff\xc3XL\xc8\x5c&dY&d\xc5p\x0e##\x9c\xc3\xc8\x88a\x1a\x0a\x00\x00\x9e\x14\x0a\x05+\xca\xe5u\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa6\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\x9cS4\xfc]\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x0b\x1b\x0e\x16M[o\x00\x00\x00*IDAT\x08\xd7c`\xc0\x00\x8c\x0c\x0cs> \x0b\xa4\x08020 \x0b\xa6\x08000B\x98\x10\xc1\x14\x01\x14\x13P\xb5\xa3\x01\x00\xc6\xb9\x07\x90]f\x1f\x83\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\x81\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x01\x03\x00\x00\x00%=m\x22\x00\x00\x00\x06PLTE\x00\x00\x00\xae\xae\xaewk\xd6-\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\x00\x00)IDATx^\x05\xc0\xb1\x0d\x00 \x08\x04\xc0\xc3X\xd8\xfe\x0a\xcc\xc2p\x8cm(\x0e\x97Gh\x86Uq\xda\x1do%\xba\xcd\xd8\xfd5\x0a\x04\x1b\xd6\xd9\x1a\x92\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xdc\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00@\x08\x06\x00\x00\x00\x13}\xf7\x96\x00\x00\x00\x06bKGD\x00\xb3\x00y\x00y\xdc\xddS\xfc\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdf\x04\x19\x10-\x19\xafJ\xeb\xd0\x00\x00\x00\x1diTXtComment\x00\x00\x00\x00\x00Created with GIMPd.e\x07\x00\x00\x00@IDATX\xc3\xed\xce1\x0a\x00 \x0c\x03@\xf5\xa3}[_\xaaS\xc1\xc9\xc5E\xe42\x05\x1a\x8e\xb6v\x99^%\x22f\xf5\xcc\xec\xfb\xe8t\x1b\xb7\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf06\xf0A\x16\x0bB\x08x\x15WD\xa2\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x01\x8a\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x01\xb0\x8d\xb1\x06\xfb\xf5\x0c\xb0\xbbs\x0d\xab(?D\x00\xa1\xa0\x9d\x02\x00\xb0K\xbb\xf3\xef\xa2D@\xf3\x18\xe0Ob\x00\x06`\x00\x06`\x00\x06`\x00\x06p\x08\x88v\xd3k\xc5\x11l`]\x00\x88\x10\x80\xb8\xad\xd1\xdc\xa9\xaa;\xfd\xb7\xabHP\x04h2\x06\x1a\xb1\xc8\xb4\x0a\x84\xf3\xfc\xdeJ\xc7\xf2\xbaE<\xc9z\x0f7]\x8c\x16O\x08\x0f\xc0\x16\x08\xd3\x01\xf2\xf7\xd9\x1d\xbb\x0b\xd4O>L2\xa9?\xeb\xc6X\x83ttn\xe6\xbf\xff0kE\x02\x8bx\x92\x7f\x9a\x99|\x01\x0b\xfao8\x11\xee\x15\x0b\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x025\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x01\xecIDATx\x9c\xed\x9b\xdd\x91\xc3 \x10\x837W\xc3\xd5\x91\xeaR\xc6Uwu\xa4\x87\xe4\x89\x19\x86\xb1aa%\x81\xc7\xe8\xd9\x11\xd6\xc7\x8f\xbd\x04\x9bmmm\xddY\x0fec\xbf\x7f\xff\x1f\xcfu\xef\xd7Sv_\xd4\x86\xbc\x81[b\x02\x81\x1b\xa3B\x9f\x09\x0d\x03f\xc6\x0e^\x0a\x05\x02b\xa2\x0e\x9f\x84\x80\x102\x98\x15\xbcT\x04\xc4\xf0\x0fW\x09\x9f4\x0a\xa1\xfbG\xab\x05/\xd5\x0b\xa2\xeb\xe2\xd5\xc3'\xf5@p_x\x95\xf0I^\x08?\xec\x1bY].JW\xeb\xfd$\xcf(h^\xd0\x0a\x9f7\xa2\x02U\x06\xab\xb5\xdb\x82\x00\x9d\x02\xef\xd7\xf3\xc1.d\xd0\xfeU\x00\xa3=\xca\x820\xe2\xdb\xcap\x0a :\x9c\xd1\x10\x22~\xb5,\xe1)\x10\x99\x7f^\xd5|\xa2\x1duh\x02\xd8\xf5<\xda?|@bu\xb5F\xf2>\x22\xe35\xbb\x1a\x84}J\xcc\xa9}P\xb2\xd7|u\x08\xd4\xa3\xb2\xb9V\x03!;,\x9dk\x15\x08S\x8e\xcb'\xcd\x86\x10-\x88\xf6'3\x08\x93\x5c\xb7\xfdh\xeaH\xb7\xfcl\xae\xa6\x15?\x9c\xdc\xba\xbb\xbe\x18_Z\xd7\x14T\xdf\xfe\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa0\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x14\x1f\x0d\xfcR+\x9c\x00\x00\x00$IDAT\x08\xd7c`@\x05s>\xc0XL\xc8\x5c&dY&d\xc5pN\x8a\x00\x9c\x93\x22\x80a\x1a\x0a\x00\x00)\x95\x08\xaf\x88\xac\xba4\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x03\x18\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x02\xcaIDATX\x85\xed\x96\xb1o\x14W\x10\xc6\x7f\xdf\xf3\xc9AD\x8eP\xaa\x84? \xc55\xc6w\x05\xa4\x81]#\xc5\xc2\xb7@\xe4\x0e\xba \xe1\xc2U\xd2\x05L\x89\xa3\xa4Jg%\x8a\x94t\xa13\x10\x9f\x8d\x0c\xb29h\x02Rls\x05\x96\xf2\x0f8T\x11\x8a\x15\x94\x00\xb7_\x8a\xdb=_$\xaf\xedCN\x95\xfb\xaa\xb7\xb33o\xbe\x99\xf7\xde\xcc@\x1f}\xfc\xdf\xa1^\x94\xa3(*m1\x94X\x9e\x10>n8\x9am\xb2i\xf4X\xd6\xdc\x10[\xf5F\xa3\xf1\xfa\xc0\x09TG\xcf~d\xa7_\x03e\xa4uH\x1f:\xd5o\x00\x0a~\x1f\xc2I\xec\x11`#\x04\x7f\xfa\xcb\xf2\xe2\xbd\x83\x22\xa0J\x5c\xbb\x02\xcc`nz \xbd\xb6\xbe|gc'\xc5\x91\xd3g\xcaj\x85\xeb\x88\x8f\x85\xa6W\xef\xd7\xbf\x04\xbc\xcf\x18wF%\xae]\xad\xc4\xb5W\x95\xd1\xe4\xf2\xbemF\x93\xcb\x95\xb8\xf6\xaa\x1a'W\xf6\xd2\xdd5\x03Y\xda\x97\x90&\xd7V\xea\xdf\xe56\x95(\xb9\x88<\x05\x1e\xceDM\xac\xd9\xb5F\xfdG\xb2\x88+qm\x12\xf8V\x0ac\xab+\xf3w{&\x10EQ\xe9\x0f\xbd\xdd\xc4\xfc\xba\xd6X\x98\x00\xf8pl\xec\xdd\xbf_\x96~\x00\xce!\xa5\xd8\xa1\xbdK{m|\xfb\xd0`\xeb\xd2\xcfKK\xbf\xb731~\x13\xeb\x83w\xfc\xe7p\xd1\xc5\x0cE\x04\xb6\x18J\x80\xb2\x07\xd2k9\xd9\xb6s%\x00\x1d\xe7]k\x11\xce\xfe\xf5r\xe0\xfb<0\xcb\xd3@\xf9\xb9\x0e\xd7\x8a\xfc\x14\x12\xb0<\x81\xb4\x9e_\xb8J\x94\x5c\x04\xce\x81\x0bm\xc0A\xe8|5\x1e\xbf\x00\xb0\xbe|gC\xf0d\x00&z& |\x1c\xd2\x87\xdb\x02O!\xa5\xc5\xce;\x86i\x8a\xa6\xba\x02y\x00:Q\xa4^*\xfaa8\x9a\xbf\xf3L2\x8c\x8b\x09w\x19\x06`x\x9b\x0f\xcf\xf2\x82\xb5\x13\xf6\xde\xf0?\xc6.G\xc0f\xbb\xc2u$\xcd\xfd\x1e\x01\xd0\xcc?\x0d\xef\x096{&`\xf4\x18\xc2\xc9m\x81f\xffu\xf3\x8b\x0dC\xc0\xb3\x1d>\xd6)\xf0\xa3\x9e\x09\xc8\x9a\xc3\x1e\x199}\xa6\x0c\x90\x15\x99\x9f`\xb7,(5\xbe\xbdz\x7f\xf1\x06\xb4K\xb3\xe1X\x0b\xe6z&0\xc4V\x1d\xd8P+\x5c\xcfD~k\xf0\xf5'&\x9do\xfbb\x9bH\xb66\xe9\xfc\xa1\xc1\xd6%\xb2j(kF\xf0\xf4\x88_,\x14R.\x8e\xa6\xb8\x14W\xe3\xf1\x0b\xd9S\xcbo{3\xe0\xd9,\xf2\xeeR\xfcM\x08\x1e\xdbog\xdc\x11o\xd4\x8c\xe2\xda\xe4\x814\xa3\x5c\xa7\x1a'\x9f\x1b\x7f\x81|\xcb\xf2\xf4\xae\xed\xd8\x9a\xc1:/\xf9\xea\xea\xca\xe2W\xec\xd1\x8e\xdfh \x11<\xb1\xfc@\xf0\x0c\xb2\xa7f\x9d2\x1c\x13\xfa\xe8\xe3\x1frx6\x82c\xad\x95\xaf\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa6\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce|N\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x08\x15;\xdc;\x0c\x9b\x00\x00\x00*IDAT\x08\xd7c`\xc0\x00\x8c\x0c\x0cs> \x0b\xa4\x08020 \x0b\xa6\x08000B\x98\x10\xc1\x14\x01\x14\x13P\xb5\xa3\x01\x00\xc6\xb9\x07\x90]f\x1f\x83\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa0\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\x9cS4\xfc]\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x0b\x1b)\xb3G\xee\x04\x00\x00\x00$IDAT\x08\xd7c`@\x05s>\xc0XL\xc8\x5c&dY&d\xc5pN\x8a\x00\x9c\x93\x22\x80a\x1a\x0a\x00\x00)\x95\x08\xaf\x88\xac\xba4\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x01\xa8\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x01ZIDATX\x85\xed\x97Mj\xc2P\x14\x85\xbf\x1b\x82\x0e\xab\x13\xbb\x067\xe0\x0a\x0a\xba\x07Wa\x09\xe4)m\x07u\x12!\xe8*\x5cC)t\x05\xd9\x80{p\xa2\x1d*!\xa7\x83\x1a\xb1\x86P(\xb1\x16\x9a3{\xf7>\xde\xf9\xb8\xef\x87\xfb\xe0\xbf\xcb\xce\x03a\x18\xf6\xcd\xec^R\xcf\xccZU\x98H\xda\x9aY\x22i>\x9b\xcd^K\x01\xc6\xe3\xf1T\xd2\x03\xb0\x93\xb42\xb3\xf7\x8a\x00n\xcc\xac\x0b4\x81i\x14EO\x05\x00\xe7\xdc\x00x\x01\xde\xd24\x1d\xc6q\xbc\xae\xc2\xcf\xffP\x1b3K\xb2,[\x9c\x7f\xcdj}\x00,\x83\x82\xe5\xf9\x1d\x9c\xb3\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x00\xa6\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x02bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07tIME\x07\xdc\x08\x17\x14\x1f \xb9\x8dw\xe9\x00\x00\x00*IDAT\x08\xd7c`\xc0\x06\xe6|```B0\xa1\x1c\x08\x93\x81\x81\x09\xc1d``b`H\x11@\xe2 s\x19\x90\x8d@\x02\x00#\xed\x08\xafd\x9f\x0f\x15\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x02k\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x02\x1dIDATX\x85\xed\x961O\x13a\x18\xc7\x7f\xcf]7:q%\x01>\x80C\xb5\x08\x13N\x12\x16\x1d A\xfb\x1d`\xb6\xa1\x12\xa1\x0c\x1d\xc0\xa8=\xe3\xa4\x89\xe1;\x14\x07\x18\xc4\xa1\x81\x09&\xa0\xd8&~\x81j\x22\xd7\xa9L\xd0\xf7q\xe8\x81\x0c\x5c\xdb\xbb6.\xf6\xbf\xde\xfb\xdc\xffwO\xee}\xfe\x0f\x0c4\xd0\xff.\x09u:_\x8a9qg^\xd04\xc840\xee?\xa9\x81\x1e)R\xf4\x1a\xde\x0e\xf9\xd9\xab\xbe\x03\x0c\xbf;{bY\xfa\x01H\x02\xc7\x8a\x1c\xa0\xfa\xb3\xf5\x16\x19\x13\xf410\x05T\x0d\xf2\xa2\x9eM}\xeb\x0f\x80\xaa\x8c\xbc/\xaf*\xb2)\xc2vS\xed\xf5z\xf6~\xf5NH\xb7\x92\xb4\xa5\xb9\xa1\xca3U\xc9y\xd9\x07o\x10\xd1n?\xf2N\x8d\xb8\xa7k\x09\xb7|\x99(\x94\x17\xbb\xadI\x14\xca\x8b\x09\xb7|\xe9\x14\xceV;\x9dm\xdb\x01\xbf\xed_Q\x96\xce_Nlu\x0b\x00\x90p\xcbK\xc0gc\xe4i}%\xb5\x17\x1e _\x8a%\xe2\xce\xa9\x08?~/O\xa4\xc3\x98\xdf\x82\xd8\x06\xee\x9d7\xbc\x87A?\xa6\x15T\xec\xc4\x9dy \xd9T{=\x8a9\x80\xc1\xce\x01Ig\xc8\x99\x0b:\x13\x08\xd0\xbaj\x1c\x07\xfdp\xdd\xa8U\xab'\x16\x12\xd8\xc1@\x00\x90iE\x0e\xa2\x9a_K\xb1\xf6U\xf4Q\x04\x00\xc6o\xeeyo\x08\xbf\xf8;\xb0B\x01\xfc\x13\xb5\x03\xa8!2\xd6\xbb\x85\x8c\x02\xb5\x08\x00z\xe4\x8f\xd7\xde\xec13\xa2r\x18\x1a@\x91\x2205\xecV\x92Q\xcd[\xb52i\xd0bh\x00\xaf\xe1\xed\x00U[\x9a\x1bQ\x01,\x9a\x9b@\xc5\xbb\xf0vC\x03\x90\x9f\xbd2F2\xaa<\x0f\x93\x03\xd7\xf2G\xf1\x82A2\xed\xe2\xb9\xed-\xa8\xaf\xa4\xf6\x04\xcd!|\x0a\x15F-\xf3\x8f\xaa\x92\xeb\x14\xcb]\xc5\xb1\xe3~\x7f%\xa2\xaf\x81/\x06;\xd7.\x8e\xfd\xb6/(\xacy\xcb\xa9\xb7\x9d\xe28\xe2B\xa2'\x8a\xb5\xef\x0f\x19@F\x053\x032\x09T\x0c\x92\xe9\xdfBr[\xf9R\xcc\x19r\xe6,$\xed\x8f\xd7\x9b\x95LT\x0e\x0dZ\xf4.\xbc\xdd0+\xd9@\x03\x0d\xf4\x071\xe2\xd8\x82\x22J\xad\xa7\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x01\xa2\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x01TIDATX\x85\xed\x97Aj\xc2P\x10\x86\xbfI\x8a]V\xa9\x8dg\xc8F\xbb\xf2\x04\x05\xbd\x83\xa7\xb0\xe8\xae\xed\xa2.\x0d\xdaKx\x86R\xe8\x09\xb2R\xbb\xc8\x19\x14A\xbbTH\xa6\x0bc\x10\x83\x0a5\xe9\xa6\xef\xdb\xe5\xbd!\xff\xc7\xf2s\xd3\x09t\xde-\x1e\xf5<\xbb\x0fd\x80\x0f\x86f1\xfbR\x8d\xa2\x1d\xc2\x0e\x01\xfb\x819\x87.,\xe4\xb2o7\x87\x80\x99\xb6\x8d\x16\xae\x19\xba)\xf1\xbcb\xfe\xf5\x85\xdc\xee\xb95IF\xa5\x8c\xaf\xca\x0d3N\x9bi(\xce\xed\xb9\x8dd\x8d.rMl\x8b\xf2\x83aTX\x0eG\x0a\xe7\x1b\xf5\x09G\x0a\xe7\xc3\xa8\xb0\x1c\x8c\x14\xaf\xadg[\xb7\x02I\xd9_c\xf4\x95/\xef}\x04\x80\x99\xc2\xd1b\xafA\xbf\xa0\x0b\xc0 /\x18+\x0fd\x9f\xa6+\x0e\xa3B\x1f\xf0\xd09\x1d[\xb8\x92}\xd3<\x81\xe1\xe9\xb6\xb0#\xc8K|\xfe6\xb0\xb7\x07`\xeb\xbdRg\xbbU\x9e`\x9c4\xc3IxUN\xc9XL,\xc9?\xf7\xfd\xd2\xee\x85\x84\xc4s`Wy1\xee\xaau0\xbdZ\xf9\x83\x8e\xa0\x1b\xc8T\xcc\xbf\x9e\xae\xbc\xdd*O\xcc\xe8\x06H\x93\xaf\x1e\x9bq\xa2\xdd*\x8f1\x13\x80\xc3\x1f\x022\xc1\x96\xe0x\xad<5\x09T\xaf\x1a\x1f\xd2\x03\x17\x8e\x16{1N\xaa\xae\x0f\x1e\xc6\xa90*\x9e\x01\xa8\xfa\xdaG\x0f\xf54M\x00t\xc0\xd0l:3\xe87\xc3\xd5\xb6O\xec\x0c\x87g\xfd+~\xde\x8c\xc9\x0e\xd6\xb2o\xab\x13k\xe7\xef{\x0e\x08\xbaP=\xc2\x89\x9d\xf0@]\xab(}eE\xb0\xfe\xc2\xba\x01\xff5\xea\x11\x98G\xda\x91N\x0c\xf2\x0do\x01\x96_\xf9\xa2\xed\xc0\xfc\x06\x08\xd8\xfbD^\xaba`L\x8dn\x81\xd3\xd8\x8a\x9f;,\xd3\xbb\xa6\x09\x18\x1a\x07\xf6wF\xa5\x0c@Udxi\xd4\xae\x82\x81CL\x94s\xd9gP\x95f\xd0>\x87\x8d7M ^\x8c\xa7\x809_\x95\x1b\xc9\xd2lI\xfeY\x89IHK\x9d$N\xc6\x12\x93K\xf2\xcf\xa5j\xe8Q\xb9\x09\x94\xe2\x1f\xf1\xabZy6&\xc5Q\xf1L\xf5\xaa\xa5\xa7\xdd\xf28\x8d\x95s\xd9g\x7fH\xf1\x03\x87\x8e5\xda\x19\xd7\xc4\x86\x9aQT\xe8\xdb\x94f\x04\x80\x99\x82\xe8\xd3U\xc9n\x01/\x1c\xfeP\xbdv\x9c\x94\xfd\x94\xc1`<\x90\xbd\xb3^;\xde\xe0\x83\xc4>\x1a\xdeL\x222\x80\xb6\x0bw\x18\xb4\x0f(9tq\xf3\x1e$\xab1<\xdd\x16l\x09\x8e{\xa8'\x91\xd7\xdfO2\x99\xde9l<\xfe\x11\xbfj\xe6I\xd6B\x0b-\xfc\x02\x9d\x07<\xe4\x1f\x0b_\x15\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x01\xa4\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x01VIDATX\x85\xed\x97Aj\xc2@\x14\x86\xbfg\x8a.\xab\xd4\xc63d\xa3]y\x82\x82\xde\xc1SXt\xd7v\xa1K\x83\xf6\x12\x9e\xa1\x14z\x82\xac\xd4.r\x06E\xd0.\x15\x92\xd7\x851H\xd2t\xd1&(4\xdfrf\x98\xff\xe3\x0d3\xbc\x81\xff\x8eD\x07L{\xd6R)<\xa8\xd2\x04\xca)\xe5lEpD\xfd\xf1\xaaw\xf7\x96(pc/\x86\x02\x8f\xc0\x0e\xd4E\xe53\x95x\xd1k\x10\x0b(\xa1\x0c\xd7\xfd\xfasL\xe0v\xcc\x07\x00s\x00t\x00y\x00l\x00e\x00s\x00h\x00e\x00e\x00t\x00-\x00b\x00r\x00a\x00n\x00c\x00h\x00-\x00e\x00n\x00d\x00.\x00p\x00n\x00g\x00\x1c\x01\xe0J\x07\x00r\x00a\x00d\x00i\x00o\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\x00\x14\x06^,\x07\x00b\x00r\x00a\x00n\x00c\x00h\x00_\x00c\x00l\x00o\x00s\x00e\x00d\x00-\x00o\x00n\x00.\x00p\x00n\x00g\x00\x0f\x06S%\xa7\x00b\x00r\x00a\x00n\x00c\x00h\x00_\x00o\x00p\x00e\x00n\x00.\x00p\x00n\x00g\x00\x0c\x06A@\x87\x00s\x00i\x00z\x00e\x00g\x00r\x00i\x00p\x00.\x00p\x00n\x00g\x00\x10\x01\x00\xca\xa7\x00H\x00m\x00o\x00v\x00e\x00t\x00o\x00o\x00l\x00b\x00a\x00r\x00.\x00p\x00n\x00g\x00\x1c\x08?\xdag\x00c\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\x00\x0f\x01\xf4\x81G\x00c\x00l\x00o\x00s\x00e\x00-\x00h\x00o\x00v\x00e\x00r\x00.\x00p\x00n\x00g\x00\x18\x03\x8e\xdeg\x00r\x00i\x00g\x00h\x00t\x00_\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\x00\x1a\x0e\xbc\xc3g\x00r\x00a\x00d\x00i\x00o\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\x00\x17\x0c\xabQ\x07\x00d\x00o\x00w\x00n\x00_\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\x00\x11\x0b\xda0\xa7\x00b\x00r\x00a\x00n\x00c\x00h\x00_\x00c\x00l\x00o\x00s\x00e\x00d\x00.\x00p\x00n\x00g\x00\x1a\x01\x87\xaeg\x00c\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00i\x00n\x00d\x00e\x00t\x00e\x00r\x00m\x00i\x00n\x00a\x00t\x00e\x00.\x00p\x00n\x00g\x00\x17\x0ce\xce\x07\x00l\x00e\x00f\x00t\x00_\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g\x00\x19\x0bYn\x87\x00r\x00a\x00d\x00i\x00o\x00_\x00u\x00n\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\x00\x1a\x05\x11\xe0\xe7\x00c\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\x00\x17\x0f\x1e\x9bG\x00r\x00a\x00d\x00i\x00o\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\x00 \x09\xd7\x1f\xa7\x00c\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00i\x00n\x00d\x00e\x00t\x00e\x00r\x00m\x00i\x00n\x00a\x00t\x00e\x00_\x00f\x00o\x00c\x00u\x00s\x00.\x00p\x00n\x00g\x00\x0c\x06\xe6\xe6g\x00u\x00p\x00_\x00a\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\x00\x1d\x09\x07\x81\x07\x00c\x00h\x00e\x00c\x00k\x00b\x00o\x00x\x00_\x00c\x00h\x00e\x00c\x00k\x00e\x00d\x00_\x00d\x00i\x00s\x00a\x00b\x00l\x00e\x00d\x00.\x00p\x00n\x00g" +qt_resource_struct = b"\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00J\x00\x02\x00\x00\x00'\x00\x00\x00\x04\x00\x00\x04P\x00\x00\x00\x00\x00\x01\x00\x00\xd9M\x00\x00\x03D\x00\x00\x00\x00\x00\x01\x00\x00\xc8\xdb\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\xacm\x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\xb4\xcc\x00\x00\x05\xa4\x00\x00\x00\x00\x00\x01\x00\x00\xe3\x02\x00\x00\x03\xa2\x00\x00\x00\x00\x00\x01\x00\x00\xd4\xe2\x00\x00\x04\xb4\x00\x00\x00\x00\x00\x01\x00\x00\xdb\xbb\x00\x00\x02\xd6\x00\x00\x00\x00\x00\x01\x00\x00\xbcs\x00\x00\x04\xd8\x00\x00\x00\x00\x00\x01\x00\x00\xdd\xf4\x00\x00\x02\xfa\x00\x00\x00\x00\x00\x01\x00\x00\xbd\x17\x00\x00\x06J\x00\x00\x00\x00\x00\x01\x00\x00\xe7\xc7\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\xad'\x00\x00\x042\x00\x00\x00\x00\x00\x01\x00\x00\xd8\xc8\x00\x00\x04\x0e\x00\x00\x00\x00\x00\x01\x00\x00\xd8\x1e\x00\x00\x03\xe0\x00\x00\x00\x00\x00\x01\x00\x00\xd7\x87\x00\x00\x00|\x00\x00\x00\x00\x00\x01\x00\x00\xa9\x8e\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xee#\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\xbb\xd9\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\xb9\x89\x00\x00\x03j\x00\x00\x00\x00\x00\x01\x00\x00\xd3\xfe\x00\x00\x04v\x00\x00\x00\x00\x00\x01\x00\x00\xda-\x00\x00\x00\x94\x00\x00\x00\x00\x00\x01\x00\x00\xab\xbd\x00\x00\x024\x00\x00\x00\x00\x00\x01\x00\x00\xb7P\x00\x00\x03\x1c\x00\x00\x00\x00\x00\x01\x00\x00\xbd\xc0\x00\x00\x01\x10\x00\x00\x00\x00\x00\x01\x00\x00\xafT\x00\x00\x07\x1c\x00\x00\x00\x00\x00\x01\x00\x00\xee\xc5\x00\x00\x06\xb8\x00\x00\x00\x00\x00\x01\x00\x00\xec{\x00\x00\x01l\x00\x00\x00\x00\x00\x01\x00\x00\xb2\x7f\x00\x00\x00T\x00\x00\x00\x00\x00\x01\x00\x00\xa6\xa9\x00\x00\x06\x12\x00\x00\x00\x00\x00\x01\x00\x00\xe5X\x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00\xb6]\x00\x00\x05|\x00\x00\x00\x00\x00\x01\x00\x00\xe2^\x00\x00\x05\xde\x00\x00\x00\x00\x00\x01\x00\x00\xe4\xae\x00\x00\x05H\x00\x00\x00\x00\x00\x01\x00\x00\xe1\xb4\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x00\xb4\x05\x00\x00\x05\x0e\x00\x00\x00\x00\x00\x01\x00\x00\xde\x98\x00\x00\x02\x8a\x00\x00\x00\x00\x00\x01\x00\x00\xbb/\x00\x00\x06\x84\x00\x00\x00\x00\x00\x01\x00\x00\xe9m\x00\x00\x01<\x00\x00\x00\x00\x00\x01\x00\x00\xb1\xdc\x00\x00\x002\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() diff --git a/themes/qdarkstyle/qtpy_style_rc.py b/themes/qdarkstyle/qtpy_style_rc.py new file mode 100644 index 0000000..8d6d7be --- /dev/null +++ b/themes/qdarkstyle/qtpy_style_rc.py @@ -0,0 +1,1635 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt5 (Qt v5.6.2) +# +# WARNING! All changes made in this file will be lost! + +from qtpy import QtCore + +qt_resource_data = b"\ +\x00\x00\x17\x1d\ +\x00\ +\x00\xa6\xa5\x78\x9c\xdd\x3d\x6d\x73\xdb\x36\xd2\xdf\xfd\x2b\x90\ +\xf8\x8b\xd3\xc7\x8a\x2d\xc9\x76\x13\x75\xf2\xc1\x8e\x9d\x5e\xe6\ +\x49\x93\xb4\x76\xdb\xb9\xb9\xb9\xf1\x50\x12\x2c\xf1\x4c\x91\x0a\ +\x49\xc5\xf1\x75\xfc\xdf\x0f\xef\xc4\x3b\x40\x91\x76\xee\x79\xdc\ +\xab\xcf\x05\x81\xc5\xee\x62\xb1\xbb\x58\x60\x81\x83\x1f\xc0\xaf\ +\xe7\x49\x79\x7b\x59\xdf\x67\xf0\x72\x09\x61\x0d\x06\x5b\xfe\xec\ +\xec\x5c\x2d\xd3\x0a\xa0\xff\xd5\x4b\x08\x56\x49\x9a\x83\x0a\x43\ +\x05\x15\x06\xbb\x4f\x4a\xd7\x49\x06\xeb\x1a\x82\x65\x52\x81\x3c\ +\xcd\x59\xb5\x59\x91\x15\x65\xf5\x72\xe7\x7d\x8d\x5b\x4f\x93\x0a\ +\xce\x41\x91\xa3\x06\x25\x44\xad\x61\x06\x67\x75\x9a\x2f\x58\xb5\ +\x7d\x56\xbe\x28\xe1\x7d\x5a\x2d\xc1\xde\x34\x99\xdd\x2e\xca\x62\ +\x93\xcf\x5f\xb0\x2a\x3b\xeb\x6c\x53\xb1\x6a\x77\xcb\xb4\x26\xd5\ +\x6e\x8a\x12\xaa\xd5\x5e\x82\x8b\x64\xb6\x44\x1d\xd4\xa0\xb8\x01\ +\x77\xe9\x7c\x01\xeb\x0a\xff\x89\x31\xad\x92\x15\xdc\xa9\xef\xd7\ +\x18\xd7\xaf\x10\x24\x60\x09\x93\x39\x2c\x41\x96\xde\x42\x54\x21\ +\xad\x26\x3b\x3b\x00\xfd\x58\xf8\x80\x8b\x7f\x46\x3d\xad\x3f\x22\ +\x18\x40\x29\xb6\x71\xed\x34\x9f\x03\x88\x11\xa1\x18\x60\x16\x54\ +\x70\x9d\x94\x49\x8d\xd8\x70\x97\xd6\x4b\x77\xe7\xbf\xfe\x49\x9a\ +\x48\xfd\xb0\x41\x58\x25\xb7\x10\xfd\x46\x24\x23\xd0\xd5\x3d\xa8\ +\x0b\x70\x93\xa2\x7e\x12\xf4\xef\x6c\x99\xe4\x0b\x44\x60\x81\x1a\ +\xcd\xaa\x0a\x7d\x80\xd9\xfc\x25\xb8\x42\x44\x23\xd6\xa7\xb3\x9d\ +\x59\x91\xdf\xa4\x8b\x0d\x42\x20\x45\xa3\x80\xa0\xcd\x61\x35\x2b\ +\xd3\x29\x42\x67\x0a\xb3\xac\xb8\x7b\x49\x7b\xbf\xbc\xf8\x70\xf1\ +\xf6\xea\xfd\xa7\x8f\x40\x25\x08\xb0\x1f\x34\x72\xd7\x59\xba\x58\ +\xd6\x00\xec\x0e\x7f\x7c\x7d\x7a\x71\x88\xfe\xff\xe8\xd5\xdb\xf3\ +\x11\xd8\x63\xa3\x5a\xe4\x07\xcb\xe2\x2b\x2c\x0f\x12\xf4\x1f\x5f\ +\xe1\x0b\xa5\x6d\x5e\x94\xab\x24\x03\xbb\xe3\xf1\x8f\xc7\xa7\x63\ +\xdc\xf6\xe4\xe8\xf4\x90\xb7\x85\x73\xb5\xf6\x1c\x49\x31\xc0\x3d\ +\xbd\x3a\x3a\x39\x3e\xc7\xb5\x8f\x0f\x4f\x2e\x9a\xda\x60\x9e\x56\ +\xc9\x34\xc3\xcd\x48\xbb\x77\x9f\x7e\xbb\xf8\xf9\xb7\x4f\xbf\x7f\ +\x3c\x07\x56\xec\x91\xbc\x08\xec\x2f\xde\xbd\x3b\x7c\x37\x04\xbb\ +\xe8\x37\xfa\x07\xec\xd5\xf0\x5b\x5d\x1d\x64\x09\x62\x47\xf5\x42\ +\x69\xc1\x70\xe6\x3f\xbb\xa7\xe4\x07\xec\xe5\x45\x0d\x36\x58\xae\ +\xef\x61\xad\xb6\xe0\x78\x1f\x1f\x1e\xbf\x3b\x79\x0d\x76\x7f\x7c\ +\x85\xff\x01\x7b\x1c\x5d\x40\x3a\x63\x48\x9f\x9d\xbe\xfd\x5f\x1f\ +\xd2\x68\x2e\x08\xa4\x8f\xce\x8f\x8f\x8e\xcf\x04\xe0\xbd\x4d\xbe\ +\x2e\x61\x55\xc9\x7c\xc3\xd5\x05\x97\x87\xe3\x93\x31\xaa\x3e\x1e\ +\x1d\x0d\x8f\xce\xd0\xb4\x2a\x4a\x24\x72\xfb\x82\x6d\xfb\x80\x35\ +\xdf\x47\x12\x04\x67\xb7\xf8\x8f\xba\x28\xb2\x69\x82\xe7\xe4\x0a\ +\xe6\x9b\x4a\x05\xcc\x09\x1b\x8d\x47\x27\x23\x44\xd8\xf0\x35\xfa\ +\xeb\x5c\x99\xaf\x3b\x3b\xef\x6f\x90\x74\x57\x75\x89\x45\xb2\x04\ +\x86\xe4\x95\xf0\xcb\x26\x2d\x89\xe0\xcd\x12\xc4\x3f\x3c\x3b\x13\ +\x30\xdd\x2c\x6e\xd2\x6f\xa0\x28\x91\x3c\xdf\xa3\xe9\x90\x2f\x76\ +\xd0\x40\xc0\x7d\x70\x0b\xe1\x9a\xcc\xde\x59\xb1\x42\x18\xd5\x54\ +\x8b\x24\x35\x9a\x38\x48\xd7\xa0\x49\x90\x17\xd3\x62\x7e\x5f\xb1\ +\x39\x30\x07\x29\xd2\x4b\x69\x3e\xcb\x36\x73\xac\x60\x50\xcb\x9d\ +\xb4\xaa\x36\x10\xe4\x9b\xd5\x14\x96\x2f\x77\xb6\xd5\x85\x96\x1f\ +\xf0\xc3\xc1\x0e\xfa\x39\xf8\x81\xcf\xda\xad\x15\xad\x02\x91\x03\ +\xfb\x6b\x87\xf1\x9d\xf1\x76\x40\x74\xdc\x84\xb3\xfd\x27\xfa\x99\ +\x8c\xe9\x04\x1c\xae\xbf\xa1\xf9\x9f\xa5\x73\x3e\xdc\xf4\xf3\x3a\ +\x99\x63\x3e\x90\xef\xb4\x84\x03\xa1\x82\x4f\xcb\xc4\xd4\x1d\xd8\ +\x7a\x23\x73\x54\xaf\xa8\x83\x79\x10\x78\x4f\x84\x98\x47\x11\xc0\ +\xcb\xe8\x24\x89\xc2\x07\x6b\x01\x17\x3e\x1c\x8c\x84\x4f\x5a\xc3\ +\xd5\x44\xe8\x0c\x37\x52\x8c\x4e\xbd\x25\xd1\x66\xbe\x66\x58\xfd\ +\xa9\xb4\xf0\x11\x78\xa0\xc2\xf1\x0b\xb2\x88\x7f\x22\x5d\x5d\xdc\ +\x75\x12\x10\x2c\x1c\x08\x1c\xb1\x06\xc9\xfc\x5f\x9b\xaa\xa6\x76\ +\xb9\x5a\x67\x29\xb2\xc0\x25\x12\x7b\xf2\xdf\xf3\x62\x76\xcb\x2c\ +\xcf\x3e\xc0\x5a\xea\x8b\xa8\xa1\xfc\x10\xe9\x95\x90\x9b\x4c\x98\ +\x91\x2a\x3c\xe4\xca\xc2\x25\x64\x8f\x4b\x9e\x3c\xae\xd5\x3a\x99\ +\x51\xc9\xd3\x24\x71\x84\x25\xf1\xc1\xd5\x73\x88\xdd\x54\xf5\x39\ +\x65\x9f\x8f\x86\x0f\x7e\x99\xfe\xbb\xc8\x6b\xa4\x20\x69\x27\x88\ +\x53\xf5\x72\x02\x8e\xf9\x04\x59\x25\xe5\x22\xcd\x07\x75\xb1\x66\ +\xb8\x4a\x85\xd3\xa2\xae\x8b\x95\x54\x9e\xae\x92\x05\x9c\x80\x4d\ +\x99\xed\x4d\x0e\xbe\x54\xd5\x75\x8a\x14\x5e\x75\x50\xce\x0e\xfe\ +\x20\x5d\x32\x75\xfa\x72\x9d\x2f\x5e\xf8\xb0\x42\x34\xd7\xe9\x4c\ +\xe0\xb4\x84\x58\xe3\x9b\x48\x65\xf0\xa6\x36\xb1\x2a\x69\xe5\x08\ +\xa4\xfe\x66\x47\x0a\x0b\xe9\x15\x2a\xbc\x4a\xd7\x5d\x55\x18\xd5\ +\x60\x1c\x58\xd4\xac\xe1\xc3\x38\x94\x86\xd1\xa2\x20\xe4\xb2\x46\ +\xad\xfd\x84\xfe\xeb\xe0\x87\x12\xae\x90\xd8\xf0\xe2\x7d\x6c\x85\ +\x01\xb6\x27\xc8\x68\x4c\x0b\xd4\xc1\x37\x62\xd7\xea\x74\x8d\xb0\ +\xc3\xed\x0b\x2c\x9c\xf5\x3d\xe2\xd9\x18\x41\xc0\xed\xe7\x9b\x19\ +\xb1\x17\xc8\x6c\x21\xc9\x2d\x61\x3e\x23\x2e\x56\x89\xbc\x34\x64\ +\xa9\xf0\xe4\x41\x4d\x19\xab\x2e\xeb\xa4\xde\x54\x67\x49\xd9\x8d\ +\x59\x94\x55\x0d\xb0\xbf\x5c\xdc\x50\xe6\x9c\xe0\x65\x33\x19\x11\ +\x01\x88\x58\xe4\x1d\x56\xeb\x7b\xec\x53\xee\xbe\x1e\x8e\x0e\xf7\ +\xf1\xef\x21\x45\x5a\xea\xe4\xff\xf1\xd0\xc8\x54\x7e\xc0\x8e\x9c\ +\x93\xc6\x06\x54\x1d\x66\x1e\x1e\xf1\xb7\xd8\x3d\x3a\x43\xb8\xf6\ +\x31\x39\x04\xb0\x56\xf6\x51\xb1\xd7\x5c\xb7\x1e\xf1\x29\x5f\x6c\ +\x6a\xec\x10\x4d\x90\xbe\xcf\xa1\x32\x10\x54\x91\x89\x8a\xbc\x94\ +\x6b\xb2\x23\xae\x8d\x39\x56\x93\x9b\x62\x86\x96\x5a\xaa\x30\x52\ +\xa8\x72\x35\xd0\x8f\xb5\x57\x7a\x9e\x20\xb5\x88\x94\x60\x63\x7f\ +\x14\xad\x27\x48\x60\x0a\x7b\x78\xc2\x0b\xb8\xb6\xa4\x25\x0e\x90\ +\x93\x4d\xce\x9c\x5c\x06\xdc\xad\x25\x49\x3d\x24\x99\xd7\xa2\x89\ +\xa4\xbf\xbd\xa0\xa9\xf5\xda\x0f\xd5\x22\x2c\x0e\xd6\x62\xce\xb9\ +\x75\x28\xda\x12\x70\x4d\xba\x8c\x26\x43\x1b\xd4\x56\x3d\xf1\xb6\ +\x81\xce\x5a\x0f\x46\xdc\x50\xc4\x0c\x44\xcc\x30\xf4\x38\x08\x6d\ +\x86\x40\x1f\x80\xb6\xdc\x89\xe5\x3e\xfa\x0b\x22\xc5\xb9\x4a\xf3\ +\xa4\x86\xf1\x63\xa0\x34\x6b\xd3\xc5\x16\x12\xa5\xb4\xdf\x8a\x2e\ +\xef\x00\xab\x35\x7d\xe2\xa2\xd6\x54\x05\xa2\x35\x1d\x9a\x10\x60\ +\xe3\x42\x02\x4b\x7d\x19\x17\x01\x8c\xe2\x77\x83\x3c\xdd\xc1\x1d\ +\xd3\x8f\xd3\x22\x9b\x3b\xed\xba\xe9\xd8\x0f\xca\x64\x9e\x6e\x2a\ +\xd3\x78\x48\x25\xb2\xb3\x2c\xd4\xaf\x84\xc6\x64\x52\xa7\x75\xc6\ +\x25\xac\xda\x4c\x11\x7b\xea\xb2\xc8\x06\xc8\x0b\x47\x0d\x27\x0c\ +\xc0\x4f\xfa\xe7\x75\x51\xa5\x78\x5d\x87\x6c\x75\xb1\x06\xd8\x00\ +\xd0\x2a\xd4\x14\x8c\x75\x6b\xe6\x28\x2e\x35\x2f\x5a\x31\x89\xaf\ +\x5c\x26\xb1\x31\x23\x0d\x15\xbd\x59\xa6\x48\x90\x23\x4f\x7d\x8b\ +\xb9\xf1\xd7\xe2\xd3\xc0\x5f\xeb\x51\xcd\x8d\xad\xeb\x18\x22\x62\ +\x48\x78\x02\x55\xed\xeb\xb6\xbd\x66\xf3\xe8\x6a\xff\x10\xf5\x6b\ +\x96\xb1\xee\xf9\x0d\x4d\xf1\xe2\x6c\x83\x04\x3f\xef\xa2\x7e\xa8\ +\xee\x91\x81\x75\xf7\x6d\xf5\xb8\xc1\xe1\x4f\x8e\x71\xd5\x7c\xdf\ +\x07\x15\x93\x80\x3f\x2b\xd7\xec\x1e\xb8\x6a\x8b\x1c\x68\x15\xeb\ +\xf3\xb3\xcb\x50\xd2\x87\x9e\xc5\x81\x9f\x11\x86\x6e\x0a\xd2\x25\ +\x29\x30\x23\x46\xc2\xb4\xe2\xe8\x58\xd7\x8a\xb4\xc4\xdd\x79\x0b\ +\x97\x1d\x9b\xaa\xc2\xea\xaf\x87\x40\x0b\xf5\x13\xac\xc8\x75\x50\ +\xb0\x62\x48\x11\x59\x78\x17\x4d\x99\xa1\x9a\x1c\xd8\xa8\x8c\xeb\ +\x05\x87\x68\xde\x46\x72\x36\x92\xaf\x8f\xc8\xd5\xed\x78\xaa\xeb\ +\x89\x0e\x1d\x5b\x2c\x40\x50\xba\xa2\x8d\x80\x2e\x39\x76\x0b\xf0\ +\x0b\xcc\x37\x9d\x43\x59\xdc\x02\x70\x60\x51\xe1\x63\x35\x22\xec\ +\x70\x4b\x7d\xfa\xef\xa1\xe9\xd1\xaa\xe5\x87\x8e\xb8\x30\x6b\x42\ +\xc2\xfb\x06\xaa\x6a\x74\xc8\xe2\xf6\x1a\x20\xf4\xbd\x05\xd3\x4b\ +\xf6\x42\xf7\xec\xe0\x98\x5d\xa9\x93\xc0\xd2\x93\x7f\x3b\x28\x72\ +\xff\x42\x36\x30\x9a\x56\xd7\xcd\x8c\xfa\x41\x92\xa9\xce\x7b\x61\ +\xb2\x4c\x69\x03\xeb\xa0\xce\x8d\x7e\x83\x1e\x01\x67\xee\x74\x08\ +\x93\x64\x0e\x99\x75\xeb\xc1\xd6\x95\xba\x18\xd1\x97\x48\xe1\xd0\ +\x7d\x83\x1d\x9e\xc2\xca\xaa\xc0\xc2\x77\x02\xef\x48\x6b\xd7\x08\ +\xb4\x2c\x1a\x60\x84\x7f\xf1\x3f\xcc\xa9\x26\x89\x64\x13\x53\x06\ +\x68\x20\x91\xb0\xc1\xf2\x2b\x24\x4e\x06\x24\x91\x5b\xb1\xe1\xc6\ +\x00\x00\x16\x7a\x6d\xfa\xd7\x67\x83\x65\xd2\x36\xf5\x35\x37\x83\ +\xaf\x9f\x46\xc6\xfa\x69\x64\x25\xff\xa4\x91\x39\xa4\x7b\x07\xf0\ +\xdb\x2c\xdb\x54\x29\x42\xb8\x01\xfc\x86\x6e\x6d\x93\x40\x33\x3d\ +\xbb\xd2\x7c\xdb\xab\x20\x04\xbf\x9e\x12\x7a\x88\xe3\x8d\xe5\xa2\ +\xbe\xe0\x50\x5e\x34\xf2\x27\x6b\x62\xa5\xa7\xbe\xa2\x8a\x91\x9d\ +\xe8\xcc\xed\x1a\x98\xf3\x77\xdb\x43\x88\x2e\xaa\x83\x2d\xa8\xf2\ +\xda\x34\xbb\x1c\x10\x73\x08\xa6\xd4\xef\xee\x47\x14\xb6\x11\x03\ +\xb7\xa7\x1a\x01\x3d\x9e\x53\x61\xe3\xef\xe9\xaf\x1d\x2d\x6d\x28\ +\xd9\x92\x8e\x20\x15\x44\x8f\x0e\x92\xb2\x2c\xee\x34\xc5\x29\x56\ +\x1d\x9e\x3e\x70\xe3\x6b\xd2\x98\x00\xe6\x66\xec\x74\x8a\x8f\xb1\ +\xcc\xea\xf7\x48\xad\xfd\x91\xc2\x6d\x77\xef\xa9\xec\x18\xc0\x28\ +\x9a\x49\x56\xc3\x12\x47\x06\xad\x47\x1d\x02\x8b\xbf\x2d\xc2\x78\ +\x0f\x36\x54\x7e\xfd\x80\xfc\xd7\x8b\x79\x5a\xeb\xc6\x63\x24\x19\ +\x75\xde\xea\x72\x56\x16\x59\x76\x5a\xc2\x64\x2b\x7e\xa8\xdc\x90\ +\x80\x45\x2d\x81\x7b\x0b\x5c\xda\x7c\x49\x13\x29\xdd\xd9\xb6\x6c\ +\x5f\x91\x0d\xe1\x6e\x2c\x51\x59\x23\x01\xe3\xd1\x81\xf6\x7b\x6d\ +\x0a\x62\x7d\xed\x54\x73\x60\xe6\x19\x0a\x35\xce\x29\x4f\x3f\x24\ +\x41\xa4\x54\xfc\xd1\x69\x1c\xfd\x14\x4b\x18\x4e\x96\x49\x3e\xcf\ +\xa0\x89\xa9\x05\x82\x2d\x80\xd3\x12\xaf\x15\x72\xe5\x98\xf3\x42\ +\xc2\xca\x41\x6c\xda\x9c\x2a\xf2\x2c\x67\xda\xe0\xa4\xa1\x84\x66\ +\xc4\x80\x2c\x5b\x0d\x16\x49\x2e\xa7\xfc\xaf\xd2\x5b\x94\x32\xd5\ +\xd5\xb5\xec\xe2\x1d\x1a\x2e\x9e\x28\xb1\x6e\x03\x10\xb0\xc6\x77\ +\x7d\x17\x41\xa3\x11\xd5\x8c\xa0\x71\xcc\x68\x1c\x47\xd3\x88\x9d\ +\x4f\x37\x89\x26\x45\x06\xd1\x56\x12\x9b\x5d\x8e\x78\x0a\x2d\xa3\ +\x28\xc2\x2e\x81\x6a\x4d\x90\xb6\xc5\x90\xf6\x40\x66\x5f\x23\x69\ +\xa3\xd3\x56\x2d\x9e\xce\x66\x58\xbf\xd3\x68\x6e\xd6\xd4\x85\x91\ +\xd0\x57\xe9\x9b\x17\x77\xb9\x51\xc5\x12\xc2\x68\xc2\xba\x9a\x10\ +\xac\x31\xed\x2e\xe8\x98\x7b\x5a\x85\x48\xd8\xda\xf1\xb5\x80\x11\ +\x37\xb6\xc9\xf8\x6c\x54\x0c\x85\x37\x2c\x14\xe3\xe6\x98\xfa\x37\ +\x8c\x66\x0b\x5b\x80\xf5\x2b\x17\x8e\x57\x9a\xea\x68\x81\xcb\x13\ +\x59\x02\x05\x53\xe7\xec\xd2\x18\xc4\xc7\x45\xd2\x90\x2d\x2c\xc1\ +\x66\xdd\xbf\x8e\xac\x8b\xf5\xd6\x2a\xb2\x57\xe2\xf0\x4c\xec\x9f\ +\x3c\x1a\x4c\xdb\x5a\x39\xaa\x32\xe5\x50\x8d\xa2\x52\xbc\x62\xe4\ +\x23\xf9\x5f\x32\x80\x5e\x0b\xb7\x05\x79\xcd\x58\x7e\xb7\x21\x14\ +\x9a\x9f\xa3\xef\xd4\xfb\x4e\x1d\x16\xd2\xfa\x76\xc8\x42\xe7\xc7\ +\xc0\x25\xe7\x84\xe1\xb7\x1a\x2f\x15\x3b\x2d\x28\xc4\x39\x61\x06\ +\x6c\xfb\xfd\x4f\x8f\x92\x7e\x90\x3a\x50\xb5\xac\x5f\x8d\xda\x96\ +\x86\x02\x8e\x33\x8f\x40\xcb\x94\x70\xa4\x02\x7c\xce\x92\x34\x17\ +\x54\x77\xe4\x9e\x0a\xac\x23\x0b\x2d\x8b\x2d\x3f\x6b\x95\xde\xbb\ +\xf2\x57\x05\xd6\x91\xc9\x97\xe9\xbf\xe1\xcf\x65\x5f\x67\xd9\x05\ +\xb4\x50\xa8\xaa\x42\x15\x17\xa8\xa2\x65\xb5\xe3\x08\x68\x37\xe7\ +\xc9\x71\x74\xab\x6b\x0e\x91\x38\x4f\x2e\x01\x33\x37\x03\x5a\xb8\ +\x54\xd6\x8d\x38\x29\x5d\xa0\xb7\x6d\x43\x0e\xcc\x29\xc2\x16\x77\ +\x4f\x9c\xd6\xb2\xef\x15\x9a\x9b\x8b\x96\xa3\x70\x0f\x52\xdf\xf4\ +\x0f\x12\x1d\x0e\xa2\x21\xb5\x73\x47\x1a\xd8\xd8\x0b\x27\xd7\x93\ +\x95\x81\x4f\xc8\x9b\x99\x22\x7a\x0f\x8e\x1c\x91\x88\x0e\xfe\x08\ +\x74\x10\xce\x8e\x19\x47\x50\xe1\x48\x78\xb1\xf4\xe2\xa0\x24\xa2\ +\x13\x57\x56\x4d\x33\x78\xbb\x5f\xea\x6b\xf6\xfd\x1a\xe9\x93\xeb\ +\xa9\xfd\x3c\x92\x2b\x95\xc9\x97\x26\xd7\x66\x85\xac\x07\x4d\xd7\ +\x69\xde\xe1\x88\xa7\x16\x34\x65\xc0\xfa\x88\x98\xfa\x36\x32\x45\ +\x0a\x14\x2e\x04\x3c\xf5\x0c\x27\x6f\x20\x27\x68\xbc\x0f\x86\xc3\ +\x21\x4b\xda\xd0\x37\x83\x69\xa3\x98\x16\xda\x66\xa9\x76\x72\xf3\ +\xc8\xb7\xae\x62\x48\x49\x71\x2e\x1c\xeb\x07\x34\xe1\x64\x4e\x13\ +\xa4\xd1\x52\xf2\xf0\x35\xdf\xa4\xd4\xf8\x87\x9d\x2e\x87\x74\x58\ +\x12\x45\xb4\xec\x36\xd3\xb3\xa3\x28\xfa\x5d\x5f\x39\xf8\xc1\x48\ +\xa2\x0c\x70\xad\x31\xf9\xc2\x58\x0f\xdd\x73\x12\x84\xe3\xb8\xef\ +\xf9\x26\xe2\xc6\xde\x4a\xc5\xcd\x4d\xd0\xc4\xf9\x96\x74\x6c\x0c\ +\x5e\xeb\xa6\xee\x75\x10\x77\xc5\x79\x88\x5e\x85\xd8\x40\x12\x3f\ +\xf9\x29\xc7\x94\x0a\x7c\xff\xc3\xda\x38\xfc\xb6\x31\x93\x96\x03\ +\xbe\xa1\x95\xaa\xc5\x0c\xae\x7f\x49\xdb\x7e\x78\x95\x60\x55\xcc\ +\x00\x1b\xeb\x30\x1b\x58\x02\x6a\x6b\x3f\x53\x87\xd6\xcd\xd3\xec\ +\xe8\xfc\x28\xea\x1d\x81\x3b\x7f\x7f\xf9\xf9\xc3\xe9\xdf\x2f\xfb\ +\x70\xaa\x7a\xc6\x8e\x18\x33\x9a\x54\xd7\x0f\xbc\x40\x86\xde\x56\ +\x39\xee\xda\xe1\x1a\xa7\x35\x27\x92\x40\xfa\x9f\xb4\x3c\xf3\x1b\ +\x79\x00\x49\xdb\x1e\xc4\xeb\x9a\x33\x24\xd5\x15\xec\xe4\x2f\x37\ +\x4b\x66\x0e\xec\xb1\x1c\x00\x57\x14\x53\xea\x7b\x4b\xc6\x05\x90\ +\x30\xc3\xaf\x7e\x24\x78\x20\x48\x2e\x7b\x66\x2b\x14\x13\x5d\x2f\ +\xb7\x9f\x2a\xb5\x2f\x79\x69\xb2\x4e\xb2\x5e\xa6\xb3\xaa\xc3\x79\ +\x80\x41\x93\xab\x23\xc1\x7a\xea\xb1\x94\x3b\xff\x7e\x83\xa9\x60\ +\xd1\x24\x82\x48\x85\xcf\xac\xa5\xf2\x78\xaa\x1f\xda\x0e\xe8\xdb\ +\x24\x83\xf9\x3c\x29\x3b\xae\xbe\x59\x6a\xaf\x0a\x2c\x88\x83\x8f\ +\x35\x2a\xac\xee\x79\xb6\x44\x83\xbf\x3d\xff\x48\xee\x41\xe9\xe3\ +\x3c\x40\x03\x6c\xab\xd0\xd3\x83\x0c\xa2\x1f\xf2\x3e\x97\xc5\x02\ +\x0f\x7f\xc7\xc0\x04\x8b\xae\x49\xc0\x9e\x72\x72\xe2\x72\x7c\x41\ +\xd0\x20\xc9\xd2\x05\x32\x62\x33\xe4\xa8\x62\x1f\xf4\x41\xc5\xe9\ +\xfb\xcc\xd9\x58\xe4\x26\xb3\xe5\x26\xbf\xf5\xed\x6a\x99\xbe\x95\ +\x89\xae\x39\x29\xcc\x3e\x62\xf8\x20\xdd\x18\xd3\x42\x39\x3d\x82\ +\x87\x77\xf6\xfb\xd5\xd5\xa7\x8f\x9d\x1d\xbc\x47\xf3\xf0\x3e\x6f\ +\xaa\x65\xf7\x6c\x30\x3e\x81\x1a\x60\xce\xa1\x61\x37\x59\xf5\x3e\ +\x81\x84\x4f\x28\x62\x4a\x96\x44\xac\x06\xc1\x08\x21\x0a\x84\x47\ +\xb7\x9d\x4c\x2a\xa2\x58\xea\x64\xb4\xb4\x2c\x9e\x4e\x58\xf5\xc5\ +\x2a\x47\x1e\xca\xd3\xe9\x9f\xb6\x08\x4f\xf0\x4d\x66\x03\xfd\xac\ +\xb9\x65\xb5\xcf\x00\xb7\x5c\xee\x6b\xf7\x68\x48\x1d\x6b\xae\x48\ +\x6b\x06\xc9\x47\xdb\x24\xb0\xdc\x21\xb2\x8c\x49\xb7\xc5\xb1\x89\ +\x7a\x10\x60\x73\x65\x96\xd4\x58\xf2\xcd\x2c\x38\xf2\xaf\x5b\xad\ +\xb8\xa5\x40\x6f\x0f\x1a\x4a\x02\x16\x11\x2d\xea\x34\xcb\x5c\x79\ +\x1c\x52\xee\x47\x83\x4d\x78\xde\xb7\x90\x1c\x09\x6c\x5f\x02\xa9\ +\xc3\xd5\x55\x41\x60\x4f\xb6\x69\x28\x96\x6a\x06\xe9\x91\xa2\xfc\ +\x60\xa3\x2f\x5e\x6a\x91\x44\x91\x1b\xd4\xc4\x5c\xaf\xf0\x7d\x98\ +\xc5\x1d\x40\x03\x4e\x2f\x77\x2c\xf2\xec\x9e\x5f\xac\x46\x52\xb1\ +\x48\x4f\x9f\x8b\xf5\x66\x0d\x56\xc5\x1c\xea\x82\xf4\x8f\x35\xfe\ +\xf4\x0b\xfa\xf2\xe6\xf9\xf0\xf9\x3f\xad\x07\xaa\xa5\x12\x1e\xe8\ +\x1e\xca\x61\x76\xd2\x27\xce\xb6\xd1\x3b\x64\xb1\x73\x37\x7f\x69\ +\x7b\x7c\x55\x28\xb8\x4b\x28\x0c\x72\x47\x2b\x69\xcd\xe2\xa2\x0a\ +\x10\xc3\xe9\x21\x31\x7b\x99\x23\x8c\x21\x69\x65\xf2\xe3\x7d\x5e\ +\xd5\x49\x5e\x53\xdc\x50\x57\xe7\x30\x4b\xee\xe1\x3c\x8e\x39\xa3\ +\x6d\x98\xa3\x70\x47\xe9\x3e\x86\x35\x51\xbc\xd1\x24\x94\x1a\x0f\ +\x25\xa4\xec\xca\x5b\x6c\xb5\x83\x2e\x35\xab\x8b\x35\xa5\xd4\x05\ +\x80\x6d\xab\xb8\x2a\x21\xaa\xc8\x79\x39\x12\xa1\x05\xff\x43\x12\ +\xbd\x30\x75\x2c\x43\xeb\x0d\x18\xe1\x70\x55\x92\x65\xc5\x8c\x5c\ +\x40\x9b\x4c\xf1\x85\x5c\x8c\x61\xc6\x59\x3c\x8b\x2d\x75\xb0\xc3\ +\x36\x7b\x95\xef\xca\x54\x0e\x9f\x0d\xb0\x76\xa5\x9b\xed\x96\xa7\ +\x78\xc8\x16\xd6\xe0\x95\x34\xb9\xaa\x65\x7a\x53\x83\xb4\xc6\x97\ +\x8e\xa2\xdf\x8c\x0d\x34\x5c\x3f\x38\x62\x15\xad\xf5\xac\xf8\xc9\ +\x29\x27\x2d\x23\xdb\x76\x58\x93\x62\x0d\xf3\x28\x45\x4a\xa2\x17\ +\xc5\x6a\x95\xe4\xf3\x0f\x69\x7e\xdb\xc5\x2a\xb2\xe8\x85\x01\xac\ +\x2f\xab\xb8\x95\xeb\x7e\x68\xb5\x9d\x0f\x36\x44\xc3\xce\xa8\x81\ +\xb1\x3d\x84\xd0\xc5\xa7\xd0\x19\x8a\xc0\xbd\xff\xf8\xf9\xf7\x2b\ +\xb4\xdc\x03\x1f\x3f\x81\x77\xef\x2f\x3e\x9c\x6f\xb9\xf4\x7b\xac\ +\xf5\xde\x5b\x7c\x09\xdf\xb4\x97\xab\x87\x28\x2c\x69\x5b\x7a\x3b\ +\x3f\x29\xfa\x2a\xda\x96\x1b\xc8\xf2\x19\xd8\xe1\xcb\x63\xb8\xa2\ +\xfb\xd3\x80\xec\x11\xef\x92\xcd\xe9\xdd\xe1\x70\x48\xad\x0c\x53\ +\x0a\xe8\xbb\x7d\x2b\x5c\xdb\x62\xde\x1d\x8e\x47\x96\x36\xea\x66\ +\xb8\xbf\x8d\xb4\x89\xfd\xe3\xb1\xb0\x76\x46\x9b\x66\x2f\x5b\x70\ +\xdb\x95\x58\xe6\xf2\xee\xe6\x9d\x4c\x96\x79\xe1\xae\xbc\xa8\xf0\ +\x0e\x9e\xec\x02\x72\xec\xfb\xb8\x3d\x90\x83\x8a\x75\x18\xa5\x26\ +\x42\xc3\xf9\xa5\x4e\x39\xf9\xf4\x11\xc2\x39\x1d\x12\x76\xb3\x65\ +\x63\xa1\x06\xca\xc8\x36\xdd\x98\xd7\xa9\xe8\x9d\x18\xda\xc9\x83\ +\x90\x43\x93\x79\x40\x58\x2a\x74\xa0\x05\xe7\x78\x8b\xac\x45\xeb\ +\xbe\xa9\xb4\xf8\xd0\xda\xa9\xeb\x1a\xc7\x89\x2c\xad\x8d\xbe\x45\ +\x6b\x6c\xc1\xe9\x84\x49\x00\xe6\x25\xf2\xad\xb0\xf1\xed\xb2\xe8\ +\xd7\xce\x6d\xf0\xeb\x6c\xf4\xb3\xe2\x58\x11\xf1\x39\x6c\xfd\xe6\ +\x39\xcc\x46\xbe\x93\x9c\xe4\x09\x25\x2a\xe0\x20\xea\xa9\x4a\x56\ +\x07\x71\x2c\x99\x4b\xce\x0f\xb1\x25\xdf\xe1\x34\x80\x0b\x24\x9a\ +\x4e\xfb\x8e\x2f\xe2\x7a\x3d\xdb\x47\xf9\xea\x8e\x76\x2e\x14\x39\ +\x3c\x89\xb8\xd5\x75\x3f\x63\x20\x0e\x4f\x12\x60\x6e\xad\xa4\xe7\ +\x1b\xd2\xea\xfe\x1b\xa6\x58\xa5\x09\x82\x80\xb8\xe0\xcf\xad\x69\ +\x13\xcf\xe3\xd6\xcc\x1d\x62\x70\x26\xa3\x30\x8c\xe2\xf2\x7d\x14\ +\xab\xfb\x3d\x70\xf2\x0f\x07\x8b\xed\xcb\x30\xc2\xb9\x9f\xed\x32\ +\x7d\xe4\x2c\x4a\x99\xca\x57\x3a\x95\x78\xa1\x01\x02\xfb\xae\x4e\ +\x24\x1d\x89\x40\xf1\x29\x40\x16\x61\xf3\x1c\xea\x6f\x23\x6a\x8c\ +\x01\x3d\x8c\xaa\x0f\xa1\x16\x72\xd6\x3f\x42\xdb\x0a\x99\x8f\xa0\ +\xc7\x10\xb1\x43\xba\x9a\x6d\x23\x62\x81\x4c\xb3\x56\x02\x46\x36\ +\x91\xf1\xcb\x1b\x5d\xf5\xad\xd8\x44\x56\x6f\x1e\x08\x38\x80\xfe\ +\x93\xa9\x0d\x30\xe5\xc4\x29\x77\xb3\xfd\x87\x54\x23\x1b\xb7\x3b\ +\xaf\xea\x32\xe9\xad\x97\x45\xd6\xcd\x73\x86\x70\x0f\x4e\xb4\x00\ +\xd5\x6d\x03\x41\x80\xe9\x18\xe3\x4f\xa6\x7f\xa6\xdd\x9f\x53\x61\ +\xd1\x47\x0c\xcc\x96\x0b\x21\xa2\x77\xb1\xab\x16\x19\x96\x76\x33\ +\x03\x00\x5c\x10\x11\x74\x70\x97\xe4\xd8\x5f\xa5\x0c\xac\x98\x23\ +\x7d\x34\xc4\x2b\xcc\xd1\x09\xf9\x3d\x26\x4e\xb5\x04\xee\x5d\x89\ +\x1f\x7c\x8a\x0b\x9f\x37\xad\x94\x33\x74\xce\xa3\x69\x18\x2d\xf2\ +\xb0\x11\x40\x15\x52\xbc\x9e\xbc\x29\x8b\x15\xfa\x85\xba\xdc\xe7\ +\x9e\x3f\x0b\x16\x62\x3c\x45\xac\x8b\x77\x34\x99\xac\x93\x3c\x02\ +\x3b\x9f\x00\x2b\x51\x1d\xa0\xfe\x20\xfc\xe8\x15\xfc\xf3\x62\x83\ +\xe4\x98\xe3\x92\xe6\x15\xd2\x63\x80\xf4\x7d\x87\xe6\xe5\xfa\xfe\ +\x4b\x7d\xcc\xe7\xa3\x11\x13\xd2\xb0\x8d\x78\xf0\x25\x94\xf0\xa2\ +\x6c\x13\x60\xf8\x3d\xe4\xbb\x34\x42\xd9\x1c\x2b\xf9\xb2\x46\xab\ +\x14\xa4\xa3\xef\x07\xf3\x32\xb9\x3b\x4b\x2a\x38\xf1\x39\x11\x56\ +\x7b\xe7\xbe\x4b\x0f\x41\xe2\x41\x06\xaa\xbb\x48\x78\x81\x8c\x39\ +\x5a\xf7\xe1\x08\x38\xd1\x5d\x60\x7a\x8f\xbf\xa0\x75\x1f\x0f\x3a\ +\xf0\x87\x1a\x18\xc3\x1f\x04\xda\x93\xc9\x2c\x2b\x2a\xa8\x9d\xb3\ +\x6e\xba\x93\x11\xd4\x43\xfa\xa2\x82\xe7\x8e\x27\x0c\x5c\x0e\x93\ +\x5a\x3a\x8d\x3c\x50\x4c\x9b\x90\xba\x21\x80\xd1\xd7\x7a\x93\x46\ +\xac\xb6\xf6\x82\x0a\x83\x5b\x27\x53\xc4\x46\x21\x7f\x1d\x04\x84\ +\xc0\x9a\x60\x63\xc7\xa1\xd9\xb7\xda\x84\x49\x1b\xcb\xe2\x1b\x38\ +\xf4\x12\x48\x6f\x92\x10\x60\xd0\x03\x38\x10\x9b\xfc\x38\x08\x10\ +\xc1\x0d\x74\x2f\xae\x00\x7f\x84\xfe\xa9\x75\x0f\x20\x50\x8a\x24\ +\xa6\x7e\x30\x30\x45\xea\x99\x90\x29\xfc\xe8\x9f\xc0\x62\x5b\x99\ +\x7a\xb6\x85\x50\x85\xee\x3f\xf6\xdf\xcf\x63\x11\xaa\x10\x12\x86\ +\x54\xf5\x87\x01\x91\x98\x50\xff\x96\x51\xed\x0f\x03\x0a\x3c\x84\ +\x82\x29\xd9\x9d\x30\x78\x6c\x55\xf5\xcc\x1a\xb0\x93\xbd\x6e\x1b\ +\x1d\xc6\xab\x5b\x21\x79\xb1\x88\x89\x1f\xb4\x24\xce\x21\x59\xb0\ +\xf1\xdf\x0f\x5c\xbf\xc7\xd3\x33\xca\x56\xf9\xf2\x43\x57\xdf\x04\ +\x30\x58\x1e\xe7\xe2\x78\x2e\x77\xd5\xee\x26\x6d\xb9\xd6\x31\x16\ +\x65\xce\xd5\x16\xed\x53\xcd\xd7\x0b\x68\x1c\xc7\x7e\x39\x09\x98\ +\xba\xa2\xa1\x8e\x78\xa9\x3e\x2e\xb2\x5d\x0d\x9d\x50\x74\xb3\xd0\ +\x67\x81\xf5\x78\x46\xaf\xa8\x37\x6a\xa3\x45\xee\xbd\x0f\xdb\xa6\ +\x96\xba\x05\x6b\x9f\x89\xac\x3f\x0f\x4b\x74\xd5\x1d\xb8\x88\xd8\ +\x4c\x90\x7b\x5a\xb9\x54\x43\xe9\xde\x51\x72\x87\xdb\x6d\x02\x1e\ +\x70\xa7\x7c\x8c\x8c\x79\xff\xd0\xe2\x78\x19\x72\xd7\x8d\xa8\xa0\ +\xe9\x6e\x2f\x80\x26\xce\xb1\xd2\x87\x69\x68\xc7\x32\x8b\x60\xd9\ +\x45\xc2\x21\x6e\xfa\xf3\x8a\x2d\x1e\x56\x0b\xcf\xec\x56\x52\xa5\ +\x3c\x0b\xe9\x75\x92\x3b\x0b\x95\xc5\x9d\xb6\x6a\xb3\x2e\xfb\x52\ +\x1e\x67\xac\xbd\x44\x59\x10\x8e\x15\x29\xba\x00\xfe\x3f\x2a\x53\ +\x31\x73\xda\x5e\x27\x28\x51\xea\xb2\xa7\xb3\x48\xd9\x16\x48\xed\ +\x2d\xa4\x93\xa4\x90\x73\xdd\x5e\xa4\x6c\x08\x87\x65\x0a\x28\x07\ +\xbb\xa4\x8b\x89\x27\x30\x8f\x7c\xb8\xc1\x76\x9b\x84\x15\x3a\xe1\ +\x42\x3b\xe0\xc6\x25\x87\x31\x98\xc7\xbf\x39\xe1\xbe\xfd\x33\x82\ +\x86\xe8\x6e\xdc\x17\x70\xda\x7b\x09\x39\xc8\x80\xfe\x88\x40\xe4\ +\xee\x70\x7c\xe2\x3c\x21\x69\x3c\xea\x85\x57\x54\xe7\xc5\xec\xb6\ +\x87\xa0\x35\x5d\x52\x51\x60\x52\xd0\x5a\x1c\xca\x0c\xbe\x0a\xdb\ +\xe7\xad\xc9\xe4\xe9\xb6\x69\x52\x0e\x68\xd0\x0b\x73\x3f\x18\xb1\ +\x53\xda\xd1\x87\xe8\xdd\x0d\x11\xbe\x88\x52\x69\xe4\x1a\xc2\xd5\ +\x87\xe3\xc4\x5c\x3b\xa1\xd1\x63\xc4\x71\xfa\xf2\x2b\xc0\x97\x2e\ +\xd1\xb3\xbc\xa4\x3a\xea\x55\x3f\x0a\x2c\x3d\x7a\xe4\x8f\xf8\xc8\ +\x9d\xdb\x22\x9c\x51\xd7\x12\x39\x0f\x54\x35\x07\x02\x5c\xfd\x84\ +\x34\x54\x0c\xae\xad\xd2\x5f\x15\x28\x37\x59\x91\xd4\x4f\x40\xb1\ +\xdc\xcf\xb6\x14\x2b\x30\xda\x50\x4c\x83\x1f\x25\x84\xf4\xda\xf3\ +\x2b\xac\x39\xf8\x0d\xe8\x55\xdd\x2e\xa7\x9b\x45\x3f\x18\xb0\xc9\ +\xb4\x4c\xf2\xd9\x52\xc9\x33\xd7\x3e\xb9\xb6\x5f\x2d\x13\x43\x3a\ +\xd2\x24\xeb\x35\x0e\x50\x40\x4c\xaa\x41\x95\x4e\x91\x6a\x58\x54\ +\x93\x67\xc9\xfc\x5f\x45\x9a\x57\x03\xf9\x59\x1b\x3a\x44\x6e\x45\ +\xba\x4d\x47\x8f\xd8\xcf\x33\xdc\xd1\x6c\x99\x66\x73\x54\x93\xfe\ +\xd7\x53\x74\xeb\xe9\x95\x4c\x2e\x65\x34\x79\x23\xfa\x45\x6d\x2b\ +\x37\x0d\x1a\x31\x0a\xe7\x9a\xc2\xf1\xa1\x87\x4f\x84\x7b\x70\xb4\ +\x21\x67\x36\xd9\x06\x35\x0c\xa5\x13\xdf\x9a\x14\x81\xb6\xdc\x8b\ +\xdc\xe1\x51\x78\x38\x28\xbc\xd8\x06\xd8\xe8\xc6\xd5\xcf\xcc\x76\ +\x98\x62\x58\x2a\x9e\x5c\xf3\xb0\xe3\x8e\x9a\xc3\xaa\xe0\xe3\xaa\ +\xc0\xd5\x98\xb3\xc6\xdb\x22\xdb\xac\x72\x77\x15\xdd\xcd\xd0\x33\ +\xb3\x65\xdf\xd8\x6f\x44\x35\x6a\x42\xc4\x04\x69\x09\x93\x62\x77\ +\xf0\x03\x47\x0e\xb4\x98\x7c\x83\x94\xfe\xd8\xdb\xbe\x42\x52\x9f\ +\xaf\x57\xdb\x3a\x15\xef\xb5\x38\xba\xed\xe9\xb5\x21\x0f\xbd\xb6\ +\x81\x72\xbe\xd8\xe7\xab\xc3\xcc\xb2\x9f\x7f\xa2\x37\x5f\x1d\xde\ +\x9b\xaf\x4e\xeb\x57\x99\x5d\x4f\xff\x79\x47\xc5\xcb\x1c\xf3\xa1\ +\x48\x7f\x2d\x3f\x83\xcc\x3e\xfd\xb5\x7c\x4c\x72\xbd\x4c\xd9\xe9\ +\x45\x5f\x1b\x71\xf6\x37\xb5\xc3\x35\x7d\x0c\xb3\xbe\xbe\xed\x20\ +\xd4\xde\x7f\xb8\xa6\x8f\x79\x8f\xf9\xfa\x77\x98\xe0\x18\xa4\xb6\ +\x44\xc6\x62\x82\xa4\x21\x90\x55\xb1\xa2\x75\xe3\x0e\x99\x6d\x91\ +\x0f\xb6\x28\xd3\x39\xb6\x3e\xd1\x6b\x0d\xc5\xdc\x48\xf7\xe0\x09\ +\xa6\xca\x65\xc2\xac\x48\x85\x92\x29\xe9\xe3\x08\x1d\xc3\xc4\xb6\ +\x02\x90\xcb\x04\x26\x52\xa1\x84\x49\x87\x1b\xe9\x1a\x1c\xcc\xa9\ +\x67\xb1\xaf\x36\x8b\x1a\x7a\x8c\x20\x90\x1f\x2e\x9d\x44\xd6\x1c\ +\x81\x66\xe2\x6a\x1e\x80\xf4\x41\x33\xfd\xcd\x17\xc3\xe6\x87\x13\ +\xd9\xa5\x9b\x09\x5c\x2e\x49\x32\xab\xd3\xaf\xd0\xe3\x93\x34\x15\ +\x5c\x4e\x89\xa8\xe1\xf6\x4a\x68\x95\x38\x4c\x49\x3f\x6f\x8b\x32\ +\x87\x25\x8f\x8e\x55\xec\xb9\xc5\xd6\x43\x62\x7b\xd4\xd1\x36\x95\ +\xe4\x77\x3b\xff\x06\x13\xf4\xa9\xdb\xd5\x66\x62\x65\x2c\x01\x6b\ +\x11\x4e\xa0\x07\x18\x9d\xc8\x07\x92\x43\x3d\xf4\x49\xf8\x74\xb8\ +\xed\x25\x8c\xd8\xc8\xd2\x5f\x78\x14\x23\xaf\xe4\x75\xe7\x9c\x0b\ +\xf2\xe5\xdb\x99\xe8\x1b\x34\x0e\x64\x34\x1f\x36\x32\xae\x2f\x8b\ +\xab\x07\x68\xe8\xe1\x34\x27\xf4\xe6\xa0\xbd\x0d\xba\x2d\x2b\x64\ +\xdf\x51\xd5\x75\xb2\xdf\xa6\xbc\xfd\x00\x26\x37\x69\x59\xd5\xc1\ +\x7e\x26\xf8\x66\x02\xb4\xb6\x53\x4f\xca\xd2\x2d\x1d\x47\x50\xcb\ +\x0b\xd0\x0f\x46\x5e\xbf\x84\x58\xe5\x27\x40\xae\x68\x27\xc1\x79\ +\x99\x6d\x44\xe7\x01\x48\xea\xc1\xa4\xab\x25\x5a\xc7\x83\x0a\xd6\ +\x35\x09\x53\xec\xd1\x56\x07\x24\x04\x7f\x40\xe3\xee\x07\xba\xd8\ +\xbc\xc0\xa0\xf0\x09\xe6\xcd\x82\xa5\x49\xcb\x93\x94\x26\xbb\x35\ +\x6d\xc8\xd1\x39\x12\x34\xd6\x94\x94\x25\x39\x2e\x30\x4f\x03\x1b\ +\x03\xf2\x24\x65\xe5\xf6\x43\x3e\x2d\xaf\x0d\x90\x51\xe6\x37\x28\ +\xff\xb7\x20\x6c\x5e\xd1\x2c\xee\xec\xe9\x25\xc9\x7c\x47\xc0\xfa\ +\xcb\x61\x0e\x62\xee\x9e\xc1\xf9\x87\xae\x37\xbb\x0d\x40\x23\x73\ +\xbb\x52\x01\x84\x8f\xd0\x3d\x96\x4b\xec\xda\x13\x0d\x9f\x2d\x68\ +\x6e\x4b\x95\xf0\x8c\xd1\x84\x4a\xfd\x76\xa7\xa3\x3c\x07\xfd\x1c\ +\x8c\x33\x0f\xc5\xb5\x7a\xfa\x61\x14\x18\x63\x99\x84\xad\x6c\xbe\ +\x9d\x96\xc6\x44\xd9\x69\x69\xf7\x4c\xa7\x0a\xc4\xdc\x10\xf1\x3c\ +\x04\x66\x47\x4f\xbb\x4c\x05\x5f\x11\xe0\x7e\x52\xd4\x2d\xfe\xc1\ +\x33\xa4\x34\x65\xa5\xdb\x9c\x16\xd3\xda\xcc\x7f\x69\xfd\x1e\x0d\ +\x01\xf1\x0f\x92\xd5\x72\xb9\x4c\xd6\xf0\xcd\xf3\x43\x71\xc5\x50\ +\x0c\x48\xab\x6b\xd7\x00\xa6\xba\xf2\xcd\xf3\xf1\xf3\x7f\xee\xf3\ +\x32\xa2\x50\x49\x51\xd4\x50\x93\x74\xe5\x75\x96\x92\x8d\xcb\x3e\ +\xb8\x26\x80\x45\xc9\x34\x7e\xc5\x5d\x4e\xc1\xd0\x53\x32\x84\x27\ +\xcd\xb2\x08\x19\x70\xe9\xe1\x8e\x96\x8e\xbc\xcd\x76\x38\x91\x18\ +\x1a\x0e\xbd\x13\x8d\xd0\x2a\x55\xd6\x67\xf6\xe6\xf6\x47\x4e\x22\ +\x9e\x8a\x76\xbd\x3f\x62\xeb\xc6\xf1\xca\x49\x44\x2f\x8e\xa7\x54\ +\xe8\x41\x83\xa4\x86\xdd\xdf\xdf\x62\xe7\x0c\x18\x2c\x86\x61\xf4\ +\xdd\x2b\x7d\x67\x37\x46\x3c\x38\xd2\x5c\xd1\x12\xff\xe4\x88\xb3\ +\x4d\x8b\x3b\x63\x94\x47\xdf\x1e\x24\x9e\xc5\x5e\x1e\x22\x99\x3e\ +\xd1\xf4\x49\xef\xa5\xe8\x7a\x4a\x4f\xc2\xba\xaf\xdb\x23\x6c\x20\ +\xe9\xed\x11\xd6\x2f\x3c\x50\x65\xfd\xb8\xfd\xed\x11\x8d\xf8\xb7\ +\xbd\x43\xc7\x73\x49\x71\xc4\x2c\x88\x96\x17\x8e\x55\x13\xd2\x73\ +\x9e\x71\x88\x7d\xf7\xa2\x6b\x88\x71\xe7\x73\x56\xd4\x6e\xd7\x01\ +\xcf\x3f\x76\x59\xd1\x6c\x53\xd3\xac\xd3\x0a\x5f\x17\xb8\x46\xcd\ +\xc8\xb1\xaa\x23\x9a\x5d\xfa\x1f\xa9\x64\xb9\x34\ +\x00\x00\x02\x84\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x36\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x4e\x14\x51\x14\x86\xbf\x33\x92\x2c\xfb\x06\xc8\x03\x58\ +\x6c\x23\x54\x92\x30\x2b\x1d\x0d\x24\x1a\x6a\x5b\x89\xb1\xd2\xc4\ +\x64\xee\x05\x34\x63\xe2\x38\x33\xc4\x44\x1b\x6d\x2c\x8c\x2f\xb0\ +\x58\x40\x65\xb3\x90\x49\x84\x06\xb4\x60\x13\x13\x68\x11\x9f\x60\ +\xd9\x68\xee\xb1\x60\x10\x4c\x9c\xcd\xce\x2e\xb1\x71\xbf\xf6\xfc\ +\x33\xe7\xcf\xcd\x3d\xff\x3d\x30\x64\xc8\xff\x8e\x94\x11\x87\x61\ +\x38\xd2\xe9\x74\xe6\x55\x75\x01\xb8\x01\x8c\xe7\xa5\x23\x60\x47\ +\x44\x1a\x95\x4a\x65\x3d\x0c\xc3\x9f\x97\x6e\xc0\x18\x33\x0b\xbc\ +\x04\x6a\xc0\x1e\xb0\x05\x7c\xcb\xcb\x57\x81\x9b\xc0\x24\xd0\x72\ +\xce\x3d\x58\x5d\x5d\xfd\x78\x59\x06\x24\x08\x02\x2b\x22\x11\xb0\ +\x26\x22\x2b\x71\x1c\xb7\xfe\x26\xb4\xd6\xd6\x54\xf5\x19\x70\x1b\ +\x58\x4e\x92\x24\x01\x74\x20\x03\x41\x10\x2c\x89\xc8\x53\x11\xb9\ +\x1f\xc7\xf1\xdb\x1e\x0c\x63\xad\xbd\xab\xaa\x6f\x80\x27\x49\x92\ +\xc4\xdd\xb4\x57\xba\x15\x8d\x31\xb3\x22\xf2\x4e\x44\xee\xf5\xda\ +\x1c\x20\xcb\xb2\x5d\xdf\xf7\xbf\x03\xaf\x7c\xdf\xff\x94\x65\xd9\ +\x61\x91\xb6\xf0\x04\xc2\x30\x1c\x39\x39\x39\xf9\x02\x7c\x4d\x92\ +\x64\xa1\xd7\xe6\x17\x09\x82\x60\x4d\x44\xae\x8d\x8e\x8e\x5e\x2f\ +\xba\x98\x5e\xd1\xc7\x9d\x4e\x67\x1e\xa8\x89\xc8\x4a\x3f\xcd\x01\ +\x3c\xcf\x5b\x06\x6a\xed\x76\x7b\xae\x50\x53\x54\xc8\x47\x6d\xaf\ +\xe8\xc2\xf5\x42\x1c\xc7\x2d\x55\xfd\x2c\x22\x85\x27\x58\x68\x80\ +\xd3\x39\xdf\xea\xb7\xf9\x19\x22\xb2\x09\x4c\xf5\x63\x60\x9c\xf3\ +\x39\xef\x1b\x55\x3d\xe6\x3c\xb0\x4a\x19\xf8\x27\x74\x33\x70\xc4\ +\x69\xc2\x0d\x84\x88\x8c\xe5\xff\x2a\x6d\x60\x87\xd3\x78\x1d\x08\ +\x55\x9d\x01\xb6\x4b\x1b\x10\x91\x06\x30\x69\xad\xad\xf5\xdb\xdc\ +\x5a\x5b\x13\x91\x09\x55\x6d\x94\x36\x50\xa9\x54\xd6\x81\x56\x9e\ +\xed\x7d\xe1\x9c\x8b\x80\xfd\x6a\xb5\xba\x51\xa4\x29\x8c\xe2\x66\ +\xb3\xe9\x7c\xdf\x3f\x00\xa2\x7a\xbd\x7e\x94\x65\xd9\x6e\x99\xe6\ +\xc6\x98\x45\x11\x79\xe4\x9c\xbb\x13\x45\xd1\x41\x69\x03\x00\x59\ +\x96\x1d\x4e\x4f\x4f\xff\x00\x5e\xd4\xeb\xf5\xe3\x5e\x4d\x18\x63\ +\x16\x81\xd7\xc0\xe3\x34\x4d\xdf\x77\xd3\xf6\xf4\x1c\x1b\x63\x0c\ +\xf0\x5c\x55\x3f\x78\x9e\xb7\xdc\xed\x39\x76\xce\x45\x22\x72\x4b\ +\x55\x97\xd2\x34\x4d\x19\xf4\x39\x3e\xe3\xe2\x42\x92\xc7\xeb\x66\ +\x1e\x32\x88\xc8\x98\xaa\xce\x88\xc8\x04\xb0\xef\x9c\x7b\x78\x99\ +\x0b\xc9\x6f\xc2\x30\x1c\x69\xb7\xdb\x73\x79\xb6\x4f\xf1\xe7\x4a\ +\xb6\xad\xaa\x8d\x6a\xb5\xba\x51\x66\x25\x1b\x32\x64\xc8\x2f\xff\ +\x42\xe0\x3f\x4f\xfa\x9f\x03\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x02\xe1\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x93\x49\x44\x41\x54\x58\x85\xed\ +\x96\x3f\x4f\x14\x51\x14\xc5\x7f\x67\x42\x18\xb6\xb5\x52\x3e\x80\ +\xc5\x36\x4a\x25\x95\x76\x52\x80\x62\xe8\xb4\xd3\x44\x8a\xad\xa4\ +\x9a\x19\x20\x66\x4c\xc4\x99\xa5\xa1\x92\x68\x4c\xb4\xd3\x0e\xff\ +\x00\x85\x5a\x69\xa5\x95\x6e\x21\x89\x5f\x00\xad\x6c\x97\xd9\x98\ +\x77\x2d\xf6\x0d\xac\x09\xbb\xb8\x80\x36\xee\xe9\xde\xbc\xfb\xde\ +\x3d\xf7\xce\x7d\xe7\x5e\x18\x60\x80\xff\x1d\xea\xc7\x38\x4d\xd3\ +\xa1\xa2\x28\xa6\xcc\x6c\x06\x38\x07\x8c\xfa\xad\x6d\xe0\xa3\xa4\ +\xb5\x30\x0c\x37\xd2\x34\xfd\x79\xec\x04\xe2\x38\xbe\x08\xac\x00\ +\x55\xe0\x13\xf0\x1e\xf8\xe6\xb7\x4f\x01\xe7\x81\x31\x60\xcb\x39\ +\x77\x6b\x79\x79\xf9\xed\x71\x11\x50\x14\x45\x89\xa4\x25\xe0\xb9\ +\xa4\xc5\x2c\xcb\xb6\xf6\x33\x4c\x92\xa4\x6a\x66\x77\x81\x2b\xc0\ +\x42\x9e\xe7\x39\x60\x47\x22\x10\x45\xd1\xbc\xa4\x3b\x92\x6a\x59\ +\x96\x3d\xfa\x03\xc2\x24\x49\x72\xd3\xcc\x56\x81\xdb\x79\x9e\x67\ +\x87\x26\xe0\xd3\xfe\x5a\xd2\x6c\x87\x73\xc5\x71\x7c\x0d\xa8\x01\ +\x67\xfc\xb7\x06\xb0\x9a\xe7\xf9\x53\x7c\xc4\x71\x1c\xcf\x02\x0f\ +\x81\x89\x3c\xcf\xdf\xf4\x4d\x20\x4d\xd3\xa1\x9d\x9d\x9d\x06\xf0\ +\x35\xcf\xf3\x19\x80\xb9\xb9\xb9\x13\x61\x18\x3e\x01\x2e\x03\x0e\ +\x08\xbc\xb9\x03\x02\x33\x7b\xd9\x6a\xb5\x6e\xac\xac\xac\xfc\x00\ +\x88\xa2\xe8\xb9\xa4\xd3\x23\x23\x23\x67\xba\x15\x66\xb0\xdf\x47\ +\x80\xa2\x28\xa6\x80\xaa\xa4\xc5\x92\xac\x77\x3e\xb5\xcf\xd9\x00\ +\x40\xd2\xa5\xe1\xe1\xe1\xc7\x65\x60\x41\x10\x2c\x00\xd5\x66\xb3\ +\x39\xd9\xcd\x4f\x57\x02\xfe\xa9\x7d\x2a\x0b\xce\xa7\xfd\x72\xaf\ +\x33\x40\x20\x69\x3a\x8a\xa2\xab\x00\x59\x96\x6d\x99\xd9\x67\x49\ +\x33\x7d\x13\xa0\xfd\xce\xdf\x77\xac\x6b\xb4\x53\x7d\x10\x9c\xa4\ +\x5a\xb9\x90\xf4\x0e\x18\x3f\x0c\x81\x51\xf6\xde\x39\xb4\x0b\xae\ +\x97\xfd\xee\x9d\x92\xca\xe2\xc4\xcc\xbe\xb3\x27\x58\x7d\x11\xf8\ +\x27\xe8\x45\x60\x9b\xb6\xc2\x95\x68\xf0\x87\xbf\xc0\xcc\x1a\xe5\ +\x42\xd2\x49\x7f\x57\xdf\x04\x3e\xd2\x96\xd7\x12\xab\x07\xd8\xef\ +\xde\xe9\x45\x08\x00\x33\xbb\x00\x7c\xe8\x9b\x80\xa4\x35\x60\x2c\ +\x49\x92\x2a\x80\x17\x99\x57\xf4\xce\x82\x33\xb3\x97\xf5\x7a\xfd\ +\x19\xb4\xa5\x59\xd2\x59\x33\x5b\xeb\x9b\x40\x18\x86\x1b\xc0\x96\ +\xd7\x76\x00\x2b\x8a\xe2\xba\x99\xad\x97\xce\x3a\x1d\x03\x98\xd9\ +\x7a\xab\xd5\xba\x81\x57\x43\xe7\xdc\x12\xf0\xa5\x52\xa9\x6c\x76\ +\x0d\xb4\x47\x34\x5d\xa5\x38\x8a\xa2\xab\x92\x6a\x65\xb5\x9b\x59\ +\xc3\xcc\x56\x7d\xe4\x9d\x52\xfc\xc0\x39\x37\xd1\xab\x33\xfe\x95\ +\x66\xe4\x9d\xdf\xe7\xa8\xcd\xa8\xb4\x89\xe3\x38\x06\xee\x99\xd9\ +\x8b\x20\x08\x16\x7a\xb5\x63\xe7\xdc\x92\xa4\x69\x33\x9b\xaf\xd7\ +\xeb\x75\x8e\xda\x8e\x4b\x74\x0e\x24\x5e\x5e\xdf\x79\x91\x41\xd2\ +\x49\x33\xbb\x20\xe9\x2c\xf0\xc5\x39\x37\x77\x9c\x03\xc9\x2e\xd2\ +\x34\x1d\x6a\x36\x9b\x93\x5e\xdb\xc7\xf9\x7d\x24\xfb\x60\x66\x6b\ +\x95\x4a\x65\xb3\x9f\x91\x6c\x80\x01\x06\xf8\x05\x68\xaf\x24\x28\ +\x9c\x6b\x07\xff\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x29\xb3\ +\x47\xee\x04\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xe0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x29\x1c\x08\x84\x7e\x56\x00\x00\x00\x60\x49\x44\x41\x54\x78\ +\xda\xed\xd9\xb1\x0d\x00\x20\x08\x00\x41\x71\x50\x86\x63\x51\xed\ +\x8d\x85\x25\x89\x77\xa5\x15\xf9\x48\x45\x8c\xa6\xaa\x6a\x9d\x6f\ +\x99\x19\x1d\x67\x9d\x03\x11\x45\x14\x11\x11\x45\x14\x51\x44\x44\ +\x14\x51\x44\x11\x11\x51\x44\x11\x45\x44\x44\x11\x45\x14\x11\x11\ +\x45\x14\xf1\x5b\xd1\x75\xb0\xdb\xdd\xd9\x4f\xb4\xce\x88\x28\x22\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x36\xce\x69\x07\x1e\xe9\ +\x39\x55\x40\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\x9e\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x0f\xfd\ +\x8f\xf8\x2e\x00\x00\x00\x22\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xfe\x9f\x87\xb1\x18\x91\x05\x18\x0d\xe1\x42\x48\x2a\x0c\x19\ +\x18\x18\x91\x05\x10\x2a\xd1\x00\x00\xca\xb5\x07\xd2\x76\xbb\xb2\ +\xc5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\x96\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0d\x1b\x75\xfe\x31\x99\x00\x00\x00\x27\x49\x44\x41\x54\x08\xd7\ +\x65\x8c\xb1\x0d\x00\x00\x08\x83\xe0\xff\xa3\x75\x70\xb1\xca\xd4\ +\x90\x50\x78\x08\x55\x21\x14\xb6\x54\x70\xe6\x48\x8d\x87\xcc\x0f\ +\x0d\xe0\xf0\x08\x02\x34\xe2\x2b\xa7\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x01\x8d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3f\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x86\x5c\ +\xc0\x13\x14\xf4\x0e\x9e\xc2\x12\x48\x94\xb6\x8b\xba\x51\x08\x7a\ +\x0a\xcf\x50\x0a\x3d\x41\x2e\x90\x3b\xb8\xd1\x2e\x95\x90\xbf\x8b\ +\x9a\x62\x15\x29\x94\xa4\x5d\x74\xbe\xd5\xe4\xcd\x90\xff\x63\x66\ +\xf3\x1e\xfc\x77\xec\xbc\x10\xc7\xf1\xc0\xcc\xee\x24\xf5\xcd\x2c\ +\xa8\x23\x44\xd2\xce\xcc\x32\x49\xcb\xc5\x62\xf1\x72\x55\x60\x32\ +\x99\xcc\x24\xdd\x03\x7b\x49\xb9\x99\xbd\xd5\x24\xd0\x31\xb3\x10\ +\x68\x03\xb3\xf9\x7c\xfe\x78\x21\x90\x24\xc9\x10\x78\x06\x5e\x8b\ +\xa2\x18\xa5\x69\xba\xa9\x23\xbc\x22\x8a\xa2\x9e\xef\xfb\x6b\xe0\ +\x56\xd2\xb0\xba\x09\xef\xe4\xcc\x18\xd8\x37\x11\x0e\x90\xa6\xe9\ +\xa6\x28\x8a\x11\x70\xf0\x3c\x6f\x5c\xd5\x3f\x05\x24\xf5\x25\xe5\ +\x4d\x84\x9f\x4a\x00\xb9\xa4\xfe\x85\x80\x99\x05\x75\xbd\xf9\x37\ +\xec\x80\xee\x85\xc0\x5f\xe1\x04\x9c\x80\x13\x70\x02\x4e\xc0\x09\ +\x38\x01\x27\xe0\x57\x0b\x49\x3b\xa0\xf3\x0b\x99\x01\xb0\xad\x3e\ +\x4e\x5b\xb2\xcc\xcc\xc2\x28\x8a\x7a\x4d\x25\x1f\xff\x1d\x9a\x59\ +\x76\x21\x20\x69\x09\xb4\x7d\xdf\x5f\x37\x21\x31\x9d\x4e\x6f\x8e\ +\x6d\x79\xab\x2c\xcb\x55\x55\xff\x32\x98\x24\x49\xf2\x04\x3c\x00\ +\x07\x20\xe7\xa3\x81\xac\x83\x00\x08\x81\x16\xd7\x06\x93\x8a\x38\ +\x8e\x07\x9e\xe7\x8d\x8f\xad\x73\xf7\x7c\xff\x87\x6c\xcd\x2c\x2b\ +\xcb\x72\x75\x3e\x9a\x39\xde\x01\x23\x94\x7d\x48\x8c\x1a\x35\x0f\ +\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\x3f\x08\x06\x00\x00\x00\x2c\x7b\xd2\x13\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2e\x14\xfa\xd6\xc4\xae\x00\x00\x00\x39\x49\x44\ +\x41\x54\x38\xcb\x63\x60\x20\x06\xc4\xc7\xc7\x33\xc4\xc7\xc7\xa3\ +\x88\x31\x61\x53\x84\x53\x12\xaf\xce\x91\x28\xc9\x82\xc4\xfe\x8f\ +\xc4\x66\x1c\x0d\xa1\x51\xc9\x51\xc9\x51\x49\x7c\x05\x06\xe3\x68\ +\x08\x91\x2a\x49\x3e\x00\x00\x88\x4b\x04\xd3\x39\x2e\x90\x3f\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1c\x1f\x24\ +\xc6\x09\x17\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\xff\xcf\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x0e\ +\xa3\x21\x9c\xc3\x68\x88\x61\x1a\x0a\x00\x00\x6d\x84\x09\x75\x37\ +\x9e\xd9\x23\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x0d\xfc\ +\x52\x2b\x9c\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\x63\x60\x40\ +\x05\x73\x3e\xc0\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\xc5\x70\x4e\ +\x8a\x00\x9c\x93\x22\x80\x61\x1a\x0a\x00\x00\x29\x95\x08\xaf\x88\ +\xac\xba\x34\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\x93\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xd3\xb5\x57\xa0\x5c\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\xdc\x0b\x07\x0c\ +\x0c\x2b\x4a\x3c\x30\x74\x00\x00\x00\x24\x49\x44\x41\x54\x08\xd7\ +\x63\x60\x40\x05\xff\xff\xc3\x58\x4c\xc8\x5c\x26\x64\x59\x26\x64\ +\xc5\x70\x0e\x23\x23\x9c\xc3\xc8\x88\x61\x1a\x0a\x00\x00\x9e\x14\ +\x0a\x05\x2b\xca\xe5\x75\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\x82\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x34\x49\x44\x41\x54\x58\x85\xed\ +\xd7\xb1\x4e\xc2\x50\x18\x86\xe1\xf7\x37\x14\x46\xca\x82\xd7\xd0\ +\x85\x44\x48\xea\x0a\xd1\x54\x22\xc6\x1b\xe0\x2a\xea\x2c\x0e\xb2\ +\xc3\x55\x70\x09\xc4\xd8\x98\xb0\x77\xd0\x84\xa5\xf7\xc0\x42\x1d\ +\xb1\x24\xc7\xa1\x2d\x36\xb5\x38\x98\x36\x0e\x9e\x6f\x3c\x6d\xfa\ +\x3d\xe7\x74\xf9\x0f\xfc\xf7\x48\x7e\xa1\x3b\x18\x5d\x81\xba\x03\ +\xb1\x01\xb3\xa4\x9e\x10\x94\x0f\x32\x7b\x5d\x2d\x9f\x8f\x02\x7a\ +\xfd\x9b\xa9\x12\x75\x0f\xec\x04\x02\x85\x7a\x2f\xa3\x5d\x90\xa6\ +\x02\x0b\x68\x28\x98\xbe\xad\x96\x0f\xdf\x00\xdd\xfe\xf5\x10\x91\ +\x27\xe0\x65\x6f\x44\xe3\xb5\xe7\x6d\xca\x28\x4f\xd3\x71\x9c\x76\ +\x2d\x32\x16\xc0\x25\x30\x4c\x4f\xe2\x24\xc3\x74\x81\x5d\x15\xe5\ +\x00\x6b\xcf\xdb\xec\x8d\x68\x0c\x7c\x00\x6e\xba\xfe\x05\x40\x6c\ +\x81\xa0\x8a\xf2\x2c\x02\x08\x00\xbb\x00\x80\x59\xd6\x3f\xff\x39\ +\x2a\x04\x5a\x45\x80\x3f\x89\x06\x68\x80\x06\x68\x80\x06\x68\x80\ +\x06\x68\x40\x16\x10\x0a\xd2\xac\xbe\x52\x4c\x60\x5b\x00\x50\xbe\ +\x02\xab\xe3\x38\xed\xaa\xaa\x93\x6f\x5b\x80\x5f\x00\x90\x19\xd0\ +\xa8\x45\xc6\xa2\x0a\xc4\xf9\xc5\xed\x69\x32\x96\xd7\x81\xf9\xa1\ +\x35\xfb\xd2\xd9\x60\xf4\x28\x30\x21\x1e\x9d\x83\x64\x80\x2c\x21\ +\x62\x12\xef\xbc\x7e\xf4\x62\x92\x26\xbe\x9a\xe1\x12\x8f\xce\xad\ +\xfc\xf3\x5f\x66\x4b\x7c\xec\xf3\xfc\xd5\x4c\xe7\x13\xc4\xb0\x5f\ +\x44\xcf\x0c\x5b\xaa\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x14\x1f\xf9\ +\x23\xd9\x0b\x00\x00\x00\x23\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x0d\xe6\x7c\x80\xb1\x18\x91\x05\x52\x04\xe0\x42\x08\x15\x29\x02\ +\x0c\x0c\x8c\xc8\x02\x08\x95\x68\x00\x00\xac\xac\x07\x90\x4e\x65\ +\x34\xac\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x8e\ +\x00\ +\x00\x0b\x17\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\xf6\x40\xcc\xce\xc1\x06\x24\xf7\x97\ +\x4d\x95\x07\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x2e\xf2\x1e\x31\xe0\x70\xfe\x3f\xf3\x91\x9b\x82\ +\x83\x8f\xc4\xf2\x55\x52\x2f\xcd\x76\x7c\xe4\x9f\x12\x96\x7b\xbf\ +\x7d\xa3\x4e\xca\x82\xc7\xdf\xe7\x7e\xd1\x94\xe2\x8e\xfc\xde\xc8\ +\x60\xb1\x71\xc3\x04\xdd\xb3\x0f\x5a\x8d\xcc\x1f\x86\x19\x97\x16\ +\xfa\xe5\xbe\x7c\xd2\xe7\x99\x2a\x79\xa4\x60\x5b\xf5\xc5\x73\x7f\ +\x16\x69\xb3\x2d\x9b\x6d\x6d\x55\xf6\x66\xd2\xdb\xa2\x15\x2b\x96\ +\x84\x05\x6e\x2d\xda\x2b\xd8\x9f\xfd\xf9\xd7\x8b\xb9\x9b\xf7\x9f\ +\x7e\xc9\xef\xa1\xa8\xe3\xfd\xb6\xee\xd8\x13\x06\x06\x2e\x86\x4c\ +\xa0\x93\x22\x7c\x7d\xac\x92\xf3\x73\xf5\x12\x53\xf2\x93\x52\xf5\ +\x2a\x72\x0b\x18\x40\xc0\xc6\xbe\xa2\x20\x31\x39\x3b\xb5\x44\x21\ +\x29\x35\x3d\x33\xcf\x56\xe9\xfd\xee\xfd\x4a\x0a\x99\x29\xb6\x4a\ +\xe1\xa6\xbe\x06\xbe\x05\xce\xa9\x19\x99\x1e\x55\x45\xa9\xc1\x55\ +\x7e\x21\xc9\x55\xd9\xc9\x96\x29\x4a\xf6\x76\x5c\x36\x15\x56\x40\ +\x03\x72\x53\x4b\x12\x15\x2a\x72\x73\xf2\x8a\xad\x2a\x6c\x95\xc0\ +\xe6\x5a\x01\xd9\x20\x61\x7d\x25\x05\xb0\x92\x92\x6c\x5b\xa5\x08\ +\xdf\x00\x05\xe7\xfc\xa2\x54\x05\x13\x3d\x13\x3d\x03\x5d\xd7\x8a\ +\xcc\x32\x23\x25\x3b\x2e\x05\x9b\xa2\x94\x34\xab\x20\x17\x37\xa8\ +\x11\x40\x9e\xad\x52\x46\x49\x49\x81\x95\xbe\x7e\x79\x79\xb9\x5e\ +\xb9\xb1\x5e\x7e\x51\xba\xbe\xa1\xa5\xa5\xa5\xbe\x81\x91\xbe\x91\ +\x91\x2e\x50\x85\x6e\x71\x65\x5e\x49\x62\x85\x6e\x5e\xb1\x32\xc8\ +\x08\x88\x19\x2e\xa9\xc5\xc9\x45\x99\x05\x25\x99\xf9\x79\x0a\x20\ +\x7e\x62\x52\x7e\x69\x89\xad\x92\x12\x50\x5e\x01\x6a\x38\x28\xf8\ +\xe1\xa6\xe7\x15\x43\x03\x01\x18\x1c\xfa\x20\x19\x7d\x43\x3d\x03\ +\x7d\x64\xe5\x25\x99\x69\x38\x94\x83\x64\x10\xca\x41\x9a\xad\x02\ +\x32\x2b\x52\x73\x22\x5c\x32\x73\x53\xf3\x8a\x81\x4e\xb0\x55\x32\ +\x33\x46\x93\x8c\x44\x92\x34\x07\xcb\x81\x8c\xb1\xf2\xcc\x4d\x4c\ +\x4f\x0d\xcf\x4c\x29\xc9\x80\xeb\x41\x88\x7b\xa4\x66\xa6\x67\x94\ +\xa0\xa8\xf7\x2f\xca\x4c\x05\xfa\xbe\x04\x6c\x8e\xa1\x92\x3e\x28\ +\x0c\xf5\xa1\x81\x08\x8c\x13\x7d\x78\xa4\xd8\x81\xbd\x42\x6b\x30\ +\x6a\xc9\xa8\x25\xa3\x96\x8c\x5a\x32\x6a\xc9\xa8\x25\xa3\x96\x0c\ +\x2a\x4b\xb8\x10\xcd\xba\xd4\x3c\x60\x5b\xae\x1c\xd8\x68\x73\x60\ +\x88\x2a\x04\x36\xf8\x58\x8a\x9d\x3c\x43\x38\x80\xa0\x86\x23\xa5\ +\x03\xc8\xd7\xf7\x74\x71\x0c\xb1\x38\x9d\x9c\x20\xc1\xaa\x2c\x6c\ +\x70\x48\xe2\xe3\xc7\x8f\x4b\x5e\xfc\xb6\x9f\xf1\xd7\x89\x27\x62\ +\x47\x81\x22\xf3\x65\x8f\xbe\x9f\x82\x2f\x7f\xb6\x72\x8b\xf7\x3d\ +\xfb\x29\xc8\xcb\xd0\x9d\xc3\xfa\x52\xd3\xfb\x8f\x28\xa8\xf1\xe8\ +\xe9\xea\xe7\xb2\xce\x29\xa1\x09\x00\xa6\x21\x0d\x8f\ +\x00\x00\x02\x29\ +\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\x01\xe0\x49\x44\x41\x54\x78\x9c\xed\x5b\x49\x72\xc0\x20\ +\x0c\x73\x3b\x7d\x74\x9e\x90\x5f\xb7\x27\x66\x68\x86\x04\x03\x92\ +\xec\x36\xe8\x4c\xbc\x28\x62\x37\x66\x1b\x1b\x1b\x6f\xc6\x87\xd2\ +\xd9\x71\x1c\xdf\x9e\x76\xe7\x79\xca\xe2\xa2\x3a\xf2\x26\xdc\x03\ +\x93\x10\xb8\x61\x54\xd2\x77\x40\x93\x01\x33\xc6\x4e\xfc\x0a\x14\ +\x11\x10\x23\xea\xe4\x0b\x10\x24\x2c\x19\x88\x4a\xfc\x8a\x15\x22\ +\xa6\x3f\xcc\x92\x7c\xc1\x2c\x09\xc3\x1f\x65\x4b\xfc\x8a\x51\x22\ +\x86\x1a\x67\x4f\xbe\x60\x84\x04\x77\xc3\xbf\x92\x7c\x81\x97\x84\ +\x2f\x76\x20\x4f\xa8\x83\x8c\x22\xd8\xc5\x12\x23\xb8\xd6\x1f\x42\ +\xfb\xf1\xa8\xa0\xdb\x40\x95\x3c\xcb\x5f\x8f\x84\x4f\xa4\x33\x0f\ +\x7a\x01\x29\x37\x42\x66\x1d\x05\x44\x48\x92\xe1\xfb\xc9\x6f\x1a\ +\x29\xb2\x63\xb8\xf3\x2f\xe9\x02\xb3\x7d\x5e\xd1\x1d\x9a\x0e\x54\ +\xf2\xab\xfd\x28\x06\xc6\x96\x0f\xaa\x02\x46\x92\x8a\x52\x02\x8d\ +\x80\x99\x3f\x1a\x41\x02\x65\x31\xb2\x2a\x67\x66\x77\xb8\xda\x86\ +\x2b\x00\x11\xbc\x52\x09\x50\x02\x90\x7f\x4e\x45\x02\x8c\x00\x86\ +\x6c\x15\x24\xfc\x32\x32\x1b\x28\x7b\x0a\x43\xdb\xaf\xed\x2d\x2b\ +\x40\x31\x7f\x33\x95\xb0\x44\x80\x72\x57\xc7\x22\x61\x9a\x00\x65\ +\xf2\x1e\xbb\xb3\x24\xc0\xa7\x41\xf6\xc9\x0e\xda\xbe\x74\x1d\x90\ +\xd1\xfe\x34\x01\x11\xcb\x56\x46\xb7\x5b\x52\x80\x92\x04\xd6\x98\ +\xb3\xdc\x05\x14\x24\x30\x07\x5c\xc8\x18\xc0\x24\x81\x3d\xdb\x40\ +\x77\x83\xcc\x15\x1b\xc2\x5e\xcb\x26\x74\x16\x40\x2a\x41\xb5\xce\ +\x90\xae\x03\xbc\x24\x28\x17\x59\x94\x13\xa1\x15\x12\xd4\x2b\x4c\ +\xea\xa1\xe8\x68\x32\x11\xbb\x4a\xea\xa1\xe8\x88\x12\x22\xf6\x16\ +\x66\x82\x7b\x01\x0f\x09\x51\xc9\x9b\xed\x9b\x21\xdd\xe5\x28\xf2\ +\x4c\x10\x09\xe9\xe5\xa8\x99\x4f\x09\x4a\xf5\xc9\xaf\xc7\x7b\xc9\ +\xa9\x2b\x45\x42\x0a\x24\xcc\x34\x15\x22\x77\x7e\x6a\x84\x95\xc8\ +\x98\xf1\x6b\x84\x20\x25\x32\x05\xff\xb5\x4a\x4c\x3e\x06\x64\xc3\ +\x2e\x94\x1c\x35\x9e\x9d\x04\x6a\xa9\x6c\x8d\x6c\x44\xc8\x8a\xa5\ +\x6b\x64\x21\x21\xa4\x5c\xbe\x20\x9a\x84\xd5\x33\xc7\xfd\x64\x06\ +\x61\xa4\xc6\x6b\x1f\x4d\xb5\xf0\xca\x67\x73\x4f\xc8\xf8\x70\x72\ +\xe3\xed\xf8\x01\xed\x72\x72\xcc\x11\x4e\x0c\xe5\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x95\ +\x00\ +\x00\x0b\x1f\x78\x9c\xeb\x0c\xf0\x73\xe7\xe5\x92\xe2\x62\x60\x60\ +\xe0\xf5\xf4\x70\x09\x02\xd2\x0e\x40\x2c\xc0\xc1\x06\x24\x97\x3d\ +\xaf\xd4\x04\x52\xed\x55\x21\x11\x25\x41\x89\xe5\x0a\x05\x45\xf9\ +\x69\x99\x39\xa9\x0a\x25\x95\x05\xa9\x0a\xa9\x15\x99\x69\x0c\x0c\ +\x15\xb7\x42\xfb\x4e\xf3\x1e\x76\xe0\x70\x79\x1f\x32\x51\xe8\xc7\ +\xdb\x0d\x53\x84\x23\xb7\x4d\xe1\x0b\xaa\x73\xc8\x3e\xfd\xd1\xfa\ +\x40\xc6\x96\xdf\x2c\x6f\xef\x9f\x77\x5c\xef\x16\x71\xd2\xdd\x47\ +\xe5\x40\xeb\xf2\xe5\xfb\xb4\x7d\xe2\x24\x36\x6b\x78\xbf\x9f\xd5\ +\x5d\x3c\x3b\xe4\xd2\x6e\xb5\xcb\xa2\x13\x8c\x6f\xbc\x6f\xaf\xfb\ +\x26\x7e\xd8\xa0\xb0\xc5\x3d\x21\xe1\xf0\xb2\xd4\xeb\x77\xaf\x6c\ +\x49\xeb\xbe\x75\xaa\xd6\xed\x9f\xe7\xba\xfb\xdf\xde\x3c\x7d\x99\ +\xf6\x8b\xd1\xbe\x5a\x47\xe0\x86\xd1\xd4\x23\x0c\x0c\x5c\x4c\x99\ +\x40\x27\x45\xf8\xfa\x58\x25\xe7\xe7\xea\x25\xa6\xe4\x27\xa5\xea\ +\x55\xe4\x16\x30\x80\x80\x8d\x7d\x45\x41\x62\x72\x76\x6a\x89\x42\ +\x52\x6a\x7a\x66\x9e\xad\xd2\xfb\xdd\xfb\x95\x14\x32\x53\x6c\x95\ +\xc2\x4d\x7d\x0d\x7c\x0b\x9c\x53\x33\x32\x3d\xaa\x8a\x52\x83\xab\ +\xfc\x42\x92\xab\xb2\x93\x2d\x53\x94\xec\xed\xb8\x6c\x2a\xac\x80\ +\x06\xe4\xa6\x96\x24\x2a\x54\xe4\xe6\xe4\x15\x5b\x55\xd8\x2a\x81\ +\xcd\xb5\x02\xb2\x41\xc2\xfa\x4a\x0a\x60\x25\x25\xd9\xb6\x4a\x11\ +\xbe\x01\x0a\xce\xf9\x45\xa9\x0a\x26\x7a\x26\x7a\x06\xba\xae\x15\ +\x99\x65\x46\x4a\x76\x5c\x0a\x36\x45\x29\x69\x56\x41\x2e\x6e\x50\ +\x23\x80\x3c\x5b\xa5\x8c\x92\x92\x02\x2b\x7d\xfd\xf2\xf2\x72\xbd\ +\x72\x63\xbd\xfc\xa2\x74\x7d\x43\x4b\x4b\x4b\x7d\x03\x23\x7d\x23\ +\x23\x5d\xa0\x0a\xdd\xe2\xca\xbc\x92\xc4\x0a\xdd\xbc\x62\x65\x90\ +\x11\x10\x33\x5c\x52\x8b\x93\x8b\x32\x0b\x4a\x32\xf3\xf3\x14\x40\ +\xfc\xc4\xa4\xfc\xd2\x12\x5b\x25\x25\xa0\xbc\x02\xd4\x70\x50\xf0\ +\xc3\x4d\xcf\x2b\x86\x06\x02\x30\x38\xf4\x41\x32\xfa\x86\x7a\x06\ +\xfa\xc8\xca\x4b\x32\xd3\x70\x28\x07\xc9\x20\x94\x83\x34\x5b\x05\ +\x64\x56\xa4\xe6\x44\xb8\x64\xe6\xa6\xe6\x15\x03\x9d\x60\xab\x64\ +\x66\x82\x26\x19\x89\x24\x69\x68\x06\x96\x04\x99\x63\xe5\x99\x9b\ +\x98\x9e\x1a\x9e\x99\x52\x92\x01\xd7\x84\x10\xf7\x48\xcd\x4c\xcf\ +\x28\x41\xd5\xe0\x5f\x94\x99\x0a\xf4\x7f\x09\xc4\x24\x25\x7d\x50\ +\x28\xea\x43\x83\x11\x18\x2b\xfa\xf0\x68\xb1\x03\x7b\x86\xd6\x60\ +\xd4\x92\x51\x4b\x46\x2d\x19\xb5\x64\xd4\x92\x51\x4b\x46\x2d\x19\ +\x54\x96\x70\x21\x1a\x76\xa9\x79\xc0\xd6\x5c\x39\xb0\xd9\xa6\x5e\ +\xf8\x9e\x0f\xd8\xe4\x63\x29\x76\xf2\x0c\xe1\x00\x82\x1a\x8e\x94\ +\x0e\x20\xdf\xd4\xd3\xc5\x31\x24\xe2\xf0\xdb\xab\x1b\x79\x19\x0c\ +\x38\x58\x0c\x4f\x2c\x3a\x73\x6c\x89\xe7\x6c\xd9\x7b\xef\x34\x26\ +\x3a\x84\xbb\x6e\xfb\xd7\x3e\x73\xa7\xe7\xe9\xf7\x79\xf3\xbf\x70\ +\x5b\xcc\x63\x98\xe0\x28\x39\xc5\xb1\xc1\x83\xff\xd8\x5c\x0e\xee\ +\x55\xc9\xa5\x1a\xa0\x46\xa4\xa7\xab\x9f\xcb\x3a\xa7\x84\x26\x00\ +\xe3\x91\x12\xf6\ +\x00\x00\x01\x9d\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x4f\x49\x44\x41\x54\x58\x85\xed\ +\x97\xbf\x4e\xc2\x50\x14\x87\xbf\x43\x28\x8c\x94\x05\x9f\x81\x85\ +\x44\x4c\x70\x85\x68\x2a\x11\xe3\x0b\xf0\x14\x75\x56\x07\xd9\xe1\ +\x29\x78\x04\x62\x6c\x4c\xba\x77\xc0\x84\xa5\xef\xc0\x02\x8e\x58\ +\x92\xeb\x50\x8a\x4d\xf9\xd3\x44\x5a\x17\xef\xb7\xf5\xde\x9b\xfe\ +\xbe\x9e\xa6\xe9\x39\xf0\xdf\x91\xe4\x42\xb3\xd3\xbb\x01\xf5\x00\ +\xd2\x02\xcc\x8c\x72\x96\xa0\x3c\x90\xe1\xd4\x9d\xbc\x1d\x14\xb8\ +\x68\xdf\x0d\x94\xa8\x47\x60\x25\xe0\x2b\xd4\x67\x16\xe9\x82\x54\ +\x14\xd4\x81\xb2\x82\xc1\x87\x3b\x79\xde\x11\x68\xb6\x6f\xbb\x88\ +\xbc\x02\xef\x6b\x23\xe8\xcf\x1c\x67\x9e\x45\x78\x44\xc3\xb2\x6a\ +\xc5\xc0\x18\x03\xd7\x40\x37\xaa\x44\x21\xa6\x69\x03\xab\x3c\xc2\ +\x01\x66\x8e\x33\x5f\x1b\x41\x1f\xf8\x02\xec\x68\xfd\x47\x00\x69\ +\x09\xf8\x79\x84\xc7\x25\x00\x1f\x68\xed\x11\xc0\xcc\xea\x9d\x1f\ +\x47\x2d\x81\x6a\x74\x55\x4c\x3b\xde\xec\xf4\xd4\x29\x71\x53\x77\ +\xb2\xf3\xa5\xc5\x29\x1c\xdb\xfc\x0b\xb4\x80\x16\xd0\x02\x5a\x40\ +\x0b\x68\x01\x2d\x90\xda\x0f\xa4\xfd\xcf\x4f\x25\x5e\x81\xa5\x20\ +\x95\x3c\xc3\x42\xc4\x04\x16\x7b\x04\x94\xa7\xa0\xde\xb0\xac\x5a\ +\x5e\xd1\x9b\x7b\xd7\x01\x6f\x8f\x80\x0c\x81\x72\x31\x30\xc6\x79\ +\x48\x5c\x5e\xdd\x9f\x6d\xda\xf2\x12\x30\xda\xa6\xc6\x0f\x9d\x77\ +\x7a\x2f\x02\x4f\x84\xad\xb3\xbf\x69\x20\x33\x40\x4c\xc2\x27\x2f\ +\x1d\x1c\x4c\x22\xc2\xd1\x0c\x9b\xb0\x75\xae\x26\xf7\x7f\xc9\x82\ +\xb0\xec\xa3\xe4\x68\xa6\xf9\x06\xfe\xc1\x65\x8b\x9b\xf2\xc3\xc8\ +\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\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x53\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbf\x4f\x13\x61\x18\xc7\x3f\xcf\xb5\x13\xa6\x86\xd1\x76\xa3\ +\x03\x90\x2e\xd2\xeb\x00\x13\x5c\x4b\x42\x82\x57\xa2\x61\x76\xc5\ +\x38\x6a\xe2\x20\x3f\xdc\xa8\xd1\xc4\x44\x17\x27\x06\xe3\x3f\x50\ +\x1c\x5a\x18\x08\x50\x18\x14\x12\x69\x71\xa0\x89\x0d\xa4\x4c\x2d\ +\x6e\xc4\x46\x16\xec\x3d\x0e\x80\x61\xe0\xe0\xae\x10\x17\xfb\x59\ +\xdf\xef\x7b\xdf\xef\xdd\xbd\xef\xf3\x3c\xd0\xa6\xcd\xff\x8e\xf8\ +\x11\x5b\x96\x15\x6c\x10\x4a\xab\xe8\xb8\xa0\xfd\x0a\x91\xd3\x87\ +\xd4\x14\xd9\x14\x95\x6c\x88\x46\xae\x50\x28\xfc\xbe\xf1\x00\x89\ +\xd4\xd8\x88\xaa\xf3\x16\x88\x21\x52\x02\x67\x5d\x1d\xa9\x03\x88\ +\xa1\x61\x30\x06\x51\x8d\x03\x65\xc3\xd0\x27\x5f\x97\x17\x96\x6e\ +\x2a\x80\x98\x49\x7b\x12\xc8\xa0\xcc\x6b\xc0\x99\x29\x2d\x2f\x96\ +\x2f\x12\xc6\x87\x47\x63\xd2\x34\x66\x11\x1e\x08\x32\xbd\xb5\x9a\ +\x7b\x05\xa8\xc7\x77\xbc\x18\x33\x69\x4f\x99\x49\xfb\xd8\x4c\xa5\ +\x27\x3c\xef\x49\xa5\x27\xcc\xa4\x7d\x9c\x48\xa6\x27\xaf\xd2\x06\ +\x2e\x5b\x4c\xa4\xc6\x46\x40\x3f\x20\xf2\xb8\xb8\x92\x9b\xf3\x1a\ +\xa0\x5e\xad\x14\xc3\x5d\xdd\x3f\x80\x77\x91\x68\xef\x97\x7a\xb5\ +\xb2\xe7\xa6\x75\xfd\x05\x96\x65\x05\x7f\xca\xad\x6f\x28\xdf\x8b\ +\x85\xfc\xb8\x57\xf3\xf3\x98\xa9\x7b\xf3\xa8\x74\xdf\xd6\x5f\x77\ +\xdd\x0e\xa6\xe1\xb6\xb9\x41\x28\x0d\xc4\x34\xe0\xcc\xb4\x62\x0e\ +\xa0\xa2\xd3\x40\xec\x50\x3a\x6c\x37\x8d\x6b\x00\x15\x1d\x47\xa4\ +\xe4\x76\xe0\xbc\x50\x5a\x5e\x2c\x0b\x6c\x07\xc0\xf5\x0b\xba\x06\ +\x10\xb4\x1f\x9c\xf5\x56\xcd\xcf\x50\xd1\x35\x90\x01\xdf\x01\x14\ +\x22\x67\xf7\xfc\x3a\x08\x1c\x9c\x15\x2c\x5f\x01\xfe\x15\x41\xb7\ +\x05\x81\x1a\x86\x86\xaf\x6b\xa0\x70\x47\xa0\xe6\x3b\x80\x22\x9b\ +\x20\x83\xd7\x0d\x20\x2a\x43\xa0\x1b\x6e\xeb\xee\x87\x50\x25\x8b\ +\x6a\x3c\x3e\x3c\x1a\x6b\xd5\x3c\x3e\x3c\x1a\x53\xe8\x6b\x42\xd6\ +\x77\x80\x10\x8d\x1c\x50\x96\xa6\x31\xdb\x6a\x00\x51\xc9\x08\xec\ +\x74\xea\x51\xde\x4d\xe3\x5a\x8a\xf7\xf7\xf7\x9d\x48\xb4\x77\x17\ +\x34\x13\x8e\xf6\xd4\xea\xd5\x4a\xd1\x8f\xb9\x99\xb4\x1f\x81\x3c\ +\x33\x0c\x7d\xf8\x79\x75\x69\xd7\x77\x00\x80\x7a\xb5\xb2\x17\xee\ +\xea\x3e\x06\xde\x84\xa3\x3d\x07\x5e\x43\x9c\x98\xf3\x5e\x90\x17\ +\x5b\x2b\xf9\x8f\x97\x69\x3d\xb5\xe3\x44\x32\xfd\x5c\xd1\x97\x88\ +\x7e\x52\xd1\xe9\x4b\xdb\xb1\x4a\x06\x95\xfb\x22\x3a\xb5\xb5\xb2\ +\xf0\x9a\x2b\xda\x71\x4b\x03\x89\xc0\xb6\x8a\xae\x09\x1c\xc0\xe9\ +\x55\x53\x19\x52\xe8\x13\xd8\x11\x43\x9f\xde\xe4\x40\xf2\x17\xcb\ +\xb2\x82\x87\xd2\x61\x9f\xd4\x76\x19\x38\x3f\x92\x81\x6e\x34\x21\ +\xdb\xa9\x47\x79\x3f\x23\x59\x9b\x36\x6d\xfe\x00\x0a\x49\xe7\x8d\ +\x0a\x55\xe0\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x00\xef\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x51\x00\x00\x00\x3a\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\ +\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\xdc\x08\x17\ +\x0b\x2a\x32\xff\x7f\x20\x5a\x00\x00\x00\x6f\x49\x44\x41\x54\x78\ +\xda\xed\xd0\xb1\x0d\x00\x30\x08\x03\x41\xc8\xa0\x0c\xc7\xa2\x49\ +\xcf\x04\x28\xba\x2f\x5d\x59\x97\xb1\xb4\xee\xbe\x73\xab\xaa\xdc\ +\xf8\xf5\x84\x20\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\x21\ +\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\x41\ +\x84\x08\x51\x10\x21\x42\x84\x28\x88\x10\x21\x42\x14\x44\x88\x10\ +\x21\x0a\x22\x44\x88\x10\x05\x11\x22\x44\x88\x82\x08\x11\x22\x44\ +\x41\x84\x08\x51\x10\x21\x42\xfc\xaa\x07\x12\x55\x04\x74\x56\x9e\ +\x9e\x54\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\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\xdc\x08\x17\x08\x15\x3b\xdc\ +\x3b\x0c\x9b\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xb6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x11\x08\x06\x00\x00\x00\xc7\x78\x6c\x30\ +\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\xdc\x08\x17\ +\x0b\x2c\x0d\x1f\x43\xaa\xe1\x00\x00\x00\x36\x49\x44\x41\x54\x38\ +\xcb\x63\x60\x20\x01\x2c\x5a\xb4\xe8\xff\xa2\x45\x8b\xfe\x93\xa2\ +\x87\x89\x81\xc6\x60\xd4\x82\x11\x60\x01\x23\xa9\xc9\x74\xd0\xf9\ +\x80\x85\x1c\x4d\x71\x71\x71\x8c\xa3\xa9\x68\xd4\x82\x61\x64\x01\ +\x00\x31\xb5\x09\xec\x1f\x4b\xb4\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x1b\x0e\x16\ +\x4d\x5b\x6f\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\x73\x3e\x20\x0b\xa4\x08\x30\x32\x30\x20\x0b\xa6\ +\x08\x30\x30\x30\x42\x98\x10\xc1\x14\x01\x14\x13\x50\xb5\xa3\x01\ +\x00\xc6\xb9\x07\x90\x5d\x66\x1f\x83\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1f\x20\xb9\ +\x8d\x77\xe9\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xe6\x7c\x60\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x48\x11\x40\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x23\xed\x08\xaf\x64\x9f\x0f\x15\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x03\x18\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xca\x49\x44\x41\x54\x58\x85\xed\ +\x96\xb1\x6f\x14\x57\x10\xc6\x7f\xdf\xf3\xc9\x41\x44\x8e\x50\xaa\ +\x84\x3f\x20\xc5\x35\xc6\x77\x05\xa4\x81\x5d\x23\xc5\xc2\xb7\x40\ +\xe4\x0e\xba\x20\xe1\xc2\x55\xd2\x05\x4c\x89\xa3\xa4\x4a\x67\x25\ +\x8a\x94\x74\xa1\x33\x10\x9f\x8d\x0c\xb2\x39\x68\x02\x52\x6c\x73\ +\x05\x96\xf2\x0f\x38\x54\x11\x8a\x15\x94\x00\xb7\x5f\x8a\xdb\x3d\ +\x5f\x24\xaf\xed\x43\x4e\x95\xfb\xaa\xb7\xb3\x33\x6f\xbe\x99\xf7\ +\xde\xcc\x40\x1f\x7d\xfc\xdf\xa1\x5e\x94\xa3\x28\x2a\x6d\x31\x94\ +\x58\x9e\x10\x3e\x6e\x38\x9a\x6d\xb2\x69\xf4\x58\xd6\xdc\x10\x5b\ +\xf5\x46\xa3\xf1\xfa\xc0\x09\x54\x47\xcf\x7e\x64\xa7\x5f\x03\x65\ +\xa4\x75\x48\x1f\x3a\xd5\x6f\x00\x0a\x7e\x1f\xc2\x49\xec\x11\x60\ +\x23\x04\x7f\xfa\xcb\xf2\xe2\xbd\x83\x22\xa0\x4a\x5c\xbb\x02\xcc\ +\x60\x6e\x7a\x20\xbd\xb6\xbe\x7c\x67\x63\x27\xc5\x91\xd3\x67\xca\ +\x6a\x85\xeb\x88\x8f\x85\xa6\x57\xef\xd7\xbf\x04\xbc\xcf\x18\x77\ +\x46\x25\xae\x5d\xad\xc4\xb5\x57\x95\xd1\xe4\xf2\xbe\x6d\x46\x93\ +\xcb\x95\xb8\xf6\xaa\x1a\x27\x57\xf6\xd2\xdd\x35\x03\x59\xda\x97\ +\x90\x26\xd7\x56\xea\xdf\xe5\x36\x95\x28\xb9\x88\x3c\x05\x1e\xce\ +\x44\x4d\xac\xd9\xb5\x46\xfd\x47\xb2\x88\x2b\x71\x6d\x12\xf8\x56\ +\x0a\x63\xab\x2b\xf3\x77\x7b\x26\x10\x45\x51\xe9\x0f\xbd\xdd\xc4\ +\xfc\xba\xd6\x58\x98\x00\xf8\x70\x6c\xec\xdd\xbf\x5f\x96\x7e\x00\ +\xce\x21\xa5\xd8\xa1\xbd\x4b\x7b\x6d\x7c\xfb\xd0\x60\xeb\xd2\xcf\ +\x4b\x4b\xbf\xb7\x33\x31\x7e\x13\xeb\x83\x77\xfc\xe7\x70\xd1\xc5\ +\x0c\x45\x04\xb6\x18\x4a\x80\xb2\x07\xd2\x6b\x39\xd9\xb6\x73\x25\ +\x00\x1d\xe7\x5d\x6b\x11\xce\xfe\xf5\x72\xe0\xfb\x3c\x30\xcb\xd3\ +\x40\xf9\xb9\x0e\xd7\x8a\xfc\x14\x12\xb0\x3c\x81\xb4\x9e\x5f\xb8\ +\x4a\x94\x5c\x04\xce\x81\x0b\x6d\xc0\x41\xe8\x7c\x35\x1e\xbf\x00\ +\xb0\xbe\x7c\x67\x43\xf0\x64\x00\x26\x7a\x26\x20\x7c\x1c\xd2\x87\ +\xdb\x02\x4f\x21\xa5\xc5\xce\x3b\x86\x69\x8a\xa6\xba\x02\x79\x00\ +\x3a\x51\xa4\x5e\x2a\xfa\x61\x38\x9a\xbf\xf3\x4c\x32\x8c\x8b\x09\ +\x77\x19\x06\x60\x78\x9b\x0f\xcf\xf2\x82\xb5\x13\xf6\xde\xf0\x3f\ +\xc6\x2e\x47\xc0\x66\xbb\xc2\x75\x24\xcd\xfd\x1e\x01\xd0\xcc\x3f\ +\x0d\xef\x09\x36\x7b\x26\x60\xf4\x18\xc2\xc9\x6d\x81\x66\xff\x75\ +\xf3\x8b\x0d\x43\xc0\xb3\x1d\x3e\xd6\x29\xf0\xa3\x9e\x09\xc8\x9a\ +\xc3\x1e\x19\x39\x7d\xa6\x0c\x90\x15\x99\x9f\x60\xb7\x2c\x28\x35\ +\xbe\xbd\x7a\x7f\xf1\x06\xb4\x4b\xb3\xe1\x58\x0b\xe6\x7a\x26\x30\ +\xc4\x56\x1d\xd8\x50\x2b\x5c\xcf\x44\x7e\x6b\xf0\xf5\x27\x26\x9d\ +\x6f\xfb\x62\x9b\x48\xb6\x36\xe9\xfc\xa1\xc1\xd6\x25\xb2\x6a\x28\ +\x6b\x46\xf0\xf4\x88\x5f\x2c\x14\x52\x2e\x8e\xa6\xb8\x14\x57\xe3\ +\xf1\x0b\xd9\x53\xcb\x6f\x7b\x33\xe0\xd9\x2c\xf2\xee\x52\xfc\x4d\ +\x08\x1e\xdb\x6f\x67\xdc\x11\x6f\xd4\x8c\xe2\xda\xe4\x81\x34\xa3\ +\x5c\xa7\x1a\x27\x9f\x1b\x7f\x81\x7c\xcb\xf2\xf4\xae\xed\xd8\x9a\ +\xc1\x3a\x2f\xf9\xea\xea\xca\xe2\x57\xec\xd1\x8e\xdf\x68\x20\x11\ +\x3c\xb1\xfc\x40\xf0\x0c\xb2\xa7\x66\x9d\x32\x1c\x13\x3c\x55\xf0\ +\x67\x07\x39\x90\x74\x10\x45\x51\xe9\xb9\x0e\xd7\xda\xb5\x5d\x27\ +\xba\x47\x32\xf0\xa3\x16\xcc\x1d\xf1\x8b\x85\x5e\x46\xb2\x3e\xfa\ +\xe8\xe3\x1f\x72\x78\x36\x82\x63\xad\x95\xaf\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x03\x0a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\xbc\x49\x44\x41\x54\x58\x85\xed\ +\x96\xbd\x4f\x14\x51\x14\xc5\x7f\x67\x86\xd0\x48\x2c\x98\x31\x51\ +\xff\x00\x8b\xd5\x15\xad\xb4\xd2\xd8\x68\x21\x7e\x84\x4e\x3a\x4d\ +\xa4\xa0\x52\x59\x8d\x82\x05\x85\x1a\x95\x41\x3b\xa2\x31\xd1\x4e\ +\x3b\x14\xc1\x42\x2d\x08\x54\x5a\xe9\xee\xba\x24\xfe\x03\x68\xe2\ +\x0e\x85\xc1\x06\xdc\x77\x2d\x76\x46\x88\xb2\xcb\x2e\xc1\xca\x3d\ +\xd5\x7b\x33\xf7\xe3\xbc\xfb\xde\x3b\xf7\x41\x0b\x2d\xfc\xef\x50\ +\x53\xd6\xc3\xd3\x6d\x41\x47\xd0\x2d\xac\x07\x74\x00\xd8\x99\xfc\ +\x99\x07\x7b\x6f\x68\x3c\x5e\x8c\xa7\x18\x3e\xf2\x73\xd3\x09\x74\ +\xde\x2d\x1e\xf5\x3c\xbb\x0f\x64\x80\x0f\x86\x66\x31\xfb\x52\x8d\ +\xa2\x1d\xc2\x0e\x01\xfb\x81\x39\x87\x2e\x2c\xe4\xb2\x6f\x37\x87\ +\x80\x99\xb6\x8d\x16\xae\x19\xba\x29\xf1\xbc\x62\xfe\xf5\x85\xdc\ +\xee\xb9\x35\x49\x46\xa5\x8c\xaf\xca\x0d\x33\x4e\x9b\x69\x28\xce\ +\xed\xb9\x8d\x64\x8d\x2e\x72\x4d\x6c\x8b\xf2\x83\x61\x54\x58\x0e\ +\x47\x0a\xe7\x1b\xf5\x09\x47\x0a\xe7\xc3\xa8\xb0\x1c\x8c\x14\xaf\ +\xad\x67\x5b\xb7\x02\x49\xd9\x5f\x63\xf4\x95\x2f\xef\x7d\x04\x80\ +\x99\xc2\xd1\x62\xaf\x41\xbf\xa0\x0b\xc0\x20\x2f\x18\x2b\x0f\x64\ +\x9f\xa6\x2b\x0e\xa3\x42\x1f\xf0\xd0\x39\x1d\x5b\xb8\x92\x7d\xd3\ +\x3c\x81\xe1\xe9\xb6\xb0\x23\xc8\x4b\x7c\xfe\x36\xb0\xb7\x07\x60\ +\xeb\xbd\x52\x67\xbb\x55\x9e\x60\x9c\x34\xc3\x49\x78\x55\x4e\xc9\ +\x58\x4c\x2c\xc9\x3f\xf7\xfd\xd2\xee\x85\x84\xc4\x73\x60\x57\x79\ +\x31\xee\xaa\x75\x30\xbd\x5a\xf9\x83\x8e\xa0\x1b\xc8\x54\xcc\xbf\ +\x9e\xae\xbc\xdd\x2a\x4f\xcc\xe8\x06\x48\x93\xaf\x1e\x9b\x71\xa2\ +\xdd\x2a\x8f\x31\x13\x80\xc3\x1f\x02\x32\xc1\x96\xe0\x78\xad\x3c\ +\x35\x09\x54\xaf\x1a\x1f\xd2\x03\x17\x8e\x16\x7b\x31\x4e\xaa\xae\ +\x0f\x1e\xc6\xa9\x30\x2a\x9e\x01\xa8\xfa\xda\x47\x0f\xf5\x34\x4d\ +\x00\x74\xc0\xd0\x6c\x3a\x33\xe8\x37\xc3\xd5\xb6\x4f\xec\x0c\x87\ +\x67\xfd\x2b\x7e\xde\x8c\xc9\x0e\xd6\xb2\x6f\xab\x13\x6b\xe7\xef\ +\x7b\x0e\x08\xba\x50\x3d\xc2\x89\x9d\xf0\x40\x5d\xab\x28\x7d\x65\ +\x45\xb0\xfe\xc2\xba\x01\xff\x35\xea\x11\x98\x47\xda\x91\x4e\x0c\ +\xf2\x0d\x6f\x01\x96\x5f\xf9\xa2\xed\xc0\xfc\x06\x08\xd8\xfb\x44\ +\x5e\xab\x61\x60\x4c\x8d\x6e\x81\xd3\xd8\x8a\x9f\x3b\x2c\xd3\xbb\ +\xa6\x09\x18\x1a\x07\xf6\x77\x46\xa5\x0c\x40\x55\x64\x78\x69\xd4\ +\xae\x82\x81\x43\x4c\x94\x73\xd9\x67\x50\x95\x66\xd0\x3e\x87\x8d\ +\x37\x4d\x20\x5e\x8c\xa7\x80\x39\x5f\x95\x1b\xc9\xd2\x6c\x49\xfe\ +\x59\x89\x49\x48\x4b\x9d\x24\x4e\xc6\x12\x93\x4b\xf2\xcf\xa5\x6a\ +\xe8\x51\xb9\x09\x94\xe2\x1f\xf1\xab\x5a\x79\x36\x26\xc5\x51\xf1\ +\x4c\xf5\xaa\xa5\xa7\xdd\xf2\x38\x8d\x95\x73\xd9\x67\x7f\x48\xf1\ +\x03\x87\x8e\x35\xda\x19\xd7\xc4\x86\x9a\x51\x54\xe8\xdb\x94\x66\ +\x04\x80\x99\x82\xe8\xd3\x55\xc9\x6e\x01\x2f\x1c\xfe\x50\xbd\x76\ +\x9c\x94\xfd\x94\xc1\x60\x3c\x90\xbd\xb3\x5e\x3b\xde\xe0\x83\xc4\ +\x3e\x1a\xde\x4c\x22\x32\x80\xb6\x0b\x77\x18\xb4\x0f\x28\x39\x74\ +\x71\xf3\x1e\x24\xab\x31\x3c\xdd\x16\x6c\x09\x8e\x7b\xa8\x27\x91\ +\xd7\xdf\x4f\x32\x99\xde\x39\x6c\x3c\xfe\x11\xbf\x6a\xe6\x49\xd6\ +\x42\x0b\x2d\xfc\x02\x9d\x07\x3c\xe4\x1f\x0b\x5f\x15\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\x8a\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x3c\x49\x44\x41\x54\x58\x85\xed\ +\xd7\x31\x4e\xc2\x50\x1c\xc7\xf1\xef\x9f\x26\x30\x5a\xa2\x96\x33\ +\x74\x11\x27\x4e\x60\x02\x77\xe0\x14\x18\xbb\xa9\x83\x8c\x34\xe0\ +\x25\x38\x83\x31\xf1\x04\x9d\x00\x87\x9e\x01\x62\x42\x1d\x21\x69\ +\xff\x0e\x94\x86\xb4\xe0\xa0\x6d\x1c\x7c\xbf\xf1\xf5\xa5\xbf\x4f\ +\xde\x5b\xfe\x0f\xfe\x7b\x24\xbf\xe0\xf8\xb3\xae\x4a\xed\x56\x95\ +\x0e\x60\x97\xd4\x13\x89\x10\x88\x26\xe3\xd5\xdd\xf5\xeb\x49\xc0\ +\xb9\xbf\x18\x0a\xdc\x03\x1b\xd0\x10\x95\xcf\x52\xea\x45\xcf\x40\ +\x5c\xa0\x81\x32\xfc\xf0\xae\x1e\x0b\x80\xcb\xf1\xbc\xa7\x89\xbc\ +\x00\x6f\x96\x6a\x7f\xe9\xb5\x57\xa5\x94\xa7\x69\x8d\xe6\x4e\x2c\ +\x32\x05\x6e\x6a\x24\xbd\xfd\x49\xd4\xb2\x1d\x2a\x03\x60\x53\x45\ +\x39\xc0\xd2\x6b\xaf\x2c\xd5\x3e\xb0\x8d\xb1\x06\xfb\xf5\x0c\xb0\ +\xbb\x73\x0d\xab\x28\x3f\x44\x00\xa1\xa0\x9d\x02\x00\xb0\x4b\xbb\ +\xf3\xef\xa2\x44\x40\xf3\x18\xe0\x4f\x62\x00\x06\x60\x00\x06\x60\ +\x00\x06\x60\x00\x06\x70\x08\x88\x76\xd3\x6b\xc5\x11\x6c\x60\x5d\ +\x00\x88\x10\x80\xb8\xad\xd1\xdc\xa9\xaa\x3b\xfd\xb7\xab\x48\x50\ +\x04\x68\x32\x06\x1a\xb1\xc8\xb4\x0a\x84\xf3\xfc\xde\x4a\xc7\xf2\ +\xba\x45\x3c\xc9\x7a\x0f\x37\x5d\x8c\x16\x4f\x08\x0f\xc0\x16\x08\ +\xd3\x01\xf2\xf7\xd9\x1d\xbb\x0b\xd4\x4f\x3e\x4c\x32\xa9\x3f\xeb\ +\xc6\x58\x83\x74\x74\x6e\xe6\xbf\xff\x30\x6b\x45\x02\x8b\x78\x92\ +\x7f\x9a\x99\x7c\x01\x0b\xfa\x6f\x38\x11\xee\x15\x0b\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xa4\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x56\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x67\x8a\x2e\xab\xd4\xc6\x33\x64\ +\xa3\x5d\x79\x82\x82\xde\xc1\x53\x58\x74\xd7\x76\xa1\x4b\x83\xf6\ +\x12\x9e\xa1\x14\x7a\x82\xac\xd4\x2e\x72\x06\x45\xd0\x2e\x15\x92\ +\xd7\x85\x31\x48\xd2\x74\xd1\x26\x28\x34\xdf\x72\x66\x98\xff\xe3\ +\x0d\x33\xbc\x81\xff\x8e\x44\x07\x4c\x7b\xd6\x52\x29\x3c\xa8\xd2\ +\x04\xca\x29\xe5\x6c\x45\x70\x44\xfd\xf1\xaa\x77\xf7\x96\x28\x70\ +\x63\x2f\x86\x02\x8f\xc0\x0e\xd4\x45\xe5\x33\x95\x78\xd1\x6b\x10\ +\x0b\x28\xa1\x0c\xd7\xfd\xfa\x73\x4c\xe0\x76\x3c\x6f\xab\x2f\xaf\ +\xc0\xbb\xa1\xda\x59\xf6\x1b\xab\x54\xc2\x03\x6a\xa3\xb9\xe9\x89\ +\x4c\x81\xfb\x02\x7e\xfb\x58\x89\x42\xb8\x42\xa5\x0b\xec\xb2\x08\ +\x07\x58\xf6\x1b\x2b\x43\xb5\x03\xec\x3d\x8c\xee\x71\x3c\x14\x38\ +\x9c\xb9\xba\x59\x84\x9f\x4a\x00\xae\xa0\xcd\x98\x00\x50\x4e\xed\ +\xcc\x7f\x42\xd9\x02\x95\xef\x04\xce\x42\x2e\x70\x76\x81\xab\xa4\ +\x89\xaa\xbd\xd0\x34\x83\xd6\xbd\x7a\xec\xd5\x85\x0b\xa8\x40\x2e\ +\x90\x0b\xe4\x02\x89\xef\x40\xd2\xbd\x4d\x9b\xb3\x57\x20\x17\xb8\ +\x28\x81\xed\xa1\x7b\xcd\x18\xa1\x0c\x6c\x62\x02\x22\x38\x20\x56\ +\x6d\x34\x37\xb3\xca\x0e\xf6\xb6\x14\x71\xe2\x02\xea\x8f\x81\x92\ +\x27\x32\xcd\x42\xc2\x7c\xf9\xa8\x05\x6d\x79\xd1\xc0\x9b\x84\xb9\ +\xa7\x8b\xaa\xa3\xc5\x00\xe1\x09\xd8\x03\x6e\xd0\x40\xfe\x9d\x43\ +\xd9\x2d\xa0\x98\xf8\x31\x09\x4d\xed\x59\xcb\xc3\xe8\x06\xad\x73\ +\x25\x3a\xff\x4b\x36\x8a\x38\x06\xde\x24\xfa\x35\xcb\xf9\x02\xdd\ +\x44\x74\xcb\x69\x25\xf5\xbc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x40\x14\x86\xbf\x17\x82\x2e\x8d\x1b\x7b\x06\x2f\ +\xe0\x09\x0a\x7a\x07\x4f\x61\x09\x64\x94\xb6\x8b\xba\x89\x10\xf4\ +\x14\x9e\xa1\x14\x7a\x02\x2f\xe0\x1d\xdc\x68\x97\x4a\xc8\xdf\x45\ +\x4d\x49\x15\x2b\xb4\x49\x37\xcd\xb7\x9b\x37\xc3\xfc\x1f\x19\xc2\ +\xbc\x81\xff\x8e\x9d\x16\xa2\x28\xea\x9b\xd9\x9d\xa4\x9e\x99\x05\ +\x65\x84\x48\xda\x99\xd9\x4a\xd2\x7c\x36\x9b\xbd\x5c\x14\x18\x8f\ +\xc7\x53\x49\xf7\xc0\x5e\xd2\xda\xcc\xde\x4a\x12\x68\x99\x59\x17\ +\x68\x02\xd3\x38\x8e\x1f\xcf\x04\x9c\x73\x03\xe0\x19\x78\x4d\xd3\ +\x74\x98\x24\xc9\xa6\x8c\xf0\x9c\x30\x0c\x3b\xbe\xef\x2f\x81\x5b\ +\x49\x83\xfc\x4b\x78\x85\x35\x23\x60\x5f\x45\x38\x40\x92\x24\x9b\ +\x34\x4d\x87\xc0\xc1\xf3\xbc\x51\x5e\xff\x14\x90\xd4\x93\xb4\xae\ +\x22\xbc\x28\x01\xac\x25\xf5\xce\x04\xcc\x2c\x28\xeb\xcc\xaf\xb0\ +\x03\xda\xf9\xc0\xbf\xb6\xda\x39\xa7\xdf\xa4\xc5\x71\x7c\xf6\xa7\ +\x15\xf1\xbe\x9b\xfc\x0b\x6a\x81\x5a\xa0\x16\xa8\x05\x6a\x81\x5a\ +\xa0\x16\xb8\xda\x0f\x5c\xbb\xcf\x4b\x13\x90\xb4\x03\x5a\x55\x86\ +\x1d\x09\x80\x6d\x3e\x28\xb6\x64\x2b\x33\xeb\x86\x61\xd8\xa9\x2a\ +\xf9\xb8\x77\xd7\xcc\x56\x67\x02\x92\xe6\x40\xd3\xf7\xfd\x65\x15\ +\x12\x93\xc9\xe4\xe6\xd8\x96\x37\xb2\x2c\x5b\xe4\xf5\x2f\xe7\xeb\ +\x9c\x7b\x02\x1e\x80\x03\xb0\xe6\xa3\x81\x2c\x83\x00\xe8\x02\x0d\ +\x2e\x3d\x4c\x72\xa2\x28\xea\x7b\x9e\x37\x3a\xb6\xce\xed\xd3\xf9\ +\x1f\xb2\x35\xb3\x55\x96\x65\x8b\xd3\xa7\x59\xcd\x3b\xf1\x23\x82\ +\xe5\xfb\x4f\xe3\xdb\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\x09\x00\x00\x00\x06\x08\x04\x00\x00\x00\xbb\xce\x7c\x4e\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x02\x62\x4b\x47\x44\x00\x9c\x53\x34\xfc\x5d\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\xdc\x08\x17\x0b\x02\x04\x6d\ +\x98\x1b\x69\x00\x00\x00\x29\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x00\x8c\x0c\x0c\xff\xcf\xa3\x08\x18\x32\x32\x30\x20\x0b\x32\x1a\ +\x32\x30\x30\x42\x98\x10\x41\x46\x43\x14\x13\x50\xb5\xa3\x01\x00\ +\xd6\x10\x07\xd2\x2f\x48\xdf\x4a\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x02\x6b\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x02\x1d\x49\x44\x41\x54\x58\x85\xed\ +\x96\x31\x4f\x13\x61\x18\xc7\x7f\xcf\x5d\x37\x3a\x71\x25\x01\x3e\ +\x80\x43\xb5\x08\x13\x4e\x12\x16\x1d\x20\x41\xfb\x1d\x60\xb6\xa1\ +\x12\xa1\x0c\x1d\xc0\xa8\x3d\xe3\xa4\x89\xe1\x3b\x14\x07\x18\xc4\ +\xa1\x81\x09\x26\xa0\xd8\x26\x7e\x81\x6a\x22\xd7\xa9\x4c\xd0\xf7\ +\x71\xe8\x81\x0c\x5c\xdb\xbb\x36\x2e\xf6\xbf\xde\xfb\xdc\xff\x77\ +\x4f\xee\x7d\xfe\x0f\x0c\x34\xd0\xff\x2e\x09\x75\x3a\x5f\x8a\x39\ +\x71\x67\x5e\xd0\x34\xc8\x34\x30\xee\x3f\xa9\x81\x1e\x29\x52\xf4\ +\x1a\xde\x0e\xf9\xd9\xab\xbe\x03\x0c\xbf\x3b\x7b\x62\x59\xfa\x01\ +\x48\x02\xc7\x8a\x1c\xa0\xfa\xb3\xf5\x16\x19\x13\xf4\x31\x30\x05\ +\x54\x0d\xf2\xa2\x9e\x4d\x7d\xeb\x0f\x80\xaa\x8c\xbc\x2f\xaf\x2a\ +\xb2\x29\xc2\x76\x53\xed\xf5\x7a\xf6\x7e\xf5\x4e\x48\xb7\x92\xb4\ +\xa5\xb9\xa1\xca\x33\x55\xc9\x79\xd9\x07\x6f\x10\xd1\x6e\x3f\xf2\ +\x4e\x8d\xb8\xa7\x6b\x09\xb7\x7c\x99\x28\x94\x17\xbb\xad\x49\x14\ +\xca\x8b\x09\xb7\x7c\xe9\x14\xce\x56\x3b\x9d\x6d\xdb\x01\xbf\xed\ +\x5f\x51\x96\xce\x5f\x4e\x6c\x75\x0b\x00\x90\x70\xcb\x4b\xc0\x67\ +\x63\xe4\x69\x7d\x25\xb5\x17\x1e\x20\x5f\x8a\x25\xe2\xce\xa9\x08\ +\x3f\x7e\x2f\x4f\xa4\xc3\x98\xdf\x82\xd8\x06\xee\x9d\x37\xbc\x87\ +\x41\x3f\xa6\x15\x54\xec\xc4\x9d\x79\x20\xd9\x54\x7b\x3d\x8a\x39\ +\x80\xc1\xce\x01\x49\x67\xc8\x99\x0b\x3a\x13\x08\xd0\xba\x6a\x1c\ +\x07\xfd\x70\xdd\xa8\x55\xab\x27\x16\x12\xd8\xc1\x40\x00\x90\x69\ +\x45\x0e\xa2\x9a\x5f\x4b\xb1\xf6\x55\xf4\x51\x04\x00\xc6\x6f\xee\ +\x79\x6f\x08\xbf\xf8\x3b\xb0\x42\x01\xfc\x13\xb5\x03\xa8\x21\x32\ +\xd6\xbb\x85\x8c\x02\xb5\x08\x00\x7a\xe4\x8f\xd7\xde\xec\x31\x33\ +\xa2\x72\x18\x1a\x40\x91\x22\x30\x35\xec\x56\x92\x51\xcd\x5b\xb5\ +\x32\x69\xd0\x62\x68\x00\xaf\xe1\xed\x00\x55\x5b\x9a\x1b\x51\x01\ +\x2c\x9a\x9b\x40\xc5\xbb\xf0\x76\x43\x03\x90\x9f\xbd\x32\x46\x32\ +\xaa\x3c\x0f\x93\x03\xd7\xf2\x47\xf1\x82\x41\x32\xed\xe2\xb9\xed\ +\x2d\xa8\xaf\xa4\xf6\x04\xcd\x21\x7c\x0a\x15\x46\x2d\xf3\x8f\xaa\ +\x92\xeb\x14\xcb\x5d\xc5\xb1\xe3\x7e\x7f\x25\xa2\xaf\x81\x2f\x06\ +\x3b\xd7\x2e\x8e\xfd\xb6\x2f\x28\xac\x79\xcb\xa9\xb7\x9d\xe2\x38\ +\xe2\x42\xa2\x27\x8a\xb5\xef\x0f\x19\x40\x46\x05\x33\x03\x32\x09\ +\x54\x0c\x92\xe9\xdf\x42\x72\x5b\xf9\x52\xcc\x19\x72\xe6\x2c\x24\ +\xed\x8f\xd7\x9b\x95\x4c\x54\x0e\x0d\x5a\xf4\x2e\xbc\xdd\x30\x2b\ +\xd9\x40\x03\x0d\xf4\x07\x31\xe2\xd8\x82\x22\x4a\xad\xa7\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xa6\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x06\x00\x00\x00\x09\x08\x04\x00\x00\x00\xbb\x93\x95\x16\ +\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\xdc\x08\x17\x14\x1d\x00\xb0\ +\xd5\x35\xa3\x00\x00\x00\x2a\x49\x44\x41\x54\x08\xd7\x63\x60\xc0\ +\x06\xfe\x9f\x67\x60\x60\x42\x30\xa1\x1c\x08\x93\x81\x81\x09\xc1\ +\x64\x60\x60\x62\x60\x60\x34\x44\xe2\x20\x73\x19\x90\x8d\x40\x02\ +\x00\x64\x40\x09\x75\x86\xb3\xad\x9c\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x02\x2b\ +\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\x01\xe2\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x0e\xc3\x20\ +\x10\x43\x69\x4f\x9d\x23\x70\xeb\x76\x85\x84\x10\x81\x81\xb1\x0d\ +\x51\xf0\x3a\x35\xf1\xe3\x93\x0c\x25\x21\x1c\x1d\x1d\xbd\x59\x1f\ +\x65\x63\xd7\x75\xfd\x2c\xd7\xc5\x18\x65\xf7\x45\x6d\xc8\x1a\xb8\ +\x27\x26\x10\xb8\x31\x2a\xf4\x9d\xd0\x30\x60\x66\xec\xe0\xa5\x50\ +\x20\x20\x26\xea\xf0\x49\x08\x08\x2e\x83\x55\xc1\x4b\x79\x40\x4c\ +\xff\x70\x97\xf0\x49\xb3\x10\x86\x7f\xb4\x5b\xf0\x52\xa3\x20\x86\ +\x2e\xde\x3d\x7c\xd2\x08\x04\xf3\x85\x4f\x09\x9f\x64\x85\xf0\x65\ +\xdf\xc8\xee\x32\x51\x7a\x5a\xef\x27\x59\x46\x41\xf7\x82\x5e\xf8\ +\xbc\x11\x15\xa8\x32\x58\xab\xdd\x1e\x04\xe8\x14\x88\x31\x7e\xd8\ +\x85\x0c\xda\xbf\x09\x60\xb6\x47\x59\x10\x66\x7c\x7b\x19\x6e\x01\ +\x78\x87\x33\x1a\x82\xc7\xaf\x95\xc5\x3d\x05\x3c\xf3\xcf\xaa\x96\ +\x8f\xb7\xa3\xaa\xc6\x33\xa6\xac\x9b\x44\xfa\xd6\xbc\x60\x8b\x20\ +\x63\x24\x30\x7b\x3e\x09\xfa\x14\x40\x42\x50\x84\x0f\xa1\x32\x05\ +\x10\xe6\xde\x9b\x67\x86\x2f\xbd\x29\xaf\xc2\x9e\x91\xa0\xea\xf9\ +\x24\x5a\x2d\x30\x03\x41\x1d\x3e\x04\x72\x31\x34\x02\x61\x45\xf8\ +\x10\x8a\x35\x80\xd5\x50\x2f\x9c\x3a\x7c\xde\x9e\xa4\x1c\x9e\x5d\ +\x13\x14\xc5\x95\x6c\x3f\x60\x34\x8c\xaa\xb2\x94\x6e\x88\x58\x43\ +\x29\xf7\x1f\xe4\x3b\x42\xbd\x70\xea\xcd\x17\x39\x00\xcf\x7b\x00\ +\x43\x52\x00\xd6\x70\x4a\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd9\ +\x47\x9d\x02\x02\x1d\x80\x25\xfc\x4a\x08\x94\x6a\x30\x69\xb4\xe7\ +\x15\x2f\x45\x92\x6a\xb0\xd6\x50\xae\xbb\x30\x2b\x46\x02\x05\x80\ +\xa7\x27\xd5\x10\xe0\x00\x10\xc3\x58\x09\x01\xb6\x29\x1a\x02\x7e\ +\x0e\x2b\xfc\x60\x23\x80\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\ +\x43\x70\xdf\xb8\xaa\x9e\x67\x6d\xb4\x2e\xd9\x13\xdc\xc1\x2f\xe9\ +\x16\x00\xeb\xbf\x38\x8f\x18\x8b\x33\x7c\x04\xb0\xeb\x79\xb4\xbf\ +\xfb\x80\xc4\xee\xea\x8d\xe4\x73\x44\xc6\x6a\xf6\x34\x08\xe7\x94\ +\x98\x51\xe7\xa0\xe4\xa8\xf9\xee\x10\xa8\x47\x65\x73\xed\x06\x42\ +\x76\x58\x3a\xd7\x2e\x10\x96\x1c\x97\x4f\x5a\x0d\xc1\x5b\x10\x9d\ +\x4f\x66\x10\x26\xb9\x5e\xfb\xd1\x54\x4d\xaf\xfc\x6c\xae\xa5\x1d\ +\x3f\x9c\x3c\x7a\xbb\xfe\x5f\x58\x5a\xcd\xa5\xce\x7b\xda\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xdc\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x10\x00\x00\x00\x40\x08\x06\x00\x00\x00\x13\x7d\xf7\x96\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xb3\x00\x79\x00\x79\xdc\xdd\ +\x53\xfc\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\ +\xdf\x04\x19\x10\x2d\x19\xaf\x4a\xeb\xd0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x40\x49\x44\x41\x54\x58\xc3\xed\xce\x31\ +\x0a\x00\x20\x0c\x03\x40\xf5\xa3\x7d\x5b\x5f\xaa\x53\xc1\xc9\xc5\ +\x45\xe4\x32\x05\x1a\x8e\xb6\x76\x99\x5e\x25\x22\x66\xf5\xcc\xec\ +\xfb\xe8\x74\x1b\xb7\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\xf0\x36\xf0\x41\x16\x0b\x42\x08\x78\x15\x57\x44\xa2\x00\ +\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\x4b\x92\xc3\x20\ +\x10\x43\xc9\x9c\x61\x0e\x98\xc5\x1c\x2b\x8b\x39\x60\xee\x90\xac\ +\xa8\xa2\x28\x1b\x1a\x5a\x12\xed\x32\x5a\x3b\xc2\x7a\x7c\xec\x26\ +\x38\xa5\xad\xad\xad\x3b\xeb\xa1\x6c\xec\xf7\xef\xff\x63\xb9\xee\ +\xfd\x7a\xca\xee\x8b\xda\x90\x35\x70\x4f\x4c\x20\x70\x63\x54\xe8\ +\x33\xa1\x61\xc0\xcc\xd8\xc1\x6b\xa1\x40\x40\x4c\xd4\xe1\xb3\x10\ +\x10\x5c\x06\xab\x82\xd7\xf2\x80\x98\xfe\x61\x94\xf0\x59\xb3\x10\ +\x86\x7f\x14\x2d\x78\xad\x51\x10\x43\x17\x47\x0f\x9f\x35\x02\xc1\ +\x7c\xe1\x55\xc2\x67\x59\x21\xfc\xb0\x6f\x24\xba\x4c\x94\xae\xd6\ +\xfb\x59\x96\x51\xd0\xbd\xa0\x17\xbe\x6c\x44\x05\xaa\x0e\xd6\x6a\ +\xb7\x07\x01\x3a\x05\xde\xaf\xe7\x83\x5d\xc8\xa0\xfd\x9b\x00\x66\ +\x7b\x94\x05\x61\xc6\xb7\x97\xe1\x14\x80\x77\x38\xa3\x21\x78\xfc\ +\x5a\x59\xdc\x53\xc0\x33\xff\xac\x6a\xf9\x78\x3b\xea\xd0\x78\xc6\ +\x94\x75\x93\x48\xdf\x23\x2f\xd8\x22\xc8\x18\x09\xcc\x9e\xcf\x82\ +\x3e\x05\x90\x10\x14\xe1\x53\x3a\x98\x02\x08\x73\xef\xcd\x33\xc3\ +\xd7\xde\x94\x57\x61\xcf\x48\x50\xf5\x7c\x16\xad\x16\x98\x81\xa0\ +\x0e\x9f\x12\xb9\x18\x1a\x81\xb0\x22\x7c\x4a\xd5\x1a\xc0\x6a\xa8\ +\x17\x4e\x1d\xbe\x6c\x4f\x52\x0e\xcf\xae\x09\x8a\xe2\x4a\xb6\x1f\ +\x30\x1a\x46\x55\x59\x4a\x37\x44\xac\xa1\x94\xfb\x0f\xf2\x1d\xa1\ +\x5e\x38\xf5\xe6\x8b\x1c\x80\xe7\x3d\x80\x21\x29\x00\x6b\x38\x25\ +\x04\x19\x00\x64\x2d\x80\x94\x04\xc0\xec\xa3\x4e\x01\x81\x0e\xc0\ +\x12\x7e\x25\x04\x4a\x35\x98\x35\xda\xf3\x8a\x97\x22\x49\x35\x78\ +\xd4\x50\xa9\xb3\x30\x2b\x46\x02\x05\x80\xa7\x27\xd5\x10\xe0\x00\ +\x10\xc3\x58\x09\x01\xb6\x29\x9a\x12\x7e\x0e\x2b\xfc\x60\x23\x80\ +\xb1\x80\x29\x46\x02\x04\x00\x73\xf5\x66\x43\x70\xdf\xb8\xaa\x9e\ +\x67\x6d\xb4\x2e\xd9\x13\x8c\xe0\x97\x75\x0a\x80\xf5\x5f\x9c\x47\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\xdf\x7d\x40\x22\xba\x7a\x23\ +\x79\x1f\x91\xb1\x9a\x5d\x0d\xc2\x3e\x25\x66\xd4\x3e\x28\x39\x6a\ +\x1e\x1d\x02\xf5\xa8\x6c\xa9\x68\x20\x64\x87\xa5\x4b\x45\x81\xb0\ +\xe4\xb8\x7c\xd6\x6a\x08\xde\x82\x68\x7f\x32\x83\x30\x29\x75\xdb\ +\x8f\xa6\x8e\x74\xcb\xcf\xe6\x5a\x8a\xf8\xe1\xe4\xd6\xdd\xf5\x05\ +\x90\xc2\x5a\x7d\xfa\xa7\x95\xa2\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x01\xa8\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x5a\x49\x44\x41\x54\x58\x85\xed\ +\x97\x4d\x6a\xc2\x50\x14\x85\xbf\x1b\x82\x0e\xab\x13\xbb\x06\x37\ +\xe0\x0a\x0a\xba\x07\x57\x61\x09\xe4\x29\x6d\x07\x75\x12\x21\xe8\ +\x2a\x5c\x43\x29\x74\x05\xd9\x80\x7b\x70\xa2\x1d\x2a\x21\xa7\x83\ +\x1a\xb1\x86\x50\x28\xb1\x16\x9a\x33\x7b\xf7\x3e\xde\xf9\xb8\xef\ +\x87\xfb\xe0\xbf\xcb\xce\x03\x61\x18\xf6\xcd\xec\x5e\x52\xcf\xcc\ +\x5a\x55\x98\x48\xda\x9a\x59\x22\x69\x3e\x9b\xcd\x5e\x4b\x01\xc6\ +\xe3\xf1\x54\xd2\x03\xb0\x93\xb4\x32\xb3\xf7\x8a\x00\x6e\xcc\xac\ +\x0b\x34\x81\x69\x14\x45\x4f\x05\x00\xe7\xdc\x00\x78\x01\xde\xd2\ +\x34\x1d\xc6\x71\xbc\xae\xc2\x3c\x57\x10\x04\x1d\xdf\xf7\x97\xc0\ +\x9d\xa4\x41\x5e\x09\xef\x64\xce\x08\xd8\x5d\xc2\x1c\x20\x8e\xe3\ +\x75\x9a\xa6\x43\x60\xef\x79\xde\x28\x8f\x1f\x01\x24\xf5\x24\xad\ +\x2e\x61\x7e\x0a\x01\xac\x24\xf5\x0a\x00\x66\xd6\xaa\x6a\xcf\xbf\ +\xd1\x16\x68\x17\x00\xae\xa5\x1a\xe0\xea\x00\x7e\x59\xc2\x39\xa7\ +\x2a\x8d\xa2\x28\x2a\xbc\xba\xf0\x07\x2a\x50\x03\xd4\x00\x35\x40\ +\xe9\x3b\x50\x76\x6f\xab\xd6\xd5\x2b\x50\x03\x5c\x1d\xe0\x78\x08\ +\x25\x6d\x81\x9b\x5f\xf0\x6c\x01\x9b\x7c\x70\xda\x92\x25\x66\xd6\ +\x0d\x82\xa0\x73\x29\xe7\xc3\xda\x5d\x33\x4b\x0a\x00\x92\xe6\x40\ +\xd3\xf7\xfd\xe5\x25\x20\x26\x93\xc9\xed\xa1\x2d\x6f\x64\x59\xb6\ +\xc8\xe3\x5f\xee\xba\x73\xee\x19\x78\x04\xf6\xc0\x8a\xcf\x06\xb2\ +\x0a\xb5\x80\x2e\xd0\xa0\xec\x63\x92\x2b\x0c\xc3\xbe\xe7\x79\xa3\ +\x43\xeb\xdc\x3e\xcf\xff\x50\x1b\x33\x4b\xb2\x2c\x5b\x9c\x7f\xcd\ +\x6a\x7d\x00\x2c\x83\x82\xe5\xf9\x1d\x9c\xb3\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x00\xc3\ +\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\x0b\x13\x00\x00\ +\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xdc\x0b\x07\x09\x2e\x37\xff\x44\xe8\xf0\x00\x00\x00\x1d\x69\x54\ +\x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x43\x72\ +\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x64\ +\x2e\x65\x07\x00\x00\x00\x27\x49\x44\x41\x54\x78\xda\xed\xc1\x01\ +\x0d\x00\x00\x00\xc2\xa0\xf7\x4f\x6d\x0e\x37\xa0\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x77\x03\x40\x40\ +\x00\x01\xaf\x7a\x0e\xe8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x02\x35\ +\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\x01\xec\x49\x44\x41\x54\x78\x9c\xed\x9b\xdd\x91\xc3\x20\ +\x10\x83\x37\x57\xc3\xd5\x91\xea\x52\xc6\x55\x77\x75\xa4\x87\xe4\ +\x89\x19\x86\xb1\x61\x61\x25\x81\xc7\xe8\xd9\x11\xd6\xc7\x8f\xbd\ +\x04\x9b\x6d\x6d\x6d\xdd\x59\x0f\x65\x63\xbf\x7f\xff\x1f\xcf\x75\ +\xef\xd7\x53\x76\x5f\xd4\x86\xbc\x81\x5b\x62\x02\x81\x1b\xa3\x42\ +\x9f\x09\x0d\x03\x66\xc6\x0e\x5e\x0a\x05\x02\x62\xa2\x0e\x9f\x84\ +\x80\x10\x32\x98\x15\xbc\x54\x04\xc4\xf0\x0f\x57\x09\x9f\x34\x0a\ +\xa1\xfb\x47\xab\x05\x2f\xd5\x0b\xa2\xeb\xe2\xd5\xc3\x27\xf5\x40\ +\x70\x5f\x78\x95\xf0\x49\x5e\x08\x3f\xec\x1b\x59\x5d\x2e\x4a\x57\ +\xeb\xfd\x24\xcf\x28\x68\x5e\xd0\x0a\x9f\x37\xa2\x02\x55\x06\xab\ +\xb5\xdb\x82\x00\x9d\x02\xef\xd7\xf3\xc1\x2e\x64\xd0\xfe\x55\x00\ +\xa3\x3d\xca\x82\x30\xe2\xdb\xca\x70\x0a\x20\x3a\x9c\xd1\x10\x22\ +\x7e\xb5\x2c\xe1\x29\x10\x99\x7f\x5e\xd5\x7c\xa2\x1d\x75\x68\x3c\ +\x62\xca\xba\x49\xa4\xef\x91\x17\x6c\x11\x64\x8c\x04\x66\xcf\x27\ +\x41\x9f\x02\x48\x08\x8a\xf0\x66\x07\x53\x00\x61\x1e\xbd\x79\x66\ +\xf8\xd2\x9b\xf2\x2a\x1c\x19\x09\xaa\x9e\x4f\xa2\xd5\x02\x23\x10\ +\xd4\xe1\xcd\xc8\xc5\x50\x0f\x84\x19\xe1\xcd\x8a\x35\x80\xd5\x50\ +\x2b\x9c\x3a\x7c\xde\x9e\xa4\x1c\x1e\x5d\x13\x14\xc5\x95\x6c\x3f\ +\xa0\x37\x8c\xaa\xb2\x94\x6e\x88\x78\x43\x29\xf7\x1f\xe4\x3b\x42\ +\xad\x70\xea\xcd\x17\x39\x80\xc8\x7b\x00\x43\x52\x00\xde\x70\x4a\ +\x08\x32\x00\xc8\x5a\x00\x29\x09\x80\xd1\x47\x9d\x02\x02\x1d\x80\ +\x27\xfc\x4c\x08\x94\x6a\x30\xa9\xb7\xe7\x15\x2f\x45\x92\x6a\xf0\ +\xa8\xa1\x5c\x67\x61\x66\x8c\x04\x0a\x80\x48\x4f\xaa\x21\xc0\x01\ +\x20\x86\xb1\x12\x02\x6c\x53\xd4\x0c\x3f\x87\x15\x7e\xb0\x11\xc0\ +\x58\xc0\x14\x23\x01\x02\x80\xb9\x7a\xb3\x21\x84\x6f\x5c\x55\xcf\ +\xb3\x36\x5a\xa7\xec\x09\xae\xe0\x97\x74\x0a\x80\xf5\x5f\x5c\x44\ +\x8c\xc5\x19\x3e\x02\xd8\xf5\x3c\xda\x3f\x7c\x40\x62\x75\xb5\x46\ +\xf2\x3e\x22\xe3\x35\xbb\x1a\x84\x7d\x4a\xcc\xa9\x7d\x50\xb2\xd7\ +\x7c\x75\x08\xd4\xa3\xb2\xb9\x56\x03\x21\x3b\x2c\x9d\x6b\x15\x08\ +\x53\x8e\xcb\x27\xcd\x86\x10\x2d\x88\xf6\x27\x33\x08\x93\x5c\xb7\ +\xfd\x68\xea\x48\xb7\xfc\x6c\xae\xa6\x15\x3f\x9c\xdc\xba\xbb\xbe\ +\x18\x5f\x5a\xd7\x14\x54\xdf\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x01\xa2\ +\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\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x01\x54\x49\x44\x41\x54\x58\x85\xed\ +\x97\x41\x6a\xc2\x50\x10\x86\xbf\x49\x8a\x5d\x56\xa9\x8d\x67\xc8\ +\x46\xbb\xf2\x04\x05\xbd\x83\xa7\xb0\xe8\xae\xed\xa2\x2e\x0d\xda\ +\x4b\x78\x86\x52\xe8\x09\xb2\x52\xbb\xc8\x19\x14\x41\xbb\x54\x48\ +\xa6\x0b\x63\x10\x83\x0a\x35\xe9\xa6\xef\xdb\xe5\xbd\x21\xff\xc7\ +\x3c\x42\xe6\xc1\x7f\x47\x0e\x17\x1c\x6f\xdc\x50\xb1\x1e\x55\xa9\ +\x03\xc5\x8c\x72\x56\x22\xf8\xa2\xd1\x60\xde\xb9\xff\x38\x2a\x70\ +\xeb\x4d\x7b\x02\x4f\xc0\x1a\x34\x40\xe5\x3b\x93\x78\xd1\x1b\x10\ +\x17\xb8\x46\xe9\x2d\xba\xd5\x97\x94\xc0\xdd\x60\xd2\xd4\x48\xde\ +\x81\x4f\x5b\xb5\x35\xeb\xd6\xe6\x99\x84\xc7\x54\xfa\x13\x27\x14\ +\x19\x01\x0f\x16\x51\x73\xd7\x09\x2b\xa9\x50\x69\x03\xeb\x3c\xc2\ +\x01\x66\xdd\xda\xdc\x56\x6d\x01\x9b\x10\xbb\xbd\x5b\x4f\x04\xb6\ +\x67\xae\x41\x1e\xe1\xfb\x12\x40\x20\x68\x3d\x25\x00\x14\x33\x3b\ +\xf3\x53\x28\x2b\xa0\xb4\x7b\xbc\x3a\x57\x5f\xf6\xa6\x7a\x49\xde\ +\xa2\x53\x4d\x7d\x69\xfb\x58\xa7\x36\xff\x02\x23\x60\x04\x8c\x80\ +\x11\x30\x02\x46\xc0\x08\x9c\x9d\x07\xce\xfd\xcf\x2f\x65\xbf\x03\ +\xab\xed\xf4\x9a\x33\x42\x11\x58\xa6\x04\x44\xf0\x41\xdc\x4a\x7f\ +\xe2\xe4\x95\x1d\xbf\xdb\x55\xc4\x4f\x0b\x68\x34\x00\xae\x43\x91\ +\x51\x1e\x12\xce\xdb\x57\x25\x1e\xcb\x0b\x36\xe1\x30\xc9\xdd\x2f\ +\x2a\xf7\xa7\xaf\x08\xcf\xc0\x06\x08\xe2\x01\xf2\x72\xb6\x6d\x77\ +\x81\xc2\xd1\x8b\x49\x62\xea\x8d\x1b\x21\x76\x3b\x1e\x9d\x4b\x87\ +\xfb\xbf\x64\xa9\x88\x6f\x13\x0e\x0f\xaf\x66\x86\x1f\xb5\xcb\x74\ +\xcb\x4c\x58\x91\x63\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +" + +qt_resource_name = b"\ +\x00\x09\ +\x09\x5f\x97\x13\ +\x00\x71\ +\x00\x73\x00\x73\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x73\ +\x00\x0a\ +\x09\x24\x4d\x25\ +\x00\x71\ +\x00\x64\x00\x61\x00\x72\x00\x6b\x00\x73\x00\x74\x00\x79\x00\x6c\x00\x65\ +\x00\x09\ +\x00\x28\xad\x23\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x73\x00\x73\ +\x00\x02\ +\x00\x00\x07\x83\ +\x00\x72\ +\x00\x63\ +\x00\x13\ +\x08\xc8\x96\xe7\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\x11\ +\x0a\xe5\x6c\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\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\x11\ +\x0b\xda\x30\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x19\ +\x08\x3e\xcc\x07\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x65\x00\x6e\x00\x64\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\x12\ +\x07\x8f\x9d\x27\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2d\x00\x6f\x00\x6e\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\x11\ +\x08\x8c\x6a\xa7\ +\x00\x48\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x0f\ +\x02\x9f\x05\x87\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x18\ +\x03\x8e\xde\x67\ +\x00\x72\ +\x00\x69\x00\x67\x00\x68\x00\x74\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\x14\ +\x06\x5e\x2c\x07\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x2d\x00\x6f\x00\x6e\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\x1f\ +\x0a\xae\x27\x47\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\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\x11\ +\x08\xc4\x6a\xa7\ +\x00\x56\ +\x00\x73\x00\x65\x00\x70\x00\x61\x00\x72\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\ +\x00\x0a\ +\x05\x95\xde\x27\ +\x00\x75\ +\x00\x6e\x00\x64\x00\x6f\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x10\ +\x01\x07\x4a\xa7\ +\x00\x56\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1d\ +\x09\x07\x81\x07\ +\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\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x01\xe0\x4a\x07\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\x14\ +\x0b\xc5\xd7\xc7\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x76\x00\x6c\x00\x69\x00\x6e\x00\x65\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\x1a\ +\x01\x21\xeb\x47\ +\x00\x73\ +\x00\x74\x00\x79\x00\x6c\x00\x65\x00\x73\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2d\x00\x62\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\ +\x00\x2d\x00\x6d\x00\x6f\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x06\x53\x25\xa7\ +\x00\x62\ +\x00\x72\x00\x61\x00\x6e\x00\x63\x00\x68\x00\x5f\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x17\ +\x0c\x65\xce\x07\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\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\x1a\ +\x0e\xbc\xc3\x67\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\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\x17\ +\x0f\x1e\x9b\x47\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\x00\x6f\x00\x63\ +\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1c\ +\x08\x3f\xda\x67\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x20\ +\x09\xd7\x1f\xa7\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x66\x00\x6f\x00\x63\x00\x75\x00\x73\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\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\x19\ +\x0b\x59\x6e\x87\ +\x00\x72\ +\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x66\ +\x00\x6f\x00\x63\x00\x75\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0e\ +\x0e\xde\xfa\xc7\ +\x00\x6c\ +\x00\x65\x00\x66\x00\x74\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x09\ +\x06\x98\x83\x27\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x10\ +\x01\x00\xca\xa7\ +\x00\x48\ +\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x11\ +\x08\x90\x94\x67\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\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\x1a\ +\x01\x87\xae\x67\ +\x00\x63\ +\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x69\x00\x6e\x00\x64\x00\x65\x00\x74\x00\x65\x00\x72\x00\x6d\ +\x00\x69\x00\x6e\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x0c\xe2\x68\x67\ +\x00\x74\ +\x00\x72\x00\x61\x00\x6e\x00\x73\x00\x70\x00\x61\x00\x72\x00\x65\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x0f\ +\x01\xf4\x81\x47\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x1a\ +\x05\x11\xe0\xe7\ +\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\x66\x00\x6f\x00\x63\x00\x75\x00\x73\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\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00\x2b\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ +\x00\x00\x00\x4a\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\ +\x00\x00\x06\x52\x00\x00\x00\x00\x00\x01\x00\x00\x46\x60\ +\x00\x00\x03\x06\x00\x01\x00\x00\x00\x01\x00\x00\x2a\xdf\ +\x00\x00\x04\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x33\x5b\ +\x00\x00\x01\x50\x00\x00\x00\x00\x00\x01\x00\x00\x1f\x52\ +\x00\x00\x06\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x49\x79\ +\x00\x00\x03\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x19\ +\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xec\ +\x00\x00\x01\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x21\x93\ +\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x00\x22\x37\ +\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x40\x6f\ +\x00\x00\x07\x22\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x25\ +\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x28\xb2\ +\x00\x00\x02\x32\x00\x00\x00\x00\x00\x01\x00\x00\x23\x72\ +\x00\x00\x04\x46\x00\x00\x00\x00\x00\x01\x00\x00\x34\x15\ +\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x22\xdb\ +\x00\x00\x06\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x44\x31\ +\x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x16\ +\x00\x00\x01\x26\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xb8\ +\x00\x00\x05\x90\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xc9\ +\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x32\ +\x00\x00\x05\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x93\ +\x00\x00\x01\x82\x00\x00\x00\x00\x00\x01\x00\x00\x20\xe3\ +\x00\x00\x06\x78\x00\x00\x00\x00\x00\x01\x00\x00\x47\x40\ +\x00\x00\x02\xc4\x00\x01\x00\x00\x00\x01\x00\x00\x26\x20\ +\x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x17\x21\ +\x00\x00\x03\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x2d\x78\ +\x00\x00\x05\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x3d\x21\ +\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x00\x23\xf7\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x19\xa9\ +\x00\x00\x05\xe0\x00\x00\x00\x00\x00\x01\x00\x00\x41\x18\ +\x00\x00\x03\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x31\xbe\ +\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x8e\ +\x00\x00\x04\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x34\xbf\ +\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x32\xb1\ +\x00\x00\x06\xda\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x25\ +\x00\x00\x04\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x35\x69\ +\x00\x00\x06\x18\x00\x00\x00\x00\x00\x01\x00\x00\x43\x87\ +\x00\x00\x04\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x38\x85\ +\x00\x00\x02\x94\x00\x00\x00\x00\x00\x01\x00\x00\x25\x7d\ +\x00\x00\x00\x32\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() diff --git a/themes/qdarkstyle/rc/Hmovetoolbar.png b/themes/qdarkstyle/rc/Hmovetoolbar.png new file mode 100644 index 0000000..cead99e Binary files /dev/null and b/themes/qdarkstyle/rc/Hmovetoolbar.png differ diff --git a/themes/qdarkstyle/rc/Hsepartoolbar.png b/themes/qdarkstyle/rc/Hsepartoolbar.png new file mode 100644 index 0000000..7f183c8 Binary files /dev/null and b/themes/qdarkstyle/rc/Hsepartoolbar.png differ diff --git a/themes/qdarkstyle/rc/Vmovetoolbar.png b/themes/qdarkstyle/rc/Vmovetoolbar.png new file mode 100644 index 0000000..ac6a655 Binary files /dev/null and b/themes/qdarkstyle/rc/Vmovetoolbar.png differ diff --git a/themes/qdarkstyle/rc/Vsepartoolbar.png b/themes/qdarkstyle/rc/Vsepartoolbar.png new file mode 100644 index 0000000..7bf62f1 Binary files /dev/null and b/themes/qdarkstyle/rc/Vsepartoolbar.png differ diff --git a/themes/qdarkstyle/rc/branch_closed-on.png b/themes/qdarkstyle/rc/branch_closed-on.png new file mode 100644 index 0000000..d081e9b Binary files /dev/null and b/themes/qdarkstyle/rc/branch_closed-on.png differ diff --git a/themes/qdarkstyle/rc/branch_closed.png b/themes/qdarkstyle/rc/branch_closed.png new file mode 100644 index 0000000..d652159 Binary files /dev/null and b/themes/qdarkstyle/rc/branch_closed.png differ diff --git a/themes/qdarkstyle/rc/branch_open-on.png b/themes/qdarkstyle/rc/branch_open-on.png new file mode 100644 index 0000000..ec372b2 Binary files /dev/null and b/themes/qdarkstyle/rc/branch_open-on.png differ diff --git a/themes/qdarkstyle/rc/branch_open.png b/themes/qdarkstyle/rc/branch_open.png new file mode 100644 index 0000000..66f8e1a Binary files /dev/null and b/themes/qdarkstyle/rc/branch_open.png differ diff --git a/themes/qdarkstyle/rc/checkbox_checked.png b/themes/qdarkstyle/rc/checkbox_checked.png new file mode 100644 index 0000000..4007c2e Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_checked.png differ diff --git a/themes/qdarkstyle/rc/checkbox_checked@2x.png b/themes/qdarkstyle/rc/checkbox_checked@2x.png new file mode 100644 index 0000000..b9c3204 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_checked@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_checked_disabled.png b/themes/qdarkstyle/rc/checkbox_checked_disabled.png new file mode 100644 index 0000000..4762561 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_checked_disabled.png differ diff --git a/themes/qdarkstyle/rc/checkbox_checked_disabled@2x.png b/themes/qdarkstyle/rc/checkbox_checked_disabled@2x.png new file mode 100644 index 0000000..98bf547 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_checked_disabled@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_checked_focus.png b/themes/qdarkstyle/rc/checkbox_checked_focus.png new file mode 100644 index 0000000..91cb16c Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_checked_focus.png differ diff --git a/themes/qdarkstyle/rc/checkbox_checked_focus@2x.png b/themes/qdarkstyle/rc/checkbox_checked_focus@2x.png new file mode 100644 index 0000000..04b3bb5 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_checked_focus@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_indeterminate.png b/themes/qdarkstyle/rc/checkbox_indeterminate.png new file mode 100644 index 0000000..6b84636 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_indeterminate.png differ diff --git a/themes/qdarkstyle/rc/checkbox_indeterminate@2x.png b/themes/qdarkstyle/rc/checkbox_indeterminate@2x.png new file mode 100644 index 0000000..baa5020 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_indeterminate@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png b/themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png new file mode 100644 index 0000000..435048a Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png differ diff --git a/themes/qdarkstyle/rc/checkbox_indeterminate_disabled@2x.png b/themes/qdarkstyle/rc/checkbox_indeterminate_disabled@2x.png new file mode 100644 index 0000000..3e7f76c Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_indeterminate_disabled@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_indeterminate_focus.png b/themes/qdarkstyle/rc/checkbox_indeterminate_focus.png new file mode 100644 index 0000000..4bf4d53 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_indeterminate_focus.png differ diff --git a/themes/qdarkstyle/rc/checkbox_indeterminate_focus@2x.png b/themes/qdarkstyle/rc/checkbox_indeterminate_focus@2x.png new file mode 100644 index 0000000..1f5cb3e Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_indeterminate_focus@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_unchecked.png b/themes/qdarkstyle/rc/checkbox_unchecked.png new file mode 100644 index 0000000..54044ba Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_unchecked.png differ diff --git a/themes/qdarkstyle/rc/checkbox_unchecked@2x.png b/themes/qdarkstyle/rc/checkbox_unchecked@2x.png new file mode 100644 index 0000000..1259a98 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_unchecked@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_unchecked_disabled.png b/themes/qdarkstyle/rc/checkbox_unchecked_disabled.png new file mode 100644 index 0000000..75f0490 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_unchecked_disabled.png differ diff --git a/themes/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png b/themes/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png new file mode 100644 index 0000000..e4ecef9 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png differ diff --git a/themes/qdarkstyle/rc/checkbox_unchecked_focus.png b/themes/qdarkstyle/rc/checkbox_unchecked_focus.png new file mode 100644 index 0000000..5b0a18f Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_unchecked_focus.png differ diff --git a/themes/qdarkstyle/rc/checkbox_unchecked_focus@2x.png b/themes/qdarkstyle/rc/checkbox_unchecked_focus@2x.png new file mode 100644 index 0000000..14bec86 Binary files /dev/null and b/themes/qdarkstyle/rc/checkbox_unchecked_focus@2x.png differ diff --git a/themes/qdarkstyle/rc/close-hover.png b/themes/qdarkstyle/rc/close-hover.png new file mode 100644 index 0000000..fdbaf9b Binary files /dev/null and b/themes/qdarkstyle/rc/close-hover.png differ diff --git a/themes/qdarkstyle/rc/close-pressed.png b/themes/qdarkstyle/rc/close-pressed.png new file mode 100644 index 0000000..9b243bf Binary files /dev/null and b/themes/qdarkstyle/rc/close-pressed.png differ diff --git a/themes/qdarkstyle/rc/close.png b/themes/qdarkstyle/rc/close.png new file mode 100644 index 0000000..89407de Binary files /dev/null and b/themes/qdarkstyle/rc/close.png differ diff --git a/themes/qdarkstyle/rc/down_arrow.png b/themes/qdarkstyle/rc/down_arrow.png new file mode 100644 index 0000000..e271f7f Binary files /dev/null and b/themes/qdarkstyle/rc/down_arrow.png differ diff --git a/themes/qdarkstyle/rc/down_arrow_disabled.png b/themes/qdarkstyle/rc/down_arrow_disabled.png new file mode 100644 index 0000000..5805d98 Binary files /dev/null and b/themes/qdarkstyle/rc/down_arrow_disabled.png differ diff --git a/themes/qdarkstyle/rc/left_arrow.png b/themes/qdarkstyle/rc/left_arrow.png new file mode 100644 index 0000000..f808d2d Binary files /dev/null and b/themes/qdarkstyle/rc/left_arrow.png differ diff --git a/themes/qdarkstyle/rc/left_arrow_disabled.png b/themes/qdarkstyle/rc/left_arrow_disabled.png new file mode 100644 index 0000000..f5b9af8 Binary files /dev/null and b/themes/qdarkstyle/rc/left_arrow_disabled.png differ diff --git a/themes/qdarkstyle/rc/radio_checked.png b/themes/qdarkstyle/rc/radio_checked.png new file mode 100644 index 0000000..368acce Binary files /dev/null and b/themes/qdarkstyle/rc/radio_checked.png differ diff --git a/themes/qdarkstyle/rc/radio_checked@2x.png b/themes/qdarkstyle/rc/radio_checked@2x.png new file mode 100644 index 0000000..b5f5eed Binary files /dev/null and b/themes/qdarkstyle/rc/radio_checked@2x.png differ diff --git a/themes/qdarkstyle/rc/radio_checked_disabled.png b/themes/qdarkstyle/rc/radio_checked_disabled.png new file mode 100644 index 0000000..73ff735 Binary files /dev/null and b/themes/qdarkstyle/rc/radio_checked_disabled.png differ diff --git a/themes/qdarkstyle/rc/radio_checked_disabled@2x.png b/themes/qdarkstyle/rc/radio_checked_disabled@2x.png new file mode 100644 index 0000000..827e592 Binary files /dev/null and b/themes/qdarkstyle/rc/radio_checked_disabled@2x.png differ diff --git a/themes/qdarkstyle/rc/radio_checked_focus.png b/themes/qdarkstyle/rc/radio_checked_focus.png new file mode 100644 index 0000000..ad6d2cf Binary files /dev/null and b/themes/qdarkstyle/rc/radio_checked_focus.png differ diff --git a/themes/qdarkstyle/rc/radio_checked_focus@2x.png b/themes/qdarkstyle/rc/radio_checked_focus@2x.png new file mode 100644 index 0000000..7e59305 Binary files /dev/null and b/themes/qdarkstyle/rc/radio_checked_focus@2x.png differ diff --git a/themes/qdarkstyle/rc/radio_unchecked.png b/themes/qdarkstyle/rc/radio_unchecked.png new file mode 100644 index 0000000..82f2abb Binary files /dev/null and b/themes/qdarkstyle/rc/radio_unchecked.png differ diff --git a/themes/qdarkstyle/rc/radio_unchecked@2x.png b/themes/qdarkstyle/rc/radio_unchecked@2x.png new file mode 100644 index 0000000..793719b Binary files /dev/null and b/themes/qdarkstyle/rc/radio_unchecked@2x.png differ diff --git a/themes/qdarkstyle/rc/radio_unchecked_disabled.png b/themes/qdarkstyle/rc/radio_unchecked_disabled.png new file mode 100644 index 0000000..5c54ee9 Binary files /dev/null and b/themes/qdarkstyle/rc/radio_unchecked_disabled.png differ diff --git a/themes/qdarkstyle/rc/radio_unchecked_disabled@2x.png b/themes/qdarkstyle/rc/radio_unchecked_disabled@2x.png new file mode 100644 index 0000000..d50153d Binary files /dev/null and b/themes/qdarkstyle/rc/radio_unchecked_disabled@2x.png differ diff --git a/themes/qdarkstyle/rc/radio_unchecked_focus.png b/themes/qdarkstyle/rc/radio_unchecked_focus.png new file mode 100644 index 0000000..f42d85c Binary files /dev/null and b/themes/qdarkstyle/rc/radio_unchecked_focus.png differ diff --git a/themes/qdarkstyle/rc/radio_unchecked_focus@2x.png b/themes/qdarkstyle/rc/radio_unchecked_focus@2x.png new file mode 100644 index 0000000..0927b49 Binary files /dev/null and b/themes/qdarkstyle/rc/radio_unchecked_focus@2x.png differ diff --git a/themes/qdarkstyle/rc/right_arrow.png b/themes/qdarkstyle/rc/right_arrow.png new file mode 100644 index 0000000..9b0a4e6 Binary files /dev/null and b/themes/qdarkstyle/rc/right_arrow.png differ diff --git a/themes/qdarkstyle/rc/right_arrow_disabled.png b/themes/qdarkstyle/rc/right_arrow_disabled.png new file mode 100644 index 0000000..5c0bee4 Binary files /dev/null and b/themes/qdarkstyle/rc/right_arrow_disabled.png differ diff --git a/themes/qdarkstyle/rc/sizegrip.png b/themes/qdarkstyle/rc/sizegrip.png new file mode 100644 index 0000000..350583a Binary files /dev/null and b/themes/qdarkstyle/rc/sizegrip.png differ diff --git a/themes/qdarkstyle/rc/stylesheet-branch-end.png b/themes/qdarkstyle/rc/stylesheet-branch-end.png new file mode 100644 index 0000000..cb5d3b5 Binary files /dev/null and b/themes/qdarkstyle/rc/stylesheet-branch-end.png differ diff --git a/themes/qdarkstyle/rc/stylesheet-branch-more.png b/themes/qdarkstyle/rc/stylesheet-branch-more.png new file mode 100644 index 0000000..6271140 Binary files /dev/null and b/themes/qdarkstyle/rc/stylesheet-branch-more.png differ diff --git a/themes/qdarkstyle/rc/stylesheet-vline.png b/themes/qdarkstyle/rc/stylesheet-vline.png new file mode 100644 index 0000000..87536cc Binary files /dev/null and b/themes/qdarkstyle/rc/stylesheet-vline.png differ diff --git a/themes/qdarkstyle/rc/transparent.png b/themes/qdarkstyle/rc/transparent.png new file mode 100644 index 0000000..483df25 Binary files /dev/null and b/themes/qdarkstyle/rc/transparent.png differ diff --git a/themes/qdarkstyle/rc/undock.png b/themes/qdarkstyle/rc/undock.png new file mode 100644 index 0000000..58cde37 Binary files /dev/null and b/themes/qdarkstyle/rc/undock.png differ diff --git a/themes/qdarkstyle/rc/up_arrow.png b/themes/qdarkstyle/rc/up_arrow.png new file mode 100644 index 0000000..abcc724 Binary files /dev/null and b/themes/qdarkstyle/rc/up_arrow.png differ diff --git a/themes/qdarkstyle/rc/up_arrow_disabled.png b/themes/qdarkstyle/rc/up_arrow_disabled.png new file mode 100644 index 0000000..b9c8e3b Binary files /dev/null and b/themes/qdarkstyle/rc/up_arrow_disabled.png differ diff --git a/themes/qdarkstyle/style.qrc b/themes/qdarkstyle/style.qrc new file mode 100644 index 0000000..ac14bc5 --- /dev/null +++ b/themes/qdarkstyle/style.qrc @@ -0,0 +1,46 @@ + + + rc/up_arrow_disabled.png + rc/Hmovetoolbar.png + rc/stylesheet-branch-end.png + rc/branch_closed-on.png + rc/stylesheet-vline.png + rc/branch_closed.png + rc/branch_open-on.png + rc/transparent.png + rc/right_arrow_disabled.png + rc/sizegrip.png + rc/close.png + rc/close-hover.png + rc/close-pressed.png + rc/down_arrow.png + rc/Vmovetoolbar.png + rc/left_arrow.png + rc/stylesheet-branch-more.png + rc/up_arrow.png + rc/right_arrow.png + rc/left_arrow_disabled.png + rc/Hsepartoolbar.png + rc/branch_open.png + rc/Vsepartoolbar.png + rc/down_arrow_disabled.png + rc/undock.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_focus.png + rc/checkbox_checked.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_focus.png + rc/checkbox_unchecked.png + rc/radio_checked_disabled.png + rc/radio_checked_focus.png + rc/radio_checked.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_focus.png + rc/radio_unchecked.png + + + style.qss + + diff --git a/themes/qdarkstyle/style.qss b/themes/qdarkstyle/style.qss new file mode 100644 index 0000000..8007fd6 --- /dev/null +++ b/themes/qdarkstyle/style.qss @@ -0,0 +1,1939 @@ +/* QDarkStyleSheet -------------------------------------------------------- + +This is the main style sheet, the palette has nine main colors. +It is based on three selecting colors, three greyish (background) colors +plus three whitish (foreground) colors. Each set of widgets of the same +type have a header like this: + + ------------------ + GroupName -------- + ------------------ + +And each widget is separated with a header like this: + + QWidgetName ------ + +This makes more easy to find and change some css field. The basic +configuration is described bellow. + + SELECTION ------------ + + sel_light #179AE0 #148CD2 (selection/hover/active) + sel_normal #3375A3 #1464A0 (selected) + sel_dark #18465D #14506E (selected disabled) + + FOREGROUND ----------- + + for_light #EFF0F1 #F0F0F0 (texts/labels) + for_normal #AAAAAA (not used yet) + for_dark #505F69 #787878 (disabled texts) + + BACKGROUND ----------- + + bac_light #4D545B #505F69 (unpressed) + bac_normal #31363B #32414B (border, disabled, pressed, checked, toolbars, menus) + bac_dark #232629 #19232D (background) + +If a stranger configuration is required because of a bugfix or anything +else, keep the comment on that line to nobodys changed it, including the +issue number. +--------------------------------------------------------------------------- */ + + + +/* QWidget ---------------------------------------------------------------- */ + +QWidget { + background-color: #19232D; + border: 0px solid #32414B; + padding: 0px; + color: #F0F0F0; + selection-background-color: #1464A0; + selection-color: #F0F0F0; +} + +QWidget:disabled { + background-color: #19232D; + color: #787878; + selection-background-color: #14506E; + selection-color: #787878; +} + +QWidget:item:selected { + background-color: #1464A0; +} + +QWidget:item:hover { + background-color: #148CD2; + color: #32414B; +} + +/* QMainWindow ------------------------------------------------------------ */ +/* This adjusts the splitter in the dock widget, not qsplitter */ + + +QMainWindow::separator { + background-color: #32414B; + border: 0 solid #19232D; + spacing: 0; + padding: 2px; +} + +QMainWindow::separator:hover { + background-color: #505F69; + border: 0px solid #148CD2; +} + +QMainWindow::separator:horizontal { + width: 5px; + margin-top: 2px; + margin-bottom: 2px; + image: url(:/qss_icons/rc/Vsepartoolbar.png); +} + +QMainWindow::separator:vertical { + height: 5px; + margin-left: 2px; + margin-right: 2px; + image: url(:/qss_icons/rc/Hsepartoolbar.png); +} + +/* QToolTip --------------------------------------------------------------- */ + +QToolTip { + background-color: #148CD2; + border: 1px solid #19232D; + color: #19232D; + padding: 0; /*remove padding, for fix combo box tooltip*/ + opacity: 230; /*reducing transparency to read better*/ +} + +/* QStatusBar ------------------------------------------------------------- */ + +QStatusBar { + border: 1px solid #32414B; + background: #32414B; /*fixes spyder #9120,#9121*/ +} + +QStatusBar QToolTip { + background-color: #148CD2; + border: 1px solid #19232D; + color: #19232D; + padding: 0; /*remove padding, for fix combo box tooltip*/ + opacity: 230; /*reducing transparency to read better*/ +} + +QStatusBar QLabel { + background-color: transparent; /*fixes spyder #9120,#9121*/ +} + +/* QCheckBox -------------------------------------------------------------- */ + +QCheckBox { + background-color: #19232D; + color: #F0F0F0; + spacing: 4px; + outline: none; + padding-top: 4px; + padding-bottom: 4px; +} + +QCheckBox:focus { + border: none; +} + +QCheckBox QWidget:disabled { + background-color: #19232D; + color: #787878; +} + +QCheckBox::indicator { + margin-left: 4px; + width: 16px; + height: 16px; +} + +QCheckBox::indicator:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:focus, +QCheckBox::indicator:unchecked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QCheckBox::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +QCheckBox::indicator:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QCheckBox::indicator:checked:hover, +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QCheckBox::indicator:checked:disabled{ + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + +QCheckBox::indicator:indeterminate { + image: url(:/qss_icons/rc/checkbox_indeterminate.png); +} + +QCheckBox::indicator:indeterminate:disabled { + image: url(:/qss_icons/rc/checkbox_indeterminate_disabled.png); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:hover, +QCheckBox::indicator:indeterminate:pressed { + image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); +} + +/* QGroupBox -------------------------------------------------------------- */ + +QGroupBox { + font-weight: bold; + border: 1px solid #32414B; + border-radius: 4px; + padding: 4px; + margin-top: 16px; +} + + + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left: 3px; + padding-left: 3px; + padding-right: 5px; + padding-top: 8px; + padding-bottom: 16px; +} + +QGroupBox::indicator { + margin-left: 4px; + width: 16px; + height: 16px; +} + +QGroupBox::indicator { + margin-left: 2px; +} + +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QGroupBox::indicator:checked:hover, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QGroupBox::indicator:checked:disabled { + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + +QGroupBox::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +/* QRadioButton ----------------------------------------------------------- */ + +QRadioButton { + background-color: #19232D; + color: #F0F0F0; + spacing: 0; + padding: 0; + border: none; + outline: none; +} + +QRadioButton:focus { + border: none; +} + +QRadioButton:disabled { + background-color: #19232D; + color: #787878; + border: none; + outline: none; +} + +QRadioButton QWidget { + background-color: #19232D; + color: #F0F0F0; + spacing: 0px; + padding: 0px; + outline: none; + border: none; +} + +QRadioButton::indicator { + border: none; + outline: none; + margin-bottom: 2px; + width: 25px; + height: 25px; +} + +QRadioButton::indicator:unchecked { + image: url(:/qss_icons/rc/radio_unchecked.png); +} + +QRadioButton::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:focus, +QRadioButton::indicator:unchecked:pressed { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_unchecked_focus.png); +} + +QRadioButton::indicator:checked { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_checked.png); +} + +QRadioButton::indicator:checked:hover, +QRadioButton::indicator:checked:focus, +QRadioButton::indicator:checked:pressed { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_checked_focus.png); +} + +QRadioButton::indicator:checked:disabled { + outline: none; + image: url(:/qss_icons/rc/radio_checked_disabled.png); +} + +QRadioButton::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/radio_unchecked_disabled.png); +} + +/* QMenuBar --------------------------------------------------------------- */ + +QMenuBar { + background-color: #32414B; + padding: 2px; + border: 1px solid #19232D; + color: #F0F0F0; +} + +QMenuBar:focus { + border: 1px solid #148CD2; +} + +QMenuBar::item { + background: transparent; + padding: 4px; +} + +QMenuBar::item:selected { + padding: 4px; + background: transparent; + border: 0px solid #32414B; +} + +QMenuBar::item:pressed { + padding: 4px; + border: 0px solid #32414B; + background-color: #148CD2; + color: #F0F0F0; + margin-bottom: 0px; + padding-bottom: 0px; +} + +/* QMenu ------------------------------------------------------------------ */ + +QMenu { + border: 0px solid #32414B; + color: #F0F0F0; + margin: 0px; +} + +QMenu::separator { + height: 2px; + background-color: #505F69; + color: #F0F0F0; + padding-left: 4px; + margin-left: 2px; + margin-right: 2px; +} + +QMenu::icon { + margin: 0px; + padding-left:4px; +} + +QMenu::item { + padding: 4px 24px 4px 24px; + border: 1px transparent #32414B; /* reserve space for selection border */ +} + +QMenu::item:selected { + color: #F0F0F0; +} + + + +QMenu::indicator { + width: 12px; + height: 12px; + padding-left:6px; +} + +/* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */ + +QMenu::indicator:non-exclusive:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QMenu::indicator:non-exclusive:unchecked:selected { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +QMenu::indicator:non-exclusive:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QMenu::indicator:non-exclusive:checked:selected { + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ + +QMenu::indicator:exclusive:unchecked { + image: url(:/qss_icons/rc/radio_unchecked.png); +} + +QMenu::indicator:exclusive:unchecked:selected { + image: url(:/qss_icons/rc/radio_unchecked_disabled.png); +} + +QMenu::indicator:exclusive:checked { + image: url(:/qss_icons/rc/radio_checked.png); +} + +QMenu::indicator:exclusive:checked:selected { + image: url(:/qss_icons/rc/radio_checked_disabled.png); +} + +QMenu::right-arrow { + margin: 5px; + image: url(:/qss_icons/rc/right_arrow.png) +} + +/* QAbstractItemView ------------------------------------------------------ */ + +QAbstractItemView { + alternate-background-color: #19232D; + color: #F0F0F0; + border: 1px solid #32414B; + border-radius: 4px; +} + +QAbstractItemView QLineEdit { + padding: 2px; +} + +/* QAbstractScrollArea ---------------------------------------------------- */ + +QAbstractScrollArea { + background-color: #19232D; + border: 1px solid #32414B; + border-radius: 4px; + padding: 4px; + color: #F0F0F0; +} + +QAbstractScrollArea:disabled { + color: #787878; +} + +/* QScrollArea ------------------------------------------------------------ */ + +QScrollArea QWidget QWidget:disabled { + background-color: #19232D; +} + +/* QScrollBar ------------------------------------------------------------- */ + +QScrollBar:horizontal { + height: 16px; + margin: 2px 16px 2px 16px; + border: 1px solid #32414B; + border-radius: 4px; + background-color: #19232D; +} + +QScrollBar::handle:horizontal { + background-color: #787878; + border: 1px solid #32414B; + border-radius: 4px; + min-width: 8px; + +} + +QScrollBar::handle:horizontal:hover { + background-color: #148CD2; + border: 1px solid #148CD2; + border-radius: 4px; + min-width: 8px; +} + +QScrollBar::add-line:horizontal { + margin: 0px 0px 0px 0px; + border-image: url(:/qss_icons/rc/right_arrow_disabled.png); + width: 10px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + margin: 0px 3px 0px 3px; + border-image: url(:/qss_icons/rc/left_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(:/qss_icons/rc/right_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(:/qss_icons/rc/left_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background: none; +} + +QScrollBar:vertical { + background-color: #19232D; + width: 16px; + margin: 16px 2px 16px 2px; + border: 1px solid #32414B; + border-radius: 4px; +} + +QScrollBar::handle:vertical { + background-color: #787878; + border: 1px solid #32414B; + min-height: 8px; + border-radius: 4px; +} + +QScrollBar::handle:vertical:hover { + background-color: #148CD2; + border: 1px solid #148CD2; + border-radius: 4px; + min-height: 8px; + +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(:/qss_icons/rc/up_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(:/qss_icons/rc/down_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(:/qss_icons/rc/up_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(:/qss_icons/rc/down_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background: none; +} + +/* QTextEdit--------------------------------------------------------------- */ + +QTextEdit { + background-color: #19232D; + color: #F0F0F0; + border: 1px solid #32414B; +} + +QTextEdit:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QTextEdit:selected { + background: #1464A0; + color: #32414B; +} + +/* QPlainTextEdit --------------------------------------------------------- */ + +QPlainTextEdit { + background-color: #19232D; + color: #F0F0F0; + border-radius: 4px; + border: 1px solid #32414B; +} + +QPlainTextEdit:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QPlainTextEdit:selected { + background: #1464A0; + color: #32414B; +} + +/* QSizeGrip --------------------------------------------------------------- */ + +QSizeGrip { + image: url(:/qss_icons/rc/sizegrip.png); + width: 12px; + height: 12px; +} + +/* QStackedWidget --------------------------------------------------------- */ + +QStackedWidget { + padding: 4px; + border: 1px solid #32414B; + border: 1px solid #19232D; +} + +/* QToolBar --------------------------------------------------------------- */ + +QToolBar { + background-color: #32414B; + border-bottom: 1px solid #19232D; + padding: 2px; + font-weight: bold; +} + +QToolBar QToolButton{ + background-color: #32414B; +} + +QToolBar::handle:horizontal { + width: 6px; + image: url(:/qss_icons/rc/Hmovetoolbar.png); +} + +QToolBar::handle:vertical { + height: 6px; + image: url(:/qss_icons/rc/Vmovetoolbar.png); +} + +QToolBar::separator:horizontal { + width: 3px; + image: url(:/qss_icons/rc/Hsepartoolbar.png); +} + +QToolBar::separator:vertical { + height: 3px; + image: url(:/qss_icons/rc/Vsepartoolbar.png); +} + +QToolButton#qt_toolbar_ext_button { + background: #32414B; + border: 0px; + color: #F0F0F0; + image: url(:/qss_icons/rc/right_arrow.png); +} + +/* QAbstractSpinBox ------------------------------------------------------- */ + +QAbstractSpinBox { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + padding-top: 2px; /* This fix 103, 111*/ + padding-bottom: 2px; /* This fix 103, 111*/ + padding-left: 4px; + padding-right: 4px; + border-radius: 4px; + /* min-width: 5px; removed to fix 109 */ +} + +QAbstractSpinBox:up-button { + background-color: transparent #19232D; + subcontrol-origin: border; + subcontrol-position: top right; + border-left: 1px solid #32414B; + margin: 1px; +} + +QAbstractSpinBox::up-arrow, +QAbstractSpinBox::up-arrow:disabled, +QAbstractSpinBox::up-arrow:off { + image: url(:/qss_icons/rc/up_arrow_disabled.png); + width: 9px; + height: 9px; +} + +QAbstractSpinBox::up-arrow:hover { + image: url(:/qss_icons/rc/up_arrow.png); +} + +QAbstractSpinBox:down-button { + background-color: transparent #19232D; + subcontrol-origin: border; + subcontrol-position: bottom right; + border-left: 1px solid #32414B; + margin: 1px; +} + +QAbstractSpinBox::down-arrow, +QAbstractSpinBox::down-arrow:disabled, +QAbstractSpinBox::down-arrow:off { + image: url(:/qss_icons/rc/down_arrow_disabled.png); + width: 9px; + height: 9px; +} + +QAbstractSpinBox::down-arrow:hover { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QAbstractSpinBox:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QAbstractSpinBox:selected { + background: #1464A0; + color: #32414B; +} + +/* ------------------------------------------------------------------------ */ +/* DISPLAYS --------------------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ + +/* QLabel ----------------------------------------------------------------- */ + +QLabel { + background-color: #19232D; + border: 0px solid #32414B; + padding: 2px; + margin: 0px; + color: #F0F0F0 +} + +QLabel::disabled { + background-color: #19232D; + border: 0px solid #32414B; + color: #787878; +} + +/* QTextBrowser ----------------------------------------------------------- */ + +QTextBrowser { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; +} + +QTextBrowser:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; +} + +QTextBrowser:hover, +QTextBrowser:!hover, +QTextBrowser::selected, +QTextBrowser::pressed { + border: 1px solid #32414B; +} + +/* QGraphicsView --------------------------------------------------------- */ + +QGraphicsView { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; +} + +QGraphicsView:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; +} + +QGraphicsView:hover, +QGraphicsView:!hover, +QGraphicsView::selected, +QGraphicsView::pressed { + border: 1px solid #32414B; +} + +/* QCalendarWidget -------------------------------------------------------- */ + +QCalendarWidget { + border: 1px solid #32414B; + border-radius: 4px; +} + +QCalendarWidget:disabled { + background-color: #19232D; + color: #787878; +} + +/* QLCDNumber ------------------------------------------------------------- */ + +QLCDNumber { + background-color: #19232D; + color: #F0F0F0; +} + +QLCDNumber:disabled { + background-color: #19232D; + color: #787878; +} + +/* QProgressBar ----------------------------------------------------------- */ + +QProgressBar { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + text-align: center; +} + +QProgressBar:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #1464A0; + color: #19232D; + border-radius: 4px; +} + +QProgressBar::chunk:disabled { + background-color: #14506E; + color: #787878; + border-radius: 4px; +} + + +/* ------------------------------------------------------------------------ */ +/* BUTTONS ---------------------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ + +/* QPushButton ------------------------------------------------------------ */ + +QPushButton { + background-color: #505F69 ; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton:disabled { + background-color: #32414B; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + padding: 3px; +} + + +QPushButton:checked { + background-color: #32414B; + border: 1px solid #32414B; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton:checked:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton::menu-indicator { + subcontrol-origin: padding; + subcontrol-position: bottom right; + bottom: 4px; +} + +QPushButton:pressed { + background-color: #19232D; + border: 1px solid #19232D; +} + +QPushButton:hover, +QPushButton:checked:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QPushButton:pressed:hover{ + border: 1px solid #1464A0; +} + +QPushButton:selected, +QPushButton:checked:selected{ + background: #1464A0; + color: #32414B; +} + +/* QToolButton ------------------------------------------------------------ */ + +QToolButton { + background-color: transparent; + border: 1px solid #32414B; + border-radius: 4px; + margin: 0px; + padding: 2px; +} + +QToolButton:checked { + background-color: #19232D; + border: 1px solid #19232D; +} + +QToolButton:pressed { + background-color: #19232D; + border: 1px solid #19232D; + +} + +QToolButton:disabled { + border: 1px solid #32414B; +} + +QToolButton:hover, +QToolButton:checked:hover{ + border: 1px solid #148CD2; +} +QToolButton:pressed:hover{ + border: 1px solid #1464A0; +} + +/* the subcontrols below are used only in the MenuButtonPopup mode */ + +QToolButton[popupMode="1"] { + padding: 2px; + padding-right: 12px; /* only for MenuButtonPopup */ + border: 1px solid #32414B; /* make way for the popup button */ + border-radius: 4px; +} + +/* The subcontrol below is used only in the InstantPopup or DelayedPopup mode */ + +QToolButton[popupMode="2"] { + padding: 2px; + padding-right: 12px; /* only for InstantPopup */ + border: 1px solid #32414B; /* make way for the popup button */ +} + +QToolButton::menu-button { + padding: 2px; + border-radius: 4px; + border: 1px solid #32414B; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + /* 16px width + 4px for border = 20px allocated above */ + width: 16px; + outline: none; +} + +QToolButton::menu-button:hover, +QToolButton::menu-button:checked:hover { + border: 1px solid #148CD2; +} + +QToolButton::menu-indicator { + image: url(:/qss_icons/rc/down_arrow.png); + top: -8px; /* shift it a bit */ + left: -4px; /* shift it a bit */ +} + +QToolButton::menu-arrow { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QToolButton::menu-arrow:open { + border: 1px solid #32414B; +} + +/* QCommandLinkButton ----------------------------------------------------- */ + +QCommandLinkButton { + background-color: transparent; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + padding: 0px; + margin: 0px; +} + +QCommandLinkButton:disabled { + background-color: transparent; + color: #787878; +} + +/* ------------------------------------------------------------------------ */ +/* INPUTS - NO FIELDS ----------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ + +/* QCombobox -------------------------------------------------------------- */ +QComboBox { + border: 1px solid #32414B; + border-radius: 4px; + selection-background-color: #1464A0; + padding-left: 4px; + padding-right: 4px; + min-height: 1.5em; /* fix #103, #111 */ + /* padding-top: 2px; removed to fix #132 */ + /* padding-bottom: 2px; removed to fix #132 */ + /* min-width: 75px; removed to fix #109 */ +} + +QComboBox QAbstractItemView { + background-color: #19232d; + border-radius: 4px; + border: 1px solid #32414B; + selection-color: #148CD2; + selection-background-color: #32414B; +} + +QComboBox:disabled { + background-color: #19232D; + color: #787878; +} + +QComboBox:hover{ + border: 1px solid #148CD2; +} + +QComboBox:on { + selection-background-color: #19232D; +} + +/* Needed to remove indicator - fix #132 */ +QComboBox::indicator { + background-color:transparent; + selection-background-color:transparent; + color:transparent; + selection-color:transparent; +} + +/* Needed to remove indicator - fix #132 */ +QComboBox::item:alternate { + background: #19232D; +} + +QComboBox::item:checked { + font-weight: bold; +} + +QComboBox::item:selected { + border: 0px solid transparent; +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border-left-width: 0px; + border-left-color: #32414B; + border-left-style: solid; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::down-arrow { + image: url(:/qss_icons/rc/down_arrow_disabled.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus { + image: url(:/qss_icons/rc/down_arrow.png); +} + +/* QSlider ---------------------------------------------------------------- */ + +QSlider:disabled { + background: #19232D; +} + +QSlider:focus { + border: none; +} + +QSlider::groove:horizontal { + background: #32414B; + border: 1px solid #32414B; + height: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:horizontal { + background: #1464A0; + border: 1px solid #32414B; + height: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:horizontal:disabled { + background: #14506E; +} + +QSlider::handle:horizontal { + background: #787878; + border: 1px solid #32414B; + width: 8px; + height: 8px; + margin: -8px 0; + border-radius: 4px; +} + +QSlider::handle:horizontal:hover { + background: #148CD2; + border: 1px solid #148CD2; +} + +QSlider::groove:vertical { + background: #32414B; + border: 1px solid #32414B; + width: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:vertical { + background: #1464A0; + border: 1px solid #32414B; + width: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:vertical:disabled { + background: #14506E; +} + +QSlider::handle:vertical { + background: #787878; + border: 1px solid #32414B; + width: 8px; + height: 8px; + margin: 0 -8px; + border-radius: 4px; +} + +QSlider::handle:vertical:hover { + background: #148CD2; + border: 1px solid #148CD2; +} + +/* QLine ------------------------------------------------------------------ */ + +QLineEdit { + background-color: #19232D; + padding-top: 2px; /* This QLineEdit fix 103, 111 */ + padding-bottom: 2px; /* This QLineEdit fix 103, 111 */ + padding-left: 4px; + padding-right: 4px; + border-style: solid; + border: 1px solid #32414B; + border-radius: 4px; + color: #F0F0F0; +} + +QLineEdit:disabled { + background-color: #19232D; + color: #787878; +} + +QLineEdit:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QLineEdit:selected{ + background: #1464A0; + color: #32414B; +} + +/* QTabWiget -------------------------------------------------------------- */ + +QTabWidget { + padding: 2px; + selection-background-color: #32414B; +} + + +QTabWidget QWidget QWidget /* add wanted borders fix #141, #126, #123 */ +QTabWidget QFrame { + border: 1px solid #32414B; +} + +QTabWidget QLabel { + border: 0px solid #32414B; /* label derived from frame, remove border #141 */ +} + +QTabWidget::pane { + border: 1px solid #32414B; + border-radius: 4px; + padding: 0px; /* fixes double border inside pane wit pyqt5 */ + margin: 0px; +} + +QTabWidget::pane:selected { + background-color: #32414B; + border: 1px solid #1464A0; +} + +/* QTabBar ---------------------------------------------------------------- */ + +QTabBar { + qproperty-drawBase: 0; + border-radius: 4px; + margin: 0px; + padding: 2px; + border: 0; + + /* left: 5px; move to the right by 5px - removed for fix */ + } + +QTabBar::close-button { + border: 0; + margin: 2px; + padding: 0; + image: url(:/qss_icons/rc/close.png); +} + +QTabBar::close-button:hover { + image: url(:/qss_icons/rc/close-hover.png); +} + +QTabBar::close-button:pressed { + image: url(:/qss_icons/rc/close-pressed.png); +} + +/* QTabBar::tab - selected ----------------------------------------------- */ + +QTabBar::tab:top:selected:disabled { + border-bottom: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:bottom:selected:disabled { + border-top: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:left:selected:disabled { + border-left: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:right:selected:disabled { + border-right: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +/* QTabBar::tab - !selected and disabled ---------------------------------- */ + +QTabBar::tab:top:!selected:disabled { + border-bottom: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:bottom:!selected:disabled { + border-top: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:left:!selected:disabled { + border-right: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:right:!selected:disabled { + border-left: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +/* QTabBar::tab - selected ----------------------------------------------- */ + +QTabBar::tab:top:!selected { + border-bottom: 2px solid #19232D; + margin-top: 2px; +} + +QTabBar::tab:bottom:!selected { + border-top: 2px solid #19232D; + margin-bottom: 3px; +} + +QTabBar::tab:left:!selected { + border-left: 2px solid #19232D; + margin-right: 2px; +} + +QTabBar::tab:right:!selected { + border-right: 2px solid #19232D; + margin-left: 2px; +} + + +QTabBar::tab:top { + background-color: #32414B; + color: #F0F0F0; + margin-left: 2px; + padding-left: 4px; + padding-right: 4px; + padding-top: 2px; + padding-bottom: 2px; + min-width: 5px; + border-bottom: 3px solid #32414B; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +QTabBar::tab:top:selected { + background-color: #505F69; + color: #F0F0F0; + border-bottom: 3px solid #1464A0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +QTabBar::tab:top:!selected:hover { + border: 1px solid #148CD2; + border-bottom: 3px solid #148CD2; + padding: 0px; +} + +QTabBar::tab:bottom { + color: #F0F0F0; + border-top: 3px solid #32414B; + background-color: #32414B; + margin-left: 2px; + padding-left: 4px; + padding-right: 4px; + padding-top: 2px; + padding-bottom: 2px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + min-width: 5px; +} + +QTabBar::tab:bottom:selected { + color: #F0F0F0; + background-color: #505F69; + border-top: 3px solid #1464A0; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QTabBar::tab:bottom:!selected:hover { + border: 1px solid #148CD2; + border-top: 3px solid #148CD2; + padding: 0px; +} + +QTabBar::tab:left { + color: #F0F0F0; + background-color: #32414B; + margin-top: 2px; + padding-left: 2px; + padding-right: 2px; + padding-top: 4px; + padding-bottom: 4px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + min-height: 5px; +} + +QTabBar::tab:left:selected { + color: #F0F0F0; + background-color: #505F69; + border-left: 3px solid #1464A0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QTabBar::tab:left:!selected:hover { + border: 1px solid #148CD2; + border-left: 3px solid #148CD2; + padding: 0px; +} + +QTabBar::tab:right { + color: #F0F0F0; + background-color: #32414B; + margin-top: 2px; + padding-left: 2px; + padding-right: 2px; + padding-top: 4px; + padding-bottom: 4px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + min-height: 5px; +} + +QTabBar::tab:right:selected { + color: #F0F0F0; + background-color: #505F69; + border-right: 3px solid #1464A0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +QTabBar::tab:right:!selected:hover { + border: 1px solid #148CD2; + border-right: 3px solid #148CD2; + padding: 0px; +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(:/qss_icons/rc/right_arrow.png); +} + +QTabBar QToolButton::left-arrow:enabled { + image: url(:/qss_icons/rc/left_arrow.png); +} + +QTabBar QToolButton::right-arrow:disabled { + image: url(:/qss_icons/rc/right_arrow_disabled.png); +} + +QTabBar QToolButton::left-arrow:disabled { + image: url(:/qss_icons/rc/left_arrow_disabled.png); +} + +QTabBar QToolButton{ + background-color: #32414B; /* fixes #136 */ + width: 16px; + height: 16px; +} + +/* QDockWiget ------------------------------------------------------------- */ + +QDockWidget { + outline: 1px solid #32414B; + background-color: #19232D; + border: 1px solid #32414B; + border-radius: 4px; + titlebar-close-icon: url(:/qss_icons/rc/close.png); + titlebar-normal-icon: url(:/qss_icons/rc/undock.png); +} + +QDockWidget::title { + padding: 6px; /* better size for title bar */ + border: none; + background-color: #32414B; +} + +QDockWidget::close-button { + background-color: #32414B; + border-radius: 4px; + border: none; +} + +QDockWidget::close-button:hover { + border: 1px solid #32414B; +} + +QDockWidget::close-button:pressed { + border: 1px solid #32414B; +} + +QDockWidget::float-button { + background-color: #32414B; + border-radius: 4px; + border: none; +} + +QDockWidget::float-button:hover { + border: 1px solid #32414B; +} + +QDockWidget::float-button:pressed { + border: 1px solid #32414B; +} + + +/* QTreeView QTableView QListView ----------------------------------------- */ + +QTreeView:branch:selected, +QTreeView:branch:hover { + background: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings { + image: url(:/qss_icons/rc/branch_closed.png); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings { + image: url(:/qss_icons/rc/branch_open.png); +} + +QTreeView::branch:has-children:!has-siblings:closed:hover, +QTreeView::branch:closed:has-children:has-siblings:hover { + image: url(:/qss_icons/rc/branch_closed-on.png); +} + +QTreeView::branch:open:has-children:!has-siblings:hover, +QTreeView::branch:open:has-children:has-siblings:hover { + image: url(:/qss_icons/rc/branch_open-on.png); +} + +QListView::item:!selected:hover, +QTreeView::item:!selected:hover, +QTableView::item:!selected:hover, +QColumnView::item:!selected:hover { + outline: 0; + color: #148CD2; + background-color: #32414B; +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover, +QTableView::item:selected:hover, +QColumnView::item:selected:hover { + background: #1464A0; + color: #19232D; +} + +QTreeView::indicator:checked, +QListView::indicator:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QTreeView::indicator:unchecked, +QListView::indicator:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QTreeView::indicator:checked:hover, +QTreeView::indicator:checked:focus, +QTreeView::indicator:checked:pressed, +QListView::indicator:checked:hover, +QListView::indicator:checked:focus, +QListView::indicator:checked:pressed { + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QTreeView::indicator:unchecked:hover, +QTreeView::indicator:unchecked:focus, +QTreeView::indicator:unchecked:pressed, +QListView::indicator:unchecked:hover, +QListView::indicator:unchecked:focus, +QListView::indicator:unchecked:pressed { + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QTreeView::indicator:indeterminate:hover, +QTreeView::indicator:indeterminate:focus, +QTreeView::indicator:indeterminate:pressed, +QListView::indicator:indeterminate:hover, +QListView::indicator:indeterminate:focus, +QListView::indicator:indeterminate:pressed { + image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); +} + +QTreeView::indicator:indeterminate, +QListView::indicator:indeterminate { + image: url(:/qss_icons/rc/checkbox_indeterminate.png); +} + +QListView, +QTreeView, +QTableView, +QColumnView { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + gridline-color: #32414B; + border-radius: 4px; +} + +QListView:disabled, +QTreeView:disabled, +QTableView:disabled, +QColumnView:disabled { + background-color: #19232D; + color: #787878; +} + +QListView:selected, +QTreeView:selected, +QTableView:selected, +QColumnView:selected { + background: #1464A0; + color: #32414B; +} + +QListView:hover, +QTreeView::hover, +QTableView::hover, +QColumnView::hover { + background-color: #19232D; + border: 1px solid #148CD2; +} + +QListView::item:pressed, +QTreeView::item:pressed, +QTableView::item:pressed, +QColumnView::item:pressed { + background-color: #1464A0; +} + +QListView::item:selected:active, +QTreeView::item:selected:active, +QTableView::item:selected:active, +QColumnView::item:selected:active { + background-color: #1464A0; +} + +QTableCornerButton::section { + background-color: #19232D; + border: 1px transparent #32414B; + border-radius: 0px; +} + +/* QHeaderView ------------------------------------------------------------ */ + +QHeaderView { + background-color: #32414B; + border: 0px transparent #32414B; + padding: 0px; + margin: 0px; + border-radius: 0px; +} + +QHeaderView:disabled { + background-color: #32414B; + border: 1px transparent #32414B; + padding: 2px; +} + +QHeaderView::section { + background-color: #32414B; + color: #F0F0F0; + padding: 2px; + border-radius: 0px; + text-align: left; +} + +QHeaderView::section:checked { + color: #F0F0F0; + background-color: #1464A0; +} + +QHeaderView::section:checked:disabled { + color: #787878; + background-color: #14506E; +} + +QHeaderView::section::horizontal:disabled, +QHeaderView::section::vertical:disabled { + color: #787878; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one { + border-top: 1px solid #32414B; +} + +QHeaderView::section::vertical { + border-top: 1px solid #19232D; +} + +QHeaderView::section::horizontal::first, +QHeaderView::section::horizontal::only-one { + border-left: 1px solid #32414B; +} + +QHeaderView::section::horizontal { + border-left: 1px solid #19232D; +} + +/* Those settings (border/width/height/background-color) solve bug */ +/* transparent arrow background and size */ + +QHeaderView::down-arrow { + background-color: #32414B; + width: 16px; + height: 16px; + border-right: 1px solid #19232D; + image: url(:/qss_icons/rc/down_arrow.png); +} + +QHeaderView::up-arrow { + background-color: #32414B; + width: 16px; + height: 16px; + border-right: 1px solid #19232D; + image: url(:/qss_icons/rc/up_arrow.png); +} + +/* QToolBox -------------------------------------------------------------- */ + +QToolBox { + padding: 0px; + border: 1px solid #32414B; +} + +QToolBox::selected { + padding: 0px; + border: 2px solid #1464A0; +} + +QToolBox::tab { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +QToolBox::tab:disabled { + color: #787878; +} + +QToolBox::tab:selected { + background-color: #505F69; + border-bottom: 2px solid #1464A0; +} + +QToolBox::tab:!selected { + background-color: #32414B; + border-bottom: 2px solid #32414B; +} + +QToolBox::tab:selected:disabled { + background-color: #32414B; + border-bottom: 2px solid #14506E; +} + +QToolBox::tab:!selected:disabled { + background-color: #19232D; +} + +QToolBox::tab:hover { + border-color: #148CD2; + border-bottom: 2px solid #148CD2; +} + +QToolBox QScrollArea QWidget QWidget { + padding: 0px; + background-color: #19232D; +} + +/* QFrame ----------------------------------------------------------------- */ + +QFrame { + border-radius: 4px; + border: 1px solid #32414B; +} + +QFrame[frameShape="0"] { + border-radius: 4px; + border: 1px transparent #32414B; +} + +QFrame[height="3"], +QFrame[width="3"] { + background-color: #19232D; +} + +/* QSplitter -------------------------------------------------------------- */ + +QSplitter { + background-color: #32414B; + spacing: 0; + padding: 0; + margin: 0; +} + +QSplitter::separator { + background-color: #32414B; + border: 0 solid #19232D; + spacing: 0; + padding: 1px; + margin: 0; +} + +QSplitter::separator:hover { + background-color: #787878; +} + +QSplitter::separator:horizontal { + width: 5px; + image: url(:/qss_icons/rc/Vsepartoolbar.png); +} + +QSplitter::separator:vertical { + height: 5px; + image: url(:/qss_icons/rc/Hsepartoolbar.png); +} + + +/* QDateEdit-------------------------------------------------------------- */ + +QDateEdit { + selection-background-color: #1464A0; + border-style: solid; + border: 1px solid #32414B; + border-radius: 4px; + padding-top: 2px; /* This fix #103, #111*/ + padding-bottom: 2px; /* This fix #103, #111*/ + padding-left: 4px; + padding-right: 4px; + min-width: 10px; +} + +QDateEdit:on { + selection-background-color: #1464A0; +} + +QDateEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QDateEdit::down-arrow { + image: url(:/qss_icons/rc/down_arrow_disabled.png); +} + +QDateEdit::down-arrow:on, +QDateEdit::down-arrow:hover, +QDateEdit::down-arrow:focus { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QDateEdit QAbstractItemView { + background-color: #19232D; + border-radius: 4px; + border: 1px solid #32414B; + selection-background-color: #1464A0; +} + +QAbstractView:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QAbstractView:selected { + background: #1464A0; + color: #32414B; +} + + +PlotWidget { + padding: 0px; /* to fix cut labels in plots #134 */ +} diff --git a/translations/README.md b/translations/README.md new file mode 100644 index 0000000..67a9141 --- /dev/null +++ b/translations/README.md @@ -0,0 +1,11 @@ +## So, I hear ya want to translate +here is how to do it: +Firstly, run `lupdate ../KShare.pro -no-obsolete -ts .ts` + +If you see something that looks like it was just changed a bit, take the old translation and update it, as `-no-obsolete` removed it. +Then open and edit the file in Qt Linguist. +When you're done editing the file, save it and run `lrelease ` and add an entry into `../src/translations.qrc` for the newly produced `.qm` file (if there isn't one). + +That's all, thank you! + +**Dont't forget to install** `qttools5-dev-tools` \ No newline at end of file diff --git a/translations/bg_BG.qm b/translations/bg_BG.qm new file mode 100644 index 0000000..adf773f Binary files /dev/null and b/translations/bg_BG.qm differ diff --git a/translations/bg_BG.ts b/translations/bg_BG.ts new file mode 100644 index 0000000..2f9b492 --- /dev/null +++ b/translations/bg_BG.ts @@ -0,0 +1,1134 @@ + + + + + AboutBox + + + About KShare + За KShare + + + + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - The free and open source and cross platform screen sharing software</span></p><p>Version %0<br/>Links: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Source code</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Website</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - свободния и отворен софтуер за споделяне на екран</span></p><p>Версия %0<br/>Линкове: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Програмен код</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Тракер на проблемите</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Уебсайт</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + + + + BrushPenSelection + + + Pen settings + Настройки на химикала + + + + Choose pen color + Изберете цвят на химикала + + + + Cosmetic + Козметично + + + + Width + Широчина + + + + Pen alpha + Алфа на химикала + + + + Blur settings + Настройки на замъгляването + + + + Performance Hint + Намек за производителност + + + + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Blur Hints + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Намеци за замъгляването + + + + Blur Radius + Радиус на замъгляването + + + + Animated Hint + Намек за анимация + + + + Quality Hint + Намек за качество + + + + Brush settings + Настройки на четката + + + + Brush alpha + Алфа на четката + + + + No Brush + Без четка + + + + Solid + Солидно + + + + Dense 1 + Плътно 1 + + + + Dense 2 + Плътно 2 + + + + Dense 3 + Плътно 3 + + + + Dense 4 + Плътно 4 + + + + Dense 5 + Плътно 5 + + + + Dense 6 + Плътно 6 + + + + Dense 7 + Плътно 7 + + + + Horizontal + Хоризонтално + + + + Vertical + Вертикално + + + + Cross pattern + Шарка с кръстове + + + + Backwards diagonal + Обратно диагонално + + + + Forwards diagonal + Право диагонално + + + + Diagonal cross + Диагонални кръстове + + + + Choose brush color + Изберете цвят на четката + + + + Path item has brush + Елемента по пътя има четка + + + + Arrow settings + Настройки на стрелката + + + + Arrow width and height + Широчина и височина на стрелката + + + + Other editor settings + + + + + Enable grid + + + + + Highligh color + + + + + Crop editor settings + Настройки на редактора за кастрене + + + + Pen Color + Цвят на химикала + + + + Brush Color + Цвят на четката + + + + Highlight color + + + + + ClipboardUploader + + + Copied to clipboard! + Копирано в клипборда! + + + + ColorPickerScene + + + KShare Color Picker + KShare избирач на цветове + + + + + Copied hex code to clipboard. + + + + + CropEditor + + + KShare Crop Editor + KShare редактор за кастрене + + + + CropScene + + + Free draw + Свободно рисуване + + + + Blur + Замъгляване + + + + Straight line + Права линия + + + + Text + Текст + + + + Rectangle + Правоъгълник + + + + Ellipse + Елипса + + + + Arrow + Стрелка + + + + Eraser + Гума + + + + Clear all drawing + Изтрий всички рисунки + + + + + + None + + + + + Settings + Настройки + + + + Confirm + Потвърди + + + + Cancel + Отказ + + + + KShare Crop Editor + KShare редактор за кастрене + + + + Press F1 to toggle this hint + Hold Shift to slow the cursor down + Ctrl+Drag a thing to move it around + Alt+Click a drawing to remove it + Press Return/Enter to finish + Press ESC to cancel + Use the menu bar to draw + NOTE: You must select 'Crop' before closing the editor + If you do not it will not close. + Натиснете F1 за да покажете или да скриете този намек + Задръжте Shift за да забавите курсора + Ctrl+Провлачете нещо за да го изместите + Alt+Кликнете върху рисунка за да я премахнете + Натиснете Return/Enter за да приключите + Натиснете ESC за да откажете + Използвайте лентата с меню за да рисувате + ЗАБЕЛЕЖКА: Трябва да изберете 'Изкастряй' преди да затворите редактора + Ако не направите това, той няма да се затвори + + + + CustomUploader + + + Root not an object + Коренът не е обект + + + + name is not a string + името не е низ + + + + desc not a string + описанието не е низ + + + + method not a string + методът не е низ + + + + method invalid + методът не е валиден + + + + target missing + челта липсва + + + + target not URL + челта не е URL + + + + format invalid + форматът е невалиден + + + + format provided but not string + форматът е предоставен, но не е низ + + + + body not set + тялото не е зададено + + + + all elements of body must be objects + всички елементи от тялото трябва да бъдат обекти + + + + all parts must have a body which is object or string! + всички части трябва да имат тяло, което е или обект, или низ! + + + + all parts of body must be string or object + всички части от тялото трябва да са или низ, или обект + + + + all __headers must be strings + всички __хедъри трябва да са низове + + + + body not array (needed for multipart) + тялото не е масив (нужно за multipart) + + + + body not object + тялото не е обект + + + + body not string (reason: format: PLAIN) + `format: PLAIN` should stay the same + тялото не е низ (причина: format: PLAIN) + + + + headers must be object + хедърите трябва да са обекти + + + + return invalid + връщането е невалидно + + + + fileLimit not decimal + fileLimit stays English + fileLimit не е десетичен + + + + base64 must be boolean + base64 трябва да е булев + + + + base64 required with json + base64 е задължителен с json + + + + + + + + + KShare Custom Uploader + KShare персонализиран ъплоудър + + + + Copied upload link to clipboard! + Линкът за качване е копиран в клипборда! + + + + Upload done, but result empty! + Качването завърши, но резултатът е празен! + + + + Upload done, but result is not JSON Object! Result in clipboard. + Качването завърши, но резултатът не е JSON обект! Резултатът е в клипборда. + + + + + Copied upload result to clipboard! + Резултатът от копирането е копиран в клипборда! + + + + File limit exceeded! + Ограничението на файловете бе превишено! + + + + EncoderSettingsDialog + + + Image Encoder Settings + Настройки на енкодера за изображения + + + + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Quality</span></a></p></body></html> + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Качество</span></a></p></body></html> + + + + Format default + Формат по подразбиране + + + + Video Encoder Settings + Настройки на енкодера за видео + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Preset</span></a></p></body></html> + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Предварително зададени настройки</span></a></p></body></html> + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">CRF</span></a></p></body></html> + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">CRF</span></a></p></body></html> + + + + Lossless (not recommended) + Без загуба (не се препоръчва) + + + + TODO: Find whatever configuration GIF can have in ffmpeg's libav + TODO: Find whatever configuration GIF can have in ffmpeg's libav + + + + Bitrate + Битрейт + + + + The number of pictures in a group of pictures, or 0 for intra only + Броя на снимките в група от снимки, или 0 само за вътрешни + + + + GOP size + Размер на GOP + + + + KShare Encoder Settings + KShare настройки на енкодера + + + + HistoryDialog + + + Request History + + + + + Type + + + + + URL + + + + + Status + + + + + Time + + + + + HotkeyInputDialog + + + + + Record + Запиши + + + + Stop recording + Спри записватено + + + + ImgplusUploader + + + imgplus API key + imgplus ППИ ключ + + + + Enter the imgpl.us API key (Found in Settings) + Въведете imgpl.us ППИ ключа (Намерен в Настройки) + + + + ImgurSettingsDialog + + + Imgur auth + Imgur автентикация + + + + OAuth2 + OAuth2 + + + + <!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:'Noto Sans'; font-size:10pt; 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;">Create a new application:</p></body></html> + <!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:'Noto Sans'; font-size:10pt; 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;">Създай ново приложение:</p></body></html> + + + + Open imgur + Отвори Imgur + + + + Insert Client ID and secret: + Въведете ID на клиента и тайна: + + + + Client ID + ID на клиента + + + + Client Secret + Тайна на клиента + + + + Get the pin + Вземи пина + + + + Insert the pin below: + Въведете пина долу: + + + + PIN + ПИН + + + + Authorize + Упълномощи + + + + Not working + Не работи + + + + It works! + Работи! + + + + ImgurUploader + + + + KShare imgur Uploader + KShare ъплоудър за Imgur + + + + Failed upload! Image too big + Качването не е успешно! Изображението е твърде голямо + + + + Uploaded to imgur! + Качено в Imgur! + + + + KShare imgur Uploader + KShare ъплоудър за Imgur + + + + Failed upload! imgur said: HTTP %1: %2 + Качването не бе успешно! Imgur каза: HTTP %1: %2 + + + + MainWindow + + + Settings + Настройки + + + + Log + Дневник + + + + Open request history + + + + + Fi&le + &Файл + + + + Scree&nshot + &Снимка на екрана + + + + &Utilities + &Инструменти + + + + &Recording + &Запис + + + + &Quit + &Излез + + + + &Fullscreen + &Цял екран + + + + &Area + &Район + + + + &Color Picker + &Избирач на цветове + + + + &Start + + + + + St&op + + + + + &Settings + + + + + &About + + + + + Active &window + + + + + &Abort + + + + + Recording format not set in settings. Aborting. + Форматът за записване не е зададен в настройките. Абортиране. + + + + Quit + + + + + Show/Hide + + + + + Take fullscreen shot + + + + + Take area shot + + + + + Screenshot active window + + + + + Show color picker + + + + + Record screen + + + + + Stop recording + Спри записватено + + + + Abort recording + + + + + QObject + + + + Could not bind the hotkey %1! Is the keybind already registered? + Свързването на клавиша %1 е неуспешно! Клавишът регистриран ли е вече? + + + + Could not make config directory + Съдаването на директорията config е неуспешно + + + + Invalid file: + Неправилен файл: + + + + Failed to upload! Copied the response to clipboard + Качването е неуспешно! Отговорът е копиран в клипбодра + + + + KShare imgplus Uploader + KShare ъплоудър за imgplus + + + + Uploaded to ImagePlus! + Качено в ImagePlus! + + + + RecordingFormats + + + Could not create temporary directory. Error: + Създаването на временна директория е неуспешно. Грешка: + + + + + Encoder error: + Грешка в енкодера: + + + + RecordingPreview + + + Time: 00:00 +Frame: 0 +Stop key: + Време: 00:00 +Кадър: 0 +Клавиш за спиране: + + + + Time: %1 +Frame: %2 +Stop key: %3 + Време: %1 +Кадър: %2 +Клавиш за спиране: %3 + + + + ScreenAreaSelector + + + Set the recording region by resizing this. +%1x%2 + Нагласете района на записване като промените размера на този прозорец. +%1x%2 + + + + KShare: Select Area (By resizing this window) + KShare: Изберете район (Като сменяте размера на този прозорец) + + + + SettingsDialog + + + Crop editor settings + Настройки на редактора за кастрене + + + + Quick mode (mouse release screenshots) + Бърз режим (снимка при пускане на мишката) + + + + Delay before taking a screenshot + Закъснение преди правене на снимка + + + + In seconds + В секунди + + + + A delay before taking a screenshot, in seconds + Закъснение преди правене на снимка, в секунди + + + + Hotkeys + Клавиши + + + + Still image format + Формат на неподвижни снимки + + + + Recording format + Формат на записи + + + + Capture cursor + Заснеми курсора + + + + %(date format)date and %ext are supported + %(date format)date и %ext сe поддържат + + + + File name scheme: + Схема за имената на файловете + + + + Pressing <X> hides to tray + Натискане на <X> скрива програмата в системниия tray + + + + Open settings directory + Отвори директорията на настройките + + + + Destination: + Дестинация: + + + + Pictures folder + Папка за снимки + + + + Screenshots folder (In your user folder) + Папка за снимки на екрана (Във вашата потребителска папка) + + + + File save location + Място за записване на файлове + + + + Advanced + Разширени + + + + Editor Position (tweak if the editor does not cover the entire screen) + Позиция на редактора (променете ако редакторът не покрива целия екран) + + + + Encoder settings + Настройки на енкодера + + + + FPS + + + + + Frames Per Second For Recording + + + + + Fullscreen image + Снимка на целия екран + + + + Area image + Снимка на район + + + + Active window + Активен прозорец + + + + Color picker + Избирач на цветове + + + + Stop Recording + Спри записването + + + + Start Recording + Стартирай записването + + + + Capture cursor (disabled: implementation missing) + Заснеми курсора (изключено: липсва имплементация) + + + + TextItem + + + Text to add + Текст за добавяне + + + + Input + Вход + + + + UploaderSingleton + + + Cannot determine location for pictures + Мястото за снимки не можа да се намери + + + + Cannot determine location of your home directory + Домашната ви директория не можа да се намери + + + + Invalid config [saveLocation not int or is not in range] + Неправилна конфигурация [saveLocation не е int или не е в диапазона] + + + + Ambigious uploader + Неясен ъплоудър + + + + Currently selected uploader is not set up properly! Falling back to imgur + Избраният ъплоудър не е нагласен правилно! Връщане към Imgur + + + + + + KShare - Failed to save picture + KShare - Неуспешно записване на снимка + + + diff --git a/translations/de_DE.qm b/translations/de_DE.qm new file mode 100644 index 0000000..dbaea76 Binary files /dev/null and b/translations/de_DE.qm differ diff --git a/translations/de_DE.ts b/translations/de_DE.ts new file mode 100644 index 0000000..671ccf6 --- /dev/null +++ b/translations/de_DE.ts @@ -0,0 +1,1314 @@ + + + + + AboutBox + + + About KShare + Über KShare + + + + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - The free and open source and cross platform screen sharing software</span></p><p>Version %0<br/>Links: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Source code</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Website</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - Die freie und opne-source Screen sharing software</span></p><p>Version %0<br/>Links: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Source code</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Website</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + + + + BrushPenSelection + + + Pen settings + Stift Einstellungen + + + + Choose pen color + Wähle die Stiftfarbe + + + + Cosmetic + Kosmetisch + + + + Width + Breite + + + + Pen alpha + Stift Alpha + + + + Blur settings + Verwischen Einstellungen + + + + Performance Hint + Performance + + + + Animated Hint + Optimierte Animationen + + + + Quality Hint + Hohe Qualität + + + + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Blur Hints + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Verwischen hints + + + + Blur Radius + Radius + + + + Brush settings + Pinsel Einstellungen + + + + Brush alpha + Pinsel Alpha + + + + No Brush + Kein Pinsel + + + + Solid + Überdeckend + + + + Dense 1 + Gitter Pixelabstand 1 + + + + Dense 2 + Gitter Pixelabstand 2 + + + + Dense 3 + Gitter Pixelabstand 3 + + + + Dense 4 + Gitter Pixelabstand 4 + + + + Dense 5 + Gitter Pixelabstand 5 + + + + Dense 6 + Gitter Pixelabstand 6 + + + + Dense 7 + Gitter Pixelabstand 7 + + + + Horizontal + Horizontal + + + + Vertical + Vertikal + + + + Cross pattern + Durchgezogenes Gitter + + + + Backwards diagonal + Diagonale Streifen OR->UL + + + + Forwards diagonal + Diagonale Streifen OL->UR + + + + Diagonal cross + Diagonales Gitter + + + + Choose brush color + Wähle die Pinsel (Füll) Farbe + + + + Path item has brush + Pfad Werkzeug hat eine Füllung + + + + Arrow settings + Pfeil Einstellungen + + + + Arrow width and height + Pfeil Breite und Höhe + + + Other editor settings + Andere Einstellungen + + + Enable grid + Gitter anzeigen + + + Highligh color + Farbe für Hervorgehobenes + + + + Crop editor settings + Zuschneideeditor Einstellungen + + + + Pen Color + Stift Farbe + + + + Brush Color + Pinsel (Füll) Farbe + + + Highlight color + Farbe für Hervorgehobenes + + + + ClipboardUploader + + + Copied to clipboard! + In die Zwischenablage kopiert! + + + + ColorPickerScene + + + KShare Color Picker + KShare Farbpipette + + + + + Copied hex code to clipboard. + Hex-Farbe in die Zwischenablage kopiert. + + + + CropEditor + + + KShare Crop Editor + KShare Zuschneideeditor + + + + CropScene + + + Free draw + Freies Zeichnen + + + + Blur + Blur + + + + Straight line + Gerade Linie + + + + Text + Text + + + + Rectangle + Rechteck + + + + Highlighter + + + + + Ellipse + Ellipse + + + + Arrow + Pfeil + + + + Eraser + Radiergummi + + + + Clear all drawing + Lösche alle Zeichnungen + + + + + None + + + + + Settings + Einstellungen + + + + Confirm + Fertigstellen + + + + Cancel + Abbrechen + + + + KShare Crop Editor + KShare Zuschneideeditor + + + + Press F1 to toggle this hint + Hold Shift to slow the cursor down + Ctrl+Drag a thing to move it around + Alt+Click a drawing to remove it + Press Return/Enter to finish + Press ESC to cancel + Use the menu bar to draw + NOTE: You must select 'Crop' before closing the editor + If you do not it will not close. + Drücke F1 um diesen Hinweis ein/auszublenden + Halte Shift um den Mauszeiger zu verlangsamen + Ctrl+Linksklick um Objekte herumzubewegen + Alt+Linksklick um Objekte zu löschen + Drücke Enter zum hochladen + Drücke ESC zum Abbrechen + HINWEIS: Du musst 'Zuschneiden' auswählen before du den Editor schließt + Wenn du dies nicht machst, wird sich der Editor nicht schließen. + + + + CustomUploader + + + Root not an object + Root (Wurzel) ist kein JSON Objekt + + + + name is not a string + "name" ist keine Zeichenkette + + + + desc not a string + "desc" ist keine Zeichenkette + + + + method not a string + "method" ist keine Zeichenkette + + + + method invalid + "method" ist ungültig + + + + target missing + Das Ziel fehlt + + + + target not URL + Das Ziel ist keine URL + + + + format invalid + "format" ist ungültig + + + + format provided but not string + "format" ist keine Zeichenkette + + + + body not set + Die Antwort hatte keinen "body" + + + + all elements of body must be objects + Alle Teile des "body"s müssen Objekte sein + + + + all parts must have a body which is object or string! + Alle Teile müssen einen "body" haben, welcher eine Zeichenkette oder ein Objekt ist! + + + + all parts of body must be string or object + Alle Teile des "body"s müssen eine Zeichenkette oder ein Objekt sein + + + + all __headers must be strings + Alle mit "__" beginnenden Kopfzeilen müssen Zeichenketten sein + + + + body not array (needed for multipart) + Der "body"ist kein Array (für "multipart" benötigt) + + + + body not object + Der "body" ist kein Objekt + + + + body not string (reason: format: PLAIN) + `format: PLAIN` should stay the same + Antwort "body" ist keine Zeichenkette (Grund: "format: PLAIN") + + + + headers must be object + "headers" ist kein JSON Objekt + + + + return invalid + Antwort ungültig + + + + fileLimit not decimal + fileLimit stays English + "fileLimit" ist keine Dezimalzahl + + + + base64 must be boolean + Base64 muss ein Wahrheitswert sein + + + + base64 required with json + Base64 für JSON benötigt + + + + + + + + + KShare Custom Uploader + KShare benutzerdefinierter Uploader + + + + Copied upload link to clipboard! + Link in die Zwischenablage kopiert! + + + + Upload done, but result empty! + Hochgeladen, aber eine leere Antwort erhalten! + + + + Upload done, but result is not JSON Object! Result in clipboard. + Hochgeladen, aber die Antwort war kein JSON-Objekt! Die Antwort wurde in die Zwischenablage kopiert. + + + + + Copied upload result to clipboard! + Ergebnis in die Zwischenablage kopiert! + + + + File limit exceeded! + Dateigröße überschritten! + + + + EncoderSettingsDialog + + + Image Encoder Settings + Einstellungen des Bildkodierers + + + + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Quality</span></a></p></body></html> + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Qualität</span></a></p></body></html> + + + + Format default + Standardwert des Formats + + + + Video Encoder Settings + Videokodierer Einstellungen + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Preset</span></a></p></body></html> + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Voreinstellung</span></a></p></body></html> + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">CRF</span></a></p></body></html> + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">CRF</span></a></p></body></html> + + + + Lossless (not recommended) + Verlustfrei (Nicht empfohlen) + + + + TODO: Find whatever configuration GIF can have in ffmpeg's libav + TODO: Herausfinden welche Konfigurationen ffmpegs "libav" für GIF unterstützt + + + + Bitrate + Bitrate + + + + The number of pictures in a group of pictures, or 0 for intra only + + + + + GOP size + GOP Größe + + + + KShare Encoder Settings + KShare Kodierer Einstellungen + + + + HotkeyInputDialog + + + + + Record + Aufnehmen + + + + Stop recording + Stoppe Aufnahme + + + + ImgplusUploader + + imgplus API key + "imgpl.us" API key + + + Enter the imgpl.us API key (Found in Settings) + Gebe den "imgpl.us" API key ein (Kann auf der Website in den Einstellungen gefunden werden) + + + + ImgurSettingsDialog + + + Imgur auth + Imgur Authentifizierung + + + + OAuth2 + OAuth2 + + + + <!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:'Noto Sans'; font-size:10pt; 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;">Create a new application:</p></body></html> + <!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:'Noto Sans'; font-size:10pt; 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;">Erstelle eine neue Anwendung:</p></body></html> + + + + Open imgur + Öffne "imgur" + + + + Insert Client ID and secret: + gebe die "Client ID" und Geheimnis ein: + + + + Client ID + Client ID + + + + Client Secret + Client Secret + + + + Get the pin + Fordere den PIN an + + + + Insert the pin below: + Gebe den PIN darunter ein: + + + + PIN + PIN + + + + Authorize + Versuche Authorisierung + + + + Not working + Authentifizierung fehlgeschlagen + + + + It works! + Authentifizierung erfolgreich! + + + + ImgurUploader + + + + KShare imgur Uploader + KShare imgur Uploader + + + + Failed upload! Image too big + Hochladen fehlgeschlagen! Das Bild überschreitet die maximale Größe + + + + Uploaded to imgur! + Auf imgur hochgeladen! + + + + KShare imgur Uploader + KShare imgur Uploader + + + + Failed upload! imgur said: HTTP %1: %2 + Hochladen fehlgeschlagen! Imgur hat hiermit geantwortet: "HTTP %1:%2" + + + + MainWindow + + + Settings + Einstellungen + + + + Log + Protokoll + + + + Fi&le + Date&i + + + Scree&nshot + Scree&nshot + + + &Utilities + &Utilities + + + + &Recording + &Aufnahme + + + + &Quit + &Beenden + + + &Fullscreen + Ganzer &Bildschirm + + + &Area + &Gebiet + + + &Color Picker + &Farbpipette + + + + Copy Clipboard + Zwischenablage hochladen + + + + Area + Regionsaufnahme + + + + Open color picker + Farbpinpette + + + + + About + Über + + + + Fullscreen + Vollbildaufnahme + + + + Open Screenshot Folder + Öffne Screenshot Ordner + + + + Request History + Verlauf + + + + Status + Status + + + + Filename + Dateiname + + + + URL + + + + + Request + + + + + Time + Datum + + + + &Start + + + + + St&op + + + + + &Settings + &Einstellungen + + + + &About + &Über + + + + Open URL + Öffne Link + + + + Open Local File + Öffne Datei Lokal + + + + Open Request + Öffne HTTP-Request + + + + Copy Link to Clipboard + Kopiere Link in Zwischenablage + + + + &Abort + &Breche Aufnahme ab + + + + Recording format not set in settings. Aborting. + Das Format für die Aufnahmen wurde nicht in den Einstellungen definiert. Aufnahme wird abgebrochen. + + + + Quit + Beenden + + + + Show/Hide + Zeigen / Verstecken + + + + Take fullscreen shot + Screenshot des ganzen Bildschirms + + + + Take area shot + Screenshot eines Gebietes + + + + Screenshot active window + Screenshot des aktiven Fensters + + + + Copy from Clipbaord + Zwischenablage hochladen + + + + Show color picker + Zeige die Farbpipette + + + + Record screen + Bildschirm aufnehmen + + + + Stop recording + Stoppe Aufnahme + + + + Abort recording + Breche Aufnahme ab + + + + + Cannot determine location for pictures + Die Position des Ordners für Bilder kann nicht bestimmt werden + + + + + Cannot determine location of your home directory + Die Position des Benutzerverzeichnisses kann nicht bestimmt werden + + + + + Invalid config [saveLocation not int or is not in range] + Ungültige Config (Speicherziel ist keine natürliche Zahl oder nicht in einem gültigen Bereich) + + + + QObject + + + + Could not bind the hotkey %1! Is the keybind already registered? + Konnte den Hotkey "%1" nicht erstellen! Ist er bereits registriert? + + + + Could not make config directory + Konnte den Ordner für die Konfigurationsdateien nicht erstellen + + + + Invalid file: + Ungültige Datei: + + + Failed to upload! Copied the response to clipboard + Hochladen fehlgeschlagen! Die Antwort wurde in die Zwischenablage kopiert + + + KShare imgplus Uploader + KShare imgplus Uploader + + + Uploaded to ImagePlus! + Auf ImagePlus hochgeladen! + + + + KShare Message + + + + + KShare Warning + + + + + KShare Error + + + + + KShare Fatal Error + + + + + KShare Even More Fatal Error + + + + + + Failed to take external screenshot: + + + + + + RecordingFormats + + + Could not create temporary directory. Error: + Konnte den Ordner für die temporären Dateien nicht erstellen. Fehler: + + + + + Encoder error: + Fehler im Kodierer: + + + + RecordingPreview + + + Time: 00:00 +Frame: 0 +Stop key: + Zeit: 00:00 +Bild: 0 +Stopptaste: + + + + Time: %1 +Frame: %2 +Stop key: %3 + Zeit: %1 +Bild: %2 +Stopptaste: %3 + + + + ScreenAreaSelector + + + Set the recording region by resizing this. +%1x%2 + Wähle die Aufnahmeregion indem du die Größe dieses Fensters anpasst. +%1x%2 + + + + KShare: Select Area (By resizing this window) + KShare: Wähle die Region aus (Indem du die Größe dieses Fensters anpasst) + + + + ScreenOverlaySettings + + + Screen overlay settings + + + + + Keyboard movement pattern + Tastatur Stuerung + + + + JKL; movement (Home-row) + JKL Steuerung (Home Reihe) + + + + HJKL movement (Vim-like) + HJKL Steuerung (wie Vim) + + + + Arrow movement + Pfeilsteuerung + + + + Enable grid + Gitter anzeigen + + + + Overlay Alpha + Overlay Alpha + + + + Colors + Farben + + + + Set highlight color + + + + + Set foreground color + + + + + Preview + Vorschau + + + + Foreground color + + + + + Highlight color + Farbe für Hervorgehobenes + + + + SettingsDialog + + + Crop editor settings + Zuschneideeditor Einstellungen + + + + Quick mode (mouse release screenshots) + Schneller Modus (Maus loslassen reicht) + + + + Delay before taking a screenshot + Verzögerung vor einem Screenshot + + + + In seconds + In Sekunden + + + + A delay before taking a screenshot, in seconds + Verzögerung vor einem Screenshot in Sekunden + + + + Fullscreen capture command (save to %FILE_PATH or print to stdout) + + + + + Hotkeys + Hotkeys + + + + Still image format + Format für Bilder + + + + Recording format + Aufnahmeformate + + + + Capture cursor + Mauszeiger aufnehmen + + + + %(date format)date and %ext are supported + %(Datumsformat)Datum ujnd %ext werden unterstützt + + + + File name scheme: + Benennungsschema: + + + + Pressing <X> hides to tray + Drücke <X> um dieses Fenster in die Taskleiste zu minimieren + + + + Do not save + + + + + Open settings directory + Öffne Konfigurationsordner + + + + Destination: + Speicherziel: + + + + Focused capture command (save to %FILE_PATH or print to stdout) + + + + + Pictures folder + Ordner für Bilder + + + + Screenshots folder (In your user folder) + Screenshot ordner (In deinem Benutzerordner) + + + + File save location + Speicherort für Bilder + + + + Advanced + Erweiterte Einstellungen + + + + Editor Position (tweak if the editor does not cover the entire screen) + Editor Position (Ändern, wenn nicht der ganzen Bildschirm ausgefüllt ist) + + + + Encoder settings + Kodierer Einstellungen + + + + FPS + + + + + Frames Per Second For Recording + + + + + Fullscreen image + Screenshot des ganzen Bildschirms + + + + Area image + Screenshot eines Gebietes + + + + Active window + Screenshot des aktiven Fensters + + + + Copy from Clipboard + + + + + Color picker + Farbpipette + + + + Stop Recording + Stoppe Aufnahme + + + + Start Recording + Starte Aufnahme + + + + Capture cursor (disabled: implementation missing) + Mauszeiger aufnehmen (Deaktiviert: Implementierung fehlt) + + + + TextItem + + + Text to add + Text + + + + Input + Text + + + + UploaderSingleton + + + KShare - Failed to open File + + + + + Cannot determine location for pictures + Die Position des Ordners für Bilder kann nicht bestimmt werden + + + + Cannot determine location of your home directory + Die Position des Benutzerverzeichnisses kann nicht bestimmt werden + + + + Invalid config [saveLocation not int or is not in range] + Ungültige Config (Speicherziel ist keine natürliche Zahl oder nicht in einem gültigen Bereich) + + + + Ambigious uploader + Unklarer Uploadername + + + + Currently selected uploader is not set up properly! Falling back to imgur + Ausgewählter Uploader ist nicht korrekt eingestellt! Nutze imgur als Ersatz + + + + + + KShare - Failed to save picture + KShare - Speichern des Bildes fehlgeschlagen + + + diff --git a/translations/ru_RU.qm b/translations/ru_RU.qm new file mode 100644 index 0000000..89820b4 Binary files /dev/null and b/translations/ru_RU.qm differ diff --git a/translations/ru_RU.ts b/translations/ru_RU.ts new file mode 100644 index 0000000..902be0b --- /dev/null +++ b/translations/ru_RU.ts @@ -0,0 +1,1135 @@ + + + + + AboutBox + + + About KShare + О KShare + + + + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - The free and open source and cross platform screen sharing software</span></p><p>Version %0<br/>Links: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Source code</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Website</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - свободное кроссплатформенное ПО с открытым исходным кодом</span></p><p>Версия %0<br/>Ссылки: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Исходный код</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Веб-сайт</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + + + + BrushPenSelection + + + Pen settings + Настройки пера + + + + Choose pen color + Выбрать цвет пера + + + + Cosmetic + Никто не знает что это D: + Косметическое + + + + Width + Ширина + + + + Pen alpha + Прозрачность пера + + + + Blur settings + Настройки размытия + + + + Performance Hint + Производительность + + + + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Blur Hints + + + + + Blur Radius + Радиус размытия + + + + Animated Hint + Анимация + + + + Quality Hint + Качество + + + + Brush settings + Настройки штриховки + + + + Brush alpha + Прозрачность штриховки + + + + No Brush + Без штриховки + + + + Solid + Сплошная + + + + Dense 1 + Плотность 1 + + + + Dense 2 + Плотность 2 + + + + Dense 3 + Плотность 3 + + + + Dense 4 + Плотность 4 + + + + Dense 5 + Плотность 5 + + + + Dense 6 + Плотность 6 + + + + Dense 7 + Плотность 7 + + + + Horizontal + Горизонтальная линия + + + + Vertical + Вертикальная линия + + + + Cross pattern + В клетку + + + + Backwards diagonal + Диагонально назад + + + + Forwards diagonal + Диагонально вперед + + + + Diagonal cross + В клетку по диагонали + + + + Choose brush color + Выбрать цвет штриховки + + + + Path item has brush + Штриховать при рисовании + + + + Arrow settings + Настройки стрелок + + + + Arrow width and height + Ширина и высота стрелок + + + + Other editor settings + Другие настройки редактора + + + + Enable grid + Включить сетку + + + + Highligh color + Цвет подсвечивания + + + + Crop editor settings + Настройки редактора кадрирования + + + + Pen Color + Цвет пера + + + + Brush Color + Цвет штриховки + + + + Highlight color + Цвет подсвечивания + + + + ClipboardUploader + + + Copied to clipboard! + Скопировано в буфер обмена! + + + + ColorPickerScene + + + KShare Color Picker + Пипетка KShare + + + + + Copied hex code to clipboard. + Шестнадцатеричный код скотирован в буфер обмена. + + + + CropEditor + + + KShare Crop Editor + Редактор кадрирования KShare + + + + CropScene + + + Free draw + Рисование от руки + + + + Blur + Размытие + + + + Straight line + Прямая линия + + + + Text + Текст + + + + Rectangle + Прямоугольник + + + + Ellipse + Эллипс + + + + Arrow + Стрелка + + + + Eraser + Ластик + + + + Clear all drawing + Очистить + + + + + + None + Ничего + + + + Settings + Настройки + + + + Confirm + Подтвердить + + + + Cancel + Отменить + + + + KShare Crop Editor + Редактор кадрирования KShare + + + + Press F1 to toggle this hint + Hold Shift to slow the cursor down + Ctrl+Drag a thing to move it around + Alt+Click a drawing to remove it + Press Return/Enter to finish + Press ESC to cancel + Use the menu bar to draw + NOTE: You must select 'Crop' before closing the editor + If you do not it will not close. + Нажмите F1, чтобы переключать эти подсказки + Удерживание Shift — замедлить курсор + Ctrl+Потянуть объект для перемещения + Alt+клик по рисунку — удалить рисунок + Нажмите Enter, чтобы закночить + Нажмите Esc, чтобы отменить + Используйте панель меню для рисования + ЗАМЕТКА: Нужно выбрать "Кадрирование перед закрыванием редактора" + Иначе он не закроется. + + + + CustomUploader + + + Root not an object + Корень не объект + + + + name is not a string + имя не строка + + + + desc not a string + desc не строка + + + + method not a string + метод не строка + + + + method invalid + метод неверный + + + + target missing + цель отсутствует + + + + target not URL + цель не URL + + + + format invalid + формат не действительный + + + + format provided but not string + предоставлен формат, но не строка + + + + body not set + тело не задано + + + + all elements of body must be objects + все элементы тела должны быть объектами + + + + all parts must have a body which is object or string! + все части должны иметь тело, которое является объектом или стркой! + + + + all parts of body must be string or object + все части тела должны быть троками или объектом + + + + all __headers must be strings + все _header-ы должны быть строками + + + + body not array (needed for multipart) + тело не массив (нужно для загрузки частями) + + + + body not object + тело не объект + + + + body not string (reason: format: PLAIN) + `format: PLAIN` should stay the same + тело не строка (причина: формат: PLAIN) + + + + headers must be object + заголовки должны быть объектом + + + + return invalid + return не действителен + + + + fileLimit not decimal + fileLimit stays English + fileLimit не целое число + + + + base64 must be boolean + base64 должно быть boolean + + + + base64 required with json + json требует base64 + + + + + + + + + KShare Custom Uploader + Пользовательский загркзчик KShare + + + + Copied upload link to clipboard! + Ссыслка на зугрузку скопирована в буфер обмена! + + + + Upload done, but result empty! + Загрузка завершена, но результат пуст! + + + + Upload done, but result is not JSON Object! Result in clipboard. + Загрузка завершена, но результат не является объектом JSON! Результат в буфере обмена. + + + + + Copied upload result to clipboard! + Результат загрузки скопирован в буфер обмена! + + + + File limit exceeded! + Ограницение файла превышено! + + + + EncoderSettingsDialog + + + Image Encoder Settings + Настройки кодировщика изображений + + + + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Quality</span></a></p></body></html> + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Качество</span></a></p></body></html> + + + + Format default + По умолчанию для формата + + + + Video Encoder Settings + Настройки кодировщика видео + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Preset</span></a></p></body></html> + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Предустановка</span></a></p></body></html> + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">CRF</span></a></p></body></html> + + + + + Lossless (not recommended) + Без потерь (не рекомендуется) + + + + TODO: Find whatever configuration GIF can have in ffmpeg's libav + + + + + Bitrate + Битрейт + + + + The number of pictures in a group of pictures, or 0 for intra only + Количество изображений в группе изображений, 0 = только интра кадры + + + + GOP size + Размер группы изображений + + + + KShare Encoder Settings + Настройки кодировщика KShare + + + + HistoryDialog + + + Request History + История запросов + + + + Type + Тип + + + + URL + URL + + + + Status + Статус + + + + Time + Время + + + + HotkeyInputDialog + + + + + Record + Запись + + + + Stop recording + Остановить запись + + + + ImgplusUploader + + + imgplus API key + ключ API imgplus + + + + Enter the imgpl.us API key (Found in Settings) + Введите ключ API imgpl.us (Из настроек) + + + + ImgurSettingsDialog + + + Imgur auth + Imgur аутентификация + + + + OAuth2 + OAuth2 + + + + <!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:'Noto Sans'; font-size:10pt; 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;">Create a new application:</p></body></html> + <!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:'Noto Sans'; font-size:10pt; 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;">Создать новое приложение:</p></body></html> + + + + Open imgur + Открытьi imgur + + + + Insert Client ID and secret: + Введите ID клиента и секрет: + + + + Client ID + ID клиента + + + + Client Secret + Секрет клиента + + + + Get the pin + Получить PIN + + + + Insert the pin below: + Введите PIN: + + + + PIN + + + + + Authorize + Авторизировать + + + + Not working + Не работает + + + + It works! + Работает! + + + + ImgurUploader + + + + KShare imgur Uploader + Imgur загрузчик KShare + + + + Failed upload! Image too big + Не удалось загрузить! Изображение слишком велико + + + + Uploaded to imgur! + Загружено на imgur! + + + + KShare imgur Uploader + Imgur загрузчик KShare + + + + Failed upload! imgur said: HTTP %1: %2 + Не удалось загрузить! imgur говорит: HTTP %1: %2 + + + + MainWindow + + + Settings + Настройки + + + + Log + Журнал + + + + Open request history + Открыть историю запросов + + + + Fi&le + &Файл + + + + Scree&nshot + &Скриншот + + + + &Utilities + Инстр&ументы + + + + &Recording + З&апись + + + + &Quit + В&ыход + + + + &Fullscreen + &Весь экран + + + + &Area + Обла&сть + + + + &Color Picker + &Пипетка + + + + &Start + &Начать + + + + St&op + &Остановить + + + + &Settings + На&стройки + + + + &About + О прогр&амме + + + + Active &window + &Активное окно + + + + &Abort + &Отменить + + + + Recording format not set in settings. Aborting. + Формат записи не задан в настроках! Отмена. + + + + Quit + Выход + + + + Show/Hide + Показать/Спрятать + + + + Take fullscreen shot + Сделать снимок всего экрана + + + + Take area shot + Сделать снимок области экрана + + + + Screenshot active window + Снимок актиного окна + + + + Show color picker + Показать пипетку + + + + Record screen + Записать экран + + + + Stop recording + Остановить запись + + + + Abort recording + Отменить запись + + + + QObject + + + + Could not bind the hotkey %1! Is the keybind already registered? + Не удалось привязать горячую клавишу %1! Клавиша уже зарегистрирована? + + + + Could not make config directory + Не удалось создать папку конфигураций + + + + Invalid file: + Неверный файл: + + + + Failed to upload! Copied the response to clipboard + Не удалось загрузить! Ответ скопирован в буфер обмена + + + + KShare imgplus Uploader + Загрузчик KShare на imgplus + + + + Uploaded to ImagePlus! + Загружено на ImagePlus! + + + + RecordingFormats + + + Could not create temporary directory. Error: + Не удалось создать временную папку. Ошибка: + + + + + Encoder error: + Ошибка кодировщика: + + + + RecordingPreview + + + Time: 00:00 +Frame: 0 +Stop key: + Время: 00:00 +Кадр: 0 +Стоп клавиша: + + + + Time: %1 +Frame: %2 +Stop key: %3 + Время: %1 +Кадр: %2 +Стоп клавиша: %3 + + + + ScreenAreaSelector + + + Set the recording region by resizing this. +%1x%2 + Задайте область захвата, переместив это. +%1x%2 + + + + KShare: Select Area (By resizing this window) + KShare: Выберите Область (Изменив размер этого окна) + + + + SettingsDialog + + + Crop editor settings + Настройки редактора кадрирования + + + + Quick mode (mouse release screenshots) + Быстрый режим (скриншот по отпусканию мыши) + + + + Delay before taking a screenshot + Задержка перед скриншотом + + + + In seconds + в секундах + + + + A delay before taking a screenshot, in seconds + Задержка перед скриншотом в секундах + + + + Hotkeys + Горячие клавиши + + + + Still image format + Формат изображений + + + + Recording format + Формат записей + + + + Capture cursor + Захватывать курсор + + + + %(date format)date and %ext are supported + поддерживаются %(формат даты)date и %ext + + + + File name scheme: + Формат имени файла: + + + + Pressing <X> hides to tray + Нажатие <X> скрывает в трей + + + + Open settings directory + Открыть папку настроек + + + + Destination: + Сервис: + + + + Pictures folder + Папка картинок + + + + Screenshots folder (In your user folder) + Папка скриншотов (В папке пользователя) + + + + File save location + Место сохранения файлов + + + + Advanced + Расширенные + + + + Editor Position (tweak if the editor does not cover the entire screen) + Позиция редактора (регулируйте, если редактор покрывает не всю область) + + + + Encoder settings + Настройки кодировщика + + + + FPS + к/с + + + + Frames Per Second For Recording + Кадров в секунду на записи + + + + Fullscreen image + Полноэкранное изображение + + + + Area image + Изображение области + + + + Active window + Активное окно + + + + Color picker + Пипетка + + + + Stop Recording + Остановить запись + + + + Start Recording + Начать запись + + + + Capture cursor (disabled: implementation missing) + Захват курсора (отключено: реализация отсутсвует) + + + + TextItem + + + Text to add + Текст для добавления + + + + Input + Ввод + + + + UploaderSingleton + + + Cannot determine location for pictures + Не удается установить расположение изображений + + + + Cannot determine location of your home directory + Не удается установить расположение вашей домашней директории + + + + Invalid config [saveLocation not int or is not in range] + Неверная конфигурация [saveLocation not int or is not in range] + + + + Ambigious uploader + Двусмысленный загрузчик + + + + Currently selected uploader is not set up properly! Falling back to imgur + Текущий загрузчик не настроен корректно! Возвращаемся к imgur + + + + + + KShare - Failed to save picture + KShare - Не удалось сохранить изображение + + + diff --git a/translations/sr_RS.qm b/translations/sr_RS.qm new file mode 100644 index 0000000..f9a4b6c Binary files /dev/null and b/translations/sr_RS.qm differ diff --git a/translations/sr_RS.ts b/translations/sr_RS.ts new file mode 100644 index 0000000..7c4cf93 --- /dev/null +++ b/translations/sr_RS.ts @@ -0,0 +1,1133 @@ + + + + + AboutBox + + + About KShare + O Programu KShare + + + + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - The free and open source and cross platform screen sharing software</span></p><p>Version %0<br/>Links: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Source code</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Issue tracker</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Website</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + <html><head/><body><p><img src=":/icons/icon.svg" width="50" style="vertical-align: middle;"/><span style=" font-weight:600; vertical-align:middle;"> KShare</span><span style=" vertical-align:middle;"> - Besplatan i slobodan program otvorenog koda za</span></p><p>Verzija %0<br/>Linkovi: <a href="https://github.com/ArsenArsen/KShare"><span style=" text-decoration: underline; color:#007af4;">Izvorni kod</span></a>, <a href="https://github.com/ArsenArsen/KShare/issues"><span style=" text-decoration: underline; color:#007af4;">Traker problema</span></a>, <a href="http://kshare.arsenarsen.com"><span style=" text-decoration: underline; color:#007af4;">Web sajt</span></a>, <a href="https://patreon.com/arsen"><span style=" text-decoration: underline; color:#007af4;">Patreon</span></a></p></body></html> + + + + BrushPenSelection + + + Pen settings + Podešavanja olovke + + + + Choose pen color + Izaberi boju olovke + + + + Cosmetic + Kozmetična olovka + + + + Width + Širina + + + + Pen alpha + Providnost olovke + + + + Blur settings + Podešavanja mućenja + + + + Performance Hint + Performanse + + + + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Blur Hints + <a href="http://doc.qt.io/qt-5/qgraphicsblureffect.html#BlurHint-enum">Opcije + + + + Blur Radius + Radius mućenja + + + + Animated Hint + Optimizacija animacije + + + + Quality Hint + Povećan kvalitet + + + + Brush settings + Podešavanja četke + + + + Brush alpha + Providnost četke + + + + No Brush + Prazno + + + + Solid + Puno + + + + Dense 1 + Gustina 1 + + + + Dense 2 + Gustina 2 + + + + Dense 3 + Gustina 3 + + + + Dense 4 + Gustina 4 + + + + Dense 5 + Gustina 5 + + + + Dense 6 + Gustina 6 + + + + Dense 7 + Gustina 7 + + + + Horizontal + Horizontalne linije + + + + Vertical + Vertikalne linije + + + + Cross pattern + Krstasto + + + + Backwards diagonal + Diagonalno unazad + + + + Forwards diagonal + Diagonalno unapred + + + + Diagonal cross + Diagonalno krstasti + + + + Choose brush color + Izaberi boju četke + + + + Path item has brush + Da li popuniti oblast linije + + + + Arrow settings + Podešavanja strela + + + + Arrow width and height + Visina i debljina strela + + + + Other editor settings + Druga podešavanja urednika + + + + Enable grid + Omogući mrežu + + + + Highligh color + Boja akcenta + + + + Crop editor settings + Podešavanja editora + + + + Pen Color + Boja olovke + + + + Brush Color + Boja četke + + + + Highlight color + Boja akcenta + + + + ClipboardUploader + + + Copied to clipboard! + Ne znam prevod za clipboard xD + Copirano u klipbord! + + + + ColorPickerScene + + + KShare Color Picker + KShare Birač Boja + + + + + Copied hex code to clipboard. + Boja u hex formatu je kopirana. + + + + CropEditor + + + KShare Crop Editor + KShare Urednik + + + + CropScene + + + Free draw + Crtanje + + + + Blur + Mućenje slike + + + + Straight line + Prava Linija + + + + Text + Tekst + + + + Rectangle + Pravougaonik + + + + Ellipse + Krug i Elipsa + + + + Arrow + Strela + + + + Eraser + Brisač + + + + Clear all drawing + Očisti sliku + + + + + None + Ništa + + + + Settings + Podešavanja + + + + Confirm + Potvrdi + + + + Cancel + Otkaži + + + + KShare Crop Editor + KShare Urednik Slika + + + + Press F1 to toggle this hint + Hold Shift to slow the cursor down + Ctrl+Drag a thing to move it around + Alt+Click a drawing to remove it + Press Return/Enter to finish + Press ESC to cancel + Use the menu bar to draw + NOTE: You must select 'Crop' before closing the editor + If you do not it will not close. + Pritisni F1 da uključiš i isključiš ovo + Drži Shift da usporiš miša + Ctrl+vuci da pomeriš nešto + Alt+Klik da ukloniš nešto + Press Return/Enter da potvrdiš + Press ESC da otkažeš + Koristi traku da crtaš + PS: Moraš izabrati opseci da bi potrvrdio ili otkazao. + + + + CustomUploader + + + Root not an object + Koren nije objekat + + + + name is not a string + name nije string + + + + desc not a string + desc nije string + + + + method not a string + method nije string + + + + method invalid + method nije validan + + + + target missing + target nije unet + + + + target not URL + target nije URL + + + + format invalid + format nije validan + + + + format provided but not string + format nije string + + + + body not set + bodz ne postoji + + + + all elements of body must be objects + svi elementi body-ja moraju biti objekti + + + + all parts must have a body which is object or string! + svi delovi moraju imati telo koje je ili objekat ili string! + + + + all parts of body must be string or object + svi delovi body-ja moraju biti objekti ili stringovi + + + + all __headers must be strings + svi __header-i moraju biti stringovi + + + + body not array (needed for multipart) + body nije array + + + + body not object + body nije objekat + + + + body not string (reason: format: PLAIN) + `format: PLAIN` should stay the same + body nije string (razlog: format: PLAIN) + + + + headers must be object + headers mora biti objekat + + + + return invalid + return nije validan + + + + fileLimit not decimal + fileLimit stays English + fileLimit nije decimala + + + + base64 must be boolean + base64 mora biti boolean + + + + base64 required with json + json zahteva base64 + + + + + + + + + KShare Custom Uploader + KShare Prilagodivi Uploader + + + + Copied upload link to clipboard! + Kopirao link u klipbord! + + + + Upload done, but result empty! + Slanje gotovo, ali rezultat je prazan! + + + + Upload done, but result is not JSON Object! Result in clipboard. + Slanje gotobo, ali rezultat nije JSON objekat! Kopiran rezultat. + + + + + Copied upload result to clipboard! + Rezultat kopiran u klipboard! + + + + File limit exceeded! + Fajl je prevelik! + + + + EncoderSettingsDialog + + + Image Encoder Settings + Podešavanja kodeka za slike + + + + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Quality</span></a></p></body></html> + <html><head/><body><p><a href="http://doc.qt.io/qt-5/qpixmap.html#save"><span style=" text-decoration: underline; color:#007af4;">Kvalitet</span></a></p></body></html> + + + + Format default + Podrazumevan za format + + + + Video Encoder Settings + Podešavanja video kodeka + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">Preset</span></a></p></body></html> + + + + + <html><head/><body><p><a href="https://trac.ffmpeg.org/wiki/Encode/H.264#crf"><span style=" text-decoration: underline; color:#007af4;">CRF</span></a></p></body></html> + + + + + Lossless (not recommended) + Kompresija bez gubitaka (nije preporučeno) + + + + TODO: Find whatever configuration GIF can have in ffmpeg's libav + + + + + Bitrate + + + + + The number of pictures in a group of pictures, or 0 for intra only + Broj slika u grupi slika, ili 0 da bi ostale samo intra slike + + + + GOP size + Veličina GOP-a + + + + KShare Encoder Settings + KShare Podešavanja Kodeka + + + + HistoryDialog + + + Request History + Istorija slanja + + + + Type + Tip + + + + URL + URL + + + + Status + Status + + + + Time + Vreme + + + + HotkeyInputDialog + + + + + Record + Snjimaj tastaturu + + + + Stop recording + Obustavi snjimanje + + + + ImgplusUploader + + + imgplus API key + imgplus API ključ + + + + Enter the imgpl.us API key (Found in Settings) + Unesi imgpl.us API ključ (Iz podešavanja) + + + + ImgurSettingsDialog + + + Imgur auth + Imgur autentikacija + + + + OAuth2 + OAuth2 + + + + <!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:'Noto Sans'; font-size:10pt; 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;">Create a new application:</p></body></html> + <!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:'Noto Sans'; font-size:10pt; 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;">Napravi novu aplikaciju:</p></body></html> + + + + Open imgur + Otvori imgur + + + + Insert Client ID and secret: + Unesi Client ID i secret: + + + + Client ID + Client ID + + + + Client Secret + Client Secret + + + + Get the pin + Nabavi PIN + + + + Insert the pin below: + Unesi PIN: + + + + PIN + + + + + Authorize + Autorizuj + + + + Not working + Ne radi + + + + It works! + Radi! + + + + ImgurUploader + + + + KShare imgur Uploader + KShare imgur Uploader + + + + Failed upload! Image too big + Neuspelo slanje! Slika je prevelika + + + + Uploaded to imgur! + Poslato na imgur! + + + + KShare imgur Uploader + KShare imgur Uploader + + + + Failed upload! imgur said: HTTP %1: %2 + Neuspeh! imgur kaže: HTTP %1: %2 + + + + MainWindow + + + Settings + Podešavanja + + + + Log + Zapis + + + + Open request history + Prikaži istoriju slanja + + + + Fi&le + Faj&l + + + + Scree&nshot + Slika&nje + + + + &Utilities + &Alati + + + + &Recording + &Snjimanje + + + + &Quit + Iza&đi + + + + &Fullscreen + &Ceo Ekran + + + + &Area + &Prostor + + + + &Color Picker + &Birač Boja + + + + &Start + &Započni + + + + St&op + Zau&stavi + + + + &Settings + &Podešavanja + + + + &About + &O Programu + + + + Active &window + Tre&nutni prozor + + + + &Abort + &Obustavi + + + + Recording format not set in settings. Aborting. + Format snjimanja nije podešen! Otkazujem. + + + + Quit + Izađi + + + + Show/Hide + Prikaži/Sakrij + + + + Take fullscreen shot + Slikaj ceo ekran + + + + Take area shot + Slikaj deo ekrana + + + + Screenshot active window + Slikaj trenutni prozor + + + + Show color picker + Prikaži birač boja + + + + Record screen + Snjimi ekran + + + + Stop recording + Zaustavi snjimanje + + + + Abort recording + Obustavi snjimanje + + + + QObject + + + + Could not bind the hotkey %1! Is the keybind already registered? + Neuspela registracija hotkeya %1! Da li je već registrovan? + + + + Could not make config directory + Neuspeh pri pravljenju foldera za konfiguraciju + + + + Invalid file: + Neispravan fajl: + + + + Failed to upload! Copied the response to clipboard + Neuspelo slanje! Rezultat kopiran + + + + KShare imgplus Uploader + KShare imgplus Uploader + + + + Uploaded to ImagePlus! + Poslato na ImagePlus! + + + + RecordingFormats + + + Could not create temporary directory. Error: + Nije moguće napraviti privremeni folder. Greška: + + + + + Encoder error: + Greška na kodeku: + + + + RecordingPreview + + + Time: 00:00 +Frame: 0 +Stop key: + Vreme: 00:00 +Slika: 0 +Stop dugme: + + + + Time: %1 +Frame: %2 +Stop key: %3 + Vreme: %1 +Slika: %2 +Stop dugme: %3 + + + + ScreenAreaSelector + + + Set the recording region by resizing this. +%1x%2 + Izaberi oblast ekrana tako što ćeš povećati ovaj prozor. +%1x%2 + + + + KShare: Select Area (By resizing this window) + KShare: Izaberi Oblast Ekrana (Menjanjem veličine ovog prozora) + + + + SettingsDialog + + + Crop editor settings + Podešavanja + + + + Quick mode (mouse release screenshots) + Brzi mod (Potvrdi optuštanjem miša) + + + + Delay before taking a screenshot + Pauza pre slikanja + + + + In seconds + (u sekundama) + + + + A delay before taking a screenshot, in seconds + Pauza pre slikanja, u sekundama + + + + Hotkeys + Prečice + + + + Still image format + Format slika + + + + Recording format + Format videa + + + + Capture cursor + Slikaj kursor + + + + %(date format)date and %ext are supported + %(format za datum)date i %ext su podržani + + + + File name scheme: + Format za ime fajlova: + + + + Pressing <X> hides to tray + Pritiskanje <X> sakriva prozor + + + + Open settings directory + Otvori folder sa podešavanjima + + + + Destination: + Destinacija: + + + + Pictures folder + Folder za slike + + + + Screenshots folder (In your user folder) + Screenshots (U vašem korisničkom folderu) + + + + File save location + Mesto za čuvanje fajlova + + + + Advanced + Napredno + + + + Editor Position (tweak if the editor does not cover the entire screen) + Pozicija urednika (menjajte ako urednik ne pokriva ceo ekran) + + + + Encoder settings + Podešavanja Kodeka + + + + FPS + FPS + + + + Frames Per Second For Recording + Slika po sekundi za snjimanje + + + + Fullscreen image + Slika Celog Ekrana + + + + Area image + Slika prostora na ekranu + + + + Active window + Aktivni prozor + + + + Color picker + Birač Boja + + + + Stop Recording + Zaustavi snjimanje + + + + Start Recording + Sapočni snjimanje + + + + Capture cursor (disabled: implementation missing) + Snjimaj kursor (onemogućenoč fali implementacija) + + + + TextItem + + + Text to add + Tekst za dodavanje + + + + Input + Unos + + + + UploaderSingleton + + + Cannot determine location for pictures + Nije moguće odrediti lokaciju za slike + + + + Cannot determine location of your home directory + Nije moguće odrediti vaš korisnički folder + + + + Invalid config [saveLocation not int or is not in range] + Nepravilna konfiguracija [saveLocation not int or is not in range] + + + + Ambigious uploader + Dvosmislen Aplauder + + + + Currently selected uploader is not set up properly! Falling back to imgur + Trenutni uploader nije podešen! Vraćanje na imgur + + + + + + KShare - Failed to save picture + KShare - Neuspešno sačuvana slika + + + diff --git a/uploaders/default/imgplusuploader.cpp b/uploaders/default/imgplusuploader.cpp deleted file mode 100644 index dcb1ce0..0000000 --- a/uploaders/default/imgplusuploader.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "imgplusuploader.hpp" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void ImgplusUploader::doUpload(QByteArray byteArray, QString format) { - QString mime; - if (formats::normalFormatFromName(format) != formats::Normal::None) - mime = formats::normalFormatMIME(formats::normalFormatFromName(format)); - else - mime = formats::recordingFormatMIME(formats::recordingFormatFromName(format)); - QHttpMultiPart *multipart = new QHttpMultiPart(QHttpMultiPart::FormDataType); - QHttpPart imagePart; - imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"file\"; filename=\"image." + format + "\""); - imagePart.setHeader(QNetworkRequest::ContentTypeHeader, mime); - QByteArray *data = new QByteArray; - data->swap(byteArray); - QBuffer *buff = new QBuffer(data); - buff->open(QIODevice::ReadOnly); - imagePart.setBodyDevice(buff); - multipart->append(imagePart); - - QHttpPart keyPart; - keyPart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"api_key\""); - keyPart.setBody(settings::settings().value("imgplus/apikey").toString().toUtf8()); - multipart->append(keyPart); - - ioutils::postMultipartData(QUrl("http://imgpl.us/api/upload"), - { QPair("Accept", "application/json") }, multipart, - [](QByteArray link, QNetworkReply *) { - QApplication::clipboard()->setText(QString::fromUtf8(link)); - if (!link.startsWith("http")) - qCritical() << "Failed to upload! Copied the response to clipboard"; - else - notifications::notify("KShare imgur Uploader ", "Uploaded to ImagePlus!"); - }); -} - -void ImgplusUploader::showSettings() { - QString text = QInputDialog::getText(0, "imgplus API key", "Enter the imgpl.us API key (Found in Settings)", - QLineEdit::Normal, settings::settings().value("imgplus/apikey").toString()); - if (!text.isNull()) settings::settings().setValue("imgplus/apikey", text); -} - -bool ImgplusUploader::validate() { - return settings::settings().value("imgplus/apikey").userType() == QMetaType::QString; -} diff --git a/uploaders/default/imgplusuploader.hpp b/uploaders/default/imgplusuploader.hpp deleted file mode 100644 index a7050c6..0000000 --- a/uploaders/default/imgplusuploader.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef IMGPLUSUPLOADER_HPP -#define IMGPLUSUPLOADER_HPP - -#include - -class ImgplusUploader : public Uploader { -public: - QString name() override { - return "ImagePlus"; - } - QString description() override { - return "imgpl.us uploader"; - } - void doUpload(QByteArray byteArray, QString format) override; - void showSettings() override; - bool validate() override; -}; - -#endif // IMGPLUSUPLOADER_HPP diff --git a/uploaders/uploadersingleton.cpp b/uploaders/uploadersingleton.cpp deleted file mode 100644 index f40f0dc..0000000 --- a/uploaders/uploadersingleton.cpp +++ /dev/null @@ -1,148 +0,0 @@ -#include "uploadersingleton.hpp" -#include "customuploader.hpp" -#include "default/clipboarduploader.hpp" -#include "default/imguruploader.hpp" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -UploaderSingleton::UploaderSingleton() : QObject() { - switch (settings::settings().value("saveLocation", 1).toInt()) { - case 0: - saveDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); - if (QStandardPaths::writableLocation(QStandardPaths::PicturesLocation).isEmpty()) { - qFatal("Cannot determine location for pictures"); - } - break; - case 1: - if (QStandardPaths::writableLocation(QStandardPaths::HomeLocation).isEmpty()) { - qFatal("Cannot determine location of your home directory"); - } - saveDir = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Screenshots"; - break; - default: - qFatal("Invalid config [saveLocation not int or is not in range]"); - break; - } - - if (!saveDir.exists()) { - if (!saveDir.mkpath(".")) { - qFatal("Could not create the path %s to store images in!", saveDir.absolutePath().toLocal8Bit().constData()); - } - } - QDir configDir(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation)); - configDir.mkpath("KShare/uploaders"); - configDir.cd("KShare/uploaders"); - configDir.setNameFilters({ "*.uploader" }); - for (QString file : configDir.entryList()) { - try { - registerUploader(new CustomUploader(configDir.absoluteFilePath(file))); - } catch (std::runtime_error &e) { - qWarning() << e.what(); - errs << e; - } - } - - // UPLOADERS - registerUploader(new ImgurUploader); - registerUploader(new ImgplusUploader); - registerUploader(new ClipboardUploader); - // --------- - - if (settings::settings().contains("uploader")) - uploader = settings::settings().value("uploader").toString(); - else - settings::settings().setValue("uploader", uploader); - if (!uploaders.contains(uploader)) { - uploader = "imgur"; - settings::settings().setValue("uploader", uploader); - } -} - -void UploaderSingleton::registerUploader(Uploader *uploader) { - if (uploaders.contains(uploader->name())) - throw std::runtime_error(("Ambigious uploader " + uploader->name()).toStdString()); - uploaders.insert(uploader->name(), uploader); - emit newUploader(uploader); -} - -void UploaderSingleton::upload(QPixmap pixmap) { - auto u = uploaders.value(uploader); - if (!u->validate()) { - u = uploaders.value("imgur"); - set("imgur"); - qWarning() << "Currently selected uploader is not set up properly! Falling back to imgur"; - } - QString format = settings::settings().value("captureformat", "PNG").toString(); - QFile file(saveDir.absoluteFilePath( - formatter::format(settings::settings().value("fileFormat", "Screenshot %(yyyy-MM-dd HH:mm:ss)date.%ext").toString(), - format.toLower()))); - - if (file.open(QFile::ReadWrite)) { - pixmap.save(&file, format.toLocal8Bit().constData(), settings::settings().value("imageQuality", -1).toInt()); - file.seek(0); - u->doUpload(file.readAll(), format); - } else - notifications::notify("KShare - Failed to save picture", file.errorString(), QSystemTrayIcon::Warning); -} - -void UploaderSingleton::upload(QByteArray img, QString format) { - if (img.isEmpty()) return; - QFile file(saveDir.absoluteFilePath(formatter::format(settings::settings().value("fileFormat").toString(), format.toLower()))); - if (file.open(QFile::WriteOnly)) { - file.write(img); - file.close(); - } - uploaders.value(uploader)->doUpload(img, format); -} - -void UploaderSingleton::upload(QFile &img, QString format) { - if (img.size() <= 0) return; - if (img.rename( - saveDir.absoluteFilePath(formatter::format(settings::settings().value("fileFormat").toString(), format.toLower())))) { - if (img.open(QFile::ReadWrite)) - uploaders.value(uploader)->doUpload(img.readAll(), format); - else - notifications::notify("KShare - Failed to save picture", img.errorString(), QSystemTrayIcon::Warning); - } else - notifications::notify("KShare - Failed to save picture", img.errorString(), QSystemTrayIcon::Warning); -} - -void UploaderSingleton::showSettings() { - uploaders.value(uploader)->showSettings(); -} - -bool UploaderSingleton::validate() { - return uploaders.value(uploader)->validate(); -} - -QList UploaderSingleton::uploaderList() { - return uploaders.values(); -} - -void UploaderSingleton::set(QString uploader) { - if (uploaders.contains(uploader)) { - this->uploader = uploader; - settings::settings().setValue("uploader", uploader); - emit uploaderChanged(uploader); - } -} - -QString UploaderSingleton::selectedUploader() { - return uploader; -} - -QList UploaderSingleton::errors() { - return errs; -} - -QString UploaderSingleton::currentUploader() { - return uploader; -}