From e322613d84bfabfcb1399035dbb3a34673d8cba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Moln=C3=A1r?= Date: Wed, 8 Feb 2006 10:17:03 +0000 Subject: [PATCH] workaround added for a msvc runtime "protection" committer: ml1050 1139393823 +0000 --- src/p_w32pe.cpp | 33 +++- src/p_w32pe.h | 2 + src/stub/l_w32pe.asm | 22 ++- src/stub/l_w32pe.h | 398 ++++++++++++++++++++++--------------------- 4 files changed, 249 insertions(+), 206 deletions(-) diff --git a/src/p_w32pe.cpp b/src/p_w32pe.cpp index e127667c..5aee8051 100644 --- a/src/p_w32pe.cpp +++ b/src/p_w32pe.cpp @@ -2,8 +2,8 @@ This file is part of the UPX executable compressor. - Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996-2004 Laszlo Molnar + Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996-2006 Laszlo Molnar All Rights Reserved. UPX and the UCL library are free software; you can redistribute them @@ -160,6 +160,7 @@ PackW32Pe::PackW32Pe(InputFile *f) : super(f) tlsindex = 0; big_relocs = 0; soloadconf = 0; + use_dep_hack = false; } @@ -547,7 +548,9 @@ void PackW32Pe::processImports(unsigned myimport) // pass 2 unsigned PackW32Pe::processImports() // pass 1 { static const unsigned char kernel32dll[] = "KERNEL32.DLL"; - static const char llgpa[] = "\x0\x0""LoadLibraryA\x0\x0""GetProcAddress\x0\x0"; + static const char llgpa[] = "\x0\x0""LoadLibraryA\x0\x0" + "GetProcAddress\x0\x0" + "VirtualProtect\x0\x0"; static const char exitp[] = "ExitProcess\x0\x0\x0"; unsigned dllnum = 0; @@ -651,7 +654,7 @@ unsigned PackW32Pe::processImports() // pass 1 im = (import_desc*) oimpdlls; LE32 *ordinals = (LE32*) (oimpdlls + (dllnum2 + 1) * sizeof(import_desc)); - LE32 *lookuptable = ordinals + 3 + k32o + (isdll ? 0 : 1); + LE32 *lookuptable = ordinals + 4 + k32o + (isdll ? 0 : 1); upx_byte *dllnames = ((upx_byte*) lookuptable) + (dllnum2 - 1) * 8; upx_byte *importednames = dllnames + (dllnamelen &~ 1); @@ -663,10 +666,11 @@ unsigned PackW32Pe::processImports() // pass 1 strcpy(dllnames,kernel32dll); im->dllname = k32namepos; im->iat = ptr_diff(ordinals,oimpdlls); - *ordinals++ = ptr_diff(importednames,oimpdlls); - *ordinals++ = ptr_diff(importednames,oimpdlls) + 14; + *ordinals++ = ptr_diff(importednames,oimpdlls); // LoadLibraryA + *ordinals++ = ptr_diff(importednames,oimpdlls) + 14; // GetProcAddress + *ordinals++ = ptr_diff(importednames,oimpdlls) + 14 + 16; // VirtualProtect if (!isdll) - *ordinals++ = ptr_diff(importednames,oimpdlls) + sizeof(llgpa) - 3; + *ordinals++ = ptr_diff(importednames,oimpdlls) + sizeof(llgpa) - 3; // ExitProcess dllnames += sizeof(kernel32dll); importednames += sizeof(llgpa) - 2 + (isdll ? 0 : sizeof(exitp) - 1); @@ -1640,6 +1644,8 @@ int PackW32Pe::buildLoader(const Filter *ft) NULL ); } + if (use_dep_hack) + addLoader("PEDEPHAK", NULL); addLoader("PEMAIN20", ih.entry ? "PEDOJUMP" : "PERETURN", "IDENTSTR,UPX1HEAD", @@ -1903,6 +1909,17 @@ void PackW32Pe::pack(OutputFile *fo) unsigned jmp_pos = find_le32(loader,codesize + 4,get_le32("JMPO")); patch_le32(loader,codesize + 4,"JMPO",ih.entry - upxsection - jmp_pos - 4); } + if (use_dep_hack) + { + // this works around a lame "protection" introduced in MSVCRT80 + // rva of the most significant byte of member "flags" in section "UPX0" + const unsigned swri = pe_offset + sizeof(oh) + sizeof(pe_section_t) - 1; + if (swri >= 0x1000) + throwCantPack("swri >= 0x1000! Send a bug report please!"); + patch_le32(loader, codesize, "SWRI", swri); + patch_le32(loader, codesize, "IMGB", 0u - rvamin); + patch_le32(loader, codesize, "VPRO", myimport + get_le32(oimpdlls + 16) + 8); + } if (big_relocs & 6) patch_le32(loader,codesize,"DELT", 0u - (unsigned) ih.imagebase - rvamin); if (sorelocs && (soimport == 0 || soimport + cimports != crelocs)) @@ -1910,7 +1927,7 @@ void PackW32Pe::pack(OutputFile *fo) if (soimport) { if (!isdll) - patch_le32(loader,codesize,"EXIT",myimport + get_le32(oimpdlls + 16) + 8); + patch_le32(loader,codesize,"EXIT",myimport + get_le32(oimpdlls + 16) + 12); patch_le32(loader,codesize,"GETP",myimport + get_le32(oimpdlls + 16) + 4); if (kernel32ordinal) patch_le32(loader,codesize,"K32O",myimport); diff --git a/src/p_w32pe.h b/src/p_w32pe.h index ddb75484..a647fed8 100644 --- a/src/p_w32pe.h +++ b/src/p_w32pe.h @@ -124,6 +124,8 @@ protected: upx_byte *oloadconf; unsigned soloadconf; + bool use_dep_hack; + struct pe_header_t { // 0x0 diff --git a/src/stub/l_w32pe.asm b/src/stub/l_w32pe.asm index 70ff6ea8..77662933 100644 --- a/src/stub/l_w32pe.asm +++ b/src/stub/l_w32pe.asm @@ -2,8 +2,8 @@ ; ; This file is part of the UPX executable compressor. ; -; Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer -; Copyright (C) 1996-2004 Laszlo Molnar +; Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer +; Copyright (C) 1996-2006 Laszlo Molnar ; All Rights Reserved. ; ; UPX and the UCL library are free software; you can redistribute them @@ -200,6 +200,24 @@ relhi0: %endif; __PERELHIZ__ ; ============= +%ifdef __PEDEPHAK__ + mov ebp, [esi + 'VPRO'] ; VirtualProtect + mov ebx, 0x1000 + lea edi, [esi + 'IMGB'] + push byte 0 + push byte 4 + push ebx + push edi + call ebp + + and byte [edi + 'SWRI'], 0x7f + + push byte 0 + push byte 2 + push ebx + push edi + call ebp +%endif; __PEDEPHAX__ ; __PEMAIN20__ popad diff --git a/src/stub/l_w32pe.h b/src/stub/l_w32pe.h index 7741f0a5..f1226a10 100644 --- a/src/stub/l_w32pe.h +++ b/src/stub/l_w32pe.h @@ -1,9 +1,10 @@ -/* l_w32pe.h -- created from l_w32pe.bin, 4156 (0x103c) bytes +/* l_w32pe.h -- created from l_w32pe.bin, 4222 (0x107e) bytes This file is part of the UPX executable compressor. - Copyright (C) 1996-2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996-2005 Laszlo Molnar + Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996-2006 Laszlo Molnar + Copyright (C) 2000-2006 John F. Reiser All Rights Reserved. UPX and the UCL library are free software; you can redistribute them @@ -26,10 +27,11 @@ */ -#define NRV_LOADER_ADLER32 0x8204d47e -#define NRV_LOADER_CRC32 0x94627963 +#define NRV_LOADER_SIZE 4222 +#define NRV_LOADER_ADLER32 0x8359ea65 +#define NRV_LOADER_CRC32 0xccefc302 -unsigned char nrv_loader[4156] = { +unsigned char nrv_loader[4222] = { 128,124, 36, 8, 1, 15,133, 0, 0, 0, 0, 96,190, 69, 83, 73, /* 0x 0 */ 48,141,190, 69, 68, 73, 48,102,255,135, 73, 67, 79, 78,102,129, /* 0x 10 */ 135, 73, 67, 79, 78, 68, 82,199,135, 84, 76, 83, 65, 84, 76, 83, /* 0x 20 */ @@ -100,194 +102,198 @@ unsigned char nrv_loader[4156] = { 224, 16,102,139, 7,131,199, 2, 9,192,117, 0,139, 7,131,199, /* 0x 430 */ 4,235, 0,135,254,141,143, 68, 69, 76, 84,169,102, 1, 12, 7, /* 0x 440 */ 173, 9,192,117,247,193,233, 16,169,102, 1, 12, 7,173, 9,192, /* 0x 450 */ -117,247, 97, 49,192, 64,194, 12, 0,233, 74, 77, 80, 79, 85, 80, /* 0x 460 */ - 88, 33,161,216,208,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 470 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, /* 0x 480 */ - 80, 69, 73, 83, 68, 76, 76, 49, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 490 */ - 0, 11, 0, 0, 0, 80, 69, 77, 65, 73, 78, 50, 48, 0, 1, 0, /* 0x 4a0 */ - 0, 0, 80, 69, 77, 65, 73, 78, 48, 49, 0, 11, 0, 0, 0, 80, /* 0x 4b0 */ - 69, 73, 67, 79, 78, 83, 49, 0, 23, 0, 0, 0, 80, 69, 73, 67, /* 0x 4c0 */ - 79, 78, 83, 50, 0, 30, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, /* 0x 4d0 */ - 90, 0, 39, 0, 0, 0, 80, 69, 84, 76, 83, 72, 65, 75, 0, 39, /* 0x 4e0 */ - 0, 0, 0, 80, 69, 77, 65, 73, 78, 48, 50, 0, 49, 0, 0, 0, /* 0x 4f0 */ - 78, 50, 66, 83, 77, 65, 49, 48, 0, 53, 0, 0, 0, 0, 0, 0, /* 0x 500 */ - 0, 55, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, /* 0x 510 */ - 0, 0, 78, 50, 66, 70, 65, 83, 49, 48, 0, 56, 0, 0, 0, 0, /* 0x 520 */ - 0, 0, 0, 58, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, /* 0x 530 */ - 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 49, 0, 58, 0, 0, /* 0x 540 */ - 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 64, 0, 0, 0, 78, 50, /* 0x 550 */ - 66, 83, 77, 65, 50, 48, 0, 75, 0, 0, 0, 0, 0, 0, 0, 77, /* 0x 560 */ - 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, /* 0x 570 */ - 78, 50, 66, 70, 65, 83, 50, 48, 0, 80, 0, 0, 0, 0, 0, 0, /* 0x 580 */ - 0, 82, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 49, 0, 0, 0, /* 0x 590 */ - 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 87, 0, 0, 0, 78, /* 0x 5a0 */ - 50, 66, 83, 77, 65, 51, 48, 0,100, 0, 0, 0, 0, 0, 0, 0, /* 0x 5b0 */ -113, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, /* 0x 5c0 */ - 0, 78, 50, 66, 70, 65, 83, 51, 48, 0,113, 0, 0, 0, 0, 0, /* 0x 5d0 */ - 0, 0,117, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, /* 0x 5e0 */ - 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 5f0 */ - 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, /* 0x 600 */ - 0,128, 0, 0, 0, 0, 0, 0, 0,146, 0, 0, 0, 78, 50, 66, /* 0x 610 */ - 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 0, /* 0x 620 */ - 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, /* 0x 630 */ - 50, 66, 83, 77, 65, 52, 48, 0,190, 0, 0, 0, 0, 0, 0, 0, /* 0x 640 */ -203, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, /* 0x 650 */ - 0, 78, 50, 66, 70, 65, 83, 52, 48, 0,203, 0, 0, 0, 0, 0, /* 0x 660 */ - 0, 0,207, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, /* 0x 670 */ - 0, 0, 0, 0, 0, 0, 0,218, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 680 */ - 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 68, 85, 77, 77, 49, /* 0x 690 */ - 0,218, 0, 0, 0, 78, 50, 66, 83, 77, 65, 53, 48, 0,218, 0, /* 0x 6a0 */ - 0, 0, 78, 50, 66, 70, 65, 83, 53, 48, 0,220, 0, 0, 0, 78, /* 0x 6b0 */ - 50, 66, 68, 69, 67, 53, 48, 0,223, 0, 0, 0, 78, 50, 66, 83, /* 0x 6c0 */ - 77, 65, 54, 48, 0,232, 0, 0, 0, 0, 0, 0, 0,246, 0, 0, /* 0x 6d0 */ - 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x 6e0 */ - 66, 70, 65, 83, 54, 48, 0,246, 0, 0, 0, 0, 0, 0, 0,254, /* 0x 6f0 */ - 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, /* 0x 700 */ - 0, 0, 0, 0, 12, 1, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, /* 0x 710 */ - 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 49, 0, 12, 1, /* 0x 720 */ - 0, 0, 0, 0, 0, 0, 34, 1, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 730 */ - 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, /* 0x 740 */ - 34, 1, 0, 0, 78, 82, 86, 50, 66, 69, 78, 68, 0, 34, 1, 0, /* 0x 750 */ - 0, 78, 50, 68, 83, 77, 65, 49, 48, 0, 34, 1, 0, 0, 0, 0, /* 0x 760 */ - 0, 0, 36, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, /* 0x 770 */ - 0, 0, 0, 78, 50, 68, 70, 65, 83, 49, 48, 0, 37, 1, 0, 0, /* 0x 780 */ - 0, 0, 0, 0, 39, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, /* 0x 790 */ - 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 39, 1, /* 0x 7a0 */ - 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 45, 1, 0, 0, 78, /* 0x 7b0 */ - 50, 68, 83, 77, 65, 50, 48, 0, 56, 1, 0, 0, 0, 0, 0, 0, /* 0x 7c0 */ - 58, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, 48, 0, 2, 0, 0, /* 0x 7d0 */ - 0, 78, 50, 68, 70, 65, 83, 50, 48, 0, 61, 1, 0, 0, 0, 0, /* 0x 7e0 */ - 0, 0, 63, 1, 0, 0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 0, /* 0x 7f0 */ - 0, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 68, 1, 0, 0, /* 0x 800 */ - 78, 50, 68, 83, 77, 65, 51, 48, 0, 81, 1, 0, 0, 0, 0, 0, /* 0x 810 */ - 0, 94, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, /* 0x 820 */ - 0, 0, 78, 50, 68, 70, 65, 83, 51, 48, 0, 94, 1, 0, 0, 0, /* 0x 830 */ - 0, 0, 0,100, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 840 */ - 16, 0, 0, 0, 0, 0, 0, 0,109, 1, 0, 0, 78, 50, 68, 68, /* 0x 850 */ - 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 860 */ - 48, 0,109, 1, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 78, 50, /* 0x 870 */ - 68, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, /* 0x 880 */ - 1, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, /* 0x 890 */ - 0, 0, 0, 0,177, 1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, /* 0x 8a0 */ - 0, 0, 0, 0, 0, 78, 50, 68, 83, 77, 65, 52, 48, 0,191, 1, /* 0x 8b0 */ - 0, 0, 0, 0, 0, 0,204, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 8c0 */ - 51, 48, 0, 69, 0, 0, 0, 78, 50, 68, 70, 65, 83, 52, 48, 0, /* 0x 8d0 */ -204, 1, 0, 0, 0, 0, 0, 0,208, 1, 0, 0, 78, 50, 68, 68, /* 0x 8e0 */ - 69, 67, 51, 48, 0, 69, 0, 0, 0, 0, 0, 0, 0,219, 1, 0, /* 0x 8f0 */ - 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, /* 0x 900 */ - 68, 68, 85, 77, 77, 49, 0,219, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x 910 */ - 65, 53, 48, 0,219, 1, 0, 0, 78, 50, 68, 70, 65, 83, 53, 48, /* 0x 920 */ - 0,221, 1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, 0,224, 1, /* 0x 930 */ - 0, 0, 78, 50, 68, 83, 77, 65, 54, 48, 0,233, 1, 0, 0, 0, /* 0x 940 */ - 0, 0, 0,247, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, /* 0x 950 */ - 0, 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 48, 0,247, 1, 0, /* 0x 960 */ - 0, 0, 0, 0, 0,255, 1, 0, 0, 78, 50, 68, 70, 65, 83, 54, /* 0x 970 */ - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 78, 50, /* 0x 980 */ - 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x 990 */ - 83, 54, 49, 0, 13, 2, 0, 0, 0, 0, 0, 0, 35, 2, 0, 0, /* 0x 9a0 */ - 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, /* 0x 9b0 */ - 68, 69, 67, 54, 48, 0, 35, 2, 0, 0, 78, 82, 86, 50, 68, 69, /* 0x 9c0 */ - 78, 68, 0, 35, 2, 0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, /* 0x 9d0 */ - 35, 2, 0, 0, 0, 0, 0, 0, 37, 2, 0, 0, 78, 50, 69, 68, /* 0x 9e0 */ - 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, /* 0x 9f0 */ - 48, 0, 38, 2, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 78, 50, /* 0x a00 */ - 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, /* 0x a10 */ - 83, 49, 49, 0, 40, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, /* 0x a20 */ - 0, 46, 2, 0, 0, 78, 50, 69, 83, 77, 65, 50, 48, 0, 57, 2, /* 0x a30 */ - 0, 0, 0, 0, 0, 0, 59, 2, 0, 0, 78, 50, 69, 83, 77, 65, /* 0x a40 */ - 49, 48, 0, 2, 0, 0, 0, 78, 50, 69, 70, 65, 83, 50, 48, 0, /* 0x a50 */ - 62, 2, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 78, 50, 69, 70, /* 0x a60 */ - 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, 67, 50, /* 0x a70 */ - 48, 0, 69, 2, 0, 0, 78, 50, 69, 83, 77, 65, 51, 48, 0, 82, /* 0x a80 */ - 2, 0, 0, 0, 0, 0, 0, 95, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x a90 */ - 67, 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 70, 65, 83, 51, 48, /* 0x aa0 */ - 0, 95, 2, 0, 0, 0, 0, 0, 0,101, 2, 0, 0, 78, 50, 69, /* 0x ab0 */ - 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 0, 0, 0, 0,110, 2, /* 0x ac0 */ - 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, /* 0x ad0 */ - 50, 69, 68, 69, 67, 51, 48, 0,110, 2, 0, 0, 0, 0, 0, 0, /* 0x ae0 */ -126, 2, 0, 0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 0, 0, 0, /* 0x af0 */ - 0, 0, 0, 0, 0,141, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, /* 0x b00 */ - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 2, 0, 0, 78, 50, /* 0x b10 */ - 69, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 78, 50, 69, 83, 77, /* 0x b20 */ - 65, 52, 48, 0,205, 2, 0, 0, 0, 0, 0, 0,218, 2, 0, 0, /* 0x b30 */ - 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, /* 0x b40 */ - 70, 65, 83, 52, 48, 0,218, 2, 0, 0, 0, 0, 0, 0,222, 2, /* 0x b50 */ - 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 0, /* 0x b60 */ - 0, 0, 0,233, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x b70 */ - 82, 0, 0, 0, 78, 50, 69, 68, 85, 77, 77, 49, 0,233, 2, 0, /* 0x b80 */ - 0, 78, 50, 69, 83, 77, 65, 53, 48, 0,233, 2, 0, 0, 78, 50, /* 0x b90 */ - 69, 70, 65, 83, 53, 48, 0,235, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x ba0 */ - 67, 53, 48, 0,238, 2, 0, 0, 78, 50, 69, 83, 77, 65, 54, 48, /* 0x bb0 */ - 0,247, 2, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 78, 50, 69, /* 0x bc0 */ - 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, /* 0x bd0 */ - 54, 48, 0, 5, 3, 0, 0, 0, 0, 0, 0, 13, 3, 0, 0, 78, /* 0x be0 */ - 50, 69, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bf0 */ - 27, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, /* 0x c00 */ - 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, 27, 3, 0, 0, 0, 0, /* 0x c10 */ - 0, 0, 49, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, /* 0x c20 */ - 0, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 49, 3, 0, 0, /* 0x c30 */ - 78, 82, 86, 50, 69, 69, 78, 68, 0, 49, 3, 0, 0, 80, 69, 77, /* 0x c40 */ - 85, 76, 84, 73, 80, 0, 49, 3, 0, 0, 0, 0, 0, 0, 58, 3, /* 0x c50 */ - 0, 0, 80, 69, 77, 65, 73, 78, 48, 50, 0, 1, 0, 0, 0, 80, /* 0x c60 */ - 69, 77, 65, 73, 78, 49, 48, 0, 58, 3, 0, 0, 80, 69, 67, 65, /* 0x c70 */ - 76, 76, 84, 82, 0, 59, 3, 0, 0, 80, 69, 67, 84, 84, 80, 79, /* 0x c80 */ - 83, 0, 59, 3, 0, 0, 80, 69, 67, 84, 84, 78, 85, 76, 0, 65, /* 0x c90 */ - 3, 0, 0, 80, 69, 68, 85, 77, 77, 89, 48, 0, 67, 3, 0, 0, /* 0x ca0 */ - 67, 65, 76, 76, 84, 82, 48, 48, 0, 67, 3, 0, 0, 67, 84, 67, /* 0x cb0 */ - 76, 69, 86, 69, 49, 0, 81, 3, 0, 0, 0, 0, 0, 0, 86, 3, /* 0x cc0 */ - 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 5, 0, 0, 0, 67, /* 0x cd0 */ - 65, 76, 76, 84, 82, 48, 49, 0, 86, 3, 0, 0, 67, 84, 68, 85, /* 0x ce0 */ - 77, 77, 89, 49, 0, 91, 3, 0, 0, 67, 84, 66, 83, 72, 82, 48, /* 0x cf0 */ - 49, 0, 91, 3, 0, 0, 67, 84, 66, 82, 79, 82, 48, 49, 0, 95, /* 0x d00 */ - 3, 0, 0, 67, 84, 66, 83, 87, 65, 48, 49, 0, 97, 3, 0, 0, /* 0x d10 */ - 67, 65, 76, 76, 84, 82, 48, 50, 0,102, 3, 0, 0, 0, 0, 0, /* 0x d20 */ - 0,118, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 10, 0, /* 0x d30 */ - 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0,118, 3, 0, 0, 67, /* 0x d40 */ - 65, 76, 76, 84, 82, 69, 56, 0,123, 3, 0, 0, 67, 65, 76, 76, /* 0x d50 */ - 84, 82, 69, 57, 0,125, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, /* 0x d60 */ - 49, 0,127, 3, 0, 0, 0, 0, 0, 0,131, 3, 0, 0, 67, 65, /* 0x d70 */ - 76, 76, 84, 82, 49, 51, 0, 7, 0, 0, 0, 67, 84, 67, 76, 69, /* 0x d80 */ - 86, 69, 50, 0,131, 3, 0, 0, 0, 0, 0, 0,136, 3, 0, 0, /* 0x d90 */ - 67, 65, 76, 76, 84, 82, 49, 49, 0, 0, 0, 0, 0, 67, 65, 76, /* 0x da0 */ - 76, 84, 82, 49, 50, 0,136, 3, 0, 0, 67, 84, 68, 85, 77, 77, /* 0x db0 */ - 89, 50, 0,138, 3, 0, 0, 67, 84, 66, 83, 72, 82, 49, 49, 0, /* 0x dc0 */ -138, 3, 0, 0, 67, 84, 66, 82, 79, 82, 49, 49, 0,142, 3, 0, /* 0x dd0 */ - 0, 67, 84, 66, 83, 87, 65, 49, 49, 0,144, 3, 0, 0, 67, 65, /* 0x de0 */ - 76, 76, 84, 82, 49, 51, 0,149, 3, 0, 0, 0, 0, 0, 0,156, /* 0x df0 */ - 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0, 5, 0, 0, 0, /* 0x e00 */ - 67, 84, 84, 72, 69, 69, 78, 68, 0,156, 3, 0, 0, 80, 69, 68, /* 0x e10 */ - 85, 77, 77, 89, 49, 0,156, 3, 0, 0, 80, 69, 73, 77, 80, 79, /* 0x e20 */ - 82, 84, 0,156, 3, 0, 0, 0, 0, 0, 0,168, 3, 0, 0, 80, /* 0x e30 */ - 69, 73, 77, 68, 79, 78, 69, 0, 0, 0, 0, 0, 80, 69, 73, 66, /* 0x e40 */ - 89, 79, 82, 68, 0,200, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, /* 0x e50 */ - 0, 80, 69, 73, 77, 79, 82, 68, 49, 0, 7, 0, 0, 0, 80, 69, /* 0x e60 */ - 75, 51, 50, 79, 82, 68, 0,202, 3, 0, 0, 0, 0, 0, 0,218, /* 0x e70 */ - 3, 0, 0, 80, 69, 73, 77, 80, 79, 82, 50, 0, 15, 0, 0, 0, /* 0x e80 */ - 80, 69, 73, 77, 79, 82, 68, 49, 0,218, 3, 0, 0, 80, 69, 73, /* 0x e90 */ - 77, 80, 79, 82, 50, 0,225, 3, 0, 0, 0, 0, 0, 0,247, 3, /* 0x ea0 */ - 0, 0, 80, 69, 73, 77, 80, 79, 82, 84, 0, 35, 0, 0, 0, 80, /* 0x eb0 */ - 69, 73, 69, 82, 68, 76, 76, 0,247, 3, 0, 0, 80, 69, 73, 69, /* 0x ec0 */ - 82, 69, 88, 69, 0,253, 3, 0, 0, 80, 69, 73, 77, 68, 79, 78, /* 0x ed0 */ - 69, 0, 3, 4, 0, 0, 80, 69, 73, 77, 80, 79, 82, 57, 0, 3, /* 0x ee0 */ - 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 49, 0, 3, 4, 0, 0, /* 0x ef0 */ - 80, 69, 82, 69, 76, 79, 67, 50, 0, 9, 4, 0, 0, 80, 69, 82, /* 0x f00 */ - 69, 76, 79, 67, 51, 0, 12, 4, 0, 0, 82, 69, 76, 79, 67, 51, /* 0x f10 */ - 50, 48, 0, 15, 4, 0, 0, 0, 0, 0, 0, 24, 4, 0, 0, 82, /* 0x f20 */ - 69, 76, 79, 67, 51, 50, 74, 0, 2, 0, 0, 0, 82, 69, 76, 51, /* 0x f30 */ - 50, 66, 73, 71, 0, 56, 4, 0, 0, 0, 0, 0, 0, 60, 4, 0, /* 0x f40 */ - 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 13, 0, 0, 0, 82, 69, /* 0x f50 */ - 76, 79, 67, 51, 50, 74, 0, 65, 4, 0, 0, 0, 0, 0, 0, 67, /* 0x f60 */ - 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 13, 0, 0, 0, /* 0x f70 */ - 82, 69, 76, 51, 50, 69, 78, 68, 0, 67, 4, 0, 0, 80, 69, 82, /* 0x f80 */ - 69, 76, 79, 67, 57, 0, 67, 4, 0, 0, 80, 69, 82, 76, 79, 72, /* 0x f90 */ - 73, 48, 0, 67, 4, 0, 0, 80, 69, 82, 76, 79, 72, 73, 90, 0, /* 0x fa0 */ - 75, 4, 0, 0, 80, 69, 82, 69, 76, 76, 79, 48, 0, 75, 4, 0, /* 0x fb0 */ - 0, 80, 69, 82, 69, 76, 76, 79, 90, 0, 85, 4, 0, 0, 80, 69, /* 0x fc0 */ - 82, 69, 76, 72, 73, 48, 0, 85, 4, 0, 0, 80, 69, 82, 69, 76, /* 0x fd0 */ - 72, 73, 90, 0, 98, 4, 0, 0, 80, 69, 77, 65, 73, 78, 50, 48, /* 0x fe0 */ - 0, 98, 4, 0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 0, 99, 4, /* 0x ff0 */ - 0, 0, 80, 69, 68, 79, 74, 85, 77, 80, 0,105, 4, 0, 0, 80, /* 0x1000 */ - 69, 68, 85, 77, 77, 89, 51, 0,110, 4, 0, 0, 85, 80, 88, 49, /* 0x1010 */ - 72, 69, 65, 68, 0,110, 4, 0, 0, 80, 69, 84, 72, 69, 69, 78, /* 0x1020 */ - 68, 0,142, 4, 0, 0,255,255,255,255,142, 4 /* 0x1030 */ +117,247,139,174, 86, 80, 82, 79,187, 0, 16, 0, 0,141,190, 73, /* 0x 460 */ + 77, 71, 66,106, 0,106, 4, 83, 87,255,213,128,167, 83, 87, 82, /* 0x 470 */ + 73,127,106, 0,106, 2, 83, 87,255,213, 97, 49,192, 64,194, 12, /* 0x 480 */ + 0,233, 74, 77, 80, 79, 85, 80, 88, 33,161,216,208,213, 0, 0, /* 0x 490 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4a0 */ + 0, 0, 0, 0, 0, 45, 0, 0, 80, 69, 73, 83, 68, 76, 76, 49, /* 0x 4b0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 80, 69, 77, /* 0x 4c0 */ + 65, 73, 78, 50, 48, 0, 1, 0, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x 4d0 */ + 48, 49, 0, 11, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, 49, 0, /* 0x 4e0 */ + 23, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, 50, 0, 30, 0, 0, /* 0x 4f0 */ + 0, 80, 69, 73, 67, 79, 78, 83, 90, 0, 39, 0, 0, 0, 80, 69, /* 0x 500 */ + 84, 76, 83, 72, 65, 75, 0, 39, 0, 0, 0, 80, 69, 77, 65, 73, /* 0x 510 */ + 78, 48, 50, 0, 49, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, /* 0x 520 */ + 0, 53, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 78, 50, 66, /* 0x 530 */ + 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 540 */ + 49, 48, 0, 56, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 78, /* 0x 550 */ + 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, /* 0x 560 */ + 65, 83, 49, 49, 0, 58, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 570 */ + 48, 0, 64, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, 48, 0, 75, /* 0x 580 */ + 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 78, 50, 66, 83, 77, /* 0x 590 */ + 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, 83, 50, 48, /* 0x 5a0 */ + 0, 80, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 78, 50, 66, /* 0x 5b0 */ + 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 5c0 */ + 50, 48, 0, 87, 0, 0, 0, 78, 50, 66, 83, 77, 65, 51, 48, 0, /* 0x 5d0 */ +100, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0, 78, 50, 66, 68, /* 0x 5e0 */ + 69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 51, /* 0x 5f0 */ + 48, 0,113, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 78, 50, /* 0x 600 */ + 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, /* 0x 610 */ + 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, /* 0x 620 */ + 78, 50, 66, 68, 69, 67, 51, 48, 0,128, 0, 0, 0, 0, 0, 0, /* 0x 630 */ + 0,146, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 0, 0, /* 0x 640 */ + 0, 0, 0, 0, 0, 0,176, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 650 */ + 53, 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, 52, 48, 0, /* 0x 660 */ +190, 0, 0, 0, 0, 0, 0, 0,203, 0, 0, 0, 78, 50, 66, 68, /* 0x 670 */ + 69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, 65, 83, 52, /* 0x 680 */ + 48, 0,203, 0, 0, 0, 0, 0, 0, 0,207, 0, 0, 0, 78, 50, /* 0x 690 */ + 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0,218, /* 0x 6a0 */ + 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, /* 0x 6b0 */ + 78, 50, 66, 68, 85, 77, 77, 49, 0,218, 0, 0, 0, 78, 50, 66, /* 0x 6c0 */ + 83, 77, 65, 53, 48, 0,218, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 6d0 */ + 53, 48, 0,220, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, /* 0x 6e0 */ +223, 0, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0,232, 0, 0, /* 0x 6f0 */ + 0, 0, 0, 0, 0,246, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 700 */ + 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 48, 0,246, /* 0x 710 */ + 0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 720 */ + 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 0, 0, /* 0x 730 */ + 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, /* 0x 740 */ + 70, 65, 83, 54, 49, 0, 12, 1, 0, 0, 0, 0, 0, 0, 34, 1, /* 0x 750 */ + 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x 760 */ + 50, 66, 68, 69, 67, 54, 48, 0, 34, 1, 0, 0, 78, 82, 86, 50, /* 0x 770 */ + 66, 69, 78, 68, 0, 34, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, /* 0x 780 */ + 48, 0, 34, 1, 0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 78, 50, /* 0x 790 */ + 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x 7a0 */ + 83, 49, 48, 0, 37, 1, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, /* 0x 7b0 */ + 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, /* 0x 7c0 */ + 70, 65, 83, 49, 49, 0, 39, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 7d0 */ + 49, 48, 0, 45, 1, 0, 0, 78, 50, 68, 83, 77, 65, 50, 48, 0, /* 0x 7e0 */ + 56, 1, 0, 0, 0, 0, 0, 0, 58, 1, 0, 0, 78, 50, 68, 83, /* 0x 7f0 */ + 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, 65, 83, 50, /* 0x 800 */ + 48, 0, 61, 1, 0, 0, 0, 0, 0, 0, 63, 1, 0, 0, 78, 50, /* 0x 810 */ + 68, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, /* 0x 820 */ + 67, 50, 48, 0, 68, 1, 0, 0, 78, 50, 68, 83, 77, 65, 51, 48, /* 0x 830 */ + 0, 81, 1, 0, 0, 0, 0, 0, 0, 94, 1, 0, 0, 78, 50, 68, /* 0x 840 */ + 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 70, 65, 83, /* 0x 850 */ + 51, 48, 0, 94, 1, 0, 0, 0, 0, 0, 0,100, 1, 0, 0, 78, /* 0x 860 */ + 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, 0, 0, 0, /* 0x 870 */ +109, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, /* 0x 880 */ + 0, 78, 50, 68, 68, 69, 67, 51, 48, 0,109, 1, 0, 0, 0, 0, /* 0x 890 */ + 0, 0,125, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 0, /* 0x 8a0 */ + 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 78, 50, 68, 68, 69, /* 0x 8b0 */ + 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 1, 0, 0, /* 0x 8c0 */ + 78, 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 68, /* 0x 8d0 */ + 83, 77, 65, 52, 48, 0,191, 1, 0, 0, 0, 0, 0, 0,204, 1, /* 0x 8e0 */ + 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, /* 0x 8f0 */ + 50, 68, 70, 65, 83, 52, 48, 0,204, 1, 0, 0, 0, 0, 0, 0, /* 0x 900 */ +208, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, /* 0x 910 */ + 0, 0, 0, 0, 0,219, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 920 */ + 48, 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, 49, 0,219, /* 0x 930 */ + 1, 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0,219, 1, 0, 0, /* 0x 940 */ + 78, 50, 68, 70, 65, 83, 53, 48, 0,221, 1, 0, 0, 78, 50, 68, /* 0x 950 */ + 68, 69, 67, 53, 48, 0,224, 1, 0, 0, 78, 50, 68, 83, 77, 65, /* 0x 960 */ + 54, 48, 0,233, 1, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 78, /* 0x 970 */ + 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, /* 0x 980 */ + 65, 83, 54, 48, 0,247, 1, 0, 0, 0, 0, 0, 0,255, 1, 0, /* 0x 990 */ + 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, /* 0x 9a0 */ + 0, 0, 13, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, /* 0x 9b0 */ + 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 13, 2, 0, 0, /* 0x 9c0 */ + 0, 0, 0, 0, 35, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, /* 0x 9d0 */ + 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 35, 2, /* 0x 9e0 */ + 0, 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 35, 2, 0, 0, 78, /* 0x 9f0 */ + 50, 69, 83, 77, 65, 49, 48, 0, 35, 2, 0, 0, 0, 0, 0, 0, /* 0x a00 */ + 37, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, /* 0x a10 */ + 0, 78, 50, 69, 70, 65, 83, 49, 48, 0, 38, 2, 0, 0, 0, 0, /* 0x a20 */ + 0, 0, 40, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, /* 0x a30 */ + 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 40, 2, 0, 0, /* 0x a40 */ + 78, 50, 69, 68, 69, 67, 49, 48, 0, 46, 2, 0, 0, 78, 50, 69, /* 0x a50 */ + 83, 77, 65, 50, 48, 0, 57, 2, 0, 0, 0, 0, 0, 0, 59, 2, /* 0x a60 */ + 0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, /* 0x a70 */ + 50, 69, 70, 65, 83, 50, 48, 0, 62, 2, 0, 0, 0, 0, 0, 0, /* 0x a80 */ + 64, 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 0, 0, 0, /* 0x a90 */ + 0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 69, 2, 0, 0, 78, 50, /* 0x aa0 */ + 69, 83, 77, 65, 51, 48, 0, 82, 2, 0, 0, 0, 0, 0, 0, 95, /* 0x ab0 */ + 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, /* 0x ac0 */ + 78, 50, 69, 70, 65, 83, 51, 48, 0, 95, 2, 0, 0, 0, 0, 0, /* 0x ad0 */ + 0,101, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, /* 0x ae0 */ + 0, 0, 0, 0, 0, 0,110, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x af0 */ + 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x b00 */ +110, 2, 0, 0, 0, 0, 0, 0,126, 2, 0, 0, 78, 50, 69, 68, /* 0x b10 */ + 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, /* 0x b20 */ + 0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x b30 */ + 0, 0,159, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 0, /* 0x b40 */ + 0, 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,205, 2, 0, 0, /* 0x b50 */ + 0, 0, 0, 0,218, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x b60 */ + 0, 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, 0,218, 2, /* 0x b70 */ + 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x b80 */ + 51, 48, 0, 82, 0, 0, 0, 0, 0, 0, 0,233, 2, 0, 0, 78, /* 0x b90 */ + 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 68, /* 0x ba0 */ + 85, 77, 77, 49, 0,233, 2, 0, 0, 78, 50, 69, 83, 77, 65, 53, /* 0x bb0 */ + 48, 0,233, 2, 0, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0,235, /* 0x bc0 */ + 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0,238, 2, 0, 0, /* 0x bd0 */ + 78, 50, 69, 83, 77, 65, 54, 48, 0,247, 2, 0, 0, 0, 0, 0, /* 0x be0 */ + 0, 5, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x bf0 */ + 0, 0, 78, 50, 69, 70, 65, 83, 54, 48, 0, 5, 3, 0, 0, 0, /* 0x c00 */ + 0, 0, 0, 13, 3, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, /* 0x c10 */ + 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 0, 0, 78, 50, 69, 68, /* 0x c20 */ + 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, /* 0x c30 */ + 49, 0, 27, 3, 0, 0, 0, 0, 0, 0, 49, 3, 0, 0, 78, 50, /* 0x c40 */ + 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, /* 0x c50 */ + 67, 54, 48, 0, 49, 3, 0, 0, 78, 82, 86, 50, 69, 69, 78, 68, /* 0x c60 */ + 0, 49, 3, 0, 0, 80, 69, 77, 85, 76, 84, 73, 80, 0, 49, 3, /* 0x c70 */ + 0, 0, 0, 0, 0, 0, 58, 3, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x c80 */ + 48, 50, 0, 1, 0, 0, 0, 80, 69, 77, 65, 73, 78, 49, 48, 0, /* 0x c90 */ + 58, 3, 0, 0, 80, 69, 67, 65, 76, 76, 84, 82, 0, 59, 3, 0, /* 0x ca0 */ + 0, 80, 69, 67, 84, 84, 80, 79, 83, 0, 59, 3, 0, 0, 80, 69, /* 0x cb0 */ + 67, 84, 84, 78, 85, 76, 0, 65, 3, 0, 0, 80, 69, 68, 85, 77, /* 0x cc0 */ + 77, 89, 48, 0, 67, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, /* 0x cd0 */ + 0, 67, 3, 0, 0, 67, 84, 67, 76, 69, 86, 69, 49, 0, 81, 3, /* 0x ce0 */ + 0, 0, 0, 0, 0, 0, 86, 3, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x cf0 */ + 48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, /* 0x d00 */ + 86, 3, 0, 0, 67, 84, 68, 85, 77, 77, 89, 49, 0, 91, 3, 0, /* 0x d10 */ + 0, 67, 84, 66, 83, 72, 82, 48, 49, 0, 91, 3, 0, 0, 67, 84, /* 0x d20 */ + 66, 82, 79, 82, 48, 49, 0, 95, 3, 0, 0, 67, 84, 66, 83, 87, /* 0x d30 */ + 65, 48, 49, 0, 97, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, /* 0x d40 */ + 0,102, 3, 0, 0, 0, 0, 0, 0,118, 3, 0, 0, 67, 65, 76, /* 0x d50 */ + 76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x d60 */ + 49, 48, 0,118, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0, /* 0x d70 */ +123, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 57, 0,125, 3, 0, /* 0x d80 */ + 0, 67, 65, 76, 76, 84, 82, 49, 49, 0,127, 3, 0, 0, 0, 0, /* 0x d90 */ + 0, 0,131, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 7, /* 0x da0 */ + 0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, 0,131, 3, 0, 0, /* 0x db0 */ + 0, 0, 0, 0,136, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, /* 0x dc0 */ + 0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 50, 0,136, 3, /* 0x dd0 */ + 0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0,138, 3, 0, 0, 67, /* 0x de0 */ + 84, 66, 83, 72, 82, 49, 49, 0,138, 3, 0, 0, 67, 84, 66, 82, /* 0x df0 */ + 79, 82, 49, 49, 0,142, 3, 0, 0, 67, 84, 66, 83, 87, 65, 49, /* 0x e00 */ + 49, 0,144, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,149, /* 0x e10 */ + 3, 0, 0, 0, 0, 0, 0,156, 3, 0, 0, 67, 65, 76, 76, 84, /* 0x e20 */ + 82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, /* 0x e30 */ + 0,156, 3, 0, 0, 80, 69, 68, 85, 77, 77, 89, 49, 0,156, 3, /* 0x e40 */ + 0, 0, 80, 69, 73, 77, 80, 79, 82, 84, 0,156, 3, 0, 0, 0, /* 0x e50 */ + 0, 0, 0,168, 3, 0, 0, 80, 69, 73, 77, 68, 79, 78, 69, 0, /* 0x e60 */ + 0, 0, 0, 0, 80, 69, 73, 66, 89, 79, 82, 68, 0,200, 3, 0, /* 0x e70 */ + 0, 0, 0, 0, 0,202, 3, 0, 0, 80, 69, 73, 77, 79, 82, 68, /* 0x e80 */ + 49, 0, 7, 0, 0, 0, 80, 69, 75, 51, 50, 79, 82, 68, 0,202, /* 0x e90 */ + 3, 0, 0, 0, 0, 0, 0,218, 3, 0, 0, 80, 69, 73, 77, 80, /* 0x ea0 */ + 79, 82, 50, 0, 15, 0, 0, 0, 80, 69, 73, 77, 79, 82, 68, 49, /* 0x eb0 */ + 0,218, 3, 0, 0, 80, 69, 73, 77, 80, 79, 82, 50, 0,225, 3, /* 0x ec0 */ + 0, 0, 0, 0, 0, 0,247, 3, 0, 0, 80, 69, 73, 77, 80, 79, /* 0x ed0 */ + 82, 84, 0, 35, 0, 0, 0, 80, 69, 73, 69, 82, 68, 76, 76, 0, /* 0x ee0 */ +247, 3, 0, 0, 80, 69, 73, 69, 82, 69, 88, 69, 0,253, 3, 0, /* 0x ef0 */ + 0, 80, 69, 73, 77, 68, 79, 78, 69, 0, 3, 4, 0, 0, 80, 69, /* 0x f00 */ + 73, 77, 80, 79, 82, 57, 0, 3, 4, 0, 0, 80, 69, 82, 69, 76, /* 0x f10 */ + 79, 67, 49, 0, 3, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 50, /* 0x f20 */ + 0, 9, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 51, 0, 12, 4, /* 0x f30 */ + 0, 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 15, 4, 0, 0, 0, /* 0x f40 */ + 0, 0, 0, 24, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, /* 0x f50 */ + 2, 0, 0, 0, 82, 69, 76, 51, 50, 66, 73, 71, 0, 56, 4, 0, /* 0x f60 */ + 0, 0, 0, 0, 0, 60, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, /* 0x f70 */ + 48, 0, 13, 0, 0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, 65, /* 0x f80 */ + 4, 0, 0, 0, 0, 0, 0, 67, 4, 0, 0, 82, 69, 76, 79, 67, /* 0x f90 */ + 51, 50, 48, 0, 13, 0, 0, 0, 82, 69, 76, 51, 50, 69, 78, 68, /* 0x fa0 */ + 0, 67, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 57, 0, 67, 4, /* 0x fb0 */ + 0, 0, 80, 69, 82, 76, 79, 72, 73, 48, 0, 67, 4, 0, 0, 80, /* 0x fc0 */ + 69, 82, 76, 79, 72, 73, 90, 0, 75, 4, 0, 0, 80, 69, 82, 69, /* 0x fd0 */ + 76, 76, 79, 48, 0, 75, 4, 0, 0, 80, 69, 82, 69, 76, 76, 79, /* 0x fe0 */ + 90, 0, 85, 4, 0, 0, 80, 69, 82, 69, 76, 72, 73, 48, 0, 85, /* 0x ff0 */ + 4, 0, 0, 80, 69, 82, 69, 76, 72, 73, 90, 0, 98, 4, 0, 0, /* 0x1000 */ + 80, 69, 68, 69, 80, 72, 65, 75, 0, 98, 4, 0, 0, 80, 69, 68, /* 0x1010 */ + 69, 80, 72, 65, 88, 0,138, 4, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x1020 */ + 50, 48, 0,138, 4, 0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 0, /* 0x1030 */ +139, 4, 0, 0, 80, 69, 68, 79, 74, 85, 77, 80, 0,145, 4, 0, /* 0x1040 */ + 0, 80, 69, 68, 85, 77, 77, 89, 51, 0,150, 4, 0, 0, 85, 80, /* 0x1050 */ + 88, 49, 72, 69, 65, 68, 0,150, 4, 0, 0, 80, 69, 84, 72, 69, /* 0x1060 */ + 69, 78, 68, 0,182, 4, 0, 0,255,255,255,255,182, 4 /* 0x1070 */ };