Add support for Shelly Dimmer 1 and 2

Add support for Shelly Dimmer 1 and 2 by James Turton (#9854)
This commit is contained in:
Theo Arends 2020-11-14 16:43:32 +01:00
parent f943d682ba
commit c02770ce96
47 changed files with 8583 additions and 9 deletions

View File

@ -48,6 +48,7 @@
| USE_PWM_DIMMER | - | - | x | x | - | - | - |
| USE_KEELOQ | - | - | - | - | - | - | - |
| USE_SONOFF_D1 | - | - | x | x | - | - | - |
| USE_SHELLY_DIMMER | - | - | - | - | - | - | - |
| | | | | | | | |
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks
| USE_LIGHT | - | x | x | x | x | x | x |

View File

@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file.
- Command ``SetOption115 1`` to enable ESP32 MiBle
- Zigbee command ``ZbLeave`` to unpair a device
- Command ``SetOption116 1`` to disable auto-query of zigbee light devices (avoids network storms with large groups)
- Support for Shelly Dimmer 1 and 2 by James Turton (#9854)
### Changed
- Core library from v2.7.4.5 to v2.7.4.7

View File

@ -67,6 +67,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
- Zigbee alarm persistence (#9785)
- Support for additional EZO sensors by Christopher Tremblay
- Support for AS608 optical and R503 capacitive fingerprint sensor
- Support for Shelly Dimmer 1 and 2 by James Turton (#9854)
### Changed
- Core library from v2.7.4.5 to v2.7.4.7

View File

@ -0,0 +1,108 @@
/*
stm32flash - Open Source ST STM32 flash program for Arduino
Copyright (C) 2010 Geoffrey McRae <geoff@spacevs.com>
Copyright (C) 2014-2015 Antonio Borneo <borneo.antonio@gmail.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#define SZ_128 0x00000080
#define SZ_256 0x00000100
#define SZ_1K 0x00000400
#define SZ_2K 0x00000800
#define SZ_16K 0x00004000
#define SZ_32K 0x00008000
#define SZ_64K 0x00010000
#define SZ_128K 0x00020000
#define SZ_256K 0x00040000
/*
* Page-size for page-by-page flash erase.
* Arrays are zero terminated; last non-zero value is automatically repeated
*/
/* fixed size pages */
static uint32_t p_128[] = { SZ_128, 0 };
static uint32_t p_256[] = { SZ_256, 0 };
static uint32_t p_1k[] = { SZ_1K, 0 };
static uint32_t p_2k[] = { SZ_2K, 0 };
/* F2 and F4 page size */
static uint32_t f2f4[] = { SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, 0 };
/* F4 dual bank page size */
static uint32_t f4db[] = {
SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, SZ_128K, SZ_128K,
SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, 0
};
/* F7 page size */
static uint32_t f7[] = { SZ_32K, SZ_32K, SZ_32K, SZ_32K, SZ_128K, SZ_256K, 0 };
/*
* Device table, corresponds to the "Bootloader device-dependant parameters"
* table in ST document AN2606.
* Note that the option bytes upper range is inclusive!
*/
const stm32_dev_t devices[] = {
/* ID "name" SRAM-address-range FLASH-address-range PPS PSize Option-byte-addr-range System-mem-addr-range Flags */
/* F0 */
{0x440, "STM32F030x8/F05xxx" , 0x20000800, 0x20002000, 0x08000000, 0x08010000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFEC00, 0x1FFFF800, 0},
{0x442, "STM32F030xC/F09xxx" , 0x20001800, 0x20008000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFC800, 0x1FFFF800, F_OBLL},
{0x444, "STM32F03xx4/6" , 0x20000800, 0x20001000, 0x08000000, 0x08008000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFEC00, 0x1FFFF800, 0},
{0x445, "STM32F04xxx/F070x6" , 0x20001800, 0x20001800, 0x08000000, 0x08008000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFC400, 0x1FFFF800, 0},
{0x448, "STM32F070xB/F071xx/F72xx" , 0x20001800, 0x20004000, 0x08000000, 0x08020000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFC800, 0x1FFFF800, 0},
/* F1 */
{0x412, "STM32F10xxx Low-density" , 0x20000200, 0x20002800, 0x08000000, 0x08008000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0},
{0x410, "STM32F10xxx Medium-density" , 0x20000200, 0x20005000, 0x08000000, 0x08020000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0},
{0x414, "STM32F10xxx High-density" , 0x20000200, 0x20010000, 0x08000000, 0x08080000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0},
{0x420, "STM32F10xxx Medium-density VL" , 0x20000200, 0x20002000, 0x08000000, 0x08020000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0},
{0x428, "STM32F10xxx High-density VL" , 0x20000200, 0x20008000, 0x08000000, 0x08080000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0},
{0x418, "STM32F105xx/F107xx" , 0x20001000, 0x20010000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFB000, 0x1FFFF800, 0},
{0x430, "STM32F10xxx XL-density" , 0x20000800, 0x20018000, 0x08000000, 0x08100000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFE000, 0x1FFFF800, 0},
/* F2 */
{0x411, "STM32F2xxxx" , 0x20002000, 0x20020000, 0x08000000, 0x08100000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
/* F3 */
{0x432, "STM32F373xx/F378xx" , 0x20001400, 0x20008000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0},
{0x422, "STM32F302xB(C)/F303xB(C)/F358xx" , 0x20001400, 0x2000A000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0},
{0x439, "STM32F301xx/F302x4(6/8)/F318xx" , 0x20001800, 0x20004000, 0x08000000, 0x08010000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0},
{0x438, "STM32F303x4(6/8)/F334xx/F328xx" , 0x20001800, 0x20003000, 0x08000000, 0x08010000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0},
{0x446, "STM32F302xD(E)/F303xD(E)/F398xx" , 0x20001800, 0x20010000, 0x08000000, 0x08080000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0},
/* F4 */
{0x413, "STM32F40xxx/41xxx" , 0x20003000, 0x20020000, 0x08000000, 0x08100000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
{0x419, "STM32F42xxx/43xxx" , 0x20003000, 0x20030000, 0x08000000, 0x08200000, 1, f4db , 0x1FFEC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
{0x423, "STM32F401xB(C)" , 0x20003000, 0x20010000, 0x08000000, 0x08040000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
{0x433, "STM32F401xD(E)" , 0x20003000, 0x20018000, 0x08000000, 0x08080000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
{0x458, "STM32F410xx" , 0x20003000, 0x20008000, 0x08000000, 0x08020000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
{0x431, "STM32F411xx" , 0x20003000, 0x20020000, 0x08000000, 0x08080000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
{0x421, "STM32F446xx" , 0x20003000, 0x20020000, 0x08000000, 0x08080000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
{0x434, "STM32F469xx" , 0x20003000, 0x20060000, 0x08000000, 0x08200000, 1, f4db , 0x1FFEC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0},
/* F7 */
{0x449, "STM32F74xxx/75xxx" , 0x20004000, 0x20050000, 0x08000000, 0x08100000, 1, f7 , 0x1FFF0000, 0x1FFF001F, 0x1FF00000, 0x1FF0EDC0, 0},
/* L0 */
{0x425, "STM32L031xx/041xx" , 0x20001000, 0x20002000, 0x08000000, 0x08008000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0},
{0x417, "STM32L05xxx/06xxx" , 0x20001000, 0x20002000, 0x08000000, 0x08010000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0},
{0x447, "STM32L07xxx/08xxx" , 0x20002000, 0x20005000, 0x08000000, 0x08030000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF02000, 0},
/* L1 */
{0x416, "STM32L1xxx6(8/B)" , 0x20000800, 0x20004000, 0x08000000, 0x08020000, 16, p_256 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, F_NO_ME},
{0x429, "STM32L1xxx6(8/B)A" , 0x20001000, 0x20008000, 0x08000000, 0x08020000, 16, p_256 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0},
{0x427, "STM32L1xxxC" , 0x20001000, 0x20008000, 0x08000000, 0x08040000, 16, p_256 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF02000, 0},
{0x436, "STM32L1xxxD" , 0x20001000, 0x2000C000, 0x08000000, 0x08060000, 16, p_256 , 0x1FF80000, 0x1FF8009F, 0x1FF00000, 0x1FF02000, 0},
{0x437, "STM32L1xxxE" , 0x20001000, 0x20014000, 0x08000000, 0x08080000, 16, p_256 , 0x1FF80000, 0x1FF8009F, 0x1FF00000, 0x1FF02000, F_NO_ME},
/* L4 */
{0x415, "STM32L476xx/486xx" , 0x20003100, 0x20018000, 0x08000000, 0x08100000, 1, p_2k , 0x1FFF7800, 0x1FFFF80F, 0x1FFF0000, 0x1FFF7000, 0},
/* These are not (yet) in AN2606: */
{0x641, "Medium_Density PL" , 0x20000200, 0x20005000, 0x08000000, 0x08020000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0},
{0x9a8, "STM32W-128K" , 0x20000200, 0x20002000, 0x08000000, 0x08020000, 4, p_1k , 0x08040800, 0x0804080F, 0x08040000, 0x08040800, 0},
{0x9b0, "STM32W-256K" , 0x20000200, 0x20004000, 0x08000000, 0x08040000, 4, p_2k , 0x08040800, 0x0804080F, 0x08040000, 0x08040800, 0},
{0x0}
};

View File

@ -0,0 +1,905 @@
static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 50;
static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 1;
const uint8_t stm_firmware[] PROGMEM = {
0x00, 0x10, 0x00, 0x20, 0x4d, 0x10, 0x00, 0x08, 0x4b, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x10, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x10, 0x00, 0x08,
0xe9, 0x05, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x05, 0x06, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0xcd, 0x05, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08,
0x01, 0x4b, 0x18, 0x68, 0x70, 0x47, 0xc0, 0x46, 0x38, 0x01, 0x00, 0x20,
0x20, 0x23, 0xf0, 0xb5, 0x6d, 0x4c, 0xc5, 0xb0, 0x22, 0x68, 0x00, 0xaf,
0xfc, 0x60, 0x1a, 0x42, 0x69, 0xd0, 0x6b, 0x4a, 0x12, 0x68, 0x1a, 0x42,
0x65, 0xd0, 0x20, 0x00, 0x00, 0xf0, 0xa5, 0xff, 0x68, 0x4d, 0x69, 0x49,
0x2b, 0x78, 0xc6, 0xb2, 0xce, 0x54, 0x00, 0x2b, 0x03, 0xd1, 0x01, 0x2e,
0x22, 0xd1, 0x01, 0x33, 0x21, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, 0xca, 0x78,
0xf9, 0x2a, 0x1b, 0xd8, 0x14, 0x1d, 0x9c, 0x42, 0xf5, 0xda, 0x54, 0x1d,
0xa3, 0x42, 0x18, 0xd1, 0x5f, 0x49, 0xc0, 0xb2, 0xc9, 0x5c, 0x5f, 0x4c,
0x09, 0x02, 0x01, 0x43, 0x00, 0x20, 0xb9, 0x60, 0xa4, 0x46, 0x01, 0x00,
0x03, 0x32, 0x64, 0x46, 0x66, 0x5c, 0x01, 0x31, 0x80, 0x19, 0xc9, 0xb2,
0x80, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xba, 0x68, 0x82, 0x42, 0xdc, 0xd0,
0x00, 0x23, 0x2b, 0x70, 0x33, 0xe0, 0x06, 0x32, 0x93, 0x42, 0xf9, 0xd1,
0x04, 0x2e, 0xf7, 0xd1, 0x4a, 0x78, 0x52, 0x4b, 0x1a, 0x70, 0x8b, 0x78,
0x51, 0x4a, 0x13, 0x70, 0x01, 0x2b, 0x1e, 0xd1, 0x4b, 0x79, 0x08, 0x79,
0x1b, 0x02, 0x18, 0x43, 0x4e, 0x4b, 0x4f, 0x49, 0x18, 0x80, 0x4f, 0x4b,
0x1b, 0x68, 0x58, 0x43, 0x01, 0xf0, 0x9e, 0xf8, 0x02, 0xf0, 0xbe, 0xfb,
0x4c, 0x4a, 0x4d, 0x4b, 0x01, 0xf0, 0x86, 0xfd, 0x01, 0xf0, 0x60, 0xf9,
0x06, 0x00, 0x02, 0x00, 0x00, 0x21, 0x4a, 0x48, 0x00, 0xf0, 0x44, 0xfe,
0x32, 0x00, 0x06, 0x21, 0x47, 0x48, 0x00, 0xf0, 0x3f, 0xfe, 0x00, 0x23,
0x2b, 0x70, 0xfb, 0x68, 0x1a, 0x68, 0x80, 0x23, 0x13, 0x43, 0xfa, 0x68,
0x13, 0x60, 0xfb, 0x68, 0x1a, 0x68, 0x80, 0x23, 0x1a, 0x42, 0x52, 0xd0,
0x33, 0x4a, 0x12, 0x68, 0x1a, 0x42, 0x4e, 0xd0, 0x00, 0x25, 0x6c, 0x3b,
0xf8, 0x18, 0xfc, 0x22, 0x29, 0x00, 0x3d, 0x61, 0x01, 0xf0, 0x14, 0xf8,
0x33, 0x4b, 0x1b, 0x78, 0x10, 0x2b, 0x49, 0xd0, 0x11, 0x2b, 0x43, 0xd0,
0x01, 0x2b, 0x38, 0xd1, 0x1d, 0x00, 0x3b, 0x74, 0x6a, 0x46, 0x69, 0x46,
0xba, 0x60, 0xea, 0x1d, 0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00,
0x8a, 0x1a, 0x95, 0x46, 0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x27, 0x4a,
0x01, 0xa8, 0x12, 0x78, 0xb3, 0x70, 0x10, 0x23, 0x72, 0x70, 0xf9, 0x18,
0x2a, 0x00, 0xf5, 0x70, 0x00, 0xf0, 0x9e, 0xff, 0x00, 0x22, 0x13, 0x00,
0x29, 0x1d, 0xe8, 0x1c, 0xf4, 0x18, 0x64, 0x78, 0x01, 0x33, 0xa4, 0x46,
0xdb, 0xb2, 0x62, 0x44, 0x92, 0xb2, 0x98, 0x42, 0xf6, 0xdc, 0x13, 0x0a,
0x73, 0x54, 0x6b, 0x1d, 0xf2, 0x54, 0x04, 0x23, 0x06, 0x35, 0x73, 0x55,
0x00, 0x25, 0x71, 0x5d, 0x10, 0x48, 0x00, 0xf0, 0xe8, 0xfe, 0x7b, 0x68,
0x01, 0x35, 0xab, 0x42, 0xf7, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0x80, 0x22,
0xfb, 0x68, 0x1b, 0x68, 0x93, 0x43, 0xfa, 0x68, 0x13, 0x60, 0xbd, 0x46,
0x45, 0xb0, 0xf0, 0xbd, 0x01, 0x22, 0x02, 0x25, 0x3a, 0x82, 0xbb, 0xe7,
0x0d, 0x4a, 0x3d, 0x82, 0x12, 0x88, 0xbd, 0x61, 0x7a, 0x82, 0x0d, 0x4a,
0x0d, 0x25, 0x12, 0x68, 0x7a, 0x61, 0x69, 0x22, 0x3a, 0x77, 0xaf, 0xe7,
0x00, 0x38, 0x01, 0x40, 0x1c, 0x38, 0x01, 0x40, 0x2a, 0x00, 0x00, 0x20,
0x35, 0x00, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20, 0x36, 0x00, 0x00, 0x20,
0x34, 0x00, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20,
0x10, 0x27, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x20, 0xe1, 0x7a, 0x14, 0xae,
0x47, 0xe1, 0xf2, 0x3f, 0x00, 0x2c, 0x01, 0x40, 0x10, 0xb5, 0x00, 0xf0,
0xf1, 0xfb, 0xb6, 0x48, 0x00, 0xf0, 0x20, 0xfc, 0xb5, 0x48, 0x00, 0xf0,
0x1d, 0xfc, 0xb5, 0x48, 0x00, 0xf0, 0x1a, 0xfc, 0xb4, 0x48, 0x00, 0xf0,
0x17, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x13, 0xfc, 0xc0, 0x20,
0x80, 0x00, 0x00, 0xf0, 0x0f, 0xfc, 0x90, 0x23, 0x90, 0x20, 0x1b, 0x01,
0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xda, 0xfa, 0x90, 0x22,
0x90, 0x20, 0x02, 0x21, 0x12, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xf3, 0xfa,
0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0xcc, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xc5, 0xfa, 0x90, 0x20, 0x03, 0x22, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xdf, 0xfa, 0x80, 0x23, 0x00, 0x22, 0x01, 0x21, 0x9d, 0x48,
0x5b, 0x00, 0x00, 0xf0, 0xb8, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00,
0x99, 0x48, 0x00, 0xf0, 0xb2, 0xfa, 0xc0, 0x23, 0x90, 0x20, 0xdb, 0x00,
0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xaa, 0xfa, 0xc0, 0x22,
0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc3, 0xfa,
0x1b, 0x20, 0x00, 0xf0, 0xd3, 0xfe, 0xe1, 0x21, 0x8f, 0x4c, 0x49, 0x02,
0x20, 0x00, 0x00, 0xf0, 0x11, 0xfe, 0x08, 0x21, 0x20, 0x00, 0x00, 0xf0,
0x19, 0xfe, 0x00, 0x21, 0x20, 0x00, 0x00, 0xf0, 0x2b, 0xfe, 0x00, 0x21,
0x20, 0x00, 0x00, 0xf0, 0x1f, 0xfe, 0x0c, 0x21, 0x20, 0x00, 0x00, 0xf0,
0x2b, 0xfe, 0x00, 0x21, 0x20, 0x00, 0x00, 0xf0, 0x2d, 0xfe, 0x20, 0x23,
0x22, 0x68, 0x20, 0x00, 0x13, 0x43, 0x23, 0x60, 0x00, 0xf0, 0x2e, 0xfe,
0x80, 0x48, 0x00, 0xf0, 0xe6, 0xfb, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0,
0xb3, 0xfb, 0x00, 0x23, 0x7c, 0x48, 0x1a, 0x00, 0x19, 0x00, 0x00, 0xf0,
0xc1, 0xfb, 0xf0, 0x21, 0x79, 0x48, 0x49, 0x00, 0x00, 0xf0, 0xdc, 0xfb,
0x77, 0x48, 0x00, 0xf0, 0x34, 0xfd, 0x76, 0x48, 0x00, 0xf0, 0xc2, 0xfb,
0x74, 0x48, 0x00, 0xf0, 0xc4, 0xfb, 0x00, 0x21, 0x72, 0x48, 0x00, 0xf0,
0xf3, 0xfc, 0x07, 0x22, 0x00, 0x21, 0x70, 0x48, 0x00, 0xf0, 0xcc, 0xfb,
0x00, 0x21, 0x6e, 0x48, 0x00, 0xf0, 0xac, 0xfc, 0x00, 0x21, 0x6c, 0x48,
0x00, 0xf0, 0xc7, 0xfc, 0xfa, 0x22, 0x00, 0x21, 0x52, 0x00, 0x69, 0x48,
0x00, 0xf0, 0x04, 0xfd, 0x06, 0x21, 0x67, 0x48, 0x00, 0xf0, 0xdc, 0xfc,
0x07, 0x22, 0x06, 0x21, 0x64, 0x48, 0x00, 0xf0, 0xb5, 0xfb, 0x06, 0x21,
0x62, 0x48, 0x00, 0xf0, 0x95, 0xfc, 0x06, 0x21, 0x60, 0x48, 0x00, 0xf0,
0xb0, 0xfc, 0xfa, 0x22, 0x06, 0x21, 0x52, 0x00, 0x5d, 0x48, 0x00, 0xf0,
0xed, 0xfc, 0x5c, 0x48, 0x00, 0xf0, 0x98, 0xfb, 0x80, 0x20, 0xc0, 0x05,
0x00, 0xf0, 0x99, 0xfb, 0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x66, 0xfb,
0x0f, 0x20, 0x00, 0xf0, 0x5b, 0xfe, 0x00, 0x23, 0x80, 0x20, 0x1a, 0x00,
0x19, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x70, 0xfb, 0x80, 0x20, 0x30, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0x8b, 0xfb, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x7d, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x00, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x3c, 0xfd, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0xde, 0xfc, 0x00, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0x04, 0xfd, 0x80, 0x20, 0x50, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0x6e, 0xfd, 0x80, 0x20, 0x00, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfc,
0x80, 0x20, 0x00, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x27, 0xfc, 0x80, 0x20,
0x00, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x65, 0xfc, 0x80, 0x20, 0x00, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0x4b, 0xfd, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x32, 0xfb, 0x80, 0x20, 0x02, 0x22, 0x01, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x0c, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xae, 0xfc, 0x80, 0x20, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xd4, 0xfc, 0x80, 0x20, 0x50, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0x3e, 0xfd, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x5e, 0xfc,
0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xf7, 0xfb, 0x80, 0x20,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x35, 0xfc, 0x80, 0x20, 0x01, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0x1b, 0xfd, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x02, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0x18, 0xfb,
0x06, 0x20, 0x00, 0xf0, 0xe3, 0xfd, 0x04, 0x20, 0x16, 0x49, 0x00, 0xf0,
0x67, 0xf9, 0x02, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x2f, 0xf9, 0x04, 0x20,
0x00, 0xf0, 0x4c, 0xf9, 0x14, 0x49, 0x01, 0x20, 0x00, 0xf0, 0x0a, 0xf9,
0x00, 0x20, 0x00, 0xf0, 0xb7, 0xfd, 0x00, 0x22, 0x11, 0x4b, 0x12, 0x49,
0x1a, 0x60, 0x12, 0x4b, 0x18, 0x68, 0x00, 0xf0, 0x99, 0xfe, 0x00, 0xf0,
0xa5, 0xfd, 0x00, 0xf0, 0xb5, 0xfd, 0x00, 0xf0, 0xbb, 0xfd, 0x80, 0x21,
0x06, 0x48, 0x49, 0x00, 0x00, 0xf0, 0x86, 0xf9, 0xfe, 0xe7, 0xc0, 0x46,
0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00,
0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x00, 0x38, 0x01, 0x40,
0x00, 0x2c, 0x01, 0x40, 0x80, 0x84, 0x1e, 0x00, 0x18, 0xe0, 0x00, 0xe0,
0x00, 0x12, 0x7a, 0x00, 0x20, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x10, 0xb5,
0x1c, 0x68, 0xa3, 0x07, 0x01, 0xd5, 0x00, 0xf0, 0x3f, 0xf8, 0x63, 0x07,
0x01, 0xd5, 0x00, 0xf0, 0x27, 0xf8, 0x10, 0xbd, 0x10, 0x00, 0x00, 0x40,
0x04, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68,
0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x38, 0x01, 0x00, 0x20,
0x30, 0x00, 0x00, 0x20, 0x10, 0xb5, 0x00, 0x21, 0x06, 0x48, 0x00, 0xf0,
0x22, 0xfc, 0x06, 0x4b, 0x06, 0x4a, 0x19, 0x68, 0x04, 0x20, 0x11, 0x60,
0x00, 0x22, 0x1a, 0x60, 0x00, 0xf0, 0xfe, 0xf8, 0x10, 0xbd, 0xc0, 0x46,
0x00, 0x2c, 0x01, 0x40, 0x30, 0x00, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20,
0x10, 0xb5, 0xff, 0xf7, 0x45, 0xfd, 0x05, 0x4a, 0x05, 0x49, 0x13, 0x68,
0xc3, 0x1a, 0x0b, 0x60, 0x10, 0x60, 0x04, 0x4a, 0x13, 0x68, 0x01, 0x33,
0x13, 0x60, 0x10, 0xbd, 0x54, 0x01, 0x00, 0x20, 0x68, 0x01, 0x00, 0x20,
0x6c, 0x01, 0x00, 0x20, 0x70, 0xb5, 0xff, 0xf7, 0x31, 0xfd, 0x16, 0x4e,
0x16, 0x4a, 0x33, 0x68, 0x12, 0x68, 0x04, 0x00, 0x15, 0x4d, 0xc3, 0x1a,
0x93, 0x42, 0x1c, 0xd9, 0x29, 0x68, 0x32, 0x68, 0x00, 0x23, 0x91, 0x42,
0x01, 0xd0, 0x2b, 0x68, 0xc3, 0x1a, 0x11, 0x4a, 0x11, 0x48, 0x11, 0x78,
0x00, 0x78, 0x88, 0x42, 0x11, 0xd1, 0x10, 0x49, 0x0b, 0x60, 0x01, 0x23,
0x11, 0x78, 0x0f, 0x48, 0x5b, 0x1a, 0x80, 0x21, 0xdb, 0xb2, 0x13, 0x70,
0x13, 0x78, 0x49, 0x00, 0x00, 0x2b, 0x06, 0xd0, 0x00, 0xf0, 0x00, 0xf9,
0x34, 0x60, 0x2c, 0x60, 0x70, 0xbd, 0x09, 0x49, 0xec, 0xe7, 0x00, 0xf0,
0xfb, 0xf8, 0xf7, 0xe7, 0x4c, 0x01, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20,
0x50, 0x01, 0x00, 0x20, 0x58, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20,
0x48, 0x01, 0x00, 0x20, 0x00, 0x04, 0x00, 0x48, 0x78, 0x01, 0x00, 0x20,
0xf8, 0xb5, 0x1f, 0x4b, 0x00, 0x20, 0x1e, 0x68, 0x5f, 0x68, 0x1e, 0x49,
0x32, 0x00, 0x3b, 0x00, 0x00, 0xf0, 0xce, 0xfe, 0x00, 0x22, 0x1c, 0x4b,
0x00, 0xf0, 0xca, 0xfe, 0x00, 0x22, 0x1b, 0x4b, 0x00, 0xf0, 0xc6, 0xfe,
0x1a, 0x4b, 0x00, 0x22, 0x18, 0x60, 0x59, 0x60, 0x19, 0x4b, 0x1c, 0x68,
0x5d, 0x68, 0x14, 0x4b, 0x29, 0x00, 0x20, 0x00, 0x01, 0xf0, 0xc0, 0xfa,
0x00, 0x22, 0x16, 0x4b, 0x01, 0xf0, 0xbc, 0xfa, 0x00, 0x22, 0x11, 0x4b,
0x00, 0xf0, 0xb2, 0xfe, 0x13, 0x4b, 0x00, 0x22, 0x18, 0x60, 0x59, 0x60,
0x29, 0x00, 0x20, 0x00, 0x11, 0x4b, 0x01, 0xf0, 0xaf, 0xfa, 0x32, 0x00,
0x3b, 0x00, 0x00, 0xf0, 0xa5, 0xfe, 0x00, 0x22, 0x0e, 0x4b, 0x00, 0xf0,
0xa1, 0xfe, 0x00, 0x22, 0x06, 0x4b, 0x00, 0xf0, 0x9d, 0xfe, 0x0c, 0x4b,
0x18, 0x60, 0x59, 0x60, 0xf8, 0xbd, 0xc0, 0x46, 0x08, 0x00, 0x00, 0x20,
0x18, 0x8a, 0xd2, 0x41, 0x00, 0x00, 0x38, 0x40, 0x3c, 0x4e, 0x4b, 0x41,
0x40, 0x01, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0xe0, 0x3f,
0x70, 0x01, 0x00, 0x20, 0x81, 0x86, 0xc6, 0x41, 0x00, 0x00, 0x48, 0x40,
0x60, 0x01, 0x00, 0x20, 0x10, 0xb5, 0x0a, 0x4b, 0x0a, 0x4c, 0x19, 0x60,
0x20, 0x70, 0xff, 0xf7, 0xa3, 0xff, 0x80, 0x21, 0x08, 0x4b, 0x22, 0x78,
0x08, 0x48, 0x1a, 0x70, 0x1b, 0x78, 0x49, 0x00, 0x00, 0x2b, 0x02, 0xd0,
0x00, 0xf0, 0x80, 0xf8, 0x10, 0xbd, 0x00, 0xf0, 0x7f, 0xf8, 0xfb, 0xe7,
0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x58, 0x01, 0x00, 0x20,
0x00, 0x04, 0x00, 0x48, 0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x13, 0xd0,
0x00, 0x29, 0x07, 0xd1, 0x0a, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60,
0x09, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4a,
0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x05, 0x4a, 0x13, 0x68, 0x18, 0x43,
0x10, 0x60, 0xf5, 0xe7, 0x01, 0x4a, 0x13, 0x68, 0x03, 0x43, 0xf5, 0xe7,
0x08, 0x04, 0x01, 0x40, 0x0c, 0x04, 0x01, 0x40, 0x04, 0x4a, 0x13, 0x68,
0x03, 0x43, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60,
0x70, 0x47, 0xc0, 0x46, 0x00, 0x04, 0x01, 0x40, 0x04, 0x04, 0x01, 0x40,
0x01, 0x4b, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0x04, 0x01, 0x40,
0x19, 0x4b, 0xf7, 0xb5, 0xce, 0x18, 0x73, 0x42, 0x5e, 0x41, 0x00, 0x22,
0x01, 0x90, 0x76, 0x00, 0x01, 0x24, 0x23, 0x00, 0x93, 0x40, 0x01, 0x98,
0x18, 0x42, 0x17, 0xd0, 0x13, 0x4d, 0x03, 0x23, 0xa9, 0x42, 0x05, 0xd0,
0x16, 0xd8, 0x12, 0x4d, 0x23, 0x00, 0xa9, 0x42, 0x00, 0xd0, 0x33, 0x00,
0x10, 0x48, 0x03, 0x25, 0x94, 0x08, 0x24, 0x18, 0x0f, 0x20, 0x15, 0x40,
0xad, 0x00, 0xa8, 0x40, 0xab, 0x40, 0xa4, 0x00, 0x27, 0x68, 0x87, 0x43,
0x3b, 0x43, 0x23, 0x60, 0x01, 0x32, 0x10, 0x2a, 0xde, 0xd1, 0xf7, 0xbd,
0x08, 0x4c, 0x04, 0x23, 0xa1, 0x42, 0xe9, 0xd0, 0x07, 0x4c, 0x00, 0x23,
0xa1, 0x42, 0xe5, 0xd1, 0x05, 0x33, 0xe3, 0xe7, 0x00, 0xf8, 0xff, 0xb7,
0x00, 0x0c, 0x00, 0x48, 0x00, 0x04, 0x00, 0x48, 0x02, 0x40, 0x00, 0x10,
0x00, 0x10, 0x00, 0x48, 0x00, 0x14, 0x00, 0x48, 0x81, 0x61, 0x70, 0x47,
0x09, 0x04, 0x81, 0x61, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0, 0x01, 0x91,
0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68, 0xc3, 0x68,
0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0, 0x3d, 0x00,
0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43, 0x02, 0x9d,
0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31, 0x10, 0x29,
0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0xf7, 0xb5,
0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91, 0x41, 0x6a,
0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00,
0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x14, 0x43,
0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27, 0x01, 0x9a,
0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00, 0x20, 0x3d,
0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x33,
0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd, 0x00, 0x00,
0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0,
0xa7, 0xfc, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a,
0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a,
0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a,
0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a,
0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40,
0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40,
0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28,
0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0,
0x77, 0xfc, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a,
0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd,
0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7,
0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7,
0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46,
0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40,
0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8,
0x00, 0xf0, 0x4c, 0xfc, 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21,
0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22,
0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43,
0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43,
0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68,
0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47,
0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a,
0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff,
0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff,
0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff,
0x00, 0xf0, 0x32, 0xfb, 0x01, 0x20, 0x00, 0xf0, 0x37, 0xfb, 0xa0, 0x20,
0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff,
0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff,
0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60,
0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02,
0x24, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09,
0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68,
0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40,
0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a,
0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43,
0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43,
0xc3, 0x60, 0x70, 0x47, 0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43,
0x2c, 0x40, 0x0a, 0x43, 0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46,
0x8f, 0xfc, 0xff, 0xff, 0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60,
0x70, 0x47, 0x08, 0x22, 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47,
0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22,
0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x1c, 0xd8, 0x00, 0xf0,
0x81, 0xfb, 0x04, 0x1b, 0x2f, 0x1b, 0x5c, 0x1b, 0x86, 0x00, 0x03, 0x20,
0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x99, 0x61, 0x70, 0x21,
0x98, 0x69, 0x88, 0x43, 0x98, 0x61, 0x07, 0x2a, 0x0a, 0xd8, 0x10, 0x00,
0x00, 0xf0, 0x6e, 0xfb, 0x2f, 0x04, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18,
0x10, 0x22, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x20, 0x22,
0x99, 0x69, 0xf9, 0xe7, 0x30, 0x22, 0x99, 0x69, 0xf6, 0xe7, 0x40, 0x22,
0x99, 0x69, 0xf3, 0xe7, 0x50, 0x22, 0x99, 0x69, 0xf0, 0xe7, 0x60, 0x22,
0x99, 0x69, 0xed, 0xe7, 0x9a, 0x69, 0x11, 0x43, 0x99, 0x61, 0xeb, 0xe7,
0x99, 0x69, 0x42, 0x48, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0x41, 0x48,
0x99, 0x61, 0x99, 0x69, 0x01, 0x40, 0x99, 0x61, 0x07, 0x2a, 0xdf, 0xd8,
0x10, 0x00, 0x00, 0xf0, 0x43, 0xfb, 0x04, 0x06, 0x0a, 0x0e, 0x11, 0x15,
0x18, 0x1b, 0x9a, 0x69, 0xd5, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x52, 0x01,
0xd0, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x92, 0x01, 0xcc, 0xe7, 0xc0, 0x22,
0x99, 0x69, 0xfa, 0xe7, 0x80, 0x22, 0x99, 0x69, 0xd2, 0x01, 0xc5, 0xe7,
0xa0, 0x22, 0x99, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0x99, 0x69, 0xf7, 0xe7,
0xe0, 0x22, 0x99, 0x69, 0xf4, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43,
0xd9, 0x61, 0xd9, 0x69, 0xd9, 0x61, 0x70, 0x21, 0xd8, 0x69, 0x88, 0x43,
0xd8, 0x61, 0x07, 0x2a, 0xb2, 0xd8, 0x10, 0x00, 0x00, 0xf0, 0x16, 0xfb,
0x2f, 0x04, 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x10, 0x22, 0xd9, 0x69,
0x0a, 0x43, 0x27, 0xe0, 0x20, 0x22, 0xd9, 0x69, 0xfa, 0xe7, 0x30, 0x22,
0xd9, 0x69, 0xf7, 0xe7, 0x40, 0x22, 0xd9, 0x69, 0xf4, 0xe7, 0x50, 0x22,
0xd9, 0x69, 0xf1, 0xe7, 0x60, 0x22, 0xd9, 0x69, 0xee, 0xe7, 0xda, 0x69,
0x11, 0x43, 0xd9, 0x61, 0x94, 0xe7, 0xd9, 0x69, 0x16, 0x48, 0x01, 0x40,
0xd9, 0x61, 0xd9, 0x69, 0x15, 0x48, 0xd9, 0x61, 0xd9, 0x69, 0x01, 0x40,
0xd9, 0x61, 0x07, 0x2a, 0x00, 0xd9, 0x87, 0xe7, 0x10, 0x00, 0x00, 0xf0,
0xeb, 0xfa, 0x04, 0x07, 0x0b, 0x0f, 0x12, 0x16, 0x19, 0x1c, 0xda, 0x69,
0xda, 0x61, 0x7d, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0x52, 0x01, 0xcf, 0xe7,
0x80, 0x22, 0xd9, 0x69, 0x92, 0x01, 0xcb, 0xe7, 0xc0, 0x22, 0xd9, 0x69,
0xfa, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0xd2, 0x01, 0xc4, 0xe7, 0xa0, 0x22,
0xd9, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0xd9, 0x69, 0xf7, 0xe7, 0xe0, 0x22,
0xd9, 0x69, 0xf4, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a,
0x00, 0xf0, 0xc0, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00,
0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7,
0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21,
0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a,
0x00, 0xf0, 0x9c, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00,
0x02, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x22, 0xfa, 0xe7,
0x80, 0x22, 0x92, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x92, 0x01, 0xf4, 0xe7,
0x08, 0x22, 0xf2, 0xe7, 0x80, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0x12, 0x01,
0xed, 0xe7, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8,
0x19, 0x6a, 0x00, 0xf0, 0x7d, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14,
0x0d, 0x00, 0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22,
0xfa, 0xe7, 0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01,
0xf4, 0xe7, 0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22,
0xd2, 0x00, 0xed, 0xe7, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x5e, 0xfa, 0x04, 0x0f, 0x08, 0x11,
0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd,
0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49,
0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x06, 0xd8, 0x00, 0xf0, 0x3b, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05,
0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63,
0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02,
0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0,
0x1f, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20, 0x99, 0x69, 0x12, 0x01,
0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd,
0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69,
0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01, 0x81, 0x43, 0xd9, 0x61,
0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48,
0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46,
0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29,
0x0b, 0xd8, 0x00, 0xf0, 0xf3, 0xf9, 0x02, 0x0b, 0x12, 0x1b, 0x0c, 0x20,
0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43,
0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x92, 0x02, 0x01, 0x40,
0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20, 0xd9, 0x69, 0x92, 0x00,
0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7,
0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, 0x03, 0x00, 0x08, 0x00,
0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00, 0x0a, 0x40, 0xa5, 0x43,
0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c, 0x00, 0xd8, 0x4a, 0x40,
0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xbc, 0xf9, 0x02, 0x0a, 0x11, 0x19,
0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43,
0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48, 0x12, 0x02, 0x01, 0x40,
0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43,
0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xef, 0xe7, 0xd9, 0x69,
0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7,
0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00, 0x8b, 0x40, 0x02, 0x6a,
0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22, 0x83, 0x68, 0x93, 0x43,
0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, 0x70, 0x47, 0x70, 0x22,
0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60,
0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00,
0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x84, 0xf9, 0xe0, 0x60, 0x10, 0xbd,
0x24, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a,
0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01,
0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a,
0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff,
0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47,
0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43,
0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43,
0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68,
0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x70, 0xb5, 0x0d, 0x00, 0x04, 0x00,
0x00, 0xf0, 0x0d, 0xf8, 0x29, 0x00, 0x20, 0x00, 0x00, 0xf0, 0x01, 0xf8,
0x70, 0xbd, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62, 0x70, 0x47, 0x40, 0x6a,
0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0x80, 0x23, 0xc2, 0x69, 0x1a, 0x42,
0xfc, 0xd0, 0x70, 0x47, 0xfe, 0xe7, 0x70, 0x47, 0x10, 0xb5, 0x16, 0x4b,
0x16, 0x4a, 0x17, 0x49, 0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a,
0x93, 0x42, 0x17, 0xd3, 0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68,
0x14, 0x4c, 0x0b, 0x43, 0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3,
0x13, 0x4c, 0x14, 0x4b, 0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0x20, 0xf9,
0x12, 0x4c, 0x13, 0x4b, 0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca,
0x01, 0xc3, 0xe1, 0xe7, 0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47,
0xe9, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47,
0xed, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0x00, 0x20, 0x04, 0x2a, 0x00, 0x08,
0x28, 0x00, 0x00, 0x20, 0x7c, 0x01, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0,
0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08,
0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08,
0x02, 0x4b, 0x00, 0x02, 0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x14, 0xe0, 0x00, 0xe0, 0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68,
0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0,
0x02, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47,
0x10, 0xe0, 0x00, 0xe0, 0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43,
0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09,
0x9b, 0x00, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40,
0x1a, 0x60, 0x70, 0x47, 0x00, 0xe1, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a,
0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40,
0x07, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60,
0x70, 0x47, 0xc0, 0x46, 0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46,
0x00, 0xb5, 0x0f, 0x2a, 0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43,
0x1e, 0x40, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00,
0x10, 0x3d, 0x2d, 0x09, 0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44,
0x00, 0xe0, 0x3b, 0x00, 0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68,
0x1d, 0x60, 0xdf, 0x60, 0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60,
0x10, 0x34, 0x43, 0x45, 0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24,
0x01, 0x35, 0x2d, 0x01, 0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42,
0x23, 0xd0, 0x8c, 0x59, 0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c,
0xf9, 0xd8, 0x03, 0x24, 0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00,
0x22, 0x40, 0xed, 0x18, 0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0,
0x00, 0x23, 0x00, 0xe0, 0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54,
0x9e, 0x42, 0xf9, 0xd1, 0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00,
0x56, 0x1e, 0x00, 0x2a, 0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00,
0xec, 0xe7, 0x1a, 0x00, 0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00,
0x83, 0x07, 0x4a, 0xd0, 0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2,
0x03, 0x00, 0x03, 0x22, 0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3,
0x01, 0x33, 0x2e, 0x70, 0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9,
0xff, 0x22, 0x0a, 0x40, 0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43,
0x0f, 0x2c, 0x35, 0xd9, 0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01,
0xb4, 0x46, 0x1e, 0x00, 0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60,
0x55, 0x60, 0x95, 0x60, 0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1,
0x0f, 0x26, 0x0c, 0x22, 0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19,
0x37, 0x00, 0x22, 0x42, 0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00,
0xa4, 0x46, 0x1a, 0x00, 0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42,
0xfc, 0xd1, 0x03, 0x24, 0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40,
0x00, 0x2c, 0x05, 0xd0, 0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33,
0x9c, 0x42, 0xfb, 0xd1, 0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00,
0x03, 0x00, 0xbf, 0xe7, 0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46,
0x49, 0x08, 0x49, 0x00, 0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc,
0x70, 0x47, 0xc0, 0x46, 0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3,
0x03, 0x09, 0x8b, 0x42, 0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3,
0x03, 0x0b, 0x8b, 0x42, 0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3,
0xff, 0x22, 0x09, 0x02, 0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3,
0x12, 0x12, 0x09, 0x02, 0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3,
0x00, 0xe0, 0x09, 0x0a, 0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03,
0xc0, 0x1a, 0x52, 0x41, 0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03,
0xc0, 0x1a, 0x52, 0x41, 0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03,
0xc0, 0x1a, 0x52, 0x41, 0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03,
0xc0, 0x1a, 0x52, 0x41, 0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02,
0xc0, 0x1a, 0x52, 0x41, 0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02,
0xc0, 0x1a, 0x52, 0x41, 0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02,
0xc0, 0x1a, 0x52, 0x41, 0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02,
0xc0, 0x1a, 0x52, 0x41, 0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3,
0xcb, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3,
0x8b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3,
0x4b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3,
0x0b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3,
0xcb, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3,
0x8b, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3,
0x4b, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46,
0x52, 0x41, 0x10, 0x46, 0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20,
0x00, 0xf0, 0x06, 0xf8, 0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0,
0x76, 0xe7, 0x70, 0x47, 0x70, 0x47, 0xc0, 0x46, 0x84, 0x46, 0x10, 0x1c,
0x62, 0x46, 0x8c, 0x46, 0x19, 0x1c, 0x63, 0x46, 0x00, 0xe0, 0xc0, 0x46,
0x1f, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21,
0xc8, 0x42, 0x1f, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0x31, 0xfb, 0x40, 0x42,
0x01, 0x30, 0x10, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0xd9, 0xfb, 0x00, 0x28,
0x01, 0xdb, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46,
0x10, 0xb5, 0x00, 0xf0, 0xcf, 0xfb, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20,
0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0,
0x53, 0xfb, 0x00, 0x28, 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20,
0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x49, 0xfb, 0x00, 0x28,
0x01, 0xda, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46,
0x70, 0xb5, 0x00, 0x22, 0x0c, 0x4b, 0x04, 0x00, 0x0d, 0x00, 0xff, 0xf7,
0xef, 0xff, 0x00, 0x28, 0x04, 0xd1, 0x20, 0x00, 0x29, 0x00, 0x01, 0xf0,
0x15, 0xfa, 0x70, 0xbd, 0x06, 0x4b, 0x00, 0x22, 0x20, 0x00, 0x29, 0x00,
0x00, 0xf0, 0x7c, 0xfe, 0x01, 0xf0, 0x0c, 0xfa, 0x80, 0x23, 0x1b, 0x06,
0x9c, 0x46, 0x60, 0x44, 0xf1, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0xe0, 0x41,
0xf0, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0xe0, 0xb5,
0x81, 0x46, 0x05, 0x00, 0x0c, 0x03, 0x48, 0x00, 0x92, 0x46, 0x1f, 0x00,
0x85, 0xb0, 0x24, 0x0b, 0x40, 0x0d, 0xce, 0x0f, 0x00, 0x28, 0x59, 0xd0,
0x87, 0x4b, 0x98, 0x42, 0x00, 0xd1, 0x98, 0xe0, 0x6b, 0x0f, 0xe4, 0x00,
0x1c, 0x43, 0x80, 0x23, 0x1b, 0x04, 0x23, 0x43, 0x98, 0x46, 0x83, 0x4b,
0xed, 0x00, 0x9b, 0x46, 0x00, 0x23, 0x99, 0x46, 0x83, 0x44, 0x00, 0x93,
0x3c, 0x03, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b, 0x5b, 0x0d, 0xff, 0x0f,
0x00, 0x2b, 0x67, 0xd0, 0x7a, 0x4a, 0x93, 0x42, 0x18, 0xd0, 0x7a, 0x49,
0x42, 0x0f, 0x8c, 0x46, 0xe4, 0x00, 0x59, 0x46, 0x14, 0x43, 0x80, 0x22,
0x63, 0x44, 0x12, 0x04, 0xcb, 0x1a, 0x14, 0x43, 0x9b, 0x46, 0xc2, 0x00,
0x00, 0x20, 0x33, 0x00, 0x7b, 0x40, 0x9a, 0x46, 0x4b, 0x46, 0x0f, 0x2b,
0x00, 0xd9, 0xef, 0xe0, 0x70, 0x49, 0x9b, 0x00, 0xcb, 0x58, 0x9f, 0x46,
0x6f, 0x4b, 0x52, 0x46, 0x9c, 0x46, 0x22, 0x43, 0xe3, 0x44, 0x00, 0x2a,
0x00, 0xd0, 0x95, 0xe0, 0x49, 0x46, 0x02, 0x23, 0x19, 0x43, 0x89, 0x46,
0x00, 0x24, 0x02, 0x20, 0xe5, 0xe7, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25,
0x52, 0x46, 0x1b, 0x05, 0x23, 0x43, 0xd2, 0x07, 0x13, 0x43, 0x28, 0x00,
0x19, 0x00, 0x05, 0xb0, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46,
0xab, 0x46, 0xf0, 0xbd, 0x00, 0x24, 0x00, 0x25, 0x5b, 0x4b, 0xed, 0xe7,
0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x00, 0xd1, 0x89, 0xe0, 0x00, 0x2c,
0x00, 0xd1, 0xe0, 0xe1, 0x20, 0x00, 0x01, 0xf0, 0xe9, 0xf9, 0x01, 0x00,
0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, 0x5b, 0x1a, 0x49, 0x46, 0x10, 0x00,
0xd9, 0x40, 0x08, 0x38, 0x84, 0x40, 0x0b, 0x00, 0x4d, 0x46, 0x23, 0x43,
0x98, 0x46, 0x85, 0x40, 0x51, 0x48, 0x3c, 0x03, 0x83, 0x1a, 0x9b, 0x46,
0x00, 0x23, 0x99, 0x46, 0x00, 0x93, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b,
0x5b, 0x0d, 0xff, 0x0f, 0x00, 0x2b, 0x97, 0xd1, 0x52, 0x46, 0x22, 0x43,
0x55, 0xd0, 0x00, 0x2c, 0x00, 0xd1, 0xca, 0xe1, 0x20, 0x00, 0x01, 0xf0,
0xc3, 0xf9, 0x02, 0x00, 0x0b, 0x3a, 0x1d, 0x23, 0x01, 0x00, 0x9b, 0x1a,
0x52, 0x46, 0x08, 0x39, 0xda, 0x40, 0x8c, 0x40, 0x14, 0x43, 0x52, 0x46,
0x8a, 0x40, 0x41, 0x4b, 0x58, 0x44, 0x9b, 0x46, 0x83, 0x44, 0x00, 0x20,
0x8d, 0xe7, 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x40, 0xd1, 0x08, 0x23,
0x99, 0x46, 0x06, 0x3b, 0x00, 0x25, 0x83, 0x46, 0x00, 0x93, 0x69, 0xe7,
0xb2, 0x46, 0x00, 0x9b, 0x02, 0x2b, 0xa9, 0xd0, 0x03, 0x2b, 0x00, 0xd1,
0x11, 0xe2, 0x01, 0x2b, 0x93, 0xd0, 0x35, 0x4a, 0x5a, 0x44, 0x00, 0x2a,
0x00, 0xdc, 0x3c, 0xe1, 0x6b, 0x07, 0x00, 0xd0, 0xa7, 0xe1, 0xed, 0x08,
0x43, 0x46, 0xdb, 0x01, 0x06, 0xd5, 0x42, 0x46, 0x2f, 0x4b, 0x1a, 0x40,
0x90, 0x46, 0x80, 0x22, 0xd2, 0x00, 0x5a, 0x44, 0x2d, 0x4b, 0x9a, 0x42,
0x8e, 0xdc, 0x43, 0x46, 0x52, 0x05, 0x58, 0x07, 0x5c, 0x02, 0x05, 0x43,
0x24, 0x0b, 0x53, 0x0d, 0x78, 0xe7, 0xba, 0x46, 0xa0, 0x46, 0x15, 0x00,
0x00, 0x90, 0xd4, 0xe7, 0x4a, 0x46, 0x03, 0x23, 0x1a, 0x43, 0x91, 0x46,
0x03, 0x20, 0x52, 0x46, 0x4f, 0xe7, 0x49, 0x46, 0x01, 0x23, 0x19, 0x43,
0x89, 0x46, 0x00, 0x24, 0x01, 0x20, 0x48, 0xe7, 0x0c, 0x23, 0x99, 0x46,
0x09, 0x3b, 0xa0, 0x46, 0x83, 0x46, 0x00, 0x93, 0x28, 0xe7, 0x04, 0x23,
0x99, 0x46, 0x00, 0x23, 0x9b, 0x46, 0x01, 0x33, 0x00, 0x25, 0x00, 0x93,
0x20, 0xe7, 0x00, 0x23, 0x80, 0x24, 0x9a, 0x46, 0x00, 0x25, 0x0d, 0x4b,
0x24, 0x03, 0x4f, 0xe7, 0x80, 0x23, 0x41, 0x46, 0x1b, 0x03, 0x19, 0x42,
0x08, 0xd0, 0x1c, 0x42, 0x06, 0xd1, 0x1c, 0x43, 0x24, 0x03, 0xba, 0x46,
0x15, 0x00, 0x06, 0x4b, 0x24, 0x0b, 0x41, 0xe7, 0x80, 0x24, 0x43, 0x46,
0x24, 0x03, 0x1c, 0x43, 0x24, 0x03, 0xb2, 0x46, 0x01, 0x4b, 0x24, 0x0b,
0x38, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0x01, 0xfc, 0xff, 0xff,
0x84, 0x29, 0x00, 0x08, 0x01, 0xf8, 0xff, 0xff, 0x0d, 0xfc, 0xff, 0xff,
0xf3, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe,
0xfe, 0x07, 0x00, 0x00, 0x44, 0x45, 0x00, 0xd2, 0x16, 0xe1, 0x00, 0xd1,
0x11, 0xe1, 0x01, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x2e, 0x00, 0x40, 0x46,
0x00, 0x25, 0xe3, 0x44, 0x23, 0x02, 0x14, 0x0e, 0x1c, 0x43, 0x1b, 0x0c,
0x99, 0x46, 0x23, 0x04, 0x1f, 0x0c, 0x12, 0x02, 0x49, 0x46, 0x00, 0x92,
0x01, 0x97, 0xff, 0xf7, 0x51, 0xfe, 0x02, 0x00, 0x7a, 0x43, 0x0b, 0x04,
0x31, 0x0c, 0x80, 0x46, 0x19, 0x43, 0x8a, 0x42, 0x0b, 0xd9, 0x01, 0x23,
0x5b, 0x42, 0x9c, 0x46, 0x09, 0x19, 0xe0, 0x44, 0x8c, 0x42, 0x04, 0xd8,
0x8a, 0x42, 0x02, 0xd9, 0x83, 0x1e, 0x98, 0x46, 0x09, 0x19, 0x88, 0x1a,
0x49, 0x46, 0xff, 0xf7, 0x39, 0xfe, 0x09, 0x04, 0x8c, 0x46, 0x31, 0x04,
0x66, 0x46, 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, 0x31, 0x43,
0x8a, 0x42, 0x04, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, 0x00, 0xd8,
0x11, 0xe1, 0x89, 0x1a, 0x42, 0x46, 0x00, 0x9e, 0x12, 0x04, 0x1a, 0x43,
0x33, 0x0c, 0x1f, 0x00, 0x10, 0x0c, 0x90, 0x46, 0x02, 0x93, 0x13, 0x04,
0x32, 0x04, 0x16, 0x0c, 0x32, 0x00, 0x1b, 0x0c, 0x5a, 0x43, 0x03, 0x96,
0x7b, 0x43, 0x46, 0x43, 0x78, 0x43, 0x17, 0x0c, 0xbc, 0x46, 0x9b, 0x19,
0x63, 0x44, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, 0x76, 0x02, 0xb4, 0x46,
0x60, 0x44, 0x1e, 0x0c, 0x30, 0x18, 0x16, 0x04, 0x1b, 0x04, 0x36, 0x0c,
0x9e, 0x19, 0x81, 0x42, 0x00, 0xd2, 0x9c, 0xe0, 0x00, 0xd1, 0x97, 0xe0,
0xae, 0x1b, 0x09, 0x1a, 0xb5, 0x42, 0x80, 0x41, 0x40, 0x42, 0x08, 0x1a,
0x84, 0x42, 0x00, 0xd1, 0x11, 0xe1, 0x49, 0x46, 0xff, 0xf7, 0xf4, 0xfd,
0x01, 0x9a, 0x0b, 0x04, 0x42, 0x43, 0x31, 0x0c, 0x05, 0x00, 0x19, 0x43,
0x8a, 0x42, 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3d, 0x8c, 0x42, 0x03, 0xd8,
0x8a, 0x42, 0x01, 0xd9, 0x85, 0x1e, 0x09, 0x19, 0x88, 0x1a, 0x49, 0x46,
0xff, 0xf7, 0xe0, 0xfd, 0x09, 0x04, 0x8c, 0x46, 0x31, 0x04, 0x66, 0x46,
0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, 0x31, 0x43, 0x8a, 0x42,
0x07, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, 0x03, 0xd8, 0x8a, 0x42,
0x01, 0xd9, 0x83, 0x1e, 0x09, 0x19, 0x03, 0x9e, 0x89, 0x1a, 0x32, 0x00,
0x2d, 0x04, 0x1d, 0x43, 0x02, 0x9f, 0x2b, 0x04, 0x1b, 0x0c, 0x5a, 0x43,
0x7b, 0x43, 0x9c, 0x46, 0x28, 0x0c, 0x46, 0x43, 0x13, 0x0c, 0xb4, 0x44,
0x63, 0x44, 0x78, 0x43, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, 0x76, 0x02,
0xb4, 0x46, 0x60, 0x44, 0x1e, 0x0c, 0x12, 0x04, 0x1b, 0x04, 0x12, 0x0c,
0x30, 0x18, 0x9b, 0x18, 0x81, 0x42, 0x06, 0xd3, 0x02, 0xd0, 0x01, 0x23,
0x1d, 0x43, 0xce, 0xe6, 0x00, 0x2b, 0x00, 0xd1, 0xcb, 0xe6, 0x61, 0x18,
0x6e, 0x1e, 0xa1, 0x42, 0x00, 0xd2, 0xa4, 0xe0, 0x81, 0x42, 0x00, 0xd2,
0xc9, 0xe0, 0x00, 0xd1, 0xd9, 0xe0, 0x35, 0x00, 0xed, 0xe7, 0x01, 0x25,
0x6d, 0x42, 0x01, 0x21, 0x89, 0x1a, 0x38, 0x29, 0x00, 0xdd, 0x4c, 0xe6,
0x1f, 0x29, 0x00, 0xdc, 0x7f, 0xe0, 0x1f, 0x23, 0x5b, 0x42, 0x9a, 0x1a,
0x43, 0x46, 0xd3, 0x40, 0x20, 0x29, 0x04, 0xd0, 0x44, 0x46, 0x65, 0x4a,
0x5a, 0x44, 0x94, 0x40, 0x25, 0x43, 0x6a, 0x1e, 0x95, 0x41, 0x07, 0x22,
0x2b, 0x43, 0x15, 0x00, 0x00, 0x24, 0x1d, 0x40, 0x1a, 0x42, 0x00, 0xd1,
0xa1, 0xe0, 0x0f, 0x22, 0x00, 0x24, 0x1a, 0x40, 0x04, 0x2a, 0x00, 0xd1,
0x98, 0xe0, 0x1a, 0x1d, 0x9a, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xe4, 0x18,
0x13, 0x00, 0x22, 0x02, 0x00, 0xd4, 0x8f, 0xe0, 0x01, 0x23, 0x00, 0x24,
0x00, 0x25, 0x23, 0xe6, 0xb5, 0x42, 0x00, 0xd3, 0x64, 0xe7, 0x43, 0x46,
0x5a, 0x1e, 0x00, 0x9b, 0x9c, 0x46, 0x65, 0x44, 0x1f, 0x00, 0x9d, 0x42,
0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18, 0x8c, 0x42, 0x3a, 0xd2,
0x88, 0x42, 0x63, 0xd8, 0x60, 0xd0, 0x90, 0x46, 0x52, 0xe7, 0xaa, 0x42,
0x00, 0xd9, 0xea, 0xe6, 0x43, 0x46, 0xde, 0x07, 0x58, 0x08, 0x6b, 0x08,
0x1e, 0x43, 0xed, 0x07, 0xea, 0xe6, 0x48, 0x46, 0x01, 0xf0, 0x08, 0xf8,
0x01, 0x00, 0x02, 0x00, 0x15, 0x31, 0x20, 0x32, 0x1c, 0x29, 0x00, 0xdc,
0x1a, 0xe6, 0x4b, 0x46, 0x08, 0x38, 0x83, 0x40, 0x00, 0x25, 0x98, 0x46,
0x20, 0xe6, 0x00, 0xf0, 0xf9, 0xff, 0x03, 0x00, 0x1a, 0x00, 0x15, 0x32,
0x20, 0x30, 0x1c, 0x2a, 0x00, 0xdc, 0x30, 0xe6, 0x54, 0x46, 0x08, 0x3b,
0x00, 0x22, 0x9c, 0x40, 0x35, 0xe6, 0x0f, 0x23, 0x2b, 0x40, 0x04, 0x2b,
0x00, 0xd1, 0x52, 0xe6, 0x05, 0x23, 0x5b, 0x42, 0xab, 0x42, 0x9b, 0x41,
0x04, 0x35, 0x5b, 0x42, 0xed, 0x08, 0x98, 0x44, 0x4a, 0xe6, 0x8c, 0x42,
0xc5, 0xd1, 0xaf, 0x42, 0xc0, 0xd9, 0x90, 0x46, 0x16, 0xe7, 0x8a, 0x42,
0x00, 0xd8, 0xea, 0xe6, 0x83, 0x1e, 0x09, 0x19, 0xe7, 0xe6, 0x2a, 0x4a,
0x28, 0x00, 0x5a, 0x44, 0x43, 0x46, 0x95, 0x40, 0x93, 0x40, 0xc8, 0x40,
0x6a, 0x1e, 0x95, 0x41, 0x44, 0x46, 0x03, 0x43, 0x2b, 0x43, 0xcc, 0x40,
0x5a, 0x07, 0x92, 0xd0, 0x0f, 0x22, 0x1a, 0x40, 0x04, 0x2a, 0x88, 0xd1,
0x8d, 0xe7, 0x35, 0x00, 0x81, 0x42, 0x00, 0xd0, 0x4b, 0xe7, 0x00, 0x9a,
0x93, 0x42, 0x00, 0xd0, 0x47, 0xe7, 0x18, 0xe6, 0xae, 0x42, 0x9c, 0xd9,
0x02, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x00, 0x9b, 0xe0, 0x44, 0x9c, 0x46,
0x65, 0x44, 0x9d, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18,
0xe4, 0xe6, 0x15, 0x4a, 0x5a, 0x44, 0x00, 0x2a, 0x00, 0xdc, 0x44, 0xe7,
0x01, 0x23, 0x00, 0x25, 0x98, 0x44, 0x09, 0xe6, 0x65, 0x07, 0x64, 0x02,
0x24, 0x0b, 0xdb, 0x08, 0x1d, 0x43, 0x00, 0x23, 0x90, 0xe5, 0x00, 0x9e,
0x02, 0x3d, 0x72, 0x00, 0xb2, 0x42, 0xbf, 0x41, 0x7f, 0x42, 0x3c, 0x19,
0x09, 0x19, 0x00, 0x92, 0xce, 0xe7, 0x80, 0x24, 0x43, 0x46, 0x24, 0x03,
0x1c, 0x43, 0x24, 0x03, 0x06, 0x4b, 0x24, 0x0b, 0x7e, 0xe5, 0x00, 0x9a,
0x9a, 0x42, 0xea, 0xd3, 0x35, 0x00, 0xc4, 0xe7, 0x3e, 0x04, 0x00, 0x00,
0x1e, 0x04, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00,
0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, 0x94, 0x46, 0x91, 0x46,
0x1a, 0x03, 0x12, 0x0b, 0x18, 0x4d, 0xc0, 0xb5, 0x4c, 0x00, 0x0f, 0x03,
0x92, 0x46, 0x5a, 0x00, 0x06, 0x00, 0x80, 0x46, 0x3f, 0x0b, 0x01, 0x20,
0x64, 0x0d, 0xc9, 0x0f, 0x52, 0x0d, 0xdb, 0x0f, 0xac, 0x42, 0x0a, 0xd0,
0xaa, 0x42, 0x03, 0xd0, 0x94, 0x42, 0x01, 0xd1, 0x57, 0x45, 0x0d, 0xd0,
0x1c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0x3d, 0x00,
0x35, 0x43, 0xf7, 0xd1, 0xa2, 0x42, 0xf5, 0xd1, 0x52, 0x46, 0x65, 0x46,
0x2a, 0x43, 0xf1, 0xd1, 0x01, 0x20, 0xc8, 0x45, 0xee, 0xd1, 0x99, 0x42,
0x06, 0xd0, 0x00, 0x2c, 0xea, 0xd1, 0x3e, 0x43, 0x30, 0x00, 0x46, 0x1e,
0xb0, 0x41, 0xe5, 0xe7, 0x00, 0x20, 0xe3, 0xe7, 0xff, 0x07, 0x00, 0x00,
0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00,
0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x32, 0x4d,
0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46,
0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42,
0x29, 0xd0, 0xab, 0x42, 0x18, 0xd0, 0x00, 0x2a, 0x2a, 0xd1, 0x3c, 0x43,
0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, 0x02, 0xd1, 0x4c, 0x46,
0x26, 0x43, 0x27, 0xd0, 0x00, 0x2d, 0x15, 0xd1, 0x81, 0x42, 0x28, 0xd0,
0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, 0x3c, 0xbc, 0x90, 0x46,
0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x4d, 0x46, 0x2e, 0x43,
0x2f, 0xd1, 0x00, 0x2a, 0xee, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41,
0x00, 0x2d, 0xe9, 0xd0, 0x00, 0x28, 0xed, 0xd1, 0x01, 0x20, 0x40, 0x42,
0xea, 0xe7, 0x3d, 0x00, 0x25, 0x43, 0x20, 0xd1, 0x93, 0x42, 0xeb, 0xd0,
0x00, 0x2b, 0xdd, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xda, 0xd1, 0xdb, 0xe7,
0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0xdb, 0xd0, 0xd6, 0xe7, 0x9a, 0x42,
0x0a, 0xdc, 0xe7, 0xdb, 0x4f, 0x45, 0xd1, 0xd8, 0x10, 0xd0, 0x00, 0x20,
0x4f, 0x45, 0xd1, 0xd2, 0x00, 0x29, 0xe1, 0xd0, 0x08, 0x00, 0xcd, 0xe7,
0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, 0x01, 0x38,
0xc6, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xc3, 0xe7, 0xc4, 0x45, 0xbd, 0xd8,
0x00, 0x20, 0xc4, 0x45, 0xbe, 0xd2, 0xeb, 0xe7, 0xff, 0x07, 0x00, 0x00,
0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00,
0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x31, 0x4d,
0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46,
0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42,
0x11, 0xd0, 0xab, 0x42, 0x14, 0xd0, 0x00, 0x2a, 0x2f, 0xd1, 0x3c, 0x43,
0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, 0x14, 0xd1, 0x4c, 0x46,
0x26, 0x43, 0x11, 0xd1, 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0x17, 0xd0,
0x10, 0xe0, 0x3d, 0x00, 0x25, 0x43, 0x12, 0xd1, 0x93, 0x42, 0x1c, 0xd1,
0x4d, 0x46, 0x2e, 0x43, 0x0d, 0xd1, 0x00, 0x2a, 0x04, 0xd1, 0x3c, 0x43,
0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0x0d, 0xd1, 0x81, 0x42, 0x16, 0xd0,
0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20,
0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd,
0x00, 0x28, 0xf7, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xf4, 0xe7, 0x00, 0x2b,
0xea, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xe7, 0xd1, 0xe8, 0xe7, 0x9a, 0x42,
0x06, 0xdd, 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40,
0x01, 0x38, 0xe5, 0xe7, 0x9a, 0x42, 0xe9, 0xdb, 0x4f, 0x45, 0xdb, 0xd8,
0x06, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xdd, 0xd2, 0x00, 0x29, 0xe3, 0xd0,
0x08, 0x00, 0xd9, 0xe7, 0xc4, 0x45, 0xd1, 0xd8, 0x00, 0x20, 0xc4, 0x45,
0xd4, 0xd2, 0xf5, 0xe7, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x57, 0x46,
0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0xe0, 0xb5, 0x98, 0x46, 0x0c, 0x03,
0x4b, 0x00, 0x06, 0x00, 0x92, 0x46, 0x87, 0xb0, 0x24, 0x0b, 0x5b, 0x0d,
0xcf, 0x0f, 0x00, 0x2b, 0x6c, 0xd0, 0xdd, 0x4a, 0x93, 0x42, 0x00, 0xd1,
0x86, 0xe0, 0x42, 0x0f, 0xe4, 0x00, 0x14, 0x43, 0x80, 0x22, 0x12, 0x04,
0x14, 0x43, 0xd9, 0x4a, 0xc5, 0x00, 0x94, 0x46, 0x63, 0x44, 0x00, 0x93,
0x00, 0x23, 0x99, 0x46, 0x9b, 0x46, 0x43, 0x46, 0x42, 0x46, 0x1e, 0x03,
0xd2, 0x0f, 0x5b, 0x00, 0x50, 0x46, 0x90, 0x46, 0x36, 0x0b, 0x5b, 0x0d,
0x00, 0xd1, 0x78, 0xe0, 0xce, 0x4a, 0x93, 0x42, 0x1d, 0xd0, 0xce, 0x49,
0x42, 0x0f, 0x8c, 0x46, 0x00, 0x99, 0x63, 0x44, 0xf6, 0x00, 0x8c, 0x46,
0x16, 0x43, 0x80, 0x22, 0x9c, 0x44, 0x12, 0x04, 0x63, 0x46, 0x16, 0x43,
0xc2, 0x00, 0x00, 0x20, 0x00, 0x93, 0x00, 0x99, 0x43, 0x46, 0x01, 0x31,
0x8c, 0x46, 0x49, 0x46, 0x7b, 0x40, 0x01, 0x93, 0x0f, 0x29, 0x00, 0xd9,
0x7e, 0xe0, 0xc2, 0x4b, 0x89, 0x00, 0x59, 0x58, 0x8f, 0x46, 0x52, 0x46,
0x00, 0x9b, 0x32, 0x43, 0x00, 0xd0, 0x56, 0xe1, 0xbb, 0x49, 0x00, 0x26,
0x8c, 0x46, 0x63, 0x44, 0x49, 0x46, 0x00, 0x93, 0x02, 0x23, 0x19, 0x43,
0x89, 0x46, 0x02, 0x20, 0xe1, 0xe7, 0x43, 0x46, 0x01, 0x93, 0x34, 0x00,
0x15, 0x00, 0x83, 0x46, 0x5b, 0x46, 0x02, 0x2b, 0x5e, 0xd0, 0x03, 0x2b,
0x00, 0xd1, 0xf3, 0xe1, 0x01, 0x2b, 0x00, 0xd0, 0x18, 0xe1, 0x00, 0x22,
0x00, 0x24, 0x00, 0x25, 0x01, 0x9b, 0x12, 0x05, 0x22, 0x43, 0xdb, 0x07,
0x1a, 0x43, 0x28, 0x00, 0x11, 0x00, 0x07, 0xb0, 0x3c, 0xbc, 0x90, 0x46,
0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x25, 0x00, 0x05, 0x43,
0x00, 0xd1, 0x41, 0xe1, 0x00, 0x2c, 0x00, 0xd1, 0xad, 0xe1, 0x20, 0x00,
0x00, 0xf0, 0xd2, 0xfd, 0x01, 0x00, 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23,
0x10, 0x00, 0x5b, 0x1a, 0x31, 0x00, 0x35, 0x00, 0x08, 0x38, 0x84, 0x40,
0xd9, 0x40, 0x85, 0x40, 0x0c, 0x43, 0x9e, 0x48, 0x83, 0x1a, 0x00, 0x93,
0x00, 0x23, 0x99, 0x46, 0x9b, 0x46, 0x86, 0xe7, 0x05, 0x00, 0x25, 0x43,
0x00, 0xd0, 0x1c, 0xe1, 0x08, 0x22, 0x00, 0x93, 0x02, 0x23, 0x00, 0x24,
0x91, 0x46, 0x9b, 0x46, 0x7b, 0xe7, 0x52, 0x46, 0x32, 0x43, 0x00, 0xd1,
0x0a, 0xe1, 0x00, 0x2e, 0x00, 0xd1, 0x76, 0xe1, 0x30, 0x00, 0x00, 0xf0,
0xa9, 0xfd, 0x02, 0x00, 0x0b, 0x3a, 0x1d, 0x23, 0x01, 0x00, 0x9b, 0x1a,
0x52, 0x46, 0x08, 0x39, 0xda, 0x40, 0x8e, 0x40, 0x16, 0x43, 0x52, 0x46,
0x8a, 0x40, 0x00, 0x9b, 0x89, 0x49, 0x18, 0x1a, 0x03, 0x00, 0x8c, 0x46,
0x63, 0x44, 0x00, 0x20, 0x00, 0x93, 0x7a, 0xe7, 0x00, 0x24, 0x00, 0x25,
0x81, 0x4a, 0xa5, 0xe7, 0x2f, 0x0c, 0x2d, 0x04, 0x2d, 0x0c, 0x2b, 0x00,
0x11, 0x0c, 0x12, 0x04, 0x12, 0x0c, 0x53, 0x43, 0x98, 0x46, 0x13, 0x00,
0x28, 0x00, 0x7b, 0x43, 0x99, 0x46, 0x48, 0x43, 0x48, 0x44, 0x83, 0x46,
0x40, 0x46, 0x0b, 0x00, 0x00, 0x0c, 0x82, 0x46, 0x58, 0x46, 0x7b, 0x43,
0x50, 0x44, 0x02, 0x93, 0x81, 0x45, 0x06, 0xd9, 0x9a, 0x46, 0x80, 0x23,
0x5b, 0x02, 0x99, 0x46, 0xca, 0x44, 0x53, 0x46, 0x02, 0x93, 0x03, 0x0c,
0x9b, 0x46, 0x43, 0x46, 0x1b, 0x04, 0x00, 0x04, 0x1b, 0x0c, 0x98, 0x46,
0x03, 0x00, 0x43, 0x44, 0x04, 0x93, 0x33, 0x0c, 0x99, 0x46, 0x2b, 0x00,
0x36, 0x04, 0x36, 0x0c, 0x73, 0x43, 0x98, 0x46, 0x33, 0x00, 0x7b, 0x43,
0x9a, 0x46, 0x4b, 0x46, 0x5d, 0x43, 0x5f, 0x43, 0x43, 0x46, 0x55, 0x44,
0x18, 0x0c, 0x40, 0x19, 0x82, 0x45, 0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02,
0x9a, 0x46, 0x57, 0x44, 0x05, 0x0c, 0xeb, 0x19, 0x05, 0x93, 0x43, 0x46,
0x1d, 0x04, 0x2d, 0x0c, 0x00, 0x04, 0x40, 0x19, 0x25, 0x0c, 0x24, 0x04,
0x24, 0x0c, 0x27, 0x00, 0x57, 0x43, 0x6a, 0x43, 0x90, 0x46, 0x2a, 0x00,
0x3b, 0x0c, 0x9a, 0x46, 0x4a, 0x43, 0x61, 0x43, 0x41, 0x44, 0x51, 0x44,
0x83, 0x44, 0x88, 0x45, 0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46,
0x42, 0x44, 0x3f, 0x04, 0x0b, 0x0c, 0x3f, 0x0c, 0x09, 0x04, 0xc9, 0x19,
0x27, 0x00, 0x98, 0x46, 0x4b, 0x46, 0x77, 0x43, 0x5c, 0x43, 0x6e, 0x43,
0x5d, 0x43, 0x3b, 0x0c, 0x99, 0x46, 0xa4, 0x19, 0x4c, 0x44, 0x42, 0x44,
0x03, 0x95, 0xa6, 0x42, 0x04, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46,
0x45, 0x44, 0x03, 0x95, 0x02, 0x9b, 0x3f, 0x04, 0x5b, 0x44, 0x1e, 0x00,
0x83, 0x42, 0x80, 0x41, 0x23, 0x04, 0x98, 0x46, 0x05, 0x9b, 0x3f, 0x0c,
0x47, 0x44, 0x98, 0x46, 0x76, 0x18, 0x8e, 0x42, 0x89, 0x41, 0x47, 0x44,
0x40, 0x42, 0x3d, 0x18, 0xa8, 0x46, 0x93, 0x46, 0x49, 0x42, 0x8a, 0x46,
0xc3, 0x44, 0x9f, 0x42, 0xbf, 0x41, 0x80, 0x45, 0x80, 0x41, 0x03, 0x9b,
0xda, 0x44, 0x98, 0x46, 0x53, 0x46, 0x40, 0x42, 0x7f, 0x42, 0x07, 0x43,
0x24, 0x0c, 0x93, 0x45, 0x92, 0x41, 0x8a, 0x45, 0x89, 0x41, 0x3f, 0x19,
0xdc, 0x0d, 0x04, 0x9b, 0x75, 0x02, 0x1d, 0x43, 0x68, 0x1e, 0x85, 0x41,
0x53, 0x46, 0x52, 0x42, 0x49, 0x42, 0x0a, 0x43, 0xbf, 0x18, 0x47, 0x44,
0xf6, 0x0d, 0x7f, 0x02, 0x35, 0x43, 0x5a, 0x02, 0x3c, 0x43, 0x15, 0x43,
0xfb, 0x01, 0x00, 0xd4, 0xc1, 0xe0, 0x01, 0x21, 0x6a, 0x08, 0x0d, 0x40,
0x15, 0x43, 0xe2, 0x07, 0x15, 0x43, 0x64, 0x08, 0x26, 0x49, 0x61, 0x44,
0x00, 0x29, 0x56, 0xdd, 0x6b, 0x07, 0x09, 0xd0, 0x0f, 0x22, 0x2a, 0x40,
0x04, 0x2a, 0x05, 0xd0, 0x2a, 0x1d, 0xaa, 0x42, 0xad, 0x41, 0x6d, 0x42,
0x64, 0x19, 0x15, 0x00, 0xe3, 0x01, 0x04, 0xd5, 0x80, 0x21, 0x1e, 0x4a,
0xc9, 0x00, 0x14, 0x40, 0x61, 0x44, 0x1d, 0x4a, 0x91, 0x42, 0x00, 0xdd,
0x24, 0xe7, 0x62, 0x07, 0xed, 0x08, 0x64, 0x02, 0x49, 0x05, 0x15, 0x43,
0x24, 0x0b, 0x4a, 0x0d, 0xc6, 0xe6, 0x01, 0x97, 0xb8, 0xe6, 0x10, 0x4a,
0x03, 0x20, 0x94, 0x46, 0x63, 0x44, 0x4a, 0x46, 0x00, 0x93, 0x03, 0x23,
0x1a, 0x43, 0x91, 0x46, 0x52, 0x46, 0x8a, 0xe6, 0x49, 0x46, 0x01, 0x23,
0x19, 0x43, 0x89, 0x46, 0x00, 0x26, 0x01, 0x20, 0x83, 0xe6, 0x0c, 0x22,
0x00, 0x93, 0x03, 0x23, 0x05, 0x00, 0x91, 0x46, 0x9b, 0x46, 0x5e, 0xe6,
0x04, 0x23, 0x99, 0x46, 0x00, 0x23, 0x00, 0x93, 0x01, 0x33, 0x00, 0x24,
0x9b, 0x46, 0x56, 0xe6, 0xff, 0x07, 0x00, 0x00, 0x01, 0xfc, 0xff, 0xff,
0xc4, 0x29, 0x00, 0x08, 0x0d, 0xfc, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00,
0xff, 0xff, 0xff, 0xfe, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x23, 0x80, 0x24,
0x00, 0x25, 0x44, 0x4a, 0x01, 0x93, 0x24, 0x03, 0x8e, 0xe6, 0x01, 0x20,
0x40, 0x1a, 0x38, 0x28, 0x00, 0xdd, 0x86, 0xe6, 0x1f, 0x28, 0x5b, 0xdd,
0x1f, 0x22, 0x23, 0x00, 0x52, 0x42, 0x51, 0x1a, 0xcb, 0x40, 0x19, 0x00,
0x20, 0x28, 0x03, 0xd0, 0x3b, 0x4a, 0x62, 0x44, 0x94, 0x40, 0x25, 0x43,
0x6a, 0x1e, 0x95, 0x41, 0x2a, 0x00, 0x0a, 0x43, 0x07, 0x21, 0x0d, 0x00,
0x00, 0x24, 0x15, 0x40, 0x11, 0x42, 0x5b, 0xd0, 0x0f, 0x21, 0x00, 0x24,
0x11, 0x40, 0x04, 0x29, 0x53, 0xd0, 0x11, 0x1d, 0x91, 0x42, 0x92, 0x41,
0x52, 0x42, 0xa4, 0x18, 0x0a, 0x00, 0x23, 0x02, 0x4b, 0xd5, 0x01, 0x22,
0x00, 0x24, 0x00, 0x25, 0x60, 0xe6, 0x80, 0x23, 0x1b, 0x03, 0x1c, 0x42,
0x09, 0xd0, 0x1e, 0x42, 0x07, 0xd1, 0x33, 0x43, 0x1c, 0x03, 0x43, 0x46,
0x15, 0x00, 0x24, 0x0b, 0x25, 0x4a, 0x01, 0x93, 0x52, 0xe6, 0x80, 0x22,
0x12, 0x03, 0x14, 0x43, 0x24, 0x03, 0x22, 0x4a, 0x24, 0x0b, 0x01, 0x97,
0x4a, 0xe6, 0x00, 0xf0, 0x33, 0xfc, 0x03, 0x00, 0x1a, 0x00, 0x15, 0x32,
0x20, 0x30, 0x1c, 0x2a, 0x00, 0xdc, 0x84, 0xe6, 0x56, 0x46, 0x08, 0x3b,
0x00, 0x22, 0x9e, 0x40, 0x89, 0xe6, 0x00, 0xf0, 0x25, 0xfc, 0x01, 0x00,
0x02, 0x00, 0x15, 0x31, 0x20, 0x32, 0x1c, 0x29, 0x00, 0xdc, 0x4e, 0xe6,
0x34, 0x00, 0x08, 0x38, 0x00, 0x25, 0x84, 0x40, 0x53, 0xe6, 0x00, 0x9b,
0x9c, 0x46, 0x41, 0xe7, 0x12, 0x49, 0x22, 0x00, 0x61, 0x44, 0x2e, 0x00,
0x8d, 0x40, 0x8a, 0x40, 0xc6, 0x40, 0x69, 0x1e, 0x8d, 0x41, 0x32, 0x43,
0x2a, 0x43, 0xc4, 0x40, 0x53, 0x07, 0xb6, 0xd0, 0x0f, 0x21, 0x11, 0x40,
0x04, 0x29, 0xac, 0xd1, 0xb1, 0xe7, 0x65, 0x07, 0x64, 0x02, 0x24, 0x0b,
0xd2, 0x08, 0x15, 0x43, 0x00, 0x22, 0x11, 0xe6, 0x80, 0x22, 0x12, 0x03,
0x14, 0x43, 0x24, 0x03, 0x01, 0x4a, 0x24, 0x0b, 0x0a, 0xe6, 0xc0, 0x46,
0xff, 0x07, 0x00, 0x00, 0x3e, 0x04, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00,
0xf8, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x04, 0x00,
0xe0, 0xb5, 0x1f, 0x00, 0x10, 0x00, 0x0b, 0x03, 0x62, 0x0f, 0x4e, 0x00,
0xcd, 0x0f, 0x5b, 0x0a, 0x39, 0x03, 0x13, 0x43, 0x49, 0x0a, 0xe2, 0x00,
0x44, 0x0f, 0x21, 0x43, 0xc2, 0x4c, 0x91, 0x46, 0x92, 0x46, 0xc0, 0x00,
0x7a, 0x00, 0x80, 0x46, 0x76, 0x0d, 0x52, 0x0d, 0xff, 0x0f, 0xa2, 0x42,
0x00, 0xd1, 0xb4, 0xe0, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42,
0x00, 0xd1, 0x88, 0xe0, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x00, 0xdc,
0xb2, 0xe0, 0x00, 0x2a, 0x00, 0xd1, 0xc5, 0xe0, 0xb5, 0x4a, 0x96, 0x42,
0x00, 0xd1, 0x8b, 0xe2, 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46,
0x38, 0x2a, 0x00, 0xdd, 0xa1, 0xe1, 0x1f, 0x2a, 0x00, 0xdd, 0x16, 0xe2,
0x20, 0x27, 0x0c, 0x00, 0xbf, 0x1a, 0xbc, 0x40, 0x02, 0x00, 0xa0, 0x46,
0x64, 0x46, 0xb8, 0x40, 0xe2, 0x40, 0x44, 0x46, 0x14, 0x43, 0x02, 0x00,
0x50, 0x1e, 0x82, 0x41, 0x60, 0x46, 0xc1, 0x40, 0x22, 0x43, 0x5b, 0x1a,
0x49, 0x46, 0x8c, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x9b, 0x1a,
0x98, 0x46, 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0x17, 0xe1, 0x43, 0x46,
0x5b, 0x02, 0x5b, 0x0a, 0x98, 0x46, 0x43, 0x46, 0x00, 0x2b, 0x00, 0xd1,
0x6c, 0xe1, 0x40, 0x46, 0x00, 0xf0, 0x8a, 0xfb, 0x02, 0x00, 0x08, 0x3a,
0x20, 0x21, 0x20, 0x00, 0x43, 0x46, 0x89, 0x1a, 0x93, 0x40, 0xc8, 0x40,
0x94, 0x40, 0x03, 0x43, 0x96, 0x42, 0x00, 0xdd, 0x57, 0xe1, 0x96, 0x1b,
0x71, 0x1c, 0x1f, 0x29, 0x00, 0xdd, 0xcb, 0xe1, 0x20, 0x22, 0x18, 0x00,
0x26, 0x00, 0x52, 0x1a, 0x94, 0x40, 0x90, 0x40, 0xce, 0x40, 0xcb, 0x40,
0x62, 0x1e, 0x94, 0x41, 0x30, 0x43, 0x98, 0x46, 0x00, 0x26, 0x04, 0x43,
0x63, 0x07, 0x09, 0xd0, 0x0f, 0x23, 0x23, 0x40, 0x04, 0x2b, 0x05, 0xd0,
0x23, 0x1d, 0xa3, 0x42, 0xa4, 0x41, 0x64, 0x42, 0xa0, 0x44, 0x1c, 0x00,
0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0xdf, 0xe0, 0x82, 0x4b, 0x01, 0x36,
0x9e, 0x42, 0x00, 0xd1, 0xfb, 0xe0, 0x42, 0x46, 0x80, 0x4b, 0xe4, 0x08,
0x1a, 0x40, 0x13, 0x00, 0x71, 0x05, 0x52, 0x07, 0x5b, 0x02, 0x22, 0x43,
0x1b, 0x0b, 0x49, 0x0d, 0x09, 0x05, 0xed, 0x07, 0x19, 0x43, 0x29, 0x43,
0x10, 0x00, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46,
0xf8, 0xbd, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x58, 0xdd, 0x00, 0x2a,
0x00, 0xd1, 0x9e, 0xe0, 0x71, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x3b, 0xe1,
0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd,
0xc1, 0xe0, 0x1f, 0x2a, 0x00, 0xdc, 0xbb, 0xe1, 0x0c, 0x00, 0x20, 0x3a,
0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27,
0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e,
0x8c, 0x41, 0x14, 0x43, 0xb1, 0xe0, 0x0c, 0x00, 0x04, 0x43, 0x2a, 0xd0,
0xbb, 0x46, 0xbd, 0x42, 0x2d, 0xd0, 0x61, 0x4c, 0xa4, 0x46, 0xb4, 0x44,
0x64, 0x46, 0x00, 0x2c, 0x5c, 0xd0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e,
0x00, 0xd0, 0x15, 0xe1, 0x4d, 0x46, 0x1d, 0x43, 0x00, 0xd1, 0xc3, 0xe1,
0x65, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0x0c, 0xe2, 0x55, 0x4e, 0xb4, 0x42,
0x00, 0xd1, 0xf8, 0xe1, 0xac, 0x46, 0x0e, 0xe1, 0x0a, 0x00, 0x02, 0x43,
0x00, 0xd1, 0x36, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, 0x00, 0xd1,
0xc6, 0xe1, 0x4e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, 0xf4, 0xe0, 0x94, 0x46,
0x31, 0xe7, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd0,
0x1c, 0xe7, 0x4a, 0x4c, 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c,
0x00, 0xd1, 0xcf, 0xe0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd1,
0x5c, 0xe1, 0x42, 0x4e, 0xb2, 0x42, 0x00, 0xd1, 0xec, 0xe1, 0x80, 0x26,
0x36, 0x04, 0x33, 0x43, 0x64, 0x46, 0x38, 0x2c, 0x00, 0xdd, 0xb3, 0xe1,
0x1f, 0x2c, 0x00, 0xdd, 0x38, 0xe2, 0x20, 0x26, 0x36, 0x1b, 0x1c, 0x00,
0xb4, 0x40, 0x4f, 0x46, 0xa0, 0x46, 0x64, 0x46, 0xe7, 0x40, 0x44, 0x46,
0x3c, 0x43, 0x4f, 0x46, 0xb7, 0x40, 0x3e, 0x00, 0x77, 0x1e, 0xbe, 0x41,
0x34, 0x43, 0x66, 0x46, 0xf3, 0x40, 0xc9, 0x18, 0x24, 0x18, 0x84, 0x42,
0x9b, 0x41, 0x5b, 0x42, 0x98, 0x46, 0x16, 0x00, 0x88, 0x44, 0x4e, 0xe0,
0x30, 0x4a, 0x74, 0x1c, 0x14, 0x42, 0x00, 0xd0, 0xd6, 0xe0, 0x4a, 0x46,
0x1a, 0x43, 0x00, 0x2e, 0x00, 0xd0, 0x5b, 0xe1, 0x00, 0x2a, 0x00, 0xd1,
0xa5, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0xbb, 0xe1, 0x4a, 0x46,
0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x27, 0xe0, 0x0a, 0x00,
0x02, 0x43, 0x00, 0xd1, 0x74, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c,
0x05, 0xd0, 0x1e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, 0x94, 0xe0, 0x94, 0x46,
0x59, 0xe7, 0x48, 0x44, 0x48, 0x45, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46,
0x04, 0x00, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, 0x02, 0x26, 0x1b, 0x02,
0x00, 0xd5, 0xc4, 0xe0, 0x01, 0x3e, 0x63, 0x07, 0x00, 0xd0, 0x11, 0xe7,
0x43, 0x46, 0xb4, 0x46, 0x59, 0x07, 0xe2, 0x08, 0x0a, 0x43, 0xdb, 0x08,
0x0f, 0x49, 0x8c, 0x45, 0x40, 0xd0, 0x61, 0x46, 0x1b, 0x03, 0x49, 0x05,
0x1b, 0x0b, 0x49, 0x0d, 0x20, 0xe7, 0x01, 0x43, 0x0c, 0x00, 0x61, 0x1e,
0x8c, 0x41, 0x4c, 0x44, 0x4c, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46,
0x98, 0x44, 0x43, 0x46, 0x1b, 0x02, 0xe0, 0xd5, 0x04, 0x4b, 0x01, 0x36,
0x9e, 0x42, 0x00, 0xd0, 0x9f, 0xe0, 0x31, 0x00, 0x00, 0x23, 0x00, 0x22,
0x0a, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff,
0x01, 0xf8, 0xff, 0xff, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xd1,
0x60, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x4d, 0xd0, 0x4a, 0x46, 0x5c, 0x07,
0xd2, 0x08, 0x22, 0x43, 0x80, 0x24, 0xdb, 0x08, 0x24, 0x03, 0x23, 0x42,
0x07, 0xd0, 0xce, 0x08, 0x26, 0x42, 0x04, 0xd1, 0x5d, 0x46, 0x33, 0x00,
0xc2, 0x08, 0x49, 0x07, 0x0a, 0x43, 0x51, 0x0f, 0xd2, 0x00, 0xd2, 0x08,
0x49, 0x07, 0x0a, 0x43, 0x11, 0x00, 0x19, 0x43, 0x00, 0xd1, 0xc8, 0xe1,
0x80, 0x21, 0x09, 0x03, 0x0b, 0x43, 0x1b, 0x03, 0xd5, 0x49, 0x1b, 0x0b,
0xda, 0xe6, 0xd5, 0x49, 0xb6, 0x1a, 0x0b, 0x40, 0x98, 0x46, 0xb5, 0xe6,
0x20, 0x00, 0x00, 0xf0, 0x1d, 0xfa, 0x02, 0x00, 0x18, 0x32, 0x1f, 0x2a,
0x00, 0xdc, 0x8f, 0xe6, 0x23, 0x00, 0x08, 0x38, 0x83, 0x40, 0x00, 0x24,
0x92, 0xe6, 0x08, 0x43, 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, 0x6d, 0xe6,
0xca, 0x4c, 0x72, 0x1c, 0x22, 0x42, 0x00, 0xd0, 0xad, 0xe0, 0x4a, 0x46,
0x1a, 0x43, 0x00, 0x2e, 0xb8, 0xd1, 0x00, 0x2a, 0x00, 0xd1, 0x58, 0xe1,
0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0x59, 0xe1, 0x4a, 0x46, 0x59, 0x07,
0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x86, 0xe7, 0x4a, 0x46, 0x59, 0x07,
0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xc1, 0xe7, 0xba, 0x4d, 0xaa, 0x42,
0x00, 0xd1, 0x1e, 0xe1, 0x80, 0x25, 0x2d, 0x04, 0x2b, 0x43, 0x64, 0x46,
0x38, 0x2c, 0x5d, 0xdc, 0x1f, 0x2c, 0x00, 0xdd, 0xd0, 0xe0, 0x20, 0x25,
0x67, 0x46, 0x2d, 0x1b, 0x4e, 0x46, 0x1c, 0x00, 0xfe, 0x40, 0xac, 0x40,
0x34, 0x43, 0x4e, 0x46, 0xae, 0x40, 0x35, 0x00, 0xfb, 0x40, 0x6e, 0x1e,
0xb5, 0x41, 0xc9, 0x1a, 0x2c, 0x43, 0x4e, 0xe0, 0x4a, 0x46, 0x14, 0x1a,
0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, 0x5f, 0x1a, 0x3a, 0x00,
0x47, 0x46, 0xd2, 0x1b, 0x90, 0x46, 0x12, 0x02, 0x00, 0xd5, 0x8b, 0xe0,
0x42, 0x46, 0x22, 0x43, 0x00, 0xd0, 0x30, 0xe6, 0x00, 0x23, 0x00, 0x25,
0x4d, 0xe7, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08,
0x44, 0xe7, 0x42, 0x46, 0x9e, 0x4b, 0x61, 0x08, 0x1a, 0x40, 0x13, 0x00,
0x01, 0x22, 0x14, 0x40, 0x0c, 0x43, 0xda, 0x07, 0x5b, 0x08, 0x98, 0x46,
0x14, 0x43, 0x41, 0xe6, 0x1a, 0x00, 0x1f, 0x3e, 0xf2, 0x40, 0x16, 0x00,
0x20, 0x29, 0x03, 0xd0, 0x40, 0x22, 0x51, 0x1a, 0x8b, 0x40, 0x1c, 0x43,
0x62, 0x1e, 0x94, 0x41, 0x00, 0x23, 0x34, 0x43, 0x98, 0x46, 0x00, 0x26,
0x1d, 0xe7, 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46,
0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43,
0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, 0x22, 0x43, 0xe9, 0xe5,
0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x04, 0x1b,
0xa0, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xcb, 0x1a, 0x98, 0x46, 0x5d, 0x46,
0x16, 0x00, 0xe2, 0xe5, 0x4e, 0x46, 0x1e, 0x43, 0x00, 0xd1, 0xae, 0xe0,
0x66, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0xfd, 0xe0, 0x7b, 0x4f, 0xbc, 0x42,
0x00, 0xd1, 0x07, 0xe1, 0xb4, 0x46, 0x9b, 0xe6, 0x64, 0x46, 0x20, 0x22,
0x12, 0x1b, 0x0c, 0x00, 0x94, 0x40, 0x07, 0x00, 0x90, 0x40, 0xa0, 0x46,
0x64, 0x46, 0x42, 0x1e, 0x90, 0x41, 0x62, 0x46, 0xe7, 0x40, 0x44, 0x46,
0xd1, 0x40, 0x3c, 0x43, 0x04, 0x43, 0x5b, 0x18, 0xf3, 0xe6, 0x6f, 0x4c,
0xa2, 0x42, 0x00, 0xd1, 0xd5, 0xe0, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45,
0x89, 0x41, 0x49, 0x42, 0x5b, 0x18, 0xdc, 0x07, 0x40, 0x08, 0x5b, 0x08,
0x98, 0x46, 0x16, 0x00, 0x04, 0x43, 0xcc, 0xe6, 0x00, 0x2a, 0x00, 0xd0,
0x82, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x40, 0xd1, 0x80, 0x23, 0x00, 0x25,
0x1b, 0x03, 0x13, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46,
0xcb, 0x08, 0xc5, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41,
0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x9e, 0xe5,
0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xf9, 0xe6,
0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5b, 0x1a, 0x52, 0x42,
0x9b, 0x1a, 0x98, 0x46, 0x01, 0x26, 0x86, 0xe5, 0x4a, 0x46, 0x59, 0x07,
0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xa5, 0xe6, 0x4c, 0x46, 0x23, 0x43,
0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x5b, 0xe6, 0x65, 0x46, 0x1e, 0x00,
0x20, 0x3d, 0xee, 0x40, 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x25, 0x2d, 0x1b,
0xab, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e,
0x9c, 0x41, 0x34, 0x43, 0x7d, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43,
0x5d, 0x46, 0xcb, 0x08, 0xcc, 0xe6, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1,
0x36, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08,
0x81, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a,
0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x01, 0x26, 0x4e, 0xe5,
0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0xb2, 0xe6, 0x4a, 0x46,
0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5f, 0x1a, 0x52, 0x42, 0xba, 0x1a,
0x90, 0x46, 0x12, 0x02, 0x6b, 0xd5, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42,
0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46,
0x64, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08,
0x98, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x4f, 0xe6,
0x0a, 0x00, 0x02, 0x43, 0x90, 0xd0, 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08,
0x14, 0x43, 0x80, 0x22, 0xdb, 0x08, 0x12, 0x03, 0x13, 0x42, 0x08, 0xd0,
0xce, 0x08, 0x16, 0x42, 0x05, 0xd1, 0xc0, 0x08, 0x49, 0x07, 0x08, 0x43,
0x04, 0x00, 0x5d, 0x46, 0x33, 0x00, 0x61, 0x0f, 0xe2, 0x00, 0x49, 0x07,
0xd2, 0x08, 0x0a, 0x43, 0x78, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43,
0xcb, 0x08, 0x32, 0xe6, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, 0x92, 0x41,
0x98, 0x46, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, 0x04, 0x00, 0x1b, 0x02,
0x00, 0xd4, 0x1a, 0xe6, 0x42, 0x46, 0x0e, 0x4b, 0x01, 0x26, 0x1a, 0x40,
0x90, 0x46, 0x14, 0xe6, 0x66, 0x46, 0x1f, 0x00, 0x20, 0x3e, 0xf7, 0x40,
0x20, 0x2c, 0x05, 0xd0, 0x40, 0x26, 0x36, 0x1b, 0xb3, 0x40, 0x4c, 0x46,
0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x3c, 0x43,
0xc8, 0xe5, 0x11, 0x00, 0x00, 0x23, 0x00, 0x22, 0x32, 0xe5, 0xc0, 0x46,
0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, 0xfe, 0x07, 0x00, 0x00,
0x4a, 0x46, 0x14, 0x18, 0x84, 0x42, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46,
0x52, 0x42, 0x90, 0x44, 0xe9, 0xe5, 0x42, 0x46, 0x22, 0x43, 0x00, 0xd1,
0xa6, 0xe6, 0xea, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08,
0x32, 0xe6, 0x00, 0x22, 0x01, 0x49, 0x13, 0x00, 0x14, 0xe5, 0xc0, 0x46,
0xff, 0x07, 0x00, 0x00, 0x0a, 0x00, 0x30, 0xb5, 0x13, 0x4c, 0x53, 0x00,
0x09, 0x03, 0x05, 0x00, 0x09, 0x0b, 0x00, 0x20, 0x5b, 0x0d, 0xd2, 0x0f,
0xa3, 0x42, 0x04, 0xdd, 0x0f, 0x48, 0x83, 0x42, 0x02, 0xdd, 0x0f, 0x4b,
0xd0, 0x18, 0x30, 0xbd, 0x80, 0x20, 0x40, 0x03, 0x01, 0x43, 0x0d, 0x48,
0xc0, 0x1a, 0x1f, 0x28, 0x08, 0xdd, 0x0c, 0x48, 0xc3, 0x1a, 0xd9, 0x40,
0x0b, 0x00, 0x58, 0x42, 0x00, 0x2a, 0xf0, 0xd1, 0x18, 0x00, 0xee, 0xe7,
0x08, 0x4c, 0xc5, 0x40, 0xa4, 0x46, 0x63, 0x44, 0x99, 0x40, 0x0b, 0x00,
0x2b, 0x43, 0xf2, 0xe7, 0xfe, 0x03, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00,
0xff, 0xff, 0xff, 0x7f, 0x33, 0x04, 0x00, 0x00, 0x13, 0x04, 0x00, 0x00,
0xed, 0xfb, 0xff, 0xff, 0x10, 0xb5, 0x04, 0x1e, 0x10, 0xd0, 0x00, 0xf0,
0x21, 0xf8, 0x0f, 0x4b, 0x1b, 0x1a, 0x0a, 0x28, 0x11, 0xdc, 0x0b, 0x22,
0x21, 0x00, 0x12, 0x1a, 0xd1, 0x40, 0x15, 0x30, 0x0a, 0x03, 0x5b, 0x05,
0x84, 0x40, 0x12, 0x0b, 0x5b, 0x0d, 0x01, 0xe0, 0x00, 0x23, 0x00, 0x22,
0x1b, 0x05, 0x13, 0x43, 0x20, 0x00, 0x19, 0x00, 0x10, 0xbd, 0x22, 0x00,
0x0b, 0x38, 0x82, 0x40, 0x5b, 0x05, 0x12, 0x03, 0x00, 0x24, 0x12, 0x0b,
0x5b, 0x0d, 0xf1, 0xe7, 0x1e, 0x04, 0x00, 0x00, 0x1c, 0x21, 0x01, 0x23,
0x1b, 0x04, 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0c, 0x10, 0x39, 0x1b, 0x0a,
0x98, 0x42, 0x01, 0xd3, 0x00, 0x0a, 0x08, 0x39, 0x1b, 0x09, 0x98, 0x42,
0x01, 0xd3, 0x00, 0x09, 0x04, 0x39, 0x02, 0xa2, 0x10, 0x5c, 0x40, 0x18,
0x70, 0x47, 0xc0, 0x46, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x08,
0x58, 0x15, 0x00, 0x08, 0x36, 0x15, 0x00, 0x08, 0x4a, 0x16, 0x00, 0x08,
0x36, 0x15, 0x00, 0x08, 0x8e, 0x16, 0x00, 0x08, 0x36, 0x15, 0x00, 0x08,
0x4a, 0x16, 0x00, 0x08, 0x58, 0x15, 0x00, 0x08, 0x58, 0x15, 0x00, 0x08,
0x8e, 0x16, 0x00, 0x08, 0x4a, 0x16, 0x00, 0x08, 0xfc, 0x15, 0x00, 0x08,
0xfc, 0x15, 0x00, 0x08, 0xfc, 0x15, 0x00, 0x08, 0x9c, 0x16, 0x00, 0x08,
0x28, 0x1e, 0x00, 0x08, 0x56, 0x1d, 0x00, 0x08, 0x56, 0x1d, 0x00, 0x08,
0x52, 0x1d, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08,
0x48, 0x20, 0x00, 0x08, 0x52, 0x1d, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08,
0x48, 0x20, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08, 0x52, 0x1d, 0x00, 0x08,
0xe6, 0x1f, 0x00, 0x08, 0xe6, 0x1f, 0x00, 0x08, 0xe6, 0x1f, 0x00, 0x08,
0xb2, 0x20, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfc, 0xa9, 0xf1, 0xd2, 0x4d, 0x62, 0x50, 0x3f, 0x80, 0x84, 0x1e, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xa6, 0x40,
0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00,
};

View File

@ -0,0 +1,795 @@
static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 50;
static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 2;
const uint8_t stm_firmware[] PROGMEM = {
0x00, 0x10, 0x00, 0x20, 0x21, 0x11, 0x00, 0x08, 0x1d, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x11, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x11, 0x00, 0x08,
0xc9, 0x07, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0xd9, 0x07, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08,
0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a,
0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a,
0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40,
0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0,
0x00, 0xf0, 0x56, 0xfc, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60,
0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x4a, 0xfc,
0xf4, 0xe7, 0xc0, 0x46, 0x4c, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20,
0x10, 0x27, 0x00, 0x00, 0x19, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20,
0x00, 0x04, 0x00, 0x48, 0x20, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20,
0x20, 0x23, 0xf0, 0xb5, 0x87, 0x4a, 0xc7, 0xb0, 0x11, 0x68, 0x00, 0xaf,
0x7a, 0x61, 0x19, 0x42, 0x33, 0xd0, 0x85, 0x4a, 0x12, 0x68, 0x1a, 0x42,
0x2f, 0xd0, 0x78, 0x69, 0x00, 0xf0, 0xe3, 0xff, 0x82, 0x4c, 0x83, 0x49,
0x23, 0x78, 0x05, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1,
0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9,
0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda,
0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x79, 0x49, 0xed, 0xb2, 0xc8, 0x5c,
0x78, 0x4e, 0x00, 0x02, 0x28, 0x43, 0x00, 0x25, 0xb4, 0x46, 0x29, 0x00,
0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xad, 0x19, 0xc9, 0xb2,
0xad, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa8, 0x42, 0xde, 0xd0, 0x00, 0x23,
0x23, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0,
0x68, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x6b, 0x4c, 0xa3, 0x68,
0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0xb8, 0xe0, 0x7b, 0x69, 0x1b, 0x68,
0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd,
0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78,
0x62, 0x4a, 0x63, 0x4d, 0x13, 0x70, 0x8b, 0x78, 0x2b, 0x70, 0x01, 0x2b,
0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e,
0x93, 0x41, 0x5e, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79,
0x12, 0x02, 0x13, 0x43, 0x5b, 0x4a, 0x13, 0x80, 0x1c, 0x23, 0x00, 0x21,
0xf8, 0x18, 0xfc, 0x22, 0x21, 0x70, 0xb9, 0x61, 0x01, 0xf0, 0x78, 0xf8,
0xff, 0xf7, 0x50, 0xff, 0x56, 0x4b, 0x57, 0x4c, 0x1b, 0x68, 0x57, 0x4e,
0x3b, 0x61, 0x23, 0x68, 0x00, 0x2b, 0x02, 0xd0, 0xff, 0xf7, 0x46, 0xff,
0x00, 0xe0, 0x33, 0x60, 0x53, 0x4b, 0x54, 0x49, 0x1b, 0x68, 0x09, 0x68,
0x32, 0x68, 0x5b, 0x1a, 0x52, 0x49, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23,
0x23, 0x60, 0x2b, 0x78, 0x11, 0x2b, 0x5b, 0xd0, 0x0a, 0xd8, 0x01, 0x2b,
0x0a, 0xd0, 0x10, 0x2b, 0x5a, 0xd0, 0x7b, 0x69, 0x1a, 0x68, 0x80, 0x23,
0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x9c, 0xe7, 0x20, 0x2b, 0xf6, 0xd1,
0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, 0xba, 0x60, 0xe2, 0x1d,
0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, 0x8a, 0x1a, 0x95, 0x46,
0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x37, 0x4a, 0x01, 0xa8, 0x12, 0x78,
0xb3, 0x70, 0x18, 0x23, 0x72, 0x70, 0xf9, 0x18, 0x22, 0x00, 0xf4, 0x70,
0x00, 0xf0, 0xe0, 0xff, 0x00, 0x22, 0x13, 0x00, 0x21, 0x1d, 0xe0, 0x1c,
0xf5, 0x18, 0x6d, 0x78, 0x01, 0x33, 0x52, 0x19, 0xdb, 0xb2, 0x92, 0xb2,
0x98, 0x42, 0xf7, 0xdc, 0x13, 0x0a, 0x73, 0x54, 0x63, 0x1d, 0xf2, 0x54,
0x04, 0x23, 0x06, 0x34, 0x33, 0x55, 0x00, 0x24, 0x26, 0x4d, 0x33, 0x5d,
0x69, 0x68, 0x3b, 0x60, 0xeb, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00,
0xfb, 0x60, 0x01, 0xf0, 0xf9, 0xf8, 0xab, 0x68, 0x99, 0x42, 0x0a, 0xd0,
0xfb, 0x68, 0x3a, 0x69, 0xeb, 0x60, 0x39, 0x68, 0x2b, 0x68, 0x99, 0x54,
0xe8, 0x68, 0x69, 0x68, 0x01, 0xf0, 0xec, 0xf8, 0xe9, 0x60, 0x7b, 0x68,
0x01, 0x34, 0xa3, 0x42, 0xe3, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0xa8, 0xe7,
0x21, 0x4a, 0x02, 0x24, 0x3a, 0x83, 0xaf, 0xe7, 0x21, 0x68, 0x00, 0x20,
0xf9, 0x61, 0x39, 0x69, 0x38, 0x83, 0x39, 0x62, 0x28, 0x21, 0x15, 0x48,
0x7a, 0x62, 0x13, 0x4a, 0x00, 0x88, 0x12, 0x78, 0x79, 0x18, 0x11, 0x24,
0x78, 0x83, 0x0a, 0x70, 0x9e, 0xe7, 0x22, 0x68, 0x58, 0x1c, 0xa0, 0x60,
0x61, 0x68, 0xd5, 0x5c, 0x01, 0xf0, 0xc8, 0xf8, 0x02, 0x48, 0xa1, 0x60,
0xa9, 0xb2, 0x00, 0xf0, 0xde, 0xfe, 0x3e, 0xe7, 0x00, 0x38, 0x01, 0x40,
0x1c, 0x38, 0x01, 0x40, 0x10, 0x00, 0x00, 0x20, 0x4c, 0x01, 0x00, 0x20,
0x4b, 0x01, 0x00, 0x20, 0x4d, 0x01, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20,
0x24, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20,
0x08, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20,
0x1c, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20,
0x10, 0x27, 0x00, 0x00, 0x02, 0x32, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0,
0x1d, 0xfc, 0xbf, 0x48, 0x00, 0xf0, 0x4c, 0xfc, 0xbe, 0x48, 0x00, 0xf0,
0x49, 0xfc, 0xbe, 0x48, 0x00, 0xf0, 0x46, 0xfc, 0xbd, 0x48, 0x00, 0xf0,
0x43, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x3f, 0xfc, 0xc0, 0x20,
0x80, 0x00, 0x00, 0xf0, 0x3b, 0xfc, 0x90, 0x23, 0x90, 0x20, 0x1b, 0x01,
0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xe8, 0xfa, 0x90, 0x22,
0x90, 0x20, 0x02, 0x21, 0x12, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x1f, 0xfb,
0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0xda, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xd3, 0xfa, 0x80, 0x24, 0x90, 0x20, 0x64, 0x00, 0x03, 0x22,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x09, 0xfb, 0x23, 0x00, 0x00, 0x22,
0x01, 0x21, 0xa5, 0x48, 0x00, 0xf0, 0xc5, 0xfa, 0x23, 0x00, 0x00, 0x22,
0x01, 0x21, 0xa2, 0x48, 0x00, 0xf0, 0xdf, 0xfa, 0x21, 0x00, 0xa0, 0x48,
0x00, 0xf0, 0xb6, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00, 0x9d, 0x48,
0x00, 0xf0, 0xb5, 0xfa, 0x9c, 0x4b, 0x9d, 0x4a, 0x5c, 0x60, 0x00, 0x24,
0x1a, 0x60, 0x9c, 0x60, 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00,
0xdb, 0x00, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xa6, 0xfa, 0xc0, 0x22,
0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xdd, 0xfa,
0xff, 0x21, 0x1b, 0x20, 0x00, 0xf0, 0xca, 0xfe, 0x1b, 0x20, 0x00, 0xf0,
0xbb, 0xfe, 0xe1, 0x21, 0x8f, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0,
0x07, 0xfe, 0x08, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x0f, 0xfe, 0x21, 0x00,
0x28, 0x00, 0x00, 0xf0, 0x21, 0xfe, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0,
0x15, 0xfe, 0x0c, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x21, 0xfe, 0x21, 0x00,
0x28, 0x00, 0x00, 0xf0, 0x23, 0xfe, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00,
0x13, 0x43, 0x2b, 0x60, 0x00, 0xf0, 0x24, 0xfe, 0x80, 0x48, 0x00, 0xf0,
0x00, 0xfc, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0, 0xc9, 0xfb, 0x23, 0x00,
0x22, 0x00, 0x21, 0x00, 0x7b, 0x48, 0x00, 0xf0, 0xdb, 0xfb, 0xf0, 0x21,
0x79, 0x48, 0x49, 0x00, 0x00, 0xf0, 0xf6, 0xfb, 0x77, 0x48, 0x00, 0xf0,
0x30, 0xfd, 0x76, 0x48, 0x00, 0xf0, 0xdc, 0xfb, 0x74, 0x48, 0x00, 0xf0,
0xde, 0xfb, 0x21, 0x00, 0x72, 0x48, 0x00, 0xf0, 0xef, 0xfc, 0x07, 0x22,
0x21, 0x00, 0x70, 0x48, 0x00, 0xf0, 0xe6, 0xfb, 0x21, 0x00, 0x6e, 0x48,
0x00, 0xf0, 0xa2, 0xfc, 0x21, 0x00, 0x6c, 0x48, 0x00, 0xf0, 0xc2, 0xfc,
0x01, 0x22, 0x21, 0x00, 0x52, 0x42, 0x69, 0x48, 0x00, 0xf0, 0x00, 0xfd,
0x06, 0x21, 0x67, 0x48, 0x00, 0xf0, 0xd8, 0xfc, 0x07, 0x22, 0x06, 0x21,
0x64, 0x48, 0x00, 0xf0, 0xcf, 0xfb, 0x06, 0x21, 0x62, 0x48, 0x00, 0xf0,
0x8b, 0xfc, 0x06, 0x21, 0x60, 0x48, 0x00, 0xf0, 0xab, 0xfc, 0x01, 0x22,
0x06, 0x21, 0x52, 0x42, 0x5d, 0x48, 0x00, 0xf0, 0xe9, 0xfc, 0x5c, 0x48,
0x00, 0xf0, 0xb2, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xb3, 0xfb,
0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x7c, 0xfb, 0x0f, 0x20, 0x00, 0xf0,
0x43, 0xfe, 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0x8a, 0xfb, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0xa5, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0x8d, 0xfb, 0x80, 0x20,
0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfb, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0x73, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0x32, 0xfd, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0xd4, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0xfa, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0,
0x87, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x3e, 0xfc,
0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x5d, 0xfc, 0x80, 0x20,
0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x46, 0xfd, 0x80, 0x20, 0x02, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0x45, 0xfb, 0x80, 0x20, 0x02, 0x22, 0x01, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0x07, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x02, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0xa9, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x01, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0xcf, 0xfc, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x5c, 0xfc, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0x13, 0xfc, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x32, 0xfc,
0x80, 0x20, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x1b, 0xfd, 0x80, 0x20,
0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x1a, 0xfb, 0x01, 0x21, 0x80, 0x20,
0x49, 0x42, 0xc0, 0x05, 0x00, 0xf0, 0x81, 0xfc, 0x80, 0x20, 0xc0, 0x05,
0x00, 0xf0, 0x2e, 0xfb, 0x06, 0x20, 0x00, 0xf0, 0xc7, 0xfd, 0x04, 0x20,
0x12, 0x49, 0x00, 0xf0, 0x5b, 0xf9, 0x02, 0x21, 0x04, 0x20, 0x00, 0xf0,
0x23, 0xf9, 0x04, 0x20, 0x00, 0xf0, 0x40, 0xf9, 0x20, 0x00, 0x00, 0xf0,
0x9f, 0xfd, 0xfa, 0x21, 0x10, 0x4b, 0x49, 0x01, 0x1c, 0x60, 0x10, 0x4b,
0x18, 0x68, 0x00, 0xf0, 0x9f, 0xfe, 0x00, 0xf0, 0x8d, 0xfd, 0x00, 0xf0,
0x9d, 0xfd, 0x00, 0xf0, 0xa3, 0xfd, 0xc0, 0x46, 0xfd, 0xe7, 0xc0, 0x46,
0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00,
0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x34, 0x00, 0x00, 0x20,
0x44, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40, 0x00, 0x2c, 0x01, 0x40,
0x18, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x20, 0xf7, 0xb5, 0x2e, 0x4b,
0x1b, 0x68, 0x01, 0x93, 0x9b, 0x07, 0x38, 0xd5, 0x2c, 0x4b, 0x2d, 0x4f,
0x19, 0x68, 0x2d, 0x4b, 0x2d, 0x4e, 0x1a, 0x68, 0x2d, 0x4d, 0x19, 0x60,
0x94, 0x46, 0x2d, 0x4b, 0x38, 0x68, 0x32, 0x68, 0x1c, 0x68, 0x2b, 0x68,
0x82, 0x42, 0x09, 0xd0, 0x01, 0x2b, 0x07, 0xd9, 0x62, 0x46, 0x8a, 0x1a,
0x28, 0x49, 0x09, 0x78, 0x00, 0x29, 0x39, 0xd0, 0x27, 0x49, 0x0a, 0x60,
0x27, 0x49, 0x01, 0x33, 0x2b, 0x60, 0x20, 0x1a, 0x88, 0x42, 0x03, 0xd8,
0xfa, 0x22, 0x92, 0x00, 0x93, 0x42, 0x0e, 0xd9, 0x01, 0x23, 0x20, 0x4a,
0x22, 0x48, 0x11, 0x78, 0x4b, 0x40, 0x80, 0x21, 0x13, 0x70, 0x49, 0x00,
0x00, 0x2b, 0x25, 0xd0, 0x00, 0xf0, 0x36, 0xf9, 0x00, 0x23, 0x3c, 0x60,
0x2b, 0x60, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x34, 0x60, 0x00, 0xf0,
0x9d, 0xfa, 0x04, 0x21, 0x01, 0x9b, 0x0b, 0x42, 0x13, 0xd0, 0x18, 0x4a,
0x18, 0x4b, 0x19, 0x4c, 0x18, 0x68, 0x13, 0x68, 0x10, 0x60, 0xc3, 0x1a,
0x80, 0x20, 0x17, 0x4a, 0x23, 0x60, 0x13, 0x68, 0xc0, 0x05, 0x01, 0x33,
0x13, 0x60, 0x0c, 0x4b, 0x1a, 0x68, 0x14, 0x4b, 0x1a, 0x60, 0x00, 0xf0,
0x85, 0xfa, 0xf7, 0xbd, 0x12, 0x49, 0xc4, 0xe7, 0x00, 0xf0, 0x0e, 0xf9,
0xd8, 0xe7, 0xc0, 0x46, 0x10, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x40,
0x20, 0x00, 0x00, 0x20, 0x50, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20,
0x14, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20, 0x19, 0x00, 0x00, 0x20,
0x1c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48,
0x54, 0x02, 0x00, 0x20, 0x38, 0x00, 0x00, 0x40, 0x48, 0x01, 0x00, 0x20,
0x44, 0x01, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20,
0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x4c, 0x02, 0x00, 0x20, 0x70, 0xb5, 0x30, 0x48, 0x00, 0xf0, 0xb7, 0xfb,
0x2f, 0x4b, 0x30, 0x4c, 0x1d, 0x78, 0x30, 0x4e, 0x00, 0x2d, 0x3a, 0xd0,
0x00, 0x21, 0x2b, 0x48, 0x00, 0xf0, 0x70, 0xfb, 0x07, 0x22, 0x00, 0x21,
0x28, 0x48, 0x00, 0xf0, 0x67, 0xfa, 0x00, 0x21, 0x26, 0x48, 0x00, 0xf0,
0x47, 0xfb, 0x06, 0x21, 0x24, 0x48, 0x00, 0xf0, 0x63, 0xfb, 0x07, 0x22,
0x06, 0x21, 0x22, 0x48, 0x00, 0xf0, 0x5a, 0xfa, 0x06, 0x21, 0x20, 0x48,
0x00, 0xf0, 0x3a, 0xfb, 0xfa, 0x23, 0x32, 0x88, 0x9b, 0x00, 0x9b, 0x1a,
0x23, 0x60, 0x20, 0x68, 0x01, 0xf0, 0xaa, 0xfc, 0x1e, 0x4b, 0x1f, 0x4a,
0x00, 0xf0, 0x72, 0xfe, 0x00, 0xf0, 0x52, 0xfe, 0x00, 0x21, 0x02, 0x00,
0x20, 0x60, 0x16, 0x48, 0x00, 0xf0, 0x6a, 0xfb, 0x22, 0x68, 0x06, 0x21,
0x13, 0x48, 0x00, 0xf0, 0x65, 0xfb, 0x00, 0x21, 0x11, 0x48, 0x00, 0xf0,
0x7c, 0xfb, 0x04, 0x20, 0x00, 0xf0, 0x58, 0xf8, 0x70, 0xbd, 0x29, 0x00,
0x0d, 0x48, 0x00, 0xf0, 0x35, 0xfb, 0x06, 0x22, 0x29, 0x00, 0x0b, 0x48,
0x00, 0xf0, 0x2c, 0xfa, 0x29, 0x00, 0x09, 0x48, 0x00, 0xf0, 0x0c, 0xfb,
0x06, 0x21, 0x07, 0x48, 0x00, 0xf0, 0x28, 0xfb, 0x06, 0x22, 0x05, 0x48,
0x11, 0x00, 0x00, 0xf0, 0x1f, 0xfa, 0x06, 0x21, 0x02, 0x48, 0x00, 0xf0,
0xff, 0xfa, 0x33, 0x88, 0xc6, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40,
0x30, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x20,
0xeb, 0x51, 0xf0, 0x3f, 0x52, 0xb8, 0x1e, 0x85, 0x01, 0x29, 0x0c, 0xd0,
0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1, 0x0a, 0x4a, 0x13, 0x68,
0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60,
0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x05, 0x4a,
0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7, 0x01, 0x4a, 0x13, 0x68,
0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40, 0x0c, 0x04, 0x01, 0x40,
0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68,
0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x04, 0x01, 0x40,
0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5, 0xce, 0x18, 0x73, 0x42,
0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00, 0x01, 0x24, 0x23, 0x00,
0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0, 0x13, 0x4d, 0x03, 0x23,
0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d, 0x23, 0x00, 0xa9, 0x42,
0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25, 0x94, 0x08, 0x24, 0x18,
0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40, 0xab, 0x40, 0xa4, 0x00,
0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60, 0x01, 0x32, 0x10, 0x2a,
0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23, 0xa1, 0x42, 0xe9, 0xd0,
0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1, 0x05, 0x33, 0xe3, 0xe7,
0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48, 0x00, 0x04, 0x00, 0x48,
0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48, 0x00, 0x14, 0x00, 0x48,
0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61, 0x70, 0x47, 0xf0, 0xb5,
0x85, 0xb0, 0x01, 0x91, 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93,
0x02, 0x68, 0xc3, 0x68, 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42,
0x0a, 0xd0, 0x3d, 0x00, 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43,
0xab, 0x43, 0x02, 0x9d, 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43,
0x01, 0x31, 0x10, 0x29, 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0,
0xf0, 0xbd, 0xf7, 0xb5, 0x01, 0x92, 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68,
0x19, 0x43, 0x00, 0x24, 0x01, 0x26, 0x03, 0x27, 0x41, 0x60, 0x81, 0x68,
0x1d, 0x00, 0x25, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00,
0xaa, 0x40, 0x91, 0x43, 0x01, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34,
0x10, 0x2c, 0xf1, 0xd1, 0x81, 0x60, 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43,
0xe7, 0xe7, 0xf7, 0xb5, 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a,
0x00, 0x91, 0x41, 0x6a, 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42,
0x06, 0xd0, 0x3a, 0x00, 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a,
0xaa, 0x40, 0x14, 0x43, 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26,
0x0f, 0x27, 0x01, 0x9a, 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00,
0x9d, 0x00, 0x20, 0x3d, 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40,
0x11, 0x43, 0x01, 0x33, 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62,
0xf7, 0xbd, 0x00, 0x00, 0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8,
0x01, 0x33, 0x00, 0xf0, 0x97, 0xfc, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16,
0x04, 0x00, 0x0b, 0x4a, 0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00,
0x00, 0xbd, 0x08, 0x4a, 0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a,
0xfa, 0xe7, 0x06, 0x4a, 0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e,
0xf0, 0xe7, 0x04, 0x4a, 0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46,
0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40,
0x24, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7,
0xd1, 0xff, 0x00, 0x28, 0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28,
0x0b, 0xd8, 0x00, 0xf0, 0x67, 0xfc, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13,
0x04, 0x00, 0x0c, 0x4a, 0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43,
0x13, 0x60, 0x00, 0xbd, 0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7,
0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7,
0x06, 0x4a, 0xf4, 0xe7, 0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68,
0xeb, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40,
0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5,
0x05, 0x28, 0x12, 0xd8, 0x00, 0xf0, 0x3c, 0xfc, 0x03, 0x09, 0x12, 0x11,
0x11, 0x19, 0x03, 0x21, 0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60,
0x07, 0xe0, 0x03, 0x22, 0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00,
0x01, 0x23, 0x13, 0x43, 0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49,
0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23,
0x01, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40,
0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60,
0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff,
0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43,
0x13, 0x60, 0x70, 0x47, 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff,
0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60,
0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff,
0xf0, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60,
0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20,
0xff, 0xf7, 0x7e, 0xff, 0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20,
0xff, 0xf7, 0xa2, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20,
0xff, 0xf7, 0xda, 0xff, 0x00, 0xf0, 0x22, 0xfb, 0x01, 0x20, 0x00, 0xf0,
0x27, 0xfb, 0xa0, 0x20, 0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20,
0xff, 0xf7, 0xc2, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20,
0xff, 0xf7, 0x58, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b,
0x03, 0x4a, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46,
0x00, 0x6c, 0xdc, 0x02, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20,
0x05, 0x4b, 0x42, 0x09, 0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b,
0x83, 0x40, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x10, 0x02, 0x40, 0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22,
0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60,
0x19, 0x68, 0x91, 0x43, 0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40,
0xc3, 0x68, 0x0b, 0x43, 0xc3, 0x60, 0x70, 0x47, 0xc9, 0x43, 0x01, 0x61,
0x70, 0x47, 0x00, 0x00, 0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43,
0x2c, 0x40, 0x0a, 0x43, 0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46,
0x8f, 0xfc, 0xff, 0xff, 0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60,
0x70, 0x47, 0x08, 0x22, 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47,
0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22,
0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x1c, 0xd8, 0x00, 0xf0,
0x6d, 0xfb, 0x04, 0x1b, 0x2f, 0x1b, 0x5c, 0x1b, 0x86, 0x00, 0x03, 0x20,
0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x99, 0x61, 0x70, 0x21,
0x98, 0x69, 0x88, 0x43, 0x98, 0x61, 0x07, 0x2a, 0x0a, 0xd8, 0x10, 0x00,
0x00, 0xf0, 0x5a, 0xfb, 0x2f, 0x04, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18,
0x10, 0x22, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x20, 0x22,
0x99, 0x69, 0xf9, 0xe7, 0x30, 0x22, 0x99, 0x69, 0xf6, 0xe7, 0x40, 0x22,
0x99, 0x69, 0xf3, 0xe7, 0x50, 0x22, 0x99, 0x69, 0xf0, 0xe7, 0x60, 0x22,
0x99, 0x69, 0xed, 0xe7, 0x9a, 0x69, 0x11, 0x43, 0x99, 0x61, 0xeb, 0xe7,
0x99, 0x69, 0x42, 0x48, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0x41, 0x48,
0x99, 0x61, 0x99, 0x69, 0x01, 0x40, 0x99, 0x61, 0x07, 0x2a, 0xdf, 0xd8,
0x10, 0x00, 0x00, 0xf0, 0x2f, 0xfb, 0x04, 0x06, 0x0a, 0x0e, 0x11, 0x15,
0x18, 0x1b, 0x9a, 0x69, 0xd5, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x52, 0x01,
0xd0, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x92, 0x01, 0xcc, 0xe7, 0xc0, 0x22,
0x99, 0x69, 0xfa, 0xe7, 0x80, 0x22, 0x99, 0x69, 0xd2, 0x01, 0xc5, 0xe7,
0xa0, 0x22, 0x99, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0x99, 0x69, 0xf7, 0xe7,
0xe0, 0x22, 0x99, 0x69, 0xf4, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43,
0xd9, 0x61, 0xd9, 0x69, 0xd9, 0x61, 0x70, 0x21, 0xd8, 0x69, 0x88, 0x43,
0xd8, 0x61, 0x07, 0x2a, 0xb2, 0xd8, 0x10, 0x00, 0x00, 0xf0, 0x02, 0xfb,
0x2f, 0x04, 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x10, 0x22, 0xd9, 0x69,
0x0a, 0x43, 0x27, 0xe0, 0x20, 0x22, 0xd9, 0x69, 0xfa, 0xe7, 0x30, 0x22,
0xd9, 0x69, 0xf7, 0xe7, 0x40, 0x22, 0xd9, 0x69, 0xf4, 0xe7, 0x50, 0x22,
0xd9, 0x69, 0xf1, 0xe7, 0x60, 0x22, 0xd9, 0x69, 0xee, 0xe7, 0xda, 0x69,
0x11, 0x43, 0xd9, 0x61, 0x94, 0xe7, 0xd9, 0x69, 0x16, 0x48, 0x01, 0x40,
0xd9, 0x61, 0xd9, 0x69, 0x15, 0x48, 0xd9, 0x61, 0xd9, 0x69, 0x01, 0x40,
0xd9, 0x61, 0x07, 0x2a, 0x00, 0xd9, 0x87, 0xe7, 0x10, 0x00, 0x00, 0xf0,
0xd7, 0xfa, 0x04, 0x07, 0x0b, 0x0f, 0x12, 0x16, 0x19, 0x1c, 0xda, 0x69,
0xda, 0x61, 0x7d, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0x52, 0x01, 0xcf, 0xe7,
0x80, 0x22, 0xd9, 0x69, 0x92, 0x01, 0xcb, 0xe7, 0xc0, 0x22, 0xd9, 0x69,
0xfa, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0xd2, 0x01, 0xc4, 0xe7, 0xa0, 0x22,
0xd9, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0xd9, 0x69, 0xf7, 0xe7, 0xe0, 0x22,
0xd9, 0x69, 0xf4, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a,
0x00, 0xf0, 0xac, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00,
0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7,
0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21,
0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a,
0x00, 0xf0, 0x88, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00,
0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7,
0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7,
0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00,
0xed, 0xe7, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x68, 0xfa, 0x04, 0x0f, 0x08, 0x11,
0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd,
0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49,
0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x06, 0xd8, 0x00, 0xf0, 0x45, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05,
0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63,
0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02,
0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62,
0x70, 0x47, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29,
0x0b, 0xd8, 0x00, 0xf0, 0x27, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20,
0x99, 0x69, 0x12, 0x01, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43,
0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40,
0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01,
0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7,
0xd9, 0x69, 0x03, 0x48, 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5,
0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, 0xfb, 0xf9, 0x02, 0x0b,
0x12, 0x1b, 0x0c, 0x20, 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61,
0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48,
0x92, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20,
0xd9, 0x69, 0x92, 0x00, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43,
0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40,
0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff,
0x03, 0x00, 0x08, 0x00, 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00,
0x0a, 0x40, 0xa5, 0x43, 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c,
0x00, 0xd8, 0x4a, 0x40, 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc4, 0xf9,
0x02, 0x0a, 0x11, 0x19, 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61,
0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48,
0x12, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20,
0xd9, 0x69, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61,
0xef, 0xe7, 0xd9, 0x69, 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61,
0xd9, 0x69, 0xf5, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00,
0x8b, 0x40, 0x02, 0x6a, 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22,
0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60,
0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00,
0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x94, 0xf9, 0xe0, 0x60, 0x10, 0xbd,
0x04, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a,
0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01,
0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a,
0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff,
0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47,
0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43,
0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43,
0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68,
0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62,
0x70, 0x47, 0x40, 0x6a, 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7,
0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49,
0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3,
0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43,
0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b,
0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0x22, 0xf9, 0x12, 0x4c, 0x13, 0x4b,
0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7,
0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc,
0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46,
0x00, 0x00, 0x00, 0x20, 0x04, 0x25, 0x00, 0x08, 0x08, 0x00, 0x00, 0x20,
0x5c, 0x02, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, 0x04, 0x25, 0x00, 0x08,
0x04, 0x25, 0x00, 0x08, 0x04, 0x25, 0x00, 0x08, 0x04, 0x25, 0x00, 0x08,
0x04, 0x25, 0x00, 0x08, 0x04, 0x25, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02,
0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0,
0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43,
0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a,
0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0,
0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47,
0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18,
0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47,
0x00, 0xe1, 0x00, 0xe0, 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23,
0x18, 0x40, 0x04, 0x38, 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00,
0x18, 0x24, 0xc0, 0x00, 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40,
0x9b, 0x18, 0x1a, 0x68, 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd,
0x83, 0x08, 0x02, 0x4a, 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0,
0x00, 0xe4, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43,
0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a,
0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a,
0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00,
0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09,
0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00,
0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60,
0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45,
0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01,
0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59,
0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24,
0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18,
0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0,
0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1,
0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a,
0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00,
0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0,
0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22,
0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70,
0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40,
0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9,
0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00,
0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60,
0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22,
0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42,
0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00,
0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24,
0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0,
0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1,
0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7,
0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00,
0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42,
0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42,
0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02,
0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02,
0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a,
0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46,
0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8,
0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47,
0x70, 0x47, 0xc0, 0x46, 0x70, 0xb5, 0x00, 0x22, 0x0c, 0x4b, 0x04, 0x00,
0x0d, 0x00, 0x00, 0xf0, 0xa5, 0xfe, 0x00, 0x28, 0x04, 0xd1, 0x20, 0x00,
0x29, 0x00, 0x00, 0xf0, 0x0f, 0xfe, 0x70, 0xbd, 0x06, 0x4b, 0x00, 0x22,
0x20, 0x00, 0x29, 0x00, 0x00, 0xf0, 0x76, 0xfa, 0x00, 0xf0, 0x06, 0xfe,
0x80, 0x23, 0x1b, 0x06, 0x9c, 0x46, 0x60, 0x44, 0xf1, 0xe7, 0xc0, 0x46,
0x00, 0x00, 0xe0, 0x41, 0xf0, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46,
0xde, 0x46, 0xe0, 0xb5, 0x98, 0x46, 0x0c, 0x03, 0x4b, 0x00, 0x06, 0x00,
0x92, 0x46, 0x87, 0xb0, 0x24, 0x0b, 0x5b, 0x0d, 0xcf, 0x0f, 0x00, 0x2b,
0x6c, 0xd0, 0xdd, 0x4a, 0x93, 0x42, 0x00, 0xd1, 0x86, 0xe0, 0x42, 0x0f,
0xe4, 0x00, 0x14, 0x43, 0x80, 0x22, 0x12, 0x04, 0x14, 0x43, 0xd9, 0x4a,
0xc5, 0x00, 0x94, 0x46, 0x63, 0x44, 0x00, 0x93, 0x00, 0x23, 0x99, 0x46,
0x9b, 0x46, 0x43, 0x46, 0x42, 0x46, 0x1e, 0x03, 0xd2, 0x0f, 0x5b, 0x00,
0x50, 0x46, 0x90, 0x46, 0x36, 0x0b, 0x5b, 0x0d, 0x00, 0xd1, 0x78, 0xe0,
0xce, 0x4a, 0x93, 0x42, 0x1d, 0xd0, 0xce, 0x49, 0x42, 0x0f, 0x8c, 0x46,
0x00, 0x99, 0x63, 0x44, 0xf6, 0x00, 0x8c, 0x46, 0x16, 0x43, 0x80, 0x22,
0x9c, 0x44, 0x12, 0x04, 0x63, 0x46, 0x16, 0x43, 0xc2, 0x00, 0x00, 0x20,
0x00, 0x93, 0x00, 0x99, 0x43, 0x46, 0x01, 0x31, 0x8c, 0x46, 0x49, 0x46,
0x7b, 0x40, 0x01, 0x93, 0x0f, 0x29, 0x00, 0xd9, 0x7e, 0xe0, 0xc2, 0x4b,
0x89, 0x00, 0x59, 0x58, 0x8f, 0x46, 0x52, 0x46, 0x00, 0x9b, 0x32, 0x43,
0x00, 0xd0, 0x56, 0xe1, 0xbb, 0x49, 0x00, 0x26, 0x8c, 0x46, 0x63, 0x44,
0x49, 0x46, 0x00, 0x93, 0x02, 0x23, 0x19, 0x43, 0x89, 0x46, 0x02, 0x20,
0xe1, 0xe7, 0x43, 0x46, 0x01, 0x93, 0x34, 0x00, 0x15, 0x00, 0x83, 0x46,
0x5b, 0x46, 0x02, 0x2b, 0x5e, 0xd0, 0x03, 0x2b, 0x00, 0xd1, 0xf3, 0xe1,
0x01, 0x2b, 0x00, 0xd0, 0x18, 0xe1, 0x00, 0x22, 0x00, 0x24, 0x00, 0x25,
0x01, 0x9b, 0x12, 0x05, 0x22, 0x43, 0xdb, 0x07, 0x1a, 0x43, 0x28, 0x00,
0x11, 0x00, 0x07, 0xb0, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46,
0xab, 0x46, 0xf0, 0xbd, 0x25, 0x00, 0x05, 0x43, 0x00, 0xd1, 0x41, 0xe1,
0x00, 0x2c, 0x00, 0xd1, 0xad, 0xe1, 0x20, 0x00, 0x00, 0xf0, 0x10, 0xfe,
0x01, 0x00, 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, 0x10, 0x00, 0x5b, 0x1a,
0x31, 0x00, 0x35, 0x00, 0x08, 0x38, 0x84, 0x40, 0xd9, 0x40, 0x85, 0x40,
0x0c, 0x43, 0x9e, 0x48, 0x83, 0x1a, 0x00, 0x93, 0x00, 0x23, 0x99, 0x46,
0x9b, 0x46, 0x86, 0xe7, 0x05, 0x00, 0x25, 0x43, 0x00, 0xd0, 0x1c, 0xe1,
0x08, 0x22, 0x00, 0x93, 0x02, 0x23, 0x00, 0x24, 0x91, 0x46, 0x9b, 0x46,
0x7b, 0xe7, 0x52, 0x46, 0x32, 0x43, 0x00, 0xd1, 0x0a, 0xe1, 0x00, 0x2e,
0x00, 0xd1, 0x76, 0xe1, 0x30, 0x00, 0x00, 0xf0, 0xe7, 0xfd, 0x02, 0x00,
0x0b, 0x3a, 0x1d, 0x23, 0x01, 0x00, 0x9b, 0x1a, 0x52, 0x46, 0x08, 0x39,
0xda, 0x40, 0x8e, 0x40, 0x16, 0x43, 0x52, 0x46, 0x8a, 0x40, 0x00, 0x9b,
0x89, 0x49, 0x18, 0x1a, 0x03, 0x00, 0x8c, 0x46, 0x63, 0x44, 0x00, 0x20,
0x00, 0x93, 0x7a, 0xe7, 0x00, 0x24, 0x00, 0x25, 0x81, 0x4a, 0xa5, 0xe7,
0x2f, 0x0c, 0x2d, 0x04, 0x2d, 0x0c, 0x2b, 0x00, 0x11, 0x0c, 0x12, 0x04,
0x12, 0x0c, 0x53, 0x43, 0x98, 0x46, 0x13, 0x00, 0x28, 0x00, 0x7b, 0x43,
0x99, 0x46, 0x48, 0x43, 0x48, 0x44, 0x83, 0x46, 0x40, 0x46, 0x0b, 0x00,
0x00, 0x0c, 0x82, 0x46, 0x58, 0x46, 0x7b, 0x43, 0x50, 0x44, 0x02, 0x93,
0x81, 0x45, 0x06, 0xd9, 0x9a, 0x46, 0x80, 0x23, 0x5b, 0x02, 0x99, 0x46,
0xca, 0x44, 0x53, 0x46, 0x02, 0x93, 0x03, 0x0c, 0x9b, 0x46, 0x43, 0x46,
0x1b, 0x04, 0x00, 0x04, 0x1b, 0x0c, 0x98, 0x46, 0x03, 0x00, 0x43, 0x44,
0x04, 0x93, 0x33, 0x0c, 0x99, 0x46, 0x2b, 0x00, 0x36, 0x04, 0x36, 0x0c,
0x73, 0x43, 0x98, 0x46, 0x33, 0x00, 0x7b, 0x43, 0x9a, 0x46, 0x4b, 0x46,
0x5d, 0x43, 0x5f, 0x43, 0x43, 0x46, 0x55, 0x44, 0x18, 0x0c, 0x40, 0x19,
0x82, 0x45, 0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x9a, 0x46, 0x57, 0x44,
0x05, 0x0c, 0xeb, 0x19, 0x05, 0x93, 0x43, 0x46, 0x1d, 0x04, 0x2d, 0x0c,
0x00, 0x04, 0x40, 0x19, 0x25, 0x0c, 0x24, 0x04, 0x24, 0x0c, 0x27, 0x00,
0x57, 0x43, 0x6a, 0x43, 0x90, 0x46, 0x2a, 0x00, 0x3b, 0x0c, 0x9a, 0x46,
0x4a, 0x43, 0x61, 0x43, 0x41, 0x44, 0x51, 0x44, 0x83, 0x44, 0x88, 0x45,
0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46, 0x42, 0x44, 0x3f, 0x04,
0x0b, 0x0c, 0x3f, 0x0c, 0x09, 0x04, 0xc9, 0x19, 0x27, 0x00, 0x98, 0x46,
0x4b, 0x46, 0x77, 0x43, 0x5c, 0x43, 0x6e, 0x43, 0x5d, 0x43, 0x3b, 0x0c,
0x99, 0x46, 0xa4, 0x19, 0x4c, 0x44, 0x42, 0x44, 0x03, 0x95, 0xa6, 0x42,
0x04, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46, 0x45, 0x44, 0x03, 0x95,
0x02, 0x9b, 0x3f, 0x04, 0x5b, 0x44, 0x1e, 0x00, 0x83, 0x42, 0x80, 0x41,
0x23, 0x04, 0x98, 0x46, 0x05, 0x9b, 0x3f, 0x0c, 0x47, 0x44, 0x98, 0x46,
0x76, 0x18, 0x8e, 0x42, 0x89, 0x41, 0x47, 0x44, 0x40, 0x42, 0x3d, 0x18,
0xa8, 0x46, 0x93, 0x46, 0x49, 0x42, 0x8a, 0x46, 0xc3, 0x44, 0x9f, 0x42,
0xbf, 0x41, 0x80, 0x45, 0x80, 0x41, 0x03, 0x9b, 0xda, 0x44, 0x98, 0x46,
0x53, 0x46, 0x40, 0x42, 0x7f, 0x42, 0x07, 0x43, 0x24, 0x0c, 0x93, 0x45,
0x92, 0x41, 0x8a, 0x45, 0x89, 0x41, 0x3f, 0x19, 0xdc, 0x0d, 0x04, 0x9b,
0x75, 0x02, 0x1d, 0x43, 0x68, 0x1e, 0x85, 0x41, 0x53, 0x46, 0x52, 0x42,
0x49, 0x42, 0x0a, 0x43, 0xbf, 0x18, 0x47, 0x44, 0xf6, 0x0d, 0x7f, 0x02,
0x35, 0x43, 0x5a, 0x02, 0x3c, 0x43, 0x15, 0x43, 0xfb, 0x01, 0x00, 0xd4,
0xc1, 0xe0, 0x01, 0x21, 0x6a, 0x08, 0x0d, 0x40, 0x15, 0x43, 0xe2, 0x07,
0x15, 0x43, 0x64, 0x08, 0x26, 0x49, 0x61, 0x44, 0x00, 0x29, 0x56, 0xdd,
0x6b, 0x07, 0x09, 0xd0, 0x0f, 0x22, 0x2a, 0x40, 0x04, 0x2a, 0x05, 0xd0,
0x2a, 0x1d, 0xaa, 0x42, 0xad, 0x41, 0x6d, 0x42, 0x64, 0x19, 0x15, 0x00,
0xe3, 0x01, 0x04, 0xd5, 0x80, 0x21, 0x1e, 0x4a, 0xc9, 0x00, 0x14, 0x40,
0x61, 0x44, 0x1d, 0x4a, 0x91, 0x42, 0x00, 0xdd, 0x24, 0xe7, 0x62, 0x07,
0xed, 0x08, 0x64, 0x02, 0x49, 0x05, 0x15, 0x43, 0x24, 0x0b, 0x4a, 0x0d,
0xc6, 0xe6, 0x01, 0x97, 0xb8, 0xe6, 0x10, 0x4a, 0x03, 0x20, 0x94, 0x46,
0x63, 0x44, 0x4a, 0x46, 0x00, 0x93, 0x03, 0x23, 0x1a, 0x43, 0x91, 0x46,
0x52, 0x46, 0x8a, 0xe6, 0x49, 0x46, 0x01, 0x23, 0x19, 0x43, 0x89, 0x46,
0x00, 0x26, 0x01, 0x20, 0x83, 0xe6, 0x0c, 0x22, 0x00, 0x93, 0x03, 0x23,
0x05, 0x00, 0x91, 0x46, 0x9b, 0x46, 0x5e, 0xe6, 0x04, 0x23, 0x99, 0x46,
0x00, 0x23, 0x00, 0x93, 0x01, 0x33, 0x00, 0x24, 0x9b, 0x46, 0x56, 0xe6,
0xff, 0x07, 0x00, 0x00, 0x01, 0xfc, 0xff, 0xff, 0xc4, 0x24, 0x00, 0x08,
0x0d, 0xfc, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe,
0xfe, 0x07, 0x00, 0x00, 0x00, 0x23, 0x80, 0x24, 0x00, 0x25, 0x44, 0x4a,
0x01, 0x93, 0x24, 0x03, 0x8e, 0xe6, 0x01, 0x20, 0x40, 0x1a, 0x38, 0x28,
0x00, 0xdd, 0x86, 0xe6, 0x1f, 0x28, 0x5b, 0xdd, 0x1f, 0x22, 0x23, 0x00,
0x52, 0x42, 0x51, 0x1a, 0xcb, 0x40, 0x19, 0x00, 0x20, 0x28, 0x03, 0xd0,
0x3b, 0x4a, 0x62, 0x44, 0x94, 0x40, 0x25, 0x43, 0x6a, 0x1e, 0x95, 0x41,
0x2a, 0x00, 0x0a, 0x43, 0x07, 0x21, 0x0d, 0x00, 0x00, 0x24, 0x15, 0x40,
0x11, 0x42, 0x5b, 0xd0, 0x0f, 0x21, 0x00, 0x24, 0x11, 0x40, 0x04, 0x29,
0x53, 0xd0, 0x11, 0x1d, 0x91, 0x42, 0x92, 0x41, 0x52, 0x42, 0xa4, 0x18,
0x0a, 0x00, 0x23, 0x02, 0x4b, 0xd5, 0x01, 0x22, 0x00, 0x24, 0x00, 0x25,
0x60, 0xe6, 0x80, 0x23, 0x1b, 0x03, 0x1c, 0x42, 0x09, 0xd0, 0x1e, 0x42,
0x07, 0xd1, 0x33, 0x43, 0x1c, 0x03, 0x43, 0x46, 0x15, 0x00, 0x24, 0x0b,
0x25, 0x4a, 0x01, 0x93, 0x52, 0xe6, 0x80, 0x22, 0x12, 0x03, 0x14, 0x43,
0x24, 0x03, 0x22, 0x4a, 0x24, 0x0b, 0x01, 0x97, 0x4a, 0xe6, 0x00, 0xf0,
0x71, 0xfc, 0x03, 0x00, 0x1a, 0x00, 0x15, 0x32, 0x20, 0x30, 0x1c, 0x2a,
0x00, 0xdc, 0x84, 0xe6, 0x56, 0x46, 0x08, 0x3b, 0x00, 0x22, 0x9e, 0x40,
0x89, 0xe6, 0x00, 0xf0, 0x63, 0xfc, 0x01, 0x00, 0x02, 0x00, 0x15, 0x31,
0x20, 0x32, 0x1c, 0x29, 0x00, 0xdc, 0x4e, 0xe6, 0x34, 0x00, 0x08, 0x38,
0x00, 0x25, 0x84, 0x40, 0x53, 0xe6, 0x00, 0x9b, 0x9c, 0x46, 0x41, 0xe7,
0x12, 0x49, 0x22, 0x00, 0x61, 0x44, 0x2e, 0x00, 0x8d, 0x40, 0x8a, 0x40,
0xc6, 0x40, 0x69, 0x1e, 0x8d, 0x41, 0x32, 0x43, 0x2a, 0x43, 0xc4, 0x40,
0x53, 0x07, 0xb6, 0xd0, 0x0f, 0x21, 0x11, 0x40, 0x04, 0x29, 0xac, 0xd1,
0xb1, 0xe7, 0x65, 0x07, 0x64, 0x02, 0x24, 0x0b, 0xd2, 0x08, 0x15, 0x43,
0x00, 0x22, 0x11, 0xe6, 0x80, 0x22, 0x12, 0x03, 0x14, 0x43, 0x24, 0x03,
0x01, 0x4a, 0x24, 0x0b, 0x0a, 0xe6, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00,
0x3e, 0x04, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00, 0xf8, 0xb5, 0x57, 0x46,
0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x04, 0x00, 0xe0, 0xb5, 0x1f, 0x00,
0x10, 0x00, 0x0b, 0x03, 0x62, 0x0f, 0x4e, 0x00, 0xcd, 0x0f, 0x5b, 0x0a,
0x39, 0x03, 0x13, 0x43, 0x49, 0x0a, 0xe2, 0x00, 0x44, 0x0f, 0x21, 0x43,
0xc2, 0x4c, 0x91, 0x46, 0x92, 0x46, 0xc0, 0x00, 0x7a, 0x00, 0x80, 0x46,
0x76, 0x0d, 0x52, 0x0d, 0xff, 0x0f, 0xa2, 0x42, 0x00, 0xd1, 0xb4, 0xe0,
0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd1, 0x88, 0xe0,
0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x00, 0xdc, 0xb2, 0xe0, 0x00, 0x2a,
0x00, 0xd1, 0xc5, 0xe0, 0xb5, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x8b, 0xe2,
0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd,
0xa1, 0xe1, 0x1f, 0x2a, 0x00, 0xdd, 0x16, 0xe2, 0x20, 0x27, 0x0c, 0x00,
0xbf, 0x1a, 0xbc, 0x40, 0x02, 0x00, 0xa0, 0x46, 0x64, 0x46, 0xb8, 0x40,
0xe2, 0x40, 0x44, 0x46, 0x14, 0x43, 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41,
0x60, 0x46, 0xc1, 0x40, 0x22, 0x43, 0x5b, 0x1a, 0x49, 0x46, 0x8c, 0x1a,
0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x43, 0x46,
0x1b, 0x02, 0x00, 0xd4, 0x17, 0xe1, 0x43, 0x46, 0x5b, 0x02, 0x5b, 0x0a,
0x98, 0x46, 0x43, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0x6c, 0xe1, 0x40, 0x46,
0x00, 0xf0, 0xc8, 0xfb, 0x02, 0x00, 0x08, 0x3a, 0x20, 0x21, 0x20, 0x00,
0x43, 0x46, 0x89, 0x1a, 0x93, 0x40, 0xc8, 0x40, 0x94, 0x40, 0x03, 0x43,
0x96, 0x42, 0x00, 0xdd, 0x57, 0xe1, 0x96, 0x1b, 0x71, 0x1c, 0x1f, 0x29,
0x00, 0xdd, 0xcb, 0xe1, 0x20, 0x22, 0x18, 0x00, 0x26, 0x00, 0x52, 0x1a,
0x94, 0x40, 0x90, 0x40, 0xce, 0x40, 0xcb, 0x40, 0x62, 0x1e, 0x94, 0x41,
0x30, 0x43, 0x98, 0x46, 0x00, 0x26, 0x04, 0x43, 0x63, 0x07, 0x09, 0xd0,
0x0f, 0x23, 0x23, 0x40, 0x04, 0x2b, 0x05, 0xd0, 0x23, 0x1d, 0xa3, 0x42,
0xa4, 0x41, 0x64, 0x42, 0xa0, 0x44, 0x1c, 0x00, 0x43, 0x46, 0x1b, 0x02,
0x00, 0xd4, 0xdf, 0xe0, 0x82, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd1,
0xfb, 0xe0, 0x42, 0x46, 0x80, 0x4b, 0xe4, 0x08, 0x1a, 0x40, 0x13, 0x00,
0x71, 0x05, 0x52, 0x07, 0x5b, 0x02, 0x22, 0x43, 0x1b, 0x0b, 0x49, 0x0d,
0x09, 0x05, 0xed, 0x07, 0x19, 0x43, 0x29, 0x43, 0x10, 0x00, 0x3c, 0xbc,
0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf8, 0xbd, 0xb4, 0x1a,
0xa4, 0x46, 0x00, 0x2c, 0x58, 0xdd, 0x00, 0x2a, 0x00, 0xd1, 0x9e, 0xe0,
0x71, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x3b, 0xe1, 0x80, 0x22, 0x12, 0x04,
0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd, 0xc1, 0xe0, 0x1f, 0x2a,
0x00, 0xdc, 0xbb, 0xe1, 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00,
0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40,
0x08, 0x43, 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, 0x14, 0x43,
0xb1, 0xe0, 0x0c, 0x00, 0x04, 0x43, 0x2a, 0xd0, 0xbb, 0x46, 0xbd, 0x42,
0x2d, 0xd0, 0x61, 0x4c, 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c,
0x5c, 0xd0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd0, 0x15, 0xe1,
0x4d, 0x46, 0x1d, 0x43, 0x00, 0xd1, 0xc3, 0xe1, 0x65, 0x1e, 0x01, 0x2c,
0x00, 0xd1, 0x0c, 0xe2, 0x55, 0x4e, 0xb4, 0x42, 0x00, 0xd1, 0xf8, 0xe1,
0xac, 0x46, 0x0e, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe1,
0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, 0x00, 0xd1, 0xc6, 0xe1, 0x4e, 0x4c,
0xa4, 0x45, 0x00, 0xd1, 0xf4, 0xe0, 0x94, 0x46, 0x31, 0xe7, 0x01, 0x24,
0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd0, 0x1c, 0xe7, 0x4a, 0x4c,
0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c, 0x00, 0xd1, 0xcf, 0xe0,
0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd1, 0x5c, 0xe1, 0x42, 0x4e,
0xb2, 0x42, 0x00, 0xd1, 0xec, 0xe1, 0x80, 0x26, 0x36, 0x04, 0x33, 0x43,
0x64, 0x46, 0x38, 0x2c, 0x00, 0xdd, 0xb3, 0xe1, 0x1f, 0x2c, 0x00, 0xdd,
0x38, 0xe2, 0x20, 0x26, 0x36, 0x1b, 0x1c, 0x00, 0xb4, 0x40, 0x4f, 0x46,
0xa0, 0x46, 0x64, 0x46, 0xe7, 0x40, 0x44, 0x46, 0x3c, 0x43, 0x4f, 0x46,
0xb7, 0x40, 0x3e, 0x00, 0x77, 0x1e, 0xbe, 0x41, 0x34, 0x43, 0x66, 0x46,
0xf3, 0x40, 0xc9, 0x18, 0x24, 0x18, 0x84, 0x42, 0x9b, 0x41, 0x5b, 0x42,
0x98, 0x46, 0x16, 0x00, 0x88, 0x44, 0x4e, 0xe0, 0x30, 0x4a, 0x74, 0x1c,
0x14, 0x42, 0x00, 0xd0, 0xd6, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e,
0x00, 0xd0, 0x5b, 0xe1, 0x00, 0x2a, 0x00, 0xd1, 0xa5, 0xe1, 0x0a, 0x00,
0x02, 0x43, 0x00, 0xd0, 0xbb, 0xe1, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08,
0x0a, 0x43, 0xdb, 0x08, 0x27, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1,
0x74, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, 0x05, 0xd0, 0x1e, 0x4c,
0xa4, 0x45, 0x00, 0xd1, 0x94, 0xe0, 0x94, 0x46, 0x59, 0xe7, 0x48, 0x44,
0x48, 0x45, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, 0x04, 0x00, 0x52, 0x42,
0x90, 0x44, 0x43, 0x46, 0x02, 0x26, 0x1b, 0x02, 0x00, 0xd5, 0xc4, 0xe0,
0x01, 0x3e, 0x63, 0x07, 0x00, 0xd0, 0x11, 0xe7, 0x43, 0x46, 0xb4, 0x46,
0x59, 0x07, 0xe2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x0f, 0x49, 0x8c, 0x45,
0x40, 0xd0, 0x61, 0x46, 0x1b, 0x03, 0x49, 0x05, 0x1b, 0x0b, 0x49, 0x0d,
0x20, 0xe7, 0x01, 0x43, 0x0c, 0x00, 0x61, 0x1e, 0x8c, 0x41, 0x4c, 0x44,
0x4c, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, 0x98, 0x44, 0x43, 0x46,
0x1b, 0x02, 0xe0, 0xd5, 0x04, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd0,
0x9f, 0xe0, 0x31, 0x00, 0x00, 0x23, 0x00, 0x22, 0x0a, 0xe7, 0xc0, 0x46,
0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, 0x01, 0xf8, 0xff, 0xff,
0xfe, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xd1, 0x60, 0xe1, 0x0a, 0x00,
0x02, 0x43, 0x4d, 0xd0, 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, 0x22, 0x43,
0x80, 0x24, 0xdb, 0x08, 0x24, 0x03, 0x23, 0x42, 0x07, 0xd0, 0xce, 0x08,
0x26, 0x42, 0x04, 0xd1, 0x5d, 0x46, 0x33, 0x00, 0xc2, 0x08, 0x49, 0x07,
0x0a, 0x43, 0x51, 0x0f, 0xd2, 0x00, 0xd2, 0x08, 0x49, 0x07, 0x0a, 0x43,
0x11, 0x00, 0x19, 0x43, 0x00, 0xd1, 0xc8, 0xe1, 0x80, 0x21, 0x09, 0x03,
0x0b, 0x43, 0x1b, 0x03, 0xd5, 0x49, 0x1b, 0x0b, 0xda, 0xe6, 0xd5, 0x49,
0xb6, 0x1a, 0x0b, 0x40, 0x98, 0x46, 0xb5, 0xe6, 0x20, 0x00, 0x00, 0xf0,
0x5b, 0xfa, 0x02, 0x00, 0x18, 0x32, 0x1f, 0x2a, 0x00, 0xdc, 0x8f, 0xe6,
0x23, 0x00, 0x08, 0x38, 0x83, 0x40, 0x00, 0x24, 0x92, 0xe6, 0x08, 0x43,
0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, 0x6d, 0xe6, 0xca, 0x4c, 0x72, 0x1c,
0x22, 0x42, 0x00, 0xd0, 0xad, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e,
0xb8, 0xd1, 0x00, 0x2a, 0x00, 0xd1, 0x58, 0xe1, 0x0a, 0x00, 0x02, 0x43,
0x00, 0xd0, 0x59, 0xe1, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43,
0xdb, 0x08, 0x86, 0xe7, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43,
0xdb, 0x08, 0xc1, 0xe7, 0xba, 0x4d, 0xaa, 0x42, 0x00, 0xd1, 0x1e, 0xe1,
0x80, 0x25, 0x2d, 0x04, 0x2b, 0x43, 0x64, 0x46, 0x38, 0x2c, 0x5d, 0xdc,
0x1f, 0x2c, 0x00, 0xdd, 0xd0, 0xe0, 0x20, 0x25, 0x67, 0x46, 0x2d, 0x1b,
0x4e, 0x46, 0x1c, 0x00, 0xfe, 0x40, 0xac, 0x40, 0x34, 0x43, 0x4e, 0x46,
0xae, 0x40, 0x35, 0x00, 0xfb, 0x40, 0x6e, 0x1e, 0xb5, 0x41, 0xc9, 0x1a,
0x2c, 0x43, 0x4e, 0xe0, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41,
0x52, 0x42, 0x90, 0x46, 0x5f, 0x1a, 0x3a, 0x00, 0x47, 0x46, 0xd2, 0x1b,
0x90, 0x46, 0x12, 0x02, 0x00, 0xd5, 0x8b, 0xe0, 0x42, 0x46, 0x22, 0x43,
0x00, 0xd0, 0x30, 0xe6, 0x00, 0x23, 0x00, 0x25, 0x4d, 0xe7, 0x4a, 0x46,
0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x44, 0xe7, 0x42, 0x46,
0x9e, 0x4b, 0x61, 0x08, 0x1a, 0x40, 0x13, 0x00, 0x01, 0x22, 0x14, 0x40,
0x0c, 0x43, 0xda, 0x07, 0x5b, 0x08, 0x98, 0x46, 0x14, 0x43, 0x41, 0xe6,
0x1a, 0x00, 0x1f, 0x3e, 0xf2, 0x40, 0x16, 0x00, 0x20, 0x29, 0x03, 0xd0,
0x40, 0x22, 0x51, 0x1a, 0x8b, 0x40, 0x1c, 0x43, 0x62, 0x1e, 0x94, 0x41,
0x00, 0x23, 0x34, 0x43, 0x98, 0x46, 0x00, 0x26, 0x1d, 0xe7, 0x0c, 0x00,
0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0,
0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, 0x44, 0x46,
0x61, 0x1e, 0x8c, 0x41, 0x22, 0x43, 0xe9, 0xe5, 0x4c, 0x46, 0x23, 0x43,
0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x04, 0x1b, 0xa0, 0x42, 0x9b, 0x41,
0x5b, 0x42, 0xcb, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x16, 0x00, 0xe2, 0xe5,
0x4e, 0x46, 0x1e, 0x43, 0x00, 0xd1, 0xae, 0xe0, 0x66, 0x1e, 0x01, 0x2c,
0x00, 0xd1, 0xfd, 0xe0, 0x7b, 0x4f, 0xbc, 0x42, 0x00, 0xd1, 0x07, 0xe1,
0xb4, 0x46, 0x9b, 0xe6, 0x64, 0x46, 0x20, 0x22, 0x12, 0x1b, 0x0c, 0x00,
0x94, 0x40, 0x07, 0x00, 0x90, 0x40, 0xa0, 0x46, 0x64, 0x46, 0x42, 0x1e,
0x90, 0x41, 0x62, 0x46, 0xe7, 0x40, 0x44, 0x46, 0xd1, 0x40, 0x3c, 0x43,
0x04, 0x43, 0x5b, 0x18, 0xf3, 0xe6, 0x6f, 0x4c, 0xa2, 0x42, 0x00, 0xd1,
0xd5, 0xe0, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, 0x89, 0x41, 0x49, 0x42,
0x5b, 0x18, 0xdc, 0x07, 0x40, 0x08, 0x5b, 0x08, 0x98, 0x46, 0x16, 0x00,
0x04, 0x43, 0xcc, 0xe6, 0x00, 0x2a, 0x00, 0xd0, 0x82, 0xe0, 0x0a, 0x00,
0x02, 0x43, 0x40, 0xd1, 0x80, 0x23, 0x00, 0x25, 0x1b, 0x03, 0x13, 0xe7,
0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0xc5, 0xe6,
0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42,
0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x9e, 0xe5, 0x4a, 0x46, 0x59, 0x07,
0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xf9, 0xe6, 0x4a, 0x46, 0x14, 0x1a,
0xa1, 0x45, 0x92, 0x41, 0x5b, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46,
0x01, 0x26, 0x86, 0xe5, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43,
0xdb, 0x08, 0xa5, 0xe6, 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e,
0x9c, 0x41, 0x5b, 0xe6, 0x65, 0x46, 0x1e, 0x00, 0x20, 0x3d, 0xee, 0x40,
0x20, 0x2c, 0x05, 0xd0, 0x40, 0x25, 0x2d, 0x1b, 0xab, 0x40, 0x4c, 0x46,
0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x34, 0x43,
0x7d, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08,
0xcc, 0xe6, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe7, 0x4b, 0x07,
0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0x81, 0xe6, 0x4a, 0x46,
0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a,
0x98, 0x46, 0x5d, 0x46, 0x01, 0x26, 0x4e, 0xe5, 0x4b, 0x07, 0xc2, 0x08,
0x1a, 0x43, 0xcb, 0x08, 0xb2, 0xe6, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45,
0x92, 0x41, 0x5f, 0x1a, 0x52, 0x42, 0xba, 0x1a, 0x90, 0x46, 0x12, 0x02,
0x6b, 0xd5, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a,
0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x64, 0xe5, 0x4b, 0x07,
0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0x98, 0xe6, 0x4b, 0x07,
0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x4f, 0xe6, 0x0a, 0x00, 0x02, 0x43,
0x90, 0xd0, 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, 0x14, 0x43, 0x80, 0x22,
0xdb, 0x08, 0x12, 0x03, 0x13, 0x42, 0x08, 0xd0, 0xce, 0x08, 0x16, 0x42,
0x05, 0xd1, 0xc0, 0x08, 0x49, 0x07, 0x08, 0x43, 0x04, 0x00, 0x5d, 0x46,
0x33, 0x00, 0x61, 0x0f, 0xe2, 0x00, 0x49, 0x07, 0xd2, 0x08, 0x0a, 0x43,
0x78, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6,
0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, 0x92, 0x41, 0x98, 0x46, 0x52, 0x42,
0x90, 0x44, 0x43, 0x46, 0x04, 0x00, 0x1b, 0x02, 0x00, 0xd4, 0x1a, 0xe6,
0x42, 0x46, 0x0e, 0x4b, 0x01, 0x26, 0x1a, 0x40, 0x90, 0x46, 0x14, 0xe6,
0x66, 0x46, 0x1f, 0x00, 0x20, 0x3e, 0xf7, 0x40, 0x20, 0x2c, 0x05, 0xd0,
0x40, 0x26, 0x36, 0x1b, 0xb3, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46,
0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x3c, 0x43, 0xc8, 0xe5, 0x11, 0x00,
0x00, 0x23, 0x00, 0x22, 0x32, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00,
0xff, 0xff, 0x7f, 0xff, 0xfe, 0x07, 0x00, 0x00, 0x4a, 0x46, 0x14, 0x18,
0x84, 0x42, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, 0x52, 0x42, 0x90, 0x44,
0xe9, 0xe5, 0x42, 0x46, 0x22, 0x43, 0x00, 0xd1, 0xa6, 0xe6, 0xea, 0xe5,
0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6, 0x00, 0x22,
0x01, 0x49, 0x13, 0x00, 0x14, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00,
0x0a, 0x00, 0x30, 0xb5, 0x13, 0x4c, 0x53, 0x00, 0x09, 0x03, 0x05, 0x00,
0x09, 0x0b, 0x00, 0x20, 0x5b, 0x0d, 0xd2, 0x0f, 0xa3, 0x42, 0x04, 0xdd,
0x0f, 0x48, 0x83, 0x42, 0x02, 0xdd, 0x0f, 0x4b, 0xd0, 0x18, 0x30, 0xbd,
0x80, 0x20, 0x40, 0x03, 0x01, 0x43, 0x0d, 0x48, 0xc0, 0x1a, 0x1f, 0x28,
0x08, 0xdd, 0x0c, 0x48, 0xc3, 0x1a, 0xd9, 0x40, 0x0b, 0x00, 0x58, 0x42,
0x00, 0x2a, 0xf0, 0xd1, 0x18, 0x00, 0xee, 0xe7, 0x08, 0x4c, 0xc5, 0x40,
0xa4, 0x46, 0x63, 0x44, 0x99, 0x40, 0x0b, 0x00, 0x2b, 0x43, 0xf2, 0xe7,
0xfe, 0x03, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f,
0x33, 0x04, 0x00, 0x00, 0x13, 0x04, 0x00, 0x00, 0xed, 0xfb, 0xff, 0xff,
0x10, 0xb5, 0x04, 0x1e, 0x10, 0xd0, 0x00, 0xf0, 0x5f, 0xf8, 0x0f, 0x4b,
0x1b, 0x1a, 0x0a, 0x28, 0x11, 0xdc, 0x0b, 0x22, 0x21, 0x00, 0x12, 0x1a,
0xd1, 0x40, 0x15, 0x30, 0x0a, 0x03, 0x5b, 0x05, 0x84, 0x40, 0x12, 0x0b,
0x5b, 0x0d, 0x01, 0xe0, 0x00, 0x23, 0x00, 0x22, 0x1b, 0x05, 0x13, 0x43,
0x20, 0x00, 0x19, 0x00, 0x10, 0xbd, 0x22, 0x00, 0x0b, 0x38, 0x82, 0x40,
0x5b, 0x05, 0x12, 0x03, 0x00, 0x24, 0x12, 0x0b, 0x5b, 0x0d, 0xf1, 0xe7,
0x1e, 0x04, 0x00, 0x00, 0x84, 0x46, 0x10, 0x1c, 0x62, 0x46, 0x8c, 0x46,
0x19, 0x1c, 0x63, 0x46, 0x00, 0xe0, 0xc0, 0x46, 0x1f, 0xb5, 0x00, 0xf0,
0xff, 0xf8, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, 0xc8, 0x42, 0x1f, 0xbd,
0x10, 0xb5, 0x00, 0xf0, 0x49, 0xf8, 0x40, 0x42, 0x01, 0x30, 0x10, 0xbd,
0x10, 0xb5, 0x00, 0xf0, 0xf1, 0xf8, 0x00, 0x28, 0x01, 0xdb, 0x00, 0x20,
0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0,
0xe7, 0xf8, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20,
0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x6b, 0xf8, 0x00, 0x28,
0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46,
0x10, 0xb5, 0x00, 0xf0, 0x61, 0xf8, 0x00, 0x28, 0x01, 0xda, 0x00, 0x20,
0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x1c, 0x21, 0x01, 0x23,
0x1b, 0x04, 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0c, 0x10, 0x39, 0x1b, 0x0a,
0x98, 0x42, 0x01, 0xd3, 0x00, 0x0a, 0x08, 0x39, 0x1b, 0x09, 0x98, 0x42,
0x01, 0xd3, 0x00, 0x09, 0x04, 0x39, 0x02, 0xa2, 0x10, 0x5c, 0x40, 0x18,
0x70, 0x47, 0xc0, 0x46, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb5, 0x4f, 0x46,
0x46, 0x46, 0xd6, 0x46, 0x94, 0x46, 0x91, 0x46, 0x1a, 0x03, 0x12, 0x0b,
0x18, 0x4d, 0xc0, 0xb5, 0x4c, 0x00, 0x0f, 0x03, 0x92, 0x46, 0x5a, 0x00,
0x06, 0x00, 0x80, 0x46, 0x3f, 0x0b, 0x01, 0x20, 0x64, 0x0d, 0xc9, 0x0f,
0x52, 0x0d, 0xdb, 0x0f, 0xac, 0x42, 0x0a, 0xd0, 0xaa, 0x42, 0x03, 0xd0,
0x94, 0x42, 0x01, 0xd1, 0x57, 0x45, 0x0d, 0xd0, 0x1c, 0xbc, 0x90, 0x46,
0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0x3d, 0x00, 0x35, 0x43, 0xf7, 0xd1,
0xa2, 0x42, 0xf5, 0xd1, 0x52, 0x46, 0x65, 0x46, 0x2a, 0x43, 0xf1, 0xd1,
0x01, 0x20, 0xc8, 0x45, 0xee, 0xd1, 0x99, 0x42, 0x06, 0xd0, 0x00, 0x2c,
0xea, 0xd1, 0x3e, 0x43, 0x30, 0x00, 0x46, 0x1e, 0xb0, 0x41, 0xe5, 0xe7,
0x00, 0x20, 0xe3, 0xe7, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46,
0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5,
0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x32, 0x4d, 0x0f, 0x03, 0x4a, 0x00,
0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d,
0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, 0x29, 0xd0, 0xab, 0x42,
0x18, 0xd0, 0x00, 0x2a, 0x2a, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42,
0x65, 0x41, 0x00, 0x2b, 0x02, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x27, 0xd0,
0x00, 0x2d, 0x15, 0xd1, 0x81, 0x42, 0x28, 0xd0, 0x02, 0x20, 0x01, 0x39,
0x08, 0x40, 0x01, 0x38, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46,
0xab, 0x46, 0xf0, 0xbd, 0x4d, 0x46, 0x2e, 0x43, 0x2f, 0xd1, 0x00, 0x2a,
0xee, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0xe9, 0xd0,
0x00, 0x28, 0xed, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xea, 0xe7, 0x3d, 0x00,
0x25, 0x43, 0x20, 0xd1, 0x93, 0x42, 0xeb, 0xd0, 0x00, 0x2b, 0xdd, 0xd1,
0x4c, 0x46, 0x26, 0x43, 0xda, 0xd1, 0xdb, 0xe7, 0x5b, 0x46, 0x00, 0x20,
0x00, 0x2b, 0xdb, 0xd0, 0xd6, 0xe7, 0x9a, 0x42, 0x0a, 0xdc, 0xe7, 0xdb,
0x4f, 0x45, 0xd1, 0xd8, 0x10, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xd1, 0xd2,
0x00, 0x29, 0xe1, 0xd0, 0x08, 0x00, 0xcd, 0xe7, 0x43, 0x42, 0x58, 0x41,
0x02, 0x23, 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, 0xc6, 0xe7, 0x02, 0x20,
0x40, 0x42, 0xc3, 0xe7, 0xc4, 0x45, 0xbd, 0xd8, 0x00, 0x20, 0xc4, 0x45,
0xbe, 0xd2, 0xeb, 0xe7, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46,
0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5,
0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x31, 0x4d, 0x0f, 0x03, 0x4a, 0x00,
0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d,
0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, 0x11, 0xd0, 0xab, 0x42,
0x14, 0xd0, 0x00, 0x2a, 0x2f, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42,
0x65, 0x41, 0x00, 0x2b, 0x14, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x11, 0xd1,
0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0x17, 0xd0, 0x10, 0xe0, 0x3d, 0x00,
0x25, 0x43, 0x12, 0xd1, 0x93, 0x42, 0x1c, 0xd1, 0x4d, 0x46, 0x2e, 0x43,
0x0d, 0xd1, 0x00, 0x2a, 0x04, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41,
0x00, 0x2d, 0x0d, 0xd1, 0x81, 0x42, 0x16, 0xd0, 0x02, 0x20, 0x01, 0x39,
0x08, 0x40, 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20, 0x3c, 0xbc, 0x90, 0x46,
0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x28, 0xf7, 0xd1,
0x01, 0x20, 0x40, 0x42, 0xf4, 0xe7, 0x00, 0x2b, 0xea, 0xd1, 0x4c, 0x46,
0x26, 0x43, 0xe7, 0xd1, 0xe8, 0xe7, 0x9a, 0x42, 0x06, 0xdd, 0x43, 0x42,
0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, 0xe5, 0xe7,
0x9a, 0x42, 0xe9, 0xdb, 0x4f, 0x45, 0xdb, 0xd8, 0x06, 0xd0, 0x00, 0x20,
0x4f, 0x45, 0xdd, 0xd2, 0x00, 0x29, 0xe3, 0xd0, 0x08, 0x00, 0xd9, 0xe7,
0xc4, 0x45, 0xd1, 0xd8, 0x00, 0x20, 0xc4, 0x45, 0xd4, 0xd2, 0xf5, 0xe7,
0xff, 0x07, 0x00, 0x00, 0xb0, 0x16, 0x00, 0x08, 0xde, 0x15, 0x00, 0x08,
0xde, 0x15, 0x00, 0x08, 0xda, 0x15, 0x00, 0x08, 0xe4, 0x15, 0x00, 0x08,
0xe4, 0x15, 0x00, 0x08, 0xd0, 0x18, 0x00, 0x08, 0xda, 0x15, 0x00, 0x08,
0xe4, 0x15, 0x00, 0x08, 0xd0, 0x18, 0x00, 0x08, 0xe4, 0x15, 0x00, 0x08,
0xda, 0x15, 0x00, 0x08, 0x6e, 0x18, 0x00, 0x08, 0x6e, 0x18, 0x00, 0x08,
0x6e, 0x18, 0x00, 0x08, 0x3a, 0x19, 0x00, 0x08, 0x00, 0x12, 0x7a, 0x00,
0x00, 0x12, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

View File

@ -0,0 +1,444 @@
/*
* This file has been generated by the shelly-dimmer-stm32 project.
* https://github.com/jamesturton/shelly-dimmer-stm32
* Copyright (c) 2020 James Turton.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 51;
static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 0;
const uint8_t stm_firmware[] PROGMEM = {
0x00, 0x10, 0x00, 0x20, 0xf5, 0x0f, 0x00, 0x08, 0xf1, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08,
0x99, 0x07, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0x31, 0x08, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xa9, 0x07, 0x00, 0x08, 0x95, 0x06, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a,
0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a,
0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40,
0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0,
0x00, 0xf0, 0x76, 0xfc, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60,
0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x6a, 0xfc,
0xf4, 0xe7, 0xc0, 0x46, 0x4c, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20,
0x10, 0x27, 0x00, 0x00, 0x19, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20,
0x00, 0x04, 0x00, 0x48, 0x20, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20,
0x20, 0x23, 0xf0, 0xb5, 0x88, 0x4a, 0xc7, 0xb0, 0x11, 0x68, 0x00, 0xaf,
0x7a, 0x61, 0x19, 0x42, 0x33, 0xd0, 0x86, 0x4a, 0x12, 0x68, 0x1a, 0x42,
0x2f, 0xd0, 0x78, 0x69, 0x00, 0xf0, 0x4d, 0xff, 0x83, 0x4c, 0x84, 0x49,
0x23, 0x78, 0x05, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1,
0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9,
0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda,
0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x7a, 0x49, 0xed, 0xb2, 0xc8, 0x5c,
0x79, 0x4e, 0x00, 0x02, 0x28, 0x43, 0x00, 0x25, 0xb4, 0x46, 0x29, 0x00,
0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xad, 0x19, 0xc9, 0xb2,
0xad, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa8, 0x42, 0xde, 0xd0, 0x00, 0x23,
0x23, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0,
0x69, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x6c, 0x4c, 0xa3, 0x68,
0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0xb9, 0xe0, 0x7b, 0x69, 0x1b, 0x68,
0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd,
0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78,
0x63, 0x4a, 0x64, 0x4d, 0x13, 0x70, 0x8b, 0x78, 0x2b, 0x70, 0x01, 0x2b,
0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e,
0x93, 0x41, 0x5f, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79,
0x12, 0x02, 0x13, 0x43, 0x5c, 0x4a, 0x13, 0x80, 0x1c, 0x23, 0x00, 0x21,
0xf8, 0x18, 0xfc, 0x22, 0x21, 0x70, 0xb9, 0x61, 0x00, 0xf0, 0xe2, 0xff,
0xff, 0xf7, 0x50, 0xff, 0x57, 0x4b, 0x58, 0x4c, 0x1b, 0x68, 0x58, 0x4e,
0x3b, 0x61, 0x23, 0x68, 0x00, 0x2b, 0x02, 0xd0, 0xff, 0xf7, 0x46, 0xff,
0x00, 0xe0, 0x33, 0x60, 0x54, 0x4b, 0x55, 0x49, 0x1b, 0x68, 0x09, 0x68,
0x32, 0x68, 0x5b, 0x1a, 0x53, 0x49, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23,
0x23, 0x60, 0x2b, 0x78, 0x11, 0x2b, 0x5b, 0xd0, 0x0a, 0xd8, 0x01, 0x2b,
0x0a, 0xd0, 0x10, 0x2b, 0x5b, 0xd0, 0x7b, 0x69, 0x1a, 0x68, 0x80, 0x23,
0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x9c, 0xe7, 0x20, 0x2b, 0xf6, 0xd1,
0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, 0xba, 0x60, 0xe2, 0x1d,
0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, 0x8a, 0x1a, 0x95, 0x46,
0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x38, 0x4a, 0x01, 0xa8, 0x12, 0x78,
0xb3, 0x70, 0x18, 0x23, 0x72, 0x70, 0xf9, 0x18, 0x22, 0x00, 0xf4, 0x70,
0x00, 0xf0, 0x4a, 0xff, 0x00, 0x22, 0x13, 0x00, 0x21, 0x1d, 0xe0, 0x1c,
0xf5, 0x18, 0x6d, 0x78, 0x01, 0x33, 0x52, 0x19, 0xdb, 0xb2, 0x92, 0xb2,
0x98, 0x42, 0xf7, 0xdc, 0x13, 0x0a, 0x73, 0x54, 0x63, 0x1d, 0xf2, 0x54,
0x04, 0x23, 0x06, 0x34, 0x33, 0x55, 0x00, 0x24, 0x27, 0x4d, 0x33, 0x5d,
0x69, 0x68, 0x3b, 0x60, 0xeb, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00,
0xfb, 0x60, 0x01, 0xf0, 0x63, 0xf8, 0xab, 0x68, 0x99, 0x42, 0x0a, 0xd0,
0xfb, 0x68, 0x3a, 0x69, 0xeb, 0x60, 0x39, 0x68, 0x2b, 0x68, 0x99, 0x54,
0xe8, 0x68, 0x69, 0x68, 0x01, 0xf0, 0x56, 0xf8, 0xe9, 0x60, 0x7b, 0x68,
0x01, 0x34, 0xa3, 0x42, 0xe3, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0xa8, 0xe7,
0xcc, 0x22, 0x92, 0x01, 0x02, 0x24, 0x3a, 0x83, 0xae, 0xe7, 0x21, 0x68,
0x00, 0x20, 0xf9, 0x61, 0x39, 0x69, 0x38, 0x83, 0x39, 0x62, 0x28, 0x21,
0x15, 0x48, 0x7a, 0x62, 0x13, 0x4a, 0x00, 0x88, 0x12, 0x78, 0x79, 0x18,
0x11, 0x24, 0x78, 0x83, 0x0a, 0x70, 0x9d, 0xe7, 0x22, 0x68, 0x58, 0x1c,
0xa0, 0x60, 0x61, 0x68, 0xd5, 0x5c, 0x01, 0xf0, 0x31, 0xf8, 0x03, 0x48,
0xa1, 0x60, 0xa9, 0xb2, 0x00, 0xf0, 0x47, 0xfe, 0x3d, 0xe7, 0xc0, 0x46,
0x00, 0x38, 0x01, 0x40, 0x1c, 0x38, 0x01, 0x40, 0x12, 0x00, 0x00, 0x20,
0x4c, 0x01, 0x00, 0x20, 0x4b, 0x01, 0x00, 0x20, 0x4d, 0x01, 0x00, 0x20,
0x34, 0x00, 0x00, 0x20, 0x25, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20,
0x30, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20,
0x48, 0x01, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20,
0x2c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0,
0x3f, 0xfc, 0xb0, 0x48, 0x00, 0xf0, 0x6e, 0xfc, 0xaf, 0x48, 0x00, 0xf0,
0x6b, 0xfc, 0xaf, 0x48, 0x00, 0xf0, 0x68, 0xfc, 0xae, 0x48, 0x00, 0xf0,
0x65, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x61, 0xfc, 0xc0, 0x20,
0x80, 0x00, 0x00, 0xf0, 0x5d, 0xfc, 0x00, 0x22, 0x90, 0x20, 0x11, 0x00,
0x08, 0x23, 0xc0, 0x05, 0x00, 0xf0, 0x0c, 0xfb, 0x02, 0x21, 0xa6, 0x48,
0x00, 0xf0, 0x05, 0xfb, 0xa5, 0x4b, 0x00, 0x22, 0x18, 0x70, 0xc8, 0x23,
0x90, 0x20, 0x01, 0x21, 0x5b, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xfe, 0xfa,
0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0xf7, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xf0, 0xfa, 0x80, 0x24, 0x90, 0x20, 0x64, 0x00, 0x03, 0x22,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x26, 0xfb, 0x23, 0x00, 0x00, 0x22,
0x01, 0x21, 0x93, 0x48, 0x00, 0xf0, 0xe2, 0xfa, 0x23, 0x00, 0x00, 0x22,
0x01, 0x21, 0x90, 0x48, 0x00, 0xf0, 0xfc, 0xfa, 0x21, 0x00, 0x8e, 0x48,
0x00, 0xf0, 0xd0, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00, 0x8b, 0x48,
0x00, 0xf0, 0xd2, 0xfa, 0x8b, 0x4b, 0x8c, 0x4a, 0x5c, 0x60, 0x00, 0x24,
0x1a, 0x60, 0x9c, 0x60, 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00,
0xdb, 0x00, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc3, 0xfa, 0xc0, 0x22,
0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfa,
0xff, 0x21, 0x1b, 0x20, 0x00, 0xf0, 0x2e, 0xfe, 0x1b, 0x20, 0x00, 0xf0,
0x1f, 0xfe, 0xe1, 0x21, 0x7e, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0,
0x6b, 0xfd, 0x08, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x73, 0xfd, 0x21, 0x00,
0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0,
0x79, 0xfd, 0x0c, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00,
0x28, 0x00, 0x00, 0xf0, 0x87, 0xfd, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00,
0x13, 0x43, 0x2b, 0x60, 0x00, 0xf0, 0x88, 0xfd, 0x6f, 0x48, 0x00, 0xf0,
0x22, 0xfc, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0, 0xe5, 0xfb, 0x0e, 0x20,
0x00, 0xf0, 0xf4, 0xfd, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x69, 0x48,
0x00, 0xf0, 0xfa, 0xfb, 0xf0, 0x21, 0x67, 0x48, 0x49, 0x00, 0x00, 0xf0,
0x15, 0xfc, 0x65, 0x48, 0x00, 0xf0, 0x91, 0xfc, 0x63, 0x48, 0x00, 0xf0,
0xfb, 0xfb, 0x62, 0x48, 0x00, 0xf0, 0xfd, 0xfb, 0x61, 0x49, 0x60, 0x48,
0x00, 0xf0, 0x0a, 0xfc, 0x02, 0x21, 0x5e, 0x48, 0x00, 0xf0, 0xd6, 0xfb,
0x5c, 0x48, 0x00, 0xf0, 0xf7, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0,
0xf8, 0xfb, 0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xbb, 0xfb, 0x0f, 0x20,
0x00, 0xf0, 0xca, 0xfd, 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0xcf, 0xfb, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xea, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfb,
0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfb, 0x80, 0x20, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfc, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0xb9, 0xfc, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0x5b, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0x81, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0x0e, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0,
0xc5, 0xfb, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xe4, 0xfb,
0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xcd, 0xfc, 0x80, 0x20,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x84, 0xfb, 0x80, 0x20, 0x02, 0x22,
0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfc, 0x80, 0x20, 0x01, 0x22,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x30, 0xfc, 0x80, 0x20, 0x22, 0x00,
0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x56, 0xfc, 0x80, 0x20, 0x02, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0xe3, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x9a, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0xb9, 0xfb, 0x80, 0x20, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xa2, 0xfc,
0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x59, 0xfb, 0x01, 0x21,
0x80, 0x20, 0x49, 0x42, 0xc0, 0x05, 0x00, 0xf0, 0x08, 0xfc, 0x80, 0x20,
0xc0, 0x05, 0x00, 0xf0, 0x73, 0xfb, 0x06, 0x20, 0x00, 0xf0, 0x4e, 0xfd,
0x04, 0x20, 0x12, 0x49, 0x00, 0xf0, 0x98, 0xf9, 0x02, 0x21, 0x04, 0x20,
0x00, 0xf0, 0x60, 0xf9, 0x04, 0x20, 0x00, 0xf0, 0x7d, 0xf9, 0x20, 0x00,
0x00, 0xf0, 0x26, 0xfd, 0xfa, 0x21, 0x12, 0x4b, 0x49, 0x01, 0x1c, 0x60,
0x11, 0x4b, 0x18, 0x68, 0x00, 0xf0, 0x26, 0xfe, 0x00, 0xf0, 0x14, 0xfd,
0x00, 0xf0, 0x24, 0xfd, 0x00, 0xf0, 0x2a, 0xfd, 0xc0, 0x46, 0xfd, 0xe7,
0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00,
0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x24, 0x00, 0x00, 0x20,
0x34, 0x00, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40,
0x00, 0x2c, 0x01, 0x40, 0xff, 0xff, 0x00, 0x00, 0x18, 0xe0, 0x00, 0xe0,
0x00, 0x00, 0x00, 0x20, 0x80, 0x20, 0xf8, 0xb5, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x12, 0xfb, 0x00, 0x28, 0x37, 0xd0, 0x80, 0x20, 0x02, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0x11, 0xfb, 0x2a, 0x4b, 0x2a, 0x4a, 0x1b, 0x68,
0x11, 0x68, 0x2a, 0x4f, 0x13, 0x60, 0x2a, 0x4e, 0x2a, 0x4a, 0x30, 0x68,
0x15, 0x68, 0x3a, 0x68, 0x29, 0x4c, 0x90, 0x42, 0x09, 0xd0, 0x20, 0x68,
0x01, 0x28, 0x06, 0xd9, 0x5b, 0x1a, 0x27, 0x49, 0x09, 0x78, 0x00, 0x29,
0x39, 0xd0, 0x26, 0x49, 0x0b, 0x60, 0x23, 0x68, 0x25, 0x49, 0x01, 0x33,
0x23, 0x60, 0xaa, 0x1a, 0x8a, 0x42, 0x03, 0xd8, 0xfa, 0x22, 0x92, 0x00,
0x93, 0x42, 0x0e, 0xd9, 0x01, 0x23, 0x1e, 0x4a, 0x20, 0x48, 0x11, 0x78,
0x4b, 0x40, 0x80, 0x21, 0x13, 0x70, 0x49, 0x00, 0x00, 0x2b, 0x24, 0xd0,
0x00, 0xf0, 0x6a, 0xf9, 0x00, 0x23, 0x3d, 0x60, 0x23, 0x60, 0x35, 0x60,
0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfa, 0x00, 0x28,
0x14, 0xd0, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfa,
0x14, 0x4b, 0x15, 0x4a, 0x19, 0x68, 0x13, 0x68, 0x14, 0x48, 0x11, 0x60,
0x14, 0x4a, 0xcb, 0x1a, 0x03, 0x60, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60,
0x08, 0x4b, 0x1a, 0x68, 0x11, 0x4b, 0x1a, 0x60, 0xf8, 0xbd, 0x11, 0x49,
0xc4, 0xe7, 0x00, 0xf0, 0x43, 0xf9, 0xd9, 0xe7, 0x34, 0x00, 0x00, 0x40,
0x50, 0x02, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20,
0x4c, 0x02, 0x00, 0x20, 0x14, 0x00, 0x00, 0x20, 0x19, 0x00, 0x00, 0x20,
0x1c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48,
0x38, 0x00, 0x00, 0x40, 0x54, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20,
0x44, 0x01, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20,
0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x4c, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, 0x1c, 0x48, 0x00, 0xf0,
0x89, 0xfa, 0x00, 0x28, 0x23, 0xd0, 0x02, 0x21, 0x19, 0x48, 0x00, 0xf0,
0x89, 0xfa, 0xfa, 0x23, 0x18, 0x4a, 0x9b, 0x00, 0x12, 0x88, 0x9a, 0x42,
0x19, 0xd0, 0x17, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e,
0x93, 0x41, 0x15, 0x4a, 0x49, 0x00, 0x12, 0x78, 0xc0, 0x05, 0x9a, 0x42,
0x0e, 0xd0, 0x00, 0xf0, 0xfd, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01,
0xc0, 0x05, 0x00, 0xf0, 0xf7, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01,
0xc0, 0x05, 0x00, 0xf0, 0xf1, 0xf8, 0x10, 0xbd, 0x00, 0xf0, 0xec, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe6, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe0, 0xf8,
0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, 0x08, 0x00, 0x00, 0x20,
0x24, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x70, 0xb5, 0x04, 0x20,
0x00, 0xf0, 0x8c, 0xf8, 0x28, 0x48, 0x00, 0xf0, 0xf2, 0xfa, 0x28, 0x4c,
0x28, 0x4b, 0x22, 0x78, 0x00, 0x2a, 0x38, 0xd0, 0xfa, 0x22, 0x1b, 0x88,
0x92, 0x00, 0xd2, 0x1a, 0x92, 0xb2, 0xfa, 0x21, 0x24, 0x4d, 0x50, 0x43,
0x2a, 0x80, 0x89, 0x00, 0x00, 0xf0, 0x1e, 0xfd, 0x22, 0x4e, 0x02, 0x00,
0x00, 0x21, 0x30, 0x60, 0x1c, 0x48, 0x00, 0xf0, 0xc1, 0xfa, 0x06, 0x21,
0x32, 0x68, 0x1a, 0x48, 0x00, 0xf0, 0xbc, 0xfa, 0x00, 0x21, 0x18, 0x48,
0x00, 0xf0, 0xd3, 0xfa, 0x2b, 0x88, 0x00, 0x2b, 0x18, 0xd0, 0x1a, 0x4b,
0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e, 0x93, 0x41, 0x22, 0x78,
0x49, 0x00, 0xc0, 0x05, 0x9a, 0x42, 0x10, 0xd0, 0x00, 0xf0, 0x9e, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x98, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x92, 0xf8,
0x70, 0xbd, 0x1a, 0x88, 0xc9, 0xe7, 0x00, 0xf0, 0x8f, 0xf8, 0x80, 0x21,
0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x89, 0xf8, 0x80, 0x21,
0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x83, 0xf8, 0xed, 0xe7,
0x00, 0x2c, 0x01, 0x40, 0x30, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20,
0x08, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20,
0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1,
0x0a, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68,
0x83, 0x43, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43,
0x13, 0x60, 0x05, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7,
0x01, 0x4a, 0x13, 0x68, 0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40,
0x0c, 0x04, 0x01, 0x40, 0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60,
0x03, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x04, 0x01, 0x40, 0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60,
0x70, 0x47, 0xc0, 0x46, 0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5,
0xce, 0x18, 0x73, 0x42, 0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00,
0x01, 0x24, 0x23, 0x00, 0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0,
0x13, 0x4d, 0x03, 0x23, 0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d,
0x23, 0x00, 0xa9, 0x42, 0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25,
0x94, 0x08, 0x24, 0x18, 0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40,
0xab, 0x40, 0xa4, 0x00, 0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60,
0x01, 0x32, 0x10, 0x2a, 0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23,
0xa1, 0x42, 0xe9, 0xd0, 0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1,
0x05, 0x33, 0xe3, 0xe7, 0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48,
0x00, 0x04, 0x00, 0x48, 0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48,
0x00, 0x14, 0x00, 0x48, 0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61,
0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0,
0x01, 0x91, 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68,
0xc3, 0x68, 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0,
0x3d, 0x00, 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43,
0x02, 0x9d, 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31,
0x10, 0x29, 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd,
0xf7, 0xb5, 0x01, 0x92, 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68, 0x19, 0x43,
0x00, 0x24, 0x01, 0x26, 0x03, 0x27, 0x41, 0x60, 0x81, 0x68, 0x1d, 0x00,
0x25, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00, 0xaa, 0x40,
0x91, 0x43, 0x01, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34, 0x10, 0x2c,
0xf1, 0xd1, 0x81, 0x60, 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43, 0xe7, 0xe7,
0xf7, 0xb5, 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91,
0x41, 0x6a, 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0,
0x3a, 0x00, 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40,
0x14, 0x43, 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27,
0x01, 0x9a, 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00,
0x20, 0x3d, 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43,
0x01, 0x33, 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd,
0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0,
0xdf, 0xfb, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a,
0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a,
0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a,
0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a,
0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40,
0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40,
0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28,
0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0,
0xaf, 0xfb, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a,
0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd,
0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7,
0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7,
0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46,
0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40,
0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8,
0x00, 0xf0, 0x84, 0xfb, 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21,
0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22,
0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43,
0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43,
0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68,
0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47,
0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a,
0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff,
0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff,
0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff,
0x00, 0xf0, 0x6a, 0xfa, 0x01, 0x20, 0x00, 0xf0, 0x6f, 0xfa, 0xa0, 0x20,
0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff,
0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff,
0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60,
0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02,
0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09,
0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68,
0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40,
0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a,
0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43,
0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43,
0xc3, 0x60, 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x41, 0x1e, 0x88, 0x41,
0xc0, 0xb2, 0x70, 0x47, 0xc9, 0x43, 0x01, 0x61, 0x70, 0x47, 0x00, 0x00,
0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43, 0x2c, 0x40, 0x0a, 0x43,
0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46, 0x8f, 0xfc, 0xff, 0xff,
0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x08, 0x22,
0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x23, 0x02, 0x68,
0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22, 0x03, 0x68, 0x93, 0x43,
0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47, 0xc1, 0x62, 0x70, 0x47,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a,
0x00, 0xf0, 0xac, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00,
0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7,
0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21,
0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a,
0x00, 0xf0, 0x88, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00,
0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7,
0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7,
0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00,
0xed, 0xe7, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x68, 0xfa, 0x04, 0x0f, 0x08, 0x11,
0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd,
0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49,
0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x06, 0xd8, 0x00, 0xf0, 0x45, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05,
0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63,
0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02,
0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62,
0x70, 0x47, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29,
0x0b, 0xd8, 0x00, 0xf0, 0x27, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20,
0x99, 0x69, 0x12, 0x01, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43,
0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40,
0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01,
0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7,
0xd9, 0x69, 0x03, 0x48, 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5,
0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, 0xfb, 0xf9, 0x02, 0x0b,
0x12, 0x1b, 0x0c, 0x20, 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61,
0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48,
0x92, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20,
0xd9, 0x69, 0x92, 0x00, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43,
0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40,
0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff,
0x03, 0x00, 0x08, 0x00, 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00,
0x0a, 0x40, 0xa5, 0x43, 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c,
0x00, 0xd8, 0x4a, 0x40, 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc4, 0xf9,
0x02, 0x0a, 0x11, 0x19, 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61,
0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48,
0x12, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20,
0xd9, 0x69, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61,
0xef, 0xe7, 0xd9, 0x69, 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61,
0xd9, 0x69, 0xf5, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00,
0x8b, 0x40, 0x02, 0x6a, 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22,
0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60,
0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00,
0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x94, 0xf9, 0xe0, 0x60, 0x10, 0xbd,
0x04, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a,
0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01,
0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a,
0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff,
0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47,
0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43,
0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43,
0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68,
0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62,
0x70, 0x47, 0x40, 0x6a, 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7,
0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49,
0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3,
0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43,
0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b,
0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0xb8, 0xf9, 0x12, 0x4c, 0x13, 0x4b,
0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7,
0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc,
0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46,
0x00, 0x00, 0x00, 0x20, 0xb4, 0x13, 0x00, 0x08, 0x08, 0x00, 0x00, 0x20,
0x5c, 0x02, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, 0xb4, 0x13, 0x00, 0x08,
0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08,
0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02,
0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0,
0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43,
0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a,
0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0,
0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47,
0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18,
0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47,
0x00, 0xe1, 0x00, 0xe0, 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23,
0x18, 0x40, 0x04, 0x38, 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00,
0x18, 0x24, 0xc0, 0x00, 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40,
0x9b, 0x18, 0x1a, 0x68, 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd,
0x83, 0x08, 0x02, 0x4a, 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0,
0x00, 0xe4, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43,
0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a,
0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a,
0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00,
0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09,
0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00,
0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60,
0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45,
0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01,
0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59,
0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24,
0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18,
0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0,
0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1,
0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a,
0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00,
0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0,
0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22,
0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70,
0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40,
0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9,
0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00,
0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60,
0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22,
0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42,
0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00,
0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24,
0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0,
0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1,
0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7,
0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00,
0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42,
0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42,
0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02,
0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02,
0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a,
0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46,
0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8,
0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47,
0x70, 0x47, 0xc0, 0x46, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00,
};

View File

@ -0,0 +1,444 @@
/*
* This file has been generated by the shelly-dimmer-stm32 project.
* https://github.com/jamesturton/shelly-dimmer-stm32
* Copyright (c) 2020 James Turton.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 51;
static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 1;
const uint8_t stm_firmware[] PROGMEM = {
0x00, 0x10, 0x00, 0x20, 0xf5, 0x0f, 0x00, 0x08, 0xf1, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08,
0x99, 0x07, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0x31, 0x08, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xa9, 0x07, 0x00, 0x08, 0x95, 0x06, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08,
0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a,
0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a,
0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40,
0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0,
0x00, 0xf0, 0x76, 0xfc, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60,
0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x6a, 0xfc,
0xf4, 0xe7, 0xc0, 0x46, 0x4c, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20,
0x10, 0x27, 0x00, 0x00, 0x19, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20,
0x00, 0x04, 0x00, 0x48, 0x20, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20,
0x20, 0x23, 0xf0, 0xb5, 0x87, 0x4a, 0xc7, 0xb0, 0x11, 0x68, 0x00, 0xaf,
0x7a, 0x61, 0x19, 0x42, 0x33, 0xd0, 0x85, 0x4a, 0x12, 0x68, 0x1a, 0x42,
0x2f, 0xd0, 0x78, 0x69, 0x00, 0xf0, 0x4d, 0xff, 0x82, 0x4c, 0x83, 0x49,
0x23, 0x78, 0x05, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1,
0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9,
0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda,
0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x79, 0x49, 0xed, 0xb2, 0xc8, 0x5c,
0x78, 0x4e, 0x00, 0x02, 0x28, 0x43, 0x00, 0x25, 0xb4, 0x46, 0x29, 0x00,
0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xad, 0x19, 0xc9, 0xb2,
0xad, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa8, 0x42, 0xde, 0xd0, 0x00, 0x23,
0x23, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0,
0x68, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x6b, 0x4c, 0xa3, 0x68,
0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0xb8, 0xe0, 0x7b, 0x69, 0x1b, 0x68,
0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd,
0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78,
0x62, 0x4a, 0x63, 0x4d, 0x13, 0x70, 0x8b, 0x78, 0x2b, 0x70, 0x01, 0x2b,
0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e,
0x93, 0x41, 0x5e, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79,
0x12, 0x02, 0x13, 0x43, 0x5b, 0x4a, 0x13, 0x80, 0x1c, 0x23, 0x00, 0x21,
0xf8, 0x18, 0xfc, 0x22, 0x21, 0x70, 0xb9, 0x61, 0x00, 0xf0, 0xe2, 0xff,
0xff, 0xf7, 0x50, 0xff, 0x56, 0x4b, 0x57, 0x4c, 0x1b, 0x68, 0x57, 0x4e,
0x3b, 0x61, 0x23, 0x68, 0x00, 0x2b, 0x02, 0xd0, 0xff, 0xf7, 0x46, 0xff,
0x00, 0xe0, 0x33, 0x60, 0x53, 0x4b, 0x54, 0x49, 0x1b, 0x68, 0x09, 0x68,
0x32, 0x68, 0x5b, 0x1a, 0x52, 0x49, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23,
0x23, 0x60, 0x2b, 0x78, 0x11, 0x2b, 0x5b, 0xd0, 0x0a, 0xd8, 0x01, 0x2b,
0x0a, 0xd0, 0x10, 0x2b, 0x5a, 0xd0, 0x7b, 0x69, 0x1a, 0x68, 0x80, 0x23,
0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x9c, 0xe7, 0x20, 0x2b, 0xf6, 0xd1,
0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, 0xba, 0x60, 0xe2, 0x1d,
0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, 0x8a, 0x1a, 0x95, 0x46,
0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x37, 0x4a, 0x01, 0xa8, 0x12, 0x78,
0xb3, 0x70, 0x18, 0x23, 0x72, 0x70, 0xf9, 0x18, 0x22, 0x00, 0xf4, 0x70,
0x00, 0xf0, 0x4a, 0xff, 0x00, 0x22, 0x13, 0x00, 0x21, 0x1d, 0xe0, 0x1c,
0xf5, 0x18, 0x6d, 0x78, 0x01, 0x33, 0x52, 0x19, 0xdb, 0xb2, 0x92, 0xb2,
0x98, 0x42, 0xf7, 0xdc, 0x13, 0x0a, 0x73, 0x54, 0x63, 0x1d, 0xf2, 0x54,
0x04, 0x23, 0x06, 0x34, 0x33, 0x55, 0x00, 0x24, 0x26, 0x4d, 0x33, 0x5d,
0x69, 0x68, 0x3b, 0x60, 0xeb, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00,
0xfb, 0x60, 0x01, 0xf0, 0x63, 0xf8, 0xab, 0x68, 0x99, 0x42, 0x0a, 0xd0,
0xfb, 0x68, 0x3a, 0x69, 0xeb, 0x60, 0x39, 0x68, 0x2b, 0x68, 0x99, 0x54,
0xe8, 0x68, 0x69, 0x68, 0x01, 0xf0, 0x56, 0xf8, 0xe9, 0x60, 0x7b, 0x68,
0x01, 0x34, 0xa3, 0x42, 0xe3, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0xa8, 0xe7,
0x21, 0x4a, 0x02, 0x24, 0x3a, 0x83, 0xaf, 0xe7, 0x21, 0x68, 0x00, 0x20,
0xf9, 0x61, 0x39, 0x69, 0x38, 0x83, 0x39, 0x62, 0x28, 0x21, 0x15, 0x48,
0x7a, 0x62, 0x13, 0x4a, 0x00, 0x88, 0x12, 0x78, 0x79, 0x18, 0x11, 0x24,
0x78, 0x83, 0x0a, 0x70, 0x9e, 0xe7, 0x22, 0x68, 0x58, 0x1c, 0xa0, 0x60,
0x61, 0x68, 0xd5, 0x5c, 0x01, 0xf0, 0x32, 0xf8, 0x02, 0x48, 0xa1, 0x60,
0xa9, 0xb2, 0x00, 0xf0, 0x48, 0xfe, 0x3e, 0xe7, 0x00, 0x38, 0x01, 0x40,
0x1c, 0x38, 0x01, 0x40, 0x12, 0x00, 0x00, 0x20, 0x4c, 0x01, 0x00, 0x20,
0x4b, 0x01, 0x00, 0x20, 0x4d, 0x01, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20,
0x25, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20,
0x10, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20,
0x1c, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20,
0x10, 0x27, 0x00, 0x00, 0x01, 0x33, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0,
0x3f, 0xfc, 0xb0, 0x48, 0x00, 0xf0, 0x6e, 0xfc, 0xaf, 0x48, 0x00, 0xf0,
0x6b, 0xfc, 0xaf, 0x48, 0x00, 0xf0, 0x68, 0xfc, 0xae, 0x48, 0x00, 0xf0,
0x65, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x61, 0xfc, 0xc0, 0x20,
0x80, 0x00, 0x00, 0xf0, 0x5d, 0xfc, 0x00, 0x22, 0x90, 0x20, 0x11, 0x00,
0x08, 0x23, 0xc0, 0x05, 0x00, 0xf0, 0x0c, 0xfb, 0x02, 0x21, 0xa6, 0x48,
0x00, 0xf0, 0x05, 0xfb, 0xa5, 0x4b, 0x00, 0x22, 0x18, 0x70, 0xc8, 0x23,
0x90, 0x20, 0x01, 0x21, 0x5b, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xfe, 0xfa,
0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0xf7, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xf0, 0xfa, 0x80, 0x24, 0x90, 0x20, 0x64, 0x00, 0x03, 0x22,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x26, 0xfb, 0x23, 0x00, 0x00, 0x22,
0x01, 0x21, 0x93, 0x48, 0x00, 0xf0, 0xe2, 0xfa, 0x23, 0x00, 0x00, 0x22,
0x01, 0x21, 0x90, 0x48, 0x00, 0xf0, 0xfc, 0xfa, 0x21, 0x00, 0x8e, 0x48,
0x00, 0xf0, 0xd0, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00, 0x8b, 0x48,
0x00, 0xf0, 0xd2, 0xfa, 0x8b, 0x4b, 0x8c, 0x4a, 0x5c, 0x60, 0x00, 0x24,
0x1a, 0x60, 0x9c, 0x60, 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00,
0xdb, 0x00, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc3, 0xfa, 0xc0, 0x22,
0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfa,
0xff, 0x21, 0x1b, 0x20, 0x00, 0xf0, 0x2e, 0xfe, 0x1b, 0x20, 0x00, 0xf0,
0x1f, 0xfe, 0xe1, 0x21, 0x7e, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0,
0x6b, 0xfd, 0x08, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x73, 0xfd, 0x21, 0x00,
0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0,
0x79, 0xfd, 0x0c, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00,
0x28, 0x00, 0x00, 0xf0, 0x87, 0xfd, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00,
0x13, 0x43, 0x2b, 0x60, 0x00, 0xf0, 0x88, 0xfd, 0x6f, 0x48, 0x00, 0xf0,
0x22, 0xfc, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0, 0xe5, 0xfb, 0x0e, 0x20,
0x00, 0xf0, 0xf4, 0xfd, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x69, 0x48,
0x00, 0xf0, 0xfa, 0xfb, 0xf0, 0x21, 0x67, 0x48, 0x49, 0x00, 0x00, 0xf0,
0x15, 0xfc, 0x65, 0x48, 0x00, 0xf0, 0x91, 0xfc, 0x63, 0x48, 0x00, 0xf0,
0xfb, 0xfb, 0x62, 0x48, 0x00, 0xf0, 0xfd, 0xfb, 0x61, 0x49, 0x60, 0x48,
0x00, 0xf0, 0x0a, 0xfc, 0x02, 0x21, 0x5e, 0x48, 0x00, 0xf0, 0xd6, 0xfb,
0x5c, 0x48, 0x00, 0xf0, 0xf7, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0,
0xf8, 0xfb, 0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xbb, 0xfb, 0x0f, 0x20,
0x00, 0xf0, 0xca, 0xfd, 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0xcf, 0xfb, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0xea, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfb,
0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfb, 0x80, 0x20, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfc, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0xb9, 0xfc, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0x5b, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00,
0xc0, 0x05, 0x00, 0xf0, 0x81, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05,
0x00, 0xf0, 0x0e, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0,
0xc5, 0xfb, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xe4, 0xfb,
0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xcd, 0xfc, 0x80, 0x20,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x84, 0xfb, 0x80, 0x20, 0x02, 0x22,
0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfc, 0x80, 0x20, 0x01, 0x22,
0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x30, 0xfc, 0x80, 0x20, 0x22, 0x00,
0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x56, 0xfc, 0x80, 0x20, 0x02, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0xe3, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x9a, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0,
0xb9, 0xfb, 0x80, 0x20, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xa2, 0xfc,
0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x59, 0xfb, 0x01, 0x21,
0x80, 0x20, 0x49, 0x42, 0xc0, 0x05, 0x00, 0xf0, 0x08, 0xfc, 0x80, 0x20,
0xc0, 0x05, 0x00, 0xf0, 0x73, 0xfb, 0x06, 0x20, 0x00, 0xf0, 0x4e, 0xfd,
0x04, 0x20, 0x12, 0x49, 0x00, 0xf0, 0x98, 0xf9, 0x02, 0x21, 0x04, 0x20,
0x00, 0xf0, 0x60, 0xf9, 0x04, 0x20, 0x00, 0xf0, 0x7d, 0xf9, 0x20, 0x00,
0x00, 0xf0, 0x26, 0xfd, 0xfa, 0x21, 0x12, 0x4b, 0x49, 0x01, 0x1c, 0x60,
0x11, 0x4b, 0x18, 0x68, 0x00, 0xf0, 0x26, 0xfe, 0x00, 0xf0, 0x14, 0xfd,
0x00, 0xf0, 0x24, 0xfd, 0x00, 0xf0, 0x2a, 0xfd, 0xc0, 0x46, 0xfd, 0xe7,
0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00,
0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x24, 0x00, 0x00, 0x20,
0x34, 0x00, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40,
0x00, 0x2c, 0x01, 0x40, 0xff, 0xff, 0x00, 0x00, 0x18, 0xe0, 0x00, 0xe0,
0x00, 0x00, 0x00, 0x20, 0x80, 0x20, 0xf8, 0xb5, 0x02, 0x21, 0xc0, 0x05,
0x00, 0xf0, 0x12, 0xfb, 0x00, 0x28, 0x37, 0xd0, 0x80, 0x20, 0x02, 0x21,
0xc0, 0x05, 0x00, 0xf0, 0x11, 0xfb, 0x2a, 0x4b, 0x2a, 0x4a, 0x1b, 0x68,
0x11, 0x68, 0x2a, 0x4f, 0x13, 0x60, 0x2a, 0x4e, 0x2a, 0x4a, 0x30, 0x68,
0x15, 0x68, 0x3a, 0x68, 0x29, 0x4c, 0x90, 0x42, 0x09, 0xd0, 0x20, 0x68,
0x01, 0x28, 0x06, 0xd9, 0x5b, 0x1a, 0x27, 0x49, 0x09, 0x78, 0x00, 0x29,
0x39, 0xd0, 0x26, 0x49, 0x0b, 0x60, 0x23, 0x68, 0x25, 0x49, 0x01, 0x33,
0x23, 0x60, 0xaa, 0x1a, 0x8a, 0x42, 0x03, 0xd8, 0xfa, 0x22, 0x92, 0x00,
0x93, 0x42, 0x0e, 0xd9, 0x01, 0x23, 0x1e, 0x4a, 0x20, 0x48, 0x11, 0x78,
0x4b, 0x40, 0x80, 0x21, 0x13, 0x70, 0x49, 0x00, 0x00, 0x2b, 0x24, 0xd0,
0x00, 0xf0, 0x6a, 0xf9, 0x00, 0x23, 0x3d, 0x60, 0x23, 0x60, 0x35, 0x60,
0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfa, 0x00, 0x28,
0x14, 0xd0, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfa,
0x14, 0x4b, 0x15, 0x4a, 0x19, 0x68, 0x13, 0x68, 0x14, 0x48, 0x11, 0x60,
0x14, 0x4a, 0xcb, 0x1a, 0x03, 0x60, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60,
0x08, 0x4b, 0x1a, 0x68, 0x11, 0x4b, 0x1a, 0x60, 0xf8, 0xbd, 0x11, 0x49,
0xc4, 0xe7, 0x00, 0xf0, 0x43, 0xf9, 0xd9, 0xe7, 0x34, 0x00, 0x00, 0x40,
0x50, 0x02, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20,
0x4c, 0x02, 0x00, 0x20, 0x14, 0x00, 0x00, 0x20, 0x19, 0x00, 0x00, 0x20,
0x1c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48,
0x38, 0x00, 0x00, 0x40, 0x54, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20,
0x44, 0x01, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20,
0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x4c, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, 0x1c, 0x48, 0x00, 0xf0,
0x89, 0xfa, 0x00, 0x28, 0x23, 0xd0, 0x02, 0x21, 0x19, 0x48, 0x00, 0xf0,
0x89, 0xfa, 0xfa, 0x23, 0x18, 0x4a, 0x9b, 0x00, 0x12, 0x88, 0x9a, 0x42,
0x19, 0xd0, 0x17, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e,
0x93, 0x41, 0x15, 0x4a, 0x49, 0x00, 0x12, 0x78, 0xc0, 0x05, 0x9a, 0x42,
0x0e, 0xd0, 0x00, 0xf0, 0xfd, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01,
0xc0, 0x05, 0x00, 0xf0, 0xf7, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01,
0xc0, 0x05, 0x00, 0xf0, 0xf1, 0xf8, 0x10, 0xbd, 0x00, 0xf0, 0xec, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe6, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe0, 0xf8,
0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, 0x08, 0x00, 0x00, 0x20,
0x24, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x70, 0xb5, 0x04, 0x20,
0x00, 0xf0, 0x8c, 0xf8, 0x28, 0x48, 0x00, 0xf0, 0xf2, 0xfa, 0x28, 0x4c,
0x28, 0x4b, 0x22, 0x78, 0x00, 0x2a, 0x38, 0xd0, 0xfa, 0x22, 0x1b, 0x88,
0x92, 0x00, 0xd2, 0x1a, 0x92, 0xb2, 0xfa, 0x21, 0x24, 0x4d, 0x50, 0x43,
0x2a, 0x80, 0x89, 0x00, 0x00, 0xf0, 0x1e, 0xfd, 0x22, 0x4e, 0x02, 0x00,
0x00, 0x21, 0x30, 0x60, 0x1c, 0x48, 0x00, 0xf0, 0xc1, 0xfa, 0x06, 0x21,
0x32, 0x68, 0x1a, 0x48, 0x00, 0xf0, 0xbc, 0xfa, 0x00, 0x21, 0x18, 0x48,
0x00, 0xf0, 0xd3, 0xfa, 0x2b, 0x88, 0x00, 0x2b, 0x18, 0xd0, 0x1a, 0x4b,
0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e, 0x93, 0x41, 0x22, 0x78,
0x49, 0x00, 0xc0, 0x05, 0x9a, 0x42, 0x10, 0xd0, 0x00, 0xf0, 0x9e, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x98, 0xf8,
0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x92, 0xf8,
0x70, 0xbd, 0x1a, 0x88, 0xc9, 0xe7, 0x00, 0xf0, 0x8f, 0xf8, 0x80, 0x21,
0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x89, 0xf8, 0x80, 0x21,
0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x83, 0xf8, 0xed, 0xe7,
0x00, 0x2c, 0x01, 0x40, 0x30, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20,
0x08, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20,
0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1,
0x0a, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68,
0x83, 0x43, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43,
0x13, 0x60, 0x05, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7,
0x01, 0x4a, 0x13, 0x68, 0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40,
0x0c, 0x04, 0x01, 0x40, 0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60,
0x03, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x04, 0x01, 0x40, 0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60,
0x70, 0x47, 0xc0, 0x46, 0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5,
0xce, 0x18, 0x73, 0x42, 0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00,
0x01, 0x24, 0x23, 0x00, 0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0,
0x13, 0x4d, 0x03, 0x23, 0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d,
0x23, 0x00, 0xa9, 0x42, 0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25,
0x94, 0x08, 0x24, 0x18, 0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40,
0xab, 0x40, 0xa4, 0x00, 0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60,
0x01, 0x32, 0x10, 0x2a, 0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23,
0xa1, 0x42, 0xe9, 0xd0, 0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1,
0x05, 0x33, 0xe3, 0xe7, 0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48,
0x00, 0x04, 0x00, 0x48, 0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48,
0x00, 0x14, 0x00, 0x48, 0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61,
0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0,
0x01, 0x91, 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68,
0xc3, 0x68, 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0,
0x3d, 0x00, 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43,
0x02, 0x9d, 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31,
0x10, 0x29, 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd,
0xf7, 0xb5, 0x01, 0x92, 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68, 0x19, 0x43,
0x00, 0x24, 0x01, 0x26, 0x03, 0x27, 0x41, 0x60, 0x81, 0x68, 0x1d, 0x00,
0x25, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00, 0xaa, 0x40,
0x91, 0x43, 0x01, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34, 0x10, 0x2c,
0xf1, 0xd1, 0x81, 0x60, 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43, 0xe7, 0xe7,
0xf7, 0xb5, 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91,
0x41, 0x6a, 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0,
0x3a, 0x00, 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40,
0x14, 0x43, 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27,
0x01, 0x9a, 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00,
0x20, 0x3d, 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43,
0x01, 0x33, 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd,
0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0,
0xdf, 0xfb, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a,
0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a,
0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a,
0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a,
0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40,
0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40,
0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28,
0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0,
0xaf, 0xfb, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a,
0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd,
0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7,
0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7,
0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46,
0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40,
0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8,
0x00, 0xf0, 0x84, 0xfb, 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21,
0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22,
0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43,
0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43,
0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68,
0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47,
0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49,
0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a,
0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff,
0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff,
0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff,
0x00, 0xf0, 0x6a, 0xfa, 0x01, 0x20, 0x00, 0xf0, 0x6f, 0xfa, 0xa0, 0x20,
0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff,
0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff,
0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60,
0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02,
0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09,
0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68,
0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40,
0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a,
0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43,
0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43,
0xc3, 0x60, 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x41, 0x1e, 0x88, 0x41,
0xc0, 0xb2, 0x70, 0x47, 0xc9, 0x43, 0x01, 0x61, 0x70, 0x47, 0x00, 0x00,
0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43, 0x2c, 0x40, 0x0a, 0x43,
0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46, 0x8f, 0xfc, 0xff, 0xff,
0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x08, 0x22,
0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x23, 0x02, 0x68,
0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22, 0x03, 0x68, 0x93, 0x43,
0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47, 0xc1, 0x62, 0x70, 0x47,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a,
0x00, 0xf0, 0xac, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00,
0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7,
0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21,
0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff,
0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a,
0x00, 0xf0, 0x88, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00,
0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7,
0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7,
0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00,
0xed, 0xe7, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x68, 0xfa, 0x04, 0x0f, 0x08, 0x11,
0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd,
0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49,
0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29,
0x06, 0xd8, 0x00, 0xf0, 0x45, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05,
0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63,
0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02,
0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62,
0x70, 0x47, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29,
0x0b, 0xd8, 0x00, 0xf0, 0x27, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20,
0x99, 0x69, 0x12, 0x01, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43,
0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40,
0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01,
0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7,
0xd9, 0x69, 0x03, 0x48, 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69,
0xf5, 0xe7, 0xc0, 0x46, 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5,
0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, 0xfb, 0xf9, 0x02, 0x0b,
0x12, 0x1b, 0x0c, 0x20, 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61,
0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48,
0x92, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20,
0xd9, 0x69, 0x92, 0x00, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43,
0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40,
0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff,
0x03, 0x00, 0x08, 0x00, 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00,
0x0a, 0x40, 0xa5, 0x43, 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c,
0x00, 0xd8, 0x4a, 0x40, 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc4, 0xf9,
0x02, 0x0a, 0x11, 0x19, 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61,
0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48,
0x12, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20,
0xd9, 0x69, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61,
0xef, 0xe7, 0xd9, 0x69, 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61,
0xd9, 0x69, 0xf5, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00,
0x8b, 0x40, 0x02, 0x6a, 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22,
0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60,
0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00,
0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x94, 0xf9, 0xe0, 0x60, 0x10, 0xbd,
0x04, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a,
0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01,
0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a,
0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff,
0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47,
0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43,
0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43,
0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68,
0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62,
0x70, 0x47, 0x40, 0x6a, 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7,
0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49,
0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3,
0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43,
0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b,
0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0xb8, 0xf9, 0x12, 0x4c, 0x13, 0x4b,
0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7,
0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc,
0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46,
0x00, 0x00, 0x00, 0x20, 0xb4, 0x13, 0x00, 0x08, 0x08, 0x00, 0x00, 0x20,
0x5c, 0x02, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, 0xb4, 0x13, 0x00, 0x08,
0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08,
0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02,
0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0,
0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43,
0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a,
0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0,
0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47,
0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18,
0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47,
0x00, 0xe1, 0x00, 0xe0, 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23,
0x18, 0x40, 0x04, 0x38, 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00,
0x18, 0x24, 0xc0, 0x00, 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40,
0x9b, 0x18, 0x1a, 0x68, 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd,
0x83, 0x08, 0x02, 0x4a, 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0,
0x00, 0xe4, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43,
0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a,
0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a,
0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00,
0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09,
0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00,
0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60,
0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45,
0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01,
0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59,
0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24,
0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18,
0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0,
0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1,
0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a,
0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00,
0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0,
0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22,
0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70,
0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40,
0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9,
0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00,
0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60,
0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22,
0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42,
0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00,
0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24,
0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0,
0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1,
0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7,
0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00,
0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46,
0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42,
0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42,
0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02,
0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02,
0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a,
0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41,
0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41,
0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a,
0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a,
0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46,
0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8,
0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47,
0x70, 0x47, 0xc0, 0x46, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00,
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
#ifndef STM32_FLASH_DEBUG_H
#define STM32_FLASH_DEBUG_H
#define STM32_FLASH_DEBUG 0
#if STM32_FLASH_DEBUG
#define DEBUG_MSG(...) AddLog_P2(LOG_LEVEL_DEBUG, __VA_ARGS__)
#else
#define DEBUG_MSG(...)
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,117 @@
/*
stm32flash - Open Source ST STM32 flash program for Arduino
Copyright (C) 2010 Geoffrey McRae <geoff@spacevs.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef STM32_FLASH_H
#define STM32_FLASH_H
#include <stdint.h>
#include <Stream.h>
/* flags */
#define STREAM_OPT_BYTE (1 << 0) /* byte (not frame) oriented */
#define STREAM_OPT_GVR_ETX (1 << 1) /* cmd GVR returns protection status */
#define STREAM_OPT_CMD_INIT (1 << 2) /* use INIT cmd to autodetect speed */
#define STREAM_OPT_RETRY (1 << 3) /* allowed read() retry after timeout */
#define STREAM_OPT_I2C (1 << 4) /* i2c */
#define STREAM_OPT_STRETCH_W (1 << 5) /* warning for no-stretching commands */
#define STREAM_SERIAL (STREAM_OPT_BYTE | STREAM_OPT_GVR_ETX | STREAM_OPT_CMD_INIT | STREAM_OPT_RETRY)
#define STREAM_I2C (STREAM_OPT_I2C | STREAM_OPT_STRETCH_W)
#define STM32_MAX_RX_FRAME 256 /* cmd read memory */
#define STM32_MAX_TX_FRAME (1 + 256 + 1) /* cmd write memory */
#define STM32_MAX_PAGES 0x0000ffff
#define STM32_MASS_ERASE 0x00100000 /* > 2 x max_pages */
typedef enum {
STM32_ERR_OK = 0,
STM32_ERR_UNKNOWN, /* Generic error */
STM32_ERR_NACK,
STM32_ERR_NO_CMD, /* Command not available in bootloader */
} stm32_err_t;
typedef enum {
F_NO_ME = 1 << 0, /* Mass-Erase not supported */
F_OBLL = 1 << 1, /* OBL_LAUNCH required */
} flags_t;
typedef struct stm32 stm32_t;
typedef struct stm32_cmd stm32_cmd_t;
typedef struct stm32_dev stm32_dev_t;
/*
* Specify the length of reply for command GET
* This is helpful for frame-oriented protocols, e.g. i2c, to avoid time
* consuming try-fail-timeout-retry operation.
* On byte-oriented protocols, i.e. UART, this information would be skipped
* after read the first byte, so not needed.
*/
struct varlen_cmd {
uint8_t version;
uint8_t length;
};
struct stm32 {
Stream *stream;
uint8_t flags;
struct varlen_cmd *cmd_get_reply;
uint8_t bl_version;
uint8_t version;
uint8_t option1, option2;
uint16_t pid;
stm32_cmd_t *cmd;
const stm32_dev_t *dev;
};
struct stm32_dev {
uint16_t id;
const char *name;
uint32_t ram_start, ram_end;
uint32_t fl_start, fl_end;
uint16_t fl_pps; // pages per sector
uint32_t *fl_ps; // page size
uint32_t opt_start, opt_end;
uint32_t mem_start, mem_end;
uint32_t flags;
};
stm32_t *stm32_init(Stream *stream, const uint8_t flags, const char init);
void stm32_close(stm32_t *stm);
stm32_err_t stm32_read_memory(const stm32_t *stm, uint32_t address,
uint8_t data[], unsigned int len);
stm32_err_t stm32_write_memory(const stm32_t *stm, uint32_t address,
const uint8_t data[], unsigned int len);
stm32_err_t stm32_wunprot_memory(const stm32_t *stm);
stm32_err_t stm32_wprot_memory(const stm32_t *stm);
stm32_err_t stm32_erase_memory(const stm32_t *stm, uint32_t spage,
uint32_t pages);
stm32_err_t stm32_go(const stm32_t *stm, uint32_t address);
stm32_err_t stm32_reset_device(const stm32_t *stm);
stm32_err_t stm32_readprot_memory(const stm32_t *stm);
stm32_err_t stm32_runprot_memory(const stm32_t *stm);
stm32_err_t stm32_crc_memory(const stm32_t *stm, uint32_t address,
uint32_t length, uint32_t *crc);
stm32_err_t stm32_crc_wrapper(const stm32_t *stm, uint32_t address,
uint32_t length, uint32_t *crc);
uint32_t stm32_sw_crc(uint32_t crc, uint8_t *buf, unsigned int len);
#endif

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -727,6 +727,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 - RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC - TX"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC - RX"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "А"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "А"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "A"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "安"

View File

@ -731,6 +731,8 @@
#define D_SENSOR_IEM3000_RX "iEM3000 RX"
#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx"
#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx"
#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0"
#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset"
// Units
#define D_UNIT_AMPERE "安培"

View File

@ -473,6 +473,10 @@
#define USE_PWM_DIMMER_REMOTE // Add support for remote switches to PWM Dimmer (requires USE_DEVICE_GROUPS) (+0k6 code)
//#define USE_KEELOQ // Add support for Jarolift rollers by Keeloq algorithm (+4k5 code)
#define USE_SONOFF_D1 // Add support for Sonoff D1 Dimmer (+0k7 code)
//#define USE_SHELLY_DIMMER // Add support for Shelly Dimmer (+2k2 code)
// #define SHELLY_CMDS // Add command to send co-processor commands (+0k4 code)
// #define SHELLY_FW_UPGRADE // Add firmware upgrade option for co-processor (+30k code, +5k mem)
// #define SHELLY_VOLTAGE_MON // Add support for reading voltage and current measurment (+?? code)
// -- Optional light modules ----------------------
#define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by //

View File

@ -635,8 +635,11 @@ struct {
uint16_t energy_power_delta[3]; // F44
uint16_t shutter_pwmrange[2][MAX_SHUTTERS]; // F4A
uint8_t dimmer_step; // F5A
uint8_t free_f5b[88]; // F5B - Decrement if adding new Setting variables just above and below
uint8_t shd_leading_edge; // F5B
uint16_t shd_warmup_brightness; // F5C
uint8_t shd_warmup_time; // F5E
uint8_t free_f5e[84]; // F5E - Decrement if adding new Setting variables just above and below
// Only 32 bit boundary variables below
SysBitfield5 flag5; // FB4

View File

@ -662,7 +662,9 @@ void ResponseAppendFeatures(void)
feature7 |= 0x00000800; // xsns_79_as608.ino
#endif
// feature7 |= 0x00001000;
#if defined(USE_SHELLY_DIMMER)
feature7 |= 0x00001000; // xdrv_45_shelly_dimmer.ino
#endif
// feature7 |= 0x00002000;
// feature7 |= 0x00004000;
// feature7 |= 0x00008000;

View File

@ -307,6 +307,7 @@ enum SettingsTextIndex { SET_OTAURL,
SET_ADC_PARAM1, SET_ADC_PARAM2, SET_ADC_PARAM3, SET_ADC_PARAM4, SET_ADC_PARAM5, SET_ADC_PARAM6, SET_ADC_PARAM7, SET_ADC_PARAM8, // MAX_ADCS
#endif
SET_SWITCH_TXT1, SET_SWITCH_TXT2, SET_SWITCH_TXT3, SET_SWITCH_TXT4, SET_SWITCH_TXT5, SET_SWITCH_TXT6, SET_SWITCH_TXT7, SET_SWITCH_TXT8, // MAX_SWITCHES
SET_SHD_PARAM,
SET_MAX };
enum DevGroupMessageType { DGR_MSGTYP_FULL_STATUS, DGR_MSGTYP_PARTIAL_UPDATE, DGR_MSGTYP_UPDATE, DGR_MSGTYP_UPDATE_MORE_TO_COME, DGR_MSGTYP_UPDATE_DIRECT, DGR_MSGTYPE_UPDATE_COMMAND, DGR_MSGTYPFLAG_WITH_LOCAL = 128 };

View File

@ -53,7 +53,8 @@
//#undef USE_DEVICE_GROUPS // Disable support for device groups (+5k6 code)
#undef USE_PWM_DIMMER // Disable support for MJ-SD01/acenx/NTONPOWER PWM dimmers (+4k5 code)
#undef USE_KEELOQ // Disable support for Jarolift rollers by Keeloq algorithm (+4k5 code)
#undef USE_SONOFF_D1 // DIsable support for Sonoff D1 Dimmer (+0k7 code)
#undef USE_SONOFF_D1 // Disable support for Sonoff D1 Dimmer (+0k7 code)
#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code)
// -- Optional light modules ----------------------
#define USE_LIGHT // Add Dimmer/Light support
@ -270,6 +271,7 @@
#undef USE_PWM_DIMMER_REMOTE // Disbale support for remote switches to PWM Dimmer
#undef USE_KEELOQ // Disable support for Jarolift rollers by Keeloq algorithm (+4k5 code)
#undef USE_SONOFF_D1 // Disable support for Sonoff D1 Dimmer (+0k7 code)
#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code)
#undef USE_ENERGY_SENSOR // Disable energy sensors (-14k code)
#undef USE_PZEM004T // Disable PZEM004T energy sensor
@ -363,6 +365,7 @@
#undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control
#undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller
#undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code)
#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code)
#undef USE_COUNTER // Disable counters
#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices
@ -506,6 +509,7 @@
#undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control
#undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller
#undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code)
#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code)
#undef USE_COUNTER // Disable counters
#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices
@ -578,6 +582,111 @@
#endif // SONOFF_ZIGBEEBRIDGE ******************************************************************
/*********************************************************************************************\
* [tasmota-shelly-dimmer.bin]
* Provide a dedicated Shelly Dimmer image allowing enough code and memory space
\*********************************************************************************************/
#ifdef FIRMWARE_SHELLY_DIMMER
#undef CODE_IMAGE_STR
#define CODE_IMAGE_STR "shelly-dimmer"
#define USE_SHELLY_DIMMER // Add support for Shelly Dimmer (+2k2 code)
#define SHELLY_CMDS // Add command to send co-processor commands (+0k4 code)
#define SHELLY_FW_UPGRADE // Add firmware upgrade option for co-processor (+30k code, +5k mem)
#define SHELLY_DIMMER_DEBUG
// #define SHELLY_VOLTAGE_MON // Add support for reading voltage and current measurment (+?? code)
#define USE_LIGHT // Add Dimmer/Light support
#define USE_ENERGY_SENSOR // Add energy sensors (-14k code)
// -- Optional modules ----------------------------
#undef ROTARY_V1 // Disable support for MI Desk Lamp
#undef USE_SONOFF_RF // Disable support for Sonoff Rf Bridge (+3k2 code)
#undef USE_RF_FLASH // Disable support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB
#undef USE_SONOFF_SC // Disable support for Sonoff Sc (+1k1 code)
#undef USE_TUYA_MCU // Disable support for Tuya Serial MCU
#undef USE_ARMTRONIX_DIMMERS // Disable support for Armtronix Dimmers (+1k4 code)
#undef USE_PS_16_DZ // Disable support for PS-16-DZ Dimmer and Sonoff L1 (+2k code)
#undef USE_SONOFF_IFAN // Disable support for Sonoff iFan02 and iFan03 (+2k code)
#undef USE_ARILUX_RF // Disable support for Arilux RF remote controller
#undef USE_SHUTTER // Disable Shutter support for up to 4 shutter with different motortypes (+6k code)
#undef USE_EXS_DIMMER // Disable support for EX-Store WiFi Dimmer
#undef USE_PWM_DIMMER // Disable support for MJ-SD01/acenx/NTONPOWER PWM dimmers (+4k5 code)
#undef USE_PWM_DIMMER_REMOTE // Disbale support for remote switches to PWM Dimmer
#undef USE_KEELOQ // Disable support for Jarolift rollers by Keeloq algorithm (+4k5 code)
#undef USE_SONOFF_D1 // Disable support for Sonoff D1 Dimmer (+0k7 code)
// -- Optional light modules ----------------------
#undef USE_WS2812 // Disable WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by //
#undef USE_MY92X1 // Disable support for MY92X1 RGBCW led controller as used in Sonoff B1, Ailight and Lohas
#undef USE_SM16716 // Disable support for SM16716 RGB LED controller (+0k7 code)
#undef USE_SM2135 // Disable support for SM2135 RGBCW led control as used in Action LSC (+0k6 code)
#undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control
#undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller
#undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code)
#undef USE_DGR_LIGHT_SEQUENCE // Disable support for device group light sequencing (requires USE_DEVICE_GROUPS) (+0k2 code)
#undef USE_I2C // Disable all I2C sensors and devices
#undef USE_SPI // Disable all SPI devices
#undef USE_DISPLAY // Disable Display support
#undef USE_MHZ19 // Disable support for MH-Z19 CO2 sensor
#undef USE_SENSEAIR // Disable support for SenseAir K30, K70 and S8 CO2 sensor
#undef USE_PMS5003 // Disable support for PMS5003 and PMS7003 particle concentration sensor
#undef USE_NOVA_SDS // Disable support for SDS011 and SDS021 particle concentration sensor
#undef USE_HPMA // Disable support for Honeywell HPMA115S0 particle concentration sensor
#undef USE_SR04 // Disable support for HC-SR04 ultrasonic devices (+1k code)
#undef USE_DYP // Disable support for DYP ME-007 ultrasonic distance sensor, serial port version (+0k5 code)
#undef USE_MP3_PLAYER // Disable DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop
#undef USE_AZ7798 // Disable support for AZ-Instrument 7798 CO2 datalogger
#undef USE_PN532_HSU // Disable support for PN532 using HSU (Serial) interface (+1k8 code, 140 bytes mem)
#undef USE_ZIGBEE // Disable serial communication with Zigbee CC2530 flashed with ZNP
#undef USE_RDM6300 // Disable support for RDM6300 125kHz RFID Reader (+0k8)
#undef USE_IBEACON // Disable support for bluetooth LE passive scan of ibeacon devices (uses HM17 module)
#undef USE_GPS // Disable support for GPS and NTP Server for becoming Stratus 1 Time Source (+ 3.1kb flash, +132 bytes RAM)
#undef USE_HM10 // (ESP8266 only) Disable support for HM-10 as a BLE-bridge for the LYWSD03 (+5k1 code)
#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash)
#undef USE_HRXL // Disable support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7)
#undef USE_TASMOTA_CLIENT // Disable support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem)
#undef USE_OPENTHERM // Disable support for OpenTherm (+15k code)
#undef USE_MIEL_HVAC // Disable support for Mitsubishi Electric HVAC serial interface (+5k code)
#undef USE_PZEM004T // Disable PZEM004T energy sensor
#undef USE_PZEM_AC // Disable PZEM014,016 Energy monitor
#undef USE_PZEM_DC // Disable PZEM003,017 Energy monitor
#undef USE_MCP39F501 // Disable MCP39F501 Energy monitor as used in Shelly 2
#undef USE_SDM120 // Disable support for Eastron SDM120-Modbus energy meter
#undef USE_SDM630 // Disable support for Eastron SDM630-Modbus energy monitor (+0k6 code)
#undef USE_DDS2382 // Disable support for Hiking DDS2382 Modbus energy monitor (+0k6 code)
#undef USE_DDSU666 // Disable support for Chint DDSU666 Modbus energy monitor (+0k6 code)
#undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code)
#undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code)
#undef USE_BL0940 // Disable support for BL0940 Energy monitor as used in Blitzwolf SHP-10 (+1k6 code)
#undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry
#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code)
#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code)
#undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor
#undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI
#undef USE_MAX31865 // Disable support for MAX31865 RTD sensors using softSPI
#undef USE_LMT01 // Disable support for TI LMT01 temperature sensor, count pulses on single GPIO (+0k5 code)
#undef USE_IR_REMOTE // Disable IR driver
#undef USE_TM1638 // Disable support for TM1638 switches copying Switch1 .. Switch8
#undef USE_HX711 // Disable support for HX711 load cell
#undef USE_TX20_WIND_SENSOR // Disable support for La Crosse TX20 anemometer
#undef USE_TX23_WIND_SENSOR // Disable support for La Crosse TX23 anemometer
#undef USE_WINDMETER // Disable support for analog anemometer (+2k2 code)
#undef USE_RC_SWITCH // Disable support for RF transceiver using library RcSwitch
#undef USE_RF_SENSOR // Disable support for RF sensor receiver (434MHz or 868MHz) (+0k8 code)
#undef USE_HRE // Disable support for Badger HR-E Water Meter (+1k4 code)
#undef USE_A4988_STEPPER // Disable support for A4988_Stepper
#undef DEBUG_THEO // Disable debug code
#undef USE_DEBUG_DRIVER // Disable debug code
#endif // FIRMWARE_SHELLY_DIMMER
/*********************************************************************************************\
* [tasmota-lite.bin]
@ -640,6 +749,7 @@
#undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control
#undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller
#undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code)
#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code)
#undef USE_COUNTER // Disable counters
#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices
@ -772,6 +882,7 @@
#undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller
#undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code)
#undef USE_DGR_LIGHT_SEQUENCE // Disable support for device group light sequencing (requires USE_DEVICE_GROUPS) (+0k2 code)
#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code)
#undef USE_COUNTER // Disable counters
#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices

View File

@ -32,6 +32,7 @@
#undef USE_SONOFF_IFAN
#undef USE_SONOFF_L1
#undef USE_SONOFF_D1
#undef USE_SHELLY_DIMMER
#undef USE_RF_FLASH
// Not ported (yet)
@ -149,6 +150,7 @@ enum UserSelectablePins {
GPIO_MIEL_HVAC_TX, GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC
GPIO_WE517_TX, GPIO_WE517_RX, // ORNO WE517 Serial interface
GPIO_AS608_TX, GPIO_AS608_RX, // Serial interface AS608 / R503
GPIO_SHELLY_DIMMER_BOOT0, GPIO_SHELLY_DIMMER_RST_INV,
GPIO_SENSOR_END };
enum ProgramSelectablePins {
@ -255,7 +257,8 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_DYP_RX "|"
D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX "|"
D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX "|"
D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX
D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX "|"
D_SENSOR_SHELLY_DIMMER_BOOT0 "|" D_SENSOR_SHELLY_DIMMER_RST_INV
;
const char kSensorNamesFixed[] PROGMEM =
@ -383,6 +386,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#ifdef USE_ELECTRIQ_MOODL
AGPIO(GPIO_ELECTRIQ_MOODL_TX),
#endif
#ifdef USE_SHELLY_DIMMER
AGPIO(GPIO_SHELLY_DIMMER_BOOT0),
AGPIO(GPIO_SHELLY_DIMMER_RST_INV),
#endif
#endif // USE_LIGHT
/*-------------------------------------------------------------------------------------------*\

View File

@ -0,0 +1,873 @@
/*
xdrv_45_shelly_dimmer.ino - shelly dimmer support for Tasmota
Copyright (C) 2020 James Turton
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef USE_LIGHT
#ifdef USE_SHELLY_DIMMER
/*********************************************************************************************\
* Shelly WiFi Dimmer v1 and v2 (ESP8266 w/ separate co-processor dimmer)
* https://shelly.cloud/wifi-smart-home-automation-shelly-dimmer/
* https://shelly.cloud/products/shelly-dimmer-2-smart-home-light-controller/
\*********************************************************************************************/
// #define SHELLY_DIMMER_DEBUG
// #define SHELLY_HW_DIMMING
#define XDRV_45 45
#define XNRG_31 31
#define SHD_DRIVER_MAJOR_VERSION 1
#define SHD_DRIVER_MINOR_VERSION 4
#define SHD_LOGNAME "SHD"
#ifdef SHELLY_CMDS
#define D_PRFX_SHD "Shd"
#define D_CMND_LEADINGEDGE "LeadingEdge"
#define D_CMND_WARMUPBRIGHTNESS "WarmupBrightness"
#define D_CMND_WARMUPTIME "WarmupTime"
#endif // SHELLY_CMDS
#define SHD_SWITCH_CMD 0x01
#define SHD_SWITCH_FADE_CMD 0x02
#define SHD_POLL_CMD 0x10
#define SHD_VERSION_CMD 0x11
#define SHD_SETTINGS_CMD 0x20
#define SHD_WARMUP_CMD 0x21
#define SHD_CALIBRATION1_CMD 0x30
#define SHD_CALIBRATION2_CMD 0x31
#define SHD_SWITCH_SIZE 2
#define SHD_SWITCH_FADE_SIZE 6
#define SHD_SETTINGS_SIZE 10
#define SHD_WARMUP_SIZE 4
#define SHD_CALIBRATION_SIZE 200
#define SHD_START_BYTE 0x01
#define SHD_END_BYTE 0x04
#define SHD_BUFFER_SIZE 256
#define SHD_ACK_TIMEOUT 200 // 200 ms ACK timeout
#ifdef SHELLY_FW_UPGRADE
#include <stm32flash.h>
#include <fw/shelly/dimmer/stm_v51.4.h>
#endif // SHELLY_FW_UPGRADE
#include <TasmotaSerial.h>
TasmotaSerial *ShdSerial = nullptr;
typedef struct
{
uint8_t version_major = 0;
uint8_t version_minor = 0;
uint32_t brightness = 0;
uint32_t power = 0;
uint32_t fade_rate = 0;
} SHD_DIMMER;
struct SHD
{
uint8_t *buffer = nullptr; // Serial receive buffer
int byte_counter = 0; // Index in serial receive buffer
uint16_t req_brightness = 0;
bool req_on = false;
SHD_DIMMER dimmer;
uint32_t start_time = 0;
uint8_t counter = 1; // Packet counter
uint16_t req_fade_rate = 0;
uint16_t leading_edge = 2; // Leading edge = 2 Trailing edge = 1
uint16_t warmup_brightness = 100; // 10%
uint16_t warmup_time = 20; // 20ms
#ifdef USE_ENERGY_SENSOR
uint32_t last_power_check = 0; // Time when last power was checked
#endif // USE_ENERGY_SENSOR
bool present = false;
} Shd;
/*********************************************************************************************\
* Helper Functions
\*********************************************************************************************/
uint16_t checksum(uint8_t *buf, int len)
{
uint16_t chksm = 0;
for (uint8_t i = 0; i < len; i++)
chksm += buf[i];
return chksm;
}
int check_byte()
{
uint8_t index = Shd.byte_counter;
uint8_t byte = Shd.buffer[index];
if (index == 0)
return byte == SHD_START_BYTE;
if (index < 4)
return 1;
uint8_t data_length = Shd.buffer[3];
if ((4 + data_length + 3) > SHD_BUFFER_SIZE)
return 0;
if (index < 4 + data_length + 1)
return 1;
if (index == 4 + data_length + 1)
{
uint16_t chksm = (Shd.buffer[index - 1] << 8 | Shd.buffer[index]);
uint16_t chksm_calc = checksum(&Shd.buffer[1], 3 + data_length);
if (chksm != chksm_calc)
{
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" checksum: %x calculated: %x"), chksm, chksm_calc);
#endif // SHELLY_DIMMER_DEBUG
return 0;
}
return 1;
}
if (index == 4 + data_length + 2 && byte == SHD_END_BYTE)
return index;
return 0;
}
/*********************************************************************************************\
* Internal Functions
\*********************************************************************************************/
bool ShdSerialSend(const uint8_t data[] = nullptr, uint16_t len = 0)
{
int retries = 3;
#ifdef SHELLY_DIMMER_DEBUG
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" Tx Packet:"));
for (uint32_t i = 0; i < len; i++)
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s %02x"), TasmotaGlobal.log_data, data[i]);
AddLog(LOG_LEVEL_DEBUG_MORE);
#endif // SHELLY_DIMMER_DEBUG
while (retries--)
{
ShdSerial->write(data, len);
ShdSerial->flush();
// wait for any response
uint32_t snd_time = millis();
while (TimePassedSince(snd_time) < SHD_ACK_TIMEOUT)
{
if (ShdSerialInput())
return true;
delay(1);
}
// timeout
AddLog_P(LOG_LEVEL_ERROR, PSTR(SHD_LOGNAME" serial send timeout"));
}
return false;
}
bool ShdSendCmd(uint8_t cmd, uint8_t *payload, uint8_t len)
{
uint8_t data[4 + 72 + 3]; // maximum payload for 0x30 packet is 72
uint16_t chksm;
uint8_t pos = 0;
data[0] = SHD_START_BYTE;
data[1] = Shd.counter++;
data[2] = cmd;
data[3] = len;
pos += 4;
if (payload)
{
memcpy(data + 4, payload, len);
pos += len;
}
// calculate checksum from id and onwards
chksm = checksum(data + 1, 3 + len);
data[pos++] = chksm >> 8;
data[pos++] = chksm & 0xff;
data[pos++] = SHD_END_BYTE;
return ShdSerialSend(data, pos);
}
void ShdSetBrightness()
{
// Payload format:
// [0-1] Brightness (%) * 10
uint8_t payload[SHD_SWITCH_SIZE];
payload[0] = Shd.req_brightness & 0xff;
payload[1] = Shd.req_brightness >> 8;
ShdSendCmd(SHD_SWITCH_CMD, payload, SHD_SWITCH_SIZE);
}
void ShdSetBrightnessFade()
{
uint16_t delta = 0;
if (Shd.req_brightness > Shd.dimmer.brightness)
delta = (Shd.req_brightness - Shd.dimmer.brightness) * 0.8;
else
delta = (Shd.dimmer.brightness - Shd.req_brightness) * 0.8;
// Payload format:
// [0-1] Brightness (%) * 10
// [2-3] Delta brightness (%) * 8
// [4-5] 0?? ToDo(jamesturton): Find out what this word is!
uint8_t payload[SHD_SWITCH_FADE_SIZE];
payload[0] = Shd.req_brightness & 0xff;
payload[1] = Shd.req_brightness >> 8;
payload[2] = delta & 0xff;
payload[3] = delta >> 8;
payload[4] = 0;
payload[5] = 0;
ShdSendCmd(SHD_SWITCH_FADE_CMD, payload, SHD_SWITCH_FADE_SIZE);
}
void ShdSendSettings()
{
// as specified in STM32 assembly
uint16_t fade_rate = Shd.req_fade_rate;
if (fade_rate > 100)
fade_rate = 100;
// Payload format:
// [0-1] Brightness (%) * 10
// [2-3] Leading / trailing edge (1=leading, 2=trailing) ToDo(jamesturton): Are there any other values this can take?
// [4-5] Fade rate (units unknown) ToDo(jamesturton): Find fade rate units
// [6-7] Warm up brightness (%) * 10
// [8-9] Warm up duration (ms)
uint8_t payload[SHD_SETTINGS_SIZE];
payload[0] = Shd.req_brightness & 0xff;
payload[1] = Shd.req_brightness >> 8;
payload[2] = Shd.leading_edge & 0xff;
payload[3] = Shd.leading_edge >> 8;
payload[4] = fade_rate & 0xff;
payload[5] = fade_rate >> 8;
payload[6] = Shd.warmup_brightness & 0xff;
payload[7] = Shd.warmup_brightness >> 8;
payload[8] = Shd.warmup_time & 0xff;
payload[9] = Shd.warmup_time >> 8;
ShdSendCmd(SHD_SETTINGS_CMD, payload, SHD_SETTINGS_SIZE);
}
void ShdSendWarmup()
{
// Payload format:
// [0-1] Warm up brightness (%) * 10
// [2-3] Warm up duration (ms)
uint8_t payload[SHD_WARMUP_SIZE];
payload[0] = Shd.warmup_brightness & 0xff;
payload[1] = Shd.warmup_brightness >> 8;
payload[2] = Shd.warmup_time & 0xff;
payload[3] = Shd.warmup_time >> 8;
ShdSendCmd(SHD_WARMUP_CMD, payload, SHD_WARMUP_SIZE);
}
void ShdSendCalibration(uint16_t brightness, uint16_t func, uint16_t fade_rate)
{
// Payload format:
// ??? ToDo(jamesturton): Find calibration payload format!
uint8_t payload[SHD_CALIBRATION_SIZE];
memset(payload, 0, sizeof(payload));
ShdSendCmd(SHD_CALIBRATION1_CMD, payload, SHD_CALIBRATION_SIZE);
ShdSendCmd(SHD_CALIBRATION2_CMD, payload, SHD_CALIBRATION_SIZE);
}
bool ShdSyncState()
{
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Serial %p"), ShdSerial);
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set Brightness Want %d, Is %d"), Shd.req_brightness, Shd.dimmer.brightness);
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set Fade Want %d, Is %d"), Settings.light_speed, Shd.dimmer.fade_rate);
#endif // SHELLY_DIMMER_DEBUG
if (!ShdSerial)
return false;
#ifdef SHELLY_HW_DIMMING
// TODO(jamesturton): HW dimming seems to conflict with SW dimming. See how
// we can disbale SW dimming when using HW dimming.
if (Settings.light_speed != Shd.dimmer.fade_rate)
{
ShdSetBrightnessFade();
ShdDebugState();
}
else
#endif // SHELLY_HW_DIMMING
if (Shd.req_brightness != Shd.dimmer.brightness)
{
ShdSetBrightness();
ShdDebugState();
}
return true;
}
void ShdDebugState()
{
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" MCU v%d.%d, Brightness:%d(%d%%), Power:%d, Fade:%d"),
Shd.dimmer.version_major, Shd.dimmer.version_minor,
Shd.dimmer.brightness,
changeUIntScale(Shd.dimmer.brightness, 0, 1000, 0, 100),
Shd.dimmer.power,
Shd.dimmer.fade_rate);
#endif // SHELLY_DIMMER_DEBUG
}
bool ShdPacketProcess(void)
{
uint8_t pos = 0;
uint8_t id, cmd, len;
bool ret = false;
if (Shd.buffer[pos++] != SHD_START_BYTE)
return false;
id = Shd.buffer[pos++];
cmd = Shd.buffer[pos++];
len = Shd.buffer[pos++];
switch (cmd)
{
case SHD_POLL_CMD:
{
// 1 when returning fade_rate, 0 when returning wattage, brightness?
uint16_t unknown_0 = Shd.buffer[pos + 1] << 8 |
Shd.buffer[pos + 0];
uint16_t brightness = Shd.buffer[pos + 3] << 8 |
Shd.buffer[pos + 2];
uint32_t wattage_raw = Shd.buffer[pos + 7] << 24 |
Shd.buffer[pos + 6] << 16 |
Shd.buffer[pos + 5] << 8 |
Shd.buffer[pos + 4];
uint32_t voltage_raw = Shd.buffer[pos + 11] << 24 |
Shd.buffer[pos + 10] << 16 |
Shd.buffer[pos + 9] << 8 |
Shd.buffer[pos + 8];
uint32_t current_raw = Shd.buffer[pos + 15] << 24 |
Shd.buffer[pos + 14] << 16 |
Shd.buffer[pos + 13] << 8 |
Shd.buffer[pos + 12];
uint32_t fade_rate = Shd.buffer[pos + 16];
float wattage = 0;
if (wattage_raw > 0)
wattage = 880373 / (float)wattage_raw;
float voltage = 0;
if (voltage_raw > 0)
voltage = 347800 / (float)voltage_raw;
float current = 0;
if (current_raw > 0)
current = 1448 / (float)current_raw;
#ifdef USE_ENERGY_SENSOR
Energy.active_power[0] = wattage;
Energy.voltage[0] = voltage;
Energy.current[0] = current;
Energy.apparent_power[0] = voltage * current;
if ((voltage * current) > wattage)
Energy.reactive_power[0] = sqrt((voltage * current) * (voltage * current) - wattage * wattage);
else
Energy.reactive_power[0] = 0;
if (wattage > (voltage * current))
Energy.power_factor[0] = 1;
else if ((voltage * current) == 0)
Energy.power_factor[0] = 0;
else
Energy.power_factor[0] = wattage / (voltage * current);
if (Shd.last_power_check > 10 && Energy.active_power[0] > 0)
{
float kWhused = (float)Energy.active_power[0] * (Rtc.utc_time - Shd.last_power_check) / 36;
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Adding %i mWh to todays usage from %lu to %lu"), (int)(kWhused * 10), Shd.last_power_check, Rtc.utc_time);
#endif // USE_ENERGY_SENSOR
Energy.kWhtoday += kWhused;
EnergyUpdateToday();
}
Shd.last_power_check = Rtc.utc_time;
#endif // USE_ENERGY_SENSOR
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" ShdPacketProcess: Brightness:%d Power:%lu Voltage:%lu Current:%lu Fade:%d"), brightness, wattage_raw, voltage_raw, current_raw, fade_rate);
#endif // SHELLY_DIMMER_DEBUG
Shd.dimmer.brightness = brightness;
Shd.dimmer.power = wattage_raw;
Shd.dimmer.fade_rate = fade_rate;
}
break;
case SHD_VERSION_CMD:
{
#ifdef SHELLY_FW_UPGRADE
ret = Shd.buffer[pos] == SHD_FIRMWARE_MINOR_VERSION &&
Shd.buffer[pos + 1] == SHD_FIRMWARE_MAJOR_VERSION;
#endif // SHELLY_FW_UPGRADE
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" ShdPacketProcess: Version: %u.%u"), Shd.buffer[pos + 1], Shd.buffer[pos]);
Shd.dimmer.version_minor = Shd.buffer[pos];
Shd.dimmer.version_major = Shd.buffer[pos + 1];
}
break;
case SHD_SWITCH_CMD:
case SHD_SWITCH_FADE_CMD:
case SHD_SETTINGS_CMD:
case SHD_WARMUP_CMD:
case SHD_CALIBRATION1_CMD:
case SHD_CALIBRATION2_CMD:
{
ret = (Shd.buffer[pos] == 0x01);
}
break;
}
return ret;
}
void ShdResetToAppMode()
{
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Request co-processor reset in app mode"));
pinMode(Pin(GPIO_SHELLY_DIMMER_RST_INV), OUTPUT);
digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), LOW);
pinMode(Pin(GPIO_SHELLY_DIMMER_BOOT0), OUTPUT);
digitalWrite(Pin(GPIO_SHELLY_DIMMER_BOOT0), LOW);
delay(50);
// clear in the receive buffer
while (Serial.available())
Serial.read();
digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), HIGH); // pull out of reset
delay(50); // wait 50ms fot the co-processor to come online
}
#ifdef SHELLY_FW_UPGRADE
void ShdResetToDFUMode()
{
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Request co-processor reset in dfu mode"));
pinMode(Pin(GPIO_SHELLY_DIMMER_RST_INV), OUTPUT);
digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), LOW);
pinMode(Pin(GPIO_SHELLY_DIMMER_BOOT0), OUTPUT);
digitalWrite(Pin(GPIO_SHELLY_DIMMER_BOOT0), HIGH);
delay(50);
// clear in the receive buffer
while (Serial.available())
Serial.read();
digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), HIGH); // pull out of reset
delay(50); // wait 50ms fot the co-processor to come online
}
bool ShdUpdateFirmware(const uint8_t data[], unsigned int size)
{
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Update firmware"));
bool ret = true;
stm32_t *stm = stm32_init(&Serial, STREAM_SERIAL, 1);
if (stm)
{
off_t offset = 0;
uint8_t buffer[256];
unsigned int len;
const uint8_t *p_st = data;
uint32_t addr, start, end;
stm32_err_t s_err;
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" STM32 erase memory"));
stm32_erase_memory(stm, 0, STM32_MASS_ERASE);
addr = stm->dev->fl_start;
end = addr + size;
while(addr < end && offset < size)
{
uint32_t left = end - addr;
len = sizeof(buffer) > left ? left : sizeof(buffer);
len = len > size - offset ? size - offset : len;
if (len == 0)
{
break;
}
memcpy(buffer, p_st, len);
p_st += len;
s_err = stm32_write_memory(stm, addr, buffer, len);
if (s_err != STM32_ERR_OK)
{
ret = false;
break;
}
addr += len;
offset += len;
}
stm32_close(stm);
}
return ret;
}
#endif // SHELLY_FW_UPGRADE
void ShdPoll(void)
{
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Poll"));
#endif // SHELLY_DIMMER_DEBUG
if (!ShdSerial)
return;
ShdSendCmd(SHD_POLL_CMD, 0, 0);
ShdSyncState();
}
bool ShdSendVersion(void)
{
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Sending version command"));
#endif // SHELLY_DIMMER_DEBUG
return ShdSendCmd(SHD_VERSION_CMD, 0, 0);
}
void ShdGetSettings(void)
{
char parameters[32];
Shd.req_brightness = 0;
Shd.leading_edge = 0;
Shd.req_fade_rate = 0;
Shd.warmup_brightness = 0;
Shd.warmup_time = 0;
if (strstr(SettingsText(SET_SHD_PARAM), ",") != nullptr)
{
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Loading params: %s"), SettingsText(SET_SHD_PARAM));
#endif // SHELLY_DIMMER_DEBUG
Shd.req_brightness = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 1));
Shd.leading_edge = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 2));
Shd.req_fade_rate = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 3));
Shd.warmup_brightness = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 4));
Shd.warmup_time = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 5));
}
}
void ShdSaveSettings(void)
{
char parameters[32];
snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d"),
Shd.req_brightness, Shd.leading_edge, Shd.req_fade_rate, Shd.warmup_brightness, Shd.warmup_time);
SettingsUpdateText(SET_SHD_PARAM, parameters);
}
void ShdInit(void)
{
AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Shelly Dimmer Driver v%u.%u"), SHD_DRIVER_MAJOR_VERSION, SHD_DRIVER_MINOR_VERSION);
#ifdef SHELLY_DIMMER_DEBUG
AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Starting Tx %d Rx %d"), Pin(GPIO_TXD), Pin(GPIO_RXD));
#endif // SHELLY_DIMMER_DEBUG
Shd.buffer = (uint8_t *)malloc(SHD_BUFFER_SIZE);
if (Shd.buffer != nullptr)
{
ShdSerial = new TasmotaSerial(Pin(GPIO_RXD), Pin(GPIO_TXD), 2, 0, SHD_BUFFER_SIZE);
if (ShdSerial->begin(115200))
{
if (ShdSerial->hardwareSerial())
ClaimSerial();
ShdSerial->flush();
ShdResetToAppMode();
bool got_version = ShdSendVersion();
AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Shelly Dimmer Co-processor Version v%u.%u"), Shd.dimmer.version_major, Shd.dimmer.version_minor);
#ifdef SHELLY_FW_UPGRADE
if (!got_version || (got_version &&
(Shd.dimmer.version_minor != SHD_FIRMWARE_MINOR_VERSION ||
Shd.dimmer.version_major != SHD_FIRMWARE_MAJOR_VERSION)))
{
AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Updating firmware from v%u.%u to v%u.%u with %u bytes"), Shd.dimmer.version_major, Shd.dimmer.version_minor, SHD_FIRMWARE_MAJOR_VERSION, SHD_FIRMWARE_MINOR_VERSION, sizeof(stm_firmware));
Serial.end();
Serial.begin(115200, SERIAL_8E1);
ShdResetToDFUMode();
ShdUpdateFirmware(stm_firmware, sizeof(stm_firmware));
Serial.end();
ShdResetToAppMode();
Serial.begin(115200, SERIAL_8N1);
ShdSendVersion();
}
#endif // SHELLY_FW_UPGRADE
ShdGetSettings();
ShdSaveSettings();
ShdSendSettings();
ShdSyncState();
}
}
}
bool ShdSerialInput(void)
{
while (ShdSerial->available())
{
yield();
uint8_t serial_in_byte = ShdSerial->read();
Shd.buffer[Shd.byte_counter] = serial_in_byte;
int check = check_byte();
if (check > 1)
{
// finished
#ifdef SHELLY_DIMMER_DEBUG
Shd.byte_counter++;
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" RX Packet:"));
for (uint32_t i = 0; i < Shd.byte_counter; i++)
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s %02x"), TasmotaGlobal.log_data, Shd.buffer[i]);
AddLog(LOG_LEVEL_DEBUG_MORE);
#endif // SHELLY_DIMMER_DEBUG
Shd.byte_counter = 0;
ShdPacketProcess();
return true;
}
else if (check == 0)
{
// wrong data
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Byte %i of received data frame is invalid"), Shd.byte_counter);
Shd.byte_counter++;
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" RX Packet:"));
for (uint32_t i = 0; i < Shd.byte_counter; i++)
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s %02x"), TasmotaGlobal.log_data, Shd.buffer[i]);
AddLog(LOG_LEVEL_DEBUG_MORE);
Shd.byte_counter = 0;
}
else
{
Shd.byte_counter++;
}
}
return false;
}
/*********************************************************************************************\
* API Functions
\*********************************************************************************************/
bool ShdModuleSelected(void) {
if (PinUsed(GPIO_SHELLY_DIMMER_BOOT0) && PinUsed(GPIO_SHELLY_DIMMER_RST_INV)) {
TasmotaGlobal.devices_present++;
TasmotaGlobal.light_type = LT_SERIAL1;
Shd.present = true;
}
return Shd.present;
}
bool ShdSetChannels(void)
{
#ifdef SHELLY_DIMMER_DEBUG
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" SetChannels: \""));
for (int i = 0; i < XdrvMailbox.data_len; i++)
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s%02x"), TasmotaGlobal.log_data, ((uint8_t *)XdrvMailbox.data)[i]);
snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s\""), TasmotaGlobal.log_data);
AddLog(LOG_LEVEL_DEBUG_MORE);
#endif // SHELLY_DIMMER_DEBUG
uint16_t brightness = ((uint32_t *)XdrvMailbox.data)[0];
// Use dimmer_hw_min and dimmer_hw_max to constrain our values if the light should be on
if (brightness > 0)
brightness = changeUIntScale(brightness, 0, 255, Settings.dimmer_hw_min * 10, Settings.dimmer_hw_max * 10);
Shd.req_brightness = brightness;
ShdDebugState();
return ShdSyncState();
}
bool ShdSetPower(void)
{
AddLog_P(LOG_LEVEL_INFO, PSTR("EXS: Set Power, Power 0x%02x"), XdrvMailbox.index);
Shd.req_on = (bool)XdrvMailbox.index;
return ShdSyncState();
}
/*********************************************************************************************\
* Commands
\*********************************************************************************************/
#ifdef SHELLY_CMDS
const char kShdCommands[] PROGMEM = D_PRFX_SHD "|" // Prefix
D_CMND_LEADINGEDGE "|" D_CMND_WARMUPBRIGHTNESS "|" D_CMND_WARMUPTIME;
void (* const ShdCommand[])(void) PROGMEM = {
&CmndShdLeadingEdge, &CmndShdWarmupBrightness, &CmndShdWarmupTime };
void CmndShdLeadingEdge(void)
{
if (XdrvMailbox.payload == 0 || XdrvMailbox.payload == 1)
{
Shd.leading_edge = 2 - XdrvMailbox.payload;
Settings.shd_leading_edge = XdrvMailbox.payload;
if (Shd.leading_edge == 1)
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set to trailing edge"));
else
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set to leading edge"));
ShdSendSettings();
}
ShdSaveSettings();
ResponseCmndNumber(Settings.shd_leading_edge);
}
void CmndShdWarmupBrightness(void)
{
if ((10 <= XdrvMailbox.payload) && (XdrvMailbox.payload <= 100))
{
Shd.warmup_brightness = XdrvMailbox.payload * 10;
Settings.shd_warmup_brightness = XdrvMailbox.payload;
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set warmup brightness to %d%%"), XdrvMailbox.payload);
ShdSendSettings();
}
ShdSaveSettings();
ResponseCmndNumber(Settings.shd_warmup_brightness);
}
void CmndShdWarmupTime(void)
{
if ((20 <= XdrvMailbox.payload) && (XdrvMailbox.payload <= 200))
{
Shd.warmup_time = XdrvMailbox.payload;
Settings.shd_warmup_time = XdrvMailbox.payload;
AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set warmup time to %dms"), XdrvMailbox.payload);
ShdSendSettings();
}
ShdSaveSettings();
ResponseCmndNumber(Settings.shd_warmup_time);
}
#endif // SHELLY_CMDS
/*********************************************************************************************\
* Energy Interface
\*********************************************************************************************/
#ifdef USE_ENERGY_SENSOR
bool Xnrg31(uint8_t function)
{
bool result = false;
if (function == FUNC_PRE_INIT)
{
#ifndef SHELLY_VOLTAGE_MON
Energy.current_available = false;
Energy.voltage_available = false;
#endif // SHELLY_VOLTAGE_MON
TasmotaGlobal.energy_driver = XNRG_31;
}
return result;
}
#endif // USE_ENERGY_SENSOR
/*********************************************************************************************\
* Driver Interface
\*********************************************************************************************/
bool Xdrv45(uint8_t function) {
bool result = false;
if (FUNC_MODULE_INIT == function) {
result = ShdModuleSelected();
} else if (Shd.present) {
switch (function) {
case FUNC_EVERY_SECOND:
ShdPoll();
break;
case FUNC_INIT:
ShdInit();
break;
case FUNC_SET_DEVICE_POWER:
result = ShdSetPower();
break;
case FUNC_SET_CHANNELS:
result = ShdSetChannels();
break;
#ifdef SHELLY_CMDS
case FUNC_COMMAND:
result = DecodeCommand(kShdCommands, ShdCommand);
break;
#endif // SHELLY_CMDS
}
}
return result;
}
#endif // USE_SHELLY_DIMMER
#endif // USE_LIGHT

