уни-патч для линукса и для макоси

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 21
  1. #1
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию уни-патч для линукса и для макоси

    UNI-patch для 64-bit линукса есть давно, называется 1C8_UP.exe (размер 30720 байт).
    Но в случае с 64-bit бэкбейс.so после патча либа становится нерабочей.
    объясню как внедрять UNI-patch в либу бэкбейс для 64-bit линукса и для макоси (она вроде только 64-bit) так, чтобы результат был рабочим.
    рецепт проверялся на версиях от 8.3.8 до 8.3.20
    Последний раз редактировалось HPDX2300; 13.04.2022 в 10:05.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  2. 2 пользователя(ей) сказали cпасибо:

    redhat2020 (04.05.2022), vovashulga (04.05.2022)

  3. #2
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию уни-патч для линукса и для макоси

    UNI-patch для 64-bit линукса есть давно, называется 1C8_UP.exe (размер 30720 байт).
    Но в случае с 64-bit бэкбейс.so после патча либа становится нерабочей.
    Далее я объясню как внедрять UNI-patch в либу бэкбейс для 64-bit линукса и для макоси (она вроде только 64-bit) так, чтобы результат был рабочим, ну или, по крайней мере, чтобы патченная либа была основой для будущих репаков - сейчас в коде линуксовой либы не наблюдается поиск наличия патчей, как это сейчас делается в изделии для винды, но в будущем это вскоре появится и в линуксовых и в макосных изделиях.

    Кроме уни-патча ещё очень необходим "правильный" делик-патч (deLIC-patch), но в этой теме я для краткости изложения про него не буду писать, а то букафф будет оч.много.
    Что нам понадобится? виндовый 1с8_UP.exe (размер 30720 байт) и железнодорожная кувалда весом около 3кг.


    1) Виндовый 1C8_UP.exe можно применить к линуксовой либе бэкбейс и узнать адрес HASP-API-EP - начиная с этого адреса 1C8_UP запишет 64-битный уни-патч размером 0x2A00, последний полезно сохранить в отдельном файле, назовем его up64.bin (в нем, скорее всего, будет дамп ключика для 0x64=100 клиентских лицензий), из него можно легко получить заготовки уни-патчей up05.bin, up10.bin, up20.bin, up50.bin для 5,10,20,50 к.л..

    найдем начало блока "уни-патч-х64":
    Код:
    $ hexdump -C 1c8_UP.exe | grep "51 53 52"
    00002200  51 53 52 57 56 e8 88 13  00 00 00 00 00 00 00 00  |QSRWV...........|
    сохраним блок "уни-патч-х64" в файл:
    Код:
    $ dd if=1c8_UP.exe of=up64.bin bs=1 skip=$((0x2200)) count=$((0x2A00)) conv=notrunc
    10752+0 records in
    10752+0 records out
    10752 bytes (11 kB) copied, 0,0493868 s, 218 kB/s
    сделаем заготовки уни-патчей up05.bin, up10.bin, up20.bin, up50.bin для 5,10,20,50 к.л..
    Код:
    $ cp up64.bin up05.bin
    $ cp up64.bin up10.bin
    $ cp up64.bin up20.bin
    $ cp up64.bin up50.bin
    
    $ printf '\x05' | dd of=up05.bin bs=1 seek=$((0x11F8)) count=1 conv=notrunc
    $ printf '\x05' | dd of=up05.bin bs=1 seek=$((0x137E)) count=1 conv=notrunc
    
    $ printf '\x0A' | dd of=up10.bin bs=1 seek=$((0x11F8)) count=1 conv=notrunc
    $ printf '\x0A' | dd of=up10.bin bs=1 seek=$((0x137E)) count=1 conv=notrunc
    
    $ printf '\x14' | dd of=up20.bin bs=1 seek=$((0x11F8)) count=1 conv=notrunc
    $ printf '\x14' | dd of=up20.bin bs=1 seek=$((0x137E)) count=1 conv=notrunc
    
    $ printf '\x32' | dd of=up50.bin bs=1 seek=$((0x11F8)) count=1 conv=notrunc
    $ printf '\x32' | dd of=up50.bin bs=1 seek=$((0x137E)) count=1 conv=notrunc

    2) найдем в файле backbas.so (или backbas.dylib) HASP_API64_EP поиском цепочки [41 81 78 08 6C 68 73 68]:
    в MC (Midnight Commander) жмем кнопки на файле backbas.so (или backbas.dylib):
    Shift+F3, F4, F7, искать "41 81 78 08 6C 68 73 68" (Hexadecimal)
    смещение смотреть в правом верхнем углу (0x005B7DB5)
    в backbas.so такая цепочка уникальна, в backbas.dylib их две, берите первую.

    калькулятором вычисляем (в режиме Hexadecimal):
    для Linux x64 вычитать 0х75: HASP_API64_EP = 5B7DB5 - 75 = 5B7D40 (значения для 20-1363.lnx64)
    для MacOSX вычитать 0х4A: HASP_API64_EP = 58A23A - 4A = 58A1F0 (значения для 21-1140.macos)


    3) запишем блок "уни-патч-х64" в файл либы бэкбейс:

    место записи "уни-патч-х64" вычисляется на калькуляторе так: HASP_API64_EP - 0x2A00
    т.е. надо записать уни-патч-х64 (его размер 0x2A00), сдвинув его к началу файла, так, чтобы не перезаписалась функция, которая начинается с точки HASP_API64_EP (её начало мы ниже подрихтуем)

    для Linux x64 (пример для 20-1363.lnx64):
    HASP_API64_EP - 2A00 = 5B7D40 - 2A00 = 5B5340
    Код:
    $ dd if=up64.bin of=backbas.so bs=1 seek=$((0x5B5340)) count=$((0x2A00)) conv=notrunc
    10752+0 records in
    10752+0 records out
    10752 bytes (11 kB) copied, 0,0334565 s, 321 kB/s


    для MacOSX (пример для 21-1140.macos):
    HASP_API64_EP - 2A00 = 58A1F0 - 2A00 = 5877F0
    Код:
    $ dd if=up64.bin of=backbas.dylib.2 bs=1 seek=$((0x5877F0)) count=$((0x2A00)) conv=notrunc
    10752+0 records in
    10752+0 records out
    10752 bytes (11 kB) copied, 0,0329808 s, 326 kB/s



    4) СПОСОБЫ ПЕРЕДАЧИ АРГУМЕНТОВ ПРИ ВЫЗОВЕ ФУНКЦИЙ:
    В Windows x64 метод передачи всех параметров немного похож на fastcall.
    Первые 4 аргумента записываются в регистры RCX,RDX,R8,R9, а остальные — в стек.
    Метод передачи аргументов в Linux x64 и в MacOSX почти такой же, как и в Windows, но используются 6 регистров (RDI,RSI,RDX,RCX,R8,R9) вместо 4.
    Код уни-патча компилировался в Windows x64, а работать будет в Linux x64 и в MacOSX - 9 параметров для функции HASP_API64_EP оформляются в structure и передаются указателем на неё. Линуксовый и макосный код передает указатель в регистре RDI, а виндовый код уни-патча ожидает его в регистре RCX.
    Вот так изменим начало фунции HASP_API64_EP (в Linux x64 и в MacOSX):
    Код:
    57               push rdi
    59               pop rcx      т.е. значение регистра rdi записывается в регистр rcx
    E9 F9 D5 FF FF   jmp в начало блока уни-патч-х64 т.е. jmp -10759
    для Linux x64 (пример для 20-1363.lnx64) запись по адресу HASP_API64_EP:
    Код:
    $ printf '\x57\x59\xE9\xF9\xD5\xFF\xFF' | dd of=backbas.so bs=1 seek=$((0x5B7D40)) count=7 conv=notrunc
    7+0 records in
    7+0 records out
    7 bytes (7 B) copied, 0,000178756 s, 39,2 kB/s


    для MacOSX (пример для 21-1140.macos) запись по адресу HASP_API64_EP:
    Код:
    $ printf '\x57\x59\xE9\xF9\xD5\xFF\xFF' | dd of=backbas.dylib bs=1 seek=$((0x58A1F0)) count=7 conv=notrunc
    7+0 records in
    7+0 records out
    7 bytes (7 B) copied, 0,000166049 s, 42,2 kB/s



    5) Код уни-патча скомпилирован так, что он не теряет работоспособность при изменении адреса его загрузки в память. Именно поэтому его можно перемещать в секции .text
    А ещё код уни-патча использует свои локальные переменные и будет писать данные прямо в памяти своего кода.
    Если не изменить аттрибуты памяти, в которой расположен код уни-патча, с R-X (можно читать и исполнять) на RWX (можно читать, писать и исполнять), то при первом же выполнении кода уни-патча произойдет крах - ОС прихлопнет процесс при попытке произвести запись в память, в которой это не допускается.
    Осталось совсем чуть-чуть - надо изменить в заголовке либы backbas аттрибуты секции .text с R-X на RWX.
    Чтобы понять "что, где и как будем менять в заголовке файла либы?" применим 010editor т.к. он научен понимать либы линукса и макоси. Можно обойтись без 010editor, главное - решить задачу "изменить аттрибуты секции .text с R-X на RWX".

    для Linux x64 (пример для 20-1363.lnx64) запись по адресу 0x7С:

    Код:
    $ printf '\x07' | dd of=backbas.so bs=1 seek=$((0x7С)) count=1 conv=notrunc
    1+0 records in
    1+0 records out
    1 byte (1 B) copied, 0,00011292 s, 8,9 kB/s


    для MacOSX (пример для 21-1140.macos) запись по адресу 0x5C:

    Код:
    $ printf '\x07' | dd of=backbas.dylib bs=1 seek=$((0x5C)) count=1 conv=notrunc
    1+0 records in
    1+0 records out
    1 byte (1 B) copied, 0,000161868 s, 6,2 kB/s
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  4. 7 пользователя(ей) сказали cпасибо:

    asotel (11.06.2022), DontTrustMexD (24.04.2022), KennySP00 (18.05.2022), morbidsr (16.04.2022), Nekii (18.04.2022), redhat2020 (04.05.2022), vovashulga (04.05.2022)

  5. #3
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    возможно, получится нерабочее изделие и будет падать (особенно в макоси). пишите - разберемся
    для примера:
    https://www.upload.ee/files/14046944...-v20-1363.html
    Последний раз редактировалось HPDX2300; 13.04.2022 в 10:16.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  6. 3 пользователя(ей) сказали cпасибо:

    KennySP00 (18.05.2022), redhat2020 (04.05.2022), vovashulga (04.05.2022)

  7. #4
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    тестовая версия 21-1197.linux-x64 "взлетела" с унипатчем:
    Код:
    $ dd if=up64.bin of=backbas.so bs=1 seek=$((0x5ED5F0)) count=$((0x2A00)) conv=notrunc
    10752+0 records in
    10752+0 records out
    10752 bytes (11 kB) copied, 0,0313987 s, 342 kB/s
    
    $ printf '\x57\x59\xE9\xF9\xD5\xFF\xFF' | dd of=backbas.so bs=1 seek=$((0x5EFFF0)) count=7 conv=notrunc
    7+0 records in
    7+0 records out
    7 bytes (7 B) copied, 0,000137062 s, 51,1 kB/s
    
    $ printf '\x07' | dd of=backbas.so bs=1 seek=$((0x7c)) count=1 conv=notrunc
    1+0 records in
    1+0 records out
    1 byte (1 B) copied, 0,000142588 s, 7,0 kB/s
    погоняем, понаблюдаем
    Последний раз редактировалось HPDX2300; 13.04.2022 в 17:11.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  8. 3 пользователя(ей) сказали cпасибо:

    KennySP00 (18.05.2022), redhat2020 (04.05.2022), vovashulga (04.05.2022)

  9. #5
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    Если у кого нет 1с8_UP.exe, то берите любой репак для windows-х64 и в нём есть backbas.dll, содержащая унипатч.
    унипатч начинается цепочкой байтов: 51 53 52 57 56 e8 88 13
    если не установлен hexdump, то и не нужен - во 2) пункте объяснял как в MC (Midnight Commander) искать цепочку байтов
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  10. 4 пользователя(ей) сказали cпасибо:

    KennySP00 (18.05.2022), Mordens (21.05.2022), redhat2020 (04.05.2022), vovashulga (04.05.2022)

  11. #6
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    В изделии для макоси ver.21-1140 исполняемые файлы имеют цифр.подпись (смотреть "man codesign"), поэтому после патча либы бэкбейс изделие не "взлетит" без дополнительных "ударов кувалдой".
    Изделие версии 8-2137 не имеет цифр.подпись и потому "взлетает" после патча либы бэкбейс унипатчем.
    Мне лениво выяснять ответ на вопрос "с какой версии и релиза началось подписывание исполняемых файлов?" - я не фанат макоси.
    Код:
    $ codesign -d -v  /opt/1cv8/8.3.21.1140/backbas.dylib
    Executable=/opt/1cv8/8.3.21.1140/backbas.dylib
    Identifier=backbas
    Format=Mach-O thin (x86_64)
    CodeDirectory v=20500 size=86707 flags=0x10000(runtime) hashes=2701+5 location=embedded
    Signature size=8924
    Timestamp=Dec 28, 2021 at 2:56:58 PM
    Info.plist=not bound
    TeamIdentifier=XS78KJN5SE
    Runtime Version=10.12.0
    Sealed Resources=none
    Internal requirements count=1 size=168
    
    
    $ codesign -d -vvv  /opt/1cv8/8.3.21.1140/backbas.dylib
    Executable=/opt/1cv8/8.3.21.1140/backbas.dylib
    Identifier=backbas
    Format=Mach-O thin (x86_64)
    CodeDirectory v=20500 size=86707 flags=0x10000(runtime) hashes=2701+5 location=embedded
    Hash type=sha256 size=32
    CandidateCDHash sha256=9d44b6d1c10d22018466d5b3dd66ae8d528c5c5e
    Hash choices=sha256
    CDHash=9d44b6d1c10d22018466d5b3dd66ae8d528c5c5e
    Signature size=8924
    Authority=Developer ID Application: 1C-SOFT, OOO (XS78KJN5SE)
    Authority=Developer ID Certification Authority
    Authority=Apple Root CA
    Timestamp=Dec 28, 2021 at 2:56:58 PM
    Info.plist=not bound
    TeamIdentifier=XS78KJN5SE
    Runtime Version=10.12.0
    Sealed Resources=none
    Internal requirements count=1 size=168
    Если будет у меня время и настроение - найду способ отломить ц.п. и расскажу.

    Кстати, уни-патч в либе для макоси можно сдвигать от точки HASP_API64_EP в направлении к концу файла на 2 байта (код HASP_API64 для макоси и код HASP_API64 для линукса различаются и по нумерации версии и по содержанию)
    т.е. либу для макоси вот так мона патчить:
    Код:
    # значения для 21-1140.macos
    HASP_API64_EP=0x58A1F0
    dd if=up64.bin of=backbas.dylib bs=1 seek=$(($HASP_API64_EP + 2)) count=$((0x2A00)) conv=notrunc
    printf '\x57\x59' | dd of=backbas.dylib bs=1 seek=$(($HASP_API64_EP)) count=2 conv=notrunc
    printf '\x07' | dd of=backbas.dylib bs=1 seek=$((0x5C)) count=1 conv=notrunc
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  12. 5 пользователя(ей) сказали cпасибо:

    KennySP00 (18.05.2022), Mordens (21.05.2022), Nekii (23.04.2022), redhat2020 (04.05.2022), vovashulga (04.05.2022)

  13. #7
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    Цитата Сообщение от HPDX2300 Посмотреть сообщение
    ...найду способ отломить ц.п. и расскажу...
    удаление ц.п.: codesign --remove-signature
    Код:
    $ sudo chown -R UID:GID /opt/1cv8/8.3.21.1140
    $ codesign --remove-signature  /opt/1cv8/8.3.21.1140/1cv8
    $ codesign --remove-signature  /opt/1cv8/8.3.21.1140/1cv8c
    $ codesign --remove-signature  /opt/1cv8/8.3.21.1140/backbas.dylib
    ... так с каждым исполняемым файлом
    сказанного достаточно, тему закрываю.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  14. 6 пользователя(ей) сказали cпасибо:

    KennySP00 (18.05.2022), Mordens (21.05.2022), Nekii (23.04.2022), Pependos (03.05.2022), redhat2020 (04.05.2022), vovashulga (04.05.2022)

  15. #8
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    "эндоскоп" (для заглядывания под "капот"), онже отладчик и дизасемблер IDA:
    бесплатная IDA 7.7 для Linux на сервере upload.ee
    Код:
    $ sha1sum -b idafree77_linux.run
    42038657317ebea44954b484a236e7f8cbc7d2fa  idafree77_linux.run
    бесплатная IDA 7.7 для Windows-x64 на сервере upload.ee
    для проверки SHA1-checksums:
    Код:
    $ sha1sum -b idafree77_windows.exe
    1f815be20a119cc835e7678a32032ab130834d49  idafree77_windows.exe
    бесплатная IDA 7.7 для MacOSX (macOS не старше 10.14)
    Код:
    $ sha1sum -b idafree77_mac.app.zip 
    195ced3615ea9975953271a68a4b58a8b754f67e idafree77_mac.app.zip
    бесплатная IDA 7.6 для MacOSX, работает на HighSierra (macOS 10.13.6)
    Код:
    $ sha1sum -b idafree76_mac.app.zip 
    95cd7b918bb2aa47fb10d05c606609a0e91de285 *idafree76_mac.app.zip
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  16. 4 пользователя(ей) сказали cпасибо:

    KennySP00 (18.05.2022), Mordens (21.05.2022), redhat2020 (18.05.2022), vovashulga (18.05.2022)

  17. #9
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    В посте #2 в пункте 5) была опечатка в коде команды dd - "seek=$((0x7С))" - вместо латинской написана русская буква "С".
    Те, кто копи-пастят код команды и не анализируют её выхлоп, получают в результате нерабочую либу.
    Всё надо делать осознанно, а не механически.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  18. 2 пользователя(ей) сказали cпасибо:

    redhat2020 (22.05.2022), vovashulga (22.05.2022)

  19. #10
    Спец
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    375
    Сказал(а) спасибо
    65
    Поблагодарили 917 раз(а) в 205 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    патчер для линукса-x64.
    код ниже сохранить в файл unipatch.py
    запускать так (либа бэкбейс должна быть рядом - в том же каталоге):
    python unipatch.py
    проверялось на питоне 2.7.5
    Код:
    import os, glob, mmap
    
    pattern_hex = '\x41\x81\x78\x08\x6C\x68\x73\x68'
    unipatch_hex = '\
    \x51\x53\x52\x57\x56\xe8\x88\x13\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\
    \x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\
    \x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\
    \x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\
    \x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\xfa\x10\x00\x00\x00\x00\
    \x00\x00\x06\x11\x00\x00\x00\x00\x00\x00\xc4\x10\x00\x00\x00\x00\
    \x00\x00\xc8\x10\x00\x00\x00\x00\x00\x00\xcc\x10\x00\x00\x00\x00\
    \x00\x00\xd0\x10\x00\x00\x00\x00\x00\x00\xd4\x10\x00\x00\x00\x00\
    \x00\x00\xd5\x10\x00\x00\x00\x00\x00\x00\xd6\x10\x00\x00\x00\x00\
    \x00\x00\x1e\x11\x00\x00\x00\x00\x00\x00\x0e\x13\x00\x00\x00\x00\
    \x00\x00\x1a\x13\x00\x00\x00\x00\x00\x00\x7a\x23\x25\x41\x71\xcf\
    \x1d\x28\x01\x00\x00\x00\x01\x00\x00\x00\xfb\x13\x15\xea\x8f\xea\
    \x73\xea\xeb\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xd0\xbc\x08\x3f\x28\
    \x30\x02\xe5\x6f\x3e\x39\xd4\x76\x9f\x6f\xd4\x76\x21\x57\x02\x41\
    \xc3\xcc\xd5\xa7\x4b\x4c\xc2\x81\x64\x84\x55\x76\x41\xe1\x5e\x2c\
    \x18\xa7\x6f\xf2\x08\xe1\x40\xa0\x4e\x94\xa7\x4a\xb5\x41\x53\x6d\
    \x48\xc3\x6d\xe4\xa4\xec\xc8\x9c\x27\x7d\xe0\x79\x51\xb1\x25\xc6\
    \xa1\x69\x14\xfb\x03\x7b\xc5\x1b\xe3\xef\xa3\x1e\x04\xb5\xa5\xe1\
    \x4e\xc8\x5d\x28\x99\x30\x10\x39\x2f\x8d\xb3\xe0\x95\xf0\x36\x91\
    \x56\x46\xc4\x75\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\x57\x42\x50\x54\x01\x00\x00\x00\x70\x00\x00\x00\
    \x00\x00\x21\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\
    \x00\x01\x02\x4a\x1f\x01\x18\x02\x08\x01\x14\x2c\x33\x00\xcb\x70\
    \x6d\x3b\xd6\xc5\x93\x1b\x0a\x00\x00\x00\x04\x00\x00\x00\xdb\x30\
    \x9a\x21\x2c\x25\xde\x65\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    \x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x08\
    \x97\xf2\x84\xcf\xdc\x4e\x1e\xbb\x55\x6e\x19\x91\x2d\x4a\x74\xa3\
    \x33\x7d\x33\x69\x30\xe3\x5c\x64\xe5\xd7\x5b\x51\xc3\xc4\x9d\x0f\
    \xf7\xd5\xf6\xa4\x34\x0e\xe5\xe5\x4b\x63\x44\x2e\x80\x73\x06\xf8\
    \x6a\xd1\x37\xba\x0f\x9a\xfd\x74\x7b\x5c\x89\xae\x3b\xac\x18\xbb\
    \x71\x8a\x9b\x85\x7c\x13\x1d\x9f\xbf\x55\x82\x70\x6d\x87\xda\x18\
    \x0a\xbd\xc4\x22\x05\xa5\x28\xd4\x54\xb2\xbc\x38\xf1\xf2\xe6\xf4\
    \x54\x09\x42\x4c\xb2\xe1\x1d\xab\x64\x00\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    \xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x64\x00\
    \x00\x00\xfe\xff\x00\x01\x02\x4a\x1f\x01\x04\x07\x08\x01\x10\x34\
    \x07\x00\x5e\x48\x89\xc9\x48\x31\xc0\x48\x31\xd2\x8a\x41\x16\x89\
    \x06\x48\x89\xf3\x48\x83\xc6\x10\x48\x83\xf8\x01\x75\x0d\xc6\x41\
    \x28\x01\xc6\x41\x30\x00\xe9\x32\x02\x00\x00\x66\x8b\x51\x20\xc1\
    \xe2\x10\x66\x8b\x51\x24\x48\x8b\x3e\x3b\x14\x3e\x75\x02\x74\x10\
    \x48\x83\xc6\x50\x48\x8b\x3e\x3b\x14\x3e\x0f\x85\x0d\x02\x00\x00\
    \x89\x53\x04\x48\x89\x73\x08\x48\x83\xf8\x03\x74\x06\x48\x83\xf8\
    \x2c\x75\x21\x48\x03\x76\x38\x48\x31\xc0\x8b\x41\x28\x48\xd1\xe0\
    \x48\x0f\xb7\x04\x06\x89\x41\x2c\xc7\x41\x30\x00\x00\x00\x00\xe9\
    \xd9\x01\x00\x00\x48\x83\xf8\x04\x74\x06\x48\x83\xf8\x2d\x75\x21\
    \x48\x03\x76\x38\x48\x31\xc0\x8b\x41\x28\x66\x8b\x79\x2c\x48\xd1\
    \xe0\x66\x89\x3c\x06\xc7\x41\x30\x00\x00\x00\x00\xe9\xac\x01\x00\
    \x00\x48\x83\xf8\x05\x75\x2a\x48\x31\xc0\x48\x8b\x56\x18\x8b\x04\
    \x16\x89\x41\x28\x48\x8b\x56\x10\x8b\x04\x16\x89\x41\x2c\xc7\x41\
    \x30\x66\x00\x00\x00\xc7\x41\x34\x54\x64\x00\x00\xe9\x7c\x01\x00\
    \x00\x48\x83\xf8\x06\x74\x05\x83\xf8\x2e\x75\x22\x48\x03\x76\x08\
    \x48\x31\xc0\x8b\x06\x48\x0f\xb7\xf8\xc1\xe8\x10\x89\x79\x28\x89\
    \x41\x2c\xc7\x41\x30\x00\x00\x00\x00\xe9\x4f\x01\x00\x00\x48\x83\
    \xf8\x28\x75\x1a\xc7\x41\x28\x00\x00\x00\x00\xc7\x41\x2c\x00\x00\
    \x00\x00\xc7\x41\x30\x00\x00\x00\x00\xe9\x2f\x01\x00\x00\x48\x83\
    \xf8\x2a\x75\x0c\xc7\x41\x30\x00\x00\x00\x00\xe9\x1d\x01\x00\x00\
    \x48\x83\xf8\x2b\x75\x0c\xc7\x41\x30\x00\x00\x00\x00\xe9\x0b\x01\
    \x00\x00\x48\x83\xf8\x30\x75\x05\xe9\x00\x01\x00\x00\x48\x83\xf8\
    \x32\x74\x06\x48\x83\xf8\x34\x75\x32\x48\x03\x76\x38\x48\x31\xc0\
    \x48\x8b\x79\x40\x8b\x41\x28\x48\xd1\xe0\x48\x01\xc6\x48\x89\xc8\
    \x48\x31\xc9\x8b\x48\x2c\x9c\xfc\xf3\x66\xa5\x9d\x48\x89\xc1\xc7\
    \x41\x30\x00\x00\x00\x00\xe9\xc2\x00\x00\x00\x83\xf8\x33\x74\x06\
    \x48\x83\xf8\x33\x75\x35\x48\x03\x76\x38\x48\x31\xc0\x48\x8b\x79\
    \x40\x8b\x41\x28\x48\xd1\xe0\x48\x01\xc6\x48\x89\xc8\x48\x31\xc9\
    \x8b\x48\x2c\x48\x87\xf7\x9c\xfc\xf3\x66\xa5\x9d\x48\x89\xc1\xc7\
    \x41\x30\x00\x00\x00\x00\xe9\x82\x00\x00\x00\x83\xf8\x3c\x74\x05\
    \x83\xf8\x58\x75\x31\x83\x79\x2c\x08\x72\x72\x51\x48\x81\xec\x00\
    \x01\x00\x00\x49\x89\xe0\x48\x31\xd2\x8b\x51\x2c\x48\x8b\x49\x40\
    \xe8\x85\x0b\x00\x00\x48\x81\xc4\x00\x01\x00\x00\x59\xc7\x41\x30\
    \x00\x00\x00\x00\xeb\x47\x83\xf8\x3d\x74\x05\x83\xf8\x59\x75\x31\
    \x83\x79\x2c\x08\x72\x37\x51\x48\x31\xd2\x8b\x51\x2c\x48\x8b\x49\
    \x40\x48\x81\xec\x00\x01\x00\x00\x49\x89\xe0\xe8\x34\x10\x00\x00\
    \x48\x81\xc4\x00\x01\x00\x00\x59\xc7\x41\x30\x00\x00\x00\x00\xeb\
    \x0c\x83\xf8\x55\x75\x02\xeb\x05\xb8\x78\x56\x34\x12\x5e\x5f\x5a\
    \x5b\x59\xc3\x56\x57\x48\x89\xd6\x48\x89\xcf\x31\xc9\x44\x89\xc1\
    \xf3\xa4\x5f\x5e\xc3\x48\x89\x54\x24\x10\x89\x4c\x24\x08\x48\x83\
    \xec\x18\x8b\x44\x24\x20\x83\xe0\x1f\x89\x44\x24\x20\x8b\x44\x24\
    \x20\xc1\xe8\x02\x25\xfe\x00\x00\x00\x48\x8b\x4c\x24\x28\x0f\xb6\
    \x44\x01\x02\xb9\x1f\x00\x00\x00\x2b\x4c\x24\x20\x83\xe1\x07\xd3\
    \xf8\x83\xe0\x01\x88\x44\x24\x04\x0f\xb6\x44\x24\x04\x83\xf0\x01\
    \x8b\x4c\x24\x20\xc1\xe9\x03\x21\xc8\x8b\x4c\x24\x20\x31\xc1\x89\
    \xc8\x8b\x4c\x24\x20\xc1\xe9\x04\x31\xc8\x89\x04\x24\x48\x8b\x44\
    \x24\x28\x8b\x40\x0f\xc1\xe8\x0a\x8b\x0c\x24\x31\xc1\x89\xc8\x89\
    \x04\x24\x48\x8b\x44\x24\x28\x8b\x40\x0f\xc1\xe8\x07\x8b\x0c\x24\
    \x31\xc1\x89\xc8\x89\x04\x24\x8b\x44\x24\x20\x83\xe0\x02\x85\xc0\
    \x74\x15\x48\x8b\x44\x24\x28\x8b\x40\x0f\xc1\xe8\x05\x8b\x0c\x24\
    \x31\xc1\x89\xc8\x89\x04\x24\x8b\x44\x24\x20\x83\xe0\x04\x85\xc0\
    \x74\x15\x48\x8b\x44\x24\x28\x8b\x40\x0f\xc1\xe8\x08\x8b\x0c\x24\
    \x31\xc1\x89\xc8\x89\x04\x24\x8b\x04\x24\x83\xe0\x01\x89\x04\x24\
    \x8b\x44\x24\x20\x83\xe0\x01\xc1\xe0\x02\x48\x8b\x4c\x24\x28\x8b\
    \x49\x0f\x31\xc1\x89\xc8\x48\x8b\x4c\x24\x28\x89\x41\x0f\x48\x8b\
    \x44\x24\x28\x8b\x40\x0f\xd1\xe0\x48\x8b\x4c\x24\x28\x89\x41\x0f\
    \x48\x8b\x44\x24\x28\x8b\x0c\x24\x8b\x40\x0f\x09\xc8\x48\x8b\x4c\
    \x24\x28\x89\x41\x0f\x48\x8b\x44\x24\x28\x8b\x40\x0f\xc1\xe8\x0b\
    \x0f\xb6\x4c\x24\x04\x31\xc8\x83\xe0\x01\x48\x83\xc4\x18\xc3\x48\
    \x89\x54\x24\x10\x48\x89\x4c\x24\x08\x48\x83\xec\x48\xc7\x44\x24\
    \x30\x1f\x00\x00\x00\x48\x8b\x44\x24\x58\x8b\x40\x14\x89\x44\x24\
    \x20\x8b\x44\x24\x20\x35\x89\x19\x08\x01\x89\x44\x24\x20\x8b\x44\
    \x24\x20\xc1\xe8\x0c\x89\x44\x24\x20\xc7\x44\x24\x24\x0a\x00\x00\
    \x00\xeb\x0a\x8b\x44\x24\x24\xff\xc8\x89\x44\x24\x24\x83\x7c\x24\
    \x24\x05\x76\x69\x0f\xb6\x44\x24\x20\x83\xe0\x0f\x89\x44\x24\x2c\
    \x83\x7c\x24\x2c\x00\x74\x0a\xc7\x44\x24\x38\x01\x00\x00\x00\xeb\
    \x08\xc7\x44\x24\x38\x00\x00\x00\x00\x83\x7c\x24\x2c\x0b\x73\x0a\
    \xc7\x44\x24\x3c\x01\x00\x00\x00\xeb\x08\xc7\x44\x24\x3c\x00\x00\
    \x00\x00\x8b\x44\x24\x3c\x8b\x4c\x24\x38\x21\xc1\x89\xc8\x8b\x4c\
    \x24\x24\xd3\xe0\x8b\x4c\x24\x30\x09\xc1\x89\xc8\x89\x44\x24\x30\
    \x8b\x44\x24\x20\xc1\xe8\x04\x89\x44\x24\x20\xeb\x86\x8b\x44\x24\
    \x30\xc1\xe8\x06\x48\x8b\x4c\x24\x58\x88\x41\x13\x48\x8b\x44\x24\
    \x58\x0f\xb6\x40\x13\xc1\xe0\x06\x83\xc8\x1f\x48\x8b\x4c\x24\x58\
    \x89\x41\x0f\xc7\x44\x24\x24\x01\x00\x00\x00\xc7\x44\x24\x28\x00\
    \x00\x00\x00\xeb\x0a\x8b\x44\x24\x24\xff\xc0\x89\x44\x24\x24\x83\
    \x7c\x24\x24\x27\x77\x6a\x8b\x44\x24\x28\x48\x8b\x4c\x24\x50\x0f\
    \xb6\x04\x01\x48\x8b\x54\x24\x58\x89\xc1\xe8\xa6\xfd\xff\xff\x89\
    \x44\x24\x34\x48\x8b\x44\x24\x50\x8b\x00\x83\xe0\x01\xd1\xe0\x0b\
    \x44\x24\x34\x89\x44\x24\x28\x48\x8b\x44\x24\x50\x8b\x00\x83\xe0\
    \x01\x3b\x44\x24\x34\x75\x12\x48\x8b\x44\x24\x50\x8b\x00\xd1\xe8\
    \x48\x8b\x4c\x24\x50\x89\x01\xeb\x15\x48\x8b\x44\x24\x50\x8b\x00\
    \xd1\xe8\x35\x62\x00\x50\x80\x48\x8b\x4c\x24\x50\x89\x01\xeb\x85\
    \x48\x83\xc4\x48\xc3\x48\x89\x4c\x24\x08\x48\x83\xec\x48\x48\x8b\
    \x44\x24\x50\x0f\xb6\x40\x01\xc1\xf8\x05\x83\xe0\x01\x48\x8b\x4c\
    \x24\x50\x88\x41\x0a\x48\x8b\x44\x24\x50\x0f\xb6\x40\x02\xc1\xf8\
    \x07\x83\xe0\x01\x83\xf0\x01\x88\x44\x24\x24\x0f\xb6\x44\x24\x24\
    \x85\xc0\x74\x0e\x48\x8b\x44\x24\x50\x0f\xb6\x00\x89\x44\x24\x3c\
    \xeb\x0e\x48\x8b\x44\x24\x50\x0f\xb6\x00\xf7\xd0\x89\x44\x24\x3c\
    \x0f\xb6\x44\x24\x3c\x88\x44\x24\x26\xc7\x44\x24\x28\x00\x00\x00\
    \x00\x48\x8b\x44\x24\x50\x0f\xb6\x40\x01\x83\xe0\x1f\x88\x44\x24\
    \x25\xc7\x44\x24\x2c\x00\x00\x00\x00\xeb\x0a\x8b\x44\x24\x2c\xff\
    \xc0\x89\x44\x24\x2c\x83\x7c\x24\x2c\x04\x7d\x3d\x0f\xb6\x44\x24\
    \x28\xc0\xe0\x02\x88\x44\x24\x28\x0f\xb6\x44\x24\x25\x83\xe0\x01\
    \x0f\xb6\x4c\x24\x25\x83\xf1\x01\x83\xe1\x01\xd1\xe1\x09\xc8\x0f\
    \xb6\x4c\x24\x28\x09\xc1\x89\xc8\x88\x44\x24\x28\x0f\xb6\x44\x24\
    \x25\xd0\xe8\x88\x44\x24\x25\xeb\xb2\x0f\xb6\x44\x24\x28\x35\xff\
    \x00\x00\x00\x88\x44\x24\x2a\x0f\xb6\x44\x24\x28\x88\x44\x24\x29\
    \x0f\xb6\x44\x24\x2a\x88\x44\x24\x2b\xc7\x44\x24\x2c\x00\x00\x00\
    \x00\xeb\x0a\x8b\x44\x24\x2c\xff\xc0\x89\x44\x24\x2c\x83\x7c\x24\
    \x2c\x08\x0f\x8d\x9f\x00\x00\x00\x8b\x44\x24\x2c\x83\xc0\x08\xc1\
    \xf8\x02\x25\xfe\x00\x00\x00\x48\x98\x48\x8b\x4c\x24\x50\x0f\xb6\
    \x44\x01\x02\x8b\x4c\x24\x2c\x83\xc1\x08\xba\x1f\x00\x00\x00\x29\
    \xca\x89\xd1\x83\xe1\x07\xd3\xf8\x83\xe0\x01\x0f\xb6\x4c\x24\x25\
    \x31\xc8\x8b\x4c\x24\x2c\xd3\xe0\x0f\xb6\x4c\x24\x29\x31\xc1\x89\
    \xc8\x88\x44\x24\x29\x8b\x44\x24\x2c\x83\xc0\x18\xc1\xf8\x02\x25\
    \xfe\x00\x00\x00\x48\x98\x48\x8b\x4c\x24\x50\x0f\xb6\x44\x01\x02\
    \x8b\x4c\x24\x2c\x83\xc1\x18\xba\x1f\x00\x00\x00\x29\xca\x89\xd1\
    \x83\xe1\x07\xd3\xf8\x83\xe0\x01\x0f\xb6\x4c\x24\x25\x31\xc8\x8b\
    \x4c\x24\x2c\xd3\xe0\x0f\xb6\x4c\x24\x2b\x31\xc1\x89\xc8\x88\x44\
    \x24\x2b\xe9\x4c\xff\xff\xff\x48\x8b\x44\x24\x50\xc7\x40\x0b\x00\
    \x00\x00\x00\xc7\x44\x24\x20\x00\x00\x00\x00\xc7\x44\x24\x30\x1f\
    \x00\x00\x00\xeb\x0a\x8b\x44\x24\x30\xff\xc8\x89\x44\x24\x30\x83\
    \x7c\x24\x30\x00\x0f\x8c\xa4\x00\x00\x00\x0f\xb6\x44\x24\x26\xc1\
    \xe0\x03\x48\x8b\x4c\x24\x50\x89\x41\x0f\xc7\x44\x24\x38\x00\x00\
    \x00\x00\xeb\x0a\x8b\x44\x24\x38\xff\xc0\x89\x44\x24\x38\x83\x7c\
    \x24\x38\x0c\x7d\x14\x48\x8b\x54\x24\x50\x8b\x4c\x24\x30\xe8\xa6\
    \x00\x00\x00\x88\x44\x24\x34\xeb\xdb\x8b\x44\x24\x20\xd1\xe0\x89\
    \x44\x24\x20\x8b\x44\x24\x30\xc1\xf8\x02\x25\xfe\x00\x00\x00\x48\
    \x98\x48\x8b\x4c\x24\x50\x0f\xb6\x44\x01\x02\xb9\x1f\x00\x00\x00\
    \x2b\x4c\x24\x30\x83\xe1\x07\xd3\xf8\x83\xe0\x01\x8b\x4c\x24\x30\
    \x83\xe1\x01\x31\xc8\x8b\x4c\x24\x30\x8b\x54\x24\x28\xd3\xea\x89\
    \xd1\x83\xe1\x01\x31\xc8\x0f\xb6\x4c\x24\x34\x31\xc8\x8b\x4c\x24\
    \x20\x09\xc1\x89\xc8\x89\x44\x24\x20\xe9\x47\xff\xff\xff\x48\x8b\
    \x44\x24\x50\x8b\x4c\x24\x20\x89\x48\x0b\x0f\xb6\x44\x24\x26\xc1\
    \xe0\x03\x0f\xb6\x4c\x24\x24\xc1\xe1\x02\x09\xc8\x0f\xb6\x4c\x24\
    \x24\xd1\xe1\x09\xc8\x0f\xb6\x4c\x24\x24\x09\xc8\x48\x8b\x4c\x24\
    \x50\x89\x41\x0f\x48\x83\xc4\x48\xc3\x48\x89\x54\x24\x10\x89\x4c\
    \x24\x08\x48\x83\xec\x28\x8b\x44\x24\x30\x83\xe0\x1f\x89\x44\x24\
    \x30\x8b\x44\x24\x30\xd1\xe8\x83\xe0\x03\xe8\x10\x00\x00\x00\x80\
    \x04\x00\x00\xa0\x04\x00\x00\x80\x05\x00\x00\xa0\x05\x00\x00\x59\
    \x8b\x04\x81\x89\x44\x24\x04\xc7\x44\x24\x08\x00\x00\x00\x00\xc7\
    \x44\x24\x0c\x00\x00\x00\x00\xeb\x0a\x8b\x44\x24\x0c\xff\xc0\x89\
    \x44\x24\x0c\x83\x7c\x24\x0c\x0c\x7d\x3d\x8b\x44\x24\x0c\x0f\xb6\
    \xc8\x8b\x44\x24\x04\xd3\xe8\x83\xe0\x01\x85\xc0\x74\x27\x8b\x44\
    \x24\x0c\x48\x8b\x4c\x24\x38\x48\x89\x4c\x24\x10\x0f\xb6\xc8\x48\
    \x8b\x44\x24\x10\x8b\x40\x0f\xd3\xe8\x8b\x4c\x24\x08\x31\xc1\x89\
    \xc8\x89\x44\x24\x08\xeb\xb2\x8b\x44\x24\x30\x83\xe0\x01\xc1\xe0\
    \x02\x48\x8b\x4c\x24\x38\x8b\x49\x0f\x31\xc1\x89\xc8\x48\x8b\x4c\
    \x24\x38\x89\x41\x0f\x8b\x44\x24\x30\xc1\xe8\x02\x25\xfe\x00\x00\
    \x00\x48\x8b\x4c\x24\x38\x0f\xb6\x44\x01\x02\xb9\x1f\x00\x00\x00\
    \x2b\x4c\x24\x30\x83\xe1\x07\xd3\xf8\x83\xe0\x01\x48\x8b\x4c\x24\
    \x38\x0f\xb6\x49\x0a\x31\xc8\x88\x04\x24\x48\x8b\x44\x24\x38\x8b\
    \x40\x0f\xd1\xe0\x0f\xb6\x0c\x24\x8b\x54\x24\x08\x31\xca\x89\xd1\
    \x83\xe1\x01\x09\xc8\x48\x8b\x4c\x24\x38\x89\x41\x0f\x8b\x44\x24\
    \x30\x48\x8b\x4c\x24\x38\x48\x89\x4c\x24\x18\x0f\xb6\xc8\x48\x8b\
    \x44\x24\x18\x8b\x40\x0b\xd3\xe8\x83\xe0\x01\x48\x8b\x4c\x24\x38\
    \x8b\x49\x0f\x31\xc1\x89\xc8\x48\x8b\x4c\x24\x38\x89\x41\x0f\x48\
    \x8b\x44\x24\x38\x8b\x40\x0f\xc1\xe8\x0b\x0f\xb6\x0c\x24\x31\xc8\
    \x83\xe0\x01\x48\x83\xc4\x28\xc3\x48\x89\x54\x24\x10\x48\x89\x4c\
    \x24\x08\x48\x83\xec\x38\x48\x8b\x44\x24\x48\x83\x78\x14\x00\x74\
    \x14\x48\x8b\x54\x24\x48\x48\x8b\x4c\x24\x40\xe8\x3f\xfa\xff\xff\
    \xe9\x97\x00\x00\x00\x48\x8b\x4c\x24\x48\xe8\xa6\xfb\xff\xff\xc7\
    \x44\x24\x20\x01\x00\x00\x00\xc7\x44\x24\x24\x00\x00\x00\x00\xeb\
    \x0a\x8b\x44\x24\x20\xff\xc0\x89\x44\x24\x20\x83\x7c\x24\x20\x27\
    \x77\x6a\x8b\x44\x24\x24\x48\x8b\x4c\x24\x40\x0f\xb6\x04\x01\x48\
    \x8b\x54\x24\x48\x89\xc1\xe8\x2e\xfe\xff\xff\x89\x44\x24\x28\x48\
    \x8b\x44\x24\x40\x8b\x00\x83\xe0\x01\xd1\xe0\x0b\x44\x24\x28\x89\
    \x44\x24\x24\x48\x8b\x44\x24\x40\x8b\x00\x83\xe0\x01\x3b\x44\x24\
    \x28\x75\x12\x48\x8b\x44\x24\x40\x8b\x00\xd1\xe8\x48\x8b\x4c\x24\
    \x40\x89\x01\xeb\x15\x48\x8b\x44\x24\x40\x8b\x00\xd1\xe8\x35\x62\
    \x00\x50\x80\x48\x8b\x4c\x24\x40\x89\x01\xeb\x85\x48\x83\xc4\x38\
    \xc3\x49\x89\xe3\x48\x83\xec\x68\x45\x85\xc0\x49\x89\x5b\xf8\x49\
    \x89\x6b\xf0\x49\x89\x73\xe8\x49\x89\x7b\xe0\x4d\x89\x63\xd8\x44\
    \x8b\x61\x04\x44\x89\xc5\x48\x89\xd6\x48\x89\xcb\x45\x89\xe1\x45\
    \x89\x63\xc8\x74\x26\x49\x8d\x4b\xc8\x49\x89\x4b\xb8\xe8\x00\x00\
    \x00\x00\x5a\x48\x81\xea\xd0\x1d\x00\x00\x48\x8b\x12\x48\x03\x52\
    \x20\xe8\xe2\xfe\xff\xff\x44\x8b\x4c\x24\x30\x8b\x03\x44\x31\xc8\
    \x89\xc1\x44\x31\xe0\x35\xc3\x25\x34\x80\x89\x0b\x89\xc1\x35\xc3\
    \x25\x34\x80\xc1\xc0\x02\x33\x03\x89\x0b\x89\xc1\x35\xc3\x25\x34\
    \x80\xc1\xc0\x04\x33\x03\x89\x0b\x89\xc1\x35\xc3\x25\x34\x80\xc1\
    \xc0\x06\x33\x03\x89\x0b\x89\xc1\x35\xc3\x25\x34\x80\xc1\xc0\x08\
    \x33\x03\x89\xc2\x35\xc3\x25\x34\x80\xc1\xc0\x0a\x89\x13\x31\xc8\
    \x85\xed\x48\x8b\x6c\x24\x58\x89\x43\x04\x41\x89\xc4\x89\xc2\x89\
    \x44\x24\x34\x74\x27\x48\x8d\x4c\x24\x34\xe8\x00\x00\x00\x00\x5a\
    \x48\x81\xea\x5d\x1e\x00\x00\x48\x8b\x12\x48\x03\x52\x20\xe8\x55\
    \xfe\xff\xff\x8b\x54\x24\x34\x44\x8b\x4c\x24\x30\x8b\x03\x48\x8b\
    \x7c\x24\x48\x31\xd0\x89\xc1\x44\x31\xe0\x4c\x8b\x64\x24\x40\x35\
    \x4a\x00\x2c\x5b\x89\x0b\x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x05\
    \x33\x03\x89\x0b\x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x0a\x33\x03\
    \x89\x0b\x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x0f\x33\x03\x89\x0b\
    \x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x14\x33\x03\x89\x0b\x89\xc1\
    \x35\x4a\x00\x2c\x5b\xc1\xc0\x19\x33\x03\x48\x85\xf6\x89\x0b\x89\
    \x43\x04\x48\x8b\x5c\x24\x60\x74\x06\x44\x89\x0e\x89\x56\x04\x48\
    \x8b\x74\x24\x50\x48\x83\xc4\x68\xc3\x48\x83\xec\x08\x4c\x8d\x0c\
    \x24\x41\xb8\x01\x00\x00\x00\x49\x89\x09\x8b\x41\x5c\x48\xc1\xe0\
    \x20\x8b\x49\x12\x48\x09\xc1\x48\x89\xca\x48\x83\xc2\x08\xe8\x6e\
    \xfe\xff\xff\x48\x83\xc4\x08\xc3\x49\x89\xe3\x48\x83\xec\x68\x49\
    \x89\x5b\xf8\x48\x89\xcb\x49\x89\x6b\xf0\x49\x89\x73\xe8\x49\x89\
    \x7b\xe0\x4c\x89\xcf\x44\x8b\x09\x4d\x89\x63\xd8\x45\x89\xc4\x44\
    \x89\xc8\x48\x89\xd6\x35\x4a\x00\x2c\x5b\xc1\xc0\x19\x33\x41\x04\
    \x44\x89\x49\x04\x89\x01\x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x14\
    \x89\x4b\x04\x44\x31\xc8\x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x0f\
    \x33\x43\x04\x89\x4b\x04\x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x0a\
    \x33\x43\x04\x89\x4b\x04\x89\xc1\x35\x4a\x00\x2c\x5b\xc1\xc0\x05\
    \x33\x43\x04\x89\x4b\x04\x89\xc1\x8b\x43\x04\x31\xc8\x89\x4b\x04\
    \x35\x4a\x00\x2c\x5b\x45\x85\xe4\x89\x03\x89\xc5\x41\x89\xc0\x89\
    \x44\x24\x34\x74\x37\x48\x8b\x07\x49\x8d\x4b\xcc\x44\x0f\xb7\x48\
    \x1e\x44\x0f\xb7\x40\x0c\x0f\xb7\x50\x08\x49\x89\x4b\xb8\xe8\x00\
    \x00\x00\x00\x5a\x48\x81\xea\xe1\x1f\x00\x00\x48\x8b\x12\x48\x03\
    \x52\x20\xe8\xd1\xfc\xff\xff\x44\x8b\x44\x24\x34\x8b\x43\x04\x44\
    \x31\xc0\x89\xc1\x35\xc3\x25\x34\x80\xc1\xc0\x0a\x89\x4b\x04\x31\
    \xe8\x89\xc1\x35\xc3\x25\x34\x80\xc1\xc0\x08\x33\x43\x04\x89\x4b\
    \x04\x89\xc1\x35\xc3\x25\x34\x80\xc1\xc0\x06\x33\x43\x04\x89\x4b\
    \x04\x89\xc1\x35\xc3\x25\x34\x80\xc1\xc0\x04\x33\x43\x04\x89\x4b\
    \x04\x89\xc1\x35\xc3\x25\x34\x80\xc1\xc0\x02\x33\x43\x04\x89\xc2\
    \x89\xc8\x31\xd0\x89\x53\x04\x35\xc3\x25\x34\x80\x45\x85\xe4\x4c\
    \x8b\x64\x24\x40\x89\x03\x89\xc5\x89\xc1\x89\x44\x24\x30\x74\x3d\
    \x48\x8b\x07\x48\x8d\x4c\x24\x30\x44\x0f\xb7\x48\x1e\x44\x0f\xb7\
    \x40\x0c\x0f\xb7\x50\x08\x48\x89\x4c\x24\x20\xe8\x00\x00\x00\x00\
    \x5a\x48\x81\xea\x8e\x20\x00\x00\x48\x8b\x12\x48\x03\x52\x20\xe8\
    \x24\xfc\xff\xff\x44\x8b\x44\x24\x34\x8b\x4c\x24\x30\x8b\x43\x04\
    \x48\x8b\x7c\x24\x48\x89\x6b\x04\x48\x8b\x6c\x24\x58\x31\xc8\x48\
    \x85\xf6\x89\x03\x48\x8b\x5c\x24\x60\x74\x06\x89\x0e\x44\x89\x46\
    \x04\x48\x8b\x74\x24\x50\x48\x83\xc4\x68\xc3\x48\x83\xec\x08\x4c\
    \x8d\x0c\x24\x41\xb8\x01\x00\x00\x00\x49\x89\x09\x8b\x41\x5c\x48\
    \xc1\xe0\x20\x8b\x49\x12\x48\x09\xc1\x48\x89\xca\x48\x83\xc2\x08\
    \xe8\x23\xfe\xff\xff\x48\x83\xc4\x08\xc3\x48\x89\xe0\x48\x81\xec\
    \xe8\x00\x00\x00\x48\x89\x58\x08\x48\x89\x68\x10\x48\x89\x70\x18\
    \x48\x89\x78\x20\x4c\x89\x60\xf8\x4c\x89\x68\xf0\x4c\x89\x70\xe8\
    \x4c\x89\x78\xe0\xb8\x08\x00\x00\x00\x44\x8d\x72\x07\x41\x89\xd7\
    \x4c\x89\xc5\x41\xc1\xee\x03\x41\x83\xe7\x07\x48\x89\xcb\x44\x0f\
    \x44\xf8\x45\x31\xc9\x41\x8d\x46\xff\x85\xc0\x44\x89\x7c\x24\x28\
    \x44\x89\x4c\x24\x24\x45\x89\xc8\x44\x89\x4c\x24\x20\x45\x89\xcd\
    \x45\x8d\x51\x02\x0f\x84\x7a\x02\x00\x00\x48\x8b\x7c\x24\x30\x44\
    \x8b\x64\x24\x54\x4d\x89\xd7\x44\x31\x03\x44\x31\x4b\x04\x45\x85\
    \xed\x8b\x0b\x8b\x53\x04\x0f\x85\x16\x01\x00\x00\x45\x39\xfe\x0f\
    \x86\xdb\x00\x00\x00\x66\x44\x89\x6d\x10\x48\x8b\x03\x48\x89\xe9\
    \x48\x89\x44\x24\x38\x48\x8d\x44\x24\x38\x48\x89\x7c\x24\x40\x89\
    \x45\x12\x48\x8d\x44\x24\x38\x66\x44\x89\x7d\x16\x48\xc1\xe8\x20\
    \x66\x44\x89\x6d\x3e\x89\x45\x5c\xe8\x1c\xfd\xff\xff\x48\x8b\x7c\
    \x24\x40\x48\x8b\x44\x24\x38\x48\x89\x7c\x24\x30\x8b\x74\x24\x34\
    \x48\x89\x03\x89\x7c\x24\x50\x48\x8d\x54\x24\x54\x66\x44\x89\x6d\
    \x16\x45\x8d\x45\x05\x8b\x4a\xfc\x48\x83\xc2\x14\x8d\x04\x31\x83\
    \xe1\x1f\x89\x42\xec\x89\xf8\xd3\xc8\x31\x44\x24\x54\x8b\x4a\xec\
    \x8d\x04\x31\x83\xe1\x1f\x89\x42\xf0\x89\xf8\xd3\xc8\x31\x44\x24\
    \x54\x8b\x4a\xf0\x8d\x04\x31\x83\xe1\x1f\x89\x42\xf4\x89\xf8\xd3\
    \xc8\x31\x44\x24\x54\x8b\x4a\xf4\x8d\x04\x31\x83\xe1\x1f\x89\x42\
    \xf8\x89\xf8\xd3\xc8\x31\x44\x24\x54\x8b\x4a\xf8\x8d\x04\x31\x83\
    \xe1\x1f\x89\x42\xfc\x44\x8b\x64\x24\x54\x89\xf8\xd3\xc8\x41\x31\
    \xc4\x49\xff\xc8\x44\x89\x64\x24\x54\x75\x8a\xe9\x42\x01\x00\x00\
    \x48\x89\xd8\x48\x89\xe9\x66\xc7\x45\x10\x00\x00\x48\xc1\xe8\x20\
    \x66\xc7\x45\x16\x01\x00\x66\xc7\x45\x3e\x00\x00\x89\x45\x5c\x89\
    \x5d\x12\xe8\x52\xfc\xff\xff\x66\xc7\x45\x16\x00\x00\xe9\x10\x01\
    \x00\x00\x8b\x44\x24\x50\x46\x8d\x04\x21\x4c\x8d\x4c\x24\x5c\x8d\
    \x34\x02\x44\x89\x03\x4d\x89\xfa\x89\x73\x04\x44\x89\xc1\x44\x89\
    \xc2\x49\x83\xc1\x30\xc1\xe9\x04\x31\xf2\x83\xe1\x1f\xd3\xc2\x41\
    \x2b\x51\xcc\x41\x31\xd0\x89\xd1\xc1\xe9\x07\x83\xe1\x1f\x41\xd3\
    \xc0\x45\x03\x41\xd0\x44\x89\xc1\x44\x89\xc6\xc1\xe9\x04\x31\xd6\
    \x83\xe1\x1f\xd3\xc6\x41\x2b\x71\xd4\x41\x31\xf0\x89\xf1\xc1\xe9\
    \x07\x83\xe1\x1f\x41\xd3\xc0\x45\x03\x41\xd8\x44\x89\xc1\x44\x89\
    \xc2\xc1\xe9\x04\x31\xf2\x83\xe1\x1f\xd3\xc2\x41\x2b\x51\xdc\x41\
    \x31\xd0\x89\xd1\xc1\xe9\x07\x83\xe1\x1f\x41\xd3\xc0\x45\x03\x41\
    \xe0\x44\x89\xc1\x44\x89\xc6\xc1\xe9\x04\x31\xd6\x83\xe1\x1f\xd3\
    \xc6\x41\x2b\x71\xe4\x41\x31\xf0\x89\xf1\xc1\xe9\x07\x83\xe1\x1f\
    \x41\xd3\xc0\x45\x03\x41\xe8\x44\x89\xc1\x44\x89\xc2\xc1\xe9\x04\
    \x31\xf2\x83\xe1\x1f\xd3\xc2\x41\x2b\x51\xec\x41\x31\xd0\x89\xd1\
    \xc1\xe9\x07\x83\xe1\x1f\x41\xd3\xc0\x45\x03\x41\xf0\x44\x89\xc1\
    \x44\x89\xc6\xc1\xe9\x04\x31\xd6\x83\xe1\x1f\xd3\xc6\x41\x2b\x71\
    \xf4\x41\x31\xf0\x89\xf1\xc1\xe9\x07\x83\xe1\x1f\x41\xd3\xc0\x45\
    \x03\x41\xf8\x49\xff\xca\x0f\x85\x0f\xff\xff\xff\x44\x89\x03\x89\
    \x73\x04\x44\x8b\x03\x44\x8b\x4b\x04\x41\x8d\x46\xff\x41\xff\xc5\
    \x48\x83\xc3\x08\x44\x89\x44\x24\x20\x41\x39\xc5\x44\x89\x4c\x24\
    \x24\x0f\x82\xa0\xfd\xff\xff\x44\x8b\x7c\x24\x28\x41\xba\x02\x00\
    \x00\x00\xeb\x05\x44\x8b\x64\x24\x54\x45\x85\xff\x4c\x8b\xac\x24\
    \xd8\x00\x00\x00\x74\x2c\x48\x8d\x44\x24\x20\x48\x89\xdf\x48\x8d\
    \x4c\x24\x20\x48\x29\xc7\x44\x89\xfa\x0f\xb6\x04\x0f\x48\xff\xc1\
    \x30\x41\xff\x48\xff\xca\x75\xf1\x44\x8b\x4c\x24\x24\x44\x8b\x44\
    \x24\x20\x41\x83\xfe\x02\x0f\x86\xff\x00\x00\x00\x44\x03\x4c\x24\
    \x50\x48\x8d\x74\x24\x5c\x45\x01\xe0\x44\x89\xc1\x44\x89\xc2\x48\
    \x83\xc6\x30\xc1\xe9\x04\x44\x31\xca\x83\xe1\x1f\xd3\xc2\x2b\x56\
    \xcc\x41\x31\xd0\x89\xd1\xc1\xe9\x07\x83\xe1\x1f\x41\xd3\xc0\x44\
    \x03\x46\xd0\x44\x89\xc1\x44\x89\xc7\xc1\xe9\x04\x31\xd7\x83\xe1\
    \x1f\xd3\xc7\x2b\x7e\xd4\x41\x31\xf8\x89\xf9\xc1\xe9\x07\x83\xe1\
    \x1f\x41\xd3\xc0\x44\x03\x46\xd8\x44\x89\xc1\x44\x89\xc2\xc1\xe9\
    \x04\x31\xfa\x83\xe1\x1f\xd3\xc2\x2b\x56\xdc\x41\x31\xd0\x89\xd1\
    \xc1\xe9\x07\x83\xe1\x1f\x41\xd3\xc0\x44\x03\x46\xe0\x44\x89\xc1\
    \x44\x89\xc7\xc1\xe9\x04\x31\xd7\x83\xe1\x1f\xd3\xc7\x2b\x7e\xe4\
    \x41\x31\xf8\x89\xf9\xc1\xe9\x07\x83\xe1\x1f\x41\xd3\xc0\x44\x03\
    \x46\xe8\x44\x89\xc1\x44\x89\xc2\xc1\xe9\x04\x31\xfa\x83\xe1\x1f\
    \xd3\xc2\x2b\x56\xec\x41\x31\xd0\x89\xd1\xc1\xe9\x07\x83\xe1\x1f\
    \x41\xd3\xc0\x44\x03\x46\xf0\x44\x89\xc1\x45\x89\xc1\xc1\xe9\x04\
    \x41\x31\xd1\x83\xe1\x1f\x41\xd3\xc1\x44\x2b\x4e\xf4\x45\x31\xc8\
    \x44\x89\xc9\xc1\xe9\x07\x83\xe1\x1f\x41\xd3\xc0\x44\x03\x46\xf8\
    \x49\xff\xca\x0f\x85\x10\xff\xff\xff\xeb\x51\x41\x83\xfe\x01\x75\
    \x0d\x8b\x03\x89\x44\x24\x20\x8b\x43\x04\x89\x44\x24\x24\x48\x8d\
    \x44\x24\x20\x48\x89\xe9\x66\xc7\x45\x10\x00\x00\x89\x45\x12\x48\
    \x8d\x44\x24\x20\x66\xc7\x45\x16\x01\x00\x48\xc1\xe8\x20\x66\xc7\
    \x45\x3e\x00\x00\x89\x45\x5c\xe8\x7d\xf9\xff\xff\x44\x8b\x4c\x24\
    \x24\x44\x8b\x44\x24\x20\x66\xc7\x45\x16\x00\x00\x4c\x8b\xa4\x24\
    \xe0\x00\x00\x00\x48\x8b\xac\x24\xf8\x00\x00\x00\x41\x83\xfe\x01\
    \x4c\x8b\xb4\x24\xd0\x00\x00\x00\x76\x1b\x45\x85\xff\x74\x0c\x48\
    \x8d\x73\xf8\x44\x89\xf9\x48\x89\xdf\xf3\xa4\x44\x89\x43\xf8\x44\
    \x89\x4b\xfc\xeb\x07\x44\x89\x03\x44\x89\x4b\x04\x4c\x8b\xbc\x24\
    \xc8\x00\x00\x00\x48\x8b\xbc\x24\x08\x01\x00\x00\x48\x8b\xb4\x24\
    \x00\x01\x00\x00\x48\x8b\x9c\x24\xf0\x00\x00\x00\x48\x81\xc4\xe8\
    \x00\x00\x00\xc3\x48\x89\xe0\x48\x81\xec\xf8\x00\x00\x00\x48\x89\
    \x58\x08\x48\x89\x68\x10\x48\x89\x70\x18\x48\x89\x78\x20\x4c\x89\
    \x60\xf8\x4c\x89\x68\xf0\x4c\x89\x70\xe8\x4c\x89\x78\xe0\x48\x89\
    \xcb\x8d\x4a\x07\x89\xd0\xba\x08\x00\x00\x00\xc1\xe9\x03\x83\xe0\
    \x07\x4c\x89\xc7\x0f\x44\xc2\x45\x31\xff\x83\xf9\x01\x89\x4c\x24\
    \x30\x44\x8d\x62\x04\x44\x89\x7c\x24\x2c\x44\x89\x7c\x24\x34\x44\
    \x89\x7c\x24\x28\x45\x89\xfe\x89\x44\x24\x38\x0f\x86\x9f\x01\x00\
    \x00\x83\xc1\xfe\x44\x89\xfe\x89\x4c\x24\x20\x0f\x84\x8f\x01\x00\
    \x00\x48\x8b\x44\x24\x40\x44\x8b\x6c\x24\x64\x8b\x6c\x24\x60\x85\
    \xf6\x44\x8b\x03\x44\x8b\x73\x04\x45\x89\xc7\x44\x89\x44\x24\x28\
    \x0f\x85\xee\x00\x00\x00\x48\x89\x44\x24\x50\x48\x8d\x44\x24\x48\
    \x66\x89\x77\x10\x48\x8b\x0b\x89\x47\x12\x48\x8d\x44\x24\x48\x48\
    \xc1\xe8\x20\x48\x89\x4c\x24\x48\x48\x89\xf9\x66\xc7\x47\x16\x02\
    \x00\x66\x89\x77\x3e\x89\x47\x5c\xe8\x0e\xfa\xff\xff\x48\x8b\x44\
    \x24\x48\x4c\x8d\x44\x24\x64\x48\x89\x03\x48\x8b\x44\x24\x50\x44\
    \x8d\x56\x05\x48\x89\x44\x24\x40\x44\x8b\x4c\x24\x44\x66\x89\x77\
    \x16\x89\x44\x24\x60\x41\x8b\x48\xfc\x49\x83\xc0\x14\x42\x8d\x14\
    \x09\x83\xe1\x1f\x41\x89\x50\xec\x89\xc2\xd3\xca\x31\x54\x24\x64\
    \x41\x8b\x48\xec\x42\x8d\x14\x09\x83\xe1\x1f\x41\x89\x50\xf0\x89\
    \xc2\xd3\xca\x31\x54\x24\x64\x41\x8b\x48\xf0\x42\x8d\x14\x09\x83\
    \xe1\x1f\x41\x89\x50\xf4\x89\xc2\xd3\xca\x31\x54\x24\x64\x41\x8b\
    \x48\xf4\x42\x8d\x14\x09\x83\xe1\x1f\x41\x89\x50\xf8\x89\xc2\xd3\
    \xca\x31\x54\x24\x64\x41\x8b\x48\xf8\x42\x8d\x14\x09\x83\xe1\x1f\
    \x41\x89\x50\xfc\x44\x8b\x6c\x24\x64\x89\xc2\xd3\xca\x41\x31\xd5\
    \x49\xff\xca\x44\x89\x6c\x24\x64\x0f\x85\x77\xff\xff\xff\x8b\x6c\
    \x24\x60\xeb\x4b\x45\x89\xe3\x45\x89\xf1\x4c\x8d\x94\x24\xc0\x00\
    \x00\x00\x45\x2b\x42\x04\x44\x89\xc9\x49\x83\xea\x08\xc1\xe9\x07\
    \x83\xe1\x1f\x41\xd3\xc8\x45\x31\xc8\x45\x03\x4a\x08\x44\x89\xc1\
    \xc1\xe9\x04\x83\xe1\x1f\x41\xd3\xc9\x45\x31\xc1\x41\x83\xc3\xff\
    \x75\xd0\x45\x29\xe8\x41\x29\xe9\x44\x89\x4b\x04\x44\x89\x03\x8b\
    \x4c\x24\x34\xff\xc6\x48\x83\xc3\x08\x31\x4b\xf8\x8b\x4c\x24\x2c\
    \x44\x89\x7c\x24\x34\x31\x4b\xfc\x3b\x74\x24\x20\x44\x89\x74\x24\
    \x2c\x0f\x82\x88\xfe\xff\xff\x8b\x44\x24\x38\x45\x31\xff\xeb\x09\
    \x44\x8b\x6c\x24\x64\x8b\x6c\x24\x60\x85\xc0\x44\x89\x7c\x24\x20\
    \x44\x89\xfe\x44\x89\x7c\x24\x24\x74\x1a\x48\x8d\x53\x08\x48\x8d\
    \x4c\x24\x20\x41\x89\xc0\xe8\xb8\xed\xff\xff\x8b\x74\x24\x24\x44\
    \x8b\x7c\x24\x20\x44\x8b\x5c\x24\x30\x41\x83\xfb\x01\x75\x32\x48\
    \x89\xd8\x48\x89\xf9\x66\xc7\x47\x10\x00\x00\x48\xc1\xe8\x20\x66\
    \xc7\x47\x16\x01\x00\x66\xc7\x47\x3e\x00\x00\x89\x47\x5c\x89\x5f\
    \x12\xe8\x75\xf8\xff\xff\x66\xc7\x47\x16\x00\x00\xe9\x29\x01\x00\
    \x00\x41\x83\xfb\x02\x75\x34\x48\x89\xd8\x48\x89\xf9\x66\xc7\x47\
    \x10\x00\x00\x48\xc1\xe8\x20\x66\xc7\x47\x16\x01\x00\x66\xc7\x47\
    \x3e\x00\x00\x89\x47\x5c\x89\x5f\x12\xe8\x3d\xf8\xff\xff\x44\x8b\
    \x5c\x24\x30\x66\xc7\x47\x16\x00\x00\xeb\x55\x8b\x13\x44\x8b\x43\
    \x04\x45\x89\xe2\x4c\x8d\x8c\x24\xc0\x00\x00\x00\x41\x2b\x51\x04\
    \x44\x89\xc1\x49\x83\xe9\x08\xc1\xe9\x07\x83\xe1\x1f\xd3\xca\x44\
    \x31\xc2\x45\x03\x41\x08\x89\xd1\xc1\xe9\x04\x83\xe1\x1f\x41\xd3\
    \xc8\x41\x31\xd0\x41\x83\xc2\xff\x75\xd2\x44\x29\xea\x41\x29\xe8\
    \x41\x83\xfb\x01\x89\x13\x44\x89\x43\x04\x0f\x86\x9a\x00\x00\x00\
    \x44\x33\x3b\x33\x73\x04\x8b\x44\x24\x38\x85\xc0\x44\x89\x7c\x24\
    \x20\x89\x74\x24\x24\x74\x31\x4c\x8d\x44\x24\x20\x49\x89\xd9\x48\
    \x8d\x4b\x08\x4d\x29\xc1\x49\x89\xc0\x48\x8d\x54\x24\x20\x0f\xb6\
    \x01\x48\xff\xc1\x48\xff\xc2\x49\xff\xc8\x41\x88\x44\x11\xff\x0f\
    \xb6\x42\xff\x88\x41\xff\x75\xe6\x41\x83\xfb\x02\x0f\x84\xed\xfe\
    \xff\xff\x8b\x13\x44\x8b\x43\x04\x4c\x8d\x8c\x24\xc0\x00\x00\x00\
    \x41\x2b\x51\x04\x44\x89\xc1\x49\x83\xe9\x08\xc1\xe9\x07\x83\xe1\
    \x1f\xd3\xca\x44\x31\xc2\x45\x03\x41\x08\x89\xd1\xc1\xe9\x04\x83\
    \xe1\x1f\x41\xd3\xc8\x41\x31\xd0\x41\x83\xc4\xff\x75\xd2\x44\x29\
    \xea\x41\x29\xe8\x44\x89\x43\x04\x89\x13\x8b\x44\x24\x28\x4c\x8b\
    \xbc\x24\xd8\x00\x00\x00\x4c\x8b\xac\x24\xe8\x00\x00\x00\x31\x03\
    \x44\x31\x73\x04\x4c\x8b\xa4\x24\xf0\x00\x00\x00\x4c\x8b\xb4\x24\
    \xe0\x00\x00\x00\x48\x8b\x9c\x24\x00\x01\x00\x00\x48\x8b\xbc\x24\
    \x18\x01\x00\x00\x48\x8b\xb4\x24\x10\x01\x00\x00\x48\x8b\xac\x24\
    \x08\x01\x00\x00\x48\x81\xc4\xf8\x00\x00\x00\xc3\xcc\xcc\xcc\xcc\
    \x57\x59\xe9\xf9\xd5\xff\xff'
    
    try:
      fullfname=os.getcwd()+"/backbas.so"
      fp = open(fullfname, 'r+')
      if os.stat(fp.name).st_size > 0:
        mm = mmap.mmap(fp.fileno(), os.stat(fp.name).st_size)
    
        pattern_addr=0;
        unipatch_addr=0;
    
        pattern_addr = mm.find(pattern_hex)
        if pattern_addr != -1:
          unipatch_addr=pattern_addr-0x2A75
          print "patching  %s  at  offset 0x%08X" % (fullfname, unipatch_addr)
          mm[unipatch_addr:unipatch_addr+0x2A07] = unipatch_hex
          mm[0x7C] = '\x07'
    
      mm.close()
    except IOError:
      print "%s: Cannot open file for read-write." % fullfname
    Последний раз редактировалось HPDX2300; 22.05.2022 в 18:50.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  20. 3 пользователя(ей) сказали cпасибо:

    redhat2020 (22.05.2022), Sergzhel265 (13.06.2022), vovashulga (22.05.2022)

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Патч для КОРП
    от hrolandrei в разделе 1С Предприятие 8.3
    Ответов: 2
    Последнее сообщение: 15.09.2019, 16:28
  2. Ответов: 1
    Последнее сообщение: 07.02.2012, 23:43
  3. Патч для Warcraft III 1.26 rus
    от GHoSt444 в разделе Игры (games)
    Ответов: 0
    Последнее сообщение: 30.06.2011, 17:18
  4. Патч к AMS Enterprise 2.9
    от kryak_er в разделе Полезности
    Ответов: 2
    Последнее сообщение: 09.06.2009, 22:06
  5. Установка Линукса.
    от Большой Брат в разделе LINUX
    Ответов: 18
    Последнее сообщение: 09.11.2007, 05:26

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •