diff --git a/.gitignore b/.gitignore index 1f28519a..7471c15c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,7 @@ build/ test/ tools/*.bin mksunxi +init_dram_bin +bin2array .vscode/settings.json prebuilt/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 654c2670..c590d604 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,8 @@ # Specify the minimum required version of CMake cmake_minimum_required(VERSION 3.10) +include(ExternalProject) + # Define the path to the board loader files set(BOARD_FLOADER_PATH ${CMAKE_SOURCE_DIR}/cmake/board/) @@ -64,7 +66,6 @@ project(SyterKit C CXX ASM) # Include other CMake modules include(cmake/add_syterkit_app.cmake) -include(ExternalProject) # Get the name of the compiler string(SUBSTRING ${CMAKE_C_COMPILER} 1 -1 COMPILER_NAME) @@ -103,6 +104,25 @@ set(LINK_SCRIPT_BIN ${PROJECT_BINARY_DIR}/link_bin.ld) if (CONFIG_ARCH_ARM32) set(ARCH_INCLUDE include/arch/arm32) +if (CONFIG_USE_DRAM_PAYLOAD) +set(ARCH_START_ADDRESS "${ARCH_BIN_START_ADDRESS}") +set(ARCH_SRAM_LENGTH "${ARCH_BIN_SRAM_LENGTH}") + +configure_file( + "${PROJECT_SOURCE_DIR}/link/arm32/link_dram_payloads.ld" + "${PROJECT_BINARY_DIR}/link_bin.ld" +) + +set(ARCH_START_ADDRESS "${ARCH_FEL_START_ADDRESS}") +set(ARCH_SRAM_LENGTH "${ARCH_FEL_SRAM_LENGTH}") + +configure_file( + "${PROJECT_SOURCE_DIR}/link/arm32/link_dram_payloads.ld" + "${PROJECT_BINARY_DIR}/link_elf.ld" +) + +else() + set(ARCH_START_ADDRESS "${ARCH_BIN_START_ADDRESS}") set(ARCH_SRAM_LENGTH "${ARCH_BIN_SRAM_LENGTH}") @@ -119,6 +139,7 @@ configure_file( "${PROJECT_BINARY_DIR}/link_elf.ld" ) endif() +endif() # If the CONFIG_ARCH_ARM32 variable is defined, execute the following content if (CONFIG_ARCH_RISCV64) diff --git a/board/longanpi-3h/CMakeLists.txt b/board/longanpi-3h/CMakeLists.txt index 27e2805d..d45bda34 100644 --- a/board/longanpi-3h/CMakeLists.txt +++ b/board/longanpi-3h/CMakeLists.txt @@ -2,6 +2,9 @@ set(APP_COMMON_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/start.S ${CMAKE_CURRENT_SOURCE_DIR}/board.c ${CMAKE_CURRENT_SOURCE_DIR}/eabi_compat.c + ${CMAKE_CURRENT_SOURCE_DIR}/payloads/init_dram_bin.c ) add_subdirectory(hello_world) + +add_subdirectory(init_dram) \ No newline at end of file diff --git a/board/longanpi-3h/board.c b/board/longanpi-3h/board.c index a9bfbdb7..c68c7ab2 100644 --- a/board/longanpi-3h/board.c +++ b/board/longanpi-3h/board.c @@ -7,16 +7,16 @@ #include -#include #include +#include #include +#include #include +#include #include #include -#include -#include sunxi_serial_t uart_dbg = { .base = SUNXI_UART0_BASE, @@ -53,32 +53,20 @@ sdhci_t sdhci0 = { .gpio_d3 = {GPIO_PIN(GPIO_PORTF, 4), GPIO_PERIPH_MUX2}, }; -dram_para_t dram_para = { - .dram_clk = 792, - .dram_type = 3, - .dram_zq = 0x7b7bfb, - .dram_odt_en = 0x00, - .dram_para1 = 0x000010d2, - .dram_para2 = 0, - .dram_mr0 = 0x1c70, - .dram_mr1 = 0x42, - .dram_mr2 = 0x18, - .dram_mr3 = 0, - .dram_tpr0 = 0x004a2195, - .dram_tpr1 = 0x02423190, - .dram_tpr2 = 0x0008b061, - .dram_tpr3 = 0xb4787896,// unused - .dram_tpr4 = 0, - .dram_tpr5 = 0x48484848, - .dram_tpr6 = 0x00000048, - .dram_tpr7 = 0x1620121e,// unused - .dram_tpr8 = 0, - .dram_tpr9 = 0,// clock? - .dram_tpr10 = 0, - .dram_tpr11 = 0x00340000, - .dram_tpr12 = 0x00000046, - .dram_tpr13 = 0x34000100, -}; +void neon_enable(void) { + /* set NSACR, both Secure and Non-secure access are allowed to NEON */ + asm volatile("MRC p15, 0, r0, c1, c1, 2"); + asm volatile("ORR r0, r0, #(0x3<<10) @ enable fpu/neon"); + asm volatile("MCR p15, 0, r0, c1, c1, 2"); + /* Set the CPACR for access to CP10 and CP11*/ + asm volatile("LDR r0, =0xF00000"); + asm volatile("MCR p15, 0, r0, c1, c0, 2"); + /* Set the FPEXC EN bit to enable the FPU */ + asm volatile("MOV r3, #0x40000000"); + /*@VMSR FPEXC, r3*/ + asm volatile("MCR p10, 7, r3, c8, c0, 0"); +} + void clean_syterkit_data(void) { /* Disable MMU, data cache, instruction cache, interrupts */ diff --git a/board/longanpi-3h/hello_world/main.c b/board/longanpi-3h/hello_world/main.c index ae51365a..dd16f216 100644 --- a/board/longanpi-3h/hello_world/main.c +++ b/board/longanpi-3h/hello_world/main.c @@ -22,6 +22,8 @@ int main(void) { sunxi_clk_dump(); + printk(LOG_LEVEL_INFO, "Hello World!\n"); + abort(); return 0; diff --git a/board/longanpi-3h/init_dram/CMakeLists.txt b/board/longanpi-3h/init_dram/CMakeLists.txt new file mode 100644 index 00000000..cc4627c5 --- /dev/null +++ b/board/longanpi-3h/init_dram/CMakeLists.txt @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: Apache-2.0 + +add_syterkit_app(init_dram + main.c +) \ No newline at end of file diff --git a/board/longanpi-3h/init_dram/main.c b/board/longanpi-3h/init_dram/main.c new file mode 100644 index 00000000..bae24a4a --- /dev/null +++ b/board/longanpi-3h/init_dram/main.c @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + +#include +#include +#include +#include + +#include + +#include + +#include + +extern sunxi_serial_t uart_dbg; + +int main(void) { + sunxi_serial_init(&uart_dbg); + + show_banner(); + + sunxi_clk_init(); + + sunxi_clk_dump(); + + neon_enable(); + + sunxi_dram_init(NULL); + + int i = 0; + + while (1) { + i++; + printk(LOG_LEVEL_INFO, "Count: %d\n", i); + mdelay(1000); + } + + abort(); + + return 0; +} \ No newline at end of file diff --git a/board/longanpi-3h/payloads/init_dram_bin.c b/board/longanpi-3h/payloads/init_dram_bin.c new file mode 100644 index 00000000..ccee3776 --- /dev/null +++ b/board/longanpi-3h/payloads/init_dram_bin.c @@ -0,0 +1,1654 @@ +const unsigned char __attribute__((section(".init_dram_bin"))) init_dram_bin[26380] = { + 0x00, 0x00, 0xA0, 0xE3, 0x17, 0x0F, 0x08, 0xEE, 0x15, 0x0F, 0x07, 0xEE, 0xD5, 0x0F, 0x07, 0xEE, + 0x4F, 0xF0, 0x7F, 0xF5, 0x6F, 0xF0, 0x7F, 0xF5, 0xFF, 0xFF, 0xFF, 0xEA, 0x58, 0x00, 0x9F, 0xE5, + 0x00, 0xD0, 0x80, 0xE5, 0x04, 0xE0, 0x80, 0xE5, 0x00, 0xE0, 0x0F, 0xE1, 0x08, 0xE0, 0x80, 0xE5, + 0x10, 0xEF, 0x11, 0xEE, 0x0C, 0xE0, 0x80, 0xE5, 0x10, 0xEF, 0x1C, 0xEE, 0x10, 0xE0, 0x80, 0xE5, + 0x10, 0xEF, 0x11, 0xEE, 0x14, 0xE0, 0x80, 0xE5, 0x0C, 0x01, 0x00, 0xEB, 0x28, 0x00, 0x9F, 0xE5, + 0x00, 0xD0, 0x90, 0xE5, 0x04, 0xE0, 0x90, 0xE5, 0x14, 0x10, 0x90, 0xE5, 0x10, 0x1F, 0x01, 0xEE, + 0x10, 0x10, 0x90, 0xE5, 0x10, 0x1F, 0x0C, 0xEE, 0x0C, 0x10, 0x90, 0xE5, 0x10, 0x1F, 0x01, 0xEE, + 0x08, 0x10, 0x90, 0xE5, 0x01, 0xF0, 0x29, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x48, 0xF7, 0x04, 0x00, + 0x01, 0x00, 0x50, 0xE1, 0x0E, 0xF0, 0xA0, 0x01, 0x11, 0x40, 0x2D, 0xE9, 0x04, 0x20, 0x52, 0xE2, + 0x29, 0x00, 0x00, 0xBA, 0x03, 0xC0, 0x10, 0xE2, 0x30, 0x00, 0x00, 0x1A, 0x03, 0xC0, 0x11, 0xE2, + 0x3A, 0x00, 0x00, 0x1A, 0x1C, 0x20, 0x52, 0xE2, 0xE0, 0x01, 0x2D, 0xE9, 0x0A, 0x00, 0x00, 0xBA, + 0x1F, 0xC0, 0x10, 0xE2, 0x20, 0x30, 0x6C, 0xE2, 0x02, 0x40, 0xD3, 0x10, 0x02, 0x00, 0x00, 0x2A, + 0x24, 0x40, 0x8F, 0xE2, 0x03, 0x20, 0x52, 0xE0, 0x0C, 0xF0, 0x84, 0xE0, 0xF8, 0x51, 0xB1, 0xE8, + 0x20, 0x20, 0x52, 0xE2, 0xF8, 0x51, 0xA0, 0xE8, 0xFB, 0xFF, 0xFF, 0xAA, 0x1C, 0xC0, 0x12, 0xE2, + 0x20, 0xC0, 0x6C, 0xE2, 0x0C, 0xF0, 0x8F, 0x10, 0x12, 0x00, 0x00, 0xEA, 0x00, 0xF0, 0x20, 0xE3, + 0x04, 0x30, 0x91, 0xE4, 0x04, 0x40, 0x91, 0xE4, 0x04, 0x50, 0x91, 0xE4, 0x04, 0x60, 0x91, 0xE4, + 0x04, 0x70, 0x91, 0xE4, 0x04, 0x80, 0x91, 0xE4, 0x04, 0xE0, 0x91, 0xE4, 0x0C, 0xF0, 0x8F, 0xE0, + 0x00, 0xF0, 0x20, 0xE3, 0x00, 0xF0, 0x20, 0xE3, 0x04, 0x30, 0x80, 0xE4, 0x04, 0x40, 0x80, 0xE4, + 0x04, 0x50, 0x80, 0xE4, 0x04, 0x60, 0x80, 0xE4, 0x04, 0x70, 0x80, 0xE4, 0x04, 0x80, 0x80, 0xE4, + 0x04, 0xE0, 0x80, 0xE4, 0xE4, 0xFF, 0xFF, 0x2A, 0xE0, 0x01, 0xBD, 0xE8, 0x82, 0x2F, 0xB0, 0xE1, + 0x01, 0x30, 0xD1, 0x14, 0x01, 0x40, 0xD1, 0x24, 0x01, 0xC0, 0xD1, 0x24, 0x01, 0x30, 0xC0, 0x14, + 0x01, 0x40, 0xC0, 0x24, 0x01, 0xC0, 0xC0, 0x24, 0x11, 0x40, 0xBD, 0xE8, 0x3E, 0xFF, 0x2F, 0xE1, + 0x04, 0xC0, 0x6C, 0xE2, 0x02, 0x00, 0x5C, 0xE3, 0x01, 0x30, 0xD1, 0xC4, 0x01, 0x40, 0xD1, 0xA4, + 0x01, 0xE0, 0xD1, 0xE4, 0x01, 0x30, 0xC0, 0xC4, 0x01, 0x40, 0xC0, 0xA4, 0x0C, 0x20, 0x52, 0xE0, + 0x01, 0xE0, 0xC0, 0xE4, 0xEC, 0xFF, 0xFF, 0xBA, 0x03, 0xC0, 0x11, 0xE2, 0xC4, 0xFF, 0xFF, 0x0A, + 0x03, 0x10, 0xC1, 0xE3, 0x02, 0x00, 0x5C, 0xE3, 0x04, 0xE0, 0x91, 0xE4, 0x2A, 0x00, 0x00, 0x0A, + 0x53, 0x00, 0x00, 0xCA, 0x1C, 0x20, 0x52, 0xE2, 0x1B, 0x00, 0x00, 0xBA, 0x1F, 0xC0, 0x10, 0xE2, + 0x20, 0xC0, 0x6C, 0xE2, 0x02, 0x40, 0xDC, 0x10, 0x0C, 0x20, 0x42, 0x30, 0x18, 0x00, 0x00, 0x3A, + 0xE0, 0x03, 0x2D, 0xE9, 0xF0, 0x00, 0xB1, 0xE8, 0x2E, 0x34, 0xA0, 0xE1, 0x20, 0x20, 0x52, 0xE2, + 0x00, 0x53, 0xB1, 0xE8, 0x04, 0x3C, 0x83, 0xE1, 0x24, 0x44, 0xA0, 0xE1, 0x05, 0x4C, 0x84, 0xE1, + 0x25, 0x54, 0xA0, 0xE1, 0x06, 0x5C, 0x85, 0xE1, 0x26, 0x64, 0xA0, 0xE1, 0x07, 0x6C, 0x86, 0xE1, + 0x27, 0x74, 0xA0, 0xE1, 0x08, 0x7C, 0x87, 0xE1, 0x28, 0x84, 0xA0, 0xE1, 0x09, 0x8C, 0x88, 0xE1, + 0x29, 0x94, 0xA0, 0xE1, 0x0C, 0x9C, 0x89, 0xE1, 0x2C, 0xC4, 0xA0, 0xE1, 0x0E, 0xCC, 0x8C, 0xE1, + 0xF8, 0x13, 0xA0, 0xE8, 0xEA, 0xFF, 0xFF, 0xAA, 0xE0, 0x03, 0xBD, 0xE8, 0x1C, 0xC0, 0x12, 0xE2, + 0x07, 0x00, 0x00, 0x0A, 0x2E, 0x34, 0xA0, 0xE1, 0x04, 0xE0, 0x91, 0xE4, 0x04, 0xC0, 0x5C, 0xE2, + 0x0E, 0x3C, 0x83, 0xE1, 0x04, 0x30, 0x80, 0xE4, 0xF9, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x52, 0xE3, + 0xDE, 0xFF, 0xFF, 0xAA, 0x03, 0x10, 0x41, 0xE2, 0xBB, 0xFF, 0xFF, 0xEA, 0x1C, 0x20, 0x52, 0xE2, + 0x1B, 0x00, 0x00, 0xBA, 0x1F, 0xC0, 0x10, 0xE2, 0x20, 0xC0, 0x6C, 0xE2, 0x02, 0x40, 0xDC, 0x10, + 0x0C, 0x20, 0x42, 0x30, 0x18, 0x00, 0x00, 0x3A, 0xE0, 0x03, 0x2D, 0xE9, 0xF0, 0x00, 0xB1, 0xE8, + 0x2E, 0x38, 0xA0, 0xE1, 0x20, 0x20, 0x52, 0xE2, 0x00, 0x53, 0xB1, 0xE8, 0x04, 0x38, 0x83, 0xE1, + 0x24, 0x48, 0xA0, 0xE1, 0x05, 0x48, 0x84, 0xE1, 0x25, 0x58, 0xA0, 0xE1, 0x06, 0x58, 0x85, 0xE1, + 0x26, 0x68, 0xA0, 0xE1, 0x07, 0x68, 0x86, 0xE1, 0x27, 0x78, 0xA0, 0xE1, 0x08, 0x78, 0x87, 0xE1, + 0x28, 0x88, 0xA0, 0xE1, 0x09, 0x88, 0x88, 0xE1, 0x29, 0x98, 0xA0, 0xE1, 0x0C, 0x98, 0x89, 0xE1, + 0x2C, 0xC8, 0xA0, 0xE1, 0x0E, 0xC8, 0x8C, 0xE1, 0xF8, 0x13, 0xA0, 0xE8, 0xEA, 0xFF, 0xFF, 0xAA, + 0xE0, 0x03, 0xBD, 0xE8, 0x1C, 0xC0, 0x12, 0xE2, 0x07, 0x00, 0x00, 0x0A, 0x2E, 0x38, 0xA0, 0xE1, + 0x04, 0xE0, 0x91, 0xE4, 0x04, 0xC0, 0x5C, 0xE2, 0x0E, 0x38, 0x83, 0xE1, 0x04, 0x30, 0x80, 0xE4, + 0xF9, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x52, 0xE3, 0xDE, 0xFF, 0xFF, 0xAA, 0x02, 0x10, 0x41, 0xE2, + 0x91, 0xFF, 0xFF, 0xEA, 0x1C, 0x20, 0x52, 0xE2, 0x1B, 0x00, 0x00, 0xBA, 0x1F, 0xC0, 0x10, 0xE2, + 0x20, 0xC0, 0x6C, 0xE2, 0x02, 0x40, 0xDC, 0x10, 0x0C, 0x20, 0x42, 0x30, 0x18, 0x00, 0x00, 0x3A, + 0xE0, 0x03, 0x2D, 0xE9, 0xF0, 0x00, 0xB1, 0xE8, 0x2E, 0x3C, 0xA0, 0xE1, 0x20, 0x20, 0x52, 0xE2, + 0x00, 0x53, 0xB1, 0xE8, 0x04, 0x34, 0x83, 0xE1, 0x24, 0x4C, 0xA0, 0xE1, 0x05, 0x44, 0x84, 0xE1, + 0x25, 0x5C, 0xA0, 0xE1, 0x06, 0x54, 0x85, 0xE1, 0x26, 0x6C, 0xA0, 0xE1, 0x07, 0x64, 0x86, 0xE1, + 0x27, 0x7C, 0xA0, 0xE1, 0x08, 0x74, 0x87, 0xE1, 0x28, 0x8C, 0xA0, 0xE1, 0x09, 0x84, 0x88, 0xE1, + 0x29, 0x9C, 0xA0, 0xE1, 0x0C, 0x94, 0x89, 0xE1, 0x2C, 0xCC, 0xA0, 0xE1, 0x0E, 0xC4, 0x8C, 0xE1, + 0xF8, 0x13, 0xA0, 0xE8, 0xEA, 0xFF, 0xFF, 0xAA, 0xE0, 0x03, 0xBD, 0xE8, 0x1C, 0xC0, 0x12, 0xE2, + 0x07, 0x00, 0x00, 0x0A, 0x2E, 0x3C, 0xA0, 0xE1, 0x04, 0xE0, 0x91, 0xE4, 0x04, 0xC0, 0x5C, 0xE2, + 0x0E, 0x34, 0x83, 0xE1, 0x04, 0x30, 0x80, 0xE4, 0xF9, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x52, 0xE3, + 0xDE, 0xFF, 0xFF, 0xAA, 0x01, 0x10, 0x41, 0xE2, 0x67, 0xFF, 0xFF, 0xEA, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x30, 0x10, 0xE2, 0x00, 0xC0, 0xA0, 0xE1, 0x2B, 0x00, 0x00, 0x1A, 0x01, 0x14, 0x81, 0xE1, + 0x01, 0x18, 0x81, 0xE1, 0x01, 0x30, 0xA0, 0xE1, 0x10, 0x00, 0x52, 0xE3, 0x1C, 0x00, 0x00, 0xBA, + 0xF0, 0x41, 0x2D, 0xE9, 0x01, 0x40, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x01, 0x60, 0xA0, 0xE1, + 0x01, 0x70, 0xA0, 0xE1, 0x01, 0x80, 0xA0, 0xE1, 0x01, 0xE0, 0xA0, 0xE1, 0x60, 0x00, 0x52, 0xE3, + 0x1F, 0x00, 0x1C, 0xC3, 0x08, 0x00, 0x00, 0xDA, 0x1F, 0x80, 0x0C, 0xE2, 0x20, 0x80, 0x68, 0xE2, + 0x08, 0x20, 0x42, 0xE0, 0x08, 0x8E, 0xB0, 0xE1, 0xF0, 0x00, 0xAC, 0x28, 0x30, 0x00, 0xAC, 0x48, + 0x01, 0x01, 0x18, 0xE3, 0x01, 0x80, 0xA0, 0xE1, 0x04, 0x10, 0x8C, 0x14, 0x40, 0x20, 0x52, 0xE2, + 0xFA, 0x41, 0xAC, 0xA8, 0xFA, 0x41, 0xAC, 0xA8, 0xFB, 0xFF, 0xFF, 0xCA, 0xF0, 0x81, 0xBD, 0x08, + 0x20, 0x00, 0x12, 0xE3, 0xFA, 0x41, 0xAC, 0x18, 0x10, 0x00, 0x12, 0xE3, 0xF0, 0x00, 0xAC, 0x18, + 0xF0, 0x41, 0xBD, 0xE8, 0x08, 0x00, 0x12, 0xE3, 0x0A, 0x00, 0xAC, 0x18, 0x04, 0x00, 0x12, 0xE3, + 0x04, 0x10, 0x8C, 0x14, 0x02, 0x00, 0x12, 0xE3, 0x01, 0x10, 0xCC, 0x14, 0x01, 0x10, 0xCC, 0x14, + 0x01, 0x00, 0x12, 0xE3, 0x01, 0x10, 0xCC, 0x14, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x20, 0x52, 0xE2, + 0xF7, 0xFF, 0xFF, 0xBA, 0x02, 0x00, 0x53, 0xE3, 0x01, 0x10, 0xCC, 0xB4, 0x01, 0x10, 0xCC, 0xD4, + 0x01, 0x10, 0xCC, 0xE4, 0x03, 0x20, 0x82, 0xE0, 0xCB, 0xFF, 0xFF, 0xEA, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x40, 0x2D, 0xE9, 0x58, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE3, 0x8C, 0xD0, 0x4D, 0xE2, + 0x14, 0x00, 0x8D, 0xE2, 0x10, 0x01, 0x00, 0xEB, 0x0D, 0x10, 0xA0, 0xE1, 0xEC, 0x50, 0x8F, 0xE2, + 0xD0, 0x40, 0xC5, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0x20, 0xA0, 0xE3, 0x72, 0x30, 0xA0, 0xE3, + 0xF8, 0x41, 0xCD, 0xE1, 0xF0, 0x24, 0xCD, 0xE1, 0xC6, 0x3F, 0xA0, 0xE3, 0x08, 0x20, 0xA0, 0xE3, + 0x00, 0x30, 0x8D, 0xE5, 0x07, 0x37, 0x00, 0xE3, 0x07, 0x37, 0x40, 0xE3, 0xF4, 0x20, 0xCD, 0xE1, + 0x0E, 0x2E, 0x00, 0xE3, 0x0D, 0x3D, 0x00, 0xE3, 0x0D, 0x3D, 0x40, 0xE3, 0x10, 0x20, 0x8D, 0xE5, + 0x01, 0x2A, 0xA0, 0xE3, 0x0C, 0x30, 0x8D, 0xE5, 0x34, 0x30, 0xA0, 0xE3, 0x20, 0x20, 0x8D, 0xE5, + 0x1B, 0x20, 0xA0, 0xE3, 0x28, 0x30, 0x8D, 0xE5, 0x33, 0x30, 0xA0, 0xE3, 0xFC, 0x22, 0xCD, 0xE1, + 0x03, 0x20, 0xA0, 0xE3, 0x07, 0x30, 0xA0, 0xE3, 0x34, 0x20, 0x8D, 0xE5, 0x4C, 0x30, 0x8D, 0xE5, + 0x26, 0x20, 0xA0, 0xE3, 0x06, 0x36, 0x00, 0xE3, 0x06, 0x36, 0x40, 0xE3, 0xF8, 0x25, 0xCD, 0xE1, + 0x04, 0x24, 0x00, 0xE3, 0x04, 0x24, 0x40, 0xE3, 0x03, 0x34, 0x00, 0xE3, 0x08, 0x3F, 0x41, 0xE3, + 0xF0, 0x26, 0xCD, 0xE1, 0x01, 0x21, 0x00, 0xE3, 0x01, 0x28, 0x44, 0xE3, 0x33, 0x33, 0x03, 0xE3, + 0x27, 0x30, 0x40, 0xE3, 0xFC, 0x26, 0xCD, 0xE1, 0x23, 0x29, 0x01, 0xE3, 0x1F, 0x24, 0x42, 0xE3, + 0x13, 0x33, 0x01, 0xE3, 0x15, 0x34, 0x41, 0xE3, 0xF4, 0x27, 0xCD, 0xE1, 0x24, 0x2D, 0x01, 0xE3, + 0x08, 0x20, 0x40, 0xE3, 0x1F, 0x31, 0x02, 0xE3, 0x23, 0x30, 0x42, 0xE3, 0xFC, 0x27, 0xCD, 0xE1, + 0x8F, 0x12, 0x00, 0xFA, 0x00, 0x10, 0xA0, 0xE1, 0xC0, 0x06, 0x0D, 0xE3, 0x04, 0x00, 0x40, 0xE3, + 0xC7, 0x00, 0x00, 0xEB, 0x8C, 0xD0, 0x8D, 0xE2, 0x30, 0x80, 0xBD, 0xE8, 0x00, 0xF0, 0x20, 0xE3, + 0x0C, 0x05, 0x0A, 0x0D, 0xEA, 0x30, 0x00, 0x00, 0x00, 0x10, 0xA0, 0xE1, 0x10, 0x40, 0x2D, 0xE9, + 0xE4, 0x06, 0x0D, 0xE3, 0x04, 0x00, 0x40, 0xE3, 0xBD, 0x00, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, + 0x10, 0x80, 0xBD, 0xE8, 0x00, 0xC0, 0xD0, 0xE5, 0x00, 0x00, 0x5C, 0xE3, 0x7E, 0x00, 0x00, 0x0A, + 0xF0, 0x4F, 0x2D, 0xE9, 0x00, 0x20, 0xA0, 0xE1, 0x01, 0x80, 0xA0, 0xE1, 0x24, 0xD0, 0x4D, 0xE2, + 0x05, 0x44, 0xA0, 0xE3, 0x0D, 0x60, 0xA0, 0xE3, 0x25, 0x00, 0x5C, 0xE3, 0x12, 0x00, 0x00, 0x0A, + 0x0A, 0x00, 0x5C, 0xE3, 0x02, 0x50, 0xA0, 0x11, 0x04, 0x00, 0x00, 0x1A, 0x14, 0x30, 0x94, 0xE5, + 0x40, 0x00, 0x13, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, 0x02, 0x50, 0xA0, 0xE1, 0x00, 0x60, 0x84, 0xE5, + 0x14, 0x30, 0x94, 0xE5, 0x40, 0x00, 0x13, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, 0x00, 0xC0, 0x84, 0xE5, + 0x01, 0xC0, 0xD5, 0xE5, 0x01, 0x20, 0x85, 0xE2, 0x00, 0x00, 0x5C, 0xE3, 0xED, 0xFF, 0xFF, 0x1A, + 0x00, 0x00, 0xA0, 0xE3, 0x24, 0xD0, 0x8D, 0xE2, 0xF0, 0x8F, 0xBD, 0xE8, 0x01, 0xA0, 0xD2, 0xE5, + 0x01, 0x50, 0x82, 0xE2, 0x00, 0xB0, 0xA0, 0xE3, 0x30, 0x30, 0x4A, 0xE2, 0x73, 0x10, 0xEF, 0xE6, + 0x09, 0x00, 0x51, 0xE3, 0x54, 0x00, 0x00, 0x9A, 0x78, 0x00, 0x5A, 0xE3, 0x64, 0x00, 0x5A, 0x13, + 0x15, 0x00, 0x00, 0x0A, 0x73, 0x00, 0x5A, 0xE3, 0x59, 0x00, 0x00, 0x1A, 0x04, 0x10, 0x98, 0xE4, + 0x00, 0x20, 0xD1, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0xE8, 0xFF, 0xFF, 0x0A, 0x0A, 0x00, 0x52, 0xE3, + 0x08, 0x00, 0x00, 0x0A, 0x14, 0x30, 0x94, 0xE5, 0x40, 0x00, 0x13, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, + 0x00, 0x20, 0x84, 0xE5, 0x01, 0x20, 0xF1, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0xDF, 0xFF, 0xFF, 0x0A, + 0x0A, 0x00, 0x52, 0xE3, 0xF6, 0xFF, 0xFF, 0x1A, 0x14, 0x30, 0x94, 0xE5, 0x40, 0x00, 0x13, 0xE3, + 0xFC, 0xFF, 0xFF, 0x0A, 0x00, 0x60, 0x84, 0xE5, 0xF1, 0xFF, 0xFF, 0xEA, 0x0D, 0x70, 0xA0, 0xE1, + 0x20, 0x20, 0xA0, 0xE3, 0x07, 0x00, 0xA0, 0xE1, 0x02, 0x10, 0xA0, 0xE1, 0x04, 0x90, 0x98, 0xE4, + 0x85, 0x00, 0x00, 0xEB, 0x78, 0x00, 0x5A, 0xE3, 0x07, 0xC0, 0xA0, 0xE1, 0x00, 0xA0, 0xA0, 0xE3, + 0x0A, 0x10, 0xA0, 0x13, 0x10, 0x10, 0xA0, 0x03, 0x05, 0x00, 0x00, 0xEA, 0x57, 0x20, 0x82, 0xE2, + 0x09, 0x00, 0x51, 0xE1, 0x01, 0x20, 0xCC, 0xE4, 0x0D, 0x00, 0x00, 0x8A, 0x00, 0x90, 0xA0, 0xE1, + 0x03, 0xA0, 0xA0, 0xE1, 0x19, 0xF1, 0x30, 0xE7, 0x01, 0x30, 0x8A, 0xE2, 0x03, 0xE0, 0xA0, 0xE1, + 0x91, 0x90, 0x62, 0xE0, 0x09, 0x00, 0x52, 0xE3, 0xF3, 0xFF, 0xFF, 0x8A, 0x01, 0x30, 0x8A, 0xE2, + 0x30, 0x20, 0x82, 0xE2, 0x09, 0x00, 0x51, 0xE1, 0x03, 0xE0, 0xA0, 0xE1, 0x01, 0x20, 0xCC, 0xE4, + 0xF1, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x5B, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x1F, 0x00, 0x5B, 0xE3, + 0x0B, 0xE0, 0xA0, 0xB1, 0x1F, 0xE0, 0xA0, 0xA3, 0x0E, 0x00, 0x53, 0xE1, 0x03, 0xE0, 0xA0, 0xA1, + 0x0E, 0x30, 0xA0, 0xE1, 0x20, 0x20, 0x8E, 0xE2, 0x02, 0xE0, 0x8D, 0xE0, 0x03, 0x20, 0x87, 0xE0, + 0x00, 0x30, 0xA0, 0xE3, 0x20, 0x30, 0x4E, 0xE5, 0x01, 0x10, 0x72, 0xE5, 0x0A, 0x00, 0x51, 0xE3, + 0x08, 0x00, 0x00, 0x0A, 0x14, 0x30, 0x94, 0xE5, 0x40, 0x00, 0x13, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, + 0x02, 0x00, 0x57, 0xE1, 0x00, 0x10, 0x84, 0xE5, 0xA4, 0xFF, 0xFF, 0x0A, 0x01, 0x10, 0x72, 0xE5, + 0x0A, 0x00, 0x51, 0xE3, 0xF6, 0xFF, 0xFF, 0x1A, 0x14, 0x30, 0x94, 0xE5, 0x40, 0x00, 0x13, 0xE3, + 0xFC, 0xFF, 0xFF, 0x0A, 0x00, 0x60, 0x84, 0xE5, 0xF1, 0xFF, 0xFF, 0xEA, 0x0A, 0x00, 0xA0, 0xE3, + 0x01, 0xA0, 0xF5, 0xE5, 0x90, 0x3B, 0x2B, 0xE0, 0x30, 0x30, 0x4A, 0xE2, 0x73, 0x10, 0xEF, 0xE6, + 0x09, 0x00, 0x51, 0xE3, 0xF9, 0xFF, 0xFF, 0x9A, 0xA2, 0xFF, 0xFF, 0xEA, 0x00, 0x00, 0xA0, 0xE3, + 0x1E, 0xFF, 0x2F, 0xE1, 0x02, 0x10, 0x45, 0xE0, 0x00, 0x00, 0x51, 0xE3, 0x01, 0x20, 0x42, 0xC2, + 0x01, 0x10, 0x82, 0xC0, 0x08, 0x00, 0x00, 0xDA, 0x01, 0x00, 0xF2, 0xE5, 0x0A, 0x00, 0x50, 0xE3, + 0x0A, 0x00, 0x00, 0x0A, 0x14, 0x30, 0x94, 0xE5, 0x40, 0x00, 0x13, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, + 0x02, 0x00, 0x51, 0xE1, 0x00, 0x00, 0x84, 0xE5, 0xF6, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x5A, 0xE3, + 0x7E, 0xFF, 0xFF, 0x0A, 0x05, 0x20, 0xA0, 0xE1, 0x0A, 0xC0, 0xA0, 0xE1, 0x73, 0xFF, 0xFF, 0xEA, + 0x14, 0x30, 0x94, 0xE5, 0x40, 0x00, 0x13, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, 0x00, 0x60, 0x84, 0xE5, + 0xEF, 0xFF, 0xFF, 0xEA, 0x05, 0x24, 0xA0, 0xE3, 0x14, 0x30, 0x92, 0xE5, 0x40, 0x00, 0x13, 0xE3, + 0xFC, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x82, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x0A, 0x00, 0x50, 0xE3, + 0x05, 0x00, 0x00, 0x0A, 0x05, 0x24, 0xA0, 0xE3, 0x14, 0x30, 0x92, 0xE5, 0x40, 0x00, 0x13, 0xE3, + 0xFC, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x82, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x05, 0x24, 0xA0, 0xE3, + 0x14, 0x30, 0x92, 0xE5, 0x40, 0x00, 0x13, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, 0x0D, 0x30, 0xA0, 0xE3, + 0x00, 0x30, 0x82, 0xE5, 0xF2, 0xFF, 0xFF, 0xEA, 0x0F, 0x00, 0x2D, 0xE9, 0x04, 0xE0, 0x2D, 0xE5, + 0x0C, 0xD0, 0x4D, 0xE2, 0x14, 0x10, 0x8D, 0xE2, 0x10, 0x00, 0x9D, 0xE5, 0x04, 0x10, 0x8D, 0xE5, + 0x47, 0xFF, 0xFF, 0xEB, 0x0C, 0xD0, 0x8D, 0xE2, 0x04, 0xE0, 0x9D, 0xE4, 0x10, 0xD0, 0x8D, 0xE2, + 0x1E, 0xFF, 0x2F, 0xE1, 0x0F, 0x00, 0x2D, 0xE9, 0x00, 0x07, 0x0D, 0xE3, 0x04, 0x00, 0x40, 0xE3, + 0x04, 0xE0, 0x2D, 0xE5, 0x0C, 0xD0, 0x4D, 0xE2, 0xEE, 0xFF, 0xFF, 0xEB, 0x14, 0x10, 0x8D, 0xE2, + 0x10, 0x00, 0x9D, 0xE5, 0x04, 0x10, 0x8D, 0xE5, 0x39, 0xFF, 0xFF, 0xEB, 0x0C, 0xD0, 0x8D, 0xE2, + 0x04, 0xE0, 0x9D, 0xE4, 0x10, 0xD0, 0x8D, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1, 0xA0, 0x33, 0x08, 0xE3, + 0x04, 0x30, 0x40, 0xE3, 0x13, 0xFF, 0x2F, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x80, 0x30, 0x08, 0xE3, + 0x04, 0x30, 0x40, 0xE3, 0x13, 0xFF, 0x2F, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3, + 0x1E, 0xFF, 0x2F, 0xE1, 0x0E, 0x1F, 0x53, 0xEC, 0x18, 0x20, 0xA0, 0xE3, 0x92, 0x00, 0x00, 0xE0, + 0x00, 0x10, 0x91, 0xE0, 0x00, 0x00, 0xA3, 0xE2, 0x0E, 0x2F, 0x53, 0xEC, 0x02, 0x00, 0x51, 0xE1, + 0x03, 0x30, 0xD0, 0xE0, 0xFB, 0xFF, 0xFF, 0x2A, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9, + 0x0E, 0x0F, 0x51, 0xEC, 0xC0, 0x2D, 0x05, 0xE3, 0x00, 0x30, 0xA0, 0xE3, 0xE7, 0x12, 0x00, 0xEB, + 0x10, 0x80, 0xBD, 0xE8, 0x80, 0xEA, 0x01, 0x20, 0x08, 0x23, 0x48, 0xF2, 0x05, 0x01, 0x42, 0x00, + 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x04, 0x92, 0xB2, 0x4C, 0xBF, 0x82, 0xEA, 0x01, 0x00, 0x10, 0x46, + 0x00, 0x2B, 0xF4, 0xD1, 0x70, 0x47, 0x38, 0xB5, 0x0D, 0x46, 0x04, 0x46, 0x2C, 0x44, 0xFF, 0xF7, + 0xE9, 0xFF, 0x44, 0xEA, 0x00, 0x40, 0x38, 0xBD, 0x82, 0xB0, 0x00, 0x23, 0x01, 0x93, 0x1F, 0x4B, + 0x1B, 0x68, 0x9B, 0xB2, 0x01, 0x93, 0x01, 0x9B, 0xB3, 0xF5, 0xA8, 0x4F, 0x2C, 0xD0, 0x11, 0xDC, + 0xB3, 0xF5, 0x10, 0x5F, 0x2C, 0xD0, 0x05, 0xDC, 0xB3, 0xF5, 0x00, 0x5F, 0x1E, 0xD0, 0x00, 0x20, + 0x02, 0xB0, 0x70, 0x47, 0xB3, 0xF5, 0x30, 0x5F, 0x20, 0xD0, 0xB3, 0xF5, 0xA0, 0x4F, 0xF6, 0xD1, + 0x01, 0x21, 0x14, 0xE0, 0xB3, 0xF5, 0xD8, 0x4F, 0x14, 0xD0, 0x07, 0xDC, 0xB3, 0xF5, 0xB8, 0x4F, + 0x1A, 0xD0, 0xB3, 0xF5, 0xBA, 0x4F, 0xEA, 0xD1, 0x09, 0x21, 0x08, 0xE0, 0xB3, 0xF5, 0xE8, 0x4F, + 0x10, 0xD0, 0xB3, 0xF5, 0xF8, 0x4F, 0xE2, 0xD1, 0x04, 0x21, 0x00, 0xE0, 0x0A, 0x21, 0x02, 0xB0, + 0xFF, 0xF7, 0xC1, 0xBF, 0x08, 0x21, 0xFA, 0xE7, 0x07, 0x21, 0xF8, 0xE7, 0x06, 0x21, 0xF6, 0xE7, + 0x05, 0x21, 0xF4, 0xE7, 0x03, 0x21, 0xF2, 0xE7, 0x02, 0x21, 0xF0, 0xE7, 0x00, 0x62, 0x00, 0x03, + 0x70, 0x00, 0x60, 0xE1, 0x0E, 0xF0, 0xA0, 0xE1, 0x70, 0x00, 0x60, 0xE1, 0x0E, 0xF0, 0xA0, 0xE1, + 0xF8, 0x5F, 0x2D, 0xE9, 0x50, 0xC2, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0x30, 0xA0, 0xE1, 0x40, 0xC2, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0x40, 0xA0, 0xE1, 0x30, 0xC2, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0x50, 0xA0, 0xE1, 0x20, 0xC2, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0x60, 0xA0, 0xE1, 0x10, 0xC2, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0x70, 0xA0, 0xE1, 0x00, 0xC2, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0x80, 0xA0, 0xE1, 0xF0, 0xC1, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0x90, 0xA0, 0xE1, 0xE0, 0xC1, 0x9F, 0xE5, 0x9C, 0x02, 0x02, 0xE0, 0x01, 0x20, 0x82, 0xE2, + 0x02, 0xA0, 0xA0, 0xE1, 0xF8, 0x07, 0xA0, 0xE8, 0x01, 0x00, 0x50, 0xE1, 0xDC, 0xFF, 0xFF, 0x1A, + 0xF8, 0x9F, 0xBD, 0xE8, 0x51, 0x0F, 0x11, 0xEE, 0x03, 0x0B, 0x80, 0xE3, 0x51, 0x0F, 0x01, 0xEE, + 0x0F, 0x06, 0xA0, 0xE3, 0x50, 0x0F, 0x01, 0xEE, 0x01, 0x31, 0xA0, 0xE3, 0x10, 0x3A, 0xE8, 0xEE, + 0x1E, 0xFF, 0x2F, 0xE1, 0xF8, 0x5F, 0x2D, 0xE9, 0x00, 0x20, 0x82, 0xE0, 0x10, 0x0B, 0xB0, 0xEC, + 0x10, 0x8B, 0xB1, 0xEC, 0x58, 0x01, 0x40, 0xF3, 0x5A, 0x21, 0x42, 0xF3, 0x5C, 0x41, 0x44, 0xF3, + 0x5E, 0x61, 0x46, 0xF3, 0xF2, 0x81, 0x60, 0xF2, 0xF4, 0xA1, 0x66, 0xF2, 0xFA, 0xC1, 0x68, 0xF2, + 0xBD, 0xE1, 0x6C, 0xF2, 0x3E, 0x4B, 0x55, 0xEC, 0x05, 0x60, 0x84, 0xE1, 0x00, 0x00, 0x56, 0xE3, + 0x03, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x50, 0xE1, 0xEF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0xA0, 0xE3, + 0xF8, 0x9F, 0xBD, 0xE8, 0x06, 0x00, 0xA0, 0xE1, 0xF8, 0x9F, 0xBD, 0xE8, 0xF8, 0x5F, 0x2D, 0xE9, + 0x02, 0x30, 0xE0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0x02, 0x50, 0xE0, 0xE1, 0x10, 0x3B, 0x42, 0xEC, + 0x11, 0x5B, 0x44, 0xEC, 0x50, 0x21, 0x20, 0xF2, 0x50, 0x41, 0x20, 0xF2, 0x50, 0x61, 0x20, 0xF2, + 0x50, 0x81, 0x20, 0xF2, 0x50, 0xA1, 0x20, 0xF2, 0x50, 0xC1, 0x20, 0xF2, 0x50, 0xE1, 0x20, 0xF2, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, + 0x01, 0x00, 0x50, 0xE1, 0xED, 0xFF, 0xFF, 0x1A, 0xF8, 0x9F, 0xBD, 0xE8, 0xF0, 0x5F, 0x2D, 0xE9, + 0x02, 0x40, 0xA0, 0xE1, 0x03, 0x50, 0xA0, 0xE1, 0x10, 0x3B, 0x42, 0xEC, 0x11, 0x5B, 0x44, 0xEC, + 0x50, 0x21, 0x20, 0xF2, 0x50, 0x41, 0x20, 0xF2, 0x50, 0x61, 0x20, 0xF2, 0x50, 0x81, 0x20, 0xF2, + 0x50, 0xA1, 0x20, 0xF2, 0x50, 0xC1, 0x20, 0xF2, 0x50, 0xE1, 0x20, 0xF2, 0x20, 0x0B, 0xA0, 0xEC, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, + 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x20, 0x0B, 0xA0, 0xEC, 0x01, 0x00, 0x50, 0xE1, + 0xED, 0xFF, 0xFF, 0x1A, 0xF0, 0x9F, 0xBD, 0xE8, 0xF8, 0x5F, 0x2D, 0xE9, 0x00, 0x20, 0x82, 0xE0, + 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, + 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, + 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, + 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, 0x20, 0x0B, 0xB0, 0xEC, 0x20, 0x0B, 0xA1, 0xEC, + 0x02, 0x00, 0x50, 0xE1, 0xED, 0xFF, 0xFF, 0x1A, 0xF8, 0x9F, 0xBD, 0xE8, 0x35, 0x4E, 0x5A, 0x01, + 0x01, 0x4B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x8A, 0x04, 0x00, 0x01, 0x4B, 0x18, 0x47, + 0x70, 0x47, 0x00, 0xBF, 0x08, 0x8A, 0x04, 0x00, 0x01, 0x4B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, + 0x10, 0x8A, 0x04, 0x00, 0x01, 0x4B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, 0xA4, 0x8A, 0x04, 0x00, + 0x01, 0x4B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, 0xC4, 0x8A, 0x04, 0x00, 0x01, 0x4B, 0x18, 0x47, + 0x70, 0x47, 0x00, 0xBF, 0x1C, 0x8B, 0x04, 0x00, 0x01, 0x4B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, + 0x9C, 0x8B, 0x04, 0x00, 0x01, 0x4B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x8C, 0x04, 0x00, + 0x10, 0xB5, 0x14, 0x46, 0x1A, 0x46, 0x02, 0x9B, 0x2B, 0xB1, 0xFF, 0xF7, 0xE1, 0xFF, 0x00, 0x30, + 0x18, 0xBF, 0x01, 0x20, 0x10, 0xBD, 0xE4, 0x00, 0xFF, 0xF7, 0xDA, 0xFF, 0xE0, 0x40, 0xC0, 0xB2, + 0xF5, 0xE7, 0x00, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x84, 0x46, 0x5E, 0x4C, 0x0F, 0x46, 0x16, 0x46, + 0x8F, 0xB0, 0x08, 0xAD, 0x0D, 0xF1, 0x20, 0x0A, 0x0F, 0xCC, 0x0F, 0xC5, 0x94, 0xE8, 0x03, 0x00, + 0x85, 0xE8, 0x03, 0x00, 0xBC, 0xF1, 0x00, 0x0F, 0x49, 0xD0, 0x4F, 0xEA, 0x5C, 0x05, 0x0C, 0xF1, + 0x80, 0x44, 0x08, 0x34, 0x05, 0xF1, 0x80, 0x45, 0x0C, 0x35, 0x03, 0x2E, 0x02, 0xD9, 0x07, 0x2E, + 0x40, 0xD8, 0x04, 0x3E, 0x4F, 0xF0, 0x00, 0x08, 0xEB, 0x19, 0x4F, 0xF0, 0x00, 0x09, 0x04, 0x93, + 0x07, 0xF1, 0x80, 0x43, 0x05, 0x93, 0x5A, 0xF8, 0x29, 0xB0, 0x28, 0x46, 0x04, 0x99, 0x5A, 0x46, + 0xFF, 0xF7, 0xAC, 0xFF, 0x5A, 0x46, 0x05, 0x99, 0x4F, 0xF0, 0x80, 0x40, 0xFF, 0xF7, 0xA6, 0xFF, + 0x3A, 0x46, 0x21, 0x46, 0x4F, 0xF0, 0x80, 0x40, 0xFF, 0xF7, 0xAC, 0xFF, 0x18, 0x9B, 0x32, 0x46, + 0x29, 0x46, 0x20, 0x46, 0x00, 0x93, 0x3B, 0x46, 0xFF, 0xF7, 0xAA, 0xFF, 0x03, 0x90, 0x00, 0x28, + 0x73, 0xD1, 0x09, 0xF1, 0x01, 0x09, 0xB9, 0xF1, 0x06, 0x0F, 0xDC, 0xD1, 0xF3, 0x00, 0x4F, 0xF0, + 0x01, 0x09, 0x07, 0x93, 0x08, 0x33, 0x43, 0x44, 0x4F, 0xEA, 0xC6, 0x08, 0x06, 0x93, 0x06, 0x9B, + 0x43, 0x45, 0x0F, 0xD8, 0x4F, 0xF0, 0x00, 0x0A, 0xDD, 0xF8, 0x1C, 0x90, 0x50, 0xE0, 0x32, 0x4C, + 0x32, 0x4D, 0xBA, 0xE7, 0x08, 0x2E, 0x01, 0xD0, 0x00, 0x26, 0xBB, 0xE7, 0x4F, 0xF0, 0x18, 0x08, + 0x00, 0x26, 0xB9, 0xE7, 0x09, 0xFA, 0x08, 0xFA, 0x04, 0x99, 0x28, 0x46, 0x52, 0x46, 0xFF, 0xF7, + 0x6D, 0xFF, 0x52, 0x46, 0x05, 0x99, 0x4F, 0xF0, 0x80, 0x40, 0xFF, 0xF7, 0x67, 0xFF, 0x3A, 0x46, + 0x21, 0x46, 0x4F, 0xF0, 0x80, 0x40, 0xFF, 0xF7, 0x6D, 0xFF, 0x18, 0x9B, 0x32, 0x46, 0x29, 0x46, + 0x20, 0x46, 0x00, 0x93, 0x3B, 0x46, 0xFF, 0xF7, 0x6B, 0xFF, 0xA8, 0xBB, 0x08, 0xF1, 0x01, 0x08, + 0xCD, 0xE7, 0x01, 0x23, 0x03, 0xFA, 0x09, 0xFB, 0xBA, 0xF1, 0x00, 0x0F, 0x29, 0xD1, 0x6F, 0xEA, + 0x0B, 0x08, 0xD3, 0x46, 0x5B, 0x46, 0x42, 0x46, 0x04, 0x99, 0x28, 0x46, 0xFF, 0xF7, 0x4C, 0xFF, + 0x5B, 0x46, 0x42, 0x46, 0x05, 0x99, 0x4F, 0xF0, 0x80, 0x40, 0xFF, 0xF7, 0x45, 0xFF, 0x3A, 0x46, + 0x21, 0x46, 0x4F, 0xF0, 0x80, 0x40, 0xFF, 0xF7, 0x45, 0xFF, 0x18, 0x9B, 0x32, 0x46, 0x29, 0x46, + 0x20, 0x46, 0x00, 0x93, 0x3B, 0x46, 0xFF, 0xF7, 0x43, 0xFF, 0x68, 0xB9, 0x09, 0xF1, 0x01, 0x09, + 0x06, 0x9B, 0x4B, 0x45, 0xD5, 0xD8, 0xBA, 0xF1, 0x00, 0x0F, 0x06, 0xD1, 0x4F, 0xF0, 0x01, 0x0A, + 0xA2, 0xE7, 0x4F, 0xF0, 0xFF, 0x38, 0xD5, 0xE7, 0x03, 0x90, 0x03, 0x98, 0x0F, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x00, 0xBF, 0x14, 0xD7, 0x04, 0x00, 0x08, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x50, + 0x2D, 0xE9, 0xF0, 0x41, 0x4F, 0xF0, 0x01, 0x34, 0xDF, 0xF8, 0x3C, 0xC0, 0x62, 0x43, 0x00, 0x24, + 0x09, 0x1A, 0xDF, 0xF8, 0x38, 0xE0, 0x25, 0x46, 0x94, 0x42, 0x05, 0xD1, 0xD8, 0x00, 0x25, 0xFA, + 0x00, 0xF0, 0xC0, 0xB2, 0xBD, 0xE8, 0xF0, 0x81, 0x0F, 0x58, 0x04, 0xEB, 0x0C, 0x06, 0x50, 0xF8, + 0x04, 0x8B, 0x7E, 0x40, 0x04, 0xEB, 0x0E, 0x07, 0x87, 0xEA, 0x08, 0x07, 0x04, 0xF1, 0x01, 0x34, + 0x3E, 0x43, 0x35, 0x43, 0xE8, 0xE7, 0x00, 0xBF, 0x98, 0xBA, 0xDC, 0xFE, 0x67, 0x45, 0x23, 0x01, + 0x70, 0xB5, 0x05, 0x46, 0x00, 0x20, 0x03, 0x46, 0x93, 0x42, 0x00, 0xD1, 0x70, 0xBD, 0x55, 0xF8, + 0x23, 0x40, 0x51, 0xF8, 0x23, 0x60, 0x01, 0x33, 0x74, 0x40, 0x20, 0x43, 0xF4, 0xE7, 0x00, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0xAD, 0xF6, 0x34, 0x5D, 0x04, 0x46, 0x50, 0x22, 0x00, 0x21, 0x34, 0xA8, + 0xFF, 0xF7, 0xEC, 0xEC, 0x50, 0x22, 0x00, 0x21, 0x48, 0xA8, 0x18, 0xAD, 0xFF, 0xF7, 0xE6, 0xEC, + 0x4F, 0xF4, 0x00, 0x62, 0x00, 0x21, 0x0D, 0xF5, 0xA6, 0x60, 0xDF, 0xF8, 0x40, 0x83, 0xFF, 0xF7, + 0xDE, 0xEC, 0x40, 0x22, 0x00, 0x21, 0x24, 0xA8, 0xDF, 0xF8, 0x34, 0xA3, 0xFF, 0xF7, 0xD6, 0xEC, + 0x4F, 0xF4, 0x70, 0x72, 0x00, 0x21, 0x5C, 0xA8, 0xC1, 0x46, 0xFF, 0xF7, 0xD0, 0xEC, 0x20, 0x22, + 0x00, 0x21, 0x1C, 0xA8, 0xFF, 0xF7, 0xCA, 0xEC, 0xBA, 0x4B, 0xE7, 0x6E, 0x26, 0x68, 0x0F, 0xCB, + 0x85, 0xE8, 0x0F, 0x00, 0xA3, 0x6F, 0x0D, 0x93, 0x63, 0x69, 0x14, 0x93, 0xA3, 0x6E, 0x11, 0x93, + 0x4F, 0xF4, 0xB4, 0x73, 0x23, 0x60, 0x48, 0xF6, 0x88, 0x03, 0x63, 0x61, 0x3B, 0x0C, 0x1B, 0x04, + 0xE3, 0x66, 0x63, 0x68, 0x08, 0x2B, 0x4F, 0xF0, 0x00, 0x03, 0x0A, 0xBF, 0x4F, 0xF0, 0x10, 0x32, + 0x23, 0x67, 0x22, 0x67, 0x63, 0x67, 0x20, 0x46, 0x03, 0xF0, 0xD4, 0xFC, 0xA3, 0x6F, 0x83, 0x46, + 0xD8, 0x07, 0x09, 0xD4, 0x20, 0x46, 0x03, 0xF0, 0xFB, 0xFD, 0x05, 0x46, 0x20, 0x46, 0x03, 0xF0, + 0xC9, 0xFC, 0x28, 0x40, 0x0B, 0xEA, 0x00, 0x0B, 0x20, 0x46, 0x01, 0x25, 0x00, 0xF0, 0xD0, 0xFF, + 0x40, 0x08, 0x4F, 0xF4, 0x00, 0x41, 0x2B, 0x46, 0x00, 0x05, 0x08, 0x22, 0xC8, 0xF8, 0x00, 0x00, + 0x00, 0x95, 0xFF, 0xF7, 0x97, 0xFE, 0x00, 0x28, 0x14, 0xBF, 0x4F, 0xF0, 0x00, 0x0B, 0x0B, 0xF0, + 0x01, 0x0B, 0x61, 0x69, 0xBB, 0xF1, 0x00, 0x0F, 0x13, 0xD1, 0x50, 0x46, 0xFF, 0xF7, 0x62, 0xEC, + 0x61, 0x69, 0x01, 0xF5, 0x08, 0x53, 0x22, 0x33, 0xB3, 0xF5, 0x80, 0x3F, 0x63, 0x61, 0xCA, 0xD3, + 0x91, 0x48, 0xFF, 0xF7, 0x58, 0xEC, 0x10, 0x95, 0x10, 0x98, 0x0D, 0xF6, 0x34, 0x5D, 0xBD, 0xE8, + 0xF0, 0x8F, 0x8E, 0x48, 0xFF, 0xF7, 0x4E, 0xEC, 0xE3, 0x69, 0x4F, 0xF0, 0x80, 0x42, 0xD9, 0xF8, + 0x00, 0x10, 0xDF, 0xF8, 0x50, 0xC2, 0x13, 0xF0, 0x01, 0x0F, 0x89, 0x48, 0x0C, 0xBF, 0x04, 0x23, + 0x02, 0x23, 0x0C, 0x93, 0x01, 0xF1, 0x80, 0x43, 0x0C, 0x33, 0x0C, 0x31, 0x08, 0x93, 0x85, 0x4B, + 0x13, 0x60, 0x03, 0xEB, 0x0C, 0x05, 0x03, 0xF1, 0x01, 0x33, 0x8D, 0x50, 0x83, 0x42, 0x02, 0xF1, + 0x04, 0x02, 0xF5, 0xD1, 0x14, 0x9B, 0x31, 0x46, 0x26, 0x60, 0xE7, 0x66, 0x63, 0x61, 0x7E, 0x48, + 0xFF, 0xF7, 0x28, 0xEC, 0xA3, 0x6F, 0xC3, 0xF3, 0x41, 0x62, 0x0A, 0x92, 0x00, 0x2A, 0x00, 0xF0, + 0xA9, 0x80, 0x62, 0x68, 0x03, 0x2A, 0x00, 0xF0, 0x81, 0x80, 0x04, 0x2A, 0x00, 0xF0, 0x87, 0x80, + 0x07, 0x2A, 0x00, 0xF0, 0x8D, 0x80, 0x08, 0x2A, 0x00, 0xF0, 0x93, 0x80, 0xFC, 0x22, 0x0F, 0x92, + 0x00, 0x22, 0x05, 0x92, 0x0A, 0x92, 0x09, 0x92, 0x0C, 0x9A, 0x02, 0x2A, 0x0C, 0xBF, 0x5A, 0x46, + 0x02, 0x22, 0x0B, 0x92, 0x13, 0xF0, 0x00, 0x73, 0x00, 0xF0, 0x6C, 0x81, 0x6B, 0x48, 0x4F, 0xF0, + 0x01, 0x08, 0xFF, 0xF7, 0x00, 0xEC, 0x09, 0x9A, 0xFF, 0x23, 0x05, 0x9E, 0x03, 0xFA, 0x02, 0xF2, + 0xD2, 0x43, 0x07, 0x92, 0x0B, 0x9A, 0xD7, 0x00, 0x09, 0x9A, 0xBB, 0x40, 0x08, 0xFA, 0x07, 0xF7, + 0xDB, 0x43, 0x0E, 0x93, 0x04, 0x23, 0x93, 0x40, 0x10, 0x93, 0x05, 0x9B, 0x93, 0x40, 0x06, 0x93, + 0xA3, 0x6E, 0x20, 0x46, 0x07, 0x9A, 0x4F, 0xEA, 0xA6, 0x0A, 0x4F, 0xF0, 0x00, 0x09, 0x4D, 0x46, + 0x13, 0x40, 0x06, 0x9A, 0x13, 0x43, 0xA3, 0x66, 0x03, 0xF0, 0x24, 0xFC, 0x0D, 0xF5, 0xA6, 0x63, + 0x03, 0xEB, 0x4A, 0x1A, 0x63, 0x6F, 0x20, 0x46, 0x0E, 0x9A, 0x13, 0x40, 0x43, 0xEA, 0x09, 0x03, + 0x63, 0x67, 0x01, 0xF0, 0x93, 0xFB, 0x0B, 0x9B, 0x4F, 0xF4, 0x80, 0x72, 0x08, 0x99, 0x4F, 0xF0, + 0x80, 0x40, 0xFF, 0xF7, 0xB5, 0xFE, 0x00, 0x28, 0x54, 0xD0, 0x00, 0x23, 0x0A, 0xF8, 0x05, 0x30, + 0x01, 0x35, 0xB9, 0x44, 0x3F, 0x2D, 0xE5, 0xD1, 0x06, 0x9B, 0x04, 0x36, 0x10, 0x9A, 0x13, 0x44, + 0x06, 0x93, 0x0F, 0x9B, 0xB3, 0x42, 0xCB, 0xDA, 0x00, 0x25, 0x3E, 0x22, 0xA8, 0x46, 0x2F, 0x46, + 0x2E, 0x46, 0x0F, 0x9B, 0x4F, 0xF0, 0x00, 0x0C, 0xE2, 0x46, 0x98, 0x10, 0x0D, 0xF5, 0xA6, 0x61, + 0x01, 0xEB, 0x40, 0x10, 0x80, 0x5C, 0x01, 0x28, 0x37, 0xD1, 0xBC, 0xF1, 0x00, 0x0F, 0x00, 0xF0, + 0x83, 0x80, 0x05, 0x99, 0x99, 0x42, 0x41, 0xD1, 0x8C, 0x46, 0x34, 0xE0, 0xE0, 0x22, 0x0F, 0x92, + 0x30, 0x22, 0x05, 0x92, 0x40, 0xF2, 0xDC, 0x52, 0x0A, 0x92, 0x00, 0x22, 0x83, 0xE7, 0xF0, 0x22, + 0x0F, 0x92, 0x40, 0x22, 0x05, 0x92, 0x4F, 0xF4, 0x96, 0x62, 0x0A, 0x92, 0x08, 0x22, 0x7A, 0xE7, + 0xF0, 0x22, 0x0F, 0x92, 0x40, 0x22, 0x05, 0x92, 0x4F, 0xF4, 0x96, 0x62, 0x0A, 0x92, 0x10, 0x22, + 0x71, 0xE7, 0x90, 0x22, 0x0F, 0x92, 0x10, 0x22, 0x05, 0x92, 0x40, 0xF2, 0x4C, 0x42, 0x0A, 0x92, + 0x18, 0x22, 0x68, 0xE7, 0x0A, 0x9A, 0x0B, 0x92, 0x09, 0x92, 0xFC, 0x22, 0x0F, 0x92, 0x0A, 0x9A, + 0x05, 0x92, 0x67, 0xE7, 0x0A, 0xF8, 0x05, 0x80, 0xAA, 0xE7, 0x78, 0xB9, 0xBC, 0xF1, 0x01, 0x0F, + 0x0C, 0xD1, 0x03, 0xF1, 0x04, 0x0C, 0xAA, 0xEB, 0x0C, 0x0E, 0x0E, 0xF1, 0x04, 0x09, 0xC1, 0x45, + 0x04, 0xDD, 0x0E, 0xF1, 0x01, 0x08, 0x15, 0x46, 0x57, 0x46, 0x66, 0x46, 0x05, 0x99, 0x04, 0x3B, + 0x84, 0x46, 0x99, 0x42, 0xA9, 0xDD, 0x12, 0xF1, 0xFF, 0x32, 0xA2, 0xD2, 0x0A, 0x9B, 0x02, 0x95, + 0x0B, 0x99, 0x13, 0x48, 0x03, 0xFB, 0x08, 0xF2, 0x12, 0x4B, 0xA2, 0xFB, 0x03, 0x23, 0x32, 0x46, + 0xDB, 0x09, 0xCD, 0xE9, 0x00, 0x83, 0x3B, 0x46, 0xFF, 0xF7, 0x44, 0xEB, 0xB8, 0xF1, 0x0B, 0x0F, + 0x00, 0xF3, 0x8C, 0x80, 0x0C, 0x21, 0x0C, 0x48, 0xFF, 0xF7, 0x3C, 0xEB, 0xCD, 0xF8, 0x40, 0xB0, + 0xE2, 0xE6, 0x00, 0xBF, 0x2C, 0xD7, 0x04, 0x00, 0x44, 0xDB, 0x04, 0x00, 0x72, 0xDB, 0x04, 0x00, + 0x67, 0x46, 0x24, 0x02, 0x67, 0x45, 0x23, 0x01, 0x92, 0xDB, 0x04, 0x00, 0xA5, 0xDB, 0x04, 0x00, + 0xB1, 0xDB, 0x04, 0x00, 0x81, 0x80, 0x80, 0x80, 0xDC, 0xDB, 0x04, 0x00, 0x0C, 0xE7, 0x04, 0x00, + 0x1C, 0xDB, 0x04, 0x00, 0x31, 0x75, 0xB9, 0xFD, 0x9A, 0x46, 0xBF, 0xE7, 0xB3, 0x10, 0x09, 0xFB, + 0x03, 0xFC, 0x4F, 0xEA, 0x43, 0x1E, 0x05, 0xEB, 0x0E, 0x00, 0x40, 0x44, 0xAC, 0xEB, 0x08, 0x0C, + 0x10, 0xF8, 0x01, 0xA9, 0xBA, 0xF1, 0x01, 0x0F, 0x0B, 0xD1, 0x12, 0xF8, 0x03, 0xA0, 0x0A, 0xF1, + 0x01, 0x0A, 0x02, 0xF8, 0x03, 0xA0, 0x0C, 0xEB, 0x00, 0x0A, 0xBA, 0xF1, 0xFF, 0x3F, 0xEF, 0xD1, + 0x02, 0xE0, 0xBA, 0xF1, 0x00, 0x0F, 0xF6, 0xD1, 0x05, 0xF1, 0x01, 0x0C, 0xC6, 0x44, 0xBC, 0xF1, + 0x3E, 0x0F, 0xD0, 0x5C, 0x0C, 0xDC, 0x1E, 0xF8, 0x0C, 0xA0, 0xBA, 0xF1, 0x01, 0x0F, 0x04, 0xD1, + 0x01, 0x30, 0xD0, 0x54, 0x0C, 0xF1, 0x01, 0x0C, 0xF1, 0xE7, 0xBA, 0xF1, 0x00, 0x0F, 0xF9, 0xD1, + 0x12, 0xF8, 0x01, 0xC0, 0x04, 0x36, 0x84, 0x45, 0x38, 0xBF, 0x19, 0x46, 0xBE, 0x42, 0xC5, 0xDD, + 0x88, 0x00, 0x24, 0xAE, 0x02, 0x46, 0x03, 0x46, 0x05, 0x9D, 0xAB, 0x42, 0x2D, 0xDA, 0x04, 0x30, + 0x24, 0xAE, 0x0F, 0x9D, 0x03, 0x1F, 0xA8, 0x42, 0x30, 0xDD, 0xD1, 0x18, 0xA6, 0x48, 0x01, 0xEB, + 0xD1, 0x71, 0x49, 0x10, 0x13, 0x91, 0x00, 0x91, 0x0B, 0x99, 0xFF, 0xF7, 0xCC, 0xEA, 0x11, 0x9A, + 0x07, 0x9B, 0x09, 0x99, 0xA1, 0x48, 0x13, 0x40, 0x13, 0x9A, 0x8A, 0x40, 0x13, 0x43, 0xA3, 0x66, + 0x19, 0x46, 0x11, 0x93, 0xFF, 0xF7, 0xBE, 0xEA, 0x20, 0x46, 0x03, 0xF0, 0x03, 0xFB, 0x01, 0x28, + 0x10, 0x90, 0x21, 0xD0, 0x9A, 0x48, 0xFF, 0xF7, 0xB6, 0xEA, 0x77, 0xE7, 0x00, 0x21, 0x0D, 0xF5, + 0xA6, 0x68, 0x6F, 0xF0, 0x1F, 0x09, 0x24, 0xAA, 0xC8, 0xE7, 0x9D, 0x10, 0x77, 0x5D, 0x75, 0x5C, + 0x03, 0x3D, 0xAF, 0x42, 0xCB, 0xDB, 0x1A, 0x46, 0x04, 0x3B, 0xC5, 0xE7, 0x00, 0x28, 0x05, 0x46, + 0xB8, 0xBF, 0xC5, 0x1C, 0xAD, 0x10, 0x77, 0x5D, 0x75, 0x5C, 0x01, 0x3D, 0xAF, 0x42, 0xC4, 0xDB, + 0x04, 0x30, 0xBE, 0xE7, 0x13, 0x93, 0xD7, 0xE7, 0x0D, 0x9B, 0x8A, 0x48, 0xC3, 0xF3, 0x02, 0x23, + 0x12, 0x93, 0x5B, 0x00, 0x0D, 0x93, 0xFF, 0xF7, 0x8E, 0xEA, 0x34, 0xAB, 0x0E, 0x93, 0x1D, 0x46, + 0x00, 0x23, 0xCD, 0xE9, 0x06, 0x33, 0x06, 0x9B, 0x4F, 0xF0, 0x0F, 0x09, 0x62, 0x69, 0x01, 0x27, + 0x00, 0x26, 0x4F, 0xEA, 0x83, 0x0A, 0x22, 0xFA, 0x0A, 0xF2, 0x09, 0xFA, 0x0A, 0xF9, 0x02, 0xF0, + 0x0F, 0x03, 0x6F, 0xEA, 0x09, 0x09, 0x15, 0x93, 0x2B, 0x61, 0x06, 0x9B, 0x4F, 0xEA, 0xC3, 0x0B, + 0x3F, 0x23, 0x03, 0xFA, 0x0B, 0xF3, 0x6F, 0xEA, 0x03, 0x08, 0x63, 0x6F, 0x06, 0xFA, 0x0B, 0xF2, + 0x20, 0x46, 0x08, 0xEA, 0x03, 0x03, 0x13, 0x43, 0x63, 0x67, 0x01, 0xF0, 0x27, 0xFA, 0x06, 0x9B, + 0x4F, 0xF4, 0x80, 0x72, 0x08, 0x99, 0x4F, 0xF0, 0x80, 0x40, 0xFF, 0xF7, 0x49, 0xFD, 0x03, 0x46, + 0x00, 0x28, 0x3F, 0xD1, 0x00, 0x2F, 0x4D, 0xD0, 0x2E, 0x60, 0x76, 0xB9, 0x2B, 0x69, 0x0D, 0x2B, + 0x63, 0xD8, 0x62, 0x69, 0x01, 0x33, 0x2B, 0x61, 0x03, 0xFA, 0x0A, 0xF3, 0x4F, 0xF0, 0xFF, 0x36, + 0x09, 0xEA, 0x02, 0x02, 0x13, 0x43, 0x63, 0x61, 0x01, 0x23, 0x01, 0x36, 0x1F, 0x46, 0x40, 0x2E, + 0xD3, 0xD1, 0x2A, 0x69, 0x15, 0x98, 0xD5, 0xE9, 0x00, 0x31, 0x12, 0x1A, 0x57, 0x00, 0xC8, 0x18, + 0x4E, 0x1C, 0xC7, 0xEB, 0x50, 0x07, 0xF6, 0x1A, 0xAE, 0x60, 0xEF, 0x60, 0x5A, 0x48, 0xCD, 0xE9, + 0x01, 0x67, 0x07, 0xF0, 0x3F, 0x07, 0x00, 0x91, 0x07, 0xFA, 0x0B, 0xFB, 0x06, 0x99, 0xFF, 0xF7, + 0x2A, 0xEA, 0x07, 0x9B, 0x08, 0xEA, 0x03, 0x08, 0x4B, 0xEA, 0x08, 0x03, 0x07, 0x93, 0x63, 0x67, + 0x0D, 0x9B, 0x9E, 0x42, 0x35, 0xD2, 0x14, 0x22, 0x06, 0x99, 0x5A, 0x43, 0x4F, 0x48, 0xFF, 0xF7, + 0x1A, 0xEA, 0xC1, 0xE5, 0x77, 0xB9, 0x29, 0x68, 0x72, 0x1E, 0x6A, 0x60, 0x16, 0x90, 0x52, 0x1A, + 0x02, 0x2A, 0xAA, 0x60, 0xCD, 0xD8, 0x03, 0x22, 0x06, 0x99, 0x49, 0x48, 0xFF, 0xF7, 0x0A, 0xEA, + 0x16, 0x9B, 0xC2, 0xE7, 0x1F, 0x43, 0xC0, 0xD1, 0x3F, 0x2E, 0x6E, 0x60, 0x17, 0xD1, 0x2B, 0x69, + 0x29, 0x68, 0x01, 0x2B, 0xBD, 0xD9, 0x02, 0x29, 0xBB, 0xD9, 0x62, 0x69, 0x01, 0x3B, 0x2B, 0x61, + 0x03, 0xFA, 0x0A, 0xF3, 0x02, 0x39, 0x09, 0xEA, 0x02, 0x02, 0x29, 0x60, 0x13, 0x43, 0x3C, 0x26, + 0x63, 0x61, 0x3D, 0x23, 0x6B, 0x60, 0x3B, 0x46, 0xA7, 0xE7, 0x33, 0x46, 0xA5, 0xE7, 0x3B, 0x46, + 0xA3, 0xE7, 0x06, 0x9B, 0x14, 0x35, 0x01, 0x33, 0x06, 0x93, 0x06, 0x9A, 0x0C, 0x9B, 0x93, 0x42, + 0x7F, 0xF4, 0x59, 0xAF, 0x14, 0x9B, 0x07, 0x99, 0x32, 0x48, 0x63, 0x61, 0xFF, 0xF7, 0xDA, 0xE9, + 0xA3, 0x6F, 0x13, 0xF0, 0x80, 0x63, 0x08, 0x93, 0x00, 0xF0, 0x22, 0x82, 0x63, 0x68, 0x04, 0x2B, + 0x02, 0xD0, 0x08, 0x2B, 0x40, 0xF0, 0x20, 0x82, 0x2B, 0x48, 0xFF, 0xF7, 0xCC, 0xE9, 0x63, 0x68, + 0x04, 0x2B, 0x55, 0xD1, 0xA3, 0x6B, 0x00, 0x25, 0xA9, 0x46, 0x0C, 0x93, 0x0B, 0x9B, 0xDA, 0x00, + 0xFF, 0x23, 0x93, 0x40, 0x6F, 0xEA, 0x03, 0x0A, 0x01, 0x23, 0x93, 0x40, 0x08, 0x93, 0xA3, 0x6B, + 0x20, 0x46, 0x4F, 0xEA, 0x65, 0x08, 0x00, 0x27, 0x3E, 0x46, 0x23, 0xF0, 0x3F, 0x03, 0x4F, 0xF0, + 0x01, 0x0B, 0x2B, 0x43, 0xA3, 0x63, 0x03, 0xF0, 0xF5, 0xF9, 0x5C, 0xAB, 0x03, 0xEB, 0x48, 0x18, + 0x23, 0x6F, 0x20, 0x46, 0x0A, 0xEA, 0x03, 0x03, 0x3B, 0x43, 0x23, 0x67, 0x01, 0xF0, 0x66, 0xF9, + 0x16, 0x48, 0x01, 0x23, 0xCD, 0xF8, 0x00, 0x90, 0x4F, 0xF4, 0x00, 0x61, 0x0B, 0x9A, 0x00, 0x68, + 0xFF, 0xF7, 0xC0, 0xFB, 0x60, 0xB1, 0x08, 0xF8, 0x06, 0x90, 0x01, 0x36, 0x08, 0x9B, 0x3F, 0x2E, + 0x1F, 0x44, 0xE5, 0xD1, 0x02, 0x35, 0x34, 0x2D, 0xD1, 0xD1, 0x00, 0x23, 0x08, 0x93, 0x56, 0xE0, + 0x08, 0xF8, 0x06, 0xB0, 0xF1, 0xE7, 0x00, 0xBF, 0xF6, 0xDB, 0x04, 0x00, 0x18, 0xDC, 0x04, 0x00, + 0x32, 0xDC, 0x04, 0x00, 0x4F, 0xDC, 0x04, 0x00, 0x80, 0xDC, 0x04, 0x00, 0xA5, 0xDC, 0x04, 0x00, + 0x5C, 0xDC, 0x04, 0x00, 0xC6, 0xDC, 0x04, 0x00, 0xE2, 0xDC, 0x04, 0x00, 0x0C, 0xE7, 0x04, 0x00, + 0x08, 0x2B, 0x56, 0xD1, 0xA3, 0x6C, 0x00, 0x25, 0xA9, 0x46, 0x08, 0x93, 0x0B, 0x9B, 0xDA, 0x00, + 0xFF, 0x23, 0x93, 0x40, 0x6F, 0xEA, 0x03, 0x0A, 0x01, 0x23, 0x93, 0x40, 0x0C, 0x93, 0xA3, 0x6C, + 0x20, 0x46, 0x4F, 0xEA, 0x65, 0x08, 0x00, 0x27, 0x3E, 0x46, 0x23, 0xF0, 0x3F, 0x03, 0x4F, 0xF0, + 0x01, 0x0B, 0x2B, 0x43, 0xA3, 0x64, 0x03, 0xF0, 0x9D, 0xF9, 0x5C, 0xAB, 0x03, 0xEB, 0x48, 0x18, + 0x23, 0x6F, 0x20, 0x46, 0x0A, 0xEA, 0x03, 0x03, 0x3B, 0x43, 0x23, 0x67, 0x01, 0xF0, 0x0E, 0xF9, + 0xC1, 0x48, 0x01, 0x23, 0xCD, 0xF8, 0x00, 0x90, 0x4F, 0xF4, 0x00, 0x61, 0x0B, 0x9A, 0x00, 0x68, + 0xFF, 0xF7, 0x68, 0xFB, 0x10, 0xB3, 0x08, 0xF8, 0x06, 0x90, 0x01, 0x36, 0x0C, 0x9B, 0x3F, 0x2E, + 0x1F, 0x44, 0xE5, 0xD1, 0x02, 0x35, 0x34, 0x2D, 0xD1, 0xD1, 0x00, 0x23, 0x0C, 0x93, 0x00, 0x26, + 0x3E, 0x22, 0x37, 0x46, 0x35, 0x46, 0xB0, 0x46, 0x4F, 0xF0, 0x00, 0x0C, 0x32, 0x23, 0x61, 0x46, + 0x58, 0x10, 0x0D, 0xF5, 0xB8, 0x7E, 0x0E, 0xEB, 0x40, 0x10, 0x80, 0x5C, 0x01, 0x28, 0x0B, 0xD1, + 0xBC, 0xF1, 0x00, 0x0F, 0x48, 0xD0, 0xC3, 0xB9, 0x9C, 0x46, 0x0B, 0xE0, 0x08, 0xF8, 0x06, 0xB0, + 0xDB, 0xE7, 0x00, 0x23, 0x0C, 0x93, 0x89, 0xE7, 0x78, 0xB9, 0xBC, 0xF1, 0x01, 0x0F, 0x0C, 0xD1, + 0x03, 0xF1, 0x02, 0x0C, 0xA1, 0xEB, 0x0C, 0x0E, 0x0E, 0xF1, 0x02, 0x09, 0xA9, 0x45, 0x04, 0xDD, + 0x0E, 0xF1, 0x01, 0x05, 0x90, 0x46, 0x0E, 0x46, 0x67, 0x46, 0x02, 0x3B, 0x84, 0x46, 0x98, 0x1C, + 0xD6, 0xD1, 0x12, 0xF1, 0xFF, 0x32, 0xCF, 0xD2, 0x63, 0x68, 0x04, 0x2B, 0x26, 0xD1, 0xA3, 0x6B, + 0x41, 0xF2, 0x70, 0x71, 0xCD, 0xF8, 0x08, 0x80, 0xC3, 0xF3, 0x80, 0x12, 0x40, 0xF2, 0xDC, 0x53, + 0x03, 0xFB, 0x12, 0x12, 0x05, 0xEB, 0x85, 0x13, 0x1A, 0x44, 0x0A, 0x9B, 0x0B, 0x99, 0x93, 0x48, + 0x53, 0x43, 0x1A, 0x46, 0x92, 0x4B, 0xA2, 0xFB, 0x03, 0x23, 0x3A, 0x46, 0x5B, 0x0B, 0xCD, 0xE9, + 0x00, 0x53, 0x33, 0x46, 0xFF, 0xF7, 0xDE, 0xE8, 0x0B, 0x2D, 0x00, 0xF3, 0xF8, 0x80, 0x0C, 0x21, + 0x8C, 0x48, 0xFF, 0xF7, 0xD8, 0xE8, 0x7F, 0xE4, 0x19, 0x46, 0xCE, 0xE7, 0x08, 0x2B, 0xF3, 0xD1, + 0xA3, 0x6C, 0xCD, 0xF8, 0x08, 0x80, 0xC3, 0xF3, 0x80, 0x12, 0x4F, 0xF4, 0x96, 0x63, 0x53, 0x43, + 0x28, 0x22, 0x03, 0xF5, 0x7A, 0x73, 0x02, 0xFB, 0x05, 0x32, 0xD6, 0xE7, 0x7B, 0x10, 0x09, 0xFB, + 0x03, 0xF5, 0x4F, 0xEA, 0x43, 0x1C, 0x08, 0xEB, 0x0C, 0x00, 0x70, 0x44, 0xA5, 0xEB, 0x0E, 0x05, + 0x10, 0xF8, 0x01, 0xA9, 0xBA, 0xF1, 0x01, 0x0F, 0x0B, 0xD1, 0x12, 0xF8, 0x03, 0xA0, 0x0A, 0xF1, + 0x01, 0x0A, 0x02, 0xF8, 0x03, 0xA0, 0x05, 0xEB, 0x00, 0x0A, 0xBA, 0xF1, 0xFF, 0x3F, 0xEF, 0xD1, + 0x02, 0xE0, 0xBA, 0xF1, 0x00, 0x0F, 0xF6, 0xD1, 0x08, 0xF1, 0x01, 0x05, 0xF4, 0x44, 0x3E, 0x2D, + 0xD0, 0x5C, 0x0B, 0xDC, 0x1C, 0xF8, 0x05, 0xA0, 0xBA, 0xF1, 0x01, 0x0F, 0x03, 0xD1, 0x01, 0x30, + 0xD0, 0x54, 0x01, 0x35, 0xF3, 0xE7, 0xBA, 0xF1, 0x00, 0x0F, 0xFA, 0xD1, 0x55, 0x5C, 0x02, 0x37, + 0x85, 0x42, 0x38, 0xBF, 0x19, 0x46, 0xB7, 0x42, 0xC8, 0xDD, 0x1C, 0xAE, 0x4D, 0x00, 0x70, 0x5C, + 0x2A, 0x46, 0x2B, 0x46, 0x02, 0x38, 0x59, 0x10, 0x71, 0x5C, 0x81, 0x42, 0x02, 0xDB, 0x1A, 0x46, + 0x02, 0x3B, 0xF8, 0xD5, 0xA9, 0x1C, 0x1C, 0xAE, 0x32, 0x29, 0xA1, 0xF1, 0x02, 0x03, 0x40, 0xF3, + 0x9D, 0x80, 0xD5, 0x18, 0x5C, 0x48, 0x05, 0xEB, 0xD5, 0x75, 0x69, 0x10, 0x0A, 0x91, 0x00, 0x91, + 0x0B, 0x99, 0xFF, 0xF7, 0x70, 0xE8, 0x63, 0x68, 0x04, 0x2B, 0x40, 0xF0, 0x98, 0x80, 0x0C, 0x9B, + 0x0A, 0x9A, 0x56, 0x48, 0x23, 0xF0, 0x3F, 0x03, 0x13, 0x43, 0x19, 0x46, 0x0C, 0x93, 0xA3, 0x63, + 0xFF, 0xF7, 0x60, 0xE8, 0x20, 0x46, 0x03, 0xF0, 0xA5, 0xF8, 0x48, 0xAD, 0x50, 0x48, 0x00, 0x27, + 0xFF, 0xF7, 0x58, 0xE8, 0x0B, 0x97, 0x62, 0x69, 0x07, 0xF1, 0x04, 0x0A, 0x4F, 0xEA, 0x8A, 0x0A, + 0x4F, 0xEA, 0xC7, 0x0B, 0x4F, 0xF0, 0x0F, 0x09, 0x4F, 0xF0, 0x01, 0x08, 0x22, 0xFA, 0x0A, 0xF2, + 0x09, 0xFA, 0x0A, 0xF9, 0x02, 0xF0, 0x0F, 0x03, 0x6F, 0xEA, 0x09, 0x09, 0x16, 0x93, 0x00, 0x26, + 0x2B, 0x61, 0x3F, 0x23, 0x03, 0xFA, 0x0B, 0xF3, 0xDB, 0x43, 0x15, 0x93, 0x23, 0x6F, 0x20, 0x46, + 0x15, 0x9A, 0x13, 0x40, 0x06, 0xFA, 0x0B, 0xF2, 0x13, 0x43, 0x23, 0x67, 0x00, 0xF0, 0xF6, 0xFF, + 0x35, 0x48, 0x00, 0x23, 0x00, 0x93, 0x3A, 0x46, 0x01, 0x23, 0x4F, 0xF4, 0x80, 0x51, 0x00, 0x68, + 0xFF, 0xF7, 0x50, 0xFA, 0x03, 0x46, 0x00, 0x28, 0x7B, 0xD1, 0xB8, 0xF1, 0x00, 0x0F, 0x00, 0xF0, + 0x8A, 0x80, 0x2E, 0x60, 0x7E, 0xB9, 0x2B, 0x69, 0x0D, 0x2B, 0x00, 0xF2, 0xA1, 0x80, 0x62, 0x69, + 0x01, 0x33, 0x2B, 0x61, 0x03, 0xFA, 0x0A, 0xF3, 0x4F, 0xF0, 0xFF, 0x36, 0x09, 0xEA, 0x02, 0x02, + 0x13, 0x43, 0x63, 0x61, 0x01, 0x23, 0x01, 0x36, 0x98, 0x46, 0x40, 0x2E, 0xCE, 0xD1, 0x2A, 0x69, + 0x16, 0x98, 0xD5, 0xE9, 0x00, 0x31, 0x12, 0x1A, 0x4F, 0xEA, 0x42, 0x08, 0xC8, 0x18, 0x4E, 0x1C, + 0xC8, 0xEB, 0x50, 0x08, 0xF6, 0x1A, 0xAE, 0x60, 0xC5, 0xF8, 0x0C, 0x80, 0x21, 0x48, 0xCD, 0xE9, + 0x01, 0x68, 0x08, 0xF0, 0x3F, 0x08, 0x00, 0x91, 0x39, 0x46, 0xFE, 0xF7, 0xF4, 0xEF, 0x0B, 0x9A, + 0x08, 0xFA, 0x0B, 0xFB, 0x15, 0x9B, 0x13, 0x40, 0x4B, 0xEA, 0x03, 0x03, 0x0B, 0x93, 0x0D, 0x9B, + 0x9E, 0x42, 0x71, 0xD2, 0x14, 0x22, 0x39, 0x46, 0x5A, 0x43, 0x17, 0x48, 0xC7, 0xE5, 0x00, 0x21, + 0x0D, 0xF5, 0xB8, 0x7E, 0x6F, 0xF0, 0x1F, 0x09, 0x1C, 0xAA, 0x4C, 0xE7, 0x01, 0xEB, 0xD1, 0x75, + 0x6D, 0x10, 0x75, 0x5D, 0xA8, 0x42, 0x3F, 0xF7, 0x5C, 0xAF, 0x02, 0x31, 0x54, 0xE7, 0x08, 0x2B, + 0x7F, 0xF4, 0x70, 0xAF, 0x08, 0x9B, 0x0A, 0x9A, 0x0C, 0x48, 0x23, 0xF0, 0x3F, 0x03, 0x13, 0x43, + 0x08, 0x93, 0x19, 0x46, 0xA3, 0x64, 0x63, 0xE7, 0x0C, 0xE7, 0x04, 0x00, 0xEE, 0xDC, 0x04, 0x00, + 0x59, 0x17, 0xB7, 0xD1, 0x19, 0xDD, 0x04, 0x00, 0x33, 0xDD, 0x04, 0x00, 0x55, 0xDD, 0x04, 0x00, + 0x84, 0xDD, 0x04, 0x00, 0xB5, 0xDD, 0x04, 0x00, 0xDA, 0xDD, 0x04, 0x00, 0x6C, 0xDD, 0x04, 0x00, + 0x08, 0x9B, 0x0C, 0x93, 0x0A, 0x93, 0x50, 0xE7, 0x00, 0x23, 0x0A, 0x93, 0x0C, 0x93, 0x08, 0x93, + 0x4B, 0xE7, 0xB8, 0xF1, 0x00, 0x0F, 0x0E, 0xD1, 0x29, 0x68, 0x72, 0x1E, 0x6A, 0x60, 0x17, 0x90, + 0x52, 0x1A, 0x02, 0x2A, 0xAA, 0x60, 0x92, 0xD8, 0x03, 0x22, 0x39, 0x46, 0xAA, 0x48, 0xFE, 0xF7, + 0x9A, 0xEF, 0x17, 0x9B, 0x87, 0xE7, 0x53, 0xEA, 0x08, 0x08, 0x84, 0xD1, 0x3F, 0x2E, 0x6E, 0x60, + 0x18, 0xD1, 0x2B, 0x69, 0x29, 0x68, 0x01, 0x2B, 0x81, 0xD9, 0x02, 0x29, 0x7F, 0xF6, 0x7F, 0xAF, + 0x62, 0x69, 0x01, 0x3B, 0x2B, 0x61, 0x03, 0xFA, 0x0A, 0xF3, 0x02, 0x39, 0x09, 0xEA, 0x02, 0x02, + 0x29, 0x60, 0x13, 0x43, 0x3C, 0x26, 0x63, 0x61, 0x3D, 0x23, 0x6B, 0x60, 0x43, 0x46, 0x6A, 0xE7, + 0x33, 0x46, 0x68, 0xE7, 0x43, 0x46, 0x66, 0xE7, 0x06, 0x9B, 0x01, 0x37, 0x14, 0x35, 0x9F, 0x42, + 0x7F, 0xF4, 0x19, 0xAF, 0x14, 0x9B, 0x00, 0x27, 0x94, 0x48, 0x63, 0x61, 0x0B, 0x9B, 0x23, 0x67, + 0x19, 0x46, 0xFE, 0xF7, 0x68, 0xEF, 0x92, 0x48, 0xFE, 0xF7, 0x64, 0xEF, 0x14, 0x9A, 0xBB, 0x00, + 0x4F, 0xEA, 0xC7, 0x08, 0x4F, 0xF0, 0x3F, 0x0A, 0x4F, 0xF0, 0x02, 0x09, 0x0A, 0xFA, 0x08, 0xFA, + 0x4F, 0xF0, 0x00, 0x0B, 0xDA, 0x40, 0x6F, 0xEA, 0x0A, 0x0A, 0x02, 0xF0, 0x0F, 0x02, 0x16, 0x92, + 0x0E, 0x9A, 0x11, 0x69, 0x0F, 0x22, 0x02, 0xFA, 0x03, 0xF0, 0x62, 0x69, 0x01, 0xFA, 0x03, 0xF3, + 0x22, 0xEA, 0x00, 0x02, 0x1A, 0x43, 0x07, 0x9B, 0x62, 0x61, 0x16, 0x9A, 0x0A, 0xEA, 0x03, 0x03, + 0x15, 0x93, 0x07, 0x9B, 0x23, 0xFA, 0x08, 0xF3, 0x03, 0xF0, 0x3F, 0x03, 0x0B, 0x44, 0x9B, 0x1A, + 0x15, 0x9A, 0x03, 0xF0, 0x3F, 0x03, 0x03, 0xFA, 0x08, 0xF3, 0x13, 0x43, 0x63, 0x67, 0x63, 0x6F, + 0x18, 0xAA, 0x52, 0xF8, 0x29, 0x60, 0x23, 0xFA, 0x08, 0xF5, 0x05, 0xF0, 0x3F, 0x05, 0xBB, 0xF1, + 0x00, 0x0F, 0x23, 0xD1, 0xB5, 0x42, 0x26, 0xD9, 0xAD, 0x1B, 0x05, 0xFA, 0x08, 0xF2, 0x0A, 0xEA, + 0x03, 0x03, 0x20, 0x46, 0x13, 0x43, 0x63, 0x67, 0x00, 0xF0, 0xE0, 0xFE, 0x6D, 0x48, 0x00, 0x23, + 0x00, 0x93, 0x3A, 0x46, 0x01, 0x23, 0x4F, 0xF4, 0x80, 0x51, 0x00, 0x68, 0xFF, 0xF7, 0x3A, 0xF9, + 0x28, 0xB3, 0xBB, 0xF1, 0x00, 0x0F, 0x1D, 0xD1, 0xB9, 0xF1, 0x00, 0x0F, 0x0D, 0xD1, 0x07, 0x9B, + 0x4F, 0xF0, 0x02, 0x09, 0x4F, 0xF0, 0x01, 0x0B, 0x63, 0x67, 0xD0, 0xE7, 0x35, 0x44, 0x3F, 0x2D, + 0x28, 0xBF, 0x3F, 0x25, 0xD9, 0xE7, 0x5D, 0x46, 0xD7, 0xE7, 0x35, 0x44, 0x63, 0x6F, 0x05, 0xF0, + 0x3F, 0x05, 0x05, 0xFA, 0x08, 0xF5, 0x09, 0xF1, 0xFF, 0x39, 0x0A, 0xEA, 0x03, 0x03, 0x1D, 0x43, + 0x65, 0x67, 0xBC, 0xE7, 0xB9, 0xF1, 0x00, 0x0F, 0x0C, 0xD0, 0xAD, 0x1B, 0xEE, 0xE7, 0x0E, 0x9B, + 0xBB, 0xF1, 0x00, 0x0F, 0x03, 0xD1, 0x1D, 0x60, 0x00, 0x2D, 0xD8, 0xD0, 0xAF, 0xE7, 0x3F, 0x2D, + 0x5D, 0x60, 0xAC, 0xD1, 0x0E, 0x9B, 0x0E, 0x9A, 0x16, 0x98, 0xD3, 0xE9, 0x00, 0x31, 0x4D, 0x1C, + 0xED, 0x1A, 0x95, 0x60, 0x12, 0x69, 0x12, 0x1A, 0xC8, 0x18, 0x56, 0x00, 0xC6, 0xEB, 0x50, 0x06, + 0x0E, 0x98, 0xC6, 0x60, 0xCD, 0xE9, 0x01, 0x56, 0x06, 0xF0, 0x3F, 0x06, 0x00, 0x91, 0x39, 0x46, + 0x45, 0x48, 0x06, 0xFA, 0x08, 0xF8, 0xFE, 0xF7, 0xC6, 0xEE, 0x15, 0x9B, 0x48, 0xEA, 0x03, 0x03, + 0x07, 0x93, 0x0D, 0x9B, 0x9D, 0x42, 0x04, 0xD2, 0x14, 0x22, 0x39, 0x46, 0x5A, 0x43, 0x3F, 0x48, + 0x9D, 0xE4, 0x0E, 0x9B, 0x01, 0x37, 0x14, 0x33, 0x0E, 0x93, 0x06, 0x9B, 0x9F, 0x42, 0x7F, 0xF4, + 0x4D, 0xAF, 0x07, 0x9B, 0x07, 0x99, 0x3A, 0x48, 0x63, 0x67, 0x14, 0x9B, 0x63, 0x61, 0xFE, 0xF7, + 0xAA, 0xEE, 0xA3, 0x6F, 0x9B, 0x01, 0x2F, 0xD5, 0x0D, 0x9B, 0x00, 0x2B, 0x2C, 0xD0, 0x11, 0x9B, + 0x05, 0x9A, 0xA3, 0x66, 0x07, 0x9B, 0x63, 0x67, 0x13, 0x9B, 0x06, 0x3B, 0x9A, 0x42, 0xB8, 0xBF, + 0x1A, 0x46, 0x13, 0x9B, 0x93, 0x46, 0x0F, 0x9A, 0xD8, 0x46, 0x06, 0x33, 0x9A, 0x42, 0xA8, 0xBF, + 0x1A, 0x46, 0xFF, 0x23, 0x05, 0x92, 0x09, 0x9A, 0x93, 0x40, 0x0B, 0xFA, 0x02, 0xF9, 0xDB, 0x43, + 0x0E, 0x93, 0x03, 0x23, 0x93, 0x40, 0x0F, 0x93, 0x05, 0x9B, 0x98, 0x45, 0x4E, 0xDD, 0x11, 0x9B, + 0x59, 0x46, 0x0D, 0x9A, 0x23, 0x48, 0xA3, 0x66, 0x07, 0x9B, 0x63, 0x67, 0x14, 0x23, 0x53, 0x43, + 0x05, 0x9A, 0x28, 0x3B, 0xFE, 0xF7, 0x76, 0xEE, 0xA3, 0x6F, 0x13, 0xF0, 0x80, 0x63, 0x00, 0xF0, + 0xEB, 0x80, 0x0D, 0x9B, 0x00, 0x2B, 0x00, 0xF0, 0xE6, 0x80, 0x63, 0x68, 0x04, 0x2B, 0x00, 0xF0, + 0x83, 0x80, 0x08, 0x2B, 0x1E, 0xD1, 0x08, 0x9B, 0xA3, 0x64, 0x0B, 0x9B, 0x23, 0x67, 0x0A, 0x9B, + 0xA3, 0xF1, 0x06, 0x0A, 0x9D, 0x1D, 0x2A, 0xEA, 0xEA, 0x7A, 0x32, 0x2D, 0xA8, 0xBF, 0x32, 0x25, + 0xD1, 0x46, 0xA9, 0x45, 0x63, 0x68, 0x72, 0xDD, 0x08, 0x2B, 0x40, 0xF0, 0xC7, 0x80, 0x08, 0x9B, + 0xA3, 0x64, 0x0D, 0x9A, 0x14, 0x23, 0x51, 0x46, 0x0B, 0x48, 0x53, 0x43, 0x2A, 0x46, 0x28, 0x3B, + 0xFE, 0xF7, 0x48, 0xEE, 0x00, 0x23, 0xBF, 0xE0, 0x91, 0xDD, 0x04, 0x00, 0xFB, 0xDD, 0x04, 0x00, + 0x17, 0xDE, 0x04, 0x00, 0x0C, 0xE7, 0x04, 0x00, 0x24, 0xDE, 0x04, 0x00, 0x49, 0xDE, 0x04, 0x00, + 0x6A, 0xDE, 0x04, 0x00, 0xAD, 0xDE, 0x04, 0x00, 0xF7, 0xDE, 0x04, 0x00, 0xA3, 0x6E, 0x00, 0x25, + 0x0E, 0x9A, 0x20, 0x46, 0x13, 0x40, 0x43, 0xEA, 0x09, 0x03, 0xA3, 0x66, 0x02, 0xF0, 0x72, 0xFE, + 0x34, 0xAA, 0x14, 0x23, 0x03, 0xFB, 0x05, 0x23, 0xEF, 0x00, 0xDA, 0x68, 0x12, 0x9B, 0xC3, 0xF1, + 0x01, 0x06, 0x3F, 0x23, 0xBB, 0x40, 0x16, 0x44, 0xDB, 0x43, 0x09, 0x93, 0x12, 0x9B, 0x03, 0xF1, + 0xFF, 0x3A, 0x0A, 0xFA, 0x07, 0xF3, 0x06, 0xFA, 0x07, 0xF7, 0x13, 0x93, 0x02, 0xEB, 0x0A, 0x03, + 0x14, 0x93, 0x14, 0x9B, 0xB3, 0x42, 0x08, 0xD2, 0x06, 0x9B, 0x01, 0x35, 0x9D, 0x42, 0xDF, 0xD1, + 0x0F, 0x9B, 0x08, 0xF1, 0x03, 0x08, 0x99, 0x44, 0x7E, 0xE7, 0x63, 0x6F, 0x20, 0x46, 0x09, 0x9A, + 0x13, 0x40, 0x3B, 0x43, 0x63, 0x67, 0x00, 0xF0, 0xC1, 0xFD, 0x3D, 0x48, 0x00, 0x23, 0x00, 0x93, + 0x2A, 0x46, 0x01, 0x23, 0x4F, 0xF4, 0x00, 0x61, 0x00, 0x68, 0xFF, 0xF7, 0x1B, 0xF8, 0x13, 0x9B, + 0x1F, 0x44, 0x38, 0xB1, 0x37, 0x48, 0x33, 0x46, 0x42, 0x46, 0x29, 0x46, 0xFE, 0xF7, 0xEA, 0xED, + 0xFF, 0xF7, 0x92, 0xB9, 0x56, 0x44, 0xD4, 0xE7, 0x0C, 0x9B, 0xA3, 0x63, 0x7D, 0xE7, 0x08, 0x2B, + 0x2E, 0xD1, 0xA3, 0x6C, 0x23, 0xF0, 0x3F, 0x03, 0x43, 0xEA, 0x09, 0x03, 0xA3, 0x64, 0x00, 0x26, + 0x20, 0x46, 0x02, 0xF0, 0x1F, 0xFE, 0x48, 0xAA, 0x14, 0x23, 0x03, 0xFB, 0x06, 0x23, 0x4F, 0xEA, + 0xC6, 0x08, 0xDA, 0x68, 0x12, 0x9B, 0xC3, 0xF1, 0x01, 0x07, 0x3F, 0x23, 0x03, 0xFA, 0x08, 0xF3, + 0x17, 0x44, 0xDB, 0x43, 0x05, 0x93, 0x12, 0x9B, 0x03, 0xF1, 0xFF, 0x3B, 0x0B, 0xFA, 0x08, 0xF3, + 0x07, 0xFA, 0x08, 0xF8, 0x07, 0x93, 0x02, 0xEB, 0x0B, 0x03, 0x09, 0x93, 0x09, 0x9B, 0xBB, 0x42, + 0x0F, 0xD2, 0x06, 0x9B, 0x01, 0x36, 0x9E, 0x42, 0xDD, 0xD1, 0x09, 0xF1, 0x03, 0x09, 0x58, 0xE7, + 0x04, 0x2B, 0x01, 0xBF, 0xA3, 0x6B, 0x23, 0xF0, 0x3F, 0x03, 0x43, 0xEA, 0x09, 0x03, 0xA3, 0x63, + 0xCD, 0xE7, 0x23, 0x6F, 0x20, 0x46, 0x05, 0x9A, 0x13, 0x40, 0x43, 0xEA, 0x08, 0x03, 0x23, 0x67, + 0x00, 0xF0, 0x64, 0xFD, 0x0E, 0x48, 0x00, 0x23, 0x00, 0x93, 0x32, 0x46, 0x01, 0x23, 0x4F, 0xF4, + 0x00, 0x61, 0x00, 0x68, 0xFE, 0xF7, 0xBE, 0xFF, 0x07, 0x9B, 0x98, 0x44, 0x20, 0xB1, 0x3B, 0x46, + 0x4A, 0x46, 0x31, 0x46, 0x08, 0x48, 0xA1, 0xE7, 0x5F, 0x44, 0xCF, 0xE7, 0x04, 0x2B, 0x04, 0xBF, + 0x0C, 0x9B, 0xA3, 0x63, 0x35, 0xE7, 0x0D, 0x9B, 0x10, 0x93, 0xFF, 0xF7, 0x2D, 0xB9, 0x00, 0xBF, + 0x0C, 0xE7, 0x04, 0x00, 0x86, 0xDE, 0x04, 0x00, 0xD0, 0xDE, 0x04, 0x00, 0x31, 0x4B, 0x2D, 0xE9, + 0xF7, 0x43, 0x06, 0x46, 0x1B, 0x68, 0x73, 0xB1, 0xFE, 0xF7, 0x6C, 0xFF, 0x2E, 0x4F, 0x00, 0x25, + 0xDF, 0xF8, 0xD0, 0x80, 0xDF, 0xF8, 0xD0, 0x90, 0x01, 0x35, 0x05, 0x2D, 0x26, 0xD1, 0x2B, 0x48, + 0xFE, 0xF7, 0x68, 0xED, 0x0E, 0xE0, 0x2A, 0x49, 0x4F, 0xF4, 0x40, 0x33, 0x29, 0x48, 0x11, 0xF8, + 0x01, 0x2F, 0x1A, 0x70, 0x1C, 0x78, 0x0A, 0x78, 0x94, 0x42, 0x05, 0xD0, 0x19, 0x78, 0x26, 0x48, + 0xFE, 0xF7, 0x58, 0xED, 0x01, 0x24, 0x39, 0xE0, 0x01, 0x33, 0x83, 0x42, 0xEF, 0xD1, 0xFE, 0xF7, + 0x37, 0xFF, 0xFE, 0xF7, 0x47, 0xFF, 0xFE, 0xF7, 0x39, 0xFF, 0x1E, 0x4A, 0x4F, 0xF4, 0x40, 0x33, + 0x00, 0x21, 0x03, 0xF8, 0x01, 0x1B, 0x93, 0x42, 0xFB, 0xD1, 0xCF, 0xE7, 0x29, 0x46, 0x38, 0x46, + 0xFE, 0xF7, 0x40, 0xED, 0x30, 0x46, 0xFF, 0xF7, 0x63, 0xF8, 0x00, 0x28, 0xCC, 0xD1, 0x30, 0x46, + 0x02, 0xF0, 0x80, 0xFD, 0xB0, 0xFA, 0x80, 0xF4, 0x01, 0x23, 0x64, 0x09, 0x00, 0x93, 0x08, 0x22, + 0xD8, 0xF8, 0x00, 0x00, 0x4F, 0xF4, 0x00, 0x41, 0xFE, 0xF7, 0x54, 0xFF, 0x04, 0x43, 0x03, 0xD0, + 0x48, 0x46, 0xFE, 0xF7, 0x28, 0xED, 0xB7, 0xE7, 0x31, 0x68, 0x0C, 0x48, 0xFE, 0xF7, 0x22, 0xED, + 0x01, 0x2D, 0x03, 0xD0, 0x31, 0x68, 0x0A, 0x48, 0xFE, 0xF7, 0x1C, 0xED, 0x20, 0x46, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x83, 0xF0, 0x80, 0x00, 0x03, 0x29, 0xDF, 0x04, 0x00, 0xB7, 0xDF, 0x04, 0x00, + 0xAF, 0xE5, 0x04, 0x00, 0x50, 0x01, 0x03, 0x00, 0x1A, 0xDF, 0x04, 0x00, 0x61, 0xDF, 0x04, 0x00, + 0x79, 0xDF, 0x04, 0x00, 0x0C, 0xE7, 0x04, 0x00, 0x40, 0xDF, 0x04, 0x00, 0x03, 0xF0, 0x0C, 0xBC, + 0x10, 0xB5, 0x01, 0xFB, 0x00, 0xF4, 0x4F, 0xF4, 0x7A, 0x71, 0x20, 0x46, 0x03, 0xF0, 0x62, 0xEA, + 0x03, 0x4A, 0xA4, 0xFB, 0x02, 0x23, 0x98, 0x09, 0x00, 0x29, 0x18, 0xBF, 0x01, 0x30, 0x10, 0xBD, + 0xD3, 0x4D, 0x62, 0x10, 0x40, 0x08, 0xF8, 0xB5, 0x1C, 0x4A, 0x4F, 0xF0, 0x80, 0x43, 0x00, 0x05, + 0x00, 0x24, 0x1B, 0x4D, 0x8C, 0x42, 0x0C, 0xD1, 0x19, 0x4F, 0x4F, 0xF0, 0x80, 0x43, 0xDF, 0xF8, + 0x5C, 0xC0, 0x00, 0x25, 0xAC, 0x42, 0x0B, 0xD1, 0x16, 0x48, 0xFE, 0xF7, 0xDC, 0xEC, 0x00, 0x20, + 0xF8, 0xBD, 0xA6, 0x18, 0x1E, 0x60, 0x66, 0x19, 0xC6, 0x50, 0x01, 0x34, 0x04, 0x33, 0xE9, 0xE7, + 0xC1, 0x58, 0xEA, 0x19, 0xC6, 0x18, 0x8A, 0x42, 0x07, 0xD0, 0x0F, 0x4B, 0x1B, 0x68, 0x7B, 0xB9, + 0x33, 0x46, 0x0E, 0x48, 0xFE, 0xF7, 0xC6, 0xEC, 0x0A, 0xE0, 0x1E, 0x46, 0x05, 0xEB, 0x0C, 0x02, + 0x56, 0xF8, 0x04, 0x1B, 0x8A, 0x42, 0x05, 0xD0, 0x07, 0x48, 0x00, 0x68, 0x00, 0x28, 0xF0, 0xD0, + 0x01, 0x20, 0xDD, 0xE7, 0x01, 0x35, 0x33, 0x46, 0xD4, 0xE7, 0x00, 0xBF, 0x67, 0x45, 0x23, 0x01, + 0x98, 0xBA, 0xDC, 0xFE, 0x04, 0xE0, 0x04, 0x00, 0x00, 0xE7, 0x04, 0x00, 0xD2, 0xDF, 0x04, 0x00, + 0x83, 0x69, 0x10, 0xB5, 0x04, 0x46, 0xC3, 0xF3, 0x01, 0x31, 0xC3, 0xF3, 0x07, 0x12, 0x0A, 0x44, + 0xE1, 0x69, 0x03, 0xF0, 0x0F, 0x00, 0xC3, 0xF3, 0x81, 0x33, 0x02, 0x44, 0x13, 0x44, 0xC1, 0xF3, + 0x03, 0x32, 0x1A, 0x44, 0x11, 0xF0, 0x0F, 0x0F, 0x4F, 0xF0, 0x01, 0x03, 0x0C, 0xBF, 0x12, 0x3A, + 0x13, 0x3A, 0x03, 0xFA, 0x02, 0xF0, 0xB4, 0xF8, 0x7A, 0x30, 0x5B, 0x07, 0x05, 0xD0, 0x89, 0x0F, + 0x02, 0x29, 0x1C, 0xBF, 0x00, 0xEB, 0x40, 0x00, 0x80, 0x08, 0x10, 0xBD, 0x30, 0x4B, 0x40, 0xF2, + 0x8F, 0x12, 0xF0, 0xB5, 0x2F, 0x4D, 0x1A, 0x60, 0x4F, 0xF4, 0x80, 0x32, 0xC3, 0xF8, 0xF4, 0x21, + 0x2D, 0x4A, 0x2E, 0x49, 0x2E, 0x4C, 0xC3, 0xF8, 0x04, 0x22, 0x2E, 0x4A, 0xC3, 0xF8, 0x08, 0x52, + 0x2D, 0x48, 0xC3, 0xF8, 0x14, 0x22, 0x2D, 0x4A, 0x2D, 0x4E, 0x2E, 0x4F, 0xC3, 0xF8, 0x18, 0x22, + 0x2D, 0x4A, 0xDF, 0xF8, 0xD8, 0xC0, 0xC3, 0xF8, 0x24, 0x22, 0x2C, 0x4A, 0xC3, 0xF8, 0x28, 0x22, + 0x2B, 0x4A, 0xC3, 0xF8, 0x34, 0x22, 0xC3, 0xF8, 0x38, 0x12, 0x2A, 0x49, 0xC3, 0xF8, 0x44, 0x42, + 0xC3, 0xF8, 0x48, 0x02, 0xC3, 0xF8, 0x54, 0x12, 0x27, 0x4B, 0x33, 0x60, 0xF1, 0x60, 0x33, 0x61, + 0xF2, 0x62, 0x26, 0x4E, 0x3E, 0x60, 0xFA, 0x62, 0x3D, 0x63, 0xC7, 0xF8, 0x5C, 0xC0, 0xDF, 0xF8, + 0xA0, 0xC0, 0xC7, 0xF8, 0x60, 0xC0, 0xDF, 0xF8, 0x9C, 0xC0, 0xC7, 0xF8, 0x7C, 0xC0, 0xDF, 0xF8, + 0x98, 0xC0, 0xC7, 0xF8, 0x80, 0xC0, 0xDF, 0xF8, 0x94, 0xC0, 0xC7, 0xF8, 0xCC, 0xC0, 0xDF, 0xF8, + 0x90, 0xC0, 0xC7, 0xF8, 0xD0, 0xC0, 0xC7, 0xF8, 0xDC, 0x20, 0xC7, 0xF8, 0xE0, 0x50, 0x18, 0x4D, + 0x18, 0x4F, 0x2F, 0x60, 0x6B, 0x60, 0x2C, 0x61, 0x68, 0x61, 0xC5, 0xF8, 0xC0, 0x20, 0x16, 0x4A, + 0x16, 0x60, 0xD1, 0x60, 0x13, 0x61, 0xD4, 0x61, 0x10, 0x62, 0xD1, 0x62, 0x13, 0x63, 0xF0, 0xBD, + 0x0C, 0xA0, 0x7F, 0x04, 0x80, 0x00, 0x64, 0x00, 0x0D, 0x00, 0x00, 0x01, 0x64, 0x00, 0x50, 0x00, + 0x09, 0x02, 0x00, 0x20, 0x09, 0x00, 0x00, 0x06, 0x7C, 0x15, 0x88, 0x13, 0x78, 0x05, 0x00, 0x01, + 0x64, 0xA2, 0x7F, 0x04, 0x94, 0xA2, 0x7F, 0x04, 0x0D, 0x00, 0x00, 0x02, 0x00, 0x01, 0x60, 0x00, + 0x09, 0x00, 0x00, 0x01, 0x09, 0x02, 0x64, 0x00, 0x40, 0x00, 0x20, 0x00, 0x80, 0x00, 0x40, 0x00, + 0xA0, 0xA3, 0x7F, 0x04, 0x0F, 0x00, 0x64, 0x00, 0x64, 0xA4, 0x7F, 0x04, 0x09, 0x00, 0x00, 0x04, + 0x00, 0x01, 0x40, 0x00, 0x0D, 0x06, 0x00, 0x20, 0xF0, 0x0A, 0x60, 0x09, 0x0D, 0x06, 0x00, 0x08, + 0x00, 0x03, 0x00, 0x02, 0x03, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x43, 0x43, 0xEA, 0x00, 0x20, + 0x10, 0x60, 0x70, 0x47, 0x08, 0xA0, 0x7F, 0x04, 0x43, 0x68, 0x10, 0xB5, 0x03, 0x3B, 0x05, 0x2B, + 0x1B, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x03, 0x0C, 0x1A, 0x1A, 0x1C, 0x1F, 0x90, 0xF8, 0x64, 0x30, + 0x0A, 0x24, 0x5C, 0x43, 0x40, 0xF2, 0xDC, 0x53, 0x08, 0xBF, 0x1C, 0x46, 0x06, 0xE0, 0x90, 0xF8, + 0x65, 0x30, 0x0A, 0x24, 0x5C, 0x43, 0x08, 0xBF, 0x4F, 0xF4, 0x96, 0x64, 0x20, 0x46, 0xFE, 0xF7, + 0x44, 0xEA, 0x70, 0xB1, 0x0A, 0x48, 0xFE, 0xF7, 0xC6, 0xEB, 0x00, 0x24, 0x0D, 0xE0, 0x90, 0xF8, + 0x66, 0x30, 0xEE, 0xE7, 0x90, 0xF8, 0x67, 0x30, 0x0A, 0x24, 0x5C, 0x43, 0x40, 0xF2, 0x4C, 0x43, + 0xE2, 0xE7, 0x21, 0x46, 0x03, 0x48, 0xFE, 0xF7, 0xB6, 0xEB, 0x20, 0x46, 0x10, 0xBD, 0x00, 0xBF, + 0x1A, 0xE0, 0x04, 0x00, 0x30, 0xE0, 0x04, 0x00, 0x83, 0x6F, 0xC3, 0xF3, 0x02, 0x53, 0x05, 0x2B, + 0x16, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x06, 0x03, 0x0C, 0x0F, 0x15, 0x12, 0x0A, 0x4B, 0x0B, 0x4A, + 0x1A, 0x60, 0x0B, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x80, 0x73, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4B, + 0x08, 0x4A, 0xF5, 0xE7, 0x04, 0x4B, 0x08, 0x4A, 0xF2, 0xE7, 0x03, 0x4B, 0x07, 0x4A, 0xEF, 0xE7, + 0x01, 0x4B, 0x07, 0x4A, 0xEC, 0xE7, 0x00, 0xBF, 0x10, 0x11, 0x00, 0x03, 0xCC, 0xCC, 0x86, 0xE4, + 0x10, 0x10, 0x00, 0x03, 0x99, 0x99, 0x06, 0xE9, 0x66, 0x66, 0x86, 0xED, 0x00, 0x00, 0x86, 0xF5, + 0x33, 0x33, 0x06, 0xF2, 0x38, 0xB5, 0x0F, 0x4C, 0xA0, 0xFB, 0x04, 0x45, 0x0C, 0x68, 0x10, 0x46, + 0x24, 0xF4, 0x7F, 0x44, 0x24, 0xF0, 0x03, 0x04, 0x2D, 0x09, 0x6B, 0x1E, 0x44, 0xEA, 0x03, 0x24, + 0x44, 0xF0, 0x00, 0x43, 0x0B, 0x60, 0xFF, 0xF7, 0xBF, 0xFF, 0x44, 0xF0, 0x60, 0x43, 0x44, 0xF0, + 0x20, 0x44, 0x0B, 0x60, 0x0C, 0x60, 0x0B, 0x68, 0xDB, 0x00, 0xFC, 0xD5, 0x18, 0x20, 0x68, 0x43, + 0x38, 0xBD, 0x00, 0xBF, 0xAB, 0xAA, 0xAA, 0xAA, 0x9B, 0x4A, 0x2D, 0xE9, 0xF0, 0x41, 0x04, 0x46, + 0x9A, 0x4D, 0x13, 0x68, 0x9A, 0x4E, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0x23, 0x33, 0x60, + 0x2A, 0x68, 0x98, 0x4B, 0x42, 0xF0, 0x01, 0x02, 0x2A, 0x60, 0x98, 0x46, 0x2A, 0x68, 0x42, 0xF0, + 0x20, 0x02, 0x2A, 0x60, 0x01, 0x22, 0x32, 0x60, 0x1A, 0x68, 0xD0, 0x07, 0xFC, 0xD5, 0x92, 0x4A, + 0x13, 0x68, 0xD9, 0x07, 0xFC, 0xD5, 0x00, 0x23, 0x33, 0x60, 0x2B, 0x68, 0x23, 0xF0, 0x20, 0x03, + 0x2B, 0x60, 0x8E, 0x4B, 0x1B, 0x68, 0x1B, 0x0C, 0x1F, 0xBF, 0x8D, 0x4A, 0x13, 0x68, 0x43, 0xF0, + 0x01, 0x03, 0x13, 0x60, 0x8B, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x20, 0x03, 0x13, 0x60, 0x01, 0x23, + 0x33, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0xDA, 0x07, 0xFB, 0xD5, 0x87, 0x4B, 0x1F, 0x68, 0x07, 0xF0, + 0x03, 0x07, 0x01, 0x2F, 0xFA, 0xD1, 0xC8, 0x20, 0xFE, 0xF7, 0x4C, 0xEB, 0x00, 0x23, 0x33, 0x60, + 0x2B, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x2B, 0x60, 0x37, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0xDB, 0x07, + 0xFB, 0xD5, 0x63, 0x68, 0x08, 0x2B, 0x68, 0xD1, 0x23, 0x6A, 0x7C, 0x4E, 0x7C, 0x4D, 0x33, 0x60, + 0x7C, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x63, 0x6A, 0x43, 0xF4, 0x80, 0x73, + 0x33, 0x60, 0x78, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0xA3, 0x6A, 0x43, 0xF4, + 0x00, 0x73, 0x33, 0x60, 0x73, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0xE3, 0x6A, + 0x43, 0xF4, 0x40, 0x73, 0x33, 0x60, 0x6F, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, + 0x23, 0x6B, 0x43, 0xF4, 0x80, 0x63, 0x33, 0x60, 0x6A, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, + 0xFC, 0xDB, 0xE3, 0x6B, 0x0A, 0x20, 0x43, 0xF4, 0x30, 0x63, 0x33, 0x60, 0xFE, 0xF7, 0x0A, 0xEB, + 0x64, 0x4B, 0x0A, 0x20, 0x2B, 0x60, 0xFE, 0xF7, 0x06, 0xEB, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, + 0x23, 0x6C, 0x0A, 0x20, 0x43, 0xF4, 0x40, 0x63, 0x33, 0x60, 0xFE, 0xF7, 0xFC, 0xEA, 0x5D, 0x4B, + 0x0A, 0x20, 0x2B, 0x60, 0xFE, 0xF7, 0xF6, 0xEA, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0xA3, 0x6C, + 0x0A, 0x20, 0x43, 0xF4, 0x60, 0x63, 0x33, 0x60, 0xFE, 0xF7, 0xEC, 0xEA, 0x55, 0x4B, 0x0A, 0x20, + 0x2B, 0x60, 0xFE, 0xF7, 0xE8, 0xEA, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x63, 0x6D, 0x0A, 0x20, + 0x43, 0xF4, 0xB0, 0x53, 0x33, 0x60, 0xFE, 0xF7, 0xDE, 0xEA, 0x4E, 0x4B, 0x0A, 0x20, 0x2B, 0x60, + 0xFE, 0xF7, 0xD8, 0xEA, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x63, 0x68, 0x07, 0x2B, 0x1C, 0xD1, + 0x63, 0x6A, 0x46, 0x4A, 0x48, 0x49, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x44, 0x4B, 0x19, 0x60, + 0x19, 0x68, 0x00, 0x29, 0xFC, 0xDB, 0xA1, 0x6A, 0x41, 0xF4, 0x00, 0x71, 0x11, 0x60, 0x42, 0x49, + 0x19, 0x60, 0x19, 0x68, 0x00, 0x29, 0xFC, 0xDB, 0xE1, 0x6A, 0x41, 0xF4, 0x40, 0x71, 0x11, 0x60, + 0x3D, 0x4A, 0x1A, 0x60, 0x1A, 0x68, 0x00, 0x2A, 0xFC, 0xDB, 0x63, 0x68, 0x04, 0x2B, 0x4A, 0xD1, + 0x23, 0x6A, 0x36, 0x4E, 0x36, 0x4D, 0x33, 0x60, 0x36, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, + 0xFC, 0xDB, 0x63, 0x6A, 0x33, 0x60, 0x35, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, + 0xA3, 0x6A, 0x33, 0x60, 0x32, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0xE3, 0x6A, + 0x33, 0x60, 0x30, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x23, 0x6B, 0x33, 0x60, + 0x2D, 0x4B, 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x63, 0x6B, 0x33, 0x60, 0x2B, 0x4B, + 0x2B, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0xA3, 0x6B, 0x29, 0x4F, 0x43, 0xF0, 0x80, 0x03, + 0x33, 0x60, 0x2F, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x0A, 0x20, 0xFE, 0xF7, 0x7A, 0xEA, + 0xA3, 0x6B, 0x43, 0xF0, 0x80, 0x03, 0x33, 0x60, 0x2F, 0x60, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, + 0x0A, 0x20, 0xFE, 0xF7, 0x70, 0xEA, 0xA3, 0x6B, 0x23, 0xF0, 0x80, 0x03, 0x33, 0x60, 0x2F, 0x60, + 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x63, 0x68, 0x03, 0x2B, 0x44, 0xD1, 0x23, 0x6A, 0x0F, 0x4A, + 0x10, 0x49, 0x13, 0x60, 0x0E, 0x4B, 0x19, 0x60, 0x19, 0x68, 0x00, 0x29, 0xFC, 0xDB, 0x61, 0x6A, + 0x11, 0x60, 0x0E, 0x49, 0x19, 0x60, 0x25, 0xE0, 0x0C, 0xB0, 0x7F, 0x04, 0xB0, 0xB1, 0x7F, 0x04, + 0x20, 0xB3, 0x7F, 0x04, 0x24, 0xB3, 0x7F, 0x04, 0xBC, 0xB1, 0x7F, 0x04, 0xF8, 0x01, 0x00, 0x07, + 0xF4, 0x01, 0x00, 0x07, 0x30, 0xB0, 0x7F, 0x04, 0x04, 0xB0, 0x7F, 0x04, 0x14, 0xB0, 0x7F, 0x04, + 0x10, 0xB0, 0x7F, 0x04, 0x30, 0x00, 0x00, 0x80, 0xF0, 0x00, 0x00, 0x80, 0x30, 0x10, 0x00, 0x80, + 0x30, 0x20, 0x00, 0x80, 0x30, 0x30, 0x00, 0x80, 0x30, 0x40, 0x00, 0x80, 0x30, 0x50, 0x00, 0x80, + 0x30, 0x60, 0x00, 0x80, 0x19, 0x68, 0x00, 0x29, 0xFC, 0xDB, 0xA1, 0x6A, 0x11, 0x60, 0x08, 0x49, + 0x19, 0x60, 0x19, 0x68, 0x00, 0x29, 0xFC, 0xDB, 0xE1, 0x6A, 0x11, 0x60, 0x05, 0x4A, 0x1A, 0x60, + 0x1A, 0x68, 0x00, 0x2A, 0xFC, 0xDB, 0x04, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0xBD, 0xE8, 0xF0, 0x81, + 0x30, 0x20, 0x00, 0x80, 0x30, 0x30, 0x00, 0x80, 0x54, 0x00, 0x80, 0x04, 0x43, 0x68, 0x03, 0x3B, + 0x05, 0x2B, 0x1A, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x03, 0x0D, 0x19, 0x19, 0x10, 0x13, 0x90, 0xF8, + 0x68, 0x30, 0x00, 0x2B, 0x08, 0xBF, 0x80, 0x23, 0x09, 0x4A, 0x13, 0x60, 0xC2, 0xF8, 0x80, 0x30, + 0x70, 0x47, 0x90, 0xF8, 0x69, 0x30, 0xF4, 0xE7, 0x90, 0xF8, 0x6A, 0x30, 0xF1, 0xE7, 0x90, 0xF8, + 0x6B, 0x30, 0x00, 0x2B, 0x08, 0xBF, 0x33, 0x23, 0xEE, 0xE7, 0x00, 0x23, 0xEC, 0xE7, 0x00, 0xBF, + 0xDC, 0x03, 0x80, 0x04, 0x53, 0x4A, 0x13, 0x68, 0x04, 0x3A, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, + 0x10, 0x03, 0x53, 0x60, 0x53, 0x6C, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x53, 0x64, + 0xD2, 0xF8, 0x84, 0x30, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x84, 0x30, + 0xD2, 0xF8, 0xC4, 0x30, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0xC4, 0x30, + 0xC3, 0x68, 0x03, 0xF0, 0x1F, 0x03, 0x42, 0xF8, 0x04, 0x3C, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, + 0x04, 0xBF, 0x04, 0x23, 0x13, 0x60, 0xC3, 0x68, 0x3F, 0x4A, 0xC3, 0xF3, 0x04, 0x23, 0x13, 0x60, + 0x04, 0x32, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, 0x04, 0xBF, 0x04, 0x23, 0x13, 0x60, 0xC3, 0x89, + 0x3A, 0x4A, 0x03, 0xF0, 0x1F, 0x03, 0x13, 0x60, 0x04, 0x32, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, + 0x04, 0xBF, 0x04, 0x23, 0x13, 0x60, 0xC3, 0x7B, 0x35, 0x4A, 0x03, 0xF0, 0x1F, 0x03, 0x13, 0x60, + 0x04, 0x32, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, 0x04, 0xBF, 0x04, 0x23, 0x13, 0x60, 0x03, 0x69, + 0x30, 0x4A, 0x03, 0xF0, 0x1F, 0x03, 0x13, 0x60, 0x40, 0x32, 0x42, 0xF8, 0x3C, 0x3C, 0x03, 0x69, + 0xC3, 0xF3, 0x04, 0x23, 0x42, 0xF8, 0x38, 0x3C, 0x42, 0xF8, 0x34, 0x3C, 0x83, 0x68, 0x03, 0xF0, + 0x1F, 0x03, 0x13, 0x60, 0x41, 0x68, 0x04, 0x29, 0x01, 0xD0, 0x07, 0x29, 0x01, 0xD1, 0x00, 0x21, + 0x11, 0x60, 0x25, 0x4A, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, 0x04, 0xBF, 0x00, 0x23, 0x13, 0x60, + 0x83, 0x68, 0x22, 0x4A, 0xC3, 0xF3, 0x04, 0x23, 0x13, 0x60, 0x41, 0x68, 0x04, 0x29, 0x01, 0xD0, + 0x07, 0x29, 0x01, 0xD1, 0x00, 0x21, 0x11, 0x60, 0x1D, 0x4A, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, + 0x04, 0xBF, 0x00, 0x23, 0x13, 0x60, 0x43, 0x89, 0x1A, 0x4A, 0x03, 0xF0, 0x1F, 0x03, 0x13, 0x60, + 0x41, 0x68, 0x04, 0x29, 0x01, 0xD0, 0x07, 0x29, 0x01, 0xD1, 0x00, 0x21, 0x11, 0x60, 0x16, 0x4A, + 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, 0x04, 0xBF, 0x00, 0x23, 0x13, 0x60, 0xC3, 0x7A, 0x13, 0x4A, + 0x03, 0xF0, 0x1F, 0x03, 0x13, 0x60, 0x41, 0x68, 0x04, 0x29, 0x01, 0xD0, 0x07, 0x29, 0x01, 0xD1, + 0x00, 0x21, 0x11, 0x60, 0x0E, 0x4A, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, 0x04, 0xBF, 0x00, 0x23, + 0x13, 0x60, 0x70, 0x47, 0x90, 0x03, 0x80, 0x04, 0xC8, 0x03, 0x80, 0x04, 0x08, 0x04, 0x80, 0x04, + 0x48, 0x04, 0x80, 0x04, 0x40, 0x03, 0x80, 0x04, 0x84, 0x03, 0x80, 0x04, 0xC0, 0x03, 0x80, 0x04, + 0xC4, 0x03, 0x80, 0x04, 0x00, 0x04, 0x80, 0x04, 0x04, 0x04, 0x80, 0x04, 0x40, 0x04, 0x80, 0x04, + 0x44, 0x04, 0x80, 0x04, 0xC3, 0x6E, 0x10, 0xB5, 0xDA, 0x03, 0x5D, 0xD5, 0x82, 0x6D, 0x41, 0x68, + 0x54, 0x00, 0x1D, 0xD5, 0xD2, 0x09, 0x51, 0x4B, 0x51, 0x4C, 0x02, 0xF0, 0x3E, 0x02, 0x43, 0xF8, + 0x04, 0x2B, 0xA3, 0x42, 0xFB, 0xD1, 0xC3, 0x6E, 0x4E, 0x4A, 0x5B, 0x00, 0x18, 0x32, 0x03, 0xF0, + 0x1F, 0x03, 0x42, 0xF8, 0x18, 0x3C, 0x42, 0xF8, 0x14, 0x3C, 0x42, 0xF8, 0x1C, 0x3C, 0x13, 0x60, + 0xCB, 0x1E, 0x05, 0x2B, 0x40, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x0D, 0x40, 0x3F, 0x3F, 0x5C, 0x7A, + 0xDB, 0x08, 0x42, 0x4A, 0x42, 0x4C, 0x03, 0xF0, 0x1E, 0x03, 0x42, 0xF8, 0x04, 0x3B, 0xA2, 0x42, + 0xFB, 0xD1, 0xE0, 0xE7, 0xC3, 0x6E, 0x02, 0x6E, 0xDB, 0x09, 0xD2, 0x07, 0x03, 0xF0, 0x1E, 0x03, + 0x15, 0xD5, 0x3D, 0x4A, 0x13, 0x60, 0xC3, 0x69, 0xDC, 0x04, 0x41, 0xBF, 0xC3, 0x6E, 0xDB, 0x0A, + 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x65, 0x83, 0x6D, 0x00, 0x2B, 0x1D, 0xDA, 0x37, 0x4A, 0x5B, 0x00, + 0x03, 0xF0, 0x3F, 0x03, 0x13, 0x60, 0x42, 0xF8, 0x28, 0x3C, 0x53, 0x61, 0x14, 0xE0, 0x34, 0x4A, + 0x13, 0x60, 0xC3, 0x69, 0xD9, 0x04, 0x41, 0xBF, 0xC3, 0x6E, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, + 0x42, 0xF8, 0x38, 0x3C, 0x83, 0x6D, 0x00, 0x2B, 0x06, 0xDA, 0x2E, 0x4A, 0x5B, 0x00, 0x03, 0xF0, + 0x3F, 0x03, 0x13, 0x60, 0x93, 0x61, 0xD3, 0x62, 0x10, 0xBD, 0xC3, 0x6E, 0x02, 0x6E, 0xDB, 0x09, + 0xD2, 0x07, 0x03, 0xF0, 0x1E, 0x03, 0x09, 0xD5, 0x27, 0x4A, 0x13, 0x60, 0xC3, 0x69, 0xDC, 0x04, + 0xF2, 0xD5, 0xC3, 0x6E, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, 0xD6, 0xE7, 0x23, 0x4A, 0x13, 0x60, + 0xC3, 0x69, 0xD9, 0x04, 0xE8, 0xD5, 0xC3, 0x6E, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, 0x53, 0x65, + 0xE2, 0xE7, 0xC3, 0x6E, 0x02, 0x6E, 0xDB, 0x09, 0xD2, 0x07, 0x03, 0xF0, 0x1E, 0x03, 0x0B, 0xD5, + 0x1B, 0x4A, 0x13, 0x60, 0xC3, 0x69, 0xDC, 0x04, 0xD6, 0xD5, 0xC3, 0x6E, 0xDB, 0x0A, 0x03, 0xF0, + 0x1E, 0x03, 0x42, 0xF8, 0x04, 0x3C, 0xCF, 0xE7, 0x16, 0x4A, 0x13, 0x60, 0xC3, 0x69, 0xD9, 0x04, + 0xCA, 0xD5, 0xC3, 0x6E, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x61, 0xC4, 0xE7, 0xC3, 0x6E, + 0x11, 0x4A, 0xDB, 0x09, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x60, 0xC3, 0x69, 0xDB, 0x04, 0x41, 0xBF, + 0xC3, 0x6E, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, 0xD3, 0x60, 0xB5, 0xE7, 0x80, 0x07, 0x80, 0x04, + 0x00, 0x08, 0x80, 0x04, 0xDC, 0x07, 0x80, 0x04, 0x94, 0x07, 0x80, 0x04, 0xB8, 0x07, 0x80, 0x04, + 0xD4, 0x07, 0x80, 0x04, 0x8C, 0x07, 0x80, 0x04, 0xE4, 0x07, 0x80, 0x04, 0xA4, 0x07, 0x80, 0x04, + 0xA0, 0x07, 0x80, 0x04, 0xE8, 0x07, 0x80, 0x04, 0x88, 0x07, 0x80, 0x04, 0xC3, 0x6E, 0x59, 0x03, + 0x7C, 0xD5, 0xA6, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x52, 0xF8, 0x58, 0x3C, + 0x43, 0xF0, 0x08, 0x03, 0x42, 0xF8, 0x58, 0x3C, 0x02, 0xF5, 0x98, 0x72, 0x13, 0x68, 0x23, 0xF0, + 0x10, 0x03, 0x13, 0x60, 0x43, 0x68, 0x08, 0x2B, 0x01, 0xBF, 0xA2, 0xF5, 0xC6, 0x72, 0x13, 0x68, + 0x23, 0xF0, 0x80, 0x03, 0x13, 0x60, 0xD0, 0xE9, 0x1B, 0x23, 0x52, 0x00, 0x40, 0xF1, 0xD8, 0x80, + 0x97, 0x4A, 0x03, 0xF0, 0x3F, 0x03, 0x97, 0x49, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, 0xB8, 0x30, + 0x8A, 0x42, 0xF9, 0xD1, 0xC3, 0x8A, 0x94, 0x49, 0x5B, 0x00, 0x50, 0x31, 0x03, 0xF0, 0x1F, 0x03, + 0x41, 0xF8, 0x50, 0x3C, 0x0B, 0x67, 0x13, 0x60, 0x90, 0x4A, 0x13, 0x60, 0xB4, 0x3A, 0x03, 0x6F, + 0xC3, 0xF3, 0x05, 0x23, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, + 0x43, 0x69, 0x8B, 0x49, 0xDB, 0x0C, 0x03, 0xF0, 0x1E, 0x03, 0x0B, 0x60, 0x01, 0xF5, 0x94, 0x71, + 0x41, 0xF8, 0x68, 0x3C, 0x13, 0x60, 0x87, 0x4A, 0x13, 0x60, 0x24, 0x32, 0xB0, 0xF8, 0x72, 0x30, + 0x03, 0xF0, 0x3F, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, + 0xC3, 0x7D, 0x81, 0x49, 0x5B, 0x00, 0x50, 0x31, 0x03, 0xF0, 0x1F, 0x03, 0x41, 0xF8, 0x50, 0x3C, + 0x0B, 0x67, 0x13, 0x60, 0x7D, 0x4A, 0x13, 0x60, 0xB4, 0x3A, 0x90, 0xF8, 0x73, 0x30, 0x03, 0xF0, + 0x3F, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x43, 0x69, + 0x1B, 0x0F, 0x77, 0x49, 0x5B, 0x00, 0x0B, 0x60, 0xC1, 0xF8, 0xC0, 0x30, 0x13, 0x60, 0x75, 0x4A, + 0x13, 0x60, 0x6A, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0xC3, 0x6E, 0x9B, 0x03, + 0x70, 0xD5, 0x71, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x80, 0x03, 0x13, 0x60, 0x02, 0xF5, 0x9E, 0x72, + 0x13, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x13, 0x60, 0xC3, 0x6E, 0x13, 0xF0, 0x80, 0x4F, 0x43, 0x6F, + 0x00, 0xF0, 0xE6, 0x80, 0x69, 0x49, 0x03, 0xF0, 0x3F, 0x03, 0x02, 0xF5, 0x3C, 0x72, 0x13, 0x60, + 0x08, 0x32, 0xC2, 0xF8, 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x43, 0x69, 0x64, 0x49, 0x5B, 0x00, + 0x0C, 0x39, 0x03, 0xF0, 0x1F, 0x03, 0xCB, 0x60, 0xC1, 0xF8, 0xCC, 0x30, 0x13, 0x60, 0x61, 0x4A, + 0x13, 0x60, 0xB4, 0x3A, 0x43, 0x6F, 0xC3, 0xF3, 0x05, 0x23, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x43, 0x69, 0x5B, 0x49, 0xDB, 0x08, 0x03, 0xF0, 0x1E, 0x03, + 0x0B, 0x60, 0x01, 0xF5, 0x8E, 0x71, 0x41, 0xF8, 0x5C, 0x3C, 0x13, 0x60, 0x57, 0x4A, 0x13, 0x60, + 0x24, 0x32, 0xB0, 0xF8, 0x76, 0x30, 0x03, 0xF0, 0x3F, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x43, 0x69, 0x51, 0x49, 0xDB, 0x09, 0x0C, 0x39, 0x03, 0xF0, + 0x1E, 0x03, 0xCB, 0x60, 0xC1, 0xF8, 0xCC, 0x30, 0x13, 0x60, 0x4E, 0x4A, 0x13, 0x60, 0xB4, 0x3A, + 0x90, 0xF8, 0x77, 0x30, 0x03, 0xF0, 0x3F, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, 0xB8, 0x30, + 0x8A, 0x42, 0xF9, 0xD1, 0x43, 0x69, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, 0x46, 0x49, 0x0B, 0x60, + 0xC1, 0xF8, 0xC0, 0x30, 0x13, 0x60, 0x45, 0x4A, 0x13, 0x60, 0x3B, 0x4A, 0x13, 0x68, 0x43, 0xF0, + 0x80, 0x03, 0x13, 0x60, 0x2D, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x70, 0x47, + 0x5B, 0x00, 0x2B, 0x4A, 0x2B, 0x49, 0x03, 0xF0, 0x1F, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0xB0, 0xF8, 0x72, 0x30, 0x27, 0x49, 0x5B, 0x00, 0x50, 0x31, + 0x03, 0xF0, 0x1F, 0x03, 0x41, 0xF8, 0x50, 0x3C, 0x0B, 0x67, 0x13, 0x60, 0x23, 0x4A, 0x13, 0x60, + 0xB4, 0x3A, 0x03, 0x6F, 0xDB, 0x08, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x03, 0x6F, 0x1D, 0x49, 0xDB, 0x0C, 0x03, 0xF0, 0x1E, 0x03, + 0x0B, 0x60, 0x01, 0xF5, 0x94, 0x71, 0x41, 0xF8, 0x68, 0x3C, 0x13, 0x60, 0x19, 0x4A, 0x13, 0x60, + 0x24, 0x32, 0x03, 0x6F, 0xDB, 0x09, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x90, 0xF8, 0x73, 0x30, 0x13, 0x49, 0x5B, 0x00, 0x50, 0x31, + 0x03, 0xF0, 0x1F, 0x03, 0x41, 0xF8, 0x50, 0x3C, 0x0B, 0x67, 0x13, 0x60, 0x0F, 0x4A, 0x13, 0x60, + 0xB4, 0x3A, 0x03, 0x6F, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x03, 0x6F, 0x22, 0xE7, 0x00, 0xBF, 0x60, 0x00, 0x80, 0x04, + 0x84, 0x04, 0x80, 0x04, 0xCC, 0x04, 0x80, 0x04, 0xD0, 0x04, 0x80, 0x04, 0x8C, 0x05, 0x80, 0x04, + 0x24, 0x05, 0x80, 0x04, 0xE0, 0x05, 0x80, 0x04, 0x50, 0x06, 0x80, 0x04, 0x0C, 0x07, 0x80, 0x04, + 0xA4, 0x06, 0x80, 0x04, 0x60, 0x07, 0x80, 0x04, 0x54, 0x00, 0x80, 0x04, 0xC8, 0x04, 0x80, 0x04, + 0x28, 0x05, 0x80, 0x04, 0x88, 0x05, 0x80, 0x04, 0x2C, 0x05, 0x80, 0x04, 0xDC, 0x05, 0x80, 0x04, + 0xA8, 0x06, 0x80, 0x04, 0x08, 0x07, 0x80, 0x04, 0xAC, 0x06, 0x80, 0x04, 0x5C, 0x07, 0x80, 0x04, + 0x5B, 0x00, 0x2B, 0x4A, 0x2B, 0x49, 0x03, 0xF0, 0x1F, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0xB0, 0xF8, 0x76, 0x30, 0x27, 0x49, 0x5B, 0x00, 0x0C, 0x39, + 0x03, 0xF0, 0x1F, 0x03, 0xCB, 0x60, 0xC1, 0xF8, 0xCC, 0x30, 0x13, 0x60, 0x23, 0x4A, 0x13, 0x60, + 0xB4, 0x3A, 0x43, 0x6F, 0xDB, 0x08, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x43, 0x6F, 0x1D, 0x49, 0xDB, 0x0C, 0x03, 0xF0, 0x1E, 0x03, + 0x0B, 0x60, 0x01, 0xF5, 0x8E, 0x71, 0x41, 0xF8, 0x5C, 0x3C, 0x13, 0x60, 0x19, 0x4A, 0x13, 0x60, + 0x24, 0x32, 0x43, 0x6F, 0xDB, 0x09, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x90, 0xF8, 0x77, 0x30, 0x13, 0x49, 0x5B, 0x00, 0x0C, 0x39, + 0x03, 0xF0, 0x1F, 0x03, 0xCB, 0x60, 0xC1, 0xF8, 0xCC, 0x30, 0x13, 0x60, 0x0F, 0x4A, 0x13, 0x60, + 0xB4, 0x3A, 0x43, 0x6F, 0xDB, 0x0A, 0x03, 0xF0, 0x1E, 0x03, 0x13, 0x60, 0x08, 0x32, 0xC2, 0xF8, + 0xB8, 0x30, 0x8A, 0x42, 0xF9, 0xD1, 0x43, 0x6F, 0x1B, 0x0F, 0x5B, 0x00, 0x16, 0xE7, 0x00, 0xBF, + 0x80, 0x04, 0x80, 0x04, 0xC8, 0x04, 0x80, 0x04, 0x28, 0x05, 0x80, 0x04, 0x88, 0x05, 0x80, 0x04, + 0x2C, 0x05, 0x80, 0x04, 0xDC, 0x05, 0x80, 0x04, 0xA8, 0x06, 0x80, 0x04, 0x08, 0x07, 0x80, 0x04, + 0x2D, 0xE9, 0xF0, 0x4F, 0xAD, 0xF5, 0x75, 0x7D, 0x0D, 0xF1, 0x04, 0x09, 0x83, 0x46, 0x6C, 0x22, + 0x48, 0x46, 0x7E, 0x49, 0x0D, 0xF1, 0x70, 0x0A, 0xFD, 0xF7, 0x70, 0xEE, 0x0D, 0xF1, 0xDC, 0x08, + 0x6C, 0x22, 0x7B, 0x49, 0x50, 0x46, 0xFD, 0xF7, 0x6A, 0xEE, 0x52, 0xAF, 0x6C, 0x22, 0x79, 0x49, + 0x40, 0x46, 0xFD, 0xF7, 0x64, 0xEE, 0x6D, 0xAE, 0x6C, 0x22, 0x77, 0x49, 0x38, 0x46, 0xFD, 0xF7, + 0x5E, 0xEE, 0x88, 0xAD, 0x6C, 0x22, 0x75, 0x49, 0x30, 0x46, 0xFD, 0xF7, 0x58, 0xEE, 0xA3, 0xAC, + 0x6C, 0x22, 0x73, 0x49, 0x28, 0x46, 0xFD, 0xF7, 0x52, 0xEE, 0x6C, 0x22, 0x71, 0x49, 0x20, 0x46, + 0xFD, 0xF7, 0x4C, 0xEE, 0x6C, 0x22, 0x70, 0x49, 0xBE, 0xA8, 0xFD, 0xF7, 0x48, 0xEE, 0xD9, 0xAB, + 0x6C, 0x22, 0x6E, 0x49, 0x18, 0x46, 0xFD, 0xF7, 0x42, 0xEE, 0x6D, 0x4A, 0x03, 0x46, 0xDB, 0xF8, + 0x04, 0x00, 0x12, 0x68, 0x03, 0x38, 0x91, 0xB2, 0x05, 0x28, 0x27, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, + 0x03, 0x40, 0x26, 0x26, 0x6A, 0x94, 0x4F, 0xF6, 0xFF, 0x33, 0x13, 0x40, 0xB3, 0xF5, 0xA0, 0x4F, + 0x0C, 0xD0, 0x22, 0xF4, 0x80, 0x72, 0x12, 0x04, 0x12, 0x0C, 0xB2, 0xF5, 0xB8, 0x4F, 0x05, 0xD0, + 0xB2, 0xF5, 0x00, 0x5F, 0x02, 0xD0, 0xB1, 0xF5, 0x20, 0x5F, 0x1D, 0xD1, 0xDB, 0xF8, 0x78, 0x30, + 0x5C, 0x49, 0x13, 0xF0, 0x80, 0x0F, 0x5C, 0x4B, 0x0C, 0xD0, 0xA3, 0xF1, 0x90, 0x62, 0xC0, 0x3A, + 0x5A, 0xF8, 0x02, 0x20, 0x43, 0xF8, 0x04, 0x2B, 0x8B, 0x42, 0xF6, 0xD1, 0x0D, 0xF5, 0x75, 0x7D, + 0xBD, 0xE8, 0xF0, 0x8F, 0xA3, 0xF1, 0x90, 0x62, 0xC0, 0x3A, 0x59, 0xF8, 0x02, 0x20, 0x43, 0xF8, + 0x04, 0x2B, 0x8B, 0x42, 0xF6, 0xD1, 0xF1, 0xE7, 0x4F, 0x4B, 0x4E, 0x49, 0xA3, 0xF1, 0x90, 0x62, + 0xC0, 0x3A, 0x58, 0xF8, 0x02, 0x20, 0x43, 0xF8, 0x04, 0x2B, 0x8B, 0x42, 0xF6, 0xD1, 0xE5, 0xE7, + 0x4F, 0xF6, 0xFF, 0x33, 0x13, 0x40, 0xB3, 0xF5, 0xA0, 0x4F, 0x17, 0xD0, 0x22, 0xF4, 0x80, 0x72, + 0x12, 0x04, 0x12, 0x0C, 0xB2, 0xF5, 0xB8, 0x4F, 0x10, 0xD0, 0xB2, 0xF5, 0x00, 0x5F, 0x0D, 0xD0, + 0xB1, 0xF5, 0x20, 0x5F, 0x40, 0x4B, 0x0B, 0xD1, 0x3E, 0x49, 0xA3, 0xF1, 0x90, 0x62, 0xC0, 0x3A, + 0xBA, 0x58, 0x43, 0xF8, 0x04, 0x2B, 0x8B, 0x42, 0xF7, 0xD1, 0xC7, 0xE7, 0x3A, 0x4B, 0xF3, 0xE7, + 0x38, 0x49, 0xA3, 0xF1, 0x90, 0x62, 0xC0, 0x3A, 0xB2, 0x58, 0x43, 0xF8, 0x04, 0x2B, 0x8B, 0x42, + 0xF7, 0xD1, 0xBB, 0xE7, 0x4F, 0xF6, 0xFF, 0x33, 0x13, 0x40, 0xB3, 0xF5, 0xA0, 0x4F, 0x17, 0xD0, + 0x22, 0xF4, 0x80, 0x72, 0x12, 0x04, 0x12, 0x0C, 0xB2, 0xF5, 0xB8, 0x4F, 0x10, 0xD0, 0xB2, 0xF5, + 0x00, 0x5F, 0x0D, 0xD0, 0xB1, 0xF5, 0x20, 0x5F, 0x2B, 0x4B, 0x0B, 0xD1, 0x29, 0x49, 0xA3, 0xF1, + 0x90, 0x62, 0xC0, 0x3A, 0xAA, 0x58, 0x43, 0xF8, 0x04, 0x2B, 0x8B, 0x42, 0xF7, 0xD1, 0x9D, 0xE7, + 0x25, 0x4B, 0xF3, 0xE7, 0x23, 0x49, 0xA3, 0xF1, 0x90, 0x62, 0xC0, 0x3A, 0xA2, 0x58, 0x43, 0xF8, + 0x04, 0x2B, 0x8B, 0x42, 0xF7, 0xD1, 0x91, 0xE7, 0x4F, 0xF6, 0xFF, 0x30, 0x10, 0x40, 0xB0, 0xF5, + 0xA0, 0x4F, 0x0C, 0xD0, 0x22, 0xF4, 0x80, 0x72, 0x12, 0x04, 0x12, 0x0C, 0xB2, 0xF5, 0xB8, 0x4F, + 0x05, 0xD0, 0xB2, 0xF5, 0x00, 0x5F, 0x02, 0xD0, 0xB1, 0xF5, 0x20, 0x5F, 0x0B, 0xD1, 0x16, 0x4B, + 0x14, 0x49, 0xA3, 0xF1, 0x90, 0x62, 0xBE, 0xA8, 0xC0, 0x3A, 0x82, 0x58, 0x43, 0xF8, 0x04, 0x2B, + 0x8B, 0x42, 0xF6, 0xD1, 0x72, 0xE7, 0x10, 0x4A, 0x0E, 0x48, 0xA2, 0xF1, 0x90, 0x61, 0xC0, 0x39, + 0x59, 0x58, 0x42, 0xF8, 0x04, 0x1B, 0x82, 0x42, 0xF7, 0xD1, 0x67, 0xE7, 0x3C, 0xD7, 0x04, 0x00, + 0xA8, 0xD7, 0x04, 0x00, 0x14, 0xD8, 0x04, 0x00, 0x80, 0xD8, 0x04, 0x00, 0xEC, 0xD8, 0x04, 0x00, + 0x58, 0xD9, 0x04, 0x00, 0xC4, 0xD9, 0x04, 0x00, 0x30, 0xDA, 0x04, 0x00, 0x9C, 0xDA, 0x04, 0x00, + 0x00, 0x62, 0x00, 0x03, 0x2C, 0x01, 0x80, 0x04, 0xC0, 0x00, 0x80, 0x04, 0x10, 0xB5, 0x01, 0x20, + 0x08, 0x4C, 0x23, 0x68, 0x23, 0xF0, 0x80, 0x73, 0x43, 0xF4, 0x40, 0x73, 0x23, 0x60, 0xFD, 0xF7, + 0x62, 0xED, 0x23, 0x68, 0x01, 0x20, 0x43, 0xF0, 0x80, 0x73, 0x23, 0x60, 0xBD, 0xE8, 0x10, 0x40, + 0x02, 0xF0, 0x32, 0xBC, 0x00, 0xA5, 0x7F, 0x04, 0x5D, 0x4A, 0x38, 0xB5, 0x04, 0x46, 0x45, 0x68, + 0x13, 0x68, 0x08, 0x2D, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x01, 0xBF, 0x59, 0x4A, 0x13, 0x68, + 0x23, 0xF0, 0x80, 0x03, 0x13, 0x60, 0x58, 0x4A, 0xC1, 0x69, 0x13, 0x68, 0xC9, 0x07, 0x23, 0xF0, + 0x0F, 0x03, 0x4C, 0xBF, 0x43, 0xF0, 0x03, 0x03, 0x43, 0xF0, 0x0F, 0x03, 0x13, 0x60, 0xEB, 0x1E, + 0x05, 0x2B, 0x00, 0xF2, 0x87, 0x80, 0xDF, 0xE8, 0x03, 0xF0, 0x06, 0x03, 0x85, 0x85, 0x7B, 0x87, + 0x0A, 0x23, 0x0D, 0x22, 0x08, 0xE0, 0x03, 0x6E, 0x03, 0xF4, 0x80, 0x73, 0x00, 0x2B, 0x0B, 0xBF, + 0x09, 0x23, 0x07, 0x23, 0x0D, 0x22, 0x09, 0x22, 0x48, 0x49, 0x20, 0x46, 0x0A, 0x60, 0x04, 0x31, + 0xC1, 0xF8, 0x44, 0x23, 0xC1, 0xF8, 0x50, 0x23, 0xC1, 0xF8, 0x5C, 0x23, 0x00, 0x22, 0x0A, 0x60, + 0xC1, 0xF8, 0x48, 0x23, 0xC1, 0xF8, 0x54, 0x23, 0xC1, 0xF8, 0x60, 0x23, 0x40, 0x4A, 0x13, 0x60, + 0xC2, 0xF8, 0x48, 0x33, 0xC2, 0xF8, 0x54, 0x33, 0xC2, 0xF8, 0x60, 0x33, 0xFF, 0xF7, 0x80, 0xFE, + 0x20, 0x46, 0xFF, 0xF7, 0xD7, 0xFB, 0xFF, 0xF7, 0xF1, 0xFA, 0xFF, 0xF7, 0x13, 0xFB, 0x35, 0x4A, + 0x07, 0x2D, 0x13, 0x68, 0x23, 0xF0, 0x07, 0x03, 0x51, 0xD0, 0x08, 0x2D, 0x52, 0xD0, 0x04, 0x2D, + 0x53, 0xD1, 0x43, 0xF0, 0x04, 0x03, 0x43, 0xF0, 0x08, 0x03, 0x13, 0x60, 0x23, 0x68, 0xB3, 0xF5, + 0x28, 0x7F, 0x9E, 0xBF, 0x2F, 0x4B, 0x0F, 0x22, 0x1A, 0x60, 0x23, 0x68, 0x2E, 0x4A, 0xB3, 0xF5, + 0xFA, 0x7F, 0x2E, 0x4B, 0x19, 0x68, 0x43, 0xD8, 0x41, 0xF0, 0x80, 0x01, 0x19, 0x60, 0x13, 0x68, + 0x23, 0xF0, 0xE0, 0x03, 0x43, 0xF0, 0x20, 0x03, 0x13, 0x60, 0x01, 0x20, 0x28, 0x4A, 0x13, 0x68, + 0x23, 0xF4, 0x00, 0x73, 0x13, 0x60, 0xFD, 0xF7, 0xD6, 0xEC, 0x23, 0x4A, 0x13, 0x68, 0x34, 0x32, + 0x23, 0xF0, 0x08, 0x03, 0x42, 0xF8, 0x34, 0x3C, 0x13, 0x68, 0x5B, 0x07, 0xFC, 0xD5, 0x4F, 0xF4, + 0x7A, 0x70, 0xFD, 0xF7, 0xC8, 0xEC, 0x1F, 0x4B, 0x37, 0x22, 0x1A, 0x60, 0x1E, 0x4B, 0x1B, 0x68, + 0x1B, 0x0C, 0x01, 0xBF, 0x12, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x38, 0xBD, + 0x03, 0x6E, 0x03, 0xF4, 0x80, 0x73, 0x00, 0x2B, 0x0B, 0xBF, 0x08, 0x23, 0x06, 0x23, 0x0E, 0x22, + 0x0C, 0x22, 0x89, 0xE7, 0x09, 0x23, 0x7C, 0xE7, 0x0A, 0x23, 0x14, 0x22, 0x84, 0xE7, 0x43, 0xF0, + 0x03, 0x03, 0xB0, 0xE7, 0x43, 0xF0, 0x05, 0x03, 0xAD, 0xE7, 0x43, 0xF0, 0x02, 0x03, 0xAA, 0xE7, + 0x21, 0xF0, 0x80, 0x01, 0x19, 0x60, 0x13, 0x68, 0x23, 0xF0, 0xE0, 0x03, 0xBC, 0xE7, 0x00, 0xBF, + 0xF4, 0x01, 0x00, 0x07, 0x04, 0x00, 0x80, 0x04, 0x3C, 0x00, 0x80, 0x04, 0x14, 0x00, 0x80, 0x04, + 0x1C, 0x00, 0x80, 0x04, 0x20, 0x00, 0x80, 0x04, 0x4C, 0x01, 0x80, 0x04, 0x44, 0x01, 0x80, 0x04, + 0x00, 0xA5, 0x7F, 0x04, 0x58, 0x00, 0x80, 0x04, 0xF8, 0x01, 0x00, 0x07, 0x08, 0x4A, 0x13, 0x68, + 0x23, 0xF0, 0x40, 0x73, 0x13, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x18, 0x43, 0x10, 0x60, + 0x40, 0xF0, 0x00, 0x60, 0x10, 0x60, 0x4F, 0xF4, 0x7A, 0x70, 0x02, 0xF0, 0x4D, 0xBB, 0x00, 0xBF, + 0x00, 0x18, 0x00, 0x03, 0x41, 0x49, 0x42, 0x68, 0x10, 0xB5, 0x0B, 0x68, 0x04, 0x2A, 0x23, 0xF0, + 0xC0, 0x03, 0x43, 0xF0, 0x80, 0x03, 0x0B, 0x60, 0x3D, 0x4B, 0x54, 0xD1, 0x90, 0xF8, 0x24, 0x20, + 0x1A, 0x60, 0x90, 0xF8, 0x25, 0x30, 0x3B, 0x4A, 0x43, 0xF0, 0x40, 0x03, 0x13, 0x60, 0x37, 0x4B, + 0x39, 0x49, 0x1A, 0x68, 0x42, 0xF0, 0x04, 0x02, 0x1A, 0x60, 0xC2, 0x69, 0x12, 0xF0, 0x01, 0x0F, + 0x4F, 0xD0, 0x0A, 0x68, 0x02, 0xF0, 0x03, 0x02, 0x03, 0x2A, 0xFA, 0xD1, 0x1A, 0x68, 0x22, 0xF0, + 0x04, 0x02, 0x1A, 0x60, 0x00, 0x22, 0x14, 0x46, 0x13, 0x46, 0x03, 0xF1, 0x90, 0x73, 0x96, 0x33, + 0x9B, 0x00, 0x1B, 0x68, 0x00, 0x2B, 0x49, 0xD0, 0x3F, 0x2B, 0x08, 0xBF, 0x01, 0x22, 0x61, 0x1C, + 0x04, 0x29, 0x3C, 0xD1, 0x25, 0x4B, 0x19, 0x68, 0x21, 0xF0, 0xC0, 0x01, 0x19, 0x60, 0xC1, 0x69, + 0xC9, 0x04, 0x18, 0xD5, 0x19, 0x68, 0x21, 0xF0, 0xC0, 0x01, 0x41, 0xF0, 0x40, 0x01, 0x19, 0x60, + 0x19, 0x68, 0x41, 0xF0, 0x04, 0x01, 0x19, 0x60, 0xC3, 0x69, 0x1F, 0x49, 0x13, 0xF0, 0x01, 0x0F, + 0x2E, 0xD0, 0x0B, 0x68, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0xFA, 0xD1, 0x17, 0x49, 0x0B, 0x68, + 0x23, 0xF0, 0x04, 0x03, 0x0B, 0x60, 0x15, 0x49, 0x82, 0xF0, 0x01, 0x00, 0x0B, 0x68, 0x23, 0xF0, + 0xC0, 0x03, 0x0B, 0x60, 0x10, 0xBD, 0x06, 0x3A, 0x02, 0x2A, 0x12, 0x4A, 0x91, 0xBF, 0x90, 0xF8, + 0x28, 0x10, 0x04, 0x21, 0x19, 0x60, 0x40, 0x23, 0x9C, 0xBF, 0x19, 0x60, 0x90, 0xF8, 0x29, 0x30, + 0xA4, 0xE7, 0x0A, 0x68, 0x02, 0xF0, 0x0F, 0x02, 0x0F, 0x2A, 0xFA, 0xD1, 0xAE, 0xE7, 0x01, 0x29, + 0x14, 0xBF, 0x04, 0xF1, 0x2F, 0x03, 0x0B, 0x46, 0x0C, 0x46, 0xAE, 0xE7, 0x01, 0x22, 0xB6, 0xE7, + 0x0B, 0x68, 0x03, 0xF0, 0x0F, 0x03, 0x0F, 0x2B, 0xFA, 0xD1, 0xCF, 0xE7, 0x08, 0x00, 0x80, 0x04, + 0x0C, 0x00, 0x80, 0x04, 0x10, 0x00, 0x80, 0x04, 0x88, 0x01, 0x80, 0x04, 0x48, 0x4B, 0x1A, 0x68, + 0x22, 0xF0, 0x30, 0x02, 0x42, 0xF0, 0x20, 0x02, 0x1A, 0x60, 0x42, 0x68, 0x04, 0x2A, 0x01, 0xBF, + 0x44, 0x49, 0x0A, 0x68, 0x42, 0xF0, 0x02, 0x02, 0x0A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x01, 0x02, + 0x1A, 0x60, 0xC1, 0x69, 0x40, 0x4A, 0x11, 0xF0, 0x01, 0x01, 0x60, 0xD0, 0x13, 0x68, 0x03, 0xF0, + 0x03, 0x03, 0x03, 0x2B, 0x01, 0xD1, 0x00, 0x21, 0x02, 0xE0, 0x13, 0x68, 0x9B, 0x06, 0xF5, 0xD5, + 0x37, 0x4B, 0x1A, 0x68, 0x22, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x30, 0x02, + 0x1A, 0x60, 0xC2, 0x69, 0xD2, 0x04, 0x18, 0xD5, 0x1A, 0x68, 0x22, 0xF0, 0x30, 0x02, 0x42, 0xF0, + 0x10, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0xC3, 0x69, 0x13, 0xF0, + 0x01, 0x03, 0x44, 0xD0, 0x2C, 0x48, 0x02, 0x68, 0x02, 0xF0, 0x03, 0x02, 0x03, 0x2A, 0x49, 0xD1, + 0x27, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x25, 0x4A, 0x13, 0x68, 0x23, 0xF0, + 0x30, 0x03, 0x13, 0x60, 0x25, 0x4B, 0x1B, 0x68, 0xD2, 0xF8, 0x6C, 0x02, 0x03, 0xF0, 0x07, 0x03, + 0x00, 0xF0, 0x07, 0x00, 0x98, 0x42, 0x38, 0xBF, 0x18, 0x46, 0x21, 0x4B, 0x1B, 0x68, 0x03, 0xF0, + 0x07, 0x03, 0x98, 0x42, 0x38, 0xBF, 0x18, 0x46, 0x1E, 0x4B, 0x1B, 0x68, 0x03, 0xF0, 0x07, 0x03, + 0x83, 0x42, 0x38, 0xBF, 0x03, 0x46, 0x1C, 0x48, 0x02, 0x33, 0x03, 0xF0, 0x07, 0x03, 0x02, 0x68, + 0x22, 0xF0, 0x07, 0x02, 0x13, 0x43, 0x19, 0x4A, 0x03, 0x60, 0x81, 0xF0, 0x01, 0x00, 0x13, 0x68, + 0x43, 0xF0, 0x20, 0x03, 0x13, 0x60, 0x70, 0x47, 0x13, 0x68, 0x9B, 0x06, 0x05, 0xD4, 0x13, 0x68, + 0x03, 0xF0, 0x0F, 0x03, 0x0F, 0x2B, 0xF7, 0xD1, 0xA2, 0xE7, 0x01, 0x21, 0xA0, 0xE7, 0x0A, 0x4A, + 0x13, 0x68, 0x03, 0xF0, 0x0F, 0x03, 0x0F, 0x2B, 0xBA, 0xD0, 0x13, 0x68, 0x9B, 0x06, 0xF7, 0xD5, + 0x01, 0x21, 0xB5, 0xE7, 0x02, 0x68, 0x92, 0x06, 0xAD, 0xD5, 0x19, 0x46, 0xB0, 0xE7, 0x00, 0xBF, + 0x08, 0x00, 0x80, 0x04, 0x54, 0x00, 0x80, 0x04, 0x84, 0x01, 0x80, 0x04, 0x6C, 0x02, 0x80, 0x04, + 0x2C, 0x03, 0x80, 0x04, 0x34, 0x03, 0x80, 0x04, 0x38, 0x00, 0x80, 0x04, 0x04, 0x00, 0x80, 0x04, + 0x2D, 0xE9, 0xF8, 0x43, 0x06, 0x46, 0x43, 0x68, 0x08, 0x2B, 0x01, 0xBF, 0xA4, 0x4A, 0x00, 0x23, + 0x13, 0x60, 0xD3, 0x61, 0xA3, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x43, 0xF0, 0x02, 0x03, + 0x13, 0x60, 0xD2, 0xF8, 0x6C, 0x36, 0x23, 0xF0, 0x3F, 0x03, 0x43, 0xF0, 0x0F, 0x03, 0xC2, 0xF8, + 0x6C, 0x36, 0xD2, 0xF8, 0x70, 0x36, 0x23, 0xF0, 0x3F, 0x03, 0x43, 0xF0, 0x0F, 0x03, 0xC2, 0xF8, + 0x70, 0x36, 0xD2, 0xF8, 0x6C, 0x38, 0x23, 0xF0, 0x3F, 0x03, 0x43, 0xF0, 0x0F, 0x03, 0xC2, 0xF8, + 0x6C, 0x38, 0xD2, 0xF8, 0x70, 0x38, 0x23, 0xF0, 0x3F, 0x03, 0x43, 0xF0, 0x0F, 0x03, 0xC2, 0xF8, + 0x70, 0x38, 0x91, 0x4B, 0x1A, 0x68, 0x42, 0xF0, 0x06, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, + 0x01, 0x02, 0x1A, 0x60, 0x8D, 0x4A, 0x13, 0x68, 0x03, 0xF0, 0x0C, 0x03, 0x0C, 0x2B, 0xFA, 0xD1, + 0x14, 0x68, 0x14, 0xF0, 0x03, 0x04, 0x03, 0xD0, 0x01, 0x24, 0x89, 0x48, 0xFD, 0xF7, 0xCA, 0xEA, + 0xF3, 0x69, 0xDB, 0x07, 0x0C, 0xD4, 0x87, 0x4A, 0x13, 0x68, 0x03, 0xF0, 0x0C, 0x03, 0x0C, 0x2B, + 0xFA, 0xD1, 0x13, 0x68, 0x9F, 0x07, 0x03, 0xD0, 0x01, 0x24, 0x83, 0x48, 0xFD, 0xF7, 0xBA, 0xEA, + 0x82, 0x4B, 0x4F, 0xF0, 0xFF, 0x37, 0x82, 0x4D, 0xDF, 0xF8, 0x98, 0x92, 0x1B, 0x68, 0x81, 0x4B, + 0xDF, 0xF8, 0x94, 0x82, 0x1B, 0x68, 0x80, 0x4B, 0x1B, 0x68, 0x80, 0x4B, 0x1B, 0x68, 0x80, 0x4B, + 0x1B, 0x68, 0x80, 0x4B, 0x1B, 0x68, 0x80, 0x4B, 0x1B, 0x68, 0x80, 0x4B, 0x1B, 0x68, 0x80, 0x4B, + 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, 0x48, 0x3C, 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, 0x08, 0xD8, + 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, 0x96, 0xEA, 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, 0x08, 0xBF, + 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, 0x45, 0x45, 0xEB, 0xD1, 0x76, 0x4B, 0x4F, 0xF0, 0xFF, 0x37, + 0xDF, 0xF8, 0x48, 0x92, 0xDF, 0xF8, 0x48, 0x82, 0x1B, 0x68, 0x73, 0x4B, 0x1B, 0x68, 0x73, 0x4B, + 0x1B, 0x68, 0x73, 0x4B, 0x1B, 0x68, 0x73, 0x4B, 0x1B, 0x68, 0x73, 0x4B, 0x1B, 0x68, 0x73, 0x4B, + 0x1B, 0x68, 0x73, 0x4B, 0x1B, 0x68, 0x73, 0x4B, 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, 0x48, 0x3C, + 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, 0x08, 0xD8, 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, 0x6A, 0xEA, + 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, 0x08, 0xBF, 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, 0x45, 0x45, + 0xEB, 0xD1, 0xF3, 0x69, 0xDD, 0x07, 0x58, 0xD4, 0x67, 0x4B, 0x4F, 0xF0, 0xFF, 0x37, 0x67, 0x4D, + 0xDF, 0xF8, 0xF0, 0x91, 0x1B, 0x68, 0x66, 0x4B, 0xDF, 0xF8, 0xEC, 0x81, 0x1B, 0x68, 0x65, 0x4B, + 0x1B, 0x68, 0x65, 0x4B, 0x1B, 0x68, 0x65, 0x4B, 0x1B, 0x68, 0x65, 0x4B, 0x1B, 0x68, 0x65, 0x4B, + 0x1B, 0x68, 0x65, 0x4B, 0x1B, 0x68, 0x65, 0x4B, 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, 0x48, 0x3C, + 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, 0x08, 0xD8, 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, 0x3A, 0xEA, + 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, 0x08, 0xBF, 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, 0x45, 0x45, + 0xEB, 0xD1, 0x5B, 0x4B, 0x4F, 0xF0, 0xFF, 0x37, 0xDF, 0xF8, 0xA0, 0x91, 0xDF, 0xF8, 0xA0, 0x81, + 0x1B, 0x68, 0x58, 0x4B, 0x1B, 0x68, 0x58, 0x4B, 0x1B, 0x68, 0x58, 0x4B, 0x1B, 0x68, 0x58, 0x4B, + 0x1B, 0x68, 0x58, 0x4B, 0x1B, 0x68, 0x58, 0x4B, 0x1B, 0x68, 0x58, 0x4B, 0x1B, 0x68, 0x58, 0x4B, + 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, 0x48, 0x3C, 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, 0x08, 0xD8, + 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, 0x0E, 0xEA, 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, 0x08, 0xBF, + 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, 0x45, 0x45, 0xEB, 0xD1, 0x23, 0x4B, 0x1A, 0x68, 0x22, 0xF0, + 0x03, 0x02, 0x1A, 0x60, 0xF2, 0x69, 0xD0, 0x04, 0x30, 0xD5, 0x1E, 0x49, 0x0A, 0x68, 0x22, 0xF0, + 0x03, 0x02, 0x42, 0xF0, 0x02, 0x02, 0x0A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x06, 0x02, 0x1A, 0x60, + 0x1A, 0x68, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x18, 0x4A, 0x13, 0x68, 0x03, 0xF0, 0x0C, 0x03, + 0x0C, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x99, 0x07, 0x03, 0xD0, 0x01, 0x24, 0x14, 0x48, 0xFD, 0xF7, + 0xE2, 0xE9, 0xF3, 0x69, 0xDA, 0x07, 0x0C, 0xD4, 0x12, 0x4A, 0x13, 0x68, 0x03, 0xF0, 0x0C, 0x03, + 0x0C, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x9B, 0x07, 0x03, 0xD0, 0x01, 0x24, 0x0E, 0x48, 0xFD, 0xF7, + 0xD2, 0xE9, 0x09, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x13, 0x60, 0x05, 0x4A, 0x84, 0xF0, + 0x01, 0x00, 0x13, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x13, 0x60, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, + 0x00, 0x08, 0x80, 0x04, 0x98, 0x01, 0x80, 0x04, 0x90, 0x01, 0x80, 0x04, 0x40, 0x08, 0x80, 0x04, + 0x47, 0xE0, 0x04, 0x00, 0x40, 0x0A, 0x80, 0x04, 0x6B, 0xE0, 0x04, 0x00, 0x50, 0x08, 0x80, 0x04, + 0x98, 0x08, 0x80, 0x04, 0x54, 0x08, 0x80, 0x04, 0x58, 0x08, 0x80, 0x04, 0x5C, 0x08, 0x80, 0x04, + 0x60, 0x08, 0x80, 0x04, 0x64, 0x08, 0x80, 0x04, 0x68, 0x08, 0x80, 0x04, 0x6C, 0x08, 0x80, 0x04, + 0x70, 0x08, 0x80, 0x04, 0x74, 0x08, 0x80, 0x04, 0x78, 0x08, 0x80, 0x04, 0x7C, 0x08, 0x80, 0x04, + 0x80, 0x08, 0x80, 0x04, 0x84, 0x08, 0x80, 0x04, 0x88, 0x08, 0x80, 0x04, 0x8C, 0x08, 0x80, 0x04, + 0x90, 0x08, 0x80, 0x04, 0x94, 0x08, 0x80, 0x04, 0x50, 0x0A, 0x80, 0x04, 0x98, 0x0A, 0x80, 0x04, + 0x54, 0x0A, 0x80, 0x04, 0x58, 0x0A, 0x80, 0x04, 0x5C, 0x0A, 0x80, 0x04, 0x60, 0x0A, 0x80, 0x04, + 0x64, 0x0A, 0x80, 0x04, 0x68, 0x0A, 0x80, 0x04, 0x6C, 0x0A, 0x80, 0x04, 0x70, 0x0A, 0x80, 0x04, + 0x74, 0x0A, 0x80, 0x04, 0x78, 0x0A, 0x80, 0x04, 0x7C, 0x0A, 0x80, 0x04, 0x80, 0x0A, 0x80, 0x04, + 0x84, 0x0A, 0x80, 0x04, 0x88, 0x0A, 0x80, 0x04, 0x8C, 0x0A, 0x80, 0x04, 0x90, 0x0A, 0x80, 0x04, + 0x94, 0x0A, 0x80, 0x04, 0x90, 0xE0, 0x04, 0x00, 0xBC, 0x08, 0x80, 0x04, 0xB8, 0xE0, 0x04, 0x00, + 0xE0, 0x08, 0x80, 0x04, 0xE0, 0xE0, 0x04, 0x00, 0xBC, 0x0A, 0x80, 0x04, 0x08, 0xE1, 0x04, 0x00, + 0xE0, 0x0A, 0x80, 0x04, 0x97, 0x4A, 0x2D, 0xE9, 0xF8, 0x43, 0x00, 0x23, 0x06, 0x46, 0x13, 0x60, + 0x53, 0x60, 0x93, 0x66, 0xD3, 0x66, 0x53, 0x6E, 0x23, 0xF0, 0x0C, 0x03, 0x43, 0xF0, 0x08, 0x03, + 0x53, 0x66, 0x91, 0x4B, 0x1A, 0x68, 0x42, 0xF0, 0x10, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, + 0x20, 0x02, 0x1A, 0x60, 0x8D, 0x4A, 0x13, 0x68, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0xFA, 0xD1, + 0x14, 0x68, 0x14, 0xF0, 0x0C, 0x04, 0x03, 0xD0, 0x01, 0x24, 0x89, 0x48, 0xFD, 0xF7, 0x32, 0xE9, + 0xF3, 0x69, 0xD8, 0x07, 0x0D, 0xD4, 0x87, 0x4A, 0x13, 0x68, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, + 0xFA, 0xD1, 0x13, 0x68, 0x13, 0xF0, 0x0C, 0x0F, 0x03, 0xD0, 0x01, 0x24, 0x82, 0x48, 0xFD, 0xF7, + 0x22, 0xE9, 0x82, 0x4B, 0x4F, 0xF0, 0xFF, 0x37, 0x81, 0x4D, 0xDF, 0xF8, 0x9C, 0x92, 0x1B, 0x68, + 0x80, 0x4B, 0xDF, 0xF8, 0x98, 0x82, 0x1B, 0x68, 0x7F, 0x4B, 0x1B, 0x68, 0x7F, 0x4B, 0x1B, 0x68, + 0x7F, 0x4B, 0x1B, 0x68, 0x7F, 0x4B, 0x1B, 0x68, 0x7F, 0x4B, 0x1B, 0x68, 0x7F, 0x4B, 0x1B, 0x68, + 0x7F, 0x4B, 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, 0x48, 0x3C, 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, + 0x08, 0xD8, 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, 0xFE, 0xE8, 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, + 0x08, 0xBF, 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, 0x45, 0x45, 0xEB, 0xD1, 0x75, 0x4B, 0x4F, 0xF0, + 0xFF, 0x37, 0xDF, 0xF8, 0x4C, 0x92, 0xDF, 0xF8, 0x4C, 0x82, 0x1B, 0x68, 0x72, 0x4B, 0x1B, 0x68, + 0x72, 0x4B, 0x1B, 0x68, 0x72, 0x4B, 0x1B, 0x68, 0x72, 0x4B, 0x1B, 0x68, 0x72, 0x4B, 0x1B, 0x68, + 0x72, 0x4B, 0x1B, 0x68, 0x72, 0x4B, 0x1B, 0x68, 0x72, 0x4B, 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, + 0x48, 0x3C, 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, 0x08, 0xD8, 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, + 0xD2, 0xE8, 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, 0x08, 0xBF, 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, + 0x45, 0x45, 0xEB, 0xD1, 0xF3, 0x69, 0xD9, 0x07, 0x58, 0xD4, 0x67, 0x4B, 0x4F, 0xF0, 0xFF, 0x37, + 0x66, 0x4D, 0xDF, 0xF8, 0xF4, 0x91, 0x1B, 0x68, 0x65, 0x4B, 0xDF, 0xF8, 0xF0, 0x81, 0x1B, 0x68, + 0x64, 0x4B, 0x1B, 0x68, 0x64, 0x4B, 0x1B, 0x68, 0x64, 0x4B, 0x1B, 0x68, 0x64, 0x4B, 0x1B, 0x68, + 0x64, 0x4B, 0x1B, 0x68, 0x64, 0x4B, 0x1B, 0x68, 0x64, 0x4B, 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, + 0x48, 0x3C, 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, 0x08, 0xD8, 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, + 0xA2, 0xE8, 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, 0x08, 0xBF, 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, + 0x45, 0x45, 0xEB, 0xD1, 0x5A, 0x4B, 0x4F, 0xF0, 0xFF, 0x37, 0xDF, 0xF8, 0xA4, 0x91, 0xDF, 0xF8, + 0xA4, 0x81, 0x1B, 0x68, 0x57, 0x4B, 0x1B, 0x68, 0x57, 0x4B, 0x1B, 0x68, 0x57, 0x4B, 0x1B, 0x68, + 0x57, 0x4B, 0x1B, 0x68, 0x57, 0x4B, 0x1B, 0x68, 0x57, 0x4B, 0x1B, 0x68, 0x57, 0x4B, 0x1B, 0x68, + 0x57, 0x4B, 0x1B, 0x68, 0x2B, 0x68, 0x55, 0xF8, 0x48, 0x3C, 0x2A, 0x68, 0xD2, 0x1A, 0x06, 0x2A, + 0x08, 0xD8, 0x39, 0x46, 0x48, 0x46, 0xFD, 0xF7, 0x76, 0xE8, 0xF3, 0x6E, 0x13, 0xF0, 0x80, 0x5F, + 0x08, 0xBF, 0x01, 0x24, 0x04, 0x35, 0x01, 0x37, 0x45, 0x45, 0xEB, 0xD1, 0x22, 0x4B, 0x1A, 0x68, + 0x22, 0xF0, 0x60, 0x02, 0x1A, 0x60, 0xF2, 0x69, 0xD2, 0x04, 0x32, 0xD5, 0x49, 0x49, 0x0A, 0x68, + 0x22, 0xF0, 0x0C, 0x02, 0x42, 0xF0, 0x04, 0x02, 0x0A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x10, 0x02, + 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x20, 0x02, 0x1A, 0x60, 0x18, 0x4A, 0x13, 0x68, 0x03, 0xF0, + 0x03, 0x03, 0x03, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x13, 0xF0, 0x0C, 0x0F, 0x03, 0xD0, 0x01, 0x24, + 0x13, 0x48, 0xFD, 0xF7, 0x48, 0xE8, 0xF3, 0x69, 0xDB, 0x07, 0x0D, 0xD4, 0x11, 0x4A, 0x13, 0x68, + 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x13, 0xF0, 0x0C, 0x0F, 0x03, 0xD0, + 0x01, 0x24, 0x0D, 0x48, 0xFD, 0xF7, 0x36, 0xE8, 0x07, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x60, 0x03, + 0x13, 0x60, 0x30, 0x4A, 0x84, 0xF0, 0x01, 0x00, 0x13, 0x68, 0x23, 0xF0, 0x0C, 0x03, 0x13, 0x60, + 0xBD, 0xE8, 0xF8, 0x83, 0x34, 0x01, 0x80, 0x04, 0x90, 0x01, 0x80, 0x04, 0xE0, 0x08, 0x80, 0x04, + 0x30, 0xE1, 0x04, 0x00, 0xE0, 0x0A, 0x80, 0x04, 0x55, 0xE1, 0x04, 0x00, 0xF0, 0x08, 0x80, 0x04, + 0x38, 0x09, 0x80, 0x04, 0xF4, 0x08, 0x80, 0x04, 0xF8, 0x08, 0x80, 0x04, 0xFC, 0x08, 0x80, 0x04, + 0x00, 0x09, 0x80, 0x04, 0x04, 0x09, 0x80, 0x04, 0x08, 0x09, 0x80, 0x04, 0x0C, 0x09, 0x80, 0x04, + 0x10, 0x09, 0x80, 0x04, 0x14, 0x09, 0x80, 0x04, 0x18, 0x09, 0x80, 0x04, 0x1C, 0x09, 0x80, 0x04, + 0x20, 0x09, 0x80, 0x04, 0x24, 0x09, 0x80, 0x04, 0x28, 0x09, 0x80, 0x04, 0x2C, 0x09, 0x80, 0x04, + 0x30, 0x09, 0x80, 0x04, 0x34, 0x09, 0x80, 0x04, 0xF0, 0x0A, 0x80, 0x04, 0x38, 0x0B, 0x80, 0x04, + 0xF4, 0x0A, 0x80, 0x04, 0xF8, 0x0A, 0x80, 0x04, 0xFC, 0x0A, 0x80, 0x04, 0x00, 0x0B, 0x80, 0x04, + 0x04, 0x0B, 0x80, 0x04, 0x08, 0x0B, 0x80, 0x04, 0x0C, 0x0B, 0x80, 0x04, 0x10, 0x0B, 0x80, 0x04, + 0x14, 0x0B, 0x80, 0x04, 0x18, 0x0B, 0x80, 0x04, 0x1C, 0x0B, 0x80, 0x04, 0x20, 0x0B, 0x80, 0x04, + 0x24, 0x0B, 0x80, 0x04, 0x28, 0x0B, 0x80, 0x04, 0x2C, 0x0B, 0x80, 0x04, 0x30, 0x0B, 0x80, 0x04, + 0x34, 0x0B, 0x80, 0x04, 0x98, 0x01, 0x80, 0x04, 0x7B, 0xE1, 0x04, 0x00, 0x5C, 0x09, 0x80, 0x04, + 0xA4, 0xE1, 0x04, 0x00, 0x80, 0x09, 0x80, 0x04, 0xCD, 0xE1, 0x04, 0x00, 0x5C, 0x0B, 0x80, 0x04, + 0xF6, 0xE1, 0x04, 0x00, 0x80, 0x0B, 0x80, 0x04, 0xC2, 0x6D, 0xF8, 0xB5, 0x04, 0x46, 0xD5, 0x06, + 0x40, 0xF1, 0xA2, 0x80, 0x51, 0x4B, 0x02, 0xF0, 0x0F, 0x02, 0x51, 0x48, 0x19, 0x68, 0x41, 0xF0, + 0x20, 0x01, 0x19, 0x60, 0x01, 0x68, 0x21, 0xF0, 0x0F, 0x01, 0x0A, 0x43, 0x4D, 0x49, 0x02, 0x60, + 0x0A, 0x68, 0xD0, 0x07, 0xFC, 0xD5, 0x1A, 0x68, 0x22, 0xF0, 0x20, 0x02, 0x1A, 0x60, 0x48, 0x4B, + 0x19, 0x68, 0xE3, 0x6D, 0x1A, 0x06, 0x02, 0xD5, 0x47, 0x48, 0xFC, 0xF7, 0x9C, 0xEF, 0x47, 0x4B, + 0x19, 0x68, 0xE3, 0x6D, 0x1B, 0x06, 0x04, 0xD5, 0x01, 0xF0, 0x1F, 0x01, 0x44, 0x48, 0xFC, 0xF7, + 0x92, 0xEF, 0x44, 0x4B, 0x1E, 0x68, 0xE3, 0x6D, 0x06, 0xF0, 0x1F, 0x06, 0x1F, 0x06, 0x03, 0xD5, + 0x31, 0x46, 0x41, 0x48, 0xFC, 0xF7, 0x86, 0xEF, 0x40, 0x4B, 0x19, 0x68, 0xE3, 0x6D, 0x1D, 0x06, + 0x04, 0xD5, 0x01, 0xF0, 0x1F, 0x01, 0x3E, 0x48, 0xFC, 0xF7, 0x7C, 0xEF, 0x3D, 0x4B, 0x1D, 0x68, + 0xE3, 0x6D, 0x05, 0xF0, 0x1F, 0x05, 0x18, 0x06, 0x03, 0xD5, 0x29, 0x46, 0x3A, 0x48, 0xFC, 0xF7, + 0x72, 0xEF, 0xE3, 0x6D, 0x99, 0x06, 0x57, 0xD5, 0x31, 0x06, 0x46, 0xEA, 0x06, 0x27, 0x41, 0xEA, + 0x06, 0x41, 0x1A, 0x06, 0x41, 0xEA, 0x07, 0x01, 0xE1, 0x60, 0x02, 0xD5, 0x33, 0x48, 0xFC, 0xF7, + 0x62, 0xEF, 0xE3, 0x6D, 0x27, 0x61, 0x1B, 0x06, 0x03, 0xD5, 0x39, 0x46, 0x30, 0x48, 0xFC, 0xF7, + 0x5A, 0xEF, 0x29, 0x04, 0xE3, 0x6D, 0x41, 0xEA, 0x05, 0x21, 0x1E, 0x06, 0x41, 0xEA, 0x05, 0x01, + 0x41, 0xEA, 0x05, 0x61, 0xA1, 0x60, 0x02, 0xD5, 0x2A, 0x48, 0xFC, 0xF7, 0x4C, 0xEF, 0xE2, 0x6D, + 0x55, 0x06, 0x29, 0xD5, 0xC2, 0xF3, 0x04, 0x23, 0x10, 0x06, 0x4F, 0xEA, 0x03, 0x41, 0x41, 0xEA, + 0x03, 0x21, 0x41, 0xEA, 0x03, 0x01, 0x41, 0xEA, 0x03, 0x61, 0xE1, 0x60, 0x02, 0xD5, 0x1F, 0x48, + 0xFC, 0xF7, 0x38, 0xEF, 0xE3, 0x6D, 0xC3, 0xF3, 0x04, 0x41, 0x1A, 0x06, 0x41, 0xEA, 0x01, 0x21, + 0x21, 0x61, 0x02, 0xD5, 0x1A, 0x48, 0xFC, 0xF7, 0x2E, 0xEF, 0xE2, 0x6D, 0xC2, 0xF3, 0x04, 0x63, + 0x19, 0x04, 0x41, 0xEA, 0x03, 0x21, 0x19, 0x43, 0x41, 0xEA, 0x03, 0x61, 0x13, 0x06, 0xA1, 0x60, + 0x02, 0xD5, 0x14, 0x48, 0xFC, 0xF7, 0x1E, 0xEF, 0x20, 0x46, 0xFE, 0xF7, 0x5B, 0xFD, 0xC8, 0x20, + 0xBD, 0xE8, 0xF8, 0x40, 0x01, 0xF0, 0x20, 0xBE, 0xF8, 0xBD, 0x00, 0xBF, 0x50, 0x00, 0x80, 0x04, + 0xB4, 0x00, 0x80, 0x04, 0xAC, 0x01, 0x80, 0x04, 0x1F, 0xE2, 0x04, 0x00, 0xB0, 0x01, 0x80, 0x04, + 0x38, 0xE2, 0x04, 0x00, 0xB4, 0x01, 0x80, 0x04, 0x51, 0xE2, 0x04, 0x00, 0xB8, 0x01, 0x80, 0x04, + 0x68, 0xE2, 0x04, 0x00, 0xBC, 0x01, 0x80, 0x04, 0x81, 0xE2, 0x04, 0x00, 0x98, 0xE2, 0x04, 0x00, + 0xB0, 0xE2, 0x04, 0x00, 0xC8, 0xE2, 0x04, 0x00, 0x03, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, + 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x60, 0xB0, 0x7F, 0x04, 0x10, 0xB5, 0x00, 0x23, + 0x0D, 0x4C, 0x01, 0x46, 0x18, 0x46, 0x23, 0x60, 0xFF, 0xF7, 0xEE, 0xFF, 0x0B, 0x4A, 0x13, 0x68, + 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x4F, 0xF0, 0xFF, 0x32, 0x09, 0x4B, 0x1A, 0x60, 0x40, 0xF2, + 0xFF, 0x72, 0x5A, 0x60, 0x4F, 0xF6, 0xFF, 0x72, 0x9A, 0x60, 0x01, 0x23, 0x05, 0x4A, 0x23, 0x60, + 0x13, 0x68, 0xDB, 0x07, 0xFC, 0xD5, 0x10, 0xBD, 0x20, 0xB3, 0x7F, 0x04, 0x14, 0xA0, 0x7F, 0x04, + 0x20, 0xA0, 0x7F, 0x04, 0x24, 0xB3, 0x7F, 0x04, 0x01, 0x46, 0x08, 0xB5, 0x01, 0x20, 0xFF, 0xF7, + 0xCB, 0xFF, 0x08, 0x4A, 0x00, 0x23, 0x08, 0x48, 0x13, 0x60, 0x01, 0x68, 0x21, 0xF0, 0x01, 0x01, + 0x01, 0x60, 0x06, 0x49, 0x0B, 0x60, 0x4B, 0x60, 0x8B, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x20, 0x03, + 0x13, 0x60, 0x08, 0xBD, 0x30, 0xB0, 0x7F, 0x04, 0xB0, 0xB1, 0x7F, 0x04, 0x20, 0xA0, 0x7F, 0x04, + 0x83, 0x6F, 0x9B, 0x00, 0x41, 0xBF, 0x03, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0xC0, 0xB1, 0x7F, 0x04, 0x0E, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x43, + 0x13, 0x60, 0x52, 0xF8, 0x20, 0x3C, 0x43, 0xF0, 0x40, 0x43, 0x42, 0xF8, 0x20, 0x3C, 0x02, 0xF5, + 0xFF, 0x52, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x43, 0x13, 0x60, 0x02, 0xF5, 0x80, 0x52, 0x13, 0x68, + 0x43, 0xF0, 0x40, 0x43, 0x13, 0x60, 0x02, 0xF5, 0x80, 0x52, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x43, + 0x13, 0x60, 0x70, 0x47, 0xA0, 0xB1, 0x7F, 0x04, 0x2D, 0xE9, 0xF0, 0x4F, 0x04, 0x23, 0xA1, 0xB0, + 0x08, 0x27, 0x0E, 0x22, 0x4F, 0xF0, 0x06, 0x09, 0x09, 0x93, 0x4F, 0xF0, 0x03, 0x08, 0xCD, 0xE9, + 0x1B, 0x33, 0x08, 0x23, 0x19, 0x93, 0x05, 0x21, 0x1D, 0x93, 0x01, 0x23, 0x0B, 0x93, 0x02, 0x23, + 0x18, 0x93, 0x1B, 0x23, 0xCD, 0xE9, 0x16, 0x37, 0x0C, 0x23, 0x15, 0x93, 0x80, 0x23, 0x11, 0x93, + 0x62, 0x23, 0x0A, 0x93, 0x0A, 0x23, 0x07, 0x93, 0x10, 0x23, 0xCD, 0xE9, 0x0F, 0x32, 0x14, 0x23, + 0x0E, 0x93, 0x02, 0x23, 0x02, 0x93, 0x47, 0x46, 0x0D, 0x93, 0x42, 0x46, 0xCD, 0xE9, 0x13, 0x39, + 0x00, 0x23, 0x0C, 0x93, 0x43, 0x46, 0x4F, 0xF0, 0x04, 0x0A, 0x05, 0x46, 0x01, 0x20, 0xCD, 0xF8, + 0x20, 0xA0, 0xCD, 0xF8, 0x48, 0xA0, 0xCD, 0xF8, 0x0C, 0x80, 0xCD, 0xF8, 0x18, 0x90, 0xCD, 0xF8, + 0x04, 0x80, 0xCD, 0xE9, 0x04, 0x00, 0x48, 0x1E, 0x1A, 0x90, 0x02, 0xD1, 0x21, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x02, 0x29, 0x28, 0x68, 0x14, 0xBF, 0x1A, 0x99, 0x00, 0x26, 0xCD, 0xE9, 0x1E, 0x23, + 0x4F, 0xEA, 0x50, 0x00, 0x18, 0xBF, 0x0E, 0x03, 0x1A, 0x99, 0x01, 0xF0, 0x1A, 0xEB, 0xA9, 0x6F, + 0x04, 0x46, 0xD5, 0xF8, 0x04, 0xB0, 0xDD, 0xE9, 0x1E, 0x23, 0x11, 0xF0, 0x02, 0x0F, 0x24, 0xD0, + 0xA9, 0x6D, 0xC1, 0xF3, 0x42, 0x50, 0x0D, 0x90, 0xC1, 0xF3, 0xC5, 0x30, 0x0F, 0x90, 0xC1, 0xF3, + 0xC3, 0x20, 0x01, 0x90, 0xC1, 0xF3, 0x84, 0x10, 0x01, 0xF0, 0x3F, 0x01, 0x06, 0x90, 0x0E, 0x91, + 0xE9, 0x6D, 0xC1, 0xF3, 0xC4, 0x50, 0xC1, 0xF3, 0xC4, 0x37, 0x07, 0x90, 0xC1, 0xF3, 0x84, 0x19, + 0xC1, 0xF3, 0x02, 0x50, 0x01, 0xF0, 0x3F, 0x01, 0x10, 0x91, 0x29, 0x6E, 0x03, 0x90, 0xC1, 0xF3, + 0x08, 0x30, 0xC1, 0xF3, 0x0B, 0x01, 0x11, 0x90, 0x0A, 0x91, 0xBB, 0xF1, 0x03, 0x0F, 0x47, 0xD1, + 0x21, 0x46, 0x32, 0x20, 0xCD, 0xE9, 0x1E, 0x23, 0xFE, 0xF7, 0xF2, 0xF8, 0xC3, 0xB2, 0x21, 0x46, + 0x0A, 0x20, 0x0F, 0x93, 0xFE, 0xF7, 0xEC, 0xF8, 0xC0, 0xB2, 0x21, 0x46, 0x02, 0x28, 0x38, 0xBF, + 0x02, 0x20, 0x01, 0x90, 0x0F, 0x20, 0xFE, 0xF7, 0xE3, 0xF8, 0xC3, 0xB2, 0x21, 0x46, 0x35, 0x20, + 0x06, 0x93, 0xFE, 0xF7, 0xDD, 0xF8, 0xC3, 0xB2, 0x21, 0x46, 0x08, 0x20, 0x0E, 0x93, 0xFE, 0xF7, + 0xD7, 0xF8, 0xC7, 0xB2, 0x21, 0x46, 0x26, 0x20, 0x02, 0x2F, 0x38, 0xBF, 0x02, 0x27, 0xFE, 0xF7, + 0xCF, 0xF8, 0xC3, 0xB2, 0x21, 0x46, 0x41, 0xF6, 0x78, 0x60, 0x10, 0x93, 0xFE, 0xF7, 0xC8, 0xF8, + 0x21, 0x46, 0xC0, 0xF3, 0x4F, 0x13, 0x4F, 0xF4, 0xAF, 0x70, 0x0A, 0x93, 0xFE, 0xF7, 0xC0, 0xF8, + 0x83, 0xB2, 0x21, 0x46, 0x4F, 0xF4, 0xB4, 0x70, 0x11, 0x93, 0xFE, 0xF7, 0xB9, 0xF8, 0xDD, 0xF8, + 0x18, 0x90, 0xC0, 0xF3, 0x47, 0x13, 0x1C, 0x93, 0x07, 0x97, 0x03, 0x97, 0x02, 0x23, 0x5E, 0xE0, + 0xBB, 0xF1, 0x04, 0x0F, 0x6B, 0xD1, 0x21, 0x46, 0x23, 0x20, 0xCD, 0xE9, 0x1E, 0x23, 0xFE, 0xF7, + 0xA7, 0xF8, 0xC3, 0xB2, 0x21, 0x46, 0x08, 0x20, 0x0F, 0x93, 0xFE, 0xF7, 0xA1, 0xF8, 0xC0, 0xB2, + 0x21, 0x46, 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, 0x01, 0x90, 0x06, 0x20, 0xFE, 0xF7, 0x98, 0xF8, + 0xC0, 0xB2, 0x21, 0x46, 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, 0x07, 0x90, 0x0A, 0x20, 0xFE, 0xF7, + 0x8F, 0xF8, 0xC0, 0xB2, 0x21, 0x46, 0x08, 0x28, 0x38, 0xBF, 0x08, 0x20, 0x19, 0x90, 0x0F, 0x20, + 0xFE, 0xF7, 0x86, 0xF8, 0xC3, 0xB2, 0x21, 0x46, 0x31, 0x20, 0x06, 0x93, 0xFE, 0xF7, 0x80, 0xF8, + 0xC3, 0xB2, 0x21, 0x46, 0x03, 0x20, 0x0E, 0x93, 0xFE, 0xF7, 0x7A, 0xF8, 0xC3, 0xB2, 0x21, 0x46, + 0x22, 0x20, 0x00, 0x2B, 0x08, 0xBF, 0x01, 0x23, 0x0B, 0x93, 0xFE, 0xF7, 0x71, 0xF8, 0xC3, 0xB2, + 0x21, 0x46, 0x41, 0xF6, 0x78, 0x60, 0x10, 0x93, 0xFE, 0xF7, 0x6A, 0xF8, 0x21, 0x46, 0xC0, 0xF3, + 0x4F, 0x13, 0x4F, 0xF4, 0xAF, 0x70, 0x0A, 0x93, 0xFE, 0xF7, 0x62, 0xF8, 0x83, 0xB2, 0x21, 0x46, + 0x4F, 0xF4, 0xB4, 0x70, 0x11, 0x93, 0xFE, 0xF7, 0x5B, 0xF8, 0xC0, 0xF3, 0x47, 0x13, 0xDD, 0xF8, + 0x18, 0x90, 0x1C, 0x93, 0x07, 0x9B, 0x18, 0x93, 0x01, 0x9B, 0x03, 0x93, 0x03, 0x23, 0x0D, 0x93, + 0xDD, 0xE9, 0x1E, 0x23, 0xAB, 0xF1, 0x03, 0x01, 0x05, 0x29, 0x00, 0xF2, 0x61, 0x81, 0xDF, 0xE8, + 0x11, 0xF0, 0x0C, 0x01, 0xB5, 0x00, 0x5F, 0x01, 0x5F, 0x01, 0xEE, 0x01, 0x70, 0x02, 0xBB, 0xF1, + 0x07, 0x0F, 0x4D, 0xD1, 0x21, 0x46, 0x32, 0x20, 0xCD, 0xE9, 0x1E, 0x23, 0xFE, 0xF7, 0x38, 0xF8, + 0xC0, 0xB2, 0x21, 0x46, 0x04, 0x28, 0x38, 0xBF, 0x04, 0x20, 0x0F, 0x90, 0x0A, 0x20, 0xFE, 0xF7, + 0x2F, 0xF8, 0xC3, 0xB2, 0x21, 0x46, 0x18, 0x20, 0x00, 0x2B, 0x08, 0xBF, 0x01, 0x23, 0x01, 0x93, + 0xFE, 0xF7, 0x26, 0xF8, 0xC0, 0xB2, 0x21, 0x46, 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, 0x06, 0x90, + 0x46, 0x20, 0xFE, 0xF7, 0x1D, 0xF8, 0xC3, 0xB2, 0x21, 0x46, 0x08, 0x20, 0x0E, 0x93, 0xFE, 0xF7, + 0x17, 0xF8, 0xC7, 0xB2, 0x21, 0x46, 0x1B, 0x20, 0x02, 0x2F, 0x38, 0xBF, 0x02, 0x27, 0xFE, 0xF7, + 0x0F, 0xF8, 0x21, 0x46, 0x5F, 0xFA, 0x80, 0xF9, 0x2A, 0x20, 0xFE, 0xF7, 0x09, 0xF8, 0xC3, 0xB2, + 0x21, 0x46, 0x40, 0xF6, 0x3C, 0x70, 0x10, 0x93, 0xFE, 0xF7, 0x02, 0xF8, 0x21, 0x46, 0xC0, 0xF3, + 0x4F, 0x13, 0xD2, 0x20, 0x0A, 0x93, 0xFD, 0xF7, 0xFB, 0xFF, 0x83, 0xB2, 0x21, 0x46, 0xDC, 0x20, + 0x11, 0x93, 0xFD, 0xF7, 0xF5, 0xFF, 0xC3, 0xB2, 0x07, 0x97, 0x03, 0x97, 0x1B, 0x93, 0x3D, 0xE7, + 0xBB, 0xF1, 0x08, 0x0F, 0x9E, 0xD1, 0x21, 0x46, 0x28, 0x20, 0xCD, 0xE9, 0x1E, 0x23, 0xFD, 0xF7, + 0xE7, 0xFF, 0xC3, 0xB2, 0x21, 0x46, 0x0A, 0x20, 0x0F, 0x93, 0xFD, 0xF7, 0xE1, 0xFF, 0x5F, 0xFA, + 0x80, 0xF9, 0x21, 0x46, 0x12, 0x20, 0x4B, 0x46, 0x02, 0x2B, 0x38, 0xBF, 0x02, 0x23, 0x01, 0x93, + 0xFD, 0xF7, 0xD6, 0xFF, 0xC0, 0xB2, 0x21, 0x46, 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, 0x06, 0x90, + 0x41, 0x20, 0xFD, 0xF7, 0xCD, 0xFF, 0xC3, 0xB2, 0x21, 0x46, 0x58, 0x46, 0x0E, 0x93, 0xFD, 0xF7, + 0xC7, 0xFF, 0xC7, 0xB2, 0x21, 0x46, 0x15, 0x20, 0x02, 0x2F, 0x3B, 0x46, 0x38, 0xBF, 0x02, 0x23, + 0x07, 0x93, 0x4B, 0x46, 0x04, 0x2B, 0x38, 0xBF, 0x04, 0x23, 0x04, 0x2F, 0x38, 0xBF, 0x04, 0x27, + 0x03, 0x93, 0xFD, 0xF7, 0xB5, 0xFF, 0x21, 0x46, 0x5F, 0xFA, 0x80, 0xF9, 0x2A, 0x20, 0xFD, 0xF7, + 0xAF, 0xFF, 0xC3, 0xB2, 0x21, 0x46, 0x4F, 0xF4, 0x74, 0x60, 0x10, 0x93, 0xFD, 0xF7, 0xA8, 0xFF, + 0x21, 0x46, 0xC0, 0xF3, 0x4F, 0x13, 0x4F, 0xF4, 0x8C, 0x70, 0x0A, 0x93, 0xFD, 0xF7, 0xA0, 0xFF, + 0x83, 0xB2, 0x21, 0x46, 0x4F, 0xF4, 0x91, 0x70, 0x11, 0x93, 0xFD, 0xF7, 0x99, 0xFF, 0xC3, 0xB2, + 0x1B, 0x93, 0x04, 0x23, 0x0D, 0x93, 0xDD, 0xE9, 0x1E, 0x23, 0x43, 0xE7, 0x21, 0x46, 0x0F, 0x20, + 0xFD, 0xF7, 0x8E, 0xFF, 0xC0, 0xB2, 0x21, 0x46, 0x0C, 0x28, 0x38, 0xBF, 0x0C, 0x20, 0x14, 0x90, + 0x05, 0x20, 0xFD, 0xF7, 0x85, 0xFF, 0xC0, 0xB2, 0x21, 0x46, 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, + 0x02, 0x90, 0x0A, 0x20, 0xFD, 0xF7, 0x7C, 0xFF, 0xC0, 0xB2, 0x02, 0x9B, 0x21, 0x46, 0x03, 0x28, + 0x38, 0xBF, 0x03, 0x20, 0x03, 0xF1, 0x01, 0x08, 0x08, 0x90, 0xAA, 0x20, 0xFD, 0xF7, 0x70, 0xFF, + 0x21, 0x46, 0xC0, 0xF3, 0x47, 0x13, 0xB6, 0x48, 0x5F, 0xFA, 0x88, 0xF8, 0x09, 0x93, 0xFD, 0xF7, + 0x67, 0xFF, 0xC0, 0xF3, 0x87, 0x23, 0xB9, 0xF1, 0x04, 0x0F, 0x16, 0x93, 0x4F, 0xF4, 0xA4, 0x63, + 0x2B, 0x62, 0x4F, 0xF0, 0x08, 0x03, 0xAB, 0x62, 0x98, 0xBF, 0xC9, 0xF1, 0x09, 0x07, 0x03, 0x9B, + 0x4F, 0xF0, 0x06, 0x01, 0xDD, 0xF8, 0x20, 0xA0, 0x98, 0xBF, 0xFF, 0xB2, 0x05, 0x91, 0x88, 0xBF, + 0x04, 0x27, 0x07, 0x33, 0x07, 0x22, 0xDB, 0xB2, 0x0A, 0x21, 0x17, 0x93, 0x0B, 0x9B, 0x07, 0x33, + 0xDB, 0xB2, 0x1D, 0x93, 0x05, 0x23, 0x12, 0x93, 0x0E, 0x23, 0x15, 0x93, 0x04, 0x23, 0x13, 0x93, + 0x00, 0x23, 0x0C, 0x93, 0x05, 0x23, 0x04, 0x91, 0x52, 0xE0, 0x21, 0x46, 0x08, 0x20, 0xFD, 0xF7, + 0x37, 0xFF, 0x21, 0x46, 0x80, 0x46, 0x0A, 0x20, 0xFD, 0xF7, 0x32, 0xFF, 0xC3, 0xB2, 0x02, 0x2B, + 0x08, 0x93, 0x40, 0xF2, 0xC5, 0x80, 0x5F, 0xFA, 0x88, 0xF0, 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, + 0x02, 0x90, 0x02, 0x9B, 0x0F, 0x21, 0x20, 0x46, 0x03, 0xF1, 0x01, 0x08, 0x01, 0xF0, 0x9A, 0xE9, + 0xC3, 0xB2, 0x5F, 0xFA, 0x88, 0xF8, 0x16, 0x93, 0x2B, 0x6E, 0x13, 0xF4, 0x80, 0x73, 0x00, 0xF0, + 0xB2, 0x80, 0x41, 0xF6, 0x50, 0x33, 0x4F, 0xF0, 0x10, 0x0E, 0x2B, 0x62, 0x05, 0x22, 0x00, 0x23, + 0x06, 0x21, 0xC5, 0xE9, 0x0A, 0xE3, 0x04, 0x23, 0x05, 0x93, 0x07, 0xEB, 0x09, 0x00, 0x04, 0x91, + 0x51, 0x1C, 0xDD, 0xF8, 0x20, 0xA0, 0x81, 0x42, 0x02, 0xEB, 0x03, 0x01, 0x01, 0xF1, 0x02, 0x01, + 0x02, 0xF1, 0x03, 0x00, 0x15, 0x91, 0xA8, 0xBF, 0xC9, 0xF1, 0x02, 0x07, 0x03, 0x99, 0xA0, 0xEB, + 0x03, 0x00, 0xA4, 0xBF, 0xBF, 0x18, 0xFF, 0xB2, 0x02, 0x31, 0x19, 0x44, 0xC9, 0xB2, 0x17, 0x91, + 0xC1, 0xB2, 0x0C, 0x20, 0x12, 0x91, 0x04, 0x21, 0xCD, 0xE9, 0x13, 0x10, 0x00, 0x21, 0x0C, 0x91, + 0xDD, 0xE9, 0x0F, 0x01, 0x41, 0xEA, 0x00, 0x41, 0x15, 0x98, 0x41, 0xEA, 0x00, 0x61, 0x16, 0x98, + 0x41, 0xEA, 0x00, 0x21, 0x6F, 0x48, 0x31, 0x50, 0x07, 0x98, 0x0E, 0x99, 0x41, 0xEA, 0x00, 0x41, + 0x6D, 0x48, 0x41, 0xEA, 0x07, 0x21, 0x31, 0x50, 0x11, 0x04, 0x17, 0x98, 0x41, 0xEA, 0x03, 0x61, + 0x01, 0x43, 0x12, 0x98, 0x41, 0xEA, 0x00, 0x21, 0x68, 0x48, 0x31, 0x50, 0x13, 0x99, 0x0C, 0x98, + 0x09, 0x03, 0x41, 0xEA, 0x00, 0x51, 0x14, 0x98, 0x01, 0x43, 0x65, 0x48, 0x31, 0x50, 0x0D, 0x99, + 0x06, 0x98, 0x09, 0x04, 0x41, 0xEA, 0x00, 0x61, 0x01, 0x98, 0x41, 0xEA, 0x09, 0x01, 0x41, 0xEA, + 0x00, 0x21, 0x60, 0x48, 0x31, 0x50, 0x4F, 0xEA, 0x0A, 0x41, 0x08, 0x98, 0x41, 0xEA, 0x00, 0x61, + 0x02, 0x98, 0x01, 0x43, 0x5C, 0x48, 0x41, 0xEA, 0x08, 0x21, 0x31, 0x50, 0x04, 0x30, 0x07, 0x99, + 0x02, 0x31, 0x41, 0xF0, 0x00, 0x71, 0x41, 0xF4, 0x00, 0x31, 0x31, 0x50, 0x09, 0x98, 0x1C, 0x99, + 0x41, 0xF4, 0x80, 0x51, 0x41, 0xEA, 0x00, 0x61, 0x41, 0xEA, 0x00, 0x41, 0x53, 0x48, 0x31, 0x50, + 0x18, 0x98, 0x1D, 0x99, 0x41, 0xEA, 0x00, 0x21, 0x51, 0x48, 0x41, 0xF4, 0x00, 0x31, 0x31, 0x50, + 0x50, 0x49, 0x51, 0x48, 0x70, 0x50, 0x04, 0x31, 0x50, 0x48, 0x70, 0x50, 0x04, 0x31, 0x19, 0x98, + 0x70, 0x50, 0x04, 0x31, 0x4E, 0x48, 0x70, 0x50, 0x04, 0x31, 0x1B, 0x98, 0x70, 0x50, 0x68, 0x39, + 0x4C, 0x48, 0x09, 0x68, 0x00, 0x68, 0x21, 0xF0, 0x40, 0x41, 0x00, 0x0C, 0x4A, 0x48, 0x18, 0xBF, + 0x41, 0xF0, 0x80, 0x41, 0xBB, 0xF1, 0x07, 0x0F, 0x40, 0xF0, 0xEB, 0x80, 0x21, 0xF0, 0x7F, 0x71, + 0x21, 0xF4, 0x40, 0x31, 0x41, 0xF4, 0x9E, 0x01, 0x01, 0x40, 0x41, 0xF4, 0x89, 0x71, 0xE7, 0xE0, + 0x06, 0x23, 0x02, 0x93, 0x3D, 0xE7, 0x41, 0xF6, 0x14, 0x72, 0x06, 0x21, 0x2A, 0x62, 0x20, 0x22, + 0xC5, 0xE9, 0x0A, 0x23, 0x05, 0x23, 0x05, 0x91, 0x07, 0x22, 0x0A, 0x21, 0x4D, 0xE7, 0x64, 0x00, + 0xB4, 0xF5, 0x05, 0x7F, 0x2C, 0xD8, 0xC3, 0x23, 0x6B, 0x62, 0x06, 0x23, 0xAB, 0x62, 0x2B, 0x6E, + 0xDB, 0x05, 0x6B, 0xD5, 0x1A, 0x23, 0x04, 0x21, 0x4F, 0xF0, 0x43, 0x08, 0x05, 0x91, 0xC5, 0xE9, + 0x09, 0x83, 0x06, 0x22, 0x03, 0x23, 0x0A, 0x21, 0x04, 0x91, 0x00, 0x21, 0x29, 0x62, 0xD1, 0x18, + 0x05, 0x31, 0x4F, 0xF0, 0x05, 0x0A, 0x15, 0x91, 0xD0, 0x46, 0x03, 0x99, 0xCD, 0xF8, 0x20, 0xA0, + 0xCD, 0xF8, 0x30, 0xA0, 0x05, 0x31, 0x19, 0x44, 0xC9, 0xB2, 0x17, 0x91, 0x0D, 0x21, 0x12, 0x91, + 0x18, 0x21, 0x16, 0x91, 0x03, 0x21, 0x02, 0x91, 0x0C, 0x21, 0xCD, 0xE9, 0x13, 0xA1, 0x3F, 0xE7, + 0xB4, 0xF5, 0x16, 0x7F, 0x03, 0xD2, 0x03, 0x23, 0x6B, 0x62, 0x17, 0x23, 0xCE, 0xE7, 0x40, 0xF2, + 0x9A, 0x23, 0x9C, 0x42, 0x03, 0xD8, 0x23, 0x23, 0x6B, 0x62, 0x18, 0x23, 0xC6, 0xE7, 0xB4, 0xF5, + 0x37, 0x7F, 0x03, 0xD8, 0x23, 0x23, 0x6B, 0x62, 0x19, 0x23, 0xBF, 0xE7, 0xB4, 0xF5, 0x48, 0x7F, + 0x03, 0xD2, 0x43, 0x23, 0x6B, 0x62, 0x1A, 0x23, 0xB8, 0xE7, 0xB4, 0xF5, 0x69, 0x7F, 0x97, 0xBF, + 0x83, 0x23, 0xC3, 0x23, 0x6B, 0x62, 0x1C, 0x23, 0x84, 0xBF, 0x6B, 0x62, 0x1E, 0x23, 0xAD, 0xE7, + 0x38, 0x12, 0x01, 0x00, 0x00, 0xB1, 0x7F, 0x04, 0x04, 0xB1, 0x7F, 0x04, 0x08, 0xB1, 0x7F, 0x04, + 0x0C, 0xB1, 0x7F, 0x04, 0x10, 0xB1, 0x7F, 0x04, 0x14, 0xB1, 0x7F, 0x04, 0x20, 0xB1, 0x7F, 0x04, + 0x24, 0xB1, 0x7F, 0x04, 0x28, 0xB1, 0x7F, 0x04, 0x05, 0x0C, 0x0E, 0x00, 0x1C, 0x02, 0x0C, 0x44, + 0x02, 0x00, 0x10, 0x0A, 0xF8, 0x01, 0x00, 0x07, 0x00, 0xF0, 0xFF, 0xFF, 0x1C, 0x23, 0x06, 0x21, + 0x4F, 0xF0, 0x83, 0x0E, 0x05, 0x91, 0xC5, 0xE9, 0x09, 0xE3, 0x07, 0x22, 0x04, 0x23, 0x0C, 0x21, + 0x92, 0xE7, 0x21, 0x46, 0x0E, 0x20, 0xFD, 0xF7, 0xD3, 0xFD, 0xC0, 0xB2, 0x21, 0x46, 0x05, 0x28, + 0x38, 0xBF, 0x05, 0x20, 0x0C, 0x90, 0x0F, 0x20, 0xFD, 0xF7, 0xCA, 0xFD, 0xC0, 0xB2, 0x21, 0x46, + 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, 0x02, 0x90, 0x02, 0x20, 0xFD, 0xF7, 0xC1, 0xFD, 0xC0, 0xB2, + 0x21, 0x46, 0x02, 0x28, 0x38, 0xBF, 0x02, 0x20, 0x08, 0x90, 0x05, 0x20, 0xFD, 0xF7, 0xB8, 0xFD, + 0x0A, 0x9B, 0x5F, 0xFA, 0x80, 0xFA, 0x21, 0x46, 0xBA, 0xF1, 0x02, 0x0F, 0x4F, 0xF0, 0x04, 0x00, + 0x38, 0xBF, 0x4F, 0xF0, 0x02, 0x0A, 0x03, 0xEB, 0xC3, 0x03, 0xC3, 0xF3, 0x47, 0x13, 0x16, 0x93, + 0xFD, 0xF7, 0xA6, 0xFD, 0x07, 0x46, 0x21, 0x46, 0x01, 0x20, 0x11, 0x37, 0xFD, 0xF7, 0xA0, 0xFD, + 0x34, 0x22, 0x1B, 0x23, 0x3F, 0x1A, 0xC5, 0xE9, 0x09, 0x23, 0xFB, 0xB2, 0xDD, 0xF8, 0x08, 0x80, + 0x04, 0x27, 0x12, 0x93, 0x0A, 0x22, 0x03, 0x9B, 0x11, 0x21, 0x0E, 0x33, 0xDB, 0xB2, 0x17, 0x93, + 0x0C, 0x9B, 0x13, 0x93, 0x18, 0x23, 0x15, 0x93, 0x0C, 0x23, 0x14, 0x93, 0x05, 0x23, 0x05, 0x93, + 0x49, 0xE6, 0xBB, 0xF1, 0x08, 0x0F, 0x7F, 0xF4, 0x17, 0xAF, 0x01, 0x40, 0x41, 0xF4, 0x7C, 0x71, + 0x3E, 0x48, 0x01, 0x60, 0x68, 0x68, 0x3E, 0x49, 0x08, 0x28, 0x01, 0xD0, 0x04, 0x28, 0x47, 0xD1, + 0x4F, 0xF0, 0xF9, 0x70, 0x08, 0x60, 0x3B, 0x48, 0xDF, 0xF8, 0x14, 0xE1, 0x3A, 0x4C, 0x01, 0x68, + 0x21, 0xF4, 0x7F, 0x41, 0x21, 0xF0, 0x0F, 0x01, 0x41, 0xF4, 0x50, 0x61, 0x41, 0xF0, 0x05, 0x01, + 0x01, 0x60, 0x00, 0x20, 0x35, 0x49, 0x08, 0x60, 0xAB, 0xF1, 0x06, 0x01, 0x02, 0x29, 0x69, 0x6A, + 0x31, 0xD8, 0xA8, 0x6A, 0xBB, 0xF1, 0x08, 0x0F, 0x40, 0xEA, 0x01, 0x41, 0x46, 0xF8, 0x0E, 0x10, + 0xE9, 0x6A, 0x4F, 0xEA, 0x01, 0x41, 0x31, 0x51, 0x3C, 0xD0, 0x2D, 0x48, 0x31, 0x58, 0x21, 0xF4, + 0x7F, 0x61, 0x41, 0xF4, 0xCC, 0x61, 0x31, 0x50, 0xA9, 0x6F, 0x11, 0xF0, 0x20, 0x0F, 0x29, 0x49, + 0x3D, 0xD1, 0x05, 0x9C, 0x04, 0x98, 0x01, 0x3C, 0x01, 0x38, 0x44, 0xF0, 0x00, 0x74, 0x44, 0xEA, + 0x00, 0x40, 0x01, 0x43, 0x24, 0x48, 0x31, 0x50, 0x24, 0x49, 0x25, 0x48, 0x70, 0x50, 0x0A, 0x98, + 0x11, 0x99, 0x41, 0xEA, 0x00, 0x41, 0x23, 0x48, 0x31, 0x50, 0x1A, 0x99, 0xFF, 0xF7, 0xF3, 0xBB, + 0x4F, 0xF4, 0x84, 0x00, 0xB6, 0xE7, 0x28, 0x6A, 0xBB, 0xF1, 0x04, 0x0F, 0x41, 0xEA, 0x00, 0x40, + 0x46, 0xF8, 0x0E, 0x00, 0xD5, 0xE9, 0x0A, 0x01, 0x41, 0xEA, 0x00, 0x41, 0x31, 0x51, 0xCC, 0xD1, + 0xD5, 0xE9, 0x0C, 0x01, 0x41, 0xEA, 0x00, 0x41, 0x17, 0x48, 0x31, 0x50, 0x17, 0x49, 0xA8, 0x6B, + 0x70, 0x50, 0xC2, 0xE7, 0xD5, 0xE9, 0x0F, 0x01, 0x41, 0xEA, 0x00, 0x41, 0x12, 0x48, 0x31, 0x50, + 0x68, 0x6D, 0xA9, 0x6C, 0x41, 0xEA, 0x00, 0x41, 0x10, 0x48, 0x31, 0x50, 0xB5, 0xE7, 0x05, 0x98, + 0x04, 0x9C, 0x40, 0xF0, 0x00, 0x70, 0x40, 0xEA, 0x04, 0x40, 0xC2, 0xE7, 0xD0, 0xB0, 0x7F, 0x04, + 0xD4, 0xB0, 0x7F, 0x04, 0xD8, 0xB0, 0x7F, 0x04, 0xE0, 0xB0, 0x7F, 0x04, 0xB0, 0xB1, 0x7F, 0x04, + 0xF4, 0xB0, 0x7F, 0x04, 0x00, 0x80, 0x80, 0x00, 0x90, 0xB1, 0x7F, 0x04, 0x94, 0xB1, 0x7F, 0x04, + 0x02, 0x02, 0x10, 0x00, 0x64, 0xB0, 0x7F, 0x04, 0xE8, 0xB0, 0x7F, 0x04, 0xEC, 0xB0, 0x7F, 0x04, + 0xDC, 0xB0, 0x7F, 0x04, 0x6E, 0x4B, 0x4F, 0xF0, 0x00, 0x42, 0x2D, 0xE9, 0xF0, 0x47, 0x6D, 0x4F, + 0x1A, 0x60, 0x83, 0x69, 0x08, 0x37, 0xC2, 0x69, 0x03, 0xF0, 0x0F, 0x04, 0xC3, 0xF3, 0x07, 0x16, + 0xC3, 0xF3, 0x01, 0x31, 0xC3, 0xF3, 0x81, 0x33, 0x15, 0x07, 0x4F, 0xEA, 0x03, 0x49, 0x4F, 0xEA, + 0x03, 0x25, 0x4F, 0xEA, 0x03, 0x62, 0x18, 0xBF, 0x04, 0xF1, 0xFF, 0x34, 0x45, 0xEA, 0x09, 0x0E, + 0x4E, 0xEA, 0x02, 0x0C, 0xA4, 0xF1, 0x08, 0x08, 0x47, 0xF8, 0x08, 0xCC, 0xDF, 0xF8, 0x8C, 0xC1, + 0xB8, 0xF1, 0x03, 0x0F, 0x53, 0xD8, 0xDF, 0xE8, 0x08, 0xF0, 0x02, 0x3D, 0x44, 0x4A, 0x43, 0xF0, + 0xF8, 0x5E, 0x4E, 0xF4, 0xF8, 0x1E, 0x4E, 0xEA, 0x05, 0x05, 0xCC, 0xF8, 0x00, 0x50, 0x41, 0xF6, + 0x1F, 0x72, 0x3A, 0x60, 0x02, 0x2B, 0x4A, 0xD0, 0x43, 0xF6, 0x3F, 0x72, 0x43, 0xF6, 0x01, 0x75, + 0x01, 0x2B, 0x08, 0xBF, 0x2A, 0x46, 0x50, 0x4D, 0x03, 0x29, 0x50, 0x4F, 0x2A, 0x60, 0xA3, 0xF1, + 0x02, 0x02, 0x22, 0x44, 0x0B, 0x44, 0x4F, 0xEA, 0x02, 0x25, 0x18, 0xBF, 0x42, 0xF4, 0x7C, 0x12, + 0x23, 0x44, 0x4B, 0x49, 0x08, 0xBF, 0x45, 0xEA, 0x02, 0x45, 0x2A, 0x43, 0x04, 0x31, 0x3A, 0x60, + 0x9A, 0x1F, 0x42, 0xEA, 0x02, 0x2C, 0xA6, 0xF1, 0x0E, 0x07, 0x46, 0x4D, 0x4C, 0xEA, 0x02, 0x48, + 0x48, 0xEA, 0x02, 0x6E, 0x41, 0xF8, 0x04, 0xEC, 0x03, 0x2F, 0x6F, 0xD8, 0xDF, 0xE8, 0x07, 0xF0, + 0x22, 0x3A, 0x54, 0x69, 0x43, 0xF0, 0xF8, 0x5E, 0x4E, 0xEA, 0x05, 0x05, 0x45, 0xEA, 0x09, 0x05, + 0xC3, 0xE7, 0x1A, 0x43, 0x42, 0xEA, 0x0E, 0x02, 0xCC, 0xF8, 0x00, 0x20, 0xBF, 0xE7, 0x1A, 0x43, + 0x42, 0xEA, 0x0E, 0x02, 0xCC, 0xF8, 0x00, 0x20, 0x43, 0xF4, 0xF8, 0x52, 0xB9, 0xE7, 0x1D, 0x43, + 0x49, 0xEA, 0x02, 0x02, 0x2A, 0x43, 0xCC, 0xF8, 0x00, 0x20, 0x3D, 0x60, 0xB2, 0xE7, 0x40, 0xF2, + 0x01, 0x12, 0xB8, 0xE7, 0x4C, 0xF0, 0x70, 0x62, 0x42, 0xF4, 0x70, 0x22, 0x0A, 0x60, 0x40, 0xF6, + 0x0F, 0x72, 0x2A, 0x60, 0xC2, 0x69, 0xD2, 0x04, 0x45, 0xD5, 0xB0, 0xF8, 0x7A, 0x20, 0x02, 0xF0, + 0x07, 0x02, 0x01, 0x3A, 0x02, 0x2A, 0x03, 0xD9, 0x06, 0x3E, 0x1E, 0x44, 0x26, 0x4B, 0x1E, 0x60, + 0xBD, 0xE8, 0xF0, 0x87, 0xB0, 0xF8, 0x7A, 0x70, 0x07, 0xF0, 0x07, 0x07, 0x01, 0x2F, 0x0C, 0xD1, + 0x0B, 0x2C, 0x0E, 0xD1, 0x5C, 0x1F, 0x42, 0xF0, 0x70, 0x62, 0x42, 0xEA, 0x04, 0x22, 0x42, 0xEA, + 0x04, 0x42, 0x0A, 0x60, 0xDA, 0x1D, 0x1C, 0x49, 0xD8, 0xE7, 0x02, 0x2F, 0x01, 0xD1, 0x0A, 0x2C, + 0xEF, 0xE7, 0x48, 0xF0, 0x70, 0x62, 0xD1, 0xE7, 0xB0, 0xF8, 0x7A, 0x70, 0x07, 0xF0, 0x07, 0x07, + 0x01, 0x2F, 0x0B, 0xD1, 0x0A, 0x2C, 0x09, 0xD1, 0x5C, 0x1F, 0x22, 0x06, 0x42, 0xEA, 0x04, 0x42, + 0x42, 0xEA, 0x0C, 0x02, 0x0A, 0x60, 0x03, 0xF1, 0x08, 0x02, 0xE4, 0xE7, 0xC1, 0xF8, 0x00, 0xE0, + 0xBD, 0xE7, 0xC1, 0xF8, 0x00, 0xE0, 0x42, 0xF4, 0x70, 0x62, 0xBA, 0xE7, 0xC1, 0xF8, 0x00, 0xE0, + 0xC5, 0xF8, 0x00, 0xC0, 0xB6, 0xE7, 0x08, 0x4B, 0x1F, 0x22, 0x1A, 0x60, 0xC0, 0xE7, 0x00, 0xBF, + 0x00, 0xA0, 0x7F, 0x04, 0x08, 0xB2, 0x7F, 0x04, 0x20, 0xB2, 0x7F, 0x04, 0x04, 0xB2, 0x7F, 0x04, + 0x14, 0xB2, 0x7F, 0x04, 0x1C, 0xB2, 0x7F, 0x04, 0x00, 0xB2, 0x7F, 0x04, 0x0C, 0xB2, 0x7F, 0x04, + 0xC3, 0x69, 0x40, 0xF2, 0x01, 0x22, 0x30, 0xB5, 0x13, 0xF4, 0x80, 0x5F, 0x40, 0xF2, 0x03, 0x33, + 0x08, 0xBF, 0x13, 0x46, 0x1D, 0x4A, 0x13, 0x60, 0x43, 0x68, 0x03, 0xF0, 0x07, 0x03, 0x04, 0x2B, + 0x12, 0xD0, 0x07, 0x2B, 0x1C, 0xD0, 0x03, 0x2B, 0x19, 0x4B, 0x18, 0xBF, 0x4F, 0xF0, 0x04, 0x23, + 0x18, 0x4A, 0x13, 0x60, 0x02, 0xF5, 0x00, 0x52, 0x13, 0x60, 0x02, 0xF5, 0x80, 0x52, 0x13, 0x60, + 0x02, 0xF5, 0x80, 0x52, 0x13, 0x60, 0x30, 0xBD, 0x02, 0x6B, 0xC2, 0xF3, 0x00, 0x33, 0x99, 0x1D, + 0x93, 0x02, 0x03, 0xF4, 0xE0, 0x23, 0x43, 0xF4, 0x80, 0x63, 0x43, 0xEA, 0x01, 0x63, 0xE7, 0xE7, + 0x01, 0x68, 0x0D, 0x4C, 0xB1, 0xF5, 0xC8, 0x7F, 0xC1, 0xEB, 0xC1, 0x02, 0x34, 0xBF, 0x03, 0x21, + 0x04, 0x21, 0x82, 0xFB, 0x04, 0x45, 0xD2, 0x17, 0xC2, 0xEB, 0xE5, 0x12, 0xD3, 0x1D, 0x8A, 0x1A, + 0x1B, 0x06, 0x43, 0xF4, 0x80, 0x63, 0x43, 0xEA, 0x02, 0x43, 0xD1, 0xE7, 0x44, 0xB2, 0x7F, 0x04, + 0x00, 0x04, 0x00, 0x06, 0x40, 0xB2, 0x7F, 0x04, 0xD3, 0x4D, 0x62, 0x10, 0x06, 0x4A, 0x13, 0x68, + 0x19, 0x05, 0x03, 0xD5, 0x23, 0xF4, 0x80, 0x63, 0x13, 0x60, 0x70, 0x47, 0x81, 0x6F, 0x89, 0x06, + 0xF8, 0xD4, 0x43, 0xF4, 0x80, 0x63, 0xF7, 0xE7, 0x00, 0xB0, 0x7F, 0x04, 0x03, 0x4A, 0x83, 0x6F, + 0x11, 0x68, 0xC3, 0xF3, 0x80, 0x73, 0x0B, 0x43, 0x13, 0x60, 0x70, 0x47, 0x00, 0xB0, 0x7F, 0x04, + 0x43, 0x68, 0x03, 0xF0, 0x0F, 0x03, 0x04, 0x3B, 0x04, 0x2B, 0x97, 0xBF, 0x0A, 0x4A, 0x0B, 0x49, + 0x02, 0xEB, 0x83, 0x03, 0xD3, 0xF8, 0xCC, 0x13, 0xC3, 0x69, 0xDA, 0x0A, 0x1B, 0x03, 0x02, 0xF0, + 0x06, 0x02, 0x03, 0xF4, 0x80, 0x53, 0x01, 0x32, 0x43, 0xF0, 0x40, 0x43, 0x43, 0xEA, 0x02, 0x63, + 0x03, 0x4A, 0x0B, 0x43, 0x13, 0x60, 0x70, 0x47, 0x3C, 0xD7, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x00, 0xB0, 0x7F, 0x04, 0x10, 0xB5, 0x04, 0x46, 0xFF, 0x20, 0xFD, 0xF7, 0x7B, 0xFC, 0x20, 0x46, + 0xFF, 0xF7, 0xD6, 0xFF, 0x63, 0x68, 0x04, 0x2B, 0x01, 0xD1, 0xFF, 0xF7, 0xC7, 0xFF, 0x63, 0x68, + 0x03, 0x3B, 0x01, 0x2B, 0x02, 0xD8, 0x20, 0x46, 0xFF, 0xF7, 0xB0, 0xFF, 0x20, 0x46, 0xFF, 0xF7, + 0x5F, 0xFF, 0xFF, 0xF7, 0x6F, 0xFE, 0xFF, 0xF7, 0xD7, 0xF9, 0x09, 0x4B, 0x00, 0x22, 0x20, 0x46, + 0x1A, 0x60, 0xFF, 0xF7, 0xB1, 0xF9, 0x63, 0x68, 0x04, 0x2B, 0x01, 0xD0, 0x08, 0x2B, 0x02, 0xD1, + 0x20, 0x46, 0xFF, 0xF7, 0x9D, 0xF9, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x7C, 0xB9, + 0x30, 0xB0, 0x7F, 0x04, 0x43, 0x68, 0x08, 0x2B, 0x02, 0xBF, 0x05, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x04, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x43, 0x43, 0xF4, 0x40, 0x53, 0x13, 0x60, 0x70, 0x47, + 0x50, 0xA0, 0x7F, 0x04, 0x50, 0xB2, 0x7F, 0x04, 0x2D, 0xE9, 0xF0, 0x41, 0x80, 0x46, 0x31, 0x4D, + 0x05, 0x20, 0x31, 0x4E, 0x2B, 0x68, 0x31, 0x4F, 0x31, 0x4C, 0x23, 0xF0, 0x00, 0x43, 0x2B, 0x60, + 0x2B, 0x68, 0x23, 0xF0, 0x80, 0x43, 0x2B, 0x60, 0x33, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x33, 0x60, + 0x33, 0x68, 0x23, 0xF4, 0x80, 0x33, 0x33, 0x60, 0x3B, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x3B, 0x60, + 0x23, 0x68, 0x23, 0xF0, 0x80, 0x43, 0x23, 0x60, 0xFC, 0xF7, 0x3C, 0xE8, 0xD8, 0xF8, 0x00, 0x00, + 0x42, 0x46, 0x39, 0x46, 0x40, 0x00, 0xFD, 0xF7, 0x85, 0xFC, 0x23, 0x68, 0x05, 0x20, 0x21, 0x4A, + 0x23, 0xF0, 0x40, 0x73, 0x23, 0x60, 0x23, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x23, 0x60, 0x43, 0xF0, + 0x00, 0x63, 0x23, 0x60, 0x33, 0x68, 0x43, 0xF4, 0x80, 0x33, 0x33, 0x60, 0x33, 0x68, 0x43, 0xF0, + 0x01, 0x03, 0x33, 0x60, 0x00, 0x23, 0x13, 0x60, 0x53, 0x60, 0x93, 0x60, 0x2B, 0x68, 0x43, 0xF0, + 0x80, 0x43, 0x2B, 0x60, 0x2B, 0x68, 0x43, 0xF0, 0x00, 0x43, 0x2B, 0x60, 0xD2, 0xF8, 0xE0, 0x34, + 0x23, 0xF0, 0x00, 0x73, 0xC2, 0xF8, 0xE0, 0x34, 0x23, 0x68, 0x43, 0xF0, 0x80, 0x43, 0x23, 0x60, + 0xFC, 0xF7, 0x08, 0xE8, 0x0C, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0x1A, 0x60, 0x0B, 0x4B, 0x1B, 0x68, + 0x1B, 0x0C, 0x01, 0xBF, 0x0A, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0xBD, 0xE8, + 0xF0, 0x81, 0x00, 0xBF, 0x40, 0x15, 0x00, 0x03, 0x0C, 0x18, 0x00, 0x03, 0x10, 0x10, 0x00, 0x03, + 0x00, 0x18, 0x00, 0x03, 0x20, 0xA0, 0x7F, 0x04, 0x0C, 0xB0, 0x7F, 0x04, 0xF8, 0x01, 0x00, 0x07, + 0xF4, 0x01, 0x00, 0x07, 0x10, 0xB5, 0x04, 0x46, 0xFF, 0xF7, 0x86, 0xFF, 0x20, 0x46, 0x00, 0xF0, + 0x67, 0xFA, 0x63, 0x68, 0x04, 0x2B, 0x04, 0xBF, 0x4F, 0xF0, 0x80, 0x43, 0x1B, 0x68, 0x10, 0xBD, + 0x2D, 0xE9, 0xF0, 0x47, 0x04, 0x46, 0xC7, 0x6E, 0x47, 0xF0, 0x80, 0x53, 0xC3, 0x66, 0x43, 0x68, + 0x04, 0x2B, 0x0C, 0xBF, 0x4B, 0xF2, 0xEB, 0x03, 0x43, 0xF2, 0xEB, 0x03, 0x83, 0x61, 0xD0, 0xE9, + 0x06, 0x63, 0x13, 0xF0, 0x0F, 0x0F, 0x14, 0xBF, 0x01, 0x25, 0x02, 0x25, 0xFF, 0xF7, 0xDA, 0xFF, + 0x10, 0xB9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x4F, 0xF0, 0x80, 0x43, 0x00, 0x22, 0xD1, 0x07, + 0x54, 0xBF, 0xD9, 0x43, 0x19, 0x46, 0x43, 0xF8, 0x04, 0x1B, 0xBF, 0xF3, 0x4F, 0x8F, 0x01, 0x32, + 0x10, 0x2A, 0xF4, 0xD1, 0x4F, 0xF0, 0x80, 0x42, 0x00, 0x21, 0xC8, 0x07, 0x7E, 0xD5, 0x13, 0x46, + 0x10, 0x6C, 0x83, 0x42, 0x7C, 0xD1, 0x01, 0x31, 0x04, 0x32, 0x10, 0x29, 0xF5, 0xD1, 0x4F, 0xF0, + 0x01, 0x08, 0xC6, 0xF3, 0x81, 0x33, 0x4F, 0xF0, 0x01, 0x0C, 0x2B, 0x44, 0x07, 0x25, 0x58, 0x19, + 0x4F, 0xF0, 0x80, 0x42, 0x0C, 0xFA, 0x00, 0xF0, 0x00, 0x21, 0x50, 0xF8, 0x02, 0xE0, 0xCE, 0x07, + 0x54, 0xBF, 0xD6, 0x43, 0x16, 0x46, 0xB6, 0x45, 0x7D, 0xD1, 0x01, 0x31, 0x04, 0x32, 0x10, 0x29, + 0xF3, 0xD1, 0x01, 0x22, 0x0D, 0x33, 0x02, 0xFA, 0x03, 0xF3, 0x00, 0x21, 0x4F, 0xF0, 0x80, 0x42, + 0x9E, 0x58, 0xC8, 0x07, 0x54, 0xBF, 0xD0, 0x43, 0x10, 0x46, 0x86, 0x42, 0x68, 0xD1, 0x01, 0x31, + 0x04, 0x32, 0x10, 0x29, 0xF4, 0xD1, 0x4F, 0xF0, 0x02, 0x09, 0x63, 0x68, 0x20, 0x46, 0x04, 0x2B, + 0x0C, 0xBF, 0x46, 0xF2, 0x18, 0x13, 0x42, 0xF2, 0x18, 0x13, 0xA3, 0x61, 0xD4, 0xE9, 0x06, 0x63, + 0x13, 0xF0, 0x0F, 0x0F, 0x14, 0xBF, 0x4F, 0xF0, 0x01, 0x0A, 0x4F, 0xF0, 0x02, 0x0A, 0xFF, 0xF7, + 0x79, 0xFF, 0x00, 0x28, 0x9D, 0xD0, 0x4F, 0xF0, 0x80, 0x42, 0x00, 0x23, 0xD9, 0x07, 0x54, 0xBF, + 0xD1, 0x43, 0x11, 0x46, 0x42, 0xF8, 0x04, 0x1B, 0xBF, 0xF3, 0x4F, 0x8F, 0x01, 0x33, 0x10, 0x2B, + 0xF4, 0xD1, 0xC6, 0xF3, 0x81, 0x36, 0x0C, 0x23, 0x0A, 0x36, 0x4F, 0xF0, 0x01, 0x0E, 0x56, 0x44, + 0xF0, 0x18, 0x4F, 0xF0, 0x80, 0x42, 0x0E, 0xFA, 0x00, 0xF0, 0x00, 0x21, 0x50, 0xF8, 0x02, 0xA0, + 0x11, 0xF0, 0x01, 0x0F, 0x0C, 0xBF, 0x6F, 0xEA, 0x02, 0x0C, 0x94, 0x46, 0xE2, 0x45, 0x2F, 0xD1, + 0x01, 0x31, 0x04, 0x32, 0x10, 0x29, 0xF1, 0xD1, 0x45, 0xEA, 0x88, 0x35, 0xE7, 0x66, 0x01, 0x20, + 0x45, 0xEA, 0x09, 0x35, 0x45, 0xEA, 0x03, 0x13, 0xA3, 0x61, 0x6B, 0xE7, 0xD3, 0x43, 0x7F, 0xE7, + 0x4F, 0xF0, 0x80, 0x42, 0x00, 0x21, 0xCB, 0x07, 0x10, 0xD5, 0x13, 0x46, 0xD2, 0xF8, 0x80, 0x00, + 0x83, 0x42, 0x03, 0xD1, 0x01, 0x31, 0x04, 0x32, 0x10, 0x29, 0xF4, 0xD1, 0x63, 0x68, 0x04, 0x2B, + 0x14, 0xBF, 0x4F, 0xF0, 0x00, 0x08, 0x4F, 0xF0, 0x02, 0x08, 0x72, 0xE7, 0xD3, 0x43, 0xED, 0xE7, + 0x4F, 0xF0, 0x03, 0x09, 0x99, 0xE7, 0x01, 0x35, 0x0B, 0x2D, 0x7F, 0xF4, 0x70, 0xAF, 0x80, 0xE7, + 0x01, 0x33, 0x11, 0x2B, 0xBC, 0xD1, 0xCF, 0xE7, 0x2D, 0xE9, 0xF0, 0x41, 0x04, 0x46, 0xC6, 0x6E, + 0x87, 0x6F, 0x46, 0xF0, 0x80, 0x53, 0xD0, 0xE9, 0x06, 0x85, 0xC3, 0x66, 0x47, 0xF0, 0x01, 0x03, + 0x83, 0x67, 0x43, 0x68, 0x04, 0x2B, 0x0C, 0xBF, 0x46, 0xF2, 0xB7, 0x03, 0x42, 0xF2, 0xB7, 0x03, + 0x83, 0x61, 0x4F, 0xF4, 0x80, 0x53, 0xC3, 0x61, 0xFF, 0xF7, 0x04, 0xFF, 0x70, 0xB1, 0x14, 0x48, + 0xFB, 0xF7, 0xB8, 0xEE, 0x2B, 0x0C, 0xE2, 0x69, 0x01, 0x20, 0xA7, 0x67, 0x1B, 0x04, 0xC4, 0xF8, + 0x18, 0x80, 0xE6, 0x66, 0x13, 0x43, 0xE3, 0x61, 0xBD, 0xE8, 0xF0, 0x81, 0xE0, 0x61, 0x20, 0x46, + 0xFF, 0xF7, 0xF0, 0xFE, 0x08, 0xB1, 0x0B, 0x48, 0xEA, 0xE7, 0x41, 0xF2, 0x01, 0x03, 0x20, 0x46, + 0xE3, 0x61, 0xFF, 0xF7, 0xE7, 0xFE, 0x08, 0xB1, 0x07, 0x48, 0xE1, 0xE7, 0x01, 0x23, 0x20, 0x46, + 0xE3, 0x61, 0xFF, 0xF7, 0xDF, 0xFE, 0x00, 0x28, 0xE6, 0xD0, 0x04, 0x48, 0xD8, 0xE7, 0x00, 0xBF, + 0xE0, 0xE2, 0x04, 0x00, 0x0D, 0xE3, 0x04, 0x00, 0x3A, 0xE3, 0x04, 0x00, 0x68, 0xE3, 0x04, 0x00, + 0x38, 0xB5, 0x04, 0x46, 0x83, 0x6F, 0x59, 0x04, 0x05, 0xD5, 0x20, 0x46, 0xFF, 0xF7, 0xD8, 0xFE, + 0x30, 0xB9, 0x00, 0x20, 0x38, 0xBD, 0xFF, 0xF7, 0xA7, 0xFF, 0x00, 0x28, 0xF5, 0xD1, 0xF8, 0xE7, + 0xA3, 0x6F, 0x1A, 0x04, 0x5E, 0xBF, 0x43, 0xF4, 0xC0, 0x43, 0x43, 0xF0, 0x01, 0x03, 0xA3, 0x67, + 0xA3, 0x6F, 0x1B, 0x03, 0x01, 0xD4, 0x01, 0x20, 0xEC, 0xE7, 0x20, 0x46, 0xFF, 0xF7, 0xB2, 0xFE, + 0x00, 0x28, 0xE6, 0xD0, 0x20, 0x46, 0xFD, 0xF7, 0xBB, 0xF9, 0xA3, 0x6F, 0xB0, 0xF5, 0x80, 0x5F, + 0x23, 0xF4, 0x00, 0x23, 0xA3, 0x67, 0x11, 0xD1, 0x4F, 0xF0, 0x20, 0x43, 0x4F, 0xF0, 0xA0, 0x32, + 0x1A, 0x60, 0xBF, 0xF3, 0x4F, 0x8F, 0x1B, 0x68, 0x93, 0x42, 0xE4, 0xD0, 0xA1, 0x6F, 0x17, 0x48, + 0x41, 0xF4, 0x80, 0x31, 0xA1, 0x67, 0xFB, 0xF7, 0x4E, 0xEE, 0xDC, 0xE7, 0xB0, 0xF5, 0x00, 0x6F, + 0xD9, 0xD1, 0x4F, 0xF0, 0xE0, 0x43, 0x4F, 0xF0, 0x70, 0x32, 0x1A, 0x60, 0xBF, 0xF3, 0x4F, 0x8F, + 0x1B, 0x68, 0x93, 0x42, 0x05, 0xD0, 0xA1, 0x6F, 0x41, 0xF4, 0x00, 0x31, 0xA1, 0x67, 0x0C, 0x48, + 0xE9, 0xE7, 0x4F, 0xF0, 0x20, 0x45, 0x4F, 0xF0, 0xA0, 0x33, 0x2B, 0x60, 0x4F, 0xF0, 0x80, 0x32, + 0x4F, 0xF0, 0x00, 0x43, 0x01, 0x20, 0x1A, 0x60, 0xFB, 0xF7, 0x5C, 0xEE, 0x2B, 0x68, 0xB3, 0xF1, + 0xA0, 0x3F, 0xB8, 0xD0, 0xA1, 0x6F, 0x41, 0xF4, 0xA0, 0x21, 0xE7, 0xE7, 0x96, 0xE3, 0x04, 0x00, + 0xC7, 0xE3, 0x04, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x05, 0x46, 0x5D, 0x4E, 0x00, 0x27, 0x01, 0x24, + 0xFE, 0xF7, 0xF2, 0xF8, 0x28, 0x46, 0xFD, 0xF7, 0xB7, 0xFA, 0x37, 0x60, 0x29, 0x46, 0x38, 0x46, + 0xFE, 0xF7, 0x1A, 0xFF, 0x34, 0x60, 0x28, 0x46, 0xFE, 0xF7, 0x4E, 0xFE, 0xEB, 0x6E, 0x13, 0xF4, + 0x80, 0x16, 0x11, 0xD0, 0x18, 0x03, 0x74, 0xD5, 0x28, 0x46, 0xFE, 0xF7, 0xC3, 0xF9, 0x01, 0x28, + 0x04, 0x46, 0x08, 0xBF, 0x05, 0x27, 0x01, 0x37, 0x04, 0x2F, 0xF5, 0xD9, 0x00, 0x2C, 0x6D, 0xD1, + 0x01, 0x26, 0x4C, 0x48, 0xFB, 0xF7, 0xF6, 0xED, 0xEB, 0x6E, 0x13, 0xF4, 0x00, 0x17, 0x12, 0xD0, + 0x19, 0x03, 0x65, 0xD5, 0x00, 0x27, 0x28, 0x46, 0xFE, 0xF7, 0x38, 0xFA, 0x01, 0x28, 0x04, 0x46, + 0x08, 0xBF, 0x05, 0x27, 0x01, 0x37, 0x04, 0x2F, 0xF5, 0xD9, 0x00, 0x2C, 0x5D, 0xD1, 0x01, 0x27, + 0x41, 0x48, 0xFB, 0xF7, 0xE0, 0xED, 0xEB, 0x6E, 0x13, 0xF4, 0x80, 0x09, 0x18, 0xD0, 0x01, 0x2F, + 0x5A, 0xD0, 0x1A, 0x03, 0x53, 0xD5, 0xB8, 0x46, 0x28, 0x46, 0xFE, 0xF7, 0xC1, 0xFA, 0x01, 0x28, + 0x04, 0x46, 0x08, 0xBF, 0x4F, 0xF0, 0x05, 0x08, 0x08, 0xF1, 0x01, 0x08, 0xB8, 0xF1, 0x04, 0x0F, + 0xF2, 0xD9, 0x00, 0x2C, 0x4B, 0xD1, 0x4F, 0xF0, 0x01, 0x09, 0x34, 0x48, 0xFB, 0xF7, 0xC2, 0xED, + 0xEA, 0x6E, 0x12, 0xF4, 0x00, 0x03, 0x16, 0xD0, 0x01, 0x2F, 0x47, 0xD0, 0x13, 0x03, 0x40, 0xD5, + 0xB8, 0x46, 0x28, 0x46, 0xFE, 0xF7, 0x5E, 0xFC, 0x01, 0x28, 0x04, 0x46, 0x08, 0xBF, 0x4F, 0xF0, + 0x05, 0x08, 0x08, 0xF1, 0x01, 0x08, 0xB8, 0xF1, 0x04, 0x0F, 0xF2, 0xD9, 0xC4, 0xBB, 0x28, 0x48, + 0xFB, 0xF7, 0xA8, 0xED, 0x01, 0x23, 0xE8, 0x6E, 0x3E, 0x43, 0x46, 0xEA, 0x09, 0x06, 0x1E, 0x43, + 0x10, 0xF4, 0x00, 0x20, 0x38, 0xD0, 0x96, 0xB3, 0x22, 0x4F, 0x00, 0x26, 0x3B, 0x68, 0x01, 0x33, + 0x0A, 0x2B, 0x3B, 0x60, 0x26, 0xD1, 0x20, 0x48, 0xFB, 0xF7, 0x94, 0xED, 0x30, 0x46, 0xBD, 0xE8, + 0xF8, 0x83, 0x28, 0x46, 0xFE, 0xF7, 0x4E, 0xF9, 0x04, 0x46, 0x8F, 0xE7, 0x00, 0x26, 0x93, 0xE7, + 0x28, 0x46, 0xFE, 0xF7, 0xD3, 0xF9, 0x04, 0x46, 0x9F, 0xE7, 0x00, 0x27, 0xA3, 0xE7, 0x28, 0x46, + 0xFE, 0xF7, 0x6E, 0xFA, 0x04, 0x46, 0xB4, 0xE7, 0x4F, 0xF0, 0x00, 0x09, 0xB8, 0xE7, 0xB9, 0x46, + 0xB6, 0xE7, 0x28, 0x46, 0xFE, 0xF7, 0x1E, 0xFC, 0x04, 0x46, 0xC7, 0xE7, 0x00, 0x23, 0xCA, 0xE7, + 0x3B, 0x46, 0xC8, 0xE7, 0x28, 0x46, 0xFF, 0xF7, 0xB5, 0xFD, 0x04, 0x46, 0x3E, 0x60, 0x28, 0x46, + 0xFD, 0xF7, 0x2C, 0xFD, 0x20, 0x46, 0xD2, 0xE7, 0x00, 0x2E, 0xF8, 0xD0, 0xCF, 0xE7, 0x00, 0xBF, + 0x20, 0xB3, 0x7F, 0x04, 0xFA, 0xE3, 0x04, 0x00, 0x11, 0xE4, 0x04, 0x00, 0x2A, 0xE4, 0x04, 0x00, + 0x40, 0xE4, 0x04, 0x00, 0x40, 0xE7, 0x04, 0x00, 0x57, 0xE4, 0x04, 0x00, 0x10, 0xB5, 0x04, 0x46, + 0xFE, 0xF7, 0x14, 0xF8, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x2B, 0xBF, 0x00, 0x00, + 0x10, 0x4A, 0x38, 0xB5, 0x04, 0x46, 0xFF, 0x20, 0x13, 0x68, 0x23, 0xF0, 0x80, 0x73, 0x43, 0xF4, + 0x00, 0x73, 0x13, 0x60, 0x4F, 0xF4, 0x00, 0x42, 0x0B, 0x4B, 0x1A, 0x60, 0xFD, 0xF7, 0x4A, 0xF9, + 0x20, 0x46, 0xFF, 0xF7, 0xF7, 0xFC, 0x09, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0xFF, 0xF7, 0xC2, 0xFC, + 0x20, 0x46, 0xFF, 0xF7, 0xDB, 0xFF, 0x05, 0x46, 0x20, 0x46, 0xFE, 0xF7, 0x3F, 0xFE, 0x28, 0x46, + 0x38, 0xBD, 0x00, 0xBF, 0x00, 0xA5, 0x7F, 0x04, 0x0C, 0xB0, 0x7F, 0x04, 0x38, 0xB0, 0x7F, 0x04, + 0xC2, 0x69, 0xF8, 0xB5, 0x46, 0x4B, 0x12, 0xF0, 0x01, 0x01, 0x1C, 0x68, 0x13, 0xD1, 0x52, 0x0C, + 0x12, 0x05, 0x02, 0xF1, 0x80, 0x42, 0xA2, 0xF5, 0xA0, 0x76, 0x4F, 0x29, 0x47, 0x68, 0x4F, 0xEA, + 0x81, 0x05, 0x6F, 0xD8, 0x04, 0x2F, 0x61, 0xD0, 0x05, 0xF1, 0x80, 0x43, 0x1B, 0x68, 0x01, 0x31, + 0x63, 0x51, 0xA0, 0x29, 0xF1, 0xD1, 0x3B, 0x4A, 0x00, 0x23, 0x01, 0x20, 0x13, 0x60, 0x53, 0x60, + 0x93, 0x60, 0xFB, 0xF7, 0x30, 0xED, 0x38, 0x4A, 0x13, 0x68, 0x2C, 0x3A, 0x43, 0xF0, 0x21, 0x03, + 0xD3, 0x62, 0x13, 0x68, 0x03, 0xF0, 0x07, 0x03, 0x03, 0x2B, 0xFA, 0xD1, 0x01, 0x20, 0xFB, 0xF7, + 0x22, 0xED, 0x32, 0x4A, 0x0A, 0x20, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0xFB, 0xF7, + 0x1A, 0xED, 0x2F, 0x4A, 0x00, 0x23, 0x2F, 0x49, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, + 0x43, 0xF4, 0xF8, 0x53, 0x13, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x20, 0x03, 0x13, 0x60, 0x01, 0x23, + 0x0B, 0x60, 0x29, 0x4B, 0x1C, 0x68, 0x14, 0xF0, 0x01, 0x04, 0xFB, 0xD1, 0x0A, 0x20, 0xFB, 0xF7, + 0x02, 0xED, 0x26, 0x4A, 0x20, 0x46, 0x26, 0x4B, 0x1C, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x43, + 0x13, 0x60, 0xD2, 0xF8, 0xF0, 0x37, 0x23, 0xF0, 0x80, 0x43, 0xC2, 0xF8, 0xF0, 0x37, 0x21, 0x4B, + 0x1A, 0x68, 0xA3, 0xF5, 0x33, 0x73, 0x22, 0xF0, 0x01, 0x02, 0xC3, 0xF8, 0xCC, 0x22, 0xD3, 0xF8, + 0xCC, 0x22, 0x22, 0xF4, 0x80, 0x32, 0xC3, 0xF8, 0xCC, 0x22, 0x1A, 0x68, 0x22, 0xF0, 0x00, 0x42, + 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0xF8, 0xBD, 0xCB, 0x08, 0x05, 0xF0, + 0x1C, 0x07, 0x07, 0xEB, 0x83, 0x17, 0x07, 0xF1, 0x80, 0x47, 0x5B, 0x01, 0x03, 0xF0, 0x20, 0x03, + 0xFB, 0x58, 0x94, 0xE7, 0x04, 0x2F, 0xA1, 0xF1, 0x50, 0x03, 0x01, 0xD0, 0x73, 0x59, 0x8E, 0xE7, + 0xDB, 0x08, 0x05, 0xF0, 0x1C, 0x07, 0x17, 0x44, 0x07, 0xEB, 0x83, 0x17, 0xED, 0xE7, 0x00, 0xBF, + 0x04, 0x01, 0x00, 0x07, 0x20, 0xA0, 0x7F, 0x04, 0x30, 0xB0, 0x7F, 0x04, 0xF4, 0x01, 0x00, 0x07, + 0xB0, 0xB1, 0x7F, 0x04, 0x20, 0xB3, 0x7F, 0x04, 0xBC, 0xB1, 0x7F, 0x04, 0x10, 0x10, 0x00, 0x03, + 0x0C, 0xB0, 0x7F, 0x04, 0x0C, 0x18, 0x00, 0x03, 0x08, 0xB5, 0xFF, 0xF7, 0x59, 0xFF, 0x00, 0x20, + 0x08, 0xBD, 0x70, 0x47, 0xF7, 0xB5, 0x0D, 0x46, 0x7E, 0x48, 0x7F, 0x49, 0xFB, 0xF7, 0x72, 0xEC, + 0x7E, 0x4A, 0x7F, 0x48, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x93, 0x68, 0x23, 0xF0, + 0x3F, 0x03, 0x93, 0x60, 0x7B, 0x4B, 0x19, 0x68, 0x89, 0xB2, 0xFB, 0xF7, 0x64, 0xEC, 0x00, 0xF0, + 0x2C, 0xF9, 0x04, 0x46, 0x20, 0xB9, 0x78, 0x48, 0xFB, 0xF7, 0x5C, 0xEC, 0x20, 0x46, 0x29, 0xE0, + 0x76, 0x48, 0xFB, 0xF7, 0x58, 0xEC, 0x76, 0x4B, 0x1B, 0x68, 0x1B, 0x0C, 0x1C, 0xD0, 0xAB, 0x6F, + 0x40, 0xF6, 0x01, 0x02, 0x1A, 0x42, 0x03, 0xD1, 0x28, 0x46, 0xFF, 0xF7, 0xC1, 0xFD, 0xC0, 0xB1, + 0x6F, 0x4B, 0x1B, 0x68, 0x1B, 0x0C, 0x17, 0xD0, 0x29, 0x68, 0x6E, 0x48, 0xFB, 0xF7, 0x42, 0xEC, + 0x69, 0x68, 0x6D, 0x48, 0xFB, 0xF7, 0x3E, 0xEC, 0x28, 0x46, 0xFF, 0xF7, 0x83, 0xFC, 0xB8, 0xB9, + 0x6A, 0x48, 0xFB, 0xF7, 0x38, 0xEC, 0x04, 0xE0, 0x28, 0x46, 0xFD, 0xF7, 0x4D, 0xF8, 0x00, 0x28, + 0xDD, 0xD1, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0xAB, 0x6F, 0x19, 0x05, 0xE4, 0xD5, 0xEB, 0x6D, + 0x00, 0x2B, 0xE1, 0xDB, 0x28, 0x46, 0xFC, 0xF7, 0xA9, 0xFE, 0x00, 0x28, 0xDC, 0xD0, 0xF0, 0xE7, + 0xEC, 0x69, 0x00, 0x2C, 0x33, 0xDA, 0xC4, 0xF3, 0x0E, 0x44, 0xAB, 0x6F, 0x21, 0x46, 0x5C, 0x48, + 0x00, 0x93, 0xD5, 0xE9, 0x06, 0x23, 0xFB, 0xF7, 0x16, 0xEC, 0xAB, 0x6F, 0x1A, 0x01, 0x01, 0xD4, + 0xFC, 0xF7, 0x8C, 0xFF, 0x52, 0x4B, 0x1E, 0x68, 0x36, 0x0C, 0x58, 0xD1, 0x4F, 0xF4, 0x80, 0x51, + 0x20, 0x46, 0xFC, 0xF7, 0x17, 0xFF, 0xB8, 0xB1, 0x52, 0x4B, 0x28, 0x46, 0x1E, 0x60, 0xFF, 0xF7, + 0x49, 0xFC, 0x00, 0x28, 0xC4, 0xD0, 0xEC, 0x69, 0x00, 0x2C, 0x2D, 0xDA, 0xC4, 0xF3, 0x0E, 0x44, + 0xAB, 0x6F, 0x1B, 0x01, 0x01, 0xD4, 0xFC, 0xF7, 0x71, 0xFF, 0x4F, 0xF4, 0x80, 0x51, 0x20, 0x46, + 0xFC, 0xF7, 0x00, 0xFF, 0x00, 0x28, 0xBC, 0xD1, 0xFF, 0xF7, 0x73, 0xFF, 0x8E, 0xE7, 0x28, 0x46, + 0xFC, 0xF7, 0x3E, 0xFF, 0x3B, 0x4A, 0x04, 0x46, 0x13, 0x68, 0x9B, 0xB2, 0xB3, 0xF5, 0xB8, 0x4F, + 0x04, 0xD0, 0x13, 0x68, 0x9B, 0xB2, 0xB3, 0xF5, 0xBA, 0x4F, 0x04, 0xD1, 0xB4, 0xF5, 0x00, 0x6F, + 0x01, 0xD9, 0x3D, 0x48, 0x9D, 0xE7, 0x21, 0x46, 0x3C, 0x48, 0xFB, 0xF7, 0xD4, 0xEB, 0xAB, 0x8B, + 0x43, 0xEA, 0x04, 0x43, 0xEB, 0x61, 0xB0, 0xE7, 0x28, 0x46, 0xFC, 0xF7, 0x21, 0xFF, 0x2D, 0x4A, + 0x04, 0x46, 0x13, 0x68, 0x9B, 0xB2, 0xB3, 0xF5, 0xB8, 0x4F, 0x04, 0xD0, 0x13, 0x68, 0x9B, 0xB2, + 0xB3, 0xF5, 0xBA, 0x4F, 0x02, 0xD1, 0xB4, 0xF5, 0x00, 0x6F, 0xE2, 0xD8, 0x21, 0x46, 0x2F, 0x48, + 0xFB, 0xF7, 0xB8, 0xEB, 0xAB, 0x8B, 0x43, 0xEA, 0x04, 0x43, 0xEB, 0x61, 0xB8, 0xE7, 0x2C, 0x4B, + 0x1E, 0x68, 0xEB, 0x69, 0x13, 0xF0, 0x01, 0x00, 0xBE, 0xD1, 0x5B, 0x0C, 0x1B, 0x05, 0x03, 0xF1, + 0x80, 0x43, 0xA3, 0xF5, 0xA0, 0x77, 0x4F, 0x28, 0xD5, 0xF8, 0x04, 0xC0, 0x4F, 0xEA, 0x80, 0x01, + 0x18, 0xD8, 0xBC, 0xF1, 0x04, 0x0F, 0x07, 0xD0, 0x01, 0xF1, 0x80, 0x42, 0x71, 0x58, 0x11, 0x60, + 0x01, 0x30, 0xA0, 0x28, 0xEF, 0xD1, 0xA7, 0xE7, 0xC2, 0x08, 0x01, 0xF0, 0x1C, 0x0C, 0x0C, 0xEB, + 0x82, 0x1C, 0x0C, 0xF1, 0x80, 0x4C, 0x52, 0x01, 0x71, 0x58, 0x02, 0xF0, 0x20, 0x02, 0x4C, 0xF8, + 0x02, 0x10, 0xED, 0xE7, 0xBC, 0xF1, 0x04, 0x0F, 0xA0, 0xF1, 0x50, 0x02, 0x02, 0xD0, 0x72, 0x58, + 0x7A, 0x50, 0xE5, 0xE7, 0xD2, 0x08, 0x01, 0xF0, 0x1C, 0x0C, 0x9C, 0x44, 0x0C, 0xEB, 0x82, 0x1C, + 0xE9, 0xE7, 0x00, 0xBF, 0x77, 0xE4, 0x04, 0x00, 0x70, 0xE4, 0x04, 0x00, 0x10, 0x03, 0x01, 0x07, + 0x91, 0xE4, 0x04, 0x00, 0x00, 0x62, 0x00, 0x03, 0xA6, 0xE4, 0x04, 0x00, 0xCA, 0xE4, 0x04, 0x00, + 0xF8, 0x01, 0x00, 0x07, 0xDC, 0xE4, 0x04, 0x00, 0xEE, 0xE4, 0x04, 0x00, 0x1F, 0xE5, 0x04, 0x00, + 0x71, 0xE5, 0x04, 0x00, 0x00, 0xE7, 0x04, 0x00, 0x39, 0xE5, 0x04, 0x00, 0x59, 0xE5, 0x04, 0x00, + 0x04, 0x01, 0x00, 0x07, 0x01, 0x46, 0x00, 0x20, 0xFF, 0xF7, 0xDC, 0xBE, 0x08, 0xB5, 0xFF, 0xF7, + 0xF9, 0xFF, 0x00, 0x20, 0x08, 0xBD, 0x80, 0xEA, 0x01, 0x20, 0x08, 0x23, 0x48, 0xF2, 0x05, 0x01, + 0x42, 0x00, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x04, 0x92, 0xB2, 0x4C, 0xBF, 0x82, 0xEA, 0x01, 0x00, + 0x10, 0x46, 0x00, 0x2B, 0xF4, 0xD1, 0x70, 0x47, 0x38, 0xB5, 0x0D, 0x46, 0x04, 0x46, 0x2C, 0x44, + 0xFF, 0xF7, 0xE9, 0xFF, 0x44, 0xEA, 0x00, 0x40, 0x38, 0xBD, 0x70, 0xB5, 0x00, 0x20, 0xFB, 0xF7, + 0x9B, 0xFB, 0x01, 0x25, 0x04, 0x46, 0x29, 0x46, 0x00, 0x20, 0xFF, 0xF7, 0xED, 0xFF, 0x84, 0x42, + 0x05, 0xD0, 0x01, 0x35, 0xED, 0xB2, 0x11, 0x2D, 0xF5, 0xD1, 0x00, 0x20, 0x0F, 0xE0, 0x01, 0x24, + 0x20, 0x46, 0xFB, 0xF7, 0x89, 0xFB, 0x29, 0x46, 0x06, 0x46, 0x20, 0x46, 0xFF, 0xF7, 0xDC, 0xFF, + 0x86, 0x42, 0xF2, 0xD1, 0x01, 0x34, 0xA4, 0xB2, 0x05, 0x2C, 0xF1, 0xD1, 0x01, 0x20, 0x70, 0xBD, + 0x01, 0x20, 0x51, 0xE2, 0x1E, 0xFF, 0x2F, 0x01, 0x36, 0x00, 0x00, 0x3A, 0x01, 0x00, 0x50, 0xE1, + 0x22, 0x00, 0x00, 0x9A, 0x02, 0x00, 0x11, 0xE1, 0x23, 0x00, 0x00, 0x0A, 0x0E, 0x02, 0x11, 0xE3, + 0x81, 0x11, 0xA0, 0x01, 0x08, 0x30, 0xA0, 0x03, 0x01, 0x30, 0xA0, 0x13, 0x01, 0x02, 0x51, 0xE3, + 0x00, 0x00, 0x51, 0x31, 0x01, 0x12, 0xA0, 0x31, 0x03, 0x32, 0xA0, 0x31, 0xFA, 0xFF, 0xFF, 0x3A, + 0x02, 0x01, 0x51, 0xE3, 0x00, 0x00, 0x51, 0x31, 0x81, 0x10, 0xA0, 0x31, 0x83, 0x30, 0xA0, 0x31, + 0xFA, 0xFF, 0xFF, 0x3A, 0x00, 0x20, 0xA0, 0xE3, 0x01, 0x00, 0x50, 0xE1, 0x01, 0x00, 0x40, 0x20, + 0x03, 0x20, 0x82, 0x21, 0xA1, 0x00, 0x50, 0xE1, 0xA1, 0x00, 0x40, 0x20, 0xA3, 0x20, 0x82, 0x21, + 0x21, 0x01, 0x50, 0xE1, 0x21, 0x01, 0x40, 0x20, 0x23, 0x21, 0x82, 0x21, 0xA1, 0x01, 0x50, 0xE1, + 0xA1, 0x01, 0x40, 0x20, 0xA3, 0x21, 0x82, 0x21, 0x00, 0x00, 0x50, 0xE3, 0x23, 0x32, 0xB0, 0x11, + 0x21, 0x12, 0xA0, 0x11, 0xEF, 0xFF, 0xFF, 0x1A, 0x02, 0x00, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, + 0x01, 0x00, 0xA0, 0x03, 0x00, 0x00, 0xA0, 0x13, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x08, 0x51, 0xE3, + 0x21, 0x18, 0xA0, 0x21, 0x10, 0x20, 0xA0, 0x23, 0x00, 0x20, 0xA0, 0x33, 0x01, 0x0C, 0x51, 0xE3, + 0x21, 0x14, 0xA0, 0x21, 0x08, 0x20, 0x82, 0x22, 0x10, 0x00, 0x51, 0xE3, 0x21, 0x12, 0xA0, 0x21, + 0x04, 0x20, 0x82, 0x22, 0x04, 0x00, 0x51, 0xE3, 0x03, 0x20, 0x82, 0x82, 0xA1, 0x20, 0x82, 0x90, + 0x30, 0x02, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xE0, 0x13, + 0x59, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x51, 0xE3, 0xFA, 0xFF, 0xFF, 0x0A, 0x03, 0x40, 0x2D, 0xE9, + 0xBE, 0xFF, 0xFF, 0xEB, 0x06, 0x40, 0xBD, 0xE8, 0x92, 0x00, 0x03, 0xE0, 0x03, 0x10, 0x41, 0xE0, + 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0x43, 0x00, 0x00, 0x0A, 0x01, 0xC0, 0x20, 0xE0, + 0x00, 0x10, 0x61, 0x42, 0x01, 0x20, 0x51, 0xE2, 0x27, 0x00, 0x00, 0x0A, 0x00, 0x30, 0xB0, 0xE1, + 0x00, 0x30, 0x60, 0x42, 0x01, 0x00, 0x53, 0xE1, 0x26, 0x00, 0x00, 0x9A, 0x02, 0x00, 0x11, 0xE1, + 0x28, 0x00, 0x00, 0x0A, 0x0E, 0x02, 0x11, 0xE3, 0x81, 0x11, 0xA0, 0x01, 0x08, 0x20, 0xA0, 0x03, + 0x01, 0x20, 0xA0, 0x13, 0x01, 0x02, 0x51, 0xE3, 0x03, 0x00, 0x51, 0x31, 0x01, 0x12, 0xA0, 0x31, + 0x02, 0x22, 0xA0, 0x31, 0xFA, 0xFF, 0xFF, 0x3A, 0x02, 0x01, 0x51, 0xE3, 0x03, 0x00, 0x51, 0x31, + 0x81, 0x10, 0xA0, 0x31, 0x82, 0x20, 0xA0, 0x31, 0xFA, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0xA0, 0xE3, + 0x01, 0x00, 0x53, 0xE1, 0x01, 0x30, 0x43, 0x20, 0x02, 0x00, 0x80, 0x21, 0xA1, 0x00, 0x53, 0xE1, + 0xA1, 0x30, 0x43, 0x20, 0xA2, 0x00, 0x80, 0x21, 0x21, 0x01, 0x53, 0xE1, 0x21, 0x31, 0x43, 0x20, + 0x22, 0x01, 0x80, 0x21, 0xA1, 0x01, 0x53, 0xE1, 0xA1, 0x31, 0x43, 0x20, 0xA2, 0x01, 0x80, 0x21, + 0x00, 0x00, 0x53, 0xE3, 0x22, 0x22, 0xB0, 0x11, 0x21, 0x12, 0xA0, 0x11, 0xEF, 0xFF, 0xFF, 0x1A, + 0x00, 0x00, 0x5C, 0xE3, 0x00, 0x00, 0x60, 0x42, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x3C, 0xE1, + 0x00, 0x00, 0x60, 0x42, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0x33, 0xCC, 0x0F, 0xA0, 0x01, + 0x01, 0x00, 0x80, 0x03, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x08, 0x51, 0xE3, 0x21, 0x18, 0xA0, 0x21, + 0x10, 0x20, 0xA0, 0x23, 0x00, 0x20, 0xA0, 0x33, 0x01, 0x0C, 0x51, 0xE3, 0x21, 0x14, 0xA0, 0x21, + 0x08, 0x20, 0x82, 0x22, 0x10, 0x00, 0x51, 0xE3, 0x21, 0x12, 0xA0, 0x21, 0x04, 0x20, 0x82, 0x22, + 0x04, 0x00, 0x51, 0xE3, 0x03, 0x20, 0x82, 0x82, 0xA1, 0x20, 0x82, 0x90, 0x00, 0x00, 0x5C, 0xE3, + 0x33, 0x02, 0xA0, 0xE1, 0x00, 0x00, 0x60, 0x42, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x50, 0xE3, + 0x02, 0x01, 0xE0, 0xC3, 0x02, 0x01, 0xA0, 0xB3, 0x07, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x51, 0xE3, + 0xF9, 0xFF, 0xFF, 0x0A, 0x03, 0x40, 0x2D, 0xE9, 0xB3, 0xFF, 0xFF, 0xEB, 0x06, 0x40, 0xBD, 0xE8, + 0x92, 0x00, 0x03, 0xE0, 0x03, 0x10, 0x41, 0xE0, 0x1E, 0xFF, 0x2F, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, + 0x00, 0x00, 0x53, 0xE3, 0x00, 0x00, 0x52, 0x03, 0x04, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x51, 0xE3, + 0x00, 0x00, 0x50, 0x03, 0x00, 0x10, 0xE0, 0x13, 0x00, 0x00, 0xE0, 0x13, 0xF6, 0xFF, 0xFF, 0xEA, + 0x08, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0x2D, 0xE9, 0x03, 0x00, 0x00, 0xEB, 0x04, 0xE0, 0x9D, 0xE5, + 0x08, 0xD0, 0x8D, 0xE2, 0x0C, 0x00, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x47, 0x2D, 0xE9, + 0x03, 0x60, 0xA0, 0xE1, 0x02, 0x00, 0x50, 0xE1, 0x06, 0x30, 0xD1, 0xE0, 0x00, 0x40, 0xA0, 0xE1, + 0x00, 0x00, 0xA0, 0x33, 0x01, 0x50, 0xA0, 0xE1, 0x20, 0x70, 0x9D, 0xE5, 0x00, 0x10, 0xA0, 0x31, + 0x3B, 0x00, 0x00, 0x3A, 0x06, 0x10, 0xA0, 0xE1, 0x02, 0x00, 0xA0, 0xE1, 0x02, 0x80, 0xA0, 0xE1, + 0x3B, 0x00, 0x00, 0xEB, 0x05, 0x10, 0xA0, 0xE1, 0x00, 0x90, 0xA0, 0xE1, 0x04, 0x00, 0xA0, 0xE1, + 0x37, 0x00, 0x00, 0xEB, 0x00, 0xC0, 0x49, 0xE0, 0x16, 0x3C, 0xA0, 0xE1, 0x20, 0x60, 0x4C, 0xE2, + 0x18, 0x36, 0x83, 0xE1, 0x20, 0xE0, 0x6C, 0xE2, 0x18, 0x2C, 0xA0, 0xE1, 0x38, 0x3E, 0x83, 0xE1, + 0x02, 0x00, 0x54, 0xE1, 0x03, 0x10, 0xD5, 0xE0, 0x00, 0x00, 0xA0, 0x33, 0x00, 0x10, 0xA0, 0x31, + 0x05, 0x00, 0x00, 0x3A, 0x01, 0x00, 0xA0, 0xE3, 0x02, 0x40, 0x54, 0xE0, 0x10, 0x16, 0xA0, 0xE1, + 0x30, 0x1E, 0x81, 0xE1, 0x03, 0x50, 0xC5, 0xE0, 0x10, 0x0C, 0xA0, 0xE1, 0x00, 0x00, 0x5C, 0xE3, + 0x1F, 0x00, 0x00, 0x0A, 0xA2, 0x20, 0xA0, 0xE1, 0x83, 0x2F, 0x82, 0xE1, 0x0C, 0x80, 0xA0, 0xE1, + 0xA3, 0x30, 0xA0, 0xE1, 0x07, 0x00, 0x00, 0xEA, 0x02, 0x40, 0x54, 0xE0, 0x03, 0x50, 0xC5, 0xE0, + 0x04, 0x40, 0x94, 0xE0, 0x05, 0x50, 0xA5, 0xE0, 0x01, 0x40, 0x94, 0xE2, 0x00, 0x50, 0xA5, 0xE2, + 0x01, 0x80, 0x58, 0xE2, 0x06, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x54, 0xE1, 0x03, 0x90, 0xD5, 0xE0, + 0xF4, 0xFF, 0xFF, 0x2A, 0x04, 0x40, 0x94, 0xE0, 0x05, 0x50, 0xA5, 0xE0, 0x01, 0x80, 0x58, 0xE2, + 0xF8, 0xFF, 0xFF, 0x1A, 0x04, 0x00, 0x90, 0xE0, 0x34, 0x4C, 0xA0, 0xE1, 0x15, 0x4E, 0x84, 0xE1, + 0x35, 0x46, 0x84, 0xE1, 0x05, 0x10, 0xA1, 0xE0, 0x35, 0x5C, 0xA0, 0xE1, 0x15, 0x3C, 0xA0, 0xE1, + 0x14, 0x36, 0x83, 0xE1, 0x14, 0xCC, 0xA0, 0xE1, 0x34, 0x3E, 0x83, 0xE1, 0x0C, 0x00, 0x50, 0xE0, + 0x03, 0x10, 0xC1, 0xE0, 0x00, 0x00, 0x57, 0xE3, 0x30, 0x00, 0x87, 0x18, 0xF0, 0x47, 0xBD, 0xE8, + 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x00, 0x51, 0xE3, 0x02, 0x00, 0x00, 0x1A, + 0x05, 0x00, 0x00, 0xEB, 0x20, 0x00, 0x80, 0xE2, 0x01, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE1, + 0x01, 0x00, 0x00, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x1C, 0x10, 0xA0, 0xE3, + 0x01, 0x08, 0x50, 0xE3, 0x20, 0x08, 0xA0, 0x21, 0x10, 0x10, 0x41, 0x22, 0x01, 0x0C, 0x50, 0xE3, + 0x20, 0x04, 0xA0, 0x21, 0x08, 0x10, 0x41, 0x22, 0x10, 0x00, 0x50, 0xE3, 0x20, 0x02, 0xA0, 0x21, + 0x04, 0x10, 0x41, 0x22, 0x08, 0x20, 0x8F, 0xE2, 0x00, 0x00, 0xD2, 0xE7, 0x01, 0x00, 0x80, 0xE0, + 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x47, 0xFD, 0xE7, 0x90, 0xEC, 0xFF, 0xEA, + 0x49, 0x6E, 0x69, 0x74, 0x20, 0x44, 0x52, 0x41, 0x4D, 0x20, 0x44, 0x6F, 0x6E, 0x65, 0x2C, 0x20, + 0x44, 0x52, 0x41, 0x4D, 0x20, 0x53, 0x69, 0x7A, 0x65, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x4D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x53, 0x65, 0x74, 0x20, 0x44, 0x52, 0x41, 0x4D, 0x20, 0x56, 0x6F, 0x6C, + 0x74, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x25, 0x64, 0x6D, 0x76, 0x0A, 0x00, 0x00, 0x00, + 0x5B, 0x20, 0x20, 0x20, 0x20, 0x44, 0x52, 0x41, 0x4D, 0x49, 0x4E, 0x49, 0x54, 0x5D, 0x5B, 0x49, + 0x5D, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0x0F, 0x0F, 0x0F, 0x0F, 0x5A, 0x5A, 0x5A, 0x5A, 0x55, 0x55, 0x55, 0x55, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, + 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x20, 0x00, 0x08, 0x00, 0x5B, 0x57, 0x41, 0x52, + 0x4E, 0x49, 0x4E, 0x47, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x4C, 0x63, 0x6C, 0x6B, 0x2C, 0x30, + 0x78, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x4D, 0x65, 0x6D, 0x74, 0x65, 0x73, 0x74, 0x20, 0x46, 0x61, + 0x69, 0x6C, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, + 0x4C, 0x63, 0x6C, 0x6B, 0x2C, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x4D, 0x65, 0x6D, 0x74, + 0x65, 0x73, 0x74, 0x20, 0x53, 0x74, 0x69, 0x6C, 0x6C, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x21, + 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x4C, 0x63, 0x6C, 0x6B, 0x2C, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x78, 0x2C, 0x4D, 0x65, 0x6D, 0x74, 0x65, 0x73, 0x74, 0x20, 0x50, 0x61, 0x73, 0x73, + 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x43, 0x6C, 0x6B, 0x20, 0x3D, 0x25, 0x64, 0x20, + 0x4D, 0x48, 0x7A, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, 0x32, 0x64, 0x0A, + 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, 0x32, 0x64, 0x5F, 0x68, 0x76, 0x5F, 0x44, + 0x25, 0x64, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x2D, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x30, 0x78, 0x25, + 0x78, 0x28, 0x25, 0x64, 0x6D, 0x56, 0x29, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, + 0x4F, 0x52, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, 0x32, 0x64, 0x5F, 0x68, 0x20, 0x3C, + 0x20, 0x25, 0x64, 0x0A, 0x21, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, 0x32, 0x64, + 0x5F, 0x68, 0x76, 0x5F, 0x44, 0x25, 0x64, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x7E, 0x30, 0x78, 0x25, + 0x78, 0x2C, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, + 0x32, 0x64, 0x20, 0x74, 0x70, 0x72, 0x36, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, + 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x72, + 0x61, 0x6D, 0x20, 0x49, 0x6E, 0x69, 0x74, 0x20, 0x46, 0x61, 0x69, 0x6C, 0x21, 0x0A, 0x00, 0x5B, + 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, 0x31, 0x73, 0x74, 0x0A, 0x00, 0x5B, 0x57, 0x41, 0x52, + 0x4E, 0x49, 0x4E, 0x47, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x42, 0x25, 0x64, 0x20, 0x66, + 0x61, 0x6B, 0x65, 0x20, 0x52, 0x5F, 0x31, 0x73, 0x74, 0x20, 0x3C, 0x20, 0x25, 0x64, 0x0A, 0x00, + 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x42, 0x25, 0x64, 0x20, 0x52, 0x5F, 0x31, 0x73, 0x74, + 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x7E, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x30, 0x78, 0x25, + 0x30, 0x32, 0x78, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, 0x44, 0x53, 0x54, 0x5D, + 0x20, 0x44, 0x42, 0x25, 0x64, 0x20, 0x52, 0x5F, 0x31, 0x73, 0x74, 0x20, 0x3C, 0x3D, 0x20, 0x25, + 0x64, 0x20, 0x70, 0x73, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, 0x31, 0x73, + 0x74, 0x20, 0x54, 0x70, 0x72, 0x31, 0x32, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, + 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x57, 0x5F, 0x32, 0x64, 0x0A, 0x00, 0x5B, 0x44, + 0x53, 0x54, 0x5D, 0x20, 0x57, 0x5F, 0x32, 0x64, 0x5F, 0x68, 0x76, 0x5F, 0x44, 0x25, 0x64, 0x3A, + 0x30, 0x78, 0x25, 0x78, 0x2D, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x30, 0x78, 0x25, 0x78, 0x28, 0x25, + 0x64, 0x6D, 0x56, 0x29, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, + 0x44, 0x53, 0x54, 0x5D, 0x20, 0x57, 0x5F, 0x32, 0x64, 0x5F, 0x68, 0x20, 0x3C, 0x20, 0x25, 0x64, + 0x0A, 0x21, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x57, 0x5F, 0x32, 0x64, 0x5F, 0x68, 0x76, + 0x5F, 0x44, 0x25, 0x64, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x7E, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x30, + 0x78, 0x25, 0x78, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x57, 0x5F, 0x32, 0x64, 0x20, + 0x6D, 0x72, 0x36, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, + 0x5D, 0x20, 0x57, 0x5F, 0x32, 0x64, 0x20, 0x6D, 0x72, 0x31, 0x34, 0x20, 0x3D, 0x20, 0x30, 0x78, + 0x25, 0x78, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x57, 0x5F, 0x32, 0x73, 0x74, 0x0A, + 0x00, 0x5B, 0x57, 0x41, 0x52, 0x4E, 0x49, 0x4E, 0x47, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, + 0x42, 0x25, 0x64, 0x20, 0x66, 0x61, 0x6B, 0x65, 0x20, 0x57, 0x5F, 0x32, 0x73, 0x74, 0x20, 0x3C, + 0x20, 0x25, 0x64, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x42, 0x25, 0x64, 0x20, + 0x57, 0x5F, 0x32, 0x73, 0x74, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x7E, 0x25, 0x64, 0x2C, 0x25, + 0x64, 0x2C, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, + 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x42, 0x25, 0x64, 0x20, 0x57, 0x5F, 0x32, 0x73, 0x74, + 0x20, 0x3C, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x70, 0x73, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, + 0x20, 0x57, 0x5F, 0x32, 0x73, 0x74, 0x20, 0x54, 0x70, 0x72, 0x31, 0x31, 0x20, 0x3D, 0x20, 0x30, + 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x52, 0x5F, 0x32, + 0x73, 0x74, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x42, 0x25, 0x64, 0x20, 0x52, + 0x5F, 0x32, 0x73, 0x74, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x7E, 0x25, 0x64, 0x2C, 0x25, 0x64, + 0x2C, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, + 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x42, 0x25, 0x64, 0x20, 0x52, 0x5F, 0x32, 0x73, 0x74, 0x20, + 0x3C, 0x3D, 0x20, 0x25, 0x64, 0x20, 0x70, 0x73, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, + 0x52, 0x5F, 0x32, 0x73, 0x74, 0x20, 0x54, 0x70, 0x72, 0x31, 0x32, 0x20, 0x3D, 0x20, 0x30, 0x78, + 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, 0x44, 0x53, 0x54, + 0x5D, 0x20, 0x52, 0x56, 0x5F, 0x43, 0x2C, 0x20, 0x44, 0x42, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x3A, + 0x30, 0x78, 0x25, 0x30, 0x78, 0x2C, 0x20, 0x44, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x5B, 0x44, 0x53, + 0x54, 0x5D, 0x20, 0x52, 0x56, 0x5F, 0x43, 0x2C, 0x20, 0x56, 0x57, 0x3A, 0x30, 0x78, 0x25, 0x78, + 0x2D, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x20, 0x44, 0x57, 0x3A, 0x25, 0x64, 0x70, 0x73, 0x0A, 0x00, + 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x57, 0x56, 0x5F, 0x43, + 0x2C, 0x20, 0x44, 0x42, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x3A, 0x30, 0x78, 0x25, 0x30, 0x78, 0x2C, + 0x20, 0x44, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x57, 0x56, 0x5F, + 0x43, 0x2C, 0x20, 0x56, 0x57, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x2D, 0x30, 0x78, 0x25, 0x78, 0x2C, + 0x20, 0x44, 0x57, 0x3A, 0x25, 0x64, 0x70, 0x73, 0x0A, 0x00, 0x52, 0x65, 0x61, 0x64, 0x20, 0x25, + 0x78, 0x20, 0x21, 0x3D, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, + 0x72, 0x61, 0x6D, 0x20, 0x44, 0x53, 0x54, 0x20, 0x4C, 0x6F, 0x6F, 0x70, 0x25, 0x64, 0x0A, 0x00, + 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x53, 0x74, 0x61, 0x62, + 0x6C, 0x65, 0x20, 0x4D, 0x65, 0x6D, 0x74, 0x65, 0x73, 0x74, 0x20, 0x46, 0x61, 0x69, 0x6C, 0x0A, + 0x00, 0x5B, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x44, 0x72, 0x61, 0x6D, 0x20, 0x44, 0x53, 0x54, 0x20, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x0A, 0x00, 0x5B, 0x57, 0x41, 0x52, 0x4E, 0x49, 0x4E, + 0x47, 0x20, 0x44, 0x53, 0x54, 0x5D, 0x20, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x20, 0x74, + 0x6F, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x41, + 0x6C, 0x6C, 0x77, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x76, + 0x69, 0x65, 0x77, 0x21, 0x0A, 0x0A, 0x00, 0x5B, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x20, 0x44, 0x53, + 0x54, 0x5D, 0x20, 0x44, 0x72, 0x61, 0x6D, 0x20, 0x44, 0x53, 0x54, 0x20, 0x46, 0x61, 0x69, 0x6C, + 0x0A, 0x00, 0x44, 0x52, 0x41, 0x4D, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x65, + 0x73, 0x74, 0x20, 0x46, 0x41, 0x49, 0x4C, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x25, 0x78, 0x20, 0x21, + 0x3D, 0x20, 0x25, 0x78, 0x20, 0x61, 0x74, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, + 0x25, 0x78, 0x0A, 0x00, 0x44, 0x52, 0x41, 0x4D, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, + 0x74, 0x65, 0x73, 0x74, 0x20, 0x4F, 0x4B, 0x2E, 0x0A, 0x00, 0x50, 0x4F, 0x57, 0x45, 0x52, 0x20, + 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x20, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x21, 0x0A, 0x00, + 0x44, 0x52, 0x41, 0x4D, 0x5F, 0x56, 0x43, 0x43, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, + 0x25, 0x64, 0x20, 0x6D, 0x76, 0x0A, 0x00, 0x64, 0x78, 0x5F, 0x6C, 0x6F, 0x77, 0x20, 0x31, 0x36, + 0x62, 0x69, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, + 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x20, 0x0A, 0x00, 0x64, 0x78, 0x5F, 0x68, 0x69, + 0x67, 0x68, 0x20, 0x31, 0x36, 0x62, 0x69, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x72, + 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x20, 0x0A, 0x00, + 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x78, 0x30, 0x5F, 0x64, 0x71, 0x25, 0x64, 0x20, 0x64, 0x65, + 0x6C, 0x61, 0x79, 0x5F, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, + 0x3D, 0x30, 0x78, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x78, 0x31, + 0x5F, 0x64, 0x71, 0x25, 0x64, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x5F, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x3D, 0x30, 0x78, 0x25, 0x78, 0x20, 0x0A, 0x00, + 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x78, 0x32, 0x5F, 0x64, 0x71, 0x25, 0x64, 0x20, 0x64, 0x65, + 0x6C, 0x61, 0x79, 0x5F, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, + 0x3D, 0x30, 0x78, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x78, 0x33, + 0x5F, 0x64, 0x71, 0x25, 0x64, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x5F, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x3D, 0x30, 0x78, 0x25, 0x78, 0x20, 0x0A, 0x00, + 0x64, 0x78, 0x5F, 0x6C, 0x6F, 0x77, 0x20, 0x31, 0x36, 0x62, 0x69, 0x74, 0x20, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, + 0x72, 0x20, 0x20, 0x0A, 0x00, 0x64, 0x78, 0x5F, 0x68, 0x69, 0x67, 0x68, 0x20, 0x31, 0x36, 0x62, + 0x69, 0x74, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, + 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x20, 0x0A, 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x20, 0x64, 0x78, 0x30, 0x5F, 0x64, 0x71, 0x25, 0x64, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x5F, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x3D, 0x30, 0x78, 0x25, + 0x78, 0x20, 0x0A, 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x64, 0x78, 0x31, 0x5F, 0x64, 0x71, + 0x25, 0x64, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x5F, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5F, 0x65, + 0x72, 0x72, 0x6F, 0x72, 0x20, 0x3D, 0x30, 0x78, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x20, 0x64, 0x78, 0x32, 0x5F, 0x64, 0x71, 0x25, 0x64, 0x20, 0x64, 0x65, 0x6C, 0x61, + 0x79, 0x5F, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x3D, 0x30, + 0x78, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x64, 0x78, 0x33, 0x5F, + 0x64, 0x71, 0x25, 0x64, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x5F, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x3D, 0x30, 0x78, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x54, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x30, 0x78, 0x32, 0x64, + 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x54, 0x68, 0x65, 0x20, 0x70, 0x75, 0x6C, 0x6C, + 0x20, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x64, 0x72, 0x69, 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, + 0x00, 0x54, 0x68, 0x65, 0x20, 0x70, 0x75, 0x6C, 0x6C, 0x20, 0x75, 0x70, 0x20, 0x64, 0x72, 0x69, + 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x54, 0x68, 0x65, 0x20, 0x70, 0x75, 0x6C, 0x6C, + 0x20, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x6F, 0x64, 0x74, 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, + 0x00, 0x54, 0x68, 0x65, 0x20, 0x70, 0x75, 0x6C, 0x6C, 0x20, 0x75, 0x70, 0x20, 0x6F, 0x64, 0x74, + 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x54, 0x68, 0x65, 0x20, 0x64, 0x72, 0x61, 0x6D, + 0x5F, 0x64, 0x78, 0x5F, 0x64, 0x72, 0x69, 0x20, 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, 0x00, + 0x54, 0x68, 0x65, 0x20, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x63, 0x61, 0x5F, 0x64, 0x72, 0x69, 0x20, + 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, 0x00, 0x54, 0x68, 0x65, 0x20, 0x64, 0x72, 0x61, 0x6D, + 0x5F, 0x64, 0x78, 0x5F, 0x6F, 0x64, 0x74, 0x20, 0x20, 0x3D, 0x20, 0x25, 0x78, 0x20, 0x0A, 0x00, + 0x5B, 0x41, 0x55, 0x54, 0x4F, 0x20, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5D, 0x33, 0x32, 0x62, 0x69, + 0x74, 0x2C, 0x32, 0x20, 0x72, 0x61, 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, + 0x6E, 0x67, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x21, 0x0A, 0x00, 0x5B, 0x41, 0x55, + 0x54, 0x4F, 0x20, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5D, 0x33, 0x32, 0x62, 0x69, 0x74, 0x2C, 0x31, + 0x20, 0x72, 0x61, 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x21, 0x0A, 0x00, 0x5B, 0x41, 0x55, 0x54, 0x4F, 0x20, + 0x44, 0x45, 0x42, 0x55, 0x47, 0x5D, 0x31, 0x36, 0x20, 0x62, 0x69, 0x74, 0x2C, 0x32, 0x20, 0x72, + 0x61, 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x21, 0x0A, 0x00, 0x5B, 0x41, 0x55, 0x54, 0x4F, 0x20, 0x44, 0x45, + 0x42, 0x55, 0x47, 0x5D, 0x31, 0x36, 0x20, 0x62, 0x69, 0x74, 0x2C, 0x31, 0x20, 0x72, 0x61, 0x6E, + 0x6B, 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x21, 0x0A, 0x00, 0x5B, 0x41, 0x55, 0x54, 0x4F, 0x20, 0x44, 0x45, 0x42, 0x55, + 0x47, 0x5D, 0x33, 0x47, 0x42, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x73, 0x63, 0x61, 0x6E, 0x20, 0x65, + 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x74, 0x70, 0x72, 0x31, 0x33, + 0x20, 0x3D, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x5B, 0x41, 0x55, 0x54, 0x4F, 0x20, 0x44, 0x45, 0x42, + 0x55, 0x47, 0x5D, 0x31, 0x2E, 0x35, 0x47, 0x42, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x73, 0x63, 0x61, + 0x6E, 0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x74, 0x70, + 0x72, 0x31, 0x33, 0x20, 0x3D, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5F, + 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x0A, + 0x00, 0x72, 0x65, 0x61, 0x64, 0x5F, 0x63, 0x61, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x0A, 0x00, 0x72, 0x65, 0x61, 0x64, 0x5F, 0x74, + 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x0A, 0x00, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x5F, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x65, + 0x72, 0x72, 0x6F, 0x72, 0x20, 0x0A, 0x00, 0x72, 0x65, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x69, 0x6E, + 0x67, 0x20, 0x66, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x0A, 0x00, + 0x56, 0x30, 0x2E, 0x36, 0x35, 0x34, 0x00, 0x44, 0x52, 0x41, 0x4D, 0x20, 0x42, 0x4F, 0x4F, 0x54, + 0x20, 0x44, 0x52, 0x49, 0x56, 0x45, 0x20, 0x49, 0x4E, 0x46, 0x4F, 0x3A, 0x20, 0x25, 0x73, 0x0A, + 0x00, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x69, 0x70, 0x20, 0x69, 0x64, 0x20, 0x69, 0x73, 0x20, + 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x69, 0x63, 0x20, 0x63, 0x61, 0x6E, 0x74, 0x20, 0x6D, 0x61, + 0x74, 0x63, 0x68, 0x20, 0x61, 0x78, 0x70, 0x2C, 0x20, 0x70, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, + 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2E, 0x2E, 0x2E, 0x0A, 0x00, 0x63, 0x68, 0x69, 0x70, 0x20, 0x69, + 0x64, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x4F, 0x4B, 0x0A, 0x00, 0x44, 0x52, 0x41, 0x4D, + 0x20, 0x43, 0x4C, 0x4B, 0x20, 0x3D, 0x25, 0x64, 0x20, 0x4D, 0x48, 0x5A, 0x0A, 0x00, 0x44, 0x52, + 0x41, 0x4D, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x3D, 0x25, 0x64, 0x20, 0x28, 0x33, 0x3A, 0x44, + 0x44, 0x52, 0x33, 0x2C, 0x34, 0x3A, 0x44, 0x44, 0x52, 0x34, 0x2C, 0x37, 0x3A, 0x4C, 0x50, 0x44, + 0x44, 0x52, 0x33, 0x2C, 0x38, 0x3A, 0x4C, 0x50, 0x44, 0x44, 0x52, 0x34, 0x29, 0x0A, 0x00, 0x44, + 0x52, 0x41, 0x4D, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, + 0x72, 0x20, 0x3A, 0x20, 0x31, 0x20, 0x21, 0x0A, 0x00, 0x4E, 0x4F, 0x20, 0x73, 0x75, 0x70, 0x70, + 0x6F, 0x72, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, + 0x6E, 0x20, 0x32, 0x30, 0x34, 0x38, 0x4D, 0x0A, 0x00, 0x41, 0x63, 0x74, 0x75, 0x61, 0x6C, 0x20, + 0x44, 0x52, 0x41, 0x4D, 0x20, 0x53, 0x49, 0x5A, 0x45, 0x20, 0x3D, 0x25, 0x64, 0x20, 0x4D, 0x0A, + 0x00, 0x44, 0x52, 0x41, 0x4D, 0x20, 0x53, 0x49, 0x5A, 0x45, 0x20, 0x3D, 0x25, 0x64, 0x20, 0x4D, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x70, 0x61, 0x72, 0x61, 0x31, 0x20, 0x3D, 0x20, 0x25, + 0x78, 0x2C, 0x20, 0x70, 0x61, 0x72, 0x61, 0x32, 0x20, 0x3D, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x64, + 0x72, 0x61, 0x6D, 0x5F, 0x74, 0x70, 0x72, 0x31, 0x33, 0x20, 0x3D, 0x20, 0x25, 0x78, 0x0A, 0x00, + 0x16, 0x00, 0x02, 0xF1, 0x94, 0x30, 0x9F, 0xE5, 0x30, 0x3F, 0x0C, 0xEE, 0x90, 0x10, 0x9F, 0xE5, + 0x90, 0x20, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x04, 0x30, 0x81, 0xE4, 0x01, 0x00, 0x52, 0xE1, + 0xFC, 0xFF, 0xFF, 0x1A, 0x00, 0x10, 0x0F, 0xE1, 0x7C, 0x20, 0x9F, 0xE5, 0x02, 0x10, 0xC1, 0xE1, + 0x06, 0x1D, 0x81, 0xE3, 0x13, 0x10, 0x81, 0xE3, 0x70, 0xD0, 0x9F, 0xE5, 0xFF, 0x7F, 0x4D, 0xE9, + 0x0C, 0x60, 0x8D, 0xE2, 0x12, 0x00, 0x02, 0xF1, 0x00, 0xC0, 0x4F, 0xE1, 0x00, 0x70, 0xA6, 0xE8, + 0x13, 0x00, 0x02, 0xF1, 0x00, 0xC0, 0x4F, 0xE1, 0x00, 0x70, 0xA6, 0xE8, 0x17, 0x00, 0x02, 0xF1, + 0x00, 0xC0, 0x4F, 0xE1, 0x00, 0x70, 0xA6, 0xE8, 0x1B, 0x00, 0x02, 0xF1, 0x00, 0xC0, 0x4F, 0xE1, + 0x00, 0x70, 0xA6, 0xE8, 0x11, 0x00, 0x02, 0xF1, 0x00, 0x70, 0x4F, 0xE1, 0x80, 0x7F, 0x86, 0xE8, + 0x16, 0x00, 0x02, 0xF1, 0x03, 0x00, 0xAD, 0xE8, 0x24, 0xD0, 0x9F, 0xE5, 0x00, 0xE0, 0xA0, 0xE3, + 0x30, 0x00, 0xA0, 0xE3, 0x11, 0x0F, 0x01, 0xEE, 0x13, 0x00, 0x02, 0xF1, 0x1E, 0xFF, 0x2F, 0xE1, + 0xC0, 0x00, 0x03, 0x00, 0x14, 0x01, 0x03, 0x00, 0x44, 0x02, 0x03, 0x00, 0x7F, 0x02, 0x0F, 0xF9, + 0x50, 0x01, 0x03, 0x00, 0xE8, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, + 0x02, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0xEA, 0xFF, 0xFF, 0xFF, 0xEA, + 0xFE, 0xFF, 0xFF, 0xEA, 0x16, 0x05, 0xCD, 0xF8, 0x11, 0xEF, 0x11, 0xEE, 0x01, 0x00, 0x1E, 0xE3, + 0x04, 0x00, 0x00, 0x1A, 0x31, 0xE0, 0xA0, 0xE3, 0x11, 0xEF, 0x01, 0xEE, 0x00, 0xE0, 0xA0, 0xE3, + 0xD5, 0xEF, 0x07, 0xEE, 0x00, 0x0A, 0x9D, 0xF8, 0x30, 0xE0, 0xA0, 0xE3, 0x11, 0xEF, 0x01, 0xEE, + 0x00, 0x0A, 0x9D, 0xF8, 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, + 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, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x18, 0xEE, 0xFF, 0x7F, 0x01, 0x00, 0x00, 0x00 +}; + +unsigned long long init_dram_bin_length = 26380; + \ No newline at end of file diff --git a/board/longanpi-3h/start.S b/board/longanpi-3h/start.S index 756fc0c9..15b34695 100644 --- a/board/longanpi-3h/start.S +++ b/board/longanpi-3h/start.S @@ -24,17 +24,22 @@ reset: .byte 'e', 'G', 'O', 'N', '.', 'B', 'T', '0' .long 0x12345678 /* checksum */ .long __spl_size /* spl size */ - .long 0x30 /* boot header size */ + .long 0x30 /* boot header size */ .long 0x30303033 /* boot header version */ .long 0x00020000 /* return value */ .long 0x00028000 /* run address */ - .long 0x0 /* eGON version */ - .byte 0x00, 0x00, 0x00, 0x00 /* platform information - 8byte */ + .long 0x0 /* eGON version */ + .byte 0x00, 0x00, 0x00, 0x00 /* platform information - 8byte */ .byte 0x34, 0x2e, 0x30, 0x00 - /* - * The actual reset code - */ + /* Invalidate L1 I/D */ + mov r0, #0 /* set up for MCR */ + mcr p15, 0, r0, c8, c7, 0 /* invalidate TLBs */ + mcr p15, 0, r0, c7, c5, 0 /* invalidate icache */ + mcr p15, 0, r0, c7, c5, 6 /* invalidate BP array */ + DSB /* DSB */ + ISB /* ISB */ + mrs r0, cpsr bic r0, r0, #ARMV7_MODE_MASK orr r0, r0, #ARMV7_SVC_MODE @@ -43,7 +48,6 @@ reset: msr cpsr_c, r0 /* Set vector base address register */ - ldr r0, =_vector mcr p15, 0, r0, c12, c0, 0 mrc p15, 0, r0, c1, c0, 0 diff --git a/cmake/board/longanpi-3h.cmake b/cmake/board/longanpi-3h.cmake index ef293965..ffc113cb 100644 --- a/cmake/board/longanpi-3h.cmake +++ b/cmake/board/longanpi-3h.cmake @@ -3,12 +3,13 @@ set(CONFIG_ARCH_ARM32 True) set(CONFIG_ARCH_ARM32_ARM64 True) set(CONFIG_CHIP_SUN50IW9 True) +set(CONFIG_USE_DRAM_PAYLOAD True) set(CONFIG_BOARD_LONGANPI-3H True) add_definitions(-DCONFIG_CHIP_SUN50IW9) # Set the cross-compile toolchain -set(CROSS_COMPILE "arm-none-eabi-") +set(CROSS_COMPILE "arm-linux-gnueabi-") set(CROSS_COMPILE ${CROSS_COMPILE} CACHE STRING "CROSS_COMPILE Toolchain") # Set the C and C++ compilers @@ -25,4 +26,15 @@ set(ARCH_BIN_START_ADDRESS "0x00020000") set(ARCH_BIN_SRAM_LENGTH "128K") set(ARCH_FEL_START_ADDRESS "0x00028000") -set(ARCH_FEL_SRAM_LENGTH "100K") \ No newline at end of file +set(ARCH_FEL_SRAM_LENGTH "100K") + +# Create an external project and build it +ExternalProject_Add( + init_dram + PREFIX init_dram + SOURCE_DIR "${CMAKE_SOURCE_DIR}/payloads/sun50iw9_libdram" + INSTALL_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND make -C ${CMAKE_SOURCE_DIR}/payloads/sun50iw9_libdram + BUILD_IN_SOURCE 1 +) diff --git a/include/drivers/sun50iw9/reg/reg-ncat.h b/include/drivers/sun50iw9/reg/reg-ncat.h index 09b2eb04..be6e481d 100644 --- a/include/drivers/sun50iw9/reg/reg-ncat.h +++ b/include/drivers/sun50iw9/reg/reg-ncat.h @@ -3,83 +3,83 @@ #ifndef __SUN50IW9_REG_NCAT_H__ #define __SUN50IW9_REG_NCAT_H__ -#define SUNXI_SRAM_A1_BASE (0x00020000L) -#define SUNXI_SRAM_A2_BASE (0x00100000L) -#define SUNXI_SRAM_C_BASE (0x00028000L) -#define SUNXI_CE_BASE (0x01904000L) +#define SUNXI_SRAM_A1_BASE (0x00020000) +#define SUNXI_SRAM_A2_BASE (0x00100000) +#define SUNXI_SRAM_C_BASE (0x00028000) +#define SUNXI_CE_BASE (0x01904000) #define SUNXI_SS_BASE SUNXI_CE_BASE // CPUX -#define SUNXI_CPUXCFG_BASE (0x09010000L) -#define SUNXI_CPU_SUBSYS_CTRL_BASE (0x08100000L) +#define SUNXI_CPUXCFG_BASE (0x09010000) +#define SUNXI_CPU_SUBSYS_CTRL_BASE (0x08100000) //sys ctrl -#define SUNXI_SYSCRL_BASE (0x03000000L) -#define SUNXI_CCM_BASE (0x03001000L) -#define SUNXI_DMA_BASE (0x03002000L) -#define SUNXI_MSGBOX_BASE (0x03003000L) -#define SUNXI_SPINLOCK_BASE (0x03004000L) -#define SUNXI_HSTMR_BASE (0x03005000L) -#define SUNXI_SID_BASE (0x03006000L) -#define SUNXI_SMC_BASE (0x03007000L) -#define SUNXI_SPC_BASE (0x03008000L) - -#define SUNXI_TIMER_BASE (0x03009000L) -#define SUNXI_WDOG_BASE (0x030090A0L) -#define SUNXI_CNT64_BASE (0x03009C00L) -#define SUNXI_PWM_BASE (0x0300A000L) -#define SUNXI_PIO_BASE (0x0300B000L) -#define SUNXI_PSI_BASE (0x0300C000L) -#define SUNXI_DCU_BASE (0x03010000L) -#define SUNXI_GIC_BASE (0x03020000L) -#define SUNXI_IOMMU_BASE (0x030F0000L) +#define SUNXI_SYSCRL_BASE (0x03000000) +#define SUNXI_CCM_BASE (0x03001000) +#define SUNXI_DMA_BASE (0x03002000) +#define SUNXI_MSGBOX_BASE (0x03003000) +#define SUNXI_SPINLOCK_BASE (0x03004000) +#define SUNXI_HSTMR_BASE (0x03005000) +#define SUNXI_SID_BASE (0x03006000) +#define SUNXI_SMC_BASE (0x03007000) +#define SUNXI_SPC_BASE (0x03008000) + +#define SUNXI_TIMER_BASE (0x03009000) +#define SUNXI_WDOG_BASE (0x030090A0) +#define SUNXI_CNT64_BASE (0x03009C00) +#define SUNXI_PWM_BASE (0x0300A000) +#define SUNXI_PIO_BASE (0x0300B000) +#define SUNXI_PSI_BASE (0x0300C000) +#define SUNXI_DCU_BASE (0x03010000) +#define SUNXI_GIC_BASE (0x03020000) +#define SUNXI_IOMMU_BASE (0x030F0000) //storage -#define SUNXI_DRAMCTL0_BASE (0x04002000L) -#define SUNXI_NFC_BASE (0x04011000L) -#define SUNXI_SMHC0_BASE (0x04020000L) -#define SUNXI_SMHC1_BASE (0x04021000L) -#define SUNXI_SMHC2_BASE (0x04022000L) +#define SUNXI_DRAMCTL0_BASE (0x04002000) +#define SUNXI_NFC_BASE (0x04011000) +#define SUNXI_SMHC0_BASE (0x04020000) +#define SUNXI_SMHC1_BASE (0x04021000) +#define SUNXI_SMHC2_BASE (0x04022000) -#define SUNXI_UART0_BASE (0x05000000L) -#define SUNXI_UART1_BASE (0x05000400L) -#define SUNXI_UART2_BASE (0x05000800L) -#define SUNXI_UART3_BASE (0x05000c00L) -#define SUNXI_UART4_BASE (0x05001000L) +#define SUNXI_UART0_BASE (0x05000000) +#define SUNXI_UART1_BASE (0x05000400) +#define SUNXI_UART2_BASE (0x05000800) +#define SUNXI_UART3_BASE (0x05000c00) +#define SUNXI_UART4_BASE (0x05001000) -#define SUNXI_TWI0_BASE (0x05002000L) -#define SUNXI_TWI1_BASE (0x05002400L) -#define SUNXI_TWI2_BASE (0x05002800L) +#define SUNXI_TWI0_BASE (0x05002000) +#define SUNXI_TWI1_BASE (0x05002400) +#define SUNXI_TWI2_BASE (0x05002800) -#define SUNXI_SCR0_BASE (0x05005000L) +#define SUNXI_SCR0_BASE (0x05005000) -#define SUNXI_SPI0_BASE (0x05010000L) -#define SUNXI_SPI1_BASE (0x05011000L) -#define SUNXI_GMAC_BASE (0x05020000L) +#define SUNXI_SPI0_BASE (0x05010000) +#define SUNXI_SPI1_BASE (0x05011000) +#define SUNXI_GMAC_BASE (0x05020000) -#define SUNXI_GPADC_BASE (0x05070000L) -#define SUNXI_LRADC_BASE (0x05070800L) +#define SUNXI_GPADC_BASE (0x05070000) +#define SUNXI_LRADC_BASE (0x05070800) #define SUNXI_KEYADC_BASE SUNXI_LRADC_BASE -#define SUNXI_USBOTG_BASE (0x05100000L) -#define SUNXI_EHCI0_BASE (0x05310000L) -#define SUNXI_EHCI1_BASE (0x05311000L) +#define SUNXI_USBOTG_BASE (0x05100000) +#define SUNXI_EHCI0_BASE (0x05310000) +#define SUNXI_EHCI1_BASE (0x05311000) -#define ARMV7_GIC_BASE (SUNXI_GIC_BASE + 0x1000L) -#define ARMV7_CPUIF_BASE (SUNXI_GIC_BASE + 0x2000L) +#define ARMV7_GIC_BASE (SUNXI_GIC_BASE + 0x1000) +#define ARMV7_CPUIF_BASE (SUNXI_GIC_BASE + 0x2000) //cpus -#define SUNXI_RTC_BASE (0x07000000L) -#define SUNXI_CPUS_CFG_BASE (0x07000400L) +#define SUNXI_RTC_BASE (0x07000000) +#define SUNXI_CPUS_CFG_BASE (0x07000400) #define SUNXI_RCPUCFG_BASE (SUNXI_CPUS_CFG_BASE) -#define SUNXI_RPRCM_BASE (0x07010000L) -#define SUNXI_RPWM_BASE (0x07020c00L) -#define SUNXI_RPIO_BASE (0x07022000L) -#define SUNXI_R_PIO_BASE (0x07022000L) -#define SUNXI_RTWI_BASE (0x07081400L) -#define SUNXI_RRSB_BASE (0x07083000L) -#define SUNXI_RSB_BASE (0x07083000L) +#define SUNXI_RPRCM_BASE (0x07010000) +#define SUNXI_RPWM_BASE (0x07020c00) +#define SUNXI_RPIO_BASE (0x07022000) +#define SUNXI_R_PIO_BASE (0x07022000) +#define SUNXI_RTWI_BASE (0x07081400) +#define SUNXI_RRSB_BASE (0x07083000) +#define SUNXI_RSB_BASE (0x07083000) #define SUNXI_RTWI_BRG_REG (SUNXI_RPRCM_BASE + 0x019c) #define SUNXI_RTWI0_RST_BIT (16) #define SUNXI_RTWI0_GATING_BIT (0) diff --git a/include/drivers/sun50iw9/sys-dram.h b/include/drivers/sun50iw9/sys-dram.h index 6b619dfd..d98ebeda 100644 --- a/include/drivers/sun50iw9/sys-dram.h +++ b/include/drivers/sun50iw9/sys-dram.h @@ -12,48 +12,6 @@ #define SDRAM_BASE (0x40000000) -enum sunxi_dram_type { - SUNXI_DRAM_TYPE_DDR2 = 2, - SUNXI_DRAM_TYPE_DDR3 = 3, - SUNXI_DRAM_TYPE_LPDDR2 = 6, - SUNXI_DRAM_TYPE_LPDDR3 = 7, -}; - -typedef struct __DRAM_PARA { - // normal configuration - uint32_t dram_clk; - uint32_t dram_type;// dram_type DDR2: 2 DDR3: 3 LPDDR2: 6 LPDDR3: 7 DDR3L: 31 - uint32_t dram_zq; // do not need - uint32_t dram_odt_en; - - // control configuration - uint32_t dram_para1; - uint32_t dram_para2; - - // timing configuration - uint32_t dram_mr0; - uint32_t dram_mr1; - uint32_t dram_mr2; - uint32_t dram_mr3; - uint32_t dram_tpr0;// DRAMTMG0 - uint32_t dram_tpr1;// DRAMTMG1 - uint32_t dram_tpr2;// DRAMTMG2 - uint32_t dram_tpr3;// DRAMTMG3 - uint32_t dram_tpr4;// DRAMTMG4 - uint32_t dram_tpr5;// DRAMTMG5 - uint32_t dram_tpr6;// DRAMTMG8 - // reserved for future use - uint32_t dram_tpr7; - uint32_t dram_tpr8; - uint32_t dram_tpr9; - uint32_t dram_tpr10; - uint32_t dram_tpr11; - uint32_t dram_tpr12; - uint32_t dram_tpr13; -} dram_para_t; - -int init_DRAM(int type, dram_para_t *para); - -uint64_t sunxi_dram_init(dram_para_t *para); +uint64_t sunxi_dram_init(void *para); #endif // __SUN50IW9_SYS_DRAM_H__ diff --git a/include/drivers/sun50iw9/sys-sid.h b/include/drivers/sun50iw9/sys-sid.h index c5f74a60..875f0358 100644 --- a/include/drivers/sun50iw9/sys-sid.h +++ b/include/drivers/sun50iw9/sys-sid.h @@ -14,10 +14,50 @@ #include -uint32_t efuse_read(uint32_t offset); - -void efuse_write(uint32_t offset, uint32_t value); - -void dump_efuse(void); +static const struct sid_section_t { + char *name; + uint32_t offset; + uint32_t size_bits; +} sids[] = { + {"chipid", 0x0000, 128}, + {"brom-conf", 0x0010, 32}, + {"thermal-sensor", 0x0014, 64}, + {"ft-zone", 0x001c, 128}, + {"oem", 0x002c, 160}, + {"write-protect", 0x0040, 32}, + {"read-protect", 0x0044, 32}, + {"jtag-lcjs", 0x0048, 32}, + {"jtag-attr", 0x004C, 32}, + {"efuse-huk", 0x0050, 192}, + {"efuse-ind", 0x0068, 32}, + {"efuse-id", 0x006c, 32}, + {"rotpk", 0x0070, 256}, + {"ssk", 0x0090, 128}, + {"rssk", 0x00a0, 256}, + {"sn", 0x00b0, 192}, + {"nv1", 0x00c8, 32}, + {"nv2", 0x00cc, 32}, + {"hdcp-hash", 0x00d0, 128}, + {"backup-key0", 0x00e0, 192}, + {"backup-key1", 0x00f8, 72}, +}; + +enum { + SID_PRCTL = SUNXI_SID_BASE + 0x040, + SID_PRKEY = SUNXI_SID_BASE + 0x050, + SID_RDKEY = SUNXI_SID_BASE + 0x060, + SJTAG_AT0 = SUNXI_SID_BASE + 0x080, + SJTAG_AT1 = SUNXI_SID_BASE + 0x084, + SJTAG_S = SUNXI_SID_BASE + 0x088, + SID_EFUSE = SUNXI_SID_BASE + 0x200, + SID_SECURE_MODE = SUNXI_SID_BASE + 0xA0, + EFUSE_HV_SWITCH = SUNXI_RTC_BASE + 0x204, +}; + +uint32_t syter_efuse_read(uint32_t offset); + +void syter_efuse_write(uint32_t offset, uint32_t value); + +void syter_efuse_dump(void); #endif// __SUN50IW9_SYS_SID_H__ \ No newline at end of file diff --git a/link/arm32/link_dram_payloads.ld b/link/arm32/link_dram_payloads.ld new file mode 100644 index 00000000..0180f44c --- /dev/null +++ b/link/arm32/link_dram_payloads.ld @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + ram (rwx) : ORIGIN = @ARCH_START_ADDRESS@, LENGTH = @ARCH_SRAM_LENGTH@ /* SRAMC. 132K on boot mode, 100K on FEL mode */ +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = 0x1000; /* 4KB */ + +/* Section Definitions */ +SECTIONS +{ + + .text : + { + . = ALIGN(4); + PROVIDE(__spl_start = .); + *(.text .text.*) + . = ALIGN(8); + PROVIDE(__ddr_bin_start = .); + KEEP(*(.init_dram_bin)) + PROVIDE(__ddr_bin_end = .); + . = ALIGN(4); + KEEP(*(.note.gnu.build-id)) + . = ALIGN(4); + } > ram + + . = ALIGN(4); + + .ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __exidx_end = .; + } > ram + + PROVIDE(__spl_end = .); + PROVIDE(__spl_size = __spl_end - __spl_start); + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + } > ram + + .stack (NOLOAD): + { + . = ALIGN(8); + /* SRV stack section */ + __stack_srv_start = .; + . += STACK_SIZE; + __stack_srv_end = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/payloads/sun50iw9_libdram/.gitignore b/payloads/sun50iw9_libdram/.gitignore new file mode 100644 index 00000000..2e75a798 --- /dev/null +++ b/payloads/sun50iw9_libdram/.gitignore @@ -0,0 +1,2 @@ +output/ +.obj/ \ No newline at end of file diff --git a/payloads/sun50iw9_libdram/Makefile b/payloads/sun50iw9_libdram/Makefile new file mode 100644 index 00000000..1cb61948 --- /dev/null +++ b/payloads/sun50iw9_libdram/Makefile @@ -0,0 +1,118 @@ +# +# Top makefile +# + +CROSS ?= arm-none-eabi- +NAME := ddr + +# +# System environment variable. +# +ifeq ($(OS), Windows_NT) + HOSTOS := windows +else + ifneq (,$(findstring Linux, $(shell uname -a))) + HOSTOS := linux + endif +endif + +# +# Load default variables. +# +ASFLAGS := -g -ggdb -Wall -O3 +CFLAGS := -g -ggdb -Wall -O3 +CXXFLAGS := -g -ggdb -Wall -O3 +LDFLAGS := -T link.ld -nostdlib +ARFLAGS := -rcs +OCFLAGS := -v -O binary +ODFLAGS := +MCFLAGS := -nostdinc -nostdlib -g -ggdb -O3 -mcpu=cortex-a53 -Wno-builtin-declaration-mismatch -fno-short-enums + +LIBDIRS := -Llib +LIBS := -lchipid -ldram +INCDIRS := +SRCDIRS := + +# +# Add external library +# +INCDIRS += include +SRCDIRS += source + +# +# You shouldn't need to change anything below this point. +# +AS := $(CROSS)gcc -x assembler-with-cpp +CC := $(CROSS)gcc +CXX := $(CROSS)g++ +LD := $(CROSS)ld +AR := $(CROSS)ar +OC := $(CROSS)objcopy +OD := $(CROSS)objdump +MKDIR := mkdir -p +CP := cp -af +RM := rm -fr +CD := cd +FIND := find + +# +# X variables +# +G_ASFLAGS := $(MCFLAGS) $(ASFLAGS) +G_CFLAGS := $(MCFLAGS) $(CFLAGS) +G_CXXFLAGS := $(MCFLAGS) $(CXXFLAGS) +G_LDFLAGS := $(LDFLAGS) +G_OCFLAGS := $(OCFLAGS) +G_LIBDIRS := $(LIBDIRS) +G_LIBS := $(LIBS) -lgcc + +G_OUT := output +G_NAME := $(patsubst %, $(G_OUT)/%, $(NAME)) +G_INCDIRS := $(patsubst %, -I %, $(INCDIRS)) +G_SRCDIRS := $(patsubst %, %, $(SRCDIRS)) +G_OBJDIRS := $(patsubst %, .obj/%, $(G_SRCDIRS)) + +G_SFILES := $(foreach dir, $(G_SRCDIRS), $(wildcard $(dir)/*.S)) +G_CFILES := $(foreach dir, $(G_SRCDIRS), $(wildcard $(dir)/*.c)) +G_CPPFILES := $(foreach dir, $(G_SRCDIRS), $(wildcard $(dir)/*.cpp)) + +G_SDEPS := $(patsubst %, .obj/%, $(G_SFILES:.S=.o.d)) +G_CDEPS := $(patsubst %, .obj/%, $(G_CFILES:.c=.o.d)) +G_CPPDEPS := $(patsubst %, .obj/%, $(G_CPPFILES:.cpp=.o.d)) +G_DEPS := $(G_SDEPS) $(G_CDEPS) $(G_CPPDEPS) + +G_SOBJS := $(patsubst %, .obj/%, $(G_SFILES:.S=.o)) +G_COBJS := $(patsubst %, .obj/%, $(G_CFILES:.c=.o)) +G_CPPOBJS := $(patsubst %, .obj/%, $(G_CPPFILES:.cpp=.o)) +G_OBJS := $(G_SOBJS) $(G_COBJS) $(G_CPPOBJS) + +VPATH := $(G_OBJDIRS) + +.PHONY: all clean +all : $(G_NAME) + +$(G_NAME) : $(G_OBJS) + @echo [LD] Linking $@.elf + @$(CC) $(G_LDFLAGS) $(G_LIBDIRS) -Wl,--cref,-Map=$@.map $^ -o $@.elf $(G_LIBS) + @echo [OC] Objcopying $@.bin + @$(OC) $(G_OCFLAGS) $@.elf $@.bin + +$(G_SOBJS) : .obj/%.o : %.S + @echo [AS] $< + @$(AS) $(G_ASFLAGS) -MD -MP -MF $@.d $(G_INCDIRS) -c $< -o $@ + +$(G_COBJS) : .obj/%.o : %.c + @echo [CC] $< + @$(CC) $(G_CFLAGS) -MD -MP -MF $@.d $(G_INCDIRS) -c $< -o $@ + +$(G_CPPOBJS) : .obj/%.o : %.cpp + @echo [CXX] $< + @$(CXX) $(G_CXXFLAGS) -MD -MP -MF $@.d $(G_INCDIRS) -c $< -o $@ + +clean: + @$(RM) .obj $(G_OUT) + +# +# Include the dependency files, should be place the last of makefile +# +sinclude $(shell $(MKDIR) $(G_OBJDIRS) $(G_OUT)) $(G_DEPS) diff --git a/payloads/sun50iw9_libdram/include/byteorder.h b/payloads/sun50iw9_libdram/include/byteorder.h new file mode 100644 index 00000000..f1fcf7a5 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/byteorder.h @@ -0,0 +1,83 @@ +#ifndef __BYTEORDER_H__ +#define __BYTEORDER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +static inline u16_t __swab16(u16_t x) +{ + return ( (x<<8) | (x>>8) ); +} + +static inline u32_t __swab32(u32_t x) +{ + return ( (x<<24) | (x>>24) | \ + ((x & (u32_t)0x0000ff00UL)<<8) | \ + ((x & (u32_t)0x00ff0000UL)>>8) ); +} + +static inline u64_t __swab64(u64_t x) +{ + return ( (x<<56) | (x>>56) | \ + ((x & (u64_t)0x000000000000ff00ULL)<<40) | \ + ((x & (u64_t)0x0000000000ff0000ULL)<<24) | \ + ((x & (u64_t)0x00000000ff000000ULL)<< 8) | \ + ((x & (u64_t)0x000000ff00000000ULL)>> 8) | \ + ((x & (u64_t)0x0000ff0000000000ULL)>>24) | \ + ((x & (u64_t)0x00ff000000000000ULL)>>40) ); +} + +/* + * swap bytes bizarrely. + * swahw32 - swap 16-bit half-words in a 32-bit word + */ +static inline u32_t __swahw32(u32_t x) +{ + return ( ((x & (u32_t)0x0000ffffUL)<<16) | ((x & (u32_t)0xffff0000UL)>>16) ); +} + +/* + * swap bytes bizarrely. + * swahb32 - swap 8-bit halves of each 16-bit half-word in a 32-bit word + */ +static inline u32_t __swahb32(u32_t x) +{ + return ( ((x & (u32_t)0x00ff00ffUL)<<8) | ((x & (u32_t)0xff00ff00UL)>>8) ); +} + +#if (BYTE_ORDER == BIG_ENDIAN) +#define cpu_to_le64(x) (__swab64((u64_t)(x))) +#define le64_to_cpu(x) (__swab64((u64_t)(x))) +#define cpu_to_le32(x) (__swab32((u32_t)(x))) +#define le32_to_cpu(x) (__swab32((u32_t)(x))) +#define cpu_to_le16(x) (__swab16((u16_t)(x))) +#define le16_to_cpu(x) (__swab16((u16_t)(x))) +#define cpu_to_be64(x) ((u64_t)(x)) +#define be64_to_cpu(x) ((u64_t)(x)) +#define cpu_to_be32(x) ((u32_t)(x)) +#define be32_to_cpu(x) ((u32_t)(x)) +#define cpu_to_be16(x) ((u16_t)(x)) +#define be16_to_cpu(x) ((u16_t)(x)) +#else +#define cpu_to_le64(x) ((u64_t)(x)) +#define le64_to_cpu(x) ((u64_t)(x)) +#define cpu_to_le32(x) ((u32_t)(x)) +#define le32_to_cpu(x) ((u32_t)(x)) +#define cpu_to_le16(x) ((u16_t)(x)) +#define le16_to_cpu(x) ((u16_t)(x)) +#define cpu_to_be64(x) (__swab64((u64_t)(x))) +#define be64_to_cpu(x) (__swab64((u64_t)(x))) +#define cpu_to_be32(x) (__swab32((u32_t)(x))) +#define be32_to_cpu(x) (__swab32((u32_t)(x))) +#define cpu_to_be16(x) (__swab16((u16_t)(x))) +#define be16_to_cpu(x) (__swab16((u16_t)(x))) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __BYTEORDER_H__ */ diff --git a/payloads/sun50iw9_libdram/include/dram.h b/payloads/sun50iw9_libdram/include/dram.h new file mode 100644 index 00000000..c5bf7186 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/dram.h @@ -0,0 +1,50 @@ +#ifndef __DRAM_H__ +#define __DRAM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct { + uint32_t dram_clk; + uint32_t dram_type; + uint32_t dram_dx_odt; + uint32_t dram_dx_dri; + uint32_t dram_ca_dri; + uint32_t dram_odt_en; + uint32_t dram_para0; + uint32_t dram_para1; + uint32_t dram_para2; + uint32_t dram_mr0; + uint32_t dram_mr1; + uint32_t dram_mr2; + uint32_t dram_mr3; + uint32_t dram_mr4; + uint32_t dram_mr5; + uint32_t dram_mr6; + uint32_t dram_mr11; + uint32_t dram_mr12; + uint32_t dram_mr13; + uint32_t dram_mr14; + uint32_t dram_mr16; + uint32_t dram_mr17; + uint32_t dram_mr22; + uint32_t dram_tpr0; + uint32_t dram_tpr1; + uint32_t dram_tpr2; + uint32_t dram_tpr3; + uint32_t dram_tpr6; + uint32_t dram_tpr10; + uint32_t dram_tpr11; + uint32_t dram_tpr12; + uint32_t dram_tpr13; + uint32_t dram_tpr14; +} dram_para_t; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRAM_H__ */ diff --git a/payloads/sun50iw9_libdram/include/endian.h b/payloads/sun50iw9_libdram/include/endian.h new file mode 100644 index 00000000..7e74f435 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/endian.h @@ -0,0 +1,27 @@ +#ifndef __ARM32_ENDIAN_H__ +#define __ARM32_ENDIAN_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define LITTLE_ENDIAN (0x1234) +#define BIG_ENDIAN (0x4321) + +#if ( !defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN) ) +#define __LITTLE_ENDIAN +#endif + +#if defined(__LITTLE_ENDIAN) +#define BYTE_ORDER LITTLE_ENDIAN +#elif defined(__BIG_ENDIAN) +#define BYTE_ORDER BIG_ENDIAN +#else +#error "Unknown byte order!" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __ARM32_ENDIAN_H__ */ diff --git a/payloads/sun50iw9_libdram/include/io.h b/payloads/sun50iw9_libdram/include/io.h new file mode 100644 index 00000000..fbf25624 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/io.h @@ -0,0 +1,54 @@ +#ifndef __IO_H__ +#define __IO_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +static inline u8_t read8(virtual_addr_t addr) +{ + return( *((volatile u8_t *)(addr)) ); +} + +static inline u16_t read16(virtual_addr_t addr) +{ + return( *((volatile u16_t *)(addr)) ); +} + +static inline u32_t read32(virtual_addr_t addr) +{ + return( *((volatile u32_t *)(addr)) ); +} + +static inline u64_t read64(virtual_addr_t addr) +{ + return( *((volatile u64_t *)(addr)) ); +} + +static inline void write8(virtual_addr_t addr, u8_t value) +{ + *((volatile u8_t *)(addr)) = value; +} + +static inline void write16(virtual_addr_t addr, u16_t value) +{ + *((volatile u16_t *)(addr)) = value; +} + +static inline void write32(virtual_addr_t addr, u32_t value) +{ + *((volatile u32_t *)(addr)) = value; +} + +static inline void write64(virtual_addr_t addr, u64_t value) +{ + *((volatile u64_t *)(addr)) = value; +} + +#ifdef __cplusplus +} +#endif + +#endif /* __IO_H__ */ diff --git a/payloads/sun50iw9_libdram/include/stdarg.h b/payloads/sun50iw9_libdram/include/stdarg.h new file mode 100644 index 00000000..074c4893 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/stdarg.h @@ -0,0 +1,34 @@ +#ifndef __STDARG_H__ +#define __STDARG_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef __builtin_va_list va_list; + +/* + * prepare to access variable args + */ +#define va_start(v, l) __builtin_va_start(v, l) + +/* + * the caller will get the value of current argument + */ +#define va_arg(v, l) __builtin_va_arg(v, l) + +/* + * end for variable args + */ +#define va_end(v) __builtin_va_end(v) + +/* + * copy variable args + */ +#define va_copy(d, s) __builtin_va_copy(d, s) + +#ifdef __cplusplus +} +#endif + +#endif /* __STDARG_H__ */ diff --git a/payloads/sun50iw9_libdram/include/stddef.h b/payloads/sun50iw9_libdram/include/stddef.h new file mode 100644 index 00000000..ca3874cd --- /dev/null +++ b/payloads/sun50iw9_libdram/include/stddef.h @@ -0,0 +1,49 @@ +#ifndef __STDDEF_H__ +#define __STDDEF_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(__cplusplus) +#define NULL (0) +#else +#define NULL ((void *)0) +#endif + +#if (defined(__GNUC__) && (__GNUC__ >= 4)) +#define offsetof(type, member) __builtin_offsetof(type, member) +#else +#define offsetof(type, field) ((size_t)(&((type *)0)->field)) +#endif +#define container_of(ptr, type, member) ({const typeof(((type *)0)->member) *__mptr = (ptr); (type *)((char *)__mptr - offsetof(type,member));}) + +#if (defined(__GNUC__) && (__GNUC__ >= 3)) +#define likely(expr) (__builtin_expect(!!(expr), 1)) +#define unlikely(expr) (__builtin_expect(!!(expr), 0)) +#else +#define likely(expr) (!!(expr)) +#define unlikely(expr) (!!(expr)) +#endif + +#define min(a, b) ({typeof(a) _amin = (a); typeof(b) _bmin = (b); (void)(&_amin == &_bmin); _amin < _bmin ? _amin : _bmin;}) +#define max(a, b) ({typeof(a) _amax = (a); typeof(b) _bmax = (b); (void)(&_amax == &_bmax); _amax > _bmax ? _amax : _bmax;}) +#define clamp(v, a, b) min(max(a, v), b) + +#define ifloor(x) ((x) > 0 ? (int)(x) : (int)((x) - 0.9999999999)) +#define iround(x) ((x) > 0 ? (int)((x) + 0.5) : (int)((x) - 0.5)) +#define iceil(x) ((x) > 0 ? (int)((x) + 0.9999999999) : (int)(x)) +#define idiv255(x) ((((int)(x) + 1) * 257) >> 16) + +#define X(...) ("" #__VA_ARGS__ "") + +enum { + FALSE = 0, + TRUE = 1, +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __STDDEF_H__ */ diff --git a/payloads/sun50iw9_libdram/include/stdint.h b/payloads/sun50iw9_libdram/include/stdint.h new file mode 100644 index 00000000..41c8de3a --- /dev/null +++ b/payloads/sun50iw9_libdram/include/stdint.h @@ -0,0 +1,31 @@ +#ifndef __STDINT_H__ +#define __STDINT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef s8_t int8_t; +typedef u8_t uint8_t; + +typedef s16_t int16_t; +typedef u16_t uint16_t; + +typedef s32_t int32_t; +typedef u32_t uint32_t; + +typedef s64_t int64_t; +typedef u64_t uint64_t; + +#define UINT8_MAX (0xff) +#define UINT16_MAX (0xffff) +#define UINT32_MAX (0xffffffff) +#define UINT64_MAX (0xffffffffffffffffULL) + +#ifdef __cplusplus +} +#endif + +#endif /* __STDINT_H__ */ diff --git a/payloads/sun50iw9_libdram/include/stdlib.h b/payloads/sun50iw9_libdram/include/stdlib.h new file mode 100644 index 00000000..4ede55a6 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/stdlib.h @@ -0,0 +1,18 @@ +#ifndef __STDLIB_H__ +#define __STDLIB_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +void uart_printf(const char *fmt, ...); + +void printf(const char *fmt, ...); + +uint32_t time_ms(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __STDLIB_H__ */ diff --git a/payloads/sun50iw9_libdram/include/string.h b/payloads/sun50iw9_libdram/include/string.h new file mode 100644 index 00000000..126d16e2 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/string.h @@ -0,0 +1,17 @@ +#ifndef __STRING_H__ +#define __STRING_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +void * memset(void * s, int c, size_t n); +void * memcpy(void * dest, const void * src, size_t len); + +#ifdef __cplusplus +} +#endif + +#endif /* __STRING_H__ */ diff --git a/payloads/sun50iw9_libdram/include/types.h b/payloads/sun50iw9_libdram/include/types.h new file mode 100644 index 00000000..599979d4 --- /dev/null +++ b/payloads/sun50iw9_libdram/include/types.h @@ -0,0 +1,53 @@ +#ifndef __ARM32_TYPES_H__ +#define __ARM32_TYPES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef signed char s8_t; +typedef unsigned char u8_t; + +typedef signed short s16_t; +typedef unsigned short u16_t; + +typedef signed int s32_t; +typedef unsigned int u32_t; + +typedef signed long long s64_t; +typedef unsigned long long u64_t; + +typedef signed long long intmax_t; +typedef unsigned long long uintmax_t; + +typedef signed int ptrdiff_t; +typedef signed int intptr_t; +typedef unsigned int uintptr_t; + +typedef unsigned int size_t; +typedef signed int ssize_t; + +typedef signed int off_t; +typedef signed long long loff_t; + +typedef signed int bool_t; +typedef unsigned int irq_flags_t; + +typedef unsigned int virtual_addr_t; +typedef unsigned int virtual_size_t; +typedef unsigned int physical_addr_t; +typedef unsigned int physical_size_t; + +typedef struct { + volatile int counter; +} atomic_t; + +typedef struct { + volatile int lock; +} spinlock_t; + +#ifdef __cplusplus +} +#endif + +#endif /* __ARM32_TYPES_H__ */ diff --git a/payloads/sun50iw9_libdram/lib/libchipid.a b/payloads/sun50iw9_libdram/lib/libchipid.a new file mode 100644 index 00000000..fdda7752 Binary files /dev/null and b/payloads/sun50iw9_libdram/lib/libchipid.a differ diff --git a/payloads/sun50iw9_libdram/lib/libdram.a b/payloads/sun50iw9_libdram/lib/libdram.a new file mode 100644 index 00000000..c54c47b6 Binary files /dev/null and b/payloads/sun50iw9_libdram/lib/libdram.a differ diff --git a/payloads/sun50iw9_libdram/link.ld b/payloads/sun50iw9_libdram/link.ld new file mode 100644 index 00000000..0cff8fd2 --- /dev/null +++ b/payloads/sun50iw9_libdram/link.ld @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x48000, LENGTH = 0x10000 /* SRAMC. */ +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = 0x1000; /* 4KB */ + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + PROVIDE(__spl_start = .); + .obj/source/start.o (*.text) + *(.text .text.*) + KEEP(*(.note.gnu.build-id)) + . = ALIGN(4); + } > ram + + . = ALIGN(4); + + .ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __exidx_end = .; + } > ram + + PROVIDE(__spl_end = .); + PROVIDE(__spl_size = __spl_end - __spl_start); + + .stack (NOLOAD): + { + . = ALIGN(8); + /* SRV stack section */ + __stack_srv_start = .; + . += STACK_SIZE; + __stack_srv_end = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/payloads/sun50iw9_libdram/source/main.c b/payloads/sun50iw9_libdram/source/main.c new file mode 100644 index 00000000..1b33a69c --- /dev/null +++ b/payloads/sun50iw9_libdram/source/main.c @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +// init_DRAM in libdram.a +extern int init_DRAM(int type, void *buff); + +// Initialize DRAM using the dram_para structure +void sys_init_dram(void) { + dram_para_t dram_para = { + .dram_clk = 792, + .dram_type = 8, + .dram_dx_odt = 0x07070707, + .dram_dx_dri = 0x0d0d0d0d, + .dram_ca_dri = 0x0e0e, + .dram_para0 = 0x0d0a050c, + .dram_para1 = 0x30ea, + .dram_para2 = 0x1000, + .dram_mr0 = 0x0, + .dram_mr1 = 0x34, + .dram_mr2 = 0x1b, + .dram_mr3 = 0x33, + .dram_mr4 = 0x3, + .dram_mr5 = 0x0, + .dram_mr6 = 0x0, + .dram_mr11 = 0x04, + .dram_mr12 = 0x72, + .dram_mr13 = 0x0, + .dram_mr14 = 0x7, + .dram_mr16 = 0x0, + .dram_mr17 = 0x0, + .dram_mr22 = 0x26, + .dram_tpr0 = 0x06060606, + .dram_tpr1 = 0x04040404, + .dram_tpr2 = 0x1f080403, + .dram_tpr3 = 0x0, + .dram_tpr6 = 0x48010101, + .dram_tpr10 = 0x00273333, + .dram_tpr11 = 0x241f1923, + .dram_tpr12 = 0x14151313, + .dram_tpr13 = 0x81d24, + .dram_tpr14 = 0x2023211f, + }; + + uint32_t dram_size = 0; + dram_size = init_DRAM(0, &dram_para); + printf("Init DRAM Done, DRAM Size = %dM\n", dram_size); +} + +// fake function for link, we aleady set ddr voltage in SyterKit +int set_ddr_voltage(int set_vol) { + printf("Set DRAM Voltage to %dmv\n", set_vol); + return 0; +} \ No newline at end of file diff --git a/payloads/sun50iw9_libdram/source/memcpy.S b/payloads/sun50iw9_libdram/source/memcpy.S new file mode 100644 index 00000000..137c3459 --- /dev/null +++ b/payloads/sun50iw9_libdram/source/memcpy.S @@ -0,0 +1,240 @@ + +#define pull lsr +#define push lsl +#define PLD(code...) +#define CALGN(code...) code + +#define W(instr) instr + +#define LDR1W_SHIFT 0 +#define STR1W_SHIFT 0 + + .macro ldr1w ptr reg abort + W(ldr) \reg, [\ptr], #4 + .endm + + .macro ldr4w ptr reg1 reg2 reg3 reg4 abort + ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4} + .endm + + .macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort + ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8} + .endm + + .macro ldr1b ptr reg cond=al abort + ldr\cond\()b \reg, [\ptr], #1 + .endm + + .macro str1w ptr reg abort + W(str) \reg, [\ptr], #4 + .endm + + .macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort + stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8} + .endm + + .macro str1b ptr reg cond=al abort + str\cond\()b \reg, [\ptr], #1 + .endm + + .macro enter reg1 reg2 + stmdb sp!, {r0, \reg1, \reg2} + .endm + + .macro exit reg1 reg2 + ldmfd sp!, {r0, \reg1, \reg2} + .endm + + .text + +/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */ + +.globl memcpy0 +memcpy0: + + cmp r0, r1 + moveq pc, lr + + enter r4, lr + + subs r2, r2, #4 + blt 8f + ands ip, r0, #3 + PLD( pld [r1, #0] ) + bne 9f + ands ip, r1, #3 + bne 10f + +1: subs r2, r2, #(28) + stmfd sp!, {r5 - r8} + blt 5f + + CALGN( ands ip, r0, #31 ) + CALGN( rsb r3, ip, #32 ) + CALGN( sbcnes r4, r3, r2 ) @ C is always set here + CALGN( bcs 2f ) + CALGN( adr r4, 6f ) + CALGN( subs r2, r2, r3 ) @ C gets set + CALGN( add pc, r4, ip ) + + PLD( pld [r1, #0] ) +2: PLD( subs r2, r2, #96 ) + PLD( pld [r1, #28] ) + PLD( blt 4f ) + PLD( pld [r1, #60] ) + PLD( pld [r1, #92] ) + +3: PLD( pld [r1, #124] ) +4: ldr8w r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f + subs r2, r2, #32 + str8w r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f + bge 3b + PLD( cmn r2, #96 ) + PLD( bge 4b ) + +5: ands ip, r2, #28 + rsb ip, ip, #32 +#if LDR1W_SHIFT > 0 + lsl ip, ip, #LDR1W_SHIFT +#endif + addne pc, pc, ip @ C is always clear here + b 7f +6: + .rept (1 << LDR1W_SHIFT) + W(nop) + .endr + ldr1w r1, r3, abort=20f + ldr1w r1, r4, abort=20f + ldr1w r1, r5, abort=20f + ldr1w r1, r6, abort=20f + ldr1w r1, r7, abort=20f + ldr1w r1, r8, abort=20f + ldr1w r1, lr, abort=20f + +#if LDR1W_SHIFT < STR1W_SHIFT + lsl ip, ip, #STR1W_SHIFT - LDR1W_SHIFT +#elif LDR1W_SHIFT > STR1W_SHIFT + lsr ip, ip, #LDR1W_SHIFT - STR1W_SHIFT +#endif + add pc, pc, ip + nop + .rept (1 << STR1W_SHIFT) + W(nop) + .endr + str1w r0, r3, abort=20f + str1w r0, r4, abort=20f + str1w r0, r5, abort=20f + str1w r0, r6, abort=20f + str1w r0, r7, abort=20f + str1w r0, r8, abort=20f + str1w r0, lr, abort=20f + + CALGN( bcs 2b ) + +7: ldmfd sp!, {r5 - r8} + +8: movs r2, r2, lsl #31 + ldr1b r1, r3, ne, abort=21f + ldr1b r1, r4, cs, abort=21f + ldr1b r1, ip, cs, abort=21f + str1b r0, r3, ne, abort=21f + str1b r0, r4, cs, abort=21f + str1b r0, ip, cs, abort=21f + + @exit r4, pc + + ldmfd sp!, {r0, r4, lr} + + blx lr + + +9: rsb ip, ip, #4 + cmp ip, #2 + ldr1b r1, r3, gt, abort=21f + ldr1b r1, r4, ge, abort=21f + ldr1b r1, lr, abort=21f + str1b r0, r3, gt, abort=21f + str1b r0, r4, ge, abort=21f + subs r2, r2, ip + str1b r0, lr, abort=21f + blt 8b + ands ip, r1, #3 + beq 1b + +10: bic r1, r1, #3 + cmp ip, #2 + ldr1w r1, lr, abort=21f + beq 17f + bgt 18f + + + .macro forward_copy_shift pull push + + subs r2, r2, #28 + blt 14f + + CALGN( ands ip, r0, #31 ) + CALGN( rsb ip, ip, #32 ) + CALGN( sbcnes r4, ip, r2 ) @ C is always set here + CALGN( subcc r2, r2, ip ) + CALGN( bcc 15f ) + +11: stmfd sp!, {r5 - r9} + + PLD( pld [r1, #0] ) + PLD( subs r2, r2, #96 ) + PLD( pld [r1, #28] ) + PLD( blt 13f ) + PLD( pld [r1, #60] ) + PLD( pld [r1, #92] ) + +12: PLD( pld [r1, #124] ) +13: ldr4w r1, r4, r5, r6, r7, abort=19f + mov r3, lr, pull #\pull + subs r2, r2, #32 + ldr4w r1, r8, r9, ip, lr, abort=19f + orr r3, r3, r4, push #\push + mov r4, r4, pull #\pull + orr r4, r4, r5, push #\push + mov r5, r5, pull #\pull + orr r5, r5, r6, push #\push + mov r6, r6, pull #\pull + orr r6, r6, r7, push #\push + mov r7, r7, pull #\pull + orr r7, r7, r8, push #\push + mov r8, r8, pull #\pull + orr r8, r8, r9, push #\push + mov r9, r9, pull #\pull + orr r9, r9, ip, push #\push + mov ip, ip, pull #\pull + orr ip, ip, lr, push #\push + str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f + bge 12b + PLD( cmn r2, #96 ) + PLD( bge 13b ) + + ldmfd sp!, {r5 - r9} + +14: ands ip, r2, #28 + beq 16f + +15: mov r3, lr, pull #\pull + ldr1w r1, lr, abort=21f + subs ip, ip, #4 + orr r3, r3, lr, push #\push + str1w r0, r3, abort=21f + bgt 15b + CALGN( cmp r2, #0 ) + CALGN( bge 11b ) + +16: sub r1, r1, #(\push / 8) + b 8b + + .endm + + + forward_copy_shift pull=8 push=24 + +17: forward_copy_shift pull=16 push=16 + +18: forward_copy_shift pull=24 push=8 diff --git a/payloads/sun50iw9_libdram/source/memset.S b/payloads/sun50iw9_libdram/source/memset.S new file mode 100644 index 00000000..9675ac9e --- /dev/null +++ b/payloads/sun50iw9_libdram/source/memset.S @@ -0,0 +1,116 @@ +#define pull lsr +#define push lsl +#define PLD(code...) +#define CALGN(code...) code + + .text + .align 5 + + .syntax unified + +.globl memset0 +memset0: + ands r3, r0, #3 @ 1 unaligned? + mov ip, r0 @ preserve r0 as return value + bne 6f @ 1 +/* + * we know that the pointer in ip is aligned to a word boundary. + */ +1: orr r1, r1, r1, lsl #8 + orr r1, r1, r1, lsl #16 + mov r3, r1 + cmp r2, #16 + blt 4f + +#if ! CALGN(1)+0 + +/* + * We need 2 extra registers for this loop - use r8 and the LR + */ + stmfd sp!, {r8, lr} + mov r8, r1 + mov lr, r1 + +2: subs r2, r2, #64 + stmiage ip!, {r1, r3, r8, lr} @ 64 bytes at a time. + stmiage ip!, {r1, r3, r8, lr} + stmiage ip!, {r1, r3, r8, lr} + stmiage ip!, {r1, r3, r8, lr} + bgt 2b + ldmfdeq sp!, {r8, pc} @ Now <64 bytes to go. +/* + * No need to correct the count; we're only testing bits from now on + */ + tst r2, #32 + stmiane ip!, {r1, r3, r8, lr} + stmiane ip!, {r1, r3, r8, lr} + tst r2, #16 + stmiane ip!, {r1, r3, r8, lr} + ldmfd sp!, {r8, lr} + +#else + +/* + * This version aligns the destination pointer in order to write + * whole cache lines at once. + */ + + stmfd sp!, {r4-r8, lr} + mov r4, r1 + mov r5, r1 + mov r6, r1 + mov r7, r1 + mov r8, r1 + mov lr, r1 + + cmp r2, #96 + tstgt ip, #31 + ble 3f + + and r8, ip, #31 + rsb r8, r8, #32 + sub r2, r2, r8 + movs r8, r8, lsl #(32 - 4) + stmiacs ip!, {r4, r5, r6, r7} + stmiami ip!, {r4, r5} + tst r8, #(1 << 30) + mov r8, r1 + strne r1, [ip], #4 + +3: subs r2, r2, #64 + stmiage ip!, {r1, r3-r8, lr} + stmiage ip!, {r1, r3-r8, lr} + bgt 3b + ldmfdeq sp!, {r4-r8, pc} + + tst r2, #32 + stmiane ip!, {r1, r3-r8, lr} + tst r2, #16 + stmiane ip!, {r4-r7} + ldmfd sp!, {r4-r8, lr} + +#endif + +4: tst r2, #8 + stmiane ip!, {r1, r3} + tst r2, #4 + strne r1, [ip], #4 +/* + * When we get here, we've got less than 4 bytes to zero. We + * may have an unaligned pointer as well. + */ +5: tst r2, #2 + strbne r1, [ip], #1 + strbne r1, [ip], #1 + tst r2, #1 + strbne r1, [ip], #1 + bx lr + +6: subs r2, r2, #4 @ 1 do we have enough + blt 5b @ 1 bytes to align with? + cmp r3, #2 @ 1 + strblt r1, [ip], #1 @ 1 + strble r1, [ip], #1 @ 1 + strb r1, [ip], #1 @ 1 + add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) + b 1b diff --git a/payloads/sun50iw9_libdram/source/printf.c b/payloads/sun50iw9_libdram/source/printf.c new file mode 100644 index 00000000..3476842d --- /dev/null +++ b/payloads/sun50iw9_libdram/source/printf.c @@ -0,0 +1,153 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SUNXI_UART0_BASE 0x05000000 + +// Function to transmit a single character via UART +void sunxi_uart_putc(char c) { + // Wait until the TX FIFO is not full + while ((read32(SUNXI_UART0_BASE + 0x14) & (0x1 << 6)) == 0) + ; + + // Write the character to the UART data register + write32(SUNXI_UART0_BASE + 0x00, c); +} + +void sunxi_serial_putc(char c) { + // Check if the character is a newline '\n' + if (c == '\n') { + // If it is, send a carriage return '\r' before newline + sunxi_uart_putc('\r'); + } + // Send the character via UART + sunxi_uart_putc(c); +} + +static int vpf_str_to_num(const char *fmt, int *num) { + const char *p; + int res, d, isd; + + // Initialize the result and iterate over the format string + res = 0; + for (p = fmt; *fmt != '\0'; p++) { + isd = (*p >= '0' && *p <= '9'); + if (!isd) + break; + // Convert the digit character to its corresponding integer value + d = *p - '0'; + // Multiply the result by 10 and add the digit value + res *= 10; + res += d; + } + // Store the final result in the provided pointer + *num = res; + // Return the number of characters processed + return ((int) (p - fmt)); +} + +static void vpf_num_to_str(uint32_t a, int ish, int pl, int pc) { + char buf[32]; + uint32_t base; + int idx, i, t; + + // Initialize the buffer with padding characters + for (i = 0; i < sizeof(buf); i++) + buf[i] = pc; + + // Determine the base for number conversion (10 for decimal, 16 for hexadecimal) + base = 10; + if (ish) + base = 16; + + idx = 0; + // Convert the number to string representation + do { + t = a % base; + if (t >= 10) + buf[idx] = t - 10 + 'a';// Convert digit greater than 9 to corresponding character 'a' to 'f' + else + buf[idx] = t + '0';// Convert digit to corresponding character '0' to '9' + a /= base; + idx++; + } while (a > 0); + + // Handle padding length + if (pl > 0) { + if (pl >= sizeof(buf)) + pl = sizeof(buf) - 1; + if (idx < pl) + idx = pl; + } + + buf[idx] = '\0';// Null-terminate the string + + // Print the string in reverse order + for (i = idx - 1; i >= 0; i--) + sunxi_serial_putc(buf[i]); +} + +// Output a null-terminated string to the serial port +static void vpf_str(const char *s) { + while (*s != '\0') { // Loop until the end of the string ('\0') is reached + sunxi_serial_putc(*s++);// Output the current character and move to the next character in the string + } +} + +// Format and output a string using variable arguments +static int vpf(const char *fmt, va_list va) { + const char *p, *q; // Pointers for iterating through the format string + int f, c, vai, pl, pc, i;// Variables for formatting and conversion + unsigned char t; // Temporary variable for storing characters + + pc = ' '; // Default padding character is space (' ') + for (p = fmt; *p != '\0'; p++) {// Loop until the end of the format string is reached + f = 0; // Initialize formatting flag + pl = 0; // Initialize padding length + c = *p; // Get the current character from the format string + q = p; // Set a pointer to the current position in the format string + if (*p == '%') { // Check if the current character is a formatting specifier (%) + q = p; // Update the pointer to the start of the formatting specifier + p++; // Move to the next character after the % + if (*p >= '0' && *p <= '9') + p += vpf_str_to_num(p, &pl);// Parse the number after % as padding length + f = *p; // Store the formatting specifier + } + if ((f == 'd') || (f == 'x')) { // Check if the formatting specifier is for decimal or hexadecimal + vai = va_arg(va, int); // Retrieve the next argument from the variable arguments list (va_list) as an integer + vpf_num_to_str(vai, f == 'x', pl, pc);// Convert the integer to a string representation and output it + } else if (f == 's') { // Check if the formatting specifier is for a string + char *str = va_arg(va, char *); // Retrieve the next argument from the variable arguments list as a string pointer + vpf_str(str); // Output the string + } else { + for (i = 0; i < (p - q); i++) + sunxi_serial_putc(q[i]); // Output the characters before the formatting specifier + t = (unsigned char) (f != 0 ? f : c);// If there is no formatting specifier, output the current character + sunxi_serial_putc(t); + } + } + return 0;// Return 0 to indicate successful completion +} + +void printf(const char *fmt, ...) { + uart_printf("[ DRAMINIT][I] "); + va_list va; + va_start(va, fmt); + vpf(fmt, va); // 标准输出格式化打印 + va_end(va); +} + +// Output a formatted string to the standard output +void uart_printf(const char *fmt, ...) { + va_list va;// Declare a variable argument list + + va_start(va, fmt);// Initialize the variable argument list with the provided format string + vpf(fmt, va); // Format and output the string using the format string and the variable argument list + va_end(va); // Clean up the variable argument list +} diff --git a/payloads/sun50iw9_libdram/source/start.S b/payloads/sun50iw9_libdram/source/start.S new file mode 100644 index 00000000..484911a3 --- /dev/null +++ b/payloads/sun50iw9_libdram/source/start.S @@ -0,0 +1,40 @@ + .text + .global _start +_start: + /* Invalidate L1 I/D */ + mov r0, #0 /* set up for MCR */ + mcr p15, 0, r0, c8, c7, 0 /* invalidate TLBs */ + mcr p15, 0, r0, c7, c5, 0 /* invalidate icache */ + mcr p15, 0, r0, c7, c5, 6 /* invalidate BP array */ + DSB /* DSB */ + ISB /* ISB */ + b reset + +reset: + ldr r0, =__stack_srv_end + str sp, [r0, #0] + str lr, [r0, #4] + mrs lr, cpsr + str lr, [r0, #8] + mrc p15, 0, lr, c1, c0, 0 + str lr, [r0, #12] + mrc p15, 0, lr, c12, c0, 0 + str lr, [r0, #16] + mrc p15, 0, lr, c1, c0, 0 + str lr, [r0, #20] + + bl sys_init_dram + + ldr r0, =__stack_srv_end + ldr sp, [r0, #0] + ldr lr, [r0, #4] + ldr r1, [r0, #20] + mcr p15, 0, r1, c1, c0, 0 + ldr r1, [r0, #16] + mcr p15, 0, r1, c12, c0, 0 + ldr r1, [r0, #12] + mcr p15, 0, r1, c1, c0, 0 + ldr r1, [r0, #8] + msr cpsr, r1 + + bx lr diff --git a/payloads/sun50iw9_libdram/source/string.c b/payloads/sun50iw9_libdram/source/string.c new file mode 100644 index 00000000..5bbacb13 --- /dev/null +++ b/payloads/sun50iw9_libdram/source/string.c @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: MIT */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern void *memset0(void *s, int c, size_t count); + +void *memset(void *s, int c, size_t count) { + asm volatile("bx %0" + : + : "r"(memset0)); + + return s; +} + +extern void *memcpy0(void *dest, const void *src, size_t n); + +void *memcpy(void *dest, const void *src, size_t count) { + asm volatile("bx %0" + : + : "r"(memcpy0)); + + return dest; +} \ No newline at end of file diff --git a/payloads/sun50iw9_libdram/source/timer.c b/payloads/sun50iw9_libdram/source/timer.c new file mode 100644 index 00000000..c97a8dc7 --- /dev/null +++ b/payloads/sun50iw9_libdram/source/timer.c @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: MIT */ + +#include +#include +#include +#include +#include +#include +#include +#include + +// Stub function for handling signal raising +int raise(int signum) { + return 0;// Always return 0 to indicate successful handling of the signal +} + +// Inline function to retrieve the current value of the architecture-specific counter +static inline uint64_t get_arch_counter(void) { + uint32_t low = 0, high = 0; + // Use assembly language to read the architecture-specific counter + asm volatile("mrrc p15, 0, %0, %1, c14" + : "=r"(low), "=r"(high) + : + : "memory"); + // Combine the low and high values to form a 64-bit counter value + return (((uint64_t) high) << 32 | low); +} + +// Delay function that waits for the specified number of microseconds +static void udelay(uint32_t us) { + uint64_t t1, t2; + + t1 = get_arch_counter();// Get the current value of the architecture-specific counter + t2 = t1 + us * 24; // Calculate the target end time based on the counter frequency (24 MHz) + do { + t1 = get_arch_counter();// Continuously update the current time until it reaches the target end time + } while (t2 >= t1); +} + +// Wrapper function for udelay with a different name +void __usdelay(uint32_t loop) { + udelay(loop);// Call the udelay function to introduce a microsecond delay +} + +uint32_t time_ms(void) { + return get_arch_counter() / 24000; +} diff --git a/src/cli/commands.c b/src/cli/commands.c index 1e9e6931..2d7019c6 100644 --- a/src/cli/commands.c +++ b/src/cli/commands.c @@ -76,7 +76,7 @@ static int cmd_get_sid(int argc, const char **argv) { } static int cmd_get_efuse(int argc, const char **argv) { - dump_efuse(); + syter_efuse_dump(); return 0; } diff --git a/src/drivers/sun50iw9/CMakeLists.txt b/src/drivers/sun50iw9/CMakeLists.txt index 3cffc914..11ed7436 100644 --- a/src/drivers/sun50iw9/CMakeLists.txt +++ b/src/drivers/sun50iw9/CMakeLists.txt @@ -1,4 +1,5 @@ add_library(chip_drivers-obj OBJECT sys-clk.c sys-dram.c + sys-sid.c ) \ No newline at end of file diff --git a/src/drivers/sun50iw9/sys-clk.c b/src/drivers/sun50iw9/sys-clk.c index 95930c63..51532344 100644 --- a/src/drivers/sun50iw9/sys-clk.c +++ b/src/drivers/sun50iw9/sys-clk.c @@ -15,54 +15,45 @@ void set_pll_cpux_axi(void) { uint32_t reg_val; - /* select CPUX clock src: OSC24M,AXI divide ratio is 2, system apb clk ratio is 4 */ + /* select CPUX clock src: OSC24M, AXI divide ratio is 2, system apb clk ratio is 4 */ writel((0 << 24) | (3 << 8) | (1 << 0), CCU_CPUX_AXI_CFG_REG); sdelay(1); - /* disable pll*/ - reg_val = readl(CCU_PLL_CPUX_CTRL_REG); - reg_val &= ~(1 << 31); + /* disable pll */ + reg_val = read32(CCU_PLL_CPUX_CTRL_REG) & ~(1 << 31); writel(reg_val, CCU_PLL_CPUX_CTRL_REG); - /* set default val: clk is 1008M ,PLL_OUTPUT= 24M*N/( M*P)*/ - reg_val = readl(CCU_PLL_CPUX_CTRL_REG); - reg_val &= ~((0x3 << 16) | (0xff << 8) | (0x3 << 0)); - reg_val |= (41 << 8); + /* set default val: clk is 1008M, PLL_OUTPUT = 24 M*N / (M*P) */ + reg_val = (read32(CCU_PLL_CPUX_CTRL_REG) & ~((0x3 << 16) | (0xff << 8) | (0x3 << 0))) | (41 << 8); writel(reg_val, CCU_PLL_CPUX_CTRL_REG); /* lock enable */ - reg_val = readl(CCU_PLL_CPUX_CTRL_REG); - reg_val |= (1 << 29); + reg_val = read32(CCU_PLL_CPUX_CTRL_REG) | (1 << 29); writel(reg_val, CCU_PLL_CPUX_CTRL_REG); /* enable pll */ - reg_val = readl(CCU_PLL_CPUX_CTRL_REG); - reg_val |= (1 << 31); + reg_val = read32(CCU_PLL_CPUX_CTRL_REG) | (1 << 31); writel(reg_val, CCU_PLL_CPUX_CTRL_REG); /* wait PLL_CPUX stable */ - while (!(readl(CCU_PLL_CPUX_CTRL_REG) & (0x1 << 28))) + while (!(read32(CCU_PLL_CPUX_CTRL_REG) & (0x1 << 28))) ; sdelay(20); /* lock disable */ - reg_val = readl(CCU_PLL_CPUX_CTRL_REG); - reg_val &= ~(1 << 29); + reg_val = read32(CCU_PLL_CPUX_CTRL_REG) & ~(1 << 29); writel(reg_val, CCU_PLL_CPUX_CTRL_REG); - //set and change cpu clk src to PLL_CPUX, PLL_CPUX:AXI0 = 408M:136M - reg_val = readl(CCU_CPUX_AXI_CFG_REG); - reg_val &= ~(0x03 << 24); - reg_val |= (0x03 << 24); + /* set and change cpu clk src to PLL_CPUX, PLL_CPUX:AXI0 = 408M:136M */ + reg_val = (read32(CCU_CPUX_AXI_CFG_REG) & ~(0x03 << 24)) | (0x03 << 24); writel(reg_val, CCU_CPUX_AXI_CFG_REG); - sdelay(1); } void set_pll_periph0(void) { uint32_t reg_val; - if ((1U << 31) & readl(CCU_PLL_PERI0_CTRL_REG)) { + if ((1U << 31) & read32(CCU_PLL_PERI0_CTRL_REG)) { //fel has enable pll_periph0 printk(LOG_LEVEL_DEBUG, "periph0 has been enabled\n"); return; @@ -72,17 +63,17 @@ void set_pll_periph0(void) { writel(0x63 << 8, CCU_PLL_PERI0_CTRL_REG); /* lock enable */ - reg_val = readl(CCU_PLL_PERI0_CTRL_REG); + reg_val = read32(CCU_PLL_PERI0_CTRL_REG); reg_val |= (1 << 29); writel(reg_val, CCU_PLL_PERI0_CTRL_REG); /* enabe PLL: 600M(1X) 1200M(2x) 2400M(4X) */ - reg_val = readl(CCU_PLL_PERI0_CTRL_REG); + reg_val = read32(CCU_PLL_PERI0_CTRL_REG); reg_val |= (1 << 31); writel(reg_val, CCU_PLL_PERI0_CTRL_REG); /* lock disable */ - reg_val = readl(CCU_PLL_PERI0_CTRL_REG); + reg_val = read32(CCU_PLL_PERI0_CTRL_REG); reg_val &= (~(1 << 29)); writel(reg_val, CCU_PLL_PERI0_CTRL_REG); } @@ -90,26 +81,26 @@ void set_pll_periph0(void) { void set_ahb(void) { /* PLL6:AHB1:APB1 = 600M:200M:100M */ writel((2 << 0) | (0 << 8), CCU_PSI_AHB1_AHB2_CFG_REG); - writel((0x03 << 24) | readl(CCU_PSI_AHB1_AHB2_CFG_REG), CCU_PSI_AHB1_AHB2_CFG_REG); + writel((0x03 << 24) | read32(CCU_PSI_AHB1_AHB2_CFG_REG), CCU_PSI_AHB1_AHB2_CFG_REG); sdelay(1); /*PLL6:AHB3 = 600M:200M*/ writel((2 << 0) | (0 << 8), CCU_AHB3_CFG_GREG); - writel((0x03 << 24) | readl(CCU_AHB3_CFG_GREG), CCU_AHB3_CFG_GREG); + writel((0x03 << 24) | read32(CCU_AHB3_CFG_GREG), CCU_AHB3_CFG_GREG); } void set_apb(void) { /*PLL6:APB1 = 600M:100M */ writel((2 << 0) | (1 << 8), CCU_APB1_CFG_GREG); - writel((0x03 << 24) | readl(CCU_APB1_CFG_GREG), CCU_APB1_CFG_GREG); + writel((0x03 << 24) | read32(CCU_APB1_CFG_GREG), CCU_APB1_CFG_GREG); sdelay(1); } void set_pll_dma(void) { /*dma reset*/ - writel(readl(CCU_DMA_BGR_REG) | (1 << 16), CCU_DMA_BGR_REG); + writel(read32(CCU_DMA_BGR_REG) | (1 << 16), CCU_DMA_BGR_REG); sdelay(20); /*gating clock for dma pass*/ - writel(readl(CCU_DMA_BGR_REG) | (1 << 0), CCU_DMA_BGR_REG); + writel(read32(CCU_DMA_BGR_REG) | (1 << 0), CCU_DMA_BGR_REG); } void set_pll_mbus(void) { @@ -121,19 +112,19 @@ void set_pll_mbus(void) { sdelay(1); /* set MBUS div */ - reg_val = readl(CCU_MBUS_CFG_REG); + reg_val = read32(CCU_MBUS_CFG_REG); reg_val |= (2 << 0); writel(reg_val, CCU_MBUS_CFG_REG); sdelay(1); /* set MBUS clock source to pll6(2x), mbus=pll6/(m+1) = 400M*/ - reg_val = readl(CCU_MBUS_CFG_REG); + reg_val = read32(CCU_MBUS_CFG_REG); reg_val |= (1 << 24); writel(reg_val, CCU_MBUS_CFG_REG); sdelay(1); /* open MBUS clock */ - reg_val = readl(CCU_MBUS_CFG_REG); + reg_val = read32(CCU_MBUS_CFG_REG); reg_val |= (0X01 << 31); writel(reg_val, CCU_MBUS_CFG_REG); sdelay(1); @@ -143,22 +134,22 @@ void set_circuits_analog(void) { /* calibration circuits analog enable */ uint32_t reg_val; - reg_val = readl(VDD_SYS_PWROFF_GATING_REG); + reg_val = read32(VDD_SYS_PWROFF_GATING_REG); reg_val |= (0x01 << VDD_ADDA_OFF_GATING); writel(reg_val, VDD_SYS_PWROFF_GATING_REG); sdelay(1); - reg_val = readl(RES_CAL_CTRL_REG); + reg_val = read32(RES_CAL_CTRL_REG); reg_val |= (0x01 << CAL_ANA_EN); writel(reg_val, RES_CAL_CTRL_REG); sdelay(1); - reg_val = readl(RES_CAL_CTRL_REG); + reg_val = read32(RES_CAL_CTRL_REG); reg_val &= ~(0x01 << CAL_EN); writel(reg_val, RES_CAL_CTRL_REG); sdelay(1); - reg_val = readl(RES_CAL_CTRL_REG); + reg_val = read32(RES_CAL_CTRL_REG); reg_val |= (0x01 << CAL_EN); writel(reg_val, RES_CAL_CTRL_REG); sdelay(1); @@ -182,77 +173,31 @@ void set_platform_config(void) { } void set_modules_clock(void) { - uint32_t reg_val; - uint32_t reg_addr; - - /*enable peri1 clk*/ - reg_addr = CCU_BASE + 0x28; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable gpu clk*/ - reg_addr = CCU_BASE + 0x30; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable video0 clk*/ - reg_addr = CCU_BASE + 0x40; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable video1 clk*/ - reg_addr = CCU_BASE + 0x48; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable video2 clk*/ - reg_addr = CCU_BASE + 0x50; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable ve clk*/ - reg_addr = CCU_BASE + 0x58; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable de clk*/ - reg_addr = CCU_BASE + 0x60; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable csi clk*/ - reg_addr = CCU_BASE + 0xE0; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); - - /*enable audio clk*/ - reg_addr = CCU_BASE + 0x78; - reg_val = readl(reg_addr); - reg_val |= (1 << 31); - writel(reg_val, reg_addr); - sdelay(10); + uint32_t reg_val = 0x0; + const uint32_t modules_reg_addrs[] = { + CCU_BASE + 0x28,// peri1 clk + CCU_BASE + 0x30,// gpu clk + CCU_BASE + 0x40,// video0 clk + CCU_BASE + 0x48,// video1 clk + CCU_BASE + 0x50,// video2 clk + CCU_BASE + 0x58,// ve clk + CCU_BASE + 0x60,// de clk + CCU_BASE + 0xE0,// csi clk + CCU_BASE + 0x78 // audio clk + }; + + for (int i = 0; i < sizeof(modules_reg_addrs) / sizeof(modules_reg_addrs[0]); i++) { + reg_val = read32(modules_reg_addrs[i]); + reg_val |= (1 << 31); + writel(reg_val, modules_reg_addrs[i]); + sdelay(10); + } } int sunxi_clock_init_gpadc(void) { uint32_t reg_val = 0; /* reset */ - reg_val = readl(CCU_GPADC_BGR_REG); + reg_val = read32(CCU_GPADC_BGR_REG); reg_val &= ~(1 << 16); writel(reg_val, CCU_GPADC_BGR_REG); @@ -261,7 +206,7 @@ int sunxi_clock_init_gpadc(void) { reg_val |= (1 << 16); writel(reg_val, CCU_GPADC_BGR_REG); /* enable KEYADC gating */ - reg_val = readl(CCU_GPADC_BGR_REG); + reg_val = read32(CCU_GPADC_BGR_REG); reg_val |= (1 << 0); writel(reg_val, CCU_GPADC_BGR_REG); return 0; @@ -270,7 +215,7 @@ int sunxi_clock_init_gpadc(void) { extern sunxi_serial_t uart_dbg; void sunxi_clk_init(void) { - printk(LOG_LEVEL_DEBUG, "Set SoC CLK Start.\n"); + printk(LOG_LEVEL_DEBUG, "Set SoC AW%04x CLK Start.\n", read32(SUNXI_SID_BASE) & 0xffff); set_platform_config(); set_pll_cpux_axi(); set_pll_periph0(); @@ -285,11 +230,11 @@ void sunxi_clk_reset(void) { uint32_t reg_val; /*set ahb,apb to default, use OSC24M*/ - reg_val = readl(CCU_PSI_AHB1_AHB2_CFG_REG); + reg_val = read32(CCU_PSI_AHB1_AHB2_CFG_REG); reg_val &= (~((0x3 << 24) | (0x3 << 8) | (0x3))); writel(reg_val, CCU_PSI_AHB1_AHB2_CFG_REG); - reg_val = readl(CCU_APB1_CFG_GREG); + reg_val = read32(CCU_APB1_CFG_GREG); reg_val &= (~((0x3 << 24) | (0x3 << 8) | (0x3))); writel(reg_val, CCU_APB1_CFG_GREG); @@ -307,7 +252,7 @@ void sunxi_clk_dump() { const char *clock_str; /* PLL CPU */ - reg32 = read32(CCU_BASE + CCU_CPUX_AXI_CFG_REG); + reg32 = read32(CCU_CPUX_AXI_CFG_REG); cpu_clk_src = (reg32 >> 24) & 0x7; switch (cpu_clk_src) { @@ -328,22 +273,14 @@ void sunxi_clk_dump() { break; case 0x4: - clock_str = "PLL_PERI(1X)"; - break; - - case 0x5: - clock_str = "PLL_PERI(2X)"; - break; - - case 0x6: - clock_str = "PLL_PERI(800M)"; + clock_str = "PLL_PERI0(1X)"; break; default: - clock_str = "ERROR"; + clock_str = "reserved"; } - reg32 = read32(CCU_BASE + CCU_PLL_CPUX_CTRL_REG); + reg32 = read32(CCU_PLL_CPUX_CTRL_REG); p0 = (reg32 >> 16) & 0x03; if (p0 == 0) { p1 = 1; @@ -358,21 +295,21 @@ void sunxi_clk_dump() { printk(LOG_LEVEL_DEBUG, "CLK: CPU PLL=%s FREQ=%" PRIu32 "MHz\r\n", clock_str, ((((reg32 >> 8) & 0xff) + 1) * 24 / p1)); /* PLL PERIx */ - reg32 = read32(CCU_BASE + CCU_PLL_PERI0_CTRL_REG); + reg32 = read32(CCU_PLL_PERI0_CTRL_REG); if (reg32 & (1 << 31)) { plln = ((reg32 >> 8) & 0xff) + 1; pllm = (reg32 & 0x01) + 1; p0 = ((reg32 >> 16) & 0x03) + 1; p1 = ((reg32 >> 20) & 0x03) + 1; - printk(LOG_LEVEL_DEBUG, "CLK: PLL_peri (2X)=%" PRIu32 "MHz, (1X)=%" PRIu32 "MHz, (800M)=%" PRIu32 "MHz\r\n", (24 * plln) / (pllm * p0), + printk(LOG_LEVEL_DEBUG, "CLK: PLL_peri (2X)=%" PRIu32 "MHz, (1X)=%" PRIu32 "MHz, (1200M)=%" PRIu32 "MHz\r\n", (24 * plln) / (pllm * p0), (24 * plln) / (pllm * p0) >> 1, (24 * plln) / (pllm * p1)); } else { printk(LOG_LEVEL_DEBUG, "CLK: PLL_peri disabled\r\n"); } /* PLL DDR */ - reg32 = read32(CCU_BASE + CCU_PLL_DDR0_CTRL_REG); + reg32 = read32(CCU_PLL_DDR0_CTRL_REG); if (reg32 & (1 << 31)) { plln = ((reg32 >> 8) & 0xff) + 1; diff --git a/src/drivers/sun50iw9/sys-dram.c b/src/drivers/sun50iw9/sys-dram.c index e69de29b..dc1e1d97 100644 --- a/src/drivers/sun50iw9/sys-dram.c +++ b/src/drivers/sun50iw9/sys-dram.c @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: Apache-2.0 */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#define INIT_DRAM_BIN_BASE 0x48000 + +extern uint8_t __ddr_bin_start[]; +extern uint8_t __ddr_bin_end[]; + +uint64_t sunxi_dram_init(void *para) { + uint8_t *src = __ddr_bin_start; + uint8_t *dst = (uint8_t *) INIT_DRAM_BIN_BASE; + + printk(LOG_LEVEL_DEBUG, "0x%08x -> 0x%08x size: %08x\n", src, dst, __ddr_bin_end - __ddr_bin_start); + memcpy(dst, src, __ddr_bin_end - __ddr_bin_start); + + __asm__ __volatile__("isb sy" + : + : + : "memory"); + __asm__ __volatile__("dsb sy" + : + : + : "memory"); + __asm__ __volatile__("dmb sy" + : + : + : "memory"); + ((void (*)(void))((void *) INIT_DRAM_BIN_BASE))(); +} \ No newline at end of file diff --git a/tools/Makefile b/tools/Makefile index 7462b7b6..a38fd7a3 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,15 +1,16 @@ BUILD_DIR=$(CURDIR)/build -MKSUNXI = mksunxi +MKSUNXI = mksunxi +BINTOARR = bin2array -CSRC = mksunxi.c -CXXSRC = +MKSUNXI_CSRC = mksunxi.c +MKSUNXI_COBJS = $(addprefix $(BUILD_DIR)/,$(MKSUNXI_CSRC:.c=.o)) -COBJS = $(addprefix $(BUILD_DIR)/,$(CSRC:.c=.o)) -CXXOBJS = $(addprefix $(BUILD_DIR)/,$(CXXSRC:.cpp=.opp)) +BINTOARR_CSRC = bin2array.c +BINTOARR_COBJS = $(addprefix $(BUILD_DIR)/,$(BINTOARR_CSRC:.c=.o)) -INCLUDES = -I includes -I ../lib +INCLUDES = -I includes CFLAGS = -O2 -std=gnu99 $(INCLUDES) CXXFLAGS = -O2 -std=gnu++11 $(INCLUDES) @@ -17,7 +18,7 @@ CC ?= gcc CXX ?= g++ all: tools -tools: $(BUILD_DIR) $(MKSUNXI) +tools: $(BUILD_DIR) $(MKSUNXI) $(BINTOARR) $(BUILD_DIR): mkdir -p $(BUILD_DIR) @@ -25,6 +26,7 @@ $(BUILD_DIR): clean: rm -rf build rm -f $(MKSUNXI) + rm -f $(BINTOARR) $(BUILD_DIR)/%.o : %.c echo " CC $<" @@ -34,5 +36,8 @@ $(BUILD_DIR)/%.opp : %.cpp echo " CXX $<" $(CXX) $(CXXFLAGS) -c $< -o $@ -$(MKSUNXI): $(COBJS) +$(MKSUNXI): $(MKSUNXI_COBJS) $(CC) $(CFLAGS) $(BUILD_DIR)/mksunxi.o -o $(MKSUNXI) + +$(BINTOARR): $(BINTOARR_COBJS) + $(CC) $(CFLAGS) $(BUILD_DIR)/bin2array.o -o $(BINTOARR) \ No newline at end of file diff --git a/tools/bin2array.c b/tools/bin2array.c new file mode 100644 index 00000000..ee96e645 --- /dev/null +++ b/tools/bin2array.c @@ -0,0 +1,79 @@ +#include +#include +#include + +#define BYTES_PER_LINE 16 + +int main(int argc, char *argv[]) { + if (argc != 3) { + printf("Usage: %s input_file output_file\n", argv[0]); + return 1; + } + + FILE *inputFile, *outputFile; + char *inputFileName = argv[1]; // 输入的二进制文件名 + char *outputFileName = argv[2];// 输出的C数组文件名 + int fileSize; + + // 打开输入的二进制文件 + inputFile = fopen(inputFileName, "rb"); + if (inputFile == NULL) { + printf("无法打开输入文件\n"); + return 1; + } + + // 提取输出文件的名称作为C数组的名称 + char *arrayName = strrchr(outputFileName, '/'); + if (arrayName == NULL) { + arrayName = strtok(outputFileName, "."); + } else { + arrayName++;// 跳过文件名分隔符 + } + + // 获取文件大小 + fseek(inputFile, 0, SEEK_END); + fileSize = ftell(inputFile); + fseek(inputFile, 0, SEEK_SET); + + // 创建输出的C数组文件 + outputFile = fopen(outputFileName, "w"); + if (outputFile == NULL) { + printf("无法创建输出文件\n"); + fclose(inputFile); + return 1; + } + + // 写入C数组声明到输出文件 + fprintf(outputFile, "const unsigned char __attribute__((section(\".%s\"))) %s[%d] = {\n\t", arrayName, arrayName, fileSize); + + // 逐字节读取二进制文件并写入C数组文件 + for (int i = 0; i < fileSize; i++) { + unsigned char byte; + if (fread(&byte, 1, 1, inputFile) != 1) { + printf("读取文件时发生错误\n"); + fclose(inputFile); + fclose(outputFile); + return 1; + } + fprintf(outputFile, "0x%02X", byte);// 以十六进制格式写入字节值 + if (i < fileSize - 1) { + fprintf(outputFile, ", ");// 写入逗号分隔符 + } + if ((i + 1) % BYTES_PER_LINE == 0) { + fprintf(outputFile, "\n\t");// 每16个字节换行 + } + } + + fprintf(outputFile, "\n};");// 结尾加上分号 + + // 写入C数组声明到输出文件 + fprintf(outputFile, "\n\nunsigned long long %s_length = %d;\n\t", arrayName, fileSize); + + // 关闭文件 + fclose(inputFile); + fclose(outputFile); + + printf("转换完成\n"); + + return 0; +} \ No newline at end of file