diff options
| author | Wiimm <wiimm@wiimm.de> | 2024-02-17 11:45:01 +0100 |
|---|---|---|
| committer | Wiimm <wiimm@wiimm.de> | 2024-02-17 11:45:01 +0100 |
| commit | 685554b2c272fdefc23bb1d237c059b52ab5fc58 (patch) | |
| tree | 9e0e7ff41f688bdc07fdb7869fc0258725197bcf | |
| parent | ac9a0b25eaffaa05e5431a8527dab8649ef6504f (diff) | |
SZS v2.41a
Diffstat (limited to '')
87 files changed, 5724 insertions, 3676 deletions
diff --git a/project/Makefile b/project/Makefile index 93e5fe3..ea0e553 100644 --- a/project/Makefile +++ b/project/Makefile @@ -57,7 +57,7 @@ WPATT_LONG = Wiimms PAT Tool WSTRT_SHORT = wstrt WSTRT_LONG = Wiimms StaticR Tool -VERSION_NUM = 2.40b +VERSION_NUM = 2.41a BETA_VERSION = 0 # 0:off -1:"beta" >0:"beta#" diff --git a/project/dclib/dclib-basics.c b/project/dclib/dclib-basics.c index bcf1012..094c189 100644 --- a/project/dclib/dclib-basics.c +++ b/project/dclib/dclib-basics.c @@ -2466,6 +2466,17 @@ void ResetFastBuf ( FastBuf_t *fb ) /////////////////////////////////////////////////////////////////////////////// +int SetFastBufLen ( FastBuf_t *fb, uint max_size ) +{ + DASSERT(fb); + const uint cur_len = GetFastBufLen(fb); + if ( max_size < cur_len ) + fb->ptr = fb->buf + max_size; + return GetFastBufLen(fb); +} + +/////////////////////////////////////////////////////////////////////////////// + ccp GetFastBufStatus ( const FastBuf_t *fb ) { char info[100]; diff --git a/project/dclib/dclib-basics.h b/project/dclib/dclib-basics.h index 5e6edc9..dd56ecb 100644 --- a/project/dclib/dclib-basics.h +++ b/project/dclib/dclib-basics.h @@ -2043,10 +2043,14 @@ FastBuf_t; FastBuf_t * InitializeFastBuf ( void * mem, uint size ); FastBuf_t * InitializeFastBufAlloc ( FastBuf_t *fb, uint size ); -void ResetFastBuf ( FastBuf_t *fb ); +void ResetFastBuf ( FastBuf_t *fb ); static inline void ClearFastBuf ( FastBuf_t *fb ) { DASSERT(fb); fb->ptr = fb->buf; } +int SetFastBufLen ( FastBuf_t *fb, uint max_size ); +static inline int GetFastBufLen ( const FastBuf_t *fb ) + { DASSERT(fb); return fb->ptr - fb->buf; } + ccp GetFastBufStatus ( const FastBuf_t *fb ); int ReserveSpaceFastBuf ( FastBuf_t *fb, uint size ); char * GetSpaceFastBuf ( FastBuf_t *fb, uint size ); @@ -2083,9 +2087,6 @@ static inline void AppendU32FastBuf ( FastBuf_t *fb, u32 num ) static inline void AppendU64FastBuf ( FastBuf_t *fb, u64 num ) { AppendFastBuf(fb,&num,sizeof(num)); } -static inline int GetFastBufLen ( const FastBuf_t *fb ) - { DASSERT(fb); return fb->ptr - fb->buf; } - //----------------------------------------------------------------------------- // The resulting strings of GetFastBufString() and GetFastBufMem0() are always // terminated by an additional NULL byte. @@ -2844,10 +2845,14 @@ typedef enum CharMode_t // select encodig/decoding method CHMD_UTF8 = 0x01, // UTF8 support enabled (compatible with legacy bool) CHMD_ESC = 0x02, // escape ESC by \e CHMD_PIPE = 0x04, // escape pipes '|' to '\!' - CHMD_IF_REQUIRED = 0x08, // check for special chars and encode only if required - CHMD__ALL = 0x0f, + CHMD_SH = 0x08, // escape for sh '...' => use "'" for ' + CHMD_BASH = 0x10, // escape for bash $'...': \ ' " (ignore CHMD_SH) + CHMD_IF_REQUIRED = 0x20, // check for special chars and encode only if required + CHMD__ALL = 0x3f, CHMD__MODERN = CHMD_UTF8 | CHMD_ESC, + CHMD__SH = CHMD_UTF8 | CHMD_ESC | CHMD_SH, + CHMD__BASH = CHMD_UTF8 | CHMD_ESC | CHMD_BASH, CHMD__PIPE8 = CHMD__MODERN | CHMD_PIPE | CHMD_IF_REQUIRED, } __attribute__ ((packed)) CharMode_t; @@ -3554,6 +3559,7 @@ typedef int (*KeywordListFuncKey) ); //----------------------------------------------------------------------------- +// [[KeyListParam_t]] typedef struct KeyListParam_t { @@ -4479,72 +4485,6 @@ enumError ScanSizeOptU32 /////////////////////////////////////////////////////////////////////////////// /////////////// time & timer /////////////// /////////////////////////////////////////////////////////////////////////////// - -//--- conversion factors - -#define SEC_PER_MIN 60 -#define SEC_PER_HOUR 3600 -#define SEC_PER_DAY 86400 -#define SEC_PER_WEEK 604800 -#define SEC_PER_MONTH 2629746 // 365.2425 * SEC_PER_DAY / 12 -#define SEC_PER_QUARTER 7889238 // 365.2425 * SEC_PER_DAY / 4 -#define SEC_PER_YEAR 31556952 // 365.2425 * SEC_PER_DAY - -#define MSEC_PER_SEC 1000ll -#define MSEC_PER_MIN (MSEC_PER_SEC*SEC_PER_MIN) -#define MSEC_PER_HOUR (MSEC_PER_SEC*SEC_PER_HOUR) -#define MSEC_PER_DAY (MSEC_PER_SEC*SEC_PER_DAY) -#define MSEC_PER_WEEK (MSEC_PER_SEC*SEC_PER_WEEK) -#define MSEC_PER_MONTH (MSEC_PER_SEC*SEC_PER_MONTH) -#define MSEC_PER_QUARTER (MSEC_PER_SEC*SEC_PER_QUARTER) -#define MSEC_PER_YEAR (MSEC_PER_SEC*SEC_PER_YEAR) - -#define USEC_PER_MSEC 1000ll -#define USEC_PER_SEC 1000000ll -#define USEC_PER_MIN (USEC_PER_SEC*SEC_PER_MIN) -#define USEC_PER_HOUR (USEC_PER_SEC*SEC_PER_HOUR) -#define USEC_PER_DAY (USEC_PER_SEC*SEC_PER_DAY) -#define USEC_PER_WEEK (USEC_PER_SEC*SEC_PER_WEEK) -#define USEC_PER_MONTH (USEC_PER_SEC*SEC_PER_MONTH) -#define USEC_PER_QUARTER (USEC_PER_SEC*SEC_PER_QUARTER) -#define USEC_PER_YEAR (USEC_PER_SEC*SEC_PER_YEAR) - -#define NSEC_PER_USEC 1000ll -#define NSEC_PER_MSEC 1000000ll -#define NSEC_PER_SEC 1000000000ll -#define NSEC_PER_MIN (NSEC_PER_SEC*SEC_PER_MIN) -#define NSEC_PER_HOUR (NSEC_PER_SEC*SEC_PER_HOUR) -#define NSEC_PER_DAY (NSEC_PER_SEC*SEC_PER_DAY) -#define NSEC_PER_WEEK (NSEC_PER_SEC*SEC_PER_WEEK) -#define NSEC_PER_MONTH (NSEC_PER_SEC*SEC_PER_MONTH) -#define NSEC_PER_QUARTER (NSEC_PER_SEC*SEC_PER_QUARTER) -#define NSEC_PER_YEAR (NSEC_PER_SEC*SEC_PER_YEAR) - - -//--- time types - -typedef uint u_sec_t; // unsigned type to store time as seconds -typedef int s_sec_t; // signed type to store time as seconds -typedef u64 u_msec_t; // unsigned type to store time as milliseconds -typedef s64 s_msec_t; // signed type to store time as milliseconds -typedef u64 u_usec_t; // unsigned type to store time as microseconds -typedef s64 s_usec_t; // signed type to store time as microseconds -typedef u64 u_nsec_t; // unsigned type to store time as nanoseconds -typedef s64 s_nsec_t; // signed type to store time as nanoseconds - - -//--- max values time types - -#define S_SEC_MAX S32_MAX -#define U_SEC_MAX U32_MAX -#define S_MSEC_MAX S64_MAX -#define U_MSEC_MAX U64_MAX -#define S_USEC_MAX S64_MAX -#define U_USEC_MAX U64_MAX -#define S_NSEC_MAX S64_MAX -#define U_NSEC_MAX U64_MAX - -//----------------------------------------------------------------------------- // [[DayTime_t]] typedef struct DayTime_t { diff --git a/project/dclib/dclib-file.c b/project/dclib/dclib-file.c index 069d932..c88569e 100644 --- a/project/dclib/dclib-file.c +++ b/project/dclib/dclib-file.c @@ -1677,7 +1677,7 @@ enumError WriteFileAt } } - noPRINT("WRITE %zx @%zx -> %zx\n",size,offset,offset+size); + PRINT0("WRITE %zx @%zx -> %zx\n",size,offset,offset+size); const size_t written = fwrite(data,1,size,F->f); if ( written != size ) return ERROR1(ERR_WRITE_FAILED,"Writing %zu bytes at offset %zu failed: %s\n", diff --git a/project/dclib/dclib-numeric.c b/project/dclib/dclib-numeric.c index 8cbff8d..7c23129 100644 --- a/project/dclib/dclib-numeric.c +++ b/project/dclib/dclib-numeric.c @@ -1245,11 +1245,18 @@ uint GetEscapeLen ) { const CharMode_t utf8 = char_mode & CHMD_UTF8; + const CharMode_t for_bash = char_mode & CHMD_BASH; + const bool for_sh = char_mode & CHMD_SH && !for_bash; const int esc_size = char_mode & CHMD_ESC ? 1 : 3; const int pipe_size = char_mode & CHMD_PIPE ? 1 : 0; if ( !source || !*source ) return 0; + + // force no-quotes for shell modes + if ( for_bash || for_sh ) + quote = 0; + ccp str = source; ccp end = src_len < 0 ? 0 : str + src_len; @@ -1262,7 +1269,7 @@ uint GetEscapeLen case 0: if (!end) return size; - size += 3; + size += for_sh ? -1 : 3; break; case '\\': @@ -1273,17 +1280,26 @@ uint GetEscapeLen case '\r': case '\t': case '\v': - size++; + if (!for_sh) + size++; break; case '\033': - size += esc_size; + if (!for_sh) + size += esc_size; break; case '|': size += pipe_size; break; + case '\'': + if (for_bash) + size += 1; + else if (for_sh) + size += 4; + break; + default: if ( ch == quote ) size++; @@ -1317,9 +1333,15 @@ char * PrintEscapedString DASSERT(buf_size>=10); const CharMode_t utf8 = char_mode & CHMD_UTF8; + const CharMode_t for_bash = char_mode & CHMD_BASH; + const bool for_sh = char_mode & CHMD_SH && !for_bash; const CharMode_t allow_e = char_mode & CHMD_ESC; const CharMode_t esc_pipe = char_mode & CHMD_PIPE; + // force no-quotes for shell modes + if ( for_bash || for_sh ) + quote = 0; + char *dest = buf; char *dest_end = dest + buf_size - 4; @@ -1339,30 +1361,38 @@ char * PrintEscapedString str--; goto eos; } - *dest++ = '\\'; - *dest++ = 'x'; - *dest++ = '0'; - *dest++ = '0'; + if (!for_sh) + { + *dest++ = '\\'; + *dest++ = 'x'; + *dest++ = '0'; + *dest++ = '0'; + } break; - case '\\': *dest++ = '\\'; *dest++ = '\\'; break; - case '\a': *dest++ = '\\'; *dest++ = 'a'; break; - case '\b': *dest++ = '\\'; *dest++ = 'b'; break; - case '\f': *dest++ = '\\'; *dest++ = 'f'; break; - case '\n': *dest++ = '\\'; *dest++ = 'n'; break; - case '\r': *dest++ = '\\'; *dest++ = 'r'; break; - case '\t': *dest++ = '\\'; *dest++ = 't'; break; - case '\v': *dest++ = '\\'; *dest++ = 'v'; break; + case '\\': if (!for_sh) *dest++ = '\\'; *dest++ = '\\'; break; + case '\a': if (!for_sh) *dest++ = '\\'; *dest++ = 'a'; break; + case '\b': if (!for_sh) *dest++ = '\\'; *dest++ = 'b'; break; + case '\f': if (!for_sh) *dest++ = '\\'; *dest++ = 'f'; break; + case '\n': if (!for_sh) *dest++ = '\\'; *dest++ = 'n'; break; + case '\r': if (!for_sh) *dest++ = '\\'; *dest++ = 'r'; break; + case '\t': if (!for_sh) *dest++ = '\\'; *dest++ = 't'; break; + case '\v': if (!for_sh) *dest++ = '\\'; *dest++ = 'v'; break; case '\033': - *dest++ = '\\'; - if (allow_e) - *dest++ = 'e'; + if (for_sh) + *dest++ = '\033'; else { - *dest++ = 'x'; - *dest++ = '1'; - *dest++ = 'B'; + *dest++ = '\\'; + if (allow_e) + *dest++ = 'e'; + else + { + *dest++ = 'x'; + *dest++ = '1'; + *dest++ = 'B'; + } } break; @@ -1376,6 +1406,24 @@ char * PrintEscapedString *dest++ = '|'; break; + case '\'': + if (for_bash) + { + *dest++ = '\\'; + *dest++ = '\''; + } + else if (for_sh) + { + *dest++ = '\''; + *dest++ = '\"'; + *dest++ = '\''; + *dest++ = '\"'; + *dest++ = '\''; + } + else + *dest++ = '\''; + break; + default: if ( ch == quote ) { @@ -9875,6 +9923,51 @@ char * PrintIP4ByMode // /////////////////////////////////////////////////////////////////////////////// +/////////////// progress helper /////////////// +/////////////////////////////////////////////////////////////////////////////// + +void StartProgress ( progress_t *pr, u_msec_t interval_msec ) +{ + DASSERT(PR); + ResetProgress(pr); + pr->interval_msec = interval_msec; + pr->start_msec = GetTimerMSec(); +} + +/////////////////////////////////////////////////////////////////////////////// + +bool CheckProgress ( progress_t *pr ) +{ + DASSERT(PR); + if ( pr->interval_msec > 0 && pr->counter != pr->last_counter ) + { + const u_msec_t now = GetTimerMSec(); + if ( now >= pr->last_log_msec + pr->interval_msec ) + { + pr->last_log_msec = now; + pr->last_counter = pr->counter; + return true; + } + } + return false; +} + +/////////////////////////////////////////////////////////////////////////////// + +bool FinalProgress ( progress_t *pr ) +{ + DASSERT(PR); + if ( pr->interval_msec > 0 && pr->counter != pr->last_counter ) + { + pr->last_log_msec = GetTimerMSec(); + pr->last_counter = pr->counter; + return true; + } + return false; +} + +// +/////////////////////////////////////////////////////////////////////////////// /////////////// CRC16 /////////////// /////////////////////////////////////////////////////////////////////////////// diff --git a/project/dclib/dclib-numeric.h b/project/dclib/dclib-numeric.h index 1ad805c..c2ddf3b 100644 --- a/project/dclib/dclib-numeric.h +++ b/project/dclib/dclib-numeric.h @@ -261,6 +261,40 @@ bool IsSameD3 ( const double *a, const double *b, int bit_diff ); // /////////////////////////////////////////////////////////////////////////////// +/////////////// progress helper /////////////// +/////////////////////////////////////////////////////////////////////////////// +// [[progress_t]] + +// [[doxygen]] +typedef struct progress_t +{ + // all times are set by GetTimerMSec() + + u_msec_t interval_msec; // 0=off, >0: minimum distance between 2 logs + u_msec_t start_msec; // start time of progress + u_msec_t last_log_msec; // time of last log + uint counter; // current counter + uint last_counter; // count at last log +} +progress_t; + +//----------------------------------------------------------------------------- + +void StartProgress ( progress_t *pr, u_msec_t interval_msec ); +bool CheckProgress ( progress_t *pr ); +bool FinalProgress ( progress_t *pr ); + +static inline void ResetProgress ( progress_t *pr ) + { DASSERT(pr); memset(pr,0,sizeof(*pr)); } + +static inline uint IncrementProgress ( progress_t *pr ) + { DASSERT(pr); return ++pr->counter; } + +static inline uint AddProgress ( progress_t *pr, uint add ) + { DASSERT(pr); return pr->counter += add; } + +// +/////////////////////////////////////////////////////////////////////////////// /////////////// 2D vector functions /////////////// /////////////////////////////////////////////////////////////////////////////// diff --git a/project/dclib/dclib-types.h b/project/dclib/dclib-types.h index 2dc2855..e14682d 100644 --- a/project/dclib/dclib-types.h +++ b/project/dclib/dclib-types.h @@ -477,6 +477,76 @@ typedef int (*qsort_r_func)( const void *, const void *, void * ); // /////////////////////////////////////////////////////////////////////////////// +/////////////// time & timer /////////////// +/////////////////////////////////////////////////////////////////////////////// + + +//--- conversion factors + +#define SEC_PER_MIN 60 +#define SEC_PER_HOUR 3600 +#define SEC_PER_DAY 86400 +#define SEC_PER_WEEK 604800 +#define SEC_PER_MONTH 2629746 // 365.2425 * SEC_PER_DAY / 12 +#define SEC_PER_QUARTER 7889238 // 365.2425 * SEC_PER_DAY / 4 +#define SEC_PER_YEAR 31556952 // 365.2425 * SEC_PER_DAY + +#define MSEC_PER_SEC 1000ll +#define MSEC_PER_MIN (MSEC_PER_SEC*SEC_PER_MIN) +#define MSEC_PER_HOUR (MSEC_PER_SEC*SEC_PER_HOUR) +#define MSEC_PER_DAY (MSEC_PER_SEC*SEC_PER_DAY) +#define MSEC_PER_WEEK (MSEC_PER_SEC*SEC_PER_WEEK) +#define MSEC_PER_MONTH (MSEC_PER_SEC*SEC_PER_MONTH) +#define MSEC_PER_QUARTER (MSEC_PER_SEC*SEC_PER_QUARTER) +#define MSEC_PER_YEAR (MSEC_PER_SEC*SEC_PER_YEAR) + +#define USEC_PER_MSEC 1000ll +#define USEC_PER_SEC 1000000ll +#define USEC_PER_MIN (USEC_PER_SEC*SEC_PER_MIN) +#define USEC_PER_HOUR (USEC_PER_SEC*SEC_PER_HOUR) +#define USEC_PER_DAY (USEC_PER_SEC*SEC_PER_DAY) +#define USEC_PER_WEEK (USEC_PER_SEC*SEC_PER_WEEK) +#define USEC_PER_MONTH (USEC_PER_SEC*SEC_PER_MONTH) +#define USEC_PER_QUARTER (USEC_PER_SEC*SEC_PER_QUARTER) +#define USEC_PER_YEAR (USEC_PER_SEC*SEC_PER_YEAR) + +#define NSEC_PER_USEC 1000ll +#define NSEC_PER_MSEC 1000000ll +#define NSEC_PER_SEC 1000000000ll +#define NSEC_PER_MIN (NSEC_PER_SEC*SEC_PER_MIN) +#define NSEC_PER_HOUR (NSEC_PER_SEC*SEC_PER_HOUR) +#define NSEC_PER_DAY (NSEC_PER_SEC*SEC_PER_DAY) +#define NSEC_PER_WEEK (NSEC_PER_SEC*SEC_PER_WEEK) +#define NSEC_PER_MONTH (NSEC_PER_SEC*SEC_PER_MONTH) +#define NSEC_PER_QUARTER (NSEC_PER_SEC*SEC_PER_QUARTER) +#define NSEC_PER_YEAR (NSEC_PER_SEC*SEC_PER_YEAR) + + +//--- time types + +typedef uint u_sec_t; // unsigned type to store time as seconds +typedef int s_sec_t; // signed type to store time as seconds +typedef u64 u_msec_t; // unsigned type to store time as milliseconds +typedef s64 s_msec_t; // signed type to store time as milliseconds +typedef u64 u_usec_t; // unsigned type to store time as microseconds +typedef s64 s_usec_t; // signed type to store time as microseconds +typedef u64 u_nsec_t; // unsigned type to store time as nanoseconds +typedef s64 s_nsec_t; // signed type to store time as nanoseconds + + +//--- max values time types + +#define S_SEC_MAX S32_MAX +#define U_SEC_MAX U32_MAX +#define S_MSEC_MAX S64_MAX +#define U_MSEC_MAX U64_MAX +#define S_USEC_MAX S64_MAX +#define U_USEC_MAX U64_MAX +#define S_NSEC_MAX S64_MAX +#define U_NSEC_MAX U64_MAX + +// +/////////////////////////////////////////////////////////////////////////////// /////////////// sockaddr + IPv* support /////////////// /////////////////////////////////////////////////////////////////////////////// // [[sockaddr_t]] [[sockaddr_in_t]] diff --git a/project/dclib/dclib-ui.c b/project/dclib/dclib-ui.c index 25f5702..3933822 100644 --- a/project/dclib/dclib-ui.c +++ b/project/dclib/dclib-ui.c @@ -436,6 +436,50 @@ void DumpText } break; + case '\xc2': + if (is_makedoc) + { + #if 1 + uint code = 0; + switch (text[1]) + { + case '\xab': // « + case '\xbb': // » + code = text[1]; + break; + } + + if (code) + { + *dest++ = code; + text += 2; + break; + } + #else + ccp str = 0; + switch (text[1]) + { + case '\xab': // « + str = "»"; + break; + + case '\xbb': // » + str = "«"; + break; + } + + if (str) + { + strcpy(dest,str); + dest += strlen(str); + text += 2; + break; + } + #endif + } + *dest++ = *text++; + break; + case '@': case '$': if (!is_makedoc) diff --git a/project/dclib/lib-bmg.c b/project/dclib/lib-bmg.c index d3a98ed..aaeb8b8 100644 --- a/project/dclib/lib-bmg.c +++ b/project/dclib/lib-bmg.c @@ -4358,10 +4358,10 @@ enumError SaveTextFileBMG { MID_LE_ALT_ARENA_BEG, "LE-CODE: alternative arena names for random slots" }, { MID_LE_ALT_ARENA_END, 0 }, - { MID_LE_CUP_BEG, "LE-CODE: cup names" }, - { MID_LE_CUP_END, 0 }, { MID_LE_TRACK_BEG, "LE-CODE: track names" }, { MID_LE_TRACK_END, 0 }, + { MID_LE_CUP_BEG, "LE-CODE: cup names" }, + { MID_LE_CUP_END, 0 }, { MID_LE_CUP_REF_BEG, "LE-CODE: track-to-cup reference" }, { MID_LE_CUP_REF_END, 0 }, @@ -6084,6 +6084,7 @@ bool PatchFillBMG bmg_item_t * dptr = InsertItemBMG(bmg,mid,0,0,&old_item); if ( !old_item || !dptr->len ) { +// [[%04x-]] no access to lecode_04x const uint len = snprintf(buf,sizeof(buf),"_T%03X_",mid-ctb.track_name1.beg); AssignItemTextBMG(dptr,buf,len); diff --git a/project/dclib/lib-bmg.h b/project/dclib/lib-bmg.h index 81ac813..7614558 100644 --- a/project/dclib/lib-bmg.h +++ b/project/dclib/lib-bmg.h @@ -142,40 +142,40 @@ enum //-- LE-CODE - BMG_N_LE_RCUP = 0x400, + BMG_N_LE_RCUP = 0x800, BMG_N_LE_BCUP = 2, - BMG_N_LE_TRACK = 0x1000, + BMG_N_LE_TRACK = 0x2000, BMG_N_LE_ARENA = BMG_N_ARENA, BMG_LE_FIRST_CTRACK = 0x44, MID_LE_ALT_ARENA_BEG = 0x6400, // alternate BMG of MID_LE_TRACK_BEG for arenas MID_LE_ALT_ARENA_END = 0x6480, - MID_LE_CUP_BEG = 0x6800, + MID_LE_TRACK_BEG = 0x7000, + MID_LE_TRACK_END = MID_LE_TRACK_BEG + BMG_N_LE_TRACK, + MID_LE_ARENA_BEG = MID_LE_TRACK_BEG + BMG_N_TRACK, + MID_LE_ARENA_END = MID_LE_ARENA_BEG + BMG_N_LE_ARENA, + + MID_LE_CUP_BEG = 0xc000, MID_LE_RCUP_BEG = MID_LE_CUP_BEG, MID_LE_RCUP_END = MID_LE_RCUP_BEG + BMG_N_LE_RCUP, MID_LE_BCUP_BEG = MID_LE_RCUP_END, MID_LE_BCUP_END = MID_LE_BCUP_BEG + BMG_N_LE_BCUP, MID_LE_CUP_END = MID_LE_BCUP_END, - MID_LE_TRACK_BEG = 0x7000, - MID_LE_TRACK_END = MID_LE_TRACK_BEG + BMG_N_LE_TRACK, - MID_LE_ARENA_BEG = MID_LE_TRACK_BEG + BMG_N_TRACK, - MID_LE_ARENA_END = MID_LE_ARENA_BEG + BMG_N_LE_ARENA, - - MID_LE_CUP_REF_BEG = 0x8000, + MID_LE_CUP_REF_BEG = 0xd000, MID_LE_CUP_REF_END = MID_LE_CUP_REF_BEG + BMG_N_LE_TRACK, - MID_LE_BEG = MID_LE_CUP_BEG, + MID_LE_BEG = MID_LE_TRACK_BEG, MID_LE_END = MID_LE_CUP_REF_END, //-- max(CT,LE) - BMG_MAX_RCUP = 0x3fe, - BMG_MAX_BCUP = 2, - BMG_MAX_TRACK = 0x1000, - BMG_MAX_ARENA = BMG_N_ARENA, + BMG_MAX_RCUP = BMG_N_LE_RCUP, + BMG_MAX_BCUP = BMG_N_LE_BCUP, + BMG_MAX_TRACK = BMG_N_LE_TRACK, + BMG_MAX_ARENA = BMG_N_LE_ARENA, //-- tracks diff --git a/project/dclib/lib-dol.h b/project/dclib/lib-dol.h index fb196ee..60cf2bf 100644 --- a/project/dclib/lib-dol.h +++ b/project/dclib/lib-dol.h @@ -392,6 +392,10 @@ uint RemoveDolSections #define GCT_SEP_NUM1 0xf0000001u #define GCT_REG_OFFSET 8 +#define GCTTXT_MAGIC "#GCT" +#define GCTTXT_MAGIC_NUM 0x23474354u + + /////////////////////////////////////////////////////////////////////////////// // [[gch_header_t]] diff --git a/project/dclib/lib-mkw-def.c b/project/dclib/lib-mkw-def.c index 96cde69..94414fc 100644 --- a/project/dclib/lib-mkw-def.c +++ b/project/dclib/lib-mkw-def.c @@ -48,7 +48,7 @@ MkwTrackCategory_t * GetMkwTrackCategory ( int id ) static MkwTrackCategory_t id_MTCAT_TEXTURE = { "Accepted texture hack", - "texture,texture2do", + "texture,texture2do,edit.allow", 0x000000, 0x20ffa0, 0, diff --git a/project/dclib/lib-mkw.h b/project/dclib/lib-mkw.h index 470d942..cda34ee 100644 --- a/project/dclib/lib-mkw.h +++ b/project/dclib/lib-mkw.h @@ -112,7 +112,7 @@ enum mkw_consts_t // some constants //--- LE-CODE extended slots MKW_LE_SLOT_BEG = 0x44, - MKW_LE_SLOT_END = 0x1000, + MKW_LE_SLOT_END = 0x2000, MKW_N_LE_SLOT = MKW_LE_SLOT_END - MKW_LE_SLOT_BEG, diff --git a/project/revision.sh b/project/revision.sh index cae8a1a..e51d6c0 100644 --- a/project/revision.sh +++ b/project/revision.sh @@ -1 +1 @@ -revision=8923 +revision=8953 diff --git a/project/src/file-type.c b/project/src/file-type.c index e6d2d9d..f3d3171 100644 --- a/project/src/file-type.c +++ b/project/src/file-type.c @@ -34,7 +34,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_YAZ0, 0, 0, "YAZ0", ".szs", ".szs", ".szs", - FFT_VALID | FFT_COMPRESS, + FFT_VALID | FFT_COMPRESS | FFT_TRACK, 4, {0x59,0x61,0x7a,0x30}, // "Yaz0" 0, "0", @@ -46,7 +46,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_YAZ1, 0, 0, "YAZ1", ".szs", ".szs", ".szs", - FFT_VALID | FFT_COMPRESS, + FFT_VALID | FFT_COMPRESS | FFT_TRACK, 4, {0x59,0x61,0x7a,0x31}, // "Yaz1" 0, "1", @@ -58,7 +58,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_XYZ, 0, 0, "XYZ", ".xyz", ".szs", ".xyz", - FFT_VALID | FFT_COMPRESS, + FFT_VALID | FFT_COMPRESS | FFT_TRACK, 0, {0}, // no magic 0, MinusString, @@ -70,7 +70,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_BZ, 0, 0, "BZ", ".bz", ".szs", ".bz", - FFT_VALID | FFT_COMPRESS, + FFT_VALID | FFT_COMPRESS | FFT_TRACK, 4, {0x57,0x42,0x5a,0x61}, // "WBZa" 0, MinusString, @@ -82,7 +82,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_BZIP2, 0, 0, "BZIP2", ".bz2", ".szs", ".bz2", - FFT_VALID | FFT_COMPRESS, + FFT_VALID | FFT_COMPRESS | FFT_TRACK, 0, {0}, // no magic 0, MinusString, @@ -94,7 +94,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_LZ, 0, 0, "LZ", ".lz", ".szs", ".lz", - FFT_VALID | FFT_COMPRESS, + FFT_VALID | FFT_COMPRESS | FFT_TRACK, 4, {0x57,0x4c,0x5a,0x61}, // "WLZa" 0, MinusString, @@ -106,7 +106,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_LZMA, 0, 0, "LZMA", ".lzma", ".szs", ".lzma", - FFT_VALID | FFT_COMPRESS, + FFT_VALID | FFT_COMPRESS | FFT_TRACK, 0, {0}, // no magic 0, MinusString, @@ -130,7 +130,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_U8, 0, 0, "U8", ".u8", ".szs", ".u8", - FFT_VALID | FFT_ARCHIVE | FFT_CREATE | FFT_EXTRACT | FFT_CUT | FFT_LINK, + FFT_VALID | FFT_ARCHIVE | FFT_TRACK | FFT_CREATE | FFT_EXTRACT | FFT_CUT | FFT_LINK, 4, {0x55,0xaa,0x38,0x2d}, // "Uª8-" 0, MinusString, @@ -142,7 +142,7 @@ const file_type_t FileTypeTab[FF_N+1] = { FF_WU8, 0, 0, "WU8", ".wu8", ".wu8", ".wu8", - FFT_VALID | FFT_ARCHIVE | FFT_CREATE | FFT_EXTRACT | FFT_CUT | FFT_LINK, + FFT_VALID | FFT_ARCHIVE | FFT_TRACK | FFT_CREATE | FFT_EXTRACT | FFT_CUT | FFT_LINK, 4, {0x57,0x55,0x38,0x61}, // "WU8a" 0, MinusString, @@ -222,7 +222,19 @@ const file_type_t FileTypeTab[FF_N+1] = "Simple archive format" }, - // FF_LTA = 17 + // FF_USE_LTA = 17 + { + FF_USE_LTA, 0, 0, "USE-LTA", + ".szs", ".szs", ".szs", + FFT_VALID, + 8, {0x23,0x55,0x53,0x45,0x2d,0x4c,0x54,0x41}, // "#USE-LTA" + 0, + MinusString, + MinusString, + "LE-CODE redirect to LTA" + }, + + // FF_LTA = 18 { FF_LTA, 0, 0, "LTA", ".lta", "", ".lta", @@ -234,7 +246,7 @@ const file_type_t FileTypeTab[FF_N+1] = "LE-CODE Track Archive" }, - // FF_LFL = 18 + // FF_LFL = 19 { FF_LFL, 0, 0, "LFL", ".lfl", ".szs", ".lfl", @@ -246,7 +258,7 @@ const file_type_t FileTypeTab[FF_N+1] = "LE-CODE File List" }, - // FF_CHR = 19 + // FF_CHR = 20 { FF_CHR, 0, 0, "CHR", ".chr", ".szs", ".chr0", @@ -258,7 +270,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Model movement animations" }, - // FF_CLR = 20 + // FF_CLR = 21 { FF_CLR, 0, 0, "CLR", ".clr", ".szs", ".clr0", @@ -270,7 +282,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Colour changing animations" }, - // FF_MDL = 21 + // FF_MDL = 22 { FF_MDL, FF_MDL, FF_MDL_TXT, "MDL", ".mdl", ".szs", ".mdl0", @@ -282,7 +294,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Model files" }, - // FF_PAT = 22 + // FF_PAT = 23 { FF_PAT, FF_PAT, FF_PAT_TXT, "PAT", ".pat", ".szs", ".pat0", @@ -294,7 +306,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Texture swapping animations" }, - // FF_SCN = 23 + // FF_SCN = 24 { FF_SCN, 0, 0, "SCN", ".scn", ".szs", ".scn0", @@ -306,7 +318,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Polygon morphing animations" }, - // FF_SHP = 24 + // FF_SHP = 25 { FF_SHP, 0, 0, "SHP", ".shp", ".szs", ".shp0", @@ -318,7 +330,7 @@ const file_type_t FileTypeTab[FF_N+1] = filetype_info_unknown }, - // FF_SRT = 25 + // FF_SRT = 26 { FF_SRT, 0, 0, "SRT", ".srt", ".szs", ".srt0", @@ -330,7 +342,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Texture movement animations" }, - // FF_TEX = 26 + // FF_TEX = 27 { FF_TEX, 0, 0, "TEX", ".tex", ".szs", ".tex0", @@ -342,7 +354,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Texture file" }, - // FF_TEX_CT = 27 + // FF_TEX_CT = 28 { FF_TEX_CT, 0, 0, "TEX+CT", ".tex", ".szs", ".tex0", @@ -354,7 +366,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Texture file with CTGP-CODE" }, - // FF_CTDEF = 28 + // FF_CTDEF = 29 { FF_CTDEF, 0, 0, "CT-DEF", ".txt", ".szs", ".txt", @@ -366,7 +378,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-CODE definition file" }, - // FF_CT0_CODE = 29 + // FF_CT0_CODE = 30 { FF_CT0_CODE, 0, 0, "C0CODE", ".bin", ".szs", ".bin", @@ -378,7 +390,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-CODE for main.dol section T2" }, - // FF_CT0_DATA = 30 + // FF_CT0_DATA = 31 { FF_CT0_DATA, 0, 0, "C0DATA", ".bin", ".szs", ".bin", @@ -390,7 +402,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-DATA for main.dol section D8" }, - // FF_CT1_CODE = 31 + // FF_CT1_CODE = 32 { FF_CT1_CODE, 0, 0, "C1CODE", ".bin", ".szs", ".bin", @@ -402,7 +414,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-CODE for strap TEX0 file" }, - // FF_CT1_DATA = 32 + // FF_CT1_DATA = 33 { FF_CT1_DATA, 0, 0, "C1DATA", ".ctcode", ".szs", ".ctcode", @@ -414,7 +426,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-DATA for strap TEX0 file" }, - // FF_CUP1 = 33 + // FF_CUP1 = 34 { FF_CUP1, 0, 0, "CUP1", ".bin", ".szs", ".bin", @@ -426,7 +438,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-DATA section: Cups" }, - // FF_CRS1 = 34 + // FF_CRS1 = 35 { FF_CRS1, 0, 0, "CRS1", ".bin", ".szs", ".bin", @@ -438,7 +450,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-DATA section: Tracks" }, - // FF_MOD1 = 35 + // FF_MOD1 = 36 { FF_MOD1, 0, 0, "MOD1", ".bin", ".szs", ".bin", @@ -450,7 +462,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-DATA section: main.dol patches" }, - // FF_MOD2 = 36 + // FF_MOD2 = 37 { FF_MOD2, 0, 0, "MOD2", ".bin", ".szs", ".bin", @@ -462,7 +474,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-DATA section: StaticR.rel patches" }, - // FF_OVR1 = 37 + // FF_OVR1 = 38 { FF_OVR1, 0, 0, "OVR1", ".bin", ".szs", ".bin", @@ -474,7 +486,7 @@ const file_type_t FileTypeTab[FF_N+1] = "CT-DATA section: Speedometer" }, - // FF_LE_BIN = 38 + // FF_LE_BIN = 39 { FF_LE_BIN, 0, 0, "LE-BIN", ".bin", ".szs", ".bin", @@ -486,7 +498,7 @@ const file_type_t FileTypeTab[FF_N+1] = "LE-CODE binary" }, - // FF_LEX = 39 + // FF_LEX = 40 { FF_LEX, FF_LEX, FF_LEX_TXT, "LEX", ".lex", ".szs", ".lex", @@ -498,7 +510,7 @@ const file_type_t FileTypeTab[FF_N+1] = "LECODE extension file" }, - // FF_LEX_TXT = 40 + // FF_LEX_TXT = 41 { FF_LEX_TXT, FF_LEX, FF_LEX_TXT, "LEX-TXT", ".txt", ".szs", ".txt", @@ -510,7 +522,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text version of LEX" }, - // FF_LPAR = 41 + // FF_LPAR = 42 { FF_LPAR, 0, 0, "LPAR", ".txt", ".szs", ".txt", @@ -522,7 +534,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text file with LE-CODE parameters" }, - // FF_LEDEF = 42 + // FF_LEDEF = 43 { FF_LEDEF, 0, 0, "LE-DEF", ".txt", ".szs", ".txt", @@ -534,7 +546,7 @@ const file_type_t FileTypeTab[FF_N+1] = "LE-CODE definition file" }, - // FF_LEDIS = 43 + // FF_LEDIS = 44 { FF_LEDIS, 0, 0, "LE-DIS", ".txt", ".szs", ".txt", @@ -546,7 +558,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text file with CT+LE-CODE distribution settings" }, - // FF_LEREF = 44 + // FF_LEREF = 45 { FF_LEREF, 0, 0, "LE-REF", ".txt", ".szs", ".txt", @@ -558,7 +570,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text file as track reference" }, - // FF_LESTR = 45 + // FF_LESTR = 46 { FF_LESTR, 0, 0, "LE-STR", ".txt", ".szs", ".txt", @@ -570,7 +582,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text file strings for tracks" }, - // FF_SHA1REF = 46 + // FF_SHA1REF = 47 { FF_SHA1REF, 0, 0, "SHA1REF", ".txt", ".szs", ".txt", @@ -582,7 +594,19 @@ const file_type_t FileTypeTab[FF_N+1] = "Text file with SHA1 of tracks" }, - // FF_PREFIX = 47 + // FF_SHA1ID = 48 + { + FF_SHA1ID, 0, 0, "SHA1ID", + ".txt", ".szs", ".txt", + FFT_VALID | FFT_TEXT | FFT_ENCODE, + 8, {0x23,0x53,0x48,0x41,0x31,0x49,0x44,0x31}, // "#SHA1ID1" + 0, + MinusString, + MinusString, + "Text file with SHA1 and file_id of tracks" + }, + + // FF_PREFIX = 49 { FF_PREFIX, 0, 0, "PREFIX", ".txt", ".szs", ".txt", @@ -594,7 +618,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text file with console/game prefixes and info" }, - // FF_MTCAT = 48 + // FF_MTCAT = 50 { FF_MTCAT, 0, 0, "MTCAT", ".txt", ".szs", ".txt", @@ -606,7 +630,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text file with MKW Track Categories" }, - // FF_CT_SHA1 = 49 + // FF_CT_SHA1 = 51 { FF_CT_SHA1, 0, 0, "CT-SHA1", ".txt", ".szs", ".txt", @@ -618,7 +642,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_MDL_TXT = 50 + // FF_MDL_TXT = 52 { FF_MDL_TXT, FF_MDL, FF_MDL_TXT, "MDLTXT", ".txt", ".szs", ".txt", @@ -630,7 +654,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text version of MDL" }, - // FF_PAT_TXT = 51 + // FF_PAT_TXT = 53 { FF_PAT_TXT, FF_PAT, FF_PAT_TXT, "PATTXT", ".txt", ".szs", ".txt", @@ -642,7 +666,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text version of PAT" }, - // FF_TPL = 52 + // FF_TPL = 54 { FF_TPL, 0, 0, "TPL", ".tpl", ".szs", ".tpl", @@ -654,7 +678,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Image container" }, - // FF_BTI = 53 + // FF_BTI = 55 { FF_BTI, 0, 0, "BTI", ".bti", ".szs", ".bti", @@ -666,7 +690,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Image container" }, - // FF_BREFT_IMG = 54 + // FF_BREFT_IMG = 56 { FF_BREFT_IMG, 0, 0, "BT-IMG", ".bt-img", ".szs", ".bt-img", @@ -678,7 +702,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Raw image of BREFT file" }, - // FF_BMG = 55 + // FF_BMG = 57 { FF_BMG, FF_BMG, FF_BMG_TXT, "BMG", ".bmg", ".szs", ".bmg", @@ -690,7 +714,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Message file" }, - // FF_BMG_TXT = 56 + // FF_BMG_TXT = 58 { FF_BMG_TXT, FF_BMG, FF_BMG_TXT, "BMGTXT", ".txt", ".szs", ".txt", @@ -702,7 +726,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text version of BMG" }, - // FF_KCL = 57 + // FF_KCL = 59 { FF_KCL, FF_KCL, FF_KCL_TXT, "KCL", ".kcl", ".szs", ".kcl", @@ -714,7 +738,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Collision file" }, - // FF_KCL_TXT = 58 + // FF_KCL_TXT = 60 { FF_KCL_TXT, FF_KCL, FF_KCL_TXT, "KCLTXT", ".obj", ".szs", ".obj", @@ -726,7 +750,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Wavefront OBJ by WSZST" }, - // FF_WAV_OBJ = 59 + // FF_WAV_OBJ = 61 { FF_WAV_OBJ, FF_KCL, FF_WAV_OBJ, "WAVOBJ", ".obj", ".szs", ".obj", @@ -738,7 +762,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Wavefront OBJ" }, - // FF_SKP_OBJ = 60 + // FF_SKP_OBJ = 62 { FF_SKP_OBJ, FF_KCL, FF_SKP_OBJ, "SKPOBJ", ".obj", ".szs", ".obj", @@ -750,7 +774,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Wavefront OBJ by Sketchup" }, - // FF_KMP = 61 + // FF_KMP = 63 { FF_KMP, FF_KMP, FF_KMP_TXT, "KMP", ".kmp", ".szs", ".kmp", @@ -762,7 +786,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Track information file" }, - // FF_KMP_TXT = 62 + // FF_KMP_TXT = 64 { FF_KMP_TXT, FF_KMP, FF_KMP_TXT, "KMPTXT", ".txt", ".szs", ".txt", @@ -774,7 +798,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Text version of KMP" }, - // FF_ITEMSLT = 63 + // FF_ITEMSLT = 65 { FF_ITEMSLT, FF_ITEMSLT, FF_ITEMSLT_TXT, "ITEMSLT", ".bin", ".szs", ".slt", @@ -786,7 +810,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_ITEMSLT_TXT = 64 + // FF_ITEMSLT_TXT = 66 { FF_ITEMSLT_TXT, FF_ITEMSLT, FF_ITEMSLT_TXT, "ITEMSLTTXT", ".txt", ".szs", ".txt", @@ -798,7 +822,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_KMG = 65 + // FF_KMG = 67 { FF_KMG, FF_KMG, FF_KMG_TXT, "KMG", ".kmg", ".szs", ".kmg", @@ -810,7 +834,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_KMG_TXT = 66 + // FF_KMG_TXT = 68 { FF_KMG_TXT, FF_KMG, FF_KMG_TXT, "KMGTXT", ".txt", ".szs", ".txt", @@ -822,7 +846,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_KRM = 67 + // FF_KRM = 69 { FF_KRM, FF_KRM, FF_KRM_TXT, "KRM", ".krm", ".szs", ".krm", @@ -834,7 +858,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_KRM_TXT = 68 + // FF_KRM_TXT = 70 { FF_KRM_TXT, FF_KRM, FF_KRM_TXT, "KRMTXT", ".txt", ".szs", ".txt", @@ -846,7 +870,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_KRT = 69 + // FF_KRT = 71 { FF_KRT, FF_KRT, FF_KRT_TXT, "KRT", ".krt", ".szs", ".krt", @@ -858,7 +882,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_KRT_TXT = 70 + // FF_KRT_TXT = 72 { FF_KRT_TXT, FF_KRT, FF_KRT_TXT, "KRTTXT", ".txt", ".szs", ".txt", @@ -870,7 +894,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_OBJFLOW = 71 + // FF_OBJFLOW = 73 { FF_OBJFLOW, FF_OBJFLOW, FF_OBJFLOW_TXT, "OBFLOW", ".bin", ".szs", ".bin", @@ -882,7 +906,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_OBJFLOW_TXT = 72 + // FF_OBJFLOW_TXT = 74 { FF_OBJFLOW_TXT, FF_OBJFLOW, FF_OBJFLOW_TXT, "OF-TXT", ".txt", ".szs", ".txt", @@ -894,7 +918,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_ITEM = 73 + // FF_GH_ITEM = 75 { FF_GH_ITEM, FF_GH_ITEM, FF_GH_ITEM_TXT, "GHITEM", ".bin", ".szs", ".bin", @@ -906,7 +930,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_ITEM_TXT = 74 + // FF_GH_ITEM_TXT = 76 { FF_GH_ITEM_TXT, FF_GH_ITEM, FF_GH_ITEM_TXT, "GI-TXT", ".txt", ".szs", ".txt", @@ -918,7 +942,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_IOBJ = 75 + // FF_GH_IOBJ = 77 { FF_GH_IOBJ, FF_GH_IOBJ, FF_GH_IOBJ_TXT, "GHIOBJ", ".bin", ".szs", ".bin", @@ -930,7 +954,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_IOBJ_TXT = 76 + // FF_GH_IOBJ_TXT = 78 { FF_GH_IOBJ_TXT, FF_GH_IOBJ, FF_GH_IOBJ_TXT, "GIOTXT", ".txt", ".szs", ".txt", @@ -942,7 +966,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_KART = 77 + // FF_GH_KART = 79 { FF_GH_KART, FF_GH_KART, FF_GH_KART_TXT, "GHKART", ".bin", ".szs", ".bin", @@ -954,7 +978,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_KART_TXT = 78 + // FF_GH_KART_TXT = 80 { FF_GH_KART_TXT, FF_GH_KART, FF_GH_KART_TXT, "GK-TXT", ".txt", ".szs", ".txt", @@ -966,7 +990,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_KOBJ = 79 + // FF_GH_KOBJ = 81 { FF_GH_KOBJ, FF_GH_KOBJ, FF_GH_KOBJ_TXT, "GHKOBJ", ".bin", ".szs", ".bin", @@ -978,7 +1002,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_GH_KOBJ_TXT = 80 + // FF_GH_KOBJ_TXT = 82 { FF_GH_KOBJ_TXT, FF_GH_KOBJ, FF_GH_KOBJ_TXT, "GKOTXT", ".txt", ".szs", ".txt", @@ -990,7 +1014,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_DRIVER = 81 + // FF_DRIVER = 83 { FF_DRIVER, 0, 0, "DRV", ".bin", ".szs", ".bin", @@ -1002,7 +1026,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_VEHICLE = 82 + // FF_VEHICLE = 84 { FF_VEHICLE, 0, 0, "VEH", ".bin", ".szs", ".bin", @@ -1014,7 +1038,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_BRASD = 83 + // FF_BRASD = 85 { FF_BRASD, 0, 0, "BRASD", ".brasd", ".szs", ".brasd", @@ -1026,7 +1050,7 @@ const file_type_t FileTypeTab[FF_N+1] = filetype_info_unknown }, - // FF_RKG = 84 + // FF_RKG = 86 { FF_RKG, 0, 0, "RKG", ".rkg", ".szs", ".rkg", @@ -1038,7 +1062,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_RKCO = 85 + // FF_RKCO = 87 { FF_RKCO, 0, 0, "RKCO", ".rkco", ".szs", ".rkco", @@ -1050,7 +1074,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_STATICR = 86 + // FF_STATICR = 88 { FF_STATICR, 0, 0, "STATICR", ".rel", ".szs", ".rel", @@ -1062,7 +1086,7 @@ const file_type_t FileTypeTab[FF_N+1] = "A 'StaticR.rel' file" }, - // FF_DOL = 87 + // FF_DOL = 89 { FF_DOL, 0, 0, "DOL", ".dol", ".szs", ".dol", @@ -1074,19 +1098,31 @@ const file_type_t FileTypeTab[FF_N+1] = "An executable DOL file" }, - // FF_GCT = 88 + // FF_GCT = 90 { FF_GCT, 0, 0, "GCT", ".gct", ".szs", ".gct", FFT_VALID, - 0, {0}, // no magic + 4, {0x00,0xd0,0xc0,0xde}, // "\000Ã�ÀÞ" + 0, + MinusString, + MinusString, + "Gecko Cheat Code, binary" + }, + + // FF_GCT_TXT = 91 + { + FF_GCT_TXT, 0, 0, "GCT-TXT", + ".gct", ".szs", ".gct", + FFT_VALID, + 4, {0x23,0x47,0x43,0x54}, // "#GCT" 0, MinusString, MinusString, - "Gecko Cheat Code" + "Gecko Cheat Code, text" }, - // FF_GCH = 89 + // FF_GCH = 92 { FF_GCH, 0, 0, "GCH", ".gch", ".szs", ".gch", @@ -1098,7 +1134,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Gecko Cheat Handler + coded" }, - // FF_WCH = 90 + // FF_WCH = 93 { FF_WCH, 0, 0, "WCH", ".wch", ".szs", ".wch", @@ -1110,7 +1146,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Wiimms Cheat Handler + codes" }, - // FF_WPF = 91 + // FF_WPF = 94 { FF_WPF, 0, 0, "WPF", ".wpf", ".szs", ".wpf", @@ -1122,7 +1158,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Wiimms Patch File" }, - // FF_XPF = 92 + // FF_XPF = 95 { FF_XPF, 0, 0, "XPF", ".xpf", ".szs", ".xpf", @@ -1134,7 +1170,7 @@ const file_type_t FileTypeTab[FF_N+1] = "Extended Patch File" }, - // FF_DISTRIB = 93 + // FF_DISTRIB = 96 { FF_DISTRIB, 0, 0, "DISTRIB", ".txt", ".szs", ".txt", @@ -1146,7 +1182,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_PNG = 94 + // FF_PNG = 97 { FF_PNG, 0, 0, "PNG", ".png", ".png", ".png", @@ -1158,7 +1194,7 @@ const file_type_t FileTypeTab[FF_N+1] = "A public image format" }, - // FF_PORTDB = 95 + // FF_PORTDB = 98 { FF_PORTDB, 0, 0, "PORTDB", ".bin", ".szs", ".bin", @@ -1170,7 +1206,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_TXT = 96 + // FF_TXT = 99 { FF_TXT, 0, 0, "TXT", ".txt", ".szs", ".txt", @@ -1182,7 +1218,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_SCRIPT = 97 + // FF_SCRIPT = 100 { FF_SCRIPT, 0, 0, "SCRIPT", ".script", ".szs", ".script", @@ -1194,7 +1230,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_JSON = 98 + // FF_JSON = 101 { FF_JSON, 0, 0, "JSON", ".json", ".szs", ".json", @@ -1206,7 +1242,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_SH = 99 + // FF_SH = 102 { FF_SH, 0, 0, "SH", ".sh", ".szs", ".sh", @@ -1218,7 +1254,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_BASH = 100 + // FF_BASH = 103 { FF_BASH, 0, 0, "BASH", ".sh", ".szs", ".sh", @@ -1230,7 +1266,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_PHP = 101 + // FF_PHP = 104 { FF_PHP, 0, 0, "PHP", ".php", ".szs", ".php", @@ -1242,7 +1278,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_MAKEDOC = 102 + // FF_MAKEDOC = 105 { FF_MAKEDOC, 0, 0, "MAKEDOC", ".md", ".szs", ".md", @@ -1254,7 +1290,7 @@ const file_type_t FileTypeTab[FF_N+1] = EmptyString }, - // FF_DIRECTORY = 103 + // FF_DIRECTORY = 106 { FF_DIRECTORY, 0, 0, "DIR", ".d", ".d", ".d", @@ -1280,113 +1316,117 @@ const KeywordTab_t cmdtab_FileType[] = { // INFO: cmd->opt := ff_attrib_t - { FF_YAZ0, "YAZ", "YAZ0", 0x3 }, - { FF_YAZ1, "YAZ1", 0, 0x3 }, - { FF_XYZ, "XYZ", 0, 0x3 }, - { FF_BZ, "BZ", 0, 0x3 }, - { FF_BZIP2, "BZ2", "BZIP2", 0x3 }, - { FF_LZ, "LZ", 0, 0x3 }, - { FF_LZMA, "LZMA", 0, 0x3 }, + { FF_YAZ0, "YAZ", "YAZ0", 0x103 }, + { FF_YAZ1, "YAZ1", 0, 0x103 }, + { FF_XYZ, "XYZ", 0, 0x103 }, + { FF_BZ, "BZ", 0, 0x103 }, + { FF_BZIP2, "BZ2", "BZIP2", 0x103 }, + { FF_LZ, "LZ", 0, 0x103 }, + { FF_LZMA, "LZMA", 0, 0x103 }, { FF_XZ, "XZ", 0, 0x3 }, - { FF_U8, "U8", 0, 0x8705 }, - { FF_WU8, "WU8", 0, 0x8705 }, - { FF_RARC, "ARC", "RARC", 0x605 }, - { FF_BRRES, "BRES", "BRRES", 0x705 }, - { FF_BREFF, "BREFF", "REFF", 0x305 }, - { FF_BREFT, "BREFT", "REFT", 0x705 }, - { FF_RKC, "RKC", 0, 0x705 }, - { FF_PACK, "PACK", 0, 0x705 }, - { FF_LTA, "", "LTA", 0x705 }, - { FF_LFL, "LFL", 0, 0x705 }, - { FF_CHR, "CHR", "CHR0", 0x461 }, - { FF_CLR, "CLR", "CLR0", 0x461 }, - { FF_MDL, "MDL", "MDL0", 0x4c61 }, - { FF_PAT, "PAT", "PAT0", 0x1c21 }, - { FF_SCN, "SCN", "SCN0", 0x461 }, - { FF_SHP, "SHP", "SHP0", 0x461 }, - { FF_SRT, "SRT", "SRT0", 0x461 }, - { FF_TEX, "TEX", "TEX0", 0x1c29 }, - { FF_TEX_CT, "TEX", "TEX+CT", 0x5c29 }, - { FF_TEX_CT, "TEX-CT", "TEX0", 0x5c29 }, - { FF_TEX_CT, "TEXCT", 0, 0x5c29 }, - { FF_CTDEF, "CT-DEF", "CTDEF", 0x3811 }, + { FF_U8, "U8", 0, 0x10f05 }, + { FF_WU8, "WU8", 0, 0x10f05 }, + { FF_RARC, "ARC", "RARC", 0xc05 }, + { FF_BRRES, "BRES", "BRRES", 0xe05 }, + { FF_BREFF, "BREFF", "REFF", 0x605 }, + { FF_BREFT, "BREFT", "REFT", 0xe05 }, + { FF_RKC, "RKC", 0, 0xe05 }, + { FF_PACK, "PACK", 0, 0xe05 }, + { FF_USE_LTA, "USE-LTA", "USELTA", 0x1 }, + { FF_LTA, "", "LTA", 0xe05 }, + { FF_LFL, "LFL", 0, 0xe05 }, + { FF_CHR, "CHR", "CHR0", 0x861 }, + { FF_CLR, "CLR", "CLR0", 0x861 }, + { FF_MDL, "MDL", "MDL0", 0x9861 }, + { FF_PAT, "PAT", "PAT0", 0x3821 }, + { FF_SCN, "SCN", "SCN0", 0x861 }, + { FF_SHP, "SHP", "SHP0", 0x861 }, + { FF_SRT, "SRT", "SRT0", 0x861 }, + { FF_TEX, "TEX", "TEX0", 0x3829 }, + { FF_TEX_CT, "TEX", "TEX+CT", 0xb829 }, + { FF_TEX_CT, "TEX-CT", "TEX0", 0xb829 }, + { FF_TEX_CT, "TEXCT", 0, 0xb829 }, + { FF_CTDEF, "CT-DEF", "CTDEF", 0x7011 }, { FF_CT0_CODE, "C0CODE", "CT0-CODE", 0x1 }, { FF_CT0_CODE, "CT0CODE", 0, 0x1 }, { FF_CT0_DATA, "C0DATA", "CT0-DATA", 0x1 }, { FF_CT0_DATA, "CT0DATA", 0, 0x1 }, { FF_CT1_CODE, "C1CODE", "CT1-CODE", 0x1 }, { FF_CT1_CODE, "CT1CODE", 0, 0x1 }, - { FF_CT1_DATA, "C1DATA", "CT1-DATA", 0x4c01 }, - { FF_CT1_DATA, "CT1DATA", "CTCODE", 0x4c01 }, + { FF_CT1_DATA, "C1DATA", "CT1-DATA", 0x9801 }, + { FF_CT1_DATA, "CT1DATA", "CTCODE", 0x9801 }, { FF_CUP1, "CUP1", 0, 0x1 }, { FF_CRS1, "CRS1", 0, 0x1 }, { FF_MOD1, "MOD1", 0, 0x1 }, { FF_MOD2, "MOD2", 0, 0x1 }, { FF_OVR1, "OVR1", 0, 0x1 }, - { FF_LE_BIN, "LE-BIN", "LEBIN", 0x4c01 }, - { FF_LEX, "LEX", 0, 0x1c01 }, - { FF_LEX_TXT, "LEX-TXT", "LEXTXT", 0x3811 }, - { FF_LPAR, "LPAR", 0, 0x3811 }, - { FF_LEDEF, "LE-DEF", "LEDEF", 0x3811 }, - { FF_LEDIS, "LE-DIS", "LEDIS", 0x1811 }, - { FF_LEREF, "LE-REF", "LEREF", 0x1811 }, - { FF_LESTR, "LE-STR", "LESTR", 0x1811 }, - { FF_SHA1REF, "SHA1REF", 0, 0x1011 }, - { FF_PREFIX, "PREFIX", 0, 0x1811 }, - { FF_MTCAT, "MTCAT", 0, 0x1811 }, + { FF_LE_BIN, "LE-BIN", "LEBIN", 0x9801 }, + { FF_LEX, "LEX", 0, 0x3801 }, + { FF_LEX_TXT, "LEX-TXT", "LEXTXT", 0x7011 }, + { FF_LPAR, "LPAR", 0, 0x7011 }, + { FF_LEDEF, "LE-DEF", "LEDEF", 0x7011 }, + { FF_LEDIS, "LE-DIS", "LEDIS", 0x3011 }, + { FF_LEREF, "LE-REF", "LEREF", 0x3011 }, + { FF_LESTR, "LE-STR", "LESTR", 0x3011 }, + { FF_SHA1REF, "SHA1REF", 0, 0x2011 }, + { FF_SHA1ID, "SHA1ID", 0, 0x2011 }, + { FF_PREFIX, "PREFIX", 0, 0x3011 }, + { FF_MTCAT, "MTCAT", 0, 0x3011 }, { FF_CT_SHA1, "CT-SHA1", "CTSHA1", 0x11 }, { FF_MDL_TXT, "MDL-TXT", "MDLTXT", 0x11 }, - { FF_PAT_TXT, "PAT-TXT", "PATTXT", 0x3811 }, - { FF_TPL, "TPL", 0, 0x1c09 }, - { FF_BTI, "BTI", "BTIENV", 0x1c09 }, - { FF_BTI, "BTIMAT", 0, 0x1c09 }, - { FF_BREFT_IMG, "BREFT-IMG", "BREFTIMG", 0x1c09 }, - { FF_BREFT_IMG, "BT-IMG", "BTIMG", 0x1c09 }, - { FF_BMG, "BMG", "MESGBMG1", 0x1c01 }, - { FF_BMG_TXT, "BMG-TXT", "BMGTXT", 0x1811 }, - { FF_KCL, "KCL", 0, 0x5c01 }, - { FF_KCL_TXT, "KCL-TXT", "KCLTXT", 0x3811 }, - { FF_WAV_OBJ, "WAV-OBJ", "WAVOBJ", 0x3811 }, - { FF_SKP_OBJ, "SKP-OBJ", "SKPOBJ", 0x3811 }, - { FF_KMP, "KMP", 0, 0x1c01 }, - { FF_KMP_TXT, "KMP-TXT", "KMPTXT", 0x3811 }, + { FF_PAT_TXT, "PAT-TXT", "PATTXT", 0x7011 }, + { FF_TPL, "TPL", 0, 0x3809 }, + { FF_BTI, "BTI", "BTIENV", 0x3809 }, + { FF_BTI, "BTIMAT", 0, 0x3809 }, + { FF_BREFT_IMG, "BREFT-IMG", "BREFTIMG", 0x3809 }, + { FF_BREFT_IMG, "BT-IMG", "BTIMG", 0x3809 }, + { FF_BMG, "BMG", "MESGBMG1", 0x3801 }, + { FF_BMG_TXT, "BMG-TXT", "BMGTXT", 0x3011 }, + { FF_KCL, "KCL", 0, 0xb801 }, + { FF_KCL_TXT, "KCL-TXT", "KCLTXT", 0x7011 }, + { FF_WAV_OBJ, "WAV-OBJ", "WAVOBJ", 0x7011 }, + { FF_SKP_OBJ, "SKP-OBJ", "SKPOBJ", 0x7011 }, + { FF_KMP, "KMP", 0, 0x3801 }, + { FF_KMP_TXT, "KMP-TXT", "KMPTXT", 0x7011 }, { FF_ITEMSLT, "ITEMSLT", "SLT", 0x1 }, { FF_ITEMSLT_TXT, "ITEMSLT-TXT", "ITEMSLTTXT", 0x11 }, - { FF_KMG, "KMG", 0, 0x1801 }, - { FF_KMG_TXT, "KMG-TXT", "KMGTXT", 0x3811 }, + { FF_KMG, "KMG", 0, 0x3001 }, + { FF_KMG_TXT, "KMG-TXT", "KMGTXT", 0x7011 }, { FF_KRM, "KRM", 0, 0x1 }, { FF_KRM_TXT, "KRM-TXT", "KRMTXT", 0x11 }, { FF_KRT, "KRT", 0, 0x1 }, { FF_KRT_TXT, "KRT-TXT", "KRTTXT", 0x11 }, - { FF_OBJFLOW, "OBFLOW", "OBJFLOW", 0x1801 }, - { FF_OBJFLOW_TXT, "OBJFLOW-TXT", "OBJFLOWTXT", 0x3811 }, - { FF_OBJFLOW_TXT, "OF-TXT", "OFTXT", 0x3811 }, - { FF_GH_ITEM, "GH-ITEM", "GHITEM", 0x1801 }, - { FF_GH_ITEM_TXT, "GH-ITEM-TXT", "GHITEMTXT", 0x3811 }, - { FF_GH_ITEM_TXT, "GI-TXT", "GITXT", 0x3811 }, - { FF_GH_IOBJ, "GH-IOBJ", "GHIOBJ", 0x1801 }, - { FF_GH_IOBJ_TXT, "GH-IOBJ-TXT", "GHIOBJTXT", 0x3811 }, - { FF_GH_IOBJ_TXT, "GIOTXT", 0, 0x3811 }, - { FF_GH_KART, "GH-KART", "GHKART", 0x1801 }, - { FF_GH_KART_TXT, "GH-KART-TXT", "GHKARTTXT", 0x3811 }, - { FF_GH_KART_TXT, "GK-TXT", "GKTXT", 0x3811 }, - { FF_GH_KOBJ, "GH-KOBJ", "GHKOBJ", 0x1801 }, - { FF_GH_KOBJ_TXT, "GH-KOBJ-TXT", "GHKOBJTXT", 0x3811 }, - { FF_GH_KOBJ_TXT, "GKOTXT", 0, 0x3811 }, + { FF_OBJFLOW, "OBFLOW", "OBJFLOW", 0x3001 }, + { FF_OBJFLOW_TXT, "OBJFLOW-TXT", "OBJFLOWTXT", 0x7011 }, + { FF_OBJFLOW_TXT, "OF-TXT", "OFTXT", 0x7011 }, + { FF_GH_ITEM, "GH-ITEM", "GHITEM", 0x3001 }, + { FF_GH_ITEM_TXT, "GH-ITEM-TXT", "GHITEMTXT", 0x7011 }, + { FF_GH_ITEM_TXT, "GI-TXT", "GITXT", 0x7011 }, + { FF_GH_IOBJ, "GH-IOBJ", "GHIOBJ", 0x3001 }, + { FF_GH_IOBJ_TXT, "GH-IOBJ-TXT", "GHIOBJTXT", 0x7011 }, + { FF_GH_IOBJ_TXT, "GIOTXT", 0, 0x7011 }, + { FF_GH_KART, "GH-KART", "GHKART", 0x3001 }, + { FF_GH_KART_TXT, "GH-KART-TXT", "GHKARTTXT", 0x7011 }, + { FF_GH_KART_TXT, "GK-TXT", "GKTXT", 0x7011 }, + { FF_GH_KOBJ, "GH-KOBJ", "GHKOBJ", 0x3001 }, + { FF_GH_KOBJ_TXT, "GH-KOBJ-TXT", "GHKOBJTXT", 0x7011 }, + { FF_GH_KOBJ_TXT, "GKOTXT", 0, 0x7011 }, { FF_DRIVER, "DRIVER", "DRV", 0x1 }, { FF_VEHICLE, "VEH", "VEHICLE", 0x1 }, { FF_BRASD, "BRASD", 0, 0x1 }, { FF_RKG, "RKG", 0, 0x1 }, { FF_RKCO, "RKCO", 0, 0x1 }, - { FF_STATICR, "REL", "STATICR", 0x4001 }, - { FF_DOL, "DOL", 0, 0x4201 }, + { FF_STATICR, "REL", "STATICR", 0x8001 }, + { FF_DOL, "DOL", 0, 0x8401 }, { FF_GCT, "GCT", 0, 0x1 }, + { FF_GCT_TXT, "GCT", "GCT-TXT", 0x1 }, + { FF_GCT_TXT, "GCTTXT", 0, 0x1 }, { FF_GCH, "GCH", 0, 0x1 }, { FF_WCH, "WCH", 0, 0x1 }, { FF_WPF, "WPF", 0, 0x1 }, { FF_XPF, "XPF", 0, 0x1 }, { FF_DISTRIB, "DISTRIB", 0, 0x11 }, - { FF_PNG, "PNG", 0, 0x1889 }, + { FF_PNG, "PNG", 0, 0x3089 }, { FF_PORTDB, "PORTDB", 0, 0x81 }, { FF_SCRIPT, "SCRIPT", 0, 0x91 }, { FF_JSON, "JSON", 0, 0x91 }, diff --git a/project/src/file-type.h b/project/src/file-type.h index f8082d7..deb6f76 100644 --- a/project/src/file-type.h +++ b/project/src/file-type.h @@ -19,31 +19,32 @@ // [[ff_attrib_t]] typedef enum ff_attrib_t { - FFT_VALID = 0x0001, // a valid file format + FFT_VALID = 0x00001, // a valid file format - FFT_COMPRESS = 0x0002, // is a compression format - FFT_ARCHIVE = 0x0004, // is a supported archive - FFT_GRAPHIC = 0x0008, // graphic image format - FFT_TEXT = 0x0010, // (decoded) text file - FFT_M_FTYPE = 0x001e, // mask of file types + FFT_COMPRESS = 0x00002, // is a compression format + FFT_ARCHIVE = 0x00004, // is a supported archive + FFT_GRAPHIC = 0x00008, // graphic image format + FFT_TEXT = 0x00010, // (decoded) text file + FFT_M_FTYPE = 0x0001e, // mask of file types - FFT_BRSUB = 0x0020, // is a BRRES sub file - FFT_BRSUB2 = 0x0040, // have a scondary file structure like a BRSUB - FFT_EXTERNAL = 0x0080, // external file format - FFT_M_CLASS = 0x00e0, // mask of file classes + FFT_BRSUB = 0x00020, // is a BRRES sub file + FFT_BRSUB2 = 0x00040, // have a scondary file structure like a BRSUB + FFT_EXTERNAL = 0x00080, // external file format + FFT_TRACK = 0x00100, // can be a track file + FFT_M_CLASS = 0x001e0, // mask of file classes - FFT_CREATE = 0x0100, // creation supported - FFT_EXTRACT = 0x0200, // extracting supported - FFT_CUT = 0x0400, // 'cut-files' supported - FFT_DECODE = 0x0800, // decoding supported - FFT_ENCODE = 0x1000, // encoding supported - FFT_PARSER = 0x2000, // parser support on encoding - FFT_PATCH = 0x4000, // patching of binaries - FFT_LINK = 0x8000, // hardlinks supported - FFT_M_SUPPORT = 0xff00, // mask of supported operations + FFT_CREATE = 0x00200, // creation supported + FFT_EXTRACT = 0x00400, // extracting supported + FFT_CUT = 0x00800, // 'cut-files' supported + FFT_DECODE = 0x01000, // decoding supported + FFT_ENCODE = 0x02000, // encoding supported + FFT_PARSER = 0x04000, // parser support on encoding + FFT_PATCH = 0x08000, // patching of binaries + FFT_LINK = 0x10000, // hardlinks supported + FFT_M_SUPPORT = 0x1fe00, // mask of supported operations - FFT_NONE = 0x0000, // none set - FFT_M_ALL = 0xffff // all flags of above + FFT_NONE = 0x00000, // none set + FFT_M_ALL = 0x1ffff // all flags of above } ff_attrib_t; @@ -77,121 +78,124 @@ typedef enum file_format_t FF_BREFT, // 14 FF_RKC, // 15 FF_PACK, // 16 - FF_LTA, // 17 - FF_LFL, // 18 + FF_USE_LTA, // 17 + FF_LTA, // 18 + FF_LFL, // 19 - FF_CHR, // 19 - FF_CLR, // 20 - FF_MDL, // 21 - FF_PAT, // 22 - FF_SCN, // 23 - FF_SHP, // 24 - FF_SRT, // 25 - FF_TEX, // 26 + FF_CHR, // 20 + FF_CLR, // 21 + FF_MDL, // 22 + FF_PAT, // 23 + FF_SCN, // 24 + FF_SHP, // 25 + FF_SRT, // 26 + FF_TEX, // 27 - FF_TEX_CT, // 27 - FF_CTDEF, // 28 + FF_TEX_CT, // 28 + FF_CTDEF, // 29 - FF_CT0_CODE, // 29 - FF_CT0_DATA, // 30 - FF_CT1_CODE, // 31 - FF_CT1_DATA, // 32 + FF_CT0_CODE, // 30 + FF_CT0_DATA, // 31 + FF_CT1_CODE, // 32 + FF_CT1_DATA, // 33 - FF_CUP1, // 33 - FF_CRS1, // 34 - FF_MOD1, // 35 - FF_MOD2, // 36 - FF_OVR1, // 37 + FF_CUP1, // 34 + FF_CRS1, // 35 + FF_MOD1, // 36 + FF_MOD2, // 37 + FF_OVR1, // 38 - FF_LE_BIN, // 38 - FF_LEX, // 39 - FF_LEX_TXT, // 40 + FF_LE_BIN, // 39 + FF_LEX, // 40 + FF_LEX_TXT, // 41 - FF_LPAR, // 41 - FF_LEDEF, // 42 - FF_LEDIS, // 43 - FF_LEREF, // 44 - FF_LESTR, // 45 - FF_SHA1REF, // 46 - FF_PREFIX, // 47 - FF_MTCAT, // 48 - FF_CT_SHA1, // 49 + FF_LPAR, // 42 + FF_LEDEF, // 43 + FF_LEDIS, // 44 + FF_LEREF, // 45 + FF_LESTR, // 46 + FF_SHA1REF, // 47 + FF_SHA1ID, // 48 + FF_PREFIX, // 49 + FF_MTCAT, // 50 + FF_CT_SHA1, // 51 - FF_MDL_TXT, // 50 + FF_MDL_TXT, // 52 - FF_PAT_TXT, // 51 + FF_PAT_TXT, // 53 - FF_TPL, // 52 - FF_BTI, // 53 - FF_BREFT_IMG, // 54 + FF_TPL, // 54 + FF_BTI, // 55 + FF_BREFT_IMG, // 56 - FF_BMG, // 55 - FF_BMG_TXT, // 56 + FF_BMG, // 57 + FF_BMG_TXT, // 58 - FF_KCL, // 57 - FF_KCL_TXT, // 58 - FF_WAV_OBJ, // 59 - FF_SKP_OBJ, // 60 + FF_KCL, // 59 + FF_KCL_TXT, // 60 + FF_WAV_OBJ, // 61 + FF_SKP_OBJ, // 62 - FF_KMP, // 61 - FF_KMP_TXT, // 62 + FF_KMP, // 63 + FF_KMP_TXT, // 64 - FF_ITEMSLT, // 63 - FF_ITEMSLT_TXT, // 64 + FF_ITEMSLT, // 65 + FF_ITEMSLT_TXT, // 66 - FF_KMG, // 65 - FF_KMG_TXT, // 66 + FF_KMG, // 67 + FF_KMG_TXT, // 68 - FF_KRM, // 67 - FF_KRM_TXT, // 68 + FF_KRM, // 69 + FF_KRM_TXT, // 70 - FF_KRT, // 69 - FF_KRT_TXT, // 70 + FF_KRT, // 71 + FF_KRT_TXT, // 72 - FF_OBJFLOW, // 71 - FF_OBJFLOW_TXT, // 72 + FF_OBJFLOW, // 73 + FF_OBJFLOW_TXT, // 74 - FF_GH_ITEM, // 73 - FF_GH_ITEM_TXT, // 74 + FF_GH_ITEM, // 75 + FF_GH_ITEM_TXT, // 76 - FF_GH_IOBJ, // 75 - FF_GH_IOBJ_TXT, // 76 + FF_GH_IOBJ, // 77 + FF_GH_IOBJ_TXT, // 78 - FF_GH_KART, // 77 - FF_GH_KART_TXT, // 78 + FF_GH_KART, // 79 + FF_GH_KART_TXT, // 80 - FF_GH_KOBJ, // 79 - FF_GH_KOBJ_TXT, // 80 + FF_GH_KOBJ, // 81 + FF_GH_KOBJ_TXT, // 82 - FF_DRIVER, // 81 - FF_VEHICLE, // 82 + FF_DRIVER, // 83 + FF_VEHICLE, // 84 - FF_BRASD, // 83 - FF_RKG, // 84 - FF_RKCO, // 85 + FF_BRASD, // 85 + FF_RKG, // 86 + FF_RKCO, // 87 - FF_STATICR, // 86 - FF_DOL, // 87 + FF_STATICR, // 88 + FF_DOL, // 89 - FF_GCT, // 88 - FF_GCH, // 89 - FF_WCH, // 90 - FF_WPF, // 91 - FF_XPF, // 92 - FF_DISTRIB, // 93 + FF_GCT, // 90 + FF_GCT_TXT, // 91 + FF_GCH, // 92 + FF_WCH, // 93 + FF_WPF, // 94 + FF_XPF, // 95 + FF_DISTRIB, // 96 - FF_PNG, // 94 - FF_PORTDB, // 95 + FF_PNG, // 97 + FF_PORTDB, // 98 - FF_TXT, // 96 - FF_SCRIPT, // 97 - FF_JSON, // 98 - FF_SH, // 99 - FF_BASH, // 100 - FF_PHP, // 101 - FF_MAKEDOC, // 102 + FF_TXT, // 99 + FF_SCRIPT, // 100 + FF_JSON, // 101 + FF_SH, // 102 + FF_BASH, // 103 + FF_PHP, // 104 + FF_MAKEDOC, // 105 - FF_DIRECTORY, // 103 + FF_DIRECTORY, // 106 //--- number of elements diff --git a/project/src/lecode.inc b/project/src/lecode.inc index 04caae6..2fca700 100644 --- a/project/src/lecode.inc +++ b/project/src/lecode.inc @@ -1,1747 +1,1957 @@ static const u8 lecode4_bin_lzma[] = // ./work/../pool/lecode4.bin { - // decompressed size: 0x4ef14 = 323348 bytes - 0x00,0x04,0xef,0x14, + // decompressed size: 0x75c14 = 482324 bytes + 0x00,0x07,0x5c,0x14, // LZMA.6 compressed data 0x5d,0x00,0x00,0x80, 0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x68, - 0x03,0x5f,0xec,0x25, 0x0b,0x3d,0x15,0x88, 0x3e,0xcc,0x10,0x47, 0x75,0xac,0x4c,0x00, - 0x3d,0x1b,0xfe,0x57, 0xe0,0x71,0xa8,0x4d, 0x6f,0xbf,0xbb,0xbd, 0xa6,0x0f,0x77,0xfc, - 0x59,0xff,0xf2,0xb2, 0x4c,0xc3,0x50,0xc3, 0x90,0xe2,0xfc,0x9a, 0x90,0x02,0x47,0xe5, - 0x50,0xbf,0xd9,0xc5, 0xfd,0xe5,0xb8,0x1d, 0x44,0x76,0x0d,0xf6, 0x65,0x7d,0x3f,0x66, - 0xc0,0xc6,0x86,0x5f, 0xc3,0xbe,0x51,0x01, 0x9c,0x7d,0xd0,0xd5, 0x2f,0x86,0x2d,0xdd, - 0x6b,0x50,0x20,0xe9, 0xe0,0x52,0x47,0x0b, 0xb8,0x89,0x29,0x1b, 0x79,0xae,0xed,0xa2, - 0x9f,0xf4,0x2e,0x7e, 0x0d,0xc2,0x2c,0x13, 0x07,0x24,0x2c,0x85, 0x9e,0x3e,0xf1,0xcd, - 0x43,0xe5,0x44,0x1f, 0xe7,0xa5,0x16,0x58, 0x35,0xe4,0xc7,0x74, 0xaf,0x1f,0x00,0x64, - 0x2d,0x59,0x4a,0x74, 0x58,0xad,0x51,0xc4, 0x3d,0x98,0xb9,0x0f, 0x43,0x7d,0x36,0xd4, - 0x20,0xb0,0xda,0xa0, 0x28,0x9e,0xe3,0xbc, 0xeb,0xaa,0xd5,0x10, 0x6f,0x9c,0x8a,0xc3, - 0x0d,0x0e,0xa4,0xe5, 0x9d,0xa4,0x28,0x6c, 0x85,0x6e,0x1f,0x91, 0xef,0xf9,0x0f,0x0b, - 0x6f,0xe7,0xff,0xf8, 0x61,0xe0,0x1f,0xa4, 0x60,0xf8,0x7e,0xa6, 0xb6,0xb7,0xf4,0xa7, - 0x9b,0x49,0xb1,0xb0, 0x89,0x18,0x2e,0x91, 0x2b,0xbe,0x0b,0xdf, 0x68,0x14,0x50,0xe2, - 0x7f,0x3e,0x71,0xf7, 0x13,0xcf,0xcd,0x33, 0x33,0x50,0xff,0x6d, 0x62,0xe4,0x32,0xdb, - 0x99,0x3d,0x23,0xd6, 0x4b,0xaf,0x5a,0xfb, 0x7b,0xf7,0xd4,0xf5, 0x67,0xa6,0x30,0xee, - 0x6c,0xda,0x5a,0x8a, 0xf1,0x6c,0xff,0x86, 0xce,0xab,0x3a,0x19, 0x02,0xe1,0x94,0x38, - 0x5c,0x1e,0x74,0xb1, 0x41,0x94,0x78,0x0b, 0x24,0xb1,0xf2,0x24, 0xf0,0x1c,0x4c,0x03, - 0x85,0xb5,0x6c,0x7f, 0x6f,0x4d,0x2b,0x69, 0x8b,0x73,0x35,0x45, 0x89,0x65,0x15,0x49, - 0xb2,0x4e,0x75,0x15, 0x94,0x7f,0x78,0x98, 0xb3,0x37,0xaa,0x1c, 0xa3,0x76,0x62,0x26, - 0xb3,0x37,0x7b,0xfb, 0xa2,0x6c,0x16,0x81, 0x8a,0x53,0x70,0x1f, 0x27,0x64,0x6a,0x60, - 0x25,0x5b,0x02,0x4a, 0xc7,0x7e,0x58,0xd5, 0x6b,0x6b,0x08,0xe7, 0x5d,0x3e,0x6b,0xc7, - 0x4e,0xde,0x80,0x0e, 0x07,0x5a,0xec,0x87, 0x41,0x16,0xe6,0x59, 0x75,0x92,0xdb,0xc2, - 0x1e,0x68,0x27,0xa3, 0x6c,0x94,0xa0,0x0d, 0x13,0x50,0x84,0x02, 0x8a,0xab,0x97,0x9f, - 0x6a,0xf1,0xb3,0x9b, 0x23,0x69,0x4b,0xd5, 0x9c,0x46,0xd3,0x35, 0xe9,0x74,0x7d,0xda, - 0xce,0x37,0x75,0xfd, 0x38,0xfb,0xbe,0xd2, 0xae,0xa2,0x29,0xf6, 0xc7,0xe0,0x3d,0x62, - 0x6d,0x7f,0xd5,0x35, 0xe7,0x50,0x02,0xf5, 0xc9,0x9d,0x4c,0x38, 0x87,0x82,0x44,0x37, - 0x4d,0x1d,0xf7,0xb2, 0x79,0x3a,0x5a,0x36, 0x85,0xb9,0x9b,0x72, 0x44,0x4c,0x2a,0x4d, - 0xba,0x8a,0x49,0xf8, 0x8d,0xeb,0x9e,0x90, 0xea,0x1f,0x82,0xa5, 0x85,0xfa,0x5b,0xfc, - 0xd8,0x1c,0x51,0xa5, 0xae,0x9c,0x83,0x41, 0xa1,0x94,0x15,0x43, 0x26,0x3e,0xbb,0x4e, - 0x9b,0xb8,0x30,0x58, 0x31,0x43,0xee,0x55, 0x6d,0xd3,0x44,0xeb, 0x67,0x19,0xe6,0x91, - 0x58,0x26,0xda,0xa8, 0xcf,0xff,0xc0,0x21, 0x48,0x4a,0x87,0x73, 0x9e,0xd0,0xc2,0x30, - 0x1e,0x12,0x96,0xee, 0x50,0x8c,0x02,0x6e, 0x0f,0xce,0x17,0x0a, 0xed,0xc7,0x77,0xa8, - 0x59,0x5d,0xac,0x9d, 0xcc,0x35,0x06,0xad, 0xa5,0x72,0xf7,0x0c, 0x90,0x28,0xa2,0xdb, - 0x0d,0xba,0xb2,0x18, 0x7e,0xc5,0x54,0x4a, 0x48,0x88,0x24,0x75, 0xa7,0xc3,0x07,0x94, - 0x11,0x29,0x14,0xb4, 0x0c,0xec,0x5c,0xaa, 0x3b,0xaa,0xfe,0xf6, 0x8a,0xf6,0xce,0xc6, - 0xec,0x21,0x94,0xcb, 0x1d,0x2a,0x36,0xb8, 0x04,0x16,0x2e,0xcb, 0xf5,0x69,0x0e,0x7e, - 0x72,0x94,0x3f,0x86, 0x2b,0x61,0x05,0x52, 0x8e,0xd5,0x98,0x3a, 0xba,0xa5,0x26,0x73, - 0x87,0x11,0xcc,0x65, 0xff,0x29,0x5b,0x0f, 0xfd,0x69,0xed,0x2a, 0x2c,0xac,0x21,0x90, - 0xe6,0xbe,0x53,0x83, 0xe7,0x1a,0x28,0x98, 0x09,0x06,0x89,0x25, 0x91,0x83,0xf3,0x12, - 0x33,0x9d,0xe0,0xcd, 0xe4,0x6f,0x39,0x6a, 0xd4,0xa4,0x2a,0xf4, 0xde,0x68,0x8e,0x7d, - 0xa5,0xb2,0x07,0xa1, 0x25,0xf7,0x3a,0x0f, 0x2b,0x9f,0x16,0xf3, 0xfb,0xb8,0xb3,0x8e, - 0x60,0x8d,0xb4,0xbe, 0xf4,0xcb,0x46,0x53, 0xc4,0xe2,0x4d,0x13, 0x5c,0x5e,0x82,0x2a, - 0x84,0x8c,0x35,0xd7, 0xe5,0x1f,0xef,0x0b, 0xe9,0x5a,0x1c,0xcb, 0x1a,0xd5,0x47,0x93, - 0x41,0xc9,0x75,0x69, 0xd6,0x1d,0x69,0x44, 0x38,0x6d,0x0d,0x0a, 0x69,0x7c,0xe9,0x75, - 0xb3,0x51,0x2b,0xb2, 0xac,0xbe,0x48,0xa8, 0x55,0xfe,0x57,0xe7, 0x9c,0xf1,0x54,0x5b, - 0xac,0x5e,0x7b,0x22, 0x22,0x11,0x1e,0x57, 0x5b,0x04,0xfc,0xb9, 0x7f,0x1d,0xf8,0xcc, - 0x31,0x7a,0x6e,0xa5, 0x21,0xc9,0x1f,0xdf, 0x35,0x72,0x30,0x56, 0x1f,0xce,0x1f,0x07, - 0xe3,0x48,0xbf,0xbe, 0x09,0x42,0xa5,0x2b, 0x51,0xed,0xbf,0xce, 0xf1,0x95,0x93,0xd7, - 0x2c,0xf4,0x9b,0xac, 0x57,0xfc,0x6b,0x79, 0x84,0x74,0x3e,0x23, 0xa1,0x73,0x2d,0x76, - 0x32,0xc9,0x90,0x40, 0xcd,0x0d,0xbb,0xc8, 0x0e,0x31,0xe1,0x45, 0x34,0x51,0xf0,0x83, - 0x72,0xf3,0x50,0x2e, 0xef,0x7b,0x29,0x5d, 0x26,0x48,0xcd,0xb8, 0xba,0x51,0x81,0xc9, - 0x78,0xea,0xaa,0x47, 0xc3,0xc3,0x0a,0xe5, 0x27,0x04,0xdb,0x90, 0xab,0x53,0x07,0x9a, - 0x41,0xc6,0x94,0x84, 0x64,0x27,0x09,0xfd, 0x57,0xc5,0xd3,0x36, 0x62,0x35,0x0b,0xd2, - 0xb9,0x2c,0x89,0x64, 0xdd,0x93,0x8b,0xd2, 0x2b,0x2f,0xf0,0x16, 0xcb,0xc0,0x79,0x3b, - 0xde,0x28,0x76,0x45, 0xe0,0x40,0x26,0xfe, 0xb9,0x46,0xee,0xc4, 0xb0,0x2f,0x6f,0xf5, - 0xd0,0x88,0x54,0x99, 0x9e,0x8e,0xe3,0x2d, 0xf8,0x5a,0x46,0x53, 0xb2,0x76,0x43,0x12, - 0x8f,0xdd,0x9e,0x4d, 0x5d,0x0d,0xf4,0x8a, 0x65,0x07,0xc0,0x23, 0x44,0xbf,0x0f,0x4c, - 0x94,0x6f,0x71,0xea, 0x2e,0x3e,0x88,0x6b, 0xb1,0x82,0x1e,0xab, 0x60,0x2d,0xc6,0x7d, - 0xab,0xdf,0x1b,0x3d, 0xde,0x98,0xab,0x25, 0xac,0x46,0x5b,0x1e, 0x58,0xa1,0xe3,0x6e, - 0x09,0xa3,0x51,0xe2, 0x3c,0xcf,0xc5,0x86, 0x49,0x53,0x96,0x4f, 0xc8,0xfa,0xa6,0x34, - 0x92,0x14,0xe9,0xad, 0xfb,0x6e,0xad,0x84, 0x26,0x79,0x4a,0xe1, 0xca,0x65,0x89,0xae, - 0x4e,0x9d,0x3b,0x1a, 0x0e,0xc3,0xc3,0x9d, 0xb0,0xec,0xb4,0x38, 0xc3,0x4d,0x8a,0xdc, - 0x14,0x27,0x3b,0x28, 0xdd,0xde,0x75,0x99, 0x98,0x21,0x62,0x66, 0xd6,0x8c,0x87,0x2b, - 0x62,0xd7,0x7a,0xb8, 0xb5,0x06,0xd3,0x44, 0xa9,0xff,0x03,0x46, 0xaa,0x98,0x4f,0x6b, - 0xdb,0xcb,0x8b,0xb9, 0xd5,0x31,0x7f,0xbe, 0x75,0x67,0x53,0x16, 0xd5,0x12,0x3f,0xe9, - 0x48,0x1c,0x4f,0xd9, 0x2a,0x34,0x8b,0xcf, 0xd0,0x09,0xa4,0xbd, 0xfa,0x63,0xc3,0xfa, - 0x01,0xf5,0xaa,0x50, 0xdd,0x30,0xd6,0xd9, 0xa2,0xc9,0xa2,0x03, 0x35,0x62,0xfa,0xfb, - 0xf8,0x5c,0x28,0x61, 0x10,0x4b,0xf7,0x9c, 0xe4,0xa7,0xd2,0xb1, 0xd3,0x31,0x8d,0xda, - 0x12,0x6b,0x20,0xc4, 0xb2,0xf4,0x10,0x64, 0x7f,0x9a,0xd5,0x14, 0x35,0x38,0x98,0x15, - 0xf0,0x1a,0xc4,0x0f, 0x07,0xc2,0xa0,0x64, 0x8b,0x27,0x08,0xa0, 0x3c,0xf1,0x8d,0xcc, - 0xf1,0xdb,0x7d,0x28, 0x50,0xa6,0xd8,0x5e, 0x67,0x48,0xd4,0x54, 0x0a,0xe2,0xc0,0xf5, - 0xfc,0x7c,0xfd,0xbd, 0x19,0x93,0xfc,0xb1, 0xa8,0xb3,0x48,0xcb, 0x7b,0xa1,0xff,0x66, - 0x46,0x0f,0x65,0x02, 0xce,0x6f,0x2e,0xc7, 0xdd,0xca,0xec,0x22, 0xcb,0x35,0x4e,0x77, - 0x35,0x05,0x00,0x88, 0xbd,0x1b,0x55,0x11, 0x5f,0xe1,0xcc,0xc7, 0x7e,0x01,0x44,0xb5, - 0x00,0xc5,0x8c,0x07, 0x07,0x77,0x8b,0xe0, 0x13,0xdd,0x18,0x6e, 0x73,0xa9,0x41,0xfe, - 0xca,0xe4,0x6a,0xbe, 0x3d,0x70,0x9f,0x89, 0xa1,0xbf,0x95,0x3b, 0x1c,0x00,0xdb,0x7d, - 0x37,0xbd,0x4a,0xdf, 0x2b,0xe8,0xb6,0x07, 0x30,0xaa,0xac,0x3b, 0x52,0x27,0xf0,0x33, - 0x99,0x68,0x9b,0xad, 0x69,0xec,0x0c,0x67, 0xc9,0x8f,0x75,0xba, 0x31,0xba,0x47,0x5d, - 0x64,0x55,0x0d,0x74, 0xae,0xec,0x50,0x39, 0xba,0xcf,0x48,0x1c, 0x67,0xae,0xdc,0x25, - 0xdd,0x72,0x18,0x6a, 0xac,0x8f,0xc0,0x7c, 0x6f,0x48,0x0f,0xee, 0x19,0xf5,0xb3,0x44, - 0xc2,0x8d,0x8e,0xab, 0xc7,0x1f,0x58,0xe1, 0x30,0x93,0x20,0x8c, 0x2d,0xf8,0x17,0xc7, - 0x8c,0xca,0xb4,0x4b, 0xa8,0xc3,0x07,0xb0, 0x8f,0x5a,0xd0,0xe5, 0xab,0xe8,0x55,0x6b, - 0x3f,0xe2,0xb9,0x60, 0x99,0x3c,0x78,0x2b, 0xf5,0xbc,0x12,0xfa, 0xa0,0xad,0xb3,0x12, - 0x1e,0xbd,0x67,0x4f, 0xe8,0xf2,0x32,0x85, 0xc6,0x03,0xad,0xc7, 0x78,0x6b,0x78,0x75, - 0x1e,0x32,0x90,0x70, 0xb3,0xde,0x7c,0xb2, 0x86,0x18,0x4c,0x24, 0x8f,0xb8,0xe3,0x40, - 0x79,0xa1,0xb5,0x18, 0xba,0xde,0xee,0x55, 0xa9,0x0d,0x74,0x85, 0xa7,0x8b,0x26,0xda, - 0x4d,0xd0,0xa7,0xd2, 0x14,0x4c,0xe5,0xca, 0xd2,0x8e,0x4c,0x20, 0xdc,0x32,0x22,0x91, - 0x71,0xb8,0x81,0x85, 0x9b,0x5b,0xbe,0xd3, 0x37,0xfb,0x60,0x03, 0x29,0xaa,0x7d,0x85, - 0xfd,0x6a,0xc2,0x81, 0x2d,0xe8,0xb3,0x3b, 0xe9,0x75,0x6b,0xac, 0x69,0x96,0xee,0x15, - 0x70,0x65,0xf0,0xf8, 0x63,0x10,0x4c,0x0a, 0x90,0x71,0x11,0x04, 0xc5,0xdc,0x3c,0x75, - 0x64,0x71,0xf7,0x85, 0x30,0x95,0x30,0x5c, 0xf4,0xac,0xa5,0xc2, 0x42,0xc2,0x02,0xcf, - 0x95,0xf4,0xbe,0x75, 0x58,0x86,0x53,0xfb, 0x6d,0x10,0x18,0xfa, 0x21,0x94,0x9c,0x1a, - 0x79,0xee,0x92,0x3c, 0x6d,0xad,0x32,0xc5, 0xe8,0x09,0xa6,0xe0, 0x88,0x00,0x9f,0x87, - 0x78,0x03,0xd6,0x10, 0x6e,0x05,0xd6,0xa5, 0x2c,0x89,0x4e,0x78, 0x48,0xa7,0xcd,0xb0, - 0xe5,0xc6,0x6f,0x75, 0x9c,0x8c,0x15,0x81, 0x78,0x78,0x46,0xb7, 0x99,0x8c,0x25,0xe2, - 0x8c,0x54,0x39,0x39, 0x16,0x25,0x50,0x06, 0x72,0x48,0xb3,0x51, 0xab,0xf7,0x19,0x6a, - 0x3d,0xb2,0x78,0x44, 0xac,0xb7,0x55,0xd3, 0x3b,0xa9,0x17,0x0b, 0x8c,0xae,0xea,0x13, - 0xec,0xd3,0xd1,0xdb, 0x58,0xb5,0x39,0x70, 0x10,0xe1,0x37,0xb9, 0x51,0xab,0x6c,0x4e, - 0xe0,0xf6,0x4a,0x97, 0x4c,0xbf,0x8c,0x28, 0x46,0x61,0x2a,0xeb, 0x2c,0xd0,0xb1,0x84, - 0x0c,0x4b,0xaf,0xea, 0x39,0x3a,0xeb,0x6d, 0x3f,0x8d,0x9a,0xe1, 0x09,0x6d,0xfb,0x03, - 0x22,0x9b,0xaa,0xfb, 0x68,0x0f,0x8b,0x8b, 0x4e,0x43,0x63,0xcb, 0x34,0x46,0x03,0x67, - 0x9f,0xd1,0x03,0x3a, 0x42,0xac,0x98,0xae, 0xc6,0x4a,0xe5,0x62, 0xe7,0x03,0xf5,0xcd, - 0x59,0x42,0x26,0xff, 0x32,0x22,0x33,0x94, 0xc1,0xce,0xb2,0x4d, 0xe6,0x0d,0xdf,0xa4, - 0xa8,0x1c,0x3d,0x1e, 0x1e,0x66,0x7a,0x54, 0x82,0x90,0x5a,0x55, 0x90,0x6e,0xa6,0x81, - 0xb7,0x30,0x0e,0xba, 0xd5,0x04,0x68,0x4f, 0x8a,0xe3,0xa1,0xc2, 0x78,0x44,0xd1,0xa2, - 0xb7,0x16,0x8b,0x3d, 0x1f,0x0d,0x9b,0x22, 0xfa,0x12,0xf3,0x9e, 0xb1,0x66,0x4e,0xaf, - 0xe0,0xf4,0x21,0x1e, 0x30,0x4c,0x06,0x56, 0x70,0x7e,0x12,0x3d, 0x60,0x26,0xe1,0x1b, - 0xf7,0xea,0xce,0xd9, 0xc4,0xa0,0xc1,0x36, 0x16,0x27,0x1e,0xcf, 0xa0,0x65,0xb6,0x53, - 0x01,0x3f,0xbd,0x2c, 0x3e,0xaf,0xd9,0x40, 0xad,0xf1,0x67,0x55, 0x2c,0x0d,0xab,0x2a, - 0x20,0x90,0x13,0x09, 0x17,0xec,0x71,0xc2, 0x1d,0x59,0x59,0x4d, 0x8a,0xfe,0x2b,0x0c, - 0x52,0x02,0x43,0x6a, 0x83,0x4d,0x9a,0xca, 0x00,0x66,0x1b,0x32, 0x6d,0x1f,0xe6,0x28, - 0xf7,0x3c,0x71,0xbd, 0x45,0xa9,0x6f,0x7b, 0xd5,0x5b,0x87,0x26, 0x5d,0x7b,0x7e,0x8a, - 0x44,0x72,0xd7,0x9c, 0x02,0xc9,0xa7,0x47, 0x99,0x80,0x81,0x41, 0x5e,0xf6,0xdb,0xa9, - 0xd8,0x36,0x04,0xb7, 0x2b,0x72,0x2e,0x56, 0x58,0x35,0x7b,0x94, 0xff,0xfb,0xd9,0x4e, - 0xb1,0x0e,0x2a,0xf0, 0xad,0x81,0x90,0x60, 0x45,0x34,0xac,0x5f, 0x3a,0xb8,0x79,0x90, - 0xee,0x77,0x9f,0xdd, 0x9b,0xf1,0x73,0x91, 0x11,0x4d,0x6f,0x6c, 0xb7,0x5d,0x02,0xa7, - 0x8f,0x89,0x7c,0x27, 0x81,0x30,0x2b,0x04, 0xef,0xa2,0x59,0x77, 0x65,0x1d,0x48,0x15, - 0xff,0x13,0x64,0xfb, 0xc7,0xb5,0x6d,0xcb, 0xc7,0x59,0x4d,0xaf, 0xe0,0x70,0x4e,0x74, - 0x04,0x00,0x7d,0xb7, 0x9a,0x48,0xf6,0x3e, 0x84,0x74,0x77,0xdd, 0x70,0xb3,0xc5,0xf9, - 0xca,0xec,0x86,0xb5, 0xc3,0xb7,0x83,0xc4, 0x3d,0xb4,0x99,0xc8, 0x3a,0xc0,0x64,0x44, - 0x8c,0xc9,0x39,0xd8, 0xb7,0xf7,0xe1,0xf7, 0x46,0x1a,0xe2,0x72, 0x99,0x2d,0xd2,0xbd, - 0x3e,0xe3,0xc8,0x39, 0x02,0x19,0x54,0x8a, 0x8d,0x4f,0x60,0xd2, 0xd7,0x08,0xe2,0x9c, - 0x4b,0xa5,0xa2,0xda, 0x79,0xcf,0x7e,0x76, 0xa3,0xfc,0x80,0xff, 0xef,0x85,0x26,0x9b, - 0x45,0x4f,0x05,0x27, 0x06,0x21,0x93,0x4d, 0xbe,0x5f,0xc8,0x54, 0xfa,0x20,0x0a,0x00, - 0x5f,0xeb,0xea,0x93, 0xd3,0xd0,0xc4,0x09, 0xc6,0x08,0xe0,0xdb, 0xd1,0xdc,0xf4,0x3d, - 0x7a,0xd9,0xa3,0x8b, 0xea,0x82,0x7a,0x75, 0x76,0xd3,0xfc,0x8a, 0x5d,0x69,0xc4,0x64, - 0xe7,0x90,0x36,0xaa, 0x8f,0xe0,0xb6,0x6c, 0xda,0x88,0xfb,0xb9, 0x78,0xc8,0x06,0xfc, - 0x92,0xa3,0x53,0x57, 0x1d,0x7a,0x6f,0x0a, 0x4a,0xa9,0x6f,0x29, 0x31,0x71,0xf4,0x7c, - 0x74,0x8a,0x34,0x5c, 0xc1,0x1b,0x58,0x40, 0xf8,0xed,0x2c,0x7a, 0xeb,0x18,0x57,0xb4, - 0xb2,0x6a,0x15,0x8f, 0xa6,0x96,0xd6,0x28, 0x6b,0xe3,0x5e,0xf7, 0xad,0x7e,0x3e,0xda, - 0x22,0xbb,0x6e,0xca, 0x46,0x7f,0x94,0x17, 0xa9,0xa4,0xe4,0xf2, 0xf5,0x56,0xb2,0xf4, - 0xbc,0x7a,0xf2,0x42, 0x74,0xa6,0x6c,0x62, 0xd4,0xd0,0xa5,0xee, 0x95,0x50,0xe7,0xd6, - 0xc9,0x36,0x98,0x90, 0xd9,0xa8,0x6a,0x03, 0xdd,0x02,0xd1,0xf8, 0xa6,0x02,0xa3,0x50, - 0xf7,0xb7,0x79,0xd4, 0x35,0x5b,0x06,0x0f, 0xcc,0x11,0x00,0xd7, 0x31,0xc6,0x3d,0x17, - 0xef,0xa0,0xdf,0xa2, 0x00,0xc1,0xeb,0xaf, 0x84,0xbc,0x34,0x69, 0x28,0x9f,0x1b,0xf2, - 0x3d,0xe8,0xf6,0x9e, 0x2d,0xbb,0xf9,0x45, 0xee,0x98,0x90,0x6f, 0x2a,0x86,0x9f,0x32, - 0x35,0x8f,0x6a,0xe1, 0x41,0xfb,0x1a,0x6d, 0x2d,0x96,0x3b,0x49, 0x0b,0xf5,0x1c,0x02, - 0x39,0xe3,0x32,0x37, 0xa2,0x7d,0x2c,0x14, 0x3b,0x80,0x6c,0x2a, 0x18,0xe1,0xf2,0x80, - 0x2f,0x15,0xa8,0xd7, 0x61,0xc0,0x04,0x68, 0x2c,0x52,0x22,0x0a, 0x7f,0x8e,0xc1,0xbf, - 0x9d,0xa0,0x64,0x35, 0x56,0x77,0x3e,0xdd, 0xa5,0x99,0x78,0xe9, 0x91,0xb0,0x9a,0xba, - 0x2c,0x8d,0x19,0x48, 0xfe,0xc1,0x12,0x1e, 0x9b,0xf5,0x0f,0xf8, 0xf5,0xb8,0x62,0x05, - 0x32,0xe5,0x57,0x21, 0x26,0x05,0x23,0x33, 0xf8,0x82,0x34,0x8c, 0x46,0x90,0xf4,0x9b, - 0x70,0x65,0xa0,0xa1, 0x65,0xf4,0xa6,0x99, 0xa4,0xc0,0x75,0x21, 0x82,0x12,0xd3,0x6b, - 0x94,0x5e,0x4f,0xd6, 0x5b,0x48,0x84,0x5c, 0x4f,0x5f,0xb5,0xc0, 0xa8,0xb8,0xfc,0xc8, - 0x79,0x88,0x2b,0x1d, 0x15,0xa6,0xd2,0x1e, 0x6d,0x0c,0xe8,0x23, 0x0d,0xcc,0x69,0x08, - 0x76,0xfb,0x42,0xc9, 0x87,0xc9,0x8b,0x09, 0xe2,0x93,0xfc,0x75, 0xe1,0x89,0x1a,0xc3, - 0x31,0x67,0x47,0x35, 0xb2,0xda,0x78,0xae, 0x1b,0xa8,0x34,0x60, 0x9d,0xa4,0x1e,0xdf, - 0xec,0x00,0x7e,0x5b, 0xff,0x5c,0xf0,0x6a, 0x5b,0x1f,0xf9,0xbf, 0x6f,0xa3,0xdf,0x68, - 0x9f,0x5b,0xb8,0x86, 0x47,0xfc,0xa3,0xd4, 0x3e,0x6b,0x20,0x26, 0x97,0x99,0xec,0xb3, - 0x7a,0xec,0x2c,0x0b, 0x0f,0x9e,0x61,0xa9, 0xe5,0x80,0x7e,0x7d, 0x7e,0xd7,0xf6,0xdc, - 0x35,0x09,0x7b,0x2c, 0x84,0x9b,0xa7,0x97, 0x33,0x3a,0x32,0x3d, 0xb1,0x96,0x0e,0x37, - 0x1f,0x71,0x68,0xd8, 0x37,0x52,0x37,0xf0, 0x51,0x44,0xda,0x72, 0x04,0x38,0xc8,0x65, - 0x51,0x4d,0x75,0xbc, 0x33,0x42,0x59,0x98, 0x72,0xb5,0xd4,0xbf, 0xc6,0x9c,0xb7,0xb6, - 0x6c,0xde,0xcd,0x42, 0xee,0xea,0xb7,0x8e, 0xcf,0x39,0xb0,0x0c, 0x21,0x4a,0x17,0xce, - 0x90,0x8f,0xd6,0xb9, 0x13,0x5e,0x0a,0x62, 0x90,0x1a,0xd9,0x7a, 0x7a,0x01,0xb9,0x4f, - 0xaf,0x35,0x80,0x46, 0xe8,0xdf,0xc7,0xef, 0xbd,0x76,0x05,0x4e, 0xdd,0xdb,0xc2,0x9b, - 0x43,0x3f,0x25,0xb9, 0xa1,0x50,0x06,0xff, 0x05,0x1b,0x19,0x32, 0x99,0x2a,0xfa,0x53, - 0x5b,0xfa,0x1f,0x20, 0x38,0x22,0x3a,0x35, 0x97,0x82,0xda,0x43, 0x5e,0xea,0x37,0xf6, - 0x1b,0xff,0xe5,0xcf, 0x63,0xe9,0x7a,0x6a, 0xf4,0xe9,0xe5,0xc1, 0x02,0xdf,0x68,0xed, - 0x7c,0x47,0xae,0xe3, 0x3b,0xca,0x99,0x74, 0x56,0xbd,0xc7,0x01, 0x48,0xcf,0xb5,0x72, - 0xe0,0x0b,0x09,0xeb, 0xa7,0xfd,0x2a,0x01, 0xa8,0x8d,0xa7,0x22, 0x43,0x33,0xdf,0x63, - 0x2f,0x2a,0xf8,0xb3, 0xa2,0x72,0xa7,0x77, 0x82,0xa2,0x1a,0xce, 0xfd,0x87,0x8c,0x49, - 0x2f,0xe1,0xa4,0x58, 0xb2,0x9b,0xc9,0x43, 0x10,0xec,0x54,0x2a, 0xfa,0x3a,0x1a,0x99, - 0x1e,0xda,0x3a,0x8f, 0xde,0x06,0xc2,0xbe, 0xbc,0xe1,0x5f,0xd3, 0xda,0xb4,0xff,0x31, - 0xf2,0x7f,0xf9,0xc9, 0x63,0x38,0x9f,0xb5, 0x05,0x81,0x0d,0x43, 0x92,0x5f,0x43,0x6f, - 0xad,0x20,0xde,0xf0, 0x79,0x0d,0xd5,0xdc, 0x6f,0x29,0x3f,0xce, 0xd2,0x2d,0xfa,0x55, - 0x34,0x06,0x5f,0x1c, 0x0a,0xc3,0xcb,0xbd, 0x09,0xf7,0x4f,0x58, 0xd2,0x40,0xac,0x0a, - 0x74,0x5a,0xec,0xe6, 0x74,0x0b,0x15,0x30, 0x9b,0xc6,0x58,0xb2, 0xac,0x6a,0xf5,0x3f, - 0x33,0x2c,0x07,0x6a, 0x0f,0x73,0xbe,0x06, 0xd7,0x81,0x0c,0xf2, 0x74,0x60,0x37,0x1d, - 0x6f,0xd0,0xd5,0xcf, 0xc6,0xdc,0x5e,0xfe, 0x72,0xe3,0xf4,0x2f, 0xa5,0xa5,0x74,0x39, - 0x21,0x2a,0x70,0xc1, 0x6a,0x5f,0xdc,0xf6, 0x62,0xa1,0x02,0x4f, 0xc2,0x03,0xbb,0x30, - 0x6a,0xc5,0x83,0x98, 0xa8,0x30,0x12,0x80, 0x5d,0x2f,0xe0,0x70, 0xb6,0x0d,0xa9,0x7a, - 0x9b,0x08,0x99,0xde, 0x57,0xe6,0x26,0x6a, 0x36,0x15,0xfd,0x14, 0x1b,0x55,0x47,0xa3, - 0xe0,0x2d,0x67,0x24, 0x5c,0xea,0x8d,0x3c, 0x48,0x08,0x1a,0x85, 0x7b,0xaf,0xdc,0x3c, - 0x18,0x26,0x85,0x4b, 0xc5,0x32,0x9e,0x59, 0xdb,0x13,0xc1,0x28, 0x13,0x4c,0x07,0x51, - 0x75,0x34,0x5c,0xb4, 0xef,0x10,0x43,0xed, 0xbd,0x56,0xab,0xda, 0x3b,0x2e,0x98,0x99, - 0x1c,0x9b,0xc3,0x45, 0x77,0xf2,0x0a,0xc0, 0x81,0xb6,0x65,0x84, 0xa3,0xc4,0xe2,0x0f, - 0x2c,0xcb,0x26,0x30, 0xa8,0x4c,0xe0,0xb7, 0x05,0xb0,0x30,0x10, 0x8f,0xda,0x41,0x7c, - 0x11,0x17,0x13,0x66, 0x67,0x45,0x05,0x1b, 0x8f,0x35,0x06,0x21, 0x3f,0x50,0x8c,0x83, - 0x2c,0xeb,0x25,0x66, 0x5c,0xf6,0xee,0x2b, 0x35,0x39,0x29,0x0d, 0x28,0x66,0xf3,0x65, - 0xaf,0x49,0x5a,0xc9, 0x23,0xf2,0x9b,0xe2, 0x84,0xb1,0x15,0x4e, 0x6a,0x5d,0x07,0xd9, - 0x35,0xce,0x17,0x77, 0xe5,0x5f,0x3f,0x09, 0x5c,0x5f,0x78,0x84, 0x21,0xde,0xf2,0xac, - 0x70,0xd1,0xca,0xd5, 0x4a,0xb1,0xc9,0x12, 0x28,0x58,0xc0,0xb1, 0x3c,0xa2,0x07,0x7b, - 0xd5,0xb5,0xf6,0x60, 0x60,0xbc,0xa8,0x4d, 0x46,0xd1,0x2b,0x7b, 0x35,0x0b,0x47,0x78, - 0xfb,0xcc,0x90,0x48, 0xb4,0x13,0x59,0xf2, 0x25,0x17,0x67,0xfb, 0x73,0x65,0x74,0x5a, - 0x73,0xf7,0xfe,0xb7, 0xaf,0x20,0x29,0x3a, 0x12,0x35,0xab,0xcf, 0x6f,0x8f,0x5b,0x79, - 0xb0,0x4d,0x56,0x8e, 0x01,0xff,0xb5,0xcf, 0xf7,0x47,0xa5,0x29, 0xda,0x1f,0x95,0x5b, - 0x1e,0xf6,0x27,0x55, 0x61,0x5e,0xf5,0xe7, 0x0f,0x23,0xea,0x68, 0x3d,0xff,0xfb,0xde, - 0xb0,0x5f,0x82,0x06, 0x27,0xca,0x2c,0xae, 0x17,0x14,0x59,0xe5, 0x47,0x91,0xa7,0x3b, - 0x32,0x4e,0x33,0x55, 0xdb,0xc2,0x4b,0x74, 0x1f,0xee,0x63,0xfa, 0x66,0xc2,0x6a,0xc8, - 0xca,0x74,0x22,0x74, 0x6a,0x55,0x36,0x5b, 0xe1,0x75,0x14,0x60, 0xb0,0x84,0x11,0x24, - 0x00,0x7c,0xf7,0xb3, 0x5d,0x59,0xfc,0x4b, 0x29,0x9f,0x45,0x52, 0xa9,0x31,0x0b,0xeb, - 0x49,0xf2,0xc5,0x59, 0x94,0x21,0x61,0x26, 0x11,0xd3,0x72,0xf8, 0x6a,0x7c,0x3b,0xfd, - 0x2c,0x24,0xbd,0x0e, 0xa0,0xc3,0xd5,0x17, 0xb4,0xb2,0x37,0xe6, 0xe4,0x52,0x50,0x00, - 0x4b,0xb3,0x3a,0x31, 0x09,0x2b,0xeb,0xcf, 0xf8,0xe5,0xf8,0x78, 0x4d,0x7c,0x98,0xca, - 0xb8,0xe7,0xed,0xba, 0xe7,0x31,0xa6,0x7b, 0x3f,0x70,0x10,0x99, 0x34,0x62,0x4d,0x11, - 0x9a,0x4e,0x04,0x49, 0x31,0x46,0xec,0xf8, 0xeb,0xf2,0xe8,0xd3, 0xe0,0x30,0x7b,0xf8, - 0x44,0xc1,0xd8,0x86, 0x29,0xc2,0xe2,0x8b, 0xee,0x57,0xa6,0xe7, 0x36,0xd5,0x29,0x24, - 0xd6,0x84,0x69,0x33, 0x00,0x1c,0x90,0x9b, 0x27,0xdd,0x98,0xb9, 0x76,0xb7,0x93,0x96, - 0x33,0x05,0x32,0xf2, 0x3d,0x2c,0x08,0xfb, 0x9d,0x3f,0x1a,0xab, 0xe1,0x1b,0xb4,0x19, - 0xc2,0xbc,0x94,0x39, 0xe4,0xf9,0x7c,0xc2, 0x71,0xff,0xad,0x9a, 0xa6,0x58,0x87,0xef, - 0x4d,0x0c,0xfe,0x19, 0x8f,0x10,0xf7,0x57, 0x94,0x80,0x15,0x53, 0xad,0xdb,0xeb,0x30, - 0x01,0x9f,0x07,0xd3, 0x9d,0x5b,0xd6,0x58, 0x28,0x6d,0x65,0xa3, 0x08,0x91,0x80,0xf5, - 0xe5,0x86,0x3b,0x2f, 0xf2,0x15,0xfe,0xaf, 0xd9,0x17,0x8d,0xed, 0x43,0x8b,0x20,0x50, - 0x8a,0xe1,0x46,0x27, 0xeb,0x49,0xe2,0xc1, 0x36,0x44,0xb3,0x50, 0x91,0xf4,0x2f,0x98, - 0xb3,0x44,0x60,0x50, 0xa9,0x05,0xc2,0x50, 0x4e,0x8d,0x56,0xcb, 0x38,0x56,0x10,0xd7, - 0xbe,0x94,0xb0,0x35, 0x4c,0xb8,0xc4,0x7a, 0xad,0x5f,0x38,0x70, 0x12,0x24,0xfb,0x1e, - 0x53,0xa5,0xd0,0xff, 0xb5,0x70,0x3a,0xc2, 0xdf,0x54,0x77,0x3d, 0x1f,0x0f,0x3f,0x3a, - 0x2c,0x04,0x3c,0x32, 0x87,0x71,0x30,0x0a, 0xec,0x8d,0x27,0x0f, 0xef,0x8e,0xdc,0xfa, - 0xa9,0x9d,0x29,0x3f, 0xab,0xee,0xbe,0x14, 0x7a,0x64,0x68,0xf6, 0x98,0xd7,0x20,0x30, - 0x47,0xd6,0x8f,0xc1, 0x54,0x72,0x88,0xd8, 0xd1,0x38,0x69,0xe2, 0x95,0xae,0xdf,0x77, - 0xbd,0x42,0x92,0xe3, 0x25,0xf9,0x6a,0x0e, 0xc2,0x7d,0x6a,0x34, 0xbb,0xda,0x7f,0xf1, - 0xdb,0x86,0xd8,0xff, 0x80,0x93,0x58,0x3a, 0x0a,0x89,0x9e,0x95, 0x7c,0xac,0x59,0x0a, - 0x02,0x16,0x1d,0x7c, 0x80,0x7b,0x6d,0xbb, 0x66,0xfd,0xb5,0x4c, 0xe5,0x0b,0x5d,0x08, - 0xcc,0xca,0xf3,0x18, 0xaa,0x1a,0xe4,0xac, 0x76,0x64,0xe8,0x79, 0xa9,0x30,0xdb,0xab, - 0x55,0xbd,0x94,0x68, 0xa7,0x48,0x04,0x61, 0x00,0xdd,0x23,0xe1, 0x56,0xaf,0x1c,0xdd, - 0xf9,0x1b,0x8a,0xcb, 0x75,0xaa,0xf7,0x99, 0xef,0xa5,0x0c,0x9c, 0x3c,0xb5,0xd1,0xce, - 0x06,0xab,0x17,0xfe, 0xcc,0xe3,0x88,0x09, 0xb5,0xf7,0x3a,0x44, 0xcd,0x91,0x85,0x8a, - 0xc5,0x1f,0x7b,0x89, 0x39,0x6c,0x9a,0x85, 0x4c,0x59,0xed,0x39, 0x39,0x0f,0x01,0x27, - 0xcd,0x3e,0x88,0x82, 0x88,0xd2,0xbe,0x43, 0x1e,0x8b,0x23,0x00, 0xb0,0x2a,0x9e,0x4a, - 0x6c,0xe7,0xc1,0xd1, 0x46,0x4d,0xe9,0x30, 0x11,0x1d,0xe9,0x54, 0xa2,0x44,0xbf,0x0a, - 0xdd,0xd2,0x9f,0xe6, 0xad,0xcf,0xdf,0x94, 0x7d,0xf9,0x72,0xd9, 0x18,0x2b,0x81,0x41, - 0x5b,0xf6,0xbf,0x35, 0x02,0x71,0x6a,0x3f, 0xc8,0x13,0x4d,0xf5, 0x7b,0x92,0x26,0x94, - 0x40,0xc2,0xf4,0x2e, 0x50,0x13,0xf7,0x79, 0xc1,0xe9,0xf1,0xe4, 0xee,0xd9,0x8e,0x7e, - 0x97,0x18,0x7d,0xe1, 0x1e,0xb9,0x3e,0xbf, 0xba,0x92,0x5c,0x12, 0xaf,0x42,0x94,0x3c, - 0x14,0x24,0x3f,0x6e, 0x6d,0xcc,0x64,0x35, 0x19,0x3a,0xd6,0xf7, 0xd3,0xc0,0x5a,0xc5, - 0x1f,0xe1,0xbb,0xf4, 0xa4,0x67,0x5f,0x0d, 0x8d,0xc2,0x2d,0x19, 0x56,0x40,0x32,0x57, - 0x9c,0x4b,0x93,0x15, 0xba,0x3c,0x37,0x91, 0xe9,0x31,0xee,0xee, 0x62,0xba,0xa4,0xea, - 0xa4,0x0f,0x5b,0x10, 0x2d,0x3d,0x08,0x49, 0x0d,0xb4,0x8f,0xd4, 0x00,0x56,0x7c,0x15, - 0xe8,0xed,0xd7,0xa3, 0xcf,0xce,0x3d,0x61, 0x74,0xac,0x7f,0xc9, 0x69,0x33,0xd3,0x7f, - 0x37,0x9f,0x2c,0x91, 0x67,0x0f,0xbd,0x2e, 0xb4,0x4e,0xdb,0x57, 0xa5,0x14,0xbf,0xee, - 0xb4,0xcc,0xa4,0xe2, 0xa9,0x11,0x52,0x2c, 0x29,0x9e,0x96,0x6c, 0x06,0xc1,0xd5,0x92, - 0xe4,0xad,0x2d,0xf9, 0x10,0x00,0x7a,0x63, 0x08,0x50,0xe5,0x3f, 0x24,0x64,0x8e,0x19, - 0x3b,0x73,0xb2,0x1a, 0xb3,0xfd,0xc0,0xc8, 0x5d,0x50,0x93,0xfa, 0x8c,0xc3,0x4a,0x9d, - 0xbe,0x99,0x3e,0x04, 0xde,0xed,0xf0,0xc0, 0x35,0x7b,0xff,0x69, 0x67,0x02,0x93,0x28, - 0xb4,0xef,0xc5,0xdf, 0xd9,0xf3,0xfc,0xce, 0x59,0x2e,0x2c,0xc3, 0x16,0x80,0x15,0x82, - 0xde,0x92,0x58,0xc4, 0x1b,0x15,0x16,0x0e, 0xad,0x3d,0xa3,0x26, 0xd4,0x1e,0x83,0x78, - 0x72,0x1e,0xa8,0x84, 0x67,0xbf,0x13,0x4a, 0xb5,0x9b,0x11,0x38, 0x7f,0xb9,0x3f,0xc2, - 0x37,0x65,0xf4,0xd2, 0xb2,0x2b,0x1b,0xd3, 0xe8,0x21,0xff,0x95, 0x91,0xba,0x1e,0x8e, - 0xc1,0xbd,0xb8,0x9d, 0xe7,0xa6,0x7c,0x77, 0x83,0x0e,0x4e,0xc6, 0xd8,0x7b,0x40,0x1d, - 0xb7,0xed,0xa3,0x08, 0xff,0x33,0x20,0x8a, 0x6c,0x78,0x31,0xc7, 0xc4,0xf8,0x3b,0x37, - 0x6b,0xac,0x43,0x18, 0x3c,0xb3,0x1a,0x19, 0x04,0xd4,0x83,0x3b, 0x9e,0xa3,0x79,0x62, - 0xaf,0x56,0x5f,0xf5, 0xe5,0x8b,0xb4,0xd7, 0xea,0xab,0xd9,0xd5, 0x47,0xa4,0xec,0xa0, - 0xf4,0xc7,0xa0,0x1c, 0xf9,0x59,0x0f,0x07, 0x8d,0x41,0x01,0x83, 0xed,0x63,0x25,0xc4, - 0x21,0xf2,0x24,0x19, 0xbd,0xcd,0xbc,0x39, 0xe7,0x44,0x85,0x6f, 0xfd,0x6f,0x29,0x01, - 0xf6,0x7c,0xa6,0x02, 0xff,0x38,0xf5,0x93, 0x5f,0x8a,0x7e,0xbd, 0x8e,0xbe,0x9b,0xce, - 0x5c,0xe5,0xd2,0x62, 0x6a,0x0c,0xd7,0x3b, 0x66,0x7f,0x99,0x85, 0x94,0x49,0x2e,0xb7, - 0x92,0x0f,0xc9,0xeb, 0x06,0xc9,0x0a,0x77, 0x9b,0xa2,0x34,0xe0, 0x78,0x6b,0x55,0x3c, - 0x01,0x7b,0x93,0xa8, 0x7b,0x1d,0x1e,0x33, 0x40,0x81,0xc0,0xaa, 0x77,0x60,0xc3,0x0c, - 0xda,0xde,0xca,0x08, 0x59,0x2e,0x20,0x9c, 0xaf,0x6d,0x2c,0xb5, 0x4f,0x7d,0x11,0x2a, - 0x33,0xaf,0x3e,0x90, 0x25,0x97,0x2a,0xf2, 0x05,0x8b,0xd4,0xf7, 0x1b,0x2f,0x13,0x75, - 0x7e,0xe3,0x19,0xa7, 0x6f,0x69,0x52,0x86, 0xcb,0x13,0x57,0x86, 0x8e,0xdf,0x44,0xf7, - 0x00,0x3b,0x45,0x47, 0x87,0x2e,0x7f,0xbe, 0x30,0x7f,0x1a,0x28, 0x8f,0xc5,0x7c,0x44, - 0x67,0xb9,0xb8,0x66, 0x1a,0x7a,0x7d,0x29, 0x3c,0x03,0x16,0xbf, 0x1b,0x40,0xe5,0xab, - 0xa3,0xe1,0x47,0xdb, 0x91,0x90,0xba,0x9a, 0x04,0x9d,0x98,0xe4, 0x28,0x71,0xa9,0x52, - 0x2b,0xb2,0xa3,0x3d, 0x17,0x93,0x53,0xa0, 0xf0,0x9c,0x34,0xb8, 0x7a,0x30,0x53,0x3c, - 0xf8,0x01,0x10,0x9b, 0xa1,0x06,0x7f,0x45, 0xc9,0xa5,0x29,0xe7, 0xa8,0xcb,0xa3,0x3e, - 0x1a,0x99,0x3e,0x0c, 0x22,0xe5,0x59,0x0b, 0x91,0x69,0x42,0xf7, 0x17,0x53,0x03,0x84, - 0x93,0x8f,0x2a,0xce, 0x55,0x52,0xc7,0xd2, 0x6b,0x7b,0x6e,0x67, 0xf6,0x54,0xac,0x85, - 0xca,0x1a,0x44,0x11, 0xce,0xbc,0xe7,0x7a, 0xa2,0x02,0xee,0xaa, 0x61,0x82,0x72,0x1b, - 0x36,0xae,0x2b,0x83, 0xd5,0x40,0x54,0x88, 0xa9,0x8c,0xd3,0xb7, 0x2f,0x2c,0xea,0xf1, - 0xb0,0x1f,0x9e,0x6b, 0x38,0xb8,0xa1,0x84, 0x0f,0x9c,0xe2,0x93, 0x04,0xb2,0xae,0x08, - 0x7d,0xe7,0x10,0x33, 0x4b,0x6b,0xa8,0x0c, 0x31,0x94,0xe3,0x00, 0x31,0x57,0x4e,0x8f, - 0x5d,0xd4,0x61,0x4a, 0x33,0x9c,0x58,0x3a, 0xac,0x53,0xb9,0xda, 0x0b,0x21,0x8b,0x39, - 0x01,0x43,0x7c,0xce, 0xea,0xdd,0x61,0xc2, 0xff,0x27,0x9e,0xa2, 0x56,0xa1,0xd4,0xe8, - 0x55,0x37,0xc5,0x90, 0xe8,0x34,0x81,0x57, 0xf5,0x1b,0x55,0x20, 0x6d,0x64,0xf9,0x2c, - 0xd2,0x18,0x4b,0x6b, 0xc7,0x90,0xfc,0x6c, 0xc3,0x99,0xe8,0xfb, 0xb7,0xf9,0x3a,0xe9, - 0x8f,0xcb,0xc0,0xe8, 0xce,0xf8,0x66,0x99, 0x37,0x6c,0xd5,0x85, 0xd5,0xa9,0x48,0xf7, - 0xd4,0x00,0x1d,0xf3, 0x74,0xf5,0xb8,0x12, 0xce,0xd3,0x82,0xec, 0x61,0xb9,0xbf,0x36, - 0x96,0xbe,0x7c,0xbc, 0xdc,0x0a,0x99,0x5a, 0x7a,0xb0,0x2c,0xf8, 0x7b,0x83,0xc4,0xd0, - 0x58,0x7f,0xb1,0xaa, 0x2c,0x67,0x40,0x88, 0x37,0x0d,0xb3,0x09, 0x2c,0x7b,0xdc,0x13, - 0xc5,0x3c,0x29,0x98, 0x13,0xbc,0x69,0xf3, 0x44,0xd4,0xb6,0x5d, 0x46,0xee,0x7d,0xda, - 0x60,0x25,0xc9,0x83, 0xb5,0x12,0x13,0xc5, 0xb9,0xd7,0xe8,0x99, 0x1a,0x3c,0xa2,0xc9, - 0x74,0x78,0xe8,0x8f, 0xaf,0xec,0x57,0x3f, 0x4a,0x89,0x08,0xf3, 0xfa,0x70,0xb5,0x55, - 0xf0,0xd6,0x7a,0xbd, 0x73,0x91,0x24,0x15, 0x28,0xea,0xcc,0xf8, 0x34,0x9d,0xcd,0x7d, - 0x84,0x77,0x73,0x9b, 0x3a,0x3f,0x81,0x12, 0xcc,0xc0,0x5b,0xe9, 0x20,0x10,0xae,0x8d, - 0xe8,0xf7,0x7b,0xaa, 0x03,0x6c,0xad,0x1f, 0x60,0xe6,0x20,0x9d, 0x11,0x45,0x9d,0x42, - 0x4b,0x91,0x25,0xce, 0x69,0x91,0xdc,0x34, 0xb3,0x92,0xc6,0xef, 0xcd,0xc9,0x66,0x1a, - 0x93,0xf7,0xa0,0x9d, 0x14,0xca,0x40,0x8c, 0x7d,0xf4,0x01,0x25, 0xc8,0x4d,0x38,0xc3, - 0x7c,0x2f,0xba,0xf2, 0xb9,0x64,0xb1,0xce, 0xd9,0x26,0x89,0xb2, 0xca,0xd3,0xfb,0x6f, - 0x4b,0xb2,0x20,0x04, 0xfe,0xba,0x1f,0x97, 0x06,0xda,0xa6,0x36, 0xbb,0xb1,0xb2,0xc3, - 0xd3,0x3e,0xe2,0xd8, 0xf1,0x18,0xfc,0x24, 0x08,0xa1,0x1d,0xd3, 0xfd,0xbf,0xb0,0x31, - 0x94,0xdc,0x9e,0x9b, 0x23,0x9d,0xb3,0xbe, 0x7c,0x61,0xbd,0xfc, 0x04,0xf6,0x56,0x28, - 0xea,0x33,0xf7,0xb8, 0xff,0xf2,0x29,0xd5, 0x8f,0x56,0x82,0x15, 0x4e,0xc8,0xdc,0x20, - 0xf0,0x8c,0x0a,0x71, 0xdc,0x15,0x85,0x23, 0xbb,0x9a,0x85,0xb2, 0xb6,0x3b,0xe4,0xba, - 0x85,0xea,0x02,0x5f, 0x95,0x3e,0x2c,0x1a, 0xbe,0x23,0x37,0x88, 0x6f,0x7a,0xb7,0x9d, - 0xc6,0x51,0xdc,0x07, 0x40,0x71,0x0c,0xc1, 0x79,0x4e,0x7f,0xc8, 0x64,0xf8,0xe1,0xd2, - 0x01,0xf7,0xd1,0xa6, 0x6a,0x70,0x14,0x55, 0x0e,0xfb,0x60,0x0e, 0x76,0x82,0x82,0x46, - 0x3a,0x0a,0x10,0xa2, 0x6c,0x2f,0x5a,0x66, 0x02,0xe6,0x73,0xfc, 0x6b,0x54,0x35,0x89, - 0xaf,0xf4,0xd2,0x17, 0xdf,0xd0,0xdc,0x13, 0xe7,0xeb,0x37,0xbc, 0x79,0xfd,0xb8,0xef, - 0xd9,0xc6,0x47,0x5f, 0xb5,0x20,0xd2,0x5a, 0x7e,0xf1,0xa0,0x68, 0x06,0xf5,0x50,0xf2, - 0x77,0xdc,0x0f,0x9f, 0xa0,0x26,0xb5,0x79, 0x7a,0xb8,0xd6,0x76, 0x36,0xc1,0xd2,0xab, - 0x34,0xfd,0x81,0xee, 0x60,0x88,0x17,0x75, 0xaf,0x0b,0x0a,0x36, 0xea,0xb2,0x16,0x5c, - 0x43,0x27,0x10,0x71, 0x80,0x89,0x93,0x71, 0x39,0xfe,0x3a,0xd0, 0xf3,0x9b,0x92,0x39, - 0x38,0xcd,0x2e,0x46, 0x87,0x15,0x19,0x12, 0x4c,0x43,0x39,0x31, 0xf9,0xc3,0x1b,0x43, - 0x2b,0xec,0x8a,0x21, 0xb1,0x50,0xdb,0x3f, 0x09,0x0e,0x78,0x42, 0x95,0x6d,0x7f,0xa0, - 0x5a,0x2a,0x1c,0x0f, 0xd4,0x41,0x5e,0xc2, 0xad,0xb7,0xa2,0x99, 0xc1,0xeb,0x2d,0xcb, - 0x38,0x6b,0x2d,0x42, 0x64,0x93,0xbb,0x3a, 0xb9,0x13,0xc9,0xf0, 0x9f,0x6c,0x2f,0x92, - 0x7e,0x67,0x5f,0x9e, 0xf1,0x2d,0x80,0x85, 0xa0,0x55,0x79,0x30, 0x0c,0xb9,0xd0,0xf8, - 0x23,0xdf,0x22,0xe6, 0x6e,0x74,0x7f,0x44, 0x9f,0xf7,0x40,0xa3, 0x23,0x9d,0x19,0xd8, - 0x88,0x15,0xf4,0x23, 0xd9,0x94,0x3e,0x65, 0x1a,0x82,0xa9,0xec, 0x47,0xb4,0x0e,0x87, - 0xf8,0x2d,0xf4,0x82, 0x7d,0xda,0xcc,0x27, 0x27,0x0a,0xc3,0xed, 0x85,0x9a,0xbd,0x2c, - 0x96,0x0b,0x5b,0xa5, 0x03,0x05,0xad,0x9a, 0xb3,0x65,0xe1,0x1e, 0x31,0x6b,0xc5,0x25, - 0x1e,0x33,0x90,0x50, 0xda,0x20,0xe8,0x73, 0x83,0xe3,0xda,0x6c, 0x33,0x88,0x1d,0x45, - 0x57,0xdb,0x1f,0x9c, 0xbe,0x7d,0x51,0xda, 0xfc,0x8d,0xd7,0xdb, 0x04,0x4f,0x22,0x91, - 0x29,0x4b,0x23,0xe8, 0xd6,0x90,0x40,0x07, 0xcb,0xf8,0x58,0x5e, 0x97,0x46,0x6c,0xf8, - 0xb0,0x60,0x9b,0x7a, 0x71,0xa1,0xd4,0x77, 0x23,0x57,0xd7,0x5a, 0xeb,0x9c,0x24,0x4f, - 0x37,0x8c,0xd2,0x67, 0x5d,0xcf,0x0b,0xb8, 0x9b,0xb0,0x5a,0xc4, 0x79,0xd3,0xa5,0x9e, - 0xb4,0xc6,0x1d,0x19, 0xa3,0x3b,0x07,0x44, 0x04,0x50,0x1c,0x98, 0xe5,0x21,0x80,0xc5, - 0x58,0x33,0xcb,0x5b, 0xce,0x38,0x1c,0x64, 0x8b,0x4d,0x99,0x1c, 0x0a,0x2c,0x5b,0xcf, - 0xd4,0xcf,0xf4,0x60, 0xa8,0x55,0x50,0x9f, 0x5f,0xa5,0xb2,0xe6, 0x91,0xbc,0xf3,0xe8, - 0x20,0x6e,0x6d,0x91, 0x34,0x44,0x17,0xbc, 0xe5,0x68,0x81,0x23, 0xfe,0xd8,0x0e,0xd9, - 0x5a,0xa8,0x1c,0x74, 0x21,0x61,0x6b,0xd7, 0x4d,0xe2,0xba,0x28, 0x89,0x28,0x6d,0x2f, - 0xd3,0xf0,0x71,0xe7, 0x0b,0x05,0x45,0x3b, 0x46,0x3a,0x46,0x14, 0x14,0xe0,0x07,0x2f, - 0xff,0x3e,0xc9,0xd7, 0x16,0xc1,0x6d,0x5f, 0x8d,0x14,0xa7,0x96, 0xb7,0x17,0xae,0x23, - 0x7f,0xb1,0x43,0x27, 0xd0,0x4f,0x42,0x10, 0x7c,0x8f,0xbe,0x12, 0x32,0x16,0xfa,0xad, - 0x02,0x3b,0x0f,0x0e, 0xa0,0xd5,0xf2,0x16, 0xb1,0xa1,0xbc,0xa4, 0x50,0x7e,0x9c,0x98, - 0xdc,0xb8,0x33,0xdf, 0x74,0xf8,0x15,0xa6, 0x19,0xdf,0xe8,0xdf, 0x58,0xa5,0xc1,0xf0, - 0x01,0xea,0x52,0x38, 0xa2,0x30,0x30,0xf7, 0x43,0x91,0x70,0x20, 0x37,0x51,0x38,0x36, - 0x19,0x3e,0xfb,0x40, 0x2d,0x33,0xae,0x5b, 0x4f,0xc0,0x9c,0xf5, 0x0c,0x1d,0x28,0xa0, - 0x86,0xd5,0xdf,0x4d, 0xd6,0x41,0x26,0x3b, 0x2e,0xfc,0xfa,0x0f, 0x19,0x6d,0xc1,0x24, - 0x2b,0x99,0xc3,0x74, 0x6d,0x6f,0xb7,0xbe, 0x58,0xd0,0xa1,0x5f, 0x73,0xeb,0xdb,0x35, - 0x25,0x71,0xb6,0x0a, 0x26,0xe9,0xfe,0x3b, 0x32,0xed,0xf7,0xda, 0x7d,0xb0,0x1e,0x92, - 0xc0,0x1b,0x3b,0x84, 0x32,0xfe,0x9d,0x78, 0x83,0x2d,0x4c,0x01, 0x5d,0xd5,0x4a,0x89, - 0x83,0x81,0xea,0xa6, 0xa3,0x84,0xd4,0xf0, 0x84,0x2d,0xc7,0xa1, 0xdc,0x7d,0x8c,0xee, - 0x63,0xd0,0xd6,0x66, 0x61,0x20,0xc0,0xf4, 0x21,0xb7,0x05,0x54, 0x8d,0xd5,0xda,0xde, - 0xd4,0x17,0x50,0xd4, 0x1f,0x03,0x91,0x5d, 0xd2,0x65,0xb9,0x52, 0x4e,0xb8,0x56,0xc8, - 0x50,0x9b,0x11,0x52, 0x7e,0x8c,0x83,0x6d, 0x6d,0x58,0xbc,0x19, 0x72,0x39,0xf3,0xd4, - 0xdb,0x8f,0xa2,0xef, 0xe6,0xe8,0x71,0x41, 0x7b,0xb7,0xd3,0x84, 0x6b,0x9a,0xcc,0x69, - 0x50,0x66,0xe0,0xc8, 0x2c,0x41,0x18,0xa8, 0x49,0x8a,0x9d,0x31, 0x40,0x05,0x1a,0xe7, - 0x2f,0x1f,0xa3,0x2d, 0x91,0x34,0xb9,0xab, 0x47,0xae,0xee,0x5c, 0x95,0x2f,0x60,0x55, - 0x74,0xb5,0x35,0x37, 0x08,0xe7,0x30,0xc4, 0xc8,0xd8,0xf9,0x35, 0xd7,0x49,0x73,0x84, - 0xc0,0x13,0x3d,0x08, 0x3b,0xb4,0xc8,0x71, 0x50,0xb1,0x83,0xc1, 0xea,0x26,0xa2,0x13, - 0x3c,0x11,0x58,0xa8, 0x44,0xb0,0xf8,0x1f, 0xd8,0x2e,0x82,0xed, 0xd5,0x3b,0x1e,0x4e, - 0x88,0x93,0x7c,0x8d, 0x8a,0xd6,0x88,0x57, 0xd6,0xf1,0x03,0x85, 0xfe,0x82,0x6f,0xb6, - 0xd8,0x7b,0x28,0xcd, 0x5d,0x65,0xa0,0xa9, 0xdc,0x03,0x7f,0x03, 0x4e,0xc7,0x3e,0x7c, - 0x3f,0x1d,0x48,0x21, 0x8c,0xd0,0x28,0xf4, 0xcf,0x64,0x32,0x0f, 0x23,0x58,0xde,0x36, - 0x10,0xed,0x29,0x1b, 0x12,0x85,0xbd,0x42, 0x78,0x95,0x92,0x36, 0xfd,0xa5,0xa7,0x31, - 0x09,0xfd,0x5b,0x8d, 0xbb,0xb6,0xea,0xf6, 0x72,0xee,0x31,0x22, 0x27,0xf4,0x2e,0x90, - 0x93,0x34,0x90,0xff, 0xd8,0x5a,0x3d,0x87, 0x93,0x3c,0x97,0x78, 0x27,0x1d,0x39,0x22, - 0xac,0x74,0x8e,0x05, 0xce,0xb4,0x86,0xa0, 0x9d,0x5e,0x54,0x16, 0x8a,0xc6,0x28,0x62, - 0x60,0xf7,0x0f,0xd6, 0x8b,0x07,0x3b,0x9e, 0x09,0x73,0x7b,0xd2, 0xc0,0xf0,0x1e,0xb9, - 0x14,0x12,0xaf,0xfa, 0x37,0x58,0xc1,0xfa, 0x92,0x56,0x0a,0x62, 0x64,0x6b,0xf9,0x2b, - 0x09,0x2f,0x38,0x9b, 0x89,0x2c,0x79,0x04, 0xda,0x99,0xd8,0xa8, 0x83,0xee,0xc5,0xbe, - 0xdb,0xc8,0xe8,0x4e, 0x0e,0xc6,0x5c,0x88, 0x4c,0x36,0x5b,0x13, 0xe8,0x9c,0x0d,0x0e, - 0xb3,0xef,0x34,0xa3, 0x1f,0x08,0x71,0x13, 0x83,0xd9,0x6c,0xab, 0xb2,0xd4,0x07,0x5f, - 0x22,0x13,0xba,0x3e, 0xcd,0x1e,0x22,0xee, 0x03,0x4f,0x99,0x1d, 0x11,0x3f,0x97,0x7d, - 0xb2,0x26,0xaf,0x85, 0x87,0xed,0x6f,0x86, 0xa6,0x34,0xb4,0xb7, 0xb2,0x13,0xac,0xb2, - 0x99,0x45,0x50,0x6e, 0x86,0x7b,0xcc,0xcf, 0x9a,0xb3,0x6b,0x0f, 0x02,0xf9,0x79,0xcb, - 0xb8,0xeb,0x47,0xe8, 0x03,0x5a,0xe9,0x28, 0xd0,0x98,0x30,0xf2, 0xeb,0x9e,0x97,0xc5, - 0x41,0x67,0x7c,0x87, 0xd1,0x9e,0xd3,0xb6, 0x23,0xbd,0x8c,0x79, 0x23,0xaf,0x83,0xde, - 0x26,0xae,0xfc,0x3a, 0xb3,0x81,0x9e,0x78, 0x5b,0x41,0xde,0x20, 0x31,0x1a,0x2c,0x49, - 0x67,0x7a,0x7d,0x9b, 0xe8,0x9f,0x09,0xd2, 0xbd,0xa8,0x62,0x0b, 0xc7,0x83,0x70,0xab, - 0x6f,0x94,0x63,0x56, 0x9c,0xe1,0x7a,0xa4, 0xf9,0xde,0xfc,0x25, 0xf4,0x06,0xd9,0xf3, - 0x56,0x72,0x42,0xc8, 0xbb,0xaf,0xf1,0x1f, 0x15,0x0f,0xbc,0x88, 0xfb,0xc5,0x91,0x1c, - 0x6e,0x74,0x2c,0x07, 0x72,0x19,0xe5,0xf0, 0x2b,0x4e,0x17,0x62, 0x92,0x18,0x64,0x75, - 0x94,0x46,0xe5,0x06, 0x68,0x4f,0x2b,0x9d, 0x61,0xf7,0x80,0xe4, 0x72,0x73,0x43,0x4b, - 0xa1,0x63,0x26,0xc3, 0x1b,0x53,0x6b,0x5e, 0xc1,0x4b,0x6f,0x7b, 0x91,0x31,0x09,0xee, - 0x0a,0x22,0x38,0xa0, 0x8e,0x9d,0x95,0xc2, 0x96,0x24,0x8a,0x34, 0xa6,0x8d,0xb8,0x7c, - 0x85,0x00,0x64,0xb5, 0x4f,0x14,0x29,0x17, 0xb7,0xf0,0x11,0x5e, 0xea,0x78,0xd7,0xf6, - 0x30,0x41,0xb3,0xef, 0xf3,0x47,0xa1,0x08, 0xc5,0x6b,0x07,0x08, 0x55,0x38,0xaa,0xa5, - 0x5b,0x49,0x17,0x55, 0xf3,0x52,0xcb,0xd9, 0x58,0x97,0x26,0x6a, 0x40,0x79,0xc9,0xbb, - 0xc8,0x8a,0xad,0xa2, 0xa4,0xc1,0x29,0x40, 0xf7,0xb4,0xc8,0x89, 0x23,0xc9,0xe2,0xb9, - 0x2b,0xb9,0x95,0xbb, 0xd7,0x78,0x7d,0xa4, 0x50,0x21,0x66,0xad, 0xde,0xa0,0xb8,0x60, - 0xff,0x3e,0xbe,0x71, 0xc8,0xd0,0x76,0xe1, 0x63,0x51,0x77,0x66, 0x73,0xf5,0xf4,0x25, - 0x9b,0xde,0x6a,0x40, 0xbe,0x83,0x7c,0x97, 0x4c,0xfd,0x1f,0x47, 0x51,0x8b,0x57,0xce, - 0x21,0xe9,0x66,0x56, 0xd0,0x37,0x2b,0x3d, 0x77,0x8d,0xa3,0x25, 0x4c,0x82,0x6b,0xda, - 0xdc,0x45,0xb2,0x74, 0x38,0xbd,0x0e,0x85, 0x5e,0xad,0x56,0x90, 0x29,0x82,0xe1,0xd7, - 0xc7,0xa4,0x60,0xde, 0x32,0x2f,0xc9,0x33, 0x19,0xee,0x38,0xfd, 0xc2,0x24,0x5f,0x3a, - 0xb8,0x5a,0x25,0x99, 0x81,0xee,0x47,0x23, 0x94,0x86,0x4d,0x11, 0x48,0x2a,0xd4,0x00, - 0x02,0xc9,0xf2,0xd4, 0x69,0x2e,0x70,0x4d, 0x84,0xa3,0xea,0x1f, 0xd2,0x9f,0x55,0x1b, - 0x6e,0xf0,0x76,0x78, 0x71,0xaa,0xd6,0x5c, 0x66,0x37,0x9e,0x26, 0x6d,0xba,0xc4,0x1d, - 0x58,0xf3,0x31,0xf1, 0x57,0x27,0xbf,0x93, 0xda,0x63,0xe7,0xc2, 0xa8,0xe8,0x11,0x7d, - 0x60,0x57,0xee,0x5b, 0xc0,0x13,0x87,0xd8, 0x2a,0xdd,0x6e,0xcd, 0x4c,0x1e,0x49,0x8b, - 0x39,0x65,0xe1,0x3c, 0x59,0x84,0xaa,0xc3, 0x5e,0x64,0x5c,0xbe, 0x4b,0x15,0x39,0xe6, - 0xc2,0xf2,0xa5,0x2b, 0x71,0x90,0x44,0xda, 0x1e,0xff,0xac,0xb0, 0x40,0xff,0x6d,0x43, - 0x12,0x93,0xf8,0x5a, 0x50,0x95,0x3f,0x2f, 0x6b,0x25,0xbd,0xb6, 0x38,0x0a,0x18,0x70, - 0xc2,0x34,0x77,0x19, 0x09,0x20,0x26,0x35, 0xe6,0x3c,0xa7,0x68, 0x72,0x89,0x3d,0xf8, - 0x3e,0x6b,0x78,0xfd, 0x39,0x63,0x2b,0x54, 0xab,0xac,0x22,0xbd, 0xd4,0x97,0xbb,0xef, - 0x11,0x9e,0x2d,0x17, 0x7d,0x46,0xf0,0x43, 0xcb,0xd9,0x7f,0x45, 0x61,0xba,0x37,0xf8, - 0xb7,0x4e,0xeb,0xbd, 0x15,0xcb,0x32,0x96, 0x6e,0xb7,0x70,0xdf, 0x01,0x7b,0x96,0xb8, - 0x92,0x4e,0xca,0xc4, 0x84,0xf2,0xf9,0x0c, 0x84,0x83,0xce,0x63, 0xb5,0x0e,0x96,0x0d, - 0xda,0xce,0x47,0x53, 0x4b,0x4c,0x4d,0xdd, 0xd3,0x89,0xca,0x56, 0xe5,0x5e,0x75,0xbe, - 0x9e,0x2b,0x91,0x30, 0x2f,0x57,0x87,0xe9, 0x8f,0x11,0xf7,0x06, 0xa6,0x31,0xb1,0xf7, - 0x0a,0x29,0x09,0xf6, 0x9c,0x6b,0xcd,0xfb, 0x84,0x31,0xbc,0xc6, 0x96,0x95,0x39,0x1e, - 0x45,0xeb,0xc8,0x6e, 0x5f,0xb9,0xd8,0x1b, 0x8f,0x3d,0x33,0xb5, 0x12,0xb3,0x55,0x42, - 0xac,0xe9,0xcd,0x93, 0x04,0x4f,0x46,0xc2, 0xa2,0x57,0xb6,0x46, 0x56,0x69,0x85,0x47, - 0xda,0x7f,0x2e,0x64, 0x7a,0x9c,0x51,0x7a, 0x1a,0xad,0x27,0xea, 0xee,0x8a,0x08,0xa4, - 0x48,0x9e,0xd9,0x18, 0x6a,0x48,0x16,0xa6, 0x4a,0x34,0x48,0xa3, 0x3e,0x03,0xfd,0x28, - 0x5e,0xa9,0x82,0xe3, 0x4c,0x83,0x4e,0xd1, 0xe1,0xd7,0x60,0x3d, 0x4e,0x2d,0x08,0x37, - 0x69,0x99,0xcb,0x4d, 0x6a,0xaa,0x01,0x92, 0xc1,0xa3,0xd4,0x3f, 0xcd,0xf2,0x1e,0x01, - 0x3d,0xc3,0xcc,0xe6, 0x17,0xb5,0x09,0xef, 0x95,0x79,0x98,0x2c, 0x9d,0xb9,0x9c,0x4c, - 0x8c,0xe5,0x35,0xdd, 0x78,0x09,0xc0,0x54, 0xa2,0xa7,0x2c,0xb1, 0xed,0xe9,0xb4,0x6e, - 0x55,0xf4,0x6f,0xb2, 0xde,0xfa,0x8b,0xf9, 0x2b,0xb6,0xd9,0xd4, 0xad,0x3e,0x1b,0x55, - 0x44,0x9e,0x1b,0xe5, 0x90,0x03,0x38,0x45, 0x3d,0xfc,0x21,0x5f, 0xe7,0x5c,0x96,0x8a, - 0xc2,0xe0,0xde,0xda, 0xe9,0x09,0x0c,0xd6, 0x80,0xa0,0xee,0xcd, 0xdf,0x44,0xbe,0x4d, - 0xb6,0xfc,0x07,0xfc, 0x10,0x1f,0x65,0xe7, 0x0c,0xb5,0xd8,0xc8, 0x51,0x91,0xbf,0xc1, - 0xa8,0x87,0xf7,0xe5, 0x6d,0x2d,0x67,0x86, 0xf2,0xa9,0x31,0xa2, 0x7a,0x90,0xc4,0xf6, - 0x26,0xdb,0x79,0x65, 0x4d,0xec,0xf2,0x15, 0x52,0xe3,0x63,0x16, 0x2a,0xc2,0xea,0xff, - 0x1a,0x3f,0xcd,0x95, 0x15,0xb0,0x37,0x88, 0xa7,0x00,0x45,0xcf, 0xdb,0x90,0xec,0x0f, - 0x9b,0xa3,0x32,0xc8, 0xe2,0x4a,0xdf,0xe3, 0x22,0x44,0x44,0x02, 0x65,0x43,0x43,0xdc, - 0x17,0xdb,0x44,0x23, 0x15,0xe5,0xc6,0xf6, 0xcd,0x4e,0x30,0x4d, 0x74,0x16,0x22,0x9b, - 0x7d,0x73,0xdf,0xac, 0xa0,0xc7,0x94,0xd2, 0x58,0xc9,0xe9,0x0e, 0xa4,0x6e,0x2c,0x51, - 0x5e,0xa8,0x3b,0x32, 0x86,0x42,0xd9,0x0a, 0x9b,0x2b,0xf2,0x02, 0xa1,0xe6,0xad,0x68, - 0x0f,0xd2,0x00,0x85, 0x6d,0xba,0xb8,0xab, 0xe2,0x64,0xcc,0xa8, 0xb8,0xc7,0x9e,0x6f, - 0x6f,0xa8,0x9f,0x38, 0x0f,0x9a,0x97,0x9a, 0xa2,0x74,0xea,0xd3, 0xb1,0x7e,0x51,0xa7, - 0x86,0xc6,0xc0,0x76, 0x5d,0x2d,0x36,0xe1, 0xfe,0x20,0x7f,0xd5, 0xae,0x18,0x5e,0x54, - 0x4f,0xc1,0xa1,0xfc, 0xf2,0xe9,0x13,0x67, 0xde,0x95,0xd2,0xaa, 0xb7,0x51,0xdf,0x33, - 0x6b,0x5d,0xc5,0xf7, 0x52,0xa7,0x69,0xd8, 0x81,0x58,0x61,0x37, 0xb9,0x86,0x16,0xa8, - 0xa9,0xa3,0xae,0x45, 0xe1,0x69,0xb6,0x4e, 0xd2,0x0f,0xbc,0xa5, 0xa1,0xd2,0xd4,0x64, - 0x3d,0x6b,0x0d,0x7a, 0x03,0x82,0x26,0xd6, 0xea,0x4a,0x25,0x92, 0xc6,0xd0,0xd0,0xbe, - 0x6e,0xc4,0x81,0xc8, 0x29,0x80,0x13,0x5e, 0x58,0x96,0xad,0x78, 0xf2,0x73,0x91,0x30, - 0xbf,0x41,0x67,0xa8, 0x7c,0x80,0xb5,0x51, 0xcc,0x2c,0xf5,0x39, 0x75,0x84,0x0f,0x1a, - 0xcf,0x2e,0xa5,0x26, 0x9a,0xe4,0x3e,0x42, 0x90,0x2a,0x2f,0x38, 0x68,0x01,0x0b,0x6f, - 0x8a,0x1b,0x52,0x6b, 0x58,0x42,0x70,0xcc, 0x79,0xfa,0xa0,0x73, 0xda,0xc9,0xe8,0x57, - 0x72,0x04,0x4f,0xcc, 0x71,0x01,0x25,0x9d, 0xee,0x0d,0x61,0xf0, 0xc7,0x8d,0xf6,0x54, - 0x41,0x99,0x75,0xf9, 0xce,0x73,0x46,0x1f, 0xb0,0x95,0x69,0xbc, 0xaf,0xaf,0x66,0x3c, - 0x2f,0xc9,0xaf,0x8b, 0x8b,0x3d,0xb9,0x0f, 0x8f,0x63,0xe9,0x49, 0x7f,0x95,0xca,0xba, - 0x33,0xc7,0x31,0x0c, 0xc2,0xb9,0x4b,0x15, 0xe8,0x6b,0x0d,0x3a, 0x63,0x8c,0x1d,0xeb, - 0xda,0xf3,0xcd,0x52, 0xda,0xce,0x92,0x49, 0x88,0xac,0x2d,0x3b, 0x10,0x1f,0xf3,0x6e, - 0xb7,0xf8,0x22,0x73, 0x4f,0xd1,0x1e,0x3c, 0xe5,0xbb,0x78,0xfa, 0xc4,0x3e,0x24,0xa8, - 0x3e,0xc6,0x82,0x10, 0x1c,0xc0,0x08,0xa7, 0x5b,0x4a,0x18,0x22, 0x87,0x37,0x21,0x9b, - 0x1f,0x4f,0xb1,0x3c, 0x57,0x36,0x30,0xda, 0x73,0x27,0x10,0x36, 0x00,0xbf,0xf3,0xda, - 0xe4,0x2d,0xae,0xd8, 0xab,0x66,0x50,0x7b, 0x83,0x33,0x82,0x78, 0x67,0x04,0xdb,0x1c, - 0x4c,0xdf,0xca,0x5b, 0xeb,0x49,0xef,0x65, 0x65,0xf2,0x5b,0x05, 0xfb,0xa6,0xc5,0x3c, - 0x3f,0x02,0xe6,0xb3, 0xe6,0x6b,0xe1,0x80, 0x5c,0x82,0x03,0xee, 0xeb,0xc7,0xe4,0x39, - 0x03,0x90,0xd3,0x1d, 0x8e,0xdc,0xd7,0x2e, 0x95,0x5c,0xa1,0xb1, 0xee,0x70,0x42,0x41, - 0x45,0xf3,0xe7,0x21, 0xef,0xbb,0xf4,0x34, 0x3f,0xde,0x23,0x8d, 0xe8,0x23,0x14,0xb0, - 0x83,0x3a,0xc8,0x90, 0xf1,0x9a,0xe1,0xa7, 0x22,0x20,0xa7,0x52, 0x6f,0x2f,0x87,0x9c, - 0x65,0xf9,0xb4,0xd3, 0x53,0x00,0x81,0xdc, 0x92,0x98,0x03,0x4d, 0x6c,0x5b,0xdd,0xa9, - 0xca,0xf4,0x4b,0xbf, 0x9d,0xa6,0x4e,0xf3, 0x9f,0x4c,0xdc,0x30, 0xd1,0x46,0x13,0x59, - 0x2b,0x36,0x3d,0x64, 0x73,0xde,0x7b,0x3d, 0x26,0x61,0xd2,0xb8, 0x91,0x2b,0x86,0xbb, - 0x26,0x0d,0x5d,0x3b, 0x18,0x21,0xa2,0x3e, 0x0e,0x34,0xd0,0x7c, 0xf8,0xb2,0x2d,0xb0, - 0xcb,0x10,0x3b,0x83, 0x85,0xe1,0x63,0x3c, 0xd3,0x5d,0xf3,0x44, 0xa1,0x9f,0x6b,0xef, - 0x7a,0x45,0xce,0xb7, 0xf5,0x96,0x27,0x0c, 0x87,0x1c,0x4d,0x0c, 0x16,0x81,0x57,0xd0, - 0x25,0x1b,0x11,0x8c, 0x99,0x28,0xd2,0x14, 0xa1,0xf4,0x7f,0x0a, 0x15,0x9d,0xf9,0x99, - 0xb0,0xef,0x4a,0xf2, 0x06,0x12,0x9b,0xf6, 0x9d,0xcb,0x53,0xdc, 0x4f,0x6f,0xab,0xa3, - 0xf4,0xa5,0xaf,0x88, 0x2c,0xa1,0x15,0xfb, 0x73,0x13,0x99,0x33, 0x83,0x8f,0x4b,0x96, - 0x44,0x40,0x7f,0xb1, 0x2c,0x85,0x73,0xc1, 0xd7,0xc5,0x9d,0xdc, 0xca,0x31,0x6a,0xb2, - 0xbc,0x85,0x41,0x83, 0xc1,0x35,0xb0,0x9a, 0x1e,0xce,0xe7,0x06, 0x72,0xde,0x0e,0x9d, - 0x4f,0x13,0x85,0x21, 0x0d,0xd6,0x1b,0x08, 0xe3,0x20,0xbe,0x78, 0x8a,0xf7,0x3f,0xcb, - 0x0c,0xa3,0x73,0x74, 0xcf,0xde,0x32,0xe3, 0x52,0xa7,0x47,0xaf, 0xba,0x14,0x15,0x12, - 0xc2,0xec,0xaf,0x18, 0x79,0x29,0x05,0xac, 0xc7,0x88,0x8d,0x8f, 0x58,0xdd,0xa7,0x3e, - 0xb5,0xbd,0x49,0x0a, 0xef,0xaf,0xdc,0xf1, 0x01,0xa7,0xdb,0x5f, 0x93,0x2d,0xc9,0x1b, - 0x9e,0x38,0xd4,0x17, 0x54,0x05,0x71,0xf6, 0x51,0x37,0x7e,0x88, 0xbd,0x2a,0xd0,0xbd, - 0xbd,0x56,0xad,0xd3, 0xe1,0xce,0xe1,0x41, 0x05,0xe9,0x02,0xfb, 0x08,0x48,0xa7,0x64, - 0xc3,0x8e,0x5e,0xc9, 0xc9,0x80,0xae,0xc4, 0x99,0x2d,0x04,0xcf, 0x84,0xf7,0x4e,0x38, - 0xa6,0xae,0xb3,0xad, 0x80,0xa9,0x28,0x9e, 0xbc,0x5d,0x07,0x4d, 0xe1,0x4d,0x29,0xa3, - 0x05,0x31,0x95,0xae, 0xe4,0x76,0xb9,0xec, 0xdf,0x8d,0x77,0x7f, 0x3d,0x36,0x9e,0x75, - 0x6e,0x1a,0xa6,0x97, 0xf3,0xa1,0xa0,0x9f, 0x66,0xd8,0x91,0x07, 0x2c,0xbc,0xfb,0x8a, - 0xe9,0xa9,0x3c,0x50, 0x27,0xac,0x1a,0x93, 0xe1,0xcb,0x0f,0x78, 0x9c,0x95,0x48,0xe1, - 0xa9,0x9a,0xd9,0x96, 0xfe,0x18,0x59,0x10, 0xb1,0xe9,0xe1,0x93, 0x81,0x8d,0x90,0x71, - 0x0c,0xc5,0x74,0x37, 0x71,0x0c,0x50,0x04, 0x48,0xf3,0xaf,0x06, 0xe4,0xbc,0x87,0xc1, - 0xda,0x1f,0xe9,0x56, 0x1e,0x56,0xd9,0x8a, 0xdd,0xc7,0x7c,0x25, 0x3c,0x6c,0x8f,0xca, - 0x20,0x14,0x6a,0xab, 0xe2,0x6d,0x4b,0x1d, 0x6a,0x19,0x15,0x8b, 0x83,0xd1,0x79,0x13, - 0x0f,0x33,0xa6,0xce, 0xe2,0xe2,0x49,0xe8, 0x54,0x62,0xf1,0x76, 0x73,0x39,0x71,0x5e, - 0xab,0x05,0x0f,0x4f, 0x1a,0xe4,0x70,0x3c, 0xbb,0xde,0x1e,0xcb, 0x98,0xc9,0x90,0x48, - 0x0f,0x21,0x27,0xdd, 0x5f,0x95,0x7b,0x78, 0xb6,0xc5,0xa4,0x4e, 0x9d,0xb1,0x50,0xcf, - 0xc4,0x49,0x57,0x91, 0x21,0xa1,0x21,0xa0, 0x7d,0x3a,0xeb,0x38, 0x14,0xf8,0xb3,0x3b, - 0xe5,0xc7,0x19,0x4f, 0xd0,0xf2,0x7c,0x51, 0x71,0xe2,0xec,0xa4, 0xe5,0xff,0xb6,0x50, - 0x06,0x2d,0xc0,0xe8, 0x14,0xe9,0x0c,0xa5, 0xb7,0x23,0x30,0x43, 0x2f,0x08,0x7f,0x27, - 0x0d,0x0e,0x47,0x2f, 0x4b,0xbb,0xf5,0xce, 0x9a,0x5b,0x3c,0xd5, 0x19,0xd1,0x95,0x3d, - 0x4b,0xc8,0x1f,0xeb, 0xc7,0x86,0x25,0x0f, 0x98,0xf1,0xd2,0x88, 0xaf,0x8a,0x0f,0xe4, - 0x01,0x62,0xf3,0x4e, 0xad,0xb7,0x54,0x49, 0x94,0x44,0x91,0x30, 0x66,0xc5,0xa8,0x6a, - 0x7b,0xb8,0x78,0x07, 0x16,0x80,0x7b,0x92, 0x7a,0x6d,0xcb,0x3c, 0xab,0x68,0xdc,0xe4, - 0x33,0xbd,0x92,0x98, 0x43,0x29,0x86,0x93, 0x45,0xd6,0x5f,0x1d, 0x60,0x7c,0xcd,0x76, - 0x6e,0x75,0x81,0xd1, 0xea,0x53,0x8d,0x63, 0x61,0x17,0x8e,0x2e, 0x06,0x00,0xa4,0xe8, - 0xac,0xde,0x28,0x6b, 0x3b,0x78,0x89,0x7e, 0x77,0x7d,0x9c,0x0e, 0x3e,0x40,0xd7,0x6e, - 0x4c,0x7f,0x5a,0xa0, 0xbc,0x71,0xcf,0xcb, 0x97,0xd5,0x6e,0xfc, 0x05,0x0f,0x2c,0xc3, - 0xb7,0xe3,0x54,0x41, 0x71,0xd9,0xf1,0x29, 0x67,0x76,0x0b,0x02, 0xaf,0xcd,0x34,0x94, - 0x3c,0xfe,0x3e,0x63, 0x36,0xfd,0xcf,0x15, 0x25,0x93,0xc8,0xfd, 0xf7,0xe6,0x91,0x86, - 0xf6,0x4d,0x82,0xed, 0xd0,0xcf,0x66,0x94, 0x43,0xe4,0x38,0x6d, 0x72,0x6e,0xe3,0x92, - 0xee,0x51,0xd7,0xa7, 0x44,0x02,0x04,0x00, 0x62,0xbb,0xc2,0x67, 0xae,0x74,0x41,0x83, - 0x87,0x6e,0x6f,0xf2, 0x10,0xf6,0x97,0x32, 0x8c,0xda,0x63,0xe2, 0x0c,0x15,0x38,0xc2, - 0x40,0xf0,0x68,0xb8, 0x34,0x55,0x8e,0x07, 0xeb,0xe5,0x5d,0x8d, 0xbf,0x86,0x56,0x32, - 0x03,0xfe,0x20,0xff, 0x32,0xdb,0x18,0x6c, 0x9b,0x73,0xc8,0x7f, 0x27,0x18,0xaa,0xb8, - 0xef,0x57,0x61,0x27, 0x13,0xe8,0xcc,0x49, 0x6a,0x11,0x0c,0x03, 0x31,0x2e,0x01,0x6d, - 0xc8,0xf3,0x4f,0x3d, 0x9d,0xfa,0x8a,0xf4, 0xba,0x3c,0x1f,0x39, 0x26,0x14,0xda,0xde, - 0x94,0xa1,0x32,0x73, 0x3f,0x85,0xfa,0x83, 0x03,0x7c,0x32,0xdb, 0x40,0xff,0x97,0xc4, - 0x93,0xdd,0x23,0x2e, 0xae,0x34,0xea,0x67, 0x98,0x40,0x84,0x83, 0x70,0xd0,0x9d,0xae, - 0xb0,0x58,0x1d,0xb1, 0x3d,0x25,0xeb,0x66, 0xd3,0x8d,0x71,0x1e, 0xad,0xde,0xc5,0x50, - 0xbf,0xb9,0x3c,0xcf, 0xa8,0x34,0x82,0x22, 0xed,0xe3,0x6f,0x57, 0xc9,0x1f,0x8a,0x23, - 0xb9,0x8e,0x39,0xbc, 0xe0,0xa2,0x8c,0x1b, 0x31,0x02,0x9a,0x77, 0x2a,0xe8,0xa2,0x6f, - 0x3c,0x5d,0x75,0x22, 0xaf,0xbb,0xa6,0xf2, 0x58,0x64,0x5d,0xb0, 0x6d,0xcf,0xe4,0x7e, - 0x7a,0x28,0x2e,0x41, 0x38,0xf0,0xc2,0x91, 0xdd,0xf0,0xd1,0x83, 0x83,0x8f,0x35,0xec, - 0x45,0x95,0x03,0x44, 0xc5,0x87,0xb0,0x24, 0x2b,0xf2,0x5b,0x86, 0x21,0x6f,0x6d,0xa4, - 0x00,0x89,0x38,0x65, 0x25,0x06,0xdf,0x87, 0x17,0x8e,0x49,0xbd, 0xd5,0x7b,0x14,0x22, - 0xcd,0x70,0xf3,0x6d, 0x66,0x1e,0xdc,0x2e, 0x7c,0x57,0xb3,0xb9, 0x85,0xce,0x52,0x13, - 0x7d,0xcf,0xd9,0xcd, 0xc0,0x60,0x30,0x8a, 0x6a,0x55,0x90,0x7c, 0xab,0xd2,0x8a,0x0f, - 0x88,0x0e,0x51,0x0d, 0x77,0xea,0xe4,0x63, 0x96,0xe7,0xf6,0x58, 0x9c,0x9d,0xa0,0x2b, - 0x4d,0xe1,0x0b,0xbb, 0xa6,0x84,0x47,0x73, 0xbc,0x04,0x42,0x20, 0xc7,0xc5,0x74,0x77, - 0xc9,0x5a,0x73,0x1b, 0x62,0x77,0x74,0x8b, 0xce,0x4b,0xb8,0x4a, 0x7a,0x59,0xad,0xa9, - 0xfd,0x78,0x37,0x35, 0x23,0x20,0x32,0xc7, 0x93,0x0b,0x96,0x91, 0x47,0x4a,0xba,0x74, - 0x5a,0x4a,0x82,0x32, 0xcb,0x54,0x3d,0x90, 0x14,0x60,0xb9,0x69, 0xc6,0xc3,0x74,0x1e, - 0xd6,0x27,0x94,0x04, 0x06,0xa3,0x4c,0xaa, 0xd5,0x27,0xc8,0x8e, 0x28,0xfb,0x84,0xaf, - 0x5b,0xaf,0x2f,0xd3, 0x46,0x93,0xd2,0xa2, 0xe3,0x0c,0x57,0x3e, 0x02,0xd4,0x12,0xc5, - 0xdc,0xb6,0x0b,0x6b, 0xb4,0xa1,0x73,0x59, 0xfb,0x5c,0x65,0xf9, 0x13,0x2e,0x4d,0x36, - 0x3b,0xe1,0x02,0x43, 0x61,0xdd,0x95,0xb0, 0xe7,0xf5,0x7e,0x74, 0x5b,0xe5,0x92,0x0b, - 0x9f,0x21,0xcf,0x07, 0x5f,0xea,0x48,0xca, 0x33,0x97,0x2d,0xbc, 0x2b,0xaa,0x07,0xe9, - 0x11,0x0a,0x03,0xb7, 0xb0,0x8c,0xd4,0x7a, 0x09,0x76,0x61,0x08, 0x85,0x6c,0x44,0xa0, - 0x8d,0xfa,0x3b,0xf3, 0x50,0x2b,0x9f,0x1c, 0x47,0x39,0x90,0xe4, 0xf3,0x50,0x70,0x2c, - 0x6b,0x9b,0x2f,0x9e, 0x31,0x91,0x6b,0xc0, 0xf1,0x99,0xd9,0x6c, 0x4a,0x0e,0xe1,0x41, - 0x81,0xe3,0xea,0x1e, 0x57,0x0e,0x0b,0x5c, 0xab,0xf9,0x28,0x7c, 0x87,0xb7,0x50,0x03, - 0x10,0xf9,0xca,0x02, 0x45,0xb8,0xdf,0x80, 0x3a,0xe3,0x3f,0x69, 0x24,0x3f,0x22,0xd3, - 0xf5,0xaf,0x07,0x5b, 0xe2,0x2c,0x13,0xa6, 0x7e,0x18,0x51,0x7e, 0x30,0xbb,0x5c,0x1b, - 0xb2,0x93,0xca,0x5d, 0xb6,0x72,0x36,0x94, 0xcd,0x05,0x91,0xd9, 0x71,0x9d,0x69,0x07, - 0xfe,0x9e,0x67,0xb1, 0xbd,0x55,0x09,0x8f, 0xd7,0xc8,0x13,0x8d, 0x8a,0x2a,0xa3,0x61, - 0x31,0x09,0xf1,0xd2, 0x29,0x34,0x33,0x95, 0xcf,0x72,0x8f,0x6e, 0x74,0x6e,0xcc,0x74, - 0x34,0x01,0x81,0x00, 0x32,0x04,0x82,0xb3, 0x68,0x3b,0xde,0xda, 0x4f,0x5c,0xe9,0x44, - 0x1c,0xff,0x31,0xae, 0x53,0xc1,0x89,0x3e, 0x67,0x15,0x78,0x88, 0x2e,0x94,0xe2,0x93, - 0xb4,0x91,0x06,0x58, 0xca,0xb3,0xd8,0x95, 0xf6,0x27,0xac,0x48, 0x89,0xde,0xe2,0x3b, - 0x6f,0x65,0x91,0xbb, 0x3d,0x32,0xa2,0xc5, 0x3f,0x44,0x94,0xab, 0x8a,0x44,0x8c,0xa3, - 0x7d,0x04,0x55,0x23, 0x66,0xce,0xa0,0x35, 0xdb,0xb0,0x3b,0x2d, 0x60,0xa3,0xed,0xa2, - 0xfd,0x67,0x13,0xcc, 0x94,0x0d,0xeb,0x05, 0xcf,0xc1,0x29,0xf4, 0x92,0x55,0x70,0xbe, - 0x0d,0x4b,0x97,0x3b, 0x32,0x02,0xd6,0x0a, 0x7b,0xb9,0x83,0x95, 0x24,0x0e,0x95,0xfc, - 0x4f,0x41,0xfd,0x72, 0xd2,0xb8,0xd3,0x03, 0x16,0x33,0xb8,0xd3, 0xf0,0x18,0xdc,0xd2, - 0x16,0x49,0x3a,0xe2, 0xda,0x2f,0x7b,0xf1, 0x43,0x4a,0x2a,0x6d, 0xe3,0x97,0xd8,0xc9, - 0x64,0x75,0xfe,0x5d, 0xd5,0xb9,0x1f,0x83, 0x86,0x6d,0x5f,0x92, 0x67,0x0f,0x83,0x58, - 0x3b,0xd1,0x89,0x36, 0xfe,0xf4,0x22,0x1a, 0x7c,0xf6,0xfe,0x0d, 0x99,0x68,0x83,0x89, - 0xcc,0xd0,0xeb,0x72, 0x0c,0x22,0x80,0x22, 0xe9,0xcf,0x99,0x59, 0xe0,0xa2,0x85,0xd0, - 0x64,0xc2,0xfb,0x91, 0x9c,0xf2,0xc4,0x87, 0x08,0xaa,0x0d,0xe7, 0x97,0xbc,0x55,0x54, - 0x18,0x40,0x05,0x23, 0x43,0x16,0x7c,0xfe, 0x4b,0x7e,0x73,0x17, 0xc2,0x3a,0x6a,0x1c, - 0xa7,0x00,0x05,0x45, 0x6b,0xe8,0x32,0x53, 0x29,0x0c,0xc7,0x10, 0xd9,0x1a,0xd0,0x9e, - 0x49,0x87,0x28,0x80, 0x43,0x13,0x03,0x2d, 0x9a,0xe1,0xb4,0x7c, 0xa9,0x9f,0x93,0xf2, - 0xd1,0xd5,0x5d,0xa3, 0x17,0x22,0xc3,0x07, 0x63,0x48,0x03,0xf8, 0x31,0x44,0x9a,0xcc, - 0x14,0x5b,0x22,0xea, 0x9e,0x70,0xce,0x1c, 0x02,0xc8,0x2e,0x63, 0x0a,0xef,0x6b,0x9f, - 0x2b,0xf4,0x99,0xf1, 0xde,0xab,0x43,0xeb, 0x13,0x1a,0x50,0xe0, 0x17,0x5d,0x8a,0x34, - 0xf0,0x56,0x9b,0xa0, 0x69,0xa5,0x52,0x56, 0x8e,0x83,0x09,0xcc, 0xd0,0x90,0x18,0xde, - 0xd9,0xa0,0xc2,0xe5, 0x27,0x86,0xc2,0x41, 0x37,0xfc,0xc0,0x30, 0x5f,0x60,0x78,0x25, - 0x2c,0x23,0x84,0xd1, 0xd0,0x28,0xab,0x68, 0x11,0xe7,0x8e,0x88, 0xb8,0x3e,0x45,0x02, - 0xfb,0xbb,0x2a,0x9d, 0x2b,0x4e,0x3e,0x45, 0x0f,0xa2,0x86,0xbb, 0x1a,0x62,0x15,0x8c, - 0x96,0x8e,0xf2,0x1a, 0x3f,0xf5,0x80,0x3f, 0x60,0xc1,0x9a,0x6c, 0xb9,0xd0,0x2b,0x97, - 0x3a,0x7e,0x44,0x5f, 0x21,0x45,0xe5,0xda, 0xe6,0x98,0x1f,0xe2, 0x36,0x09,0x8b,0xac, - 0x9e,0x82,0x95,0x2d, 0x44,0xb3,0x04,0x94, 0xaa,0x65,0xde,0xfc, 0xa5,0x93,0xbe,0xe3, - 0x56,0xb9,0x64,0x2a, 0x6a,0x37,0xf4,0x25, 0xbb,0x89,0x25,0x8b, 0x5c,0xbf,0x50,0xbe, - 0x9c,0xd9,0x33,0xa7, 0x15,0xa6,0x56,0x29, 0xfc,0xe8,0x89,0x8c, 0xde,0x37,0xd7,0x82, - 0xc4,0x2c,0x8b,0x7b, 0x80,0x44,0xc1,0x52, 0x63,0xc1,0x65,0xa8, 0x86,0xf3,0xfa,0xd2, - 0x2d,0xb2,0x8d,0xe6, 0xfe,0xa3,0x8c,0xe7, 0xd6,0x53,0x08,0xc9, 0xb7,0xd2,0x9a,0x7b, - 0xcd,0x72,0x96,0x84, 0x68,0x76,0x3a,0x65, 0x56,0xed,0x49,0xf2, 0x77,0xf0,0x47,0xa0, - 0xdb,0x66,0x5b,0x9c, 0xdf,0x48,0x65,0x41, 0x75,0x8e,0x43,0xaf, 0x60,0xb7,0x8a,0x15, - 0x14,0xc6,0x25,0xb6, 0xd8,0x7d,0x36,0x50, 0x6a,0xfa,0x50,0x77, 0x08,0xac,0xa6,0x88, - 0xf8,0xb5,0x6d,0x80, 0xd7,0x84,0x11,0x3e, 0x36,0x8f,0x7e,0xec, 0xfe,0x59,0x69,0x0c, - 0xb3,0x29,0x87,0x9a, 0x51,0x97,0x1d,0x27, 0xf3,0xec,0x3c,0x20, 0xbf,0xc3,0x9f,0x1e, - 0x58,0x6a,0x28,0x22, 0x88,0x05,0x09,0x78, 0x29,0xd5,0xc3,0x4f, 0x17,0x4f,0xf6,0xe5, - 0x4e,0xea,0x86,0x53, 0x44,0x4b,0x71,0xef, 0xd7,0x9f,0x3c,0x59, 0x29,0x11,0x81,0x57, - 0x06,0x73,0x11,0xb4, 0xb1,0x0b,0xd6,0x20, 0x68,0x31,0xc3,0xb0, 0x6b,0xd1,0xb9,0x91, - 0x0d,0x56,0x4b,0xb2, 0x8e,0x42,0x2b,0x48, 0x20,0xa1,0xe8,0xe0, 0x7c,0xb1,0xc8,0x1e, - 0x2c,0xc3,0xcd,0x4f, 0x2c,0x52,0x29,0x9f, 0xeb,0x98,0x58,0x7a, 0xd7,0x60,0x98,0x2e, - 0x8f,0xa0,0x8e,0x2e, 0xa8,0xf9,0x01,0x3a, 0x8d,0xe8,0x59,0x0b, 0x54,0x54,0xd2,0xec, - 0x5c,0xc4,0xb4,0x1f, 0x75,0xf0,0x15,0xd7, 0x16,0x62,0x7c,0x57, 0x61,0x39,0x16,0x00, - 0xc6,0x7f,0x09,0xdc, 0x70,0x27,0x04,0x21, 0xf3,0xa8,0x68,0xa5, 0x6a,0xb1,0x96,0x44, - 0x66,0x7e,0xdd,0x5c, 0x1f,0xc5,0x76,0x6f, 0xfd,0x91,0x2c,0x6a, 0x16,0xb7,0x8b,0x15, - 0xcb,0x34,0x4a,0xc6, 0xcd,0xad,0xf0,0x07, 0xe4,0xdb,0xaa,0x1b, 0xc7,0x68,0xc9,0x8a, - 0x5a,0x0f,0x4f,0x34, 0xc0,0x3b,0x80,0xcf, 0xaf,0x78,0xb5,0xa3, 0x2e,0x19,0x35,0x47, - 0x3a,0xd0,0xa5,0x07, 0x5f,0x5b,0xf7,0x0d, 0x76,0x33,0xbc,0xeb, 0xc3,0xac,0x02,0x49, - 0x99,0xd2,0x98,0x5e, 0x14,0x72,0x45,0xce, 0xcb,0xc9,0xe7,0x58, 0x05,0x42,0x2c,0x99, - 0x52,0x5f,0x77,0xc5, 0x43,0x9a,0xf5,0x1d, 0xd4,0x63,0xb3,0x66, 0x46,0xef,0xa7,0x20, - 0xf5,0xbc,0xc8,0xe4, 0x7f,0x52,0xc4,0xec, 0xe8,0x32,0xda,0x69, 0x66,0x80,0xf2,0xde, - 0xc2,0xca,0xb5,0xb2, 0xa4,0xed,0xa8,0xb9, 0x90,0x2d,0x58,0x84, 0x16,0x9f,0xf5,0x08, - 0x7e,0x86,0x63,0x43, 0x3c,0x24,0xcd,0xc3, 0xd9,0x0a,0x77,0x12, 0x93,0xe2,0x01,0xfe, - 0xaf,0xa5,0xab,0x85, 0xf5,0xe6,0x30,0x72, 0xee,0x2f,0x94,0x6d, 0x9f,0x58,0x50,0x1b, - 0x0f,0x22,0x7f,0x73, 0x67,0x5e,0x1c,0xd6, 0x6c,0x27,0x4f,0xb6, 0x59,0x05,0x50,0xa9, - 0x0e,0x60,0x63,0x9c, 0x72,0x5a,0x90,0xb9, 0x35,0x17,0x7d,0x42, 0x03,0x95,0x62,0xc2, - 0x7a,0x7d,0x6c,0x46, 0x91,0xab,0xce,0xc2, 0x1c,0x33,0x89,0x6b, 0x02,0xce,0x3e,0x0a, - 0x06,0xe3,0x45,0x26, 0x0a,0x23,0x4f,0xea, 0xbb,0xc2,0xb5,0xd2, 0xb9,0xfd,0xf0,0xe0, - 0x49,0x09,0x70,0x89, 0x8e,0x76,0x99,0x02, 0x8a,0xad,0x31,0x6b, 0x1b,0xdf,0x9b,0xf1, - 0x96,0xf6,0xd2,0xca, 0x90,0x0d,0x01,0x00, 0x6c,0x28,0x8f,0x24, 0x4b,0xa7,0x05,0xfd, - 0x45,0xf7,0xc4,0x65, 0xf5,0x0e,0xed,0x80, 0x5c,0x11,0xa3,0x1f, 0xa0,0x22,0xf4,0x08, - 0x1c,0xf1,0xa6,0xda, 0x67,0xcd,0xd4,0x7f, 0xe7,0x58,0xb1,0x83, 0x7e,0x3a,0x83,0xf7, - 0x7b,0xaf,0xdf,0xdd, 0x4c,0x30,0xf1,0xae, 0x9c,0x3c,0xdb,0xf9, 0x30,0x5e,0x8a,0x3c, - 0x7f,0xdf,0xe5,0x38, 0xbb,0x34,0xdb,0xea, 0x94,0xa1,0x6a,0xec, 0x79,0xe7,0xd4,0x3a, - 0x16,0xba,0x32,0x01, 0xa7,0xdb,0x52,0xed, 0xa2,0x29,0xbe,0xf0, 0x91,0x56,0x3e,0x6e, - 0xdb,0x80,0xc9,0x21, 0xeb,0x6a,0x1b,0xba, 0x7f,0x4a,0x8d,0x09, 0x04,0x91,0xca,0x05, - 0x7f,0x03,0xa1,0x6a, 0x55,0x24,0xa1,0x5e, 0xee,0x2c,0xdc,0x10, 0xba,0x31,0x07,0xb9, - 0x04,0x52,0xf3,0xc7, 0xfa,0xce,0xf1,0x37, 0xe9,0x2b,0x3d,0x71, 0xb2,0x03,0xbb,0x19, - 0x2f,0xf9,0xea,0x7a, 0xcb,0x4b,0x82,0x89, 0x91,0xeb,0xbf,0x6d, 0x06,0x31,0x25,0xea, - 0x77,0x17,0xa2,0x32, 0x8c,0x10,0x8a,0x5d, 0x8b,0x57,0x33,0x3d, 0x10,0x1e,0x38,0xa0, - 0x2e,0x6c,0x9d,0x0b, 0x19,0x89,0x97,0x65, 0xec,0xd0,0x65,0x81, 0x55,0x7a,0xd2,0xdc, - 0x6a,0xc8,0xfc,0xb9, 0x74,0x84,0x3b,0xe2, 0x0f,0x59,0xca,0x8d, 0x98,0xad,0xaf,0x00, - 0x44,0x38,0x84,0x5c, 0xbe,0xfc,0x2d,0x00, 0x97,0x4a,0x78,0x2e, 0xbc,0xc7,0x9c,0x8b, - 0x66,0x2e,0xec,0x6a, 0xc8,0x80,0x9b,0xf1, 0x4d,0xcf,0xd8,0x77, 0x3b,0xbd,0xa5,0x5b, - 0x95,0xd1,0x20,0xc9, 0x54,0x57,0x54,0x7a, 0xdc,0x5d,0x9c,0x62, 0x7d,0x32,0xb3,0x31, - 0xc1,0x04,0x1f,0x8f, 0x4e,0x13,0xe5,0xd9, 0xf5,0x71,0x95,0x37, 0x4c,0x04,0xfa,0x86, - 0xa2,0xcf,0xe4,0x75, 0x54,0xe5,0xda,0xcb, 0x80,0xa7,0xfc,0x4d, 0x86,0x9b,0x68,0xd6, - 0x04,0x0e,0x5d,0x1c, 0x99,0x12,0xcc,0x45, 0x6b,0xa4,0xa9,0x36, 0xb0,0x81,0xb2,0x4c, - 0x14,0x22,0x39,0x08, 0x5f,0x90,0x53,0xe5, 0x08,0xf1,0x1c,0x68, 0x44,0x29,0x1f,0xb9, - 0xc3,0x21,0xa1,0x9d, 0x03,0x8f,0x83,0x7c, 0x0d,0x06,0x0f,0x01, 0x3e,0x48,0xda,0x3c, - 0x73,0xf8,0x6b,0x32, 0x6d,0xf0,0x9c,0xe7, 0x4c,0xb5,0xdb,0x8f, 0x57,0x4b,0xa1,0x80, - 0x9b,0xb7,0xce,0x04, 0xd0,0xdc,0x7d,0x1b, 0x64,0x9c,0xf0,0x01, 0xec,0x83,0x28,0xe7, - 0x71,0x08,0x37,0x9f, 0x1a,0xca,0x28,0x93, 0x71,0x3e,0x1f,0xa0, 0x86,0x1a,0x21,0x55, - 0xb6,0xac,0xfb,0x13, 0x6a,0xe2,0x00,0xdd, 0x17,0xad,0xc8,0x7b, 0x0f,0xfa,0xe0,0x05, - 0x3c,0x5b,0x25,0xe1, 0x3a,0xfa,0x8c,0x51, 0xb8,0xdd,0x2f,0x15, 0x65,0x3a,0x38,0x24, - 0xb1,0x12,0x7c,0x23, 0xf9,0xdd,0x29,0x94, 0x46,0x8e,0x3b,0x7a, 0x97,0xa6,0x9a,0xb0, - 0x02,0xe7,0x7c,0xcf, 0xb3,0x71,0x46,0x3a, 0xda,0xd5,0xd0,0x43, 0x82,0x39,0xc4,0xc7, - 0xc6,0x58,0x63,0x34, 0x46,0x6a,0x22,0xa4, 0x57,0x2c,0x11,0x8d, 0x46,0xc5,0x20,0xef, - 0xf4,0xd7,0x0a,0xa3, 0x21,0xbe,0x22,0x6b, 0x6c,0x66,0xed,0xc9, 0x70,0x23,0x2b,0x19, - 0x71,0x91,0x3c,0x5b, 0x0f,0xf1,0x5d,0x2f, 0x07,0xe3,0x22,0x6c, 0xef,0xd1,0x77,0xcd, - 0x26,0xe7,0x5e,0x02, 0x19,0x1e,0x0c,0xd6, 0x07,0x2c,0xea,0xa5, 0x9a,0x50,0x07,0x16, - 0x4f,0x69,0x90,0xfa, 0x93,0x16,0x52,0xff, 0x9f,0x98,0x1f,0x61, 0xa2,0x45,0x78,0xb8, - 0xed,0xe8,0xad,0x6d, 0x33,0x9a,0x7d,0x7a, 0x70,0x4f,0xee,0x97, 0xd4,0x7f,0x35,0x4f, - 0x54,0x60,0x88,0x58, 0xf8,0xa5,0xc2,0x39, 0x9d,0xd1,0xba,0x19, 0x92,0xfa,0x51,0x80, - 0x71,0x72,0xd3,0x29, 0xc2,0xf7,0x53,0xa4, 0xaa,0x14,0x6c,0x27, 0x9f,0xa7,0x71,0x7d, - 0xa7,0x1f,0xe4,0xa1, 0x09,0x41,0x76,0x1d, 0xa9,0x80,0xd5,0x85, 0xe4,0x0a,0x39,0xd3, - 0x21,0x7d,0x95,0x92, 0x37,0x01,0xc4,0x83, 0x3a,0xbf,0x18,0x91, 0x96,0xb7,0xda,0x28, - 0x27,0xad,0x4f,0xa6, 0x28,0x61,0x73,0xbd, 0x43,0x10,0xc0,0x51, 0xdc,0x87,0x58,0xf8, - 0x22,0xe2,0x88,0x87, 0x5e,0x73,0x08,0xf7, 0xb5,0xf1,0xe3,0x3a, 0x39,0x5d,0xa9,0x71, - 0x30,0x27,0x76,0x93, 0xc6,0x89,0xa5,0xdb, 0xaa,0x83,0xb1,0x24, 0x91,0x96,0x5d,0x8a, - 0x84,0x0d,0x30,0x0c, 0xa0,0x9d,0xf7,0x17, 0x9a,0xae,0xa8,0xab, 0x02,0x92,0xf9,0x1b, - 0xc8,0x2f,0x66,0x4a, 0x4a,0x21,0xc2,0xc9, 0x33,0xfb,0x1a,0xad, 0xf7,0x3e,0x6f,0x3b, - 0x27,0xee,0xd5,0xf9, 0x6a,0x53,0xda,0xbf, 0x76,0xcd,0xf2,0xf0, 0xd1,0x2b,0xec,0x8c, - 0x58,0x6e,0x1d,0x51, 0x1a,0xeb,0x30,0xaf, 0xf2,0xd0,0x6a,0x56, 0x1d,0x1e,0x3b,0xd7, - 0x64,0xa4,0x14,0x5a, 0x72,0x86,0xc6,0x09, 0xf9,0xa3,0x23,0x8f, 0xe1,0x26,0xc7,0xbf, - 0x23,0xd4,0x95,0x57, 0x15,0xbb,0x75,0xa0, 0x33,0xa7,0x2d,0xa4, 0xc7,0xd0,0x6b,0xe0, - 0x78,0x49,0xb2,0xc8, 0x18,0xcc,0xe6,0x75, 0xb1,0x02,0xab,0x48, 0xef,0xe1,0x32,0x2b, - 0x95,0x91,0x82,0x1a, 0x6e,0x74,0x61,0x80, 0xed,0x21,0x8d,0x6b, 0xdf,0xba,0xe6,0x8b, - 0xf5,0x64,0x01,0x4e, 0x53,0xb9,0x1c,0x54, 0x3b,0xf4,0x9e,0x82, 0x71,0x02,0xe0,0x67, - 0xd8,0x19,0xf3,0xe9, 0xed,0x62,0x1f,0x21, 0xb3,0x56,0x72,0x84, 0x5c,0xe1,0x77,0xa7, - 0xc9,0x8a,0x4f,0x83, 0xe0,0x8e,0x0f,0xa5, 0x1b,0xb4,0x4d,0xf3, 0xa3,0x4a,0xd9,0xec, - 0xe9,0x12,0x12,0xcf, 0xbc,0x8c,0xec,0x6b, 0x00,0x87,0x72,0x25, 0xdd,0x18,0xc7,0xea, - 0xcb,0x7e,0x27,0xef, 0x63,0x20,0x53,0x0f, 0x22,0x6f,0x12,0x3d, 0x96,0xa7,0x3c,0xf6, - 0x78,0xe7,0xc4,0xd6, 0x27,0xd0,0xe5,0x79, 0x83,0x71,0x9e,0x00, 0xaa,0xe6,0x38,0xf9, - 0x38,0x59,0x35,0xfc, 0xfa,0x47,0xcc,0x88, 0x71,0xa0,0xdd,0x61, 0xe1,0x7f,0xa0,0xfd, - 0xd4,0xeb,0x25,0x81, 0x4e,0xd8,0x97,0x67, 0x07,0xbd,0x95,0x5d, 0x15,0xf7,0x76,0x55, - 0x4b,0x92,0xa5,0x61, 0x1b,0x89,0xcf,0x4f, 0xd9,0x66,0x15,0x60, 0xa5,0x36,0xc6,0xfd, - 0x86,0x6f,0x5f,0x09, 0x0f,0xe9,0x3b,0x3f, 0x3d,0x0c,0xdb,0xa3, 0x08,0x7f,0x2f,0xc1, - 0xf5,0x89,0xa1,0x22, 0x59,0x35,0x9d,0x63, 0xa4,0x54,0x2d,0xcc, 0x83,0xbd,0x75,0x0e, - 0x96,0x0e,0xd1,0xaf, 0xf5,0x79,0xca,0x77, 0x88,0x42,0xb3,0x8f, 0xce,0x62,0x3f,0xaf, - 0xec,0x77,0x62,0xe5, 0xa9,0x4a,0x92,0xc0, 0x70,0x2c,0xf6,0xd8, 0x5e,0x52,0xcd,0x64, - 0x1d,0xb0,0xd1,0x7e, 0x9c,0xb2,0xd4,0x69, 0x9d,0x21,0x52,0xda, 0x26,0x41,0xb2,0x51, - 0x17,0xcf,0xa4,0x4b, 0x0a,0x40,0x5e,0x43, 0x58,0x55,0xb9,0x9a, 0x5c,0x37,0xde,0xd8, - 0x88,0xbf,0x95,0x71, 0x26,0xcf,0x40,0x63, 0x62,0x49,0x3c,0x2c, 0xf1,0xab,0xd5,0x87, - 0xa2,0x1c,0x62,0xa7, 0xc3,0x5b,0x3f,0x66, 0x16,0x63,0x21,0xd3, 0xca,0x15,0xe4,0x13, - 0xc0,0xc0,0x3e,0xa1, 0x8f,0x18,0x72,0xed, 0xbc,0x11,0x42,0xf1, 0x17,0x46,0x67,0x4c, - 0x9f,0xbc,0x47,0x77, 0xa9,0x36,0x44,0x85, 0xce,0xe6,0x8a,0x29, 0xb6,0x60,0x45,0x2c, - 0x46,0xbd,0x98,0x10, 0x7b,0x6f,0x69,0x00, 0x60,0xfa,0x93,0x11, 0xae,0x2c,0xa8,0x14, - 0xe3,0xbb,0x16,0xd3, 0x47,0xd5,0x8f,0xf5, 0x92,0x10,0x52,0x39, 0x67,0xf0,0xf3,0xd2, - 0x1b,0xaa,0xc9,0xf6, 0x1c,0xc8,0xa7,0x68, 0xc1,0xed,0x91,0xa8, 0x06,0x2c,0x4a,0xf0, - 0x7b,0x60,0x5e,0xee, 0x47,0xd4,0x7d,0xf7, 0x6c,0xb4,0xc5,0x0f, 0xd8,0x7d,0x5b,0x77, - 0x4d,0x6a,0x08,0x30, 0x24,0x57,0xb6,0x78, 0xf5,0x27,0x81,0xc4, 0xcd,0x25,0x88,0xe2, - 0xeb,0xdd,0x3f,0x84, 0x7c,0x81,0x05,0x55, 0xf0,0x07,0x6a,0x07, 0x8f,0xfc,0xea,0x5f, - 0x56,0xd8,0x71,0x68, 0x00,0x88,0x83,0xe7, 0x52,0x17,0x2e,0xf4, 0xd7,0x19,0xf3,0xa0, - 0x21,0x88,0xd2,0x54, 0xdd,0xfc,0x79,0x1e, 0xde,0x77,0x4e,0x71, 0x07,0x2f,0xa5,0x05, - 0x5e,0xf8,0xf7,0x3b, 0xff,0x13,0xa2,0x94, 0x74,0xbd,0xac,0x8c, 0x88,0x09,0x49,0xad, - 0xdf,0x85,0x3f,0x75, 0x62,0xbd,0xd4,0xc7, 0x37,0xd2,0xe8,0x28, 0x37,0x29,0xbb,0x61, - 0xee,0xd1,0x6e,0xfb, 0x55,0xc5,0x3f,0x77, 0x1e,0x5f,0xdf,0x31, 0x72,0x45,0xb8,0xd2, - 0x4a,0xdf,0xd7,0x28, 0x0a,0xa1,0x91,0x6e, 0x0d,0x85,0xae,0x73, 0x00,0x31,0xb5,0x32, - 0x81,0xbb,0xb3,0x4b, 0x92,0xb0,0xcb,0xd2, 0x33,0xe1,0x6e,0x86, 0x8a,0xdf,0xab,0x89, - 0x2d,0xe2,0x6c,0x3d, 0xb2,0x48,0xa3,0x96, 0xe1,0x76,0x9f,0xf6, 0xc0,0x61,0xe7,0xe3, - 0x69,0x5f,0x2a,0xf8, 0x07,0xde,0xdd,0x53, 0x83,0x59,0x40,0xe1, 0xd2,0x60,0xeb,0x75, - 0x5a,0x70,0x22,0xc6, 0xc7,0xda,0x26,0x85, 0x8c,0x18,0x31,0x79, 0xc8,0x18,0xd7,0x93, - 0x61,0x7d,0xdb,0x19, 0x86,0xc7,0x20,0x68, 0x3e,0xfb,0xdd,0x82, 0xa9,0x12,0xd9,0xaf, - 0xdd,0x6b,0xa2,0x30, 0xb6,0xd1,0x8e,0x56, 0x9f,0x5b,0x9c,0x7a, 0x2e,0xc3,0x66,0x81, - 0xa0,0x2e,0x44,0x66, 0x7b,0x5f,0x25,0x23, 0x06,0xdd,0xe5,0x6a, 0x0f,0x2f,0x43,0xa2, - 0xdc,0x4e,0xf9,0x4a, 0x5b,0x9b,0x45,0x05, 0xcf,0xbc,0xf7,0xf1, 0xff,0x52,0x87,0x39, - 0x96,0xb3,0xcc,0x0a, 0xf8,0x2c,0x24,0x0a, 0xad,0x7f,0x7e,0x56, 0x02,0x46,0x3e,0x19, - 0x0b,0xfd,0xfe,0xf6, 0xa4,0xa0,0xeb,0x91, 0xe3,0x5b,0xdb,0x87, 0x2d,0x1a,0xa5,0x35, - 0x6f,0xdf,0x43,0x4f, 0x27,0x2c,0xd5,0x81, 0x4c,0x51,0x4a,0x40, 0xc9,0x0a,0xa1,0x32, - 0xac,0x38,0x77,0x14, 0x59,0x9f,0x21,0xd7, 0x4c,0xb1,0xbc,0x88, 0x97,0x80,0x29,0x15, - 0x4b,0xc9,0xd9,0xa2, 0x75,0x01,0xab,0x35, 0x8c,0xb8,0x3e,0xba, 0x4c,0x03,0x12,0x78, - 0xed,0xb0,0xbd,0xbd, 0x06,0x72,0xb9,0xc8, 0x40,0x0e,0xe2,0x74, 0xed,0x32,0xff,0x5b, - 0x37,0xb9,0xf2,0x89, 0x29,0xdc,0xf3,0x68, 0x2e,0x37,0xf4,0x7c, 0x6c,0xb6,0x35,0x4c, - 0xe9,0x44,0x41,0xca, 0x8e,0x35,0x06,0xb2, 0x17,0x9f,0x61,0x66, 0x5b,0x99,0xdc,0x37, - 0xa2,0x32,0xd0,0xbd, 0x25,0xc9,0xd4,0x40, 0x61,0xff,0x22,0x11, 0xd9,0x2c,0xe3,0x76, - 0x69,0x8a,0xbf,0x4d, 0xff,0x7a,0x01,0x19, 0xf4,0x6d,0x2f,0x36, 0x73,0x50,0x33,0x08, - 0x38,0xa6,0x3a,0x6f, 0xe7,0x0c,0x15,0x4d, 0xcb,0x24,0xcf,0x84, 0x77,0x3d,0x7f,0x3c, - 0xb2,0x8e,0xf2,0xf3, 0x2b,0xe0,0x77,0xdd, 0x7a,0x47,0xde,0x87, 0xb2,0xff,0xbd,0x6a, - 0x6c,0x4a,0xeb,0x53, 0x6b,0xc1,0xf7,0x56, 0xc0,0xaf,0x61,0x97, 0xb1,0x69,0x85,0xf6, - 0xe2,0xcf,0xc8,0xb3, 0x0c,0x43,0x92,0x27, 0xc5,0x36,0xd5,0xa6, 0x2a,0xd5,0x66,0x59, - 0x43,0x35,0x7b,0x36, 0x21,0x90,0x00,0xdf, 0x5a,0xb1,0x8c,0xa0, 0x95,0xcf,0xa1,0xec, - 0xd7,0x8a,0x36,0x18, 0xc9,0x52,0xb9,0x66, 0x70,0xf2,0x46,0xf0, 0xe2,0x15,0x3d,0x20, - 0xf6,0x84,0x8e,0x86, 0xe7,0x94,0x66,0x66, 0x10,0x3d,0x2f,0x1c, 0x26,0x28,0x0e,0x4f, - 0x21,0xd1,0x12,0xa4, 0xce,0x47,0xfb,0xf9, 0x3f,0xef,0xdf,0xe1, 0xbf,0x3c,0x93,0x64, - 0xbb,0xcc,0xf1,0xf8, 0x2b,0x8f,0x84,0x9f, 0xe4,0xa6,0x15,0xd4, 0xcf,0x0f,0x56,0x21, - 0x50,0x8d,0x92,0x25, 0x3c,0x38,0xbe,0xe2, 0x69,0xae,0x61,0x64, 0x7e,0x1a,0x82,0xe8, - 0xe5,0x7d,0xa6,0x8c, 0x0a,0xa2,0x72,0x1d, 0xef,0x2d,0x0f,0xc5, 0x4a,0x68,0x8d,0xf8, - 0x8f,0x06,0x3b,0xaf, 0x71,0xe7,0xf4,0x77, 0x3a,0x2e,0x30,0xba, 0x8f,0x68,0xe2,0x32, - 0x47,0x09,0xa5,0x7d, 0xdd,0x51,0x4d,0x0c, 0x8e,0x1c,0xf7,0x3a, 0xf0,0xe6,0x2a,0x75, - 0x03,0xf7,0x75,0xcb, 0x79,0xa9,0x9b,0x26, 0x96,0xf8,0xf8,0xd9, 0x78,0x41,0x1b,0x82, - 0xa7,0xf0,0x7f,0x15, 0x4c,0xa6,0xa7,0xe5, 0x69,0x34,0x60,0x64, 0x7c,0xeb,0x5e,0x0c, - 0xfe,0xf8,0xed,0xd4, 0x94,0xfe,0x97,0x63, 0x01,0x38,0x75,0x55, 0xd3,0x62,0x91,0x23, - 0x36,0x6f,0x70,0xdc, 0x86,0xe2,0x85,0x98, 0x0a,0xb5,0xa2,0x79, 0x26,0x5c,0x57,0x16, - 0xfb,0x17,0xc9,0xf7, 0x1b,0x50,0xbd,0x95, 0x22,0xb7,0x5c,0x6c, 0xe2,0x6b,0x73,0x44, - 0xd5,0x6f,0x65,0xc4, 0x2c,0xa7,0x25,0x8a, 0x07,0xd2,0xff,0x19, 0xa1,0xbe,0xdd,0x09, - 0x5d,0x88,0x29,0x47, 0xdc,0x13,0x50,0xa1, 0xdb,0x09,0x40,0x02, 0xf4,0x10,0xd9,0x60, - 0xff,0x0f,0xf6,0xd4, 0x23,0x4f,0x7c,0x3f, 0xa8,0x0e,0xfd,0x5f, 0x8e,0xe0,0x32,0x54, - 0x9e,0x34,0x04,0x28, 0xff,0x88,0x40,0x43, 0x6d,0xf4,0xce,0x73, 0x41,0x79,0xd5,0x20, - 0x3b,0xe5,0x50,0x81, 0x98,0x9c,0x1f,0xf4, 0x29,0xff,0xc7,0x94, 0x8a,0xbb,0x29,0x61, - 0x4d,0x19,0x58,0x44, 0xf5,0x0c,0xc1,0xb9, 0x2b,0xea,0x61,0x78, 0x71,0xf8,0x33,0xae, - 0x49,0x6b,0x0b,0xc2, 0x5c,0x83,0x1b,0xa2, 0x31,0x86,0xb5,0x82, 0x36,0xa2,0xf8,0xbe, - 0x6b,0xc9,0xe2,0x0f, 0xd9,0x2b,0x73,0x3a, 0x33,0x41,0x69,0x7f, 0x80,0x6f,0x2f,0xcd, - 0x8e,0x18,0x11,0xca, 0xc5,0x0a,0x7e,0xa2, 0x80,0xe5,0x9a,0x82, 0x23,0x43,0xf7,0x4b, - 0x18,0x77,0xdc,0x0f, 0x4a,0x70,0x60,0xf4, 0x60,0xc0,0x54,0x2b, 0x06,0xed,0xd2,0x40, - 0x84,0xc4,0x27,0x09, 0x4e,0x06,0x09,0xda, 0x79,0x36,0xff,0x26, 0x5d,0x99,0x6a,0x9d, - 0x25,0x41,0x19,0x77, 0x21,0x96,0x2d,0xb6, 0x8d,0x93,0x07,0xd8, 0xc7,0x82,0xf3,0xea, - 0x7f,0xdb,0x7b,0xff, 0x1d,0x7a,0x75,0x2f, 0x35,0x22,0x6d,0x54, 0x15,0x1a,0x4e,0xc4, - 0x6a,0xab,0xfa,0xe2, 0x0d,0x15,0x2a,0x35, 0xe5,0x0a,0x5a,0x99, 0x56,0xad,0x5b,0xcb, - 0xea,0xdd,0x24,0xa8, 0x87,0xa6,0x62,0xdb, 0x19,0xac,0x23,0x1b, 0x01,0x34,0x77,0xd9, - 0x49,0x17,0x71,0xd6, 0x36,0xac,0xcc,0xc3, 0xf9,0x75,0x72,0x7d, 0x74,0xd2,0xf2,0xcc, - 0xe1,0x8b,0x04,0xda, 0x53,0x2c,0x39,0x0f, 0x64,0x6d,0xe7,0x1b, 0x18,0x95,0x40,0x22, - 0x48,0xf4,0x07,0x0d, 0xbb,0xf2,0xea,0xc1, 0x53,0x2b,0x7a,0x1c, 0xbd,0x0d,0xfe,0xea, - 0x84,0xb3,0x24,0xfe, 0x23,0x1f,0x34,0x7d, 0x19,0x80,0x38,0x9c, 0x7f,0xf7,0x4a,0x42, - 0x02,0x1a,0xbb,0x76, 0xae,0x33,0xef,0x8b, 0x87,0xf0,0xb4,0x71, 0x13,0xfe,0x49,0x4b, - 0x98,0xc5,0xc1,0x1a, 0x72,0x49,0x95,0xf3, 0xde,0x2a,0xfe,0xc0, 0xa2,0xc4,0x7f,0x4e, - 0x44,0xf0,0xd2,0xea, 0xff,0xb4,0x3a,0xcf, 0x27,0x3b,0xb5,0xa0, 0x83,0x0f,0xda,0xe1, - 0x6f,0x45,0xa7,0x30, 0x2c,0x8c,0x37,0x22, 0x7a,0x1e,0x00,0xa9, 0xfd,0x28,0xbb,0x74, - 0x31,0x7b,0x34,0xf2, 0x1e,0x14,0xc7,0xcd, 0x32,0x39,0x44,0x78, 0x08,0x71,0xe2,0xd8, - 0xaa,0xda,0xbf,0xf0, 0x96,0x56,0xca,0x5e, 0x77,0x68,0x61,0x5d, 0x81,0xbe,0x46,0x64, - 0x97,0x65,0x36,0xdb, 0x8e,0xf4,0xd1,0x0e, 0xb7,0xad,0x30,0x2a, 0xc1,0x66,0x6e,0xe1, - 0x44,0xdd,0x5d,0xda, 0xc8,0x90,0x05,0x57, 0xb5,0x21,0xc5,0x7d, 0xc8,0x15,0xa8,0xb2, - 0x7c,0x2a,0xb4,0xb4, 0x15,0xf4,0xd1,0xf8, 0x76,0x48,0x13,0x60, 0xb9,0x17,0xc4,0x6a, - 0x2d,0x1a,0x15,0x20, 0xb1,0xf2,0xad,0x45, 0xa2,0x29,0xd6,0x6e, 0xfa,0x3f,0x4c,0xae, - 0x9e,0x47,0xb9,0xf9, 0x71,0xb5,0x71,0x37, 0x7b,0x26,0x29,0xa7, 0xed,0xd5,0xdb,0x65, - 0xb7,0xa6,0xe1,0x01, 0xa2,0x65,0x6d,0xd9, 0xed,0xc1,0x79,0x75, 0x00,0xa3,0xbd,0xdb, - 0x92,0xf1,0x66,0xe1, 0xf9,0xd0,0x78,0x65, 0xec,0x4d,0x45,0x34, 0x9c,0x50,0x45,0x3c, - 0xfd,0x7c,0xe6,0x4a, 0x08,0x63,0x97,0x62, 0x28,0x26,0xa2,0xe3, 0xac,0x78,0x1a,0x95, - 0xfd,0xa3,0x1a,0x7c, 0xde,0x86,0x6f,0x78, 0xde,0x98,0x06,0x0c, 0xf0,0x6b,0x54,0x13, - 0xf8,0x95,0xfc,0x75, 0x88,0xc3,0xfd,0xe1, 0x8a,0x24,0x77,0xac, 0x3a,0xa0,0x29,0xad, - 0x97,0x67,0x09,0x9a, 0xf4,0x54,0xe3,0x9f, 0x4b,0xda,0x1e,0x7a, 0x69,0xb4,0x0d,0x8f, - 0xab,0xe8,0x79,0x92, 0xaf,0x44,0xe9,0xdb, 0x4a,0xe9,0xcb,0x3f, 0x74,0x7e,0xbc,0x46, - 0xe7,0x61,0x23,0x0b, 0x61,0x1f,0xbf,0x57, 0xab,0x5b,0x9d,0xbe, 0x40,0xbc,0xa1,0x19, - 0x73,0x41,0x82,0xa7, 0x05,0x56,0x0c,0xcc, 0x99,0x44,0x6a,0x5f, 0x38,0xda,0xc6,0xff, - 0x1b,0x26,0x90,0xea, 0xa8,0x9f,0x7e,0x47, 0xb7,0x13,0x91,0x67, 0xb0,0x5c,0x9b,0x36, - 0x2f,0xce,0x62,0x48, 0xdd,0xbc,0x53,0x56, 0x8b,0x3d,0xd6,0x7e, 0xb2,0xed,0x4d,0xfc, - 0x02,0x3c,0x97,0x49, 0x0e,0xb4,0x28,0xee, 0x2b,0x22,0x88,0x44, 0x82,0x64,0xc4,0xb9, - 0x01,0xdd,0x3d,0x1c, 0xc8,0xec,0x00,0x1d, 0x84,0x39,0x5c,0x02, 0x87,0xb0,0x10,0x5c, - 0xfb,0xfb,0xfa,0x52, 0x1d,0x42,0x3e,0x3d, 0xc2,0xef,0x83,0x3b, 0x83,0xce,0x54,0x3d, - 0x6a,0x6f,0x54,0x0e, 0x46,0xc6,0xad,0x52, 0x5c,0x26,0x9f,0x6a, 0xbc,0xa7,0x94,0x23, - 0x39,0xfe,0x9c,0x60, 0x50,0x34,0x46,0xf7, 0xa1,0x68,0x03,0x96, 0xb2,0xc7,0x61,0xac, - 0x7a,0x4a,0xdb,0xd7, 0x95,0x12,0xd7,0xde, 0x2a,0x2a,0xd9,0x50, 0xbf,0x68,0xcd,0x50, - 0x4a,0x7e,0x9c,0x0c, 0xb3,0x0e,0xb2,0xec, 0x93,0x4e,0x7a,0x8f, 0x33,0x6d,0x23,0xd1, - 0x52,0x87,0x83,0x32, 0xbb,0xf0,0x79,0x10, 0x55,0xed,0x26,0x9e, 0x56,0xd4,0xe7,0x0e, - 0x29,0x50,0x32,0x7b, 0xf1,0x9c,0x20,0xcf, 0x46,0xe9,0x60,0xe8, 0xb6,0x5a,0x43,0x4c, - 0xd0,0xc9,0x7f,0xac, 0x44,0x1d,0xfa,0x6f, 0xcc,0x56,0xe3,0x25, 0x16,0x2e,0xde,0x47, - 0x4b,0x7a,0xd8,0x6c, 0x18,0xe1,0x24,0xaf, 0x8d,0xf4,0x43,0x9f, 0x5c,0xa7,0x76,0xf9, - 0xca,0xc3,0xd5,0x03, 0xbc,0x13,0x6d,0x9a, 0x76,0xea,0x60,0xe0, 0xda,0x3f,0xaf,0x7c, - 0x9f,0x6b,0xe7,0x2a, 0x08,0xcd,0xcf,0xfe, 0x2c,0x2e,0x1f,0x44, 0x21,0x2f,0x81,0x82, - 0x45,0xbe,0x71,0x3e, 0x0a,0xb2,0xa9,0xf3, 0xff,0x92,0x62,0xd3, 0xb5,0x4b,0x8f,0xf9, - 0x16,0x89,0xf9,0x6e, 0x36,0x79,0xee,0xa1, 0xec,0x49,0xe9,0x1c, 0x80,0xc4,0x2a,0xac, - 0xf4,0x08,0xfb,0xd5, 0x73,0x63,0xb9,0x9b, 0xf0,0x55,0x01,0x78, 0xd7,0xa2,0xd7,0x16, - 0x5c,0x18,0x4d,0xaa, 0xf0,0xeb,0xa5,0xe7, 0x56,0x0c,0xa4,0x64, 0xa8,0x9c,0x87,0x52, - 0x2f,0xf4,0xab,0x31, 0x4f,0xe5,0x07,0x5e, 0xa5,0x71,0xac,0xda, 0xcf,0xe5,0xbb,0xba, - 0xff,0x87,0xbb,0x39, 0x5a,0xef,0x41,0x33, 0xf8,0x4e,0xe2,0x68, 0x91,0x11,0x72,0xbf, - 0x0e,0x8f,0xdc,0xa5, 0x3d,0xe2,0x02,0xb9, 0xe7,0x29,0x05,0x8e, 0x81,0x08,0x71,0x7f, - 0xcd,0x38,0x9c,0xf6, 0x2e,0xb9,0x37,0x80, 0xb6,0xfe,0x07,0xfa, 0x98,0x58,0xcb,0x07, - 0xfb,0x6c,0x47,0x16, 0xc7,0xaa,0xa7,0x72, 0x97,0x68,0x94,0x56, 0x77,0x54,0xbb,0xfa, - 0xfc,0x0f,0x2c,0xc9, 0xe2,0xdf,0x5c,0xbb, 0xf4,0xb3,0xbf,0xce, 0x3e,0x50,0xc3,0x84, - 0x5b,0x5f,0xb5,0xb1, 0xd2,0x40,0x6f,0x1b, 0xe1,0x5a,0x2b,0x76, 0x62,0x36,0x24,0x12, - 0xe8,0xe4,0x12,0x7c, 0x0f,0x53,0xf8,0xda, 0xca,0xd1,0xda,0x05, 0x94,0x7f,0x80,0x9a, - 0x24,0x26,0x11,0xec, 0xe6,0x95,0xb1,0x25, 0xc3,0x7a,0x29,0xcf, 0x59,0xca,0x53,0x55, - 0xe6,0x64,0x11,0xfd, 0xae,0x34,0xc1,0x87, 0xb6,0xae,0xc8,0x5d, 0x57,0xd4,0xdb,0x04, - 0xcb,0x7f,0xf7,0x28, 0x82,0xef,0x88,0x2a, 0xd3,0xe3,0xc8,0x2b, 0x4d,0xd7,0x26,0x23, - 0x7a,0x57,0x6e,0x74, 0x4e,0xb9,0x77,0xdd, 0xf5,0xf5,0x2a,0x67, 0xaf,0xc7,0x14,0x5b, - 0x11,0x5f,0x52,0x9d, 0x5c,0x11,0x5c,0x52, 0x82,0xa4,0x23,0x2d, 0xb4,0xdf,0x65,0xb6, - 0x4e,0x45,0xee,0xf2, 0xe1,0x51,0x1f,0x71, 0x8b,0xba,0xf6,0xfb, 0x9b,0xf0,0xb4,0xe1, - 0xa1,0x2a,0xe0,0xa1, 0x1a,0x8c,0x02,0x4b, 0x33,0x13,0x2e,0x13, 0x0e,0xeb,0x88,0xbf, - 0xe8,0x3d,0xec,0x17, 0xd6,0xd8,0x04,0xdf, 0xf6,0x7a,0x77,0xc4, 0x30,0x17,0xc5,0xdb, - 0x62,0xd6,0x18,0x48, 0x5b,0xee,0x3d,0x0b, 0x28,0xe8,0x98,0x9d, 0x6c,0xb6,0xdc,0x47, - 0x56,0x41,0x34,0x92, 0xb4,0xf5,0xc7,0x7b, 0xb5,0x82,0x54,0x90, 0x92,0x2d,0xfa,0xb1, - 0x88,0x16,0x08,0xab, 0xfa,0xe7,0x38,0x52, 0xe0,0x2b,0xd1,0xf1, 0x1f,0x6a,0x36,0xac, - 0x8d,0xc7,0x34,0xfe, 0x4c,0x53,0x37,0x86, 0xe1,0xe8,0x11,0x5f, 0xf4,0x25,0x88,0xc0, - 0xac,0xa7,0x1f,0xc1, 0xbf,0xd0,0xac,0xb8, 0x21,0x8c,0xa8,0x55, 0x06,0x04,0x07,0xa8, - 0x68,0x69,0x01,0x57, 0xa9,0xec,0xee,0xb6, 0x6a,0x36,0xbe,0x56, 0x57,0x5f,0x1d,0xf8, - 0xb1,0xc8,0x9c,0x83, 0x2c,0x84,0xde,0x82, 0x0f,0xa1,0xb7,0xc1, 0x38,0x25,0x6f,0x01, - 0xf7,0xdf,0xb9,0xdf, 0x3b,0x03,0x3b,0x85, 0x8d,0xaf,0x4c,0x5e, 0x2e,0x7d,0x2c,0x59, - 0x77,0xd0,0xb8,0x83, 0x41,0xf8,0xce,0x70, 0xe9,0xe9,0xad,0x57, 0x2c,0xf9,0x9c,0xaf, - 0x67,0x6f,0x3b,0x5a, 0xe5,0xa2,0x17,0x5d, 0x5f,0x61,0x65,0x1f, 0x0e,0x3d,0x21,0x6c, - 0x70,0xa6,0x8c,0xf9, 0x29,0xd3,0x70,0x96, 0x19,0x28,0x42,0x1d, 0xf5,0x45,0x27,0xfc, - 0xf6,0x60,0x73,0x2e, 0xb5,0x4b,0xc1,0x81, 0xc7,0xcc,0x7d,0x95, 0xfa,0xa2,0x4e,0x00, - 0x8b,0x2f,0xfe,0x22, 0xe7,0x11,0x21,0x31, 0xdf,0x59,0x34,0x20, 0x8d,0x95,0x19,0xe5, - 0x94,0x90,0x10,0xab, 0x70,0x7d,0x9a,0xca, 0x81,0x7c,0x25,0xf0, 0x85,0x35,0x29,0x25, - 0xa4,0x3c,0xb3,0x50, 0xb8,0x51,0x8c,0xe4, 0x48,0x48,0x3c,0x1c, 0xc5,0xa4,0x4c,0x56, - 0x28,0xd7,0xa4,0xd3, 0xd5,0x58,0x30,0xe1, 0x6b,0xab,0x1f,0xf5, 0x04,0x4f,0x11,0xda, - 0x02,0x97,0x00,0x08, 0x9e,0xa6,0xab,0x65, 0x52,0x85,0x04,0xed, 0x25,0xe8,0xe0,0x79, - 0x61,0xcf,0xa4,0xfe, 0x90,0xe4,0xb0,0x31, 0x82,0x1f,0x32,0xef, 0xb0,0x66,0x18,0x71, - 0x83,0x39,0x1b,0x16, 0xee,0x0a,0x1e,0x48, 0xa6,0x32,0x01,0x2f, 0x2b,0xfc,0xa3,0xd3, - 0xf0,0xba,0x6e,0x4f, 0x0b,0x26,0xe5,0x46, 0x2c,0xa9,0x68,0xb8, 0x37,0xdc,0xcf,0x6c, - 0x22,0xf1,0xe9,0xfb, 0x88,0x3c,0x45,0x9f, 0xfc,0xd3,0x00,0x03, 0x9d,0xc9,0xd1,0x57, - 0x6c,0x1f,0x6d,0x31, 0x92,0xf8,0xc4,0x16, 0xa0,0x1b,0xc9,0x90, 0xa7,0x96,0xf9,0xfc, - 0x96,0x36,0xb4,0xb5, 0x2d,0x70,0xe5,0x52, 0x9e,0x49,0x3a,0x23, 0xa0,0x45,0x66,0xd6, - 0x0d,0x3c,0x5f,0x26, 0x9e,0x00,0x18,0x09, 0xa3,0x13,0xfe,0xd4, 0xcd,0x9a,0x7f,0x5a, - 0xd0,0xf2,0xbd,0x31, 0xf9,0x18,0x72,0x72, 0x4e,0x4e,0x64,0x19, 0x94,0x31,0xcd,0x9e, - 0xfe,0x53,0x5c,0xca, 0xef,0x47,0x8b,0x31, 0x9c,0xdf,0x83,0x50, 0x97,0xd2,0x06,0xd1, - 0xf2,0xb1,0xba,0x28, 0xbc,0xfd,0x38,0x92, 0xa1,0xb6,0x12,0xb2, 0xdd,0xbf,0x8d,0x4d, - 0xa0,0x70,0x9a,0xda, 0xbc,0x8d,0x9a,0xb4, 0x9a,0xd8,0x98,0xb2, 0x67,0x5c,0xf9,0x69, - 0x44,0xdc,0xe1,0x95, 0x0e,0x39,0x55,0x19, 0xfc,0x70,0x6b,0x6d, 0xf2,0x12,0x31,0x06, - 0x87,0x46,0x29,0x62, 0xf2,0x4a,0xd3,0xc5, 0x85,0x23,0x6c,0x7a, 0xc2,0x43,0x08,0x49, - 0x82,0xa1,0x78,0x7c, 0xe8,0x99,0xc2,0xe6, 0x34,0x00,0x16,0xc0, 0x4b,0xd7,0xef,0x72, - 0x6c,0x82,0x03,0x8b, 0x30,0xc2,0x03,0x31, 0x4f,0xb6,0x81,0x8b, 0x34,0x0a,0x8f,0xc2, - 0x64,0x1a,0x59,0x30, 0x74,0xbc,0xd1,0xd0, 0xc1,0x0f,0xd2,0x78, 0x94,0xff,0xb4,0xbf, - 0x07,0x34,0xcb,0xcf, 0x8f,0x94,0x87,0xd2, 0x20,0xbd,0x03,0xd7, 0xb3,0xac,0x82,0xce, - 0x27,0x6b,0x83,0x51, 0x3b,0xb1,0x2b,0xa6, 0x09,0xd1,0xf1,0xdc, 0x6e,0x74,0xac,0xff, - 0xed,0xf0,0x86,0x8b, 0xa7,0xd4,0x33,0x2f, 0x2c,0xcc,0x27,0xd6, 0x43,0xe4,0x30,0x08, - 0x38,0xd9,0xe2,0xcb, 0x6c,0xf2,0xe3,0xf3, 0xb0,0x9e,0xfc,0x95, 0x5b,0xcd,0x1a,0x23, - 0xc4,0xb1,0x08,0xd0, 0x3b,0xb5,0x1d,0xa0, 0x4a,0xbc,0x53,0xeb, 0x42,0x43,0x93,0xd4, - 0x3b,0x97,0x2c,0x1c, 0x02,0x19,0xc6,0x30, 0xe5,0xaf,0x85,0x3c, 0x73,0x0e,0x49,0x03, - 0x55,0x09,0xc3,0xac, 0x4d,0xdb,0xbc,0xa2, 0xbd,0x73,0x55,0x6e, 0xc4,0xa3,0x9c,0x7a, - 0x09,0x9d,0x8f,0xe6, 0x8c,0x7c,0x0e,0x22, 0x90,0xea,0x5a,0x2f, 0x31,0x61,0xaf,0x2c, - 0xba,0x4f,0xde,0x96, 0x23,0x57,0x26,0xf2, 0x6d,0xc0,0xd2,0xd0, 0x88,0x45,0xa0,0x5d, - 0xdf,0xd2,0x88,0x13, 0x2d,0x05,0xd2,0xef, 0xbd,0xac,0x76,0xc8, 0x96,0xd4,0x56,0xc9, - 0x28,0x7c,0xfe,0x91, 0x25,0x2a,0x3c,0xb4, 0xa1,0x95,0x8d,0x3f, 0x9a,0x0c,0xb4,0x5e, - 0xfa,0x68,0xb9,0xba, 0xff,0x73,0xae,0xbf, 0xa9,0x53,0xd8,0x53, 0xbd,0xb4,0x06,0xc7, - 0x94,0xca,0x34,0x31, 0xdf,0x6d,0x5c,0x65, 0xf1,0x57,0x03,0x13, 0x84,0x86,0x6f,0x65, - 0x52,0x8d,0xde,0xf0, 0x3c,0x8e,0x0e,0x0a, 0x8f,0xc8,0xca,0x16, 0x0c,0xfd,0x5b,0xc1, - 0x02,0xe9,0x23,0x2c, 0x1b,0xec,0x3c,0x46, 0xbe,0x32,0x3f,0x76, 0x04,0x01,0xcf,0x93, - 0x1d,0x43,0x74,0x24, 0x02,0x40,0xdd,0xaf, 0xa1,0x71,0xd3,0x7b, 0xb3,0x6c,0x75,0x78, - 0xa0,0xc9,0x5a,0xfd, 0x7b,0xc8,0x00,0x89, 0xe3,0xf1,0x55,0xb8, 0x2d,0xd8,0xf1,0x3d, - 0x3a,0x94,0xe9,0xaa, 0xac,0xec,0x4d,0xc9, 0xeb,0x26,0x82,0x3a, 0xca,0x50,0x15,0x97, - 0xb8,0x74,0x14,0x30, 0xfb,0xbf,0xfe,0x68, 0x12,0x42,0x16,0x03, 0xaf,0xca,0xa1,0xfd, - 0x7f,0xe8,0x52,0x1e, 0x1c,0x74,0xc4,0xf5, 0x4f,0xb8,0x4d,0x6d, 0xeb,0xef,0xa5,0x0b, - 0xdd,0xb3,0x9a,0x07, 0x89,0xd5,0xe4,0x85, 0x4b,0xdc,0xca,0x2a, 0x48,0xc0,0xc3,0x4f, - 0x42,0x9f,0x4b,0x0f, 0x2c,0x94,0x93,0x54, 0x7d,0xb4,0xc6,0xb4, 0x65,0x20,0x42,0xbf, - 0x29,0xcf,0x22,0xd9, 0x03,0xc5,0xe3,0xef, 0xce,0x3a,0xd2,0x3b, 0x8b,0x95,0x1d,0x06, - 0xce,0x23,0xa1,0xa5, 0x81,0x79,0x84,0x74, 0xbb,0xee,0xe0,0xb9, 0x82,0x66,0x88,0x78, - 0x36,0xed,0x55,0x6e, 0x8c,0x2f,0xae,0x3b, 0x9b,0xdf,0xdc,0x1a, 0xdc,0x28,0x70,0x05, - 0x2f,0x71,0x41,0x21, 0x5a,0x3f,0x03,0x17, 0x19,0x1c,0x25,0xc7, 0x91,0x3b,0xa1,0xa5, - 0x2c,0xe4,0xae,0x4d, 0xff,0x8c,0xbb,0x62, 0x06,0x71,0x65,0xc3, 0x41,0x3d,0xda,0x16, - 0x7d,0x81,0xc9,0x92, 0x68,0x83,0xe0,0x77, 0x43,0xd9,0x66,0x15, 0x72,0xa5,0x29,0x93, - 0x9f,0xff,0x4e,0xfe, 0x68,0x96,0xfc,0x22, 0x32,0xd5,0xef,0x0f, 0x80,0x20,0xd2,0x87, - 0xa8,0x69,0xb7,0xdd, 0x55,0x1d,0xba,0xa2, 0x24,0x80,0x74,0xd0, 0x5b,0x9f,0xa5,0x77, - 0x71,0xdc,0xd1,0x3a, 0xd2,0x70,0xbb,0xce, 0xa8,0xd5,0x37,0xcb, 0x11,0xd9,0x16,0x90, - 0x5e,0xd7,0x9e,0x5e, 0xa8,0xf3,0xe4,0x5d, 0x56,0xa0,0xdc,0xd4, 0xb4,0x1a,0xcc,0x86, - 0x8b,0xba,0xf2,0x02, 0x52,0xac,0x47,0x34, 0xa2,0xa6,0x9a,0xfc, 0xc7,0x18,0x2f,0x97, - 0x26,0x49,0x75,0x9d, 0xcf,0xb3,0x99,0xb0, 0xc7,0xc3,0xaa,0xc6, 0x37,0x3b,0xda,0xa1, - 0x3a,0x3f,0x01,0x70, 0xc9,0xea,0x39,0x93, 0x3e,0x5c,0x4b,0x33, 0x6f,0x6d,0x1e,0x82, - 0x6c,0x4a,0x41,0x92, 0x73,0x54,0x9a,0x4b, 0xb9,0x25,0x91,0x90, 0x09,0xc3,0xd4,0xc4, - 0xf6,0xf8,0xf5,0xdf, 0xef,0x33,0x83,0x9c, 0x10,0x43,0x18,0x0d, 0xcd,0x5c,0xcf,0xe6, - 0xc7,0x7e,0xef,0x14, 0xf6,0xc6,0xa9,0xd2, 0x56,0x48,0xe1,0xf5, 0xba,0xa0,0x32,0x57, - 0xfb,0x18,0x39,0x6c, 0x70,0x0e,0xf9,0xd6, 0x63,0xa3,0x3b,0x93, 0xa1,0xb7,0x14,0x78, - 0x07,0x5f,0x9c,0x57, 0x85,0xf6,0x46,0x96, 0x79,0xaf,0x37,0xf2, 0xdf,0x74,0x26,0x11, - 0x71,0x7b,0xaf,0x1a, 0xe4,0xbe,0x9b,0x43, 0x82,0xb1,0xfb,0xfe, 0x1d,0x77,0xb2,0x02, - 0x5c,0x4e,0x25,0x3f, 0xf0,0xf8,0x04,0xa2, 0xf3,0x8a,0x51,0x76, 0xd6,0x2a,0x06,0xaf, - 0xd8,0x35,0x49,0xd6, 0x96,0x58,0x67,0x18, 0x41,0x57,0x26,0x19, 0x0c,0xad,0x9e,0x69, - 0x95,0x04,0x0a,0xb4, 0xdd,0xad,0x11,0xb4, 0x49,0x7d,0xc4,0x28, 0xbb,0xdf,0x59,0xf7, - 0xc1,0xad,0xe0,0x1f, 0x78,0x89,0x04,0x7b, 0x1a,0x7d,0x96,0x7e, 0xb3,0xf9,0x71,0xa7, - 0x9d,0x06,0x0d,0xa6, 0xfa,0xc5,0x38,0x70, 0x6d,0x0d,0x56,0x08, 0x42,0x04,0x15,0xf7, - 0xa7,0xc6,0xcc,0xf3, 0x34,0x5a,0xc5,0xb8, 0xcf,0xc8,0x49,0x4c, 0xfe,0x47,0x45,0x0a, - 0x53,0x73,0xea,0xc8, 0xdb,0x43,0xa0,0x5b, 0xff,0xc9,0xf8,0xc3, 0xbc,0x38,0x98,0x3a, - 0x82,0x9a,0x12,0x00, 0x01,0xfa,0x98,0x4f, 0xdb,0xb3,0xa8,0xae, 0xbb,0x4d,0x62,0xf6, - 0x5f,0xe1,0x82,0xc6, 0xbb,0x7a,0x6c,0xd8, 0xdb,0x3f,0x96,0x55, 0x6e,0x11,0xae,0x21, - 0xc3,0x41,0x42,0x6f, 0xa5,0x49,0x15,0xca, 0x95,0x69,0xc6,0x36, 0xfe,0x07,0x7c,0x97, - 0x6e,0x65,0x61,0xe5, 0x1d,0x60,0xed,0x08, 0x25,0xad,0xfa,0xb1, 0x6f,0xa9,0xa0,0xfd, - 0xb6,0x67,0x2a,0x4a, 0xb1,0x16,0x65,0x73, 0x29,0x0d,0xd6,0xd5, 0xe0,0xb3,0xab,0x4e, - 0xe8,0x93,0x32,0x45, 0x8c,0xf5,0x69,0x82, 0xd7,0x94,0x16,0x92, 0x4d,0x9c,0x07,0xda, - 0x9b,0x24,0xda,0xd0, 0x45,0xf0,0x48,0xa3, 0x6e,0xd7,0x66,0xdf, 0xd5,0x54,0xc2,0x76, - 0x50,0xc6,0xfe,0x47, 0xcb,0x8b,0xe4,0xcc, 0xb3,0x44,0xcf,0x88, 0xf4,0x99,0xc6,0xfb, - 0x6e,0x27,0xf3,0x41, 0xe5,0x77,0xe7,0x0e, 0x2c,0xc2,0x86,0x7c, 0x65,0x04,0x7e,0xc5, - 0xe8,0xac,0xed,0x50, 0xe5,0x03,0xa4,0x4b, 0xd7,0xbc,0x0b,0xd1, 0x35,0x5d,0x55,0x2b, - 0x8f,0xce,0x09,0x16, 0x1e,0x5e,0x77,0xf3, 0xd7,0x99,0x84,0xd8, 0x03,0xa8,0xf5,0xeb, - 0xee,0x34,0x8e,0x3e, 0xcc,0x48,0x9e,0xfd, 0x46,0x6b,0xef,0x00, 0xc5,0x50,0xc7,0x75, - 0x58,0x3d,0xef,0xe9, 0x73,0xe2,0x4f,0x6f, 0x15,0x8a,0x88,0x35, 0xc6,0x0a,0xa8,0xdc, - 0x50,0x55,0xaa,0xef, 0xd8,0xcf,0x96,0xd7, 0x5d,0xb0,0x95,0xdd, 0x07,0x86,0xcb,0x00, - 0x4a,0xa9,0xe2,0x47, 0x80,0x91,0xff,0x21, 0x50,0x34,0x20,0xba, 0x71,0x44,0x04,0x6b, - 0x82,0xf2,0x7c,0x16, 0x3e,0xfb,0x51,0x7e, 0x4f,0xe2,0x4a,0x2f, 0x5e,0x6a,0xd0,0x64, - 0x9a,0x17,0xc5,0xb7, 0x2f,0x85,0x58,0xf3, 0xdb,0x81,0xd1,0x1c, 0xab,0x64,0xc2,0x40, - 0x5f,0x23,0xf2,0xc9, 0x66,0xfc,0xb4,0x62, 0x03,0x04,0x1f,0x73, 0x3a,0x5f,0xd3,0x19, - 0xb2,0x99,0xff,0xdf, 0xcd,0xb9,0x87,0xbb, 0x77,0x16,0x28,0xbe, 0xd7,0x45,0xb2,0x91, - 0xf8,0x0a,0x4a,0x65, 0x0e,0x01,0x56,0x75, 0x70,0x3a,0xa3,0x2b, 0x81,0x68,0x71,0x82, - 0xc9,0xe9,0x1a,0x40, 0x3a,0x9c,0x23,0xab, 0x4d,0x2b,0x34,0x43, 0x4f,0x86,0x7c,0x14, - 0x7e,0xd4,0x78,0xd4, 0x7c,0x38,0x8e,0x99, 0xd3,0x49,0x86,0x64, 0x1f,0xbf,0x15,0xc7, - 0xc3,0x00,0x11,0xca, 0x40,0xce,0x6a,0xb3, 0x21,0xcb,0x34,0x19, 0x06,0x29,0x70,0xab, - 0x8a,0xaf,0xc7,0xc5, 0x48,0x2a,0x42,0xdb, 0x28,0xbb,0x68,0xfb, 0xe2,0x59,0x8e,0xe1, - 0xb1,0xe3,0x59,0xcc, 0x3f,0x45,0xce,0x8a, 0x60,0x0e,0xd9,0x0e, 0x6f,0x16,0xc4,0xb7, - 0x86,0x20,0x4d,0x2c, 0x28,0xbf,0x37,0xef, 0x2a,0xd5,0x73,0x16, 0xaa,0x73,0x54,0xfd, - 0x07,0xc7,0x48,0x5a, 0x42,0xf8,0x68,0xe2, 0x05,0xd3,0xb2,0x5b, 0xfa,0xa5,0xd5,0xd3, - 0x25,0x18,0x57,0x61, 0xba,0xcc,0x6d,0xe3, 0x0f,0x4a,0xc3,0x7b, 0xb3,0x5e,0xc3,0x80, - 0x21,0x76,0x45,0x5a, 0xef,0xc9,0xdb,0x1f, 0x29,0x18,0xc0,0xf2, 0xdb,0xa9,0xc3,0x60, - 0x63,0xa8,0xf5,0xf9, 0x8b,0x1b,0x01,0x48, 0x07,0xee,0x2f,0x62, 0x30,0x6a,0xc7,0x35, - 0xfd,0x2c,0x77,0x59, 0x2f,0x0a,0x9c,0x0f, 0x36,0x2b,0x77,0x06, 0xff,0x98,0x0b,0x10, - 0xfc,0x37,0xb6,0x22, 0x91,0x94,0x6b,0x6c, 0x4d,0x25,0x38,0x40, 0xde,0x05,0x94,0x21, - 0x5e,0x98,0x85,0x1b, 0x0c,0xeb,0x46,0x82, 0x0e,0x6c,0xab,0xbc, 0x47,0x52,0x20,0xf0, - 0x26,0xbc,0xcd,0x07, 0xf6,0x24,0x24,0xbc, 0x51,0x98,0xda,0x0b, 0xe2,0xb4,0x09,0xc7, - 0xb5,0xfd,0x91,0xbf, 0x99,0x21,0x6f,0x2c, 0x13,0xef,0xaa,0xd4, 0xaa,0x9d,0x0a,0xfe, - 0xbf,0x56,0xe3,0x12, 0xd0,0x2e,0x77,0x52, 0x14,0xf0,0xc3,0x23, 0xc4,0x91,0x0d,0xc1, - 0x4b,0xfa,0xfd,0xee, 0x5a,0x2b,0x08,0xd6, 0x36,0x93,0xd5,0x2b, 0x02,0xe3,0x28,0x76, - 0xc5,0x81,0xfc,0xfd, 0x69,0x2b,0xff,0xec, 0x49,0x3f,0x85,0x6a, 0xcf,0x14,0xc3,0x69, - 0xc9,0xcd,0x09,0xdb, 0x0c,0xb0,0xf5,0x21, 0x39,0x29,0xa2,0x3c, 0xb7,0x44,0xe3,0xec, - 0xfd,0x6d,0xf4,0x6a, 0xad,0xb7,0x73,0xc5, 0x97,0xc4,0x9c,0x7b, 0xef,0x9f,0xbf,0x9a, - 0x88,0x71,0x81,0x6d, 0x86,0x83,0x96,0xc1, 0x56,0xe9,0x5c,0x39, 0xca,0x79,0x70,0x06, - 0x5a,0xb2,0x6c,0x11, 0x90,0x8e,0x28,0xb8, 0x95,0xee,0x79,0x8e, 0x6e,0x20,0xb5,0xae, - 0xdf,0x3b,0xf1,0xc6, 0x95,0x5e,0xe9,0x67, 0xd9,0x76,0x76,0xc2, 0xb7,0x02,0x08,0x55, - 0x64,0x1e,0xfa,0xe6, 0x94,0x9a,0x4b,0x4b, 0x1c,0x72,0xa5,0xdf, 0x73,0x06,0x54,0xdb, - 0x3e,0x34,0x09,0xb6, 0x28,0x47,0xec,0xac, 0x1d,0xeb,0x90,0x62, 0x6d,0x16,0x20,0x57, - 0x57,0xaa,0x2d,0xca, 0x70,0x49,0x71,0x47, 0x63,0x31,0x44,0x10, 0x57,0xd8,0x86,0x2b, - 0x2e,0xbd,0x39,0xfe, 0x6a,0x9c,0xae,0x01, 0x85,0xa3,0x03,0xb6, 0x1c,0xef,0x72,0xc3, - 0x26,0x1f,0x9a,0x99, 0x14,0x6f,0x0b,0x8f, 0x7b,0x0f,0xed,0x61, 0x40,0xc7,0xa1,0xc3, - 0xee,0xad,0x40,0x2c, 0x2f,0xc3,0x3a,0xb2, 0xe4,0x19,0x6f,0x67, 0x7d,0xd1,0xb9,0x71, - 0x9c,0x73,0x06,0x0c, 0xce,0x3a,0x17,0x29, 0x20,0xab,0x13,0xed, 0x4f,0x9c,0x78,0x7f, - 0xe0,0x55,0x04,0x10, 0x2d,0x43,0xad,0xe4, 0x3a,0xd9,0xdc,0x30, 0xeb,0x43,0xa2,0x3c, - 0x45,0x20,0x4e,0x19, 0x44,0xeb,0x7b,0xac, 0x47,0xcc,0x00,0x17, 0x6b,0xf7,0x9c,0xe8, - 0xd5,0x1c,0x0a,0xc1, 0x1a,0xb1,0x3e,0x48, 0x70,0x91,0xa8,0x9b, 0xe7,0xa6,0x13,0xec, - 0xf6,0xda,0x1c,0x3b, 0xf8,0x43,0x19,0x15, 0xfb,0xb9,0x35,0x3e, 0xd0,0xe1,0xe5,0xb5, - 0x8f,0x18,0x27,0xe2, 0xc1,0x46,0x9e,0x15, 0x6a,0xd0,0x02,0xc0, 0x29,0x5a,0x9f,0x69, - 0xae,0xab,0x26,0x31, 0x04,0x98,0x83,0x3c, 0xaf,0xad,0x44,0xa1, 0x66,0x1a,0xdb,0xd6, - 0xb6,0x8a,0xde,0x7b, 0x41,0x6d,0x0e,0x6a, 0xe9,0xd2,0x7a,0xb4, 0x9e,0xc8,0x76,0x83, - 0x9c,0x73,0xbb,0x0c, 0xfa,0x35,0x42,0x03, 0x75,0xe1,0xfd,0x9d, 0xbd,0xe5,0x04,0xa6, - 0x15,0x67,0x1d,0x71, 0x26,0x56,0xad,0x86, 0x7e,0x26,0xaa,0xc4, 0xb1,0x31,0xd2,0x55, - 0xb0,0x59,0x9c,0xb8, 0x56,0x68,0x0f,0x03, 0x92,0xad,0xd9,0xc1, 0x67,0x0a,0xf0,0x69, - 0x1d,0x15,0x59,0xf8, 0xb8,0x51,0xd4,0x62, 0xbc,0x27,0xfa,0xb3, 0xf4,0x78,0xd0,0x93, - 0x0f,0x1e,0x82,0xd2, 0x84,0xe7,0x1f,0x52, 0x55,0x6c,0x6e,0x8c, 0xd1,0x2e,0x39,0xe6, - 0x91,0x6b,0xb7,0x6d, 0x44,0x2f,0xb5,0x7d, 0xda,0x2e,0xd4,0x47, 0x68,0x6e,0x36,0x3b, - 0xe2,0x2b,0x27,0xb6, 0xa3,0xcb,0x88,0x58, 0xa4,0x2c,0xfd,0x29, 0xba,0x60,0x9c,0x07, - 0x97,0x3e,0x2d,0x8f, 0xbe,0x90,0xd6,0x2a, 0x9b,0xf1,0x71,0x87, 0x3b,0xb6,0xbb,0x4a, - 0x8f,0xba,0xb1,0xf7, 0xec,0xed,0xb9,0x52, 0x45,0xd1,0x75,0xf7, 0x94,0xed,0x7b,0x9c, - 0xf5,0xfe,0xce,0xd7, 0x2e,0xf2,0x37,0xe3, 0x4a,0xf5,0x36,0x92, 0xd8,0xb7,0xeb,0xe1, - 0xb8,0x1b,0x5e,0x1c, 0xc4,0x88,0xa4,0x6e, 0x01,0x92,0xae,0x4e, 0xf5,0xb8,0xc3,0x70, - 0xc8,0x60,0xbd,0xd1, 0x44,0xbd,0xc0,0x5e, 0x38,0x70,0x58,0x78, 0x44,0x62,0x42,0xc3, - 0x94,0x18,0x9e,0x95, 0xe0,0x1c,0x47,0x00, 0x4b,0xbb,0x89,0xf3, 0x0d,0x53,0x32,0xae, - 0x76,0xb3,0xc9,0xcf, 0xd0,0x10,0x4f,0x97, 0x32,0xe0,0xab,0x23, 0xfc,0x86,0x25,0xeb, - 0x4f,0x93,0x23,0x28, 0x2a,0x56,0x24,0x35, 0x99,0x73,0x75,0x9d, 0x99,0x4d,0x87,0xe6, - 0xc9,0x4d,0x1c,0xf1, 0x67,0xae,0xce,0xda, 0x2d,0x1d,0x3f,0x9c, 0x14,0xbf,0xdf,0x8e, - 0x26,0x6b,0xb1,0xd4, 0x30,0xaa,0x46,0xdc, 0x57,0xda,0x48,0xa2, 0x5a,0x7c,0x64,0x82, - 0x91,0x6a,0xf7,0xc8, 0xd5,0xfd,0xea,0x51, 0xd5,0xc0,0x37,0x1b, 0xda,0x0a,0x63,0x35, - 0x30,0xde,0x74,0xc1, 0xcd,0x5b,0x2f,0xdb, 0x59,0x04,0xc5,0xd3, 0x47,0xd2,0xa4,0xe9, - 0x32,0x87,0x16,0xf4, 0xe7,0xe9,0x96,0x3b, 0x1f,0x39,0xbe,0x33, 0x8a,0xa9,0xe9,0x96, - 0x93,0xe6,0x10,0x34, 0x0a,0x3f,0x3c,0x16, 0xcd,0x3c,0x65,0x18, 0x59,0x5c,0xe1,0xf3, - 0xd7,0x37,0xb6,0x05, 0xbf,0x2f,0xf7,0x19, 0xa0,0xd6,0x5c,0x7f, 0xe6,0x81,0x54,0x72, - 0x71,0x69,0xe3,0x57, 0xe9,0x54,0xdf,0x60, 0x3f,0xb1,0x20,0x52, 0x15,0xc5,0x6c,0xda, - 0x5a,0xc7,0x3c,0x09, 0xd7,0x00,0x08,0xe8, 0x32,0xdb,0x45,0xd2, 0xba,0x9a,0x1d,0xc6, - 0xd2,0xcf,0x6a,0x3d, 0x9e,0xf9,0x9b,0x55, 0x90,0xb5,0x82,0xf2, 0x73,0xb4,0xf5,0xa3, - 0xec,0x00,0x3b,0x8a, 0x2d,0xbb,0xfe,0x35, 0x70,0x88,0x53,0x0e, 0x12,0x69,0x63,0x2f, - 0xd5,0x3f,0xcc,0x9f, 0xa6,0xb9,0x74,0xcb, 0xb9,0x27,0x79,0xf1, 0x34,0xc6,0x0d,0x12, - 0x5c,0xbc,0x62,0x3d, 0x0c,0x53,0xb7,0x0e, 0x52,0xd2,0xc4,0x88, 0x22,0x3d,0x5c,0x54, - 0xe4,0xfa,0x19,0x37, 0x55,0x00,0xff,0x36, 0x79,0x57,0xca,0x15, 0xd2,0x4f,0xb0,0x37, - 0x38,0xca,0x5f,0x12, 0xc0,0x4b,0x5d,0xcc, 0x5e,0x90,0xc4,0xdb, 0xf2,0x44,0x26,0x14, - 0xd3,0x8b,0xee,0x7a, 0x41,0x3a,0x82,0x76, 0x04,0xe6,0x96,0x2d, 0xa7,0x26,0xc0,0x10, - 0x9f,0x9e,0x8a,0x1c, 0x6d,0x7c,0x6a,0x96, 0x3d,0xd8,0x82,0xdc, 0xf0,0x55,0x4c,0x20, - 0xc2,0xe1,0x7d,0xd0, 0xa0,0x01,0x46,0xc9, 0xab,0xce,0xb7,0x5e, 0x33,0x6c,0xe1,0x2b, - 0xef,0xcf,0x5c,0x36, 0xab,0xe0,0x7b,0x39, 0x43,0xb0,0x03,0x63, 0xa7,0xf3,0xca,0x3c, - 0xd3,0x85,0x3b,0xbc, 0x5a,0x0d,0xcd,0x0d, 0x1d,0xe2,0xd3,0x8b, 0x03,0x5b,0x12,0xa3, - 0xdb,0x4b,0x15,0xcd, 0xd1,0xf6,0x37,0x44, 0x96,0xd8,0xdd,0x68, 0xda,0xa7,0x05,0x3a, - 0xf8,0xae,0xb9,0x1e, 0xad,0xa5,0xde,0x0b, 0x0c,0xa8,0x58,0xa4, 0x80,0x2f,0x82,0x97, - 0xb7,0x0f,0xb3,0x3b, 0x35,0x33,0x52,0x0d, 0x36,0x6d,0xd0,0x6f, 0xb0,0x7f,0xd8,0xad, - 0xe5,0x64,0x31,0x76, 0x8c,0xfb,0x88,0x05, 0xeb,0x32,0x01,0x57, 0x89,0x51,0xb5,0xd2, - 0xe7,0x09,0x7e,0xe1, 0x8d,0x03,0x38,0x1f, 0x3e,0x9d,0x0c,0x9b, 0x85,0xb6,0xdb,0x39, - 0xce,0xda,0xfd,0x87, 0x1c,0xda,0xd1,0x28, 0x5f,0xce,0x75,0x67, 0x62,0xab,0xf4,0x34, - 0xf0,0xe6,0x28,0xe2, 0xb7,0x55,0xaf,0xad, 0x6b,0x4d,0xdb,0x2c, 0xd7,0x2c,0x63,0x14, - 0x49,0x0e,0x05,0x33, 0xbd,0xa8,0x02,0xad, 0x7e,0x36,0x8c,0xe1, 0x0f,0x50,0xf8,0xc3, - 0xd6,0xd5,0xe8,0xdd, 0x2d,0xbf,0xa9,0x18, 0xa9,0xfd,0x46,0x99, 0x59,0xa9,0x4d,0xc7, - 0x2b,0x99,0xb7,0xd4, 0xe6,0x0b,0x1d,0xda, 0xfb,0xf4,0x84,0x1b, 0xfd,0xf9,0x33,0x8c, - 0x03,0x47,0x03,0x30, 0xc9,0x7f,0xae,0x2e, 0x8d,0x48,0x8e,0x7a, 0xa3,0x24,0x41,0xdf, - 0xf2,0x2e,0x3c,0x88, 0x06,0x97,0x0f,0xd3, 0x50,0x53,0x13,0x18, 0x9c,0x26,0x66,0x67, - 0xcf,0x8a,0xf1,0x4f, 0xf9,0x19,0x8b,0x5b, 0x23,0x95,0x04,0xda, 0x98,0x76,0xeb,0x5a, - 0xa4,0x28,0x7f,0x39, 0xd3,0x39,0x2c,0xb6, 0xd0,0xda,0x67,0xc7, 0xb3,0xad,0x6a,0x2b, - 0xb4,0x5c,0xdd,0x8d, 0xbf,0xab,0xcb,0x8c, 0xff,0x3f,0xf9,0x08, 0xc9,0x87,0xd8,0xba, - 0x65,0x88,0x0d,0xed, 0x47,0x78,0xe4,0xc2, 0xf9,0x9f,0x8d,0x51, 0x5c,0x08,0x2f,0xbc, - 0x29,0x83,0x5f,0xe4, 0x1c,0x5a,0xb8,0x2f, 0x5a,0x61,0xc0,0xf0, 0x22,0x11,0x22,0x46, - 0x8d,0xc3,0x47,0xa6, 0x39,0x26,0x4b,0xd2, 0x66,0x7c,0xd4,0xdc, 0x15,0xac,0x18,0xcc, - 0x87,0xc6,0xf2,0x0f, 0xd7,0x5b,0x8a,0xeb, 0x29,0x88,0x6f,0x50, 0xb7,0x53,0x59,0x79, - 0x6f,0x91,0x1e,0xcc, 0x49,0xde,0x8e,0x18, 0xde,0xfd,0x8f,0xc0, 0x86,0x95,0xbe,0xef, - 0x20,0xd4,0xb8,0x58, 0xa8,0xf7,0xa8,0xe4, 0x8d,0xe4,0x46,0x1f, 0x8a,0x20,0xe0,0x2b, - 0xe3,0x36,0x78,0xa0, 0x4e,0x5b,0xa5,0xfc, 0x8b,0xe3,0xc7,0x87, 0x80,0x83,0xba,0xce, - 0xf8,0xf6,0xaa,0xca, 0x0c,0x2d,0x0d,0x34, 0xb5,0x88,0xc7,0x2d, 0xf9,0xb8,0xa1,0x40, - 0x59,0x12,0x8d,0x63, 0x8d,0x3c,0x8c,0xa6, 0xa5,0x9f,0x38,0x2a, 0x5b,0x79,0xc1,0x9d, - 0x43,0xa4,0xb6,0x96, 0xeb,0x77,0xee,0xdf, 0x89,0x66,0xc7,0x86, 0xaa,0xcf,0xdf,0xf7, - 0xcc,0x78,0x86,0x4d, 0xdb,0xb6,0x78,0x77, 0x18,0x39,0x7b,0x85, 0xb4,0x30,0xa2,0x60, - 0x70,0x32,0xb8,0x36, 0x09,0xe9,0x36,0x92, 0xfd,0x77,0x0e,0x0e, 0xe8,0x5c,0x27,0x0a, - 0x5e,0x20,0x98,0xff, 0x56,0xe3,0x3c,0x86, 0x9e,0x6f,0x5c,0x5b, 0x85,0xf8,0x90,0x32, - 0x88,0xbc,0x9b,0xec, 0xce,0x69,0xb6,0xa9, 0x8c,0x57,0x21,0x71, 0x70,0x1f,0xdf,0x34, - 0x07,0xfd,0x53,0x56, 0xc5,0x83,0x09,0x7f, 0x4f,0xa6,0x2b,0xa5, 0xc5,0x1c,0xcf,0x79, - 0x47,0xf9,0x7a,0xc6, 0x2f,0xf5,0x37,0xdd, 0x9a,0x8a,0xc0,0x01, 0x4b,0x95,0xc2,0x6e, - 0x5e,0x4a,0xd5,0xae, 0x78,0x4b,0x7e,0x5b, 0x1e,0x69,0xac,0x7e, 0x22,0x27,0xfd,0x83, - 0xfc,0xac,0x39,0x6e, 0x2a,0xec,0xee,0xa9, 0xa5,0x6d,0x3e,0x08, 0xda,0xa4,0x43,0x5c, - 0x2d,0x72,0x09,0xbf, 0x34,0xa9,0xd3,0x0c, 0x7a,0x19,0x15,0x66, 0x0b,0xbd,0xda,0x1e, - 0xc4,0x10,0x5f,0x12, 0xb7,0x12,0x72,0xe9, 0xf1,0x7d,0x73,0xd6, 0xa5,0x08,0xda,0x19, - 0x4b,0x09,0x39,0x38, 0xa8,0x4b,0xd6,0x7d, 0xad,0x25,0xed,0x6d, 0x51,0xc5,0x26,0xeb, - 0x05,0xbf,0x1a,0x95, 0x14,0x0f,0xcb,0x5a, 0xf4,0xda,0x88,0x76, 0x3b,0x9c,0x15,0xb0, - 0x91,0x64,0x90,0x33, 0xbc,0xc9,0x15,0xd3, 0x61,0x81,0xd6,0xcc, 0xcb,0x86,0x59,0x68, - 0x24,0xd4,0x6f,0x09, 0xa9,0x9e,0xc1,0x0f, 0x2b,0x27,0x2f,0x9d, 0xec,0x12,0x8b,0x43, - 0x25,0x91,0xf0,0xc0, 0xe1,0x87,0x11,0x84, 0xbf,0x99,0x28,0xdc, 0x26,0xa0,0x57,0x17, - 0xb5,0x97,0x22,0xa6, 0x70,0x0c,0x5e,0x30, 0x8f,0xc1,0xc8,0x3b, 0x22,0x28,0x55,0xfb, - 0xeb,0x76,0x8c,0x8e, 0xf1,0x96,0xb5,0x4f, 0xd2,0xf3,0x20,0xf6, 0x5e,0x53,0x44,0xfb, - 0x7e,0xda,0xbc,0x5d, 0xa3,0xc7,0x91,0x77, 0xa9,0xb4,0x9e,0x2c, 0x91,0xee,0x74,0x70, - 0xc7,0xb8,0x1f,0x0f, 0x03,0x55,0x42,0xdd, 0x8b,0x0a,0x31,0x4c, 0x11,0x96,0x30,0xc0, - 0x5d,0xdc,0x53,0xbc, 0xb2,0x31,0x4f,0xd9, 0x5e,0x25,0x0a,0xa2, 0x42,0x2e,0xdb,0x06, - 0x17,0x98,0x00,0xb7, 0xad,0xca,0x8e,0xee, 0x80,0xf1,0xb4,0x6e, 0xec,0x16,0x69,0xeb, - 0xb2,0x11,0x10,0x57, 0xb5,0xf1,0x23,0x6d, 0xaa,0x23,0xb2,0x49, 0x0f,0x57,0x30,0x3e, - 0x1c,0xb9,0xcb,0xe0, 0x6e,0xbe,0xf2,0x8f, 0x6f,0x97,0x88,0x28, 0x1d,0x22,0x15,0xb5, - 0x63,0x66,0x50,0xa1, 0x14,0x46,0x1d,0xe2, 0x39,0x21,0xbe,0xda, 0xa3,0x0a,0xfa,0xd6, - 0x4e,0x5a,0x46,0xcd, 0x8f,0xc3,0xda,0x9e, 0x7b,0x0d,0x2a,0x72, 0x2e,0x73,0x32,0x42, - 0xdb,0xfa,0x1f,0xdc, 0xe4,0xa0,0x6c,0x07, 0x60,0x70,0x25,0xb7, 0xb5,0xc7,0x73,0x1d, - 0x6d,0x4e,0x09,0x34, 0xef,0x02,0x39,0x8f, 0xe3,0x04,0x32,0xb0, 0x1b,0x71,0x8b,0x82, - 0x6b,0x86,0x82,0xbb, 0xc5,0x61,0x0e,0xad, 0xf2,0x21,0xfb,0xd6, 0xfb,0x45,0x8e,0xaa, - 0x86,0x75,0xe5,0x11, 0x02,0x79,0x3f,0x19, 0xf9,0x18,0xc3,0x78, 0x10,0xf2,0xdc,0xfb, - 0x04,0x57,0xdf,0x83, 0x00,0x89,0xb8,0x60, 0x55,0x5a,0x50,0x9b, 0xe3,0x90,0xb5,0x54, - 0xeb,0xae,0xf9,0x99, 0x2a,0x2e,0x60,0xc4, 0x62,0x87,0x5e,0xa3, 0x07,0x25,0x31,0x06, - 0xc5,0xbd,0x67,0x3c, 0xde,0x87,0xfb,0xf5, 0x40,0x6c,0x47,0x23, 0x51,0xde,0x0b,0xca, - 0xe8,0xff,0x2b,0xe3, 0xff,0x48,0xe8,0xeb, 0xfe,0x19,0x15,0xc1, 0xf2,0xde,0x15,0xb6, - 0xf4,0x17,0xba,0x9c, 0x41,0xe8,0x98,0x43, 0xeb,0xaf,0x22,0xe0, 0xbe,0x06,0x9b,0xa9, - 0x76,0x44,0xae,0x01, 0x48,0x56,0xc8,0x9d, 0xab,0x09,0xdc,0xa4, 0x2c,0xdb,0x9d,0xff, - 0xf8,0xc1,0x4a,0x7b, 0xc8,0x45,0x8a,0xa8, 0x0e,0x44,0x3f,0xdb, 0x93,0xbb,0xdc,0x3c, - 0x96,0x96,0xdd,0x18, 0xca,0x0e,0x5e,0x52, 0xd0,0xa9,0x18,0x83, 0x69,0xfe,0x1a,0xce, - 0xd0,0x8b,0x01,0xe6, 0x5a,0xb2,0x79,0x7b, 0x6f,0x34,0xd5,0x8a, 0xc3,0xe0,0xbd,0x9e, - 0xfc,0x34,0x8d,0xba, 0xf9,0x14,0xed,0x98, 0x70,0x7e,0xae,0x2e, 0x82,0xe0,0x78,0x6b, - 0x6f,0x37,0xbe,0x4d, 0xb1,0xdf,0x00,0x6e, 0xae,0xb7,0xfe,0xe1, 0xf9,0xa3,0xc5,0x50, - 0x4e,0xec,0x37,0x96, 0xc9,0x99,0xdf,0x11, 0x8d,0xf0,0x62,0x63, 0x1b,0x93,0xb5,0xe7, - 0xe7,0x49,0x31,0x11, 0x46,0x70,0x7c,0x27, 0x29,0x63,0x4b,0x91, 0xbf,0x85,0xf0,0x6f, - 0x6b,0xca,0x74,0x42, 0x2a,0x8d,0xe2,0x4c, 0x02,0xd5,0xc0,0xa7, 0xd1,0x7c,0x5b,0xdb, - 0x40,0xd4,0x87,0x60, 0x62,0x63,0x61,0x22, 0x75,0xb7,0x96,0x14, 0xc9,0xc9,0x86,0xf1, - 0x23,0x93,0x2b,0xfc, 0xc6,0x6b,0x6b,0x93, 0xd2,0xce,0xc3,0x84, 0xa1,0xb5,0x3e,0x99, - 0x6c,0x1d,0x11,0xb7, 0xab,0x92,0xd0,0x2e, 0x90,0x2f,0x0c,0xdf, 0x9c,0xc5,0xf0,0x84, - 0x0a,0xc6,0x57,0xb4, 0xda,0x15,0x54,0xf0, 0x14,0xcf,0xf4,0x51, 0x55,0x27,0xd1,0x24, - 0x32,0x48,0xb1,0xe2, 0xa9,0x2f,0x1a,0x7d, 0x19,0x3f,0xbf,0x98, 0xf9,0x10,0x23,0xa0, - 0x7c,0x3a,0xa0,0x87, 0x97,0x9a,0xb9,0x4e, 0x58,0x37,0x17,0xd6, 0xae,0xaa,0x59,0x81, - 0x32,0x9c,0x00,0x9c, 0x21,0xf4,0x39,0x25, 0x92,0xc3,0x86,0xfc, 0xd2,0x2d,0xee,0xb0, - 0x7c,0xd7,0xef,0x22, 0x36,0x07,0x05,0xe4, 0x71,0x13,0x1d,0xb8, 0x10,0xa6,0x71,0x8e, - 0x16,0xd0,0x33,0xcb, 0xa8,0xe1,0x87,0x51, 0x61,0xe8,0xd8,0xd9, 0x8b,0x74,0x09,0x01, - 0xa4,0xcc,0x96,0xb3, 0x60,0xc9,0x24,0xc4, 0x98,0xee,0x31,0x0d, 0x6b,0x7f,0xb1,0x25, - 0x53,0x26,0xaa,0x39, 0xb3,0xe2,0xd2,0x7f, 0xdc,0x56,0x30,0x4e, 0xb2,0x6c,0x29,0xd6, - 0x5c,0x89,0xb1,0x46, 0xf3,0x2d,0x6c,0x42, 0xca,0xc4,0xbb,0xb1, 0x6b,0xd4,0xa3,0xfc, - 0xc0,0x03,0x87,0xd3, 0x70,0x7e,0xcf,0x44, 0x01,0xfe,0xfc,0xec, 0xfd,0x53,0xae,0x7f, - 0xb6,0x4a,0xaa,0x74, 0x31,0x75,0x2f,0xdf, 0xeb,0x01,0x43,0xa5, 0xfc,0xc6,0x55,0x80, - 0x13,0xd1,0x17,0x24, 0x5a,0x8e,0xd3,0xb0, 0xa6,0xde,0x13,0x16, 0xec,0xe4,0x19,0x17, - 0xe8,0x12,0x5a,0x5e, 0xe1,0x3b,0x70,0x77, 0xa4,0xe8,0x0e,0x49, 0xe5,0xcd,0xef,0xce, - 0x46,0x9f,0x15,0x5b, 0x6a,0x69,0x58,0xa3, 0x3c,0x22,0x64,0x2f, 0x6e,0x20,0x8c,0x92, - 0xa0,0x83,0x03,0xc5, 0x0b,0x95,0x71,0xf7, 0x55,0xe2,0x19,0x59, 0xa2,0x25,0x35,0xab, - 0xf2,0xcf,0x38,0x91, 0x68,0xf4,0xe2,0xb8, 0xc6,0x58,0x00,0xd1, 0x0f,0xdf,0x2e,0x8a, - 0xdb,0x3a,0xcb,0x02, 0x42,0x7c,0x83,0xa5, 0xf7,0x6b,0xab,0x8a, 0x3a,0x40,0x40,0x7e, - 0x92,0x14,0xe6,0x14, 0x75,0x97,0x32,0xd2, 0x80,0xd0,0x11,0x25, 0xa5,0x46,0x9a,0x21, - 0xab,0xa1,0x8e,0xbf, 0xd3,0x81,0x0d,0xb4, 0x87,0x0e,0x69,0x32, 0x87,0xdf,0xc0,0xce, - 0xa7,0x5e,0xd9,0xe5, 0x95,0xd5,0x5d,0x08, 0x29,0xa8,0xc0,0x56, 0x4e,0x0e,0xdf,0xbb, - 0x2e,0x17,0x06,0x79, 0x77,0x2e,0xc9,0x59, 0x76,0xf9,0x27,0xa7, 0x0d,0x59,0x9f,0xc4, - 0xe9,0xaf,0xb8,0x42, 0xc8,0x42,0x99,0xa5, 0x46,0xc5,0xc7,0x5c, 0xec,0x64,0x7b,0xfd, - 0xd1,0xef,0xd0,0x85, 0x7e,0x73,0xa3,0xbe, 0x74,0x92,0x21,0x73, 0xd7,0x0d,0x4e,0x41, - 0x86,0xef,0xe1,0x34, 0x68,0xdb,0xce,0x88, 0x34,0x86,0xb8,0x2c, 0xce,0x34,0xd1,0xe0, - 0x76,0x83,0x19,0x5a, 0x00,0x2d,0x53,0x2d, 0xd2,0x07,0x44,0xbc, 0x0a,0x84,0xf4,0xf7, - 0xab,0xad,0x48,0x6a, 0x56,0xee,0x6b,0x2c, 0x4a,0xa2,0x3e,0x23, 0x19,0x84,0x84,0x38, - 0x63,0x22,0x41,0x29, 0xc1,0x91,0x63,0xfd, 0xfa,0x66,0x10,0x50, 0x4d,0x39,0x89,0x2d, - 0x66,0x94,0xcb,0x6e, 0x5d,0x0c,0xc1,0xb6, 0x9d,0xa5,0x8d,0xeb, 0x11,0x58,0x41,0xc8, - 0x89,0xe0,0xbd,0x80, 0xcd,0x57,0x99,0xe2, 0x16,0xa4,0x87,0xac, 0x7a,0x1a,0x76,0xb0, - 0x93,0xa1,0xc7,0x62, 0x35,0xef,0xe0,0x63, 0xcc,0x5f,0x63,0x54, 0x50,0xb0,0x0b,0x7a, - 0xaf,0xbd,0x6e,0xb1, 0xe7,0x7e,0x60,0x3d, 0xb6,0x08,0x52,0x5f, 0x27,0x7d,0x9a,0xcd, - 0x17,0xf4,0xae,0xc3, 0x5b,0xbf,0x2d,0x2c, 0x4b,0xb4,0x14,0x8d, 0x1d,0xce,0x5d,0xd9, - 0x47,0x1c,0x27,0xbb, 0x1d,0x70,0x85,0x64, 0xd7,0xf6,0x0d,0xc6, 0xbe,0x9f,0x57,0x8d, - 0xf6,0x6e,0xc6,0x55, 0x3f,0xf5,0x82,0x48, 0x2a,0x9a,0x71,0x7d, 0xdd,0xb2,0x67,0x59, - 0x9d,0x98,0xbf,0x1b, 0x6a,0xd9,0x00,0x5e, 0x68,0x98,0x2f,0x9b, 0xd9,0x7c,0xde,0x84, - 0x5a,0x4d,0xcc,0x00, 0x68,0xb6,0xc2,0x61, 0xe4,0xcc,0x5c,0xdd, 0xcb,0x77,0x59,0x76, - 0x58,0x2c,0xe9,0xe3, 0x1b,0x0e,0x1d,0xa0, 0x6e,0xa8,0xc5,0xa8, 0x6d,0xe3,0x2f,0xcc, - 0x00,0xc0,0x32,0x4d, 0xd6,0x9b,0x74,0x62, 0x8a,0x71,0x35,0xd5, 0xad,0xe4,0x95,0x55, - 0xff,0x15,0xdd,0x68, 0xc4,0x42,0xe4,0x53, 0x8b,0x97,0x8d,0xd8, 0xed,0x0e,0x7c,0x5b, - 0x1c,0x6a,0x23,0x7c, 0xe7,0xf3,0x3b,0x17, 0xde,0x29,0x0d,0x90, 0xe4,0x8f,0x3a,0xe3, - 0x97,0x4e,0x31,0x35, 0x6f,0x16,0x22,0x59, 0x9b,0xd5,0x10,0x7c, 0xea,0xcd,0x76,0x8b, - 0xd4,0x3f,0x67,0x63, 0xeb,0x9b,0xcd,0x16, 0x17,0x39,0x0c,0x5b, 0x70,0x15,0xc4,0xb0, - 0x93,0x5a,0x77,0xf0, 0x31,0xd7,0xe0,0xcb, 0x9b,0x99,0xda,0x0d, 0xdc,0xf4,0x7f,0x75, - 0x83,0xf3,0x6f,0xb3, 0x88,0x47,0x09,0xae, 0x2d,0xcb,0x22,0x63, 0xf6,0xeb,0x77,0xb2, - 0xfe,0xf5,0xb3,0x26, 0x96,0x0a,0x71,0xcc, 0xeb,0xe2,0x78,0x57, 0x7f,0xe6,0xc0,0x95, - 0xa9,0x11,0x58,0xb3, 0xbc,0x25,0x65,0xfd, 0xf5,0x6d,0x8b,0xa3, 0x9b,0x9d,0xdb,0xae, - 0x9b,0xce,0x3d,0x75, 0x8a,0x09,0x1e,0x17, 0x19,0x36,0x5e,0x46, 0x58,0x90,0x9f,0xeb, - 0x7e,0xe1,0xd0,0x69, 0x54,0xc9,0xf6,0x6e, 0xda,0x99,0x0e,0x60, 0x64,0x83,0xf6,0x41, - 0x0e,0x44,0x77,0xc9, 0x5e,0x8c,0xb0,0xc6, 0x74,0xb4,0xda,0x22, 0xc6,0xb2,0xcb,0x17, - 0xd3,0x76,0xba,0x7a, 0x62,0x4a,0x15,0x4d, 0x53,0x7a,0x6a,0xd3, 0x8c,0xbb,0x2c,0xd6, - 0x57,0xdd,0x5a,0x50, 0x43,0xed,0xa3,0xe6, 0x0f,0xa8,0x04,0xa7, 0x56,0x09,0x0c,0x7b, - 0xb8,0x4b,0xe0,0x2d, 0x70,0x2b,0x7b,0xb7, 0x55,0xd5,0xeb,0xce, 0x06,0xb5,0xce,0x30, - 0x8a,0xe7,0x5b,0x60, 0xdb,0x0d,0x5a,0xf4, 0x88,0x38,0xc1,0xde, 0x52,0xbc,0x58,0x0a, - 0xe5,0xe5,0x57,0xd6, 0xbb,0x3e,0x52,0x89, 0x3c,0x95,0x8d,0xae, 0x1f,0xae,0x01,0xcf, - 0xec,0x6a,0xdf,0x08, 0xc6,0x66,0x25,0xaa, 0x01,0x1b,0xb0,0xab, 0x98,0x71,0xef,0x14, - 0x6d,0x16,0xb6,0x2e, 0xfe,0x7e,0x5e,0x03, 0x23,0xe0,0xef,0x73, 0x78,0xaa,0xd8,0xc7, - 0x44,0x3d,0x5a,0x0e, 0x51,0x18,0x08,0x62, 0x8f,0xf1,0x1d,0xe7, 0xec,0x37,0x01,0xae, - 0x08,0xc5,0x0e,0x43, 0x4c,0xe7,0x1d,0xe8, 0x06,0xbd,0x43,0x47, 0x97,0xb8,0xe3,0xb4, - 0x4f,0x3e,0x64,0x2e, 0xbc,0x9f,0xcd,0x33, 0x53,0x04,0xac,0xc0, 0xed,0x33,0xc2,0xa3, - 0x1f,0xa3,0x92,0xbe, 0x4d,0x68,0x60,0xdc, 0x0a,0x1b,0x66,0xff, 0x37,0x34,0x53,0xcc, - 0xe7,0x11,0xfa,0x6c, 0x31,0xab,0x11,0x87, 0x38,0xdc,0x15,0xc9, 0xa3,0x17,0x7d,0x2d, - 0x1c,0x51,0x95,0x37, 0xb9,0x87,0xab,0x2e, 0x63,0x50,0x17,0x7b, 0x89,0x60,0x4f,0x5d, - 0xd2,0xb0,0x9f,0x27, 0xcf,0xeb,0xf9,0x5c, 0xd8,0x21,0xe7,0x2d, 0x0e,0x30,0x05,0xf6, - 0x97,0x15,0xf2,0x45, 0xb3,0x3f,0x81,0x40, 0x42,0xcf,0xab,0xc3, 0x6e,0x2c,0x05,0xe4, - 0x30,0xbc,0xb7,0xd5, 0x55,0x77,0xf4,0xb3, 0xbf,0xad,0x0d,0xa4, 0x4c,0xe8,0xc6,0xc1, - 0x84,0xe7,0x59,0x2e, 0x9a,0x82,0x25,0xc7, 0xf4,0x29,0xf9,0x72, 0x79,0x46,0x55,0x5c, - 0x96,0xbc,0xe8,0x39, 0x8f,0xaa,0x87,0x89, 0x8c,0x6c,0x00,0xd2, 0xc8,0x09,0x34,0x41, - 0xc8,0x87,0x43,0xb2, 0xf1,0x6c,0x96,0xa3, 0x12,0x4e,0x31,0x18, 0x09,0x4f,0x2f,0x9e, - 0x08,0xba,0x64,0x71, 0x80,0xf7,0xa7,0xb2, 0x84,0x57,0x0d,0x9d, 0x39,0xa8,0xbc,0x9b, - 0x71,0x8e,0x6f,0x94, 0xba,0x76,0x49,0x79, 0xdf,0x73,0x31,0x17, 0x53,0x57,0xf5,0xc4, - 0x4f,0x18,0xd1,0x08, 0x02,0x9a,0xe3,0x29, 0x5b,0x71,0x3d,0xf3, 0x8e,0xe4,0xa1,0xbf, - 0x91,0x16,0x18,0x05, 0x9e,0x80,0x39,0x90, 0x0e,0xb2,0xa2,0x83, 0x4d,0xf7,0xa8,0x5e, - 0x42,0x23,0x14,0x40, 0x90,0x92,0x0e,0xf5, 0xcd,0x3f,0x85,0x80, 0xd7,0x19,0x79,0xa4, - 0xcf,0xfe,0xb5,0x87, 0x71,0x63,0x6e,0x19, 0x24,0xcc,0xe1,0x1e, 0x73,0x28,0x2f,0xa6, - 0x00,0xb2,0x3a,0xf3, 0x38,0xaf,0xc4,0xaa, 0xa4,0x09,0xd9,0xf3, 0x49,0xe5,0x2b,0xc9, - 0x4c,0x85,0x6f,0xd1, 0x97,0x5e,0x61,0x7d, 0x33,0xcf,0x0b,0xd7, 0xe4,0x0c,0xaa,0x07, - 0xbb,0x19,0x2e,0x95, 0x66,0x87,0x7c,0x7e, 0x91,0xf5,0x60,0xbf, 0x56,0x0c,0x80,0x03, - 0x00,0x67,0x9e,0x6c, 0x69,0x13,0xa0,0xb9, 0x62,0xb2,0xc2,0x5f, 0xd2,0x1e,0xf6,0xa4, - 0x4c,0xbd,0xa4,0x88, 0x32,0x38,0xf2,0x54, 0x49,0xd2,0x0b,0x18, 0x75,0x49,0x77,0x54, - 0x3b,0x90,0x12,0x60, 0xba,0x5d,0x28,0xfc, 0x4e,0x32,0xed,0x85, 0x9b,0x2f,0xc3,0x96, - 0xdf,0xc9,0x9a,0xc5, 0xa9,0xcc,0xc6,0xa0, 0xa6,0x9c,0x25,0xdd, 0xd7,0x99,0x31,0x1e, - 0x90,0x78,0xd7,0xc9, 0x4f,0xc1,0xb8,0x23, 0xa3,0x73,0xba,0x06, 0x74,0xab,0x95,0x87, - 0xb5,0x15,0xd9,0xcd, 0xae,0x5c,0xc6,0x3f, 0x20,0x1a,0x43,0xe2, 0xe3,0xd5,0xfd,0x28, - 0x75,0xa8,0xc7,0xa0, 0xff,0x87,0x5b,0x82, 0xae,0x4c,0x2e,0xa6, 0x49,0x55,0x43,0xa7, - 0x96,0x93,0x23,0x64, 0x3e,0x13,0x03,0xc6, 0x55,0x85,0x06,0x2e, 0x65,0xed,0xbe,0x9a, - 0xb7,0xfd,0x36,0x69, 0x37,0x08,0x36,0xf1, 0xaa,0x9f,0x97,0xb7, 0xe2,0xe4,0xfb,0x8d, - 0x54,0xfd,0x81,0xf9, 0xcd,0xe0,0x84,0x8c, 0xb0,0xbf,0xec,0xad, 0xff,0x7e,0xce,0x15, - 0x52,0x50,0x71,0x35, 0xe8,0xdc,0x5c,0xda, 0x8d,0x17,0x34,0xb5, 0xce,0x04,0xbb,0x75, - 0xf3,0x78,0xf0,0x75, 0x54,0x52,0x8b,0xcf, 0x9d,0x53,0x23,0x5c, 0xb1,0x27,0x8d,0x26, - 0xea,0x9d,0x82,0x4a, 0xca,0x02,0xae,0x33, 0xd3,0xfb,0xde,0xf3, 0xa6,0x68,0xa0,0x53, - 0x78,0xcc,0xac,0x82, 0x14,0xdd,0xe9,0x2b, 0x34,0xb6,0x43,0x48, 0xac,0x92,0xed,0x27, - 0xef,0x3f,0xad,0x51, 0x7a,0x29,0xe8,0xeb, 0x68,0x2c,0x6d,0x24, 0x94,0xe0,0xa1,0x1c, - 0xb0,0xed,0xf5,0xb2, 0x4b,0xff,0x3e,0x3e, 0xfa,0x46,0x74,0x22, 0x0c,0x72,0xe7,0x6c, - 0x99,0x28,0xbe,0xf3, 0x8c,0x07,0xcc,0xc9, 0x6a,0x3c,0x0f,0x22, 0xdb,0x4d,0xd3,0x18, - 0x89,0x56,0x21,0x89, 0xc6,0xf7,0x59,0xc5, 0xb0,0x80,0xff,0xa8, 0xde,0xdb,0x34,0x69, - 0xad,0x6b,0x14,0x5b, 0x88,0x1c,0xb6,0xcf, 0xa9,0xd9,0x22,0x25, 0x4b,0x51,0xf2,0x05, - 0x1d,0x2b,0xfc,0x7b, 0xf9,0x25,0xb0,0x16, 0x0d,0x99,0x37,0xdd, 0x20,0xc3,0xc2,0x5b, - 0xe2,0x6b,0x90,0xc9, 0x0f,0xf7,0xfa,0xb8, 0xa6,0xad,0x14,0xed, 0xab,0x69,0xa0,0xb6, - 0x5c,0xfd,0xdb,0x0a, 0xd4,0x42,0x32,0xa9, 0xce,0x85,0x6d,0xe6, 0x50,0x63,0x6d,0xa1, - 0xc6,0x0d,0x32,0x9f, 0x25,0x39,0x4e,0xb2, 0x56,0xdd,0x42,0xdf, 0x46,0x6d,0x1d,0xd8, - 0x82,0x2d,0xf3,0x9c, 0x7a,0x3d,0x2c,0x1e, 0x8c,0x89,0x93,0xf0, 0x3d,0x2e,0x72,0x38, - 0x39,0xec,0x48,0x34, 0xf9,0x1b,0xa2,0xa5, 0x12,0x43,0xb9,0x7b, 0xfe,0xfd,0x4d,0x8a, - 0xdd,0xf7,0xbd,0x98, 0xd8,0x90,0x34,0xa4, 0x08,0xcd,0xaa,0x8f, 0xf3,0x6a,0xd2,0x60, - 0xf7,0x10,0xdd,0x1f, 0xcc,0x88,0x93,0x43, 0xd1,0xef,0x19,0x2b, 0x75,0x46,0x07,0xdd, - 0x1a,0xa3,0x47,0x0e, 0x68,0xb4,0x9e,0x56, 0x86,0xf6,0xc9,0xd9, 0x81,0xf2,0xf4,0xbd, - 0xd3,0xa8,0xf2,0x5d, 0xdf,0x1e,0x2f,0xb6, 0x76,0xaa,0x04,0xcf, 0x28,0x30,0xf9,0x56, - 0x45,0xb7,0xaf,0xbd, 0x5a,0x48,0x2e,0x97, 0x0c,0x1d,0xcc,0xd1, 0x57,0x77,0x74,0x0d, - 0x42,0xfa,0x75,0xf6, 0xb7,0x27,0xc3,0x92, 0x70,0xc4,0x0b,0x8d, 0x13,0x84,0xc8,0x23, - 0xb9,0x90,0xb8,0x72, 0x7a,0x08,0x13,0x16, 0x9c,0x82,0x54,0xb3, 0x80,0xf1,0x88,0xb2, - 0xfa,0x4f,0x99,0xa0, 0xae,0xa5,0x4f,0x41, 0xfc,0x71,0x35,0x67, 0x23,0x0c,0xce,0xc6, - 0x03,0xb4,0x4f,0x0e, 0xa6,0x00,0xaa,0xb1, 0x10,0x0b,0xe9,0x0c, 0x0a,0xfc,0x4d,0x51, - 0xa1,0xc4,0xf9,0x61, 0x5d,0x2d,0x8e,0xad, 0x6b,0x88,0x50,0xba, 0xb7,0x0d,0xea,0xd9, - 0xf8,0x91,0x55,0xf9, 0xa2,0xa7,0x8c,0x01, 0xb6,0x54,0x8d,0x88, 0x9e,0x1c,0x38,0x55, - 0xa2,0x0c,0xef,0x6f, 0x47,0x0e,0x5a,0x0c, 0xb8,0xf9,0x38,0x69, 0xf3,0x59,0x97,0x27, - 0x3e,0x2e,0xae,0x7d, 0x4f,0x74,0x64,0x70, 0xf4,0xad,0xf0,0xf4, 0xec,0xd4,0x78,0x59, - 0xc1,0x91,0x4a,0x2a, 0x21,0x40,0xf5,0x3e, 0xcc,0x86,0xf1,0x60, 0xf2,0xf1,0x19,0xcf, - 0x2b,0x3b,0x5b,0x76, 0xeb,0x8c,0xba,0x6c, 0x82,0x27,0x89,0x81, 0x7f,0x28,0x6f,0xf2, - 0x3c,0xf3,0x8a,0x85, 0xd4,0xa2,0xad,0x3e, 0xdd,0xc6,0x45,0xb2, 0x6b,0x09,0x01,0x19, - 0x3a,0x4e,0x9a,0xfe, 0x59,0x9a,0x0b,0xf0, 0xb5,0xe7,0xb2,0x43, 0xff,0x13,0xfb,0x6a, - 0x7f,0x0b,0x6f,0x8a, 0x16,0x6f,0x37,0x82, 0x08,0xa0,0xb0,0x49, 0x79,0xdc,0x29,0xb4, - 0x8d,0x81,0x5c,0x3a, 0x6f,0x82,0x67,0x20, 0x60,0x10,0x3a,0xa5, 0x4c,0x0c,0x76,0x4c, - 0x60,0x08,0xf5,0x10, 0x02,0x86,0xa7,0xde, 0x5e,0x04,0x47,0x67, 0xfe,0x27,0x4a,0x64, - 0x18,0x6b,0x2e,0x5d, 0x47,0x75,0x75,0x33, 0xf0,0x74,0x45,0x70, 0x57,0x63,0x79,0xfe, - 0x2b,0x5e,0xeb,0xe0, 0x83,0x8a,0x61,0x4f, 0xdb,0x94,0x7f,0xd9, 0x9e,0xbc,0x69,0x91, - 0xab,0x7d,0x4e,0x42, 0x03,0x71,0x37,0xdd, 0x30,0x04,0x2a,0xf5, 0xc0,0x6d,0xb4,0xd5, - 0x3c,0x19,0x02,0x7e, 0xb3,0x22,0xb7,0xd3, 0xc6,0x4c,0x6b,0xef, 0x54,0xe5,0xec,0x92, - 0x55,0x06,0xb4,0x24, 0x36,0xe5,0xc3,0x0f, 0x66,0x97,0x98,0x47, 0x0b,0x11,0xa8,0x4d, - 0x72,0x3e,0xc6,0x05, 0x72,0x6a,0x36,0xee, 0x27,0xeb,0x88,0xfc, 0xe7,0x5e,0x41,0x56, - 0xcc,0x5b,0x76,0x7b, 0xf8,0x81,0xd1,0x33, 0x20,0x59,0x74,0x2b, 0xae,0xd2,0xd8,0xd5, - 0x8c,0x34,0xef,0xd3, 0xf4,0xf4,0x5d,0xd9, 0x90,0x02,0x2d,0xfd, 0x74,0xa8,0xfd,0x85, - 0x12,0x91,0xd4,0xda, 0x87,0x36,0xf3,0xae, 0x21,0x4f,0x84,0xa6, 0x70,0xd2,0x49,0x65, - 0x42,0xbe,0x3e,0x78, 0xd7,0xda,0xe3,0xa6, 0x2a,0x37,0xce,0x55, 0x72,0xf1,0x1d,0xaf, - 0x29,0xdf,0x7e,0xa8, 0xc1,0x03,0xb3,0x3c, 0x22,0x61,0x9c,0x25, 0xdf,0xc8,0xab,0x37, - 0xd1,0x83,0x65,0x02, 0x9b,0x29,0xd3,0x7e, 0x9f,0x71,0xd1,0x8e, 0xc4,0x15,0x3c,0x97, - 0x07,0x2d,0x8b,0x32, 0x2f,0x50,0x72,0xfd, 0x50,0x9b,0xa8,0xe4, 0xbd,0xf7,0x76,0x69, - 0x57,0x0c,0x9a,0x72, 0xd0,0x48,0xac,0x2a, 0x40,0x1b,0x4d,0xd8, 0x36,0x4f,0x1c,0x89, - 0x13,0xb8,0xcd,0xf2, 0xf5,0x5b,0x32,0xb6, 0xc1,0xf6,0xe9,0x2c, 0x8c,0x8e,0xc9,0xea, - 0x5a,0x5b,0x11,0x5d, 0xf6,0x06,0x3e,0xc9, 0x93,0xcd,0x35,0xb0, 0x00,0x59,0x3d,0x55, - 0x31,0x92,0x73,0x70, 0x10,0x62,0xbb,0x16, 0xd5,0x1e,0x29,0xe4, 0xe0,0xc7,0xec,0x16, - 0x33,0x45,0x09,0x46, 0xc0,0xcd,0x50,0xe0, 0x29,0x4d,0x1e,0xca, 0x29,0x61,0x0a,0xc0, - 0xa8,0x21,0xdc,0x6a, 0x96,0x68,0x9b,0xb8, 0xb1,0x83,0xb3,0x55, 0x8e,0x4b,0x77,0xaa, - 0x89,0x2e,0xb5,0xb8, 0x8e,0x50,0xf9,0x04, 0x96,0x19,0x50,0x86, 0xc5,0x60,0xa0,0x69, - 0xdc,0x6d,0x6b,0x3b, 0xd7,0x8d,0xd1,0x50, 0x99,0x6a,0xdc,0xea, 0x86,0xf6,0x23,0x01, - 0xb4,0xb4,0xe9,0x44, 0xbe,0x25,0x2d,0x67, 0xc8,0xea,0x3d,0xae, 0x3c,0xdc,0xea,0xcd, - 0x8d,0xfc,0x8a,0x61, 0x79,0xa8,0x25,0xd7, 0x1b,0x89,0x97,0xbc, 0xa5,0x6f,0xc3,0x66, - 0xff,0xb9,0x37,0x5d, 0xd0,0xf4,0xb4,0x2d, 0x39,0x25,0x34,0x18, 0xe6,0x22,0xa9,0x36, - 0xa9,0x06,0x7f,0x83, 0x3c,0x9c,0x05,0x12, 0xcb,0xe0,0x49,0x36, 0x83,0xba,0xf4,0x49, - 0xb5,0x45,0x54,0x79, 0xfa,0x21,0x8a,0x80, 0x38,0x79,0x50,0x9d, 0xd0,0x0d,0xd6,0xfc, - 0x82,0x12,0x0c,0x2d, 0x37,0xd7,0x0b,0xe5, 0xa3,0x23,0xce,0x41, 0x73,0x48,0x5f,0x44, - 0x18,0xa4,0x9d,0x32, 0x14,0xb7,0x1d,0x32, 0x64,0x46,0x87,0x28, 0xe8,0x61,0x15,0xd0, - 0x5b,0x26,0x7e,0x7b, 0x0f,0xb9,0x04,0xa8, 0x9b,0xd8,0x37,0xc7, 0xc2,0x6d,0x6b,0x92, - 0x44,0x0a,0x83,0xff, 0x95,0x40,0x89,0x40, 0xe9,0x89,0x37,0x0c, 0x67,0xc0,0x3b,0x95, - 0x1d,0x86,0x21,0xae, 0x6e,0x75,0x08,0x54, 0x40,0x12,0xf1,0xcd, 0x93,0xed,0x3a,0xc6, - 0x90,0xae,0x8b,0x05, 0x88,0x8a,0x52,0x90, 0xf7,0x81,0x92,0xbd, 0xd4,0xae,0x39,0x5f, - 0x66,0x75,0x78,0x96, 0xf2,0xaf,0xf6,0x4c, 0x53,0x45,0xbd,0xab, 0xed,0xbe,0x28,0xaa, - 0x4a,0x09,0x40,0x30, 0x23,0x26,0x52,0xfd, 0x19,0x50,0x34,0x43, 0x63,0xa6,0xbb,0xca, - 0xcd,0x02,0x86,0x03, 0xdd,0x47,0xf8,0x0a, 0x07,0xfa,0xf2,0xbd, 0x70,0xe1,0xce,0x64, - 0x48,0x57,0x67,0x68, 0x65,0x11,0x12,0xf7, 0x6d,0xd9,0x18,0x0d, 0x91,0x0b,0xc1,0x64, - 0x28,0x06,0x4f,0xd6, 0x53,0x46,0x2d,0x62, 0xd2,0xd4,0xc3,0x66, 0x9d,0x0a,0xa5,0xc7, - 0x66,0x7f,0xfa,0xce, 0x3a,0x9c,0xc5,0x50, 0xfa,0xa8,0xc0,0x94, 0x50,0x91,0x9c,0xe3, - 0xf1,0xb9,0x76,0xd8, 0xce,0x3b,0xa7,0x65, 0x9f,0xbd,0x2e,0x1d, 0xb4,0x91,0xfc,0xc3, - 0xbf,0x42,0x0a,0x5c, 0x40,0xd0,0xa7,0x69, 0xe4,0x07,0x5f,0xec, 0xff,0xa9,0x62,0xcf, - 0x53,0x90,0x08,0xfb, 0x25,0x62,0x4d,0x56, 0xc5,0xf4,0x75,0xda, 0xee,0x65,0x25,0xe0, - 0x9f,0xa4,0x9d,0x1e, 0x69,0x4d,0xd2,0x85, 0x7c,0xff,0x81,0xc6, 0x3e,0x70,0x60,0x6b, - 0x7b,0x4b,0xdc,0x68, 0x00,0xb5,0x26,0xaf, 0x51,0xe6,0xd1,0xea, 0x02,0x0f,0x52,0xfd, - 0xd5,0xc0,0x18,0x20, 0x75,0x4b,0xf7,0x33, 0xb4,0x15,0xda,0x14, 0xce,0x52,0x80,0x26, - 0x40,0x2e,0x07,0x11, 0xa7,0xad,0x04,0xba, 0xf1,0x5f,0xba,0x10, 0x4e,0x4b,0xc0,0xeb, - 0x20,0x23,0x49,0xa7, 0x8b,0x39,0x8a,0x5b, 0xc9,0x43,0x07,0xe1, 0xeb,0xd9,0xd3,0x5a, - 0x57,0x31,0x24,0xe8, 0x40,0x39,0x4c,0x8b, 0xe9,0x20,0xb3,0xb7, 0x6e,0x8a,0x7e,0xee, - 0xe9,0xfc,0xa9,0x62, 0xc2,0x5c,0x60,0x85, 0xf6,0xc6,0x18,0x48, 0xac,0xfd,0x6f,0xfe, - 0x59,0xcb,0xce,0x50, 0x5a,0xd0,0x42,0x7e, 0x3b,0xbd,0xc5,0x66, 0xf0,0x08,0x74,0x96, - 0xe7,0x39,0xfa,0xda, 0xbe,0xef,0x5c,0x10, 0x16,0x9c,0xb6,0x5f, 0xcd,0xcd,0xed,0x3d, - 0x2e,0x82,0xf6,0x54, 0x74,0x46,0xf5,0x86, 0xad,0xec,0xab,0xad, 0x55,0x9a,0xdb,0x7c, - 0xd9,0x7c,0x20,0xde, 0xfd,0x2d,0xbe,0x3c, 0x4e,0x09,0xc3,0x9d, 0x7e,0x67,0xb8,0x07, - 0x46,0x63,0x16,0x2a, 0xd3,0xee,0xae,0xdb, 0x0f,0x87,0x68,0xb2, 0xa0,0xd9,0x7b,0xa8, - 0x0f,0xff,0x26,0x3e, 0xcd,0x39,0xe3,0x8c, 0xaa,0xa7,0x88,0x55, 0x73,0x39,0xec,0x27, - 0x67,0x14,0x30,0xb9, 0x4f,0x4c,0x5f,0x64, 0xc5,0xb9,0x7a,0xa3, 0x45,0x26,0x83,0x66, - 0xbf,0xa3,0xee,0x06, 0x63,0x93,0x64,0x9a, 0xac,0x6e,0xb7,0x7d, 0x38,0x4d,0x07,0x47, - 0xa2,0xad,0x0b,0xd1, 0xac,0x8e,0x94,0xc1, 0x9a,0x82,0x7b,0x8c, 0x15,0xcd,0x70,0x40, - 0x0e,0x8e,0x68,0xe0, 0x17,0x3b,0x13,0x9a, 0x8c,0x4c,0x5d,0x19, 0x87,0xbc,0x4f,0x71, - 0xd7,0xf7,0x43,0xae, 0x3f,0xdd,0x97,0xd3, 0x03,0x0c,0xda,0x47, 0xee,0x23,0xb9,0xfc, - 0xff,0x70,0x0d,0x36, 0xa0,0xad,0x9a,0x2e, 0xa9,0x26,0x8b,0x44, 0x71,0x0d,0x2a,0x0a, - 0x7c,0x61,0x8b,0xaf, 0x35,0x9f,0xd8,0x81, 0x76,0x01,0x76,0x5b, 0x3c,0x80,0xeb,0x8d, - 0x2f,0x1a,0xec,0x9f, 0x00,0xb6,0xb2,0x0a, 0xac,0x75,0xc9,0x1a, 0x60,0xce,0xa1,0x06, - 0xe1,0xf5,0x4e,0xf5, 0xeb,0xad,0x77,0x07, 0x6e,0x02,0xe1,0x1d, 0xb8,0x33,0x31,0x63, - 0x79,0x08,0x1c,0xca, 0x07,0xc6,0x1d,0xd1, 0xb5,0x74,0xcf,0xd2, 0x45,0xff,0xc8,0xb6, - 0xe3,0xdc,0xb2,0x89, 0xa9,0x96,0x12,0x4f, 0xe9,0x15,0x57,0xb1, 0x25,0x9c,0xfa,0x39, - 0xab,0x76,0xfb,0x3a, 0xee,0x8f,0x8f,0x44, 0x67,0x9d,0xf5,0x5f, 0x71,0x54,0xf8,0xa2, - 0x5a,0xbc,0x17,0xba, 0x34,0x5a,0x2b,0x87, 0x0e,0x85,0x75,0x89, 0x32,0xb3,0xde,0xf0, - 0xc6,0x06,0xf1,0xd3, 0x62,0x17,0x57,0x1e, 0xb2,0xd7,0xe6,0x35, 0x3c,0x49,0x86,0x79, - 0xff,0xaf,0x99,0x84, 0x97,0xc4,0x03,0x73, 0x4c,0xe9,0xfe,0x0a, 0x48,0x0c,0x45,0x11, - 0xb4,0xec,0x43,0x0d, 0xa8,0x27,0xb4,0x98, 0xdd,0xf8,0xca,0xa1, 0xea,0xe1,0x7c,0xac, - 0xb2,0x72,0xc1,0x5c, 0x78,0xa3,0x99,0x1c, 0xff,0x49,0x67,0xb0, 0x06,0xc9,0x6c,0x5f, - 0xa7,0xf9,0x3b,0x4f, 0xb6,0x48,0x19,0xea, 0x57,0x81,0xbf,0x06, 0xfd,0x93,0xeb,0xc7, - 0xf7,0xd8,0x2a,0xfb, 0xf2,0xfb,0xea,0x0d, 0x76,0xa2,0xee,0xd8, 0x47,0x0e,0xda,0x11, - 0xa3,0x37,0x33,0x97, 0xf8,0xa9,0xdb,0xff, 0x0b,0xa5,0x43,0x1f, 0xbf,0x82,0x70,0x80, - 0x6b,0x53,0xdd,0xc0, 0x7f,0xe9,0xe2,0x52, 0xe3,0xf1,0xc8,0xd8, 0xc9,0x36,0x91,0x3e, - 0x90,0x21,0xf5,0x78, 0x88,0xe5,0x08,0x25, 0x67,0x4f,0x66,0x41, 0xc3,0x7a,0x23,0xdb, - 0x15,0xf4,0x5f,0x34, 0x43,0x6f,0x76,0xbb, 0xdd,0x79,0x36,0x4e, 0x2e,0x55,0x00,0xfe, - 0x1a,0xe8,0x3f,0xd5, 0xcc,0x67,0x4b,0x44, 0xf5,0x2b,0x2e,0x42, 0x74,0xc9,0x26,0x85, - 0x63,0xc7,0xe2,0x73, 0x8e,0x25,0xea,0x52, 0x14,0x77,0x9e,0x98, 0x14,0x6f,0x51,0xa0, - 0x81,0x88,0x41,0x14, 0x6d,0x60,0x4c,0x06, 0xa5,0xba,0x4c,0xf3, 0xc8,0x13,0xaf,0x71, - 0x5d,0xd4,0x84,0x08, 0x80,0xf3,0x55,0x7a, 0xc8,0x57,0x4a,0xcd, 0x88,0x3e,0x87,0x58, - 0x69,0x50,0x51,0x0c, 0x99,0x44,0xcc,0x60, 0xd7,0x2a,0x75,0x3f, 0xac,0xc2,0xb1,0xa7, - 0xc4,0xa3,0x46,0x22, 0x20,0x53,0x35,0x37, 0x73,0x5a,0x65,0x1e, 0x43,0x8e,0x08,0x2e, - 0x44,0x3e,0xa3,0x7b, 0x5f,0x1a,0xe4,0x6c, 0x0a,0xb4,0x8c,0xb1, 0xb5,0xd1,0x33,0xc1, - 0x5b,0x4f,0x0b,0xbb, 0xf8,0xdb,0x77,0x2b, 0x02,0x8c,0xa1,0xd2, 0x59,0xa6,0xbb,0xe4, - 0x25,0xf0,0x8c,0x4d, 0xd1,0x40,0xd7,0x7f, 0x82,0xb4,0x1c,0x1a, 0x9c,0xbb,0x8c,0x67, - 0xb7,0x19,0xd0,0x3c, 0x49,0xce,0x92,0xa1, 0x5a,0xc2,0x97,0x68, 0xfd,0x66,0xa0,0x5e, - 0x10,0xe4,0x21,0x7e, 0x03,0x74,0x8e,0x68, 0x1f,0x98,0x6f,0x45, 0x39,0xf8,0xc2,0x39, - 0x5d,0xe5,0x00,0x5d, 0xdd,0xb3,0x84,0x44, 0x50,0xf2,0xc3,0x4f, 0x8d,0x2a,0xbe,0x1f, - 0x87,0xa3,0x00,0x4a, 0xeb,0x7b,0xf9,0xc0, 0x55,0x1e,0xb3,0x69, 0xdc,0x46,0x6e,0x32, - 0xf4,0xb2,0x6b,0xf5, 0x1a,0xec,0x75,0x3e, 0x27,0x65,0x77,0x4c, 0xfd,0x37,0xb9,0xb7, - 0xf4,0xc0,0xe6,0xf8, 0xa8,0x62,0x8d,0x85, 0x07,0x83,0x3a,0xd4, 0xb0,0x57,0x21,0x05, - 0x01,0x5a,0xb4,0xea, 0x20,0xf8,0x92,0xac, 0xf2,0x7d,0xb6,0x05, 0xb6,0x44,0xd4,0xda, - 0x33,0x49,0x91,0x0a, 0xcf,0x82,0x45,0xc7, 0xac,0x35,0x3a,0x3d, 0x85,0x7b,0x0d,0x73, - 0x84,0xe9,0x50,0x45, 0xf4,0xd6,0x58,0x77, 0x99,0xbe,0x9f,0x6b, 0xca,0x43,0x54,0x3c, - 0xdc,0x38,0xb1,0x29, 0x55,0x52,0x61,0xaa, 0x7d,0x22,0x8e,0xbb, 0x70,0x37,0x4f,0xd0, - 0x95,0xbb,0xc1,0x64, 0xeb,0xd2,0x1c,0x70, 0xb6,0x5a,0x06,0x2c, 0xab,0x5b,0x47,0x15, - 0x3a,0x0a,0xea,0xf0, 0xf7,0xd5,0xd8,0x9e, 0xcc,0xa4,0xfa,0x2a, 0x21,0x52,0x95,0xa6, - 0xa5,0xb5,0x02,0xb3, 0x88,0x15,0x72,0x2e, 0x33,0x51,0x2d,0x30, 0xf2,0xd5,0xee,0x8e, - 0x25,0xe6,0xdb,0x70, 0xa7,0x72,0x21,0x4f, 0x4f,0xde,0xcb,0x75, 0x62,0x87,0xfb,0x85, - 0x5f,0xf9,0x97,0xbc, 0x54,0xb1,0x46,0x21, 0xec,0x8e,0x75,0x3c, 0x1f,0x92,0x66,0x76, - 0xf5,0x2b,0x89,0x33, 0xd6,0x5e,0xf5,0x5a, 0xd5,0xf4,0x8c,0xbf, 0xd5,0x44,0x60,0x05, - 0x44,0xee,0x2e,0xe6, 0x56,0x33,0x14,0x5b, 0x83,0x3b,0x0b,0x21, 0x4e,0x4b,0x8b,0x5e, - 0x14,0x02,0xc0,0xe1, 0x62,0xea,0xb6,0x76, 0x74,0x35,0x8b,0xc5, 0xcb,0x9d,0x0f,0x75, - 0x49,0x51,0x9f,0x83, 0x58,0x1d,0x2a,0x27, 0x39,0x6a,0xde,0x11, 0xd4,0x93,0x0e,0x91, - 0xde,0x64,0xef,0xec, 0xcb,0x6f,0xd7,0xe4, 0x1c,0xdc,0xbf,0xee, 0xf4,0xe5,0x1c,0x71, - 0xb5,0xee,0xd5,0xb6, 0xe9,0xf6,0x6f,0xef, 0x3b,0x95,0x15,0x12, 0xa1,0xfd,0x7b,0xd6, - 0x4f,0x0d,0x48,0x78, 0x03,0x34,0xb4,0x50, 0xfb,0x6a,0xe8,0x2c, 0x3d,0xcc,0xca,0x5e, - 0xe3,0xd7,0x01,0x1f, 0x43,0x66,0xae,0xde, 0xa4,0x37,0x76,0x8e, 0x06,0xbc,0x73,0xa4, - 0x34,0x57,0x46,0x40, 0xed,0x80,0x9d,0x55, 0x88,0x6c,0x84,0xb2, 0xa3,0x5d,0xd2,0x80, - 0x98,0x25,0x46,0x17, 0x72,0x71,0xad,0x6b, 0x6b,0xbc,0xd0,0x54, 0xc9,0xbc,0xe2,0x0d, - 0x06,0x5b,0x88,0x2d, 0xc3,0xef,0x2a,0x1f, 0xd7,0xd2,0xf9,0x29, 0x42,0x75,0x50,0x58, - 0x40,0xb4,0xfd,0x1d, 0x86,0x9b,0x06,0x0f, 0x61,0xfc,0x01,0x47, 0xd2,0x6a,0xf9,0x68, - 0x3c,0x96,0x95,0x58, 0xac,0xf2,0x10,0xb2, 0x0a,0x1d,0xdb,0x38, 0x21,0x39,0xc5,0x36, - 0x3f,0xf3,0x11,0xb7, 0x4f,0x78,0x31,0x14, 0x1b,0x80,0x3e,0xfd, 0xc5,0xee,0x92,0x83, - 0xf5,0x85,0xf2,0x69, 0xf6,0x60,0x05,0x4c, 0x60,0x1b,0x74,0x76, 0x71,0xad,0xc8,0x8a, - 0x55,0x99,0x8f,0x82, 0x8b,0xce,0x86,0x8c, 0x92,0x67,0x11,0xc6, 0xe0,0xac,0xd3,0xfb, - 0xcd,0x81,0x38,0xe7, 0xa7,0x79,0x0a,0xc2, 0xc6,0x96,0x5b,0x3b, 0xd3,0xfe,0x5e,0x03, - 0x9a,0xee,0xfd,0x97, 0x8d,0xdb,0x25,0x40, 0x54,0x84,0x19,0xcd, 0xa0,0xde,0xde,0x89, - 0xb1,0x7f,0x5b,0x05, 0x9c,0x1a,0x62,0x8e, 0xf9,0x21,0xd2,0x78, 0xfa,0x82,0xaf,0xed, - 0xfe,0x0e,0x84,0x34, 0x41,0x3a,0xee,0xf7, 0xf8,0xd0,0x85,0x90, 0x8f,0xe2,0x45,0x27, - 0x54,0x4f,0xb2,0xd7, 0x7b,0x7b,0x7c,0x33, 0xa2,0x0f,0xb9,0xc4, 0x9f,0x56,0x10,0x09, - 0x43,0xfb,0x6b,0xb0, 0x10,0xb3,0xd6,0x5c, 0x9b,0x6f,0xaf,0x78, 0xa1,0x5d,0xc5,0x5f, - 0x0a,0x62,0x22,0x3a, 0xfa,0x82,0x63,0xfb, 0x43,0xc4,0xec,0x49, 0xae,0xdf,0x62,0x62, - 0xf1,0x25,0xac,0x28, 0x71,0x44,0x93,0x10, 0x4b,0x67,0xd0,0xe6, 0x95,0xfd,0x6b,0x4e, - 0x72,0xf8,0xd8,0x44, 0xf1,0x3e,0x05,0x6b, 0x00,0xc0,0xc7,0x2a, 0x28,0xc1,0x84,0x6b, - 0xa1,0xfc,0x20,0x9b, 0xd5,0x88,0xa0,0x9a, 0x69,0xa0,0x3c,0x40, 0xff,0x9f,0x29,0xd8, - 0x78,0xec,0x36,0x41, 0xc9,0x93,0x00,0xef, 0x95,0xbb,0xe6,0x62, 0xb7,0x9e,0xff,0xc7, - 0xf4,0xa8,0x7b,0x82, 0x88,0x56,0xf9,0x93, 0xa9,0x3f,0x64,0x98, 0xc3,0xd9,0x24,0x33, - 0xcb,0x5c,0xef,0x76, 0xa6,0x68,0x05,0x33, 0x93,0xe2,0x39,0x5e, 0xd8,0x93,0x87,0x9b, - 0xc2,0x00,0xcc,0x01, 0x6f,0x30,0x02,0x44, 0xf3,0x95,0x01,0x89, 0xb4,0x10,0x52,0xc4, - 0xfe,0x39,0x68,0x21, 0xd4,0x10,0x90,0x91, 0xb0,0xc9,0x49,0xeb, 0x18,0x5a,0x85,0xdb, - 0x8b,0x2b,0x86,0x1a, 0x1d,0x35,0x40,0xf0, 0x0e,0xad,0xd2,0xc3, 0x2e,0x67,0x56,0xf9, - 0xab,0xa4,0x7a,0xff, 0x09,0x42,0x31,0xc4, 0xef,0xb9,0xc3,0xa0, 0x74,0xbd,0xe2,0xdc, - 0xbb,0xba,0x42,0xd2, 0x39,0x8e,0x1b,0x3c, 0x5a,0x6f,0x60,0x42, 0x75,0x82,0x86,0xd2, - 0x1b,0x9d,0x4d,0x7b, 0xef,0x77,0xb0,0x3b, 0x93,0x15,0xfa,0xbf, 0xf4,0x76,0xd3,0x78, - 0x65,0x6b,0xed,0x32, 0x3b,0x7d,0xd8,0x13, 0xdb,0xb4,0x3f,0x59, 0x37,0xaa,0xb6,0xb5, - 0xd4,0x68,0x82,0xfd, 0x66,0x89,0x1f,0xd2, 0x2e,0x57,0xef,0x54, 0xc1,0x29,0x34,0x00, - 0x00,0xc1,0x6a,0x31, 0xae,0x53,0x86,0xdf, 0x27,0x7a,0xea,0xb9, 0x79,0xfd,0x87,0x70, - 0x01,0xa5,0xff,0x62, 0xea,0xec,0x8e,0x45, 0xff,0x5c,0x47,0x72, 0x0c,0x57,0x85,0xca, - 0x10,0xf7,0xb0,0x91, 0x76,0xa9,0xc4,0x07, 0x19,0x2b,0x25,0xcb, 0xcb,0x47,0x89,0x1a, - 0xc9,0x9c,0xfb,0xd6, 0x90,0xfe,0x30,0x62, 0x95,0x37,0xac,0x9d, 0xc1,0x49,0x1f,0x9a, - 0x21,0x23,0x19,0xbd, 0x26,0xbf,0x11,0xec, 0xa8,0xa5,0xa2,0x52, 0x6b,0x8e,0x1f,0x22, - 0x7e,0x1c,0x98,0x57, 0x05,0x13,0xb5,0xb7, 0x97,0xc5,0xc1,0x97, 0x35,0x95,0xac,0x1a, - 0x18,0x23,0x22,0x78, 0x9f,0x8a,0xdc,0xf6, 0xc3,0xad,0x23,0x54, 0x15,0xbb,0xc6,0x10, - 0xff,0x88,0x0b,0xdb, 0x62,0x21,0xd3,0x5a, 0xde,0x36,0x55,0x59, 0xe7,0x4c,0xd4,0x59, - 0x8a,0x17,0xa7,0x51, 0x32,0xce,0xd3,0xf2, 0x12,0x39,0xa8,0xfe, 0x83,0x0a,0xb2,0x4a, - 0x0d,0x2b,0x70,0xb7, 0x74,0x44,0x1a,0x45, 0x4b,0xae,0xc7,0x61, 0xe8,0x8b,0xbc,0x59, - 0xa9,0xd2,0x08,0x1e, 0x9b,0x8f,0x63,0x44, 0xb5,0x4e,0xcc,0xbe, 0xf5,0x74,0x30,0x4c, - 0xcc,0x43,0x53,0xce, 0xfa,0xde,0xaf,0x58, 0x23,0xcb,0x33,0xee, 0xac,0x6c,0x4b,0x94, - 0x4a,0x68,0x1f,0x69, 0x14,0xb7,0x0a,0x55, 0xec,0x1b,0x01,0x34, 0xfd,0xd2,0x03,0x2b, - 0xa4,0x07,0x87,0x2e, 0x65,0xba,0x07,0xd6, 0xc6,0x49,0x37,0x13, 0x9e,0x9a,0x01,0xb1, - 0x86,0x27,0x2f,0x97, 0x9a,0x2e,0x72,0x6e, 0xe8,0x0e,0x30,0x04, 0xe3,0x4d,0xc5,0xd0, - 0xea,0xe0,0xcb,0x2c, 0x47,0xcc,0x8c,0xdc, 0xac,0x34,0x04,0x7f, 0xa1,0x78,0x1b,0x86, - 0xc5,0x9d,0x41,0x65, 0x39,0xa3,0xbd,0x80, 0x96,0x8e,0x8e,0xcc, 0xc2,0x4d,0xff,0x35, - 0x54,0xac,0x13,0x80, 0x19,0xd3,0x0a,0x40, 0xf5,0x50,0xfc,0x17, 0x93,0xe9,0xac,0x99, - 0x3b,0x03,0xad,0xee, 0xfc,0xd4,0xac,0xdc, 0x12,0xf0,0xa9,0xba, 0x5c,0xa2,0xa5,0x58, - 0xf6,0x3a,0xda,0xa5, 0xe7,0x4a,0xf0,0xc9, 0xf6,0xc7,0xb5,0x51, 0xe8,0x8a,0x7c,0xc2, - 0x34,0x75,0x35,0x82, 0x30,0x7c,0xc3,0x6a, 0x81,0xb1,0x5f,0x35, 0x30,0xe0,0x26,0xae, - 0xa7,0x7e,0x8b,0x99, 0xa9,0x4a,0x8f,0x44, 0xbd,0x6a,0x3a,0xe7, 0xf3,0xd6,0x6e,0xf8, - 0x82,0xf7,0xeb,0xfa, 0x32,0x3b,0x78,0xd3, 0x93,0xe7,0xd0,0xdb, 0xbf,0x43,0xae,0x55, - 0x89,0x9c,0x39,0xf3, 0x8a,0x61,0xa8,0xa6, 0x74,0x85,0x66,0x6c, 0x68,0x03,0x41,0x36, - 0xd8,0x34,0x66,0x7f, 0x31,0x87,0xb7,0x89, 0x99,0xf8,0xe1,0x69, 0xc3,0x76,0x91,0x56, - 0xe7,0xe8,0xd4,0xd5, 0x2f,0x21,0xf0,0xb2, 0x6d,0x9a,0x51,0x67, 0xf9,0x6b,0xb0,0xa8, - 0xff,0xee,0xbe,0x94, 0x8d,0x4e,0xa2,0x52, 0x9e,0x9c,0x94,0x38, 0x50,0x99,0x96,0x72, - 0x7a,0x04,0x47,0x19, 0x8b,0x46,0xba,0x93, 0x17,0xf3,0x78,0x78, 0x6e,0x77,0xba,0xd8, - 0x17,0xe0,0x93,0x6e, 0xd6,0x36,0x3f,0x06, 0xe3,0xd7,0x3f,0x64, 0x52,0x2e,0x18,0xe3, - 0xbe,0xeb,0xd8,0xaa, 0x7a,0x88,0x85,0x19, 0xf6,0x33,0x58,0x90, 0x55,0x1f,0xf7,0x3f, - 0x34,0xec,0x7d,0x47, 0x78,0x8f,0x1a,0x8b, 0xb5,0xdc,0x09,0xaf, 0x62,0x49,0x0f,0x6a, - 0x03,0x15,0x92,0x29, 0x9c,0x19,0x16,0x98, 0xf7,0x4e,0xa1,0x74, 0x33,0xa0,0xfb,0x4f, - 0x2a,0xa6,0x47,0xbf, 0x13,0xd8,0xd5,0x3c, 0xc3,0x9b,0xa5,0x5a, 0x05,0xd4,0x1f,0x6c, - 0x6a,0x7e,0x7b,0x9f, 0xa3,0x78,0x8f,0xcf, 0x6a,0xc4,0xaa,0x74, 0x68,0x6d,0xcf,0xfd, - 0x77,0xa8,0xcf,0x02, 0xed,0x41,0xae,0x92, 0x56,0x84,0x13,0x4e, 0xa1,0xc8,0x7f,0x86, - 0x46,0xdb,0xfc,0x07, 0xf5,0x7a,0xa1,0x6a, 0x4c,0xa1,0x29,0xa3, 0x74,0xce,0x4c,0x98, - 0xea,0x66,0xa7,0x3b, 0x5d,0x88,0x45,0xbd, 0x68,0x98,0x37,0x20, 0x68,0xb2,0x52,0xdf, - 0xd6,0xdc,0xa5,0xa5, 0x6f,0x83,0x1e,0x80, 0xd2,0x4e,0x03,0x65, 0xe2,0xd4,0x3c,0x32, - 0xd6,0xb2,0x02,0xe0, 0xc3,0x43,0xdb,0xb2, 0x22,0xb8,0x10,0x13, 0x92,0x14,0x32,0xe7, - 0xf9,0x28,0xe8,0xab, 0x35,0xda,0xf9,0xa3, 0x1f,0x1b,0x82,0xf1, 0xdf,0xce,0xc9,0x93, - 0x3b,0xdd,0x05,0x4f, 0x29,0xd6,0x4c,0x59, 0xce,0x2f,0x8a,0xf4, 0xc4,0x2c,0xb0,0xfa, - 0x05,0x9e,0xd4,0xb2, 0xc3,0x22,0x51,0x92, 0x36,0x82,0x23,0xdb, 0x57,0x84,0x8c,0x9d, - 0x3b,0x6b,0x77,0xf6, 0x52,0x50,0x11,0x49, 0xe4,0x2a,0xb2,0x21, 0xa5,0xef,0xaf,0x02, - 0xca,0xfd,0xb5,0x3a, 0x25,0x83,0x5d,0x03, 0x27,0x2c,0xa2,0xb3, 0x97,0xcd,0xf5,0x66, - 0x0c,0xe2,0x2c,0x8a, 0x9f,0x7f,0x08,0x3d, 0xea,0xef,0x3c,0xa8, 0x52,0xd7,0x48,0x7e, - 0x51,0xce,0x2c,0x3b, 0x14,0x36,0x27,0xb2, 0xf0,0x12,0x2e,0xf3, 0x10,0x0d,0x28,0x7c, - 0xec,0x6d,0x33,0xf0, 0xd7,0x8f,0xd4,0x90, 0xb5,0x5d,0x41,0x1d, 0x98,0xe9,0x22,0xa6, - 0x6e,0x38,0xbe,0xad, 0xfe,0x1e,0x94,0xa8, 0x3f,0x4a,0x17,0x98, 0x2c,0x6c,0xc0,0xe5, - 0x24,0x3f,0xa7,0x3e, 0x2b,0x2c,0xf7,0x85, 0xd0,0x1a,0x94,0xf0, 0x22,0x2a,0x87,0x6a, - 0x4e,0xd2,0xb4,0x98, 0xbe,0x4c,0x76,0x41, 0x99,0x75,0xa3,0x72, 0x14,0x32,0xd0,0x0a, - 0xa9,0xed,0xdc,0x9a, 0x62,0x5a,0x88,0x28, 0xce,0x6a,0x51,0x54, 0x2f,0xe3,0xbe,0x35, - 0xee,0xf0,0xfd,0xdc, 0xeb,0x3d,0x81,0xd6, 0xf8,0xe0,0x6c,0xfa, 0xa1,0x5d,0x33,0x31, - 0xd4,0xbc,0x0b,0xb9, 0x2e,0xf7,0xf5,0x5e, 0xe2,0xdb,0x72,0x5e, 0x62,0x51,0x26,0x6a, - 0x19,0xb1,0x3e,0xc4, 0x35,0xa6,0xc3,0xaf, 0xc7,0x7a,0x15,0x32, 0x95,0xd8,0x2e,0x5c, - 0xb6,0x8c,0x01,0xfb, 0xef,0x3a,0xe8,0x65, 0x09,0xd8,0x39,0x18, 0x63,0x40,0x15,0x38, - 0xca,0xa0,0x35,0x61, 0x80,0xa8,0xbf,0xec, 0x6b,0x7b,0x48,0xaf, 0x64,0x2b,0x60,0x2d, - 0xbc,0x9e,0xc6,0x0e, 0x59,0xb2,0xbc,0x16, 0x76,0x6d,0x90,0x93, 0x42,0x04,0x8b,0x13, - 0x6f,0xb2,0x8a,0x81, 0x79,0xce,0x89,0x0d, 0xd2,0xae,0xc2,0xa5, 0xbf,0xd2,0x0e,0xd2, - 0x34,0xd7,0x81,0xd4, 0x3b,0x2c,0xf7,0x9c, 0x76,0x0b,0xab,0x57, 0xc4,0x67,0x86,0x3a, - 0xeb,0x49,0x11,0x90, 0x09,0x59,0x51,0x3f, 0x1f,0xc6,0x49,0xbb, 0x73,0x2c,0x0a,0xda, - 0xc9,0x3a,0xb2,0x67, 0xe4,0x88,0x02,0xd6, 0xc5,0x84,0xeb,0x8f, 0x9b,0x49,0xe8,0x99, - 0x88,0x5b,0x80,0x74, 0x6a,0xdb,0x4f,0x8f, 0x5e,0xcc,0x1f,0x65, 0x12,0xf6,0x88,0x29, - 0xf5,0x90,0x47,0xb5, 0x92,0x9a,0xf5,0xe0, 0x68,0xb2,0xab,0x5c, 0x04,0x1e,0xe4,0x20, - 0xa5,0xd4,0x50,0x42, 0x3f,0xb5,0xde,0xcd, 0x47,0x7b,0x79,0xaf, 0x8d,0x5f,0x9b,0x0a, - 0xc3,0x8e,0xc7,0x5c, 0xb9,0xb9,0x17,0x93, 0x75,0x0e,0xeb,0x1b, 0xf4,0xdc,0x77,0x35, - 0x5a,0xfb,0xda,0xba, 0xb1,0xda,0x0d,0x30, 0x89,0x3f,0x8f,0x76, 0xc6,0x5f,0x5a,0x15, - 0x7c,0xd4,0xd0,0x81, 0xe4,0xc6,0xad,0xf8, 0x63,0xc4,0x66,0xe6, 0xc8,0x22,0x14,0x20, - 0x9e,0xe1,0xdb,0xb8, 0xfa,0x1b,0xee,0x62, 0xb6,0x38,0x22,0x3a, 0x91,0xef,0x63,0x2d, - 0x90,0x31,0x8e,0x94, 0x43,0xbe,0x79,0xe5, 0x22,0xac,0x6c,0x0f, 0x2d,0x56,0x6b,0xfa, - 0x1a,0x14,0xdb,0x6a, 0x55,0x1d,0x7a,0xde, 0xe2,0x4f,0x7d,0xa1, 0xbd,0xfb,0x4c,0xb2, - 0x84,0x94,0x1d,0x01, 0x7c,0x6b,0xa3,0x9d, 0xcd,0x1e,0x17,0x94, 0xa3,0x52,0xdc,0xe4, - 0x1c,0x66,0x7c,0x08, 0x82,0xeb,0x33,0x2f, 0x4e,0x2e,0x41,0x63, 0x0a,0xbf,0xf4,0xa3, - 0xf3,0xb3,0x38,0x98, 0xe2,0xd9,0x18,0xf8, 0x9e,0xca,0xca,0x7e, 0x67,0x6f,0xe1,0xfa, - 0x9c,0x42,0x66,0xbb, 0xe4,0xd0,0x1c,0x96, 0xa8,0xda,0x61,0xe2, 0x37,0x21,0x2f,0x59, - 0xbc,0x9e,0x6e,0xbf, 0x4c,0xce,0x11,0x57, 0x91,0xda,0xdb,0x28, 0x3f,0x33,0xa4,0xfd, - 0xe7,0x91,0x8e,0xc2, 0x00,0xce,0xa6,0xfc, 0x91,0xb4,0x5b,0xf7, 0x8d,0xaa,0xdd,0x14, - 0xc3,0x20,0x46,0x49, 0xb1,0x99,0x90,0x54, 0x93,0xbd,0x4f,0x34, 0x77,0x04,0x57,0x74, - 0x50,0x50,0x5f,0x9f, 0x33,0x93,0x1c,0xf8, 0x5c,0x76,0x16,0x69, 0x7b,0x8f,0xe5,0xef, - 0xc0,0x08,0x7d,0x7f, 0xff,0x74,0x2e,0x64, 0x13,0x81,0xe8,0x76, 0xdf,0xf3,0x54,0x30, - 0x1a,0xfd,0x61,0xa3, 0x7f,0x87,0x62,0x52, 0x39,0xe1,0x2a,0x98, 0xf0,0xdc,0xf2,0xc5, - 0x3c,0x50,0x39,0x22, 0xcb,0x39,0xe2,0xcc, 0x4e,0xfe,0x68,0x53, 0xdc,0xfa,0xd1,0xd6, - 0x15,0x1b,0xc7,0x3f, 0xe3,0xcb,0x76,0xd7, 0xd0,0xf7,0xb5,0x7d, 0x54,0xdb,0x32,0x3e, - 0xb9,0x2a,0x05,0x37, 0x56,0x18,0x30,0x89, 0x3a,0x31,0x55,0x10, 0x03,0x01,0xd9,0x86, - 0xc3,0xe6,0x41,0xf8, 0x3f,0xbb,0x82,0xe3, 0x85,0x5d,0xe1,0xbf, 0x1c,0xcb,0xa9,0xea, - 0x8a,0x3b,0xb9,0xed, 0x42,0xb4,0xfb,0x7f, 0x08,0xab,0x3b,0x36, 0xa3,0x74,0x12,0xcb, - 0x4b,0x1a,0xb0,0xd8, 0x96,0x3d,0xe2,0x5d, 0xec,0x55,0xea,0xdb, 0xb3,0xb1,0x1b,0xfc, - 0x8c,0x36,0x3d,0x3a, 0x4c,0x19,0x5b,0xc2, 0xe0,0xe1,0xaf,0x47, 0xe3,0x8b,0xe3,0x87, - 0x41,0xf1,0xb9,0xfc, 0xe1,0xe5,0x0b,0x75, 0x45,0xcc,0x08,0xba, 0x64,0xf9,0x1b,0xb4, - 0xc8,0xa2,0xf8,0x8f, 0xe8,0x49,0x83,0x8c, 0xc6,0x5a,0x19,0x11, 0xed,0x65,0x04,0xcb, - 0xf6,0xc3,0xe8,0x80, 0x7a,0x56,0x21,0xf4, 0xa9,0x8d,0x46,0xe8, 0xe9,0xe1,0x7d,0x54, - 0xb2,0x3a,0x20,0xd6, 0x1f,0xb2,0x0d,0xdd, 0xc0,0xf6,0xa6,0xa4, 0xb0,0x15,0x2e,0xd0, - 0xbc,0x64,0x9b,0xa9, 0xc7,0x44,0x7c,0xb0, 0x22,0x96,0x8f,0x07, 0xb2,0xa0,0x88,0xf0, - 0x42,0xa6,0xc0,0x4c, 0x30,0x2d,0x18,0x52, 0xd5,0x19,0x0e,0xa7, 0x8d,0x47,0x14,0xda, - 0xb6,0x89,0xd8,0x27, 0xa4,0x21,0xcf,0x70, 0x27,0xd3,0x79,0xa5, 0x7f,0xc3,0xd2,0xd4, - 0x07,0x9a,0x3a,0xab, 0x71,0xb7,0xa1,0x71, 0x20,0x2a,0xb4,0x45, 0x75,0x71,0xf9,0x5b, - 0xaa,0xe7,0x6e,0xe3, 0x61,0x95,0x25,0xe7, 0x81,0x70,0xd9,0x09, 0xfd,0x75,0xb0,0x2c, - 0x9a,0xce,0xcc,0x0e, 0x6c,0xac,0x4d,0x91, 0xb3,0xe7,0xbf,0xf8, 0xb1,0xd5,0x62,0x0f, - 0xe7,0xcb,0x57,0x35, 0x12,0xd4,0x7c,0x27, 0x33,0xc0,0x68,0x0c, 0xd5,0x63,0x84,0xee, - 0xcf,0x9c,0xac,0xef, 0xe3,0xb4,0x91,0xa6, 0x97,0x8a,0x82,0x99, 0x45,0xfd,0x4a,0x0d, - 0x06,0xd8,0xc9,0x35, 0x42,0x90,0x5a,0xc5, 0x3d,0xe1,0x53,0x97, 0x8d,0x20,0x62,0x35, - 0xa2,0x40,0x32,0xbd, 0x81,0xff,0xe8,0x91, 0xed,0xaa,0x4b,0x25, 0x0c,0x95,0x12,0x63, - 0x86,0xd3,0xbb,0xa2, 0x47,0xaa,0xa6,0xd3, 0xe3,0x21,0x8d,0x87, 0x88,0x0d,0xa4,0xe6, - 0x55,0xe3,0x3b,0x3c, 0xc6,0x82,0x65,0x33, 0xb4,0x43,0xfa,0x00, 0xf0,0x67,0xe5,0x84, - 0xe2,0x2e,0xd8,0x4c, 0x42,0xaf,0xeb,0x9c, 0xc4,0x92,0xbc,0x83, 0x7d,0x87,0x2b,0x3e, - 0xbd,0x1b,0x8c,0xea, 0x69,0x42,0x85,0xc6, 0xfe,0xce,0xec,0x21, 0xa3,0xe8,0x89,0xe1, - 0x72,0x2c,0x42,0xc9, 0xcb,0xc4,0x7e,0xf1, 0xe6,0x91,0x82,0x3a, 0xac,0x7b,0x81,0xf2, - 0xe4,0x9e,0x0a,0x44, 0xff,0xa8,0x88,0xa3, 0x00,0x5a,0x07,0xec, 0x5a,0x71,0x2d,0x49, - 0x0a,0x62,0x66,0x7f, 0x13,0xec,0x2a,0xa6, 0x2b,0x06,0x32,0x7e, 0x54,0x90,0x86,0xf9, - 0x8d,0xb6,0x6c,0x25, 0xdf,0x3d,0xa8,0x53, 0x6c,0x3d,0x31,0xc7, 0x6e,0xcd,0x84,0xaf, - 0x08,0x8b,0xad,0x1e, 0xd6,0x71,0x43,0xf2, 0x38,0xb4,0x42,0x8f, 0xc8,0x35,0xe6,0x5b, - 0x5a,0x92,0x80,0x0e, 0x35,0x52,0xe0,0x1d, 0x63,0x26,0x6e,0x10, 0x66,0x08,0xe3,0x92, - 0xc6,0xde,0x86,0x7f, 0x55,0x7d,0xbb,0xf1, 0xa0,0x78,0x90,0xf1, 0xd5,0xa7,0x26,0x80, - 0x77,0x73,0x3a,0x30, 0x31,0x5a,0xf0,0x72, 0x12,0xa9,0x6d,0xc7, 0xf0,0x84,0x75,0x08, - 0xd1,0xac,0x1d,0x71, 0x41,0xae,0xe5,0xc5, 0x75,0xd5,0x80,0xa5, 0x03,0xde,0xf7,0xf0, - 0xcb,0x64,0x0f,0x28, 0x33,0x94,0x62,0x00, 0x5c,0xae,0x5f,0x21, 0xa1,0x49,0x7c,0x48, - 0x3f,0x23,0xfd,0x8b, 0x78,0x86,0xd9,0x2b, 0x9d,0xc9,0x02,0x04, 0x93,0x1a,0x99,0xd5, - 0x26,0x66,0xa0,0x49, 0x0a,0x93,0xe4,0x5c, 0xbf,0x4c,0x84,0x9a, 0x09,0xf6,0xa3,0x40, - 0xd9,0x64,0xe8,0x73, 0xd1,0xac,0x40,0xae, 0xc0,0x67,0x18,0x5c, 0x7f,0xd0,0x89,0x3d, - 0x82,0xd1,0xa6,0xa2, 0xfc,0x6f,0xc4,0xeb, 0x8d,0x90,0xae,0xf6, 0xdf,0xce,0x65,0x67, - 0x95,0xa1,0xe8,0x34, 0xa8,0x2a,0xd4,0x51, 0xde,0xe0,0x33,0x66, 0x0c,0xe6,0x69,0x65, - 0x8f,0x90,0x68,0x17, 0x5d,0x1a,0x35,0xe4, 0x12,0x7b,0x22,0xab, 0x7e,0x58,0x72,0x45, - 0x9c,0x66,0xba,0x38, 0xab,0xff,0x75,0xf8, 0x76,0x0e,0xbf,0x4e, 0x9f,0xf4,0xf3,0x07, - 0xd7,0x88,0xc8,0x7a, 0x56,0x67,0xa3,0x57, 0xa8,0x43,0x19,0x7f, 0x67,0x23,0x1a,0x0e, - 0x66,0x65,0xad,0xd6, 0x7a,0xed,0x6c,0xdc, 0x95,0x95,0x95,0x17, 0x4f,0xb4,0x01,0x1e, - 0xfd,0x71,0x6f,0xea, 0xad,0x03,0xa1,0xa5, 0xb6,0x7f,0x50,0x7c, 0x1e,0x71,0x6a,0x50, - 0x9d,0x97,0xca,0x96, 0x4a,0xb0,0x20,0x37, 0x2f,0x60,0xab,0xbb, 0xa9,0x45,0xda,0x5d, - 0xd9,0xce,0xb6,0x36, 0x29,0x40,0xac,0x86, 0xc8,0x3a,0xb3,0xa9, 0x6f,0xfe,0xbf,0x9f, - 0xbd,0x87,0x94,0x08, 0x48,0x5c,0xac,0x4a, 0x7b,0x7d,0xa5,0x3f, 0x5e,0x47,0xe7,0x8b, - 0xdd,0xc2,0xb6,0x3f, 0x58,0x16,0xc5,0xc9, 0xab,0x57,0x07,0x25, 0x73,0xde,0xe0,0xd0, - 0xa1,0x41,0x06,0x59, 0x77,0xff,0x1b,0x92, 0x30,0xe9,0x32,0x6d, 0x1e,0x80,0x77,0x33, - 0x95,0x7d,0x33,0x5d, 0x0e,0xde,0x6c,0xa9, 0x0e,0x9c,0x38,0x27, 0x17,0x57,0x01,0x33, - 0x05,0x28,0x6a,0xac, 0x01,0x82,0x87,0x6a, 0x4f,0x57,0x4b,0xf8, 0x99,0x23,0x24,0xfe, - 0x0d,0x9d,0x3c,0x7f, 0x98,0xaf,0xaa,0xfe, 0xba,0xf7,0x08,0x70, 0x1c,0xd8,0xe4,0x01, - 0x13,0x32,0x85,0xc7, 0xaf,0x43,0xa8,0xf9, 0x24,0x70,0x31,0x51, 0x70,0xfe,0x98,0xf8, - 0x80,0x09,0x59,0x7b, 0xbd,0xf4,0x56,0x7f, 0x6e,0xca,0x42,0xf0, 0x7a,0xb2,0xef,0x54, - 0xb5,0x9d,0x8b,0x4a, 0x3f,0x56,0xa9,0x3d, 0xf4,0x02,0xb0,0x9e, 0xf2,0x0b,0xb0,0x59, - 0x93,0x7b,0x12,0x74, 0xc0,0xed,0xd9,0x7c, 0xf4,0x81,0x12,0x00, 0xa2,0xc0,0x87,0xbc, - 0xaa,0x2f,0x71,0x26, 0x5d,0x19,0xe9,0x97, 0x61,0xab,0xf8,0x88, 0xbf,0x40,0xd8,0x9a, - 0xc0,0x55,0x38,0x16, 0x69,0x99,0xd3,0xb6, 0x98,0x99,0x21,0xd0, 0x8c,0x81,0x07,0x12, - 0x71,0x6a,0xc9,0x70, 0xa3,0x65,0x46,0xcc, 0x59,0x56,0xd0,0xc5, 0x27,0x63,0x1a,0xf8, - 0x4c,0xab,0xa5,0xc5, 0xdc,0xd6,0x26,0x03, 0x44,0x39,0xfb,0x2f, 0xa0,0xac,0xd3,0xd2, - 0xed,0x12,0xb8,0x85, 0xf1,0xf5,0x16,0x36, 0xc6,0xbc,0xc5,0x6e, 0x33,0x8f,0xe7,0x46, - 0x15,0x6a,0x88,0x95, 0xe9,0x4e,0x97,0x6f, 0x10,0xc8,0x3f,0x09, 0xac,0xcd,0xff,0x81, - 0xf3,0x0d,0xe4,0x10, 0x2a,0x8d,0xa2,0x5c, 0xdf,0x84,0xf3,0xdc, 0x91,0x36,0x45,0xdf, - 0xd3,0x2b,0x24,0xf2, 0x54,0x72,0x29,0xc5, 0x38,0x9e,0x1b,0xd3, 0x99,0x34,0x08,0x4a, - 0x60,0xbd,0x4a,0x39, 0x2f,0xd4,0x10,0xde, 0x24,0x86,0xda,0x2a, 0xa2,0xf0,0x1d,0xd4, - 0xd1,0x7a,0xc5,0x4c, 0x9c,0x82,0x2e,0xb5, 0xfb,0xee,0x3e,0x07, 0x41,0xea,0x0d,0xe3, - 0x68,0x15,0x20,0xf4, 0xaf,0xa5,0xde,0xd8, 0x83,0x4a,0xbb,0x3b, 0xb6,0x39,0xe3,0x79, - 0x47,0x44,0x16,0x7b, 0xfa,0x90,0x49,0x18, 0x26,0x8e,0x22,0x51, 0xcb,0x27,0x5a,0x62, - 0x38,0x2f,0x32,0x5b, 0xf1,0xd4,0xdb,0x59, 0xa7,0x14,0x08,0xab, 0x49,0x2e,0x61,0x11, - 0x3b,0x86,0xa5,0x53, 0xbb,0x22,0xa4,0x3f, 0x49,0x98,0x75,0xeb, 0xde,0xb8,0x11,0x12, - 0x8d,0x0f,0x9c,0x43, 0x2e,0x53,0xef,0x6a, 0x7e,0xcb,0x84,0xf3, 0xbe,0x72,0x43,0xae, - 0xdc,0x5e,0x1b,0x8e, 0xec,0xaf,0xb1,0x9a, 0x61,0xde,0x3b,0xb4, 0xda,0x78,0x4c,0x5a, - 0x5a,0xe3,0xf1,0xf8, 0x38,0xc7,0x89,0x71, 0x82,0x00,0xbb,0x4f, 0xd5,0xa4,0x66,0xd5, - 0x9f,0xe1,0xf7,0x0d, 0x0c,0xc7,0x8c,0xef, 0x10,0xd5,0x39,0x4d, 0xb2,0x0c,0xfa,0xba, - 0x0b,0x8d,0xed,0x92, 0x8e,0xb8,0x0d,0x39, 0x00,0x48,0x2f,0x1d, 0xec,0x6c,0x5e,0x10, - 0x88,0x09,0x8c,0xe0, 0x6f,0x4b,0xbb,0x1d, 0x3a,0xb0,0xac,0x75, 0x22,0x6a,0x08,0x2c, - 0xba,0xde,0xa5,0xe4, 0xc5,0x4c,0xc0,0x46, 0x44,0xe3,0x23,0x9b, 0x8e,0x55,0xcd,0xf8, - 0xf8,0x15,0xca,0x5f, 0xd9,0x3f,0x10,0xa3, 0xa9,0xc2,0xb4,0x73, 0x4d,0x33,0x4a,0x2a, - 0x97,0xee,0xa4,0x79, 0xf6,0xc7,0xf3,0xa0, 0xfd,0xbc,0xf8,0x59, 0x41,0x1b,0x4c,0x13, - 0xdc,0x50,0x06,0xca, 0xff,0x98,0xf7,0x0c, 0x52,0xcf,0x8a,0xe7, 0x5b,0xb8,0x6a,0xdb, - 0x3e,0xda,0x69,0xe6, 0xf3,0x0e,0x4f,0x40, 0xf6,0x0a,0x7c,0xcb, 0xb1,0x78,0xf5,0xf8, - 0x3e,0xe5,0xf7,0xb1, 0x41,0x5c,0xbb,0x9c, 0x2f,0x12,0xf1,0x1e, 0x29,0xb0,0xb2,0x0c, - 0xf3,0x4b,0x31,0x69, 0x51,0xad,0x46,0xab, 0x3a,0xa1,0xf4,0xa3, 0x00,0x18,0x6d,0xd5, - 0x33,0xa2,0xdc,0x9e, 0x00,0x4e,0x12,0xfc, 0xd5,0xf7,0xff,0xac, 0xe3,0xec,0x91,0xd0, - 0x75,0xc5,0x81,0x4c, 0xc2,0x81,0x50,0x44, 0xec,0xe9,0x80,0x56, 0x90,0xb7,0xa4,0x19, - 0x11,0x6a,0xf4,0xd6, 0xcb,0x28,0xfb,0x52, 0x98,0x10,0xec,0xda, 0x3f,0xf7,0x44,0x11, - 0x73,0x63,0x84,0x48, 0xde,0x7c,0xd7,0x46, 0xef,0x1c,0x88,0x91, 0x51,0x94,0xba,0x39, - 0xa3,0x9a,0xad,0x5c, 0xa2,0x43,0x6b,0x61, 0x48,0x5a,0xf9,0xa0, 0x4d,0xfb,0xc2,0xcb, - 0xd4,0xd1,0x92,0xdc, 0xbb,0x85,0x3c,0xfc, 0x87,0xde,0x8d,0x3f, 0xfa,0x58,0xb7,0x3f, - 0xb9,0x56,0xb7,0x6f, 0x8c,0x7f,0x9b,0x53, 0x2d,0x7b,0xc5,0xde, 0xb6,0xc3,0x5b,0xf7, - 0xfb,0x42,0x62,0xeb, 0xfc,0xc8,0x5c,0xb1, 0xb2,0x40,0x90,0xcc, 0xa6,0x43,0x49,0x5f, - 0xc8,0x56,0x7a,0xd7, 0x49,0x18,0x00,0x56, 0x46,0xdb,0xb0,0xaf, 0x6c,0xb1,0x27,0x72, - 0x5a,0xf7,0xea,0x7b, 0x7a,0x95,0x02,0x5c, 0x45,0x0f,0xb3,0x15, 0xbc,0xa9,0x7e,0x24, - 0x5d,0x3c,0x93,0xda, 0xbf,0x48,0xa3,0xab, 0x15,0x67,0x2b,0x47, 0xe4,0x79,0xe2,0x92, - 0x05,0x82,0x49,0x29, 0xaa,0x0a,0x55,0x9d, 0xb0,0x4a,0x1a,0x2a, 0xcd,0xa2,0x8d,0xd1, - 0xb8,0x35,0x9a,0xbd, 0x86,0x59,0xd2,0x0e, 0x19,0x60,0xad,0xeb, 0x46,0x06,0x4d,0xc5, - 0x10,0x35,0xdc,0x48, 0x15,0xe7,0x55,0x5f, 0x7b,0x30,0x13,0x4c, 0x07,0x58,0xf0,0x03, - 0xf1,0xa4,0x3b,0x28, 0x34,0x91,0xd8,0xfe, 0xd2,0xc1,0xb6,0x37, 0xa9,0x1d,0x3c,0xb1, - 0x48,0x91,0xe0,0x03, 0x38,0x91,0xbe,0x0a, 0x60,0xed,0x3a,0xc8, 0xef,0x71,0xc0,0xdd, - 0x1c,0xdf,0xae,0x6d, 0x63,0xfa,0x50,0xf8, 0x68,0xa9,0x7a,0x64, 0x71,0x14,0x1e,0x82, - 0xef,0x56,0xb7,0x73, 0x8f,0x61,0x22,0x2a, 0xb0,0xe1,0xf4,0xd0, 0xa0,0x9f,0x00,0x19, - 0x2c,0x66,0xc7,0xdb, 0x44,0x5b,0xab,0xc5, 0x37,0x3f,0xd2,0xa5, 0x24,0x1f,0x02,0xb2, - 0x0e,0x72,0xbf,0xec, 0xe1,0xfe,0x32,0xb3, 0xad,0xa0,0x7c,0x19, 0x2f,0xec,0xf6,0x85, - 0x38,0x75,0x94,0x4e, 0x90,0x0e,0xa3,0xfa, 0x7e,0xaf,0x3b,0xeb, 0xd9,0x48,0xd4,0x5b, - 0x54,0x1c,0xa2,0xc2, 0x6c,0x90,0xbf,0x93, 0x7f,0x64,0xa0,0x53, 0xf2,0x8c,0xb8,0x77, - 0x67,0xbd,0x15,0x9b, 0x1d,0xcd,0x8a,0xdf, 0xea,0x13,0x99,0xa6, 0x59,0x91,0x54,0xba, - 0x4d,0x8e,0x45,0xe7, 0x67,0x86,0x52,0xcc, 0x6b,0xbe,0xe9,0xbb, 0xe3,0x05,0x4a,0x15, - 0xb7,0x2c,0x2a,0x4d, 0x2d,0xb9,0xc3,0xb9, 0x2e,0x40,0xf6,0x72, 0xc8,0x96,0xa8,0x17, - 0x0b,0xbc,0xd4,0xe5, 0x3d,0x14,0xfa,0xdf, 0xf3,0x4b,0x50,0x8f, 0xe5,0x97,0x22,0x1c, - 0xcb,0xc0,0x6c,0xc1, 0x21,0xb9,0xb0,0xe4, 0x9c,0xcf,0x9c,0xf3, 0xd9,0xde,0x8d,0xda, - 0x02,0x14,0xd3,0x60, 0xbc,0x98,0x8b,0xc7, 0x3d,0xa6,0xf6,0x1a, 0xf5,0x71,0x23,0xd4, - 0xf6,0x5c,0xb8,0x51, 0xf5,0xae,0x8b,0x40, 0x4d,0x86,0x5b,0x59, 0x40,0x0a,0xfa,0xfa, - 0x71,0xa4,0xd9,0x40, 0x08,0x4a,0xc2,0xac, 0x3b,0x86,0x1b,0x51, 0x43,0xf8,0x1a,0x0a, - 0x35,0x69,0x18,0x3b, 0xaa,0x08,0x4a,0xee, 0x01,0x42,0xfc,0xc3, 0x08,0x11,0xb2,0x8e, - 0x49,0xda,0x84,0x6e, 0x8c,0xac,0xc7,0xa1, 0x7e,0xf1,0xfb,0x79, 0x73,0x26,0xb4,0xf6, - 0x48,0x66,0xd1,0xd6, 0x71,0x99,0xbd,0x8c, 0x3d,0x98,0xd5,0x75, 0xe3,0x5f,0x09,0x43, - 0x77,0xb5,0x09,0x0d, 0xbf,0x7a,0x48,0x97, 0xa1,0x7e,0x0b,0xb3, 0xa9,0x22,0xa7,0x93, - 0x3b,0xfb,0x18,0xe6, 0xa4,0xd5,0xec,0x54, 0xc1,0x57,0x62,0xec, 0x3c,0xca,0x75,0x28, - 0xe1,0xed,0x05,0x10, 0x5f,0xec,0x59,0xc9, 0x5d,0xf3,0xcf,0x8b, 0x79,0x28,0x4c,0x9c, - 0x0b,0x73,0xc7,0x93, 0x02,0x71,0x73,0xe5, 0x50,0xd0,0xd4,0x72, 0x6f,0xe0,0x90,0xf6, - 0xb8,0x25,0x29,0x53, 0x4c,0xca,0x65,0x85, 0xf6,0x1a,0xf5,0x73, 0x23,0x3b,0x59,0xca, - 0x43,0xb0,0xa6,0x8d, 0x21,0x9b,0x89,0x3b, 0xa3,0xbd,0x01,0xe9, 0xe0,0x4d,0x84,0xe5, - 0x8f,0xe1,0x50,0x13, 0x6e,0xa0,0x23,0x25, 0xf8,0x1b,0x2d,0x20, 0xf4,0x1d,0x9f,0xe3, - 0x65,0xe2,0x8a,0x56, 0x7f,0x43,0xe0,0x88, 0x5b,0x35,0x60,0xae, 0xf9,0x21,0x55,0x7d, - 0xb5,0x81,0x9e,0x47, 0x22,0x35,0x65,0x24, 0x9d,0xc9,0x3e,0x3e, 0xee,0x5e,0xe8,0xff, - 0x1b,0x04,0xe8,0xec, 0xbe,0x8f,0xcf,0x9b, 0x57,0x92,0x00,0x2f, 0x47,0xf5,0x5e,0xa7, - 0x5a,0x1d,0x23,0x30, 0x46,0xe7,0x0b,0x3c, 0x21,0xf6,0xa7,0xcb, 0x89,0xa1,0x97,0xc8, - 0xd9,0xf8,0xc1,0x62, 0x46,0xfd,0xfd,0xb2, 0x57,0x1f,0x23,0x45, 0xe4,0xc4,0x39,0xd4, - 0xc9,0xf5,0xfd,0x3a, 0x03,0x3d,0xab,0x31, 0x15,0xe6,0xae,0x1b, 0x94,0xad,0x0f,0xc0, - 0xf6,0x1e,0x5b,0x5e, 0x4c,0xa1,0xe9,0xf7, 0x13,0xd5,0xd1,0x8e, 0x39,0xf4,0x16,0xfc, - 0xbc,0xdc,0x3a,0x4e, 0x8d,0x92,0x81,0x7c, 0x31,0xa7,0x62,0x62, 0x2a,0xe8,0x89,0xa6, - 0xef,0x61,0xbc,0xe2, 0x2b,0x57,0x65,0xb8, 0x06,0x38,0xe8,0xac, 0xad,0x1b,0x36,0x7a, - 0xb5,0xa9,0x74,0x18, 0x11,0xb5,0x5c,0x1b, 0x26,0x09,0xc2,0x76, 0xb8,0x92,0xe9,0xd8, - 0x56,0x3d,0x7f,0x7c, 0x07,0x3b,0xe6,0x09, 0xd0,0xb6,0x64,0xaf, 0x47,0xcb,0x5c,0xa5, - 0xb4,0xec,0x37,0x79, 0xb4,0xbc,0x50,0x7f, 0xb7,0x6c,0x17,0x0e, 0x8e,0x12,0xdb,0x21, - 0x45,0x90,0x35,0xab, 0x4e,0x07,0x8c,0x4d, 0x4e,0x35,0xc6,0x78, 0xd1,0xdc,0x98,0x37, - 0x15,0x1a,0x7e,0x4b, 0xf1,0x0e,0x52,0x2c, 0xe5,0x31,0x32,0x21, 0x72,0x8d,0x5b,0x61, - 0x6c,0xdf,0x3e,0xb1, 0x04,0x54,0x9d,0x15, 0x13,0xf5,0x83,0x5a, 0xeb,0x4c,0x4c,0xd9, - 0x75,0xae,0x5c,0xad, 0x42,0x5a,0x93,0xb2, 0x6a,0x7d,0xab,0x6c, 0xdc,0x97,0xec,0xe2, - 0x4d,0x78,0x76,0x51, 0x70,0xac,0x74,0xd1, 0x3f,0x17,0x01,0xb2, 0xe8,0x01,0xd4,0xd3, - 0x24,0x57,0xd0,0x9f, 0x7f,0x9c,0x2e,0x3a, 0x35,0xa8,0x01,0xc2, 0xcd,0x64,0xcc,0xbf, - 0x41,0x40,0x01,0xa8, 0x75,0xc3,0x1d,0xa1, 0x28,0xd6,0xf2,0x7e, 0x23,0xd6,0x7a,0x2c, - 0x04,0x89,0x80,0x60, 0x70,0x07,0xe0,0x63, 0xf1,0x26,0x88,0x3a, 0xc0,0x97,0xc2,0xe4, - 0x63,0x8d,0xcb,0xe4, 0x67,0x90,0xf6,0x46, 0x34,0xf8,0x44,0x2a, 0x0d,0x88,0xd4,0xc2, - 0x0b,0x2f,0x6f,0x95, 0x0f,0x8a,0x3f,0x43, 0x6c,0x62,0x01,0xfd, 0x9f,0x05,0xc8,0x61, - 0x6e,0xe1,0xc6,0x97, 0x3c,0x63,0xb3,0x3e, 0xc8,0xb9,0xa7,0x4f, 0x17,0x70,0x1d,0xec, - 0x12,0xf2,0x6e,0xd0, 0xe2,0xc8,0x1d,0x4e, 0x98,0x45,0xa4,0xc6, 0x3d,0x17,0xb7,0x63, - 0xa6,0xf7,0x9a,0x06, 0x8a,0x01,0x8a,0x60, 0x8a,0x90,0xe1,0x3a, 0x8f,0xf0,0x9d,0xf0, - 0xc2,0x8b,0xdf,0xcb, 0x1c,0x11,0x01,0xd3, 0x39,0xdd,0xec,0xe9, 0x58,0x9b,0xc4,0xb9, - 0x31,0x32,0x4f,0x5b, 0x04,0x33,0x02,0xe7, 0x3b,0x06,0xd6,0xd0, 0x97,0x99,0xa9,0x9f, - 0xb9,0x1b,0x65,0x80, 0xa7,0x6d,0x82,0x3d, 0xf3,0xb7,0x4a,0x5e, 0x35,0x6b,0x5f,0x02, - 0xce,0x45,0xf9,0x27, 0xca,0xe7,0xa2,0x04, 0x0e,0xdf,0x14,0x18, 0xa5,0xed,0x9b,0x26, - 0xf1,0x12,0xa3,0x6f, 0xb9,0x93,0x83,0xd8, 0xd3,0x7b,0x81,0xfe, 0xf6,0x0e,0x73,0xf6, - 0x9d,0x2f,0x86,0x70, 0x6f,0x36,0x22,0x7a, 0x01,0x68,0xdf,0x0d, 0x15,0x86,0x2a,0x63, - 0xfe,0xec,0xf9,0xc6, 0x74,0x94,0xe1,0x58, 0x02,0x57,0x7c,0x6c, 0x4a,0x4c,0xae,0xf8, - 0xc1,0xa1,0x93,0x5a, 0xc1,0xa3,0xb5,0xae, 0x36,0xb9,0x2a,0x47, 0x99,0xb8,0xd5,0x8e, - 0x72,0x98,0x34,0xee, 0x03,0x7c,0x5c,0x3a, 0xa8,0x2a,0xcb,0xfd, 0x65,0x52,0xc0,0x95, - 0x5b,0x61,0xf2,0x63, 0xb5,0x42,0xfe,0xd8, 0x8a,0x29,0x17,0x67, 0x2d,0xa6,0x61,0x07, - 0xa5,0xf1,0xd6,0xf9, 0x4e,0x2d,0xbe,0xba, 0xf7,0x27,0x0b,0xe2, 0x61,0xee,0x88,0x52, - 0x79,0x02,0x8e,0xaf, 0x1b,0x89,0x8d,0x8e, 0xb8,0x0f,0xbc,0x98, 0xc7,0xfd,0x46,0xa6, - 0xae,0x1f,0x11,0x99, 0x2d,0x35,0xe5,0xa5, 0x43,0xbe,0xaa,0xd4, 0x6d,0x06,0x68,0x59, - 0x17,0xd2,0x8a,0xd1, 0xb4,0x08,0x41,0x84, 0xe3,0xe6,0x0c,0x2c, 0x5d,0x71,0x27,0xc7, - 0x2d,0x52,0xdc,0xe2, 0xa4,0x84,0x0e,0x54, 0xef,0x72,0x33,0xcd, 0x6e,0x03,0xd9,0xab, - 0x2c,0x9a,0x2f,0x51, 0x67,0x43,0x98,0xa6, 0x72,0x86,0x40,0x15, 0x35,0x6b,0x9b,0x92, - 0x6c,0xa0,0x45,0x5b, 0xd9,0x0c,0x64,0x62, 0xf6,0xad,0x09,0x50, 0x55,0xd3,0xcf,0x2d, - 0x08,0xf2,0x25,0x2d, 0xfc,0xb9,0xbe,0x85, 0x47,0xd4,0x7e,0xd4, 0xa5,0xda,0xce,0x6b, - 0x66,0x2d,0x04,0x68, 0x7b,0xe3,0x57,0xa2, 0x1d,0x90,0x74,0x24, 0x49,0x28,0xf6,0x60, - 0x01,0x8c,0xe5,0xa5, 0x3b,0x97,0xcd,0xde, 0x18,0x58,0x3e,0x95, 0xfe,0x1f,0x0f,0xcf, - 0xf8,0x6b,0x81,0x15, 0x7f,0xe3,0x49,0x8f, 0xe0,0xe6,0xf8,0x0a, 0xe6,0x33,0x67,0x3f, - 0x6e,0xec,0x5e,0xa5, 0xcf,0x1a,0x85,0x00, 0x94,0xfc,0xb7,0x93, 0xae,0x3b,0x5f,0x4e, - 0x8d,0xa7,0xcf,0x79, 0xae,0x75,0x1c,0xcb, 0xca,0x92,0x32,0x57, 0xf2,0xe3,0x8b,0x62, - 0xb4,0xa4,0xc9,0x8a, 0xc6,0x9c,0x69,0x9e, 0x90,0x75,0x1f,0x32, 0x8c,0x84,0xfd,0x93, - 0xeb,0xb2,0xf8,0xdf, 0xc0,0x10,0xf6,0x13, 0xa6,0x88,0x8a,0x81, 0x7a,0x95,0x7c,0xc3, - 0x30,0xad,0x58,0xda, 0x8c,0x8d,0x2d,0xd8, 0x14,0x9f,0xad,0x50, 0xe9,0x81,0x73,0xe4, - 0x4d,0xf9,0x7e,0xdd, 0xf2,0x55,0xa4,0x01, 0x24,0x2b,0x4e,0x69, 0x53,0xd6,0x98,0x24, - 0xf9,0x43,0x09,0xa7, 0x21,0x1a,0xc0,0x8b, 0x16,0xcc,0x7e,0x78, 0x6d,0x8d,0x77,0xcf, - 0x47,0x50,0xa1,0x79, 0x0a,0xd5,0xa9,0x8e, 0x13,0xc5,0xa1,0x59, 0x00,0x80,0x2a,0xf0, - 0xcf,0x20,0x74,0xba, 0x4b,0xb3,0x20,0x79, 0xee,0xd3,0x19,0x60, 0xc1,0x14,0x60,0xdc, - 0xb0,0xcf,0x28,0x4a, 0xc8,0x88,0x10,0xda, 0x2e,0xfe,0x55,0x95, 0x75,0xb5,0x06,0x14, - 0x6b,0x81,0x5b,0xb5, 0xbf,0x00,0x41,0xbc, 0xb8,0x95,0x9a,0x0c, 0x2a,0x5f,0x00,0x01, - 0x91,0x9a,0x13,0x81, 0x06,0xd4,0x7e,0x64, 0x78,0x85,0xa7,0x70, 0x40,0x0d,0xf4,0xa0, - 0xf5,0xbb,0x96,0x9a, 0x66,0xcc,0x07,0x05, 0x69,0xab,0xf2,0x22, 0xed,0xe1,0x60,0x68, - 0x48,0xb2,0xb8,0x09, 0xbf,0xf5,0x29,0xeb, 0xa2,0x13,0x44,0x50, 0xc1,0x43,0x3a,0xd3, - 0x7c,0xa3,0xf0,0xa2, 0xb6,0xd3,0xdc,0x55, 0xee,0x88,0xe6,0xfd, 0x2b,0xd3,0x11,0xc6, - 0x78,0xe7,0x2f,0xb5, 0x3a,0xf7,0x9e,0xc8, 0x61,0xb8,0xb5,0x14, 0x5b,0xaf,0xd5,0x19, - 0x98,0x42,0x74,0xaf, 0x08,0x59,0xbc,0x8d, 0x20,0x07,0x67,0x74, 0xf1,0x96,0xf9,0x93, - 0x78,0x08,0x24,0x9c, 0x59,0x19,0x1e,0xcf, 0x0c,0xe3,0xd0,0x15, 0x78,0x39,0x34,0xe2, - 0xd1,0x90,0x60,0xc4, 0x73,0x82,0xc0,0x23, 0x4b,0xb5,0x1e,0xad, 0x0c,0xd2,0x20,0x02, - 0xe8,0x8b,0x5a,0x28, 0x7f,0x82,0xf3,0x9e, 0x79,0xcf,0x6b,0x6c, 0x81,0x4a,0xd3,0x9b, - 0x3e,0x75,0xf0,0xf6, 0x1c,0x41,0x8e,0x06, 0x5e,0xf5,0xce,0xe0, 0x24,0xaa,0x73,0x39, - 0x97,0x28,0x4b,0x1d, 0x36,0xf8,0x57,0xd7, 0x21,0xac,0x8b,0xf1, 0xa8,0x0b,0xdb,0x85, - 0x76,0xaf,0x83,0xe5, 0x50,0x6c,0x60,0x2f, 0x7b,0xa7,0x9b,0x5f, 0xab,0xf5,0x9e,0x21, - 0x1c,0x54,0x7c,0x77, 0x9a,0xbb,0xe7,0x58, 0x3a,0x2d,0x68,0xa3, 0x89,0x04,0x40,0xa4, - 0x95,0xa4,0xb1,0x48, 0x24,0x18,0xa3,0x8f, 0x5a,0xcd,0x23,0x1b, 0xe8,0x2d,0x5e,0xdf, - 0x4d,0x39,0xda,0x25, 0x04,0xc2,0x3b,0xeb, 0x76,0xa9,0xb3,0xe3, 0x3d,0x7b,0xcf,0x96, - 0xa8,0x7d,0x16,0x04, 0x38,0xcf,0x40,0x34, 0x78,0x81,0x2e,0xca, 0xa7,0x52,0x57,0x82, - 0x65,0xcd,0x6b,0x63, 0x1b,0xd4,0x7d,0x8f, 0x7a,0x32,0x63,0x4d, 0xb2,0x93,0x5b,0x20, - 0x97,0x15,0x32,0x6e, 0x20,0x3f,0x6e,0x41, 0x9a,0x84,0x6b,0x01, 0xa2,0x64,0x3b,0x9e, - 0xba,0xc7,0xcd,0x91, 0xa2,0xb6,0x92,0x6d, 0xd9,0xa1,0x0e,0x8a, 0x7f,0x87,0xeb,0xe3, - 0xcd,0x51,0x90,0x81, 0x28,0xfc,0x8c,0x1b, 0x95,0x10,0xd9,0x91, 0x44,0x83,0x0e,0xa5, - 0x3e,0x64,0x27,0x74, 0xbc,0x87,0x98,0x9f, 0x1b,0x12,0x20,0x87, 0x3d,0x8e,0xca,0x59, - 0xcb,0x36,0xab,0x54, 0x98,0x27,0x1b,0x0d, 0xd6,0x45,0x86,0x26, 0x9b,0x19,0x84,0x92, - 0x52,0xed,0x2b,0x41, 0x30,0xb5,0x85,0xbc, 0x89,0x5f,0x12,0x99, 0x72,0x67,0x1a,0xb9, - 0x03,0x93,0x38,0x3e, 0x20,0xce,0x3e,0x2e, 0xb1,0xf4,0xf5,0x80, 0x38,0xf0,0x1e,0xd1, - 0x5d,0xe5,0x3c,0xf1, 0xe9,0xfb,0x1e,0xbe, 0x08,0xfd,0x05,0x29, 0xd2,0xbf,0x05,0x9c, - 0xe4,0xf3,0x87,0x21, 0x9a,0x67,0xfb,0x9e, 0x45,0x22,0x37,0x91, 0x17,0x29,0x85,0xa2, - 0x77,0xdd,0x78,0x39, 0x3b,0xe4,0x5e,0x9e, 0x13,0xca,0x56,0x59, 0xb7,0xf4,0xcd,0x25, - 0xba,0x65,0xfe,0x8b, 0x00,0xc0,0xc8,0xb5, 0x64,0xa5,0x90,0x09, 0x98,0x4c,0xcb,0x04, - 0x88,0xc6,0xb9,0xa2, 0x77,0x60,0xf0,0x3d, 0x32,0x29,0xea,0x07, 0x0e,0x9f,0xda,0x55, - 0xde,0x92,0x7d,0x0e, 0x87,0x0f,0x4a,0x14, 0x2d,0xef,0x55,0x92, 0x28,0xb6,0x95,0xa8, - 0x13,0x80,0xbe,0x3b, 0x71,0x17,0xac,0xc4, 0x16,0x1f,0x2a,0x6d, 0x1c,0x93,0x3a,0x73, - 0x82,0xa8,0x4b,0x6c, 0x7c,0x52,0x87,0xce, 0x9f,0xbd,0x5c,0xf5, 0x94,0xef,0xce,0x98, - 0xbe,0x78,0x88,0xe9, 0xd4,0xc7,0xf7,0xa9, 0x36,0x3f,0xad,0xa3, 0x94,0x36,0xee,0x6f, - 0xb9,0xeb,0x50,0xd2, 0xb3,0x76,0x5b,0xc6, 0xb6,0xf6,0xf5,0x7a, 0x8d,0x57,0x15,0xe7, - 0xd2,0xf6,0x97,0x37, 0xc1,0xb6,0x16,0x4a, 0x9b,0x48,0xae,0x84, 0x09,0x91,0x13,0x5c, - 0xa8,0x55,0xeb,0x89, 0xb1,0xdd,0x22,0xed, 0x5e,0x9e,0x05,0x20, 0x6c,0x25,0x4e,0x97, - 0xd3,0xf5,0x09,0xb5, 0xa5,0xf4,0xb4,0x91, 0x93,0x35,0x10,0xe1, 0x5a,0xbd,0x5f,0xbd, - 0xce,0xc5,0x06,0xe4, 0x2f,0x6a,0x4d,0x34, 0x6e,0x39,0x73,0xcf, 0x7f,0x4e,0x64,0xa8, - 0xb1,0x84,0x76,0x6b, 0xef,0x4e,0xf5,0xe0, 0x22,0x4b,0xc8,0x30, 0x10,0xbd,0xa0,0xe4, - 0x09,0x17,0x99,0x7e, 0x73,0xd1,0x79,0xa7, 0x61,0x82,0xfe,0xd1, 0xde,0x8d,0x12,0xdd, - 0x0a,0x6e,0xf5,0x8e, 0xdb,0xd3,0x2e,0x51, 0x98,0x21,0x0b,0x9d, 0xd8,0x25,0xe5,0x4c, - 0x7c,0xdf,0x36,0x41, 0xde,0xf9,0x54,0xb8, 0x94,0x80,0xed,0xa3, 0xf3,0x51,0xfd,0x97, - 0xb6,0x72,0x5a,0x2f, 0x8b,0xdd,0xe6,0x40, 0xf7,0xbf,0x1c,0x94, 0xd1,0x9d,0xfe,0x2f, - 0x57,0x6d,0x02,0x13, 0x10,0x0b,0xe7,0xc9, 0x18,0x25,0xf0,0x24, 0x08,0x8f,0x59,0x14, - 0x8b,0xfa,0x27,0x54, 0x93,0x79,0xfe,0x0c, 0x56,0xa8,0xa6,0x08, 0x0f,0x4c,0xac,0xdb, - 0x4a,0x20,0x05,0xf3, 0x41,0x2d,0x07,0x6e, 0x9e,0x82,0x2a,0x9f, 0x4c,0x52,0xc6,0x42, - 0x2c,0xe2,0x89,0x2a, 0x05,0x3a,0xd1,0xa4, 0xdb,0x3d,0xa1,0x78, 0x64,0xaa,0x04,0xcb, - 0xae,0x74,0x02,0x8f, 0x0d,0x0c,0xda,0xc4, 0xb8,0x56,0x25,0xc2, 0xce,0x8c,0xb0,0xcb, - 0xf7,0xf4,0x1c,0xc1, 0x65,0x00,0xfb,0xd5, 0x7b,0x2d,0xb7,0x8a, 0x24,0x52,0x76,0xc4, - 0x30,0x72,0x56,0xf0, 0x9d,0x26,0x4e,0x13, 0xf9,0x1d,0x09,0x85, 0x6b,0x16,0x10,0x29, - 0x51,0xec,0x13,0xe0, 0xfe,0xd2,0x78,0x33, 0x10,0xe1,0xd1,0xa4, 0x25,0x61,0x2b,0xba, - 0x4e,0x61,0x99,0x0f, 0x7d,0x40,0x79,0x25, 0x50,0x8d,0x4c,0x76, 0x49,0x6b,0x48,0x18, - 0xaf,0x66,0x05,0xbf, 0xac,0xb8,0x9e,0xc5, 0x65,0xe8,0x81,0x84, 0xbd,0xd3,0xdf,0xde, - 0x63,0x08,0x84,0x2f, 0xc2,0x4d,0xa2,0x6b, 0x7d,0x5a,0xa0,0x08, 0x3d,0x4e,0xc3,0x29, - 0x1e,0x23,0x84,0x06, 0x59,0x80,0x49,0x25, 0xf2,0x13,0x37,0x81, 0x40,0x42,0x2e,0xaf, - 0x5a,0x43,0x35,0x58, 0x45,0xf6,0x67,0xcf, 0x09,0xd6,0x8f,0x84, 0xf0,0x0f,0x4d,0x54, - 0xd7,0xa8,0x37,0x33, 0x1d,0x96,0x22,0x60, 0x3e,0x0b,0x25,0xfe, 0xf2,0x48,0x4d,0xe9, - 0xcc,0x2c,0x07,0x9e, 0x76,0xf7,0x1d,0xa4, 0xb1,0x36,0x91,0xd4, 0x25,0x85,0x3b,0x0c, - 0xa1,0x29,0x61,0x2d, 0xc9,0x26,0x8c,0xe7, 0x9d,0xe6,0xea,0xc2, 0x8c,0x45,0x70,0x55, - 0xb6,0xad,0x53,0x93, 0x12,0x03,0xd3,0x70, 0x64,0x23,0xf2,0x50, 0x9f,0xa1,0x6b,0xae, - 0x74,0x69,0xc8,0xbf, 0x0e,0x3d,0x8a,0xb3, 0xaa,0x91,0x21,0x0f, 0xba,0x97,0x8a,0xf5, - 0x50,0x8a,0x84,0x87, 0x55,0x14,0x49,0x07, 0x9e,0xea,0x28,0xa8, 0xc2,0x58,0x72,0xfc, - 0x29,0x7d,0x8a,0xb5, 0x2a,0xe1,0xb9,0xe4, 0x3f,0x5a,0xd8,0xb5, 0xfc,0x63,0xb2,0x31, - 0x10,0xad,0xa0,0x41, 0xe2,0x14,0x9d,0xbe, 0x30,0xe6,0x4a,0xfc, 0x0c,0x13,0xa7,0xb8, - 0x92,0xcf,0x1c,0xcd, 0xe7,0xf6,0xec,0x89, 0x87,0xe6,0xb4,0x22, 0x01,0x8d,0xa1,0x7e, - 0xc3,0xfc,0x4f,0xc7, 0xd9,0x77,0xfa,0x09, 0x73,0x58,0x19,0xd0, 0x91,0x55,0x7c,0xfc, - 0x04,0xa8,0xff,0x32, 0x27,0x44,0x0b,0x9f, 0xda,0xaa,0xf0,0xf2, 0xe5,0xb7,0x2b,0x51, - 0x55,0x2a,0xf2,0xb9, 0xac,0x66,0x87,0x0a, 0x14,0x07,0x5b,0xcd, 0xb6,0x20,0x2d,0x88, - 0xff,0x3d,0x8a,0x85, 0x0d,0xce,0xf9,0xbb, 0xb3,0xc9,0x3c,0x9c, 0x09,0xfe,0x04,0x33, - 0xab,0x19,0x1a,0xc8, 0xec,0xb3,0xdc,0x90, 0x1f,0x1d,0x11,0xd8, 0x9d,0x80,0xb8,0xe6, - 0xfd,0x6b,0x18,0x1c, 0x07,0x64,0x82,0x11, 0xea,0xa6,0xe8,0x59, 0x58,0xe6,0x68,0x8a, - 0xa5,0xaf,0xaf,0xa4, 0xbb,0x8d,0x2a,0xc6, 0x9e,0x32,0x32,0x75, 0x33,0xee,0x15,0x80, - 0x5c,0x7c,0xaa,0x7e, 0x74,0x18,0x7f,0x8f, 0xa0,0xc5,0x7b,0x1c, 0xb5,0x9f,0x2f,0xf4, - 0xcc,0xb2,0x64,0x67, 0x25,0x67,0xf8,0x6c, 0xa9,0x83,0x3d,0x6a, 0x7a,0xc7,0x43,0x93, - 0xd9,0xd9,0xf9,0x95, 0x17,0x26,0x8e,0xb8, 0x97,0x40,0x1a,0x1a, 0x3a,0x2b,0x4a,0xf3, - 0x83,0x7b,0x09,0xab, 0xfc,0x18,0xcd,0xe9, 0xc9,0x57,0xfa,0x1c, 0x9a,0x1a,0xbf,0x7c, - 0xc1,0x6c,0xc3,0x50, 0x15,0x36,0xde,0xb0, 0x11,0x8e,0x26,0xaa, 0x36,0xfa,0x08,0x3e, - 0xe0,0x88,0x3c,0x09, 0x2c,0xdd,0x50,0x5a, 0x1d,0xc3,0xd7,0xbf, 0xf6,0x90,0x73,0x33, - 0xd0,0xa7,0x95,0xfd, 0x02,0xb8,0xb2,0x10, 0xc7,0x3e,0xfd,0xeb, 0x66,0x88,0x1c,0x46, - 0x87,0x89,0xbe,0x0c, 0xad,0x9c,0xca,0xa9, 0xc7,0xeb,0x12,0x97, 0x03,0xf2,0x41,0x29, - 0x4b,0x85,0x82,0x1c, 0xdf,0x43,0x82,0x9c, 0x3c,0xec,0x52,0x24, 0x90,0x86,0x78,0x5f, - 0x9b,0x0c,0x84,0xdc, 0xeb,0xd5,0xc0,0x4b, 0xbc,0x29,0xf4,0x79, 0xf0,0x7f,0x88,0xaa, - 0x21,0x87,0x87,0xa3, 0xb6,0xb2,0x20,0x8d, 0x69,0x02,0xcf,0x62, 0xd0,0x4b,0x0d,0xb9, - 0xd0,0x27,0x8f,0xf0, 0x3d,0x54,0x09,0x8f, 0x2c,0x02,0x45,0x45, 0x41,0x00,0xc8,0x97, - 0xf6,0x00,0xec,0xec, 0xcf,0x4a,0xc2,0xdf, 0xac,0x96,0xc4,0x39, 0x40,0x52,0x36,0x2b, - 0x16,0xed,0x29,0xb9, 0xe9,0x85,0xb6,0x4a, 0x92,0xaf,0xfc,0x70, 0x33,0xe3,0x44,0x23, - 0xa7,0x66,0xc9,0xb3, 0xbf,0x58,0x6d,0xc8, 0x17,0x65,0x76,0xe1, 0x93,0x5b,0xe4,0xa9, - 0x9b,0xa6,0x2c,0x0d, 0x36,0x82,0x43,0xed, 0xa0,0xa3,0x55,0x1f, 0xfc,0x15,0xb6,0xa4, - 0x0f,0x55,0xc6,0xc5, 0x16,0x63,0x06,0x83, 0xb5,0xad,0x53,0xe4, 0x50,0x4c,0x49,0x95, - 0x5c,0x95,0xf0,0x0b, 0xc0,0x78,0x14,0xc5, 0x2f,0x34,0xdb,0x0b, 0xca,0x87,0xab,0x55, - 0x5e,0x3d,0xb6,0x47, 0xee,0xf3,0xa0,0xcb, 0x74,0x77,0x5b,0xbe, 0x55,0x2c,0x3d,0xad, - 0x9f,0x64,0x0d,0x52, 0x75,0x96,0x91,0xb0, 0x79,0x20,0x9c,0xfe, 0x5e,0x93,0x6a,0xa0, - 0xe5,0xa6,0x7f,0x61, 0xcc,0x69,0xb2,0x80, 0xe4,0xf3,0xce,0x1d, 0x39,0xf8,0x4b,0x3e, - 0x24,0xe9,0xe1,0xe7, 0xfa,0x6e,0x8f,0xfd, 0xe2,0x95,0x39,0x08, 0xea,0xe4,0x74,0x79, - 0x1b,0x31,0xcd,0x10, 0x29,0x9b,0xb9,0xd5, 0x28,0xb6,0xf1,0x0f, 0x26,0x11,0x5f,0x1f, - 0x4e,0xfd,0xed,0x9c, 0x15,0x3a,0x4a,0x4f, 0x55,0x0d,0x04,0xdd, 0x04,0x76,0x8f,0x75, - 0x7d,0xad,0xb2,0x84, 0x01,0xc8,0x34,0x3e, 0xb6,0x37,0xdb,0x11, 0x6d,0xa8,0xdd,0x55, - 0x10,0xcb,0x37,0x50, 0x0d,0xb0,0xe3,0x61, 0x37,0x6d,0xf4,0xc6, 0x40,0xd0,0x34,0x81, - 0x42,0x53,0xc3,0x4c, 0x46,0xb2,0xbf,0x85, 0x7d,0x2d,0x38,0x05, 0xde,0xae,0x0a,0xe2, - 0xbc,0x79,0x74,0x9b, 0xfa,0x96,0xc6,0x2d, 0xa8,0xe7,0xf0,0x4c, 0x6a,0xe3,0xdd,0x77, - 0x58,0x9d,0xbf,0x7b, 0x74,0xb4,0x6a,0x2b, 0xee,0xe9,0x4f,0xf7, 0x7c,0xba,0x88,0x38, - 0x8c,0xa1,0x92,0xd8, 0x84,0xdf,0x3e,0x48, 0xb9,0x9f,0x0d,0x6a, 0xec,0x15,0x3b,0x38, - 0x8e,0xc8,0x48,0x53, 0x5a,0x9e,0xa0,0xfe, 0xd2,0x4b,0xd9,0x70, 0xfe,0x6d,0x94,0xbc, - 0x74,0xce,0xe9,0x21, 0x43,0x9b,0xc0,0xd5, 0xd8,0xfe,0x15,0xc5, 0x24,0x66,0x64,0xb0, - 0xc9,0xf0,0x9d,0x8e, 0xe1,0x37,0xd0,0x6e, 0x83,0x3a,0xfa,0x71, 0xd4,0x3c,0x0b,0xd6, - 0xa2,0x47,0x38,0xf1, 0x09,0x38,0x49,0x86, 0x71,0x21,0x80,0x33, 0xba,0xa0,0x16,0x2a, - 0x01,0xca,0xd9,0x21, 0x90,0xba,0x82,0x57, 0x70,0x06,0x97,0x6a, 0x1a,0x70,0x13,0xf9, - 0xad,0x23,0x32,0x58, 0xbc,0x9e,0x09,0xe4, 0xa5,0xa4,0x19,0x9f, 0xc8,0xe8,0xb2,0x9d, - 0x50,0x33,0x58,0x2a, 0x7b,0xc1,0xa3,0xff, 0x81,0xea,0x93,0xe3, 0xd1,0xac,0xf5,0x07, - 0x98,0xfb,0xe0,0x33, 0x93,0x56,0x90,0xe9, 0xf7,0x99,0xde,0x67, 0xaf,0x79,0x80,0xb8, - 0xc3,0x36,0xb3,0x50, 0x5e,0x29,0x1c,0x0c, 0x6a,0x26,0x02,0x73, 0x66,0x1b,0x2c,0xff, - 0xc8,0x73,0x6b,0x59, 0xcd,0xfd,0x95,0x15, 0x64,0xb6,0x51,0xea, 0x3c,0x4f,0xe3,0xe7, - 0x01,0xad,0x51,0x12, 0x77,0xc2,0x86,0x18, 0xf9,0x45,0x76,0x2f, 0xa6,0xac,0x1c,0x80, - 0x38,0xa8,0xfa,0x08, 0xdd,0x3f,0xbf,0x5f, 0x3d,0xc3,0x7f,0x82, 0xa2,0x96,0x7a,0x04, - 0x01,0xb4,0x13,0x5c, 0x6a,0x66,0x5c,0x1d, 0x61,0xc2,0xcf,0x80, 0xb4,0x85,0xe4,0x16, - 0x8d,0xe3,0x2b,0xdb, 0x58,0x37,0xf8,0x40, 0xa0,0xfb,0x54,0xde, 0x27,0x92,0xcf,0x83, - 0x53,0x1e,0x07,0x96, 0xcd,0xa2,0x43,0xb1, 0x70,0x84,0xb3,0xdf, 0x0a,0xe6,0xb7,0x5c, - 0x3b,0x96,0xc1,0xe7, 0xf9,0x8b,0x14,0x29, 0x01,0xd4,0x9f,0x50, 0x65,0xf9,0x0d,0x94, - 0xc8,0xc6,0x7f,0xb0, 0x27,0x2d,0x57,0x64, 0xe5,0x27,0xc2,0x1f, 0xd5,0xf3,0x25,0xd5, - 0xd9,0x80,0x92,0x87, 0xea,0x88,0xb4,0x0e, 0xb1,0x19,0xaf,0x9b, 0x18,0x0d,0xa5,0x36, - 0x2b,0x96,0x74,0x0b, 0x4a,0xa7,0xaf,0xd3, 0xca,0x8e,0xb9,0x96, 0xa8,0xee,0x24,0x5d, - 0x73,0x74,0x00,0xd4, 0xee,0x39,0x06,0x7b, 0xec,0x5b,0x0b,0x64, 0x55,0x18,0x5b,0xa0, - 0x67,0x78,0x85,0xf6, 0x70,0x33,0x69,0xd9, 0x59,0x32,0x4f,0x35, 0x86,0x0c,0xbf,0x19, - 0x1a,0x1c,0x22,0x84, 0xce,0xa4,0x36,0x27, 0xe1,0x3c,0x9e,0x62, 0x06,0x18,0x68,0x17, - 0xdf,0x5e,0xeb,0x2d, 0x1f,0x02,0xcc,0x52, 0x97,0x54,0xe8,0xc7, 0x33,0x0c,0x65,0x20, - 0x6c,0xe0,0xbc,0x50, 0x87,0x4c,0xf8,0xd6, 0x0c,0x4a,0xbd,0xba, 0x5b,0x0c,0x94,0x0e, - 0x4d,0x45,0xde,0x34, 0xf7,0x7f,0x05,0x47, 0xca,0xb3,0x81,0xdb, 0xfd,0x69,0x62,0x12, - 0xa1,0xb3,0xe2,0xe2, 0x00,0xb8,0xbd,0x8e, 0x4e,0x80,0x22,0xaa, 0xac,0x6f,0x7c,0x13, - 0xc7,0x2f,0x5a,0x04, 0x80,0xc9,0x05,0x5a, 0xd9,0x5b,0x13,0xa0, 0x8d,0xd7,0xc8,0x0d, - 0x98,0x79,0x44,0xe4, 0xd9,0x6a,0x73,0xca, 0x50,0x6e,0xfb,0x38, 0x7d,0x9c,0xee,0x35, - 0x29,0x9c,0xad,0x2a, 0x88,0xdb,0x94,0x96, 0x5d,0x91,0xb7,0x1a, 0x23,0xc0,0x81,0x98, - 0xe7,0x0c,0x05,0x90, 0x78,0xf0,0xf8,0xf3, 0x54,0x46,0x26,0x9b, 0x88,0x94,0xa4,0x8c, - 0x95,0xd6,0xd4,0x0f, 0x9b,0xb5,0xb9,0xe6, 0xf8,0xb4,0xe2,0x74, 0xc8,0xb4,0x48,0x0a, - 0x61,0x99,0xba,0xc6, 0x29,0x41,0x82,0x38, 0x45,0x9a,0xc8,0x10, 0x3c,0xfc,0x7e,0x4c, - 0x96,0x67,0x72,0xdc, 0x8e,0x54,0xe7,0xa1, 0xf1,0x84,0x24,0x6b, 0x4a,0xda,0x92,0x54, - 0xa6,0x27,0xa7,0x06, 0x30,0xd6,0xa2,0x73, 0xda,0x3a,0x8f,0xb5, 0x21,0x8f,0x3f,0x77, - 0x10,0xb6,0xe2,0x48, 0x87,0x4e,0xa6,0xab, 0xad,0x42,0x5d,0xa6, 0x4b,0x30,0x7a,0x35, - 0x11,0xa4,0xb7,0x02, 0x0b,0xeb,0xcb,0x68, 0xd1,0xbb,0x4f,0xce, 0x16,0xd1,0x28,0xd6, - 0x7e,0xdf,0xad,0xdd, 0x8d,0x6e,0x90,0x09, 0xf5,0x31,0x34,0xf7, 0xa3,0xe3,0xb5,0x83, - 0x08,0x27,0x9b,0x81, 0x70,0x78,0xc2,0x58, 0x5b,0x07,0x9d,0x35, 0xeb,0x84,0x58,0x70, - 0x55,0x18,0xa5,0x94, 0x24,0x18,0x65,0x34, 0xe3,0x8a,0xeb,0x28, 0xab,0xc2,0x72,0xab, - 0x78,0x42,0x15,0xd3, 0x15,0x62,0xa3,0x7e, 0x58,0x67,0x3a,0x07, 0x16,0x55,0xd6,0xa1, - 0xde,0xd5,0xdd,0x14, 0x9b,0x28,0xc9,0x76, 0x5a,0x8f,0xd7,0xc8, 0x76,0x9a,0xd9,0xcf, - 0xc1,0x56,0x14,0x47, 0x3c,0xbe,0xb8,0xae, 0xd9,0x01,0xa9,0x86, 0xa9,0xe5,0x28,0x63, - 0x16,0x42,0x94,0xf6, 0x9f,0x2d,0x19,0xa8, 0x4b,0x1f,0xe6,0xa7, 0x9b,0x84,0xdc,0xeb, - 0x60,0xec,0xc2,0x46, 0x12,0x50,0x9a,0x91, 0x37,0x3e,0xcd,0xa0, 0x91,0x8f,0x7e,0x50, - 0x95,0xec,0x90,0xf8, 0x3f,0x7b,0x2a,0x37, 0xa0,0x4e,0x5f,0xbe, 0x44,0x8e,0x01,0x3d, - 0x50,0x47,0x15,0xb1, 0x98,0x8c,0x13,0x16, 0xbe,0x0a,0xdb,0xcf, 0x19,0x96,0x59,0x17, - 0x69,0x1c,0xc5,0x62, 0x51,0x42,0x9b,0x77, 0x42,0xf5,0xdf,0xd9, 0x26,0x45,0x80,0x20, - 0x01,0x70,0x2f,0xba, 0x90,0x1d,0x57,0xdf, 0x8a,0x67,0x6a,0x7a, 0x24,0xa0,0x7f,0x2e, - 0xdd,0x19,0x72,0xac, 0xbc,0x28,0x9b,0xe2, 0x26,0xb2,0x20,0xf5, 0x63,0x77,0x1a,0xcc, - 0xa0,0x25,0x32,0x54, 0x2f,0x68,0x91,0x94, 0x8e,0xc9,0x54,0xc5, 0xa9,0xfa,0xa3,0x4e, - 0x11,0xbc,0x78,0x2e, 0x9b,0x04,0x11,0x8b, 0x6d,0x3b,0x24,0x1c, 0xd5,0xf9,0x72,0xa1, - 0xa4,0x5f,0x9b,0x86, 0xce,0x30,0x13,0x11, 0xbc,0x40,0xb9,0xac, 0x98,0x2b,0x05,0x82, - 0x73,0x77,0x22,0x1a, 0x85,0x1b,0x5b,0x8b, 0xed,0x19,0x06,0x08, 0xef,0xfa,0x31,0x8a, - 0x42,0xe4,0x51,0x08, 0x06,0x28,0x25,0x4e, 0x50,0x0a,0xe8,0xa1, 0x8d,0xcb,0xe0,0xa6, - 0xce,0x11,0xb7,0x62, 0x60,0x28,0xd0,0xfb, 0xb1,0x43,0x2d,0x97, 0x6e,0x6f,0x38,0x0d, - 0xba,0x93,0x73,0xc5, 0x8f,0x64,0x6d,0xd4, 0xe4,0xec,0xf2,0x2b, 0xc3,0x79,0x94,0xac, - 0xea,0xa7,0x98,0x3c, 0xbc,0x77,0x7f,0x93, 0x65,0xaf,0xec,0x60, 0x7f,0x84,0xa1,0xea, - 0x16,0x7f,0x97,0xb1, 0x7f,0xe7,0xd8,0x34, 0x27,0x7c,0xe1,0x1b, 0x75,0xb6,0x78,0xf0, - 0x9b,0x2c,0xdf,0x68, 0x85,0x6d,0x5d,0xe2, 0x0c,0x23,0xf4,0x3b, 0xc4,0x17,0x2a,0x7a, - 0x91,0x0d,0xf6,0x2a, 0xe3,0x0d,0xb9,0xc3, 0x8f,0x10,0x26,0xb9, 0x1f,0x5e,0x6d,0x8b, - 0xec,0x46,0x30,0x1c, 0x0c,0x8f,0x46,0x2e, 0xde,0x55,0x1d,0xb4, 0x62,0xc4,0x81,0x7c, - 0x84,0x83,0xfc,0x98, 0x32,0xd4,0xba,0x21, 0x93,0x76,0x11,0xa3, 0x76,0xcd,0x98,0x69, - 0xb4,0x03,0x8f,0x03, 0xc6,0xb4,0x2c,0xdc, 0x18,0x42,0x0e,0x5a, 0xde,0x1a,0x01,0x5c, - 0xe1,0x66,0x5a,0xfb, 0x81,0xaf,0x49,0x6b, 0xf2,0x12,0xdf,0x8a, 0x75,0x28,0x32,0xe7, - 0xed,0x35,0x8d,0xc9, 0x83,0x12,0xcc,0xeb, 0xb8,0x5e,0x51,0xa1, 0x95,0x97,0x11,0x2a, - 0x0f,0xe6,0xbe,0x98, 0x2b,0x25,0x84,0x80, 0xf7,0x7c,0xa2,0xab, 0xc1,0x78,0x35,0x34, - 0x7d,0x9c,0xbb,0x4c, 0xc7,0x32,0x75,0x4c, 0x89,0x36,0x3f,0x68, 0xc4,0xb5,0x63,0x93, - 0x80,0x80,0x1e,0x59, 0x49,0x62,0x8a,0x6a, 0x19,0xd4,0x61,0xb3, 0x9a,0xe9,0xbd,0xb1, - 0x4b,0x15,0x57,0xd3, 0xdb,0x6c,0x8b,0xeb, 0x09,0xfa,0xe8,0x44, 0xba,0x88,0xc9,0x87, - 0x2a,0x65,0xbf,0xeb, 0x51,0x39,0xad,0xfe, 0x5c,0x5a,0x1d,0x52, 0xa5,0xa0,0xa7,0x84, - 0x97,0x16,0xc5,0x6e, 0x2b,0xd9,0xe6,0x03, 0x9b,0x8f,0x06,0x54, 0x3d,0xd0,0x2a,0x65, - 0xe2,0xb6,0x63,0xc2, 0xb2,0x42,0x51,0x5e, 0xb3,0xad,0x49,0x53, 0xa7,0x8f,0xbf,0x9e, - 0xe3,0xea,0x60,0x4e, 0xbe,0xe5,0xed,0xaf, 0xb8,0xd0,0x66,0xec, 0xba,0xd5,0x15,0x1a, - 0xb9,0xc1,0xc0,0x13, 0xc4,0x87,0x7b,0xe0, 0x67,0x82,0xcc,0xfa, 0xcb,0x97,0xd2,0x8b, - 0x8d,0xda,0x49,0xdd, 0x9e,0x71,0x7c,0xe4, 0x31,0x20,0x7b,0x15, 0x63,0x5d,0xda,0xcb, - 0x5a,0xfb,0xc3,0xef, 0x67,0x76,0xcf,0x3b, 0xb2,0x93,0xf3,0x25, 0xd2,0x7e,0x18,0xd6, - 0x95,0x2d,0xcd,0x76, 0xc7,0x13,0x7b,0x18, 0xd2,0x72,0x00,0x06, 0xc8,0x7a,0x20,0xe3, - 0xa0,0x0c,0x40,0x9d, 0xb9,0x70,0x5a,0xc7, 0x42,0x1e,0x1a,0x5e, 0x3b,0xbf,0xd4,0xa2, - 0xc0,0xb0,0x68,0x49, 0xc5,0x25,0x47,0xcd, 0xeb,0x6d,0x98,0xcb, 0xf1,0xb2,0xba,0x91, - 0x8c,0xdd,0x32,0xd7, 0xd0,0x0c,0x27,0xe2, 0x1f,0x02,0xc2,0x1b, 0x2a,0x3a,0xc1,0x44, - 0x08,0x73,0xa0,0x3b, 0x53,0x01,0xd4,0x72, 0x07,0xb0,0x8f,0xac, 0x9e,0xee,0xde,0x4b, - 0xc5,0x96,0x21,0xd6, 0xbc,0x57,0x45,0x97, 0x67,0x69,0xc7,0x76, 0x23,0x36,0xc6,0xe9, - 0xb4,0x79,0x1e,0xf0, 0x13,0xc6,0x61,0x10, 0x8a,0xeb,0xac,0x9d, 0x67,0xc8,0xba,0x26, - 0x56,0x5c,0xe3,0xdc, 0x39,0xa1,0x0d,0xd5, 0xd2,0xc2,0xce,0xdb, 0x32,0x66,0xf2,0xd4, - 0x55,0x91,0x4a,0xf4, 0xef,0x58,0x9a,0x09, 0x52,0x32,0xca,0x87, 0x2b,0xd3,0xd1,0x1a, - 0xbe,0xfe,0x8f,0x0c, 0xbb,0x8a,0xe9,0xb4, 0x7d,0x28,0x02,0x50, 0x3d,0x07,0x65,0x66, - 0x1e,0x1a,0xc1,0x6d, 0x0c,0x1b,0xcc,0x71, 0xa2,0x56,0xcb,0xdf, 0x86,0x37,0x37,0xb1, - 0x2c,0xf0,0x8c,0x54, 0xac,0x10,0xfa,0x79, 0x22,0xf3,0xb6,0x1e, 0xc0,0x6c,0x23,0x12, - 0x64,0x54,0xec,0x2c, 0xbd,0x36,0x9f,0xea, 0xa2,0xec,0x08,0x9e, 0x41,0x9d,0xf5,0x90, - 0x4b,0x88,0xaf,0xcd, 0x65,0xcb,0x73,0xaf, 0x45,0x85,0x55,0xb2, 0xa8,0x5b,0x28,0xe3, - 0x67,0x37,0xe2,0xec, 0x80,0x48,0xd6,0x42, 0xe8,0xc2,0xa5,0x47, 0xa3,0xbc,0x56,0x0a, - 0xec,0xcd,0x35,0xbf, 0x83,0x31,0x46,0xe2, 0x03,0xff,0x10,0xbe, 0xf4,0xb8,0x47,0xb2, - 0xf6,0xca,0xa0,0xf3, 0xf3,0xdb,0x54,0xd6, 0x2e,0xdf,0x25,0x34, 0xf3,0x16,0xd5,0x1f, - 0xeb,0xa5,0x96,0xfb, 0x5b,0x4b,0x13,0x38, 0x5d,0x00,0xa6,0x37, 0xd1,0xbe,0xfb,0x15, - 0xd5,0x25,0x71,0xd4, 0xa6,0xa7,0xac,0x39, 0x79,0x23,0x7d,0xbe, 0xb0,0xf2,0x0f,0x22, - 0x2a,0x55,0xb1,0x20, 0x7e,0x56,0xc3,0xc8, 0xa1,0x76,0xa9,0xed, 0xcd,0xe2,0xe8,0x60, - 0x82,0x20,0xe8,0x9d, 0xd8,0xe3,0xa2,0xe3, 0x75,0x6f,0x6f,0x92, 0x64,0xe4,0xa5,0x6b, - 0xff,0x17,0x81,0x0c, 0x54,0x29,0x0e,0x2e, 0x8a,0x72,0x82,0x06, 0xb3,0xd5,0x02,0x4e, - 0xf8,0x87,0x91,0x08, 0xfa,0x52,0x87,0x5f, 0xf6,0x7c,0x66,0xae, 0xf6,0xc1,0x6d,0x86, - 0xf4,0x41,0x19,0xc4, 0x2a,0x80,0x8a,0xb7, 0xa1,0x9d,0x6d,0xfd, 0xcd,0x1c,0xf3,0xb5, - 0xee,0x89,0x53,0xbc, 0xe2,0x38,0xf8,0x03, 0x2d,0x7a,0x6d,0x7d, 0xe7,0x7a,0x77,0x68, - 0x99,0x78,0x87,0xc3, 0x8f,0x3a,0xee,0x58, 0x07,0x18,0xf1,0xb6, 0x91,0x38,0xd1,0xe4, - 0x7c,0x69,0x28,0xb3, 0x9d,0x9a,0x4c,0x95, 0x72,0xac,0xf4,0x0f, 0x58,0xe9,0xf6,0xa6, - 0x85,0xbf,0xf5,0xa2, 0xc4,0x41,0x6a,0x2e, 0x94,0x1d,0xbc,0xde, 0x10,0x82,0xed,0xe0, - 0xd7,0xb9,0xd5,0x08, 0xfd,0x5f,0xc5,0x99, 0x57,0xe2,0x01,0x51, 0xd1,0x96,0x88,0x01, - 0x79,0x83,0x4d,0xee, 0xba,0x1f,0x2d,0x12, 0xf4,0xfc,0xb8,0xf2, 0x6d,0xa5,0xd2,0xc3, - 0xc7,0xc3,0xf5,0x69, 0x2e,0xfc,0xbd,0x54, 0xdc,0x2e,0x32,0xd4, 0x9a,0xba,0x88,0x74, - 0x49,0xbe,0x0b,0x16, 0xda,0xa2,0xb3,0xe5, 0xf2,0xb9,0x49,0x21, 0x51,0x84,0xda,0x79, - 0xc7,0x38,0x3a,0x75, 0x70,0x0f,0x00,0x73, 0x3e,0x4f,0x79,0x2e, 0xeb,0x40,0x1e,0x82, - 0x9e,0x59,0x47,0x76, 0xff,0x5b,0xc7,0xb2, 0x67,0xc8,0x15,0x4a, 0x78,0xad,0xe6,0x4f, - 0x44,0xd7,0xfc,0x5e, 0xeb,0x70,0x46,0x61, 0xc2,0x69,0x98,0x12, 0xe9,0x18,0xbf,0x62, - 0xbc,0x07,0xff,0xff, 0x44,0xa2,0x03,0x00, - // 0x6c78 = 27768 data bytes ( 9%) + 0x03,0x5f,0xec,0x2d, 0x79,0x3b,0xf7,0xe1, 0x70,0xfc,0x69,0xc9, 0x37,0x7b,0x0e,0xc1, + 0x4f,0x69,0x9a,0xe8, 0x91,0xb0,0x29,0x77, 0x82,0xfb,0x02,0xb3, 0x76,0xce,0x96,0x46, + 0x76,0x74,0x50,0xfe, 0x46,0xf7,0xab,0x01, 0x15,0x14,0x46,0x1a, 0xe6,0xf0,0xc2,0x70, + 0xab,0xf9,0x5e,0xe7, 0xaa,0xfb,0x93,0xa9, 0xa1,0x6b,0x3b,0x54, 0xc6,0x70,0x13,0x01, + 0x98,0xe8,0xa4,0x5f, 0x5a,0x08,0x3f,0x3d, 0x53,0x70,0x43,0x7b, 0xac,0x15,0x24,0x68, + 0x2e,0x5e,0x4b,0x0b, 0x0b,0xdd,0xa4,0x9e, 0xba,0xa8,0xae,0x13, 0x90,0xb4,0x9c,0xa1, + 0x4c,0xd2,0xb1,0x8d, 0x9e,0x1e,0x88,0x7f, 0x45,0xc2,0xfe,0xc3, 0xe1,0xbd,0x83,0xbb, + 0xf4,0x9a,0x3c,0xbf, 0x07,0x26,0x5d,0xe2, 0xe7,0xe1,0x9d,0x16, 0xb0,0x8d,0xca,0xd7, + 0x55,0x16,0x59,0x71, 0xfa,0x84,0x4e,0xb0, 0x9b,0xb5,0x2c,0x85, 0x9a,0x39,0x95,0x5c, + 0xae,0x60,0x34,0x8a, 0x6e,0xf7,0x02,0x04, 0xbd,0x46,0x22,0x50, 0x6b,0xf7,0x27,0x5b, + 0xf3,0xe5,0x90,0xe5, 0x73,0xcf,0x5d,0x19, 0x92,0xf1,0x60,0x08, 0xc2,0x5f,0xb3,0xe6, + 0x14,0x0d,0x28,0xf0, 0x1f,0xbf,0xd1,0x50, 0x3a,0x1b,0xb4,0xa7, 0x9f,0xbb,0xf3,0x95, + 0x2c,0xef,0x3b,0x65, 0x7e,0x4a,0xc7,0xde, 0x89,0x87,0x30,0xbb, 0x0e,0x31,0xb4,0xa5, + 0xae,0xf6,0x5e,0x14, 0xd7,0xcb,0x24,0xb6, 0xc7,0x4c,0xe3,0x54, 0x9a,0xb0,0x6d,0xcc, + 0x81,0x40,0xd3,0xc0, 0x9b,0xf1,0xcb,0x8c, 0xcf,0x47,0x53,0x6d, 0x48,0x35,0xe8,0x51, + 0x85,0x1c,0x1b,0x39, 0xbe,0xe2,0xb2,0x12, 0x48,0xcd,0x2f,0x16, 0x57,0x38,0xd8,0xff, + 0x3c,0x45,0x67,0x86, 0x3f,0xc8,0x24,0x0a, 0xdc,0x17,0x54,0xeb, 0x9d,0xb6,0x26,0x67, + 0x99,0xaa,0x9d,0x44, 0xad,0x1a,0x2d,0x2a, 0x5e,0x78,0x30,0x81, 0xb0,0x22,0x96,0x32, + 0xf9,0xac,0x97,0x67, 0xb1,0x18,0xb6,0x22, 0x30,0x83,0x07,0xc8, 0xfb,0xc0,0x3b,0x23, + 0x2e,0x32,0xcb,0xb7, 0x48,0x9d,0x36,0x17, 0x12,0x8d,0xc7,0xc2, 0x96,0xb0,0x38,0xc6, + 0x6a,0xbb,0x1c,0x63, 0x2f,0xf0,0x54,0xee, 0x4b,0xc7,0x9c,0x6c, 0xc6,0x00,0xd8,0x91, + 0x27,0x80,0xfc,0x46, 0xd7,0xcb,0x14,0xeb, 0xdc,0xd1,0xb7,0x91, 0x17,0xc6,0x0b,0x12, + 0x41,0x65,0x0a,0x63, 0xa7,0xbc,0xb3,0x74, 0x9d,0x74,0x4e,0x5d, 0x8f,0x3a,0x97,0xc3, + 0x36,0xac,0x14,0xeb, 0x00,0xa4,0x4d,0x61, 0x9b,0xb8,0x07,0xae, 0x55,0x0b,0x4c,0x7d, + 0x1b,0xdd,0xbe,0xdb, 0xcc,0xec,0x7c,0x4a, 0x55,0x81,0xa8,0x70, 0x1c,0x97,0xdd,0x1b, + 0xd7,0xd7,0x8e,0xca, 0x65,0x3e,0x52,0x42, 0x27,0xcb,0xf1,0x1a, 0xcb,0xd0,0x9c,0x53, + 0xab,0x16,0x95,0x44, 0xd4,0x44,0x91,0x66, 0xf8,0x8c,0x63,0x80, 0xa9,0x63,0xa4,0xa0, + 0xe9,0xd8,0x47,0x0e, 0xaf,0x45,0xf7,0x32, 0x22,0xd2,0x49,0xf4, 0x03,0x2c,0x25,0x91, + 0x9c,0x26,0x73,0x7d, 0xad,0x8a,0x16,0x98, 0x06,0x14,0x43,0x83, 0x49,0xde,0x76,0x44, + 0x47,0xa4,0xe9,0x26, 0xc3,0x87,0x79,0x6c, 0x54,0x08,0xb7,0x2d, 0xe3,0xd4,0x5b,0x3e, + 0xec,0xd3,0x86,0x94, 0xbb,0x1e,0x00,0xcb, 0x95,0x50,0x82,0x9a, 0x31,0x05,0xe3,0x66, + 0xad,0x1f,0x2d,0x25, 0xb0,0x32,0x4d,0x76, 0x9e,0x16,0xa2,0x6a, 0x1d,0xae,0x35,0x81, + 0x33,0xee,0x0f,0x54, 0xc4,0x68,0xa9,0x2f, 0xd9,0x46,0x36,0xe5, 0x6c,0x40,0x56,0xb9, + 0x99,0x4e,0x89,0x43, 0xdc,0x69,0x9f,0xe8, 0x06,0x28,0x28,0x99, 0xb4,0x3b,0x92,0xd5, + 0xc7,0x59,0x05,0x52, 0x3f,0xe1,0x27,0x6a, 0x1d,0x14,0x00,0xef, 0x6b,0xd5,0xb5,0xfe, + 0x17,0x0b,0xff,0xe5, 0xe9,0x9b,0xa8,0x4a, 0xde,0xc8,0x9b,0xbf, 0x9a,0x40,0x20,0xa0, + 0xc1,0xde,0x73,0x30, 0xf2,0xcc,0x1c,0xaf, 0x9a,0xc8,0xa7,0x15, 0x68,0xcf,0xaf,0xef, + 0xc0,0x14,0xe8,0x33, 0x73,0x9b,0x91,0x92, 0xf8,0x3a,0xea,0x08, 0xe1,0x64,0x12,0xc5, + 0xfe,0x03,0x52,0xe4, 0xcb,0xaa,0x4e,0x94, 0x8a,0x31,0x19,0xf7, 0xf9,0x59,0xa0,0x6e, + 0xf8,0x4f,0xb9,0x44, 0xb2,0x54,0x56,0xe9, 0x13,0xd3,0xb3,0x55, 0x55,0xbc,0xe6,0xe6, + 0x90,0x0c,0xb4,0x16, 0x2c,0xe8,0x57,0x42, 0xdc,0xd1,0x2f,0x21, 0x5e,0x1a,0xba,0x70, + 0x76,0x24,0xc3,0x2b, 0x46,0x15,0x9b,0xcc, 0xbb,0x6d,0x7c,0xd8, 0xd6,0x25,0xba,0x63, + 0x6e,0xab,0x3d,0x31, 0xcb,0xf8,0x6f,0x12, 0x8a,0xb3,0x6e,0xbd, 0xc6,0xd6,0x9b,0xbd, + 0x13,0x1e,0xf2,0xf9, 0x7c,0x44,0x72,0x6f, 0x49,0xeb,0x69,0xf9, 0x1b,0x50,0x91,0xc2, + 0x21,0xb1,0x01,0x2c, 0xcd,0x8b,0x22,0xaa, 0x61,0x36,0xdd,0x21, 0xaf,0xa3,0xad,0xe3, + 0x4f,0x0b,0xb4,0x73, 0x57,0xa3,0x4e,0x0c, 0x56,0x7b,0xfe,0x0e, 0x7d,0xbf,0xd9,0xe1, + 0x37,0x89,0xf9,0xcb, 0xe1,0x61,0x87,0xcc, 0x6a,0xbd,0x52,0xca, 0x63,0x9e,0xed,0x8e, + 0x27,0x69,0x9e,0x3a, 0x88,0xcb,0x55,0xc6, 0xe9,0x15,0x10,0x8d, 0xdf,0xd0,0x13,0x77, + 0x8d,0x78,0x6d,0x87, 0xd8,0x4f,0x3f,0x51, 0x07,0xe3,0xec,0xa5, 0x5a,0xba,0x48,0x70, + 0x50,0xfd,0xca,0xe1, 0xf0,0xf7,0x5b,0xed, 0x91,0xc5,0x0b,0x38, 0x2c,0xac,0x47,0x63, + 0x6e,0x7d,0x86,0xa6, 0x6c,0x7f,0x95,0xa7, 0x08,0x7f,0xc4,0x42, 0x60,0xed,0x65,0x57, + 0xc6,0x3b,0xc9,0xb5, 0x93,0x6b,0x15,0x39, 0xda,0x9e,0x95,0x9b, 0x5c,0x2b,0x73,0xae, + 0x5b,0x16,0xff,0x2f, 0x02,0x66,0x74,0xa4, 0x34,0x64,0x62,0xa6, 0x71,0x3b,0xe7,0xaf, + 0xff,0x45,0xa7,0x45, 0x42,0x08,0x9b,0xd9, 0xa5,0xc5,0x99,0xed, 0x5b,0xfc,0xa2,0xa9, + 0xf0,0x90,0x54,0x35, 0x60,0x55,0x25,0x1d, 0xca,0x19,0x1b,0xf7, 0xb7,0xc2,0xc1,0x4d, + 0x62,0x34,0x51,0xdd, 0xe2,0xbc,0xdc,0x56, 0xe8,0xba,0x97,0xf8, 0xe1,0x25,0xdf,0x6b, + 0x8d,0xd5,0xe2,0x8d, 0x17,0xb9,0x4a,0xb5, 0xf9,0x44,0xe9,0xf2, 0x2d,0xe5,0x6a,0xfc, + 0x9e,0xf6,0x2d,0xa0, 0x37,0x20,0x7d,0x22, 0x42,0xfd,0x7c,0x75, 0xae,0xe6,0x30,0x32, + 0x02,0xb6,0x74,0x3f, 0x62,0xce,0x49,0xb9, 0x53,0x3c,0x65,0xe3, 0xd0,0xc4,0x98,0xed, + 0xec,0x3b,0x97,0x88, 0xf2,0xcc,0x34,0xea, 0xd0,0xbb,0x90,0xbd, 0xbb,0x71,0x98,0xac, + 0xda,0xfe,0x49,0xc6, 0x4e,0xf3,0x08,0x98, 0x53,0xfc,0xfd,0x92, 0x58,0xc7,0xa8,0x89, + 0x86,0xb5,0x21,0x2d, 0x93,0x20,0xdc,0x6d, 0x1d,0xde,0x97,0xec, 0xd6,0x1d,0xf1,0x22, + 0x98,0xaa,0x85,0x33, 0x50,0xa8,0x47,0x7e, 0x68,0x79,0x7e,0x96, 0x12,0xb1,0x9f,0xc3, + 0xb9,0xb0,0xd5,0x64, 0xe3,0x38,0xd7,0x3e, 0xe1,0x8f,0x27,0xcf, 0xa5,0xef,0xbd,0x2b, + 0x77,0x2f,0x60,0x11, 0x99,0xf5,0xbc,0x31, 0xf1,0x84,0x2c,0x05, 0x02,0xe0,0x11,0xa9, + 0x29,0xa7,0x9f,0x4f, 0xa1,0x5d,0xf4,0x8e, 0x77,0x5e,0x59,0x34, 0x45,0xc1,0x5c,0xf3, + 0x57,0x92,0x93,0x1a, 0x2c,0x54,0x44,0xb3, 0xdb,0x72,0x06,0x44, 0xf3,0x8a,0x7c,0x9f, + 0x9c,0xa7,0xf3,0x13, 0x8c,0xc9,0x6d,0x72, 0x21,0xf1,0xd9,0x90, 0x36,0x4e,0xe3,0x2e, + 0xc4,0x7f,0x2f,0x9b, 0x8f,0x28,0xcb,0xf4, 0x7b,0x61,0xae,0x36, 0x79,0xbe,0x0b,0x7e, + 0xd8,0x66,0x35,0xfc, 0x10,0xd0,0x12,0x1e, 0x08,0xa2,0x3e,0x51, 0xc2,0x8c,0x21,0x06, + 0xaf,0x29,0xfe,0xb7, 0xa9,0xa8,0xd9,0xb5, 0x71,0x44,0x7d,0xb7, 0x66,0x9d,0xd1,0xa9, + 0xb3,0xa4,0x2e,0xf8, 0xf3,0x5f,0xbb,0x8a, 0xf4,0x46,0x70,0x89, 0x51,0x00,0xb7,0xc8, + 0xb1,0xe7,0x70,0x5d, 0xc0,0x9a,0xe4,0x3c, 0xad,0x3f,0xc3,0xc9, 0x1a,0x3b,0xd9,0x02, + 0x63,0x02,0x7e,0x2e, 0xd1,0x0f,0xac,0xd4, 0x46,0xd2,0x47,0xf1, 0xeb,0x39,0x9f,0xe4, + 0x5c,0xf3,0x94,0xea, 0x05,0xdc,0x11,0xe2, 0x39,0x68,0x8a,0xe4, 0xab,0x37,0xbb,0xf6, + 0xf7,0x08,0x8a,0xe0, 0x85,0xb4,0x25,0x41, 0xc1,0x50,0x87,0x65, 0x5d,0xca,0xa9,0x81, + 0xec,0xb9,0xa1,0x6d, 0x1b,0x77,0xcd,0xf1, 0xc3,0x1e,0x02,0xfc, 0x94,0x0f,0xfd,0x52, + 0x9b,0xdf,0x40,0x90, 0x26,0xcf,0x94,0x47, 0x2c,0x3e,0x4c,0xd6, 0x4a,0xe9,0xbf,0x37, + 0xac,0x75,0xa4,0xf4, 0x0f,0xf4,0xfb,0x30, 0xb8,0x85,0x0f,0x3f, 0xc1,0x4e,0xac,0xb7, + 0x98,0xd4,0xd5,0x45, 0x04,0x86,0x86,0xa8, 0xd6,0xb9,0xdd,0x8a, 0x38,0xb0,0x6c,0x69, + 0x16,0x19,0x9d,0x8b, 0x73,0xd4,0xd1,0x4f, 0x24,0x18,0x11,0x38, 0x25,0xda,0x7b,0x88, + 0x0d,0x0e,0x90,0xd4, 0xbc,0xc2,0xcc,0x9a, 0x4c,0xed,0xf8,0x9a, 0x0b,0x85,0x25,0x98, + 0x5c,0xc9,0xc7,0x51, 0x7c,0xd5,0xb2,0x99, 0xaa,0xa8,0x39,0x27, 0xc5,0xd9,0xa2,0xbc, + 0xa8,0xef,0x3f,0xa1, 0xd9,0xac,0x0f,0xd9, 0x40,0xd5,0x36,0x52, 0x81,0xb4,0xb0,0x1c, + 0x66,0xd4,0x81,0x8f, 0x75,0xc9,0xbc,0xef, 0xe6,0xc5,0xb6,0x8f, 0x67,0x9a,0x3c,0xc0, + 0x12,0x5d,0x58,0x10, 0x90,0xf5,0x24,0x24, 0xd1,0x16,0x5e,0x98, 0x7a,0x3a,0x17,0x43, + 0x4b,0xe8,0xf7,0x95, 0xfd,0xbd,0x68,0x79, 0x68,0xe5,0x09,0xa8, 0x8d,0x30,0x6b,0x90, + 0x1f,0xb5,0x59,0xd3, 0x3b,0x50,0x88,0xed, 0x8e,0xe2,0x81,0xef, 0xbd,0x4e,0xcb,0xa6, + 0x3e,0xbd,0x4a,0x44, 0xa1,0x29,0x1d,0xc4, 0x86,0x91,0xff,0x52, 0xf3,0xdd,0x16,0x9b, + 0xb7,0xaa,0xa8,0x53, 0x2e,0x89,0xfb,0x15, 0x57,0xde,0x74,0xfd, 0x96,0x85,0xf2,0xea, + 0x0c,0xcd,0xc5,0x42, 0x4d,0xed,0xaf,0xc4, 0xdf,0xfe,0x3a,0x9f, 0x60,0x9c,0x9a,0xd0, + 0xc6,0x89,0xe4,0x38, 0xb9,0x00,0x85,0x90, 0xa5,0x7b,0x9c,0xde, 0xb1,0x7c,0xf0,0x95, + 0x1a,0xfd,0x39,0x91, 0xe1,0xad,0xc1,0x32, 0x47,0x4c,0x80,0xc3, 0x6d,0x24,0x56,0xb6, + 0xc4,0xac,0xb2,0x26, 0x89,0x0c,0x92,0x1f, 0xad,0x89,0xb6,0x0b, 0xbd,0x77,0x35,0xa8, + 0xe2,0x24,0xc2,0x87, 0x8b,0xb2,0x6d,0xea, 0x1f,0x4a,0x49,0x75, 0x8e,0xe5,0x19,0xb3, + 0x11,0x82,0xa5,0x47, 0xc4,0xd9,0x19,0xf5, 0x0b,0x02,0xe5,0xd1, 0x4a,0x62,0x0e,0x94, + 0x16,0x75,0x5d,0x0b, 0xed,0x0b,0x15,0x90, 0x14,0x36,0x43,0xc1, 0xd8,0x56,0xe3,0x22, + 0xa9,0x03,0xfe,0xee, 0x4e,0x4b,0xf5,0x2e, 0x08,0x0c,0xad,0xf7, 0xee,0x58,0x2a,0xe9, + 0x96,0x53,0x9a,0x14, 0x34,0x4e,0xef,0x2e, 0xf8,0x6f,0x54,0xcc, 0xa7,0xfd,0xc6,0x53, + 0xf1,0xdd,0xc3,0xc9, 0x97,0x2f,0xfc,0x03, 0xcb,0x83,0x67,0x9a, 0xc8,0xa5,0x71,0x6e, + 0x4c,0x07,0xc2,0xb1, 0x6f,0xac,0x1e,0x75, 0xa8,0x08,0xaa,0x1d, 0x64,0x99,0x09,0xf6, + 0x0e,0xf4,0x0d,0xd4, 0x4b,0xe9,0x32,0xe7, 0x85,0x7c,0xdd,0xf1, 0xb1,0x57,0x53,0xe7, + 0xee,0x2b,0x71,0xfa, 0x04,0xef,0xa8,0x9d, 0xed,0x6a,0x20,0x9c, 0x29,0xa5,0xcd,0x1b, + 0xe8,0x6b,0x13,0x8f, 0x91,0x22,0x1e,0xe9, 0x14,0xfe,0xed,0x74, 0x57,0x27,0xba,0xb2, + 0xe0,0x76,0xf0,0xe5, 0x4f,0x66,0xa0,0xd1, 0xf4,0x83,0x25,0xa8, 0x3a,0x85,0xf8,0xa4, + 0xc5,0x34,0x8f,0xc7, 0x2a,0xd8,0xa4,0xb7, 0x01,0x33,0xbc,0x35, 0xd4,0xac,0xa0,0xf3, + 0x1f,0xe3,0x29,0x5b, 0x48,0x51,0x15,0xc4, 0x36,0xfb,0xf2,0x8c, 0xb2,0x2f,0x59,0xf4, + 0x87,0xd6,0x8b,0x06, 0xae,0x16,0xcc,0x1f, 0xea,0x3f,0xb8,0xb6, 0xcb,0xfe,0xd6,0xac, + 0x6b,0x09,0x34,0x12, 0x29,0xdb,0x84,0x75, 0x8b,0xd6,0x03,0x19, 0x52,0x45,0x83,0x33, + 0x53,0x0b,0x94,0x0c, 0x4a,0x0a,0x79,0xe0, 0xe9,0x82,0xb0,0x54, 0x40,0x8e,0x91,0x27, + 0x2b,0x13,0xc9,0x4f, 0xa8,0x57,0x59,0xe7, 0x83,0x47,0xc9,0x98, 0xe0,0x39,0x00,0xdc, + 0x35,0x4e,0x5b,0x18, 0xb7,0xd8,0x6a,0xa9, 0x69,0xa4,0xb9,0xc8, 0xad,0x21,0xa9,0x41, + 0x2e,0x01,0xbd,0xb8, 0x85,0x2f,0x04,0xf6, 0xef,0xba,0x63,0x9f, 0x54,0x37,0x3a,0x7d, + 0x4a,0xb9,0xc7,0x0f, 0xb5,0x64,0x24,0x38, 0x2d,0x04,0x8f,0x78, 0xbc,0xc3,0x65,0x2c, + 0xcb,0x27,0xa6,0x37, 0xf8,0x2a,0x54,0x8b, 0xce,0x84,0x2d,0x23, 0x74,0x79,0x3d,0x0d, + 0x45,0x1e,0x5c,0xdf, 0x5b,0x1a,0x72,0xdd, 0x90,0xdd,0xe4,0x84, 0xc1,0x72,0x1b,0x21, + 0x66,0xa1,0x08,0x3f, 0x5f,0x0e,0x93,0xe1, 0xf6,0x5d,0xdc,0x8b, 0xff,0xab,0xd0,0x7e, + 0xf8,0x63,0x4d,0x13, 0xb4,0xc3,0xb1,0xfe, 0xa2,0x0d,0xec,0xbe, 0x1f,0x35,0x7a,0x62, + 0x6e,0x4e,0x73,0x53, 0x5a,0x65,0x75,0xf5, 0x5e,0xec,0xb9,0xb1, 0x96,0x66,0x25,0xd0, + 0xfc,0xb8,0xcb,0x0a, 0x82,0x9b,0xc2,0x06, 0xb1,0xdc,0x2b,0x4d, 0x1a,0x0d,0x07,0xfb, + 0x3f,0x91,0x1b,0x33, 0x33,0x78,0x14,0xdc, 0xfe,0x66,0xee,0x98, 0xc7,0x19,0x16,0x30, + 0xe5,0x08,0x1e,0x82, 0x8d,0xe8,0x0d,0x89, 0x48,0xe5,0x86,0x4d, 0xd4,0x4d,0x09,0x82, + 0xbd,0xa9,0x0f,0xea, 0x90,0xb0,0xc9,0x85, 0xa7,0x7b,0x5a,0x68, 0xcc,0xba,0xc8,0xcf, + 0x9b,0xbb,0xcb,0x0a, 0x01,0x19,0xe5,0x04, 0x19,0x5a,0x53,0x37, 0x9a,0x35,0x3a,0xeb, + 0xa2,0x9a,0x55,0xac, 0x0d,0xba,0x15,0xb4, 0xb2,0x13,0xf7,0x9a, 0x4c,0x7a,0x7b,0xa7, + 0x3e,0x98,0x1b,0x0d, 0xd4,0x5a,0xfd,0xda, 0xd1,0x73,0x1e,0xde, 0x15,0x67,0xc6,0xec, + 0x71,0xab,0xe1,0x2d, 0x73,0x98,0x71,0xf0, 0xdd,0x74,0x96,0x07, 0x40,0x29,0x9c,0xee, + 0x3d,0x13,0xce,0x5c, 0x73,0xc4,0xc0,0xd1, 0x45,0x6c,0x73,0x67, 0x9b,0x5b,0xf4,0xbe, + 0xd2,0x53,0x2e,0xd8, 0xea,0x73,0xe0,0x08, 0x8d,0xed,0xc9,0xd0, 0xcd,0x4f,0x16,0x7e, + 0x71,0x0a,0xc7,0x45, 0xa4,0x7d,0xf3,0x89, 0xae,0x52,0x8b,0xe8, 0xfc,0x06,0xf4,0xcf, + 0xf2,0xfa,0x31,0xcd, 0x45,0x98,0x5f,0x56, 0x7d,0xa7,0x8a,0x02, 0x23,0xf0,0x46,0xb0, + 0x51,0x21,0x06,0xf0, 0x01,0x5a,0x25,0xc4, 0x5b,0x91,0xba,0x74, 0xa3,0xa9,0xa8,0xb2, + 0xab,0x7c,0xeb,0x31, 0xe4,0xc9,0xc3,0x28, 0x02,0x58,0x82,0xfa, 0xfe,0xfc,0x40,0x9f, + 0x0b,0xcb,0xc3,0x57, 0x75,0xcd,0x8c,0x5d, 0xf6,0xf4,0xe0,0xe5, 0x7e,0xcb,0xf9,0x9b, + 0x05,0x66,0xb9,0x0e, 0xcc,0xc8,0xa5,0x18, 0x08,0x45,0x02,0xfd, 0x00,0x3c,0x98,0xd0, + 0x00,0x2e,0x4f,0x76, 0xc1,0xa1,0x22,0xab, 0x49,0x2e,0xaf,0x56, 0xaa,0x68,0x22,0xf6, + 0x7d,0xf9,0xeb,0x3e, 0xd9,0x20,0x18,0x6b, 0xea,0x6c,0x52,0x4f, 0x26,0xc4,0x37,0xdc, + 0xbe,0x1a,0x47,0x56, 0x93,0x74,0xf0,0x96, 0xf6,0x0c,0x2a,0xdb, 0xe1,0x5a,0xa1,0x13, + 0x8a,0x92,0x5b,0x55, 0xd5,0x48,0x10,0x9a, 0x0a,0x58,0x6a,0xbb, 0xab,0x32,0x21,0x64, + 0x27,0xc9,0x0f,0x5e, 0x86,0x8f,0x40,0xfa, 0x06,0xcd,0xcc,0xe6, 0xbe,0xec,0xa3,0x25, + 0x4a,0x54,0xa7,0xb0, 0x69,0x30,0x32,0x95, 0xab,0x1c,0x5d,0x07, 0x83,0x9c,0xb4,0xf3, + 0x40,0x8a,0x0e,0xfe, 0x4b,0x60,0xff,0xfa, 0xed,0x31,0xed,0xc4, 0x74,0xe2,0x28,0x49, + 0x35,0xf4,0xeb,0xeb, 0x83,0xd1,0xbc,0x90, 0x38,0x74,0x90,0x66, 0x60,0x56,0xa5,0x43, + 0x28,0x0a,0xc0,0x4a, 0x22,0xd0,0x36,0x6a, 0xf9,0x00,0x13,0x71, 0xe2,0xbc,0xce,0xf1, + 0x7f,0x35,0x92,0x53, 0xd0,0xf3,0x46,0x31, 0xb4,0x8f,0x54,0x30, 0x76,0x00,0x5d,0x8a, + 0x65,0x98,0x02,0xac, 0x5f,0x39,0x74,0x01, 0x1d,0x6e,0x6c,0xa3, 0x0e,0x9d,0x96,0x3d, + 0x6a,0x7e,0x70,0x6e, 0x0e,0x96,0xfc,0x8b, 0x45,0x22,0x2f,0x37, 0x42,0x9d,0x0d,0x9a, + 0x47,0xc7,0x0b,0x21, 0x06,0x86,0x19,0x83, 0xf2,0x33,0x33,0x3a, 0xd8,0x55,0x91,0xb8, + 0xa6,0x78,0xba,0x06, 0xb7,0xdf,0x4b,0x92, 0x57,0xce,0x03,0x04, 0x96,0xb6,0x3c,0x09, + 0x37,0x2e,0xa1,0xd3, 0x5f,0xf1,0x49,0x11, 0xcc,0x6c,0x11,0x86, 0xe1,0x0a,0x27,0x15, + 0x26,0x68,0x3d,0xb7, 0x06,0xce,0x62,0x91, 0x6e,0x15,0x83,0xa8, 0xfb,0xea,0x5c,0x4f, + 0x32,0xc3,0xf7,0xd6, 0x1c,0x9a,0xd6,0x9e, 0xac,0xba,0x53,0x1c, 0x15,0x98,0xc1,0x1d, + 0x22,0x65,0x2e,0xcd, 0xa3,0xa1,0xf3,0xdf, 0x77,0xd9,0x0c,0x32, 0x29,0xaf,0x61,0x54, + 0xdd,0x1f,0x91,0xd2, 0x5b,0x53,0x7e,0xde, 0x64,0xb3,0x8f,0x49, 0x22,0x77,0x85,0xf9, + 0x0e,0x67,0x05,0x7f, 0x5c,0xfa,0x5b,0x7d, 0xe2,0x2c,0xc1,0xcc, 0x6f,0xda,0x57,0x70, + 0xe4,0x79,0x47,0xc4, 0x6a,0x34,0xaa,0x46, 0x67,0xd9,0xeb,0xcf, 0x3a,0xc7,0x9e,0x31, + 0xc2,0x14,0x1c,0x3a, 0x19,0x6e,0x00,0x85, 0x92,0x6d,0x12,0x75, 0xfd,0xd1,0xd4,0x79, + 0x91,0x1c,0x05,0x34, 0xcd,0xea,0x2a,0x96, 0x62,0x99,0xcb,0x40, 0xd1,0x5f,0x20,0x2b, + 0x58,0xf3,0xf4,0x4c, 0x4a,0x8a,0x2d,0xb4, 0x9f,0x84,0x8b,0xab, 0x36,0x6f,0x0b,0x7e, + 0xd7,0x60,0x09,0x2f, 0xa3,0xd0,0x0b,0x5f, 0xe2,0x44,0x94,0x14, 0xc4,0x14,0x3a,0xb1, + 0xf9,0xe4,0xcf,0xda, 0x67,0x8e,0x00,0x15, 0x77,0x52,0x3d,0xe2, 0xb6,0x7e,0x5b,0xe9, + 0x6b,0x83,0x5d,0xf8, 0xe1,0x29,0x22,0x9d, 0x01,0x65,0xe3,0x50, 0x47,0x82,0x57,0x9d, + 0x2a,0x4c,0xea,0xc3, 0xe5,0x2d,0xf0,0xe8, 0xc1,0x67,0x94,0x0d, 0x56,0xcc,0x1d,0x96, + 0xe1,0x57,0xa9,0x46, 0xc2,0xa3,0x2b,0x5d, 0x9d,0xa5,0xbe,0x5a, 0xef,0x32,0x0e,0xe1, + 0x60,0x24,0xb3,0xeb, 0xb3,0xcb,0x44,0x25, 0xc7,0x01,0x56,0x5b, 0x41,0x67,0x9a,0x2e, + 0x41,0xba,0xff,0xfd, 0xbe,0xbc,0x1d,0xa9, 0xf7,0xfc,0xc0,0xbf, 0x8a,0x69,0xc1,0x47, + 0x6c,0x0e,0x74,0x94, 0x45,0x76,0x79,0x15, 0xce,0xda,0x37,0xab, 0x15,0xf5,0x8a,0x59, + 0x0a,0xdf,0xc2,0x5b, 0xa9,0x4b,0x76,0x00, 0xf0,0xe2,0x8e,0x4f, 0x45,0x63,0x8b,0x48, + 0xfb,0xe7,0x4c,0x6e, 0x40,0x6b,0x5f,0xc5, 0x6a,0x30,0xe7,0x5c, 0x21,0x11,0x59,0x25, + 0xba,0x56,0x40,0x90, 0xcf,0xdd,0x76,0x05, 0x6a,0xad,0xf9,0x58, 0x53,0x59,0x36,0x93, + 0xc4,0xe0,0xd4,0x2f, 0x86,0x0d,0xcc,0x04, 0x22,0x29,0xa7,0xd5, 0xd0,0xf6,0xd1,0xfc, + 0xb8,0x14,0xc0,0x56, 0xd5,0x09,0x10,0x8b, 0xb2,0xa2,0x62,0xc8, 0x3f,0xba,0xc7,0xe4, + 0x7c,0x77,0xc3,0x09, 0xd9,0xed,0xb5,0xf9, 0x10,0xb9,0x64,0xe6, 0xab,0x85,0xe4,0x53, + 0x4e,0x40,0xc9,0xc7, 0xc0,0x20,0x55,0x09, 0xa7,0x4f,0x36,0x9d, 0x83,0xb6,0x4b,0x5b, + 0x7e,0x02,0x16,0x4c, 0x94,0x8f,0x26,0x43, 0x8c,0xcb,0xa4,0x21, 0xb6,0xde,0x28,0x10, + 0x84,0x6a,0xc7,0x5c, 0x99,0xba,0xbc,0x11, 0x7a,0xe1,0xcb,0x25, 0xe9,0x7e,0x8e,0x31, + 0xdf,0x31,0x0a,0xea, 0xa3,0x54,0x53,0x41, 0xb0,0x96,0xbf,0x10, 0x1b,0x75,0x83,0x69, + 0x2f,0xd4,0x58,0xae, 0xee,0x79,0x2a,0x72, 0x22,0xee,0x6c,0x9d, 0x69,0x24,0xff,0x6d, + 0x19,0xa6,0x5c,0xbd, 0x2a,0x1a,0xd2,0x24, 0xdc,0x6e,0xd3,0xfe, 0xec,0x73,0xb4,0x74, + 0xba,0x57,0x0a,0xb6, 0x61,0xdc,0x0f,0xae, 0xb2,0xaf,0xb8,0x4f, 0x32,0xc2,0x8a,0xde, + 0x89,0x74,0x5e,0xc8, 0x81,0x2e,0x35,0x1c, 0x7f,0xbd,0x14,0x71, 0xe5,0xab,0x27,0x4f, + 0x4b,0xcb,0x43,0x02, 0x7b,0x39,0xbb,0xee, 0xca,0x4a,0x0e,0x30, 0x70,0xc7,0x7f,0x15, + 0x6c,0x9b,0xa4,0xb7, 0x44,0x71,0xfc,0x03, 0x96,0x39,0x19,0x0a, 0x02,0xbf,0xb8,0x30, + 0xb1,0x02,0xf1,0x52, 0xd8,0xed,0x58,0xac, 0x70,0x86,0xb6,0xf0, 0x2b,0x15,0x31,0xa4, + 0x30,0x39,0x3b,0xc1, 0x67,0x82,0xbd,0x64, 0x41,0x54,0xff,0x57, 0x1d,0x85,0x52,0x3c, + 0x47,0x50,0xc8,0x7e, 0x4f,0xdc,0x7f,0x05, 0x9c,0xa9,0xbc,0xd5, 0x8e,0x85,0xb8,0xc6, + 0x4f,0x79,0xe3,0x9a, 0x8c,0xe9,0xb9,0xe7, 0x07,0x44,0x05,0xfe, 0xbb,0x03,0x85,0xdd, + 0x8b,0x1a,0xe0,0x11, 0xab,0xf4,0x47,0x75, 0xb9,0x52,0x8a,0x56, 0x10,0x65,0x93,0xfa, + 0xb7,0x72,0xd1,0xc2, 0x2a,0x9d,0x1b,0x01, 0x36,0xe1,0x90,0xe3, 0x81,0xf6,0x48,0x26, + 0xa4,0xae,0xd1,0x99, 0x4b,0x74,0xc9,0xfc, 0xb4,0xe4,0x94,0x91, 0x4a,0x0e,0x3b,0x9b, + 0xeb,0x3d,0xe3,0x3a, 0xfe,0x76,0xe5,0xf7, 0x01,0x5e,0x1b,0x83, 0x17,0xe0,0x3e,0xbf, + 0x5e,0xd2,0x64,0xfd, 0xf6,0x37,0xaf,0x70, 0x75,0x24,0x00,0x76, 0x3d,0x49,0x53,0xfb, + 0x2d,0xf4,0xc1,0xd4, 0x82,0x1f,0xf6,0xaf, 0xd1,0xf3,0x94,0x5f, 0x8c,0x7d,0x4e,0x1c, + 0x3a,0xf6,0x55,0x4f, 0x40,0xc6,0x72,0x48, 0x2b,0x68,0x52,0xca, 0x33,0xc5,0x6d,0x46, + 0x42,0x18,0x93,0x9a, 0x2a,0x59,0x48,0x65, 0xe5,0xd1,0xf7,0xeb, 0x8d,0xd6,0x07,0xd6, + 0xfa,0xa8,0xff,0x7c, 0x5e,0xbf,0xa0,0xdf, 0xcf,0x46,0x27,0x92, 0x1c,0xe8,0xf1,0x1c, + 0x09,0xea,0xf1,0x8c, 0x3f,0xc7,0x08,0xec, 0x59,0xe6,0x12,0xc8, 0xe5,0x25,0x70,0x78, + 0x3d,0x69,0xa8,0x97, 0x15,0x52,0x08,0x1c, 0x0d,0xb4,0x1a,0xb9, 0xd8,0xb2,0x65,0x8c, + 0x77,0x96,0x96,0x4d, 0x2f,0xfe,0x98,0xaa, 0x77,0x25,0x76,0x2c, 0x01,0x50,0xae,0xa7, + 0x19,0x3e,0xde,0x5c, 0x3e,0x45,0xa7,0x3e, 0x1b,0x0e,0xdd,0x81, 0xf4,0x92,0xed,0x40, + 0x94,0xd4,0x7d,0x9d, 0x21,0x84,0x19,0xb4, 0x08,0x93,0x0a,0x93, 0xd0,0x41,0x20,0x0e, + 0xbc,0x98,0x1c,0x95, 0xd4,0x46,0xda,0xbe, 0x4e,0xb6,0x6c,0x10, 0xf4,0x23,0x77,0xc7, + 0x7e,0x0d,0x41,0x20, 0x54,0xc1,0xed,0x2c, 0xe1,0x85,0x1d,0x22, 0x77,0x39,0x58,0x7a, + 0xe3,0x1f,0x0c,0x30, 0xd2,0x8f,0x9a,0x81, 0xa3,0x44,0x1d,0x1f, 0x7b,0x4d,0x1e,0xf4, + 0x8b,0x34,0xe1,0xe3, 0x4c,0xef,0xc6,0xb4, 0xca,0x8e,0xd6,0x76, 0xf9,0xa2,0x54,0xed, + 0xe6,0xe6,0xa7,0x61, 0x62,0x24,0x90,0x11, 0xb2,0xdc,0x1d,0x92, 0xf8,0x14,0xbe,0x53, + 0xb2,0xbb,0x7d,0xac, 0x8c,0x4a,0xd4,0x8f, 0xf8,0xec,0x9b,0xc9, 0xa5,0x99,0x5c,0x48, + 0x58,0x78,0xc5,0x97, 0x5e,0x86,0xe4,0x06, 0x37,0xd5,0xf9,0x05, 0x13,0xb3,0x42,0x1a, + 0x8a,0x2d,0xed,0x3b, 0xf1,0x8f,0xa5,0x6e, 0xd7,0xb0,0x6a,0x1d, 0x91,0xf6,0x2e,0x33, + 0x1e,0xb0,0x97,0xe2, 0x0f,0xf6,0x19,0x3b, 0x2c,0xcc,0xd2,0x72, 0x9e,0x57,0xa8,0x2d, + 0xfb,0xa9,0xa6,0x4e, 0xf0,0x33,0x25,0xac, 0xc1,0x01,0x72,0x98, 0xcf,0x14,0x2b,0x66, + 0x18,0xaa,0x15,0xa9, 0x8b,0xe5,0x20,0x78, 0x9d,0x27,0x3e,0xb5, 0x2d,0xac,0xd7,0x80, + 0x6f,0x41,0xb3,0xad, 0x72,0xb2,0x17,0x0c, 0xc2,0x0f,0x45,0x95, 0x68,0x1c,0x7f,0x0a, + 0x68,0xcf,0xd2,0xf5, 0x21,0x94,0x9c,0x7e, 0xf0,0x7f,0xdf,0x42, 0x62,0x18,0xe8,0x01, + 0xd5,0x8b,0x1c,0x79, 0x03,0x21,0xbd,0x2a, 0xf4,0x3b,0x4d,0x2f, 0xf8,0x69,0xe2,0xc3, + 0x55,0xd9,0x28,0xa4, 0x20,0xd4,0x9b,0x33, 0xec,0x6a,0xe8,0xf8, 0xc3,0xcf,0xbb,0x21, + 0xc7,0xff,0x44,0x68, 0x06,0x6e,0x3f,0x79, 0x57,0x49,0x4f,0xc0, 0x3e,0xf1,0x3a,0xc1, + 0xa0,0x77,0x50,0x7b, 0x40,0x61,0x73,0x5c, 0xdc,0xa9,0x0f,0x19, 0x11,0xe3,0x22,0x5f, + 0x62,0xcb,0xd0,0xff, 0x9a,0x23,0xcf,0xe1, 0xfb,0xe2,0xa5,0xc7, 0xe6,0xeb,0xdb,0x0c, + 0x4e,0x36,0x0c,0x94, 0x90,0x2a,0x29,0x10, 0x7b,0x26,0x41,0xe5, 0xf5,0xa6,0x2b,0xc1, + 0x18,0x83,0xf7,0xf0, 0x35,0x8b,0xa0,0xc1, 0xd3,0x0d,0xba,0x6f, 0x81,0xf4,0x44,0x6c, + 0x8b,0xf6,0x2c,0x0e, 0x3b,0xa2,0xa9,0x95, 0x7c,0x5c,0x72,0x93, 0x6c,0x5f,0xe2,0x0b, + 0xb0,0xb4,0x4e,0x76, 0xdb,0x86,0xe6,0x1a, 0x39,0xd7,0xeb,0x36, 0xb6,0xca,0x4a,0x83, + 0x94,0xc2,0x16,0xbc, 0x90,0x08,0xf0,0xd0, 0x44,0xaf,0xb5,0x6b, 0x79,0xe8,0x2b,0xf6, + 0xf7,0xb6,0x27,0x5a, 0x58,0x92,0x71,0x8c, 0xff,0x7a,0xe6,0x04, 0xa3,0xf3,0xb4,0xfd, + 0xc5,0x86,0x54,0xca, 0x0a,0xa6,0xfb,0xef, 0x1e,0x73,0x68,0x2d, 0x15,0x4b,0x2a,0x05, + 0x82,0x96,0x6d,0xbf, 0xcc,0x7a,0x7b,0xee, 0xab,0xa6,0x89,0x6b, 0x25,0xac,0x22,0x8b, + 0x44,0x1c,0xa7,0xe8, 0x0d,0xfc,0x3b,0x09, 0xe7,0x7f,0x12,0xc2, 0x97,0xaa,0x59,0xc0, + 0xb7,0x6c,0xb8,0x6b, 0xdf,0xd2,0x82,0x2c, 0x0b,0xe6,0x42,0x94, 0x48,0xf7,0xd5,0x09, + 0x7d,0x93,0xb8,0xe2, 0x72,0x85,0x59,0x5d, 0xb0,0xb4,0x40,0xcc, 0x41,0xfe,0x35,0xeb, + 0xd2,0x18,0xa7,0x9c, 0xd8,0x13,0x4e,0xc7, 0xc5,0xb4,0x2d,0x04, 0xc9,0x59,0xbe,0xfc, + 0x59,0xf8,0xc7,0x67, 0x63,0xe2,0x79,0x90, 0x0e,0x94,0x02,0xe2, 0xd7,0xb1,0x12,0x7e, + 0x62,0xf6,0x2b,0x93, 0xe8,0x4b,0x37,0x1c, 0x30,0x0c,0x4a,0x6d, 0x17,0x00,0x31,0xa4, + 0x82,0x58,0x62,0xb5, 0x22,0x71,0xf5,0xbe, 0xc6,0x76,0xfc,0x9b, 0xd8,0x09,0xfc,0xfa, + 0x7b,0xa9,0xeb,0x47, 0xd8,0xcc,0xc8,0x95, 0xb1,0x93,0x4e,0xc3, 0xb3,0x87,0x58,0x86, + 0xc6,0xe0,0x98,0x8b, 0x34,0xb9,0x00,0xa8, 0x01,0x70,0xa2,0x90, 0x97,0x9e,0x91,0x27, + 0x17,0xf2,0x71,0x4a, 0xa1,0xc5,0xde,0x06, 0xf4,0x0c,0x11,0xb3, 0xd6,0xc6,0x6a,0xd1, + 0xdf,0x11,0x89,0x6a, 0x82,0x66,0x41,0x8c, 0xf1,0x54,0x88,0x9e, 0x0c,0xfe,0x2a,0xa1, + 0x9a,0x8f,0xbc,0xce, 0xe4,0x5a,0xe9,0x5c, 0x18,0x76,0xdc,0x70, 0x08,0xd8,0x14,0x3e, + 0xb4,0x99,0xf0,0x19, 0x54,0x83,0x5f,0xcd, 0xba,0x0c,0x78,0x67, 0xb8,0x53,0x74,0x92, + 0x91,0x23,0x21,0x52, 0x46,0xcb,0x7e,0xfe, 0x54,0xdd,0xbb,0x98, 0x60,0x12,0x57,0x86, + 0xd1,0x8e,0x1c,0xcc, 0x4e,0x9c,0xaa,0xd1, 0x48,0x30,0x54,0x34, 0xb8,0x8f,0x29,0x47, + 0xb4,0xf5,0xa6,0x5d, 0x8c,0xba,0x00,0x0f, 0x1d,0xcb,0x29,0xf1, 0x2f,0x53,0xfe,0x75, + 0xed,0xd3,0xc7,0x0a, 0x72,0xbb,0x73,0x80, 0xb8,0xf1,0x47,0x33, 0xeb,0x43,0xc2,0xa7, + 0x8c,0x3a,0x7d,0x8a, 0x1f,0x72,0x4e,0x26, 0x02,0x17,0x06,0x70, 0xcf,0x45,0x74,0x24, + 0x14,0xd2,0x77,0x19, 0x51,0x29,0x2f,0xf3, 0x66,0xe6,0x2b,0xf3, 0x41,0xef,0x76,0x96, + 0xa1,0xf1,0xc3,0x56, 0x0f,0x1a,0x2d,0x29, 0x6e,0xcc,0x97,0x66, 0x20,0x99,0xb6,0x8b, + 0x59,0x0f,0x0d,0x49, 0x1d,0x28,0xf9,0xb3, 0x88,0x82,0x1b,0xf4, 0x71,0xba,0x59,0x13, + 0xfc,0x8d,0xb7,0x07, 0x63,0xdc,0xd7,0x5f, 0x2f,0xd8,0x18,0x8c, 0x7d,0x6a,0xd0,0x07, + 0xd0,0x7e,0x54,0x2f, 0x5e,0x75,0xc3,0xfc, 0x4f,0x1a,0x9d,0xf9, 0xfb,0xb2,0x75,0xc3, + 0xee,0x3d,0xd5,0xbb, 0x78,0x36,0x0f,0xfb, 0xc1,0xeb,0xcb,0xcc, 0xfe,0xe1,0xcf,0x20, + 0xa2,0xb7,0x6e,0xfc, 0xdd,0x91,0xee,0xc6, 0xc3,0x3d,0x1f,0x0a, 0xf1,0x7b,0xd5,0x4b, + 0xd9,0x87,0x1d,0x92, 0x5c,0xb2,0x65,0x51, 0x24,0x38,0xf8,0x28, 0x9c,0x7c,0xf4,0xd5, + 0xe3,0x6d,0x38,0x84, 0x73,0xe8,0xbd,0x5a, 0xb2,0xbd,0x4f,0x1a, 0x6e,0xf2,0x2a,0x36, + 0x21,0x7b,0x8d,0x94, 0x1b,0xcc,0xf7,0x31, 0x9e,0x4e,0x6d,0x09, 0xfd,0x20,0xbe,0xcd, + 0x8e,0xb1,0x42,0x96, 0x0c,0x2c,0x6c,0xc1, 0x5f,0xd2,0xb3,0xfa, 0x44,0xb0,0x06,0xdc, + 0xaa,0x19,0xe9,0x9a, 0x9e,0xbf,0x48,0x50, 0xe1,0xe7,0x5a,0x62, 0x78,0xf0,0x74,0x72, + 0x99,0x2a,0x95,0x6d, 0x77,0x09,0x7e,0x11, 0x8f,0x9e,0xdf,0x96, 0x0e,0x72,0x73,0xd5, + 0xbe,0xf1,0xff,0x5f, 0xca,0x33,0xbb,0x92, 0x5a,0xc0,0xea,0xe4, 0x1a,0xb4,0xdd,0x17, + 0x79,0x22,0x23,0x2a, 0x7c,0x52,0xcd,0xd0, 0x3d,0xfd,0x0e,0xa4, 0x6c,0x1a,0xe5,0x9e, + 0xac,0x93,0x92,0x65, 0x77,0x88,0x3e,0x34, 0x3c,0xa2,0x67,0x46, 0x55,0x7a,0xd0,0x16, + 0xb1,0xd9,0x2e,0x7b, 0xfb,0xb5,0xfc,0x62, 0xf3,0x78,0x1c,0xc3, 0x31,0x2e,0x02,0x17, + 0xfe,0x18,0xf0,0x18, 0x2e,0xe6,0xfc,0x28, 0xc7,0xdb,0x0b,0x88, 0xa6,0x52,0x26,0xcc, + 0xd7,0x44,0xad,0x69, 0x45,0x55,0x7b,0x8e, 0x84,0x8e,0x41,0xec, 0xb3,0x0a,0xd2,0x8b, + 0x86,0x81,0x60,0xeb, 0x8f,0x7e,0x19,0xb1, 0xa4,0x07,0xcf,0x9b, 0xd3,0xc9,0x91,0x0e, + 0x08,0xef,0x08,0x12, 0x47,0xbd,0x0d,0xf6, 0xa0,0x33,0xb1,0x81, 0x2f,0xe5,0x18,0x69, + 0x11,0x27,0xc9,0xae, 0x66,0x8b,0xaa,0xa2, 0x55,0xa3,0x6d,0x52, 0x62,0x33,0xb2,0x26, + 0x0c,0x82,0x04,0xb1, 0xfa,0x11,0x10,0xae, 0xa8,0x30,0xe9,0x24, 0x09,0x7b,0x25,0x08, + 0x84,0x36,0x2c,0xfd, 0xcf,0x6a,0x92,0x16, 0xd7,0x20,0xd2,0xd6, 0x32,0xca,0x2f,0x41, + 0x9f,0x60,0x10,0xe9, 0x41,0xde,0xdb,0xc2, 0xdc,0x38,0xd3,0xa1, 0xc1,0x9e,0xfc,0x73, + 0x01,0xed,0x6f,0x12, 0x23,0xa0,0xf0,0xed, 0x76,0x29,0xf4,0x48, 0xcf,0xbf,0xc7,0x41, + 0x35,0x77,0xa4,0x34, 0x12,0xff,0xcb,0x11, 0xb1,0xd4,0x9a,0xfa, 0xb1,0x1e,0x81,0x38, + 0x95,0xed,0xd0,0xe1, 0x1a,0x1a,0x2a,0xf1, 0x89,0xfe,0x2a,0x26, 0xc2,0xad,0xbe,0xa9, + 0x85,0x4e,0x9d,0xa6, 0x48,0x08,0xfb,0x5b, 0xd1,0xb0,0xab,0xe9, 0x6f,0x6f,0xdb,0xe7, + 0x97,0x71,0x54,0xbb, 0xbd,0xe1,0xec,0xfc, 0xc7,0xa7,0xb1,0x5b, 0xf4,0x07,0x59,0x23, + 0xd9,0x71,0x4b,0x58, 0xb3,0x08,0xd0,0x88, 0x6c,0x08,0xbe,0x14, 0x00,0x91,0x73,0x31, + 0xdb,0xf7,0x7e,0xfa, 0x61,0x90,0x02,0xb5, 0x84,0x35,0xb0,0xe5, 0xb7,0xf6,0xfc,0x8a, + 0x11,0x27,0x20,0x1f, 0x81,0x3e,0xaa,0x79, 0xe0,0x1f,0x1a,0xf2, 0xda,0x09,0xcb,0x1f, + 0x48,0x8a,0xe1,0xcd, 0x48,0x63,0xb4,0xcb, 0xe0,0x2b,0x41,0x18, 0xf6,0x8a,0xb5,0xae, + 0x8e,0xa8,0xe6,0x3d, 0x09,0x56,0x46,0x69, 0xcc,0xaf,0xbc,0x2d, 0x26,0x0e,0xb4,0x89, + 0x73,0x1f,0xb3,0x16, 0x62,0xfb,0xe2,0x2f, 0x08,0xa4,0xfb,0x91, 0xd7,0x89,0xae,0x94, + 0xb3,0x5c,0xa2,0x18, 0x3d,0xb0,0xca,0x84, 0x31,0x2d,0x0d,0x4c, 0xd1,0x49,0xc5,0xa7, + 0xb8,0x50,0xf0,0x5a, 0x00,0x96,0x6a,0x2d, 0xed,0x40,0xb1,0x2e, 0x70,0x46,0x58,0x8e, + 0x43,0x75,0x34,0xcd, 0xf4,0x95,0xd6,0x81, 0xcf,0x7c,0x94,0xcf, 0xc3,0x7e,0xef,0xf2, + 0x70,0x8a,0x22,0x03, 0x6b,0x60,0xf0,0xd7, 0x10,0xaa,0x8b,0x8c, 0x65,0x21,0xb8,0x8e, + 0xd6,0x85,0xc2,0x59, 0x97,0x78,0x9d,0xed, 0xd8,0xb5,0xb6,0x4d, 0xf3,0xf4,0x63,0x65, + 0x16,0x23,0x1f,0xb9, 0x39,0xc2,0xd9,0x94, 0xe4,0x8f,0x7e,0x40, 0x41,0x15,0x76,0xed, + 0x3b,0x7a,0x3d,0x7f, 0xe2,0x52,0x89,0x20, 0x08,0x3f,0x61,0x47, 0x15,0x16,0x5e,0x39, + 0x24,0xab,0x45,0x69, 0x48,0x8e,0xae,0x2e, 0x52,0xbc,0x3a,0x0d, 0x27,0x65,0x2b,0xd4, + 0x9a,0x31,0xe1,0x46, 0xaf,0x45,0x61,0x22, 0x06,0x2d,0x09,0x53, 0xad,0x2f,0x2c,0x6e, + 0x8d,0x66,0xbb,0x54, 0xd8,0x41,0xa8,0x93, 0x8f,0x35,0x4d,0x64, 0x24,0x49,0xe9,0x6a, + 0x7c,0xd8,0x8f,0x05, 0xe2,0xdf,0x2f,0x10, 0x17,0xf6,0x1c,0x19, 0xed,0x5e,0xad,0x6e, + 0xd6,0x3e,0xbd,0x57, 0xd8,0xd3,0x10,0x05, 0x58,0x07,0x76,0x4a, 0x05,0x75,0x4c,0x04, + 0x02,0x55,0x20,0xfe, 0xd7,0xcc,0xb3,0xf6, 0xd7,0x58,0x35,0x07, 0xd3,0xb4,0xb0,0xe4, + 0x41,0x53,0x4b,0xaf, 0x20,0x90,0x9f,0x68, 0x83,0xf1,0xb8,0x52, 0x30,0x95,0x4d,0x3c, + 0x80,0x1a,0x32,0x0b, 0x6d,0xdc,0xf1,0xaa, 0xba,0x08,0xc6,0x1b, 0x21,0x75,0xf8,0xb1, + 0x32,0x5e,0x74,0x7e, 0xa7,0x3a,0x4f,0x15, 0x7d,0xd8,0x7e,0x89, 0xa2,0x75,0xdf,0x89, + 0xd4,0xb6,0xc6,0xe0, 0x2b,0x17,0xca,0x6e, 0x92,0x63,0x08,0xa3, 0x47,0x59,0xec,0xfd, + 0x7c,0x77,0x09,0x07, 0xe5,0xc6,0x01,0x61, 0x58,0xbf,0x9b,0xf6, 0x6a,0x93,0xba,0x46, + 0x85,0xc3,0x89,0x63, 0xde,0xe3,0xe0,0x51, 0x95,0x13,0x2c,0x94, 0xda,0xdc,0x7e,0x82, + 0xc2,0xc9,0x8a,0x28, 0x91,0xad,0x89,0x8d, 0x5b,0x1b,0xd1,0x6a, 0xf8,0x0c,0xca,0xf3, + 0xe6,0xab,0x52,0xbe, 0xe4,0xc5,0x49,0x2a, 0x6a,0x2d,0x24,0x52, 0xc6,0xdf,0xa2,0x99, + 0x33,0x2d,0xe0,0x09, 0x69,0x18,0x88,0x35, 0x8c,0xed,0xb6,0xfe, 0xff,0xe8,0xf6,0xd5, + 0xea,0x6e,0x2b,0x07, 0x49,0xe3,0xe2,0x50, 0xca,0x7d,0x5e,0xda, 0x38,0x0c,0x76,0x51, + 0xd3,0x29,0x2e,0xe6, 0xce,0x8f,0x8d,0x8c, 0x94,0xe8,0x95,0x67, 0xb5,0x9c,0xf1,0xbf, + 0xb4,0x56,0x3a,0xde, 0xcf,0x44,0x49,0x7e, 0x47,0x47,0x32,0x96, 0xd2,0x38,0x0d,0x3d, + 0xbf,0x9b,0x27,0xae, 0xd3,0xc7,0x86,0xa7, 0x32,0x35,0xb0,0x6c, 0x3f,0x18,0x5a,0x4f, + 0xa3,0xb5,0x03,0x5e, 0x27,0x67,0x27,0x08, 0x7f,0xb1,0xc1,0xc7, 0x14,0x0f,0x8c,0xf2, + 0x71,0x01,0xaf,0x42, 0x5a,0x9d,0xac,0x74, 0xb6,0xb0,0x61,0x2b, 0x16,0x74,0x47,0x6a, + 0x1c,0x77,0x80,0x46, 0x58,0x4b,0x10,0x52, 0x1a,0x92,0xd8,0x9d, 0xfb,0x5d,0x12,0x6c, + 0x2b,0xf3,0xd6,0x3c, 0x62,0x32,0x5a,0xdf, 0x23,0xf1,0xeb,0xd6, 0x8f,0x39,0xdb,0x47, + 0x8e,0xb4,0xae,0x42, 0x76,0xed,0x9c,0x81, 0xb5,0x7f,0x9b,0xf4, 0x8e,0xe8,0x47,0x4b, + 0x2f,0x64,0xd6,0xe0, 0xfe,0x45,0xf2,0x3b, 0x3b,0x35,0x49,0x0f, 0xe0,0x3e,0x4b,0x82, + 0xfa,0xb2,0x05,0x9c, 0x4b,0x37,0x64,0x70, 0xba,0xce,0x73,0x04, 0x9d,0x31,0x29,0xeb, + 0x17,0x39,0x70,0x89, 0x06,0xaa,0x3c,0xef, 0x5d,0xce,0x4f,0x19, 0xc0,0xad,0x09,0x2b, + 0x88,0x64,0xad,0x8a, 0x6b,0x52,0x5e,0x18, 0xaf,0x3a,0x38,0x3c, 0x3b,0x0f,0x7a,0x1c, + 0x5b,0x5e,0x04,0xbf, 0xda,0x8b,0xd2,0xb9, 0x82,0xe9,0x93,0x77, 0x83,0xff,0xb0,0x7d, + 0xdf,0xe7,0xb5,0xbb, 0x15,0x68,0x3b,0x38, 0x2a,0x33,0xbd,0x93, 0x8b,0xbe,0x15,0xbe, + 0x42,0xac,0x83,0xf7, 0x1a,0x9f,0x56,0xcc, 0xb1,0xf9,0xeb,0xd6, 0xa3,0x96,0x4e,0x32, + 0x78,0x76,0x12,0x80, 0x9d,0xa5,0xe3,0x2a, 0x9e,0xb8,0xd3,0x10, 0xba,0xca,0x93,0x32, + 0xbd,0x18,0x49,0x04, 0xe5,0xbe,0x95,0x52, 0xa0,0x3a,0x4c,0xa5, 0x06,0x56,0xb2,0x78, + 0x72,0xc7,0xa5,0x8d, 0xc4,0xf5,0x28,0x8c, 0xe7,0xce,0x69,0x4a, 0x7b,0xf6,0x70,0x75, + 0x11,0x59,0x41,0x65, 0x3b,0x4a,0x70,0xc3, 0xa6,0x9f,0x4a,0x3a, 0x7c,0x17,0x6e,0x95, + 0x0c,0xd0,0x70,0xb6, 0x24,0xa5,0x76,0x1b, 0x21,0x41,0x38,0x69, 0xb0,0xa6,0xf7,0xa6, + 0xcc,0x4b,0xe9,0x59, 0x4c,0x4d,0x0f,0x4c, 0x01,0xcc,0xac,0xb9, 0x16,0xbb,0xc2,0x21, + 0x6c,0xde,0x84,0x81, 0x4e,0x9a,0x60,0xe7, 0x1a,0x7d,0xe8,0xea, 0xca,0x78,0xdd,0xb0, + 0x57,0x3f,0x80,0x20, 0x93,0x98,0x9a,0x19, 0xed,0x3f,0x7b,0x78, 0x4a,0x5f,0xa4,0xf5, + 0xf1,0x52,0x1f,0x3e, 0xd9,0xa2,0x5c,0xe1, 0xf2,0xed,0xe9,0xe2, 0x01,0xd2,0xde,0x3e, + 0xdf,0xdb,0x5e,0x3c, 0x8a,0xf6,0xa1,0x95, 0xe0,0x8b,0xc3,0x37, 0x68,0xd5,0xc8,0xaf, + 0x1c,0xae,0x66,0xb0, 0x37,0xf0,0x64,0x49, 0x8e,0x66,0x64,0x6f, 0xea,0xa5,0x72,0x8e, + 0xa2,0x23,0xd4,0x6d, 0x27,0x4a,0xe7,0x54, 0x90,0x11,0xe3,0x10, 0x75,0xa8,0x78,0xf6, + 0xdb,0xef,0x4b,0x7d, 0xe4,0x95,0x63,0x45, 0xa1,0x01,0xb6,0x1a, 0xe3,0x92,0x42,0x2a, + 0x4b,0xd7,0x64,0x56, 0xf6,0x20,0x54,0xd5, 0x5e,0x70,0x6a,0x26, 0x12,0xa1,0x04,0x9b, + 0x67,0x31,0x5c,0xf1, 0xb4,0xb9,0x15,0x48, 0x1d,0x27,0xb7,0x22, 0xc2,0x6d,0x1e,0x0a, + 0x65,0x22,0xf5,0x09, 0x03,0x7a,0x17,0xa3, 0x02,0xbc,0x4d,0x86, 0x66,0x08,0xf7,0x19, + 0x13,0xd3,0xfe,0x82, 0xbd,0xd0,0x06,0x12, 0x31,0x95,0xb9,0xe2, 0x8e,0x07,0x48,0x89, + 0x58,0x9f,0x40,0x42, 0x7a,0xee,0x42,0xc8, 0x09,0x58,0x25,0x58, 0x74,0xcd,0x0e,0x45, + 0xfb,0xd9,0xb0,0xcb, 0x47,0x5f,0x1e,0x47, 0x93,0x69,0x02,0xa6, 0x6f,0xd5,0x11,0xc8, + 0x20,0x7f,0x63,0xa1, 0xe6,0x1d,0xf5,0xba, 0xa9,0x80,0x54,0x51, 0x73,0x65,0x07,0x44, + 0x98,0xf6,0x04,0xd9, 0x47,0xfa,0x40,0xa1, 0x78,0x9b,0xdf,0xa1, 0x8e,0x95,0xfb,0x9a, + 0x20,0x87,0xfc,0x3d, 0xfd,0x5f,0x85,0xb0, 0x27,0xf6,0x22,0x5d, 0xfd,0x65,0xb2,0x37, + 0xb6,0x55,0x24,0xd5, 0xee,0x8c,0x39,0x1a, 0xf5,0xc4,0x19,0x1c, 0xb2,0x76,0xc6,0x2d, + 0x61,0xe4,0x7b,0xb8, 0xb4,0xaf,0x90,0xc3, 0x51,0xa8,0x8d,0x93, 0x47,0x6a,0x79,0xb1, + 0x51,0x31,0x58,0xa1, 0x84,0xb7,0xf0,0x9f, 0x6e,0xdf,0x6b,0x2b, 0x47,0xb6,0x6a,0x61, + 0xa3,0x43,0xbb,0x37, 0xb8,0x85,0x30,0xea, 0x7d,0x3a,0xc5,0x7c, 0xc6,0xdb,0xab,0xee, + 0x3e,0x26,0x6d,0xae, 0x10,0xe9,0x98,0xf6, 0xaa,0xdb,0xc9,0x0a, 0xeb,0xa7,0xc6,0x4e, + 0x32,0xdc,0xdf,0x96, 0xa9,0x9e,0x2c,0xd5, 0xf4,0xf7,0xdd,0xab, 0xe8,0x7a,0x93,0x10, + 0x2c,0x10,0x49,0xc6, 0x58,0x81,0x8c,0x9c, 0x79,0x61,0x45,0xc5, 0xf2,0xbc,0xd7,0xb0, + 0x2a,0x70,0x08,0xc3, 0x07,0x71,0x95,0x73, 0x5f,0xf0,0xc5,0xbb, 0xdd,0x13,0xaa,0xa0, + 0x38,0xc3,0xe7,0xde, 0xb5,0x28,0x67,0x56, 0xd0,0x10,0x20,0x7f, 0x49,0x69,0x81,0xa5, + 0x9d,0xbc,0x3e,0x81, 0x95,0x35,0x86,0xb7, 0x91,0xff,0xf6,0xf2, 0x4f,0xac,0xc3,0xfc, + 0xa5,0xcf,0x98,0xc1, 0x60,0x50,0x08,0xc6, 0xb8,0xa2,0x20,0xe2, 0x9f,0x23,0x30,0xa8, + 0x53,0xd5,0x46,0x9d, 0x83,0x64,0x5e,0xbd, 0x0a,0x13,0x69,0x30, 0xb7,0xd5,0x67,0xbf, + 0xc5,0xb8,0x10,0xf1, 0xa1,0xbf,0x02,0xd9, 0x09,0xe1,0xa0,0x35, 0x3a,0x1f,0xf5,0x33, + 0x56,0x66,0xf3,0xf0, 0xc8,0xa7,0xe7,0xbe, 0xdc,0x73,0x6d,0x63, 0x7c,0x0c,0x58,0x98, + 0xaa,0xa8,0x9a,0xda, 0x8c,0x41,0x84,0xba, 0x23,0xfb,0xa7,0x4f, 0xa5,0xb4,0xbe,0x09, + 0xc6,0x88,0x67,0x75, 0x2a,0xa2,0x13,0x28, 0x6f,0x8d,0xaa,0x3b, 0x12,0x50,0x0e,0xdf, + 0xac,0x08,0x91,0x2b, 0xcf,0xd6,0xba,0x6f, 0xa8,0x3c,0xe8,0x12, 0x91,0xca,0x08,0x4c, + 0xb2,0x1e,0x2a,0x0a, 0xb1,0x35,0x1d,0x65, 0x41,0x79,0xef,0x60, 0xe5,0xb5,0x26,0x45, + 0x67,0xa3,0xa3,0x82, 0x1a,0xd0,0xe0,0x4c, 0x97,0x7b,0x6b,0xcc, 0xa0,0xa2,0xd3,0x72, + 0xfc,0x4b,0xe1,0x3f, 0xee,0xd2,0xc2,0x2a, 0x71,0x81,0x3e,0xd3, 0xe5,0x6a,0x3d,0xfa, + 0x61,0x05,0xb6,0x3a, 0xbe,0x6e,0xc8,0x38, 0xb6,0x84,0x4b,0x6f, 0x59,0x88,0x67,0x75, + 0x5e,0x78,0x71,0x17, 0xc4,0x08,0x05,0xf2, 0x8c,0xaf,0x22,0x33, 0x0f,0xcc,0x90,0x3c, + 0xd8,0x66,0xf5,0xa5, 0x22,0xf2,0x00,0x26, 0x67,0x3c,0x8e,0x56, 0x96,0x5b,0x1e,0x95, + 0xff,0xa9,0xcb,0x69, 0x63,0xfd,0xc8,0x34, 0xcd,0x0f,0xa0,0x00, 0xb2,0xf2,0x2f,0xc3, + 0x3a,0xa9,0x39,0x64, 0xf2,0x71,0x81,0xbd, 0xac,0x3c,0x94,0x31, 0x65,0x21,0x7f,0x7b, + 0x38,0x7a,0x19,0x1e, 0x00,0x3a,0x87,0x35, 0x2a,0x56,0x0e,0x90, 0xec,0x34,0x52,0x22, + 0x9d,0x9f,0x70,0xe0, 0x19,0x78,0xc4,0x4e, 0xa9,0xc8,0xe7,0x92, 0x1b,0xa1,0x0c,0xd2, + 0x32,0xc6,0x05,0xd4, 0x06,0x79,0x16,0xb6, 0xc3,0xcc,0x09,0x99, 0x31,0xb6,0x04,0xe3, + 0x7a,0x49,0xa0,0x0f, 0x5d,0xcf,0x37,0xfe, 0xfd,0x34,0x93,0xfd, 0xea,0xef,0x00,0x2c, + 0xd3,0x01,0x94,0x53, 0xe6,0x39,0xee,0x77, 0xf5,0x8e,0x86,0x93, 0x41,0x37,0xe0,0x56, + 0xa7,0x73,0xaa,0xa0, 0x85,0xbb,0x33,0x19, 0xb0,0x77,0x2a,0xc6, 0x8b,0x19,0x80,0x2c, + 0x30,0x39,0x91,0xad, 0xad,0x5e,0xb8,0x43, 0x95,0xab,0x88,0xaa, 0x7a,0xf1,0xb7,0x2a, + 0x1d,0x00,0x2e,0x8f, 0xee,0x5f,0x25,0xc6, 0x3b,0x8c,0xe6,0x57, 0xf1,0xb1,0xdc,0x51, + 0x27,0x0c,0xb3,0xa0, 0xfb,0xed,0xda,0xee, 0xf1,0xe2,0xb8,0x8b, 0x8b,0x79,0x38,0xcf, + 0x5f,0xeb,0x15,0x43, 0xb5,0x8b,0xe6,0x0d, 0x24,0x08,0xde,0x7d, 0x31,0xcb,0xbc,0x7b, + 0xba,0x50,0x2f,0xdf, 0xc9,0x20,0x3d,0xb6, 0x82,0x9b,0x34,0xff, 0x54,0xde,0x97,0x9d, + 0x6f,0x8c,0x02,0x2c, 0xa6,0x4a,0x8f,0xc5, 0xd8,0x5b,0x2f,0x3a, 0x99,0x70,0xfc,0x5c, + 0xfd,0x58,0x27,0x2c, 0xd3,0x25,0xe3,0xbb, 0xa8,0x63,0x29,0xf9, 0xb3,0x74,0x69,0x38, + 0x2a,0x95,0x08,0x33, 0x9a,0x81,0x5a,0xd6, 0xd0,0x8c,0x10,0x51, 0xc8,0xd5,0x27,0x14, + 0x85,0x01,0x04,0x1b, 0xbd,0xdc,0x80,0xe8, 0xa7,0xa5,0xfc,0x55, 0xaf,0xe0,0x2a,0x6d, + 0xe7,0x3f,0x80,0xf7, 0x64,0x73,0x40,0x0e, 0xc2,0x3b,0xb8,0x5a, 0x9b,0x25,0x33,0xd6, + 0xfc,0x2e,0x45,0xe1, 0x52,0x2d,0x32,0xed, 0x8b,0x69,0xe0,0xc6, 0xc9,0xd5,0x4a,0xdd, + 0xbb,0xdc,0x8d,0xc5, 0x81,0xb5,0x7a,0xc8, 0x84,0x10,0x76,0x0e, 0xbf,0x73,0x11,0x71, + 0xc4,0xe1,0x3f,0xb7, 0x9c,0xfb,0xa3,0x31, 0x19,0xeb,0x3d,0x35, 0xa8,0xc9,0x80,0x74, + 0xb1,0xf3,0x9e,0x32, 0x14,0x97,0xd6,0x35, 0xc3,0xe4,0x52,0xcd, 0xb2,0xad,0xf4,0x53, + 0x47,0x30,0x06,0x51, 0x47,0xf3,0x50,0xfb, 0xf0,0x1b,0xb4,0xba, 0xd2,0xd4,0xe8,0x58, + 0xc2,0xd5,0x22,0x58, 0x82,0xbf,0x04,0xaa, 0x10,0xaa,0x6f,0x19, 0x52,0xf3,0x98,0x05, + 0x27,0x34,0xdd,0xd2, 0x4b,0x4b,0x94,0xd4, 0x44,0x0a,0xcc,0xcf, 0xd5,0x4b,0xdc,0x33, + 0xdf,0x8f,0x58,0x1a, 0x48,0xc0,0x79,0xa8, 0x94,0x4a,0x81,0xf4, 0x1e,0x03,0xb1,0x29, + 0x36,0x86,0x00,0xb2, 0xcd,0x3f,0xe3,0xa6, 0xcd,0x9f,0xf0,0xf6, 0x3a,0x9e,0x66,0xf2, + 0xe6,0xaa,0x18,0x42, 0xc2,0x04,0xb2,0x10, 0x6a,0x53,0x76,0x78, 0x4b,0xb0,0x0a,0x5f, + 0xfe,0x6f,0x8c,0x01, 0xe8,0x8e,0xf4,0x90, 0xbd,0x4d,0xc2,0x2f, 0x85,0xb7,0x5e,0x37, + 0x66,0xb5,0x9c,0xf7, 0x75,0xb6,0x86,0xfd, 0x9d,0x32,0x82,0x21, 0xe1,0xb7,0xe4,0xb7, + 0xb1,0x34,0x79,0x83, 0xfb,0x47,0x28,0x86, 0x07,0x56,0xcc,0x51, 0x57,0x12,0x76,0xf8, + 0x98,0x37,0x0c,0x30, 0x18,0xd3,0xc7,0x8d, 0xa8,0x65,0xf5,0xd7, 0xdf,0x2f,0x77,0x46, + 0xdd,0x30,0xff,0x66, 0x3e,0x3b,0x7f,0x53, 0xf8,0x35,0xfc,0xde, 0x46,0x9a,0xe3,0xbf, + 0x2d,0x4e,0xef,0x0d, 0xd1,0x42,0x21,0xfa, 0xce,0xe6,0x2a,0xfa, 0xf5,0x7a,0x93,0x78, + 0x79,0x27,0x3f,0xad, 0x8d,0x17,0xd0,0x7d, 0xdb,0x49,0xca,0xa1, 0x35,0xd4,0x97,0x14, + 0x91,0x25,0x6d,0x86, 0xf0,0x91,0x0b,0xbc, 0xc2,0x80,0xa7,0xee, 0xc1,0x32,0x19,0x29, + 0x06,0xeb,0x7a,0x8c, 0x04,0x08,0xb7,0x04, 0xae,0x04,0xfe,0x41, 0x5b,0x00,0x66,0x67, + 0x7f,0x76,0x1a,0xe4, 0x89,0x09,0xa7,0x78, 0x6b,0x95,0x28,0x74, 0x98,0x4b,0xd9,0xda, + 0x96,0xe6,0xf6,0xe3, 0xe8,0x95,0xd9,0x9c, 0x77,0x73,0xd2,0xd5, 0xf2,0xa7,0x64,0x61, + 0xe6,0xfe,0x71,0xc3, 0xea,0xba,0x84,0x05, 0x6e,0x04,0x2b,0x21, 0xc4,0xe2,0x34,0xfe, + 0xc9,0x3d,0x95,0x51, 0xbb,0x96,0x0e,0x29, 0x04,0x70,0xaa,0x76, 0xcc,0x67,0x99,0xcf, + 0x46,0xb5,0xbd,0x5d, 0xdd,0x9f,0x41,0xe4, 0x78,0x05,0x11,0x00, 0xb0,0xb2,0x70,0xef, + 0x0f,0x6f,0x2a,0xf0, 0xf8,0x8b,0xd3,0x8a, 0xbc,0x34,0xd0,0x4f, 0x3e,0x7d,0xf0,0xe9, + 0xa5,0x44,0xb1,0xc4, 0xb0,0x24,0x0d,0xd5, 0xd6,0xd2,0x9b,0xea, 0xd4,0xd2,0x42,0x5f, + 0x56,0x08,0x36,0x26, 0xd6,0xd8,0x5d,0xc9, 0x3e,0xa1,0x38,0x27, 0x0e,0xd8,0x7a,0xea, + 0x8d,0x98,0x25,0xf1, 0x24,0xc6,0xf8,0xb0, 0xd1,0x27,0xb6,0xaf, 0xd0,0xd2,0xe4,0xc6, + 0x5e,0x44,0x9d,0x8f, 0x87,0x90,0x09,0xbb, 0x2e,0xe3,0x91,0x62, 0x62,0x37,0xd7,0xb0, + 0x6c,0xa9,0x1f,0xb3, 0x29,0x44,0x24,0x8a, 0xc2,0x1e,0x99,0x22, 0xee,0x70,0xac,0x91, + 0xbb,0x8f,0x09,0x91, 0xf2,0x4e,0x1f,0x15, 0x02,0x3e,0x8e,0x64, 0xf7,0xeb,0x7d,0xab, + 0x68,0x5c,0xa8,0x76, 0x0a,0x8f,0x2e,0x04, 0x00,0xac,0xfb,0xf0, 0xd1,0x77,0xb0,0x1a, + 0x36,0xce,0xa2,0x75, 0xa2,0x65,0xdd,0x1e, 0xe8,0xd6,0x17,0x29, 0x04,0xb5,0xc4,0xc9, + 0x17,0xc8,0x2f,0xc3, 0x7a,0x2a,0xf4,0x79, 0x00,0xa6,0xd6,0xb1, 0x91,0xa4,0x0f,0xb7, + 0x51,0xc8,0xa4,0x4e, 0x6a,0x63,0x1f,0x5c, 0x83,0xb9,0x84,0x72, 0x33,0x6c,0xd0,0x21, + 0x15,0xed,0x6f,0xd7, 0x7b,0x5b,0xcf,0xd1, 0x19,0x51,0x27,0x38, 0x4b,0xfe,0x0e,0xe7, + 0xef,0xdd,0x58,0x50, 0x94,0x4b,0xbd,0x69, 0x79,0x73,0x99,0x07, 0xcb,0xb9,0x50,0x3b, + 0xa8,0xf1,0x27,0xa8, 0xbd,0x28,0xa7,0x7a, 0xee,0x59,0x5b,0xcf, 0xea,0x33,0xdf,0xac, + 0x8c,0x7b,0x84,0x4e, 0xf5,0xd5,0xec,0x3b, 0x1b,0x20,0xcd,0x45, 0x6a,0x00,0xb5,0x89, + 0x3b,0xc1,0x74,0x4c, 0x72,0x91,0x35,0xb3, 0x76,0xff,0xc5,0xd1, 0xd5,0x92,0xac,0x05, + 0xcf,0x26,0xf7,0x86, 0x8f,0x7b,0x47,0x84, 0xec,0xee,0x9d,0xba, 0xdd,0xe0,0xaa,0x66, + 0xe2,0x0e,0xbc,0xb5, 0xc2,0x1f,0x6c,0xe9, 0x92,0x6a,0xac,0x9f, 0x8b,0xb5,0x77,0x51, + 0xc2,0x1c,0x2a,0x98, 0x85,0x20,0x32,0x4a, 0x2f,0x51,0xdd,0xaf, 0xd6,0xd6,0x3d,0x80, + 0x90,0xed,0xa7,0x23, 0xaa,0x76,0xc9,0x31, 0xe0,0xe4,0xa0,0x21, 0xa9,0x96,0xaf,0x8f, + 0xc6,0xa0,0xd7,0xb7, 0x74,0xa3,0x4d,0x65, 0x2b,0x7a,0x6c,0x17, 0x2d,0x56,0x66,0x8a, + 0x9a,0x12,0xff,0xe3, 0xf7,0x37,0xed,0x8b, 0xa6,0x80,0x9b,0xf9, 0xdc,0xbe,0xf8,0xbb, + 0xee,0x2c,0x24,0x21, 0x0e,0x8f,0x3e,0xe6, 0x8a,0x75,0xf1,0xb4, 0xac,0x07,0xe2,0xb6, + 0xec,0x72,0x9c,0xed, 0x6d,0xfe,0x82,0x3f, 0xb6,0x68,0x2d,0x8d, 0x59,0x61,0x06,0x78, + 0x7c,0x9a,0x04,0x82, 0x0f,0x99,0x62,0x33, 0xc4,0x4d,0x58,0x3c, 0x87,0x21,0x87,0x6e, + 0x3a,0xc6,0xc9,0x06, 0x15,0xa5,0x81,0x00, 0xe1,0x1a,0x20,0x93, 0xb3,0x7e,0xfd,0xed, + 0x86,0x60,0xba,0x4b, 0xc7,0x1e,0xda,0xec, 0x3a,0x03,0xa4,0xdf, 0xb5,0x86,0xfc,0x79, + 0x2c,0x8b,0x5e,0x66, 0x27,0xa0,0x3a,0x5c, 0xe5,0x24,0x5a,0x64, 0x84,0x32,0xc7,0xe8, + 0xa5,0xc8,0x90,0x06, 0xa6,0x74,0x14,0x48, 0x8c,0x53,0xc1,0xf0, 0xc7,0x88,0x61,0x17, + 0xe4,0x50,0xac,0x29, 0x57,0x7e,0x91,0x4d, 0x13,0xd8,0x44,0x5c, 0x9f,0x8e,0x2a,0xd6, + 0x87,0x7a,0xb6,0x6a, 0xff,0xfe,0x96,0xe4, 0xf2,0x24,0x2f,0x1b, 0xf6,0x43,0x07,0x99, + 0x81,0x14,0x0c,0x74, 0x19,0xbd,0xb6,0x6f, 0x30,0xef,0xd7,0x65, 0xeb,0xec,0xe6,0x39, + 0x60,0xfb,0xdf,0x0a, 0xac,0xa5,0x35,0xf3, 0x7c,0x47,0xb9,0xdf, 0x49,0x6e,0x39,0x54, + 0x55,0x4c,0x97,0xe6, 0x54,0x61,0x42,0x31, 0x53,0x52,0xcb,0x52, 0xdf,0xfa,0xa7,0xb8, + 0xf6,0xc5,0x88,0x1a, 0x21,0xe4,0x05,0x49, 0x11,0xbd,0xe8,0x8d, 0x33,0x7a,0x11,0xda, + 0x62,0x91,0x3d,0xab, 0x2f,0x8f,0x81,0xe8, 0x7d,0x5b,0x70,0x8b, 0xc1,0x4c,0xf6,0xae, + 0xa8,0xe9,0xb5,0xc4, 0xa8,0xe4,0xba,0x1e, 0x17,0xd0,0xda,0x4d, 0x0e,0x71,0xb8,0x3b, + 0x2a,0x16,0xd0,0x5f, 0xd2,0x41,0xf6,0x49, 0x13,0x7b,0x32,0x75, 0xc9,0x4b,0xb7,0x08, + 0xce,0x98,0xf6,0xa8, 0x09,0x6a,0x1f,0xf1, 0x50,0xa2,0xe7,0x7d, 0x73,0xe3,0x08,0xad, + 0x78,0x9a,0x5a,0xf3, 0x45,0xd4,0x26,0xc0, 0x26,0x7c,0x59,0xa3, 0xd2,0x41,0x8a,0x3c, + 0xcb,0x64,0x7d,0x04, 0x75,0x4b,0x75,0x1e, 0x9a,0xd0,0xd9,0x96, 0xf1,0xdf,0xc4,0xce, + 0x4a,0x04,0x94,0x93, 0x5b,0x6b,0x52,0xa6, 0x23,0x7c,0x46,0x74, 0x7b,0x78,0x53,0xb1, + 0x5e,0x42,0xaa,0x39, 0x56,0x3c,0x97,0x93, 0x67,0x1c,0xab,0xdd, 0xec,0x7c,0x45,0x75, + 0x4e,0x7a,0x9f,0xfa, 0x9b,0x85,0x87,0x82, 0xa6,0xd7,0xfb,0x59, 0x7c,0x48,0x66,0x6c, + 0x4a,0xfe,0xfd,0x55, 0xeb,0xab,0x35,0x48, 0x5a,0x39,0x93,0xe0, 0xf3,0x85,0xbf,0x95, + 0x22,0xd5,0xda,0x69, 0x87,0x47,0x56,0x60, 0x40,0x5d,0x26,0x1e, 0x46,0x6c,0xc2,0xf3, + 0xbc,0xe4,0x51,0x1e, 0x88,0x97,0x3c,0x9c, 0x5e,0x2c,0xa5,0x3f, 0x19,0x8f,0x8a,0xc7, + 0xfb,0xa2,0xfb,0x87, 0x2b,0xb1,0x03,0x86, 0xb6,0x59,0xcd,0x2e, 0xc7,0x12,0xf6,0xb4, + 0x72,0x89,0x4c,0xcf, 0x4b,0x73,0xdb,0x9d, 0x74,0x2f,0x33,0x58, 0x99,0x25,0xd3,0xb4, + 0xa5,0xb9,0x6e,0x99, 0x5c,0x8d,0x75,0xdf, 0x8c,0xb3,0x43,0xac, 0x74,0xe2,0xfb,0xd6, + 0x01,0x23,0x85,0x5b, 0x59,0xea,0x6a,0xe7, 0xc3,0x2c,0x7c,0x1c, 0xac,0x30,0xf7,0x80, + 0x52,0x90,0x07,0x9d, 0x98,0x44,0x5a,0x99, 0xd2,0xed,0x59,0xf0, 0x0f,0x1d,0x23,0xe8, + 0xda,0x57,0xf1,0x61, 0xbe,0x2d,0xb6,0x9a, 0xbd,0xf0,0x0a,0x86, 0x4c,0x22,0x0c,0x92, + 0x8f,0x8f,0x7f,0xec, 0x3c,0x5e,0x9a,0x78, 0xb0,0x17,0xfd,0x91, 0xfb,0x0a,0x0e,0x8f, + 0x49,0xcc,0x62,0xcd, 0x8e,0xa7,0xaf,0xa7, 0x90,0xc0,0x39,0x77, 0x42,0x05,0xe5,0xf1, + 0x14,0x52,0x33,0x3c, 0x82,0x1b,0xe6,0x06, 0xa9,0x58,0x12,0x34, 0x7c,0xa6,0xb2,0x60, + 0x8a,0xa0,0x58,0x63, 0x9b,0x96,0xa3,0x75, 0xf7,0x8c,0x3a,0x62, 0xfd,0x6c,0xaa,0x05, + 0x21,0x44,0xc5,0x72, 0x47,0x3b,0x73,0x70, 0x0d,0xc8,0xe4,0x13, 0x44,0xfb,0xf8,0x8f, + 0x59,0xea,0xa2,0x1f, 0xc6,0x3b,0x04,0x72, 0xb5,0x17,0xc7,0x2e, 0x52,0xff,0x6a,0x97, + 0x9e,0x4e,0x1f,0x05, 0xf6,0x66,0xa4,0x70, 0x73,0xd0,0x66,0x14, 0xe1,0xc7,0x37,0x39, + 0x30,0xa5,0xb8,0x23, 0xac,0x11,0x44,0xc4, 0x4b,0x16,0xd5,0x3a, 0xf9,0xa3,0x87,0xe2, + 0x78,0x2d,0xf5,0x16, 0xb8,0x5c,0x95,0xd6, 0xdf,0x40,0x4d,0x2a, 0x99,0x6a,0xa5,0x87, + 0x5f,0x55,0xcc,0x8b, 0x49,0x9c,0x77,0x2d, 0xb4,0xa0,0xb1,0xc7, 0x33,0x7e,0x15,0x8c, + 0x8e,0x6d,0x10,0xab, 0xbe,0x06,0xc2,0x58, 0x84,0x53,0xc3,0xb4, 0xd2,0x06,0xc4,0x3f, + 0xe0,0x5e,0x9b,0xe6, 0xa9,0xc0,0x6e,0x18, 0x23,0x66,0xe4,0x5b, 0x25,0x1c,0x5d,0xb0, + 0x40,0xa9,0x81,0xde, 0x86,0xd5,0xfc,0xe4, 0xf6,0x0c,0x1c,0x8d, 0x0c,0x92,0xfc,0x80, + 0x89,0xad,0x58,0xaf, 0x29,0x3c,0xe2,0x7f, 0x88,0xe9,0x12,0x87, 0x28,0x8d,0x3e,0xdf, + 0xb1,0x9a,0xa3,0x2f, 0xe2,0x9b,0x75,0x09, 0xe9,0xb3,0x70,0x3b, 0xa6,0xff,0x27,0x1a, + 0x01,0xa6,0x61,0xe5, 0x0a,0xe6,0x2f,0x52, 0xb0,0x2e,0xc2,0x58, 0x0c,0x21,0xca,0xb6, + 0xe8,0xe7,0x6a,0x0a, 0x1f,0xee,0xc0,0xda, 0x07,0xec,0x6d,0xf2, 0x8c,0x44,0x58,0xb3, + 0xcd,0x0b,0x11,0x22, 0xcd,0x5e,0x56,0x89, 0xe9,0x2f,0xe4,0x62, 0xa4,0x66,0x28,0x27, + 0x22,0xfd,0xe4,0xdf, 0xbd,0xae,0x76,0xe6, 0x7e,0xa7,0x5a,0xf0, 0x8c,0x72,0x71,0x77, + 0x1b,0x9e,0x85,0xab, 0xe9,0x38,0xf6,0xa9, 0xb7,0xc4,0xd3,0xdc, 0x6b,0x89,0x08,0x20, + 0x07,0x28,0x71,0x69, 0xa7,0x99,0xf7,0xb4, 0x8b,0x1d,0xa9,0xd0, 0x97,0x56,0x1c,0x34, + 0xd3,0x63,0x73,0x81, 0xbe,0x9c,0xe4,0x28, 0xc6,0xd9,0x43,0xf3, 0xd2,0x5d,0xc2,0x7e, + 0x40,0xd4,0xc4,0x84, 0xed,0x31,0xe2,0x4f, 0xfa,0x05,0x2f,0xe2, 0x1c,0x53,0x38,0x91, + 0x62,0xca,0x81,0x74, 0x91,0x18,0x67,0x90, 0xed,0x8f,0x8a,0x80, 0x08,0xf1,0x09,0xcd, + 0x06,0xc8,0x84,0x12, 0x08,0x6f,0x4c,0x40, 0x44,0xfc,0x91,0x15, 0x33,0x53,0x83,0xd9, + 0xa9,0x81,0xf1,0xef, 0xf4,0x43,0x73,0x52, 0x7e,0x74,0x47,0x6a, 0xc3,0x43,0x72,0x16, + 0x64,0x52,0xbc,0x35, 0x0c,0x14,0x63,0xfe, 0x4e,0xa9,0x7b,0x8a, 0xdc,0x77,0x36,0x96, + 0x95,0x5e,0xe0,0x84, 0xd5,0x62,0x6d,0xcc, 0xa7,0x26,0x1d,0x57, 0x58,0xdb,0x8b,0xec, + 0xab,0xd4,0x65,0xd3, 0x13,0xbd,0xc7,0x6d, 0xbf,0x9b,0x1a,0x96, 0xaa,0x7e,0xa3,0x2f, + 0xa5,0xae,0xbd,0xd5, 0x76,0x61,0xb6,0x9f, 0x0a,0x5c,0x8a,0x75, 0xdf,0xf9,0xc5,0xdc, + 0xf3,0x99,0x32,0x2a, 0x98,0x00,0xe1,0x74, 0xf5,0xe9,0xef,0x2b, 0x88,0x18,0x31,0x9a, + 0xe9,0x5d,0x68,0x6d, 0xbf,0xe5,0xbd,0x7e, 0xc9,0x0b,0xe0,0x16, 0x62,0x1b,0xa0,0xcf, + 0x07,0x56,0x6e,0x60, 0x54,0xb5,0xc1,0x3b, 0xe0,0x35,0x1a,0x78, 0xfa,0xf8,0x12,0x56, + 0xbe,0x25,0xf8,0xff, 0x68,0xa8,0xfe,0x4d, 0xf9,0x52,0x52,0x89, 0xcf,0xdc,0xc8,0x4b, + 0x8c,0x2a,0xda,0xe0, 0x83,0x5e,0x88,0xbe, 0xbd,0x5b,0x30,0x4e, 0x0e,0xa4,0x8a,0x21, + 0x5a,0x26,0x90,0x98, 0x68,0xae,0xe8,0x5d, 0x32,0xf5,0x27,0xe3, 0x64,0x85,0xad,0xb6, + 0x2b,0x2d,0x5f,0x66, 0x8b,0x51,0xa1,0x0a, 0xd9,0xf4,0x6c,0xa1, 0x09,0x2e,0x27,0xd0, + 0x9a,0x33,0xbf,0x35, 0x71,0x01,0x0b,0xec, 0x25,0x3f,0xff,0x75, 0x62,0xc5,0x1d,0xfc, + 0xed,0x51,0x68,0x1f, 0x16,0x58,0x82,0xcd, 0xba,0xa9,0x9f,0xa9, 0xa1,0x47,0x0c,0xff, + 0x84,0xea,0x74,0x5f, 0x95,0x02,0xb1,0x66, 0x9a,0x7b,0xec,0x40, 0x2a,0x53,0xf3,0x2f, + 0x7f,0x29,0xec,0x8b, 0xc1,0x54,0xeb,0x6d, 0x70,0x84,0xb3,0x69, 0xe9,0x3e,0xae,0x79, + 0xac,0xd1,0x52,0xa4, 0x34,0x79,0x0b,0x24, 0x33,0x9b,0x01,0x71, 0x9d,0x8d,0x0e,0x37, + 0xd3,0xfd,0xf0,0x08, 0x27,0xfe,0x90,0x81, 0x1a,0x6b,0xba,0x62, 0x7b,0x8e,0xe4,0x97, + 0x53,0x62,0x31,0xa7, 0xe5,0x35,0x03,0x4f, 0x07,0xe5,0x9f,0xac, 0x14,0xad,0xd8,0x1b, + 0x74,0x7d,0xe2,0x11, 0xea,0x9b,0x5b,0x9a, 0xb8,0x78,0x9a,0xae, 0x84,0x80,0xc0,0xb8, + 0xd2,0x8b,0x38,0x84, 0x6d,0x1e,0xa7,0x76, 0xbf,0xde,0xe9,0x19, 0xe4,0x45,0xf6,0x3f, + 0x32,0xfc,0x69,0x15, 0xc7,0x1b,0xb3,0x11, 0x3d,0x0e,0x62,0xfb, 0x6b,0xca,0x2f,0x75, + 0x28,0x72,0x52,0x10, 0x30,0x07,0x21,0x60, 0xba,0x6e,0x7d,0x98, 0xea,0x3e,0x05,0x55, + 0xb7,0x04,0x86,0xcd, 0x3b,0x40,0x1f,0xa2, 0x96,0x76,0x7e,0x76, 0x1b,0xe8,0xad,0x35, + 0x12,0x10,0xaa,0x21, 0x79,0x9d,0x52,0x7b, 0xca,0xde,0x3b,0xd9, 0xff,0x70,0x3e,0xb0, + 0x3b,0xd5,0x31,0xb0, 0xcd,0xa5,0x3b,0x1a, 0x22,0x71,0x7e,0x6d, 0x7d,0x1b,0x93,0x88, + 0xf5,0xf0,0xc5,0x82, 0xef,0x92,0xf4,0x6a, 0x7f,0x5c,0x8b,0x9b, 0xfd,0xfa,0xdd,0x4d, + 0x52,0x1c,0x99,0xa8, 0xf8,0x12,0xc2,0xdb, 0xa0,0x41,0x64,0x3c, 0x6d,0x9c,0x5f,0x74, + 0xf6,0xf0,0x8d,0x5c, 0x41,0xba,0x1b,0x0a, 0x2f,0x49,0x54,0x53, 0xb1,0x09,0x31,0x7d, + 0x98,0xa9,0x61,0x0b, 0x9d,0x4d,0x92,0x42, 0x49,0x75,0x67,0xad, 0xcf,0x35,0xfb,0x78, + 0xc9,0x29,0x39,0xdc, 0x9f,0x21,0x2e,0x7f, 0x85,0x7e,0xa9,0x7b, 0x62,0xba,0xec,0x15, + 0x90,0xde,0x6a,0x6b, 0x35,0xf7,0x16,0xbb, 0xb5,0x64,0x81,0x52, 0x1b,0x60,0x1b,0xb1, + 0x09,0x80,0xa4,0x0e, 0xf0,0x29,0xd8,0xbf, 0x36,0xdb,0x13,0x15, 0xd3,0xb7,0x67,0x4b, + 0x5d,0x3e,0x7a,0x91, 0x08,0x69,0x3d,0x14, 0x08,0xfe,0x2c,0x00, 0x98,0x46,0x12,0xf5, + 0x30,0x25,0x96,0x2d, 0x38,0xbd,0xf1,0x75, 0xc9,0x39,0x3e,0xe7, 0x7c,0xdc,0x0d,0x82, + 0x43,0x9c,0x8b,0x17, 0x4b,0xd9,0xf9,0xeb, 0xbf,0x4a,0x3e,0x16, 0xb9,0x19,0x20,0xd0, + 0xb9,0x9c,0x3e,0x8b, 0x0c,0x3b,0x59,0x82, 0x64,0x0f,0x26,0x6d, 0x81,0xef,0x91,0x44, + 0x9b,0x77,0x78,0xe8, 0x9b,0x0a,0x7c,0xa0, 0x44,0xa1,0x57,0x6e, 0x94,0x4a,0x66,0xda, + 0x50,0x3b,0xfa,0xe1, 0xb0,0x17,0xc0,0x45, 0x4e,0x15,0x81,0x1f, 0x3f,0x8c,0x3f,0xeb, + 0xf2,0x82,0x22,0x8a, 0xd2,0x80,0xb4,0xb3, 0x1c,0x23,0x2a,0x37, 0x65,0x1e,0x0a,0x2a, + 0x93,0x5d,0x3e,0x75, 0xd2,0xbe,0x10,0xf6, 0x6b,0x01,0xd2,0xf4, 0xe6,0x8b,0x52,0xc6, + 0x62,0xa8,0x3d,0x11, 0x48,0x78,0xed,0x96, 0x40,0x54,0x87,0x78, 0xd3,0xf6,0x10,0xb2, + 0x23,0x22,0x0b,0xd2, 0xe2,0xe4,0xcd,0x41, 0x62,0x6c,0x7d,0xe3, 0x4e,0x39,0xa0,0xf7, + 0x7b,0xb1,0x7f,0x98, 0x8a,0x9e,0xf0,0x39, 0x58,0x31,0x96,0xa8, 0x04,0x8e,0xcd,0x20, + 0x8a,0xaf,0x2b,0x69, 0xf2,0x5c,0xdc,0x87, 0x73,0x0d,0x46,0xa1, 0xe0,0x88,0x12,0xee, + 0x9a,0xa5,0xfe,0x27, 0x82,0x41,0xa4,0x20, 0x87,0xf3,0x73,0xff, 0xc4,0x41,0xe5,0xee, + 0x3e,0x1f,0x60,0x99, 0x59,0xaa,0x33,0x7f, 0xb3,0x2a,0xd0,0x8f, 0xe9,0xaa,0x61,0x57, + 0x2b,0x58,0x12,0xef, 0x0c,0x09,0x3c,0x05, 0xd6,0x13,0xd0,0xa0, 0x84,0x0f,0xc9,0x2a, + 0x81,0x7b,0xbf,0xc9, 0x73,0xe3,0xfa,0x5f, 0x2d,0xaa,0xe6,0xdb, 0x78,0xaf,0x5f,0x8b, + 0x81,0xb0,0x06,0xb0, 0xce,0xd0,0xb8,0x95, 0x26,0xe4,0xe4,0x21, 0x36,0x89,0xdc,0x8b, + 0xac,0x8b,0x8f,0x97, 0xfa,0x17,0x84,0x1e, 0xa7,0xfb,0xf6,0xec, 0x7e,0xe1,0xbd,0x42, + 0xae,0xee,0xdf,0xec, 0xd0,0x56,0x90,0xfe, 0x67,0x04,0x8a,0xa7, 0x5e,0xad,0x61,0x1a, + 0xf9,0xa9,0x47,0x4c, 0x1f,0x8f,0x98,0x3a, 0x1c,0x6c,0xf2,0xd6, 0x95,0x8d,0xd4,0x9f, + 0x36,0x46,0x46,0x1f, 0x01,0xff,0x8c,0x9e, 0x61,0xc3,0xc5,0x8f, 0x08,0x95,0x6c,0x6a, + 0x43,0x6c,0xcd,0xf7, 0xf8,0xbe,0xa3,0x2a, 0x11,0xcc,0x9f,0x44, 0x75,0x0a,0x05,0x1b, + 0x73,0xcf,0xd1,0x53, 0x58,0xa0,0xb4,0xaf, 0x35,0xeb,0x74,0x0d, 0x36,0xe8,0xb1,0x4f, + 0x3f,0x48,0x30,0xe6, 0xce,0x11,0x3c,0x60, 0x8c,0xf9,0xc2,0x39, 0xcf,0xa2,0x73,0x33, + 0x98,0xa6,0xcb,0xf2, 0x19,0x04,0xc1,0x48, 0xac,0x55,0x29,0xf1, 0xea,0x45,0x12,0xea, + 0x3b,0x02,0x5b,0x37, 0xd1,0x6a,0xd4,0xf1, 0xbb,0xc6,0xc7,0xb2, 0x28,0x68,0xc7,0xba, + 0xcb,0x8e,0x90,0xce, 0x71,0x63,0xdd,0x77, 0x6d,0x94,0xfa,0x8a, 0xe4,0x93,0x02,0xb4, + 0x5d,0x8b,0xd7,0x52, 0xda,0x59,0xac,0xef, 0x99,0x0f,0xf0,0xd7, 0x39,0xe0,0x52,0x5b, + 0xdd,0xd1,0x26,0x6d, 0xae,0x7a,0xbe,0x35, 0xf2,0xfd,0xaf,0xef, 0xda,0x47,0x33,0x1b, + 0x73,0x3b,0xa7,0x2a, 0xae,0xdc,0xd4,0x5c, 0x0b,0xbb,0xfb,0x3b, 0xc6,0x85,0x3b,0x20, + 0x66,0x0f,0xd4,0xd4, 0xe1,0x65,0x1a,0xc3, 0xd3,0x80,0x8e,0x64, 0x58,0xde,0xbc,0x25, + 0x30,0x59,0x13,0x5e, 0x8b,0x22,0xd8,0xcf, 0x60,0x61,0x05,0xd2, 0xbd,0xea,0x66,0xc7, + 0x25,0xa0,0xbb,0xc0, 0xd0,0x11,0x89,0x29, 0xe4,0x97,0x64,0xe3, 0xda,0x02,0x42,0x35, + 0xe5,0x7d,0xc2,0x78, 0x14,0xca,0xcb,0x18, 0xee,0x65,0xbd,0xc6, 0x3a,0x6d,0x5f,0xa6, + 0xd2,0xd9,0x2f,0x0d, 0xc3,0x85,0xf1,0x13, 0xdb,0xd7,0xf8,0x1c, 0x97,0xc8,0x2e,0x2f, + 0x56,0x1a,0x5a,0x06, 0x8e,0xf3,0x4f,0xf5, 0x92,0x4d,0xd9,0x65, 0xd5,0x84,0xaa,0xfb, + 0x71,0xfd,0xd8,0x2d, 0x06,0xd3,0xaf,0x76, 0x77,0xda,0x8f,0x6f, 0xad,0x65,0x30,0xfc, + 0x2a,0xe8,0x8e,0xdd, 0x1e,0x23,0xb5,0xc5, 0xfc,0x28,0x19,0x49, 0xe9,0xe2,0x74,0xdc, + 0x65,0x18,0xd4,0x55, 0x7c,0xf5,0xff,0x4f, 0x41,0xd5,0xee,0xb5, 0x49,0xd3,0x37,0x79, + 0x96,0x5e,0xd8,0xab, 0x55,0x4b,0x31,0xb2, 0xbc,0x25,0xea,0x81, 0xac,0x44,0x5e,0x41, + 0xf2,0x47,0x71,0x8a, 0x9f,0xca,0xfd,0x4d, 0x2f,0x7c,0x99,0xc8, 0x47,0xba,0x51,0x3f, + 0x88,0x58,0xdf,0xdf, 0xac,0x2e,0xf7,0x2d, 0x3e,0xbb,0x5e,0x11, 0x4f,0xfa,0xed,0xd0, + 0x09,0x68,0x62,0x13, 0x65,0x95,0x5d,0x9a, 0x31,0x30,0x20,0x61, 0x0a,0xd8,0x2a,0xd0, + 0x93,0x30,0xed,0xce, 0x2c,0xe5,0x96,0x42, 0x13,0x35,0x34,0x71, 0xaa,0xba,0xa9,0x0d, + 0x74,0xc7,0xd0,0x8e, 0x60,0x65,0x8c,0x89, 0x68,0xef,0x6e,0xcf, 0xf3,0x04,0xd5,0xa4, + 0xf3,0x1f,0x41,0x42, 0x71,0x7b,0xe9,0xcc, 0x93,0x79,0xe4,0x40, 0x56,0x87,0x4e,0x24, + 0x29,0x77,0x1b,0xd7, 0x55,0x36,0xa3,0x44, 0x8a,0xfe,0x83,0xfc, 0x85,0xae,0xc9,0x10, + 0xe2,0x63,0x77,0x40, 0x0e,0x14,0x32,0x5a, 0x60,0x6e,0x86,0x44, 0xa1,0x72,0x81,0xd8, + 0x37,0x66,0xd5,0x7d, 0x6b,0x82,0x53,0xbe, 0xdc,0xc6,0x03,0xa7, 0xd2,0x7b,0x8d,0x7d, + 0x6c,0x61,0x65,0xa0, 0x8c,0x7e,0xe7,0x33, 0x82,0x31,0x55,0xc9, 0x97,0x27,0x91,0xf7, + 0xc4,0xf7,0xbb,0x14, 0xac,0x3f,0x5a,0x2e, 0x81,0xc9,0x1b,0x90, 0x2a,0x17,0x00,0x1f, + 0xe6,0x06,0x17,0x6c, 0xa5,0x67,0xbd,0x1e, 0xdc,0xab,0xb1,0x55, 0x3d,0xcb,0xac,0x73, + 0xab,0x3a,0xac,0xe3, 0x0e,0x6c,0xff,0x67, 0xc8,0xc9,0x71,0x3e, 0x56,0xa8,0x94,0x32, + 0xb8,0x6c,0x01,0x52, 0x78,0x90,0xde,0x1f, 0xc1,0xa0,0x7a,0xaf, 0x05,0x52,0x6a,0x13, + 0x1c,0x09,0xb5,0x37, 0x7c,0x18,0xe1,0x7e, 0x51,0x6e,0x6d,0x6e, 0xc0,0xb7,0x1c,0x93, + 0xb8,0xfb,0x11,0x8c, 0xdc,0xdd,0x6d,0xc4, 0x07,0xe2,0x39,0x3e, 0x2c,0x06,0x8f,0x01, + 0x70,0xbf,0xa7,0x6d, 0xaa,0x9a,0xe7,0x9f, 0x16,0x04,0x3a,0x4b, 0x3d,0xe8,0x1d,0xea, + 0x49,0x02,0xe2,0xa0, 0x0d,0xb5,0x95,0x75, 0x56,0xee,0x63,0x8f, 0xdf,0x34,0xee,0x79, + 0x8f,0x81,0x23,0xdd, 0x88,0x13,0xf2,0xf9, 0x0a,0x6d,0x5b,0xdc, 0x01,0x31,0xcf,0xcc, + 0x83,0xfe,0x16,0x0e, 0x36,0x8e,0x68,0x91, 0xae,0x90,0x3c,0x38, 0xca,0x34,0x8f,0x7e, + 0x20,0x7e,0x8c,0xee, 0x45,0x3c,0x38,0x00, 0x8c,0x86,0xbb,0x19, 0x91,0x4d,0x77,0xb3, + 0xe5,0x97,0xd9,0x84, 0x59,0x84,0xd6,0x89, 0x1c,0xf5,0x18,0x58, 0x81,0x6b,0x36,0x95, + 0x5b,0x66,0x7e,0x92, 0x14,0xeb,0xf8,0x27, 0xe8,0xba,0xa9,0x89, 0xcd,0x50,0x2c,0xa9, + 0x5c,0x54,0x30,0x9d, 0x34,0x62,0x6d,0x22, 0xf9,0x4c,0x57,0x00, 0xa4,0x2c,0x36,0x89, + 0x5d,0x55,0x7a,0xdb, 0xd0,0x42,0xfe,0xd6, 0xa5,0xc3,0xfb,0x50, 0xc0,0x96,0xdb,0x1f, + 0xd2,0x49,0xc8,0x94, 0x11,0x84,0x2b,0x93, 0xe5,0x94,0x68,0x4e, 0x29,0x84,0x3d,0x50, + 0x2e,0x69,0x78,0xe1, 0xc9,0xc6,0x90,0x20, 0x10,0x85,0xa5,0x4f, 0xb1,0x58,0x25,0x76, + 0xa4,0x59,0xc4,0xe6, 0x5b,0xf2,0x08,0xc8, 0x4a,0x67,0xb6,0xb0, 0xee,0x4e,0x6a,0xc8, + 0x33,0xf2,0x65,0x0f, 0xcd,0x78,0xfb,0x27, 0xd4,0xb2,0x41,0x54, 0xcc,0xb4,0x5a,0x45, + 0xcc,0xaa,0x9a,0x38, 0xd3,0xa4,0x46,0x2b, 0xe9,0x5e,0x6c,0x3d, 0x9e,0x8d,0x2b,0xbb, + 0xfd,0x92,0xb5,0x72, 0xfe,0xbb,0x40,0x70, 0xdc,0x6e,0x82,0x4c, 0x33,0x5c,0xcc,0xc3, + 0x08,0x37,0x7e,0x9c, 0x31,0x61,0x13,0x9f, 0x63,0xa6,0x22,0x60, 0x2e,0x01,0x2f,0x68, + 0xa2,0x16,0x15,0x95, 0xc1,0xf1,0x7d,0x1c, 0xbf,0xf5,0x6c,0x9a, 0x1f,0x84,0x52,0x93, + 0xb8,0x4f,0x37,0xf2, 0x8c,0x75,0xaf,0x4c, 0xbb,0x1e,0xb6,0xfc, 0xf9,0xa1,0xe0,0x4c, + 0x0a,0x64,0x3d,0x0b, 0x93,0xe2,0x62,0xa0, 0x10,0x07,0xb3,0x43, 0x07,0x91,0x27,0x64, + 0x78,0x80,0xf5,0xd5, 0x04,0x03,0x09,0x65, 0x1c,0xca,0x45,0x43, 0x9b,0xa1,0x16,0xa2, + 0x10,0x24,0xe7,0xd3, 0x2e,0x1c,0x5b,0x83, 0x35,0x80,0x9b,0x02, 0xe9,0xad,0xa2,0x3f, + 0x0b,0xed,0x4c,0xde, 0xd9,0xa0,0xc6,0xeb, 0xcc,0x99,0x5e,0xe7, 0x0c,0xc8,0xb1,0xab, + 0x66,0x03,0x03,0xf2, 0x14,0xeb,0x05,0x26, 0x14,0x58,0x2f,0xb6, 0xdd,0xde,0x99,0xb7, + 0x27,0x31,0x9a,0x28, 0xfb,0x82,0xce,0xff, 0xd3,0x54,0x7d,0xaf, 0xa3,0x9e,0xef,0xef, + 0x07,0xa1,0x61,0x4a, 0x27,0x26,0xcc,0xa7, 0x92,0xfa,0x0b,0x54, 0xce,0x4a,0x5f,0x40, + 0x6d,0x26,0xe6,0xfa, 0x3a,0x25,0x39,0xfa, 0x7a,0x0c,0x8d,0xfb, 0xe2,0x41,0xb7,0x5e, + 0x0f,0x7c,0x75,0x56, 0x1a,0xca,0x1b,0x8d, 0x66,0x83,0xb7,0x9c, 0x89,0x91,0x7f,0xd4, + 0x6e,0xfa,0x90,0x76, 0x64,0x11,0x7e,0xe7, 0xb1,0xd0,0x5c,0xfb, 0xd2,0xc9,0x8c,0x17, + 0x26,0x4e,0x43,0x3b, 0xd1,0x5c,0x9a,0x06, 0x9a,0xe0,0xbc,0xed, 0xe9,0x0f,0x66,0x48, + 0x4a,0x7b,0xf6,0x41, 0x4c,0x6d,0x3d,0x21, 0x98,0xb9,0x09,0xb9, 0x62,0x23,0x0d,0x29, + 0x05,0xe1,0x50,0x25, 0x23,0xf8,0x5c,0x7d, 0xd5,0xe8,0x5d,0x04, 0x59,0x90,0x0f,0x36, + 0xef,0xf9,0x35,0x51, 0x23,0xba,0xa3,0x34, 0x06,0x27,0xe5,0x64, 0x4c,0x8e,0x79,0xc7, + 0xcd,0xd2,0x0a,0x32, 0xa4,0x33,0x10,0xc9, 0xdf,0x19,0x78,0x50, 0xbd,0xf0,0xb0,0x84, + 0xaf,0x8a,0x87,0x50, 0x16,0x0f,0x40,0x44, 0xfe,0xc2,0x44,0xe4, 0x4f,0x40,0x57,0xdc, + 0x83,0x19,0xdc,0xbd, 0x28,0x93,0x61,0xf5, 0x10,0x86,0x55,0x75, 0x50,0x46,0x52,0x7c, + 0x79,0x73,0xfe,0x3d, 0x8d,0xe6,0x37,0x76, 0x60,0x86,0xd1,0x95, 0xe0,0x68,0x4b,0x0d, + 0x08,0x3e,0xea,0xb0, 0x58,0x4b,0x43,0xea, 0xde,0xe8,0x0a,0x2e, 0x5b,0x47,0xa8,0xe1, + 0x69,0xcc,0x3c,0xea, 0x05,0xce,0x08,0xc9, 0xd0,0x8d,0x76,0x96, 0xd8,0x69,0xc9,0x03, + 0x02,0xd3,0x75,0xe7, 0x8b,0x01,0x74,0x71, 0x17,0xcb,0x44,0xc5, 0xdd,0x3b,0xf6,0xa0, + 0x1a,0x0c,0x2a,0xf8, 0x97,0x89,0xad,0xc9, 0x49,0xb6,0x9d,0xf2, 0x5e,0xc7,0x45,0x4d, + 0xff,0x46,0xb3,0xc1, 0x36,0xa2,0xa4,0xcf, 0x68,0x54,0x64,0x14, 0x95,0x22,0x1b,0xbb, + 0x4d,0xa5,0xf3,0x4c, 0x84,0x70,0x0b,0xc0, 0x9c,0x28,0xb9,0x73, 0x66,0x18,0x40,0x79, + 0xcf,0x2e,0xe3,0x99, 0x6f,0xa5,0xf8,0xda, 0xf9,0x7e,0xff,0x42, 0xbb,0xca,0x7f,0xae, + 0xbb,0xcf,0x31,0x06, 0x1d,0xed,0x7d,0x18, 0xfc,0x1d,0xa2,0xaa, 0x07,0x4b,0x41,0x8a, + 0x35,0x63,0xda,0x71, 0x42,0xf7,0x3f,0x63, 0xe8,0x6f,0x40,0xb7, 0xcf,0x89,0x04,0x99, + 0xd4,0xe7,0x62,0x38, 0x4f,0x66,0x84,0x10, 0x71,0x22,0x67,0x08, 0x12,0xd4,0xf7,0xca, + 0x89,0xcd,0x42,0x52, 0x5d,0xbd,0xf3,0x78, 0x11,0xdd,0xa3,0xae, 0xa9,0xb1,0x48,0x60, + 0x24,0xc9,0x32,0x73, 0x9b,0xd2,0x71,0x33, 0x26,0x0d,0x15,0xe8, 0x80,0x98,0xc0,0x30, + 0xb7,0xf3,0x7c,0x08, 0x77,0x62,0xfc,0x25, 0x40,0x7f,0x3c,0x61, 0xde,0x01,0x11,0x0e, + 0x72,0x44,0x72,0xf7, 0x9b,0x8a,0x09,0x0f, 0xf3,0x80,0xbd,0x03, 0x4b,0x83,0x14,0x19, + 0x4f,0x3b,0x3d,0x5e, 0x49,0xed,0x81,0x04, 0xe8,0x93,0xce,0x51, 0x1f,0x9e,0x4e,0x2f, + 0x4d,0xd3,0xd6,0x1f, 0x3b,0xbd,0x3f,0xdf, 0xf8,0xa3,0x37,0x66, 0x76,0x73,0xb2,0x43, + 0x5b,0xbb,0x10,0xf8, 0xf0,0xb6,0xb5,0x57, 0xe2,0xf2,0x8e,0xf0, 0x60,0xbb,0x34,0x08, + 0x02,0x23,0xa7,0xac, 0x1d,0x57,0x00,0x18, 0x4f,0x5e,0xed,0x75, 0x4d,0x13,0xc2,0x95, + 0x58,0xc3,0x66,0xdd, 0xc0,0x99,0xcf,0xbc, 0x4b,0xa2,0x65,0x0f, 0x6e,0x46,0xa3,0x00, + 0x86,0x53,0xbf,0xc4, 0x53,0x1b,0x1d,0x22, 0x28,0xf1,0x08,0x91, 0x35,0xb5,0xd7,0xe3, + 0x5a,0xac,0xf2,0x73, 0xc3,0x63,0x36,0x71, 0xb2,0x1e,0x67,0x30, 0x60,0x71,0x7c,0x81, + 0x31,0xcd,0xc8,0x8c, 0x76,0x87,0x67,0x4e, 0x31,0xe8,0xb7,0x97, 0xdc,0xba,0x08,0xac, + 0xb3,0xfb,0xb6,0x8d, 0xae,0x13,0x21,0xac, 0xc7,0xf0,0xa0,0x14, 0xf8,0xbb,0x74,0x3a, + 0x0d,0x35,0x38,0x6c, 0x46,0x81,0x26,0x61, 0x95,0x3e,0xfc,0xbc, 0x02,0xd8,0xf9,0xdf, + 0x39,0x80,0xcd,0xbd, 0xf6,0x7e,0xba,0x14, 0xa9,0x19,0xc1,0xa4, 0x48,0xf3,0xa5,0x96, + 0x4e,0x44,0x4d,0x15, 0xfb,0xe8,0x84,0xa1, 0x12,0x09,0xcc,0xaf, 0x7a,0xc8,0x01,0x8a, + 0x3c,0x47,0x83,0xa7, 0xbf,0xb4,0xaf,0x68, 0xc9,0x25,0x7c,0x9f, 0x4b,0x56,0x19,0x95, + 0xe1,0xa8,0x6f,0xac, 0x13,0x81,0x64,0xdb, 0xe5,0x15,0x72,0x6e, 0xb2,0xf5,0x42,0xf7, + 0xa9,0xbd,0xce,0xa2, 0x68,0xdd,0x3a,0x5d, 0x1b,0x5f,0x33,0xe4, 0x05,0x88,0x7c,0xd1, + 0x44,0x61,0x26,0xf4, 0x00,0x1d,0x28,0x44, 0x26,0xf2,0xe9,0xa3, 0xfe,0x1f,0x83,0x4d, + 0x6d,0x3a,0x1a,0xe1, 0xf5,0xd7,0x72,0xd0, 0xb8,0x25,0x27,0x2b, 0x8f,0x04,0xc0,0x10, + 0xd2,0x94,0x28,0x1b, 0x11,0x4b,0xea,0xaa, 0x87,0x7a,0xb2,0x73, 0xb8,0x60,0xf2,0x73, + 0xd3,0xe2,0xae,0x40, 0x9c,0xf1,0xa8,0x58, 0x5e,0x2b,0xa9,0xb9, 0xb6,0x9b,0x2d,0xf3, + 0x34,0xed,0x0d,0xfd, 0xe6,0x2c,0x38,0x3a, 0x34,0xbf,0x64,0x00, 0xce,0xc7,0x97,0xa7, + 0x80,0x78,0x47,0xf9, 0x68,0x7e,0x88,0xbf, 0x94,0x42,0xc7,0x49, 0xaf,0x39,0x14,0x3a, + 0xf1,0xf1,0xd7,0xaa, 0x25,0x5e,0x59,0x18, 0xda,0x7f,0xca,0x28, 0x72,0xff,0xde,0xb1, + 0x41,0xf6,0x62,0x75, 0x0b,0xb6,0x9b,0x08, 0x78,0x18,0xf4,0xf7, 0x68,0x1e,0x9e,0xdc, + 0x83,0xfb,0xc2,0x17, 0x25,0xac,0x9e,0x3e, 0xd5,0x50,0xbd,0xa2, 0x8c,0x0b,0x54,0xef, + 0xbb,0x8a,0xdb,0x26, 0xf5,0xe2,0x52,0x1f, 0x81,0xc2,0x32,0x19, 0x9f,0x5e,0x42,0x81, + 0x73,0xfd,0xe4,0xc7, 0x04,0xe6,0x44,0x73, 0x79,0xf6,0x0a,0xf0, 0x5f,0x2a,0xac,0x36, + 0xe3,0x0d,0x10,0x7a, 0x3d,0xa6,0x73,0x2c, 0x57,0xd3,0x92,0xf7, 0xa1,0x56,0xab,0x38, + 0x91,0x5e,0xfc,0xc7, 0x4a,0x2b,0x0e,0x91, 0xdf,0x7a,0x14,0x7f, 0x45,0xe1,0xe9,0x12, + 0x7e,0x7a,0x10,0x30, 0xa5,0xea,0x40,0x20, 0xe8,0x83,0x65,0x16, 0x38,0x29,0xbc,0x9f, + 0x1f,0xee,0xb7,0x8f, 0x36,0x57,0xaa,0x4d, 0xe7,0x9e,0x54,0xf9, 0xc2,0x29,0x78,0x8e, + 0x9c,0x68,0x72,0x74, 0xb3,0x7b,0x02,0x72, 0x30,0xd4,0x86,0xa7, 0xda,0x8a,0x6e,0xd4, + 0xff,0x64,0xe4,0x10, 0xf1,0xc0,0xa4,0xaa, 0x81,0x1d,0xe8,0x0a, 0x0c,0x43,0x13,0x36, + 0xf4,0xc7,0xf2,0xab, 0x3b,0x6f,0x22,0x68, 0x7c,0x64,0x72,0xdc, 0xc8,0x99,0xc0,0x48, + 0x62,0x60,0x74,0x88, 0x12,0xae,0x75,0x6c, 0x59,0xe5,0x05,0xfa, 0x89,0x7e,0xa3,0xd7, + 0xe4,0xca,0xf8,0x45, 0x8c,0x28,0x3b,0x18, 0x95,0x40,0xda,0xed, 0x0c,0x9f,0xef,0x32, + 0xad,0xd8,0x97,0x7d, 0x7e,0x0a,0x91,0x09, 0xa8,0xff,0x92,0x8d, 0x49,0xa8,0x6c,0x78, + 0xb6,0x64,0x1a,0xea, 0xec,0x5a,0x3d,0x4f, 0x0f,0xb0,0xf8,0x86, 0x1f,0x00,0x84,0x11, + 0x64,0xe3,0xe5,0x87, 0x54,0xbc,0x14,0x5a, 0x21,0xc9,0x24,0x2e, 0x93,0x71,0x45,0xdb, + 0xdc,0xe3,0x37,0x8f, 0xdd,0x97,0xb7,0x3d, 0x7c,0x46,0x98,0xfb, 0x5f,0xb7,0x8c,0x73, + 0x28,0x55,0xa7,0x66, 0x56,0xc3,0xe9,0x02, 0x23,0xf8,0x70,0x4a, 0x60,0x0a,0x60,0x27, + 0xf5,0x40,0xa3,0x97, 0x73,0xbc,0x09,0x0e, 0x8b,0xb8,0x8c,0x75, 0x54,0x1f,0x9c,0xc7, + 0x28,0x6b,0x78,0x37, 0x37,0x4f,0x1b,0xdd, 0x92,0x7f,0x0f,0xff, 0x15,0xc0,0x42,0x5a, + 0x8a,0xc0,0xbc,0x31, 0xa4,0x8d,0xb7,0x8b, 0x68,0x9e,0xe8,0x79, 0xf3,0x2b,0x53,0x04, + 0xae,0x57,0x7a,0x94, 0x63,0x25,0x86,0x65, 0xbf,0x12,0x85,0x21, 0x4a,0x75,0x64,0x6e, + 0x28,0x29,0xd9,0xc8, 0xff,0xac,0x72,0xba, 0xe0,0x1e,0xcc,0x31, 0xa5,0x64,0xb7,0xc6, + 0x24,0xe8,0xf4,0x34, 0xcb,0x90,0x00,0xb3, 0xb9,0x88,0x97,0xfc, 0xe7,0x7a,0xae,0x4f, + 0xe0,0x4b,0x00,0xe9, 0xdd,0xac,0xde,0x5b, 0x61,0xb6,0x4e,0xdc, 0xb4,0x26,0xa5,0x66, + 0xde,0x02,0x2d,0x82, 0x2b,0x66,0xf5,0x45, 0x9d,0xad,0x6a,0x5f, 0xc5,0x90,0x0b,0x33, + 0x50,0x81,0xe4,0xe5, 0xa0,0xb9,0xdc,0xb6, 0x13,0x88,0x77,0x9f, 0xcd,0xd8,0xbe,0x5d, + 0xea,0x7e,0x76,0x16, 0x97,0xd7,0xc1,0x2d, 0x30,0xd9,0x2e,0x92, 0x27,0x6d,0xb3,0x07, + 0xec,0xa7,0xe1,0x00, 0x4f,0x62,0xed,0x71, 0x98,0x5d,0x0e,0x42, 0x8f,0xec,0x9b,0x9d, + 0xa7,0xc9,0xf3,0x21, 0x75,0x02,0xa9,0x21, 0x43,0x76,0x94,0x79, 0xf4,0x23,0xd7,0xa5, + 0x9c,0xbf,0xb9,0x27, 0x9f,0xd2,0x65,0x13, 0x8d,0xac,0xca,0xe5, 0x8b,0x68,0xf7,0x79, + 0x51,0xc1,0x1a,0x6d, 0x92,0x75,0xef,0xa8, 0x20,0xdb,0x42,0x2b, 0x3d,0x20,0xb8,0x2a, + 0xf6,0xba,0xb7,0xb9, 0xb1,0x00,0x11,0x22, 0x22,0xc9,0x73,0x2e, 0x2c,0x23,0x26,0x67, + 0x5f,0xd6,0x8b,0x7c, 0x8d,0x06,0x62,0x01, 0xbf,0x59,0x74,0xb5, 0x46,0x92,0x4c,0x9a, + 0x43,0x72,0x8f,0x41, 0xb8,0xc7,0xf6,0x9c, 0x79,0xea,0xed,0xa5, 0x1c,0xc0,0x71,0x9d, + 0xe1,0x69,0xf9,0x56, 0x93,0x89,0x46,0x8b, 0xb0,0xef,0x7e,0x23, 0x17,0x68,0x89,0xb6, + 0x40,0x35,0x6b,0x5d, 0x24,0x76,0xa2,0x9d, 0xd8,0xb6,0xb1,0xf7, 0xb6,0xf0,0x11,0x5f, + 0x72,0x08,0x45,0x32, 0x28,0xa6,0x41,0x52, 0x42,0x1a,0x3c,0xd0, 0x90,0x4b,0x6b,0xe5, + 0xf0,0x13,0x1b,0x85, 0x80,0x73,0x04,0x2e, 0xc3,0x17,0x3f,0x1c, 0xc7,0xb6,0x0d,0x82, + 0x7a,0x02,0xca,0x99, 0x08,0xf0,0x63,0x29, 0xc8,0x09,0x77,0xed, 0x8d,0xb5,0xfd,0xdf, + 0xdd,0x91,0x4c,0xbc, 0x60,0x70,0x86,0xfa, 0x2e,0x20,0xf3,0xd9, 0xa8,0xe6,0x5e,0x9f, + 0x86,0xc9,0x70,0xa8, 0x15,0x0b,0xe9,0x98, 0x8b,0x75,0x38,0xf3, 0x13,0x23,0x31,0xae, + 0xc6,0xca,0xe7,0xbe, 0x4c,0x33,0x09,0x79, 0x95,0x92,0x82,0x78, 0x54,0xa4,0x07,0xc7, + 0x40,0x73,0xa6,0x49, 0x58,0x0b,0xe6,0x3c, 0x3f,0x89,0x36,0xe1, 0x7f,0x93,0x30,0x66, + 0x8a,0x88,0x06,0xad, 0x1f,0xed,0xb2,0xe6, 0x9b,0xdf,0x75,0x59, 0x1b,0xce,0xdd,0xf1, + 0x03,0xec,0xbe,0xa3, 0x79,0x7d,0x07,0x86, 0xf2,0xf4,0x3a,0xa3, 0x1b,0x15,0xd3,0x48, + 0xf3,0x1a,0x45,0x55, 0x56,0x67,0x32,0xde, 0xed,0x0a,0xe6,0x0a, 0x75,0x7f,0xc5,0xbe, + 0x1a,0xe5,0x41,0x2b, 0x06,0x37,0xf0,0x30, 0xec,0x95,0xe3,0x84, 0x48,0xdf,0xb9,0x48, + 0x06,0x99,0xe7,0x7f, 0x7b,0x69,0x9c,0x02, 0x5c,0xab,0x3f,0xec, 0x30,0x2a,0x37,0x33, + 0x74,0xcf,0x53,0xf9, 0xdf,0x52,0xea,0xc2, 0x84,0xc5,0x50,0xa2, 0x3a,0x00,0x8e,0x43, + 0x46,0xf0,0x6f,0x84, 0x8f,0x9e,0x1f,0x5b, 0x26,0x86,0xc3,0xea, 0xa6,0x5c,0xdb,0xdf, + 0x89,0xdf,0xe7,0xb8, 0xe1,0x28,0x56,0xf7, 0x33,0xd6,0x6c,0x07, 0x9b,0x1d,0x7d,0xca, + 0x51,0xdf,0x37,0x19, 0x8d,0xdb,0xed,0xa7, 0x70,0x28,0x5a,0x25, 0x38,0x35,0x19,0x23, + 0x15,0x4b,0x6d,0x1b, 0xc6,0x71,0xbc,0x05, 0x6a,0x3c,0x7d,0xba, 0xd1,0x4f,0x8e,0xdf, + 0x42,0xf3,0x46,0x2d, 0x78,0xb3,0xa0,0x6a, 0x6b,0xc1,0xdf,0xa4, 0x4a,0xeb,0x9e,0x59, + 0x8b,0xab,0x50,0xf0, 0x85,0xec,0xf9,0xfe, 0xa9,0x92,0xc6,0x67, 0x9b,0x3b,0x40,0x1e, + 0x49,0xba,0xd9,0x8b, 0xed,0xe9,0x19,0xae, 0x12,0x7c,0x37,0x95, 0x22,0xf7,0x5e,0xf2, + 0x7c,0x0b,0x02,0x0e, 0xf6,0xea,0x2e,0xf5, 0x70,0xad,0x26,0x0e, 0x7c,0x80,0x6d,0xce, + 0x88,0x53,0x6e,0x92, 0x9c,0x70,0xd6,0xf3, 0xb5,0x12,0xdd,0x37, 0x9f,0x84,0xa8,0x78, + 0x6c,0x9e,0xc4,0x27, 0x0b,0xc4,0xf6,0xbf, 0xf6,0x69,0xaf,0x28, 0x28,0xf0,0x1d,0xc0, + 0x8e,0x45,0x8a,0x15, 0x5e,0x1c,0x53,0x9a, 0x8d,0xf0,0x16,0x38, 0x0f,0x15,0xc4,0x40, + 0xdf,0x31,0x5f,0x5c, 0x56,0xb4,0x22,0x16, 0x49,0x5c,0x16,0x04, 0x0e,0x24,0xc8,0x60, + 0x8f,0x6a,0x2c,0x11, 0xc0,0x23,0xa2,0x11, 0xb6,0x11,0x71,0xc7, 0x8c,0x6a,0x31,0x38, + 0x42,0xa4,0x30,0xa2, 0x5b,0x24,0x0f,0xb7, 0xe0,0xa5,0x5a,0x6d, 0x22,0xe0,0x9b,0x0d, + 0x84,0xe2,0xc7,0xea, 0xd8,0x11,0xa6,0xce, 0x75,0xfd,0x5d,0xc2, 0x1a,0x44,0x97,0x9c, + 0xb3,0xea,0x29,0x70, 0xf3,0x15,0xf3,0xaf, 0xd7,0x02,0x24,0x56, 0x0d,0x38,0x65,0xf7, + 0xb3,0x7c,0x20,0x42, 0x09,0xd5,0xa0,0x52, 0x0a,0x1d,0x83,0x7c, 0xf9,0xce,0xbb,0x79, + 0xed,0x6a,0xb4,0x4e, 0xbf,0x82,0xda,0xc0, 0xca,0xe0,0x33,0xbd, 0x8d,0x93,0xbf,0xb1, + 0x89,0x04,0x93,0x37, 0xbf,0x63,0x77,0x63, 0xd3,0xbe,0xdd,0x55, 0xd5,0x4f,0xa9,0xfa, + 0x37,0x0d,0x9d,0x58, 0x37,0x43,0xe6,0x6b, 0x96,0xdd,0x97,0xf9, 0xda,0xd3,0xfd,0x82, + 0x29,0xdb,0x3d,0x2c, 0x81,0x99,0x3e,0x85, 0x4d,0x6c,0xc2,0xd2, 0x24,0x51,0x6e,0x89, + 0xb2,0x77,0xad,0x8e, 0x43,0x0f,0x97,0x02, 0x91,0x59,0x5c,0x19, 0xde,0xa5,0x82,0x62, + 0x6c,0x86,0xb0,0x5a, 0x52,0x6d,0x9f,0x5d, 0xd0,0x2e,0x2c,0xa1, 0xa9,0xb8,0x20,0xce, + 0xe0,0xff,0x62,0xe4, 0x89,0x97,0x67,0xa1, 0xe8,0x24,0x7c,0x0d, 0xd0,0x93,0xae,0x7c, + 0x65,0x11,0x09,0x8c, 0xde,0x95,0xfd,0x10, 0x0e,0x7b,0xde,0x4b, 0x5f,0x03,0xd3,0x0d, + 0x3e,0x35,0x92,0xd3, 0x3f,0x3e,0x9e,0xa8, 0x2f,0xbd,0xda,0x19, 0x7d,0x0a,0xb6,0xec, + 0x6a,0x27,0x3c,0xe7, 0xdf,0xca,0x23,0x4e, 0x8d,0x9e,0x21,0xf7, 0xa8,0xa3,0x8a,0x4b, + 0x6b,0x22,0xf0,0x03, 0xac,0xc2,0x87,0x95, 0x81,0x95,0x1f,0x5e, 0x59,0x78,0x12,0xa6, + 0xf1,0x86,0x24,0x7a, 0xa9,0x81,0x41,0xff, 0x30,0xa5,0xfb,0x85, 0xe2,0x2d,0x74,0xbb, + 0xc1,0x7e,0x9b,0xa4, 0x7c,0x02,0x19,0x60, 0x5e,0xb0,0x10,0x3b, 0x7e,0x70,0x76,0x04, + 0x48,0x7d,0xb2,0x14, 0xc3,0x98,0x0d,0xd6, 0x89,0x60,0x5d,0x46, 0x02,0xf1,0x89,0xcf, + 0x64,0xd2,0x65,0x25, 0x38,0x3a,0x92,0x4e, 0x8c,0xd4,0xde,0x0c, 0x54,0x80,0xdf,0xe0, + 0xae,0xb0,0xf0,0x30, 0x82,0x39,0xc1,0x7f, 0x0a,0x2e,0xed,0xf5, 0xe0,0x5f,0x84,0x20, + 0xd7,0x81,0x16,0xec, 0x0b,0x52,0x62,0xb2, 0xc9,0x70,0x42,0x68, 0xc7,0x23,0xb3,0x66, + 0xae,0x70,0xb4,0x78, 0xde,0xd7,0xe6,0x65, 0xa2,0x17,0x8e,0xc8, 0x57,0x6c,0xa5,0x50, + 0xfb,0xf0,0xc4,0x47, 0x02,0x12,0xfc,0x28, 0x9a,0xaa,0x55,0x4b, 0xfb,0x40,0xf6,0x14, + 0xa2,0xea,0x95,0x1d, 0x10,0x6f,0x4d,0x21, 0x54,0x03,0xd1,0xb0, 0x3c,0xdc,0x3f,0x9a, + 0x21,0xb2,0x44,0x4c, 0x7a,0xf7,0x68,0xf2, 0x7e,0x74,0x03,0xae, 0x34,0x20,0x52,0x89, + 0x6c,0x00,0xbf,0x33, 0x8b,0x96,0x03,0xf4, 0x4f,0xba,0xba,0x89, 0xb8,0xa2,0x1e,0xb9, + 0xb3,0x08,0x7a,0xd8, 0x73,0xe8,0x66,0x5e, 0xcc,0x58,0x52,0x70, 0x18,0x2a,0xc7,0x0a, + 0x5f,0x8c,0xde,0x32, 0x81,0x91,0x56,0x09, 0xbe,0x92,0x33,0xce, 0xb5,0x27,0x74,0x8e, + 0x8e,0x26,0xd8,0xaf, 0xf0,0x36,0xb4,0x6d, 0x1e,0x23,0xc5,0x01, 0xb5,0x72,0x1d,0x29, + 0x03,0xc4,0xe7,0x1e, 0xd9,0xa4,0x18,0x37, 0x98,0x6c,0x26,0xba, 0x86,0xb6,0x5d,0xca, + 0x5a,0x8e,0x1c,0xec, 0xfa,0x32,0x5b,0x47, 0x02,0xd7,0x4a,0x47, 0x18,0x05,0xa2,0x47, + 0x58,0x9f,0xb0,0x88, 0x52,0x3d,0x03,0x02, 0x6c,0x39,0x6f,0xcf, 0xba,0xfc,0x90,0x6c, + 0xf6,0x63,0x2f,0x99, 0xe8,0x2e,0xb1,0xeb, 0xca,0xac,0x93,0xf6, 0xf0,0xd7,0xee,0xec, + 0x61,0xe7,0x3d,0x2a, 0x8f,0xe5,0xbb,0x3c, 0xd6,0x4d,0x61,0xbc, 0xeb,0x6f,0x89,0xcb, + 0xbb,0xda,0xae,0xc8, 0x37,0x94,0x68,0x70, 0x06,0xc0,0xfc,0x07, 0x22,0x13,0xfc,0xb5, + 0x43,0x02,0x1a,0x17, 0x5a,0xdc,0xc0,0xb4, 0xd4,0xa3,0xe8,0x63, 0xb3,0x21,0x62,0x48, + 0x14,0xc4,0x11,0x10, 0x87,0x9e,0x61,0x46, 0xf5,0xd5,0x93,0x1e, 0x1b,0xc2,0x36,0xfc, + 0x8d,0x63,0x20,0xe8, 0x63,0xc0,0x25,0x58, 0xb0,0x3a,0xd6,0xa3, 0x21,0xbb,0x53,0xc5, + 0xa7,0xbb,0x60,0x40, 0x26,0x95,0x62,0x9c, 0x26,0x24,0x84,0x04, 0x4e,0x22,0xeb,0xea, + 0x26,0x87,0x83,0xec, 0xef,0xc4,0x76,0x78, 0xcc,0x5c,0x5b,0xd7, 0xcd,0xf0,0x71,0x0c, + 0x64,0x19,0x3e,0x73, 0xb9,0x34,0xb4,0x99, 0x4e,0xb7,0x08,0xb0, 0x47,0xd4,0x45,0xf3, + 0xb5,0x11,0x08,0x20, 0x73,0xd4,0x56,0x16, 0x18,0x38,0xa1,0x9e, 0x1d,0x4d,0xf8,0x22, + 0x54,0xb1,0x97,0x47, 0xe9,0x68,0xf5,0x41, 0xb3,0x6d,0x9e,0xcd, 0x5f,0xe7,0x57,0x9a, + 0x95,0x13,0xb1,0x07, 0x9e,0x13,0x9a,0xb2, 0x84,0x07,0x72,0xb1, 0xbe,0x07,0xa6,0x7f, + 0xc2,0x30,0x84,0x2b, 0xb9,0x6e,0x80,0xd3, 0xe6,0xe7,0x40,0xba, 0x59,0x98,0xb8,0x41, + 0x76,0xda,0x46,0x5b, 0xd7,0x5f,0x28,0x34, 0xa9,0xfe,0x89,0xda, 0x46,0x02,0x37,0x49, + 0xb7,0xa9,0x8e,0x4a, 0x9a,0x4a,0x8d,0xe1, 0x93,0x3b,0x47,0x46, 0x67,0xe5,0x8a,0x89, + 0xf3,0x66,0x2c,0xb8, 0xf6,0x7a,0x8a,0x8f, 0x95,0xa3,0x99,0x57, 0xa1,0x8b,0xf2,0x34, + 0x6a,0x1c,0x36,0x9b, 0x30,0x72,0xaf,0x2e, 0x42,0x1a,0x19,0x47, 0x28,0x25,0xa0,0xcd, + 0xbd,0x7e,0x5e,0x0b, 0x17,0xb3,0x46,0xcb, 0xab,0xf8,0x48,0xe1, 0x0b,0xac,0xb3,0xbc, + 0x14,0xd8,0x9d,0xc7, 0xe3,0x70,0xfd,0xa1, 0xef,0x34,0x5d,0x55, 0x89,0x79,0xb1,0x92, + 0x68,0x65,0x5a,0x8a, 0x07,0x67,0xa8,0xb2, 0xc0,0xfb,0x6e,0x0a, 0x66,0x8a,0x79,0x2f, + 0x57,0xb7,0x28,0xdf, 0xfa,0x64,0xe3,0x74, 0x89,0x44,0xd3,0x5b, 0x6b,0xed,0x96,0x02, + 0xc4,0x68,0xd1,0xcd, 0x14,0xd4,0xbd,0x3b, 0x31,0xb4,0x9a,0xb0, 0x7a,0x0a,0xc9,0xb3, + 0x31,0xe9,0x14,0xc5, 0x5d,0xd2,0xaa,0x02, 0x5d,0x61,0xb9,0xff, 0xac,0x1e,0xad,0xa5, + 0xb4,0x8d,0xe4,0x94, 0x78,0x23,0xe2,0x6c, 0x92,0x40,0x1f,0x4a, 0x5f,0x7d,0xe3,0x65, + 0xa5,0x4a,0x61,0x05, 0x6f,0xc7,0xc3,0x76, 0x6f,0x49,0xe8,0x97, 0xa4,0x9b,0x4a,0x15, + 0x1a,0xf5,0x6b,0x54, 0x5b,0x8a,0xa6,0x2a, 0x40,0xb4,0xdf,0xc3, 0xce,0x6d,0x9c,0xcb, + 0xaa,0x42,0x1b,0x0a, 0xee,0x3c,0x86,0xd1, 0x0b,0xc9,0x11,0xd1, 0xd4,0xc8,0x9e,0x80, + 0x68,0x24,0x41,0x58, 0x78,0x98,0xfd,0xe7, 0xbd,0x53,0x4f,0xfa, 0xd9,0xda,0x95,0x58, + 0x68,0x4e,0xff,0xf1, 0xc3,0x31,0xa8,0xff, 0xa1,0x22,0xe8,0xfa, 0xd3,0xe4,0xdc,0x80, + 0x12,0x12,0x7a,0x3e, 0x2d,0x94,0x57,0x4c, 0xf4,0x69,0x6d,0xcc, 0xb1,0x77,0x1b,0x19, + 0x0b,0x68,0xc9,0xf0, 0x8b,0x24,0x2a,0xc0, 0x76,0x3e,0x1f,0x89, 0xdd,0x01,0xa9,0x00, + 0x59,0xbd,0x12,0x70, 0x54,0xc5,0x21,0xf2, 0x99,0xc9,0x0e,0xea, 0x81,0x16,0xaa,0xec, + 0x74,0xaf,0x0e,0x19, 0xf4,0x51,0xfd,0x9b, 0x49,0x93,0xa0,0xab, 0xb0,0xf0,0x90,0x2b, + 0xd2,0xf5,0x13,0x9c, 0xb9,0xf1,0x1e,0xc3, 0xf3,0xa8,0x25,0xab, 0xe5,0x2d,0xc5,0xe8, + 0x3d,0xd3,0x05,0xa6, 0x57,0x77,0x71,0x8c, 0xca,0x88,0xa1,0xbd, 0xb7,0xa9,0x4b,0x0c, + 0xb8,0x0d,0xf1,0xf0, 0x12,0xc4,0x42,0x89, 0xd0,0x84,0x99,0x41, 0xa1,0x4d,0x16,0xe3, + 0x8f,0xb7,0xad,0x20, 0x72,0xed,0x70,0x1b, 0xf8,0x87,0x2b,0x9e, 0x06,0x9f,0x8f,0x02, + 0xb9,0xc4,0x5e,0x80, 0x46,0x1d,0x64,0x71, 0x22,0xa5,0x5e,0x15, 0x63,0x72,0xcb,0xa4, + 0x37,0xe8,0xc4,0xcd, 0x6f,0xb1,0x50,0xcb, 0xcd,0xdb,0xb3,0x08, 0xfd,0x3d,0x2c,0x40, + 0x42,0x47,0x58,0x05, 0xd6,0x33,0x9b,0x78, 0x7b,0xf1,0x76,0x06, 0xf2,0x40,0xf0,0x94, + 0xfe,0x0b,0x72,0x89, 0xa1,0x9f,0x8f,0x2b, 0x93,0x67,0x26,0x9d, 0xf0,0xfa,0x9d,0xea, + 0x40,0x59,0xe4,0xe0, 0xe7,0x73,0x8c,0xc4, 0x06,0xe3,0xb8,0x47, 0xdb,0xf7,0xe0,0xa6, + 0x20,0x22,0x43,0xd7, 0x0f,0x41,0x0c,0x09, 0x34,0xde,0x25,0xe8, 0x4c,0x8c,0xac,0x3e, + 0x77,0x10,0xab,0x59, 0x00,0xc3,0x1c,0xfe, 0x56,0xc7,0x96,0x61, 0xc0,0xa1,0xf6,0x9d, + 0xa0,0x01,0x7d,0x9a, 0xb9,0x0a,0x62,0x1c, 0x57,0x8a,0x1f,0x60, 0x21,0xc7,0xd3,0x22, + 0x7c,0xa9,0xb8,0x6a, 0xcd,0xe8,0xf0,0x1a, 0xcb,0xcc,0x50,0x96, 0x7d,0x25,0x7c,0xf7, + 0x0e,0x0b,0x23,0xe2, 0xc5,0xff,0x31,0x78, 0x24,0x27,0x82,0xb8, 0xec,0x3b,0xb9,0xb5, + 0x04,0xd4,0xf8,0xe9, 0xe5,0x1d,0x17,0x7c, 0x47,0xb0,0xbc,0xc1, 0x4a,0xed,0xe5,0xd5, + 0x84,0x55,0xaf,0x2e, 0x9b,0xcd,0xe8,0x34, 0x56,0x9b,0xa7,0x98, 0x50,0x24,0x8b,0xfb, + 0x72,0xe2,0x96,0x6e, 0x05,0x14,0x40,0x2c, 0xfa,0x2c,0xd3,0x9a, 0x09,0x11,0xda,0x17, + 0x2a,0x56,0x30,0xb7, 0x84,0x1f,0x0b,0x3c, 0x6d,0x6a,0x52,0xfb, 0x14,0xa5,0x69,0x87, + 0x9b,0xce,0x4e,0x60, 0x2b,0x91,0x4a,0xd1, 0x41,0x8b,0x03,0x94, 0xa0,0xa3,0xd2,0xa1, + 0x90,0x29,0xb8,0xa1, 0xb2,0x84,0xca,0xf3, 0x7f,0x8a,0x99,0xbc, 0xd7,0xaa,0xe4,0x54, + 0x4a,0x63,0x0c,0x6b, 0xbc,0x31,0x62,0x61, 0xb5,0x78,0x43,0x1a, 0xea,0x21,0x3b,0x50, + 0x23,0x08,0x3f,0x84, 0xb5,0x0d,0x87,0x1e, 0x58,0x43,0x98,0x49, 0xf7,0xa8,0x48,0xf2, + 0x17,0xcd,0xbf,0x6d, 0x0d,0x77,0xb4,0xee, 0xec,0xe5,0xc5,0x3f, 0x0d,0xdb,0xc8,0xb5, + 0x74,0x0c,0x39,0x5a, 0x8c,0x4a,0x5f,0x22, 0x51,0x55,0x1e,0x22, 0x28,0x0a,0x81,0xc8, + 0xc2,0x2c,0xc9,0x07, 0x14,0xb6,0x1d,0x87, 0x5e,0xc2,0xa9,0x10, 0x80,0x66,0xb2,0xa7, + 0x63,0x60,0x89,0xd1, 0xf3,0x5c,0xea,0x1f, 0x6d,0x94,0x7b,0x4f, 0x6f,0x32,0xde,0xb1, + 0xab,0x73,0x0d,0xa7, 0xbe,0x2c,0x66,0x8b, 0x80,0x25,0xff,0xcc, 0xa9,0x23,0xc3,0x54, + 0x9d,0xb3,0x3d,0x22, 0xf9,0xb1,0xee,0xe8, 0x64,0xdf,0xb8,0xee, 0x21,0xe3,0x84,0x02, + 0x6e,0x0f,0x00,0x6c, 0x30,0xee,0x1d,0x3a, 0xef,0x3a,0x88,0x64, 0x04,0xe0,0x1c,0x31, + 0x33,0xda,0x77,0x30, 0x80,0x93,0xbb,0xc8, 0x8c,0x83,0x58,0x03, 0x83,0x03,0x2f,0x66, + 0x73,0xe7,0x77,0x35, 0xf6,0x8e,0xbd,0xdf, 0x3e,0xdc,0x92,0xac, 0x5c,0xb7,0x60,0xd5, + 0x84,0xf7,0x71,0x17, 0x6b,0xda,0xac,0x0f, 0x16,0x3b,0x72,0xd7, 0xa2,0xf1,0x9c,0x45, + 0xaa,0x5d,0x57,0x33, 0x9f,0x41,0x69,0x90, 0x90,0x60,0xfc,0xd9, 0xb6,0x58,0xc3,0x56, + 0xea,0x8f,0xb9,0x1a, 0xcb,0x30,0x52,0xd4, 0x4a,0x66,0xd0,0x5f, 0xf9,0x93,0xe2,0x95, + 0x40,0x9a,0x21,0x2b, 0xe5,0x24,0xbd,0x1d, 0x70,0xbc,0x3e,0xf0, 0x32,0xbf,0x7d,0x81, + 0xa7,0x22,0x84,0x96, 0xca,0x23,0xa0,0xf0, 0xb1,0xe2,0xb7,0x08, 0xf7,0x28,0x3c,0xee, + 0xa8,0xf9,0xb8,0x20, 0x42,0x8b,0xca,0xbe, 0x78,0xb2,0xb3,0xd6, 0xd8,0x40,0x7a,0xad, + 0x79,0xa6,0xa3,0xdd, 0xc8,0x11,0x28,0x66, 0xce,0xbb,0x18,0x17, 0xe4,0x63,0xc5,0x46, + 0xba,0x12,0x83,0x5c, 0x71,0xa3,0xba,0x9d, 0x5a,0x4a,0xbd,0xd9, 0x3a,0xd0,0x5b,0x56, + 0x76,0x75,0xe8,0x07, 0x2a,0x18,0x75,0xb6, 0xd9,0x82,0x1a,0xcc, 0xdc,0xe9,0xbd,0x3b, + 0xa8,0x8c,0x32,0x97, 0x61,0xd5,0xc1,0x3f, 0x1b,0x8f,0x23,0xe5, 0x89,0xdd,0x32,0xb3, + 0x96,0xe0,0x05,0xf7, 0x61,0x8e,0xb5,0x74, 0x44,0x28,0xa8,0xde, 0xfd,0x73,0xa8,0x38, + 0x01,0x93,0x0e,0x67, 0x4c,0xba,0xea,0xac, 0x89,0x23,0x90,0xd2, 0xf7,0xd4,0xa4,0xc9, + 0x26,0x68,0x19,0x56, 0xf6,0xd9,0x7e,0x20, 0x9e,0xd6,0xae,0xdd, 0x92,0xd9,0x76,0x38, + 0x76,0x4f,0x3b,0x93, 0x17,0xaa,0x32,0xfb, 0xfa,0x88,0x2f,0x55, 0x81,0xca,0x87,0x16, + 0x09,0x25,0x20,0x25, 0x85,0xb9,0xff,0x55, 0x6a,0xc9,0x62,0x67, 0x5e,0x48,0xaa,0x18, + 0x3f,0xed,0x57,0xac, 0x3e,0x97,0x98,0x5d, 0x73,0x41,0xd4,0xff, 0xcb,0x1a,0x09,0x74, + 0x9b,0xc8,0x9d,0x33, 0x3a,0x51,0xdd,0x55, 0xe7,0xfd,0x44,0xda, 0xa9,0xa6,0xe6,0xe1, + 0xcf,0x03,0x26,0xc5, 0x03,0x2c,0xbc,0x6b, 0x06,0x75,0x13,0x8d, 0xee,0xfc,0x8e,0x0d, + 0x08,0x72,0xa0,0xfc, 0x86,0x87,0x13,0xd2, 0x0e,0xd5,0x4b,0x4e, 0x3a,0xc3,0xf7,0x98, + 0x72,0x7a,0x87,0x96, 0x13,0x54,0x35,0xb2, 0x2e,0x29,0x96,0xf4, 0x6f,0x10,0x79,0xae, + 0x01,0x33,0x89,0x97, 0x67,0xbe,0x18,0x9d, 0x12,0x07,0x73,0xc5, 0x1d,0xe2,0x45,0xf3, + 0x00,0x1a,0x08,0x39, 0x49,0x32,0x26,0xdf, 0xab,0xab,0xdc,0x01, 0x6e,0x07,0xcf,0xad, + 0x6b,0x3c,0xad,0x1d, 0x47,0xc0,0xd4,0x48, 0xce,0xcb,0x4a,0x15, 0x24,0xa2,0xe4,0x36, + 0xca,0xb8,0x9d,0xee, 0xf8,0x1a,0x0b,0xdf, 0x24,0x03,0xe5,0x83, 0xbf,0x4f,0x92,0x37, + 0xa5,0xf6,0x19,0x07, 0xbe,0x00,0xae,0xab, 0x9a,0x43,0xeb,0xf5, 0x71,0xbe,0xd1,0xfc, + 0xa6,0x8e,0x31,0xba, 0x4e,0xe3,0x2e,0xa8, 0x55,0xbc,0x17,0x84, 0xd1,0xa5,0x81,0x9e, + 0x11,0xc4,0x71,0x77, 0x3d,0x2a,0xd5,0x1f, 0x97,0x36,0xa2,0xaa, 0x79,0x00,0xad,0x34, + 0x4a,0xd8,0x91,0x5b, 0x69,0x03,0xcc,0x42, 0xcd,0x67,0x1a,0xb1, 0xf6,0x79,0x78,0x28, + 0x20,0xf0,0x42,0x13, 0x19,0x0a,0x17,0xe9, 0x25,0x8b,0x71,0x4b, 0x80,0xfe,0xe9,0x62, + 0x95,0x4d,0x79,0x2b, 0xaf,0x39,0x70,0x9e, 0x1e,0x29,0x03,0x33, 0x9b,0x98,0xdb,0x8b, + 0x02,0x4b,0x00,0x68, 0xd5,0x51,0xcc,0x40, 0x4f,0x09,0x46,0xc1, 0xc7,0xad,0xb5,0x1b, + 0x4d,0xb8,0x19,0x68, 0x1d,0x6c,0x33,0xf1, 0x67,0x32,0xe9,0x22, 0x9a,0xfa,0xa1,0xea, + 0x86,0x8b,0x48,0xa2, 0xc0,0x5f,0x52,0x19, 0x1d,0x60,0x8f,0x86, 0x5a,0x3f,0x63,0x46, + 0x5f,0x42,0xc0,0x52, 0xc1,0xfb,0x3f,0x52, 0x09,0xb0,0x7c,0xce, 0x57,0x9d,0x8e,0xe3, + 0x40,0x80,0xcc,0x73, 0x5d,0x9e,0xc9,0xd8, 0xa0,0x0d,0xc4,0xf5, 0xea,0x3e,0xa2,0xdd, + 0xce,0xeb,0xc9,0x72, 0x37,0x47,0xcb,0xa0, 0x5e,0xb7,0x15,0x12, 0x7a,0x2b,0xe1,0x87, + 0x47,0x8d,0x92,0xb5, 0x33,0xfc,0xd6,0xc6, 0x20,0x42,0xd0,0xe1, 0xc2,0xa9,0x52,0xc7, + 0x7c,0x98,0xb3,0xd7, 0x3c,0x74,0x56,0x75, 0xab,0xe2,0x71,0xd6, 0x5a,0xf5,0xd5,0xc2, + 0xd3,0x70,0x9b,0x34, 0x7a,0x3b,0x66,0x22, 0x73,0x3d,0xa7,0x32, 0x4e,0x9f,0xe5,0xce, + 0x20,0x60,0xa8,0x63, 0xf6,0x26,0xb4,0x72, 0x3e,0xe8,0x8b,0x4b, 0x72,0xf9,0xaa,0xd8, + 0xc4,0x36,0xdf,0x3b, 0xea,0xf4,0x0a,0x57, 0x66,0xfe,0x2b,0x2a, 0x93,0x1d,0xa1,0xf4, + 0x4a,0x75,0x2e,0x70, 0x09,0x39,0x5d,0xb8, 0xd9,0x38,0x0d,0x52, 0x5b,0x4c,0x61,0x90, + 0xe6,0x3d,0xa9,0x4d, 0xaa,0xb9,0xcd,0x92, 0x09,0x19,0xdb,0xc1, 0xaf,0x26,0x0f,0x9b, + 0xfe,0xb3,0xa9,0xf2, 0xd2,0x2b,0xdf,0x84, 0x6c,0x47,0x66,0x46, 0x99,0x3d,0xf7,0xf0, + 0xd2,0x07,0x31,0xaf, 0xd1,0xae,0xb1,0xee, 0x90,0x52,0x01,0x46, 0x54,0xea,0x78,0xaa, + 0x39,0xb9,0xe8,0xd4, 0xa1,0xdd,0x3b,0xb5, 0x19,0x13,0x8b,0xaf, 0x11,0x01,0x57,0xd8, + 0x9d,0xf4,0xc0,0x04, 0x4f,0xee,0x38,0x71, 0x64,0xb9,0x39,0xda, 0x1c,0xda,0x9e,0xcf, + 0xb6,0x87,0x96,0x02, 0xc7,0xc9,0xce,0x75, 0xac,0x14,0xba,0x9f, 0x4c,0x98,0xf7,0x91, + 0x58,0xcf,0x85,0xc5, 0x6f,0xa7,0x49,0x04, 0x7f,0x67,0xe8,0x2d, 0x64,0x4d,0x0a,0x72, + 0x63,0x4a,0x3d,0xc9, 0x10,0x90,0xc7,0x0d, 0x2f,0xf9,0x24,0x96, 0x2b,0xcd,0xea,0xa2, + 0x19,0x75,0xa3,0xa8, 0xb7,0xa9,0x5e,0xd2, 0x29,0x6a,0xd2,0x2c, 0x3a,0x39,0xf3,0x84, + 0x0d,0x2d,0xc4,0x2c, 0x21,0xe8,0x2b,0x93, 0xfe,0xfa,0xbe,0xd8, 0xe3,0xb7,0xd3,0x91, + 0x4d,0x0c,0x0d,0x1c, 0x8a,0x47,0xb1,0x31, 0x50,0x71,0xb1,0x0d, 0x8e,0x32,0xb3,0xd2, + 0xfa,0x6a,0x4e,0x12, 0x40,0x62,0x0e,0x1a, 0x06,0xa8,0x3c,0x3e, 0xd6,0x45,0xfc,0x9f, + 0xad,0xa4,0xb3,0x66, 0x9b,0x04,0x38,0xca, 0xbd,0xe0,0xb1,0xa8, 0xe1,0xf8,0x06,0x39, + 0x61,0xa5,0xe9,0xbe, 0x49,0xf2,0xf7,0xc7, 0x9a,0x85,0x40,0x72, 0x1d,0x2c,0xca,0xb1, + 0xae,0xc4,0xfc,0x15, 0x91,0xfa,0x0f,0x57, 0x01,0x63,0xce,0xdb, 0xcb,0xc0,0x43,0xf2, + 0x08,0x06,0x05,0x04, 0xed,0x71,0xea,0xd5, 0xb4,0x83,0xf4,0x8d, 0x0e,0x43,0x94,0xf3, + 0x1b,0x09,0xfb,0xc2, 0xf0,0xcb,0x43,0xaf, 0x2c,0x53,0x16,0x21, 0xf1,0xe4,0xf9,0x80, + 0xa7,0x76,0x07,0x0d, 0xe2,0x49,0x3b,0xf4, 0xef,0x5a,0x6c,0x7d, 0xf3,0x32,0xc3,0x3a, + 0x64,0xfc,0x27,0x6f, 0x20,0x51,0x36,0x5e, 0x3a,0xa8,0x3c,0x01, 0x1e,0xea,0x4b,0xf0, + 0xd9,0x78,0xeb,0x3d, 0xcc,0x95,0x94,0xc7, 0x09,0x6f,0xe9,0x61, 0xfd,0x3d,0x00,0x1e, + 0x7f,0x68,0x39,0xe7, 0x34,0xdb,0x76,0xf9, 0x98,0xc7,0x17,0x52, 0xe6,0xba,0xf3,0xea, + 0xec,0x83,0xd5,0x69, 0xa9,0xc2,0xb5,0x94, 0x0c,0x8f,0x01,0x00, 0x9e,0x71,0x66,0xdb, + 0xcf,0x43,0xa7,0x05, 0x5d,0x9f,0x0e,0xb8, 0x3b,0x59,0xaf,0x23, 0xd6,0x89,0xc6,0x5c, + 0x59,0xba,0xa8,0x9f, 0x20,0x43,0x17,0xff, 0x36,0xb2,0x8c,0x6f, 0xe7,0x79,0x44,0x75, + 0xa6,0x8f,0x13,0xda, 0x0b,0x49,0x0f,0x44, 0x42,0x70,0xcc,0xd7, 0x78,0xbf,0x1f,0xe2, + 0x3c,0x07,0x28,0x75, 0xb1,0x52,0xbe,0x21, 0x94,0x63,0xda,0x1b, 0x1b,0x5b,0x1f,0xcb, + 0x04,0x3a,0x40,0xd8, 0x57,0x3f,0x5d,0xac, 0x87,0xf8,0x16,0xf0, 0x31,0x54,0x7b,0x06, + 0x74,0x6d,0xb2,0x9c, 0x22,0x71,0x9b,0x3e, 0xe7,0x0b,0xe5,0x11, 0x80,0x63,0x25,0x07, + 0xb5,0xc6,0x7f,0xe9, 0xe0,0x69,0x71,0x40, 0x79,0xc7,0xde,0xd9, 0xa7,0xc3,0x76,0x95, + 0x4a,0x6c,0x55,0x92, 0x62,0xe6,0xda,0x19, 0xea,0x11,0x93,0x71, 0xbf,0xb8,0xb3,0x84, + 0x3d,0xa7,0xa9,0xce, 0x64,0xa4,0x0c,0xcb, 0x21,0x8e,0x87,0xe8, 0x7a,0x45,0x86,0x18, + 0x7d,0x05,0x1e,0x63, 0xbd,0xad,0xe1,0xaa, 0x2a,0x00,0xbf,0xb3, 0x3b,0xad,0x32,0x0d, + 0xda,0x97,0xa9,0xdf, 0x8e,0x0a,0xc4,0xde, 0x73,0x6a,0xb2,0x4a, 0x1a,0x26,0x96,0xf6, + 0x1b,0x77,0x38,0x10, 0x69,0x63,0xc7,0xd5, 0xa2,0x59,0xf5,0x8c, 0x69,0xa9,0x27,0x66, + 0x84,0xc2,0xeb,0xb9, 0x4f,0xf0,0x12,0x1f, 0x75,0xba,0x6b,0xe2, 0x10,0xd9,0x20,0xc4, + 0x5d,0x01,0x08,0xa2, 0x6e,0x9d,0xfc,0x62, 0x74,0xc0,0xfd,0x2c, 0xd3,0xdb,0x8c,0x9a, + 0xf0,0xf4,0x68,0xad, 0x26,0x2f,0xda,0x86, 0x61,0xbd,0x48,0xc6, 0x4a,0xd4,0x64,0xa3, + 0x8f,0xbd,0x84,0xd8, 0x4e,0x4d,0xe2,0xcd, 0x42,0xfe,0xbd,0x64, 0xde,0xdf,0x19,0x2d, + 0xf8,0xe1,0xc1,0xf2, 0x91,0x40,0x14,0xa4, 0x0f,0xb4,0x8c,0x94, 0x32,0x10,0x62,0x35, + 0x0d,0xbc,0xc5,0xe6, 0xb1,0x62,0x5f,0xeb, 0x9c,0x4a,0xc3,0xe7, 0x32,0xf9,0xc6,0xf0, + 0x74,0x8d,0x57,0xfe, 0xe8,0x0c,0x26,0x36, 0x2d,0xa1,0xbc,0xed, 0x8a,0x9c,0x16,0xee, + 0xfa,0x91,0x3e,0x47, 0x44,0x10,0xf1,0x7e, 0x07,0x25,0x84,0x58, 0xf3,0x3e,0x60,0x9c, + 0x34,0x4d,0x53,0x53, 0xef,0x94,0x4b,0x9f, 0x48,0x4b,0xbd,0x94, 0x44,0x48,0xf6,0x1a, + 0xf7,0x3f,0xbb,0xcc, 0x58,0xfb,0xbb,0x85, 0xe0,0x0d,0x16,0x1b, 0x8a,0xb9,0x10,0x8f, + 0x1f,0xea,0x50,0xce, 0x6e,0xde,0x7a,0x7c, 0xe0,0x22,0x0f,0xbb, 0xd8,0x8c,0x9e,0x83, + 0x6d,0x34,0x98,0x41, 0xe6,0xde,0x3c,0x25, 0x09,0xcb,0x42,0xe5, 0xae,0x4c,0xfd,0xd7, + 0x7a,0x94,0xd3,0xc2, 0x6d,0x35,0x24,0xd0, 0xcf,0xdb,0xf2,0xac, 0xf9,0xa4,0x60,0xe5, + 0x6b,0xf9,0xce,0x9c, 0x45,0x27,0x68,0x20, 0x88,0xa5,0x6d,0xd9, 0xf5,0x9d,0x70,0x9f, + 0xf4,0xe2,0xa8,0x7f, 0xa4,0x0a,0x9b,0xa3, 0x90,0x3d,0xa6,0x49, 0x67,0xa9,0x99,0x76, + 0x03,0x39,0xd8,0x9c, 0x20,0x0b,0x14,0x96, 0x63,0x8e,0xe6,0xce, 0x95,0x86,0xa7,0x73, + 0x94,0x0e,0x45,0xea, 0xfd,0x2b,0x14,0x6e, 0xa4,0x14,0xc4,0xe4, 0x4d,0xbb,0xca,0xef, + 0xcf,0x20,0x32,0x07, 0xce,0x88,0x0c,0x4c, 0xee,0x53,0xde,0x69, 0x68,0xa3,0x41,0x47, + 0x1a,0xbd,0x3f,0x3d, 0x99,0x85,0xa2,0xf0, 0x13,0x54,0xaa,0x68, 0x75,0x33,0x67,0x28, + 0x2f,0x56,0xbc,0xc3, 0x4b,0xb1,0xe4,0x4f, 0x9a,0xb8,0x6d,0x66, 0xf0,0xd6,0xf4,0x9c, + 0x7a,0x62,0x0e,0x4b, 0xfc,0x7d,0x2c,0x56, 0xc5,0xc1,0x1d,0x06, 0xfc,0x8e,0xf4,0x46, + 0xc2,0x6f,0x6a,0x3b, 0xfa,0x9e,0x7c,0x2d, 0xd7,0x74,0x7a,0x23, 0x7d,0x96,0xa8,0x78, + 0xae,0x0e,0x34,0x25, 0x93,0x28,0x53,0x2c, 0x1c,0xe3,0xb1,0x4b, 0x6c,0x15,0x78,0xf2, + 0x1a,0x10,0xf7,0xd3, 0x5a,0xf6,0x44,0x83, 0x15,0xaa,0x7a,0xde, 0x72,0x3c,0xea,0xdb, + 0x89,0xde,0x84,0x8b, 0x9f,0x0b,0xaa,0xc9, 0x34,0xc0,0xec,0xe5, 0xfc,0xe8,0xed,0xb4, + 0x93,0x87,0x23,0xa9, 0xc2,0xd9,0x2b,0xb6, 0x00,0xde,0x99,0x85, 0x28,0xe8,0x77,0xde, + 0x2d,0x66,0xe6,0x9b, 0x90,0xbf,0xc7,0xcf, 0x29,0x53,0x8a,0x43, 0xd3,0x78,0xe6,0x38, + 0x02,0x12,0xd4,0x62, 0x33,0x20,0x85,0xa7, 0x0e,0x4c,0xea,0x5a, 0x37,0xb1,0xd8,0xff, + 0xb2,0xa0,0x74,0x22, 0x0e,0xde,0x7b,0xd5, 0x26,0xe2,0x0a,0x77, 0x2a,0x87,0x19,0x09, + 0x65,0xa5,0x81,0x50, 0x1f,0x7e,0x41,0xde, 0x02,0x62,0xf0,0x6a, 0x92,0xb5,0xb4,0x6c, + 0x64,0xcf,0x5f,0xa8, 0x96,0xc6,0x70,0xb6, 0x66,0xf9,0xc4,0xf7, 0x10,0x19,0x82,0xf9, + 0x8d,0x09,0x22,0xcf, 0xdf,0x7f,0x39,0x30, 0xca,0x7d,0xb5,0x03, 0xf1,0x69,0xae,0xdc, + 0x3c,0xb2,0x5d,0xa9, 0x74,0x7d,0xd4,0x5c, 0x9b,0x71,0xae,0xa6, 0x50,0x90,0xf9,0x58, + 0xf0,0x14,0x2f,0x36, 0x1e,0x3e,0x8a,0x3d, 0x0c,0x67,0xd7,0x77, 0xd6,0x86,0xa7,0x80, + 0x16,0x0d,0xea,0x7a, 0x54,0xd4,0x9d,0xdf, 0x82,0x2c,0x0e,0x6a, 0x75,0x24,0x89,0x5b, + 0x47,0xc7,0x16,0x59, 0xa4,0xd4,0xe5,0x72, 0x8d,0xb0,0xb6,0x86, 0xbb,0x9f,0x48,0x38, + 0xf2,0xf3,0x73,0x0a, 0x3d,0xc3,0x26,0x88, 0xaf,0x86,0x41,0x98, 0xb6,0x22,0x74,0xde, + 0x99,0x49,0xe7,0x0f, 0x82,0x49,0x2e,0x8a, 0xea,0x56,0x4e,0x8c, 0x5a,0xd1,0xbd,0x3f, + 0x45,0x0c,0xfe,0x6a, 0xaa,0x3c,0xd7,0xb4, 0x8c,0x42,0x03,0x65, 0xc6,0x5d,0x38,0x20, + 0x97,0xfe,0xe7,0xd6, 0xd8,0xd1,0x8e,0x1f, 0xd2,0xc7,0xfa,0x01, 0x77,0x27,0xc4,0x0e, + 0xff,0xe7,0x0f,0xf3, 0x12,0x55,0xdf,0x1f, 0x28,0xa2,0x57,0x97, 0xd4,0x4b,0xa4,0x4f, + 0x60,0xac,0x55,0x1a, 0x0f,0x2c,0xc5,0x36, 0x77,0xa3,0x44,0xf5, 0x6e,0x1c,0x12,0x54, + 0xd5,0xad,0x3d,0x9e, 0x02,0x17,0xf4,0xd3, 0x50,0x50,0x0f,0xbf, 0x5b,0x22,0x57,0xa3, + 0x18,0xf3,0x3a,0x71, 0x12,0x2c,0x4a,0xf3, 0xc9,0x9a,0x3b,0xf9, 0x31,0xee,0x52,0x24, + 0x4d,0xa3,0x4f,0xb2, 0x2d,0x29,0x89,0xb1, 0x9c,0x17,0x04,0xe6, 0x13,0xb2,0x96,0x15, + 0x5d,0x0d,0x5c,0x58, 0xf2,0x3f,0xc8,0x38, 0xc9,0x5c,0x03,0xd1, 0xc9,0x51,0x6d,0x3a, + 0xe8,0xf4,0x92,0xc4, 0x03,0x1a,0x00,0xaf, 0x78,0x83,0xb7,0x1a, 0x03,0x90,0x6d,0x1b, + 0x8a,0x43,0x33,0xd8, 0xa1,0xe3,0x51,0x57, 0x5a,0xf5,0xed,0xd6, 0xae,0x8a,0xbe,0x92, + 0xfd,0x2a,0x96,0x32, 0xc6,0x77,0x20,0x87, 0xab,0xb9,0x53,0xa2, 0xf2,0x44,0xf7,0xe0, + 0xbe,0xbd,0x32,0xb1, 0xf3,0xad,0x5c,0x1d, 0x45,0xd6,0x41,0xa0, 0xc2,0xbc,0x97,0xd2, + 0xef,0xec,0xef,0x5c, 0xfa,0xcd,0xf0,0x2d, 0x93,0x07,0x5e,0x08, 0xc3,0x0a,0x5d,0x40, + 0x9c,0x9b,0xc4,0x93, 0x8c,0x6b,0x20,0x98, 0x6d,0x88,0xd1,0x4d, 0xb2,0x98,0xef,0x11, + 0x59,0x49,0x73,0x87, 0x3e,0x49,0xe0,0xfd, 0x37,0xaf,0x4c,0x18, 0x53,0x29,0x4a,0x4b, + 0xf5,0xca,0x53,0x40, 0xb4,0xfa,0x11,0xa7, 0x12,0xda,0x46,0x3a, 0x48,0xaf,0x5a,0x14, + 0x37,0x33,0xc2,0x28, 0x3f,0xac,0x91,0xe8, 0xbb,0x67,0x12,0xc4, 0xce,0x39,0xe6,0x26, + 0x10,0x08,0xa5,0xfc, 0x45,0xad,0x2a,0xfb, 0xfc,0x97,0x6c,0x0b, 0xd4,0x49,0xd3,0xb0, + 0x0c,0x7f,0x30,0x40, 0x9c,0xaa,0x07,0x52, 0x12,0x6e,0xcf,0x4c, 0x0e,0x93,0xb6,0x55, + 0xef,0x7e,0x3f,0xef, 0xd9,0x84,0xb2,0xae, 0x90,0xe4,0xd1,0xd4, 0x7b,0xda,0x3d,0xd2, + 0x2c,0xb9,0x5c,0xb4, 0x0e,0x3b,0x7e,0x2b, 0xae,0x74,0x1f,0xea, 0x71,0x23,0xf8,0x30, + 0x94,0xa5,0x09,0x6b, 0xbd,0x6c,0x56,0x16, 0x48,0xb6,0xf4,0x19, 0xd1,0xdb,0x79,0x0b, + 0xb8,0x57,0x77,0x1e, 0x9e,0xcf,0x35,0xbe, 0x99,0x49,0xaa,0x84, 0x52,0xb6,0x22,0xaa, + 0xd7,0x18,0xa0,0x7e, 0x23,0xef,0x95,0x21, 0x35,0x10,0x3c,0x0a, 0x6a,0x00,0x03,0x76, + 0x7a,0x47,0x0f,0xc2, 0xc1,0x87,0xc1,0x9a, 0x32,0x1d,0x41,0x64, 0x2b,0xfb,0xca,0xa0, + 0x89,0x7e,0xb8,0x3f, 0x1c,0x64,0xd9,0xa5, 0xd2,0x68,0x1e,0x84, 0x51,0x01,0x70,0x09, + 0x73,0xf4,0x1c,0x56, 0xf3,0x03,0x96,0xf4, 0xb4,0x78,0xb7,0x7d, 0x08,0x1a,0xa5,0xea, + 0xef,0xc7,0x00,0x55, 0x56,0x64,0xc4,0x7c, 0x34,0x95,0x5d,0xf9, 0x26,0x45,0x07,0xcb, + 0x43,0x69,0xb3,0x5f, 0x52,0x7a,0xd9,0xdd, 0x0a,0x3c,0xa6,0x63, 0x8e,0xe8,0x81,0x34, + 0xfd,0x7c,0x3a,0x85, 0xae,0xb7,0x91,0x67, 0xa3,0xca,0x9f,0x0d, 0xa0,0x7b,0xc7,0x05, + 0x8b,0x9f,0x97,0xab, 0xc8,0xe5,0x85,0x8e, 0xe3,0x29,0x88,0x38, 0x86,0x04,0x01,0xe0, + 0x4f,0x6d,0x10,0xa4, 0xcd,0xe3,0xec,0xbb, 0xf0,0xed,0xfa,0x7b, 0xc0,0xda,0xf5,0x94, + 0xbc,0x9a,0xae,0xa9, 0xf0,0x1b,0x27,0x4d, 0x3b,0xe0,0x27,0xa3, 0x35,0x36,0x29,0xbf, + 0xd3,0x67,0xfc,0xe9, 0xdb,0x27,0x4d,0x18, 0x9f,0xec,0x77,0x59, 0x9e,0x6e,0x2a,0x42, + 0x20,0x4a,0xb7,0xfa, 0x79,0x3c,0xee,0x4a, 0xc5,0x52,0x26,0xb7, 0xdc,0xb2,0x4c,0xa1, + 0x0e,0xad,0x1e,0x5a, 0x6d,0x65,0xd9,0x54, 0x2f,0xe4,0x95,0x46, 0x7e,0x87,0xfe,0x9f, + 0xc1,0x24,0x88,0x65, 0xfb,0xd4,0x59,0x09, 0xa1,0x4b,0x91,0xda, 0x24,0xca,0x78,0x0c, + 0xbb,0x89,0xc2,0xcd, 0xea,0x11,0xff,0xd6, 0x76,0xac,0xfb,0xa1, 0x29,0x88,0xca,0x00, + 0xfb,0xf0,0xee,0x3a, 0x74,0xdd,0xab,0xdc, 0x91,0x17,0xbe,0xee, 0xe1,0xfa,0x02,0x4a, + 0xce,0xdb,0x87,0x08, 0x95,0x9b,0x7e,0xa7, 0xf9,0x97,0x83,0xf9, 0x98,0x21,0xbd,0x2d, + 0xf5,0x47,0x9a,0xd9, 0x42,0x35,0x85,0x9a, 0x50,0x57,0x5a,0xae, 0x6c,0xfb,0x81,0x01, + 0x87,0xf1,0x53,0xba, 0x08,0x0b,0xc6,0x83, 0x17,0xa1,0xf2,0xc9, 0x5f,0x17,0xbd,0x31, + 0xcd,0x54,0xf9,0xbd, 0xa2,0xdd,0x53,0x53, 0x99,0x10,0x19,0xc1, 0x4e,0xe6,0x4f,0xf9, + 0x01,0x87,0x25,0xb8, 0x25,0x6e,0xf6,0xfe, 0xfd,0x64,0xd8,0xbf, 0x5f,0x77,0x75,0x47, + 0x58,0xd0,0x8c,0xb1, 0xdb,0xe5,0xf9,0x89, 0x6f,0x33,0x8c,0xe3, 0x50,0x8b,0x8b,0xce, + 0xed,0x91,0x62,0x22, 0x4f,0x16,0x17,0x4d, 0x69,0xc6,0x1b,0x7f, 0x2d,0xc9,0xd6,0x7b, + 0xa7,0x90,0x30,0x94, 0x9b,0xf8,0x1f,0x8b, 0xf1,0xdc,0x9a,0xb3, 0x60,0xdd,0x17,0x11, + 0xc8,0x2c,0x8c,0xa0, 0x7f,0x99,0x1a,0x9e, 0xd2,0xe2,0x30,0xd1, 0x06,0x29,0x94,0xe9, + 0x17,0x96,0x3e,0x46, 0xb2,0x36,0x22,0xbd, 0xa8,0xf4,0xd9,0x0e, 0x2c,0xb1,0x5c,0xb4, + 0x43,0x0f,0x2a,0x7f, 0x7d,0xa5,0x2d,0x30, 0xcb,0xc2,0xa4,0xf4, 0x63,0x0c,0x24,0x0b, + 0xd4,0xe3,0xe7,0x04, 0x8b,0xe2,0x3a,0x54, 0x7d,0x1e,0xfd,0xc0, 0x2f,0x0e,0xde,0xa4, + 0x2a,0xdd,0x17,0x8c, 0xbb,0xea,0x9c,0x43, 0xa2,0xb6,0xa0,0xc3, 0xd8,0xbc,0x21,0xda, + 0xe3,0xbc,0x15,0x49, 0x14,0x0e,0xee,0x0d, 0x97,0x58,0x76,0x53, 0xd5,0x2f,0xc3,0xc2, + 0xd1,0x42,0x8e,0xe6, 0xff,0xe8,0x1c,0xd6, 0x0b,0x8c,0xbe,0x28, 0xf2,0x80,0x18,0x7a, + 0x4e,0x88,0xbd,0x44, 0x48,0xca,0x2c,0x3e, 0x16,0x35,0xe6,0x89, 0xac,0x03,0xbf,0x5f, + 0xa4,0xcd,0x93,0xac, 0x9b,0x9b,0x99,0xa2, 0x81,0xae,0x1a,0xb8, 0x97,0xf6,0x35,0x88, + 0x50,0x78,0x56,0x71, 0xe0,0xb4,0xfe,0x69, 0xec,0xfa,0x8a,0xda, 0x52,0x22,0x78,0x5f, + 0x7f,0xf0,0xe7,0xa8, 0x0f,0x89,0xaa,0x1f, 0xf1,0x6d,0xaf,0xe3, 0x8b,0xa0,0xee,0x4d, + 0xcb,0xcc,0xcc,0x4e, 0x37,0x89,0x03,0x44, 0xd8,0xf8,0xa2,0x23, 0xad,0x35,0x10,0xab, + 0xd0,0xe5,0x8a,0x32, 0x1c,0x26,0xe4,0x74, 0x1c,0x9b,0x93,0xf2, 0x79,0xe2,0x17,0x18, + 0x36,0xd5,0x13,0x4c, 0x0e,0x73,0x73,0xe3, 0xc7,0xb4,0x6a,0x97, 0x36,0xca,0xb2,0x5a, + 0x05,0xbf,0xeb,0x30, 0xf8,0x64,0xd2,0xbd, 0x8f,0xba,0x55,0x96, 0x58,0xd9,0x05,0x7b, + 0x82,0x8f,0x9f,0xf5, 0x02,0xf6,0xe4,0x12, 0x4a,0xfc,0x8f,0xe6, 0xdc,0x4d,0xc7,0x7f, + 0x5d,0x59,0x5b,0x76, 0x17,0x6c,0xd8,0xc1, 0x12,0x9b,0x2d,0x85, 0xd4,0xb7,0x1f,0x54, + 0x12,0x23,0xde,0x55, 0x75,0x5c,0xe3,0x5e, 0xe1,0x4b,0xa9,0xd9, 0x58,0x57,0x70,0xe9, + 0x41,0x02,0xd1,0x07, 0x5d,0x8a,0x7a,0xc7, 0x71,0xaa,0xd9,0x46, 0xd9,0x47,0xfd,0x32, + 0x4a,0x2b,0x61,0xe8, 0x56,0x00,0x0d,0xd0, 0x8f,0xd1,0xb9,0xa1, 0x0d,0xcc,0x36,0xb1, + 0xaa,0xbc,0x51,0x18, 0x19,0x85,0xe0,0xcb, 0x9f,0x25,0x4e,0x59, 0x2d,0x28,0x2f,0x39, + 0xba,0x45,0x71,0x05, 0x1c,0x4d,0xe3,0x34, 0x26,0x34,0xb7,0x7d, 0x8e,0xdd,0xaf,0x8e, + 0x48,0xb2,0x08,0xf9, 0x61,0x28,0x71,0x73, 0x25,0x40,0x2d,0x4a, 0x4a,0x8a,0x02,0xc4, + 0x18,0x73,0x86,0x2a, 0x9d,0xe4,0x0c,0x28, 0xd7,0x70,0x3f,0xb2, 0xe6,0xce,0x93,0x8d, + 0x6e,0x12,0xcc,0xb7, 0xaf,0x6f,0x98,0xac, 0xd6,0x3c,0xaf,0x94, 0x30,0xf8,0x6f,0xa2, + 0xd2,0xdd,0x94,0xc5, 0xea,0xda,0xcc,0xfd, 0xa8,0xde,0x2f,0x6c, 0x11,0x43,0xb1,0x3e, + 0x88,0x0b,0xa5,0xb4, 0x75,0xa4,0x39,0xe1, 0xda,0x79,0x85,0xd9, 0xb8,0x91,0xdc,0xc2, + 0x6c,0xee,0x33,0xdf, 0xdc,0xb7,0xea,0x28, 0xed,0x07,0x7a,0x35, 0x64,0x2f,0x15,0x8b, + 0x38,0x53,0x99,0x02, 0x8d,0x35,0xe3,0x65, 0x3e,0xb3,0xf6,0xcf, 0xe3,0x63,0x1f,0x3c, + 0x04,0x26,0x02,0xec, 0xb6,0x24,0xe7,0x3b, 0xc8,0xc2,0x46,0xf3, 0x3b,0xb6,0xd7,0xa6, + 0x49,0x00,0x0b,0x5a, 0x6d,0x0d,0xe8,0x1c, 0x18,0x39,0xe1,0xca, 0x9f,0xbe,0x89,0x9d, + 0x8f,0x80,0x94,0x1c, 0x46,0xba,0x82,0xd4, 0x8b,0x88,0xb1,0x28, 0xc6,0x20,0xaa,0xff, + 0xdc,0x6e,0xea,0xca, 0x60,0x23,0xb2,0xae, 0xdf,0xc0,0xad,0xef, 0xa1,0x11,0x45,0xdc, + 0xe5,0x7f,0x14,0x84, 0x24,0xee,0x6e,0xd9, 0xc6,0x11,0x3e,0x96, 0xfd,0xa0,0x8b,0xe7, + 0x3c,0x30,0x55,0xd8, 0xdd,0x10,0x04,0x58, 0x8c,0xe4,0x1a,0xb9, 0xd5,0xed,0x3c,0x45, + 0x78,0x59,0x77,0x59, 0x28,0x7e,0x5b,0x35, 0x4f,0x48,0x14,0x0c, 0x16,0xc7,0x77,0xdb, + 0xd3,0x37,0xda,0xd7, 0xae,0x7c,0xcd,0xed, 0xa3,0xfd,0x73,0x52, 0xce,0x22,0xb4,0xb6, + 0x66,0xd0,0xde,0xf1, 0xc0,0x20,0x28,0x41, 0x89,0xf4,0x0e,0x49, 0x6d,0x1b,0x62,0x08, + 0x75,0x99,0x7e,0xbf, 0x34,0xe9,0xee,0x63, 0x62,0x58,0x7b,0x43, 0xcc,0x3a,0x8b,0x25, + 0x59,0xae,0x19,0xa3, 0xc4,0xbe,0x6d,0x5b, 0xba,0x2c,0x6a,0xbd, 0x18,0x61,0x46,0xe6, + 0x64,0x68,0xff,0x14, 0xb7,0x6c,0x2f,0xef, 0xf0,0xc7,0x52,0x03, 0x59,0x71,0xcd,0x14, + 0x31,0x97,0x4e,0xd3, 0xce,0x0a,0x38,0xf9, 0xe6,0x26,0x3b,0x95, 0xf1,0xe8,0x3f,0xa9, + 0x6a,0x2f,0x2c,0x3b, 0xe9,0x39,0xe1,0xe5, 0xba,0x79,0x28,0x00, 0xdd,0x01,0x99,0x36, + 0x05,0x4f,0x0c,0xe1, 0xd0,0x60,0x3d,0x99, 0x5f,0xfe,0x89,0x73, 0xf4,0x96,0x17,0x77, + 0xb4,0x79,0xc1,0x68, 0xac,0xf9,0x84,0xd1, 0xcc,0x5f,0xfa,0x87, 0x95,0x7f,0xcf,0x3c, + 0xc3,0x41,0xad,0xfe, 0x52,0x88,0xee,0x87, 0xca,0xd6,0x85,0xdc, 0xe8,0x06,0x39,0xf4, + 0xd5,0xb4,0xfd,0x5b, 0x9f,0xbd,0x76,0x93, 0xf6,0x7d,0x03,0x11, 0x05,0xd3,0x89,0x62, + 0x32,0x1e,0x71,0x91, 0x05,0xf3,0x53,0x40, 0x0e,0x88,0xc7,0x55, 0x8d,0x14,0x69,0x1c, + 0x0f,0x96,0x0d,0x51, 0xdf,0x1b,0x81,0xed, 0x75,0xf8,0x40,0x17, 0xde,0x96,0xdf,0x8e, + 0xac,0x9a,0x44,0x04, 0x9e,0x72,0x9b,0x6d, 0xd2,0x72,0xe5,0xfa, 0x14,0x4f,0xea,0x72, + 0x4f,0xd0,0xfa,0xc2, 0xdb,0xf0,0x70,0x88, 0x00,0x53,0xa7,0x3a, 0x64,0x0c,0xc9,0x51, + 0xde,0x98,0xfd,0x7d, 0x6b,0xcc,0x4b,0xc4, 0xb7,0x73,0xdb,0xc7, 0xc0,0xf3,0x70,0xbb, + 0xe7,0x79,0xeb,0x83, 0x7a,0x57,0x98,0x59, 0x2b,0x80,0xad,0x89, 0x6f,0x1c,0x14,0x9f, + 0x4a,0xab,0xc4,0x51, 0xe2,0x18,0xb6,0x9b, 0x6c,0x22,0x8c,0xe0, 0xb2,0xd0,0xb2,0x97, + 0x41,0x9b,0x05,0x3a, 0x59,0x05,0x21,0x3d, 0x0d,0xfc,0xfc,0xff, 0xff,0x16,0x2f,0xc7, + 0x26,0x45,0x50,0x4f, 0xd4,0x5a,0x68,0xd3, 0xc3,0xaf,0x16,0x94, 0x5f,0x7b,0x1a,0x12, + 0x3e,0x6d,0xa4,0xd8, 0x42,0x25,0xf6,0x60, 0xd5,0x81,0xbe,0x27, 0x7e,0xc0,0xcc,0x99, + 0xce,0x63,0x98,0x94, 0x79,0xeb,0x49,0x64, 0x43,0xd9,0x5c,0xd4, 0xc6,0x01,0x1e,0x3e, + 0x8f,0x9f,0xae,0x84, 0x85,0xbf,0x59,0xac, 0xb5,0x1b,0xc5,0x59, 0x68,0x01,0xa8,0x85, + 0x30,0xa0,0x21,0x79, 0x0c,0x65,0x48,0x62, 0xa5,0xa6,0x92,0x10, 0x1d,0x92,0x55,0x7f, + 0xf9,0xdd,0xc3,0x6d, 0x06,0x88,0x7b,0xdf, 0xcf,0x7a,0xd8,0xe4, 0x78,0xe5,0xa4,0xd0, + 0x0e,0x0e,0xa4,0xdd, 0xfa,0x33,0x03,0x47, 0xf1,0xb6,0xf6,0x74, 0x3e,0xa1,0x1e,0xa2, + 0x62,0xb3,0x51,0x87, 0x2d,0x00,0x6a,0x5e, 0xf5,0x24,0x43,0x74, 0xae,0x9b,0x72,0xe3, + 0x8a,0x51,0x0e,0x99, 0x9d,0x82,0x4b,0x31, 0x04,0xaa,0xa6,0x81, 0x4d,0xae,0x7c,0xf1, + 0x42,0xf5,0xb0,0x2a, 0x33,0x24,0xd3,0x2c, 0x01,0xe6,0x9a,0x83, 0xf9,0xdf,0x55,0xbc, + 0x23,0x02,0x89,0xa6, 0xb7,0xfe,0x91,0x49, 0x8a,0x90,0x29,0x5a, 0x6a,0x3d,0xa9,0xf7, + 0x0d,0x89,0xbc,0x5c, 0x81,0x3d,0xf5,0x80, 0xc4,0xc4,0x05,0x46, 0x72,0x27,0x23,0xfb, + 0x4f,0x6c,0xbc,0xbf, 0x6c,0x11,0xe8,0xba, 0x41,0x6a,0x28,0x3c, 0x41,0xd8,0x92,0xbb, + 0xa2,0x92,0x6b,0x8b, 0x39,0x8d,0xc1,0xbc, 0xd5,0xea,0x67,0x34, 0x80,0x81,0x04,0x27, + 0x10,0x72,0xc3,0xd4, 0x04,0xe0,0x50,0x87, 0xce,0xac,0x1a,0xdf, 0x71,0x48,0xda,0xea, + 0xb6,0x26,0x6a,0xf6, 0x58,0x66,0x4c,0x60, 0x67,0xdd,0xae,0x8d, 0x7a,0x6c,0xe7,0x73, + 0x70,0x8b,0x1a,0x6d, 0x9e,0x2d,0x7c,0x9c, 0x9a,0xca,0xfb,0x7c, 0x6e,0x95,0xbf,0x72, + 0x73,0xa2,0xd1,0x1b, 0x6d,0x48,0x50,0x75, 0xe6,0xcf,0x7a,0x8d, 0xb3,0x3a,0x3d,0x22, + 0x26,0xea,0xf2,0x5b, 0xd0,0x35,0xd4,0xf8, 0x71,0x22,0x92,0x41, 0x41,0x0c,0xaf,0x64, + 0xc9,0x60,0xef,0x97, 0xb3,0x13,0xe3,0x78, 0x3e,0xcb,0x08,0x91, 0xa4,0xc9,0x65,0xc1, + 0x56,0x22,0x38,0xcd, 0x5c,0xa8,0x81,0x2f, 0x61,0x4b,0x20,0x88, 0x36,0x14,0x7d,0xa1, + 0x70,0x1f,0xfc,0x63, 0xd6,0x53,0x03,0xb2, 0x0b,0xfc,0x80,0x93, 0x37,0x23,0x56,0xf6, + 0x05,0xf4,0xe6,0x7a, 0x2c,0x8d,0xe2,0x47, 0x40,0x40,0x84,0xa8, 0x4a,0x75,0xed,0x70, + 0x22,0x14,0xdb,0xdc, 0xc5,0xa8,0xb9,0x20, 0xa4,0x88,0x47,0xb1, 0x33,0x99,0xae,0xc6, + 0x60,0x08,0xbb,0x6f, 0xbb,0x4a,0x79,0x89, 0xa9,0x05,0x07,0x2b, 0xa7,0xa9,0xa3,0xdc, + 0x0f,0x2d,0x96,0x4b, 0x0e,0x69,0xc3,0xc2, 0xa1,0xb4,0xb5,0x17, 0x04,0x4b,0x6f,0xd4, + 0xd9,0xae,0xdf,0xf7, 0x97,0x2b,0x3e,0x8e, 0xd9,0x7b,0xc4,0xa3, 0x4a,0xd0,0x45,0x5b, + 0x2f,0x2c,0xa4,0xa6, 0x8f,0xe4,0x5d,0x02, 0xc1,0x5c,0x11,0xbb, 0xda,0xf0,0x38,0x42, + 0x6c,0xbe,0x87,0xba, 0xe4,0x34,0x8f,0xe2, 0xf2,0xa1,0x08,0xe8, 0xe3,0x6a,0x6c,0xbd, + 0x8f,0x99,0x83,0x48, 0x79,0x6c,0xe6,0x8d, 0x5a,0x8e,0xcb,0x74, 0x37,0xd1,0x5a,0xe8, + 0x42,0x32,0x5e,0x1f, 0xb0,0xaf,0xbf,0x48, 0xe8,0x7b,0xf4,0x28, 0x3f,0x91,0x8b,0x70, + 0xc0,0x50,0xdf,0x3e, 0x2e,0x3d,0x8f,0xf4, 0x55,0x92,0x1b,0x26, 0x14,0x5a,0x26,0x09, + 0x6c,0x50,0x2c,0x99, 0x42,0x97,0xef,0x93, 0xa7,0xea,0xb7,0x12, 0xe8,0x56,0xf2,0x11, + 0x91,0xe4,0xd7,0x34, 0xc2,0x4f,0x20,0xe5, 0xa4,0x3b,0x89,0xad, 0xf6,0x28,0x7f,0x6b, + 0x5d,0x49,0xff,0xc4, 0x58,0x07,0xef,0x27, 0x84,0xb9,0xe7,0xa2, 0x53,0xf4,0x33,0xa9, + 0xe4,0x57,0xce,0x62, 0x36,0x99,0x90,0xf4, 0x6c,0x87,0x2e,0x85, 0x32,0xc9,0xdc,0xdb, + 0x58,0x41,0x4d,0x7e, 0x3b,0x63,0x8d,0x0c, 0xce,0xa1,0x7d,0x7c, 0x72,0xad,0x1e,0xbc, + 0x19,0x2d,0x91,0x41, 0x06,0xf1,0x2d,0x24, 0x4f,0xbe,0x27,0xea, 0x99,0x8e,0x73,0xe8, + 0xdc,0x99,0xc2,0x19, 0x11,0xe8,0xfa,0xff, 0xe9,0xc2,0x70,0x27, 0x1b,0x18,0x53,0x75, + 0x7f,0xa3,0xb7,0xb2, 0x1e,0x3b,0x06,0x5e, 0xe9,0xd3,0x08,0xf8, 0x13,0x96,0xa5,0x88, + 0xbf,0x24,0x65,0x1d, 0xaa,0x69,0x57,0xda, 0x01,0xbe,0x14,0x39, 0x89,0x65,0x2a,0xcf, + 0xed,0x11,0xa8,0xc6, 0x54,0xc5,0x16,0x85, 0x27,0x84,0xd9,0x00, 0x53,0x65,0x49,0xa9, + 0x8c,0x66,0x43,0xff, 0x38,0x00,0x56,0xae, 0x63,0x6d,0xdf,0x72, 0xa9,0x18,0x7e,0x56, + 0x55,0xf0,0xef,0xb2, 0x7b,0x88,0x55,0xc6, 0xec,0x55,0xb5,0x3f, 0xa8,0x6b,0x7c,0x74, + 0x2c,0x6b,0x2f,0x38, 0x65,0x37,0xb0,0x2f, 0xeb,0x80,0x17,0x38, 0x46,0xe7,0xbf,0xe9, + 0x6b,0xb0,0xf2,0xbb, 0x64,0x0b,0x90,0x27, 0x22,0xaf,0x50,0xd7, 0xe1,0x80,0xb0,0x2e, + 0x10,0xfd,0x6a,0xdb, 0x6c,0x3a,0x82,0x76, 0x85,0x35,0xcb,0xb2, 0x79,0x67,0x0e,0x7e, + 0xb7,0xce,0x56,0x06, 0x82,0x90,0x88,0x36, 0xde,0xc3,0xa0,0x0f, 0x0e,0xb1,0x23,0xbd, + 0xa9,0xb0,0x4c,0x84, 0xda,0xe8,0xf1,0x70, 0x1b,0x35,0x93,0x16, 0x02,0x02,0x83,0xdb, + 0xc7,0x3e,0x36,0xd9, 0x76,0xcc,0xbd,0x4d, 0x1f,0x56,0x6a,0x4b, 0x8f,0x27,0x59,0x91, + 0x05,0xc9,0x5b,0xb7, 0x93,0x3c,0x2f,0x89, 0xfc,0x0b,0x8b,0x84, 0x32,0x93,0x72,0x43, + 0xf9,0xa3,0x58,0xb6, 0x4a,0xab,0xa7,0x36, 0x3b,0xc5,0x30,0xdf, 0x65,0x19,0xde,0x28, + 0xf5,0x8b,0xa4,0x88, 0x9f,0x77,0x25,0x86, 0xb5,0x34,0xb5,0x29, 0xbf,0x63,0xdb,0x18, + 0x2f,0x59,0x22,0xe9, 0xc6,0x94,0x97,0x06, 0x76,0xaf,0xc3,0xd5, 0xd7,0x28,0x28,0xd8, + 0xd7,0x70,0x50,0x3e, 0x2e,0xed,0xae,0x50, 0x72,0x65,0x3b,0xd3, 0x1a,0x92,0xbe,0xb8, + 0xcf,0xdf,0x2b,0x1c, 0xb2,0xb0,0xcd,0x4c, 0xb2,0x05,0xaa,0x1a, 0x43,0x6c,0xfe,0xf5, + 0x16,0xdf,0x13,0xc1, 0xc0,0xb5,0x2f,0x87, 0x83,0xa5,0xef,0x92, 0xe5,0x18,0xec,0xd6, + 0x80,0x24,0xaf,0x99, 0x8d,0xa2,0x31,0xfa, 0x04,0x92,0x12,0xda, 0x07,0x7c,0x4b,0xac, + 0x16,0xc7,0xae,0xb4, 0xa3,0x20,0x7e,0xc1, 0x73,0x1a,0x22,0xcf, 0xee,0xcb,0x49,0x74, + 0x94,0x01,0xa8,0x5e, 0x08,0x25,0xc8,0xa9, 0xdd,0xf7,0x05,0xa4, 0x98,0xa1,0xf1,0x65, + 0xbe,0x77,0xc6,0xc4, 0xd7,0xb6,0x1b,0xfd, 0x97,0xc7,0xd1,0x75, 0xd3,0x4a,0xc6,0x84, + 0xc7,0x07,0x6c,0x12, 0xd7,0x0b,0x3d,0x72, 0x29,0x55,0xa3,0x24, 0x60,0xae,0xae,0xe9, + 0x6b,0x00,0x5c,0xaf, 0x90,0xf4,0xd9,0x21, 0x54,0xda,0x5e,0x05, 0x0c,0x5d,0xe0,0x0a, + 0x80,0xcd,0xf7,0x61, 0xb3,0x97,0xb2,0xd7, 0xd8,0x0e,0x8c,0xa3, 0x29,0x06,0x65,0xbb, + 0x14,0x16,0x10,0x59, 0x38,0x55,0x9d,0xf3, 0xa9,0x5b,0xde,0x22, 0x6d,0x10,0xa6,0x96, + 0x4f,0x5e,0x63,0xa7, 0x88,0xda,0x7c,0xa9, 0x4a,0x7a,0xde,0x80, 0x1d,0x9f,0x7a,0xb7, + 0x70,0xad,0x13,0x45, 0xbf,0x93,0x55,0x33, 0x1c,0x12,0x35,0x67, 0x79,0xf7,0x41,0x25, + 0x6c,0x81,0x47,0x73, 0xaa,0xb2,0x24,0x55, 0x96,0x31,0xe0,0xf6, 0xb1,0x2b,0x0f,0x16, + 0x23,0x21,0x32,0x0d, 0x30,0x66,0xbc,0x69, 0x57,0x1c,0xd2,0x51, 0x01,0x06,0xd7,0xd4, + 0x03,0xeb,0x27,0x18, 0x45,0x85,0xe0,0x5a, 0x02,0xc6,0xd8,0x81, 0x3d,0x88,0x70,0x94, + 0x41,0x76,0x60,0xc7, 0xa6,0x59,0x7b,0xc2, 0xcd,0x81,0x2a,0x2a, 0xfb,0x0d,0x78,0x09, + 0x12,0x01,0x30,0x2c, 0xad,0xb4,0x52,0x21, 0x66,0x67,0xa3,0x25, 0x6f,0x52,0x8c,0x20, + 0xcd,0x2b,0x6f,0xc6, 0xd6,0xba,0xbe,0x97, 0xde,0xb2,0xee,0xca, 0xb6,0x27,0xf3,0x1b, + 0x77,0x5b,0x36,0x45, 0xf6,0x42,0x25,0x3a, 0xff,0x3c,0x1a,0x83, 0x6b,0xed,0x6c,0xfa, + 0x3e,0x9f,0x08,0x81, 0xed,0x27,0x92,0xd8, 0xc2,0xda,0x5c,0x78, 0xbf,0x32,0x27,0xc0, + 0x83,0x64,0x13,0xe9, 0x6e,0xa8,0x34,0x8d, 0x6d,0xc9,0xc0,0xb7, 0x9c,0xb9,0xd7,0x6d, + 0x31,0xb5,0x08,0xa7, 0xc4,0xe7,0xf9,0x05, 0x46,0x6d,0xef,0xe3, 0xbc,0xa5,0x59,0x0b, + 0xbd,0x44,0x9d,0x02, 0xa4,0x3c,0xe8,0x90, 0x69,0x79,0xf1,0x06, 0x14,0x8c,0xcf,0xa2, + 0x3c,0xbb,0xea,0x41, 0xb8,0x83,0xc2,0x36, 0x2c,0x79,0x78,0xd8, 0xda,0x0a,0x31,0xf0, + 0x83,0x4b,0xcb,0x01, 0x83,0x75,0xf8,0x65, 0xc0,0x4c,0xd4,0xb8, 0x70,0xb5,0xa3,0x0a, + 0x2f,0x9a,0xb6,0xc6, 0x1d,0xcf,0x0b,0xd0, 0xed,0x05,0x06,0xfd, 0x99,0xaa,0x57,0x8a, + 0xd0,0x24,0xa9,0xa2, 0xe8,0xca,0x7d,0xfd, 0xd9,0x78,0x46,0x08, 0xf1,0x89,0x30,0xd9, + 0x8f,0x21,0x74,0x96, 0xea,0x7f,0x5c,0x42, 0x23,0x52,0x0b,0x77, 0xb6,0xc9,0x85,0xe7, + 0x21,0x5a,0x63,0xd1, 0xfa,0xa5,0xcf,0x0f, 0x9a,0x08,0xe1,0xf1, 0x12,0x8f,0x89,0x84, + 0x73,0xe1,0x9c,0x4c, 0x9c,0xb5,0xea,0x73, 0x43,0xfe,0xab,0x0f, 0x9f,0x05,0xd1,0xe1, + 0x64,0x9d,0x6d,0x0f, 0xce,0x60,0x53,0x62, 0xb5,0xfc,0x09,0xd8, 0x0a,0x89,0x24,0x93, + 0xa1,0xb0,0x84,0xd3, 0x68,0xab,0x2f,0x3e, 0x35,0x67,0x6a,0x58, 0xcd,0x3c,0x2f,0xfa, + 0x4c,0x1f,0x72,0xa1, 0xc9,0x48,0x47,0x43, 0xb9,0x98,0x24,0xa9, 0x8d,0x30,0xf4,0x85, + 0x30,0x3d,0x1d,0x64, 0xbd,0x9f,0x02,0xd8, 0xc4,0xce,0x3f,0x20, 0x58,0x5a,0x17,0x8f, + 0x15,0x7b,0x6d,0x3f, 0xc1,0x0d,0x8f,0xd7, 0x20,0x73,0x85,0xe6, 0x87,0xbc,0x72,0x09, + 0xcd,0x10,0x93,0xf6, 0x43,0x4e,0x14,0xef, 0xe0,0xe6,0x26,0x74, 0x48,0x97,0x79,0xd6, + 0x05,0xf0,0xd0,0x32, 0x40,0x3a,0x19,0xd5, 0x3e,0x88,0x2a,0x21, 0xdc,0xb7,0x37,0xeb, + 0x17,0x03,0xa8,0x52, 0x82,0xac,0xb3,0xc5, 0x5d,0x6d,0x5e,0x29, 0x56,0xcb,0x7e,0xfc, + 0x8a,0x1a,0xb6,0x05, 0x45,0x58,0x8b,0x52, 0xfc,0xb7,0x43,0x5a, 0x7d,0x92,0x0b,0xa7, + 0x94,0x4c,0xc2,0xf2, 0x32,0xda,0x95,0xde, 0x7a,0xd8,0x40,0x99, 0xea,0x36,0xe2,0xe7, + 0x9f,0x78,0x4f,0x08, 0x25,0x8b,0x82,0x2b, 0xa8,0x57,0x48,0x6e, 0xef,0xb4,0xfc,0xc0, + 0x9f,0x6c,0x7f,0xc9, 0xe0,0x14,0xc2,0xb3, 0xc0,0x91,0x5c,0x9e, 0x51,0x83,0xd8,0x2f, + 0xe9,0x77,0xa6,0x3a, 0x17,0x68,0xd6,0x12, 0xfd,0xdf,0xca,0xb3, 0x0b,0xd3,0x0c,0x53, + 0xaf,0x69,0xe7,0x16, 0xb1,0x32,0x8f,0xb2, 0x0a,0xea,0x50,0xf2, 0x44,0x52,0x7b,0x26, + 0x8c,0xac,0x27,0xd7, 0x23,0x0c,0x71,0x83, 0xd8,0x82,0xc4,0x08, 0xfe,0x98,0x15,0x7c, + 0xf8,0x33,0x7b,0xdf, 0xda,0x72,0x17,0x6e, 0xd0,0x42,0xb0,0xfa, 0xfe,0x90,0x6e,0xc1, + 0xf7,0x2e,0xfb,0x90, 0x64,0x9c,0x06,0xf8, 0x1c,0x76,0x53,0xcf, 0xa6,0x73,0x94,0xd3, + 0x30,0x88,0xde,0xfe, 0x48,0x1c,0xc8,0x75, 0x27,0x46,0xa5,0xbc, 0xe0,0xb4,0x8f,0x65, + 0xa7,0xd6,0x65,0x35, 0xe1,0x08,0xb4,0x5e, 0xc7,0x7c,0x9a,0x9c, 0x4a,0x91,0xbb,0x54, + 0x5d,0x22,0x29,0xf6, 0x69,0x80,0x6f,0x32, 0xd2,0x86,0x15,0xa6, 0x17,0x93,0x10,0xd7, + 0xc0,0xe4,0x62,0x4b, 0xc4,0x09,0x70,0x67, 0xb0,0xac,0xa2,0xe6, 0xcf,0x2c,0x6b,0xa6, + 0xf5,0xc7,0x34,0x6a, 0x9c,0xdc,0x65,0x02, 0xb7,0xf3,0xa4,0xa0, 0xfb,0x43,0x66,0xe1, + 0x17,0x8c,0x8f,0x33, 0x8e,0xec,0x48,0xd2, 0x56,0xe2,0x0f,0xf0, 0xe0,0xc9,0x6f,0x31, + 0x96,0x31,0x8b,0x3b, 0x9c,0x16,0xbe,0x00, 0x0c,0x2d,0xb8,0xd7, 0x72,0x5d,0xdd,0xa6, + 0x15,0x5f,0xfb,0xb8, 0x8b,0x66,0x78,0x78, 0x40,0xc4,0x87,0xa7, 0xe6,0x63,0x60,0xa7, + 0x6d,0x50,0x64,0xff, 0x58,0x13,0xd0,0x43, 0x0c,0x74,0x82,0x86, 0x4a,0x04,0xd0,0xde, + 0xbd,0x86,0xde,0x62, 0xdf,0xcc,0x87,0xab, 0x3e,0xc9,0xe5,0x1c, 0xf5,0xdd,0x7e,0xec, + 0x4a,0x92,0x25,0x3d, 0x60,0x32,0xd4,0x4c, 0x56,0xa5,0x64,0xe9, 0x3d,0x2e,0x68,0x3a, + 0xdb,0x58,0x26,0xf0, 0x58,0x67,0xb5,0xca, 0x67,0xa3,0x61,0xd7, 0x6a,0xb0,0xfd,0xba, + 0x01,0x46,0x99,0x06, 0x15,0x4c,0x23,0x53, 0xf6,0x6f,0x33,0x55, 0xf5,0xf3,0x8a,0x6c, + 0x66,0xc5,0x09,0xa0, 0xd2,0x8c,0x71,0xce, 0x2d,0x91,0x6c,0xba, 0xa9,0x0b,0x27,0x1d, + 0xa3,0xdd,0x96,0x01, 0x6d,0x38,0x76,0x53, 0xb0,0xcb,0x51,0xfb, 0x99,0xb3,0x39,0x9a, + 0x3e,0x7c,0x36,0xb6, 0x91,0x0d,0xc0,0xb9, 0xc0,0xf3,0x35,0x3f, 0xf1,0xe9,0x61,0xa5, + 0xe6,0xf4,0xfc,0xcb, 0x72,0x8b,0x2c,0x66, 0xfb,0x16,0x4f,0x7c, 0x17,0x5a,0x8b,0x3b, + 0x19,0x86,0xaa,0x49, 0x38,0xa2,0x31,0xf2, 0x62,0x8d,0xc0,0x81, 0xb2,0x54,0xe8,0x44, + 0xaa,0x36,0x71,0x07, 0x3c,0x9d,0xae,0x3a, 0x42,0x27,0x91,0x5a, 0x94,0x91,0xfe,0xd9, + 0x2f,0xe7,0x37,0x45, 0xfa,0x03,0x6a,0x90, 0x0f,0xc5,0x4e,0x05, 0x03,0xda,0x3a,0x20, + 0x0d,0xa1,0xda,0x08, 0x45,0xac,0xf6,0xb7, 0x0b,0xcc,0x8e,0x3d, 0x71,0xf8,0x17,0x1a, + 0xe3,0xf4,0xe7,0x6a, 0x99,0xad,0x6a,0xdc, 0xec,0xce,0x0e,0xba, 0x6d,0xe1,0x83,0xf2, + 0x6d,0x98,0xba,0x3a, 0x18,0xc6,0xf8,0x64, 0xf6,0xf0,0x1d,0xc7, 0x22,0xd3,0x6d,0x4a, + 0xcd,0x6d,0x5c,0x91, 0x5b,0xbd,0xa6,0x9a, 0x57,0x2b,0x21,0x80, 0x40,0x45,0x75,0x6c, + 0xba,0xa2,0xad,0xce, 0xff,0x68,0xe4,0x44, 0x5d,0xab,0xa6,0x15, 0xad,0xec,0x0d,0x19, + 0x58,0x2c,0xe3,0x3c, 0xb4,0x7d,0xcc,0xdc, 0xd7,0xee,0x1d,0x96, 0x1e,0xb3,0x18,0x70, + 0x32,0x5e,0x77,0x77, 0xc0,0x8b,0x86,0xf3, 0x11,0xd2,0x25,0x1c, 0x97,0x00,0xd5,0xdf, + 0x23,0x4b,0xe4,0xcf, 0xf6,0x69,0x29,0xe4, 0x63,0x2a,0x46,0xa5, 0x16,0xb6,0x93,0xa3, + 0x0f,0x45,0xf7,0x2d, 0x97,0x2d,0xd2,0xa3, 0x6f,0x4a,0x95,0x78, 0x58,0x3f,0x5f,0x9e, + 0x9e,0x0c,0xb0,0xdc, 0xdf,0x24,0xc9,0x79, 0x90,0xcf,0xba,0xed, 0xdf,0xf0,0x5d,0xfa, + 0x3f,0xe7,0x46,0x58, 0x04,0x69,0x3c,0x4f, 0x46,0x94,0x53,0x0a, 0xee,0x9f,0x44,0x43, + 0x15,0xc1,0x06,0x10, 0x42,0x19,0x79,0xd9, 0x20,0x22,0xe8,0x57, 0x55,0x36,0xa9,0x87, + 0x2f,0xe9,0xa0,0xa5, 0x73,0x45,0xa8,0xef, 0xbd,0xc1,0x86,0x26, 0x22,0x68,0x57,0xf6, + 0xa3,0xde,0x64,0x9d, 0x71,0x5f,0x5d,0x7f, 0xfb,0xdf,0x54,0x4e, 0x86,0x2b,0x01,0xef, + 0x67,0xef,0x0e,0xe9, 0x00,0x20,0x64,0x51, 0xc9,0xe5,0x77,0x3a, 0xca,0xc4,0xb9,0x8f, + 0xdc,0x97,0xe4,0xf3, 0x1c,0x9a,0x37,0x31, 0x81,0x7b,0x40,0x2b, 0xd6,0x17,0x8d,0x0c, + 0x34,0x8d,0x44,0xbd, 0x44,0xe5,0x7f,0xf3, 0x8a,0x3c,0x6d,0x47, 0x34,0xf1,0xe1,0x84, + 0xdf,0xa1,0x36,0x01, 0xfc,0x52,0x9f,0x89, 0x43,0xad,0x7f,0x25, 0x24,0x71,0x36,0x03, + 0x03,0xcf,0x37,0xf6, 0x6b,0xe2,0x01,0xac, 0xa8,0xb8,0x1c,0x92, 0xae,0x10,0x3e,0xad, + 0x75,0xcf,0x4f,0x84, 0x09,0x65,0xed,0xfb, 0xd1,0xa5,0x82,0xdd, 0xdf,0x74,0x0f,0x00, + 0x25,0x44,0x70,0xd7, 0x94,0x81,0x31,0x55, 0x21,0x7a,0xc2,0xeb, 0x1a,0xce,0x75,0x03, + 0x1a,0x26,0x97,0x02, 0x9c,0x31,0x5a,0x5f, 0xbb,0x8b,0x61,0x92, 0xc4,0xb8,0xf7,0x1e, + 0x31,0x0d,0x70,0xdc, 0xc5,0xdd,0x24,0x87, 0xbc,0x5d,0x3a,0x57, 0x31,0xa0,0x33,0x43, + 0x59,0x0e,0x60,0xcd, 0x88,0x72,0x90,0x0a, 0x9d,0x26,0xe6,0xba, 0x02,0xb9,0x10,0x5c, + 0x5b,0x0d,0x49,0x00, 0xb4,0x1e,0x00,0x61, 0x1b,0x70,0xec,0xf2, 0x65,0xb9,0x47,0x67, + 0x16,0xf1,0x48,0x44, 0xdc,0xb4,0x07,0xf9, 0x03,0x68,0x02,0x13, 0xbf,0x24,0xb0,0x76, + 0xb0,0xe4,0x84,0xe8, 0xee,0xbd,0xef,0x62, 0x0b,0x12,0xfe,0xf4, 0x3e,0x65,0x03,0x75, + 0xc1,0x51,0x2b,0x5e, 0x84,0x8d,0x0d,0x14, 0xb0,0xb9,0x88,0xa2, 0x9a,0x0d,0x43,0x15, + 0xfa,0x49,0x72,0x18, 0xa9,0x1f,0x5a,0x8b, 0x7a,0x42,0x4d,0x36, 0xab,0x84,0x3d,0x23, + 0x37,0xaa,0x8a,0xec, 0xc9,0xdf,0xaf,0x08, 0x82,0x87,0x65,0x26, 0x67,0x46,0x25,0xd0, + 0xcb,0x90,0x7c,0x6e, 0x36,0x03,0x83,0x0e, 0xc5,0xbb,0x7d,0xbc, 0x45,0xb4,0x91,0x98, + 0x58,0x0b,0x84,0x18, 0x1f,0xca,0xea,0x5e, 0x85,0xa0,0xac,0xf1, 0x35,0x81,0x71,0xa5, + 0xad,0x4b,0x57,0x3c, 0xc7,0xd3,0x9b,0xf1, 0x47,0x1c,0xe4,0x74, 0x61,0x4c,0x39,0xca, + 0x04,0x81,0x31,0x3b, 0xc5,0x39,0x7a,0x9f, 0x9f,0xe3,0x89,0x00, 0xe5,0x15,0x9a,0x12, + 0xd6,0x25,0x33,0x9f, 0xa0,0x6c,0x33,0x18, 0xc8,0xb2,0x0d,0x80, 0x60,0x99,0xeb,0xb0, + 0x01,0x52,0xcf,0x53, 0xe0,0x8b,0x34,0xf8, 0x01,0x91,0xcd,0x14, 0xa5,0x07,0x2d,0x2c, + 0x9d,0xf1,0x72,0xb9, 0xad,0x7d,0x68,0x69, 0x7e,0x4e,0x15,0x73, 0xc1,0x68,0x63,0xbf, + 0x1c,0xdf,0xc5,0xe3, 0x10,0xee,0xb8,0xf5, 0x0a,0x60,0x07,0x5d, 0x9e,0x1d,0x11,0xb4, + 0xaf,0x64,0x29,0x0f, 0xdd,0xfb,0xaf,0x21, 0x77,0xdf,0x51,0x5f, 0xfa,0xa4,0xbf,0x4f, + 0x43,0x1a,0x2a,0x90, 0x81,0x46,0x45,0xdb, 0xbf,0x31,0x9a,0x7d, 0xd3,0x6b,0x15,0x87, + 0xc7,0x4a,0xff,0x25, 0xc8,0xc8,0xac,0x37, 0xe3,0x75,0x9e,0xb4, 0xc2,0x30,0x9f,0x08, + 0xf8,0x2b,0xa1,0x7f, 0x23,0x01,0x61,0x90, 0x9d,0x1d,0x74,0x8c, 0xfe,0x13,0x28,0xe4, + 0x37,0xa4,0xdf,0x79, 0xbb,0x59,0x9f,0x1a, 0x14,0x94,0x06,0x5f, 0xd7,0x49,0xde,0x12, + 0x88,0x06,0x7c,0x10, 0x59,0x67,0xf3,0x55, 0x47,0x16,0x68,0x14, 0xc2,0xb4,0x41,0x13, + 0x71,0xe3,0x02,0x0b, 0x27,0xdc,0xa4,0x35, 0x36,0xae,0x01,0x75, 0x39,0x22,0x90,0xad, + 0xe4,0xc6,0x57,0x61, 0x37,0x5e,0x34,0xdd, 0x29,0x7a,0x94,0xb2, 0xb8,0x72,0x24,0x2c, + 0x42,0xb5,0xe9,0x3d, 0xc2,0xb1,0x39,0x36, 0xe3,0x34,0x39,0x31, 0x6b,0x09,0x91,0xa8, + 0xdb,0xaf,0x50,0x6a, 0x6a,0x53,0x65,0x24, 0xe8,0x16,0x23,0xd8, 0x2d,0x00,0x9b,0xca, + 0x31,0x21,0xd8,0xd0, 0xd0,0xa2,0x6d,0x0b, 0x35,0xb0,0xb8,0x2d, 0x38,0xc1,0xe3,0xef, + 0x6b,0x72,0x96,0xc3, 0xd9,0x32,0x12,0xe6, 0x68,0xec,0x9f,0x75, 0xc2,0x29,0xce,0x2e, + 0xd9,0x03,0x62,0xca, 0x3b,0xe8,0xa4,0x3f, 0x9c,0xb5,0x6e,0xb6, 0x69,0xba,0x0a,0xb6, + 0x6f,0xaa,0x5a,0xe0, 0x85,0xdc,0x85,0x2a, 0x49,0x09,0x9e,0x8b, 0x3e,0x5b,0x52,0xf4, + 0xc7,0xc3,0xef,0x9a, 0x5c,0x9c,0x8f,0x01, 0xa0,0x69,0x87,0xd5, 0x90,0x58,0xac,0xba, + 0x0c,0x5a,0xd6,0x7e, 0x4d,0x06,0x76,0xa1, 0x97,0xc0,0x56,0xe5, 0x39,0xa8,0x9e,0x3b, + 0xb9,0xd4,0xc4,0x51, 0x69,0x41,0x38,0x7c, 0x43,0x3e,0x94,0x93, 0x00,0xf4,0x17,0x81, + 0x4e,0x91,0x2d,0x4e, 0x4a,0x9d,0xcd,0x33, 0xed,0xdd,0xa8,0xb3, 0xdd,0xe4,0x3c,0x0c, + 0xf9,0x8f,0x7c,0x9f, 0xcc,0x4f,0x0a,0x92, 0x81,0x62,0x6c,0x52, 0xbd,0x9d,0x3b,0x5f, + 0xb7,0xbd,0x0b,0x7c, 0x26,0xca,0x3e,0xea, 0xcf,0xb4,0xd4,0x96, 0x59,0x7b,0xee,0xec, + 0xb1,0x71,0xd0,0xaa, 0x48,0x94,0x9f,0xc3, 0xb6,0x49,0x67,0x2b, 0x55,0x0a,0x3a,0x68, + 0x6a,0xa9,0xec,0xe7, 0xd6,0x4b,0xe4,0xad, 0x32,0xf5,0xe1,0x59, 0x92,0xda,0xf9,0x5e, + 0x0d,0x9d,0x17,0x3b, 0xce,0x3f,0x60,0x2f, 0xa1,0x8c,0x5e,0x04, 0x47,0xc1,0xe3,0x93, + 0x55,0x63,0x3b,0x9f, 0xd7,0x01,0x94,0x2e, 0x72,0xcd,0xdf,0x4e, 0x88,0x73,0x0b,0x3d, + 0xc4,0xc6,0x99,0x0e, 0x84,0x81,0x0b,0xbf, 0x27,0x78,0x58,0xdc, 0x38,0xc4,0x28,0x56, + 0x10,0x17,0xb0,0xa6, 0x88,0x9d,0x43,0xff, 0x90,0x5f,0xe0,0x08, 0xd4,0x40,0xf1,0x34, + 0xdf,0x78,0xd0,0xcb, 0x50,0x90,0x74,0xdd, 0x48,0x74,0xa1,0x38, 0xeb,0x71,0x86,0xb6, + 0x5e,0x30,0xa4,0xf2, 0xac,0xd5,0x65,0x7c, 0xdd,0x76,0x46,0x69, 0x9d,0x7a,0x1e,0x5d, + 0xb1,0x5e,0x29,0xf2, 0x9b,0x25,0x6d,0x30, 0xdc,0x9d,0x0a,0x6e, 0x6a,0xe4,0x81,0xd4, + 0xc6,0x3e,0x0e,0x06, 0x34,0xa6,0x82,0x2e, 0x5e,0x5f,0x5b,0x88, 0x71,0x87,0x07,0x22, + 0x98,0xa2,0x81,0x02, 0x2a,0x85,0xa5,0x1e, 0xd9,0x89,0x96,0x8c, 0xe6,0x00,0x2c,0xce, + 0xed,0x06,0xbc,0x08, 0x5c,0x7b,0x93,0xf3, 0x42,0x83,0xb5,0x2a, 0xc3,0xf5,0x56,0xbd, + 0x18,0x5f,0x2c,0x0c, 0x1a,0x1d,0x6a,0xa7, 0xbc,0x4d,0xba,0x17, 0xab,0x8f,0x3f,0xc0, + 0x79,0x11,0x90,0x3c, 0x8e,0x92,0xbc,0x6c, 0xb3,0xae,0x0c,0x26, 0xa6,0x42,0xaf,0xbb, + 0xc5,0xa0,0x55,0x05, 0x80,0xfb,0x18,0x2f, 0x81,0xfd,0x81,0x20, 0x19,0x05,0x67,0x68, + 0x8c,0x8f,0xdd,0x93, 0x40,0x66,0x2b,0x54, 0x7a,0x7d,0xc5,0xf1, 0xe6,0xae,0xaa,0xf5, + 0x16,0x68,0xed,0x5f, 0x3c,0xf4,0xfd,0x2a, 0xb7,0x2a,0x4d,0xce, 0x69,0xac,0x63,0xa1, + 0xcf,0x76,0x3d,0x4f, 0x45,0x62,0x5c,0xd8, 0x6c,0x13,0x10,0x2c, 0xb7,0xc0,0x2e,0x68, + 0x75,0x21,0x53,0x45, 0x38,0x6c,0x44,0x21, 0x4c,0x89,0x7f,0xdf, 0x13,0x87,0xa0,0xac, + 0x68,0xb6,0xc9,0xf3, 0xf9,0x00,0xd2,0x11, 0x9a,0x22,0xef,0x0e, 0x5d,0xfb,0x4e,0xf0, + 0x70,0x3d,0xba,0x9e, 0x20,0x5a,0xd1,0x03, 0x6a,0x90,0x0d,0x64, 0x59,0x35,0x51,0xc5, + 0x7f,0x99,0x7f,0x26, 0x5a,0x70,0x7d,0x36, 0x87,0x95,0xc1,0xfd, 0x63,0x62,0x5a,0x70, + 0xed,0x38,0xbc,0x56, 0x50,0x30,0xbb,0xe9, 0x1c,0x16,0x51,0x1c, 0x6e,0xe5,0xb8,0x70, + 0x9f,0x83,0x0b,0xe9, 0xbf,0x50,0xf8,0x48, 0xd6,0x49,0xba,0x37, 0x36,0x59,0xe9,0xea, + 0x42,0x8d,0x18,0x92, 0xab,0x95,0xe3,0x61, 0xa7,0xc0,0x94,0x3d, 0xd8,0x99,0x77,0x7b, + 0x54,0xd2,0x4f,0x5f, 0x08,0x9e,0xd7,0x70, 0xb0,0xb8,0xff,0x15, 0xd8,0xd2,0x06,0x1d, + 0x07,0xa5,0x18,0x97, 0x37,0xf3,0x61,0xd0, 0x80,0x68,0x53,0x57, 0x0a,0x74,0xe2,0xce, + 0xd3,0x00,0x49,0x20, 0x12,0xe1,0x55,0x83, 0x4b,0x3c,0xc5,0xe1, 0xbc,0xb0,0x06,0x32, + 0xfc,0xc3,0xa0,0x18, 0x5f,0x5d,0xe9,0x2a, 0x6c,0x84,0x52,0x07, 0x92,0x4f,0x17,0x4c, + 0xd9,0xd7,0x09,0x35, 0x7c,0xe2,0xed,0x5d, 0x78,0x75,0x70,0xa3, 0x8d,0xde,0x15,0x7e, + 0x74,0x66,0x52,0x80, 0x19,0xb8,0x90,0x93, 0xee,0x43,0xd1,0x2f, 0x51,0x41,0xad,0x53, + 0x1a,0x50,0xf4,0xcd, 0x98,0xf8,0x6f,0x6e, 0xe7,0x23,0x03,0xa5, 0x45,0x52,0xe2,0xf6, + 0x65,0x71,0x0e,0x84, 0x5b,0x51,0x00,0xec, 0xd0,0xdc,0x88,0x0a, 0x22,0x9c,0xba,0x68, + 0x11,0x8a,0x42,0xcf, 0x74,0xa1,0x97,0x09, 0xef,0xfa,0xfd,0x42, 0x80,0xa7,0xcf,0xb8, + 0x4c,0x3a,0x84,0x8e, 0xb3,0x9e,0xd5,0x69, 0x8f,0x60,0x99,0xc2, 0xb5,0xbd,0x61,0x79, + 0xb5,0x1a,0x82,0xa8, 0xb6,0xe8,0xea,0x0c, 0xdb,0x5d,0x05,0x44, 0xb5,0x4b,0x32,0xe2, + 0x45,0x22,0xad,0x3e, 0x02,0xcf,0x58,0x59, 0xe4,0x77,0x83,0x9b, 0xe1,0xb1,0xb2,0x07, + 0x87,0x32,0x4f,0xc0, 0xc4,0x8f,0xb1,0x2d, 0x7a,0xe2,0xb1,0x7b, 0x1d,0xcd,0xa7,0xe2, + 0x4c,0x4f,0x51,0x43, 0x47,0x8a,0x79,0x6c, 0xef,0xcd,0xfd,0xe9, 0x87,0x45,0x67,0xe2, + 0xa8,0x67,0xec,0xe5, 0x20,0xb6,0xcd,0x93, 0xd1,0x6f,0xc4,0xff, 0xc6,0xc9,0x2d,0x53, + 0x6f,0xe5,0xd7,0x14, 0xd0,0xc5,0x90,0x93, 0xc9,0x21,0x9f,0x33, 0x62,0x81,0xe0,0xd4, + 0x92,0xc4,0x67,0xd1, 0xfc,0x2a,0x45,0xc7, 0xc6,0xbe,0x52,0xa4, 0x99,0xd5,0xcd,0xa6, + 0x54,0x35,0x87,0x85, 0x8d,0xa5,0x5b,0x5f, 0x7b,0x5c,0xed,0x23, 0xcb,0xec,0xef,0x0b, + 0x89,0xba,0xf9,0x15, 0xbb,0x68,0xe6,0x46, 0x93,0xe6,0x8a,0x70, 0xde,0xbd,0x97,0x63, + 0xcc,0x02,0x53,0xdd, 0xae,0xc3,0x48,0xee, 0x69,0x96,0x50,0xd8, 0x3c,0x08,0x9d,0xd6, + 0xfd,0xff,0x2b,0xae, 0x12,0x73,0xdc,0x2c, 0x0e,0x80,0x0a,0xec, 0x38,0x64,0x2a,0xdf, + 0xf9,0xc1,0x22,0xbe, 0xec,0x4b,0x98,0x09, 0xa5,0xd2,0xbe,0x88, 0xc4,0xfc,0x7b,0x1c, + 0xa1,0xfa,0xba,0xac, 0x54,0x0c,0x8d,0x6b, 0xec,0xef,0x5e,0x42, 0x01,0x93,0x82,0x0f, + 0xc5,0xd5,0x92,0x72, 0xd0,0xd3,0x05,0xe4, 0x40,0xbf,0x30,0xe9, 0x7e,0x89,0xd6,0x63, + 0x16,0x2a,0x1f,0xdb, 0xdc,0x0e,0x9f,0x3c, 0x18,0x4c,0x28,0xc8, 0xa7,0x55,0xd5,0xe0, + 0xf9,0x8c,0xc0,0x24, 0xe5,0x65,0x94,0x9b, 0x68,0xdb,0x51,0xca, 0xf0,0x3f,0x5c,0x95, + 0x28,0x5a,0xdc,0xef, 0xcc,0x74,0xbf,0x55, 0xae,0x53,0xeb,0x65, 0x12,0x31,0xb4,0x14, + 0x57,0x64,0xa6,0x8e, 0xd1,0xf1,0xa2,0x52, 0x28,0x72,0xd6,0xb9, 0x6a,0x09,0xcb,0xdf, + 0xa1,0xab,0x76,0xf1, 0xd0,0x80,0x9d,0x18, 0x9e,0x2e,0x55,0x5d, 0x92,0x32,0x46,0x23, + 0x30,0xb7,0xe9,0x19, 0x1b,0x3a,0x5c,0x3e, 0x96,0x6c,0x15,0xcf, 0x42,0x9d,0xb0,0x5e, + 0x35,0x05,0x93,0xea, 0x48,0x4b,0xe5,0x69, 0x46,0xdd,0x7d,0x9b, 0x5c,0x36,0x88,0xd0, + 0x0f,0xa1,0x3f,0xdd, 0xb2,0x57,0x03,0x1c, 0x11,0x64,0x95,0xb6, 0x5b,0xa7,0x51,0x97, + 0x52,0x4f,0xc7,0x03, 0xb9,0x1b,0x2d,0x14, 0xf7,0x5f,0x1b,0x36, 0x13,0x1d,0xc5,0xf8, + 0x1c,0x78,0x1c,0x71, 0x11,0x82,0x93,0x5a, 0xa7,0xea,0xff,0x3f, 0x2b,0xfe,0x17,0xe9, + 0xa8,0xcf,0x92,0x74, 0x35,0xd5,0x30,0x9f, 0x24,0xc7,0x7c,0x6a, 0x24,0xb1,0x7d,0x64, + 0x22,0xe9,0x26,0xbb, 0xe8,0x98,0x55,0x08, 0xb8,0x82,0x68,0xce, 0xea,0x68,0xc7,0xd4, + 0x72,0x3d,0xb2,0x79, 0xe9,0xb6,0xda,0x94, 0x05,0xc9,0xee,0x61, 0x15,0x25,0xea,0xc6, + 0xd1,0x27,0xa3,0x99, 0xbd,0x36,0x37,0x76, 0x6b,0x95,0x1f,0xa1, 0x45,0x63,0x08,0xc4, + 0x72,0xee,0xd6,0xf2, 0xe7,0xd7,0xbc,0x02, 0x32,0x2c,0x97,0x26, 0x06,0x18,0x1b,0xf3, + 0xb2,0x12,0x5a,0x79, 0x01,0x15,0xad,0xc7, 0x66,0xd8,0xc8,0xd5, 0x41,0x86,0x0f,0x91, + 0x68,0xfb,0xca,0x3a, 0x10,0x13,0xdf,0xfd, 0x1a,0xc9,0xfa,0x1b, 0x0a,0xbb,0x01,0x26, + 0x8e,0x38,0x8c,0x4b, 0x8d,0xe7,0xc3,0xad, 0x7d,0x5a,0xb6,0xf4, 0x0d,0x5d,0xa5,0xac, + 0xa7,0xb3,0x3f,0xed, 0x55,0xf1,0x0e,0x0b, 0x6d,0x79,0x32,0x73, 0x84,0x12,0x34,0x6b, + 0xcf,0xe6,0x35,0xf6, 0x00,0x62,0x1a,0xf7, 0x20,0xcd,0x44,0xa8, 0x2b,0x63,0x26,0xa2, + 0x79,0xe2,0x7c,0xeb, 0x4a,0x61,0xd6,0x5d, 0x69,0x56,0x7f,0xae, 0xfd,0x9c,0xf3,0x45, + 0x22,0x07,0x06,0xa7, 0xc5,0x6f,0x05,0xb1, 0xfd,0x1f,0xa8,0xd8, 0x29,0x87,0xc1,0x2e, + 0xa8,0xe9,0x1a,0xe2, 0x7a,0x20,0x93,0x79, 0xc2,0x33,0x3c,0xfd, 0x8d,0xcf,0x00,0xd7, + 0xf4,0xf2,0x4c,0x27, 0x3f,0x4b,0xaa,0x5d, 0x12,0xdb,0x80,0x52, 0xdd,0x4a,0x7d,0x54, + 0x1e,0xaa,0x2c,0xc0, 0x0a,0x37,0x54,0xde, 0xf7,0x80,0x63,0x92, 0x01,0x65,0x2b,0xa3, + 0xb7,0xb4,0xf6,0x44, 0x24,0x7f,0x3e,0x8e, 0xc2,0x16,0x8e,0xd6, 0x1b,0x0f,0x87,0x90, + 0xb1,0xe1,0x32,0x68, 0xea,0xff,0x57,0x5b, 0x19,0xd9,0x53,0x66, 0x64,0x10,0xd2,0x74, + 0xc1,0x9c,0x8b,0x54, 0xc9,0x7b,0x25,0xdc, 0x1d,0x6b,0x22,0xc8, 0x72,0xf6,0xf3,0xe9, + 0xf3,0x84,0xd5,0x57, 0x34,0x3f,0xbf,0xad, 0xd4,0x0e,0xe8,0xaa, 0x92,0xa4,0x08,0xe4, + 0xea,0x77,0x7f,0x30, 0x8d,0xa8,0x04,0x4d, 0xaf,0xec,0x37,0xce, 0x89,0x63,0xcc,0xb1, + 0x96,0x2f,0xb9,0x37, 0xa0,0x1a,0x33,0x4d, 0x79,0xc9,0x7d,0x7a, 0xf2,0x5a,0xd6,0xaf, + 0x33,0x30,0xa3,0x3f, 0x45,0xac,0x6c,0x1c, 0xea,0x67,0xbe,0x3f, 0x6d,0xcf,0x0b,0x72, + 0x85,0xda,0x04,0x47, 0x74,0xaf,0x57,0xd4, 0x94,0xde,0x00,0x6e, 0xd5,0x3b,0xaa,0x8c, + 0x18,0x71,0x2b,0xb9, 0x72,0xbb,0xa3,0xda, 0xc0,0xb1,0x0b,0x5e, 0x18,0x74,0x0e,0x77, + 0x07,0x5b,0x88,0x07, 0x13,0xe8,0xc3,0xf9, 0x41,0x45,0x0e,0xa6, 0x40,0x26,0xec,0x5b, + 0x88,0xfa,0x6b,0x05, 0x20,0x07,0xaf,0x54, 0xc5,0xca,0x47,0x41, 0x06,0xf9,0xf7,0x35, + 0x7d,0xa1,0x16,0x6e, 0x23,0x2e,0x27,0xb4, 0x29,0x5c,0x85,0x20, 0x64,0xab,0x9b,0x89, + 0x67,0x4a,0xbf,0x1c, 0xed,0x17,0x61,0xf8, 0xfb,0x7b,0xfa,0xa3, 0x7b,0x9a,0xee,0x0f, + 0xdb,0x10,0xf0,0x83, 0xdd,0x0a,0x1d,0x92, 0x76,0x51,0xc8,0xbc, 0x78,0x57,0x8e,0x53, + 0xe0,0xc2,0xbd,0xdf, 0xe8,0x76,0x11,0x05, 0xfc,0x27,0x6b,0x12, 0xa4,0x68,0x17,0x7a, + 0x29,0x55,0xe7,0xda, 0xb9,0x1f,0xb9,0xd2, 0x62,0xcb,0x65,0xe0, 0x4e,0xda,0xc4,0xff, + 0x00,0xd2,0xdf,0xd2, 0xd0,0xed,0x20,0xaf, 0x93,0x61,0xc3,0xd2, 0xcf,0xd8,0x8a,0xe2, + 0x02,0xe3,0xd2,0xc8, 0xea,0x38,0x5b,0x7c, 0x55,0x37,0x99,0xa7, 0x90,0xad,0xfb,0x58, + 0xaa,0xdf,0x4f,0xa9, 0x81,0xc9,0x26,0xfb, 0xee,0xd0,0x1f,0x83, 0x63,0x3b,0xf5,0xda, + 0x83,0x79,0xe1,0x0f, 0xc3,0x8d,0x35,0xb9, 0x37,0xbb,0xf6,0xd6, 0x5c,0x6e,0xe6,0x27, + 0xcf,0xf1,0xf4,0x12, 0x51,0x0d,0x38,0xdd, 0xe8,0x63,0x8e,0xd6, 0x0c,0x26,0x2f,0x40, + 0x69,0xa1,0x43,0xb6, 0x2c,0x5b,0x3c,0xf9, 0xb3,0x8a,0x0b,0x4a, 0x49,0xd6,0x45,0x75, + 0x86,0x84,0x5e,0x60, 0xe6,0x8a,0x65,0xc3, 0xe0,0x5e,0xc1,0xed, 0xc4,0x32,0x30,0xd4, + 0x74,0x31,0x26,0x08, 0x2d,0x53,0x08,0x24, 0x93,0xab,0xec,0x55, 0x89,0x89,0xb7,0x5d, + 0xf4,0x45,0x65,0x62, 0x17,0x47,0xd1,0x4c, 0x4e,0xc0,0xe6,0x38, 0x11,0x05,0x1f,0x66, + 0xd7,0xcd,0xfa,0xa6, 0x52,0x00,0xd8,0xc8, 0x33,0x2d,0x84,0x77, 0x27,0x53,0xe5,0xc1, + 0x56,0x66,0x6a,0x3e, 0xc5,0x2d,0x10,0xce, 0x54,0x99,0x0d,0x05, 0xcc,0xe4,0xb3,0x97, + 0xf9,0x0f,0x20,0x00, 0x2f,0x45,0x1a,0xec, 0xa6,0x65,0x49,0xa0, 0x70,0xc7,0x5d,0xab, + 0x91,0xc0,0x36,0x23, 0x32,0x20,0xcb,0xd2, 0x37,0xe6,0x4d,0xae, 0x48,0xa7,0xf1,0x06, + 0x1e,0x6f,0x75,0x3b, 0xba,0x69,0x66,0x38, 0x31,0x24,0xac,0x50, 0x9f,0x77,0x5c,0x0d, + 0xf9,0x53,0xd8,0x56, 0xcb,0x8d,0x11,0xfb, 0x41,0x0c,0xd0,0x60, 0xa8,0xbf,0xaf,0x5a, + 0xd4,0xe1,0x4e,0xba, 0x7c,0xac,0xe5,0x8f, 0x22,0x3c,0xe7,0x5a, 0x34,0x06,0x96,0x40, + 0xa6,0xe1,0xa6,0x81, 0x4b,0x64,0xcc,0xc8, 0x25,0x03,0x91,0x44, 0x80,0x46,0x9a,0x15, + 0x8f,0xb6,0x57,0x04, 0x8d,0x31,0x4f,0xa0, 0x4e,0x35,0x47,0xae, 0xde,0x0d,0x22,0xd7, + 0xa7,0x07,0xe4,0xef, 0x1b,0xcf,0x51,0x5f, 0xcf,0x78,0xe1,0x9c, 0xfe,0xc8,0x64,0xdd, + 0x5d,0x16,0x1b,0xac, 0x1a,0x8a,0x0d,0xb6, 0xae,0x42,0xdc,0x41, 0xaf,0x92,0xac,0x9a, + 0xbc,0x4c,0x8a,0xd3, 0x0e,0xca,0x89,0xe2, 0x9a,0xe8,0x67,0x36, 0x13,0xf5,0x34,0x5a, + 0x03,0x0b,0x6e,0x41, 0x2a,0xa0,0x2b,0xa9, 0x4e,0xf6,0x6e,0xa7, 0x1e,0xcc,0x88,0xd7, + 0xa3,0x7e,0xac,0x9d, 0x92,0x31,0x07,0xa4, 0xd1,0xc4,0xad,0x31, 0xad,0x05,0xa1,0x5e, + 0xf3,0x13,0x28,0x22, 0xdd,0x85,0x3f,0x3c, 0x5d,0x06,0xdc,0x7f, 0x20,0xe7,0xa8,0xd5, + 0xd0,0x9b,0x92,0x21, 0xbf,0x66,0xa3,0x72, 0xa8,0xaa,0x9b,0xbd, 0xde,0x09,0x07,0x48, + 0xb3,0xbc,0x1b,0x42, 0x84,0x68,0xa3,0xb4, 0x14,0x6f,0xfd,0x50, 0x51,0x0d,0x1b,0x52, + 0x46,0xed,0x48,0xde, 0xa4,0x85,0x50,0x79, 0xc3,0xff,0x3e,0xef, 0x7f,0x1c,0x73,0x28, + 0x56,0x08,0x03,0x6d, 0x0a,0xcf,0x82,0xca, 0xda,0x44,0xc0,0xb0, 0xa0,0xb7,0x3b,0x8c, + 0xa9,0x93,0x81,0xb8, 0x0b,0x35,0x22,0xbe, 0x5d,0xcd,0xd6,0x4b, 0x22,0x2a,0x3a,0x7d, + 0xcc,0xc2,0x42,0x0f, 0x64,0x9e,0x8d,0x6f, 0x4b,0x18,0xd8,0xed, 0xcf,0x59,0x1e,0x75, + 0x79,0x2b,0xa9,0xf4, 0x16,0x52,0xe9,0x3f, 0xe2,0x01,0x3f,0x72, 0x6f,0xf2,0x2c,0x77, + 0x82,0xa7,0x54,0xb2, 0x59,0xdc,0xc0,0x51, 0x9c,0x3a,0x32,0x8b, 0xdf,0x9f,0xb8,0x99, + 0x09,0xb5,0x2f,0x48, 0x48,0xc4,0x39,0x01, 0x50,0x6f,0x18,0x82, 0x2c,0xae,0xac,0x57, + 0x16,0xaa,0x94,0xc4, 0x0f,0x1c,0xbd,0xc8, 0xd6,0x6d,0xcd,0xa1, 0x84,0x4c,0xc5,0x4a, + 0xf5,0x60,0xd6,0xd6, 0xc8,0xd4,0xed,0x33, 0x19,0xe4,0xcf,0x70, 0x57,0x94,0x32,0x58, + 0xb0,0x2c,0x4c,0xd0, 0xb7,0xcc,0x49,0x49, 0x7e,0xc5,0x43,0x2a, 0xdc,0x18,0xe4,0xed, + 0x84,0xe6,0xd9,0xe5, 0x4b,0x09,0x5d,0xe4, 0x1f,0x53,0xc3,0x7d, 0xb2,0x51,0xfe,0x32, + 0xf0,0x32,0xce,0x86, 0xc5,0x29,0x91,0xb2, 0x4b,0x08,0x5f,0x89, 0x8a,0x3f,0xf9,0xa6, + 0xcb,0xb3,0x07,0x42, 0xfd,0xb4,0x05,0x12, 0x73,0x83,0xe0,0x64, 0x35,0x27,0x6f,0x93, + 0xaf,0xad,0x86,0x22, 0xce,0x21,0x3e,0xda, 0x7c,0x29,0x66,0x29, 0x57,0x21,0x6c,0xde, + 0xe8,0xab,0x7d,0x27, 0x29,0xd2,0x69,0x26, 0x73,0x17,0x61,0x7d, 0x2e,0x8c,0x53,0x07, + 0x8a,0x4b,0x65,0x28, 0x85,0x63,0x9a,0x8c, 0x9c,0x27,0xa0,0x39, 0x08,0x8a,0x9e,0x44, + 0xd6,0xf0,0x0f,0xb7, 0x61,0x15,0x5e,0xd0, 0xcb,0xfe,0x03,0xef, 0x91,0x75,0x84,0x49, + 0xb9,0x5c,0x63,0x58, 0x59,0xb0,0xf9,0x40, 0xfe,0x6d,0x1d,0xcb, 0xfe,0xb0,0xb0,0x03, + 0xf1,0xaa,0xb9,0x50, 0x54,0x78,0x27,0xe9, 0x54,0x5d,0xfa,0x40, 0x73,0x67,0x6a,0x4f, + 0xf6,0x74,0xc2,0x81, 0x8c,0x8f,0x9d,0x5c, 0x2d,0x19,0xf4,0x93, 0xfc,0x5e,0x87,0x71, + 0xfd,0xb9,0x01,0x0b, 0xc2,0x8f,0x52,0x1a, 0xe1,0xcb,0x3c,0x91, 0x8b,0x42,0xed,0x9d, + 0x0f,0xd0,0x2a,0x61, 0xcd,0x23,0xdd,0x4f, 0xb2,0x6d,0x9b,0x10, 0x0d,0x5e,0xfc,0xc3, + 0xad,0xd8,0x09,0xaf, 0xd1,0xde,0xb5,0xdc, 0xbb,0xa8,0xd8,0x2f, 0xd8,0xac,0x4f,0x7e, + 0xef,0x52,0xa4,0x65, 0xcf,0xde,0xab,0xd5, 0xff,0x9d,0x9f,0x2d, 0xb4,0x6b,0x9a,0xcc, + 0xb9,0x83,0x06,0xcd, 0xbb,0xeb,0x14,0x43, 0x2b,0xe8,0x79,0xcd, 0xd5,0x5e,0x72,0x0a, + 0xda,0x2a,0x67,0x2d, 0x1b,0x94,0x29,0x56, 0x76,0xbf,0x0d,0xee, 0x5a,0x89,0xc0,0x30, + 0xfc,0x25,0x24,0xe9, 0x19,0x8f,0xbc,0xb5, 0x58,0xb7,0xa3,0xa7, 0x42,0xc8,0xa6,0x7a, + 0x9f,0xa8,0x8b,0x6a, 0x0e,0xfa,0xc1,0x0d, 0x4b,0xd6,0x4f,0xb4, 0xae,0x2a,0xad,0x1e, + 0x66,0x19,0x8d,0x67, 0x92,0xf0,0x61,0x37, 0xe0,0x99,0x8b,0xd7, 0x6e,0x52,0xab,0xfc, + 0xdf,0xdf,0xe7,0x44, 0x8c,0x9c,0x78,0x7c, 0x1e,0xd1,0xcc,0xeb, 0x3f,0x1c,0xa4,0xcd, + 0x41,0x6b,0x6f,0xf8, 0x15,0x50,0x83,0x1e, 0x79,0x3d,0xfa,0x76, 0x4e,0xe3,0x81,0xd6, + 0x03,0x49,0x8d,0xd7, 0x7c,0xa8,0xb9,0xa9, 0x91,0x6d,0x1a,0x73, 0x71,0x21,0xad,0x7b, + 0x8f,0x89,0x62,0xa5, 0x77,0xf2,0xd5,0x17, 0xc0,0x31,0xdd,0x39, 0x02,0xad,0x1e,0xef, + 0x18,0x62,0xcc,0x95, 0xb4,0x01,0xee,0x07, 0xcd,0x37,0x5f,0xe6, 0x89,0x75,0x1d,0x0f, + 0x44,0x79,0xac,0xf1, 0x12,0x9b,0xbb,0xdc, 0x19,0x69,0x32,0x33, 0x67,0x57,0xbf,0x21, + 0xe2,0x63,0x3e,0xdd, 0x3a,0x5a,0x7b,0x66, 0x35,0xb7,0xc8,0x7a, 0x4b,0xb4,0xdc,0x88, + 0x35,0xc6,0xb6,0xca, 0x8f,0x95,0x1f,0x9f, 0x65,0xe5,0x15,0xd8, 0xa5,0xb0,0x71,0x0a, + 0xf8,0x06,0x15,0x3c, 0x51,0x87,0xd1,0x85, 0x8d,0xd4,0xb3,0x27, 0x29,0xff,0xbb,0x1a, + 0xb4,0x10,0x50,0x9b, 0x4b,0x28,0x4f,0x48, 0x12,0x3b,0x98,0x5d, 0xb2,0x88,0x45,0xe5, + 0xc5,0xf3,0xfe,0x5e, 0x0d,0xdd,0xfe,0x56, 0x09,0x1b,0x67,0xe2, 0xc5,0x41,0x0a,0x9d, + 0xc2,0xe0,0xd2,0xd6, 0xc1,0xaf,0x65,0x8e, 0xd1,0xf2,0x7f,0xf5, 0xb7,0xa0,0xe5,0xb6, + 0x7a,0x2a,0xe3,0x0d, 0x63,0xa1,0xf2,0xdd, 0xae,0x30,0xfa,0x0f, 0xf4,0xfc,0x5e,0xb4, + 0x3c,0x45,0x99,0xab, 0xa4,0x95,0xa6,0x53, 0x0e,0x79,0x46,0x3f, 0xcd,0x8d,0xe9,0x74, + 0x73,0x20,0xa0,0x13, 0x73,0x2f,0x09,0x01, 0x3b,0x57,0x5b,0xc7, 0x26,0xef,0x8f,0xc0, + 0x07,0xf9,0x64,0x3a, 0x60,0x33,0xae,0xc2, 0x77,0xe8,0x0f,0x4f, 0x87,0xf0,0x71,0xd6, + 0xad,0xdd,0xd5,0xcf, 0x5f,0x19,0x52,0xed, 0x5c,0xef,0xbb,0x85, 0x0d,0x6b,0xe0,0x7e, + 0x0f,0x1e,0xd9,0x0e, 0xff,0xc0,0x8c,0x2c, 0xe8,0x4b,0x77,0xe0, 0x58,0x51,0x98,0xe3, + 0xda,0xcb,0x4b,0x1f, 0xb8,0xd3,0xef,0xe2, 0x6a,0x95,0x81,0x91, 0x7b,0x07,0xa7,0x92, + 0x4d,0x9d,0xa8,0x6c, 0x64,0x4e,0xa4,0x9f, 0x80,0x80,0xff,0xd6, 0x96,0x71,0x4b,0xce, + 0x5c,0x7c,0xab,0xd0, 0x48,0x88,0x9d,0x21, 0xe6,0x42,0x1a,0x64, 0xbd,0x2f,0x03,0x6e, + 0xd0,0x8f,0xda,0xf0, 0xee,0x6f,0x7b,0x2e, 0xc8,0xd2,0xc8,0xbf, 0x3f,0x46,0xaa,0x31, + 0xcf,0xd3,0x31,0xf0, 0x42,0xce,0xe9,0xc8, 0x5f,0xbc,0x37,0x61, 0xd9,0x2b,0xdc,0x2d, + 0x94,0x01,0xba,0xe0, 0x5d,0x3a,0xdd,0x98, 0x29,0x4d,0x08,0x8b, 0x89,0x43,0x30,0x79, + 0xe1,0x80,0x6c,0x88, 0xd2,0x0a,0x09,0x6c, 0x26,0xb6,0x71,0x9e, 0x10,0xf5,0xe7,0x60, + 0xae,0x1a,0xfc,0x86, 0x32,0x75,0x7e,0x21, 0xd1,0x20,0x9a,0x54, 0xf2,0x90,0x6a,0xf4, + 0xc7,0xf1,0x97,0x77, 0xc2,0xdf,0xef,0x7d, 0x20,0xf4,0x70,0x40, 0x0b,0x7f,0x26,0xf4, + 0xe6,0x31,0xb3,0x3f, 0xe8,0x33,0xee,0x1f, 0x0e,0x20,0xfa,0x57, 0x83,0x0d,0xe0,0xc8, + 0x09,0x19,0x7a,0x7c, 0xe6,0x93,0xcc,0xda, 0x46,0x98,0xb5,0xb2, 0xd1,0xbb,0x68,0x33, + 0xae,0xde,0x56,0x0d, 0x24,0xbe,0xc6,0x58, 0x61,0xf8,0x7d,0x7e, 0xaa,0x31,0x68,0x77, + 0x5c,0xd2,0xde,0xc6, 0xe2,0xb7,0xa9,0x0e, 0xbf,0x87,0xaa,0x9c, 0x59,0xde,0xde,0x74, + 0x04,0xe8,0xcc,0x23, 0xa7,0xf2,0x12,0x6b, 0x00,0x89,0x37,0xaa, 0x66,0xef,0xf8,0x32, + 0x4f,0x4b,0x02,0x84, 0xb9,0x28,0x57,0x5b, 0x0e,0xc2,0x2d,0x8e, 0x68,0x19,0x86,0x14, + 0x8a,0xb8,0x45,0xf1, 0x29,0x7f,0x03,0x8c, 0xba,0x5e,0xdc,0x46, 0x20,0x7d,0x7c,0xca, + 0xf2,0xfd,0xa5,0xb4, 0x74,0x59,0xac,0x92, 0x7b,0xbf,0xf3,0x85, 0xc8,0xba,0x58,0x82, + 0x47,0xcd,0xec,0xef, 0xa7,0x51,0xc0,0x61, 0x16,0xaf,0x15,0xbf, 0x82,0x87,0xa8,0xc6, + 0xd7,0x36,0x5d,0xf3, 0x36,0x14,0x99,0x38, 0x9e,0xd3,0x01,0xb2, 0xa2,0xd7,0xf6,0x55, + 0x71,0xc7,0x62,0x47, 0x62,0xb3,0xbf,0x12, 0x09,0x3b,0x57,0x5c, 0x55,0x8d,0xb2,0x20, + 0xe5,0x95,0xe7,0x1e, 0xce,0xf1,0xb5,0x00, 0x62,0x6c,0x08,0xc9, 0x35,0x05,0x90,0x2f, + 0xf1,0x1b,0xe7,0x46, 0xdd,0xaa,0x7b,0xcc, 0x79,0x9d,0xe5,0xd1, 0x7f,0x0e,0x84,0x03, + 0x06,0x38,0x00,0x83, 0x63,0x1a,0xae,0x44, 0xda,0x74,0xac,0x50, 0x4e,0x3d,0x7a,0x65, + 0x79,0x9c,0x06,0x85, 0x72,0x58,0x75,0x84, 0x3a,0x5b,0x7f,0x74, 0xcb,0xa9,0x49,0x11, + 0x78,0x58,0x6f,0xbf, 0x49,0x12,0xcd,0x95, 0xae,0x89,0xe0,0xb6, 0xe3,0x4a,0x6f,0xb1, + 0x1e,0x7a,0x4d,0xb3, 0x39,0xf2,0xe9,0x26, 0xea,0xec,0xb8,0x84, 0xf8,0x0f,0x0d,0x4a, + 0x83,0x30,0x22,0xbe, 0xfc,0x9b,0xd2,0x6e, 0x4b,0xda,0xd5,0x36, 0x70,0xcc,0x6f,0x1e, + 0x6d,0x2f,0x41,0x6d, 0xa8,0x54,0x68,0x44, 0x12,0x5a,0x27,0xfe, 0x9c,0x07,0xa4,0xd5, + 0x5c,0x9c,0x2d,0x73, 0xcb,0x20,0x45,0x82, 0x81,0xe3,0x21,0xb3, 0xbe,0xdc,0x1b,0x91, + 0x08,0xca,0xc3,0xf8, 0xf1,0xe1,0x4c,0x83, 0x5d,0x62,0x65,0xb8, 0x4f,0x7a,0x4e,0x60, + 0x34,0x3b,0x0d,0x8d, 0xf0,0xb1,0x8a,0x95, 0x7c,0x73,0x00,0x35, 0xa4,0x7c,0x7d,0x60, + 0xb5,0x6e,0xec,0xcf, 0xd7,0x08,0x1a,0x8c, 0x8f,0x79,0xd4,0x09, 0x44,0x26,0x48,0xb4, + 0xd8,0x26,0xb1,0x01, 0xe4,0x5b,0x20,0xca, 0x93,0xd2,0x10,0x70, 0x88,0xdf,0x99,0xae, + 0x0d,0x3e,0x56,0x6e, 0x09,0xa6,0xc8,0xaa, 0xb5,0x62,0xc0,0x60, 0xfd,0x2e,0xcd,0x5b, + 0xe9,0x70,0x44,0xad, 0xbf,0x26,0x1f,0xb4, 0x54,0x13,0xbc,0x7d, 0x54,0x64,0xeb,0x75, + 0xf3,0xb5,0x9f,0x05, 0x66,0x3f,0x9b,0x47, 0x51,0x1d,0xe5,0x55, 0x02,0x77,0x37,0x44, + 0xf1,0x5f,0xbb,0x2f, 0xa2,0x5c,0xba,0xdb, 0x01,0x9d,0xb2,0xce, 0x9e,0x3e,0xec,0x20, + 0xaf,0xc7,0xac,0x51, 0xb2,0xe4,0xcc,0x4b, 0x0e,0xc8,0xd2,0xab, 0x43,0xb0,0x5b,0x7b, + 0xa0,0xce,0xc9,0x1c, 0x33,0xf6,0x44,0xc6, 0x65,0x6f,0xb5,0x53, 0xe3,0xc8,0x17,0x9e, + 0x1a,0x03,0x68,0xfa, 0xe3,0x4e,0x95,0xa3, 0xa6,0x02,0x33,0xfa, 0x32,0x57,0x81,0x2c, + 0x09,0x96,0xda,0x22, 0x6c,0xc9,0xc4,0x08, 0x56,0xc8,0x7a,0x3d, 0xeb,0xba,0x60,0xb4, + 0x81,0x10,0x22,0x58, 0xde,0xf1,0xa2,0xe4, 0xc0,0xaa,0x93,0x14, 0x47,0x20,0xc5,0x42, + 0x19,0x8e,0x45,0xea, 0x4c,0x5e,0x13,0x43, 0x51,0x80,0x8b,0x93, 0x8a,0x04,0x3b,0x0b, + 0x2c,0x0b,0xd1,0x2e, 0xa8,0x94,0xae,0x73, 0x22,0xd4,0x86,0x64, 0xd8,0x37,0x18,0x1d, + 0x05,0x43,0x3c,0x26, 0xbb,0x55,0xf4,0x86, 0x1c,0x24,0x25,0xfa, 0x84,0xd7,0x32,0x68, + 0x7f,0x64,0x14,0x2a, 0x1c,0x2f,0xc4,0xfa, 0x1f,0xf1,0x05,0x08, 0x05,0x4d,0x1b,0x19, + 0x89,0x87,0xfa,0x98, 0xb5,0x1f,0xf4,0x57, 0xfe,0xd9,0x3a,0xd0, 0x81,0xe1,0x2f,0xc2, + 0x62,0xc3,0xc1,0x3a, 0x59,0x95,0xcf,0xf0, 0xdc,0x62,0x5f,0xfb, 0xfb,0x05,0x5f,0xbc, + 0x0a,0xe5,0xd3,0xc1, 0x1c,0xf8,0x45,0x12, 0x8a,0x9c,0xca,0x5d, 0x41,0x02,0x23,0xad, + 0x0c,0xa9,0xb9,0xfc, 0x55,0x64,0x95,0x7c, 0xf2,0xcb,0xcc,0xf6, 0x4d,0xbe,0xfe,0x49, + 0x72,0x7e,0x35,0x1f, 0xba,0xe6,0xdc,0xa2, 0x1e,0xa1,0x27,0x41, 0x90,0x6e,0xb9,0x89, + 0xa9,0xde,0x34,0x64, 0xc8,0x34,0x52,0x1a, 0x1b,0x25,0x88,0x46, 0x1c,0x7e,0xf4,0x2d, + 0x06,0xbc,0x4f,0xda, 0x53,0x5d,0xed,0xa7, 0x5c,0xd5,0xa0,0xd1, 0xdf,0xe3,0xdf,0x8d, + 0x6c,0x54,0x36,0x09, 0xd7,0x40,0x92,0x25, 0xec,0xc0,0xc3,0xd2, 0xeb,0x89,0x73,0xcc, + 0x2e,0x2e,0x17,0xcd, 0x87,0x1f,0x2b,0x7d, 0x05,0x6c,0xe8,0xa0, 0x8b,0xa7,0xd7,0x0c, + 0xbf,0xb0,0x41,0x53, 0xd1,0x78,0xab,0xee, 0x58,0xfe,0x8a,0xcd, 0x8f,0x09,0x37,0xa6, + 0x4b,0x10,0x2e,0x80, 0x67,0x04,0x95,0xed, 0x4d,0x56,0x4d,0x76, 0x78,0x1b,0xfa,0x55, + 0x56,0xf5,0x1c,0x4c, 0x92,0x45,0xd2,0x67, 0x81,0x68,0xf1,0xbd, 0xb1,0xdb,0x47,0x00, + 0x52,0x77,0x38,0x48, 0xe4,0x3e,0xf6,0xb5, 0x13,0x4b,0xa9,0x0d, 0xc6,0x8b,0x91,0x7f, + 0xbc,0xd7,0x7a,0x73, 0x54,0x9f,0xbe,0xc2, 0x46,0xc5,0xe9,0x3f, 0x1e,0x48,0xfa,0x79, + 0xaa,0x6e,0x2f,0xae, 0xa4,0xca,0xe5,0x3b, 0x30,0x2a,0x12,0xa5, 0x0c,0x48,0xd6,0x97, + 0xd4,0x1a,0xc7,0x0e, 0x01,0x76,0x7c,0x8d, 0x92,0x4e,0xb9,0x4c, 0x38,0xd1,0xc5,0x7c, + 0x11,0xf1,0x53,0x66, 0xa9,0x4b,0xb8,0x7f, 0x8e,0x54,0xc1,0x40, 0x40,0x57,0xaa,0x6a, + 0xa6,0x25,0xf0,0xaa, 0xff,0xc9,0xef,0x19, 0xc2,0xc9,0x90,0xe7, 0xe6,0xa6,0x54,0x6c, + 0xfc,0x32,0x80,0xab, 0xce,0x0a,0x8f,0xd4, 0x3f,0x1b,0x97,0x60, 0x01,0xf7,0x35,0xdf, + 0xee,0xc5,0x5d,0x52, 0xa8,0xb8,0xcb,0x45, 0xe2,0x98,0x01,0xa9, 0xcc,0x99,0xaa,0xc6, + 0x6b,0xd6,0xd2,0x58, 0x83,0x32,0xc6,0x3d, 0xd0,0x32,0xea,0xdf, 0x60,0xe5,0x10,0xcc, + 0x94,0x79,0x76,0x63, 0x26,0x5d,0x5b,0xfc, 0x3f,0x37,0x2e,0xc5, 0x6b,0xbc,0xf3,0x2f, + 0x8f,0x71,0x02,0xee, 0xb7,0xb6,0xc5,0xec, 0x49,0xf1,0x4f,0x39, 0x1d,0xec,0x16,0xc0, + 0xa8,0x60,0x8f,0x29, 0x34,0x16,0x8d,0x53, 0xa1,0x32,0xa8,0x58, 0xf6,0x26,0x39,0x21, + 0x73,0xb5,0x30,0x4c, 0x78,0x46,0x12,0x45, 0xbf,0x33,0xb7,0x31, 0x52,0x04,0x4b,0xaf, + 0x3a,0xa7,0xe4,0x56, 0x9c,0x4c,0x85,0xdc, 0x14,0x56,0x7d,0x03, 0x06,0xbe,0x82,0xcc, + 0x25,0x77,0x7c,0x75, 0xfd,0xf4,0xbb,0xbf, 0x6f,0xbd,0x4a,0x72, 0xa4,0x26,0x64,0xa6, + 0x81,0x9f,0x47,0xd9, 0x0b,0x3b,0xa6,0x0d, 0x27,0xf3,0x04,0xab, 0x4c,0xed,0xb0,0x75, + 0xc9,0xa4,0x52,0xe4, 0xd9,0x50,0x57,0x2f, 0xe8,0x34,0xca,0x21, 0x79,0x24,0x43,0x99, + 0x7f,0xcc,0xb9,0xaa, 0xad,0x5e,0x51,0x72, 0x2d,0xe8,0x46,0x80, 0xa8,0x0e,0x5f,0x17, + 0x9e,0xc2,0x09,0xc3, 0xf6,0x0f,0xa8,0xf4, 0x02,0x36,0x5a,0x59, 0xfe,0x40,0x94,0x09, + 0x28,0x7b,0xca,0x55, 0x27,0xcd,0xec,0x34, 0x89,0x8c,0x89,0x63, 0x9f,0xf3,0x2f,0x73, + 0x27,0xd9,0xf4,0x3e, 0x4b,0x0a,0x52,0xc2, 0xae,0x0c,0x2e,0xb2, 0xb4,0xdd,0x9e,0x99, + 0x01,0x00,0xf4,0x91, 0xa4,0x1b,0x4c,0x07, 0x6a,0xa2,0xf9,0x20, 0x6d,0x07,0xfd,0xe3, + 0x9a,0xc3,0x4d,0xe2, 0x35,0x3e,0xbd,0xc3, 0xae,0x61,0x85,0x52, 0xb2,0xf3,0x3b,0xc1, + 0x82,0xbc,0xee,0xd9, 0xa1,0x34,0x78,0x2f, 0xf8,0xea,0xf0,0xf4, 0xc4,0xdb,0xc7,0xd1, + 0x5a,0x40,0xfa,0x72, 0xc9,0xb3,0x3c,0x4c, 0xde,0xab,0xcd,0x92, 0x03,0x8a,0x99,0xdc, + 0xc1,0x5a,0x02,0x83, 0x27,0x6d,0x23,0xf9, 0x6c,0xeb,0x09,0xcd, 0x2f,0xad,0xd3,0x84, + 0x78,0x41,0x13,0x4d, 0x4c,0x66,0x3f,0xa4, 0x6b,0xeb,0x1c,0x4f, 0x7d,0xa3,0xb3,0x17, + 0x60,0xfa,0xb1,0x28, 0x25,0xaf,0x67,0x3b, 0x9b,0x3e,0xb9,0xb7, 0xfc,0x21,0xa3,0x02, + 0xac,0x5f,0x56,0xec, 0x5b,0x7b,0xef,0xaa, 0x3a,0x7c,0x5e,0x5d, 0x5f,0xdf,0xb4,0x13, + 0xec,0x8c,0xa9,0xa6, 0xf8,0x4b,0xce,0xb7, 0x11,0xf3,0x58,0x66, 0xa8,0x48,0xca,0x6f, + 0x5c,0x5f,0xb8,0xf9, 0x8d,0xce,0x5a,0x3f, 0x1a,0x7e,0x0b,0x77, 0x88,0xfd,0x47,0x08, + 0x7d,0x3e,0xe6,0x62, 0x3b,0x74,0xdd,0x79, 0x5f,0x40,0x04,0xcf, 0xc8,0x8c,0xc4,0xbd, + 0x98,0xe2,0xd7,0xf3, 0x27,0x51,0xb3,0x89, 0x0e,0xce,0x75,0x11, 0x65,0x63,0xfe,0x45, + 0xc1,0xaa,0x7a,0xa4, 0x07,0x35,0x4d,0xea, 0xdb,0xfa,0x50,0x58, 0x61,0xc9,0x0c,0x7a, + 0xf9,0x0c,0xed,0x10, 0xff,0x84,0xdc,0x0a, 0x96,0x93,0x35,0xfd, 0x25,0xa6,0xee,0x36, + 0x02,0x02,0x06,0x60, 0xa8,0x6a,0x5e,0xf2, 0x51,0xcd,0x68,0x36, 0x00,0x22,0x3f,0x42, + 0xd8,0x86,0x33,0x53, 0x3e,0x77,0x30,0x0c, 0x61,0x27,0xd1,0xf5, 0xb9,0x9f,0xd5,0x28, + 0xca,0x07,0x92,0xb7, 0x5b,0x3d,0xa4,0xca, 0xa3,0x48,0x9c,0xcd, 0x56,0x65,0x52,0xfa, + 0x34,0xe2,0xd3,0x74, 0x9a,0x52,0x22,0x4a, 0x23,0x1e,0x5c,0xc8, 0x99,0x89,0xab,0x89, + 0x2a,0x7a,0xd3,0xa1, 0xab,0x7c,0xc3,0xe8, 0x07,0x10,0x61,0x2f, 0xc6,0xd0,0xdb,0x0a, + 0xab,0xbe,0x3f,0xab, 0xfc,0x30,0x87,0x2d, 0xd3,0x60,0xd1,0xbb, 0x56,0x77,0x24,0x3f, + 0x5f,0x0d,0xc5,0xf0, 0xb8,0x66,0x7f,0x12, 0xe2,0x6e,0x15,0xb6, 0x47,0x5e,0xde,0x00, + 0xa6,0xb4,0x91,0x4e, 0x13,0x6e,0xc2,0x95, 0x17,0x2d,0xd9,0x05, 0x88,0xb7,0xbb,0x82, + 0x38,0xb1,0xa1,0xe2, 0x8b,0x53,0xac,0x34, 0x70,0xc0,0x01,0xa0, 0xfa,0xa1,0x32,0xa5, + 0x7b,0xbf,0x44,0xb3, 0xa3,0x44,0xbb,0xb7, 0xb8,0x39,0x37,0x9f, 0xfc,0xc9,0x08,0x4b, + 0x82,0x10,0x5b,0x79, 0x71,0x1f,0x38,0x9b, 0x8c,0x3a,0xa9,0xa4, 0x74,0xf7,0xae,0x9f, + 0x08,0xda,0xcf,0xa3, 0x5c,0xa2,0xc3,0xe6, 0x06,0x95,0xdd,0x16, 0x96,0xcb,0xce,0x90, + 0xdc,0xbe,0x7e,0x94, 0x13,0xf6,0x6c,0x57, 0x12,0x8b,0xd8,0x29, 0x64,0xef,0xa3,0x6f, + 0x41,0x36,0x65,0xc7, 0x00,0x18,0xf2,0x80, 0x67,0x48,0x99,0xec, 0xd1,0x0c,0x29,0xd6, + 0xf5,0xfc,0x17,0x21, 0xed,0xf4,0xf7,0x0c, 0x9a,0x7a,0x68,0xde, 0x88,0x2c,0x37,0x35, + 0x01,0x5a,0x92,0x60, 0xb4,0x3d,0x4c,0xff, 0x5c,0xc7,0xb5,0xd2, 0x7a,0x50,0xf0,0xca, + 0xf3,0xe1,0x9f,0xc9, 0x2e,0xe8,0x9c,0x27, 0x3d,0x86,0xfb,0xed, 0x31,0x35,0x20,0x1a, + 0x7f,0x3a,0x5b,0x08, 0xa6,0xe4,0x67,0x1f, 0xac,0x6b,0x2a,0x73, 0x56,0xad,0xba,0x8d, + 0x8b,0x9b,0x72,0x3c, 0xec,0xfb,0x40,0x87, 0x5f,0xbf,0xe1,0xb1, 0x78,0xaf,0xda,0x76, + 0x1e,0x91,0xdf,0x89, 0xc9,0x10,0xc9,0x9f, 0x24,0x01,0x74,0xbd, 0x8e,0x35,0xe7,0x42, + 0x70,0x74,0xd2,0x8a, 0x60,0xed,0x76,0xe1, 0x4d,0x09,0x85,0xba, 0xad,0x3f,0x28,0x63, + 0x3b,0xc1,0x30,0x87, 0xbf,0x27,0x36,0x10, 0x66,0x7a,0x77,0x99, 0x41,0xf6,0xef,0x89, + 0xab,0x12,0x0e,0x5b, 0x36,0x32,0x38,0x0f, 0x48,0xa0,0x14,0xb8, 0x8d,0x11,0x31,0x9b, + 0xee,0x88,0x7f,0xaf, 0xff,0x1c,0x7e,0xca, 0xd1,0x94,0xd1,0xea, 0xce,0xab,0x5d,0xc2, + 0x75,0xee,0xb7,0xf0, 0x40,0xef,0x79,0x24, 0x9a,0x7b,0xf1,0x2c, 0xcf,0x66,0x20,0x64, + 0xe0,0x7b,0x44,0xa2, 0x24,0x3b,0x00,0x2f, 0x73,0x4a,0xff,0x5b, 0xdd,0xb8,0x22,0xbf, + 0x58,0x47,0xc2,0xf3, 0x17,0x24,0x7a,0x8a, 0x59,0xd6,0x2a,0x1b, 0xd8,0xf5,0xbe,0x2c, + 0x37,0x7a,0x9c,0x94, 0x81,0xb5,0xe0,0xbc, 0xe3,0xef,0x52,0x25, 0x9d,0x5e,0x54,0x22, + 0x7b,0x3b,0xc8,0x8f, 0x60,0xa0,0xb7,0xb5, 0x31,0x4f,0xb1,0x48, 0x43,0x5c,0x46,0xdd, + 0x50,0x51,0xf3,0xc6, 0x80,0x96,0x4d,0xa5, 0xd5,0x96,0xd1,0x66, 0x02,0x13,0x61,0xb4, + 0xd7,0xce,0xdd,0xa6, 0xd3,0xe0,0x1e,0xe6, 0x36,0x34,0x96,0x75, 0x1a,0x3c,0x4d,0x85, + 0x8e,0x14,0x54,0xcc, 0xe4,0x24,0x58,0x4b, 0xe3,0x56,0xa5,0xb7, 0xc6,0x96,0xdf,0xbc, + 0x44,0x77,0xeb,0xd1, 0x96,0x47,0x26,0xc5, 0x75,0xcb,0xa4,0x1c, 0x9a,0xbe,0x1f,0x33, + 0x3d,0x20,0xb4,0x4e, 0x02,0x2c,0xb2,0x2a, 0xf0,0xe8,0xf6,0x77, 0x4e,0x3b,0x5b,0x3f, + 0xae,0x89,0x50,0x10, 0xbd,0xbb,0xff,0x6b, 0xd2,0x12,0x17,0x67, 0xac,0xe2,0x7a,0x5e, + 0x0c,0x24,0x7e,0x0c, 0x20,0xfc,0xf2,0x36, 0x52,0x0d,0x78,0x2c, 0x4d,0xf6,0xff,0xeb, + 0xc4,0x85,0x73,0xfe, 0x0b,0x13,0xec,0x07, 0x76,0x67,0x61,0xae, 0x7a,0x32,0xae,0xae, + 0xfb,0xc3,0xc7,0x41, 0x76,0x47,0xbc,0x1d, 0x58,0x4b,0x35,0x43, 0x34,0xc2,0xe7,0xc0, + 0x9d,0x3c,0xce,0xe3, 0x99,0x37,0x27,0x52, 0xad,0xbe,0x56,0xf5, 0xae,0x93,0x47,0x2a, + 0x24,0x28,0x4f,0xd7, 0x32,0x3c,0xac,0xa8, 0x80,0x7f,0xcd,0x7f, 0xc9,0x7a,0xd0,0xe9, + 0x74,0x88,0x27,0xc7, 0xa0,0xe5,0x06,0x8b, 0x78,0xe2,0xa8,0xe4, 0x8c,0xeb,0x44,0xa4, + 0x24,0xb6,0x3a,0xf5, 0x7a,0x9a,0x9d,0x9f, 0x29,0x37,0xfc,0x54, 0x14,0x9b,0x34,0xe4, + 0x98,0x6a,0xdc,0xc1, 0xee,0x49,0xf6,0xcc, 0x3c,0x77,0xce,0xc5, 0xcf,0x4e,0xb5,0xc6, + 0x63,0xe6,0x15,0xb5, 0xe5,0xe4,0x57,0x41, 0x1d,0xa0,0xcc,0x45, 0x24,0x58,0x5d,0x3c, + 0x64,0xdc,0xa2,0xca, 0x6f,0xf9,0x9c,0xb9, 0xd2,0x6b,0xac,0x52, 0xba,0x8c,0x97,0x89, + 0x6c,0x84,0x35,0x65, 0xc0,0x8d,0x6d,0xb8, 0x7e,0x0c,0xe2,0x93, 0x91,0x17,0x85,0xe4, + 0xcd,0x4b,0x93,0x69, 0x25,0x7d,0xbc,0x54, 0xed,0x67,0xa4,0xe5, 0x90,0xc7,0xd7,0x84, + 0x64,0x0f,0x6d,0xcf, 0xa8,0x84,0xf8,0xd1, 0x0c,0x51,0x54,0xff, 0xc3,0xda,0x08,0x56, + 0x50,0x3e,0x5e,0x54, 0x3b,0x93,0xdc,0xec, 0xd8,0xd3,0xce,0xfe, 0x61,0x24,0xeb,0xcb, + 0x06,0x20,0x33,0x74, 0x41,0x81,0x36,0x8d, 0xf9,0x0a,0x7e,0x99, 0x11,0xf7,0x11,0x35, + 0x03,0xed,0x3f,0xf0, 0xda,0x52,0x7f,0x13, 0x0a,0x8f,0x64,0x3b, 0x0f,0x7e,0xe4,0x06, + 0x4f,0x97,0x3a,0xb7, 0x91,0x49,0x64,0xc8, 0xd8,0x62,0xf4,0x7a, 0x60,0x57,0xd6,0xb9, + 0x54,0x43,0xa8,0x2a, 0x33,0xbc,0x80,0x59, 0xf0,0x79,0x58,0xa8, 0x6b,0x77,0xb3,0xf8, + 0xab,0x80,0x08,0x2f, 0x84,0x0d,0x6f,0x93, 0x46,0x28,0x30,0x3d, 0x8b,0xad,0x70,0xc4, + 0x69,0x7f,0x42,0x4e, 0x3b,0xdb,0x59,0x93, 0x4b,0x9a,0x25,0xdc, 0x3f,0x77,0xc0,0x7a, + 0x68,0xdd,0xa4,0x73, 0xb8,0xae,0x7d,0x17, 0x9f,0xad,0x75,0x64, 0x22,0xf8,0xb4,0x5b, + 0x8f,0xa9,0x47,0x54, 0xb2,0x43,0xfa,0xbf, 0x98,0x0d,0x80,0x45, 0xc9,0xdd,0xa7,0xde, + 0x23,0x0b,0xc2,0x84, 0xc3,0x7f,0x55,0xe5, 0xba,0xb6,0x9d,0xee, 0x85,0xe3,0x61,0x67, + 0x30,0x7e,0x3e,0x83, 0x62,0xf3,0x30,0x32, 0x33,0x45,0x11,0x06, 0x17,0xb2,0xec,0x04, + 0x3c,0xa4,0x34,0x9f, 0x5c,0xaf,0xb2,0x6b, 0x2e,0x64,0xcb,0x6e, 0xde,0x78,0xd5,0x16, + 0x54,0x1c,0x05,0xee, 0xa3,0xce,0x85,0xc7, 0xa1,0x43,0x06,0xb8, 0x6c,0xfc,0x11,0x69, + 0xe7,0xec,0x39,0x23, 0x0e,0x5d,0x26,0x6e, 0x40,0x4b,0x1b,0xec, 0x88,0x5c,0x1f,0x6b, + 0x62,0x3c,0x31,0x68, 0xd1,0x90,0x33,0x42, 0x0f,0xba,0x7d,0xc6, 0x08,0x63,0x51,0x66, + 0xa0,0x38,0xba,0x22, 0x7e,0x81,0xb7,0x82, 0x17,0x59,0x39,0x16, 0xb3,0xf0,0xb4,0x26, + 0x31,0xc4,0x3e,0xaa, 0x38,0x68,0x54,0x44, 0x90,0xab,0xa4,0x4a, 0x23,0xf5,0x4e,0x72, + 0x69,0x48,0x1c,0x71, 0x90,0x57,0x28,0x90, 0xbd,0xd3,0x12,0x1f, 0x4d,0x06,0x68,0xe6, + 0x42,0xdf,0x94,0x86, 0xac,0xbe,0x67,0xd2, 0x55,0x82,0xa5,0x6b, 0xb6,0x55,0x2c,0xee, + 0x6a,0xb3,0x91,0xb7, 0xda,0x8e,0xd1,0xbb, 0x3a,0xb6,0x07,0xb3, 0xa0,0xef,0xe7,0x2a, + 0x06,0x13,0x4a,0xf6, 0xf2,0x51,0x1c,0x05, 0x05,0xfa,0x15,0xa1, 0xc8,0x01,0x2d,0xb0, + 0x1f,0x21,0x63,0x81, 0xe0,0x99,0x73,0xb4, 0x49,0x63,0x5a,0x6c, 0x3a,0xc1,0xc1,0xad, + 0x64,0xf5,0x95,0xa3, 0x0f,0xaf,0x2c,0x2f, 0x36,0xf0,0x6d,0x89, 0x96,0x9a,0xfc,0xd8, + 0xfa,0x1b,0x60,0xd0, 0xcf,0x57,0xa2,0x0c, 0xfe,0xef,0x8c,0xfc, 0x85,0x58,0xee,0xc1, + 0x2f,0x31,0xaf,0xe9, 0x9f,0x13,0x49,0xf0, 0x6c,0x76,0x39,0xfa, 0xf8,0x73,0x9c,0xe3, + 0x1f,0x3b,0xc8,0x31, 0x6f,0x0b,0x6d,0xf8, 0x91,0x5c,0x32,0xe9, 0xe5,0xbf,0x56,0x11, + 0x7c,0xfe,0x34,0x80, 0xb4,0xe2,0x41,0xae, 0x74,0x03,0xfb,0x89, 0x48,0x81,0xa7,0xbb, + 0x4a,0x96,0x56,0xfa, 0x53,0x19,0xa6,0xec, 0xc1,0x53,0x07,0x2a, 0xd7,0x2c,0xf0,0xad, + 0xa7,0xda,0x2e,0x2e, 0xcd,0xad,0x2a,0xc4, 0x8f,0xfd,0x85,0xc3, 0x0b,0x06,0x8a,0x0a, + 0xb9,0x97,0x09,0x3e, 0xc8,0x1e,0x41,0xe7, 0xc9,0xd6,0x62,0x39, 0x3f,0xc8,0xfc,0x9c, + 0x82,0x8b,0x0f,0x9c, 0xaa,0xd0,0xaf,0x46, 0xee,0xd0,0xda,0xa7, 0x80,0x4c,0xa5,0x58, + 0x7d,0x30,0x37,0xa4, 0x3b,0x45,0x13,0xd0, 0x7e,0xd1,0xd2,0x11, 0xd5,0xc0,0x58,0xbd, + 0x55,0xe1,0x88,0xaf, 0x95,0x58,0xea,0xf9, 0xed,0xc4,0xc0,0xf6, 0x50,0x6c,0xb1,0x9f, + 0x35,0x70,0xbc,0x34, 0xfb,0x65,0x5d,0x96, 0x8f,0x24,0x1c,0x3d, 0xf9,0x1a,0xf5,0x09, + 0x01,0xb4,0x33,0x48, 0x61,0x4b,0x55,0xa7, 0xae,0x01,0xe8,0x15, 0x7a,0xae,0xc7,0x38, + 0x18,0x76,0x22,0x79, 0xd3,0x7b,0xf6,0x40, 0x5e,0xa8,0x45,0x4e, 0x50,0xea,0xa0,0x1b, + 0x2a,0xc9,0xe5,0x44, 0x46,0x5e,0x7e,0xbc, 0x2b,0x36,0x05,0x97, 0xe1,0x38,0x9e,0xdf, + 0x92,0x2d,0x38,0x4f, 0x37,0xa6,0x60,0x57, 0xc1,0x51,0xd6,0x41, 0x0c,0xc5,0xdd,0x95, + 0x61,0x1f,0x43,0x53, 0x2b,0x13,0x4e,0x95, 0xec,0xa2,0xb1,0xaf, 0xd5,0xfb,0xac,0x40, + 0xdf,0x33,0xa6,0xcb, 0x57,0x96,0xd3,0xbd, 0xfa,0x33,0x16,0x5f, 0xbc,0x6d,0x1c,0xd7, + 0x68,0x68,0x66,0x52, 0x6b,0xfe,0xf4,0xe5, 0xb3,0xa6,0xc6,0x96, 0xe2,0x4e,0xce,0x71, + 0xc0,0xb7,0x5c,0xc1, 0x77,0xd7,0x5a,0x89, 0xf8,0x82,0x2d,0x11, 0xb4,0x48,0x27,0xfe, + 0xb0,0x69,0xda,0x3e, 0xdf,0x97,0x84,0x09, 0x45,0xec,0x0f,0x50, 0xae,0xd8,0x1a,0xe0, + 0x52,0x49,0x5d,0xa2, 0xfa,0xda,0x8d,0x4c, 0xf8,0xc7,0xa5,0xea, 0x90,0xe3,0x53,0x1a, + 0xc9,0x61,0xe3,0x32, 0x06,0x9c,0xb8,0x1e, 0xd6,0x82,0x6d,0x1c, 0x1d,0x13,0x46,0x86, + 0x84,0xba,0xdb,0xdb, 0x1a,0xd0,0xa3,0xcc, 0x69,0x65,0xf2,0x99, 0xc7,0x75,0xf5,0xa3, + 0x95,0x51,0x27,0xbb, 0xa1,0x4e,0x85,0x50, 0xfe,0x6d,0x51,0x6f, 0xaf,0x60,0x6d,0x14, + 0xaa,0xdf,0x47,0xd0, 0x83,0xd2,0x35,0x3a, 0x87,0x03,0x64,0x25, 0xbe,0x6e,0xda,0xec, + 0x53,0xfd,0x9c,0xcd, 0x19,0xbe,0x2b,0xe1, 0xf8,0xfd,0x1f,0xc5, 0x14,0x34,0x97,0x31, + 0x08,0x03,0xe1,0x85, 0xef,0x14,0x0b,0x65, 0x8a,0x73,0x1d,0x61, 0x81,0xd4,0xf3,0x75, + 0xc7,0x88,0xe1,0xc6, 0x43,0xeb,0xe2,0xb2, 0xbb,0x93,0x15,0xee, 0x5c,0xb4,0x94,0x13, + 0x45,0x0b,0xfa,0x74, 0x28,0x09,0x8c,0x57, 0x82,0x11,0xd6,0x0d, 0xa8,0x5d,0xe9,0x35, + 0x5a,0x90,0xa9,0x78, 0xb8,0x66,0x0e,0x4b, 0x51,0xce,0x17,0x30, 0xdb,0x21,0x99,0x90, + 0x71,0x17,0x50,0x15, 0x6b,0xb1,0x13,0x72, 0x89,0x17,0xaa,0xc3, 0x7e,0xb3,0x49,0x18, + 0x04,0xb6,0xf2,0xdc, 0xbb,0x62,0x16,0xe5, 0x71,0xab,0xbc,0xfb, 0x38,0x8b,0x8c,0xbd, + 0xa8,0xfe,0x05,0x34, 0x04,0xb3,0x12,0x48, 0x41,0xe0,0x6d,0x00, 0x2e,0x97,0x8b,0xdb, + 0x3f,0x9f,0x76,0x46, 0xae,0x07,0x4a,0x4c, 0x5c,0xe5,0x96,0x7c, 0x96,0xb1,0xf9,0x28, + 0x19,0x7e,0x21,0x54, 0x38,0x55,0x0e,0x79, 0xc2,0xf6,0x28,0xa9, 0x64,0x35,0x60,0x1b, + 0xd2,0xa3,0x1b,0x44, 0x40,0x72,0xa4,0xa7, 0xd4,0x43,0x40,0xae, 0xef,0x43,0xeb,0xb8, + 0xb6,0xa3,0x15,0xa0, 0xc5,0x5c,0xc3,0x11, 0xd6,0x7d,0xbb,0x1c, 0xca,0xba,0x17,0x4a, + 0xb4,0x33,0xae,0xe3, 0x65,0x00,0x56,0xb1, 0x21,0x61,0x9b,0x75, 0x24,0x52,0xe5,0x1d, + 0x9e,0xe4,0xb2,0xf8, 0xd0,0xba,0x1a,0x94, 0xfa,0x12,0x3d,0xcc, 0x18,0x12,0xd0,0x11, + 0x73,0x04,0x5c,0x7e, 0x49,0xdb,0x08,0x94, 0xc0,0x5b,0x0c,0xbe, 0x1b,0x36,0x80,0x04, + 0xba,0x62,0x43,0xba, 0x55,0x0d,0x20,0xa8, 0x79,0xb9,0xa7,0xea, 0x70,0x26,0x0e,0xbf, + 0x8f,0x77,0x7e,0x32, 0x30,0xcc,0x40,0x23, 0xfe,0xf3,0x56,0x19, 0xa6,0x85,0x95,0x16, + 0x8a,0x7c,0x0c,0x23, 0x9b,0x9e,0x6e,0x2f, 0x9d,0x11,0xfe,0xc2, 0x0b,0xd3,0x71,0xd7, + 0x8e,0x34,0xf3,0x24, 0x21,0x70,0x99,0xb1, 0x83,0xb8,0xeb,0xe1, 0x47,0x1d,0x05,0xae, + 0xbf,0xd1,0xcc,0x04, 0xf4,0x40,0xae,0xda, 0x98,0xf9,0xad,0x61, 0x8b,0xc9,0x60,0x19, + 0x17,0xbb,0x6f,0xef, 0x7d,0x46,0x39,0x17, 0x45,0x3e,0x29,0xb3, 0xae,0x3b,0xc0,0x53, + 0xe4,0x36,0xac,0x17, 0x7d,0xe1,0xac,0x12, 0x2e,0x6e,0xb7,0x5e, 0x66,0x96,0x59,0x98, + 0x53,0x8f,0x5b,0xd6, 0x67,0xec,0xde,0x4a, 0xe9,0x76,0x58,0xd6, 0x6b,0xda,0x58,0xe4, + 0xa9,0x58,0xfe,0x66, 0x2e,0x8c,0xb0,0xce, 0xa0,0x6f,0xfb,0x87, 0xbc,0xf6,0x1c,0x01, + 0x55,0x76,0x11,0x47, 0x1b,0x01,0xc6,0xdb, 0x77,0xdd,0x56,0x30, 0x39,0x21,0x51,0xa1, + 0xa4,0x06,0x81,0x8d, 0x30,0xed,0x76,0x43, 0xe0,0xfc,0x2b,0x79, 0xbe,0x0f,0xae,0x79, + 0x5d,0xa7,0x0c,0x20, 0x75,0x38,0xe6,0x2a, 0xf5,0x0b,0x9a,0x17, 0x07,0x78,0xed,0x73, + 0x65,0xc7,0x78,0xf8, 0xab,0x45,0x34,0xe9, 0x33,0xad,0x5b,0x86, 0xb3,0x1b,0x57,0xaa, + 0x3f,0x78,0xca,0xa0, 0xd3,0xbb,0xf5,0x3b, 0xe7,0xbc,0xef,0x34, 0x00,0x6d,0xa0,0x69, + 0xe5,0x18,0x3a,0xb7, 0x3a,0x2e,0x3b,0xb2, 0x83,0xe9,0xde,0x69, 0xec,0x60,0xe4,0x46, + 0x6d,0x6d,0x24,0x47, 0x28,0x4b,0x0a,0x34, 0xf7,0x26,0x76,0x90, 0x28,0xcd,0xc5,0xfa, + 0x98,0x4e,0x1e,0x16, 0x90,0xc6,0x11,0x29, 0x4f,0x2c,0xef,0x99, 0x8f,0x25,0x59,0x47, + 0x10,0x4a,0x9b,0xa3, 0x11,0x03,0xb8,0x7d, 0xb8,0x56,0xaf,0xc4, 0x4f,0x0c,0x24,0x8e, + 0xbf,0x1a,0x63,0x37, 0xb6,0xac,0xf7,0x4f, 0x45,0x67,0x02,0xdd, 0x1e,0x22,0x22,0xf9, + 0xfd,0xac,0xb3,0x86, 0xb4,0x0b,0x98,0x1f, 0x87,0x1c,0x10,0xfc, 0x81,0xac,0xf6,0x23, + 0xad,0x49,0x64,0xb7, 0x0c,0xf3,0x65,0x8d, 0xcc,0x60,0x5d,0xef, 0x08,0x8f,0x2f,0x39, + 0xc0,0xf9,0xb7,0xd0, 0x99,0x68,0x69,0x97, 0x10,0x8b,0xf9,0xe8, 0xda,0xdb,0xae,0xcd, + 0x69,0x0f,0x38,0xb9, 0x3c,0x1c,0x46,0xcd, 0x5a,0x40,0x31,0x8d, 0x4c,0x0a,0xcf,0x61, + 0x84,0xa0,0x16,0x62, 0x9b,0x9d,0xbb,0x92, 0xf2,0xae,0xe1,0x62, 0xc2,0x51,0x32,0x61, + 0xcc,0x69,0x0c,0x63, 0x45,0x4b,0x4b,0xaf, 0x39,0x76,0xe3,0x0b, 0x61,0xb8,0x5c,0x70, + 0x03,0x40,0x14,0x0c, 0x0f,0x6f,0x64,0x7d, 0xe0,0xf3,0x72,0xd0, 0x64,0x30,0x90,0xbf, + 0xb0,0x50,0xe1,0xe3, 0x75,0xe1,0xf8,0xfb, 0x8b,0xc6,0xd0,0x86, 0x44,0x28,0xff,0x20, + 0x13,0x73,0x1f,0xb4, 0x2e,0xb0,0x1b,0x73, 0x19,0xd0,0xd0,0x56, 0x50,0xe5,0xf7,0x47, + 0x88,0x6d,0xe9,0x14, 0x3d,0xda,0x21,0xce, 0xe7,0x4c,0x21,0xcb, 0x71,0xad,0x03,0x19, + 0x73,0xad,0xd7,0x5e, 0xe5,0x8c,0xf5,0xdf, 0xb1,0xa4,0x2d,0x6a, 0x9c,0xcc,0xa0,0x5c, + 0xa3,0x3e,0x02,0xc3, 0x32,0x07,0xa5,0x97, 0x87,0x2f,0xf2,0xf9, 0x9b,0xa0,0x2e,0x49, + 0xa8,0x96,0x54,0xda, 0x71,0x1a,0x93,0x5e, 0x80,0x95,0x50,0xb9, 0xbb,0x93,0xc1,0x55, + 0x16,0x1f,0xac,0x0f, 0x46,0x10,0x7f,0x20, 0x60,0x02,0xc5,0x98, 0x38,0x3f,0x03,0xcb, + 0x5c,0xb8,0xff,0xc8, 0xa5,0xe1,0xa8,0x28, 0xb3,0xc5,0xb3,0x84, 0x5b,0x58,0x0c,0x7a, + 0x44,0xab,0x57,0xb5, 0xce,0x38,0x45,0x7f, 0x2d,0x94,0xf0,0x71, 0xac,0xde,0x61,0xc4, + 0x2d,0xf9,0x8a,0x2d, 0x47,0xa5,0xa2,0xc0, 0xb3,0xea,0x1c,0xbf, 0xec,0xa1,0xa7,0x26, + 0xdb,0x21,0x73,0x72, 0xc2,0x35,0xfc,0x9d, 0xdb,0x0e,0xf8,0x77, 0xb9,0x08,0x98,0xb5, + 0xbe,0x06,0xcd,0x57, 0x5e,0x8b,0xc9,0x73, 0x6f,0x75,0xb3,0x76, 0x6b,0x47,0x19,0x33, + 0x8b,0xfa,0x64,0xf5, 0x86,0x11,0xe8,0x86, 0x45,0x55,0x87,0x68, 0x2f,0x33,0x52,0x1c, + 0x79,0x52,0x20,0x04, 0x99,0x8c,0xde,0x7c, 0x8c,0x5b,0xf7,0x72, 0x02,0x65,0xcf,0xea, + 0xfc,0xc3,0x07,0x45, 0xd1,0x05,0xda,0x8c, 0x2e,0xe8,0xf7,0x83, 0x5f,0x28,0x11,0x02, + 0x57,0xad,0x27,0xf9, 0x2d,0x7d,0xa9,0x45, 0xea,0x2a,0x61,0x3e, 0x2a,0x85,0x74,0x20, + 0x64,0x99,0x72,0xf6, 0xd1,0x94,0x93,0x27, 0x1b,0xec,0xed,0x0c, 0xff,0x16,0x09,0x79, + 0x39,0xd5,0x95,0x86, 0x6d,0x92,0xf1,0x18, 0x41,0x84,0x6a,0xdd, 0xb2,0x67,0xf0,0x4e, + 0x53,0x37,0x3a,0xe8, 0x4a,0xb2,0xd2,0xd1, 0xc0,0x61,0x84,0x15, 0xa9,0xed,0x2d,0x04, + 0xdf,0x15,0x76,0x46, 0xb8,0x48,0x9b,0xe0, 0x90,0x79,0xda,0xfe, 0x11,0xf4,0x5e,0x8d, + 0x57,0x4c,0x58,0xe1, 0x7f,0xe9,0x07,0x6f, 0x04,0x95,0x71,0xe7, 0xe8,0x72,0xf0,0xde, + 0x72,0xfa,0xac,0x8d, 0x3a,0x58,0x50,0xd7, 0xc5,0x32,0x33,0x1f, 0x53,0xb9,0xf0,0x50, + 0xb2,0x5c,0x9e,0xa8, 0x4a,0x87,0x9b,0x25, 0x31,0x0d,0x0f,0x7a, 0xd0,0xf2,0xa2,0x2f, + 0x7a,0x6e,0x21,0x8a, 0xf2,0x7e,0x9b,0x0c, 0x95,0xa7,0x3e,0xf7, 0xda,0xdb,0x8a,0x87, + 0x33,0xa6,0x18,0x9c, 0x9b,0x46,0x81,0xc5, 0xbb,0xc5,0x66,0xd6, 0xb6,0xc7,0xe9,0x13, + 0x8c,0xde,0xc5,0xb1, 0xdd,0xde,0xb6,0xa8, 0x10,0x9b,0x5e,0x0a, 0xad,0x48,0x12,0x1d, + 0x76,0x53,0xb2,0xa2, 0x71,0xd5,0x25,0x26, 0xba,0xa0,0xdd,0xe9, 0xe1,0x96,0x49,0x0a, + 0x27,0xd5,0x40,0xb9, 0xc6,0x09,0x44,0x56, 0xb1,0x29,0x0c,0xbf, 0xcd,0xce,0x3d,0xb7, + 0x5a,0x55,0x5a,0x3a, 0xa8,0x04,0x7c,0xf5, 0x07,0x06,0x35,0x53, 0x3a,0xee,0xfd,0x34, + 0xa6,0x8d,0xd2,0x11, 0x8c,0xa5,0x19,0x64, 0x5c,0x9d,0x7f,0xb5, 0xd7,0xbe,0x92,0x3c, + 0x67,0xe3,0x72,0x6a, 0x45,0xcf,0x2c,0xa2, 0x54,0x1c,0x47,0x14, 0xd6,0x82,0x0f,0x8d, + 0xb4,0xcd,0x36,0xc5, 0xa7,0xd0,0xa2,0x0c, 0xd6,0xd7,0xf9,0xa0, 0xa7,0x1a,0x99,0xe1, + 0x72,0x38,0xc9,0xa7, 0x9c,0x62,0xb2,0x8c, 0x43,0x48,0x20,0xe2, 0xd7,0xa5,0x40,0x0b, + 0x1e,0x80,0x96,0x39, 0x49,0x9c,0x92,0x77, 0x52,0xe1,0x80,0x0d, 0xf7,0x8a,0xb9,0x7d, + 0x9c,0xa2,0x8b,0xd4, 0x86,0xed,0x61,0xf2, 0xae,0x58,0x8a,0xf9, 0xa7,0x2a,0x9b,0xd1, + 0x9c,0xbc,0x05,0x9c, 0x4f,0x26,0x16,0x36, 0x3d,0xd3,0x72,0xf2, 0x29,0x52,0x37,0xe1, + 0xd7,0x8f,0x3c,0xc2, 0xcd,0x90,0xdc,0x12, 0x8f,0x2f,0x13,0x06, 0xa0,0x5c,0x54,0xaa, + 0xaa,0x05,0x7b,0x0e, 0x99,0x41,0xaa,0x00, 0xa6,0x65,0x36,0xfb, 0x9d,0xe6,0x19,0x3b, + 0xfe,0xfe,0xfe,0x38, 0x8c,0x3b,0x6d,0x09, 0xc2,0xb9,0x5f,0x1a, 0x88,0x76,0x05,0xf0, + 0x82,0x39,0xe2,0xac, 0xfc,0x06,0xca,0x5b, 0xda,0x47,0x0c,0xf3, 0xa0,0x53,0x61,0x5a, + 0x5d,0x00,0xb2,0x36, 0xb1,0xd0,0x37,0xb6, 0xff,0x53,0x44,0x8f, 0xa4,0xd8,0x2c,0xed, + 0xaa,0x42,0x25,0xed, 0xe0,0xa6,0x28,0x51, 0x7f,0xdc,0xb3,0x9c, 0x2e,0x24,0x32,0xb4, + 0xa7,0x4b,0x79,0xd9, 0xf5,0x44,0x73,0x29, 0xf3,0xb2,0x02,0x9b, 0x0e,0x5b,0x68,0x2f, + 0x74,0x44,0xbb,0x3b, 0xeb,0x31,0xac,0x8c, 0xee,0x8f,0xf4,0xf8, 0xb4,0x00,0xe5,0xaa, + 0x60,0xfe,0x9b,0x9c, 0xfb,0xf4,0x17,0xf8, 0x88,0x89,0xaf,0x84, 0x9b,0x1e,0x1a,0x8c, + 0x7f,0x32,0xad,0x35, 0x26,0x32,0x6b,0xd6, 0xe3,0xf1,0x8b,0x20, 0x5e,0x6f,0xd3,0x13, + 0x95,0x2c,0xfc,0x54, 0x0f,0xe5,0x19,0xb4, 0x97,0x49,0xf8,0x3a, 0x91,0xf8,0x55,0x36, + 0x98,0x92,0x86,0x1f, 0x6b,0x9c,0x82,0x53, 0x43,0x9a,0x1a,0xf3, 0xdc,0xaf,0x9f,0x7b, + 0xbf,0xe2,0x55,0x2d, 0xfd,0x03,0x2a,0xe9, 0x50,0x1b,0x02,0xae, 0x72,0x40,0x14,0xe3, + 0xda,0x65,0xc4,0x07, 0xc4,0x4c,0x2a,0x45, 0xa2,0x9a,0x0b,0x2f, 0xda,0x63,0xec,0xe2, + 0xc6,0xfc,0xad,0x95, 0xe3,0xc9,0x21,0xfd, 0x60,0xce,0x46,0x00, 0x3d,0xbc,0x2f,0x6e, + 0x92,0x64,0x43,0xfd, 0x6d,0xcb,0xf5,0x07, 0x34,0x27,0x76,0x68, 0xd1,0x7a,0x5f,0xd3, + 0x98,0xc3,0xab,0xba, 0x8f,0xcf,0x5f,0x1f, 0x26,0xba,0x51,0x03, 0x35,0xe8,0xef,0x83, + 0x1c,0xdb,0xf0,0x19, 0xaf,0x44,0xca,0x30, 0x0e,0x96,0x6b,0x49, 0x80,0xa0,0x0e,0x9f, + 0xe7,0x2c,0x31,0x25, 0x81,0x2f,0xab,0x31, 0xd4,0xca,0x54,0xea, 0xd9,0x67,0x8c,0x02, + 0xc7,0x18,0x4c,0x1e, 0x41,0x7c,0xd7,0x28, 0xd8,0x80,0x6a,0x7a, 0x5e,0x9f,0x02,0xb2, + 0xe6,0xbf,0xd0,0xef, 0xcf,0xf1,0xe7,0xce, 0xdc,0xa9,0xf2,0xa3, 0xa1,0xc5,0xeb,0x4b, + 0xbb,0xf4,0xca,0xea, 0xd5,0xef,0x63,0x0f, 0x15,0xc9,0xa3,0x56, 0x91,0x31,0x9e,0x99, + 0x7f,0x92,0xbb,0x3e, 0x7b,0xe4,0xfb,0x1d, 0x64,0x98,0x2a,0xcd, 0x8a,0x3f,0x04,0xc8, + 0xf6,0xae,0xf6,0x48, 0x77,0x5e,0x07,0xa1, 0x3c,0x46,0x78,0x5c, 0x4d,0xa1,0xa9,0x7e, + 0x37,0xdf,0x4e,0xf5, 0x26,0x2d,0x3e,0x6d, 0x25,0x8f,0x4c,0x56, 0xf0,0x69,0xe1,0xc7, + 0x5f,0x85,0x2e,0x7d, 0xfc,0x8c,0x0e,0x8c, 0x29,0x74,0xb3,0x87, 0xfc,0xa8,0x61,0x7b, + 0x3e,0xad,0x28,0x38, 0x65,0x36,0x11,0xa5, 0xd5,0x3a,0xc3,0x15, 0xb9,0x9e,0x23,0xe6, + 0x75,0x6a,0x6c,0x6b, 0x1a,0x61,0xa6,0x43, 0xbd,0x62,0x17,0x6f, 0x9e,0x64,0xfa,0x2c, + 0x83,0x94,0x2a,0xb9, 0x51,0xd7,0x1f,0xd5, 0x37,0xfa,0x0f,0xfe, 0x70,0x6e,0x09,0x8f, + 0x43,0x1e,0x52,0x14, 0xec,0x86,0x68,0x82, 0x6a,0xa1,0x17,0xa0, 0x10,0x6c,0x4a,0x34, + 0x2c,0x2f,0x10,0x1a, 0xef,0x95,0x6e,0x08, 0x3b,0x90,0xb3,0x15, 0x91,0xdb,0x43,0xd2, + 0x3e,0x31,0x5d,0x7f, 0xb4,0x36,0xa8,0x8e, 0x50,0xeb,0x75,0xbd, 0xc3,0x79,0x97,0x17, + 0x89,0xbe,0xf3,0x75, 0x75,0x63,0x3c,0xf6, 0xb6,0x57,0x97,0x4c, 0x3c,0x5c,0x6b,0x30, + 0x5e,0x5b,0x6f,0xb1, 0x09,0x02,0xa0,0xea, 0xa5,0x45,0x90,0xdd, 0xdb,0x7a,0x33,0xb1, + 0xfc,0xe1,0xd9,0x4d, 0x6e,0x88,0xe9,0xb5, 0x80,0x37,0x90,0x33, 0x83,0xfa,0x1b,0x0b, + 0xd6,0xda,0x9d,0x17, 0xa4,0xe3,0x9f,0x38, 0x5e,0xfa,0x19,0x9e, 0xeb,0x84,0x3e,0x73, + 0xa9,0xac,0xa6,0x7f, 0xc4,0x71,0xd9,0x62, 0x31,0x36,0x08,0x17, 0xda,0xbc,0xe9,0xf4, + 0x3e,0xf6,0x78,0xc9, 0xbe,0xd3,0x6f,0xa2, 0x39,0x8d,0x75,0xce, 0xcd,0xf2,0xc4,0x79, + 0x60,0x20,0x07,0xd0, 0xc9,0x1c,0x88,0xe2, 0x18,0x8f,0x95,0xba, 0x58,0x5e,0x12,0xc3, + 0xcf,0x3d,0xbe,0x67, 0x04,0x8c,0x7f,0x27, 0x44,0xe8,0xa4,0xbd, 0x50,0x8b,0x42,0x47, + 0x53,0x01,0x31,0xe1, 0x4c,0x63,0x52,0xd2, 0xc9,0xc0,0xc4,0xd9, 0x81,0x54,0x52,0xd4, + 0x20,0x0b,0xfc,0x37, 0xfe,0x35,0xf4,0xdd, 0xa2,0x1c,0xf2,0x18, 0xc1,0x1f,0x16,0xdb, + 0xd4,0x5a,0x5c,0xc4, 0x26,0xa2,0x5b,0xe5, 0xc8,0xec,0x48,0x48, 0x23,0x28,0xf6,0xcb, + 0x69,0x8f,0x10,0xad, 0x19,0x2d,0xbe,0x30, 0xbb,0x00,0x2d,0x2e, 0xd3,0x9f,0x37,0x1a, + 0x4b,0xfa,0xc1,0xd0, 0xc2,0xec,0x31,0xef, 0xe8,0xc0,0x7e,0x4d, 0xf0,0x13,0xca,0x43, + 0xa5,0xa9,0xf5,0xe5, 0x7e,0x7b,0x67,0x6e, 0x1f,0x21,0x81,0x69, 0x0e,0x3d,0xb2,0x31, + 0x38,0x4f,0x62,0x9e, 0x15,0xc7,0x7e,0x2e, 0xc2,0x1f,0x39,0x4b, 0xbf,0xad,0xec,0x60, + 0xef,0xe7,0xdc,0x94, 0xe3,0xa1,0x49,0xe8, 0xf0,0x65,0x10,0x29, 0x4b,0x27,0x37,0xd9, + 0x5e,0xb5,0xa5,0x65, 0x7c,0xe2,0x7f,0xdd, 0x47,0x90,0x0c,0xea, 0xac,0xeb,0xb9,0x6b, + 0xc5,0x36,0xf7,0x3c, 0x3a,0x6f,0xa6,0x92, 0x71,0x19,0x15,0x78, 0xfb,0x13,0xe4,0x37, + 0x6d,0x3d,0x51,0xb8, 0x77,0xd6,0xa2,0x5f, 0x81,0x81,0x1b,0x59, 0x0a,0xed,0xf4,0xec, + 0xca,0x0a,0x86,0xf1, 0x7a,0xe7,0x7d,0xa9, 0x75,0x5b,0x2e,0x17, 0x95,0xf4,0x6f,0xf2, + 0x36,0x2b,0xc5,0xff, 0x97,0xa3,0x9e,0xd4, 0xf4,0x7a,0xf9,0xdd, 0x8b,0xee,0xe8,0xc7, + 0xa6,0x28,0x04,0x52, 0xef,0x7c,0x0d,0x0f, 0x88,0x4d,0x9a,0x43, 0xd1,0xac,0xff,0x4c, + 0x6b,0x9a,0x49,0x1e, 0x20,0x8e,0x34,0xa5, 0xfe,0x15,0x15,0xee, 0xd1,0xb9,0x3e,0xab, + 0xbb,0x44,0xaa,0xc0, 0x16,0x5a,0xc1,0xd7, 0x62,0xe2,0xdd,0xcc, 0x32,0x81,0xad,0x8e, + 0xa2,0x2e,0x33,0x74, 0x6e,0x01,0xb8,0xd8, 0x45,0xac,0xec,0x0f, 0x73,0x11,0x6b,0x86, + 0x79,0xf0,0x8d,0x32, 0xd9,0xd1,0xa4,0x6e, 0x91,0x47,0xd3,0xdd, 0x98,0xae,0xa4,0xc0, + 0x97,0x8f,0x88,0x3b, 0x75,0xe6,0xbc,0x67, 0xd2,0xd6,0xd5,0x5d, 0xb1,0x93,0x06,0x89, + 0x1b,0xd2,0x60,0x88, 0xd5,0xa5,0x2f,0xb7, 0xa9,0x64,0xfc,0x26, 0x57,0xe9,0x64,0xce, + 0xdd,0xcf,0xef,0xb4, 0xb6,0xd0,0x47,0xf0, 0x17,0x28,0x21,0x94, 0x0f,0x1f,0xd8,0x4c, + 0x2e,0xd9,0x17,0x07, 0xdd,0x42,0x0b,0x3b, 0x6e,0x21,0xcd,0xde, 0x98,0xa6,0xac,0xc9, + 0x90,0x11,0xa5,0x6a, 0xf3,0x82,0x32,0xf3, 0x9b,0x25,0xa2,0x6b, 0x2f,0x5f,0x43,0x60, + 0xa0,0x03,0xc1,0xd9, 0xcc,0xc9,0x64,0x8f, 0x14,0xf6,0xbe,0x18, 0xe4,0x09,0x86,0xa9, + 0x5b,0x6c,0xd6,0x93, 0xcd,0xae,0x9e,0xb7, 0x51,0x06,0x36,0xce, 0xd9,0x2e,0xb1,0x6b, + 0x01,0x4e,0xef,0xd5, 0x88,0xf9,0x9f,0x64, 0x0a,0x7f,0xac,0x51, 0x82,0x91,0x3f,0xc1, + 0x4e,0x65,0x7d,0x37, 0xf7,0xba,0x56,0x12, 0x1f,0x76,0x55,0x4a, 0xdf,0x0d,0xd0,0xce, + 0xdb,0xac,0xc5,0x16, 0xa1,0x42,0xbe,0x8e, 0xf6,0x82,0x6e,0x4b, 0xa6,0xd3,0x84,0xb8, + 0x16,0x3b,0x8a,0x67, 0xd7,0x2f,0x17,0x82, 0x56,0xe7,0x8d,0x80, 0xee,0xe8,0x1e,0xb0, + 0x0a,0x77,0xfd,0xd0, 0x4b,0x33,0xbe,0x21, 0x1e,0x89,0xf9,0xfe, 0xd3,0x52,0x35,0xb4, + 0x0b,0xc7,0x18,0x2f, 0x1a,0x7d,0xca,0xff, 0x62,0x41,0x9a,0xb5, 0x02,0x2f,0xe6,0x0b, + 0x93,0x69,0x8c,0xd6, 0xb3,0x6a,0x6c,0xa8, 0xf4,0xde,0x51,0x39, 0x8a,0xab,0x22,0xf0, + 0xe5,0x73,0xbf,0x32, 0x9f,0x4d,0xbe,0x48, 0x6a,0xb6,0x6e,0x28, 0x60,0x08,0xbe,0xa3, + 0x7d,0xb7,0x13,0xf4, 0xfd,0x37,0xf1,0xe7, 0xed,0x54,0x28,0xf5, 0xdd,0x77,0x1b,0x75, + 0xf1,0x27,0xe6,0x0b, 0xe9,0x81,0xd7,0xce, 0x78,0x68,0x17,0x5c, 0xde,0x9a,0x61,0x07, + 0xf6,0x68,0x10,0xff, 0x71,0x8b,0x66,0x9c, 0xfb,0x01,0x29,0x3c, 0xcc,0x0c,0x23,0xa7, + 0x72,0xd7,0x89,0x27, 0x6b,0xc3,0x5e,0x10, 0x3d,0xcc,0x05,0x98, 0xce,0x47,0x40,0x88, + 0x35,0xf7,0xc8,0xab, 0x91,0x69,0x7f,0xc0, 0xa1,0xed,0xc8,0xa3, 0x4a,0x6a,0x95,0xc8, + 0x53,0xa2,0xc0,0x53, 0xd0,0x2b,0xdd,0xec, 0xac,0x63,0xec,0x08, 0xf0,0xc7,0xcd,0x99, + 0xc5,0xd4,0xd2,0x5b, 0xbd,0x2c,0x61,0xc5, 0x56,0x31,0x2b,0x22, 0x1b,0xb9,0xba,0x7f, + 0x13,0xde,0x26,0xff, 0x5e,0x5e,0x03,0xd1, 0x53,0x97,0x69,0x6d, 0x8a,0xfb,0x12,0xbc, + 0xca,0xd5,0x8a,0xd8, 0x08,0x68,0x07,0x24, 0x58,0x59,0xca,0xe2, 0x62,0xd0,0x1f,0xfc, + 0x12,0x11,0x0b,0x84, 0xd5,0x6a,0xb2,0x80, 0x3b,0x66,0x74,0x4b, 0x85,0x7b,0x61,0xb2, + 0x03,0x36,0xb7,0x5d, 0xe8,0xfd,0x40,0x31, 0x31,0xf6,0x7c,0xb8, 0x81,0x20,0xa8,0x73, + 0x0a,0xa4,0x3d,0xf8, 0xbf,0x1e,0xef,0xc5, 0x0f,0x0e,0xa8,0x9c, 0x46,0x54,0x4a,0x11, + 0xf9,0x2e,0x6a,0xec, 0xe5,0x4b,0xc8,0xda, 0xf3,0xd8,0xbc,0x44, 0xf2,0xe1,0xdf,0x62, + 0x45,0xf3,0x0d,0xbd, 0xaf,0x60,0x37,0xe0, 0x76,0x7e,0x42,0x7f, 0x1f,0xf8,0xfb,0x19, + 0xb3,0xe4,0xf4,0x74, 0x94,0x33,0x6a,0x82, 0xae,0x62,0x9c,0xa3, 0xd1,0x3e,0x7c,0xf1, + 0xc9,0xae,0xf5,0x2a, 0x2b,0x31,0x79,0x4c, 0xb8,0xb4,0xd8,0x66, 0x8c,0x7e,0x88,0x21, + 0x8a,0xc0,0x56,0x20, 0xf5,0x16,0xb5,0x58, 0x43,0x10,0x3a,0x76, 0x51,0xd6,0xab,0xcb, + 0x58,0x08,0xca,0x3e, 0xb3,0x7c,0xa9,0x45, 0x66,0x3c,0xbd,0x43, 0x61,0xbe,0x87,0x44, + 0x1b,0x27,0x99,0xe2, 0xa2,0x97,0xa8,0xf7, 0x11,0x86,0x70,0xec, 0x8f,0x2f,0x3b,0x91, + 0xbd,0x49,0x3f,0xbb, 0xa8,0x53,0x58,0x06, 0x36,0xd3,0xe2,0xce, 0xd5,0x29,0x70,0x0c, + 0x8f,0x99,0x54,0xbd, 0x6b,0x49,0x85,0xbf, 0xc2,0xe4,0x26,0xb9, 0x7b,0x41,0x83,0xcb, + 0xae,0x53,0xb8,0x7e, 0x8f,0xca,0xc2,0x94, 0x27,0x8b,0x70,0x3b, 0x8c,0x17,0x5a,0x61, + 0xaa,0xc7,0x25,0x6b, 0xdc,0x3c,0x1c,0x77, 0x8e,0xb9,0xd1,0x56, 0xf5,0xed,0x05,0xb3, + 0x3d,0x8c,0xd4,0x01, 0xd7,0x7e,0x18,0x5a, 0xa1,0x7b,0xa4,0x18, 0xfe,0x7c,0x84,0x46, + 0x53,0x0a,0x36,0x0f, 0x9c,0x02,0xf4,0x47, 0x0d,0xc6,0x3e,0x68, 0x33,0x47,0xb8,0xda, + 0x21,0xa0,0xdc,0xcd, 0xd3,0xa5,0x82,0x25, 0xf4,0x5d,0xab,0xf2, 0x71,0x5e,0x7f,0x47, + 0x07,0x86,0x7e,0x19, 0xa4,0xaa,0x4e,0x34, 0xd1,0x0c,0x81,0x32, 0x65,0xf8,0xda,0x77, + 0x39,0x83,0xe6,0x17, 0x15,0x6d,0x62,0x8f, 0xde,0x7e,0xfe,0x38, 0xaa,0x67,0x25,0x74, + 0xe7,0xfe,0xf0,0x9d, 0xf9,0xb1,0xbb,0xd7, 0x82,0x01,0x1c,0xdc, 0xe3,0xcc,0x1c,0xcd, + 0x73,0xc7,0xa8,0x06, 0x7d,0x30,0x7b,0x14, 0x9f,0xfb,0xc2,0xc1, 0xbc,0x65,0xa6,0x3b, + 0x2b,0xe2,0x79,0x1f, 0xe2,0x7a,0x7d,0x55, 0xb2,0xfa,0x3b,0x73, 0xf9,0xac,0x55,0x25, + 0x5a,0xe7,0x9c,0x50, 0x84,0xf3,0x40,0x7e, 0xee,0x96,0x23,0x17, 0x39,0xba,0xce,0x60, + 0x65,0x11,0x2e,0xe0, 0x27,0xf0,0xe9,0xc0, 0x52,0xc2,0x0e,0x73, 0x33,0x11,0xfa,0x31, + 0x11,0x8b,0xb9,0xbb, 0x5c,0xcc,0xea,0x2e, 0x4a,0xb6,0xaf,0x20, 0x18,0x2c,0xe6,0x85, + 0x57,0xf3,0xbf,0x2c, 0xa4,0xeb,0xa3,0x1b, 0xaf,0x29,0x32,0x3e, 0xb1,0x44,0x34,0x91, + 0x29,0xb3,0x09,0xd3, 0x28,0xf8,0x8a,0x3e, 0x84,0xe7,0x79,0xc1, 0xd9,0xc7,0xc6,0x9a, + 0xe7,0xdf,0x5a,0x21, 0x51,0x17,0x1f,0x77, 0x09,0x2f,0x24,0x13, 0x3d,0x0f,0x44,0x88, + 0x6e,0x69,0xff,0xb0, 0xd9,0xf5,0xea,0x17, 0x6b,0x02,0x91,0x39, 0x24,0x76,0xce,0x21, + 0x00,0x83,0xc3,0x22, 0xca,0xf2,0x99,0x41, 0x87,0x31,0xaa,0x81, 0xd7,0xc4,0x5f,0xc7, + 0x59,0xb5,0xf9,0x6b, 0xae,0x27,0x70,0xfc, 0x5a,0x85,0xed,0x48, 0xc1,0x13,0x2e,0x50, + 0x4b,0x8a,0x31,0xde, 0x3c,0xe3,0x55,0x31, 0xcb,0x0a,0x9c,0x97, 0xbb,0x11,0x59,0x23, + 0x8c,0xb1,0x4f,0xae, 0xe6,0x46,0x70,0x90, 0x9b,0xce,0xba,0x44, 0xf6,0xaf,0x17,0xff, + 0xd0,0xe4,0x1d,0x0f, 0x80,0x18,0xf4,0x11, 0xff,0x11,0x65,0xfa, 0xd2,0x7f,0x19,0x22, + 0xfd,0xd3,0xfc,0xed, 0x9b,0xca,0x2e,0xff, 0x9e,0xff,0x1a,0xe0, 0xe5,0x1a,0x20,0x99, + 0xc1,0x7f,0x38,0xe2, 0x8f,0x70,0x6f,0xd2, 0x60,0x55,0x0a,0x69, 0x01,0xbe,0x6c,0x8e, + 0x38,0x2d,0x8e,0xb1, 0x7e,0xe1,0x26,0x16, 0x50,0xfc,0x3e,0xe5, 0xfe,0xd3,0xb4,0xc8, + 0xb4,0xf3,0xe3,0x34, 0x9b,0xc0,0x6e,0x44, 0x97,0xae,0xa2,0xa0, 0xf4,0x61,0xe6,0x74, + 0x05,0xa5,0x73,0x9a, 0xda,0xd7,0x9d,0xfe, 0x67,0x49,0x48,0xf1, 0x2d,0xb0,0x27,0xff, + 0x0d,0x1e,0x90,0xba, 0x8f,0xb4,0x69,0x51, 0x9a,0x76,0x47,0x03, 0x7e,0xc0,0xad,0x79, + 0x15,0x7d,0x17,0x9d, 0x5d,0x49,0xc8,0x9a, 0x06,0xdc,0x81,0x80, 0x59,0x2e,0xfc,0xc2, + 0xea,0x98,0xb4,0xb8, 0xaf,0xeb,0x56,0x3f, 0xa8,0x8d,0x7a,0x2e, 0x16,0xd5,0x91,0x79, + 0x45,0xd4,0xd3,0x5e, 0xb6,0x4e,0xa3,0x86, 0x57,0x95,0x74,0x9d, 0xb0,0x79,0xe7,0xa1, + 0x44,0x08,0x7d,0xdb, 0xc8,0x8c,0xa2,0xad, 0x5a,0xb1,0xfe,0x19, 0x96,0xa1,0xe0,0xbb, + 0x94,0x39,0x3b,0xf5, 0x1c,0x51,0x95,0x52, 0x13,0xad,0x9d,0x3a, 0x16,0xcd,0x6f,0xf4, + 0x36,0x06,0x53,0x55, 0x48,0x8c,0xf0,0xa3, 0x37,0x81,0x8c,0xfb, 0x1d,0x04,0x76,0x66, + 0xc4,0xfa,0x75,0xc4, 0x17,0x56,0x55,0x02, 0xda,0x33,0x26,0x74, 0x3a,0xaa,0xbb,0x11, + 0x11,0xc1,0xa7,0xf0, 0x31,0xb2,0x36,0xb3, 0x51,0xd3,0xe6,0xa6, 0x7b,0x07,0x88,0xf7, + 0xec,0xfb,0xba,0x99, 0xb2,0x87,0x79,0xd4, 0x78,0xab,0x14,0x00, 0x36,0xad,0xf4,0x4c, + 0x75,0x91,0x32,0x64, 0x1c,0xd8,0xc6,0xdb, 0x10,0xb0,0x93,0x3b, 0xb8,0x75,0xdf,0x48, + 0x7a,0x49,0x2b,0x30, 0xae,0xc5,0xb4,0x98, 0x93,0x83,0xd2,0x62, 0xaf,0xfb,0x7a,0x15, + 0xbe,0x59,0x01,0x48, 0x37,0x21,0x2e,0x15, 0xd9,0x9c,0x60,0xd9, 0x96,0xdb,0xb5,0x81, + 0x66,0x35,0x62,0x32, 0x57,0x18,0xe8,0xd7, 0xa4,0xe0,0x25,0xa8, 0xf0,0x88,0xc8,0xb5, + 0x96,0xfe,0xef,0x5f, 0x40,0xe7,0x23,0x6a, 0xd6,0x8b,0x30,0x6a, 0xc2,0xae,0x66,0xfe, + 0xf0,0x09,0x8d,0xe3, 0x2a,0xcc,0x41,0x56, 0x21,0x36,0x2f,0x8e, 0xd2,0x3c,0x4f,0xd4, + 0x0b,0x3b,0xea,0xe4, 0xba,0xa2,0x88,0xaa, 0x90,0x80,0x2a,0x40, 0xf3,0x74,0x7f,0xf8, + 0x73,0x16,0x97,0xb8, 0xc1,0xc6,0x30,0xc8, 0x68,0xc0,0x57,0xd2, 0xcd,0x18,0x84,0x9f, + 0xf4,0x1e,0x1e,0xc1, 0x05,0x3a,0xac,0xfa, 0x3f,0x5e,0x0e,0x4a, 0x93,0x2c,0x09,0x2d, + 0x32,0x24,0xac,0x96, 0xe9,0x1b,0x1f,0x7e, 0x17,0x57,0x8d,0x78, 0x4e,0xe9,0xe9,0x93, + 0xe3,0xf3,0xa6,0x09, 0x7a,0xa1,0xd4,0xcd, 0x49,0xa5,0x5d,0x53, 0xd2,0x02,0xe0,0x12, + 0x03,0xe9,0x6e,0x31, 0x9b,0xfc,0xc7,0xcb, 0x1c,0x8b,0x70,0x85, 0x35,0xc3,0x16,0x8b, + 0xe1,0x3e,0x87,0x0e, 0x73,0x41,0x41,0x36, 0x7d,0x8c,0xa0,0xd6, 0xba,0x18,0xf1,0x02, + 0x03,0xe2,0x28,0xcc, 0x21,0xc7,0x32,0x59, 0x3c,0x2f,0x75,0xf2, 0x43,0xd6,0xe0,0x53, + 0xeb,0x30,0x69,0x79, 0x5a,0xc1,0xc1,0x42, 0x0b,0xc6,0x3f,0xb7, 0x02,0xa4,0xad,0x1e, + 0xbc,0x8e,0xe1,0x21, 0xe0,0x02,0x9b,0x5f, 0x55,0x62,0xef,0x4a, 0x38,0x84,0x40,0xee, + 0x3b,0x60,0x2b,0x15, 0x88,0x86,0x42,0xce, 0x46,0xa9,0xc2,0x32, 0x96,0xe4,0x9e,0xbf, + 0xca,0x9c,0xa4,0x24, 0x05,0xb5,0x0b,0xec, 0x19,0x77,0xb7,0xd8, 0x21,0xc6,0xae,0x87, + 0xe4,0x89,0x55,0x63, 0xe5,0x0f,0xa9,0x96, 0x9e,0xe7,0x48,0xe6, 0xd0,0xb3,0x18,0x4c, + 0x26,0xea,0x9b,0x3d, 0x84,0x84,0x2b,0xf6, 0xb1,0x73,0x65,0xf5, 0x91,0xb8,0xcd,0x57, + 0x9d,0xf4,0x95,0x61, 0x94,0x95,0x5d,0x1a, 0xec,0xdd,0x61,0x8b, 0xe8,0xb4,0xee,0xa5, + 0x60,0x85,0x18,0x59, 0xe0,0x2c,0xae,0xfa, 0xd1,0xc5,0xd2,0x9e, 0x00,0x15,0x41,0x93, + 0x47,0xaa,0x68,0x04, 0x21,0x2c,0xa1,0x37, 0x5f,0x8e,0xa1,0x1f, 0x4e,0x19,0x76,0x5f, + 0x70,0x37,0xcf,0xfb, 0xd1,0xbd,0xc6,0x61, 0xaf,0xe0,0x99,0xf2, 0x0b,0xb7,0xc2,0xa0, + 0xdd,0xc8,0x6f,0x7d, 0x3c,0xa9,0xa7,0xff, 0x55,0x63,0x63,0x63, 0x0f,0xca,0x85,0xe8, + 0x1e,0xc6,0x64,0xd5, 0xb0,0xf4,0xcf,0x5d, 0xc9,0x77,0x91,0xd5, 0x7f,0x9c,0xa4,0x34, + 0xe9,0x19,0x13,0x73, 0x50,0xba,0x85,0xdc, 0xe3,0xca,0xfb,0x63, 0xac,0x40,0x52,0x70, + 0x7d,0x3f,0x5a,0x92, 0x6f,0xc6,0x45,0xe4, 0xfb,0x5f,0xf0,0x3d, 0xcf,0xf9,0xe7,0xb1, + 0xb5,0x9d,0xbd,0x6c, 0x9c,0x90,0x01,0xcc, 0x8d,0xbd,0x3a,0x94, 0xfc,0x9c,0xbb,0xb1, + 0x43,0x07,0x2a,0x77, 0x0f,0x0a,0x0d,0x5c, 0x5c,0xf9,0x6a,0x1a, 0x1a,0x95,0xa7,0x75, + 0xde,0x04,0x31,0xce, 0x68,0xe6,0x50,0x72, 0xe4,0xd4,0x3e,0xed, 0xc4,0x30,0xb3,0x4c, + 0x9d,0x06,0x24,0x38, 0x77,0x8b,0xf3,0x36, 0x26,0x46,0x00,0xbb, 0x03,0xd0,0xc1,0xf9, + 0x15,0xbf,0x98,0xd6, 0x35,0xb5,0x43,0xd5, 0x77,0x8e,0x17,0x20, 0x14,0xa4,0x98,0x2b, + 0xb0,0xbb,0x6a,0x5a, 0x91,0xcf,0x72,0x53, 0xc8,0x7b,0xa7,0x6d, 0x5f,0x24,0xc3,0xcf, + 0x3f,0x1b,0x93,0xed, 0xc1,0x1f,0x83,0x5d, 0x60,0x7f,0x3e,0xc6, 0x25,0x31,0xea,0x39, + 0x80,0x3a,0x2b,0x66, 0xd9,0x2f,0xf1,0xa1, 0x5b,0xaa,0x4d,0x56, 0x8f,0xda,0x8c,0xea, + 0xb8,0x9a,0x69,0x11, 0x46,0xa7,0xea,0xeb, 0x4b,0x12,0x0b,0xa9, 0x5a,0xba,0xa0,0x63, + 0xa7,0xbb,0x80,0xac, 0xb0,0x19,0x7b,0xd3, 0xd3,0x30,0x53,0xfe, 0xfe,0xc0,0xdb,0x75, + 0x17,0x2a,0xd2,0x73, 0x7b,0xf5,0x43,0x28, 0xa6,0x63,0xa7,0x30, 0x1f,0xd4,0x3e,0x6e, + 0x4f,0x27,0x75,0xd2, 0xd4,0xba,0x13,0xde, 0x5e,0x71,0x10,0x61, 0x5a,0x62,0x47,0x16, + 0xfe,0x9b,0x04,0x7e, 0x25,0x5b,0x25,0x69, 0x20,0x38,0xe0,0x19, 0x3f,0x4b,0x74,0x6a, + 0xc3,0xa9,0xa2,0xcf, 0x83,0xb7,0x5d,0xb2, 0x79,0x3a,0xb0,0x1c, 0x35,0x39,0xc1,0x5c, + 0x4b,0x01,0x75,0xb5, 0x49,0x12,0x85,0x91, 0xf5,0x70,0x67,0x3c, 0x24,0x08,0x25,0x93, + 0x52,0x92,0xee,0xa1, 0xe3,0x46,0x4f,0x6a, 0x5f,0x19,0x67,0x59, 0xff,0x02,0x56,0x51, + 0x61,0x35,0x31,0xb2, 0x45,0x58,0x56,0x0c, 0xcd,0x11,0x0d,0x15, 0x1a,0x72,0x09,0x6c, + 0x79,0x12,0x84,0xad, 0xfe,0x49,0x60,0xd7, 0x74,0xba,0xab,0xa2, 0x85,0x1c,0x52,0x6b, + 0xe9,0x24,0xa9,0xba, 0x16,0x4b,0x73,0x30, 0x92,0xd9,0x05,0x1a, 0x96,0x92,0x3d,0x7f, + 0x80,0x57,0x3c,0x62, 0x10,0x2f,0x15,0xb3, 0xc3,0xb7,0x34,0xf0, 0xe1,0xb9,0xb5,0x5e, + 0xbc,0x6c,0xcb,0xca, 0x23,0x42,0xc6,0x0a, 0x99,0x77,0xa8,0x04, 0x99,0x37,0xfc,0xe9, + 0x8b,0x6d,0x77,0x13, 0x4f,0xc9,0x15,0xa3, 0x44,0x0e,0x79,0x62, 0x36,0xf5,0x14,0xcc, + 0xe7,0x5f,0xe6,0xef, 0x4f,0xd2,0x92,0xc0, 0xa6,0x2f,0x8e,0x41, 0x41,0xef,0xdc,0xfd, + 0x2a,0xed,0x3c,0xcc, 0x57,0xdb,0x34,0xf3, 0x82,0xbf,0x4a,0x10, 0xa3,0x3c,0x2f,0x9a, + 0x16,0x5f,0x75,0xc9, 0x5d,0x77,0xbb,0xc3, 0x53,0xe3,0x92,0x53, 0xa8,0x3c,0xec,0xc2, + 0x06,0x9a,0x86,0xea, 0x2f,0x51,0x7e,0xbb, 0x17,0x4b,0x59,0x83, 0x4d,0x81,0x6e,0x8a, + 0xde,0x15,0x47,0xd9, 0x5e,0xe9,0x01,0x9e, 0x98,0x6a,0xd5,0x19, 0x67,0xfe,0xbf,0x27, + 0x54,0xab,0x7a,0x1c, 0xad,0x88,0xd4,0x8a, 0xe1,0x74,0xe1,0xd0, 0x21,0x30,0x19,0xfc, + 0xf3,0xb0,0x2e,0x28, 0xf1,0x69,0x3b,0x6d, 0xfe,0x1f,0x50,0x92, 0xcd,0x53,0x91,0x2e, + 0x54,0x17,0xba,0x54, 0x89,0xa1,0x1f,0xbc, 0x96,0x6f,0xb1,0xd8, 0x72,0xf0,0xca,0xae, + 0x9c,0x9d,0x5e,0x3c, 0x69,0x53,0xbd,0x39, 0xa1,0x2d,0xd0,0xc3, 0xe9,0x16,0x5f,0x18, + 0x1d,0x97,0xf6,0x01, 0xc9,0x0d,0xcb,0x45, 0x00,0xd8,0xf9,0x27, 0x02,0x4e,0x48,0xa2, + 0xac,0xd4,0xb5,0xa8, 0x5a,0xd3,0xb2,0x49, 0xdf,0x6d,0x19,0xe8, 0x48,0x79,0xee,0x0d, + 0x7e,0x87,0x5e,0xfe, 0x11,0x48,0x5c,0x31, 0xc0,0x84,0x50,0x49, 0x49,0xbd,0x35,0xcc, + 0x8e,0xe7,0x9b,0x14, 0x82,0xa8,0x4b,0x9c, 0xac,0x50,0x74,0x4b, 0x0b,0xaa,0x9a,0xb7, + 0x31,0x77,0x03,0x2e, 0x19,0x4b,0x85,0xaa, 0x0b,0xc8,0xd0,0x27, 0x3a,0x55,0x11,0x1e, + 0xf3,0xbf,0x5d,0xcb, 0x2d,0xe1,0x05,0xb6, 0x56,0x4b,0x87,0xbc, 0x52,0x70,0xfe,0xf0, + 0x4b,0xb1,0x61,0xd9, 0x54,0x01,0x9a,0x67, 0xa2,0xd3,0x86,0xe4, 0x90,0x28,0xf8,0x84, + 0x1b,0x54,0xb4,0xca, 0xea,0x33,0x90,0x93, 0xe7,0xfe,0x2d,0xf7, 0xcf,0x72,0x55,0xe7, + 0xdb,0x20,0xa8,0x59, 0x06,0xef,0x33,0x7d, 0xd1,0x2d,0xa4,0x37, 0xa4,0x4f,0x90,0x2e, + 0xfa,0xc8,0xce,0x22, 0xf2,0xc8,0xd3,0x00, 0xe7,0xa6,0xc4,0xd6, 0x68,0x8f,0x0f,0xf2, + 0x1f,0xc7,0xb2,0x32, 0xc7,0x81,0xc5,0xbe, 0xb8,0x9d,0x97,0xbc, 0xe6,0xcb,0x9a,0x2d, + 0x9f,0x65,0xe6,0xf9, 0xa4,0xd9,0x93,0x7f, 0x76,0xe6,0x23,0xed, 0xb8,0x06,0x20,0x83, + 0x52,0x05,0x12,0x28, 0x5e,0x9e,0x85,0x03, 0x0b,0x86,0x4a,0xa0, 0x8f,0x7b,0xdc,0x96, + 0x20,0xa4,0x39,0xde, 0xe4,0x90,0xdf,0xd2, 0x4c,0xa6,0xce,0x03, 0x4d,0xe8,0xd9,0x5f, + 0x30,0x83,0x10,0x53, 0x1a,0x46,0xf5,0x47, 0xb2,0xc1,0xe3,0x7b, 0xaf,0x6e,0xa4,0x62, + 0x7e,0xae,0xfb,0x18, 0xb7,0xdc,0x2e,0x08, 0xe3,0xd0,0xd3,0x17, 0x20,0x3c,0x20,0xff, + 0xcb,0x02,0x48,0x54, 0xe9,0x2a,0x6e,0xd3, 0x33,0x3d,0x80,0x51, 0x43,0x5f,0xab,0x7b, + 0x14,0x8e,0xc9,0xc4, 0xd4,0x99,0xd4,0x12, 0x53,0x4c,0x4c,0xf1, 0xdf,0x89,0xf1,0xf9, + 0xf8,0xca,0xe4,0x76, 0x8f,0xcf,0xc5,0xfe, 0xc2,0x1a,0x7c,0xaf, 0x2c,0xe7,0x57,0x4a, + 0x1f,0x1b,0x9c,0x6a, 0x9c,0xf9,0xdf,0x2a, 0x3b,0x8a,0xf4,0xac, 0x8a,0x5a,0x88,0x12, + 0xb8,0x3c,0x01,0x81, 0x4e,0xb3,0x4f,0x25, 0x4d,0x7e,0x02,0xa1, 0x86,0x52,0x09,0xf7, + 0x13,0x8c,0x63,0xb5, 0xa0,0xb8,0x4f,0xd3, 0x6d,0xf9,0x46,0x6e, 0xba,0x6b,0x05,0x92, + 0x21,0xae,0x96,0x25, 0x13,0xf6,0x87,0x7e, 0x36,0x18,0x17,0x0f, 0xe3,0x1c,0x9d,0x84, + 0x66,0xa5,0x8a,0xfa, 0xe1,0x53,0x79,0xae, 0xbc,0xef,0x47,0x9a, 0x53,0xbb,0x11,0x0a, + 0x2d,0x1d,0x47,0x66, 0x9d,0x74,0x22,0x95, 0x93,0xe8,0x06,0x07, 0x59,0xec,0x0f,0xac, + 0xdf,0x99,0x2d,0x7e, 0x85,0xe6,0xee,0x73, 0x08,0xec,0xef,0xc5, 0xde,0x0f,0x37,0x81, + 0x47,0x33,0xbf,0x32, 0x71,0x2f,0x2d,0x79, 0x0e,0xc0,0x54,0x84, 0x3a,0x22,0x6a,0xef, + 0xb9,0xa8,0x5d,0x7b, 0x51,0xb5,0xf8,0xa9, 0x39,0xe1,0x35,0x39, 0x23,0x0a,0xd1,0xf8, + 0x35,0xe1,0x15,0xb9, 0x3a,0x08,0x1f,0x71, 0x88,0x95,0x51,0x83, 0x74,0x88,0xac,0x2d, + 0xec,0xda,0xd9,0x6b, 0x5d,0x6f,0x28,0xa1, 0xbc,0xbc,0xb9,0x0b, 0xdd,0xd8,0x82,0x89, + 0xd2,0x6f,0x3e,0xfd, 0xc4,0xc0,0x19,0x85, 0x4a,0xe9,0x08,0xa6, 0xc0,0xd5,0xb9,0xaf, + 0x22,0x0d,0x16,0x66, 0x4c,0x37,0x82,0xaf, 0x04,0xd8,0xb4,0x05, 0x33,0xf1,0x8c,0x53, + 0xc0,0x8d,0x6e,0x1e, 0x75,0x77,0xcd,0x1e, 0xa2,0x34,0x3a,0xd0, 0x91,0xe5,0x70,0x70, + 0x64,0x76,0x7d,0x74, 0xf3,0x88,0x71,0x78, 0xfb,0xa3,0xf7,0x5e, 0x4d,0x66,0xed,0x23, + 0xe1,0x86,0x43,0xad, 0xf1,0xd1,0x07,0x15, 0xfb,0xd6,0xa7,0xee, 0x93,0x98,0x08,0xcc, + 0x7d,0x7e,0xc4,0x0b, 0x68,0xea,0xa1,0xa5, 0x2a,0x55,0xe5,0xc4, 0xca,0x40,0xed,0x48, + 0x0c,0xcc,0xb8,0x6e, 0x74,0xc0,0x1f,0x50, 0xde,0xf4,0xf0,0xd6, 0xe3,0x98,0x77,0x2a, + 0x92,0x6e,0x66,0x81, 0x1d,0xd8,0xce,0xf1, 0x19,0x9b,0xa5,0x32, 0x48,0x79,0x94,0x39, + 0xe0,0xec,0xa2,0x50, 0x02,0xbf,0x2e,0x34, 0x1a,0xeb,0x2c,0xc1, 0xb3,0x19,0x50,0x3d, + 0x47,0x23,0xbf,0xe0, 0x74,0x2d,0xa3,0x79, 0xd0,0x0e,0xa5,0x19, 0xef,0x5c,0x4b,0x88, + 0xf1,0x97,0xcf,0x7f, 0x68,0xd4,0x41,0xf6, 0x88,0x37,0x0d,0x7b, 0x2e,0x12,0xb5,0x2d, + 0x47,0x09,0x3f,0x57, 0xa0,0xff,0x0b,0x35, 0xa8,0xb5,0x68,0x45, 0x34,0x03,0xde,0x27, + 0x58,0xe6,0xd6,0xa1, 0xa1,0xd6,0x24,0x37, 0x08,0x3d,0xb6,0x76, 0xe1,0x56,0x65,0x93, + 0x55,0x2b,0x3d,0x4a, 0x6d,0x1e,0x5d,0xba, 0x0c,0x84,0x40,0xb8, 0x07,0x16,0xf9,0x2e, + 0xf0,0x71,0xf7,0x09, 0x43,0xbd,0x3f,0x76, 0x2e,0x69,0x8c,0x86, 0x82,0x12,0x62,0x83, + 0xc1,0xdf,0xc3,0xfb, 0x45,0x3f,0x37,0xbd, 0x8c,0xca,0x7a,0x43, 0x04,0xa0,0xb0,0x1c, + 0x26,0x3d,0x5b,0xcc, 0x65,0x36,0x42,0x3e, 0xc3,0x30,0x7f,0x17, 0xae,0xc5,0x05,0xac, + 0x70,0xb7,0x90,0xea, 0x05,0x1b,0x16,0x67, 0xdb,0x9a,0x03,0x90, 0x57,0xfe,0xac,0xa8, + 0x25,0xb6,0x23,0x4d, 0x3a,0x7c,0x06,0xf7, 0xbf,0x13,0x83,0x45, 0xd8,0xe5,0x26,0xe1, + 0xea,0x18,0xa5,0x6d, 0x9d,0x91,0x96,0x16, 0xd3,0x1c,0x5e,0x3c, 0xa0,0x49,0x15,0x67, + 0xa9,0xdd,0x44,0x31, 0xc2,0x45,0xc7,0x40, 0xc7,0xd0,0x13,0xd8, 0x89,0xab,0x6a,0x7c, + 0xa2,0xc1,0xaf,0x62, 0x35,0x52,0xc1,0x08, 0x3c,0x63,0x1b,0x94, 0x23,0xaa,0xd4,0x44, + 0x21,0xcb,0x8b,0x6b, 0xfc,0xc8,0xaf,0xe9, 0x77,0x0e,0x65,0x61, 0x4f,0xe5,0xce,0x0d, + 0xa1,0xec,0xda,0xe1, 0x04,0xad,0x0c,0x5f, 0x60,0x4d,0x11,0x8a, 0xf0,0xd9,0xa7,0x1f, + 0x02,0x99,0x2b,0x53, 0x22,0xf1,0x7b,0x40, 0x18,0x8d,0x7a,0x20, 0x24,0x4b,0x74,0xae, + 0xa6,0xd2,0x0b,0x10, 0xd1,0x90,0x73,0x59, 0xd1,0xe1,0xf4,0x8a, 0xb2,0x53,0x72,0x31, + 0xdf,0x23,0x1d,0x32, 0x58,0xc7,0x91,0x83, 0x91,0xd1,0x32,0x8c, 0x3f,0x6b,0x29,0xea, + 0x5a,0x97,0xdc,0x78, 0x2b,0xeb,0xf8,0x3f, 0x66,0xae,0x18,0xbf, 0xcf,0x51,0x81,0x3a, + 0xdd,0x99,0x1b,0xfc, 0xd3,0x4d,0x1b,0x4a, 0x5d,0x17,0x7c,0x9a, 0x53,0x74,0x3e,0x75, + 0x3b,0x4d,0xc1,0x2e, 0xd4,0x0e,0x91,0xea, 0x33,0x24,0x94,0x6c, 0xfe,0x39,0x91,0x40, + 0x4d,0xa1,0xd8,0xc6, 0x30,0xec,0x6d,0x21, 0x0e,0x90,0x7e,0xde, 0xb8,0xe0,0x87,0x4f, + 0x13,0xcc,0xd7,0xe1, 0x91,0x43,0x74,0x8c, 0x3f,0xfa,0x29,0x03, 0xe4,0x7e,0xd0,0x33, + 0x8e,0xcb,0xe1,0x87, 0xfb,0x69,0x9d,0xee, 0xc1,0x86,0x5b,0xcd, 0xe1,0xc4,0xb4,0x52, + 0xdb,0xff,0x7f,0x1a, 0x7a,0x01,0xf3,0xeb, 0x1a,0x8e,0xef,0xc4, 0xdb,0xee,0xd3,0x28, + 0xc7,0x15,0x28,0x2f, 0x95,0x70,0x35,0xd4, 0xdc,0xa5,0xae,0x64, 0x69,0x80,0xa4,0x10, + 0x79,0x2e,0x9e,0x5e, 0x98,0xfc,0x4f,0xd3, 0xe8,0x0a,0x5f,0xc5, 0xd4,0x04,0x4c,0x51, + 0x33,0x42,0xad,0x29, 0xea,0x6e,0x08,0xe6, 0x19,0xb6,0x2d,0xc9, 0x48,0x8a,0x03,0x1f, + 0xf1,0x3a,0xd7,0x1d, 0xe5,0x36,0x14,0x7a, 0x6d,0xf2,0x14,0x6c, 0x10,0x32,0x19,0xb9, + 0x6a,0xbb,0x55,0x8d, 0xdf,0x54,0x38,0xbe, 0xb5,0x42,0x1e,0x34, 0x66,0x0b,0xd9,0x64, + 0x4e,0xa2,0x47,0x60, 0x71,0xb4,0xd2,0x41, 0x64,0x18,0x69,0x3e, 0x3d,0x49,0x64,0x04, + 0xd7,0x2f,0x09,0x7a, 0xca,0x85,0x4c,0xa7, 0xcd,0x79,0x88,0x9e, 0x27,0x8a,0x38,0x72, + 0x98,0x54,0x18,0xe3, 0x81,0xfa,0x1c,0x2d, 0xf2,0xf8,0xf8,0xac, 0x1d,0xd7,0xb1,0xbe, + 0x4f,0x2e,0x80,0x53, 0x9e,0x68,0x96,0x34, 0x0c,0x4e,0x44,0x95, 0x36,0x7a,0x74,0x16, + 0x48,0xbf,0x13,0x86, 0x29,0x71,0x4b,0x80, 0x76,0x4d,0xd1,0xf6, 0x12,0x3e,0xe0,0x30, + 0x1b,0x79,0x84,0x33, 0xbf,0x55,0x64,0xa5, 0x55,0xc7,0x58,0x4c, 0x49,0x75,0x8a,0x6c, + 0x36,0x31,0xa3,0x92, 0x3b,0x5f,0x5c,0x53, 0x05,0xcd,0x71,0xd8, 0x61,0x6f,0x15,0xc7, + 0x93,0x48,0x2e,0xf1, 0x2d,0x32,0x03,0x5d, 0xd0,0x73,0x65,0x27, 0xc3,0x70,0xc2,0xeb, + 0x29,0x7b,0x1f,0x5b, 0x7f,0x56,0x1a,0xdb, 0x34,0x4a,0x81,0x03, 0x51,0x7b,0xd9,0x3b, + 0x5b,0x45,0xb6,0x93, 0x05,0x41,0x93,0x95, 0x1e,0x43,0x4e,0x2b, 0x13,0x38,0xed,0xee, + 0x9e,0xeb,0x12,0x83, 0x28,0x05,0x04,0x98, 0x36,0x20,0x49,0x30, 0x97,0x25,0xee,0x17, + 0x34,0xe7,0xa1,0xc4, 0x9c,0xb2,0x38,0xb8, 0x7b,0x49,0xd8,0x9f, 0xa3,0x34,0xdb,0xef, + 0xc9,0xda,0x38,0x0f, 0x14,0x4a,0x67,0x91, 0xe9,0x05,0xb5,0x05, 0x31,0xba,0x2c,0x47, + 0xda,0x54,0xbe,0xd7, 0xee,0x8c,0xf1,0x84, 0x34,0x1d,0xeb,0x2d, 0xa3,0x84,0x4d,0xd9, + 0xd7,0x99,0x72,0x17, 0x78,0x37,0xf2,0x64, 0xc2,0xb0,0xc7,0xbf, 0xca,0x25,0xd0,0x11, + 0xab,0x6e,0x4e,0x1b, 0x49,0xa6,0x77,0x84, 0xbe,0xbb,0x1d,0x8c, 0x66,0x67,0x2d,0xbd, + 0x69,0xb0,0x14,0xcd, 0x47,0x44,0x70,0xd5, 0x03,0xf5,0x09,0xf1, 0xff,0x07,0x06,0x91, + 0x24,0xa5,0xaa,0x2d, 0xc2,0x8c,0x6d,0x81, 0xdd,0x5a,0xfe,0x6d, 0xea,0xae,0xcc,0x4c, + 0x00,0xa3,0x84,0xef, 0xd6,0xb6,0x1f,0x97, 0xa9,0x38,0x6b,0x4c, 0xa6,0x9e,0x81,0x72, + 0x81,0xd8,0xb1,0x2d, 0x16,0xa2,0x6a,0x2d, 0x7d,0xa7,0x3b,0xb2, 0x0f,0xdd,0x02,0x55, + 0x5a,0xef,0xe7,0xd9, 0x06,0x35,0x84,0x6e, 0x35,0xba,0xcd,0x56, 0x88,0xb3,0xec,0x5c, + 0xcd,0x35,0xb7,0x03, 0x6c,0x10,0x70,0xea, 0xaf,0x9a,0xd7,0x53, 0x92,0xbc,0x43,0xf9, + 0x7e,0x5a,0x84,0x40, 0xeb,0xea,0x8e,0xae, 0xe6,0xc7,0x7f,0x74, 0x0d,0x3a,0x4c,0x8c, + 0xd0,0xca,0xcb,0xe1, 0x03,0x78,0xfc,0x39, 0x01,0x5d,0x97,0x54, 0xa0,0xde,0xd1,0x1d, + 0x5a,0x1f,0xde,0xe9, 0x59,0x4b,0xf0,0x65, 0x61,0x69,0x36,0xf6, 0x6e,0x94,0x99,0x19, + 0x61,0x41,0xfb,0x1a, 0x87,0x30,0xa3,0xb1, 0x5b,0x55,0x97,0x81, 0x33,0x4e,0x4a,0x9e, + 0x58,0x33,0x1d,0x9d, 0x5a,0x83,0xcc,0x27, 0x44,0x63,0xde,0x47, 0x60,0x43,0xbb,0x7d, + 0xa5,0x62,0xca,0x4d, 0x50,0xc0,0xa5,0xa8, 0x23,0x80,0x86,0x65, 0xa1,0x5b,0x1e,0xb1, + 0xa7,0x1d,0x1e,0xe7, 0x55,0x9e,0xb5,0x36, 0x44,0x4f,0x10,0x84, 0xa9,0x18,0x1a,0x6d, + 0xd3,0xb8,0xd4,0x1a, 0x34,0x38,0x95,0x6a, 0xb7,0x40,0x83,0x48, 0x23,0x38,0xe6,0x06, + 0x8d,0xb8,0x8a,0xcb, 0x8d,0xf8,0xd1,0xb6, 0x9f,0xaa,0x44,0x56, 0x87,0xc3,0xb6,0x09, + 0x0e,0xe8,0x55,0xa8, 0xec,0xc9,0xd1,0x41, 0xd3,0x2e,0x7e,0x76, 0xeb,0xc7,0x04,0x6f, + 0x3c,0x91,0x1e,0x6b, 0x46,0x97,0x56,0xcf, 0xff,0x4a,0xbe,0xc3, 0x3a,0x9d,0x89,0xfe, + 0x77,0x95,0xc6,0xaf, 0xbc,0x71,0xca,0x0e, 0x3a,0x25,0xbb,0x99, 0xfc,0x36,0x48,0xfe, + 0x06,0x00,0x25,0x22, 0x60,0x0a,0x23,0xf6, 0x9f,0x66,0x1f,0x50, 0x76,0x44,0xf5,0x06, + 0x8e,0xee,0xe7,0x3c, 0xac,0x30,0xcc,0xac, 0x33,0x58,0xe5,0xe1, 0xa2,0x93,0x27,0xe0, + 0x02,0x55,0x7d,0xd0, 0x34,0xc9,0x87,0x52, 0xb8,0xf9,0x0a,0x3b, 0xe5,0x68,0x63,0xf1, + 0x94,0xd6,0x6e,0x06, 0x64,0xd3,0x2b,0x05, 0x98,0x25,0x4e,0xf6, 0x9c,0xf1,0xb2,0xb9, + 0x96,0x6c,0x08,0x68, 0x0a,0x1b,0x26,0x59, 0x2e,0xb1,0xab,0xfb, 0x8a,0xef,0x9c,0x2d, + 0x67,0x0d,0x9e,0x86, 0x37,0x1f,0x21,0x96, 0xeb,0xde,0x50,0x03, 0x80,0xb1,0x37,0xed, + 0xfb,0xbc,0x16,0xe2, 0x3f,0xd8,0xbe,0xfb, 0xce,0x56,0x69,0xc1, 0x91,0xaa,0xab,0x0a, + 0xd2,0x29,0x00,0x4a, 0x36,0x3b,0x15,0x50, 0xc7,0x22,0x9e,0x3d, 0x27,0x1e,0x93,0x63, + 0x5a,0x6d,0xb2,0x9d, 0x2d,0xf3,0x26,0x3d, 0x59,0x19,0xd5,0xa6, 0x54,0x67,0x79,0xb9, + 0x6a,0x7b,0x54,0x4c, 0x59,0x7e,0x7a,0xbe, 0x59,0x78,0xf6,0xab, 0x51,0x65,0xc1,0x6b, + 0x91,0xdf,0xec,0xb0, 0x32,0x1a,0xf8,0x8d, 0x2b,0x13,0x97,0x56, 0x5f,0x88,0x5a,0xde, + 0x54,0x43,0x1a,0x77, 0x75,0xb1,0x29,0xad, 0x44,0x90,0xe3,0x09, 0x09,0xaf,0x21,0x5e, + 0xb5,0x38,0x43,0xd0, 0x08,0x2f,0x30,0x03, 0x40,0x25,0xa4,0xd9, 0x27,0x77,0xa2,0x46, + 0xdc,0xd4,0x8c,0x37, 0xef,0x87,0x89,0x99, 0xcb,0x57,0x06,0x03, 0x65,0x42,0xf2,0x2f, + 0xfc,0x8e,0x05,0x1c, 0x4a,0x35,0xfc,0x10, 0x9e,0x87,0xbf,0x84, 0x74,0x66,0x6c,0x7d, + 0x75,0x55,0x18,0x25, 0xec,0xe1,0xa4,0x9e, 0x1a,0xae,0xef,0x7b, 0x27,0x51,0x27,0x73, + 0x23,0x48,0x5d,0x2b, 0xc2,0x54,0x7f,0x2b, 0xc4,0xbd,0x71,0x36, 0x6b,0xe0,0xc1,0xd9, + 0x0f,0x05,0x2e,0x46, 0x40,0x44,0xa0,0x4a, 0xe5,0xc7,0xa1,0xfd, 0x3a,0x16,0x30,0x3f, + 0x49,0xca,0x6a,0x0d, 0x1c,0x00,0x94,0x9e, 0xd8,0x7a,0xcc,0x26, 0x92,0xd5,0x20,0x04, + 0xc9,0xea,0x82,0xa4, 0xae,0xfd,0xe7,0xd4, 0x07,0x87,0x35,0x46, 0x7e,0xf7,0x32,0x18, + 0x52,0xc0,0x66,0x2b, 0x29,0x72,0xfc,0xc7, 0x6d,0x31,0x26,0xc2, 0x81,0x8c,0x2a,0x5e, + 0x61,0xff,0x40,0xde, 0x9b,0xa5,0xcb,0x34, 0xa6,0x64,0xae,0x5b, 0xff,0xff,0xf3,0xce, + 0x5b,0x44, + // 0x7992 = 31122 data bytes ( 6%) }; static CompressManager_t lecode4_bin_mgr diff --git a/project/src/lib-analyze.c b/project/src/lib-analyze.c index 6271524..de87cca 100644 --- a/project/src/lib-analyze.c +++ b/project/src/lib-analyze.c @@ -261,6 +261,12 @@ void AnalyzeSZS stgi->speed_mod = as->speed_mod; } + as->ctid_list = GetCtIdByList(as->sha1_szs); + #if 0 // test only SHA1 of unmodified file + if ( !as->ctid_list && strcmp(as->sha1_szs,as->sha1_szs_norm) ) + as->ctid_list = GetCtIdByList(as->sha1_szs_norm); + #endif + CheckFinishLine(&kmp,&as->kmp_finish); CheckWarnKMP(&kmp,&as->used_pos); szs->warn_bits |= kmp.warn_bits; @@ -384,6 +390,11 @@ void AnalyzeSZS ct_dest = StringCopyE(ct_dest,ct_end,",aiparam"); } + if ( szs->have.szs[HAVESZS_LICENSE] > HFM_NONE ) + { + ct_dest = StringCopyE(ct_dest,ct_end,",license"); + } + //--- scan KCL @@ -472,6 +483,10 @@ void AnalyzeSZS if (szs->warn_bits) ct_dest = StringCat2E(ct_dest,ct_end,",warn=",GetWarnSZSNames(szs->warn_bits,'+')); + const uint ctid = as->ctid_list ? as->ctid_list : as->ctid_attrib; + if (ctid) + ct_dest = snprintfE(ct_dest,ct_end,",id=%05u",ctid); + szs->have.valid = true; as->have = szs->have; as->valid_track = valid_track; @@ -480,6 +495,51 @@ void AnalyzeSZS /////////////////////////////////////////////////////////////////////////////// +uint GetCtIdByList ( sha1_hex_t sha1 ) +{ + if ( strlen(sha1) != 40 || !opt_id_list ) + return 0; + + char search[42]; + StringCat2S(search,sizeof(search),sha1,"|"); + + static char prev_search[42] = ""; + static uint prev_id = 0; + + if (!strcmp(search,prev_search)) + { + PRINT0("search=%s, prev=%u\n",search,prev_id); + return prev_id; + } + + PRINT0("search=%s\n",search); + strcpy(prev_search,search); + prev_id = 0; + + FILE *f = fopen(opt_id_list,"r"); + if (!f) + { + ERROR1(ERR_CANT_OPEN,"Can't open id-list: %s\n",opt_id_list); + opt_id_list = 0; + return 0; + } + + while (fgets(iobuf,sizeof(iobuf)-1,f)) + { + if (!memcmp(iobuf,search,41)) + { + prev_id = strtoul(iobuf+41,0,10); + PRINT0("... found=%u\n",prev_id); + break; + } + } + + fclose(f); + return prev_id; +} + +/////////////////////////////////////////////////////////////////////////////// + enumError ExecAnalyzeSZS ( analyze_param_t *ap ) { DASSERT(ap); @@ -510,20 +570,23 @@ enumError ExecAnalyzeSZS ( analyze_param_t *ap ) ccp sep = strchr(ptr,','); if (!sep) sep = end; - switch ( sep-ptr ) - { - case 4: + if (!memcmp(ptr,"id=",3)) + as.ctid_attrib = strtoul(ptr+3,0,10); + else + switch ( sep-ptr ) + { + case 4: if (!memcmp(ptr,"edit",4)) szs->have.attrib |= 1 << HAVEATT_EDIT; break; - case 5: + case 5: if (!memcmp(ptr,"cheat",5)) szs->have.attrib |= 1 << HAVEATT_CHEAT; break; - case 7: + case 7: if (!memcmp(ptr,"reverse",7)) szs->have.attrib |= 1 << HAVEATT_REVERSE; break; - } + } ptr = sep + 1; } } @@ -586,6 +649,7 @@ enumError ExecAnalyzeSZS ( analyze_param_t *ap ) "lex_features=\"%s\"\n" "warn=\"%u=%s\"\n" "have_common=%d\n" + "ct_id=\"%u %u %u\"\n" "ct_attributes=\"%s\"\n" "name_attributes=\"%.*s\"\n" @@ -645,6 +709,8 @@ enumError ExecAnalyzeSZS ( analyze_param_t *ap ) ,CreateFeatureInfoLEX(szs->have.lex_feat,true,"") ,szs->warn_bits,GetWarnSZSNames(szs->warn_bits,' ') ,as.have_common + ,as.ctid_list ? as.ctid_list : as.ctid_attrib + ,as.ctid_list,as.ctid_attrib ,as.ct_attrib+1 ,name_attrib_len,name_attrib ); diff --git a/project/src/lib-analyze.h b/project/src/lib-analyze.h index be68514..236bad3 100644 --- a/project/src/lib-analyze.h +++ b/project/src/lib-analyze.h @@ -98,13 +98,15 @@ typedef struct analyze_szs_t sha1_hex_t sha1_vrcorn; // SHA1 of vrcorn sha1_hex_t sha1_minimap; // SHA1 of minimap - //--- slots of orgiginal tracks: 0:none, 11.84:track 111..125:arena + + //--- slots of original tracks: 0:none, 11..84:versus 111..125:arena u8 sha1_kmp_slot; u8 sha1_kmp_norm_slot; u8 sha1_kcl_slot; u8 sha1_minimap_slot; + //--- sub files lex_info_t lexinfo; // LEX info @@ -115,6 +117,12 @@ typedef struct analyze_szs_t szs_have_t have; // complete have status, copy of szs_file_t::have + //--- ct id + + uint ctid_list; // id by --id-list + uint ctid_attrib; // id by attribute + + //--- more stats int ckpt0_count; // number of LC in CKPT, -1 unknown @@ -144,6 +152,8 @@ void AnalyzeSZS ccp fname // NULL or fname for slot analysis ); +uint GetCtIdByList ( sha1_hex_t sha1 ); + // /////////////////////////////////////////////////////////////////////////////// /////////////// exec analyze /////////////// diff --git a/project/src/lib-ctcode.c b/project/src/lib-ctcode.c index aabc4b5..5d92737 100644 --- a/project/src/lib-ctcode.c +++ b/project/src/lib-ctcode.c @@ -774,6 +774,7 @@ void ResetDataCTCODE ( ctcode_t * ctcode, bool create_empty ) } else if (!ctcode->used_slot[tidx]) { +// [[%04x-]] snprintf(namebuf,sizeof(namebuf),"Slot %u = 0x%03x",tidx,tidx); SetName16(td->tname,namebuf); snprintf(namebuf,sizeof(namebuf),"slot_%02x",tidx); @@ -2021,14 +2022,15 @@ static enumError ScanRTL_Track const int tidx = td - ctcode->crs->data; if (ctcode->replace_at) { +// [[%04x+]] + snprintf(buf,sizeof(buf),lecode_04x ? "%04X" : "%03X",tidx); + PRINT(">>> REPLACE: %s\n",track_string); - snprintf(buf,sizeof(buf),"%03X",tidx); track_string = ReplaceName(track_string,"@SLOT@",buf); track_string = ReplaceName(track_string,"@@","@"); PRINT(">>> REPLACED: %s\n",track_string); PRINT(">>> REPLACE: %s\n",track_xstring); - snprintf(buf,sizeof(buf),"%03X",tidx); track_xstring = ReplaceName(track_xstring,"@SLOT@",buf); track_xstring = ReplaceName(track_xstring,"@@","@"); PRINT(">>> REPLACED: %s\n",track_xstring); @@ -2050,7 +2052,8 @@ static enumError ScanRTL_Track if (!*fname) { if (ctcode->use_lecode) - snprintf(fname,sizeof(fname),"%03x",tidx); +// [[%04x+]] + snprintf(fname,sizeof(fname),lecode_04x?"%04x":"%03x",tidx); else snprintf(fname,sizeof(fname),"slot_%02x",tidx); } @@ -2992,7 +2995,8 @@ enumError ScanLEBinCTCODE td->music_id = htonl(*music); td->property_id = htonl(*prop); *ct_flags = *flags; - snprintf(td->filename,sizeof(td->filename),"%03x",tidx); +// [[%04x+]] + snprintf(td->filename,sizeof(td->filename),lecode_04x?"%04x":"%03x",tidx); } } ctcode->n_tracks = max_tidx+1; diff --git a/project/src/lib-file.c b/project/src/lib-file.c index 2e193f5..18d26c1 100644 --- a/project/src/lib-file.c +++ b/project/src/lib-file.c @@ -118,6 +118,19 @@ void SetSource ( ccp source ) /////////////////////////////////////////////////////////////////////////////// +void SetIdList ( ccp source ) +{ + #ifdef __CYGWIN__ + opt_id_list = IsWindowsDriveSpec(source) + ? AllocNormalizedFilenameCygwin(source,false) + : source; + #else + opt_id_list = source; + #endif +} + +/////////////////////////////////////////////////////////////////////////////// + void SetReference ( ccp source ) { #ifdef __CYGWIN__ @@ -888,9 +901,11 @@ file_format_t GetByMagicFF case LE_REFERENCE_MAGIC8_NUM: return FF_LEREF; case LE_STRINGS_MAGIC8_NUM: return FF_LESTR; case LE_SHA1REF_MAGIC8_NUM: return FF_SHA1REF; + case LE_SHA1ID_MAGIC8_NUM: return FF_SHA1ID; case LE_PREFIX_MAGIC8_NUM: return FF_PREFIX; case LE_MTCAT_MAGIC8_NUM: return FF_MTCAT; case LE_CT_SHA1_MAGIC8_NUM: return FF_CT_SHA1; + case USELTA_MAGIC_NUM: return FF_USE_LTA; case LTA_MAGIC_NUM: return FF_LTA; } } @@ -910,6 +925,8 @@ file_format_t GetByMagicFF case KRT_TEXT_MAGIC_NUM: return FF_KRT_TXT; case KRM_TEXT_MAGIC_NUM: return FF_KRM_TXT; + case GCTTXT_MAGIC_NUM: return FF_GCT_TXT; + case YAZ0_MAGIC_NUM: return FF_YAZ0; case YAZ1_MAGIC_NUM: return FF_YAZ1; case XYZ0_MAGIC_NUM: return FF_XYZ; @@ -1786,7 +1803,7 @@ int disable_patch_on_load = 0; // if >0: disable patching after loading static const KeywordTab_t opt_patch_tab[] = { - { 0, "CLEAR", "RESET", PFILE_M_ALL | PFILE_F_HIDE }, + { 0, "NONE", "CLEAR", PFILE_M_ALL | PFILE_F_HIDE }, { PFILE_M_DEFAULT, "DEFAULT", 0, PFILE_M_ALL | PFILE_F_HIDE }, { PFILE_M_ALL, "ALL", 0, PFILE_M_ALL | PFILE_F_HIDE }, { PFILE_F_LOG, "LOG", 0, 0 }, @@ -1811,7 +1828,7 @@ static const KeywordTab_t opt_patch_tab[] = /////////////////////////////////////////////////////////////////////////////// -int ScanOptPatchFile ( ccp arg ) +int ScanOptPatchFiles ( ccp arg ) { if (!arg) return 0; @@ -2614,6 +2631,13 @@ bool IsByMagicBRSUB ( const void * data, uint data_size ) /////////////////////////////////////////////////////////////////////////////// +bool CanBeTrackFF ( file_format_t ff ) +{ + return (uint)ff < FF_N && FileTypeTab[ff].attrib & FFT_TRACK; +} + +//----------------------------------------------------------------------------- + bool IsArchiveFF ( file_format_t ff ) { return (uint)ff < FF_N && FileTypeTab[ff].attrib & FFT_ARCHIVE; @@ -2704,15 +2728,15 @@ file_format_t GetCompressedFF ( file_format_t ff ) void SetCompressionFF ( - file_format_t ff_arch, // if >0: set 'opt_fform' - file_format_t ff_compr // if >0: set 'fform_compr' + file_format_t ff_arch, // if >=0: set 'opt_fform' + file_format_t ff_compr // if >=0: set 'fform_compr' // and 'fform_compr_force' ) { - if ( ff_arch > 0 ) + if ( ff_arch >= 0 ) opt_fform = ff_arch; - if ( ff_compr > 0 ) + if ( ff_compr >= 0 ) fform_compr = fform_compr_force = ff_compr; } @@ -4256,7 +4280,7 @@ const mkw_prefix_t * GetPrefixTable(void) /////////////////////////////////////////////////////////////////////////////// -const mkw_prefix_t * FindPrefix ( ccp pre, int pre_len, bool exact ) +const mkw_prefix_t * FindPrefix ( ccp pre, int pre_len ) { if ( !pre || !*pre ) return 0; @@ -4277,32 +4301,46 @@ const mkw_prefix_t * FindPrefix ( ccp pre, int pre_len, bool exact ) if (!tab) return 0; - for ( int i = 0; i < 2; i++ ) + int beg = 0; + int end = current_prefix_tab_len - 1; + while ( beg <= end ) { - int beg = 0; - int end = current_prefix_tab_len - 1; - while ( beg <= end ) - { - const uint idx = (beg+end)/2; - const mkw_prefix_t *p = tab + idx; - const int stat = strcmp(pre,p->prefix); - if ( stat < 0 ) - end = idx - 1 ; - else if ( stat > 0 ) - beg = idx + 1; - else - return p; - } + const uint idx = (beg+end)/2; + const mkw_prefix_t *p = tab + idx; + const int stat = strcmp(pre,p->prefix); + if ( stat < 0 ) + end = idx - 1 ; + else if ( stat > 0 ) + beg = idx + 1; + else + return p; + } + return 0; +} - if ( exact || i ) - return 0; +/////////////////////////////////////////////////////////////////////////////// - StringUpperS(pbuf,sizeof(pbuf),pre); - if (!strcmp(pbuf,pre)) - return 0; - pre = pbuf; +const mkw_prefix_t * GetPrefix ( ccp name, int name_len ) +{ + if (!name) + return 0; + + if ( name_len < 0 ) + name_len = strlen(name); + + ccp p1 = memchr(name,' ',name_len); + if (!p1) + return 0; + + ccp p2 = memchr(p1+1,' ',name+name_len-p1-1); + if (p2) + { + const mkw_prefix_t *res = FindPrefix(name,p2-name); + if (res) + return res; } - return 0; + + return FindPrefix(name,p1-name); } /////////////////////////////////////////////////////////////////////////////// @@ -5279,47 +5317,39 @@ void AnalyseSPF //--- game prefix +// [[mtcat]] spf->game_order = 999999; - p1 = memchr(name,' ',nlen); - if (p1) + const mkw_prefix_t *pre1 = GetPrefix(name,nlen); + if (pre1) { - const mkw_prefix_t *pre1 = FindPrefix(name,p1-name,true); -// [[mtcat]] - if (pre1) - { - spf->game1.ptr = name; - spf->game1.len = p1 - name; - spf->game = spf->game1; - spf->game1_color = pre1->color; - spf->game_order = 1000 * pre1->order; - int add_game = 998; - name = p1+1; - nlen = end - name; + spf->game1.ptr = name; + spf->game1.len = strlen(pre1->prefix); + spf->game = spf->game1; + spf->game1_color = pre1->color; + spf->game_order = 1000 * pre1->order; + int add_game = 998; + name += strlen(pre1->prefix) + 1; + nlen = end - name; - if ( pre1->flags & MPF_PREFIX1 ) + if ( pre1->flags & MPF_PREFIX1 ) + { + const mkw_prefix_t *pre2 = GetPrefix(name,nlen); + if ( pre2 && pre2->flags & MPF_PREFIX2 ) { - p1 = memchr(name,' ',nlen); - if (p1) - { - const mkw_prefix_t *pre2 = FindPrefix(name,p1-name,true); - if ( pre2 && pre2->flags & MPF_PREFIX2 ) - { - spf->game2.ptr = name; - spf->game2.len = p1 - name; - spf->game.len += spf->game2.len + 1; - spf->game2_color = pre2->color; - name = p1+1; - nlen = end - name; - add_game = 2*pre2->order; - } - } + spf->game2.ptr = name; + spf->game2.len = strlen(pre2->prefix); + spf->game.len += spf->game2.len + 1; + spf->game2_color = pre2->color; + name += strlen(pre1->prefix) + 1; + nlen = end - name; + add_game = 2*pre2->order; } - spf->game_order += add_game; - if (spf->boost.len) - spf->game_order++; } + spf->game_order += add_game; + if (spf->boost.len) + spf->game_order++; } - + //--- finally we have the pure name diff --git a/project/src/lib-image.h b/project/src/lib-image.h index 11ea17f..a5d7faa 100644 --- a/project/src/lib-image.h +++ b/project/src/lib-image.h @@ -1019,6 +1019,7 @@ uint MedianCut /////////////////////////////////////////////////////////////////////////////// /////////////// TPL support /////////////// /////////////////////////////////////////////////////////////////////////////// +// [[tpl_header_t]] #define TPL_MAGIC_NUM 0x0020AF30 @@ -1031,6 +1032,7 @@ typedef struct tpl_header_t __attribute__ ((packed)) tpl_header_t; /////////////////////////////////////////////////////////////////////////////// +// [[tpl_imgtab_t]] typedef struct tpl_imgtab_t { @@ -1040,6 +1042,7 @@ typedef struct tpl_imgtab_t __attribute__ ((packed)) tpl_imgtab_t; /////////////////////////////////////////////////////////////////////////////// +// [[tpl_pal_header_t]] typedef struct tpl_pal_header_t { @@ -1051,6 +1054,7 @@ typedef struct tpl_pal_header_t __attribute__ ((packed)) tpl_pal_header_t; /////////////////////////////////////////////////////////////////////////////// +// [[tpl_img_header_t]] typedef struct tpl_img_header_t { diff --git a/project/src/lib-image3.c b/project/src/lib-image3.c index d7aca93..b3782c9 100644 --- a/project/src/lib-image3.c +++ b/project/src/lib-image3.c @@ -1646,21 +1646,21 @@ void PrintImageHead { if ( long_count > 1 ) printf( "\n" - "%*sfile image mip width image attributes(Gray,Alpha,Palette)\n" - "%*stype type map height size ^ block file path\n" - "%*s%.79s\n", + "%*sfile image mip width image attributes(Gray,Alpha,Palette)\n" + "%*stype type map height size ^ block file path\n" + "%*s%.99s\n", line_indent,"", line_indent,"", line_indent,"", Minus300 ); else if ( long_count ) printf( "\n" - "%*sfile image mip width image\n" - "%*stype type map height size file path\n" - "%*s%.79s\n", + "%*sfile image mip width image\n" + "%*stype type map height size file path\n" + "%*s%.99s\n", line_indent,"", line_indent,"", line_indent,"", Minus300 ); else printf( "\n" "%*sfile image mip\n" "%*stype type map file path\n" - "%*s%.79s\n", + "%*s%.99s\n", line_indent,"", line_indent,"", line_indent,"", Minus300 ); } @@ -1735,7 +1735,7 @@ int PrintImage else wcol = hcol = ""; - printf(" %s%4u%s*%s%-4u%s %7u", + printf(" %s%4u%s*%s%-4u%s %8u", wcol, img.width, *wcol ? TermTextModeReset : "", hcol, img.height, *hcol ? TermTextModeReset : "", img.xwidth * img.xheight * geo->bits_per_pixel / 8 ); diff --git a/project/src/lib-kcl.c b/project/src/lib-kcl.c index 6d9b534..91ecf76 100644 --- a/project/src/lib-kcl.c +++ b/project/src/lib-kcl.c @@ -3947,7 +3947,7 @@ enumError ScanRawKCL KCL_ACTION_LOG(kcl,"ScanRawKCL() %s\n",kcl->fname); kcl->fform = FF_KCL; - if (!ka.order_ok) + if ( !ka.order_ok && ErrorLogEnabled() ) ERROR0(ERR_WARNING, "KCL: Unusual section order: %d\n",ka.order_value); @@ -4158,8 +4158,10 @@ enumError ScanKCL default: ClearKCL(kcl,init_kcl); - return ERROR0(ERR_INVALID_DATA, - "No KCL or OBJ file: %s\n", kcl->fname ? kcl->fname : "?"); + if ( ErrorLogEnabled() ) + ERROR0(ERR_INVALID_DATA, + "No KCL or OBJ file: %s\n", kcl->fname ? kcl->fname : "?"); + return ERR_INVALID_DATA; } kcl->fform = fform; const bool rm_octree = kcl->octree_valid && KCL_MODE & KCLMD_NEW; diff --git a/project/src/lib-kmp.c b/project/src/lib-kmp.c index 03576be..93df251 100644 --- a/project/src/lib-kmp.c +++ b/project/src/lib-kmp.c @@ -2042,7 +2042,7 @@ void InitializeKMP ( kmp_t * kmp ) memset(kmp,0,sizeof(*kmp)); kmp->fname = EmptyString; - kmp->nowarn_format = verbose <= -3; + kmp->nowarn_format = ErrorLogDisabled(); uint sect; for ( sect = 0; sect < KMP_N_SECT; sect++ ) @@ -2428,7 +2428,7 @@ static const void * get_kmp_pointer uint max = ( (u8*)data + data_size - elem ) / kmp_entry_size[sect]; if ( n > max ) { - if ( verbose >= -2 ) + if ( ErrorLogEnabled() ) ERROR0(ERR_WARNING, "Number of [%s] entries exceed file size (%u>%u): %s\n", kmp_section_name[sect].name1, n, max, kmp->fname ); @@ -2468,7 +2468,7 @@ static uint test_unknown_sections const bool is_shrinked = hi.n_sect < KMP_N_SECT; if (res_shrinked) *res_shrinked = is_shrinked; - if ( is_shrinked ) + if ( is_shrinked && ErrorLogEnabled() ) ERROR0(ERR_WARNING, "KMP: Is shrinked => some sections missed, some moved: %s\n", fname ); @@ -3013,8 +3013,10 @@ enumError ScanKMP default: if (init_kmp) InitializeKMP(kmp); - return ERROR0(ERR_INVALID_DATA, - "No KMP file: %s\n", kmp->fname ? kmp->fname : "?"); + if ( ErrorLogEnabled() ) + ERROR0(ERR_INVALID_DATA, + "No KMP file: %s\n", kmp->fname ? kmp->fname : "?"); + return ERR_INVALID_DATA; } PRINT("BATTLE-MODE: %d [opt=%d,isa=%d]\n", diff --git a/project/src/lib-lecode.c b/project/src/lib-lecode.c index 0c91ed8..de4fb20 100644 --- a/project/src/lib-lecode.c +++ b/project/src/lib-lecode.c @@ -79,7 +79,7 @@ ccp GetLecodeSupportWarning ( const le_analyze_t *ana ) DASSERT(ana); return !( ana->valid & LE_HEAD_VALID ) ? "LE-CODE file header is invalid" - : GetEncodedVersion() < ana->szs_required + : GetNumericVersion() < ana->szs_required ? PrintCircBuf("SZS Tools v%s or younger required",DecodeVersion(ana->szs_required)) : IsLecodeSupported(ana->valid) ? 0 @@ -120,6 +120,7 @@ int ScanOptTrackSource ( ccp arg, int arg_len, int mode ) && !FindParamField(&opt_track_source,path) ) { +// [[%04x-]] PRINT("APPEND TRACK_SOURCE: 0x%03x %s\n",mode,path); if (!opt_track_source.field) InitializeParamField(&opt_track_source); @@ -1351,6 +1352,7 @@ static void NormalizeLPAR ( le_lpar_t * lp, int build ) lp->block_textures = lp->block_textures > 0; lp->staticr_points = lp->staticr_points > 0; lp->developer_modes = lp->developer_modes > 0; + lp->slot_04x = lp->slot_04x > 0; if ( build >= 37 ) { @@ -1484,6 +1486,8 @@ static void CopyLPAR2Data ( le_analyze_t * ana ) if ( offsetof(le_binpar_v1_t,cup_icon_size) < ana->param_size ) h->cup_icon_size = lp->cup_icon_size; + if ( offsetof(le_binpar_v1_t,slot_04x) < ana->param_size ) + h->slot_04x = lp->slot_04x; // [[new-lpar]] } @@ -1648,6 +1652,7 @@ enumError WriteSectionLPAR ,lpar->min_online_sec ,PrintHMS(0,0,lpar->min_online_sec,LE_VIEW_ONLINE_HMS," # ",0) ,lpar->max_online_sec ,PrintHMS(0,0,lpar->max_online_sec,LE_VIEW_ONLINE_HMS," # ",0) ,lpar->cup_icon_size + ,lpar->slot_04x ,lpar->developer_modes ,lpar->dev_mode1 ,lpar->dev_mode2 @@ -1682,6 +1687,7 @@ enumError WriteSectionLPAR "MIN-ONLINE-SEC = %3u%s\r\n" "MAX-ONLINE-SEC = %3u%s\r\n" "CUP-ICON-SIZE = %u\r\n" + "SLOT-04X = %u\r\n" "\r\n" "DEVELOPER-MODES = %u\r\n" // always last 4 settings "DEV-MODE1 = %u\r\n" @@ -1710,6 +1716,7 @@ enumError WriteSectionLPAR ,lpar->min_online_sec ,PrintHMS(0,0,lpar->min_online_sec,LE_VIEW_ONLINE_HMS," # ",0) ,lpar->max_online_sec ,PrintHMS(0,0,lpar->max_online_sec,LE_VIEW_ONLINE_HMS," # ",0) ,lpar->cup_icon_size + ,lpar->slot_04x ,lpar->developer_modes ,lpar->dev_mode1 ,lpar->dev_mode2 @@ -2020,7 +2027,7 @@ enumError AnalyzeLEBinary break; } - if ( GetEncodedVersion() >= ana->szs_required ) + if ( GetNumericVersion() >= ana->szs_required ) ana->valid |= LE_HEAD_VERSION; snprintf(ana->identifier,sizeof(ana->identifier), @@ -2163,11 +2170,6 @@ enumError AnalyzeLEBinary ana->lpar.drag_blue_shell = p->drag_blue_shell; ana->lpar.thcloud_frames = ntohs(p->thcloud_frames); } -// else -// { -// ana->lpar.drag_blue_shell = 1; -// ana->lpar.thcloud_frames = 300; -// } if ( param_size >= sizeof(le_binpar_v1_269_t) ) { @@ -2208,6 +2210,12 @@ enumError AnalyzeLEBinary ana->lpar.cup_icon_size = p->cup_icon_size; } + if ( param_size >= sizeof(le_binpar_v1_277_t) ) + { + le_binpar_v1_277_t *p = (le_binpar_v1_277_t*)(data+off_param); + ana->lpar.slot_04x = p->slot_04x; + } + // [[new-lpar]] break; @@ -2713,6 +2721,7 @@ static le_cup_track_t * DumpLECup if (warnings) *warnings = 0; + ccp format = ana->n_slot < 0x1000 ? " %s%3x%s%s" : " %s%4x%s%s"; uint tr; for ( tr = 0; tr < n_track; tr++ ) { @@ -2725,7 +2734,7 @@ static le_cup_track_t * DumpLECup default: highlight = IsMkwSpecial(tid); break; } - fprintf(f," %s%3x%s%s", + fprintf(f,format, highlight ? col->info : "", tid, highlight ? col->reset : "", @@ -2819,6 +2828,8 @@ static void DumpLETracks //--- battle cups + ccp format_cup = ana->n_cup_arena < 100 && ana->n_cup_track < 1000 ? "%*sCup %3u:" : "%*sCup %4u:"; + if ( ana->n_cup_arena && ana->cup_arena ) { fprintf(f,"\n%*s%s" "%u cup%s with %u battle arenas:%s\n", @@ -2832,7 +2843,7 @@ static void DumpLETracks { if ( cp[0] || cp[1] || cp[2] || cp[3] || cp[4] ) { - fprintf(f,"%*s" "Cup %3u:",indent,"",cup); + fprintf(f,format_cup,indent,"",cup); uint warnings; DumpLECup(f,ana,cp,5,col,CHECK_ARENA,&warnings,done); if (warnings) @@ -2865,7 +2876,7 @@ static void DumpLETracks { if ( cp[0] || cp[1] || cp[2] || cp[3] ) { - fprintf(f,"%*s" "Cup %3u:",indent,"",cup); + fprintf(f,format_cup,indent,"",cup); uint warnings; DumpLECup(f,ana,cp,4,col,CHECK_TRACK,&warnings,done); if (warnings) @@ -3066,8 +3077,9 @@ static void DumpLEUsageMap { if (!(slot&63)) { - fprintf(f,"%s\n%*s%3x: ",col->reset,indent,"",slot); - prev_col = 0; + fprintf(f,"%s\n%*s",col->reset,indent,""); + fprintf(f, max_view < 0x1000 ? "%3x: " : "%4x: ", slot ); + prev_col = 0; } else if (!(slot&7)) fputc(' ',f); @@ -3239,7 +3251,7 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana ) if (ana->szs_required) { - const bool valid = GetEncodedVersion() >= ana->szs_required; + const bool valid = GetNumericVersion() >= ana->szs_required; fprintf(f, "%*s" "Required SZS: v%-*s (%s%s%s)\n" ,indent,"" @@ -3251,7 +3263,7 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana ) if (ana->szs_recommended) { - const bool valid = GetEncodedVersion() >= ana->szs_recommended; + const bool valid = GetNumericVersion() >= ana->szs_recommended; fprintf(f, "%*s" "Recommended SZS: v%-*s (%s%s%s)\n" ,indent,"" @@ -3279,14 +3291,20 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana ) { const le_binary_param_t *h = ana->param; DASSERT(h); + const uint lpar_size = ntohl(h->size); fprintf(f, "%*s%s" "Parameters (magic: %.4s):%s\n" "%*s" "LPAR Version: %u\n" "%*s" "LPAR size: %x/hex = %u bytes\n" ,indent-2,"", col.heading, h->magic, col.reset ,indent,"", ntohl(h->version) - ,indent,"", ntohl(h->size), ntohl(h->size) + ,indent,"", lpar_size, lpar_size ); + + if ( sizeof(le_binpar_v1_t) < lpar_size ) + fprintf(f,"%*s" " Supported size: %s%zx/hex = %zu bytes Warning!%s\n", + indent,"", col.warn, + sizeof(le_binpar_v1_t), sizeof(le_binpar_v1_t), col.reset ); } switch (ana->param_vers) @@ -3414,6 +3432,10 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana ) fprintf(f,"%*s" "Cup image size: %u x %u pixels\n" ,indent,"", h->cup_icon_size, h->cup_icon_size ); + if ( ana->param_size >= sizeof(le_binpar_v1_277_t) ) + fprintf(f,"%*s" "Slot format: %u = \"%%0%ux\"\n" + ,indent,"", h->slot_04x, h->slot_04x ? 4 : 3 ); + // [[new-lpar]] #if 0 // for later use @@ -3559,17 +3581,27 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyze_t *ana ) ); if ( ana->course_par ) + { fprintf(f, "%*s" "Course magic: %s\n" "%*s" "Total track slots: %4u / %4u%s\n" - "%*s" "Used racing slots: %4u / %4u\n" - "%*s" "Used battle slots: %4u / %4u\n" ,indent,"", ana->course_par->magic ,indent,"", ana->n_slot, ana->max_slot, ana->n_slot > ana->max_slot ? fail : "" + ); + + if ( LE_CODE_MAX_TRACKS < ana->max_slot ) + fprintf(f, + "%*s" " Supported slots:%s%12u Warning!%s\n", + indent,"", col.warn, LE_CODE_MAX_TRACKS, col.reset ); + + fprintf(f, + "%*s" "Used racing slots: %4u / %4u\n" + "%*s" "Used battle slots: %4u / %4u\n" ,indent,"", ana->used_rslots, ana->max_rslots ,indent,"", ana->used_bslots, ana->max_bslots ); + } } if ( long_count > 0 ) @@ -3631,13 +3663,17 @@ void TransferTrackFile struct stat st; if ( !stat(src,&st) && S_ISREG(st.st_mode) ) { - snprintf(dest,sizeof(dest),"%s/%03x.szs",opt_track_dest,dest_slot); +// [[%04x+]] + ccp format = lecode_04x ? "%s/%04x.szs" : "%s/%03x.szs"; + snprintf(dest,sizeof(dest),format,opt_track_dest,dest_slot); if (!TransferFile(log,dest,src,ptr->num|flags,0666)) { PathCatBufPPE(src,sizeof(src),ptr->key,src_name,"_d.szs"); if ( !stat(src,&st) && S_ISREG(st.st_mode) ) { - snprintf(dest,sizeof(dest),"%s/%03x_d.szs",opt_track_dest,dest_slot); +// [[%04x+]] + ccp format = lecode_04x ? "%s/%04x_d.szs" : "%s/%03x_d.szs"; + snprintf(dest,sizeof(dest),format,opt_track_dest,dest_slot); TransferFile(log,dest,src,ptr->num|flags,0666); } } @@ -3661,13 +3697,17 @@ void TransferTrackBySlot flags &= TFMD_M_FLAGS; char dest[PATH_MAX], src[PATH_MAX]; - snprintf( dest, sizeof(dest), "%s/%03x.szs", opt_track_dest, dest_slot ); - snprintf( src, sizeof(src), "%s/%03x.szs", opt_track_dest, src_slot ); +// [[%04x+]] x2 + ccp format = lecode_04x ? "%s/%04x.szs" : "%s/%03x.szs"; + snprintf( dest, sizeof(dest), format, opt_track_dest, dest_slot ); + snprintf( src, sizeof(src), format, opt_track_dest, src_slot ); if (!TransferFile(log,dest,src,TFMD_LINK|flags,0666)) { - snprintf( dest, sizeof(dest), "%s/%03x_d.szs", opt_track_dest, dest_slot ); - snprintf( src, sizeof(src), "%s/%03x_d.szs", opt_track_dest, src_slot ); +// [[%04x+]] x2 + ccp format = lecode_04x ? "%s/%04x_d.szs" : "%s/%03x_d.szs"; + snprintf( dest, sizeof(dest), format, opt_track_dest, dest_slot ); + snprintf( src, sizeof(src), format, opt_track_dest, src_slot ); TransferFile(log,dest,src,TFMD_LINK|flags,0666); } } @@ -4100,7 +4140,7 @@ enumError PatchLECODE ( le_analyze_t * ana ) if ( ana->header_vers >= 5 && memcmp(ana->data,saved,ana->data_size) ) { le_binary_head_v5_t *h5 = (le_binary_head_v5_t*)ana->data; - h5->edit_version = htonl(GetEncodedVersion()); + h5->edit_version = htonl(GetNumericVersion()); h5->edit_time = htonl(GetTimeSec(false)); } @@ -4124,15 +4164,12 @@ static enumError ScanTextLPAR_PARAM DASSERT(si); PRINT(">> ScanTextLPAR_PARAM(pass=%u)\n",is_pass2+1); - //--- setup data - DEFINE_VAR(use_avail_txt); - int limit_mode = -1; - + lpar->new_limit_mode = -1; const ScanParam_t ptab[] = { - { "LIMIT-MODE", SPM_INT, &limit_mode }, + { "LIMIT-MODE", SPM_INT, &lpar->new_limit_mode }, { "DEVELOPER-MODES", SPM_U8, &lpar->developer_modes }, { "DEV-MODE1", SPM_U8, &lpar->dev_mode1 }, { "DEV-MODE2", SPM_U8, &lpar->dev_mode2 }, @@ -4160,12 +4197,14 @@ static enumError ScanTextLPAR_PARAM { "MIN-ONLINE-SEC", SPM_U16, &lpar->min_online_sec }, { "MAX-ONLINE-SEC", SPM_U16, &lpar->max_online_sec }, { "CUP-ICON-SIZE", SPM_U8, &lpar->cup_icon_size }, + { "SLOT-04X", SPM_U8, &lpar->slot_04x }, // [[new-lpar]] - { "USE-AVAIL-TXT", SPM_VAR, &use_avail_txt }, // [[obsolete]] 2023-09 {0} }; + DefineScanParamList(&si->gvar,"LPAR$",ptab); + //--- main loop @@ -4175,19 +4214,15 @@ static enumError ScanTextLPAR_PARAM if ( !ch || ch == '[' ) break; - ScanParamSI(si,ptab); + ScanParamDefSI(si,ptab,&si->gvar,"LPAR$"); } CheckLevelSI(si); - if ( !si->no_warn && use_avail_txt.mode != VAR_UNSET ) - ERROR0(ERR_WARNING, - "Don't use deprecated LPAR setting USE-AVAIL-TXT: %s", - si->cur_file->name); - FreeV(&use_avail_txt); - - if ( limit_mode >= 0 ) - LimitToLparMode(lpar,limit_mode); - + if ( lpar->new_limit_mode >= 0 ) + { + lpar->limit_mode = lpar->new_limit_mode; + LimitToLparMode(lpar,lpar->limit_mode); + } return ERR_OK; } diff --git a/project/src/lib-lecode.h b/project/src/lib-lecode.h index f231b85..abe5398 100644 --- a/project/src/lib-lecode.h +++ b/project/src/lib-lecode.h @@ -316,6 +316,7 @@ u_sec_t GetRefTimeLECODE ( mem_t lecode ); typedef struct le_lpar_t { lpar_mode_t limit_mode; // limit of other params + lpar_mode_t new_limit_mode; // scan helper u16 thcloud_frames; // number of frames a player is small after thundercloud hit u16 default_online_sec; // default time limit in seconds @@ -345,7 +346,8 @@ typedef struct le_lpar_t u8 block_textures; // >0: enable blocking of recent texture hacks u8 staticr_points; // >0: use points definied by StaticR.rel u8 use_avail_txt; // unused: // >0: use file "avail.txt" to detect dir "Race/Common/###/" - u8 cup_icon_size; // size of single cup icon, usually 128 (128x128) + u8 cup_icon_size; // size of single cup icon, usually 128 (128x128) + u8 slot_04x; // format of slots: 0:%03x, 1:%04x u8 debug_mode; // debug mode u8 debug_predef[LEDEB__N_CONFIG]; @@ -1235,9 +1237,115 @@ __attribute__ ((packed)) le_binpar_v1_276_t; _Static_assert(sizeof(le_binpar_v1_276_t)==0x276,"le_binpar_v1_276_t"); //----------------------------------------------------------------------------- +// [[le_binpar_v1_277_t]] + +typedef struct le_binpar_v1_277_t +{ + //--- le_binary_param_t + + /*000*/ char magic[8]; // LE_PARAM_MAGIC ("LPAR") + /*008*/ u32 version; // always 1 for v1 + /*00c*/ u32 size; // size (and minor version) + /*010*/ u32 off_eod; // offset of end-of-data + + //--- le_binpar_v1_35_t + + /*014*/ u32 off_cup_par; // offset to cup param + /*018*/ u32 off_cup_track; // offset of cup-track list + /*01c*/ u32 off_cup_arena; // offset of cup-arena list + /*020*/ u32 off_course_par; // offset of course param + /*024*/ u32 off_property; // offset of property list + /*028*/ u32 off_music; // offset of music list + /*02c*/ u32 off_flags; // offset of flags + + /*030*/ u8 engine[3]; // 100cc, 150cc, mirror (sum always 100) + /*033*/ u8 enable_200cc; // TRUE: 200C enabled => 150cc, 200cc, mirror + /*034*/ u8 enable_perfmon; // >0: performance monitor enabled; >1: for dolphin too + + //--- le_binpar_v1_37_t + + /*035*/ u8 enable_custom_tt; // TRUE: time trial for cusotm tracks enabled + /*036*/ u8 enable_xpflags; // TRUE: extended presence flags enabled + + //--- le_binpar_v1_f8_t + + /*037*/ u8 block_track; // block used track for 0.. tracks + /*038*/ u16 chat_mode_1[BMG_N_CHAT]; // mode for each chat message + + //--- le_binpar_v1_1b8_t + + /*0f8*/ u16 chat_mode_2[BMG_N_CHAT]; // mode for each chat message + + //--- le_binpar_v1_1bc_t + + /*1b8*/ u8 enable_speedo; // speedometer selection (0..2), see SPEEDO_* + /*1b9*/ u8 no_speedo_if_debug; // if bit is set: suppress speedometer + /*1ba*/ u8 debug_mode; // debug mode (0..), see DEBUGMD_* + + //--- le_binpar_v1_260_t + + /*1bb*/ u8 item_cheat; // 0:disabled, 1:enabled + + /*1bc*/ u8 debug_predef[LEDEB__N_CONFIG]; + // information about used predefined mode + /*1c0*/ u32 debug[LEDEB__N_CONFIG][LEDEB__N_LINE]; + // debug line settings, see LEDEB_* + + //--- le_binpar_v1_264_t + + /*260*/ u8 cheat_mode; // 0:off, 1:debug only, 2:allow all + /*261*/ u8 drag_blue_shell; // >0: allow dragging of blue shell + /*262*/ u16 thcloud_frames; // number of frames a player is small after thundercloud hit + + //--- le_binpar_v1_269_t + + /*264*/ u8 bt_worldwide; // >0: enable worldwide battles + /*265*/ u8 vs_worldwide; // >0: enable worldwide versus races + /*266*/ u8 bt_textures; // &1: enable texture hacks for battles, &2:alternable + /*267*/ u8 vs_textures; // &1: enable texture hacks for versus, &2:alternable + /*268*/ u8 block_textures; // >0: enable blocking of recent texture hacks + + //--- le_binpar_v1_26a_t + + /*269*/ u8 staticr_points; // >0: use points definied by StaticR.rel + + //--- le_binpar_v1_270_t + + /*26a*/ u16 default_online_sec; // default time limit in seconds + /*26c*/ u16 min_online_sec; // minimal time limit in seconds, that can be set by LEX:SET1 + /*26e*/ u16 max_online_sec; // maximal time limit in seconds, that can be set by LEX:SET1 + + //--- le_binpar_v1_274_t + + /*270*/ u8 developer_modes; // >0: developer settings are recognized and accepted. + /*271*/ u8 dev_mode1; // First developer mode + /*272*/ u8 dev_mode2; // Second developer mode + /*273*/ u8 dev_mode3; // Third developer mode + + //--- le_binpar_v1_275_t + // not longer used + /*274*/ u8 use_avail_txt; // >0: use file "avail.txt" to detect dir "Race/Common/###/" + + //--- le_binpar_v1_276_t + + /*275*/ u8 cup_icon_size; // Size of single cup icon, usually 128 (128x128) + + //--- le_binpar_v1_277_t + + /*276*/ u8 slot_04x; // format of slots: 0:%03x, 1:%04x + + //--- END + + /*277*/ +} +__attribute__ ((packed)) le_binpar_v1_277_t; + +_Static_assert(sizeof(le_binpar_v1_277_t)==0x277,"le_binpar_v1_277_t"); + +//----------------------------------------------------------------------------- // [[le_binpar_v1_t]] [[new-lpar]] -typedef struct le_binpar_v1_276_t le_binpar_v1_t; +typedef struct le_binpar_v1_277_t le_binpar_v1_t; // /////////////////////////////////////////////////////////////////////////////// diff --git a/project/src/lib-ledis.c b/project/src/lib-ledis.c index 1a1145b..6939a77 100644 --- a/project/src/lib-ledis.c +++ b/project/src/lib-ledis.c @@ -226,6 +226,15 @@ static KeywordTab_t keywords_leo[] = { LEO_BRIEF, "BRIEF", 0, 0 }, { LEO_AUTO_PATH, "AUTO-PATH", "AUTOPATH", 0 }, + { LEO_PROGRESS0, "PR0", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS1, "PR1", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS2, "PR2", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS5, "PR5", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS10, "PR10", "PROGRESS", LEO_M_PROGRESS }, + { LEO_PROGRESS20, "PR20", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS30, "PR30", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS60, "PR60", 0, LEO_M_PROGRESS }, + { LEO_HELP, "HELP", "H", 0 }, { LEO_CUT_ALL, "CUT-ALL", "CUTALL", 0 }, @@ -255,12 +264,29 @@ le_options_t ScanLEO ( le_options_t current, ccp arg, ccp err_info ) keywords_leo[0].id = SetupDefaultLEO(); s64 stat = ScanKeywordList(arg,keywords_leo,0,true,0,current,err_info,ERR_SYNTAX); - PRINT0("ScanLEO(%#05x,%s) => %#05x\n",current,arg,(le_options_t)stat); + PRINT0("ScanLEO(%#lx,%s) => %#llx, progress=%lld\n",current,arg,stat,GetProgressMSecLEO(stat)); return stat != -1 ? stat : current; } /////////////////////////////////////////////////////////////////////////////// +u_msec_t GetProgressMSecLEO ( le_options_t opt ) +{ + switch ( (uint)opt & LEO_M_PROGRESS ) + { + case LEO_PROGRESS1: return 1000; + case LEO_PROGRESS2: return 2000; + case LEO_PROGRESS5: return 5000; + case LEO_PROGRESS10: return 10000; + case LEO_PROGRESS20: return 20000; + case LEO_PROGRESS30: return 30000; + case LEO_PROGRESS60: return 60000; + } + return 0; +} + +/////////////////////////////////////////////////////////////////////////////// + bool IsInputNameValidLEO ( ccp name, le_options_t opt ) { return !name || !*name @@ -1520,7 +1546,8 @@ ccp GetPathL2 ( le_distrib_t *ld, const le_track_t *lt, le_options_t opt, ccp re } char buf[20]; - snprintf(buf,sizeof(buf),"%03x",lt->track_slot); +// [[%04x+]] + snprintf(buf,sizeof(buf), lecode_04x ? "%04x" : "%03x", lt->track_slot ); TransferMode_t tfer_mode; ccp found = FindTrackFile(buf,&tfer_mode); if (found) @@ -1545,7 +1572,9 @@ ccp GetPathL2 ( le_distrib_t *ld, const le_track_t *lt, le_options_t opt, ccp re if ( len > 0 && path[len-1] == '/' ) { char newpath[PATH_MAX]; - snprintf(newpath,sizeof(newpath),"%s%03x.szs",path,lt->track_slot); +// [[%04x+]] + ccp format = lecode_04x ? "%s%04x.szs" : "%s%03x.szs"; + snprintf(newpath,sizeof(newpath),format,path,lt->track_slot); SetPathLT((le_track_t*)lt,&par,newpath); return lt->path; } @@ -4010,6 +4039,52 @@ void UpdateCupsLD ( le_distrib_t *ld ) // /////////////////////////////////////////////////////////////////////////////// +/////////////// le_distrib_t: progress /////////////// +/////////////////////////////////////////////////////////////////////////////// + +void ClearProgressLD ( le_distrib_t *ld ) +{ + DASSERT(ld); + ld->show_progress = 0; + ld->progress_count = 0; + ld->first_progress_msec = ld->last_progress_msec = GetTimerMSec(); +} + +/////////////////////////////////////////////////////////////////////////////// + +void SetupProgressLD ( le_distrib_t *ld ) +{ + DASSERT(ld); + ClearProgressLD(ld); + + ld->show_progress = GetProgressMSecLEO(ld->spar.opt); + PRINT0("ld.show_progress = %lld\n",ld->show_progress); +} + +/////////////////////////////////////////////////////////////////////////////// + +static void ShowProgressTracksLD ( le_distrib_t *ld, bool force ) +{ + DASSERT(ld); + if ( ld->show_progress > 0 && ld->progress_count > 0 ) + { + const u_msec_t now = GetTimerMSec(); + if ( now >= ld->last_progress_msec + ld->show_progress + || force && now >= ld->last_progress_msec + 1000 ) + { + ld->last_progress_msec = now; + fprintf(stdlog, + "%s%u file%s scanned in %llu seconds.\n", + verbose >= 1 ? " > " : " - ", + ld->progress_count, ld->progress_count == 1 ? "" : "s", + ( now - ld->first_progress_msec ) / 1000 ); + fflush(stdlog); + } + } +} + +// +/////////////////////////////////////////////////////////////////////////////// /////////////// le_distrib_t: manage archive /////////////// /////////////////////////////////////////////////////////////////////////////// // [[track-arch]] @@ -4144,6 +4219,9 @@ enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw ) if ( !ld || !raw ) return ERR_MISSING_PARAM; + ShowProgressTracksLD(ld,false); + ld->progress_count++; + char buf[LE_TRACK_STRING_MAX+1], fname_buf[LE_TRACK_STRING_MAX+1]; exmem_dest_t exdest = { .buf = buf, .buf_size = sizeof(buf), .try_circ = true }; @@ -4156,15 +4234,25 @@ enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw ) { if (!spf.f_d.len) { - if ( ld->spar.opt & LEO_HEX2SLOT && spf.f_name.len == 3 ) + if ( ld->spar.opt & LEO_HEX2SLOT && ( spf.f_name.len == 3 || spf.f_name.len == 4 )) { const uint slot = str2ul(spf.f_name.ptr,0,16); +// [[%04x+]] snprintf(fname_buf,sizeof(fname_buf),"%03x",slot); if (!strncasecmp(spf.f_name.ptr,fname_buf,3)) { PRINT0("HEX: %.3s\n",spf.f_name.ptr); force_slot = slot; } + else + { + snprintf(fname_buf,sizeof(fname_buf),"%04x",slot); + if (!strncasecmp(spf.f_name.ptr,fname_buf,4)) + { + PRINT0("HEX: %.4s\n",spf.f_name.ptr); + force_slot = slot; + } + } } if ( ld->spar.opt & LEO_NAME2SLOT ) @@ -4178,7 +4266,7 @@ enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw ) } } } - + if ( !IsUsableXcodeSlot(force_slot,ld->spar.opt&LEO_CT_SLOTS) ) { ResetSPF(&spf); @@ -4563,7 +4651,8 @@ void ImportAnaLD ( le_distrib_t *ld, const le_analyze_t *ana ) if (ana->flags) lt->flags = ana->flags[slot]; char name[30]; - snprintf(name,sizeof(name),"_%03x",slot); +// [[%04x+]] + snprintf(name,sizeof(name), lecode_04x ? "_%04x" : "_%03x", slot ); SetNameLT(lt,0,name); } } @@ -4830,7 +4919,7 @@ enumError ImportRawDataLD if (!ld->is_initialized) InitializeLD(ld); - if ( raw->fform != FF_U8 ) + if ( raw->fform != FF_U8 && raw->fform != FF_WU8 ) CloseArchLogLD(ld); if ( logging >= 2 && raw->fname ) @@ -4908,6 +4997,7 @@ enumError ImportRawDataLD break; case FF_U8: + case FF_WU8: err = AddToArchLD(ld,raw); break; @@ -5001,9 +5091,12 @@ enumError ImportFileLD struct stat st; if ( use_wildcard && HaveWildcards(MemByString(fname)) && stat(fname,&st) ) { + SetupProgressLD(ld); PRINT0(" > SEARCH %s\n",fname); struct search_t param = { .ld = ld }; SearchPaths(fname,0,WM__DEFAULT,search_func,¶m); + ShowProgressTracksLD(ld,true); + ClearProgressLD(ld); return param.count ? param.max_err : ERROR0(ERR_CANT_OPEN,"File not found: %s\n",fname); @@ -7985,22 +8078,53 @@ enumError CreateDistribLD ( FILE *f, le_distrib_t *ld, bool use_xname ) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// +static void progress_lta ( lta_manager_t *lm, bool force ) +{ + DASSERT(lm); + if ( lm->show_progress > 0 && lm->base_slot >= 0 ) + { + const u_msec_t now = GetTimerMSec(); + if ( now >= lm->last_log_msec + lm->show_progress + || force && now >= lm->last_log_msec + 1000 ) + { + lm->last_log_msec = now; + fprintf(stdlog, + "%s%u node%s with %u track%s processed in %llu seconds.\n", + verbose >= 1 ? " > " : " - ", + lm->progress_nodes, lm->progress_nodes == 1 ? "" : "s", + lm->progress_tracks, lm->progress_tracks == 1 ? "" : "s", + ( now - lm->start_msec ) / 1000 ); + fflush(stdlog); + } + } +} + +//----------------------------------------------------------------------------- + static enumError close_lta ( lta_manager_t *lm ) { enumError err = ERR_OK; + if ( lm->base_slot >= 0 && lm->F.f ) { - const int n_slots = lm->last_slot + 1 - lm->base_slot; - const uint node_size = ALIGN32( n_slots * sizeof(lta_node_t), opt_align_lta ); + progress_lta(lm,true); + + const int n_slots = lm->last_slot + 1 - lm->base_slot; + const uint node_size = ALIGN32( n_slots * sizeof(lta_node_t), opt_align_lta ); + const uint ext_off = lm->data_offset + node_size; + const uint ext_size = lm->append_ext ? GetFastBufLen(&lm->ext) : 0; + const uint file_size = ALIGN32( ext_off + ext_size, opt_align_lta ); lta_header_t head = { .magic = hton64(LTA_MAGIC_NUM), .version = htonl(LTA_VERSION), .head_size = htonl(sizeof(lta_header_t)), - .file_size = htonl(lm->data_offset+node_size), + .file_size = htonl(file_size), .node_off = htonl(lm->data_offset), .node_size = htonl(sizeof(lta_node_t)), + .ext_off = htonl(ext_off), + .ext_size = htonl(ext_size), .base_slot = htonl(lm->base_slot), .n_slots = htonl(n_slots), }; @@ -8010,7 +8134,19 @@ static enumError close_lta ( lta_manager_t *lm ) WriteFileAt(&lm->F,&lm->current_offset,lm->data_offset,lm->node,node_size); lm->data_offset += node_size; - SetFileSize(&lm->F,&lm->current_offset,lm->data_offset); + if (ext_size) + { + WriteFileAt(&lm->F,&lm->current_offset,ext_off,lm->ext.buf,ext_size); + lm->data_offset = ext_off + ext_size; + } + + const int fill_size = file_size - lm->current_offset; + if ( fill_size > 0 ) + { + memset(lm->node,0,sizeof(lm->node)); // use as temporary buffer + WriteFileAt(&lm->F,&lm->current_offset,lm->current_offset,lm->node,fill_size); + } + SetFileSize(&lm->F,&lm->current_offset,file_size); if ( verbose >= 0 ) { @@ -8045,6 +8181,7 @@ static enumError close_lta ( lta_manager_t *lm ) //--- reset data + ResetFastBuf(&lm->ext); ResetFile(&lm->F,0); ResetEML(&lm->stored_szs); ResetEML(&lm->stored_lfl); @@ -8060,6 +8197,11 @@ static enumError close_lta ( lta_manager_t *lm ) lm->szs_dup_count = 0; lm->lfl_dup_count = 0; + lm->progress_nodes = 0; + lm->progress_tracks = 0; + lm->start_msec = + lm->last_log_msec = GetTimerMSec(); + memset(lm->node,0,sizeof(lm->node)); return err; } @@ -8078,6 +8220,8 @@ static void load_file_lta DASSERT(rec); DASSERT(path); + progress_lta(lm,false); + uint fsize = rec->szs_size; if (!fsize) return; @@ -8092,6 +8236,8 @@ static void load_file_lta u8 *fdata = lm->buf; if (!LoadFILE(fname,0,0,fdata,fsize,0,0,false)) { + lm->progress_tracks++; + if (lm->rm_source) InsertStringField(&lm->ld->remove_files,fname,false); @@ -8100,33 +8246,38 @@ static void load_file_lta PRINT0("data=%d,%zu, cdata=data=%d,%zu, ff=%s\n", szs.data!=0, szs.size,szs.cdata!=0, szs.csize, GetNameFF_SZS(&szs) ); - if ( lm->force_ff != FF_UNKNOWN ) + if ( lm->force_ff != FF_UNKNOWN && lm->force_ff != szs.fform_file ) { - if ( lm->force_ff != szs.fform_file ) + enumError err = CompressWith(&szs,COMPR_DEFAULT,false,lm->force_ff,FF_UNKNOWN); + if ( !err && szs.cdata ) { - enumError err = CompressWith(&szs,COMPR_DEFAULT,false,lm->force_ff,FF_UNKNOWN); - if (szs.cdata) + fdata = szs.cdata; + fsize = szs.csize; + if (szs.cache_used) + lm->cache_count++; + else { - fdata = szs.cdata; - fsize = szs.csize; - if (szs.cache_used) - lm->cache_count++; - else + lm->convert_count++; + #if 0 + if ( !err && szs.cache_fname ) { - lm->convert_count++; - if ( !err && szs.cache_fname ) - { - File_t F; - CreateFile(&F,true,szs.cache_fname,FM_SILENT|FM_REMOVE); - if (F.f) - fwrite(fdata,1,fsize,F.f); - ResetFile(&F,false); - } + File_t F; + CreateFile(&F,true,szs.cache_fname,FM_SILENT|FM_REMOVE); + if (F.f) + fwrite(fdata,1,fsize,F.f); + ResetFile(&F,false); } + #endif } } } + ccp ext = GetExtFF(szs.fform_file,szs.fform_arch); + if (ext) + AppendFastBuf(&lm->ext,ext+1,strlen(ext)); + else + AppendFastBuf(&lm->ext,EmptyString,1); + if (is_d) lm->d_count++; else @@ -8149,6 +8300,7 @@ static void load_file_lta WriteFileAt(&lm->F,&lm->current_offset,lm->data_offset,fdata,fsize); lm->data_offset += ALIGN32(fsize,opt_align_lta); + DecodeWU8(&szs); CollectCommonFilesSZS(&szs,true,SORT_NONE); CreateLFL(&szs,0,true,true); // sorting is defined here PRINT0("LFL: %p %zu\n",szs.data,szs.size); @@ -8193,27 +8345,41 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt ) enum { - O_YAZ = 0x01, // force FF_YAZ0 compression - O_BZ = 0x02, // force FF_BZ compression - O_BZIP2 = 0x03, // force FF_BZIP2 compression - O_LZ = 0x04, // force FF_LZ compression - O_LZMA = 0x05, // force FF_LZMA compression - O_M_METHOD = 0x07, // mask for above + O_YAZ = 0x001, // force FF_YAZ0 compression + O_BZ = 0x002, // force FF_BZ compression + O_BZIP2 = 0x003, // force FF_BZIP2 compression + O_LZ = 0x004, // force FF_LZ compression + O_LZMA = 0x005, // force FF_LZMA compression + O_M_METHOD = 0x007, // mask for above - O_RM = 0x08, + O_RM = 0x008, + O_EXT = 0x010, + O_REDIR = 0x020, - O_ALL = 0x0f, + O_ALL = 0x1ff, O_DEFAULT = 0 }; static const KeywordTab_t keytab[] = { - { O_YAZ, "YAZ0", 0, O_M_METHOD }, - { O_BZ, "BZ", 0, O_M_METHOD }, + { O_YAZ, "YAZ0", "SZS", O_M_METHOD }, + { O_BZ, "WBZ", "BZ", O_M_METHOD }, { O_BZIP2, "BZIP2", "BZ2", O_M_METHOD }, - { O_LZ, "LZ", 0, O_M_METHOD }, + { O_LZ, "WLZ", "LZ", O_M_METHOD }, { O_LZMA, "LZMA", 0, O_M_METHOD }, { O_RM, "REMOVE", "RM", 0 }, + { O_EXT, "EXT", 0, 0 }, + { O_REDIR, "REDIR", 0, 0 }, + + { LEO_PROGRESS0, "PR0", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS1, "PR1", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS2, "PR2", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS5, "PR5", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS10, "PR10", "PROGRESS", LEO_M_PROGRESS }, + { LEO_PROGRESS20, "PR20", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS30, "PR30", 0, LEO_M_PROGRESS }, + { LEO_PROGRESS60, "PR60", 0, LEO_M_PROGRESS }, + {0,0,0,0} }; @@ -8227,10 +8393,11 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt ) FF_LZMA, }; - uint opt = 0; + uint opt = O_DEFAULT | ( ld->spar.opt & LEO_M_PROGRESS ); + if (mem_opt.len) { - s64 res = ScanKeywordListP(0,mem_opt.ptr,mem_opt.len,O_DEFAULT,keytab); + s64 res = ScanKeywordListP(0,mem_opt.ptr,mem_opt.len,opt,keytab); if ( res < 0 ) return ERR_SYNTAX; if ( res >= 0 ) @@ -8249,6 +8416,8 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt ) .rm_source = (opt&O_RM) != 0, .force_ff = ff_tab[opt&O_M_METHOD], .base_slot = -1, + .append_ext = ( opt & O_EXT ) != 0, + .show_progress = GetProgressMSecLEO(opt), }; close_lta(&lm); // initialize more vars @@ -8283,23 +8452,30 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt ) for ( int slot = 0; slot < lm.distrib_end_slot; slot++ ) { restart:; + lm.progress_nodes++; le_track_t *lt = GetTrackLD(ld,slot); if (!IsActiveLT(lt)) + { + cont: + AppendFastBuf(&lm.ext,EmptyString,2); // std + _d continue; + } ccp fname = GetPathL2(ld,lt,ld->spar.opt,0); if (!fname) - continue; + goto cont; struct stat st; if ( stat(fname,&st) || !S_ISREG(st.st_mode) ) - continue; + goto cont; if ( slot >= lm.base_slot + LTA_MAX_NODES ) close_lta(&lm); if ( lm.base_slot < 0 ) { + InitializeFastBufAlloc(&lm.ext,10000); + lm.base_slot = slot; lm.max_slots = lm.distrib_end_slot - lm.base_slot; if ( lm.max_slots > LTA_MAX_NODES ) @@ -8315,6 +8491,7 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt ) } const uint saved_data_offset = lm.data_offset; + const uint saved_ext_size = GetFastBufLen(&lm.ext); lta_node_t node = { .std.szs_size = st.st_size }; load_file_lta(&lm,&node.std,fname,false); @@ -8328,14 +8505,19 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt ) node.d.szs_size = st.st_size; load_file_lta(&lm,&node.d,path,true); } + else + AppendFastBuf(&lm.ext,EmptyString,1); if (!node.d.szs_off) node.d = node.std; const uint node_size = ALIGN32( ( slot - lm.base_slot + 1 ) * sizeof(lta_node_t), opt_align_lta ); - if ( lm.data_offset + node_size > LTA_MAX_SIZE ) + const uint ext_size = lm.append_ext ? ALIGN32(GetFastBufLen(&lm.ext),opt_align_lta) : 0; + + if ( lm.data_offset + node_size + ext_size> LTA_MAX_SIZE ) { lm.data_offset = saved_data_offset; + SetFastBufLen(&lm.ext,saved_ext_size); close_lta(&lm); goto restart; } @@ -8344,8 +8526,25 @@ enumError CreateTrackArchivesLD ( le_distrib_t *ld, ccp destdir, mem_t mem_opt ) lm.last_slot = slot; } close_lta(&lm); - FREE(lm.buf); + + //--- create lta.szs + + if ( lm.track_index && opt & O_REDIR ) + { + PathCatBufPPE(path,sizeof(path),lm.destdir,"lta",".szs"); + File_t F; + enumError err = CreateFileOpt(&F,true,path,false,0); + if (err) + return err; + fputs("#USE-LTA\r\n",F.f); + CloseFile(&F,0); + } + + + //--- clean + + FREE(lm.buf); return ERR_OK; } diff --git a/project/src/lib-ledis.h b/project/src/lib-ledis.h index 7a011b6..b3aff82 100644 --- a/project/src/lib-ledis.h +++ b/project/src/lib-ledis.h @@ -103,6 +103,9 @@ #define LE_SHA1REF_MAGIC8_NUM 0x2353484131524546ull #define LE_SHA1REF_VERSION 2 +#define LE_SHA1ID_MAGIC8 "#SHA1ID1" +#define LE_SHA1ID_MAGIC8_NUM 0x2353484131494431ull + #define LE_PREFIX_MAGIC8 "#PREFIX1" #define LE_PREFIX_MAGIC8_NUM 0x2350524546495831ull @@ -316,31 +319,42 @@ typedef enum le_options_t LEO_OUT_DUMMY = 0x00080000, // accept dummy names ("_abc") as valid (default) LEO_OUT_ALL = LEO_OUT_EMPTY | LEO_OUT_MINUS | LEO_OUT_DUMMY, + //-- special signals - //-- more options + LEO_CUT_ALL = 0x00100000, // cut all + LEO_CUT_STD = 0x00200000, // cut for standard distribution. + LEO_CUT_CTCODE = 0x00400000, // cut for CT-CODE distribution. + LEO_M_CUT = LEO_CUT_ALL | LEO_CUT_STD | LEO_CUT_CTCODE, - LEO_IN_LECODE = 0x00100000, // import lecode binary - LEO_NO_SLOT = 0x00200000, // suppress 'SLOT <num>' if creating a LE-DEF file. - LEO_HEX2SLOT = 0x00400000, // if reading an szs of format '%03x.*', use it to force slot - LEO_NAME2SLOT = 0x00800000, // if reading an szs, use its filename to force number - LEO_CT_SLOTS = 0x01000000, // LEO_HEX2SLOT,LEO_NAME2SLOT: check for ct-code slots - LEO_BRIEF = 0x02000000, // suppress descriptions - LEO_AUTO_PATH = 0x04000000, // enable auto paths + //-- more options + LEO_PROGRESS0 = 0, + LEO_PROGRESS1 = 0x10000000, // progress message approximately every 1 second + LEO_PROGRESS2 = 0x20000000, // progress message approximately every 2 seconds + LEO_PROGRESS5 = 0x30000000, // progress message approximately every 5 seconds + LEO_PROGRESS10 = 0x40000000, // progress message approximately every 10 seconds + LEO_PROGRESS20 = 0x50000000, // progress message approximately every 20 seconds + LEO_PROGRESS30 = 0x60000000, // progress message approximately every 30 seconds + LEO_PROGRESS60 = 0x70000000, // progress message approximately every 60 seconds + LEO_M_PROGRESS = 0x70000000, // mask for progress values + LEO_S_PROGRESS = 28, // shift value to get 0..7 - //-- special signals + //-- more options - LEO_CUT_ALL = 0x08000000, // cut all - LEO_CUT_STD = 0x10000000, // cut for standard distribution. - LEO_CUT_CTCODE = 0x20000000, // cut for CT-CODE distribution. - LEO_M_CUT = LEO_CUT_ALL | LEO_CUT_STD | LEO_CUT_CTCODE, + LEO_IN_LECODE = 0x000100000000ull, // import lecode binary + LEO_NO_SLOT = 0x000200000000ull, // suppress 'SLOT <num>' if creating a LE-DEF file. + LEO_HEX2SLOT = 0x000400000000ull, // if reading an szs of format '%0[34}x.*', use it to force slot + LEO_NAME2SLOT = 0x000800000000ull, // if reading an szs, use its filename to force number + LEO_CT_SLOTS = 0x001000000000ull, // LEO_HEX2SLOT,LEO_NAME2SLOT: check for ct-code slots + LEO_BRIEF = 0x002000000000ull, // suppress descriptions + LEO_AUTO_PATH = 0x004000000000ull, // enable auto paths - LEO_HELP = 0x40000000, // print help and exit + LEO_HELP = 0x008000000000ull, // print help and exit //-- misc - LEO__ALL = 0x1fffffff, + LEO__ALL = 0x0f7f007fffffull, LEO__DEFAULT = LTT__DEFAULT | LEO_OVERWRITE | LEO_OUT_DUMMY | LEO_AUTO_PATH, LEO__SRC = LEO_LTT_SELECTOR | LEO_IN_ALL, LEO__DEST = LEO_LTT_SELECTOR | LEO_OUT_ALL | LEO_M_OUTPUT | LEO_M_HOW, @@ -354,6 +368,8 @@ le_options_t SetupDefaultLEO(void); le_options_t ScanLEO ( le_options_t current, ccp arg, ccp err_info ); +u_msec_t GetProgressMSecLEO ( le_options_t opt ); + bool IsInputNameValidLEO ( ccp name, le_options_t opt ); // LEO_IN_EMPTY|LEO_IN_MINUS bool IsOutputNameValidLEO ( ccp name, le_options_t opt ); // LEO_OUT_EMPTY|LEO_OUT_MINUS @@ -807,6 +823,11 @@ typedef struct le_distrib_t bool is_pass2; // true on pass2 bool second_ledef; // true: don't clear tracks and cups + + u_msec_t show_progress; // >0: show progress every # msec + u_msec_t first_progress_msec; // time of first progress message + u_msec_t last_progress_msec; // time of last progress message + uint progress_count; // number of processed objects } le_distrib_t; diff --git a/project/src/lib-lex.c b/project/src/lib-lex.c index 6e416ff..161a731 100644 --- a/project/src/lib-lex.c +++ b/project/src/lib-lex.c @@ -127,7 +127,7 @@ static const feature_var_t szs_feature_list[] = DEF_VAR( 0,HAVESZS_MINIGAME, f_minigame, "File common/minigame.kmg" ), DEF_VAR( 0,HAVESZS_AIPARAM_BAA, f_aiparam_baa, "File AIParam/AIParam.baa" ), DEF_VAR( 0,HAVESZS_AIPARAM_BAS, f_aiparam_bas, "File AIParam/AIParam.bas" ), - + //skipped: HAVESZS_LICENSE {0,0,0,0,0} }; diff --git a/project/src/lib-numeric.h b/project/src/lib-numeric.h index 1af5aa2..e3de535 100644 --- a/project/src/lib-numeric.h +++ b/project/src/lib-numeric.h @@ -959,8 +959,8 @@ typedef struct Var_t double3 d3; // double3 value for references struct { - uint str_len; // used length of 'str' (support of NULL bytes) - uint str_size; // alloced size of 'str', NULL term is not counting! + uint str_len; // used length of 'str' (support of \0 bytes) + uint str_size; // alloced size of 'str', \0 term is not counting! char *str; // NULL or string (alloced) }; @@ -1279,8 +1279,8 @@ typedef struct ScanInfo_t struct lex_t * lex; // for LEX scanning struct mdl_t * mdl; // for MDL scanning struct le_distrib_t * ld; // for LEDEF scanning - -} ScanInfo_t; +} +ScanInfo_t; //----------------------------------------------------------------------------- @@ -1318,8 +1318,8 @@ typedef enum ScanParamMode SPM_STRING, // result has type char* SPM_VAR, // result has type Var_t - -} ScanParamMode; +} +ScanParamMode; //----------------------------------------------------------------------------- // [[ScanParam_t]] @@ -1335,6 +1335,30 @@ typedef struct ScanParam_t } ScanParam_t; +//----------------------------------------------------------------------------- + +bool GetScanParam +( + Var_t * dest, // store value here + bool init, // true: initialize 'dest' + const ScanParam_t * sp // NULL or valid record to find value +); + +void DefineScanParam +( + VarMap_t *vm, // valid var list + ccp prefix, // NULL or prefix like "LPAR$" + const ScanParam_t *sp // valid record +); + +void DefineScanParamList +( + VarMap_t *vm, // valid var list + ccp prefix, // NULL or prefix like "LPAR$" + const ScanParam_t *sp // NULL or list of parameters + // list ends with sp->name==NULL +); + // /////////////////////////////////////////////////////////////////////////////// /////////////// conversion helpers /////////////// @@ -1483,6 +1507,15 @@ Var_t * InsertVarMap //----------------------------------------------------------------------------- +bool DefineVar +( + VarMap_t * vm, // valid variable map + ccp varname, // name of variable + Var_t *val // value to assign +); + +//----------------------------------------------------------------------------- + bool DefineIntVar ( VarMap_t * vm, // valid variable map @@ -1501,9 +1534,18 @@ bool DefineDoubleVar //----------------------------------------------------------------------------- +bool DefineStringVar +( + VarMap_t * vm, // valid variable map + ccp varname, // name of variable + ccp value // value to assign +); + +//----------------------------------------------------------------------------- + const Var_t * FindConst ( - ccp varname // variable name + ccp varname // variable name ); //----------------------------------------------------------------------------- @@ -2207,6 +2249,17 @@ enumError ScanAssignDoubleSI //----------------------------------------------------------------------------- +enumError ScanParamDefSI +( + ScanInfo_t * si, // valid data + const ScanParam_t * sp, // NULL or scan parameter + // list ends with sp->name==NULL + VarMap_t *vm, // not NULL: define variable + ccp prefix // NULL or prefix like "LPAR$" +); + +//----------------------------------------------------------------------------- + enumError ScanParamSI ( ScanInfo_t * si, // valid data diff --git a/project/src/lib-parser-func.c b/project/src/lib-parser-func.c index 0ec628c..4a07c3c 100644 --- a/project/src/lib-parser-func.c +++ b/project/src/lib-parser-func.c @@ -64,9 +64,13 @@ void DefineParserVars ( VarMap_t * vm ) NullVectorD.x = NullVectorD.y = NullVectorD.z = 0.0; - //--- setup '$NONE' + //--- setup süecial InsertVarMap(vm,"$NONE",false,0,0); + DefineStringVar(vm,"TOOL$NAME",tool_name); + DefineStringVar(vm,"TOOL$VERSION",BASE_VERSION); + //DefineStringVar(vm,"TOOL$XVERSION",VERSION); + DefineIntVar(vm,"TOOL$NUMVERSION",GetNumericVersion()); //--- setup integer variables @@ -96,6 +100,8 @@ void DefineParserVars ( VarMap_t * vm ) { "TYPE$Y", VAR_Y }, { "TYPE$Z", VAR_Z }, + { "TOOL$NUMTIME", BINTIME }, + //{ "TOOL$REVISION", REVISION_NUM }, { "REVISION$TOOL", REVISION_NUM }, { "REVISION$SETUP", REVISION_NUM }, { "REVISION$ACTIVE", REVISION_NUM }, diff --git a/project/src/lib-parser.c b/project/src/lib-parser.c index 9e2a920..4214835 100644 --- a/project/src/lib-parser.c +++ b/project/src/lib-parser.c @@ -41,6 +41,171 @@ // /////////////////////////////////////////////////////////////////////////////// +/////////////// ScanParam_t helpers /////////////// +/////////////////////////////////////////////////////////////////////////////// + +bool GetScanParam +( + Var_t * dest, // store value here + bool init, // true: initialize 'dest' + const ScanParam_t * sp // NULL or valid record to find value +) +{ + DASSERT(dest); + DASSERT(sp); + if (init) + InitializeV(dest); + else + ResetV(dest); + + switch(sp->mode) + { + case SPM_NONE: + break; + + case SPM_BOOL: + dest->mode = VAR_INT; + dest->i = *((bool*)sp->result); + break; + + case SPM_U8: + case SPM_S8: + dest->mode = VAR_INT; + dest->i = *((u8*)sp->result); + break; + + case SPM_U16: + case SPM_S16: + dest->mode = VAR_INT; + dest->i = *((u16*)sp->result); + break; + + case SPM_U32: + case SPM_S32: + dest->mode = VAR_INT; + dest->i = *((u32*)sp->result); + break; + + case SPM_U16_BE: + case SPM_S16_BE: + dest->mode = VAR_INT; + dest->i = ntohs(*((u16*)sp->result)); + break; + + case SPM_U32_BE: + case SPM_S32_BE: + dest->mode = VAR_INT; + dest->i = ntohl(*((u32*)sp->result)); + break; + + case SPM_INC: + case SPM_INT: + case SPM_UINT: + dest->mode = VAR_INT; + dest->i = *((uint*)sp->result); + break; + + case SPM_FLOAT: + dest->mode = VAR_DOUBLE; + dest->d = *((float*)sp->result); + break; + + case SPM_FLOAT_BE: + dest->mode = VAR_DOUBLE; + dest->d = bef4((float*)sp->result); + break; + + case SPM_DOUBLE: + dest->mode = VAR_DOUBLE; + dest->d = *((double*)sp->result); + break; + + case SPM_DOUBLE_X: + return false; +// ((double*)sp->result)[i] = GetXDoubleV(&val); +// break; + + case SPM_DOUBLE_Y: + return false; +// ((double*)sp->result)[i] = GetYDoubleV(&val); +// break; + + case SPM_DOUBLE_Z: + return false; +// ((double*)sp->result)[i] = GetZDoubleV(&val); +// break; + + case SPM_FLOAT3: + return false; +// ((float3*)sp->result)[i] = GetVectorFV(&val); +// break; + + case SPM_FLOAT3_BE: + return false; +// { +// float3 src = GetVectorFV(&val); +// float3 *dest = ((float3*)sp->result)+i; +// write_bef4(&dest->x,src.x); +// write_bef4(&dest->y,src.y); +// write_bef4(&dest->z,src.z); +// } +// break; + + case SPM_VAR: + return false; +// AssignVar(((Var_t*)sp->result)+i,&val); +// break; + + case SPM_STRING: + return false; +// break; + } + + return true; +} + +/////////////////////////////////////////////////////////////////////////////// + +void DefineScanParam +( + VarMap_t *vm, // valid var list + ccp prefix, // NULL or prefix like "LPAR$" + const ScanParam_t *sp // valid record +) +{ + if ( vm && sp && sp->name ) + { + DEFINE_VAR(val); + if (GetScanParam(&val,false,sp)) + { + char name[VARNAME_SIZE+1]; + StringCat2S(name,sizeof(name),prefix,sp->name); + for ( char *p = name; *p; p++ ) + if ( *p == '-' ) + *p = '_'; + DefineVar(vm,name,&val); + } + FreeV(&val); + } +} + +/////////////////////////////////////////////////////////////////////////////// + +void DefineScanParamList +( + VarMap_t *vm, // valid var list + ccp prefix, // NULL or prefix like "LPAR$" + const ScanParam_t *sp // NULL or list of parameters + // list ends with sp->name==NULL +) +{ + if ( vm && sp ) + while(sp->name) + DefineScanParam(vm,prefix,sp++); +} + +// +/////////////////////////////////////////////////////////////////////////////// /////////////// conversion helpers /////////////// /////////////////////////////////////////////////////////////////////////////// @@ -1410,6 +1575,26 @@ Var_t * InsertVarMap /////////////////////////////////////////////////////////////////////////////// +bool DefineVar +( + VarMap_t * vm, // valid variable map + ccp varname, // name of variable + Var_t *val // value to assign +) +{ + DASSERT(vm); + DASSERT(varname); + DASSERT(val); + + bool found; + Var_t * var = InsertVarMap( vm, varname, false, 0, &found ); + DASSERT(var); + MoveDataV(var,val); + return found; +} + +/////////////////////////////////////////////////////////////////////////////// + bool DefineIntVar ( VarMap_t * vm, // valid variable map @@ -1452,6 +1637,28 @@ bool DefineDoubleVar /////////////////////////////////////////////////////////////////////////////// +bool DefineStringVar +( + VarMap_t * vm, // valid variable map + ccp varname, // name of variable + ccp value // value to assign +) +{ + DASSERT(vm); + DASSERT(varname); + + bool found; + Var_t * var = InsertVarMap( vm, varname, false, 0, &found ); + DASSERT(var); + FreeV(var); + var->mode = VAR_STRING; + var->str = value ? STRDUP(value) : (char*)EmptyString; + var->str_len = var->str_size = strlen(var->str); + return found; +} + +/////////////////////////////////////////////////////////////////////////////// + void PrintV ( FILE * f, // destination file @@ -3594,12 +3801,15 @@ enumError ScanAssignDoubleSI // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// -enumError ScanParamSI +enumError ScanParamDefSI ( ScanInfo_t * si, // valid data - const ScanParam_t * sp // NULL or scan parameter + const ScanParam_t * sp, // NULL or scan parameter // list ends with sp->name==NULL + VarMap_t *vm, // not NULL: define variable + ccp prefix // NULL or prefix like "LPAR$" ) { DASSERT(si); @@ -3670,6 +3880,7 @@ enumError ScanParamSI *sp->n_result = 0; CheckEolSI(si); + DefineScanParam(vm,prefix,sp); return ERR_OK; } @@ -3677,8 +3888,13 @@ enumError ScanParamSI sf->ptr++; if ( sp->mode == SPM_STRING ) // special case: STRING - return ConcatStringsSI(si,(char**)sp->result,0); - + { + const enumError err = ConcatStringsSI(si,(char**)sp->result,0); + if (!err) + DefineScanParam(vm,prefix,sp); + return err; + } + sf->disable_comma++; enumError max_err = ERR_OK; @@ -3800,10 +4016,23 @@ enumError ScanParamSI sf->disable_comma--; CheckEolSI(si); + DefineScanParam(vm,prefix,sp); return max_err; } /////////////////////////////////////////////////////////////////////////////// + +enumError ScanParamSI +( + ScanInfo_t * si, // valid data + const ScanParam_t * sp // NULL or scan parameter + // list ends with sp->name==NULL +) +{ + return ScanParamDefSI(si,sp,0,0); +} + +/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// enumError ScanHexlineSI diff --git a/project/src/lib-staticr.c b/project/src/lib-staticr.c index 3864722..8324a27 100644 --- a/project/src/lib-staticr.c +++ b/project/src/lib-staticr.c @@ -1521,6 +1521,42 @@ static CompressManager_t lecode_loader_kor_mgr static const u8 lecode_loader_pal_lzma[] = // lecode-loader-pal.bin { +#if 0 // [[test]] [[test-loader]] : Wiimms edits of loading-code/cheat.S + + // decompressed size: 0x218 = 536 bytes + 0x00,0x00,0x02,0x18, + + // LZMA.6 compressed data + 0x5d,0x00,0x00,0x80, 0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x34, + 0x76,0x79,0x08,0xd6, 0x1e,0xd1,0x33,0x8d, 0x56,0x7b,0xa5,0x12, 0x82,0x89,0x76,0xe4, + 0x0e,0xe0,0x82,0xa0, 0xd4,0x29,0x9f,0x79, 0x0f,0x17,0xc9,0xa3, 0xb3,0x30,0xf7,0xa2, + 0x5a,0xb5,0x1f,0x11, 0x78,0x42,0x4c,0x7a, 0xc7,0xd0,0x5c,0xee, 0x8b,0xa4,0x3e,0xce, + 0x12,0x57,0x5f,0x17, 0xc2,0x8a,0x59,0x74, 0xe5,0x70,0x85,0x30, 0xa6,0x3d,0xe1,0xf3, + 0x74,0x9a,0x9c,0x35, 0x9f,0x2e,0xb4,0xac, 0x17,0x62,0xef,0xbe, 0x3d,0x7e,0x3a,0x6d, + 0xa4,0x50,0x1c,0x55, 0xd1,0x1a,0xee,0x40, 0x3f,0x96,0xe3,0xf7, 0xe1,0x05,0x94,0x70, + 0x36,0xc9,0x16,0x7c, 0x6e,0x45,0x38,0x51, 0x92,0x6f,0xe7,0xee, 0x8b,0x47,0x1f,0x94, + 0x6d,0x23,0xd1,0x1b, 0x68,0x76,0x9b,0xdb, 0x03,0xa1,0xf4,0x6f, 0xb6,0x51,0x20,0x5b, + 0xc7,0xae,0x16,0xc6, 0x02,0x16,0xb9,0x76, 0xad,0x90,0xbb,0x71, 0xca,0x67,0xfd,0x30, + 0x9b,0x20,0x99,0xc2, 0x31,0x74,0x1c,0x3a, 0x69,0xf5,0x07,0x2a, 0x00,0xcc,0x03,0xc9, + 0xa2,0xd6,0x94,0x48, 0xf5,0xe7,0x16,0x69, 0xd2,0x1b,0xb0,0xf6, 0x92,0xb3,0xc5,0x6d, + 0x8a,0xba,0x21,0xd9, 0x37,0x25,0x6c,0x3e, 0x58,0xa1,0x3f,0x26, 0x92,0x32,0x31,0xd8, + 0x25,0x5f,0x47,0x63, 0x04,0x95,0xd0,0xa5, 0xdf,0x2d,0x8d,0x9c, 0xd6,0xdb,0xe7,0xe8, + 0xff,0xf9,0xed,0x09, 0x3f,0xde,0xce,0xe8, 0x0c,0xcd,0xa8,0xd1, 0x28,0xaf,0x12,0x2a, + 0x8b,0xb0,0x2e,0x71, 0x06,0x9c,0x67,0xd0, 0x32,0x46,0x0f,0xc6, 0xc9,0x26,0x80,0xad, + 0x26,0x0f,0x68,0x82, 0xd1,0xcb,0x53,0xfd, 0x23,0xb2,0xea,0xfc, 0x0d,0xc3,0x6c,0x99, + 0x15,0x3b,0x4d,0x19, 0x0f,0x4e,0x40,0x7b, 0xbf,0xcc,0x6d,0x9d, 0xa7,0x0b,0xb4,0x26, + 0x08,0x0f,0x2a,0x45, 0x39,0x5e,0xef,0x94, 0x4c,0xba,0xa6,0x36, 0xa7,0x8d,0x7c,0x91, + 0xaa,0x90,0x86,0x1d, 0x59,0xe4,0x65,0x26, 0x90,0x4f,0x52,0x78, 0x71,0x10,0xe6,0xf4, + 0x4e,0x34,0x19,0x9e, 0x65,0x52,0xe3,0x7a, 0x45,0xd5,0x68,0xee, 0x30,0x05,0xbe,0xdb, + 0x70,0x75,0x2a,0x09, 0x9f,0x50,0xcc,0x48, 0x9a,0xaf,0xba,0x1a, 0x28,0x01,0xa3,0xd8, + 0x76,0x15,0xd0,0x21, 0xa9,0xb9,0x6e,0x2b, 0x84,0x44,0xde,0xbc, 0x3b,0x7a,0x7c,0x66, + 0xb0,0xec,0xff,0x9e, 0x9b,0x02,0x6f,0xf3, 0xd4,0xcd,0xec,0xb4, 0x2e,0x1e,0xb1,0x87, + 0x33,0x5e,0x69,0x8c, 0xb0,0x85,0x77,0xca, 0x4d,0x6a,0x93,0x13, 0xea,0x4c,0xa6,0xf8, + 0x68,0xc7,0xb2,0x63, 0x1e,0x69,0xdb,0x5f, 0x3c,0x5c,0x75,0x3c, 0x87,0x85,0xb6,0xa4, + 0x37,0x0a,0xa5,0x1d, 0x50,0xb7,0x70,0xe2, 0x93,0x39,0xd0,0x96, 0xf8,0xdf,0x69,0x20, + 0xe6,0xc1,0x72,0x98, 0x8f,0xd7,0xb4,0x52, 0x28,0xdf,0xfe,0xc8, 0x75,0x7c, + // 0x1be = 446 data bytes (84%) +#else // decompressed size: 0x210 = 528 bytes 0x00,0x00,0x02,0x10, @@ -1554,6 +1590,7 @@ static const u8 lecode_loader_pal_lzma[] = // lecode-loader-pal.bin 0x60,0x60,0x3f,0x60, 0x7e,0xcd,0x46,0x54, 0xd7,0xcf,0x96,0xa0, 0x76,0x1b,0x78,0xf3, 0xf1,0x10,0x66,0xb4, 0x8b,0xd6,0x38,0xc3, 0xcd,0xd2,0xff,0xf9, 0x1e,0xe6,0x2f, // 0x1bf = 447 data bytes (85%) +#endif }; static CompressManager_t lecode_loader_pal_mgr @@ -5048,8 +5085,12 @@ static bool CleanDol ( staticr_t * str ) // return TRUE if dol data modified. #define GCT_ADDRESS 0x80001800u #define GCT_MAX 0x80003000u +#define GCT_END_CHECK 0x80004000u #define GCT_MM_BASE (GCT_ADDRESS-sizeof(gch_header_t)) +#define GCT_MOVE_ADDR 0x802c0000u +#define GCT_MOVE_END 0x80377100u + static MemMap_t gct_data_mem = {0}; // memory map of GCT section static GrowBuffer_t gecko_data = {0}; static GrowBuffer_t wcode_job = {0}; @@ -5556,6 +5597,7 @@ static enumError SetupCodeLoader } err = AddSectionHelper2(str,&dseg,data.ptr,dseg.size,fname); + str->gct_moved = true; //--- clean abort: @@ -5798,7 +5840,7 @@ static enumError AddSectionHelper PRINT("N=%d, of=%08x\n",n_sect,off_end); if ( n_sect > 2 && seg->addr + cheat_offset < 0x80002ff0 - && off_end >= 0x80003000 && off_end < 0x80004000 ) + && off_end >= GCT_MAX && off_end < GCT_END_CHECK ) { #ifdef TEST0 { @@ -5966,15 +6008,15 @@ static enumError AddSectionHelper //--- warn if overlapping 0x80003xxx if ( ch_type != CHT_NONE - && ( seg->addr < 0x80004000 && off_end > 0x80003000 )) + && ( seg->addr < GCT_END_CHECK && off_end > GCT_MAX )) { if ( opt_gct_move >= OFFON_AUTO && cheat_offset >= 0x100 ) goto use_loader; FREE(new_data); ERROR0(ERR_ERROR, - "Cheat codes must not overlay 0x80003000..0x80004000: %s\n", - fname); + "Cheat codes must not overlay %#x..%#x: %s\n", + GCT_MAX, GCT_END_CHECK, fname); return ERR_WARNING; } @@ -6144,9 +6186,9 @@ static enumError AddCheatCode gct_data_mem.begin = GCT_ADDRESS; MemMapItem_t *mi; mi = InsertMemMap(&gct_data_mem,GCT_ADDRESS,mgr->size-sizeof(gch_header_t)); - StringCopyS(mi->info,sizeof(mi->info),"Code Handler"); + StringCopyS(mi->info,sizeof(mi->info),"Gecko Code Handler"); mi = InsertMemMap(&gct_data_mem,GCT_MM_BASE+mgr->size,8); - StringCopyS(mi->info,sizeof(mi->info),"GCT magic"); + StringCopyS(mi->info,sizeof(mi->info),"GCT header"); if (!use_gct_loader) { mi = InsertMemMap(&gct_data_mem,GCT_MAX,0); @@ -6181,8 +6223,25 @@ static enumError AddCheatCode MemMapItem_t *mi = InsertMemMap(&gct_data_mem,GCT_MM_BASE+gecko_data.used,code_size); - snprintf(mi->info,sizeof(mi->info), - "%4u line%s of GCT file", code_size/8, code_size == 8 ? "" : "s" ); + if ( fname && *fname ) + { + const int space = sizeof(mi->info) - 1; + ccp fn = fname; + while ( strlen(fn) > space ) + { + ccp slash = strchr(fn,'/'); + if (!slash) + break; + fn = slash + 1; + } + if ( strlen(fn) <= space - 6 ) + StringCat2S(mi->info,sizeof(mi->info),"File: ",fn); + else + StringCopyS(mi->info,sizeof(mi->info),fn); + } + else + snprintf(mi->info,sizeof(mi->info), + "%u line%s of GCT file", code_size/8, code_size == 8 ? "" : "s" ); if ( opt_gct_scan_sep && opt_gct_sep && be32(code_data) != GCT_SEP_NUM1 ) { @@ -6222,7 +6281,7 @@ enumError AddWCodeFile ( staticr_t *str, ccp fname ) else err = ERROR0(ERR_WARNING,"Not a GCT file: %s\n",fname); - if(alloced) + if (alloced) FREE(data); return err; } @@ -6230,11 +6289,88 @@ enumError AddWCodeFile ( staticr_t *str, ccp fname ) /////////////////////////////////////////////////////////////////////////////// #if HAVE_XSRC - #include "xsrc/x-staticr.c" + #include "xsrc/x-staticr.c" #endif /////////////////////////////////////////////////////////////////////////////// +static exmem_t ConvertGctToBin +( + // Returns an exmem_t struct. + // data.len is 0 on error + // Use FreeExMem(&result) to free possible alloced result. + + cvp src, // NULL or source + int src_len, // size of 'src'. If -1: Use strlen(src) + bool try_circ // use circ-buffer, if result is small enough +) +{ + if (!src) + return NullExMem; + + if ( src_len < 0 ) + src_len = strlen(src); + if (!src_len) + return NullExMem; + + ccp ptr = src, end_src = ptr+src_len; + + FastBuf_t code; + InitializeFastBuf(&code,sizeof(code)); + AppendFastBuf(&code,"\0\xd0\xc0\xde\0\xd0\xc0\xde",8); + + while ( ptr < end_src ) + { + while ( ptr < end_src && (u8)*ptr <= ' ' ) + ptr++; + + char *end; + const u32 n1 = strtoul(ptr,&end,16); + if ( end <= end_src && end == ptr + 8 ) + { + ptr = end; + if ( ptr < end_src && *ptr == ' ' ) + { + ptr++; + const u32 n2 = strtoul(ptr,&end,16); + if ( end <= end_src && end == ptr + 8 ) + { + ptr = end; + char *dest = GetSpaceFastBuf(&code,8); + write_be32(dest,n1); + write_be32(dest+4,n2); + } + } + } + while ( ptr < end_src && *ptr != '\n' ) + ptr++; + } + + exmem_t res = {0}; + const int len = GetFastBufLen(&code); + if ( len > 8 ) + { + if ( try_circ && len <= CIRC_BUF_MAX_ALLOC ) + { + res.data.ptr = CopyCircBuf0(code.buf,len); + res.is_circ_buf = true; + } + else + { + res.data.ptr = MEMDUP(code.buf,len); + res.is_alloced = true; + } + res.data.len = len; + } + else + res = NullExMem; + + ResetFastBuf(&code); + return res; +} + +/////////////////////////////////////////////////////////////////////////////// + static uint AddSectionGCH ( staticr_t *str, // valid pointer @@ -6258,10 +6394,25 @@ static uint AddSectionGCH return 0; - //--- check for GCT + //--- check for GCT-TXT // [[analyse-magic]] const file_format_t fform = GetByMagicFF(gh_data,gh_size,gh_size); + if ( fform == FF_GCT_TXT ) + { + exmem_t exm = ConvertGctToBin(gh_data,gh_size,true); + if (exm.data.len) + { + HexDump16(stdlog,0,0, exm.data.ptr, exm.data.len < 64 ? exm.data.len : 64 ); + AddCheatCode((u8*)exm.data.ptr,exm.data.len,false,fname); + } + FreeExMem(&exm); + return 0; + } + + + //--- check for GCT + if ( fform == FF_GCT ) { AddCheatCode(gh_data,gh_size,false,fname); @@ -6368,17 +6519,39 @@ static uint AddSectionsDOL if (!get_min_addr) { // terminate section and add it to dol - MemMapItem_t *mi = InsertMemMap(&gct_data_mem,GCT_MM_BASE+gecko_data.used,8); + u32 gct_end = GCT_MM_BASE+gecko_data.used; + MemMapItem_t *mi = InsertMemMap(&gct_data_mem,gct_end,8); StringCopyS(mi->info,sizeof(mi->info),"GCT terminator"); + gct_end += 8; + + // insert max usage + if ( gct_end < GCT_MAX ) + { + mi = InsertMemMap(&gct_data_mem,gct_end,GCT_MAX-gct_end); + StringCopyS(mi->info,sizeof(mi->info),"Unused available memory"); + } + else if ( gct_end > GCT_MAX ) + { + mi = InsertMemMap(&gct_data_mem,GCT_MAX,gct_end-GCT_MAX); + StringCopyS(mi->info,sizeof(mi->info),"FAIL: Use of reserved memory"); + } + else + { + mi = InsertMemMap(&gct_data_mem,GCT_MAX,0); + StringCopyS(mi->info,sizeof(mi->info),"Start of unusable memory"); + } u64 term = hton64(GCT_TERM_NUM); InsertGrowBuffer(&gecko_data,&term,sizeof(term)); count += AddSectionGCH(str,gecko_data.ptr,gecko_data.used,"GCT",false); - if ( verbose > 1 || logging >= 2 ) + if ( verbose >= 2 || logging >= 2 ) { - fputs("\n Memory map of code handler and GCT files:\n",stdlog); - PrintMemMap(&gct_data_mem,stdlog,5,"part"); + if (str->gct_moved) + fputs("\n Memory map of code handler and GCT files before moving data to heap:\n",stdlog); + else + fputs("\n Memory map of code handler and GCT files:\n",stdlog); + PrintMemMap(&gct_data_mem,stdlog,5,"part or source file"); fputc('\n',stdlog); } } @@ -6485,7 +6658,7 @@ static uint CreateSectionDOL { sl->data = (u8*)&dh->sect_addr; if (!sect_addr) - sect_addr = 0x80004000 - RED_DOL_SIZE; + sect_addr = GCT_END_CHECK - RED_DOL_SIZE; dol_sect_addr = sect_addr; dol_sect_offset = offset; } @@ -7633,7 +7806,7 @@ enumError DumpSTR { ccp type = offset & 1 ? "TEXT" : "DATA"; offset &= ~1; - fprintf(f,"%*s%4u. %s %#9x : %#8x .. %#8x", + fprintf(f,"%*s%4u. %s %#10x : %#10x .. %#10x", indent,"", s, type, size, offset, offset + size ); if (rinfo) fprintf(f," : %#10x .. %#10x\n", @@ -7937,7 +8110,6 @@ const data_tab_t maindol_data_tab[] = DEF_BZIP(codehandler) DEF_BZIP(codehandleronly) - #if HAVE_WIIMM_EXT DEF_COMPRESS(old_lecode_loader_pal) DEF_COMPRESS(old_lecode_loader_usa) DEF_COMPRESS(old_lecode_loader_jap) @@ -7947,7 +8119,6 @@ const data_tab_t maindol_data_tab[] = DEF_COMPRESS(lecode_loader_usa) DEF_COMPRESS(lecode_loader_jap) DEF_COMPRESS(lecode_loader_kor) - #endif {0,0,0} }; diff --git a/project/src/lib-staticr.h b/project/src/lib-staticr.h index 08c523e..8e49344 100644 --- a/project/src/lib-staticr.h +++ b/project/src/lib-staticr.h @@ -283,9 +283,10 @@ typedef struct staticr_t dol_status_t dol_status; // data status (only DOL files) ccp dol_info; // NULL or pointer to a dol info u32 dol_info_flags; // info flags for NAS by WCODE - bool dol_info_flags_set; // true, if DOF_ORIG already set + bool dol_info_flags_set; // TRUE: DOF_ORIG already set char dol_flags[DPF__N+1]; // flags to patch patched_by - bool dol_cleaned; // TRUE if DOL was cleaned + bool dol_cleaned; // TRUE: DOL was cleaned + bool gct_moved; // TRUE: GCT will be moved //--- analyze data diff --git a/project/src/lib-std.c b/project/src/lib-std.c index 50e69c9..73c239f 100644 --- a/project/src/lib-std.c +++ b/project/src/lib-std.c @@ -91,6 +91,7 @@ bool use_de = false; bool ctcode_enabled = false; bool lecode_enabled = false; uint opt_ct_mode = 0; // calculated by ctcode_enabled & lecode_enabled +bool lecode_04x = false; int testmode = 0; int force_count = 0; uint opt_tiny = 0; @@ -102,6 +103,7 @@ int opt_route_options = 0; OffOn_t opt_wim0 = OFFON_AUTO; ccp opt_source = 0; StringField_t source_list = {0}; +ccp opt_id_list = 0; ccp opt_reference = 0; ccp opt_dest = 0; bool opt_mkdir = false; @@ -340,7 +342,7 @@ void LogSHA1 ( ccp func, ccp file, uint line, cvp data, uint size, ccp info ) sha1_hex_t hex; Sha1Bin2Hex(hex,hash); - fprintf(stderr,"%s %s(), %s @%u : [%u] %s\n", + fprintf(stderr,"SHA1: %s %s(), %s @%u : [%u] %s\n", hex, func, file, line, size, info ? info : "" ); } } @@ -837,12 +839,12 @@ char * PrintOptCompatible() /////////////////////////////////////////////////////////////////////////////// -uint GetEncodedVersion() +uint GetNumericVersion() { - static uint code = 0; - if (!code) - code = EncodeVersion(VERSION); - return code; + static uint numeric = 0; + if (!numeric) + numeric = EncodeVersion(VERSION); + return numeric; } // @@ -2621,8 +2623,24 @@ enumError cmd_wildcards ( int argc, char ** argv ) StringField_t plist = {0}; CollectExpandParam(&plist,first_param,-1,WM__DEFAULT); - for ( int argi = 0; argi < plist.used; argi++ ) - printf("%s\n",plist.field[argi]); + if ( script_fform == FF_BASH || script_fform == FF_SH ) + { + const CharMode_t mode = CHMD_UTF8 | CHMD_ESC + | ( script_fform == FF_BASH ? CHMD_BASH : CHMD_SH ); + const char quote = script_fform == FF_BASH ? '$' : '\''; + for ( int argi = 0; argi < plist.used; argi++ ) + { + exmem_t esc = EscapeStringEx(plist.field[argi],-1,"","",mode,quote,true); + printf("%s\n",esc.data.ptr); + FreeExMem(&esc); + } + } + else + { + for ( int argi = 0; argi < plist.used; argi++ ) + printf("%s\n",plist.field[argi]); + } + ResetStringField(&plist); return ERR_OK; } @@ -4161,6 +4179,13 @@ enumError cmd_filetype() max_len = len; } + #if 0 + if ( long_count > 2 ) + printf("\n" + "type decomp vers valid file name\n" + "%.*s\n", max_len + 40, Minus300 ); + else + #endif if ( long_count > 1 ) printf("\n" "type decomp vers valid file name\n" @@ -4254,6 +4279,7 @@ enumError cmd_filetype() DecodeBZIP2part(buf2,bufsize,&wr,buf1,bufsize); fform2 = GetByMagicFF(buf2,wr,wr); stat2 = GetNameFF(0,fform2); + load_full = true; } else if ( fform1 == FF_LZ ) { @@ -4265,7 +4291,6 @@ enumError cmd_filetype() version = GetVersionFF(ff_temp,wh->first_8,sizeof(wh->first_8),&suffix); if ( fatt.size >= 20 ) { -// uint compr = GetComprLevelLZMA(le32(buf1+sizeof(wlz_header_t)+sizeof(u32)+1)); const uint compr = IsLZ(buf1,bufsize); if ( compr >= 1 && compr <= 9 ) { @@ -4286,6 +4311,7 @@ enumError cmd_filetype() DecodeLZMApart(buf2,bufsize,&wr,buf1,bufsize); fform2 = GetByMagicFF(buf2,wr,wr); stat2 = GetNameFF(0,fform2); + load_full = true; } else if ( fform1 == FF_XZ ) { @@ -4323,7 +4349,14 @@ enumError cmd_filetype() else valid = IsValid(buf,written,fatt.size,0,fform2,arg); } - printf("%-7s %-7s %7s %-5s %s\n", + #if 0 + if ( long_count > 2 ) + printf("%-7s %-7s %7s %-5s %s:%s\n", + stat1, stat2, vbuf, valid_text[valid], + GetNameFF(fform1,fform2), arg ); + else + #endif + printf("%-7s %-7s %7s %-5s %s\n", stat1, stat2, vbuf, valid_text[valid], arg ); } else @@ -4470,6 +4503,7 @@ enumError cmd_fileattrib() { case FFT_BRSUB|FFT_BRSUB2: info = "bres-sub2"; break; case FFT_BRSUB: info = "bres-sub"; break; + case FFT_TRACK: info = "track"; break; case FFT_EXTERNAL: info = "external"; break; default: info = "-"; break; } diff --git a/project/src/lib-std.h b/project/src/lib-std.h index 1f76010..8a199ba 100644 --- a/project/src/lib-std.h +++ b/project/src/lib-std.h @@ -88,6 +88,7 @@ #else #define LOG_SHA1(d,s,i) #endif +#define LOG_SHA11(d,s,i) LogSHA1(__FUNCTION__,__FILE__,__LINE__,d,s,i) void LogSHA1 ( ccp func, ccp file, uint line, cvp data, uint size, ccp info ); @@ -100,6 +101,7 @@ void LogSHA1 ( ccp func, ccp file, uint line, cvp data, uint size, ccp info ); #define CONFIG_FILE "wiimms-szs-tools.conf" #define SZS_SETUP_FILE "wszst-setup.txt" #define NODE_LIST_FILE "node-list.bin" +#define EXT_LIST_FILE "ext-list.bin" #define CHECK_FILE_SIZE 0x800 #define OPT_PNG_TYPE_CLASS 0x7fef0bff @@ -173,6 +175,12 @@ static inline void ClosePager() { CloseStdoutToPager(); } struct InfoUI_t; void PrintHelpColor ( const struct InfoUI_t * iu ); +extern volatile int verbose; +static inline bool ErrorLogDisabled() + { return verbose <= -3; } +static inline bool ErrorLogEnabled() + { return verbose >= -2; } + // /////////////////////////////////////////////////////////////////////////////// /////////////// compatibility /////////////// @@ -216,7 +224,7 @@ char * PrintOptCompatible(void); // circ-buf //----------------------------------------------------------------------------- -uint GetEncodedVersion(void); +uint GetNumericVersion(void); // /////////////////////////////////////////////////////////////////////////////// @@ -750,6 +758,7 @@ int GetVersionByMagic bool IsBRSUB ( file_format_t ff ); bool IsByMagicBRSUB ( const void * data, uint data_size ); +bool CanBeTrackFF ( file_format_t ff ); bool IsArchiveFF ( file_format_t ff ); bool IsTextFF ( file_format_t ff ); bool IsGeoHitKartFF ( file_format_t ff ); @@ -763,8 +772,8 @@ file_format_t GetCompressedFF ( file_format_t ff ); void SetCompressionFF ( - file_format_t ff_arch, // if >0: set 'opt_fform' - file_format_t ff_compr // if >0: set 'fform_compr' + file_format_t ff_arch, // if >=0: set 'opt_fform' + file_format_t ff_compr // if >=0: set 'fform_compr' // and 'fform_compr_force' ); @@ -1160,9 +1169,9 @@ typedef enum patch_file_t extern patch_file_t PATCH_FILE_MODE; // = PFILE_M_DEFAULT|PFILE_F_DEFAULT extern int disable_patch_on_load; // if >0: disable patching after loading -int ScanOptPatchFile ( ccp arg ); -void SetPatchFileModeReadonly(); // switch to readonly default flags (silent), - // if not set by user +int ScanOptPatchFiles ( ccp arg ); +void SetPatchFileModeReadonly(); // switch to readonly default flags (silent), + // if not set by user uint PrintFileClassInfo ( char *buf, uint bufsize, patch_file_t mode ); ccp GetFileClassInfo(); @@ -1782,6 +1791,7 @@ static inline uint GetStrIdxCountMIL ( const MemItem_t * mi ) //----------------------------------------------------------------------------- void SetSource ( ccp source ); +void SetIdList ( ccp source ); void SetReference ( ccp source ); void SetDest ( ccp dest, bool mkdir ); void CheckOptDest ( ccp default_dest, bool default_mkdir ); @@ -2268,7 +2278,10 @@ struct ScanText_t; const mkw_prefix_t * ScanPrefixTable ( struct ScanText_t *st ); const mkw_prefix_t * DefinePrefixTable ( cvp source, uint len ); const mkw_prefix_t * GetPrefixTable(void); -const mkw_prefix_t * FindPrefix ( ccp pre, int pre_len, bool exact ); + +// use strlen() if pre_len|name_len <0 +const mkw_prefix_t * FindPrefix ( ccp pre, int pre_len ); +const mkw_prefix_t * GetPrefix ( ccp name, int name_len ); // if tab==0: Use GetPrefixTable() enumError SavePrefixTable ( FILE *f, const mkw_prefix_t * tab ); @@ -2753,7 +2766,7 @@ extern ccp config_path; extern ccp tool_name; extern ccp std_share_path; extern ccp share_path; -extern volatile int verbose; +//extern volatile int verbose; // see above extern volatile int logging; extern volatile int ext_errors; extern volatile int log_timing; @@ -2764,6 +2777,7 @@ extern bool use_de; extern bool ctcode_enabled; extern bool lecode_enabled; extern uint opt_ct_mode; // calculated by ctcode_enabled & lecode_enabled +extern bool lecode_04x; extern int testmode; extern int force_count; extern uint opt_tiny; @@ -2775,6 +2789,7 @@ extern int opt_route_options; extern OffOn_t opt_wim0; extern ccp opt_source; extern StringField_t source_list; +extern ccp opt_id_list; extern ccp opt_reference; extern ccp opt_dest; extern bool opt_mkdir; diff --git a/project/src/lib-szs-create.c b/project/src/lib-szs-create.c index 36ea6e8..3f698ec 100644 --- a/project/src/lib-szs-create.c +++ b/project/src/lib-szs-create.c @@ -3191,9 +3191,8 @@ bool PatchSZS ( szs_file_t * szs ) { DASSERT(szs); CalcHaveSZS(szs); - const bool patch_lex = HaveActivePatchLEX(); - #ifdef TEST + #if defined(TEST) static int done = 0; if (!done++) { @@ -4589,6 +4588,7 @@ static int extract_func szs_file_t subszs; // [[fname+]] InitializeSubSZS(&subszs,szs,it->off,it->size,FF_UNKNOWN,local_path,false); + FixIteratorExtByFF(it,subszs.fform_file,subszs.fform_arch); if ( verbose > 1 || testmode && !analyze_fname ) { diff --git a/project/src/lib-szs-file.h b/project/src/lib-szs-file.h index 484fd1e..aaf7114 100644 --- a/project/src/lib-szs-file.h +++ b/project/src/lib-szs-file.h @@ -70,6 +70,7 @@ typedef enum have_szs_file_t HAVESZS_MINIGAME, // common/minigame.kmg HAVESZS_AIPARAM_BAA, // AIParam/AIParam.baa HAVESZS_AIPARAM_BAS, // AIParam/AIParam.bas + HAVESZS_LICENSE, // license.txt, any case HAVESZS__N } __attribute__ ((packed)) have_szs_file_t; diff --git a/project/src/lib-szs.c b/project/src/lib-szs.c index 96ef7ea..ff0a82e 100644 --- a/project/src/lib-szs.c +++ b/project/src/lib-szs.c @@ -73,6 +73,7 @@ const ccp have_szs_name[HAVESZS__N] = "minigame", // HAVESZS_MINIGAME "aiparam_baa", // HAVESZS_AIPARAM_BAA "aiparam_bas", // HAVESZS_AIPARAM_BAS + "license", // HAVESZS_LICENSE }; const ccp have_szs_file[HAVESZS__N] = @@ -87,6 +88,7 @@ const ccp have_szs_file[HAVESZS__N] = "common/minigame.kmg", // HAVESZS_MINIGAME "AIParam/AIParam.baa", // HAVESZS_AIPARAM_BAA "AIParam/AIParam.bas", // HAVESZS_AIPARAM_BAS + "license.txt", // HAVESZS_LICENSE }; const file_format_t have_szs_fform[HAVESZS__N] = @@ -101,6 +103,7 @@ const file_format_t have_szs_fform[HAVESZS__N] = FF_KMG, // HAVESZS_MINIGAME FF_UNKNOWN, // HAVESZS_AIPARAM_BAA FF_UNKNOWN, // HAVESZS_AIPARAM_BAS + FF_UNKNOWN, // HAVESZS_LICENSE }; // @@ -600,7 +603,7 @@ enumError SaveSZS void LinkCacheData ( - // link/copy only files with data! + // link/copy only if opt_cache && data && size ccp cache_fname, // NULL or path to cache file ccp src_fname, // source filename @@ -608,7 +611,7 @@ void LinkCacheData uint size // size of data ) { - if ( cache_fname && src_fname && data && size ) + if ( opt_cache && cache_fname && src_fname && data && size ) { PRINT("LinkCacheData(%d,%u) %s -> %s\n",data!=0,size,src_fname,cache_fname); unlink(cache_fname); @@ -2536,6 +2539,7 @@ int PrintFileSZS const file_format_t fform = AnalyseMagicByOpt(0,data,it->size,it->szs->size-it->off, FF_UNKNOWN, it->path); + FixIteratorExtByFF(it,fform,fform); char vers_buf[50]; PrintVersionSZS(vers_buf,sizeof(vers_buf),it); @@ -3665,8 +3669,48 @@ int IterateFilesLTA // convert to local endian be32n( (u32*)<a, (u32*)<a, sizeof(lta_header_t)/4 ); - const lta_node_t *src_node = (lta_node_t*)( szs->data + lta.node_off ); + //----- load node list + + const uint node_size = GetNodeListSizeLTA(<a); + lta_node_t *node_buf = MALLOC(node_size); + enumError err = LoadFILE(szs->fname,0,lta.node_off,node_buf,node_size,0,0,false); + if (err) + return 1; + //be32n( (u32*)&node_buf, (u32*)&node_buf, node_size/4 ); + + + //----- load ext list + + char *ext_buf = 0, *ext_ptr = 0, *ext_end = 0; + if ( HaveExtLTA(<a) && lta.ext_size ) + { + ext_buf = MALLOC(lta.ext_size); + enumError err = LoadFILE(szs->fname,0,lta.ext_off,ext_buf,lta.ext_size,2,0,false); + PRINT0("LoadFILE(%s), err=%d\n",szs->fname,err); + if (!err) + { + ext_ptr = ext_buf; + ext_end = ext_buf + lta.ext_size; + } + } + +// [[%04x+]] + ccp format_szs, format_lfl, format_d_szs, format_d_lfl; + if ( lecode_04x || lta.base_slot + lta.n_slots >= 0x1000 ) + { + format_szs = "%04x.%s"; + format_lfl = "%04x.lfl"; + format_d_szs = "%04x_d.%s"; + format_d_lfl = "%04x_d.lfl"; + } + else + { + format_szs = "%03x.%s"; + format_lfl = "%03x.lfl"; + format_d_szs = "%03x_d.%s"; + format_d_lfl = "%03x_d.lfl"; + } //----- main loop @@ -3677,14 +3721,16 @@ int IterateFilesLTA int stat = 0; for ( uint rel_slot = 0; rel_slot < lta.n_slots && !stat; rel_slot++ ) { - const uint slot = lta.base_slot + rel_slot; - lta_node_t node = src_node[rel_slot]; + lta_node_t node; // convert to local endian - be32n( (u32*)&node, (u32*)&node, sizeof(node)/4 ); + be32n( (u32*)&node, (u32*)(node_buf+rel_slot), sizeof(node)/4 ); + const uint slot = lta.base_slot + rel_slot; if ( node.std.szs_size ) { - snprintf(it->path,sizeof(it->path),"%03x.szs",slot); + it->fix_extension = !( ext_ptr < ext_end && *ext_ptr ); + ccp ext = it->fix_extension ? "x" : ext_ptr; + snprintf(it->path,sizeof(it->path),format_szs,slot,ext); it->name = it->path; it->off = node.std.szs_off; it->size = node.std.szs_size; @@ -3692,9 +3738,13 @@ int IterateFilesLTA it->index++; } + it->fix_extension = false; + if ( ext_ptr < ext_end ) + ext_ptr += strlen(ext_ptr)+1; + if ( !stat && node.std.lfl_size ) { - snprintf(it->path,sizeof(it->path),"%03x.lfl",slot); + snprintf(it->path,sizeof(it->path),format_lfl,slot); it->name = it->path; it->off = node.std.lfl_off; it->size = node.std.lfl_size; @@ -3704,7 +3754,9 @@ int IterateFilesLTA if ( !stat && node.d.szs_size && node.d.szs_off != node.std.szs_off ) { - snprintf(it->path,sizeof(it->path),"%03x_d.szs",slot); + it->fix_extension = !( ext_ptr < ext_end && *ext_ptr ); + ccp ext = it->fix_extension ? "x" : ext_ptr; + snprintf(it->path,sizeof(it->path),format_d_szs,slot,ext); it->name = it->path; it->off = node.d.szs_off; it->size = node.d.szs_size; @@ -3712,9 +3764,13 @@ int IterateFilesLTA it->index++; } + it->fix_extension = false; + if ( ext_ptr < ext_end ) + ext_ptr += strlen(ext_ptr)+1; + if ( !stat && node.d.lfl_size && node.d.lfl_off != node.std.lfl_off ) { - snprintf(it->path,sizeof(it->path),"%03x_d.lfl",slot); + snprintf(it->path,sizeof(it->path),format_d_lfl,slot); it->name = it->path; it->off = node.d.lfl_off; it->size = node.d.lfl_size; @@ -3723,13 +3779,27 @@ int IterateFilesLTA } } - StringCopyS(it->path,sizeof(it->path),NODE_LIST_FILE); - it->name = it->path; - it->off = lta.node_off; - it->size = lta.n_slots * sizeof(lta_node_t); - stat = it->func_it(it,false); + if (!stat) + { + StringCopyS(it->path,sizeof(it->path),NODE_LIST_FILE); + it->name = it->path; + it->off = lta.node_off; + it->size = lta.n_slots * sizeof(lta_node_t); + stat = it->func_it(it,false); + + if ( !stat && HaveExtLTA(<a) ) + { + StringCopyS(it->path,sizeof(it->path),EXT_LIST_FILE); + it->name = it->path; + it->off = lta.ext_off; + it->size = lta.ext_size; + stat = it->func_it(it,false); + } + } // reset param + FREE(ext_buf); + FREE(node_buf); it->name = 0; it->no_dirs = false; return stat; @@ -3778,19 +3848,30 @@ bool DumpLTA "%*s" "File size: %10u = %#10x\n" "%*s" "Node offset: %10u = %#10x\n" "%*s" "Node size: %10u = %#10x\n" - "%*s" "Base slot: %10u = %#10x\n" - "%*s" "Num of slots: %10u = %#10x\n" - "%*s" "Last slot: %10u = %#10x\n" ,indent,"", (char*)&xhead->magic ,indent,"", head.version ,indent,"", head.head_size, head.head_size ,indent,"", head.file_size, head.file_size ,indent,"", head.node_off, head.node_off ,indent,"", head.node_size, head.node_size + ); + + if (HaveExtLTA(&head)) + printf( "%*s" "Ext offset: %10u = %#10x\n" + "%*s" "Ext size: %10u = %#10x\n" + ,indent,"", head.ext_off, head.ext_off + ,indent,"", head.ext_size, head.ext_size + ); + + printf( + "%*s" "Base slot: %10u = %#10x\n" + "%*s" "Num of slots: %10u = %#10x\n" + "%*s" "Last slot: %10u = %#10x\n" ,indent,"", head.base_slot, head.base_slot ,indent,"", head.n_slots, head.n_slots ,indent,"", last_slot, last_slot ); + return true; } @@ -4037,6 +4118,65 @@ szs_iterator_func GetIteratorFunction /////////////////////////////////////////////////////////////////////////////// +void FixIteratorExtByFF +( + szs_iterator_t *it, // valid iterator data + file_format_t fform_file, // source file format + file_format_t fform_arch // (decompressed) archive format +) +{ + if ( it && it->fix_extension ) + { + it->fix_extension = false; + ccp ext = GetExtFF(fform_file,fform_arch); + if (!ext) + ext = ".bin"; + + int plen = strlen(it->path); + ccp slash = strrchr(it->path,'/'); + ccp point = strrchr(it->path,'.'); + if ( point && ( !slash || point > slash )) + plen = point - it->path; + if ( plen + strlen(ext) < sizeof(it->path) ) + StringCopyE(it->path+plen,it->path+sizeof(it->path),ext); + } +} + +//----------------------------------------------------------------------------- + +void FixIteratorExtByData +( + szs_iterator_t *it, // valid iterator data + cvp data, // pointer to data + uint size // size of data +) +{ + if ( it && it->fix_extension ) + { + file_format_t ff = GetByMagicFF(data,size,size); + FixIteratorExtByFF(it,ff,ff); + } +} + +//----------------------------------------------------------------------------- + +void FixIteratorExt +( + szs_iterator_t *it // valid iterator data +) +{ + if ( it && it->fix_extension ) + { + const u8 * data = it->szs->data + it->off; + const file_format_t fform + = AnalyseMagicByOpt(0,data,it->size,it->szs->size-it->off, + FF_UNKNOWN, it->path ); + FixIteratorExtByFF(it,fform,fform); + } +} + +/////////////////////////////////////////////////////////////////////////////// + void * UpdateIteratorFF ( struct szs_iterator_t *it ) { if (!it) @@ -4067,7 +4207,7 @@ static int iterate_sort_files { if ( it->off > it->szs->size || it->off + it->size > it->szs->size ) { - if ( it->size != M1(it->size) && WARN_MODE & WARN_INVALID_OFFSET && verbose >= -2 ) + if ( it->size != M1(it->size) && WARN_MODE & WARN_INVALID_OFFSET && ErrorLogEnabled() ) ERROR0(ERR_WARNING, "Invalid offset [%x..%x, size=%zx] for subfile.\n" "=> File ignored: %s%s%s\n", @@ -4141,7 +4281,7 @@ static int iterate_sub_files { if ( it->off > it->szs->size || it->off + it->size > it->szs->size ) { - if ( WARN_MODE & WARN_INVALID_OFFSET && verbose >= -2 ) + if ( WARN_MODE & WARN_INVALID_OFFSET && ErrorLogEnabled() ) ERROR0(ERR_WARNING, "Invalid offset [%x..%x, size=%zx] for subfile.\n" "=> File ignored: %s%s%s\n", @@ -4894,7 +5034,7 @@ int CutFilesBRSUB { if ( (u8*)bcut.eptr > max_eptr ) { - if ( WARN_MODE & WARN_INVALID_OFFSET && verbose >= -2 ) + if ( WARN_MODE & WARN_INVALID_OFFSET && ErrorLogEnabled() ) ERROR0(ERR_WARNING, "Invalid offset for BRSUB file => %u of %u entries ignored: %s%s%s\n", bg_n_entry - cur_entry, bg_n_entry, diff --git a/project/src/lib-szs.h b/project/src/lib-szs.h index 6c8c692..976966e 100644 --- a/project/src/lib-szs.h +++ b/project/src/lib-szs.h @@ -52,6 +52,8 @@ #ifndef SZS_LIB_SZS_H #define SZS_LIB_SZS_H 1 +//#include <stddef.h> + #include "lib-std.h" #include "lib-szs-file.h" #include "lib-object.h" @@ -132,7 +134,10 @@ __attribute__ ((packed)) u8_node_t; #define LTA_VERSION 1 #define LTA_DEFAULT_ALIGN 0x20 #define LTA_MAX_SIZE 0x7fffffe0 -#define LTA_MAX_NODES 4096 +#define LTA_MAX_NODES 0x2000 + +#define USELTA_MAGIC "#USE-LTA" +#define USELTA_MAGIC_NUM 0x235553452d4c5441ull //----------------------------------------------------------------------------- // [[lta_header_t]] @@ -147,9 +152,22 @@ typedef struct lta_header_t be32_t node_size; // size of single node == sizeof(lta_node_t) be32_t base_slot; // first used slot be32_t n_slots; // number of used slots + + // extension since v2.41a, 2024-01-22 + be32_t ext_off; // offset of extension string list + be32_t ext_size; // size of extension string list } __attribute__ ((packed)) lta_header_t; +//------------------------- + +static inline bool HaveExtLTA ( const lta_header_t *lta ) +{ + return lta + && lta->head_size >= offsetof(lta_header_t,ext_size) + sizeof(lta->ext_size) + && lta->ext_size; +} + //----------------------------------------------------------------------------- // [[lta_node_index_t]] @@ -207,6 +225,11 @@ typedef struct lta_node_t } __attribute__ ((packed)) lta_node_t; +//------------------------- + +static inline uint GetNodeListSizeLTA ( const lta_header_t *lta ) + { return lta->n_slots * sizeof(lta_node_t); } + //----------------------------------------------------------------------------- // [[lta_manager_t]] @@ -214,7 +237,8 @@ typedef struct lta_manager_t { le_distrib_t *ld; // current le_distrib_t ccp destdir; // destination directory - bool rm_source; // remove source SZS files + bool rm_source; // true: remove source SZS files + bool append_ext; // true: append extension list file_format_t force_ff; // force file format id !=FF_UNKNOWN uint track_index; // current track index for "tracks-%u.lta" u_nsec_t start_nsec; // start time by GetTimerNSec(); @@ -226,7 +250,7 @@ typedef struct lta_manager_t int base_slot; // base slot of current LTA, only valid if >= 0 int last_slot; // last used slot of current LTA - uint data_offset; // current data offset + size_t data_offset; // current data offset size_t current_offset; // return value of WriteFileAt() u8 *buf; // temp buffer for files, alloced @@ -242,7 +266,14 @@ typedef struct lta_manager_t uint szs_dup_count; // counter of SZS duplicates uint lfl_dup_count; // counter of LFL duplicates - lta_node_t node[LTA_MAX_NODES]; // nodes, local endian + u_msec_t start_msec; // start time, set by GetTimerMSec() + u_msec_t last_log_msec; // last log time, set by GetTimerMSec() + u_msec_t show_progress; // >0: show progress counter every # ms + uint progress_nodes; // number of processed slots + uint progress_tracks; // number of processed tracks + + FastBuf_t ext; // list with file extensions (without leading '.') + lta_node_t node[LTA_MAX_NODES]; // nodes, local endian } lta_manager_t; @@ -583,7 +614,7 @@ enumError SaveSZS void LinkCacheData ( - // link/copy only files with data! + // link/copy only if opt_cache && data && size ccp cache_fname, // NULL or path to cache file ccp src_fname, // source filename @@ -967,6 +998,7 @@ typedef struct szs_iterator_t bool no_dirs; // true: archive without directory support bool is_dir; // true: directory argument bool has_subfiles; // true: this file has enabled sub files + bool fix_extension; // true: call FixIteratorExtBy*() u16 fform; // NULL or file format int index; // index of 'fst_item' int depth; // directory depth @@ -1112,6 +1144,27 @@ static inline szs_subfile_t * AppendSubfileSZS return InsertSubfileSZS(szs,~0,it,path); } +/////////////////////////////////////////////////////////////////////////////// + +void FixIteratorExtByFF +( + szs_iterator_t *it, // valid iterator data + file_format_t fform_file, // source file format + file_format_t fform_arch // (decompressed) archive format +); + +void FixIteratorExtByData +( + szs_iterator_t *it, // valid iterator data + cvp data, // pointer to data + uint size // size of data +); + +void FixIteratorExt +( + szs_iterator_t *it // valid iterator data +); + // /////////////////////////////////////////////////////////////////////////////// /////////////// BRRES structures /////////////// diff --git a/project/src/prefix.inc b/project/src/prefix.inc index ead72db..9df9f1e 100644 --- a/project/src/prefix.inc +++ b/project/src/prefix.inc @@ -1,116 +1,117 @@ static const u8 prefix_inc_lzma[] = { - // decompressed size: 0x10cb = 4299 bytes - 0x00,0x00,0x10,0xcb, + // decompressed size: 0xfa2 = 4002 bytes + 0x00,0x00,0x0f,0xa2, // LZMA.6 compressed data 0x5d,0x00,0x00,0x80, 0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x20,0x15, 0x06,0x01,0x7b,0xa2, 0xa1,0xd0,0xb6,0xe6, 0x42,0x19,0xec,0xf7, 0x37,0x70,0x15,0x8e, 0x25,0x3c,0x80,0xfc, 0x38,0xd8,0x99,0x2a, 0xaa,0xdf,0xc9,0x44, 0x9a,0x44,0x8b,0x29, - 0x12,0x98,0x47,0xc4, 0x6f,0x2e,0xa6,0xc1, 0x27,0xd7,0xb9,0x7d, 0x3d,0xa0,0xa5,0xee, - 0xd1,0x03,0xca,0xb5, 0xd4,0x9c,0x03,0xe3, 0xca,0x58,0xca,0x53, 0x14,0x0b,0xb2,0xe7, - 0xc2,0x25,0xb4,0x99, 0x64,0x16,0xf9,0x56, 0xa8,0x60,0xa7,0xcb, 0x12,0x3b,0xfc,0xe7, - 0x6a,0x7b,0x8f,0x47, 0x95,0x48,0x9a,0xce, 0x10,0x70,0x19,0xe6, 0xdb,0x6e,0xe8,0xa3, - 0xe3,0xf3,0xf5,0x41, 0x76,0x3d,0x18,0xe7, 0x4b,0xec,0x4b,0x4b, 0x6f,0xcb,0x8a,0x23, - 0x5c,0xf1,0x87,0x53, 0x24,0x1c,0xb9,0x4c, 0x67,0x11,0xae,0x3d, 0xe8,0x3c,0x90,0xdc, - 0x49,0x33,0x0b,0x26, 0xc7,0x97,0xa3,0xf2, 0x38,0x6c,0xba,0xdf, 0x52,0x8e,0xa6,0x07, - 0x5f,0x80,0xf8,0x0e, 0x94,0xa5,0x5d,0x89, 0x41,0xbf,0xc6,0xb6, 0x64,0xa1,0xb1,0x57, - 0xad,0xb8,0xbd,0x9b, 0xdc,0x1e,0x7a,0x93, 0xf2,0xf1,0xd7,0xb5, 0xbd,0x68,0x83,0x1e, - 0xc8,0x9b,0x66,0x68, 0xe8,0x45,0xd9,0x5c, 0x57,0x79,0xec,0xd3, 0xc8,0xf5,0xbb,0x00, - 0x34,0x20,0x32,0x4a, 0xaf,0x31,0xfc,0x4e, 0x30,0x37,0x54,0x55, 0xc1,0x49,0x6c,0x3f, - 0x39,0xe0,0x2e,0x78, 0x7b,0x2c,0xaf,0x3a, 0x51,0xa3,0xcc,0xbb, 0x6d,0x55,0xd2,0xce, - 0x29,0x3f,0x82,0x9c, 0xdc,0xc4,0xec,0x2f, 0xb1,0x94,0xc1,0xc3, 0xb7,0x45,0xb7,0xf5, - 0xb0,0x2b,0x8c,0xb9, 0xf4,0x6d,0x96,0xf4, 0xef,0x61,0x47,0xa4, 0x7c,0x55,0xab,0xc4, - 0xb1,0xdb,0x2a,0x70, 0x45,0x13,0x32,0x11, 0x9b,0x13,0x07,0x1d, 0x13,0xab,0xa6,0x79, - 0xa9,0x16,0x5a,0xea, 0x4b,0x04,0x62,0x04, 0xe3,0x18,0x93,0xde, 0x00,0x90,0xb1,0x3b, - 0x95,0x21,0x16,0x84, 0xf1,0x21,0x3e,0x4d, 0xb9,0x58,0xd4,0x80, 0x35,0x48,0x46,0x08, - 0x4b,0xf2,0x44,0x01, 0x34,0x49,0x67,0x4e, 0x09,0x8c,0x7d,0x48, 0xa1,0x3a,0x53,0x1a, - 0x62,0x2b,0x6d,0xae, 0xf2,0xf6,0xe8,0xbc, 0x42,0x87,0x0e,0x64, 0xa2,0x98,0x60,0x80, - 0x6e,0xff,0x58,0x22, 0x25,0x1b,0x0f,0x2a, 0x0d,0x27,0xe4,0x0a, 0xdf,0xfa,0xe0,0x80, - 0x85,0xe2,0xb2,0x0b, 0x07,0x2d,0x4a,0x23, 0xf2,0x87,0xbd,0x89, 0x08,0x51,0x67,0xaf, - 0xea,0x61,0x07,0xe2, 0x70,0xca,0xc7,0x53, 0xb2,0xc1,0xa1,0x42, 0x25,0x64,0xd3,0xd1, - 0xd8,0x78,0x50,0x65, 0x1e,0x32,0xc3,0x91, 0x9c,0x52,0xab,0x72, 0x58,0xe7,0x03,0x5f, - 0x3c,0x44,0x6d,0x2d, 0x1b,0x00,0x23,0x55, 0xb5,0xc8,0x21,0xd6, 0xdd,0x6e,0x2b,0x67, - 0x4b,0x3e,0x7b,0xf6, 0xdd,0xa8,0x5f,0x21, 0x37,0x36,0x72,0x84, 0xd2,0xc0,0xdc,0x5c, - 0x97,0x44,0xb9,0xd2, 0x24,0xa1,0xdc,0x7e, 0xcb,0xa1,0xc2,0x3a, 0xb9,0x84,0x12,0x0f, - 0x51,0xfc,0x49,0xde, 0xfa,0x78,0x7b,0xb1, 0x91,0x9f,0x7a,0xcb, 0xdc,0x29,0x15,0x02, - 0xfc,0x2f,0xf5,0xa9, 0xd5,0x20,0x0f,0x68, 0xbd,0x43,0x34,0x33, 0x0c,0x69,0xcf,0x6b, - 0x69,0xb3,0xa0,0x96, 0xb8,0xa1,0x14,0xe3, 0xfb,0x90,0xa8,0xc2, 0xff,0x7c,0xb0,0x70, - 0xf8,0x3e,0x64,0x5f, 0xeb,0x65,0xb6,0x43, 0xbe,0x63,0xd5,0xf6, 0x06,0xd3,0x77,0xcd, - 0x35,0xff,0x62,0xa0, 0x47,0xbf,0xdf,0x2b, 0xbd,0xd2,0x97,0x1c, 0x55,0x26,0xd5,0x6d, - 0x4b,0xbb,0xb4,0xa8, 0xba,0xc3,0x51,0x47, 0x5f,0x8d,0xfc,0xb4, 0x1a,0x6f,0xaf,0xf4, - 0x22,0x7b,0xe4,0x95, 0xbf,0x75,0x37,0x38, 0x23,0x5c,0x8a,0x7a, 0x5c,0x3a,0x5b,0x95, - 0xe1,0x5c,0x63,0x3d, 0x53,0x92,0x72,0x2e, 0x7a,0x49,0x17,0x37, 0x9a,0xfe,0xa2,0xbe, - 0x5b,0xdb,0x92,0xf2, 0x55,0x25,0xf0,0x58, 0x72,0xb6,0xaf,0x56, 0x8b,0x8d,0x65,0x0d, - 0x8f,0xb8,0xce,0x4a, 0x77,0x3b,0xb9,0xfc, 0x7a,0x0d,0x71,0x51, 0x37,0x00,0x4d,0x24, - 0xa0,0xac,0x76,0x29, 0xfc,0xdd,0xf2,0xda, 0x98,0x6b,0xab,0xc8, 0xe6,0x47,0xf9,0x52, - 0xef,0x2c,0x06,0x4b, 0x3b,0xd5,0x4c,0xc6, 0x17,0x90,0x6d,0x6b, 0xdc,0xa9,0x28,0x5b, - 0x38,0x30,0x66,0xf0, 0xa9,0xd2,0x32,0xf7, 0x09,0xa2,0xcc,0x69, 0x57,0xa5,0x4c,0x77, - 0x81,0x68,0xc6,0x59, 0x9a,0xc5,0x11,0xcc, 0x26,0x43,0x80,0x58, 0xfc,0x2a,0x22,0x76, - 0x09,0x43,0x4e,0xab, 0x6b,0xe3,0xff,0x52, 0xbc,0xeb,0xb4,0x55, 0x73,0x68,0x1a,0x34, - 0xc8,0xcd,0x56,0x79, 0x0c,0xf2,0x21,0x87, 0xaf,0xf3,0x99,0x38, 0x65,0xbc,0x3c,0x18, - 0x35,0x4f,0xac,0xb4, 0xfa,0x91,0xdf,0x7e, 0x01,0xe0,0xba,0x2b, 0x61,0x57,0x9c,0x22, - 0xa8,0x85,0x39,0x4c, 0xed,0x90,0xfe,0x2a, 0x9b,0x27,0x10,0x1d, 0x1f,0xb8,0xce,0x27, - 0x67,0x51,0xdb,0xaf, 0xca,0xb0,0xa2,0xcd, 0xc5,0xd9,0xbf,0x26, 0xec,0x8e,0x2e,0x29, - 0x07,0xb1,0xb5,0xfc, 0x50,0xbd,0x6b,0xa4, 0xf1,0x2e,0x2b,0xb8, 0xed,0xf9,0xb6,0x48, - 0x35,0x5c,0xa5,0x00, 0xd2,0xea,0xe9,0x78, 0x41,0xa8,0x93,0xe5, 0x1d,0x41,0x0e,0x2a, - 0xd1,0xf5,0x2e,0xd7, 0x0d,0xba,0x52,0x97, 0x68,0x0d,0x99,0x98, 0x9d,0x65,0x03,0xa7, - 0x6e,0x74,0xf3,0xef, 0x70,0x41,0x13,0xd2, 0xc4,0xab,0xed,0x86, 0x1d,0x86,0xbc,0x96, - 0x2f,0x21,0x7f,0x56, 0x74,0x0c,0x29,0xf1, 0xc9,0x4c,0xa6,0x54, 0xa3,0x6e,0xe6,0x57, - 0x47,0x59,0xc0,0x8f, 0x5f,0x8f,0xcc,0xac, 0xda,0x16,0x09,0xdc, 0xcd,0xd2,0xb2,0x33, - 0xd3,0xa6,0xd6,0xea, 0x4f,0x7b,0x3b,0x20, 0x15,0xa3,0xac,0xcd, 0xa5,0xc0,0x04,0xf0, - 0xfe,0x9c,0x58,0xd1, 0xa9,0x7e,0x92,0xd0, 0xc6,0x4a,0x94,0x96, 0x8d,0x39,0xa5,0x7a, - 0x95,0x29,0x29,0x8a, 0x9b,0xd9,0x40,0xef, 0xd1,0x7d,0x47,0xe6, 0x53,0x82,0x6f,0x6c, - 0xb2,0x88,0x8b,0x6a, 0xb4,0xcc,0x7d,0xa1, 0x21,0xb4,0x22,0xef, 0x18,0xc7,0x3f,0x93, - 0x60,0x43,0x11,0x8e, 0x2d,0x19,0x15,0x16, 0xc3,0x6c,0x42,0xf9, 0x09,0x74,0xd0,0x26, - 0xb2,0x86,0x67,0x6e, 0x54,0x1a,0x94,0x46, 0xd6,0xa5,0xac,0x02, 0x59,0x33,0xd5,0xf4, - 0x0c,0x13,0x91,0x21, 0x00,0x2c,0xa2,0x9e, 0x71,0xc0,0x21,0x82, 0xb0,0x5a,0xc1,0xdf, - 0x65,0x01,0x53,0x20, 0x0e,0xa9,0x4d,0xc6, 0x37,0xe4,0x5b,0x8a, 0xa2,0x0d,0x89,0xa0, - 0x85,0x2e,0xd0,0x61, 0xf2,0xe1,0x38,0x97, 0xc8,0xdf,0xc8,0x8c, 0x12,0x30,0x56,0xc4, - 0x92,0xf6,0xb5,0x0c, 0xd2,0xc7,0xa8,0x81, 0x35,0xa6,0xbc,0x5d, 0x08,0x3e,0xbd,0x4d, - 0x8e,0xff,0x0e,0x39, 0x18,0xfe,0x61,0x67, 0x48,0x3d,0x39,0x34, 0xa0,0xb1,0x9c,0xd5, - 0xb8,0xc0,0x84,0xef, 0x14,0xd3,0x1e,0x1e, 0x02,0x85,0xd7,0x32, 0xf0,0xa6,0x13,0xb5, - 0x38,0x05,0x6a,0x5e, 0xd2,0xd4,0xff,0x4c, 0xa9,0xa0,0x93,0x3c, 0xe0,0x32,0x04,0xec, - 0x83,0x42,0x1a,0x2d, 0x89,0xd6,0xa0,0xdc, 0xea,0x22,0x3b,0xb1, 0xd3,0xe2,0x15,0x42, - 0x7c,0x86,0x7c,0x91, 0xe0,0x3e,0x93,0x07, 0x6d,0x2b,0x5c,0xfb, 0x4f,0x62,0x9d,0x13, - 0xab,0x7b,0x97,0x90, 0xf1,0xea,0xa8,0x5e, 0x11,0x9d,0x95,0x37, 0x56,0x76,0xa1,0x67, - 0x69,0x21,0x41,0x72, 0x92,0x80,0x8e,0xcb, 0x7b,0xad,0x89,0x7d, 0xaf,0x94,0x9c,0x85, - 0xeb,0x0f,0x40,0xc2, 0xdd,0x3b,0x7a,0xbe, 0xa8,0xfa,0xd6,0xbb, 0xab,0x88,0x3e,0xa2, - 0x4f,0xff,0xfb,0x18, 0x66,0xc8,0xc0,0x77, 0xa9,0xbe,0x98,0x67, 0x83,0xe2,0x74,0xed, - 0xfd,0xf0,0x40,0x81, 0xfe,0x3e,0xe4,0x07, 0x5c,0x6a,0x31,0x1f, 0xf0,0xdc,0x3d,0x57, - 0x5c,0x3c,0xc3,0x0f, 0x81,0x87,0x91,0xd2, 0x82,0xef,0xc6,0xd3, 0xfe,0xe6,0x67,0x4d, - 0x76,0x17,0x28,0xff, 0xa2,0x45,0xd9,0xef, 0x97,0xe7,0x8a,0xc9, 0x6a,0xfc,0xce,0xcb, - 0xfc,0xae,0xe1,0x21, 0x84,0x73,0x1b,0xe8, 0x24,0xbe,0xb2,0x9e, 0xc3,0x94,0x6c,0x4f, - 0xe8,0xe2,0x15,0x74, 0x51,0x83,0xb5,0xa1, 0x27,0x17,0x4d,0xb4, 0x03,0xb8,0x89,0xf6, - 0x16,0x94,0x77,0x6c, 0x66,0x62,0x8f,0x18, 0xd7,0x68,0x10,0x67, 0xa3,0x63,0x64,0xb5, - 0xdc,0xb8,0x24,0xf2, 0xf3,0x68,0xf8,0x59, 0x5a,0x3f,0x65,0x74, 0x62,0x76,0xca,0x9c, - 0x60,0x6a,0x21,0x11, 0x2e,0x3a,0x66,0x31, 0x00,0xbd,0x8f,0x84, 0x46,0xe2,0x57,0xc7, - 0x7f,0x10,0x71,0x70, 0x6d,0x6a,0x41,0x70, 0x94,0xb9,0x05,0xa8, 0x57,0x8c,0xcc,0xdc, - 0xbe,0x70,0x48,0x4c, 0x3c,0x5b,0x19,0x19, 0x79,0x4e,0xd6,0xb0, 0xdc,0x40,0x42,0x8b, - 0x3e,0x98,0x0d,0x5a, 0x06,0xa7,0x76,0x68, 0xb2,0xd9,0xc5,0xb7, 0x88,0xb5,0x8d,0xe7, - 0xe8,0xf6,0x13,0xec, 0x33,0x44,0x7a,0xcf, 0x68,0x9c,0x8f,0x39, 0x1b,0x2b,0xa1,0x10, - 0xa7,0x6a,0x42,0xc5, 0xb6,0x44,0xbf,0xfc, 0xc9,0x7e,0xb7,0x09, 0x99,0x87,0xa9,0x45, - 0x92,0x42,0x6a,0xbf, 0x24,0x35,0x1d,0xa2, 0x7b,0x04,0x73,0xf1, 0xda,0x42,0x7a,0x62, - 0x69,0x51,0x3f,0xaa, 0xb3,0x09,0x83,0x74, 0x72,0xbc,0x1c,0x64, 0xc7,0x8b,0x99,0x85, - 0x85,0x27,0x9d,0x02, 0xb7,0x65,0x37,0xb2, 0xfd,0x6b,0x18,0x3f, 0xac,0x3e,0x37,0x0b, - 0xa0,0xf2,0xc5,0xb3, 0x42,0xce,0x6d,0x27, 0xdb,0x38,0xc1,0xb1, 0xbf,0xcc,0xff,0xfc, - 0xe7,0xf0,0x3d,0x70, 0xb4,0x53,0x95,0xac, 0xe4,0xfe,0x3e,0x2c, 0x89,0xac,0x4d,0xbb, - 0xdf,0x31,0x41,0xbc, 0xb4,0x5a,0x0d,0xb1, 0x2f,0x0b,0xda,0x3f, 0x4a,0xcd,0xe6,0x00, - 0x5e,0x7c,0xda,0x88, 0x1b,0xd0,0xe4,0x2d, 0x3a,0x6c,0x20,0xcd, 0xf9,0x80,0xf8,0x14, - 0x19,0x55,0x47,0x9a, 0x10,0xbd,0x9c,0x25, 0x66,0xee,0xe4,0x86, 0xb8,0xd8,0xee,0x1c, - 0xc3,0xce,0xa6,0x02, 0x09,0xac,0x30,0x17, 0xb5,0xec,0xea,0x87, 0xaf,0x7b,0x31,0xaa, - 0xdf,0xba,0x5c,0x46, 0x04,0xa6,0x39,0xd0, 0xe3,0x6d,0x7a,0x81, 0xa1,0xde,0x1d,0x06, - 0x41,0x46,0x13,0xc6, 0x84,0x81,0x1c,0x85, 0x7f,0x24,0xbc,0xcb, 0xfd,0xe1,0xaf,0xd9, - 0x67,0xc1,0xb3,0x26, 0x8c,0xfd,0x3c,0xd9, 0xb9,0x46,0x4f,0x6e, 0x80,0x75,0x63,0x62, - 0x9f,0x63,0x0b,0x91, 0x20,0x10,0xfc,0xa0, 0xa6,0xc1,0xa4,0xe7, 0xec,0x7a,0xc8,0x49, - 0x0e,0xd3,0xaa,0xe5, 0x2e,0x50,0xf1,0x39, 0xa2,0xca,0x1d,0x53, 0x7b,0xe6,0x79,0x4a, - 0x4e,0xd2,0x15,0x51, 0x8a,0xa4,0xb8,0xa0, 0x08,0x7a,0xe6,0x14, 0xa7,0x64,0x86,0xa5, - 0xe8,0x19,0x22,0x67, 0xde,0x7b,0x82,0x1c, 0x99,0x31,0x7f,0xd4, 0x00,0x42,0x79,0x1a, - 0x81,0x8c,0x09,0x10, 0xa7,0xdf,0x60,0xe3, 0x6d,0x8a,0xce,0xb8, 0x0f,0x34,0x35,0xa8, - 0xda,0x71,0x02,0xa7, 0xc4,0x46,0x2a,0x1f, 0x88,0xb2,0xd0,0xbd, 0x60,0x8d,0x89,0xd5, - 0xc5,0x15,0x37,0x71, 0x4a,0xe4,0xa7,0x04, 0x7f,0x95,0xff,0xa6, 0x7b,0xd3,0xf4, - // 0x68f = 1679 data bytes (39%) + 0x12,0x98,0x47,0xc4, 0x6f,0x2e,0xa6,0xc1, 0x27,0xd7,0xb9,0x7e, 0x61,0xcb,0x38,0x25, + 0x63,0x88,0x5c,0xd2, 0xf3,0xa8,0x8c,0x8e, 0x2e,0x13,0x3d,0xfb, 0x4d,0x42,0xc9,0x0d, + 0xd5,0xbb,0xca,0x1e, 0x11,0xc8,0x3d,0x76, 0x89,0x9c,0x7b,0x06, 0x31,0xba,0x17,0xcc, + 0x8c,0x29,0x05,0xde, 0x3a,0x2b,0xe6,0x83, 0x90,0xc2,0x83,0xeb, 0x28,0xc3,0x27,0x72, + 0xcc,0x05,0xcc,0x73, 0x86,0xbe,0x94,0x86, 0x50,0x1f,0x05,0x4d, 0xbd,0x87,0xff,0x29, + 0xc9,0xe3,0x76,0x70, 0x49,0x52,0xbb,0x91, 0x66,0x64,0x29,0xeb, 0x22,0x37,0x33,0x86, + 0x5b,0x0f,0x6f,0xd3, 0x10,0x51,0xc1,0x56, 0x0d,0x64,0x9a,0xc3, 0x5b,0x29,0x63,0xc3, + 0xd9,0xc6,0x5c,0x00, 0xf4,0x1f,0x62,0x00, 0x8b,0x5a,0xc9,0x86, 0xc5,0x0d,0xee,0xec, + 0x58,0x2b,0x10,0xaf, 0xb1,0x48,0xd9,0x64, 0xd2,0xc4,0xd2,0x0d, 0xf3,0x22,0xa0,0x2e, + 0x3d,0x70,0xee,0xc6, 0x58,0x56,0xa6,0x69, 0x3b,0x2d,0x01,0xda, 0x64,0x52,0xe9,0x56, + 0x21,0x98,0xcf,0x49, 0xcc,0xf3,0xf7,0x87, 0xd4,0x80,0xbf,0x78, 0x0b,0x2a,0x58,0x46, + 0x3c,0x32,0xd7,0x04, 0x60,0x62,0x24,0x10, 0x1a,0x7c,0x8d,0x18, 0x62,0x2e,0xc0,0x60, + 0xe8,0x1b,0x0a,0x64, 0xd6,0x40,0x10,0x48, 0x87,0x92,0x01,0x90, 0xc5,0xef,0xf1,0x94, + 0x47,0x34,0x20,0x14, 0x02,0x66,0x77,0xd7, 0x10,0x7a,0x18,0x64, 0x67,0x55,0x0b,0xaf, + 0xdb,0x03,0xa4,0xec, 0x6c,0xd0,0x06,0x15, 0x30,0x17,0x33,0x24, 0xcc,0x2b,0x76,0x0b, + 0x3b,0x8e,0x6d,0x7d, 0x36,0x91,0xe4,0x03, 0xa5,0x71,0x21,0xf9, 0x65,0xb4,0xbb,0x8a, + 0xb9,0x7b,0xe3,0x31, 0x71,0x00,0x20,0xc3, 0x0a,0x8a,0xf1,0xe5, 0x97,0x13,0x93,0x5c, + 0x83,0xa7,0x2e,0x3c, 0xff,0x38,0xe0,0xbc, 0x95,0x6e,0x33,0xf5, 0xcf,0xc5,0xa4,0xc9, + 0x7a,0x83,0x09,0xd6, 0xf7,0xef,0x31,0x7a, 0xc7,0x58,0xa3,0x52, 0x41,0xdf,0x7f,0xf0, + 0xef,0xd1,0xb9,0xe1, 0x41,0x85,0xbb,0xc0, 0xd1,0xa3,0x85,0x65, 0xcd,0x9f,0x96,0x46, + 0x2d,0x63,0xa5,0xe4, 0x50,0x62,0x36,0x55, 0x9b,0xdb,0xb0,0x0b, 0x68,0xc5,0x36,0x85, + 0x5e,0x18,0x25,0x90, 0x56,0xc5,0xd6,0x5d, 0xf7,0x05,0xde,0x9d, 0x51,0x59,0x70,0x61, + 0xf7,0x18,0xc4,0xeb, 0xa3,0x98,0xc6,0x49, 0x48,0x80,0x33,0x93, 0x2a,0x98,0x26,0x23, + 0x42,0xf5,0xfd,0x66, 0xd4,0x24,0xc1,0x87, 0xf8,0xd0,0xea,0x1c, 0xb5,0x4b,0x8a,0x8f, + 0xcb,0xda,0xa3,0xfa, 0x1f,0x50,0x98,0xa8, 0x73,0x5c,0xb5,0x25, 0x16,0x99,0xf8,0x48, + 0xb4,0x5c,0x59,0x43, 0xff,0x4b,0x3e,0x03, 0xe2,0x30,0x0c,0xca, 0xf6,0x1c,0xed,0x3b, + 0x44,0x59,0x01,0xf1, 0x19,0xc2,0xe1,0xfd, 0x68,0x4a,0x6f,0x2d, 0xb8,0x68,0x6c,0x58, + 0x31,0xfd,0x56,0x7e, 0x2b,0xad,0x16,0x1e, 0xaf,0x02,0x2c,0xeb, 0xfb,0x73,0x0a,0x0d, + 0x81,0x3f,0xe5,0x7a, 0xed,0x74,0x62,0x7b, 0x03,0x59,0x6a,0x89, 0x04,0x32,0x6b,0xc9, + 0x6c,0x96,0xfe,0xbc, 0x8f,0x04,0xaa,0x29, 0x67,0x20,0xbb,0x50, 0xab,0x80,0x8c,0x10, + 0x80,0x63,0x76,0x2f, 0x30,0x6a,0xce,0x48, 0xd2,0x81,0xd9,0x2f, 0xa1,0x27,0x07,0xb0, + 0xf8,0x83,0x4a,0x8d, 0x90,0x24,0xe2,0xa5, 0x0d,0xf4,0xe7,0x19, 0x8b,0x93,0xdb,0x11, + 0x2a,0x03,0xba,0x8a, 0xa0,0x92,0x62,0x9d, 0x40,0xac,0x61,0x08, 0x63,0x2d,0x9f,0xb6, + 0xce,0x68,0xb0,0xa9, 0x11,0x64,0x9f,0x97, 0x71,0xd4,0xe2,0x26, 0x16,0x67,0xe7,0xb4, + 0xd0,0x1d,0x5a,0xc3, 0x5f,0x3e,0x25,0x3f, 0xa0,0x0c,0x9c,0xb1, 0x65,0x3e,0x08,0xc6, + 0x66,0xb1,0x5a,0x5f, 0x08,0x23,0x1c,0xb3, 0x42,0xb8,0xe7,0x71, 0x86,0xd0,0xd7,0x60, + 0x4e,0x48,0x9a,0x6b, 0x41,0x74,0xa3,0xae, 0x71,0x9b,0x13,0x13, 0x1a,0xa2,0x8e,0x2c, + 0xe3,0x38,0x51,0x95, 0x20,0xb6,0x1d,0x31, 0x5c,0xd6,0xd7,0xe2, 0xd7,0x5a,0xfd,0xfb, + 0xa9,0x4e,0xfa,0xf3, 0x75,0x32,0x6e,0x55, 0xf2,0x52,0xbb,0x27, 0xad,0x2c,0x56,0x3a, + 0x6f,0x4b,0x1f,0x20, 0xa0,0xaa,0x85,0x4b, 0x1a,0x69,0x1d,0x04, 0x67,0x28,0xa1,0xa9, + 0xe7,0x8e,0x48,0xb7, 0x51,0x66,0xdb,0x46, 0x32,0xfb,0x6e,0x9d, 0x19,0x6b,0x7f,0x20, + 0xf4,0xcf,0x7e,0xf1, 0xa6,0x3f,0xc5,0x44, 0x92,0x87,0x8b,0xd4, 0x3d,0xfe,0xfc,0xbb, + 0xe7,0x70,0x99,0xac, 0x2c,0x5d,0x0e,0xa7, 0x10,0x76,0xed,0x08, 0x5c,0x50,0x0c,0xb3, + 0xe6,0xcf,0x7c,0x73, 0x62,0x22,0xce,0xe9, 0x94,0x8d,0x12,0xb1, 0xb3,0x2d,0x43,0xee, + 0xc4,0xfc,0xd0,0xb1, 0xca,0x3b,0x5a,0xae, 0x7d,0x93,0x19,0x36, 0x0e,0x5f,0x01,0xb6, + 0x9c,0x54,0x16,0x2e, 0x2d,0x37,0xba,0x86, 0x79,0xea,0x16,0x77, 0x1e,0x56,0xee,0x57, + 0x11,0x5d,0x6e,0xfb, 0x95,0xa6,0xc7,0x75, 0x70,0x37,0x02,0x96, 0x9d,0x5e,0x0a,0xec, + 0xd4,0xd3,0x72,0xa9, 0xd4,0x3d,0x05,0xe9, 0x81,0x4d,0x3d,0x5d, 0x8e,0x05,0xf8,0x17, + 0x58,0xed,0xe7,0xd4, 0x9b,0xc0,0xa1,0x2e, 0x7b,0x3d,0x79,0x5f, 0xa5,0xf8,0x22,0x17, + 0x53,0xa5,0x47,0x03, 0x31,0xe4,0x52,0x83, 0x69,0xd1,0x12,0x4b, 0x6b,0x32,0xf5,0xc6, + 0x49,0xa0,0xca,0xad, 0xed,0x74,0x52,0xbc, 0x15,0xf4,0x90,0x5d, 0xa0,0x8a,0xd9,0xfd, + 0x6d,0xb3,0xc7,0xe0, 0x14,0x5b,0xcc,0x3d, 0xf4,0x92,0x62,0x21, 0xaa,0xf2,0xee,0x10, + 0x60,0x5c,0x58,0xdf, 0x85,0xd0,0x22,0x76, 0x98,0x0f,0xf1,0xcb, 0x17,0x63,0xc6,0xd8, + 0xa8,0x19,0x67,0xf4, 0x92,0x69,0xfa,0x84, 0x64,0xc8,0x5d,0xa1, 0xb0,0x39,0x08,0xce, + 0xa6,0x89,0x40,0x6b, 0x93,0x7a,0x9c,0x8c, 0x73,0x89,0x28,0x5e, 0xe0,0x83,0x45,0xc2, + 0xe2,0x3a,0x61,0x62, 0xea,0x71,0x36,0x7e, 0xbf,0xe6,0xc7,0x7f, 0xee,0x55,0xc7,0x5b, + 0xd0,0xfd,0x9e,0x09, 0x07,0xb3,0xe5,0x4f, 0x2d,0x21,0x66,0x2a, 0x9e,0x9d,0x53,0xd3, + 0x5c,0xad,0x97,0x8d, 0x9e,0xfb,0xec,0xe7, 0x71,0x6d,0x8c,0x78, 0x5d,0x2d,0x32,0xe4, + 0x94,0x14,0x4d,0xad, 0xbe,0x8d,0x84,0x8a, 0x81,0xc4,0xd4,0x27, 0xa0,0xab,0x68,0xfd, + 0x9d,0x1c,0xfe,0x80, 0x63,0xda,0x9d,0xc0, 0x6f,0x74,0x77,0x6c, 0xa6,0x34,0xdb,0xf0, + 0x96,0x26,0xf6,0x9f, 0xca,0xfb,0xa3,0xfc, 0x80,0x3d,0x9c,0xe4, 0x2e,0x27,0x73,0x52, + 0x5f,0xba,0xff,0xeb, 0xf8,0x4e,0x40,0xd4, 0xc4,0xe1,0x06,0x47, 0x2c,0x67,0x94,0x87, + 0x5e,0x75,0x0e,0x9c, 0x6c,0x7a,0x49,0x6e, 0x9d,0xe7,0x63,0x3d, 0x81,0xcb,0xf0,0xff, + 0x84,0x5f,0x8a,0xab, 0x70,0x07,0x1b,0x71, 0xed,0xdb,0xbb,0x39, 0x3c,0xfe,0x7b,0x15, + 0x11,0xae,0xc3,0x6e, 0x1e,0x92,0x32,0xa7, 0x4c,0xfa,0x94,0xd1, 0x1b,0x45,0xa4,0x05, + 0x83,0xd3,0xaa,0xd3, 0xa8,0xb8,0x3b,0xf2, 0xcc,0xc6,0x12,0x41, 0xd8,0xc9,0x80,0x6f, + 0x19,0x78,0x33,0xcc, 0xd8,0xc9,0x4a,0x05, 0x6a,0x7f,0x72,0x07, 0x80,0x2c,0x00,0x72, + 0x90,0x44,0xab,0xcb, 0x19,0xdf,0x50,0x92, 0x9b,0xfc,0x29,0x81, 0x46,0x8f,0xaf,0xcc, + 0xda,0xd9,0xb7,0x6f, 0x62,0x9f,0xa2,0x07, 0x23,0x08,0x20,0xd8, 0x14,0xa6,0xc8,0x49, + 0xc0,0x05,0x0c,0x42, 0x60,0xe7,0x2c,0x6b, 0x7f,0x25,0x81,0xe6, 0x6c,0x5e,0xe3,0x34, + 0x8c,0xd2,0x6c,0xa2, 0x03,0x14,0x3e,0x64, 0xfc,0x20,0x5a,0xd6, 0x24,0xc5,0xca,0x45, + 0x2f,0x1f,0x65,0x25, 0x25,0xfd,0x32,0x9e, 0x16,0x2e,0xe1,0x4a, 0xb9,0xc9,0xa5,0x9c, + 0x76,0x49,0xfb,0xfe, 0x05,0x83,0x37,0x98, 0xb3,0x80,0x7e,0x1c, 0xb2,0xcd,0xbd,0xda, + 0xa6,0xce,0xe6,0x25, 0x5f,0x31,0x66,0x09, 0x21,0xba,0xda,0x69, 0xf4,0x4b,0x47,0x1e, + 0x65,0xd2,0x4c,0x33, 0x7e,0xf0,0x02,0x7d, 0xdf,0x81,0x58,0xd6, 0x63,0x6e,0x32,0x68, + 0x42,0x5a,0xa3,0x1f, 0x67,0x20,0x12,0x1d, 0xd5,0x02,0x86,0xa2, 0xc1,0x91,0x80,0xc6, + 0xef,0x65,0x60,0x8e, 0x7f,0x09,0xa1,0x3b, 0xf1,0xf6,0x21,0xd5, 0x9e,0x33,0x9c,0xca, + 0x90,0xe0,0x43,0x70, 0x68,0x5f,0x24,0x48, 0xbc,0x2d,0xd6,0x0d, 0x67,0x98,0xdb,0xe0, + 0xe4,0x15,0xdd,0x3e, 0xb3,0xf1,0x63,0x0e, 0xf5,0xf9,0xa6,0x27, 0xae,0x3f,0x43,0xfe, + 0x03,0x79,0x08,0xdd, 0xfc,0x0f,0xae,0xb6, 0x72,0x73,0xc7,0x1f, 0x43,0x42,0x7d,0x08, + 0x14,0x41,0xd5,0x89, 0x2a,0x56,0xf0,0xb9, 0xe4,0xb5,0x64,0xe1, 0x9e,0x95,0xff,0x84, + 0x8f,0xa9,0xce,0xb3, 0x17,0x40,0xa4,0xf0, 0xb1,0x48,0x90,0x49, 0xda,0xc0,0x81,0xf5, + 0x4b,0xfc,0xf6,0x56, 0xc1,0x7c,0x5c,0x9a, 0x25,0x47,0xb1,0x08, 0x6c,0xd3,0xe4,0xc1, + 0xbb,0x8d,0x2a,0xa8, 0x84,0xd4,0x0f,0x1c, 0x78,0x6d,0x0d,0x01, 0x05,0xa3,0x7d,0x67, + 0x5c,0x24,0x36,0x8b, 0x51,0x1a,0x04,0xbf, 0x14,0xe0,0xb3,0x7e, 0x5e,0xfe,0xfb,0x65, + 0x3b,0x89,0x70,0x60, 0x52,0x9b,0x7e,0xe6, 0x55,0xda,0x90,0x2a, 0x2c,0x50,0xdc,0xaf, + 0xd0,0x27,0xc0,0x5b, 0xb7,0x2b,0x62,0x49, 0xb5,0x70,0x84,0xe5, 0x7b,0xb9,0x6d,0x50, + 0x63,0x9d,0xde,0xe0, 0x3e,0x40,0x9a,0x7d, 0x7a,0x27,0x08,0x88, 0xa9,0x19,0xab,0xbb, + 0x5c,0xb1,0x5c,0x6e, 0x11,0xa0,0x08,0x27, 0x5e,0xab,0x3b,0x2d, 0x98,0x1d,0x33,0x24, + 0xa9,0xfc,0xd2,0x56, 0xf5,0x0a,0x31,0x5d, 0x01,0x62,0xfe,0x0d, 0x55,0xec,0x9b,0x71, + 0x87,0xcf,0xa6,0xfb, 0x51,0x95,0xa0,0x59, 0xd9,0xa2,0xbf,0xd6, 0x95,0xd5,0x3b,0xb1, + 0x04,0x34,0xd3,0x7a, 0x69,0x6d,0x0a,0xef, 0xe1,0x32,0xa7,0x72, 0xc7,0x6f,0xc3,0x0b, + 0xb6,0x9d,0x1e,0x1d, 0x5d,0x5e,0x98,0x37, 0x98,0x93,0xec,0xa6, 0xeb,0xeb,0xfb,0xe6, + 0xb2,0x24,0x92,0xb6, 0xd5,0xd2,0x1a,0x97, 0x82,0x55,0xaa,0x4d, 0xd9,0xff,0xcc,0xfe, + 0xe7,0x37,0xb6,0xe3, 0x68,0x38,0xaf,0xe0, 0x3d,0x6d,0xca,0x16, 0x2c,0x39,0xd0,0xe2, + 0x90,0x08,0xa2,0x54, 0x6f,0x9a,0x8b,0x9d, 0x71,0x71,0x1e,0x1f, 0x9e,0x1e,0x08,0xc7, + 0x0b,0x06,0x2b,0x00, 0xd6,0x33,0x6c,0x3a, 0x0d,0x3e,0x89,0x9d, 0xad,0x10,0xdf,0x72, + 0xb4,0x9f,0x5c,0xf0, 0xa2,0xf8,0xad,0x1c, 0xc8,0x95,0xf7,0x17, 0x14,0x64,0xe8,0x73, + 0xf3,0x8b,0xa1,0x7b, 0x33,0x04,0x85,0xa7, 0x90,0xe0,0xf1,0x8b, 0x72,0xb9,0x1a,0x29, + 0x2e,0x1c,0x4c,0x38, 0x8f,0xb9,0x8b,0x21, 0x33,0x5e,0x85,0x9e, 0x2e,0xb6,0xcf,0x5c, + 0x7c,0xfe,0x28,0x68, 0x54,0x7e,0xa1,0x4f, 0x6a,0x97,0x49,0xcc, 0x21,0x4d,0x9b,0xb6, + 0x50,0x98,0x25,0x8f, 0x3c,0x64,0xad,0xeb, 0xad,0x52,0x0c,0xc4, 0xdf,0xff,0xb3,0xad, + 0x16,0x24, + // 0x692 = 1682 data bytes (42%) }; static CompressManager_t prefix_inc_mgr diff --git a/project/src/ui/tab-wbmgt.inc b/project/src/ui/tab-wbmgt.inc index 67c6034..98ba29a 100644 --- a/project/src/ui/tab-wbmgt.inc +++ b/project/src/ui/tab-wbmgt.inc @@ -263,6 +263,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GMP, "CHDIR", "chdir", 0, 0 /* copy of wszst */ }, diff --git a/project/src/ui/tab-wctct.inc b/project/src/ui/tab-wctct.inc index 6d17101..c6ea2a0 100644 --- a/project/src/ui/tab-wctct.inc +++ b/project/src/ui/tab-wctct.inc @@ -247,6 +247,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_G, "OLD_SPINY", "old-spiny|oldspiny", 0, "Disable the new feature to hold a Spiny Shell at the tail." diff --git a/project/src/ui/tab-wimgt.inc b/project/src/ui/tab-wimgt.inc index e00e325..17e3c87 100644 --- a/project/src/ui/tab-wimgt.inc +++ b/project/src/ui/tab-wimgt.inc @@ -223,6 +223,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GMP, "CHDIR", "chdir", 0, 0 /* copy of wszst */ }, diff --git a/project/src/ui/tab-wkclt.inc b/project/src/ui/tab-wkclt.inc index 9716271..a8e6d07 100644 --- a/project/src/ui/tab-wkclt.inc +++ b/project/src/ui/tab-wkclt.inc @@ -338,6 +338,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GMP, "CHDIR", "chdir", 0, 0 /* copy of wszst */ }, diff --git a/project/src/ui/tab-wkmpt.inc b/project/src/ui/tab-wkmpt.inc index 2c7b466..d8148cc 100644 --- a/project/src/ui/tab-wkmpt.inc +++ b/project/src/ui/tab-wkmpt.inc @@ -316,6 +316,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GMP, "CHDIR", "chdir", 0, 0 /* copy of wszst */ }, diff --git a/project/src/ui/tab-wlect.inc b/project/src/ui/tab-wlect.inc index 95a1735..b61e53a 100644 --- a/project/src/ui/tab-wlect.inc +++ b/project/src/ui/tab-wlect.inc @@ -293,6 +293,9 @@ "This option is completely ignored by wlect." " It only exists due to compatibility with the other tools." }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GP, "LOAD_PREFIX", "load-prefix|loadprefix", 0, 0 /* copy of wszst */ }, diff --git a/project/src/ui/tab-wmdlt.inc b/project/src/ui/tab-wmdlt.inc index fb62bb6..033bce5 100644 --- a/project/src/ui/tab-wmdlt.inc +++ b/project/src/ui/tab-wmdlt.inc @@ -241,6 +241,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GMP, "CHDIR", "chdir", 0, 0 /* copy of wszst */ }, diff --git a/project/src/ui/tab-wpatt.inc b/project/src/ui/tab-wpatt.inc index 49cb8f6..26dbb1e 100644 --- a/project/src/ui/tab-wpatt.inc +++ b/project/src/ui/tab-wpatt.inc @@ -206,6 +206,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GMP, "CHDIR", "chdir", 0, 0 /* copy of wszst */ }, diff --git a/project/src/ui/tab-wstrt.inc b/project/src/ui/tab-wstrt.inc index fb182bd..783ef45 100644 --- a/project/src/ui/tab-wstrt.inc +++ b/project/src/ui/tab-wstrt.inc @@ -201,7 +201,7 @@ { T_DEF_CMD, "PATCH", "PATCH", "wstrt PATCH [file]...", - "Patch 'main.dol and 'StaticR.rel' files of Mario Kart Wii." + "Patch 'main.dol' and 'StaticR.rel' files of Mario Kart Wii." " " WILDCARDS_PIPE " No backup is made." }, @@ -275,6 +275,9 @@ { T_OPT_GO, "LE_CODE", "le-code|lecode", 0, 0 /* copy of wszst */ }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, 0 /* copy of wszst */ }, + { T_OPT_GMP, "CHDIR", "chdir", 0, 0 /* copy of wszst */ }, @@ -536,6 +539,10 @@ 0, "Add newest LE-CODE starter from 2023-12 to main.dol." }, + { H_OPT_C, "ADDS_LECODE", "adds-lecode|addslecode", + 0, + "Add newest LE-CODE starter from 2023-12 to main.dol like --add-section does it." }, + { T_OPT_C, "ADD_OLD_LECODE", "add-old-lecode|addoldlecode", 0, "Add old LE-CODE starter from 2019-01 to main.dol." }, @@ -566,7 +573,7 @@ { T_OPT_CP, "ADD_SECTION", "add-section|addsection", "file", "Each option call adds the filename to an internal list." - " Each file must be of type GCT, GCH or WCH." + " Each file must be of type GCT, GCT-TXT, GCH or WCH." " All GCT files together are combined with an internal code handler" " to one section (like a GCH file)." " GCH and WCH define sections and patches. The defined sections" @@ -623,13 +630,14 @@ " Parameter MODE is optional." " If set, OFF disables and ON enables this feature." " For mode AUTO (default) this feature is enabled," - " if the cheat codes are too large or for internal reasons." }, + " if the cheat codes are too large (@end>0x80003000@)" + " or for internal conflicts." }, { T_OPT_CP, "GCT_ADDR", "gct-addr|gctaddr", "address", "If {--gct-move} is active, a text section is created" " to manage the code handler. This section is only needed at start" - " and is placed by default at address 0c802c0000" + " and is placed by default at address 0x802c0000" " (part of BSS, good address for all 4 regions)." " This option changes the start address of the section." " If address is @0@ or invalid, then unused BSS space is searched." }, @@ -648,7 +656,7 @@ " It is dedicated to custom distribution creators for test purposes." " If enabled, a user can load an own instance of Gecko Code Handler" " and cheat codes and can use them online." - " If disabled, pachcing for online modus is disabled if an" + " If disabled, patching for online modus is disabled if an" " alternative Gecko Code Handler is detected." "\n " " Parameter MODE is optional." @@ -1185,6 +1193,7 @@ { T_COPT, "CLEAN_DOL", 0,0,0 }, { T_COPY_GRP, "PATCH", 0,0,0 }, { T_COPT, "ADD_LECODE", 0,0,0 }, + { H_COPT, "ADDS_LECODE", 0,0,0 }, { T_COPT, "ADD_OLD_LECODE",0,0,0 }, { T_COPT, "ADD_CTCODE", 0,0,0 }, { T_COPT, "CT_DIR", 0,0,0 }, diff --git a/project/src/ui/tab-wszst.inc b/project/src/ui/tab-wszst.inc index 3a719f7..25bed25 100644 --- a/project/src/ui/tab-wszst.inc +++ b/project/src/ui/tab-wszst.inc @@ -798,15 +798,15 @@ { T_OPT_GM, "QUIET", "q|quiet", 0, "Be quiet and print only error messages." - " Multiple usage is possible." + " Multiple use is possible. Previous use of --verbose is reverted." " The impact is command dependent." - " In general: If set three times," - " different file format warnings are suppressed." }, + " If set at least three times," + " almost all error messages will be suppressed." }, { T_OPT_GM, "VERBOSE", "v|verbose", 0, "Be verbose and print more progress information." - " Multiple usage is possible." + " Multiple use is possible. Previous use of --quiet is reverted." " The impact is command dependent." }, { T_OPT_GM, "LOGGING", "L|logging|log", @@ -878,6 +878,11 @@ " The optional parameter is deprecated and ignored." "\1 See https://szs.wiimm.de/opt/lecode for details." }, + { T_OPT_G, "LE_04X", "le-04x|le04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots" + " to enable uniform slot numbers if slots >4095 are used." }, + { T_OPT_GP, "LOAD_PREFIX", "load-prefix|loadprefix", "file", "Read in a PREFIX file and replace the internal prefix database with the content." @@ -1483,7 +1488,7 @@ { T_OPT_GP, "MDL", "mdl", "list", "Set global options for MDL processing." - " To enable MDL patching, use option {--patch-file}" + " To enable MDL patching, use option {--patch-files}" " and select BRRES files for patching." "\n " " Parameter @'list'@ is a comma separated list of keywords." @@ -1515,7 +1520,7 @@ " @AUTO, SIMPLE, COMPLEX, BOTH, SILENT@ and @LOG@." "\1 See https://szs.wiimm.de/opt/pat for details." }, - { T_OPT_GP, "PATCH_FILE", "patch-file|patchfile|pfile", + { T_OPT_GP, "PATCH_FILES", "patch-files|patchfiles|pfiles", "list", "Define, which kind of KMP, KCL and BRRES/MDL files are objects" " for patching. @--pfile@ is a short cut." @@ -1526,7 +1531,7 @@ " and all other settings are untouched." "\n " " Keyword @DEFAULT@ resets the default settings (@TRACK,LOG@)" - " and @CLEAR@ disables all." + " and @NONE@ disables all." " The other allowed keywords are:" " @KMP, KCL, OTHER-KCL, ALL-KCL, MODEL, MAP, VRCORN," " OTHER-BRRES, ALL-BRRES, TRACK (=KMP,KCL,MODEL,MAP,VRCORN)," @@ -2223,6 +2228,10 @@ "\1 Read https://szs.wiimm.de/opt/source for more details." }, + { H_OPT_CP, "ID_LIST", "id-list|idlist", + "file", + "Set filename of a SHA1ID file." }, + { T_OPT_CP, "REFERENCE", "ref|reference", "path", "Define a reference SZS." }, @@ -2689,7 +2698,7 @@ { T_COPT, "MDL", 0,0,0 }, { T_COPT, "MINIMAP", 0,0,0 }, { T_COPT, "PAT", 0,0,0 }, - { T_COPT, "PATCH_FILE", 0,0,0 }, + { T_COPT, "PATCH_FILES", 0,0,0 }, { T_COPT, "LT_CLEAR", 0,0,0 }, { T_COPT, "LT_ONLINE", 0,0,0 }, { T_COPT, "LT_N_PLAYERS", 0,0,0 }, @@ -2966,6 +2975,12 @@ { T_COPT, "NO_WILDCARDS", 0,0,0 }, { T_COPT, "IN_ORDER", 0,0,0 }, { T_COPT, "IGNORE", 0,0,0 }, + { T_COPT, "SH", 0,0, + "Quote filenames for sh using '...'." }, + { T_COPT, "BASH", 0,0, + "Ignore --sh and quote filenames for bash using $$'...'." + " Use »eval var=($$(wszst wildcards --bash ...))«" + " to assign the result to a bash array."}, //---------- COMMAND wszst TEST ---------- @@ -3379,6 +3394,7 @@ { T_SEP_OPT, 0,0,0,0 }, { T_COPY_GRP, "SCRIPT", 0,0,0 }, { T_SEP_OPT, 0,0,0,0 }, + { T_COPT, "ID_LIST", 0,0,0 }, { T_COPT, "REFERENCE", 0,0,0 }, { T_COPT, "DEST", 0,0,0 }, { T_COPT, "DEST2", 0,0,0 }, diff --git a/project/src/ui/ui-wbmgt.c b/project/src/ui/ui-wbmgt.c index c3461f6..30fad5f 100644 --- a/project/src/ui/ui-wbmgt.c +++ b/project/src/ui/ui-wbmgt.c @@ -371,15 +371,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -447,6 +449,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " details." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" @@ -570,7 +578,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 69 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 70 }; @@ -732,6 +740,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "long", 0, 0, 'l' }, @@ -888,36 +898,37 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_CHDIR, - /* 0x08e */ OPT_NO_WILDCARDS, - /* 0x08f */ OPT_IN_ORDER, - /* 0x090 */ OPT_POINTS, - /* 0x091 */ OPT_UTF_8, - /* 0x092 */ OPT_NO_UTF_8, - /* 0x093 */ OPT_FORCE, - /* 0x094 */ OPT_REPAIR_MAGICS, - /* 0x095 */ OPT_OLD, - /* 0x096 */ OPT_STD, - /* 0x097 */ OPT_NEW, - /* 0x098 */ OPT_EXTRACT, - /* 0x099 */ OPT_NUMBER, - /* 0x09a */ OPT_ALIGN, - /* 0x09b */ OPT_MACRO_BMG, - /* 0x09c */ OPT_FILTER_BMG, - /* 0x09d */ OPT_BMG_ENDIAN, - /* 0x09e */ OPT_BMG_ENCODING, - /* 0x09f */ OPT_BMG_INF_SIZE, - /* 0x0a0 */ OPT_BMG_MID, - /* 0x0a1 */ OPT_FORCE_ATTRIB, - /* 0x0a2 */ OPT_DEF_ATTRIB, - /* 0x0a3 */ OPT_NO_ATTRIB, - /* 0x0a4 */ OPT_X_ESCAPES, - /* 0x0a5 */ OPT_OLD_ESCAPES, - /* 0x0a6 */ OPT_NO_BMG_COLORS, - /* 0x0a7 */ OPT_BMG_COLORS, - /* 0x0a8 */ OPT_NO_BMG_INLINE, - /* 0x0a9 */ OPT_SECTIONS, - /* 0x0aa */ 0,0,0,0, 0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_CHDIR, + /* 0x08f */ OPT_NO_WILDCARDS, + /* 0x090 */ OPT_IN_ORDER, + /* 0x091 */ OPT_POINTS, + /* 0x092 */ OPT_UTF_8, + /* 0x093 */ OPT_NO_UTF_8, + /* 0x094 */ OPT_FORCE, + /* 0x095 */ OPT_REPAIR_MAGICS, + /* 0x096 */ OPT_OLD, + /* 0x097 */ OPT_STD, + /* 0x098 */ OPT_NEW, + /* 0x099 */ OPT_EXTRACT, + /* 0x09a */ OPT_NUMBER, + /* 0x09b */ OPT_ALIGN, + /* 0x09c */ OPT_MACRO_BMG, + /* 0x09d */ OPT_FILTER_BMG, + /* 0x09e */ OPT_BMG_ENDIAN, + /* 0x09f */ OPT_BMG_ENCODING, + /* 0x0a0 */ OPT_BMG_INF_SIZE, + /* 0x0a1 */ OPT_BMG_MID, + /* 0x0a2 */ OPT_FORCE_ATTRIB, + /* 0x0a3 */ OPT_DEF_ATTRIB, + /* 0x0a4 */ OPT_NO_ATTRIB, + /* 0x0a5 */ OPT_X_ESCAPES, + /* 0x0a6 */ OPT_OLD_ESCAPES, + /* 0x0a7 */ OPT_NO_BMG_COLORS, + /* 0x0a8 */ OPT_BMG_COLORS, + /* 0x0a9 */ OPT_NO_BMG_INLINE, + /* 0x0aa */ OPT_SECTIONS, + /* 0x0ab */ 0,0,0,0, 0, /* 0x0b0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -1101,6 +1112,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_MAX_FILE_SIZE, @@ -1522,7 +1534,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "wbmgt [option]... command [option|parameter|file]...", "Wiimms BMG Tool : Convert and patch raw and text BMG (message) files.", 0, - 29, + 30, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wbmgt.h b/project/src/ui/ui-wbmgt.h index c5b884a..c75aecf 100644 --- a/project/src/ui/ui-wbmgt.h +++ b/project/src/ui/ui-wbmgt.h @@ -114,6 +114,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_CHDIR, OPT_CONST, OPT_MAX_FILE_SIZE, @@ -130,7 +131,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 69 + OPT__N_TOTAL // == 70 } enumOptions; @@ -407,6 +408,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_CHDIR, GO_NO_WILDCARDS, GO_IN_ORDER, diff --git a/project/src/ui/ui-wctct.c b/project/src/ui/ui-wctct.c index 12db700..01f3053 100644 --- a/project/src/ui/ui-wctct.c +++ b/project/src/ui/ui-wctct.c @@ -471,15 +471,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -547,6 +549,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " details." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_OLD_SPINY, false, false, false, false, false, 0, "old-spiny", 0, "Disable the new feature to hold a Spiny Shell at the tail." @@ -707,7 +715,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " 0x3b:0x41 and 0x44:0xfe." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 89 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 90 }; @@ -929,6 +937,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "old-spiny", 0, 0, GO_OLD_SPINY }, { "oldspiny", 0, 0, GO_OLD_SPINY }, { "crs1", 1, 0, GO_CRS1 }, @@ -1114,55 +1124,56 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_OLD_SPINY, - /* 0x08e */ OPT_CRS1, - /* 0x08f */ OPT_CHDIR, - /* 0x090 */ OPT_ROUND, - /* 0x091 */ OPT_NO_WILDCARDS, - /* 0x092 */ OPT_IN_ORDER, - /* 0x093 */ OPT_RAW, - /* 0x094 */ OPT_BMG_ENDIAN, - /* 0x095 */ OPT_BMG_ENCODING, - /* 0x096 */ OPT_BMG_INF_SIZE, - /* 0x097 */ OPT_BMG_MID, - /* 0x098 */ OPT_FORCE_ATTRIB, - /* 0x099 */ OPT_DEF_ATTRIB, - /* 0x09a */ OPT_NO_ATTRIB, - /* 0x09b */ OPT_X_ESCAPES, - /* 0x09c */ OPT_OLD_ESCAPES, - /* 0x09d */ OPT_NO_BMG_COLORS, - /* 0x09e */ OPT_BMG_COLORS, - /* 0x09f */ OPT_NO_BMG_INLINE, - /* 0x0a0 */ OPT_NO_ECHO, - /* 0x0a1 */ OPT_UTF_8, - /* 0x0a2 */ OPT_NO_UTF_8, - /* 0x0a3 */ OPT_FORCE, - /* 0x0a4 */ OPT_REPAIR_MAGICS, - /* 0x0a5 */ OPT_CREATE_DISTRIB, - /* 0x0a6 */ OPT_OLD, - /* 0x0a7 */ OPT_STD, - /* 0x0a8 */ OPT_NEW, - /* 0x0a9 */ OPT_EXTRACT, - /* 0x0aa */ OPT_LIST, - /* 0x0ab */ OPT_REF, - /* 0x0ac */ OPT_FULL, - /* 0x0ad */ OPT_HEX, - /* 0x0ae */ OPT_CT_DIR, - /* 0x0af */ OPT_CT_LOG, - /* 0x0b0 */ OPT_ALLOW_SLOTS, - /* 0x0b1 */ OPT_IMAGES, - /* 0x0b2 */ OPT_LOAD_BMG, - /* 0x0b3 */ OPT_PATCH_BMG, - /* 0x0b4 */ OPT_MACRO_BMG, - /* 0x0b5 */ OPT_FILTER_BMG, - /* 0x0b6 */ OPT_PATCH_NAMES, - /* 0x0b7 */ OPT_ORDER_BY, - /* 0x0b8 */ OPT_ORDER_ALL, - /* 0x0b9 */ OPT_DYNAMIC, - /* 0x0ba */ OPT_WRITE_TRACKS, - /* 0x0bb */ OPT_NUMBER, - /* 0x0bc */ OPT_SECTIONS, - /* 0x0bd */ 0,0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_OLD_SPINY, + /* 0x08f */ OPT_CRS1, + /* 0x090 */ OPT_CHDIR, + /* 0x091 */ OPT_ROUND, + /* 0x092 */ OPT_NO_WILDCARDS, + /* 0x093 */ OPT_IN_ORDER, + /* 0x094 */ OPT_RAW, + /* 0x095 */ OPT_BMG_ENDIAN, + /* 0x096 */ OPT_BMG_ENCODING, + /* 0x097 */ OPT_BMG_INF_SIZE, + /* 0x098 */ OPT_BMG_MID, + /* 0x099 */ OPT_FORCE_ATTRIB, + /* 0x09a */ OPT_DEF_ATTRIB, + /* 0x09b */ OPT_NO_ATTRIB, + /* 0x09c */ OPT_X_ESCAPES, + /* 0x09d */ OPT_OLD_ESCAPES, + /* 0x09e */ OPT_NO_BMG_COLORS, + /* 0x09f */ OPT_BMG_COLORS, + /* 0x0a0 */ OPT_NO_BMG_INLINE, + /* 0x0a1 */ OPT_NO_ECHO, + /* 0x0a2 */ OPT_UTF_8, + /* 0x0a3 */ OPT_NO_UTF_8, + /* 0x0a4 */ OPT_FORCE, + /* 0x0a5 */ OPT_REPAIR_MAGICS, + /* 0x0a6 */ OPT_CREATE_DISTRIB, + /* 0x0a7 */ OPT_OLD, + /* 0x0a8 */ OPT_STD, + /* 0x0a9 */ OPT_NEW, + /* 0x0aa */ OPT_EXTRACT, + /* 0x0ab */ OPT_LIST, + /* 0x0ac */ OPT_REF, + /* 0x0ad */ OPT_FULL, + /* 0x0ae */ OPT_HEX, + /* 0x0af */ OPT_CT_DIR, + /* 0x0b0 */ OPT_CT_LOG, + /* 0x0b1 */ OPT_ALLOW_SLOTS, + /* 0x0b2 */ OPT_IMAGES, + /* 0x0b3 */ OPT_LOAD_BMG, + /* 0x0b4 */ OPT_PATCH_BMG, + /* 0x0b5 */ OPT_MACRO_BMG, + /* 0x0b6 */ OPT_FILTER_BMG, + /* 0x0b7 */ OPT_PATCH_NAMES, + /* 0x0b8 */ OPT_ORDER_BY, + /* 0x0b9 */ OPT_ORDER_ALL, + /* 0x0ba */ OPT_DYNAMIC, + /* 0x0bb */ OPT_WRITE_TRACKS, + /* 0x0bc */ OPT_NUMBER, + /* 0x0bd */ OPT_SECTIONS, + /* 0x0be */ 0,0, /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -1345,6 +1356,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_OLD_SPINY, OptionInfo + OPT_CRS1, OptionInfo + OPT_CHDIR, @@ -1753,7 +1765,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "Wiimms CT-CODE Tool : Manage the CT-CODE extension. BRRES, TEX0," " CT-CODE, CT-TEXT and LE-BIN files are accepted as input.", 0, - 32, + 33, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wctct.h b/project/src/ui/ui-wctct.h index 0c3470d..90c24d1 100644 --- a/project/src/ui/ui-wctct.h +++ b/project/src/ui/ui-wctct.h @@ -129,6 +129,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_OLD_SPINY, OPT_CRS1, OPT_CHDIR, @@ -150,7 +151,7 @@ typedef enum enumOptions OPT_CT_LOG, OPT_ALLOW_SLOTS, - OPT__N_TOTAL // == 89 + OPT__N_TOTAL // == 90 } enumOptions; @@ -475,6 +476,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_OLD_SPINY, GO_CRS1, GO_CHDIR, diff --git a/project/src/ui/ui-wimgt.c b/project/src/ui/ui-wimgt.c index 76ff24e..f762a1d 100644 --- a/project/src/ui/ui-wimgt.c +++ b/project/src/ui/ui-wimgt.c @@ -337,15 +337,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -413,6 +415,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " details." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" @@ -524,7 +532,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 62 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 63 }; @@ -676,6 +684,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "long", 0, 0, 'l' }, @@ -818,29 +828,30 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_CHDIR, - /* 0x08e */ OPT_NO_WILDCARDS, - /* 0x08f */ OPT_IN_ORDER, - /* 0x090 */ OPT_UTF_8, - /* 0x091 */ OPT_NO_UTF_8, - /* 0x092 */ OPT_FORCE, - /* 0x093 */ OPT_REPAIR_MAGICS, - /* 0x094 */ OPT_OLD, - /* 0x095 */ OPT_STD, - /* 0x096 */ OPT_NEW, - /* 0x097 */ OPT_EXTRACT, - /* 0x098 */ OPT_NUMBER, - /* 0x099 */ OPT_MIPMAPS, - /* 0x09a */ OPT_NO_MIPMAPS, - /* 0x09b */ OPT_N_MIPMAPS, - /* 0x09c */ OPT_MAX_MIPMAPS, - /* 0x09d */ OPT_MIPMAP_SIZE, - /* 0x09e */ OPT_FAST_MIPMAPS, - /* 0x09f */ OPT_CMPR_DEFAULT, - /* 0x0a0 */ OPT_PRE_CONVERT, - /* 0x0a1 */ OPT_STRIP, - /* 0x0a2 */ OPT_SECTIONS, - /* 0x0a3 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_CHDIR, + /* 0x08f */ OPT_NO_WILDCARDS, + /* 0x090 */ OPT_IN_ORDER, + /* 0x091 */ OPT_UTF_8, + /* 0x092 */ OPT_NO_UTF_8, + /* 0x093 */ OPT_FORCE, + /* 0x094 */ OPT_REPAIR_MAGICS, + /* 0x095 */ OPT_OLD, + /* 0x096 */ OPT_STD, + /* 0x097 */ OPT_NEW, + /* 0x098 */ OPT_EXTRACT, + /* 0x099 */ OPT_NUMBER, + /* 0x09a */ OPT_MIPMAPS, + /* 0x09b */ OPT_NO_MIPMAPS, + /* 0x09c */ OPT_N_MIPMAPS, + /* 0x09d */ OPT_MAX_MIPMAPS, + /* 0x09e */ OPT_MIPMAP_SIZE, + /* 0x09f */ OPT_FAST_MIPMAPS, + /* 0x0a0 */ OPT_CMPR_DEFAULT, + /* 0x0a1 */ OPT_PRE_CONVERT, + /* 0x0a2 */ OPT_STRIP, + /* 0x0a3 */ OPT_SECTIONS, + /* 0x0a4 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0b0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -971,6 +982,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_MAX_FILE_SIZE, @@ -1288,7 +1300,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "Wiimms Image Tool : Extract and convert graphic images. The file" " formats TPL, TEX, BTI, BREFT and PNG are supported.", 0, - 26, + 27, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wimgt.h b/project/src/ui/ui-wimgt.h index df4f26a..a8312be 100644 --- a/project/src/ui/ui-wimgt.h +++ b/project/src/ui/ui-wimgt.h @@ -108,6 +108,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_CHDIR, OPT_CONST, OPT_MAX_FILE_SIZE, @@ -123,7 +124,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 62 + OPT__N_TOTAL // == 63 } enumOptions; @@ -332,6 +333,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_CHDIR, GO_NO_WILDCARDS, GO_IN_ORDER, diff --git a/project/src/ui/ui-wkclt.c b/project/src/ui/ui-wkclt.c index 93c369e..a537f04 100644 --- a/project/src/ui/ui-wkclt.c +++ b/project/src/ui/ui-wkclt.c @@ -471,15 +471,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -547,6 +549,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " details." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" @@ -709,7 +717,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 82 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 83 }; @@ -1013,6 +1021,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "scale", 1, 0, GO_SCALE }, @@ -1171,50 +1181,51 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_CHDIR, - /* 0x08e */ OPT_SCALE, - /* 0x08f */ OPT_SHIFT, - /* 0x090 */ OPT_XSS, - /* 0x091 */ OPT_YSS, - /* 0x092 */ OPT_ZSS, - /* 0x093 */ OPT_ROT, - /* 0x094 */ OPT_XROT, - /* 0x095 */ OPT_YROT, - /* 0x096 */ OPT_ZROT, - /* 0x097 */ OPT_TRANSLATE, - /* 0x098 */ OPT_NULL, - /* 0x099 */ OPT_NEXT, - /* 0x09a */ OPT_ASCALE, - /* 0x09b */ OPT_AROT, - /* 0x09c */ OPT_TFORM_SCRIPT, - /* 0x09d */ OPT_KCL, - /* 0x09e */ OPT_KCL_FLAG, - /* 0x09f */ OPT_KCL_SCRIPT, - /* 0x0a0 */ OPT_TRI_AREA, - /* 0x0a1 */ OPT_TRI_HEIGHT, - /* 0x0a2 */ OPT_FLAG_FILE, - /* 0x0a3 */ OPT_XTRIDATA, - /* 0x0a4 */ OPT_SLOT, - /* 0x0a5 */ OPT_ID, - /* 0x0a6 */ OPT_BASE64, - /* 0x0a7 */ OPT_DB64, - /* 0x0a8 */ OPT_CODING, - /* 0x0a9 */ OPT_ROUND, - /* 0x0aa */ OPT_NO_WILDCARDS, - /* 0x0ab */ OPT_IN_ORDER, - /* 0x0ac */ OPT_NO_ECHO, - /* 0x0ad */ OPT_UTF_8, - /* 0x0ae */ OPT_NO_UTF_8, - /* 0x0af */ OPT_FORCE, - /* 0x0b0 */ OPT_REPAIR_MAGICS, - /* 0x0b1 */ OPT_TINY, - /* 0x0b2 */ OPT_OLD, - /* 0x0b3 */ OPT_STD, - /* 0x0b4 */ OPT_NEW, - /* 0x0b5 */ OPT_EXTRACT, - /* 0x0b6 */ OPT_NUMBER, - /* 0x0b7 */ OPT_SECTIONS, - /* 0x0b8 */ 0,0,0,0, 0,0,0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_CHDIR, + /* 0x08f */ OPT_SCALE, + /* 0x090 */ OPT_SHIFT, + /* 0x091 */ OPT_XSS, + /* 0x092 */ OPT_YSS, + /* 0x093 */ OPT_ZSS, + /* 0x094 */ OPT_ROT, + /* 0x095 */ OPT_XROT, + /* 0x096 */ OPT_YROT, + /* 0x097 */ OPT_ZROT, + /* 0x098 */ OPT_TRANSLATE, + /* 0x099 */ OPT_NULL, + /* 0x09a */ OPT_NEXT, + /* 0x09b */ OPT_ASCALE, + /* 0x09c */ OPT_AROT, + /* 0x09d */ OPT_TFORM_SCRIPT, + /* 0x09e */ OPT_KCL, + /* 0x09f */ OPT_KCL_FLAG, + /* 0x0a0 */ OPT_KCL_SCRIPT, + /* 0x0a1 */ OPT_TRI_AREA, + /* 0x0a2 */ OPT_TRI_HEIGHT, + /* 0x0a3 */ OPT_FLAG_FILE, + /* 0x0a4 */ OPT_XTRIDATA, + /* 0x0a5 */ OPT_SLOT, + /* 0x0a6 */ OPT_ID, + /* 0x0a7 */ OPT_BASE64, + /* 0x0a8 */ OPT_DB64, + /* 0x0a9 */ OPT_CODING, + /* 0x0aa */ OPT_ROUND, + /* 0x0ab */ OPT_NO_WILDCARDS, + /* 0x0ac */ OPT_IN_ORDER, + /* 0x0ad */ OPT_NO_ECHO, + /* 0x0ae */ OPT_UTF_8, + /* 0x0af */ OPT_NO_UTF_8, + /* 0x0b0 */ OPT_FORCE, + /* 0x0b1 */ OPT_REPAIR_MAGICS, + /* 0x0b2 */ OPT_TINY, + /* 0x0b3 */ OPT_OLD, + /* 0x0b4 */ OPT_STD, + /* 0x0b5 */ OPT_NEW, + /* 0x0b6 */ OPT_EXTRACT, + /* 0x0b7 */ OPT_NUMBER, + /* 0x0b8 */ OPT_SECTIONS, + /* 0x0b9 */ 0,0,0,0, 0,0,0, /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -1457,6 +1468,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_KCL, @@ -2259,7 +2271,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "Wiimms KCL Tool : Analyze, modify, export and create KCL and OBJ" " files.", 0, - 30, + 31, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wkclt.h b/project/src/ui/ui-wkclt.h index 7c27d16..e7caae7 100644 --- a/project/src/ui/ui-wkclt.h +++ b/project/src/ui/ui-wkclt.h @@ -123,6 +123,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_CHDIR, OPT_CONST, OPT_KCL, @@ -143,7 +144,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 82 + OPT__N_TOTAL // == 83 } enumOptions; @@ -485,6 +486,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_CHDIR, GO_SCALE, GO_SHIFT, diff --git a/project/src/ui/ui-wkmpt.c b/project/src/ui/ui-wkmpt.c index f05cdfc..1732e0f 100644 --- a/project/src/ui/ui-wkmpt.c +++ b/project/src/ui/ui-wkmpt.c @@ -563,15 +563,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -639,6 +641,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " details." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" @@ -913,7 +921,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 100 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 101 }; @@ -1230,6 +1238,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "scale", 1, 0, GO_SCALE }, @@ -1423,65 +1433,66 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_CHDIR, - /* 0x08e */ OPT_SCALE, - /* 0x08f */ OPT_SHIFT, - /* 0x090 */ OPT_XSS, - /* 0x091 */ OPT_YSS, - /* 0x092 */ OPT_ZSS, - /* 0x093 */ OPT_ROT, - /* 0x094 */ OPT_XROT, - /* 0x095 */ OPT_YROT, - /* 0x096 */ OPT_ZROT, - /* 0x097 */ OPT_YPOS, - /* 0x098 */ OPT_TRANSLATE, - /* 0x099 */ OPT_NULL, - /* 0x09a */ OPT_NEXT, - /* 0x09b */ OPT_ASCALE, - /* 0x09c */ OPT_AROT, - /* 0x09d */ OPT_TFORM_SCRIPT, - /* 0x09e */ OPT_RM_GOBJ, - /* 0x09f */ OPT_BATTLE, - /* 0x0a0 */ OPT_EXPORT_FLAGS, - /* 0x0a1 */ OPT_ROUTE_OPTIONS, - /* 0x0a2 */ OPT_WIM0, - /* 0x0a3 */ OPT_SLOT, - /* 0x0a4 */ OPT_POS_MODE, - /* 0x0a5 */ OPT_POS_FILE, - /* 0x0a6 */ OPT_PNG, - /* 0x0a7 */ OPT_LOAD_KCL, - /* 0x0a8 */ OPT_KCL, - /* 0x0a9 */ OPT_KCL_FLAG, - /* 0x0aa */ OPT_KCL_SCRIPT, - /* 0x0ab */ OPT_TRI_AREA, - /* 0x0ac */ OPT_TRI_HEIGHT, - /* 0x0ad */ OPT_FLAG_FILE, - /* 0x0ae */ OPT_XTRIDATA, - /* 0x0af */ OPT_KMP, - /* 0x0b0 */ OPT_N_LAPS, - /* 0x0b1 */ OPT_SPEED_MOD, - /* 0x0b2 */ OPT_KTPT2, - /* 0x0b3 */ OPT_TFORM_KMP, - /* 0x0b4 */ OPT_REPAIR_XPF, - /* 0x0b5 */ OPT_GAMEMODES, - /* 0x0b6 */ OPT_ROUND, - /* 0x0b7 */ OPT_NO_WILDCARDS, - /* 0x0b8 */ OPT_IN_ORDER, - /* 0x0b9 */ OPT_EPSILON, - /* 0x0ba */ OPT_DIFF, - /* 0x0bb */ OPT_NO_ECHO, - /* 0x0bc */ OPT_UTF_8, - /* 0x0bd */ OPT_NO_UTF_8, - /* 0x0be */ OPT_FORCE, - /* 0x0bf */ OPT_REPAIR_MAGICS, - /* 0x0c0 */ OPT_TINY, - /* 0x0c1 */ OPT_OLD, - /* 0x0c2 */ OPT_STD, - /* 0x0c3 */ OPT_NEW, - /* 0x0c4 */ OPT_EXTRACT, - /* 0x0c5 */ OPT_NUMBER, - /* 0x0c6 */ OPT_SECTIONS, - /* 0x0c7 */ 0,0,0,0, 0,0,0,0, 0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_CHDIR, + /* 0x08f */ OPT_SCALE, + /* 0x090 */ OPT_SHIFT, + /* 0x091 */ OPT_XSS, + /* 0x092 */ OPT_YSS, + /* 0x093 */ OPT_ZSS, + /* 0x094 */ OPT_ROT, + /* 0x095 */ OPT_XROT, + /* 0x096 */ OPT_YROT, + /* 0x097 */ OPT_ZROT, + /* 0x098 */ OPT_YPOS, + /* 0x099 */ OPT_TRANSLATE, + /* 0x09a */ OPT_NULL, + /* 0x09b */ OPT_NEXT, + /* 0x09c */ OPT_ASCALE, + /* 0x09d */ OPT_AROT, + /* 0x09e */ OPT_TFORM_SCRIPT, + /* 0x09f */ OPT_RM_GOBJ, + /* 0x0a0 */ OPT_BATTLE, + /* 0x0a1 */ OPT_EXPORT_FLAGS, + /* 0x0a2 */ OPT_ROUTE_OPTIONS, + /* 0x0a3 */ OPT_WIM0, + /* 0x0a4 */ OPT_SLOT, + /* 0x0a5 */ OPT_POS_MODE, + /* 0x0a6 */ OPT_POS_FILE, + /* 0x0a7 */ OPT_PNG, + /* 0x0a8 */ OPT_LOAD_KCL, + /* 0x0a9 */ OPT_KCL, + /* 0x0aa */ OPT_KCL_FLAG, + /* 0x0ab */ OPT_KCL_SCRIPT, + /* 0x0ac */ OPT_TRI_AREA, + /* 0x0ad */ OPT_TRI_HEIGHT, + /* 0x0ae */ OPT_FLAG_FILE, + /* 0x0af */ OPT_XTRIDATA, + /* 0x0b0 */ OPT_KMP, + /* 0x0b1 */ OPT_N_LAPS, + /* 0x0b2 */ OPT_SPEED_MOD, + /* 0x0b3 */ OPT_KTPT2, + /* 0x0b4 */ OPT_TFORM_KMP, + /* 0x0b5 */ OPT_REPAIR_XPF, + /* 0x0b6 */ OPT_GAMEMODES, + /* 0x0b7 */ OPT_ROUND, + /* 0x0b8 */ OPT_NO_WILDCARDS, + /* 0x0b9 */ OPT_IN_ORDER, + /* 0x0ba */ OPT_EPSILON, + /* 0x0bb */ OPT_DIFF, + /* 0x0bc */ OPT_NO_ECHO, + /* 0x0bd */ OPT_UTF_8, + /* 0x0be */ OPT_NO_UTF_8, + /* 0x0bf */ OPT_FORCE, + /* 0x0c0 */ OPT_REPAIR_MAGICS, + /* 0x0c1 */ OPT_TINY, + /* 0x0c2 */ OPT_OLD, + /* 0x0c3 */ OPT_STD, + /* 0x0c4 */ OPT_NEW, + /* 0x0c5 */ OPT_EXTRACT, + /* 0x0c6 */ OPT_NUMBER, + /* 0x0c7 */ OPT_SECTIONS, + /* 0x0c8 */ 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0f0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -1711,6 +1722,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_BATTLE, @@ -2322,7 +2334,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "Wiimms KMP Tool : Analyze, modify, export and create (compile) KMP" " files.", 0, - 39, + 40, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wkmpt.h b/project/src/ui/ui-wkmpt.h index f3ec012..b5c0e5e 100644 --- a/project/src/ui/ui-wkmpt.h +++ b/project/src/ui/ui-wkmpt.h @@ -131,6 +131,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_CHDIR, OPT_CONST, OPT_BATTLE, @@ -161,7 +162,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 100 + OPT__N_TOTAL // == 101 } enumOptions; @@ -503,6 +504,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_CHDIR, GO_SCALE, GO_SHIFT, diff --git a/project/src/ui/ui-wlect.c b/project/src/ui/ui-wlect.c index b7093fb..29f4faf 100644 --- a/project/src/ui/ui-wlect.c +++ b/project/src/ui/ui-wlect.c @@ -465,15 +465,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -540,6 +542,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " compatibility with the other tools." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_LOAD_PREFIX, false, false, false, false, false, 0, "load-prefix", "file", "Read in a PREFIX file and replace the internal prefix database with" @@ -699,7 +707,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 91 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 92 }; @@ -905,6 +913,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "load-prefix", 1, 0, GO_LOAD_PREFIX }, { "loadprefix", 1, 0, GO_LOAD_PREFIX }, { "load-category", 1, 0, GO_LOAD_CATEGORY }, @@ -1092,60 +1102,61 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_LOAD_PREFIX, - /* 0x08e */ OPT_LOAD_CATEGORY, - /* 0x08f */ OPT_PLUS, - /* 0x090 */ OPT_CHDIR, - /* 0x091 */ OPT_ROUND, - /* 0x092 */ OPT_NO_WILDCARDS, - /* 0x093 */ OPT_IN_ORDER, - /* 0x094 */ OPT_NO_ECHO, - /* 0x095 */ OPT_UTF_8, - /* 0x096 */ OPT_NO_UTF_8, - /* 0x097 */ OPT_CACHE, - /* 0x098 */ OPT_LOG_CACHE, - /* 0x099 */ OPT_LT_CLEAR, - /* 0x09a */ OPT_LT_ONLINE, - /* 0x09b */ OPT_LT_N_PLAYERS, - /* 0x09c */ OPT_LT_COND_BIT, - /* 0x09d */ OPT_LT_GAME_MODE, - /* 0x09e */ OPT_LT_ENGINE, - /* 0x09f */ OPT_LT_RANDOM, - /* 0x0a0 */ OPT_LEX_PURGE, - /* 0x0a1 */ OPT_LEX_RM_FEAT, - /* 0x0a2 */ OPT_FORCE, - /* 0x0a3 */ OPT_REPAIR_MAGICS, - /* 0x0a4 */ OPT_CREATE_DISTRIB, - /* 0x0a5 */ OPT_OLD, - /* 0x0a6 */ OPT_STD, - /* 0x0a7 */ OPT_NEW, - /* 0x0a8 */ OPT_EXTRACT, - /* 0x0a9 */ OPT_LE_DEFINE, - /* 0x0aa */ OPT_LE_ARENA, - /* 0x0ab */ OPT_LPAR, - /* 0x0ac */ OPT_ALIAS, - /* 0x0ad */ OPT_ENGINE, - /* 0x0ae */ OPT_200CC, - /* 0x0af */ OPT_PERFMON, - /* 0x0b0 */ OPT_CUSTOM_TT, - /* 0x0b1 */ OPT_XPFLAGS, - /* 0x0b2 */ OPT_SPEEDOMETER, - /* 0x0b3 */ OPT_DEBUG, - /* 0x0b4 */ OPT_TRACK_DIR, - /* 0x0b5 */ OPT_COPY_TRACKS, - /* 0x0b6 */ OPT_MOVE_TRACKS, - /* 0x0b7 */ OPT_MOVE1_TRACKS, - /* 0x0b8 */ OPT_LINK_TRACKS, - /* 0x0b9 */ OPT_SZS_MODE, - /* 0x0ba */ OPT_LOAD_BMG, - /* 0x0bb */ OPT_PATCH_BMG, - /* 0x0bc */ OPT_MACRO_BMG, - /* 0x0bd */ OPT_PATCH_NAMES, - /* 0x0be */ OPT_ORDER_BY, - /* 0x0bf */ OPT_ORDER_ALL, - /* 0x0c0 */ OPT_NUMBER, - /* 0x0c1 */ OPT_SECTIONS, - /* 0x0c2 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_LOAD_PREFIX, + /* 0x08f */ OPT_LOAD_CATEGORY, + /* 0x090 */ OPT_PLUS, + /* 0x091 */ OPT_CHDIR, + /* 0x092 */ OPT_ROUND, + /* 0x093 */ OPT_NO_WILDCARDS, + /* 0x094 */ OPT_IN_ORDER, + /* 0x095 */ OPT_NO_ECHO, + /* 0x096 */ OPT_UTF_8, + /* 0x097 */ OPT_NO_UTF_8, + /* 0x098 */ OPT_CACHE, + /* 0x099 */ OPT_LOG_CACHE, + /* 0x09a */ OPT_LT_CLEAR, + /* 0x09b */ OPT_LT_ONLINE, + /* 0x09c */ OPT_LT_N_PLAYERS, + /* 0x09d */ OPT_LT_COND_BIT, + /* 0x09e */ OPT_LT_GAME_MODE, + /* 0x09f */ OPT_LT_ENGINE, + /* 0x0a0 */ OPT_LT_RANDOM, + /* 0x0a1 */ OPT_LEX_PURGE, + /* 0x0a2 */ OPT_LEX_RM_FEAT, + /* 0x0a3 */ OPT_FORCE, + /* 0x0a4 */ OPT_REPAIR_MAGICS, + /* 0x0a5 */ OPT_CREATE_DISTRIB, + /* 0x0a6 */ OPT_OLD, + /* 0x0a7 */ OPT_STD, + /* 0x0a8 */ OPT_NEW, + /* 0x0a9 */ OPT_EXTRACT, + /* 0x0aa */ OPT_LE_DEFINE, + /* 0x0ab */ OPT_LE_ARENA, + /* 0x0ac */ OPT_LPAR, + /* 0x0ad */ OPT_ALIAS, + /* 0x0ae */ OPT_ENGINE, + /* 0x0af */ OPT_200CC, + /* 0x0b0 */ OPT_PERFMON, + /* 0x0b1 */ OPT_CUSTOM_TT, + /* 0x0b2 */ OPT_XPFLAGS, + /* 0x0b3 */ OPT_SPEEDOMETER, + /* 0x0b4 */ OPT_DEBUG, + /* 0x0b5 */ OPT_TRACK_DIR, + /* 0x0b6 */ OPT_COPY_TRACKS, + /* 0x0b7 */ OPT_MOVE_TRACKS, + /* 0x0b8 */ OPT_MOVE1_TRACKS, + /* 0x0b9 */ OPT_LINK_TRACKS, + /* 0x0ba */ OPT_SZS_MODE, + /* 0x0bb */ OPT_LOAD_BMG, + /* 0x0bc */ OPT_PATCH_BMG, + /* 0x0bd */ OPT_MACRO_BMG, + /* 0x0be */ OPT_PATCH_NAMES, + /* 0x0bf */ OPT_ORDER_BY, + /* 0x0c0 */ OPT_ORDER_ALL, + /* 0x0c1 */ OPT_NUMBER, + /* 0x0c2 */ OPT_SECTIONS, + /* 0x0c3 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0f0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -1369,6 +1380,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_LOAD_PREFIX, OptionInfo + OPT_LOAD_CATEGORY, OptionInfo + OPT_CHDIR, @@ -1950,7 +1962,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "wlect [option]... command [option|parameter|file]...", "Wiimms LE-CODE Tool : Manage the LE-CODE and LEX extensions.", 0, - 36, + 37, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wlect.h b/project/src/ui/ui-wlect.h index 5b3c6b4..5c46558 100644 --- a/project/src/ui/ui-wlect.h +++ b/project/src/ui/ui-wlect.h @@ -129,6 +129,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_LOAD_PREFIX, OPT_LOAD_CATEGORY, OPT_CHDIR, @@ -152,7 +153,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 91 + OPT__N_TOTAL // == 92 } enumOptions; @@ -474,6 +475,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_LOAD_PREFIX, GO_LOAD_CATEGORY, GO_PLUS, diff --git a/project/src/ui/ui-wmdlt.c b/project/src/ui/ui-wmdlt.c index fe6a6e2..e2361c8 100644 --- a/project/src/ui/ui-wmdlt.c +++ b/project/src/ui/ui-wmdlt.c @@ -393,15 +393,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -468,6 +470,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " compatibility with the other tools." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" @@ -490,7 +498,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_MDL, false, false, false, false, false, 0, "mdl", "list", "Set global options for MDL processing. To enable MDL patching, use" - " option --patch-file and select BRRES files for patching.\n" + " option --patch-files and select BRRES files for patching.\n" " Parameter 'list' is a comma separated list of keywords. A minus" " sign before a keyword disables a setting. Each occurrence of the" " option will only change entered settings and all other settings are" @@ -601,7 +609,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 71 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 72 }; @@ -791,6 +799,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "mdl", 1, 0, GO_MDL }, @@ -928,39 +938,40 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_CHDIR, - /* 0x08e */ OPT_MDL, - /* 0x08f */ OPT_SCALE, - /* 0x090 */ OPT_SHIFT, - /* 0x091 */ OPT_XSS, - /* 0x092 */ OPT_YSS, - /* 0x093 */ OPT_ZSS, - /* 0x094 */ OPT_ROT, - /* 0x095 */ OPT_XROT, - /* 0x096 */ OPT_YROT, - /* 0x097 */ OPT_ZROT, - /* 0x098 */ OPT_TRANSLATE, - /* 0x099 */ OPT_NULL, - /* 0x09a */ OPT_NEXT, - /* 0x09b */ OPT_ASCALE, - /* 0x09c */ OPT_AROT, - /* 0x09d */ OPT_TFORM_SCRIPT, - /* 0x09e */ OPT_ROUND, - /* 0x09f */ OPT_NO_WILDCARDS, - /* 0x0a0 */ OPT_IN_ORDER, - /* 0x0a1 */ OPT_NO_ECHO, - /* 0x0a2 */ OPT_UTF_8, - /* 0x0a3 */ OPT_NO_UTF_8, - /* 0x0a4 */ OPT_FORCE, - /* 0x0a5 */ OPT_REPAIR_MAGICS, - /* 0x0a6 */ OPT_TINY, - /* 0x0a7 */ OPT_OLD, - /* 0x0a8 */ OPT_STD, - /* 0x0a9 */ OPT_NEW, - /* 0x0aa */ OPT_EXTRACT, - /* 0x0ab */ OPT_NUMBER, - /* 0x0ac */ OPT_SECTIONS, - /* 0x0ad */ 0,0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_CHDIR, + /* 0x08f */ OPT_MDL, + /* 0x090 */ OPT_SCALE, + /* 0x091 */ OPT_SHIFT, + /* 0x092 */ OPT_XSS, + /* 0x093 */ OPT_YSS, + /* 0x094 */ OPT_ZSS, + /* 0x095 */ OPT_ROT, + /* 0x096 */ OPT_XROT, + /* 0x097 */ OPT_YROT, + /* 0x098 */ OPT_ZROT, + /* 0x099 */ OPT_TRANSLATE, + /* 0x09a */ OPT_NULL, + /* 0x09b */ OPT_NEXT, + /* 0x09c */ OPT_ASCALE, + /* 0x09d */ OPT_AROT, + /* 0x09e */ OPT_TFORM_SCRIPT, + /* 0x09f */ OPT_ROUND, + /* 0x0a0 */ OPT_NO_WILDCARDS, + /* 0x0a1 */ OPT_IN_ORDER, + /* 0x0a2 */ OPT_NO_ECHO, + /* 0x0a3 */ OPT_UTF_8, + /* 0x0a4 */ OPT_NO_UTF_8, + /* 0x0a5 */ OPT_FORCE, + /* 0x0a6 */ OPT_REPAIR_MAGICS, + /* 0x0a7 */ OPT_TINY, + /* 0x0a8 */ OPT_OLD, + /* 0x0a9 */ OPT_STD, + /* 0x0aa */ OPT_NEW, + /* 0x0ab */ OPT_EXTRACT, + /* 0x0ac */ OPT_NUMBER, + /* 0x0ad */ OPT_SECTIONS, + /* 0x0ae */ 0,0, /* 0x0b0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -1138,6 +1149,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_MDL, @@ -1546,7 +1558,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "wmdlt [option]... command [option|parameter|file]...", "Wiimms MDL Tool : Decode raw MDL and encode text MDL files.", 0, - 28, + 29, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wmdlt.h b/project/src/ui/ui-wmdlt.h index fc46944..28e7af6 100644 --- a/project/src/ui/ui-wmdlt.h +++ b/project/src/ui/ui-wmdlt.h @@ -115,6 +115,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_CHDIR, OPT_CONST, OPT_MDL, @@ -132,7 +133,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 71 + OPT__N_TOTAL // == 72 } enumOptions; @@ -397,6 +398,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_CHDIR, GO_MDL, GO_SCALE, diff --git a/project/src/ui/ui-wpatt.c b/project/src/ui/ui-wpatt.c index b76739a..a7f0f69 100644 --- a/project/src/ui/ui-wpatt.c +++ b/project/src/ui/ui-wpatt.c @@ -235,15 +235,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -310,6 +312,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " compatibility with the other tools." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" @@ -432,7 +440,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 55 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 56 }; @@ -588,6 +596,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "round", 0, 0, GO_ROUND }, @@ -707,23 +717,24 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_CHDIR, - /* 0x08e */ OPT_ROUND, - /* 0x08f */ OPT_NO_WILDCARDS, - /* 0x090 */ OPT_IN_ORDER, - /* 0x091 */ OPT_NO_ECHO, - /* 0x092 */ OPT_PAT, - /* 0x093 */ OPT_UTF_8, - /* 0x094 */ OPT_NO_UTF_8, - /* 0x095 */ OPT_FORCE, - /* 0x096 */ OPT_REPAIR_MAGICS, - /* 0x097 */ OPT_OLD, - /* 0x098 */ OPT_STD, - /* 0x099 */ OPT_NEW, - /* 0x09a */ OPT_EXTRACT, - /* 0x09b */ OPT_NUMBER, - /* 0x09c */ OPT_SECTIONS, - /* 0x09d */ 0,0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_CHDIR, + /* 0x08f */ OPT_ROUND, + /* 0x090 */ OPT_NO_WILDCARDS, + /* 0x091 */ OPT_IN_ORDER, + /* 0x092 */ OPT_NO_ECHO, + /* 0x093 */ OPT_PAT, + /* 0x094 */ OPT_UTF_8, + /* 0x095 */ OPT_NO_UTF_8, + /* 0x096 */ OPT_FORCE, + /* 0x097 */ OPT_REPAIR_MAGICS, + /* 0x098 */ OPT_OLD, + /* 0x099 */ OPT_STD, + /* 0x09a */ OPT_NEW, + /* 0x09b */ OPT_EXTRACT, + /* 0x09c */ OPT_NUMBER, + /* 0x09d */ OPT_SECTIONS, + /* 0x09e */ 0,0, /* 0x0a0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0b0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -860,6 +871,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_MAX_FILE_SIZE, @@ -1078,7 +1090,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "wpatt [option]... command [option|parameter|file]...", "Wiimms PAT Tool : Decode raw PAT and encode text PAT files.", 0, - 27, + 28, option_tab_tool, 0 }, diff --git a/project/src/ui/ui-wpatt.h b/project/src/ui/ui-wpatt.h index b8ad8b1..ca89e6b 100644 --- a/project/src/ui/ui-wpatt.h +++ b/project/src/ui/ui-wpatt.h @@ -100,6 +100,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_CHDIR, OPT_CONST, OPT_MAX_FILE_SIZE, @@ -116,7 +117,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 55 + OPT__N_TOTAL // == 56 } enumOptions; @@ -314,6 +315,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_CHDIR, GO_ROUND, GO_NO_WILDCARDS, diff --git a/project/src/ui/ui-wstrt.c b/project/src/ui/ui-wstrt.c index 2462f8e..2d6cd05 100644 --- a/project/src/ui/ui-wstrt.c +++ b/project/src/ui/ui-wstrt.c @@ -166,6 +166,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = "Add newest LE-CODE starter from 2023-12 to main.dol." }, + { OPT_ADDS_LECODE, false, true, false, false, false, 0, "adds-lecode", + 0, + "Add newest LE-CODE starter from 2023-12 to main.dol like" + " --add-section does it." + }, + { OPT_ADD_OLD_LECODE, false, false, false, false, false, 0, "add-old-lecode", 0, "Add old LE-CODE starter from 2019-01 to main.dol." @@ -192,12 +198,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_ADD_SECTION, false, false, false, false, false, 0, "add-section", "file", "Each option call adds the filename to an internal list. Each file" - " must be of type GCT, GCH or WCH. All GCT files together are combined" - " with an internal code handler to one section (like a GCH file). GCH" - " and WCH define sections and patches. The defined sections are added" - " and VBI hooks are optionally initialized. Use option --force to" - " allow overlapped sections. Use option --verbose up to 2 times for a" - " log.\n" + " must be of type GCT, GCT-TXT, GCH or WCH. All GCT files together are" + " combined with an internal code handler to one section (like a GCH" + " file). GCH and WCH define sections and patches. The defined sections" + " are added and VBI hooks are optionally initialized. Use option" + " --force to allow overlapped sections. Use option --verbose up to 2" + " times for a log.\n" " If parameter FILE contains at least one wildcard (e.g. \"*.GCT\")," " then FILE is used as search pattern and all found files are added." " Quote FILE for this purpose. \n" @@ -248,14 +254,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " the heap smaller and move the cheat codes before the FST section.\n" " Parameter MODE is optional. If set, OFF disables and ON enables" " this feature. For mode AUTO (default) this feature is enabled, if" - " the cheat codes are too large or for internal reasons." + " the cheat codes are too large (end>0x80003000) or for internal" + " conflicts." }, { OPT_GCT_ADDR, false, false, false, false, false, 0, "gct-addr", "address", "If --gct-move is active, a text section is created to manage the code" " handler. This section is only needed at start and is placed by" - " default at address 0c802c0000 (part of BSS, good address for all 4" + " default at address 0x802c0000 (part of BSS, good address for all 4" " regions). This option changes the start address of the section. If" " address is 0 or invalid, then unused BSS space is searched." }, @@ -273,7 +280,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " This option is only relevant, if main.dol is patched for wiimmfi.de." " It is dedicated to custom distribution creators for test purposes." " If enabled, a user can load an own instance of Gecko Code Handler" - " and cheat codes and can use them online. If disabled, pachcing for" + " and cheat codes and can use them online. If disabled, patching for" " online modus is disabled if an alternative Gecko Code Handler is" " detected.\n" " Parameter MODE is optional. If set, OFF disables and ON enables" @@ -511,7 +518,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " dependent (multiple of format size)." }, - {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 69 + {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 70 //----- global options ----- @@ -583,15 +590,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -658,6 +667,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " compatibility with the other tools." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_CHDIR, false, false, false, false, false, 0, "chdir", "dir", "Set a new working directory for all following options, for all" @@ -929,7 +944,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " directory." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 124 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 126 }; @@ -1173,6 +1188,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "chdir", 1, 0, GO_CHDIR }, { "const", 1, 0, 'c' }, { "long", 0, 0, 'l' }, @@ -1246,6 +1263,8 @@ static const struct option OptionLong[] = { "cleandol", 0, 0, GO_CLEAN_DOL }, { "add-lecode", 0, 0, GO_ADD_LECODE }, { "addlecode", 0, 0, GO_ADD_LECODE }, + { "adds-lecode", 0, 0, GO_ADDS_LECODE }, + { "addslecode", 0, 0, GO_ADDS_LECODE }, { "add-old-lecode", 0, 0, GO_ADD_OLD_LECODE }, { "addoldlecode", 0, 0, GO_ADD_OLD_LECODE }, { "add-ctcode", 0, 0, GO_ADD_CTCODE }, @@ -1393,91 +1412,93 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_CHDIR, - /* 0x08e */ OPT_NO_WILDCARDS, - /* 0x08f */ OPT_IN_ORDER, - /* 0x090 */ OPT_VS_REGION, - /* 0x091 */ OPT_BT_REGION, - /* 0x092 */ OPT_ALL_RANKS, - /* 0x093 */ OPT_POINTS, - /* 0x094 */ OPT_CHEAT, - /* 0x095 */ OPT_HTTPS, - /* 0x096 */ OPT_DOMAIN, - /* 0x097 */ OPT_WIIMMFI, - /* 0x098 */ OPT_TWIIMMFI, - /* 0x099 */ OPT_WC24, - /* 0x09a */ OPT_WCODE, - /* 0x09b */ OPT_ADD_WCODE, - /* 0x09c */ OPT_PB_MODE, - /* 0x09d */ OPT_PATCHED_BY, - /* 0x09e */ OPT_VS, - /* 0x09f */ OPT_VS2, - /* 0x0a0 */ OPT_BT, - /* 0x0a1 */ OPT_BT2, - /* 0x0a2 */ OPT_CANNON, - /* 0x0a3 */ OPT_MENO, - /* 0x0a4 */ OPT_UTF_8, - /* 0x0a5 */ OPT_NO_UTF_8, - /* 0x0a6 */ OPT_FORCE, - /* 0x0a7 */ OPT_REPAIR_MAGICS, - /* 0x0a8 */ OPT_OLD, - /* 0x0a9 */ OPT_STD, - /* 0x0aa */ OPT_NEW, - /* 0x0ab */ OPT_EXTRACT, - /* 0x0ac */ OPT_NUMBER, - /* 0x0ad */ OPT_CLEAN_DOL, - /* 0x0ae */ OPT_ADD_LECODE, - /* 0x0af */ OPT_ADD_OLD_LECODE, - /* 0x0b0 */ OPT_ADD_CTCODE, - /* 0x0b1 */ OPT_CT_DIR, - /* 0x0b2 */ OPT_MOVE_D8, - /* 0x0b3 */ OPT_ADD_SECTION, - /* 0x0b4 */ OPT_FULL_GCH, - /* 0x0b5 */ OPT_GCT_NO_SEP, - /* 0x0b6 */ OPT_GCT_SEP, - /* 0x0b7 */ OPT_GCT_ASM_SEP, - /* 0x0b8 */ OPT_GCT_LIST, - /* 0x0b9 */ OPT_GCT_MOVE, - /* 0x0ba */ OPT_GCT_ADDR, - /* 0x0bb */ OPT_GCT_SPACE, - /* 0x0bc */ OPT_ALLOW_USER_GCH, - /* 0x0bd */ OPT_CREATE_SECT, - /* 0x0be */ OPT_WPF, - /* 0x0bf */ OPT_SECTIONS, - /* 0x0c0 */ OPT_PORT_DB, - /* 0x0c1 */ OPT_ORDER, - /* 0x0c2 */ OPT_VADDR, - /* 0x0c3 */ OPT_FADDR, - /* 0x0c4 */ OPT_SNAME, - /* 0x0c5 */ OPT_INT1, - /* 0x0c6 */ OPT_INT2, - /* 0x0c7 */ OPT_INT3, - /* 0x0c8 */ OPT_INT4, - /* 0x0c9 */ OPT_INT5, - /* 0x0ca */ OPT_INT6, - /* 0x0cb */ OPT_INT7, - /* 0x0cc */ OPT_INT8, - /* 0x0cd */ OPT_FLOAT, - /* 0x0ce */ OPT_DOUBLE, - /* 0x0cf */ OPT_LE, - /* 0x0d0 */ OPT_BE, - /* 0x0d1 */ OPT_ZEROS, - /* 0x0d2 */ OPT_HEX, - /* 0x0d3 */ OPT_DEC, - /* 0x0d4 */ OPT_C_SYNTAX, - /* 0x0d5 */ OPT_ADDR, - /* 0x0d6 */ OPT_ALIGN, - /* 0x0d7 */ OPT_TRIGGER, - /* 0x0d8 */ OPT_NO_ADDR, - /* 0x0d9 */ OPT_NO_NUMBERS, - /* 0x0da */ OPT_NO_TEXT, - /* 0x0db */ OPT_FORMAT, - /* 0x0dc */ OPT_NO_NULL, - /* 0x0dd */ OPT_NARROW, - /* 0x0de */ OPT_SMALL, - /* 0x0df */ OPT_WIDE, - /* 0x0e0 */ OPT_BYTES, - /* 0x0e1 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_CHDIR, + /* 0x08f */ OPT_NO_WILDCARDS, + /* 0x090 */ OPT_IN_ORDER, + /* 0x091 */ OPT_VS_REGION, + /* 0x092 */ OPT_BT_REGION, + /* 0x093 */ OPT_ALL_RANKS, + /* 0x094 */ OPT_POINTS, + /* 0x095 */ OPT_CHEAT, + /* 0x096 */ OPT_HTTPS, + /* 0x097 */ OPT_DOMAIN, + /* 0x098 */ OPT_WIIMMFI, + /* 0x099 */ OPT_TWIIMMFI, + /* 0x09a */ OPT_WC24, + /* 0x09b */ OPT_WCODE, + /* 0x09c */ OPT_ADD_WCODE, + /* 0x09d */ OPT_PB_MODE, + /* 0x09e */ OPT_PATCHED_BY, + /* 0x09f */ OPT_VS, + /* 0x0a0 */ OPT_VS2, + /* 0x0a1 */ OPT_BT, + /* 0x0a2 */ OPT_BT2, + /* 0x0a3 */ OPT_CANNON, + /* 0x0a4 */ OPT_MENO, + /* 0x0a5 */ OPT_UTF_8, + /* 0x0a6 */ OPT_NO_UTF_8, + /* 0x0a7 */ OPT_FORCE, + /* 0x0a8 */ OPT_REPAIR_MAGICS, + /* 0x0a9 */ OPT_OLD, + /* 0x0aa */ OPT_STD, + /* 0x0ab */ OPT_NEW, + /* 0x0ac */ OPT_EXTRACT, + /* 0x0ad */ OPT_NUMBER, + /* 0x0ae */ OPT_CLEAN_DOL, + /* 0x0af */ OPT_ADD_LECODE, + /* 0x0b0 */ OPT_ADDS_LECODE, + /* 0x0b1 */ OPT_ADD_OLD_LECODE, + /* 0x0b2 */ OPT_ADD_CTCODE, + /* 0x0b3 */ OPT_CT_DIR, + /* 0x0b4 */ OPT_MOVE_D8, + /* 0x0b5 */ OPT_ADD_SECTION, + /* 0x0b6 */ OPT_FULL_GCH, + /* 0x0b7 */ OPT_GCT_NO_SEP, + /* 0x0b8 */ OPT_GCT_SEP, + /* 0x0b9 */ OPT_GCT_ASM_SEP, + /* 0x0ba */ OPT_GCT_LIST, + /* 0x0bb */ OPT_GCT_MOVE, + /* 0x0bc */ OPT_GCT_ADDR, + /* 0x0bd */ OPT_GCT_SPACE, + /* 0x0be */ OPT_ALLOW_USER_GCH, + /* 0x0bf */ OPT_CREATE_SECT, + /* 0x0c0 */ OPT_WPF, + /* 0x0c1 */ OPT_SECTIONS, + /* 0x0c2 */ OPT_PORT_DB, + /* 0x0c3 */ OPT_ORDER, + /* 0x0c4 */ OPT_VADDR, + /* 0x0c5 */ OPT_FADDR, + /* 0x0c6 */ OPT_SNAME, + /* 0x0c7 */ OPT_INT1, + /* 0x0c8 */ OPT_INT2, + /* 0x0c9 */ OPT_INT3, + /* 0x0ca */ OPT_INT4, + /* 0x0cb */ OPT_INT5, + /* 0x0cc */ OPT_INT6, + /* 0x0cd */ OPT_INT7, + /* 0x0ce */ OPT_INT8, + /* 0x0cf */ OPT_FLOAT, + /* 0x0d0 */ OPT_DOUBLE, + /* 0x0d1 */ OPT_LE, + /* 0x0d2 */ OPT_BE, + /* 0x0d3 */ OPT_ZEROS, + /* 0x0d4 */ OPT_HEX, + /* 0x0d5 */ OPT_DEC, + /* 0x0d6 */ OPT_C_SYNTAX, + /* 0x0d7 */ OPT_ADDR, + /* 0x0d8 */ OPT_ALIGN, + /* 0x0d9 */ OPT_TRIGGER, + /* 0x0da */ OPT_NO_ADDR, + /* 0x0db */ OPT_NO_NUMBERS, + /* 0x0dc */ OPT_NO_TEXT, + /* 0x0dd */ OPT_FORMAT, + /* 0x0de */ OPT_NO_NULL, + /* 0x0df */ OPT_NARROW, + /* 0x0e0 */ OPT_SMALL, + /* 0x0e1 */ OPT_WIDE, + /* 0x0e2 */ OPT_BYTES, + /* 0x0e3 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0, /* 0x0f0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x100 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -1491,179 +1512,179 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /////////////// opt_allowed_cmd_* /////////////// /////////////////////////////////////////////////////////////////////////////// -static u8 option_allowed_cmd_VERSION[69] = // cmd #1 +static u8 option_allowed_cmd_VERSION[70] = // cmd #1 { 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_HELP[69] = // cmd #2 +static u8 option_allowed_cmd_HELP[70] = // cmd #2 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1 + 1,1,1,1,1, 1,1,1,1,1 }; -static u8 option_allowed_cmd_CONFIG[69] = // cmd #3 +static u8 option_allowed_cmd_CONFIG[70] = // cmd #3 { 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_ARGTEST[69] = // cmd #4 +static u8 option_allowed_cmd_ARGTEST[70] = // cmd #4 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1 + 1,1,1,1,1, 1,1,1,1,1 }; -static u8 option_allowed_cmd_EXPAND[69] = // cmd #5 +static u8 option_allowed_cmd_EXPAND[70] = // cmd #5 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1 + 1,1,1,1,1, 1,1,1,1,1 }; -static u8 option_allowed_cmd_TEST[69] = // cmd #6 +static u8 option_allowed_cmd_TEST[70] = // cmd #6 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1 + 1,1,1,1,1, 1,1,1,1,1 }; -static u8 option_allowed_cmd_COLORS[69] = // cmd #7 +static u8 option_allowed_cmd_COLORS[70] = // cmd #7 { 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_ERROR[69] = // cmd #8 +static u8 option_allowed_cmd_ERROR[70] = // cmd #8 { 0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_FILETYPE[69] = // cmd #9 +static u8 option_allowed_cmd_FILETYPE[70] = // cmd #9 { 0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_FILEATTRIB[69] = // cmd #10 +static u8 option_allowed_cmd_FILEATTRIB[70] = // cmd #10 { 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_RAWDUMP[69] = // cmd #11 +static u8 option_allowed_cmd_RAWDUMP[70] = // cmd #11 { 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_DUMP[69] = // cmd #12 +static u8 option_allowed_cmd_DUMP[70] = // cmd #12 { 0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_CDUMP[69] = // cmd #13 +static u8 option_allowed_cmd_CDUMP[70] = // cmd #13 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_HEXDUMP[69] = // cmd #14 +static u8 option_allowed_cmd_HEXDUMP[70] = // cmd #14 { 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1 + 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,1 }; -static u8 option_allowed_cmd_PORT[69] = // cmd #15 +static u8 option_allowed_cmd_PORT[70] = // cmd #15 { 0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_WHERE[69] = // cmd #16 +static u8 option_allowed_cmd_WHERE[70] = // cmd #16 { 0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_HTTPS[69] = // cmd #17 +static u8 option_allowed_cmd_HTTPS[70] = // cmd #17 { 0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_EXTRACT[69] = // cmd #18 +static u8 option_allowed_cmd_EXTRACT[70] = // cmd #18 { 0,0,0,1,1, 0,0,0,1,1, 0,1,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_TRACKS[69] = // cmd #19 +static u8 option_allowed_cmd_TRACKS[70] = // cmd #19 { 0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_ARENAS[69] = // cmd #20 +static u8 option_allowed_cmd_ARENAS[70] = // cmd #20 { 0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_FILES[69] = // cmd #21 +static u8 option_allowed_cmd_FILES[70] = // cmd #21 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_FIND[69] = // cmd #22 +static u8 option_allowed_cmd_FIND[70] = // cmd #22 { 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_POINTS[69] = // cmd #23 +static u8 option_allowed_cmd_POINTS[70] = // cmd #23 { 0,1,1,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_ANALYZE[69] = // cmd #24 +static u8 option_allowed_cmd_ANALYZE[70] = // cmd #24 { 0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 0,0,0,0,0, 0,0,0,0,0 }; -static u8 option_allowed_cmd_PATCH[69] = // cmd #25 +static u8 option_allowed_cmd_PATCH[70] = // cmd #25 { 0,0,0,1,1, 0,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0 + 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0 }; @@ -1694,6 +1715,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_CHDIR, OptionInfo + OPT_CONST, OptionInfo + OPT_TRACKS, @@ -2141,7 +2163,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "Wiimms StaticR Tool : Manipulate the 'main.dol' and 'StaticR.rel'" " files of Mario Kart Wii.", 0, - 43, + 44, option_tab_tool, 0 }, @@ -2557,7 +2579,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = "PATCH", 0, "wstrt PATCH [file]...", - "Patch 'main.dol and 'StaticR.rel' files of Mario Kart Wii. Wildcards" + "Patch 'main.dol' and 'StaticR.rel' files of Mario Kart Wii. Wildcards" " and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details. No backup is made.", 0, diff --git a/project/src/ui/ui-wstrt.h b/project/src/ui/ui-wstrt.h index db5c24c..eacffa6 100644 --- a/project/src/ui/ui-wstrt.h +++ b/project/src/ui/ui-wstrt.h @@ -73,6 +73,7 @@ typedef enum enumOptions OPT_PRESERVE, OPT_IGNORE, OPT_ADD_LECODE, + OPT_ADDS_LECODE, OPT_ADD_OLD_LECODE, OPT_ADD_CTCODE, OPT_MOVE_D8, @@ -125,7 +126,7 @@ typedef enum enumOptions OPT_WIDE, OPT_BYTES, - OPT__N_SPECIFIC, // == 69 + OPT__N_SPECIFIC, // == 70 //----- global options ----- @@ -150,6 +151,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_CHDIR, OPT_CONST, OPT_TRACKS, @@ -185,7 +187,7 @@ typedef enum enumOptions OPT_CLEAN_DOL, OPT_CT_DIR, - OPT__N_TOTAL // == 124 + OPT__N_TOTAL // == 126 } enumOptions; @@ -217,6 +219,7 @@ typedef enum enumOptions // OB_PRESERVE = 1llu << OPT_PRESERVE, // OB_IGNORE = 1llu << OPT_IGNORE, // OB_ADD_LECODE = 1llu << OPT_ADD_LECODE, +// OB_ADDS_LECODE = 1llu << OPT_ADDS_LECODE, // OB_ADD_OLD_LECODE = 1llu << OPT_ADD_OLD_LECODE, // OB_ADD_CTCODE = 1llu << OPT_ADD_CTCODE, // OB_MOVE_D8 = 1llu << OPT_MOVE_D8, @@ -414,6 +417,7 @@ typedef enum enumOptions // | OB_GRP_DEST // | OB_GRP_PATCH // | OB_ADD_LECODE +// | OB_ADDS_LECODE // | OB_ADD_OLD_LECODE // | OB_ADD_CTCODE // | OB_MOVE_D8 @@ -527,6 +531,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_CHDIR, GO_NO_WILDCARDS, GO_IN_ORDER, @@ -561,6 +566,7 @@ typedef enum enumGetOpt GO_NUMBER, GO_CLEAN_DOL, GO_ADD_LECODE, + GO_ADDS_LECODE, GO_ADD_OLD_LECODE, GO_ADD_CTCODE, GO_CT_DIR, diff --git a/project/src/ui/ui-wszst.c b/project/src/ui/ui-wszst.c index 23f9fff..31d3913 100644 --- a/project/src/ui/ui-wszst.c +++ b/project/src/ui/ui-wszst.c @@ -797,6 +797,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " https://szs.wiimm.de/opt/source for more details." }, + { OPT_ID_LIST, false, true, false, false, false, 0, "id-list", + "file", + "Set filename of a SHA1ID file." + }, + { OPT_REFERENCE, false, false, false, false, false, 0, "ref", "path", "Define a reference SZS." @@ -1227,7 +1232,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = "Print in machine readable sections and parameter lines." }, - {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 148 + {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 149 //----- global options ----- @@ -1294,15 +1299,17 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_QUIET, false, false, false, false, false, 'q', "quiet", 0, - "Be quiet and print only error messages. Multiple usage is possible." - " The impact is command dependent. In general: If set three times," - " different file format warnings are suppressed." + "Be quiet and print only error messages. Multiple use is possible." + " Previous use of --verbose is reverted. The impact is command" + " dependent. If set at least three times, almost all error messages" + " will be suppressed." }, { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, - "Be verbose and print more progress information. Multiple usage is" - " possible. The impact is command dependent." + "Be verbose and print more progress information. Multiple use is" + " possible. Previous use of --quiet is reverted. The impact is command" + " dependent." }, { OPT_LOGGING, false, false, false, false, false, 'L', "logging", @@ -1370,6 +1377,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " details." }, + { OPT_LE_04X, false, false, false, false, false, 0, "le-04x", + 0, + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" + " slot numbers if slots >4095 are used." + }, + { OPT_LOAD_PREFIX, false, false, false, false, false, 0, "load-prefix", "file", "Read in a PREFIX file and replace the internal prefix database with" @@ -1563,7 +1576,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = { OPT_MDL, false, false, false, false, false, 0, "mdl", "list", "Set global options for MDL processing. To enable MDL patching, use" - " option --patch-file and select BRRES files for patching.\n" + " option --patch-files and select BRRES files for patching.\n" " Parameter 'list' is a comma separated list of keywords. A minus" " sign before a keyword disables a setting. Each occurrence of the" " option will only change entered settings and all other settings are" @@ -1587,7 +1600,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " and LOG. See https://szs.wiimm.de/opt/pat for details." }, - { OPT_PATCH_FILE, false, false, false, false, false, 0, "patch-file", + { OPT_PATCH_FILES, false, false, false, false, false, 0, "patch-files", "list", "Define, which kind of KMP, KCL and BRRES/MDL files are objects for" " patching. --pfile is a short cut.\n" @@ -1595,7 +1608,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " sign before a keyword disables a setting. Each occurrence of the" " option will only change entered settings and all other settings are" " untouched.\n" - " Keyword DEFAULT resets the default settings (TRACK,LOG) and CLEAR" + " Keyword DEFAULT resets the default settings (TRACK,LOG) and NONE" " disables all. The other allowed keywords are: KMP, KCL, OTHER-KCL," " ALL-KCL, MODEL, MAP, VRCORN, OTHER-BRRES, ALL-BRRES, TRACK" " (=KMP,KCL,MODEL,MAP,VRCORN), ALL, LOG and LOG-ALL. See" @@ -1933,7 +1946,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] = " helper option." }, - {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 235 + {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 237 }; @@ -1998,6 +2011,20 @@ static const InfoOption_t option_cmd_CONFIG_LONG = " output is enabled." }; +static const InfoOption_t option_cmd_WILDCARDS_SH = + { OPT_SH, false, false, false, false, false, 0, "sh", + 0, + "Quote filenames for sh using '...'." + }; + +static const InfoOption_t option_cmd_WILDCARDS_BASH = + { OPT_BASH, false, false, false, false, false, 0, "bash", + 0, + "Ignore --sh and quote filenames for bash using $'...'. Use »eval" + " var=($(wszst wildcards --bash ...))« to assign the result to a bash" + " array." + }; + static const InfoOption_t option_cmd_TEST_VERBOSE = { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose", 0, @@ -2587,6 +2614,8 @@ static const struct option OptionLong[] = { "ctcode", 0, 0, GO_CT_CODE }, { "le-code", 2, 0, GO_LE_CODE }, { "lecode", 2, 0, GO_LE_CODE }, + { "le-04x", 0, 0, GO_LE_04X }, + { "le04x", 0, 0, GO_LE_04X }, { "load-prefix", 1, 0, GO_LOAD_PREFIX }, { "loadprefix", 1, 0, GO_LOAD_PREFIX }, { "load-category", 1, 0, GO_LOAD_CATEGORY }, @@ -2678,9 +2707,9 @@ static const struct option OptionLong[] = { "gmodes", 1, 0, GO_GAMEMODES }, { "mdl", 1, 0, GO_MDL }, { "pat", 1, 0, GO_PAT }, - { "patch-file", 1, 0, GO_PATCH_FILE }, - { "patchfile", 1, 0, GO_PATCH_FILE }, - { "pfile", 1, 0, GO_PATCH_FILE }, + { "patch-files", 1, 0, GO_PATCH_FILES }, + { "patchfiles", 1, 0, GO_PATCH_FILES }, + { "pfiles", 1, 0, GO_PATCH_FILES }, { "kmg-limit", 1, 0, GO_KMG_LIMIT }, { "kmglimit", 1, 0, GO_KMG_LIMIT }, { "kmg-copy", 1, 0, GO_KMG_COPY }, @@ -2836,6 +2865,8 @@ static const struct option OptionLong[] = { "EXTRACT", 1, 0, GO_EXTRACT }, { "source", 1, 0, 's' }, { "src", 1, 0, 's' }, + { "id-list", 1, 0, GO_ID_LIST }, + { "idlist", 1, 0, GO_ID_LIST }, { "ref", 1, 0, GO_REFERENCE }, { "reference", 1, 0, GO_REFERENCE }, { "dest", 1, 0, 'd' }, @@ -3028,193 +3059,195 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /* 0x08a */ OPT_NO_COLORS, /* 0x08b */ OPT_CT_CODE, /* 0x08c */ OPT_LE_CODE, - /* 0x08d */ OPT_LOAD_PREFIX, - /* 0x08e */ OPT_LOAD_CATEGORY, - /* 0x08f */ OPT_PLUS, - /* 0x090 */ OPT_SPLIT, - /* 0x091 */ OPT_PRINTF, - /* 0x092 */ OPT_CHDIR, - /* 0x093 */ OPT_TOUCH, - /* 0x094 */ OPT_AUTO, - /* 0x095 */ OPT_SET_FLAGS, - /* 0x096 */ OPT_SET_SCALE, - /* 0x097 */ OPT_SET_ROT, - /* 0x098 */ OPT_SET_X, - /* 0x099 */ OPT_SET_Y, - /* 0x09a */ OPT_SET_Z, - /* 0x09b */ OPT_XCENTER, - /* 0x09c */ OPT_YCENTER, - /* 0x09d */ OPT_ZCENTER, - /* 0x09e */ OPT_CENTER, - /* 0x09f */ OPT_SCALE, - /* 0x0a0 */ OPT_SHIFT, - /* 0x0a1 */ OPT_XSS, - /* 0x0a2 */ OPT_YSS, - /* 0x0a3 */ OPT_ZSS, - /* 0x0a4 */ OPT_ROT, - /* 0x0a5 */ OPT_XROT, - /* 0x0a6 */ OPT_YROT, - /* 0x0a7 */ OPT_ZROT, - /* 0x0a8 */ OPT_YPOS, - /* 0x0a9 */ OPT_TRANSLATE, - /* 0x0aa */ OPT_NULL, - /* 0x0ab */ OPT_NEXT, - /* 0x0ac */ OPT_ASCALE, - /* 0x0ad */ OPT_AROT, - /* 0x0ae */ OPT_TFORM_SCRIPT, - /* 0x0af */ OPT_MINIMAP, - /* 0x0b0 */ OPT_RM_GOBJ, - /* 0x0b1 */ OPT_BATTLE, - /* 0x0b2 */ OPT_EXPORT_FLAGS, - /* 0x0b3 */ OPT_ROUTE_OPTIONS, - /* 0x0b4 */ OPT_WIM0, - /* 0x0b5 */ OPT_SLOT, - /* 0x0b6 */ OPT_LOAD_KCL, - /* 0x0b7 */ OPT_KCL, - /* 0x0b8 */ OPT_KCL_FLAG, - /* 0x0b9 */ OPT_KCL_SCRIPT, - /* 0x0ba */ OPT_TRI_AREA, - /* 0x0bb */ OPT_TRI_HEIGHT, - /* 0x0bc */ OPT_FLAG_FILE, - /* 0x0bd */ OPT_XTRIDATA, - /* 0x0be */ OPT_KMP, - /* 0x0bf */ OPT_N_LAPS, - /* 0x0c0 */ OPT_SPEED_MOD, - /* 0x0c1 */ OPT_KTPT2, - /* 0x0c2 */ OPT_TFORM_KMP, - /* 0x0c3 */ OPT_REPAIR_XPF, - /* 0x0c4 */ OPT_GAMEMODES, - /* 0x0c5 */ OPT_MDL, - /* 0x0c6 */ OPT_PAT, - /* 0x0c7 */ OPT_PATCH_FILE, - /* 0x0c8 */ OPT_KMG_LIMIT, - /* 0x0c9 */ OPT_KMG_COPY, - /* 0x0ca */ OPT_LT_CLEAR, - /* 0x0cb */ OPT_LT_ONLINE, - /* 0x0cc */ OPT_LT_N_PLAYERS, - /* 0x0cd */ OPT_LT_COND_BIT, - /* 0x0ce */ OPT_LT_GAME_MODE, - /* 0x0cf */ OPT_LT_ENGINE, - /* 0x0d0 */ OPT_LT_RANDOM, - /* 0x0d1 */ OPT_LEX_PURGE, - /* 0x0d2 */ OPT_LEX_FEATURES, - /* 0x0d3 */ OPT_LEX_RM_FEAT, - /* 0x0d4 */ OPT_LOAD_BMG, - /* 0x0d5 */ OPT_PATCH_BMG, - /* 0x0d6 */ OPT_MACRO_BMG, - /* 0x0d7 */ OPT_FILTER_BMG, - /* 0x0d8 */ OPT_LE_MENU, - /* 0x0d9 */ OPT_9LAPS, - /* 0x0da */ OPT_UI_SOURCE, - /* 0x0db */ OPT_TITLE_SCREEN, - /* 0x0dc */ OPT_CUP_ICONS, - /* 0x0dd */ OPT_NO_COPY, - /* 0x0de */ OPT_CACHE, - /* 0x0df */ OPT_CNAME, - /* 0x0e0 */ OPT_LOG_CACHE, - /* 0x0e1 */ OPT_PARALLEL, - /* 0x0e2 */ OPT_ID, - /* 0x0e3 */ OPT_BASE64, - /* 0x0e4 */ OPT_DB64, - /* 0x0e5 */ OPT_CODING, - /* 0x0e6 */ OPT_VERIFY, - /* 0x0e7 */ OPT_ROUND, - /* 0x0e8 */ OPT_NO_WILDCARDS, - /* 0x0e9 */ OPT_IN_ORDER, - /* 0x0ea */ OPT_PIPE, - /* 0x0eb */ OPT_DELTA, - /* 0x0ec */ OPT_DIFF, - /* 0x0ed */ OPT_EPSILON, - /* 0x0ee */ OPT_BMG_ENDIAN, - /* 0x0ef */ OPT_BMG_ENCODING, - /* 0x0f0 */ OPT_BMG_INF_SIZE, - /* 0x0f1 */ OPT_BMG_MID, - /* 0x0f2 */ OPT_FORCE_ATTRIB, - /* 0x0f3 */ OPT_DEF_ATTRIB, - /* 0x0f4 */ OPT_NO_ATTRIB, - /* 0x0f5 */ OPT_X_ESCAPES, - /* 0x0f6 */ OPT_OLD_ESCAPES, - /* 0x0f7 */ OPT_NO_BMG_COLORS, - /* 0x0f8 */ OPT_BMG_COLORS, - /* 0x0f9 */ OPT_NO_BMG_INLINE, - /* 0x0fa */ OPT_AUTOADD_PATH, - /* 0x0fb */ OPT_STRIP, - /* 0x0fc */ OPT_UTF_8, - /* 0x0fd */ OPT_NO_UTF_8, - /* 0x0fe */ OPT_FORCE, - /* 0x0ff */ OPT_REPAIR_MAGICS, - /* 0x100 */ OPT_TINY, - /* 0x101 */ OPT_YAZ0, - /* 0x102 */ OPT_YAZ1, - /* 0x103 */ OPT_XYZ, - /* 0x104 */ OPT_BZ, - /* 0x105 */ OPT_BZIP2, - /* 0x106 */ OPT_LZ, - /* 0x107 */ OPT_LZMA, - /* 0x108 */ OPT_SH, - /* 0x109 */ OPT_BASH, - /* 0x10a */ OPT_JSON, - /* 0x10b */ OPT_PHP, - /* 0x10c */ OPT_MAKEDOC, - /* 0x10d */ OPT_VAR, - /* 0x10e */ OPT_ARRAY, - /* 0x10f */ OPT_AVAR, - /* 0x110 */ OPT_CASE, - /* 0x111 */ OPT_FMODES, - /* 0x112 */ OPT_INSTALL, - /* 0x113 */ OPT_ANALYZE, - /* 0x114 */ OPT_ANALYZE_MODE, - /* 0x115 */ OPT_OLD, - /* 0x116 */ OPT_STD, - /* 0x117 */ OPT_NEW, - /* 0x118 */ OPT_EXTRACT, - /* 0x119 */ OPT_REFERENCE, - /* 0x11a */ OPT_NUMBER, - /* 0x11b */ OPT_REMOVE_SRC, - /* 0x11c */ OPT_IGNORE_SETUP, - /* 0x11d */ OPT_PURGE, - /* 0x11e */ OPT_ALIGN_U8, - /* 0x11f */ OPT_ALIGN_LTA, - /* 0x120 */ OPT_ALIGN_PACK, - /* 0x121 */ OPT_ALIGN_BRRES, - /* 0x122 */ OPT_ALIGN_BREFF, - /* 0x123 */ OPT_ALIGN_BREFT, - /* 0x124 */ OPT_ALIGN, - /* 0x125 */ OPT_ENCODE_ALL, - /* 0x126 */ OPT_ENCODE_IMG, - /* 0x127 */ OPT_NO_ENCODE, - /* 0x128 */ OPT_NO_RECURSE, - /* 0x129 */ OPT_AUTO_ADD, - /* 0x12a */ OPT_NO_ECHO, - /* 0x12b */ OPT_PT_DIR, - /* 0x12c */ OPT_RM_AIPARAM, - /* 0x12d */ OPT_U8, - /* 0x12e */ OPT_SZS, - /* 0x12f */ OPT_WU8, - /* 0x130 */ OPT_XWU8, - /* 0x131 */ OPT_WBZ, - /* 0x132 */ OPT_WLZ, - /* 0x133 */ OPT_LFL, - /* 0x134 */ OPT_PACK, - /* 0x135 */ OPT_BRRES, - /* 0x136 */ OPT_BREFF, - /* 0x137 */ OPT_BREFT, - /* 0x138 */ OPT_NO_COMPRESS, - /* 0x139 */ OPT_FAST, - /* 0x13a */ OPT_LINKS, - /* 0x13b */ OPT_BASEDIR, - /* 0x13c */ OPT_DECODE, - /* 0x13d */ OPT_MIPMAPS, - /* 0x13e */ OPT_NO_MIPMAPS, - /* 0x13f */ OPT_N_MIPMAPS, - /* 0x140 */ OPT_MAX_MIPMAPS, - /* 0x141 */ OPT_MIPMAP_SIZE, - /* 0x142 */ OPT_FAST_MIPMAPS, - /* 0x143 */ OPT_CMPR_DEFAULT, - /* 0x144 */ OPT_CUT, - /* 0x145 */ OPT_RAW, - /* 0x146 */ OPT_SECTIONS, - /* 0x147 */ 0,0,0, + /* 0x08d */ OPT_LE_04X, + /* 0x08e */ OPT_LOAD_PREFIX, + /* 0x08f */ OPT_LOAD_CATEGORY, + /* 0x090 */ OPT_PLUS, + /* 0x091 */ OPT_SPLIT, + /* 0x092 */ OPT_PRINTF, + /* 0x093 */ OPT_CHDIR, + /* 0x094 */ OPT_TOUCH, + /* 0x095 */ OPT_AUTO, + /* 0x096 */ OPT_SET_FLAGS, + /* 0x097 */ OPT_SET_SCALE, + /* 0x098 */ OPT_SET_ROT, + /* 0x099 */ OPT_SET_X, + /* 0x09a */ OPT_SET_Y, + /* 0x09b */ OPT_SET_Z, + /* 0x09c */ OPT_XCENTER, + /* 0x09d */ OPT_YCENTER, + /* 0x09e */ OPT_ZCENTER, + /* 0x09f */ OPT_CENTER, + /* 0x0a0 */ OPT_SCALE, + /* 0x0a1 */ OPT_SHIFT, + /* 0x0a2 */ OPT_XSS, + /* 0x0a3 */ OPT_YSS, + /* 0x0a4 */ OPT_ZSS, + /* 0x0a5 */ OPT_ROT, + /* 0x0a6 */ OPT_XROT, + /* 0x0a7 */ OPT_YROT, + /* 0x0a8 */ OPT_ZROT, + /* 0x0a9 */ OPT_YPOS, + /* 0x0aa */ OPT_TRANSLATE, + /* 0x0ab */ OPT_NULL, + /* 0x0ac */ OPT_NEXT, + /* 0x0ad */ OPT_ASCALE, + /* 0x0ae */ OPT_AROT, + /* 0x0af */ OPT_TFORM_SCRIPT, + /* 0x0b0 */ OPT_MINIMAP, + /* 0x0b1 */ OPT_RM_GOBJ, + /* 0x0b2 */ OPT_BATTLE, + /* 0x0b3 */ OPT_EXPORT_FLAGS, + /* 0x0b4 */ OPT_ROUTE_OPTIONS, + /* 0x0b5 */ OPT_WIM0, + /* 0x0b6 */ OPT_SLOT, + /* 0x0b7 */ OPT_LOAD_KCL, + /* 0x0b8 */ OPT_KCL, + /* 0x0b9 */ OPT_KCL_FLAG, + /* 0x0ba */ OPT_KCL_SCRIPT, + /* 0x0bb */ OPT_TRI_AREA, + /* 0x0bc */ OPT_TRI_HEIGHT, + /* 0x0bd */ OPT_FLAG_FILE, + /* 0x0be */ OPT_XTRIDATA, + /* 0x0bf */ OPT_KMP, + /* 0x0c0 */ OPT_N_LAPS, + /* 0x0c1 */ OPT_SPEED_MOD, + /* 0x0c2 */ OPT_KTPT2, + /* 0x0c3 */ OPT_TFORM_KMP, + /* 0x0c4 */ OPT_REPAIR_XPF, + /* 0x0c5 */ OPT_GAMEMODES, + /* 0x0c6 */ OPT_MDL, + /* 0x0c7 */ OPT_PAT, + /* 0x0c8 */ OPT_PATCH_FILES, + /* 0x0c9 */ OPT_KMG_LIMIT, + /* 0x0ca */ OPT_KMG_COPY, + /* 0x0cb */ OPT_LT_CLEAR, + /* 0x0cc */ OPT_LT_ONLINE, + /* 0x0cd */ OPT_LT_N_PLAYERS, + /* 0x0ce */ OPT_LT_COND_BIT, + /* 0x0cf */ OPT_LT_GAME_MODE, + /* 0x0d0 */ OPT_LT_ENGINE, + /* 0x0d1 */ OPT_LT_RANDOM, + /* 0x0d2 */ OPT_LEX_PURGE, + /* 0x0d3 */ OPT_LEX_FEATURES, + /* 0x0d4 */ OPT_LEX_RM_FEAT, + /* 0x0d5 */ OPT_LOAD_BMG, + /* 0x0d6 */ OPT_PATCH_BMG, + /* 0x0d7 */ OPT_MACRO_BMG, + /* 0x0d8 */ OPT_FILTER_BMG, + /* 0x0d9 */ OPT_LE_MENU, + /* 0x0da */ OPT_9LAPS, + /* 0x0db */ OPT_UI_SOURCE, + /* 0x0dc */ OPT_TITLE_SCREEN, + /* 0x0dd */ OPT_CUP_ICONS, + /* 0x0de */ OPT_NO_COPY, + /* 0x0df */ OPT_CACHE, + /* 0x0e0 */ OPT_CNAME, + /* 0x0e1 */ OPT_LOG_CACHE, + /* 0x0e2 */ OPT_PARALLEL, + /* 0x0e3 */ OPT_ID, + /* 0x0e4 */ OPT_BASE64, + /* 0x0e5 */ OPT_DB64, + /* 0x0e6 */ OPT_CODING, + /* 0x0e7 */ OPT_VERIFY, + /* 0x0e8 */ OPT_ROUND, + /* 0x0e9 */ OPT_NO_WILDCARDS, + /* 0x0ea */ OPT_IN_ORDER, + /* 0x0eb */ OPT_PIPE, + /* 0x0ec */ OPT_DELTA, + /* 0x0ed */ OPT_DIFF, + /* 0x0ee */ OPT_EPSILON, + /* 0x0ef */ OPT_BMG_ENDIAN, + /* 0x0f0 */ OPT_BMG_ENCODING, + /* 0x0f1 */ OPT_BMG_INF_SIZE, + /* 0x0f2 */ OPT_BMG_MID, + /* 0x0f3 */ OPT_FORCE_ATTRIB, + /* 0x0f4 */ OPT_DEF_ATTRIB, + /* 0x0f5 */ OPT_NO_ATTRIB, + /* 0x0f6 */ OPT_X_ESCAPES, + /* 0x0f7 */ OPT_OLD_ESCAPES, + /* 0x0f8 */ OPT_NO_BMG_COLORS, + /* 0x0f9 */ OPT_BMG_COLORS, + /* 0x0fa */ OPT_NO_BMG_INLINE, + /* 0x0fb */ OPT_AUTOADD_PATH, + /* 0x0fc */ OPT_STRIP, + /* 0x0fd */ OPT_UTF_8, + /* 0x0fe */ OPT_NO_UTF_8, + /* 0x0ff */ OPT_FORCE, + /* 0x100 */ OPT_REPAIR_MAGICS, + /* 0x101 */ OPT_TINY, + /* 0x102 */ OPT_YAZ0, + /* 0x103 */ OPT_YAZ1, + /* 0x104 */ OPT_XYZ, + /* 0x105 */ OPT_BZ, + /* 0x106 */ OPT_BZIP2, + /* 0x107 */ OPT_LZ, + /* 0x108 */ OPT_LZMA, + /* 0x109 */ OPT_SH, + /* 0x10a */ OPT_BASH, + /* 0x10b */ OPT_JSON, + /* 0x10c */ OPT_PHP, + /* 0x10d */ OPT_MAKEDOC, + /* 0x10e */ OPT_VAR, + /* 0x10f */ OPT_ARRAY, + /* 0x110 */ OPT_AVAR, + /* 0x111 */ OPT_CASE, + /* 0x112 */ OPT_FMODES, + /* 0x113 */ OPT_INSTALL, + /* 0x114 */ OPT_ANALYZE, + /* 0x115 */ OPT_ANALYZE_MODE, + /* 0x116 */ OPT_OLD, + /* 0x117 */ OPT_STD, + /* 0x118 */ OPT_NEW, + /* 0x119 */ OPT_EXTRACT, + /* 0x11a */ OPT_ID_LIST, + /* 0x11b */ OPT_REFERENCE, + /* 0x11c */ OPT_NUMBER, + /* 0x11d */ OPT_REMOVE_SRC, + /* 0x11e */ OPT_IGNORE_SETUP, + /* 0x11f */ OPT_PURGE, + /* 0x120 */ OPT_ALIGN_U8, + /* 0x121 */ OPT_ALIGN_LTA, + /* 0x122 */ OPT_ALIGN_PACK, + /* 0x123 */ OPT_ALIGN_BRRES, + /* 0x124 */ OPT_ALIGN_BREFF, + /* 0x125 */ OPT_ALIGN_BREFT, + /* 0x126 */ OPT_ALIGN, + /* 0x127 */ OPT_ENCODE_ALL, + /* 0x128 */ OPT_ENCODE_IMG, + /* 0x129 */ OPT_NO_ENCODE, + /* 0x12a */ OPT_NO_RECURSE, + /* 0x12b */ OPT_AUTO_ADD, + /* 0x12c */ OPT_NO_ECHO, + /* 0x12d */ OPT_PT_DIR, + /* 0x12e */ OPT_RM_AIPARAM, + /* 0x12f */ OPT_U8, + /* 0x130 */ OPT_SZS, + /* 0x131 */ OPT_WU8, + /* 0x132 */ OPT_XWU8, + /* 0x133 */ OPT_WBZ, + /* 0x134 */ OPT_WLZ, + /* 0x135 */ OPT_LFL, + /* 0x136 */ OPT_PACK, + /* 0x137 */ OPT_BRRES, + /* 0x138 */ OPT_BREFF, + /* 0x139 */ OPT_BREFT, + /* 0x13a */ OPT_NO_COMPRESS, + /* 0x13b */ OPT_FAST, + /* 0x13c */ OPT_LINKS, + /* 0x13d */ OPT_BASEDIR, + /* 0x13e */ OPT_DECODE, + /* 0x13f */ OPT_MIPMAPS, + /* 0x140 */ OPT_NO_MIPMAPS, + /* 0x141 */ OPT_N_MIPMAPS, + /* 0x142 */ OPT_MAX_MIPMAPS, + /* 0x143 */ OPT_MIPMAP_SIZE, + /* 0x144 */ OPT_FAST_MIPMAPS, + /* 0x145 */ OPT_CMPR_DEFAULT, + /* 0x146 */ OPT_CUT, + /* 0x147 */ OPT_RAW, + /* 0x148 */ OPT_SECTIONS, + /* 0x149 */ 0, }; // @@ -3222,742 +3255,742 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] = /////////////// opt_allowed_cmd_* /////////////// /////////////////////////////////////////////////////////////////////////////// -static u8 option_allowed_cmd_VERSION[148] = // cmd #1 +static u8 option_allowed_cmd_VERSION[149] = // cmd #1 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; -static u8 option_allowed_cmd_HELP[148] = // cmd #2 +static u8 option_allowed_cmd_HELP[149] = // cmd #2 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1 + 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; -static u8 option_allowed_cmd_CONFIG[148] = // cmd #3 +static u8 option_allowed_cmd_CONFIG[149] = // cmd #3 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; -static u8 option_allowed_cmd_INSTALL[148] = // cmd #4 +static u8 option_allowed_cmd_INSTALL[149] = // cmd #4 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_ARGTEST[148] = // cmd #5 +static u8 option_allowed_cmd_ARGTEST[149] = // cmd #5 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1 + 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; -static u8 option_allowed_cmd_EXPAND[148] = // cmd #6 +static u8 option_allowed_cmd_EXPAND[149] = // cmd #6 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1 + 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; -static u8 option_allowed_cmd_WILDCARDS[148] = // cmd #7 +static u8 option_allowed_cmd_WILDCARDS[149] = // cmd #7 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_TEST[148] = // cmd #8 +static u8 option_allowed_cmd_TEST[149] = // cmd #8 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1 + 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; -static u8 option_allowed_cmd_COLORS[148] = // cmd #9 +static u8 option_allowed_cmd_COLORS[149] = // cmd #9 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_ERROR[148] = // cmd #10 +static u8 option_allowed_cmd_ERROR[149] = // cmd #10 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; -static u8 option_allowed_cmd_FILETYPE[148] = // cmd #11 +static u8 option_allowed_cmd_FILETYPE[149] = // cmd #11 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_UI_CHECK[148] = // cmd #12 +static u8 option_allowed_cmd_UI_CHECK[149] = // cmd #12 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_FILEATTRIB[148] = // cmd #13 +static u8 option_allowed_cmd_FILEATTRIB[149] = // cmd #13 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_BRSUB[148] = // cmd #14 +static u8 option_allowed_cmd_BRSUB[149] = // cmd #14 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_SYMBOLS[148] = // cmd #15 +static u8 option_allowed_cmd_SYMBOLS[149] = // cmd #15 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_FUNCTIONS[148] = // cmd #16 +static u8 option_allowed_cmd_FUNCTIONS[149] = // cmd #16 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_CALCULATE[148] = // cmd #17 +static u8 option_allowed_cmd_CALCULATE[149] = // cmd #17 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_MATRIX[148] = // cmd #18 +static u8 option_allowed_cmd_MATRIX[149] = // cmd #18 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_FLOAT[148] = // cmd #19 +static u8 option_allowed_cmd_FLOAT[149] = // cmd #19 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_VR_CALC[148] = // cmd #20 +static u8 option_allowed_cmd_VR_CALC[149] = // cmd #20 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_VR_RACE[148] = // cmd #21 +static u8 option_allowed_cmd_VR_RACE[149] = // cmd #21 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_AUTOADD[148] = // cmd #22 +static u8 option_allowed_cmd_AUTOADD[149] = // cmd #22 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,1,0,0, 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,0,1,0, 0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_TRACKS[148] = // cmd #23 +static u8 option_allowed_cmd_TRACKS[149] = // cmd #23 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0 }; -static u8 option_allowed_cmd_SCANCACHE[148] = // cmd #24 +static u8 option_allowed_cmd_SCANCACHE[149] = // cmd #24 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_EXPORT[148] = // cmd #25 +static u8 option_allowed_cmd_EXPORT[149] = // cmd #25 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_SIZEOF[148] = // cmd #26 +static u8 option_allowed_cmd_SIZEOF[149] = // cmd #26 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_CODE[148] = // cmd #27 +static u8 option_allowed_cmd_CODE[149] = // cmd #27 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_RECODE[148] = // cmd #28 +static u8 option_allowed_cmd_RECODE[149] = // cmd #28 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_SUBFILE[148] = // cmd #29 +static u8 option_allowed_cmd_SUBFILE[149] = // cmd #29 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_TESTNORM[148] = // cmd #30 +static u8 option_allowed_cmd_TESTNORM[149] = // cmd #30 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_LIST[148] = // cmd #31 +static u8 option_allowed_cmd_LIST[149] = // cmd #31 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,0,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_LIST_L[148] = // cmd #32 +static u8 option_allowed_cmd_LIST_L[149] = // cmd #32 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,0,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_LIST_LL[148] = // cmd #33 +static u8 option_allowed_cmd_LIST_LL[149] = // cmd #33 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,0,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_LIST_LLL[148] = // cmd #34 +static u8 option_allowed_cmd_LIST_LLL[149] = // cmd #34 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,0,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_LIST_A[148] = // cmd #35 +static u8 option_allowed_cmd_LIST_A[149] = // cmd #35 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,0,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_LIST_LA[148] = // cmd #36 +static u8 option_allowed_cmd_LIST_LA[149] = // cmd #36 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,0,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_NAME_REF[148] = // cmd #37 +static u8 option_allowed_cmd_NAME_REF[149] = // cmd #37 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_ILIST[148] = // cmd #38 +static u8 option_allowed_cmd_ILIST[149] = // cmd #38 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_ILIST_L[148] = // cmd #39 +static u8 option_allowed_cmd_ILIST_L[149] = // cmd #39 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_ILIST_LL[148] = // cmd #40 +static u8 option_allowed_cmd_ILIST_LL[149] = // cmd #40 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_ILIST_A[148] = // cmd #41 +static u8 option_allowed_cmd_ILIST_A[149] = // cmd #41 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_ILIST_LA[148] = // cmd #42 +static u8 option_allowed_cmd_ILIST_LA[149] = // cmd #42 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_MEMORY[148] = // cmd #43 +static u8 option_allowed_cmd_MEMORY[149] = // cmd #43 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_MEMORY_A[148] = // cmd #44 +static u8 option_allowed_cmd_MEMORY_A[149] = // cmd #44 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0 }; -static u8 option_allowed_cmd_DUMP[148] = // cmd #45 +static u8 option_allowed_cmd_DUMP[149] = // cmd #45 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,0, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 0,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_SHA1[148] = // cmd #46 +static u8 option_allowed_cmd_SHA1[149] = // cmd #46 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,1, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 1,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_ANALYZE[148] = // cmd #47 +static u8 option_allowed_cmd_ANALYZE[149] = // cmd #47 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, - 1,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1 + 1,1,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; -static u8 option_allowed_cmd_SPLIT[148] = // cmd #48 +static u8 option_allowed_cmd_SPLIT[149] = // cmd #48 { 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; -static u8 option_allowed_cmd_IS_TEXTURE[148] = // cmd #49 +static u8 option_allowed_cmd_IS_TEXTURE[149] = // cmd #49 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_FEATURES[148] = // cmd #50 +static u8 option_allowed_cmd_FEATURES[149] = // cmd #50 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,1,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, + 1,1,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; -static u8 option_allowed_cmd_DISTRIBUTION[148] = // cmd #51 +static u8 option_allowed_cmd_DISTRIBUTION[149] = // cmd #51 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,1,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,1,1,0,0, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,1,1,0, 0,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_DIFF[148] = // cmd #52 +static u8 option_allowed_cmd_DIFF[149] = // cmd #52 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,1, 1,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 1,1,0,0 }; -static u8 option_allowed_cmd_CHECK[148] = // cmd #53 +static u8 option_allowed_cmd_CHECK[149] = // cmd #53 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,1,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_SLOTS[148] = // cmd #54 +static u8 option_allowed_cmd_SLOTS[149] = // cmd #54 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_STGI[148] = // cmd #55 +static u8 option_allowed_cmd_STGI[149] = // cmd #55 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_IS_ARENA[148] = // cmd #56 +static u8 option_allowed_cmd_IS_ARENA[149] = // cmd #56 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_NORMALIZE[148] = // cmd #57 +static u8 option_allowed_cmd_NORMALIZE[149] = // cmd #57 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, - 1,1,1,1,0, 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, + 1,1,1,1,1, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_PATCH[148] = // cmd #58 +static u8 option_allowed_cmd_PATCH[149] = // cmd #58 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, - 1,1,1,1,0, 0,0,0,0,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, + 1,1,1,1,1, 0,0,0,0,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_COPY[148] = // cmd #59 +static u8 option_allowed_cmd_COPY[149] = // cmd #59 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, - 1,1,1,1,0, 0,0,0,0,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, + 1,1,1,1,1, 0,0,0,0,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_DUPLICATE[148] = // cmd #60 +static u8 option_allowed_cmd_DUPLICATE[149] = // cmd #60 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, - 1,1,1,1,0, 0,0,0,0,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, + 1,1,1,1,1, 0,0,0,0,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_MINIMAP[148] = // cmd #61 +static u8 option_allowed_cmd_MINIMAP[149] = // cmd #61 { 0,0,0,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 1,0,1,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,0,0,0, - 0,0,0,0,0, 0,0,0,0,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,1,0,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,0,0, + 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_COMPRESS[148] = // cmd #62 +static u8 option_allowed_cmd_COMPRESS[149] = // cmd #62 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, - 1,1,1,1,0, 0,0,0,0,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,1, + 1,1,1,1,1, 0,0,0,0,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_DECOMPRESS[148] = // cmd #63 +static u8 option_allowed_cmd_DECOMPRESS[149] = // cmd #63 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1, 1,1,1,0,0, 0,0,1,0,0, 1,1,1,0,1, - 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,1,0, + 1,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_ENCODE[148] = // cmd #64 +static u8 option_allowed_cmd_ENCODE[149] = // cmd #64 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,0,1,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 0,0,0,0,0, 0,0,0,0,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,0,1, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_CREATE[148] = // cmd #65 +static u8 option_allowed_cmd_CREATE[149] = // cmd #65 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,1, - 1,1,1,1,0, 1,1,1,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, - 1,1,1,1,1, 1,1,1,1,1, 1,0,1,0,0, 0,0,1,1,1, 1,1,1,1,0, 1,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 1,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, + 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,0,0,1,1, 1,1,1,1,1, 0,1,0,0 }; -static u8 option_allowed_cmd_UPDATE[148] = // cmd #66 +static u8 option_allowed_cmd_UPDATE[149] = // cmd #66 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,1,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,0,1,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 1,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,0,0, 0,0,1,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,0,1, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,1, 1,1,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,1,0,0 }; -static u8 option_allowed_cmd_EXTRACT[148] = // cmd #67 +static u8 option_allowed_cmd_EXTRACT[149] = // cmd #67 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,1,1,1, - 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,0, 0,0,1,1,1, 1,1,0 + 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; -static u8 option_allowed_cmd_XDECODE[148] = // cmd #68 +static u8 option_allowed_cmd_XDECODE[149] = // cmd #68 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,1,1,1, - 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,0, 0,0,1,1,1, 1,1,0 + 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; -static u8 option_allowed_cmd_XEXPORT[148] = // cmd #69 +static u8 option_allowed_cmd_XEXPORT[149] = // cmd #69 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,1,1,1, - 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,0, 0,0,1,1,1, 1,1,0 + 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; -static u8 option_allowed_cmd_XALL[148] = // cmd #70 +static u8 option_allowed_cmd_XALL[149] = // cmd #70 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,1,1,1, - 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,0, 0,0,1,1,1, 1,1,0 + 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 1,1,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; -static u8 option_allowed_cmd_XCOMMON[148] = // cmd #71 +static u8 option_allowed_cmd_XCOMMON[149] = // cmd #71 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_BINARY[148] = // cmd #72 +static u8 option_allowed_cmd_BINARY[149] = // cmd #72 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_TEXT[148] = // cmd #73 +static u8 option_allowed_cmd_TEXT[149] = // cmd #73 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, - 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_CAT[148] = // cmd #74 +static u8 option_allowed_cmd_CAT[149] = // cmd #74 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,1,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_BMG[148] = // cmd #75 +static u8 option_allowed_cmd_BMG[149] = // cmd #75 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,0,0,0, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_KCL[148] = // cmd #76 +static u8 option_allowed_cmd_KCL[149] = // cmd #76 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_KMP[148] = // cmd #77 +static u8 option_allowed_cmd_KMP[149] = // cmd #77 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,0,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_LEX[148] = // cmd #78 +static u8 option_allowed_cmd_LEX[149] = // cmd #78 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_INFO[148] = // cmd #79 +static u8 option_allowed_cmd_INFO[149] = // cmd #79 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_GHOST[148] = // cmd #80 +static u8 option_allowed_cmd_GHOST[149] = // cmd #80 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,0,0,0, 0,0,0,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1 }; -static u8 option_allowed_cmd_YAZDUMP[148] = // cmd #81 +static u8 option_allowed_cmd_YAZDUMP[149] = // cmd #81 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, - 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 1,1,1,1,1, 0,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; -static u8 option_allowed_cmd_VEHICLE[148] = // cmd #82 +static u8 option_allowed_cmd_VEHICLE[149] = // cmd #82 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,1, - 1,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, - 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0 + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0,0, + 1,1,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, + 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; @@ -3988,6 +4021,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, + OptionInfo + OPT_LE_04X, OptionInfo + OPT_LOAD_PREFIX, OptionInfo + OPT_LOAD_CATEGORY, OptionInfo + OPT_CHDIR, @@ -4006,7 +4040,7 @@ static const InfoOption_t * option_tab_tool[] = OptionInfo + OPT_TFORM_KMP, OptionInfo + OPT_MDL, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_KMG_LIMIT, OptionInfo + OPT_KMG_COPY, OptionInfo + OPT_LT_CLEAR, @@ -4124,6 +4158,8 @@ static const InfoOption_t * option_tab_cmd_WILDCARDS[] = OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, + &option_cmd_WILDCARDS_SH, + &option_cmd_WILDCARDS_BASH, 0 }; @@ -5520,6 +5556,7 @@ static const InfoOption_t * option_tab_cmd_ANALYZE[] = OptionInfo + OPT_NONE, // separator + OptionInfo + OPT_ID_LIST, OptionInfo + OPT_REFERENCE, OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, @@ -5801,7 +5838,7 @@ static const InfoOption_t * option_tab_cmd_CHECK[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -5925,7 +5962,7 @@ static const InfoOption_t * option_tab_cmd_SLOTS[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6067,7 +6104,7 @@ static const InfoOption_t * option_tab_cmd_NORMALIZE[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6179,7 +6216,7 @@ static const InfoOption_t * option_tab_cmd_PATCH[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6291,7 +6328,7 @@ static const InfoOption_t * option_tab_cmd_COPY[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6404,7 +6441,7 @@ static const InfoOption_t * option_tab_cmd_DUPLICATE[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6576,7 +6613,7 @@ static const InfoOption_t * option_tab_cmd_COMPRESS[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6672,7 +6709,7 @@ static const InfoOption_t * option_tab_cmd_DECOMPRESS[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6772,7 +6809,7 @@ static const InfoOption_t * option_tab_cmd_ENCODE[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -6909,7 +6946,7 @@ static const InfoOption_t * option_tab_cmd_CREATE[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7007,7 +7044,7 @@ static const InfoOption_t * option_tab_cmd_UPDATE[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7104,7 +7141,7 @@ static const InfoOption_t * option_tab_cmd_EXTRACT[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7201,7 +7238,7 @@ static const InfoOption_t * option_tab_cmd_XDECODE[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7298,7 +7335,7 @@ static const InfoOption_t * option_tab_cmd_XEXPORT[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7395,7 +7432,7 @@ static const InfoOption_t * option_tab_cmd_XALL[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7625,7 +7662,7 @@ static const InfoOption_t * option_tab_cmd_KCL[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7697,7 +7734,7 @@ static const InfoOption_t * option_tab_cmd_KMP[] = OptionInfo + OPT_MDL, OptionInfo + OPT_MINIMAP, OptionInfo + OPT_PAT, - OptionInfo + OPT_PATCH_FILE, + OptionInfo + OPT_PATCH_FILES, OptionInfo + OPT_LT_CLEAR, OptionInfo + OPT_LT_ONLINE, OptionInfo + OPT_LT_N_PLAYERS, @@ -7832,7 +7869,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = " SZS, U8, PACK, BRRES, BREFF and BREFT archives. Additonally, RARC" " archive can be extracted. It is also a wrapper to all other tools.", 0, - 79, + 80, option_tab_tool, 0 }, @@ -7953,7 +7990,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = " point) for the following parameters. Finally, one line is printed" " for each file name of the list.", 0, - 3, + 5, option_tab_cmd_WILDCARDS, option_allowed_cmd_WILDCARDS }, @@ -8627,7 +8664,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] = " Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, - 18, + 19, option_tab_cmd_ANALYZE, option_allowed_cmd_ANALYZE }, diff --git a/project/src/ui/ui-wszst.h b/project/src/ui/ui-wszst.h index ff27ae8..0fb58cf 100644 --- a/project/src/ui/ui-wszst.h +++ b/project/src/ui/ui-wszst.h @@ -143,6 +143,7 @@ typedef enum enumOptions OPT_ANALYZE, OPT_ANALYZE_MODE, OPT_SOURCE, + OPT_ID_LIST, OPT_REFERENCE, OPT_DEST, OPT_DEST2, @@ -204,7 +205,7 @@ typedef enum enumOptions OPT_RAW, OPT_SECTIONS, - OPT__N_SPECIFIC, // == 148 + OPT__N_SPECIFIC, // == 149 //----- global options ----- @@ -228,6 +229,7 @@ typedef enum enumOptions OPT_NO_COLORS, OPT_CT_CODE, OPT_LE_CODE, + OPT_LE_04X, OPT_LOAD_PREFIX, OPT_LOAD_CATEGORY, OPT_CHDIR, @@ -248,7 +250,7 @@ typedef enum enumOptions OPT_TFORM_KMP, OPT_MDL, OPT_PAT, - OPT_PATCH_FILE, + OPT_PATCH_FILES, OPT_KMG_LIMIT, OPT_KMG_COPY, OPT_LT_CLEAR, @@ -296,7 +298,7 @@ typedef enum enumOptions OPT_NEW, OPT_EXTRACT, - OPT__N_TOTAL // == 235 + OPT__N_TOTAL // == 237 } enumOptions; @@ -398,6 +400,7 @@ typedef enum enumOptions // OB_ANALYZE = 1llu << OPT_ANALYZE, // OB_ANALYZE_MODE = 1llu << OPT_ANALYZE_MODE, // OB_SOURCE = 1llu << OPT_SOURCE, +// OB_ID_LIST = 1llu << OPT_ID_LIST, // OB_REFERENCE = 1llu << OPT_REFERENCE, // OB_DEST = 1llu << OPT_DEST, // OB_DEST2 = 1llu << OPT_DEST2, @@ -802,6 +805,7 @@ typedef enum enumOptions // | OB_IGNORE // | OB_LONG // | OB_GRP_SCRIPT +// | OB_ID_LIST // | OB_REFERENCE // | OB_DEST // | OB_DEST2, @@ -1249,6 +1253,7 @@ typedef enum enumGetOpt GO_NO_COLORS, GO_CT_CODE, GO_LE_CODE, + GO_LE_04X, GO_LOAD_PREFIX, GO_LOAD_CATEGORY, GO_PLUS, @@ -1307,7 +1312,7 @@ typedef enum enumGetOpt GO_GAMEMODES, GO_MDL, GO_PAT, - GO_PATCH_FILE, + GO_PATCH_FILES, GO_KMG_LIMIT, GO_KMG_COPY, GO_LT_CLEAR, @@ -1389,6 +1394,7 @@ typedef enum enumGetOpt GO_STD, GO_NEW, GO_EXTRACT, + GO_ID_LIST, GO_REFERENCE, GO_NUMBER, GO_REMOVE_SRC, diff --git a/project/src/ui/ui.def b/project/src/ui/ui.def index b433e28..eced772 100644 --- a/project/src/ui/ui.def +++ b/project/src/ui/ui.def @@ -301,9 +301,9 @@ "wszst IS-TEXTURE --reference reference [source]...", \ "Test each source to see if it's a texture hack versus a reference" \ " file. For each source, one human and machine readable status line is" \ - " printed. It is either »-1=err« on error, »1=yes« for a texture" \ - " hack, or »0=no LIST« with a comma separated list of reasons." \ - " $Wildcards$ and pipe characters are parsed.\n" \ + " printed. It is either »-1=err« on error, »1=yes« for a texture hack," \ + " or »0=no LIST« with a comma separated list of reasons. $Wildcards$" \ + " and pipe characters are parsed.\n" \ " At the moment KCL, KMP (see notes) and LEX are checked. KMP section" \ " CAME has been intentionally left out. Section ENPT is only checked" \ " if KCL contains a least one face of type force-recalculation." ) @@ -330,7 +330,7 @@ " If file @RESULT@ exists, it is automatically added as last source" \ " to the list of option --source, but only if not already added. On" \ " scanning of file @result@, parameters are scanned too.\n" \ - " See »welect DISTRIBUTION« for a new and alternative implementation" \ + " See »welect DISTRIBUTION« for a new and alternative implementation" \ " of this." ) #:def_cmd( "DIFF", "DIFF|CMP", \ @@ -370,11 +370,11 @@ "wszst IS_ARENA [source]...", \ "Analyse each track for its arena status and print a line with a" \ " status code and the track name. $Wildcards$ and pipe characters are" \ - " parsed. The status code is: »-RACE« for a racing track, »?MAYBE«" \ - " for likely an arena, »+ARENA« for an arena, »+DISPATCH« for an" \ - " arena with dispatch points or any error hint beginning with an" \ - " »!«. So the very first character (one of »!-?+«) can be used to" \ - " distinguish the status class.\n" \ + " parsed. The status code is: »-RACE« for a racing track, »?MAYBE« for" \ + " likely an arena, »+ARENA« for an arena, »+DISPATCH« for an arena" \ + " with dispatch points or any error hint beginning with an »!«. So the" \ + " very first character (one of »!-?+«) can be used to distinguish the" \ + " status class.\n" \ " The exit status is >2 on error, 2 (DIFFER), if at least one file is" \ " a racing track, or 0 (OK), if all sources are arenas." ) @@ -623,14 +623,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging|log", "GM", \ "", \ @@ -688,6 +690,11 @@ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "LOAD_PREFIX", "load-prefix|loadprefix", "GP", \ "file", \ "Read in a PREFIX file and replace the internal prefix database with" \ @@ -1181,7 +1188,7 @@ #:def_opt( "MDL", "mdl", "GP", \ "list", \ "Set global options for MDL processing. To enable MDL patching, use" \ - " option {--patch-file} and select BRRES files for patching.\n" \ + " option {--patch-files} and select BRRES files for patching.\n" \ " Parameter @'list'@ is a comma separated list of keywords. A minus" \ " sign before a keyword disables a setting. Each occurrence of the" \ " option will only change entered settings and all other settings are" \ @@ -1203,7 +1210,7 @@ " all. The other allowed keywords are: @AUTO, SIMPLE, COMPLEX, BOTH," \ " SILENT@ and @LOG@." ) -#:def_opt( "PATCH_FILE", "patch-file|patchfile|pfile", "GP", \ +#:def_opt( "PATCH_FILES", "patch-files|patchfiles|pfiles", "GP", \ "list", \ "Define, which kind of KMP, KCL and BRRES/MDL files are objects for" \ " patching. @--pfile@ is a short cut.\n" \ @@ -1212,7 +1219,7 @@ " option will only change entered settings and all other settings are" \ " untouched.\n" \ " Keyword @DEFAULT@ resets the default settings (@TRACK,LOG@) and" \ - " @CLEAR@ disables all. The other allowed keywords are: @KMP, KCL," \ + " @NONE@ disables all. The other allowed keywords are: @KMP, KCL," \ " OTHER-KCL, ALL-KCL, MODEL, MAP, VRCORN, OTHER-BRRES, ALL-BRRES," \ " TRACK (=KMP,KCL,MODEL,MAP,VRCORN), ALL, LOG@ and @LOG-ALL@." ) @@ -2251,6 +2258,16 @@ "", \ "" ) +#:def_cmd_opt( "WILDCARDS", "SH", \ + "", \ + "Quote filenames for sh using '...'." ) + +#:def_cmd_opt( "WILDCARDS", "BASH", \ + "", \ + "Ignore --sh and quote filenames for bash using $$'...'. Use »eval" \ + " var=($$(wszst wildcards --bash ...))« to assign the result to a bash" \ + " array." ) + #:def_cmd_opt( "TEST", "VERBOSE", \ "", \ "Print the matrices of transformations." ) @@ -6110,6 +6127,10 @@ "", \ "" ) +#:def_cmd_opt( "ANALYZE", "ID_LIST", \ + "", \ + "" ) + #:def_cmd_opt( "ANALYZE", "REFERENCE", \ "", \ "" ) @@ -6529,12 +6550,12 @@ #:def_cmd_opt( "DISTRIBUTION", "SOURCE", \ "", \ - "Define a text file for filename to slot translation. A »slot" \ - " filename« list is expected. Use this option multiple times to" \ - " define more than one source file. A definition of a later source" \ - " overwrites previous definitions. The file @RESULT@ of the command" \ - " line is appended automatically as last entry, if exists and not" \ - " already included." ) + "Define a text file for filename to slot translation. A »slot" \ + " filename« list is expected. Use this option multiple times to define" \ + " more than one source file. A definition of a later source overwrites" \ + " previous definitions. The file @RESULT@ of the command line is" \ + " appended automatically as last entry, if exists and not already" \ + " included." ) #:def_cmd_opt( "DIFF", "QUIET", \ "", \ @@ -6915,7 +6936,7 @@ "", \ "" ) -#:def_cmd_opt( "CHECK", "PATCH_FILE", \ +#:def_cmd_opt( "CHECK", "PATCH_FILES", \ "", \ "" ) @@ -7328,7 +7349,7 @@ "", \ "" ) -#:def_cmd_opt( "SLOTS", "PATCH_FILE", \ +#:def_cmd_opt( "SLOTS", "PATCH_FILES", \ "", \ "" ) @@ -7743,7 +7764,7 @@ "", \ "" ) -#:def_cmd_opt( "NORMALIZE", "PATCH_FILE", \ +#:def_cmd_opt( "NORMALIZE", "PATCH_FILES", \ "", \ "" ) @@ -8107,7 +8128,7 @@ "", \ "" ) -#:def_cmd_opt( "PATCH", "PATCH_FILE", \ +#:def_cmd_opt( "PATCH", "PATCH_FILES", \ "", \ "" ) @@ -8471,7 +8492,7 @@ "", \ "" ) -#:def_cmd_opt( "COPY", "PATCH_FILE", \ +#:def_cmd_opt( "COPY", "PATCH_FILES", \ "", \ "" ) @@ -8839,7 +8860,7 @@ "", \ "" ) -#:def_cmd_opt( "DUPLICATE", "PATCH_FILE", \ +#:def_cmd_opt( "DUPLICATE", "PATCH_FILES", \ "", \ "" ) @@ -9396,7 +9417,7 @@ "", \ "" ) -#:def_cmd_opt( "COMPRESS", "PATCH_FILE", \ +#:def_cmd_opt( "COMPRESS", "PATCH_FILES", \ "", \ "" ) @@ -9708,7 +9729,7 @@ "", \ "" ) -#:def_cmd_opt( "DECOMPRESS", "PATCH_FILE", \ +#:def_cmd_opt( "DECOMPRESS", "PATCH_FILES", \ "", \ "" ) @@ -10037,7 +10058,7 @@ "", \ "" ) -#:def_cmd_opt( "ENCODE", "PATCH_FILE", \ +#:def_cmd_opt( "ENCODE", "PATCH_FILES", \ "", \ "" ) @@ -10490,7 +10511,7 @@ "", \ "" ) -#:def_cmd_opt( "CREATE", "PATCH_FILE", \ +#:def_cmd_opt( "CREATE", "PATCH_FILES", \ "", \ "" ) @@ -10798,7 +10819,7 @@ "", \ "" ) -#:def_cmd_opt( "UPDATE", "PATCH_FILE", \ +#:def_cmd_opt( "UPDATE", "PATCH_FILES", \ "", \ "" ) @@ -11126,7 +11147,7 @@ "", \ "" ) -#:def_cmd_opt( "EXTRACT", "PATCH_FILE", \ +#:def_cmd_opt( "EXTRACT", "PATCH_FILES", \ "", \ "" ) @@ -11454,7 +11475,7 @@ "", \ "" ) -#:def_cmd_opt( "XDECODE", "PATCH_FILE", \ +#:def_cmd_opt( "XDECODE", "PATCH_FILES", \ "", \ "" ) @@ -11782,7 +11803,7 @@ "", \ "" ) -#:def_cmd_opt( "XEXPORT", "PATCH_FILE", \ +#:def_cmd_opt( "XEXPORT", "PATCH_FILES", \ "", \ "" ) @@ -12110,7 +12131,7 @@ "", \ "" ) -#:def_cmd_opt( "XALL", "PATCH_FILE", \ +#:def_cmd_opt( "XALL", "PATCH_FILES", \ "", \ "" ) @@ -12757,7 +12778,7 @@ "", \ "" ) -#:def_cmd_opt( "KCL", "PATCH_FILE", \ +#:def_cmd_opt( "KCL", "PATCH_FILES", \ "", \ "" ) @@ -12997,7 +13018,7 @@ "", \ "" ) -#:def_cmd_opt( "KMP", "PATCH_FILE", \ +#:def_cmd_opt( "KMP", "PATCH_FILES", \ "", \ "" ) @@ -13477,14 +13498,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -13542,6 +13565,11 @@ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "CHDIR", "chdir", "GMP", \ "dir", \ "Set a new working directory for all following options, for all" \ @@ -14849,14 +14877,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -14914,6 +14944,11 @@ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "OLD_SPINY", "old-spiny|oldspiny", "G", \ "", \ "Disable the new feature to hold a Spiny Shell at the tail." ) @@ -16314,14 +16349,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -16379,6 +16416,11 @@ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "CHDIR", "chdir", "GMP", \ "dir", \ "Set a new working directory for all following options, for all" \ @@ -17429,14 +17471,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -17494,6 +17538,11 @@ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "CHDIR", "chdir", "GMP", \ "dir", \ "Set a new working directory for all following options, for all" \ @@ -20098,14 +20147,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -20163,6 +20214,11 @@ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "CHDIR", "chdir", "GMP", \ "dir", \ "Set a new working directory for all following options, for all" \ @@ -22310,14 +22366,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -22375,6 +22433,11 @@ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "LOAD_PREFIX", "load-prefix|loadprefix", "GP", \ "file", \ "Read in a PREFIX file and replace the internal prefix database with" \ @@ -24087,14 +24150,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -24152,6 +24217,11 @@ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "CHDIR", "chdir", "GMP", \ "dir", \ "Set a new working directory for all following options, for all" \ @@ -24173,7 +24243,7 @@ #:def_opt( "MDL", "mdl", "GP", \ "list", \ "Set global options for MDL processing. To enable MDL patching, use" \ - " option {--patch-file} and select BRRES files for patching.\n" \ + " option {--patch-files} and select BRRES files for patching.\n" \ " Parameter @'list'@ is a comma separated list of keywords. A minus" \ " sign before a keyword disables a setting. Each occurrence of the" \ " option will only change entered settings and all other settings are" \ @@ -25447,14 +25517,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -25512,6 +25584,11 @@ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "CHDIR", "chdir", "GMP", \ "dir", \ "Set a new working directory for all following options, for all" \ @@ -26087,7 +26164,7 @@ #:def_cmd( "PATCH", "PATCH", \ "wstrt PATCH [file]...", \ - "Patch 'main.dol and 'StaticR.rel' files of Mario Kart Wii." \ + "Patch 'main.dol' and 'StaticR.rel' files of Mario Kart Wii." \ " $Wildcards$ and pipe characters are parsed. No backup is made." ) #:def_opt( "VERSION", "V|version", "G", \ @@ -26145,14 +26222,16 @@ #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ - "Be quiet and print only error messages. Multiple usage is possible." \ - " The impact is command dependent. In general: If set three times," \ - " different file format warnings are suppressed." ) + "Be quiet and print only error messages. Multiple use is possible." \ + " Previous use of --verbose is reverted. The impact is command" \ + " dependent. If set at least three times, almost all error messages" \ + " will be suppressed." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ - "Be verbose and print more progress information. Multiple usage is" \ - " possible. The impact is command dependent." ) + "Be verbose and print more progress information. Multiple use is" \ + " possible. Previous use of --quiet is reverted. The impact is command" \ + " dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ @@ -26210,6 +26289,11 @@ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) +#:def_opt( "LE_04X", "le-04x|le04x", "G", \ + "", \ + "Use format %04x instead of %03x for LE-CODE slots to enable uniform" \ + " slot numbers if slots >4095 are used." ) + #:def_opt( "CHDIR", "chdir", "GMP", \ "dir", \ "Set a new working directory for all following options, for all" \ @@ -26487,12 +26571,12 @@ #:def_opt( "ADD_SECTION", "add-section|addsection", "CP", \ "file", \ "Each option call adds the filename to an internal list. Each file" \ - " must be of type GCT, GCH or WCH. All GCT files together are combined" \ - " with an internal code handler to one section (like a GCH file). GCH" \ - " and WCH define sections and patches. The defined sections are added" \ - " and VBI hooks are optionally initialized. Use option {--force} to" \ - " allow overlapped sections. Use option {--verbose} up to 2 times for" \ - " a log.\n" \ + " must be of type GCT, GCT-TXT, GCH or WCH. All GCT files together are" \ + " combined with an internal code handler to one section (like a GCH" \ + " file). GCH and WCH define sections and patches. The defined sections" \ + " are added and VBI hooks are optionally initialized. Use option" \ + " {--force} to allow overlapped sections. Use option {--verbose} up to" \ + " 2 times for a log.\n" \ " If parameter FILE contains at least one wildcard (e.g. \"*.GCT\")," \ " then FILE is used as search pattern and all found files are added." \ " Quote FILE for this purpose. \n" \ @@ -26508,13 +26592,14 @@ " the heap smaller and move the cheat codes before the FST section.\n" \ " Parameter MODE is optional. If set, OFF disables and ON enables" \ " this feature. For mode AUTO (default) this feature is enabled, if" \ - " the cheat codes are too large or for internal reasons." ) + " the cheat codes are too large (@end>0x80003000@) or for internal" \ + " conflicts." ) #:def_opt( "GCT_ADDR", "gct-addr|gctaddr", "CP", \ "address", \ "If {--gct-move} is active, a text section is created to manage the" \ " code handler. This section is only needed at start and is placed by" \ - " default at address 0c802c0000 (part of BSS, good address for all 4" \ + " default at address 0x802c0000 (part of BSS, good address for all 4" \ " regions). This option changes the start address of the section. If" \ " address is @0@ or invalid, then unused BSS space is searched." ) @@ -26530,7 +26615,7 @@ " This option is only relevant, if main.dol is patched for wiimmfi.de." \ " It is dedicated to custom distribution creators for test purposes." \ " If enabled, a user can load an own instance of Gecko Code Handler" \ - " and cheat codes and can use them online. If disabled, pachcing for" \ + " and cheat codes and can use them online. If disabled, patching for" \ " online modus is disabled if an alternative Gecko Code Handler is" \ " detected.\n" \ " Parameter MODE is optional. If set, OFF disables and ON enables" \ diff --git a/project/src/wbmgt.c b/project/src/wbmgt.c index 87ee140..efe538b 100644 --- a/project/src/wbmgt.c +++ b/project/src/wbmgt.c @@ -793,6 +793,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; diff --git a/project/src/wctct.c b/project/src/wctct.c index 65eda23..7cbe6b5 100644 --- a/project/src/wctct.c +++ b/project/src/wctct.c @@ -777,6 +777,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_OLD_SPINY: old_spiny = true; break; case GO_CRS1: err += ScanOptCRS1(optarg); break; diff --git a/project/src/wimgt.c b/project/src/wimgt.c index 5e57c48..3385d5b 100644 --- a/project/src/wimgt.c +++ b/project/src/wimgt.c @@ -606,6 +606,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; diff --git a/project/src/wkclt.c b/project/src/wkclt.c index dd8f9a2..3e81ce2 100644 --- a/project/src/wkclt.c +++ b/project/src/wkclt.c @@ -1323,6 +1323,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; diff --git a/project/src/wkmpt.c b/project/src/wkmpt.c index 336f574..fdde615 100644 --- a/project/src/wkmpt.c +++ b/project/src/wkmpt.c @@ -828,7 +828,7 @@ static enumError diff_kmp ( ccp fname1, ccp fname2 ) { const int diff_verbose = verbose + 2; err = DiffKMP( &kmp1, &kmp2, diff_verbose < 0 ? 0 : diff_verbose ); - if ( verbose >= -2 && err == ERR_DIFFER ) + if ( ErrorLogEnabled() && err == ERR_DIFFER ) printf("KMP differ: %s : %s\n", kmp1.fname, kmp2.fname ); else if ( verbose >= 0 && err == ERR_OK ) printf("KMP identical: %s : %s\n", kmp1.fname, kmp2.fname ); @@ -1611,6 +1611,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; diff --git a/project/src/wlect.c b/project/src/wlect.c index d54eb52..f63bbd4 100644 --- a/project/src/wlect.c +++ b/project/src/wlect.c @@ -1357,10 +1357,11 @@ static void help_distrib ( enumError exit_code ) "A CT-CODE or LE-CODE definition file." " The file is scanned by the CT-CODE scanner and then imported.\n" "\n" - "\t{name|*.szs}:\t|" - "Track files are added to 2 different internal track tracks lists," - " one for racing tracks and one for battle areans." - " I the argument is quoted then wlect will resolve the wildcards by itself." + "\t{name|*.*}:\t|" + "If a file is a valid track file," + " then it is added to one of two different internal track lists" + " (one for racing tracks and one for battle areans)." + " If the argument is quoted then wlect will resolve the wildcards by itself." "\n" " |All file types that are accepted by option {opt|--le-define}" " ({name|BRRES}, {name|TEX0}, {name|CT-CODE}, ...) are also possible.\n" @@ -1683,18 +1684,27 @@ static void help_distrib ( enumError exit_code ) "{syntax|OPTIONS} is a comma separated list of 0 or more keywords." " The following options are available:" - "|[14,22]\n" - "\t{par|remove}:\t|Remove all used SZS source files at the very end." - " »{par|rm}« is s short cut.\n" + "|[14,24]\n" + "\t{par|remove}:\t|Remove all used track source files at the very end." + " »{par|rm}« is s short cut.\n" + "\t{par|ext}:\t|Append a track file extension list to each LTA.\n" + "\t{par|redir}:\t|Create redirection file {file|lta.szs} type {name|USE-LTA}.\n" "\t{par|yaz0}:\t|Force YAZ0 compression for each track file.\n" - "\t{par|bz}:\t|Force BZ compression for each track file.\n" "\t{par|bzip2}:\t|Force BZIP2 compression for each track file.\n" - "\t{par|lz}:\t|Force LZ compression for each track file.\n" "\t{par|lzma}:\t|Force LZMA compression for each track file.\n" + "\t{par|wbz}:\t|Force WBZ (BZ) compression for each track file.\n" + "\t{par|wlz}:\t|Force WLZ (LZ) compression for each track file.\n" "\n|[4,12,14,22]" - "\t\t|{hl|DIRECTORY} specifies the destination directory." + "\t\t|Controlled by the global processing options {opt|+PR0} and" + " {opt|+PR1} to {opt|+PR60}, progress messages can be output." + " These settings can be overwritten using the local options" + " {par|pr0}, {par|pr1}, {par|pr2}, {par|pr5}," + " {par|pr10}, {par|pr20}, {par|pr30} or {par|pr60}," + " where the number indicates the number of seconds between 2 messages.\n" + "\n" + "\t\t|{syntax|DIRECTORY} specifies the destination directory." " Only files with valid member »{name|PATH}« are added to the archives." - " SZS files with unknown paths are searched in directories" + " Track files with unknown paths are searched in directories" " defined by the options {opt|--copy-tracks}, {opt|--move-tracks}," " {opt|--move1-tracks} and {opt|--link-tracks}." " Files with identical content are recognized" @@ -1914,10 +1924,29 @@ static void help_distrib ( enumError exit_code ) //------------------------- "\n" + " |{heading|Progress options:}\n" + "\n" + "\t|The following options determine whether and at what intervals progress messages" + " are output. These progress messages are only displayed when importing track files" + " with placeholders and when creating LTA files.\n" + "\n" + "\t{name|PR0}:\t|Disable progress messages.\n" + "\t{name|PR1}:\t|Output a progress message approximately every second.\n" + "\t{name|PR2}:\t|Output a progress message approximately every 2 seconds.\n" + "\t{name|PR5}:\t|Output a progress message approximately every 5 seconds.\n" + "\t{name|PR10}:\t|Output a progress message approximately every 10 seconds.\n" + "\t{name|PR20}:\t|Output a progress message approximately every 20 seconds.\n" + "\t{name|PR30}:\t|Output a progress message approximately every 30 seconds.\n" + "\t{name|PR60}:\t|Output a progress message approximately every 60 seconds.\n" + "\n" + + //------------------------- + + "\n" " |{heading|More options:}\n" "\n" "\t{name|IN-LECODE}:\t|" - "When reading a LE-CODE binaray file (e.g. »{file|lecode-PAL.bin}«)," + "When reading a LE-CODE binary file (e.g. »{file|lecode-PAL.bin}«)," " only the settings are imported, but not the binary itself." " So if writing a LE-CODE binary then the region dependent built-in binary is used." " If this option set, then binaries are imported to override the built-in versions." @@ -1927,8 +1956,7 @@ static void help_distrib ( enumError exit_code ) "Switch option {name|IN-LECODE} off.\n" "\n" "\t{name|NO-SLOT}:\t|" - "Suppress »{name|SLOT <index>}« lines when creating a LE-CODE defintion file ({name|LE-DEF})." - " {name|NOSLOT} is a short cut for this keyword.\n" + "Suppress »{name|SLOT <index>}« lines when creating a LE-CODE defintion file ({name|LE-DEF}).\n" "\t{name|/NO-SLOT}:\t|" "Switch option {name|NO-SLOT} off.\n" "\n" @@ -1951,10 +1979,9 @@ static void help_distrib ( enumError exit_code ) "\t{name|CT-SLOTS}:\t|" "Options {name|HEX2SLOT} and {name|NAME2SLOT}:" " The availability of a slot for LE-CODE is usually examined." - " If this option is set, the availability for CT-CODE is examined." - " {name|CTSLOTS} is a short cut for this keyword.\n" + " If this option is set, the availability for CT-CODE is examined.\n" "\t{name|/CT-SLOTS}:\t|" - "Switch option {name|CT-SLOT} off.\n" + "Switch option {name|CT-SLOTS} off.\n" "\n" "\t{name|BRIEF}:\t|" "When creating text files, detailed descriptions are suppressed." @@ -2732,6 +2759,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; diff --git a/project/src/wmdlt.c b/project/src/wmdlt.c index 72f37b0..f9e3ddc 100644 --- a/project/src/wmdlt.c +++ b/project/src/wmdlt.c @@ -566,6 +566,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; diff --git a/project/src/wpatt.c b/project/src/wpatt.c index 1f41eb5..a0be792 100644 --- a/project/src/wpatt.c +++ b/project/src/wpatt.c @@ -366,6 +366,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; diff --git a/project/src/wstrt.c b/project/src/wstrt.c index cae29f2..90ba786 100644 --- a/project/src/wstrt.c +++ b/project/src/wstrt.c @@ -1533,7 +1533,7 @@ static enumError cmd_patch() { create = true; if ( verbose >= 0 ) - printf("* File not modified, %scopy to: %s:%s\n", + printf("* File not modified, %scopy it to: %s:%s\n", testmode ? "would " : "", GetNameFF(str.fform,0), dest_fname ); } @@ -1613,6 +1613,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; @@ -1653,6 +1654,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_POINTS: err += ScanOptMkwPoints(optarg,false); break; case GO_CHEAT: err += ScanOptCheatRegion(optarg); break; case GO_ADD_LECODE: AppendStringField(&opt_wcode_list,"@LECODE",false); break; + case GO_ADDS_LECODE: AppendStringField(&opt_sect_list,"@LECODE",false); break; case GO_ADD_OLD_LECODE: AppendStringField(&opt_wcode_list,"@OLDLECODE",false); break; case GO_ADD_CTCODE: opt_add_ctcode = true; break; case GO_CT_DIR: AppendStringField(&ct_dir_list,optarg,false); break; diff --git a/project/src/wszst.c b/project/src/wszst.c index 4e91904..40fb3b4 100644 --- a/project/src/wszst.c +++ b/project/src/wszst.c @@ -1844,6 +1844,7 @@ static int list_func } } + FixIteratorExt(it); const int indent = 2 * it->recurse_level; if ( long_count > 1 ) @@ -3881,8 +3882,11 @@ static enumError patch_file_helper szs.allow_ext_data = true; bool dirty = PatchSZS(&szs); - if (( opt_norm || need_norm || opt_auto_add || opt_cup_icons || dirty ) - && NormalizeSZS(&szs) ) + //xBINGO; + PRINT0("dirty=%d, opt_norm=%d, need_norm=%d, opt_auto_add=%d, opt_cup_icons=%s\n", + dirty, opt_norm, need_norm, opt_auto_add, opt_cup_icons ); + + if (( opt_norm || need_norm || opt_auto_add || opt_cup_icons || dirty ) && NormalizeSZS(&szs) ) { dirty = true; } @@ -3925,6 +3929,14 @@ static enumError patch_file_helper if (!dirty) dirty = data.data.len != szs.size || memcmp(data.data.ptr,szs.data,szs.size); + if ( !dirty && was_compressed ) + { + CompressSZS(&szs,0,true); + dirty = orig.data.len != szs.csize || memcmp(orig.data.ptr,szs.cdata,szs.csize); + FreeExMem(&orig); + orig = ExMemByS(szs.cdata,szs.csize); + } + if ( !dirty && ( !src_dest_diff || opt_no_copy ) ) goto abort; @@ -5792,6 +5804,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_DE: use_de = true; break; case GO_CT_CODE: ctcode_enabled = true; break; case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored + case GO_LE_04X: lecode_04x = true; break; case GO_COLORS: err += ScanOptColorize(0,optarg,0); break; case GO_NO_COLORS: opt_colorize = COLMD_OFF; break; @@ -5855,7 +5868,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_MDL: err += ScanOptMdl(optarg); break; case GO_MINIMAP: break; case GO_PAT: err += ScanOptPat(optarg); break; - case GO_PATCH_FILE: err += ScanOptPatchFile(optarg); break; + case GO_PATCH_FILES: err += ScanOptPatchFiles(optarg); break; case GO_KMG_LIMIT: err += ScanOptKmgLimit(optarg); break; case GO_KMG_COPY: err += ScanOptKmgCopy(optarg); break; @@ -5891,6 +5904,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_ESC: err += ScanEscapeChar(optarg) < 0; break; case GO_SOURCE: SetSource(optarg); break; + case GO_ID_LIST: SetIdList(optarg); break; case GO_REFERENCE: SetReference(optarg); break; case GO_DEST: SetDest(optarg,false); break; case GO_DEST2: SetDest(optarg,true); break; @@ -5904,27 +5918,27 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env ) case GO_IGNORE_SETUP: opt_ignore_setup = true; break; case GO_PURGE: opt_purge = true; break; - case GO_YAZ0: SetCompressionFF(0,FF_YAZ0); break; - case GO_YAZ1: SetCompressionFF(0,FF_YAZ1); break; - case GO_XYZ: SetCompressionFF(0,FF_XYZ); break; - case GO_BZ: SetCompressionFF(0,FF_BZ); break; - case GO_BZIP2: SetCompressionFF(0,FF_BZIP2); break; - case GO_LZ: SetCompressionFF(0,FF_LZ); break; - case GO_LZMA: SetCompressionFF(0,FF_LZMA); break; + case GO_YAZ0: SetCompressionFF(FF_INVALID,FF_YAZ0); break; + case GO_YAZ1: SetCompressionFF(FF_INVALID,FF_YAZ1); break; + case GO_XYZ: SetCompressionFF(FF_INVALID,FF_XYZ); break; + case GO_BZ: SetCompressionFF(FF_INVALID,FF_BZ); break; + case GO_BZIP2: SetCompressionFF(FF_INVALID,FF_BZIP2); break; + case GO_LZ: SetCompressionFF(FF_INVALID,FF_LZ); break; + case GO_LZMA: SetCompressionFF(FF_INVALID,FF_LZMA); break; - case GO_U8: SetCompressionFF(FF_U8,0); break; + case GO_U8: SetCompressionFF(FF_U8,FF_INVALID); break; case GO_SZS: SetCompressionFF(FF_U8,FF_YAZ0); break; - case GO_WU8: SetCompressionFF(FF_WU8,0); break; + case GO_WU8: SetCompressionFF(FF_WU8,FF_INVALID); break; case GO_XWU8: SetCompressionFF(FF_WU8,FF_XYZ); break; case GO_WBZ: SetCompressionFF(FF_WU8,FF_BZ); break; case GO_WLZ: SetCompressionFF(FF_WU8,FF_LZ); break; - //case GO_LTA: SetCompressionFF(FF_LTA,0); break; - case GO_LFL: SetCompressionFF(FF_LFL,0); break; - //case GO_ARC: SetCompressionFF(FF_RARC,0); break; - case GO_BRRES: SetCompressionFF(FF_BRRES,0); break; - case GO_BREFF: SetCompressionFF(FF_BREFF,0); break; - case GO_BREFT: SetCompressionFF(FF_BREFT,0); break; - case GO_PACK: SetCompressionFF(FF_PACK,0); break; + //case GO_LTA: SetCompressionFF(FF_LTA,FF_INVALID); break; + case GO_LFL: SetCompressionFF(FF_LFL,FF_INVALID); break; + //case GO_ARC: SetCompressionFF(FF_RARC,FF_INVALID); break; + case GO_BRRES: SetCompressionFF(FF_BRRES,FF_INVALID); break; + case GO_BREFF: SetCompressionFF(FF_BREFF,FF_INVALID); break; + case GO_BREFT: SetCompressionFF(FF_BREFT,FF_INVALID); break; + case GO_PACK: SetCompressionFF(FF_PACK,FF_INVALID); break; case GO_JSON: script_fform = FF_JSON; break; case GO_SH: script_fform = FF_SH; break; @@ -6267,6 +6281,7 @@ extern int main_wstrt ( int argc, char ** argv ); extern int main_wrapper ( int argc, char ** argv ); extern int main_getopt ( int argc, char ** argv ); +// [[wrapper_t]] typedef struct wrapper_t { uint hide; // 0:off, 1:hide, 2:is wrapper diff --git a/project/src/wtest.c b/project/src/wtest.c index 4689cf0..f65fe65 100644 --- a/project/src/wtest.c +++ b/project/src/wtest.c @@ -4187,11 +4187,10 @@ static enumError test_test_prefix ( int argc, char ** argv ) continue; } - const mkw_prefix_t *key0 = FindPrefix(arg,-1,false); - const mkw_prefix_t *key1 = FindPrefix(arg,-1,true); - printf(" %d %d : %10.10s",key0!=0,key1!=0,arg); - if (key0) - printf(" => %-8s %s\n",key0->prefix,key0->info); + const mkw_prefix_t *pre = GetPrefix(arg,-1); + printf(" %d : %-20.20s",pre!=0,arg); + if (pre) + printf(" => %-8s | %s\n",pre->prefix,pre->info); else putchar('\n'); } @@ -4281,7 +4280,7 @@ static enumError test_coded_version ( int argc, char ** argv ) fw = len; } - uint code = GetEncodedVersion(); + uint code = GetNumericVersion(); printf("\n %-*s %10u %s\n\n",fw+3,"Coded version:",code,DecodeVersion(code)); for ( int i = 1; i < argc; i++ ) @@ -4728,7 +4727,7 @@ lta_file_ref_t ReadFileLTA ( DVDFileInfo *fi, const lta_info_t *info, int slot, { if ( lta_cache_slot == slot && lta_cache_par_index == par_index ) { -PRINT1("Use LTA Cache %d.%d\n",slot,par_index); + PRINT1("Use LTA Cache %d.%d\n",slot,par_index); return lta_cache_data; } diff --git a/project/templates/HISTORY.txt b/project/templates/HISTORY.txt index 40e773b..30846cb 100644 --- a/project/templates/HISTORY.txt +++ b/project/templates/HISTORY.txt @@ -878,6 +878,12 @@ szs v2.40a r8917 - 2023-12-31 - New option: wstrt --add-old-lecode: Add the old LE-CODE starter. +szs v2.40b r8923 - 2024-01-02 + + - Bug fix for option --add-lecode: Due to an implementation error, the option + was ignored. + + @@MODULE(last-history.txt)@@ diff --git a/project/templates/module/last-history.txt b/project/templates/module/last-history.txt index 819dda8..240e407 100644 --- a/project/templates/module/last-history.txt +++ b/project/templates/module/last-history.txt @@ -1,7 +1,37 @@ szs v@@VERSION@@ r@@REV-NEXT@@ - @@@@-@@-@@ - - Bug fix for option --add-lecode: Due to an implementation error, the option - was ignored. + - Update to LE-CODE build 40. + - Updated prefix database: Added LEGO_Racers, Muppet_RM, POD, PP2WB, SR, + Spyro_1, Wii_U, Zelda_OoT, Zelda_TP, Zelda_WW. + - wszst ANALYSE prints attribute "license" if file "license.txt" is detected. + - File format LTA supports now an optional list with file extensions. The + idea is that tools show the correct file extensions without having to load + the entire LTA file for analysis. + - Command wlect DISTRIB: + - WU8, WBZ and WLZ files are accepted now. + - Support of new file type USE-LTA (redirection file for LE-CODE). + Instruction lta= of command wlect DISTRIB creates such a file with + filename lta.szs if option REDIR is set. + - The new processing options +PR0, +PR1 to +PR60 control the output of + progress messages. + - New options for instruction lta=: EXT, REDIR, PR0, PR1 .. PR60. + - Command wszst WILDCARDS supports options --sh and --bash to quote results. + - Command wstrt PATCH and option --add-section: + - GCT text files are now accepted now and converted to binary data if the + very first 4 characters are "#GCT". + - The memory map output with options -vv has been completely revised. + - Bug fix for commands wszst NORMALIZE and wszst PATCH: If the content has + not been changed, then the compression has not been checked. Therefore the + file was not always normalized. + - Bug fix for wszst PATCH: A copy to the non existing cache was created even + if --cache was not set. + - Implemented support for LE-CODE with 8192 tracks and 2048 cups. For this + purpose, the BMG messages for mkw-ana had to be moved to other areas. + - wlect dump: Warnings are issued if the tool can manage fewer LPAR settings + or fewer track slots than the LE-CODE image offers. + - New global option --le-04x: Use format %04x instead of %03x for LE-CODE + slots to enable uniform slot numbers if slots >4095 are used. + - New LPAR setting: SLOT-04X. ~ - KMP:STGI support for up to 255 laps. ~ - Option --kmp=MODES supports now settings 1LAP .. 15LAPS. diff --git a/project/text-files/lpar.inc/lpar-sect-param-cr.inc b/project/text-files/lpar.inc/lpar-sect-param-cr.inc index 71ab1bf..f6d757b 100644 --- a/project/text-files/lpar.inc/lpar-sect-param-cr.inc +++ b/project/text-files/lpar.inc/lpar-sect-param-cr.inc @@ -154,6 +154,14 @@ MAX-ONLINE-SEC = %3u%s CUP-ICON-SIZE = %u +# Define the index format for slots. It is either "%%03x" (value 0) or "%%04x" +# (value 1). Format "%%04x" ensures that all slots are displayed in the same +# format (same number of characters). However, this is only relevant if a slot +# ≥0x1000 (≥4096) is used. The distribution creator must ensure that the files +# in ./Race/Course/ and directories in ./Race/Common/ are in the same format. + +SLOT-04X = %u + #------------------------------------------------------------------------------ # The following setting is for LE-CODE developers only. |
