From f022c9d51042ec1589ac268b24f97110dd4a5d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Moln=C3=A1r?= Date: Sat, 1 Jul 2006 17:29:41 +0200 Subject: [PATCH] dos/djgpp2 using nrv2e converted to ElfLinker --- src/p_djgpp2.cpp | 62 +- src/p_djgpp2.h | 1 + src/stub/Makefile | 8 +- src/stub/i386-dos32.djgpp2.h | 1477 +++++++++++++++--------- src/stub/src/arch/i386/macros2.ash | 617 ++++++++++ src/stub/src/arch/i386/nrv2e_d32_2.ash | 200 ++++ src/stub/src/i386-dos32.djgpp2.asm | 84 +- 7 files changed, 1815 insertions(+), 634 deletions(-) create mode 100644 src/stub/src/arch/i386/macros2.ash create mode 100644 src/stub/src/arch/i386/nrv2e_d32_2.ash diff --git a/src/p_djgpp2.cpp b/src/p_djgpp2.cpp index bcda7a0a..ea9a5ca0 100644 --- a/src/p_djgpp2.cpp +++ b/src/p_djgpp2.cpp @@ -31,6 +31,7 @@ #include "filter.h" #include "packer.h" #include "p_djgpp2.h" +#include "linker.h" static const #include "stub/i386-dos32.djgpp2.h" @@ -82,6 +83,12 @@ unsigned PackDjgpp2::findOverlapOverhead(const upx_bytep buf, } +Linker* PackDjgpp2::newLinker() const +{ + return new ElfLinkerX86; +} + + int PackDjgpp2::buildLoader(const Filter *ft) { // prepare loader @@ -101,7 +108,7 @@ int PackDjgpp2::buildLoader(const Filter *ft) addLoader("DJCALLT2", NULL); addFilter32(ft->id); } - addLoader("DJRETURN,+40DXXXX,UPX1HEAD", NULL); + addLoader("DJRETURN,+40C,UPX1HEAD", NULL); freezeLoader(); return getLoaderSize(); } @@ -228,6 +235,29 @@ void PackDjgpp2::stripDebug() } +static bool defineFilterSymbols(Linker *linker, const Filter *ft) +{ + if (ft->id == 0) + return false; + assert(ft->calls > 0); + + linker->defineSymbol("filter_cto", ft->cto); + linker->defineSymbol("filter_length", + (ft->id & 0xf) % 3 == 0 ? ft->calls : + ft->lastcall - ft->calls * 4); + +#if 0 + if (0x80==(ft->id & 0xF0)) { + int const mru = ph.n_mru ? 1+ ph.n_mru : 0; + if (mru && mru!=256) { + unsigned const is_pwr2 = (0==((mru -1) & mru)); + patch_le32(0x80 + (char *)loader, lsize - 0x80, "NMRU", mru - is_pwr2); + } + } +#endif + return true; +} + /************************************************************************* // **************************************************************************/ @@ -300,6 +330,7 @@ void PackDjgpp2::pack(OutputFile *fo) // patch coff header #2 const unsigned lsize = getLoaderSize(); + assert(lsize % 4 == 0); text->size = lsize; // new size of .text data->size = ph.c_len; // new size of .data @@ -313,21 +344,14 @@ void PackDjgpp2::pack(OutputFile *fo) data->vaddr = bss->vaddr + ((data->scnptr + data->size) & 0x1ff) - data->size + ph.overlap_overhead - 0x200; coff_hdr.f_nscns = 3; - // prepare loader - MemBuffer loader(lsize); - memcpy(loader, getLoader(), lsize); - - // patch loader - patchPackHeader(loader, lsize); - patch_le32(loader, lsize, "ENTR", coff_hdr.a_entry); - patchFilter32(loader, lsize, &ft); - patch_le32(loader, lsize, "BSSL", ph.overlap_overhead / 4); - patchDecompressor(loader, lsize); + linker->defineSymbol("original_entry", coff_hdr.a_entry); + linker->defineSymbol("length_of_bss", ph.overlap_overhead / 4); + //patchDecompressor(loader, lsize); // FIXME assert(bss->vaddr == ((size + 0x1ff) &~ 0x1ff) + (text->vaddr &~ 0x1ff)); - if (ph.method == M_LZMA) - patch_le32(loader, lsize, "ESP0", bss->vaddr + bss->size); - patch_le32(loader, lsize, "OUTP", text->vaddr - hdrsize); - patch_le32(loader, lsize, "INPP", data->vaddr); + linker->defineSymbol("stack_for_lzma", bss->vaddr + bss->size); + linker->defineSymbol("start_of_uncompressed", text->vaddr - hdrsize); + linker->defineSymbol("start_of_compressed", data->vaddr); + defineFilterSymbols(linker, &ft); // we should not overwrite our decompressor during unpacking // the original coff header (which is put just before the @@ -344,6 +368,14 @@ void PackDjgpp2::pack(OutputFile *fo) memcpy(obuf+data->size, "UPX", 3); data->size = ALIGN_UP(data->size, 4); + linker->defineSymbol("DJ2MAIN1", coff_hdr.a_entry); + linker->relocate(); + + // prepare loader + MemBuffer loader(lsize); + memcpy(loader, getLoader(), lsize); + patchPackHeader(loader, lsize); + // write coff header, loader and compressed file fo->write(&coff_hdr, sizeof(coff_hdr)); fo->write(loader, lsize); diff --git a/src/p_djgpp2.h b/src/p_djgpp2.h index 64827499..eeabd011 100644 --- a/src/p_djgpp2.h +++ b/src/p_djgpp2.h @@ -60,6 +60,7 @@ protected: unsigned range = 0, unsigned upper_limit = ~0u) const; virtual int buildLoader(const Filter *ft); + virtual Linker* newLinker() const; long coff_offset; diff --git a/src/stub/Makefile b/src/stub/Makefile index 29c852f7..728e10ff 100644 --- a/src/stub/Makefile +++ b/src/stub/Makefile @@ -313,9 +313,11 @@ i086-dos16.sys.h : $(srcdir)/src/$$T.asm i386-dos32.djgpp2% : tc_list = arch-i386 default i386-dos32.djgpp2.h : $(srcdir)/src/$$T.asm - $(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1 - $(call tc,app-nasm) tmp/$T.tmp1 tmp/$T.tmp2 - $(call tc,nasm) -f bin -l tmp/$T.bin.lst tmp/$T.tmp2 -o tmp/$T.bin + $(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin + $(call tc,m-objcopy) --strip-unneeded tmp/$T.bin + $(call tc,m-objcopy) -R .text -R .data -R .bss tmp/$T.bin + $(call tc,m-objcopy) -R .note -R .comment tmp/$T.bin + $(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin $(call tc,bin2h) --ident=nrv_loader tmp/$T.bin $@ i386-dos32.djgpp2-stubify.h : $(srcdir)/src/$$T.asm diff --git a/src/stub/i386-dos32.djgpp2.h b/src/stub/i386-dos32.djgpp2.h index 0c00e720..c753c8bb 100644 --- a/src/stub/i386-dos32.djgpp2.h +++ b/src/stub/i386-dos32.djgpp2.h @@ -1,4 +1,4 @@ -/* i386-dos32.djgpp2.h -- created from i386-dos32.djgpp2.bin, 8935 (0x22e7) bytes +/* i386-dos32.djgpp2.h -- created from i386-dos32.djgpp2.bin, 14517 (0x38b5) bytes This file is part of the UPX executable compressor. @@ -27,568 +27,917 @@ */ -#define NRV_LOADER_SIZE 8935 -#define NRV_LOADER_ADLER32 0x466bce80 -#define NRV_LOADER_CRC32 0x957c8880 +#define NRV_LOADER_SIZE 14517 +#define NRV_LOADER_ADLER32 0x9d39bf06 +#define NRV_LOADER_CRC32 0x3eeb532d -unsigned char nrv_loader[8935] = { - 30, 7,190, 73, 78, 80, 80,191, 79, 85, 84, 80, 87,131,205,255, /* 0x 0 */ - 49,192,140, 16,137, 96, 4,140,216,142,208,188, 69, 83, 80, 48, /* 0x 10 */ -235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1,219,117, 7,139, /* 0x 20 */ - 30,131,238,252, 17,219,114, 0, 49,192, 64,138, 7,114, 0,184, /* 0x 30 */ - 1, 0, 0, 0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, /* 0x 40 */ -192, 1,219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219, /* 0x 50 */ -115, 0,117, 9,139, 30,131,238,252, 17,219,115, 0, 49,201,131, /* 0x 60 */ -232, 3,114, 13,193,224, 8,138, 6, 70,131,240,255,116, 0,137, /* 0x 70 */ -197, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, 1,219, /* 0x 80 */ -117, 7,139, 30,131,238,252, 17,219, 17,201,117, 0, 65, 1,219, /* 0x 90 */ -117, 7,139, 30,131,238,252, 17,219, 17,201, 1,219,117, 7,139, /* 0x a0 */ - 30,131,238,252, 17,219,115, 0, 1,219,115, 0,117, 9,139, 30, /* 0x b0 */ -131,238,252, 17,219,115, 0, 65, 65,131,193, 2,129,253, 0,243, /* 0x c0 */ -255,255,131,209, 1, 86,141, 52, 47,243,164, 94,233, 0, 0, 0, /* 0x d0 */ - 0,141, 20, 47,131,253,252,138, 4, 15,118, 0,138, 2, 66,136, /* 0x e0 */ - 7, 71, 73,117,247,233, 0, 0, 0, 0,139, 2,131,194, 4,137, /* 0x f0 */ - 7,131,199, 4,131,233, 4,119,241, 1,207,233, 0, 0, 0, 0, /* 0x 100 */ -235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1,219,117, 7,139, /* 0x 110 */ - 30,131,238,252, 17,219,114, 0, 49,192, 64,138, 7,114, 0,184, /* 0x 120 */ - 1, 0, 0, 0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, /* 0x 130 */ -192, 1,219,117, 7,139, 30,131,238,252, 17,219,114, 0, 1,219, /* 0x 140 */ -115, 11,117, 0,139, 30,131,238,252, 17,219,114, 0, 72, 1,219, /* 0x 150 */ -117, 7,139, 30,131,238,252, 17,219, 17,192,235, 0, 49,201,131, /* 0x 160 */ -232, 3,114, 17,193,224, 8,138, 6, 70,131,240,255,116, 0,209, /* 0x 170 */ -248,137,197,235, 11, 1,219,117, 7,139, 30,131,238,252, 17,219, /* 0x 180 */ - 17,201, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201,117, /* 0x 190 */ - 0, 65, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, 1, /* 0x 1a0 */ -219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219,115, 0, /* 0x 1b0 */ -117, 9,139, 30,131,238,252, 17,219,115, 0, 65, 65,131,193, 2, /* 0x 1c0 */ -129,253, 0,251,255,255,131,209, 1, 86,141, 52, 47,243,164, 94, /* 0x 1d0 */ -233, 0, 0, 0, 0,141, 20, 47,131,253,252,138, 4, 15,118, 0, /* 0x 1e0 */ -138, 2, 66,136, 7, 71, 73,117,247,233, 0, 0, 0, 0,139, 2, /* 0x 1f0 */ -131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1,207,233, /* 0x 200 */ - 0, 0, 0, 0,235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1, /* 0x 210 */ -219,117, 7,139, 30,131,238,252, 17,219,114, 0, 49,192, 64,138, /* 0x 220 */ - 7,114, 0,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131,238, /* 0x 230 */ -252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17,219, /* 0x 240 */ -114, 0, 1,219,115, 11,117, 0,139, 30,131,238,252, 17,219,114, /* 0x 250 */ - 0, 72, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,192,235, /* 0x 260 */ - 0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201,235, 0, /* 0x 270 */ - 49,201,131,232, 3,114, 17,193,224, 8,138, 6, 70,131,240,255, /* 0x 280 */ -116, 0,209,248,137,197,235, 11, 1,219,117, 7,139, 30,131,238, /* 0x 290 */ -252, 17,219,114,204, 65, 1,219,117, 7,139, 30,131,238,252, 17, /* 0x 2a0 */ -219,114,190, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, /* 0x 2b0 */ - 1,219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219,115, /* 0x 2c0 */ - 0,117, 9,139, 30,131,238,252, 17,219,115, 0, 65, 65,131,193, /* 0x 2d0 */ - 2,129,253, 0,251,255,255,131,209, 2, 86,141, 52, 47,243,164, /* 0x 2e0 */ - 94,233, 0, 0, 0, 0,141, 20, 47,131,253,252,138, 4, 15,118, /* 0x 2f0 */ - 0,138, 2, 66,136, 7, 71, 73,117,247,233, 0, 0, 0, 0,139, /* 0x 300 */ - 2,131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1,207, /* 0x 310 */ -233, 0, 0, 0, 0,137,229,141,156, 36, 85, 80, 88, 97, 49,192, /* 0x 320 */ - 80, 57,220,117,251, 70, 70, 83,104, 85, 80, 88, 98, 87,131,195, /* 0x 330 */ - 4, 83,104, 85, 80, 88, 99, 86,131,195, 4, 83, 80,199, 3, 85, /* 0x 340 */ - 80, 88,100,137,229,139, 85, 0,172, 74,136,193, 36, 7,192,233, /* 0x 350 */ - 3,187, 0,253,255,255,211,227,141,156, 92,136,241,255,255,131, /* 0x 360 */ -227,224,106, 0, 57,220,117,250, 83,131,195, 4,139, 77, 0,255, /* 0x 370 */ - 49, 87, 83,131,195, 4,136, 67, 2,172, 74,136,193, 36, 15,136, /* 0x 380 */ - 3,192,233, 4,136, 75, 1, 82, 86, 83, 80, 85, 87, 86, 83,131, /* 0x 390 */ -236,124,139,148, 36,144, 0, 0, 0,199, 68, 36,116, 0, 0, 0, /* 0x 3a0 */ - 0,198, 68, 36,115, 0,139,172, 36,156, 0, 0, 0,141, 66, 4, /* 0x 3b0 */ -137, 68, 36,120,184, 1, 0, 0, 0, 15,182, 74, 2,137,195,211, /* 0x 3c0 */ -227,137,217, 73,137, 76, 36,108, 15,182, 74, 1,211,224, 72,137, /* 0x 3d0 */ - 68, 36,104,139,132, 36,168, 0, 0, 0, 15,182, 50,199, 69, 0, /* 0x 3e0 */ - 0, 0, 0, 0,199, 68, 36, 96, 0, 0, 0, 0,199, 0, 0, 0, /* 0x 3f0 */ - 0, 0,184, 0, 3, 0, 0,137,116, 36,100,199, 68, 36, 92, 1, /* 0x 400 */ - 0, 0, 0,199, 68, 36, 88, 1, 0, 0, 0,199, 68, 36, 84, 1, /* 0x 410 */ - 0, 0, 0,199, 68, 36, 80, 1, 0, 0, 0, 15,182, 74, 1, 1, /* 0x 420 */ -241,211,224,141,136, 54, 7, 0, 0, 57, 76, 36,116,115, 14,139, /* 0x 430 */ - 68, 36,120,102,199, 0, 0, 4,131,192, 2,226,246,139,156, 36, /* 0x 440 */ -148, 0, 0, 0, 49,255,199, 68, 36, 72,255,255,255,255,137,218, /* 0x 450 */ - 3,148, 36,152, 0, 0, 0,137, 84, 36, 76, 49,210, 59, 92, 36, /* 0x 460 */ - 76, 15,132,124, 9, 0, 0, 15,182, 3,193,231, 8, 66, 67, 9, /* 0x 470 */ -199,131,250, 4,126,231,139,140, 36,164, 0, 0, 0, 57, 76, 36, /* 0x 480 */ -116, 15,131,100, 9, 0, 0,139,116, 36,116, 35,116, 36,108,139, /* 0x 490 */ - 68, 36, 96,139, 84, 36,120,193,224, 4,137,116, 36, 68, 1,240, /* 0x 4a0 */ -129,124, 36, 72,255,255,255, 0,141, 44, 66,119, 24, 59, 92, 36, /* 0x 4b0 */ - 76, 15,132, 44, 9, 0, 0,193,100, 36, 72, 8, 15,182, 3,193, /* 0x 4c0 */ -231, 8, 67, 9,199,139, 68, 36, 72,102,139, 85, 0,193,232, 11, /* 0x 4d0 */ - 15,183,202, 15,175,193, 57,199, 15,131,221, 1, 0, 0,137, 68, /* 0x 4e0 */ - 36, 72,184, 0, 8, 0, 0, 41,200,138, 76, 36,100,193,248, 5, /* 0x 4f0 */ -190, 1, 0, 0, 0,141, 4, 2, 15,182, 84, 36,115,102,137, 69, /* 0x 500 */ - 0,139, 68, 36,116, 35, 68, 36,104,139,108, 36,120,211,224,185, /* 0x 510 */ - 8, 0, 0, 0, 43, 76, 36,100,211,250, 1,208,105,192, 0, 6, /* 0x 520 */ - 0, 0,131,124, 36, 96, 6,141,132, 5,108, 14, 0, 0,137, 68, /* 0x 530 */ - 36, 20, 15,142,202, 0, 0, 0,139, 68, 36,116, 43, 68, 36, 92, /* 0x 540 */ -139,148, 36,160, 0, 0, 0, 15,182, 4, 2,137, 68, 36, 64,209, /* 0x 550 */ -100, 36, 64,139, 76, 36, 64,141, 20, 54,139,108, 36, 20,129,225, /* 0x 560 */ - 0, 1, 0, 0,129,124, 36, 72,255,255,255, 0,141, 68, 77, 0, /* 0x 570 */ -137, 76, 36, 60,141, 44, 16,119, 24, 59, 92, 36, 76, 15,132, 96, /* 0x 580 */ - 8, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9, /* 0x 590 */ -199,139, 68, 36, 72,102,139,141, 0, 2, 0, 0,193,232, 11, 15, /* 0x 5a0 */ -183,241, 15,175,198, 57,199,115, 35,137, 68, 36, 72,184, 0, 8, /* 0x 5b0 */ - 0, 0, 41,240,137,214,193,248, 5,131,124, 36, 60, 0,141, 4, /* 0x 5c0 */ - 1,102,137,133, 0, 2, 0, 0,116, 34,235, 46, 41, 68, 36, 72, /* 0x 5d0 */ - 41,199,137,200,141,114, 1,102,193,232, 5,102, 41,193,131,124, /* 0x 5e0 */ - 36, 60, 0,102,137,141, 0, 2, 0, 0,116, 14,129,254,255, 0, /* 0x 5f0 */ - 0, 0, 15,142, 87,255,255,255,235,121,129,254,255, 0, 0, 0, /* 0x 600 */ -127,113,141, 20, 54,139,108, 36, 20, 1,213,129,124, 36, 72,255, /* 0x 610 */ -255,255, 0,119, 24, 59, 92, 36, 76, 15,132,196, 7, 0, 0,193, /* 0x 620 */ -100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, /* 0x 630 */ - 72,102,139, 77, 0,193,232, 11, 15,183,241, 15,175,198, 57,199, /* 0x 640 */ -115, 25,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,137,214,193, /* 0x 650 */ -248, 5,141, 4, 1,102,137, 69, 0,235,159, 41, 68, 36, 72, 41, /* 0x 660 */ -199,137,200,141,114, 1,102,193,232, 5,102, 41,193,102,137, 77, /* 0x 670 */ - 0,235,135,139, 84, 36,116,137,240,139,140, 36,160, 0, 0, 0, /* 0x 680 */ -136, 68, 36,115,136, 4, 10, 66,131,124, 36, 96, 3,137, 84, 36, /* 0x 690 */ -116,127, 13,199, 68, 36, 96, 0, 0, 0, 0,233, 27, 7, 0, 0, /* 0x 6a0 */ -131,124, 36, 96, 9,127, 10,131,108, 36, 96, 3,233, 10, 7, 0, /* 0x 6b0 */ - 0,131,108, 36, 96, 6,233, 0, 7, 0, 0,139, 76, 36, 72, 41, /* 0x 6c0 */ -199,139,116, 36, 96, 41,193,137,208,102,193,232, 5,102, 41,194, /* 0x 6d0 */ -129,249,255,255,255, 0,102,137, 85, 0,139,108, 36,120,141,116, /* 0x 6e0 */ -117, 0,137,116, 36, 56,119, 22, 59, 92, 36, 76, 15,132,241, 6, /* 0x 6f0 */ - 0, 0, 15,182, 3,193,231, 8,193,225, 8, 67, 9,199,139,108, /* 0x 700 */ - 36, 56,137,200,193,232, 11,102,139,149,128, 1, 0, 0, 15,183, /* 0x 710 */ -234, 15,175,197, 57,199,115, 82,137,198,184, 0, 8, 0, 0, 41, /* 0x 720 */ -232,139,108, 36, 88,193,248, 5,139, 76, 36, 84,141, 4, 2,139, /* 0x 730 */ - 84, 36, 56,137, 76, 36, 80,139, 76, 36,120,102,137,130,128, 1, /* 0x 740 */ - 0, 0,139, 68, 36, 92,137,108, 36, 84,137, 68, 36, 88, 49,192, /* 0x 750 */ -131,124, 36, 96, 6, 15,159,192,129,193,100, 6, 0, 0,141, 4, /* 0x 760 */ - 64,137, 68, 36, 96,233,116, 2, 0, 0,137,206, 41,199, 41,198, /* 0x 770 */ -137,208,102,193,232, 5,139, 76, 36, 56,102, 41,194,129,254,255, /* 0x 780 */ -255,255, 0,102,137,145,128, 1, 0, 0,119, 22, 59, 92, 36, 76, /* 0x 790 */ - 15,132, 77, 6, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, /* 0x 7a0 */ - 9,199,139,108, 36, 56,137,242,193,234, 11,102,139,141,152, 1, /* 0x 7b0 */ - 0, 0, 15,183,193, 15,175,208, 57,215, 15,131,227, 0, 0, 0, /* 0x 7c0 */ -189, 0, 8, 0, 0,137,214, 41,197,199, 68, 36, 52, 0, 8, 0, /* 0x 7d0 */ - 0,137,232,193,248, 5,141, 4, 1,139, 76, 36, 56,102,137,129, /* 0x 7e0 */ -152, 1, 0, 0,139, 68, 36, 96,139, 76, 36, 68,193,224, 5, 3, /* 0x 7f0 */ - 68, 36,120,129,250,255,255,255, 0,141, 44, 72,119, 22, 59, 92, /* 0x 800 */ - 36, 76, 15,132,219, 5, 0, 0, 15,182, 3,193,231, 8,193,230, /* 0x 810 */ - 8, 67, 9,199,102,139,149,224, 1, 0, 0,137,240,193,232, 11, /* 0x 820 */ - 15,183,202, 15,175,193, 57,199,115, 96, 41, 76, 36, 52,193,124, /* 0x 830 */ - 36, 52, 5,139,116, 36, 52,137, 68, 36, 72,131,124, 36,116, 0, /* 0x 840 */ -141, 4, 50,102,137,133,224, 1, 0, 0, 15,132,147, 5, 0, 0, /* 0x 850 */ - 49,192,131,124, 36, 96, 6,139,172, 36,160, 0, 0, 0,139, 84, /* 0x 860 */ - 36,116, 15,159,192,141, 68, 0, 9,137, 68, 36, 96,139, 68, 36, /* 0x 870 */ -116, 43, 68, 36, 92,138, 68, 5, 0,136, 68, 36,115,136, 4, 42, /* 0x 880 */ - 66,137, 84, 36,116,233, 49, 5, 0, 0, 41,198, 41,199,137,208, /* 0x 890 */ -102,193,232, 5,102, 41,194,102,137,149,224, 1, 0, 0,233, 31, /* 0x 8a0 */ - 1, 0, 0,137,200, 41,214,102,193,232, 5,139,108, 36, 56,102, /* 0x 8b0 */ - 41,193, 41,215,129,254,255,255,255, 0,102,137,141,152, 1, 0, /* 0x 8c0 */ - 0,119, 22, 59, 92, 36, 76, 15,132, 22, 5, 0, 0, 15,182, 3, /* 0x 8d0 */ -193,231, 8,193,230, 8, 67, 9,199,139, 76, 36, 56,137,240,193, /* 0x 8e0 */ -232, 11,102,139,145,176, 1, 0, 0, 15,183,202, 15,175,193, 57, /* 0x 8f0 */ -199,115, 35,137,198,184, 0, 8, 0, 0, 41,200,139,108, 36, 56, /* 0x 900 */ -193,248, 5,141, 4, 2,102,137,133,176, 1, 0, 0,139, 68, 36, /* 0x 910 */ - 88,233,160, 0, 0, 0,137,241, 41,199, 41,193,137,208,102,193, /* 0x 920 */ -232, 5,102, 41,194,139, 68, 36, 56,129,249,255,255,255, 0,102, /* 0x 930 */ -137,144,176, 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132,161, 4, /* 0x 940 */ - 0, 0, 15,182, 3,193,231, 8,193,225, 8, 67, 9,199,139,116, /* 0x 950 */ - 36, 56,137,200,193,232, 11,102,139,150,200, 1, 0, 0, 15,183, /* 0x 960 */ -234, 15,175,197, 57,199,115, 32,137,198,184, 0, 8, 0, 0, 41, /* 0x 970 */ -232,139,108, 36, 56,193,248, 5,141, 4, 2,102,137,133,200, 1, /* 0x 980 */ - 0, 0,139, 68, 36, 84,235, 38,137,206, 41,199, 41,198,137,208, /* 0x 990 */ -102,193,232, 5,102, 41,194,139, 68, 36, 56,102,137,144,200, 1, /* 0x 9a0 */ - 0, 0,139, 84, 36, 84,139, 68, 36, 80,137, 84, 36, 80,139, 76, /* 0x 9b0 */ - 36, 88,137, 76, 36, 84,139,108, 36, 92,137, 68, 36, 92,137,108, /* 0x 9c0 */ - 36, 88, 49,192,131,124, 36, 96, 6,139, 76, 36,120, 15,159,192, /* 0x 9d0 */ -129,193,104, 10, 0, 0,141, 68, 64, 8,137, 68, 36, 96,129,254, /* 0x 9e0 */ -255,255,255, 0,119, 22, 59, 92, 36, 76, 15,132,243, 3, 0, 0, /* 0x 9f0 */ - 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,102,139, 17,137, /* 0x a00 */ -240,193,232, 11, 15,183,234, 15,175,197, 57,199,115, 47,137, 68, /* 0x a10 */ - 36, 72,184, 0, 8, 0, 0, 41,232,193,100, 36, 68, 4,193,248, /* 0x a20 */ - 5,199, 68, 36, 44, 0, 0, 0, 0,141, 4, 2,102,137, 1,139, /* 0x a30 */ - 68, 36, 68,141, 76, 1, 4,137, 76, 36, 16,235,114, 41,198, 41, /* 0x a40 */ -199,137,208,102,193,232, 5,102, 41,194,129,254,255,255,255, 0, /* 0x a50 */ -102,137, 17,119, 22, 59, 92, 36, 76, 15,132,132, 3, 0, 0, 15, /* 0x a60 */ -182, 3,193,231, 8,193,230, 8, 67, 9,199,102,139, 81, 2,137, /* 0x a70 */ -240,193,232, 11, 15,183,234, 15,175,197, 57,199,115, 59,137, 68, /* 0x a80 */ - 36, 72,184, 0, 8, 0, 0, 41,232,193,100, 36, 68, 4,193,248, /* 0x a90 */ - 5,199, 68, 36, 44, 8, 0, 0, 0,141, 4, 2,139, 84, 36, 68, /* 0x aa0 */ -102,137, 65, 2,141,140, 17, 4, 1, 0, 0,137, 76, 36, 16,199, /* 0x ab0 */ - 68, 36, 48, 3, 0, 0, 0,235, 47, 41,198, 41,199,137,208,137, /* 0x ac0 */ -116, 36, 72,102,193,232, 5,199, 68, 36, 44, 16, 0, 0, 0,102, /* 0x ad0 */ - 41,194,199, 68, 36, 48, 8, 0, 0, 0,102,137, 81, 2,129,193, /* 0x ae0 */ - 4, 2, 0, 0,137, 76, 36, 16,139, 76, 36, 48,186, 1, 0, 0, /* 0x af0 */ - 0,137, 76, 36, 40,141, 44, 18,139,116, 36, 16, 1,238,129,124, /* 0x b00 */ - 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132,209, 2, /* 0x b10 */ - 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199, /* 0x b20 */ -139, 68, 36, 72,102,139, 22,193,232, 11, 15,183,202, 15,175,193, /* 0x b30 */ - 57,199,115, 24,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,193, /* 0x b40 */ -248, 5,141, 4, 2,137,234,102,137, 6,235, 21, 41, 68, 36, 72, /* 0x b50 */ - 41,199,137,208,102,193,232, 5,102, 41,194,102,137, 22,141, 85, /* 0x b60 */ - 1,139,116, 36, 40, 78,137,116, 36, 40,117,137,138, 76, 36, 48, /* 0x b70 */ -184, 1, 0, 0, 0,211,224, 41,194, 3, 84, 36, 44,131,124, 36, /* 0x b80 */ - 96, 3,137, 84, 36, 12, 15,143,231, 1, 0, 0,131, 68, 36, 96, /* 0x b90 */ - 7,131,250, 3,137,208,126, 5,184, 3, 0, 0, 0,139,116, 36, /* 0x ba0 */ -120,193,224, 7,199, 68, 36, 36, 6, 0, 0, 0,141,132, 6, 96, /* 0x bb0 */ - 3, 0, 0,137, 68, 36, 8,184, 1, 0, 0, 0,141, 44, 0,139, /* 0x bc0 */ -116, 36, 8, 1,238,129,124, 36, 72,255,255,255, 0,119, 24, 59, /* 0x bd0 */ - 92, 36, 76, 15,132, 10, 2, 0, 0,193,100, 36, 72, 8, 15,182, /* 0x be0 */ - 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 22,193,232, /* 0x bf0 */ - 11, 15,183,202, 15,175,193, 57,199,115, 24,137, 68, 36, 72,184, /* 0x c00 */ - 0, 8, 0, 0, 41,200,193,248, 5,141, 4, 2,102,137, 6,137, /* 0x c10 */ -232,235, 21, 41, 68, 36, 72, 41,199,137,208,102,193,232, 5,102, /* 0x c20 */ - 41,194,141, 69, 1,102,137, 22,139,108, 36, 36, 77,137,108, 36, /* 0x c30 */ - 36,117,137,141, 80,192,131,250, 3,137, 20, 36, 15,142, 39, 1, /* 0x c40 */ - 0, 0,137,208,137,214,209,248,131,230, 1,141, 72,255,131,206, /* 0x c50 */ - 2,131,250, 13,137, 76, 36, 32,127, 28,139,108, 36,120,211,230, /* 0x c60 */ - 1,210,137, 52, 36,141, 68,117, 0, 41,208, 5, 94, 5, 0, 0, /* 0x c70 */ -137, 68, 36, 4,235, 86,141, 80,251,129,124, 36, 72,255,255,255, /* 0x c80 */ - 0,119, 24, 59, 92, 36, 76, 15,132, 86, 1, 0, 0,193,100, 36, /* 0x c90 */ - 72, 8, 15,182, 3,193,231, 8, 67, 9,199,209,108, 36, 72, 1, /* 0x ca0 */ -246, 59,124, 36, 72,114, 7, 43,124, 36, 72,131,206, 1, 74,117, /* 0x cb0 */ -200,139, 68, 36,120,193,230, 4,137, 52, 36, 5, 68, 6, 0, 0, /* 0x cc0 */ -199, 68, 36, 32, 4, 0, 0, 0,137, 68, 36, 4,199, 68, 36, 28, /* 0x cd0 */ - 1, 0, 0, 0,184, 1, 0, 0, 0,139,108, 36, 4, 1,192,137, /* 0x ce0 */ - 68, 36, 24, 1,197,129,124, 36, 72,255,255,255, 0,119, 24, 59, /* 0x cf0 */ - 92, 36, 76, 15,132,234, 0, 0, 0,193,100, 36, 72, 8, 15,182, /* 0x d00 */ - 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 85, 0,193, /* 0x d10 */ -232, 11, 15,183,242, 15,175,198, 57,199,115, 27,137, 68, 36, 72, /* 0x d20 */ -184, 0, 8, 0, 0, 41,240,193,248, 5,141, 4, 2,102,137, 69, /* 0x d30 */ - 0,139, 68, 36, 24,235, 31, 41, 68, 36, 72, 41,199,137,208,102, /* 0x d40 */ -193,232, 5,102, 41,194,139, 68, 36, 24,102,137, 85, 0,139, 84, /* 0x d50 */ - 36, 28, 64, 9, 20, 36,139, 76, 36, 32,209,100, 36, 28, 73,137, /* 0x d60 */ - 76, 36, 32, 15,133,112,255,255,255,139, 52, 36, 70,137,116, 36, /* 0x d70 */ - 92,116, 89,139, 76, 36, 12,139,108, 36,116,131,193, 2, 57,108, /* 0x d80 */ - 36, 92,119, 95,139,132, 36,160, 0, 0, 0,137,234, 43, 68, 36, /* 0x d90 */ - 92, 3,148, 36,160, 0, 0, 0,141, 52, 40,138, 6, 70,136, 68, /* 0x da0 */ - 36,115,136, 2, 66,255, 68, 36,116, 73,116, 15,139,172, 36,164, /* 0x db0 */ - 0, 0, 0, 57,108, 36,116,114,226,235, 17,139,132, 36,164, 0, /* 0x dc0 */ - 0, 0, 57, 68, 36,116, 15,130,187,246,255,255,129,124, 36, 72, /* 0x dd0 */ -255,255,255, 0,119, 21, 59, 92, 36, 76,184, 1, 0, 0, 0,116, /* 0x de0 */ - 41,235, 7,184, 1, 0, 0, 0,235, 32, 67, 43,156, 36,148, 0, /* 0x df0 */ - 0, 0, 49,192,139,148, 36,156, 0, 0, 0,139, 76, 36,116,137, /* 0x e00 */ - 26,139,156, 36,168, 0, 0, 0,137, 11,131,196,124, 91, 94, 95, /* 0x e10 */ - 93, 85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, /* 0x e20 */ - 68, 36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, /* 0x e30 */ - 0, 0, 0,141, 66, 4,137, 68, 36,120,184, 1, 0, 0, 0, 15, /* 0x e40 */ -182, 74, 2,137,195,211,227,137,217, 73,137, 76, 36,108, 15,182, /* 0x e50 */ - 74, 1,211,224, 72,137, 68, 36,104,139,132, 36,168, 0, 0, 0, /* 0x e60 */ - 15,182, 50,199, 69, 0, 0, 0, 0, 0,199, 68, 36, 96, 0, 0, /* 0x e70 */ - 0, 0,199, 0, 0, 0, 0, 0,184, 0, 3, 0, 0,137,116, 36, /* 0x e80 */ -100,199, 68, 36, 92, 1, 0, 0, 0,199, 68, 36, 88, 1, 0, 0, /* 0x e90 */ - 0,199, 68, 36, 84, 1, 0, 0, 0,199, 68, 36, 80, 1, 0, 0, /* 0x ea0 */ - 0, 15,182, 74, 1, 1,241,211,224,141,136, 54, 7, 0, 0, 57, /* 0x eb0 */ - 76, 36,116,115, 14,139, 68, 36,120,102,199, 0, 0, 4,131,192, /* 0x ec0 */ - 2,226,246,139,156, 36,148, 0, 0, 0, 49,255,199, 68, 36, 72, /* 0x ed0 */ -255,255,255,255,137,218, 3,148, 36,152, 0, 0, 0,137, 84, 36, /* 0x ee0 */ - 76, 49,210, 59, 92, 36, 76, 15,132,124, 9, 0, 0, 15,182, 3, /* 0x ef0 */ -193,231, 8, 66, 67, 9,199,131,250, 4,126,231,139,140, 36,164, /* 0x f00 */ - 0, 0, 0, 57, 76, 36,116, 15,131,100, 9, 0, 0,139,116, 36, /* 0x f10 */ -116, 35,116, 36,108,139, 68, 36, 96,139, 84, 36,120,193,224, 4, /* 0x f20 */ -137,116, 36, 68, 1,240,129,124, 36, 72,255,255,255, 0,141, 44, /* 0x f30 */ - 66,119, 24, 59, 92, 36, 76, 15,132, 44, 9, 0, 0,193,100, 36, /* 0x f40 */ - 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102, /* 0x f50 */ -139, 85, 0,193,232, 11, 15,183,202, 15,175,193, 57,199, 15,131, /* 0x f60 */ -221, 1, 0, 0,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,138, /* 0x f70 */ - 76, 36,100,193,248, 5,190, 1, 0, 0, 0,141, 4, 2, 15,182, /* 0x f80 */ - 84, 36,115,102,137, 69, 0,139, 68, 36,116, 35, 68, 36,104,139, /* 0x f90 */ -108, 36,120,211,224,185, 8, 0, 0, 0, 43, 76, 36,100,211,250, /* 0x fa0 */ - 1,208,105,192, 0, 6, 0, 0,131,124, 36, 96, 6,141,132, 5, /* 0x fb0 */ -108, 14, 0, 0,137, 68, 36, 20, 15,142,202, 0, 0, 0,139, 68, /* 0x fc0 */ - 36,116, 43, 68, 36, 92,139,148, 36,160, 0, 0, 0, 15,182, 4, /* 0x fd0 */ - 2,137, 68, 36, 64,209,100, 36, 64,139, 76, 36, 64,141, 20, 54, /* 0x fe0 */ -139,108, 36, 20,129,225, 0, 1, 0, 0,129,124, 36, 72,255,255, /* 0x ff0 */ -255, 0,141, 68, 77, 0,137, 76, 36, 60,141, 44, 16,119, 24, 59, /* 0x1000 */ - 92, 36, 76, 15,132, 96, 8, 0, 0,193,100, 36, 72, 8, 15,182, /* 0x1010 */ - 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139,141, 0, 2, /* 0x1020 */ - 0, 0,193,232, 11, 15,183,241, 15,175,198, 57,199,115, 35,137, /* 0x1030 */ - 68, 36, 72,184, 0, 8, 0, 0, 41,240,137,214,193,248, 5,131, /* 0x1040 */ -124, 36, 60, 0,141, 4, 1,102,137,133, 0, 2, 0, 0,116, 34, /* 0x1050 */ -235, 46, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, /* 0x1060 */ - 5,102, 41,193,131,124, 36, 60, 0,102,137,141, 0, 2, 0, 0, /* 0x1070 */ -116, 14,129,254,255, 0, 0, 0, 15,142, 87,255,255,255,235,121, /* 0x1080 */ -129,254,255, 0, 0, 0,127,113,141, 20, 54,139,108, 36, 20, 1, /* 0x1090 */ -213,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15, /* 0x10a0 */ -132,196, 7, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, /* 0x10b0 */ - 67, 9,199,139, 68, 36, 72,102,139, 77, 0,193,232, 11, 15,183, /* 0x10c0 */ -241, 15,175,198, 57,199,115, 25,137, 68, 36, 72,184, 0, 8, 0, /* 0x10d0 */ - 0, 41,240,137,214,193,248, 5,141, 4, 1,102,137, 69, 0,235, /* 0x10e0 */ -159, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, 5, /* 0x10f0 */ -102, 41,193,102,137, 77, 0,235,135,139, 84, 36,116,137,240,139, /* 0x1100 */ -140, 36,160, 0, 0, 0,136, 68, 36,115,136, 4, 10, 66,131,124, /* 0x1110 */ - 36, 96, 3,137, 84, 36,116,127, 13,199, 68, 36, 96, 0, 0, 0, /* 0x1120 */ - 0,233, 27, 7, 0, 0,131,124, 36, 96, 9,127, 10,131,108, 36, /* 0x1130 */ - 96, 3,233, 10, 7, 0, 0,131,108, 36, 96, 6,233, 0, 7, 0, /* 0x1140 */ - 0,139, 76, 36, 72, 41,199,139,116, 36, 96, 41,193,137,208,102, /* 0x1150 */ -193,232, 5,102, 41,194,129,249,255,255,255, 0,102,137, 85, 0, /* 0x1160 */ -139,108, 36,120,141,116,117, 0,137,116, 36, 56,119, 22, 59, 92, /* 0x1170 */ - 36, 76, 15,132,241, 6, 0, 0, 15,182, 3,193,231, 8,193,225, /* 0x1180 */ - 8, 67, 9,199,139,108, 36, 56,137,200,193,232, 11,102,139,149, /* 0x1190 */ -128, 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 82,137,198, /* 0x11a0 */ -184, 0, 8, 0, 0, 41,232,139,108, 36, 88,193,248, 5,139, 76, /* 0x11b0 */ - 36, 84,141, 4, 2,139, 84, 36, 56,137, 76, 36, 80,139, 76, 36, /* 0x11c0 */ -120,102,137,130,128, 1, 0, 0,139, 68, 36, 92,137,108, 36, 84, /* 0x11d0 */ -137, 68, 36, 88, 49,192,131,124, 36, 96, 6, 15,159,192,129,193, /* 0x11e0 */ -100, 6, 0, 0,141, 4, 64,137, 68, 36, 96,233,116, 2, 0, 0, /* 0x11f0 */ -137,206, 41,199, 41,198,137,208,102,193,232, 5,139, 76, 36, 56, /* 0x1200 */ -102, 41,194,129,254,255,255,255, 0,102,137,145,128, 1, 0, 0, /* 0x1210 */ -119, 22, 59, 92, 36, 76, 15,132, 77, 6, 0, 0, 15,182, 3,193, /* 0x1220 */ -231, 8,193,230, 8, 67, 9,199,139,108, 36, 56,137,242,193,234, /* 0x1230 */ - 11,102,139,141,152, 1, 0, 0, 15,183,193, 15,175,208, 57,215, /* 0x1240 */ - 15,131,227, 0, 0, 0,189, 0, 8, 0, 0,137,214, 41,197,199, /* 0x1250 */ - 68, 36, 52, 0, 8, 0, 0,137,232,193,248, 5,141, 4, 1,139, /* 0x1260 */ - 76, 36, 56,102,137,129,152, 1, 0, 0,139, 68, 36, 96,139, 76, /* 0x1270 */ - 36, 68,193,224, 5, 3, 68, 36,120,129,250,255,255,255, 0,141, /* 0x1280 */ - 44, 72,119, 22, 59, 92, 36, 76, 15,132,219, 5, 0, 0, 15,182, /* 0x1290 */ - 3,193,231, 8,193,230, 8, 67, 9,199,102,139,149,224, 1, 0, /* 0x12a0 */ - 0,137,240,193,232, 11, 15,183,202, 15,175,193, 57,199,115, 96, /* 0x12b0 */ - 41, 76, 36, 52,193,124, 36, 52, 5,139,116, 36, 52,137, 68, 36, /* 0x12c0 */ - 72,131,124, 36,116, 0,141, 4, 50,102,137,133,224, 1, 0, 0, /* 0x12d0 */ - 15,132,147, 5, 0, 0, 49,192,131,124, 36, 96, 6,139,172, 36, /* 0x12e0 */ -160, 0, 0, 0,139, 84, 36,116, 15,159,192,141, 68, 0, 9,137, /* 0x12f0 */ - 68, 36, 96,139, 68, 36,116, 43, 68, 36, 92,138, 68, 5, 0,136, /* 0x1300 */ - 68, 36,115,136, 4, 42, 66,137, 84, 36,116,233, 49, 5, 0, 0, /* 0x1310 */ - 41,198, 41,199,137,208,102,193,232, 5,102, 41,194,102,137,149, /* 0x1320 */ -224, 1, 0, 0,233, 31, 1, 0, 0,137,200, 41,214,102,193,232, /* 0x1330 */ - 5,139,108, 36, 56,102, 41,193, 41,215,129,254,255,255,255, 0, /* 0x1340 */ -102,137,141,152, 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132, 22, /* 0x1350 */ - 5, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,139, /* 0x1360 */ - 76, 36, 56,137,240,193,232, 11,102,139,145,176, 1, 0, 0, 15, /* 0x1370 */ -183,202, 15,175,193, 57,199,115, 35,137,198,184, 0, 8, 0, 0, /* 0x1380 */ - 41,200,139,108, 36, 56,193,248, 5,141, 4, 2,102,137,133,176, /* 0x1390 */ - 1, 0, 0,139, 68, 36, 88,233,160, 0, 0, 0,137,241, 41,199, /* 0x13a0 */ - 41,193,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 56,129, /* 0x13b0 */ -249,255,255,255, 0,102,137,144,176, 1, 0, 0,119, 22, 59, 92, /* 0x13c0 */ - 36, 76, 15,132,161, 4, 0, 0, 15,182, 3,193,231, 8,193,225, /* 0x13d0 */ - 8, 67, 9,199,139,116, 36, 56,137,200,193,232, 11,102,139,150, /* 0x13e0 */ -200, 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 32,137,198, /* 0x13f0 */ -184, 0, 8, 0, 0, 41,232,139,108, 36, 56,193,248, 5,141, 4, /* 0x1400 */ - 2,102,137,133,200, 1, 0, 0,139, 68, 36, 84,235, 38,137,206, /* 0x1410 */ - 41,199, 41,198,137,208,102,193,232, 5,102, 41,194,139, 68, 36, /* 0x1420 */ - 56,102,137,144,200, 1, 0, 0,139, 84, 36, 84,139, 68, 36, 80, /* 0x1430 */ -137, 84, 36, 80,139, 76, 36, 88,137, 76, 36, 84,139,108, 36, 92, /* 0x1440 */ -137, 68, 36, 92,137,108, 36, 88, 49,192,131,124, 36, 96, 6,139, /* 0x1450 */ - 76, 36,120, 15,159,192,129,193,104, 10, 0, 0,141, 68, 64, 8, /* 0x1460 */ -137, 68, 36, 96,129,254,255,255,255, 0,119, 22, 59, 92, 36, 76, /* 0x1470 */ - 15,132,243, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, /* 0x1480 */ - 9,199,102,139, 17,137,240,193,232, 11, 15,183,234, 15,175,197, /* 0x1490 */ - 57,199,115, 47,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193, /* 0x14a0 */ -100, 36, 68, 4,193,248, 5,199, 68, 36, 44, 0, 0, 0, 0,141, /* 0x14b0 */ - 4, 2,102,137, 1,139, 68, 36, 68,141, 76, 1, 4,137, 76, 36, /* 0x14c0 */ - 16,235,114, 41,198, 41,199,137,208,102,193,232, 5,102, 41,194, /* 0x14d0 */ -129,254,255,255,255, 0,102,137, 17,119, 22, 59, 92, 36, 76, 15, /* 0x14e0 */ -132,132, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9, /* 0x14f0 */ -199,102,139, 81, 2,137,240,193,232, 11, 15,183,234, 15,175,197, /* 0x1500 */ - 57,199,115, 59,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193, /* 0x1510 */ -100, 36, 68, 4,193,248, 5,199, 68, 36, 44, 8, 0, 0, 0,141, /* 0x1520 */ - 4, 2,139, 84, 36, 68,102,137, 65, 2,141,140, 17, 4, 1, 0, /* 0x1530 */ - 0,137, 76, 36, 16,199, 68, 36, 48, 3, 0, 0, 0,235, 47, 41, /* 0x1540 */ -198, 41,199,137,208,137,116, 36, 72,102,193,232, 5,199, 68, 36, /* 0x1550 */ - 44, 16, 0, 0, 0,102, 41,194,199, 68, 36, 48, 8, 0, 0, 0, /* 0x1560 */ -102,137, 81, 2,129,193, 4, 2, 0, 0,137, 76, 36, 16,139, 76, /* 0x1570 */ - 36, 48,186, 1, 0, 0, 0,137, 76, 36, 40,141, 44, 18,139,116, /* 0x1580 */ - 36, 16, 1,238,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, /* 0x1590 */ - 36, 76, 15,132,209, 2, 0, 0,193,100, 36, 72, 8, 15,182, 3, /* 0x15a0 */ -193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 22,193,232, 11, /* 0x15b0 */ - 15,183,202, 15,175,193, 57,199,115, 24,137, 68, 36, 72,184, 0, /* 0x15c0 */ - 8, 0, 0, 41,200,193,248, 5,141, 4, 2,137,234,102,137, 6, /* 0x15d0 */ -235, 21, 41, 68, 36, 72, 41,199,137,208,102,193,232, 5,102, 41, /* 0x15e0 */ -194,102,137, 22,141, 85, 1,139,116, 36, 40, 78,137,116, 36, 40, /* 0x15f0 */ -117,137,138, 76, 36, 48,184, 1, 0, 0, 0,211,224, 41,194, 3, /* 0x1600 */ - 84, 36, 44,131,124, 36, 96, 3,137, 84, 36, 12, 15,143,231, 1, /* 0x1610 */ - 0, 0,131, 68, 36, 96, 7,131,250, 3,137,208,126, 5,184, 3, /* 0x1620 */ - 0, 0, 0,139,116, 36,120,193,224, 7,199, 68, 36, 36, 6, 0, /* 0x1630 */ - 0, 0,141,132, 6, 96, 3, 0, 0,137, 68, 36, 8,184, 1, 0, /* 0x1640 */ - 0, 0,141, 44, 0,139,116, 36, 8, 1,238,129,124, 36, 72,255, /* 0x1650 */ -255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 10, 2, 0, 0,193, /* 0x1660 */ -100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, /* 0x1670 */ - 72,102,139, 22,193,232, 11, 15,183,202, 15,175,193, 57,199,115, /* 0x1680 */ - 24,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,193,248, 5,141, /* 0x1690 */ - 4, 2,102,137, 6,137,232,235, 21, 41, 68, 36, 72, 41,199,137, /* 0x16a0 */ -208,102,193,232, 5,102, 41,194,141, 69, 1,102,137, 22,139,108, /* 0x16b0 */ - 36, 36, 77,137,108, 36, 36,117,137,141, 80,192,131,250, 3,137, /* 0x16c0 */ - 20, 36, 15,142, 39, 1, 0, 0,137,208,137,214,209,248,131,230, /* 0x16d0 */ - 1,141, 72,255,131,206, 2,131,250, 13,137, 76, 36, 32,127, 28, /* 0x16e0 */ -139,108, 36,120,211,230, 1,210,137, 52, 36,141, 68,117, 0, 41, /* 0x16f0 */ -208, 5, 94, 5, 0, 0,137, 68, 36, 4,235, 86,141, 80,251,129, /* 0x1700 */ -124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 86, /* 0x1710 */ - 1, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9, /* 0x1720 */ -199,209,108, 36, 72, 1,246, 59,124, 36, 72,114, 7, 43,124, 36, /* 0x1730 */ - 72,131,206, 1, 74,117,200,139, 68, 36,120,193,230, 4,137, 52, /* 0x1740 */ - 36, 5, 68, 6, 0, 0,199, 68, 36, 32, 4, 0, 0, 0,137, 68, /* 0x1750 */ - 36, 4,199, 68, 36, 28, 1, 0, 0, 0,184, 1, 0, 0, 0,139, /* 0x1760 */ -108, 36, 4, 1,192,137, 68, 36, 24, 1,197,129,124, 36, 72,255, /* 0x1770 */ -255,255, 0,119, 24, 59, 92, 36, 76, 15,132,234, 0, 0, 0,193, /* 0x1780 */ -100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, /* 0x1790 */ - 72,102,139, 85, 0,193,232, 11, 15,183,242, 15,175,198, 57,199, /* 0x17a0 */ -115, 27,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,193,248, 5, /* 0x17b0 */ -141, 4, 2,102,137, 69, 0,139, 68, 36, 24,235, 31, 41, 68, 36, /* 0x17c0 */ - 72, 41,199,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 24, /* 0x17d0 */ -102,137, 85, 0,139, 84, 36, 28, 64, 9, 20, 36,139, 76, 36, 32, /* 0x17e0 */ -209,100, 36, 28, 73,137, 76, 36, 32, 15,133,112,255,255,255,139, /* 0x17f0 */ - 52, 36, 70,137,116, 36, 92,116, 89,139, 76, 36, 12,139,108, 36, /* 0x1800 */ -116,131,193, 2, 57,108, 36, 92,119, 95,139,132, 36,160, 0, 0, /* 0x1810 */ - 0,137,234, 43, 68, 36, 92, 3,148, 36,160, 0, 0, 0,141, 52, /* 0x1820 */ - 40,138, 6, 70,136, 68, 36,115,136, 2, 66,255, 68, 36,116, 73, /* 0x1830 */ -116, 15,139,172, 36,164, 0, 0, 0, 57,108, 36,116,114,226,235, /* 0x1840 */ - 17,139,132, 36,164, 0, 0, 0, 57, 68, 36,116, 15,130,187,246, /* 0x1850 */ -255,255,129,124, 36, 72,255,255,255, 0,119, 21, 59, 92, 36, 76, /* 0x1860 */ -184, 1, 0, 0, 0,116, 41,235, 7,184, 1, 0, 0, 0,235, 32, /* 0x1870 */ - 67, 43,156, 36,148, 0, 0, 0, 49,192,139,148, 36,156, 0, 0, /* 0x1880 */ - 0,139, 76, 36,116,137, 26,139,156, 36,168, 0, 0, 0,137, 11, /* 0x1890 */ -131,196,124, 91, 94, 95, 93, 3,115,252, 3,123,248, 49,192,141, /* 0x18a0 */ -140, 36, 0,255,255,255,137,236, 80, 57,204,117,251,137,236, 49, /* 0x18b0 */ -201,142, 16,139, 96, 4,185, 66, 83, 83, 76,243,171, 95,185, 84, /* 0x18c0 */ - 69, 88, 76,138, 7, 71, 44,232, 60, 1,119,247,128, 63, 63,117, /* 0x18d0 */ - 0,139, 7,138, 95, 4,102,193,232, 8,134,196,193,192, 16,134, /* 0x18e0 */ -196, 41,248,128,235,232,137, 7,131,199, 5,136,216,226, 0,185, /* 0x18f0 */ - 84, 69, 88, 76,176,232,176,233,242,174,117, 0,128, 63, 63,117, /* 0x1900 */ - 0,139, 7,102,193,232, 8,134,196,193,192, 16,134,196, 41,248, /* 0x1910 */ -171,235, 0,104, 69, 78, 84, 82,195, 85, 80, 88, 33,161,216,208, /* 0x1920 */ -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1930 */ - 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 68, 74, 50, 77, /* 0x1940 */ - 65, 73, 78, 49, 0, 0, 0, 0, 0, 68, 74, 67, 65, 76, 76, 84, /* 0x1950 */ - 49, 0, 12, 0, 0, 0, 68, 74, 50, 77, 65, 73, 78, 50, 0, 13, /* 0x1960 */ - 0, 0, 0, 76, 90, 77, 65, 95, 73, 78, 73, 84, 95, 83, 84, 65, /* 0x1970 */ - 67, 75, 0, 16, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, 0, /* 0x1980 */ - 32, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 78, 50, 66, 68, /* 0x1990 */ - 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, /* 0x19a0 */ - 48, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 78, 50, /* 0x19b0 */ - 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x19c0 */ - 83, 49, 49, 0, 37, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, /* 0x19d0 */ - 0, 43, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, 48, 0, 54, 0, /* 0x19e0 */ - 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x19f0 */ - 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, 83, 50, 48, 0, /* 0x1a00 */ - 59, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 78, 50, 66, 70, /* 0x1a10 */ - 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, /* 0x1a20 */ - 48, 0, 68, 0, 0, 0, 78, 50, 66, 83, 77, 65, 51, 48, 0, 81, /* 0x1a30 */ - 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x1a40 */ - 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 51, 48, /* 0x1a50 */ - 0, 94, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 78, 50, 66, /* 0x1a60 */ - 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 0, /* 0x1a70 */ - 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 78, /* 0x1a80 */ - 50, 66, 68, 69, 67, 51, 48, 0,109, 0, 0, 0, 0, 0, 0, 0, /* 0x1a90 */ -127, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 0, 0, 0, /* 0x1aa0 */ - 0, 0, 0, 0, 0,157, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, /* 0x1ab0 */ - 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, 52, 48, 0,171, /* 0x1ac0 */ - 0, 0, 0, 0, 0, 0, 0,184, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x1ad0 */ - 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, 65, 83, 52, 48, /* 0x1ae0 */ - 0,184, 0, 0, 0, 0, 0, 0, 0,188, 0, 0, 0, 78, 50, 66, /* 0x1af0 */ - 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0,199, 0, /* 0x1b00 */ - 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 78, /* 0x1b10 */ - 50, 66, 68, 85, 77, 77, 49, 0,199, 0, 0, 0, 78, 50, 66, 83, /* 0x1b20 */ - 77, 65, 53, 48, 0,199, 0, 0, 0, 78, 50, 66, 70, 65, 83, 53, /* 0x1b30 */ - 48, 0,201, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0,204, /* 0x1b40 */ - 0, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0,213, 0, 0, 0, /* 0x1b50 */ - 0, 0, 0, 0,225, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, /* 0x1b60 */ - 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 48, 0,225, 0, /* 0x1b70 */ - 0, 0, 0, 0, 0, 0,236, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x1b80 */ - 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 78, /* 0x1b90 */ - 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, /* 0x1ba0 */ - 65, 83, 54, 49, 0,250, 0, 0, 0, 0, 0, 0, 0, 16, 1, 0, /* 0x1bb0 */ - 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x1bc0 */ - 66, 68, 69, 67, 54, 48, 0, 16, 1, 0, 0, 78, 82, 86, 50, 66, /* 0x1bd0 */ - 69, 78, 68, 0, 16, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, 48, /* 0x1be0 */ - 0, 16, 1, 0, 0, 0, 0, 0, 0, 18, 1, 0, 0, 78, 50, 68, /* 0x1bf0 */ - 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, 83, /* 0x1c00 */ - 49, 48, 0, 19, 1, 0, 0, 0, 0, 0, 0, 21, 1, 0, 0, 78, /* 0x1c10 */ - 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, /* 0x1c20 */ - 65, 83, 49, 49, 0, 21, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, /* 0x1c30 */ - 48, 0, 27, 1, 0, 0, 78, 50, 68, 83, 77, 65, 50, 48, 0, 38, /* 0x1c40 */ - 1, 0, 0, 0, 0, 0, 0, 40, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x1c50 */ - 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, 65, 83, 50, 48, /* 0x1c60 */ - 0, 43, 1, 0, 0, 0, 0, 0, 0, 47, 1, 0, 0, 78, 50, 68, /* 0x1c70 */ - 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x1c80 */ - 50, 48, 0, 52, 1, 0, 0, 78, 50, 68, 83, 77, 65, 51, 48, 0, /* 0x1c90 */ - 65, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 78, 50, 68, 68, /* 0x1ca0 */ - 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 70, 65, 83, 51, /* 0x1cb0 */ - 48, 0, 78, 1, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 78, 50, /* 0x1cc0 */ - 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, 0, 0, 0, 93, /* 0x1cd0 */ - 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, /* 0x1ce0 */ - 78, 50, 68, 68, 69, 67, 51, 48, 0, 93, 1, 0, 0, 0, 0, 0, /* 0x1cf0 */ - 0,109, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 0, 0, /* 0x1d00 */ - 0, 0, 0, 0, 0, 0,127, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x1d10 */ - 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 1, 0, 0, 78, /* 0x1d20 */ - 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 68, 83, /* 0x1d30 */ - 77, 65, 52, 48, 0,175, 1, 0, 0, 0, 0, 0, 0,188, 1, 0, /* 0x1d40 */ - 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, /* 0x1d50 */ - 68, 70, 65, 83, 52, 48, 0,188, 1, 0, 0, 0, 0, 0, 0,192, /* 0x1d60 */ - 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, /* 0x1d70 */ - 0, 0, 0, 0,203, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, /* 0x1d80 */ - 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, 49, 0,203, 1, /* 0x1d90 */ - 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0,203, 1, 0, 0, 78, /* 0x1da0 */ - 50, 68, 70, 65, 83, 53, 48, 0,205, 1, 0, 0, 78, 50, 68, 68, /* 0x1db0 */ - 69, 67, 53, 48, 0,208, 1, 0, 0, 78, 50, 68, 83, 77, 65, 54, /* 0x1dc0 */ - 48, 0,217, 1, 0, 0, 0, 0, 0, 0,229, 1, 0, 0, 78, 50, /* 0x1dd0 */ - 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x1de0 */ - 83, 54, 48, 0,229, 1, 0, 0, 0, 0, 0, 0,240, 1, 0, 0, /* 0x1df0 */ - 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e00 */ - 0,254, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x1e10 */ - 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0,254, 1, 0, 0, 0, /* 0x1e20 */ - 0, 0, 0, 20, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, /* 0x1e30 */ - 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 20, 2, 0, /* 0x1e40 */ - 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 20, 2, 0, 0, 78, 50, /* 0x1e50 */ - 69, 83, 77, 65, 49, 48, 0, 20, 2, 0, 0, 0, 0, 0, 0, 22, /* 0x1e60 */ - 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, /* 0x1e70 */ - 78, 50, 69, 70, 65, 83, 49, 48, 0, 23, 2, 0, 0, 0, 0, 0, /* 0x1e80 */ - 0, 25, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, /* 0x1e90 */ - 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 25, 2, 0, 0, 78, /* 0x1ea0 */ - 50, 69, 68, 69, 67, 49, 48, 0, 31, 2, 0, 0, 78, 50, 69, 83, /* 0x1eb0 */ - 77, 65, 50, 48, 0, 42, 2, 0, 0, 0, 0, 0, 0, 44, 2, 0, /* 0x1ec0 */ - 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, /* 0x1ed0 */ - 69, 70, 65, 83, 50, 48, 0, 47, 2, 0, 0, 0, 0, 0, 0, 51, /* 0x1ee0 */ - 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, /* 0x1ef0 */ - 78, 50, 69, 68, 69, 67, 50, 48, 0, 56, 2, 0, 0, 78, 50, 69, /* 0x1f00 */ - 83, 77, 65, 51, 48, 0, 69, 2, 0, 0, 0, 0, 0, 0, 82, 2, /* 0x1f10 */ - 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, /* 0x1f20 */ - 50, 69, 70, 65, 83, 51, 48, 0, 82, 2, 0, 0, 0, 0, 0, 0, /* 0x1f30 */ - 88, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, /* 0x1f40 */ - 0, 0, 0, 0, 0, 97, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, /* 0x1f50 */ - 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 97, /* 0x1f60 */ - 2, 0, 0, 0, 0, 0, 0,113, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x1f70 */ - 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2, 0, 0, /* 0x1f80 */ - 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f90 */ - 0,146, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 0, 0, /* 0x1fa0 */ - 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,192, 2, 0, 0, 0, /* 0x1fb0 */ - 0, 0, 0,205, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x1fc0 */ - 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, 0,205, 2, 0, /* 0x1fd0 */ - 0, 0, 0, 0, 0,209, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, /* 0x1fe0 */ - 48, 0, 82, 0, 0, 0, 0, 0, 0, 0,220, 2, 0, 0, 78, 50, /* 0x1ff0 */ - 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 68, 85, /* 0x2000 */ - 77, 77, 49, 0,220, 2, 0, 0, 78, 50, 69, 83, 77, 65, 53, 48, /* 0x2010 */ - 0,220, 2, 0, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0,222, 2, /* 0x2020 */ - 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0,225, 2, 0, 0, 78, /* 0x2030 */ - 50, 69, 83, 77, 65, 54, 48, 0,234, 2, 0, 0, 0, 0, 0, 0, /* 0x2040 */ -246, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, /* 0x2050 */ - 0, 78, 50, 69, 70, 65, 83, 54, 48, 0,246, 2, 0, 0, 0, 0, /* 0x2060 */ - 0, 0, 1, 3, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, 0, /* 0x2070 */ - 0, 0, 0, 0, 0, 0, 0, 15, 3, 0, 0, 78, 50, 69, 68, 69, /* 0x2080 */ - 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, /* 0x2090 */ - 0, 15, 3, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0, 78, 50, 69, /* 0x20a0 */ - 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x20b0 */ - 54, 48, 0, 37, 3, 0, 0, 78, 82, 86, 50, 69, 69, 78, 68, 0, /* 0x20c0 */ - 37, 3, 0, 0, 76, 90, 77, 65, 95, 68, 69, 67, 48, 48, 0, 37, /* 0x20d0 */ - 3, 0, 0, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 0, 83, 3, /* 0x20e0 */ - 0, 0, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 0,155, 3, 0, /* 0x20f0 */ - 0, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 0, 33, 14, 0, 0, /* 0x2100 */ - 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 0,167, 24, 0, 0, 76, /* 0x2110 */ - 90, 77, 65, 95, 68, 79, 78, 69, 95, 83, 84, 65, 67, 75, 0,193, /* 0x2120 */ - 24, 0, 0, 68, 74, 50, 66, 83, 83, 48, 48, 0,198, 24, 0, 0, /* 0x2130 */ - 68, 74, 67, 65, 76, 76, 84, 50, 0,205, 24, 0, 0, 67, 65, 76, /* 0x2140 */ - 76, 84, 82, 48, 48, 0,206, 24, 0, 0, 67, 84, 67, 76, 69, 86, /* 0x2150 */ - 69, 49, 0,220, 24, 0, 0, 0, 0, 0, 0,225, 24, 0, 0, 67, /* 0x2160 */ - 65, 76, 76, 84, 82, 48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, /* 0x2170 */ - 84, 82, 48, 49, 0,225, 24, 0, 0, 67, 84, 68, 85, 77, 77, 89, /* 0x2180 */ - 49, 0,230, 24, 0, 0, 67, 84, 66, 83, 72, 82, 48, 49, 0,230, /* 0x2190 */ - 24, 0, 0, 67, 84, 66, 82, 79, 82, 48, 49, 0,234, 24, 0, 0, /* 0x21a0 */ - 67, 84, 66, 83, 87, 65, 48, 49, 0,236, 24, 0, 0, 67, 65, 76, /* 0x21b0 */ - 76, 84, 82, 48, 50, 0,241, 24, 0, 0, 0, 0, 0, 0,255, 24, /* 0x21c0 */ - 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, /* 0x21d0 */ - 65, 76, 76, 84, 82, 49, 48, 0,255, 24, 0, 0, 67, 65, 76, 76, /* 0x21e0 */ - 84, 82, 69, 56, 0, 4, 25, 0, 0, 67, 65, 76, 76, 84, 82, 69, /* 0x21f0 */ - 57, 0, 6, 25, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, 0, 8, /* 0x2200 */ - 25, 0, 0, 0, 0, 0, 0, 12, 25, 0, 0, 67, 65, 76, 76, 84, /* 0x2210 */ - 82, 49, 51, 0, 5, 0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, /* 0x2220 */ - 0, 12, 25, 0, 0, 0, 0, 0, 0, 17, 25, 0, 0, 67, 65, 76, /* 0x2230 */ - 76, 84, 82, 49, 49, 0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x2240 */ - 49, 50, 0, 17, 25, 0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0, /* 0x2250 */ - 19, 25, 0, 0, 67, 84, 66, 83, 72, 82, 49, 49, 0, 19, 25, 0, /* 0x2260 */ - 0, 67, 84, 66, 82, 79, 82, 49, 49, 0, 23, 25, 0, 0, 67, 84, /* 0x2270 */ - 66, 83, 87, 65, 49, 49, 0, 25, 25, 0, 0, 67, 65, 76, 76, 84, /* 0x2280 */ - 82, 49, 51, 0, 30, 25, 0, 0, 0, 0, 0, 0, 35, 25, 0, 0, /* 0x2290 */ - 67, 65, 76, 76, 84, 82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, /* 0x22a0 */ - 72, 69, 69, 78, 68, 0, 35, 25, 0, 0, 68, 74, 82, 69, 84, 85, /* 0x22b0 */ - 82, 78, 0, 35, 25, 0, 0, 85, 80, 88, 49, 72, 69, 65, 68, 0, /* 0x22c0 */ - 41, 25, 0, 0, 68, 74, 84, 72, 69, 69, 78, 68, 0, 73, 25, 0, /* 0x22d0 */ - 0,255,255,255,255, 73, 25 /* 0x22e0 */ +unsigned char nrv_loader[14517] = { +127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ + 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ + 16, 4, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */ + 73, 0, 70, 0, 30, 7,190, 0, 0, 0, 0,191, 0, 0, 0, 0, /* 0x 30 */ + 87,131,205,255, 49,192,140, 16,137, 96, 4,140,216,142,208,188, /* 0x 40 */ + 0, 0, 0, 0,235, 3,164,235, 3,138, 6, 70,136, 7, 71, 1, /* 0x 50 */ +219,117, 7,139, 30,131,238,252, 17,219,114, 1, 49,192, 64,138, /* 0x 60 */ + 7,114,255,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131,238, /* 0x 70 */ +252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17,219, /* 0x 80 */ +114, 30, 1,219,115, 11,117, 30,139, 30,131,238,252, 17,219,114, /* 0x 90 */ + 30, 72, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,192,235, /* 0x a0 */ +255, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201,235,255, /* 0x b0 */ + 49,201,131,232, 3,114, 17,193,224, 8,138, 6, 70,131,240,255, /* 0x c0 */ +116,255,209,248,137,197,235, 11, 1,219,117, 7,139, 30,131,238, /* 0x d0 */ +252, 17,219,114,204, 65, 1,219,117, 7,139, 30,131,238,252, 17, /* 0x e0 */ +219,114,190, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, /* 0x f0 */ + 1,219,117, 7,139, 30,131,238,252, 17,219,115, 81, 1,219,115, /* 0x 100 */ + 81,117, 9,139, 30,131,238,252, 17,219,115, 81, 65, 65,131,193, /* 0x 110 */ + 2,129,253, 0,251,255,255,131,209, 2, 86,141, 52, 47,243,164, /* 0x 120 */ + 94,233,252,255,255,255,141, 20, 47,131,253,252,138, 4, 15,118, /* 0x 130 */ +255,138, 2, 66,136, 7, 71, 73,117,247,233,252,255,255,255,139, /* 0x 140 */ + 2,131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1,207, /* 0x 150 */ +233,252,255,255,255,142, 16,139, 96, 4,185, 0, 0, 0, 0,243, /* 0x 160 */ +171, 95,185, 0, 0, 0, 0,138, 7, 71, 44,232, 60, 1,119,247, /* 0x 170 */ +128, 63, 0,117, 4,139, 7,138, 95, 4,102,193,232, 8,134,196, /* 0x 180 */ +193,192, 16,134,196, 41,248,128,235,232,137, 7,131,199, 5,136, /* 0x 190 */ +216,226, 9,185, 0, 0, 0, 0,176,232,176,233,242,174,117, 4, /* 0x 1a0 */ +128, 63, 0,117,255,139, 7,102,193,232, 8,134,196,193,192, 16, /* 0x 1b0 */ +134,196, 41,248,171,235, 4,233,252,255,255,255, 85, 80, 88, 33, /* 0x 1c0 */ +161,216,208,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 1d0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 46,115,121, /* 0x 1e0 */ +109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104, /* 0x 1f0 */ +115,116,114,116, 97, 98, 0, 46,114,101,108, 68, 74, 50, 77, 65, /* 0x 200 */ + 73, 78, 49, 0, 68, 74, 67, 65, 76, 76, 84, 49, 0, 68, 74, 50, /* 0x 210 */ + 77, 65, 73, 78, 50, 0, 46,114,101,108, 76, 90, 77, 65, 95, 73, /* 0x 220 */ + 78, 73, 84, 95, 83, 84, 65, 67, 75, 0, 46,114,101,108, 78, 50, /* 0x 230 */ + 69, 83, 77, 65, 49, 48, 0, 46,114,101,108, 78, 50, 69, 70, 65, /* 0x 240 */ + 83, 49, 48, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 78, 50, 69, /* 0x 250 */ + 68, 69, 67, 49, 48, 0, 46,114,101,108, 78, 50, 69, 83, 77, 65, /* 0x 260 */ + 50, 48, 0, 46,114,101,108, 78, 50, 69, 70, 65, 83, 50, 48, 0, /* 0x 270 */ + 78, 50, 69, 68, 69, 67, 50, 48, 0, 46,114,101,108, 78, 50, 69, /* 0x 280 */ + 83, 77, 65, 51, 48, 0, 46,114,101,108, 78, 50, 69, 70, 65, 83, /* 0x 290 */ + 51, 48, 0, 46,114,101,108, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x 2a0 */ + 46,114,101,108, 78, 50, 69, 83, 77, 65, 52, 48, 0, 46,114,101, /* 0x 2b0 */ +108, 78, 50, 69, 70, 65, 83, 52, 48, 0, 78, 50, 69, 83, 77, 65, /* 0x 2c0 */ + 53, 48, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0, 78, 50, 69, 68, /* 0x 2d0 */ + 69, 67, 53, 48, 0, 46,114,101,108, 78, 50, 69, 83, 77, 65, 54, /* 0x 2e0 */ + 48, 0, 46,114,101,108, 78, 50, 69, 70, 65, 83, 54, 48, 0, 46, /* 0x 2f0 */ +114,101,108, 78, 50, 69, 70, 65, 83, 54, 49, 0, 78, 50, 69, 68, /* 0x 300 */ + 69, 67, 54, 48, 0, 76, 90, 77, 65, 95, 68, 79, 78, 69, 95, 83, /* 0x 310 */ + 84, 65, 67, 75, 0, 46,114,101,108, 68, 74, 50, 66, 83, 83, 48, /* 0x 320 */ + 48, 0, 68, 74, 67, 65, 76, 76, 84, 50, 0, 46,114,101,108, 67, /* 0x 330 */ + 65, 76, 76, 84, 82, 48, 48, 0, 46,114,101,108, 67, 84, 67, 76, /* 0x 340 */ + 69, 86, 69, 49, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, 67, 84, /* 0x 350 */ + 66, 83, 72, 82, 48, 49, 0, 67, 84, 66, 82, 79, 82, 48, 49, 0, /* 0x 360 */ + 67, 84, 66, 83, 87, 65, 48, 49, 0, 46,114,101,108, 67, 65, 76, /* 0x 370 */ + 76, 84, 82, 48, 50, 0, 46,114,101,108, 67, 65, 76, 76, 84, 82, /* 0x 380 */ + 49, 48, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0, 67, 65, 76, 76, /* 0x 390 */ + 84, 82, 69, 57, 0, 46,114,101,108, 67, 65, 76, 76, 84, 82, 49, /* 0x 3a0 */ + 49, 0, 46,114,101,108, 67, 84, 67, 76, 69, 86, 69, 50, 0, 67, /* 0x 3b0 */ + 65, 76, 76, 84, 82, 49, 50, 0, 67, 84, 66, 83, 72, 82, 49, 49, /* 0x 3c0 */ + 0, 67, 84, 66, 82, 79, 82, 49, 49, 0, 67, 84, 66, 83, 87, 65, /* 0x 3d0 */ + 49, 49, 0, 46,114,101,108, 67, 65, 76, 76, 84, 82, 49, 51, 0, /* 0x 3e0 */ + 67, 84, 84, 72, 69, 69, 78, 68, 0, 46,114,101,108, 68, 74, 82, /* 0x 3f0 */ + 69, 84, 85, 82, 78, 0, 85, 80, 88, 49, 72, 69, 65, 68, 0, 0, /* 0x 400 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 410 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 420 */ + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, /* 0x 430 */ + 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 12, 0, 0, 0, /* 0x 440 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 450 */ + 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 460 */ + 72, 19, 0, 0, 16, 0, 0, 0, 71, 0, 0, 0, 1, 0, 0, 0, /* 0x 470 */ + 4, 0, 0, 0, 8, 0, 0, 0, 40, 0, 0, 0, 1, 0, 0, 0, /* 0x 480 */ + 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, /* 0x 490 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 4a0 */ + 49, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4b0 */ + 65, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4c0 */ + 1, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, /* 0x 4d0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 16, 0, 0, 0, /* 0x 4e0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 4f0 */ + 58, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 500 */ + 88, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 5, 0, 0, 0, /* 0x 510 */ + 4, 0, 0, 0, 8, 0, 0, 0, 82, 0, 0, 0, 1, 0, 0, 0, /* 0x 520 */ + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 3, 0, 0, 0, /* 0x 530 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 540 */ + 78, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 550 */ + 96, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, /* 0x 560 */ + 4, 0, 0, 0, 8, 0, 0, 0, 95, 0, 0, 0, 1, 0, 0, 0, /* 0x 570 */ + 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, /* 0x 580 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 590 */ + 91, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5a0 */ +104, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 9, 0, 0, 0, /* 0x 5b0 */ + 4, 0, 0, 0, 8, 0, 0, 0,104, 0, 0, 0, 1, 0, 0, 0, /* 0x 5c0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 6, 0, 0, 0, /* 0x 5d0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 5e0 */ +113, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5f0 */ + 95, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 600 */ + 1, 0, 0, 0, 0, 0, 0, 0,126, 0, 0, 0, 1, 0, 0, 0, /* 0x 610 */ + 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0, 0, 5, 0, 0, 0, /* 0x 620 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 630 */ +122, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 640 */ +112, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 13, 0, 0, 0, /* 0x 650 */ + 4, 0, 0, 0, 8, 0, 0, 0,139, 0, 0, 0, 1, 0, 0, 0, /* 0x 660 */ + 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 9, 0, 0, 0, /* 0x 670 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 680 */ +135, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 690 */ +120, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 15, 0, 0, 0, /* 0x 6a0 */ + 4, 0, 0, 0, 8, 0, 0, 0,148, 0, 0, 0, 1, 0, 0, 0, /* 0x 6b0 */ + 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 13, 0, 0, 0, /* 0x 6c0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 6d0 */ +161, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 6e0 */ +133, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 6f0 */ + 1, 0, 0, 0, 0, 0, 0, 0,157, 0, 0, 0, 9, 0, 0, 0, /* 0x 700 */ + 0, 0, 0, 0, 0, 0, 0, 0,128, 19, 0, 0, 8, 0, 0, 0, /* 0x 710 */ + 71, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x 720 */ +174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 730 */ +146, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 740 */ + 1, 0, 0, 0, 0, 0, 0, 0,170, 0, 0, 0, 9, 0, 0, 0, /* 0x 750 */ + 0, 0, 0, 0, 0, 0, 0, 0,136, 19, 0, 0, 16, 0, 0, 0, /* 0x 760 */ + 71, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x 770 */ +187, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 780 */ +161, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 790 */ + 1, 0, 0, 0, 0, 0, 0, 0,183, 0, 0, 0, 9, 0, 0, 0, /* 0x 7a0 */ + 0, 0, 0, 0, 0, 0, 0, 0,152, 19, 0, 0, 24, 0, 0, 0, /* 0x 7b0 */ + 71, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x 7c0 */ +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7d0 */ + 0, 1, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7e0 */ + 1, 0, 0, 0, 0, 0, 0, 0,196, 0, 0, 0, 9, 0, 0, 0, /* 0x 7f0 */ + 0, 0, 0, 0, 0, 0, 0, 0,176, 19, 0, 0, 8, 0, 0, 0, /* 0x 800 */ + 71, 0, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x 810 */ +213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 820 */ + 13, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 830 */ + 1, 0, 0, 0, 0, 0, 0, 0,209, 0, 0, 0, 9, 0, 0, 0, /* 0x 840 */ + 0, 0, 0, 0, 0, 0, 0, 0,184, 19, 0, 0, 16, 0, 0, 0, /* 0x 850 */ + 71, 0, 0, 0, 26, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x 860 */ +222, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 870 */ + 28, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 880 */ + 1, 0, 0, 0, 0, 0, 0, 0,231, 0, 0, 0, 1, 0, 0, 0, /* 0x 890 */ + 0, 0, 0, 0, 0, 0, 0, 0, 30, 1, 0, 0, 3, 0, 0, 0, /* 0x 8a0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 8b0 */ +240, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8c0 */ + 33, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8d0 */ + 1, 0, 0, 0, 0, 0, 0, 0,253, 0, 0, 0, 1, 0, 0, 0, /* 0x 8e0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 12, 0, 0, 0, /* 0x 8f0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 900 */ +249, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 910 */ +200, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 31, 0, 0, 0, /* 0x 920 */ + 4, 0, 0, 0, 8, 0, 0, 0, 10, 1, 0, 0, 1, 0, 0, 0, /* 0x 930 */ + 0, 0, 0, 0, 0, 0, 0, 0, 54, 1, 0, 0, 25, 0, 0, 0, /* 0x 940 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 950 */ + 6, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 960 */ +208, 19, 0, 0, 16, 0, 0, 0, 71, 0, 0, 0, 33, 0, 0, 0, /* 0x 970 */ + 4, 0, 0, 0, 8, 0, 0, 0, 23, 1, 0, 0, 1, 0, 0, 0, /* 0x 980 */ + 0, 0, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 22, 0, 0, 0, /* 0x 990 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 9a0 */ + 19, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 9b0 */ +224, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 35, 0, 0, 0, /* 0x 9c0 */ + 4, 0, 0, 0, 8, 0, 0, 0, 32, 1, 0, 0, 1, 0, 0, 0, /* 0x 9d0 */ + 0, 0, 0, 0, 0, 0, 0, 0,101, 1, 0, 0, 0, 0, 0, 0, /* 0x 9e0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 9f0 */ + 41, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a00 */ +101, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a10 */ + 1, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 1, 0, 0, 0, /* 0x a20 */ + 0, 0, 0, 0, 0, 0, 0, 0,106, 1, 0, 0, 7, 0, 0, 0, /* 0x a30 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x a40 */ + 57, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a50 */ +232, 19, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 39, 0, 0, 0, /* 0x a60 */ + 4, 0, 0, 0, 8, 0, 0, 0, 70, 1, 0, 0, 1, 0, 0, 0, /* 0x a70 */ + 0, 0, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, 1, 0, 0, 0, /* 0x a80 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x a90 */ + 83, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x aa0 */ +114, 1, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ab0 */ + 1, 0, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 9, 0, 0, 0, /* 0x ac0 */ + 0, 0, 0, 0, 0, 0, 0, 0,240, 19, 0, 0, 8, 0, 0, 0, /* 0x ad0 */ + 71, 0, 0, 0, 42, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x ae0 */ + 96, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x af0 */ +128, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b00 */ + 1, 0, 0, 0, 0, 0, 0, 0, 92, 1, 0, 0, 9, 0, 0, 0, /* 0x b10 */ + 0, 0, 0, 0, 0, 0, 0, 0,248, 19, 0, 0, 16, 0, 0, 0, /* 0x b20 */ + 71, 0, 0, 0, 44, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x b30 */ +105, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b40 */ +133, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b50 */ + 1, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 1, 0, 0, 0, /* 0x b60 */ + 0, 0, 0, 0, 0, 0, 0, 0,138, 1, 0, 0, 4, 0, 0, 0, /* 0x b70 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x b80 */ +123, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b90 */ +142, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ba0 */ + 1, 0, 0, 0, 0, 0, 0, 0,132, 1, 0, 0, 1, 0, 0, 0, /* 0x bb0 */ + 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 0, 0, 5, 0, 0, 0, /* 0x bc0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x bd0 */ +145, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x be0 */ +149, 1, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bf0 */ + 1, 0, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 9, 0, 0, 0, /* 0x c00 */ + 0, 0, 0, 0, 0, 0, 0, 0, 8, 20, 0, 0, 8, 0, 0, 0, /* 0x c10 */ + 71, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x c20 */ +158, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c30 */ +163, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c40 */ + 1, 0, 0, 0, 0, 0, 0, 0,154, 1, 0, 0, 9, 0, 0, 0, /* 0x c50 */ + 0, 0, 0, 0, 0, 0, 0, 0, 16, 20, 0, 0, 8, 0, 0, 0, /* 0x c60 */ + 71, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x c70 */ +167, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c80 */ +168, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c90 */ + 1, 0, 0, 0, 0, 0, 0, 0,176, 1, 0, 0, 1, 0, 0, 0, /* 0x ca0 */ + 0, 0, 0, 0, 0, 0, 0, 0,170, 1, 0, 0, 2, 0, 0, 0, /* 0x cb0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x cc0 */ +189, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cd0 */ +172, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ce0 */ + 1, 0, 0, 0, 0, 0, 0, 0,185, 1, 0, 0, 9, 0, 0, 0, /* 0x cf0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 24, 20, 0, 0, 8, 0, 0, 0, /* 0x d00 */ + 71, 0, 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x d10 */ +202, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d20 */ +176, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d30 */ + 1, 0, 0, 0, 0, 0, 0, 0,198, 1, 0, 0, 9, 0, 0, 0, /* 0x d40 */ + 0, 0, 0, 0, 0, 0, 0, 0, 32, 20, 0, 0, 16, 0, 0, 0, /* 0x d50 */ + 71, 0, 0, 0, 58, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x d60 */ +211, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d70 */ +181, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d80 */ + 1, 0, 0, 0, 0, 0, 0, 0,220, 1, 0, 0, 1, 0, 0, 0, /* 0x d90 */ + 0, 0, 0, 0, 0, 0, 0, 0,183, 1, 0, 0, 4, 0, 0, 0, /* 0x da0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x db0 */ +229, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dc0 */ +187, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dd0 */ + 1, 0, 0, 0, 0, 0, 0, 0,238, 1, 0, 0, 1, 0, 0, 0, /* 0x de0 */ + 0, 0, 0, 0, 0, 0, 0, 0,189, 1, 0, 0, 5, 0, 0, 0, /* 0x df0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x e00 */ +251, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e10 */ +194, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e20 */ + 1, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 9, 0, 0, 0, /* 0x e30 */ + 0, 0, 0, 0, 0, 0, 0, 0, 48, 20, 0, 0, 8, 0, 0, 0, /* 0x e40 */ + 71, 0, 0, 0, 64, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x e50 */ + 4, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e60 */ +199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e70 */ + 1, 0, 0, 0, 0, 0, 0, 0, 17, 2, 0, 0, 1, 0, 0, 0, /* 0x e80 */ + 0, 0, 0, 0, 0, 0, 0, 0,199, 1, 0, 0, 5, 0, 0, 0, /* 0x e90 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x ea0 */ + 13, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x eb0 */ + 56, 20, 0, 0, 8, 0, 0, 0, 71, 0, 0, 0, 67, 0, 0, 0, /* 0x ec0 */ + 4, 0, 0, 0, 8, 0, 0, 0, 26, 2, 0, 0, 1, 0, 0, 0, /* 0x ed0 */ + 0, 0, 0, 0, 0, 0, 0, 0,204, 1, 0, 0, 32, 0, 0, 0, /* 0x ee0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x ef0 */ + 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f00 */ +236, 1, 0, 0, 35, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f10 */ + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, /* 0x f20 */ + 0, 0, 0, 0, 0, 0, 0, 0,120, 15, 0, 0, 96, 3, 0, 0, /* 0x f30 */ + 72, 0, 0, 0, 47, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, /* 0x f40 */ + 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f50 */ +216, 18, 0, 0,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f60 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f70 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f80 */ + 0, 0, 0, 0, 3, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f90 */ + 0, 0, 0, 0, 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fa0 */ + 0, 0, 0, 0, 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fb0 */ + 0, 0, 0, 0, 3, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fc0 */ + 0, 0, 0, 0, 3, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fd0 */ + 0, 0, 0, 0, 3, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fe0 */ + 0, 0, 0, 0, 3, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ff0 */ + 0, 0, 0, 0, 3, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1000 */ + 0, 0, 0, 0, 3, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1010 */ + 0, 0, 0, 0, 3, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1020 */ + 0, 0, 0, 0, 3, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1030 */ + 0, 0, 0, 0, 3, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1040 */ + 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1050 */ + 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1060 */ + 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1070 */ + 0, 0, 0, 0, 3, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1080 */ + 0, 0, 0, 0, 3, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1090 */ + 0, 0, 0, 0, 3, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10a0 */ + 0, 0, 0, 0, 3, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10b0 */ + 0, 0, 0, 0, 3, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10c0 */ + 0, 0, 0, 0, 3, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10d0 */ + 0, 0, 0, 0, 3, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10e0 */ + 0, 0, 0, 0, 3, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10f0 */ + 0, 0, 0, 0, 3, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1100 */ + 0, 0, 0, 0, 3, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1110 */ + 0, 0, 0, 0, 3, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1120 */ + 0, 0, 0, 0, 3, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1130 */ + 0, 0, 0, 0, 3, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1140 */ + 0, 0, 0, 0, 3, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1150 */ + 0, 0, 0, 0, 3, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1160 */ + 0, 0, 0, 0, 3, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1170 */ + 0, 0, 0, 0, 3, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1180 */ + 0, 0, 0, 0, 3, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1190 */ + 0, 0, 0, 0, 3, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x11a0 */ + 0, 0, 0, 0, 3, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x11b0 */ + 0, 0, 0, 0, 3, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x11c0 */ + 0, 0, 0, 0, 3, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x11d0 */ + 0, 0, 0, 0, 3, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x11e0 */ + 0, 0, 0, 0, 3, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x11f0 */ + 0, 0, 0, 0, 3, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1200 */ + 0, 0, 0, 0, 3, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1210 */ + 0, 0, 0, 0, 3, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1220 */ + 0, 0, 0, 0, 3, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1230 */ + 0, 0, 0, 0, 3, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1240 */ + 0, 0, 0, 0, 3, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1250 */ + 0, 0, 0, 0, 3, 0, 69, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1260 */ + 0, 0, 0, 0, 16, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, /* 0x1270 */ + 0, 0, 0, 0, 16, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, /* 0x1280 */ + 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, /* 0x1290 */ + 0, 0, 0, 0, 16, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, /* 0x12a0 */ + 0, 0, 0, 0, 16, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, /* 0x12b0 */ + 0, 0, 0, 0, 16, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, /* 0x12c0 */ + 0, 0, 0, 0, 16, 0, 0, 0, 0,115,116, 97,114,116, 95,111, /* 0x12d0 */ +102, 95, 99,111,109,112,114,101,115,115,101,100, 0,115,116, 97, /* 0x12e0 */ +114,116, 95,111,102, 95,117,110, 99,111,109,112,114,101,115,115, /* 0x12f0 */ +101,100, 0,115,116, 97, 99,107, 95,102,111,114, 95,108,122,109, /* 0x1300 */ + 97, 0,108,101,110,103,116,104, 95,111,102, 95, 98,115,115, 0, /* 0x1310 */ +102,105,108,116,101,114, 95,108,101,110,103,116,104, 0,102,105, /* 0x1320 */ +108,116,101,114, 95, 99,116,111, 0,111,114,105,103,105,110, 97, /* 0x1330 */ +108, 95,101,110,116,114,121, 0, 3, 0, 0, 0, 1, 47, 0, 0, /* 0x1340 */ + 8, 0, 0, 0, 1, 48, 0, 0, 12, 0, 0, 0, 1, 49, 0, 0, /* 0x1350 */ + 1, 0, 0, 0, 23, 3, 0, 0, 1, 0, 0, 0, 23, 3, 0, 0, /* 0x1360 */ + 1, 0, 0, 0, 23, 1, 0, 0, 3, 0, 0, 0, 23, 2, 0, 0, /* 0x1370 */ + 12, 0, 0, 0, 23, 5, 0, 0, 5, 0, 0, 0, 23, 5, 0, 0, /* 0x1380 */ + 14, 0, 0, 0, 23, 5, 0, 0, 15, 0, 0, 0, 23, 4, 0, 0, /* 0x1390 */ + 30, 0, 0, 0, 23, 6, 0, 0, 48, 0, 0, 0, 23, 8, 0, 0, /* 0x13a0 */ + 12, 0, 0, 0, 23, 5, 0, 0, 3, 0, 0, 0, 23, 5, 0, 0, /* 0x13b0 */ + 14, 0, 0, 0, 23, 5, 0, 0, 8, 0, 0, 0, 2, 3, 0, 0, /* 0x13c0 */ + 10, 0, 0, 0, 23, 7, 0, 0, 21, 0, 0, 0, 2, 3, 0, 0, /* 0x13d0 */ + 18, 0, 0, 0, 2, 3, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0, /* 0x13e0 */ + 1, 0, 0, 0, 1, 51, 0, 0, 2, 0, 0, 0, 22, 52, 0, 0, /* 0x13f0 */ + 4, 0, 0, 0, 23, 9, 0, 0, 13, 0, 0, 0, 23, 9, 0, 0, /* 0x1400 */ + 1, 0, 0, 0, 1, 51, 0, 0, 3, 0, 0, 0, 23, 12, 0, 0, /* 0x1410 */ + 2, 0, 0, 0, 22, 52, 0, 0, 4, 0, 0, 0, 23, 11, 0, 0, /* 0x1420 */ + 4, 0, 0, 0, 23, 10, 0, 0, 1, 0, 0, 0, 2, 53, 0, 0, /* 0x1430 */ + 10,116,109,112, 47,105, 51, 56, 54, 45,100,111,115, 51, 50, 46, /* 0x1440 */ +100,106,103,112,112, 50, 46, 98,105,110, 58, 32, 32, 32, 32, 32, /* 0x1450 */ +102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, /* 0x1460 */ + 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110,115, /* 0x1470 */ + 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, /* 0x1480 */ + 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, /* 0x1490 */ + 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, /* 0x14a0 */ + 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, /* 0x14b0 */ + 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 68, 74, 50, 77, /* 0x14c0 */ + 65, 73, 78, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x14d0 */ + 48, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x14e0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, /* 0x14f0 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1500 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1510 */ + 89, 10, 32, 32, 49, 32, 68, 74, 67, 65, 76, 76, 84, 49, 32, 32, /* 0x1520 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, /* 0x1530 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1540 */ + 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, /* 0x1550 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1560 */ + 79, 78, 76, 89, 10, 32, 32, 50, 32, 68, 74, 50, 77, 65, 73, 78, /* 0x1570 */ + 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, /* 0x1580 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1590 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 49, 32, 32, 50, /* 0x15a0 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x15b0 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 76, 90, 77, 65, /* 0x15c0 */ + 95, 73, 78, 73, 84, 95, 83, 84, 65, 67, 75, 32, 48, 48, 48, 48, /* 0x15d0 */ + 48, 48, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x15e0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x15f0 */ + 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1600 */ + 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1610 */ + 78, 76, 89, 10, 32, 32, 52, 32, 78, 50, 69, 83, 77, 65, 49, 48, /* 0x1620 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, /* 0x1630 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1640 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, 32, 32, 50, 42, /* 0x1650 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1660 */ + 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x1670 */ + 53, 32, 78, 50, 69, 70, 65, 83, 49, 48, 32, 32, 32, 32, 32, 32, /* 0x1680 */ + 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1690 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x16a0 */ + 48, 48, 48, 48, 53, 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x16b0 */ + 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x16c0 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 78, 50, 69, 70, /* 0x16d0 */ + 65, 83, 49, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x16e0 */ + 48, 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x16f0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 57, /* 0x1700 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1710 */ + 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 78, /* 0x1720 */ + 50, 69, 68, 69, 67, 49, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1730 */ + 48, 48, 48, 48, 98, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1740 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1750 */ + 48, 53,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1760 */ + 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x1770 */ + 56, 32, 78, 50, 69, 83, 77, 65, 50, 48, 32, 32, 32, 32, 32, 32, /* 0x1780 */ + 48, 48, 48, 48, 48, 48, 48, 53, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1790 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x17a0 */ + 48, 48, 48, 48, 54, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x17b0 */ + 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x17c0 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 50, 69, 70, /* 0x17d0 */ + 65, 83, 50, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x17e0 */ + 48, 57, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x17f0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 54,102, /* 0x1800 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1810 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1820 */ + 89, 10, 32, 49, 48, 32, 78, 50, 69, 68, 69, 67, 50, 48, 32, 32, /* 0x1830 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,100, 32, 32, 48, 48, /* 0x1840 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1850 */ + 32, 32, 48, 48, 48, 48, 48, 48, 55, 56, 32, 32, 50, 42, 42, 48, /* 0x1860 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1870 */ + 79, 78, 76, 89, 10, 32, 49, 49, 32, 78, 50, 69, 83, 77, 65, 51, /* 0x1880 */ + 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,100, 32, /* 0x1890 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x18a0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 56, 53, 32, 32, 50, /* 0x18b0 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x18c0 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x18d0 */ + 49, 50, 32, 78, 50, 69, 70, 65, 83, 51, 48, 32, 32, 32, 32, 32, /* 0x18e0 */ + 32, 48, 48, 48, 48, 48, 48, 48,102, 32, 32, 48, 48, 48, 48, 48, /* 0x18f0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1900 */ + 48, 48, 48, 48, 48, 57, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1910 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1920 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 51, 32, 78, 50, 69, /* 0x1930 */ + 68, 69, 67, 51, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1940 */ + 48, 53,102, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1950 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, /* 0x1960 */ + 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1970 */ + 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1980 */ + 76, 89, 10, 32, 49, 52, 32, 78, 50, 69, 83, 77, 65, 52, 48, 32, /* 0x1990 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,100, 32, 32, 48, /* 0x19a0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x19b0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 49, 48, 48, 32, 32, 50, 42, 42, /* 0x19c0 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x19d0 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 53, /* 0x19e0 */ + 32, 78, 50, 69, 70, 65, 83, 52, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x19f0 */ + 48, 48, 48, 48, 48, 48,102, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1a00 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a10 */ + 48, 48, 49, 48,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1a20 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1a30 */ + 65, 68, 79, 78, 76, 89, 10, 32, 49, 54, 32, 78, 50, 69, 83, 77, /* 0x1a40 */ + 65, 53, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1a50 */ + 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a60 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 49, 99, 32, /* 0x1a70 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1a80 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 55, 32, 78, 50, /* 0x1a90 */ + 69, 70, 65, 83, 53, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1aa0 */ + 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1ab0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x1ac0 */ + 49,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1ad0 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 56, /* 0x1ae0 */ + 32, 78, 50, 69, 68, 69, 67, 53, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x1af0 */ + 48, 48, 48, 48, 48, 48, 57, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1b00 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1b10 */ + 48, 48, 49, 50, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1b20 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1b30 */ + 32, 49, 57, 32, 78, 50, 69, 83, 77, 65, 54, 48, 32, 32, 32, 32, /* 0x1b40 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 99, 32, 32, 48, 48, 48, 48, /* 0x1b50 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1b60 */ + 48, 48, 48, 48, 48, 49, 50, 97, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1b70 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1b80 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 48, 32, 78, 50, /* 0x1b90 */ + 69, 70, 65, 83, 54, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1ba0 */ + 48, 48, 49, 57, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1bb0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x1bc0 */ + 51, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1bd0 */ + 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1be0 */ + 78, 76, 89, 10, 32, 50, 49, 32, 78, 50, 69, 70, 65, 83, 54, 49, /* 0x1bf0 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 54, 32, 32, /* 0x1c00 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1c10 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 52,102, 32, 32, 50, 42, /* 0x1c20 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1c30 */ + 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, /* 0x1c40 */ + 50, 32, 78, 50, 69, 68, 69, 67, 54, 48, 32, 32, 32, 32, 32, 32, /* 0x1c50 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1c60 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1c70 */ + 48, 48, 48, 49, 54, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1c80 */ + 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1c90 */ + 10, 32, 50, 51, 32, 76, 90, 77, 65, 95, 68, 79, 78, 69, 95, 83, /* 0x1ca0 */ + 84, 65, 67, 75, 32, 48, 48, 48, 48, 48, 48, 48, 53, 32, 32, 48, /* 0x1cb0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1cc0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 49, 54, 53, 32, 32, 50, 42, 42, /* 0x1cd0 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1ce0 */ + 68, 79, 78, 76, 89, 10, 32, 50, 52, 32, 68, 74, 50, 66, 83, 83, /* 0x1cf0 */ + 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 55, /* 0x1d00 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1d10 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 54, 97, 32, 32, /* 0x1d20 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1d30 */ + 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1d40 */ + 32, 50, 53, 32, 68, 74, 67, 65, 76, 76, 84, 50, 32, 32, 32, 32, /* 0x1d50 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, /* 0x1d60 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1d70 */ + 48, 48, 48, 48, 48, 49, 55, 49, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1d80 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1d90 */ + 76, 89, 10, 32, 50, 54, 32, 67, 65, 76, 76, 84, 82, 48, 48, 32, /* 0x1da0 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,101, 32, 32, 48, /* 0x1db0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 49, 55, 50, 32, 32, 50, 42, 42, /* 0x1dd0 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1de0 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 55, /* 0x1df0 */ + 32, 67, 84, 67, 76, 69, 86, 69, 49, 32, 32, 32, 32, 32, 32, 48, /* 0x1e00 */ + 48, 48, 48, 48, 48, 48, 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1e10 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1e20 */ + 48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1e30 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1e40 */ + 65, 68, 79, 78, 76, 89, 10, 32, 50, 56, 32, 67, 65, 76, 76, 84, /* 0x1e50 */ + 82, 48, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1e60 */ + 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1e70 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 53, 32, /* 0x1e80 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1e90 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 57, 32, 67, 84, /* 0x1ea0 */ + 66, 83, 72, 82, 48, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1eb0 */ + 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1ec0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x1ed0 */ + 56, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1ee0 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 48, /* 0x1ef0 */ + 32, 67, 84, 66, 82, 79, 82, 48, 49, 32, 32, 32, 32, 32, 32, 48, /* 0x1f00 */ + 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1f10 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1f20 */ + 48, 48, 49, 56,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1f30 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1f40 */ + 32, 51, 49, 32, 67, 84, 66, 83, 87, 65, 48, 49, 32, 32, 32, 32, /* 0x1f50 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 53, 32, 32, 48, 48, 48, 48, /* 0x1f60 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1f70 */ + 48, 48, 48, 48, 48, 49, 57, 48, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1f80 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1f90 */ + 76, 89, 10, 32, 51, 50, 32, 67, 65, 76, 76, 84, 82, 48, 50, 32, /* 0x1fa0 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,101, 32, 32, 48, /* 0x1fb0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1fc0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 49, 57, 53, 32, 32, 50, 42, 42, /* 0x1fd0 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1fe0 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 51, /* 0x1ff0 */ + 32, 67, 65, 76, 76, 84, 82, 49, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x2000 */ + 48, 48, 48, 48, 48, 48, 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2010 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2020 */ + 48, 48, 49, 97, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x2030 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x2040 */ + 65, 68, 79, 78, 76, 89, 10, 32, 51, 52, 32, 67, 65, 76, 76, 84, /* 0x2050 */ + 82, 69, 56, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2060 */ + 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2070 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 97, 56, 32, /* 0x2080 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2090 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 53, 32, 67, 65, /* 0x20a0 */ + 76, 76, 84, 82, 69, 57, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x20b0 */ + 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x20c0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x20d0 */ + 97, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x20e0 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 54, /* 0x20f0 */ + 32, 67, 65, 76, 76, 84, 82, 49, 49, 32, 32, 32, 32, 32, 32, 48, /* 0x2100 */ + 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2110 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2120 */ + 48, 48, 49, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x2130 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x2140 */ + 65, 68, 79, 78, 76, 89, 10, 32, 51, 55, 32, 67, 84, 67, 76, 69, /* 0x2150 */ + 86, 69, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2160 */ + 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2170 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 98, 48, 32, /* 0x2180 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2190 */ + 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x21a0 */ + 10, 32, 51, 56, 32, 67, 65, 76, 76, 84, 82, 49, 50, 32, 32, 32, /* 0x21b0 */ + 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, /* 0x21c0 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x21d0 */ + 32, 48, 48, 48, 48, 48, 49, 98, 53, 32, 32, 50, 42, 42, 48, 32, /* 0x21e0 */ + 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x21f0 */ + 78, 76, 89, 10, 32, 51, 57, 32, 67, 84, 66, 83, 72, 82, 49, 49, /* 0x2200 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, /* 0x2210 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2220 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 98, 55, 32, 32, 50, 42, /* 0x2230 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x2240 */ + 65, 68, 79, 78, 76, 89, 10, 32, 52, 48, 32, 67, 84, 66, 82, 79, /* 0x2250 */ + 82, 49, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2260 */ + 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2270 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 98, 98, 32, /* 0x2280 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2290 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 52, 49, 32, 67, 84, /* 0x22a0 */ + 66, 83, 87, 65, 49, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x22b0 */ + 48, 48, 48, 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x22c0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x22d0 */ + 98,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x22e0 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 52, 50, /* 0x22f0 */ + 32, 67, 65, 76, 76, 84, 82, 49, 51, 32, 32, 32, 32, 32, 32, 48, /* 0x2300 */ + 48, 48, 48, 48, 48, 48, 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2310 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2320 */ + 48, 48, 49, 99, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x2330 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x2340 */ + 65, 68, 79, 78, 76, 89, 10, 32, 52, 51, 32, 67, 84, 84, 72, 69, /* 0x2350 */ + 69, 78, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2360 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2370 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 99, 55, 32, /* 0x2380 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2390 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 52, 52, 32, 68, 74, /* 0x23a0 */ + 82, 69, 84, 85, 82, 78, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x23b0 */ + 48, 48, 48, 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x23c0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x23d0 */ + 99, 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x23e0 */ + 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x23f0 */ + 78, 76, 89, 10, 32, 52, 53, 32, 85, 80, 88, 49, 72, 69, 65, 68, /* 0x2400 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, /* 0x2410 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2420 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 99, 99, 32, 32, 50, 42, /* 0x2430 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x2440 */ + 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, /* 0x2450 */ + 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2460 */ + 32, 32, 32,100, 32, 32, 78, 50, 69, 83, 77, 65, 49, 48, 9, 48, /* 0x2470 */ + 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, 69, 83, 77, 65, 49, 48, /* 0x2480 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2490 */ + 32, 32, 78, 50, 69, 70, 65, 83, 49, 49, 9, 48, 48, 48, 48, 48, /* 0x24a0 */ + 48, 48, 48, 32, 78, 50, 69, 70, 65, 83, 49, 49, 10, 48, 48, 48, /* 0x24b0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, /* 0x24c0 */ + 69, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x24d0 */ + 78, 50, 69, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x24e0 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 68, 69, 67, /* 0x24f0 */ + 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, 69, 68, /* 0x2500 */ + 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2510 */ + 32, 32, 32,100, 32, 32, 78, 50, 69, 68, 69, 67, 51, 48, 9, 48, /* 0x2520 */ + 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x2530 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2540 */ + 32, 32, 78, 50, 69, 68, 69, 67, 53, 48, 9, 48, 48, 48, 48, 48, /* 0x2550 */ + 48, 48, 48, 32, 78, 50, 69, 68, 69, 67, 53, 48, 10, 48, 48, 48, /* 0x2560 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, /* 0x2570 */ + 69, 70, 65, 83, 54, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2580 */ + 78, 50, 69, 70, 65, 83, 54, 49, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2590 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 68, 69, 67, /* 0x25a0 */ + 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, 69, 68, /* 0x25b0 */ + 69, 67, 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x25c0 */ + 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 48, 48, 9, 48, /* 0x25d0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 48, 48, /* 0x25e0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x25f0 */ + 32, 32, 67, 65, 76, 76, 84, 82, 49, 48, 9, 48, 48, 48, 48, 48, /* 0x2600 */ + 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 49, 48, 10, 48, 48, 48, /* 0x2610 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, /* 0x2620 */ + 76, 76, 84, 82, 49, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2630 */ + 67, 65, 76, 76, 84, 82, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2640 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, /* 0x2650 */ + 49, 51, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, /* 0x2660 */ + 84, 82, 49, 51, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2670 */ + 32, 32, 32,100, 32, 32, 68, 74, 50, 77, 65, 73, 78, 49, 9, 48, /* 0x2680 */ + 48, 48, 48, 48, 48, 48, 48, 32, 68, 74, 50, 77, 65, 73, 78, 49, /* 0x2690 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x26a0 */ + 32, 32, 68, 74, 67, 65, 76, 76, 84, 49, 9, 48, 48, 48, 48, 48, /* 0x26b0 */ + 48, 48, 48, 32, 68, 74, 67, 65, 76, 76, 84, 49, 10, 48, 48, 48, /* 0x26c0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 68, 74, /* 0x26d0 */ + 50, 77, 65, 73, 78, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x26e0 */ + 68, 74, 50, 77, 65, 73, 78, 50, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x26f0 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 73, /* 0x2700 */ + 78, 73, 84, 95, 83, 84, 65, 67, 75, 9, 48, 48, 48, 48, 48, 48, /* 0x2710 */ + 48, 48, 32, 76, 90, 77, 65, 95, 73, 78, 73, 84, 95, 83, 84, 65, /* 0x2720 */ + 67, 75, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2730 */ + 32,100, 32, 32, 78, 50, 69, 70, 65, 83, 49, 48, 9, 48, 48, 48, /* 0x2740 */ + 48, 48, 48, 48, 48, 32, 78, 50, 69, 70, 65, 83, 49, 48, 10, 48, /* 0x2750 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2760 */ + 78, 50, 69, 83, 77, 65, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2770 */ + 48, 32, 78, 50, 69, 83, 77, 65, 50, 48, 10, 48, 48, 48, 48, 48, /* 0x2780 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 70, /* 0x2790 */ + 65, 83, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, /* 0x27a0 */ + 69, 70, 65, 83, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x27b0 */ +108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 83, 77, 65, 51, 48, /* 0x27c0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, 69, 83, 77, 65, /* 0x27d0 */ + 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x27e0 */ + 32,100, 32, 32, 78, 50, 69, 70, 65, 83, 51, 48, 9, 48, 48, 48, /* 0x27f0 */ + 48, 48, 48, 48, 48, 32, 78, 50, 69, 70, 65, 83, 51, 48, 10, 48, /* 0x2800 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2810 */ + 78, 50, 69, 83, 77, 65, 52, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2820 */ + 48, 32, 78, 50, 69, 83, 77, 65, 52, 48, 10, 48, 48, 48, 48, 48, /* 0x2830 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 70, /* 0x2840 */ + 65, 83, 52, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, /* 0x2850 */ + 69, 70, 65, 83, 52, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2860 */ +108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 83, 77, 65, 53, 48, /* 0x2870 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, 69, 83, 77, 65, /* 0x2880 */ + 53, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2890 */ + 32,100, 32, 32, 78, 50, 69, 70, 65, 83, 53, 48, 9, 48, 48, 48, /* 0x28a0 */ + 48, 48, 48, 48, 48, 32, 78, 50, 69, 70, 65, 83, 53, 48, 10, 48, /* 0x28b0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x28c0 */ + 78, 50, 69, 83, 77, 65, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x28d0 */ + 48, 32, 78, 50, 69, 83, 77, 65, 54, 48, 10, 48, 48, 48, 48, 48, /* 0x28e0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 70, /* 0x28f0 */ + 65, 83, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 50, /* 0x2900 */ + 69, 70, 65, 83, 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2910 */ +108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 79, 78, /* 0x2920 */ + 69, 95, 83, 84, 65, 67, 75, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2930 */ + 32, 76, 90, 77, 65, 95, 68, 79, 78, 69, 95, 83, 84, 65, 67, 75, /* 0x2940 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2950 */ + 32, 32, 68, 74, 50, 66, 83, 83, 48, 48, 9, 48, 48, 48, 48, 48, /* 0x2960 */ + 48, 48, 48, 32, 68, 74, 50, 66, 83, 83, 48, 48, 10, 48, 48, 48, /* 0x2970 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 68, 74, /* 0x2980 */ + 67, 65, 76, 76, 84, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2990 */ + 68, 74, 67, 65, 76, 76, 84, 50, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x29a0 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 67, 76, 69, 86, /* 0x29b0 */ + 69, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 67, 76, /* 0x29c0 */ + 69, 86, 69, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x29d0 */ + 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 48, 49, 9, 48, /* 0x29e0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 48, 49, /* 0x29f0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2a00 */ + 32, 32, 67, 84, 66, 83, 72, 82, 48, 49, 9, 48, 48, 48, 48, 48, /* 0x2a10 */ + 48, 48, 48, 32, 67, 84, 66, 83, 72, 82, 48, 49, 10, 48, 48, 48, /* 0x2a20 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, /* 0x2a30 */ + 66, 82, 79, 82, 48, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2a40 */ + 67, 84, 66, 82, 79, 82, 48, 49, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2a50 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 66, 83, 87, 65, /* 0x2a60 */ + 48, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 66, 83, /* 0x2a70 */ + 87, 65, 48, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2a80 */ + 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 48, 50, 9, 48, /* 0x2a90 */ + 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 48, 50, /* 0x2aa0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2ab0 */ + 32, 32, 67, 65, 76, 76, 84, 82, 69, 56, 9, 48, 48, 48, 48, 48, /* 0x2ac0 */ + 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 69, 56, 10, 48, 48, 48, /* 0x2ad0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, /* 0x2ae0 */ + 76, 76, 84, 82, 69, 57, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2af0 */ + 67, 65, 76, 76, 84, 82, 69, 57, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2b00 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 67, 76, 69, 86, /* 0x2b10 */ + 69, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 67, 76, /* 0x2b20 */ + 69, 86, 69, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2b30 */ + 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 49, 50, 9, 48, /* 0x2b40 */ + 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 49, 50, /* 0x2b50 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2b60 */ + 32, 32, 67, 84, 66, 83, 72, 82, 49, 49, 9, 48, 48, 48, 48, 48, /* 0x2b70 */ + 48, 48, 48, 32, 67, 84, 66, 83, 72, 82, 49, 49, 10, 48, 48, 48, /* 0x2b80 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, /* 0x2b90 */ + 66, 82, 79, 82, 49, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2ba0 */ + 67, 84, 66, 82, 79, 82, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2bb0 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 66, 83, 87, 65, /* 0x2bc0 */ + 49, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 66, 83, /* 0x2bd0 */ + 87, 65, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2be0 */ + 32, 32, 32,100, 32, 32, 67, 84, 84, 72, 69, 69, 78, 68, 9, 48, /* 0x2bf0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 84, 72, 69, 69, 78, 68, /* 0x2c00 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2c10 */ + 32, 32, 68, 74, 82, 69, 84, 85, 82, 78, 9, 48, 48, 48, 48, 48, /* 0x2c20 */ + 48, 48, 48, 32, 68, 74, 82, 69, 84, 85, 82, 78, 10, 48, 48, 48, /* 0x2c30 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 85, 80, /* 0x2c40 */ + 88, 49, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2c50 */ + 85, 80, 88, 49, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2c60 */ + 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, /* 0x2c70 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,115,116, 97,114,116, 95,111, /* 0x2c80 */ +102, 95, 99,111,109,112,114,101,115,115,101,100, 10, 48, 48, 48, /* 0x2c90 */ + 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, /* 0x2ca0 */ + 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,116, 97, /* 0x2cb0 */ +114,116, 95,111,102, 95,117,110, 99,111,109,112,114,101,115,115, /* 0x2cc0 */ +101,100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x2cd0 */ + 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x2ce0 */ + 48, 48, 32,115,116, 97, 99,107, 95,102,111,114, 95,108,122,109, /* 0x2cf0 */ + 97, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, /* 0x2d00 */ + 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2d10 */ + 48, 32,108,101,110,103,116,104, 95,111,102, 95, 98,115,115, 10, /* 0x2d20 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2d30 */ + 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2d40 */ +102,105,108,116,101,114, 95,108,101,110,103,116,104, 10, 48, 48, /* 0x2d50 */ + 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x2d60 */ + 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102,105, /* 0x2d70 */ +108,116,101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2d80 */ + 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, /* 0x2d90 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,111,114,105,103,105,110, 97, /* 0x2da0 */ +108, 95,101,110,116,114,121, 10, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2db0 */ + 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2dc0 */ + 32, 91, 68, 74, 50, 77, 65, 73, 78, 49, 93, 58, 10, 79, 70, 70, /* 0x2dd0 */ + 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2de0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, /* 0x2df0 */ + 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, 95, 51, 50, /* 0x2e00 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,114,116, 95, /* 0x2e10 */ +111,102, 95, 99,111,109,112,114,101,115,115,101,100, 10, 48, 48, /* 0x2e20 */ + 48, 48, 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, /* 0x2e30 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,114,116, 95,111, /* 0x2e40 */ +102, 95,117,110, 99,111,109,112,114,101,115,115,101,100, 10, 10, /* 0x2e50 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x2e60 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 73, 78, /* 0x2e70 */ + 73, 84, 95, 83, 84, 65, 67, 75, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x2e80 */ + 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2e90 */ + 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, /* 0x2ea0 */ + 48, 48, 48, 48, 99, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, /* 0x2eb0 */ + 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97, 99,107, 95,102,111, /* 0x2ec0 */ +114, 95,108,122,109, 97, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2ed0 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2ee0 */ + 91, 78, 50, 69, 83, 77, 65, 49, 48, 93, 58, 10, 79, 70, 70, 83, /* 0x2ef0 */ + 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2f00 */ + 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x2f10 */ + 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, /* 0x2f20 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 49, /* 0x2f30 */ + 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2f40 */ + 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 70, /* 0x2f50 */ + 65, 83, 49, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2f60 */ + 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f70 */ + 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2f80 */ + 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, /* 0x2f90 */ + 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 49, 48, 10, 10, 10, 82, /* 0x2fa0 */ + 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2fb0 */ + 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 83, 77, 65, 50, 48, 93, /* 0x2fc0 */ + 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2fd0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2fe0 */ + 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, /* 0x2ff0 */ + 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x3000 */ + 50, 69, 83, 77, 65, 49, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x3010 */ + 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x3020 */ + 32, 91, 78, 50, 69, 70, 65, 83, 50, 48, 93, 58, 10, 79, 70, 70, /* 0x3030 */ + 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x3040 */ + 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, /* 0x3050 */ + 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, /* 0x3060 */ + 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 70, 65, 83, /* 0x3070 */ + 49, 49, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x3080 */ + 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, /* 0x3090 */ + 83, 77, 65, 51, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x30a0 */ + 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x30b0 */ + 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, /* 0x30c0 */ + 48, 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, /* 0x30d0 */ + 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, 10, 10, /* 0x30e0 */ + 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x30f0 */ + 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 70, 65, 83, 51, 48, /* 0x3100 */ + 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x3110 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x3120 */ + 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 53, 32, 82, 95, /* 0x3130 */ + 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3140 */ + 78, 50, 69, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x3150 */ +101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, /* 0x3160 */ + 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, 10, 10, 82, /* 0x3170 */ + 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x3180 */ + 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 68, 69, 67, 51, 48, 93, /* 0x3190 */ + 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x31a0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x31b0 */ + 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48,102, 32, 82, 95, 51, /* 0x31c0 */ + 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x31d0 */ + 50, 69, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 49,101, /* 0x31e0 */ + 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, /* 0x31f0 */ + 32, 32, 32, 78, 50, 69, 68, 69, 67, 53, 48, 10, 48, 48, 48, 48, /* 0x3200 */ + 48, 48, 51, 48, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, /* 0x3210 */ + 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 54, 48, 10, /* 0x3220 */ + 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x3230 */ + 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 83, 77, 65, /* 0x3240 */ + 52, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x3250 */ + 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3260 */ + 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, /* 0x3270 */ + 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, /* 0x3280 */ + 32, 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, 10, 10, 82, 69, 76, /* 0x3290 */ + 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x32a0 */ + 70, 79, 82, 32, 91, 78, 50, 69, 70, 65, 83, 52, 48, 93, 58, 10, /* 0x32b0 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x32c0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x32d0 */ + 32, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, /* 0x32e0 */ + 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, /* 0x32f0 */ + 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48,101, 32, 82, /* 0x3300 */ + 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3310 */ + 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, 10, 10, 82, 69, 76, 79, /* 0x3320 */ + 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x3330 */ + 79, 82, 32, 91, 78, 50, 69, 83, 77, 65, 54, 48, 93, 58, 10, 79, /* 0x3340 */ + 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x3350 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, /* 0x3360 */ + 10, 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, /* 0x3370 */ + 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, /* 0x3380 */ + 69, 67, 49, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x3390 */ + 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x33a0 */ + 50, 69, 70, 65, 83, 54, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x33b0 */ + 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x33c0 */ + 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x33d0 */ + 48, 48, 48, 97, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, /* 0x33e0 */ + 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 70, 65, 83, 54, 49, 10, /* 0x33f0 */ + 48, 48, 48, 48, 48, 48, 49, 53, 32, 82, 95, 51, 56, 54, 95, 80, /* 0x3400 */ + 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, /* 0x3410 */ + 67, 49, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x3420 */ + 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, /* 0x3430 */ + 69, 70, 65, 83, 54, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x3440 */ + 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3450 */ + 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, /* 0x3460 */ + 48, 49, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, /* 0x3470 */ + 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 49, 48, 10, 10, /* 0x3480 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x3490 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 68, 74, 50, 66, 83, 83, 48, /* 0x34a0 */ + 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x34b0 */ + 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x34c0 */ + 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, /* 0x34d0 */ + 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x34e0 */ + 32,108,101,110,103,116,104, 95,111,102, 95, 98,115,115, 10, 10, /* 0x34f0 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x3500 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 48, /* 0x3510 */ + 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x3520 */ + 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x3530 */ + 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, /* 0x3540 */ + 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3550 */ + 32,102,105,108,116,101,114, 95,108,101,110,103,116,104, 10, 10, /* 0x3560 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x3570 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 84, 67, 76, 69, 86, 69, /* 0x3580 */ + 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x3590 */ + 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x35a0 */ + 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, /* 0x35b0 */ + 95, 51, 56, 54, 95, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x35c0 */ + 32,102,105,108,116,101,114, 95, 99,116,111, 10, 48, 48, 48, 48, /* 0x35d0 */ + 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, /* 0x35e0 */ + 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 48, 48, 10, /* 0x35f0 */ + 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x3600 */ + 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, /* 0x3610 */ + 48, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x3620 */ + 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3630 */ + 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48,100, 32, /* 0x3640 */ + 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, /* 0x3650 */ + 32, 32, 67, 65, 76, 76, 84, 82, 48, 48, 10, 10, 10, 82, 69, 76, /* 0x3660 */ + 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x3670 */ + 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 49, 48, 93, 58, 10, /* 0x3680 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x3690 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x36a0 */ + 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, /* 0x36b0 */ + 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102,105,108, /* 0x36c0 */ +116,101,114, 95,108,101,110,103,116,104, 10, 10, 10, 82, 69, 76, /* 0x36d0 */ + 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x36e0 */ + 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 49, 49, 93, 58, 10, /* 0x36f0 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x3700 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x3710 */ + 32, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, /* 0x3720 */ + 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, /* 0x3730 */ + 76, 84, 82, 49, 51, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x3740 */ + 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x3750 */ + 67, 84, 67, 76, 69, 86, 69, 50, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x3760 */ + 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3770 */ + 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, /* 0x3780 */ + 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 56, 32, 32, 32, /* 0x3790 */ + 32, 32, 32, 32, 32, 32, 32, 32,102,105,108,116,101,114, 95, 99, /* 0x37a0 */ +116,111, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, /* 0x37b0 */ + 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, /* 0x37c0 */ + 76, 76, 84, 82, 49, 49, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x37d0 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x37e0 */ + 91, 67, 65, 76, 76, 84, 82, 49, 51, 93, 58, 10, 79, 70, 70, 83, /* 0x37f0 */ + 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x3800 */ + 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x3810 */ + 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, /* 0x3820 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 49, /* 0x3830 */ + 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x3840 */ + 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 68, 74, 82, 69, /* 0x3850 */ + 84, 85, 82, 78, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x3860 */ + 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3870 */ + 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x3880 */ + 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, /* 0x3890 */ + 32, 32, 32, 32,111,114,105,103,105,110, 97,108, 95,101,110,116, /* 0x38a0 */ +114,121, 10, 10, 10 /* 0x38b0 */ }; diff --git a/src/stub/src/arch/i386/macros2.ash b/src/stub/src/arch/i386/macros2.ash new file mode 100644 index 00000000..8b92bcdd --- /dev/null +++ b/src/stub/src/arch/i386/macros2.ash @@ -0,0 +1,617 @@ +/* +; macros.ash -- +; +; This file is part of the UPX executable compressor. +; +; 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 +; and/or modify them under the terms of the GNU General Public License as +; published by the Free Software Foundation; either version 2 of +; the License, or (at your option) any later version. +; +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; see the file COPYING. +; If not, write to the Free Software Foundation, Inc., +; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +; +; Markus F.X.J. Oberhumer Laszlo Molnar +; +; +*/ + + .intel_syntax noprefix + +.macro section name + .section \name + .code32 +.endm + +.macro CPU id + .ifc \id, 386 + //.arch i386, nojumps + .endif + .ifc \id, 486 + .arch i486, nojumps + .endif +.endm + +.macro jmps target + .byte 0xeb, \target - . - 1 +.endm + +.macro jos target + .byte 0x70, \target - . - 1 +.endm + +.macro jnos target + .byte 0x71, \target - . - 1 +.endm + +.macro jcs target + .byte 0x72, \target - . - 1 +.endm + +.macro jncs target + .byte 0x73, \target - . - 1 +.endm + +.macro jzs target + .byte 0x74, \target - . - 1 +.endm + +.macro jnzs target + .byte 0x75, \target - . - 1 +.endm + +.macro jnas target + .byte 0x76, \target - . - 1 +.endm + +.macro jas target + .byte 0x77, \target - . - 1 +.endm + +.macro jss target + .byte 0x78, \target - . - 1 +.endm + +.macro jnss target + .byte 0x79, \target - . - 1 +.endm + +.macro jps target + .byte 0x7a, \target - . - 1 +.endm + +.macro jnps target + .byte 0x7b, \target - . - 1 +.endm + +.macro jls target + .byte 0x7c, \target - . - 1 +.endm + +.macro jnls target + .byte 0x7d, \target - . - 1 +.endm + +.macro jngs target + .byte 0x7e, \target - . - 1 +.endm + +.macro jgs target + .byte 0x7f, \target - . - 1 +.endm + +#define jes jzs +#define jnes jnzs +#define jbes jnas + +/* +;; ============= +;; ============= 32-BIT CALLTRICK & JUMPTRICK +;; ============= + +;; call & jump trick : 2 in 1 +*/ + +.macro cjt32 addvalue +section CALLTR00 + mov ecx, offset filter_length +calltrickloop: + mov al, [edi] + inc edi + sub al, 0xE8 +ct1: + cmp al, 1 + ja calltrickloop +section CTCLEVE1 + cmpb [edi], offset filter_cto + jnzs calltrickloop +section CALLTR01 + mov eax, [edi] + mov bl, [edi + 4] +section CTBSHR01 + shr ax, 8 +section CTBROR01 + xchg ah, al +section CTBSWA01 + rol eax, 16 + xchg ah, al +section CALLTR02 + sub eax, edi + sub bl, 0xE8 + + .if \addvalue + add eax, \addvalue + .endif + + mov [edi], eax + add edi, 5 + mov al, bl + loop ct1 + +section CALLTR10 +//;; 32-bit call XOR jump trick + mov ecx, offset filter_length +ctloop1: +section CALLTRE8 + mov al,0xE8 +section CALLTRE9 + mov al,0xE9 +section CALLTR11 +ctloop2: + repnz + scasb + jnzs ctend +section CTCLEVE2 + cmpb [edi], offset filter_cto + jnzs ctloop2 +section CALLTR12 + mov eax, [edi] +section CTBSHR11 + shr ax, 8 +section CTBROR11 + xchg ah, al +section CTBSWA11 + rol eax, 16 + xchg ah, al +section CALLTR13 + sub eax, edi + + .if \addvalue + add eax, \addvalue + .endif + + stosd + jmps ctloop1 +ctend: +section CTTHEEND +.endm + +#if 0 + +;; call/jump/jcc trick; also used more than once (and/or optionally), so +;; ecx has byte count (not count of applied instances), and +;; edi points to buffer. +%macro ckt32 2 +; 1st param: effective addvalue (typically 0 or edi; any rvalue) +; 2nd param: where is cto8 (dl, bl, or literal) + +section CKLLTR00 + %ifnidn %1,0 + mov esi, %1 + %endif + jmps ckstart +ckloop3: + mov al, [edi] + add edi, byte 1 +section CKLLTR10 Jcc only + cmp al, 0x80 ; lo of 6-byte Jcc + jb ckloop2 + cmp al, 0x8f ; hi of 6-byte Jcc + ja ckloop2 + cmp byte [edi -2], 0x0F ; prefix of 6-byte Jcc + je ckmark +ckloop2: +section CKLLTR20 + sub al, 0xE8 + cmp al, 0xE9 - 0xE8 + ja ckcount +ckmark: + cmp byte [edi], %2 ; cto8 + jnz ckcount + mov eax, [edi] + + shr ax, 8 + rol eax, 16 + xchg ah, al +; above 3 instr are equivalent to the following 2 instr: +; mov al, 0 ; clear cto8 [setup partial-write stall] +; bswap eax ; not on 386: need 486 and up + + sub eax, edi + %ifnidn %1,0 + add eax, esi + %endif + mov [edi], eax + add edi, byte 4 +ckstart: + sub ecx, byte 4 +section CKLLTR30 Jcc only + mov al, [edi] + add edi, byte 1 + loop ckloop2 ; prefix cannot overlap previous displacement +section CKLLTR40 +ckcount: + sub ecx, byte 1 + jg ckloop3 +ckend: +%endmacro + +;; ============= +;; ============= 32-BIT RELOCATIONS +;; ============= + +%macro reloc32 3 +section RELOC320 +reloc_main: + xor eax, eax + mov al, [%1] + inc %1 + or eax, eax + jz reloc_endx + cmp al, 0xEF + ja reloc_fx +reloc_add: + add %2, eax + %if 1 + mov eax, [%2] + xchg ah, al + rol eax, 16 + xchg ah, al + add eax, %3 + mov [%2], eax + %else + add [%2], %3 + %endif + jmps reloc_main +reloc_fx: + and al, 0x0F + shl eax, 16 + mov ax, [%1] + add %1, byte 2 +section REL32BIG + or eax, eax + jnz reloc_add + mov eax, [%1] + add %1, byte 4 +section RELOC32J + jmps reloc_add +reloc_endx: +section REL32END +%endmacro + + +;; ============= +;; ============= 32-BIT CALL TRICK UNFILTER WITH MostRecentlyUsed BUFFER +;; ============= + +;;;; names of pseudo-sections for addLoader: +;; LXUNFnnn Linux unfilter +;; LXMRUnnn MostRecentlyUsed recoding of destinations +;; MRUARBnn arbitrary number of entries in wheel +;; MRUBITSn power of 2 entries in wheel (smaller code) +;; MRUBYTEn 256 entries in wheel (smallest code) + +%macro ctojr32 0 +%push ctojr32 + +;; I got confused by the syntactic sugar of the fake %ifdefs. +;; I can read the section name more easily when it is at the left margin. +;; Also, some of the logic to select the sections is not that simple, +;; and any mismatch between the logic and the %ifdefs is very confusing. +;; Instead, I use comments after the section name, and blank lines for grouping. + +section LXUNF000 enter at +0 for decompression; +2 for unfiltering + jmps decompr0 +section LXUNF002 + ;; 2+ address of decompress subroutine + ;; unfilter(upx_byte *, length, cto8) +lxunfilter: + pop edx ; return address + pop eax ; upx_byte *, same as addvalue + pop ecx ; length + xchg eax, edi ; edi= pointer; eax= saved_edi + pusha ; save C-convention ebx, ebp, esi, edi; also eax, edx + +; at most one of the next 2 +section MRUBYTE0 256==n_mru + xor ebx, ebx ; zero +section LXMRU005 0!=n_mru + mov ebx, 'NMRU' ; modified N_MRU or N_MRU -1 + +section LXMRU006 0!=n_mru + push byte 0x0f ; prefix of 6-byte Jcc + pop eax + mov ah, [esp + 8*4] ; cto8 +section LXMRU007 0==n_mru + push byte 0x0f ; prefix of 6-byte Jcc + pop ebx + mov bh, [esp + 8*4] ; cto8 + +section LXUNF008 + mov dl, [esp + 8*4] ; cto8 + +section LXUNF010 + jmpn lxunf0 +decompr0: + +;; These %define are only if 0!=n_mru; +;; else 0x0F==bl && cto8==bh==dh && 0xE8==dl && addvalue==esi . +%define %$n_mru [esi] +%define %$n_mru1 [esi] +%define %$tail [esi + 4*1] +%define %$cto8_e8e9 [esi + 4*2] +%define %$cto8_0f [esi + 4*3] +%define %$addvalue [esi + 4*4] +%define %$tmp ebp +%define %$hand ebx +%define %$hand_l bl +%define %$kh edx +%define %$kh_l dl + +section LXJCC010 +lxunf2: ; have seen 0x80..0x8f of possible recoded 6-byte Jcc + movzx ebp, word [edi] ; 2 bytes, zero-extended + +section LXMRU045 0!=n_mru + sub ebp, %$cto8_0f +section LXMRU046 0==n_mru + sub ebp, ebx + +section LXJCC020 0==n_mru, or Jcc excluded ('sub' of equals clears Carry) + jne unfcount +section LXJCC021 0!=n_mru and Jcc participates; must set Carry + sub ebp, byte 1 ; set Carry iff in range + jnb unfcount + +section LXJCC023 found Jcc; re-swap 0x8Y opcode and 0x0f prefix + mov byte [edi -1], bl ; 0x0f prefix + dec ecx ; preserve Carry + mov byte [edi], al ; Jcc opcode + inc edi ; preserve Carry + +section LXUNF037 +%define %$jc eax + +lxunf: ; in: Carry set iff we should apply mru and 0!=n_mru + mov eax, [edi] ; BE32 displacement with cto8 in low 8 bits + +section LXUNF386 0!=n_mru && 386 + pushf +section LXUNF387 ==386 + shr ax, 8 + rol eax, 16 + xchg ah, al +section LXUNF388 0!=n_mru && 386 + popf + jnc unf_store ; do not apply mru + +section LXUNF486 >=486 + mov al, byte 0 + CPU 486 + bswap eax ; preserve Carry (2-byte instruction) + CPU 386 +section LXUNF487 0!=n_mru && >=486 + jnc unf_store ; do not apply mru + +section LXMRU065 0!=n_mru + shr %$jc, 1 ; eax= jc, or mru index + jnc mru4 ; not 1st time for this jc +section MRUBYTE3 + dec %$hand_l +section MRUARB30 + dec %$hand +section MRUBITS3 + and %$hand, %$n_mru1 +section MRUARB40 + jge mru3 + add %$hand, %$n_mru +mru3: +section LXMRU070 + + mov [esp + 4*%$hand], %$jc ; 1st time: mru[hand] = jc + jmps unf_store + +mru4: ; not 1st time for this jc + lea %$kh, [%$jc + %$hand] ; kh = jc + hand +section MRUBYTE4 + movzx %$kh, %$kh_l +section MRUBITS4 + and %$kh, %$n_mru1 +section MRUARB50 + cmp %$kh, %$n_mru + jb mru5 + sub %$kh, %$n_mru +mru5: +section LXMRU080 + mov %$jc, [esp + 4*%$kh] ; jc = mru[kh] +section MRUBYTE5 + dec %$hand_l +section MRUARB60 + dec %$hand +section MRUBITS5 + and %$hand, %$n_mru1 +section MRUARB70 + jge mru6 + add %$hand, %$n_mru +mru6: +section LXMRU090 + + mov %$tmp, [esp + 4*%$hand] ; tmp = mru[hand] + test %$tmp,%$tmp + jnz mru8 + + push %$jc ; ran out of registers + mov eax, %$tail + +section MRUBYTE6 + dec al +section MRUARB80 + dec eax +section MRUBITS6 + and eax, %$n_mru1 +section MRUARB90 + jge mru7 + add eax, %$n_mru +mru7: +section LXMRU100 + + xor %$tmp,%$tmp + mov %$tail, eax + xchg [4+ esp + 4*eax], %$tmp ; tmp = mru[tail]; mru[tail] = 0 + pop %$jc +mru8: + mov [esp + 4*%$kh ], %$tmp ; mru[kh] = tmp + mov [esp + 4*%$hand], %$jc ; mru[hand] = jc +section LXUNF040 +unf_store: + sub eax, edi + sub ecx, byte 4 + +; one of the next2 +section LXMRU110 0!=n_mru + add eax, %$addvalue +section LXMRU111 0==n_mru + add eax, esi ; addvalue (same as initial pointer) + +section LXUNF041 + mov [edi], eax + add edi, byte 4 + jmps unfcount +section LXUNF042 +lxunf0: ;; continuation of entry prolog for unfilter +section LEXEC016 bug in APP: jmp and label must be in same .asx/.asy + jmp lxunf0 ; this instr does not really go here! + +section LXMRU010 0!=n_mru + push eax ; cto8_0f +section LXJMPA00 only JMP, and not CALL, is filtered + mov al, 0xE9 +section LXCALLB0 only CALL, or both CALL and JMP are filtered + mov al, 0xE8 +section LXUNF021 common tail + push eax ; cto8_e8e9 + push byte 0 ; tail + push ebx ; n_mru or n_mru1 + mov esi, esp ; flat model "[esi]" saves a byte over "[ebp]" + +section LXMRU022 0==n_mru + pop esi ; addvalue + mov edx, ebx ; dh= cto8 +section LXJMPA01 only JMP, and not CALL, is filtered + mov dl, 0xE9 +section LXCALLB1 only CALL, or both CALL and JMP are filtered + mov dl, 0xE8 + + +section MRUBITS1 + inc %$hand ; n_mru1 ==> n_mru +section LXMRU030 +lxunf1: ; allocate and clear mru[] + push byte 0 + +; one of the next 2, if n_mru +section MRUBYTE1 + dec %$hand_l +section MRUARB10 + dec %$hand + +section LXMRU040 0!=n_mru + jnz lxunf1 ; leaves 0=='hand' + +section LXUNF030 +lxctloop: + movzx eax, word [edi] ; 2 bytes, zero extended + add edi, byte 1 +section LXJCC000 + cmp al, 0x80 ; lo of Jcc + jb lxct1 + cmp al, 0x8f ; hi of Jcc + jbe lxunf2 +lxct1: + +section LXCJ0MRU 0==n_mru + sub eax, edx +section LXCJ1MRU 0!=n_mru + sub eax, %$cto8_e8e9 + +; both CALL and JMP are filtered +section LXCALJMP + sub eax, byte 1+ (0xE9 - 0xE8) ; set Carry iff in range (result: -2, -1) + +; only CALL, or only JMP, is filtered +section LXCALL00 0==n_mru + je lxunf +section LXCALL01 0!=n_rmu + sub eax, byte 1 ; set Carry iff in range + +section LXCJ2MRU 0==n_mru, or apply mru to all that are filtered here + jb lxunf ; only Carry (Borrow) matters +section LXCJ4MRU 0!=n_mru, but apply mru only to subset of filtered here + jnb unfcount ; was not filtered anyway: do not unfilter + +;we will unfilter, and 0!=n_mru, but should we apply mru? +section LXCJ6MRU apply mru to JMP only (0xFF==al) + jpe lxct3 ; jump if even number of 1 bits in al +section LXCJ7MRU apply mru to CALL only (0xFE==al) + jpo lxct3 ; jump if odd number of 1 bits in al +section LXCJ8MRU do not apply mru to one or both + clc +lxct3: + jmps lxunf + +section LXUNF034 +unfcount: + sub ecx, byte 1 + jg lxctloop + +section LXMRU055 + mov edi, esp ; clear mru[] portion of stack +section MRUBYTE2 + mov ecx, 4+ 256 ; unused, tail, cto8_e8e9, cto8_0f +section MRUBITS2 + mov ecx, %$n_mru1 + add ecx, byte 1+ 4 ; n_mru1, tail, cto8_e8e9, cto8_0f +section MRUARB20 + mov ecx, %$n_mru + add ecx, byte 4 ; n_mru, tail, cto8_e8e9, cto8_0f +section LXMRU057 + xor eax, eax + rep + stosd + mov esp, edi + +section LXMRU058 0==n_mru + push esi +section LXUNF035 + popa + xchg eax, edi + push ecx + push eax + push edx + ret +%pop +%endmacro +#endif + +// vi:ts=8:et:nowrap diff --git a/src/stub/src/arch/i386/nrv2e_d32_2.ash b/src/stub/src/arch/i386/nrv2e_d32_2.ash new file mode 100644 index 00000000..5d001610 --- /dev/null +++ b/src/stub/src/arch/i386/nrv2e_d32_2.ash @@ -0,0 +1,200 @@ +/* +; n2e_d32.ash -- ucl_nrv2e_decompress_le32 in 32-bit assembly +; +; This file is part of the UCL data compression library. +; +; Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer +; All Rights Reserved. +; +; The UCL library is free software; you can redistribute it and/or +; modify it under the terms of the GNU General Public License as +; published by the Free Software Foundation; either version 2 of +; the License, or (at your option) any later version. +; +; The UCL library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with the UCL library; see the file COPYING. +; If not, write to the Free Software Foundation, Inc., +; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +; +; Markus F.X.J. Oberhumer +; +; http://www.oberhumer.com/opensource/ucl/ +; + + +; ------------- DECOMPRESSION ------------- + +; Input: +; esi - source +; edi - dest +; ebp - -1 +; cld + +; Output: +; eax - 0 +; ecx - 0 +*/ + +// CPU 386 + +.macro getbit_n2e one + .ifc \one, 1 + add ebx, ebx + jnz 1f + .endif + mov ebx, [esi] + sub esi, -4 + adc ebx, ebx +1: +.endm + +#undef getbit +#define getbit getbit_n2e + +section N2ESMA10 + jmps dcl1_n2e +decompr_literals_n2e: + movsb +section N2EFAS10 + jmps dcl1_n2e +section N2EFAS11 +decompr_literalb_n2e: + mov al, [esi] + inc esi + mov [edi], al + inc edi +section N2EDEC10 + + +decompr_loop_n2e: + add ebx, ebx + jnz dcl2_n2e +dcl1_n2e: + getbit 32 +dcl2_n2e: +section N2ESMA20 + jcs decompr_literals_n2e + xor eax, eax + inc eax +section N2EFAS20 +#ifndef UPX102 + mov al, [edi] // force data cache allocate (PentiumPlain or MMX) +#endif + jcs decompr_literalb_n2e + mov eax, 1 +section N2EDEC20 +loop1_n2e: + getbit 1 + adc eax, eax +section N2ESMA30 + getbit 1 + jcs loopend1_n2e +section N2EFAS30 + add ebx, ebx + jnc loopcontinue1_n2e + jnzs loopend1_n2e + getbit 32 + jcs loopend1_n2e +loopcontinue1_n2e: +section N2EDEC30 + dec eax + getbit 1 + adc eax, eax + jmps loop1_n2e + +decompr_mlen1_n2e: + getbit 1 + adc ecx, ecx + jmps decompr_got_mlen_n2e + +loopend1_n2e: + xor ecx, ecx + sub eax, 3 + jb decompr_prev_dist_n2e + shl eax, 8 + mov al, [esi] + inc esi + xor eax, -1 + jzs decompr_end_n2e + sar eax, 1 // shift low-bit into carry + mov ebp, eax + jmps decompr_ebpeax_n2e +decompr_prev_dist_n2e: + getbit 1 +decompr_ebpeax_n2e: + jcs decompr_mlen1_n2e + inc ecx + getbit 1 + jcs decompr_mlen1_n2e +loop2_n2e: + getbit 1 + adc ecx, ecx +section N2ESMA40 + getbit 1 + jncs loop2_n2e +section N2EFAS40 + add ebx, ebx + jncs loop2_n2e + jnz loopend2_n2e + getbit 32 + jncs loop2_n2e +loopend2_n2e: +section N2ESMA50 + inc ecx + inc ecx +section N2EFAS50 + add ecx, 2 +section N2EDEC50 +decompr_got_mlen_n2e: + cmp ebp, -0x500 + adc ecx, 2 +section N2ESMA60 +#ifndef UPX102 + push esi +#else + mov edx, esi +#endif + lea esi, [edi+ebp] + rep + movsb +#ifndef UPX102 + pop esi +#else + mov esi, edx +#endif + jmp decompr_loop_n2e +section N2EFAS60 + lea edx, [edi+ebp] + cmp ebp, -4 +#ifndef UPX102 + mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX) +#endif + jbes decompr_copy4_n2e +loop3_n2e: + mov al, [edx] + inc edx + mov [edi], al + inc edi + dec ecx + jnz loop3_n2e + jmp decompr_loop_n2e +section N2EFAS61 +decompr_copy4_n2e: + mov eax, [edx] + add edx, 4 + mov [edi], eax + add edi, 4 + sub ecx, 4 + ja decompr_copy4_n2e + add edi, ecx + jmp decompr_loop_n2e +section N2EDEC60 +decompr_end_n2e: + +// vi:ts=8:et + diff --git a/src/stub/src/i386-dos32.djgpp2.asm b/src/stub/src/i386-dos32.djgpp2.asm index fafb24bf..3e51e23f 100644 --- a/src/stub/src/i386-dos32.djgpp2.asm +++ b/src/stub/src/i386-dos32.djgpp2.asm @@ -1,3 +1,4 @@ +/* ; l_djgpp2.asm -- loader & decompressor for the djgpp2/coff format ; ; This file is part of the UPX executable compressor. @@ -24,93 +25,72 @@ ; Markus F.X.J. Oberhumer Laszlo Molnar ; ; +*/ +#include "arch/i386/macros2.ash" -%define jmps jmp short -%define jmpn jmp near -%include "arch/i386/macros.ash" - - BITS 32 - SECTION .text - ORG 0 CPU 386 -; ============= -; ============= ENTRY POINT -; ============= - -; __DJ2MAIN1__ -start: +section DJ2MAIN1 push ds pop es - mov esi, 'INPP' ; input pointer - mov edi, 'OUTP' ; output pointer -%ifdef __DJCALLT1__ + mov esi, offset start_of_compressed + mov edi, offset start_of_uncompressed +section DJCALLT1 push edi -%endif; __DJ2MAIN2__ -; cld ; the stub sets this - or ebp, byte -1 +section DJ2MAIN2 + or ebp, -1 -; __LZMA_INIT_STACK__ +section LZMA_INIT_STACK +/* ; as this stub gets loaded from 0x000000a8, we have some scratch ; memory starting from 0x00000000 to store ss:esp ; note: NULL page protection is only activated by the ; uncompressed application later - +*/ xor eax, eax mov [eax], ss mov [eax + 4], esp mov eax, ds mov ss, eax - mov esp, 'ESP0' + mov esp, offset stack_for_lzma +/* ; ============= ; ============= DECOMPRESSION ; ============= +*/ -%include "arch/i386/nrv2b_d32.ash" -%include "arch/i386/nrv2d_d32.ash" -%include "arch/i386/nrv2e_d32.ash" -%include "arch/i386/lzma_d.ash" +//include "arch/i386/nrv2b_d32.ash" +//#include "arch/i386/nrv2d_d32.ash" +#include "arch/i386/nrv2e_d32_2.ash" +//#include "arch/i386/lzma_d.ash" -; __LZMA_DONE_STACK__ - mov ss, [eax] ; eax is always 0 here +section LZMA_DONE_STACK + mov ss, [eax] // eax is always 0 here mov esp, [eax + 4] -; ============= - -; __DJ2BSS00__ - mov ecx, 'BSSL' +section DJ2BSS00 + mov ecx, offset length_of_bss rep stosd -%ifdef __DJCALLT2__ - -; ============= -; ============= CALLTRICK -; ============= +section DJCALLT2 pop edi cjt32 0 -%endif; __DJRETURN__ -; ============= - - push dword 'ENTR' ; entry point - ret +section DJRETURN + jmp original_entry +/* ; because of a feature of the djgpp loader, the size of this stub must be ; a multiple of 4 and as the upx decompressor depends on the fact that -; the compressed data stream begins just after the header, i must -; use an alignment here - ML - align 4 -%include "include/header.ash" -eof: -; __DJTHEEND__ - section .data - dd -1 - dw eof +; the compressed data stream begins just after the header, +; so the header section should be 4 byte aligned +*/ +#include "include/header2.ash" -; vi:ts=8:et:nowrap +// vi:ts=8:et:nowrap