From ea5a1b849df6e5085a92957ad387f9e653674415 Mon Sep 17 00:00:00 2001 From: inmarket Date: Tue, 11 Mar 2014 17:13:31 +1000 Subject: Combine GAUDIN and GAUDOUT into a single GAUDIO module. Simplify GAUDIN (now GAUDIO RECORD) api. Update audio demo's to match. Port Win32 driver to new audio api. --- boards/base/Olimex-SAM7EX256-GE12/board.mk | 2 +- boards/base/Olimex-SAM7EX256-GE12/readme.txt | 2 +- boards/base/Olimex-SAM7EX256-GE8/board.mk | 2 +- .../base/Olimex-SAM7EX256-GE8/gaudin_lld_board.h | 33 - .../Olimex-SAM7EX256-GE8/gaudio_record_board.h | 33 + boards/base/Olimex-SAM7EX256-GE8/readme.txt | 2 +- boards/base/Win32/board.mk | 2 +- demos/modules/audio/oscilloscope/demo.mk | 3 - demos/modules/audio/oscilloscope/gfxconf.h | 56 - demos/modules/audio/oscilloscope/gwinosc.c | 218 --- demos/modules/audio/oscilloscope/gwinosc.h | 98 -- demos/modules/audio/oscilloscope/main.c | 78 - .../modules/audio/oscilloscope/results_264x264.jpg | Bin 19615 -> 0 bytes demos/modules/audio/play-wave/allwrong.wav | Bin 29434 -> 0 bytes demos/modules/audio/play-wave/demo.mk | 3 - demos/modules/audio/play-wave/gfxconf.h | 59 - demos/modules/audio/play-wave/main.c | 193 -- demos/modules/audio/play-wave/romfs_allwrong.h | 1854 -------------------- demos/modules/audio/play-wave/romfs_files.h | 7 - demos/modules/gaudio/oscilloscope/demo.mk | 3 + demos/modules/gaudio/oscilloscope/gfxconf.h | 59 + demos/modules/gaudio/oscilloscope/gwinosc.c | 221 +++ demos/modules/gaudio/oscilloscope/gwinosc.h | 96 + demos/modules/gaudio/oscilloscope/main.c | 84 + .../gaudio/oscilloscope/results_264x264.jpg | Bin 0 -> 19615 bytes demos/modules/gaudio/play-wave/allwrong.wav | Bin 0 -> 29434 bytes demos/modules/gaudio/play-wave/demo.mk | 3 + demos/modules/gaudio/play-wave/gfxconf.h | 62 + demos/modules/gaudio/play-wave/main.c | 195 ++ demos/modules/gaudio/play-wave/romfs_allwrong.h | 1854 ++++++++++++++++++++ demos/modules/gaudio/play-wave/romfs_files.h | 7 + drivers/audio/Win32/driver.mk | 6 - drivers/audio/Win32/gaudin_lld.c | 170 -- drivers/audio/Win32/gaudin_lld_config.h | 64 - drivers/audio/Win32/gaudout_lld.c | 199 --- drivers/audio/Win32/gaudout_lld_config.h | 63 - drivers/audio/Win32/readme.txt | 10 - drivers/audio/gadc/driver.mk | 5 - drivers/audio/gadc/gaudin_lld.c | 62 - drivers/audio/gadc/gaudin_lld_board_template.h | 50 - drivers/audio/gadc/gaudin_lld_config.h | 59 - drivers/audio/gadc/readme.txt | 6 - drivers/gaudio/Win32/driver.mk | 6 + drivers/gaudio/Win32/gaudio_play_config.h | 63 + drivers/gaudio/Win32/gaudio_play_lld.c | 185 ++ drivers/gaudio/Win32/gaudio_record_config.h | 63 + drivers/gaudio/Win32/gaudio_record_lld.c | 187 ++ drivers/gaudio/Win32/readme.txt | 10 + drivers/gaudio/gadc/driver.mk | 5 + drivers/gaudio/gadc/gaudio_record_board_template.h | 50 + drivers/gaudio/gadc/gaudio_record_config.h | 59 + drivers/gaudio/gadc/gaudio_record_lld.c | 62 + drivers/gaudio/gadc/readme.txt | 6 + gfx.h | 35 +- gfx.mk | 3 +- gfxconf.example.h | 13 +- src/gaudin/driver.h | 102 -- src/gaudin/gaudin.c | 158 -- src/gaudin/sys_defs.h | 174 -- src/gaudin/sys_make.mk | 1 - src/gaudin/sys_options.h | 32 - src/gaudin/sys_rules.h | 30 - src/gaudio/driver_play.h | 126 ++ src/gaudio/driver_record.h | 108 ++ src/gaudio/gaudio.c | 318 ++++ src/gaudio/sys_defs.h | 340 ++++ src/gaudio/sys_make.mk | 1 + src/gaudio/sys_options.h | 44 + src/gaudio/sys_rules.h | 54 + src/gaudout/driver.h | 134 -- src/gaudout/gaudout.c | 169 -- src/gaudout/sys_defs.h | 217 --- src/gaudout/sys_make.mk | 1 - src/gaudout/sys_options.h | 32 - src/gaudout/sys_rules.h | 44 - src/gevent/sys_defs.h | 3 +- src/gfx.c | 22 +- 77 files changed, 4332 insertions(+), 4448 deletions(-) delete mode 100644 boards/base/Olimex-SAM7EX256-GE8/gaudin_lld_board.h create mode 100644 boards/base/Olimex-SAM7EX256-GE8/gaudio_record_board.h delete mode 100644 demos/modules/audio/oscilloscope/demo.mk delete mode 100644 demos/modules/audio/oscilloscope/gfxconf.h delete mode 100644 demos/modules/audio/oscilloscope/gwinosc.c delete mode 100644 demos/modules/audio/oscilloscope/gwinosc.h delete mode 100644 demos/modules/audio/oscilloscope/main.c delete mode 100644 demos/modules/audio/oscilloscope/results_264x264.jpg delete mode 100644 demos/modules/audio/play-wave/allwrong.wav delete mode 100644 demos/modules/audio/play-wave/demo.mk delete mode 100644 demos/modules/audio/play-wave/gfxconf.h delete mode 100644 demos/modules/audio/play-wave/main.c delete mode 100644 demos/modules/audio/play-wave/romfs_allwrong.h delete mode 100644 demos/modules/audio/play-wave/romfs_files.h create mode 100644 demos/modules/gaudio/oscilloscope/demo.mk create mode 100644 demos/modules/gaudio/oscilloscope/gfxconf.h create mode 100644 demos/modules/gaudio/oscilloscope/gwinosc.c create mode 100644 demos/modules/gaudio/oscilloscope/gwinosc.h create mode 100644 demos/modules/gaudio/oscilloscope/main.c create mode 100644 demos/modules/gaudio/oscilloscope/results_264x264.jpg create mode 100644 demos/modules/gaudio/play-wave/allwrong.wav create mode 100644 demos/modules/gaudio/play-wave/demo.mk create mode 100644 demos/modules/gaudio/play-wave/gfxconf.h create mode 100644 demos/modules/gaudio/play-wave/main.c create mode 100644 demos/modules/gaudio/play-wave/romfs_allwrong.h create mode 100644 demos/modules/gaudio/play-wave/romfs_files.h delete mode 100644 drivers/audio/Win32/driver.mk delete mode 100644 drivers/audio/Win32/gaudin_lld.c delete mode 100644 drivers/audio/Win32/gaudin_lld_config.h delete mode 100644 drivers/audio/Win32/gaudout_lld.c delete mode 100644 drivers/audio/Win32/gaudout_lld_config.h delete mode 100644 drivers/audio/Win32/readme.txt delete mode 100644 drivers/audio/gadc/driver.mk delete mode 100644 drivers/audio/gadc/gaudin_lld.c delete mode 100644 drivers/audio/gadc/gaudin_lld_board_template.h delete mode 100644 drivers/audio/gadc/gaudin_lld_config.h delete mode 100644 drivers/audio/gadc/readme.txt create mode 100644 drivers/gaudio/Win32/driver.mk create mode 100644 drivers/gaudio/Win32/gaudio_play_config.h create mode 100644 drivers/gaudio/Win32/gaudio_play_lld.c create mode 100644 drivers/gaudio/Win32/gaudio_record_config.h create mode 100644 drivers/gaudio/Win32/gaudio_record_lld.c create mode 100644 drivers/gaudio/Win32/readme.txt create mode 100644 drivers/gaudio/gadc/driver.mk create mode 100644 drivers/gaudio/gadc/gaudio_record_board_template.h create mode 100644 drivers/gaudio/gadc/gaudio_record_config.h create mode 100644 drivers/gaudio/gadc/gaudio_record_lld.c create mode 100644 drivers/gaudio/gadc/readme.txt delete mode 100644 src/gaudin/driver.h delete mode 100644 src/gaudin/gaudin.c delete mode 100644 src/gaudin/sys_defs.h delete mode 100644 src/gaudin/sys_make.mk delete mode 100644 src/gaudin/sys_options.h delete mode 100644 src/gaudin/sys_rules.h create mode 100644 src/gaudio/driver_play.h create mode 100644 src/gaudio/driver_record.h create mode 100644 src/gaudio/gaudio.c create mode 100644 src/gaudio/sys_defs.h create mode 100644 src/gaudio/sys_make.mk create mode 100644 src/gaudio/sys_options.h create mode 100644 src/gaudio/sys_rules.h delete mode 100644 src/gaudout/driver.h delete mode 100644 src/gaudout/gaudout.c delete mode 100644 src/gaudout/sys_defs.h delete mode 100644 src/gaudout/sys_make.mk delete mode 100644 src/gaudout/sys_options.h delete mode 100644 src/gaudout/sys_rules.h diff --git a/boards/base/Olimex-SAM7EX256-GE12/board.mk b/boards/base/Olimex-SAM7EX256-GE12/board.mk index a1eae818..2ef53142 100644 --- a/boards/base/Olimex-SAM7EX256-GE12/board.mk +++ b/boards/base/Olimex-SAM7EX256-GE12/board.mk @@ -5,4 +5,4 @@ include $(GFXLIB)/drivers/gdisp/Nokia6610GE12/gdisp_lld.mk include $(GFXLIB)/drivers/gadc/AT91SAM7/gadc_lld.mk include $(GFXLIB)/drivers/ginput/dial/GADC/ginput_lld.mk include $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld.mk -include $(GFXLIB)/drivers/audio/gadc/driver.mk +include $(GFXLIB)/drivers/gaudio/gadc/driver.mk diff --git a/boards/base/Olimex-SAM7EX256-GE12/readme.txt b/boards/base/Olimex-SAM7EX256-GE12/readme.txt index ebf1497a..83e32ee8 100644 --- a/boards/base/Olimex-SAM7EX256-GE12/readme.txt +++ b/boards/base/Olimex-SAM7EX256-GE12/readme.txt @@ -6,7 +6,7 @@ On this board uGFX currently supports: - GADC via the AT91SAM7 driver - GINPUT-dials via the GADC driver - GINPUT-toggles via the Pal driver - - GAUDIN via the GADC driver + - GAUDIO recording via the GADC driver Note there are two variants of this board - one with the GE8 display and one with the GE12 display. This one is for the GE12 display. diff --git a/boards/base/Olimex-SAM7EX256-GE8/board.mk b/boards/base/Olimex-SAM7EX256-GE8/board.mk index a60d9355..249cfc2d 100644 --- a/boards/base/Olimex-SAM7EX256-GE8/board.mk +++ b/boards/base/Olimex-SAM7EX256-GE8/board.mk @@ -5,4 +5,4 @@ include $(GFXLIB)/drivers/gdisp/Nokia6610GE8/gdisp_lld.mk include $(GFXLIB)/drivers/gadc/AT91SAM7/gadc_lld.mk include $(GFXLIB)/drivers/ginput/dial/GADC/ginput_lld.mk include $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld.mk -include $(GFXLIB)/drivers/audio/gadc/driver.mk +include $(GFXLIB)/drivers/gaudio/gadc/driver.mk diff --git a/boards/base/Olimex-SAM7EX256-GE8/gaudin_lld_board.h b/boards/base/Olimex-SAM7EX256-GE8/gaudin_lld_board.h deleted file mode 100644 index 632f0659..00000000 --- a/boards/base/Olimex-SAM7EX256-GE8/gaudin_lld_board.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file boards/base/Olimex-SAM7EX256-GE8/gaudin_lld_board.h - * @brief GAUDIN Driver board config file for the Olimex SAM7EX256 board - */ - -#ifndef _GAUDIN_LLD_BOARD_H -#define _GAUDIN_LLD_BOARD_H - -/*===========================================================================*/ -/* Audio inputs on this board */ -/*===========================================================================*/ - -#define GAUDIN_NUM_CHANNELS 1 - -/** - * The list of audio channels and their uses - */ -#define GAUDIN_MICROPHONE 0 - -#ifdef GAUDIN_LLD_IMPLEMENTATION - static uint32_t gaudin_lld_physdevs[GAUDIN_NUM_CHANNELS] = { - GADC_PHYSDEV_MICROPHONE, - }; -#endif - -#endif /* _GAUDIN_LLD_BOARD_H */ diff --git a/boards/base/Olimex-SAM7EX256-GE8/gaudio_record_board.h b/boards/base/Olimex-SAM7EX256-GE8/gaudio_record_board.h new file mode 100644 index 00000000..cdea5e06 --- /dev/null +++ b/boards/base/Olimex-SAM7EX256-GE8/gaudio_record_board.h @@ -0,0 +1,33 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file boards/base/Olimex-SAM7EX256-GE8/gaudio_record_board.h + * @brief GAUDIO Record Driver board config file for the Olimex SAM7EX256 board + */ + +#ifndef _GAUDIO_RECORD_BOARD_H +#define _GAUDIO_RECORD_BOARD_H + +/*===========================================================================*/ +/* Audio inputs on this board */ +/*===========================================================================*/ + +#define GAUDIO_RECORD_NUM_CHANNELS 1 + +/** + * The list of audio channels and their uses + */ +#define GAUDIO_RECORD_MICROPHONE 0 + +#ifdef GAUDIO_RECORD_IMPLEMENTATION + static uint32_t gaudin_lld_physdevs[GAUDIO_RECORD_NUM_CHANNELS] = { + GADC_PHYSDEV_MICROPHONE, + }; +#endif + +#endif /* _GAUDIO_RECORD_BOARD_H */ diff --git a/boards/base/Olimex-SAM7EX256-GE8/readme.txt b/boards/base/Olimex-SAM7EX256-GE8/readme.txt index 01b3f8b4..f613dee3 100644 --- a/boards/base/Olimex-SAM7EX256-GE8/readme.txt +++ b/boards/base/Olimex-SAM7EX256-GE8/readme.txt @@ -6,7 +6,7 @@ On this board uGFX currently supports: - GADC via the AT91SAM7 driver - GINPUT-dials via the GADC driver - GINPUT-toggles via the Pal driver - - GAUDIN via the GADC driver + - GAUDIO recording via the GADC driver Note there are two variants of this board - one with the GE8 display and one with the GE12 display. This one is for the GE8 display. diff --git a/boards/base/Win32/board.mk b/boards/base/Win32/board.mk index 5f624f3d..69d09100 100644 --- a/boards/base/Win32/board.mk +++ b/boards/base/Win32/board.mk @@ -2,4 +2,4 @@ GFXINC += $(GFXLIB)/boards/base/Win32 GFXSRC += include $(GFXLIB)/drivers/multiple/Win32/driver.mk -include $(GFXLIB)/drivers/audio/Win32/driver.mk +include $(GFXLIB)/drivers/gaudio/Win32/driver.mk diff --git a/demos/modules/audio/oscilloscope/demo.mk b/demos/modules/audio/oscilloscope/demo.mk deleted file mode 100644 index ffdf6980..00000000 --- a/demos/modules/audio/oscilloscope/demo.mk +++ /dev/null @@ -1,3 +0,0 @@ -DEMODIR = $(GFXLIB)/demos/modules/audio/oscilloscope -GFXINC += $(DEMODIR) -GFXSRC += $(DEMODIR)/main.c $(DEMODIR)/gwinosc.c diff --git a/demos/modules/audio/oscilloscope/gfxconf.h b/demos/modules/audio/oscilloscope/gfxconf.h deleted file mode 100644 index 8733268d..00000000 --- a/demos/modules/audio/oscilloscope/gfxconf.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu - * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Copy this file into your project directory and rename it as gfxconf.h - * Edit your copy to turn on the GFX features you want to use. - */ - -#ifndef _GFXCONF_H -#define _GFXCONF_H - -/* The operating system to use. One of these must be defined - preferably in your Makefile */ -//#define GFX_USE_OS_CHIBIOS FALSE -//#define GFX_USE_OS_WIN32 FALSE -//#define GFX_USE_OS_LINUX FALSE -//#define GFX_USE_OS_OSX FALSE - -/* GFX sub-systems to turn on */ -#define GFX_USE_GDISP TRUE -#define GFX_USE_GWIN TRUE -#define GFX_USE_GTIMER TRUE -//#define GFX_USE_GADC TRUE -#define GFX_USE_GAUDIN TRUE - -/* Features for the GDISP sub-system. */ -#define GDISP_NEED_VALIDATION TRUE -#define GDISP_NEED_CLIP TRUE -#define GDISP_NEED_MULTITHREAD TRUE - -#endif /* _GFXCONF_H */ diff --git a/demos/modules/audio/oscilloscope/gwinosc.c b/demos/modules/audio/oscilloscope/gwinosc.c deleted file mode 100644 index 43ef1385..00000000 --- a/demos/modules/audio/oscilloscope/gwinosc.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu - * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * --------------------------- Our Custom GWIN Oscilloscope --------------- - * - * This GWIN superset implements a simple audio oscilloscope using the GAUDIN module. - * - * It makes many assumptions, the most fundamental of which is that the audio device - * produces unsigned integer samples. - * - * The GMISC module with GMISC_NEED_ARRAYOPS could be used to process the samples more - * correctly if we were really building something generic. - */ - -#include "gfx.h" -#include "gwinosc.h" - -/* Include internal GWIN routines so we can build our own superset class */ -#include "src/gwin/class_gwin.h" - -/* The size of our dynamically allocated audio buffer */ -#define AUDIOBUFSZ 64*2 - -/* How many flat-line sample before we trigger */ -#define FLATLINE_SAMPLES 8 - -static void _destroy(GHandle gh) { - gaudinStop(); - if (((GScopeObject *)gh)->lastscopetrace) { - gfxFree(((GScopeObject *)gh)->lastscopetrace); - ((GScopeObject *)gh)->lastscopetrace = 0; - } - if (((GScopeObject *)gh)->audiobuf) { - gfxFree(((GScopeObject *)gh)->audiobuf); - ((GScopeObject *)gh)->audiobuf = 0; - } -} - -static const gwinVMT scopeVMT = { - "Scope", // The classname - sizeof(GScopeObject), // The object size - _destroy, // The destroy routine - 0, // The redraw routine - 0, // The after-clear routine -}; - -GHandle gwinGScopeCreate(GDisplay *g, GScopeObject *gs, GWindowInit *pInit, uint16_t channel, uint32_t frequency) { - /* Initialise the base class GWIN */ - if (!(gs = (GScopeObject *)_gwindowCreate(g, &gs->g, pInit, &scopeVMT, 0))) - return 0; - - /* Initialise the scope object members and allocate memory for buffers */ - gfxSemInit(&gs->bsem, 0, 1); - gs->nextx = 0; - if (!(gs->lastscopetrace = (coord_t *)gfxAlloc(gs->g.width * sizeof(coord_t)))) - return 0; - if (!(gs->audiobuf = (audin_sample_t *)gfxAlloc(AUDIOBUFSZ * sizeof(audin_sample_t)))) - return 0; -#if TRIGGER_METHOD == TRIGGER_POSITIVERAMP - gs->lasty = gs->g.height/2; -#elif TRIGGER_METHOD == TRIGGER_MINVALUE - gs->lasty = gs->g.height/2; - gs->scopemin = 0; -#endif - - /* Start the GADC high speed converter */ - gaudinInit(channel, frequency, gs->audiobuf, AUDIOBUFSZ, AUDIOBUFSZ/2); - gaudinSetBSem(&gs->bsem, &gs->myEvent); - gaudinStart(); - - gwinSetVisible((GHandle)gs, pInit->show); - return (GHandle)gs; -} - -void gwinScopeWaitForTrace(GHandle gh) { - #define gs ((GScopeObject *)(gh)) - int i; - coord_t x, y; - coord_t yoffset; - audin_sample_t *pa; - coord_t *pc; -#if TRIGGER_METHOD == TRIGGER_POSITIVERAMP - bool_t rdytrigger; - int flsamples; -#elif TRIGGER_METHOD == TRIGGER_MINVALUE - bool_t rdytrigger; - int flsamples; - coord_t scopemin; -#endif - - if (gh->vmt != &scopeVMT) - return; - - /* Wait for a set of audio conversions */ - gfxSemWait(&gs->bsem, TIME_INFINITE); - - /* Ensure we are drawing in the right area */ - #if GDISP_NEED_CLIP - gdispGSetClip(gh->display, gh->x, gh->y, gh->width, gh->height); - #endif - - yoffset = gh->height/2; - if (!(GAUDIN_SAMPLE_FORMAT & 1)) - yoffset += (1<nextx; - pc = gs->lastscopetrace+x; - pa = gs->myEvent.buffer; -#if TRIGGER_METHOD == TRIGGER_POSITIVERAMP - rdytrigger = FALSE; - flsamples = 0; -#elif TRIGGER_METHOD == TRIGGER_MINVALUE - rdytrigger = FALSE; - flsamples = 0; - scopemin = 0; -#endif - - for(i = gs->myEvent.count; i; i--) { - - /* Calculate the new scope value - re-scale using simple shifts for efficiency, re-center and y-invert */ - #if GAUDIN_BITS_PER_SAMPLE > SCOPE_Y_BITS - y = yoffset - (*pa++ >> (GAUDIN_BITS_PER_SAMPLE - SCOPE_Y_BITS)); - #else - y = yoffset - (*pa++ << (SCOPE_Y_BITS - GAUDIN_BITS_PER_SAMPLE)); - #endif - -#if TRIGGER_METHOD == TRIGGER_MINVALUE - /* Calculate the scopemin ready for the next trace */ - if (y > scopemin) - scopemin = y; -#endif - - /* Have we reached the end of a scope trace? */ - if (x >= gh->width) { - -#if TRIGGER_METHOD == TRIGGER_POSITIVERAMP || TRIGGER_METHOD == TRIGGER_MINVALUE - /* Handle triggering - we trigger on the next sample minimum (y value maximum) or a flat-line */ - - #if TRIGGER_METHOD == TRIGGER_MINVALUE - /* Arm when we reach the sample minimum (y value maximum) of the previous trace */ - if (!rdytrigger && y >= gs->scopemin) - rdytrigger = TRUE; - #endif - - if (y == gs->lasty) { - /* Trigger if we get too many flat-line samples regardless of the armed state */ - if (++flsamples < FLATLINE_SAMPLES) - continue; - flsamples = 0; - } else if (y > gs->lasty) { - gs->lasty = y; - flsamples = 0; - #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP - /* Arm the trigger when samples fall (y increases) ie. negative slope */ - rdytrigger = TRUE; - #endif - continue; - } else { - /* If the trigger is armed, Trigger when samples increases (y decreases) ie. positive slope */ - gs->lasty = y; - flsamples = 0; - if (!rdytrigger) - continue; - } - - /* Ready for a the next trigger cycle */ - rdytrigger = FALSE; -#endif - - /* Prepare for a scope trace */ - x = 0; - pc = gs->lastscopetrace; - } - - /* Clear the old scope pixel and then draw the new scope value */ - gdispGDrawPixel(gh->display, gh->x+x, gh->y+pc[0], gh->bgcolor); - gdispGDrawPixel(gh->display, gh->x+x, gh->y+y, gh->color); - - /* Save the value */ - *pc++ = y; - x++; - #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP || TRIGGER_METHOD == TRIGGER_MINVALUE - gs->lasty = y; - #endif - } - gs->nextx = x; -#if TRIGGER_METHOD == TRIGGER_MINVALUE - gs->scopemin = scopemin; -#endif - - #undef gs -} diff --git a/demos/modules/audio/oscilloscope/gwinosc.h b/demos/modules/audio/oscilloscope/gwinosc.h deleted file mode 100644 index 0efb403c..00000000 --- a/demos/modules/audio/oscilloscope/gwinosc.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu - * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _GWINOSC_H -#define _GWINOSC_H - -/** - * --------------------------- Our Custom GWIN Oscilloscope --------------- - * - * This GWIN superset implements a simple audio oscilloscope using the GAUDIN device. - * - * It makes many assumptions. - * - * The GMISC module with GMISC_NEED_ARRAYOPS could be used to process the samples more - * correctly if we were really building something generic. - */ - -/* The extent of scaling for our audio data - fixed scale at the moment */ -#ifndef SCOPE_Y_BITS - #define SCOPE_Y_BITS 8 // 8 bits = 0..255 -#endif - -/* Trigger methods */ -#define TRIGGER_NONE 0 /* No triggering */ -#define TRIGGER_POSITIVERAMP 1 /* Trigger on a positive going signal */ -#define TRIGGER_MINVALUE 2 /* Trigger on reaching the minimum value from the last scope */ - -/** - * Which trigger we want to use. - * Experiments suggests that TRIGGER_MINVALUE gives the best result - */ -#ifndef TRIGGER_METHOD - #define TRIGGER_METHOD TRIGGER_MINVALUE -#endif - -/* A scope window object. Treat it as a black box */ -typedef struct GScopeObject_t { - GWindowObject g; // Base Class - - coord_t *lastscopetrace; // To store last scope trace - gfxSem bsem; // We get signalled on this - audin_sample_t *audiobuf; // To store audio samples - GEventAudioIn myEvent; // Information on received samples - coord_t nextx; // Where we are up to -#if TRIGGER_METHOD == TRIGGER_POSITIVERAMP - coord_t lasty; // The last y value - used for trigger slope detection -#elif TRIGGER_METHOD == TRIGGER_MINVALUE - coord_t lasty; // The last y value - used for trigger slope detection - coord_t scopemin; // The last scopes minimum value -#endif - } GScopeObject; - -#ifdef __cplusplus -extern "C" { -#endif - - /** - * Create a scope window. - */ - GHandle gwinGScopeCreate(GDisplay *g, GScopeObject *gs, GWindowInit *pInit, uint16_t channel, uint32_t frequency); - #define gwinScopeCreate(gs,pI,ch,f) gwinGScopeCreate(GDISP,gs,pI,ch,f) - - /** - * Wait for a scope trace to be ready and then draw it. - */ - void gwinScopeWaitForTrace(GHandle gh); - -#ifdef __cplusplus -} -#endif - -#endif /* _GWINOSC_H */ diff --git a/demos/modules/audio/oscilloscope/main.c b/demos/modules/audio/oscilloscope/main.c deleted file mode 100644 index 32418450..00000000 --- a/demos/modules/audio/oscilloscope/main.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu - * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * This demo demonstrates the use of the GAUDIN module to read audio channel 0. - * The audio channel gets read to display a very simple oscilloscope. - * - * It also demonstrates how to write your own custom GWIN window type. - */ -#include "gfx.h" - -/* Include our custom gwin audio oscilloscope */ -#include "gwinosc.h" - -/* Specify our timing parameters */ -#define MY_AUDIO_FREQUENCY 4000 /* 4khz */ -#define MY_AUDIO_CHANNEL 0 /* Use channel 0 */ - -/* Data */ -static GScopeObject gScopeWindow; - -/* - * Application entry point. - */ -int main(void) { - GHandle ghScope; - coord_t swidth, sheight; - - gfxInit(); - - /* Get the screen dimensions */ - swidth = gdispGetWidth(); - sheight = gdispGetHeight(); - - /* Set up the scope window to fill the screen */ - { - GWindowInit wi; - - wi.show = TRUE; - wi.x = wi.y = 0; - wi.width = swidth; wi.height = sheight; - ghScope = gwinScopeCreate(&gScopeWindow, &wi, MY_AUDIO_CHANNEL, MY_AUDIO_FREQUENCY); - } - gwinSetBgColor(ghScope, White); - gwinSetColor(ghScope, Red); - gwinClear(ghScope); - - /* Just keep displaying the scope traces */ - while (TRUE) { - gwinScopeWaitForTrace(ghScope); - } -} diff --git a/demos/modules/audio/oscilloscope/results_264x264.jpg b/demos/modules/audio/oscilloscope/results_264x264.jpg deleted file mode 100644 index e459f7e1..00000000 Binary files a/demos/modules/audio/oscilloscope/results_264x264.jpg and /dev/null differ diff --git a/demos/modules/audio/play-wave/allwrong.wav b/demos/modules/audio/play-wave/allwrong.wav deleted file mode 100644 index e221ff2f..00000000 Binary files a/demos/modules/audio/play-wave/allwrong.wav and /dev/null differ diff --git a/demos/modules/audio/play-wave/demo.mk b/demos/modules/audio/play-wave/demo.mk deleted file mode 100644 index 242e57b5..00000000 --- a/demos/modules/audio/play-wave/demo.mk +++ /dev/null @@ -1,3 +0,0 @@ -DEMODIR = $(GFXLIB)/demos/modules/audio/play-wave -GFXINC += $(DEMODIR) -GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/audio/play-wave/gfxconf.h b/demos/modules/audio/play-wave/gfxconf.h deleted file mode 100644 index 1480b919..00000000 --- a/demos/modules/audio/play-wave/gfxconf.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu - * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Copy this file into your project directory and rename it as gfxconf.h - * Edit your copy to turn on the GFX features you want to use. - */ - -#ifndef _GFXCONF_H -#define _GFXCONF_H - -/* The operating system to use. One of these must be defined - preferably in your Makefile */ -//#define GFX_USE_OS_CHIBIOS FALSE -//#define GFX_USE_OS_WIN32 FALSE -//#define GFX_USE_OS_LINUX FALSE -//#define GFX_USE_OS_OSX FALSE - -/* GFX sub-systems to turn on */ -#define GFX_USE_GDISP TRUE -#define GFX_USE_GAUDOUT TRUE -#define GFX_USE_GFILE TRUE - -/* Features for the GDISP sub-system. */ -#define GDISP_NEED_VALIDATION TRUE -#define GDISP_NEED_TEXT TRUE - -/* GDISP fonts to include */ -#define GDISP_INCLUDE_FONT_UI2 TRUE - -/* Features for the GFILE sub-system */ -#define GFILE_NEED_ROMFS TRUE - -#endif /* _GFXCONF_H */ diff --git a/demos/modules/audio/play-wave/main.c b/demos/modules/audio/play-wave/main.c deleted file mode 100644 index e8cab254..00000000 --- a/demos/modules/audio/play-wave/main.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu - * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * This demo demonstrates the use of the GAUDOUT module to play a wave file. - * - */ -#include "gfx.h" - -/* Specify our timing parameters */ -#define MY_AUDIO_CHANNEL 0 /* Use channel 0 */ -#define MY_AUDIO_CHANNEL_IS_STEREO GAUDOUT_CHANNEL0_STEREO /* Is it stereo? */ - -// Storage for the wave header -static char whdr[32]; - - -/* - * Application entry point. - */ -int main(void) { - font_t font; - GFILE *f; - char *errmsg; - uint32_t toplay; - uint32_t frequency; - ArrayDataFormat datafmt; - uint32_t len; - GAudioData *paud; - - // Initialise everything - gfxInit(); - errmsg = 0; - - // Any font will do - font = gdispOpenFont("*"); - - // Allocate audio buffers - 4 x 512 byte buffers. You may need to increase this for slower cpu's. - if (!gaudioAllocBuffers(4, 512)) { - errmsg = "Err: No Memory"; - goto theend; - } - - // Open the wave file - if (!(f = gfileOpen("allwrong.wav", "r"))) { - errmsg = "Err: Open WAV"; - goto theend; - } - - // Read the wave header - if (gfileRead(f, whdr, 20) != 20) { - errmsg = "Err: Read hdr"; - goto theend; - } - - // Check the wave header - if (whdr[0] != 'R' || whdr[1] != 'I' || whdr[2] != 'F' || whdr[3] != 'F' // RIFF label - || whdr[8] != 'W' || whdr[9] != 'A' || whdr[10] != 'V' || whdr[11] != 'E' // WAVE label - || whdr[12] != 'f' || whdr[13] != 'm' || whdr[14] != 't' || whdr[15] != ' ' // fmt label - ) { - errmsg = "Err: Bad header"; - goto theend; - } - - // Read the fmt block - len = (((uint32_t)(uint8_t)whdr[16])<<0) | (((uint32_t)(uint8_t)whdr[17])<<8) - | (((uint32_t)(uint8_t)whdr[18])<<16) | (((uint32_t)(uint8_t)whdr[19])<<24); - if (len > sizeof(whdr) || len < 16) { - errmsg = "Err: Bad fmt len"; - goto theend; - } - if (gfileRead(f, whdr, len) != len) { - errmsg = "Err: Read fmt block"; - goto theend; - } - if (whdr[0] != 1 || whdr[1] != 0 // PCM format - || (whdr[14] != 8 && whdr[14] != 16) || whdr[15] != 0 // 8 or 16 bits per sample - ) { - errmsg = "Err: Bad fmt block"; - goto theend; - } - - // Check stereo/mono - #if MY_AUDIO_CHANNEL_IS_STEREO - if (whdr[2] != 2 || whdr[3] != 0) { - errmsg = "Err: Not stereo"; - goto theend; - } - #else - if (whdr[2] != 1 || whdr[3] != 0) { - errmsg = "Err: Not mono"; - goto theend; - } - #endif - - // Get the sample frequency (little endian format) and format - frequency = (((uint32_t)(uint8_t)whdr[4])<<0) | (((uint32_t)(uint8_t)whdr[5])<<8) - | (((uint32_t)(uint8_t)whdr[6])<<16) | (((uint32_t)(uint8_t)whdr[7])<<24); - datafmt = whdr[14] == 8 ? ARRAY_DATA_8BITUNSIGNED : ARRAY_DATA_16BITSIGNED; - - // Initialise the audio output device - if (!gaudioPlayInit(MY_AUDIO_CHANNEL, frequency, datafmt)) { - // For this demo we don't try and do any format conversions if the driver won't accept - // what we initially request. - errmsg = "Err: Bad format/freq"; - goto theend; - } - - // Get our current file position - len += 20; - - // Read RIFF blocks until we get to the data RIFF block (contains the audio) - while(TRUE) { - if (gfileRead(f, whdr, 8) != 8) { - errmsg = "Err: Read block"; - goto theend; - } - - // Get the block length (little endian format) - toplay = (((uint32_t)(uint8_t)whdr[4])<<0) | (((uint32_t)(uint8_t)whdr[5])<<8) - | (((uint32_t)(uint8_t)whdr[6])<<16) | (((uint32_t)(uint8_t)whdr[7])<<24); - - // Stop scanning when this is a data block - if (whdr[0] == 'd' && whdr[1] == 'a' && whdr[2] == 't' && whdr[3] == 'a') - break; - - // Seek to the next block header - len += toplay + 8; - if (!gfileSetPos(f, len)) { - errmsg = "Err: No data"; - goto theend; - } - } - - // Play the file - gdispDrawString(0, gdispGetHeight()/2, "Playing...", font, Yellow); - while(toplay) { - // Get a buffer to put the data into - paud = gaudioGetBuffer(TIME_INFINITE); // This should never fail as we are waiting forever - - // How much data can we put in - len = toplay > paud->size ? paud->size : toplay; - paud->len = len; - toplay -= len; - - // Read the data - if (gfileRead(f, paud+1, len) != len) { - errmsg = "Err: Read fail"; - goto theend; - } - - gaudioPlay(paud); - } - gfileClose(f); - - // Wait 3 seconds for the play to finish - FIX THIS - gfxSleepMilliseconds(3000); - gdispDrawString(0, gdispGetHeight()/2+10, "Done", font, Green); - - // The end -theend: - if (errmsg) - gdispDrawString(0, gdispGetHeight()/2, errmsg, font, Red); - - while(TRUE) - gfxSleepMilliseconds(1000); -} diff --git a/demos/modules/audio/play-wave/romfs_allwrong.h b/demos/modules/audio/play-wave/romfs_allwrong.h deleted file mode 100644 index a374bde3..00000000 --- a/demos/modules/audio/play-wave/romfs_allwrong.h +++ /dev/null @@ -1,1854 +0,0 @@ -/** - * This file was generated from "allwrong.wav" using... - * - * file2c -bcs allwrong.wav romfs_allwrong.h - * - */ -static const char allwrong[] = { - 0x52, 0x49, 0x46, 0x46, 0xF2, 0x72, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6D, 0x74, 0x20, - 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x2B, 0x00, 0x00, 0x11, 0x2B, 0x00, 0x00, - 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x66, 0x61, 0x63, 0x74, 0x04, 0x00, 0x00, 0x00, 0xC0, 0x72, - 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0xC0, 0x72, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, - 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, - 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, - 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, - 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, - 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, - 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x82, 0x82, 0x82, 0x80, 0x7F, - 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7D, 0x7E, 0x7C, 0x7D, 0x7D, 0x7E, 0x7E, 0x7D, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7C, 0x7C, 0x7B, 0x7A, 0x7A, - 0x7A, 0x7B, 0x7A, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, 0x7D, 0x7C, 0x7D, 0x7C, 0x7B, 0x7D, - 0x7E, 0x7E, 0x7E, 0x7E, 0x7C, 0x7B, 0x7A, 0x7A, 0x78, 0x77, 0x78, 0x78, 0x78, 0x79, 0x7A, 0x7A, - 0x7A, 0x7B, 0x7D, 0x7F, 0x7E, 0x7D, 0x7E, 0x7F, 0x7D, 0x7D, 0x7F, 0x81, 0x7F, 0x7B, 0x7D, 0x7E, - 0x7A, 0x77, 0x79, 0x7A, 0x76, 0x73, 0x78, 0x7F, 0x7E, 0x7E, 0x80, 0x7F, 0x7D, 0x7A, 0x7C, 0x7F, - 0x7E, 0x7F, 0x82, 0x86, 0x85, 0x87, 0x89, 0x8B, 0x87, 0x83, 0x84, 0x86, 0x84, 0x80, 0x7E, 0x7F, - 0x7D, 0x7B, 0x7B, 0x7C, 0x78, 0x74, 0x72, 0x70, 0x71, 0x74, 0x76, 0x74, 0x74, 0x78, 0x7C, 0x7E, - 0x80, 0x82, 0x82, 0x83, 0x86, 0x8B, 0x8F, 0x93, 0x98, 0x9E, 0xA0, 0xA0, 0x9D, 0x9C, 0x99, 0x92, - 0x8D, 0x8F, 0x94, 0x8D, 0x81, 0x7C, 0x7A, 0x70, 0x64, 0x61, 0x61, 0x59, 0x54, 0x5A, 0x64, 0x67, - 0x66, 0x66, 0x68, 0x6A, 0x6C, 0x73, 0x7C, 0x83, 0x89, 0x8F, 0x99, 0xA0, 0xA5, 0xAA, 0xAE, 0xAF, - 0xAE, 0xB0, 0xB3, 0xAD, 0xA5, 0xA1, 0x9D, 0x93, 0x8A, 0x85, 0x7C, 0x6E, 0x66, 0x64, 0x5D, 0x53, - 0x50, 0x50, 0x4A, 0x44, 0x46, 0x4D, 0x52, 0x56, 0x5B, 0x62, 0x6B, 0x76, 0x81, 0x89, 0x91, 0x98, - 0x9C, 0x9F, 0xA6, 0xB1, 0xB8, 0xB7, 0xB0, 0xAB, 0xA9, 0xA5, 0x9B, 0x90, 0x86, 0x7B, 0x71, 0x72, - 0x74, 0x6B, 0x5D, 0x59, 0x58, 0x4E, 0x46, 0x4B, 0x52, 0x4F, 0x4E, 0x59, 0x62, 0x63, 0x67, 0x73, - 0x7C, 0x80, 0x87, 0x92, 0x9C, 0xA2, 0xA6, 0xA9, 0xAC, 0xAD, 0xAA, 0xA4, 0x9C, 0x92, 0x88, 0x7F, - 0x76, 0x6C, 0x61, 0x57, 0x4B, 0x42, 0x40, 0x40, 0x3F, 0x41, 0x4B, 0x54, 0x59, 0x63, 0x74, 0x80, - 0x89, 0x9A, 0xAD, 0xB3, 0xB2, 0xB7, 0xBE, 0xBB, 0xB3, 0xB3, 0xB5, 0xAF, 0xA8, 0xA8, 0xA6, 0x9C, - 0x90, 0x89, 0x7D, 0x69, 0x56, 0x4F, 0x4E, 0x46, 0x3B, 0x3A, 0x40, 0x3F, 0x38, 0x3B, 0x47, 0x50, - 0x56, 0x67, 0x7E, 0x91, 0x9F, 0xAD, 0xBC, 0xC5, 0xCC, 0xCD, 0xC8, 0xC2, 0xBF, 0xB7, 0xA9, 0x9C, - 0x95, 0x88, 0x74, 0x67, 0x62, 0x5B, 0x4D, 0x45, 0x46, 0x4A, 0x4C, 0x52, 0x5E, 0x68, 0x6E, 0x77, - 0x88, 0x98, 0xA2, 0xAA, 0xB1, 0xB3, 0xB2, 0xBC, 0xCB, 0xCE, 0xC5, 0xC0, 0xBF, 0xB4, 0xA4, 0x9D, - 0x99, 0x88, 0x71, 0x67, 0x66, 0x5D, 0x4E, 0x46, 0x44, 0x3D, 0x36, 0x39, 0x46, 0x51, 0x5B, 0x69, - 0x7B, 0x88, 0x91, 0x99, 0x9F, 0x9E, 0x9A, 0x9B, 0x9A, 0x93, 0x89, 0x86, 0x85, 0x7C, 0x6F, 0x66, - 0x5E, 0x51, 0x42, 0x3D, 0x44, 0x49, 0x46, 0x46, 0x53, 0x62, 0x6C, 0x74, 0x84, 0x97, 0x9F, 0xA1, - 0xAD, 0xC4, 0xCF, 0xCA, 0xC9, 0xD0, 0xCC, 0xBD, 0xB7, 0xB9, 0xB1, 0x9D, 0x91, 0x8E, 0x89, 0x79, - 0x6A, 0x67, 0x67, 0x5E, 0x5B, 0x6A, 0x79, 0x7D, 0x81, 0x92, 0x9F, 0xA3, 0xA3, 0xA4, 0xA3, 0x9B, - 0x8E, 0x86, 0x84, 0x7B, 0x6D, 0x62, 0x58, 0x46, 0x38, 0x33, 0x2B, 0x22, 0x21, 0x21, 0x1A, 0x1A, - 0x26, 0x30, 0x32, 0x3E, 0x50, 0x5B, 0x5F, 0x6D, 0x86, 0x97, 0x97, 0x99, 0xAB, 0xB4, 0xAC, 0xA9, - 0xB9, 0xBC, 0xA9, 0x9B, 0x9D, 0x9A, 0x8B, 0x80, 0x7D, 0x80, 0x7E, 0x7C, 0x85, 0x97, 0xA1, 0xA5, - 0xB5, 0xC5, 0xCB, 0xCE, 0xDB, 0xDA, 0xD0, 0xCC, 0xCE, 0xC3, 0xB0, 0xA2, 0x94, 0x83, 0x6C, 0x5D, - 0x54, 0x4A, 0x32, 0x23, 0x28, 0x2D, 0x28, 0x2D, 0x3F, 0x43, 0x45, 0x4F, 0x62, 0x70, 0x7A, 0x79, - 0x76, 0x7F, 0x84, 0x7D, 0x7A, 0x88, 0x85, 0x74, 0x69, 0x70, 0x6E, 0x64, 0x5C, 0x58, 0x5C, 0x5C, - 0x62, 0x6F, 0x89, 0x99, 0xA7, 0xB9, 0xCB, 0xD2, 0xD8, 0xE1, 0xDD, 0xDF, 0xDD, 0xDA, 0xD4, 0xD2, - 0xC5, 0xB5, 0xB9, 0xB8, 0xA1, 0x87, 0x8B, 0x81, 0x66, 0x51, 0x5A, 0x5E, 0x4D, 0x3F, 0x48, 0x61, - 0x61, 0x54, 0x53, 0x69, 0x60, 0x4D, 0x57, 0x74, 0x76, 0x5D, 0x5A, 0x61, 0x5D, 0x43, 0x3C, 0x43, - 0x47, 0x31, 0x27, 0x46, 0x5C, 0x58, 0x57, 0x79, 0x89, 0x89, 0x91, 0xAB, 0xB3, 0xB1, 0xBA, 0xBE, - 0xC8, 0xCD, 0xD3, 0xC7, 0xC1, 0xB9, 0xB7, 0xAF, 0xA5, 0xA3, 0x9A, 0x88, 0x6C, 0x79, 0x8C, 0x81, - 0x68, 0x79, 0x8E, 0x80, 0x6A, 0x74, 0x97, 0x8D, 0x6C, 0x55, 0x67, 0x74, 0x5F, 0x40, 0x44, 0x50, - 0x3B, 0x27, 0x29, 0x44, 0x40, 0x38, 0x36, 0x37, 0x40, 0x5E, 0x75, 0x7B, 0x87, 0x8F, 0x9A, 0x90, - 0x97, 0xA7, 0xB8, 0xBC, 0xB2, 0xB3, 0xC1, 0xC5, 0xBD, 0xC9, 0xC4, 0xB9, 0xA7, 0x9F, 0xA3, 0xA2, - 0x9F, 0x98, 0x95, 0x94, 0x8F, 0x78, 0x77, 0x77, 0x74, 0x5C, 0x3E, 0x40, 0x41, 0x32, 0x25, 0x27, - 0x2E, 0x41, 0x3E, 0x42, 0x56, 0x70, 0x76, 0x60, 0x63, 0x6F, 0x6E, 0x6B, 0x76, 0x81, 0x97, 0x99, - 0x99, 0xAA, 0xB6, 0xBE, 0xB8, 0xBA, 0xBE, 0xB8, 0xAE, 0xB4, 0xB6, 0xBE, 0xBB, 0xB0, 0xB0, 0xAA, - 0xAC, 0xA4, 0x92, 0x90, 0x93, 0x7F, 0x71, 0x66, 0x65, 0x6A, 0x5B, 0x4E, 0x4B, 0x5D, 0x5F, 0x4F, - 0x53, 0x62, 0x54, 0x53, 0x59, 0x53, 0x5E, 0x64, 0x5F, 0x52, 0x56, 0x64, 0x6B, 0x6C, 0x77, 0x79, - 0x86, 0x96, 0x93, 0xA8, 0xBD, 0xC3, 0xBB, 0xBA, 0xC5, 0xCB, 0xBA, 0xB8, 0xBA, 0xAD, 0xAB, 0xA5, - 0xA6, 0xA4, 0xA2, 0x96, 0x82, 0x7C, 0x81, 0x6C, 0x5A, 0x59, 0x47, 0x49, 0x45, 0x36, 0x33, 0x44, - 0x47, 0x39, 0x3B, 0x54, 0x56, 0x42, 0x44, 0x4B, 0x60, 0x62, 0x5D, 0x73, 0x8C, 0x8D, 0x90, 0xA8, - 0xBF, 0xC4, 0xB5, 0xBD, 0xBB, 0xBE, 0xBA, 0xA6, 0xA0, 0xA8, 0xA9, 0x9A, 0x97, 0x9A, 0x97, 0x7A, - 0x7B, 0x7F, 0x7D, 0x8B, 0x78, 0x3F, 0x2A, 0x58, 0x5E, 0x31, 0x3C, 0x7F, 0x65, 0x22, 0x36, 0x72, - 0x7D, 0x55, 0x52, 0x6B, 0x6D, 0x52, 0x56, 0x7D, 0x99, 0x87, 0x83, 0xAD, 0xAD, 0x95, 0x8E, 0xAE, - 0xBF, 0xA1, 0x8A, 0xA0, 0xA6, 0x8C, 0x83, 0x93, 0xC2, 0xC3, 0x8B, 0x5C, 0x77, 0x8E, 0x62, 0x52, - 0x88, 0x90, 0x47, 0x32, 0x56, 0x78, 0x6E, 0x64, 0x72, 0x80, 0x77, 0x6B, 0x94, 0xCA, 0xC2, 0x8E, - 0x99, 0xBF, 0xBD, 0xAA, 0xBE, 0xD8, 0xBC, 0x96, 0x92, 0xAB, 0xB0, 0xA1, 0x84, 0x70, 0x5A, 0x3E, - 0x30, 0x3C, 0x50, 0x45, 0x34, 0x28, 0x2E, 0x36, 0x42, 0x60, 0x74, 0x5F, 0x50, 0x61, 0x62, 0x69, - 0x78, 0x8C, 0x8C, 0x79, 0x7B, 0xA1, 0xB9, 0xB7, 0xB3, 0xB7, 0xBD, 0xAB, 0xB1, 0xCF, 0xC8, 0x95, - 0x71, 0x75, 0x6D, 0x5A, 0x71, 0x99, 0x86, 0x69, 0x6E, 0x88, 0x98, 0xA5, 0xB3, 0xA8, 0x8B, 0x78, - 0x79, 0x88, 0x99, 0x8E, 0x87, 0x84, 0x7F, 0x80, 0x87, 0x9B, 0x9F, 0x83, 0x78, 0x8D, 0x91, 0x8F, - 0x8F, 0x83, 0x72, 0x73, 0x8C, 0x83, 0x4C, 0x32, 0x49, 0x3D, 0x1B, 0x40, 0x8A, 0x82, 0x4F, 0x5C, - 0x83, 0x82, 0x6E, 0x75, 0x8C, 0x8B, 0x6E, 0x5E, 0x75, 0x90, 0x88, 0x75, 0x81, 0x90, 0x81, 0x74, - 0x92, 0xB1, 0x9B, 0x7A, 0x78, 0x69, 0x54, 0x7B, 0xAF, 0x99, 0x63, 0x5C, 0x60, 0x47, 0x4E, 0x91, - 0xC2, 0xA8, 0x79, 0x73, 0x7D, 0x76, 0x82, 0xA7, 0xB6, 0x96, 0x64, 0x55, 0x6C, 0x7E, 0x85, 0x95, - 0xA4, 0x9F, 0x89, 0x7C, 0x97, 0xAB, 0x8D, 0x71, 0x74, 0x82, 0x96, 0x94, 0x7B, 0x6D, 0x58, 0x36, - 0x38, 0x70, 0xA4, 0x98, 0x74, 0x71, 0x66, 0x4F, 0x58, 0x78, 0x99, 0x95, 0x6A, 0x5C, 0x5F, 0x5A, - 0x71, 0x95, 0xAC, 0xB6, 0xA6, 0x8F, 0x87, 0x8B, 0x9B, 0xB2, 0xCB, 0xCD, 0x9F, 0x72, 0x65, 0x4E, - 0x2F, 0x3C, 0x73, 0x91, 0x78, 0x64, 0x6F, 0x71, 0x69, 0x7B, 0xA4, 0xB7, 0x8E, 0x59, 0x53, 0x58, - 0x54, 0x71, 0xA6, 0xC5, 0xBA, 0x97, 0x8A, 0x95, 0x91, 0x94, 0xB7, 0xD6, 0xC7, 0x8E, 0x66, 0x58, - 0x31, 0x1D, 0x4E, 0x86, 0x96, 0x83, 0x79, 0x84, 0x72, 0x61, 0x7C, 0x96, 0x9C, 0x80, 0x4F, 0x4E, - 0x58, 0x55, 0x7C, 0xA6, 0xB3, 0xB7, 0xA4, 0x8C, 0x7E, 0x7B, 0x98, 0xC4, 0xDC, 0xCC, 0xA0, 0x7B, - 0x4E, 0x2A, 0x4D, 0x8F, 0xA9, 0xA5, 0x9A, 0x87, 0x65, 0x58, 0x78, 0xA2, 0xB6, 0xAD, 0x90, 0x79, - 0x61, 0x4C, 0x5A, 0x85, 0xA6, 0x9F, 0x86, 0x74, 0x58, 0x49, 0x68, 0x98, 0xB6, 0xA5, 0x84, 0x6D, - 0x3C, 0x13, 0x2B, 0x5D, 0x7C, 0x84, 0x77, 0x57, 0x33, 0x31, 0x47, 0x66, 0x95, 0xA0, 0x80, 0x69, - 0x4A, 0x3B, 0x62, 0x91, 0xB1, 0xB7, 0xA8, 0x9F, 0x7C, 0x59, 0x72, 0xA2, 0xC2, 0xCA, 0xB6, 0x9F, - 0x72, 0x36, 0x30, 0x5D, 0x8A, 0x93, 0x85, 0x8C, 0x84, 0x51, 0x3E, 0x62, 0x89, 0x9B, 0x9B, 0x99, - 0x87, 0x5A, 0x42, 0x5E, 0x91, 0xB3, 0xB7, 0xB0, 0x9E, 0x74, 0x5D, 0x83, 0xBB, 0xC2, 0xB2, 0xAD, - 0x91, 0x58, 0x3A, 0x4A, 0x6C, 0x89, 0x99, 0xA5, 0x9D, 0x6D, 0x49, 0x56, 0x76, 0x90, 0x9A, 0x9B, - 0x95, 0x70, 0x4E, 0x5C, 0x7B, 0x8B, 0x9A, 0xAF, 0xB2, 0x97, 0x8C, 0x93, 0x88, 0x89, 0x98, 0x90, - 0x7E, 0x76, 0x73, 0x6C, 0x6B, 0x80, 0x8F, 0x82, 0x7B, 0x85, 0x86, 0x7B, 0x76, 0x79, 0x74, 0x72, - 0x77, 0x76, 0x7E, 0x8A, 0x81, 0x84, 0x91, 0x8A, 0x86, 0x98, 0xB0, 0xB0, 0x9E, 0xA0, 0x95, 0x62, - 0x49, 0x61, 0x7E, 0x8C, 0x8A, 0x87, 0x82, 0x63, 0x3E, 0x43, 0x69, 0x77, 0x6B, 0x72, 0x7C, 0x6B, - 0x5A, 0x6A, 0x8B, 0x99, 0x98, 0x9B, 0x96, 0x81, 0x7C, 0x95, 0xA1, 0x96, 0xA0, 0xA5, 0x7C, 0x5F, - 0x67, 0x6A, 0x6F, 0x84, 0x95, 0x9A, 0x8A, 0x6D, 0x57, 0x56, 0x66, 0x6D, 0x7F, 0xA0, 0x96, 0x7D, - 0x86, 0x93, 0x91, 0x8D, 0x97, 0xA5, 0xA3, 0xA4, 0xA1, 0x8F, 0x87, 0x70, 0x55, 0x68, 0x84, 0x89, - 0x95, 0x9F, 0x8E, 0x6C, 0x53, 0x51, 0x57, 0x61, 0x6D, 0x6A, 0x6B, 0x6F, 0x5E, 0x4D, 0x5B, 0x79, - 0x89, 0x8F, 0x9D, 0x92, 0x78, 0x82, 0x95, 0x93, 0x95, 0xA0, 0x95, 0x71, 0x65, 0x6F, 0x6D, 0x6D, - 0x72, 0x75, 0x76, 0x6A, 0x5A, 0x51, 0x4A, 0x4E, 0x4D, 0x4D, 0x6D, 0x83, 0x81, 0x8D, 0x9F, 0xA5, - 0x9F, 0x89, 0x75, 0x79, 0x94, 0xA2, 0xA1, 0xBE, 0xC8, 0x8A, 0x5D, 0x63, 0x65, 0x63, 0x75, 0x90, - 0x8C, 0x6D, 0x59, 0x39, 0x2A, 0x52, 0x6C, 0x6B, 0x83, 0xA3, 0xA3, 0x88, 0x89, 0xA9, 0xA4, 0x86, - 0x92, 0xB9, 0xC4, 0xA7, 0x94, 0x93, 0x7A, 0x6A, 0x88, 0xA7, 0xBD, 0xD9, 0xD9, 0xC0, 0x9B, 0x65, - 0x3B, 0x35, 0x51, 0x70, 0x7D, 0x90, 0x9D, 0x87, 0x71, 0x77, 0x87, 0x8F, 0x95, 0xA3, 0xAD, 0xAF, - 0xA6, 0x94, 0x89, 0x84, 0x77, 0x70, 0x84, 0x94, 0x8B, 0x87, 0x8A, 0x78, 0x56, 0x42, 0x3E, 0x3D, - 0x4D, 0x5B, 0x52, 0x4F, 0x5D, 0x6D, 0x7B, 0x87, 0x9D, 0xAB, 0x93, 0x6A, 0x57, 0x6A, 0x82, 0x7A, - 0x86, 0xAA, 0x9B, 0x71, 0x73, 0x7E, 0x6B, 0x61, 0x7C, 0x93, 0x88, 0x76, 0x6D, 0x59, 0x43, 0x47, - 0x4D, 0x42, 0x55, 0x82, 0x90, 0x8E, 0x9B, 0x9E, 0x91, 0x8C, 0x92, 0x90, 0x83, 0x85, 0x84, 0x69, - 0x69, 0x82, 0x8C, 0x9D, 0xB5, 0xC2, 0xB1, 0x90, 0x80, 0x69, 0x47, 0x40, 0x4F, 0x61, 0x75, 0x87, - 0x93, 0x90, 0x8E, 0x91, 0x87, 0x86, 0x9F, 0xC0, 0xC9, 0xB9, 0xB5, 0xA8, 0x7A, 0x67, 0x76, 0x75, - 0x7D, 0xA1, 0xB6, 0xA4, 0x87, 0x82, 0x68, 0x2C, 0x27, 0x4A, 0x4B, 0x55, 0x77, 0x89, 0x8B, 0x91, - 0x9A, 0x87, 0x61, 0x4F, 0x56, 0x73, 0x9B, 0xB4, 0xB9, 0xBD, 0xAF, 0x7D, 0x5A, 0x5B, 0x5C, 0x5F, - 0x76, 0x95, 0x93, 0x71, 0x6E, 0x67, 0x32, 0x24, 0x44, 0x47, 0x4D, 0x76, 0x93, 0x91, 0x94, 0xA6, - 0x94, 0x73, 0x83, 0x89, 0x69, 0x72, 0x7E, 0x65, 0x74, 0x9C, 0x9A, 0x8F, 0xA5, 0xB7, 0x93, 0x77, - 0x82, 0x68, 0x42, 0x57, 0x68, 0x5C, 0x68, 0x7F, 0x85, 0x89, 0x88, 0x84, 0x89, 0x9B, 0xAC, 0xA8, - 0xAC, 0xBC, 0xA5, 0x8D, 0x9A, 0x93, 0x88, 0x9D, 0xB7, 0xBE, 0xB5, 0xB3, 0xAA, 0x87, 0x6C, 0x57, - 0x40, 0x4C, 0x6F, 0x80, 0x8A, 0x9B, 0xA7, 0x99, 0x7D, 0x72, 0x71, 0x6D, 0x7A, 0x93, 0x9F, 0xA8, - 0xA5, 0x98, 0x8D, 0x7E, 0x74, 0x77, 0x83, 0x8A, 0x7F, 0x78, 0x7B, 0x69, 0x4C, 0x39, 0x29, 0x25, - 0x3D, 0x5E, 0x73, 0x8C, 0xA9, 0xAB, 0x93, 0x85, 0x7C, 0x5D, 0x4B, 0x60, 0x73, 0x71, 0x75, 0x8F, - 0x98, 0x7F, 0x7E, 0x91, 0x7F, 0x62, 0x62, 0x74, 0x69, 0x4D, 0x56, 0x55, 0x34, 0x3A, 0x58, 0x68, - 0x7D, 0x9B, 0xAF, 0xB0, 0xAD, 0xAE, 0x92, 0x6F, 0x65, 0x50, 0x43, 0x5D, 0x73, 0x83, 0xA6, 0xBB, - 0xB5, 0xA6, 0x9B, 0x81, 0x59, 0x54, 0x5F, 0x59, 0x64, 0x7D, 0x8B, 0x8E, 0x8F, 0x8C, 0x7A, 0x69, - 0x71, 0x81, 0x94, 0xAF, 0xC3, 0xD0, 0xCC, 0xB9, 0xA9, 0x91, 0x70, 0x69, 0x7D, 0x8D, 0x92, 0x96, - 0x9F, 0xA4, 0x90, 0x73, 0x61, 0x4D, 0x42, 0x4D, 0x66, 0x84, 0x99, 0xAA, 0xB8, 0xA9, 0x8B, 0x7C, - 0x70, 0x63, 0x6D, 0x80, 0x88, 0x8E, 0x93, 0x9B, 0x95, 0x79, 0x6D, 0x70, 0x69, 0x60, 0x61, 0x72, - 0x7B, 0x69, 0x5D, 0x5E, 0x49, 0x34, 0x41, 0x5F, 0x7A, 0x8E, 0x9B, 0xA9, 0xB0, 0xA5, 0x90, 0x77, - 0x5E, 0x44, 0x39, 0x51, 0x6F, 0x83, 0xA1, 0xBF, 0xC1, 0xAB, 0x99, 0x83, 0x57, 0x3D, 0x41, 0x48, - 0x5B, 0x73, 0x86, 0x8F, 0x85, 0x81, 0x7A, 0x61, 0x5E, 0x79, 0x91, 0x9D, 0xAA, 0xC2, 0xBF, 0x99, - 0x95, 0xA0, 0x7E, 0x6A, 0x89, 0x98, 0x8A, 0x8E, 0xA5, 0x9F, 0x81, 0x7D, 0x75, 0x59, 0x63, 0x7E, - 0x7F, 0x84, 0xA4, 0xB3, 0x9D, 0x91, 0x9D, 0x97, 0x83, 0x86, 0x99, 0x95, 0x88, 0x90, 0x9D, 0x99, - 0x8B, 0x83, 0x85, 0x79, 0x6D, 0x6F, 0x6E, 0x68, 0x63, 0x64, 0x62, 0x52, 0x4D, 0x59, 0x62, 0x74, - 0x8F, 0x99, 0x95, 0x99, 0xA5, 0x97, 0x77, 0x66, 0x4E, 0x2C, 0x38, 0x5D, 0x67, 0x79, 0xA4, 0xB4, - 0x96, 0x82, 0x88, 0x65, 0x33, 0x36, 0x37, 0x27, 0x39, 0x57, 0x65, 0x6A, 0x77, 0x7E, 0x69, 0x5D, - 0x6E, 0x79, 0x81, 0x94, 0xAB, 0xB8, 0xA5, 0x8B, 0x8B, 0x7C, 0x59, 0x60, 0x7F, 0x77, 0x68, 0x86, - 0xA1, 0x86, 0x70, 0x81, 0x74, 0x52, 0x5B, 0x73, 0x77, 0x7E, 0x9B, 0xAD, 0xA2, 0x9F, 0xA7, 0x9B, - 0x8E, 0x95, 0xA1, 0x9F, 0x92, 0x97, 0xA8, 0xA3, 0x9C, 0xB2, 0xBA, 0x9E, 0x89, 0x8E, 0x8D, 0x74, - 0x68, 0x79, 0x79, 0x64, 0x61, 0x68, 0x6A, 0x76, 0x89, 0x97, 0xA5, 0xB4, 0xBB, 0xB0, 0x9E, 0x92, - 0x7F, 0x67, 0x6D, 0x7E, 0x7E, 0x87, 0x9E, 0xAD, 0xAA, 0x9A, 0x96, 0x84, 0x59, 0x48, 0x48, 0x39, - 0x35, 0x4B, 0x60, 0x62, 0x68, 0x82, 0x82, 0x6A, 0x6B, 0x74, 0x70, 0x74, 0x87, 0x98, 0x9F, 0xA1, - 0x95, 0x79, 0x69, 0x60, 0x44, 0x3D, 0x57, 0x6A, 0x6E, 0x79, 0x91, 0x97, 0x7D, 0x77, 0x79, 0x5C, - 0x46, 0x55, 0x6C, 0x7B, 0x8E, 0xA8, 0xAE, 0xA0, 0x9C, 0x97, 0x7D, 0x67, 0x70, 0x83, 0x88, 0x8B, - 0x9E, 0xB4, 0xAC, 0x99, 0x9C, 0x8F, 0x6A, 0x64, 0x71, 0x69, 0x5F, 0x6D, 0x7B, 0x78, 0x7E, 0x8C, - 0x83, 0x7B, 0x91, 0xA1, 0x9D, 0xA5, 0xB2, 0xBA, 0xB8, 0xA7, 0x9A, 0x93, 0x7A, 0x5C, 0x5A, 0x67, - 0x67, 0x75, 0xA2, 0xAD, 0x95, 0x96, 0x94, 0x6D, 0x50, 0x51, 0x47, 0x3D, 0x57, 0x73, 0x6C, 0x71, - 0x8C, 0x86, 0x6D, 0x6B, 0x67, 0x5A, 0x65, 0x7F, 0x90, 0x9B, 0xA6, 0xA3, 0x8E, 0x80, 0x71, 0x4F, - 0x42, 0x53, 0x58, 0x56, 0x5B, 0x62, 0x60, 0x5B, 0x5E, 0x5E, 0x58, 0x5C, 0x61, 0x64, 0x71, 0x7F, - 0x8E, 0x9E, 0x9E, 0x93, 0x95, 0x97, 0x84, 0x7A, 0x93, 0xA1, 0x8C, 0x92, 0xAD, 0x97, 0x72, 0x80, - 0x8D, 0x61, 0x46, 0x63, 0x64, 0x3F, 0x4D, 0x79, 0x78, 0x6A, 0x80, 0x90, 0x83, 0x8A, 0xA4, 0xA2, - 0x97, 0xA9, 0xBC, 0xB5, 0xB1, 0xBB, 0xB4, 0xA0, 0x99, 0x9A, 0x92, 0x89, 0x9C, 0xB7, 0xB6, 0xAF, - 0xB4, 0xAF, 0x98, 0x82, 0x79, 0x6B, 0x59, 0x58, 0x5C, 0x56, 0x5F, 0x76, 0x85, 0x90, 0x99, 0x97, - 0x93, 0x99, 0xA0, 0x96, 0x94, 0xA9, 0xA7, 0x8E, 0x91, 0x99, 0x7F, 0x6C, 0x7D, 0x7A, 0x51, 0x47, - 0x5C, 0x4D, 0x37, 0x4B, 0x5A, 0x44, 0x3D, 0x56, 0x5B, 0x53, 0x6A, 0x87, 0x89, 0x8A, 0x90, 0x87, - 0x82, 0x8D, 0x88, 0x78, 0x83, 0x90, 0x77, 0x6C, 0x8B, 0x8A, 0x6A, 0x7A, 0x99, 0x7A, 0x58, 0x6C, - 0x6C, 0x42, 0x42, 0x60, 0x52, 0x3C, 0x51, 0x63, 0x5C, 0x63, 0x7B, 0x87, 0x8E, 0x9A, 0xA8, 0xB8, - 0xB8, 0xAC, 0xB0, 0xB7, 0xA1, 0x8A, 0x8C, 0x86, 0x73, 0x7D, 0x97, 0x97, 0x91, 0x9A, 0x94, 0x7C, - 0x6D, 0x6A, 0x60, 0x56, 0x5B, 0x69, 0x70, 0x79, 0x90, 0xA1, 0x9F, 0x9E, 0xA2, 0x9F, 0xA1, 0xAE, - 0xAC, 0xA6, 0xB5, 0xB8, 0x9D, 0x90, 0x93, 0x76, 0x55, 0x5A, 0x5F, 0x4E, 0x51, 0x67, 0x66, 0x5E, - 0x6A, 0x71, 0x63, 0x58, 0x5A, 0x5C, 0x5B, 0x61, 0x72, 0x85, 0x94, 0x9E, 0x9F, 0x9A, 0x9E, 0xA2, - 0x91, 0x85, 0x95, 0x92, 0x70, 0x68, 0x74, 0x5B, 0x42, 0x56, 0x65, 0x50, 0x51, 0x68, 0x61, 0x4D, - 0x59, 0x6A, 0x5A, 0x4B, 0x57, 0x65, 0x60, 0x64, 0x7C, 0x92, 0x9E, 0xAE, 0xBE, 0xC0, 0xC1, 0xC3, - 0xB4, 0xA4, 0xA3, 0x96, 0x7A, 0x6D, 0x67, 0x5C, 0x63, 0x79, 0x81, 0x86, 0x97, 0x9E, 0x93, 0x8D, - 0x8D, 0x82, 0x73, 0x6F, 0x74, 0x77, 0x78, 0x86, 0x9E, 0xAA, 0xAF, 0xBA, 0xB7, 0xAA, 0xB7, 0xCA, - 0xBC, 0xB4, 0xCE, 0xCA, 0xA3, 0x9D, 0x9F, 0x7A, 0x63, 0x73, 0x6E, 0x53, 0x52, 0x58, 0x48, 0x40, - 0x52, 0x5C, 0x56, 0x58, 0x65, 0x65, 0x5E, 0x6C, 0x8C, 0x9B, 0xA1, 0xBA, 0xC9, 0xB3, 0xA8, 0xB4, - 0x9D, 0x74, 0x73, 0x72, 0x54, 0x4C, 0x59, 0x4C, 0x40, 0x54, 0x63, 0x62, 0x67, 0x6D, 0x68, 0x63, - 0x5E, 0x53, 0x46, 0x3F, 0x3E, 0x40, 0x45, 0x55, 0x69, 0x72, 0x77, 0x88, 0x94, 0x8D, 0x93, 0xA6, - 0xA3, 0x9B, 0xA8, 0xA5, 0x89, 0x7D, 0x7C, 0x6C, 0x5F, 0x5F, 0x62, 0x65, 0x67, 0x68, 0x70, 0x76, - 0x74, 0x75, 0x77, 0x6F, 0x6C, 0x71, 0x70, 0x72, 0x82, 0x8F, 0x93, 0xA1, 0xB5, 0xB1, 0xA7, 0xB8, - 0xCB, 0xC4, 0xBE, 0xCD, 0xD8, 0xCA, 0xB7, 0xAE, 0x9C, 0x77, 0x5E, 0x58, 0x46, 0x37, 0x42, 0x4C, - 0x4C, 0x61, 0x7A, 0x7B, 0x7A, 0x89, 0x8F, 0x84, 0x7F, 0x82, 0x83, 0x88, 0x9A, 0xAC, 0xB3, 0xBB, - 0xCB, 0xD3, 0xC8, 0xB6, 0xAD, 0xA1, 0x82, 0x6A, 0x5E, 0x43, 0x2A, 0x2E, 0x31, 0x2B, 0x3E, 0x5C, - 0x66, 0x6F, 0x78, 0x72, 0x6C, 0x6D, 0x64, 0x5A, 0x5B, 0x58, 0x50, 0x54, 0x60, 0x69, 0x78, 0x89, - 0x94, 0xAA, 0xC3, 0xC4, 0xB8, 0xBB, 0xB4, 0x99, 0x81, 0x6F, 0x59, 0x4B, 0x48, 0x47, 0x4C, 0x56, - 0x63, 0x71, 0x78, 0x7B, 0x81, 0x79, 0x6C, 0x72, 0x77, 0x6B, 0x69, 0x7A, 0x83, 0x87, 0x96, 0xAA, - 0xB5, 0xB9, 0xC6, 0xD8, 0xE3, 0xE3, 0xE1, 0xDE, 0xD1, 0xB4, 0x95, 0x7D, 0x64, 0x4A, 0x3B, 0x39, - 0x41, 0x4D, 0x57, 0x65, 0x7A, 0x86, 0x86, 0x86, 0x88, 0x89, 0x88, 0x82, 0x7F, 0x83, 0x84, 0x8E, - 0xA1, 0xB1, 0xBD, 0xCA, 0xD0, 0xCF, 0xC7, 0xB2, 0x9B, 0x8A, 0x73, 0x57, 0x3F, 0x2C, 0x24, 0x27, - 0x2C, 0x36, 0x4A, 0x60, 0x6D, 0x76, 0x80, 0x81, 0x74, 0x6C, 0x67, 0x54, 0x40, 0x3D, 0x3C, 0x38, - 0x41, 0x55, 0x66, 0x74, 0x84, 0x96, 0xA7, 0xAF, 0xAF, 0xA9, 0xA1, 0x94, 0x7D, 0x64, 0x5A, 0x55, - 0x4E, 0x4E, 0x55, 0x5E, 0x68, 0x6E, 0x75, 0x81, 0x84, 0x80, 0x7F, 0x76, 0x66, 0x60, 0x5F, 0x5D, - 0x64, 0x72, 0x7A, 0x84, 0x97, 0xAA, 0xB4, 0xBB, 0xCE, 0xE0, 0xDC, 0xD3, 0xD7, 0xD5, 0xC0, 0xAA, - 0x99, 0x84, 0x6A, 0x54, 0x47, 0x46, 0x4C, 0x50, 0x58, 0x6E, 0x7E, 0x7B, 0x7F, 0x92, 0x95, 0x8B, - 0x8D, 0x94, 0x91, 0x8E, 0x92, 0xA0, 0xAD, 0xB2, 0xBC, 0xC9, 0xC7, 0xC3, 0xC8, 0xBF, 0xAE, 0xA3, - 0x8E, 0x6F, 0x58, 0x46, 0x37, 0x2D, 0x2B, 0x31, 0x3F, 0x51, 0x64, 0x75, 0x7D, 0x7D, 0x7B, 0x78, - 0x70, 0x61, 0x56, 0x54, 0x52, 0x50, 0x52, 0x5D, 0x6E, 0x7B, 0x85, 0x99, 0xAC, 0xB4, 0xBD, 0xC5, - 0xBB, 0xAC, 0xA1, 0x90, 0x7B, 0x68, 0x58, 0x4D, 0x44, 0x3C, 0x41, 0x4E, 0x58, 0x62, 0x6A, 0x6C, - 0x68, 0x61, 0x5E, 0x62, 0x63, 0x61, 0x6A, 0x78, 0x80, 0x8E, 0xA1, 0xB3, 0xC1, 0xCC, 0xD6, 0xDE, - 0xDF, 0xDB, 0xCF, 0xBD, 0xAC, 0x9B, 0x80, 0x67, 0x58, 0x4E, 0x42, 0x3C, 0x44, 0x52, 0x5A, 0x60, - 0x6D, 0x76, 0x74, 0x72, 0x74, 0x79, 0x7D, 0x7A, 0x7D, 0x8A, 0x91, 0x98, 0xAB, 0xBA, 0xC1, 0xCB, - 0xD0, 0xCD, 0xC9, 0xC2, 0xB5, 0xA5, 0x90, 0x7C, 0x66, 0x4B, 0x36, 0x2F, 0x2A, 0x24, 0x2A, 0x39, - 0x46, 0x4C, 0x55, 0x63, 0x6B, 0x68, 0x64, 0x63, 0x62, 0x5F, 0x5C, 0x63, 0x70, 0x76, 0x7B, 0x8A, - 0x99, 0xA5, 0xB3, 0xBB, 0xB9, 0xB7, 0xB7, 0xB0, 0x9D, 0x8C, 0x86, 0x77, 0x5E, 0x4C, 0x3F, 0x30, - 0x29, 0x27, 0x26, 0x32, 0x45, 0x53, 0x63, 0x76, 0x84, 0x8D, 0x93, 0x98, 0xA2, 0xA7, 0xA0, 0xA2, - 0xA9, 0xA4, 0xA1, 0xB0, 0xBF, 0xBF, 0xC0, 0xC5, 0xC2, 0xB6, 0xAC, 0xA0, 0x8C, 0x77, 0x64, 0x56, - 0x4B, 0x40, 0x3F, 0x49, 0x4E, 0x54, 0x6B, 0x81, 0x8B, 0x9C, 0xAD, 0xB0, 0xB1, 0xB2, 0xAD, 0xA6, - 0x9F, 0x96, 0x90, 0x8A, 0x85, 0x89, 0x95, 0xA1, 0xA9, 0xAE, 0xB3, 0xB2, 0xA8, 0x9C, 0x92, 0x89, - 0x7C, 0x6C, 0x5D, 0x54, 0x50, 0x4B, 0x47, 0x48, 0x51, 0x5B, 0x5E, 0x60, 0x66, 0x6A, 0x65, 0x62, - 0x62, 0x5E, 0x5B, 0x60, 0x66, 0x6B, 0x71, 0x7A, 0x84, 0x90, 0xA2, 0xB2, 0xB8, 0xBC, 0xC1, 0xBB, - 0xA7, 0x95, 0x89, 0x81, 0x77, 0x69, 0x64, 0x65, 0x5E, 0x4D, 0x3D, 0x39, 0x37, 0x2F, 0x2C, 0x3C, - 0x4D, 0x4D, 0x50, 0x64, 0x79, 0x85, 0x89, 0x93, 0xA3, 0xAA, 0xA3, 0x9E, 0xA3, 0xA9, 0xA9, 0xA9, - 0xAC, 0xB0, 0xB0, 0xAD, 0xAA, 0xAB, 0xA8, 0x9B, 0x8D, 0x86, 0x7D, 0x6D, 0x5E, 0x55, 0x4F, 0x48, - 0x41, 0x41, 0x4B, 0x53, 0x5A, 0x6B, 0x7A, 0x82, 0x8C, 0x97, 0x98, 0x95, 0x93, 0x91, 0x90, 0x90, - 0x8D, 0x8E, 0x93, 0x98, 0x9F, 0xA6, 0xAA, 0xAC, 0xB1, 0xB2, 0xA8, 0x96, 0x86, 0x7B, 0x75, 0x73, - 0x6F, 0x69, 0x66, 0x64, 0x5B, 0x4C, 0x42, 0x40, 0x3D, 0x35, 0x30, 0x35, 0x3D, 0x46, 0x53, 0x62, - 0x72, 0x82, 0x91, 0x9B, 0xA2, 0xAB, 0xB3, 0xB5, 0xB3, 0xB9, 0xC4, 0xC6, 0xC2, 0xBA, 0xAD, 0x9D, - 0x8E, 0x7D, 0x6F, 0x6C, 0x6B, 0x60, 0x51, 0x4B, 0x45, 0x3B, 0x32, 0x2E, 0x32, 0x3E, 0x4E, 0x5E, - 0x70, 0x82, 0x90, 0x9C, 0xA0, 0x9F, 0x9B, 0x98, 0x96, 0x94, 0x97, 0x9D, 0xA5, 0xAD, 0xB5, 0xBE, - 0xC6, 0xCC, 0xCE, 0xCE, 0xC7, 0xB6, 0xA4, 0x94, 0x85, 0x79, 0x76, 0x75, 0x72, 0x6D, 0x64, 0x5A, - 0x52, 0x4C, 0x46, 0x43, 0x47, 0x4C, 0x4E, 0x53, 0x5E, 0x69, 0x71, 0x79, 0x87, 0x96, 0x9D, 0xA3, - 0xAB, 0xB2, 0xB6, 0xB8, 0xBE, 0xC4, 0xC4, 0xC0, 0xB7, 0xA9, 0x9C, 0x8C, 0x7A, 0x67, 0x5F, 0x61, - 0x61, 0x5F, 0x5A, 0x54, 0x46, 0x31, 0x20, 0x19, 0x18, 0x16, 0x1B, 0x2C, 0x40, 0x4F, 0x61, 0x76, - 0x89, 0x97, 0xA1, 0xAB, 0xB1, 0xB3, 0xB1, 0xB1, 0xB3, 0xAE, 0xAB, 0xAF, 0xAF, 0xAB, 0xA5, 0x9C, - 0x8D, 0x7C, 0x6E, 0x62, 0x5C, 0x5E, 0x61, 0x64, 0x6A, 0x6B, 0x66, 0x5C, 0x4C, 0x3E, 0x37, 0x36, - 0x3B, 0x4C, 0x5F, 0x6B, 0x75, 0x82, 0x8C, 0x8F, 0x93, 0x9B, 0xA4, 0xA8, 0xAA, 0xB0, 0xB7, 0xBB, - 0xC0, 0xC6, 0xC9, 0xC7, 0xBE, 0xB5, 0xAB, 0x9C, 0x94, 0x8E, 0x83, 0x7D, 0x7E, 0x7D, 0x73, 0x6A, - 0x62, 0x56, 0x40, 0x29, 0x1C, 0x16, 0x19, 0x25, 0x3A, 0x4F, 0x60, 0x6F, 0x7D, 0x89, 0x92, 0x9F, - 0xAD, 0xB5, 0xBE, 0xC9, 0xCD, 0xCB, 0xCE, 0xD0, 0xCF, 0xC7, 0xBC, 0xAE, 0x98, 0x7E, 0x67, 0x59, - 0x4E, 0x46, 0x47, 0x4D, 0x4F, 0x47, 0x41, 0x40, 0x3B, 0x31, 0x31, 0x3B, 0x46, 0x53, 0x63, 0x72, - 0x7F, 0x89, 0x8E, 0x95, 0x98, 0x9A, 0xA0, 0xA3, 0xAB, 0xB6, 0xBC, 0xC0, 0xC3, 0xC2, 0xBD, 0xB0, - 0xA5, 0x99, 0x8D, 0x84, 0x7C, 0x7C, 0x80, 0x81, 0x81, 0x82, 0x81, 0x78, 0x6E, 0x67, 0x58, 0x4A, - 0x45, 0x44, 0x47, 0x4F, 0x58, 0x62, 0x6C, 0x72, 0x79, 0x80, 0x84, 0x85, 0x8E, 0x9B, 0xA8, 0xB3, - 0xBA, 0xC2, 0xC4, 0xC1, 0xB9, 0xB2, 0xAC, 0xA5, 0xA3, 0xA3, 0xA2, 0x9E, 0x97, 0x8D, 0x83, 0x7E, - 0x6F, 0x60, 0x54, 0x4E, 0x4E, 0x4A, 0x48, 0x4A, 0x4E, 0x4E, 0x44, 0x40, 0x45, 0x46, 0x47, 0x4E, - 0x58, 0x62, 0x67, 0x6C, 0x76, 0x82, 0x8A, 0x95, 0xA1, 0xA8, 0xAE, 0xB5, 0xBA, 0xB7, 0xB5, 0xB5, - 0xB0, 0xA7, 0xA0, 0x98, 0x93, 0x8E, 0x89, 0x84, 0x7D, 0x73, 0x64, 0x52, 0x3F, 0x31, 0x2E, 0x2F, - 0x30, 0x3B, 0x48, 0x4B, 0x47, 0x43, 0x40, 0x40, 0x4A, 0x5C, 0x76, 0x8A, 0x95, 0x9E, 0xA2, 0xA3, - 0x9F, 0x9F, 0xA7, 0xB4, 0xC1, 0xC9, 0xCE, 0xCE, 0xCD, 0xC3, 0xB0, 0xA4, 0xA0, 0x9B, 0x95, 0x94, - 0x92, 0x89, 0x79, 0x69, 0x60, 0x5B, 0x5B, 0x63, 0x6F, 0x6E, 0x66, 0x5F, 0x54, 0x46, 0x3F, 0x45, - 0x53, 0x62, 0x71, 0x7A, 0x7E, 0x7E, 0x78, 0x79, 0x86, 0x99, 0xAD, 0xBB, 0xC8, 0xD1, 0xCF, 0xC7, - 0xB9, 0xAE, 0xA7, 0x9F, 0x9D, 0xA3, 0xA9, 0xA5, 0x9B, 0x90, 0x81, 0x72, 0x68, 0x64, 0x60, 0x5F, - 0x5B, 0x56, 0x4D, 0x3F, 0x35, 0x2E, 0x2C, 0x32, 0x3D, 0x4A, 0x55, 0x61, 0x6A, 0x71, 0x78, 0x7D, - 0x84, 0x92, 0xA0, 0xAB, 0xB5, 0xB9, 0xBA, 0xB8, 0xB6, 0xB3, 0xB1, 0xB0, 0xB2, 0xB3, 0xB2, 0xAB, - 0x9E, 0x93, 0x84, 0x79, 0x73, 0x6F, 0x68, 0x60, 0x5E, 0x55, 0x47, 0x41, 0x40, 0x3C, 0x34, 0x31, - 0x38, 0x37, 0x2F, 0x32, 0x3D, 0x4E, 0x61, 0x75, 0x89, 0x93, 0x9A, 0xA3, 0xAA, 0xB2, 0xBD, 0xC8, - 0xD2, 0xDB, 0xDF, 0xDD, 0xD4, 0xCD, 0xC9, 0xC0, 0xB3, 0xA7, 0x9B, 0x8F, 0x82, 0x77, 0x6F, 0x65, - 0x57, 0x4B, 0x41, 0x37, 0x31, 0x35, 0x3B, 0x3B, 0x3A, 0x3C, 0x3E, 0x3D, 0x3A, 0x41, 0x4F, 0x5C, - 0x68, 0x72, 0x7E, 0x89, 0x94, 0xA1, 0xB0, 0xC2, 0xCE, 0xD1, 0xD0, 0xCC, 0xC5, 0xB7, 0xAB, 0xA7, - 0xA6, 0xA1, 0x99, 0x92, 0x89, 0x7E, 0x6E, 0x64, 0x61, 0x5F, 0x5C, 0x5D, 0x60, 0x55, 0x49, 0x3F, - 0x3B, 0x42, 0x48, 0x49, 0x4C, 0x56, 0x59, 0x54, 0x54, 0x5B, 0x64, 0x6F, 0x7D, 0x8A, 0x96, 0x9E, - 0xA6, 0xB0, 0xBC, 0xC3, 0xC9, 0xCB, 0xC7, 0xC8, 0xC5, 0xBB, 0xB5, 0xB4, 0xAC, 0xA0, 0x99, 0x8E, - 0x84, 0x7A, 0x6B, 0x63, 0x63, 0x5C, 0x51, 0x50, 0x51, 0x48, 0x3D, 0x39, 0x3D, 0x43, 0x45, 0x45, - 0x4F, 0x60, 0x67, 0x6A, 0x71, 0x82, 0x92, 0x98, 0x9F, 0xAE, 0xBB, 0xBF, 0xC0, 0xC2, 0xC8, 0xCE, - 0xC9, 0xC4, 0xC7, 0xCC, 0xC7, 0xB9, 0xAA, 0xA0, 0x98, 0x8E, 0x84, 0x7E, 0x78, 0x71, 0x62, 0x53, - 0x4B, 0x47, 0x45, 0x40, 0x42, 0x43, 0x3D, 0x3D, 0x41, 0x48, 0x55, 0x5B, 0x59, 0x60, 0x6B, 0x69, - 0x61, 0x6A, 0x7D, 0x83, 0x87, 0x94, 0xA7, 0xB2, 0xAD, 0xAE, 0xC0, 0xCC, 0xC9, 0xC6, 0xC7, 0xC4, - 0xB8, 0xAE, 0xA6, 0x9C, 0x97, 0x8E, 0x7C, 0x6B, 0x60, 0x57, 0x46, 0x3C, 0x40, 0x42, 0x3D, 0x3C, - 0x3D, 0x3A, 0x39, 0x3A, 0x3A, 0x3C, 0x4C, 0x57, 0x59, 0x63, 0x6F, 0x70, 0x6A, 0x71, 0x86, 0x96, - 0x9F, 0xAD, 0xBD, 0xBF, 0xB7, 0xB6, 0xC2, 0xCD, 0xCF, 0xCC, 0xC9, 0xC5, 0xB3, 0xA1, 0x9C, 0x99, - 0x98, 0x92, 0x87, 0x79, 0x6A, 0x5B, 0x4D, 0x41, 0x3E, 0x47, 0x4E, 0x42, 0x36, 0x37, 0x37, 0x35, - 0x3B, 0x48, 0x56, 0x66, 0x71, 0x78, 0x7D, 0x7F, 0x7F, 0x83, 0x8F, 0x9F, 0xAB, 0xAC, 0xA7, 0xAD, - 0xB8, 0xB7, 0xB8, 0xC4, 0xCB, 0xC7, 0xC0, 0xBF, 0xBB, 0xAD, 0xA0, 0x94, 0x8F, 0x8D, 0x87, 0x75, - 0x65, 0x63, 0x57, 0x3F, 0x30, 0x35, 0x43, 0x46, 0x40, 0x42, 0x4C, 0x4B, 0x44, 0x47, 0x52, 0x60, - 0x72, 0x7D, 0x7A, 0x7C, 0x85, 0x86, 0x89, 0x95, 0xA4, 0xB0, 0xB2, 0xAA, 0xAD, 0xBA, 0xB8, 0xB3, - 0xC2, 0xCD, 0xC8, 0xC6, 0xBC, 0xA9, 0x9F, 0x92, 0x80, 0x7D, 0x7F, 0x73, 0x67, 0x61, 0x55, 0x47, - 0x42, 0x47, 0x4E, 0x56, 0x58, 0x56, 0x55, 0x55, 0x57, 0x5D, 0x63, 0x65, 0x6C, 0x73, 0x79, 0x7B, - 0x75, 0x7B, 0x8C, 0x91, 0x8D, 0x98, 0xA7, 0xA4, 0xA3, 0xA5, 0xA7, 0xA9, 0xAC, 0xB0, 0xB6, 0xBA, - 0xB5, 0xAE, 0xA9, 0xA5, 0xA3, 0x9A, 0x8F, 0x8B, 0x88, 0x7E, 0x6E, 0x60, 0x51, 0x44, 0x3D, 0x3B, - 0x42, 0x45, 0x44, 0x48, 0x49, 0x49, 0x4A, 0x4B, 0x4E, 0x56, 0x67, 0x75, 0x74, 0x70, 0x6D, 0x6C, - 0x70, 0x7C, 0x8D, 0x99, 0xA1, 0xA4, 0xA9, 0xB2, 0xB2, 0xA9, 0xAF, 0xBC, 0xBA, 0xAE, 0xAC, 0xB3, - 0xA6, 0x8C, 0x88, 0x88, 0x7F, 0x76, 0x6A, 0x63, 0x5E, 0x55, 0x48, 0x3A, 0x39, 0x41, 0x48, 0x48, - 0x46, 0x43, 0x3C, 0x41, 0x52, 0x57, 0x59, 0x6D, 0x85, 0x87, 0x7C, 0x84, 0x97, 0x91, 0x89, 0x9E, - 0xB9, 0xBC, 0xB4, 0xB9, 0xC1, 0xBA, 0xB6, 0xBB, 0xBB, 0xBC, 0xBB, 0xBA, 0xB8, 0xB0, 0xA1, 0x91, - 0x8A, 0x85, 0x7A, 0x6D, 0x66, 0x66, 0x59, 0x47, 0x44, 0x42, 0x3E, 0x43, 0x46, 0x48, 0x4B, 0x47, - 0x51, 0x5F, 0x5D, 0x5C, 0x73, 0x92, 0x8D, 0x80, 0x8B, 0x90, 0x84, 0x89, 0x9E, 0xAC, 0xBD, 0xC6, - 0xC6, 0xC3, 0xAF, 0xA4, 0xB0, 0xC1, 0xC7, 0xCB, 0xC5, 0xBA, 0xAE, 0x8F, 0x71, 0x66, 0x62, 0x66, - 0x74, 0x80, 0x6F, 0x50, 0x39, 0x24, 0x24, 0x41, 0x56, 0x56, 0x53, 0x4A, 0x41, 0x3E, 0x3C, 0x3D, - 0x49, 0x72, 0xA2, 0xAB, 0x8F, 0x6C, 0x63, 0x71, 0x83, 0x96, 0xB4, 0xD2, 0xDA, 0xBD, 0x98, 0x99, - 0xAD, 0xB9, 0xBD, 0xC2, 0xCE, 0xC6, 0x9B, 0x7D, 0x7E, 0x7D, 0x74, 0x7C, 0x85, 0x70, 0x55, 0x44, - 0x3A, 0x44, 0x55, 0x5E, 0x6D, 0x6F, 0x4B, 0x35, 0x44, 0x50, 0x57, 0x5D, 0x5C, 0x61, 0x78, 0x8B, - 0x72, 0x53, 0x60, 0x80, 0x91, 0x93, 0x9D, 0xC0, 0xD9, 0xBE, 0xA2, 0xAE, 0xB9, 0xB8, 0xB8, 0xB6, - 0xB2, 0xA6, 0x8B, 0x70, 0x6F, 0x74, 0x6A, 0x64, 0x6E, 0x69, 0x53, 0x51, 0x5D, 0x62, 0x65, 0x6A, - 0x72, 0x74, 0x5B, 0x47, 0x56, 0x69, 0x6C, 0x64, 0x5C, 0x5E, 0x73, 0x87, 0x6F, 0x4C, 0x5A, 0x80, - 0x83, 0x78, 0x95, 0xC6, 0xD4, 0xAB, 0x96, 0xAF, 0xAC, 0x97, 0x95, 0xA7, 0xB3, 0x9D, 0x76, 0x67, - 0x79, 0x7E, 0x69, 0x65, 0x78, 0x7B, 0x67, 0x62, 0x71, 0x7F, 0x78, 0x79, 0x90, 0x8D, 0x6C, 0x5B, - 0x63, 0x69, 0x64, 0x67, 0x71, 0x87, 0xA0, 0x94, 0x7A, 0x7B, 0x81, 0x73, 0x79, 0x9A, 0xBB, 0xD4, - 0xC3, 0xA1, 0xA3, 0xA3, 0x8A, 0x7E, 0x8E, 0x9F, 0x9B, 0x80, 0x6A, 0x68, 0x66, 0x60, 0x63, 0x7D, - 0x95, 0x8A, 0x7F, 0x81, 0x81, 0x7C, 0x77, 0x7E, 0x89, 0x85, 0x6F, 0x66, 0x6A, 0x65, 0x60, 0x63, - 0x7C, 0x9C, 0x9F, 0x86, 0x71, 0x74, 0x70, 0x6D, 0x84, 0xA6, 0xC0, 0xAF, 0x8D, 0x8C, 0x8D, 0x7C, - 0x71, 0x7A, 0x92, 0x9A, 0x82, 0x72, 0x7B, 0x77, 0x5F, 0x5E, 0x80, 0x92, 0x7D, 0x72, 0x7D, 0x71, - 0x60, 0x61, 0x5F, 0x69, 0x7B, 0x73, 0x5F, 0x5C, 0x54, 0x4B, 0x61, 0x86, 0x96, 0x89, 0x7F, 0x7B, - 0x66, 0x59, 0x6B, 0x90, 0xAD, 0xB2, 0xA5, 0x9E, 0x9A, 0x7D, 0x6E, 0x7B, 0x85, 0x92, 0x8F, 0x83, - 0x7E, 0x73, 0x64, 0x5C, 0x6C, 0x8C, 0x94, 0x80, 0x86, 0x98, 0x7B, 0x60, 0x69, 0x70, 0x6F, 0x74, - 0x7A, 0x73, 0x6A, 0x5B, 0x54, 0x73, 0x9B, 0x90, 0x78, 0x89, 0x83, 0x5C, 0x61, 0x80, 0x97, 0xAE, - 0xB0, 0x9C, 0x9F, 0xA6, 0x78, 0x5D, 0x80, 0x95, 0x87, 0x89, 0x9D, 0x96, 0x82, 0x6E, 0x5A, 0x6A, - 0x8A, 0x8D, 0x86, 0x93, 0x98, 0x79, 0x63, 0x60, 0x5E, 0x6A, 0x73, 0x73, 0x77, 0x71, 0x55, 0x56, - 0x7C, 0x8B, 0x78, 0x80, 0x9C, 0x84, 0x6A, 0x79, 0x85, 0x93, 0xA5, 0xA7, 0x9B, 0x9D, 0xA5, 0x85, - 0x68, 0x7F, 0x8C, 0x76, 0x7B, 0x98, 0x96, 0x87, 0x87, 0x7A, 0x6B, 0x78, 0x8C, 0x8B, 0x88, 0x9D, - 0x96, 0x6E, 0x69, 0x6E, 0x5E, 0x60, 0x6B, 0x66, 0x66, 0x81, 0x92, 0x80, 0x77, 0x81, 0x70, 0x60, - 0x7B, 0x93, 0x94, 0xA6, 0xC5, 0xB4, 0x8A, 0x93, 0x94, 0x71, 0x77, 0x8F, 0x84, 0x75, 0x89, 0x92, - 0x78, 0x73, 0x7E, 0x6F, 0x6A, 0x88, 0x91, 0x84, 0x88, 0x8E, 0x7A, 0x65, 0x6C, 0x6E, 0x5F, 0x6C, - 0x81, 0x77, 0x6B, 0x7C, 0x83, 0x6B, 0x76, 0x8A, 0x69, 0x5F, 0x80, 0x86, 0x7A, 0x8D, 0xA8, 0x99, - 0x8B, 0x97, 0x84, 0x6A, 0x78, 0x89, 0x83, 0x7B, 0x8D, 0x91, 0x6E, 0x6A, 0x77, 0x64, 0x63, 0x7D, - 0x8C, 0x80, 0x7E, 0x8B, 0x69, 0x52, 0x6D, 0x6B, 0x5A, 0x66, 0x79, 0x7A, 0x7A, 0x7E, 0x6A, 0x61, - 0x6E, 0x58, 0x52, 0x79, 0x8C, 0x8F, 0x9D, 0xAA, 0x9D, 0x82, 0x86, 0x79, 0x5A, 0x72, 0x98, 0x91, - 0x83, 0x93, 0xA1, 0x84, 0x70, 0x7D, 0x7A, 0x75, 0x85, 0x94, 0x99, 0x9B, 0x97, 0x7C, 0x5F, 0x66, - 0x6A, 0x5A, 0x5E, 0x76, 0x8E, 0x8E, 0x74, 0x76, 0x84, 0x68, 0x56, 0x6F, 0x83, 0x8E, 0xA0, 0xAF, - 0xAC, 0x9E, 0x9B, 0x88, 0x67, 0x6C, 0x8B, 0x91, 0x86, 0x94, 0xA8, 0x94, 0x71, 0x6A, 0x69, 0x63, - 0x74, 0x8D, 0x98, 0x9F, 0xA2, 0x94, 0x7D, 0x6D, 0x60, 0x52, 0x5C, 0x70, 0x84, 0x9C, 0x8F, 0x76, - 0x7F, 0x6C, 0x4B, 0x59, 0x6A, 0x72, 0x8D, 0xAC, 0xAC, 0x9D, 0xA9, 0x9F, 0x6D, 0x69, 0x7D, 0x79, - 0x7D, 0x8C, 0x9B, 0x9B, 0x8A, 0x7B, 0x69, 0x67, 0x78, 0x7F, 0x85, 0x94, 0xA2, 0x9F, 0x83, 0x71, - 0x6F, 0x5F, 0x57, 0x6B, 0x89, 0xA2, 0x9D, 0x85, 0x80, 0x77, 0x57, 0x51, 0x65, 0x76, 0x89, 0xA1, - 0xA8, 0x9D, 0xA0, 0x9D, 0x6D, 0x5F, 0x7D, 0x7C, 0x74, 0x89, 0xA3, 0x9E, 0x82, 0x7E, 0x7A, 0x66, - 0x70, 0x87, 0x8F, 0x90, 0x96, 0x97, 0x7B, 0x6C, 0x6E, 0x50, 0x45, 0x6C, 0x84, 0x77, 0x71, 0x87, - 0x80, 0x62, 0x63, 0x5D, 0x52, 0x6C, 0x8E, 0x9A, 0x96, 0xA0, 0xA8, 0x82, 0x67, 0x71, 0x62, 0x50, - 0x6D, 0x8D, 0x85, 0x82, 0x97, 0x88, 0x65, 0x68, 0x73, 0x6D, 0x73, 0x8C, 0x9D, 0x8D, 0x7B, 0x80, - 0x6D, 0x50, 0x60, 0x7B, 0x73, 0x64, 0x7C, 0x8B, 0x68, 0x5E, 0x6E, 0x59, 0x59, 0x8A, 0x9F, 0x96, - 0xA0, 0xAD, 0x95, 0x76, 0x75, 0x76, 0x69, 0x71, 0x8D, 0x9B, 0x94, 0x97, 0xA0, 0x8B, 0x76, 0x78, - 0x78, 0x77, 0x8A, 0x93, 0x89, 0x8F, 0x91, 0x7A, 0x6E, 0x79, 0x76, 0x60, 0x65, 0x75, 0x64, 0x67, - 0x7C, 0x69, 0x6A, 0x8F, 0x94, 0x88, 0x97, 0xAB, 0x93, 0x78, 0x86, 0x81, 0x63, 0x71, 0x93, 0x92, - 0x8B, 0xA1, 0x9E, 0x7E, 0x8A, 0x9B, 0x81, 0x7D, 0x98, 0x9A, 0x81, 0x83, 0x8E, 0x74, 0x6E, 0x88, - 0x7D, 0x6B, 0x78, 0x7E, 0x6B, 0x64, 0x72, 0x71, 0x6E, 0x85, 0x96, 0x8F, 0x8F, 0x9D, 0x95, 0x7F, - 0x83, 0x80, 0x69, 0x72, 0x8A, 0x8C, 0x8C, 0x96, 0x9C, 0x91, 0x88, 0x86, 0x7F, 0x7C, 0x7F, 0x80, - 0x81, 0x81, 0x80, 0x78, 0x6F, 0x79, 0x83, 0x77, 0x73, 0x7E, 0x6E, 0x55, 0x5F, 0x64, 0x58, 0x71, - 0x94, 0x93, 0x8F, 0x99, 0x91, 0x79, 0x76, 0x79, 0x65, 0x68, 0x89, 0x8C, 0x84, 0x92, 0x97, 0x8E, - 0x85, 0x80, 0x81, 0x7F, 0x7F, 0x7B, 0x74, 0x79, 0x76, 0x6D, 0x79, 0x85, 0x7D, 0x70, 0x73, 0x72, - 0x58, 0x51, 0x5D, 0x57, 0x5D, 0x82, 0x98, 0x8E, 0x94, 0xAC, 0x94, 0x6E, 0x77, 0x75, 0x5A, 0x66, - 0x88, 0x8A, 0x83, 0x97, 0xA1, 0x8A, 0x81, 0x86, 0x7D, 0x74, 0x7D, 0x88, 0x80, 0x79, 0x7E, 0x7F, - 0x7E, 0x76, 0x6E, 0x71, 0x75, 0x71, 0x64, 0x5D, 0x5D, 0x59, 0x6B, 0x8A, 0x93, 0x9B, 0xA5, 0xA0, - 0x8E, 0x7F, 0x82, 0x77, 0x61, 0x70, 0x81, 0x75, 0x7F, 0x9B, 0xA2, 0x97, 0x93, 0x97, 0x8A, 0x78, - 0x78, 0x70, 0x6A, 0x78, 0x7D, 0x84, 0x96, 0x91, 0x7D, 0x78, 0x78, 0x62, 0x4F, 0x58, 0x58, 0x5A, - 0x77, 0x8E, 0x98, 0xA8, 0xB4, 0xAA, 0x8C, 0x8A, 0x8E, 0x6B, 0x62, 0x7C, 0x82, 0x86, 0x9E, 0xB2, - 0xB0, 0xA4, 0xA2, 0x95, 0x7D, 0x73, 0x6E, 0x64, 0x63, 0x70, 0x82, 0x8C, 0x87, 0x83, 0x8D, 0x7F, - 0x60, 0x5C, 0x58, 0x4A, 0x5D, 0x7E, 0x8C, 0x8E, 0x9E, 0xA9, 0x92, 0x82, 0x8A, 0x77, 0x5F, 0x6E, - 0x80, 0x7B, 0x83, 0xA1, 0xAA, 0xA1, 0xA3, 0xA1, 0x94, 0x88, 0x7D, 0x70, 0x62, 0x61, 0x6E, 0x7B, - 0x79, 0x76, 0x83, 0x86, 0x69, 0x5E, 0x64, 0x51, 0x4F, 0x73, 0x82, 0x7F, 0x8F, 0xA1, 0x96, 0x7F, - 0x88, 0x8B, 0x67, 0x5F, 0x76, 0x76, 0x78, 0x91, 0xA1, 0x9D, 0x99, 0x9F, 0x98, 0x85, 0x7E, 0x7A, - 0x69, 0x5E, 0x68, 0x78, 0x7A, 0x6C, 0x71, 0x81, 0x6D, 0x59, 0x64, 0x5D, 0x4D, 0x60, 0x77, 0x77, - 0x7E, 0x94, 0x96, 0x84, 0x8B, 0x95, 0x7E, 0x6B, 0x75, 0x76, 0x69, 0x76, 0x93, 0x98, 0x99, 0xA2, - 0xA5, 0xA0, 0x93, 0x8A, 0x7C, 0x61, 0x5E, 0x75, 0x7A, 0x6B, 0x70, 0x8A, 0x7D, 0x5E, 0x67, 0x67, - 0x4F, 0x59, 0x72, 0x77, 0x7A, 0x8C, 0x98, 0x8D, 0x87, 0x97, 0x8F, 0x71, 0x77, 0x83, 0x73, 0x75, - 0x92, 0x9D, 0x96, 0x9C, 0xA9, 0xA1, 0x8E, 0x8D, 0x86, 0x6D, 0x64, 0x70, 0x73, 0x65, 0x6A, 0x83, - 0x7B, 0x63, 0x71, 0x74, 0x5C, 0x64, 0x7D, 0x76, 0x78, 0x96, 0x9F, 0x8D, 0x8B, 0x95, 0x8C, 0x78, - 0x7A, 0x83, 0x77, 0x75, 0x90, 0x9E, 0x99, 0xA1, 0xAE, 0xA8, 0x9B, 0x98, 0x92, 0x7E, 0x73, 0x7A, - 0x7E, 0x73, 0x6D, 0x7A, 0x7C, 0x66, 0x62, 0x6A, 0x5B, 0x56, 0x6E, 0x77, 0x72, 0x84, 0x9B, 0x96, - 0x8D, 0x9A, 0xA2, 0x8A, 0x7C, 0x8B, 0x87, 0x78, 0x85, 0x98, 0x97, 0x95, 0x9F, 0xA4, 0x96, 0x88, - 0x85, 0x75, 0x64, 0x6A, 0x70, 0x65, 0x61, 0x73, 0x79, 0x61, 0x5E, 0x6B, 0x5A, 0x55, 0x6E, 0x72, - 0x71, 0x83, 0x8B, 0x87, 0x89, 0x8E, 0x8B, 0x81, 0x7E, 0x83, 0x7F, 0x7E, 0x8A, 0x96, 0x96, 0x93, - 0x9D, 0xA4, 0x98, 0x8C, 0x8D, 0x87, 0x76, 0x6B, 0x6F, 0x6F, 0x61, 0x62, 0x74, 0x70, 0x60, 0x68, - 0x67, 0x54, 0x57, 0x65, 0x62, 0x65, 0x78, 0x7F, 0x7A, 0x7D, 0x89, 0x87, 0x79, 0x79, 0x80, 0x7A, - 0x7D, 0x93, 0xA1, 0xA0, 0xA1, 0xAD, 0xAC, 0x94, 0x8A, 0x87, 0x6C, 0x61, 0x76, 0x74, 0x60, 0x65, - 0x75, 0x67, 0x56, 0x63, 0x60, 0x49, 0x5C, 0x79, 0x74, 0x79, 0x8F, 0x8F, 0x85, 0x85, 0x8C, 0x8B, - 0x7E, 0x84, 0x8F, 0x84, 0x82, 0x91, 0x94, 0x94, 0x9F, 0xAB, 0xA8, 0xA3, 0xA1, 0x93, 0x7D, 0x6F, - 0x65, 0x60, 0x61, 0x5E, 0x63, 0x6F, 0x6C, 0x67, 0x71, 0x70, 0x5F, 0x63, 0x78, 0x7B, 0x7A, 0x8D, - 0x99, 0x93, 0x94, 0x9F, 0x98, 0x88, 0x8A, 0x8D, 0x80, 0x80, 0x90, 0x96, 0x95, 0x99, 0xA5, 0xA9, - 0x9D, 0x99, 0x9B, 0x8C, 0x7D, 0x81, 0x87, 0x84, 0x7C, 0x7C, 0x83, 0x7B, 0x6B, 0x64, 0x5E, 0x55, - 0x53, 0x5A, 0x5F, 0x61, 0x72, 0x80, 0x79, 0x81, 0x99, 0x95, 0x89, 0x95, 0xA1, 0x9B, 0x97, 0x9D, - 0xA3, 0x9E, 0x9D, 0x9C, 0x99, 0x9A, 0x93, 0x84, 0x79, 0x6E, 0x60, 0x5B, 0x61, 0x64, 0x67, 0x6B, - 0x66, 0x61, 0x65, 0x60, 0x53, 0x5B, 0x6A, 0x6B, 0x75, 0x84, 0x85, 0x84, 0x8F, 0x95, 0x8A, 0x8D, - 0x98, 0x91, 0x8C, 0x90, 0x8C, 0x8A, 0x8F, 0x8C, 0x8B, 0x90, 0x91, 0x8C, 0x83, 0x7A, 0x71, 0x69, - 0x66, 0x66, 0x70, 0x7C, 0x7A, 0x78, 0x7C, 0x6C, 0x58, 0x51, 0x48, 0x45, 0x51, 0x61, 0x6D, 0x7A, - 0x82, 0x88, 0x8B, 0x8B, 0x8A, 0x88, 0x87, 0x8C, 0x8F, 0x8B, 0x8E, 0x99, 0x9B, 0x96, 0x9E, 0xA7, - 0xA0, 0x92, 0x8A, 0x84, 0x72, 0x62, 0x64, 0x6E, 0x6C, 0x67, 0x72, 0x7B, 0x6C, 0x5C, 0x59, 0x4A, - 0x3F, 0x50, 0x54, 0x55, 0x6F, 0x84, 0x83, 0x8B, 0xA4, 0xAA, 0x9E, 0xA8, 0xB6, 0xA4, 0x98, 0x9F, - 0x95, 0x8B, 0x8D, 0x8B, 0x8E, 0x8D, 0x82, 0x81, 0x86, 0x7D, 0x69, 0x65, 0x64, 0x5B, 0x67, 0x75, - 0x67, 0x65, 0x79, 0x69, 0x4F, 0x58, 0x5C, 0x50, 0x5F, 0x7B, 0x84, 0x95, 0xAE, 0xB4, 0xB7, 0xBD, - 0xB3, 0xA2, 0x9C, 0x98, 0x8F, 0x83, 0x7D, 0x79, 0x7A, 0x7D, 0x78, 0x7F, 0x8F, 0x93, 0x93, 0x92, - 0x8F, 0x87, 0x86, 0x85, 0x83, 0x8B, 0x92, 0x8A, 0x81, 0x80, 0x77, 0x5B, 0x46, 0x41, 0x3C, 0x44, - 0x55, 0x66, 0x7A, 0x95, 0xA2, 0xA4, 0xAF, 0xB4, 0xAE, 0xA5, 0xA8, 0xA5, 0x9A, 0x9C, 0x98, 0x8E, - 0x88, 0x83, 0x80, 0x80, 0x7A, 0x76, 0x7E, 0x7D, 0x70, 0x68, 0x64, 0x5E, 0x59, 0x5A, 0x5B, 0x5F, - 0x64, 0x60, 0x60, 0x5F, 0x57, 0x5A, 0x66, 0x6F, 0x82, 0x9D, 0xA6, 0xAC, 0xC0, 0xC3, 0xB0, 0xA2, - 0xA0, 0x94, 0x83, 0x7C, 0x7C, 0x7C, 0x72, 0x6A, 0x6B, 0x6B, 0x66, 0x69, 0x71, 0x77, 0x7D, 0x80, - 0x82, 0x7F, 0x79, 0x72, 0x71, 0x76, 0x6B, 0x5E, 0x5C, 0x5A, 0x52, 0x44, 0x42, 0x4B, 0x56, 0x5C, - 0x6B, 0x8D, 0xA1, 0xA0, 0xA8, 0xB5, 0xB7, 0xAC, 0xAA, 0xA5, 0x9F, 0xA0, 0x96, 0x89, 0x88, 0x8A, - 0x7C, 0x6E, 0x73, 0x6E, 0x6C, 0x6B, 0x68, 0x6E, 0x71, 0x69, 0x60, 0x6D, 0x79, 0x70, 0x68, 0x6D, - 0x73, 0x6B, 0x5F, 0x5E, 0x66, 0x6B, 0x68, 0x70, 0x87, 0x94, 0x95, 0xA1, 0xB3, 0xB3, 0xAE, 0xB1, - 0xB1, 0xAB, 0x9F, 0x95, 0x92, 0x8E, 0x84, 0x79, 0x79, 0x76, 0x6E, 0x6D, 0x71, 0x77, 0x7D, 0x7E, - 0x7D, 0x82, 0x7F, 0x75, 0x78, 0x7D, 0x6F, 0x64, 0x6A, 0x64, 0x5B, 0x59, 0x54, 0x5A, 0x65, 0x6D, - 0x7C, 0x90, 0xA0, 0xAD, 0xB9, 0xC5, 0xC9, 0xC3, 0xB8, 0xAE, 0xA5, 0x9C, 0x8B, 0x7D, 0x82, 0x7D, - 0x6F, 0x72, 0x7A, 0x75, 0x6E, 0x79, 0x7C, 0x73, 0x72, 0x71, 0x6C, 0x6D, 0x7B, 0x82, 0x81, 0x82, - 0x7D, 0x78, 0x6E, 0x5E, 0x59, 0x54, 0x54, 0x5C, 0x69, 0x78, 0x88, 0x95, 0x98, 0xA5, 0xB3, 0xB0, - 0xB1, 0xB4, 0xB6, 0xB2, 0xB0, 0xA5, 0x98, 0x91, 0x83, 0x77, 0x6F, 0x6C, 0x66, 0x61, 0x66, 0x66, - 0x66, 0x6B, 0x6B, 0x6A, 0x71, 0x73, 0x62, 0x52, 0x53, 0x4F, 0x41, 0x3C, 0x46, 0x55, 0x61, 0x75, - 0x8F, 0x9F, 0xA5, 0xB1, 0xB8, 0xB8, 0xB7, 0xB1, 0xA5, 0x99, 0x95, 0x84, 0x71, 0x6F, 0x65, 0x56, - 0x4F, 0x56, 0x62, 0x68, 0x6E, 0x77, 0x82, 0x88, 0x8E, 0x92, 0x95, 0x92, 0x87, 0x78, 0x72, 0x73, - 0x5C, 0x46, 0x4B, 0x46, 0x3C, 0x43, 0x49, 0x54, 0x64, 0x6D, 0x75, 0x88, 0x99, 0x9C, 0xA2, 0xB0, - 0xBD, 0xBB, 0xB4, 0xB5, 0xBA, 0xB3, 0x9E, 0x9B, 0x9A, 0x90, 0x89, 0x84, 0x84, 0x81, 0x7E, 0x77, - 0x71, 0x70, 0x67, 0x5A, 0x50, 0x50, 0x56, 0x50, 0x45, 0x4C, 0x5B, 0x62, 0x5E, 0x62, 0x73, 0x7A, - 0x7C, 0x8B, 0xA8, 0xB3, 0xAF, 0xB8, 0xC4, 0xC5, 0xBF, 0xB4, 0xAB, 0xA7, 0x9B, 0x86, 0x7A, 0x7A, - 0x79, 0x70, 0x6A, 0x74, 0x7D, 0x7D, 0x81, 0x87, 0x95, 0x97, 0x8A, 0x87, 0x88, 0x7A, 0x67, 0x71, - 0x75, 0x5F, 0x63, 0x6D, 0x63, 0x5A, 0x5A, 0x5F, 0x61, 0x65, 0x6C, 0x7B, 0x91, 0x9D, 0x9F, 0xAB, - 0xB0, 0xB0, 0xB0, 0xA3, 0xA3, 0xA3, 0x91, 0x8D, 0x92, 0x8E, 0x83, 0x7D, 0x81, 0x7E, 0x7D, 0x7C, - 0x7B, 0x80, 0x78, 0x6E, 0x6F, 0x6A, 0x5E, 0x66, 0x68, 0x65, 0x68, 0x61, 0x6D, 0x6F, 0x5A, 0x54, - 0x53, 0x57, 0x4F, 0x52, 0x71, 0x82, 0x8F, 0x96, 0x9C, 0xB2, 0xBF, 0xBE, 0xB9, 0xBD, 0xC4, 0xB4, - 0xA1, 0x9E, 0x9A, 0x89, 0x7D, 0x7C, 0x79, 0x72, 0x68, 0x68, 0x6B, 0x67, 0x5C, 0x46, 0x3D, 0x40, - 0x45, 0x46, 0x44, 0x51, 0x5C, 0x56, 0x52, 0x52, 0x5A, 0x68, 0x6B, 0x72, 0x89, 0xA8, 0xB5, 0xB9, - 0xC5, 0xC7, 0xC3, 0xB2, 0x9F, 0x9D, 0x9A, 0x8B, 0x7F, 0x7F, 0x7F, 0x7E, 0x77, 0x71, 0x76, 0x7D, - 0x7C, 0x72, 0x70, 0x75, 0x74, 0x6D, 0x6C, 0x76, 0x71, 0x64, 0x69, 0x6A, 0x67, 0x62, 0x58, 0x59, - 0x54, 0x4F, 0x4E, 0x66, 0x7C, 0x78, 0x8F, 0xA4, 0x95, 0x8D, 0xA4, 0xB6, 0xB6, 0xB8, 0xB0, 0xAC, - 0xB2, 0xB1, 0xAA, 0xAD, 0xB7, 0x9C, 0x84, 0x93, 0x91, 0x7D, 0x70, 0x76, 0x6C, 0x46, 0x48, 0x4D, - 0x3E, 0x44, 0x45, 0x46, 0x4F, 0x59, 0x65, 0x6B, 0x73, 0x7C, 0x80, 0x8B, 0x95, 0x94, 0xA3, 0xB0, - 0xAB, 0xA9, 0xAA, 0xB4, 0xB8, 0xB5, 0xBC, 0xB2, 0xA8, 0xA9, 0x99, 0x93, 0x94, 0x86, 0x85, 0x88, - 0x80, 0x74, 0x76, 0x82, 0x6E, 0x61, 0x78, 0x72, 0x60, 0x63, 0x64, 0x6A, 0x65, 0x60, 0x64, 0x5F, - 0x62, 0x57, 0x52, 0x6C, 0x76, 0x76, 0x83, 0x94, 0x99, 0x9C, 0xAB, 0xB1, 0xA2, 0xA1, 0xA4, 0x90, - 0x8D, 0x97, 0x90, 0x8B, 0x83, 0x85, 0x87, 0x76, 0x7C, 0x7B, 0x71, 0x6D, 0x5C, 0x61, 0x6A, 0x68, - 0x6D, 0x72, 0x7E, 0x7F, 0x7A, 0x85, 0x7E, 0x6C, 0x6D, 0x65, 0x5F, 0x6C, 0x6E, 0x74, 0x80, 0x86, - 0x8C, 0x8C, 0x94, 0x92, 0x86, 0x8E, 0x86, 0x7A, 0x83, 0x80, 0x7C, 0x7A, 0x79, 0x7C, 0x70, 0x6C, - 0x71, 0x66, 0x64, 0x67, 0x60, 0x63, 0x64, 0x64, 0x6E, 0x72, 0x78, 0x78, 0x79, 0x7A, 0x6D, 0x6F, - 0x74, 0x6B, 0x72, 0x7B, 0x84, 0x93, 0x9C, 0xAE, 0xB6, 0xB0, 0xAD, 0xA8, 0xAB, 0xA2, 0x8D, 0x8C, - 0x92, 0x8C, 0x82, 0x80, 0x86, 0x85, 0x76, 0x6D, 0x6A, 0x67, 0x62, 0x53, 0x51, 0x5A, 0x5B, 0x62, - 0x67, 0x6E, 0x77, 0x75, 0x77, 0x75, 0x76, 0x7C, 0x76, 0x78, 0x7D, 0x80, 0x84, 0x86, 0x90, 0x94, - 0x92, 0x9B, 0xA0, 0x99, 0x9A, 0x9D, 0x9B, 0x9C, 0x9A, 0x96, 0x98, 0x9D, 0x9A, 0x8E, 0x8D, 0x8B, - 0x81, 0x7A, 0x75, 0x6E, 0x68, 0x66, 0x68, 0x66, 0x67, 0x70, 0x6F, 0x66, 0x67, 0x6F, 0x70, 0x70, - 0x7A, 0x7F, 0x80, 0x87, 0x8B, 0x88, 0x89, 0x89, 0x87, 0x88, 0x8F, 0x94, 0x96, 0x9E, 0x9F, 0xA4, - 0xB1, 0xB5, 0xAE, 0xA7, 0xA7, 0xA3, 0x98, 0x92, 0x89, 0x78, 0x71, 0x72, 0x6B, 0x64, 0x64, 0x62, - 0x57, 0x52, 0x59, 0x5D, 0x60, 0x68, 0x6B, 0x6D, 0x6E, 0x6F, 0x72, 0x76, 0x7C, 0x7D, 0x7B, 0x80, - 0x7E, 0x76, 0x77, 0x76, 0x75, 0x79, 0x7F, 0x85, 0x88, 0x90, 0x98, 0x9B, 0xA3, 0xA5, 0xA0, 0xA0, - 0xA1, 0xA0, 0xA3, 0xA7, 0xA5, 0x9B, 0x93, 0x8F, 0x7F, 0x71, 0x68, 0x5B, 0x50, 0x4D, 0x4E, 0x50, - 0x50, 0x4F, 0x4C, 0x4F, 0x55, 0x4C, 0x49, 0x59, 0x64, 0x67, 0x6C, 0x77, 0x7E, 0x7F, 0x81, 0x85, - 0x8C, 0x96, 0x99, 0x9C, 0xAB, 0xB3, 0xB0, 0xAF, 0xB1, 0xAE, 0xA5, 0x9E, 0x96, 0x8E, 0x8F, 0x8C, - 0x80, 0x7B, 0x7C, 0x74, 0x66, 0x5F, 0x5E, 0x5B, 0x5B, 0x5C, 0x5B, 0x60, 0x68, 0x69, 0x67, 0x6A, - 0x6B, 0x65, 0x61, 0x62, 0x66, 0x70, 0x7E, 0x83, 0x81, 0x81, 0x82, 0x7E, 0x7E, 0x82, 0x86, 0x8C, - 0x97, 0x9F, 0xA0, 0xA2, 0xA5, 0xA4, 0xA3, 0xA0, 0x9B, 0x98, 0x99, 0x9B, 0x9F, 0xA3, 0x9E, 0x91, - 0x87, 0x84, 0x7D, 0x6F, 0x65, 0x5F, 0x57, 0x51, 0x4F, 0x50, 0x4F, 0x4D, 0x4A, 0x4B, 0x53, 0x61, - 0x68, 0x70, 0x80, 0x8E, 0x94, 0x98, 0x9D, 0x9F, 0x9E, 0x9E, 0xA1, 0xA3, 0xA6, 0xA9, 0xAB, 0xAC, - 0xAE, 0xAF, 0xAB, 0xA7, 0xA9, 0xAA, 0xA6, 0xA2, 0x9E, 0x9D, 0x98, 0x8F, 0x88, 0x7D, 0x71, 0x66, - 0x5A, 0x52, 0x4D, 0x4E, 0x4F, 0x4C, 0x4F, 0x55, 0x58, 0x5C, 0x61, 0x6A, 0x72, 0x74, 0x77, 0x7B, - 0x79, 0x7A, 0x7D, 0x80, 0x7D, 0x7B, 0x84, 0x88, 0x81, 0x7F, 0x85, 0x86, 0x82, 0x87, 0x96, 0x9F, - 0xA2, 0xA6, 0xA4, 0x9E, 0x99, 0x95, 0x90, 0x8F, 0x93, 0x90, 0x85, 0x7D, 0x75, 0x6E, 0x6C, 0x69, - 0x6A, 0x70, 0x70, 0x68, 0x63, 0x5F, 0x55, 0x4F, 0x59, 0x66, 0x6A, 0x6E, 0x72, 0x6D, 0x66, 0x68, - 0x72, 0x7B, 0x84, 0x8B, 0x8C, 0x8F, 0x90, 0x8C, 0x8E, 0x98, 0x9F, 0xA1, 0xA7, 0xAE, 0xAA, 0x9E, - 0x97, 0x92, 0x91, 0x95, 0x97, 0x91, 0x8B, 0x85, 0x74, 0x64, 0x5E, 0x5B, 0x56, 0x55, 0x55, 0x50, - 0x49, 0x44, 0x43, 0x47, 0x52, 0x5D, 0x66, 0x6E, 0x6E, 0x6B, 0x6F, 0x78, 0x81, 0x8B, 0x95, 0x98, - 0x90, 0x8A, 0x87, 0x88, 0x8D, 0x90, 0x92, 0x99, 0x9D, 0x9A, 0x99, 0xA1, 0xA7, 0xA5, 0xA4, 0xA5, - 0xA5, 0xA5, 0x9F, 0x97, 0x94, 0x91, 0x88, 0x7A, 0x74, 0x75, 0x6D, 0x60, 0x5A, 0x5C, 0x5E, 0x56, - 0x52, 0x57, 0x5B, 0x5C, 0x5E, 0x61, 0x6A, 0x6B, 0x6D, 0x77, 0x80, 0x83, 0x87, 0x8D, 0x93, 0x96, - 0x9A, 0x9F, 0xA4, 0xAC, 0xA9, 0xA2, 0xA8, 0xAE, 0xAB, 0xA6, 0xAD, 0xB5, 0xAE, 0xA3, 0x9F, 0x9A, - 0x92, 0x8D, 0x85, 0x82, 0x82, 0x78, 0x66, 0x5D, 0x5F, 0x5E, 0x57, 0x52, 0x4F, 0x51, 0x4F, 0x50, - 0x5C, 0x68, 0x6C, 0x6D, 0x6C, 0x73, 0x79, 0x7B, 0x85, 0x90, 0x93, 0x93, 0x97, 0x9E, 0xA1, 0xA1, - 0xA0, 0x9D, 0x9A, 0x97, 0x90, 0x90, 0x98, 0x9C, 0x98, 0x95, 0x96, 0x8F, 0x81, 0x7D, 0x81, 0x80, - 0x7A, 0x71, 0x68, 0x67, 0x62, 0x58, 0x55, 0x58, 0x55, 0x52, 0x52, 0x4E, 0x4A, 0x4B, 0x51, 0x57, - 0x5F, 0x62, 0x61, 0x66, 0x6E, 0x72, 0x73, 0x7C, 0x84, 0x85, 0x82, 0x84, 0x8F, 0x99, 0x99, 0x9A, - 0xA4, 0xA8, 0xA2, 0x9D, 0xA0, 0xAB, 0xAC, 0xA5, 0xA3, 0xA3, 0x9B, 0x8F, 0x88, 0x88, 0x8B, 0x88, - 0x80, 0x79, 0x77, 0x72, 0x67, 0x65, 0x68, 0x67, 0x61, 0x58, 0x4F, 0x4C, 0x48, 0x49, 0x50, 0x59, - 0x60, 0x5E, 0x5F, 0x6A, 0x6F, 0x72, 0x80, 0x8E, 0x92, 0x91, 0x93, 0x9C, 0xA9, 0xB1, 0xAD, 0xA8, - 0xAC, 0xAB, 0x9D, 0x8E, 0x8E, 0x95, 0x95, 0x94, 0x96, 0x99, 0x98, 0x91, 0x91, 0x9C, 0xA0, 0x9C, - 0x94, 0x8B, 0x87, 0x7F, 0x71, 0x66, 0x63, 0x62, 0x5C, 0x4D, 0x41, 0x3D, 0x3B, 0x3B, 0x40, 0x52, - 0x5E, 0x5E, 0x63, 0x6C, 0x72, 0x7A, 0x84, 0x90, 0x9A, 0x96, 0x90, 0x93, 0x9F, 0xAB, 0xAC, 0xA8, - 0xA7, 0xA7, 0xA4, 0x9D, 0x99, 0x9B, 0xA4, 0xAB, 0xA9, 0xA3, 0xA4, 0xA1, 0x98, 0x92, 0x96, 0x97, - 0x8A, 0x7C, 0x74, 0x6E, 0x67, 0x5F, 0x5C, 0x62, 0x60, 0x53, 0x49, 0x45, 0x49, 0x4A, 0x49, 0x53, - 0x5F, 0x60, 0x5B, 0x61, 0x6F, 0x7B, 0x86, 0x95, 0x9F, 0xA2, 0xA0, 0x9D, 0xA4, 0xA9, 0xAF, 0xB7, - 0xB1, 0xA0, 0x9A, 0x95, 0x89, 0x89, 0x91, 0x97, 0x94, 0x89, 0x84, 0x86, 0x83, 0x80, 0x89, 0x8E, - 0x86, 0x7B, 0x6F, 0x69, 0x66, 0x62, 0x5F, 0x63, 0x60, 0x54, 0x4A, 0x44, 0x45, 0x49, 0x4D, 0x51, - 0x59, 0x5C, 0x57, 0x5B, 0x6C, 0x7B, 0x83, 0x89, 0x8A, 0x8A, 0x89, 0x8C, 0x94, 0x96, 0x96, 0x9A, - 0xA0, 0xA2, 0x9C, 0x95, 0x96, 0x94, 0x8B, 0x88, 0x8B, 0x91, 0x8E, 0x89, 0x8C, 0x8F, 0x8A, 0x84, - 0x7F, 0x7D, 0x7A, 0x70, 0x68, 0x66, 0x67, 0x66, 0x62, 0x64, 0x67, 0x60, 0x53, 0x50, 0x58, 0x5F, - 0x63, 0x63, 0x68, 0x70, 0x72, 0x72, 0x7F, 0x90, 0x98, 0x99, 0x9B, 0xA3, 0xA5, 0xA2, 0xA2, 0xA8, - 0xB1, 0xB6, 0xB0, 0xAA, 0xA9, 0xA5, 0x9B, 0x94, 0x97, 0x9B, 0x94, 0x89, 0x86, 0x8D, 0x92, 0x8A, - 0x84, 0x89, 0x86, 0x80, 0x7D, 0x78, 0x77, 0x74, 0x6D, 0x72, 0x78, 0x6E, 0x60, 0x58, 0x53, 0x53, - 0x51, 0x4F, 0x51, 0x53, 0x50, 0x56, 0x68, 0x73, 0x7A, 0x85, 0x90, 0x9B, 0xA3, 0xA6, 0xAA, 0xB0, - 0xB0, 0xAD, 0xAD, 0xAF, 0xAB, 0xA1, 0x95, 0x91, 0x8E, 0x7E, 0x77, 0x81, 0x83, 0x7B, 0x75, 0x79, - 0x82, 0x7B, 0x6C, 0x6F, 0x78, 0x72, 0x69, 0x69, 0x6D, 0x6D, 0x64, 0x56, 0x55, 0x56, 0x4C, 0x3D, - 0x3C, 0x4A, 0x4D, 0x44, 0x49, 0x5B, 0x66, 0x6B, 0x76, 0x86, 0x91, 0x93, 0x9A, 0xA8, 0xAE, 0xAA, - 0xAF, 0xB5, 0xBB, 0xC3, 0xC0, 0xB6, 0xB0, 0xAD, 0xA6, 0x9D, 0x95, 0x96, 0x98, 0x8A, 0x7C, 0x85, - 0x90, 0x7F, 0x73, 0x80, 0x84, 0x77, 0x70, 0x6B, 0x61, 0x5D, 0x58, 0x4D, 0x4A, 0x49, 0x3E, 0x36, - 0x3C, 0x44, 0x47, 0x49, 0x54, 0x62, 0x68, 0x6C, 0x75, 0x84, 0x8E, 0x95, 0x9F, 0xAA, 0xAB, 0xA2, - 0x9E, 0xA6, 0xAC, 0xA2, 0xA1, 0xAE, 0xB0, 0xA3, 0x98, 0x97, 0x97, 0x8C, 0x84, 0x8A, 0x89, 0x82, - 0x7F, 0x7F, 0x7F, 0x77, 0x6F, 0x72, 0x73, 0x6B, 0x62, 0x5C, 0x58, 0x5A, 0x58, 0x4F, 0x4B, 0x4F, - 0x4C, 0x45, 0x4B, 0x55, 0x56, 0x54, 0x56, 0x65, 0x71, 0x6E, 0x74, 0x7F, 0x82, 0x89, 0x8D, 0x94, - 0x9A, 0x94, 0x99, 0xAD, 0xB6, 0xBD, 0xC4, 0xBF, 0xB9, 0xB9, 0xB5, 0xB0, 0xB6, 0xBD, 0xB8, 0xAD, - 0xA2, 0xA1, 0x9F, 0x8D, 0x86, 0x95, 0x97, 0x82, 0x71, 0x6C, 0x68, 0x66, 0x67, 0x67, 0x6A, 0x63, - 0x54, 0x4F, 0x51, 0x53, 0x57, 0x54, 0x50, 0x5B, 0x5F, 0x5A, 0x68, 0x78, 0x75, 0x79, 0x86, 0x8C, - 0x8B, 0x94, 0xA6, 0xB5, 0xBD, 0xC3, 0xC7, 0xCA, 0xBD, 0xB8, 0xBF, 0xAF, 0xA0, 0xA1, 0xA2, 0x9E, - 0x91, 0x83, 0x7F, 0x7D, 0x79, 0x77, 0x78, 0x7A, 0x70, 0x62, 0x5D, 0x59, 0x57, 0x56, 0x54, 0x54, - 0x51, 0x3F, 0x2C, 0x2A, 0x35, 0x3C, 0x36, 0x39, 0x40, 0x39, 0x3A, 0x4B, 0x5D, 0x6A, 0x6D, 0x76, - 0x85, 0x8F, 0x9B, 0xA8, 0xA8, 0xA4, 0xB2, 0xC1, 0xAF, 0xA4, 0xAE, 0xAA, 0x9F, 0x9B, 0x9C, 0xA0, - 0x99, 0x8D, 0x90, 0x97, 0x91, 0x87, 0x8E, 0x99, 0x90, 0x7C, 0x6D, 0x69, 0x66, 0x5C, 0x57, 0x5D, - 0x5C, 0x46, 0x35, 0x3C, 0x47, 0x48, 0x48, 0x4E, 0x5C, 0x60, 0x5C, 0x68, 0x7E, 0x87, 0x95, 0xAD, - 0xB5, 0xB3, 0xB6, 0xBB, 0xC0, 0xBF, 0xC1, 0xC8, 0xB7, 0xA3, 0x9F, 0x9D, 0x97, 0x96, 0x9F, 0xA6, - 0x99, 0x91, 0x93, 0x8E, 0x83, 0x7E, 0x84, 0x87, 0x7F, 0x74, 0x66, 0x64, 0x6C, 0x6A, 0x65, 0x68, - 0x65, 0x56, 0x49, 0x45, 0x4B, 0x52, 0x54, 0x57, 0x58, 0x54, 0x55, 0x5E, 0x6E, 0x7A, 0x83, 0x94, - 0x99, 0x87, 0x80, 0x8A, 0x93, 0x9A, 0xA9, 0xBB, 0xB3, 0x94, 0x82, 0x84, 0x88, 0x8C, 0x99, 0xBC, - 0xDA, 0xB3, 0x71, 0x69, 0x89, 0xA3, 0xB2, 0xB5, 0xA9, 0x7A, 0x40, 0x2C, 0x3E, 0x67, 0x86, 0x7D, - 0x68, 0x51, 0x2C, 0x1E, 0x4B, 0x84, 0x86, 0x6E, 0x62, 0x46, 0x2B, 0x4B, 0x8C, 0xB7, 0xC4, 0xA9, - 0x86, 0x86, 0x8D, 0x92, 0xA9, 0xC5, 0xE0, 0xDD, 0x9B, 0x69, 0x80, 0xA7, 0xB7, 0xC3, 0xC0, 0xB1, - 0xA2, 0x86, 0x84, 0xA9, 0xB7, 0xA9, 0x9D, 0x91, 0x75, 0x53, 0x4E, 0x61, 0x76, 0x75, 0x55, 0x41, - 0x39, 0x1D, 0x22, 0x4F, 0x68, 0x64, 0x56, 0x4A, 0x4E, 0x5D, 0x61, 0x66, 0x81, 0x80, 0x5E, 0x5C, - 0x64, 0x5E, 0x64, 0x81, 0xB0, 0xBB, 0x88, 0x69, 0x86, 0x9D, 0x97, 0x9F, 0xC2, 0xD9, 0xB8, 0x8A, - 0x94, 0xB0, 0xAD, 0x9F, 0x95, 0x96, 0x7C, 0x46, 0x36, 0x4A, 0x59, 0x54, 0x41, 0x35, 0x2B, 0x23, - 0x3A, 0x65, 0x7E, 0x72, 0x64, 0x69, 0x66, 0x5B, 0x5D, 0x77, 0x8A, 0x76, 0x61, 0x5B, 0x56, 0x6B, - 0x97, 0xB8, 0xA9, 0x7F, 0x7C, 0x91, 0x94, 0xA0, 0xC5, 0xE9, 0xE1, 0xB7, 0xA6, 0xAE, 0xAE, 0xAE, - 0xB4, 0xB5, 0xAE, 0x8D, 0x64, 0x66, 0x80, 0x88, 0x8C, 0x91, 0x82, 0x66, 0x63, 0x7D, 0x8C, 0x97, - 0xA4, 0x99, 0x81, 0x69, 0x5D, 0x6A, 0x7C, 0x83, 0x7F, 0x6A, 0x67, 0x84, 0x87, 0x71, 0x7A, 0x89, - 0x7A, 0x7C, 0x8D, 0x99, 0xBB, 0xC8, 0xA6, 0x98, 0xA0, 0x92, 0x85, 0x8B, 0x91, 0x96, 0x8F, 0x75, - 0x64, 0x6C, 0x6A, 0x61, 0x78, 0x84, 0x75, 0x77, 0x74, 0x62, 0x6C, 0x7E, 0x76, 0x66, 0x63, 0x5C, - 0x4C, 0x4E, 0x56, 0x4C, 0x4D, 0x6F, 0x89, 0x72, 0x58, 0x5D, 0x5A, 0x5C, 0x72, 0x7D, 0x91, 0xB3, - 0xA7, 0x84, 0x96, 0xA9, 0x88, 0x81, 0xA0, 0x9A, 0x85, 0x81, 0x75, 0x6A, 0x7B, 0x89, 0x80, 0x88, - 0x8C, 0x70, 0x73, 0x8E, 0x8D, 0x84, 0x84, 0x83, 0x6E, 0x5D, 0x6D, 0x75, 0x66, 0x66, 0x7F, 0x99, - 0x8F, 0x73, 0x6F, 0x68, 0x49, 0x4F, 0x82, 0x9D, 0xAC, 0xBF, 0xA5, 0x92, 0xA1, 0x89, 0x70, 0x8E, - 0xB2, 0x9E, 0x79, 0x83, 0x84, 0x64, 0x66, 0x78, 0x7B, 0x87, 0x8E, 0x80, 0x76, 0x79, 0x77, 0x71, - 0x74, 0x7A, 0x78, 0x61, 0x58, 0x6E, 0x6B, 0x58, 0x73, 0xA0, 0x99, 0x72, 0x75, 0x74, 0x47, 0x53, - 0x7D, 0x7C, 0x94, 0xB2, 0x90, 0x79, 0x92, 0x7E, 0x55, 0x7D, 0xAB, 0x88, 0x70, 0x86, 0x7F, 0x62, - 0x64, 0x77, 0x7F, 0x88, 0x8F, 0x81, 0x72, 0x6C, 0x60, 0x52, 0x5F, 0x80, 0x84, 0x6A, 0x5F, 0x6B, - 0x81, 0x89, 0x7D, 0x77, 0x84, 0x7E, 0x60, 0x69, 0x92, 0x97, 0x97, 0xAE, 0xB1, 0xA4, 0x93, 0x7B, - 0x75, 0x86, 0x98, 0x9E, 0x98, 0x99, 0x9C, 0x8E, 0x80, 0x89, 0x99, 0x9D, 0xA3, 0xAA, 0x9A, 0x81, - 0x7B, 0x78, 0x6F, 0x77, 0x86, 0x82, 0x73, 0x70, 0x81, 0x97, 0x8A, 0x7B, 0x8D, 0x80, 0x5C, 0x6E, - 0x8F, 0x8F, 0x97, 0xB0, 0xA9, 0x89, 0x87, 0x81, 0x5F, 0x6A, 0x8F, 0x86, 0x74, 0x86, 0x90, 0x73, - 0x69, 0x82, 0x85, 0x81, 0x8D, 0x8F, 0x82, 0x7B, 0x7C, 0x6E, 0x5E, 0x6E, 0x7F, 0x72, 0x70, 0x87, - 0x85, 0x61, 0x5A, 0x5A, 0x3C, 0x48, 0x71, 0x74, 0x7D, 0xA1, 0x98, 0x6F, 0x6C, 0x72, 0x5B, 0x5A, - 0x7B, 0x8C, 0x7D, 0x78, 0x85, 0x76, 0x62, 0x6E, 0x7F, 0x87, 0x8B, 0x90, 0x8A, 0x7A, 0x75, 0x6E, - 0x62, 0x68, 0x77, 0x7A, 0x79, 0x8F, 0x97, 0x6A, 0x5F, 0x6D, 0x47, 0x3A, 0x65, 0x7B, 0x7D, 0x97, - 0xB2, 0x98, 0x78, 0x85, 0x74, 0x53, 0x74, 0xA2, 0xA0, 0x95, 0xA3, 0xA2, 0x7D, 0x6D, 0x83, 0x92, - 0x93, 0x9C, 0xA4, 0x9B, 0x8C, 0x84, 0x75, 0x69, 0x71, 0x82, 0x9E, 0xB0, 0x97, 0x84, 0x8E, 0x67, - 0x36, 0x4B, 0x6E, 0x73, 0x7F, 0xA4, 0xB3, 0x92, 0x81, 0x82, 0x5B, 0x47, 0x71, 0x91, 0x8F, 0x94, - 0xAB, 0xA7, 0x8A, 0x86, 0x89, 0x7B, 0x81, 0x9D, 0x9F, 0x83, 0x82, 0x8D, 0x6D, 0x54, 0x69, 0x86, - 0x85, 0x74, 0x87, 0x91, 0x5E, 0x4E, 0x65, 0x52, 0x4F, 0x7A, 0x97, 0x98, 0x92, 0x9B, 0x97, 0x74, - 0x66, 0x6D, 0x64, 0x64, 0x7C, 0x8E, 0x8D, 0x90, 0x96, 0x87, 0x77, 0x79, 0x83, 0x89, 0x87, 0x8E, - 0x91, 0x81, 0x8A, 0x96, 0x7B, 0x75, 0x82, 0x6B, 0x61, 0x7C, 0x80, 0x70, 0x81, 0x9E, 0x8E, 0x7E, - 0x9B, 0x9A, 0x7A, 0x83, 0x88, 0x74, 0x7D, 0x91, 0x93, 0x92, 0x9D, 0xA3, 0x9A, 0x97, 0x97, 0x90, - 0x8A, 0x82, 0x80, 0x7D, 0x68, 0x6C, 0x8E, 0x93, 0x80, 0x83, 0x8F, 0x70, 0x56, 0x71, 0x72, 0x5D, - 0x79, 0x95, 0x89, 0x7E, 0x87, 0x82, 0x63, 0x57, 0x61, 0x61, 0x63, 0x70, 0x7B, 0x87, 0x8C, 0x89, - 0x8A, 0x88, 0x7F, 0x7A, 0x7A, 0x71, 0x6A, 0x6E, 0x6A, 0x6B, 0x7C, 0x71, 0x64, 0x7C, 0x6E, 0x47, - 0x5F, 0x72, 0x55, 0x62, 0x95, 0x95, 0x75, 0x87, 0x9C, 0x73, 0x5B, 0x74, 0x71, 0x5F, 0x6B, 0x81, - 0x87, 0x85, 0x90, 0x9C, 0x92, 0x83, 0x83, 0x82, 0x71, 0x6A, 0x76, 0x7B, 0x86, 0x92, 0x84, 0x83, - 0x84, 0x60, 0x56, 0x6E, 0x69, 0x67, 0x8A, 0x9F, 0x8B, 0x86, 0x9C, 0x8A, 0x67, 0x6C, 0x6E, 0x5E, - 0x6C, 0x89, 0x90, 0x96, 0xAF, 0xBA, 0xAD, 0xA9, 0xA8, 0x9C, 0x92, 0x85, 0x77, 0x7D, 0x8C, 0x8A, - 0x83, 0x8D, 0x8C, 0x6E, 0x65, 0x70, 0x61, 0x5F, 0x84, 0x9E, 0x93, 0x8D, 0xA1, 0x98, 0x72, 0x78, - 0x82, 0x5A, 0x54, 0x7B, 0x7F, 0x76, 0x94, 0xAD, 0xA3, 0xA0, 0xA9, 0x9A, 0x88, 0x8A, 0x7F, 0x72, - 0x80, 0x8B, 0x7C, 0x76, 0x83, 0x72, 0x58, 0x64, 0x5F, 0x46, 0x5E, 0x89, 0x8E, 0x8C, 0x9C, 0xA1, - 0x82, 0x72, 0x7C, 0x65, 0x4B, 0x62, 0x74, 0x70, 0x87, 0xA8, 0xAC, 0xA4, 0xA5, 0x9D, 0x89, 0x7D, - 0x76, 0x74, 0x79, 0x80, 0x7F, 0x73, 0x72, 0x79, 0x66, 0x5A, 0x66, 0x5B, 0x53, 0x73, 0x8E, 0x89, - 0x8D, 0xA4, 0x9C, 0x7A, 0x77, 0x76, 0x56, 0x50, 0x66, 0x69, 0x6A, 0x8A, 0xAA, 0xAC, 0xAA, 0xB4, - 0xAB, 0x94, 0x8B, 0x87, 0x81, 0x80, 0x7E, 0x7C, 0x7C, 0x78, 0x6B, 0x63, 0x64, 0x5E, 0x64, 0x7D, - 0x87, 0x86, 0x96, 0x9F, 0x8B, 0x76, 0x7B, 0x72, 0x55, 0x58, 0x67, 0x5D, 0x6D, 0x8C, 0x8D, 0x92, - 0xA9, 0xAA, 0x95, 0x8D, 0x96, 0x91, 0x7A, 0x78, 0x81, 0x6F, 0x59, 0x60, 0x5F, 0x4D, 0x59, 0x73, - 0x70, 0x71, 0x89, 0x91, 0x7E, 0x73, 0x7C, 0x77, 0x60, 0x5F, 0x6C, 0x64, 0x61, 0x75, 0x80, 0x84, - 0x96, 0xA6, 0x9F, 0x97, 0x9F, 0xA8, 0xA6, 0x99, 0x97, 0x9F, 0x8A, 0x6F, 0x6F, 0x5E, 0x42, 0x4C, - 0x5F, 0x5D, 0x63, 0x7C, 0x87, 0x7D, 0x81, 0x8E, 0x80, 0x6C, 0x70, 0x6E, 0x61, 0x6D, 0x87, 0x8F, - 0x96, 0xAC, 0xB6, 0xAD, 0xA4, 0x9D, 0x95, 0x97, 0x9B, 0x93, 0x8F, 0x97, 0x94, 0x85, 0x81, 0x7B, - 0x69, 0x60, 0x62, 0x6B, 0x7A, 0x89, 0x94, 0x97, 0x95, 0x94, 0x8E, 0x83, 0x78, 0x6E, 0x68, 0x69, - 0x6F, 0x7C, 0x90, 0xA4, 0xAB, 0xB2, 0xBC, 0xB3, 0xA4, 0xA6, 0x9C, 0x87, 0x87, 0x83, 0x67, 0x56, - 0x56, 0x50, 0x4E, 0x59, 0x58, 0x56, 0x6B, 0x79, 0x72, 0x78, 0x8A, 0x85, 0x74, 0x76, 0x7D, 0x6E, - 0x61, 0x6B, 0x76, 0x77, 0x81, 0x8C, 0x88, 0x88, 0x96, 0xA1, 0xA0, 0x9C, 0xA1, 0xA1, 0x8C, 0x79, - 0x76, 0x63, 0x4F, 0x5A, 0x5D, 0x50, 0x62, 0x7A, 0x70, 0x6C, 0x7E, 0x7A, 0x66, 0x6A, 0x74, 0x67, - 0x62, 0x76, 0x81, 0x84, 0x90, 0x98, 0x96, 0x97, 0x9B, 0x9D, 0x9E, 0x9D, 0x9B, 0x9B, 0x95, 0x83, - 0x73, 0x6A, 0x5B, 0x52, 0x56, 0x52, 0x4F, 0x5F, 0x6C, 0x6E, 0x78, 0x84, 0x84, 0x7E, 0x7C, 0x7D, - 0x76, 0x73, 0x80, 0x84, 0x81, 0x92, 0xA3, 0xA2, 0xA2, 0x9F, 0x9C, 0xA8, 0xB2, 0xB0, 0xAC, 0xA9, - 0xA1, 0x93, 0x7D, 0x63, 0x51, 0x49, 0x43, 0x45, 0x5A, 0x6A, 0x69, 0x70, 0x80, 0x80, 0x71, 0x6F, - 0x76, 0x6E, 0x64, 0x70, 0x7A, 0x7E, 0x9A, 0xB0, 0xAC, 0xB3, 0xB0, 0x90, 0x8B, 0xA2, 0x97, 0x81, - 0x8B, 0x93, 0x80, 0x70, 0x6D, 0x5E, 0x52, 0x58, 0x4F, 0x44, 0x5E, 0x77, 0x74, 0x7F, 0x99, 0x98, - 0x83, 0x7F, 0x84, 0x78, 0x6E, 0x7B, 0x81, 0x7F, 0x95, 0xAF, 0xB0, 0xA3, 0x98, 0x95, 0xA1, 0xA5, - 0x99, 0x9D, 0xA4, 0x91, 0x7D, 0x71, 0x5F, 0x54, 0x4E, 0x45, 0x50, 0x67, 0x6E, 0x71, 0x77, 0x78, - 0x79, 0x74, 0x69, 0x6F, 0x79, 0x77, 0x7E, 0x8F, 0x9C, 0xA6, 0xAE, 0xBC, 0xC6, 0xBB, 0xAD, 0xA6, - 0x9E, 0x97, 0x91, 0x93, 0x94, 0x7F, 0x6E, 0x6E, 0x5D, 0x4F, 0x4E, 0x3F, 0x3C, 0x53, 0x5F, 0x65, - 0x70, 0x7D, 0x85, 0x83, 0x89, 0x8B, 0x78, 0x7A, 0x8D, 0x85, 0x89, 0xA5, 0xA4, 0x99, 0x9E, 0x9B, - 0x9B, 0x9B, 0x8E, 0x93, 0x98, 0x87, 0x7D, 0x73, 0x5F, 0x5F, 0x5B, 0x41, 0x3F, 0x52, 0x4F, 0x43, - 0x4E, 0x5A, 0x4E, 0x48, 0x55, 0x55, 0x55, 0x72, 0x8A, 0x86, 0x8E, 0xAA, 0xB2, 0xA6, 0xA9, 0xAD, - 0xA9, 0xB5, 0xBC, 0xAE, 0xB7, 0xC0, 0x9F, 0x87, 0x84, 0x68, 0x4A, 0x48, 0x3C, 0x2D, 0x32, 0x34, - 0x2C, 0x33, 0x42, 0x49, 0x47, 0x51, 0x6E, 0x81, 0x88, 0x9C, 0xAE, 0xB0, 0xB9, 0xBF, 0xB7, 0xB1, - 0xB0, 0xAC, 0xB4, 0xBD, 0xB4, 0xAF, 0xB0, 0x9D, 0x89, 0x7C, 0x64, 0x5D, 0x6B, 0x5F, 0x55, 0x61, - 0x58, 0x49, 0x53, 0x4F, 0x3D, 0x4B, 0x66, 0x6F, 0x81, 0xA2, 0xB4, 0xB4, 0xB6, 0xBC, 0xB4, 0xA2, - 0x9E, 0xA5, 0xAE, 0xBA, 0xBA, 0xB4, 0xB8, 0xA9, 0x86, 0x73, 0x68, 0x5E, 0x61, 0x5F, 0x59, 0x68, - 0x73, 0x5F, 0x4E, 0x56, 0x59, 0x50, 0x54, 0x61, 0x69, 0x7D, 0x97, 0xA0, 0xA3, 0xAE, 0xB1, 0xA6, - 0x9D, 0x9C, 0x9F, 0xA8, 0xB4, 0xB1, 0xA9, 0xA9, 0x97, 0x7C, 0x74, 0x67, 0x5C, 0x70, 0x6F, 0x53, - 0x52, 0x55, 0x41, 0x36, 0x35, 0x36, 0x42, 0x53, 0x67, 0x77, 0x7F, 0x8B, 0x8F, 0x89, 0x97, 0xAB, - 0xB0, 0xB5, 0xB8, 0xB7, 0xBD, 0xB8, 0xA3, 0x94, 0x92, 0x8E, 0x7A, 0x66, 0x62, 0x5F, 0x5A, 0x5B, - 0x56, 0x53, 0x5A, 0x54, 0x4C, 0x55, 0x5B, 0x5E, 0x6C, 0x75, 0x78, 0x82, 0x8F, 0x96, 0x97, 0x9C, - 0xA6, 0xAD, 0xAB, 0xA2, 0x9B, 0xA3, 0xB5, 0xB3, 0xA2, 0x9D, 0x94, 0x77, 0x67, 0x63, 0x5D, 0x67, - 0x6B, 0x58, 0x59, 0x61, 0x4E, 0x4A, 0x56, 0x51, 0x55, 0x63, 0x64, 0x65, 0x71, 0x82, 0x8C, 0x89, - 0x93, 0xA5, 0xA7, 0xA9, 0xA9, 0xA2, 0xA6, 0xAB, 0xAB, 0xAF, 0xA1, 0x8C, 0x85, 0x76, 0x65, 0x64, - 0x5E, 0x5D, 0x5C, 0x42, 0x31, 0x3B, 0x40, 0x43, 0x4A, 0x4E, 0x55, 0x59, 0x5B, 0x6C, 0x83, 0x98, - 0xA6, 0xA6, 0xAC, 0xB7, 0xB9, 0xBC, 0xC4, 0xC6, 0xC4, 0xB9, 0xAF, 0xA6, 0x89, 0x75, 0x83, 0x84, - 0x6D, 0x62, 0x60, 0x63, 0x64, 0x52, 0x40, 0x43, 0x4F, 0x53, 0x51, 0x59, 0x60, 0x5A, 0x5E, 0x73, - 0x88, 0x9E, 0xAA, 0xA7, 0xAF, 0xC2, 0xC6, 0xBF, 0xBA, 0xBB, 0xBF, 0xCB, 0xD3, 0xB4, 0x8E, 0xA0, - 0xAE, 0x8F, 0x7C, 0x6C, 0x51, 0x54, 0x5E, 0x53, 0x53, 0x55, 0x48, 0x44, 0x50, 0x59, 0x5A, 0x63, - 0x72, 0x74, 0x7F, 0x9B, 0x9D, 0x97, 0xA3, 0xAB, 0xB5, 0xBB, 0xAB, 0xA5, 0xB3, 0xAD, 0x9B, 0xA8, - 0xB9, 0x93, 0x60, 0x6F, 0x90, 0x7E, 0x51, 0x34, 0x3F, 0x63, 0x5C, 0x2E, 0x24, 0x3D, 0x49, 0x45, - 0x4A, 0x62, 0x70, 0x6A, 0x6B, 0x83, 0xA2, 0xAC, 0x97, 0x9A, 0xC2, 0xD0, 0xBC, 0xA9, 0xAC, 0xBD, - 0xB1, 0x91, 0x95, 0xA4, 0x80, 0x53, 0x63, 0x83, 0x68, 0x38, 0x36, 0x49, 0x5A, 0x57, 0x2F, 0x2A, - 0x60, 0x6E, 0x53, 0x57, 0x5D, 0x66, 0x83, 0x85, 0x76, 0x89, 0x9E, 0x9F, 0xA5, 0xAD, 0xAB, 0xA6, - 0xA7, 0xAC, 0xAF, 0xAD, 0x9F, 0x8C, 0x9B, 0xB5, 0x8D, 0x54, 0x70, 0x99, 0x7A, 0x5A, 0x57, 0x56, - 0x6E, 0x72, 0x44, 0x45, 0x76, 0x6F, 0x53, 0x5E, 0x6A, 0x6F, 0x80, 0x82, 0x7A, 0x88, 0x99, 0x99, - 0x9C, 0xA3, 0xA0, 0xA1, 0xA7, 0xA6, 0xA2, 0x9F, 0x93, 0x8C, 0x99, 0xA1, 0x8C, 0x6A, 0x66, 0x86, - 0x87, 0x53, 0x3C, 0x61, 0x7D, 0x6F, 0x4B, 0x3A, 0x5C, 0x79, 0x5F, 0x55, 0x6D, 0x72, 0x7A, 0x89, - 0x7C, 0x7F, 0x9B, 0x9E, 0x97, 0x9C, 0x9E, 0xA1, 0xA6, 0xA5, 0xA0, 0x9E, 0xA2, 0x9B, 0x8D, 0x89, - 0x7E, 0x7C, 0x8D, 0x73, 0x53, 0x72, 0x7D, 0x5E, 0x60, 0x60, 0x54, 0x6F, 0x7B, 0x60, 0x69, 0x85, - 0x86, 0x89, 0x92, 0x87, 0x85, 0x9B, 0x9C, 0x87, 0x8E, 0xA4, 0xA0, 0x9B, 0xA1, 0x9D, 0x9B, 0xA1, - 0x96, 0x8C, 0x95, 0x93, 0x7E, 0x74, 0x7C, 0x86, 0x7A, 0x5F, 0x5C, 0x76, 0x78, 0x5B, 0x57, 0x73, - 0x7B, 0x67, 0x62, 0x72, 0x79, 0x76, 0x70, 0x75, 0x84, 0x7D, 0x70, 0x83, 0x91, 0x83, 0x89, 0x99, - 0x95, 0x93, 0x94, 0x97, 0x9A, 0x8E, 0x86, 0x8D, 0x8C, 0x84, 0x7F, 0x7B, 0x79, 0x7A, 0x7A, 0x68, - 0x57, 0x68, 0x6B, 0x53, 0x5D, 0x65, 0x5C, 0x6F, 0x6B, 0x51, 0x66, 0x6D, 0x5B, 0x71, 0x75, 0x65, - 0x7E, 0x8A, 0x76, 0x7B, 0x8F, 0x92, 0x8E, 0x8D, 0x90, 0x93, 0x9A, 0x95, 0x8A, 0x8F, 0x8E, 0x88, - 0x8D, 0x80, 0x6F, 0x7E, 0x82, 0x78, 0x72, 0x68, 0x78, 0x88, 0x69, 0x5C, 0x71, 0x73, 0x6C, 0x65, - 0x60, 0x6D, 0x6F, 0x67, 0x6B, 0x6A, 0x6E, 0x7B, 0x7E, 0x7F, 0x85, 0x8D, 0x9D, 0xA8, 0xA4, 0xA4, - 0xAC, 0xB1, 0xA6, 0x99, 0x9F, 0xA2, 0x98, 0x8D, 0x87, 0x89, 0x87, 0x83, 0x84, 0x6D, 0x5F, 0x82, - 0x7D, 0x52, 0x61, 0x71, 0x64, 0x72, 0x6D, 0x59, 0x73, 0x7D, 0x6A, 0x76, 0x7D, 0x78, 0x88, 0x8B, - 0x80, 0x8E, 0x99, 0x8D, 0x8A, 0x97, 0x97, 0x8D, 0x90, 0x96, 0x92, 0x94, 0x92, 0x8C, 0x90, 0x8C, - 0x85, 0x89, 0x7E, 0x78, 0x8C, 0x7C, 0x60, 0x78, 0x82, 0x5F, 0x5F, 0x76, 0x6B, 0x5F, 0x66, 0x6D, - 0x71, 0x71, 0x70, 0x79, 0x80, 0x7E, 0x81, 0x8B, 0x8A, 0x80, 0x8A, 0x97, 0x8E, 0x8D, 0x97, 0x95, - 0x98, 0x99, 0x8D, 0x91, 0x97, 0x88, 0x83, 0x83, 0x7C, 0x7E, 0x75, 0x70, 0x7E, 0x6E, 0x5E, 0x75, - 0x6D, 0x51, 0x60, 0x69, 0x5D, 0x68, 0x6B, 0x66, 0x77, 0x79, 0x71, 0x80, 0x82, 0x77, 0x85, 0x8D, - 0x83, 0x8D, 0x96, 0x8C, 0x8E, 0x99, 0x94, 0x8E, 0x8F, 0x8F, 0x89, 0x83, 0x85, 0x86, 0x7F, 0x79, - 0x7C, 0x7B, 0x6C, 0x66, 0x76, 0x79, 0x63, 0x61, 0x75, 0x76, 0x6B, 0x6A, 0x72, 0x75, 0x70, 0x6E, - 0x6C, 0x66, 0x6A, 0x76, 0x77, 0x75, 0x7C, 0x89, 0x8D, 0x81, 0x84, 0x99, 0x97, 0x88, 0x8C, 0x93, - 0x92, 0x90, 0x87, 0x84, 0x85, 0x80, 0x7E, 0x78, 0x6D, 0x71, 0x74, 0x6D, 0x69, 0x6B, 0x72, 0x70, - 0x61, 0x6B, 0x7C, 0x6E, 0x6C, 0x79, 0x71, 0x75, 0x81, 0x7B, 0x83, 0x8E, 0x85, 0x8B, 0x8C, 0x7E, - 0x8B, 0x8F, 0x77, 0x7F, 0x8D, 0x81, 0x89, 0x95, 0x85, 0x88, 0x95, 0x8A, 0x88, 0x95, 0x91, 0x8C, - 0x92, 0x8D, 0x87, 0x8D, 0x89, 0x80, 0x84, 0x82, 0x84, 0x8B, 0x77, 0x71, 0x8F, 0x8D, 0x70, 0x74, - 0x86, 0x83, 0x74, 0x6C, 0x73, 0x79, 0x77, 0x7B, 0x7B, 0x78, 0x82, 0x8D, 0x87, 0x7E, 0x89, 0x9D, - 0x96, 0x8B, 0x99, 0xA0, 0x97, 0x99, 0x99, 0x95, 0x96, 0x8A, 0x7F, 0x82, 0x80, 0x7B, 0x7A, 0x75, - 0x71, 0x6A, 0x66, 0x72, 0x6C, 0x4E, 0x57, 0x74, 0x62, 0x52, 0x6C, 0x72, 0x66, 0x70, 0x73, 0x6D, - 0x7B, 0x81, 0x7C, 0x7B, 0x7C, 0x92, 0x98, 0x7C, 0x85, 0xA4, 0x97, 0x8A, 0x91, 0x8E, 0x94, 0x9B, - 0x8C, 0x86, 0x8D, 0x92, 0x8B, 0x7D, 0x7C, 0x81, 0x79, 0x71, 0x69, 0x62, 0x65, 0x68, 0x6E, 0x68, - 0x4D, 0x59, 0x84, 0x74, 0x4A, 0x5B, 0x84, 0x7D, 0x5E, 0x63, 0x7E, 0x85, 0x7D, 0x7D, 0x7F, 0x7E, - 0x92, 0xA7, 0x8B, 0x74, 0x9C, 0xAE, 0x8D, 0x8B, 0x98, 0x94, 0x98, 0x87, 0x75, 0x84, 0x88, 0x7E, - 0x79, 0x6B, 0x73, 0x7B, 0x65, 0x67, 0x72, 0x66, 0x63, 0x64, 0x6F, 0x7B, 0x5A, 0x55, 0x8C, 0x84, - 0x51, 0x6B, 0x97, 0x84, 0x67, 0x7D, 0x99, 0x89, 0x84, 0x9D, 0x96, 0x7E, 0x8B, 0xA0, 0x90, 0x7D, - 0x93, 0xA2, 0x89, 0x84, 0x95, 0x92, 0x92, 0x8D, 0x80, 0x8C, 0x8C, 0x7F, 0x7E, 0x70, 0x6E, 0x7C, - 0x66, 0x58, 0x68, 0x62, 0x5C, 0x60, 0x68, 0x7A, 0x5F, 0x4C, 0x86, 0x96, 0x5C, 0x5C, 0x93, 0xAB, - 0x8C, 0x6E, 0x95, 0xB2, 0x92, 0x91, 0xA8, 0x9A, 0x9A, 0xAD, 0xA6, 0x96, 0x97, 0xA7, 0xA7, 0x8B, - 0x85, 0x95, 0x92, 0x80, 0x76, 0x7C, 0x8A, 0x7C, 0x6B, 0x70, 0x6E, 0x69, 0x6B, 0x60, 0x60, 0x6A, - 0x65, 0x5D, 0x56, 0x5E, 0x85, 0x8A, 0x55, 0x57, 0x9A, 0xA1, 0x6B, 0x68, 0x9F, 0xAE, 0x86, 0x81, - 0xA7, 0xAB, 0x97, 0x9B, 0xA0, 0x97, 0x98, 0x9E, 0x98, 0x87, 0x83, 0x95, 0x94, 0x76, 0x69, 0x78, - 0x7F, 0x71, 0x5E, 0x5C, 0x6A, 0x6D, 0x60, 0x56, 0x59, 0x5E, 0x5C, 0x59, 0x5B, 0x5C, 0x5F, 0x60, - 0x69, 0x84, 0x7C, 0x53, 0x67, 0xA4, 0x98, 0x66, 0x78, 0xAC, 0xA4, 0x7B, 0x85, 0xAD, 0xAA, 0x8D, - 0x8E, 0x9B, 0x96, 0x91, 0x92, 0x89, 0x82, 0x8A, 0x88, 0x7E, 0x76, 0x65, 0x63, 0x76, 0x6C, 0x55, - 0x5C, 0x61, 0x5F, 0x5F, 0x58, 0x5F, 0x6F, 0x68, 0x62, 0x66, 0x68, 0x76, 0x7D, 0x70, 0x76, 0x9A, - 0xA6, 0x81, 0x6C, 0x9B, 0xC1, 0x93, 0x69, 0x95, 0xC2, 0x9F, 0x76, 0x93, 0xB3, 0xA3, 0x90, 0x8D, - 0x8E, 0x92, 0x8B, 0x81, 0x86, 0x7E, 0x6F, 0x74, 0x7A, 0x71, 0x61, 0x5E, 0x71, 0x6F, 0x56, 0x5E, - 0x71, 0x6A, 0x63, 0x66, 0x6F, 0x7A, 0x7D, 0x7C, 0x7D, 0x7C, 0x7E, 0x82, 0x99, 0xAE, 0x82, 0x5F, - 0x9F, 0xC8, 0x8C, 0x70, 0x9D, 0xB9, 0xA5, 0x85, 0x84, 0xA2, 0xAC, 0x9B, 0x8D, 0x8B, 0x8E, 0x8D, - 0x85, 0x81, 0x7F, 0x6F, 0x67, 0x76, 0x77, 0x60, 0x59, 0x64, 0x6C, 0x6F, 0x66, 0x5D, 0x6E, 0x7F, - 0x75, 0x6E, 0x78, 0x85, 0x87, 0x7F, 0x83, 0x92, 0x8E, 0x8C, 0x92, 0x8D, 0x96, 0xA4, 0x88, 0x71, - 0x8C, 0xA9, 0x9B, 0x71, 0x68, 0x95, 0xAC, 0x8B, 0x71, 0x7E, 0x93, 0x90, 0x7B, 0x79, 0x85, 0x7F, - 0x76, 0x7A, 0x7B, 0x73, 0x68, 0x68, 0x79, 0x7A, 0x5D, 0x50, 0x6A, 0x7C, 0x68, 0x56, 0x69, 0x7C, - 0x75, 0x6F, 0x75, 0x7E, 0x84, 0x80, 0x7E, 0x8B, 0x91, 0x88, 0x83, 0x81, 0x8E, 0xAD, 0xA2, 0x66, - 0x67, 0xAA, 0xB2, 0x73, 0x5B, 0x84, 0xA3, 0x85, 0x5F, 0x6D, 0x83, 0x74, 0x6A, 0x73, 0x75, 0x6E, - 0x62, 0x63, 0x7B, 0x81, 0x62, 0x55, 0x72, 0x8B, 0x75, 0x54, 0x60, 0x7B, 0x78, 0x73, 0x7A, 0x81, - 0x83, 0x7F, 0x87, 0x97, 0x91, 0x83, 0x88, 0x8F, 0x90, 0x8A, 0x80, 0x7D, 0x7D, 0x86, 0x99, 0x83, - 0x59, 0x6C, 0x9F, 0x9B, 0x6C, 0x66, 0x95, 0xA1, 0x7E, 0x7D, 0x98, 0x92, 0x83, 0x83, 0x87, 0x91, - 0x86, 0x6C, 0x74, 0x8A, 0x7F, 0x62, 0x54, 0x68, 0x7C, 0x68, 0x56, 0x63, 0x6E, 0x72, 0x79, 0x77, - 0x7C, 0x8B, 0x90, 0x94, 0x9F, 0xA1, 0xA1, 0xA7, 0xA8, 0xA4, 0xA1, 0x9F, 0xA0, 0x96, 0x7F, 0x7C, - 0x98, 0x9A, 0x6C, 0x4C, 0x6B, 0x97, 0x87, 0x58, 0x5D, 0x8A, 0x91, 0x7A, 0x7D, 0x8F, 0x8F, 0x81, - 0x7F, 0x91, 0x98, 0x7C, 0x65, 0x75, 0x86, 0x77, 0x5F, 0x5E, 0x70, 0x77, 0x68, 0x63, 0x76, 0x7E, - 0x75, 0x78, 0x8B, 0x9A, 0x94, 0x86, 0x93, 0xA9, 0x9F, 0x8C, 0x91, 0x9D, 0x99, 0x82, 0x76, 0x7C, - 0x71, 0x6D, 0x8D, 0x84, 0x48, 0x46, 0x7B, 0x81, 0x63, 0x68, 0x86, 0x8B, 0x7F, 0x84, 0x99, 0x9E, - 0x8D, 0x7D, 0x85, 0x98, 0x8E, 0x75, 0x6C, 0x73, 0x79, 0x67, 0x4B, 0x5C, 0x6E, 0x52, 0x4D, 0x6E, - 0x73, 0x6C, 0x78, 0x85, 0x93, 0x96, 0x8C, 0x9D, 0xAD, 0x9E, 0x98, 0x9A, 0x8E, 0x86, 0x7A, 0x73, - 0x7F, 0x75, 0x59, 0x56, 0x5E, 0x6B, 0x81, 0x75, 0x51, 0x58, 0x7E, 0x8A, 0x7D, 0x80, 0x9C, 0x9F, - 0x84, 0x8B, 0xAD, 0xA3, 0x7D, 0x71, 0x76, 0x7D, 0x79, 0x5C, 0x4D, 0x60, 0x63, 0x49, 0x49, 0x67, - 0x74, 0x66, 0x60, 0x75, 0x8E, 0x91, 0x90, 0xA4, 0xB3, 0xA2, 0x96, 0xA5, 0xAC, 0x98, 0x82, 0x7B, - 0x7F, 0x7F, 0x6F, 0x67, 0x63, 0x59, 0x78, 0xA4, 0x81, 0x51, 0x77, 0x95, 0x79, 0x7F, 0xA1, 0xA3, - 0x99, 0x8A, 0x8C, 0xAE, 0xAA, 0x7B, 0x7C, 0x90, 0x79, 0x65, 0x61, 0x5B, 0x67, 0x69, 0x53, 0x5B, - 0x6E, 0x5F, 0x5D, 0x7B, 0x8C, 0x8F, 0x93, 0x98, 0xAE, 0xBE, 0xB3, 0xB3, 0xBE, 0xAB, 0x94, 0x93, - 0x8B, 0x7F, 0x76, 0x62, 0x5B, 0x69, 0x66, 0x5A, 0x5F, 0x66, 0x78, 0x9E, 0xA5, 0x89, 0x7F, 0x92, - 0xA7, 0xAB, 0x9A, 0x97, 0xA1, 0x8E, 0x71, 0x76, 0x84, 0x7E, 0x66, 0x52, 0x5B, 0x6C, 0x5E, 0x51, - 0x65, 0x76, 0x6F, 0x69, 0x75, 0x8A, 0x8D, 0x7C, 0x7B, 0x8F, 0x97, 0x8F, 0x93, 0xA3, 0xA5, 0x8F, - 0x7E, 0x82, 0x84, 0x7C, 0x7B, 0x7F, 0x7E, 0x76, 0x71, 0x7C, 0x7D, 0x6A, 0x7A, 0xB3, 0xAD, 0x6A, - 0x66, 0x93, 0x85, 0x66, 0x7A, 0x8D, 0x86, 0x7A, 0x63, 0x66, 0x8B, 0x7D, 0x59, 0x74, 0x8B, 0x65, - 0x4D, 0x57, 0x63, 0x72, 0x70, 0x60, 0x69, 0x75, 0x67, 0x67, 0x81, 0x96, 0x93, 0x89, 0x94, 0xAF, - 0xB0, 0x9C, 0x9E, 0xA4, 0x90, 0x78, 0x6F, 0x6B, 0x69, 0x61, 0x4F, 0x55, 0x6E, 0x6D, 0x5F, 0x63, - 0x6C, 0x87, 0xB2, 0xB1, 0x88, 0x7C, 0x8E, 0x9B, 0x96, 0x87, 0x8E, 0x9C, 0x7F, 0x55, 0x5F, 0x7F, - 0x7E, 0x64, 0x59, 0x6B, 0x76, 0x60, 0x57, 0x72, 0x86, 0x80, 0x74, 0x75, 0x86, 0x8F, 0x82, 0x81, - 0x94, 0x98, 0x8C, 0x8E, 0x9D, 0xA5, 0x94, 0x7B, 0x7A, 0x86, 0x7F, 0x73, 0x77, 0x81, 0x81, 0x73, - 0x71, 0x8E, 0xA2, 0x8F, 0x6C, 0x6C, 0xA4, 0xC8, 0x94, 0x61, 0x7D, 0x92, 0x72, 0x66, 0x81, 0x96, - 0x8E, 0x6B, 0x5B, 0x80, 0x9E, 0x82, 0x64, 0x7C, 0x91, 0x6A, 0x4A, 0x6B, 0x87, 0x79, 0x73, 0x7D, - 0x7F, 0x87, 0x8D, 0x8C, 0xA1, 0xB9, 0xAC, 0x9D, 0xAD, 0xB3, 0x9A, 0x83, 0x87, 0x8D, 0x79, 0x61, - 0x60, 0x68, 0x64, 0x5F, 0x65, 0x73, 0x7F, 0x81, 0x7A, 0x77, 0x91, 0xC1, 0xC4, 0x86, 0x5B, 0x73, - 0x92, 0x7F, 0x60, 0x72, 0x94, 0x7D, 0x4A, 0x4E, 0x83, 0x9A, 0x7E, 0x65, 0x72, 0x84, 0x79, 0x65, - 0x6D, 0x85, 0x7D, 0x59, 0x56, 0x78, 0x86, 0x7D, 0x77, 0x7A, 0x84, 0x88, 0x82, 0x8A, 0xA1, 0xA0, - 0x87, 0x7A, 0x86, 0x8E, 0x81, 0x70, 0x6F, 0x73, 0x71, 0x6D, 0x71, 0x7F, 0x83, 0x6E, 0x5B, 0x70, - 0xA7, 0xB4, 0x78, 0x4E, 0x6D, 0x82, 0x6F, 0x74, 0x8A, 0x88, 0x7C, 0x6B, 0x61, 0x7B, 0x91, 0x78, - 0x5E, 0x62, 0x6A, 0x60, 0x52, 0x60, 0x7C, 0x7C, 0x71, 0x73, 0x79, 0x89, 0x9E, 0x98, 0x99, 0xB4, - 0xB9, 0xAB, 0xAB, 0xA5, 0x92, 0x87, 0x7E, 0x72, 0x72, 0x71, 0x6A, 0x67, 0x64, 0x61, 0x6C, 0x7D, - 0x88, 0x89, 0x82, 0x7A, 0x93, 0xC6, 0xC7, 0x7F, 0x51, 0x72, 0x97, 0x89, 0x6E, 0x70, 0x80, 0x75, - 0x5B, 0x62, 0x8B, 0x98, 0x76, 0x5C, 0x6C, 0x83, 0x7E, 0x71, 0x76, 0x84, 0x7D, 0x63, 0x61, 0x82, - 0x94, 0x89, 0x7F, 0x81, 0x8F, 0xA6, 0xAB, 0x9E, 0x9C, 0x9A, 0x8B, 0x83, 0x88, 0x87, 0x7F, 0x7B, - 0x7A, 0x72, 0x70, 0x7F, 0x85, 0x82, 0x8C, 0x90, 0x7F, 0x70, 0x79, 0xA6, 0xCB, 0x9F, 0x5C, 0x6C, - 0x93, 0x7F, 0x73, 0x8C, 0x84, 0x6B, 0x72, 0x79, 0x78, 0x85, 0x7E, 0x5B, 0x61, 0x7E, 0x67, 0x4E, - 0x72, 0x83, 0x67, 0x6D, 0x84, 0x7E, 0x86, 0x96, 0x90, 0x9C, 0xB6, 0xAE, 0x9F, 0xA0, 0x98, 0x8C, - 0x8A, 0x87, 0x80, 0x75, 0x68, 0x64, 0x63, 0x5C, 0x5D, 0x69, 0x72, 0x72, 0x72, 0x75, 0x77, 0x7D, - 0x82, 0x84, 0x9B, 0xB7, 0x99, 0x5B, 0x59, 0x89, 0x9C, 0x7D, 0x5A, 0x64, 0x82, 0x74, 0x54, 0x63, - 0x7B, 0x67, 0x53, 0x5E, 0x70, 0x74, 0x6E, 0x6C, 0x7B, 0x85, 0x7F, 0x85, 0x99, 0x93, 0x7C, 0x82, - 0x9A, 0x99, 0x89, 0x85, 0x88, 0x85, 0x80, 0x80, 0x85, 0x86, 0x7F, 0x73, 0x6C, 0x76, 0x7F, 0x79, - 0x79, 0x83, 0x79, 0x6B, 0x76, 0x7F, 0x7D, 0x7D, 0x79, 0x72, 0x7F, 0x96, 0x98, 0x7E, 0x6B, 0x73, - 0x7E, 0x81, 0x85, 0x85, 0x7A, 0x70, 0x6B, 0x66, 0x69, 0x6A, 0x6A, 0x72, 0x78, 0x74, 0x7B, 0x89, - 0x90, 0x97, 0x98, 0x98, 0xA3, 0xA8, 0xA1, 0xA5, 0xAD, 0xA6, 0x96, 0x8F, 0x93, 0x90, 0x80, 0x79, - 0x7E, 0x7B, 0x71, 0x6C, 0x6C, 0x72, 0x75, 0x6E, 0x6D, 0x76, 0x7C, 0x7A, 0x79, 0x79, 0x7A, 0x7D, - 0x7F, 0x80, 0x84, 0x89, 0x89, 0x80, 0x7F, 0x89, 0x8B, 0x87, 0x83, 0x85, 0x86, 0x7E, 0x74, 0x77, - 0x80, 0x7B, 0x71, 0x72, 0x7A, 0x80, 0x7D, 0x78, 0x7C, 0x86, 0x8B, 0x87, 0x88, 0x8C, 0x86, 0x81, - 0x83, 0x8A, 0x8B, 0x88, 0x7E, 0x7A, 0x83, 0x87, 0x85, 0x8A, 0x8C, 0x86, 0x80, 0x83, 0x8B, 0x8C, - 0x87, 0x82, 0x7E, 0x75, 0x6F, 0x76, 0x76, 0x6F, 0x6D, 0x6F, 0x70, 0x6F, 0x73, 0x78, 0x74, 0x72, - 0x77, 0x78, 0x7A, 0x80, 0x7E, 0x79, 0x7D, 0x7E, 0x7D, 0x84, 0x88, 0x85, 0x7F, 0x7F, 0x85, 0x89, - 0x88, 0x88, 0x87, 0x80, 0x7D, 0x7B, 0x76, 0x78, 0x7D, 0x77, 0x75, 0x76, 0x74, 0x78, 0x7C, 0x7C, - 0x80, 0x80, 0x77, 0x77, 0x7D, 0x80, 0x7F, 0x7A, 0x7D, 0x80, 0x79, 0x75, 0x79, 0x7F, 0x82, 0x7E, - 0x78, 0x7F, 0x86, 0x7C, 0x75, 0x7D, 0x7D, 0x78, 0x78, 0x79, 0x7B, 0x7A, 0x74, 0x72, 0x79, 0x7C, - 0x7B, 0x7C, 0x7F, 0x82, 0x83, 0x7F, 0x82, 0x89, 0x85, 0x7F, 0x81, 0x83, 0x82, 0x81, 0x7F, 0x7F, - 0x84, 0x85, 0x85, 0x88, 0x87, 0x84, 0x85, 0x87, 0x80, 0x7E, 0x83, 0x7F, 0x7D, 0x7F, 0x80, 0x7C, - 0x7D, 0x82, 0x82, 0x85, 0x86, 0x86, 0x89, 0x8D, 0x8E, 0x8D, 0x8C, 0x86, 0x82, 0x84, 0x82, 0x7F, - 0x7C, 0x7B, 0x7B, 0x79, 0x79, 0x7C, 0x7D, 0x7E, 0x7F, 0x83, 0x83, 0x80, 0x82, 0x86, 0x85, 0x84, - 0x83, 0x83, 0x84, 0x82, 0x7F, 0x81, 0x89, 0x8C, 0x89, 0x87, 0x86, 0x8A, 0x88, 0x85, 0x8A, 0x8F, - 0x84, 0x7D, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7E, 0x7C, 0x80, 0x82, 0x80, 0x7F, 0x81, 0x81, 0x80, - 0x7F, 0x7E, 0x80, 0x82, 0x7E, 0x7A, 0x7C, 0x81, 0x82, 0x7E, 0x7B, 0x7B, 0x7E, 0x81, 0x82, 0x7F, - 0x76, 0x74, 0x76, 0x74, 0x70, 0x6E, 0x6F, 0x70, 0x6D, 0x69, 0x6E, 0x74, 0x74, 0x70, 0x6F, 0x76, - 0x7F, 0x7E, 0x7C, 0x81, 0x82, 0x83, 0x87, 0x88, 0x88, 0x88, 0x86, 0x85, 0x86, 0x85, 0x85, 0x82, - 0x7E, 0x7C, 0x78, 0x78, 0x78, 0x75, 0x72, 0x71, 0x75, 0x78, 0x79, 0x79, 0x7B, 0x81, 0x85, 0x83, - 0x82, 0x85, 0x89, 0x89, 0x83, 0x7E, 0x7F, 0x7D, 0x79, 0x74, 0x75, 0x75, 0x70, 0x6A, 0x6B, 0x72, - 0x73, 0x6D, 0x6D, 0x6E, 0x6B, 0x6C, 0x6F, 0x72, 0x74, 0x75, 0x76, 0x7A, 0x7C, 0x7C, 0x7E, 0x83, - 0x86, 0x89, 0x8A, 0x8B, 0x8E, 0x8E, 0x8D, 0x8C, 0x8D, 0x8C, 0x88, 0x85, 0x85, 0x86, 0x84, 0x83, - 0x84, 0x85, 0x86, 0x87, 0x88, 0x8B, 0x8E, 0x8D, 0x8B, 0x87, 0x86, 0x88, 0x85, 0x7F, 0x7C, 0x7D, - 0x7E, 0x7A, 0x78, 0x7C, 0x7E, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7F, 0x81, 0x82, 0x7F, 0x7D, 0x7F, - 0x7B, 0x77, 0x79, 0x7B, 0x79, 0x79, 0x7E, 0x81, 0x81, 0x83, 0x85, 0x87, 0x86, 0x83, 0x83, 0x88, - 0x83, 0x7D, 0x7D, 0x7D, 0x7E, 0x7B, 0x7B, 0x80, 0x84, 0x86, 0x86, 0x8A, 0x92, 0x95, 0x90, 0x93, - 0x98, 0x95, 0x8F, 0x8B, 0x8A, 0x87, 0x84, 0x80, 0x7C, 0x7D, 0x7E, 0x79, 0x75, 0x75, 0x74, 0x73, - 0x74, 0x73, 0x75, 0x79, 0x79, 0x7A, 0x7D, 0x7D, 0x7C, 0x7B, 0x7F, 0x82, 0x82, 0x7E, 0x7A, 0x7D, - 0x7E, 0x7A, 0x75, 0x74, 0x75, 0x70, 0x69, 0x69, 0x6C, 0x6C, 0x6D, 0x71, 0x73, 0x71, 0x76, 0x7A, - 0x7B, 0x7C, 0x7D, 0x7E, 0x7E, 0x7F, 0x7B, 0x79, 0x7C, 0x7E, 0x7A, 0x7B, 0x81, 0x80, 0x80, 0x84, - 0x88, 0x8B, 0x8E, 0x90, 0x8E, 0x8C, 0x8F, 0x91, 0x8F, 0x85, 0x7E, 0x7F, 0x7E, 0x7A, 0x75, 0x70, - 0x71, 0x6E, 0x69, 0x6A, 0x6F, 0x73, 0x6E, 0x6B, 0x6F, 0x75, 0x77, 0x78, 0x7A, 0x7B, 0x7D, 0x7E, - 0x7E, 0x7E, 0x81, 0x81, 0x7F, 0x7F, 0x7F, 0x80, 0x83, 0x85, 0x86, 0x83, 0x7C, 0x7C, 0x7E, 0x7E, - 0x79, 0x74, 0x73, 0x74, 0x75, 0x74, 0x74, 0x75, 0x7E, 0x80, 0x7A, 0x7D, 0x84, 0x8A, 0x8C, 0x8F, - 0x95, 0x97, 0x96, 0x97, 0x96, 0x94, 0x93, 0x89, 0x85, 0x8A, 0x87, 0x84, 0x83, 0x81, 0x7F, 0x80, - 0x7F, 0x7D, 0x80, 0x85, 0x85, 0x83, 0x87, 0x8B, 0x8A, 0x87, 0x86, 0x87, 0x87, 0x84, 0x81, 0x80, - 0x7F, 0x7C, 0x77, 0x77, 0x77, 0x74, 0x71, 0x70, 0x6F, 0x71, 0x72, 0x74, 0x7A, 0x7C, 0x7C, 0x7A, - 0x7C, 0x82, 0x82, 0x7F, 0x80, 0x80, 0x7F, 0x7E, 0x7C, 0x7D, 0x83, 0x84, 0x7F, 0x81, 0x88, 0x8B, - 0x89, 0x88, 0x8B, 0x8D, 0x8C, 0x8A, 0x8C, 0x91, 0x93, 0x8F, 0x8C, 0x8C, 0x89, 0x88, 0x87, 0x87, - 0x87, 0x88, 0x8B, 0x88, 0x85, 0x86, 0x85, 0x81, 0x7E, 0x7E, 0x7C, 0x74, 0x6C, 0x6B, 0x6B, 0x65, - 0x61, 0x62, 0x63, 0x62, 0x61, 0x61, 0x64, 0x64, 0x64, 0x6B, 0x70, 0x6F, 0x6D, 0x73, 0x7D, 0x7C, - 0x7C, 0x7E, 0x79, 0x79, 0x7F, 0x7D, 0x79, 0x78, 0x7C, 0x80, 0x7E, 0x79, 0x75, 0x78, 0x7F, 0x7A, - 0x79, 0x84, 0x85, 0x7F, 0x82, 0x8B, 0x8E, 0x8B, 0x8B, 0x89, 0x86, 0x8D, 0x8E, 0x8A, 0x8C, 0x8B, - 0x84, 0x83, 0x83, 0x7E, 0x7D, 0x80, 0x7F, 0x79, 0x7B, 0x7F, 0x7A, 0x7B, 0x82, 0x80, 0x7F, 0x83, - 0x80, 0x81, 0x86, 0x81, 0x7F, 0x81, 0x7B, 0x76, 0x77, 0x7A, 0x78, 0x70, 0x6F, 0x71, 0x6D, 0x6D, - 0x6D, 0x6C, 0x76, 0x78, 0x6F, 0x70, 0x79, 0x7D, 0x7D, 0x7C, 0x7B, 0x7F, 0x88, 0x8D, 0x89, 0x85, - 0x88, 0x8F, 0x8E, 0x8A, 0x8B, 0x8B, 0x8A, 0x8A, 0x8B, 0x91, 0x92, 0x8E, 0x8E, 0x90, 0x92, 0x90, - 0x87, 0x8A, 0x93, 0x8F, 0x87, 0x89, 0x8A, 0x87, 0x86, 0x88, 0x86, 0x82, 0x80, 0x81, 0x7E, 0x79, - 0x7D, 0x81, 0x7C, 0x79, 0x7D, 0x81, 0x82, 0x83, 0x88, 0x86, 0x7C, 0x82, 0x8D, 0x88, 0x7F, 0x7D, - 0x7F, 0x7B, 0x76, 0x76, 0x73, 0x71, 0x74, 0x75, 0x73, 0x73, 0x79, 0x75, 0x6A, 0x75, 0x7E, 0x70, - 0x79, 0x84, 0x74, 0x67, 0x77, 0x95, 0x92, 0x7B, 0x7B, 0x64, 0x4F, 0x69, 0x77, 0x84, 0x9D, 0x97, - 0x93, 0x9C, 0x96, 0x8A, 0x86, 0x95, 0x8A, 0x6B, 0x7D, 0x86, 0x69, 0x6E, 0x7E, 0x75, 0x6E, 0x6B, - 0x6F, 0x85, 0x97, 0x83, 0x73, 0x95, 0x98, 0x71, 0x83, 0xAC, 0x99, 0x7D, 0x92, 0x96, 0x67, 0x61, - 0x7A, 0x68, 0x56, 0x5F, 0x65, 0x6B, 0x6B, 0x69, 0x6A, 0x67, 0x60, 0x56, 0x6E, 0x93, 0x83, 0x6F, - 0x82, 0x89, 0x7D, 0x7C, 0x8B, 0x8D, 0x7F, 0x84, 0x8F, 0x8F, 0x8E, 0x84, 0x74, 0x6C, 0x68, 0x62, - 0x63, 0x6C, 0x5F, 0x52, 0x68, 0x6D, 0x5B, 0x69, 0x88, 0x85, 0x6E, 0x88, 0xAC, 0x8F, 0x83, 0x9B, - 0x94, 0x92, 0x9D, 0x9B, 0xA1, 0xAF, 0xBC, 0xAA, 0x9B, 0xB5, 0xAA, 0x8E, 0xA4, 0x99, 0x77, 0x7E, - 0x88, 0x7F, 0x71, 0x6D, 0x6A, 0x53, 0x5A, 0x71, 0x61, 0x61, 0x76, 0x72, 0x79, 0x82, 0x70, 0x6B, - 0x7B, 0x89, 0x81, 0x78, 0x8E, 0x8C, 0x6B, 0x76, 0x86, 0x79, 0x7B, 0x82, 0x83, 0x7F, 0x74, 0x80, - 0x82, 0x75, 0x7B, 0x78, 0x7B, 0x8F, 0x84, 0x80, 0x89, 0x87, 0x8E, 0x8D, 0x8F, 0x94, 0x83, 0x8F, - 0x9E, 0x8C, 0x89, 0x89, 0x81, 0x84, 0x83, 0x8C, 0x8F, 0x81, 0x83, 0x7C, 0x74, 0x7B, 0x77, 0x80, - 0x88, 0x79, 0x76, 0x87, 0x94, 0x87, 0x74, 0x7E, 0x86, 0x82, 0x8A, 0x8F, 0x8E, 0x90, 0x90, 0x92, - 0x97, 0x99, 0x87, 0x7A, 0x8B, 0x8E, 0x75, 0x67, 0x6B, 0x6C, 0x63, 0x61, 0x60, 0x5D, 0x60, 0x59, - 0x52, 0x61, 0x6A, 0x5E, 0x54, 0x60, 0x6D, 0x69, 0x70, 0x75, 0x6D, 0x72, 0x7A, 0x80, 0x89, 0x89, - 0x82, 0x79, 0x84, 0x9C, 0x92, 0x8A, 0x90, 0x8B, 0x90, 0x96, 0x93, 0x93, 0x89, 0x8C, 0x8F, 0x88, - 0x8F, 0x87, 0x7F, 0x89, 0x80, 0x7F, 0x8A, 0x85, 0x80, 0x78, 0x7B, 0x82, 0x75, 0x76, 0x77, 0x6E, - 0x75, 0x73, 0x72, 0x7A, 0x75, 0x71, 0x6C, 0x74, 0x80, 0x71, 0x6E, 0x76, 0x74, 0x7B, 0x7C, 0x7B, - 0x7E, 0x7D, 0x85, 0x80, 0x7C, 0x8A, 0x7F, 0x74, 0x7B, 0x7F, 0x88, 0x80, 0x77, 0x81, 0x81, 0x82, - 0x7F, 0x78, 0x83, 0x7A, 0x6A, 0x74, 0x7D, 0x82, 0x7B, 0x73, 0x85, 0x89, 0x84, 0x8C, 0x8B, 0x90, - 0x91, 0x89, 0x90, 0x8F, 0x8C, 0x8C, 0x85, 0x8D, 0x91, 0x89, 0x88, 0x81, 0x81, 0x84, 0x7D, 0x80, - 0x80, 0x81, 0x89, 0x82, 0x85, 0x94, 0x92, 0x91, 0x92, 0x95, 0x9D, 0x97, 0x90, 0x8E, 0x8E, 0x93, - 0x87, 0x7D, 0x85, 0x7F, 0x72, 0x6E, 0x6F, 0x73, 0x6C, 0x67, 0x6D, 0x6E, 0x72, 0x73, 0x6B, 0x72, - 0x77, 0x70, 0x73, 0x77, 0x74, 0x6E, 0x6E, 0x71, 0x6D, 0x6B, 0x6E, 0x69, 0x6B, 0x71, 0x6F, 0x71, - 0x73, 0x73, 0x79, 0x7C, 0x81, 0x89, 0x88, 0x90, 0x95, 0x8F, 0x92, 0x98, 0x99, 0x9A, 0x9A, 0x9E, - 0x9A, 0x96, 0x9B, 0x99, 0x96, 0x93, 0x89, 0x8F, 0x94, 0x87, 0x85, 0x83, 0x82, 0x84, 0x7D, 0x78, - 0x72, 0x70, 0x78, 0x6F, 0x65, 0x6D, 0x6B, 0x69, 0x6A, 0x65, 0x61, 0x61, 0x68, 0x64, 0x58, 0x65, - 0x66, 0x5D, 0x6D, 0x6F, 0x6D, 0x76, 0x71, 0x73, 0x7D, 0x7D, 0x7B, 0x7A, 0x82, 0x85, 0x7D, 0x7F, - 0x80, 0x81, 0x82, 0x79, 0x85, 0x8C, 0x7D, 0x84, 0x8C, 0x88, 0x8A, 0x83, 0x85, 0x90, 0x89, 0x84, - 0x85, 0x88, 0x8D, 0x86, 0x84, 0x87, 0x88, 0x8D, 0x84, 0x81, 0x88, 0x82, 0x84, 0x84, 0x78, 0x81, - 0x84, 0x79, 0x7D, 0x7C, 0x79, 0x7C, 0x7D, 0x81, 0x7B, 0x76, 0x7C, 0x7E, 0x7F, 0x7A, 0x74, 0x7F, - 0x7F, 0x78, 0x7C, 0x7E, 0x82, 0x7E, 0x7B, 0x8E, 0x8D, 0x81, 0x8C, 0x89, 0x80, 0x8F, 0x97, 0x82, - 0x70, 0x85, 0x9D, 0x8B, 0x7A, 0x88, 0x9A, 0x95, 0x83, 0x95, 0xA4, 0x7E, 0x7A, 0xA2, 0x9D, 0x7A, - 0x70, 0x7C, 0x87, 0x7F, 0x6F, 0x6B, 0x7C, 0x83, 0x6F, 0x73, 0x84, 0x77, 0x78, 0x86, 0x81, 0x82, - 0x85, 0x79, 0x78, 0x87, 0x84, 0x6B, 0x6E, 0x88, 0x79, 0x64, 0x6D, 0x72, 0x6E, 0x6E, 0x73, 0x7B, - 0x73, 0x6A, 0x7A, 0x8F, 0x84, 0x71, 0x85, 0x9A, 0x87, 0x80, 0x85, 0x81, 0x93, 0x94, 0x74, 0x80, - 0xA2, 0x8D, 0x78, 0x9F, 0xB1, 0x86, 0x88, 0xB5, 0xAC, 0x87, 0x85, 0x97, 0x9E, 0x95, 0x88, 0x85, - 0x8D, 0x95, 0x88, 0x82, 0x92, 0x88, 0x74, 0x82, 0x8E, 0x7B, 0x66, 0x66, 0x6F, 0x6F, 0x6D, 0x5E, - 0x51, 0x61, 0x69, 0x5A, 0x59, 0x68, 0x69, 0x5F, 0x68, 0x7C, 0x74, 0x66, 0x6E, 0x73, 0x79, 0x80, - 0x75, 0x6E, 0x77, 0x7A, 0x73, 0x74, 0x7F, 0x7F, 0x77, 0x75, 0x7A, 0x90, 0x90, 0x62, 0x58, 0x8A, - 0x9D, 0x81, 0x6C, 0x75, 0x88, 0x92, 0x8F, 0x85, 0x86, 0x89, 0x80, 0x8C, 0x9F, 0x87, 0x6B, 0x77, - 0x94, 0x95, 0x6E, 0x58, 0x6F, 0x80, 0x78, 0x6F, 0x6E, 0x71, 0x70, 0x6E, 0x79, 0x8C, 0x82, 0x64, - 0x74, 0x9B, 0x8C, 0x6F, 0x76, 0x85, 0x87, 0x87, 0x9D, 0xB5, 0x8A, 0x53, 0x7F, 0xBA, 0x9C, 0x75, - 0x86, 0x9B, 0xA2, 0xA9, 0x9A, 0x8F, 0x98, 0x97, 0x9E, 0xB0, 0x9B, 0x79, 0x78, 0x87, 0x98, 0x8D, - 0x64, 0x5C, 0x6D, 0x65, 0x65, 0x77, 0x68, 0x55, 0x65, 0x71, 0x73, 0x7D, 0x75, 0x68, 0x79, 0x8B, - 0x90, 0x91, 0x88, 0x86, 0x8F, 0x88, 0x95, 0xC3, 0xB6, 0x60, 0x45, 0x8B, 0xAC, 0x7A, 0x66, 0x8B, - 0x93, 0x85, 0x91, 0x9F, 0x99, 0x8E, 0x82, 0x8C, 0xAA, 0xA3, 0x82, 0x7C, 0x81, 0x78, 0x6F, 0x67, - 0x5C, 0x4F, 0x3D, 0x43, 0x59, 0x4E, 0x38, 0x3C, 0x43, 0x4A, 0x58, 0x5C, 0x63, 0x72, 0x73, 0x7D, - 0x98, 0xA0, 0x97, 0x91, 0xA0, 0xCC, 0xC9, 0x7F, 0x74, 0xB2, 0xAB, 0x86, 0x9F, 0xB8, 0xAF, 0xB1, - 0xB2, 0xB1, 0xBF, 0xBB, 0xAD, 0xB0, 0xAA, 0x9A, 0x9E, 0xA1, 0x8F, 0x76, 0x66, 0x64, 0x63, 0x51, - 0x42, 0x43, 0x41, 0x3E, 0x44, 0x44, 0x42, 0x4D, 0x57, 0x57, 0x5A, 0x65, 0x73, 0x7D, 0x80, 0x81, - 0x7B, 0x81, 0xAA, 0xB6, 0x75, 0x50, 0x86, 0x96, 0x60, 0x6C, 0xA8, 0x9A, 0x72, 0x86, 0x9F, 0x95, - 0x98, 0xA7, 0xA4, 0x9B, 0x9E, 0x9D, 0x8A, 0x82, 0x8B, 0x81, 0x69, 0x68, 0x65, 0x4C, 0x46, 0x49, - 0x3D, 0x45, 0x5F, 0x61, 0x5F, 0x6D, 0x71, 0x6E, 0x7A, 0x8D, 0x98, 0x99, 0x97, 0x97, 0x9A, 0xB5, - 0xD0, 0xA7, 0x75, 0x96, 0xAA, 0x78, 0x77, 0xAF, 0xAE, 0x94, 0x98, 0x9A, 0x9A, 0xA4, 0xA2, 0x9C, - 0xA6, 0xAB, 0x97, 0x79, 0x7A, 0x8E, 0x79, 0x5A, 0x67, 0x67, 0x47, 0x3F, 0x42, 0x39, 0x4D, 0x69, - 0x6D, 0x74, 0x77, 0x72, 0x7A, 0x7F, 0x81, 0x98, 0xA2, 0x89, 0x79, 0x7F, 0x91, 0x9C, 0x7C, 0x5D, - 0x79, 0x89, 0x5D, 0x50, 0x82, 0x9F, 0x98, 0x98, 0xA6, 0xA6, 0x9B, 0x99, 0xA3, 0xAF, 0xB3, 0xA2, - 0x86, 0x83, 0x86, 0x68, 0x4E, 0x60, 0x74, 0x60, 0x45, 0x41, 0x46, 0x4A, 0x59, 0x71, 0x82, 0x8D, - 0x8B, 0x82, 0x82, 0x83, 0x7F, 0x83, 0x8B, 0x9B, 0xBF, 0xBC, 0x7D, 0x6D, 0x8F, 0x76, 0x49, 0x6F, - 0xA7, 0x9E, 0x90, 0xA1, 0xB1, 0xA5, 0x8B, 0x87, 0xA2, 0xBC, 0xB0, 0x8F, 0x86, 0x90, 0x76, 0x44, - 0x4A, 0x6F, 0x65, 0x4C, 0x5B, 0x6A, 0x5D, 0x55, 0x62, 0x7A, 0x86, 0x83, 0x88, 0x97, 0x8E, 0x76, - 0x77, 0x86, 0x81, 0x7A, 0x8A, 0x8A, 0x63, 0x4F, 0x5B, 0x4A, 0x30, 0x59, 0x8A, 0x80, 0x84, 0xB2, - 0xB7, 0x8F, 0x90, 0xAE, 0xB1, 0xA2, 0x9F, 0xA6, 0xA2, 0x92, 0x76, 0x64, 0x67, 0x5E, 0x47, 0x45, - 0x59, 0x5A, 0x50, 0x60, 0x75, 0x76, 0x77, 0x8A, 0x93, 0x8D, 0x90, 0x89, 0x74, 0x82, 0xA5, 0x91, - 0x6A, 0x7F, 0x8D, 0x59, 0x40, 0x6E, 0x86, 0x73, 0x85, 0xB5, 0xBD, 0xA7, 0xA8, 0xB5, 0xAD, 0x9B, - 0x98, 0xA5, 0xAB, 0x9D, 0x86, 0x7E, 0x75, 0x62, 0x4F, 0x49, 0x56, 0x60, 0x62, 0x7B, 0x9F, 0x9E, - 0x8F, 0x94, 0x8B, 0x78, 0x76, 0x78, 0x86, 0xA0, 0x95, 0x7D, 0x86, 0x76, 0x42, 0x3E, 0x5D, 0x65, - 0x6D, 0x8F, 0xB1, 0xBF, 0xB4, 0xA2, 0xA7, 0xA6, 0x92, 0x92, 0xAA, 0xB7, 0xA5, 0x94, 0x95, 0x91, - 0x6B, 0x43, 0x42, 0x46, 0x41, 0x4D, 0x72, 0x8C, 0x86, 0x7E, 0x7B, 0x65, 0x41, 0x47, 0x77, 0x83, - 0x72, 0x86, 0xA0, 0x84, 0x5D, 0x60, 0x5C, 0x47, 0x50, 0x71, 0x8E, 0x9B, 0xA2, 0xAC, 0xB6, 0xA8, - 0x88, 0x8A, 0x98, 0x8E, 0x84, 0x8E, 0x9B, 0x8F, 0x7A, 0x6E, 0x6C, 0x5F, 0x4D, 0x5A, 0x70, 0x71, - 0x70, 0x7E, 0x85, 0x77, 0x72, 0x7A, 0x71, 0x60, 0x61, 0x6B, 0x63, 0x5E, 0x61, 0x5F, 0x62, 0x69, - 0x6F, 0x76, 0x7F, 0x84, 0x8B, 0x97, 0x9E, 0xA8, 0xB0, 0xAD, 0xA5, 0xA8, 0xA5, 0x96, 0x90, 0x94, - 0x8D, 0x7D, 0x7D, 0x82, 0x7D, 0x79, 0x79, 0x7B, 0x7B, 0x72, 0x6B, 0x7C, 0x8A, 0x7C, 0x7B, 0x90, - 0x89, 0x6B, 0x67, 0x76, 0x76, 0x6B, 0x6F, 0x79, 0x7B, 0x78, 0x7D, 0x87, 0x86, 0x83, 0x8B, 0x98, - 0x99, 0x93, 0x99, 0x9E, 0x96, 0x91, 0x8F, 0x88, 0x85, 0x87, 0x81, 0x7A, 0x7A, 0x6F, 0x62, 0x5F, - 0x62, 0x61, 0x5C, 0x60, 0x6E, 0x76, 0x71, 0x76, 0x81, 0x75, 0x69, 0x6E, 0x74, 0x6F, 0x6D, 0x7A, - 0x88, 0x8C, 0x8B, 0x9A, 0xA8, 0xA1, 0x9B, 0xA7, 0xA9, 0x9C, 0x98, 0x95, 0x89, 0x83, 0x84, 0x7A, - 0x72, 0x74, 0x73, 0x6E, 0x6B, 0x6B, 0x70, 0x77, 0x76, 0x79, 0x7B, 0x78, 0x7D, 0x82, 0x76, 0x70, - 0x79, 0x76, 0x70, 0x79, 0x7D, 0x7A, 0x7E, 0x82, 0x85, 0x8F, 0x98, 0x9E, 0xA3, 0x9F, 0x9A, 0xA2, - 0xA9, 0xA7, 0xA3, 0xA0, 0x9E, 0x95, 0x8B, 0x86, 0x83, 0x7F, 0x80, 0x7E, 0x6E, 0x6C, 0x74, 0x6A, - 0x5D, 0x60, 0x65, 0x59, 0x52, 0x5B, 0x64, 0x62, 0x64, 0x75, 0x7C, 0x75, 0x7B, 0x8A, 0x89, 0x7B, - 0x7C, 0x86, 0x81, 0x7B, 0x84, 0x8E, 0x89, 0x86, 0x90, 0x95, 0x90, 0x85, 0x84, 0x83, 0x79, 0x6F, - 0x70, 0x76, 0x70, 0x67, 0x63, 0x64, 0x5B, 0x4F, 0x57, 0x63, 0x61, 0x5E, 0x6D, 0x7D, 0x7F, 0x7A, - 0x7C, 0x87, 0x89, 0x82, 0x86, 0x8E, 0x87, 0x82, 0x89, 0x8B, 0x88, 0x8B, 0x90, 0x92, 0x90, 0x8A, - 0x87, 0x8A, 0x81, 0x76, 0x77, 0x78, 0x6B, 0x5D, 0x5D, 0x5B, 0x55, 0x55, 0x5C, 0x68, 0x70, 0x7A, - 0x85, 0x8D, 0x8A, 0x83, 0x8C, 0x8F, 0x89, 0x87, 0x8E, 0x94, 0x91, 0x97, 0x9F, 0xA5, 0xA5, 0xA0, - 0x9F, 0x99, 0x9B, 0x9B, 0x94, 0x90, 0x8E, 0x85, 0x79, 0x76, 0x6E, 0x63, 0x64, 0x63, 0x5C, 0x58, - 0x5D, 0x69, 0x6B, 0x6A, 0x75, 0x80, 0x7F, 0x80, 0x8B, 0x8F, 0x90, 0x92, 0x92, 0x9A, 0x9D, 0x99, - 0x9F, 0xA8, 0xA8, 0xAC, 0xBA, 0xB9, 0xAD, 0xA9, 0xA3, 0x9B, 0x8C, 0x75, 0x63, 0x5A, 0x51, 0x43, - 0x3F, 0x44, 0x45, 0x49, 0x55, 0x6D, 0x7B, 0x7D, 0x82, 0x89, 0x82, 0x79, 0x7F, 0x82, 0x7D, 0x84, - 0x96, 0x9E, 0xA0, 0xA9, 0xAC, 0xA9, 0xAD, 0xB4, 0xAD, 0xA1, 0x9E, 0x92, 0x79, 0x66, 0x5F, 0x4B, - 0x38, 0x37, 0x35, 0x2E, 0x33, 0x3D, 0x46, 0x55, 0x61, 0x65, 0x74, 0x7D, 0x79, 0x7D, 0x89, 0x8D, - 0x8E, 0x96, 0x9E, 0xA2, 0xA3, 0xA4, 0xAB, 0xA8, 0xA2, 0xA1, 0x9B, 0x95, 0x93, 0x8A, 0x7A, 0x7A, - 0x76, 0x66, 0x60, 0x5F, 0x5B, 0x5E, 0x65, 0x66, 0x6C, 0x73, 0x75, 0x76, 0x74, 0x70, 0x6F, 0x72, - 0x73, 0x76, 0x79, 0x7B, 0x83, 0x8B, 0x8E, 0x97, 0xAD, 0xBE, 0xBE, 0xBF, 0xC9, 0xC5, 0xAC, 0x98, - 0x8A, 0x73, 0x58, 0x48, 0x41, 0x3D, 0x3F, 0x45, 0x52, 0x61, 0x6A, 0x6D, 0x71, 0x6F, 0x63, 0x5D, - 0x65, 0x6B, 0x6E, 0x75, 0x81, 0x8E, 0x95, 0x9B, 0xA4, 0xB2, 0xBD, 0xC1, 0xC4, 0xC9, 0xCA, 0xBA, - 0xA5, 0x94, 0x7D, 0x5D, 0x44, 0x3B, 0x3B, 0x3A, 0x39, 0x44, 0x56, 0x56, 0x4C, 0x57, 0x66, 0x5F, - 0x55, 0x61, 0x70, 0x73, 0x7B, 0x8A, 0x99, 0xA1, 0xAB, 0xB8, 0xBD, 0xBE, 0xBA, 0xB1, 0xAF, 0xAD, - 0x98, 0x85, 0x81, 0x6F, 0x5B, 0x5D, 0x64, 0x60, 0x64, 0x71, 0x7D, 0x8C, 0x92, 0x8E, 0x95, 0x96, - 0x81, 0x71, 0x75, 0x77, 0x71, 0x74, 0x7C, 0x85, 0x89, 0x86, 0x8D, 0xA1, 0xAB, 0xA8, 0xB6, 0xC8, - 0xBE, 0xA8, 0xA3, 0x9F, 0x86, 0x6F, 0x68, 0x65, 0x5C, 0x54, 0x57, 0x63, 0x68, 0x5E, 0x59, 0x5F, - 0x59, 0x44, 0x3E, 0x4F, 0x5A, 0x5D, 0x6C, 0x86, 0x9A, 0xA8, 0xBB, 0xC8, 0xC9, 0xCE, 0xDB, 0xD8, - 0xC7, 0xC3, 0xB8, 0x96, 0x79, 0x6A, 0x50, 0x38, 0x32, 0x32, 0x33, 0x3B, 0x42, 0x52, 0x66, 0x6C, - 0x6D, 0x7E, 0x88, 0x7F, 0x7A, 0x7B, 0x76, 0x75, 0x7E, 0x86, 0x8D, 0x95, 0x99, 0x9C, 0xA6, 0xA6, - 0x98, 0x97, 0x99, 0x88, 0x73, 0x6E, 0x66, 0x54, 0x4C, 0x4C, 0x52, 0x58, 0x58, 0x62, 0x78, 0x81, - 0x77, 0x78, 0x7B, 0x6C, 0x60, 0x60, 0x62, 0x66, 0x70, 0x78, 0x82, 0x90, 0x91, 0x95, 0xAC, 0xB7, - 0xAD, 0xB5, 0xC9, 0xBD, 0xA6, 0xA2, 0x9A, 0x7E, 0x65, 0x5C, 0x56, 0x4C, 0x46, 0x4E, 0x62, 0x6A, - 0x65, 0x68, 0x6E, 0x62, 0x53, 0x5A, 0x67, 0x67, 0x69, 0x7E, 0x97, 0xA6, 0xB3, 0xC2, 0xCB, 0xCE, - 0xCF, 0xD2, 0xD3, 0xCD, 0xC1, 0xB3, 0xA4, 0x8E, 0x75, 0x5F, 0x4D, 0x40, 0x3C, 0x3D, 0x3D, 0x43, - 0x51, 0x5B, 0x5C, 0x62, 0x6E, 0x70, 0x6A, 0x69, 0x71, 0x7B, 0x87, 0x94, 0xA6, 0xB7, 0xBC, 0xBC, - 0xCA, 0xD1, 0xC2, 0xB6, 0xB9, 0xAB, 0x8D, 0x7D, 0x76, 0x60, 0x4D, 0x50, 0x57, 0x56, 0x54, 0x5E, - 0x6E, 0x73, 0x6C, 0x6C, 0x70, 0x63, 0x52, 0x52, 0x58, 0x57, 0x55, 0x60, 0x72, 0x80, 0x80, 0x83, - 0x98, 0xA8, 0xA6, 0xAC, 0xC0, 0xC2, 0xB2, 0xAA, 0xA7, 0x98, 0x82, 0x71, 0x68, 0x64, 0x5F, 0x5D, - 0x67, 0x72, 0x6D, 0x67, 0x6C, 0x69, 0x5B, 0x58, 0x60, 0x62, 0x62, 0x6E, 0x82, 0x94, 0xA1, 0xAE, - 0xBA, 0xBB, 0xB9, 0xC2, 0xC4, 0xB6, 0xAB, 0xAA, 0x99, 0x81, 0x78, 0x6D, 0x53, 0x43, 0x4A, 0x50, - 0x4B, 0x4B, 0x57, 0x64, 0x65, 0x5F, 0x65, 0x73, 0x72, 0x64, 0x64, 0x74, 0x80, 0x81, 0x8B, 0xA3, - 0xB3, 0xAE, 0xAE, 0xC1, 0xC8, 0xB5, 0xA9, 0xAB, 0xA1, 0x87, 0x73, 0x68, 0x5A, 0x4A, 0x42, 0x47, - 0x4E, 0x4F, 0x57, 0x68, 0x72, 0x6C, 0x6C, 0x72, 0x6E, 0x64, 0x61, 0x65, 0x6B, 0x70, 0x77, 0x88, - 0x99, 0x98, 0x97, 0xA9, 0xB9, 0xB4, 0xAD, 0xBA, 0xC2, 0xAF, 0x9B, 0x9B, 0x92, 0x75, 0x5E, 0x5E, - 0x5D, 0x53, 0x4D, 0x56, 0x5D, 0x55, 0x4A, 0x49, 0x49, 0x3F, 0x36, 0x3F, 0x53, 0x61, 0x6D, 0x88, - 0xA8, 0xB7, 0xBE, 0xCB, 0xD4, 0xD6, 0xDC, 0xDD, 0xD2, 0xCF, 0xCB, 0xB4, 0x9A, 0x8D, 0x79, 0x5D, - 0x4E, 0x4C, 0x4B, 0x46, 0x44, 0x49, 0x55, 0x58, 0x52, 0x54, 0x60, 0x67, 0x61, 0x5E, 0x6C, 0x7E, - 0x88, 0x96, 0xB0, 0xC2, 0xC4, 0xC6, 0xCC, 0xD2, 0xCE, 0xC1, 0xB4, 0xAE, 0x9D, 0x81, 0x71, 0x6E, - 0x61, 0x51, 0x54, 0x61, 0x66, 0x62, 0x66, 0x72, 0x74, 0x6A, 0x66, 0x71, 0x71, 0x65, 0x62, 0x6B, - 0x72, 0x76, 0x80, 0x90, 0xA1, 0xA5, 0x9C, 0xA5, 0xB9, 0xB5, 0xA5, 0xAB, 0xB1, 0x9C, 0x89, 0x8B, - 0x87, 0x71, 0x5E, 0x60, 0x68, 0x68, 0x60, 0x5F, 0x68, 0x65, 0x54, 0x4B, 0x4A, 0x42, 0x38, 0x3C, - 0x4C, 0x5B, 0x69, 0x78, 0x8E, 0xA7, 0xB2, 0xB3, 0xB6, 0xBB, 0xBF, 0xC3, 0xBC, 0xB2, 0xB3, 0xAC, - 0x8E, 0x76, 0x6B, 0x54, 0x34, 0x2A, 0x32, 0x34, 0x33, 0x38, 0x43, 0x4E, 0x52, 0x53, 0x61, 0x71, - 0x6F, 0x6B, 0x79, 0x87, 0x8A, 0x96, 0xAC, 0xBE, 0xC2, 0xBF, 0xBE, 0xC6, 0xC3, 0xAA, 0x94, 0x8D, - 0x81, 0x65, 0x51, 0x51, 0x4D, 0x3D, 0x40, 0x5E, 0x71, 0x70, 0x73, 0x82, 0x86, 0x78, 0x6A, 0x6E, - 0x74, 0x6C, 0x66, 0x6C, 0x7B, 0x87, 0x90, 0x9F, 0xB4, 0xBC, 0xB0, 0xB1, 0xC2, 0xC7, 0xBB, 0xAD, - 0xAB, 0xA4, 0x8E, 0x7C, 0x78, 0x68, 0x4D, 0x4F, 0x60, 0x64, 0x6A, 0x7A, 0x80, 0x79, 0x72, 0x6A, - 0x62, 0x5C, 0x5B, 0x61, 0x6B, 0x77, 0x85, 0x94, 0xA5, 0xB7, 0xC3, 0xCA, 0xC7, 0xBE, 0xBE, 0xC5, - 0xC3, 0xB7, 0xB2, 0xB2, 0x9E, 0x77, 0x59, 0x4B, 0x34, 0x15, 0x13, 0x2F, 0x41, 0x41, 0x48, 0x5C, - 0x66, 0x5E, 0x57, 0x5F, 0x6A, 0x6B, 0x72, 0x87, 0x9C, 0xAC, 0xBF, 0xCF, 0xD3, 0xD0, 0xCC, 0xC4, - 0xBB, 0xB1, 0x9F, 0x8A, 0x7D, 0x72, 0x58, 0x45, 0x46, 0x44, 0x39, 0x37, 0x50, 0x67, 0x69, 0x68, - 0x77, 0x7E, 0x6A, 0x5C, 0x62, 0x68, 0x62, 0x5C, 0x66, 0x7E, 0x8E, 0x91, 0x93, 0xA2, 0xAA, 0xA7, - 0xAD, 0xBD, 0xC9, 0xC1, 0xB6, 0xB1, 0xA2, 0x87, 0x6E, 0x67, 0x60, 0x57, 0x59, 0x69, 0x7A, 0x7B, - 0x79, 0x77, 0x70, 0x5F, 0x4C, 0x47, 0x46, 0x45, 0x4D, 0x63, 0x7E, 0x95, 0xA3, 0xAB, 0xB1, 0xB0, - 0x9E, 0x90, 0x99, 0xB5, 0xD0, 0xD4, 0xC6, 0xB9, 0xA6, 0x7C, 0x4E, 0x38, 0x28, 0x18, 0x1B, 0x38, - 0x5C, 0x68, 0x5A, 0x55, 0x67, 0x66, 0x48, 0x3D, 0x54, 0x74, 0x86, 0x8F, 0xA5, 0xC0, 0xC1, 0xAE, - 0xAD, 0xB3, 0xA6, 0x95, 0x98, 0xB0, 0xC4, 0xB5, 0x8B, 0x75, 0x71, 0x4E, 0x24, 0x24, 0x43, 0x54, - 0x58, 0x6C, 0x8B, 0x92, 0x73, 0x5C, 0x62, 0x64, 0x5A, 0x5E, 0x78, 0x8D, 0x92, 0x8B, 0x8B, 0x90, - 0x88, 0x80, 0x85, 0x94, 0xA0, 0xA8, 0xAD, 0xB8, 0xBD, 0xAA, 0x8D, 0x7D, 0x75, 0x65, 0x5C, 0x6A, - 0x7F, 0x84, 0x82, 0x8D, 0x8B, 0x78, 0x6C, 0x73, 0x75, 0x70, 0x75, 0x7D, 0x7E, 0x7A, 0x7D, 0x86, - 0x8F, 0x99, 0xA5, 0xB3, 0xBB, 0xB9, 0xAD, 0xA2, 0xA5, 0xBB, 0xC6, 0xAE, 0x90, 0x8F, 0x83, 0x52, - 0x30, 0x3D, 0x53, 0x52, 0x4E, 0x61, 0x7C, 0x75, 0x51, 0x4C, 0x67, 0x77, 0x76, 0x79, 0x8C, 0xA4, - 0xA2, 0x89, 0x84, 0x98, 0xA3, 0x9F, 0xA7, 0xBD, 0xC7, 0xAC, 0x85, 0x8B, 0xA5, 0x95, 0x66, 0x57, - 0x6A, 0x68, 0x46, 0x32, 0x49, 0x66, 0x64, 0x5A, 0x65, 0x76, 0x71, 0x5E, 0x57, 0x61, 0x72, 0x78, - 0x6F, 0x6D, 0x77, 0x80, 0x77, 0x72, 0x7D, 0x8F, 0x96, 0x91, 0x94, 0x97, 0x92, 0x96, 0xA1, 0x9B, - 0x86, 0x7B, 0x72, 0x5F, 0x4D, 0x4E, 0x66, 0x76, 0x6E, 0x69, 0x71, 0x6D, 0x64, 0x60, 0x5E, 0x5F, - 0x6D, 0x72, 0x68, 0x65, 0x6F, 0x81, 0x8D, 0x94, 0x9E, 0xA8, 0xAA, 0xA1, 0xA1, 0xA2, 0xA7, 0xBA, - 0xD0, 0xC7, 0x96, 0x70, 0x63, 0x54, 0x3E, 0x3D, 0x5B, 0x7F, 0x8A, 0x6F, 0x55, 0x5E, 0x6F, 0x74, - 0x7B, 0x8C, 0xA0, 0xA4, 0x8C, 0x6E, 0x6E, 0x7E, 0x8D, 0xA2, 0xB3, 0xB2, 0xA0, 0x91, 0x8E, 0x96, - 0x97, 0x90, 0x98, 0xA8, 0x9F, 0x75, 0x51, 0x47, 0x4B, 0x52, 0x5C, 0x6A, 0x77, 0x7D, 0x77, 0x70, - 0x6E, 0x71, 0x7F, 0x96, 0xA0, 0x9A, 0x8F, 0x7C, 0x68, 0x63, 0x6D, 0x7D, 0x8E, 0x9C, 0x97, 0x87, - 0x7A, 0x84, 0x97, 0x99, 0x94, 0x9C, 0xA5, 0x98, 0x83, 0x6B, 0x57, 0x53, 0x5C, 0x64, 0x68, 0x6C, - 0x6B, 0x6A, 0x6A, 0x65, 0x68, 0x77, 0x7F, 0x81, 0x88, 0x8C, 0x85, 0x7B, 0x7E, 0x8A, 0x9B, 0xA6, - 0xAA, 0xAA, 0xA4, 0xA1, 0xA0, 0xA0, 0x97, 0x8C, 0x8D, 0x95, 0x95, 0x82, 0x6D, 0x5B, 0x48, 0x43, - 0x52, 0x5F, 0x61, 0x68, 0x77, 0x7C, 0x72, 0x6D, 0x76, 0x82, 0x86, 0x88, 0x8E, 0x91, 0x92, 0x8D, - 0x85, 0x87, 0x91, 0x9A, 0xA0, 0xA6, 0xAC, 0xA9, 0x9B, 0x8C, 0x89, 0x88, 0x7D, 0x79, 0x7F, 0x82, - 0x74, 0x5E, 0x53, 0x58, 0x5F, 0x5F, 0x64, 0x6B, 0x71, 0x75, 0x6F, 0x6A, 0x6D, 0x71, 0x6E, 0x73, - 0x82, 0x87, 0x80, 0x7B, 0x7E, 0x83, 0x8E, 0x93, 0x90, 0x8E, 0x94, 0x97, 0x90, 0x8F, 0x8D, 0x86, - 0x7E, 0x7E, 0x7E, 0x77, 0x72, 0x6F, 0x69, 0x5B, 0x58, 0x63, 0x6E, 0x6A, 0x5F, 0x65, 0x6E, 0x63, - 0x56, 0x5F, 0x6F, 0x6F, 0x6E, 0x72, 0x79, 0x7E, 0x7D, 0x81, 0x90, 0x99, 0x9B, 0xA1, 0xA5, 0xA3, - 0xA4, 0xA4, 0xA2, 0xA4, 0xA0, 0x99, 0x9D, 0x9D, 0x8D, 0x7C, 0x72, 0x67, 0x5F, 0x5B, 0x5A, 0x5A, - 0x58, 0x55, 0x54, 0x53, 0x50, 0x50, 0x55, 0x61, 0x72, 0x80, 0x8A, 0x90, 0x92, 0x96, 0x9D, 0xA3, - 0xAC, 0xB6, 0xB9, 0xB9, 0xBA, 0xB4, 0xAC, 0xAC, 0xAC, 0xA6, 0x9E, 0x9B, 0x9A, 0x93, 0x7F, 0x6B, - 0x63, 0x5D, 0x57, 0x58, 0x5D, 0x61, 0x61, 0x62, 0x64, 0x65, 0x64, 0x63, 0x6A, 0x76, 0x7E, 0x85, - 0x87, 0x85, 0x86, 0x93, 0x9C, 0x99, 0x9C, 0xA5, 0xAB, 0xAB, 0xA3, 0x9C, 0x9A, 0x9C, 0x96, 0x92, - 0x8F, 0x89, 0x88, 0x86, 0x7B, 0x6C, 0x67, 0x61, 0x55, 0x50, 0x57, 0x5D, 0x54, 0x4D, 0x51, 0x53, - 0x51, 0x53, 0x5A, 0x63, 0x6B, 0x6D, 0x6E, 0x76, 0x81, 0x8A, 0x95, 0xA2, 0xA8, 0xAA, 0xAE, 0xB0, - 0xAA, 0xA5, 0xA4, 0x9D, 0x91, 0x89, 0x85, 0x7F, 0x7D, 0x7C, 0x71, 0x62, 0x5C, 0x5A, 0x53, 0x4C, - 0x4A, 0x50, 0x5D, 0x60, 0x57, 0x57, 0x5C, 0x5A, 0x5D, 0x6E, 0x79, 0x7C, 0x86, 0x90, 0x90, 0x91, - 0x98, 0x9D, 0xA4, 0xAC, 0xB0, 0xB2, 0xB4, 0xAE, 0xA5, 0xA1, 0x9A, 0x8E, 0x8D, 0x96, 0x96, 0x86, - 0x75, 0x6A, 0x62, 0x59, 0x55, 0x59, 0x60, 0x63, 0x5F, 0x57, 0x54, 0x57, 0x5E, 0x64, 0x6E, 0x78, - 0x7C, 0x80, 0x87, 0x8B, 0x8D, 0x96, 0x9F, 0xA7, 0xB1, 0xB3, 0xB0, 0xB5, 0xB6, 0xAA, 0xA3, 0xA4, - 0x9F, 0x9D, 0x9C, 0x8B, 0x7B, 0x7A, 0x77, 0x68, 0x5C, 0x55, 0x4E, 0x49, 0x42, 0x3F, 0x47, 0x4B, - 0x48, 0x4B, 0x4F, 0x4F, 0x55, 0x64, 0x77, 0x85, 0x8F, 0x9B, 0xAC, 0xB6, 0xB6, 0xBA, 0xC8, 0xCF, - 0xC7, 0xBA, 0xB8, 0xB8, 0xAD, 0x9E, 0x98, 0x90, 0x81, 0x75, 0x68, 0x5A, 0x56, 0x53, 0x4C, 0x49, - 0x43, 0x39, 0x32, 0x30, 0x36, 0x4C, 0x5D, 0x5E, 0x66, 0x77, 0x7C, 0x7D, 0x84, 0x90, 0xA3, 0xB2, - 0xB1, 0xB0, 0xB5, 0xB4, 0xB3, 0xB5, 0xAF, 0xAA, 0xAA, 0xA3, 0x9E, 0xA5, 0xA0, 0x8C, 0x84, 0x85, - 0x81, 0x7F, 0x78, 0x67, 0x63, 0x73, 0x75, 0x57, 0x3E, 0x44, 0x4A, 0x3D, 0x3D, 0x57, 0x68, 0x65, - 0x64, 0x6C, 0x7B, 0x86, 0x85, 0x8E, 0xAC, 0xB0, 0x93, 0x8E, 0xA3, 0xA7, 0xA4, 0xAE, 0xB4, 0xB6, - 0xB7, 0xA3, 0x8E, 0x97, 0xA2, 0x95, 0x87, 0x83, 0x76, 0x63, 0x52, 0x44, 0x47, 0x60, 0x7C, 0x74, - 0x47, 0x28, 0x32, 0x36, 0x25, 0x37, 0x66, 0x6A, 0x49, 0x3D, 0x50, 0x70, 0x8C, 0x90, 0x98, 0xB8, - 0xBC, 0x9A, 0x98, 0xBC, 0xCB, 0xC8, 0xC4, 0xB5, 0xAD, 0xAC, 0x92, 0x82, 0x9B, 0x9B, 0x6D, 0x5D, - 0x6B, 0x5A, 0x45, 0x48, 0x40, 0x41, 0x6D, 0x7A, 0x40, 0x24, 0x4A, 0x52, 0x37, 0x4C, 0x7B, 0x7C, - 0x6A, 0x6E, 0x87, 0xB1, 0xCA, 0xB7, 0xB1, 0xD0, 0xC7, 0x9D, 0xA1, 0xB8, 0xAA, 0x9A, 0x94, 0x87, - 0x8F, 0x9B, 0x88, 0x83, 0xA1, 0x9C, 0x79, 0x78, 0x88, 0x7D, 0x6C, 0x6A, 0x61, 0x5C, 0x79, 0x97, - 0x71, 0x34, 0x3E, 0x64, 0x50, 0x43, 0x72, 0x8D, 0x76, 0x6C, 0x7B, 0x99, 0xC3, 0xC1, 0x9B, 0xA5, - 0xBF, 0xA3, 0x8D, 0xAB, 0xB5, 0x9D, 0x93, 0x8C, 0x85, 0x92, 0x93, 0x81, 0x80, 0x84, 0x6C, 0x59, - 0x68, 0x73, 0x64, 0x57, 0x56, 0x57, 0x64, 0x85, 0x8D, 0x67, 0x4E, 0x69, 0x81, 0x75, 0x78, 0x91, - 0x8F, 0x7D, 0x7F, 0x91, 0xA6, 0xB0, 0x9C, 0x87, 0x97, 0xA2, 0x89, 0x7D, 0x8C, 0x86, 0x75, 0x74, - 0x72, 0x70, 0x76, 0x6E, 0x5F, 0x6E, 0x7D, 0x6D, 0x65, 0x76, 0x73, 0x5E, 0x61, 0x74, 0x6D, 0x5C, - 0x6D, 0x8A, 0x77, 0x4C, 0x51, 0x70, 0x76, 0x74, 0x7A, 0x7D, 0x84, 0x91, 0x93, 0xA2, 0xBB, 0xAB, - 0x8B, 0x93, 0xA0, 0x8E, 0x86, 0x8B, 0x7C, 0x70, 0x76, 0x75, 0x77, 0x82, 0x7C, 0x6A, 0x70, 0x7D, - 0x78, 0x71, 0x74, 0x78, 0x77, 0x76, 0x7A, 0x78, 0x6A, 0x70, 0x92, 0x89, 0x4F, 0x44, 0x72, 0x7A, - 0x66, 0x79, 0x93, 0x8D, 0x8B, 0x90, 0x98, 0xB8, 0xC6, 0x9A, 0x87, 0xB1, 0xB6, 0x8A, 0x7F, 0x8A, - 0x7E, 0x74, 0x71, 0x6C, 0x74, 0x7A, 0x62, 0x5C, 0x7E, 0x89, 0x6F, 0x6B, 0x78, 0x72, 0x6D, 0x76, - 0x74, 0x6C, 0x6A, 0x5E, 0x63, 0x8D, 0x98, 0x64, 0x4F, 0x7B, 0x93, 0x86, 0x8E, 0x9B, 0x93, 0x93, - 0x9F, 0xA3, 0xAA, 0xAE, 0x94, 0x81, 0x91, 0x92, 0x75, 0x6B, 0x73, 0x6F, 0x6D, 0x72, 0x6D, 0x6C, - 0x7B, 0x7A, 0x71, 0x83, 0x92, 0x7F, 0x78, 0x86, 0x7F, 0x70, 0x77, 0x79, 0x77, 0x7F, 0x72, 0x60, - 0x86, 0xA9, 0x7D, 0x51, 0x6F, 0x8F, 0x8C, 0x90, 0x99, 0x98, 0x9B, 0x97, 0x8F, 0xA9, 0xC6, 0xA9, - 0x7D, 0x82, 0x93, 0x83, 0x72, 0x72, 0x71, 0x6C, 0x69, 0x62, 0x6A, 0x7F, 0x79, 0x64, 0x72, 0x8F, - 0x88, 0x78, 0x7E, 0x7C, 0x72, 0x72, 0x75, 0x75, 0x73, 0x5E, 0x5B, 0x89, 0x9A, 0x62, 0x48, 0x70, - 0x85, 0x78, 0x83, 0x91, 0x90, 0x98, 0x97, 0x85, 0x99, 0xB8, 0x96, 0x6A, 0x85, 0xA2, 0x83, 0x68, - 0x74, 0x77, 0x6E, 0x6F, 0x6A, 0x67, 0x76, 0x77, 0x61, 0x69, 0x8A, 0x81, 0x60, 0x65, 0x7C, 0x77, - 0x6B, 0x6D, 0x6C, 0x65, 0x60, 0x56, 0x61, 0x90, 0x9B, 0x61, 0x4A, 0x7F, 0x99, 0x7E, 0x7F, 0x9C, - 0x9E, 0x95, 0x93, 0x90, 0x9C, 0xAA, 0x91, 0x70, 0x80, 0x99, 0x85, 0x6A, 0x6F, 0x77, 0x6E, 0x69, - 0x70, 0x7C, 0x82, 0x7D, 0x71, 0x77, 0x93, 0x9C, 0x84, 0x79, 0x87, 0x82, 0x6C, 0x6C, 0x76, 0x75, - 0x76, 0x6E, 0x61, 0x7B, 0xA4, 0x8B, 0x5F, 0x77, 0x9D, 0x91, 0x8A, 0xA0, 0x9D, 0x91, 0x9F, 0xA7, - 0xA5, 0xB6, 0xB2, 0x85, 0x78, 0x94, 0x8B, 0x6A, 0x6F, 0x7A, 0x65, 0x5D, 0x6F, 0x74, 0x74, 0x7F, - 0x7D, 0x74, 0x87, 0x9A, 0x86, 0x79, 0x8B, 0x87, 0x71, 0x79, 0x85, 0x76, 0x6D, 0x6B, 0x65, 0x84, - 0xAF, 0x8C, 0x51, 0x6C, 0x9D, 0x8B, 0x7E, 0x9A, 0x9F, 0x92, 0x9E, 0x9F, 0x93, 0xA7, 0xAC, 0x7E, - 0x6C, 0x8E, 0x8F, 0x6C, 0x68, 0x74, 0x6C, 0x6B, 0x74, 0x72, 0x71, 0x7A, 0x73, 0x69, 0x78, 0x88, - 0x7B, 0x6D, 0x75, 0x7A, 0x6F, 0x6D, 0x77, 0x73, 0x66, 0x66, 0x65, 0x5F, 0x7D, 0xA9, 0x94, 0x62, - 0x70, 0x98, 0x93, 0x89, 0x9A, 0x9E, 0x97, 0x9B, 0x96, 0x91, 0xA4, 0xA2, 0x78, 0x67, 0x7D, 0x7B, - 0x61, 0x62, 0x73, 0x6C, 0x5B, 0x5D, 0x69, 0x6F, 0x72, 0x71, 0x6C, 0x76, 0x88, 0x82, 0x6D, 0x73, - 0x83, 0x77, 0x67, 0x70, 0x7A, 0x72, 0x6A, 0x6F, 0x76, 0x72, 0x72, 0x8D, 0xAC, 0x9B, 0x75, 0x7E, - 0x9B, 0x99, 0x97, 0xA8, 0xA7, 0x9C, 0x9A, 0x89, 0x7A, 0x90, 0x95, 0x69, 0x57, 0x74, 0x73, 0x5A, - 0x62, 0x6F, 0x62, 0x60, 0x6B, 0x64, 0x66, 0x82, 0x8B, 0x76, 0x7A, 0x92, 0x8F, 0x7F, 0x89, 0x95, - 0x88, 0x81, 0x86, 0x7E, 0x78, 0x7E, 0x71, 0x6A, 0x94, 0xAE, 0x7C, 0x53, 0x74, 0x8F, 0x7E, 0x7F, - 0x92, 0x8F, 0x89, 0x92, 0x8E, 0x8B, 0xA0, 0xA1, 0x79, 0x6E, 0x8A, 0x85, 0x61, 0x60, 0x78, 0x74, - 0x64, 0x69, 0x74, 0x78, 0x81, 0x7D, 0x6D, 0x7A, 0x97, 0x91, 0x80, 0x90, 0x9E, 0x87, 0x74, 0x81, - 0x8C, 0x87, 0x80, 0x7C, 0x75, 0x71, 0x7B, 0x93, 0x99, 0x7F, 0x6B, 0x77, 0x8B, 0x92, 0x99, 0xA1, - 0xA5, 0xA6, 0x9D, 0x8F, 0x99, 0xA6, 0x8D, 0x72, 0x7C, 0x82, 0x67, 0x5F, 0x71, 0x6E, 0x5E, 0x61, - 0x6A, 0x6A, 0x70, 0x78, 0x74, 0x7A, 0x8D, 0x93, 0x8B, 0x8F, 0x99, 0x8E, 0x7E, 0x81, 0x89, 0x84, - 0x7A, 0x73, 0x6C, 0x6B, 0x77, 0x74, 0x60, 0x6F, 0xA3, 0xAE, 0x80, 0x6B, 0x8C, 0xA0, 0x91, 0x93, - 0xA5, 0xA1, 0x91, 0x87, 0x7E, 0x7B, 0x8A, 0x87, 0x62, 0x54, 0x6D, 0x68, 0x42, 0x45, 0x64, 0x5F, - 0x51, 0x60, 0x68, 0x62, 0x6C, 0x73, 0x70, 0x87, 0x9E, 0x8B, 0x7E, 0x9B, 0xA5, 0x87, 0x7A, 0x83, - 0x7D, 0x6F, 0x6C, 0x6A, 0x61, 0x58, 0x60, 0x8C, 0xAA, 0x7D, 0x54, 0x7B, 0x9B, 0x82, 0x86, 0xB0, - 0xB1, 0x96, 0x93, 0x8B, 0x83, 0x9E, 0x9F, 0x6A, 0x61, 0x80, 0x64, 0x35, 0x50, 0x79, 0x62, 0x4A, - 0x55, 0x56, 0x57, 0x70, 0x7B, 0x80, 0x9A, 0xA9, 0x95, 0x90, 0xAA, 0xB2, 0xA0, 0x9A, 0x9C, 0x8F, - 0x7C, 0x78, 0x7D, 0x7A, 0x75, 0x6F, 0x62, 0x65, 0x88, 0x9D, 0x84, 0x71, 0x86, 0x96, 0x8D, 0x91, - 0xAC, 0xBA, 0xAC, 0x98, 0x89, 0x88, 0x95, 0x91, 0x78, 0x6E, 0x74, 0x69, 0x4C, 0x48, 0x65, 0x74, - 0x6B, 0x5F, 0x59, 0x5C, 0x6C, 0x7D, 0x88, 0x92, 0xA2, 0x9D, 0x8B, 0x94, 0xAA, 0xAC, 0xA2, 0x9B, - 0x99, 0x8C, 0x7E, 0x7D, 0x7D, 0x78, 0x73, 0x69, 0x67, 0x81, 0x9C, 0x8C, 0x6E, 0x7A, 0x90, 0x88, - 0x89, 0xA3, 0xAF, 0xA3, 0x96, 0x8D, 0x87, 0x88, 0x84, 0x75, 0x76, 0x7C, 0x69, 0x4E, 0x4E, 0x5A, - 0x57, 0x54, 0x5A, 0x5C, 0x57, 0x54, 0x5A, 0x69, 0x7B, 0x8A, 0x90, 0x90, 0x9B, 0xA7, 0xA5, 0x9E, - 0xA0, 0xA1, 0x93, 0x85, 0x81, 0x7B, 0x75, 0x73, 0x6F, 0x6C, 0x6D, 0x72, 0x73, 0x6E, 0x76, 0x81, - 0x7E, 0x82, 0x96, 0xA2, 0x95, 0x8A, 0x93, 0x96, 0x87, 0x80, 0x84, 0x88, 0x84, 0x7B, 0x72, 0x68, - 0x66, 0x68, 0x60, 0x5A, 0x5E, 0x5E, 0x56, 0x52, 0x59, 0x63, 0x67, 0x6E, 0x7A, 0x83, 0x8A, 0x94, - 0x9B, 0x9D, 0x9E, 0x9B, 0x95, 0x93, 0x94, 0x92, 0x8C, 0x86, 0x83, 0x7A, 0x71, 0x73, 0x76, 0x76, - 0x78, 0x78, 0x73, 0x72, 0x7D, 0x83, 0x81, 0x83, 0x86, 0x8A, 0x8A, 0x81, 0x81, 0x85, 0x80, 0x80, - 0x85, 0x86, 0x7F, 0x75, 0x6C, 0x66, 0x6C, 0x74, 0x6E, 0x6D, 0x71, 0x70, 0x73, 0x7B, 0x82, 0x87, - 0x8A, 0x8E, 0x8F, 0x8C, 0x8E, 0x93, 0x94, 0x92, 0x8F, 0x8F, 0x90, 0x8D, 0x8D, 0x8F, 0x88, 0x80, - 0x81, 0x7C, 0x71, 0x75, 0x7D, 0x78, 0x73, 0x74, 0x78, 0x77, 0x76, 0x80, 0x8E, 0x90, 0x83, 0x80, - 0x87, 0x85, 0x7D, 0x7D, 0x8A, 0x91, 0x83, 0x7B, 0x7D, 0x78, 0x76, 0x79, 0x76, 0x7A, 0x83, 0x82, - 0x73, 0x71, 0x82, 0x84, 0x78, 0x7C, 0x89, 0x91, 0x8D, 0x84, 0x87, 0x8F, 0x92, 0x8E, 0x8B, 0x92, - 0x8F, 0x7F, 0x81, 0x8F, 0x88, 0x73, 0x76, 0x81, 0x7C, 0x86, 0x97, 0x7E, 0x64, 0x75, 0x81, 0x6E, - 0x6F, 0x8A, 0x93, 0x89, 0x82, 0x76, 0x70, 0x7B, 0x79, 0x71, 0x8A, 0x9E, 0x81, 0x66, 0x6F, 0x74, - 0x66, 0x69, 0x7F, 0x84, 0x70, 0x63, 0x60, 0x60, 0x73, 0x7C, 0x71, 0x7A, 0x89, 0x7B, 0x6D, 0x80, - 0x97, 0x90, 0x8A, 0x92, 0x8F, 0x83, 0x76, 0x6F, 0x7D, 0x8C, 0x84, 0x71, 0x69, 0x69, 0x75, 0x94, - 0x8E, 0x5E, 0x64, 0x7B, 0x52, 0x42, 0x83, 0xAF, 0xA0, 0x90, 0x8B, 0x81, 0x80, 0x7F, 0x7C, 0x9A, - 0xAF, 0x7C, 0x48, 0x54, 0x5E, 0x43, 0x3F, 0x60, 0x6E, 0x5D, 0x4F, 0x50, 0x5C, 0x72, 0x87, 0x95, - 0xAB, 0xBB, 0xA5, 0x92, 0xAC, 0xC2, 0xB3, 0xA7, 0xAD, 0xA3, 0x84, 0x6E, 0x6D, 0x71, 0x68, 0x55, - 0x5A, 0x85, 0x9C, 0x78, 0x52, 0x6A, 0x7E, 0x5F, 0x67, 0xA7, 0xC2, 0xB1, 0x9B, 0x8F, 0x96, 0x9F, - 0x8E, 0x77, 0x81, 0x92, 0x6B, 0x37, 0x3E, 0x54, 0x49, 0x41, 0x60, 0x81, 0x7C, 0x70, 0x76, 0x83, - 0x95, 0xAB, 0xB7, 0xC0, 0xCC, 0xC2, 0x9F, 0x95, 0xA7, 0xA6, 0x8D, 0x80, 0x7E, 0x73, 0x5F, 0x59, - 0x64, 0x6A, 0x66, 0x6F, 0x94, 0xB0, 0x96, 0x70, 0x81, 0x9A, 0x84, 0x7C, 0xA5, 0xBA, 0xAB, 0x97, - 0x80, 0x6F, 0x6D, 0x6D, 0x63, 0x62, 0x76, 0x71, 0x46, 0x3C, 0x58, 0x5F, 0x57, 0x68, 0x86, 0x86, - 0x71, 0x71, 0x80, 0x8B, 0x97, 0xA6, 0xB0, 0xB2, 0xAB, 0x98, 0x86, 0x86, 0x8A, 0x80, 0x77, 0x76, - 0x7B, 0x71, 0x62, 0x70, 0x7F, 0x72, 0x74, 0x9D, 0xBE, 0xA7, 0x77, 0x73, 0x85, 0x71, 0x5E, 0x7F, - 0xA1, 0x9D, 0x8E, 0x7D, 0x64, 0x5A, 0x62, 0x63, 0x5B, 0x69, 0x80, 0x67, 0x37, 0x39, 0x56, 0x54, - 0x50, 0x74, 0x8F, 0x7C, 0x72, 0x85, 0x8A, 0x8D, 0xA5, 0xB5, 0xB3, 0xAD, 0x9F, 0x82, 0x6E, 0x72, - 0x74, 0x6C, 0x6D, 0x78, 0x78, 0x64, 0x62, 0x78, 0x79, 0x72, 0x8F, 0xBD, 0xBB, 0x8A, 0x79, 0x89, - 0x6F, 0x4F, 0x70, 0xA5, 0xA8, 0x92, 0x8E, 0x82, 0x5E, 0x53, 0x6B, 0x73, 0x6E, 0x7F, 0x89, 0x62, - 0x3F, 0x50, 0x66, 0x5A, 0x60, 0x8D, 0x9E, 0x87, 0x84, 0x8F, 0x8D, 0x91, 0xA5, 0xB4, 0xB2, 0xA7, - 0x93, 0x77, 0x65, 0x6A, 0x6D, 0x67, 0x73, 0x87, 0x7E, 0x6D, 0x75, 0x7B, 0x72, 0x80, 0xAA, 0xC9, - 0xB1, 0x8B, 0x8C, 0x7C, 0x4B, 0x52, 0x8E, 0xA5, 0x99, 0xA1, 0xAA, 0x86, 0x62, 0x6B, 0x78, 0x6C, - 0x68, 0x7D, 0x82, 0x60, 0x48, 0x58, 0x5F, 0x59, 0x71, 0x96, 0x9D, 0x95, 0x9A, 0x97, 0x93, 0x9B, - 0xA1, 0xA0, 0xA1, 0x9D, 0x8B, 0x72, 0x65, 0x69, 0x6D, 0x78, 0x8A, 0x90, 0x8F, 0x8E, 0x82, 0x73, - 0x7E, 0xA2, 0xB6, 0x9F, 0x86, 0x92, 0x80, 0x44, 0x4B, 0x81, 0x87, 0x7D, 0x99, 0xAE, 0x90, 0x65, - 0x64, 0x6F, 0x5A, 0x4D, 0x6A, 0x7F, 0x66, 0x51, 0x5B, 0x5F, 0x5A, 0x65, 0x83, 0x9B, 0x99, 0x8E, - 0x8F, 0x8E, 0x82, 0x7C, 0x80, 0x8A, 0x8B, 0x85, 0x80, 0x79, 0x71, 0x6D, 0x72, 0x7E, 0x80, 0x84, - 0x94, 0x96, 0x81, 0x73, 0x7E, 0x91, 0x91, 0x86, 0x85, 0x85, 0x6B, 0x4B, 0x55, 0x7B, 0x88, 0x84, - 0x9C, 0xB6, 0x9B, 0x6C, 0x5F, 0x62, 0x55, 0x4A, 0x5D, 0x75, 0x6D, 0x59, 0x5E, 0x65, 0x5D, 0x61, - 0x7F, 0x9A, 0x9A, 0x91, 0x93, 0x93, 0x82, 0x75, 0x84, 0x8D, 0x7E, 0x7D, 0x8B, 0x85, 0x75, 0x78, - 0x88, 0x8C, 0x8A, 0x97, 0xA0, 0x8F, 0x7B, 0x8B, 0xAD, 0xA7, 0x82, 0x83, 0x8F, 0x66, 0x40, 0x62, - 0x8F, 0x87, 0x85, 0xB1, 0xC0, 0x93, 0x71, 0x71, 0x68, 0x46, 0x39, 0x56, 0x6F, 0x63, 0x5C, 0x6E, - 0x73, 0x67, 0x6A, 0x80, 0x9D, 0xA5, 0x98, 0xA3, 0xB5, 0x99, 0x7C, 0x8A, 0x93, 0x7E, 0x79, 0x88, - 0x8E, 0x82, 0x79, 0x87, 0x92, 0x8A, 0x8F, 0x9E, 0x9B, 0x8B, 0x7E, 0x86, 0x9E, 0x92, 0x76, 0x7F, - 0x87, 0x63, 0x4C, 0x69, 0x92, 0x97, 0x8F, 0xA3, 0xBB, 0x9E, 0x69, 0x60, 0x69, 0x51, 0x35, 0x4B, - 0x78, 0x7A, 0x63, 0x6F, 0x86, 0x78, 0x6A, 0x7D, 0x97, 0x9A, 0x8D, 0x8D, 0x99, 0x90, 0x77, 0x77, - 0x86, 0x7D, 0x72, 0x82, 0x8D, 0x84, 0x7F, 0x8A, 0x90, 0x88, 0x82, 0x86, 0x7F, 0x74, 0x88, 0x9A, - 0x7F, 0x70, 0x88, 0x7A, 0x4D, 0x54, 0x7B, 0x82, 0x7C, 0x92, 0xB2, 0xAB, 0x86, 0x79, 0x7C, 0x63, - 0x41, 0x42, 0x58, 0x66, 0x64, 0x64, 0x7B, 0x8C, 0x76, 0x6B, 0x84, 0x90, 0x86, 0x8A, 0x9B, 0xA0, - 0x8C, 0x78, 0x80, 0x84, 0x72, 0x6F, 0x80, 0x7F, 0x75, 0x78, 0x80, 0x83, 0x81, 0x7C, 0x79, 0x77, - 0x85, 0x97, 0x81, 0x69, 0x83, 0x84, 0x51, 0x4F, 0x79, 0x7C, 0x73, 0x92, 0xB2, 0xAF, 0x98, 0x8B, - 0x89, 0x77, 0x53, 0x3D, 0x40, 0x52, 0x5B, 0x59, 0x72, 0x99, 0x93, 0x7A, 0x87, 0x93, 0x7E, 0x76, - 0x8B, 0x9E, 0x9B, 0x89, 0x86, 0x93, 0x87, 0x6D, 0x74, 0x85, 0x78, 0x71, 0x84, 0x8E, 0x8A, 0x85, - 0x7A, 0x80, 0x9F, 0xA0, 0x79, 0x75, 0x8C, 0x74, 0x50, 0x65, 0x88, 0x84, 0x7F, 0x9D, 0xBA, 0xB2, - 0x91, 0x7E, 0x85, 0x82, 0x62, 0x4C, 0x59, 0x68, 0x63, 0x5D, 0x72, 0x94, 0x94, 0x81, 0x8D, 0x9E, - 0x87, 0x73, 0x83, 0x96, 0x93, 0x87, 0x87, 0x94, 0x8B, 0x72, 0x76, 0x83, 0x7B, 0x74, 0x7E, 0x8F, - 0x96, 0x83, 0x85, 0xB4, 0xBB, 0x88, 0x83, 0x9A, 0x7A, 0x54, 0x61, 0x70, 0x6B, 0x74, 0x96, 0xAD, - 0xA1, 0x91, 0x94, 0x89, 0x72, 0x68, 0x58, 0x4B, 0x58, 0x61, 0x5C, 0x68, 0x77, 0x75, 0x77, 0x81, - 0x84, 0x84, 0x87, 0x8A, 0x8C, 0x8C, 0x89, 0x81, 0x7D, 0x81, 0x7A, 0x6C, 0x70, 0x7F, 0x80, 0x76, - 0x75, 0x84, 0x9C, 0x9D, 0x87, 0x87, 0x98, 0x86, 0x64, 0x6B, 0x7D, 0x71, 0x6A, 0x83, 0x9E, 0xA0, - 0x8E, 0x86, 0x8C, 0x7F, 0x63, 0x5E, 0x64, 0x5F, 0x60, 0x67, 0x6C, 0x7B, 0x81, 0x6F, 0x6E, 0x82, - 0x7F, 0x75, 0x81, 0x8D, 0x8D, 0x89, 0x81, 0x7B, 0x7B, 0x71, 0x67, 0x6F, 0x7B, 0x76, 0x6B, 0x78, - 0x9B, 0xA2, 0x88, 0x89, 0xA6, 0x98, 0x6F, 0x75, 0x93, 0x88, 0x76, 0x90, 0xAA, 0x9D, 0x8C, 0x8A, - 0x84, 0x73, 0x61, 0x55, 0x53, 0x60, 0x77, 0x80, 0x7E, 0x8F, 0x98, 0x7E, 0x6D, 0x7C, 0x7D, 0x6F, - 0x74, 0x87, 0x8F, 0x89, 0x81, 0x80, 0x85, 0x80, 0x76, 0x77, 0x81, 0x86, 0x7F, 0x74, 0x85, 0xAA, - 0xA1, 0x80, 0x91, 0xA1, 0x78, 0x69, 0x8B, 0x90, 0x80, 0x94, 0xB4, 0xB4, 0xA0, 0x9A, 0x92, 0x71, - 0x55, 0x55, 0x4D, 0x43, 0x58, 0x75, 0x75, 0x73, 0x87, 0x93, 0x83, 0x72, 0x72, 0x72, 0x6E, 0x77, - 0x85, 0x8B, 0x8E, 0x92, 0x88, 0x7E, 0x87, 0x85, 0x7C, 0x83, 0x7F, 0x7C, 0x9E, 0xA3, 0x7D, 0x89, - 0xA4, 0x84, 0x67, 0x77, 0x86, 0x86, 0x88, 0x98, 0xB2, 0xB0, 0x96, 0x8E, 0x8F, 0x7B, 0x59, 0x4A, - 0x4E, 0x4B, 0x4F, 0x70, 0x83, 0x7A, 0x80, 0x8A, 0x77, 0x63, 0x67, 0x69, 0x62, 0x64, 0x78, 0x89, - 0x8A, 0x82, 0x7F, 0x80, 0x7C, 0x76, 0x78, 0x74, 0x6A, 0x7F, 0x9A, 0x87, 0x78, 0x98, 0x9A, 0x70, - 0x72, 0x91, 0x88, 0x7D, 0x96, 0xAC, 0xAE, 0xAD, 0xA9, 0xA3, 0x95, 0x79, 0x5A, 0x40, 0x2D, 0x34, - 0x4D, 0x63, 0x7C, 0x98, 0xA0, 0x97, 0x8E, 0x87, 0x79, 0x64, 0x57, 0x5C, 0x64, 0x66, 0x6B, 0x7A, - 0x7E, 0x7C, 0x84, 0x88, 0x81, 0x7B, 0x74, 0x7F, 0x94, 0x7F, 0x6D, 0x8F, 0x92, 0x66, 0x6D, 0x8E, - 0x85, 0x82, 0xA3, 0xBD, 0xB8, 0xA7, 0xA5, 0x9F, 0x7C, 0x5E, 0x5A, 0x4C, 0x39, 0x47, 0x63, 0x6B, - 0x71, 0x8D, 0x9C, 0x8D, 0x8B, 0x93, 0x85, 0x79, 0x7B, 0x77, 0x71, 0x76, 0x7B, 0x7D, 0x7A, 0x7B, - 0x7B, 0x6E, 0x70, 0x94, 0xA2, 0x88, 0x88, 0xA6, 0x9A, 0x70, 0x71, 0x89, 0x80, 0x7A, 0x99, 0xB1, - 0xB3, 0xAE, 0xA5, 0x9E, 0x95, 0x78, 0x5C, 0x55, 0x52, 0x4A, 0x55, 0x73, 0x83, 0x8E, 0xA1, 0x9A, - 0x85, 0x89, 0x84, 0x6A, 0x69, 0x78, 0x75, 0x6E, 0x71, 0x7F, 0x7F, 0x6F, 0x6F, 0x76, 0x7B, 0x96, - 0x99, 0x7E, 0x94, 0xAF, 0x8A, 0x7B, 0x95, 0x89, 0x77, 0x91, 0xB3, 0xBB, 0xB5, 0xBC, 0xC1, 0xA0, - 0x7B, 0x79, 0x66, 0x42, 0x43, 0x4F, 0x48, 0x53, 0x72, 0x80, 0x7E, 0x85, 0x8F, 0x90, 0x85, 0x7C, - 0x73, 0x6A, 0x65, 0x60, 0x56, 0x56, 0x5D, 0x61, 0x64, 0x67, 0x77, 0x95, 0x96, 0x7E, 0x8D, 0x9D, - 0x79, 0x68, 0x81, 0x82, 0x75, 0x88, 0xA6, 0xB4, 0xAF, 0xAA, 0xB3, 0xA9, 0x88, 0x7A, 0x72, 0x5C, - 0x5C, 0x6E, 0x71, 0x70, 0x7C, 0x88, 0x87, 0x7E, 0x7D, 0x81, 0x7A, 0x71, 0x75, 0x76, 0x6A, 0x63, - 0x5F, 0x5A, 0x59, 0x53, 0x5F, 0x82, 0x7F, 0x65, 0x81, 0x90, 0x5F, 0x5C, 0x83, 0x75, 0x65, 0x8D, - 0xB4, 0xB8, 0xAF, 0xB5, 0xBF, 0xA6, 0x81, 0x79, 0x68, 0x4C, 0x54, 0x60, 0x5A, 0x6D, 0x91, 0x9B, - 0x9C, 0xAD, 0xBD, 0xAE, 0x93, 0x89, 0x7B, 0x60, 0x50, 0x49, 0x42, 0x49, 0x5B, 0x78, 0x92, 0x94, - 0x99, 0xA8, 0x90, 0x6E, 0x7A, 0x77, 0x55, 0x64, 0x98, 0xA3, 0x9E, 0xB6, 0xCD, 0xBB, 0x97, 0x92, - 0x94, 0x71, 0x59, 0x6E, 0x70, 0x61, 0x78, 0x94, 0x8F, 0x89, 0x92, 0x93, 0x86, 0x7B, 0x7C, 0x75, - 0x65, 0x62, 0x65, 0x5A, 0x54, 0x5C, 0x67, 0x79, 0x7D, 0x6F, 0x7E, 0x8F, 0x72, 0x63, 0x83, 0x84, - 0x70, 0x8B, 0xB5, 0xBC, 0xB4, 0xB8, 0xC1, 0xAB, 0x87, 0x83, 0x81, 0x6A, 0x67, 0x74, 0x6C, 0x6E, - 0x84, 0x8E, 0x8A, 0x8E, 0x99, 0x96, 0x82, 0x7C, 0x7B, 0x6B, 0x61, 0x60, 0x54, 0x49, 0x56, 0x74, - 0x77, 0x60, 0x7A, 0x9D, 0x72, 0x57, 0x7F, 0x74, 0x53, 0x7A, 0xA1, 0x9C, 0x9C, 0xAC, 0xB0, 0x9D, - 0x92, 0x99, 0x85, 0x6B, 0x71, 0x6C, 0x5A, 0x6A, 0x80, 0x81, 0x8B, 0x9C, 0xA2, 0xA1, 0x9A, 0x90, - 0x84, 0x76, 0x6D, 0x64, 0x53, 0x4A, 0x62, 0x83, 0x7A, 0x68, 0x82, 0x8A, 0x63, 0x5D, 0x72, 0x63, - 0x55, 0x74, 0x99, 0x9B, 0x9A, 0xB0, 0xA9, 0x82, 0x86, 0x92, 0x66, 0x54, 0x74, 0x73, 0x63, 0x7C, - 0x95, 0x8F, 0x87, 0x91, 0x90, 0x7E, 0x79, 0x78, 0x6B, 0x62, 0x5F, 0x5A, 0x56, 0x61, 0x7C, 0x82, - 0x6C, 0x72, 0x87, 0x6A, 0x54, 0x67, 0x64, 0x5E, 0x81, 0xA1, 0xAE, 0xBA, 0xC3, 0xBD, 0xA1, 0x96, - 0x9A, 0x7B, 0x62, 0x71, 0x6E, 0x62, 0x77, 0x8A, 0x94, 0xA1, 0xAA, 0xAE, 0xA5, 0x90, 0x7F, 0x6F, - 0x60, 0x5D, 0x55, 0x4E, 0x67, 0x8C, 0x81, 0x66, 0x7C, 0x83, 0x53, 0x4A, 0x61, 0x4C, 0x46, 0x7D, - 0xA7, 0xA8, 0xAC, 0xC8, 0xD0, 0xA8, 0x98, 0xA8, 0x80, 0x54, 0x6C, 0x78, 0x6A, 0x83, 0xAA, 0xB1, - 0xA2, 0xA7, 0xB0, 0x90, 0x76, 0x7C, 0x66, 0x46, 0x61, 0x8E, 0x86, 0x78, 0x94, 0x9A, 0x71, 0x5F, - 0x66, 0x53, 0x49, 0x6A, 0x84, 0x88, 0x9C, 0xAF, 0xA8, 0x97, 0x95, 0x8F, 0x73, 0x65, 0x6F, 0x6E, - 0x6F, 0x84, 0x9B, 0xA4, 0x9D, 0x98, 0x98, 0x8F, 0x83, 0x75, 0x65, 0x5E, 0x62, 0x6E, 0x75, 0x73, - 0x78, 0x87, 0x7C, 0x57, 0x55, 0x5E, 0x43, 0x47, 0x73, 0x7F, 0x82, 0xA4, 0xB7, 0xA4, 0x9A, 0xA4, - 0x92, 0x71, 0x6C, 0x6C, 0x5A, 0x63, 0x8A, 0x9D, 0xA2, 0xB7, 0xC2, 0xB3, 0xA0, 0x95, 0x82, 0x68, - 0x5D, 0x51, 0x37, 0x46, 0x75, 0x77, 0x6A, 0x8A, 0x9C, 0x74, 0x5C, 0x63, 0x4E, 0x42, 0x59, 0x66, - 0x70, 0x87, 0x98, 0x9A, 0x8C, 0x8A, 0x87, 0x68, 0x5E, 0x70, 0x6A, 0x68, 0x86, 0x9E, 0xA5, 0xA4, - 0xAB, 0xAE, 0x99, 0x89, 0x7D, 0x59, 0x45, 0x60, 0x7E, 0x7A, 0x7B, 0xA8, 0xB0, 0x7F, 0x7E, 0x88, - 0x5C, 0x4C, 0x72, 0x86, 0x80, 0x8B, 0xA9, 0xA5, 0x86, 0x8A, 0x92, 0x6E, 0x64, 0x85, 0x81, 0x6D, - 0x86, 0xA3, 0x98, 0x84, 0x90, 0x9D, 0x84, 0x7D, 0x8D, 0x73, 0x58, 0x68, 0x7A, 0x75, 0x6D, 0x7B, - 0x93, 0x86, 0x68, 0x6B, 0x66, 0x41, 0x47, 0x76, 0x82, 0x7A, 0x8C, 0xAE, 0xAE, 0x8D, 0x93, 0x99, - 0x6F, 0x68, 0x7E, 0x70, 0x6F, 0x91, 0xAA, 0xAC, 0xA7, 0xB5, 0xBC, 0x9F, 0x92, 0x99, 0x82, 0x68, - 0x6E, 0x69, 0x67, 0x83, 0x8A, 0x7D, 0x8E, 0x95, 0x76, 0x6A, 0x75, 0x61, 0x4E, 0x69, 0x82, 0x81, - 0x84, 0x9A, 0xA9, 0x8A, 0x7A, 0x91, 0x77, 0x51, 0x65, 0x64, 0x4F, 0x69, 0x93, 0x9C, 0x96, 0xA1, - 0xAA, 0x91, 0x78, 0x77, 0x64, 0x4A, 0x61, 0x82, 0x6F, 0x6B, 0x94, 0x8F, 0x66, 0x74, 0x84, 0x5A, - 0x52, 0x7C, 0x7D, 0x71, 0x8E, 0xA4, 0x98, 0x8B, 0x96, 0x98, 0x7B, 0x70, 0x7A, 0x6C, 0x6C, 0x8D, - 0xA0, 0xA4, 0xB0, 0xBD, 0xB9, 0xA1, 0x89, 0x75, 0x59, 0x48, 0x48, 0x4F, 0x53, 0x5B, 0x79, 0x86, - 0x6E, 0x70, 0x76, 0x59, 0x56, 0x6B, 0x6B, 0x63, 0x6F, 0x87, 0x87, 0x75, 0x7E, 0x87, 0x72, 0x6B, - 0x7F, 0x74, 0x64, 0x8D, 0xB1, 0xA9, 0xAE, 0xBD, 0xB2, 0x9B, 0x8D, 0x82, 0x65, 0x52, 0x5D, 0x61, - 0x55, 0x5E, 0x7F, 0x82, 0x75, 0x87, 0x8D, 0x7A, 0x82, 0x89, 0x81, 0x88, 0x93, 0x93, 0x8A, 0x87, - 0x89, 0x7C, 0x70, 0x70, 0x63, 0x5E, 0x78, 0x90, 0x98, 0xA9, 0xBA, 0xBD, 0xAF, 0x9E, 0x95, 0x7B, - 0x5C, 0x48, 0x39, 0x48, 0x54, 0x53, 0x77, 0x80, 0x63, 0x79, 0x92, 0x83, 0x7F, 0x8F, 0x95, 0x86, - 0x8A, 0xA0, 0x90, 0x7B, 0x8A, 0x8C, 0x70, 0x6E, 0x83, 0x71, 0x71, 0xA6, 0xB8, 0xB7, 0xD0, 0xD1, - 0xBB, 0xA8, 0x92, 0x74, 0x55, 0x59, 0x5F, 0x4A, 0x63, 0x89, 0x71, 0x66, 0x82, 0x81, 0x70, 0x81, - 0x96, 0x89, 0x7C, 0x8E, 0x88, 0x6B, 0x6D, 0x73, 0x5B, 0x50, 0x67, 0x70, 0x60, 0x73, 0x97, 0x9D, - 0xAB, 0xBE, 0xBC, 0xB8, 0xAB, 0x92, 0x7F, 0x72, 0x68, 0x54, 0x4A, 0x59, 0x55, 0x4C, 0x5E, 0x71, - 0x72, 0x78, 0x94, 0xA5, 0x9C, 0x9D, 0xA0, 0x8A, 0x76, 0x75, 0x74, 0x68, 0x5D, 0x61, 0x68, 0x67, - 0x72, 0x8F, 0x9E, 0xA8, 0xC3, 0xD4, 0xC9, 0xBD, 0xB0, 0x93, 0x72, 0x5D, 0x50, 0x3F, 0x2B, 0x2A, - 0x37, 0x37, 0x40, 0x5F, 0x69, 0x6B, 0x85, 0x99, 0xA2, 0x9C, 0x90, 0x8C, 0x78, 0x68, 0x6D, 0x63, - 0x55, 0x51, 0x4B, 0x52, 0x74, 0x99, 0xAA, 0xC1, 0xDD, 0xDE, 0xD1, 0xBC, 0xA4, 0x82, 0x5F, 0x5B, - 0x50, 0x3E, 0x46, 0x39, 0x3B, 0x63, 0x60, 0x5F, 0x8B, 0xA2, 0xA2, 0xAA, 0xB8, 0xB3, 0x8E, 0x7D, - 0x80, 0x66, 0x55, 0x63, 0x5A, 0x46, 0x63, 0x86, 0x80, 0x91, 0xBA, 0xBD, 0xB5, 0xC1, 0xC4, 0xBB, - 0xA5, 0x84, 0x6D, 0x53, 0x43, 0x4B, 0x3D, 0x2B, 0x44, 0x53, 0x53, 0x6E, 0x8D, 0x9F, 0xAD, 0xB8, - 0xBF, 0xA8, 0x81, 0x6F, 0x66, 0x51, 0x50, 0x6C, 0x6C, 0x66, 0x87, 0x93, 0x8F, 0xAE, 0xC8, 0xC9, - 0xD0, 0xD6, 0xCE, 0xBB, 0x9F, 0x8B, 0x7B, 0x68, 0x64, 0x61, 0x5E, 0x69, 0x64, 0x63, 0x75, 0x81, - 0x8E, 0x9F, 0xB0, 0xB6, 0xAC, 0xAF, 0xA8, 0x86, 0x73, 0x62, 0x4A, 0x44, 0x43, 0x46, 0x51, 0x61, - 0x72, 0x7E, 0x84, 0x8B, 0x92, 0x94, 0x98, 0x9F, 0x92, 0x72, 0x5F, 0x56, 0x4A, 0x46, 0x4E, 0x5C, - 0x67, 0x76, 0x8D, 0xA1, 0xAB, 0xB3, 0xC1, 0xC3, 0xBE, 0xC1, 0xBB, 0xAC, 0xA2, 0x97, 0x85, 0x6F, - 0x69, 0x70, 0x5A, 0x45, 0x50, 0x59, 0x58, 0x5A, 0x61, 0x68, 0x65, 0x67, 0x6A, 0x62, 0x5B, 0x55, - 0x51, 0x52, 0x53, 0x58, 0x69, 0x7F, 0x84, 0x8E, 0xAC, 0xB4, 0xB0, 0xBD, 0xCD, 0xD1, 0xCA, 0xC1, - 0xB5, 0xA5, 0x97, 0x88, 0x7A, 0x7A, 0x79, 0x6A, 0x62, 0x69, 0x67, 0x5B, 0x5D, 0x61, 0x57, 0x52, - 0x4C, 0x3E, 0x33, 0x23, 0x1A, 0x21, 0x27, 0x2C, 0x33, 0x39, 0x42, 0x4F, 0x5F, 0x73, 0x7F, 0x8D, - 0x9F, 0xA3, 0xAC, 0xC1, 0xC4, 0xBD, 0xC2, 0xC5, 0xBD, 0xB6, 0xBD, 0xBF, 0xB4, 0xC0, 0xD3, 0xD1, - 0xD4, 0xD8, 0xD6, 0xD1, 0xC3, 0xB6, 0xAA, 0x94, 0x85, 0x75, 0x63, 0x5C, 0x4D, 0x3F, 0x49, 0x46, - 0x3A, 0x3F, 0x38, 0x2C, 0x2D, 0x2A, 0x2D, 0x31, 0x32, 0x40, 0x42, 0x40, 0x50, 0x55, 0x55, 0x62, - 0x6B, 0x70, 0x82, 0x97, 0x9E, 0xAA, 0xBD, 0xC6, 0xC4, 0xC3, 0xC7, 0xB9, 0xA2, 0x9C, 0xA1, 0x9D, - 0x90, 0x99, 0xAE, 0xA6, 0xA5, 0xB3, 0xAB, 0xA5, 0xAC, 0xAE, 0xB2, 0xB0, 0xB0, 0xB2, 0xA0, 0x98, - 0x9A, 0x85, 0x7A, 0x80, 0x75, 0x63, 0x6E, 0x7B, 0x68, 0x66, 0x7B, 0x74, 0x69, 0x6E, 0x6D, 0x5A, - 0x47, 0x46, 0x45, 0x37, 0x35, 0x3A, 0x37, 0x3A, 0x48, 0x4F, 0x55, 0x68, 0x78, 0x7D, 0x87, 0x94, - 0x99, 0x95, 0x90, 0x92, 0x94, 0x90, 0x87, 0x89, 0x91, 0x8B, 0x8D, 0x97, 0x9A, 0x9B, 0xA4, 0xAC, - 0xAC, 0xAC, 0xAF, 0xAF, 0xA5, 0x98, 0x90, 0x83, 0x7A, 0x75, 0x65, 0x66, 0x6D, 0x64, 0x6D, 0x78, - 0x75, 0x7D, 0x87, 0x8D, 0x8F, 0x8E, 0x8E, 0x85, 0x7B, 0x7B, 0x73, 0x5F, 0x60, 0x68, 0x5C, 0x5C, - 0x6B, 0x6A, 0x66, 0x73, 0x81, 0x7B, 0x77, 0x7C, 0x74, 0x63, 0x53, 0x4F, 0x4D, 0x47, 0x46, 0x53, - 0x5D, 0x57, 0x5A, 0x69, 0x69, 0x68, 0x7B, 0x8A, 0x90, 0x9F, 0xA6, 0x9F, 0x9F, 0xA5, 0x9D, 0x8B, - 0x8F, 0x9A, 0x96, 0x92, 0x9A, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA9, 0xAA, 0xA0, 0x9C, 0x9B, 0x90, - 0x84, 0x7F, 0x7F, 0x75, 0x63, 0x67, 0x69, 0x5A, 0x59, 0x60, 0x62, 0x66, 0x72, 0x81, 0x86, 0x87, - 0x86, 0x7E, 0x7A, 0x76, 0x6B, 0x60, 0x64, 0x6F, 0x71, 0x71, 0x79, 0x7F, 0x7B, 0x7B, 0x85, 0x8D, - 0x94, 0x98, 0xA0, 0xA1, 0x97, 0x91, 0x82, 0x79, 0x7D, 0x69, 0x64, 0x73, 0x6B, 0x68, 0x74, 0x79, - 0x7A, 0x81, 0x8E, 0x93, 0x97, 0x9E, 0x9A, 0x93, 0x94, 0x98, 0x8C, 0x82, 0x8E, 0x8E, 0x7F, 0x81, - 0x89, 0x84, 0x7F, 0x87, 0x8D, 0x8D, 0x97, 0x9B, 0x98, 0x93, 0x84, 0x75, 0x6D, 0x63, 0x53, 0x51, - 0x5E, 0x59, 0x56, 0x61, 0x61, 0x65, 0x6C, 0x75, 0x81, 0x89, 0x92, 0x93, 0x8F, 0x95, 0x94, 0x87, - 0x82, 0x87, 0x84, 0x7F, 0x84, 0x8B, 0x8D, 0x88, 0x84, 0x7E, 0x81, 0x87, 0x83, 0x86, 0x8B, 0x85, - 0x7B, 0x6F, 0x6A, 0x72, 0x69, 0x57, 0x66, 0x6D, 0x60, 0x61, 0x68, 0x70, 0x7A, 0x85, 0x91, 0x98, - 0xA1, 0xA2, 0x99, 0x9B, 0x9E, 0x95, 0x8D, 0x90, 0x97, 0x93, 0x8C, 0x8A, 0x85, 0x81, 0x79, 0x6D, - 0x6A, 0x6C, 0x68, 0x65, 0x69, 0x68, 0x62, 0x5B, 0x57, 0x61, 0x59, 0x46, 0x55, 0x60, 0x54, 0x4F, - 0x52, 0x54, 0x56, 0x58, 0x5C, 0x64, 0x74, 0x7F, 0x82, 0x93, 0xA6, 0xAA, 0xAA, 0xB5, 0xC3, 0xC0, - 0xB6, 0xB1, 0xB0, 0xA7, 0x97, 0x8F, 0x8C, 0x8B, 0x84, 0x7E, 0x83, 0x80, 0x7C, 0x7F, 0x88, 0x99, - 0x97, 0x94, 0x9A, 0x8C, 0x78, 0x69, 0x58, 0x4E, 0x46, 0x42, 0x4A, 0x56, 0x67, 0x74, 0x85, 0xA1, - 0xAD, 0xB3, 0xB9, 0xB9, 0xB8, 0xB3, 0xA9, 0x9C, 0x95, 0x94, 0x7D, 0x68, 0x66, 0x61, 0x56, 0x5E, - 0x6B, 0x72, 0x7C, 0x81, 0x91, 0xA5, 0xA5, 0x9F, 0x99, 0x8B, 0x74, 0x58, 0x46, 0x3D, 0x35, 0x34, - 0x39, 0x49, 0x65, 0x7A, 0x89, 0xA3, 0xB7, 0xBA, 0xBA, 0xBD, 0xBB, 0xB7, 0xAB, 0x9A, 0x91, 0x81, - 0x6F, 0x63, 0x53, 0x4F, 0x52, 0x55, 0x64, 0x72, 0x7D, 0x89, 0x91, 0x9E, 0xA6, 0x9E, 0x94, 0x8A, - 0x79, 0x62, 0x49, 0x40, 0x3D, 0x39, 0x41, 0x51, 0x60, 0x76, 0x8E, 0xA1, 0xB6, 0xC2, 0xC2, 0xC0, - 0xB7, 0xAC, 0xA0, 0x8D, 0x7D, 0x7C, 0x71, 0x5A, 0x55, 0x55, 0x51, 0x57, 0x66, 0x75, 0x83, 0x93, - 0x9E, 0xA4, 0xA6, 0x9A, 0x88, 0x7F, 0x72, 0x59, 0x4A, 0x44, 0x3D, 0x42, 0x4A, 0x57, 0x6D, 0x7F, - 0x90, 0x9D, 0xB1, 0xBF, 0xBC, 0xB9, 0xB1, 0xA4, 0x9B, 0x8D, 0x7E, 0x7A, 0x77, 0x67, 0x5D, 0x5F, - 0x61, 0x5F, 0x6A, 0x7A, 0x7E, 0x89, 0x93, 0x8E, 0x8B, 0x8C, 0x7E, 0x65, 0x55, 0x52, 0x46, 0x31, - 0x2B, 0x33, 0x39, 0x43, 0x5D, 0x77, 0x88, 0x99, 0xA9, 0xB1, 0xB4, 0xB1, 0xAB, 0xA5, 0x9C, 0x95, - 0x8C, 0x7D, 0x7C, 0x7E, 0x79, 0x7A, 0x83, 0x91, 0x98, 0xA1, 0xB0, 0xB6, 0xB5, 0xB7, 0xB2, 0xAD, - 0xA4, 0x8E, 0x7E, 0x75, 0x68, 0x5B, 0x4E, 0x4A, 0x52, 0x5B, 0x64, 0x78, 0x88, 0x91, 0x9C, 0xA2, - 0xA8, 0xA7, 0x9C, 0x94, 0x96, 0x91, 0x85, 0x7E, 0x7A, 0x78, 0x70, 0x68, 0x6B, 0x72, 0x7A, 0x7E, - 0x80, 0x88, 0x8C, 0x88, 0x82, 0x83, 0x8A, 0x80, 0x71, 0x75, 0x73, 0x67, 0x5D, 0x5D, 0x67, 0x6E, - 0x70, 0x7A, 0x85, 0x8B, 0x8F, 0x8F, 0x90, 0x96, 0x93, 0x8C, 0x8F, 0x91, 0x8C, 0x8A, 0x8C, 0x90, - 0x8D, 0x85, 0x82, 0x80, 0x7B, 0x75, 0x71, 0x76, 0x7A, 0x74, 0x74, 0x76, 0x71, 0x75, 0x76, 0x6C, - 0x6C, 0x75, 0x75, 0x71, 0x6D, 0x6C, 0x73, 0x6F, 0x6C, 0x75, 0x7D, 0x7E, 0x7D, 0x7D, 0x86, 0x8B, - 0x83, 0x85, 0x94, 0x98, 0x90, 0x8C, 0x90, 0x90, 0x80, 0x73, 0x75, 0x73, 0x6B, 0x66, 0x65, 0x67, - 0x65, 0x62, 0x63, 0x6B, 0x7A, 0x7B, 0x76, 0x82, 0x8C, 0x82, 0x79, 0x78, 0x78, 0x78, 0x70, 0x6B, - 0x70, 0x76, 0x76, 0x78, 0x82, 0x8F, 0x92, 0x90, 0x99, 0xA5, 0xA8, 0xA4, 0x9F, 0xA1, 0x9E, 0x8C, - 0x7E, 0x7A, 0x72, 0x69, 0x5B, 0x58, 0x61, 0x60, 0x5D, 0x64, 0x70, 0x7E, 0x89, 0x8D, 0x91, 0x94, - 0x8E, 0x82, 0x73, 0x69, 0x69, 0x64, 0x5A, 0x61, 0x6F, 0x73, 0x79, 0x89, 0x9E, 0xAC, 0xAE, 0xB5, - 0xBE, 0xBE, 0xB6, 0xA9, 0xA2, 0x9C, 0x8C, 0x76, 0x68, 0x63, 0x57, 0x4C, 0x4B, 0x52, 0x5B, 0x60, - 0x70, 0x7F, 0x8B, 0x98, 0x9E, 0x9F, 0x9C, 0x96, 0x86, 0x73, 0x64, 0x5C, 0x58, 0x56, 0x5A, 0x63, - 0x71, 0x83, 0x91, 0x9D, 0xB1, 0xBF, 0xC3, 0xC6, 0xC3, 0xBB, 0xAB, 0x9C, 0x91, 0x82, 0x72, 0x64, - 0x5F, 0x5D, 0x5B, 0x5B, 0x60, 0x68, 0x73, 0x81, 0x8C, 0x95, 0x9F, 0xA1, 0x95, 0x89, 0x7E, 0x72, - 0x61, 0x4F, 0x49, 0x4A, 0x4C, 0x53, 0x64, 0x75, 0x89, 0x9F, 0xB0, 0xBD, 0xC7, 0xC9, 0xC4, 0xBB, - 0xB1, 0xA1, 0x90, 0x85, 0x79, 0x6C, 0x61, 0x5B, 0x58, 0x56, 0x58, 0x5B, 0x61, 0x67, 0x6D, 0x75, - 0x75, 0x75, 0x73, 0x6A, 0x5B, 0x4E, 0x45, 0x3F, 0x39, 0x33, 0x36, 0x41, 0x52, 0x65, 0x74, 0x89, - 0x9E, 0xAD, 0xB3, 0xB7, 0xBA, 0xB6, 0xB2, 0xAD, 0xA4, 0x9B, 0x90, 0x87, 0x80, 0x78, 0x72, 0x73, - 0x75, 0x7C, 0x80, 0x81, 0x85, 0x86, 0x89, 0x88, 0x85, 0x84, 0x83, 0x7D, 0x73, 0x69, 0x62, 0x5E, - 0x5A, 0x5C, 0x5F, 0x66, 0x74, 0x7F, 0x8B, 0x97, 0x9E, 0xA1, 0xA4, 0xA3, 0xA0, 0x9B, 0x94, 0x8C, - 0x82, 0x7A, 0x72, 0x6C, 0x66, 0x62, 0x63, 0x63, 0x62, 0x62, 0x64, 0x63, 0x63, 0x6A, 0x6D, 0x70, - 0x79, 0x7E, 0x7F, 0x7D, 0x7A, 0x77, 0x73, 0x71, 0x72, 0x74, 0x76, 0x7C, 0x86, 0x8E, 0x98, 0xA0, - 0xA7, 0xAE, 0xB1, 0xB5, 0xB3, 0xAF, 0xAD, 0xAC, 0xA9, 0xA6, 0xA1, 0x97, 0x8A, 0x81, 0x7D, 0x77, - 0x6F, 0x69, 0x66, 0x65, 0x63, 0x63, 0x65, 0x6A, 0x71, 0x78, 0x7E, 0x7F, 0x80, 0x7E, 0x77, 0x73, - 0x71, 0x73, 0x75, 0x78, 0x7B, 0x83, 0x8A, 0x8F, 0x9B, 0xA4, 0xAA, 0xAF, 0xB1, 0xB2, 0xAF, 0xA6, - 0x9D, 0x94, 0x8A, 0x80, 0x73, 0x6B, 0x63, 0x5C, 0x5A, 0x5C, 0x60, 0x65, 0x6B, 0x70, 0x74, 0x7E, - 0x88, 0x8D, 0x8F, 0x8F, 0x89, 0x81, 0x76, 0x6A, 0x61, 0x59, 0x59, 0x5C, 0x5B, 0x66, 0x70, 0x7C, - 0x8F, 0x9D, 0xAA, 0xB1, 0xB3, 0xB4, 0xAB, 0xA2, 0x97, 0x89, 0x7C, 0x73, 0x66, 0x58, 0x52, 0x4F, - 0x4E, 0x4D, 0x50, 0x58, 0x5E, 0x62, 0x67, 0x6C, 0x72, 0x79, 0x7C, 0x7A, 0x78, 0x76, 0x70, 0x6E, - 0x6A, 0x67, 0x68, 0x6C, 0x73, 0x79, 0x81, 0x8D, 0x97, 0xA4, 0xAE, 0xB5, 0xB9, 0xBA, 0xB6, 0xAF, - 0xA4, 0x96, 0x89, 0x7D, 0x73, 0x69, 0x64, 0x64, 0x63, 0x66, 0x66, 0x6A, 0x71, 0x72, 0x73, 0x74, - 0x75, 0x74, 0x71, 0x75, 0x77, 0x77, 0x7A, 0x7A, 0x78, 0x76, 0x76, 0x76, 0x75, 0x76, 0x7D, 0x82, - 0x85, 0x8A, 0x8E, 0x93, 0x9A, 0x9F, 0xA3, 0xA4, 0xA1, 0x9E, 0x98, 0x91, 0x87, 0x7E, 0x7C, 0x79, - 0x74, 0x71, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x6B, 0x6C, 0x6E, 0x6E, 0x70, 0x77, 0x7D, 0x80, 0x87, - 0x8D, 0x91, 0x93, 0x94, 0x91, 0x8B, 0x86, 0x82, 0x7E, 0x7F, 0x80, 0x7E, 0x82, 0x8A, 0x8E, 0x94, - 0x9A, 0x9D, 0x9F, 0xA0, 0x9F, 0x9A, 0x93, 0x8D, 0x84, 0x79, 0x73, 0x6A, 0x61, 0x5F, 0x5F, 0x5F, - 0x5F, 0x60, 0x63, 0x66, 0x6B, 0x72, 0x77, 0x7C, 0x83, 0x86, 0x86, 0x84, 0x7F, 0x7B, 0x78, 0x73, - 0x72, 0x73, 0x76, 0x79, 0x7E, 0x86, 0x90, 0x9C, 0xA7, 0xB0, 0xB6, 0xB9, 0xB8, 0xB3, 0xAD, 0xA0, - 0x95, 0x8A, 0x7F, 0x77, 0x69, 0x60, 0x5B, 0x59, 0x57, 0x58, 0x5B, 0x62, 0x68, 0x6B, 0x72, 0x73, - 0x75, 0x77, 0x78, 0x7A, 0x7B, 0x78, 0x74, 0x73, 0x72, 0x72, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7E, - 0x82, 0x86, 0x8B, 0x8E, 0x92, 0x95, 0x94, 0x97, 0x97, 0x94, 0x94, 0x92, 0x8E, 0x88, 0x7F, 0x78, - 0x72, 0x6A, 0x64, 0x61, 0x60, 0x5D, 0x5F, 0x60, 0x5F, 0x62, 0x68, 0x6A, 0x6B, 0x6E, 0x6F, 0x6E, - 0x72, 0x76, 0x7A, 0x7B, 0x7C, 0x7B, 0x7B, 0x7B, 0x7B, 0x7D, 0x80, 0x85, 0x8A, 0x8F, 0x95, 0x9A, - 0x9E, 0xA1, 0xA6, 0xA9, 0xA6, 0xA3, 0xA0, 0x9B, 0x94, 0x8C, 0x83, 0x7C, 0x71, 0x68, 0x64, 0x5F, - 0x5F, 0x5E, 0x5F, 0x60, 0x62, 0x64, 0x67, 0x6B, 0x6E, 0x71, 0x76, 0x7B, 0x7F, 0x83, 0x89, 0x90, - 0x97, 0x98, 0x9A, 0x9C, 0x9D, 0x9D, 0x9E, 0x9F, 0xA1, 0xA2, 0xA1, 0xA0, 0x9E, 0x9F, 0xA1, 0xA1, - 0x9E, 0x9D, 0x9D, 0x99, 0x95, 0x90, 0x88, 0x7F, 0x75, 0x69, 0x5E, 0x54, 0x4D, 0x48, 0x46, 0x45, - 0x48, 0x4B, 0x50, 0x57, 0x5E, 0x69, 0x73, 0x7C, 0x84, 0x8B, 0x93, 0x9A, 0x9F, 0x9E, 0x9B, 0x98, - 0x93, 0x8F, 0x89, 0x85, 0x85, 0x88, 0x8D, 0x94, 0x99, 0x9E, 0xA1, 0xA2, 0xA2, 0xA0, 0xA0, 0x9C, - 0x98, 0x91, 0x86, 0x7E, 0x75, 0x6E, 0x68, 0x63, 0x5E, 0x5C, 0x59, 0x55, 0x54, 0x53, 0x55, 0x59, - 0x5C, 0x5F, 0x61, 0x65, 0x67, 0x69, 0x6B, 0x6E, 0x72, 0x77, 0x7A, 0x7C, 0x83, 0x88, 0x8C, 0x91, - 0x95, 0x99, 0x97, 0x91, 0x8E, 0x89, 0x82, 0x7C, 0x7B, 0x7A, 0x7A, 0x76, 0x73, 0x75, 0x77, 0x7C, - 0x83, 0x8C, 0x95, 0x99, 0x98, 0x94, 0x8E, 0x86, 0x7C, 0x71, 0x66, 0x5C, 0x57, 0x51, 0x50, 0x53, - 0x56, 0x5E, 0x68, 0x74, 0x7E, 0x85, 0x8E, 0x95, 0x99, 0x9C, 0x9C, 0x99, 0x95, 0x8D, 0x86, 0x82, - 0x7E, 0x77, 0x74, 0x79, 0x80, 0x85, 0x88, 0x86, 0x8B, 0x92, 0x92, 0x93, 0x92, 0x8E, 0x8B, 0x85, - 0x80, 0x7D, 0x7D, 0x7F, 0x82, 0x83, 0x84, 0x85, 0x84, 0x82, 0x7E, 0x79, 0x75, 0x6E, 0x67, 0x60, - 0x5C, 0x5A, 0x5A, 0x5C, 0x5F, 0x65, 0x6C, 0x72, 0x7B, 0x85, 0x90, 0x9A, 0xA5, 0xB1, 0xB6, 0xB6, - 0xB4, 0xB0, 0xA8, 0x9F, 0x94, 0x8A, 0x82, 0x7C, 0x77, 0x73, 0x71, 0x73, 0x78, 0x7D, 0x82, 0x86, - 0x88, 0x88, 0x8A, 0x88, 0x87, 0x86, 0x83, 0x7E, 0x79, 0x74, 0x6D, 0x68, 0x64, 0x5F, 0x5F, 0x5E, - 0x5F, 0x60, 0x61, 0x66, 0x6B, 0x71, 0x78, 0x80, 0x84, 0x87, 0x87, 0x86, 0x87, 0x8B, 0x90, 0x95, - 0x98, 0x9B, 0x9C, 0x9C, 0x9C, 0x9A, 0x99, 0x96, 0x92, 0x8E, 0x87, 0x81, 0x7D, 0x79, 0x76, 0x72, - 0x6E, 0x6C, 0x6C, 0x6E, 0x73, 0x78, 0x7B, 0x7F, 0x82, 0x81, 0x7F, 0x7F, 0x81, 0x82, 0x82, 0x81, - 0x7E, 0x7B, 0x76, 0x72, 0x6E, 0x6C, 0x6D, 0x6E, 0x72, 0x73, 0x75, 0x78, 0x7A, 0x7F, 0x83, 0x87, - 0x8D, 0x90, 0x90, 0x8F, 0x8C, 0x8C, 0x8E, 0x90, 0x90, 0x8C, 0x87, 0x82, 0x7E, 0x7A, 0x76, 0x75, - 0x74, 0x6E, 0x68, 0x66, 0x66, 0x65, 0x66, 0x67, 0x67, 0x69, 0x6A, 0x69, 0x6C, 0x70, 0x72, 0x74, - 0x79, 0x79, 0x77, 0x76, 0x7A, 0x7D, 0x80, 0x85, 0x89, 0x88, 0x89, 0x8A, 0x88, 0x85, 0x82, 0x7E, - 0x7B, 0x78, 0x74, 0x71, 0x71, 0x71, 0x77, 0x7D, 0x83, 0x8A, 0x8E, 0x8F, 0x91, 0x93, 0x94, 0x95, - 0x95, 0x95, 0x95, 0x92, 0x8F, 0x8B, 0x88, 0x84, 0x81, 0x7D, 0x7A, 0x78, 0x7A, 0x7C, 0x7A, 0x79, - 0x7A, 0x79, 0x78, 0x77, 0x78, 0x78, 0x77, 0x77, 0x75, 0x75, 0x78, 0x7C, 0x81, 0x83, 0x82, 0x81, - 0x81, 0x83, 0x89, 0x92, 0x99, 0x9B, 0x9B, 0x97, 0x91, 0x89, 0x82, 0x7E, 0x7D, 0x7E, 0x80, 0x80, - 0x83, 0x87, 0x8F, 0x97, 0x9C, 0x9F, 0xA1, 0xA0, 0x9C, 0x99, 0x93, 0x8D, 0x89, 0x82, 0x7C, 0x77, - 0x71, 0x6A, 0x67, 0x69, 0x6C, 0x6F, 0x70, 0x6F, 0x70, 0x71, 0x6E, 0x6D, 0x6D, 0x6C, 0x6B, 0x6B, - 0x6D, 0x71, 0x74, 0x75, 0x79, 0x7E, 0x84, 0x8B, 0x91, 0x96, 0x97, 0x92, 0x8B, 0x83, 0x7B, 0x76, - 0x72, 0x70, 0x70, 0x71, 0x70, 0x6E, 0x6D, 0x6F, 0x72, 0x73, 0x74, 0x77, 0x78, 0x79, 0x7D, 0x7E, - 0x7E, 0x83, 0x87, 0x88, 0x83, 0x7D, 0x78, 0x76, 0x73, 0x71, 0x74, 0x7A, 0x80, 0x86, 0x87, 0x84, - 0x84, 0x82, 0x7F, 0x7C, 0x78, 0x72, 0x6B, 0x6A, 0x68, 0x65, 0x64, 0x64, 0x66, 0x67, 0x67, 0x6A, - 0x6E, 0x75, 0x7C, 0x80, 0x84, 0x88, 0x8D, 0x8F, 0x91, 0x90, 0x90, 0x91, 0x92, 0x91, 0x8C, 0x86, - 0x82, 0x7C, 0x7B, 0x81, 0x85, 0x8A, 0x8E, 0x8D, 0x8B, 0x8A, 0x8A, 0x8A, 0x89, 0x8A, 0x8A, 0x84, - 0x7E, 0x7D, 0x80, 0x86, 0x8C, 0x92, 0x94, 0x90, 0x8B, 0x8B, 0x8A, 0x8A, 0x8C, 0x88, 0x84, 0x81, - 0x7D, 0x79, 0x75, 0x74, 0x75, 0x73, 0x73, 0x6F, 0x6D, 0x69, 0x66, 0x68, 0x6A, 0x6D, 0x72, 0x73, - 0x73, 0x76, 0x7B, 0x7E, 0x7D, 0x7E, 0x80, 0x89, 0x90, 0x95, 0x97, 0x99, 0x9C, 0x9E, 0x9D, 0x99, - 0x93, 0x8A, 0x7D, 0x79, 0x77, 0x78, 0x80, 0x85, 0x88, 0x89, 0x86, 0x84, 0x85, 0x86, 0x84, 0x82, - 0x80, 0x7A, 0x76, 0x77, 0x7C, 0x83, 0x87, 0x88, 0x88, 0x84, 0x7F, 0x78, 0x70, 0x6F, 0x6E, 0x72, - 0x75, 0x75, 0x76, 0x74, 0x70, 0x6C, 0x6B, 0x6C, 0x6B, 0x68, 0x65, 0x62, 0x62, 0x68, 0x6C, 0x72, - 0x7A, 0x83, 0x89, 0x8D, 0x8D, 0x8D, 0x8F, 0x92, 0x9A, 0x9F, 0xA3, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, - 0x9D, 0x95, 0x8D, 0x84, 0x77, 0x69, 0x5F, 0x58, 0x58, 0x5E, 0x67, 0x72, 0x7A, 0x7D, 0x80, 0x81, - 0x83, 0x86, 0x86, 0x88, 0x89, 0x88, 0x86, 0x82, 0x7E, 0x7D, 0x7B, 0x7A, 0x7A, 0x75, 0x6C, 0x65, - 0x63, 0x66, 0x70, 0x79, 0x7E, 0x80, 0x7B, 0x74, 0x6D, 0x68, 0x65, 0x64, 0x62, 0x5F, 0x58, 0x53, - 0x53, 0x56, 0x5C, 0x63, 0x6F, 0x7B, 0x86, 0x92, 0x9E, 0xA4, 0xA9, 0xAE, 0xB0, 0xB6, 0xB5, 0xB1, - 0xAC, 0xA4, 0x9F, 0x98, 0x93, 0x8D, 0x84, 0x76, 0x63, 0x53, 0x4D, 0x55, 0x64, 0x6F, 0x78, 0x79, - 0x73, 0x69, 0x5E, 0x5D, 0x62, 0x68, 0x72, 0x7C, 0x83, 0x88, 0x92, 0x9A, 0xA1, 0xA7, 0xAA, 0xAA, - 0xA3, 0x95, 0x8A, 0x84, 0x82, 0x81, 0x81, 0x83, 0x80, 0x7A, 0x6E, 0x60, 0x55, 0x52, 0x59, 0x66, - 0x73, 0x78, 0x75, 0x73, 0x76, 0x7A, 0x7E, 0x85, 0x8A, 0x8D, 0x8E, 0x93, 0x9B, 0xA4, 0xAE, 0xB7, - 0xBC, 0xBE, 0xBE, 0xB7, 0xAB, 0x9E, 0x95, 0x92, 0x91, 0x8A, 0x83, 0x79, 0x66, 0x4F, 0x3A, 0x2C, - 0x30, 0x48, 0x65, 0x7A, 0x87, 0x94, 0x99, 0x95, 0x8D, 0x89, 0x88, 0x89, 0x8F, 0x91, 0x90, 0x8C, - 0x88, 0x88, 0x86, 0x83, 0x7D, 0x79, 0x74, 0x6D, 0x64, 0x5E, 0x62, 0x6B, 0x72, 0x74, 0x70, 0x68, - 0x5E, 0x4F, 0x42, 0x46, 0x57, 0x68, 0x71, 0x77, 0x7D, 0x84, 0x89, 0x88, 0x83, 0x81, 0x84, 0x8B, - 0x93, 0x9A, 0xA5, 0xAA, 0xAB, 0xA6, 0xA0, 0x9B, 0x95, 0x8D, 0x87, 0x89, 0x8C, 0x8C, 0x89, 0x7F, - 0x6C, 0x4E, 0x31, 0x21, 0x28, 0x3E, 0x56, 0x69, 0x7A, 0x83, 0x7D, 0x6D, 0x61, 0x61, 0x6E, 0x82, - 0x93, 0xA2, 0xAD, 0xB1, 0xA9, 0x9C, 0x91, 0x8C, 0x85, 0x78, 0x6E, 0x6B, 0x6D, 0x72, 0x7A, 0x81, - 0x84, 0x7F, 0x6D, 0x55, 0x3F, 0x3F, 0x52, 0x63, 0x69, 0x6C, 0x6E, 0x72, 0x77, 0x77, 0x78, 0x7C, - 0x84, 0x91, 0xA2, 0xB3, 0xBC, 0xC6, 0xCC, 0xD2, 0xD4, 0xD1, 0xCC, 0xBC, 0xA8, 0x9F, 0x9A, 0x99, - 0x96, 0x8B, 0x7D, 0x68, 0x49, 0x2B, 0x17, 0x16, 0x32, 0x58, 0x77, 0x8E, 0x9E, 0x9E, 0x89, 0x78, - 0x73, 0x7B, 0x8B, 0x97, 0x9F, 0xA7, 0xAB, 0xA4, 0x9B, 0x94, 0x90, 0x88, 0x7C, 0x72, 0x6D, 0x70, - 0x78, 0x80, 0x8A, 0x8F, 0x87, 0x76, 0x5C, 0x45, 0x3D, 0x47, 0x59, 0x6B, 0x7A, 0x7C, 0x79, 0x75, - 0x6E, 0x6A, 0x69, 0x70, 0x79, 0x83, 0x93, 0xA2, 0xAB, 0xB5, 0xBB, 0xB9, 0xB4, 0xA9, 0x99, 0x91, - 0x8E, 0x94, 0x9D, 0x9E, 0x97, 0x82, 0x5F, 0x37, 0x19, 0x16, 0x32, 0x5A, 0x7D, 0x94, 0x9F, 0x9E, - 0x8C, 0x77, 0x6C, 0x73, 0x83, 0x91, 0x98, 0x9C, 0x9F, 0x9D, 0x9B, 0x97, 0x8C, 0x7A, 0x64, 0x54, - 0x4A, 0x53, 0x67, 0x7B, 0x8A, 0x92, 0x8A, 0x70, 0x55, 0x46, 0x40, 0x47, 0x53, 0x5A, 0x62, 0x6B, - 0x6D, 0x6F, 0x72, 0x70, 0x71, 0x74, 0x7F, 0x94, 0xAB, 0xBE, 0xCA, 0xD3, 0xD0, 0xC7, 0xB9, 0xA4, - 0x92, 0x8D, 0x93, 0x96, 0x92, 0x8B, 0x7D, 0x60, 0x3A, 0x1A, 0x0F, 0x22, 0x42, 0x5F, 0x78, 0x8B, - 0x93, 0x93, 0x8A, 0x81, 0x7F, 0x7F, 0x82, 0x88, 0x91, 0x95, 0x99, 0xA0, 0x9D, 0x91, 0x7B, 0x66, - 0x5B, 0x60, 0x6E, 0x7F, 0x8C, 0x96, 0x9C, 0x92, 0x82, 0x6D, 0x5C, 0x50, 0x41, 0x41, 0x4D, 0x58, - 0x5F, 0x67, 0x6E, 0x6D, 0x6D, 0x6A, 0x68, 0x6F, 0x7F, 0x97, 0xAB, 0xBB, 0xC8, 0xCC, 0xCB, 0xC6, - 0xBA, 0xA8, 0x9A, 0x8E, 0x8B, 0x8C, 0x87, 0x79, 0x62, 0x48, 0x35, 0x31, 0x3F, 0x5C, 0x79, 0x8D, - 0x9C, 0xA6, 0xAC, 0xA8, 0xA0, 0x98, 0x8C, 0x88, 0x8A, 0x8B, 0x8E, 0x95, 0x98, 0x8F, 0x87, 0x82, - 0x7B, 0x72, 0x70, 0x79, 0x85, 0x97, 0xA8, 0xAB, 0xA4, 0x97, 0x80, 0x63, 0x4F, 0x44, 0x40, 0x42, - 0x4D, 0x5B, 0x68, 0x74, 0x7C, 0x7F, 0x82, 0x88, 0x8E, 0x97, 0xA8, 0xB4, 0xBA, 0xBB, 0xB8, 0xB6, - 0xAC, 0x9C, 0x8B, 0x83, 0x7D, 0x79, 0x77, 0x66, 0x51, 0x48, 0x49, 0x4E, 0x57, 0x69, 0x7D, 0x92, - 0x9F, 0xA3, 0xA4, 0x9A, 0x88, 0x77, 0x74, 0x74, 0x70, 0x73, 0x76, 0x7D, 0x88, 0x90, 0x89, 0x7F, - 0x7B, 0x72, 0x75, 0x82, 0x86, 0x8A, 0x8F, 0x92, 0x95, 0x8D, 0x6E, 0x49, 0x31, 0x22, 0x1E, 0x20, - 0x28, 0x34, 0x45, 0x5B, 0x71, 0x7E, 0x81, 0x7F, 0x85, 0x97, 0xA3, 0xAB, 0xB3, 0xB7, 0xB7, 0xB3, - 0xA5, 0x93, 0x85, 0x7A, 0x79, 0x7A, 0x65, 0x4D, 0x4B, 0x52, 0x50, 0x53, 0x6A, 0x8C, 0xA9, 0xBB, - 0xBD, 0xB4, 0xA0, 0x8D, 0x81, 0x72, 0x60, 0x54, 0x5B, 0x6D, 0x82, 0x90, 0x8F, 0x8F, 0x95, 0x94, - 0x8A, 0x86, 0x93, 0xA6, 0xB3, 0xB5, 0xB3, 0xAD, 0x9C, 0x82, 0x69, 0x50, 0x31, 0x20, 0x21, 0x2A, - 0x3C, 0x55, 0x71, 0x8C, 0xA1, 0xA3, 0xA0, 0xA3, 0xA7, 0xA6, 0x9F, 0x9F, 0xA5, 0xA8, 0xA0, 0x8A, - 0x7C, 0x7E, 0x93, 0x96, 0x75, 0x5C, 0x64, 0x6D, 0x58, 0x58, 0x7B, 0x9E, 0xB1, 0xB6, 0xBA, 0xB6, - 0xAF, 0x9D, 0x7A, 0x5D, 0x50, 0x51, 0x51, 0x5A, 0x6D, 0x80, 0x92, 0xA0, 0xAA, 0xA5, 0x98, 0x97, - 0x96, 0x8B, 0x87, 0x95, 0xA5, 0xA5, 0x8F, 0x78, 0x70, 0x60, 0x3B, 0x21, 0x1E, 0x20, 0x2D, 0x46, - 0x63, 0x79, 0x88, 0x90, 0x91, 0x91, 0x8C, 0x83, 0x84, 0x89, 0x85, 0x7E, 0x84, 0x93, 0xA0, 0x9B, - 0x7D, 0x6D, 0x75, 0x6C, 0x4D, 0x47, 0x64, 0x84, 0x95, 0xA4, 0xB6, 0xBF, 0xB4, 0x9C, 0x88, 0x7B, - 0x6B, 0x57, 0x4C, 0x52, 0x61, 0x75, 0x89, 0x9B, 0xA6, 0xAB, 0xAA, 0xA0, 0x93, 0x87, 0x84, 0x87, - 0x8A, 0x8D, 0x88, 0x7F, 0x78, 0x6B, 0x57, 0x49, 0x43, 0x3B, 0x3C, 0x50, 0x6E, 0x7D, 0x81, 0x8E, - 0x9C, 0x9E, 0x98, 0x98, 0x96, 0x8A, 0x7A, 0x7A, 0x8A, 0x98, 0x91, 0x77, 0x71, 0x71, 0x5A, 0x3C, - 0x36, 0x4A, 0x5D, 0x6E, 0x88, 0xA8, 0xB7, 0xB5, 0xAE, 0xA2, 0x96, 0x83, 0x6D, 0x5E, 0x5A, 0x65, - 0x71, 0x81, 0x94, 0xA9, 0xB9, 0xB5, 0xAB, 0xA7, 0xA2, 0x97, 0x95, 0x98, 0x95, 0x92, 0x89, 0x82, - 0x71, 0x5F, 0x55, 0x40, 0x2F, 0x33, 0x42, 0x4B, 0x58, 0x6E, 0x7F, 0x8A, 0x8F, 0x93, 0x92, 0x8C, - 0x8B, 0x8F, 0x9C, 0xA4, 0x98, 0x86, 0x84, 0x80, 0x63, 0x4C, 0x50, 0x54, 0x5B, 0x73, 0x8F, 0x9C, - 0x9E, 0xA1, 0x9E, 0x93, 0x86, 0x7B, 0x6E, 0x60, 0x63, 0x71, 0x77, 0x7B, 0x8E, 0xA4, 0xAA, 0xB2, - 0xC4, 0xC6, 0xB7, 0xB4, 0xBB, 0xAE, 0xA0, 0x9A, 0x8F, 0x7F, 0x71, 0x67, 0x58, 0x52, 0x58, 0x59, - 0x58, 0x59, 0x61, 0x6E, 0x78, 0x7D, 0x84, 0x8A, 0x90, 0x99, 0xA1, 0xAE, 0xB4, 0xA4, 0x93, 0x87, - 0x72, 0x54, 0x41, 0x49, 0x4F, 0x4D, 0x63, 0x81, 0x87, 0x84, 0x84, 0x83, 0x79, 0x68, 0x66, 0x64, - 0x56, 0x5B, 0x70, 0x7A, 0x7E, 0x8D, 0xA0, 0xA5, 0x9E, 0xA3, 0xA8, 0x9C, 0x95, 0x97, 0x8E, 0x84, - 0x82, 0x7B, 0x70, 0x6D, 0x67, 0x5D, 0x59, 0x59, 0x61, 0x65, 0x66, 0x66, 0x64, 0x71, 0x75, 0x6E, - 0x75, 0x84, 0x90, 0x9E, 0xA8, 0xA2, 0x9C, 0x98, 0x8E, 0x6E, 0x4A, 0x4E, 0x50, 0x43, 0x4E, 0x66, - 0x78, 0x77, 0x75, 0x7E, 0x77, 0x64, 0x63, 0x65, 0x5E, 0x67, 0x7A, 0x89, 0x96, 0xA7, 0xB6, 0xB2, - 0xAD, 0xB3, 0xAF, 0x99, 0x8A, 0x92, 0x94, 0x85, 0x7C, 0x7C, 0x79, 0x71, 0x67, 0x5D, 0x5F, 0x62, - 0x60, 0x6A, 0x76, 0x83, 0x86, 0x86, 0x8C, 0x8A, 0x88, 0x90, 0xA6, 0xA6, 0x93, 0x96, 0xA3, 0xA0, - 0x7D, 0x6A, 0x79, 0x79, 0x72, 0x76, 0x84, 0x8A, 0x85, 0x79, 0x6B, 0x70, 0x71, 0x64, 0x58, 0x5C, - 0x6F, 0x70, 0x7B, 0x95, 0xAD, 0xC1, 0xC0, 0xB9, 0xBA, 0xB9, 0xA9, 0x8F, 0x92, 0x9B, 0x86, 0x6B, - 0x6E, 0x7B, 0x69, 0x59, 0x61, 0x66, 0x65, 0x62, 0x67, 0x6E, 0x7A, 0x83, 0x81, 0x7F, 0x81, 0x9E, - 0xB2, 0x9E, 0x8F, 0x96, 0xA3, 0x88, 0x5B, 0x62, 0x76, 0x6D, 0x68, 0x75, 0x7C, 0x79, 0x6F, 0x5D, - 0x55, 0x4E, 0x46, 0x39, 0x34, 0x4D, 0x60, 0x6E, 0x87, 0x9F, 0xB4, 0xBF, 0xBB, 0xB8, 0xC0, 0xBF, - 0xA8, 0x92, 0x97, 0xA0, 0x85, 0x6A, 0x6D, 0x6B, 0x55, 0x44, 0x48, 0x4D, 0x51, 0x5D, 0x6B, 0x7A, - 0x85, 0x8D, 0x91, 0x9F, 0xAD, 0xA3, 0x92, 0x92, 0x8C, 0x74, 0x6E, 0x82, 0x85, 0x85, 0x93, 0x9F, - 0x9B, 0x8C, 0x86, 0x7F, 0x6C, 0x4F, 0x41, 0x42, 0x34, 0x33, 0x4E, 0x68, 0x6F, 0x7B, 0xA2, 0xB6, - 0xAA, 0xAD, 0xC7, 0xC0, 0xA7, 0xB1, 0xBA, 0xA9, 0x91, 0x83, 0x7C, 0x67, 0x4C, 0x44, 0x44, 0x41, - 0x52, 0x6D, 0x7C, 0x89, 0x92, 0x9A, 0xA1, 0x9A, 0x8E, 0x85, 0x7A, 0x6F, 0x66, 0x61, 0x6D, 0x7C, - 0x84, 0x99, 0xAB, 0xAD, 0xA4, 0x94, 0x7F, 0x64, 0x50, 0x42, 0x31, 0x29, 0x2F, 0x35, 0x3F, 0x5A, - 0x79, 0x94, 0xA8, 0xB3, 0xB8, 0xB7, 0xBB, 0xB9, 0xAD, 0xA9, 0xA4, 0x94, 0x7D, 0x6E, 0x69, 0x5F, - 0x54, 0x53, 0x59, 0x62, 0x75, 0x85, 0x92, 0xA3, 0xA3, 0x9F, 0xA9, 0xBA, 0xB8, 0x9B, 0x8A, 0x8D, - 0x7F, 0x5D, 0x5E, 0x71, 0x74, 0x7C, 0x89, 0x97, 0x94, 0x88, 0x84, 0x6D, 0x51, 0x4C, 0x4A, 0x30, - 0x22, 0x3A, 0x47, 0x4E, 0x67, 0x95, 0xB3, 0xB3, 0xBE, 0xC5, 0xC1, 0xBB, 0xB2, 0xA6, 0x97, 0x95, - 0x8E, 0x7F, 0x78, 0x75, 0x71, 0x66, 0x67, 0x71, 0x7C, 0x8C, 0x91, 0x99, 0xA1, 0xA0, 0x9E, 0x95, - 0x8D, 0x89, 0x7B, 0x6A, 0x6D, 0x76, 0x7E, 0x98, 0xB3, 0xBD, 0xBA, 0xA6, 0x8F, 0x79, 0x5A, 0x3D, - 0x27, 0x1F, 0x20, 0x24, 0x36, 0x57, 0x73, 0x87, 0x9D, 0xAD, 0xAC, 0xA9, 0xA3, 0x91, 0x85, 0x87, - 0x84, 0x81, 0x81, 0x7E, 0x7C, 0x76, 0x6E, 0x73, 0x6D, 0x60, 0x5D, 0x61, 0x70, 0x7D, 0x88, 0x9A, - 0x9D, 0x98, 0x96, 0x88, 0x7C, 0x75, 0x67, 0x69, 0x81, 0x94, 0x9D, 0xA6, 0xAB, 0xA0, 0x85, 0x6F, - 0x61, 0x4C, 0x31, 0x26, 0x25, 0x26, 0x33, 0x4D, 0x72, 0x91, 0x9C, 0xA7, 0xBA, 0xBE, 0xAE, 0x9C, - 0x8B, 0x84, 0x7F, 0x71, 0x6E, 0x74, 0x71, 0x6A, 0x6E, 0x77, 0x7A, 0x77, 0x7A, 0x87, 0x85, 0x86, - 0xA3, 0xB8, 0xB4, 0xA9, 0xA7, 0xA6, 0x91, 0x70, 0x66, 0x6F, 0x70, 0x80, 0x9D, 0xB1, 0xBF, 0xB9, - 0xA7, 0x94, 0x7C, 0x62, 0x46, 0x29, 0x26, 0x33, 0x2E, 0x39, 0x68, 0x8F, 0x97, 0xA1, 0xC0, 0xC4, - 0xAA, 0x9F, 0xA3, 0x9E, 0x87, 0x80, 0x8C, 0x85, 0x7D, 0x87, 0x85, 0x7F, 0x80, 0x7E, 0x86, 0x8F, - 0x8C, 0x8F, 0x96, 0x9A, 0x98, 0x8C, 0x80, 0x78, 0x67, 0x55, 0x59, 0x6F, 0x7D, 0x92, 0xAC, 0xB4, - 0xAC, 0x9C, 0x8D, 0x74, 0x55, 0x41, 0x32, 0x24, 0x26, 0x37, 0x4B, 0x65, 0x84, 0x9E, 0xAA, 0xA8, - 0xA8, 0xA4, 0x97, 0x8E, 0x87, 0x83, 0x86, 0x82, 0x7A, 0x79, 0x78, 0x78, 0x76, 0x72, 0x74, 0x79, - 0x7D, 0x7F, 0x86, 0x93, 0x9C, 0x9F, 0x9A, 0x99, 0x99, 0x86, 0x6E, 0x6D, 0x6F, 0x6C, 0x7D, 0x8E, - 0x98, 0x98, 0x89, 0x82, 0x74, 0x61, 0x50, 0x35, 0x28, 0x2B, 0x2F, 0x35, 0x51, 0x76, 0x8E, 0xA0, - 0xAD, 0xB7, 0xB8, 0xA5, 0x90, 0x85, 0x79, 0x6F, 0x71, 0x73, 0x6D, 0x67, 0x74, 0x84, 0x85, 0x83, - 0x89, 0x89, 0x88, 0x95, 0xA4, 0xAD, 0xAD, 0xA1, 0x96, 0x8C, 0x80, 0x6B, 0x63, 0x73, 0x78, 0x7C, - 0x92, 0xB1, 0xBC, 0xAB, 0x98, 0x89, 0x7A, 0x5A, 0x36, 0x27, 0x23, 0x25, 0x22, 0x2F, 0x5E, 0x83, - 0x8C, 0x96, 0xB8, 0xCB, 0xB2, 0x9A, 0x93, 0x8A, 0x78, 0x6C, 0x75, 0x79, 0x7B, 0x7F, 0x7E, 0x82, - 0x89, 0x89, 0x78, 0x70, 0x7C, 0x7F, 0x80, 0x92, 0xA2, 0x9E, 0x9B, 0x9D, 0x93, 0x82, 0x7B, 0x8A, - 0x8F, 0x85, 0x93, 0xA0, 0x9D, 0x93, 0x87, 0x79, 0x63, 0x58, 0x4B, 0x2F, 0x2D, 0x3E, 0x40, 0x4E, - 0x72, 0x92, 0x9F, 0xA5, 0xB4, 0xBA, 0xA5, 0x8E, 0x8B, 0x88, 0x79, 0x77, 0x83, 0x89, 0x84, 0x83, - 0x86, 0x86, 0x81, 0x77, 0x78, 0x7F, 0x82, 0x8D, 0x94, 0x95, 0x9B, 0x98, 0x89, 0x85, 0x80, 0x77, - 0x7F, 0x89, 0xA0, 0xB6, 0xB7, 0xB0, 0xA2, 0x90, 0x7C, 0x65, 0x49, 0x2D, 0x21, 0x1E, 0x23, 0x39, - 0x5A, 0x6F, 0x85, 0xA8, 0xB5, 0xB6, 0xB7, 0xAC, 0x9D, 0x90, 0x86, 0x85, 0x8A, 0x88, 0x82, 0x81, - 0x82, 0x7F, 0x71, 0x66, 0x6F, 0x84, 0x93, 0x8A, 0x84, 0x94, 0x95, 0x84, 0x6F, 0x6C, 0x6E, 0x59, - 0x62, 0x90, 0xA5, 0xA1, 0xA1, 0xA6, 0xA0, 0x84, 0x6A, 0x60, 0x49, 0x2C, 0x2C, 0x31, 0x2E, 0x3E, - 0x5B, 0x5F, 0x67, 0x8C, 0x98, 0x8A, 0x8D, 0x9B, 0x92, 0x7F, 0x84, 0x8A, 0x7F, 0x6F, 0x77, 0x7D, - 0x6B, 0x65, 0x6C, 0x71, 0x6E, 0x6D, 0x82, 0xA2, 0xAD, 0x9D, 0x9B, 0xA7, 0xAB, 0x93, 0x6F, 0x74, - 0x79, 0x63, 0x69, 0x91, 0xA6, 0x9E, 0xA1, 0xAC, 0xA3, 0x86, 0x68, 0x53, 0x41, 0x39, 0x3A, 0x33, - 0x40, 0x5B, 0x64, 0x6D, 0x7D, 0x87, 0x88, 0x85, 0x84, 0x8A, 0x8A, 0x83, 0x8B, 0x8F, 0x87, 0x8D, - 0x93, 0x8F, 0x8B, 0x86, 0x8C, 0xA0, 0xA7, 0xA3, 0xA1, 0xAB, 0xBA, 0xA5, 0x91, 0x9B, 0x90, 0x7F, - 0x8A, 0x9A, 0x9E, 0x9E, 0xA5, 0xA4, 0x98, 0x84, 0x79, 0x6E, 0x57, 0x47, 0x3F, 0x39, 0x3B, 0x53, - 0x62, 0x69, 0x84, 0x99, 0x9C, 0x97, 0x9D, 0xA0, 0x85, 0x7F, 0x8E, 0x8A, 0x79, 0x7C, 0x8B, 0x7F, - 0x72, 0x75, 0x6A, 0x5F, 0x6D, 0x8C, 0x9E, 0x91, 0x8D, 0xA1, 0x9E, 0x83, 0x7A, 0x8B, 0x87, 0x79, - 0x8E, 0xA7, 0xA7, 0xA5, 0xAA, 0xA0, 0x8A, 0x76, 0x67, 0x57, 0x3A, 0x31, 0x3D, 0x36, 0x3A, 0x58, - 0x71, 0x76, 0x83, 0x9A, 0x95, 0x82, 0x88, 0x8C, 0x78, 0x70, 0x84, 0x87, 0x77, 0x7A, 0x84, 0x77, - 0x62, 0x64, 0x66, 0x5E, 0x6B, 0x71, 0x6A, 0x7A, 0x9D, 0xAD, 0x97, 0x91, 0xA5, 0xA6, 0x85, 0x6E, - 0x80, 0x77, 0x62, 0x7C, 0x9A, 0xA3, 0xA3, 0x9C, 0x92, 0x8A, 0x77, 0x59, 0x43, 0x35, 0x2E, 0x30, - 0x42, 0x59, 0x6A, 0x7A, 0x7F, 0x8A, 0x99, 0x97, 0x8A, 0x7C, 0x81, 0x83, 0x79, 0x7D, 0x8F, 0x94, - 0x8B, 0x87, 0x8C, 0x85, 0x78, 0x80, 0x8E, 0x96, 0xA1, 0xA2, 0xA2, 0xA2, 0xA2, 0x9D, 0x84, 0x74, - 0x78, 0x6E, 0x64, 0x83, 0xA1, 0xA1, 0xA5, 0xAC, 0xA0, 0x8A, 0x74, 0x61, 0x49, 0x34, 0x27, 0x1C, - 0x24, 0x3E, 0x56, 0x69, 0x7D, 0x96, 0xAA, 0xAA, 0xA0, 0x9D, 0x92, 0x7E, 0x85, 0x8D, 0x8C, 0x92, - 0x98, 0x9F, 0x9B, 0x8F, 0x86, 0x77, 0x68, 0x69, 0x78, 0x8E, 0xA7, 0x99, 0x91, 0xA7, 0xA0, 0x8C, - 0x82, 0x86, 0x82, 0x70, 0x8B, 0xB1, 0xB2, 0xA7, 0xAD, 0xAD, 0x8F, 0x6A, 0x58, 0x4A, 0x26, 0x18, - 0x25, 0x24, 0x32, 0x56, 0x76, 0x81, 0x8D, 0xA7, 0xA3, 0x93, 0x93, 0x8F, 0x78, 0x70, 0x84, 0x87, - 0x83, 0x90, 0x9B, 0x99, 0x90, 0x8A, 0x83, 0x78, 0x79, 0x80, 0x80, 0x80, 0x90, 0xA8, 0xA5, 0x95, - 0x94, 0x94, 0x89, 0x7D, 0x72, 0x6D, 0x77, 0x80, 0x91, 0xA3, 0xAB, 0xAC, 0x9B, 0x88, 0x7E, 0x63, - 0x3F, 0x2E, 0x22, 0x1C, 0x2F, 0x4B, 0x68, 0x82, 0x8F, 0x97, 0x9C, 0x9D, 0x91, 0x82, 0x7D, 0x74, - 0x6F, 0x78, 0x88, 0x92, 0x99, 0xA0, 0x9D, 0x93, 0x85, 0x7B, 0x6F, 0x5F, 0x5C, 0x6C, 0x87, 0x8D, - 0x8E, 0x96, 0x98, 0x8D, 0x74, 0x6D, 0x6D, 0x59, 0x5C, 0x7C, 0x91, 0xA2, 0xAB, 0xA0, 0x96, 0x88, - 0x72, 0x5D, 0x41, 0x28, 0x1E, 0x1E, 0x24, 0x46, 0x6E, 0x81, 0x90, 0xA4, 0xB5, 0xB4, 0xA3, 0x97, - 0x88, 0x79, 0x76, 0x72, 0x76, 0x87, 0x93, 0x98, 0x97, 0x90, 0x88, 0x78, 0x68, 0x63, 0x5A, 0x57, - 0x64, 0x7B, 0x9A, 0xA1, 0x97, 0xA3, 0xA9, 0x93, 0x7E, 0x7D, 0x78, 0x73, 0x8D, 0xAD, 0xB5, 0xB1, - 0xAC, 0xA6, 0x91, 0x6F, 0x55, 0x43, 0x2B, 0x1C, 0x23, 0x30, 0x49, 0x6A, 0x8C, 0x9F, 0xA6, 0xBC, - 0xC2, 0xA9, 0x9E, 0x9E, 0x8B, 0x7F, 0x8E, 0xA3, 0xAA, 0xA2, 0xA6, 0xA6, 0x9A, 0x8C, 0x76, 0x67, - 0x68, 0x6E, 0x70, 0x75, 0x88, 0xA1, 0xAB, 0x99, 0x8D, 0x98, 0x96, 0x77, 0x67, 0x72, 0x72, 0x73, - 0x8C, 0xA5, 0xAA, 0xA1, 0x9C, 0x91, 0x7E, 0x6A, 0x49, 0x2E, 0x1C, 0x20, 0x30, 0x37, 0x56, 0x82, - 0x9D, 0xA2, 0xA6, 0xAF, 0xA6, 0x8E, 0x81, 0x81, 0x78, 0x75, 0x82, 0x8A, 0x8F, 0x8C, 0x86, 0x81, - 0x7A, 0x75, 0x6F, 0x70, 0x7B, 0x81, 0x83, 0x87, 0x90, 0x9C, 0x9C, 0x8C, 0x7C, 0x78, 0x70, 0x5E, - 0x56, 0x5F, 0x6F, 0x7F, 0x91, 0xA0, 0xA4, 0x99, 0x85, 0x73, 0x63, 0x46, 0x25, 0x15, 0x19, 0x26, - 0x38, 0x53, 0x70, 0x8B, 0xA2, 0xA8, 0xA6, 0xAB, 0xA6, 0x8F, 0x7E, 0x7F, 0x83, 0x82, 0x8B, 0x9A, - 0x9D, 0x9C, 0x9A, 0x95, 0x88, 0x76, 0x72, 0x6F, 0x6C, 0x70, 0x77, 0x7F, 0x84, 0x8C, 0x9E, 0xA3, - 0x91, 0x87, 0x8B, 0x7F, 0x6C, 0x6D, 0x77, 0x7F, 0x8B, 0x9A, 0xA6, 0x9E, 0x8A, 0x82, 0x7A, 0x61, - 0x47, 0x35, 0x29, 0x2A, 0x3C, 0x59, 0x76, 0x91, 0xAA, 0xB7, 0xB5, 0xB3, 0xB0, 0x9E, 0x8E, 0x8E, - 0x8F, 0x88, 0x8C, 0x9B, 0xA1, 0x9E, 0x95, 0x8F, 0x85, 0x72, 0x60, 0x5C, 0x63, 0x67, 0x6D, 0x76, - 0x7B, 0x80, 0x85, 0x8D, 0x9B, 0x95, 0x83, 0x7F, 0x83, 0x80, 0x71, 0x79, 0x8D, 0x91, 0x93, 0x9A, - 0x9F, 0x94, 0x7F, 0x6F, 0x62, 0x57, 0x4B, 0x3D, 0x3D, 0x55, 0x68, 0x72, 0x8A, 0xA3, 0xAD, 0xAA, - 0xA1, 0x9D, 0x97, 0x8C, 0x87, 0x8B, 0x91, 0x94, 0x8F, 0x88, 0x89, 0x8A, 0x83, 0x72, 0x68, 0x6C, - 0x63, 0x57, 0x5E, 0x73, 0x83, 0x83, 0x88, 0x94, 0x92, 0x8B, 0x9A, 0x9F, 0x89, 0x78, 0x74, 0x75, - 0x6E, 0x63, 0x75, 0x8D, 0x93, 0x96, 0x9C, 0x99, 0x87, 0x6D, 0x59, 0x55, 0x4B, 0x34, 0x31, 0x3E, - 0x55, 0x6F, 0x7B, 0x90, 0xA9, 0xB7, 0xB3, 0xA8, 0xAB, 0xAC, 0x9D, 0x8B, 0x8D, 0x92, 0x8B, 0x81, - 0x82, 0x86, 0x7E, 0x74, 0x6A, 0x67, 0x69, 0x64, 0x60, 0x63, 0x6E, 0x7C, 0x81, 0x7D, 0x78, 0x79, - 0x80, 0x8C, 0x8D, 0x81, 0x80, 0x84, 0x7E, 0x6E, 0x71, 0x83, 0x81, 0x7C, 0x8C, 0x97, 0x88, 0x6E, - 0x65, 0x63, 0x50, 0x38, 0x37, 0x3A, 0x3E, 0x5B, 0x7B, 0x8D, 0x9D, 0xAE, 0xB5, 0xAB, 0xA5, 0xAA, - 0xA2, 0x94, 0x98, 0x9A, 0x8E, 0x84, 0x8A, 0x8C, 0x80, 0x7C, 0x78, 0x72, 0x6C, 0x68, 0x66, 0x64, - 0x69, 0x71, 0x76, 0x7E, 0x81, 0x7E, 0x7A, 0x84, 0x9D, 0x9A, 0x85, 0x86, 0x94, 0x8E, 0x72, 0x71, - 0x85, 0x7F, 0x74, 0x84, 0x95, 0x8A, 0x76, 0x67, 0x5D, 0x57, 0x4B, 0x48, 0x4F, 0x57, 0x6C, 0x82, - 0x91, 0xA2, 0xAF, 0xB9, 0xBB, 0xBC, 0xBC, 0xB5, 0xA0, 0x94, 0x9B, 0x97, 0x8C, 0x88, 0x8A, 0x8A, - 0x7A, 0x6D, 0x6D, 0x65, 0x5E, 0x63, 0x67, 0x6C, 0x75, 0x7D, 0x82, 0x88, 0x8F, 0x8B, 0x82, 0x87, - 0xA2, 0xAB, 0x95, 0x95, 0x9B, 0x8F, 0x79, 0x6D, 0x75, 0x77, 0x75, 0x75, 0x75, 0x78, 0x77, 0x6A, - 0x58, 0x57, 0x57, 0x45, 0x37, 0x42, 0x62, 0x71, 0x78, 0x8F, 0xA4, 0xAB, 0xA5, 0xA9, 0xAE, 0xA6, - 0x9F, 0x93, 0x87, 0x82, 0x84, 0x7E, 0x72, 0x78, 0x81, 0x7D, 0x73, 0x70, 0x73, 0x72, 0x6B, 0x67, - 0x69, 0x6E, 0x6E, 0x70, 0x73, 0x74, 0x84, 0x91, 0x98, 0x9D, 0x9A, 0x99, 0x8B, 0x73, 0x65, 0x65, - 0x61, 0x5A, 0x65, 0x75, 0x7C, 0x76, 0x6A, 0x6A, 0x68, 0x5D, 0x4D, 0x45, 0x4B, 0x55, 0x67, 0x7C, - 0x90, 0xA8, 0xB7, 0xB9, 0xB2, 0xB3, 0xB1, 0x9B, 0x87, 0x7E, 0x7E, 0x7B, 0x75, 0x7D, 0x85, 0x8A, - 0x87, 0x7C, 0x77, 0x74, 0x6F, 0x6B, 0x68, 0x70, 0x78, 0x79, 0x82, 0x85, 0x84, 0x8A, 0x96, 0x9A, - 0x9A, 0x9F, 0x9E, 0x96, 0x8E, 0x82, 0x74, 0x6C, 0x71, 0x77, 0x7B, 0x82, 0x88, 0x89, 0x78, 0x67, - 0x69, 0x62, 0x55, 0x4B, 0x4C, 0x5B, 0x6B, 0x7A, 0x8C, 0xA2, 0xAE, 0xB1, 0xB1, 0xAF, 0xB1, 0xAA, - 0xA2, 0x9A, 0x94, 0x95, 0x8E, 0x80, 0x77, 0x73, 0x71, 0x6C, 0x69, 0x69, 0x68, 0x66, 0x6B, 0x72, - 0x79, 0x7F, 0x81, 0x88, 0x8E, 0x92, 0x8F, 0x7A, 0x73, 0x8D, 0xA8, 0x9D, 0x8E, 0x9E, 0xA8, 0x94, - 0x6A, 0x68, 0x81, 0x6F, 0x5E, 0x71, 0x82, 0x7D, 0x6F, 0x64, 0x5F, 0x64, 0x5C, 0x53, 0x52, 0x53, - 0x6C, 0x7C, 0x79, 0x8C, 0xA7, 0xAC, 0xA2, 0xA7, 0xB3, 0xAE, 0x9D, 0x94, 0x9B, 0x97, 0x8A, 0x82, - 0x77, 0x70, 0x71, 0x6D, 0x65, 0x63, 0x69, 0x69, 0x64, 0x67, 0x6E, 0x6E, 0x6E, 0x73, 0x81, 0x8A, - 0x8E, 0x95, 0x97, 0x8E, 0x90, 0xA4, 0xA5, 0x87, 0x75, 0x78, 0x77, 0x54, 0x3E, 0x56, 0x61, 0x5E, - 0x71, 0x8A, 0x94, 0x92, 0x89, 0x80, 0x80, 0x77, 0x63, 0x53, 0x49, 0x5A, 0x6C, 0x6B, 0x7D, 0xA4, - 0xB8, 0xB6, 0xB8, 0xBF, 0xC2, 0xB1, 0x8F, 0x83, 0x83, 0x76, 0x61, 0x59, 0x64, 0x68, 0x64, 0x62, - 0x65, 0x68, 0x6C, 0x65, 0x5D, 0x66, 0x66, 0x5D, 0x58, 0x61, 0x74, 0x7F, 0x86, 0x8C, 0x90, 0x9A, - 0xAB, 0xAF, 0x96, 0x84, 0x86, 0x82, 0x60, 0x45, 0x60, 0x6D, 0x5E, 0x6F, 0x93, 0xA3, 0x9A, 0x90, - 0x8E, 0x88, 0x75, 0x61, 0x59, 0x4E, 0x56, 0x74, 0x7E, 0x83, 0xA2, 0xBC, 0xBB, 0xB6, 0xB9, 0xBA, - 0xAB, 0x93, 0x8D, 0x8F, 0x85, 0x7D, 0x80, 0x7D, 0x7D, 0x81, 0x79, 0x6D, 0x68, 0x68, 0x5F, 0x53, - 0x58, 0x61, 0x65, 0x6C, 0x7D, 0x90, 0x99, 0xA0, 0xA1, 0x9A, 0x93, 0xA3, 0xB0, 0x8B, 0x70, 0x80, - 0x7E, 0x5F, 0x55, 0x70, 0x82, 0x80, 0x87, 0x9D, 0xA9, 0x99, 0x87, 0x7E, 0x7B, 0x75, 0x60, 0x53, - 0x55, 0x63, 0x75, 0x85, 0x99, 0xAB, 0xB8, 0xBD, 0xB9, 0xB5, 0xB1, 0xA5, 0x94, 0x8D, 0x8C, 0x88, - 0x80, 0x7A, 0x7C, 0x79, 0x72, 0x6B, 0x63, 0x5E, 0x59, 0x52, 0x51, 0x58, 0x58, 0x5B, 0x65, 0x73, - 0x80, 0x84, 0x8A, 0x8F, 0x8F, 0x8C, 0x81, 0x78, 0x7C, 0x85, 0x84, 0x74, 0x6A, 0x71, 0x74, 0x55, - 0x46, 0x61, 0x65, 0x57, 0x67, 0x89, 0x97, 0x91, 0x89, 0x86, 0x8E, 0x86, 0x70, 0x69, 0x68, 0x6C, - 0x79, 0x7E, 0x85, 0x9C, 0xAB, 0xAB, 0xA8, 0xA6, 0xA7, 0x9D, 0x87, 0x7E, 0x7D, 0x75, 0x6C, 0x65, - 0x62, 0x65, 0x60, 0x5B, 0x5B, 0x57, 0x5C, 0x60, 0x5E, 0x65, 0x6E, 0x74, 0x77, 0x80, 0x88, 0x89, - 0x87, 0x8C, 0x94, 0x8B, 0x7E, 0x7E, 0x89, 0x94, 0x88, 0x78, 0x7D, 0x85, 0x73, 0x59, 0x65, 0x79, - 0x73, 0x75, 0x90, 0xA7, 0xA5, 0x9C, 0x96, 0x93, 0x89, 0x77, 0x70, 0x67, 0x60, 0x6E, 0x80, 0x88, - 0x92, 0xA5, 0xB2, 0xB0, 0xAE, 0xB3, 0xAE, 0x9A, 0x92, 0x94, 0x8D, 0x83, 0x80, 0x81, 0x7B, 0x72, - 0x6B, 0x63, 0x5A, 0x53, 0x54, 0x53, 0x51, 0x59, 0x66, 0x76, 0x86, 0x92, 0x99, 0x9F, 0xA0, 0x9D, - 0x98, 0x8D, 0x7F, 0x6C, 0x65, 0x7C, 0x8B, 0x7D, 0x7C, 0x8D, 0x95, 0x86, 0x6C, 0x74, 0x85, 0x73, - 0x6A, 0x85, 0x96, 0x97, 0x91, 0x86, 0x88, 0x8C, 0x7D, 0x6E, 0x65, 0x64, 0x70, 0x7A, 0x82, 0x97, - 0xB1, 0xB7, 0xAF, 0xB0, 0xB0, 0xAA, 0x9A, 0x88, 0x7F, 0x7A, 0x71, 0x61, 0x5A, 0x5C, 0x5D, 0x5A, - 0x58, 0x58, 0x57, 0x5A, 0x61, 0x64, 0x68, 0x6D, 0x72, 0x7C, 0x81, 0x84, 0x87, 0x88, 0x86, 0x85, - 0x84, 0x80, 0x78, 0x6F, 0x78, 0x91, 0x92, 0x7D, 0x78, 0x8D, 0x8F, 0x6C, 0x62, 0x7E, 0x81, 0x70, - 0x7E, 0x9C, 0xA4, 0x99, 0x8F, 0x8E, 0x90, 0x84, 0x75, 0x68, 0x61, 0x68, 0x73, 0x7A, 0x85, 0x98, - 0xA3, 0xA1, 0xA1, 0xA2, 0x9E, 0x91, 0x84, 0x80, 0x7B, 0x72, 0x6B, 0x67, 0x67, 0x6A, 0x63, 0x59, - 0x5B, 0x59, 0x51, 0x57, 0x5E, 0x60, 0x65, 0x70, 0x79, 0x7B, 0x7C, 0x82, 0x84, 0x80, 0x7F, 0x81, - 0x83, 0x85, 0x83, 0x7F, 0x7F, 0x8E, 0xA5, 0xA2, 0x88, 0x84, 0x92, 0x85, 0x5E, 0x57, 0x74, 0x79, - 0x76, 0x8E, 0xAC, 0xB7, 0xAE, 0xA4, 0xA2, 0x9B, 0x81, 0x68, 0x55, 0x49, 0x53, 0x5E, 0x69, 0x80, - 0x9B, 0xAC, 0xAA, 0xA5, 0xA5, 0x9F, 0x8E, 0x7B, 0x73, 0x72, 0x6C, 0x67, 0x67, 0x6B, 0x6C, 0x6E, - 0x6D, 0x69, 0x6B, 0x6C, 0x6A, 0x66, 0x6D, 0x7A, 0x7F, 0x85, 0x8F, 0x99, 0x9B, 0x92, 0x90, 0x91, - 0x88, 0x81, 0x87, 0x8A, 0x83, 0x81, 0x89, 0xA1, 0xB6, 0xA2, 0x87, 0x8D, 0x95, 0x78, 0x54, 0x5E, - 0x74, 0x72, 0x79, 0x98, 0xAD, 0xA9, 0xA1, 0x9C, 0x98, 0x8B, 0x72, 0x5D, 0x55, 0x5C, 0x67, 0x6E, - 0x7D, 0x94, 0xA7, 0xAA, 0xA5, 0xA7, 0xA2, 0x8E, 0x7D, 0x75, 0x75, 0x72, 0x6A, 0x68, 0x6A, 0x68, - 0x68, 0x66, 0x60, 0x61, 0x5E, 0x5A, 0x61, 0x66, 0x6B, 0x76, 0x7A, 0x84, 0x8A, 0x87, 0x8A, 0x8A, - 0x84, 0x7F, 0x7C, 0x7A, 0x7A, 0x7E, 0x7F, 0x80, 0x7E, 0x7F, 0x80, 0x87, 0x93, 0x7D, 0x67, 0x6F, - 0x70, 0x58, 0x47, 0x62, 0x7F, 0x7D, 0x85, 0xA4, 0xB6, 0xAA, 0x98, 0x8B, 0x84, 0x7C, 0x67, 0x57, - 0x4F, 0x5B, 0x6E, 0x72, 0x7E, 0x90, 0xA0, 0xA0, 0x93, 0x8F, 0x8A, 0x80, 0x78, 0x75, 0x71, 0x72, - 0x72, 0x69, 0x65, 0x66, 0x64, 0x5B, 0x57, 0x61, 0x6C, 0x71, 0x76, 0x7D, 0x84, 0x8B, 0x8F, 0x8D, - 0x87, 0x87, 0x84, 0x79, 0x74, 0x80, 0x8B, 0x95, 0xA1, 0xAD, 0xB4, 0xB0, 0xA9, 0x9C, 0x89, 0x7D, - 0x86, 0x8A, 0x70, 0x62, 0x72, 0x7D, 0x6B, 0x60, 0x7D, 0x93, 0x93, 0x9A, 0xA7, 0xA9, 0x9C, 0x8C, - 0x80, 0x7C, 0x75, 0x65, 0x5F, 0x65, 0x77, 0x85, 0x8F, 0x9A, 0xA1, 0xAA, 0xA5, 0x92, 0x85, 0x80, - 0x76, 0x61, 0x61, 0x6D, 0x70, 0x72, 0x70, 0x6B, 0x67, 0x67, 0x5E, 0x54, 0x57, 0x62, 0x6E, 0x77, - 0x84, 0x92, 0x99, 0x9C, 0x9C, 0x97, 0x95, 0x93, 0x91, 0x8F, 0x91, 0x94, 0x92, 0x94, 0x96, 0x91, - 0x90, 0x90, 0x8C, 0x85, 0x7A, 0x76, 0x85, 0x90, 0x7C, 0x6B, 0x72, 0x78, 0x66, 0x51, 0x60, 0x7A, - 0x7A, 0x7B, 0x8F, 0xA0, 0x99, 0x8A, 0x82, 0x81, 0x78, 0x66, 0x59, 0x53, 0x5D, 0x69, 0x6E, 0x7A, - 0x87, 0x94, 0x99, 0x92, 0x8E, 0x8A, 0x81, 0x77, 0x70, 0x6A, 0x69, 0x67, 0x63, 0x63, 0x67, 0x6B, - 0x68, 0x5F, 0x5F, 0x67, 0x6F, 0x79, 0x80, 0x87, 0x8E, 0x96, 0x97, 0x8C, 0x89, 0x88, 0x82, 0x80, - 0x82, 0x89, 0x90, 0x95, 0x9C, 0xA2, 0xA4, 0xA1, 0x9B, 0x93, 0x8D, 0x84, 0x6D, 0x5F, 0x6C, 0x84, - 0x7E, 0x66, 0x69, 0x78, 0x6D, 0x4D, 0x52, 0x72, 0x76, 0x77, 0x89, 0x9E, 0x9F, 0x94, 0x8A, 0x85, - 0x7F, 0x6F, 0x5F, 0x51, 0x4E, 0x5D, 0x6D, 0x7D, 0x8E, 0x9D, 0xA4, 0x9F, 0x94, 0x90, 0x86, 0x70, - 0x62, 0x64, 0x66, 0x69, 0x6C, 0x70, 0x77, 0x7E, 0x7F, 0x77, 0x6F, 0x71, 0x76, 0x7C, 0x86, 0x8B, - 0x8D, 0x94, 0x9A, 0x9C, 0x9D, 0x9A, 0x98, 0x95, 0x8B, 0x8B, 0x98, 0xA1, 0xA1, 0x9E, 0xA2, 0xA0, - 0x90, 0x84, 0x7E, 0x73, 0x69, 0x68, 0x66, 0x5D, 0x60, 0x77, 0x8B, 0x86, 0x79, 0x7D, 0x88, 0x7D, - 0x65, 0x5F, 0x69, 0x6D, 0x70, 0x7E, 0x8C, 0x97, 0x9B, 0x94, 0x8F, 0x8D, 0x86, 0x73, 0x64, 0x6A, - 0x78, 0x81, 0x8D, 0x9B, 0x9E, 0x9D, 0x98, 0x8A, 0x7E, 0x72, 0x69, 0x66, 0x6A, 0x77, 0x80, 0x8B, - 0x8F, 0x8B, 0x8C, 0x88, 0x7F, 0x75, 0x72, 0x75, 0x79, 0x7E, 0x89, 0x9A, 0xA4, 0xA3, 0x9A, 0x91, - 0x8A, 0x7C, 0x6D, 0x6B, 0x6E, 0x74, 0x7E, 0x8B, 0x94, 0x97, 0x95, 0x86, 0x7A, 0x72, 0x68, 0x5E, - 0x59, 0x5E, 0x63, 0x67, 0x6E, 0x76, 0x7B, 0x85, 0x8D, 0x7D, 0x68, 0x60, 0x5C, 0x4E, 0x46, 0x5F, - 0x7C, 0x8A, 0x94, 0x9B, 0x9D, 0x92, 0x80, 0x78, 0x6E, 0x5B, 0x52, 0x57, 0x64, 0x79, 0x89, 0x94, - 0x9B, 0x99, 0x9A, 0x8E, 0x7B, 0x70, 0x69, 0x64, 0x67, 0x78, 0x81, 0x87, 0x90, 0x95, 0x92, 0x85, - 0x82, 0x77, 0x64, 0x5D, 0x5E, 0x66, 0x71, 0x80, 0x93, 0xA2, 0xA6, 0xA7, 0xA6, 0x9B, 0x8B, 0x79, - 0x6D, 0x6B, 0x6F, 0x80, 0x8F, 0x94, 0x9A, 0x9E, 0x98, 0x8B, 0x7C, 0x6B, 0x5D, 0x52, 0x4D, 0x57, - 0x6A, 0x74, 0x7B, 0x8A, 0x8F, 0x88, 0x89, 0x95, 0x96, 0x7B, 0x70, 0x7C, 0x82, 0x76, 0x74, 0x8A, - 0x9F, 0xA7, 0xAA, 0xAE, 0xAC, 0x9F, 0x93, 0x88, 0x80, 0x76, 0x72, 0x72, 0x70, 0x79, 0x89, 0x90, - 0x91, 0x91, 0x91, 0x8B, 0x81, 0x7C, 0x7D, 0x7F, 0x80, 0x85, 0x8D, 0x90, 0x8C, 0x84, 0x81, 0x7D, - 0x75, 0x6C, 0x67, 0x67, 0x68, 0x6E, 0x76, 0x7F, 0x8C, 0x91, 0x91, 0x8E, 0x88, 0x83, 0x7D, 0x7A, - 0x78, 0x78, 0x7C, 0x80, 0x83, 0x85, 0x86, 0x87, 0x81, 0x76, 0x72, 0x72, 0x6E, 0x66, 0x64, 0x6A, - 0x6C, 0x67, 0x6A, 0x6F, 0x6F, 0x6C, 0x6E, 0x72, 0x75, 0x7E, 0x87, 0x88, 0x83, 0x80, 0x86, 0x86, - 0x79, 0x76, 0x7F, 0x85, 0x89, 0x8F, 0x92, 0x90, 0x87, 0x7E, 0x79, 0x72, 0x6E, 0x6B, 0x65, 0x65, - 0x6B, 0x73, 0x7A, 0x80, 0x87, 0x8F, 0x90, 0x8E, 0x8F, 0x95, 0x93, 0x87, 0x7F, 0x80, 0x80, 0x78, - 0x73, 0x73, 0x76, 0x74, 0x6F, 0x6E, 0x71, 0x75, 0x75, 0x76, 0x7E, 0x83, 0x84, 0x85, 0x86, 0x8B, - 0x8D, 0x89, 0x86, 0x80, 0x7C, 0x80, 0x83, 0x87, 0x8B, 0x89, 0x83, 0x81, 0x7E, 0x75, 0x6A, 0x64, - 0x65, 0x66, 0x66, 0x6A, 0x70, 0x74, 0x75, 0x74, 0x74, 0x78, 0x78, 0x77, 0x7E, 0x88, 0x92, 0x91, - 0x8D, 0x93, 0x96, 0x8F, 0x86, 0x8A, 0x8D, 0x89, 0x89, 0x8E, 0x94, 0x93, 0x91, 0x8A, 0x81, 0x7B, - 0x73, 0x6D, 0x69, 0x70, 0x78, 0x7E, 0x84, 0x8A, 0x93, 0x98, 0x99, 0x96, 0x90, 0x8E, 0x88, 0x81, - 0x7B, 0x78, 0x76, 0x70, 0x6E, 0x71, 0x74, 0x74, 0x72, 0x76, 0x78, 0x79, 0x7B, 0x7F, 0x87, 0x8B, - 0x8E, 0x8F, 0x8F, 0x8D, 0x8A, 0x87, 0x7F, 0x79, 0x7A, 0x7A, 0x7A, 0x7A, 0x81, 0x88, 0x8B, 0x89, - 0x8A, 0x88, 0x81, 0x7E, 0x7C, 0x78, 0x74, 0x74, 0x79, 0x78, 0x7C, 0x82, 0x82, 0x81, 0x7F, 0x7C, - 0x7D, 0x7C, 0x81, 0x8B, 0x8C, 0x8A, 0x8B, 0x8F, 0x8A, 0x80, 0x80, 0x85, 0x84, 0x85, 0x8D, 0x93, - 0x94, 0x91, 0x8E, 0x85, 0x80, 0x7D, 0x74, 0x6E, 0x69, 0x6B, 0x6F, 0x72, 0x75, 0x79, 0x7A, 0x7A, - 0x79, 0x75, 0x74, 0x72, 0x71, 0x6F, 0x72, 0x71, 0x6B, 0x69, 0x6B, 0x6B, 0x66, 0x69, 0x6E, 0x70, - 0x6F, 0x72, 0x7A, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, 0x7E, 0x80, 0x81, 0x81, 0x81, 0x82, - 0x83, 0x85, 0x85, 0x82, 0x80, 0x80, 0x7D, 0x78, 0x77, 0x79, 0x78, 0x73, 0x74, 0x78, 0x7A, 0x7C, - 0x80, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x81, 0x80, 0x86, 0x8A, 0x83, 0x80, 0x82, 0x82, 0x7A, - 0x75, 0x7C, 0x7F, 0x7E, 0x86, 0x8F, 0x92, 0x8D, 0x87, 0x7F, 0x78, 0x71, 0x6B, 0x67, 0x64, 0x6D, - 0x76, 0x7E, 0x85, 0x8C, 0x93, 0x91, 0x8E, 0x8B, 0x8A, 0x87, 0x83, 0x82, 0x85, 0x86, 0x82, 0x7F, - 0x7B, 0x7B, 0x78, 0x72, 0x72, 0x77, 0x7C, 0x80, 0x8A, 0x92, 0x9A, 0x9C, 0x9B, 0x9F, 0xA0, 0x9E, - 0x9D, 0x9C, 0x99, 0x94, 0x8E, 0x8C, 0x89, 0x84, 0x82, 0x7E, 0x7A, 0x77, 0x73, 0x71, 0x73, 0x72, - 0x73, 0x72, 0x70, 0x70, 0x6F, 0x6B, 0x6A, 0x6C, 0x6E, 0x72, 0x79, 0x81, 0x85, 0x86, 0x8A, 0x8D, - 0x8D, 0x8C, 0x8E, 0x8B, 0x83, 0x7E, 0x7D, 0x7A, 0x76, 0x79, 0x81, 0x87, 0x88, 0x8A, 0x8B, 0x88, - 0x82, 0x7B, 0x75, 0x71, 0x6E, 0x6B, 0x6C, 0x6C, 0x70, 0x74, 0x75, 0x76, 0x77, 0x79, 0x78, 0x77, - 0x77, 0x79, 0x7B, 0x7C, 0x7E, 0x80, 0x81, 0x80, 0x7C, 0x76, 0x71, 0x6D, 0x6A, 0x6A, 0x6C, 0x6F, - 0x72, 0x76, 0x7D, 0x80, 0x80, 0x80, 0x82, 0x84, 0x84, 0x87, 0x8B, 0x8C, 0x8E, 0x8F, 0x8C, 0x89, - 0x86, 0x82, 0x7F, 0x7D, 0x7A, 0x78, 0x75, 0x72, 0x72, 0x70, 0x6F, 0x6F, 0x70, 0x72, 0x72, 0x74, - 0x78, 0x7B, 0x7D, 0x82, 0x85, 0x86, 0x89, 0x8A, 0x8A, 0x88, 0x8A, 0x8C, 0x8C, 0x8C, 0x8B, 0x8E, - 0x8D, 0x88, 0x84, 0x82, 0x81, 0x7E, 0x7D, 0x7E, 0x80, 0x7E, 0x7C, 0x7D, 0x7E, 0x7B, 0x78, 0x75, - 0x70, 0x6E, 0x6C, 0x6D, 0x70, 0x71, 0x73, 0x77, 0x7A, 0x79, 0x7C, 0x7E, 0x7E, 0x7F, 0x7F, 0x80, - 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x86, 0x86, 0x86, 0x87, 0x86, 0x85, 0x85, 0x87, 0x87, - 0x88, 0x8A, 0x8B, 0x8D, 0x8C, 0x8B, 0x8B, 0x8D, 0x8D, 0x8B, 0x8B, 0x8A, 0x8A, 0x86, 0x82, 0x82, - 0x82, 0x81, 0x7F, 0x7D, 0x7C, 0x7B, 0x7A, 0x78, 0x76, 0x76, 0x75, 0x73, 0x74, 0x74, 0x74, 0x76, - 0x7B, 0x80, 0x82, 0x88, 0x8A, 0x8D, 0x8F, 0x8E, 0x8E, 0x8D, 0x8B, 0x86, 0x7F, 0x7E, 0x7F, 0x7F, - 0x7F, 0x81, 0x82, 0x80, 0x7F, 0x7D, 0x7C, 0x79, 0x75, 0x75, 0x76, 0x75, 0x75, 0x78, 0x7A, 0x7C, - 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7E, 0x7E, 0x7D, 0x7B, 0x7A, 0x7D, - 0x7B, 0x79, 0x79, 0x7A, 0x7B, 0x7B, 0x7B, 0x7A, 0x7B, 0x7E, 0x7D, 0x7C, 0x7C, 0x7B, 0x79, 0x76, - 0x76, 0x75, 0x76, 0x78, 0x79, 0x79, 0x7A, 0x7D, 0x7D, 0x7D, 0x7B, 0x7A, 0x7B, 0x76, 0x73, 0x73, - 0x71, 0x70, 0x71, 0x71, 0x72, 0x76, 0x77, 0x77, 0x78, 0x79, 0x7B, 0x7D, 0x80, 0x82, 0x85, 0x87, - 0x86, 0x86, 0x85, 0x83, 0x83, 0x83, 0x84, 0x84, 0x86, 0x86, 0x83, 0x83, 0x85, 0x86, 0x86, 0x84, - 0x81, 0x7E, 0x79, 0x75, 0x71, 0x6E, 0x6C, 0x6A, 0x69, 0x6B, 0x6E, 0x72, 0x76, 0x78, 0x7D, 0x80, - 0x80, 0x81, 0x83, 0x85, 0x85, 0x86, 0x8A, 0x8D, 0x8F, 0x90, 0x8E, 0x8C, 0x8D, 0x8A, 0x89, 0x89, - 0x89, 0x8A, 0x89, 0x89, 0x8B, 0x8B, 0x8C, 0x8E, 0x8F, 0x91, 0x92, 0x91, 0x90, 0x8F, 0x8C, 0x8B, - 0x8A, 0x88, 0x87, 0x84, 0x84, 0x84, 0x84, 0x82, 0x81, 0x80, 0x7E, 0x7D, 0x7B, 0x79, 0x77, 0x75, - 0x74, 0x74, 0x77, 0x79, 0x7A, 0x7A, 0x7D, 0x7E, 0x7F, 0x7F, 0x80, 0x83, 0x83, 0x81, 0x80, 0x81, - 0x7F, 0x7D, 0x7B, 0x7B, 0x79, 0x76, 0x77, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x78, 0x78, - 0x78, 0x79, 0x78, 0x77, 0x75, 0x75, 0x75, 0x77, 0x7A, 0x7C, 0x80, 0x81, 0x82, 0x83, 0x84, 0x83, - 0x82, 0x82, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0x7B, 0x7B, 0x79, 0x79, 0x79, 0x76, 0x74, 0x73, - 0x71, 0x71, 0x72, 0x74, 0x77, 0x7A, 0x7A, 0x7B, 0x7E, 0x7F, 0x80, 0x82, 0x83, 0x81, 0x80, 0x7F, - 0x7E, 0x7C, 0x7B, 0x7C, 0x7B, 0x7C, 0x7B, 0x7A, 0x79, 0x76, 0x76, 0x76, 0x78, 0x7A, 0x7C, 0x7D, - 0x7D, 0x82, 0x84, 0x86, 0x88, 0x8C, 0x91, 0x8F, 0x8D, 0x90, 0x90, 0x8D, 0x8D, 0x91, 0x92, 0x8F, - 0x8B, 0x89, 0x86, 0x82, 0x7F, 0x7B, 0x77, 0x74, 0x6E, 0x6B, 0x6C, 0x6D, 0x6F, 0x70, 0x72, 0x76, - 0x79, 0x7A, 0x7C, 0x7F, 0x80, 0x80, 0x80, 0x83, 0x87, 0x89, 0x89, 0x8A, 0x89, 0x89, 0x87, 0x84, - 0x83, 0x7F, 0x7E, 0x7C, 0x7B, 0x7D, 0x7E, 0x80, 0x82, 0x86, 0x88, 0x88, 0x8B, 0x8C, 0x8B, 0x8A, - 0x8B, 0x8C, 0x8A, 0x88, 0x87, 0x87, 0x86, 0x83, 0x81, 0x7E, 0x7D, 0x7D, 0x7A, 0x77, 0x76, 0x75, - 0x71, 0x70, 0x71, 0x71, 0x73, 0x74, 0x75, 0x78, 0x7B, 0x7E, 0x80, 0x81, 0x82, 0x83, 0x85, 0x87, - 0x88, 0x8A, 0x8B, 0x8A, 0x88, 0x89, 0x88, 0x83, 0x81, 0x81, 0x7F, 0x7B, 0x7C, 0x7F, 0x80, 0x80, - 0x7F, 0x7E, 0x7B, 0x79, 0x75, 0x72, 0x6F, 0x6E, 0x71, 0x72, 0x73, 0x77, 0x7C, 0x7F, 0x81, 0x83, - 0x85, 0x87, 0x86, 0x86, 0x89, 0x89, 0x87, 0x87, 0x89, 0x89, 0x89, 0x87, 0x86, 0x84, 0x80, 0x7D, - 0x7A, 0x7B, 0x7B, 0x79, 0x78, 0x78, 0x78, 0x77, 0x78, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x7E, 0x7D, - 0x7C, 0x7B, 0x7A, 0x78, 0x75, 0x72, 0x6E, 0x6D, 0x6B, 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6D, 0x6E, - 0x6E, 0x70, 0x72, 0x74, 0x77, 0x7A, 0x7D, 0x80, 0x81, 0x84, 0x87, 0x89, 0x8B, 0x8E, 0x91, 0x8F, - 0x8B, 0x8A, 0x89, 0x86, 0x82, 0x83, 0x85, 0x82, 0x80, 0x81, 0x81, 0x7F, 0x7C, 0x7A, 0x79, 0x76, - 0x73, 0x71, 0x70, 0x70, 0x71, 0x70, 0x71, 0x75, 0x75, 0x74, 0x74, 0x76, 0x79, 0x7D, 0x7F, 0x83, - 0x8A, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x8E, 0x8B, 0x89, 0x85, 0x83, 0x81, 0x83, 0x84, 0x84, 0x85, - 0x85, 0x86, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x8B, 0x8F, 0x90, 0x92, 0x90, 0x8E, 0x8C, - 0x8B, 0x88, 0x85, 0x83, 0x81, 0x80, 0x7D, 0x7C, 0x7A, 0x7A, 0x79, 0x77, 0x77, 0x77, 0x7B, 0x7D, - 0x7F, 0x81, 0x82, 0x85, 0x87, 0x88, 0x89, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x8A, 0x88, 0x87, 0x87, - 0x85, 0x80, 0x7A, 0x7A, 0x7A, 0x78, 0x78, 0x78, 0x76, 0x73, 0x70, 0x6D, 0x6B, 0x69, 0x67, 0x67, - 0x67, 0x6B, 0x6C, 0x6D, 0x70, 0x71, 0x72, 0x73, 0x76, 0x7A, 0x7D, 0x7F, 0x7F, 0x80, 0x83, 0x87, - 0x8A, 0x8B, 0x8B, 0x8C, 0x8A, 0x88, 0x85, 0x84, 0x83, 0x81, 0x7F, 0x7E, 0x7B, 0x7A, 0x7A, 0x78, - 0x78, 0x78, 0x7A, 0x78, 0x77, 0x78, 0x78, 0x7A, 0x7A, 0x7A, 0x7A, 0x7B, 0x7A, 0x7A, 0x79, 0x76, - 0x74, 0x73, 0x72, 0x71, 0x70, 0x70, 0x70, 0x6E, 0x6D, 0x6F, 0x73, 0x77, 0x7A, 0x7B, 0x7D, 0x80, - 0x82, 0x84, 0x88, 0x8A, 0x8C, 0x8D, 0x8E, 0x8F, 0x91, 0x92, 0x92, 0x93, 0x92, 0x8F, 0x8B, 0x88, - 0x86, 0x85, 0x85, 0x82, 0x81, 0x81, 0x7F, 0x7C, 0x7B, 0x79, 0x76, 0x73, 0x71, 0x70, 0x70, 0x74, - 0x76, 0x77, 0x77, 0x7A, 0x7F, 0x80, 0x81, 0x83, 0x87, 0x88, 0x8A, 0x8A, 0x8B, 0x8D, 0x8B, 0x89, - 0x88, 0x87, 0x87, 0x86, 0x86, 0x84, 0x81, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, - 0x7F, 0x81, 0x83, 0x85, 0x86, 0x85, 0x85, 0x86, 0x84, 0x83, 0x83, 0x82, 0x81, 0x80, 0x7C, 0x79, - 0x77, 0x73, 0x71, 0x70, 0x6E, 0x6F, 0x70, 0x72, 0x73, 0x74, 0x78, 0x7E, 0x82, 0x85, 0x88, 0x8A, - 0x8A, 0x8A, 0x8B, 0x8E, 0x8F, 0x90, 0x91, 0x90, 0x8C, 0x8B, 0x8B, 0x88, 0x85, 0x83, 0x81, 0x7B, - 0x78, 0x75, 0x74, 0x76, 0x74, 0x74, 0x73, 0x73, 0x72, 0x6F, 0x6E, 0x6F, 0x6E, 0x6E, 0x72, 0x73, - 0x77, 0x7C, 0x7C, 0x7E, 0x7F, 0x81, 0x84, 0x85, 0x87, 0x8B, 0x8C, 0x8C, 0x8E, 0x8E, 0x8E, 0x8F, - 0x8E, 0x8A, 0x84, 0x82, 0x7F, 0x7D, 0x7A, 0x7B, 0x7D, 0x7A, 0x7A, 0x77, 0x76, 0x77, 0x76, 0x74, - 0x73, 0x74, 0x74, 0x78, 0x7A, 0x7C, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, 0x7B, 0x7A, 0x79, 0x76, 0x73, - 0x72, 0x6F, 0x6D, 0x6C, 0x69, 0x6A, 0x6C, 0x6C, 0x6D, 0x6E, 0x71, 0x73, 0x77, 0x7B, 0x7E, 0x82, - 0x84, 0x84, 0x85, 0x87, 0x8A, 0x8C, 0x8F, 0x91, 0x91, 0x92, 0x91, 0x8F, 0x8C, 0x8C, 0x8B, 0x88, - 0x86, 0x80, 0x7E, 0x7F, 0x7B, 0x79, 0x78, 0x74, 0x71, 0x70, 0x71, 0x6E, 0x6F, 0x74, 0x74, 0x76, - 0x7A, 0x7E, 0x80, 0x80, 0x7F, 0x7E, 0x7F, 0x80, 0x80, 0x81, 0x84, 0x88, 0x8A, 0x8B, 0x8D, 0x8F, - 0x91, 0x93, 0x94, 0x94, 0x92, 0x91, 0x93, 0x91, 0x8F, 0x8E, 0x8D, 0x8C, 0x8A, 0x86, 0x82, 0x80, - 0x80, 0x7F, 0x7F, 0x7E, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7E, 0x7F, 0x81, 0x81, 0x82, 0x84, 0x86, - 0x85, 0x84, 0x84, 0x86, 0x87, 0x85, 0x83, 0x81, 0x80, 0x7F, 0x7D, 0x7A, 0x7A, 0x7C, 0x7B, 0x7A, - 0x7A, 0x79, 0x7A, 0x7A, 0x7A, 0x7A, 0x7B, 0x7E, 0x7F, 0x7F, 0x81, 0x80, 0x80, 0x80, 0x7E, 0x80, - 0x82, 0x81, 0x7F, 0x7E, 0x7C, 0x7D, 0x7D, 0x7E, 0x7E, 0x7B, 0x79, 0x76, 0x74, 0x73, 0x71, 0x6E, - 0x6F, 0x6F, 0x6F, 0x71, 0x71, 0x75, 0x75, 0x75, 0x78, 0x7A, 0x7B, 0x7A, 0x7C, 0x7F, 0x80, 0x7E, - 0x7E, 0x7D, 0x7F, 0x81, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7F, 0x7F, 0x7D, - 0x7A, 0x7A, 0x7B, 0x78, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x76, 0x76, - 0x77, 0x76, 0x74, 0x74, 0x74, 0x76, 0x76, 0x77, 0x79, 0x7C, 0x7E, 0x80, 0x80, 0x81, 0x84, 0x87, - 0x8B, 0x8D, 0x8F, 0x90, 0x8F, 0x8E, 0x8B, 0x8B, 0x8B, 0x8A, 0x88, 0x85, 0x84, 0x83, 0x83, 0x82, - 0x81, 0x81, 0x83, 0x83, 0x81, 0x80, 0x7F, 0x81, 0x83, 0x84, 0x86, 0x88, 0x87, 0x88, 0x88, 0x86, - 0x88, 0x8A, 0x8A, 0x88, 0x85, 0x82, 0x82, 0x81, 0x7F, 0x7E, 0x7E, 0x7E, 0x7B, 0x7A, 0x7A, 0x7A, - 0x79, 0x79, 0x7C, 0x7D, 0x7E, 0x7E, 0x7E, 0x7C, 0x7C, 0x7C, 0x7E, 0x80, 0x80, 0x81, 0x82, 0x84, - 0x83, 0x83, 0x84, 0x85, 0x87, 0x85, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x81, 0x7F, - 0x7F, 0x7E, 0x7D, 0x7C, 0x7A, 0x79, 0x79, 0x76, 0x77, 0x77, 0x76, 0x75, 0x76, 0x75, 0x75, 0x77, - 0x78, 0x7A, 0x7B, 0x7B, 0x7B, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7D, 0x7D, - 0x7D, 0x7D, 0x7D, 0x7D, 0x7E, 0x7F, 0x7F, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x84, 0x84, 0x82, - 0x81, 0x81, 0x81, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x7E, 0x7F, - 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x81, 0x80, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7C, - 0x7B, 0x7A, 0x78, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x77, 0x78, 0x7A, 0x7C, - 0x7C, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, - 0x7F, 0x80, 0x81, 0x82, 0x82, 0x81, 0x84, 0x85, 0x85, 0x84, 0x83, 0x84, 0x84, 0x83, 0x82, 0x81, - 0x81, 0x81, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x81, - 0x83, 0x83, 0x83, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x82, 0x81, 0x81, 0x7F, 0x80, 0x81, 0x82, - 0x82, 0x82, 0x84, 0x85, 0x86, 0x86, 0x88, 0x8A, 0x89, 0x88, 0x88, 0x87, 0x87, 0x85, 0x85, 0x84, - 0x83, 0x81, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x80, 0x80, - 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7D, 0x7B, - 0x7B, 0x7B, 0x79, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x76, 0x77, 0x78, - 0x78, 0x77, 0x78, 0x7A, 0x7B, 0x7B, 0x7B, 0x7C, 0x7C, 0x7C, 0x7C, 0x7E, 0x7E, 0x7E, 0x80, 0x80, - 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7E, 0x7E, 0x7D, 0x7E, 0x7C, 0x7B, 0x79, - 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x7B, 0x7B, 0x7C, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, - 0x80, 0x82, 0x84, 0x85, 0x86, 0x86, 0x85, 0x84, 0x83, 0x83, 0x84, 0x82, 0x81, 0x83, 0x83, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x82, 0x81, 0x81, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81, 0x81, 0x80, 0x7F, 0x80, 0x80, 0x81, 0x80, - 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7F, - 0x80, 0x81, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, 0x7B, 0x7A, 0x7B, 0x7B, - 0x7B, 0x7A, 0x7B, 0x7A, 0x7C, 0x7C, 0x7B, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7E, 0x7D, 0x7D, 0x7C, 0x7B, 0x7C, 0x7B, 0x7C, 0x7E, 0x7E, 0x7D, 0x7F, 0x80, 0x80, 0x80, - 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7C, 0x7C, - 0x7C, 0x7C, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, - 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7E, 0x7D, 0x7B, 0x7B, 0x7A, 0x7B, 0x7C, 0x7B, 0x7A, 0x7A, - 0x7B, 0x7B, 0x7C, 0x7C, 0x7B, 0x7C, 0x7D, 0x7E, 0x7D, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83, 0x81, 0x80, 0x80, - 0x81, 0x83, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7D, 0x7F, 0x7F, - 0x7F, 0x7F, 0x80, 0x81, 0x81, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x85, 0x84, 0x81, 0x82, 0x83, - 0x81, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84, 0x85, - 0x84, 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x81, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, - 0x80, 0x7F, 0x7E, 0x7C, 0x7B, 0x7B, 0x7A, 0x7B, 0x7B, 0x7B, 0x7B, 0x7A, 0x7A, 0x7A, 0x7B, 0x7B, - 0x7B, 0x7D, 0x7D, 0x7B, 0x7A, 0x7A, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, - 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, - 0x7E, 0x7E, 0x7D, 0x7D, 0x7D, 0x7E, 0x7C, 0x7A, 0x7B, 0x7B, 0x7C, 0x7E, 0x7C, 0x7C, 0x7D, 0x7E, - 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, - 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x81, 0x80, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, - 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x84, 0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x81, 0x80, - 0x7F, 0x7F, 0x7F, 0x7E, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x80, 0x7E, 0x7D, 0x7E, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, - 0x7E, 0x7E, 0x7D, 0x7C, 0x7C, 0x7C, 0x7C, 0x7B, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, - 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7E, 0x7C, 0x7C, 0x7E, 0x7E, 0x7D, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, - 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, - 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7D, 0x7D, 0x7D, 0x7E, 0x7E, - 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, - 0x7E, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x80, 0x81, 0x81, 0x81, 0x83, 0x83, 0x83, 0x84, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, - 0x81, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x82, 0x82, 0x81, - 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x7F, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, - 0x7C, 0x7C, 0x7E, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7B, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, - 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D, 0x7D, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x83, 0x84, 0x83, 0x82, 0x81, 0x82, 0x83, 0x83, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x80, 0x7F, 0x7E, 0x7F, - 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, 0x7D, 0x7E, 0x7E, 0x7E, 0x7D, 0x7D, 0x7D, - 0x7D, 0x7E, 0x7E, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, - 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, - 0x80, 0x81, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, - 0x80, 0x81, 0x80, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, - 0x81, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, - 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, - 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D, 0x7E, 0x7D, 0x7C, 0x7B, 0x7C, 0x7B, 0x7C, - 0x7D, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x7F, 0x7E, 0x7F, 0x80, 0x80, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, - 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x81, 0x7F, 0x80, 0x81, 0x81, - 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x82, 0x81, 0x82, 0x81, 0x81, 0x80, 0x81, - 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, - 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, - 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, - 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, - 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x81, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, - 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, - 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, - 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, - 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, - 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, - 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, - 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, - 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, - 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, - 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, - 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, - 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, - 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, - 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, - 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, - 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, - 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, - 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, - 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, - 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, - 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, - 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, - 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -}; - -#ifdef ROMFS_DIRENTRY_HEAD - static const ROMFS_DIRENTRY allwrong_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "allwrong.wav", 29434, allwrong }; - #undef ROMFS_DIRENTRY_HEAD - #define ROMFS_DIRENTRY_HEAD &allwrong_dir -#endif diff --git a/demos/modules/audio/play-wave/romfs_files.h b/demos/modules/audio/play-wave/romfs_files.h deleted file mode 100644 index db3e5491..00000000 --- a/demos/modules/audio/play-wave/romfs_files.h +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This file contains the list of files for the ROMFS. - * - * The files have been converted using... - * file2c -dbcs infile outfile - */ -#include "romfs_allwrong.h" diff --git a/demos/modules/gaudio/oscilloscope/demo.mk b/demos/modules/gaudio/oscilloscope/demo.mk new file mode 100644 index 00000000..47b28f5f --- /dev/null +++ b/demos/modules/gaudio/oscilloscope/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gaudio/oscilloscope +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c $(DEMODIR)/gwinosc.c diff --git a/demos/modules/gaudio/oscilloscope/gfxconf.h b/demos/modules/gaudio/oscilloscope/gfxconf.h new file mode 100644 index 00000000..2caa1da9 --- /dev/null +++ b/demos/modules/gaudio/oscilloscope/gfxconf.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * Copy this file into your project directory and rename it as gfxconf.h + * Edit your copy to turn on the GFX features you want to use. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* The operating system to use. One of these must be defined - preferably in your Makefile */ +//#define GFX_USE_OS_CHIBIOS FALSE +//#define GFX_USE_OS_WIN32 FALSE +//#define GFX_USE_OS_LINUX FALSE +//#define GFX_USE_OS_OSX FALSE + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN TRUE +#define GFX_USE_GTIMER TRUE +//#define GFX_USE_GADC TRUE +#define GFX_USE_GAUDIO TRUE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_MULTITHREAD TRUE + +/* Features for the GAUDIO sub-system */ +#define GAUDIO_NEED_RECORD TRUE + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/gaudio/oscilloscope/gwinosc.c b/demos/modules/gaudio/oscilloscope/gwinosc.c new file mode 100644 index 00000000..21a83760 --- /dev/null +++ b/demos/modules/gaudio/oscilloscope/gwinosc.c @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * --------------------------- Our Custom GWIN Oscilloscope --------------- + * + * This GWIN superset implements a simple audio oscilloscope using the GAUDIN module. + * + * It makes many assumptions, the most fundamental of which is that the audio data + * should be scaled to SCOPE_Y_BITS. + * + * The GMISC module with GMISC_NEED_ARRAYOPS could be used to process the samples more + * correctly if we were really building something generic. + */ + +#include "gfx.h" +#include "gwinosc.h" + +/* Include internal GWIN routines so we can build our own superset class */ +#include "src/gwin/class_gwin.h" + +/* How many flat-line sample before we trigger */ +#define FLATLINE_SAMPLES 8 + +static void _destroy(GHandle gh) { + gaudioRecordStop(); + if (((GScopeObject *)gh)->lastscopetrace) { + gfxFree(((GScopeObject *)gh)->lastscopetrace); + ((GScopeObject *)gh)->lastscopetrace = 0; + } +} + +static const gwinVMT scopeVMT = { + "Scope", // The classname + sizeof(GScopeObject), // The object size + _destroy, // The destroy routine + 0, // The redraw routine + 0, // The after-clear routine +}; + +GHandle gwinGScopeCreate(GDisplay *g, GScopeObject *gs, GWindowInit *pInit, uint16_t channel, uint32_t frequency, ArrayDataFormat format) { + /* Make sure the audio parameters are valid first */ + if (!gaudioRecordInit(channel, frequency, format)) + return 0; + + /* Initialise the base class GWIN */ + if (!(gs = (GScopeObject *)_gwindowCreate(g, &gs->g, pInit, &scopeVMT, 0))) + return 0; + + /* Initialise the scope object members and allocate memory for buffers */ + gs->format = format; + gs->nextx = 0; + if (!(gs->lastscopetrace = (coord_t *)gfxAlloc(gs->g.width * sizeof(coord_t)))) + return 0; + #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP + gs->lasty = gs->g.height/2; + #elif TRIGGER_METHOD == TRIGGER_MINVALUE + gs->lasty = gs->g.height/2; + gs->scopemin = 0; + #endif + + /* Set visibility */ + gwinSetVisible((GHandle)gs, pInit->show); + + /* Start the audio recording */ + gaudioRecordStart(); + + return (GHandle)gs; +} + +void gwinScopeWaitForTrace(GHandle gh) { + #define gs ((GScopeObject *)(gh)) + GAudioData *paud; + int i; + coord_t x, y; + coord_t yoffset; + uint8_t *pa8; + uint16_t *pa16; + coord_t *pc; + uint8_t shr; + + #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP + bool_t rdytrigger; + int flsamples; + #elif TRIGGER_METHOD == TRIGGER_MINVALUE + bool_t rdytrigger; + int flsamples; + coord_t scopemin; + #endif + + if (gh->vmt != &scopeVMT) + return; + + /* Wait for a set of audio conversions */ + paud = gaudioRecordGetData(TIME_INFINITE); + + /* Ensure we are drawing in the right area */ + #if GDISP_NEED_CLIP + gdispGSetClip(gh->display, gh->x, gh->y, gh->width, gh->height); + #endif + + shr = 16 - gfxSampleFormatBits(gs->format); + yoffset = gh->height/2; + if (!gfxSampleFormatIsSigned(gs->format)) + yoffset += (1<nextx; + pc = gs->lastscopetrace+x; + pa8 = (uint8_t *)(paud+1); + pa16 = (uint16_t *)(paud+1); + + #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP + rdytrigger = FALSE; + flsamples = 0; + #elif TRIGGER_METHOD == TRIGGER_MINVALUE + rdytrigger = FALSE; + flsamples = 0; + scopemin = 0; + #endif + + for(i = paud->len/(gfxSampleFormatBits(gs->format)/8); i; i--) { + + /* Calculate the new scope value - re-scale using simple shifts for efficiency, re-center and y-invert */ + if (gs->format <= 8) + y = yoffset - (((coord_t)(*pa8++ ) << shr) >> (16-SCOPE_Y_BITS)); + else + y = yoffset - (((coord_t)(*pa16++) << shr) >> (16-SCOPE_Y_BITS)); + + #if TRIGGER_METHOD == TRIGGER_MINVALUE + /* Calculate the scopemin ready for the next trace */ + if (y > scopemin) + scopemin = y; + #endif + + /* Have we reached the end of a scope trace? */ + if (x >= gh->width) { + + #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP || TRIGGER_METHOD == TRIGGER_MINVALUE + /* Handle triggering - we trigger on the next sample minimum (y value maximum) or a flat-line */ + + #if TRIGGER_METHOD == TRIGGER_MINVALUE + /* Arm when we reach the sample minimum (y value maximum) of the previous trace */ + if (!rdytrigger && y >= gs->scopemin) + rdytrigger = TRUE; + #endif + + if (y == gs->lasty) { + /* Trigger if we get too many flat-line samples regardless of the armed state */ + if (++flsamples < FLATLINE_SAMPLES) + continue; + flsamples = 0; + } else if (y > gs->lasty) { + gs->lasty = y; + flsamples = 0; + #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP + /* Arm the trigger when samples fall (y increases) ie. negative slope */ + rdytrigger = TRUE; + #endif + continue; + } else { + /* If the trigger is armed, Trigger when samples increases (y decreases) ie. positive slope */ + gs->lasty = y; + flsamples = 0; + if (!rdytrigger) + continue; + } + + /* Ready for a the next trigger cycle */ + rdytrigger = FALSE; + #endif + + /* Prepare for a scope trace */ + x = 0; + pc = gs->lastscopetrace; + } + + /* Clear the old scope pixel and then draw the new scope value */ + gdispGDrawPixel(gh->display, gh->x+x, gh->y+pc[0], gh->bgcolor); + gdispGDrawPixel(gh->display, gh->x+x, gh->y+y, gh->color); + + /* Save the value */ + *pc++ = y; + x++; + #if TRIGGER_METHOD == TRIGGER_POSITIVERAMP || TRIGGER_METHOD == TRIGGER_MINVALUE + gs->lasty = y; + #endif + } + gs->nextx = x; +#if TRIGGER_METHOD == TRIGGER_MINVALUE + gs->scopemin = scopemin; +#endif + + gaudioReleaseBuffer(paud); + #undef gs +} diff --git a/demos/modules/gaudio/oscilloscope/gwinosc.h b/demos/modules/gaudio/oscilloscope/gwinosc.h new file mode 100644 index 00000000..5a5c5034 --- /dev/null +++ b/demos/modules/gaudio/oscilloscope/gwinosc.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _GWINOSC_H +#define _GWINOSC_H + +/** + * --------------------------- Our Custom GWIN Oscilloscope --------------- + * + * This GWIN superset implements a simple audio oscilloscope using the GAUDIN device. + * + * It makes many assumptions. + * + * The GMISC module with GMISC_NEED_ARRAYOPS could be used to process the samples more + * correctly if we were really building something generic. + */ + +/* The extent of scaling for our audio data - fixed scale at the moment */ +#ifndef SCOPE_Y_BITS + #define SCOPE_Y_BITS 8 // 8 bits = 0..255 +#endif + +/* Trigger methods */ +#define TRIGGER_NONE 0 /* No triggering */ +#define TRIGGER_POSITIVERAMP 1 /* Trigger on a positive going signal */ +#define TRIGGER_MINVALUE 2 /* Trigger on reaching the minimum value from the last scope */ + +/** + * Which trigger we want to use. + * Experiments suggests that TRIGGER_MINVALUE gives the best result + */ +#ifndef TRIGGER_METHOD + #define TRIGGER_METHOD TRIGGER_MINVALUE +#endif + +/* A scope window object. Treat it as a black box */ +typedef struct GScopeObject_t { + GWindowObject g; // Base Class + + coord_t *lastscopetrace; // To store last scope trace + ArrayDataFormat format; // The sample format + coord_t nextx; // Where we are up to +#if TRIGGER_METHOD == TRIGGER_POSITIVERAMP + coord_t lasty; // The last y value - used for trigger slope detection +#elif TRIGGER_METHOD == TRIGGER_MINVALUE + coord_t lasty; // The last y value - used for trigger slope detection + coord_t scopemin; // The last scopes minimum value +#endif + } GScopeObject; + +#ifdef __cplusplus +extern "C" { +#endif + + /** + * Create a scope window. + */ + GHandle gwinGScopeCreate(GDisplay *g, GScopeObject *gs, GWindowInit *pInit, uint16_t channel, uint32_t frequency, ArrayDataFormat format); + #define gwinScopeCreate(gs,pI,ch,f,fmt) gwinGScopeCreate(GDISP,gs,pI,ch,f,fmt) + + /** + * Wait for a scope trace to be ready and then draw it. + */ + void gwinScopeWaitForTrace(GHandle gh); + +#ifdef __cplusplus +} +#endif + +#endif /* _GWINOSC_H */ diff --git a/demos/modules/gaudio/oscilloscope/main.c b/demos/modules/gaudio/oscilloscope/main.c new file mode 100644 index 00000000..b44b5a02 --- /dev/null +++ b/demos/modules/gaudio/oscilloscope/main.c @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * This demo demonstrates the use of the GAUDIN module to read audio channel 0. + * The audio channel gets read to display a very simple oscilloscope. + * + * It also demonstrates how to write your own custom GWIN window type. + */ +#include "gfx.h" + +/* Include our custom gwin audio oscilloscope */ +#include "gwinosc.h" + +/* Specify our timing parameters */ +#define MY_AUDIO_FREQUENCY 8000 /* 8khz. If this is too much try 4000 (4khz) */ +#define MY_AUDIO_CHANNEL 0 /* Use channel 0 - must be a mono channel */ +#define MY_AUDIO_FORMAT GAUDIO_RECORD_FORMAT1 /* The default format */ + +/* Data */ +static GScopeObject gScopeWindow; + +/* + * Application entry point. + */ +int main(void) { + GHandle ghScope; + coord_t swidth, sheight; + + gfxInit(); + + // Allocate audio buffers - 4 x 128 byte buffers. + // You may need to increase this for slower cpu's. + // You may be able to decrease this for low latency operating systems. + gaudioAllocBuffers(4, 128); + + /* Get the screen dimensions */ + swidth = gdispGetWidth(); + sheight = gdispGetHeight(); + + /* Set up the scope window to fill the screen */ + { + GWindowInit wi; + + wi.show = TRUE; + wi.x = wi.y = 0; + wi.width = swidth; wi.height = sheight; + ghScope = gwinScopeCreate(&gScopeWindow, &wi, MY_AUDIO_CHANNEL, MY_AUDIO_FREQUENCY, MY_AUDIO_FORMAT); + } + gwinSetBgColor(ghScope, White); + gwinSetColor(ghScope, Red); + gwinClear(ghScope); + + /* Just keep displaying the scope traces */ + while (TRUE) { + gwinScopeWaitForTrace(ghScope); + } +} diff --git a/demos/modules/gaudio/oscilloscope/results_264x264.jpg b/demos/modules/gaudio/oscilloscope/results_264x264.jpg new file mode 100644 index 00000000..e459f7e1 Binary files /dev/null and b/demos/modules/gaudio/oscilloscope/results_264x264.jpg differ diff --git a/demos/modules/gaudio/play-wave/allwrong.wav b/demos/modules/gaudio/play-wave/allwrong.wav new file mode 100644 index 00000000..e221ff2f Binary files /dev/null and b/demos/modules/gaudio/play-wave/allwrong.wav differ diff --git a/demos/modules/gaudio/play-wave/demo.mk b/demos/modules/gaudio/play-wave/demo.mk new file mode 100644 index 00000000..cd6f941f --- /dev/null +++ b/demos/modules/gaudio/play-wave/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gaudio/play-wave +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c diff --git a/demos/modules/gaudio/play-wave/gfxconf.h b/demos/modules/gaudio/play-wave/gfxconf.h new file mode 100644 index 00000000..a9bb6252 --- /dev/null +++ b/demos/modules/gaudio/play-wave/gfxconf.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * Copy this file into your project directory and rename it as gfxconf.h + * Edit your copy to turn on the GFX features you want to use. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* The operating system to use. One of these must be defined - preferably in your Makefile */ +//#define GFX_USE_OS_CHIBIOS FALSE +//#define GFX_USE_OS_WIN32 FALSE +//#define GFX_USE_OS_LINUX FALSE +//#define GFX_USE_OS_OSX FALSE + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GAUDIO TRUE +#define GFX_USE_GFILE TRUE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_TEXT TRUE + +/* GDISP fonts to include */ +#define GDISP_INCLUDE_FONT_UI2 TRUE + +/* Features for the GAUDIO sub-system */ +#define GAUDIO_NEED_PLAY TRUE + +/* Features for the GFILE sub-system */ +#define GFILE_NEED_ROMFS TRUE + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/gaudio/play-wave/main.c b/demos/modules/gaudio/play-wave/main.c new file mode 100644 index 00000000..f15ec7a1 --- /dev/null +++ b/demos/modules/gaudio/play-wave/main.c @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * This demo demonstrates the use of the GAUDOUT module to play a wave file. + * + */ +#include "gfx.h" + +/* Specify our timing parameters */ +#define MY_AUDIO_CHANNEL 0 /* Use channel 0 */ +#define MY_AUDIO_CHANNEL_IS_STEREO GAUDOUT_CHANNEL0_IS_STEREO /* Is it stereo? */ + +// Storage for the wave header +static char whdr[32]; + + +/* + * Application entry point. + */ +int main(void) { + font_t font; + GFILE *f; + char *errmsg; + uint32_t toplay; + uint32_t frequency; + ArrayDataFormat datafmt; + uint32_t len; + GAudioData *paud; + + // Initialise everything + gfxInit(); + errmsg = 0; + + // Any font will do + font = gdispOpenFont("*"); + + // Allocate audio buffers - 4 x 512 byte buffers. + // You may need to increase this for slower cpu's. + // You may be able to decrease this for low latency operating systems. + if (!gaudioAllocBuffers(4, 512)) { + errmsg = "Err: No Memory"; + goto theend; + } + + // Open the wave file + if (!(f = gfileOpen("allwrong.wav", "r"))) { + errmsg = "Err: Open WAV"; + goto theend; + } + + // Read the wave header + if (gfileRead(f, whdr, 20) != 20) { + errmsg = "Err: Read hdr"; + goto theend; + } + + // Check the wave header + if (whdr[0] != 'R' || whdr[1] != 'I' || whdr[2] != 'F' || whdr[3] != 'F' // RIFF label + || whdr[8] != 'W' || whdr[9] != 'A' || whdr[10] != 'V' || whdr[11] != 'E' // WAVE label + || whdr[12] != 'f' || whdr[13] != 'm' || whdr[14] != 't' || whdr[15] != ' ' // fmt label + ) { + errmsg = "Err: Bad header"; + goto theend; + } + + // Read the fmt block + len = (((uint32_t)(uint8_t)whdr[16])<<0) | (((uint32_t)(uint8_t)whdr[17])<<8) + | (((uint32_t)(uint8_t)whdr[18])<<16) | (((uint32_t)(uint8_t)whdr[19])<<24); + if (len > sizeof(whdr) || len < 16) { + errmsg = "Err: Bad fmt len"; + goto theend; + } + if (gfileRead(f, whdr, len) != len) { + errmsg = "Err: Read fmt block"; + goto theend; + } + if (whdr[0] != 1 || whdr[1] != 0 // PCM format + || (whdr[14] != 8 && whdr[14] != 16) || whdr[15] != 0 // 8 or 16 bits per sample + ) { + errmsg = "Err: Bad fmt block"; + goto theend; + } + + // Check stereo/mono + #if MY_AUDIO_CHANNEL_IS_STEREO + if (whdr[2] != 2 || whdr[3] != 0) { + errmsg = "Err: Not stereo"; + goto theend; + } + #else + if (whdr[2] != 1 || whdr[3] != 0) { + errmsg = "Err: Not mono"; + goto theend; + } + #endif + + // Get the sample frequency (little endian format) and format + frequency = (((uint32_t)(uint8_t)whdr[4])<<0) | (((uint32_t)(uint8_t)whdr[5])<<8) + | (((uint32_t)(uint8_t)whdr[6])<<16) | (((uint32_t)(uint8_t)whdr[7])<<24); + datafmt = whdr[14] == 8 ? ARRAY_DATA_8BITUNSIGNED : ARRAY_DATA_16BITSIGNED; + + // Initialise the audio output device + if (!gaudioPlayInit(MY_AUDIO_CHANNEL, frequency, datafmt)) { + // For this demo we don't try and do any format conversions if the driver won't accept + // what we initially request. + errmsg = "Err: Bad format/freq"; + goto theend; + } + + // Get our current file position + len += 20; + + // Read RIFF blocks until we get to the data RIFF block (contains the audio) + while(TRUE) { + if (gfileRead(f, whdr, 8) != 8) { + errmsg = "Err: Read block"; + goto theend; + } + + // Get the block length (little endian format) + toplay = (((uint32_t)(uint8_t)whdr[4])<<0) | (((uint32_t)(uint8_t)whdr[5])<<8) + | (((uint32_t)(uint8_t)whdr[6])<<16) | (((uint32_t)(uint8_t)whdr[7])<<24); + + // Stop scanning when this is a data block + if (whdr[0] == 'd' && whdr[1] == 'a' && whdr[2] == 't' && whdr[3] == 'a') + break; + + // Seek to the next block header + len += toplay + 8; + if (!gfileSetPos(f, len)) { + errmsg = "Err: No data"; + goto theend; + } + } + + // Play the file + gdispDrawString(0, gdispGetHeight()/2, "Playing...", font, Yellow); + while(toplay) { + // Get a buffer to put the data into + paud = gaudioGetBuffer(TIME_INFINITE); // This should never fail as we are waiting forever + + // How much data can we put in + len = toplay > paud->size ? paud->size : toplay; + paud->len = len; + toplay -= len; + + // Read the data + if (gfileRead(f, paud+1, len) != len) { + errmsg = "Err: Read fail"; + goto theend; + } + + gaudioPlay(paud); + } + gfileClose(f); + + // Wait for the play to finish + gaudioPlayWait(TIME_INFINITE); + gdispDrawString(0, gdispGetHeight()/2+10, "Done", font, Green); + + // The end +theend: + if (errmsg) + gdispDrawString(0, gdispGetHeight()/2, errmsg, font, Red); + + while(TRUE) + gfxSleepMilliseconds(1000); +} diff --git a/demos/modules/gaudio/play-wave/romfs_allwrong.h b/demos/modules/gaudio/play-wave/romfs_allwrong.h new file mode 100644 index 00000000..adc74fc7 --- /dev/null +++ b/demos/modules/gaudio/play-wave/romfs_allwrong.h @@ -0,0 +1,1854 @@ +/** + * This file was generated from "allwrong.wav" using... + * + * file2c -dcs allwrong.wav romfs_allwrong.h + * + */ +static const char allwrong[] = { + 0x52, 0x49, 0x46, 0x46, 0xF2, 0x72, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6D, 0x74, 0x20, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x2B, 0x00, 0x00, 0x11, 0x2B, 0x00, 0x00, + 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x66, 0x61, 0x63, 0x74, 0x04, 0x00, 0x00, 0x00, 0xC0, 0x72, + 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0xC0, 0x72, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, + 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, + 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, + 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, + 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, + 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, + 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x82, 0x82, 0x82, 0x80, 0x7F, + 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7D, 0x7E, 0x7C, 0x7D, 0x7D, 0x7E, 0x7E, 0x7D, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7C, 0x7C, 0x7B, 0x7A, 0x7A, + 0x7A, 0x7B, 0x7A, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, 0x7D, 0x7C, 0x7D, 0x7C, 0x7B, 0x7D, + 0x7E, 0x7E, 0x7E, 0x7E, 0x7C, 0x7B, 0x7A, 0x7A, 0x78, 0x77, 0x78, 0x78, 0x78, 0x79, 0x7A, 0x7A, + 0x7A, 0x7B, 0x7D, 0x7F, 0x7E, 0x7D, 0x7E, 0x7F, 0x7D, 0x7D, 0x7F, 0x81, 0x7F, 0x7B, 0x7D, 0x7E, + 0x7A, 0x77, 0x79, 0x7A, 0x76, 0x73, 0x78, 0x7F, 0x7E, 0x7E, 0x80, 0x7F, 0x7D, 0x7A, 0x7C, 0x7F, + 0x7E, 0x7F, 0x82, 0x86, 0x85, 0x87, 0x89, 0x8B, 0x87, 0x83, 0x84, 0x86, 0x84, 0x80, 0x7E, 0x7F, + 0x7D, 0x7B, 0x7B, 0x7C, 0x78, 0x74, 0x72, 0x70, 0x71, 0x74, 0x76, 0x74, 0x74, 0x78, 0x7C, 0x7E, + 0x80, 0x82, 0x82, 0x83, 0x86, 0x8B, 0x8F, 0x93, 0x98, 0x9E, 0xA0, 0xA0, 0x9D, 0x9C, 0x99, 0x92, + 0x8D, 0x8F, 0x94, 0x8D, 0x81, 0x7C, 0x7A, 0x70, 0x64, 0x61, 0x61, 0x59, 0x54, 0x5A, 0x64, 0x67, + 0x66, 0x66, 0x68, 0x6A, 0x6C, 0x73, 0x7C, 0x83, 0x89, 0x8F, 0x99, 0xA0, 0xA5, 0xAA, 0xAE, 0xAF, + 0xAE, 0xB0, 0xB3, 0xAD, 0xA5, 0xA1, 0x9D, 0x93, 0x8A, 0x85, 0x7C, 0x6E, 0x66, 0x64, 0x5D, 0x53, + 0x50, 0x50, 0x4A, 0x44, 0x46, 0x4D, 0x52, 0x56, 0x5B, 0x62, 0x6B, 0x76, 0x81, 0x89, 0x91, 0x98, + 0x9C, 0x9F, 0xA6, 0xB1, 0xB8, 0xB7, 0xB0, 0xAB, 0xA9, 0xA5, 0x9B, 0x90, 0x86, 0x7B, 0x71, 0x72, + 0x74, 0x6B, 0x5D, 0x59, 0x58, 0x4E, 0x46, 0x4B, 0x52, 0x4F, 0x4E, 0x59, 0x62, 0x63, 0x67, 0x73, + 0x7C, 0x80, 0x87, 0x92, 0x9C, 0xA2, 0xA6, 0xA9, 0xAC, 0xAD, 0xAA, 0xA4, 0x9C, 0x92, 0x88, 0x7F, + 0x76, 0x6C, 0x61, 0x57, 0x4B, 0x42, 0x40, 0x40, 0x3F, 0x41, 0x4B, 0x54, 0x59, 0x63, 0x74, 0x80, + 0x89, 0x9A, 0xAD, 0xB3, 0xB2, 0xB7, 0xBE, 0xBB, 0xB3, 0xB3, 0xB5, 0xAF, 0xA8, 0xA8, 0xA6, 0x9C, + 0x90, 0x89, 0x7D, 0x69, 0x56, 0x4F, 0x4E, 0x46, 0x3B, 0x3A, 0x40, 0x3F, 0x38, 0x3B, 0x47, 0x50, + 0x56, 0x67, 0x7E, 0x91, 0x9F, 0xAD, 0xBC, 0xC5, 0xCC, 0xCD, 0xC8, 0xC2, 0xBF, 0xB7, 0xA9, 0x9C, + 0x95, 0x88, 0x74, 0x67, 0x62, 0x5B, 0x4D, 0x45, 0x46, 0x4A, 0x4C, 0x52, 0x5E, 0x68, 0x6E, 0x77, + 0x88, 0x98, 0xA2, 0xAA, 0xB1, 0xB3, 0xB2, 0xBC, 0xCB, 0xCE, 0xC5, 0xC0, 0xBF, 0xB4, 0xA4, 0x9D, + 0x99, 0x88, 0x71, 0x67, 0x66, 0x5D, 0x4E, 0x46, 0x44, 0x3D, 0x36, 0x39, 0x46, 0x51, 0x5B, 0x69, + 0x7B, 0x88, 0x91, 0x99, 0x9F, 0x9E, 0x9A, 0x9B, 0x9A, 0x93, 0x89, 0x86, 0x85, 0x7C, 0x6F, 0x66, + 0x5E, 0x51, 0x42, 0x3D, 0x44, 0x49, 0x46, 0x46, 0x53, 0x62, 0x6C, 0x74, 0x84, 0x97, 0x9F, 0xA1, + 0xAD, 0xC4, 0xCF, 0xCA, 0xC9, 0xD0, 0xCC, 0xBD, 0xB7, 0xB9, 0xB1, 0x9D, 0x91, 0x8E, 0x89, 0x79, + 0x6A, 0x67, 0x67, 0x5E, 0x5B, 0x6A, 0x79, 0x7D, 0x81, 0x92, 0x9F, 0xA3, 0xA3, 0xA4, 0xA3, 0x9B, + 0x8E, 0x86, 0x84, 0x7B, 0x6D, 0x62, 0x58, 0x46, 0x38, 0x33, 0x2B, 0x22, 0x21, 0x21, 0x1A, 0x1A, + 0x26, 0x30, 0x32, 0x3E, 0x50, 0x5B, 0x5F, 0x6D, 0x86, 0x97, 0x97, 0x99, 0xAB, 0xB4, 0xAC, 0xA9, + 0xB9, 0xBC, 0xA9, 0x9B, 0x9D, 0x9A, 0x8B, 0x80, 0x7D, 0x80, 0x7E, 0x7C, 0x85, 0x97, 0xA1, 0xA5, + 0xB5, 0xC5, 0xCB, 0xCE, 0xDB, 0xDA, 0xD0, 0xCC, 0xCE, 0xC3, 0xB0, 0xA2, 0x94, 0x83, 0x6C, 0x5D, + 0x54, 0x4A, 0x32, 0x23, 0x28, 0x2D, 0x28, 0x2D, 0x3F, 0x43, 0x45, 0x4F, 0x62, 0x70, 0x7A, 0x79, + 0x76, 0x7F, 0x84, 0x7D, 0x7A, 0x88, 0x85, 0x74, 0x69, 0x70, 0x6E, 0x64, 0x5C, 0x58, 0x5C, 0x5C, + 0x62, 0x6F, 0x89, 0x99, 0xA7, 0xB9, 0xCB, 0xD2, 0xD8, 0xE1, 0xDD, 0xDF, 0xDD, 0xDA, 0xD4, 0xD2, + 0xC5, 0xB5, 0xB9, 0xB8, 0xA1, 0x87, 0x8B, 0x81, 0x66, 0x51, 0x5A, 0x5E, 0x4D, 0x3F, 0x48, 0x61, + 0x61, 0x54, 0x53, 0x69, 0x60, 0x4D, 0x57, 0x74, 0x76, 0x5D, 0x5A, 0x61, 0x5D, 0x43, 0x3C, 0x43, + 0x47, 0x31, 0x27, 0x46, 0x5C, 0x58, 0x57, 0x79, 0x89, 0x89, 0x91, 0xAB, 0xB3, 0xB1, 0xBA, 0xBE, + 0xC8, 0xCD, 0xD3, 0xC7, 0xC1, 0xB9, 0xB7, 0xAF, 0xA5, 0xA3, 0x9A, 0x88, 0x6C, 0x79, 0x8C, 0x81, + 0x68, 0x79, 0x8E, 0x80, 0x6A, 0x74, 0x97, 0x8D, 0x6C, 0x55, 0x67, 0x74, 0x5F, 0x40, 0x44, 0x50, + 0x3B, 0x27, 0x29, 0x44, 0x40, 0x38, 0x36, 0x37, 0x40, 0x5E, 0x75, 0x7B, 0x87, 0x8F, 0x9A, 0x90, + 0x97, 0xA7, 0xB8, 0xBC, 0xB2, 0xB3, 0xC1, 0xC5, 0xBD, 0xC9, 0xC4, 0xB9, 0xA7, 0x9F, 0xA3, 0xA2, + 0x9F, 0x98, 0x95, 0x94, 0x8F, 0x78, 0x77, 0x77, 0x74, 0x5C, 0x3E, 0x40, 0x41, 0x32, 0x25, 0x27, + 0x2E, 0x41, 0x3E, 0x42, 0x56, 0x70, 0x76, 0x60, 0x63, 0x6F, 0x6E, 0x6B, 0x76, 0x81, 0x97, 0x99, + 0x99, 0xAA, 0xB6, 0xBE, 0xB8, 0xBA, 0xBE, 0xB8, 0xAE, 0xB4, 0xB6, 0xBE, 0xBB, 0xB0, 0xB0, 0xAA, + 0xAC, 0xA4, 0x92, 0x90, 0x93, 0x7F, 0x71, 0x66, 0x65, 0x6A, 0x5B, 0x4E, 0x4B, 0x5D, 0x5F, 0x4F, + 0x53, 0x62, 0x54, 0x53, 0x59, 0x53, 0x5E, 0x64, 0x5F, 0x52, 0x56, 0x64, 0x6B, 0x6C, 0x77, 0x79, + 0x86, 0x96, 0x93, 0xA8, 0xBD, 0xC3, 0xBB, 0xBA, 0xC5, 0xCB, 0xBA, 0xB8, 0xBA, 0xAD, 0xAB, 0xA5, + 0xA6, 0xA4, 0xA2, 0x96, 0x82, 0x7C, 0x81, 0x6C, 0x5A, 0x59, 0x47, 0x49, 0x45, 0x36, 0x33, 0x44, + 0x47, 0x39, 0x3B, 0x54, 0x56, 0x42, 0x44, 0x4B, 0x60, 0x62, 0x5D, 0x73, 0x8C, 0x8D, 0x90, 0xA8, + 0xBF, 0xC4, 0xB5, 0xBD, 0xBB, 0xBE, 0xBA, 0xA6, 0xA0, 0xA8, 0xA9, 0x9A, 0x97, 0x9A, 0x97, 0x7A, + 0x7B, 0x7F, 0x7D, 0x8B, 0x78, 0x3F, 0x2A, 0x58, 0x5E, 0x31, 0x3C, 0x7F, 0x65, 0x22, 0x36, 0x72, + 0x7D, 0x55, 0x52, 0x6B, 0x6D, 0x52, 0x56, 0x7D, 0x99, 0x87, 0x83, 0xAD, 0xAD, 0x95, 0x8E, 0xAE, + 0xBF, 0xA1, 0x8A, 0xA0, 0xA6, 0x8C, 0x83, 0x93, 0xC2, 0xC3, 0x8B, 0x5C, 0x77, 0x8E, 0x62, 0x52, + 0x88, 0x90, 0x47, 0x32, 0x56, 0x78, 0x6E, 0x64, 0x72, 0x80, 0x77, 0x6B, 0x94, 0xCA, 0xC2, 0x8E, + 0x99, 0xBF, 0xBD, 0xAA, 0xBE, 0xD8, 0xBC, 0x96, 0x92, 0xAB, 0xB0, 0xA1, 0x84, 0x70, 0x5A, 0x3E, + 0x30, 0x3C, 0x50, 0x45, 0x34, 0x28, 0x2E, 0x36, 0x42, 0x60, 0x74, 0x5F, 0x50, 0x61, 0x62, 0x69, + 0x78, 0x8C, 0x8C, 0x79, 0x7B, 0xA1, 0xB9, 0xB7, 0xB3, 0xB7, 0xBD, 0xAB, 0xB1, 0xCF, 0xC8, 0x95, + 0x71, 0x75, 0x6D, 0x5A, 0x71, 0x99, 0x86, 0x69, 0x6E, 0x88, 0x98, 0xA5, 0xB3, 0xA8, 0x8B, 0x78, + 0x79, 0x88, 0x99, 0x8E, 0x87, 0x84, 0x7F, 0x80, 0x87, 0x9B, 0x9F, 0x83, 0x78, 0x8D, 0x91, 0x8F, + 0x8F, 0x83, 0x72, 0x73, 0x8C, 0x83, 0x4C, 0x32, 0x49, 0x3D, 0x1B, 0x40, 0x8A, 0x82, 0x4F, 0x5C, + 0x83, 0x82, 0x6E, 0x75, 0x8C, 0x8B, 0x6E, 0x5E, 0x75, 0x90, 0x88, 0x75, 0x81, 0x90, 0x81, 0x74, + 0x92, 0xB1, 0x9B, 0x7A, 0x78, 0x69, 0x54, 0x7B, 0xAF, 0x99, 0x63, 0x5C, 0x60, 0x47, 0x4E, 0x91, + 0xC2, 0xA8, 0x79, 0x73, 0x7D, 0x76, 0x82, 0xA7, 0xB6, 0x96, 0x64, 0x55, 0x6C, 0x7E, 0x85, 0x95, + 0xA4, 0x9F, 0x89, 0x7C, 0x97, 0xAB, 0x8D, 0x71, 0x74, 0x82, 0x96, 0x94, 0x7B, 0x6D, 0x58, 0x36, + 0x38, 0x70, 0xA4, 0x98, 0x74, 0x71, 0x66, 0x4F, 0x58, 0x78, 0x99, 0x95, 0x6A, 0x5C, 0x5F, 0x5A, + 0x71, 0x95, 0xAC, 0xB6, 0xA6, 0x8F, 0x87, 0x8B, 0x9B, 0xB2, 0xCB, 0xCD, 0x9F, 0x72, 0x65, 0x4E, + 0x2F, 0x3C, 0x73, 0x91, 0x78, 0x64, 0x6F, 0x71, 0x69, 0x7B, 0xA4, 0xB7, 0x8E, 0x59, 0x53, 0x58, + 0x54, 0x71, 0xA6, 0xC5, 0xBA, 0x97, 0x8A, 0x95, 0x91, 0x94, 0xB7, 0xD6, 0xC7, 0x8E, 0x66, 0x58, + 0x31, 0x1D, 0x4E, 0x86, 0x96, 0x83, 0x79, 0x84, 0x72, 0x61, 0x7C, 0x96, 0x9C, 0x80, 0x4F, 0x4E, + 0x58, 0x55, 0x7C, 0xA6, 0xB3, 0xB7, 0xA4, 0x8C, 0x7E, 0x7B, 0x98, 0xC4, 0xDC, 0xCC, 0xA0, 0x7B, + 0x4E, 0x2A, 0x4D, 0x8F, 0xA9, 0xA5, 0x9A, 0x87, 0x65, 0x58, 0x78, 0xA2, 0xB6, 0xAD, 0x90, 0x79, + 0x61, 0x4C, 0x5A, 0x85, 0xA6, 0x9F, 0x86, 0x74, 0x58, 0x49, 0x68, 0x98, 0xB6, 0xA5, 0x84, 0x6D, + 0x3C, 0x13, 0x2B, 0x5D, 0x7C, 0x84, 0x77, 0x57, 0x33, 0x31, 0x47, 0x66, 0x95, 0xA0, 0x80, 0x69, + 0x4A, 0x3B, 0x62, 0x91, 0xB1, 0xB7, 0xA8, 0x9F, 0x7C, 0x59, 0x72, 0xA2, 0xC2, 0xCA, 0xB6, 0x9F, + 0x72, 0x36, 0x30, 0x5D, 0x8A, 0x93, 0x85, 0x8C, 0x84, 0x51, 0x3E, 0x62, 0x89, 0x9B, 0x9B, 0x99, + 0x87, 0x5A, 0x42, 0x5E, 0x91, 0xB3, 0xB7, 0xB0, 0x9E, 0x74, 0x5D, 0x83, 0xBB, 0xC2, 0xB2, 0xAD, + 0x91, 0x58, 0x3A, 0x4A, 0x6C, 0x89, 0x99, 0xA5, 0x9D, 0x6D, 0x49, 0x56, 0x76, 0x90, 0x9A, 0x9B, + 0x95, 0x70, 0x4E, 0x5C, 0x7B, 0x8B, 0x9A, 0xAF, 0xB2, 0x97, 0x8C, 0x93, 0x88, 0x89, 0x98, 0x90, + 0x7E, 0x76, 0x73, 0x6C, 0x6B, 0x80, 0x8F, 0x82, 0x7B, 0x85, 0x86, 0x7B, 0x76, 0x79, 0x74, 0x72, + 0x77, 0x76, 0x7E, 0x8A, 0x81, 0x84, 0x91, 0x8A, 0x86, 0x98, 0xB0, 0xB0, 0x9E, 0xA0, 0x95, 0x62, + 0x49, 0x61, 0x7E, 0x8C, 0x8A, 0x87, 0x82, 0x63, 0x3E, 0x43, 0x69, 0x77, 0x6B, 0x72, 0x7C, 0x6B, + 0x5A, 0x6A, 0x8B, 0x99, 0x98, 0x9B, 0x96, 0x81, 0x7C, 0x95, 0xA1, 0x96, 0xA0, 0xA5, 0x7C, 0x5F, + 0x67, 0x6A, 0x6F, 0x84, 0x95, 0x9A, 0x8A, 0x6D, 0x57, 0x56, 0x66, 0x6D, 0x7F, 0xA0, 0x96, 0x7D, + 0x86, 0x93, 0x91, 0x8D, 0x97, 0xA5, 0xA3, 0xA4, 0xA1, 0x8F, 0x87, 0x70, 0x55, 0x68, 0x84, 0x89, + 0x95, 0x9F, 0x8E, 0x6C, 0x53, 0x51, 0x57, 0x61, 0x6D, 0x6A, 0x6B, 0x6F, 0x5E, 0x4D, 0x5B, 0x79, + 0x89, 0x8F, 0x9D, 0x92, 0x78, 0x82, 0x95, 0x93, 0x95, 0xA0, 0x95, 0x71, 0x65, 0x6F, 0x6D, 0x6D, + 0x72, 0x75, 0x76, 0x6A, 0x5A, 0x51, 0x4A, 0x4E, 0x4D, 0x4D, 0x6D, 0x83, 0x81, 0x8D, 0x9F, 0xA5, + 0x9F, 0x89, 0x75, 0x79, 0x94, 0xA2, 0xA1, 0xBE, 0xC8, 0x8A, 0x5D, 0x63, 0x65, 0x63, 0x75, 0x90, + 0x8C, 0x6D, 0x59, 0x39, 0x2A, 0x52, 0x6C, 0x6B, 0x83, 0xA3, 0xA3, 0x88, 0x89, 0xA9, 0xA4, 0x86, + 0x92, 0xB9, 0xC4, 0xA7, 0x94, 0x93, 0x7A, 0x6A, 0x88, 0xA7, 0xBD, 0xD9, 0xD9, 0xC0, 0x9B, 0x65, + 0x3B, 0x35, 0x51, 0x70, 0x7D, 0x90, 0x9D, 0x87, 0x71, 0x77, 0x87, 0x8F, 0x95, 0xA3, 0xAD, 0xAF, + 0xA6, 0x94, 0x89, 0x84, 0x77, 0x70, 0x84, 0x94, 0x8B, 0x87, 0x8A, 0x78, 0x56, 0x42, 0x3E, 0x3D, + 0x4D, 0x5B, 0x52, 0x4F, 0x5D, 0x6D, 0x7B, 0x87, 0x9D, 0xAB, 0x93, 0x6A, 0x57, 0x6A, 0x82, 0x7A, + 0x86, 0xAA, 0x9B, 0x71, 0x73, 0x7E, 0x6B, 0x61, 0x7C, 0x93, 0x88, 0x76, 0x6D, 0x59, 0x43, 0x47, + 0x4D, 0x42, 0x55, 0x82, 0x90, 0x8E, 0x9B, 0x9E, 0x91, 0x8C, 0x92, 0x90, 0x83, 0x85, 0x84, 0x69, + 0x69, 0x82, 0x8C, 0x9D, 0xB5, 0xC2, 0xB1, 0x90, 0x80, 0x69, 0x47, 0x40, 0x4F, 0x61, 0x75, 0x87, + 0x93, 0x90, 0x8E, 0x91, 0x87, 0x86, 0x9F, 0xC0, 0xC9, 0xB9, 0xB5, 0xA8, 0x7A, 0x67, 0x76, 0x75, + 0x7D, 0xA1, 0xB6, 0xA4, 0x87, 0x82, 0x68, 0x2C, 0x27, 0x4A, 0x4B, 0x55, 0x77, 0x89, 0x8B, 0x91, + 0x9A, 0x87, 0x61, 0x4F, 0x56, 0x73, 0x9B, 0xB4, 0xB9, 0xBD, 0xAF, 0x7D, 0x5A, 0x5B, 0x5C, 0x5F, + 0x76, 0x95, 0x93, 0x71, 0x6E, 0x67, 0x32, 0x24, 0x44, 0x47, 0x4D, 0x76, 0x93, 0x91, 0x94, 0xA6, + 0x94, 0x73, 0x83, 0x89, 0x69, 0x72, 0x7E, 0x65, 0x74, 0x9C, 0x9A, 0x8F, 0xA5, 0xB7, 0x93, 0x77, + 0x82, 0x68, 0x42, 0x57, 0x68, 0x5C, 0x68, 0x7F, 0x85, 0x89, 0x88, 0x84, 0x89, 0x9B, 0xAC, 0xA8, + 0xAC, 0xBC, 0xA5, 0x8D, 0x9A, 0x93, 0x88, 0x9D, 0xB7, 0xBE, 0xB5, 0xB3, 0xAA, 0x87, 0x6C, 0x57, + 0x40, 0x4C, 0x6F, 0x80, 0x8A, 0x9B, 0xA7, 0x99, 0x7D, 0x72, 0x71, 0x6D, 0x7A, 0x93, 0x9F, 0xA8, + 0xA5, 0x98, 0x8D, 0x7E, 0x74, 0x77, 0x83, 0x8A, 0x7F, 0x78, 0x7B, 0x69, 0x4C, 0x39, 0x29, 0x25, + 0x3D, 0x5E, 0x73, 0x8C, 0xA9, 0xAB, 0x93, 0x85, 0x7C, 0x5D, 0x4B, 0x60, 0x73, 0x71, 0x75, 0x8F, + 0x98, 0x7F, 0x7E, 0x91, 0x7F, 0x62, 0x62, 0x74, 0x69, 0x4D, 0x56, 0x55, 0x34, 0x3A, 0x58, 0x68, + 0x7D, 0x9B, 0xAF, 0xB0, 0xAD, 0xAE, 0x92, 0x6F, 0x65, 0x50, 0x43, 0x5D, 0x73, 0x83, 0xA6, 0xBB, + 0xB5, 0xA6, 0x9B, 0x81, 0x59, 0x54, 0x5F, 0x59, 0x64, 0x7D, 0x8B, 0x8E, 0x8F, 0x8C, 0x7A, 0x69, + 0x71, 0x81, 0x94, 0xAF, 0xC3, 0xD0, 0xCC, 0xB9, 0xA9, 0x91, 0x70, 0x69, 0x7D, 0x8D, 0x92, 0x96, + 0x9F, 0xA4, 0x90, 0x73, 0x61, 0x4D, 0x42, 0x4D, 0x66, 0x84, 0x99, 0xAA, 0xB8, 0xA9, 0x8B, 0x7C, + 0x70, 0x63, 0x6D, 0x80, 0x88, 0x8E, 0x93, 0x9B, 0x95, 0x79, 0x6D, 0x70, 0x69, 0x60, 0x61, 0x72, + 0x7B, 0x69, 0x5D, 0x5E, 0x49, 0x34, 0x41, 0x5F, 0x7A, 0x8E, 0x9B, 0xA9, 0xB0, 0xA5, 0x90, 0x77, + 0x5E, 0x44, 0x39, 0x51, 0x6F, 0x83, 0xA1, 0xBF, 0xC1, 0xAB, 0x99, 0x83, 0x57, 0x3D, 0x41, 0x48, + 0x5B, 0x73, 0x86, 0x8F, 0x85, 0x81, 0x7A, 0x61, 0x5E, 0x79, 0x91, 0x9D, 0xAA, 0xC2, 0xBF, 0x99, + 0x95, 0xA0, 0x7E, 0x6A, 0x89, 0x98, 0x8A, 0x8E, 0xA5, 0x9F, 0x81, 0x7D, 0x75, 0x59, 0x63, 0x7E, + 0x7F, 0x84, 0xA4, 0xB3, 0x9D, 0x91, 0x9D, 0x97, 0x83, 0x86, 0x99, 0x95, 0x88, 0x90, 0x9D, 0x99, + 0x8B, 0x83, 0x85, 0x79, 0x6D, 0x6F, 0x6E, 0x68, 0x63, 0x64, 0x62, 0x52, 0x4D, 0x59, 0x62, 0x74, + 0x8F, 0x99, 0x95, 0x99, 0xA5, 0x97, 0x77, 0x66, 0x4E, 0x2C, 0x38, 0x5D, 0x67, 0x79, 0xA4, 0xB4, + 0x96, 0x82, 0x88, 0x65, 0x33, 0x36, 0x37, 0x27, 0x39, 0x57, 0x65, 0x6A, 0x77, 0x7E, 0x69, 0x5D, + 0x6E, 0x79, 0x81, 0x94, 0xAB, 0xB8, 0xA5, 0x8B, 0x8B, 0x7C, 0x59, 0x60, 0x7F, 0x77, 0x68, 0x86, + 0xA1, 0x86, 0x70, 0x81, 0x74, 0x52, 0x5B, 0x73, 0x77, 0x7E, 0x9B, 0xAD, 0xA2, 0x9F, 0xA7, 0x9B, + 0x8E, 0x95, 0xA1, 0x9F, 0x92, 0x97, 0xA8, 0xA3, 0x9C, 0xB2, 0xBA, 0x9E, 0x89, 0x8E, 0x8D, 0x74, + 0x68, 0x79, 0x79, 0x64, 0x61, 0x68, 0x6A, 0x76, 0x89, 0x97, 0xA5, 0xB4, 0xBB, 0xB0, 0x9E, 0x92, + 0x7F, 0x67, 0x6D, 0x7E, 0x7E, 0x87, 0x9E, 0xAD, 0xAA, 0x9A, 0x96, 0x84, 0x59, 0x48, 0x48, 0x39, + 0x35, 0x4B, 0x60, 0x62, 0x68, 0x82, 0x82, 0x6A, 0x6B, 0x74, 0x70, 0x74, 0x87, 0x98, 0x9F, 0xA1, + 0x95, 0x79, 0x69, 0x60, 0x44, 0x3D, 0x57, 0x6A, 0x6E, 0x79, 0x91, 0x97, 0x7D, 0x77, 0x79, 0x5C, + 0x46, 0x55, 0x6C, 0x7B, 0x8E, 0xA8, 0xAE, 0xA0, 0x9C, 0x97, 0x7D, 0x67, 0x70, 0x83, 0x88, 0x8B, + 0x9E, 0xB4, 0xAC, 0x99, 0x9C, 0x8F, 0x6A, 0x64, 0x71, 0x69, 0x5F, 0x6D, 0x7B, 0x78, 0x7E, 0x8C, + 0x83, 0x7B, 0x91, 0xA1, 0x9D, 0xA5, 0xB2, 0xBA, 0xB8, 0xA7, 0x9A, 0x93, 0x7A, 0x5C, 0x5A, 0x67, + 0x67, 0x75, 0xA2, 0xAD, 0x95, 0x96, 0x94, 0x6D, 0x50, 0x51, 0x47, 0x3D, 0x57, 0x73, 0x6C, 0x71, + 0x8C, 0x86, 0x6D, 0x6B, 0x67, 0x5A, 0x65, 0x7F, 0x90, 0x9B, 0xA6, 0xA3, 0x8E, 0x80, 0x71, 0x4F, + 0x42, 0x53, 0x58, 0x56, 0x5B, 0x62, 0x60, 0x5B, 0x5E, 0x5E, 0x58, 0x5C, 0x61, 0x64, 0x71, 0x7F, + 0x8E, 0x9E, 0x9E, 0x93, 0x95, 0x97, 0x84, 0x7A, 0x93, 0xA1, 0x8C, 0x92, 0xAD, 0x97, 0x72, 0x80, + 0x8D, 0x61, 0x46, 0x63, 0x64, 0x3F, 0x4D, 0x79, 0x78, 0x6A, 0x80, 0x90, 0x83, 0x8A, 0xA4, 0xA2, + 0x97, 0xA9, 0xBC, 0xB5, 0xB1, 0xBB, 0xB4, 0xA0, 0x99, 0x9A, 0x92, 0x89, 0x9C, 0xB7, 0xB6, 0xAF, + 0xB4, 0xAF, 0x98, 0x82, 0x79, 0x6B, 0x59, 0x58, 0x5C, 0x56, 0x5F, 0x76, 0x85, 0x90, 0x99, 0x97, + 0x93, 0x99, 0xA0, 0x96, 0x94, 0xA9, 0xA7, 0x8E, 0x91, 0x99, 0x7F, 0x6C, 0x7D, 0x7A, 0x51, 0x47, + 0x5C, 0x4D, 0x37, 0x4B, 0x5A, 0x44, 0x3D, 0x56, 0x5B, 0x53, 0x6A, 0x87, 0x89, 0x8A, 0x90, 0x87, + 0x82, 0x8D, 0x88, 0x78, 0x83, 0x90, 0x77, 0x6C, 0x8B, 0x8A, 0x6A, 0x7A, 0x99, 0x7A, 0x58, 0x6C, + 0x6C, 0x42, 0x42, 0x60, 0x52, 0x3C, 0x51, 0x63, 0x5C, 0x63, 0x7B, 0x87, 0x8E, 0x9A, 0xA8, 0xB8, + 0xB8, 0xAC, 0xB0, 0xB7, 0xA1, 0x8A, 0x8C, 0x86, 0x73, 0x7D, 0x97, 0x97, 0x91, 0x9A, 0x94, 0x7C, + 0x6D, 0x6A, 0x60, 0x56, 0x5B, 0x69, 0x70, 0x79, 0x90, 0xA1, 0x9F, 0x9E, 0xA2, 0x9F, 0xA1, 0xAE, + 0xAC, 0xA6, 0xB5, 0xB8, 0x9D, 0x90, 0x93, 0x76, 0x55, 0x5A, 0x5F, 0x4E, 0x51, 0x67, 0x66, 0x5E, + 0x6A, 0x71, 0x63, 0x58, 0x5A, 0x5C, 0x5B, 0x61, 0x72, 0x85, 0x94, 0x9E, 0x9F, 0x9A, 0x9E, 0xA2, + 0x91, 0x85, 0x95, 0x92, 0x70, 0x68, 0x74, 0x5B, 0x42, 0x56, 0x65, 0x50, 0x51, 0x68, 0x61, 0x4D, + 0x59, 0x6A, 0x5A, 0x4B, 0x57, 0x65, 0x60, 0x64, 0x7C, 0x92, 0x9E, 0xAE, 0xBE, 0xC0, 0xC1, 0xC3, + 0xB4, 0xA4, 0xA3, 0x96, 0x7A, 0x6D, 0x67, 0x5C, 0x63, 0x79, 0x81, 0x86, 0x97, 0x9E, 0x93, 0x8D, + 0x8D, 0x82, 0x73, 0x6F, 0x74, 0x77, 0x78, 0x86, 0x9E, 0xAA, 0xAF, 0xBA, 0xB7, 0xAA, 0xB7, 0xCA, + 0xBC, 0xB4, 0xCE, 0xCA, 0xA3, 0x9D, 0x9F, 0x7A, 0x63, 0x73, 0x6E, 0x53, 0x52, 0x58, 0x48, 0x40, + 0x52, 0x5C, 0x56, 0x58, 0x65, 0x65, 0x5E, 0x6C, 0x8C, 0x9B, 0xA1, 0xBA, 0xC9, 0xB3, 0xA8, 0xB4, + 0x9D, 0x74, 0x73, 0x72, 0x54, 0x4C, 0x59, 0x4C, 0x40, 0x54, 0x63, 0x62, 0x67, 0x6D, 0x68, 0x63, + 0x5E, 0x53, 0x46, 0x3F, 0x3E, 0x40, 0x45, 0x55, 0x69, 0x72, 0x77, 0x88, 0x94, 0x8D, 0x93, 0xA6, + 0xA3, 0x9B, 0xA8, 0xA5, 0x89, 0x7D, 0x7C, 0x6C, 0x5F, 0x5F, 0x62, 0x65, 0x67, 0x68, 0x70, 0x76, + 0x74, 0x75, 0x77, 0x6F, 0x6C, 0x71, 0x70, 0x72, 0x82, 0x8F, 0x93, 0xA1, 0xB5, 0xB1, 0xA7, 0xB8, + 0xCB, 0xC4, 0xBE, 0xCD, 0xD8, 0xCA, 0xB7, 0xAE, 0x9C, 0x77, 0x5E, 0x58, 0x46, 0x37, 0x42, 0x4C, + 0x4C, 0x61, 0x7A, 0x7B, 0x7A, 0x89, 0x8F, 0x84, 0x7F, 0x82, 0x83, 0x88, 0x9A, 0xAC, 0xB3, 0xBB, + 0xCB, 0xD3, 0xC8, 0xB6, 0xAD, 0xA1, 0x82, 0x6A, 0x5E, 0x43, 0x2A, 0x2E, 0x31, 0x2B, 0x3E, 0x5C, + 0x66, 0x6F, 0x78, 0x72, 0x6C, 0x6D, 0x64, 0x5A, 0x5B, 0x58, 0x50, 0x54, 0x60, 0x69, 0x78, 0x89, + 0x94, 0xAA, 0xC3, 0xC4, 0xB8, 0xBB, 0xB4, 0x99, 0x81, 0x6F, 0x59, 0x4B, 0x48, 0x47, 0x4C, 0x56, + 0x63, 0x71, 0x78, 0x7B, 0x81, 0x79, 0x6C, 0x72, 0x77, 0x6B, 0x69, 0x7A, 0x83, 0x87, 0x96, 0xAA, + 0xB5, 0xB9, 0xC6, 0xD8, 0xE3, 0xE3, 0xE1, 0xDE, 0xD1, 0xB4, 0x95, 0x7D, 0x64, 0x4A, 0x3B, 0x39, + 0x41, 0x4D, 0x57, 0x65, 0x7A, 0x86, 0x86, 0x86, 0x88, 0x89, 0x88, 0x82, 0x7F, 0x83, 0x84, 0x8E, + 0xA1, 0xB1, 0xBD, 0xCA, 0xD0, 0xCF, 0xC7, 0xB2, 0x9B, 0x8A, 0x73, 0x57, 0x3F, 0x2C, 0x24, 0x27, + 0x2C, 0x36, 0x4A, 0x60, 0x6D, 0x76, 0x80, 0x81, 0x74, 0x6C, 0x67, 0x54, 0x40, 0x3D, 0x3C, 0x38, + 0x41, 0x55, 0x66, 0x74, 0x84, 0x96, 0xA7, 0xAF, 0xAF, 0xA9, 0xA1, 0x94, 0x7D, 0x64, 0x5A, 0x55, + 0x4E, 0x4E, 0x55, 0x5E, 0x68, 0x6E, 0x75, 0x81, 0x84, 0x80, 0x7F, 0x76, 0x66, 0x60, 0x5F, 0x5D, + 0x64, 0x72, 0x7A, 0x84, 0x97, 0xAA, 0xB4, 0xBB, 0xCE, 0xE0, 0xDC, 0xD3, 0xD7, 0xD5, 0xC0, 0xAA, + 0x99, 0x84, 0x6A, 0x54, 0x47, 0x46, 0x4C, 0x50, 0x58, 0x6E, 0x7E, 0x7B, 0x7F, 0x92, 0x95, 0x8B, + 0x8D, 0x94, 0x91, 0x8E, 0x92, 0xA0, 0xAD, 0xB2, 0xBC, 0xC9, 0xC7, 0xC3, 0xC8, 0xBF, 0xAE, 0xA3, + 0x8E, 0x6F, 0x58, 0x46, 0x37, 0x2D, 0x2B, 0x31, 0x3F, 0x51, 0x64, 0x75, 0x7D, 0x7D, 0x7B, 0x78, + 0x70, 0x61, 0x56, 0x54, 0x52, 0x50, 0x52, 0x5D, 0x6E, 0x7B, 0x85, 0x99, 0xAC, 0xB4, 0xBD, 0xC5, + 0xBB, 0xAC, 0xA1, 0x90, 0x7B, 0x68, 0x58, 0x4D, 0x44, 0x3C, 0x41, 0x4E, 0x58, 0x62, 0x6A, 0x6C, + 0x68, 0x61, 0x5E, 0x62, 0x63, 0x61, 0x6A, 0x78, 0x80, 0x8E, 0xA1, 0xB3, 0xC1, 0xCC, 0xD6, 0xDE, + 0xDF, 0xDB, 0xCF, 0xBD, 0xAC, 0x9B, 0x80, 0x67, 0x58, 0x4E, 0x42, 0x3C, 0x44, 0x52, 0x5A, 0x60, + 0x6D, 0x76, 0x74, 0x72, 0x74, 0x79, 0x7D, 0x7A, 0x7D, 0x8A, 0x91, 0x98, 0xAB, 0xBA, 0xC1, 0xCB, + 0xD0, 0xCD, 0xC9, 0xC2, 0xB5, 0xA5, 0x90, 0x7C, 0x66, 0x4B, 0x36, 0x2F, 0x2A, 0x24, 0x2A, 0x39, + 0x46, 0x4C, 0x55, 0x63, 0x6B, 0x68, 0x64, 0x63, 0x62, 0x5F, 0x5C, 0x63, 0x70, 0x76, 0x7B, 0x8A, + 0x99, 0xA5, 0xB3, 0xBB, 0xB9, 0xB7, 0xB7, 0xB0, 0x9D, 0x8C, 0x86, 0x77, 0x5E, 0x4C, 0x3F, 0x30, + 0x29, 0x27, 0x26, 0x32, 0x45, 0x53, 0x63, 0x76, 0x84, 0x8D, 0x93, 0x98, 0xA2, 0xA7, 0xA0, 0xA2, + 0xA9, 0xA4, 0xA1, 0xB0, 0xBF, 0xBF, 0xC0, 0xC5, 0xC2, 0xB6, 0xAC, 0xA0, 0x8C, 0x77, 0x64, 0x56, + 0x4B, 0x40, 0x3F, 0x49, 0x4E, 0x54, 0x6B, 0x81, 0x8B, 0x9C, 0xAD, 0xB0, 0xB1, 0xB2, 0xAD, 0xA6, + 0x9F, 0x96, 0x90, 0x8A, 0x85, 0x89, 0x95, 0xA1, 0xA9, 0xAE, 0xB3, 0xB2, 0xA8, 0x9C, 0x92, 0x89, + 0x7C, 0x6C, 0x5D, 0x54, 0x50, 0x4B, 0x47, 0x48, 0x51, 0x5B, 0x5E, 0x60, 0x66, 0x6A, 0x65, 0x62, + 0x62, 0x5E, 0x5B, 0x60, 0x66, 0x6B, 0x71, 0x7A, 0x84, 0x90, 0xA2, 0xB2, 0xB8, 0xBC, 0xC1, 0xBB, + 0xA7, 0x95, 0x89, 0x81, 0x77, 0x69, 0x64, 0x65, 0x5E, 0x4D, 0x3D, 0x39, 0x37, 0x2F, 0x2C, 0x3C, + 0x4D, 0x4D, 0x50, 0x64, 0x79, 0x85, 0x89, 0x93, 0xA3, 0xAA, 0xA3, 0x9E, 0xA3, 0xA9, 0xA9, 0xA9, + 0xAC, 0xB0, 0xB0, 0xAD, 0xAA, 0xAB, 0xA8, 0x9B, 0x8D, 0x86, 0x7D, 0x6D, 0x5E, 0x55, 0x4F, 0x48, + 0x41, 0x41, 0x4B, 0x53, 0x5A, 0x6B, 0x7A, 0x82, 0x8C, 0x97, 0x98, 0x95, 0x93, 0x91, 0x90, 0x90, + 0x8D, 0x8E, 0x93, 0x98, 0x9F, 0xA6, 0xAA, 0xAC, 0xB1, 0xB2, 0xA8, 0x96, 0x86, 0x7B, 0x75, 0x73, + 0x6F, 0x69, 0x66, 0x64, 0x5B, 0x4C, 0x42, 0x40, 0x3D, 0x35, 0x30, 0x35, 0x3D, 0x46, 0x53, 0x62, + 0x72, 0x82, 0x91, 0x9B, 0xA2, 0xAB, 0xB3, 0xB5, 0xB3, 0xB9, 0xC4, 0xC6, 0xC2, 0xBA, 0xAD, 0x9D, + 0x8E, 0x7D, 0x6F, 0x6C, 0x6B, 0x60, 0x51, 0x4B, 0x45, 0x3B, 0x32, 0x2E, 0x32, 0x3E, 0x4E, 0x5E, + 0x70, 0x82, 0x90, 0x9C, 0xA0, 0x9F, 0x9B, 0x98, 0x96, 0x94, 0x97, 0x9D, 0xA5, 0xAD, 0xB5, 0xBE, + 0xC6, 0xCC, 0xCE, 0xCE, 0xC7, 0xB6, 0xA4, 0x94, 0x85, 0x79, 0x76, 0x75, 0x72, 0x6D, 0x64, 0x5A, + 0x52, 0x4C, 0x46, 0x43, 0x47, 0x4C, 0x4E, 0x53, 0x5E, 0x69, 0x71, 0x79, 0x87, 0x96, 0x9D, 0xA3, + 0xAB, 0xB2, 0xB6, 0xB8, 0xBE, 0xC4, 0xC4, 0xC0, 0xB7, 0xA9, 0x9C, 0x8C, 0x7A, 0x67, 0x5F, 0x61, + 0x61, 0x5F, 0x5A, 0x54, 0x46, 0x31, 0x20, 0x19, 0x18, 0x16, 0x1B, 0x2C, 0x40, 0x4F, 0x61, 0x76, + 0x89, 0x97, 0xA1, 0xAB, 0xB1, 0xB3, 0xB1, 0xB1, 0xB3, 0xAE, 0xAB, 0xAF, 0xAF, 0xAB, 0xA5, 0x9C, + 0x8D, 0x7C, 0x6E, 0x62, 0x5C, 0x5E, 0x61, 0x64, 0x6A, 0x6B, 0x66, 0x5C, 0x4C, 0x3E, 0x37, 0x36, + 0x3B, 0x4C, 0x5F, 0x6B, 0x75, 0x82, 0x8C, 0x8F, 0x93, 0x9B, 0xA4, 0xA8, 0xAA, 0xB0, 0xB7, 0xBB, + 0xC0, 0xC6, 0xC9, 0xC7, 0xBE, 0xB5, 0xAB, 0x9C, 0x94, 0x8E, 0x83, 0x7D, 0x7E, 0x7D, 0x73, 0x6A, + 0x62, 0x56, 0x40, 0x29, 0x1C, 0x16, 0x19, 0x25, 0x3A, 0x4F, 0x60, 0x6F, 0x7D, 0x89, 0x92, 0x9F, + 0xAD, 0xB5, 0xBE, 0xC9, 0xCD, 0xCB, 0xCE, 0xD0, 0xCF, 0xC7, 0xBC, 0xAE, 0x98, 0x7E, 0x67, 0x59, + 0x4E, 0x46, 0x47, 0x4D, 0x4F, 0x47, 0x41, 0x40, 0x3B, 0x31, 0x31, 0x3B, 0x46, 0x53, 0x63, 0x72, + 0x7F, 0x89, 0x8E, 0x95, 0x98, 0x9A, 0xA0, 0xA3, 0xAB, 0xB6, 0xBC, 0xC0, 0xC3, 0xC2, 0xBD, 0xB0, + 0xA5, 0x99, 0x8D, 0x84, 0x7C, 0x7C, 0x80, 0x81, 0x81, 0x82, 0x81, 0x78, 0x6E, 0x67, 0x58, 0x4A, + 0x45, 0x44, 0x47, 0x4F, 0x58, 0x62, 0x6C, 0x72, 0x79, 0x80, 0x84, 0x85, 0x8E, 0x9B, 0xA8, 0xB3, + 0xBA, 0xC2, 0xC4, 0xC1, 0xB9, 0xB2, 0xAC, 0xA5, 0xA3, 0xA3, 0xA2, 0x9E, 0x97, 0x8D, 0x83, 0x7E, + 0x6F, 0x60, 0x54, 0x4E, 0x4E, 0x4A, 0x48, 0x4A, 0x4E, 0x4E, 0x44, 0x40, 0x45, 0x46, 0x47, 0x4E, + 0x58, 0x62, 0x67, 0x6C, 0x76, 0x82, 0x8A, 0x95, 0xA1, 0xA8, 0xAE, 0xB5, 0xBA, 0xB7, 0xB5, 0xB5, + 0xB0, 0xA7, 0xA0, 0x98, 0x93, 0x8E, 0x89, 0x84, 0x7D, 0x73, 0x64, 0x52, 0x3F, 0x31, 0x2E, 0x2F, + 0x30, 0x3B, 0x48, 0x4B, 0x47, 0x43, 0x40, 0x40, 0x4A, 0x5C, 0x76, 0x8A, 0x95, 0x9E, 0xA2, 0xA3, + 0x9F, 0x9F, 0xA7, 0xB4, 0xC1, 0xC9, 0xCE, 0xCE, 0xCD, 0xC3, 0xB0, 0xA4, 0xA0, 0x9B, 0x95, 0x94, + 0x92, 0x89, 0x79, 0x69, 0x60, 0x5B, 0x5B, 0x63, 0x6F, 0x6E, 0x66, 0x5F, 0x54, 0x46, 0x3F, 0x45, + 0x53, 0x62, 0x71, 0x7A, 0x7E, 0x7E, 0x78, 0x79, 0x86, 0x99, 0xAD, 0xBB, 0xC8, 0xD1, 0xCF, 0xC7, + 0xB9, 0xAE, 0xA7, 0x9F, 0x9D, 0xA3, 0xA9, 0xA5, 0x9B, 0x90, 0x81, 0x72, 0x68, 0x64, 0x60, 0x5F, + 0x5B, 0x56, 0x4D, 0x3F, 0x35, 0x2E, 0x2C, 0x32, 0x3D, 0x4A, 0x55, 0x61, 0x6A, 0x71, 0x78, 0x7D, + 0x84, 0x92, 0xA0, 0xAB, 0xB5, 0xB9, 0xBA, 0xB8, 0xB6, 0xB3, 0xB1, 0xB0, 0xB2, 0xB3, 0xB2, 0xAB, + 0x9E, 0x93, 0x84, 0x79, 0x73, 0x6F, 0x68, 0x60, 0x5E, 0x55, 0x47, 0x41, 0x40, 0x3C, 0x34, 0x31, + 0x38, 0x37, 0x2F, 0x32, 0x3D, 0x4E, 0x61, 0x75, 0x89, 0x93, 0x9A, 0xA3, 0xAA, 0xB2, 0xBD, 0xC8, + 0xD2, 0xDB, 0xDF, 0xDD, 0xD4, 0xCD, 0xC9, 0xC0, 0xB3, 0xA7, 0x9B, 0x8F, 0x82, 0x77, 0x6F, 0x65, + 0x57, 0x4B, 0x41, 0x37, 0x31, 0x35, 0x3B, 0x3B, 0x3A, 0x3C, 0x3E, 0x3D, 0x3A, 0x41, 0x4F, 0x5C, + 0x68, 0x72, 0x7E, 0x89, 0x94, 0xA1, 0xB0, 0xC2, 0xCE, 0xD1, 0xD0, 0xCC, 0xC5, 0xB7, 0xAB, 0xA7, + 0xA6, 0xA1, 0x99, 0x92, 0x89, 0x7E, 0x6E, 0x64, 0x61, 0x5F, 0x5C, 0x5D, 0x60, 0x55, 0x49, 0x3F, + 0x3B, 0x42, 0x48, 0x49, 0x4C, 0x56, 0x59, 0x54, 0x54, 0x5B, 0x64, 0x6F, 0x7D, 0x8A, 0x96, 0x9E, + 0xA6, 0xB0, 0xBC, 0xC3, 0xC9, 0xCB, 0xC7, 0xC8, 0xC5, 0xBB, 0xB5, 0xB4, 0xAC, 0xA0, 0x99, 0x8E, + 0x84, 0x7A, 0x6B, 0x63, 0x63, 0x5C, 0x51, 0x50, 0x51, 0x48, 0x3D, 0x39, 0x3D, 0x43, 0x45, 0x45, + 0x4F, 0x60, 0x67, 0x6A, 0x71, 0x82, 0x92, 0x98, 0x9F, 0xAE, 0xBB, 0xBF, 0xC0, 0xC2, 0xC8, 0xCE, + 0xC9, 0xC4, 0xC7, 0xCC, 0xC7, 0xB9, 0xAA, 0xA0, 0x98, 0x8E, 0x84, 0x7E, 0x78, 0x71, 0x62, 0x53, + 0x4B, 0x47, 0x45, 0x40, 0x42, 0x43, 0x3D, 0x3D, 0x41, 0x48, 0x55, 0x5B, 0x59, 0x60, 0x6B, 0x69, + 0x61, 0x6A, 0x7D, 0x83, 0x87, 0x94, 0xA7, 0xB2, 0xAD, 0xAE, 0xC0, 0xCC, 0xC9, 0xC6, 0xC7, 0xC4, + 0xB8, 0xAE, 0xA6, 0x9C, 0x97, 0x8E, 0x7C, 0x6B, 0x60, 0x57, 0x46, 0x3C, 0x40, 0x42, 0x3D, 0x3C, + 0x3D, 0x3A, 0x39, 0x3A, 0x3A, 0x3C, 0x4C, 0x57, 0x59, 0x63, 0x6F, 0x70, 0x6A, 0x71, 0x86, 0x96, + 0x9F, 0xAD, 0xBD, 0xBF, 0xB7, 0xB6, 0xC2, 0xCD, 0xCF, 0xCC, 0xC9, 0xC5, 0xB3, 0xA1, 0x9C, 0x99, + 0x98, 0x92, 0x87, 0x79, 0x6A, 0x5B, 0x4D, 0x41, 0x3E, 0x47, 0x4E, 0x42, 0x36, 0x37, 0x37, 0x35, + 0x3B, 0x48, 0x56, 0x66, 0x71, 0x78, 0x7D, 0x7F, 0x7F, 0x83, 0x8F, 0x9F, 0xAB, 0xAC, 0xA7, 0xAD, + 0xB8, 0xB7, 0xB8, 0xC4, 0xCB, 0xC7, 0xC0, 0xBF, 0xBB, 0xAD, 0xA0, 0x94, 0x8F, 0x8D, 0x87, 0x75, + 0x65, 0x63, 0x57, 0x3F, 0x30, 0x35, 0x43, 0x46, 0x40, 0x42, 0x4C, 0x4B, 0x44, 0x47, 0x52, 0x60, + 0x72, 0x7D, 0x7A, 0x7C, 0x85, 0x86, 0x89, 0x95, 0xA4, 0xB0, 0xB2, 0xAA, 0xAD, 0xBA, 0xB8, 0xB3, + 0xC2, 0xCD, 0xC8, 0xC6, 0xBC, 0xA9, 0x9F, 0x92, 0x80, 0x7D, 0x7F, 0x73, 0x67, 0x61, 0x55, 0x47, + 0x42, 0x47, 0x4E, 0x56, 0x58, 0x56, 0x55, 0x55, 0x57, 0x5D, 0x63, 0x65, 0x6C, 0x73, 0x79, 0x7B, + 0x75, 0x7B, 0x8C, 0x91, 0x8D, 0x98, 0xA7, 0xA4, 0xA3, 0xA5, 0xA7, 0xA9, 0xAC, 0xB0, 0xB6, 0xBA, + 0xB5, 0xAE, 0xA9, 0xA5, 0xA3, 0x9A, 0x8F, 0x8B, 0x88, 0x7E, 0x6E, 0x60, 0x51, 0x44, 0x3D, 0x3B, + 0x42, 0x45, 0x44, 0x48, 0x49, 0x49, 0x4A, 0x4B, 0x4E, 0x56, 0x67, 0x75, 0x74, 0x70, 0x6D, 0x6C, + 0x70, 0x7C, 0x8D, 0x99, 0xA1, 0xA4, 0xA9, 0xB2, 0xB2, 0xA9, 0xAF, 0xBC, 0xBA, 0xAE, 0xAC, 0xB3, + 0xA6, 0x8C, 0x88, 0x88, 0x7F, 0x76, 0x6A, 0x63, 0x5E, 0x55, 0x48, 0x3A, 0x39, 0x41, 0x48, 0x48, + 0x46, 0x43, 0x3C, 0x41, 0x52, 0x57, 0x59, 0x6D, 0x85, 0x87, 0x7C, 0x84, 0x97, 0x91, 0x89, 0x9E, + 0xB9, 0xBC, 0xB4, 0xB9, 0xC1, 0xBA, 0xB6, 0xBB, 0xBB, 0xBC, 0xBB, 0xBA, 0xB8, 0xB0, 0xA1, 0x91, + 0x8A, 0x85, 0x7A, 0x6D, 0x66, 0x66, 0x59, 0x47, 0x44, 0x42, 0x3E, 0x43, 0x46, 0x48, 0x4B, 0x47, + 0x51, 0x5F, 0x5D, 0x5C, 0x73, 0x92, 0x8D, 0x80, 0x8B, 0x90, 0x84, 0x89, 0x9E, 0xAC, 0xBD, 0xC6, + 0xC6, 0xC3, 0xAF, 0xA4, 0xB0, 0xC1, 0xC7, 0xCB, 0xC5, 0xBA, 0xAE, 0x8F, 0x71, 0x66, 0x62, 0x66, + 0x74, 0x80, 0x6F, 0x50, 0x39, 0x24, 0x24, 0x41, 0x56, 0x56, 0x53, 0x4A, 0x41, 0x3E, 0x3C, 0x3D, + 0x49, 0x72, 0xA2, 0xAB, 0x8F, 0x6C, 0x63, 0x71, 0x83, 0x96, 0xB4, 0xD2, 0xDA, 0xBD, 0x98, 0x99, + 0xAD, 0xB9, 0xBD, 0xC2, 0xCE, 0xC6, 0x9B, 0x7D, 0x7E, 0x7D, 0x74, 0x7C, 0x85, 0x70, 0x55, 0x44, + 0x3A, 0x44, 0x55, 0x5E, 0x6D, 0x6F, 0x4B, 0x35, 0x44, 0x50, 0x57, 0x5D, 0x5C, 0x61, 0x78, 0x8B, + 0x72, 0x53, 0x60, 0x80, 0x91, 0x93, 0x9D, 0xC0, 0xD9, 0xBE, 0xA2, 0xAE, 0xB9, 0xB8, 0xB8, 0xB6, + 0xB2, 0xA6, 0x8B, 0x70, 0x6F, 0x74, 0x6A, 0x64, 0x6E, 0x69, 0x53, 0x51, 0x5D, 0x62, 0x65, 0x6A, + 0x72, 0x74, 0x5B, 0x47, 0x56, 0x69, 0x6C, 0x64, 0x5C, 0x5E, 0x73, 0x87, 0x6F, 0x4C, 0x5A, 0x80, + 0x83, 0x78, 0x95, 0xC6, 0xD4, 0xAB, 0x96, 0xAF, 0xAC, 0x97, 0x95, 0xA7, 0xB3, 0x9D, 0x76, 0x67, + 0x79, 0x7E, 0x69, 0x65, 0x78, 0x7B, 0x67, 0x62, 0x71, 0x7F, 0x78, 0x79, 0x90, 0x8D, 0x6C, 0x5B, + 0x63, 0x69, 0x64, 0x67, 0x71, 0x87, 0xA0, 0x94, 0x7A, 0x7B, 0x81, 0x73, 0x79, 0x9A, 0xBB, 0xD4, + 0xC3, 0xA1, 0xA3, 0xA3, 0x8A, 0x7E, 0x8E, 0x9F, 0x9B, 0x80, 0x6A, 0x68, 0x66, 0x60, 0x63, 0x7D, + 0x95, 0x8A, 0x7F, 0x81, 0x81, 0x7C, 0x77, 0x7E, 0x89, 0x85, 0x6F, 0x66, 0x6A, 0x65, 0x60, 0x63, + 0x7C, 0x9C, 0x9F, 0x86, 0x71, 0x74, 0x70, 0x6D, 0x84, 0xA6, 0xC0, 0xAF, 0x8D, 0x8C, 0x8D, 0x7C, + 0x71, 0x7A, 0x92, 0x9A, 0x82, 0x72, 0x7B, 0x77, 0x5F, 0x5E, 0x80, 0x92, 0x7D, 0x72, 0x7D, 0x71, + 0x60, 0x61, 0x5F, 0x69, 0x7B, 0x73, 0x5F, 0x5C, 0x54, 0x4B, 0x61, 0x86, 0x96, 0x89, 0x7F, 0x7B, + 0x66, 0x59, 0x6B, 0x90, 0xAD, 0xB2, 0xA5, 0x9E, 0x9A, 0x7D, 0x6E, 0x7B, 0x85, 0x92, 0x8F, 0x83, + 0x7E, 0x73, 0x64, 0x5C, 0x6C, 0x8C, 0x94, 0x80, 0x86, 0x98, 0x7B, 0x60, 0x69, 0x70, 0x6F, 0x74, + 0x7A, 0x73, 0x6A, 0x5B, 0x54, 0x73, 0x9B, 0x90, 0x78, 0x89, 0x83, 0x5C, 0x61, 0x80, 0x97, 0xAE, + 0xB0, 0x9C, 0x9F, 0xA6, 0x78, 0x5D, 0x80, 0x95, 0x87, 0x89, 0x9D, 0x96, 0x82, 0x6E, 0x5A, 0x6A, + 0x8A, 0x8D, 0x86, 0x93, 0x98, 0x79, 0x63, 0x60, 0x5E, 0x6A, 0x73, 0x73, 0x77, 0x71, 0x55, 0x56, + 0x7C, 0x8B, 0x78, 0x80, 0x9C, 0x84, 0x6A, 0x79, 0x85, 0x93, 0xA5, 0xA7, 0x9B, 0x9D, 0xA5, 0x85, + 0x68, 0x7F, 0x8C, 0x76, 0x7B, 0x98, 0x96, 0x87, 0x87, 0x7A, 0x6B, 0x78, 0x8C, 0x8B, 0x88, 0x9D, + 0x96, 0x6E, 0x69, 0x6E, 0x5E, 0x60, 0x6B, 0x66, 0x66, 0x81, 0x92, 0x80, 0x77, 0x81, 0x70, 0x60, + 0x7B, 0x93, 0x94, 0xA6, 0xC5, 0xB4, 0x8A, 0x93, 0x94, 0x71, 0x77, 0x8F, 0x84, 0x75, 0x89, 0x92, + 0x78, 0x73, 0x7E, 0x6F, 0x6A, 0x88, 0x91, 0x84, 0x88, 0x8E, 0x7A, 0x65, 0x6C, 0x6E, 0x5F, 0x6C, + 0x81, 0x77, 0x6B, 0x7C, 0x83, 0x6B, 0x76, 0x8A, 0x69, 0x5F, 0x80, 0x86, 0x7A, 0x8D, 0xA8, 0x99, + 0x8B, 0x97, 0x84, 0x6A, 0x78, 0x89, 0x83, 0x7B, 0x8D, 0x91, 0x6E, 0x6A, 0x77, 0x64, 0x63, 0x7D, + 0x8C, 0x80, 0x7E, 0x8B, 0x69, 0x52, 0x6D, 0x6B, 0x5A, 0x66, 0x79, 0x7A, 0x7A, 0x7E, 0x6A, 0x61, + 0x6E, 0x58, 0x52, 0x79, 0x8C, 0x8F, 0x9D, 0xAA, 0x9D, 0x82, 0x86, 0x79, 0x5A, 0x72, 0x98, 0x91, + 0x83, 0x93, 0xA1, 0x84, 0x70, 0x7D, 0x7A, 0x75, 0x85, 0x94, 0x99, 0x9B, 0x97, 0x7C, 0x5F, 0x66, + 0x6A, 0x5A, 0x5E, 0x76, 0x8E, 0x8E, 0x74, 0x76, 0x84, 0x68, 0x56, 0x6F, 0x83, 0x8E, 0xA0, 0xAF, + 0xAC, 0x9E, 0x9B, 0x88, 0x67, 0x6C, 0x8B, 0x91, 0x86, 0x94, 0xA8, 0x94, 0x71, 0x6A, 0x69, 0x63, + 0x74, 0x8D, 0x98, 0x9F, 0xA2, 0x94, 0x7D, 0x6D, 0x60, 0x52, 0x5C, 0x70, 0x84, 0x9C, 0x8F, 0x76, + 0x7F, 0x6C, 0x4B, 0x59, 0x6A, 0x72, 0x8D, 0xAC, 0xAC, 0x9D, 0xA9, 0x9F, 0x6D, 0x69, 0x7D, 0x79, + 0x7D, 0x8C, 0x9B, 0x9B, 0x8A, 0x7B, 0x69, 0x67, 0x78, 0x7F, 0x85, 0x94, 0xA2, 0x9F, 0x83, 0x71, + 0x6F, 0x5F, 0x57, 0x6B, 0x89, 0xA2, 0x9D, 0x85, 0x80, 0x77, 0x57, 0x51, 0x65, 0x76, 0x89, 0xA1, + 0xA8, 0x9D, 0xA0, 0x9D, 0x6D, 0x5F, 0x7D, 0x7C, 0x74, 0x89, 0xA3, 0x9E, 0x82, 0x7E, 0x7A, 0x66, + 0x70, 0x87, 0x8F, 0x90, 0x96, 0x97, 0x7B, 0x6C, 0x6E, 0x50, 0x45, 0x6C, 0x84, 0x77, 0x71, 0x87, + 0x80, 0x62, 0x63, 0x5D, 0x52, 0x6C, 0x8E, 0x9A, 0x96, 0xA0, 0xA8, 0x82, 0x67, 0x71, 0x62, 0x50, + 0x6D, 0x8D, 0x85, 0x82, 0x97, 0x88, 0x65, 0x68, 0x73, 0x6D, 0x73, 0x8C, 0x9D, 0x8D, 0x7B, 0x80, + 0x6D, 0x50, 0x60, 0x7B, 0x73, 0x64, 0x7C, 0x8B, 0x68, 0x5E, 0x6E, 0x59, 0x59, 0x8A, 0x9F, 0x96, + 0xA0, 0xAD, 0x95, 0x76, 0x75, 0x76, 0x69, 0x71, 0x8D, 0x9B, 0x94, 0x97, 0xA0, 0x8B, 0x76, 0x78, + 0x78, 0x77, 0x8A, 0x93, 0x89, 0x8F, 0x91, 0x7A, 0x6E, 0x79, 0x76, 0x60, 0x65, 0x75, 0x64, 0x67, + 0x7C, 0x69, 0x6A, 0x8F, 0x94, 0x88, 0x97, 0xAB, 0x93, 0x78, 0x86, 0x81, 0x63, 0x71, 0x93, 0x92, + 0x8B, 0xA1, 0x9E, 0x7E, 0x8A, 0x9B, 0x81, 0x7D, 0x98, 0x9A, 0x81, 0x83, 0x8E, 0x74, 0x6E, 0x88, + 0x7D, 0x6B, 0x78, 0x7E, 0x6B, 0x64, 0x72, 0x71, 0x6E, 0x85, 0x96, 0x8F, 0x8F, 0x9D, 0x95, 0x7F, + 0x83, 0x80, 0x69, 0x72, 0x8A, 0x8C, 0x8C, 0x96, 0x9C, 0x91, 0x88, 0x86, 0x7F, 0x7C, 0x7F, 0x80, + 0x81, 0x81, 0x80, 0x78, 0x6F, 0x79, 0x83, 0x77, 0x73, 0x7E, 0x6E, 0x55, 0x5F, 0x64, 0x58, 0x71, + 0x94, 0x93, 0x8F, 0x99, 0x91, 0x79, 0x76, 0x79, 0x65, 0x68, 0x89, 0x8C, 0x84, 0x92, 0x97, 0x8E, + 0x85, 0x80, 0x81, 0x7F, 0x7F, 0x7B, 0x74, 0x79, 0x76, 0x6D, 0x79, 0x85, 0x7D, 0x70, 0x73, 0x72, + 0x58, 0x51, 0x5D, 0x57, 0x5D, 0x82, 0x98, 0x8E, 0x94, 0xAC, 0x94, 0x6E, 0x77, 0x75, 0x5A, 0x66, + 0x88, 0x8A, 0x83, 0x97, 0xA1, 0x8A, 0x81, 0x86, 0x7D, 0x74, 0x7D, 0x88, 0x80, 0x79, 0x7E, 0x7F, + 0x7E, 0x76, 0x6E, 0x71, 0x75, 0x71, 0x64, 0x5D, 0x5D, 0x59, 0x6B, 0x8A, 0x93, 0x9B, 0xA5, 0xA0, + 0x8E, 0x7F, 0x82, 0x77, 0x61, 0x70, 0x81, 0x75, 0x7F, 0x9B, 0xA2, 0x97, 0x93, 0x97, 0x8A, 0x78, + 0x78, 0x70, 0x6A, 0x78, 0x7D, 0x84, 0x96, 0x91, 0x7D, 0x78, 0x78, 0x62, 0x4F, 0x58, 0x58, 0x5A, + 0x77, 0x8E, 0x98, 0xA8, 0xB4, 0xAA, 0x8C, 0x8A, 0x8E, 0x6B, 0x62, 0x7C, 0x82, 0x86, 0x9E, 0xB2, + 0xB0, 0xA4, 0xA2, 0x95, 0x7D, 0x73, 0x6E, 0x64, 0x63, 0x70, 0x82, 0x8C, 0x87, 0x83, 0x8D, 0x7F, + 0x60, 0x5C, 0x58, 0x4A, 0x5D, 0x7E, 0x8C, 0x8E, 0x9E, 0xA9, 0x92, 0x82, 0x8A, 0x77, 0x5F, 0x6E, + 0x80, 0x7B, 0x83, 0xA1, 0xAA, 0xA1, 0xA3, 0xA1, 0x94, 0x88, 0x7D, 0x70, 0x62, 0x61, 0x6E, 0x7B, + 0x79, 0x76, 0x83, 0x86, 0x69, 0x5E, 0x64, 0x51, 0x4F, 0x73, 0x82, 0x7F, 0x8F, 0xA1, 0x96, 0x7F, + 0x88, 0x8B, 0x67, 0x5F, 0x76, 0x76, 0x78, 0x91, 0xA1, 0x9D, 0x99, 0x9F, 0x98, 0x85, 0x7E, 0x7A, + 0x69, 0x5E, 0x68, 0x78, 0x7A, 0x6C, 0x71, 0x81, 0x6D, 0x59, 0x64, 0x5D, 0x4D, 0x60, 0x77, 0x77, + 0x7E, 0x94, 0x96, 0x84, 0x8B, 0x95, 0x7E, 0x6B, 0x75, 0x76, 0x69, 0x76, 0x93, 0x98, 0x99, 0xA2, + 0xA5, 0xA0, 0x93, 0x8A, 0x7C, 0x61, 0x5E, 0x75, 0x7A, 0x6B, 0x70, 0x8A, 0x7D, 0x5E, 0x67, 0x67, + 0x4F, 0x59, 0x72, 0x77, 0x7A, 0x8C, 0x98, 0x8D, 0x87, 0x97, 0x8F, 0x71, 0x77, 0x83, 0x73, 0x75, + 0x92, 0x9D, 0x96, 0x9C, 0xA9, 0xA1, 0x8E, 0x8D, 0x86, 0x6D, 0x64, 0x70, 0x73, 0x65, 0x6A, 0x83, + 0x7B, 0x63, 0x71, 0x74, 0x5C, 0x64, 0x7D, 0x76, 0x78, 0x96, 0x9F, 0x8D, 0x8B, 0x95, 0x8C, 0x78, + 0x7A, 0x83, 0x77, 0x75, 0x90, 0x9E, 0x99, 0xA1, 0xAE, 0xA8, 0x9B, 0x98, 0x92, 0x7E, 0x73, 0x7A, + 0x7E, 0x73, 0x6D, 0x7A, 0x7C, 0x66, 0x62, 0x6A, 0x5B, 0x56, 0x6E, 0x77, 0x72, 0x84, 0x9B, 0x96, + 0x8D, 0x9A, 0xA2, 0x8A, 0x7C, 0x8B, 0x87, 0x78, 0x85, 0x98, 0x97, 0x95, 0x9F, 0xA4, 0x96, 0x88, + 0x85, 0x75, 0x64, 0x6A, 0x70, 0x65, 0x61, 0x73, 0x79, 0x61, 0x5E, 0x6B, 0x5A, 0x55, 0x6E, 0x72, + 0x71, 0x83, 0x8B, 0x87, 0x89, 0x8E, 0x8B, 0x81, 0x7E, 0x83, 0x7F, 0x7E, 0x8A, 0x96, 0x96, 0x93, + 0x9D, 0xA4, 0x98, 0x8C, 0x8D, 0x87, 0x76, 0x6B, 0x6F, 0x6F, 0x61, 0x62, 0x74, 0x70, 0x60, 0x68, + 0x67, 0x54, 0x57, 0x65, 0x62, 0x65, 0x78, 0x7F, 0x7A, 0x7D, 0x89, 0x87, 0x79, 0x79, 0x80, 0x7A, + 0x7D, 0x93, 0xA1, 0xA0, 0xA1, 0xAD, 0xAC, 0x94, 0x8A, 0x87, 0x6C, 0x61, 0x76, 0x74, 0x60, 0x65, + 0x75, 0x67, 0x56, 0x63, 0x60, 0x49, 0x5C, 0x79, 0x74, 0x79, 0x8F, 0x8F, 0x85, 0x85, 0x8C, 0x8B, + 0x7E, 0x84, 0x8F, 0x84, 0x82, 0x91, 0x94, 0x94, 0x9F, 0xAB, 0xA8, 0xA3, 0xA1, 0x93, 0x7D, 0x6F, + 0x65, 0x60, 0x61, 0x5E, 0x63, 0x6F, 0x6C, 0x67, 0x71, 0x70, 0x5F, 0x63, 0x78, 0x7B, 0x7A, 0x8D, + 0x99, 0x93, 0x94, 0x9F, 0x98, 0x88, 0x8A, 0x8D, 0x80, 0x80, 0x90, 0x96, 0x95, 0x99, 0xA5, 0xA9, + 0x9D, 0x99, 0x9B, 0x8C, 0x7D, 0x81, 0x87, 0x84, 0x7C, 0x7C, 0x83, 0x7B, 0x6B, 0x64, 0x5E, 0x55, + 0x53, 0x5A, 0x5F, 0x61, 0x72, 0x80, 0x79, 0x81, 0x99, 0x95, 0x89, 0x95, 0xA1, 0x9B, 0x97, 0x9D, + 0xA3, 0x9E, 0x9D, 0x9C, 0x99, 0x9A, 0x93, 0x84, 0x79, 0x6E, 0x60, 0x5B, 0x61, 0x64, 0x67, 0x6B, + 0x66, 0x61, 0x65, 0x60, 0x53, 0x5B, 0x6A, 0x6B, 0x75, 0x84, 0x85, 0x84, 0x8F, 0x95, 0x8A, 0x8D, + 0x98, 0x91, 0x8C, 0x90, 0x8C, 0x8A, 0x8F, 0x8C, 0x8B, 0x90, 0x91, 0x8C, 0x83, 0x7A, 0x71, 0x69, + 0x66, 0x66, 0x70, 0x7C, 0x7A, 0x78, 0x7C, 0x6C, 0x58, 0x51, 0x48, 0x45, 0x51, 0x61, 0x6D, 0x7A, + 0x82, 0x88, 0x8B, 0x8B, 0x8A, 0x88, 0x87, 0x8C, 0x8F, 0x8B, 0x8E, 0x99, 0x9B, 0x96, 0x9E, 0xA7, + 0xA0, 0x92, 0x8A, 0x84, 0x72, 0x62, 0x64, 0x6E, 0x6C, 0x67, 0x72, 0x7B, 0x6C, 0x5C, 0x59, 0x4A, + 0x3F, 0x50, 0x54, 0x55, 0x6F, 0x84, 0x83, 0x8B, 0xA4, 0xAA, 0x9E, 0xA8, 0xB6, 0xA4, 0x98, 0x9F, + 0x95, 0x8B, 0x8D, 0x8B, 0x8E, 0x8D, 0x82, 0x81, 0x86, 0x7D, 0x69, 0x65, 0x64, 0x5B, 0x67, 0x75, + 0x67, 0x65, 0x79, 0x69, 0x4F, 0x58, 0x5C, 0x50, 0x5F, 0x7B, 0x84, 0x95, 0xAE, 0xB4, 0xB7, 0xBD, + 0xB3, 0xA2, 0x9C, 0x98, 0x8F, 0x83, 0x7D, 0x79, 0x7A, 0x7D, 0x78, 0x7F, 0x8F, 0x93, 0x93, 0x92, + 0x8F, 0x87, 0x86, 0x85, 0x83, 0x8B, 0x92, 0x8A, 0x81, 0x80, 0x77, 0x5B, 0x46, 0x41, 0x3C, 0x44, + 0x55, 0x66, 0x7A, 0x95, 0xA2, 0xA4, 0xAF, 0xB4, 0xAE, 0xA5, 0xA8, 0xA5, 0x9A, 0x9C, 0x98, 0x8E, + 0x88, 0x83, 0x80, 0x80, 0x7A, 0x76, 0x7E, 0x7D, 0x70, 0x68, 0x64, 0x5E, 0x59, 0x5A, 0x5B, 0x5F, + 0x64, 0x60, 0x60, 0x5F, 0x57, 0x5A, 0x66, 0x6F, 0x82, 0x9D, 0xA6, 0xAC, 0xC0, 0xC3, 0xB0, 0xA2, + 0xA0, 0x94, 0x83, 0x7C, 0x7C, 0x7C, 0x72, 0x6A, 0x6B, 0x6B, 0x66, 0x69, 0x71, 0x77, 0x7D, 0x80, + 0x82, 0x7F, 0x79, 0x72, 0x71, 0x76, 0x6B, 0x5E, 0x5C, 0x5A, 0x52, 0x44, 0x42, 0x4B, 0x56, 0x5C, + 0x6B, 0x8D, 0xA1, 0xA0, 0xA8, 0xB5, 0xB7, 0xAC, 0xAA, 0xA5, 0x9F, 0xA0, 0x96, 0x89, 0x88, 0x8A, + 0x7C, 0x6E, 0x73, 0x6E, 0x6C, 0x6B, 0x68, 0x6E, 0x71, 0x69, 0x60, 0x6D, 0x79, 0x70, 0x68, 0x6D, + 0x73, 0x6B, 0x5F, 0x5E, 0x66, 0x6B, 0x68, 0x70, 0x87, 0x94, 0x95, 0xA1, 0xB3, 0xB3, 0xAE, 0xB1, + 0xB1, 0xAB, 0x9F, 0x95, 0x92, 0x8E, 0x84, 0x79, 0x79, 0x76, 0x6E, 0x6D, 0x71, 0x77, 0x7D, 0x7E, + 0x7D, 0x82, 0x7F, 0x75, 0x78, 0x7D, 0x6F, 0x64, 0x6A, 0x64, 0x5B, 0x59, 0x54, 0x5A, 0x65, 0x6D, + 0x7C, 0x90, 0xA0, 0xAD, 0xB9, 0xC5, 0xC9, 0xC3, 0xB8, 0xAE, 0xA5, 0x9C, 0x8B, 0x7D, 0x82, 0x7D, + 0x6F, 0x72, 0x7A, 0x75, 0x6E, 0x79, 0x7C, 0x73, 0x72, 0x71, 0x6C, 0x6D, 0x7B, 0x82, 0x81, 0x82, + 0x7D, 0x78, 0x6E, 0x5E, 0x59, 0x54, 0x54, 0x5C, 0x69, 0x78, 0x88, 0x95, 0x98, 0xA5, 0xB3, 0xB0, + 0xB1, 0xB4, 0xB6, 0xB2, 0xB0, 0xA5, 0x98, 0x91, 0x83, 0x77, 0x6F, 0x6C, 0x66, 0x61, 0x66, 0x66, + 0x66, 0x6B, 0x6B, 0x6A, 0x71, 0x73, 0x62, 0x52, 0x53, 0x4F, 0x41, 0x3C, 0x46, 0x55, 0x61, 0x75, + 0x8F, 0x9F, 0xA5, 0xB1, 0xB8, 0xB8, 0xB7, 0xB1, 0xA5, 0x99, 0x95, 0x84, 0x71, 0x6F, 0x65, 0x56, + 0x4F, 0x56, 0x62, 0x68, 0x6E, 0x77, 0x82, 0x88, 0x8E, 0x92, 0x95, 0x92, 0x87, 0x78, 0x72, 0x73, + 0x5C, 0x46, 0x4B, 0x46, 0x3C, 0x43, 0x49, 0x54, 0x64, 0x6D, 0x75, 0x88, 0x99, 0x9C, 0xA2, 0xB0, + 0xBD, 0xBB, 0xB4, 0xB5, 0xBA, 0xB3, 0x9E, 0x9B, 0x9A, 0x90, 0x89, 0x84, 0x84, 0x81, 0x7E, 0x77, + 0x71, 0x70, 0x67, 0x5A, 0x50, 0x50, 0x56, 0x50, 0x45, 0x4C, 0x5B, 0x62, 0x5E, 0x62, 0x73, 0x7A, + 0x7C, 0x8B, 0xA8, 0xB3, 0xAF, 0xB8, 0xC4, 0xC5, 0xBF, 0xB4, 0xAB, 0xA7, 0x9B, 0x86, 0x7A, 0x7A, + 0x79, 0x70, 0x6A, 0x74, 0x7D, 0x7D, 0x81, 0x87, 0x95, 0x97, 0x8A, 0x87, 0x88, 0x7A, 0x67, 0x71, + 0x75, 0x5F, 0x63, 0x6D, 0x63, 0x5A, 0x5A, 0x5F, 0x61, 0x65, 0x6C, 0x7B, 0x91, 0x9D, 0x9F, 0xAB, + 0xB0, 0xB0, 0xB0, 0xA3, 0xA3, 0xA3, 0x91, 0x8D, 0x92, 0x8E, 0x83, 0x7D, 0x81, 0x7E, 0x7D, 0x7C, + 0x7B, 0x80, 0x78, 0x6E, 0x6F, 0x6A, 0x5E, 0x66, 0x68, 0x65, 0x68, 0x61, 0x6D, 0x6F, 0x5A, 0x54, + 0x53, 0x57, 0x4F, 0x52, 0x71, 0x82, 0x8F, 0x96, 0x9C, 0xB2, 0xBF, 0xBE, 0xB9, 0xBD, 0xC4, 0xB4, + 0xA1, 0x9E, 0x9A, 0x89, 0x7D, 0x7C, 0x79, 0x72, 0x68, 0x68, 0x6B, 0x67, 0x5C, 0x46, 0x3D, 0x40, + 0x45, 0x46, 0x44, 0x51, 0x5C, 0x56, 0x52, 0x52, 0x5A, 0x68, 0x6B, 0x72, 0x89, 0xA8, 0xB5, 0xB9, + 0xC5, 0xC7, 0xC3, 0xB2, 0x9F, 0x9D, 0x9A, 0x8B, 0x7F, 0x7F, 0x7F, 0x7E, 0x77, 0x71, 0x76, 0x7D, + 0x7C, 0x72, 0x70, 0x75, 0x74, 0x6D, 0x6C, 0x76, 0x71, 0x64, 0x69, 0x6A, 0x67, 0x62, 0x58, 0x59, + 0x54, 0x4F, 0x4E, 0x66, 0x7C, 0x78, 0x8F, 0xA4, 0x95, 0x8D, 0xA4, 0xB6, 0xB6, 0xB8, 0xB0, 0xAC, + 0xB2, 0xB1, 0xAA, 0xAD, 0xB7, 0x9C, 0x84, 0x93, 0x91, 0x7D, 0x70, 0x76, 0x6C, 0x46, 0x48, 0x4D, + 0x3E, 0x44, 0x45, 0x46, 0x4F, 0x59, 0x65, 0x6B, 0x73, 0x7C, 0x80, 0x8B, 0x95, 0x94, 0xA3, 0xB0, + 0xAB, 0xA9, 0xAA, 0xB4, 0xB8, 0xB5, 0xBC, 0xB2, 0xA8, 0xA9, 0x99, 0x93, 0x94, 0x86, 0x85, 0x88, + 0x80, 0x74, 0x76, 0x82, 0x6E, 0x61, 0x78, 0x72, 0x60, 0x63, 0x64, 0x6A, 0x65, 0x60, 0x64, 0x5F, + 0x62, 0x57, 0x52, 0x6C, 0x76, 0x76, 0x83, 0x94, 0x99, 0x9C, 0xAB, 0xB1, 0xA2, 0xA1, 0xA4, 0x90, + 0x8D, 0x97, 0x90, 0x8B, 0x83, 0x85, 0x87, 0x76, 0x7C, 0x7B, 0x71, 0x6D, 0x5C, 0x61, 0x6A, 0x68, + 0x6D, 0x72, 0x7E, 0x7F, 0x7A, 0x85, 0x7E, 0x6C, 0x6D, 0x65, 0x5F, 0x6C, 0x6E, 0x74, 0x80, 0x86, + 0x8C, 0x8C, 0x94, 0x92, 0x86, 0x8E, 0x86, 0x7A, 0x83, 0x80, 0x7C, 0x7A, 0x79, 0x7C, 0x70, 0x6C, + 0x71, 0x66, 0x64, 0x67, 0x60, 0x63, 0x64, 0x64, 0x6E, 0x72, 0x78, 0x78, 0x79, 0x7A, 0x6D, 0x6F, + 0x74, 0x6B, 0x72, 0x7B, 0x84, 0x93, 0x9C, 0xAE, 0xB6, 0xB0, 0xAD, 0xA8, 0xAB, 0xA2, 0x8D, 0x8C, + 0x92, 0x8C, 0x82, 0x80, 0x86, 0x85, 0x76, 0x6D, 0x6A, 0x67, 0x62, 0x53, 0x51, 0x5A, 0x5B, 0x62, + 0x67, 0x6E, 0x77, 0x75, 0x77, 0x75, 0x76, 0x7C, 0x76, 0x78, 0x7D, 0x80, 0x84, 0x86, 0x90, 0x94, + 0x92, 0x9B, 0xA0, 0x99, 0x9A, 0x9D, 0x9B, 0x9C, 0x9A, 0x96, 0x98, 0x9D, 0x9A, 0x8E, 0x8D, 0x8B, + 0x81, 0x7A, 0x75, 0x6E, 0x68, 0x66, 0x68, 0x66, 0x67, 0x70, 0x6F, 0x66, 0x67, 0x6F, 0x70, 0x70, + 0x7A, 0x7F, 0x80, 0x87, 0x8B, 0x88, 0x89, 0x89, 0x87, 0x88, 0x8F, 0x94, 0x96, 0x9E, 0x9F, 0xA4, + 0xB1, 0xB5, 0xAE, 0xA7, 0xA7, 0xA3, 0x98, 0x92, 0x89, 0x78, 0x71, 0x72, 0x6B, 0x64, 0x64, 0x62, + 0x57, 0x52, 0x59, 0x5D, 0x60, 0x68, 0x6B, 0x6D, 0x6E, 0x6F, 0x72, 0x76, 0x7C, 0x7D, 0x7B, 0x80, + 0x7E, 0x76, 0x77, 0x76, 0x75, 0x79, 0x7F, 0x85, 0x88, 0x90, 0x98, 0x9B, 0xA3, 0xA5, 0xA0, 0xA0, + 0xA1, 0xA0, 0xA3, 0xA7, 0xA5, 0x9B, 0x93, 0x8F, 0x7F, 0x71, 0x68, 0x5B, 0x50, 0x4D, 0x4E, 0x50, + 0x50, 0x4F, 0x4C, 0x4F, 0x55, 0x4C, 0x49, 0x59, 0x64, 0x67, 0x6C, 0x77, 0x7E, 0x7F, 0x81, 0x85, + 0x8C, 0x96, 0x99, 0x9C, 0xAB, 0xB3, 0xB0, 0xAF, 0xB1, 0xAE, 0xA5, 0x9E, 0x96, 0x8E, 0x8F, 0x8C, + 0x80, 0x7B, 0x7C, 0x74, 0x66, 0x5F, 0x5E, 0x5B, 0x5B, 0x5C, 0x5B, 0x60, 0x68, 0x69, 0x67, 0x6A, + 0x6B, 0x65, 0x61, 0x62, 0x66, 0x70, 0x7E, 0x83, 0x81, 0x81, 0x82, 0x7E, 0x7E, 0x82, 0x86, 0x8C, + 0x97, 0x9F, 0xA0, 0xA2, 0xA5, 0xA4, 0xA3, 0xA0, 0x9B, 0x98, 0x99, 0x9B, 0x9F, 0xA3, 0x9E, 0x91, + 0x87, 0x84, 0x7D, 0x6F, 0x65, 0x5F, 0x57, 0x51, 0x4F, 0x50, 0x4F, 0x4D, 0x4A, 0x4B, 0x53, 0x61, + 0x68, 0x70, 0x80, 0x8E, 0x94, 0x98, 0x9D, 0x9F, 0x9E, 0x9E, 0xA1, 0xA3, 0xA6, 0xA9, 0xAB, 0xAC, + 0xAE, 0xAF, 0xAB, 0xA7, 0xA9, 0xAA, 0xA6, 0xA2, 0x9E, 0x9D, 0x98, 0x8F, 0x88, 0x7D, 0x71, 0x66, + 0x5A, 0x52, 0x4D, 0x4E, 0x4F, 0x4C, 0x4F, 0x55, 0x58, 0x5C, 0x61, 0x6A, 0x72, 0x74, 0x77, 0x7B, + 0x79, 0x7A, 0x7D, 0x80, 0x7D, 0x7B, 0x84, 0x88, 0x81, 0x7F, 0x85, 0x86, 0x82, 0x87, 0x96, 0x9F, + 0xA2, 0xA6, 0xA4, 0x9E, 0x99, 0x95, 0x90, 0x8F, 0x93, 0x90, 0x85, 0x7D, 0x75, 0x6E, 0x6C, 0x69, + 0x6A, 0x70, 0x70, 0x68, 0x63, 0x5F, 0x55, 0x4F, 0x59, 0x66, 0x6A, 0x6E, 0x72, 0x6D, 0x66, 0x68, + 0x72, 0x7B, 0x84, 0x8B, 0x8C, 0x8F, 0x90, 0x8C, 0x8E, 0x98, 0x9F, 0xA1, 0xA7, 0xAE, 0xAA, 0x9E, + 0x97, 0x92, 0x91, 0x95, 0x97, 0x91, 0x8B, 0x85, 0x74, 0x64, 0x5E, 0x5B, 0x56, 0x55, 0x55, 0x50, + 0x49, 0x44, 0x43, 0x47, 0x52, 0x5D, 0x66, 0x6E, 0x6E, 0x6B, 0x6F, 0x78, 0x81, 0x8B, 0x95, 0x98, + 0x90, 0x8A, 0x87, 0x88, 0x8D, 0x90, 0x92, 0x99, 0x9D, 0x9A, 0x99, 0xA1, 0xA7, 0xA5, 0xA4, 0xA5, + 0xA5, 0xA5, 0x9F, 0x97, 0x94, 0x91, 0x88, 0x7A, 0x74, 0x75, 0x6D, 0x60, 0x5A, 0x5C, 0x5E, 0x56, + 0x52, 0x57, 0x5B, 0x5C, 0x5E, 0x61, 0x6A, 0x6B, 0x6D, 0x77, 0x80, 0x83, 0x87, 0x8D, 0x93, 0x96, + 0x9A, 0x9F, 0xA4, 0xAC, 0xA9, 0xA2, 0xA8, 0xAE, 0xAB, 0xA6, 0xAD, 0xB5, 0xAE, 0xA3, 0x9F, 0x9A, + 0x92, 0x8D, 0x85, 0x82, 0x82, 0x78, 0x66, 0x5D, 0x5F, 0x5E, 0x57, 0x52, 0x4F, 0x51, 0x4F, 0x50, + 0x5C, 0x68, 0x6C, 0x6D, 0x6C, 0x73, 0x79, 0x7B, 0x85, 0x90, 0x93, 0x93, 0x97, 0x9E, 0xA1, 0xA1, + 0xA0, 0x9D, 0x9A, 0x97, 0x90, 0x90, 0x98, 0x9C, 0x98, 0x95, 0x96, 0x8F, 0x81, 0x7D, 0x81, 0x80, + 0x7A, 0x71, 0x68, 0x67, 0x62, 0x58, 0x55, 0x58, 0x55, 0x52, 0x52, 0x4E, 0x4A, 0x4B, 0x51, 0x57, + 0x5F, 0x62, 0x61, 0x66, 0x6E, 0x72, 0x73, 0x7C, 0x84, 0x85, 0x82, 0x84, 0x8F, 0x99, 0x99, 0x9A, + 0xA4, 0xA8, 0xA2, 0x9D, 0xA0, 0xAB, 0xAC, 0xA5, 0xA3, 0xA3, 0x9B, 0x8F, 0x88, 0x88, 0x8B, 0x88, + 0x80, 0x79, 0x77, 0x72, 0x67, 0x65, 0x68, 0x67, 0x61, 0x58, 0x4F, 0x4C, 0x48, 0x49, 0x50, 0x59, + 0x60, 0x5E, 0x5F, 0x6A, 0x6F, 0x72, 0x80, 0x8E, 0x92, 0x91, 0x93, 0x9C, 0xA9, 0xB1, 0xAD, 0xA8, + 0xAC, 0xAB, 0x9D, 0x8E, 0x8E, 0x95, 0x95, 0x94, 0x96, 0x99, 0x98, 0x91, 0x91, 0x9C, 0xA0, 0x9C, + 0x94, 0x8B, 0x87, 0x7F, 0x71, 0x66, 0x63, 0x62, 0x5C, 0x4D, 0x41, 0x3D, 0x3B, 0x3B, 0x40, 0x52, + 0x5E, 0x5E, 0x63, 0x6C, 0x72, 0x7A, 0x84, 0x90, 0x9A, 0x96, 0x90, 0x93, 0x9F, 0xAB, 0xAC, 0xA8, + 0xA7, 0xA7, 0xA4, 0x9D, 0x99, 0x9B, 0xA4, 0xAB, 0xA9, 0xA3, 0xA4, 0xA1, 0x98, 0x92, 0x96, 0x97, + 0x8A, 0x7C, 0x74, 0x6E, 0x67, 0x5F, 0x5C, 0x62, 0x60, 0x53, 0x49, 0x45, 0x49, 0x4A, 0x49, 0x53, + 0x5F, 0x60, 0x5B, 0x61, 0x6F, 0x7B, 0x86, 0x95, 0x9F, 0xA2, 0xA0, 0x9D, 0xA4, 0xA9, 0xAF, 0xB7, + 0xB1, 0xA0, 0x9A, 0x95, 0x89, 0x89, 0x91, 0x97, 0x94, 0x89, 0x84, 0x86, 0x83, 0x80, 0x89, 0x8E, + 0x86, 0x7B, 0x6F, 0x69, 0x66, 0x62, 0x5F, 0x63, 0x60, 0x54, 0x4A, 0x44, 0x45, 0x49, 0x4D, 0x51, + 0x59, 0x5C, 0x57, 0x5B, 0x6C, 0x7B, 0x83, 0x89, 0x8A, 0x8A, 0x89, 0x8C, 0x94, 0x96, 0x96, 0x9A, + 0xA0, 0xA2, 0x9C, 0x95, 0x96, 0x94, 0x8B, 0x88, 0x8B, 0x91, 0x8E, 0x89, 0x8C, 0x8F, 0x8A, 0x84, + 0x7F, 0x7D, 0x7A, 0x70, 0x68, 0x66, 0x67, 0x66, 0x62, 0x64, 0x67, 0x60, 0x53, 0x50, 0x58, 0x5F, + 0x63, 0x63, 0x68, 0x70, 0x72, 0x72, 0x7F, 0x90, 0x98, 0x99, 0x9B, 0xA3, 0xA5, 0xA2, 0xA2, 0xA8, + 0xB1, 0xB6, 0xB0, 0xAA, 0xA9, 0xA5, 0x9B, 0x94, 0x97, 0x9B, 0x94, 0x89, 0x86, 0x8D, 0x92, 0x8A, + 0x84, 0x89, 0x86, 0x80, 0x7D, 0x78, 0x77, 0x74, 0x6D, 0x72, 0x78, 0x6E, 0x60, 0x58, 0x53, 0x53, + 0x51, 0x4F, 0x51, 0x53, 0x50, 0x56, 0x68, 0x73, 0x7A, 0x85, 0x90, 0x9B, 0xA3, 0xA6, 0xAA, 0xB0, + 0xB0, 0xAD, 0xAD, 0xAF, 0xAB, 0xA1, 0x95, 0x91, 0x8E, 0x7E, 0x77, 0x81, 0x83, 0x7B, 0x75, 0x79, + 0x82, 0x7B, 0x6C, 0x6F, 0x78, 0x72, 0x69, 0x69, 0x6D, 0x6D, 0x64, 0x56, 0x55, 0x56, 0x4C, 0x3D, + 0x3C, 0x4A, 0x4D, 0x44, 0x49, 0x5B, 0x66, 0x6B, 0x76, 0x86, 0x91, 0x93, 0x9A, 0xA8, 0xAE, 0xAA, + 0xAF, 0xB5, 0xBB, 0xC3, 0xC0, 0xB6, 0xB0, 0xAD, 0xA6, 0x9D, 0x95, 0x96, 0x98, 0x8A, 0x7C, 0x85, + 0x90, 0x7F, 0x73, 0x80, 0x84, 0x77, 0x70, 0x6B, 0x61, 0x5D, 0x58, 0x4D, 0x4A, 0x49, 0x3E, 0x36, + 0x3C, 0x44, 0x47, 0x49, 0x54, 0x62, 0x68, 0x6C, 0x75, 0x84, 0x8E, 0x95, 0x9F, 0xAA, 0xAB, 0xA2, + 0x9E, 0xA6, 0xAC, 0xA2, 0xA1, 0xAE, 0xB0, 0xA3, 0x98, 0x97, 0x97, 0x8C, 0x84, 0x8A, 0x89, 0x82, + 0x7F, 0x7F, 0x7F, 0x77, 0x6F, 0x72, 0x73, 0x6B, 0x62, 0x5C, 0x58, 0x5A, 0x58, 0x4F, 0x4B, 0x4F, + 0x4C, 0x45, 0x4B, 0x55, 0x56, 0x54, 0x56, 0x65, 0x71, 0x6E, 0x74, 0x7F, 0x82, 0x89, 0x8D, 0x94, + 0x9A, 0x94, 0x99, 0xAD, 0xB6, 0xBD, 0xC4, 0xBF, 0xB9, 0xB9, 0xB5, 0xB0, 0xB6, 0xBD, 0xB8, 0xAD, + 0xA2, 0xA1, 0x9F, 0x8D, 0x86, 0x95, 0x97, 0x82, 0x71, 0x6C, 0x68, 0x66, 0x67, 0x67, 0x6A, 0x63, + 0x54, 0x4F, 0x51, 0x53, 0x57, 0x54, 0x50, 0x5B, 0x5F, 0x5A, 0x68, 0x78, 0x75, 0x79, 0x86, 0x8C, + 0x8B, 0x94, 0xA6, 0xB5, 0xBD, 0xC3, 0xC7, 0xCA, 0xBD, 0xB8, 0xBF, 0xAF, 0xA0, 0xA1, 0xA2, 0x9E, + 0x91, 0x83, 0x7F, 0x7D, 0x79, 0x77, 0x78, 0x7A, 0x70, 0x62, 0x5D, 0x59, 0x57, 0x56, 0x54, 0x54, + 0x51, 0x3F, 0x2C, 0x2A, 0x35, 0x3C, 0x36, 0x39, 0x40, 0x39, 0x3A, 0x4B, 0x5D, 0x6A, 0x6D, 0x76, + 0x85, 0x8F, 0x9B, 0xA8, 0xA8, 0xA4, 0xB2, 0xC1, 0xAF, 0xA4, 0xAE, 0xAA, 0x9F, 0x9B, 0x9C, 0xA0, + 0x99, 0x8D, 0x90, 0x97, 0x91, 0x87, 0x8E, 0x99, 0x90, 0x7C, 0x6D, 0x69, 0x66, 0x5C, 0x57, 0x5D, + 0x5C, 0x46, 0x35, 0x3C, 0x47, 0x48, 0x48, 0x4E, 0x5C, 0x60, 0x5C, 0x68, 0x7E, 0x87, 0x95, 0xAD, + 0xB5, 0xB3, 0xB6, 0xBB, 0xC0, 0xBF, 0xC1, 0xC8, 0xB7, 0xA3, 0x9F, 0x9D, 0x97, 0x96, 0x9F, 0xA6, + 0x99, 0x91, 0x93, 0x8E, 0x83, 0x7E, 0x84, 0x87, 0x7F, 0x74, 0x66, 0x64, 0x6C, 0x6A, 0x65, 0x68, + 0x65, 0x56, 0x49, 0x45, 0x4B, 0x52, 0x54, 0x57, 0x58, 0x54, 0x55, 0x5E, 0x6E, 0x7A, 0x83, 0x94, + 0x99, 0x87, 0x80, 0x8A, 0x93, 0x9A, 0xA9, 0xBB, 0xB3, 0x94, 0x82, 0x84, 0x88, 0x8C, 0x99, 0xBC, + 0xDA, 0xB3, 0x71, 0x69, 0x89, 0xA3, 0xB2, 0xB5, 0xA9, 0x7A, 0x40, 0x2C, 0x3E, 0x67, 0x86, 0x7D, + 0x68, 0x51, 0x2C, 0x1E, 0x4B, 0x84, 0x86, 0x6E, 0x62, 0x46, 0x2B, 0x4B, 0x8C, 0xB7, 0xC4, 0xA9, + 0x86, 0x86, 0x8D, 0x92, 0xA9, 0xC5, 0xE0, 0xDD, 0x9B, 0x69, 0x80, 0xA7, 0xB7, 0xC3, 0xC0, 0xB1, + 0xA2, 0x86, 0x84, 0xA9, 0xB7, 0xA9, 0x9D, 0x91, 0x75, 0x53, 0x4E, 0x61, 0x76, 0x75, 0x55, 0x41, + 0x39, 0x1D, 0x22, 0x4F, 0x68, 0x64, 0x56, 0x4A, 0x4E, 0x5D, 0x61, 0x66, 0x81, 0x80, 0x5E, 0x5C, + 0x64, 0x5E, 0x64, 0x81, 0xB0, 0xBB, 0x88, 0x69, 0x86, 0x9D, 0x97, 0x9F, 0xC2, 0xD9, 0xB8, 0x8A, + 0x94, 0xB0, 0xAD, 0x9F, 0x95, 0x96, 0x7C, 0x46, 0x36, 0x4A, 0x59, 0x54, 0x41, 0x35, 0x2B, 0x23, + 0x3A, 0x65, 0x7E, 0x72, 0x64, 0x69, 0x66, 0x5B, 0x5D, 0x77, 0x8A, 0x76, 0x61, 0x5B, 0x56, 0x6B, + 0x97, 0xB8, 0xA9, 0x7F, 0x7C, 0x91, 0x94, 0xA0, 0xC5, 0xE9, 0xE1, 0xB7, 0xA6, 0xAE, 0xAE, 0xAE, + 0xB4, 0xB5, 0xAE, 0x8D, 0x64, 0x66, 0x80, 0x88, 0x8C, 0x91, 0x82, 0x66, 0x63, 0x7D, 0x8C, 0x97, + 0xA4, 0x99, 0x81, 0x69, 0x5D, 0x6A, 0x7C, 0x83, 0x7F, 0x6A, 0x67, 0x84, 0x87, 0x71, 0x7A, 0x89, + 0x7A, 0x7C, 0x8D, 0x99, 0xBB, 0xC8, 0xA6, 0x98, 0xA0, 0x92, 0x85, 0x8B, 0x91, 0x96, 0x8F, 0x75, + 0x64, 0x6C, 0x6A, 0x61, 0x78, 0x84, 0x75, 0x77, 0x74, 0x62, 0x6C, 0x7E, 0x76, 0x66, 0x63, 0x5C, + 0x4C, 0x4E, 0x56, 0x4C, 0x4D, 0x6F, 0x89, 0x72, 0x58, 0x5D, 0x5A, 0x5C, 0x72, 0x7D, 0x91, 0xB3, + 0xA7, 0x84, 0x96, 0xA9, 0x88, 0x81, 0xA0, 0x9A, 0x85, 0x81, 0x75, 0x6A, 0x7B, 0x89, 0x80, 0x88, + 0x8C, 0x70, 0x73, 0x8E, 0x8D, 0x84, 0x84, 0x83, 0x6E, 0x5D, 0x6D, 0x75, 0x66, 0x66, 0x7F, 0x99, + 0x8F, 0x73, 0x6F, 0x68, 0x49, 0x4F, 0x82, 0x9D, 0xAC, 0xBF, 0xA5, 0x92, 0xA1, 0x89, 0x70, 0x8E, + 0xB2, 0x9E, 0x79, 0x83, 0x84, 0x64, 0x66, 0x78, 0x7B, 0x87, 0x8E, 0x80, 0x76, 0x79, 0x77, 0x71, + 0x74, 0x7A, 0x78, 0x61, 0x58, 0x6E, 0x6B, 0x58, 0x73, 0xA0, 0x99, 0x72, 0x75, 0x74, 0x47, 0x53, + 0x7D, 0x7C, 0x94, 0xB2, 0x90, 0x79, 0x92, 0x7E, 0x55, 0x7D, 0xAB, 0x88, 0x70, 0x86, 0x7F, 0x62, + 0x64, 0x77, 0x7F, 0x88, 0x8F, 0x81, 0x72, 0x6C, 0x60, 0x52, 0x5F, 0x80, 0x84, 0x6A, 0x5F, 0x6B, + 0x81, 0x89, 0x7D, 0x77, 0x84, 0x7E, 0x60, 0x69, 0x92, 0x97, 0x97, 0xAE, 0xB1, 0xA4, 0x93, 0x7B, + 0x75, 0x86, 0x98, 0x9E, 0x98, 0x99, 0x9C, 0x8E, 0x80, 0x89, 0x99, 0x9D, 0xA3, 0xAA, 0x9A, 0x81, + 0x7B, 0x78, 0x6F, 0x77, 0x86, 0x82, 0x73, 0x70, 0x81, 0x97, 0x8A, 0x7B, 0x8D, 0x80, 0x5C, 0x6E, + 0x8F, 0x8F, 0x97, 0xB0, 0xA9, 0x89, 0x87, 0x81, 0x5F, 0x6A, 0x8F, 0x86, 0x74, 0x86, 0x90, 0x73, + 0x69, 0x82, 0x85, 0x81, 0x8D, 0x8F, 0x82, 0x7B, 0x7C, 0x6E, 0x5E, 0x6E, 0x7F, 0x72, 0x70, 0x87, + 0x85, 0x61, 0x5A, 0x5A, 0x3C, 0x48, 0x71, 0x74, 0x7D, 0xA1, 0x98, 0x6F, 0x6C, 0x72, 0x5B, 0x5A, + 0x7B, 0x8C, 0x7D, 0x78, 0x85, 0x76, 0x62, 0x6E, 0x7F, 0x87, 0x8B, 0x90, 0x8A, 0x7A, 0x75, 0x6E, + 0x62, 0x68, 0x77, 0x7A, 0x79, 0x8F, 0x97, 0x6A, 0x5F, 0x6D, 0x47, 0x3A, 0x65, 0x7B, 0x7D, 0x97, + 0xB2, 0x98, 0x78, 0x85, 0x74, 0x53, 0x74, 0xA2, 0xA0, 0x95, 0xA3, 0xA2, 0x7D, 0x6D, 0x83, 0x92, + 0x93, 0x9C, 0xA4, 0x9B, 0x8C, 0x84, 0x75, 0x69, 0x71, 0x82, 0x9E, 0xB0, 0x97, 0x84, 0x8E, 0x67, + 0x36, 0x4B, 0x6E, 0x73, 0x7F, 0xA4, 0xB3, 0x92, 0x81, 0x82, 0x5B, 0x47, 0x71, 0x91, 0x8F, 0x94, + 0xAB, 0xA7, 0x8A, 0x86, 0x89, 0x7B, 0x81, 0x9D, 0x9F, 0x83, 0x82, 0x8D, 0x6D, 0x54, 0x69, 0x86, + 0x85, 0x74, 0x87, 0x91, 0x5E, 0x4E, 0x65, 0x52, 0x4F, 0x7A, 0x97, 0x98, 0x92, 0x9B, 0x97, 0x74, + 0x66, 0x6D, 0x64, 0x64, 0x7C, 0x8E, 0x8D, 0x90, 0x96, 0x87, 0x77, 0x79, 0x83, 0x89, 0x87, 0x8E, + 0x91, 0x81, 0x8A, 0x96, 0x7B, 0x75, 0x82, 0x6B, 0x61, 0x7C, 0x80, 0x70, 0x81, 0x9E, 0x8E, 0x7E, + 0x9B, 0x9A, 0x7A, 0x83, 0x88, 0x74, 0x7D, 0x91, 0x93, 0x92, 0x9D, 0xA3, 0x9A, 0x97, 0x97, 0x90, + 0x8A, 0x82, 0x80, 0x7D, 0x68, 0x6C, 0x8E, 0x93, 0x80, 0x83, 0x8F, 0x70, 0x56, 0x71, 0x72, 0x5D, + 0x79, 0x95, 0x89, 0x7E, 0x87, 0x82, 0x63, 0x57, 0x61, 0x61, 0x63, 0x70, 0x7B, 0x87, 0x8C, 0x89, + 0x8A, 0x88, 0x7F, 0x7A, 0x7A, 0x71, 0x6A, 0x6E, 0x6A, 0x6B, 0x7C, 0x71, 0x64, 0x7C, 0x6E, 0x47, + 0x5F, 0x72, 0x55, 0x62, 0x95, 0x95, 0x75, 0x87, 0x9C, 0x73, 0x5B, 0x74, 0x71, 0x5F, 0x6B, 0x81, + 0x87, 0x85, 0x90, 0x9C, 0x92, 0x83, 0x83, 0x82, 0x71, 0x6A, 0x76, 0x7B, 0x86, 0x92, 0x84, 0x83, + 0x84, 0x60, 0x56, 0x6E, 0x69, 0x67, 0x8A, 0x9F, 0x8B, 0x86, 0x9C, 0x8A, 0x67, 0x6C, 0x6E, 0x5E, + 0x6C, 0x89, 0x90, 0x96, 0xAF, 0xBA, 0xAD, 0xA9, 0xA8, 0x9C, 0x92, 0x85, 0x77, 0x7D, 0x8C, 0x8A, + 0x83, 0x8D, 0x8C, 0x6E, 0x65, 0x70, 0x61, 0x5F, 0x84, 0x9E, 0x93, 0x8D, 0xA1, 0x98, 0x72, 0x78, + 0x82, 0x5A, 0x54, 0x7B, 0x7F, 0x76, 0x94, 0xAD, 0xA3, 0xA0, 0xA9, 0x9A, 0x88, 0x8A, 0x7F, 0x72, + 0x80, 0x8B, 0x7C, 0x76, 0x83, 0x72, 0x58, 0x64, 0x5F, 0x46, 0x5E, 0x89, 0x8E, 0x8C, 0x9C, 0xA1, + 0x82, 0x72, 0x7C, 0x65, 0x4B, 0x62, 0x74, 0x70, 0x87, 0xA8, 0xAC, 0xA4, 0xA5, 0x9D, 0x89, 0x7D, + 0x76, 0x74, 0x79, 0x80, 0x7F, 0x73, 0x72, 0x79, 0x66, 0x5A, 0x66, 0x5B, 0x53, 0x73, 0x8E, 0x89, + 0x8D, 0xA4, 0x9C, 0x7A, 0x77, 0x76, 0x56, 0x50, 0x66, 0x69, 0x6A, 0x8A, 0xAA, 0xAC, 0xAA, 0xB4, + 0xAB, 0x94, 0x8B, 0x87, 0x81, 0x80, 0x7E, 0x7C, 0x7C, 0x78, 0x6B, 0x63, 0x64, 0x5E, 0x64, 0x7D, + 0x87, 0x86, 0x96, 0x9F, 0x8B, 0x76, 0x7B, 0x72, 0x55, 0x58, 0x67, 0x5D, 0x6D, 0x8C, 0x8D, 0x92, + 0xA9, 0xAA, 0x95, 0x8D, 0x96, 0x91, 0x7A, 0x78, 0x81, 0x6F, 0x59, 0x60, 0x5F, 0x4D, 0x59, 0x73, + 0x70, 0x71, 0x89, 0x91, 0x7E, 0x73, 0x7C, 0x77, 0x60, 0x5F, 0x6C, 0x64, 0x61, 0x75, 0x80, 0x84, + 0x96, 0xA6, 0x9F, 0x97, 0x9F, 0xA8, 0xA6, 0x99, 0x97, 0x9F, 0x8A, 0x6F, 0x6F, 0x5E, 0x42, 0x4C, + 0x5F, 0x5D, 0x63, 0x7C, 0x87, 0x7D, 0x81, 0x8E, 0x80, 0x6C, 0x70, 0x6E, 0x61, 0x6D, 0x87, 0x8F, + 0x96, 0xAC, 0xB6, 0xAD, 0xA4, 0x9D, 0x95, 0x97, 0x9B, 0x93, 0x8F, 0x97, 0x94, 0x85, 0x81, 0x7B, + 0x69, 0x60, 0x62, 0x6B, 0x7A, 0x89, 0x94, 0x97, 0x95, 0x94, 0x8E, 0x83, 0x78, 0x6E, 0x68, 0x69, + 0x6F, 0x7C, 0x90, 0xA4, 0xAB, 0xB2, 0xBC, 0xB3, 0xA4, 0xA6, 0x9C, 0x87, 0x87, 0x83, 0x67, 0x56, + 0x56, 0x50, 0x4E, 0x59, 0x58, 0x56, 0x6B, 0x79, 0x72, 0x78, 0x8A, 0x85, 0x74, 0x76, 0x7D, 0x6E, + 0x61, 0x6B, 0x76, 0x77, 0x81, 0x8C, 0x88, 0x88, 0x96, 0xA1, 0xA0, 0x9C, 0xA1, 0xA1, 0x8C, 0x79, + 0x76, 0x63, 0x4F, 0x5A, 0x5D, 0x50, 0x62, 0x7A, 0x70, 0x6C, 0x7E, 0x7A, 0x66, 0x6A, 0x74, 0x67, + 0x62, 0x76, 0x81, 0x84, 0x90, 0x98, 0x96, 0x97, 0x9B, 0x9D, 0x9E, 0x9D, 0x9B, 0x9B, 0x95, 0x83, + 0x73, 0x6A, 0x5B, 0x52, 0x56, 0x52, 0x4F, 0x5F, 0x6C, 0x6E, 0x78, 0x84, 0x84, 0x7E, 0x7C, 0x7D, + 0x76, 0x73, 0x80, 0x84, 0x81, 0x92, 0xA3, 0xA2, 0xA2, 0x9F, 0x9C, 0xA8, 0xB2, 0xB0, 0xAC, 0xA9, + 0xA1, 0x93, 0x7D, 0x63, 0x51, 0x49, 0x43, 0x45, 0x5A, 0x6A, 0x69, 0x70, 0x80, 0x80, 0x71, 0x6F, + 0x76, 0x6E, 0x64, 0x70, 0x7A, 0x7E, 0x9A, 0xB0, 0xAC, 0xB3, 0xB0, 0x90, 0x8B, 0xA2, 0x97, 0x81, + 0x8B, 0x93, 0x80, 0x70, 0x6D, 0x5E, 0x52, 0x58, 0x4F, 0x44, 0x5E, 0x77, 0x74, 0x7F, 0x99, 0x98, + 0x83, 0x7F, 0x84, 0x78, 0x6E, 0x7B, 0x81, 0x7F, 0x95, 0xAF, 0xB0, 0xA3, 0x98, 0x95, 0xA1, 0xA5, + 0x99, 0x9D, 0xA4, 0x91, 0x7D, 0x71, 0x5F, 0x54, 0x4E, 0x45, 0x50, 0x67, 0x6E, 0x71, 0x77, 0x78, + 0x79, 0x74, 0x69, 0x6F, 0x79, 0x77, 0x7E, 0x8F, 0x9C, 0xA6, 0xAE, 0xBC, 0xC6, 0xBB, 0xAD, 0xA6, + 0x9E, 0x97, 0x91, 0x93, 0x94, 0x7F, 0x6E, 0x6E, 0x5D, 0x4F, 0x4E, 0x3F, 0x3C, 0x53, 0x5F, 0x65, + 0x70, 0x7D, 0x85, 0x83, 0x89, 0x8B, 0x78, 0x7A, 0x8D, 0x85, 0x89, 0xA5, 0xA4, 0x99, 0x9E, 0x9B, + 0x9B, 0x9B, 0x8E, 0x93, 0x98, 0x87, 0x7D, 0x73, 0x5F, 0x5F, 0x5B, 0x41, 0x3F, 0x52, 0x4F, 0x43, + 0x4E, 0x5A, 0x4E, 0x48, 0x55, 0x55, 0x55, 0x72, 0x8A, 0x86, 0x8E, 0xAA, 0xB2, 0xA6, 0xA9, 0xAD, + 0xA9, 0xB5, 0xBC, 0xAE, 0xB7, 0xC0, 0x9F, 0x87, 0x84, 0x68, 0x4A, 0x48, 0x3C, 0x2D, 0x32, 0x34, + 0x2C, 0x33, 0x42, 0x49, 0x47, 0x51, 0x6E, 0x81, 0x88, 0x9C, 0xAE, 0xB0, 0xB9, 0xBF, 0xB7, 0xB1, + 0xB0, 0xAC, 0xB4, 0xBD, 0xB4, 0xAF, 0xB0, 0x9D, 0x89, 0x7C, 0x64, 0x5D, 0x6B, 0x5F, 0x55, 0x61, + 0x58, 0x49, 0x53, 0x4F, 0x3D, 0x4B, 0x66, 0x6F, 0x81, 0xA2, 0xB4, 0xB4, 0xB6, 0xBC, 0xB4, 0xA2, + 0x9E, 0xA5, 0xAE, 0xBA, 0xBA, 0xB4, 0xB8, 0xA9, 0x86, 0x73, 0x68, 0x5E, 0x61, 0x5F, 0x59, 0x68, + 0x73, 0x5F, 0x4E, 0x56, 0x59, 0x50, 0x54, 0x61, 0x69, 0x7D, 0x97, 0xA0, 0xA3, 0xAE, 0xB1, 0xA6, + 0x9D, 0x9C, 0x9F, 0xA8, 0xB4, 0xB1, 0xA9, 0xA9, 0x97, 0x7C, 0x74, 0x67, 0x5C, 0x70, 0x6F, 0x53, + 0x52, 0x55, 0x41, 0x36, 0x35, 0x36, 0x42, 0x53, 0x67, 0x77, 0x7F, 0x8B, 0x8F, 0x89, 0x97, 0xAB, + 0xB0, 0xB5, 0xB8, 0xB7, 0xBD, 0xB8, 0xA3, 0x94, 0x92, 0x8E, 0x7A, 0x66, 0x62, 0x5F, 0x5A, 0x5B, + 0x56, 0x53, 0x5A, 0x54, 0x4C, 0x55, 0x5B, 0x5E, 0x6C, 0x75, 0x78, 0x82, 0x8F, 0x96, 0x97, 0x9C, + 0xA6, 0xAD, 0xAB, 0xA2, 0x9B, 0xA3, 0xB5, 0xB3, 0xA2, 0x9D, 0x94, 0x77, 0x67, 0x63, 0x5D, 0x67, + 0x6B, 0x58, 0x59, 0x61, 0x4E, 0x4A, 0x56, 0x51, 0x55, 0x63, 0x64, 0x65, 0x71, 0x82, 0x8C, 0x89, + 0x93, 0xA5, 0xA7, 0xA9, 0xA9, 0xA2, 0xA6, 0xAB, 0xAB, 0xAF, 0xA1, 0x8C, 0x85, 0x76, 0x65, 0x64, + 0x5E, 0x5D, 0x5C, 0x42, 0x31, 0x3B, 0x40, 0x43, 0x4A, 0x4E, 0x55, 0x59, 0x5B, 0x6C, 0x83, 0x98, + 0xA6, 0xA6, 0xAC, 0xB7, 0xB9, 0xBC, 0xC4, 0xC6, 0xC4, 0xB9, 0xAF, 0xA6, 0x89, 0x75, 0x83, 0x84, + 0x6D, 0x62, 0x60, 0x63, 0x64, 0x52, 0x40, 0x43, 0x4F, 0x53, 0x51, 0x59, 0x60, 0x5A, 0x5E, 0x73, + 0x88, 0x9E, 0xAA, 0xA7, 0xAF, 0xC2, 0xC6, 0xBF, 0xBA, 0xBB, 0xBF, 0xCB, 0xD3, 0xB4, 0x8E, 0xA0, + 0xAE, 0x8F, 0x7C, 0x6C, 0x51, 0x54, 0x5E, 0x53, 0x53, 0x55, 0x48, 0x44, 0x50, 0x59, 0x5A, 0x63, + 0x72, 0x74, 0x7F, 0x9B, 0x9D, 0x97, 0xA3, 0xAB, 0xB5, 0xBB, 0xAB, 0xA5, 0xB3, 0xAD, 0x9B, 0xA8, + 0xB9, 0x93, 0x60, 0x6F, 0x90, 0x7E, 0x51, 0x34, 0x3F, 0x63, 0x5C, 0x2E, 0x24, 0x3D, 0x49, 0x45, + 0x4A, 0x62, 0x70, 0x6A, 0x6B, 0x83, 0xA2, 0xAC, 0x97, 0x9A, 0xC2, 0xD0, 0xBC, 0xA9, 0xAC, 0xBD, + 0xB1, 0x91, 0x95, 0xA4, 0x80, 0x53, 0x63, 0x83, 0x68, 0x38, 0x36, 0x49, 0x5A, 0x57, 0x2F, 0x2A, + 0x60, 0x6E, 0x53, 0x57, 0x5D, 0x66, 0x83, 0x85, 0x76, 0x89, 0x9E, 0x9F, 0xA5, 0xAD, 0xAB, 0xA6, + 0xA7, 0xAC, 0xAF, 0xAD, 0x9F, 0x8C, 0x9B, 0xB5, 0x8D, 0x54, 0x70, 0x99, 0x7A, 0x5A, 0x57, 0x56, + 0x6E, 0x72, 0x44, 0x45, 0x76, 0x6F, 0x53, 0x5E, 0x6A, 0x6F, 0x80, 0x82, 0x7A, 0x88, 0x99, 0x99, + 0x9C, 0xA3, 0xA0, 0xA1, 0xA7, 0xA6, 0xA2, 0x9F, 0x93, 0x8C, 0x99, 0xA1, 0x8C, 0x6A, 0x66, 0x86, + 0x87, 0x53, 0x3C, 0x61, 0x7D, 0x6F, 0x4B, 0x3A, 0x5C, 0x79, 0x5F, 0x55, 0x6D, 0x72, 0x7A, 0x89, + 0x7C, 0x7F, 0x9B, 0x9E, 0x97, 0x9C, 0x9E, 0xA1, 0xA6, 0xA5, 0xA0, 0x9E, 0xA2, 0x9B, 0x8D, 0x89, + 0x7E, 0x7C, 0x8D, 0x73, 0x53, 0x72, 0x7D, 0x5E, 0x60, 0x60, 0x54, 0x6F, 0x7B, 0x60, 0x69, 0x85, + 0x86, 0x89, 0x92, 0x87, 0x85, 0x9B, 0x9C, 0x87, 0x8E, 0xA4, 0xA0, 0x9B, 0xA1, 0x9D, 0x9B, 0xA1, + 0x96, 0x8C, 0x95, 0x93, 0x7E, 0x74, 0x7C, 0x86, 0x7A, 0x5F, 0x5C, 0x76, 0x78, 0x5B, 0x57, 0x73, + 0x7B, 0x67, 0x62, 0x72, 0x79, 0x76, 0x70, 0x75, 0x84, 0x7D, 0x70, 0x83, 0x91, 0x83, 0x89, 0x99, + 0x95, 0x93, 0x94, 0x97, 0x9A, 0x8E, 0x86, 0x8D, 0x8C, 0x84, 0x7F, 0x7B, 0x79, 0x7A, 0x7A, 0x68, + 0x57, 0x68, 0x6B, 0x53, 0x5D, 0x65, 0x5C, 0x6F, 0x6B, 0x51, 0x66, 0x6D, 0x5B, 0x71, 0x75, 0x65, + 0x7E, 0x8A, 0x76, 0x7B, 0x8F, 0x92, 0x8E, 0x8D, 0x90, 0x93, 0x9A, 0x95, 0x8A, 0x8F, 0x8E, 0x88, + 0x8D, 0x80, 0x6F, 0x7E, 0x82, 0x78, 0x72, 0x68, 0x78, 0x88, 0x69, 0x5C, 0x71, 0x73, 0x6C, 0x65, + 0x60, 0x6D, 0x6F, 0x67, 0x6B, 0x6A, 0x6E, 0x7B, 0x7E, 0x7F, 0x85, 0x8D, 0x9D, 0xA8, 0xA4, 0xA4, + 0xAC, 0xB1, 0xA6, 0x99, 0x9F, 0xA2, 0x98, 0x8D, 0x87, 0x89, 0x87, 0x83, 0x84, 0x6D, 0x5F, 0x82, + 0x7D, 0x52, 0x61, 0x71, 0x64, 0x72, 0x6D, 0x59, 0x73, 0x7D, 0x6A, 0x76, 0x7D, 0x78, 0x88, 0x8B, + 0x80, 0x8E, 0x99, 0x8D, 0x8A, 0x97, 0x97, 0x8D, 0x90, 0x96, 0x92, 0x94, 0x92, 0x8C, 0x90, 0x8C, + 0x85, 0x89, 0x7E, 0x78, 0x8C, 0x7C, 0x60, 0x78, 0x82, 0x5F, 0x5F, 0x76, 0x6B, 0x5F, 0x66, 0x6D, + 0x71, 0x71, 0x70, 0x79, 0x80, 0x7E, 0x81, 0x8B, 0x8A, 0x80, 0x8A, 0x97, 0x8E, 0x8D, 0x97, 0x95, + 0x98, 0x99, 0x8D, 0x91, 0x97, 0x88, 0x83, 0x83, 0x7C, 0x7E, 0x75, 0x70, 0x7E, 0x6E, 0x5E, 0x75, + 0x6D, 0x51, 0x60, 0x69, 0x5D, 0x68, 0x6B, 0x66, 0x77, 0x79, 0x71, 0x80, 0x82, 0x77, 0x85, 0x8D, + 0x83, 0x8D, 0x96, 0x8C, 0x8E, 0x99, 0x94, 0x8E, 0x8F, 0x8F, 0x89, 0x83, 0x85, 0x86, 0x7F, 0x79, + 0x7C, 0x7B, 0x6C, 0x66, 0x76, 0x79, 0x63, 0x61, 0x75, 0x76, 0x6B, 0x6A, 0x72, 0x75, 0x70, 0x6E, + 0x6C, 0x66, 0x6A, 0x76, 0x77, 0x75, 0x7C, 0x89, 0x8D, 0x81, 0x84, 0x99, 0x97, 0x88, 0x8C, 0x93, + 0x92, 0x90, 0x87, 0x84, 0x85, 0x80, 0x7E, 0x78, 0x6D, 0x71, 0x74, 0x6D, 0x69, 0x6B, 0x72, 0x70, + 0x61, 0x6B, 0x7C, 0x6E, 0x6C, 0x79, 0x71, 0x75, 0x81, 0x7B, 0x83, 0x8E, 0x85, 0x8B, 0x8C, 0x7E, + 0x8B, 0x8F, 0x77, 0x7F, 0x8D, 0x81, 0x89, 0x95, 0x85, 0x88, 0x95, 0x8A, 0x88, 0x95, 0x91, 0x8C, + 0x92, 0x8D, 0x87, 0x8D, 0x89, 0x80, 0x84, 0x82, 0x84, 0x8B, 0x77, 0x71, 0x8F, 0x8D, 0x70, 0x74, + 0x86, 0x83, 0x74, 0x6C, 0x73, 0x79, 0x77, 0x7B, 0x7B, 0x78, 0x82, 0x8D, 0x87, 0x7E, 0x89, 0x9D, + 0x96, 0x8B, 0x99, 0xA0, 0x97, 0x99, 0x99, 0x95, 0x96, 0x8A, 0x7F, 0x82, 0x80, 0x7B, 0x7A, 0x75, + 0x71, 0x6A, 0x66, 0x72, 0x6C, 0x4E, 0x57, 0x74, 0x62, 0x52, 0x6C, 0x72, 0x66, 0x70, 0x73, 0x6D, + 0x7B, 0x81, 0x7C, 0x7B, 0x7C, 0x92, 0x98, 0x7C, 0x85, 0xA4, 0x97, 0x8A, 0x91, 0x8E, 0x94, 0x9B, + 0x8C, 0x86, 0x8D, 0x92, 0x8B, 0x7D, 0x7C, 0x81, 0x79, 0x71, 0x69, 0x62, 0x65, 0x68, 0x6E, 0x68, + 0x4D, 0x59, 0x84, 0x74, 0x4A, 0x5B, 0x84, 0x7D, 0x5E, 0x63, 0x7E, 0x85, 0x7D, 0x7D, 0x7F, 0x7E, + 0x92, 0xA7, 0x8B, 0x74, 0x9C, 0xAE, 0x8D, 0x8B, 0x98, 0x94, 0x98, 0x87, 0x75, 0x84, 0x88, 0x7E, + 0x79, 0x6B, 0x73, 0x7B, 0x65, 0x67, 0x72, 0x66, 0x63, 0x64, 0x6F, 0x7B, 0x5A, 0x55, 0x8C, 0x84, + 0x51, 0x6B, 0x97, 0x84, 0x67, 0x7D, 0x99, 0x89, 0x84, 0x9D, 0x96, 0x7E, 0x8B, 0xA0, 0x90, 0x7D, + 0x93, 0xA2, 0x89, 0x84, 0x95, 0x92, 0x92, 0x8D, 0x80, 0x8C, 0x8C, 0x7F, 0x7E, 0x70, 0x6E, 0x7C, + 0x66, 0x58, 0x68, 0x62, 0x5C, 0x60, 0x68, 0x7A, 0x5F, 0x4C, 0x86, 0x96, 0x5C, 0x5C, 0x93, 0xAB, + 0x8C, 0x6E, 0x95, 0xB2, 0x92, 0x91, 0xA8, 0x9A, 0x9A, 0xAD, 0xA6, 0x96, 0x97, 0xA7, 0xA7, 0x8B, + 0x85, 0x95, 0x92, 0x80, 0x76, 0x7C, 0x8A, 0x7C, 0x6B, 0x70, 0x6E, 0x69, 0x6B, 0x60, 0x60, 0x6A, + 0x65, 0x5D, 0x56, 0x5E, 0x85, 0x8A, 0x55, 0x57, 0x9A, 0xA1, 0x6B, 0x68, 0x9F, 0xAE, 0x86, 0x81, + 0xA7, 0xAB, 0x97, 0x9B, 0xA0, 0x97, 0x98, 0x9E, 0x98, 0x87, 0x83, 0x95, 0x94, 0x76, 0x69, 0x78, + 0x7F, 0x71, 0x5E, 0x5C, 0x6A, 0x6D, 0x60, 0x56, 0x59, 0x5E, 0x5C, 0x59, 0x5B, 0x5C, 0x5F, 0x60, + 0x69, 0x84, 0x7C, 0x53, 0x67, 0xA4, 0x98, 0x66, 0x78, 0xAC, 0xA4, 0x7B, 0x85, 0xAD, 0xAA, 0x8D, + 0x8E, 0x9B, 0x96, 0x91, 0x92, 0x89, 0x82, 0x8A, 0x88, 0x7E, 0x76, 0x65, 0x63, 0x76, 0x6C, 0x55, + 0x5C, 0x61, 0x5F, 0x5F, 0x58, 0x5F, 0x6F, 0x68, 0x62, 0x66, 0x68, 0x76, 0x7D, 0x70, 0x76, 0x9A, + 0xA6, 0x81, 0x6C, 0x9B, 0xC1, 0x93, 0x69, 0x95, 0xC2, 0x9F, 0x76, 0x93, 0xB3, 0xA3, 0x90, 0x8D, + 0x8E, 0x92, 0x8B, 0x81, 0x86, 0x7E, 0x6F, 0x74, 0x7A, 0x71, 0x61, 0x5E, 0x71, 0x6F, 0x56, 0x5E, + 0x71, 0x6A, 0x63, 0x66, 0x6F, 0x7A, 0x7D, 0x7C, 0x7D, 0x7C, 0x7E, 0x82, 0x99, 0xAE, 0x82, 0x5F, + 0x9F, 0xC8, 0x8C, 0x70, 0x9D, 0xB9, 0xA5, 0x85, 0x84, 0xA2, 0xAC, 0x9B, 0x8D, 0x8B, 0x8E, 0x8D, + 0x85, 0x81, 0x7F, 0x6F, 0x67, 0x76, 0x77, 0x60, 0x59, 0x64, 0x6C, 0x6F, 0x66, 0x5D, 0x6E, 0x7F, + 0x75, 0x6E, 0x78, 0x85, 0x87, 0x7F, 0x83, 0x92, 0x8E, 0x8C, 0x92, 0x8D, 0x96, 0xA4, 0x88, 0x71, + 0x8C, 0xA9, 0x9B, 0x71, 0x68, 0x95, 0xAC, 0x8B, 0x71, 0x7E, 0x93, 0x90, 0x7B, 0x79, 0x85, 0x7F, + 0x76, 0x7A, 0x7B, 0x73, 0x68, 0x68, 0x79, 0x7A, 0x5D, 0x50, 0x6A, 0x7C, 0x68, 0x56, 0x69, 0x7C, + 0x75, 0x6F, 0x75, 0x7E, 0x84, 0x80, 0x7E, 0x8B, 0x91, 0x88, 0x83, 0x81, 0x8E, 0xAD, 0xA2, 0x66, + 0x67, 0xAA, 0xB2, 0x73, 0x5B, 0x84, 0xA3, 0x85, 0x5F, 0x6D, 0x83, 0x74, 0x6A, 0x73, 0x75, 0x6E, + 0x62, 0x63, 0x7B, 0x81, 0x62, 0x55, 0x72, 0x8B, 0x75, 0x54, 0x60, 0x7B, 0x78, 0x73, 0x7A, 0x81, + 0x83, 0x7F, 0x87, 0x97, 0x91, 0x83, 0x88, 0x8F, 0x90, 0x8A, 0x80, 0x7D, 0x7D, 0x86, 0x99, 0x83, + 0x59, 0x6C, 0x9F, 0x9B, 0x6C, 0x66, 0x95, 0xA1, 0x7E, 0x7D, 0x98, 0x92, 0x83, 0x83, 0x87, 0x91, + 0x86, 0x6C, 0x74, 0x8A, 0x7F, 0x62, 0x54, 0x68, 0x7C, 0x68, 0x56, 0x63, 0x6E, 0x72, 0x79, 0x77, + 0x7C, 0x8B, 0x90, 0x94, 0x9F, 0xA1, 0xA1, 0xA7, 0xA8, 0xA4, 0xA1, 0x9F, 0xA0, 0x96, 0x7F, 0x7C, + 0x98, 0x9A, 0x6C, 0x4C, 0x6B, 0x97, 0x87, 0x58, 0x5D, 0x8A, 0x91, 0x7A, 0x7D, 0x8F, 0x8F, 0x81, + 0x7F, 0x91, 0x98, 0x7C, 0x65, 0x75, 0x86, 0x77, 0x5F, 0x5E, 0x70, 0x77, 0x68, 0x63, 0x76, 0x7E, + 0x75, 0x78, 0x8B, 0x9A, 0x94, 0x86, 0x93, 0xA9, 0x9F, 0x8C, 0x91, 0x9D, 0x99, 0x82, 0x76, 0x7C, + 0x71, 0x6D, 0x8D, 0x84, 0x48, 0x46, 0x7B, 0x81, 0x63, 0x68, 0x86, 0x8B, 0x7F, 0x84, 0x99, 0x9E, + 0x8D, 0x7D, 0x85, 0x98, 0x8E, 0x75, 0x6C, 0x73, 0x79, 0x67, 0x4B, 0x5C, 0x6E, 0x52, 0x4D, 0x6E, + 0x73, 0x6C, 0x78, 0x85, 0x93, 0x96, 0x8C, 0x9D, 0xAD, 0x9E, 0x98, 0x9A, 0x8E, 0x86, 0x7A, 0x73, + 0x7F, 0x75, 0x59, 0x56, 0x5E, 0x6B, 0x81, 0x75, 0x51, 0x58, 0x7E, 0x8A, 0x7D, 0x80, 0x9C, 0x9F, + 0x84, 0x8B, 0xAD, 0xA3, 0x7D, 0x71, 0x76, 0x7D, 0x79, 0x5C, 0x4D, 0x60, 0x63, 0x49, 0x49, 0x67, + 0x74, 0x66, 0x60, 0x75, 0x8E, 0x91, 0x90, 0xA4, 0xB3, 0xA2, 0x96, 0xA5, 0xAC, 0x98, 0x82, 0x7B, + 0x7F, 0x7F, 0x6F, 0x67, 0x63, 0x59, 0x78, 0xA4, 0x81, 0x51, 0x77, 0x95, 0x79, 0x7F, 0xA1, 0xA3, + 0x99, 0x8A, 0x8C, 0xAE, 0xAA, 0x7B, 0x7C, 0x90, 0x79, 0x65, 0x61, 0x5B, 0x67, 0x69, 0x53, 0x5B, + 0x6E, 0x5F, 0x5D, 0x7B, 0x8C, 0x8F, 0x93, 0x98, 0xAE, 0xBE, 0xB3, 0xB3, 0xBE, 0xAB, 0x94, 0x93, + 0x8B, 0x7F, 0x76, 0x62, 0x5B, 0x69, 0x66, 0x5A, 0x5F, 0x66, 0x78, 0x9E, 0xA5, 0x89, 0x7F, 0x92, + 0xA7, 0xAB, 0x9A, 0x97, 0xA1, 0x8E, 0x71, 0x76, 0x84, 0x7E, 0x66, 0x52, 0x5B, 0x6C, 0x5E, 0x51, + 0x65, 0x76, 0x6F, 0x69, 0x75, 0x8A, 0x8D, 0x7C, 0x7B, 0x8F, 0x97, 0x8F, 0x93, 0xA3, 0xA5, 0x8F, + 0x7E, 0x82, 0x84, 0x7C, 0x7B, 0x7F, 0x7E, 0x76, 0x71, 0x7C, 0x7D, 0x6A, 0x7A, 0xB3, 0xAD, 0x6A, + 0x66, 0x93, 0x85, 0x66, 0x7A, 0x8D, 0x86, 0x7A, 0x63, 0x66, 0x8B, 0x7D, 0x59, 0x74, 0x8B, 0x65, + 0x4D, 0x57, 0x63, 0x72, 0x70, 0x60, 0x69, 0x75, 0x67, 0x67, 0x81, 0x96, 0x93, 0x89, 0x94, 0xAF, + 0xB0, 0x9C, 0x9E, 0xA4, 0x90, 0x78, 0x6F, 0x6B, 0x69, 0x61, 0x4F, 0x55, 0x6E, 0x6D, 0x5F, 0x63, + 0x6C, 0x87, 0xB2, 0xB1, 0x88, 0x7C, 0x8E, 0x9B, 0x96, 0x87, 0x8E, 0x9C, 0x7F, 0x55, 0x5F, 0x7F, + 0x7E, 0x64, 0x59, 0x6B, 0x76, 0x60, 0x57, 0x72, 0x86, 0x80, 0x74, 0x75, 0x86, 0x8F, 0x82, 0x81, + 0x94, 0x98, 0x8C, 0x8E, 0x9D, 0xA5, 0x94, 0x7B, 0x7A, 0x86, 0x7F, 0x73, 0x77, 0x81, 0x81, 0x73, + 0x71, 0x8E, 0xA2, 0x8F, 0x6C, 0x6C, 0xA4, 0xC8, 0x94, 0x61, 0x7D, 0x92, 0x72, 0x66, 0x81, 0x96, + 0x8E, 0x6B, 0x5B, 0x80, 0x9E, 0x82, 0x64, 0x7C, 0x91, 0x6A, 0x4A, 0x6B, 0x87, 0x79, 0x73, 0x7D, + 0x7F, 0x87, 0x8D, 0x8C, 0xA1, 0xB9, 0xAC, 0x9D, 0xAD, 0xB3, 0x9A, 0x83, 0x87, 0x8D, 0x79, 0x61, + 0x60, 0x68, 0x64, 0x5F, 0x65, 0x73, 0x7F, 0x81, 0x7A, 0x77, 0x91, 0xC1, 0xC4, 0x86, 0x5B, 0x73, + 0x92, 0x7F, 0x60, 0x72, 0x94, 0x7D, 0x4A, 0x4E, 0x83, 0x9A, 0x7E, 0x65, 0x72, 0x84, 0x79, 0x65, + 0x6D, 0x85, 0x7D, 0x59, 0x56, 0x78, 0x86, 0x7D, 0x77, 0x7A, 0x84, 0x88, 0x82, 0x8A, 0xA1, 0xA0, + 0x87, 0x7A, 0x86, 0x8E, 0x81, 0x70, 0x6F, 0x73, 0x71, 0x6D, 0x71, 0x7F, 0x83, 0x6E, 0x5B, 0x70, + 0xA7, 0xB4, 0x78, 0x4E, 0x6D, 0x82, 0x6F, 0x74, 0x8A, 0x88, 0x7C, 0x6B, 0x61, 0x7B, 0x91, 0x78, + 0x5E, 0x62, 0x6A, 0x60, 0x52, 0x60, 0x7C, 0x7C, 0x71, 0x73, 0x79, 0x89, 0x9E, 0x98, 0x99, 0xB4, + 0xB9, 0xAB, 0xAB, 0xA5, 0x92, 0x87, 0x7E, 0x72, 0x72, 0x71, 0x6A, 0x67, 0x64, 0x61, 0x6C, 0x7D, + 0x88, 0x89, 0x82, 0x7A, 0x93, 0xC6, 0xC7, 0x7F, 0x51, 0x72, 0x97, 0x89, 0x6E, 0x70, 0x80, 0x75, + 0x5B, 0x62, 0x8B, 0x98, 0x76, 0x5C, 0x6C, 0x83, 0x7E, 0x71, 0x76, 0x84, 0x7D, 0x63, 0x61, 0x82, + 0x94, 0x89, 0x7F, 0x81, 0x8F, 0xA6, 0xAB, 0x9E, 0x9C, 0x9A, 0x8B, 0x83, 0x88, 0x87, 0x7F, 0x7B, + 0x7A, 0x72, 0x70, 0x7F, 0x85, 0x82, 0x8C, 0x90, 0x7F, 0x70, 0x79, 0xA6, 0xCB, 0x9F, 0x5C, 0x6C, + 0x93, 0x7F, 0x73, 0x8C, 0x84, 0x6B, 0x72, 0x79, 0x78, 0x85, 0x7E, 0x5B, 0x61, 0x7E, 0x67, 0x4E, + 0x72, 0x83, 0x67, 0x6D, 0x84, 0x7E, 0x86, 0x96, 0x90, 0x9C, 0xB6, 0xAE, 0x9F, 0xA0, 0x98, 0x8C, + 0x8A, 0x87, 0x80, 0x75, 0x68, 0x64, 0x63, 0x5C, 0x5D, 0x69, 0x72, 0x72, 0x72, 0x75, 0x77, 0x7D, + 0x82, 0x84, 0x9B, 0xB7, 0x99, 0x5B, 0x59, 0x89, 0x9C, 0x7D, 0x5A, 0x64, 0x82, 0x74, 0x54, 0x63, + 0x7B, 0x67, 0x53, 0x5E, 0x70, 0x74, 0x6E, 0x6C, 0x7B, 0x85, 0x7F, 0x85, 0x99, 0x93, 0x7C, 0x82, + 0x9A, 0x99, 0x89, 0x85, 0x88, 0x85, 0x80, 0x80, 0x85, 0x86, 0x7F, 0x73, 0x6C, 0x76, 0x7F, 0x79, + 0x79, 0x83, 0x79, 0x6B, 0x76, 0x7F, 0x7D, 0x7D, 0x79, 0x72, 0x7F, 0x96, 0x98, 0x7E, 0x6B, 0x73, + 0x7E, 0x81, 0x85, 0x85, 0x7A, 0x70, 0x6B, 0x66, 0x69, 0x6A, 0x6A, 0x72, 0x78, 0x74, 0x7B, 0x89, + 0x90, 0x97, 0x98, 0x98, 0xA3, 0xA8, 0xA1, 0xA5, 0xAD, 0xA6, 0x96, 0x8F, 0x93, 0x90, 0x80, 0x79, + 0x7E, 0x7B, 0x71, 0x6C, 0x6C, 0x72, 0x75, 0x6E, 0x6D, 0x76, 0x7C, 0x7A, 0x79, 0x79, 0x7A, 0x7D, + 0x7F, 0x80, 0x84, 0x89, 0x89, 0x80, 0x7F, 0x89, 0x8B, 0x87, 0x83, 0x85, 0x86, 0x7E, 0x74, 0x77, + 0x80, 0x7B, 0x71, 0x72, 0x7A, 0x80, 0x7D, 0x78, 0x7C, 0x86, 0x8B, 0x87, 0x88, 0x8C, 0x86, 0x81, + 0x83, 0x8A, 0x8B, 0x88, 0x7E, 0x7A, 0x83, 0x87, 0x85, 0x8A, 0x8C, 0x86, 0x80, 0x83, 0x8B, 0x8C, + 0x87, 0x82, 0x7E, 0x75, 0x6F, 0x76, 0x76, 0x6F, 0x6D, 0x6F, 0x70, 0x6F, 0x73, 0x78, 0x74, 0x72, + 0x77, 0x78, 0x7A, 0x80, 0x7E, 0x79, 0x7D, 0x7E, 0x7D, 0x84, 0x88, 0x85, 0x7F, 0x7F, 0x85, 0x89, + 0x88, 0x88, 0x87, 0x80, 0x7D, 0x7B, 0x76, 0x78, 0x7D, 0x77, 0x75, 0x76, 0x74, 0x78, 0x7C, 0x7C, + 0x80, 0x80, 0x77, 0x77, 0x7D, 0x80, 0x7F, 0x7A, 0x7D, 0x80, 0x79, 0x75, 0x79, 0x7F, 0x82, 0x7E, + 0x78, 0x7F, 0x86, 0x7C, 0x75, 0x7D, 0x7D, 0x78, 0x78, 0x79, 0x7B, 0x7A, 0x74, 0x72, 0x79, 0x7C, + 0x7B, 0x7C, 0x7F, 0x82, 0x83, 0x7F, 0x82, 0x89, 0x85, 0x7F, 0x81, 0x83, 0x82, 0x81, 0x7F, 0x7F, + 0x84, 0x85, 0x85, 0x88, 0x87, 0x84, 0x85, 0x87, 0x80, 0x7E, 0x83, 0x7F, 0x7D, 0x7F, 0x80, 0x7C, + 0x7D, 0x82, 0x82, 0x85, 0x86, 0x86, 0x89, 0x8D, 0x8E, 0x8D, 0x8C, 0x86, 0x82, 0x84, 0x82, 0x7F, + 0x7C, 0x7B, 0x7B, 0x79, 0x79, 0x7C, 0x7D, 0x7E, 0x7F, 0x83, 0x83, 0x80, 0x82, 0x86, 0x85, 0x84, + 0x83, 0x83, 0x84, 0x82, 0x7F, 0x81, 0x89, 0x8C, 0x89, 0x87, 0x86, 0x8A, 0x88, 0x85, 0x8A, 0x8F, + 0x84, 0x7D, 0x81, 0x82, 0x83, 0x82, 0x81, 0x7E, 0x7C, 0x80, 0x82, 0x80, 0x7F, 0x81, 0x81, 0x80, + 0x7F, 0x7E, 0x80, 0x82, 0x7E, 0x7A, 0x7C, 0x81, 0x82, 0x7E, 0x7B, 0x7B, 0x7E, 0x81, 0x82, 0x7F, + 0x76, 0x74, 0x76, 0x74, 0x70, 0x6E, 0x6F, 0x70, 0x6D, 0x69, 0x6E, 0x74, 0x74, 0x70, 0x6F, 0x76, + 0x7F, 0x7E, 0x7C, 0x81, 0x82, 0x83, 0x87, 0x88, 0x88, 0x88, 0x86, 0x85, 0x86, 0x85, 0x85, 0x82, + 0x7E, 0x7C, 0x78, 0x78, 0x78, 0x75, 0x72, 0x71, 0x75, 0x78, 0x79, 0x79, 0x7B, 0x81, 0x85, 0x83, + 0x82, 0x85, 0x89, 0x89, 0x83, 0x7E, 0x7F, 0x7D, 0x79, 0x74, 0x75, 0x75, 0x70, 0x6A, 0x6B, 0x72, + 0x73, 0x6D, 0x6D, 0x6E, 0x6B, 0x6C, 0x6F, 0x72, 0x74, 0x75, 0x76, 0x7A, 0x7C, 0x7C, 0x7E, 0x83, + 0x86, 0x89, 0x8A, 0x8B, 0x8E, 0x8E, 0x8D, 0x8C, 0x8D, 0x8C, 0x88, 0x85, 0x85, 0x86, 0x84, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x8B, 0x8E, 0x8D, 0x8B, 0x87, 0x86, 0x88, 0x85, 0x7F, 0x7C, 0x7D, + 0x7E, 0x7A, 0x78, 0x7C, 0x7E, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7F, 0x81, 0x82, 0x7F, 0x7D, 0x7F, + 0x7B, 0x77, 0x79, 0x7B, 0x79, 0x79, 0x7E, 0x81, 0x81, 0x83, 0x85, 0x87, 0x86, 0x83, 0x83, 0x88, + 0x83, 0x7D, 0x7D, 0x7D, 0x7E, 0x7B, 0x7B, 0x80, 0x84, 0x86, 0x86, 0x8A, 0x92, 0x95, 0x90, 0x93, + 0x98, 0x95, 0x8F, 0x8B, 0x8A, 0x87, 0x84, 0x80, 0x7C, 0x7D, 0x7E, 0x79, 0x75, 0x75, 0x74, 0x73, + 0x74, 0x73, 0x75, 0x79, 0x79, 0x7A, 0x7D, 0x7D, 0x7C, 0x7B, 0x7F, 0x82, 0x82, 0x7E, 0x7A, 0x7D, + 0x7E, 0x7A, 0x75, 0x74, 0x75, 0x70, 0x69, 0x69, 0x6C, 0x6C, 0x6D, 0x71, 0x73, 0x71, 0x76, 0x7A, + 0x7B, 0x7C, 0x7D, 0x7E, 0x7E, 0x7F, 0x7B, 0x79, 0x7C, 0x7E, 0x7A, 0x7B, 0x81, 0x80, 0x80, 0x84, + 0x88, 0x8B, 0x8E, 0x90, 0x8E, 0x8C, 0x8F, 0x91, 0x8F, 0x85, 0x7E, 0x7F, 0x7E, 0x7A, 0x75, 0x70, + 0x71, 0x6E, 0x69, 0x6A, 0x6F, 0x73, 0x6E, 0x6B, 0x6F, 0x75, 0x77, 0x78, 0x7A, 0x7B, 0x7D, 0x7E, + 0x7E, 0x7E, 0x81, 0x81, 0x7F, 0x7F, 0x7F, 0x80, 0x83, 0x85, 0x86, 0x83, 0x7C, 0x7C, 0x7E, 0x7E, + 0x79, 0x74, 0x73, 0x74, 0x75, 0x74, 0x74, 0x75, 0x7E, 0x80, 0x7A, 0x7D, 0x84, 0x8A, 0x8C, 0x8F, + 0x95, 0x97, 0x96, 0x97, 0x96, 0x94, 0x93, 0x89, 0x85, 0x8A, 0x87, 0x84, 0x83, 0x81, 0x7F, 0x80, + 0x7F, 0x7D, 0x80, 0x85, 0x85, 0x83, 0x87, 0x8B, 0x8A, 0x87, 0x86, 0x87, 0x87, 0x84, 0x81, 0x80, + 0x7F, 0x7C, 0x77, 0x77, 0x77, 0x74, 0x71, 0x70, 0x6F, 0x71, 0x72, 0x74, 0x7A, 0x7C, 0x7C, 0x7A, + 0x7C, 0x82, 0x82, 0x7F, 0x80, 0x80, 0x7F, 0x7E, 0x7C, 0x7D, 0x83, 0x84, 0x7F, 0x81, 0x88, 0x8B, + 0x89, 0x88, 0x8B, 0x8D, 0x8C, 0x8A, 0x8C, 0x91, 0x93, 0x8F, 0x8C, 0x8C, 0x89, 0x88, 0x87, 0x87, + 0x87, 0x88, 0x8B, 0x88, 0x85, 0x86, 0x85, 0x81, 0x7E, 0x7E, 0x7C, 0x74, 0x6C, 0x6B, 0x6B, 0x65, + 0x61, 0x62, 0x63, 0x62, 0x61, 0x61, 0x64, 0x64, 0x64, 0x6B, 0x70, 0x6F, 0x6D, 0x73, 0x7D, 0x7C, + 0x7C, 0x7E, 0x79, 0x79, 0x7F, 0x7D, 0x79, 0x78, 0x7C, 0x80, 0x7E, 0x79, 0x75, 0x78, 0x7F, 0x7A, + 0x79, 0x84, 0x85, 0x7F, 0x82, 0x8B, 0x8E, 0x8B, 0x8B, 0x89, 0x86, 0x8D, 0x8E, 0x8A, 0x8C, 0x8B, + 0x84, 0x83, 0x83, 0x7E, 0x7D, 0x80, 0x7F, 0x79, 0x7B, 0x7F, 0x7A, 0x7B, 0x82, 0x80, 0x7F, 0x83, + 0x80, 0x81, 0x86, 0x81, 0x7F, 0x81, 0x7B, 0x76, 0x77, 0x7A, 0x78, 0x70, 0x6F, 0x71, 0x6D, 0x6D, + 0x6D, 0x6C, 0x76, 0x78, 0x6F, 0x70, 0x79, 0x7D, 0x7D, 0x7C, 0x7B, 0x7F, 0x88, 0x8D, 0x89, 0x85, + 0x88, 0x8F, 0x8E, 0x8A, 0x8B, 0x8B, 0x8A, 0x8A, 0x8B, 0x91, 0x92, 0x8E, 0x8E, 0x90, 0x92, 0x90, + 0x87, 0x8A, 0x93, 0x8F, 0x87, 0x89, 0x8A, 0x87, 0x86, 0x88, 0x86, 0x82, 0x80, 0x81, 0x7E, 0x79, + 0x7D, 0x81, 0x7C, 0x79, 0x7D, 0x81, 0x82, 0x83, 0x88, 0x86, 0x7C, 0x82, 0x8D, 0x88, 0x7F, 0x7D, + 0x7F, 0x7B, 0x76, 0x76, 0x73, 0x71, 0x74, 0x75, 0x73, 0x73, 0x79, 0x75, 0x6A, 0x75, 0x7E, 0x70, + 0x79, 0x84, 0x74, 0x67, 0x77, 0x95, 0x92, 0x7B, 0x7B, 0x64, 0x4F, 0x69, 0x77, 0x84, 0x9D, 0x97, + 0x93, 0x9C, 0x96, 0x8A, 0x86, 0x95, 0x8A, 0x6B, 0x7D, 0x86, 0x69, 0x6E, 0x7E, 0x75, 0x6E, 0x6B, + 0x6F, 0x85, 0x97, 0x83, 0x73, 0x95, 0x98, 0x71, 0x83, 0xAC, 0x99, 0x7D, 0x92, 0x96, 0x67, 0x61, + 0x7A, 0x68, 0x56, 0x5F, 0x65, 0x6B, 0x6B, 0x69, 0x6A, 0x67, 0x60, 0x56, 0x6E, 0x93, 0x83, 0x6F, + 0x82, 0x89, 0x7D, 0x7C, 0x8B, 0x8D, 0x7F, 0x84, 0x8F, 0x8F, 0x8E, 0x84, 0x74, 0x6C, 0x68, 0x62, + 0x63, 0x6C, 0x5F, 0x52, 0x68, 0x6D, 0x5B, 0x69, 0x88, 0x85, 0x6E, 0x88, 0xAC, 0x8F, 0x83, 0x9B, + 0x94, 0x92, 0x9D, 0x9B, 0xA1, 0xAF, 0xBC, 0xAA, 0x9B, 0xB5, 0xAA, 0x8E, 0xA4, 0x99, 0x77, 0x7E, + 0x88, 0x7F, 0x71, 0x6D, 0x6A, 0x53, 0x5A, 0x71, 0x61, 0x61, 0x76, 0x72, 0x79, 0x82, 0x70, 0x6B, + 0x7B, 0x89, 0x81, 0x78, 0x8E, 0x8C, 0x6B, 0x76, 0x86, 0x79, 0x7B, 0x82, 0x83, 0x7F, 0x74, 0x80, + 0x82, 0x75, 0x7B, 0x78, 0x7B, 0x8F, 0x84, 0x80, 0x89, 0x87, 0x8E, 0x8D, 0x8F, 0x94, 0x83, 0x8F, + 0x9E, 0x8C, 0x89, 0x89, 0x81, 0x84, 0x83, 0x8C, 0x8F, 0x81, 0x83, 0x7C, 0x74, 0x7B, 0x77, 0x80, + 0x88, 0x79, 0x76, 0x87, 0x94, 0x87, 0x74, 0x7E, 0x86, 0x82, 0x8A, 0x8F, 0x8E, 0x90, 0x90, 0x92, + 0x97, 0x99, 0x87, 0x7A, 0x8B, 0x8E, 0x75, 0x67, 0x6B, 0x6C, 0x63, 0x61, 0x60, 0x5D, 0x60, 0x59, + 0x52, 0x61, 0x6A, 0x5E, 0x54, 0x60, 0x6D, 0x69, 0x70, 0x75, 0x6D, 0x72, 0x7A, 0x80, 0x89, 0x89, + 0x82, 0x79, 0x84, 0x9C, 0x92, 0x8A, 0x90, 0x8B, 0x90, 0x96, 0x93, 0x93, 0x89, 0x8C, 0x8F, 0x88, + 0x8F, 0x87, 0x7F, 0x89, 0x80, 0x7F, 0x8A, 0x85, 0x80, 0x78, 0x7B, 0x82, 0x75, 0x76, 0x77, 0x6E, + 0x75, 0x73, 0x72, 0x7A, 0x75, 0x71, 0x6C, 0x74, 0x80, 0x71, 0x6E, 0x76, 0x74, 0x7B, 0x7C, 0x7B, + 0x7E, 0x7D, 0x85, 0x80, 0x7C, 0x8A, 0x7F, 0x74, 0x7B, 0x7F, 0x88, 0x80, 0x77, 0x81, 0x81, 0x82, + 0x7F, 0x78, 0x83, 0x7A, 0x6A, 0x74, 0x7D, 0x82, 0x7B, 0x73, 0x85, 0x89, 0x84, 0x8C, 0x8B, 0x90, + 0x91, 0x89, 0x90, 0x8F, 0x8C, 0x8C, 0x85, 0x8D, 0x91, 0x89, 0x88, 0x81, 0x81, 0x84, 0x7D, 0x80, + 0x80, 0x81, 0x89, 0x82, 0x85, 0x94, 0x92, 0x91, 0x92, 0x95, 0x9D, 0x97, 0x90, 0x8E, 0x8E, 0x93, + 0x87, 0x7D, 0x85, 0x7F, 0x72, 0x6E, 0x6F, 0x73, 0x6C, 0x67, 0x6D, 0x6E, 0x72, 0x73, 0x6B, 0x72, + 0x77, 0x70, 0x73, 0x77, 0x74, 0x6E, 0x6E, 0x71, 0x6D, 0x6B, 0x6E, 0x69, 0x6B, 0x71, 0x6F, 0x71, + 0x73, 0x73, 0x79, 0x7C, 0x81, 0x89, 0x88, 0x90, 0x95, 0x8F, 0x92, 0x98, 0x99, 0x9A, 0x9A, 0x9E, + 0x9A, 0x96, 0x9B, 0x99, 0x96, 0x93, 0x89, 0x8F, 0x94, 0x87, 0x85, 0x83, 0x82, 0x84, 0x7D, 0x78, + 0x72, 0x70, 0x78, 0x6F, 0x65, 0x6D, 0x6B, 0x69, 0x6A, 0x65, 0x61, 0x61, 0x68, 0x64, 0x58, 0x65, + 0x66, 0x5D, 0x6D, 0x6F, 0x6D, 0x76, 0x71, 0x73, 0x7D, 0x7D, 0x7B, 0x7A, 0x82, 0x85, 0x7D, 0x7F, + 0x80, 0x81, 0x82, 0x79, 0x85, 0x8C, 0x7D, 0x84, 0x8C, 0x88, 0x8A, 0x83, 0x85, 0x90, 0x89, 0x84, + 0x85, 0x88, 0x8D, 0x86, 0x84, 0x87, 0x88, 0x8D, 0x84, 0x81, 0x88, 0x82, 0x84, 0x84, 0x78, 0x81, + 0x84, 0x79, 0x7D, 0x7C, 0x79, 0x7C, 0x7D, 0x81, 0x7B, 0x76, 0x7C, 0x7E, 0x7F, 0x7A, 0x74, 0x7F, + 0x7F, 0x78, 0x7C, 0x7E, 0x82, 0x7E, 0x7B, 0x8E, 0x8D, 0x81, 0x8C, 0x89, 0x80, 0x8F, 0x97, 0x82, + 0x70, 0x85, 0x9D, 0x8B, 0x7A, 0x88, 0x9A, 0x95, 0x83, 0x95, 0xA4, 0x7E, 0x7A, 0xA2, 0x9D, 0x7A, + 0x70, 0x7C, 0x87, 0x7F, 0x6F, 0x6B, 0x7C, 0x83, 0x6F, 0x73, 0x84, 0x77, 0x78, 0x86, 0x81, 0x82, + 0x85, 0x79, 0x78, 0x87, 0x84, 0x6B, 0x6E, 0x88, 0x79, 0x64, 0x6D, 0x72, 0x6E, 0x6E, 0x73, 0x7B, + 0x73, 0x6A, 0x7A, 0x8F, 0x84, 0x71, 0x85, 0x9A, 0x87, 0x80, 0x85, 0x81, 0x93, 0x94, 0x74, 0x80, + 0xA2, 0x8D, 0x78, 0x9F, 0xB1, 0x86, 0x88, 0xB5, 0xAC, 0x87, 0x85, 0x97, 0x9E, 0x95, 0x88, 0x85, + 0x8D, 0x95, 0x88, 0x82, 0x92, 0x88, 0x74, 0x82, 0x8E, 0x7B, 0x66, 0x66, 0x6F, 0x6F, 0x6D, 0x5E, + 0x51, 0x61, 0x69, 0x5A, 0x59, 0x68, 0x69, 0x5F, 0x68, 0x7C, 0x74, 0x66, 0x6E, 0x73, 0x79, 0x80, + 0x75, 0x6E, 0x77, 0x7A, 0x73, 0x74, 0x7F, 0x7F, 0x77, 0x75, 0x7A, 0x90, 0x90, 0x62, 0x58, 0x8A, + 0x9D, 0x81, 0x6C, 0x75, 0x88, 0x92, 0x8F, 0x85, 0x86, 0x89, 0x80, 0x8C, 0x9F, 0x87, 0x6B, 0x77, + 0x94, 0x95, 0x6E, 0x58, 0x6F, 0x80, 0x78, 0x6F, 0x6E, 0x71, 0x70, 0x6E, 0x79, 0x8C, 0x82, 0x64, + 0x74, 0x9B, 0x8C, 0x6F, 0x76, 0x85, 0x87, 0x87, 0x9D, 0xB5, 0x8A, 0x53, 0x7F, 0xBA, 0x9C, 0x75, + 0x86, 0x9B, 0xA2, 0xA9, 0x9A, 0x8F, 0x98, 0x97, 0x9E, 0xB0, 0x9B, 0x79, 0x78, 0x87, 0x98, 0x8D, + 0x64, 0x5C, 0x6D, 0x65, 0x65, 0x77, 0x68, 0x55, 0x65, 0x71, 0x73, 0x7D, 0x75, 0x68, 0x79, 0x8B, + 0x90, 0x91, 0x88, 0x86, 0x8F, 0x88, 0x95, 0xC3, 0xB6, 0x60, 0x45, 0x8B, 0xAC, 0x7A, 0x66, 0x8B, + 0x93, 0x85, 0x91, 0x9F, 0x99, 0x8E, 0x82, 0x8C, 0xAA, 0xA3, 0x82, 0x7C, 0x81, 0x78, 0x6F, 0x67, + 0x5C, 0x4F, 0x3D, 0x43, 0x59, 0x4E, 0x38, 0x3C, 0x43, 0x4A, 0x58, 0x5C, 0x63, 0x72, 0x73, 0x7D, + 0x98, 0xA0, 0x97, 0x91, 0xA0, 0xCC, 0xC9, 0x7F, 0x74, 0xB2, 0xAB, 0x86, 0x9F, 0xB8, 0xAF, 0xB1, + 0xB2, 0xB1, 0xBF, 0xBB, 0xAD, 0xB0, 0xAA, 0x9A, 0x9E, 0xA1, 0x8F, 0x76, 0x66, 0x64, 0x63, 0x51, + 0x42, 0x43, 0x41, 0x3E, 0x44, 0x44, 0x42, 0x4D, 0x57, 0x57, 0x5A, 0x65, 0x73, 0x7D, 0x80, 0x81, + 0x7B, 0x81, 0xAA, 0xB6, 0x75, 0x50, 0x86, 0x96, 0x60, 0x6C, 0xA8, 0x9A, 0x72, 0x86, 0x9F, 0x95, + 0x98, 0xA7, 0xA4, 0x9B, 0x9E, 0x9D, 0x8A, 0x82, 0x8B, 0x81, 0x69, 0x68, 0x65, 0x4C, 0x46, 0x49, + 0x3D, 0x45, 0x5F, 0x61, 0x5F, 0x6D, 0x71, 0x6E, 0x7A, 0x8D, 0x98, 0x99, 0x97, 0x97, 0x9A, 0xB5, + 0xD0, 0xA7, 0x75, 0x96, 0xAA, 0x78, 0x77, 0xAF, 0xAE, 0x94, 0x98, 0x9A, 0x9A, 0xA4, 0xA2, 0x9C, + 0xA6, 0xAB, 0x97, 0x79, 0x7A, 0x8E, 0x79, 0x5A, 0x67, 0x67, 0x47, 0x3F, 0x42, 0x39, 0x4D, 0x69, + 0x6D, 0x74, 0x77, 0x72, 0x7A, 0x7F, 0x81, 0x98, 0xA2, 0x89, 0x79, 0x7F, 0x91, 0x9C, 0x7C, 0x5D, + 0x79, 0x89, 0x5D, 0x50, 0x82, 0x9F, 0x98, 0x98, 0xA6, 0xA6, 0x9B, 0x99, 0xA3, 0xAF, 0xB3, 0xA2, + 0x86, 0x83, 0x86, 0x68, 0x4E, 0x60, 0x74, 0x60, 0x45, 0x41, 0x46, 0x4A, 0x59, 0x71, 0x82, 0x8D, + 0x8B, 0x82, 0x82, 0x83, 0x7F, 0x83, 0x8B, 0x9B, 0xBF, 0xBC, 0x7D, 0x6D, 0x8F, 0x76, 0x49, 0x6F, + 0xA7, 0x9E, 0x90, 0xA1, 0xB1, 0xA5, 0x8B, 0x87, 0xA2, 0xBC, 0xB0, 0x8F, 0x86, 0x90, 0x76, 0x44, + 0x4A, 0x6F, 0x65, 0x4C, 0x5B, 0x6A, 0x5D, 0x55, 0x62, 0x7A, 0x86, 0x83, 0x88, 0x97, 0x8E, 0x76, + 0x77, 0x86, 0x81, 0x7A, 0x8A, 0x8A, 0x63, 0x4F, 0x5B, 0x4A, 0x30, 0x59, 0x8A, 0x80, 0x84, 0xB2, + 0xB7, 0x8F, 0x90, 0xAE, 0xB1, 0xA2, 0x9F, 0xA6, 0xA2, 0x92, 0x76, 0x64, 0x67, 0x5E, 0x47, 0x45, + 0x59, 0x5A, 0x50, 0x60, 0x75, 0x76, 0x77, 0x8A, 0x93, 0x8D, 0x90, 0x89, 0x74, 0x82, 0xA5, 0x91, + 0x6A, 0x7F, 0x8D, 0x59, 0x40, 0x6E, 0x86, 0x73, 0x85, 0xB5, 0xBD, 0xA7, 0xA8, 0xB5, 0xAD, 0x9B, + 0x98, 0xA5, 0xAB, 0x9D, 0x86, 0x7E, 0x75, 0x62, 0x4F, 0x49, 0x56, 0x60, 0x62, 0x7B, 0x9F, 0x9E, + 0x8F, 0x94, 0x8B, 0x78, 0x76, 0x78, 0x86, 0xA0, 0x95, 0x7D, 0x86, 0x76, 0x42, 0x3E, 0x5D, 0x65, + 0x6D, 0x8F, 0xB1, 0xBF, 0xB4, 0xA2, 0xA7, 0xA6, 0x92, 0x92, 0xAA, 0xB7, 0xA5, 0x94, 0x95, 0x91, + 0x6B, 0x43, 0x42, 0x46, 0x41, 0x4D, 0x72, 0x8C, 0x86, 0x7E, 0x7B, 0x65, 0x41, 0x47, 0x77, 0x83, + 0x72, 0x86, 0xA0, 0x84, 0x5D, 0x60, 0x5C, 0x47, 0x50, 0x71, 0x8E, 0x9B, 0xA2, 0xAC, 0xB6, 0xA8, + 0x88, 0x8A, 0x98, 0x8E, 0x84, 0x8E, 0x9B, 0x8F, 0x7A, 0x6E, 0x6C, 0x5F, 0x4D, 0x5A, 0x70, 0x71, + 0x70, 0x7E, 0x85, 0x77, 0x72, 0x7A, 0x71, 0x60, 0x61, 0x6B, 0x63, 0x5E, 0x61, 0x5F, 0x62, 0x69, + 0x6F, 0x76, 0x7F, 0x84, 0x8B, 0x97, 0x9E, 0xA8, 0xB0, 0xAD, 0xA5, 0xA8, 0xA5, 0x96, 0x90, 0x94, + 0x8D, 0x7D, 0x7D, 0x82, 0x7D, 0x79, 0x79, 0x7B, 0x7B, 0x72, 0x6B, 0x7C, 0x8A, 0x7C, 0x7B, 0x90, + 0x89, 0x6B, 0x67, 0x76, 0x76, 0x6B, 0x6F, 0x79, 0x7B, 0x78, 0x7D, 0x87, 0x86, 0x83, 0x8B, 0x98, + 0x99, 0x93, 0x99, 0x9E, 0x96, 0x91, 0x8F, 0x88, 0x85, 0x87, 0x81, 0x7A, 0x7A, 0x6F, 0x62, 0x5F, + 0x62, 0x61, 0x5C, 0x60, 0x6E, 0x76, 0x71, 0x76, 0x81, 0x75, 0x69, 0x6E, 0x74, 0x6F, 0x6D, 0x7A, + 0x88, 0x8C, 0x8B, 0x9A, 0xA8, 0xA1, 0x9B, 0xA7, 0xA9, 0x9C, 0x98, 0x95, 0x89, 0x83, 0x84, 0x7A, + 0x72, 0x74, 0x73, 0x6E, 0x6B, 0x6B, 0x70, 0x77, 0x76, 0x79, 0x7B, 0x78, 0x7D, 0x82, 0x76, 0x70, + 0x79, 0x76, 0x70, 0x79, 0x7D, 0x7A, 0x7E, 0x82, 0x85, 0x8F, 0x98, 0x9E, 0xA3, 0x9F, 0x9A, 0xA2, + 0xA9, 0xA7, 0xA3, 0xA0, 0x9E, 0x95, 0x8B, 0x86, 0x83, 0x7F, 0x80, 0x7E, 0x6E, 0x6C, 0x74, 0x6A, + 0x5D, 0x60, 0x65, 0x59, 0x52, 0x5B, 0x64, 0x62, 0x64, 0x75, 0x7C, 0x75, 0x7B, 0x8A, 0x89, 0x7B, + 0x7C, 0x86, 0x81, 0x7B, 0x84, 0x8E, 0x89, 0x86, 0x90, 0x95, 0x90, 0x85, 0x84, 0x83, 0x79, 0x6F, + 0x70, 0x76, 0x70, 0x67, 0x63, 0x64, 0x5B, 0x4F, 0x57, 0x63, 0x61, 0x5E, 0x6D, 0x7D, 0x7F, 0x7A, + 0x7C, 0x87, 0x89, 0x82, 0x86, 0x8E, 0x87, 0x82, 0x89, 0x8B, 0x88, 0x8B, 0x90, 0x92, 0x90, 0x8A, + 0x87, 0x8A, 0x81, 0x76, 0x77, 0x78, 0x6B, 0x5D, 0x5D, 0x5B, 0x55, 0x55, 0x5C, 0x68, 0x70, 0x7A, + 0x85, 0x8D, 0x8A, 0x83, 0x8C, 0x8F, 0x89, 0x87, 0x8E, 0x94, 0x91, 0x97, 0x9F, 0xA5, 0xA5, 0xA0, + 0x9F, 0x99, 0x9B, 0x9B, 0x94, 0x90, 0x8E, 0x85, 0x79, 0x76, 0x6E, 0x63, 0x64, 0x63, 0x5C, 0x58, + 0x5D, 0x69, 0x6B, 0x6A, 0x75, 0x80, 0x7F, 0x80, 0x8B, 0x8F, 0x90, 0x92, 0x92, 0x9A, 0x9D, 0x99, + 0x9F, 0xA8, 0xA8, 0xAC, 0xBA, 0xB9, 0xAD, 0xA9, 0xA3, 0x9B, 0x8C, 0x75, 0x63, 0x5A, 0x51, 0x43, + 0x3F, 0x44, 0x45, 0x49, 0x55, 0x6D, 0x7B, 0x7D, 0x82, 0x89, 0x82, 0x79, 0x7F, 0x82, 0x7D, 0x84, + 0x96, 0x9E, 0xA0, 0xA9, 0xAC, 0xA9, 0xAD, 0xB4, 0xAD, 0xA1, 0x9E, 0x92, 0x79, 0x66, 0x5F, 0x4B, + 0x38, 0x37, 0x35, 0x2E, 0x33, 0x3D, 0x46, 0x55, 0x61, 0x65, 0x74, 0x7D, 0x79, 0x7D, 0x89, 0x8D, + 0x8E, 0x96, 0x9E, 0xA2, 0xA3, 0xA4, 0xAB, 0xA8, 0xA2, 0xA1, 0x9B, 0x95, 0x93, 0x8A, 0x7A, 0x7A, + 0x76, 0x66, 0x60, 0x5F, 0x5B, 0x5E, 0x65, 0x66, 0x6C, 0x73, 0x75, 0x76, 0x74, 0x70, 0x6F, 0x72, + 0x73, 0x76, 0x79, 0x7B, 0x83, 0x8B, 0x8E, 0x97, 0xAD, 0xBE, 0xBE, 0xBF, 0xC9, 0xC5, 0xAC, 0x98, + 0x8A, 0x73, 0x58, 0x48, 0x41, 0x3D, 0x3F, 0x45, 0x52, 0x61, 0x6A, 0x6D, 0x71, 0x6F, 0x63, 0x5D, + 0x65, 0x6B, 0x6E, 0x75, 0x81, 0x8E, 0x95, 0x9B, 0xA4, 0xB2, 0xBD, 0xC1, 0xC4, 0xC9, 0xCA, 0xBA, + 0xA5, 0x94, 0x7D, 0x5D, 0x44, 0x3B, 0x3B, 0x3A, 0x39, 0x44, 0x56, 0x56, 0x4C, 0x57, 0x66, 0x5F, + 0x55, 0x61, 0x70, 0x73, 0x7B, 0x8A, 0x99, 0xA1, 0xAB, 0xB8, 0xBD, 0xBE, 0xBA, 0xB1, 0xAF, 0xAD, + 0x98, 0x85, 0x81, 0x6F, 0x5B, 0x5D, 0x64, 0x60, 0x64, 0x71, 0x7D, 0x8C, 0x92, 0x8E, 0x95, 0x96, + 0x81, 0x71, 0x75, 0x77, 0x71, 0x74, 0x7C, 0x85, 0x89, 0x86, 0x8D, 0xA1, 0xAB, 0xA8, 0xB6, 0xC8, + 0xBE, 0xA8, 0xA3, 0x9F, 0x86, 0x6F, 0x68, 0x65, 0x5C, 0x54, 0x57, 0x63, 0x68, 0x5E, 0x59, 0x5F, + 0x59, 0x44, 0x3E, 0x4F, 0x5A, 0x5D, 0x6C, 0x86, 0x9A, 0xA8, 0xBB, 0xC8, 0xC9, 0xCE, 0xDB, 0xD8, + 0xC7, 0xC3, 0xB8, 0x96, 0x79, 0x6A, 0x50, 0x38, 0x32, 0x32, 0x33, 0x3B, 0x42, 0x52, 0x66, 0x6C, + 0x6D, 0x7E, 0x88, 0x7F, 0x7A, 0x7B, 0x76, 0x75, 0x7E, 0x86, 0x8D, 0x95, 0x99, 0x9C, 0xA6, 0xA6, + 0x98, 0x97, 0x99, 0x88, 0x73, 0x6E, 0x66, 0x54, 0x4C, 0x4C, 0x52, 0x58, 0x58, 0x62, 0x78, 0x81, + 0x77, 0x78, 0x7B, 0x6C, 0x60, 0x60, 0x62, 0x66, 0x70, 0x78, 0x82, 0x90, 0x91, 0x95, 0xAC, 0xB7, + 0xAD, 0xB5, 0xC9, 0xBD, 0xA6, 0xA2, 0x9A, 0x7E, 0x65, 0x5C, 0x56, 0x4C, 0x46, 0x4E, 0x62, 0x6A, + 0x65, 0x68, 0x6E, 0x62, 0x53, 0x5A, 0x67, 0x67, 0x69, 0x7E, 0x97, 0xA6, 0xB3, 0xC2, 0xCB, 0xCE, + 0xCF, 0xD2, 0xD3, 0xCD, 0xC1, 0xB3, 0xA4, 0x8E, 0x75, 0x5F, 0x4D, 0x40, 0x3C, 0x3D, 0x3D, 0x43, + 0x51, 0x5B, 0x5C, 0x62, 0x6E, 0x70, 0x6A, 0x69, 0x71, 0x7B, 0x87, 0x94, 0xA6, 0xB7, 0xBC, 0xBC, + 0xCA, 0xD1, 0xC2, 0xB6, 0xB9, 0xAB, 0x8D, 0x7D, 0x76, 0x60, 0x4D, 0x50, 0x57, 0x56, 0x54, 0x5E, + 0x6E, 0x73, 0x6C, 0x6C, 0x70, 0x63, 0x52, 0x52, 0x58, 0x57, 0x55, 0x60, 0x72, 0x80, 0x80, 0x83, + 0x98, 0xA8, 0xA6, 0xAC, 0xC0, 0xC2, 0xB2, 0xAA, 0xA7, 0x98, 0x82, 0x71, 0x68, 0x64, 0x5F, 0x5D, + 0x67, 0x72, 0x6D, 0x67, 0x6C, 0x69, 0x5B, 0x58, 0x60, 0x62, 0x62, 0x6E, 0x82, 0x94, 0xA1, 0xAE, + 0xBA, 0xBB, 0xB9, 0xC2, 0xC4, 0xB6, 0xAB, 0xAA, 0x99, 0x81, 0x78, 0x6D, 0x53, 0x43, 0x4A, 0x50, + 0x4B, 0x4B, 0x57, 0x64, 0x65, 0x5F, 0x65, 0x73, 0x72, 0x64, 0x64, 0x74, 0x80, 0x81, 0x8B, 0xA3, + 0xB3, 0xAE, 0xAE, 0xC1, 0xC8, 0xB5, 0xA9, 0xAB, 0xA1, 0x87, 0x73, 0x68, 0x5A, 0x4A, 0x42, 0x47, + 0x4E, 0x4F, 0x57, 0x68, 0x72, 0x6C, 0x6C, 0x72, 0x6E, 0x64, 0x61, 0x65, 0x6B, 0x70, 0x77, 0x88, + 0x99, 0x98, 0x97, 0xA9, 0xB9, 0xB4, 0xAD, 0xBA, 0xC2, 0xAF, 0x9B, 0x9B, 0x92, 0x75, 0x5E, 0x5E, + 0x5D, 0x53, 0x4D, 0x56, 0x5D, 0x55, 0x4A, 0x49, 0x49, 0x3F, 0x36, 0x3F, 0x53, 0x61, 0x6D, 0x88, + 0xA8, 0xB7, 0xBE, 0xCB, 0xD4, 0xD6, 0xDC, 0xDD, 0xD2, 0xCF, 0xCB, 0xB4, 0x9A, 0x8D, 0x79, 0x5D, + 0x4E, 0x4C, 0x4B, 0x46, 0x44, 0x49, 0x55, 0x58, 0x52, 0x54, 0x60, 0x67, 0x61, 0x5E, 0x6C, 0x7E, + 0x88, 0x96, 0xB0, 0xC2, 0xC4, 0xC6, 0xCC, 0xD2, 0xCE, 0xC1, 0xB4, 0xAE, 0x9D, 0x81, 0x71, 0x6E, + 0x61, 0x51, 0x54, 0x61, 0x66, 0x62, 0x66, 0x72, 0x74, 0x6A, 0x66, 0x71, 0x71, 0x65, 0x62, 0x6B, + 0x72, 0x76, 0x80, 0x90, 0xA1, 0xA5, 0x9C, 0xA5, 0xB9, 0xB5, 0xA5, 0xAB, 0xB1, 0x9C, 0x89, 0x8B, + 0x87, 0x71, 0x5E, 0x60, 0x68, 0x68, 0x60, 0x5F, 0x68, 0x65, 0x54, 0x4B, 0x4A, 0x42, 0x38, 0x3C, + 0x4C, 0x5B, 0x69, 0x78, 0x8E, 0xA7, 0xB2, 0xB3, 0xB6, 0xBB, 0xBF, 0xC3, 0xBC, 0xB2, 0xB3, 0xAC, + 0x8E, 0x76, 0x6B, 0x54, 0x34, 0x2A, 0x32, 0x34, 0x33, 0x38, 0x43, 0x4E, 0x52, 0x53, 0x61, 0x71, + 0x6F, 0x6B, 0x79, 0x87, 0x8A, 0x96, 0xAC, 0xBE, 0xC2, 0xBF, 0xBE, 0xC6, 0xC3, 0xAA, 0x94, 0x8D, + 0x81, 0x65, 0x51, 0x51, 0x4D, 0x3D, 0x40, 0x5E, 0x71, 0x70, 0x73, 0x82, 0x86, 0x78, 0x6A, 0x6E, + 0x74, 0x6C, 0x66, 0x6C, 0x7B, 0x87, 0x90, 0x9F, 0xB4, 0xBC, 0xB0, 0xB1, 0xC2, 0xC7, 0xBB, 0xAD, + 0xAB, 0xA4, 0x8E, 0x7C, 0x78, 0x68, 0x4D, 0x4F, 0x60, 0x64, 0x6A, 0x7A, 0x80, 0x79, 0x72, 0x6A, + 0x62, 0x5C, 0x5B, 0x61, 0x6B, 0x77, 0x85, 0x94, 0xA5, 0xB7, 0xC3, 0xCA, 0xC7, 0xBE, 0xBE, 0xC5, + 0xC3, 0xB7, 0xB2, 0xB2, 0x9E, 0x77, 0x59, 0x4B, 0x34, 0x15, 0x13, 0x2F, 0x41, 0x41, 0x48, 0x5C, + 0x66, 0x5E, 0x57, 0x5F, 0x6A, 0x6B, 0x72, 0x87, 0x9C, 0xAC, 0xBF, 0xCF, 0xD3, 0xD0, 0xCC, 0xC4, + 0xBB, 0xB1, 0x9F, 0x8A, 0x7D, 0x72, 0x58, 0x45, 0x46, 0x44, 0x39, 0x37, 0x50, 0x67, 0x69, 0x68, + 0x77, 0x7E, 0x6A, 0x5C, 0x62, 0x68, 0x62, 0x5C, 0x66, 0x7E, 0x8E, 0x91, 0x93, 0xA2, 0xAA, 0xA7, + 0xAD, 0xBD, 0xC9, 0xC1, 0xB6, 0xB1, 0xA2, 0x87, 0x6E, 0x67, 0x60, 0x57, 0x59, 0x69, 0x7A, 0x7B, + 0x79, 0x77, 0x70, 0x5F, 0x4C, 0x47, 0x46, 0x45, 0x4D, 0x63, 0x7E, 0x95, 0xA3, 0xAB, 0xB1, 0xB0, + 0x9E, 0x90, 0x99, 0xB5, 0xD0, 0xD4, 0xC6, 0xB9, 0xA6, 0x7C, 0x4E, 0x38, 0x28, 0x18, 0x1B, 0x38, + 0x5C, 0x68, 0x5A, 0x55, 0x67, 0x66, 0x48, 0x3D, 0x54, 0x74, 0x86, 0x8F, 0xA5, 0xC0, 0xC1, 0xAE, + 0xAD, 0xB3, 0xA6, 0x95, 0x98, 0xB0, 0xC4, 0xB5, 0x8B, 0x75, 0x71, 0x4E, 0x24, 0x24, 0x43, 0x54, + 0x58, 0x6C, 0x8B, 0x92, 0x73, 0x5C, 0x62, 0x64, 0x5A, 0x5E, 0x78, 0x8D, 0x92, 0x8B, 0x8B, 0x90, + 0x88, 0x80, 0x85, 0x94, 0xA0, 0xA8, 0xAD, 0xB8, 0xBD, 0xAA, 0x8D, 0x7D, 0x75, 0x65, 0x5C, 0x6A, + 0x7F, 0x84, 0x82, 0x8D, 0x8B, 0x78, 0x6C, 0x73, 0x75, 0x70, 0x75, 0x7D, 0x7E, 0x7A, 0x7D, 0x86, + 0x8F, 0x99, 0xA5, 0xB3, 0xBB, 0xB9, 0xAD, 0xA2, 0xA5, 0xBB, 0xC6, 0xAE, 0x90, 0x8F, 0x83, 0x52, + 0x30, 0x3D, 0x53, 0x52, 0x4E, 0x61, 0x7C, 0x75, 0x51, 0x4C, 0x67, 0x77, 0x76, 0x79, 0x8C, 0xA4, + 0xA2, 0x89, 0x84, 0x98, 0xA3, 0x9F, 0xA7, 0xBD, 0xC7, 0xAC, 0x85, 0x8B, 0xA5, 0x95, 0x66, 0x57, + 0x6A, 0x68, 0x46, 0x32, 0x49, 0x66, 0x64, 0x5A, 0x65, 0x76, 0x71, 0x5E, 0x57, 0x61, 0x72, 0x78, + 0x6F, 0x6D, 0x77, 0x80, 0x77, 0x72, 0x7D, 0x8F, 0x96, 0x91, 0x94, 0x97, 0x92, 0x96, 0xA1, 0x9B, + 0x86, 0x7B, 0x72, 0x5F, 0x4D, 0x4E, 0x66, 0x76, 0x6E, 0x69, 0x71, 0x6D, 0x64, 0x60, 0x5E, 0x5F, + 0x6D, 0x72, 0x68, 0x65, 0x6F, 0x81, 0x8D, 0x94, 0x9E, 0xA8, 0xAA, 0xA1, 0xA1, 0xA2, 0xA7, 0xBA, + 0xD0, 0xC7, 0x96, 0x70, 0x63, 0x54, 0x3E, 0x3D, 0x5B, 0x7F, 0x8A, 0x6F, 0x55, 0x5E, 0x6F, 0x74, + 0x7B, 0x8C, 0xA0, 0xA4, 0x8C, 0x6E, 0x6E, 0x7E, 0x8D, 0xA2, 0xB3, 0xB2, 0xA0, 0x91, 0x8E, 0x96, + 0x97, 0x90, 0x98, 0xA8, 0x9F, 0x75, 0x51, 0x47, 0x4B, 0x52, 0x5C, 0x6A, 0x77, 0x7D, 0x77, 0x70, + 0x6E, 0x71, 0x7F, 0x96, 0xA0, 0x9A, 0x8F, 0x7C, 0x68, 0x63, 0x6D, 0x7D, 0x8E, 0x9C, 0x97, 0x87, + 0x7A, 0x84, 0x97, 0x99, 0x94, 0x9C, 0xA5, 0x98, 0x83, 0x6B, 0x57, 0x53, 0x5C, 0x64, 0x68, 0x6C, + 0x6B, 0x6A, 0x6A, 0x65, 0x68, 0x77, 0x7F, 0x81, 0x88, 0x8C, 0x85, 0x7B, 0x7E, 0x8A, 0x9B, 0xA6, + 0xAA, 0xAA, 0xA4, 0xA1, 0xA0, 0xA0, 0x97, 0x8C, 0x8D, 0x95, 0x95, 0x82, 0x6D, 0x5B, 0x48, 0x43, + 0x52, 0x5F, 0x61, 0x68, 0x77, 0x7C, 0x72, 0x6D, 0x76, 0x82, 0x86, 0x88, 0x8E, 0x91, 0x92, 0x8D, + 0x85, 0x87, 0x91, 0x9A, 0xA0, 0xA6, 0xAC, 0xA9, 0x9B, 0x8C, 0x89, 0x88, 0x7D, 0x79, 0x7F, 0x82, + 0x74, 0x5E, 0x53, 0x58, 0x5F, 0x5F, 0x64, 0x6B, 0x71, 0x75, 0x6F, 0x6A, 0x6D, 0x71, 0x6E, 0x73, + 0x82, 0x87, 0x80, 0x7B, 0x7E, 0x83, 0x8E, 0x93, 0x90, 0x8E, 0x94, 0x97, 0x90, 0x8F, 0x8D, 0x86, + 0x7E, 0x7E, 0x7E, 0x77, 0x72, 0x6F, 0x69, 0x5B, 0x58, 0x63, 0x6E, 0x6A, 0x5F, 0x65, 0x6E, 0x63, + 0x56, 0x5F, 0x6F, 0x6F, 0x6E, 0x72, 0x79, 0x7E, 0x7D, 0x81, 0x90, 0x99, 0x9B, 0xA1, 0xA5, 0xA3, + 0xA4, 0xA4, 0xA2, 0xA4, 0xA0, 0x99, 0x9D, 0x9D, 0x8D, 0x7C, 0x72, 0x67, 0x5F, 0x5B, 0x5A, 0x5A, + 0x58, 0x55, 0x54, 0x53, 0x50, 0x50, 0x55, 0x61, 0x72, 0x80, 0x8A, 0x90, 0x92, 0x96, 0x9D, 0xA3, + 0xAC, 0xB6, 0xB9, 0xB9, 0xBA, 0xB4, 0xAC, 0xAC, 0xAC, 0xA6, 0x9E, 0x9B, 0x9A, 0x93, 0x7F, 0x6B, + 0x63, 0x5D, 0x57, 0x58, 0x5D, 0x61, 0x61, 0x62, 0x64, 0x65, 0x64, 0x63, 0x6A, 0x76, 0x7E, 0x85, + 0x87, 0x85, 0x86, 0x93, 0x9C, 0x99, 0x9C, 0xA5, 0xAB, 0xAB, 0xA3, 0x9C, 0x9A, 0x9C, 0x96, 0x92, + 0x8F, 0x89, 0x88, 0x86, 0x7B, 0x6C, 0x67, 0x61, 0x55, 0x50, 0x57, 0x5D, 0x54, 0x4D, 0x51, 0x53, + 0x51, 0x53, 0x5A, 0x63, 0x6B, 0x6D, 0x6E, 0x76, 0x81, 0x8A, 0x95, 0xA2, 0xA8, 0xAA, 0xAE, 0xB0, + 0xAA, 0xA5, 0xA4, 0x9D, 0x91, 0x89, 0x85, 0x7F, 0x7D, 0x7C, 0x71, 0x62, 0x5C, 0x5A, 0x53, 0x4C, + 0x4A, 0x50, 0x5D, 0x60, 0x57, 0x57, 0x5C, 0x5A, 0x5D, 0x6E, 0x79, 0x7C, 0x86, 0x90, 0x90, 0x91, + 0x98, 0x9D, 0xA4, 0xAC, 0xB0, 0xB2, 0xB4, 0xAE, 0xA5, 0xA1, 0x9A, 0x8E, 0x8D, 0x96, 0x96, 0x86, + 0x75, 0x6A, 0x62, 0x59, 0x55, 0x59, 0x60, 0x63, 0x5F, 0x57, 0x54, 0x57, 0x5E, 0x64, 0x6E, 0x78, + 0x7C, 0x80, 0x87, 0x8B, 0x8D, 0x96, 0x9F, 0xA7, 0xB1, 0xB3, 0xB0, 0xB5, 0xB6, 0xAA, 0xA3, 0xA4, + 0x9F, 0x9D, 0x9C, 0x8B, 0x7B, 0x7A, 0x77, 0x68, 0x5C, 0x55, 0x4E, 0x49, 0x42, 0x3F, 0x47, 0x4B, + 0x48, 0x4B, 0x4F, 0x4F, 0x55, 0x64, 0x77, 0x85, 0x8F, 0x9B, 0xAC, 0xB6, 0xB6, 0xBA, 0xC8, 0xCF, + 0xC7, 0xBA, 0xB8, 0xB8, 0xAD, 0x9E, 0x98, 0x90, 0x81, 0x75, 0x68, 0x5A, 0x56, 0x53, 0x4C, 0x49, + 0x43, 0x39, 0x32, 0x30, 0x36, 0x4C, 0x5D, 0x5E, 0x66, 0x77, 0x7C, 0x7D, 0x84, 0x90, 0xA3, 0xB2, + 0xB1, 0xB0, 0xB5, 0xB4, 0xB3, 0xB5, 0xAF, 0xAA, 0xAA, 0xA3, 0x9E, 0xA5, 0xA0, 0x8C, 0x84, 0x85, + 0x81, 0x7F, 0x78, 0x67, 0x63, 0x73, 0x75, 0x57, 0x3E, 0x44, 0x4A, 0x3D, 0x3D, 0x57, 0x68, 0x65, + 0x64, 0x6C, 0x7B, 0x86, 0x85, 0x8E, 0xAC, 0xB0, 0x93, 0x8E, 0xA3, 0xA7, 0xA4, 0xAE, 0xB4, 0xB6, + 0xB7, 0xA3, 0x8E, 0x97, 0xA2, 0x95, 0x87, 0x83, 0x76, 0x63, 0x52, 0x44, 0x47, 0x60, 0x7C, 0x74, + 0x47, 0x28, 0x32, 0x36, 0x25, 0x37, 0x66, 0x6A, 0x49, 0x3D, 0x50, 0x70, 0x8C, 0x90, 0x98, 0xB8, + 0xBC, 0x9A, 0x98, 0xBC, 0xCB, 0xC8, 0xC4, 0xB5, 0xAD, 0xAC, 0x92, 0x82, 0x9B, 0x9B, 0x6D, 0x5D, + 0x6B, 0x5A, 0x45, 0x48, 0x40, 0x41, 0x6D, 0x7A, 0x40, 0x24, 0x4A, 0x52, 0x37, 0x4C, 0x7B, 0x7C, + 0x6A, 0x6E, 0x87, 0xB1, 0xCA, 0xB7, 0xB1, 0xD0, 0xC7, 0x9D, 0xA1, 0xB8, 0xAA, 0x9A, 0x94, 0x87, + 0x8F, 0x9B, 0x88, 0x83, 0xA1, 0x9C, 0x79, 0x78, 0x88, 0x7D, 0x6C, 0x6A, 0x61, 0x5C, 0x79, 0x97, + 0x71, 0x34, 0x3E, 0x64, 0x50, 0x43, 0x72, 0x8D, 0x76, 0x6C, 0x7B, 0x99, 0xC3, 0xC1, 0x9B, 0xA5, + 0xBF, 0xA3, 0x8D, 0xAB, 0xB5, 0x9D, 0x93, 0x8C, 0x85, 0x92, 0x93, 0x81, 0x80, 0x84, 0x6C, 0x59, + 0x68, 0x73, 0x64, 0x57, 0x56, 0x57, 0x64, 0x85, 0x8D, 0x67, 0x4E, 0x69, 0x81, 0x75, 0x78, 0x91, + 0x8F, 0x7D, 0x7F, 0x91, 0xA6, 0xB0, 0x9C, 0x87, 0x97, 0xA2, 0x89, 0x7D, 0x8C, 0x86, 0x75, 0x74, + 0x72, 0x70, 0x76, 0x6E, 0x5F, 0x6E, 0x7D, 0x6D, 0x65, 0x76, 0x73, 0x5E, 0x61, 0x74, 0x6D, 0x5C, + 0x6D, 0x8A, 0x77, 0x4C, 0x51, 0x70, 0x76, 0x74, 0x7A, 0x7D, 0x84, 0x91, 0x93, 0xA2, 0xBB, 0xAB, + 0x8B, 0x93, 0xA0, 0x8E, 0x86, 0x8B, 0x7C, 0x70, 0x76, 0x75, 0x77, 0x82, 0x7C, 0x6A, 0x70, 0x7D, + 0x78, 0x71, 0x74, 0x78, 0x77, 0x76, 0x7A, 0x78, 0x6A, 0x70, 0x92, 0x89, 0x4F, 0x44, 0x72, 0x7A, + 0x66, 0x79, 0x93, 0x8D, 0x8B, 0x90, 0x98, 0xB8, 0xC6, 0x9A, 0x87, 0xB1, 0xB6, 0x8A, 0x7F, 0x8A, + 0x7E, 0x74, 0x71, 0x6C, 0x74, 0x7A, 0x62, 0x5C, 0x7E, 0x89, 0x6F, 0x6B, 0x78, 0x72, 0x6D, 0x76, + 0x74, 0x6C, 0x6A, 0x5E, 0x63, 0x8D, 0x98, 0x64, 0x4F, 0x7B, 0x93, 0x86, 0x8E, 0x9B, 0x93, 0x93, + 0x9F, 0xA3, 0xAA, 0xAE, 0x94, 0x81, 0x91, 0x92, 0x75, 0x6B, 0x73, 0x6F, 0x6D, 0x72, 0x6D, 0x6C, + 0x7B, 0x7A, 0x71, 0x83, 0x92, 0x7F, 0x78, 0x86, 0x7F, 0x70, 0x77, 0x79, 0x77, 0x7F, 0x72, 0x60, + 0x86, 0xA9, 0x7D, 0x51, 0x6F, 0x8F, 0x8C, 0x90, 0x99, 0x98, 0x9B, 0x97, 0x8F, 0xA9, 0xC6, 0xA9, + 0x7D, 0x82, 0x93, 0x83, 0x72, 0x72, 0x71, 0x6C, 0x69, 0x62, 0x6A, 0x7F, 0x79, 0x64, 0x72, 0x8F, + 0x88, 0x78, 0x7E, 0x7C, 0x72, 0x72, 0x75, 0x75, 0x73, 0x5E, 0x5B, 0x89, 0x9A, 0x62, 0x48, 0x70, + 0x85, 0x78, 0x83, 0x91, 0x90, 0x98, 0x97, 0x85, 0x99, 0xB8, 0x96, 0x6A, 0x85, 0xA2, 0x83, 0x68, + 0x74, 0x77, 0x6E, 0x6F, 0x6A, 0x67, 0x76, 0x77, 0x61, 0x69, 0x8A, 0x81, 0x60, 0x65, 0x7C, 0x77, + 0x6B, 0x6D, 0x6C, 0x65, 0x60, 0x56, 0x61, 0x90, 0x9B, 0x61, 0x4A, 0x7F, 0x99, 0x7E, 0x7F, 0x9C, + 0x9E, 0x95, 0x93, 0x90, 0x9C, 0xAA, 0x91, 0x70, 0x80, 0x99, 0x85, 0x6A, 0x6F, 0x77, 0x6E, 0x69, + 0x70, 0x7C, 0x82, 0x7D, 0x71, 0x77, 0x93, 0x9C, 0x84, 0x79, 0x87, 0x82, 0x6C, 0x6C, 0x76, 0x75, + 0x76, 0x6E, 0x61, 0x7B, 0xA4, 0x8B, 0x5F, 0x77, 0x9D, 0x91, 0x8A, 0xA0, 0x9D, 0x91, 0x9F, 0xA7, + 0xA5, 0xB6, 0xB2, 0x85, 0x78, 0x94, 0x8B, 0x6A, 0x6F, 0x7A, 0x65, 0x5D, 0x6F, 0x74, 0x74, 0x7F, + 0x7D, 0x74, 0x87, 0x9A, 0x86, 0x79, 0x8B, 0x87, 0x71, 0x79, 0x85, 0x76, 0x6D, 0x6B, 0x65, 0x84, + 0xAF, 0x8C, 0x51, 0x6C, 0x9D, 0x8B, 0x7E, 0x9A, 0x9F, 0x92, 0x9E, 0x9F, 0x93, 0xA7, 0xAC, 0x7E, + 0x6C, 0x8E, 0x8F, 0x6C, 0x68, 0x74, 0x6C, 0x6B, 0x74, 0x72, 0x71, 0x7A, 0x73, 0x69, 0x78, 0x88, + 0x7B, 0x6D, 0x75, 0x7A, 0x6F, 0x6D, 0x77, 0x73, 0x66, 0x66, 0x65, 0x5F, 0x7D, 0xA9, 0x94, 0x62, + 0x70, 0x98, 0x93, 0x89, 0x9A, 0x9E, 0x97, 0x9B, 0x96, 0x91, 0xA4, 0xA2, 0x78, 0x67, 0x7D, 0x7B, + 0x61, 0x62, 0x73, 0x6C, 0x5B, 0x5D, 0x69, 0x6F, 0x72, 0x71, 0x6C, 0x76, 0x88, 0x82, 0x6D, 0x73, + 0x83, 0x77, 0x67, 0x70, 0x7A, 0x72, 0x6A, 0x6F, 0x76, 0x72, 0x72, 0x8D, 0xAC, 0x9B, 0x75, 0x7E, + 0x9B, 0x99, 0x97, 0xA8, 0xA7, 0x9C, 0x9A, 0x89, 0x7A, 0x90, 0x95, 0x69, 0x57, 0x74, 0x73, 0x5A, + 0x62, 0x6F, 0x62, 0x60, 0x6B, 0x64, 0x66, 0x82, 0x8B, 0x76, 0x7A, 0x92, 0x8F, 0x7F, 0x89, 0x95, + 0x88, 0x81, 0x86, 0x7E, 0x78, 0x7E, 0x71, 0x6A, 0x94, 0xAE, 0x7C, 0x53, 0x74, 0x8F, 0x7E, 0x7F, + 0x92, 0x8F, 0x89, 0x92, 0x8E, 0x8B, 0xA0, 0xA1, 0x79, 0x6E, 0x8A, 0x85, 0x61, 0x60, 0x78, 0x74, + 0x64, 0x69, 0x74, 0x78, 0x81, 0x7D, 0x6D, 0x7A, 0x97, 0x91, 0x80, 0x90, 0x9E, 0x87, 0x74, 0x81, + 0x8C, 0x87, 0x80, 0x7C, 0x75, 0x71, 0x7B, 0x93, 0x99, 0x7F, 0x6B, 0x77, 0x8B, 0x92, 0x99, 0xA1, + 0xA5, 0xA6, 0x9D, 0x8F, 0x99, 0xA6, 0x8D, 0x72, 0x7C, 0x82, 0x67, 0x5F, 0x71, 0x6E, 0x5E, 0x61, + 0x6A, 0x6A, 0x70, 0x78, 0x74, 0x7A, 0x8D, 0x93, 0x8B, 0x8F, 0x99, 0x8E, 0x7E, 0x81, 0x89, 0x84, + 0x7A, 0x73, 0x6C, 0x6B, 0x77, 0x74, 0x60, 0x6F, 0xA3, 0xAE, 0x80, 0x6B, 0x8C, 0xA0, 0x91, 0x93, + 0xA5, 0xA1, 0x91, 0x87, 0x7E, 0x7B, 0x8A, 0x87, 0x62, 0x54, 0x6D, 0x68, 0x42, 0x45, 0x64, 0x5F, + 0x51, 0x60, 0x68, 0x62, 0x6C, 0x73, 0x70, 0x87, 0x9E, 0x8B, 0x7E, 0x9B, 0xA5, 0x87, 0x7A, 0x83, + 0x7D, 0x6F, 0x6C, 0x6A, 0x61, 0x58, 0x60, 0x8C, 0xAA, 0x7D, 0x54, 0x7B, 0x9B, 0x82, 0x86, 0xB0, + 0xB1, 0x96, 0x93, 0x8B, 0x83, 0x9E, 0x9F, 0x6A, 0x61, 0x80, 0x64, 0x35, 0x50, 0x79, 0x62, 0x4A, + 0x55, 0x56, 0x57, 0x70, 0x7B, 0x80, 0x9A, 0xA9, 0x95, 0x90, 0xAA, 0xB2, 0xA0, 0x9A, 0x9C, 0x8F, + 0x7C, 0x78, 0x7D, 0x7A, 0x75, 0x6F, 0x62, 0x65, 0x88, 0x9D, 0x84, 0x71, 0x86, 0x96, 0x8D, 0x91, + 0xAC, 0xBA, 0xAC, 0x98, 0x89, 0x88, 0x95, 0x91, 0x78, 0x6E, 0x74, 0x69, 0x4C, 0x48, 0x65, 0x74, + 0x6B, 0x5F, 0x59, 0x5C, 0x6C, 0x7D, 0x88, 0x92, 0xA2, 0x9D, 0x8B, 0x94, 0xAA, 0xAC, 0xA2, 0x9B, + 0x99, 0x8C, 0x7E, 0x7D, 0x7D, 0x78, 0x73, 0x69, 0x67, 0x81, 0x9C, 0x8C, 0x6E, 0x7A, 0x90, 0x88, + 0x89, 0xA3, 0xAF, 0xA3, 0x96, 0x8D, 0x87, 0x88, 0x84, 0x75, 0x76, 0x7C, 0x69, 0x4E, 0x4E, 0x5A, + 0x57, 0x54, 0x5A, 0x5C, 0x57, 0x54, 0x5A, 0x69, 0x7B, 0x8A, 0x90, 0x90, 0x9B, 0xA7, 0xA5, 0x9E, + 0xA0, 0xA1, 0x93, 0x85, 0x81, 0x7B, 0x75, 0x73, 0x6F, 0x6C, 0x6D, 0x72, 0x73, 0x6E, 0x76, 0x81, + 0x7E, 0x82, 0x96, 0xA2, 0x95, 0x8A, 0x93, 0x96, 0x87, 0x80, 0x84, 0x88, 0x84, 0x7B, 0x72, 0x68, + 0x66, 0x68, 0x60, 0x5A, 0x5E, 0x5E, 0x56, 0x52, 0x59, 0x63, 0x67, 0x6E, 0x7A, 0x83, 0x8A, 0x94, + 0x9B, 0x9D, 0x9E, 0x9B, 0x95, 0x93, 0x94, 0x92, 0x8C, 0x86, 0x83, 0x7A, 0x71, 0x73, 0x76, 0x76, + 0x78, 0x78, 0x73, 0x72, 0x7D, 0x83, 0x81, 0x83, 0x86, 0x8A, 0x8A, 0x81, 0x81, 0x85, 0x80, 0x80, + 0x85, 0x86, 0x7F, 0x75, 0x6C, 0x66, 0x6C, 0x74, 0x6E, 0x6D, 0x71, 0x70, 0x73, 0x7B, 0x82, 0x87, + 0x8A, 0x8E, 0x8F, 0x8C, 0x8E, 0x93, 0x94, 0x92, 0x8F, 0x8F, 0x90, 0x8D, 0x8D, 0x8F, 0x88, 0x80, + 0x81, 0x7C, 0x71, 0x75, 0x7D, 0x78, 0x73, 0x74, 0x78, 0x77, 0x76, 0x80, 0x8E, 0x90, 0x83, 0x80, + 0x87, 0x85, 0x7D, 0x7D, 0x8A, 0x91, 0x83, 0x7B, 0x7D, 0x78, 0x76, 0x79, 0x76, 0x7A, 0x83, 0x82, + 0x73, 0x71, 0x82, 0x84, 0x78, 0x7C, 0x89, 0x91, 0x8D, 0x84, 0x87, 0x8F, 0x92, 0x8E, 0x8B, 0x92, + 0x8F, 0x7F, 0x81, 0x8F, 0x88, 0x73, 0x76, 0x81, 0x7C, 0x86, 0x97, 0x7E, 0x64, 0x75, 0x81, 0x6E, + 0x6F, 0x8A, 0x93, 0x89, 0x82, 0x76, 0x70, 0x7B, 0x79, 0x71, 0x8A, 0x9E, 0x81, 0x66, 0x6F, 0x74, + 0x66, 0x69, 0x7F, 0x84, 0x70, 0x63, 0x60, 0x60, 0x73, 0x7C, 0x71, 0x7A, 0x89, 0x7B, 0x6D, 0x80, + 0x97, 0x90, 0x8A, 0x92, 0x8F, 0x83, 0x76, 0x6F, 0x7D, 0x8C, 0x84, 0x71, 0x69, 0x69, 0x75, 0x94, + 0x8E, 0x5E, 0x64, 0x7B, 0x52, 0x42, 0x83, 0xAF, 0xA0, 0x90, 0x8B, 0x81, 0x80, 0x7F, 0x7C, 0x9A, + 0xAF, 0x7C, 0x48, 0x54, 0x5E, 0x43, 0x3F, 0x60, 0x6E, 0x5D, 0x4F, 0x50, 0x5C, 0x72, 0x87, 0x95, + 0xAB, 0xBB, 0xA5, 0x92, 0xAC, 0xC2, 0xB3, 0xA7, 0xAD, 0xA3, 0x84, 0x6E, 0x6D, 0x71, 0x68, 0x55, + 0x5A, 0x85, 0x9C, 0x78, 0x52, 0x6A, 0x7E, 0x5F, 0x67, 0xA7, 0xC2, 0xB1, 0x9B, 0x8F, 0x96, 0x9F, + 0x8E, 0x77, 0x81, 0x92, 0x6B, 0x37, 0x3E, 0x54, 0x49, 0x41, 0x60, 0x81, 0x7C, 0x70, 0x76, 0x83, + 0x95, 0xAB, 0xB7, 0xC0, 0xCC, 0xC2, 0x9F, 0x95, 0xA7, 0xA6, 0x8D, 0x80, 0x7E, 0x73, 0x5F, 0x59, + 0x64, 0x6A, 0x66, 0x6F, 0x94, 0xB0, 0x96, 0x70, 0x81, 0x9A, 0x84, 0x7C, 0xA5, 0xBA, 0xAB, 0x97, + 0x80, 0x6F, 0x6D, 0x6D, 0x63, 0x62, 0x76, 0x71, 0x46, 0x3C, 0x58, 0x5F, 0x57, 0x68, 0x86, 0x86, + 0x71, 0x71, 0x80, 0x8B, 0x97, 0xA6, 0xB0, 0xB2, 0xAB, 0x98, 0x86, 0x86, 0x8A, 0x80, 0x77, 0x76, + 0x7B, 0x71, 0x62, 0x70, 0x7F, 0x72, 0x74, 0x9D, 0xBE, 0xA7, 0x77, 0x73, 0x85, 0x71, 0x5E, 0x7F, + 0xA1, 0x9D, 0x8E, 0x7D, 0x64, 0x5A, 0x62, 0x63, 0x5B, 0x69, 0x80, 0x67, 0x37, 0x39, 0x56, 0x54, + 0x50, 0x74, 0x8F, 0x7C, 0x72, 0x85, 0x8A, 0x8D, 0xA5, 0xB5, 0xB3, 0xAD, 0x9F, 0x82, 0x6E, 0x72, + 0x74, 0x6C, 0x6D, 0x78, 0x78, 0x64, 0x62, 0x78, 0x79, 0x72, 0x8F, 0xBD, 0xBB, 0x8A, 0x79, 0x89, + 0x6F, 0x4F, 0x70, 0xA5, 0xA8, 0x92, 0x8E, 0x82, 0x5E, 0x53, 0x6B, 0x73, 0x6E, 0x7F, 0x89, 0x62, + 0x3F, 0x50, 0x66, 0x5A, 0x60, 0x8D, 0x9E, 0x87, 0x84, 0x8F, 0x8D, 0x91, 0xA5, 0xB4, 0xB2, 0xA7, + 0x93, 0x77, 0x65, 0x6A, 0x6D, 0x67, 0x73, 0x87, 0x7E, 0x6D, 0x75, 0x7B, 0x72, 0x80, 0xAA, 0xC9, + 0xB1, 0x8B, 0x8C, 0x7C, 0x4B, 0x52, 0x8E, 0xA5, 0x99, 0xA1, 0xAA, 0x86, 0x62, 0x6B, 0x78, 0x6C, + 0x68, 0x7D, 0x82, 0x60, 0x48, 0x58, 0x5F, 0x59, 0x71, 0x96, 0x9D, 0x95, 0x9A, 0x97, 0x93, 0x9B, + 0xA1, 0xA0, 0xA1, 0x9D, 0x8B, 0x72, 0x65, 0x69, 0x6D, 0x78, 0x8A, 0x90, 0x8F, 0x8E, 0x82, 0x73, + 0x7E, 0xA2, 0xB6, 0x9F, 0x86, 0x92, 0x80, 0x44, 0x4B, 0x81, 0x87, 0x7D, 0x99, 0xAE, 0x90, 0x65, + 0x64, 0x6F, 0x5A, 0x4D, 0x6A, 0x7F, 0x66, 0x51, 0x5B, 0x5F, 0x5A, 0x65, 0x83, 0x9B, 0x99, 0x8E, + 0x8F, 0x8E, 0x82, 0x7C, 0x80, 0x8A, 0x8B, 0x85, 0x80, 0x79, 0x71, 0x6D, 0x72, 0x7E, 0x80, 0x84, + 0x94, 0x96, 0x81, 0x73, 0x7E, 0x91, 0x91, 0x86, 0x85, 0x85, 0x6B, 0x4B, 0x55, 0x7B, 0x88, 0x84, + 0x9C, 0xB6, 0x9B, 0x6C, 0x5F, 0x62, 0x55, 0x4A, 0x5D, 0x75, 0x6D, 0x59, 0x5E, 0x65, 0x5D, 0x61, + 0x7F, 0x9A, 0x9A, 0x91, 0x93, 0x93, 0x82, 0x75, 0x84, 0x8D, 0x7E, 0x7D, 0x8B, 0x85, 0x75, 0x78, + 0x88, 0x8C, 0x8A, 0x97, 0xA0, 0x8F, 0x7B, 0x8B, 0xAD, 0xA7, 0x82, 0x83, 0x8F, 0x66, 0x40, 0x62, + 0x8F, 0x87, 0x85, 0xB1, 0xC0, 0x93, 0x71, 0x71, 0x68, 0x46, 0x39, 0x56, 0x6F, 0x63, 0x5C, 0x6E, + 0x73, 0x67, 0x6A, 0x80, 0x9D, 0xA5, 0x98, 0xA3, 0xB5, 0x99, 0x7C, 0x8A, 0x93, 0x7E, 0x79, 0x88, + 0x8E, 0x82, 0x79, 0x87, 0x92, 0x8A, 0x8F, 0x9E, 0x9B, 0x8B, 0x7E, 0x86, 0x9E, 0x92, 0x76, 0x7F, + 0x87, 0x63, 0x4C, 0x69, 0x92, 0x97, 0x8F, 0xA3, 0xBB, 0x9E, 0x69, 0x60, 0x69, 0x51, 0x35, 0x4B, + 0x78, 0x7A, 0x63, 0x6F, 0x86, 0x78, 0x6A, 0x7D, 0x97, 0x9A, 0x8D, 0x8D, 0x99, 0x90, 0x77, 0x77, + 0x86, 0x7D, 0x72, 0x82, 0x8D, 0x84, 0x7F, 0x8A, 0x90, 0x88, 0x82, 0x86, 0x7F, 0x74, 0x88, 0x9A, + 0x7F, 0x70, 0x88, 0x7A, 0x4D, 0x54, 0x7B, 0x82, 0x7C, 0x92, 0xB2, 0xAB, 0x86, 0x79, 0x7C, 0x63, + 0x41, 0x42, 0x58, 0x66, 0x64, 0x64, 0x7B, 0x8C, 0x76, 0x6B, 0x84, 0x90, 0x86, 0x8A, 0x9B, 0xA0, + 0x8C, 0x78, 0x80, 0x84, 0x72, 0x6F, 0x80, 0x7F, 0x75, 0x78, 0x80, 0x83, 0x81, 0x7C, 0x79, 0x77, + 0x85, 0x97, 0x81, 0x69, 0x83, 0x84, 0x51, 0x4F, 0x79, 0x7C, 0x73, 0x92, 0xB2, 0xAF, 0x98, 0x8B, + 0x89, 0x77, 0x53, 0x3D, 0x40, 0x52, 0x5B, 0x59, 0x72, 0x99, 0x93, 0x7A, 0x87, 0x93, 0x7E, 0x76, + 0x8B, 0x9E, 0x9B, 0x89, 0x86, 0x93, 0x87, 0x6D, 0x74, 0x85, 0x78, 0x71, 0x84, 0x8E, 0x8A, 0x85, + 0x7A, 0x80, 0x9F, 0xA0, 0x79, 0x75, 0x8C, 0x74, 0x50, 0x65, 0x88, 0x84, 0x7F, 0x9D, 0xBA, 0xB2, + 0x91, 0x7E, 0x85, 0x82, 0x62, 0x4C, 0x59, 0x68, 0x63, 0x5D, 0x72, 0x94, 0x94, 0x81, 0x8D, 0x9E, + 0x87, 0x73, 0x83, 0x96, 0x93, 0x87, 0x87, 0x94, 0x8B, 0x72, 0x76, 0x83, 0x7B, 0x74, 0x7E, 0x8F, + 0x96, 0x83, 0x85, 0xB4, 0xBB, 0x88, 0x83, 0x9A, 0x7A, 0x54, 0x61, 0x70, 0x6B, 0x74, 0x96, 0xAD, + 0xA1, 0x91, 0x94, 0x89, 0x72, 0x68, 0x58, 0x4B, 0x58, 0x61, 0x5C, 0x68, 0x77, 0x75, 0x77, 0x81, + 0x84, 0x84, 0x87, 0x8A, 0x8C, 0x8C, 0x89, 0x81, 0x7D, 0x81, 0x7A, 0x6C, 0x70, 0x7F, 0x80, 0x76, + 0x75, 0x84, 0x9C, 0x9D, 0x87, 0x87, 0x98, 0x86, 0x64, 0x6B, 0x7D, 0x71, 0x6A, 0x83, 0x9E, 0xA0, + 0x8E, 0x86, 0x8C, 0x7F, 0x63, 0x5E, 0x64, 0x5F, 0x60, 0x67, 0x6C, 0x7B, 0x81, 0x6F, 0x6E, 0x82, + 0x7F, 0x75, 0x81, 0x8D, 0x8D, 0x89, 0x81, 0x7B, 0x7B, 0x71, 0x67, 0x6F, 0x7B, 0x76, 0x6B, 0x78, + 0x9B, 0xA2, 0x88, 0x89, 0xA6, 0x98, 0x6F, 0x75, 0x93, 0x88, 0x76, 0x90, 0xAA, 0x9D, 0x8C, 0x8A, + 0x84, 0x73, 0x61, 0x55, 0x53, 0x60, 0x77, 0x80, 0x7E, 0x8F, 0x98, 0x7E, 0x6D, 0x7C, 0x7D, 0x6F, + 0x74, 0x87, 0x8F, 0x89, 0x81, 0x80, 0x85, 0x80, 0x76, 0x77, 0x81, 0x86, 0x7F, 0x74, 0x85, 0xAA, + 0xA1, 0x80, 0x91, 0xA1, 0x78, 0x69, 0x8B, 0x90, 0x80, 0x94, 0xB4, 0xB4, 0xA0, 0x9A, 0x92, 0x71, + 0x55, 0x55, 0x4D, 0x43, 0x58, 0x75, 0x75, 0x73, 0x87, 0x93, 0x83, 0x72, 0x72, 0x72, 0x6E, 0x77, + 0x85, 0x8B, 0x8E, 0x92, 0x88, 0x7E, 0x87, 0x85, 0x7C, 0x83, 0x7F, 0x7C, 0x9E, 0xA3, 0x7D, 0x89, + 0xA4, 0x84, 0x67, 0x77, 0x86, 0x86, 0x88, 0x98, 0xB2, 0xB0, 0x96, 0x8E, 0x8F, 0x7B, 0x59, 0x4A, + 0x4E, 0x4B, 0x4F, 0x70, 0x83, 0x7A, 0x80, 0x8A, 0x77, 0x63, 0x67, 0x69, 0x62, 0x64, 0x78, 0x89, + 0x8A, 0x82, 0x7F, 0x80, 0x7C, 0x76, 0x78, 0x74, 0x6A, 0x7F, 0x9A, 0x87, 0x78, 0x98, 0x9A, 0x70, + 0x72, 0x91, 0x88, 0x7D, 0x96, 0xAC, 0xAE, 0xAD, 0xA9, 0xA3, 0x95, 0x79, 0x5A, 0x40, 0x2D, 0x34, + 0x4D, 0x63, 0x7C, 0x98, 0xA0, 0x97, 0x8E, 0x87, 0x79, 0x64, 0x57, 0x5C, 0x64, 0x66, 0x6B, 0x7A, + 0x7E, 0x7C, 0x84, 0x88, 0x81, 0x7B, 0x74, 0x7F, 0x94, 0x7F, 0x6D, 0x8F, 0x92, 0x66, 0x6D, 0x8E, + 0x85, 0x82, 0xA3, 0xBD, 0xB8, 0xA7, 0xA5, 0x9F, 0x7C, 0x5E, 0x5A, 0x4C, 0x39, 0x47, 0x63, 0x6B, + 0x71, 0x8D, 0x9C, 0x8D, 0x8B, 0x93, 0x85, 0x79, 0x7B, 0x77, 0x71, 0x76, 0x7B, 0x7D, 0x7A, 0x7B, + 0x7B, 0x6E, 0x70, 0x94, 0xA2, 0x88, 0x88, 0xA6, 0x9A, 0x70, 0x71, 0x89, 0x80, 0x7A, 0x99, 0xB1, + 0xB3, 0xAE, 0xA5, 0x9E, 0x95, 0x78, 0x5C, 0x55, 0x52, 0x4A, 0x55, 0x73, 0x83, 0x8E, 0xA1, 0x9A, + 0x85, 0x89, 0x84, 0x6A, 0x69, 0x78, 0x75, 0x6E, 0x71, 0x7F, 0x7F, 0x6F, 0x6F, 0x76, 0x7B, 0x96, + 0x99, 0x7E, 0x94, 0xAF, 0x8A, 0x7B, 0x95, 0x89, 0x77, 0x91, 0xB3, 0xBB, 0xB5, 0xBC, 0xC1, 0xA0, + 0x7B, 0x79, 0x66, 0x42, 0x43, 0x4F, 0x48, 0x53, 0x72, 0x80, 0x7E, 0x85, 0x8F, 0x90, 0x85, 0x7C, + 0x73, 0x6A, 0x65, 0x60, 0x56, 0x56, 0x5D, 0x61, 0x64, 0x67, 0x77, 0x95, 0x96, 0x7E, 0x8D, 0x9D, + 0x79, 0x68, 0x81, 0x82, 0x75, 0x88, 0xA6, 0xB4, 0xAF, 0xAA, 0xB3, 0xA9, 0x88, 0x7A, 0x72, 0x5C, + 0x5C, 0x6E, 0x71, 0x70, 0x7C, 0x88, 0x87, 0x7E, 0x7D, 0x81, 0x7A, 0x71, 0x75, 0x76, 0x6A, 0x63, + 0x5F, 0x5A, 0x59, 0x53, 0x5F, 0x82, 0x7F, 0x65, 0x81, 0x90, 0x5F, 0x5C, 0x83, 0x75, 0x65, 0x8D, + 0xB4, 0xB8, 0xAF, 0xB5, 0xBF, 0xA6, 0x81, 0x79, 0x68, 0x4C, 0x54, 0x60, 0x5A, 0x6D, 0x91, 0x9B, + 0x9C, 0xAD, 0xBD, 0xAE, 0x93, 0x89, 0x7B, 0x60, 0x50, 0x49, 0x42, 0x49, 0x5B, 0x78, 0x92, 0x94, + 0x99, 0xA8, 0x90, 0x6E, 0x7A, 0x77, 0x55, 0x64, 0x98, 0xA3, 0x9E, 0xB6, 0xCD, 0xBB, 0x97, 0x92, + 0x94, 0x71, 0x59, 0x6E, 0x70, 0x61, 0x78, 0x94, 0x8F, 0x89, 0x92, 0x93, 0x86, 0x7B, 0x7C, 0x75, + 0x65, 0x62, 0x65, 0x5A, 0x54, 0x5C, 0x67, 0x79, 0x7D, 0x6F, 0x7E, 0x8F, 0x72, 0x63, 0x83, 0x84, + 0x70, 0x8B, 0xB5, 0xBC, 0xB4, 0xB8, 0xC1, 0xAB, 0x87, 0x83, 0x81, 0x6A, 0x67, 0x74, 0x6C, 0x6E, + 0x84, 0x8E, 0x8A, 0x8E, 0x99, 0x96, 0x82, 0x7C, 0x7B, 0x6B, 0x61, 0x60, 0x54, 0x49, 0x56, 0x74, + 0x77, 0x60, 0x7A, 0x9D, 0x72, 0x57, 0x7F, 0x74, 0x53, 0x7A, 0xA1, 0x9C, 0x9C, 0xAC, 0xB0, 0x9D, + 0x92, 0x99, 0x85, 0x6B, 0x71, 0x6C, 0x5A, 0x6A, 0x80, 0x81, 0x8B, 0x9C, 0xA2, 0xA1, 0x9A, 0x90, + 0x84, 0x76, 0x6D, 0x64, 0x53, 0x4A, 0x62, 0x83, 0x7A, 0x68, 0x82, 0x8A, 0x63, 0x5D, 0x72, 0x63, + 0x55, 0x74, 0x99, 0x9B, 0x9A, 0xB0, 0xA9, 0x82, 0x86, 0x92, 0x66, 0x54, 0x74, 0x73, 0x63, 0x7C, + 0x95, 0x8F, 0x87, 0x91, 0x90, 0x7E, 0x79, 0x78, 0x6B, 0x62, 0x5F, 0x5A, 0x56, 0x61, 0x7C, 0x82, + 0x6C, 0x72, 0x87, 0x6A, 0x54, 0x67, 0x64, 0x5E, 0x81, 0xA1, 0xAE, 0xBA, 0xC3, 0xBD, 0xA1, 0x96, + 0x9A, 0x7B, 0x62, 0x71, 0x6E, 0x62, 0x77, 0x8A, 0x94, 0xA1, 0xAA, 0xAE, 0xA5, 0x90, 0x7F, 0x6F, + 0x60, 0x5D, 0x55, 0x4E, 0x67, 0x8C, 0x81, 0x66, 0x7C, 0x83, 0x53, 0x4A, 0x61, 0x4C, 0x46, 0x7D, + 0xA7, 0xA8, 0xAC, 0xC8, 0xD0, 0xA8, 0x98, 0xA8, 0x80, 0x54, 0x6C, 0x78, 0x6A, 0x83, 0xAA, 0xB1, + 0xA2, 0xA7, 0xB0, 0x90, 0x76, 0x7C, 0x66, 0x46, 0x61, 0x8E, 0x86, 0x78, 0x94, 0x9A, 0x71, 0x5F, + 0x66, 0x53, 0x49, 0x6A, 0x84, 0x88, 0x9C, 0xAF, 0xA8, 0x97, 0x95, 0x8F, 0x73, 0x65, 0x6F, 0x6E, + 0x6F, 0x84, 0x9B, 0xA4, 0x9D, 0x98, 0x98, 0x8F, 0x83, 0x75, 0x65, 0x5E, 0x62, 0x6E, 0x75, 0x73, + 0x78, 0x87, 0x7C, 0x57, 0x55, 0x5E, 0x43, 0x47, 0x73, 0x7F, 0x82, 0xA4, 0xB7, 0xA4, 0x9A, 0xA4, + 0x92, 0x71, 0x6C, 0x6C, 0x5A, 0x63, 0x8A, 0x9D, 0xA2, 0xB7, 0xC2, 0xB3, 0xA0, 0x95, 0x82, 0x68, + 0x5D, 0x51, 0x37, 0x46, 0x75, 0x77, 0x6A, 0x8A, 0x9C, 0x74, 0x5C, 0x63, 0x4E, 0x42, 0x59, 0x66, + 0x70, 0x87, 0x98, 0x9A, 0x8C, 0x8A, 0x87, 0x68, 0x5E, 0x70, 0x6A, 0x68, 0x86, 0x9E, 0xA5, 0xA4, + 0xAB, 0xAE, 0x99, 0x89, 0x7D, 0x59, 0x45, 0x60, 0x7E, 0x7A, 0x7B, 0xA8, 0xB0, 0x7F, 0x7E, 0x88, + 0x5C, 0x4C, 0x72, 0x86, 0x80, 0x8B, 0xA9, 0xA5, 0x86, 0x8A, 0x92, 0x6E, 0x64, 0x85, 0x81, 0x6D, + 0x86, 0xA3, 0x98, 0x84, 0x90, 0x9D, 0x84, 0x7D, 0x8D, 0x73, 0x58, 0x68, 0x7A, 0x75, 0x6D, 0x7B, + 0x93, 0x86, 0x68, 0x6B, 0x66, 0x41, 0x47, 0x76, 0x82, 0x7A, 0x8C, 0xAE, 0xAE, 0x8D, 0x93, 0x99, + 0x6F, 0x68, 0x7E, 0x70, 0x6F, 0x91, 0xAA, 0xAC, 0xA7, 0xB5, 0xBC, 0x9F, 0x92, 0x99, 0x82, 0x68, + 0x6E, 0x69, 0x67, 0x83, 0x8A, 0x7D, 0x8E, 0x95, 0x76, 0x6A, 0x75, 0x61, 0x4E, 0x69, 0x82, 0x81, + 0x84, 0x9A, 0xA9, 0x8A, 0x7A, 0x91, 0x77, 0x51, 0x65, 0x64, 0x4F, 0x69, 0x93, 0x9C, 0x96, 0xA1, + 0xAA, 0x91, 0x78, 0x77, 0x64, 0x4A, 0x61, 0x82, 0x6F, 0x6B, 0x94, 0x8F, 0x66, 0x74, 0x84, 0x5A, + 0x52, 0x7C, 0x7D, 0x71, 0x8E, 0xA4, 0x98, 0x8B, 0x96, 0x98, 0x7B, 0x70, 0x7A, 0x6C, 0x6C, 0x8D, + 0xA0, 0xA4, 0xB0, 0xBD, 0xB9, 0xA1, 0x89, 0x75, 0x59, 0x48, 0x48, 0x4F, 0x53, 0x5B, 0x79, 0x86, + 0x6E, 0x70, 0x76, 0x59, 0x56, 0x6B, 0x6B, 0x63, 0x6F, 0x87, 0x87, 0x75, 0x7E, 0x87, 0x72, 0x6B, + 0x7F, 0x74, 0x64, 0x8D, 0xB1, 0xA9, 0xAE, 0xBD, 0xB2, 0x9B, 0x8D, 0x82, 0x65, 0x52, 0x5D, 0x61, + 0x55, 0x5E, 0x7F, 0x82, 0x75, 0x87, 0x8D, 0x7A, 0x82, 0x89, 0x81, 0x88, 0x93, 0x93, 0x8A, 0x87, + 0x89, 0x7C, 0x70, 0x70, 0x63, 0x5E, 0x78, 0x90, 0x98, 0xA9, 0xBA, 0xBD, 0xAF, 0x9E, 0x95, 0x7B, + 0x5C, 0x48, 0x39, 0x48, 0x54, 0x53, 0x77, 0x80, 0x63, 0x79, 0x92, 0x83, 0x7F, 0x8F, 0x95, 0x86, + 0x8A, 0xA0, 0x90, 0x7B, 0x8A, 0x8C, 0x70, 0x6E, 0x83, 0x71, 0x71, 0xA6, 0xB8, 0xB7, 0xD0, 0xD1, + 0xBB, 0xA8, 0x92, 0x74, 0x55, 0x59, 0x5F, 0x4A, 0x63, 0x89, 0x71, 0x66, 0x82, 0x81, 0x70, 0x81, + 0x96, 0x89, 0x7C, 0x8E, 0x88, 0x6B, 0x6D, 0x73, 0x5B, 0x50, 0x67, 0x70, 0x60, 0x73, 0x97, 0x9D, + 0xAB, 0xBE, 0xBC, 0xB8, 0xAB, 0x92, 0x7F, 0x72, 0x68, 0x54, 0x4A, 0x59, 0x55, 0x4C, 0x5E, 0x71, + 0x72, 0x78, 0x94, 0xA5, 0x9C, 0x9D, 0xA0, 0x8A, 0x76, 0x75, 0x74, 0x68, 0x5D, 0x61, 0x68, 0x67, + 0x72, 0x8F, 0x9E, 0xA8, 0xC3, 0xD4, 0xC9, 0xBD, 0xB0, 0x93, 0x72, 0x5D, 0x50, 0x3F, 0x2B, 0x2A, + 0x37, 0x37, 0x40, 0x5F, 0x69, 0x6B, 0x85, 0x99, 0xA2, 0x9C, 0x90, 0x8C, 0x78, 0x68, 0x6D, 0x63, + 0x55, 0x51, 0x4B, 0x52, 0x74, 0x99, 0xAA, 0xC1, 0xDD, 0xDE, 0xD1, 0xBC, 0xA4, 0x82, 0x5F, 0x5B, + 0x50, 0x3E, 0x46, 0x39, 0x3B, 0x63, 0x60, 0x5F, 0x8B, 0xA2, 0xA2, 0xAA, 0xB8, 0xB3, 0x8E, 0x7D, + 0x80, 0x66, 0x55, 0x63, 0x5A, 0x46, 0x63, 0x86, 0x80, 0x91, 0xBA, 0xBD, 0xB5, 0xC1, 0xC4, 0xBB, + 0xA5, 0x84, 0x6D, 0x53, 0x43, 0x4B, 0x3D, 0x2B, 0x44, 0x53, 0x53, 0x6E, 0x8D, 0x9F, 0xAD, 0xB8, + 0xBF, 0xA8, 0x81, 0x6F, 0x66, 0x51, 0x50, 0x6C, 0x6C, 0x66, 0x87, 0x93, 0x8F, 0xAE, 0xC8, 0xC9, + 0xD0, 0xD6, 0xCE, 0xBB, 0x9F, 0x8B, 0x7B, 0x68, 0x64, 0x61, 0x5E, 0x69, 0x64, 0x63, 0x75, 0x81, + 0x8E, 0x9F, 0xB0, 0xB6, 0xAC, 0xAF, 0xA8, 0x86, 0x73, 0x62, 0x4A, 0x44, 0x43, 0x46, 0x51, 0x61, + 0x72, 0x7E, 0x84, 0x8B, 0x92, 0x94, 0x98, 0x9F, 0x92, 0x72, 0x5F, 0x56, 0x4A, 0x46, 0x4E, 0x5C, + 0x67, 0x76, 0x8D, 0xA1, 0xAB, 0xB3, 0xC1, 0xC3, 0xBE, 0xC1, 0xBB, 0xAC, 0xA2, 0x97, 0x85, 0x6F, + 0x69, 0x70, 0x5A, 0x45, 0x50, 0x59, 0x58, 0x5A, 0x61, 0x68, 0x65, 0x67, 0x6A, 0x62, 0x5B, 0x55, + 0x51, 0x52, 0x53, 0x58, 0x69, 0x7F, 0x84, 0x8E, 0xAC, 0xB4, 0xB0, 0xBD, 0xCD, 0xD1, 0xCA, 0xC1, + 0xB5, 0xA5, 0x97, 0x88, 0x7A, 0x7A, 0x79, 0x6A, 0x62, 0x69, 0x67, 0x5B, 0x5D, 0x61, 0x57, 0x52, + 0x4C, 0x3E, 0x33, 0x23, 0x1A, 0x21, 0x27, 0x2C, 0x33, 0x39, 0x42, 0x4F, 0x5F, 0x73, 0x7F, 0x8D, + 0x9F, 0xA3, 0xAC, 0xC1, 0xC4, 0xBD, 0xC2, 0xC5, 0xBD, 0xB6, 0xBD, 0xBF, 0xB4, 0xC0, 0xD3, 0xD1, + 0xD4, 0xD8, 0xD6, 0xD1, 0xC3, 0xB6, 0xAA, 0x94, 0x85, 0x75, 0x63, 0x5C, 0x4D, 0x3F, 0x49, 0x46, + 0x3A, 0x3F, 0x38, 0x2C, 0x2D, 0x2A, 0x2D, 0x31, 0x32, 0x40, 0x42, 0x40, 0x50, 0x55, 0x55, 0x62, + 0x6B, 0x70, 0x82, 0x97, 0x9E, 0xAA, 0xBD, 0xC6, 0xC4, 0xC3, 0xC7, 0xB9, 0xA2, 0x9C, 0xA1, 0x9D, + 0x90, 0x99, 0xAE, 0xA6, 0xA5, 0xB3, 0xAB, 0xA5, 0xAC, 0xAE, 0xB2, 0xB0, 0xB0, 0xB2, 0xA0, 0x98, + 0x9A, 0x85, 0x7A, 0x80, 0x75, 0x63, 0x6E, 0x7B, 0x68, 0x66, 0x7B, 0x74, 0x69, 0x6E, 0x6D, 0x5A, + 0x47, 0x46, 0x45, 0x37, 0x35, 0x3A, 0x37, 0x3A, 0x48, 0x4F, 0x55, 0x68, 0x78, 0x7D, 0x87, 0x94, + 0x99, 0x95, 0x90, 0x92, 0x94, 0x90, 0x87, 0x89, 0x91, 0x8B, 0x8D, 0x97, 0x9A, 0x9B, 0xA4, 0xAC, + 0xAC, 0xAC, 0xAF, 0xAF, 0xA5, 0x98, 0x90, 0x83, 0x7A, 0x75, 0x65, 0x66, 0x6D, 0x64, 0x6D, 0x78, + 0x75, 0x7D, 0x87, 0x8D, 0x8F, 0x8E, 0x8E, 0x85, 0x7B, 0x7B, 0x73, 0x5F, 0x60, 0x68, 0x5C, 0x5C, + 0x6B, 0x6A, 0x66, 0x73, 0x81, 0x7B, 0x77, 0x7C, 0x74, 0x63, 0x53, 0x4F, 0x4D, 0x47, 0x46, 0x53, + 0x5D, 0x57, 0x5A, 0x69, 0x69, 0x68, 0x7B, 0x8A, 0x90, 0x9F, 0xA6, 0x9F, 0x9F, 0xA5, 0x9D, 0x8B, + 0x8F, 0x9A, 0x96, 0x92, 0x9A, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA9, 0xAA, 0xA0, 0x9C, 0x9B, 0x90, + 0x84, 0x7F, 0x7F, 0x75, 0x63, 0x67, 0x69, 0x5A, 0x59, 0x60, 0x62, 0x66, 0x72, 0x81, 0x86, 0x87, + 0x86, 0x7E, 0x7A, 0x76, 0x6B, 0x60, 0x64, 0x6F, 0x71, 0x71, 0x79, 0x7F, 0x7B, 0x7B, 0x85, 0x8D, + 0x94, 0x98, 0xA0, 0xA1, 0x97, 0x91, 0x82, 0x79, 0x7D, 0x69, 0x64, 0x73, 0x6B, 0x68, 0x74, 0x79, + 0x7A, 0x81, 0x8E, 0x93, 0x97, 0x9E, 0x9A, 0x93, 0x94, 0x98, 0x8C, 0x82, 0x8E, 0x8E, 0x7F, 0x81, + 0x89, 0x84, 0x7F, 0x87, 0x8D, 0x8D, 0x97, 0x9B, 0x98, 0x93, 0x84, 0x75, 0x6D, 0x63, 0x53, 0x51, + 0x5E, 0x59, 0x56, 0x61, 0x61, 0x65, 0x6C, 0x75, 0x81, 0x89, 0x92, 0x93, 0x8F, 0x95, 0x94, 0x87, + 0x82, 0x87, 0x84, 0x7F, 0x84, 0x8B, 0x8D, 0x88, 0x84, 0x7E, 0x81, 0x87, 0x83, 0x86, 0x8B, 0x85, + 0x7B, 0x6F, 0x6A, 0x72, 0x69, 0x57, 0x66, 0x6D, 0x60, 0x61, 0x68, 0x70, 0x7A, 0x85, 0x91, 0x98, + 0xA1, 0xA2, 0x99, 0x9B, 0x9E, 0x95, 0x8D, 0x90, 0x97, 0x93, 0x8C, 0x8A, 0x85, 0x81, 0x79, 0x6D, + 0x6A, 0x6C, 0x68, 0x65, 0x69, 0x68, 0x62, 0x5B, 0x57, 0x61, 0x59, 0x46, 0x55, 0x60, 0x54, 0x4F, + 0x52, 0x54, 0x56, 0x58, 0x5C, 0x64, 0x74, 0x7F, 0x82, 0x93, 0xA6, 0xAA, 0xAA, 0xB5, 0xC3, 0xC0, + 0xB6, 0xB1, 0xB0, 0xA7, 0x97, 0x8F, 0x8C, 0x8B, 0x84, 0x7E, 0x83, 0x80, 0x7C, 0x7F, 0x88, 0x99, + 0x97, 0x94, 0x9A, 0x8C, 0x78, 0x69, 0x58, 0x4E, 0x46, 0x42, 0x4A, 0x56, 0x67, 0x74, 0x85, 0xA1, + 0xAD, 0xB3, 0xB9, 0xB9, 0xB8, 0xB3, 0xA9, 0x9C, 0x95, 0x94, 0x7D, 0x68, 0x66, 0x61, 0x56, 0x5E, + 0x6B, 0x72, 0x7C, 0x81, 0x91, 0xA5, 0xA5, 0x9F, 0x99, 0x8B, 0x74, 0x58, 0x46, 0x3D, 0x35, 0x34, + 0x39, 0x49, 0x65, 0x7A, 0x89, 0xA3, 0xB7, 0xBA, 0xBA, 0xBD, 0xBB, 0xB7, 0xAB, 0x9A, 0x91, 0x81, + 0x6F, 0x63, 0x53, 0x4F, 0x52, 0x55, 0x64, 0x72, 0x7D, 0x89, 0x91, 0x9E, 0xA6, 0x9E, 0x94, 0x8A, + 0x79, 0x62, 0x49, 0x40, 0x3D, 0x39, 0x41, 0x51, 0x60, 0x76, 0x8E, 0xA1, 0xB6, 0xC2, 0xC2, 0xC0, + 0xB7, 0xAC, 0xA0, 0x8D, 0x7D, 0x7C, 0x71, 0x5A, 0x55, 0x55, 0x51, 0x57, 0x66, 0x75, 0x83, 0x93, + 0x9E, 0xA4, 0xA6, 0x9A, 0x88, 0x7F, 0x72, 0x59, 0x4A, 0x44, 0x3D, 0x42, 0x4A, 0x57, 0x6D, 0x7F, + 0x90, 0x9D, 0xB1, 0xBF, 0xBC, 0xB9, 0xB1, 0xA4, 0x9B, 0x8D, 0x7E, 0x7A, 0x77, 0x67, 0x5D, 0x5F, + 0x61, 0x5F, 0x6A, 0x7A, 0x7E, 0x89, 0x93, 0x8E, 0x8B, 0x8C, 0x7E, 0x65, 0x55, 0x52, 0x46, 0x31, + 0x2B, 0x33, 0x39, 0x43, 0x5D, 0x77, 0x88, 0x99, 0xA9, 0xB1, 0xB4, 0xB1, 0xAB, 0xA5, 0x9C, 0x95, + 0x8C, 0x7D, 0x7C, 0x7E, 0x79, 0x7A, 0x83, 0x91, 0x98, 0xA1, 0xB0, 0xB6, 0xB5, 0xB7, 0xB2, 0xAD, + 0xA4, 0x8E, 0x7E, 0x75, 0x68, 0x5B, 0x4E, 0x4A, 0x52, 0x5B, 0x64, 0x78, 0x88, 0x91, 0x9C, 0xA2, + 0xA8, 0xA7, 0x9C, 0x94, 0x96, 0x91, 0x85, 0x7E, 0x7A, 0x78, 0x70, 0x68, 0x6B, 0x72, 0x7A, 0x7E, + 0x80, 0x88, 0x8C, 0x88, 0x82, 0x83, 0x8A, 0x80, 0x71, 0x75, 0x73, 0x67, 0x5D, 0x5D, 0x67, 0x6E, + 0x70, 0x7A, 0x85, 0x8B, 0x8F, 0x8F, 0x90, 0x96, 0x93, 0x8C, 0x8F, 0x91, 0x8C, 0x8A, 0x8C, 0x90, + 0x8D, 0x85, 0x82, 0x80, 0x7B, 0x75, 0x71, 0x76, 0x7A, 0x74, 0x74, 0x76, 0x71, 0x75, 0x76, 0x6C, + 0x6C, 0x75, 0x75, 0x71, 0x6D, 0x6C, 0x73, 0x6F, 0x6C, 0x75, 0x7D, 0x7E, 0x7D, 0x7D, 0x86, 0x8B, + 0x83, 0x85, 0x94, 0x98, 0x90, 0x8C, 0x90, 0x90, 0x80, 0x73, 0x75, 0x73, 0x6B, 0x66, 0x65, 0x67, + 0x65, 0x62, 0x63, 0x6B, 0x7A, 0x7B, 0x76, 0x82, 0x8C, 0x82, 0x79, 0x78, 0x78, 0x78, 0x70, 0x6B, + 0x70, 0x76, 0x76, 0x78, 0x82, 0x8F, 0x92, 0x90, 0x99, 0xA5, 0xA8, 0xA4, 0x9F, 0xA1, 0x9E, 0x8C, + 0x7E, 0x7A, 0x72, 0x69, 0x5B, 0x58, 0x61, 0x60, 0x5D, 0x64, 0x70, 0x7E, 0x89, 0x8D, 0x91, 0x94, + 0x8E, 0x82, 0x73, 0x69, 0x69, 0x64, 0x5A, 0x61, 0x6F, 0x73, 0x79, 0x89, 0x9E, 0xAC, 0xAE, 0xB5, + 0xBE, 0xBE, 0xB6, 0xA9, 0xA2, 0x9C, 0x8C, 0x76, 0x68, 0x63, 0x57, 0x4C, 0x4B, 0x52, 0x5B, 0x60, + 0x70, 0x7F, 0x8B, 0x98, 0x9E, 0x9F, 0x9C, 0x96, 0x86, 0x73, 0x64, 0x5C, 0x58, 0x56, 0x5A, 0x63, + 0x71, 0x83, 0x91, 0x9D, 0xB1, 0xBF, 0xC3, 0xC6, 0xC3, 0xBB, 0xAB, 0x9C, 0x91, 0x82, 0x72, 0x64, + 0x5F, 0x5D, 0x5B, 0x5B, 0x60, 0x68, 0x73, 0x81, 0x8C, 0x95, 0x9F, 0xA1, 0x95, 0x89, 0x7E, 0x72, + 0x61, 0x4F, 0x49, 0x4A, 0x4C, 0x53, 0x64, 0x75, 0x89, 0x9F, 0xB0, 0xBD, 0xC7, 0xC9, 0xC4, 0xBB, + 0xB1, 0xA1, 0x90, 0x85, 0x79, 0x6C, 0x61, 0x5B, 0x58, 0x56, 0x58, 0x5B, 0x61, 0x67, 0x6D, 0x75, + 0x75, 0x75, 0x73, 0x6A, 0x5B, 0x4E, 0x45, 0x3F, 0x39, 0x33, 0x36, 0x41, 0x52, 0x65, 0x74, 0x89, + 0x9E, 0xAD, 0xB3, 0xB7, 0xBA, 0xB6, 0xB2, 0xAD, 0xA4, 0x9B, 0x90, 0x87, 0x80, 0x78, 0x72, 0x73, + 0x75, 0x7C, 0x80, 0x81, 0x85, 0x86, 0x89, 0x88, 0x85, 0x84, 0x83, 0x7D, 0x73, 0x69, 0x62, 0x5E, + 0x5A, 0x5C, 0x5F, 0x66, 0x74, 0x7F, 0x8B, 0x97, 0x9E, 0xA1, 0xA4, 0xA3, 0xA0, 0x9B, 0x94, 0x8C, + 0x82, 0x7A, 0x72, 0x6C, 0x66, 0x62, 0x63, 0x63, 0x62, 0x62, 0x64, 0x63, 0x63, 0x6A, 0x6D, 0x70, + 0x79, 0x7E, 0x7F, 0x7D, 0x7A, 0x77, 0x73, 0x71, 0x72, 0x74, 0x76, 0x7C, 0x86, 0x8E, 0x98, 0xA0, + 0xA7, 0xAE, 0xB1, 0xB5, 0xB3, 0xAF, 0xAD, 0xAC, 0xA9, 0xA6, 0xA1, 0x97, 0x8A, 0x81, 0x7D, 0x77, + 0x6F, 0x69, 0x66, 0x65, 0x63, 0x63, 0x65, 0x6A, 0x71, 0x78, 0x7E, 0x7F, 0x80, 0x7E, 0x77, 0x73, + 0x71, 0x73, 0x75, 0x78, 0x7B, 0x83, 0x8A, 0x8F, 0x9B, 0xA4, 0xAA, 0xAF, 0xB1, 0xB2, 0xAF, 0xA6, + 0x9D, 0x94, 0x8A, 0x80, 0x73, 0x6B, 0x63, 0x5C, 0x5A, 0x5C, 0x60, 0x65, 0x6B, 0x70, 0x74, 0x7E, + 0x88, 0x8D, 0x8F, 0x8F, 0x89, 0x81, 0x76, 0x6A, 0x61, 0x59, 0x59, 0x5C, 0x5B, 0x66, 0x70, 0x7C, + 0x8F, 0x9D, 0xAA, 0xB1, 0xB3, 0xB4, 0xAB, 0xA2, 0x97, 0x89, 0x7C, 0x73, 0x66, 0x58, 0x52, 0x4F, + 0x4E, 0x4D, 0x50, 0x58, 0x5E, 0x62, 0x67, 0x6C, 0x72, 0x79, 0x7C, 0x7A, 0x78, 0x76, 0x70, 0x6E, + 0x6A, 0x67, 0x68, 0x6C, 0x73, 0x79, 0x81, 0x8D, 0x97, 0xA4, 0xAE, 0xB5, 0xB9, 0xBA, 0xB6, 0xAF, + 0xA4, 0x96, 0x89, 0x7D, 0x73, 0x69, 0x64, 0x64, 0x63, 0x66, 0x66, 0x6A, 0x71, 0x72, 0x73, 0x74, + 0x75, 0x74, 0x71, 0x75, 0x77, 0x77, 0x7A, 0x7A, 0x78, 0x76, 0x76, 0x76, 0x75, 0x76, 0x7D, 0x82, + 0x85, 0x8A, 0x8E, 0x93, 0x9A, 0x9F, 0xA3, 0xA4, 0xA1, 0x9E, 0x98, 0x91, 0x87, 0x7E, 0x7C, 0x79, + 0x74, 0x71, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x6B, 0x6C, 0x6E, 0x6E, 0x70, 0x77, 0x7D, 0x80, 0x87, + 0x8D, 0x91, 0x93, 0x94, 0x91, 0x8B, 0x86, 0x82, 0x7E, 0x7F, 0x80, 0x7E, 0x82, 0x8A, 0x8E, 0x94, + 0x9A, 0x9D, 0x9F, 0xA0, 0x9F, 0x9A, 0x93, 0x8D, 0x84, 0x79, 0x73, 0x6A, 0x61, 0x5F, 0x5F, 0x5F, + 0x5F, 0x60, 0x63, 0x66, 0x6B, 0x72, 0x77, 0x7C, 0x83, 0x86, 0x86, 0x84, 0x7F, 0x7B, 0x78, 0x73, + 0x72, 0x73, 0x76, 0x79, 0x7E, 0x86, 0x90, 0x9C, 0xA7, 0xB0, 0xB6, 0xB9, 0xB8, 0xB3, 0xAD, 0xA0, + 0x95, 0x8A, 0x7F, 0x77, 0x69, 0x60, 0x5B, 0x59, 0x57, 0x58, 0x5B, 0x62, 0x68, 0x6B, 0x72, 0x73, + 0x75, 0x77, 0x78, 0x7A, 0x7B, 0x78, 0x74, 0x73, 0x72, 0x72, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7E, + 0x82, 0x86, 0x8B, 0x8E, 0x92, 0x95, 0x94, 0x97, 0x97, 0x94, 0x94, 0x92, 0x8E, 0x88, 0x7F, 0x78, + 0x72, 0x6A, 0x64, 0x61, 0x60, 0x5D, 0x5F, 0x60, 0x5F, 0x62, 0x68, 0x6A, 0x6B, 0x6E, 0x6F, 0x6E, + 0x72, 0x76, 0x7A, 0x7B, 0x7C, 0x7B, 0x7B, 0x7B, 0x7B, 0x7D, 0x80, 0x85, 0x8A, 0x8F, 0x95, 0x9A, + 0x9E, 0xA1, 0xA6, 0xA9, 0xA6, 0xA3, 0xA0, 0x9B, 0x94, 0x8C, 0x83, 0x7C, 0x71, 0x68, 0x64, 0x5F, + 0x5F, 0x5E, 0x5F, 0x60, 0x62, 0x64, 0x67, 0x6B, 0x6E, 0x71, 0x76, 0x7B, 0x7F, 0x83, 0x89, 0x90, + 0x97, 0x98, 0x9A, 0x9C, 0x9D, 0x9D, 0x9E, 0x9F, 0xA1, 0xA2, 0xA1, 0xA0, 0x9E, 0x9F, 0xA1, 0xA1, + 0x9E, 0x9D, 0x9D, 0x99, 0x95, 0x90, 0x88, 0x7F, 0x75, 0x69, 0x5E, 0x54, 0x4D, 0x48, 0x46, 0x45, + 0x48, 0x4B, 0x50, 0x57, 0x5E, 0x69, 0x73, 0x7C, 0x84, 0x8B, 0x93, 0x9A, 0x9F, 0x9E, 0x9B, 0x98, + 0x93, 0x8F, 0x89, 0x85, 0x85, 0x88, 0x8D, 0x94, 0x99, 0x9E, 0xA1, 0xA2, 0xA2, 0xA0, 0xA0, 0x9C, + 0x98, 0x91, 0x86, 0x7E, 0x75, 0x6E, 0x68, 0x63, 0x5E, 0x5C, 0x59, 0x55, 0x54, 0x53, 0x55, 0x59, + 0x5C, 0x5F, 0x61, 0x65, 0x67, 0x69, 0x6B, 0x6E, 0x72, 0x77, 0x7A, 0x7C, 0x83, 0x88, 0x8C, 0x91, + 0x95, 0x99, 0x97, 0x91, 0x8E, 0x89, 0x82, 0x7C, 0x7B, 0x7A, 0x7A, 0x76, 0x73, 0x75, 0x77, 0x7C, + 0x83, 0x8C, 0x95, 0x99, 0x98, 0x94, 0x8E, 0x86, 0x7C, 0x71, 0x66, 0x5C, 0x57, 0x51, 0x50, 0x53, + 0x56, 0x5E, 0x68, 0x74, 0x7E, 0x85, 0x8E, 0x95, 0x99, 0x9C, 0x9C, 0x99, 0x95, 0x8D, 0x86, 0x82, + 0x7E, 0x77, 0x74, 0x79, 0x80, 0x85, 0x88, 0x86, 0x8B, 0x92, 0x92, 0x93, 0x92, 0x8E, 0x8B, 0x85, + 0x80, 0x7D, 0x7D, 0x7F, 0x82, 0x83, 0x84, 0x85, 0x84, 0x82, 0x7E, 0x79, 0x75, 0x6E, 0x67, 0x60, + 0x5C, 0x5A, 0x5A, 0x5C, 0x5F, 0x65, 0x6C, 0x72, 0x7B, 0x85, 0x90, 0x9A, 0xA5, 0xB1, 0xB6, 0xB6, + 0xB4, 0xB0, 0xA8, 0x9F, 0x94, 0x8A, 0x82, 0x7C, 0x77, 0x73, 0x71, 0x73, 0x78, 0x7D, 0x82, 0x86, + 0x88, 0x88, 0x8A, 0x88, 0x87, 0x86, 0x83, 0x7E, 0x79, 0x74, 0x6D, 0x68, 0x64, 0x5F, 0x5F, 0x5E, + 0x5F, 0x60, 0x61, 0x66, 0x6B, 0x71, 0x78, 0x80, 0x84, 0x87, 0x87, 0x86, 0x87, 0x8B, 0x90, 0x95, + 0x98, 0x9B, 0x9C, 0x9C, 0x9C, 0x9A, 0x99, 0x96, 0x92, 0x8E, 0x87, 0x81, 0x7D, 0x79, 0x76, 0x72, + 0x6E, 0x6C, 0x6C, 0x6E, 0x73, 0x78, 0x7B, 0x7F, 0x82, 0x81, 0x7F, 0x7F, 0x81, 0x82, 0x82, 0x81, + 0x7E, 0x7B, 0x76, 0x72, 0x6E, 0x6C, 0x6D, 0x6E, 0x72, 0x73, 0x75, 0x78, 0x7A, 0x7F, 0x83, 0x87, + 0x8D, 0x90, 0x90, 0x8F, 0x8C, 0x8C, 0x8E, 0x90, 0x90, 0x8C, 0x87, 0x82, 0x7E, 0x7A, 0x76, 0x75, + 0x74, 0x6E, 0x68, 0x66, 0x66, 0x65, 0x66, 0x67, 0x67, 0x69, 0x6A, 0x69, 0x6C, 0x70, 0x72, 0x74, + 0x79, 0x79, 0x77, 0x76, 0x7A, 0x7D, 0x80, 0x85, 0x89, 0x88, 0x89, 0x8A, 0x88, 0x85, 0x82, 0x7E, + 0x7B, 0x78, 0x74, 0x71, 0x71, 0x71, 0x77, 0x7D, 0x83, 0x8A, 0x8E, 0x8F, 0x91, 0x93, 0x94, 0x95, + 0x95, 0x95, 0x95, 0x92, 0x8F, 0x8B, 0x88, 0x84, 0x81, 0x7D, 0x7A, 0x78, 0x7A, 0x7C, 0x7A, 0x79, + 0x7A, 0x79, 0x78, 0x77, 0x78, 0x78, 0x77, 0x77, 0x75, 0x75, 0x78, 0x7C, 0x81, 0x83, 0x82, 0x81, + 0x81, 0x83, 0x89, 0x92, 0x99, 0x9B, 0x9B, 0x97, 0x91, 0x89, 0x82, 0x7E, 0x7D, 0x7E, 0x80, 0x80, + 0x83, 0x87, 0x8F, 0x97, 0x9C, 0x9F, 0xA1, 0xA0, 0x9C, 0x99, 0x93, 0x8D, 0x89, 0x82, 0x7C, 0x77, + 0x71, 0x6A, 0x67, 0x69, 0x6C, 0x6F, 0x70, 0x6F, 0x70, 0x71, 0x6E, 0x6D, 0x6D, 0x6C, 0x6B, 0x6B, + 0x6D, 0x71, 0x74, 0x75, 0x79, 0x7E, 0x84, 0x8B, 0x91, 0x96, 0x97, 0x92, 0x8B, 0x83, 0x7B, 0x76, + 0x72, 0x70, 0x70, 0x71, 0x70, 0x6E, 0x6D, 0x6F, 0x72, 0x73, 0x74, 0x77, 0x78, 0x79, 0x7D, 0x7E, + 0x7E, 0x83, 0x87, 0x88, 0x83, 0x7D, 0x78, 0x76, 0x73, 0x71, 0x74, 0x7A, 0x80, 0x86, 0x87, 0x84, + 0x84, 0x82, 0x7F, 0x7C, 0x78, 0x72, 0x6B, 0x6A, 0x68, 0x65, 0x64, 0x64, 0x66, 0x67, 0x67, 0x6A, + 0x6E, 0x75, 0x7C, 0x80, 0x84, 0x88, 0x8D, 0x8F, 0x91, 0x90, 0x90, 0x91, 0x92, 0x91, 0x8C, 0x86, + 0x82, 0x7C, 0x7B, 0x81, 0x85, 0x8A, 0x8E, 0x8D, 0x8B, 0x8A, 0x8A, 0x8A, 0x89, 0x8A, 0x8A, 0x84, + 0x7E, 0x7D, 0x80, 0x86, 0x8C, 0x92, 0x94, 0x90, 0x8B, 0x8B, 0x8A, 0x8A, 0x8C, 0x88, 0x84, 0x81, + 0x7D, 0x79, 0x75, 0x74, 0x75, 0x73, 0x73, 0x6F, 0x6D, 0x69, 0x66, 0x68, 0x6A, 0x6D, 0x72, 0x73, + 0x73, 0x76, 0x7B, 0x7E, 0x7D, 0x7E, 0x80, 0x89, 0x90, 0x95, 0x97, 0x99, 0x9C, 0x9E, 0x9D, 0x99, + 0x93, 0x8A, 0x7D, 0x79, 0x77, 0x78, 0x80, 0x85, 0x88, 0x89, 0x86, 0x84, 0x85, 0x86, 0x84, 0x82, + 0x80, 0x7A, 0x76, 0x77, 0x7C, 0x83, 0x87, 0x88, 0x88, 0x84, 0x7F, 0x78, 0x70, 0x6F, 0x6E, 0x72, + 0x75, 0x75, 0x76, 0x74, 0x70, 0x6C, 0x6B, 0x6C, 0x6B, 0x68, 0x65, 0x62, 0x62, 0x68, 0x6C, 0x72, + 0x7A, 0x83, 0x89, 0x8D, 0x8D, 0x8D, 0x8F, 0x92, 0x9A, 0x9F, 0xA3, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, + 0x9D, 0x95, 0x8D, 0x84, 0x77, 0x69, 0x5F, 0x58, 0x58, 0x5E, 0x67, 0x72, 0x7A, 0x7D, 0x80, 0x81, + 0x83, 0x86, 0x86, 0x88, 0x89, 0x88, 0x86, 0x82, 0x7E, 0x7D, 0x7B, 0x7A, 0x7A, 0x75, 0x6C, 0x65, + 0x63, 0x66, 0x70, 0x79, 0x7E, 0x80, 0x7B, 0x74, 0x6D, 0x68, 0x65, 0x64, 0x62, 0x5F, 0x58, 0x53, + 0x53, 0x56, 0x5C, 0x63, 0x6F, 0x7B, 0x86, 0x92, 0x9E, 0xA4, 0xA9, 0xAE, 0xB0, 0xB6, 0xB5, 0xB1, + 0xAC, 0xA4, 0x9F, 0x98, 0x93, 0x8D, 0x84, 0x76, 0x63, 0x53, 0x4D, 0x55, 0x64, 0x6F, 0x78, 0x79, + 0x73, 0x69, 0x5E, 0x5D, 0x62, 0x68, 0x72, 0x7C, 0x83, 0x88, 0x92, 0x9A, 0xA1, 0xA7, 0xAA, 0xAA, + 0xA3, 0x95, 0x8A, 0x84, 0x82, 0x81, 0x81, 0x83, 0x80, 0x7A, 0x6E, 0x60, 0x55, 0x52, 0x59, 0x66, + 0x73, 0x78, 0x75, 0x73, 0x76, 0x7A, 0x7E, 0x85, 0x8A, 0x8D, 0x8E, 0x93, 0x9B, 0xA4, 0xAE, 0xB7, + 0xBC, 0xBE, 0xBE, 0xB7, 0xAB, 0x9E, 0x95, 0x92, 0x91, 0x8A, 0x83, 0x79, 0x66, 0x4F, 0x3A, 0x2C, + 0x30, 0x48, 0x65, 0x7A, 0x87, 0x94, 0x99, 0x95, 0x8D, 0x89, 0x88, 0x89, 0x8F, 0x91, 0x90, 0x8C, + 0x88, 0x88, 0x86, 0x83, 0x7D, 0x79, 0x74, 0x6D, 0x64, 0x5E, 0x62, 0x6B, 0x72, 0x74, 0x70, 0x68, + 0x5E, 0x4F, 0x42, 0x46, 0x57, 0x68, 0x71, 0x77, 0x7D, 0x84, 0x89, 0x88, 0x83, 0x81, 0x84, 0x8B, + 0x93, 0x9A, 0xA5, 0xAA, 0xAB, 0xA6, 0xA0, 0x9B, 0x95, 0x8D, 0x87, 0x89, 0x8C, 0x8C, 0x89, 0x7F, + 0x6C, 0x4E, 0x31, 0x21, 0x28, 0x3E, 0x56, 0x69, 0x7A, 0x83, 0x7D, 0x6D, 0x61, 0x61, 0x6E, 0x82, + 0x93, 0xA2, 0xAD, 0xB1, 0xA9, 0x9C, 0x91, 0x8C, 0x85, 0x78, 0x6E, 0x6B, 0x6D, 0x72, 0x7A, 0x81, + 0x84, 0x7F, 0x6D, 0x55, 0x3F, 0x3F, 0x52, 0x63, 0x69, 0x6C, 0x6E, 0x72, 0x77, 0x77, 0x78, 0x7C, + 0x84, 0x91, 0xA2, 0xB3, 0xBC, 0xC6, 0xCC, 0xD2, 0xD4, 0xD1, 0xCC, 0xBC, 0xA8, 0x9F, 0x9A, 0x99, + 0x96, 0x8B, 0x7D, 0x68, 0x49, 0x2B, 0x17, 0x16, 0x32, 0x58, 0x77, 0x8E, 0x9E, 0x9E, 0x89, 0x78, + 0x73, 0x7B, 0x8B, 0x97, 0x9F, 0xA7, 0xAB, 0xA4, 0x9B, 0x94, 0x90, 0x88, 0x7C, 0x72, 0x6D, 0x70, + 0x78, 0x80, 0x8A, 0x8F, 0x87, 0x76, 0x5C, 0x45, 0x3D, 0x47, 0x59, 0x6B, 0x7A, 0x7C, 0x79, 0x75, + 0x6E, 0x6A, 0x69, 0x70, 0x79, 0x83, 0x93, 0xA2, 0xAB, 0xB5, 0xBB, 0xB9, 0xB4, 0xA9, 0x99, 0x91, + 0x8E, 0x94, 0x9D, 0x9E, 0x97, 0x82, 0x5F, 0x37, 0x19, 0x16, 0x32, 0x5A, 0x7D, 0x94, 0x9F, 0x9E, + 0x8C, 0x77, 0x6C, 0x73, 0x83, 0x91, 0x98, 0x9C, 0x9F, 0x9D, 0x9B, 0x97, 0x8C, 0x7A, 0x64, 0x54, + 0x4A, 0x53, 0x67, 0x7B, 0x8A, 0x92, 0x8A, 0x70, 0x55, 0x46, 0x40, 0x47, 0x53, 0x5A, 0x62, 0x6B, + 0x6D, 0x6F, 0x72, 0x70, 0x71, 0x74, 0x7F, 0x94, 0xAB, 0xBE, 0xCA, 0xD3, 0xD0, 0xC7, 0xB9, 0xA4, + 0x92, 0x8D, 0x93, 0x96, 0x92, 0x8B, 0x7D, 0x60, 0x3A, 0x1A, 0x0F, 0x22, 0x42, 0x5F, 0x78, 0x8B, + 0x93, 0x93, 0x8A, 0x81, 0x7F, 0x7F, 0x82, 0x88, 0x91, 0x95, 0x99, 0xA0, 0x9D, 0x91, 0x7B, 0x66, + 0x5B, 0x60, 0x6E, 0x7F, 0x8C, 0x96, 0x9C, 0x92, 0x82, 0x6D, 0x5C, 0x50, 0x41, 0x41, 0x4D, 0x58, + 0x5F, 0x67, 0x6E, 0x6D, 0x6D, 0x6A, 0x68, 0x6F, 0x7F, 0x97, 0xAB, 0xBB, 0xC8, 0xCC, 0xCB, 0xC6, + 0xBA, 0xA8, 0x9A, 0x8E, 0x8B, 0x8C, 0x87, 0x79, 0x62, 0x48, 0x35, 0x31, 0x3F, 0x5C, 0x79, 0x8D, + 0x9C, 0xA6, 0xAC, 0xA8, 0xA0, 0x98, 0x8C, 0x88, 0x8A, 0x8B, 0x8E, 0x95, 0x98, 0x8F, 0x87, 0x82, + 0x7B, 0x72, 0x70, 0x79, 0x85, 0x97, 0xA8, 0xAB, 0xA4, 0x97, 0x80, 0x63, 0x4F, 0x44, 0x40, 0x42, + 0x4D, 0x5B, 0x68, 0x74, 0x7C, 0x7F, 0x82, 0x88, 0x8E, 0x97, 0xA8, 0xB4, 0xBA, 0xBB, 0xB8, 0xB6, + 0xAC, 0x9C, 0x8B, 0x83, 0x7D, 0x79, 0x77, 0x66, 0x51, 0x48, 0x49, 0x4E, 0x57, 0x69, 0x7D, 0x92, + 0x9F, 0xA3, 0xA4, 0x9A, 0x88, 0x77, 0x74, 0x74, 0x70, 0x73, 0x76, 0x7D, 0x88, 0x90, 0x89, 0x7F, + 0x7B, 0x72, 0x75, 0x82, 0x86, 0x8A, 0x8F, 0x92, 0x95, 0x8D, 0x6E, 0x49, 0x31, 0x22, 0x1E, 0x20, + 0x28, 0x34, 0x45, 0x5B, 0x71, 0x7E, 0x81, 0x7F, 0x85, 0x97, 0xA3, 0xAB, 0xB3, 0xB7, 0xB7, 0xB3, + 0xA5, 0x93, 0x85, 0x7A, 0x79, 0x7A, 0x65, 0x4D, 0x4B, 0x52, 0x50, 0x53, 0x6A, 0x8C, 0xA9, 0xBB, + 0xBD, 0xB4, 0xA0, 0x8D, 0x81, 0x72, 0x60, 0x54, 0x5B, 0x6D, 0x82, 0x90, 0x8F, 0x8F, 0x95, 0x94, + 0x8A, 0x86, 0x93, 0xA6, 0xB3, 0xB5, 0xB3, 0xAD, 0x9C, 0x82, 0x69, 0x50, 0x31, 0x20, 0x21, 0x2A, + 0x3C, 0x55, 0x71, 0x8C, 0xA1, 0xA3, 0xA0, 0xA3, 0xA7, 0xA6, 0x9F, 0x9F, 0xA5, 0xA8, 0xA0, 0x8A, + 0x7C, 0x7E, 0x93, 0x96, 0x75, 0x5C, 0x64, 0x6D, 0x58, 0x58, 0x7B, 0x9E, 0xB1, 0xB6, 0xBA, 0xB6, + 0xAF, 0x9D, 0x7A, 0x5D, 0x50, 0x51, 0x51, 0x5A, 0x6D, 0x80, 0x92, 0xA0, 0xAA, 0xA5, 0x98, 0x97, + 0x96, 0x8B, 0x87, 0x95, 0xA5, 0xA5, 0x8F, 0x78, 0x70, 0x60, 0x3B, 0x21, 0x1E, 0x20, 0x2D, 0x46, + 0x63, 0x79, 0x88, 0x90, 0x91, 0x91, 0x8C, 0x83, 0x84, 0x89, 0x85, 0x7E, 0x84, 0x93, 0xA0, 0x9B, + 0x7D, 0x6D, 0x75, 0x6C, 0x4D, 0x47, 0x64, 0x84, 0x95, 0xA4, 0xB6, 0xBF, 0xB4, 0x9C, 0x88, 0x7B, + 0x6B, 0x57, 0x4C, 0x52, 0x61, 0x75, 0x89, 0x9B, 0xA6, 0xAB, 0xAA, 0xA0, 0x93, 0x87, 0x84, 0x87, + 0x8A, 0x8D, 0x88, 0x7F, 0x78, 0x6B, 0x57, 0x49, 0x43, 0x3B, 0x3C, 0x50, 0x6E, 0x7D, 0x81, 0x8E, + 0x9C, 0x9E, 0x98, 0x98, 0x96, 0x8A, 0x7A, 0x7A, 0x8A, 0x98, 0x91, 0x77, 0x71, 0x71, 0x5A, 0x3C, + 0x36, 0x4A, 0x5D, 0x6E, 0x88, 0xA8, 0xB7, 0xB5, 0xAE, 0xA2, 0x96, 0x83, 0x6D, 0x5E, 0x5A, 0x65, + 0x71, 0x81, 0x94, 0xA9, 0xB9, 0xB5, 0xAB, 0xA7, 0xA2, 0x97, 0x95, 0x98, 0x95, 0x92, 0x89, 0x82, + 0x71, 0x5F, 0x55, 0x40, 0x2F, 0x33, 0x42, 0x4B, 0x58, 0x6E, 0x7F, 0x8A, 0x8F, 0x93, 0x92, 0x8C, + 0x8B, 0x8F, 0x9C, 0xA4, 0x98, 0x86, 0x84, 0x80, 0x63, 0x4C, 0x50, 0x54, 0x5B, 0x73, 0x8F, 0x9C, + 0x9E, 0xA1, 0x9E, 0x93, 0x86, 0x7B, 0x6E, 0x60, 0x63, 0x71, 0x77, 0x7B, 0x8E, 0xA4, 0xAA, 0xB2, + 0xC4, 0xC6, 0xB7, 0xB4, 0xBB, 0xAE, 0xA0, 0x9A, 0x8F, 0x7F, 0x71, 0x67, 0x58, 0x52, 0x58, 0x59, + 0x58, 0x59, 0x61, 0x6E, 0x78, 0x7D, 0x84, 0x8A, 0x90, 0x99, 0xA1, 0xAE, 0xB4, 0xA4, 0x93, 0x87, + 0x72, 0x54, 0x41, 0x49, 0x4F, 0x4D, 0x63, 0x81, 0x87, 0x84, 0x84, 0x83, 0x79, 0x68, 0x66, 0x64, + 0x56, 0x5B, 0x70, 0x7A, 0x7E, 0x8D, 0xA0, 0xA5, 0x9E, 0xA3, 0xA8, 0x9C, 0x95, 0x97, 0x8E, 0x84, + 0x82, 0x7B, 0x70, 0x6D, 0x67, 0x5D, 0x59, 0x59, 0x61, 0x65, 0x66, 0x66, 0x64, 0x71, 0x75, 0x6E, + 0x75, 0x84, 0x90, 0x9E, 0xA8, 0xA2, 0x9C, 0x98, 0x8E, 0x6E, 0x4A, 0x4E, 0x50, 0x43, 0x4E, 0x66, + 0x78, 0x77, 0x75, 0x7E, 0x77, 0x64, 0x63, 0x65, 0x5E, 0x67, 0x7A, 0x89, 0x96, 0xA7, 0xB6, 0xB2, + 0xAD, 0xB3, 0xAF, 0x99, 0x8A, 0x92, 0x94, 0x85, 0x7C, 0x7C, 0x79, 0x71, 0x67, 0x5D, 0x5F, 0x62, + 0x60, 0x6A, 0x76, 0x83, 0x86, 0x86, 0x8C, 0x8A, 0x88, 0x90, 0xA6, 0xA6, 0x93, 0x96, 0xA3, 0xA0, + 0x7D, 0x6A, 0x79, 0x79, 0x72, 0x76, 0x84, 0x8A, 0x85, 0x79, 0x6B, 0x70, 0x71, 0x64, 0x58, 0x5C, + 0x6F, 0x70, 0x7B, 0x95, 0xAD, 0xC1, 0xC0, 0xB9, 0xBA, 0xB9, 0xA9, 0x8F, 0x92, 0x9B, 0x86, 0x6B, + 0x6E, 0x7B, 0x69, 0x59, 0x61, 0x66, 0x65, 0x62, 0x67, 0x6E, 0x7A, 0x83, 0x81, 0x7F, 0x81, 0x9E, + 0xB2, 0x9E, 0x8F, 0x96, 0xA3, 0x88, 0x5B, 0x62, 0x76, 0x6D, 0x68, 0x75, 0x7C, 0x79, 0x6F, 0x5D, + 0x55, 0x4E, 0x46, 0x39, 0x34, 0x4D, 0x60, 0x6E, 0x87, 0x9F, 0xB4, 0xBF, 0xBB, 0xB8, 0xC0, 0xBF, + 0xA8, 0x92, 0x97, 0xA0, 0x85, 0x6A, 0x6D, 0x6B, 0x55, 0x44, 0x48, 0x4D, 0x51, 0x5D, 0x6B, 0x7A, + 0x85, 0x8D, 0x91, 0x9F, 0xAD, 0xA3, 0x92, 0x92, 0x8C, 0x74, 0x6E, 0x82, 0x85, 0x85, 0x93, 0x9F, + 0x9B, 0x8C, 0x86, 0x7F, 0x6C, 0x4F, 0x41, 0x42, 0x34, 0x33, 0x4E, 0x68, 0x6F, 0x7B, 0xA2, 0xB6, + 0xAA, 0xAD, 0xC7, 0xC0, 0xA7, 0xB1, 0xBA, 0xA9, 0x91, 0x83, 0x7C, 0x67, 0x4C, 0x44, 0x44, 0x41, + 0x52, 0x6D, 0x7C, 0x89, 0x92, 0x9A, 0xA1, 0x9A, 0x8E, 0x85, 0x7A, 0x6F, 0x66, 0x61, 0x6D, 0x7C, + 0x84, 0x99, 0xAB, 0xAD, 0xA4, 0x94, 0x7F, 0x64, 0x50, 0x42, 0x31, 0x29, 0x2F, 0x35, 0x3F, 0x5A, + 0x79, 0x94, 0xA8, 0xB3, 0xB8, 0xB7, 0xBB, 0xB9, 0xAD, 0xA9, 0xA4, 0x94, 0x7D, 0x6E, 0x69, 0x5F, + 0x54, 0x53, 0x59, 0x62, 0x75, 0x85, 0x92, 0xA3, 0xA3, 0x9F, 0xA9, 0xBA, 0xB8, 0x9B, 0x8A, 0x8D, + 0x7F, 0x5D, 0x5E, 0x71, 0x74, 0x7C, 0x89, 0x97, 0x94, 0x88, 0x84, 0x6D, 0x51, 0x4C, 0x4A, 0x30, + 0x22, 0x3A, 0x47, 0x4E, 0x67, 0x95, 0xB3, 0xB3, 0xBE, 0xC5, 0xC1, 0xBB, 0xB2, 0xA6, 0x97, 0x95, + 0x8E, 0x7F, 0x78, 0x75, 0x71, 0x66, 0x67, 0x71, 0x7C, 0x8C, 0x91, 0x99, 0xA1, 0xA0, 0x9E, 0x95, + 0x8D, 0x89, 0x7B, 0x6A, 0x6D, 0x76, 0x7E, 0x98, 0xB3, 0xBD, 0xBA, 0xA6, 0x8F, 0x79, 0x5A, 0x3D, + 0x27, 0x1F, 0x20, 0x24, 0x36, 0x57, 0x73, 0x87, 0x9D, 0xAD, 0xAC, 0xA9, 0xA3, 0x91, 0x85, 0x87, + 0x84, 0x81, 0x81, 0x7E, 0x7C, 0x76, 0x6E, 0x73, 0x6D, 0x60, 0x5D, 0x61, 0x70, 0x7D, 0x88, 0x9A, + 0x9D, 0x98, 0x96, 0x88, 0x7C, 0x75, 0x67, 0x69, 0x81, 0x94, 0x9D, 0xA6, 0xAB, 0xA0, 0x85, 0x6F, + 0x61, 0x4C, 0x31, 0x26, 0x25, 0x26, 0x33, 0x4D, 0x72, 0x91, 0x9C, 0xA7, 0xBA, 0xBE, 0xAE, 0x9C, + 0x8B, 0x84, 0x7F, 0x71, 0x6E, 0x74, 0x71, 0x6A, 0x6E, 0x77, 0x7A, 0x77, 0x7A, 0x87, 0x85, 0x86, + 0xA3, 0xB8, 0xB4, 0xA9, 0xA7, 0xA6, 0x91, 0x70, 0x66, 0x6F, 0x70, 0x80, 0x9D, 0xB1, 0xBF, 0xB9, + 0xA7, 0x94, 0x7C, 0x62, 0x46, 0x29, 0x26, 0x33, 0x2E, 0x39, 0x68, 0x8F, 0x97, 0xA1, 0xC0, 0xC4, + 0xAA, 0x9F, 0xA3, 0x9E, 0x87, 0x80, 0x8C, 0x85, 0x7D, 0x87, 0x85, 0x7F, 0x80, 0x7E, 0x86, 0x8F, + 0x8C, 0x8F, 0x96, 0x9A, 0x98, 0x8C, 0x80, 0x78, 0x67, 0x55, 0x59, 0x6F, 0x7D, 0x92, 0xAC, 0xB4, + 0xAC, 0x9C, 0x8D, 0x74, 0x55, 0x41, 0x32, 0x24, 0x26, 0x37, 0x4B, 0x65, 0x84, 0x9E, 0xAA, 0xA8, + 0xA8, 0xA4, 0x97, 0x8E, 0x87, 0x83, 0x86, 0x82, 0x7A, 0x79, 0x78, 0x78, 0x76, 0x72, 0x74, 0x79, + 0x7D, 0x7F, 0x86, 0x93, 0x9C, 0x9F, 0x9A, 0x99, 0x99, 0x86, 0x6E, 0x6D, 0x6F, 0x6C, 0x7D, 0x8E, + 0x98, 0x98, 0x89, 0x82, 0x74, 0x61, 0x50, 0x35, 0x28, 0x2B, 0x2F, 0x35, 0x51, 0x76, 0x8E, 0xA0, + 0xAD, 0xB7, 0xB8, 0xA5, 0x90, 0x85, 0x79, 0x6F, 0x71, 0x73, 0x6D, 0x67, 0x74, 0x84, 0x85, 0x83, + 0x89, 0x89, 0x88, 0x95, 0xA4, 0xAD, 0xAD, 0xA1, 0x96, 0x8C, 0x80, 0x6B, 0x63, 0x73, 0x78, 0x7C, + 0x92, 0xB1, 0xBC, 0xAB, 0x98, 0x89, 0x7A, 0x5A, 0x36, 0x27, 0x23, 0x25, 0x22, 0x2F, 0x5E, 0x83, + 0x8C, 0x96, 0xB8, 0xCB, 0xB2, 0x9A, 0x93, 0x8A, 0x78, 0x6C, 0x75, 0x79, 0x7B, 0x7F, 0x7E, 0x82, + 0x89, 0x89, 0x78, 0x70, 0x7C, 0x7F, 0x80, 0x92, 0xA2, 0x9E, 0x9B, 0x9D, 0x93, 0x82, 0x7B, 0x8A, + 0x8F, 0x85, 0x93, 0xA0, 0x9D, 0x93, 0x87, 0x79, 0x63, 0x58, 0x4B, 0x2F, 0x2D, 0x3E, 0x40, 0x4E, + 0x72, 0x92, 0x9F, 0xA5, 0xB4, 0xBA, 0xA5, 0x8E, 0x8B, 0x88, 0x79, 0x77, 0x83, 0x89, 0x84, 0x83, + 0x86, 0x86, 0x81, 0x77, 0x78, 0x7F, 0x82, 0x8D, 0x94, 0x95, 0x9B, 0x98, 0x89, 0x85, 0x80, 0x77, + 0x7F, 0x89, 0xA0, 0xB6, 0xB7, 0xB0, 0xA2, 0x90, 0x7C, 0x65, 0x49, 0x2D, 0x21, 0x1E, 0x23, 0x39, + 0x5A, 0x6F, 0x85, 0xA8, 0xB5, 0xB6, 0xB7, 0xAC, 0x9D, 0x90, 0x86, 0x85, 0x8A, 0x88, 0x82, 0x81, + 0x82, 0x7F, 0x71, 0x66, 0x6F, 0x84, 0x93, 0x8A, 0x84, 0x94, 0x95, 0x84, 0x6F, 0x6C, 0x6E, 0x59, + 0x62, 0x90, 0xA5, 0xA1, 0xA1, 0xA6, 0xA0, 0x84, 0x6A, 0x60, 0x49, 0x2C, 0x2C, 0x31, 0x2E, 0x3E, + 0x5B, 0x5F, 0x67, 0x8C, 0x98, 0x8A, 0x8D, 0x9B, 0x92, 0x7F, 0x84, 0x8A, 0x7F, 0x6F, 0x77, 0x7D, + 0x6B, 0x65, 0x6C, 0x71, 0x6E, 0x6D, 0x82, 0xA2, 0xAD, 0x9D, 0x9B, 0xA7, 0xAB, 0x93, 0x6F, 0x74, + 0x79, 0x63, 0x69, 0x91, 0xA6, 0x9E, 0xA1, 0xAC, 0xA3, 0x86, 0x68, 0x53, 0x41, 0x39, 0x3A, 0x33, + 0x40, 0x5B, 0x64, 0x6D, 0x7D, 0x87, 0x88, 0x85, 0x84, 0x8A, 0x8A, 0x83, 0x8B, 0x8F, 0x87, 0x8D, + 0x93, 0x8F, 0x8B, 0x86, 0x8C, 0xA0, 0xA7, 0xA3, 0xA1, 0xAB, 0xBA, 0xA5, 0x91, 0x9B, 0x90, 0x7F, + 0x8A, 0x9A, 0x9E, 0x9E, 0xA5, 0xA4, 0x98, 0x84, 0x79, 0x6E, 0x57, 0x47, 0x3F, 0x39, 0x3B, 0x53, + 0x62, 0x69, 0x84, 0x99, 0x9C, 0x97, 0x9D, 0xA0, 0x85, 0x7F, 0x8E, 0x8A, 0x79, 0x7C, 0x8B, 0x7F, + 0x72, 0x75, 0x6A, 0x5F, 0x6D, 0x8C, 0x9E, 0x91, 0x8D, 0xA1, 0x9E, 0x83, 0x7A, 0x8B, 0x87, 0x79, + 0x8E, 0xA7, 0xA7, 0xA5, 0xAA, 0xA0, 0x8A, 0x76, 0x67, 0x57, 0x3A, 0x31, 0x3D, 0x36, 0x3A, 0x58, + 0x71, 0x76, 0x83, 0x9A, 0x95, 0x82, 0x88, 0x8C, 0x78, 0x70, 0x84, 0x87, 0x77, 0x7A, 0x84, 0x77, + 0x62, 0x64, 0x66, 0x5E, 0x6B, 0x71, 0x6A, 0x7A, 0x9D, 0xAD, 0x97, 0x91, 0xA5, 0xA6, 0x85, 0x6E, + 0x80, 0x77, 0x62, 0x7C, 0x9A, 0xA3, 0xA3, 0x9C, 0x92, 0x8A, 0x77, 0x59, 0x43, 0x35, 0x2E, 0x30, + 0x42, 0x59, 0x6A, 0x7A, 0x7F, 0x8A, 0x99, 0x97, 0x8A, 0x7C, 0x81, 0x83, 0x79, 0x7D, 0x8F, 0x94, + 0x8B, 0x87, 0x8C, 0x85, 0x78, 0x80, 0x8E, 0x96, 0xA1, 0xA2, 0xA2, 0xA2, 0xA2, 0x9D, 0x84, 0x74, + 0x78, 0x6E, 0x64, 0x83, 0xA1, 0xA1, 0xA5, 0xAC, 0xA0, 0x8A, 0x74, 0x61, 0x49, 0x34, 0x27, 0x1C, + 0x24, 0x3E, 0x56, 0x69, 0x7D, 0x96, 0xAA, 0xAA, 0xA0, 0x9D, 0x92, 0x7E, 0x85, 0x8D, 0x8C, 0x92, + 0x98, 0x9F, 0x9B, 0x8F, 0x86, 0x77, 0x68, 0x69, 0x78, 0x8E, 0xA7, 0x99, 0x91, 0xA7, 0xA0, 0x8C, + 0x82, 0x86, 0x82, 0x70, 0x8B, 0xB1, 0xB2, 0xA7, 0xAD, 0xAD, 0x8F, 0x6A, 0x58, 0x4A, 0x26, 0x18, + 0x25, 0x24, 0x32, 0x56, 0x76, 0x81, 0x8D, 0xA7, 0xA3, 0x93, 0x93, 0x8F, 0x78, 0x70, 0x84, 0x87, + 0x83, 0x90, 0x9B, 0x99, 0x90, 0x8A, 0x83, 0x78, 0x79, 0x80, 0x80, 0x80, 0x90, 0xA8, 0xA5, 0x95, + 0x94, 0x94, 0x89, 0x7D, 0x72, 0x6D, 0x77, 0x80, 0x91, 0xA3, 0xAB, 0xAC, 0x9B, 0x88, 0x7E, 0x63, + 0x3F, 0x2E, 0x22, 0x1C, 0x2F, 0x4B, 0x68, 0x82, 0x8F, 0x97, 0x9C, 0x9D, 0x91, 0x82, 0x7D, 0x74, + 0x6F, 0x78, 0x88, 0x92, 0x99, 0xA0, 0x9D, 0x93, 0x85, 0x7B, 0x6F, 0x5F, 0x5C, 0x6C, 0x87, 0x8D, + 0x8E, 0x96, 0x98, 0x8D, 0x74, 0x6D, 0x6D, 0x59, 0x5C, 0x7C, 0x91, 0xA2, 0xAB, 0xA0, 0x96, 0x88, + 0x72, 0x5D, 0x41, 0x28, 0x1E, 0x1E, 0x24, 0x46, 0x6E, 0x81, 0x90, 0xA4, 0xB5, 0xB4, 0xA3, 0x97, + 0x88, 0x79, 0x76, 0x72, 0x76, 0x87, 0x93, 0x98, 0x97, 0x90, 0x88, 0x78, 0x68, 0x63, 0x5A, 0x57, + 0x64, 0x7B, 0x9A, 0xA1, 0x97, 0xA3, 0xA9, 0x93, 0x7E, 0x7D, 0x78, 0x73, 0x8D, 0xAD, 0xB5, 0xB1, + 0xAC, 0xA6, 0x91, 0x6F, 0x55, 0x43, 0x2B, 0x1C, 0x23, 0x30, 0x49, 0x6A, 0x8C, 0x9F, 0xA6, 0xBC, + 0xC2, 0xA9, 0x9E, 0x9E, 0x8B, 0x7F, 0x8E, 0xA3, 0xAA, 0xA2, 0xA6, 0xA6, 0x9A, 0x8C, 0x76, 0x67, + 0x68, 0x6E, 0x70, 0x75, 0x88, 0xA1, 0xAB, 0x99, 0x8D, 0x98, 0x96, 0x77, 0x67, 0x72, 0x72, 0x73, + 0x8C, 0xA5, 0xAA, 0xA1, 0x9C, 0x91, 0x7E, 0x6A, 0x49, 0x2E, 0x1C, 0x20, 0x30, 0x37, 0x56, 0x82, + 0x9D, 0xA2, 0xA6, 0xAF, 0xA6, 0x8E, 0x81, 0x81, 0x78, 0x75, 0x82, 0x8A, 0x8F, 0x8C, 0x86, 0x81, + 0x7A, 0x75, 0x6F, 0x70, 0x7B, 0x81, 0x83, 0x87, 0x90, 0x9C, 0x9C, 0x8C, 0x7C, 0x78, 0x70, 0x5E, + 0x56, 0x5F, 0x6F, 0x7F, 0x91, 0xA0, 0xA4, 0x99, 0x85, 0x73, 0x63, 0x46, 0x25, 0x15, 0x19, 0x26, + 0x38, 0x53, 0x70, 0x8B, 0xA2, 0xA8, 0xA6, 0xAB, 0xA6, 0x8F, 0x7E, 0x7F, 0x83, 0x82, 0x8B, 0x9A, + 0x9D, 0x9C, 0x9A, 0x95, 0x88, 0x76, 0x72, 0x6F, 0x6C, 0x70, 0x77, 0x7F, 0x84, 0x8C, 0x9E, 0xA3, + 0x91, 0x87, 0x8B, 0x7F, 0x6C, 0x6D, 0x77, 0x7F, 0x8B, 0x9A, 0xA6, 0x9E, 0x8A, 0x82, 0x7A, 0x61, + 0x47, 0x35, 0x29, 0x2A, 0x3C, 0x59, 0x76, 0x91, 0xAA, 0xB7, 0xB5, 0xB3, 0xB0, 0x9E, 0x8E, 0x8E, + 0x8F, 0x88, 0x8C, 0x9B, 0xA1, 0x9E, 0x95, 0x8F, 0x85, 0x72, 0x60, 0x5C, 0x63, 0x67, 0x6D, 0x76, + 0x7B, 0x80, 0x85, 0x8D, 0x9B, 0x95, 0x83, 0x7F, 0x83, 0x80, 0x71, 0x79, 0x8D, 0x91, 0x93, 0x9A, + 0x9F, 0x94, 0x7F, 0x6F, 0x62, 0x57, 0x4B, 0x3D, 0x3D, 0x55, 0x68, 0x72, 0x8A, 0xA3, 0xAD, 0xAA, + 0xA1, 0x9D, 0x97, 0x8C, 0x87, 0x8B, 0x91, 0x94, 0x8F, 0x88, 0x89, 0x8A, 0x83, 0x72, 0x68, 0x6C, + 0x63, 0x57, 0x5E, 0x73, 0x83, 0x83, 0x88, 0x94, 0x92, 0x8B, 0x9A, 0x9F, 0x89, 0x78, 0x74, 0x75, + 0x6E, 0x63, 0x75, 0x8D, 0x93, 0x96, 0x9C, 0x99, 0x87, 0x6D, 0x59, 0x55, 0x4B, 0x34, 0x31, 0x3E, + 0x55, 0x6F, 0x7B, 0x90, 0xA9, 0xB7, 0xB3, 0xA8, 0xAB, 0xAC, 0x9D, 0x8B, 0x8D, 0x92, 0x8B, 0x81, + 0x82, 0x86, 0x7E, 0x74, 0x6A, 0x67, 0x69, 0x64, 0x60, 0x63, 0x6E, 0x7C, 0x81, 0x7D, 0x78, 0x79, + 0x80, 0x8C, 0x8D, 0x81, 0x80, 0x84, 0x7E, 0x6E, 0x71, 0x83, 0x81, 0x7C, 0x8C, 0x97, 0x88, 0x6E, + 0x65, 0x63, 0x50, 0x38, 0x37, 0x3A, 0x3E, 0x5B, 0x7B, 0x8D, 0x9D, 0xAE, 0xB5, 0xAB, 0xA5, 0xAA, + 0xA2, 0x94, 0x98, 0x9A, 0x8E, 0x84, 0x8A, 0x8C, 0x80, 0x7C, 0x78, 0x72, 0x6C, 0x68, 0x66, 0x64, + 0x69, 0x71, 0x76, 0x7E, 0x81, 0x7E, 0x7A, 0x84, 0x9D, 0x9A, 0x85, 0x86, 0x94, 0x8E, 0x72, 0x71, + 0x85, 0x7F, 0x74, 0x84, 0x95, 0x8A, 0x76, 0x67, 0x5D, 0x57, 0x4B, 0x48, 0x4F, 0x57, 0x6C, 0x82, + 0x91, 0xA2, 0xAF, 0xB9, 0xBB, 0xBC, 0xBC, 0xB5, 0xA0, 0x94, 0x9B, 0x97, 0x8C, 0x88, 0x8A, 0x8A, + 0x7A, 0x6D, 0x6D, 0x65, 0x5E, 0x63, 0x67, 0x6C, 0x75, 0x7D, 0x82, 0x88, 0x8F, 0x8B, 0x82, 0x87, + 0xA2, 0xAB, 0x95, 0x95, 0x9B, 0x8F, 0x79, 0x6D, 0x75, 0x77, 0x75, 0x75, 0x75, 0x78, 0x77, 0x6A, + 0x58, 0x57, 0x57, 0x45, 0x37, 0x42, 0x62, 0x71, 0x78, 0x8F, 0xA4, 0xAB, 0xA5, 0xA9, 0xAE, 0xA6, + 0x9F, 0x93, 0x87, 0x82, 0x84, 0x7E, 0x72, 0x78, 0x81, 0x7D, 0x73, 0x70, 0x73, 0x72, 0x6B, 0x67, + 0x69, 0x6E, 0x6E, 0x70, 0x73, 0x74, 0x84, 0x91, 0x98, 0x9D, 0x9A, 0x99, 0x8B, 0x73, 0x65, 0x65, + 0x61, 0x5A, 0x65, 0x75, 0x7C, 0x76, 0x6A, 0x6A, 0x68, 0x5D, 0x4D, 0x45, 0x4B, 0x55, 0x67, 0x7C, + 0x90, 0xA8, 0xB7, 0xB9, 0xB2, 0xB3, 0xB1, 0x9B, 0x87, 0x7E, 0x7E, 0x7B, 0x75, 0x7D, 0x85, 0x8A, + 0x87, 0x7C, 0x77, 0x74, 0x6F, 0x6B, 0x68, 0x70, 0x78, 0x79, 0x82, 0x85, 0x84, 0x8A, 0x96, 0x9A, + 0x9A, 0x9F, 0x9E, 0x96, 0x8E, 0x82, 0x74, 0x6C, 0x71, 0x77, 0x7B, 0x82, 0x88, 0x89, 0x78, 0x67, + 0x69, 0x62, 0x55, 0x4B, 0x4C, 0x5B, 0x6B, 0x7A, 0x8C, 0xA2, 0xAE, 0xB1, 0xB1, 0xAF, 0xB1, 0xAA, + 0xA2, 0x9A, 0x94, 0x95, 0x8E, 0x80, 0x77, 0x73, 0x71, 0x6C, 0x69, 0x69, 0x68, 0x66, 0x6B, 0x72, + 0x79, 0x7F, 0x81, 0x88, 0x8E, 0x92, 0x8F, 0x7A, 0x73, 0x8D, 0xA8, 0x9D, 0x8E, 0x9E, 0xA8, 0x94, + 0x6A, 0x68, 0x81, 0x6F, 0x5E, 0x71, 0x82, 0x7D, 0x6F, 0x64, 0x5F, 0x64, 0x5C, 0x53, 0x52, 0x53, + 0x6C, 0x7C, 0x79, 0x8C, 0xA7, 0xAC, 0xA2, 0xA7, 0xB3, 0xAE, 0x9D, 0x94, 0x9B, 0x97, 0x8A, 0x82, + 0x77, 0x70, 0x71, 0x6D, 0x65, 0x63, 0x69, 0x69, 0x64, 0x67, 0x6E, 0x6E, 0x6E, 0x73, 0x81, 0x8A, + 0x8E, 0x95, 0x97, 0x8E, 0x90, 0xA4, 0xA5, 0x87, 0x75, 0x78, 0x77, 0x54, 0x3E, 0x56, 0x61, 0x5E, + 0x71, 0x8A, 0x94, 0x92, 0x89, 0x80, 0x80, 0x77, 0x63, 0x53, 0x49, 0x5A, 0x6C, 0x6B, 0x7D, 0xA4, + 0xB8, 0xB6, 0xB8, 0xBF, 0xC2, 0xB1, 0x8F, 0x83, 0x83, 0x76, 0x61, 0x59, 0x64, 0x68, 0x64, 0x62, + 0x65, 0x68, 0x6C, 0x65, 0x5D, 0x66, 0x66, 0x5D, 0x58, 0x61, 0x74, 0x7F, 0x86, 0x8C, 0x90, 0x9A, + 0xAB, 0xAF, 0x96, 0x84, 0x86, 0x82, 0x60, 0x45, 0x60, 0x6D, 0x5E, 0x6F, 0x93, 0xA3, 0x9A, 0x90, + 0x8E, 0x88, 0x75, 0x61, 0x59, 0x4E, 0x56, 0x74, 0x7E, 0x83, 0xA2, 0xBC, 0xBB, 0xB6, 0xB9, 0xBA, + 0xAB, 0x93, 0x8D, 0x8F, 0x85, 0x7D, 0x80, 0x7D, 0x7D, 0x81, 0x79, 0x6D, 0x68, 0x68, 0x5F, 0x53, + 0x58, 0x61, 0x65, 0x6C, 0x7D, 0x90, 0x99, 0xA0, 0xA1, 0x9A, 0x93, 0xA3, 0xB0, 0x8B, 0x70, 0x80, + 0x7E, 0x5F, 0x55, 0x70, 0x82, 0x80, 0x87, 0x9D, 0xA9, 0x99, 0x87, 0x7E, 0x7B, 0x75, 0x60, 0x53, + 0x55, 0x63, 0x75, 0x85, 0x99, 0xAB, 0xB8, 0xBD, 0xB9, 0xB5, 0xB1, 0xA5, 0x94, 0x8D, 0x8C, 0x88, + 0x80, 0x7A, 0x7C, 0x79, 0x72, 0x6B, 0x63, 0x5E, 0x59, 0x52, 0x51, 0x58, 0x58, 0x5B, 0x65, 0x73, + 0x80, 0x84, 0x8A, 0x8F, 0x8F, 0x8C, 0x81, 0x78, 0x7C, 0x85, 0x84, 0x74, 0x6A, 0x71, 0x74, 0x55, + 0x46, 0x61, 0x65, 0x57, 0x67, 0x89, 0x97, 0x91, 0x89, 0x86, 0x8E, 0x86, 0x70, 0x69, 0x68, 0x6C, + 0x79, 0x7E, 0x85, 0x9C, 0xAB, 0xAB, 0xA8, 0xA6, 0xA7, 0x9D, 0x87, 0x7E, 0x7D, 0x75, 0x6C, 0x65, + 0x62, 0x65, 0x60, 0x5B, 0x5B, 0x57, 0x5C, 0x60, 0x5E, 0x65, 0x6E, 0x74, 0x77, 0x80, 0x88, 0x89, + 0x87, 0x8C, 0x94, 0x8B, 0x7E, 0x7E, 0x89, 0x94, 0x88, 0x78, 0x7D, 0x85, 0x73, 0x59, 0x65, 0x79, + 0x73, 0x75, 0x90, 0xA7, 0xA5, 0x9C, 0x96, 0x93, 0x89, 0x77, 0x70, 0x67, 0x60, 0x6E, 0x80, 0x88, + 0x92, 0xA5, 0xB2, 0xB0, 0xAE, 0xB3, 0xAE, 0x9A, 0x92, 0x94, 0x8D, 0x83, 0x80, 0x81, 0x7B, 0x72, + 0x6B, 0x63, 0x5A, 0x53, 0x54, 0x53, 0x51, 0x59, 0x66, 0x76, 0x86, 0x92, 0x99, 0x9F, 0xA0, 0x9D, + 0x98, 0x8D, 0x7F, 0x6C, 0x65, 0x7C, 0x8B, 0x7D, 0x7C, 0x8D, 0x95, 0x86, 0x6C, 0x74, 0x85, 0x73, + 0x6A, 0x85, 0x96, 0x97, 0x91, 0x86, 0x88, 0x8C, 0x7D, 0x6E, 0x65, 0x64, 0x70, 0x7A, 0x82, 0x97, + 0xB1, 0xB7, 0xAF, 0xB0, 0xB0, 0xAA, 0x9A, 0x88, 0x7F, 0x7A, 0x71, 0x61, 0x5A, 0x5C, 0x5D, 0x5A, + 0x58, 0x58, 0x57, 0x5A, 0x61, 0x64, 0x68, 0x6D, 0x72, 0x7C, 0x81, 0x84, 0x87, 0x88, 0x86, 0x85, + 0x84, 0x80, 0x78, 0x6F, 0x78, 0x91, 0x92, 0x7D, 0x78, 0x8D, 0x8F, 0x6C, 0x62, 0x7E, 0x81, 0x70, + 0x7E, 0x9C, 0xA4, 0x99, 0x8F, 0x8E, 0x90, 0x84, 0x75, 0x68, 0x61, 0x68, 0x73, 0x7A, 0x85, 0x98, + 0xA3, 0xA1, 0xA1, 0xA2, 0x9E, 0x91, 0x84, 0x80, 0x7B, 0x72, 0x6B, 0x67, 0x67, 0x6A, 0x63, 0x59, + 0x5B, 0x59, 0x51, 0x57, 0x5E, 0x60, 0x65, 0x70, 0x79, 0x7B, 0x7C, 0x82, 0x84, 0x80, 0x7F, 0x81, + 0x83, 0x85, 0x83, 0x7F, 0x7F, 0x8E, 0xA5, 0xA2, 0x88, 0x84, 0x92, 0x85, 0x5E, 0x57, 0x74, 0x79, + 0x76, 0x8E, 0xAC, 0xB7, 0xAE, 0xA4, 0xA2, 0x9B, 0x81, 0x68, 0x55, 0x49, 0x53, 0x5E, 0x69, 0x80, + 0x9B, 0xAC, 0xAA, 0xA5, 0xA5, 0x9F, 0x8E, 0x7B, 0x73, 0x72, 0x6C, 0x67, 0x67, 0x6B, 0x6C, 0x6E, + 0x6D, 0x69, 0x6B, 0x6C, 0x6A, 0x66, 0x6D, 0x7A, 0x7F, 0x85, 0x8F, 0x99, 0x9B, 0x92, 0x90, 0x91, + 0x88, 0x81, 0x87, 0x8A, 0x83, 0x81, 0x89, 0xA1, 0xB6, 0xA2, 0x87, 0x8D, 0x95, 0x78, 0x54, 0x5E, + 0x74, 0x72, 0x79, 0x98, 0xAD, 0xA9, 0xA1, 0x9C, 0x98, 0x8B, 0x72, 0x5D, 0x55, 0x5C, 0x67, 0x6E, + 0x7D, 0x94, 0xA7, 0xAA, 0xA5, 0xA7, 0xA2, 0x8E, 0x7D, 0x75, 0x75, 0x72, 0x6A, 0x68, 0x6A, 0x68, + 0x68, 0x66, 0x60, 0x61, 0x5E, 0x5A, 0x61, 0x66, 0x6B, 0x76, 0x7A, 0x84, 0x8A, 0x87, 0x8A, 0x8A, + 0x84, 0x7F, 0x7C, 0x7A, 0x7A, 0x7E, 0x7F, 0x80, 0x7E, 0x7F, 0x80, 0x87, 0x93, 0x7D, 0x67, 0x6F, + 0x70, 0x58, 0x47, 0x62, 0x7F, 0x7D, 0x85, 0xA4, 0xB6, 0xAA, 0x98, 0x8B, 0x84, 0x7C, 0x67, 0x57, + 0x4F, 0x5B, 0x6E, 0x72, 0x7E, 0x90, 0xA0, 0xA0, 0x93, 0x8F, 0x8A, 0x80, 0x78, 0x75, 0x71, 0x72, + 0x72, 0x69, 0x65, 0x66, 0x64, 0x5B, 0x57, 0x61, 0x6C, 0x71, 0x76, 0x7D, 0x84, 0x8B, 0x8F, 0x8D, + 0x87, 0x87, 0x84, 0x79, 0x74, 0x80, 0x8B, 0x95, 0xA1, 0xAD, 0xB4, 0xB0, 0xA9, 0x9C, 0x89, 0x7D, + 0x86, 0x8A, 0x70, 0x62, 0x72, 0x7D, 0x6B, 0x60, 0x7D, 0x93, 0x93, 0x9A, 0xA7, 0xA9, 0x9C, 0x8C, + 0x80, 0x7C, 0x75, 0x65, 0x5F, 0x65, 0x77, 0x85, 0x8F, 0x9A, 0xA1, 0xAA, 0xA5, 0x92, 0x85, 0x80, + 0x76, 0x61, 0x61, 0x6D, 0x70, 0x72, 0x70, 0x6B, 0x67, 0x67, 0x5E, 0x54, 0x57, 0x62, 0x6E, 0x77, + 0x84, 0x92, 0x99, 0x9C, 0x9C, 0x97, 0x95, 0x93, 0x91, 0x8F, 0x91, 0x94, 0x92, 0x94, 0x96, 0x91, + 0x90, 0x90, 0x8C, 0x85, 0x7A, 0x76, 0x85, 0x90, 0x7C, 0x6B, 0x72, 0x78, 0x66, 0x51, 0x60, 0x7A, + 0x7A, 0x7B, 0x8F, 0xA0, 0x99, 0x8A, 0x82, 0x81, 0x78, 0x66, 0x59, 0x53, 0x5D, 0x69, 0x6E, 0x7A, + 0x87, 0x94, 0x99, 0x92, 0x8E, 0x8A, 0x81, 0x77, 0x70, 0x6A, 0x69, 0x67, 0x63, 0x63, 0x67, 0x6B, + 0x68, 0x5F, 0x5F, 0x67, 0x6F, 0x79, 0x80, 0x87, 0x8E, 0x96, 0x97, 0x8C, 0x89, 0x88, 0x82, 0x80, + 0x82, 0x89, 0x90, 0x95, 0x9C, 0xA2, 0xA4, 0xA1, 0x9B, 0x93, 0x8D, 0x84, 0x6D, 0x5F, 0x6C, 0x84, + 0x7E, 0x66, 0x69, 0x78, 0x6D, 0x4D, 0x52, 0x72, 0x76, 0x77, 0x89, 0x9E, 0x9F, 0x94, 0x8A, 0x85, + 0x7F, 0x6F, 0x5F, 0x51, 0x4E, 0x5D, 0x6D, 0x7D, 0x8E, 0x9D, 0xA4, 0x9F, 0x94, 0x90, 0x86, 0x70, + 0x62, 0x64, 0x66, 0x69, 0x6C, 0x70, 0x77, 0x7E, 0x7F, 0x77, 0x6F, 0x71, 0x76, 0x7C, 0x86, 0x8B, + 0x8D, 0x94, 0x9A, 0x9C, 0x9D, 0x9A, 0x98, 0x95, 0x8B, 0x8B, 0x98, 0xA1, 0xA1, 0x9E, 0xA2, 0xA0, + 0x90, 0x84, 0x7E, 0x73, 0x69, 0x68, 0x66, 0x5D, 0x60, 0x77, 0x8B, 0x86, 0x79, 0x7D, 0x88, 0x7D, + 0x65, 0x5F, 0x69, 0x6D, 0x70, 0x7E, 0x8C, 0x97, 0x9B, 0x94, 0x8F, 0x8D, 0x86, 0x73, 0x64, 0x6A, + 0x78, 0x81, 0x8D, 0x9B, 0x9E, 0x9D, 0x98, 0x8A, 0x7E, 0x72, 0x69, 0x66, 0x6A, 0x77, 0x80, 0x8B, + 0x8F, 0x8B, 0x8C, 0x88, 0x7F, 0x75, 0x72, 0x75, 0x79, 0x7E, 0x89, 0x9A, 0xA4, 0xA3, 0x9A, 0x91, + 0x8A, 0x7C, 0x6D, 0x6B, 0x6E, 0x74, 0x7E, 0x8B, 0x94, 0x97, 0x95, 0x86, 0x7A, 0x72, 0x68, 0x5E, + 0x59, 0x5E, 0x63, 0x67, 0x6E, 0x76, 0x7B, 0x85, 0x8D, 0x7D, 0x68, 0x60, 0x5C, 0x4E, 0x46, 0x5F, + 0x7C, 0x8A, 0x94, 0x9B, 0x9D, 0x92, 0x80, 0x78, 0x6E, 0x5B, 0x52, 0x57, 0x64, 0x79, 0x89, 0x94, + 0x9B, 0x99, 0x9A, 0x8E, 0x7B, 0x70, 0x69, 0x64, 0x67, 0x78, 0x81, 0x87, 0x90, 0x95, 0x92, 0x85, + 0x82, 0x77, 0x64, 0x5D, 0x5E, 0x66, 0x71, 0x80, 0x93, 0xA2, 0xA6, 0xA7, 0xA6, 0x9B, 0x8B, 0x79, + 0x6D, 0x6B, 0x6F, 0x80, 0x8F, 0x94, 0x9A, 0x9E, 0x98, 0x8B, 0x7C, 0x6B, 0x5D, 0x52, 0x4D, 0x57, + 0x6A, 0x74, 0x7B, 0x8A, 0x8F, 0x88, 0x89, 0x95, 0x96, 0x7B, 0x70, 0x7C, 0x82, 0x76, 0x74, 0x8A, + 0x9F, 0xA7, 0xAA, 0xAE, 0xAC, 0x9F, 0x93, 0x88, 0x80, 0x76, 0x72, 0x72, 0x70, 0x79, 0x89, 0x90, + 0x91, 0x91, 0x91, 0x8B, 0x81, 0x7C, 0x7D, 0x7F, 0x80, 0x85, 0x8D, 0x90, 0x8C, 0x84, 0x81, 0x7D, + 0x75, 0x6C, 0x67, 0x67, 0x68, 0x6E, 0x76, 0x7F, 0x8C, 0x91, 0x91, 0x8E, 0x88, 0x83, 0x7D, 0x7A, + 0x78, 0x78, 0x7C, 0x80, 0x83, 0x85, 0x86, 0x87, 0x81, 0x76, 0x72, 0x72, 0x6E, 0x66, 0x64, 0x6A, + 0x6C, 0x67, 0x6A, 0x6F, 0x6F, 0x6C, 0x6E, 0x72, 0x75, 0x7E, 0x87, 0x88, 0x83, 0x80, 0x86, 0x86, + 0x79, 0x76, 0x7F, 0x85, 0x89, 0x8F, 0x92, 0x90, 0x87, 0x7E, 0x79, 0x72, 0x6E, 0x6B, 0x65, 0x65, + 0x6B, 0x73, 0x7A, 0x80, 0x87, 0x8F, 0x90, 0x8E, 0x8F, 0x95, 0x93, 0x87, 0x7F, 0x80, 0x80, 0x78, + 0x73, 0x73, 0x76, 0x74, 0x6F, 0x6E, 0x71, 0x75, 0x75, 0x76, 0x7E, 0x83, 0x84, 0x85, 0x86, 0x8B, + 0x8D, 0x89, 0x86, 0x80, 0x7C, 0x80, 0x83, 0x87, 0x8B, 0x89, 0x83, 0x81, 0x7E, 0x75, 0x6A, 0x64, + 0x65, 0x66, 0x66, 0x6A, 0x70, 0x74, 0x75, 0x74, 0x74, 0x78, 0x78, 0x77, 0x7E, 0x88, 0x92, 0x91, + 0x8D, 0x93, 0x96, 0x8F, 0x86, 0x8A, 0x8D, 0x89, 0x89, 0x8E, 0x94, 0x93, 0x91, 0x8A, 0x81, 0x7B, + 0x73, 0x6D, 0x69, 0x70, 0x78, 0x7E, 0x84, 0x8A, 0x93, 0x98, 0x99, 0x96, 0x90, 0x8E, 0x88, 0x81, + 0x7B, 0x78, 0x76, 0x70, 0x6E, 0x71, 0x74, 0x74, 0x72, 0x76, 0x78, 0x79, 0x7B, 0x7F, 0x87, 0x8B, + 0x8E, 0x8F, 0x8F, 0x8D, 0x8A, 0x87, 0x7F, 0x79, 0x7A, 0x7A, 0x7A, 0x7A, 0x81, 0x88, 0x8B, 0x89, + 0x8A, 0x88, 0x81, 0x7E, 0x7C, 0x78, 0x74, 0x74, 0x79, 0x78, 0x7C, 0x82, 0x82, 0x81, 0x7F, 0x7C, + 0x7D, 0x7C, 0x81, 0x8B, 0x8C, 0x8A, 0x8B, 0x8F, 0x8A, 0x80, 0x80, 0x85, 0x84, 0x85, 0x8D, 0x93, + 0x94, 0x91, 0x8E, 0x85, 0x80, 0x7D, 0x74, 0x6E, 0x69, 0x6B, 0x6F, 0x72, 0x75, 0x79, 0x7A, 0x7A, + 0x79, 0x75, 0x74, 0x72, 0x71, 0x6F, 0x72, 0x71, 0x6B, 0x69, 0x6B, 0x6B, 0x66, 0x69, 0x6E, 0x70, + 0x6F, 0x72, 0x7A, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, 0x7E, 0x80, 0x81, 0x81, 0x81, 0x82, + 0x83, 0x85, 0x85, 0x82, 0x80, 0x80, 0x7D, 0x78, 0x77, 0x79, 0x78, 0x73, 0x74, 0x78, 0x7A, 0x7C, + 0x80, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x81, 0x80, 0x86, 0x8A, 0x83, 0x80, 0x82, 0x82, 0x7A, + 0x75, 0x7C, 0x7F, 0x7E, 0x86, 0x8F, 0x92, 0x8D, 0x87, 0x7F, 0x78, 0x71, 0x6B, 0x67, 0x64, 0x6D, + 0x76, 0x7E, 0x85, 0x8C, 0x93, 0x91, 0x8E, 0x8B, 0x8A, 0x87, 0x83, 0x82, 0x85, 0x86, 0x82, 0x7F, + 0x7B, 0x7B, 0x78, 0x72, 0x72, 0x77, 0x7C, 0x80, 0x8A, 0x92, 0x9A, 0x9C, 0x9B, 0x9F, 0xA0, 0x9E, + 0x9D, 0x9C, 0x99, 0x94, 0x8E, 0x8C, 0x89, 0x84, 0x82, 0x7E, 0x7A, 0x77, 0x73, 0x71, 0x73, 0x72, + 0x73, 0x72, 0x70, 0x70, 0x6F, 0x6B, 0x6A, 0x6C, 0x6E, 0x72, 0x79, 0x81, 0x85, 0x86, 0x8A, 0x8D, + 0x8D, 0x8C, 0x8E, 0x8B, 0x83, 0x7E, 0x7D, 0x7A, 0x76, 0x79, 0x81, 0x87, 0x88, 0x8A, 0x8B, 0x88, + 0x82, 0x7B, 0x75, 0x71, 0x6E, 0x6B, 0x6C, 0x6C, 0x70, 0x74, 0x75, 0x76, 0x77, 0x79, 0x78, 0x77, + 0x77, 0x79, 0x7B, 0x7C, 0x7E, 0x80, 0x81, 0x80, 0x7C, 0x76, 0x71, 0x6D, 0x6A, 0x6A, 0x6C, 0x6F, + 0x72, 0x76, 0x7D, 0x80, 0x80, 0x80, 0x82, 0x84, 0x84, 0x87, 0x8B, 0x8C, 0x8E, 0x8F, 0x8C, 0x89, + 0x86, 0x82, 0x7F, 0x7D, 0x7A, 0x78, 0x75, 0x72, 0x72, 0x70, 0x6F, 0x6F, 0x70, 0x72, 0x72, 0x74, + 0x78, 0x7B, 0x7D, 0x82, 0x85, 0x86, 0x89, 0x8A, 0x8A, 0x88, 0x8A, 0x8C, 0x8C, 0x8C, 0x8B, 0x8E, + 0x8D, 0x88, 0x84, 0x82, 0x81, 0x7E, 0x7D, 0x7E, 0x80, 0x7E, 0x7C, 0x7D, 0x7E, 0x7B, 0x78, 0x75, + 0x70, 0x6E, 0x6C, 0x6D, 0x70, 0x71, 0x73, 0x77, 0x7A, 0x79, 0x7C, 0x7E, 0x7E, 0x7F, 0x7F, 0x80, + 0x80, 0x81, 0x82, 0x82, 0x81, 0x81, 0x83, 0x86, 0x86, 0x86, 0x87, 0x86, 0x85, 0x85, 0x87, 0x87, + 0x88, 0x8A, 0x8B, 0x8D, 0x8C, 0x8B, 0x8B, 0x8D, 0x8D, 0x8B, 0x8B, 0x8A, 0x8A, 0x86, 0x82, 0x82, + 0x82, 0x81, 0x7F, 0x7D, 0x7C, 0x7B, 0x7A, 0x78, 0x76, 0x76, 0x75, 0x73, 0x74, 0x74, 0x74, 0x76, + 0x7B, 0x80, 0x82, 0x88, 0x8A, 0x8D, 0x8F, 0x8E, 0x8E, 0x8D, 0x8B, 0x86, 0x7F, 0x7E, 0x7F, 0x7F, + 0x7F, 0x81, 0x82, 0x80, 0x7F, 0x7D, 0x7C, 0x79, 0x75, 0x75, 0x76, 0x75, 0x75, 0x78, 0x7A, 0x7C, + 0x80, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7E, 0x7E, 0x7D, 0x7B, 0x7A, 0x7D, + 0x7B, 0x79, 0x79, 0x7A, 0x7B, 0x7B, 0x7B, 0x7A, 0x7B, 0x7E, 0x7D, 0x7C, 0x7C, 0x7B, 0x79, 0x76, + 0x76, 0x75, 0x76, 0x78, 0x79, 0x79, 0x7A, 0x7D, 0x7D, 0x7D, 0x7B, 0x7A, 0x7B, 0x76, 0x73, 0x73, + 0x71, 0x70, 0x71, 0x71, 0x72, 0x76, 0x77, 0x77, 0x78, 0x79, 0x7B, 0x7D, 0x80, 0x82, 0x85, 0x87, + 0x86, 0x86, 0x85, 0x83, 0x83, 0x83, 0x84, 0x84, 0x86, 0x86, 0x83, 0x83, 0x85, 0x86, 0x86, 0x84, + 0x81, 0x7E, 0x79, 0x75, 0x71, 0x6E, 0x6C, 0x6A, 0x69, 0x6B, 0x6E, 0x72, 0x76, 0x78, 0x7D, 0x80, + 0x80, 0x81, 0x83, 0x85, 0x85, 0x86, 0x8A, 0x8D, 0x8F, 0x90, 0x8E, 0x8C, 0x8D, 0x8A, 0x89, 0x89, + 0x89, 0x8A, 0x89, 0x89, 0x8B, 0x8B, 0x8C, 0x8E, 0x8F, 0x91, 0x92, 0x91, 0x90, 0x8F, 0x8C, 0x8B, + 0x8A, 0x88, 0x87, 0x84, 0x84, 0x84, 0x84, 0x82, 0x81, 0x80, 0x7E, 0x7D, 0x7B, 0x79, 0x77, 0x75, + 0x74, 0x74, 0x77, 0x79, 0x7A, 0x7A, 0x7D, 0x7E, 0x7F, 0x7F, 0x80, 0x83, 0x83, 0x81, 0x80, 0x81, + 0x7F, 0x7D, 0x7B, 0x7B, 0x79, 0x76, 0x77, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x78, 0x78, + 0x78, 0x79, 0x78, 0x77, 0x75, 0x75, 0x75, 0x77, 0x7A, 0x7C, 0x80, 0x81, 0x82, 0x83, 0x84, 0x83, + 0x82, 0x82, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0x7B, 0x7B, 0x79, 0x79, 0x79, 0x76, 0x74, 0x73, + 0x71, 0x71, 0x72, 0x74, 0x77, 0x7A, 0x7A, 0x7B, 0x7E, 0x7F, 0x80, 0x82, 0x83, 0x81, 0x80, 0x7F, + 0x7E, 0x7C, 0x7B, 0x7C, 0x7B, 0x7C, 0x7B, 0x7A, 0x79, 0x76, 0x76, 0x76, 0x78, 0x7A, 0x7C, 0x7D, + 0x7D, 0x82, 0x84, 0x86, 0x88, 0x8C, 0x91, 0x8F, 0x8D, 0x90, 0x90, 0x8D, 0x8D, 0x91, 0x92, 0x8F, + 0x8B, 0x89, 0x86, 0x82, 0x7F, 0x7B, 0x77, 0x74, 0x6E, 0x6B, 0x6C, 0x6D, 0x6F, 0x70, 0x72, 0x76, + 0x79, 0x7A, 0x7C, 0x7F, 0x80, 0x80, 0x80, 0x83, 0x87, 0x89, 0x89, 0x8A, 0x89, 0x89, 0x87, 0x84, + 0x83, 0x7F, 0x7E, 0x7C, 0x7B, 0x7D, 0x7E, 0x80, 0x82, 0x86, 0x88, 0x88, 0x8B, 0x8C, 0x8B, 0x8A, + 0x8B, 0x8C, 0x8A, 0x88, 0x87, 0x87, 0x86, 0x83, 0x81, 0x7E, 0x7D, 0x7D, 0x7A, 0x77, 0x76, 0x75, + 0x71, 0x70, 0x71, 0x71, 0x73, 0x74, 0x75, 0x78, 0x7B, 0x7E, 0x80, 0x81, 0x82, 0x83, 0x85, 0x87, + 0x88, 0x8A, 0x8B, 0x8A, 0x88, 0x89, 0x88, 0x83, 0x81, 0x81, 0x7F, 0x7B, 0x7C, 0x7F, 0x80, 0x80, + 0x7F, 0x7E, 0x7B, 0x79, 0x75, 0x72, 0x6F, 0x6E, 0x71, 0x72, 0x73, 0x77, 0x7C, 0x7F, 0x81, 0x83, + 0x85, 0x87, 0x86, 0x86, 0x89, 0x89, 0x87, 0x87, 0x89, 0x89, 0x89, 0x87, 0x86, 0x84, 0x80, 0x7D, + 0x7A, 0x7B, 0x7B, 0x79, 0x78, 0x78, 0x78, 0x77, 0x78, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x7E, 0x7D, + 0x7C, 0x7B, 0x7A, 0x78, 0x75, 0x72, 0x6E, 0x6D, 0x6B, 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6D, 0x6E, + 0x6E, 0x70, 0x72, 0x74, 0x77, 0x7A, 0x7D, 0x80, 0x81, 0x84, 0x87, 0x89, 0x8B, 0x8E, 0x91, 0x8F, + 0x8B, 0x8A, 0x89, 0x86, 0x82, 0x83, 0x85, 0x82, 0x80, 0x81, 0x81, 0x7F, 0x7C, 0x7A, 0x79, 0x76, + 0x73, 0x71, 0x70, 0x70, 0x71, 0x70, 0x71, 0x75, 0x75, 0x74, 0x74, 0x76, 0x79, 0x7D, 0x7F, 0x83, + 0x8A, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x8E, 0x8B, 0x89, 0x85, 0x83, 0x81, 0x83, 0x84, 0x84, 0x85, + 0x85, 0x86, 0x85, 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x8B, 0x8F, 0x90, 0x92, 0x90, 0x8E, 0x8C, + 0x8B, 0x88, 0x85, 0x83, 0x81, 0x80, 0x7D, 0x7C, 0x7A, 0x7A, 0x79, 0x77, 0x77, 0x77, 0x7B, 0x7D, + 0x7F, 0x81, 0x82, 0x85, 0x87, 0x88, 0x89, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x8A, 0x88, 0x87, 0x87, + 0x85, 0x80, 0x7A, 0x7A, 0x7A, 0x78, 0x78, 0x78, 0x76, 0x73, 0x70, 0x6D, 0x6B, 0x69, 0x67, 0x67, + 0x67, 0x6B, 0x6C, 0x6D, 0x70, 0x71, 0x72, 0x73, 0x76, 0x7A, 0x7D, 0x7F, 0x7F, 0x80, 0x83, 0x87, + 0x8A, 0x8B, 0x8B, 0x8C, 0x8A, 0x88, 0x85, 0x84, 0x83, 0x81, 0x7F, 0x7E, 0x7B, 0x7A, 0x7A, 0x78, + 0x78, 0x78, 0x7A, 0x78, 0x77, 0x78, 0x78, 0x7A, 0x7A, 0x7A, 0x7A, 0x7B, 0x7A, 0x7A, 0x79, 0x76, + 0x74, 0x73, 0x72, 0x71, 0x70, 0x70, 0x70, 0x6E, 0x6D, 0x6F, 0x73, 0x77, 0x7A, 0x7B, 0x7D, 0x80, + 0x82, 0x84, 0x88, 0x8A, 0x8C, 0x8D, 0x8E, 0x8F, 0x91, 0x92, 0x92, 0x93, 0x92, 0x8F, 0x8B, 0x88, + 0x86, 0x85, 0x85, 0x82, 0x81, 0x81, 0x7F, 0x7C, 0x7B, 0x79, 0x76, 0x73, 0x71, 0x70, 0x70, 0x74, + 0x76, 0x77, 0x77, 0x7A, 0x7F, 0x80, 0x81, 0x83, 0x87, 0x88, 0x8A, 0x8A, 0x8B, 0x8D, 0x8B, 0x89, + 0x88, 0x87, 0x87, 0x86, 0x86, 0x84, 0x81, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, + 0x7F, 0x81, 0x83, 0x85, 0x86, 0x85, 0x85, 0x86, 0x84, 0x83, 0x83, 0x82, 0x81, 0x80, 0x7C, 0x79, + 0x77, 0x73, 0x71, 0x70, 0x6E, 0x6F, 0x70, 0x72, 0x73, 0x74, 0x78, 0x7E, 0x82, 0x85, 0x88, 0x8A, + 0x8A, 0x8A, 0x8B, 0x8E, 0x8F, 0x90, 0x91, 0x90, 0x8C, 0x8B, 0x8B, 0x88, 0x85, 0x83, 0x81, 0x7B, + 0x78, 0x75, 0x74, 0x76, 0x74, 0x74, 0x73, 0x73, 0x72, 0x6F, 0x6E, 0x6F, 0x6E, 0x6E, 0x72, 0x73, + 0x77, 0x7C, 0x7C, 0x7E, 0x7F, 0x81, 0x84, 0x85, 0x87, 0x8B, 0x8C, 0x8C, 0x8E, 0x8E, 0x8E, 0x8F, + 0x8E, 0x8A, 0x84, 0x82, 0x7F, 0x7D, 0x7A, 0x7B, 0x7D, 0x7A, 0x7A, 0x77, 0x76, 0x77, 0x76, 0x74, + 0x73, 0x74, 0x74, 0x78, 0x7A, 0x7C, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, 0x7B, 0x7A, 0x79, 0x76, 0x73, + 0x72, 0x6F, 0x6D, 0x6C, 0x69, 0x6A, 0x6C, 0x6C, 0x6D, 0x6E, 0x71, 0x73, 0x77, 0x7B, 0x7E, 0x82, + 0x84, 0x84, 0x85, 0x87, 0x8A, 0x8C, 0x8F, 0x91, 0x91, 0x92, 0x91, 0x8F, 0x8C, 0x8C, 0x8B, 0x88, + 0x86, 0x80, 0x7E, 0x7F, 0x7B, 0x79, 0x78, 0x74, 0x71, 0x70, 0x71, 0x6E, 0x6F, 0x74, 0x74, 0x76, + 0x7A, 0x7E, 0x80, 0x80, 0x7F, 0x7E, 0x7F, 0x80, 0x80, 0x81, 0x84, 0x88, 0x8A, 0x8B, 0x8D, 0x8F, + 0x91, 0x93, 0x94, 0x94, 0x92, 0x91, 0x93, 0x91, 0x8F, 0x8E, 0x8D, 0x8C, 0x8A, 0x86, 0x82, 0x80, + 0x80, 0x7F, 0x7F, 0x7E, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7E, 0x7F, 0x81, 0x81, 0x82, 0x84, 0x86, + 0x85, 0x84, 0x84, 0x86, 0x87, 0x85, 0x83, 0x81, 0x80, 0x7F, 0x7D, 0x7A, 0x7A, 0x7C, 0x7B, 0x7A, + 0x7A, 0x79, 0x7A, 0x7A, 0x7A, 0x7A, 0x7B, 0x7E, 0x7F, 0x7F, 0x81, 0x80, 0x80, 0x80, 0x7E, 0x80, + 0x82, 0x81, 0x7F, 0x7E, 0x7C, 0x7D, 0x7D, 0x7E, 0x7E, 0x7B, 0x79, 0x76, 0x74, 0x73, 0x71, 0x6E, + 0x6F, 0x6F, 0x6F, 0x71, 0x71, 0x75, 0x75, 0x75, 0x78, 0x7A, 0x7B, 0x7A, 0x7C, 0x7F, 0x80, 0x7E, + 0x7E, 0x7D, 0x7F, 0x81, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x82, 0x82, 0x82, 0x81, 0x7F, 0x7F, 0x7D, + 0x7A, 0x7A, 0x7B, 0x78, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x76, 0x76, + 0x77, 0x76, 0x74, 0x74, 0x74, 0x76, 0x76, 0x77, 0x79, 0x7C, 0x7E, 0x80, 0x80, 0x81, 0x84, 0x87, + 0x8B, 0x8D, 0x8F, 0x90, 0x8F, 0x8E, 0x8B, 0x8B, 0x8B, 0x8A, 0x88, 0x85, 0x84, 0x83, 0x83, 0x82, + 0x81, 0x81, 0x83, 0x83, 0x81, 0x80, 0x7F, 0x81, 0x83, 0x84, 0x86, 0x88, 0x87, 0x88, 0x88, 0x86, + 0x88, 0x8A, 0x8A, 0x88, 0x85, 0x82, 0x82, 0x81, 0x7F, 0x7E, 0x7E, 0x7E, 0x7B, 0x7A, 0x7A, 0x7A, + 0x79, 0x79, 0x7C, 0x7D, 0x7E, 0x7E, 0x7E, 0x7C, 0x7C, 0x7C, 0x7E, 0x80, 0x80, 0x81, 0x82, 0x84, + 0x83, 0x83, 0x84, 0x85, 0x87, 0x85, 0x84, 0x84, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x81, 0x7F, + 0x7F, 0x7E, 0x7D, 0x7C, 0x7A, 0x79, 0x79, 0x76, 0x77, 0x77, 0x76, 0x75, 0x76, 0x75, 0x75, 0x77, + 0x78, 0x7A, 0x7B, 0x7B, 0x7B, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7D, 0x7D, + 0x7D, 0x7D, 0x7D, 0x7D, 0x7E, 0x7F, 0x7F, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x84, 0x84, 0x82, + 0x81, 0x81, 0x81, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x7E, 0x7F, + 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x81, 0x80, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7C, + 0x7B, 0x7A, 0x78, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x75, 0x77, 0x78, 0x7A, 0x7C, + 0x7C, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, + 0x7F, 0x80, 0x81, 0x82, 0x82, 0x81, 0x84, 0x85, 0x85, 0x84, 0x83, 0x84, 0x84, 0x83, 0x82, 0x81, + 0x81, 0x81, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x81, + 0x83, 0x83, 0x83, 0x84, 0x85, 0x85, 0x85, 0x84, 0x83, 0x82, 0x81, 0x81, 0x7F, 0x80, 0x81, 0x82, + 0x82, 0x82, 0x84, 0x85, 0x86, 0x86, 0x88, 0x8A, 0x89, 0x88, 0x88, 0x87, 0x87, 0x85, 0x85, 0x84, + 0x83, 0x81, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x80, 0x80, + 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7D, 0x7B, + 0x7B, 0x7B, 0x79, 0x77, 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78, 0x77, 0x76, 0x77, 0x78, + 0x78, 0x77, 0x78, 0x7A, 0x7B, 0x7B, 0x7B, 0x7C, 0x7C, 0x7C, 0x7C, 0x7E, 0x7E, 0x7E, 0x80, 0x80, + 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7E, 0x7E, 0x7D, 0x7E, 0x7C, 0x7B, 0x79, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x7B, 0x7B, 0x7C, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, + 0x80, 0x82, 0x84, 0x85, 0x86, 0x86, 0x85, 0x84, 0x83, 0x83, 0x84, 0x82, 0x81, 0x83, 0x83, 0x81, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x82, 0x81, 0x81, 0x83, 0x83, 0x83, 0x83, + 0x83, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81, 0x81, 0x80, 0x7F, 0x80, 0x80, 0x81, 0x80, + 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x7F, + 0x80, 0x81, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x81, 0x81, 0x81, 0x82, 0x81, 0x81, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, 0x7B, 0x7A, 0x7B, 0x7B, + 0x7B, 0x7A, 0x7B, 0x7A, 0x7C, 0x7C, 0x7B, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7E, 0x7D, 0x7D, 0x7C, 0x7B, 0x7C, 0x7B, 0x7C, 0x7E, 0x7E, 0x7D, 0x7F, 0x80, 0x80, 0x80, + 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, + 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7E, 0x7D, 0x7B, 0x7B, 0x7A, 0x7B, 0x7C, 0x7B, 0x7A, 0x7A, + 0x7B, 0x7B, 0x7C, 0x7C, 0x7B, 0x7C, 0x7D, 0x7E, 0x7D, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83, 0x81, 0x80, 0x80, + 0x81, 0x83, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7D, 0x7F, 0x7F, + 0x7F, 0x7F, 0x80, 0x81, 0x81, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x85, 0x84, 0x81, 0x82, 0x83, + 0x81, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84, 0x85, + 0x84, 0x82, 0x82, 0x81, 0x81, 0x81, 0x82, 0x82, 0x81, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x81, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, + 0x80, 0x7F, 0x7E, 0x7C, 0x7B, 0x7B, 0x7A, 0x7B, 0x7B, 0x7B, 0x7B, 0x7A, 0x7A, 0x7A, 0x7B, 0x7B, + 0x7B, 0x7D, 0x7D, 0x7B, 0x7A, 0x7A, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, + 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, + 0x7E, 0x7E, 0x7D, 0x7D, 0x7D, 0x7E, 0x7C, 0x7A, 0x7B, 0x7B, 0x7C, 0x7E, 0x7C, 0x7C, 0x7D, 0x7E, + 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, + 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x84, 0x83, 0x83, 0x83, 0x81, 0x80, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, + 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x84, 0x83, 0x83, 0x83, 0x81, 0x81, 0x82, 0x81, 0x80, + 0x7F, 0x7F, 0x7F, 0x7E, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x80, 0x7E, 0x7D, 0x7E, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, + 0x7E, 0x7E, 0x7D, 0x7C, 0x7C, 0x7C, 0x7C, 0x7B, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, + 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7E, 0x7C, 0x7C, 0x7E, 0x7E, 0x7D, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, + 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, + 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7D, 0x7D, 0x7D, 0x7E, 0x7E, + 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, + 0x7E, 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x80, 0x81, 0x81, 0x81, 0x83, 0x83, 0x83, 0x84, 0x81, 0x81, 0x82, 0x81, 0x81, 0x81, 0x80, 0x80, + 0x81, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x81, 0x81, 0x81, + 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x82, 0x82, 0x81, + 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x81, 0x7F, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7E, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7B, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D, 0x7D, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x82, 0x82, 0x82, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x83, 0x84, 0x83, 0x82, 0x81, 0x82, 0x83, 0x83, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x80, 0x7F, 0x7E, 0x7F, + 0x7F, 0x7F, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7D, 0x7E, 0x7D, 0x7E, 0x7E, 0x7E, 0x7D, 0x7D, 0x7D, + 0x7D, 0x7E, 0x7E, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, + 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, + 0x80, 0x81, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, + 0x80, 0x81, 0x80, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, + 0x81, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, + 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, + 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D, 0x7E, 0x7D, 0x7C, 0x7B, 0x7C, 0x7B, 0x7C, + 0x7D, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x7E, 0x7E, 0x7F, 0x7E, 0x7F, 0x7E, 0x7F, 0x80, 0x80, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, + 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x81, 0x7F, 0x80, 0x81, 0x81, + 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x82, 0x81, 0x82, 0x81, 0x82, 0x81, 0x81, 0x80, 0x81, + 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, + 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, + 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, + 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, + 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x81, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, + 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, + 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, + 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, + 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, + 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, + 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, + 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, + 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, + 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, + 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, + 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, + 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, + 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, + 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, + 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, + 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, + 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x7F, + 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, + 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, + 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, + 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x7F, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x7F, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x7F, 0x7F, + 0x80, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, + 0x7F, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +}; + +#ifdef ROMFS_DIRENTRY_HEAD + static const ROMFS_DIRENTRY allwrong_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "allwrong.wav", 29434, allwrong }; + #undef ROMFS_DIRENTRY_HEAD + #define ROMFS_DIRENTRY_HEAD &allwrong_dir +#endif diff --git a/demos/modules/gaudio/play-wave/romfs_files.h b/demos/modules/gaudio/play-wave/romfs_files.h new file mode 100644 index 00000000..db3e5491 --- /dev/null +++ b/demos/modules/gaudio/play-wave/romfs_files.h @@ -0,0 +1,7 @@ +/** + * This file contains the list of files for the ROMFS. + * + * The files have been converted using... + * file2c -dbcs infile outfile + */ +#include "romfs_allwrong.h" diff --git a/drivers/audio/Win32/driver.mk b/drivers/audio/Win32/driver.mk deleted file mode 100644 index 6f4ef084..00000000 --- a/drivers/audio/Win32/driver.mk +++ /dev/null @@ -1,6 +0,0 @@ -# List the required driver. -GFXSRC += $(GFXLIB)/drivers/audio/Win32/gaudin_lld.c \ - $(GFXLIB)/drivers/audio/Win32/gaudout_lld.c - -# Required include directories -GFXINC += $(GFXLIB)/drivers/audio/Win32 diff --git a/drivers/audio/Win32/gaudin_lld.c b/drivers/audio/Win32/gaudin_lld.c deleted file mode 100644 index 2c8431cf..00000000 --- a/drivers/audio/Win32/gaudin_lld.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file drivers/audio/Win32/gaudin_lld.c - * @brief GAUDIN - Driver file for Win32. - */ - -#include "gfx.h" - -#if GFX_USE_GAUDIN - -/* Include the driver defines */ -#include "src/gaudin/driver.h" - -#undef Red -#undef Green -#undef Blue -#define WIN32_LEAN_AND_MEAN -#include -#include -#include - -static HWAVEIN ah; -static volatile int nQueuedBuffers; -static bool_t isClosing; -static WAVEHDR *pWaveHdrs; -static HANDLE waveThread; -static DWORD threadID; - -/* -static void PrintWaveErrorMsg(DWORD err, TCHAR * str) -{ - #define BUFFERSIZE 128 - char buffer[BUFFERSIZE]; - - fprintf(stderr, "GAUDIN: ERROR 0x%08X: %s\r\n", err, str); - if (mciGetErrorString(err, &buffer[0], sizeof(buffer))) - fprintf(stderr, "%s\r\n", &buffer[0]); - else - fprintf(stderr, "0x%08X returned!\r\n", err); -} -*/ - -/**************************** waveProc() ******************************* - * We don't use CALLBACK_FUNCTION because it is restricted to calling only - * a few particular Windows functions, namely some of the time functions, - * and a few of the Low Level MIDI API. If you violate this rule, your app can - * hang inside of the callback). One of the Windows API that a callback can't - * call is waveInAddBuffer() which is what we need to use whenever we receive a - * MM_WIM_DATA. My callback would need to defer that job to another thread - * anyway, so instead just use CALLBACK_THREAD here instead. - *************************************************************************/ - -static DWORD WINAPI waveProc(LPVOID arg) { - MSG msg; - (void) arg; - - while (GetMessage(&msg, 0, 0, 0)) { - switch (msg.message) { - case MM_WIM_DATA: - GAUDIN_ISR_CompleteI((audin_sample_t *)((WAVEHDR *)msg.lParam)->lpData, ((WAVEHDR *)msg.lParam)->dwBytesRecorded/sizeof(audin_sample_t)); - - /* Are we closing? */ - if (isClosing) { - /* Yes. We aren't recording, so another WAVEHDR has been returned to us after recording has stopped. - * When we get all of them back, things can be cleaned up - */ - nQueuedBuffers--; - waveInUnprepareHeader(ah, (WAVEHDR *)msg.lParam, sizeof(WAVEHDR)); - } else { - /* No. Now we need to requeue this buffer so the driver can use it for another block of audio - * data. NOTE: We shouldn't need to waveInPrepareHeader() a WAVEHDR that has already been prepared once. - * Note: We are assuming here that both the application can still access the buffer while - * it is on the queue. - */ - waveInAddBuffer(ah, (WAVEHDR *)msg.lParam, sizeof(WAVEHDR)); - } - - break; - } - } - return 0; -} - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -void gaudin_lld_deinit(void) { - if (ah) { - isClosing = TRUE; - waveInReset(ah); - while(nQueuedBuffers) Sleep(1); - waveInClose(ah); - ah = 0; - if (pWaveHdrs) gfxFree(pWaveHdrs); - pWaveHdrs = 0; - isClosing = FALSE; - } -} - -void gaudin_lld_init(const gaudin_params *paud) { - WAVEFORMATEX wfx; - size_t spaceleft; - audin_sample_t *p; - WAVEHDR *phdr; - size_t nBuffers; - size_t sz; - - if (!waveThread) { - if (!(waveThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)waveProc, 0, 0, &threadID))) { - fprintf(stderr, "GAUDIN/GAUDOUT: Can't create WAVE recording thread\n"); - return; - } - CloseHandle(waveThread); - } - - gaudin_lld_deinit(); - - wfx.wFormatTag = WAVE_FORMAT_PCM; - wfx.nChannels = paud->channel == GAUDIN_STEREO ? 2 : 1; - wfx.nSamplesPerSec = paud->frequency; - wfx.nBlockAlign = wfx.nChannels * sizeof(audin_sample_t); - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - wfx.wBitsPerSample = sizeof(audin_sample_t) * 8; - wfx.cbSize = 0; - - if (waveInOpen(&ah, WAVE_MAPPER, &wfx, (DWORD_PTR)threadID, (DWORD_PTR)paud, CALLBACK_THREAD)) { - fprintf(stderr, "GAUDIN: Can't open WAVE recording device\n"); - return; - } - - /* We need to allocate a wave header for each buffer */ - nBuffers = (paud->bufcount + paud->samplesPerEvent - 1) / paud->samplesPerEvent; - if (!(pWaveHdrs = gfxAlloc(nBuffers * sizeof(WAVEHDR)))) { - fprintf(stderr, "GAUDIN: Buffer header allocation failed\n"); - return; - } - - /* Prepare each buffer and send to the wavein device */ - spaceleft = paud->bufcount; - for(p = paud->buffer, phdr = pWaveHdrs, spaceleft = paud->bufcount; spaceleft; p += sz, phdr++, spaceleft -= sz) { - sz = spaceleft > paud->samplesPerEvent ? paud->samplesPerEvent : spaceleft; - phdr->dwBufferLength = sz * sizeof(audin_sample_t); - phdr->lpData = (LPSTR)p; - phdr->dwFlags = 0; - if (!waveInPrepareHeader(ah, phdr, sizeof(WAVEHDR)) - && !waveInAddBuffer(ah, phdr, sizeof(WAVEHDR))) - nQueuedBuffers++; - else - fprintf(stderr, "GAUDIN: Buffer prepare failed\n"); - } - if (!nQueuedBuffers) - fprintf(stderr, "GAUDIN: Failed to prepare any buffers\n"); -} - -void gaudin_lld_start(void) { - waveInStart(ah); -} - -void gaudin_lld_stop(void) { - waveInStop(ah); -} - -#endif /* GFX_USE_GAUDIN */ diff --git a/drivers/audio/Win32/gaudin_lld_config.h b/drivers/audio/Win32/gaudin_lld_config.h deleted file mode 100644 index 78ddffaa..00000000 --- a/drivers/audio/Win32/gaudin_lld_config.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file drivers/audio/Win32/gaudin_lld_config.h - * @brief GAUDIN Driver config file. - * - * @addtogroup GAUDIN - * @{ - */ - -#ifndef GAUDIN_LLD_CONFIG_H -#define GAUDIN_LLD_CONFIG_H - -#if GFX_USE_GAUDIN - -/*===========================================================================*/ -/* Driver hardware support. */ -/*===========================================================================*/ - -/** - * @brief The audio input sample type - */ -//typedef uint8_t audin_sample_t; -typedef int16_t audin_sample_t; - -/** - * @brief The maximum sample frequency supported by this audio device - */ -#define GAUDIN_MAX_SAMPLE_FREQUENCY 44100 - -/** - * @brief The number of bits in a sample - */ -//#define GAUDIN_BITS_PER_SAMPLE 8 -#define GAUDIN_BITS_PER_SAMPLE 16 - -/** - * @brief The format of an audio sample - */ -//#define GAUDIN_SAMPLE_FORMAT ARRAY_DATA_8BITUNSIGNED -#define GAUDIN_SAMPLE_FORMAT ARRAY_DATA_16BITSIGNED - -/** - * @brief The number of audio channels supported by this driver - */ -#define GAUDIN_NUM_CHANNELS 2 - -/** - * @brief The list of audio channels and their uses - * @{ - */ -#define GAUDIN_MONO 0 -#define GAUDIN_STEREO 1 -/** @} */ - -#endif /* GFX_USE_GAUDIN */ - -#endif /* GAUDIN_LLD_CONFIG_H */ -/** @} */ diff --git a/drivers/audio/Win32/gaudout_lld.c b/drivers/audio/Win32/gaudout_lld.c deleted file mode 100644 index 4fa6d605..00000000 --- a/drivers/audio/Win32/gaudout_lld.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file drivers/audio/Win32/gaudout_lld.c - * @brief GAUDOUT - Driver file for Win32. - */ - -#include "gfx.h" - -#if GFX_USE_GAUDOUT - -/* Include the driver defines */ -#include "src/gaudout/driver.h" - -#undef Red -#undef Green -#undef Blue -#define WIN32_LEAN_AND_MEAN -#include -#include -#include - -#define MAX_WAVE_HEADERS 2 // Larger numbers enable more buffering which is good for ensuring - // there are no skips due to data not being available, however larger - // numbers of buffers also create higher latency. - -static HWAVEOUT ah = 0; -static volatile int nQueuedBuffers; -static bool_t isRunning; -static WAVEHDR WaveHdrs[MAX_WAVE_HEADERS]; -static HANDLE waveThread; -static DWORD threadID; - -/* -static void PrintWaveErrorMsg(DWORD err, TCHAR * str) -{ - #define BUFFERSIZE 128 - char buffer[BUFFERSIZE]; - - fprintf(stderr, "GAUDOUT: ERROR 0x%08X: %s\r\n", err, str); - if (mciGetErrorString(err, &buffer[0], sizeof(buffer))) - fprintf(stderr, "%s\r\n", &buffer[0]); - else - fprintf(stderr, "0x%08X returned!\r\n", err); -} -*/ - -/**************************** waveProc() ******************************* - * We don't use CALLBACK_FUNCTION because it is restricted to calling only - * a few particular Windows functions, namely some of the time functions, - * and a few of the Low Level MIDI API. If you violate this rule, your app can - * hang inside of the callback). One of the Windows API that a callback can't - * call is waveOutUnPrepareBuffer() which is what we need to use whenever we receive a - * MM_WOM_DONE. My callback would need to defer that job to another thread - * anyway, so instead just use CALLBACK_THREAD here instead. - *************************************************************************/ - -static bool_t senddata(WAVEHDR *pwh) { - GAudioData *paud; - - // Get the next data block to send - gfxSystemLock(); - paud = gaudoutGetDataBlockI(); - gfxSystemUnlock(); - if (!paud) - return FALSE; - - // Prepare the wave header for Windows - pwh->dwUser = (DWORD_PTR)paud; - pwh->lpData = (LPSTR)(paud+1); // The data is on the end of the structure - pwh->dwBufferLength = paud->len; - pwh->dwFlags = 0; - pwh->dwLoops = 0; - if (waveOutPrepareHeader(ah, pwh, sizeof(WAVEHDR))) { - fprintf(stderr, "GAUDOUT: Failed to prepare a buffer"); - exit(-1); - } - - // Send it to windows - if (waveOutWrite(ah, pwh, sizeof(WAVEHDR))) { - fprintf(stderr, "GAUDOUT: Failed to write the buffer"); - exit(-1); - } - - nQueuedBuffers++; - return TRUE; -} - -static DWORD WINAPI waveProc(LPVOID arg) { - MSG msg; - WAVEHDR *pwh; - (void) arg; - - while (GetMessage(&msg, 0, 0, 0)) { - switch (msg.message) { - case MM_WOM_DONE: - pwh = (WAVEHDR *)msg.lParam; - - // Windows - Let go! - waveOutUnprepareHeader(ah, pwh, sizeof(WAVEHDR)); - - // Give the buffer back to the Audio Free List - gfxSystemLock(); - gaudoutReleaseDataBlockI((GAudioData *)pwh->dwUser); - gfxSystemUnlock(); - pwh->lpData = 0; - nQueuedBuffers--; - - // Try and get a new block - if ((!isRunning || !senddata(pwh)) && !nQueuedBuffers) { - gfxSystemLock(); - gaudoutDoneI(); - gfxSystemUnlock(); - } - break; - } - } - return 0; -} - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -void gaudout_lld_deinit() { - if (ah) { - isRunning = FALSE; - waveOutReset(ah); - while(nQueuedBuffers) Sleep(1); - waveOutClose(ah); - ah = 0; - } -} - -bool_t gaudout_lld_init(uint16_t channel, uint32_t frequency, ArrayDataFormat format) { - WAVEFORMATEX wfx; - - if (format != ARRAY_DATA_8BITUNSIGNED && format != ARRAY_DATA_16BITSIGNED) - return FALSE; - - if (!waveThread) { - if (!(waveThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)waveProc, 0, 0, &threadID))) { - fprintf(stderr, "GAUDOUT: Can't create WAVE play-back thread\n"); - exit(-1); - } - CloseHandle(waveThread); - } - - wfx.wFormatTag = WAVE_FORMAT_PCM; - wfx.nChannels = channel == GAUDOUT_STEREO ? 2 : 1; - wfx.nSamplesPerSec = frequency; - wfx.nBlockAlign = wfx.nChannels * (format == ARRAY_DATA_8BITUNSIGNED ? 1 : 2); - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - wfx.wBitsPerSample = (format == ARRAY_DATA_8BITUNSIGNED ? 8 : 16); - wfx.cbSize = 0; - - if (waveOutOpen(&ah, WAVE_MAPPER, &wfx, (DWORD_PTR)threadID, 0, CALLBACK_THREAD)) { - fprintf(stderr, "GAUDOUT: Can't open WAVE play-back device\n"); - exit(-1); - } - - return TRUE; -} - -bool_t gaudout_lld_set_volume(uint8_t vol) { - if (!ah) - return FALSE; - return waveOutSetVolume(ah, (((uint16_t)vol)<<8)|vol) != 0; -} - -void gaudout_lld_start(void) { - WAVEHDR *pwh; - - if (!ah) - return; - - isRunning = TRUE; - while (nQueuedBuffers < MAX_WAVE_HEADERS) { - // Find the empty one - there will always be at least one. - for(pwh = WaveHdrs; pwh->lpData; pwh++); - - // Grab the next audio block from the Audio Out Queue - if (!senddata(pwh)) - break; - } -} - -void gaudout_lld_stop(void) { - isRunning = FALSE; - if (ah) - waveOutReset(ah); -} - -#endif /* GFX_USE_GAUDOUT */ diff --git a/drivers/audio/Win32/gaudout_lld_config.h b/drivers/audio/Win32/gaudout_lld_config.h deleted file mode 100644 index 907d44c6..00000000 --- a/drivers/audio/Win32/gaudout_lld_config.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file drivers/audio/Win32/gaudout_lld_config.h - * @brief GAUDOUT Driver config file. - * - * @addtogroup GAUDOUT - * @{ - */ - -#ifndef GAUDOUT_LLD_CONFIG_H -#define GAUDIN_LLD_CONFIG_H - -#if GFX_USE_GAUDOUT - -/*===========================================================================*/ -/* Driver hardware support. */ -/*===========================================================================*/ - -/** - * @brief The maximum sample frequency supported by this audio device - */ -#define GAUDOUT_MAX_SAMPLE_FREQUENCY 44100 - -/** - * @brief The number of audio formats supported by this driver - */ -#define GAUDOUT_NUM_FORMATS 2 - -/** - * @brief The available audio sample formats in order of preference - */ -#define GAUDOUT_FORMAT1 ARRAY_DATA_16BITSIGNED -#define GAUDOUT_FORMAT2 ARRAY_DATA_8BITUNSIGNED - -/** - * @brief The number of audio channels supported by this driver - */ -#define GAUDOUT_NUM_CHANNELS 2 - -/** - * @brief Whether each channel is mono or stereo - */ -#define GAUDOUT_CHANNEL0_STEREO FALSE -#define GAUDOUT_CHANNEL1_STEREO TRUE - -/** - * @brief The list of audio channel names and their uses - * @{ - */ -#define GAUDOUT_MONO 0 -#define GAUDOUT_STEREO 1 -/** @} */ - -#endif /* GFX_USE_GAUDOUT */ - -#endif /* GAUDOUT_LLD_CONFIG_H */ -/** @} */ diff --git a/drivers/audio/Win32/readme.txt b/drivers/audio/Win32/readme.txt deleted file mode 100644 index 784f0a89..00000000 --- a/drivers/audio/Win32/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -This driver uses the Win32 audio system to provide GAUDIN and GAUDOUT channels. - -For GAUDIN - It supports 2 channels, Channel 0 being a mono channel and Channel 1 being a stereo channel. -For GAUDOUT - It supports 2 channels, Channel 0 being a mono channel and Channel 1 being a stereo channel. - -For stereo, the samples are interleaved. Remember to allocate enough space for two samples per -sample period. - -This is a simple driver that makes no changes to the mixer so set up the audio mixer using -the windows control panel audio mixer before starting recording/playback. diff --git a/drivers/audio/gadc/driver.mk b/drivers/audio/gadc/driver.mk deleted file mode 100644 index b991ede8..00000000 --- a/drivers/audio/gadc/driver.mk +++ /dev/null @@ -1,5 +0,0 @@ -# List the required driver. -GFXSRC += $(GFXLIB)/drivers/gaudin/gadc/gaudin_lld.c - -# Required include directories -GFXINC += $(GFXLIB)/drivers/audio/gadc diff --git a/drivers/audio/gadc/gaudin_lld.c b/drivers/audio/gadc/gaudin_lld.c deleted file mode 100644 index 002d9e9b..00000000 --- a/drivers/audio/gadc/gaudin_lld.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file drivers/gaudin/gadc/gaudin_lld.c - * @brief GAUDIN - Driver file for using the cpu ADC (via GADC). - * - * @addtogroup GAUDIN - * - * @{ - */ - -/** - * We are now implementing the driver - pull in our channel table - * from the board definitions. - */ -#define GAUDIN_LLD_IMPLEMENTATION - - -#include "gfx.h" - -#if GFX_USE_GAUDIN - -/* Double check the GADC system is turned on */ -#if !GFX_USE_GADC - #error "GAUDIN - The GADC driver for GAUDIN requires GFX_USE_GADC to be TRUE" -#endif - -/* Include the driver defines */ -#include "src/gaudin/driver.h" - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -void gaudin_lld_init(const gaudin_params *paud) { - /* Setup the high speed GADC */ - gadcHighSpeedInit(gaudin_lld_physdevs[paud->channel], paud->frequency, paud->buffer, paud->bufcount, paud->samplesPerEvent); - - /* Register ourselves for ISR callbacks */ - gadcHighSpeedSetISRCallback(GAUDIN_ISR_CompleteI); - - /** - * The gadc driver handles any errors for us by restarting the transaction so there is - * no need for us to setup anything for GAUDIN_ISR_ErrorI() - */ -} - -void gaudin_lld_start(void) { - gadcHighSpeedStart(); -} - -void gaudin_lld_stop(void) { - gadcHighSpeedStop(); -} - -#endif /* GFX_USE_GAUDIN */ -/** @} */ diff --git a/drivers/audio/gadc/gaudin_lld_board_template.h b/drivers/audio/gadc/gaudin_lld_board_template.h deleted file mode 100644 index 89cc0c12..00000000 --- a/drivers/audio/gadc/gaudin_lld_board_template.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file drivers/gaudin/gadc/gaudin_lld_board_template.h - * @brief GAUDIN Driver board config board file - * - * @addtogroup GAUDIN - * @{ - */ - -#ifndef _GAUDIN_LLD_BOARD_H -#define _GAUDIN_LLD_BOARD_H - -/*===========================================================================*/ -/* Audio inputs on this board */ -/*===========================================================================*/ - -/** - * @brief The number of audio channels supported by this driver - * @note This is an example - */ -#define GAUDIN_NUM_CHANNELS 1 - -/** - * @brief The list of audio channels and their uses - * @note This is an example - * @{ - */ -#define GAUDIN_MICROPHONE 0 -/** @} */ - -/** - * @brief The audio channel to GADC physical device assignment - * @note This is an example - * @{ - */ -#ifdef GAUDIN_LLD_IMPLEMENTATION - static uint32_t gaudin_lld_physdevs[GAUDIN_NUM_CHANNELS] = { - GADC_PHYSDEV_MICROPHONE, - }; -#endif -/** @} */ - -#endif /* _GAUDIN_LLD_BOARD_H */ -/** @} */ diff --git a/drivers/audio/gadc/gaudin_lld_config.h b/drivers/audio/gadc/gaudin_lld_config.h deleted file mode 100644 index a9fd02ae..00000000 --- a/drivers/audio/gadc/gaudin_lld_config.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file drivers/gaudin/gadc/gaudin_lld_config.h - * @brief GAUDIN Driver config file. - * - * @addtogroup GAUDIN - * @{ - */ - -#ifndef GAUDIN_LLD_CONFIG_H -#define GAUDIN_LLD_CONFIG_H - -#if GFX_USE_GAUDIN - -/*===========================================================================*/ -/* Driver hardware support. */ -/*===========================================================================*/ - -/** - * @brief The audio input sample type - * @details For this driver it matches the cpu sample type - */ -typedef adcsample_t audin_sample_t; - -/** - * @brief The maximum sample frequency supported by this audio device - * @details For this driver it matches the GADC maximum high speed sample rate - */ -#define GAUDIN_MAX_SAMPLE_FREQUENCY GADC_MAX_HIGH_SPEED_SAMPLERATE - -/** - * @brief The number of bits in a sample - * @details For this driver it matches the cpu sample bits - */ -#define GAUDIN_BITS_PER_SAMPLE GADC_BITS_PER_SAMPLE - -/** - * @brief The format of an audio sample - * @details For this driver it matches the cpu sample format - */ -#define GAUDIN_SAMPLE_FORMAT GADC_SAMPLE_FORMAT - -/** - * For the GAUDIN driver that uses GADC - all the remaining config definitions are specific - * to the board. - */ -/* Include the user supplied board definitions */ -#include "gaudin_lld_board.h" - -#endif /* GFX_USE_GAUDIN */ - -#endif /* GAUDIN_LLD_CONFIG_H */ -/** @} */ diff --git a/drivers/audio/gadc/readme.txt b/drivers/audio/gadc/readme.txt deleted file mode 100644 index 1d3877e8..00000000 --- a/drivers/audio/gadc/readme.txt +++ /dev/null @@ -1,6 +0,0 @@ -This driver uses the generic GADC driver to provide a GAUDIN device. - -It supports whatever high speed device channels that your GADC driver and board supports. - -For stereo, the samples are interleaved. Remember to allocate enough space for two samples per -sample period. diff --git a/drivers/gaudio/Win32/driver.mk b/drivers/gaudio/Win32/driver.mk new file mode 100644 index 00000000..1ea338d5 --- /dev/null +++ b/drivers/gaudio/Win32/driver.mk @@ -0,0 +1,6 @@ +# List the required driver. +GFXSRC += $(GFXLIB)/drivers/gaudio/Win32/gaudio_record_lld.c \ + $(GFXLIB)/drivers/gaudio/Win32/gaudio_play_lld.c + +# Required include directories +GFXINC += $(GFXLIB)/drivers/gaudio/Win32 diff --git a/drivers/gaudio/Win32/gaudio_play_config.h b/drivers/gaudio/Win32/gaudio_play_config.h new file mode 100644 index 00000000..4013e91f --- /dev/null +++ b/drivers/gaudio/Win32/gaudio_play_config.h @@ -0,0 +1,63 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/Win32/gaudio_play_config.h + * @brief GAUDIO Play Driver config file. + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef GAUDIO_PLAY_CONFIG_H +#define GAUDIO_PLAY_CONFIG_H + +#if GFX_USE_GAUDIO && GAUDIO_NEED_PLAY + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +/** + * @brief The maximum sample frequency supported by this audio device + */ +#define GAUDIO_PLAY_MAX_SAMPLE_FREQUENCY 44100 + +/** + * @brief The number of audio formats supported by this driver + */ +#define GAUDIO_PLAY_NUM_FORMATS 2 + +/** + * @brief The available audio sample formats in order of preference + */ +#define GAUDIO_PLAY_FORMAT1 ARRAY_DATA_16BITSIGNED +#define GAUDIO_PLAY_FORMAT2 ARRAY_DATA_8BITUNSIGNED + +/** + * @brief The number of audio channels supported by this driver + */ +#define GAUDIO_PLAY_NUM_CHANNELS 2 + +/** + * @brief Whether each channel is mono or stereo + */ +#define GAUDIO_PLAY_CHANNEL0_IS_STEREO FALSE +#define GAUDIO_PLAY_CHANNEL1_IS_STEREO TRUE + +/** + * @brief The list of audio channel names and their uses + * @{ + */ +#define GAUDIO_PLAY_MONO 0 +#define GAUDIO_PLAY_STEREO 1 +/** @} */ + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_PLAY */ + +#endif /* GAUDIO_PLAY_CONFIG_H */ +/** @} */ diff --git a/drivers/gaudio/Win32/gaudio_play_lld.c b/drivers/gaudio/Win32/gaudio_play_lld.c new file mode 100644 index 00000000..6b4f2dab --- /dev/null +++ b/drivers/gaudio/Win32/gaudio_play_lld.c @@ -0,0 +1,185 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/Win32/gaudio_play_lld.c + * @brief GAUDIO - Play Driver file for Win32. + */ + +#include "gfx.h" + +#if GFX_USE_GAUDIO && GAUDIO_NEED_PLAY + +/* Include the driver defines */ +#include "src/gaudio/driver_play.h" + +#undef Red +#undef Green +#undef Blue +#define WIN32_LEAN_AND_MEAN +#include +#include +#include + +#define MAX_WAVE_HEADERS 2 // Larger numbers enable more buffering which is good for ensuring + // there are no skips due to data not being available, however larger + // numbers of buffers also create higher latency. + +static HWAVEOUT ah = 0; +static volatile int nQueuedBuffers; +static bool_t isRunning; +static WAVEHDR WaveHdrs[MAX_WAVE_HEADERS]; +static HANDLE waveThread; +static DWORD threadID; + +/**************************** waveProc() ******************************* + * We don't use CALLBACK_FUNCTION because it is restricted to calling only + * a few particular Windows functions, namely some of the time functions, + * and a few of the Low Level MIDI API. If you violate this rule, your app can + * hang inside of the callback). One of the Windows API that a callback can't + * call is waveOutUnPrepareBuffer() which is what we need to use whenever we receive a + * MM_WOM_DONE. My callback would need to defer that job to another thread + * anyway, so instead just use CALLBACK_THREAD here instead. + *************************************************************************/ + +static bool_t senddata(WAVEHDR *pwh) { + GAudioData *paud; + + // Get the next data block to send + gfxSystemLock(); + paud = gaudioPlayGetDataBlockI(); + if (!paud && !nQueuedBuffers) + gaudioPlayDoneI(); + gfxSystemUnlock(); + if (!paud) + return FALSE; + + // Prepare the wave header for Windows + pwh->dwUser = (DWORD_PTR)paud; + pwh->lpData = (LPSTR)(paud+1); // The data is on the end of the structure + pwh->dwBufferLength = paud->len; + pwh->dwFlags = 0; + pwh->dwLoops = 0; + if (waveOutPrepareHeader(ah, pwh, sizeof(WAVEHDR))) { + fprintf(stderr, "GAUDIO: Failed to prepare a play buffer"); + exit(-1); + } + + // Send it to windows + if (waveOutWrite(ah, pwh, sizeof(WAVEHDR))) { + fprintf(stderr, "GAUDIO: Failed to write the play buffer"); + exit(-1); + } + + nQueuedBuffers++; + return TRUE; +} + +static DWORD WINAPI waveProc(LPVOID arg) { + MSG msg; + WAVEHDR *pwh; + (void) arg; + + while (GetMessage(&msg, 0, 0, 0)) { + switch (msg.message) { + case MM_WOM_DONE: + pwh = (WAVEHDR *)msg.lParam; + + // Windows - Let go! + waveOutUnprepareHeader(ah, pwh, sizeof(WAVEHDR)); + + // Give the buffer back to the Audio Free List + gfxSystemLock(); + gaudioPlayReleaseDataBlockI((GAudioData *)pwh->dwUser); + gfxSystemUnlock(); + pwh->lpData = 0; + nQueuedBuffers--; + + // Are we stopping? + if (!isRunning) { + // Have we finished yet? + if (!nQueuedBuffers) { + gfxSystemLock(); + gaudioPlayDoneI(); + gfxSystemUnlock(); + } + break; + } + + // Try and get a new block + senddata(pwh); + break; + } + } + return 0; +} + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +bool_t gaudio_play_lld_init(uint16_t channel, uint32_t frequency, ArrayDataFormat format) { + WAVEFORMATEX wfx; + + if (format != ARRAY_DATA_8BITUNSIGNED && format != ARRAY_DATA_16BITSIGNED) + return FALSE; + + if (!waveThread) { + if (!(waveThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)waveProc, 0, 0, &threadID))) { + fprintf(stderr, "GAUDIO: Can't create WAVE play-back thread\n"); + exit(-1); + } + CloseHandle(waveThread); + } + + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.nChannels = channel == GAUDIO_PLAY_STEREO ? 2 : 1; + wfx.nSamplesPerSec = frequency; + wfx.nBlockAlign = wfx.nChannels * (format == ARRAY_DATA_8BITUNSIGNED ? 1 : 2); + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + wfx.wBitsPerSample = (format == ARRAY_DATA_8BITUNSIGNED ? 8 : 16); + wfx.cbSize = 0; + + if (ah) { + waveOutClose(ah); + ah = 0; + } + if (waveOutOpen(&ah, WAVE_MAPPER, &wfx, (DWORD_PTR)threadID, 0, CALLBACK_THREAD)) { + fprintf(stderr, "GAUDIO: Can't open WAVE play-back device\n"); + exit(-1); + } + + return TRUE; +} + +bool_t gaudio_play_lld_set_volume(uint8_t vol) { + if (!ah) + return FALSE; + return waveOutSetVolume(ah, (((uint16_t)vol)<<8)|vol) != 0; +} + +void gaudio_play_lld_start(void) { + WAVEHDR *pwh; + + isRunning = TRUE; + while (nQueuedBuffers < MAX_WAVE_HEADERS) { + // Find the empty one - there will always be at least one. + for(pwh = WaveHdrs; pwh->lpData; pwh++); + + // Grab the next audio block from the Audio Out Queue + if (!senddata(pwh)) + break; + } +} + +void gaudio_play_lld_stop(void) { + isRunning = FALSE; + waveOutReset(ah); + while(nQueuedBuffers) Sleep(1); +} + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_PLAY */ diff --git a/drivers/gaudio/Win32/gaudio_record_config.h b/drivers/gaudio/Win32/gaudio_record_config.h new file mode 100644 index 00000000..4d952e1d --- /dev/null +++ b/drivers/gaudio/Win32/gaudio_record_config.h @@ -0,0 +1,63 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/Win32/gaudio_record_config.h + * @brief GAUDIO Record Driver config file. + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef GAUDIO_RECORD_CONFIG_H +#define GAUDIO_RECORD_CONFIG_H + +#if GFX_USE_GAUDIO && GAUDIO_NEED_RECORD + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +/** + * @brief The maximum sample frequency supported by this audio device + */ +#define GAUDIO_RECORD_MAX_SAMPLE_FREQUENCY 44100 + +/** + * @brief The number of audio formats supported by this driver + */ +#define GAUDIO_RECORD_NUM_FORMATS 2 + +/** + * @brief The available audio sample formats in order of preference + */ +#define GAUDIO_RECORD_FORMAT1 ARRAY_DATA_16BITSIGNED +#define GAUDIO_RECORD_FORMAT2 ARRAY_DATA_8BITUNSIGNED + +/** + * @brief The number of audio channels supported by this driver + */ +#define GAUDIO_RECORD_NUM_CHANNELS 2 + +/** + * @brief Whether each channel is mono or stereo + */ +#define GAUDIO_RECORD_CHANNEL0_IS_STEREO FALSE +#define GAUDIO_RECORD_CHANNEL1_IS_STEREO TRUE + +/** + * @brief The list of audio channels and their uses + * @{ + */ +#define GAUDIO_RECORD_MONO 0 +#define GAUDIO_RECORD_STEREO 1 +/** @} */ + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_RECORD */ + +#endif /* GAUDIO_RECORD_CONFIG_H */ +/** @} */ diff --git a/drivers/gaudio/Win32/gaudio_record_lld.c b/drivers/gaudio/Win32/gaudio_record_lld.c new file mode 100644 index 00000000..259707e3 --- /dev/null +++ b/drivers/gaudio/Win32/gaudio_record_lld.c @@ -0,0 +1,187 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/Win32/gaudio_record_lld.c + * @brief GAUDIO - Record Driver file for Win32. + */ + +#include "gfx.h" + +#if GFX_USE_GAUDIO && GAUDIO_NEED_RECORD + +/* Include the driver defines */ +#include "src/gaudio/driver_record.h" + +#undef Red +#undef Green +#undef Blue +#define WIN32_LEAN_AND_MEAN +#include +#include +#include + +#define MAX_WAVE_HEADERS 2 // Larger numbers enable more buffering which is good for ensuring + // there are no skips due to data not being available, however larger + // numbers of buffers chews buffers on the free-list. + +static HWAVEIN ah = 0; +static volatile int nQueuedBuffers; +static bool_t isRunning; +static WAVEHDR WaveHdrs[MAX_WAVE_HEADERS]; +static HANDLE waveThread; +static DWORD threadID; + +/**************************** waveProc() ******************************* + * We don't use CALLBACK_FUNCTION because it is restricted to calling only + * a few particular Windows functions, namely some of the time functions, + * and a few of the Low Level MIDI API. If you violate this rule, your app can + * hang inside of the callback). One of the Windows API that a callback can't + * call is waveInAddBuffer() which is what we need to use whenever we receive a + * MM_WIM_DATA. My callback would need to defer that job to another thread + * anyway, so instead just use CALLBACK_THREAD here instead. + *************************************************************************/ + +static bool_t getbuffer(WAVEHDR *pwh) { + GAudioData *paud; + + // Get the next data block to send + gfxSystemLock(); + paud = gaudioRecordGetFreeBlockI(); + if (!paud && !nQueuedBuffers) + gaudioRecordDoneI(); + gfxSystemUnlock(); + if (!paud) + return FALSE; + + // Prepare the wave header for Windows + pwh->dwUser = (DWORD_PTR)paud; + pwh->lpData = (LPSTR)(paud+1); // The data is on the end of the structure + pwh->dwBufferLength = paud->size; + pwh->dwFlags = 0; + if (waveInPrepareHeader(ah, pwh, sizeof(WAVEHDR))) { + fprintf(stderr, "GAUDIO: Failed to prepare a record buffer"); + exit(-1); + } + + // Send it to windows + if (waveInAddBuffer(ah, pwh, sizeof(WAVEHDR))) { + fprintf(stderr, "GAUDIO: Failed to add the record buffer"); + exit(-1); + } + + nQueuedBuffers++; + return TRUE; +} + +static DWORD WINAPI waveProc(LPVOID arg) { + MSG msg; + WAVEHDR *pwh; + GAudioData *paud; + (void) arg; + + while (GetMessage(&msg, 0, 0, 0)) { + switch (msg.message) { + case MM_WIM_DATA: + pwh = (WAVEHDR *)msg.lParam; + + // Windows - Let go! + waveInUnprepareHeader(ah, pwh, sizeof(WAVEHDR)); + + // Save the buffer in the audio record list + paud = (GAudioData *)pwh->dwUser; + paud->len = pwh->dwBytesRecorded; + gfxSystemLock(); + gaudioRecordSaveDataBlockI(paud); + gfxSystemUnlock(); + pwh->lpData = 0; + nQueuedBuffers--; + + // Are we stopping? + if (!isRunning) { + // Have we finished yet? + if (!nQueuedBuffers) { + gfxSystemLock(); + gaudioRecordDoneI(); + gfxSystemUnlock(); + } + break; + } + + // Try and get a new block + getbuffer(pwh); + break; + } + } + return 0; +} + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +bool_t gaudio_record_lld_init(uint16_t channel, uint32_t frequency, ArrayDataFormat format) { + WAVEFORMATEX wfx; + + if (format != ARRAY_DATA_8BITUNSIGNED && format != ARRAY_DATA_16BITSIGNED) + return FALSE; + + if (!waveThread) { + if (!(waveThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)waveProc, 0, 0, &threadID))) { + fprintf(stderr, "GAUDIO: Can't create WAVE recording thread\n"); + exit(-1); + } + CloseHandle(waveThread); + } + + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.nChannels = channel == GAUDIO_RECORD_STEREO ? 2 : 1; + wfx.nSamplesPerSec = frequency; + wfx.nBlockAlign = wfx.nChannels * (format == ARRAY_DATA_8BITUNSIGNED ? 1 : 2); + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + wfx.wBitsPerSample = (format == ARRAY_DATA_8BITUNSIGNED ? 8 : 16); + wfx.cbSize = 0; + + if (ah) { + waveInClose(ah); + ah = 0; + } + if (waveInOpen(&ah, WAVE_MAPPER, &wfx, (DWORD_PTR)threadID, 0, CALLBACK_THREAD)) { + fprintf(stderr, "GAUDIN: Can't open WAVE recording device\n"); + exit(-1); + } + + return TRUE; +} + +void gaudio_record_lld_start(void) { + WAVEHDR *pwh; + + if (!ah) + return; + + while (nQueuedBuffers < MAX_WAVE_HEADERS) { + // Find the empty one - there will always be at least one. + for(pwh = WaveHdrs; pwh->lpData; pwh++); + + // Grab the next audio block from the free-list + if (!getbuffer(pwh)) + break; + } + if (!isRunning) { + isRunning = TRUE; + waveInStart(ah); + } +} + +void gaudio_record_lld_stop(void) { + isRunning = FALSE; + waveInReset(ah); + while(nQueuedBuffers) Sleep(1); +} + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_RECORD */ diff --git a/drivers/gaudio/Win32/readme.txt b/drivers/gaudio/Win32/readme.txt new file mode 100644 index 00000000..83cb9c33 --- /dev/null +++ b/drivers/gaudio/Win32/readme.txt @@ -0,0 +1,10 @@ +This driver uses the Win32 audio system to provide GAUDIO play and record channels. + +For PLAY - It supports 2 channels, Channel 0 being a mono channel and Channel 1 being a stereo channel. +For RECORD - It supports 2 channels, Channel 0 being a mono channel and Channel 1 being a stereo channel. + +For stereo, the samples are interleaved. Remember to allocate enough space for two samples per +sample period. + +This is a simple driver that makes no changes to the mixer so set up the audio mixer using +the windows control panel audio mixer before starting recording/playback. diff --git a/drivers/gaudio/gadc/driver.mk b/drivers/gaudio/gadc/driver.mk new file mode 100644 index 00000000..4d79da25 --- /dev/null +++ b/drivers/gaudio/gadc/driver.mk @@ -0,0 +1,5 @@ +# List the required driver. +GFXSRC += $(GFXLIB)/drivers/gaudio/gadc/gaudio_record_lld.c + +# Required include directories +GFXINC += $(GFXLIB)/drivers/gaudio/gadc diff --git a/drivers/gaudio/gadc/gaudio_record_board_template.h b/drivers/gaudio/gadc/gaudio_record_board_template.h new file mode 100644 index 00000000..26e87d88 --- /dev/null +++ b/drivers/gaudio/gadc/gaudio_record_board_template.h @@ -0,0 +1,50 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/gadc/gaudio_record_board_template.h + * @brief GAUDIO Record Driver board config board file + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef _GAUDIO_RECORD_BOARD_H +#define _GAUDIO_RECORD_BOARD_H + +/*===========================================================================*/ +/* Audio inputs on this board */ +/*===========================================================================*/ + +/** + * @brief The number of audio channels supported by this driver + * @note This is an example + */ +#define GAUDIO_RECORD_NUM_CHANNELS 1 + +/** + * @brief The list of audio channels and their uses + * @note This is an example + * @{ + */ +#define GAUDIO_RECORD_MICROPHONE 0 +/** @} */ + +/** + * @brief The audio channel to GADC physical device assignment + * @note This is an example + * @{ + */ +#ifdef GAUDIO_RECORD_LLD_IMPLEMENTATION + static uint32_t gaudin_lld_physdevs[GAUDIO_RECORD_NUM_CHANNELS] = { + GADC_PHYSDEV_MICROPHONE, + }; +#endif +/** @} */ + +#endif /* _GAUDIO_RECORD_BOARD_H */ +/** @} */ diff --git a/drivers/gaudio/gadc/gaudio_record_config.h b/drivers/gaudio/gadc/gaudio_record_config.h new file mode 100644 index 00000000..22d8750f --- /dev/null +++ b/drivers/gaudio/gadc/gaudio_record_config.h @@ -0,0 +1,59 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/gadc/gaudio_record_config.h + * @brief GAUDIN Record Driver config file. + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef GAUDIO_RECORD_CONFIG_H +#define GAUDIO_RECORD_CONFIG_H + +#if GFX_USE_GAUDIO && GAUDIO_NEED_RECORD + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +/** + * @brief The audio record sample type + * @details For this driver it matches the cpu sample type + */ +typedef adcsample_t audio_record_sample_t; + +/** + * @brief The maximum sample frequency supported by this audio device + * @details For this driver it matches the GADC maximum high speed sample rate + */ +#define GAUDIO_RECORD_MAX_SAMPLE_FREQUENCY GADC_MAX_HIGH_SPEED_SAMPLERATE + +/** + * @brief The number of bits in a sample + * @details For this driver it matches the cpu sample bits + */ +#define GAUDIO_RECORD_BITS_PER_SAMPLE GADC_BITS_PER_SAMPLE + +/** + * @brief The format of an audio sample + * @details For this driver it matches the cpu sample format + */ +#define GAUDIO_RECORD_SAMPLE_FORMAT GADC_SAMPLE_FORMAT + +/** + * For the GAUDIO driver that uses GADC - all the remaining config definitions are specific + * to the board. + */ +/* Include the user supplied board definitions */ +#include "gaudio_record_board.h" + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_RECORD */ + +#endif /* GAUDIO_RECORD_CONFIG_H */ +/** @} */ diff --git a/drivers/gaudio/gadc/gaudio_record_lld.c b/drivers/gaudio/gadc/gaudio_record_lld.c new file mode 100644 index 00000000..ee994dc1 --- /dev/null +++ b/drivers/gaudio/gadc/gaudio_record_lld.c @@ -0,0 +1,62 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/gadc/gaudio_record_lld.c + * @brief GAUDIO - Record Driver file for using the cpu ADC (via GADC). + * + * @addtogroup GAUDIO + * + * @{ + */ + +/** + * We are now implementing the driver - pull in our channel table + * from the board definitions. + */ +#define GAUDIO_RECORD_IMPLEMENTATION + + +#include "gfx.h" + +#if GFX_USE_GAUDIO && GAUDIO_NEED_RECORD + +/* Double check the GADC system is turned on */ +#if !GFX_USE_GADC + #error "GAUDIO - The GADC driver for GAUDIO requires GFX_USE_GADC to be TRUE" +#endif + +/* Include the driver defines */ +#include "src/gaudio/driver_record.h" + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +void gaudin_lld_init(const gaudin_params *paud) { + /* Setup the high speed GADC */ + gadcHighSpeedInit(gaudin_lld_physdevs[paud->channel], paud->frequency, paud->buffer, paud->bufcount, paud->samplesPerEvent); + + /* Register ourselves for ISR callbacks */ + gadcHighSpeedSetISRCallback(GAUDIN_ISR_CompleteI); + + /** + * The gadc driver handles any errors for us by restarting the transaction so there is + * no need for us to setup anything for GAUDIN_ISR_ErrorI() + */ +} + +void gaudin_lld_start(void) { + gadcHighSpeedStart(); +} + +void gaudin_lld_stop(void) { + gadcHighSpeedStop(); +} + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_RECORD */ +/** @} */ diff --git a/drivers/gaudio/gadc/readme.txt b/drivers/gaudio/gadc/readme.txt new file mode 100644 index 00000000..47d3f191 --- /dev/null +++ b/drivers/gaudio/gadc/readme.txt @@ -0,0 +1,6 @@ +This driver uses the generic GADC driver to provide a GAUDIO recording device. + +It supports whatever high speed device channels that your GADC driver and board supports. + +For stereo, the samples are interleaved. Remember to allocate enough space for two samples per +sample period. diff --git a/gfx.h b/gfx.h index 77aba969..de6047fc 100644 --- a/gfx.h +++ b/gfx.h @@ -62,7 +62,7 @@ * @brief GFX Graphics Display Basic API * @details Defaults to FALSE * @note Also add the specific hardware driver to your makefile. - * Eg. include $(GFXLIB)/drivers/gdisp/Nokia6610/gdisp_lld.mk + * Eg. include $(GFXLIB)/drivers/gdisp/Nokia6610/driver.mk */ #ifndef GFX_USE_GDISP #define GFX_USE_GDISP FALSE @@ -106,9 +106,9 @@ * @details Defaults to FALSE * @note Also add the specific hardware drivers to your makefile. * Eg. - * include $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld.mk + * include $(GFXLIB)/drivers/ginput/toggle/Pal/driver.mk * and... - * include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk + * include $(GFXLIB)/drivers/ginput/touch/MCU/driver.mk */ #ifndef GFX_USE_GINPUT #define GFX_USE_GINPUT FALSE @@ -121,24 +121,14 @@ #define GFX_USE_GADC FALSE #endif /** - * @brief GFX Audio Input Device API + * @brief GFX Audio API * @details Defaults to FALSE * @note Also add the specific hardware drivers to your makefile. * Eg. - * include $(GFXLIB)/drivers/gaudin/GADC/gaudin_lld.mk + * include $(GFXLIB)/drivers/gaudio/GADC/driver.mk */ - #ifndef GFX_USE_GAUDIN - #define GFX_USE_GAUDIN FALSE - #endif - /** - * @brief GFX Audio Output Device API - * @details Defaults to FALSE - * @note Also add the specific hardware drivers to your makefile. - * Eg. - * include $(GFXLIB)/drivers/gaudout/PWM/gaudout_lld.mk - */ - #ifndef GFX_USE_GAUDOUT - #define GFX_USE_GAUDOUT FALSE + #ifndef GFX_USE_GAUDIO + #define GFX_USE_GAUDIO FALSE #endif /** * @brief GFX Miscellaneous Routines API @@ -173,8 +163,7 @@ #include "src/gwin/sys_options.h" #include "src/ginput/sys_options.h" #include "src/gadc/sys_options.h" -#include "src/gaudin/sys_options.h" -#include "src/gaudout/sys_options.h" +#include "src/gaudio/sys_options.h" /** * Interdependency safety checks on the sub-systems. @@ -187,8 +176,7 @@ #include "src/gwin/sys_rules.h" #include "src/ginput/sys_rules.h" #include "src/gdisp/sys_rules.h" -#include "src/gaudout/sys_rules.h" -#include "src/gaudin/sys_rules.h" +#include "src/gaudio/sys_rules.h" #include "src/gadc/sys_rules.h" #include "src/gevent/sys_rules.h" #include "src/gtimer/sys_rules.h" @@ -210,8 +198,7 @@ #include "src/gwin/sys_defs.h" #include "src/ginput/sys_defs.h" #include "src/gadc/sys_defs.h" -#include "src/gaudin/sys_defs.h" -#include "src/gaudout/sys_defs.h" +#include "src/gaudio/sys_defs.h" #ifdef __cplusplus extern "C" { @@ -231,7 +218,7 @@ extern "C" { /** * @brief The one call to end it all * - * @note This will deinitialise each sub-system that has been turned on. + * @note This will de-initialise each sub-system that has been turned on. * * @api */ diff --git a/gfx.mk b/gfx.mk index 8ac6e36b..8a2faa2b 100644 --- a/gfx.mk +++ b/gfx.mk @@ -9,7 +9,6 @@ include $(GFXLIB)/src/gtimer/sys_make.mk include $(GFXLIB)/src/gwin/sys_make.mk include $(GFXLIB)/src/ginput/sys_make.mk include $(GFXLIB)/src/gadc/sys_make.mk -include $(GFXLIB)/src/gaudin/sys_make.mk -include $(GFXLIB)/src/gaudout/sys_make.mk +include $(GFXLIB)/src/gaudio/sys_make.mk include $(GFXLIB)/src/gmisc/sys_make.mk include $(GFXLIB)/src/gfile/sys_make.mk diff --git a/gfxconf.example.h b/gfxconf.example.h index 79d932e8..99f5e569 100644 --- a/gfxconf.example.h +++ b/gfxconf.example.h @@ -218,15 +218,11 @@ /////////////////////////////////////////////////////////////////////////// -// GAUDIN // +// GAUDIO // /////////////////////////////////////////////////////////////////////////// -#define GFX_USE_GAUDIN FALSE - - -/////////////////////////////////////////////////////////////////////////// -// GAUDOUT // -/////////////////////////////////////////////////////////////////////////// -#define GFX_USE_GAUDOUT FALSE +#define GFX_USE_GAUDIO FALSE + #define GAUDIO_NEED_PLAY FALSE + #define GAUDIO_NEED_RECORD FALSE /////////////////////////////////////////////////////////////////////////// @@ -243,4 +239,3 @@ #endif /* _GFXCONF_H */ - diff --git a/src/gaudin/driver.h b/src/gaudin/driver.h deleted file mode 100644 index b534e2a5..00000000 --- a/src/gaudin/driver.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudin/driver.h - * @brief GAUDIN - Audio Input driver header file. - * - * @defgroup Driver Driver - * @ingroup GAUDIN - * @{ - */ - -#ifndef _GAUDIN_LLD_H -#define _GAUDIN_LLD_H - -#include "gfx.h" - -#if GFX_USE_GAUDIN || defined(__DOXYGEN__) - -/*===========================================================================*/ -/* Type definitions */ -/*===========================================================================*/ - -/** - * @brief The structure passed to start a audio conversion - * @note We use the structure instead of parameters purely to save - * interrupt stack space which is very limited in some platforms. - * @{ - */ -typedef struct gaudin_params_t { - uint16_t channel; - uint32_t frequency; - audin_sample_t *buffer; - size_t bufcount; - size_t samplesPerEvent; - } gaudin_params; -/** @} */ - -/** - * @brief These routines are the callbacks that the driver uses. - * @details Defined in the high level GAUDIN code. - * - * @iclass - * @notapi - * - * @{ - */ - -/** - * @param[in] buffer The buffer - * @param[in] n The amount of samples - * */ -extern void GAUDIN_ISR_CompleteI(audin_sample_t *buffer, size_t n); - -extern void GAUDIN_ISR_ErrorI(void); -/** - * @} - */ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Initialise the driver - * - * @param[in] paud Initialisation parameters - * - * @api - */ -void gaudin_lld_init(const gaudin_params *paud); - -/** - * @brief Start the audio input sampling - * - * @api - */ -void gaudin_lld_start(void); - -/** - * @brief Stop the audio input sampling - * - * @api - */ -void gaudin_lld_stop(void); - -#ifdef __cplusplus -} -#endif - -#endif /* GFX_USE_GADC */ - -#endif /* _GADC_LLD_H */ -/** @} */ diff --git a/src/gaudin/gaudin.c b/src/gaudin/gaudin.c deleted file mode 100644 index 2e3507ef..00000000 --- a/src/gaudin/gaudin.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudin/gaudin.c - * @brief GAUDIN sub-system code. - * - * @addtogroup GAUDIN - * @{ - */ -#include "gfx.h" - -#if GFX_USE_GAUDIN - -/* Include the driver defines */ -#include "src/gaudin/driver.h" - -static gaudin_params aud; -static gfxSem *paudSem; -static GEventAudioIn *paudEvent; -static audin_sample_t *lastbuffer; -static size_t lastcount; -static uint16_t audFlags; - #define AUDFLG_RUNNING 0x0001 - #define AUDFLG_USE_EVENTS 0x0002 - -#if GFX_USE_GEVENT - static GTimer AudGTimer; - - static void AudGTimerCallback(void *param) { - (void) param; - GSourceListener *psl; - GEventADC *pe; - - psl = 0; - while ((psl = geventGetSourceListener((GSourceHandle)(&aud), psl))) { - if (!(pe = (GEventAudioIn *)geventGetEventBuffer(psl))) { - // This listener is missing - save this. - psl->srcflags |= GAUDIN_LOSTEVENT; - continue; - } - - pe->type = GEVENT_AUDIO_IN; - pe->channel = aud.channel; - pe->count = lastcount; - pe->buffer = lastbuffer; - pe->flags = psl->srcflags; - psl->srcflags = 0; - geventSendEvent(psl); - } - } -#endif - -void GAUDIN_ISR_CompleteI(audin_sample_t *buffer, size_t n) { - /* Save the details */ - lastcount = n; - lastbuffer = buffer; - - /* Signal the user with the data */ - if (paudEvent) { - #if GFX_USE_GEVENT - paudEvent->type = GEVENT_AUDIO_IN; - #endif - paudEvent->channel = aud.channel; - paudEvent->count = lastcount; - paudEvent->buffer = lastbuffer; - paudEvent->flags = 0; - } - - /* Our two signalling mechanisms */ - if (paudSem) - gfxSemSignalI(paudSem); - - #if GFX_USE_GEVENT - if (audFlags & AUDFLG_USE_EVENTS) - gtimerJabI(&AudGTimer); - #endif -} - -void GAUDIN_ISR_ErrorI(void) { - /* Ignore any errors for now */ -} - -void _gaudinInit(void) -{ - #if GFX_USE_GEVENT - gtimerInit(&AudGTimer); - #endif -} - -void _gaudinDeinit(void) -{ - // Commented stuff still ToDo - #if GFX_USE_GEVENT - gtimerDeinit(&AudGTimer); - #endif -} - -bool_t gaudinInit(uint16_t channel, uint32_t frequency, audin_sample_t *buffer, size_t bufcount, size_t samplesPerEvent) { - /* Check the channel is valid */ - if (channel >= GAUDIN_NUM_CHANNELS || frequency > GAUDIN_MAX_SAMPLE_FREQUENCY) - return FALSE; - - /* Stop any existing transfers */ - if ((audFlags & AUDFLG_RUNNING)) - gaudin_lld_stop(); - audFlags = 0; - - /* Initialise everything */ - aud.channel = channel; - aud.frequency = frequency; - aud.buffer = buffer; - aud.bufcount = bufcount; - aud.samplesPerEvent = samplesPerEvent; - paudSem = 0; - paudEvent = 0; - - /* Set up the low level driver */ - gaudin_lld_init(&aud); - return TRUE; -} - -#if GFX_USE_GEVENT - GSourceHandle gaudinGetSource(void) { - if (!gtimerIsActive(&AudGTimer)) - gtimerStart(&AudGTimer, AudGTimerCallback, 0, TRUE, TIME_INFINITE); - audFlags |= AUDFLG_USE_EVENTS; - return (GSourceHandle)&aud; - } -#endif - -void gaudinSetBSem(gfxSem *pbsem, GEventAudioIn *pEvent) { - gfxSystemLock(); - paudSem = pbsem; - paudEvent = pEvent; - gfxSystemUnlock(); -} - -void gaudinStart(void) { - if (!(audFlags & AUDFLG_RUNNING)) { - audFlags |= AUDFLG_RUNNING; - gaudin_lld_start(); - } -} - -void gaudinStop(void) { - if ((audFlags & AUDFLG_RUNNING)) { - gaudin_lld_stop(); - audFlags &= ~AUDFLG_RUNNING; - } -} - -#endif /* GFX_USE_GAUDIN */ -/** @} */ diff --git a/src/gaudin/sys_defs.h b/src/gaudin/sys_defs.h deleted file mode 100644 index c65a69c1..00000000 --- a/src/gaudin/sys_defs.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudin/sys_defs.h - * - * @addtogroup GAUDIN - * - * @brief Module to read audio inputs - * - * @{ - */ - -#ifndef _GAUDIN_H -#define _GAUDIN_H - -#include "gfx.h" - -#if GFX_USE_GAUDIN || defined(__DOXYGEN__) - -/* Include the driver defines */ -#include "gaudin_lld_config.h" - -/*===========================================================================*/ -/* Type definitions */ -/*===========================================================================*/ - -// Event types for GAUDIN -#define GEVENT_AUDIO_IN (GEVENT_GAUDIN_FIRST+0) - -/** - * @brief The Audio Input event structure. - * @{ - */ -typedef struct GEventAudioIn_t { - #if GFX_USE_GEVENT || defined(__DOXYGEN__) - /** - * @brief The type of this event (GEVENT_AUDIO_IN) - */ - GEventType type; - #endif - /** - * @brief The current channel - */ - uint16_t channel; - /** - * @brief The event flags - */ - uint16_t flags; - /** - * @brief The event flag values. - * @{ - */ - #define GAUDIN_LOSTEVENT 0x0001 /**< @brief The last GEVENT_AUDIO_IN event was lost */ - /** @} */ - /** - * @brief The number of audio samples in the buffer - */ - size_t count; - /** - * @brief The buffer containing the audio samples - */ - audin_sample_t *buffer; -} GEventAudioIn; -/** @} */ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Initialise (but not start) the Audio Input Subsystem. - * @details Returns FALSE for an invalid channel or other invalid parameter. - * - * @param[in] channel The channel to convert. Can be set from 0 to GAUDIN_NUM_CHANNELS - 1. - * @param[in] frequency The sample frequency - * @param[in] buffer The static buffer to put the samples into. - * @param[in] bufcount The total number of conversions that will fit in the buffer. - * @param[in] samplesPerEvent The number of conversions to do before returning an event. - * - * @note Only one channel is active at a time. If an audio input is running it will be stopped. - * The Event subsystem is disconnected from the audio subsystem and any binary semaphore - * event is forgotten. - * @note Some channels may be stereo channels which return twice as much sample data with - * the left and right channel data interleaved. Other channels may be mono channels. - * Where stereo channels exist it would be common for the low level driver to also - * offer the left and right channels separately. - * @note Due to a bug in Chibi-OS countPerEvent must be even if using the GADC low level audio driver. - * If bufcount is not evenly divisable by countPerEvent, the remainder must also be even. - * This requirement may not apply to other GAUDIN drivers. - * @note The number of samples for stereo devices will be double the number of conversions. - * Make sure you allocate your buffers large enough. Each channel is then interleaved - * into the provided buffer. Note 'bufcount' and 'countPerEvent' parameters describe the - * number of conversions not the number of samples. - * @note The buffer is circular. When the end of the buffer is reached it will start - * putting data into the beginning of the buffer again. - * @note The event listener must process the event (and the data in it) before the - * next event occurs. If not, the following event will be lost. - * @note If bufcount is evenly divisable by countPerEvent, then every event will return - * countPerEvent conversions. If bufcount is not evenly divisable, it will return - * a block of samples containing less than countPerEvent samples when it reaches the - * end of the buffer. - * - * @return FALSE if invalid channel or parameter - * - * @api - */ -bool_t gaudinInit(uint16_t channel, uint32_t frequency, audin_sample_t *buffer, size_t bufcount, size_t samplesPerEvent); - -#if GFX_USE_GEVENT || defined(__DOXYGEN__) - /** - * @brief Turn on sending results to the GEVENT sub-system. - * @details Returns a GSourceHandle to listen for GEVENT_AUDIO_IN events. - * - * @note The audio input will not use the GEVENT system unless this is - * called first. This saves processing time if the application does - * not want to use the GEVENT sub-system for audio input. - * Once turned on it can only be turned off by calling @p gaudinInit() again. - * @note The audio input is capable of signalling via this method and a binary semaphore - * at the same time. - * - * @return The GSourceHandle - * - * @api - */ - GSourceHandle gaudinGetSource(void); -#endif - -/** - * @brief Allow retrieving of results from the audio input using a Binary Semaphore and a static event buffer. - * - * @param[in] pbsem The semaphore is signaled when data is available. - * @param[in] pEvent The static event buffer to place the result information. - * - * @note Passing a NULL for pbsem or pEvent will turn off signalling via this method. - * @note The audio input is capable of signalling via this method and the GEVENT - * sub-system at the same time. - * - * @api - */ -void gaudinSetBSem(gfxSem *pbsem, GEventAudioIn *pEvent); - -/** - * @brief Start the audio input conversions. - * @pre It must have been initialised first with @p gaudinInit() - * - * @api - */ -void gaudinStart(void); - -/** - * @brief Stop the audio input conversions. - * - * @api - */ -void gaudinStop(void); - -#ifdef __cplusplus -} -#endif - -#endif /* GFX_USE_GAUDIN */ - -#endif /* _GAUDIN_H */ -/** @} */ - diff --git a/src/gaudin/sys_make.mk b/src/gaudin/sys_make.mk deleted file mode 100644 index 16bb33b7..00000000 --- a/src/gaudin/sys_make.mk +++ /dev/null @@ -1 +0,0 @@ -GFXSRC += $(GFXLIB)/src/gaudin/gaudin.c diff --git a/src/gaudin/sys_options.h b/src/gaudin/sys_options.h deleted file mode 100644 index 305a6f8d..00000000 --- a/src/gaudin/sys_options.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudin/sys_options.h - * @brief GAUDIN - Audio Input subsystem options header file. - * - * @addtogroup GAUDIN - * @{ - */ - -#ifndef _GAUDIN_OPTIONS_H -#define _GAUDIN_OPTIONS_H - -/** - * @name GAUDIN Functionality to be included - * @{ - */ -/** - * @} - * - * @name GAUDIN Optional Sizing Parameters - * @{ - */ -/** @} */ - -#endif /* _GAUDIN_OPTIONS_H */ -/** @} */ diff --git a/src/gaudin/sys_rules.h b/src/gaudin/sys_rules.h deleted file mode 100644 index 21d2552f..00000000 --- a/src/gaudin/sys_rules.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudin/sys_rules.h - * @brief GAUDIN safety rules header file. - * - * @addtogroup GAUDIN - * @{ - */ - -#ifndef _GAUDIN_RULES_H -#define _GAUDIN_RULES_H - -#if GFX_USE_GAUDIN - #if GFX_USE_GEVENT && !GFX_USE_GTIMER - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GAUDIN: GFX_USE_GTIMER is required if GFX_USE_GAUDIN and GFX_USE_GEVENT are TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GTIMER - #define GFX_USE_GTIMER TRUE - #endif -#endif - -#endif /* _GAUDIN_RULES_H */ -/** @} */ diff --git a/src/gaudio/driver_play.h b/src/gaudio/driver_play.h new file mode 100644 index 00000000..72ad4747 --- /dev/null +++ b/src/gaudio/driver_play.h @@ -0,0 +1,126 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudio/driver_play.h + * @brief GAUDIO - Audio play driver header file. + * + * @defgroup Driver Driver + * @ingroup GAUDIO + * @{ + */ + +#ifndef _GAUDIO_PLAY_LLD_H +#define _GAUDIO_PLAY_LLD_H + +#include "gfx.h" + +#if (GFX_USE_GAUDIO && GAUDIO_NEED_PLAY) || defined(__DOXYGEN__) + +/*===========================================================================*/ +/* Type definitions */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Get a block of audio data to play + * @return A pointer to the GAaudioData structure or NULL if none is currently available + * + * @note Defined in the high level GAUDIO code for use by the GAUDIO play drivers. + * + * @iclass + * @notapi + */ +GAudioData *gaudioPlayGetDataBlockI(void); + +/** + * @brief Release a block of audio data to the free list + * + * @param[in] paud The GAudioData block to be released. + * + * @note Defined in the high level GAUDIO code for use by the GAUDIO play drivers. + * + * @iclass + * @notapi + */ +void gaudioPlayReleaseDataBlockI(GAudioData *paud); + +/** + * @brief Signal that all playing has now stopped + * + * @note Defined in the high level GAUDIO code for use by the GAUDIO play drivers. + * + * @iclass + * @notapi + */ +void gaudioPlayDoneI(void); + +/** + * @brief Initialise the play driver + * @return TRUE if the channel, frequency and format are valid. + * + * @param[in] channel The channel to use (see the driver for the available channels provided) + * @param[in] frequency The sample frequency to use + * @param[in] format The sample format + * + * @note The driver will always have been stopped and de-init before this is called. + * + * @api + */ +bool_t gaudio_play_lld_init(uint16_t channel, uint32_t frequency, ArrayDataFormat format); + +/** + * @brief Start the audio output playing + * + * @note This may be called at any stage including while the driver + * is already playing. The driver should check for data blocks + * to play using @p gaudioPlayGetDataBlockI(). + * + * @api + */ +void gaudio_play_lld_start(void); + +/** + * @brief Stop the audio output playing. + * + * @note Some drivers may only stop playing at a data block boundary. + * @note It is possible but unlikely for it to be called when playing has already stopped. + * @note It should not return until all active buffers (currently in use by the driver) + * have been returned to the free-list and @p gaudioPlayDoneI() has been called. + * + * @api + */ +void gaudio_play_lld_stop(void); + +/** + * @brief Set the output volume. + * @return TRUE if successful. + * + * @param[in] 0->255 (0 = muted) + * + * @note Some drivers may not support this. They will return FALSE. + * @note For stereo devices, both channels are set to the same volume. + * + * @api + */ +bool_t gaudio_play_lld_set_volume(uint8_t vol); + +#ifdef __cplusplus +} +#endif + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_PLAY */ + +#endif /* _GAUDIO_PLAY_LLD_H */ +/** @} */ diff --git a/src/gaudio/driver_record.h b/src/gaudio/driver_record.h new file mode 100644 index 00000000..252cae5c --- /dev/null +++ b/src/gaudio/driver_record.h @@ -0,0 +1,108 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudio/driver_record.h + * @brief GAUDIO - Audio Recording driver header file. + * + * @defgroup Driver Driver + * @ingroup GAUDIO + * @{ + */ + +#ifndef _GAUDIO_RECORD_LLD_H +#define _GAUDIO_RECORD_LLD_H + +#include "gfx.h" + +#if (GFX_USE_GAUDIO && GAUDIO_NEED_RECORD) || defined(__DOXYGEN__) + +/*===========================================================================*/ +/* Type definitions */ +/*===========================================================================*/ + +/** + * @brief Get a free block of audio data that we can record into + * @return A pointer to the GAaudioData structure or NULL if none is currently available + * + * @note Defined in the high level GAUDIO code for use by the GAUDIO record drivers. + * + * @iclass + * @notapi + */ +GAudioData *gaudioRecordGetFreeBlockI(void); + +/** + * @brief Save a block of recorded audio data ready for the application + * + * @param[in] paud The GAudioData block with data. + * + * @note Defined in the high level GAUDIO code for use by the GAUDIO record drivers. + * + * @iclass + * @notapi + */ +void gaudioRecordSaveDataBlockI(GAudioData *paud); + +/** + * @brief Signal that all recording has now stopped + * + * @note Defined in the high level GAUDIO code for use by the GAUDIO record drivers. + * + * @iclass + * @notapi + */ +void gaudioRecordDoneI(void); + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Initialise the record driver + * @return TRUE if the channel, frequency and format are valid. + * + * @param[in] channel The channel to use (see the driver for the available channels provided) + * @param[in] frequency The sample frequency to use + * @param[in] format The sample format + * + * @note The driver will always have been stopped and de-init before this is called. + * + * @api + */ +bool_t gaudio_record_lld_init(uint16_t channel, uint32_t frequency, ArrayDataFormat format); + +/** + * @brief Start the audio recording + * + * @api + */ +void gaudio_record_lld_start(void); + +/** + * @brief Stop the audio recording. + * + * @note Some drivers may only stop recording at a data block boundary. + * @note This routine should not return until any currently active buffers have been + * saved (even if with zero length) and @p gaudioRecordDoneI() has been called. + * + * @api + */ +void gaudio_record_lld_stop(void); + +#ifdef __cplusplus +} +#endif + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_RECORD */ + +#endif /* _GAUDIO_RECORD_LLD_H */ +/** @} */ diff --git a/src/gaudio/gaudio.c b/src/gaudio/gaudio.c new file mode 100644 index 00000000..a83dcd85 --- /dev/null +++ b/src/gaudio/gaudio.c @@ -0,0 +1,318 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudio/gaudio.c + * @brief GAUDIO sub-system code. + * + * @addtogroup GAUDIO + * @{ + */ +#include "gfx.h" + +#if GFX_USE_GAUDIO + +static gfxQueueGSync freeList; + +#if GAUDIO_NEED_PLAY + #include "src/gaudio/driver_play.h" + + static gfxQueueASync playList; + static gfxSem playComplete; + static uint16_t playFlags; + #define PLAYFLG_USEEVENTS 0x0001 + #define PLAYFLG_PLAYING 0x0002 + #define PLAYFLG_ISINIT 0x0004 + #if GFX_USE_GEVENT + static GTimer playTimer; + static void PlayTimerCallback(void *param); + #endif +#endif + +#if GAUDIO_NEED_RECORD + #include "src/gaudio/driver_record.h" + + static gfxQueueGSync recordList; + static uint16_t recordFlags; + #define RECORDFLG_USEEVENTS 0x0001 + #define RECORDFLG_RECORDING 0x0002 + #define RECORDFLG_STALLED 0x0004 + #define RECORDFLG_ISINIT 0x0008 + #if GFX_USE_GEVENT + static GTimer recordTimer; + static void RecordTimerCallback(void *param); + #endif +#endif + + +void _gaudioInit(void) +{ + gfxQueueGSyncInit(&freeList); + #if GAUDIO_NEED_PLAY + gfxQueueASyncInit(&playList); + #if GFX_USE_GEVENT + gtimerInit(&playTimer); + #endif + gfxSemInit(&playComplete, 0, 0); + #endif + #if GAUDIO_NEED_RECORD + gfxQueueGSyncInit(&recordList); + #if GFX_USE_GEVENT + gtimerInit(&recordTimer); + #endif + #endif +} + +void _gaudioDeinit(void) +{ + #if GAUDIO_NEED_PLAY + #if GFX_USE_GEVENT + gtimerDeinit(&playTimer); + #endif + gfxSemDestroy(&playComplete); + #endif + #if GAUDIO_NEED_RECORD + #if GFX_USE_GEVENT + gtimerDeinit(&recordTimer); + #endif + #endif +} + +bool_t gaudioAllocBuffers(unsigned num, size_t size) { + GAudioData *paud; + + if (num < 1) + return FALSE; + + // Round up to a multiple of 4 to prevent problems with structure alignment + size = (size + 3) & ~0x03; + + // Allocate the memory + if (!(paud = gfxAlloc((size+sizeof(GAudioData)) * num))) + return FALSE; + + // Add each of them to our free list + for(;num--; paud = (GAudioData *)((char *)(paud+1)+size)) { + paud->size = size; + gfxQueueGSyncPut(&freeList, (gfxQueueGSyncItem *)paud); + } + + return TRUE; +} + +void gaudioReleaseBuffer(GAudioData *paud) { + gfxQueueGSyncPut(&freeList, (gfxQueueGSyncItem *)paud); +} + +GAudioData *gaudioGetBuffer(delaytime_t ms) { + return (GAudioData *)gfxQueueGSyncGet(&freeList, ms); +} + +#if GAUDIO_NEED_PLAY + + bool_t gaudioPlayInit(uint16_t channel, uint32_t frequency, ArrayDataFormat format) { + gaudioPlayStop(); + playFlags &= ~PLAYFLG_ISINIT; + if (!gaudio_play_lld_init(channel, frequency, format)) + return FALSE; + playFlags |= PLAYFLG_ISINIT; + return TRUE; + } + + void gaudioPlay(GAudioData *paud) { + if (!(playFlags & PLAYFLG_ISINIT)) { + // Oops - init failed - return it directly to the free-list + if (paud) { + gfxQueueGSyncPut(&freeList, (gfxQueueGSyncItem *)paud); + gfxYield(); // Make sure we get no endless cpu hogging loops + } + return; + } + + if (paud) + gfxQueueASyncPut(&playList, (gfxQueueASyncItem *)paud); + playFlags |= PLAYFLG_PLAYING; + gaudio_play_lld_start(); + } + + void gaudioPlayPause(void) { + if ((playFlags & (PLAYFLG_ISINIT|PLAYFLG_PLAYING)) == (PLAYFLG_ISINIT|PLAYFLG_PLAYING)) + gaudio_play_lld_stop(); + } + + void gaudioPlayStop(void) { + GAudioData *paud; + + if (playFlags & PLAYFLG_PLAYING) + gaudio_play_lld_stop(); + while((paud = (GAudioData *)gfxQueueASyncGet(&playList))) + gfxQueueGSyncPut(&freeList, (gfxQueueGSyncItem *)paud); + } + + bool_t gaudioPlaySetVolume(uint8_t vol) { + return gaudio_play_lld_set_volume(vol); + } + + bool_t gaudioPlayWait(delaytime_t ms) { + if (!(playFlags & PLAYFLG_PLAYING)) + return TRUE; + return gfxSemWait(&playComplete, ms); + } + + #if GFX_USE_GEVENT + static void PlayTimerCallback(void *param) { + (void) param; + GSourceListener *psl; + GEventAudioPlay *pe; + + psl = 0; + while ((psl = geventGetSourceListener((GSourceHandle)&playTimer, psl))) { + if (!(pe = (GEventAudioPlay *)geventGetEventBuffer(psl))) { + // This listener is missing - save this. + psl->srcflags |= GAUDIO_PLAY_LOSTEVENT; + continue; + } + + pe->type = GEVENT_AUDIO_PLAY; + pe->flags = psl->srcflags; + psl->srcflags = 0; + if ((playFlags & PLAYFLG_PLAYING)) + pe->flags |= GAUDIO_PLAY_PLAYING; + if (!gfxQueueGSyncIsEmpty(&freeList)) + pe->flags |= GAUDIO_PLAY_FREEBLOCK; + geventSendEvent(psl); + } + } + + GSourceHandle gaudioPlayGetSource(void) { + if (!gtimerIsActive(&playTimer)) + gtimerStart(&playTimer, PlayTimerCallback, 0, TRUE, TIME_INFINITE); + playFlags |= PLAYFLG_USEEVENTS; + return (GSourceHandle)&playTimer; + } + #endif + + /** + * Routines provided for use by drivers. + */ + + GAudioData *gaudioPlayGetDataBlockI(void) { + return (GAudioData *)gfxQueueASyncGetI(&playList); + } + + void gaudioPlayReleaseDataBlockI(GAudioData *paud) { + gfxQueueGSyncPutI(&freeList, (gfxQueueGSyncItem *)paud); + #if GFX_USE_GEVENT + if (playFlags & PLAYFLG_USEEVENTS) + gtimerJabI(&playTimer); + #endif + } + + void gaudioPlayDoneI(void) { + playFlags &= ~PLAYFLG_PLAYING; + #if GFX_USE_GEVENT + if (playFlags & PLAYFLG_USEEVENTS) + gtimerJabI(&playTimer); + #endif + gfxSemSignalI(&playComplete); // This should really be gfxSemSignalAllI(&playComplete); + } +#endif + +#if GAUDIO_NEED_RECORD + bool_t gaudioRecordInit(uint16_t channel, uint32_t frequency, ArrayDataFormat format) { + gaudioRecordStop(); + recordFlags &= ~RECORDFLG_ISINIT; + if (!gaudio_record_lld_init(channel, frequency, format)) + return FALSE; + recordFlags |= RECORDFLG_ISINIT; + return TRUE; + } + + void gaudioRecordStart(void) { + if (!(recordFlags & RECORDFLG_ISINIT)) + return; // Oops - init failed + + recordFlags |= RECORDFLG_RECORDING; + recordFlags &= ~RECORDFLG_STALLED; + gaudio_record_lld_start(); + } + + void gaudioRecordStop(void) { + GAudioData *paud; + + if ((recordFlags & (RECORDFLG_RECORDING|RECORDFLG_STALLED)) == RECORDFLG_RECORDING) + gaudio_record_lld_stop(); + recordFlags &= ~(RECORDFLG_RECORDING|RECORDFLG_STALLED); + while((paud = (GAudioData *)gfxQueueGSyncGet(&recordList, TIME_IMMEDIATE))) + gfxQueueGSyncPut(&freeList, (gfxQueueGSyncItem *)paud); + } + + GAudioData *gaudioRecordGetData(delaytime_t ms) { + return (GAudioData *)gfxQueueGSyncGet(&recordList, ms); + } + + #if GFX_USE_GEVENT + static void RecordTimerCallback(void *param) { + (void) param; + GSourceListener *psl; + GEventAudioRecord *pe; + + psl = 0; + while ((psl = geventGetSourceListener((GSourceHandle)&recordTimer, psl))) { + if (!(pe = (GEventAudioRecord *)geventGetEventBuffer(psl))) { + // This listener is missing - save this. + psl->srcflags |= GAUDIO_RECORD_LOSTEVENT; + continue; + } + pe->type = GEVENT_AUDIO_RECORD; + pe->flags = psl->srcflags; + psl->srcflags = 0; + if ((recordFlags & RECORDFLG_RECORDING)) + pe->flags |= GAUDIO_RECORD_RECORDING; + if ((recordFlags & RECORDFLG_STALLED)) + pe->flags |= GAUDIO_RECORD_STALL; + if (!gfxQueueGSyncIsEmpty(&recordList)) + pe->flags |= GAUDIO_RECORD_GOTBLOCK; + geventSendEvent(psl); + } + } + + GSourceHandle gaudioRecordGetSource(void) { + if (!gtimerIsActive(&recordTimer)) + gtimerStart(&recordTimer, RecordTimerCallback, 0, TRUE, TIME_INFINITE); + recordFlags |= RECORDFLG_USEEVENTS; + return (GSourceHandle)&recordTimer; + } + #endif + + /** + * Routines provided for use by drivers. + */ + + GAudioData *gaudioRecordGetFreeBlockI(void) { + return (GAudioData *)gfxQueueGSyncGetI(&freeList); + } + + void gaudioRecordSaveDataBlockI(GAudioData *paud) { + gfxQueueGSyncPutI(&recordList, (gfxQueueGSyncItem *)paud); + #if GFX_USE_GEVENT + if (recordFlags & RECORDFLG_USEEVENTS) + gtimerJabI(&recordTimer); + #endif + } + + void gaudioRecordDoneI(void) { + recordFlags |= RECORDFLG_STALLED; + #if GFX_USE_GEVENT + if (recordFlags & RECORDFLG_USEEVENTS) + gtimerJabI(&recordTimer); + #endif + } +#endif + +#endif /* GFX_USE_GAUDIO */ +/** @} */ diff --git a/src/gaudio/sys_defs.h b/src/gaudio/sys_defs.h new file mode 100644 index 00000000..a9a951b7 --- /dev/null +++ b/src/gaudio/sys_defs.h @@ -0,0 +1,340 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudio/sys_defs.h + * + * @addtogroup GAUDIO + * + * @brief Module to handle audio recording and play-back + * + * @{ + */ + +#ifndef _GAUDIO_H +#define _GAUDIO_H + +#include "gfx.h" + +#if GFX_USE_GAUDIO || defined(__DOXYGEN__) + +/* Include the driver defines */ +#if GAUDIO_NEED_PLAY + #include "gaudio_play_config.h" +#endif +#if GAUDIO_NEED_RECORD + #include "gaudio_record_config.h" +#endif + +/*===========================================================================*/ +/* Type definitions */ +/*===========================================================================*/ + +/** + * @brief Contains Audio Data Samples + * @note This structure is followed immediately by the sample data itself. + * When allocating the buffers for the sample data put this structure + * at the beginning of the buffer. + */ +typedef struct GAudioData { + gfxQueueASyncItem next; // @< Used for queuing the buffers + size_t size; // @< The size of the buffer area following this structure (in bytes) + size_t len; // @< The length of the data in the buffer area (in bytes) +} GAudioData; + + +// Event types for GAUDIO +#define GEVENT_AUDIO_PLAY (GEVENT_GAUDIO_FIRST+0) +#define GEVENT_AUDIO_RECORD (GEVENT_GAUDIO_FIRST+1) + +#if GFX_USE_GEVENT || defined(__DOXYGEN__) + /** + * @brief The Audio play event structure. + * @{ + */ + typedef struct GEventAudioPlay_t { + /** + * @brief The type of this event (GEVENT_AUDIO_PLAY) + */ + GEventType type; + /** + * @brief The event flags + */ + uint16_t flags; + /** + * @brief The event flag values. + * @{ + */ + #define GAUDIO_PLAY_LOSTEVENT 0x0001 /**< @brief The last GEVENT_AUDIO_PLAY event was lost */ + #define GAUDIO_PLAY_PLAYING 0x0002 /**< @brief The audio out system is currently playing */ + #define GAUDIO_PLAY_FREEBLOCK 0x0004 /**< @brief An audio buffer has been freed */ + /** @} */ + } GEventAudioPlay; + /** @} */ + + /** + * @brief The Audio record event structure. + * @{ + */ + typedef struct GEventAudioRecord_t { + /** + * @brief The type of this event (GEVENT_AUDIO_RECORD) + */ + GEventType type; + /** + * @brief The event flags + */ + uint16_t flags; + /** + * @brief The event flag values. + * @{ + */ + #define GAUDIO_RECORD_LOSTEVENT 0x0001 /**< @brief The last GEVENT_AUDIO_IN event was lost */ + #define GAUDIO_RECORD_RECORDING 0x0002 /**< @brief The audio recording system is currently recording */ + #define GAUDIO_RECORD_GOTBLOCK 0x0004 /**< @brief An audio buffer is ready for processing */ + #define GAUDIO_RECORD_STALL 0x0008 /**< @brief The recording process has stalled due to no free buffers */ + /** @} */ + } GEventAudioRecord; + /** @} */ +#endif + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Allocate some audio buffers and put them on the free list + * @return TRUE is it succeeded. FALSE on allocation failure. + * + * @param[in] num The number of buffers to allocate + * @param[in] size The size (in bytes) of each buffer + * + * @api + */ +bool_t gaudioAllocBuffers(unsigned num, size_t size); + +/** + * @brief Get an audio buffer from the free list + * @return A GAudioData pointer or NULL if the timeout is exceeded + * + * @params[in] ms The maximum amount of time in milliseconds to wait for a buffer if one is not available. + * + * @api + */ +GAudioData *gaudioGetBuffer(delaytime_t ms); + +/** + * @brief Release a buffer back to the free list + * + * @param[in] paud The buffer to put (back) on the free-list. + * + * @note This call should be used to return any buffers that were taken from + * the free-list once they have been finished with. It can also be used + * to put new buffers onto the free-list. Just make sure the "size" field + * of the GAudioData structure has been filled in first. + * + * @api + */ +void gaudioReleaseBuffer(GAudioData *paud); + +#if GAUDIO_NEED_PLAY || defined(__DOXYGEN__) + /** + * @brief Set the audio device to play on the specified channel and with the specified + * sample frequency. + * @return TRUE is successful, FALSE if the driver doesn't accept those parameters. + * + * @param[in] channel The audio output channel to use. Can be set from 0 to GAUDIO_PLAY_NUM_CHANNELS - 1 + * @param[in] frequency The audio sample rate in samples per second + * @param[in] format The audio sample format + * + * @note Some channels are mono, and some are stereo. See your driver config file + * to determine which channels to use and whether they are stereo or not. + * @note Only one channel can be playing at a time. Calling this will stop any + * currently playing channel. + * + * @api + */ + bool_t gaudioPlayInit(uint16_t channel, uint32_t frequency, ArrayDataFormat format); + + /** + * @brief Play the specified sample data. + * @details The sample data is output to the audio channel. On completion the buffer is returned to the free-list. + * @pre @p gaudioPlayInit must have been called first to set the channel and sample frequency. + * + * @param[in] paud The audio sample buffer to play. It can be NULL (used to restart paused audio) + * + * @note Calling this will cancel any pause. + * @note Before calling this function the len field of the GAudioData structure must be + * specified (in bytes). + * @note For stereo channels the sample data is interleaved in the buffer. + * @note This call returns before the data has completed playing. Subject to available buffers (which + * can be obtained from the free-list), any number of buffers may be played. They will be queued + * for playing in the order they are supplied to this routine and played when previous buffers are + * complete. In this way continuous playing can be obtained without audio gaps. + * + * @api + */ + void gaudioPlay(GAudioData *paud); + + /** + * @brief Pause any currently playing sounds. + * + * @note If nothing is currently playing this routine does nothing. To restart playing call @p gaudioPlay() + * with or without a new sample buffer. + * @note Some drivers will not respond until a buffer boundary. + * + * @api + */ + void gaudioPlayPause(void); + + /** + * @brief Stop any currently playing sounds. + * + * @note This stops any playing sounds and returns any currently queued buffers back to the free-list. + * @note Some drivers will not respond until a buffer boundary. + * + * @api + */ + void gaudioPlayStop(void); + + /** + * @brief Set the output volume. + * @return TRUE if successful. + * + * @param[in] 0->255 (0 = muted) + * + * @note Some drivers may not support this. They will return FALSE. + * @note For stereo devices, both channels are set to the same volume. + * + * @api + */ + bool_t gaudioPlaySetVolume(uint8_t vol); + + #if GFX_USE_GEVENT || defined(__DOXYGEN__) + /** + * @brief Turn on sending results to the GEVENT sub-system. + * @details Returns a GSourceHandle to listen for GEVENT_AUDIO_OUT events. + * + * @note The audio output will not use the GEVENT system unless this is + * called first. This saves processing time if the application does + * not want to use the GEVENT sub-system for audio output. + * Once turned on it can only be turned off by calling @p gaudioPlayInit() again. + * @note The audio output is capable of signaling via this method and other methods + * at the same time. + * + * @return The GSourceHandle + * + * @api + */ + GSourceHandle gaudioPlayGetSource(void); + #endif + + /** + * @brief Wait for any currently playing sounds to complete + * @return TRUE if there is now nothing playing or FALSE if the timeout is exceeded + * + * @params[in] ms The maximum amount of time in milliseconds to wait for playing to complete. + * + * @api + */ + bool_t gaudioPlayWait(delaytime_t ms); +#endif + +#if GAUDIO_NEED_RECORD || defined(__DOXYGEN__) + /** + * @brief Initialise (but not start) the Audio Recording sub-system. + * @details Returns FALSE for an invalid channel or other invalid parameter. + * + * @param[in] channel The channel to convert. Can be set from 0 to GAUDIO_RECORD_NUM_CHANNELS - 1 + * @param[in] frequency The sample frequency + * @param[in] format The audio sample format requested + * + * @note Only one channel is active at a time. If an audio input is running it will be stopped. + * The Event subsystem is disconnected from the audio subsystem and any binary semaphore + * event is forgotten. + * @note Some channels may be stereo channels which return twice as much sample data with + * the left and right channel data interleaved. Other channels may be mono channels. + * Where stereo channels exist the low level driver may also + * offer the left and right channels separately. + * @note Due to a bug in Chibi-OS each buffer on the free-list must contain an even number of + * samples and for stereo devices it must hold a number of samples that is evenly divisible by 4. + * This requirement applies only to ChibiOS where the audio driver uses + * a ChibiOS hal driver like the cpu ADC driver. This applies even it is used indirectly via + * the uGFX GADC driver. + * @note The number of samples for stereo devices will be double the number of conversions. + * Make sure you allocate your buffers large enough. Each channel is then interleaved + * into the provided buffer. + * + * @return FALSE if invalid channel or parameter + * + * @api + */ + bool_t gaudioRecordInit(uint16_t channel, uint32_t frequency, ArrayDataFormat format); + + /** + * @brief Start the audio recording. + * @pre It must have been initialised first with @p gaudioRecordInit() + * + * @api + */ + void gaudioRecordStart(void); + + /** + * @brief Stop the audio recording. + * + * @note All audio recording data that has not yet been retrieved is automatically + * returned to the free-list. + * @api + */ + void gaudioRecordStop(void); + + /** + * @brief Get a filled audio buffer from the recording list + * @return A GAudioData pointer or NULL if the timeout is exceeded + * + * @params[in] ms The maximum amount of time in milliseconds to wait for data if some is not currently available. + * + * @note After processing the audio data, your application must return the buffer to the free-list so that + * it can be used to record more audio into. This can be done via the play list using @p gaudioPlay() or + * directly using @p gaudioReleaseBuffer(). + * @api + */ + GAudioData *gaudioRecordGetData(delaytime_t ms); + + #if GFX_USE_GEVENT || defined(__DOXYGEN__) + /** + * @brief Turn on sending results to the GEVENT sub-system. + * @details Returns a GSourceHandle to listen for GEVENT_AUDIO_RECORD events. + * + * @note Audio recording will not use the GEVENT system unless this is + * called first. This saves processing time if the application does + * not want to use the GEVENT sub-system for audio recording. + * Once turned on it can only be turned off by calling @p gaudioRecordInit() again. + * @note The audio input is capable of signaling via this and other methods + * at the same time. + * + * @return The GSourceHandle + * + * @api + */ + GSourceHandle gaudioRecordGetSource(void); + #endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* GFX_USE_GAUDIO */ + +#endif /* _GAUDIO_H */ +/** @} */ + diff --git a/src/gaudio/sys_make.mk b/src/gaudio/sys_make.mk new file mode 100644 index 00000000..438892c0 --- /dev/null +++ b/src/gaudio/sys_make.mk @@ -0,0 +1 @@ +GFXSRC += $(GFXLIB)/src/gaudio/gaudio.c diff --git a/src/gaudio/sys_options.h b/src/gaudio/sys_options.h new file mode 100644 index 00000000..1363d703 --- /dev/null +++ b/src/gaudio/sys_options.h @@ -0,0 +1,44 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudio/sys_options.h + * @brief GAUDIO - Audio subsystem options header file. + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef _GAUDIO_OPTIONS_H +#define _GAUDOUT_OPTIONS_H + +/** + * @name GAUDIO Functionality to be included + * @{ + */ + /** + * @brief Audio Play capability is needed + */ + #ifndef GAUDIO_NEED_PLAY + #define GAUDIO_NEED_PLAY FALSE + #endif + /** + * @brief Audio Recording capability is needed + */ + #ifndef GAUDIO_NEED_RECORD + #define GAUDIO_NEED_RECORD FALSE + #endif +/** + * @} + * + * @name GAUDIO Optional Sizing Parameters + * @{ + */ +/** @} */ + +#endif /* _GAUDIO_OPTIONS_H */ +/** @} */ diff --git a/src/gaudio/sys_rules.h b/src/gaudio/sys_rules.h new file mode 100644 index 00000000..a3f0dffc --- /dev/null +++ b/src/gaudio/sys_rules.h @@ -0,0 +1,54 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file src/gaudio/sys_rules.h + * @brief GAUDIO safety rules header file. + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef _GAUDIO_RULES_H +#define _GAUDIO_RULES_H + +#if GFX_USE_GAUDIO + #if !GAUDIO_NEED_PLAY && !GAUDIO_NEED_RECORD + #error "GAUDIO: GAUDIO_NEED_PLAY and/or GAUDIO_NEED_RECORD is required if GFX_USE_GAUDIO is TRUE" + #endif + #if !GFX_USE_GQUEUE + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GAUDIO: GFX_USE_GQUEUE is required if GFX_USE_GAUDIO is TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GQUEUE + #define GFX_USE_GQUEUE TRUE + #endif + #if !GQUEUE_NEED_ASYNC + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GAUDIO: GQUEUE_NEED_ASYNC is required if GFX_USE_GAUDIO is TRUE. It has been turned on for you." + #endif + #undef GQUEUE_NEED_ASYNC + #define GQUEUE_NEED_ASYNC TRUE + #endif + #if !GQUEUE_NEED_GSYNC + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GAUDIO: GQUEUE_NEED_GSYNC is required if GFX_USE_GAUDIO is TRUE. It has been turned on for you." + #endif + #undef GQUEUE_NEED_GSYNC + #define GQUEUE_NEED_GSYNC TRUE + #endif + #if GFX_USE_GEVENT && !GFX_USE_GTIMER + #if GFX_DISPLAY_RULE_WARNINGS + #warning "GAUDIO: GFX_USE_GTIMER is required if GFX_USE_GAUDIO and GFX_USE_GEVENT are TRUE. It has been turned on for you." + #endif + #undef GFX_USE_GTIMER + #define GFX_USE_GTIMER TRUE + #endif +#endif + +#endif /* _GAUDIO_RULES_H */ +/** @} */ diff --git a/src/gaudout/driver.h b/src/gaudout/driver.h deleted file mode 100644 index bd00d06d..00000000 --- a/src/gaudout/driver.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudout/driver.h - * @brief GAUDOUT - Audio Output driver header file. - * - * @defgroup Driver Driver - * @ingroup GAUDOUT - * @{ - */ - -#ifndef _GAUDOUT_LLD_H -#define _GAUDOUT_LLD_H - -#include "gfx.h" - -#if GFX_USE_GAUDOUT || defined(__DOXYGEN__) - -/*===========================================================================*/ -/* Type definitions */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Get a block of audio data to play - * @return A pointer to the GAaudioData structure or NULL if none is currently available - * - * @note Defined in the high level GAUDOUT code for use by the GAUDOUT drivers. - * - * @iclass - * @notapi - */ -GAudioData *gaudoutGetDataBlockI(void); - -/** - * @brief Release a block of audio data after playing - * - * @param[in] paud The GAudioData block to be released. - * - * @note Defined in the high level GAUDOUT code for use by the GAUDOUT drivers. - * - * @iclass - * @notapi - */ -void gaudoutReleaseDataBlockI(GAudioData *paud); - -/** - * @brief Signal that all playing has now stopped - * - * @note Defined in the high level GAUDOUT code for use by the GAUDOUT drivers. - * - * @iclass - * @notapi - */ -void gaudoutDoneI(void); - -/** - * @brief Initialise the driver - * @return TRUE if the channel and frequency are valid. - * - * @param[in] channel The channel to use (see the driver for the available channels provided) - * @param[in] frequency The sample frequency to use - * @param[in] format The sample format - * - * @note The driver will always have been stopped and de-init before this is called. - * - * @api - */ -bool_t gaudout_lld_init(uint16_t channel, uint32_t frequency, ArrayDataFormat format); - -/** - * @brief De-Initialise the driver - * - * @note The audio output will always have been stopped first by the high level layer. - * @note This may be called before a @p gaudout_lld_init() has occurred. - * - * @api - */ -void gaudout_lld_deinit(void); - -/** - * @brief Start the audio output playing - * - * @note This may be called at any stage including while the driver - * is already playing. The driver should check for data blocks - * to play using @p gaudoutGetDataBlockI(). - * - * @api - */ -void gaudout_lld_start(void); - -/** - * @brief Stop the audio output playing. - * - * @note Some drivers may only stop playing at a data block boundary. - * @note This may be called before a @p gaudout_lld_init() has occurred. - * - * @api - */ -void gaudout_lld_stop(void); - -/** - * @brief Set the output volume. - * @return TRUE if successful. - * - * @param[in] 0->255 (0 = muted) - * - * @note Some drivers may not support this. They will return FALSE. - * @note For stereo devices, both channels are set to the same volume. - * - * @api - */ -bool_t gaudout_lld_set_volume(uint8_t vol); - -#ifdef __cplusplus -} -#endif - -#endif /* GFX_USE_GAUDOUT */ - -#endif /* _GAUDOUT_LLD_H */ -/** @} */ diff --git a/src/gaudout/gaudout.c b/src/gaudout/gaudout.c deleted file mode 100644 index 00b01e91..00000000 --- a/src/gaudout/gaudout.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudout/gaudout.c - * @brief GAUDOUT sub-system code. - * - * @addtogroup GAUDOUT - * @{ - */ -#include "gfx.h" - -#if GFX_USE_GAUDOUT || defined(__DOXYGEN__) - -#include "src/gaudout/driver.h" - -static gfxQueueASync playlist; -static gfxQueueGSync freelist; - -static uint16_t PlayFlags; - #define PLAYFLG_USEEVENTS 0x0001 - #define PLAYFLG_PLAYING 0x0002 - -#if GFX_USE_GEVENT - static GTimer PlayTimer; - - static void PlayTimerCallback(void *param) { - (void) param; - GSourceListener *psl; - GEventAudioOut *pe; - - psl = 0; - while ((psl = geventGetSourceListener((GSourceHandle)(&aud), psl))) { - if (!(pe = (GEventAudioOut *)geventGetEventBuffer(psl))) { - // This listener is missing - save this. - psl->srcflags |= GAUDOUT_LOSTEVENT; - continue; - } - - pe->type = GEVENT_AUDIO_OUT; - pe->flags = psl->srcflags; - psl->srcflags = 0; - if ((PlayFlags & PLAYFLG_PLAYING)) - pe->flags |= GAUDOUT_PLAYING; - if (!gfxQueueGSyncIsEmpty(&freelist)) - pe->flags |= GAUDOUT_FREEBLOCK; - geventSendEvent(psl); - } - } -#endif - - -void _gaudoutInit(void) -{ - gfxQueueASyncInit(&playlist); - gfxQueueGSyncInit(&freelist); - #if GFX_USE_GEVENT - gtimerInit(&PlayTimer); - #endif -} - -void _gaudoutDeinit(void) -{ - /* ToDo */ - #if GFX_USE_GEVENT - gtimerDeinit(&PlayTimer); - #endif -} - -bool_t gaudioAllocBuffers(unsigned num, size_t size) { - GAudioData *paud; - - if (num < 1) - return FALSE; - - // Round up to a multiple of 4 to prevent problems with structure alignment - size = (size + 3) & ~0x03; - - // Allocate the memory - if (!(paud = gfxAlloc((size+sizeof(GAudioData)) * num))) - return FALSE; - - // Add each of them to our free list - for(;num--; paud = (GAudioData *)((char *)(paud+1)+size)) { - paud->size = size; - gfxQueueGSyncPut(&freelist, (gfxQueueGSyncItem *)paud); - } - - return TRUE; -} - -void gaudioReleaseBuffer(GAudioData *paud) { - gfxQueueGSyncPut(&freelist, (gfxQueueGSyncItem *)paud); -} - -GAudioData *gaudioGetBuffer(delaytime_t ms) { - return (GAudioData *)gfxQueueGSyncGet(&freelist, ms); -} - -bool_t gaudioPlayInit(uint16_t channel, uint32_t frequency, ArrayDataFormat format) { - gaudioPlayStop(); - gaudout_lld_deinit(); - return gaudout_lld_init(channel, frequency, format); -} - -void gaudioPlay(GAudioData *paud) { - if (paud) - gfxQueueASyncPut(&playlist, (gfxQueueASyncItem *)paud); - PlayFlags |= PLAYFLG_PLAYING; - gaudout_lld_start(); -} - -void gaudioPlayPause(void) { - gaudout_lld_stop(); -} - -void gaudioPlayStop(void) { - GAudioData *paud; - - gaudout_lld_stop(); - while((paud = (GAudioData *)gfxQueueASyncGet(&playlist))) - gfxQueueGSyncPut(&freelist, (gfxQueueGSyncItem *)paud); - PlayFlags &= ~PLAYFLG_PLAYING; -} - -bool_t gaudioPlaySetVolume(uint8_t vol) { - return gaudout_lld_set_volume(vol); -} - -#if GFX_USE_GEVENT || defined(__DOXYGEN__) - GSourceHandle gaudioPlayGetSource(void) { - if (!gtimerIsActive(&PlayTimer)) - gtimerStart(&PlayTimer, PlayTimerCallback, 0, TRUE, TIME_INFINITE); - PlayFlags |= PLAYFLG_USEEVENTS; - return (GSourceHandle)&PlayFlags; - } -#endif - -/** - * Routines provided for use by drivers. - */ - -GAudioData *gaudoutGetDataBlockI(void) { - return (GAudioData *)gfxQueueASyncGetI(&playlist); -} - -void gaudoutReleaseDataBlockI(GAudioData *paud) { - gfxQueueGSyncPutI(&freelist, (gfxQueueGSyncItem *)paud); - #if GFX_USE_GEVENT - if (PlayFlags & PLAYFLG_USEEVENTS) - gtimerJabI(&PlayTimer); - #endif -} - -void gaudoutDoneI(void) { - PlayFlags &= ~PLAYFLG_PLAYING; - #if GFX_USE_GEVENT - if (PlayFlags & PLAYFLG_USEEVENTS) - gtimerJabI(&PlayTimer); - #endif -} - -#endif /* GFX_USE_GAUDOUT */ -/** @} */ - diff --git a/src/gaudout/sys_defs.h b/src/gaudout/sys_defs.h deleted file mode 100644 index 75cda243..00000000 --- a/src/gaudout/sys_defs.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudout/sys_defs.h - * - * @addtogroup GAUDOUT - * - * @brief Module to output audio data (under development) - * - * @{ - */ - -#ifndef _GAUDOUT_H -#define _GAUDOUT_H - -#include "gfx.h" - -#if GFX_USE_GAUDOUT || defined(__DOXYGEN__) - -/* Include the driver defines */ -#include "gaudout_lld_config.h" - - -/*===========================================================================*/ -/* Type definitions */ -/*===========================================================================*/ - -/** - * @brief Contains Audio Data Samples - * @note This structure is followed immediately by the sample data itself. - * When allocating the buffers for the sample data put this structure - * at the beginning of the buffer. - */ -typedef struct GAudioData { - gfxQueueASyncItem next; // @< Used for queuing the buffers - size_t size; // @< The size of the buffer area following this structure (in bytes) - size_t len; // @< The length of the data in the buffer area (in bytes) -} GAudioData; - - -// Event types for GAUDOUT -#define GEVENT_AUDIO_OUT (GEVENT_GAUDOUT_FIRST+0) - -/** - * @brief The Audio output event structure. - * @{ - */ -typedef struct GEventAudioOut_t { - #if GFX_USE_GEVENT || defined(__DOXYGEN__) - /** - * @brief The type of this event (GEVENT_AUDIO_OUT) - */ - GEventType type; - #endif - /** - * @brief The event flags - */ - uint16_t flags; - /** - * @brief The event flag values. - * @{ - */ - #define GAUDOUT_LOSTEVENT 0x0001 /**< @brief The last GEVENT_AUDIO_OUT event was lost */ - #define GAUDOUT_PLAYING 0x0002 /**< @brief The audio out system is currently playing */ - #define GAUDOUT_FREEBLOCK 0x0004 /**< @brief An audio buffer has been freed */ - /** @} */ -} GEventAudioOut; -/** @} */ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Allocate some audio buffers and put them on the free list - * @return TRUE is it succeeded. FALSE on allocation failure. - * - * @param[in] num The number of buffers to allocate - * @param[in] size The size (in bytes) of each buffer - * - * @api - */ -bool_t gaudioAllocBuffers(unsigned num, size_t size); - -/** - * @brief Get an audio buffer from the free list - * @return A GAudioData pointer or NULL if the timeout is exceeded - * - * @params[in] ms The maximum amount of time in milliseconds to wait for a buffer if one is not available. - * - * @api - */ -GAudioData *gaudioGetBuffer(delaytime_t ms); - -/** - * @brief Release a buffer back to the free list - * - * @param[in] paud The buffer to put (back) on the free-list. - * - * @note This call should be used to return any buffers that were taken from - * the free-list once they have been finished with. It can also be used - * to put new buffers onto the free-list. Just make sure the "size" field - * of the GAudioData structure has been filled in first. - * - * @api - */ -void gaudioReleaseBuffer(GAudioData *paud); - -/** - * @brief Set the audio device to play on the specified channel and with the specified - * sample frequency. - * @return TRUE is successful, FALSE if the driver doesn't accept those parameters. - * - * @param[in] channel The audio output channel to use. - * @param[in] frequency The audio sample rate in samples per second - * @param[in] format The audio sample format - * - * @note Some channels are mono, and some are stereo. See your driver config file - * to determine which channels to use and whether they are stereo or not. - * @note Only one channel can be playing at a time. Calling this will stop any - * currently playing channel. - * - * @api - */ -bool_t gaudioPlayInit(uint16_t channel, uint32_t frequency, ArrayDataFormat format); - -/** - * @brief Play the specified sample data. - * @details The sample data is output to the audio channel. On completion the buffer is returned to the free-list. - * @pre @p gaudioPlayInit must have been called first to set the channel and sample frequency. - * - * @param[in] paud The audio sample buffer to play. It can be NULL (used to restart paused audio) - * - * @note Calling this will cancel any pause. - * @note Before calling this function the len field of the GAudioData structure must be - * specified (in bytes). - * @note For stereo channels the sample data is interleaved in the buffer. - * @note This call returns before the data has completed playing. Subject to available buffers (which - * can be obtained from the free-list), any number of buffers may be played. They will be queued - * for playing in the order they are supplied to this routine and played when previous buffers are - * complete. In this way continuous playing can be obtained without audio gaps. - * - * @api - */ -void gaudioPlay(GAudioData *paud); - -/** - * @brief Pause any currently playing sounds. - * - * @note If nothing is currently playing this routine does nothing. To restart playing call @p gaudioPlay() - * with or without a new sample buffer. - * @note Some drivers will not respond until a buffer boundary. - * - * @api - */ -void gaudioPlayPause(void); - -/** - * @brief Stop any currently playing sounds. - * - * @note This stops any playing sounds and returns any currently queued buffers back to the free-list. - * @note Some drivers will not respond until a buffer boundary. - * - * @api - */ -void gaudioPlayStop(void); - -/** - * @brief Set the output volume. - * @return TRUE if successful. - * - * @param[in] 0->255 (0 = muted) - * - * @note Some drivers may not support this. They will return FALSE. - * @note For stereo devices, both channels are set to the same volume. - * - * @api - */ -bool_t gaudioPlaySetVolume(uint8_t vol); - -#if GFX_USE_GEVENT || defined(__DOXYGEN__) - /** - * @brief Turn on sending results to the GEVENT sub-system. - * @details Returns a GSourceHandle to listen for GEVENT_AUDIO_OUT events. - * - * @note The audio output will not use the GEVENT system unless this is - * called first. This saves processing time if the application does - * not want to use the GEVENT sub-system for audio output. - * Once turned on it can only be turned off by calling @p gaudioPlayInit() again. - * @note The audio output is capable of signalling via this method and other methods - * at the same time. - * - * @return The GSourceHandle - * - * @api - */ - GSourceHandle gaudioPlayGetSource(void); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* GFX_USE_GAUDOUT */ - -#endif /* _GAUDOUT_H */ -/** @} */ - diff --git a/src/gaudout/sys_make.mk b/src/gaudout/sys_make.mk deleted file mode 100644 index 14f5bac3..00000000 --- a/src/gaudout/sys_make.mk +++ /dev/null @@ -1 +0,0 @@ -GFXSRC += $(GFXLIB)/src/gaudout/gaudout.c diff --git a/src/gaudout/sys_options.h b/src/gaudout/sys_options.h deleted file mode 100644 index 929bb42a..00000000 --- a/src/gaudout/sys_options.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudout/sys_options.h - * @brief GAUDOUT - Audio Output subsystem options header file. - * - * @addtogroup GAUDOUT - * @{ - */ - -#ifndef _GAUDOUT_OPTIONS_H -#define _GAUDOUT_OPTIONS_H - -/** - * @name GAUDOUT Functionality to be included - * @{ - */ -/** - * @} - * - * @name GAUDOUT Optional Sizing Parameters - * @{ - */ -/** @} */ - -#endif /* _GAUDOUT_OPTIONS_H */ -/** @} */ diff --git a/src/gaudout/sys_rules.h b/src/gaudout/sys_rules.h deleted file mode 100644 index 8274e031..00000000 --- a/src/gaudout/sys_rules.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/gaudout/sys_rules.h - * @brief GAUDOUT safety rules header file. - * - * @addtogroup GAUDOUT - * @{ - */ - -#ifndef _GAUDOUT_RULES_H -#define _GAUDOUT_RULES_H - -#if GFX_USE_GAUDOUT - #if !GFX_USE_GQUEUE - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GAUDOUT: GFX_USE_GQUEUE is required if GFX_USE_GAUDOUT is TRUE. It has been turned on for you." - #endif - #undef GFX_USE_GQUEUE - #define GFX_USE_GQUEUE TRUE - #endif - #if !GQUEUE_NEED_ASYNC - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GAUDOUT: GQUEUE_NEED_ASYNC is required if GFX_USE_GAUDOUT is TRUE. It has been turned on for you." - #endif - #undef GQUEUE_NEED_ASYNC - #define GQUEUE_NEED_ASYNC TRUE - #endif - #if !GQUEUE_NEED_GSYNC - #if GFX_DISPLAY_RULE_WARNINGS - #warning "GAUDOUT: GQUEUE_NEED_GSYNC is required if GFX_USE_GAUDOUT is TRUE. It has been turned on for you." - #endif - #undef GQUEUE_NEED_GSYNC - #define GQUEUE_NEED_GSYNC TRUE - #endif -#endif - -#endif /* _GAUDOUT_RULES_H */ -/** @} */ diff --git a/src/gevent/sys_defs.h b/src/gevent/sys_defs.h index 0e656145..c50dc5ae 100644 --- a/src/gevent/sys_defs.h +++ b/src/gevent/sys_defs.h @@ -38,8 +38,7 @@ typedef uint16_t GEventType; #define GEVENT_GINPUT_FIRST 0x0100 // GINPUT events range from 0x0100 to 0x01FF #define GEVENT_GWIN_FIRST 0x0200 // GWIN events range from 0x0200 to 0x02FF #define GEVENT_GADC_FIRST 0x0300 // GADC events range from 0x0300 to 0x033F - #define GEVENT_GAUDIN_FIRST 0x0340 // GAUDIN events range from 0x0340 to 0x037F - #define GEVENT_GAUDOUT_FIRST 0x0380 // GAUDOUT events range from 0x0380 to 0x03BF + #define GEVENT_GAUDIO_FIRST 0x0340 // GAUDIO events range from 0x0340 to 0x037F #define GEVENT_USER_FIRST 0x8000 // Any application defined events start at 0x8000 // This object can be typecast to any GEventXxxxx type to allow any sub-system (or the application) to create events. diff --git a/src/gfx.c b/src/gfx.c index d01d3b1f..8e92fc29 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -44,13 +44,9 @@ extern void _gosDeinit(void); extern void _gadcInit(void); extern void _gadcDeinit(void); #endif -#if GFX_USE_GAUDIN - extern void _gaudinInit(void); - extern void _gaudinDeinit(void); -#endif -#if GFX_USE_GAUDOUT - extern void _gaudoutInit(void); - extern void _gaudoutDeinit(void); +#if GFX_USE_GAUDIO + extern void _gaudioInit(void); + extern void _gaudioDeinit(void); #endif #if GFX_USE_GMISC extern void _gmiscInit(void); @@ -88,11 +84,8 @@ void gfxInit(void) #if GFX_USE_GADC _gadcInit(); #endif - #if GFX_USE_GAUDIN - _gaudinInit(); - #endif - #if GFX_USE_GAUDOUT - _gaudoutInit(); + #if GFX_USE_GAUDIO + _gaudioInit(); #endif } @@ -103,11 +96,8 @@ void gfxDeinit(void) initDone = FALSE; // We deinitialise the opposite way as we initialised - #if GFX_USE_GAUDOUT - _gaudoutDeinit(); - #endif #if GFX_USE_GAUDIN - _gaudinDeinit(); + _gaudioDeinit(); #endif #if GFX_USE_GADC _gadcDeinit(); -- cgit v1.2.3