View File

@ -145,7 +145,7 @@ bool (* const xnrg_func_ptr[])(uint8_t) = { // Energy driver Function Pointers
&Xnrg30,
#endif
#ifdef XNRG_31
#ifdef XNRG_31 // Reserved for use by xdrv_45_shelly_dimmer.ino
&Xnrg31,
#endif

View File

@ -170,7 +170,8 @@ a_setoption = [[
],[
"Detach Switches from Relays and enable MQTT action state for all the SwitchModes",
"Enable ESP32 MI32 BLE",
"","",
"Disable auto-query of zigbee lights and devices",
"",
"","","","",
"","","","",
"","","","",
@ -238,7 +239,7 @@ a_features = [[
"USE_EZOORP","USE_EZORTD","USE_EZOHUM","USE_EZOEC",
"USE_EZOCO2","USE_EZOO2","USE_EZOPRS","USE_EZOFLO",
"USE_EZODO","USE_EZORGB","USE_EZOPMP","USE_AS608",
"","","","",
"USE_SHELLY_DIMMER","","","",
"","","","",
"","","","",
"","","","",
@ -270,7 +271,7 @@ else:
obj = json.load(fp)
def StartDecode():
print ("\n*** decode-status.py v20201113 by Theo Arends and Jacek Ziolkowski ***")
print ("\n*** decode-status.py v20201114 by Theo Arends and Jacek Ziolkowski ***")
# print("Decoding\n{}".format(obj))