aboutsummaryrefslogtreecommitdiff
path: root/project/src
diff options
context:
space:
mode:
authorWiimm <wiimm@wiimm.de>2022-07-09 11:48:24 +0200
committerWiimm <wiimm@wiimm.de>2022-07-09 11:48:24 +0200
commit06ff18cd020779c226f7c25d22016e06b898f303 (patch)
treeb5c12ca4c6b9b0c86e63d2b6a965b8bd74dd0d86 /project/src
parentf30e94a61fdc9fb13fd1fbd8b75502fedf5a2f71 (diff)
SZS v2.28a.beta
Diffstat (limited to '')
-rw-r--r--project/src/db-mkw.c252
-rw-r--r--project/src/db-mkw.h6
-rw-r--r--project/src/file-type.c202
-rw-r--r--project/src/file-type.h116
-rw-r--r--project/src/getopt.c2
-rw-r--r--project/src/lecode.inc6000
-rw-r--r--project/src/lib-breff.c2
-rw-r--r--project/src/lib-brres.c4
-rw-r--r--project/src/lib-checksum.c505
-rw-r--r--project/src/lib-checksum.h89
-rw-r--r--project/src/lib-ctcode.c146
-rw-r--r--project/src/lib-ctcode.h32
-rw-r--r--project/src/lib-file.c677
-rw-r--r--project/src/lib-geohit.c2
-rw-r--r--project/src/lib-itemslot.c2
-rw-r--r--project/src/lib-kmp-pflags.c6
-rw-r--r--project/src/lib-kmp-text.c4
-rw-r--r--project/src/lib-lecode.c407
-rw-r--r--project/src/lib-lecode.h68
-rw-r--r--project/src/lib-ledis.c6815
-rw-r--r--project/src/lib-ledis.h1059
-rw-r--r--project/src/lib-lex.c8
-rw-r--r--project/src/lib-mdl.c2
-rw-r--r--project/src/lib-minigame.c2
-rw-r--r--project/src/lib-numeric.h51
-rw-r--r--project/src/lib-objflow.c2
-rw-r--r--project/src/lib-pack.c2
-rw-r--r--project/src/lib-parser-func.c8
-rw-r--r--project/src/lib-parser.c84
-rw-r--r--project/src/lib-pat.c2
-rw-r--r--project/src/lib-staticr.c22
-rw-r--r--project/src/lib-std.c369
-rw-r--r--project/src/lib-std.h152
-rw-r--r--project/src/lib-szs-create.c4
-rw-r--r--project/src/lib-szs.c4
-rw-r--r--project/src/lib-szs.h8
-rw-r--r--project/src/lib-xbmg.c2
-rw-r--r--project/src/prefix.inc83
-rw-r--r--project/src/ui/tab-wbmgt.inc16
-rw-r--r--project/src/ui/tab-wctct.inc21
-rw-r--r--project/src/ui/tab-wimgt.inc16
-rw-r--r--project/src/ui/tab-wkclt.inc15
-rw-r--r--project/src/ui/tab-wkmpt.inc15
-rw-r--r--project/src/ui/tab-wlect.inc74
-rw-r--r--project/src/ui/tab-wmdlt.inc15
-rw-r--r--project/src/ui/tab-wpatt.inc15
-rw-r--r--project/src/ui/tab-wstrt.inc17
-rw-r--r--project/src/ui/tab-wszst.inc96
-rw-r--r--project/src/ui/ui-wbmgt.c169
-rw-r--r--project/src/ui/ui-wbmgt.h11
-rw-r--r--project/src/ui/ui-wctct.c218
-rw-r--r--project/src/ui/ui-wctct.h13
-rw-r--r--project/src/ui/ui-wimgt.c143
-rw-r--r--project/src/ui/ui-wimgt.h11
-rw-r--r--project/src/ui/ui-wkclt.c222
-rw-r--r--project/src/ui/ui-wkclt.h11
-rw-r--r--project/src/ui/ui-wkmpt.c244
-rw-r--r--project/src/ui/ui-wkmpt.h11
-rw-r--r--project/src/ui/ui-wlect.c447
-rw-r--r--project/src/ui/ui-wlect.h39
-rw-r--r--project/src/ui/ui-wmdlt.c176
-rw-r--r--project/src/ui/ui-wmdlt.h11
-rw-r--r--project/src/ui/ui-wpatt.c135
-rw-r--r--project/src/ui/ui-wpatt.h11
-rw-r--r--project/src/ui/ui-wstrt.c285
-rw-r--r--project/src/ui/ui-wstrt.h11
-rw-r--r--project/src/ui/ui-wszst.c1235
-rw-r--r--project/src/ui/ui-wszst.h25
-rw-r--r--project/src/ui/ui.def686
-rw-r--r--project/src/wbmgt.c15
-rw-r--r--project/src/wctct.c25
-rw-r--r--project/src/wimgt.c15
-rw-r--r--project/src/wkclt.c15
-rw-r--r--project/src/wkmpt.c15
-rw-r--r--project/src/wlect.c1249
-rw-r--r--project/src/wmdlt.c15
-rw-r--r--project/src/wpatt.c15
-rw-r--r--project/src/wstrt.c19
-rw-r--r--project/src/wszst.c303
-rw-r--r--project/src/wtest.c108
80 files changed, 20638 insertions, 2771 deletions
diff --git a/project/src/db-mkw.c b/project/src/db-mkw.c
index 6fd6b9c..c4b2a6b 100644
--- a/project/src/db-mkw.c
+++ b/project/src/db-mkw.c
@@ -58,7 +58,11 @@ const TrackInfo_t track_info[32] =
"Marios Piste",
"castle_course",
"n_Circuit32_n",
- "n_Circuit32_f"
+ "n_Circuit32_f",
+ {{0x77,0x52,0xbb,0x51,0xed,0xbc,0x4a,0x95,0x37,0x7c,0x0a,0x05,0xb0,0xe0,0xda,0x15,0x03,0x78,0x66,0x25,0x00,0x3d,0x29,0xa0},
+ {0xdb,0x34,0xc4,0xde,0xdd,0x6a,0xa7,0x5c,0xba,0x1d,0x15,0x8e,0xdc,0x1e,0xf4,0x62,0x4e,0xba,0x57,0x55,0x00,0x3d,0x29,0xa0},
+ {0x40,0x38,0x84,0xfe,0x53,0xac,0xe0,0xb8,0x7f,0x87,0xb6,0xd2,0x93,0xb5,0x7c,0x25,0xbb,0x7b,0x91,0x18,0x00,0x2f,0xa0,0x20},
+ {0x9e,0xb3,0x7e,0xcb,0x09,0x22,0x99,0xa3,0xbb,0xe7,0xfa,0x93,0x3f,0xa5,0x44,0x9b,0x3e,0xaa,0x97,0x0b,0x00,0x2f,0xa0,0x20}}
},
{
0x2491, 1, 1, 12, 0x77, // bmg, track, index, slot, music_id
@@ -67,7 +71,11 @@ const TrackInfo_t track_info[32] =
"Kuhmuh-Weide",
"farm_course",
"n_Farm_n",
- "n_Farm_F"
+ "n_Farm_F",
+ {{0x90,0x72,0x0a,0x7d,0x57,0xa7,0xc7,0x6e,0x23,0x47,0x78,0x2f,0x6b,0xde,0x5d,0x22,0x34,0x2f,0xb7,0xdd,0x00,0x46,0xd7,0x80},
+ {0x4a,0x5f,0x65,0xe5,0x9c,0xb3,0xd0,0xcf,0xe8,0x9b,0x3f,0x85,0x97,0x9a,0xc1,0x7c,0xf4,0x09,0xca,0x35,0x00,0x46,0xd7,0x80},
+ {0xd7,0x8a,0xa1,0x48,0x7d,0x88,0xf4,0xcd,0x03,0xb7,0xf9,0x60,0xef,0xd2,0xfc,0xcb,0xd9,0x90,0xf9,0xb3,0x00,0x41,0x30,0x00},
+ {0x83,0x68,0x8b,0x0d,0xe7,0x3a,0xcd,0xf1,0x1f,0xbb,0x56,0x6b,0x29,0x14,0x8b,0x3b,0x6c,0xa9,0xc4,0x0e,0x00,0x41,0x30,0x00}}
},
{
0x2492, 2, 2, 13, 0x79, // bmg, track, index, slot, music_id
@@ -76,7 +84,11 @@ const TrackInfo_t track_info[32] =
"Pilz-Schlucht",
"kinoko_course",
"n_Kinoko_n",
- "n_Kinoko_F"
+ "n_Kinoko_F",
+ {{0x0e,0x38,0x03,0x57,0xaf,0xfc,0xfd,0x87,0x22,0x32,0x99,0x94,0x88,0x56,0x99,0xd9,0x92,0x7f,0x82,0x76,0x00,0x4a,0x92,0xa0},
+ {0xc5,0xd4,0xf5,0x06,0x77,0xe7,0x9b,0x5e,0x9c,0xe3,0x89,0x99,0xdb,0xfa,0x2b,0x7e,0xf9,0x85,0xf8,0x10,0x00,0x4a,0x92,0xa0},
+ {0x73,0x5e,0x25,0xbc,0x7b,0xaf,0xd2,0x7f,0x50,0x78,0x30,0x4e,0xb4,0xc8,0x70,0xad,0x14,0x5e,0x05,0xee,0x00,0x44,0x6a,0xa0},
+ {0x90,0x92,0x5f,0xa2,0x7a,0xe9,0x21,0x31,0x3f,0xbd,0x51,0xa8,0x07,0x0c,0xa4,0xd8,0x70,0xce,0xec,0x82,0x00,0x44,0x6a,0xa0}}
},
{
0x2493, 3, 11, 34, 0x8b, // bmg, track, index, slot, music_id
@@ -85,7 +97,11 @@ const TrackInfo_t track_info[32] =
"Vulkangrollen",
"volcano_course",
"n_Volcano32_n",
- "n_Volcano32_f"
+ "n_Volcano32_f",
+ {{0xac,0xc0,0x88,0x3a,0xe0,0xce,0x78,0x79,0xc6,0xef,0xba,0x20,0xcf,0xe5,0xb5,0x90,0x9b,0xf7,0x84,0x1b,0x00,0x52,0xa5,0x00},
+ {0x68,0x74,0x28,0xc3,0x02,0x80,0xcd,0x27,0x69,0x08,0xeb,0x4b,0x5c,0xb0,0xfa,0x86,0x3e,0xc2,0x28,0xc9,0x00,0x52,0xa5,0x00},
+ {0xb1,0x85,0x76,0x00,0x0f,0x1d,0x80,0xf8,0xf4,0x8f,0x97,0xfe,0xe6,0xce,0x64,0xa6,0x16,0x9d,0x0e,0x34,0x00,0x52,0x8a,0x80},
+ {0xcf,0x60,0x84,0xd1,0x69,0xdb,0x3f,0x71,0xc2,0xa3,0x56,0x4d,0x6d,0xfc,0x70,0x56,0xa1,0xc1,0x42,0xd0,0x00,0x52,0x8a,0x80}}
},
{
0x2494, 4, 3, 14, 0x7b, // bmg, track, index, slot, music_id
@@ -94,7 +110,11 @@ const TrackInfo_t track_info[32] =
"Toads Fabrik",
"factory_course",
"STRM_N_FACTORY_N",
- "STRM_N_FACTORY_F"
+ "STRM_N_FACTORY_F",
+ {{0x18,0x96,0xae,0xa4,0x96,0x17,0xa5,0x71,0xc6,0x6f,0xf7,0x78,0xd8,0xf2,0xab,0xbe,0x9e,0x5d,0x74,0x79,0x00,0x44,0x03,0x60},
+ {0xe1,0x15,0x74,0x8e,0x24,0xe6,0xa9,0x32,0x4e,0x24,0xef,0x93,0x93,0xc6,0x0f,0xcc,0x7e,0xce,0x05,0x84,0x00,0x44,0x03,0x60},
+ {0x57,0xdc,0x65,0xa7,0x07,0x72,0x94,0x6d,0xd9,0x48,0xe5,0x31,0x9d,0xe2,0xad,0xc2,0x76,0x28,0x34,0x1b,0x00,0x3e,0x24,0xe0},
+ {0x63,0x40,0x99,0x08,0xd6,0xb2,0x75,0x61,0xbe,0x35,0x65,0xc7,0xe5,0xf3,0xd1,0x6b,0xd5,0x72,0x94,0xb8,0x00,0x3e,0x24,0xe0}}
},
{
0x2495, 5, 5, 22, 0x7f, // bmg, track, index, slot, music_id
@@ -103,7 +123,11 @@ const TrackInfo_t track_info[32] =
"Kokos-Promenade",
"shopping_course",
"n_Shopping32_n",
- "n_Shopping32_f"
+ "n_Shopping32_f",
+ {{0xe4,0xbf,0x36,0x4c,0xb0,0xc5,0x89,0x99,0x07,0x58,0x5d,0x73,0x16,0x21,0xca,0x93,0x0a,0x4e,0xf8,0x5c,0x00,0x4a,0x5c,0x40},
+ {0x0c,0xaa,0x76,0x8f,0xfa,0x35,0x78,0x3b,0xbc,0xb6,0xf7,0xf0,0xdd,0xfa,0xc1,0x36,0xc1,0x5c,0xc0,0x08,0x00,0x4a,0x5c,0x40},
+ {0x98,0x5c,0x6f,0x61,0x6b,0x52,0xac,0x72,0x5e,0x19,0x7f,0x2e,0x7b,0xab,0x6a,0x32,0x21,0x2e,0x40,0x43,0x00,0x3c,0x62,0x40},
+ {0xde,0x5d,0x3f,0x40,0x94,0x49,0x7a,0x34,0x91,0x98,0xc3,0xde,0xa8,0x2a,0x99,0x27,0x24,0x43,0x3a,0x55,0x00,0x3c,0x62,0x40}}
},
{
0x2496, 6, 6, 23, 0x81, // bmg, track, index, slot, music_id
@@ -112,7 +136,11 @@ const TrackInfo_t track_info[32] =
"DK Skikane",
"boardcross_course",
"n_Snowboard32_n",
- "n_Snowboard32_F"
+ "n_Snowboard32_F",
+ {{0xb0,0x2e,0xd7,0x2e,0x00,0xb4,0x00,0x64,0x7b,0xda,0x68,0x45,0xbe,0x38,0x7c,0x47,0xd2,0x51,0xf9,0xd1,0x00,0x36,0x67,0xc0},
+ {0x98,0xdd,0x84,0xb1,0x5b,0xc5,0x8c,0xd1,0x39,0xb2,0xd1,0x91,0xe2,0xaa,0xda,0x25,0x65,0x65,0x8e,0x75,0x00,0x36,0x67,0xc0},
+ {0},
+ {0}}
},
{
0x2497, 7, 7, 24, 0x83, // bmg, track, index, slot, music_id
@@ -121,7 +149,11 @@ const TrackInfo_t track_info[32] =
"Warios Goldmine",
"truck_course",
"STRM_N_TRUCK_N",
- "STRM_N_TRUCK_F"
+ "STRM_N_TRUCK_F",
+ {{0xd1,0xa4,0x53,0xb4,0x3d,0x69,0x20,0xa7,0x85,0x65,0xe6,0x5a,0x45,0x97,0xe3,0x53,0xb1,0x77,0xab,0xd0,0x00,0x3b,0x1a,0x60},
+ {0xba,0xcb,0xdb,0xa9,0x9d,0x9d,0x64,0xb9,0x9c,0xaf,0x59,0xef,0x8f,0x87,0x39,0x7b,0x75,0xe3,0x30,0x91,0x00,0x3b,0x1a,0x60},
+ {0xc6,0xc1,0xef,0x73,0x0a,0x59,0x9b,0xb9,0x2f,0x73,0x08,0xb5,0x3b,0xa3,0x0a,0x9b,0x34,0x30,0x75,0x03,0x00,0x37,0x2f,0xe0},
+ {0xa2,0xb6,0x7e,0xe4,0x6d,0x04,0xd9,0xab,0x89,0x7c,0xfa,0x90,0x0d,0x22,0xbb,0x3c,0xf3,0xd8,0xd3,0xbe,0x00,0x37,0x2f,0xe0}}
},
{
0x2498, 8, 0, 11, 0x7d, // bmg, track, index, slot, music_id
@@ -130,7 +162,11 @@ const TrackInfo_t track_info[32] =
"Luigis Piste",
"beginner_course",
"n_Circuit32_n",
- "n_Circuit32_f"
+ "n_Circuit32_f",
+ {{0x1a,0xe1,0xa7,0xd8,0x94,0x96,0x0b,0x38,0xe0,0x9e,0x74,0x94,0x37,0x33,0x78,0xd8,0x73,0x05,0xa1,0x63,0x00,0x35,0x92,0xa0},
+ {0x9f,0x80,0x70,0xb1,0x7f,0x51,0x4c,0x9f,0x0c,0x08,0x32,0x7b,0xdd,0x4b,0x21,0xb0,0x65,0xbc,0x62,0xbb,0x00,0x35,0x92,0xa0},
+ {0x51,0x07,0x6d,0x0b,0x43,0xb7,0x47,0xce,0xb2,0x17,0xcd,0xc8,0x9f,0x91,0x86,0xa5,0xa4,0xc9,0xa0,0xce,0x00,0x30,0x25,0xa0},
+ {0x02,0x6e,0x04,0x8e,0x39,0xbd,0x41,0x84,0x2e,0xab,0xcb,0x99,0x7c,0x50,0x2c,0x55,0xd9,0x54,0x4e,0x1b,0x00,0x30,0x25,0xa0}}
},
{
0x2499, 9, 8, 31, 0x87, // bmg, track, index, slot, music_id
@@ -139,7 +175,11 @@ const TrackInfo_t track_info[32] =
"Daisys Piste",
"senior_course",
"n_Daisy32_n",
- "n_Daisy32_f"
+ "n_Daisy32_f",
+ {{0x72,0xd0,0x24,0x1c,0x75,0xbe,0x4a,0x5e,0xbd,0x24,0x2b,0x9d,0x8d,0x89,0xb1,0xd6,0xfd,0x56,0xbe,0x8f,0x00,0x4d,0xa5,0xa0},
+ {0x8b,0x49,0xdb,0x78,0x58,0x6d,0x00,0x4b,0xa3,0x26,0xeb,0x90,0x7c,0x76,0x11,0x28,0x61,0xc1,0xb4,0x3f,0x00,0x4d,0xa5,0xa0},
+ {0x71,0x47,0xc8,0x74,0x88,0x06,0xaa,0xd8,0x8c,0xaa,0x31,0x62,0x9f,0xb6,0x2b,0x6a,0x54,0x34,0xce,0xad,0x00,0x4d,0x62,0xa0},
+ {0xda,0x9d,0x63,0xa6,0x29,0xb5,0x8d,0x35,0x04,0x32,0x75,0xbc,0x41,0xb3,0xb9,0x7c,0xb6,0xb2,0xfd,0x12,0x00,0x4d,0x62,0xa0}}
},
{
0x249a, 10, 13, 42, 0x8d, // bmg, track, index, slot, music_id
@@ -148,7 +188,11 @@ const TrackInfo_t track_info[32] =
"Mondblickstraße",
"ridgehighway_course",
"STRM_N_RIDGEHIGHWAY_N",
- "STRM_N_RIDGEHIGHWAY_F"
+ "STRM_N_RIDGEHIGHWAY_F",
+ {{0xb1,0x3c,0x51,0x54,0x75,0xd7,0xda,0x20,0x7d,0xfd,0x5b,0xad,0xd8,0x86,0x98,0x61,0x47,0xb9,0x06,0xff,0x00,0x52,0x9d,0xc0},
+ {0xa4,0xa7,0x62,0x32,0x33,0x95,0x9c,0x03,0x64,0x59,0x52,0xad,0xc8,0xf2,0xb4,0x6b,0xb1,0x63,0xb8,0xd3,0x00,0x52,0x9d,0xc0},
+ {0xbc,0xad,0xf9,0x55,0x4d,0x35,0xe2,0xc9,0xdb,0xd3,0xc6,0x7d,0x66,0xac,0xa9,0x53,0xcb,0x80,0x98,0x6c,0x00,0x53,0x78,0x40},
+ {0x4f,0x06,0x59,0x55,0x63,0x04,0xde,0xe7,0x8c,0x30,0x0e,0xa7,0xae,0x73,0xd9,0xa8,0x82,0x30,0xab,0xfb,0x00,0x53,0x78,0x40}}
},
{
0x249b, 11, 10, 33, 0x8f, // bmg, track, index, slot, music_id
@@ -157,7 +201,11 @@ const TrackInfo_t track_info[32] =
"Blätterwald",
"treehouse_course",
"n_maple_n",
- "n_maple_F"
+ "n_maple_F",
+ {{0x48,0xeb,0xd9,0xd6,0x44,0x13,0xc2,0xb9,0x8d,0x2b,0x92,0xe5,0xef,0xc9,0xb1,0x5e,0xcd,0x76,0xfe,0xe6,0x00,0x47,0x0a,0x60},
+ {0x64,0xb6,0x9e,0x0f,0x2c,0x7d,0xef,0xed,0x9f,0xb2,0xda,0x44,0x2c,0xa5,0xe5,0x6d,0xc9,0x5f,0x9b,0xbd,0x00,0x47,0x0a,0x60},
+ {0},
+ {0}}
},
{
0x249c, 12, 14, 43, 0x91, // bmg, track, index, slot, music_id
@@ -166,7 +214,11 @@ const TrackInfo_t track_info[32] =
"Bowsers Festung",
"koopa_course",
"STRM_N_KOOPA_N",
- "STRM_N_KOOPA_F"
+ "STRM_N_KOOPA_F",
+ {{0xb9,0x82,0x1b,0x14,0xa8,0x93,0x81,0xf9,0xc0,0x15,0x66,0x93,0x53,0xcb,0x24,0xd7,0xdb,0x1b,0xb2,0x5d,0x00,0x4c,0xcb,0x60},
+ {0xfe,0x97,0x46,0x95,0x14,0x1f,0x58,0xcf,0x97,0xc4,0x13,0x42,0xe9,0x77,0xcc,0x29,0x41,0x18,0x23,0x38,0x00,0x4c,0xcb,0x60},
+ {0x6c,0xe3,0xaa,0x4c,0x8f,0x08,0x30,0x22,0x0f,0x34,0x60,0x22,0x2c,0xfd,0x14,0x3b,0xfe,0xfb,0xb0,0xe3,0x00,0x49,0xf9,0x00},
+ {0x6c,0x93,0x2f,0x9c,0x5a,0x3f,0xf3,0xe0,0xf7,0x11,0x0b,0x4c,0x7d,0x30,0x55,0x77,0x77,0xda,0xb8,0xa8,0x00,0x49,0xf9,0x00}}
},
{
0x249d, 13, 15, 44, 0x93, // bmg, track, index, slot, music_id
@@ -175,7 +227,11 @@ const TrackInfo_t track_info[32] =
"Regenbogen-Boulevard",
"rainbow_course",
"n_Rainbow32_n",
- "n_Rainbow32_f"
+ "n_Rainbow32_f",
+ {{0xff,0xe5,0x18,0x91,0x5e,0x5f,0xaa,0xa8,0x89,0x05,0x7c,0x8a,0x3d,0x3e,0x43,0x98,0x68,0x57,0x45,0x08,0x00,0x3a,0x6d,0xe0},
+ {0x13,0x7a,0xc8,0x75,0x97,0xd1,0x0d,0x61,0xb5,0x75,0xae,0x80,0x78,0x2e,0x5f,0x9e,0xae,0x80,0xcd,0x55,0x00,0x3a,0x6d,0xe0},
+ {0xfa,0x15,0x45,0x33,0x61,0xcb,0x49,0x3e,0x89,0xf5,0x11,0x24,0xfa,0xd3,0x6e,0xce,0xae,0x7f,0x44,0xb6,0x00,0x2e,0x11,0xe0},
+ {0x04,0xf4,0xcd,0x1b,0xc4,0xf8,0xa5,0x8d,0x97,0x32,0x81,0x29,0x16,0xbf,0x96,0x53,0x03,0x91,0x72,0xea,0x00,0x2e,0x11,0xe0}}
},
{
0x249e, 14, 12, 41, 0x89, // bmg, track, index, slot, music_id
@@ -184,7 +240,11 @@ const TrackInfo_t track_info[32] =
"Staubtrockene Ruinen",
"desert_course",
"STRM_N_DESERT_N",
- "STRM_N_DESERT_F"
+ "STRM_N_DESERT_F",
+ {{0x38,0x48,0x6c,0x4f,0x70,0x63,0x95,0x77,0x2b,0xd9,0x88,0xc1,0xac,0x5f,0xa3,0x0d,0x27,0xca,0xe0,0x98,0x00,0x34,0xb6,0xe0},
+ {0x7d,0xc1,0xfe,0x1d,0x59,0x58,0x46,0x5a,0x06,0x47,0xe9,0x4b,0x3e,0x34,0x91,0x60,0x86,0x3f,0x3b,0x1f,0x00,0x34,0xb6,0xe0},
+ {0x0c,0x03,0x7e,0xf1,0x3c,0xf1,0x07,0x78,0xc3,0x68,0x8b,0x33,0xd2,0xc3,0x83,0x71,0x87,0x01,0x29,0x04,0x00,0x2f,0x55,0x60},
+ {0xfc,0x59,0xb2,0x49,0xc8,0xf3,0x07,0x1a,0xcb,0x91,0x7f,0x40,0x4b,0x31,0x70,0xa0,0xf0,0xfc,0x5a,0xfb,0x00,0x2f,0x55,0x60}}
},
{
0x249f, 15, 9, 32, 0x85, // bmg, track, index, slot, music_id
@@ -193,7 +253,11 @@ const TrackInfo_t track_info[32] =
"Koopa-Kap",
"water_course",
"STRM_N_WATER_N",
- "STRM_N_WATER_F"
+ "STRM_N_WATER_F",
+ {{0x52,0xf0,0x1a,0xe3,0xae,0xd1,0xe0,0xfa,0x4c,0x74,0x59,0xa6,0x48,0x49,0x48,0x63,0xe8,0x3a,0x54,0x8c,0x00,0x50,0x73,0x20},
+ {0xe5,0xe9,0xab,0x6b,0x9f,0x5e,0x56,0x34,0x6b,0x9d,0x26,0xd3,0xf1,0xa7,0x3f,0x06,0x7e,0xe9,0x94,0x48,0x00,0x50,0x73,0x20},
+ {0xc7,0x43,0x11,0xe7,0xd2,0x75,0x7e,0x80,0x62,0x11,0x12,0x3d,0xb5,0xec,0x59,0x5e,0x4f,0xca,0x63,0x70,0x00,0x4c,0x6e,0xa0},
+ {0xdf,0x3d,0xfd,0x88,0xb9,0x8b,0xca,0x8e,0x92,0xb5,0x28,0xbb,0x95,0xa2,0x74,0x4c,0xa4,0x56,0x62,0xba,0x00,0x4c,0x6e,0xa0}}
},
{
0x24a0, 16, 16, 51, 0xa5, // bmg, track, index, slot, music_id
@@ -202,7 +266,11 @@ const TrackInfo_t track_info[32] =
"GCN Peach Beach",
"old_peach_gc",
"r_GC_Beach32_n",
- "r_GC_Beach32_f"
+ "r_GC_Beach32_f",
+ {{0x80,0x14,0x48,0x8a,0x60,0xf4,0x42,0x8e,0xef,0x52,0xd0,0x1f,0x8c,0x58,0x61,0xca,0x95,0x65,0xe1,0xca,0x00,0x2b,0x24,0x60},
+ {0xed,0xc9,0x29,0xfa,0xbc,0x05,0x08,0x3d,0xfa,0xc0,0x01,0xb4,0x2a,0x6e,0x42,0xc5,0x89,0xcf,0x5e,0xc2,0x00,0x2b,0x24,0x60},
+ {0},
+ {0}}
},
{
0x24a1, 17, 27, 74, 0xa7, // bmg, track, index, slot, music_id
@@ -211,7 +279,11 @@ const TrackInfo_t track_info[32] =
"GCN Marios Piste",
"old_mario_gc",
"r_GC_Circuit32_n",
- "r_GC_Circuit32_f"
+ "r_GC_Circuit32_f",
+ {{0x19,0x41,0xa2,0x9a,0xd2,0xe7,0xb7,0xbb,0xa8,0xa2,0x9e,0x64,0x40,0xc9,0x5e,0xf5,0xcf,0x76,0xb0,0x1d,0x00,0x34,0x81,0x80},
+ {0x81,0x3d,0x42,0x51,0xd3,0xfb,0x1d,0xb7,0xbc,0xb3,0xd7,0x70,0xbd,0x48,0x66,0xd7,0xb0,0xcd,0xe8,0xab,0x00,0x34,0x81,0x80},
+ {0},
+ {0}}
},
{
0x24a2, 18, 23, 64, 0xa9, // bmg, track, index, slot, music_id
@@ -220,7 +292,11 @@ const TrackInfo_t track_info[32] =
"GCN Waluigi-Arena",
"old_waluigi_gc",
"r_GC_Stadium32_n",
- "r_GC_Stadium32_f"
+ "r_GC_Stadium32_f",
+ {{0x41,0x80,0x99,0x82,0x4a,0xf6,0xbf,0x1c,0xd7,0xf8,0xbb,0x44,0xf6,0x1e,0x3a,0x9c,0xc3,0x00,0x7d,0xae,0x00,0x24,0xd9,0x84},
+ {0xed,0x75,0x58,0x4f,0x51,0xb8,0xd5,0xbf,0xf3,0x56,0xd9,0x49,0x76,0x00,0x95,0xea,0xc2,0xf0,0xc1,0x95,0x00,0x24,0xd9,0xa0},
+ {0},
+ {0}}
},
{
0x24a3, 19, 30, 83, 0xab, // bmg, track, index, slot, music_id
@@ -229,7 +305,11 @@ const TrackInfo_t track_info[32] =
"GCN DK Bergland",
"old_donkey_gc",
"r_GC_Mountain32_n",
- "r_GC_Mountain32_f"
+ "r_GC_Mountain32_f",
+ {{0xb0,0x36,0x86,0x4c,0xf0,0x01,0x6b,0xe0,0x58,0x14,0x49,0xef,0x29,0xfb,0x52,0xb2,0xe5,0x8d,0x78,0xa4,0x00,0x2c,0x3a,0xe0},
+ {0x45,0x9b,0xc6,0x3b,0x4f,0x63,0xfb,0xa9,0x3f,0x5a,0x7c,0x43,0xaa,0xd2,0x1b,0x41,0xa6,0xbf,0x1d,0xb9,0x00,0x2c,0x3a,0xe0},
+ {0},
+ {0}}
},
{
0x24a4, 20, 17, 52, 0xad, // bmg, track, index, slot, music_id
@@ -238,7 +318,11 @@ const TrackInfo_t track_info[32] =
"DS Yoshi-Kaskaden",
"old_falls_ds",
"r_DS_Jungle32_n",
- "r_DS_Jungle32_f"
+ "r_DS_Jungle32_f",
+ {{0x8c,0x85,0x4b,0x08,0x74,0x17,0xa9,0x24,0x25,0x11,0x0c,0xc7,0x1e,0x23,0xc9,0x44,0xd6,0x99,0x78,0x06,0x00,0x1f,0x3c,0x40},
+ {0x95,0xb5,0x90,0xc1,0x87,0x9d,0x02,0x5c,0x9d,0xce,0x21,0xec,0x5f,0xf7,0x5d,0x37,0xc6,0x7f,0x46,0xe2,0x00,0x1f,0x3c,0x40},
+ {0},
+ {0}}
},
{
0x24a5, 21, 24, 71, 0xb1, // bmg, track, index, slot, music_id
@@ -247,7 +331,11 @@ const TrackInfo_t track_info[32] =
"DS Glühheiße Wüste",
"old_desert_ds",
"r_DS_Desert32_n",
- "r_DS_Desert32_f"
+ "r_DS_Desert32_f",
+ {{0x4e,0xc5,0x38,0x06,0x5f,0xdc,0x8a,0xcf,0x49,0x67,0x43,0x00,0xcb,0xde,0xc5,0xb8,0x0c,0xc0,0x5a,0x0d,0x00,0x24,0x79,0x40},
+ {0x97,0x50,0x3d,0x9b,0xcc,0xed,0x8f,0xc7,0xf0,0x38,0xad,0x54,0x4e,0xb3,0x31,0x8d,0x37,0xd8,0xef,0xed,0x00,0x24,0x79,0x40},
+ {0},
+ {0}}
},
{
0x24a6, 22, 29, 82, 0xb3, // bmg, track, index, slot, music_id
@@ -256,7 +344,11 @@ const TrackInfo_t track_info[32] =
"DS Peachs Schlossgarten",
"old_garden_ds",
"r_DS_Garden32_n",
- "r_DS_Garden32_f"
+ "r_DS_Garden32_f",
+ {{0xf9,0xa6,0x2b,0xef,0x04,0xcc,0x8f,0x49,0x96,0x33,0xe4,0x02,0x3a,0xcc,0x76,0x75,0xa9,0x27,0x71,0xf0,0x00,0x20,0xe6,0xe0},
+ {0x98,0xdf,0xd0,0x82,0xb8,0x7b,0x32,0x2a,0x27,0x18,0x65,0x83,0xfa,0x0b,0xac,0x37,0x07,0xfd,0x3f,0x2b,0x00,0x20,0xe6,0xe0},
+ {0},
+ {0}}
},
{
0x24a7, 23, 22, 63, 0xaf, // bmg, track, index, slot, music_id
@@ -265,7 +357,11 @@ const TrackInfo_t track_info[32] =
"DS Piazzale Delfino",
"old_town_ds",
"r_DS_Town32_n",
- "r_DS_Town32_f"
+ "r_DS_Town32_f",
+ {{0xbc,0x03,0x8e,0x16,0x3d,0x21,0xd9,0xa1,0x18,0x1b,0x60,0xcf,0x90,0xb4,0xd0,0x3e,0xfa,0xd9,0xe0,0xc5,0x00,0x3a,0x01,0x20},
+ {0x5b,0x1f,0xa7,0x15,0xda,0xf7,0x86,0x04,0xd4,0xe4,0x80,0xb3,0x75,0x1d,0xda,0x23,0x08,0x85,0x10,0xc9,0x00,0x3a,0x01,0x20},
+ {0},
+ {0}}
},
{
0x24a8, 24, 28, 81, 0x99, // bmg, track, index, slot, music_id
@@ -274,7 +370,11 @@ const TrackInfo_t track_info[32] =
"SNES Marios Piste 3",
"old_mario_sfc",
"r_SFC_Circuit32_n",
- "r_SFC_Circuit32_f"
+ "r_SFC_Circuit32_f",
+ {{0x07,0x71,0x11,0xb9,0x96,0xe5,0xc4,0xf4,0x7d,0x20,0xec,0x29,0xc2,0x93,0x85,0x04,0xb5,0x3a,0x8e,0x76,0x00,0x1b,0xd2,0x60},
+ {0x92,0xed,0xd1,0x50,0xdf,0x28,0x83,0x6a,0x59,0x6d,0x05,0x68,0x2d,0xaf,0x3c,0x49,0x60,0xeb,0x93,0x0f,0x00,0x1b,0xd2,0x60},
+ {0},
+ {0}}
},
{
0x24a9, 25, 18, 53, 0x97, // bmg, track, index, slot, music_id
@@ -283,7 +383,11 @@ const TrackInfo_t track_info[32] =
"SNES Geistertal 2",
"old_obake_sfc",
"r_SFC_Obake32_n",
- "r_SFC_Obake32_f"
+ "r_SFC_Obake32_f",
+ {{0x07,0x1d,0x69,0x7c,0x4d,0xdb,0x66,0xd3,0xb2,0x10,0xf3,0x6c,0x7b,0xf8,0x78,0x50,0x2e,0x79,0x84,0x5b,0x00,0x16,0x7b,0x60},
+ {0xa0,0x8c,0x47,0x6b,0xc8,0x3a,0x74,0xf9,0x74,0xea,0x3c,0xc1,0x9a,0xad,0x61,0xb3,0xf0,0xc9,0x9f,0xb7,0x00,0x16,0x7b,0x60},
+ {0},
+ {0}}
},
{
0x24aa, 26, 19, 54, 0x9f, // bmg, track, index, slot, music_id
@@ -292,7 +396,11 @@ const TrackInfo_t track_info[32] =
"N64 Marios Rennpiste",
"old_mario_64",
"r_64_Circuit32_n",
- "r_64_Circuit32_f"
+ "r_64_Circuit32_f",
+ {{0x49,0x51,0x4e,0x8f,0x74,0xfe,0xa5,0x0e,0x77,0x27,0x3c,0x02,0x97,0x08,0x6d,0x67,0xe5,0x81,0x23,0xe8,0x00,0x23,0x9d,0xa0},
+ {0xb7,0xc1,0xf6,0xfd,0xbb,0xd0,0x20,0xc2,0x6c,0x25,0x30,0xb5,0x5b,0xe4,0xf1,0x0e,0x93,0x01,0x1a,0x84,0x00,0x23,0x9d,0xa0},
+ {0},
+ {0}}
},
{
0x24ab, 27, 20, 61, 0x9d, // bmg, track, index, slot, music_id
@@ -301,7 +409,11 @@ const TrackInfo_t track_info[32] =
"N64 Sorbet-Land",
"old_sherbet_64",
"r_64_Sherbet32_n",
- "r_64_Sherbet32_f"
+ "r_64_Sherbet32_f",
+ {{0xba,0x9b,0xcf,0xb3,0x73,0x1a,0x6c,0xb1,0x7d,0xba,0x21,0x9a,0x8d,0x37,0xea,0x4d,0x52,0x33,0x22,0x56,0x00,0x27,0xa0,0x80},
+ {0xcb,0xac,0xe1,0xcc,0x59,0xc9,0x8b,0x2b,0x6f,0x26,0xb8,0xec,0xf5,0x5e,0xbd,0x48,0x99,0x4a,0x90,0x7e,0x00,0x27,0xa0,0x80},
+ {0},
+ {0}}
},
{
0x24ac, 28, 31, 84, 0xa3, // bmg, track, index, slot, music_id
@@ -310,7 +422,11 @@ const TrackInfo_t track_info[32] =
"N64 Bowsers Festung",
"old_koopa_64",
"r_64_Kuppa32_n",
- "r_64_Kuppa32_f"
+ "r_64_Kuppa32_f",
+ {{0x15,0xb3,0x03,0xb2,0x88,0xf4,0x70,0x7e,0x5d,0x0a,0xf2,0x83,0x67,0xc8,0xce,0x51,0xcd,0xea,0xb4,0x90,0x00,0x27,0x48,0x20},
+ {0x71,0x42,0x36,0x1a,0xb9,0x3d,0x39,0x29,0xf6,0x2a,0xa7,0x15,0x50,0x9f,0xc8,0xd1,0x37,0x9a,0xfb,0xd6,0x00,0x27,0x48,0x20},
+ {0},
+ {0}}
},
{
0x24ad, 29, 26, 73, 0xa1, // bmg, track, index, slot, music_id
@@ -319,7 +435,11 @@ const TrackInfo_t track_info[32] =
"N64 DKs Dschungelpark",
"old_donkey_64",
"r_64_Jungle32_n",
- "r_64_Jungle32_f"
+ "r_64_Jungle32_f",
+ {{0x69,0x2d,0x56,0x6b,0x05,0x43,0x4d,0x8c,0x66,0xa5,0x5b,0xdf,0xf4,0x86,0x69,0x8e,0x0f,0xc9,0x60,0x95,0x00,0x2d,0x6e,0x80},
+ {0x44,0x3c,0x13,0xb8,0x51,0x6d,0xf1,0x63,0x08,0x26,0x09,0xc7,0xc2,0x12,0xfb,0x00,0xf4,0x45,0xbf,0x34,0x00,0x2d,0x6e,0x80},
+ {0},
+ {0}}
},
{
0x24ae, 30, 25, 72, 0x9b, // bmg, track, index, slot, music_id
@@ -328,7 +448,11 @@ const TrackInfo_t track_info[32] =
"GBA Bowsers Festung 3",
"old_koopa_gba",
"r_AGB_Kuppa32_n",
- "r_AGB_Kuppa32_f"
+ "r_AGB_Kuppa32_f",
+ {{0xa4,0xbe,0xa4,0x1b,0xe8,0x3d,0x81,0x6f,0x79,0x3f,0x3f,0xad,0x97,0xd2,0x68,0xf7,0x1a,0xd9,0x9b,0xf9,0x00,0x1e,0x66,0xc0},
+ {0xb3,0xbd,0x45,0x88,0xb0,0x41,0xf0,0x92,0xd0,0x03,0x0c,0xff,0x23,0x4c,0x56,0x36,0x9f,0x2c,0xb8,0xfd,0x00,0x1e,0x66,0xc0},
+ {0},
+ {0}}
},
{
0x24af, 31, 21, 62, 0x95, // bmg, track, index, slot, music_id
@@ -337,7 +461,11 @@ const TrackInfo_t track_info[32] =
"GBA Shy Guy-Strand",
"old_heyho_gba",
"r_AGB_Beach32_n",
- "r_AGB_Beach32_f"
+ "r_AGB_Beach32_f",
+ {{0xe8,0xed,0x31,0x60,0x5c,0xc7,0xd6,0x66,0x06,0x91,0x99,0x8f,0x02,0x4e,0xed,0x6b,0xa8,0xb4,0xa3,0x3f,0x00,0x23,0x2a,0x20},
+ {0x32,0x10,0x01,0x53,0x9d,0x47,0x2d,0x25,0xff,0x0f,0x81,0x3a,0x52,0xad,0xb3,0xe4,0x41,0x54,0xed,0x3e,0x00,0x23,0x2a,0x20},
+ {0},
+ {0}}
},
};
@@ -681,7 +809,11 @@ const TrackInfo_t arena_info[10] =
"Delfino-Pier",
"venice_battle",
"n_venice_n",
- "n_venice_F"
+ "n_venice_F",
+ {{0x45,0x6d,0x88,0x00,0xee,0x7b,0x1b,0x1e,0x2d,0x2d,0xfe,0x4d,0x46,0x54,0xa9,0xc3,0xbb,0x9b,0xd3,0x0f,0x00,0x30,0xf3,0x40},
+ {0x1a,0x26,0x94,0x74,0x30,0xfd,0x98,0xbf,0x3b,0x50,0x2b,0x2c,0x07,0x8b,0x53,0x7f,0x33,0x36,0x13,0xa5,0x00,0x30,0xf3,0x40},
+ {0x90,0x37,0x58,0x78,0x32,0x89,0x86,0xf8,0x26,0xe3,0x6c,0x8a,0x79,0xf4,0x65,0x7a,0x68,0x01,0xad,0x54,0x00,0x31,0xfa,0xc0},
+ {0x42,0x3a,0xce,0x92,0x78,0xa4,0x43,0xb8,0xd6,0x1b,0x08,0x10,0x2a,0x74,0x11,0xbc,0xae,0x45,0xf4,0x98,0x00,0x31,0xfa,0xc0}}
},
{
0x24b9, 33, 0, 11, 0xb7, // bmg, track, index, slot, music_id
@@ -690,7 +822,11 @@ const TrackInfo_t arena_info[10] =
"Block-Plaza",
"block_battle",
"n_block_n",
- "n_block_F"
+ "n_block_F",
+ {{0x90,0x47,0xf6,0xe9,0xb7,0x7c,0x6a,0x44,0xac,0xcb,0x46,0xc2,0x23,0x76,0x09,0xb8,0x0e,0x45,0x9f,0xdc,0x00,0x35,0x2c,0xe0},
+ {0xd9,0x7d,0xe5,0x43,0x39,0xd4,0x44,0x46,0xee,0xe3,0xba,0x2c,0xf5,0xe6,0x8e,0xb1,0xca,0x36,0xf8,0x77,0x00,0x35,0x2c,0xe0},
+ {0},
+ {0}}
},
{
0x24ba, 34, 3, 14, 0xbb, // bmg, track, index, slot, music_id
@@ -699,7 +835,11 @@ const TrackInfo_t arena_info[10] =
"Kettenhund-Roulette",
"casino_battle",
"n_casino_n",
- "n_casino_F"
+ "n_casino_F",
+ {{0xe0,0x4e,0xec,0x80,0xbb,0xe0,0xaa,0xf8,0x17,0x7e,0x0c,0x70,0x7c,0x05,0xed,0x54,0x1f,0xb5,0x0a,0x23,0x00,0x42,0xf1,0x00},
+ {0x5a,0xe5,0x2d,0x71,0xd8,0x68,0x4b,0xba,0x21,0x1e,0x69,0xc4,0x14,0xfb,0xf0,0x18,0xae,0x99,0xb4,0xa8,0x00,0x42,0xf1,0x00},
+ {0x46,0xe9,0x1f,0xf4,0xd2,0x06,0x77,0x20,0x31,0x81,0x1b,0xe9,0x93,0x51,0x44,0x2f,0x45,0x63,0xaa,0x31,0x00,0x3f,0x7f,0x80},
+ {0x86,0x36,0x00,0x41,0x5e,0xab,0xa9,0xb5,0x39,0xbe,0x90,0xb2,0x48,0x3c,0x4a,0x50,0x59,0xb1,0x82,0x1a,0x00,0x3f,0x7f,0x80}}
},
{
0x24bb, 35, 2, 13, 0xb9, // bmg, track, index, slot, music_id
@@ -708,7 +848,11 @@ const TrackInfo_t arena_info[10] =
"Funky-Stadion",
"skate_battle",
"n_skate_n",
- "n_skate_F"
+ "n_skate_F",
+ {{0x70,0x1d,0xa1,0x6b,0x75,0x95,0x05,0x0a,0xc1,0x52,0x55,0x79,0xaa,0xba,0x40,0x78,0x3e,0x49,0xcf,0x8b,0x00,0x37,0x67,0x20},
+ {0xa7,0xb5,0xfd,0x0a,0x0e,0x88,0x3d,0x3b,0x17,0xd1,0x41,0x97,0x0f,0x62,0x6f,0x66,0x15,0x34,0x1c,0x90,0x00,0x37,0x67,0x20},
+ {0},
+ {0}}
},
{
0x24bc, 36, 4, 15, 0xbd, // bmg, track, index, slot, music_id
@@ -717,7 +861,11 @@ const TrackInfo_t arena_info[10] =
"Steinwüste",
"sand_battle",
"n_ryuusa_n",
- "n_ryuusa_F"
+ "n_ryuusa_F",
+ {{0xc4,0x9d,0x22,0x62,0xb0,0xcc,0x65,0xb6,0x49,0xfe,0x8a,0xdd,0x2d,0xaf,0x91,0xa3,0xcf,0x73,0xcc,0x45,0x00,0x2b,0x80,0x40},
+ {0x4a,0x68,0x1c,0x07,0x07,0x81,0x6f,0xb6,0xe1,0x03,0x5e,0x41,0x79,0xd8,0xa1,0x1c,0x4c,0x1e,0xab,0x0f,0x00,0x2b,0x80,0x40},
+ {0x37,0x21,0xd5,0x20,0x9e,0xc2,0xce,0x5f,0x02,0x2a,0xc3,0x94,0x4f,0xd4,0x55,0xaf,0xd1,0xa2,0xab,0x16,0x00,0x29,0xd9,0xc0},
+ {0x98,0x04,0x2a,0x57,0x0c,0x9a,0x36,0x87,0xa8,0x96,0x42,0x8d,0xe5,0x1c,0xb9,0x9f,0x46,0x54,0x67,0xf0,0x00,0x29,0xd9,0xc0}}
},
{
0x24bd, 37, 8, 24, 0xbf, // bmg, track, index, slot, music_id
@@ -726,7 +874,11 @@ const TrackInfo_t arena_info[10] =
"GCN Keks-Land",
"old_CookieLand_gc",
"r_GC_Battle32_n",
- "r_GC_Battle32_F"
+ "r_GC_Battle32_F",
+ {{0x26,0x77,0x6d,0x2b,0xd9,0x7b,0xae,0x6d,0x6a,0x8e,0x5f,0xa9,0xc1,0xfd,0x59,0xae,0x7c,0xa5,0xde,0xe5,0x00,0x0d,0x5d,0x00},
+ {0x95,0x2d,0xb0,0xfe,0x10,0x10,0xfb,0xcb,0xce,0x5a,0xda,0x22,0xd3,0x85,0xc5,0xf5,0x72,0x4a,0xac,0x9a,0x00,0x0d,0x5d,0x00},
+ {0},
+ {0}}
},
{
0x24be, 38, 9, 25, 0xc1, // bmg, track, index, slot, music_id
@@ -735,7 +887,11 @@ const TrackInfo_t arena_info[10] =
"DS Finstervilla",
"old_House_ds",
"r_ds_battle_n",
- "r_ds_battle_F"
+ "r_ds_battle_F",
+ {{0xb8,0x31,0x2b,0xac,0xb2,0x5e,0xc0,0xf0,0x85,0x60,0xfd,0x95,0xe9,0xed,0xd0,0x8e,0x82,0x1c,0xe6,0xcd,0x00,0x1d,0x59,0x00},
+ {0x66,0x19,0x10,0x53,0x13,0x4c,0xf8,0x77,0x57,0x90,0x28,0x95,0x49,0x97,0x58,0x4a,0xb6,0xc2,0x0a,0x73,0x00,0x1d,0x59,0x00},
+ {0},
+ {0}}
},
{
0x24bf, 39, 5, 21, 0xc3, // bmg, track, index, slot, music_id
@@ -744,7 +900,11 @@ const TrackInfo_t arena_info[10] =
"SNES Kampfkurs 4",
"old_battle4_sfc",
"r_sfc_battle_n",
- "r_sfc_battle_F"
+ "r_sfc_battle_F",
+ {{0x79,0x13,0x71,0x0a,0xfc,0xda,0x69,0xb3,0x59,0xb5,0xf3,0xd6,0x14,0xdd,0xae,0x86,0x14,0x40,0x3e,0xf2,0x00,0x15,0xc1,0x80},
+ {0x3f,0x82,0xaa,0x67,0x67,0xf3,0xc0,0xd6,0x98,0xa3,0x7c,0xde,0x42,0xf9,0xf4,0x93,0xca,0x8b,0xa2,0xfc,0x00,0x15,0xc1,0x80},
+ {0},
+ {0}}
},
{
0x24c0, 40, 6, 22, 0xc5, // bmg, track, index, slot, music_id
@@ -753,7 +913,11 @@ const TrackInfo_t arena_info[10] =
"GBA Kampfkurs 3",
"old_battle3_gba",
"r_agb_battle_n",
- "r_agb_battle_F"
+ "r_agb_battle_F",
+ {{0xac,0xb6,0x9b,0x36,0x23,0x58,0xcd,0xfe,0x8a,0x73,0x94,0x19,0x66,0x96,0xc4,0x29,0x6a,0xcb,0xc3,0xa0,0x00,0x13,0x5b,0xe0},
+ {0xdf,0xb2,0xcd,0x15,0xfa,0xe8,0xd0,0x77,0xfc,0xd8,0x9d,0x13,0xab,0x6a,0x15,0xfc,0xff,0xbe,0xd4,0x21,0x00,0x13,0x5b,0xe0},
+ {0},
+ {0}}
},
{
0x24c1, 41, 7, 23, 0xc7, // bmg, track, index, slot, music_id
@@ -762,7 +926,11 @@ const TrackInfo_t arena_info[10] =
"N64 Wolkenkratzer",
"old_matenro_64",
"r_64_battle_n",
- "r_64_battle_F"
+ "r_64_battle_F",
+ {{0x17,0x77,0x10,0xcd,0x82,0xc3,0x01,0x99,0x03,0x39,0x2a,0x77,0xaf,0xfa,0x46,0x15,0x14,0x54,0x02,0xa3,0x00,0x19,0x47,0xe0},
+ {0x80,0xe8,0x57,0xf6,0x0e,0xb5,0xce,0x54,0x1a,0x6f,0xad,0x4e,0xbf,0x13,0x43,0x04,0x87,0x6c,0x93,0x43,0x00,0x19,0x47,0xe0},
+ {0},
+ {0}}
},
};
diff --git a/project/src/db-mkw.h b/project/src/db-mkw.h
index 41153c2..d0f7215 100644
--- a/project/src/db-mkw.h
+++ b/project/src/db-mkw.h
@@ -17,6 +17,9 @@
// [[TrackInfo_t]] (generic code)
+#define TI_SHA1_IS_D 1
+#define TI_SHA1_NORM 2
+
typedef struct TrackInfo_t
{
u16 bmg_mid; // standard message id for BMG files
@@ -32,6 +35,9 @@ typedef struct TrackInfo_t
ccp sound_n_fname; // file name of normal sound
ccp sound_f_fname; // file name of fast sound
+ u8 sha1[4][24]; // SHA1+size, compatible to sha1_size_t
+ // ... ORIG, ORIG_D, NORM, NORM_D
+
} TrackInfo_t;
diff --git a/project/src/file-type.c b/project/src/file-type.c
index fa2c668..6b0ba52 100644
--- a/project/src/file-type.c
+++ b/project/src/file-type.c
@@ -294,16 +294,16 @@ const file_type_t FileTypeTab[FF_N+1] =
"Texture file with CTGP-CODE"
},
- // FF_CT_TEXT = 23
+ // FF_CTDEF = 23
{
- FF_CT_TEXT, 0, 0, "CTTEXT",
+ FF_CTDEF, 0, 0, "CT-DEF",
".txt", ".szs", ".txt",
FFT_VALID | FFT_TEXT | FFT_DECODE | FFT_ENCODE | FFT_PARSER,
8, {0x23,0x43,0x54,0x2d,0x43,0x4f,0x44,0x45}, // "#CT-CODE"
0,
MinusString,
MinusString,
- "CTGP-CODE text file"
+ "CT-CODE definition file"
},
// FF_CT0_CODE = 24
@@ -440,7 +440,7 @@ const file_type_t FileTypeTab[FF_N+1] =
// FF_LEX_TXT = 35
{
- FF_LEX_TXT, FF_LEX, FF_LEX_TXT, "LEXTXT",
+ FF_LEX_TXT, FF_LEX, FF_LEX_TXT, "LEX-TXT",
".txt", ".szs", ".txt",
FFT_VALID | FFT_TEXT | FFT_DECODE | FFT_ENCODE | FFT_PARSER,
4, {0x23,0x4c,0x45,0x58}, // "#LEX"
@@ -462,7 +462,79 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text file with LE-CODE parameters"
},
- // FF_MDL_TXT = 37
+ // FF_LEDEF = 37
+ {
+ FF_LEDEF, 0, 0, "LE-DEF",
+ ".txt", ".szs", ".txt",
+ FFT_VALID | FFT_TEXT | FFT_DECODE | FFT_ENCODE | FFT_PARSER,
+ 8, {0x23,0x4c,0x45,0x2d,0x44,0x45,0x46,0x31}, // "#LE-DEF1"
+ 0,
+ MinusString,
+ MinusString,
+ "LE-CODE definition file"
+ },
+
+ // FF_LEDIS = 38
+ {
+ FF_LEDIS, 0, 0, "LE-DIS",
+ ".txt", ".szs", ".txt",
+ FFT_VALID | FFT_TEXT | FFT_DECODE | FFT_ENCODE,
+ 8, {0x23,0x4c,0x45,0x2d,0x44,0x49,0x53,0x54}, // "#LE-DIST"
+ 0,
+ MinusString,
+ MinusString,
+ "Text file with CT+LE-CODE distribution settings"
+ },
+
+ // FF_LEREF = 39
+ {
+ FF_LEREF, 0, 0, "LE-REF",
+ ".txt", ".szs", ".txt",
+ FFT_VALID | FFT_TEXT | FFT_DECODE | FFT_ENCODE,
+ 8, {0x23,0x4c,0x45,0x2d,0x52,0x45,0x46,0x31}, // "#LE-REF1"
+ 0,
+ MinusString,
+ MinusString,
+ "Text file as track reference"
+ },
+
+ // FF_LESTR = 40
+ {
+ FF_LESTR, 0, 0, "LE-STR",
+ ".txt", ".szs", ".txt",
+ FFT_VALID | FFT_TEXT | FFT_DECODE | FFT_ENCODE,
+ 8, {0x23,0x4c,0x45,0x2d,0x53,0x54,0x52,0x31}, // "#LE-STR1"
+ 0,
+ MinusString,
+ MinusString,
+ "Text file strings for tracks"
+ },
+
+ // FF_SHA1REF = 41
+ {
+ FF_SHA1REF, 0, 0, "SHA1REF",
+ ".txt", ".szs", ".txt",
+ FFT_VALID | FFT_TEXT | FFT_ENCODE,
+ 8, {0x23,0x53,0x48,0x41,0x31,0x52,0x45,0x46}, // "#SHA1REF"
+ 0,
+ MinusString,
+ MinusString,
+ "Text file with SHA1 of tracks"
+ },
+
+ // FF_PREFIX = 42
+ {
+ FF_PREFIX, 0, 0, "PREFIX",
+ ".txt", ".szs", ".txt",
+ FFT_VALID | FFT_TEXT | FFT_DECODE | FFT_ENCODE,
+ 8, {0x23,0x50,0x52,0x45,0x46,0x49,0x58,0x31}, // "#PREFIX1"
+ 0,
+ MinusString,
+ MinusString,
+ "Text file with console/game prefixes and info"
+ },
+
+ // FF_MDL_TXT = 43
{
FF_MDL_TXT, FF_MDL, FF_MDL_TXT, "MDLTXT",
".txt", ".szs", ".txt",
@@ -474,7 +546,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of MDL"
},
- // FF_PAT_TXT = 38
+ // FF_PAT_TXT = 44
{
FF_PAT_TXT, FF_PAT, FF_PAT_TXT, "PATTXT",
".txt", ".szs", ".txt",
@@ -486,7 +558,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of PAT"
},
- // FF_TPL = 39
+ // FF_TPL = 45
{
FF_TPL, 0, 0, "TPL",
".tpl", ".szs", ".tpl",
@@ -498,7 +570,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Image container"
},
- // FF_BTI = 40
+ // FF_BTI = 46
{
FF_BTI, 0, 0, "BTI",
".bti", ".szs", ".bti",
@@ -510,7 +582,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Image container"
},
- // FF_BREFT_IMG = 41
+ // FF_BREFT_IMG = 47
{
FF_BREFT_IMG, 0, 0, "BT-IMG",
".bt-img", ".szs", ".bt-img",
@@ -522,7 +594,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Raw image of BREFT file"
},
- // FF_BMG = 42
+ // FF_BMG = 48
{
FF_BMG, FF_BMG, FF_BMG_TXT, "BMG",
".bmg", ".szs", ".bmg",
@@ -534,7 +606,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Message file"
},
- // FF_BMG_TXT = 43
+ // FF_BMG_TXT = 49
{
FF_BMG_TXT, FF_BMG, FF_BMG_TXT, "BMGTXT",
".txt", ".szs", ".txt",
@@ -546,7 +618,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of BMG"
},
- // FF_KCL = 44
+ // FF_KCL = 50
{
FF_KCL, FF_KCL, FF_KCL_TXT, "KCL",
".kcl", ".szs", ".kcl",
@@ -558,7 +630,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Collision file"
},
- // FF_KCL_TXT = 45
+ // FF_KCL_TXT = 51
{
FF_KCL_TXT, FF_KCL, FF_KCL_TXT, "KCLTXT",
".obj", ".szs", ".obj",
@@ -570,7 +642,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wavefront OBJ by WSZST"
},
- // FF_WAV_OBJ = 46
+ // FF_WAV_OBJ = 52
{
FF_WAV_OBJ, FF_KCL, FF_WAV_OBJ, "WAVOBJ",
".obj", ".szs", ".obj",
@@ -582,7 +654,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wavefront OBJ"
},
- // FF_SKP_OBJ = 47
+ // FF_SKP_OBJ = 53
{
FF_SKP_OBJ, FF_KCL, FF_SKP_OBJ, "SKPOBJ",
".obj", ".szs", ".obj",
@@ -594,7 +666,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wavefront OBJ by Sketchup"
},
- // FF_KMP = 48
+ // FF_KMP = 54
{
FF_KMP, FF_KMP, FF_KMP_TXT, "KMP",
".kmp", ".szs", ".kmp",
@@ -606,7 +678,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Track information file"
},
- // FF_KMP_TXT = 49
+ // FF_KMP_TXT = 55
{
FF_KMP_TXT, FF_KMP, FF_KMP_TXT, "KMPTXT",
".txt", ".szs", ".txt",
@@ -618,7 +690,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Text version of KMP"
},
- // FF_ITEMSLT = 50
+ // FF_ITEMSLT = 56
{
FF_ITEMSLT, FF_ITEMSLT, FF_ITEMSLT_TXT, "ITEMSLT",
".bin", ".szs", ".slt",
@@ -630,7 +702,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_ITEMSLT_TXT = 51
+ // FF_ITEMSLT_TXT = 57
{
FF_ITEMSLT_TXT, FF_ITEMSLT, FF_ITEMSLT_TXT, "ITEMSLTTXT",
".txt", ".szs", ".txt",
@@ -642,7 +714,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KMG = 52
+ // FF_KMG = 58
{
FF_KMG, FF_KMG, FF_KMG_TXT, "KMG",
".kmg", ".szs", ".kmg",
@@ -654,7 +726,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KMG_TXT = 53
+ // FF_KMG_TXT = 59
{
FF_KMG_TXT, FF_KMG, FF_KMG_TXT, "KMGTXT",
".txt", ".szs", ".txt",
@@ -666,7 +738,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRM = 54
+ // FF_KRM = 60
{
FF_KRM, FF_KRM, FF_KRM_TXT, "KRM",
".krm", ".szs", ".krm",
@@ -678,7 +750,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRM_TXT = 55
+ // FF_KRM_TXT = 61
{
FF_KRM_TXT, FF_KRM, FF_KRM_TXT, "KRMTXT",
".txt", ".szs", ".txt",
@@ -690,7 +762,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRT = 56
+ // FF_KRT = 62
{
FF_KRT, FF_KRT, FF_KRT_TXT, "KRT",
".krt", ".szs", ".krt",
@@ -702,7 +774,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_KRT_TXT = 57
+ // FF_KRT_TXT = 63
{
FF_KRT_TXT, FF_KRT, FF_KRT_TXT, "KRTTXT",
".txt", ".szs", ".txt",
@@ -714,7 +786,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_OBJFLOW = 58
+ // FF_OBJFLOW = 64
{
FF_OBJFLOW, FF_OBJFLOW, FF_OBJFLOW_TXT, "OBFLOW",
".bin", ".szs", ".bin",
@@ -726,7 +798,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_OBJFLOW_TXT = 59
+ // FF_OBJFLOW_TXT = 65
{
FF_OBJFLOW_TXT, FF_OBJFLOW, FF_OBJFLOW_TXT, "OF-TXT",
".txt", ".szs", ".txt",
@@ -738,7 +810,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_ITEM = 60
+ // FF_GH_ITEM = 66
{
FF_GH_ITEM, FF_GH_ITEM, FF_GH_ITEM_TXT, "GHITEM",
".bin", ".szs", ".bin",
@@ -750,7 +822,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_ITEM_TXT = 61
+ // FF_GH_ITEM_TXT = 67
{
FF_GH_ITEM_TXT, FF_GH_ITEM, FF_GH_ITEM_TXT, "GI-TXT",
".txt", ".szs", ".txt",
@@ -762,7 +834,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_IOBJ = 62
+ // FF_GH_IOBJ = 68
{
FF_GH_IOBJ, FF_GH_IOBJ, FF_GH_IOBJ_TXT, "GHIOBJ",
".bin", ".szs", ".bin",
@@ -774,7 +846,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_IOBJ_TXT = 63
+ // FF_GH_IOBJ_TXT = 69
{
FF_GH_IOBJ_TXT, FF_GH_IOBJ, FF_GH_IOBJ_TXT, "GIOTXT",
".txt", ".szs", ".txt",
@@ -786,7 +858,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KART = 64
+ // FF_GH_KART = 70
{
FF_GH_KART, FF_GH_KART, FF_GH_KART_TXT, "GHKART",
".bin", ".szs", ".bin",
@@ -798,7 +870,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KART_TXT = 65
+ // FF_GH_KART_TXT = 71
{
FF_GH_KART_TXT, FF_GH_KART, FF_GH_KART_TXT, "GK-TXT",
".txt", ".szs", ".txt",
@@ -810,7 +882,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KOBJ = 66
+ // FF_GH_KOBJ = 72
{
FF_GH_KOBJ, FF_GH_KOBJ, FF_GH_KOBJ_TXT, "GHKOBJ",
".bin", ".szs", ".bin",
@@ -822,7 +894,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_GH_KOBJ_TXT = 67
+ // FF_GH_KOBJ_TXT = 73
{
FF_GH_KOBJ_TXT, FF_GH_KOBJ, FF_GH_KOBJ_TXT, "GKOTXT",
".txt", ".szs", ".txt",
@@ -834,7 +906,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_DRIVER = 68
+ // FF_DRIVER = 74
{
FF_DRIVER, 0, 0, "DRV",
".bin", ".szs", ".bin",
@@ -846,7 +918,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_VEHICLE = 69
+ // FF_VEHICLE = 75
{
FF_VEHICLE, 0, 0, "VEH",
".bin", ".szs", ".bin",
@@ -858,7 +930,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_BRASD = 70
+ // FF_BRASD = 76
{
FF_BRASD, 0, 0, "BRASD",
".brasd", ".szs", ".brasd",
@@ -870,7 +942,7 @@ const file_type_t FileTypeTab[FF_N+1] =
filetype_info_unknown
},
- // FF_RKG = 71
+ // FF_RKG = 77
{
FF_RKG, 0, 0, "RKG",
".rkg", ".szs", ".rkg",
@@ -882,7 +954,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_RKCO = 72
+ // FF_RKCO = 78
{
FF_RKCO, 0, 0, "RKCO",
".rkco", ".szs", ".rkco",
@@ -894,9 +966,9 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_STATICR = 73
+ // FF_STATICR = 79
{
- FF_STATICR, 0, 0, "STATR",
+ FF_STATICR, 0, 0, "STATICR",
".rel", ".szs", ".rel",
FFT_VALID | FFT_PATCH,
0, {0}, // no magic
@@ -906,7 +978,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"A 'StaticR.rel' file"
},
- // FF_DOL = 74
+ // FF_DOL = 80
{
FF_DOL, 0, 0, "DOL",
".dol", ".szs", ".dol",
@@ -918,7 +990,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"An executable DOL file"
},
- // FF_GCT = 75
+ // FF_GCT = 81
{
FF_GCT, 0, 0, "GCT",
".gct", ".szs", ".gct",
@@ -930,7 +1002,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Gecko Cheat Code"
},
- // FF_GCH = 76
+ // FF_GCH = 82
{
FF_GCH, 0, 0, "GCH",
".gch", ".szs", ".gch",
@@ -942,7 +1014,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Gecko Cheat Handler + coded"
},
- // FF_WCH = 77
+ // FF_WCH = 83
{
FF_WCH, 0, 0, "WCH",
".wch", ".szs", ".wch",
@@ -954,7 +1026,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wiimms Cheat Handler + codes"
},
- // FF_WPF = 78
+ // FF_WPF = 84
{
FF_WPF, 0, 0, "WPF",
".wpf", ".szs", ".wpf",
@@ -966,7 +1038,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"Wiimms Patch File"
},
- // FF_XPF = 79
+ // FF_XPF = 85
{
FF_XPF, 0, 0, "XPF",
".xpf", ".szs", ".xpf",
@@ -978,9 +1050,9 @@ const file_type_t FileTypeTab[FF_N+1] =
"Extended Patch File"
},
- // FF_DISTRIB = 80
+ // FF_DISTRIB = 86
{
- FF_DISTRIB, 0, 0, "DISTRB",
+ FF_DISTRIB, 0, 0, "DISTRIB",
".txt", ".szs", ".txt",
FFT_VALID | FFT_TEXT,
8, {0x23,0x44,0x49,0x53,0x54,0x52,0x49,0x42}, // "#DISTRIB"
@@ -990,7 +1062,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_PNG = 81
+ // FF_PNG = 87
{
FF_PNG, 0, 0, "PNG",
".png", ".png", ".png",
@@ -1002,7 +1074,7 @@ const file_type_t FileTypeTab[FF_N+1] =
"A public image format"
},
- // FF_PORTDB = 82
+ // FF_PORTDB = 88
{
FF_PORTDB, 0, 0, "PORTDB",
".bin", ".szs", ".bin",
@@ -1014,7 +1086,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_TXT = 83
+ // FF_TXT = 89
{
FF_TXT, 0, 0, "TXT",
".txt", ".szs", ".txt",
@@ -1026,7 +1098,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_SCRIPT = 84
+ // FF_SCRIPT = 90
{
FF_SCRIPT, 0, 0, "SCRIPT",
".script", ".szs", ".script",
@@ -1038,7 +1110,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_JSON = 85
+ // FF_JSON = 91
{
FF_JSON, 0, 0, "JSON",
".json", ".szs", ".json",
@@ -1050,7 +1122,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_SH = 86
+ // FF_SH = 92
{
FF_SH, 0, 0, "SH",
".sh", ".szs", ".sh",
@@ -1062,7 +1134,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_BASH = 87
+ // FF_BASH = 93
{
FF_BASH, 0, 0, "BASH",
".sh", ".szs", ".sh",
@@ -1074,7 +1146,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_PHP = 88
+ // FF_PHP = 94
{
FF_PHP, 0, 0, "PHP",
".php", ".szs", ".php",
@@ -1086,9 +1158,9 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_MAKEDOC = 89
+ // FF_MAKEDOC = 95
{
- FF_MAKEDOC, 0, 0, "MKDOC",
+ FF_MAKEDOC, 0, 0, "MAKEDOC",
".md", ".szs", ".md",
FFT_VALID | FFT_TEXT | FFT_EXTERNAL,
0, {0}, // no magic
@@ -1098,7 +1170,7 @@ const file_type_t FileTypeTab[FF_N+1] =
EmptyString
},
- // FF_DIRECTORY = 90
+ // FF_DIRECTORY = 96
{
FF_DIRECTORY, 0, 0, "DIR",
".d", ".d", ".d",
@@ -1148,7 +1220,7 @@ const KeywordTab_t cmdtab_FileType[] =
{ FF_TEX_CT, "TEX", "TEX+CT", 0x5c29 },
{ FF_TEX_CT, "TEX-CT", "TEX0", 0x5c29 },
{ FF_TEX_CT, "TEXCT", 0, 0x5c29 },
- { FF_CT_TEXT, "CT-TEXT", "CTTEXT", 0x3811 },
+ { FF_CTDEF, "CT-DEF", "CTDEF", 0x3811 },
{ FF_CT0_CODE, "C0CODE", "CT0-CODE", 0x1 },
{ FF_CT0_CODE, "CT0CODE", 0, 0x1 },
{ FF_CT0_DATA, "C0DATA", "CT0-DATA", 0x1 },
@@ -1166,6 +1238,12 @@ const KeywordTab_t cmdtab_FileType[] =
{ 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_MDL_TXT, "MDL-TXT", "MDLTXT", 0x11 },
{ FF_PAT_TXT, "PAT-TXT", "PATTXT", 0x3811 },
{ FF_TPL, "TPL", 0, 0x1c09 },
diff --git a/project/src/file-type.h b/project/src/file-type.h
index c54c6ff..7a24e83 100644
--- a/project/src/file-type.h
+++ b/project/src/file-type.h
@@ -85,7 +85,7 @@ typedef enum file_format_t
FF_TEX, // 21
FF_TEX_CT, // 22
- FF_CT_TEXT, // 23
+ FF_CTDEF, // 23
FF_CT0_CODE, // 24
FF_CT0_DATA, // 25
@@ -103,82 +103,88 @@ typedef enum file_format_t
FF_LEX_TXT, // 35
FF_LPAR, // 36
+ FF_LEDEF, // 37
+ FF_LEDIS, // 38
+ FF_LEREF, // 39
+ FF_LESTR, // 40
+ FF_SHA1REF, // 41
+ FF_PREFIX, // 42
- FF_MDL_TXT, // 37
+ FF_MDL_TXT, // 43
- FF_PAT_TXT, // 38
+ FF_PAT_TXT, // 44
- FF_TPL, // 39
- FF_BTI, // 40
- FF_BREFT_IMG, // 41
+ FF_TPL, // 45
+ FF_BTI, // 46
+ FF_BREFT_IMG, // 47
- FF_BMG, // 42
- FF_BMG_TXT, // 43
+ FF_BMG, // 48
+ FF_BMG_TXT, // 49
- FF_KCL, // 44
- FF_KCL_TXT, // 45
- FF_WAV_OBJ, // 46
- FF_SKP_OBJ, // 47
+ FF_KCL, // 50
+ FF_KCL_TXT, // 51
+ FF_WAV_OBJ, // 52
+ FF_SKP_OBJ, // 53
- FF_KMP, // 48
- FF_KMP_TXT, // 49
+ FF_KMP, // 54
+ FF_KMP_TXT, // 55
- FF_ITEMSLT, // 50
- FF_ITEMSLT_TXT, // 51
+ FF_ITEMSLT, // 56
+ FF_ITEMSLT_TXT, // 57
- FF_KMG, // 52
- FF_KMG_TXT, // 53
+ FF_KMG, // 58
+ FF_KMG_TXT, // 59
- FF_KRM, // 54
- FF_KRM_TXT, // 55
+ FF_KRM, // 60
+ FF_KRM_TXT, // 61
- FF_KRT, // 56
- FF_KRT_TXT, // 57
+ FF_KRT, // 62
+ FF_KRT_TXT, // 63
- FF_OBJFLOW, // 58
- FF_OBJFLOW_TXT, // 59
+ FF_OBJFLOW, // 64
+ FF_OBJFLOW_TXT, // 65
- FF_GH_ITEM, // 60
- FF_GH_ITEM_TXT, // 61
+ FF_GH_ITEM, // 66
+ FF_GH_ITEM_TXT, // 67
- FF_GH_IOBJ, // 62
- FF_GH_IOBJ_TXT, // 63
+ FF_GH_IOBJ, // 68
+ FF_GH_IOBJ_TXT, // 69
- FF_GH_KART, // 64
- FF_GH_KART_TXT, // 65
+ FF_GH_KART, // 70
+ FF_GH_KART_TXT, // 71
- FF_GH_KOBJ, // 66
- FF_GH_KOBJ_TXT, // 67
+ FF_GH_KOBJ, // 72
+ FF_GH_KOBJ_TXT, // 73
- FF_DRIVER, // 68
- FF_VEHICLE, // 69
+ FF_DRIVER, // 74
+ FF_VEHICLE, // 75
- FF_BRASD, // 70
- FF_RKG, // 71
- FF_RKCO, // 72
+ FF_BRASD, // 76
+ FF_RKG, // 77
+ FF_RKCO, // 78
- FF_STATICR, // 73
- FF_DOL, // 74
+ FF_STATICR, // 79
+ FF_DOL, // 80
- FF_GCT, // 75
- FF_GCH, // 76
- FF_WCH, // 77
- FF_WPF, // 78
- FF_XPF, // 79
- FF_DISTRIB, // 80
+ FF_GCT, // 81
+ FF_GCH, // 82
+ FF_WCH, // 83
+ FF_WPF, // 84
+ FF_XPF, // 85
+ FF_DISTRIB, // 86
- FF_PNG, // 81
- FF_PORTDB, // 82
+ FF_PNG, // 87
+ FF_PORTDB, // 88
- FF_TXT, // 83
- FF_SCRIPT, // 84
- FF_JSON, // 85
- FF_SH, // 86
- FF_BASH, // 87
- FF_PHP, // 88
- FF_MAKEDOC, // 89
+ FF_TXT, // 89
+ FF_SCRIPT, // 90
+ FF_JSON, // 91
+ FF_SH, // 92
+ FF_BASH, // 93
+ FF_PHP, // 94
+ FF_MAKEDOC, // 95
- FF_DIRECTORY, // 90
+ FF_DIRECTORY, // 96
//--- number of elements
diff --git a/project/src/getopt.c b/project/src/getopt.c
index f0b8ce0..f96bc71 100644
--- a/project/src/getopt.c
+++ b/project/src/getopt.c
@@ -390,7 +390,7 @@ static void __attribute__((__noreturn__)) usage(void)
exit(EXIT_SUCCESS);
}
-int main(int argc, char *argv[])
+int main ( int argc, char *argv[] )
{
struct getopt_control ctl = {
.shell = BASH,
diff --git a/project/src/lecode.inc b/project/src/lecode.inc
new file mode 100644
index 0000000..171d4ba
--- /dev/null
+++ b/project/src/lecode.inc
@@ -0,0 +1,6000 @@
+
+static const u8 lecode_pal_bin_bz2[] = // pool/ref/lecode/r32/lecode-PAL.bin
+{
+ // decompressed size: 0x117a0 = 71584 bytes
+ 0x00,0x01,0x17,0xa0,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x08,0xe9, 0x08,0x24,0x00,0x29,
+ 0xb0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xe0, 0x4e,0xd7,0xd2,0x7d, 0x6e,0xf3,0xd7,0xdf, 0x7d,0xce,0xee,0xe2,
+ 0x52,0x9f,0x61,0xae, 0x7b,0xdc,0xf7,0x1b, 0x5b,0x7d,0xf3,0xbd, 0xd7,0xbb,0x37,0x95,
+ 0x76,0xf3,0xb9,0xeb, 0x19,0xe0,0x76,0xc6, 0x13,0xb3,0x51,0x12, 0x8b,0x5d,0xde,0xec,
+ 0x0d,0xf7,0xbd,0xe2, 0x41,0xf4,0x6b,0xc9, 0x33,0xed,0xf3,0xc3, 0x7b,0x12,0xd4,0xb4,
+ 0x3d,0xb7,0x1e,0xfb, 0xba,0xda,0x76,0xef, 0xbd,0xba,0xf7,0xdb, 0xdc,0xbe,0x36,0x97,
+ 0x33,0x7b,0x65,0x05, 0xf7,0x77,0x3b,0x51, 0xeb,0xb8,0x1a,0xb4, 0xde,0xdf,0x5e,0x7d,
+ 0xf7,0xcd,0x3b,0xec, 0xfb,0xec,0x3a,0xc7, 0xd0,0x75,0x76,0x3b, 0xbc,0x01,0xef,0x6b,
+ 0x7b,0x77,0xde,0x5c, 0xbd,0xbd,0x2e,0x6f, 0x2f,0xbc,0xdf,0x55, 0x79,0xb0,0xf4,0x77,
+ 0xd4,0xbd,0xca,0xfb, 0x2d,0xb6,0xf7,0x31, 0xef,0x7b,0xde,0xf8, 0xbb,0xe9,0x6d,0xe6,
+ 0x76,0x39,0xf0,0xb7, 0xb3,0xde,0xde,0x37, 0xdf,0x72,0x39,0xb0, 0x7d,0x75,0x80,0xbb,
+ 0xee,0x78,0x7b,0xeb, 0x6f,0x1b,0xbc,0x57, 0xdb,0xed,0xdd,0xe5, 0x65,0xdf,0x2d,0x95,
+ 0xee,0x3e,0xbd,0x73, 0x95,0x3e,0x83,0x76, 0xfb,0xb1,0xf7,0xa8, 0x5d,0xb1,0xb2,0x5d,
+ 0x3e,0xb4,0x0d,0x15, 0x75,0xcb,0x37,0x1e, 0xec,0x03,0x8e,0xb6, 0xb7,0x55,0xbd,0xbb,
+ 0x5a,0xda,0x20,0x75, 0xe1,0xa2,0x20,0x9a, 0x00,0x00,0x8d,0x01, 0x18,0x02,0x64,0xc1,
+ 0x0c,0x4d,0x32,0x31, 0x01,0xa6,0x86,0x99, 0x32,0x61,0x4d,0xa6, 0x9a,0x00,0x68,0x1a,
+ 0x6a,0x60,0x4d,0x30, 0xc8,0x8c,0x01,0x30, 0x98,0x02,0x18,0x8c, 0x53,0x64,0x65,0x3d,
+ 0x4c,0x13,0xd3,0x09, 0x89,0xb5,0x19,0x4d, 0x3d,0x4f,0x44,0xda, 0x09,0x85,0x3c,0x00,
+ 0x24,0xf4,0x9e,0x14, 0xf4,0x9a,0x0d,0x4d, 0x10,0x04,0x68,0x00, 0x98,0x23,0x00,0x4d,
+ 0x19,0x30,0x83,0x40, 0x04,0xc9,0xa6,0x02, 0x64,0xd1,0x30,0x26, 0x13,0x01,0x30,0x4c,
+ 0x2a,0x7e,0x9a,0x68, 0x35,0x4f,0x4f,0x53, 0x19,0x4d,0x88,0xd0, 0xa6,0xca,0x78,0x99,
+ 0xa3,0x54,0xcd,0x30, 0x29,0x93,0xca,0x6c, 0xd2,0x9e,0xa7,0xb4, 0xa3,0x32,0x6a,0x69,
+ 0xa7,0x94,0xf4,0xd4, 0xf1,0x0d,0x26,0xd2, 0x6d,0x23,0x43,0x47, 0xa9,0xe9,0xa9,0xa7,
+ 0xa2,0x7a,0x9e,0x90, 0x6a,0x68,0x40,0x68, 0x00,0x46,0x80,0x26, 0x81,0xa2,0x61,0x18,
+ 0x9a,0x69,0x36,0x26, 0x86,0x40,0x34,0x0d, 0x09,0x9a,0x1a,0x53, 0xf4,0x8d,0x4d,0xa3,
+ 0x43,0x46,0x84,0xf5, 0x4d,0x93,0x0d,0x53, 0xf2,0x34,0x93,0xd4, 0x33,0xd4,0x46,0xd4,
+ 0xf2,0x86,0x4f,0x35, 0x4f,0x26,0x93,0xd4, 0xfd,0x29,0xa7,0x91, 0xa9,0xea,0x6d,0x34,
+ 0x6a,0x03,0xd4,0x0f, 0x48,0xf5,0x3d,0x41, 0xb5,0x01,0xb5,0x1e, 0xa0,0xc8,0x66,0x9a,
+ 0x8f,0x48,0x64,0x03, 0x4d,0x08,0x22,0x00, 0x99,0x13,0x00,0x98, 0x46,0x8d,0x31,0x0c,
+ 0x84,0x60,0xa7,0xa9, 0xe1,0xa0,0x43,0x44, 0x69,0xb4,0xc8,0x99, 0x4f,0x64,0x93,0xd4,
+ 0xf0,0x69,0xa8,0x7a, 0x51,0xed,0x23,0x14, 0xde,0x85,0x36,0x49, 0xa6,0x9f,0xa4,0x9e,
+ 0x84,0xc3,0x53,0xd3, 0x50,0xde,0xa8,0x69, 0xa7,0xa3,0x49,0xa6, 0xd0,0x9e,0x93,0x27,
+ 0xa9,0xa1,0x93,0x4f, 0x4d,0x47,0xa9,0x90, 0xd3,0xd4,0xd1,0xe9, 0xa4,0x32,0x63,0x51,
+ 0xe5,0x19,0x0d,0x32, 0x01,0xa7,0xa5,0x09, 0x02,0x19,0x35,0x53, 0xf4,0xc2,0x6a,0x60,
+ 0x9e,0x21,0x4f,0xd5, 0x3f,0x43,0x2a,0x66, 0x93,0xf5,0x27,0xa9, 0xb4,0x27,0xa3,0x29,
+ 0x9e,0xa7,0xa8,0x4c, 0xd1,0x03,0xd4,0xf4, 0x46,0x9b,0x53,0x4d, 0xb5,0x4c,0x4f,0x53,
+ 0xd4,0xc8,0xf5,0x1a, 0x32,0x34,0x34,0x62, 0x68,0x3d,0x35,0x0c, 0x86,0x83,0x47,0xa2,
+ 0x34,0x0d,0x06,0x8d, 0x34,0x68,0xd3,0x46, 0x86,0x80,0xd0,0x68, 0x06,0x8d,0x00,0x34,
+ 0x00,0x01,0xa0,0x24, 0x48,0x84,0x09,0xa3, 0x40,0x00,0x4d,0x1a, 0x06,0x83,0x41,0x18,
+ 0x46,0x98,0x4c,0x23, 0x12,0x63,0x46,0x80, 0x09,0xe9,0xa8,0x4f, 0x01,0xa4,0xc4,0xcd,
+ 0x02,0x61,0x34,0x4f, 0x41,0xb4,0x83,0x13, 0x4c,0x4c,0xa3,0x6d, 0x35,0x09,0x8d,0x14,
+ 0xf6,0x46,0xa6,0xd4, 0x27,0x94,0xd9,0x36, 0x8a,0x69,0x9b,0x53, 0x12,0x78,0x53,0xd4,
+ 0xfd,0x34,0x51,0xea, 0x7a,0x8f,0x28,0xda, 0x9e,0xca,0x9b,0x4d, 0x32,0x3d,0x50,0x2b,
+ 0x45,0xf0,0x78,0x5c, 0x2d,0xb0,0xdb,0xf1, 0x51,0xc3,0x9c,0xc2, 0x2c,0x0e,0xc9,0x87,
+ 0xef,0x3b,0x6e,0x43, 0x82,0xd6,0x24,0x9a, 0x42,0x64,0x73,0xa4, 0x29,0xb6,0x10,0x50,
+ 0x26,0xdc,0xde,0x58, 0x05,0x9a,0xf9,0xb1, 0x10,0x98,0xab,0x51, 0x0a,0x18,0x08,0xdc,
+ 0xb0,0x02,0xed,0xa4, 0x96,0xa2,0x8c,0xea, 0xaa,0x12,0x0a,0xce, 0x10,0x42,0x83,0x98,
+ 0x45,0x12,0x0e,0x60, 0x0e,0xce,0xbe,0xc1, 0x20,0x6b,0x22,0x8e, 0x4b,0xa5,0x80,0x8b,
+ 0x32,0x9d,0x3c,0xe6, 0x9a,0x53,0xac,0xe7, 0xbc,0xc9,0xd3,0x61, 0x3c,0x61,0x6a,0xd5,
+ 0x2a,0x44,0x9e,0xd2, 0xd5,0x6d,0xea,0x4e, 0x4e,0x34,0xb3,0xcc, 0xab,0x22,0xb5,0xbc,
+ 0x5b,0x89,0xd6,0xc0, 0x43,0xba,0xb5,0xa9, 0x75,0x7c,0xa6,0xfb, 0x67,0x73,0x7d,0x7d,
+ 0x7f,0x81,0x67,0x33, 0x20,0x0f,0x5e,0x16, 0x17,0x88,0xd0,0x3a, 0x00,0xc2,0x2e,0xb2,
+ 0x70,0xc6,0x55,0x2a, 0xfd,0x9d,0x8b,0xb3, 0x87,0xd7,0x56,0xaf, 0x5e,0x0a,0xf0,0x10,
+ 0x84,0x25,0x9b,0xba, 0xd0,0xc9,0x21,0x1a, 0x1d,0x04,0x01,0x4b, 0x7b,0xe7,0x01,0x90,
+ 0xcb,0x03,0x2a,0x7b, 0xea,0x14,0x2d,0xab, 0x11,0x90,0xcc,0x96, 0x57,0xa0,0x88,0x70,
+ 0x35,0x59,0x92,0x64, 0x9a,0xc6,0xf2,0x10, 0xc4,0x24,0x85,0x26, 0xd1,0x1d,0x99,0xb3,
+ 0xe6,0x7b,0x2c,0xdf, 0xe5,0xb0,0xee,0x30, 0xab,0x80,0x39,0x00, 0x39,0x00,0x76,0x1b,
+ 0xac,0xae,0x37,0x8b, 0xff,0x3f,0xe5,0xb6, 0xe1,0x79,0xd7,0xfd, 0x83,0x2e,0x90,0xc6,
+ 0x36,0x99,0xeb,0xa8, 0xf9,0xec,0xcf,0x34, 0x7c,0x36,0x1a,0xb6, 0x8c,0xfd,0x44,0x07,
+ 0xf9,0xfe,0xef,0xdf, 0x89,0xfb,0xbf,0x7b, 0xb5,0x56,0x04,0x0d, 0xdc,0x82,0x07,0x04,
+ 0x38,0x1d,0x97,0xd4, 0xf3,0x82,0x66,0xb2, 0xf1,0x4b,0x42,0xbd, 0x6f,0xd6,0xf6,0xd7,
+ 0x17,0x77,0x68,0x8a, 0xd8,0x6e,0x9a,0x77, 0x7a,0x63,0xd7,0x4b, 0xc3,0xd2,0xf7,0x92,
+ 0x58,0x19,0x51,0x7e, 0xa6,0xe7,0x04,0xfe, 0x46,0x44,0x08,0x08, 0x41,0x60,0x8a,0x8f,
+ 0xb7,0xc8,0x9d,0xaa, 0xf6,0xec,0xd6,0x27, 0xac,0x3f,0x26,0x8a, 0xb3,0x86,0xad,0x99,
+ 0xd1,0x30,0xe9,0xba, 0x3c,0xe4,0xc9,0x3a, 0x7f,0x24,0xe1,0xf9, 0xce,0x67,0x88,0x03,
+ 0x1e,0x97,0x15,0x41, 0x67,0x0e,0x38,0xa5, 0x74,0x48,0x62,0x01, 0x59,0x66,0xd4,0x58,
+ 0xcb,0x6c,0x8c,0x88, 0x78,0x8b,0xa0,0x76, 0x87,0x14,0x9d,0x59, 0xee,0x1e,0xdc,0x0a,
+ 0xc4,0x66,0x52,0xb5, 0x4d,0x18,0xfc,0x82, 0x37,0x92,0x47,0x07, 0x39,0x84,0xbe,0x88,
+ 0x3a,0x60,0xec,0x0b, 0x3a,0x83,0x44,0xd5, 0x76,0x7d,0x14,0xaa, 0x6b,0x99,0xe1,0xa2,
+ 0x30,0xae,0xe0,0xf3, 0x74,0x06,0xda,0x4c, 0x85,0x82,0x70,0x7f, 0x06,0xf1,0x5b,0x8d,
+ 0x93,0x69,0x61,0x39, 0x6f,0xfd,0xc5,0x26, 0xb4,0x6e,0xa6,0xc3, 0xb0,0x93,0x04,0xcb,
+ 0x2b,0xa0,0xa5,0x2f, 0xa0,0x85,0xc5,0x1c, 0xa8,0x03,0xe1,0x8b, 0xa6,0x1b,0x04,0xc8,
+ 0x0e,0xf5,0x76,0x54, 0x01,0x10,0xf9,0x85, 0xc7,0x21,0x50,0xaa, 0xdd,0xf9,0xee,0xbf,
+ 0x68,0x0b,0x00,0x10, 0x12,0xdc,0xe8,0x8c, 0x28,0x88,0x04,0x84, 0x7c,0x5c,0x68,0xbe,
+ 0x35,0xd9,0x42,0x18, 0x2f,0x98,0xd0,0xd6, 0x7c,0xb5,0x1b,0x09, 0xfb,0x0b,0x1d,0xb9,
+ 0x86,0x05,0x5b,0xb7, 0x1f,0x1f,0x1c,0x93, 0x95,0x4c,0x3c,0x96, 0xb0,0x93,0xd3,0x34,
+ 0x68,0x9d,0x18,0xde, 0xc6,0x2c,0xb8,0xc8, 0xec,0xe8,0xb7,0x50, 0x55,0x88,0x62,0xf9,
+ 0x16,0x20,0x49,0x7c, 0x4e,0x9e,0x41,0x82, 0x33,0x34,0x97,0x08, 0xde,0x16,0xdc,0xba,
+ 0x07,0x16,0xd6,0x22, 0x42,0x7f,0xf8,0x65, 0xa5,0x45,0xed,0x9d, 0x79,0xec,0x99,0xf1,
+ 0x1a,0x2f,0x6f,0x3b, 0x1b,0xd1,0x9f,0x4d, 0xbb,0xa7,0x73,0x8b, 0x9e,0x77,0xa5,0x5b,
+ 0xd6,0x6b,0x08,0x0e, 0x8b,0x5d,0xac,0x38, 0x57,0xd9,0xaf,0x46, 0x5d,0x22,0xa1,0xb4,
+ 0x4e,0xe2,0x9d,0x51, 0x89,0xda,0xc5,0xa2, 0xb5,0x2d,0x11,0x86, 0xe1,0xc2,0x3d,0x9a,
+ 0x79,0xab,0x31,0x58, 0x51,0x8a,0xb6,0xc6, 0x10,0x1a,0xf4,0x85, 0xd7,0x52,0x67,0x2f,
+ 0x6d,0x45,0x92,0xbf, 0xc2,0x3c,0x50,0xe3, 0xb5,0xac,0x9c,0x5c, 0x09,0x93,0x32,0x3d,
+ 0x4f,0x41,0x34,0x9c, 0x58,0x41,0x31,0xce, 0x61,0xae,0x78,0x46, 0xe2,0xce,0x14,0x59,
+ 0x00,0xbe,0x1b,0xfa, 0xad,0x7a,0x3d,0x28, 0x24,0x69,0x9d,0x2d, 0xae,0x7f,0x3a,0x89,
+ 0x59,0x4d,0xee,0xa1, 0x29,0xb7,0x6b,0x0e, 0x35,0x2b,0x56,0x13, 0xfb,0x95,0x39,0xbb,
+ 0xdc,0x0d,0x9d,0xda, 0xf1,0xf5,0x84,0x59, 0xc8,0x9d,0xfe,0xe1, 0x73,0x85,0xe8,0x8e,
+ 0xe6,0xae,0x05,0x35, 0x20,0x12,0xf6,0x3d, 0x17,0x79,0xce,0xcd, 0x5d,0xb1,0x08,0xb4,
+ 0x74,0x24,0x31,0xf1, 0x07,0x24,0x33,0x4d, 0x2c,0xb2,0xc1,0x20, 0x6a,0x91,0xa9,0x3e,
+ 0xed,0x35,0xd9,0x63, 0x67,0xed,0x43,0x6f, 0xff,0x6b,0x0f,0xc1, 0x95,0x2d,0x18,0x49,
+ 0xdd,0x5a,0x8b,0x62, 0x00,0xaf,0x2d,0x9f, 0x66,0x5d,0x20,0xb5, 0xb5,0x2d,0x96,0xce,
+ 0x9b,0xf5,0xf4,0xd6, 0xc8,0x3b,0x66,0x08, 0xb2,0x7a,0xb6,0x91, 0xdc,0x51,0x76,0xf3,
+ 0x54,0xcb,0x41,0x5d, 0x6a,0xe7,0x40,0xd7, 0x5c,0xa5,0xdf,0xb6, 0xc4,0x2f,0x8f,0x29,
+ 0x71,0xe4,0x22,0xe5, 0x49,0xd9,0x3a,0xd6, 0x6a,0x70,0xa5,0xa7, 0x56,0xd5,0x7a,0x57,
+ 0x04,0xed,0x98,0x1b, 0x94,0xc0,0x26,0x12, 0xbd,0xbd,0x72,0xcd, 0x37,0xa1,0xcc,0xcb,
+ 0x70,0xc0,0x5d,0xd4, 0x61,0xc1,0x80,0x5b, 0x3e,0x3d,0x8a,0xce, 0x8c,0xe5,0xc0,0x7e,
+ 0x09,0xd4,0x2f,0x69, 0xfc,0x4f,0x95,0x73, 0x0c,0x61,0xa2,0xab, 0xd4,0xd6,0xbb,0x79,
+ 0x85,0xb3,0xa8,0x9a, 0xb0,0x9a,0x50,0x2f, 0x5f,0x25,0xd2,0x54, 0x75,0x18,0x81,0x2c,
+ 0xd0,0x3d,0xd1,0x4e, 0xd0,0x9a,0x68,0x6f, 0xc0,0xba,0xe6,0x95, 0xd8,0x29,0xe7,0x24,
+ 0x90,0x84,0x21,0x42, 0xb4,0xdd,0x8e,0x1d, 0xcb,0x43,0x3a,0x9c, 0x51,0x62,0x81,0xbd,
+ 0x9d,0x01,0xf5,0xd3, 0xf8,0xa0,0xaf,0x5b, 0xc8,0x4a,0xe9,0xed, 0xd2,0x81,0x87,0x36,
+ 0x43,0xd8,0x18,0x5b, 0x5e,0x57,0x34,0xeb, 0x43,0x0c,0x2c,0x17, 0x96,0x40,0xe0,0x44,
+ 0xad,0x89,0x6b,0x6f, 0x53,0x06,0x85,0x8c, 0x78,0xaa,0x99,0x38, 0x4a,0x40,0x09,0x05,
+ 0xad,0x44,0x8a,0xa6, 0x38,0xa5,0xb3,0xb7, 0x1b,0x4b,0xd6,0x06, 0xd6,0x2b,0x0a,0x3e,
+ 0x16,0x13,0xb1,0xd3, 0x3a,0x97,0xc1,0x41, 0x95,0xa5,0xd0,0xd6, 0xe8,0xbb,0x13,0x06,
+ 0x06,0x2d,0x42,0x44, 0xb5,0xaf,0x50,0x3c, 0x9d,0x88,0xb4,0x9b, 0x81,0x0e,0x65,0x19,
+ 0xa8,0x16,0x52,0xc4, 0x53,0x89,0x45,0x39, 0x49,0x02,0x24,0x08, 0x8f,0x84,0x10,0x38,
+ 0x75,0x6b,0x15,0xb9, 0xc1,0x1c,0xe9,0x09, 0x24,0xf3,0xdc,0x15, 0x6c,0xf6,0xda,0x5d,
+ 0x6f,0xb9,0xc1,0x5e, 0x1d,0xe5,0x3b,0x37, 0xd6,0x1d,0x4c,0x63, 0x09,0x10,0x66,0xab,
+ 0x15,0xf8,0x38,0x6e, 0x97,0xa5,0x1b,0x8f, 0x00,0xd3,0xb1,0xdd, 0x89,0xd5,0x42,0xa7,
+ 0x0e,0x42,0x8c,0xad, 0x7f,0xdb,0x5d,0x23, 0x85,0x8f,0x86,0xd6, 0xb5,0x52,0x0e,0x72,
+ 0xf8,0x34,0x29,0xd6, 0xde,0x5b,0x56,0x33, 0x38,0x37,0xae,0x38, 0xe2,0x7d,0xbf,0xcd,
+ 0xc8,0x36,0xa4,0xa7, 0x7e,0x6d,0xea,0x2b, 0x24,0x28,0xc5,0x30, 0x45,0x47,0x0b,0xba,
+ 0xc9,0x7a,0x9d,0xaf, 0xe2,0xc3,0x9d,0x24, 0x6f,0x81,0x9a,0x6f, 0xb5,0xb4,0x4e,0x6c,
+ 0x4b,0xeb,0x40,0xfa, 0xde,0x31,0xc6,0x1d, 0xac,0x3c,0x97,0xb6, 0xd0,0xa6,0xea,0xad,
+ 0x74,0xbb,0x74,0xbb, 0xcc,0x74,0xdf,0xc9, 0xb0,0xd6,0xd9,0x79, 0x8d,0x7f,0x9b,0xe3,
+ 0x65,0x37,0xc0,0xb3, 0xcb,0x4c,0xf4,0x28, 0x52,0xbe,0x67,0x4a, 0x9a,0x68,0xfc,0x2f,
+ 0xce,0xb8,0x5f,0xc2, 0xb4,0xaf,0xd7,0xb1, 0x2b,0x3a,0x80,0xcb, 0x65,0x8a,0x0a,0x9d,
+ 0x31,0x41,0xbb,0x9e, 0xcb,0x4e,0xb8,0x50, 0x7a,0xa4,0x49,0xe2, 0x85,0x31,0x45,0x05,
+ 0xde,0x30,0x43,0xbf, 0xaa,0xb3,0x33,0x32, 0xa8,0x76,0x8d,0x20, 0x1d,0x49,0x97,0x96,
+ 0xb9,0x87,0xf4,0x93, 0x90,0xfb,0xfc,0xaa, 0x3b,0xeb,0x56,0xf7, 0x2a,0x12,0x37,0x8e,
+ 0x24,0x4a,0x19,0xdf, 0x7b,0xe2,0x9b,0x2c, 0x1b,0xac,0x0e,0xa6, 0x3f,0x59,0xd7,0xbc,
+ 0x0d,0x3c,0xdd,0x4f, 0x6b,0x27,0x35,0x89, 0x27,0x83,0xa4,0xbe, 0x4f,0x2a,0x25,0x99,
+ 0xe0,0x4a,0xca,0xc0, 0x72,0x62,0xa9,0x36, 0x43,0x0e,0x29,0x84, 0x3a,0xf2,0x78,0xb6,
+ 0xfd,0xdb,0x30,0x81, 0x60,0x96,0xeb,0x20, 0x40,0x67,0xa0,0x8c, 0x52,0xfa,0xc4,0x43,
+ 0x6e,0x37,0x6b,0xcb, 0xab,0xd5,0x21,0xb9, 0x79,0x0d,0xde,0xd2, 0x98,0x45,0x76,0x19,
+ 0x89,0x9a,0x42,0xd9, 0xdc,0x31,0x8c,0x66, 0xaa,0xde,0x9c,0x00, 0x9f,0xa8,0xf1,0x9b,
+ 0x23,0x54,0x5b,0xee, 0x8e,0xc1,0x48,0x08, 0x65,0x1e,0x23,0x98, 0x5d,0xfc,0x18,0xb1,
+ 0x53,0xff,0x60,0xf7, 0x02,0xa9,0x93,0x14, 0x0f,0x40,0x69,0x65, 0x08,0x45,0x2a,0xd6,
+ 0x56,0x47,0x00,0x75, 0xf1,0x2e,0xb5,0xcd, 0x21,0xe3,0x06,0xf7, 0xd7,0xe9,0x12,0x00,
+ 0xc8,0xc1,0xcc,0xd6, 0x75,0xd5,0xa1,0xb0, 0x69,0x88,0x67,0xd2, 0xea,0xb5,0x19,0x2e,
+ 0x46,0x27,0xd2,0xa5, 0x4c,0x2d,0x2c,0x0a, 0x27,0xdc,0xf2,0x78, 0x35,0x71,0xdb,0x02,
+ 0x8e,0x63,0xd9,0xdd, 0xc5,0xf9,0x96,0x21, 0x73,0xfb,0x24,0xae, 0xd0,0x17,0x90,0xcf,
+ 0xdd,0xb0,0xa0,0xa3, 0x74,0x57,0x16,0xc3, 0x76,0x0c,0x63,0x19, 0x70,0x0c,0xbd,0xd3,
+ 0x19,0x16,0x82,0x08, 0xfa,0xec,0x33,0xce, 0x6a,0x08,0xe0,0x08, 0x42,0xad,0x71,0x90,
+ 0x80,0xdb,0xa2,0x0b, 0xdd,0x28,0x4e,0x37, 0x79,0x14,0xea,0x0a, 0xe8,0x0a,0xec,0xd8,
+ 0x76,0x15,0xcc,0x17, 0x3e,0xab,0x8f,0xbb, 0x98,0x82,0x7c,0x7b, 0x80,0xc6,0x65,0x52,
+ 0xfc,0xdb,0x0b,0xf9, 0x66,0xe3,0x5c,0x92, 0x05,0x72,0xfe,0x50, 0x22,0x50,0x9f,0x7f,
+ 0x22,0x11,0xb5,0x83, 0x95,0xd7,0x67,0xcc, 0xdc,0x3c,0xcd,0xa6, 0x4f,0x49,0xab,0x23,
+ 0x6c,0xf1,0xad,0x5e, 0xe6,0x3b,0xdc,0x78, 0xa6,0xf4,0xbf,0x88, 0x90,0xdb,0x45,0x85,
+ 0x88,0xe0,0x9e,0x63, 0xc9,0x30,0xa8,0x91, 0xbf,0xda,0x53,0xd2, 0xe7,0xe2,0x2f,0x9a,
+ 0x5f,0x13,0x58,0x93, 0x4e,0xdb,0x53,0xa9, 0x6d,0x46,0xce,0x84, 0xa0,0xcd,0x25,0x2d,
+ 0xa2,0xce,0xde,0xb9, 0x91,0x5b,0x18,0x00, 0xb2,0x2b,0x53,0xc4, 0xff,0xcb,0x9f,0xf9,
+ 0xa1,0x5f,0x4b,0xe1, 0xdc,0xff,0xb9,0x5c, 0x0e,0x0e,0x3b,0x3f, 0x7a,0xac,0x06,0x2d,
+ 0x25,0xa3,0x1f,0xd3, 0x3e,0x96,0x97,0x87, 0x84,0x58,0x01,0x24, 0x01,0x2b,0x04,0x03,
+ 0xee,0x5c,0x35,0x98, 0x7a,0x0b,0x5c,0x6a, 0x60,0x99,0xd4,0x40, 0xbe,0xa9,0x4e,0xbc,
+ 0xe9,0xb5,0xea,0x0b, 0x9a,0x6e,0xc3,0x6c, 0xa9,0x9a,0x11,0xbc, 0xe6,0x23,0xee,0x41,
+ 0x44,0xfb,0x95,0x03, 0x00,0x69,0x89,0x11, 0xa6,0x84,0x56,0x8e, 0x68,0x17,0x0c,0x8d,
+ 0x0d,0x6e,0x4e,0x86, 0x49,0x8d,0x1e,0xef, 0x26,0xdf,0x58,0xa7, 0x5d,0x61,0xc4,0x80,
+ 0x69,0xc1,0x3d,0x9a, 0xe5,0x19,0x5b,0x51, 0xe0,0x59,0x75,0x75, 0x70,0xfe,0x47,0x09,
+ 0xc2,0x25,0xee,0xaf, 0xcf,0x16,0x4e,0x45, 0xd9,0xa0,0x1c,0xd4, 0x42,0x7c,0xac,0x4a,
+ 0xf7,0xb6,0x43,0xaa, 0xef,0x33,0x17,0x46, 0x83,0x1f,0x0e,0xf1, 0x9f,0x5e,0x82,0xca,
+ 0x08,0xb9,0x17,0xfa, 0x7d,0xfa,0x94,0x44, 0xd4,0x02,0x63,0x9c, 0x90,0x19,0x6e,0xbd,
+ 0x4c,0x75,0x14,0x3c, 0x12,0x5a,0xa0,0xa6, 0xb0,0x20,0x63,0xe2, 0x4a,0xbc,0x74,0x30,
+ 0x6c,0x56,0xd1,0xa6, 0x25,0x97,0x62,0x0e, 0x13,0xa8,0x00,0x90, 0x2b,0x41,0x40,0x32,
+ 0x36,0x2c,0x55,0x03, 0x26,0x28,0x04,0xc9, 0x73,0x1b,0x57,0x90, 0x67,0xcf,0x6b,0xd6,
+ 0xd7,0xe6,0x51,0x9b, 0x58,0x48,0x17,0x7a, 0xce,0x2e,0xdf,0x2a, 0x02,0x5e,0x30,0x60,
+ 0x04,0x88,0x44,0x1d, 0x24,0xb6,0xb5,0xe3, 0x09,0x4c,0xaa,0x20, 0xde,0x62,0xeb,0x6c,
+ 0x27,0x03,0x02,0x82, 0xc5,0x68,0xaa,0x61, 0x77,0xf6,0x6e,0xd6, 0xaa,0x73,0x88,0x4d,
+ 0x5b,0x3e,0xb9,0x9e, 0x8e,0x0a,0x07,0x09, 0x05,0x2b,0x53,0x54, 0x6d,0x25,0x86,0xd5,
+ 0xd8,0x23,0x36,0x4c, 0x37,0x7c,0xa2,0x55, 0x65,0xbf,0x99,0xbc, 0xdb,0xb0,0x15,0x00,
+ 0x83,0xa3,0x0a,0x84, 0x0c,0x1f,0x24,0xe6, 0xe0,0xea,0x3e,0x3a, 0x91,0x54,0x9c,0x04,
+ 0xf4,0xe7,0xb9,0x7c, 0x20,0x14,0xe6,0x2e, 0x9f,0xdc,0xcf,0xa5, 0x78,0x99,0x05,0x43,
+ 0x85,0xd7,0x7a,0xd1, 0x65,0xfb,0x8c,0xe1, 0x5c,0x07,0xca,0xda, 0x9b,0xa2,0x93,0x06,
+ 0xe2,0x38,0xec,0xa6, 0xb7,0x97,0xe3,0xa6, 0xaa,0x6f,0x9b,0xeb, 0xfe,0x93,0x49,0x6c,
+ 0x81,0xb7,0x9f,0x8f, 0x99,0x8c,0x32,0x31, 0x9e,0xf0,0x35,0xe2, 0x93,0x1b,0x2e,0xac,
+ 0xa5,0x30,0x88,0xd6, 0xcb,0x22,0x78,0xb3, 0x5c,0x13,0xaf,0x9e, 0x49,0x08,0xd4,0xad,
+ 0x6a,0x59,0x45,0x13, 0x31,0xab,0x68,0xee, 0xf7,0x31,0x9f,0x8e, 0xe2,0x9b,0xd9,0x5b,
+ 0x9c,0x95,0x2c,0xac, 0x6c,0xa4,0xc4,0x93, 0x25,0x5f,0xdd,0xb3, 0x59,0x64,0xeb,0x54,
+ 0x9a,0x89,0xae,0x83, 0x06,0xef,0xcb,0xb0, 0x20,0x11,0x94,0x51, 0x19,0x02,0x4b,0x26,
+ 0x01,0x6b,0xdd,0x08, 0xd5,0x89,0x6a,0x45, 0x93,0x04,0x44,0x0d, 0xa6,0x43,0x3b,0x61,
+ 0x2a,0x63,0x8e,0x32, 0x05,0xb5,0x62,0x29, 0x1d,0x8a,0x60,0x21, 0x85,0x97,0x8c,0xd1,
+ 0x43,0x48,0x1b,0x24, 0x38,0x69,0x22,0x18, 0x1c,0xb3,0xa3,0x53, 0x44,0xb7,0x57,0x92,
+ 0x90,0x69,0xfc,0x0d, 0x4d,0x72,0x66,0xc6, 0x8b,0x52,0x69,0x96, 0x9a,0x2d,0x03,0x4d,
+ 0x82,0xae,0xd4,0x98, 0x91,0x88,0xc6,0x21, 0x33,0xca,0x22,0x44, 0xc6,0xc5,0xb8,0xb8,
+ 0x15,0x73,0xb3,0xf4, 0x26,0xb0,0x02,0x25, 0x01,0xd3,0x15,0x6b, 0xb6,0x26,0xd3,0x30,
+ 0xb2,0x51,0x10,0x5f, 0x90,0x30,0x78,0xc4, 0xa2,0x6c,0xb5,0x5d, 0x2b,0x94,0x03,0x66,
+ 0x58,0x8b,0x3c,0xba, 0x24,0x60,0x1b,0x5f, 0xf9,0xd1,0x24,0xfb, 0x14,0x49,0xca,0x92,
+ 0x66,0x82,0x51,0x65, 0xa5,0x46,0xc5,0x36, 0x27,0x52,0x9a,0x27, 0x9b,0x4e,0x65,0xf2,
+ 0x5e,0x4a,0xfb,0x2c, 0xd5,0x47,0xd1,0xe7, 0x5a,0x03,0x1d,0xf8, 0xcd,0x15,0x5a,0xca,
+ 0x6b,0x25,0x4b,0x2c, 0x04,0xb4,0x13,0x54, 0x4b,0x50,0x60,0x94, 0xd1,0x07,0x31,0x05,
+ 0xb0,0xf9,0x43,0xed, 0x76,0x41,0x33,0xe0, 0x16,0xa6,0xc1,0xe8, 0x1b,0x86,0xa3,0xd6,
+ 0x61,0x6f,0x36,0xf8, 0xf3,0x25,0x59,0x8c, 0x80,0x8f,0x4a,0xaa, 0xb1,0x5c,0xc5,0x56,
+ 0x8a,0x19,0xc7,0xab, 0x2b,0xae,0x3b,0x13, 0x9c,0x19,0x44,0x94, 0x26,0x97,0xd8,0x67,
+ 0x21,0x9b,0xbc,0x8e, 0x68,0x03,0xc1,0x4b, 0x89,0x96,0xe5,0xb7, 0x87,0xab,0x15,0xff,
+ 0x7e,0xf1,0x71,0xcb, 0x35,0xe1,0x5b,0x11, 0xcf,0xa2,0xc1,0x83, 0xa7,0xe1,0xc5,0xbe,
+ 0xd9,0x3a,0xe4,0xab, 0x6c,0xf8,0xb7,0x37, 0xf2,0xcc,0x48,0xc5, 0xb4,0x2f,0x37,0xb0,
+ 0xc8,0xd4,0x4f,0xb7, 0x34,0x42,0x26,0x35, 0xaa,0xf8,0x49,0xdb, 0xb5,0x01,0xcc,0xff,
+ 0xaa,0x93,0x76,0xf8, 0x42,0xf5,0x00,0x18, 0x9a,0x31,0x85,0xc0, 0xe1,0xc3,0x24,0x3b,
+ 0xf8,0xfb,0xe5,0x9a, 0x9e,0x16,0x73,0xee, 0x86,0xee,0x93,0x14, 0x1e,0x6f,0x2c,0x3a,
+ 0xdb,0x51,0x5f,0x29, 0x1d,0x72,0xb0,0xe3, 0x39,0xd4,0x48,0x41, 0xe7,0x6c,0x9b,0x33,
+ 0x9b,0x8e,0xcf,0x05, 0x35,0x3b,0x8d,0x93, 0x1e,0xd1,0xc6,0xec, 0xb9,0xc3,0xe0,0x98,
+ 0x35,0x5c,0xb6,0x03, 0x75,0x14,0x34,0xa5, 0x83,0xac,0xd7,0xe6, 0x75,0xa7,0xe3,0xa0,
+ 0x48,0x8a,0x24,0x5a, 0xb0,0x24,0xb5,0xa7, 0x3a,0x4b,0x1d,0x08, 0x49,0x07,0x75,0x3d,
+ 0xc5,0x8d,0x46,0x4e, 0x6d,0x2a,0x54,0x44, 0xd7,0x2a,0x6c,0x66, 0x0b,0xef,0xdf,0xb8,
+ 0x5f,0xc3,0x20,0xff, 0x8c,0x75,0xee,0x99, 0x77,0x10,0x56,0xb5, 0xfb,0x67,0x32,0xae,
+ 0xdb,0x14,0xf6,0x38, 0xd9,0xd7,0x96,0x62, 0x89,0x38,0x95,0x50, 0xeb,0x09,0x20,0xa1,
+ 0xa0,0xb4,0x07,0x95, 0x1d,0xeb,0x17,0xa5, 0x33,0x3b,0xb5,0xd7, 0xd0,0xa7,0xb7,0x5f,
+ 0x0b,0x0b,0xb8,0xc8, 0xa4,0xc5,0x68,0x5c, 0x6e,0x8a,0x3f,0x43, 0xf9,0xcf,0x25,0x99,
+ 0xd9,0xf7,0xb9,0xc2, 0x33,0xa2,0x36,0x93, 0xdf,0xde,0x60,0x63, 0xca,0x5e,0xa8,0xdf,
+ 0x6f,0x4d,0xc5,0xda, 0x0b,0x04,0xe5,0xe2, 0xbc,0xb5,0x23,0x06, 0xd7,0xbc,0x56,0x49,
+ 0x6b,0x9b,0xc7,0x6e, 0x45,0xdd,0xce,0xa5, 0x48,0x48,0x3d,0x13, 0xa0,0x90,0xd1,0x8d,
+ 0x76,0x40,0xd6,0x3d, 0xef,0x17,0x77,0x07, 0xda,0xf2,0xe9,0x86, 0x96,0x9c,0x68,0xe1,
+ 0xf9,0x50,0xb3,0xb7, 0x9b,0xe8,0xc8,0x9d, 0xb7,0x3e,0xd5,0x1c, 0x68,0xc5,0x24,0x95,
+ 0x3a,0x4d,0xf0,0xba, 0xba,0xc8,0x4c,0x8d, 0x37,0xc8,0x38,0x20, 0x5e,0x79,0x01,0x4a,
+ 0x94,0x5a,0x30,0xdb, 0x0a,0x48,0x0a,0xf0, 0x27,0x52,0x79,0x28, 0x64,0x29,0x00,0x97,
+ 0x3e,0x0e,0x33,0x29, 0x8c,0x1e,0x21,0xc6, 0x39,0x75,0x78,0xd8, 0xcd,0x90,0x50,0x90,
+ 0xe5,0x8f,0x3d,0x3a, 0x8c,0x34,0xab,0x7e, 0x45,0x68,0xc7,0xaf, 0x59,0x45,0x5d,0xb7,
+ 0x9e,0x9f,0xde,0x62, 0x33,0xb9,0x02,0xc1, 0xfd,0x22,0x36,0x7c, 0x15,0x00,0x9b,0x74,
+ 0xc2,0xbe,0xd2,0xd3, 0x39,0x99,0x4c,0xbf, 0x27,0x08,0xee,0xdd, 0x1c,0x2a,0xf2,0x68,
+ 0xf9,0x70,0x19,0x5b, 0x88,0xbc,0x6a,0xff, 0x7b,0x0a,0xf5,0x85, 0xd8,0x94,0x6a,0xc5,
+ 0x6c,0x8a,0xc2,0xa5, 0x97,0x22,0xf4,0x08, 0x62,0x54,0x12,0xec, 0x0b,0xa2,0x82,0xfa,
+ 0x1a,0xbd,0x32,0xb6, 0x73,0x52,0x5d,0xd0, 0x9c,0x5c,0xc3,0x72, 0x10,0x8e,0x45,0xe5,
+ 0xcb,0x10,0x4a,0x44, 0x00,0x91,0x0b,0x05, 0xa5,0x68,0x4b,0x81, 0xbd,0xb7,0x25,0x51,
+ 0x58,0x30,0xb0,0x23, 0x3b,0x21,0x3e,0xcc, 0x81,0xc2,0xa6,0x2d, 0x2a,0x21,0xe4,0x24,
+ 0x69,0x36,0xd8,0x38, 0x96,0xba,0x35,0x52, 0xb0,0xa7,0x8a,0xa3, 0x00,0x30,0xbc,0xd3,
+ 0xe1,0xaf,0x55,0x96, 0x52,0x39,0x3b,0xae, 0x6d,0x8e,0x25,0x44, 0xab,0x45,0x33,0x2e,
+ 0xbb,0x0c,0xe8,0x69, 0xd4,0x7a,0xc2,0xcd, 0xc9,0x4b,0xf4,0x9a, 0x22,0x07,0x38,0x45,
+ 0x12,0xb2,0x02,0x88, 0x40,0x4c,0x30,0x14, 0x28,0x52,0x17,0x78, 0x73,0xf4,0x94,0x6d,
+ 0x09,0x05,0x11,0x28, 0x37,0xd4,0xde,0xef, 0xaf,0x2f,0x23,0xea, 0xf6,0x31,0xfa,0xdd,
+ 0xf4,0x29,0x38,0x5a, 0x79,0x35,0x59,0xd3, 0x61,0x84,0x21,0x0b, 0x1a,0x4b,0xb3,0x8e,
+ 0x36,0xb9,0x28,0x09, 0x88,0xe0,0x41,0xb7, 0xbc,0x75,0x32,0x91, 0x81,0x85,0xf5,0x33,
+ 0x63,0xb6,0x23,0x36, 0x7d,0xc4,0x59,0xa7, 0xc0,0xb2,0x8e,0xa0, 0xb5,0x61,0xef,0xf0,
+ 0x1d,0xdc,0x35,0xde, 0xcf,0xc1,0x5c,0x9d, 0x6d,0xd0,0x3c,0xef, 0x7d,0x92,0xd8,0xfd,
+ 0xda,0xe3,0x11,0x50, 0x8c,0x8b,0x17,0xb9, 0x03,0x39,0x9d,0xdd, 0xcf,0xd1,0xf9,0x72,
+ 0x89,0xd9,0xef,0x28, 0x20,0xdc,0x94,0x1c, 0xd6,0xfe,0xd7,0xe1, 0x7c,0xf8,0x8b,0xb6,
+ 0xdc,0x6d,0x1c,0x74, 0x0f,0xf9,0x12,0x8a, 0x88,0x9f,0x47,0x44, 0x47,0xc5,0xb1,0x7b,
+ 0x12,0x4a,0x62,0x50, 0x42,0x11,0x5a,0x02, 0x85,0x5a,0x55,0x68, 0xda,0x1a,0x9a,0xa9,
+ 0x89,0x72,0xa5,0x85, 0x50,0x84,0x04,0xb4, 0x78,0xcd,0xb9,0x0f, 0x3b,0x35,0xf9,0x39,
+ 0x01,0xf3,0xe5,0x01, 0xce,0x75,0xab,0x11, 0x80,0x10,0x08,0x01, 0xb5,0x23,0x0b,0xd1,
+ 0x72,0x31,0x7c,0xb8, 0x14,0x94,0x1e,0x07, 0x87,0xb1,0x1c,0xce, 0x08,0x01,0xbd,0x86,
+ 0xca,0x28,0x23,0xd7, 0x95,0x62,0x69,0xb3, 0x2f,0x97,0x4b,0x09, 0x89,0x24,0x83,0xd7,
+ 0xa2,0x15,0x33,0xc7, 0x18,0xc2,0xaf,0xdf, 0xe8,0xd4,0x33,0xf1, 0xdd,0x02,0x1c,0x97,
+ 0xd4,0x0d,0x68,0x0b, 0x44,0x4b,0x20,0x18, 0x60,0xd0,0xc5,0x0d, 0xad,0x29,0xc8,0xa5,
+ 0xc1,0x92,0x85,0x14, 0x91,0x02,0x22,0xfa, 0xee,0x1b,0x6d,0xb1, 0x04,0xd6,0x84,0x90,
+ 0xea,0x48,0xcd,0x14, 0xcd,0x6f,0x8a,0xfc, 0x8d,0x60,0xdd,0xd9, 0x90,0x04,0xa6,0xf6,
+ 0x84,0x6d,0xbd,0x28, 0x99,0xef,0xbd,0xff, 0x3f,0xf6,0x9c,0xf5, 0xdf,0x6d,0xb4,0x03,
+ 0xa4,0x3a,0x6d,0x15, 0x56,0xb4,0x9c,0xc6, 0x1e,0x0e,0x19,0x6a, 0xcd,0x68,0x2c,0xdf,
+ 0x5b,0x45,0x56,0x73, 0x6e,0xe6,0x97,0xfa, 0xbb,0x2d,0x58,0x8b, 0x03,0x78,0xf3,0x33,
+ 0x1a,0xe0,0x30,0xda, 0x6f,0xe1,0x6d,0x9a, 0xdf,0xb1,0x74,0xad, 0x1c,0xfd,0xc1,0xb6,
+ 0xdc,0x1d,0x78,0xd4, 0x9a,0xe8,0x86,0x31, 0xae,0x07,0x59,0x04, 0xf4,0x0a,0xe6,0x0e,
+ 0xf3,0x4f,0x42,0xc8, 0x3c,0x03,0xc2,0xd8, 0x56,0xa2,0xc2,0x8e, 0xd7,0x73,0x23,0xa1,
+ 0xb3,0xe3,0x32,0x19, 0x28,0x87,0xe6,0xc2, 0x50,0xc8,0xa2,0x27, 0x26,0x83,0x1c,0x66,
+ 0x27,0xbb,0x8b,0xb6, 0x52,0xd2,0x36,0x39, 0xdd,0xae,0x5e,0x03, 0x28,0xcb,0x22,0x16,
+ 0x7c,0x75,0x0c,0x3b, 0x96,0xa9,0xbf,0xd1, 0x7b,0x3e,0xa3,0x90, 0x29,0x3e,0x5b,0x0e,
+ 0x1b,0x3d,0x7a,0xf6, 0xb5,0x58,0x39,0x9c, 0x8d,0x45,0xbd,0xac, 0xa4,0x85,0xc9,0x34,
+ 0xa6,0x6d,0x61,0x6f, 0x98,0x15,0x32,0x76, 0x19,0x67,0x58,0x4e, 0x79,0xd8,0xf4,0x9b,
+ 0x33,0xff,0x94,0xfc, 0x0a,0xf1,0xda,0x73, 0xe5,0x24,0x95,0xe0, 0xc5,0xa8,0xed,0x9f,
+ 0x10,0x90,0x49,0xaa, 0xd6,0xce,0x4b,0xcd, 0xb9,0xb3,0xbc,0x33, 0xaa,0xb2,0x15,0xc3,
+ 0x41,0x54,0x25,0x38, 0x9c,0x79,0x38,0x9e, 0x4c,0x4d,0xda,0x67, 0x18,0x1d,0x81,0x49,
+ 0x3e,0x1e,0xfa,0xa7, 0x5d,0x38,0xe5,0x5b, 0x14,0x0f,0xa9,0x4e, 0x2b,0x20,0x79,0x51,
+ 0xe4,0x2a,0x51,0x91, 0x06,0xe6,0x07,0x5b, 0xe3,0xae,0xb2,0xe7, 0xca,0x46,0x04,0x89,
+ 0xf8,0xb2,0x57,0x1a, 0x67,0x3d,0x35,0xa2, 0x65,0xdc,0x6c,0x87, 0xab,0xad,0x8f,0xe4,
+ 0x32,0x6a,0xaa,0x86, 0xbf,0x8e,0xb0,0x75, 0x83,0x2a,0xc6,0x52, 0xc0,0xc0,0xde,0x57,
+ 0xed,0xf7,0x30,0x4c, 0xba,0xe0,0xcb,0xdd, 0x4c,0x10,0x94,0x13, 0x8e,0x8d,0xb6,0xb9,
+ 0x7d,0xb6,0x4f,0x4b, 0x56,0x3c,0xfa,0x5d, 0x85,0x7d,0x3b,0xb1, 0xdc,0x01,0x84,0x31,
+ 0x1c,0x18,0xfa,0xad, 0x64,0xe1,0x3a,0xf5, 0x77,0x37,0x5d,0xe6, 0xd6,0x7f,0x79,0x80,
+ 0x8c,0x2d,0x63,0x25, 0x24,0xa6,0xd7,0xcb, 0xff,0xde,0xaf,0x06, 0xed,0x93,0xf7,0x24,
+ 0x00,0x10,0x09,0x53, 0xda,0x78,0x1c,0x3c, 0x9a,0x69,0x2b,0x30, 0x86,0x90,0x34,0x0d,
+ 0xe9,0x19,0x03,0x06, 0xd2,0x49,0x82,0x7e, 0x54,0x10,0x45,0x14, 0x92,0xca,0xe6,0xc2,
+ 0x86,0x24,0x22,0x14, 0x4d,0x8f,0xd9,0x56, 0x06,0x52,0xde,0xea, 0xa3,0x6a,0x71,0x8c,
+ 0xa6,0x4e,0x65,0x5a, 0xb1,0x8f,0x69,0x95, 0x39,0xde,0x46,0x3f, 0x7a,0x10,0xce,0x84,
+ 0x19,0xea,0xd7,0x66, 0x28,0x45,0x42,0xab, 0x18,0xb0,0x70,0x41, 0x24,0x62,0x89,0x5e,
+ 0xaa,0x33,0xe1,0x01, 0x96,0x6e,0x29,0x8b, 0x88,0x47,0xa8,0x4c, 0x69,0xa0,0x94,0xc0,
+ 0x7b,0xe3,0xa7,0x10, 0x40,0xf0,0x04,0x59, 0x15,0x77,0x74,0x8e, 0x8a,0x75,0xea,0x38,
+ 0x0b,0x66,0xc0,0xea, 0x6f,0xf0,0x61,0x03, 0xa2,0x24,0xa6,0x87, 0x9c,0x48,0x3b,0x45,
+ 0x88,0x3e,0x99,0x50, 0x48,0x54,0x34,0x8d, 0xee,0xfa,0x41,0x85, 0x1b,0x49,0x84,0x1b,
+ 0x98,0x6e,0xa8,0xef, 0x37,0x1a,0xda,0x8f, 0x06,0xb4,0x01,0x3b, 0x0e,0x11,0x11,0x08,
+ 0x52,0x60,0x4a,0xb9, 0x1c,0xdf,0xaf,0x1c, 0xc4,0xff,0x6c,0x91, 0xfc,0x6c,0x24,0x34,
+ 0x4d,0xa4,0x86,0xc4, 0x61,0x44,0x20,0xde, 0xd7,0x95,0xec,0xcc, 0x42,0xaa,0x3b,0x18,
+ 0xa6,0x5b,0x92,0x94, 0x8b,0x8c,0x0f,0xa0, 0xe7,0x9c,0x55,0x8b, 0x9f,0x3e,0x9a,0x9b,
+ 0x31,0xaf,0x0d,0xd0, 0xc9,0x03,0x0e,0x43, 0x2c,0x2c,0xc9,0xbd, 0x01,0xec,0x8f,0x35,
+ 0x6c,0x49,0xc6,0xd4, 0x68,0x6a,0x81,0x26, 0x1b,0x36,0xb4,0x34, 0xc3,0xdc,0x6a,0x41,
+ 0xc1,0x14,0x48,0x02, 0x63,0x52,0x28,0x30, 0x86,0xcf,0x5a,0xc9, 0x11,0x9b,0xa7,0x68,
+ 0x89,0xf7,0x13,0x93, 0x12,0x08,0x44,0xd7, 0x83,0x8e,0x50,0x7b, 0x93,0xf3,0x28,0x8b,
+ 0x04,0x34,0x2d,0x52, 0x19,0xed,0x30,0x66, 0x2f,0x61,0x1d,0x11, 0x38,0x72,0x50,0x82,
+ 0x02,0x24,0x14,0x2c, 0xdd,0x5b,0xb8,0xc0, 0xa1,0x47,0xf3,0x83, 0x11,0x05,0x05,0xfb,
+ 0x69,0x4a,0x5c,0x47, 0x5e,0x63,0x89,0xbd, 0x7d,0xef,0x21,0x48, 0x69,0x5a,0x0d,0xdb,
+ 0x3e,0x05,0x1d,0x6d, 0x7b,0x81,0x56,0x32, 0xda,0x27,0x0f,0x56, 0x6d,0x61,0x12,0xaf,
+ 0x2b,0xe7,0x0f,0x66, 0xc8,0xae,0x81,0xd2, 0x4a,0x64,0xa9,0xfe, 0x65,0x04,0x59,0xd8,
+ 0x09,0xe3,0x28,0x08, 0xe9,0x8c,0xac,0xca, 0x01,0xdb,0xc4,0x09, 0x25,0x92,0xd2,0x0b,
+ 0x6d,0x6c,0x7a,0xcf, 0x22,0x5c,0xcb,0x41, 0x53,0x10,0xee,0xac, 0x5d,0x4c,0xc4,0xa2,
+ 0x89,0x51,0xd5,0xc0, 0xa9,0xd6,0xd3,0x49, 0x3c,0x8a,0xa2,0x4c, 0xb6,0xc6,0xd2,0x24,
+ 0xd5,0x10,0x55,0x20, 0xe8,0x47,0x13,0xeb, 0x4a,0xa6,0x29,0x33, 0x94,0x0f,0xd4,0xce,
+ 0xc5,0xa4,0x8b,0x0d, 0x0a,0x16,0x99,0x6c, 0xd4,0x74,0x53,0x49, 0x0b,0xa3,0xaf,0x5e,
+ 0xc5,0xb4,0xe2,0xeb, 0x3b,0x30,0x22,0x92, 0x96,0xc7,0x9e,0xa4, 0xf4,0x5f,0xbc,0x49,
+ 0x77,0x8d,0x1d,0x21, 0xb1,0xd3,0x74,0xfd, 0x3a,0x5b,0xcd,0xda, 0xc8,0x0a,0x4c,0x7b,
+ 0xdf,0x73,0x65,0xd8, 0x82,0xbe,0xab,0xaa, 0x96,0x70,0xcd,0xc0, 0xc9,0x67,0x70,0xee,
+ 0xc9,0x9f,0xab,0x2e, 0xf8,0x50,0xab,0x46, 0xdd,0x86,0x04,0x36, 0x2a,0x2c,0x0b,0x83,
+ 0xc0,0x85,0xae,0x44, 0x44,0xe8,0xc4,0xc8, 0xd1,0x64,0x69,0xc0, 0x46,0x6a,0x2f,0x95,
+ 0x83,0x2f,0x6c,0x15, 0x99,0x22,0xc0,0x01, 0xb9,0x3a,0x92,0x06, 0x54,0x68,0xf0,0xa2,
+ 0x2a,0x76,0x52,0x84, 0x6f,0xcf,0xaf,0xab, 0x9d,0xe8,0xbe,0xc7, 0x16,0x99,0x8e,0x75,
+ 0x15,0x12,0xc9,0x45, 0x06,0xe1,0xb5,0x56, 0xbb,0x62,0x6a,0x66, 0xa2,0x01,0xf3,0xfc,
+ 0x12,0x20,0x94,0xab, 0xc9,0xb8,0x73,0x8c, 0x79,0x4c,0x6e,0x84, 0x92,0xd5,0xb5,0x19,
+ 0xc0,0x44,0xd8,0x56, 0x58,0xe8,0x84,0x97, 0x8c,0xc4,0x2e,0x35, 0x11,0xad,0x4c,0xc4,
+ 0xd1,0x33,0x32,0x28, 0xbe,0x43,0x2e,0x3b, 0xdc,0x5e,0xc1,0xec, 0xeb,0xc3,0xe9,0x79,
+ 0x4d,0xe9,0xa6,0xb1, 0xaf,0x33,0xd0,0x06, 0xc5,0xc2,0x4f,0x45, 0x35,0x69,0x04,0xd5,
+ 0xc0,0x05,0x08,0x4c, 0x34,0x1b,0x77,0xdc, 0x12,0xa9,0xeb,0xb4, 0xd5,0xb4,0x68,0x18,
+ 0xab,0xa2,0xa5,0xf3, 0x43,0x5d,0x6a,0x22, 0x88,0xde,0xd1,0xe5, 0xeb,0x29,0xa5,0x53,
+ 0x17,0x98,0x3b,0x92, 0xcd,0xd4,0xea,0x2d, 0x40,0x2c,0x4d,0x8d, 0x02,0x52,0xc8,0x71,
+ 0x47,0x49,0x57,0x23, 0x38,0x60,0x8d,0x5b, 0x44,0x3e,0xd9,0x81, 0xb7,0xa2,0x72,0x41,
+ 0x67,0x4e,0x26,0xb7, 0x98,0xac,0x9f,0x79, 0x2e,0xde,0x58,0xd4, 0xc2,0xf9,0xd5,0xe0,
+ 0xcd,0x6a,0xdb,0x47, 0x1c,0x30,0x30,0x5c, 0x34,0x8d,0x3b,0xf9, 0x3e,0x14,0x09,0x60,
+ 0xea,0x74,0xfe,0xde, 0x7a,0x53,0x16,0x0c, 0xf7,0x85,0x59,0x4d, 0x93,0xc8,0x6a,0xe4,
+ 0xa1,0x07,0xac,0xd2, 0x96,0x9a,0x20,0x42, 0x0e,0x60,0x36,0x46, 0xe9,0x44,0xca,0x69,
+ 0x15,0x4e,0x89,0x40, 0xc7,0x28,0x2a,0x1e, 0x34,0x32,0x9a,0xa6, 0xa8,0x7d,0xbc,0x81,
+ 0xb2,0xb7,0x3d,0xa3, 0x13,0x34,0xd5,0xa6, 0x9f,0xbf,0x87,0x06, 0x89,0xb0,0x48,0x1a,
+ 0x99,0x18,0xc2,0x43, 0x10,0xeb,0x19,0xb2, 0x25,0xcb,0xa6,0x4b, 0x38,0x4f,0x0e,0x91,
+ 0x40,0x70,0x93,0x14, 0x1b,0xe7,0xac,0x99, 0xb5,0xfb,0x8c,0x5f, 0x97,0x9a,0x98,0xd6,
+ 0x98,0x1b,0x9b,0xce, 0x16,0x6b,0xe1,0x83, 0x71,0x56,0x25,0x2e, 0xeb,0x3d,0xa6,0x38,
+ 0x97,0xef,0xe7,0x49, 0x88,0xcc,0xfe,0x4b, 0xa1,0xaa,0x85,0x55, 0x81,0xb4,0xba,0x08,
+ 0x08,0x08,0x35,0xb5, 0x9e,0x1d,0x4e,0x1e, 0x75,0xdf,0x7b,0x79, 0xb2,0x56,0xd1,0xc9,
+ 0x1c,0xb4,0x0a,0x11, 0xbb,0x49,0x90,0x02, 0xd9,0x5e,0x17,0xb8, 0xbf,0x69,0x71,0xc5,
+ 0xe3,0x34,0x0d,0x01, 0x17,0x5a,0xa4,0x1c, 0xa8,0x38,0x94,0x26, 0xcb,0xad,0x9c,0x53,
+ 0x10,0x4e,0x34,0xe6, 0x3f,0x7d,0x46,0x75, 0x34,0xdf,0xcf,0x39, 0xe3,0x1a,0xcd,0x8f,
+ 0x48,0xc9,0x05,0xe1, 0x07,0x57,0xcd,0xde, 0x2a,0xb5,0xdb,0x6c, 0xfc,0x0b,0x97,0xa7,
+ 0x0e,0xd5,0xb1,0x62, 0x14,0x58,0x6d,0x30, 0x85,0x9d,0x0d,0xc1, 0x85,0x88,0xe1,0x5f,
+ 0x09,0x36,0xec,0x81, 0x4d,0x39,0xa7,0x78, 0x31,0x66,0x5a,0x27, 0x2e,0x7a,0x80,0xbc,
+ 0xd0,0x8b,0xfc,0x5e, 0xa7,0x1a,0x97,0x4d, 0xb9,0xeb,0x19,0x6c, 0x7c,0xf1,0x70,0x54,
+ 0x4e,0xf0,0xe2,0x7a, 0xf1,0xa7,0x6c,0xe5, 0xfa,0x4c,0xd8,0xef, 0x77,0x70,0xec,0xe5,
+ 0xe1,0x19,0x98,0xf7, 0xe8,0xe4,0xd1,0xaa, 0x46,0x8d,0x00,0x29, 0x4a,0x52,0x49,0x09,
+ 0x6a,0xfd,0x99,0x59, 0xe1,0x72,0x4e,0x3a, 0x29,0xec,0x2f,0xd5, 0xb6,0x8b,0x2d,0x29,
+ 0xfb,0x08,0x36,0x47, 0x8d,0xeb,0x49,0x23, 0x02,0xa8,0x34,0x5f, 0x8a,0xfe,0x73,0x05,
+ 0x5d,0xe7,0x3d,0xd3, 0x42,0xcf,0xf9,0xbc, 0x74,0xae,0x7a,0xd9, 0xd4,0xa0,0xef,0x77,
+ 0x50,0x6a,0xd8,0x55, 0xb8,0xc5,0xef,0x64, 0x1d,0xee,0x9e,0x1b, 0x2f,0x58,0xbc,0xea,
+ 0x60,0x0b,0xe6,0xb3, 0xec,0x86,0x91,0x9f, 0x2c,0xc0,0xb2,0xdf, 0xf8,0x58,0x8d,0x73,
+ 0x0a,0xd8,0xd0,0xbc, 0x46,0x16,0x5f,0x50, 0xd5,0xac,0x2e,0x5e, 0x49,0x1a,0x7d,0x54,
+ 0x7c,0x2a,0xd0,0x08, 0x55,0x34,0x96,0x4d, 0x98,0x12,0xbf,0x61, 0x65,0xa5,0x4b,0x5c,
+ 0x36,0x4d,0x85,0x4d, 0x69,0xfa,0xd8,0xa5, 0xa2,0x67,0x95,0x08, 0xa1,0x8b,0x86,0xc0,
+ 0xd0,0xb5,0xb3,0xbc, 0xb4,0xca,0xfc,0x08, 0x46,0xb9,0xba,0x75, 0x61,0x22,0x25,0xb0,
+ 0xe6,0x1a,0x38,0xf3, 0x64,0xb7,0xfe,0x4e, 0xca,0x8e,0xb7,0xdf, 0xad,0xd2,0x0a,0x72,
+ 0x35,0xbc,0x87,0x8b, 0x12,0xb2,0x44,0xe0, 0x88,0x16,0x4b,0x6f, 0x61,0x0d,0x4b,0x5b,
+ 0xc3,0x4a,0x43,0xe2, 0x53,0x95,0x77,0x87, 0x26,0x83,0x25,0xb0, 0x40,0x01,0xb1,0x9f,
+ 0x1d,0x86,0x97,0x7f, 0xf8,0x69,0x1a,0xe2, 0x4d,0x62,0x37,0x21, 0x07,0xf6,0x20,0x94,
+ 0x89,0x27,0xc9,0x0b, 0x18,0xf7,0xfa,0xdf, 0x5f,0xbf,0xc8,0xb9, 0x93,0x5e,0x28,0x60,
+ 0x32,0xb1,0x11,0x64, 0xf4,0x38,0x04,0x12, 0x24,0x59,0x77,0xb5, 0x12,0x72,0x5d,0xac,
+ 0x9f,0xb8,0xf0,0xbe, 0x5c,0xe3,0xde,0x45, 0xf3,0x2c,0xe2,0xeb, 0xc0,0x71,0xdf,0x61,
+ 0xdf,0x14,0x35,0xeb, 0x56,0x44,0x54,0x6c, 0x86,0x67,0x78,0xd4, 0x0b,0x90,0x42,0x9a,
+ 0xf4,0x50,0x64,0x90, 0xd5,0x1c,0xba,0x8a, 0x8e,0x45,0xc2,0x98, 0x47,0x29,0xa0,0xf8,
+ 0x61,0x45,0x3c,0x89, 0x01,0x78,0x3a,0xaa, 0xb9,0x84,0xa1,0x35, 0x20,0x2e,0xd7,0x8e,
+ 0xf8,0xf0,0xc7,0x12, 0x1c,0x1d,0x94,0xe9, 0x6e,0xb7,0xf4,0x3e, 0x80,0xf6,0xff,0x7e,
+ 0xeb,0x9d,0x35,0xf9, 0x15,0x24,0xd8,0xc6, 0x08,0x5f,0x83,0x6d, 0xf9,0x24,0x1f,0x29,
+ 0x85,0xeb,0xf7,0x0d, 0x23,0xa0,0x67,0x9c, 0xd5,0x76,0x20,0xa1, 0xa4,0x8c,0xf3,0x17,
+ 0xdd,0x68,0xcd,0x7e, 0x2b,0xef,0x1a,0x31, 0x58,0xa9,0x6b,0x4c, 0xc5,0x9c,0x7d,0x4b,
+ 0xa9,0x09,0x25,0x6a, 0xab,0x72,0x47,0x3a, 0x5b,0x80,0xe5,0x80, 0x18,0x1c,0xed,0x50,
+ 0x81,0xb4,0x2c,0xa7, 0x88,0xd5,0x40,0xf9, 0x12,0xea,0x78,0xa3, 0x4a,0x0f,0xe7,0xe8,
+ 0x47,0x50,0xdf,0x82, 0xd4,0x89,0x1e,0x81, 0x5f,0xbf,0xec,0xff, 0xba,0x7f,0xa1,0x1e,
+ 0x29,0xa9,0xb7,0x87, 0xd4,0xd7,0xc0,0x20, 0xa8,0x73,0xc0,0xce, 0x20,0x22,0xb1,0x89,
+ 0x1a,0x62,0xa7,0xee, 0x6b,0xdb,0x35,0x3d, 0x0f,0x51,0x19,0x08, 0x05,0x43,0x74,0xaa,
+ 0x50,0x50,0xff,0xbb, 0x62,0x51,0x73,0x23, 0x44,0x53,0x8d,0x4f, 0xa3,0x6a,0x1b,0x0b,
+ 0xed,0xd4,0x46,0xd3, 0xc4,0x31,0x63,0x61, 0xe7,0x53,0x62,0x5d, 0xa1,0x99,0x7a,0xb3,
+ 0xb3,0x47,0x62,0x51, 0x29,0x5d,0x39,0xb5, 0xc8,0x60,0xc0,0x78, 0xed,0xb0,0xd3,0x31,
+ 0x15,0x9a,0x0d,0xc3, 0x0d,0xbb,0x48,0x93, 0xd5,0x34,0x8e,0xc5, 0x88,0xec,0xdc,0x9f,
+ 0x55,0xc6,0x80,0x3a, 0x3a,0x88,0xac,0xd5, 0xfe,0x91,0x77,0x78, 0x81,0xd7,0xf5,0x7e,
+ 0xd3,0x89,0xb4,0x54, 0x62,0xe8,0x6d,0xdc, 0xec,0xa8,0xc8,0xb5, 0x77,0x5d,0x8b,0xab,
+ 0x7f,0x15,0x97,0xcf, 0x42,0xf4,0x99,0x70, 0x50,0x30,0xa3,0xc2, 0x94,0x90,0x71,0x98,
+ 0xad,0x33,0xd6,0xe5, 0xf1,0xe4,0x72,0xfb, 0x2d,0xac,0x80,0xae, 0x9a,0x42,0x39,0xf6,
+ 0xbe,0x0b,0xf4,0xda, 0x5c,0x4f,0x08,0xd0, 0xc8,0xd6,0xf6,0xd0, 0xaa,0x1b,0xb5,0xc8,
+ 0x48,0x46,0xec,0x15, 0x6b,0x5c,0xaf,0x1a, 0x82,0x43,0x0a,0x58, 0x83,0x3c,0xc9,0x34,
+ 0x36,0x2f,0x11,0xc3, 0x03,0x40,0x5d,0x1b, 0x3c,0xcf,0xc3,0x41, 0xac,0x7b,0x9d,0x7c,
+ 0x0b,0xff,0xdf,0x95, 0xaf,0xdc,0xf6,0xd1, 0x40,0xd2,0x0f,0x1c, 0x1c,0xe3,0xbe,0xf8,
+ 0xe5,0x7b,0xad,0xd3, 0xdb,0xdf,0x77,0xe6, 0x4b,0x23,0x98,0xa0, 0x64,0x86,0xd0,0x80,
+ 0x39,0x11,0x19,0xa2, 0xce,0xfc,0xfd,0x06, 0x59,0xcb,0x50,0x3d, 0xf7,0x47,0x5e,0xfe,
+ 0x65,0xdc,0x41,0x81, 0x2a,0xe4,0x62,0xb9, 0xe7,0x9a,0xf4,0xc6, 0x49,0x80,0x78,0x0f,
+ 0xcc,0xf7,0x70,0x73, 0xc3,0x9c,0x38,0x5f, 0xc1,0xcb,0xec,0xa4, 0x29,0xb3,0xbe,0x7b,
+ 0x6d,0x3c,0x59,0x6b, 0xcc,0xea,0x21,0x23, 0xd5,0x66,0x9b,0x5a, 0xa1,0x4b,0x6e,0x41,
+ 0xbd,0xfd,0xf0,0x2f, 0x93,0x81,0x3a,0x26, 0x56,0xb9,0xa5,0x90, 0x5c,0x62,0x5d,0x43,
+ 0x08,0x06,0x53,0x7d, 0x29,0x57,0xc3,0xff, 0xed,0xf1,0x32,0x83, 0x1a,0xea,0x52,0x8e,
+ 0x7a,0xd7,0xaf,0x95, 0x48,0xa7,0xe9,0x40, 0x2b,0xf7,0x61,0x8a, 0x8d,0x3f,0xc4,0xf4,
+ 0x90,0xd4,0xad,0x9b, 0x7b,0xbb,0x8f,0x5e, 0x2b,0xf4,0xab,0xd2, 0xd7,0x94,0xd2,0xc9,
+ 0xc1,0x75,0x4a,0xaa, 0xa8,0x83,0x9d,0x66, 0x1e,0x63,0xa2,0x0d, 0x39,0x44,0x96,0xb9,
+ 0x9c,0x26,0x16,0xae, 0xec,0x9e,0xbd,0xba, 0x28,0xbd,0x88,0x43, 0x69,0xa4,0x59,0x70,
+ 0x5a,0xcf,0x9c,0xc9, 0x32,0x7a,0x48,0xfc, 0x74,0x43,0xaf,0x08, 0xe9,0xa0,0x22,0x28,
+ 0x0a,0x44,0x24,0xfe, 0x38,0xaf,0x2f,0xa5, 0xff,0xd9,0xae,0x5a, 0xfd,0xf6,0x13,0xfd,
+ 0x91,0x7e,0x68,0xb0, 0xf0,0xc1,0xdf,0x95, 0x39,0x42,0xa1,0x49, 0x60,0x7b,0xf5,0x23,
+ 0x89,0xef,0x2a,0x14, 0x31,0x42,0x7c,0xb6, 0x96,0xec,0xa3,0x97, 0xb7,0xc4,0x38,0x76,
+ 0xce,0xf3,0x67,0xb1, 0x46,0x1f,0x96,0x8e, 0x31,0x6d,0xc6,0x8e, 0x7d,0xa3,0x37,0x75,
+ 0x76,0xe4,0x26,0xd4, 0x01,0xde,0xba,0xdc, 0x24,0x08,0xbe,0xb5, 0x10,0x7c,0x7e,0x9d,
+ 0xd9,0x4f,0xbc,0xe2, 0xb9,0x49,0x0b,0xd4, 0xe1,0xc0,0x5c,0x66, 0xf1,0xa5,0x86,0xcc,
+ 0x1c,0xbc,0x39,0x25, 0xfb,0xaf,0xbe,0x7c, 0x80,0x5f,0xbb,0xea, 0xe0,0xdf,0x64,0x76,
+ 0xfe,0xdb,0x6f,0xa4, 0xa5,0xf7,0x26,0x55, 0x6c,0x8b,0x41,0x92, 0xc8,0x60,0xb7,0xc3,
+ 0xce,0x6a,0xf6,0x50, 0x43,0x3c,0x96,0x2a, 0x59,0x7a,0xc5,0xca, 0x3c,0x4d,0x5d,0xc9,
+ 0x28,0xf3,0x05,0x12, 0x46,0xec,0xc4,0xb9, 0x94,0xaf,0x55,0xe5, 0xcd,0x41,0x47,0x07,
+ 0x1e,0x14,0xc3,0x95, 0x66,0xe0,0xb5,0x03, 0x4c,0x7c,0x6b,0x9b, 0xcc,0xc6,0xab,0xe2,
+ 0xf4,0xac,0x70,0x8f, 0xa2,0xe3,0x38,0xce, 0xb6,0x6e,0x95,0xee, 0xd0,0xbb,0x86,0x40,
+ 0xcb,0x33,0xe1,0xc7, 0xf6,0xf7,0x91,0x99, 0x43,0xd7,0xdf,0x4a, 0x6b,0x2c,0xa6,0x96,
+ 0xba,0x38,0x87,0x4c, 0x5f,0x15,0x12,0xf5, 0xd6,0xdf,0x63,0xd7, 0xe6,0x42,0x7c,0xc0,
+ 0xc5,0x20,0x20,0x7e, 0xb9,0xbf,0xe8,0x7d, 0xe0,0xfc,0x6b,0xfc, 0xaa,0xfd,0xb6,0xe7,
+ 0x63,0xfb,0x9e,0x45, 0xb8,0xee,0x31,0xbe, 0xd2,0xb7,0xd4,0x9e, 0x54,0x1f,0xdd,0x45,
+ 0x53,0xe8,0x47,0xce, 0x2e,0x72,0x60,0x9e, 0x54,0xde,0x98,0xc2, 0xa3,0x81,0x67,0xcf,
+ 0xbf,0x8b,0xc7,0xee, 0xd4,0x54,0x76,0x58, 0x54,0xdb,0x35,0x6c, 0x11,0x9f,0x8b,0x72,
+ 0xab,0xb6,0x1a,0x27, 0xc7,0xe0,0xe2,0x20, 0x29,0xd1,0x01,0xbc, 0xfb,0x33,0x19,0xc4,
+ 0x76,0xf4,0x0f,0x74, 0xae,0x6e,0x3f,0x4d, 0x4b,0x89,0x36,0x82, 0x5d,0x41,0x95,0x6d,
+ 0xae,0x84,0x4b,0x1b, 0x09,0xf1,0x86,0xf8, 0x5e,0xb3,0x5e,0xe3, 0xdd,0x09,0x74,0x95,
+ 0x35,0x65,0x11,0xc2, 0x09,0x11,0xff,0x74, 0x72,0x0c,0x10,0x11, 0xf7,0xc6,0xc9,0x91,
+ 0xf9,0xd1,0xfc,0x2f, 0x50,0xc0,0x4f,0xc5, 0x9d,0xe4,0x1a,0x75, 0x9e,0xeb,0xc8,0x8d,
+ 0x64,0xcf,0x9b,0xe5, 0xa8,0x5c,0xde,0x64, 0x16,0x83,0x87,0xcc, 0xaa,0x49,0x40,0x57,
+ 0xb7,0x44,0xb3,0x66, 0x9a,0xc5,0x10,0x3e, 0x1e,0xb8,0x7a,0x70, 0xea,0x6c,0xc3,0xe7,
+ 0x76,0x3a,0x22,0x2e, 0x65,0xcb,0x29,0x93, 0xbd,0xbb,0x7a,0x5e, 0x9b,0x6f,0x82,0x08,
+ 0x31,0xa3,0x8c,0x4d, 0xdd,0x9e,0x61,0xad, 0xf3,0x45,0x62,0xf3, 0xcd,0x48,0x8b,0x79,
+ 0x83,0x45,0x3e,0x31, 0xcc,0x84,0x1a,0x5e, 0xae,0xf6,0x10,0x23, 0x23,0x7b,0x34,0x8e,
+ 0x28,0xcc,0xb2,0x31, 0x76,0xa9,0xb2,0x8f, 0x84,0x19,0x2e,0x75, 0x9a,0x14,0x5b,0x0c,
+ 0x69,0x0b,0xaf,0x6b, 0xdf,0xb0,0x17,0xe1, 0x18,0x31,0x89,0xa0, 0x6d,0x26,0xc4,0x50,
+ 0xd4,0x32,0x22,0x4e, 0x0c,0xb0,0x99,0x25, 0xec,0xaf,0x57,0x02, 0xd4,0xaa,0xd9,0x36,
+ 0x37,0x6e,0xa8,0x94, 0x07,0x26,0x48,0x3a, 0x75,0x60,0x26,0x6b, 0x59,0xf0,0xd8,0x96,
+ 0x73,0x55,0xa6,0x6d, 0xbb,0xde,0x8f,0x6d, 0xcd,0x77,0x12,0xf3, 0xe2,0xb6,0x82,0x9f,
+ 0x69,0x24,0x17,0x18, 0x05,0x4c,0x41,0xa1, 0x64,0x55,0x93,0x5b, 0xec,0x84,0xcb,0x1d,
+ 0xe6,0x15,0x6d,0x03, 0x12,0x35,0xcf,0x61, 0xe6,0x43,0x62,0x3f, 0xe0,0xd0,0x5d,0xb3,
+ 0x6e,0xc4,0x23,0x19, 0x89,0x07,0x4a,0xcc, 0xa1,0xa5,0x90,0x72, 0x2f,0x0e,0x87,0xb4,
+ 0x2b,0x7a,0x86,0x04, 0x1f,0x59,0xfa,0x63, 0xcd,0x43,0x21,0x25, 0x69,0xf2,0xa4,0x15,
+ 0xf3,0xa7,0xee,0xf6, 0xe8,0x02,0x0c,0x9d, 0xb0,0xb8,0x33,0x05, 0x7b,0x2b,0x6b,0xd3,
+ 0x82,0x55,0x50,0x2e, 0x0e,0x53,0xcf,0xaf, 0xc9,0x24,0x75,0x1d, 0xdc,0x46,0x5c,0xf7,
+ 0x78,0x4f,0x2b,0xdb, 0x2b,0x83,0xf2,0xe1, 0x60,0x4c,0x84,0xef, 0x25,0x2f,0x2f,0xb0,
+ 0x61,0x52,0x6b,0x0a, 0xa5,0x62,0x94,0xad, 0xed,0x9e,0xb2,0xd1, 0x90,0xd2,0x05,0x92,
+ 0xcb,0xd6,0x71,0x9a, 0x30,0x44,0x77,0x09, 0x90,0x3c,0xc6,0x88, 0x6d,0xa1,0x2e,0x1b,
+ 0x14,0x98,0xd8,0x26, 0xc1,0x24,0x48,0x4f, 0x7a,0x43,0x6d,0xfc, 0xc6,0x01,0x26,0x03,
+ 0x69,0x08,0xac,0xc2, 0x0f,0x7b,0xc1,0xfb, 0x27,0x25,0xf0,0x4e, 0x49,0x7b,0x2d,0xcd,
+ 0xaf,0x21,0x87,0x36, 0xb9,0xa7,0xce,0x00, 0x0f,0xec,0x32,0x7f, 0x6e,0x23,0xee,0x3a,
+ 0x24,0xc4,0x0a,0x11, 0x1f,0x5e,0x4c,0x92, 0x33,0x30,0x21,0xd1, 0x10,0xa8,0x2a,0x0d,
+ 0x69,0xac,0xcc,0xa5, 0x18,0x34,0x1d,0xd9, 0x64,0xc5,0x99,0x95, 0x61,0x07,0x09,0xb2,
+ 0x84,0x19,0x18,0xc4, 0xc8,0x28,0x50,0x99, 0xc3,0x95,0xbe,0xe3, 0xf9,0x9f,0x4c,0xdf,
+ 0xa7,0x9f,0xf1,0x77, 0x3a,0x5f,0xcb,0xf4, 0x7e,0x46,0x9e,0x7d, 0x7c,0x91,0x47,0xc9,
+ 0xf1,0x59,0x13,0xa1, 0x73,0xd3,0x94,0xb8, 0x16,0xd2,0x40,0xa7, 0x95,0xbb,0xc6,0xf5,
+ 0x37,0xca,0xf7,0x55, 0xf5,0xeb,0x70,0x0f, 0xd5,0x47,0xe6,0x9e, 0x8e,0xd7,0x23,0x03,
+ 0xcd,0x34,0x04,0xba, 0x82,0x96,0xba,0x34, 0xa5,0x67,0x03,0x52, 0x19,0x73,0x69,0x50,
+ 0x08,0x09,0xfb,0x6a, 0x98,0x15,0x53,0x78, 0xba,0xa1,0xfb,0xa8, 0x11,0x1b,0xae,0x28,
+ 0x2d,0x61,0x17,0x1e, 0x5e,0x00,0x0a,0x03, 0x02,0x12,0x0e,0x6e, 0xe8,0x05,0x22,0x93,
+ 0x0f,0x17,0x2e,0x8d, 0x97,0x27,0xd9,0xcb, 0xcb,0x3c,0x98,0xfe, 0xad,0x54,0x29,0xb5,
+ 0xa1,0xf5,0x7d,0xc4, 0xe6,0xba,0x95,0x89, 0x06,0x93,0xb0,0x83, 0xdc,0x3a,0x58,0xad,
+ 0xb4,0x18,0x3a,0xd8, 0xeb,0x2f,0x27,0x77, 0x18,0x15,0x09,0x28, 0x46,0x8e,0x71,0xdf,
+ 0x14,0xca,0x24,0x11, 0x0f,0x67,0xed,0xd0, 0x01,0x9a,0xd1,0x70, 0xa4,0xba,0x78,0x06,
+ 0x2f,0x3f,0xe6,0x1c, 0x98,0xc7,0x90,0x34, 0x45,0x06,0xb9,0x25, 0x42,0x09,0x96,0x59,
+ 0x3a,0xbf,0xa7,0xda, 0xde,0x3d,0x88,0x73, 0x49,0x7b,0x04,0xd2, 0x19,0xc4,0x44,0xfc,
+ 0x38,0x75,0x08,0x80, 0xb2,0xc9,0x95,0x49, 0x84,0x91,0x73,0xcd, 0x94,0xeb,0x14,0x8d,
+ 0x0d,0xb7,0xe6,0xbe, 0x1a,0x84,0x67,0x09, 0x22,0xa0,0xee,0xba, 0x19,0x5a,0xf4,0xe8,
+ 0xb3,0xb3,0x2e,0x8f, 0x30,0xff,0xae,0xb8, 0xe9,0x31,0x4b,0xdf, 0xdb,0x33,0x45,0xa3,
+ 0x5e,0x7f,0x1f,0x71, 0x52,0xf9,0x40,0xbe, 0x8e,0xbd,0xe1,0xb0, 0xe7,0xca,0x2f,0x3d,
+ 0xb1,0x6f,0x32,0x0f, 0x3c,0x88,0x0f,0x4e, 0x40,0xb5,0xf5,0xf0, 0xa4,0xe3,0x6d,0x8c,
+ 0x14,0x0a,0x3b,0x3b, 0xbc,0x97,0xdb,0xd9, 0x5b,0xef,0xc9,0x98, 0xfb,0x01,0x9e,0xd9,
+ 0x06,0x2d,0x45,0xf8, 0x89,0xa2,0x96,0xc6, 0x36,0x9e,0x1b,0xff, 0x4f,0x46,0x02,0x9a,
+ 0x00,0xa5,0x92,0xc0, 0x85,0x91,0xea,0x6e, 0xbe,0xf9,0xeb,0x79, 0x9b,0x3a,0x87,0xab,
+ 0xee,0xb9,0xac,0x8f, 0x2b,0x52,0x91,0x8c, 0x6b,0x5a,0x23,0x82, 0xc3,0x52,0xd4,0xea,
+ 0x36,0xbe,0xa4,0xd1, 0xe2,0x4d,0xd6,0x4b, 0xc1,0x27,0x36,0xb4, 0x39,0xe8,0x52,0x29,
+ 0xec,0x94,0x05,0x01, 0x50,0x6f,0xed,0x48, 0x59,0xa9,0x56,0xa0, 0x85,0x21,0xaa,0x4a,
+ 0x1c,0x2e,0x5a,0xc9, 0x41,0x36,0xbd,0xf4, 0x1c,0xfd,0x3b,0x8e, 0xea,0x65,0x89,0xf2,
+ 0xd8,0x75,0xe8,0x7e, 0x87,0xa3,0xfd,0xff, 0x62,0x61,0x92,0x35, 0xbc,0x65,0x9b,0xe2,
+ 0xb8,0xa2,0x39,0x3e, 0x73,0xbb,0xf8,0xfa, 0xda,0x41,0xba,0x6a, 0x75,0xb0,0xc8,0x1a,
+ 0x09,0x44,0x5d,0x21, 0x0a,0x73,0x83,0x3d, 0x82,0x4a,0x94,0x69, 0x8d,0x94,0x52,0x0c,
+ 0x7a,0xd2,0x92,0x86, 0x6f,0x61,0xa5,0x91, 0xc6,0x12,0x9d,0x8d, 0xf4,0xcf,0x63,0x86,
+ 0xe0,0x9d,0x44,0x4d, 0xd4,0x01,0x92,0xb0, 0x42,0x13,0x3b,0xb4, 0xf9,0x4e,0x3e,0xfd,
+ 0xc8,0x86,0xaf,0x50, 0x0d,0xa5,0x3b,0xc2, 0x9b,0x29,0x15,0x63, 0xd7,0xda,0x30,0xe3,
+ 0xf9,0x62,0xb0,0x60, 0x3a,0xdd,0x34,0xa6, 0x95,0xb7,0x11,0x06, 0x0a,0x75,0x8a,0x4c,
+ 0x3d,0xae,0xc4,0xeb, 0xbe,0xdf,0xeb,0xc0, 0xbc,0x3b,0x0f,0xc1, 0xdc,0xb6,0x38,0x26,
+ 0x70,0xd3,0xae,0xf7, 0x21,0x82,0xc5,0xfb, 0xe8,0x19,0x7f,0xd1, 0x41,0x8a,0xb4,0xe4,
+ 0xb1,0xf8,0xfb,0xcf, 0xa3,0x1a,0x2f,0x91, 0x45,0x9d,0x6f,0xb8, 0xcf,0xb1,0xea,0xee,
+ 0x66,0x75,0x32,0x8d, 0xc7,0x96,0x8f,0xbe, 0x81,0xff,0x33,0xa3, 0x17,0x51,0xb2,0x7c,
+ 0xaa,0xed,0x34,0x06, 0x5c,0xc6,0xdd,0xa8, 0x86,0xf9,0x3e,0x74, 0xb2,0x36,0x4c,0x13,
+ 0xe7,0xd1,0xcf,0xef, 0x20,0x64,0xe3,0x3f, 0x1f,0x81,0x6a,0xc7, 0xd0,0xb4,0x32,0x92,
+ 0x41,0x4e,0x85,0xb5, 0x64,0x7e,0x02,0xa5, 0xa8,0x20,0xfc,0x51, 0xcb,0xfe,0xd6,0xb9,
+ 0xf8,0x6e,0x19,0xc4, 0x33,0x01,0x90,0xfb, 0xf8,0xcd,0x1d,0xa9, 0x87,0x30,0xfb,0x85,
+ 0x57,0x83,0xee,0xfa, 0xff,0x6a,0x73,0x8c, 0xbf,0x85,0xee,0x71, 0x3c,0x8c,0xeb,0x97,
+ 0xd8,0xc6,0xde,0x04, 0xfc,0x47,0x0e,0xc7, 0xe5,0xa1,0x9e,0xe3, 0xb1,0xbf,0x43,0x98,
+ 0x51,0x57,0xb3,0x0a, 0xe8,0x90,0xad,0xb0, 0xc4,0x8b,0x4a,0xdb, 0x4d,0x20,0x0f,0x8b,
+ 0xe9,0xf8,0x97,0x13, 0xbf,0x85,0x6b,0x2d, 0x75,0x31,0xee,0x6c, 0xa2,0xdf,0x84,0xe5,
+ 0x3e,0xeb,0x9f,0x3d, 0x51,0x18,0x92,0x2b, 0xf2,0x4d,0x08,0xcc, 0x8f,0x89,0x64,0xec,
+ 0x2c,0xc8,0x87,0x8c, 0xac,0x0b,0x68,0x36, 0xf3,0xf6,0x1d,0x9d, 0x7f,0x42,0x59,0xb8,
+ 0xe4,0xe3,0xcc,0xfb, 0x3b,0x34,0x27,0xed, 0x28,0x34,0x50,0x72, 0x6d,0x57,0xfa,0x3e,
+ 0x1c,0xbf,0x4b,0xa9, 0x85,0x2c,0xaa,0x23, 0xe7,0x6c,0x20,0x5f, 0x8d,0xae,0xde,0x88,
+ 0x47,0xfd,0x23,0x98, 0xe0,0xee,0xb8,0xb4, 0xe8,0xfc,0xde,0xf8, 0x3f,0x60,0x6c,0x75,
+ 0x5d,0x6e,0xef,0x32, 0x7d,0x9e,0xa8,0x80, 0xc6,0x63,0x5f,0xf8, 0xf6,0x7b,0xff,0x60,
+ 0xf4,0x8c,0x01,0xd2, 0xf4,0x70,0xb8,0x78, 0x88,0x2b,0x48,0xaf, 0x3f,0xfa,0x79,0x2e,
+ 0x8e,0x23,0xf9,0xc4, 0xb0,0x2b,0x4b,0xd7, 0xa0,0x88,0x52,0x82, 0x4d,0x65,0x0b,0x97,
+ 0x97,0xad,0x7c,0x24, 0x88,0x11,0xcd,0x6b, 0xa5,0xaf,0xfe,0x93, 0x6e,0xaf,0xb3,0x68,
+ 0x6c,0x65,0x76,0x28, 0x63,0xf0,0x57,0x02, 0xe5,0xc2,0xb7,0xad, 0x7d,0x60,0xa4,0x68,
+ 0x1d,0xe2,0x4f,0x50, 0x31,0x55,0x8c,0xd0, 0x6c,0x34,0x85,0xc1, 0xaa,0x79,0x3b,0xa6,
+ 0xb4,0x13,0xa6,0x02, 0x9b,0xe5,0x8f,0xa4, 0xaf,0xdf,0x64,0x70, 0xda,0xdb,0xc8,0x8e,
+ 0x43,0x43,0xa2,0x6f, 0x4c,0xdc,0xf2,0x22, 0x9a,0x4b,0x70,0xb1, 0x0c,0x09,0x21,0x00,
+ 0xa5,0x22,0x10,0x15, 0x53,0xfd,0xaa,0x49, 0x04,0xa0,0x47,0x67, 0xe4,0xe1,0x0b,0xbd,
+ 0xee,0x76,0x9a,0xee, 0xdf,0x95,0x2f,0x1c, 0xdb,0x8b,0x81,0xec, 0x3d,0xb7,0xd3,0x24,
+ 0x38,0x56,0x67,0x17, 0x24,0x18,0xdc,0xf6, 0xb4,0xe3,0xa9,0x2a, 0x7f,0x89,0xbb,0x63,
+ 0xe2,0xc5,0xb6,0x6f, 0x2a,0xd7,0x2f,0x59, 0xa1,0x5b,0x23,0x97, 0xd8,0x1c,0x37,0xb8,
+ 0x8b,0xc7,0x75,0xea, 0xe8,0xb8,0xdd,0xed, 0x37,0x27,0x40,0x93, 0x78,0xb1,0xd0,0x63,
+ 0xc4,0x78,0x8f,0x0b, 0x49,0xbf,0xc2,0x64, 0x48,0xd3,0xb0,0xff, 0xd9,0x52,0x4a,0x6e,
+ 0x9d,0x24,0xbb,0x75, 0x2d,0x47,0x57,0x64, 0x32,0x72,0x23,0xfd, 0x1c,0xb7,0xe2,0x4e,
+ 0x32,0xd4,0x35,0xf2, 0x09,0x8d,0xae,0x05, 0xca,0xba,0x34,0xee, 0xd4,0xc5,0xc4,0xc8,
+ 0xe6,0x2d,0xdf,0x43, 0xaa,0x41,0xa5,0x35, 0x6c,0xf8,0x73,0xba, 0xf5,0xd5,0xb5,0xf0,
+ 0x2c,0xdc,0x52,0x87, 0xfd,0xf9,0x14,0xf7, 0x69,0xe7,0xd8,0xf3, 0x16,0xb3,0x95,0x00,
+ 0x6f,0xc1,0xc7,0xac, 0x6c,0x7a,0xb1,0x0b, 0xcf,0xf9,0x97,0xbb, 0x41,0x07,0x6b,0x75,
+ 0x17,0xab,0x52,0xc1, 0x9e,0x3e,0x26,0x4e, 0x9a,0x76,0x3e,0xc1, 0x4f,0x0d,0x94,0xbd,
+ 0xe4,0x50,0x89,0x51, 0xd3,0xad,0x44,0xc7, 0xeb,0x35,0x91,0x5b, 0x35,0xc8,0xbe,0x84,
+ 0x39,0x94,0x24,0x7c, 0x06,0x55,0xd1,0x78, 0x75,0x4c,0xc7,0xef, 0xfe,0x51,0x28,0xe0,
+ 0xd1,0xe2,0xff,0x8c, 0xbd,0x5f,0x69,0x29, 0x03,0x3c,0xd0,0x7d, 0x90,0x30,0xf5,0x2c,
+ 0x6e,0xff,0x24,0x2e, 0x77,0x7d,0x13,0x3b, 0x51,0x2e,0x93,0xa0, 0x79,0xa2,0xf4,0x42,
+ 0x53,0xd6,0xe8,0xa5, 0x1c,0x10,0xb4,0x41, 0xa4,0xc5,0xd7,0xcf, 0x78,0x72,0x55,0x3b,
+ 0x57,0x8e,0xca,0x14, 0x7d,0x8b,0x6c,0x8e, 0x0f,0x31,0x00,0x68, 0x10,0xe7,0x67,0x38,
+ 0x47,0xd6,0xee,0xe4, 0xf0,0x48,0x26,0x0b, 0x59,0x7e,0x22,0xd5, 0x5d,0x50,0x1e,0xc8,
+ 0x01,0x02,0xd4,0xa5, 0x80,0x5b,0x8f,0xcb, 0xac,0xfb,0xfc,0x44, 0xdc,0xba,0x67,0x0b,
+ 0x3b,0xbd,0xe3,0x65, 0xff,0x4f,0xe0,0xf9, 0x20,0x96,0xc3,0xa6, 0xfd,0xbf,0x31,0x4a,
+ 0xed,0xdd,0xe0,0x06, 0x95,0x4d,0x62,0xa5, 0x70,0x32,0x6c,0xa2, 0x64,0xae,0x47,0xcb,
+ 0x69,0x1e,0x83,0x28, 0x57,0x02,0xfe,0xc5, 0x99,0x35,0x8d,0x03, 0xe0,0x6a,0xa9,0x8f,
+ 0x3b,0xde,0x40,0xf0, 0x55,0x79,0xee,0x38, 0x0e,0x04,0xe1,0x87, 0xb6,0xde,0x3f,0xfe,
+ 0x72,0x7f,0xbe,0xfe, 0xf9,0x71,0x46,0xcc, 0x98,0xc1,0xd8,0xe9, 0x70,0x0e,0x16,0xe6,
+ 0xa8,0x68,0x84,0xbe, 0xf6,0x7b,0x81,0xee, 0xfc,0xda,0x75,0xdb, 0xbb,0x32,0xae,0x9a,
+ 0xc8,0x65,0xd7,0x55, 0x17,0x9d,0x64,0x5d, 0xee,0xa9,0x92,0x2b, 0xb5,0x71,0xa2,0xa7,
+ 0x4c,0x55,0x42,0x87, 0x0a,0xbe,0xfe,0xfc, 0xeb,0x3e,0x05,0xd9, 0xef,0xc7,0x81,0x8d,
+ 0xe2,0xb8,0xe7,0x86, 0xd4,0x6f,0x8f,0xbf, 0xe7,0x7e,0xe3,0xb4, 0xeb,0x0f,0x94,0x8e,
+ 0x60,0xde,0xc4,0xb6, 0xa0,0x09,0x17,0x5c, 0x4a,0xfe,0x73,0x43, 0x0e,0x3a,0xd0,0x77,
+ 0xfd,0xcc,0xd9,0xe8, 0xe4,0xf2,0xba,0xa1, 0x6c,0x94,0x23,0x34, 0x59,0xc5,0x45,0x40,
+ 0x0f,0xed,0xab,0x11, 0xa5,0xd8,0xf1,0xfe, 0x05,0xe7,0x7c,0xe8, 0x88,0x8d,0x16,0x98,
+ 0x6a,0x24,0x40,0xfb, 0x37,0x02,0x6c,0x6c, 0x4d,0xa6,0xda,0x64, 0x47,0xb6,0x90,0x69,
+ 0x52,0x54,0xff,0x0f, 0x53,0xd5,0x70,0xb0, 0x28,0xfd,0x00,0xc6, 0xf0,0x36,0x6d,0x0c,
+ 0x42,0x54,0x11,0xbb, 0xcb,0x9d,0xaf,0x91, 0xec,0xe0,0xfc,0xeb, 0x9a,0xd2,0x69,0xfb,
+ 0xd9,0xb0,0x6b,0xec, 0x7d,0x61,0xb7,0xdc, 0x85,0x3a,0x3e,0x3b, 0x0a,0xb4,0x1d,0x7d,
+ 0xb5,0xd7,0x10,0xfb, 0x97,0x4c,0xd0,0xb9, 0x20,0xcf,0x94,0x06, 0x07,0xb1,0x89,0x42,
+ 0x5b,0x70,0x28,0xba, 0xe2,0xad,0x8b,0x9a, 0xbb,0xd9,0xdb,0x3f, 0x79,0x3d,0x55,0xbc,
+ 0xf1,0x19,0xd1,0xdb, 0x5c,0x90,0xb6,0x3d, 0x16,0x4c,0xb2,0x3b, 0x24,0x30,0x1c,0x0f,
+ 0xe1,0x23,0xa5,0x8a, 0x5c,0xda,0x1f,0xb1, 0x59,0xc5,0x18,0x8b, 0xa4,0x51,0xd8,0x1f,
+ 0x77,0xce,0xf7,0xd6, 0xb9,0xde,0xcf,0x02, 0x44,0x84,0xe7,0xe3, 0x27,0xc3,0xf4,0x13,
+ 0x93,0xd3,0x93,0x64, 0x0c,0xb9,0x18,0x41, 0xf1,0x90,0x38,0x1a, 0xdc,0x41,0xe0,0xb5,
+ 0x8e,0xa2,0xdd,0x57, 0xe4,0x4a,0x85,0xeb, 0x2e,0x3f,0xc6,0xbb, 0x12,0x80,0x73,0xab,
+ 0x2d,0xd4,0xa4,0x9b, 0x65,0x54,0x17,0xd4, 0x5e,0x38,0xe7,0x8c, 0x3d,0x3a,0x11,0x1a,
+ 0xee,0x8f,0x91,0xed, 0x36,0xf6,0x15,0xf2, 0x9c,0x63,0x1b,0x93, 0xa5,0xfb,0xee,0xbe,
+ 0x83,0xea,0x37,0x4f, 0x10,0xb2,0x25,0xc2, 0x8c,0x88,0xef,0x6c, 0x3f,0x48,0x4c,0xbe,
+ 0xc2,0x71,0x71,0x51, 0xac,0x5d,0xf3,0xd2, 0x8a,0x2b,0x21,0x68, 0x73,0x8e,0x96,0x07,
+ 0xac,0xca,0x4e,0xb8, 0xbd,0x06,0x55,0xf4, 0xad,0x09,0x64,0x15, 0x0a,0x95,0xd3,0x59,
+ 0xe6,0xd2,0xbb,0x91, 0xcf,0x4a,0xfc,0x92, 0x17,0x87,0x7c,0x41, 0x25,0x78,0x35,0xd5,
+ 0x90,0xf6,0x4e,0xa1, 0x6a,0x79,0x47,0x42, 0x19,0xc7,0xca,0x1a, 0x16,0xb1,0x20,0x0f,
+ 0x09,0xea,0xa1,0x1e, 0xb9,0xc2,0xee,0x9e, 0x2b,0x49,0x34,0x8d, 0xaa,0x24,0xfc,0x8b,
+ 0x74,0x55,0x97,0x85, 0xba,0x41,0xc7,0xc1, 0xfe,0x15,0xf0,0xc6, 0x52,0xd6,0x98,0xf0,
+ 0xbe,0x9d,0xc4,0xb3, 0x49,0x99,0xff,0xae, 0xdd,0x63,0x64,0xe7, 0xc4,0x13,0x20,0xe0,
+ 0xde,0xaf,0x4b,0xea, 0x7d,0x46,0x74,0x15, 0xef,0x96,0xd9,0xcb, 0xbf,0xdc,0xac,0xda,
+ 0xc3,0xbd,0xd4,0xe6, 0xe2,0x3a,0x68,0x42, 0x37,0x50,0x47,0x93, 0xd0,0x4f,0x3f,0xd3,
+ 0x5d,0x5f,0x07,0x03, 0x2e,0x55,0x2b,0xbe, 0x57,0xab,0x66,0x1d, 0x1b,0x10,0x5d,0xe2,
+ 0x68,0x43,0xcb,0xff, 0x38,0xcd,0x78,0xca, 0xfa,0x08,0xe1,0x50, 0x66,0x1b,0xb9,0xea,
+ 0x69,0x3c,0xbb,0x94, 0x62,0xfd,0x1b,0x48, 0x84,0x41,0x9c,0xbc, 0xf0,0xe4,0xe0,0x39,
+ 0x81,0xa0,0xf1,0xe1, 0x72,0x02,0x7b,0x2a, 0xe1,0xdc,0x10,0xaa, 0x2c,0x72,0xc8,0x47,
+ 0x78,0x7d,0xb8,0xc1, 0xc1,0x6a,0x3a,0x97, 0x78,0x3b,0x56,0xb5, 0x53,0x4e,0xf4,0x2d,
+ 0x76,0xb2,0x42,0x85, 0xed,0xd7,0xd4,0xe2, 0x70,0xb5,0xd5,0xbc, 0xc8,0x36,0x17,0x3b,
+ 0xf0,0xa5,0x19,0x51, 0xf3,0x13,0xc3,0xc0, 0x33,0xb0,0x4e,0x17, 0x10,0xd4,0xbc,0xda,
+ 0xd7,0x89,0x49,0x43, 0x70,0x0b,0x38,0x80, 0xe8,0x9e,0x3a,0x01, 0x83,0x4d,0xf3,0x2e,
+ 0x25,0x26,0x1d,0x3b, 0x9f,0x32,0x82,0x58, 0xed,0x61,0xd7,0x8c, 0xb6,0x7f,0x2b,0x5c,
+ 0x9b,0x33,0x5f,0xe7, 0xac,0xa1,0x0a,0xd0, 0xc3,0x29,0xa3,0x81, 0xbc,0x20,0xbf,0x61,
+ 0x43,0x42,0xc7,0x65, 0xb6,0x1b,0x66,0x29, 0x31,0x2c,0x66,0x08, 0xcf,0x3d,0x3b,0x42,
+ 0xc0,0x62,0x05,0xc7, 0xfd,0xfc,0xf5,0xd5, 0x13,0x51,0x0d,0xac, 0x1d,0xa0,0xab,0xe4,
+ 0xf1,0x37,0x38,0x21, 0xa0,0xd5,0x00,0x01, 0x1a,0x9b,0x39,0x77, 0x8f,0x2c,0x6d,0xf3,
+ 0x31,0xd2,0xbd,0xd8, 0x5a,0xa4,0x26,0x2a, 0xa4,0x67,0x8b,0xd8, 0xaa,0x65,0x8d,0x31,
+ 0xc8,0x44,0x63,0xaf, 0x8d,0xb8,0xe3,0x2f, 0x13,0x9d,0x74,0x51, 0xa4,0xc1,0xba,0x1d,
+ 0x59,0x91,0x16,0x34, 0xa7,0xfb,0x10,0xfc, 0xf6,0xe8,0x86,0x47, 0xb5,0xbb,0x5e,0x6e,
+ 0x43,0x0b,0xab,0x3b, 0x6a,0xdf,0xe6,0x5d, 0xfd,0xa0,0x8b,0x06, 0xf9,0xd8,0x33,0xdb,
+ 0xb7,0x36,0x6b,0xea, 0x0c,0x64,0x55,0xaf, 0xa0,0xbb,0x5b,0x0e, 0x4d,0xff,0xd2,0xc5,
+ 0x4c,0xde,0x3e,0xa5, 0x3f,0x21,0xad,0x95, 0x26,0xb8,0x11,0xed, 0x2d,0xf3,0x1d,0x98,
+ 0xd6,0x64,0x35,0x3a, 0x83,0x98,0x27,0x14, 0x8d,0xe9,0xae,0x72, 0x4e,0x5b,0x68,0x39,
+ 0x25,0x1e,0x76,0x72, 0x58,0x0e,0xa3,0x6f, 0x80,0xc0,0x60,0x14, 0x09,0xa1,0xb3,0x0a,
+ 0x00,0xb5,0xac,0xb2, 0xdd,0x36,0x1e,0x3d, 0xda,0x6e,0x8a,0xf2, 0xab,0x0e,0x55,0x6e,
+ 0x9b,0x5a,0xd8,0x15, 0x0d,0xdf,0x02,0xbe, 0x5a,0xda,0x33,0xd5, 0x82,0xed,0x50,0xd0,
+ 0xdb,0x58,0xcf,0x41, 0xee,0x4b,0x59,0x77, 0x4c,0x34,0xe7,0x05, 0x64,0x80,0xbd,0xcb,
+ 0xef,0x12,0x34,0x59, 0xda,0xb4,0x1b,0x81, 0x28,0x5d,0xe2,0x6a, 0xd9,0xb7,0x02,0x65,
+ 0x91,0x42,0xc2,0x02, 0xd6,0x68,0x7c,0x2d, 0x08,0x5a,0xe9,0x5d, 0x0e,0xfa,0x1d,0x42,
+ 0x81,0x76,0x69,0x0e, 0x5a,0x91,0xe8,0x2d, 0x5a,0x62,0x73,0x1e, 0xb5,0x57,0xc0,0x98,
+ 0x8b,0x22,0x84,0x35, 0x1f,0xa5,0x8a,0x7b, 0xc8,0x1f,0x72,0x0d, 0x16,0x30,0x53,0xd6,
+ 0xf1,0x26,0xc3,0x7f, 0x65,0x6b,0x8f,0x6b, 0x7d,0x6c,0x93,0xf3, 0x4e,0x7c,0x2f,0x0d,
+ 0x13,0xf1,0xea,0x13, 0xfb,0xa6,0x29,0x6a, 0x38,0x66,0x62,0x50, 0x4e,0xbb,0xb4,0x37,
+ 0x8c,0x34,0xb9,0xe1, 0x50,0x8f,0x42,0xf4, 0x83,0xd5,0x6e,0x77, 0xa8,0x4f,0x03,0x23,
+ 0x73,0x0f,0xd3,0xe0, 0x9b,0x4c,0x3b,0x78, 0x1c,0x9b,0x0f,0x63, 0xa4,0xdb,0x82,0x59,
+ 0xd0,0x92,0x92,0xd1, 0x0a,0xf3,0x82,0xc4, 0x5c,0xf4,0xec,0x02, 0x9b,0x84,0x58,0xe5,
+ 0x06,0x2f,0xf2,0xa8, 0x7f,0x1c,0xf6,0x67, 0x5a,0x79,0x23,0xa4, 0xc6,0x44,0xef,0x96,
+ 0x76,0xb5,0xd8,0x96, 0xaa,0x5d,0x8f,0xbf, 0x5e,0x65,0xa7,0xf0, 0x59,0x3f,0x1e,0xb4,
+ 0x24,0x16,0x7f,0x7e, 0x83,0x40,0x21,0x16, 0x41,0xf5,0x3b,0xec, 0x86,0xb8,0xf8,0xea,
+ 0x65,0xe6,0x40,0x9b, 0x23,0x37,0x22,0x2c, 0x6e,0x05,0x57,0x89, 0x3b,0x77,0xc1,0xc0,
+ 0x0c,0xb7,0x8b,0x54, 0x5d,0x3c,0xba,0xa8, 0x12,0x57,0xb0,0xe9, 0x29,0xac,0xc9,0x18,
+ 0xd0,0x58,0x4c,0xf5, 0x18,0x32,0xac,0xbe, 0x71,0x8f,0x71,0x41, 0x8b,0xfb,0xd7,0x80,
+ 0x86,0x08,0x39,0xaf, 0xc3,0xfd,0x68,0x55, 0xe3,0x73,0xa6,0x0a, 0x1d,0x84,0x77,0x06,
+ 0x72,0x5e,0x7b,0x2e, 0x9f,0xb1,0xf6,0x3a, 0x87,0xdf,0xe1,0xf9, 0xbb,0x2b,0xdf,0x7f,
+ 0xae,0x92,0xde,0x2b, 0x63,0x14,0xcb,0x79, 0x09,0x22,0x85,0xe4, 0x49,0xd4,0xea,0x54,
+ 0x9b,0x64,0xc4,0x22, 0xa9,0x70,0x76,0xe1, 0x9b,0xb6,0xa5,0xc7, 0xdd,0x8f,0x4e,0xe9,
+ 0x86,0x2d,0x09,0xbb, 0xac,0x6b,0xea,0x0a, 0x62,0x3c,0x6f,0xa7, 0x9d,0x48,0xef,0x8a,
+ 0xa5,0x8f,0x22,0x42, 0xef,0x2f,0x8e,0xc4, 0x27,0x0c,0x96,0xbd, 0x38,0xab,0xa4,0x7d,
+ 0xac,0x25,0x91,0xa7, 0xa6,0xcb,0x8e,0xf0, 0xad,0xa9,0x95,0xdd, 0x28,0x9c,0x7b,0xc0,
+ 0xdc,0x1c,0xde,0x3a, 0xd9,0x2c,0x1a,0xfe, 0x53,0xf7,0x74,0xe1, 0x2a,0x7c,0x3b,0x46,
+ 0x3a,0x69,0x4f,0x91, 0xc6,0x33,0xf7,0x10, 0xfd,0x6f,0x07,0x38, 0x59,0x74,0x7b,0xda,
+ 0x8b,0x17,0x3b,0x59, 0x37,0x91,0xb3,0x11, 0x2d,0x09,0x6d,0x14, 0x4e,0x4e,0xcf,0x86,
+ 0x90,0xcf,0x55,0x97, 0xb4,0xcd,0x35,0xc9, 0xeb,0xc0,0xb2,0x03, 0xae,0x60,0xcc,0x63,
+ 0x38,0x00,0x69,0x80, 0x51,0xf8,0x41,0x5c, 0xee,0xb7,0x90,0x6a, 0x90,0x05,0x40,0xe8,
+ 0xb8,0xd0,0xf7,0x6e, 0x89,0xea,0x80,0x42, 0x3a,0x59,0xaf,0x03, 0xa6,0x5e,0x43,0xe3,
+ 0x79,0x55,0x9a,0xb5, 0x7c,0xcc,0x40,0xe3, 0xef,0x6b,0x23,0x72, 0x17,0x4f,0xe0,0xd2,
+ 0x0d,0xf3,0x55,0x9f, 0x4b,0x0a,0xa5,0x84, 0xf1,0xc3,0x77,0x04, 0xa5,0x55,0x7f,0x56,
+ 0xa2,0xfb,0x1f,0xf4, 0xab,0xca,0xa6,0xb3, 0x18,0x7c,0x84,0x5b, 0xf9,0x5a,0xcf,0xe4,
+ 0x89,0xe9,0xd7,0x71, 0x85,0x63,0xb4,0x6c, 0xea,0xac,0x16,0x6d, 0x75,0xec,0xaf,0xfe,
+ 0xbf,0x3e,0x3e,0x8c, 0xad,0x2a,0xfa,0x7e, 0x0e,0x8f,0x78,0xe3, 0x48,0xed,0x26,0x4f,
+ 0x3b,0xdb,0x52,0x39, 0x07,0x77,0x96,0xc4, 0x6f,0x7b,0x7d,0x2a, 0x39,0x82,0xed,0x8d,
+ 0x2b,0x4c,0xa2,0x84, 0x87,0x5e,0x02,0xab, 0xdc,0xaf,0xdf,0xc3, 0xfe,0x9c,0x9a,0x9c,
+ 0xfb,0xfc,0xe7,0x42, 0x5d,0x9a,0x8b,0xdd, 0x3c,0x05,0xba,0x48, 0x23,0xc5,0xc3,0xc6,
+ 0x6b,0xe3,0x17,0x87, 0x0b,0x03,0x13,0xc1, 0xac,0x88,0x08,0x60, 0x6c,0x79,0x5a,0x54,
+ 0x73,0xf6,0x83,0xd9, 0x66,0x22,0x76,0x5e, 0x2a,0xb1,0xcb,0x3c, 0x44,0x43,0x81,0x6a,
+ 0x96,0xbb,0x0e,0x4f, 0xb3,0x15,0xdc,0xe9, 0xf7,0xf0,0xfd,0x05, 0x64,0x6e,0x7d,0xe7,
+ 0x1c,0xb6,0xde,0xfe, 0xd3,0x3c,0xc8,0x57, 0xb9,0xfd,0xe7,0xbc, 0x8b,0xe2,0xcd,0x6f,
+ 0x82,0x3c,0xb4,0xb8, 0xba,0xe6,0xff,0xb3, 0xde,0x06,0x14,0xaa, 0xcc,0x30,0x4f,0x42,
+ 0x8f,0x72,0x21,0x72, 0x1d,0x01,0x50,0x7e, 0xc9,0xa8,0xd8,0x93, 0xe8,0x16,0x55,0xfe,
+ 0xb2,0x67,0x2e,0x69, 0x05,0x0b,0x72,0x46, 0x0c,0x4d,0x04,0x11, 0x05,0x64,0xd7,0x42,
+ 0x2e,0x3b,0x93,0x8b, 0x32,0x37,0x06,0xc8, 0xcb,0xce,0xaa,0x58, 0x44,0x57,0x4f,0x4c,
+ 0x0f,0xef,0x9b,0xfd, 0x7b,0x9b,0xd9,0x3f, 0xd1,0x65,0xdb,0x62, 0x32,0xeb,0x0e,0x0f,
+ 0x5b,0x82,0xb6,0x67, 0xa5,0xd8,0x7a,0x5b, 0x16,0xbe,0x7e,0x7f, 0x6e,0xe0,0x3e,0x18,
+ 0x97,0xa5,0xc9,0xbf, 0xd3,0xa7,0x2b,0xf3, 0xf3,0x11,0xa4,0x25, 0xd6,0xb7,0xd3,0x58,
+ 0x41,0xe4,0xb5,0x83, 0x61,0x3d,0xc4,0x2e, 0xbd,0x2b,0x49,0x3d, 0x42,0x92,0x25,0xb3,
+ 0xe5,0x47,0xd8,0x4e, 0xf3,0xf6,0xef,0xa4, 0x5f,0xb5,0x29,0x57, 0xb7,0x1f,0x8d,0xfa,
+ 0xbe,0xde,0xff,0x7b, 0x29,0xd4,0x69,0x02, 0xd2,0xd6,0x37,0xe6, 0xd3,0x4a,0xf8,0x75,
+ 0xb6,0x8f,0x18,0x79, 0x0c,0xeb,0xfc,0x1e, 0x8f,0x85,0xed,0x7b, 0x78,0x57,0x0f,0x9d,
+ 0x36,0x8f,0xcf,0xb3, 0xb6,0x78,0xe6,0x3c, 0xbe,0xd6,0xb3,0x84, 0xec,0x99,0xf7,0x1b,
+ 0x22,0xcd,0xc2,0x96, 0x9a,0x39,0xf8,0x4a, 0xc9,0x94,0xce,0x4d, 0x38,0x51,0xe6,0xde,
+ 0xb9,0x73,0x0a,0x36, 0x03,0x91,0xbd,0xdc, 0x0f,0x13,0x16,0x9d, 0xb7,0x8d,0x09,0x6e,
+ 0x1f,0x51,0x1f,0x1b, 0x2a,0x89,0x1f,0x23, 0x85,0x1b,0xfe,0x0e, 0xfb,0x78,0xce,0x0e,
+ 0xde,0xd6,0x83,0xa3, 0xe2,0xd3,0x3b,0x07, 0x3d,0xf0,0x6a,0xda, 0x94,0x8b,0x95,0x6c,
+ 0x1b,0xe8,0x18,0x10, 0xcd,0x59,0xc1,0xcc, 0x24,0xc3,0xca,0xf0, 0x37,0xca,0xd1,0xf7,
+ 0x54,0x85,0xdd,0xe8, 0x5b,0x3c,0xf1,0xfa, 0xa3,0xdb,0xf7,0x47, 0x84,0x5c,0x63,0xe6,
+ 0xea,0xd4,0xac,0x93, 0x97,0x11,0x77,0x5d, 0x0d,0xe4,0xc1,0x88, 0xd0,0xab,0x6b,0xd8,
+ 0x27,0x4b,0x7f,0x61, 0x0c,0x38,0xfe,0x4d, 0xc2,0xe4,0x63,0x74, 0xf5,0x94,0x10,0x04,
+ 0x02,0x67,0x7a,0x13, 0x8f,0x4d,0xb7,0xd9, 0x22,0x1f,0xc5,0x5f, 0xea,0x65,0x47,0x07,
+ 0x9b,0xea,0xb3,0xc4, 0x96,0xda,0x3e,0x6e, 0x76,0x6f,0x15,0x96, 0x66,0xd7,0x78,0xda,
+ 0x7f,0xc0,0x52,0xb2, 0x7a,0x8b,0xe9,0x95, 0xcd,0x63,0x5d,0xc0, 0x69,0x19,0xb8,0xf0,
+ 0x3a,0xb9,0x0b,0x4a, 0x81,0xbf,0x5c,0x2e, 0xcf,0xcb,0xd7,0x6b, 0x79,0xc7,0xcc,0xb8,
+ 0x87,0x2d,0xc4,0xb3, 0xf1,0x1a,0x49,0x51, 0xed,0x31,0xca,0x01, 0xd1,0xbd,0x5b,0x57,
+ 0xb2,0xa5,0x5f,0x43, 0x77,0x4e,0x11,0x6e, 0x93,0x5c,0x71,0x55, 0x50,0x5f,0x3c,0x49,
+ 0xa2,0x19,0x1b,0x81, 0x2f,0x7e,0x06,0xb4, 0x78,0xea,0xb6,0x98, 0xf6,0xf4,0xc9,0xe7,
+ 0x8d,0x5a,0xe1,0x00, 0xda,0x49,0xe1,0x07, 0xec,0xb3,0xb8,0x3b, 0x66,0xfc,0xc3,0x94,
+ 0x58,0x82,0xfd,0x64, 0x3b,0x88,0xce,0x0e, 0x3d,0x96,0x2e,0x1b, 0x43,0x0e,0x2f,0xe5,
+ 0x80,0x57,0x6b,0x63, 0x8d,0xf3,0x30,0xdb, 0xb5,0xee,0x34,0xb8, 0x9c,0x1c,0x5d,0x65,
+ 0x35,0xde,0x7f,0x47, 0x9f,0xcb,0xeb,0x18, 0xae,0xa9,0xc4,0xea, 0x2c,0xb7,0x1b,0x9d,
+ 0x36,0xad,0xd2,0x9b, 0x27,0x78,0x2c,0x6e, 0x2f,0x52,0xbb,0xeb, 0x0d,0x87,0x8a,0xbc,
+ 0x24,0x64,0xd5,0xa4, 0xc9,0xe1,0x2c,0xb7, 0x6d,0x95,0xee,0xeb, 0x55,0xb4,0xb4,0x8b,
+ 0x6a,0xd2,0xdb,0x3a, 0xee,0xa2,0x49,0xf3, 0xd9,0x09,0x9d,0x7d, 0xc6,0x4f,0x5d,0xa2,
+ 0xd7,0x5a,0xb5,0xc9, 0x7e,0xf9,0xb1,0xe6, 0x51,0xde,0xb3,0x45, 0xa0,0xaf,0xa1,0xd5,
+ 0x86,0x7b,0xcc,0xf9, 0x5b,0x25,0x36,0xca, 0x2c,0xd8,0xc0,0xb3, 0xe5,0x64,0x76,0x47,
+ 0x8d,0x12,0xb6,0xb6, 0xb0,0xab,0x9e,0x5f, 0xfc,0xad,0x77,0x8b, 0x99,0x7d,0x10,0x35,
+ 0xaf,0x39,0xfa,0x38, 0x36,0x14,0x50,0xe9, 0x3a,0xd8,0xfc,0x76, 0x37,0x85,0xd6,0xd3,
+ 0x71,0x74,0x4e,0x70, 0x06,0x1f,0xd8,0xa2, 0x06,0xe8,0xe7,0x2c, 0x90,0x45,0xc1,0x1f,
+ 0x4c,0xe1,0xc7,0x1b, 0x0f,0xab,0x61,0xc9, 0x01,0xb8,0xb1,0xe5, 0x27,0x1e,0xa2,0x95,
+ 0x3f,0x80,0x3f,0x13, 0xae,0x93,0x28,0xbc, 0xbb,0x9f,0x06,0x5a, 0xd3,0x76,0x9b,0x0e,
+ 0x72,0x42,0xea,0x6f, 0x73,0xcc,0xe6,0xdf, 0xd9,0x5f,0x44,0xec, 0x77,0xaf,0xdc,0x65,
+ 0xf3,0x6e,0x14,0x9b, 0xde,0xd3,0x04,0x89, 0x1d,0x5c,0xa6,0x6b, 0x07,0x51,0x29,0x2b,
+ 0x7f,0x60,0x52,0x1e, 0xe0,0xc0,0x60,0x4a, 0x06,0xaf,0xfc,0x8b, 0xd6,0xce,0x16,0xd2,
+ 0x61,0x8a,0xbd,0xce, 0xda,0x85,0xb8,0xd8, 0x70,0x8e,0xb1,0xb1, 0x71,0x20,0x41,0x0d,
+ 0xb9,0x9a,0x73,0xeb, 0xdd,0x3f,0xa3,0xab, 0x51,0x46,0xc2,0xe7, 0xc4,0xd5,0x73,0x9d,
+ 0x0b,0xee,0xe1,0xf2, 0x32,0xd7,0x60,0x16, 0x15,0x14,0xe8,0xf4, 0xe3,0x2b,0xc6,0xa4,
+ 0x27,0xcd,0x83,0x71, 0xab,0x55,0x6f,0x2c, 0xea,0x57,0xc7,0xa4, 0xe2,0xc4,0x64,0x44,
+ 0xcb,0x86,0xd0,0x2d, 0xea,0xa5,0x7c,0x2c, 0xb3,0x7b,0xd4,0xbb, 0xc1,0xb3,0x18,0xca,
+ 0x34,0x4b,0x6f,0xf2, 0xd0,0x11,0x89,0x5f, 0xc6,0x80,0xa6,0x32, 0xe7,0x83,0x80,0xee,
+ 0x9b,0xec,0x3a,0x3d, 0xea,0x77,0xf9,0x27, 0x93,0x64,0x71,0x38, 0xbb,0x42,0x69,0xc9,
+ 0xe3,0x69,0xb4,0x76, 0x44,0x6f,0x8c,0xfd, 0x3f,0x1b,0xd4,0x4e, 0xe2,0x37,0xbd,0xfe,
+ 0xba,0x7f,0x1e,0x55, 0xa6,0x05,0x49,0x79, 0xcf,0x4a,0xe7,0x46, 0x43,0x95,0xf2,0xb8,
+ 0x54,0x82,0xe0,0x69, 0xaa,0x9e,0x2d,0x8e, 0x8d,0x69,0x22,0xfa, 0x14,0x91,0x6c,0x74,
+ 0x54,0x38,0xd2,0x61, 0x54,0xbb,0x6a,0x80, 0x4e,0x87,0x46,0xe9, 0xd6,0xb9,0x9d,0xa7,
+ 0x28,0x7c,0x83,0x89, 0xde,0x89,0xca,0x64, 0xc0,0x7b,0xd3,0xd5, 0xc0,0xa7,0xc8,0x37,
+ 0xfd,0x9c,0x35,0x66, 0xd0,0xfa,0x3e,0x2a, 0x39,0x06,0x20,0x46, 0xe4,0xde,0x2d,0xc9,
+ 0x43,0x85,0xe5,0x79, 0x46,0x40,0x71,0xc3, 0x83,0x08,0x4f,0x8e, 0x83,0xb5,0x0a,0xa8,
+ 0xcd,0x2c,0x9b,0x82, 0x51,0x29,0x29,0x33, 0xab,0x22,0xf1,0x76, 0x0f,0xc1,0x9e,0xae,
+ 0xa4,0x31,0x3f,0xec, 0x27,0x63,0xcf,0xf7, 0xff,0x07,0x4d,0x62, 0xcd,0x74,0xd7,0x5f,
+ 0xe6,0x29,0x8b,0xb8, 0x74,0xae,0x7d,0xf1, 0x3b,0x3a,0xf5,0xad, 0xee,0x1a,0x0b,0x45,
+ 0x8a,0xce,0x72,0x53, 0x2f,0x2c,0x77,0xd7, 0x8b,0xe0,0xbf,0xca, 0x77,0xb9,0xe7,0xcd,
+ 0x13,0xa7,0xf5,0x92, 0x37,0xbb,0x6f,0xa0, 0x38,0x42,0x99,0xf6, 0xe5,0x99,0x69,0x2c,
+ 0x20,0x44,0x09,0x08, 0xd0,0x69,0x84,0x5a, 0xac,0xc3,0x62,0x2b, 0x1a,0x4c,0x4c,0xec,
+ 0x5d,0x2f,0x6f,0xfd, 0x2f,0x38,0x32,0x35, 0xd8,0xba,0x7d,0x45, 0xe5,0x57,0xf6,0x5c,
+ 0xbb,0x85,0x56,0x57, 0x22,0xe9,0xdd,0x89, 0x88,0xc0,0x1b,0xca, 0xee,0x32,0x45,0xe6,
+ 0xb8,0x42,0x0f,0x5c, 0xac,0x67,0x94,0xce, 0xf6,0xd1,0x1d,0x7e, 0x5d,0x0b,0xad,0x2d,
+ 0x15,0xcc,0x29,0x55, 0x6c,0xef,0x46,0x9d, 0x2d,0x3e,0xf9,0xea, 0x03,0x75,0x46,0xad,
+ 0x47,0xf5,0x7b,0x07, 0xde,0xcb,0x83,0xf4, 0x18,0x6e,0x71,0xc1, 0xcc,0x3a,0x68,0x77,
+ 0xb9,0x38,0x3d,0x5b, 0x78,0x90,0x34,0xd7, 0x03,0x9b,0x1d,0xd7, 0x89,0xa1,0x5e,0x95,
+ 0x40,0x1a,0xcb,0xad, 0x96,0x94,0x97,0xf2, 0x14,0x6c,0x39,0xe2, 0xf3,0x39,0x76,0xed,
+ 0xd6,0x5f,0x29,0xc5, 0x19,0x1b,0xaa,0x1f, 0xdf,0x0e,0x1d,0xae, 0x3d,0x66,0xf8,0xd5,
+ 0x9c,0x9c,0x86,0x5d, 0xca,0x51,0x6b,0x6e, 0x70,0xe1,0x0c,0x6c, 0x7c,0x76,0x1b,0xfd,
+ 0xc6,0xea,0xed,0x7d, 0x68,0x5c,0xa0,0xc5, 0xdc,0xb2,0x4d,0x24, 0xd8,0xd8,0x0d,0xaf,
+ 0xb4,0xd2,0x28,0x7e, 0x91,0xaf,0x43,0x88, 0x31,0x34,0x39,0x08, 0xd8,0x63,0x14,0xe6,
+ 0xc8,0x1b,0x0e,0xf7, 0x0c,0xb1,0xcc,0x04, 0x03,0x32,0x33,0x22, 0x05,0x09,0x31,0x5e,
+ 0x8f,0xd2,0xc0,0xc1, 0x53,0x35,0x49,0x7d, 0xfb,0x2d,0xd6,0x43, 0x0a,0xaa,0x76,0x3f,
+ 0x88,0x37,0x5d,0x9e, 0x76,0xad,0xaa,0x03, 0x34,0x50,0xdb,0x0f, 0x41,0x86,0xd8,0x89,
+ 0xc3,0x47,0x10,0x2f, 0x2e,0x1a,0x82,0x95, 0x38,0x53,0x6a,0xac, 0xa8,0x37,0xe8,0x57,
+ 0x7d,0x40,0x9e,0xca, 0x10,0x84,0x5d,0xd2, 0x65,0x9c,0xcb,0xbe, 0xe9,0x57,0xd2,0xee,
+ 0x56,0xf2,0x6b,0xd4, 0xe1,0x2e,0x06,0x5a, 0xf4,0x16,0x54,0x56, 0x22,0x66,0xd6,0x34,
+ 0x1b,0x9a,0x7b,0x33, 0x87,0x99,0xf4,0x5a, 0x21,0xa1,0x8c,0x03, 0x86,0xe1,0x90,0xc5,
+ 0x0c,0x11,0x2f,0x1f, 0x6b,0x17,0xd8,0x8e, 0x13,0x2d,0x75,0x3a, 0x09,0x87,0x7b,0xcd,
+ 0xc1,0x75,0xa5,0xa7, 0x31,0xc4,0x4f,0xd6, 0x3f,0x68,0x81,0x49, 0x37,0x77,0x31,0x7f,
+ 0x5a,0x52,0xb2,0x1b, 0x3c,0x04,0xb4,0xc8, 0x97,0xeb,0xa9,0xe9, 0x9d,0x05,0xec,0xf7,
+ 0x97,0x38,0x83,0x9e, 0xea,0x2b,0x54,0xa0, 0xf9,0x6c,0x2c,0x8a, 0x60,0x28,0xb7,0xd9,
+ 0xb5,0x27,0xb0,0x85, 0xbf,0x86,0xf2,0xf2, 0x6b,0x31,0x1e,0x4b, 0x81,0xb7,0xc2,0x4f,
+ 0x6b,0x5d,0xec,0xdc, 0x5c,0xba,0xf0,0xe9, 0xaa,0x9a,0xa3,0x46, 0x78,0x3c,0x54,0xfc,
+ 0x95,0x1d,0x9f,0x0f, 0x66,0xe6,0x7a,0xf8, 0x14,0xce,0x18,0x15, 0xa9,0xa0,0x54,0xf1,
+ 0x56,0x98,0x96,0x5e, 0x36,0x03,0xc2,0xce, 0x9c,0xc9,0x24,0xb5, 0xb5,0xe0,0xb7,0x4b,
+ 0x86,0xef,0x7c,0xb1, 0xcc,0xa8,0x69,0x5d, 0x93,0x4b,0x99,0x79, 0xd1,0x5a,0xe7,0xcb,
+ 0x0a,0x39,0x8a,0x35, 0xf3,0x48,0xf5,0x5c, 0x04,0xd1,0x9b,0x38, 0x95,0xeb,0x75,0xd3,
+ 0xc0,0x23,0xc1,0x98, 0x84,0x75,0xb5,0x32, 0x6d,0x2e,0x1e,0xdd, 0xd3,0x4f,0x81,0xa9,
+ 0xa8,0x1c,0xba,0x86, 0x65,0xf5,0xf3,0x66, 0x0b,0xe5,0xfc,0x2e, 0x1b,0xd5,0x23,0x36,
+ 0x2a,0xc4,0x7a,0x36, 0x57,0x08,0xe8,0x9f, 0xcb,0xc1,0xed,0x9a, 0x93,0xc4,0xb4,0xbd,
+ 0x67,0x31,0x75,0x29, 0xe8,0xf1,0xac,0x75, 0xaf,0x5b,0x39,0xbb, 0x05,0x01,0x59,0x3e,
+ 0x3f,0x09,0xba,0xe2, 0x41,0x0d,0xc7,0xfb, 0xea,0x20,0x59,0x59, 0x99,0x9b,0xad,0x41,
+ 0xc8,0x10,0x22,0x49, 0x24,0x21,0x33,0x77, 0x16,0xda,0x1c,0x5f, 0x59,0xe4,0x5c,0x33,
+ 0x61,0x17,0x79,0xd7, 0x3a,0x53,0x42,0x21, 0xea,0xe0,0x8e,0x17, 0xc7,0x58,0x1b,0x78,
+ 0xa5,0x4d,0xfc,0xfc, 0xea,0x7d,0x9d,0x25, 0xab,0x98,0x27,0x14, 0x0d,0x60,0xc5,0x26,
+ 0xbf,0x0b,0x3f,0xad, 0x6e,0xd8,0x34,0x1e, 0x0e,0xe9,0x01,0xaf, 0xa5,0x9b,0x61,0x4b,
+ 0x3d,0xd5,0x72,0xca, 0x5e,0x56,0xa8,0x95, 0x8d,0x34,0xd9,0x34, 0x89,0xeb,0x84,0x12,
+ 0xc6,0x5e,0x9b,0xa0, 0x66,0xbe,0x3e,0x5e, 0xe9,0x78,0xb0,0xc8, 0x6c,0x06,0x12,0x64,
+ 0xd3,0x63,0xa7,0x62, 0xc0,0xc6,0x8d,0x62, 0xe8,0x6f,0x33,0xdc, 0x53,0x19,0xfb,0x13,
+ 0x9d,0x9f,0x09,0x3e, 0x2d,0x48,0xb0,0xc7, 0xfd,0xa2,0x9e,0x3c, 0x15,0xf0,0x8d,0xb2,
+ 0x32,0xf8,0x36,0x84, 0x46,0x25,0x75,0xcf, 0xe0,0x54,0xa1,0xeb, 0xf0,0x66,0xc3,0x12,
+ 0x8c,0x9a,0x06,0x3c, 0x2c,0x5f,0x54,0x0d, 0x3e,0x03,0x5d,0x28, 0xd7,0x8a,0x56,0xd4,
+ 0x5c,0x34,0x95,0x18, 0x86,0x82,0xa3,0x11, 0xc6,0x29,0x5e,0xa5, 0x0d,0x23,0x68,0x8e,
+ 0xde,0xdc,0x33,0x9d, 0x48,0x1e,0xf7,0xbd, 0x5a,0x7d,0xa4,0xbd, 0xc5,0x87,0xe7,0x44,
+ 0x51,0x15,0x55,0x2b, 0x88,0x50,0x31,0x35, 0x96,0xe9,0x81,0x4b, 0xcf,0xd3,0xea,0x20,
+ 0xe9,0x6f,0xa7,0xe2, 0x30,0xc8,0x9f,0xb5, 0x68,0x52,0x7e,0x4b, 0x01,0xc6,0x17,0x5c,
+ 0x56,0x56,0x9b,0xac, 0xe3,0xa6,0x17,0x96, 0x28,0x2b,0x42,0x74, 0x4c,0xc0,0x6a,0xe9,
+ 0x11,0xd9,0x96,0x33, 0xb1,0xae,0xce,0xc1, 0x90,0x8a,0xa5,0xb8, 0x64,0xf8,0xcc,0xa3,
+ 0x40,0xc4,0xa7,0x53, 0x82,0x2b,0xb7,0x59, 0x25,0x11,0x28,0x48, 0xa4,0xa1,0x20,0x6a,
+ 0x48,0x7e,0x1e,0xf7, 0x15,0xb4,0xfb,0x0d, 0xed,0x16,0xf0,0x63, 0x88,0xe1,0x05,0x53,
+ 0x0b,0x1d,0x89,0x1a, 0x1b,0x9b,0xec,0x34, 0x4b,0x33,0x72,0xd1, 0x0f,0xf3,0x53,0x90,
+ 0x3c,0x2f,0xa8,0x83, 0xb4,0x81,0xa8,0x21, 0x28,0x11,0x59,0xfc, 0xb1,0xd8,0xe2,0xde,
+ 0xe4,0xea,0x49,0x72, 0xf2,0x18,0x08,0xc5, 0x8f,0x01,0x3a,0x45, 0x23,0xc6,0x5d,0xf2,
+ 0xc9,0x50,0x63,0x56, 0x08,0xa2,0x20,0x18, 0x83,0xbb,0x89,0x56, 0x6c,0xcc,0xa3,0x39,
+ 0x90,0xe6,0x67,0x5d, 0x64,0x37,0xd9,0x9b, 0x30,0xff,0xf8,0x3a, 0x6e,0xcb,0x48,0x47,
+ 0x05,0x4a,0x05,0x42, 0x41,0xf8,0x87,0x7d, 0x36,0xfd,0xd4,0x2c, 0x0f,0x2f,0x4d,0x14,
+ 0xdd,0x55,0x6b,0xc7, 0xea,0x40,0x20,0x75, 0xfa,0x55,0x16,0x16, 0x9f,0xd9,0x6b,0x5f,
+ 0x09,0x04,0x27,0xcd, 0xb8,0xb2,0x83,0x7a, 0x30,0x3d,0xed,0x10, 0x18,0x71,0x89,0x7b,
+ 0xbb,0x46,0xd0,0x47, 0x97,0xf9,0x3e,0x2f, 0xd5,0xbe,0xa2,0xf7, 0x83,0x17,0x2b,0x87,
+ 0xe1,0xc8,0xbc,0xdf, 0xfe,0x89,0xcb,0xd5, 0xdd,0xe8,0xf4,0x6a, 0x6a,0x3d,0xb2,0x01,
+ 0x65,0x8f,0x9a,0x30, 0x5c,0x7a,0x58,0x4d, 0x06,0x16,0x8b,0x10, 0xc3,0x78,0xba,0x98,
+ 0xca,0xc9,0x93,0x17, 0x19,0xb5,0x2f,0x16, 0xc9,0x6b,0x51,0x89, 0xc7,0xf6,0x72,0xf5,
+ 0xea,0xbe,0xdd,0xf9, 0xa8,0xab,0x73,0x47, 0x11,0x8e,0xc5,0x40, 0x67,0x6d,0x61,0x5b,
+ 0x9f,0x43,0x2b,0xf5, 0x2d,0x4b,0xb0,0xce, 0x44,0x76,0xb1,0x8a, 0x01,0xba,0xb0,0xc2,
+ 0xab,0x69,0x3e,0xef, 0x75,0xea,0x6a,0xbd, 0x6a,0x46,0xf4,0x5d, 0x27,0x21,0x0c,0xfa,
+ 0x5b,0xed,0xa7,0x0b, 0x0f,0x13,0xd6,0x69, 0xb5,0x8f,0xe2,0xba, 0x6c,0x8f,0x49,0x7c,
+ 0xb3,0x5e,0x9c,0xd6, 0x43,0x2a,0x08,0x51, 0x71,0x84,0x30,0xba, 0x80,0x10,0x9a,0x32,
+ 0x05,0xf9,0x53,0xae, 0x97,0x82,0xa2,0x70, 0x61,0x3d,0x4d,0xd7, 0x17,0x8f,0xb6,0xd3,
+ 0x79,0x29,0xfa,0xc7, 0x9e,0xc4,0xde,0x91, 0x2f,0xb4,0x4b,0xe1, 0x42,0xc0,0xf8,0x28,
+ 0x43,0xc7,0x06,0x42, 0x10,0xaa,0x40,0x28, 0x49,0x40,0x09,0x48, 0x5a,0x59,0xf8,0x87,
+ 0x8e,0x43,0x3e,0xd3, 0xb8,0x17,0x1d,0xb5, 0x59,0x83,0x74,0x31, 0x11,0xa5,0xf2,0x8e,
+ 0x1e,0xbe,0x2d,0xbb, 0x18,0xf6,0x78,0x44, 0x82,0x40,0xf4,0xd0, 0x59,0xe8,0xd1,0xcf,
+ 0x90,0x25,0x0b,0x21, 0xf7,0x8f,0xc2,0x37, 0xe6,0xb3,0xd5,0x79, 0xe6,0x68,0x15,0x04,
+ 0x91,0x29,0x78,0x66, 0xf5,0x67,0x1f,0x54, 0x9f,0x08,0x02,0x24, 0xdc,0x29,0x90,0x04,
+ 0xaf,0x5a,0xc1,0xa2, 0x42,0x84,0x25,0x4a, 0x2d,0xc1,0x2b,0x54, 0x9c,0xa7,0x36,0x6f,
+ 0x59,0xe7,0x8d,0x44, 0x8f,0xa3,0xd4,0x91, 0xbd,0x3a,0x1f,0x37, 0x43,0x37,0xef,0x68,
+ 0x5f,0x2c,0x44,0x00, 0xcd,0xd1,0x41,0x1a, 0xe3,0x18,0x56,0xb0, 0x02,0x61,0x93,0x16,
+ 0xe6,0x2c,0xf4,0xd5, 0x25,0x52,0x41,0xa4, 0xa3,0x10,0xa4,0x47, 0x2b,0xdc,0xc5,0x89,
+ 0xae,0x41,0xa0,0xc7, 0x36,0xad,0x4e,0x34, 0x32,0x94,0x02,0xc0, 0x25,0x0d,0xa7,0x81,
+ 0xf3,0xf3,0x76,0x77, 0x0e,0xc7,0x67,0xbf, 0xa2,0x9a,0xe1,0x40, 0xc1,0xef,0x47,0x39,
+ 0xc4,0x39,0x4a,0x2c, 0x03,0xa6,0x0c,0xe1, 0x18,0xba,0x09,0xc1, 0xc3,0x00,0x50,0x4d,
+ 0x0b,0xde,0xbc,0x65, 0x73,0x39,0x9b,0x1c, 0x66,0xe2,0x44,0xb3, 0x55,0xed,0x0c,0x3f,
+ 0x66,0x06,0x92,0x9d, 0x9f,0x98,0xfe,0x10, 0x1e,0xa0,0xf3,0xf1, 0xe8,0xfe,0x55,0xeb,
+ 0x81,0x55,0x77,0xa4, 0xd3,0x57,0x2a,0xc1, 0xa0,0xcc,0xc9,0xa9, 0x83,0x32,0x06,0x0c,
+ 0xa7,0x0c,0xa4,0xaf, 0x23,0x5e,0xf3,0x72, 0x3f,0xf1,0xe6,0x59, 0x5b,0x4f,0xba,0xff,
+ 0xad,0xfc,0xbf,0xd4, 0xed,0x5e,0xa6,0xc6, 0xb2,0xbc,0x84,0xf1, 0xa7,0x24,0x80,0x07,
+ 0x66,0xee,0x58,0x79, 0x77,0x1a,0x89,0xc9, 0xa1,0xeb,0x29,0x02, 0x34,0xa1,0x03,0xd7,
+ 0xf0,0xee,0xfe,0xaa, 0x06,0xfd,0x80,0xd9, 0x0e,0x5a,0xa0,0x35, 0x71,0x74,0x76,0xbd,
+ 0x45,0x2e,0x96,0x01, 0x19,0xbc,0x12,0x06, 0x18,0x79,0x74,0x7d, 0x46,0x29,0x8d,0x0f,
+ 0x5e,0xe0,0xc4,0xf4, 0x63,0xcc,0xd7,0xdd, 0xd3,0xdf,0xf8,0x10, 0x23,0x85,0xb6,0xf0,
+ 0xf2,0x77,0x3e,0x61, 0xf5,0xaf,0xcd,0xed, 0x14,0x50,0x51,0x23, 0x21,0xe1,0xb0,0xec,
+ 0x51,0x02,0x73,0x97, 0x84,0x9d,0x67,0x7e, 0x44,0xe4,0x93,0xbc, 0x6b,0x7e,0x5b,0xf6,
+ 0xdc,0xaf,0x55,0x85, 0x3b,0xfe,0xca,0xdc, 0xad,0xd2,0x68,0xc6, 0xde,0x6c,0xfd,0x8f,
+ 0x91,0x69,0xe6,0xe9, 0x98,0x0e,0xcb,0xcb, 0x2b,0xbe,0x0c,0xaa, 0x4b,0xe7,0xa8,0xd5,
+ 0xf1,0xc3,0xd8,0xca, 0x09,0x88,0xf5,0xbe, 0xf3,0xe5,0x5f,0x9f, 0xba,0x28,0xa6,0x19,
+ 0xf1,0xd1,0xf7,0x6f, 0x7a,0xed,0x3a,0x50, 0x33,0x75,0x4c,0x6b, 0x5a,0xd5,0xc8,0xe9,
+ 0x58,0xfd,0x66,0x6e, 0x24,0xc3,0x47,0x1d, 0x4d,0x33,0xb8,0x69, 0xd2,0xfb,0xb1,0xa6,
+ 0x4c,0xd4,0x38,0x55, 0x1d,0x39,0x1d,0xb6, 0xe3,0x87,0x95,0x44, 0x53,0x5f,0xcc,0xfe,
+ 0x29,0x18,0x2d,0xa5, 0xeb,0x35,0xd2,0xfe, 0xd6,0x2b,0x89,0xf4, 0x24,0x51,0xb7,0x71,
+ 0x26,0x53,0x98,0xef, 0x3d,0x6c,0x5c,0xc8, 0xb6,0xd1,0x7b,0x6b, 0x6f,0x09,0xd5,0xc3,
+ 0x92,0xf5,0xc8,0xdc, 0x78,0x18,0x2b,0xb6, 0x93,0xb7,0xc7,0xc3, 0xf7,0x33,0x8a,0x63,
+ 0x88,0x96,0x15,0x95, 0x72,0x0f,0x17,0xda, 0x6e,0x96,0x10,0x0d, 0xe9,0x76,0xf5,0xef,
+ 0x28,0xe7,0x85,0xbe, 0x99,0x5f,0x93,0x44, 0x41,0xd6,0x21,0xd6, 0xd6,0x51,0x52,0xf5,
+ 0x34,0xdf,0xb6,0xc5, 0x9f,0x89,0x12,0x6b, 0x7b,0x6d,0xd4,0x92, 0x74,0xe0,0xd6,0x2e,
+ 0x63,0x57,0xa1,0x83, 0xa4,0xc2,0x79,0xcc, 0xea,0xfe,0x99,0x49, 0x6e,0x04,0x2a,0xd2,
+ 0xd0,0x05,0x8e,0x91, 0x3a,0x17,0xcb,0xa7, 0x35,0xcd,0x28,0x4e, 0x6e,0xec,0xd6,0x88,
+ 0xf6,0xcd,0xa6,0xc7, 0x79,0x9e,0x41,0xd8, 0x05,0x0b,0xa1,0x45, 0xba,0xcb,0xe3,0x23,
+ 0x78,0xa2,0x7b,0xfd, 0x27,0x95,0x22,0x9e, 0x9a,0xac,0x6c,0x24, 0x23,0x0d,0xe0,0x97,
+ 0x11,0x9f,0x76,0x56, 0xb9,0xf3,0x16,0x30, 0x4a,0x02,0xd2,0xf0, 0x9c,0x2d,0x50,0x64,
+ 0xe1,0xdf,0xfe,0x3b, 0xf7,0x9a,0xe5,0x59, 0xe4,0x97,0xbf,0x6e, 0xea,0x08,0xb9,0x23,
+ 0x59,0xaf,0x2d,0x19, 0xaf,0xaf,0xd6,0x4c, 0x93,0x61,0xc0,0xc8, 0xa1,0x94,0x8a,0x8e,
+ 0x2e,0xf2,0xd2,0xde, 0x67,0x66,0x75,0x57, 0x76,0x59,0x56,0xd7, 0x8d,0x9e,0xf1,0x33,
+ 0x56,0x4d,0xbc,0x9c, 0xdc,0xf8,0x9a,0x96, 0x14,0x73,0x33,0xaa, 0x6a,0x23,0xbd,0xc6,
+ 0x45,0xca,0x1c,0x56, 0xb7,0x4f,0x21,0xdd, 0x18,0xaa,0xe8,0xde, 0xe2,0xe6,0x38,0xb6,
+ 0xc8,0x66,0xb2,0xa9, 0xc9,0x20,0xf4,0xbd, 0x3d,0x6c,0x4d,0x77, 0xf4,0xa6,0x3a,0xdd,
+ 0x9d,0x7e,0x95,0x59, 0x1a,0xac,0x2f,0x52, 0xc7,0xa7,0xf5,0x73, 0x2f,0xaf,0xe0,0xe3,
+ 0x92,0x50,0x1f,0x21, 0xbe,0x7c,0x28,0x45, 0xaf,0x21,0x00,0x86, 0x1b,0x63,0xad,0xb2,
+ 0xbb,0x44,0x52,0x31, 0x26,0x74,0xef,0x4e, 0xe3,0xef,0x1d,0xfa, 0x5a,0xdd,0xbb,0x58,
+ 0xad,0x3d,0xac,0x66, 0x6a,0xad,0x82,0x06, 0x11,0x1a,0x2f,0xb0, 0x6f,0x9a,0x46,0x7c,
+ 0xd6,0x67,0x8f,0x47, 0x2b,0x93,0x4c,0x76, 0xf6,0x65,0xa5,0x83, 0x5e,0xf2,0x10,0xca,
+ 0xe3,0x38,0x80,0xad, 0x7b,0xf6,0x67,0x79, 0x17,0xc9,0x59,0xf3, 0xac,0xfb,0x2b,0xa5,
+ 0x18,0x96,0xe3,0xaf, 0x98,0xa9,0x67,0x8a, 0x64,0x3b,0xd9,0x98, 0x38,0x28,0xe8,0xac,
+ 0x5c,0xef,0x51,0x8b, 0x63,0x01,0xee,0x0b, 0xdd,0x4c,0x8b,0xcf, 0x19,0x2e,0x24,0xd5,
+ 0xf7,0x95,0x54,0x67, 0x76,0xab,0x67,0x94, 0xfb,0x0a,0x8e,0x75, 0xe8,0x4f,0xbb,0x21,
+ 0x72,0x5d,0x22,0x49, 0xcb,0x73,0xb5,0x27, 0x21,0x4d,0xb1,0x05, 0x12,0xb5,0x5b,0x77,
+ 0x94,0x9a,0xea,0xaa, 0x86,0xf0,0xad,0x95, 0xa8,0xbd,0x66,0xd0, 0x99,0x2d,0x13,0xe7,
+ 0xe9,0x8f,0xea,0x2c, 0x03,0xbc,0x85,0x86, 0x85,0x95,0x9d,0xfd, 0x9b,0xc1,0x95,0x2b,
+ 0x74,0x61,0x20,0x43, 0x0d,0x8b,0xc0,0x57, 0x86,0x7c,0x4f,0x34, 0xb5,0xa3,0x75,0xfa,
+ 0x2a,0x10,0x69,0x53, 0x68,0xb7,0xca,0x3d, 0x6b,0x2a,0xe6,0xd3, 0x2e,0xe6,0x9b,0x33,
+ 0x98,0xca,0xf8,0x20, 0x1b,0x5d,0x95,0x68, 0x24,0x47,0x7b,0xce, 0xee,0x2c,0xc2,0xad,
+ 0x55,0x27,0x81,0xcf, 0xf6,0x97,0x1e,0xa3, 0x33,0x76,0x90,0x97, 0x82,0xc2,0x6c,0xe9,
+ 0x9c,0xd6,0x9a,0x26, 0x1a,0x33,0x31,0x9c, 0x2d,0x5f,0x77,0x25, 0xc2,0x1f,0x67,0x12,
+ 0xd9,0x63,0x4a,0x87, 0xa2,0x8a,0x7a,0x0c, 0x8a,0xf2,0xcb,0x94, 0xeb,0x7e,0xd7,0x17,
+ 0xf4,0x8f,0xe7,0xfd, 0x1a,0x0b,0xa8,0xa8, 0x3d,0x2c,0xea,0x2f, 0xf2,0x32,0xe9,0x46,
+ 0x7f,0x12,0x91,0x1c, 0xa6,0xc5,0x09,0x28, 0x50,0xd0,0x15,0x37, 0xc7,0xe1,0x67,0xd0,
+ 0x8b,0x0e,0xa2,0x44, 0xcf,0xa8,0x7a,0xfe, 0x07,0xaa,0x87,0x24, 0x44,0xcd,0x4c,0x14,
+ 0xa7,0x38,0x50,0x4f, 0x23,0x4f,0x47,0xc3, 0xbd,0xcd,0xbf,0xa6, 0x47,0x63,0x31,0xb7,
+ 0x4d,0xa4,0x58,0x10, 0xa5,0x61,0x9e,0xe5, 0xdb,0x6e,0x41,0xd0, 0xcb,0xd2,0xd0,0xdc,
+ 0xca,0xe3,0xdd,0x2e, 0xb9,0xa2,0x6f,0x8f, 0xb6,0x67,0x16,0x56, 0x12,0xe8,0xc6,0xbf,
+ 0x6d,0x79,0x75,0x90, 0xf3,0x92,0x27,0x72, 0xad,0x74,0x99,0xc2, 0x3e,0x73,0xe3,0x20,
+ 0x88,0xec,0xdf,0xcf, 0xd1,0x97,0x09,0x28, 0xec,0xcf,0xb8,0x22, 0xa9,0x24,0x7b,0x0a,
+ 0x7e,0xdd,0x3a,0xec, 0xab,0x33,0xc6,0x34, 0x10,0x7b,0xa5,0xc1, 0xb4,0x1e,0x36,0x56,
+ 0x51,0x2b,0x95,0xcc, 0x8d,0x59,0xca,0xf3, 0x9b,0xd4,0xc0,0x65, 0xea,0x13,0x97,0x55,
+ 0x30,0xe8,0x5c,0x95, 0xda,0xb2,0xdb,0x54, 0x0b,0xc3,0x39,0xb7, 0x8a,0x9e,0x51,0xac,
+ 0xd1,0x98,0xb7,0x8d, 0xb5,0x97,0x02,0xc4, 0x22,0x65,0x5e,0x37, 0xe2,0x9b,0x13,0xdf,
+ 0x21,0x80,0x43,0xa2, 0xa1,0x5d,0x58,0xba, 0xa8,0x86,0xde,0xaa, 0x71,0x14,0x67,0xc9,
+ 0xc6,0x2b,0xc2,0x92, 0x50,0x23,0xd4,0x25, 0xc8,0x46,0xf9,0xdb, 0xbe,0x3e,0x4b,0x20,
+ 0xe1,0xee,0x09,0x13, 0x8c,0xdd,0xf7,0x94, 0x88,0x64,0x40,0xaf, 0xb0,0x54,0xba,0x2a,
+ 0x6b,0x03,0xf4,0xc3, 0xe3,0x89,0x99,0x20, 0x33,0xbe,0xac,0x87, 0x36,0x5e,0xad,0x82,
+ 0x55,0xa2,0xf1,0x99, 0x55,0x4b,0x8f,0xce, 0x31,0x24,0x25,0x3d, 0x24,0x24,0x20,0x38,
+ 0x99,0x0c,0x46,0x31, 0x38,0x4d,0x55,0xdd, 0x4b,0x4b,0x47,0x09, 0xef,0xdd,0x84,0xcd,
+ 0xdc,0x36,0x93,0xb6, 0xdb,0xec,0xf3,0x2e, 0x20,0x3c,0x0e,0x39, 0x4d,0x60,0x16,0x7b,
+ 0xf5,0xa9,0x77,0x54, 0x5e,0x3c,0x59,0xd2, 0xad,0xdb,0xfe,0xef, 0x94,0x87,0xf1,0xf7,
+ 0x82,0x74,0x8f,0xa5, 0x72,0x8d,0x7c,0x5c, 0xde,0xe0,0xef,0x10, 0xcf,0x07,0x5f,0x68,
+ 0xa5,0x60,0xe0,0xbe, 0x81,0x20,0x22,0xac, 0x66,0x2e,0x8e,0x2b, 0x51,0x64,0xc2,0xb3,
+ 0x47,0x5b,0x38,0xc6, 0x2c,0xc9,0x58,0x2b, 0x0a,0x72,0xcc,0x99, 0x1c,0x5a,0x11,0xce,
+ 0xcc,0x35,0xfe,0xd6, 0xbe,0xa6,0x95,0x71, 0x1a,0x8c,0x0f,0xc5, 0xb7,0x5e,0x87,0x0f,
+ 0x06,0x51,0xa7,0x2e, 0x23,0xe5,0xe2,0x21, 0xdd,0xa7,0xba,0xe9, 0x48,0xbb,0x30,0xfc,
+ 0x45,0x7e,0xd2,0x77, 0x26,0xa7,0x9f,0x27, 0x1c,0x1a,0x48,0x9d, 0x15,0xf7,0xfa,0xa4,
+ 0x23,0xbc,0x80,0xf2, 0x1a,0x03,0x4e,0x89, 0xfe,0x7d,0x15,0x48, 0x68,0xcf,0x3f,0xca,
+ 0xf9,0xb1,0x84,0x1b, 0x90,0x6f,0xb8,0x48, 0x2e,0xc5,0x2c,0x53, 0x00,0x05,0xb1,0x34,
+ 0xc3,0xfa,0xca,0x3f, 0xfd,0x03,0xa1,0x5b, 0xfe,0xa4,0x70,0xc2, 0x77,0x1a,0x68,0x72,
+ 0x99,0x3f,0x43,0x70, 0x0f,0x0f,0xa7,0x51, 0xdf,0xf5,0x6c,0x8f, 0xe8,0x65,0xe9,0x22,
+ 0x04,0x8c,0xdc,0xb7, 0xde,0xe0,0x9a,0x33, 0xd8,0x43,0xb9,0xe0, 0x3e,0xcb,0xe1,0xdd,
+ 0xf8,0x36,0xd3,0x2a, 0x1e,0x56,0xe6,0x9a, 0x32,0x37,0x76,0x64, 0x2e,0xfe,0x64,0x65,
+ 0x46,0x15,0xfd,0x11, 0xf0,0x7d,0xdf,0x69, 0xaa,0xc3,0xb1,0x49, 0xd6,0xf2,0xbd,0xfc,
+ 0x4d,0x3f,0x38,0xa7, 0x13,0xfb,0x5a,0x48, 0x4d,0x3d,0xce,0x43, 0x1a,0x08,0x4c,0x8a,
+ 0x00,0x4c,0x5a,0x0a, 0xb3,0x0b,0x0e,0x9e, 0x3c,0x2d,0x95,0x78, 0xe6,0x27,0x00,0xf3,
+ 0xdb,0x48,0xc0,0x49, 0x06,0x0a,0x19,0x46, 0xdc,0x3f,0xe5,0xe5, 0xe4,0x70,0x19,0xf1,
+ 0x99,0x64,0x0e,0x79, 0x01,0x2d,0xc6,0xde, 0xc9,0x65,0x44,0xc0, 0xfe,0xe6,0x07,0x94,
+ 0x52,0x60,0xe9,0xb4, 0x2c,0x82,0xae,0x41, 0x48,0x0e,0x35,0x74, 0xc1,0x95,0xe1,0x1d,
+ 0xa1,0xea,0x47,0x58, 0x17,0x79,0x14,0x90, 0x76,0x1f,0x12,0x13, 0x0d,0x1d,0x6b,0x61,
+ 0xe9,0xb0,0x22,0x58, 0xa0,0xfc,0xfc,0x06, 0x42,0x3e,0xa9,0x0c, 0xa9,0xdd,0x37,0x2b,
+ 0x70,0x39,0xf3,0x7b, 0x94,0xfe,0x4f,0xf8, 0x2e,0x66,0x35,0xed, 0x33,0xd3,0x36,0x1d,
+ 0xd2,0x45,0x9e,0xa1, 0xef,0x8a,0xa3,0xc0, 0x51,0x9e,0x9c,0x84, 0x67,0x5c,0xb2,0x3b,
+ 0x1b,0xf9,0xcc,0x1c, 0x93,0x45,0xfa,0x0b, 0xd4,0x85,0xde,0xd2, 0xa7,0x25,0xf8,0xff,
+ 0x4d,0xfb,0x61,0x56, 0x2f,0x1c,0x71,0xb9, 0x3e,0xa6,0x87,0x69, 0x45,0x39,0x67,0xdf,
+ 0x1a,0x73,0x1a,0x73, 0xc0,0x9b,0x80,0x6e, 0x0d,0x27,0x3a,0x62, 0x48,0xc8,0x2a,0x1c,
+ 0xc1,0x83,0xf8,0x49, 0x26,0x7f,0xd9,0xc6, 0x5d,0xa9,0x16,0xb3, 0xbc,0x3d,0xf6,0xe3,
+ 0xcf,0xf6,0x95,0x7d, 0x61,0xa3,0x47,0xdb, 0xf4,0x95,0xeb,0xdc, 0xb6,0x51,0x04,0x82,
+ 0x77,0xf9,0x8c,0x3a, 0x3d,0x18,0x37,0x93, 0xf8,0x3d,0xeb,0x75, 0xd8,0x56,0xc8,0x01,
+ 0xa9,0xe7,0x61,0xbf, 0x1e,0x1d,0xcd,0x5e, 0xaa,0x9f,0xdd,0xed, 0x7e,0x24,0x1c,0xda,
+ 0x22,0xa2,0xfd,0x85, 0x35,0x47,0xa5,0xf5, 0xeb,0x20,0x88,0x95, 0xd6,0xec,0x9e,0x0c,
+ 0x48,0x54,0xac,0xe3, 0x35,0x7d,0xde,0x3d, 0x86,0xe1,0x72,0x7c, 0xed,0x1e,0xde,0xb7,
+ 0xd5,0x78,0x41,0x9e, 0xd5,0x6c,0x0e,0xce, 0xe3,0xe2,0x7a,0x36, 0x7e,0xdf,0x72,0x2a,
+ 0x6d,0x99,0x40,0x2e, 0x02,0x2b,0xef,0xe3, 0x37,0x99,0xf8,0xc1, 0x51,0x68,0x21,0xe6,
+ 0x8f,0xfe,0x01,0xf8, 0x25,0x16,0x49,0x5a, 0x47,0x14,0xae,0xd8, 0x93,0xd5,0x65,0xb9,
+ 0x56,0x22,0xcd,0x98, 0x6b,0xae,0xda,0x67, 0x77,0xca,0x7a,0x94, 0xaf,0x82,0xc8,0xae,
+ 0xc8,0xa0,0x91,0xce, 0x31,0xff,0x0d,0x14, 0x78,0xe9,0xf2,0xcb, 0x16,0x70,0x3d,0xa5,
+ 0x99,0xee,0x1a,0x3f, 0x3e,0x0b,0x2b,0x3a, 0x17,0x88,0x68,0x7a, 0x8b,0x01,0x23,0xc2,
+ 0x49,0x06,0x09,0x90, 0x55,0x9c,0x3f,0x56, 0x0d,0x80,0x4f,0xfa, 0x94,0xc0,0x03,0xad,
+ 0x72,0x83,0x2e,0x26, 0x88,0x39,0x57,0x58, 0xbf,0x05,0x94,0xb7, 0x77,0x4d,0x8c,0xd8,
+ 0xb9,0x07,0x3a,0x3c, 0x65,0x1a,0x34,0xc3, 0x02,0x17,0xd2,0xa9, 0xf9,0xbd,0x52,0x01,
+ 0x80,0x27,0xa6,0x7a, 0x95,0xc3,0x53,0x6d, 0xdf,0xd3,0x6c,0x1c, 0x66,0x3f,0x4c,0xcb,
+ 0xf7,0xb7,0xa8,0xd6, 0xfb,0x2c,0xfc,0x37, 0x02,0xe2,0x12,0x08, 0x10,0x15,0x27,0xa0,
+ 0x1a,0x84,0x00,0xa6, 0xc5,0x11,0x0a,0x06, 0xd8,0xdc,0x7d,0xf5, 0xf6,0xc2,0xdb,0x5e,
+ 0x75,0x1b,0xc8,0x42, 0x2b,0xc8,0xc8,0xe8, 0x88,0x0b,0xee,0x72, 0x32,0x9d,0xd1,0xd7,
+ 0x5c,0x65,0x6b,0xe9, 0xcc,0x4a,0x64,0x19, 0x16,0x71,0x88,0x16, 0x14,0x8a,0x84,0x34,
+ 0x3a,0x1a,0x4b,0xdb, 0x21,0x12,0xc6,0x26, 0x8d,0x20,0xb9,0x6c, 0x21,0xc2,0xed,0x74,
+ 0x1b,0x16,0x64,0xd8, 0x76,0xb3,0x92,0x6d, 0x2b,0x52,0x6f,0xf1, 0xfa,0x7e,0xbf,0x22,
+ 0x45,0xee,0x05,0xe7, 0x89,0xf1,0x6c,0x83, 0x90,0x84,0x2f,0x6a, 0xd0,0x0b,0x01,0x26,
+ 0x8b,0xc6,0xd3,0x12, 0x84,0xc1,0x00,0xdc, 0x08,0x53,0xf1,0xc7, 0xcf,0xc5,0x23,0x72,
+ 0xba,0xe1,0xa9,0xb6, 0x7d,0x8e,0xce,0x55, 0xce,0x50,0x2e,0x0f, 0xa1,0xb3,0x4e,0xc8,
+ 0xcc,0xca,0xef,0xd8, 0x41,0x6a,0x58,0x53, 0x1d,0x32,0x72,0x4b, 0x76,0x6d,0x2e,0x8f,
+ 0x8d,0x18,0x1b,0x68, 0x47,0x6a,0x62,0xf6, 0x92,0xc4,0x9f,0xbf, 0x91,0x5d,0x87,0x15,
+ 0xf6,0xcf,0x5b,0xa9, 0xd3,0x1a,0x62,0xc2, 0xdf,0x72,0xff,0x0d, 0xfa,0x2b,0x4a,0x9a,
+ 0x6a,0x08,0x81,0x51, 0x51,0x47,0x48,0x1b, 0xe4,0x11,0xdc,0xff, 0x47,0x22,0x40,0x49,
+ 0x00,0x81,0x55,0x3f, 0x3e,0x7d,0x03,0x08, 0xce,0x49,0x18,0x97, 0x57,0x66,0x66,0xac,
+ 0xca,0x41,0x04,0x90, 0x5d,0xec,0x51,0x08, 0x49,0x13,0x80,0x13, 0xff,0x77,0x39,0x73,
+ 0xf6,0xa2,0xaf,0x57, 0xed,0xbc,0x2d,0xce, 0x2e,0xc6,0x9e,0xce, 0xfe,0x2d,0x18,0x45,
+ 0xaa,0xf0,0x79,0x57, 0xc2,0xeb,0xcd,0xd6, 0x6a,0xf6,0xf2,0xab, 0xd4,0x48,0x89,0x03,
+ 0x2c,0x0c,0x28,0x23, 0xc5,0xff,0x19,0xb5, 0x5c,0xf5,0xd1,0x7a, 0xa1,0xb2,0x62,0x5b,
+ 0x0f,0xb3,0xde,0xcc, 0xf3,0x41,0x23,0xcd, 0xe7,0x00,0x85,0x04, 0x47,0xf8,0xde,0x30,
+ 0x46,0xf5,0x1f,0xac, 0xd3,0xfb,0x73,0xcc, 0xf8,0x97,0x9e,0x66, 0x75,0x36,0x54,0x52,
+ 0xb5,0x34,0x97,0x0f, 0x44,0x50,0x56,0xca, 0xa2,0xe6,0x9b,0x45, 0xbe,0xca,0x3f,0x66,
+ 0x35,0x3e,0xc6,0x39, 0x66,0x7e,0x59,0x42, 0xee,0x19,0x56,0x93, 0x30,0x84,0xc9,0x1e,
+ 0x7c,0xfe,0xa0,0xf7, 0x78,0x01,0x88,0xa9, 0xa9,0xd0,0xc3,0x28, 0x6a,0xb9,0xbd,0xd9,
+ 0x9f,0x4e,0x4f,0xaa, 0x20,0x91,0x2f,0x38, 0x20,0x97,0x08,0xb7, 0x2e,0x95,0xd0,0x0c,
+ 0x28,0x96,0xdd,0x5e, 0x73,0xd5,0xca,0xe5, 0x54,0xa7,0x49,0x54, 0x41,0x25,0x08,0x69,
+ 0x90,0xa1,0x03,0x88, 0x00,0x61,0xd6,0x9d, 0x60,0xc7,0x0a,0x4d, 0x8a,0xdc,0x20,0xfe,
+ 0x37,0x4f,0xc6,0x89, 0xb2,0xb3,0x0a,0x68, 0x84,0x02,0x53,0x22, 0xd8,0xe8,0x9d,0xcd,
+ 0x2b,0xd6,0x90,0xab, 0x11,0x02,0xa8,0xad, 0x24,0x9c,0x08,0x93, 0x85,0x0b,0x30,0x32,
+ 0xde,0x06,0xa7,0x85, 0x08,0x6d,0x95,0xae, 0xa5,0x45,0x21,0x19, 0x61,0x25,0x6e,0xa4,
+ 0x1a,0xac,0x53,0x1c, 0xea,0x69,0xbd,0x39, 0x6f,0xcd,0xfb,0xa6, 0x5b,0xbd,0xae,0xa4,
+ 0x36,0xd9,0x24,0xd1, 0x26,0x0e,0xf3,0xec, 0x1b,0x05,0x30,0x9b, 0x49,0xb4,0xd8,0x9f,
+ 0x1a,0x12,0x21,0x85, 0xe4,0x45,0x49,0xa5, 0xbc,0x65,0xa6,0x89, 0x30,0x0a,0x28,0x83,
+ 0x09,0xa9,0xc2,0x96, 0x64,0xcf,0x8b,0xd8, 0xed,0xe4,0x54,0x5b, 0xd2,0x06,0x95,0xea,
+ 0xa8,0xda,0x5f,0x01, 0x6d,0x43,0xfc,0x22, 0x35,0xfb,0x63,0x65, 0xbe,0x99,0x28,0xd0,
+ 0x18,0x78,0xa5,0x50, 0x40,0xd2,0x61,0x93, 0x10,0x2b,0xc0,0x6f, 0x48,0xbb,0xea,0xe3,
+ 0x73,0x4b,0xd6,0xff, 0x5d,0xbb,0xa5,0x28, 0x7b,0x28,0x0e,0x99, 0xbd,0x9c,0xdd,0xcb,
+ 0x21,0xf8,0xbb,0x16, 0x86,0x85,0xe8,0x12, 0xec,0x0c,0x61,0xac, 0xc1,0x30,0xc2,0x5a,
+ 0x63,0xa0,0xb6,0x4a, 0x6c,0x0d,0x7f,0x36, 0xc7,0x00,0x26,0x18, 0x4e,0x82,0x30,0x32,
+ 0x54,0x00,0xe4,0x6e, 0xd7,0x5f,0x67,0x69, 0x65,0x89,0xaf,0x16, 0xd1,0xf9,0x2e,0xf0,
+ 0xdb,0x8a,0x31,0xeb, 0xc6,0x23,0x7a,0x82, 0x48,0x8a,0x82,0xa8, 0x41,0xec,0xfc,0xcb,
+ 0x7e,0xef,0x10,0xe0, 0x63,0x14,0x12,0x3a, 0xe0,0x1d,0x05,0x91, 0x06,0xe8,0x48,0x03,
+ 0xec,0x6f,0x50,0x3b, 0x60,0x10,0x0e,0x0a, 0x3d,0x4a,0x23,0xae, 0xf8,0xdd,0xcc,0x4c,
+ 0x59,0x70,0xe4,0x95, 0x98,0xa4,0x37,0xa0, 0xc9,0x40,0x1e,0x93, 0x29,0x16,0xc0,0x0d,
+ 0x66,0xc3,0x90,0x1a, 0x85,0xb7,0xe0,0x36, 0xe8,0x50,0xfb,0x9d, 0x5f,0x29,0xb9,0xf6,
+ 0x21,0x7c,0x90,0x02, 0x3e,0xfd,0x70,0x35, 0x69,0xef,0xde,0x28, 0x88,0x78,0x9a,0x61,
+ 0x85,0xc2,0xc4,0x44, 0x0c,0x9e,0x9a,0xe2, 0xf7,0xf3,0xdc,0x52, 0x29,0x2c,0x96,0x3c,
+ 0x9d,0xd9,0xb0,0x9c, 0x7a,0x9b,0xc0,0x16, 0x69,0xe1,0xb9,0xf0, 0xc5,0x08,0xa0,0x12,
+ 0xa1,0xb5,0x08,0x27, 0x1b,0x18,0x47,0x7f, 0xc3,0xb6,0x0e,0x48, 0x60,0x4c,0x83,0x11,
+ 0x2c,0xb8,0x34,0xdf, 0xf4,0xbe,0x43,0xb6, 0xb0,0xa5,0x3d,0x4e, 0x9c,0x21,0x2b,0x21,
+ 0xaf,0x1e,0xde,0xd6, 0xca,0x82,0x80,0x7d, 0x0b,0xcc,0xd0,0xf4, 0x46,0xbf,0x51,0x3d,
+ 0x99,0x49,0x76,0xc5, 0x41,0x42,0xe5,0x65, 0x79,0x79,0xf0,0x6d, 0xf2,0x85,0x01,0x1f,
+ 0x62,0x03,0x17,0x79, 0xf1,0xf8,0x1c,0x81, 0x7a,0x4f,0x2a,0xfb, 0x2c,0x97,0xb8,0x81,
+ 0xd5,0x9d,0x23,0x83, 0x8a,0xb0,0x1a,0x2a, 0x22,0x02,0xbb,0x10, 0x5d,0x5a,0xd1,0x24,
+ 0x4b,0x7e,0x8f,0xb3, 0xf4,0xf3,0x3c,0xce, 0xcd,0x84,0xdf,0x8d, 0x59,0x0b,0xb5,0x90,
+ 0xe0,0xc1,0x77,0x8b, 0x15,0x21,0x72,0x01, 0xe8,0xa0,0x8b,0xbf, 0x16,0x30,0x00,0x20,
+ 0x97,0xee,0x05,0x0d, 0x1c,0x41,0x10,0xcf, 0x04,0xd5,0xe3,0x28, 0x71,0x9d,0xe9,0x4a,
+ 0x15,0x07,0x1c,0x56, 0x26,0x6f,0xbe,0x1e, 0x5f,0x97,0x95,0xab, 0xfd,0x1f,0x13,0x23,
+ 0x37,0x29,0x90,0xf4, 0xda,0x72,0x3b,0xad, 0xef,0x55,0x32,0x6c, 0xab,0x38,0xcf,0x15,
+ 0x82,0x18,0xc3,0x7a, 0xe4,0x68,0x47,0x64, 0x50,0xfa,0x0c,0x30, 0x15,0x13,0x16,0xfb,
+ 0x7d,0xbf,0x89,0x1e, 0x4e,0x21,0x8e,0x0c, 0x14,0x03,0x13,0x2d, 0x23,0x8b,0x65,0xd8,
+ 0x1c,0xa8,0x6e,0xfd, 0x8c,0x14,0xc1,0x17, 0x87,0x9a,0xe0,0x74, 0x06,0x1a,0x87,0x0a,
+ 0xbf,0xa5,0x60,0xb2, 0x71,0x1e,0xff,0x5f, 0x17,0xa0,0xde,0xb7, 0xf1,0x9d,0x31,0x5d,
+ 0x27,0xf7,0x43,0x88, 0x8d,0xa2,0x22,0x57, 0x83,0xaf,0x09,0x8e, 0x29,0x1a,0xca,0xf9,
+ 0x12,0xa7,0x60,0x1d, 0x41,0x8a,0x23,0x94, 0x02,0x99,0xc8,0x6a, 0xa7,0xa0,0xf4,0x3e,
+ 0x6a,0x84,0x1b,0xc9, 0x3b,0xda,0x48,0x6f, 0x7f,0xc2,0x09,0x55, 0x1e,0x68,0x3d,0x9b,
+ 0xd8,0xe0,0x2e,0x7e, 0x9b,0xa4,0xcb,0xaf, 0xb8,0xea,0xf5,0xb8, 0xbd,0x7d,0xb7,0x61,
+ 0xe6,0xd9,0x91,0xd5, 0x81,0x1c,0x53,0x31, 0x85,0xb4,0x63,0x18, 0x3a,0x46,0x86,0x9c,
+ 0x0f,0x77,0x03,0x06, 0xbf,0x3e,0x17,0xff, 0x48,0x8e,0xa3,0x89, 0xcd,0x19,0xc6,0x7a,
+ 0x47,0x08,0xe0,0x93, 0xd5,0x0b,0x15,0xc9, 0x07,0x43,0x53,0x7a, 0xb3,0x08,0x97,0x1c,
+ 0x87,0x9c,0x59,0x55, 0x74,0x25,0x0a,0x09, 0x4c,0xa0,0xb3,0x22, 0xd2,0xb5,0xd3,0xff,
+ 0x40,0x7c,0xde,0xd3, 0xe7,0xc2,0xf2,0x8f, 0xe8,0xa8,0x3b,0x90, 0xb1,0xe2,0xdb,0x4e,
+ 0x44,0xf6,0x3f,0x09, 0xcd,0xde,0x9e,0xb2, 0x3b,0x6b,0x54,0xa1, 0xf6,0xfb,0xca,0xd9,
+ 0x4d,0x54,0xb3,0xf4, 0x27,0xeb,0x92,0x9c, 0xf3,0x2a,0xe0,0x6f, 0x0f,0xbc,0x96,0xb9,
+ 0xf5,0x35,0x8f,0x05, 0xd4,0xac,0xda,0x70, 0xc1,0xe8,0x65,0xd4, 0x4f,0x30,0xc0,0x66,
+ 0x5a,0x98,0xa9,0x63, 0x05,0xba,0x09,0x84, 0xb0,0x0f,0x30,0xc0, 0x12,0x1c,0x37,0xe5,
+ 0xb4,0x96,0xf5,0x20, 0xae,0x78,0xde,0x19, 0xa1,0xc4,0xbc,0x0d, 0x3d,0xdf,0xec,0xb7,
+ 0x5c,0x24,0x9d,0x17, 0xc6,0x02,0xbd,0xfc, 0x57,0x59,0x02,0xa9, 0x6f,0xfa,0x2e,0x0a,
+ 0xd3,0x78,0xc7,0x07, 0xd3,0x0f,0x4f,0x50, 0xcc,0x30,0x3d,0x4d, 0x2c,0xac,0x8d,0x4d,
+ 0xa9,0x1a,0x6d,0x76, 0xc2,0xdc,0x9e,0x3a, 0xcb,0x80,0x17,0x32, 0xdb,0xed,0xe5,0xc0,
+ 0x72,0x90,0x38,0xf2, 0x78,0x7e,0x69,0xd1, 0xb5,0x14,0xf6,0xbb, 0x74,0x15,0x05,0x09,
+ 0x60,0x7c,0xe0,0xb1, 0x4e,0x4c,0xed,0x55, 0xcf,0xbb,0x42,0xc4, 0xdd,0xe5,0xc9,0xfa,
+ 0x06,0x4a,0x6c,0x4c, 0x46,0xa4,0xab,0xdb, 0x92,0xa4,0x42,0xd1, 0x9c,0x67,0x01,0x8f,
+ 0xec,0xd9,0xd8,0xee, 0xd7,0x67,0x2c,0x23, 0x16,0xe8,0xb3,0x4a, 0x52,0xcb,0x47,0xc6,
+ 0x4a,0x4c,0xd5,0x57, 0x3b,0x27,0x88,0xf1, 0xf6,0xaf,0x7b,0x7c, 0x3a,0x71,0xdc,0x7f,
+ 0x31,0x75,0x98,0x81, 0x1c,0xe9,0x5f,0x85, 0xe3,0xc8,0x3b,0xcc, 0x6f,0x4a,0x3d,0x6c,
+ 0xe5,0xaf,0x19,0x40, 0x9d,0xc6,0xe3,0xa7, 0xd1,0xce,0xeb,0xcf, 0x26,0x46,0xc7,0xc3,
+ 0x8d,0xdb,0xe7,0x36, 0x4c,0x85,0x52,0x4c, 0x0d,0xd6,0x49,0x1c, 0x46,0x14,0xdf,0x54,
+ 0x55,0xcd,0xb0,0xba, 0x96,0xd4,0xc5,0x9c, 0xd5,0x15,0xa5,0x58, 0x06,0x54,0x50,0x10,
+ 0x07,0x81,0x99,0x49, 0x68,0x4c,0x40,0xd2, 0xe5,0x72,0x23,0xfc, 0xdf,0xa3,0x3f,0x9b,
+ 0x2f,0x4f,0xee,0xc1, 0x1f,0x66,0xb8,0x1d, 0x25,0xb6,0x5b,0x75, 0xe7,0xd1,0xc4,0x0d,
+ 0x6d,0xc5,0x49,0x23, 0x1a,0x7b,0x19,0x24, 0x6b,0xd8,0x85,0x8b, 0x5f,0x15,0x18,0xbd,
+ 0x15,0x8c,0x47,0x8a, 0x06,0x35,0xe0,0x76, 0x0e,0x03,0x90,0xe3, 0x07,0x8a,0xea,0x0b,
+ 0x8f,0x4a,0x9f,0x71, 0xf5,0x70,0x07,0xb6, 0xe9,0x71,0x38,0x5e, 0xe6,0x9f,0x9b,0x96,
+ 0x08,0xfb,0xa4,0x0c, 0x7c,0xb1,0x1b,0x93, 0xbd,0xbc,0xff,0x4d, 0x52,0x49,0xc0,0x49,
+ 0x33,0xf3,0x66,0x5a, 0xd1,0x23,0xdd,0x62, 0xe5,0x20,0xdd,0xcd, 0x64,0xf5,0x78,0x25,
+ 0x32,0x1e,0x7f,0x26, 0xbf,0x47,0x9c,0xde, 0xc3,0x5f,0xea,0xb9, 0xce,0x48,0xe0,0x66,
+ 0xb8,0x73,0xc0,0xf0, 0xf7,0x58,0x1c,0x69, 0x07,0xf8,0xf2,0x1d, 0x57,0x06,0xec,0xef,
+ 0xb9,0x17,0x47,0x69, 0x38,0x98,0xa5,0x06, 0x31,0xc7,0x9c,0x1a, 0x30,0x0c,0xf6,0xa6,
+ 0x01,0x4a,0x33,0x81, 0xd2,0x7c,0xe7,0xa4, 0x43,0xe4,0x4f,0x3a, 0x23,0x3c,0x84,0xcc,
+ 0xcc,0xc6,0x0a,0xc8, 0xd7,0xa9,0x5f,0x0f, 0xe9,0xff,0x36,0xac, 0x01,0x84,0x20,0x61,
+ 0xf1,0x08,0x45,0x98, 0x85,0x05,0x50,0x41, 0x41,0x0b,0x05,0xcd, 0xe6,0xf3,0x6b,0x38,
+ 0x70,0xe8,0x5f,0xb3, 0x27,0xaf,0x45,0x96, 0x28,0x19,0xdb,0x63, 0xd2,0x52,0x19,0x21,
+ 0x4d,0xca,0xf7,0xca, 0xf8,0xa3,0x74,0x22, 0x83,0xc8,0xe6,0x7b, 0x35,0x5a,0xc6,0x7f,
+ 0xdf,0xa3,0x6a,0x93, 0xfd,0x74,0xf4,0x19, 0xd7,0x6c,0x2e,0xe3, 0x5d,0xe3,0xaf,0xc5,
+ 0xfe,0xff,0xb5,0xcd, 0xab,0xcb,0xdb,0x79, 0x8a,0xd3,0xe2,0x42, 0x23,0x74,0x88,0x04,
+ 0x90,0x63,0x09,0x10, 0xdb,0x4c,0x68,0xdd, 0x9f,0x56,0x51,0x0d, 0x05,0x76,0xa9,0x27,
+ 0x01,0x00,0x02,0x20, 0x42,0x04,0x21,0x31, 0x90,0x08,0x44,0x04, 0x45,0xe2,0x1a,0x12,
+ 0x00,0x08,0x04,0xa2, 0x69,0xb4,0x09,0xa2, 0x13,0x14,0xdb,0x86, 0x86,0xdb,0x63,0x06,
+ 0xd3,0x18,0x36,0x21, 0xb4,0x81,0xa6,0x81, 0x8e,0x4a,0x8d,0x0c, 0xa4,0x9f,0x29,0xc9,
+ 0xc1,0x49,0x02,0xdb, 0xf8,0x0f,0xec,0x2c, 0xf0,0x0e,0xe2,0x77, 0x67,0x0d,0x85,0xa4,
+ 0x5c,0x7e,0x21,0x33, 0x65,0xdd,0xb7,0x18, 0x34,0xd0,0x91,0xe9, 0xd8,0x3c,0x0a,0x59,
+ 0x86,0x10,0x35,0xf0, 0xc0,0x18,0x03,0x2e, 0x52,0x04,0x13,0x3a, 0x07,0x58,0x1c,0x3d,
+ 0x4f,0x8d,0x04,0x16, 0xd0,0x56,0x85,0xc6, 0x57,0x28,0x4f,0x1a, 0xe4,0x7f,0x52,0xd5,
+ 0x22,0xc3,0xb6,0x81, 0x40,0x01,0xc8,0xc0, 0x54,0x23,0xb0,0x76, 0xfd,0xfe,0x7a,0x22,
+ 0x28,0x61,0x44,0xad, 0x34,0x4b,0xd2,0x76, 0x16,0x56,0x08,0x9b, 0x8c,0xd8,0x50,0x70,
+ 0x79,0x2d,0x31,0x11, 0x18,0x9a,0x85,0xc0, 0xc9,0x97,0x34,0x50, 0x30,0xb3,0x1f,0x6d,
+ 0xd3,0x1e,0x30,0xf3, 0x61,0xbf,0xda,0x71, 0x78,0x49,0x8f,0x0a, 0x44,0x18,0x35,0x3d,
+ 0xaa,0x14,0xd5,0xff, 0x8e,0xd0,0x20,0x6d, 0x52,0x41,0xc0,0x7c, 0xda,0xaa,0xad,0x0b,
+ 0x4c,0x6b,0x69,0x5d, 0xc0,0x78,0x02,0x4d, 0x7a,0xf5,0x6b,0xdf, 0x53,0x83,0x4d,0x14,
+ 0x14,0x04,0x58,0x54, 0x10,0x16,0x19,0x85, 0x71,0x43,0xdd,0x70, 0xb7,0x15,0x47,0x53,
+ 0x5d,0x14,0x8e,0x6d, 0x02,0x8a,0xf6,0xff, 0x92,0xdc,0xe9,0xbb, 0x0b,0x76,0x8c,0x3c,
+ 0x2c,0x78,0x94,0x3b, 0x53,0xbd,0xd1,0x16, 0x28,0x4a,0x80,0xe3, 0xe6,0x32,0x0f,0x13,
+ 0x27,0x45,0x14,0x4e, 0xb4,0x4a,0x61,0xd7, 0x0e,0xd0,0x2d,0x73, 0x48,0x2a,0xda,0x80,
+ 0xe3,0x4b,0x40,0x6e, 0x7f,0xf7,0x4a,0xab, 0xd2,0xa5,0x2b,0x74, 0x62,0xe2,0xe2,0x8e,
+ 0x4c,0x8f,0x49,0x9e, 0x3f,0xd7,0xf0,0xba, 0x4a,0x69,0x9e,0xa0, 0x10,0xdf,0xd5,0x61,
+ 0xb1,0xc1,0x4b,0x6c, 0x7f,0xf9,0xcd,0xde, 0xfc,0x93,0x7a,0x2b, 0xa8,0xe7,0x85,0x14,
+ 0x62,0x65,0xa5,0x48, 0xc0,0xb5,0x65,0xbe, 0x64,0xa8,0x54,0x4c, 0x44,0x10,0x3f,0x8d,
+ 0x97,0x64,0x55,0x98, 0xce,0x66,0x98,0x63, 0x55,0x5a,0x5e,0xb9, 0x39,0xfb,0xfb,0xe1,
+ 0x9c,0x97,0x8f,0x8a, 0x0f,0xe3,0x86,0x2a, 0x27,0xbb,0x71,0x2a, 0x6e,0x50,0x43,0xb5,
+ 0xdb,0xef,0x61,0xd4, 0x06,0xc5,0x60,0x88, 0x39,0x7e,0xfb,0xfb, 0x8a,0x49,0x81,0xf9,
+ 0xaf,0x3d,0x0c,0x28, 0xd6,0x74,0xdf,0x7a, 0xd2,0xf7,0x55,0xcb, 0x7c,0x07,0xd7,0xb0,
+ 0xc5,0x68,0xc0,0xd8, 0x73,0x3f,0xf6,0x9a, 0x3e,0xe7,0xb6,0x83, 0x07,0xb2,0x83,0x23,
+ 0x98,0x83,0xc3,0x62, 0x30,0x70,0x90,0xb2, 0x46,0x93,0x69,0x8d, 0x8f,0x4d,0xa0,0xee,
+ 0xb1,0x92,0x4b,0x8b, 0xee,0xfb,0x4a,0xab, 0x18,0x13,0xa1,0xaa, 0xc0,0xfc,0x0a,0x75,
+ 0xaf,0xe1,0x8c,0xf7, 0x70,0x6d,0xc0,0x20, 0xfb,0x59,0xae,0x00, 0xbe,0xe4,0x8c,0x58,
+ 0xf8,0xfe,0xfb,0xae, 0xfe,0x9b,0x54,0x78, 0x35,0x9b,0x70,0x14, 0x76,0x83,0x0b,0x8f,
+ 0x65,0x11,0x85,0xb5, 0xc7,0xb2,0x8f,0xf0, 0x98,0xa1,0x52,0xad, 0x74,0x61,0x58,0x75,
+ 0xb9,0xf2,0x82,0xa4, 0x92,0x82,0x55,0xae, 0x5c,0xf0,0x62,0x6f, 0x0e,0x46,0x3d,0xef,
+ 0x11,0xab,0x5d,0xf2, 0xf3,0xce,0xae,0x29, 0xc2,0xde,0x13,0xbf, 0x5d,0xd0,0xd3,0x60,
+ 0x1c,0x6f,0x35,0x17, 0xbf,0xb6,0x83,0x8f, 0x08,0xa9,0x15,0x7e, 0x43,0x84,0x32,0x8d,
+ 0x1b,0x93,0xb2,0x8a, 0xdb,0xb0,0xcf,0xa1, 0x09,0xa5,0xd3,0xf6, 0x5f,0x0b,0x5b,0xcf,
+ 0x43,0xe3,0xf8,0x7d, 0x2f,0x9d,0xa2,0x17, 0x1f,0x37,0xf4,0xb9, 0x90,0xc1,0x71,0xa6,
+ 0xf1,0x8c,0xb8,0x33, 0xc8,0x82,0x2c,0x7e, 0x9e,0x3d,0xf2,0x62, 0xd6,0x42,0xae,0xf6,
+ 0x46,0xff,0x84,0xee, 0xbe,0x45,0xfc,0xb5, 0xe3,0x3f,0x02,0xfd, 0xd7,0x91,0x13,0x96,
+ 0xc3,0xc0,0xd1,0xde, 0x3a,0xa9,0x71,0x9d, 0x5e,0x35,0x9a,0x44, 0xb7,0xc8,0x34,0x05,
+ 0x60,0x45,0xf1,0xb6, 0x6e,0xb4,0xbd,0xc3, 0x69,0x34,0x49,0x46, 0xab,0x83,0xee,0xf1,
+ 0x28,0x9b,0x56,0x46, 0xd1,0x2a,0xee,0xbb, 0x0a,0x7e,0xc2,0x37, 0xe7,0xdc,0xdf,0xa6,
+ 0xf3,0xf6,0x64,0x0b, 0xc4,0x6f,0x9d,0x69, 0x94,0x01,0x2e,0x55, 0x9a,0xb0,0x85,0xd7,
+ 0x1d,0xa1,0x21,0x83, 0x8a,0xce,0x69,0xa3, 0x49,0x6b,0x2b,0x26, 0x16,0xe4,0xd5,0x3c,
+ 0x84,0xfd,0x7d,0x26, 0x5f,0xc7,0x9f,0xf2, 0x61,0x1d,0x7b,0xef, 0xd4,0xb6,0xd1,0xbb,
+ 0xad,0x9e,0xd2,0xf5, 0x03,0x83,0xa7,0xc6, 0x6f,0x52,0x15,0x2d, 0xcd,0xf5,0xc3,0x1f,
+ 0xb7,0x42,0xb2,0xdb, 0xff,0x8f,0xa9,0x83, 0xb8,0x8f,0xa7,0x25, 0x61,0x54,0xa8,0x7c,
+ 0xb1,0xbb,0xb5,0x8c, 0x94,0x1d,0x9b,0x27, 0x69,0x27,0x52,0xdc, 0x6f,0x8b,0x84,0x15,
+ 0x68,0x40,0x9a,0xbd, 0xfd,0x9d,0xa7,0xd7, 0x81,0x5a,0x03,0x8c, 0xab,0x66,0xec,0x6b,
+ 0x2f,0xbd,0x1c,0xaa, 0x18,0x2d,0xb7,0x43, 0x5e,0xfe,0x84,0x9b, 0x1b,0x0d,0xb2,0x7e,
+ 0x86,0x19,0xaf,0x42, 0xc6,0x8a,0xa9,0x92, 0xda,0xbe,0x8d,0x7e, 0xc7,0xca,0x69,0xcb,
+ 0xf4,0xc9,0xe2,0xb3, 0xdd,0x8a,0x76,0x31, 0xdd,0x7e,0x25,0xdc, 0x19,0xaf,0x7a,0xe9,
+ 0x2f,0x9a,0x4d,0xf3, 0x2b,0x6c,0x9c,0x06, 0x2d,0xe9,0x9a,0xd1, 0x24,0xb3,0x92,0x6c,
+ 0xf5,0xd0,0xdd,0xac, 0xfe,0x5f,0xab,0xfa, 0x3f,0x2c,0xfd,0x67, 0xbd,0xc3,0xe9,0xe4,
+ 0xbf,0xec,0x6d,0xd6, 0xcf,0xd2,0x36,0xa1, 0x7f,0x03,0xdb,0xb6, 0x11,0x2c,0x03,0x7a,
+ 0x97,0x90,0x62,0x2f, 0x8d,0x4b,0x50,0x8a, 0x52,0x25,0xac,0xd8, 0x3d,0x43,0xa1,0x09,
+ 0x9b,0x85,0x57,0xd2, 0x5a,0x8b,0x77,0xf3, 0xe3,0x33,0xb3,0xdb, 0xc1,0x1f,0x74,0xc7,
+ 0x99,0xdd,0x60,0xe8, 0x30,0xed,0x5f,0x87, 0xea,0xe4,0x67,0xd2, 0xde,0x6e,0xf5,0xab,
+ 0x63,0xf4,0x15,0x60, 0x86,0x3c,0x87,0xeb, 0x60,0x82,0xc0,0x8b, 0xd6,0xc2,0xb4,0xeb,
+ 0xae,0xd6,0x32,0xfb, 0x21,0x6a,0xb5,0x04, 0x36,0x73,0x14,0x76, 0x53,0xae,0x6a,0x1e,
+ 0x3e,0x88,0x49,0x3b, 0x89,0x83,0xbc,0x62, 0xb7,0x63,0xcd,0x67, 0x54,0xa9,0x0c,0x2b,
+ 0x7a,0xaa,0x9b,0xfc, 0x90,0xc8,0x33,0x65, 0xb3,0x2c,0xd6,0x41, 0xfe,0x9f,0xa7,0x53,
+ 0x78,0xba,0x78,0x70, 0x0b,0x26,0xee,0x15, 0x07,0x3f,0x8b,0x68, 0x95,0x57,0x78,0x72,
+ 0x99,0x45,0xed,0x70, 0x92,0x9b,0x0d,0xbf, 0x63,0x03,0xc4,0x70, 0x61,0xf1,0x59,0x27,
+ 0x37,0xc6,0x58,0x88, 0xa9,0xde,0x06,0x09, 0x2b,0x00,0x54,0x0f, 0x5b,0xce,0xb5,0xca,
+ 0xca,0x75,0xff,0x50, 0xaa,0x8a,0x17,0xb9, 0xa5,0x88,0x61,0x62, 0x02,0x31,0x81,0xd8,
+ 0x17,0xde,0xb9,0xe9, 0x54,0xd2,0xfa,0xb3, 0x52,0x50,0x1b,0x40, 0xcc,0x5d,0x1c,0x2e,
+ 0xcf,0xb7,0x59,0x0e, 0x6f,0x21,0xda,0xa2, 0xf0,0xea,0x82,0x8b, 0x46,0xc5,0xc5,0x3e,
+ 0xd0,0x93,0x0f,0x11, 0x16,0xa3,0x3c,0xbe, 0x2b,0x01,0xd0,0x5f, 0xee,0xd7,0x3b,0x88,
+ 0x71,0xe3,0xab,0xe4, 0x70,0xb8,0x4f,0xec, 0xbe,0xcd,0xe5,0xf5, 0x5a,0x70,0xc2,0xca,
+ 0xaf,0x44,0xa5,0x96, 0xa1,0xa1,0xa0,0x49, 0x65,0xb6,0xea,0xd4, 0xcf,0x9b,0xd7,0x4f,
+ 0xa4,0x95,0xb3,0x59, 0xe9,0xe5,0xe3,0xe8, 0xa7,0xcc,0x43,0x76, 0x77,0x53,0x32,0x0d,
+ 0x12,0x53,0x1c,0xa7, 0x9e,0x9c,0xa6,0x62, 0x05,0x41,0xc2,0x69, 0x03,0x0a,0x05,0xc3,
+ 0x87,0xdc,0xce,0x6f, 0x18,0x29,0xb9,0x60, 0x67,0xef,0x6c,0x97, 0xb7,0x72,0xd4,0x3d,
+ 0x6e,0x63,0x9c,0x40, 0xc9,0x98,0x91,0xfa, 0x5d,0xcc,0x1d,0x38, 0x9d,0x79,0x9d,0x1e,
+ 0xd6,0xe9,0xfb,0xf5, 0xe9,0x20,0x6f,0xad, 0x76,0x41,0x81,0xc2, 0x9e,0x1d,0x6e,0x51,
+ 0xd0,0xc0,0x78,0x6d, 0xa0,0xe6,0xbd,0xe5, 0xcb,0x2c,0xea,0x4c, 0xec,0x91,0x06,0xf0,
+ 0xda,0x64,0xac,0xe5, 0x4c,0x37,0x18,0x29, 0x39,0xe4,0x8d,0x41, 0xea,0x47,0xe6,0x82,
+ 0xed,0x98,0xb4,0x38, 0x10,0x26,0x34,0xc9, 0x85,0x94,0xd0,0x44, 0x09,0x87,0x65,0xaa,
+ 0xb7,0x6b,0x89,0x7e, 0x7b,0x2f,0xf3,0x19, 0xf4,0x30,0x83,0xcc, 0x1b,0x23,0x00,0xfb,
+ 0xa8,0x08,0x30,0x0c, 0xc0,0x18,0x1d,0xbe, 0xbe,0xb5,0xce,0x1a, 0xae,0x3d,0x81,0x6b,
+ 0x63,0xb7,0xe4,0x51, 0xce,0xcf,0x39,0x97, 0xd8,0x76,0x9c,0xb5, 0xb9,0xdc,0xcb,0xff,
+ 0x99,0x2a,0xdf,0x61, 0x9f,0x7e,0xf8,0xc7, 0xe6,0x9e,0xff,0xed, 0xbb,0xde,0x39,0xf8,
+ 0x70,0x5a,0x1e,0xee, 0x72,0xd1,0xf9,0x48, 0xd8,0xec,0xa8,0x14, 0x2a,0x0e,0xe2,0x08,
+ 0x4c,0x4e,0xeb,0xba, 0x48,0xd1,0xa9,0xe1, 0xe6,0xd7,0xd0,0x0e, 0xb8,0x86,0xf6,0x15,
+ 0xca,0xf3,0x76,0xd6, 0x3d,0x66,0x58,0xa2, 0x07,0x79,0xc9,0xcf, 0x4d,0x2e,0xa0,0xbd,
+ 0x52,0xe1,0x60,0xf9, 0xca,0x28,0xf1,0x77, 0x24,0x4b,0x1a,0xa7, 0xee,0x59,0x7a,0x69,
+ 0xc6,0xfb,0x65,0xbb, 0x96,0xa8,0xef,0x76, 0x7b,0xcd,0x84,0xeb, 0x9b,0xac,0x81,0x32,
+ 0x01,0x72,0x77,0x7d, 0x3b,0x62,0x94,0xc4, 0x0d,0x94,0x6d,0x09, 0x83,0x63,0x1c,0x74,
+ 0x12,0x24,0xc0,0xe7, 0xda,0x30,0x35,0x9a, 0xcf,0xf9,0x6b,0x35, 0x5a,0x4a,0xab,0xe3,
+ 0x16,0x8c,0xa7,0xb7, 0x6e,0x55,0xbb,0x1a, 0xf4,0x50,0x6b,0x89, 0x81,0xff,0xa3,0x84,
+ 0x25,0x76,0x34,0xa9, 0x98,0x72,0xb6,0x47, 0x00,0x9b,0xc1,0x5b, 0x23,0x22,0x1c,0x0e,
+ 0x6e,0xcd,0xde,0x87, 0x24,0x85,0x6e,0x6f, 0x5a,0x3c,0xa1,0x00, 0xae,0xfd,0xa6,0x50,
+ 0x73,0x3e,0xae,0x9a, 0x92,0xd0,0x43,0xd6, 0x00,0x05,0xe6,0xf2, 0x6f,0xbf,0x6f,0x2b,
+ 0x32,0xe9,0xcc,0x53, 0xcc,0x56,0x6b,0x77, 0x06,0xcf,0x43,0x9e, 0xfb,0x26,0x7b,0x8f,
+ 0x66,0xea,0xde,0x32, 0xcf,0x36,0x17,0xc3, 0x1b,0x16,0x75,0xb4, 0xf2,0x66,0x24,0x9a,
+ 0x87,0x5b,0x04,0xff, 0xb8,0xcd,0x40,0x09, 0x8d,0x98,0x90,0x8e, 0x20,0x26,0x91,0xec,
+ 0x18,0x92,0x3f,0xd5, 0xa5,0x96,0xc3,0xc3, 0x69,0x6a,0x86,0x10, 0xfe,0x8d,0x68,0x22,
+ 0x1d,0xc9,0x20,0x89, 0x41,0x0d,0x1f,0xa4, 0x49,0x1e,0xcd,0xa0, 0x86,0x90,0x8e,0x1b,
+ 0x42,0x53,0x68,0x9b, 0x55,0x34,0x20,0x26, 0xd2,0x49,0x50,0x1f, 0x74,0x1a,0x47,0x2d,
+ 0x54,0x00,0xd9,0xc3, 0x18,0xa4,0x1b,0x77, 0x0b,0x14,0xab,0x6a, 0x81,0xcc,0x65,0x48,
+ 0x18,0x09,0xa6,0xf3, 0xb1,0xb3,0xf7,0x15, 0x3c,0x8d,0x66,0x0e, 0x26,0x93,0x97,0x8d,
+ 0x95,0x9b,0xf4,0x4b, 0x71,0x96,0xb4,0x7c, 0xbe,0xb7,0xe4,0x90, 0xe3,0xcd,0xe0,0x2d,
+ 0xf2,0x6a,0x5b,0x7c, 0x57,0x5d,0x9c,0xa1, 0x88,0xf0,0xed,0x17, 0x69,0xce,0xed,0xe9,
+ 0x72,0x65,0x8e,0x27, 0x17,0xa9,0xe1,0x6f, 0x27,0xbc,0xf0,0x17, 0x8d,0xd6,0xdf,0x4c,
+ 0x1a,0x5b,0x9f,0x9a, 0x88,0xd0,0x6f,0x16, 0x0c,0xc2,0xdc,0xfe, 0x78,0xe9,0xbd,0x5b,
+ 0xd2,0xc8,0x6b,0x3e, 0x57,0x19,0x54,0x56, 0xc1,0xc6,0xc5,0xee, 0x15,0x5e,0x87,0x9f,
+ 0xa0,0xbd,0xf2,0x2c, 0xa9,0x64,0xbf,0x3b, 0x1a,0xc4,0xc8,0x61, 0x84,0xdc,0xf5,0x2c,
+ 0x72,0xae,0xa9,0x16, 0xb6,0x60,0x02,0xbe, 0x98,0x00,0x03,0x31, 0x34,0x64,0x2c,0x86,
+ 0x1d,0xfb,0x11,0xaf, 0x66,0xf4,0x13,0x47, 0x52,0xc0,0xef,0x98, 0x0c,0x62,0x45,0x4c,
+ 0x43,0xe7,0xa0,0x20, 0x18,0x33,0x11,0x7d, 0x5e,0xd4,0x92,0xe8, 0x28,0x83,0x9b,0x62,
+ 0x3c,0x77,0x3a,0x94, 0x67,0xc7,0xef,0x59, 0x3b,0xa5,0xb6,0xfa, 0x1c,0xd5,0x9a,0xc2,
+ 0xbf,0x1f,0xd0,0xf7, 0x38,0xf7,0x5f,0xcb, 0xfd,0x79,0xfa,0xf1, 0xd6,0xd0,0x8e,0x03,
+ 0x5d,0x00,0xbf,0xaf, 0xb6,0xf0,0xac,0x67, 0xe9,0x30,0x57,0x6d, 0x7b,0x01,0x5d,0xde,
+ 0xca,0x16,0xe8,0x6b, 0x16,0x22,0x4c,0x0c, 0x66,0x82,0x18,0x36, 0x99,0x73,0x93,0x25,
+ 0x63,0x67,0xa5,0xd4, 0xf4,0x8a,0xd2,0x6a, 0xc5,0xf6,0x1f,0x21, 0xa1,0xff,0x02,0xd2,
+ 0x56,0xee,0x8c,0xd3, 0xc3,0x79,0x3d,0xda, 0xcd,0x75,0xf3,0x74, 0xd7,0x95,0xf0,0x6d,
+ 0x27,0x87,0x10,0xd0, 0xdd,0xf6,0x7b,0x4f, 0x41,0x41,0x40,0xa2, 0x4c,0x93,0x92,0xd2,
+ 0x96,0x6d,0x64,0x40, 0xa9,0xa6,0xf6,0xa2, 0x18,0xae,0x95,0x76, 0x9f,0x91,0x01,0x57,
+ 0xc6,0x5c,0xf2,0x88, 0x92,0x4e,0x6f,0x32, 0xe7,0x47,0x31,0x66, 0x40,0x5e,0xe5,0x72,
+ 0x86,0xa2,0xbf,0x81, 0xc6,0xb8,0x9a,0x6a, 0x32,0xc9,0xc0,0xcc, 0x54,0x42,0xc1,0xb4,
+ 0xc6,0xfb,0xd8,0x05, 0xef,0x09,0x40,0x9b, 0x21,0xae,0x9e,0x50, 0xa5,0x47,0x75,0x90,
+ 0x2d,0x0e,0xcc,0x28, 0x42,0xb0,0x8f,0x2f, 0xb2,0xe4,0xf8,0xd2, 0xd3,0x01,0x99,0x4e,
+ 0xe6,0xa6,0x07,0x17, 0x87,0x15,0xca,0xe6, 0x30,0x93,0x18,0x1e, 0xc5,0x34,0xcd,0xad,
+ 0xae,0x1a,0x51,0x61, 0x48,0xe2,0x0a,0x87, 0x0e,0x49,0x45,0xa5, 0x9d,0xb1,0x16,0xac,
+ 0x53,0x06,0x45,0x30, 0xa4,0x97,0x0e,0x8b, 0x91,0x63,0x83,0x4d, 0x66,0x56,0x71,0x48,
+ 0x92,0x2b,0x26,0x00, 0x49,0xa9,0x24,0xc1, 0xd9,0x34,0x08,0x25, 0xe4,0x90,0x14,0x15,
+ 0x51,0x06,0x70,0xf2, 0x11,0x79,0x02,0x23, 0x20,0x24,0xcb,0x67, 0x36,0x50,0x29,0x13,
+ 0x10,0x02,0x01,0x45, 0x10,0x06,0x6a,0x20, 0x1e,0x0a,0x94,0x49, 0x8c,0x0c,0x83,0x44,
+ 0x4a,0x49,0x04,0x57, 0x77,0x12,0x70,0xec, 0x24,0xa2,0x51,0x59, 0x3c,0x18,0x85,0x6f,
+ 0xad,0xdc,0x35,0xfc, 0x7c,0x59,0xef,0xb4, 0x79,0xbb,0x1b,0x15, 0xac,0x11,0x5c,0xd5,
+ 0x4a,0x8b,0x60,0x20, 0x72,0x19,0x03,0x3a, 0x13,0x1a,0x90,0x72, 0xe9,0x00,0x1c,0x49,
+ 0x20,0x23,0x25,0x40, 0x4a,0x44,0x82,0x42, 0x83,0x06,0x57,0x80, 0x8c,0xa3,0x00,0x92,
+ 0x02,0x00,0x90,0xb1, 0x8c,0xa5,0x23,0x06, 0x21,0xdd,0x50,0x48, 0xc5,0x0a,0xb9,0x52,
+ 0x08,0x21,0xd5,0xcc, 0x08,0x90,0x83,0x44, 0x3c,0xa0,0xc1,0x92, 0x05,0x0c,0x8c,0x22,
+ 0x92,0x8a,0xc6,0x2c, 0x02,0xc8,0x49,0x83, 0x04,0x72,0xa4,0x42, 0x28,0xb1,0x92,0xc9,
+ 0x44,0x20,0xe4,0xc4, 0x18,0x18,0x86,0x94, 0x60,0x20,0x04,0xa2, 0xa1,0x59,0x11,0x42,
+ 0x3b,0xa9,0x50,0xe0, 0x3b,0x33,0x86,0x20, 0x02,0x62,0x10,0x86, 0x80,0xab,0x8e,0xd0,
+ 0xc6,0x9f,0x75,0x97, 0x62,0x7a,0xf7,0x9d, 0x66,0xd3,0x2d,0x52, 0xe0,0x8b,0x50,0x98,
+ 0x3b,0xa9,0x94,0x16, 0xc9,0xa5,0x59,0x95, 0x22,0x8a,0x43,0x18, 0xe2,0xa1,0x4f,0xe9,
+ 0x8e,0x04,0x8d,0xf9, 0x6d,0xa4,0x15,0x23, 0x2f,0x6e,0x43,0x88, 0xea,0xa9,0x21,0x1f,
+ 0x2a,0xd7,0xee,0x67, 0xf0,0xc5,0x6e,0xb2, 0x55,0xb4,0x75,0x72, 0xf4,0x17,0x55,0xd7,
+ 0x36,0xf8,0x9d,0x8e, 0x47,0x3f,0x6d,0x94, 0x70,0xe1,0xc3,0x87, 0xdf,0x7d,0x4a,0x52,
+ 0xad,0xed,0x29,0x58, 0x45,0xf4,0xd6,0x05, 0xce,0x43,0x15,0x6b, 0xe2,0xeb,0x10,0x61,
+ 0x5c,0x69,0xa7,0x6a, 0x7c,0x2b,0x7f,0x9c, 0xeb,0xcd,0x6e,0x5a, 0x06,0x0f,0x01,0x17,
+ 0xc0,0x06,0x28,0xd5, 0xfc,0x1f,0x9b,0x72, 0x11,0x0e,0xa1,0x5f, 0xd9,0x24,0x00,0x3d,
+ 0xf4,0x97,0xa3,0xd6, 0xac,0x09,0xf0,0x7f, 0xc2,0x11,0x93,0xcd, 0xa1,0x51,0x64,0x65,
+ 0x25,0x94,0x44,0x56, 0x54,0x05,0x57,0x78, 0xc9,0xd8,0x10,0x49, 0x10,0x51,0x0a,0x55,
+ 0xe5,0x50,0x5d,0xe8, 0xd4,0x40,0x43,0x4d, 0x72,0xd6,0x0d,0x17, 0x9e,0x2e,0xf2,0xf7,
+ 0x16,0x5e,0x33,0x51, 0x0e,0xeb,0x79,0xf5, 0x73,0xa1,0x81,0xbd, 0xdf,0xbb,0xc8,0xd9,
+ 0x6f,0x91,0xe1,0x44, 0xd7,0x45,0x74,0x33, 0x67,0xef,0x5e,0x3d, 0xe2,0xd0,0x3e,0x9a,
+ 0x82,0x21,0xc5,0xa4, 0x66,0xa5,0x52,0x1a, 0x95,0x58,0x0d,0x86, 0x6a,0x91,0x1b,0x4b,
+ 0x6e,0xab,0x0a,0x17, 0x8c,0x70,0x65,0x10, 0x61,0xa7,0x7e,0xfc, 0x0f,0x54,0x96,0x27,
+ 0x9c,0xf5,0x3b,0x64, 0x96,0x93,0xce,0x5b, 0xf5,0xe6,0xc4,0x8c, 0x94,0x7a,0xdc,0x8f,
+ 0x5f,0xf7,0x7b,0xde, 0x9c,0xfb,0xbd,0x1d, 0x86,0x91,0xb5,0x6b, 0x29,0x12,0x67,0xc5,
+ 0xd8,0xea,0x62,0x50, 0x48,0xdb,0xae,0x6e, 0x7a,0xf4,0x26,0x51, 0x3f,0x13,0xc0,0xed,
+ 0x3a,0xc5,0x76,0x7c, 0x5b,0x7f,0x60,0x41, 0x7e,0xfa,0x8b,0xcb, 0xad,0xd6,0x05,0x73,
+ 0x5b,0x54,0xbb,0x3c, 0x41,0x50,0x82,0xdb, 0x26,0x96,0x62,0x3f, 0x80,0x4b,0xc9,0x2f,
+ 0x48,0x8d,0x5d,0xbd, 0x5d,0xcf,0xa1,0x9a, 0x9b,0xe7,0x46,0x88, 0xe2,0xbc,0x7e,0x02,
+ 0x58,0xdc,0x1d,0x03, 0x80,0x6f,0x8e,0x00, 0x9c,0xdb,0xc9,0x62, 0x2f,0x1f,0xc1,0xcc,
+ 0x21,0x69,0xf2,0x33, 0x6c,0x86,0xa4,0x28, 0x3a,0xe6,0x57,0xd2, 0x56,0xd6,0xf6,0x57,
+ 0xc1,0xb7,0x37,0xed, 0x8d,0x36,0x36,0x36, 0x21,0x8d,0x0d,0xb4, 0xc1,0x20,0x41,0x1b,
+ 0xd8,0x1b,0x51,0x59, 0xa9,0x08,0x80,0x40, 0x22,0x04,0x00,0x20, 0x42,0x21,0x27,0x7f,
+ 0x5d,0xdd,0x4e,0x6d, 0xb6,0xc6,0x0d,0x2a, 0x27,0xce,0x62,0xce, 0x8c,0x34,0x56,0xc8,
+ 0xd2,0xf3,0x72,0xdf, 0xf4,0x7a,0xe0,0x4b, 0x5b,0xe2,0x73,0xbd, 0xbe,0xfb,0x57,0x73,
+ 0x4b,0xd9,0x3b,0x13, 0x9a,0xb7,0x7f,0x9b, 0x3b,0xbe,0x3c,0x31, 0x73,0x5a,0x42,0xad,
+ 0x35,0x12,0xf6,0xc3, 0x45,0x43,0xb3,0x83, 0x6a,0xe9,0x37,0xcc, 0x31,0xa3,0xb2,0x3b,
+ 0xf3,0x11,0x80,0xf8, 0x4c,0x00,0x93,0x70, 0x03,0x55,0x8f,0xba, 0xc5,0x9e,0x2e,0x7c,
+ 0x9f,0x2e,0x94,0xc1, 0xb7,0x35,0xd3,0xd7, 0x8a,0xf5,0x2a,0x2d, 0x86,0x4d,0xab,0x9a,
+ 0x3e,0x1f,0x27,0x51, 0x87,0x87,0xac,0xcc, 0xbb,0xd7,0x97,0xdc, 0x05,0x23,0x81,0xb8,
+ 0x05,0x44,0x81,0x63, 0xed,0xaf,0x97,0xb5, 0x25,0x7c,0x6d,0x62, 0x85,0x2c,0x80,0x1c,
+ 0xaa,0x60,0x7d,0x45, 0x08,0x66,0xba,0xa1, 0xae,0x56,0xca,0x56, 0xcc,0x63,0x18,0xd5,
+ 0xd1,0x52,0xfa,0x58, 0x24,0x92,0xf7,0x1d, 0xc1,0x27,0x7c,0xe0, 0xba,0xe3,0x8e,0x6d,
+ 0x3b,0x75,0x61,0x86, 0x21,0x87,0xde,0xe1, 0x42,0x55,0x2f,0x29, 0xd3,0x1a,0xd5,0xc6,
+ 0xf2,0xd0,0x6e,0x7b, 0x15,0x2c,0xad,0xa8, 0xb5,0x53,0x1a,0x8e, 0x3a,0xb7,0x29,0x8e,
+ 0x4e,0xb0,0x8c,0xa2, 0xaa,0x73,0xc4,0x2d, 0xbd,0x03,0xb1,0x5a, 0x19,0x18,0xe3,0x15,
+ 0xa1,0xe5,0xb9,0x80, 0x8a,0xed,0x73,0x2e, 0x27,0x58,0x80,0x04, 0xc9,0x18,0x6a,0xc8,
+ 0x02,0x21,0x03,0x11, 0x3b,0x95,0x63,0x49, 0x29,0x12,0x04,0x5a, 0x63,0xa0,0x90,0x5b,
+ 0xd2,0x79,0x51,0xeb, 0x2f,0xe8,0x18,0x8a, 0xdc,0xa8,0x60,0x78, 0x77,0x3b,0x18,0x26,
+ 0x10,0x48,0x09,0x4e, 0xa3,0x0c,0xc9,0x68, 0x1b,0x5a,0x56,0xa1, 0xa3,0x2a,0x65,0x29,
+ 0x7b,0x26,0x9f,0xda, 0x83,0xb7,0xbe,0xe0, 0x6b,0x2f,0x78,0xea, 0xfa,0x5e,0x43,0x37,
+ 0x34,0xcd,0xdb,0x98, 0x18,0xd4,0x18,0x88, 0x13,0x6d,0xe9,0xf3, 0xaf,0x76,0x97,0xf8,
+ 0xf9,0x10,0xfc,0xaf, 0x87,0xc6,0xa2,0xee, 0x5c,0xa6,0xaa,0x83, 0xc6,0xd9,0x85,0x20,
+ 0x53,0xa4,0x41,0x1b, 0x27,0x77,0x66,0x46, 0xb2,0x37,0x27,0x89, 0xa9,0xc0,0x79,0x96,
+ 0x19,0xaa,0x00,0x0b, 0x49,0xe7,0xa8,0x63, 0xb4,0x04,0x77,0x85, 0x3e,0x57,0x27,0x35,
+ 0x82,0x77,0x5c,0xbf, 0x01,0xff,0xc7,0x1a, 0xd0,0x23,0xa3,0x7d, 0xd0,0xc8,0xa5,0xa1,
+ 0x14,0x0b,0x70,0x23, 0x82,0x07,0xce,0x60, 0xdb,0x5e,0x1d,0x0e, 0x23,0x59,0x77,0xfd,
+ 0xd4,0xf3,0xf4,0x87, 0x6b,0x39,0x51,0x7b, 0x2b,0xce,0x62,0x88, 0x9b,0x4a,0x02,0x61,
+ 0xe7,0x40,0x65,0xf2, 0xd9,0x15,0x4a,0x20, 0xa4,0x89,0x4b,0xe4, 0x65,0xd3,0xea,0xf1,
+ 0xa8,0xbb,0xbc,0x82, 0xed,0xe9,0xb5,0xfd, 0xf4,0x8e,0xff,0xf3, 0xf9,0x37,0xe8,0x57,
+ 0xd4,0x1a,0xfe,0x8c, 0xef,0xe4,0x84,0x2e, 0x20,0xba,0x45,0xc1, 0xca,0xec,0x52,0x04,
+ 0x3a,0x24,0x36,0x05, 0x14,0x82,0x04,0x74, 0xaa,0x6d,0x9a,0xe8, 0xf0,0xb7,0x35,0x39,
+ 0xba,0xae,0xdb,0xc0, 0x96,0x4d,0x6f,0x1d, 0x46,0x24,0xe2,0x66, 0x16,0x30,0xa8,0x68,
+ 0x06,0xe3,0x8a,0xba, 0xaa,0x8a,0xa5,0x89, 0xd5,0x83,0xc6,0x76, 0x21,0x26,0x3c,0xea,
+ 0xde,0xac,0x4a,0x8d, 0xb2,0x90,0x32,0xf0, 0xf8,0x99,0x06,0x4c, 0xde,0x23,0x31,0x7c,
+ 0x7c,0x25,0xef,0x79, 0x82,0x97,0xcc,0x5a, 0xc7,0xdc,0x53,0xaf, 0x8e,0x06,0xc7,0x5d,
+ 0x73,0x22,0xb4,0x56, 0x1f,0x03,0x1e,0xdf, 0x34,0x66,0x09,0x06, 0x0b,0x11,0xa6,0x4d,
+ 0xa6,0x03,0x6c,0x33, 0x86,0x06,0xc1,0xe5, 0xc9,0xeb,0x6a,0x75, 0x09,0x74,0x34,0x69,
+ 0x04,0x00,0x8e,0x39, 0xa8,0xd4,0x24,0x85, 0x17,0x2e,0x62,0x71, 0x0d,0xd4,0x2a,0x1b,
+ 0x3d,0x41,0x1c,0x80, 0xc2,0x99,0x69,0x72, 0x6d,0x19,0xfa,0x58, 0xcd,0x52,0x60,0xb8,
+ 0xc7,0x88,0x66,0x87, 0x4a,0x9b,0x0d,0x59, 0x59,0xb8,0x20,0xa8, 0x45,0x33,0x0e,0xee,
+ 0x3e,0xbc,0x36,0xb3, 0xbf,0xf5,0xd4,0xd3, 0x04,0xf3,0x79,0xfb, 0x3b,0xdc,0xbc,0xef,
+ 0x5d,0xbd,0x86,0xba, 0x57,0x6f,0x2e,0xe4, 0xd6,0xae,0x89,0x56, 0x8b,0xa3,0xcd,0xee,
+ 0xff,0x47,0x9b,0xe6, 0x4c,0x0a,0x4c,0x88, 0x72,0x82,0x97,0x44, 0x44,0x6d,0x3d,0x33,
+ 0x50,0x41,0x02,0x86, 0x9b,0x72,0x21,0xab, 0xb7,0x4a,0x9c,0x08, 0x9c,0x90,0xbf,0x98,
+ 0x91,0xc7,0xb2,0x54, 0x79,0x40,0x7e,0x30, 0xf2,0xc4,0xa5,0x0d, 0xa8,0xe7,0x1e,0x06,
+ 0x53,0x6c,0x5c,0x9d, 0x55,0x5a,0x36,0xf6, 0x36,0x2e,0x19,0x83, 0x9f,0xc6,0x30,0x07,
+ 0x48,0xd8,0x81,0xe6, 0xfb,0x91,0x63,0xec, 0xf9,0x69,0xe6,0xf2, 0x8f,0x5b,0x6d,0xca,
+ 0xb8,0x83,0x08,0x66, 0x38,0xc1,0x5f,0x02, 0xf0,0x78,0xaf,0x43, 0x90,0x44,0x45,0xf5,
+ 0x56,0x61,0x60,0x72, 0xd8,0x74,0xa6,0x75, 0xa9,0x59,0xbc,0xb9, 0x3f,0xb1,0xa2,0xf6,
+ 0x43,0x9b,0xd8,0xcc, 0x6e,0x45,0x8f,0xed, 0xb5,0x31,0xb5,0x7b, 0x32,0x10,0x84,0x05,
+ 0x76,0xc6,0x09,0xca, 0x10,0x90,0xaa,0x60, 0x90,0x64,0x34,0x90, 0xbe,0x93,0x12,0x82,
+ 0x31,0x8c,0x3a,0xbb, 0xe3,0xf0,0x3c,0xff, 0x83,0x43,0x25,0x36, 0x00,0x9c,0x32,0x48,
+ 0x7d,0xcb,0x9e,0xbf, 0x89,0x43,0x81,0x77, 0x1b,0x59,0x79,0x78, 0x19,0x30,0xd7,0x5e,
+ 0xba,0x1e,0xe9,0xc1, 0xe8,0xeb,0x9a,0xc4, 0x7b,0x5d,0x53,0xa1, 0xf5,0x4a,0x04,0x48,
+ 0xf6,0xd4,0x28,0x9a, 0x81,0xd4,0x63,0x54, 0xa9,0x1b,0xa4,0x47, 0x87,0xf3,0x18,0x72,
+ 0xf0,0x25,0x69,0xc4, 0xb4,0xb3,0xbf,0x33, 0x73,0xdc,0xf7,0x58, 0x13,0xa3,0x35,0x69,
+ 0x15,0x26,0xad,0xc7, 0xe0,0xef,0xf6,0x32, 0xff,0x6b,0xdd,0xb6, 0xb3,0x76,0xdb,0xa0,
+ 0x91,0xc0,0x01,0x39, 0xef,0x7e,0xed,0xdd, 0xda,0x14,0xca,0x07, 0x12,0xda,0x7b,0xf4,
+ 0x28,0x91,0xe4,0xd5, 0xf3,0x30,0xb4,0xd2, 0xf8,0x88,0x40,0x0a, 0x82,0x0c,0xce,0xf8,
+ 0xa5,0xbd,0x17,0xce, 0x54,0x3e,0x9a,0xbf, 0xdf,0x9f,0x0b,0xb8, 0xb1,0x8f,0xde,0xcb,
+ 0x69,0xe2,0xbe,0xc4, 0x2c,0x0a,0x70,0xdd, 0x85,0x3f,0x06,0xd5, 0x1b,0xf2,0x2a,0x61,
+ 0x3d,0xff,0xb1,0x14, 0xb6,0xcb,0xdc,0x44, 0x6b,0x50,0x27,0xe7, 0xd4,0x6c,0xac,0xf9,
+ 0x1b,0x6e,0x42,0xac, 0xb3,0xee,0x19,0x92, 0xe0,0xc3,0x26,0x65, 0x89,0x6d,0x05,0xf4,
+ 0xef,0x26,0x7d,0xd3, 0x2f,0xf2,0xf5,0xc9, 0x53,0x54,0x35,0xd8, 0x69,0xae,0x3b,0xcd,
+ 0x47,0x63,0xb2,0x76, 0x70,0xe1,0x59,0xfa, 0x12,0xe6,0x27,0x5f, 0x4f,0x15,0xad,0xa7,
+ 0x51,0x81,0xff,0x10, 0xba,0x39,0xd5,0xf6, 0xa1,0x20,0x5d,0x10, 0x70,0xbd,0xea,0x90,
+ 0x43,0xeb,0x9f,0x93, 0xf4,0x4e,0x9b,0x25, 0xbb,0xbd,0xe5,0xb8, 0x33,0x09,0x6a,0x6c,
+ 0x8c,0x5b,0x69,0xcf, 0xa5,0x2e,0xf1,0x8f, 0x06,0x77,0x8a,0x0a, 0xbd,0x0d,0x37,0x17,
+ 0xc1,0x86,0xb9,0x28, 0x2c,0x5a,0x6f,0x65, 0x78,0x56,0xc2,0xd8, 0x9e,0x95,0x7e,0xb7,
+ 0x4c,0xef,0x85,0x5d, 0xda,0x13,0x6d,0xc4, 0x98,0x11,0xd1,0xf8, 0x34,0xc6,0x12,0x5c,
+ 0xb5,0xe0,0xc5,0x5f, 0xa1,0x58,0x30,0xbc, 0x94,0xc6,0x7a,0x6b, 0xe4,0x5b,0x27,0x7a,
+ 0xbb,0x9f,0x67,0x85, 0x99,0x7c,0xd6,0x89, 0xd2,0xd3,0x2f,0xaf, 0x33,0x6f,0xa1,0xd4,
+ 0xed,0xe4,0x41,0xa4, 0xc8,0xad,0x65,0x2e, 0x5e,0xdf,0x13,0xe7, 0xf5,0xbc,0xeb,0x76,
+ 0x0a,0xb4,0x37,0xe9, 0x62,0xcb,0xb1,0x84, 0xe2,0x4c,0x49,0x9d, 0x4d,0x58,0x8d,0xe2,
+ 0x43,0xb3,0xc6,0x8d, 0xd8,0x35,0x12,0x22, 0xb5,0xea,0x2f,0xa0, 0xf9,0xbc,0x98,0xbf,
+ 0xb7,0xec,0x86,0xaa, 0x18,0x43,0x52,0x9c, 0x5f,0x27,0x57,0xc9, 0x8a,0x8c,0x95,0x1f,
+ 0x97,0x06,0x77,0xde, 0x81,0xe7,0xa7,0xc0, 0xbe,0xcc,0xf8,0x17, 0x0f,0xc4,0xfb,0xe3,
+ 0x07,0x0f,0x12,0xf3, 0xe7,0x2f,0x78,0x85, 0x5d,0x31,0x52,0x29, 0x22,0xc3,0x8f,0xb3,
+ 0xd8,0x7d,0x1c,0x7a, 0x63,0x67,0x3d,0xef, 0x43,0x0e,0x48,0x85, 0x0b,0x99,0x35,0xd4,
+ 0x16,0x19,0x79,0x73, 0x5d,0x56,0xf9,0xb5, 0xf5,0x97,0x9d,0xb9, 0x73,0x28,0x31,0x34,
+ 0x7c,0x65,0xd7,0x72, 0x2f,0x8d,0xd6,0x75, 0xae,0xc3,0xea,0x4f, 0x8e,0x40,0xe1,0x15,
+ 0xeb,0xd5,0x9d,0xbc, 0x5a,0x68,0xbd,0x80, 0x91,0x4a,0x5a,0x01, 0xad,0x89,0x27,0x74,
+ 0x88,0xcd,0x5e,0x33, 0xb6,0xf1,0xd3,0x7e, 0xf6,0x0d,0x85,0x4e, 0xcd,0x77,0x8c,0x1e,
+ 0x25,0xd9,0x07,0x49, 0xdc,0x74,0x25,0xac, 0x36,0x72,0x09,0x4b, 0x1a,0x82,0x7b,0xab,
+ 0xac,0x86,0x45,0x7c, 0xc6,0xf2,0xcb,0x9d, 0x0b,0x6f,0xdd,0x0c, 0x17,0xf6,0x26,0xf4,
+ 0x84,0x6b,0x76,0xda, 0xf9,0xe5,0xdf,0x4b, 0x16,0xea,0xf6,0x8c, 0xba,0x20,0x28,0x1b,
+ 0x7b,0xb1,0xc4,0x41, 0x79,0x22,0x04,0xdb, 0xe4,0xf3,0x21,0x12, 0x4b,0xcb,0x30,0xe7,
+ 0x40,0x82,0x62,0xe2, 0x02,0x48,0x1b,0x37, 0x09,0x60,0x8a,0x7b, 0x92,0x80,0x00,0x82,
+ 0x64,0x02,0x6e,0xde, 0x7b,0x9a,0xa4,0x4d, 0x67,0xb2,0xa9,0xd1, 0x0a,0x55,0x7f,0xbe,
+ 0x01,0x49,0x55,0x97, 0xc1,0xa1,0x4d,0x11, 0xa5,0x3a,0x31,0xf4, 0xb3,0x4a,0xb1,0xfb,
+ 0xd0,0xa4,0x56,0xc4, 0x86,0x7f,0x69,0x58, 0xa9,0x7c,0xfd,0xeb, 0x5d,0xff,0x99,0xe8,
+ 0xed,0xb2,0x51,0x3e, 0x57,0xef,0x07,0x8f, 0xb6,0x9d,0xc8,0xd9, 0x7d,0xbe,0x32,0x23,
+ 0x02,0x3e,0x2c,0xa8, 0xef,0x0f,0x23,0xca, 0xce,0xc5,0x09,0xc8, 0xa6,0xe2,0xba,0x43,
+ 0xb0,0x1d,0x02,0x95, 0x48,0x92,0xdd,0x6d, 0x00,0xd3,0xc8,0x0e, 0x42,0xcf,0xd3,0xf8,
+ 0xb2,0x2c,0x86,0x79, 0x76,0x16,0x64,0x28, 0xc6,0x62,0x8f,0x6a, 0x23,0x2e,0x91,0x42,
+ 0xb0,0x12,0x2e,0x19, 0xeb,0x96,0x15,0x35, 0x55,0xb9,0xc9,0x6e, 0x48,0xad,0x02,0x47,
+ 0x6a,0x6d,0x8a,0xad, 0xf2,0x12,0xfc,0xa6, 0xe7,0x98,0x7c,0x0d, 0x5e,0x4e,0x3e,0xf7,
+ 0x70,0x60,0x7a,0xd5, 0xa9,0x48,0x8e,0x26, 0x09,0x3a,0x81,0x68, 0x4d,0x62,0x05,0xbc,
+ 0x94,0x5b,0x20,0xaa, 0xb0,0xd9,0xa8,0x1f, 0x19,0x75,0x4c,0x77, 0x70,0x28,0x11,0xac,
+ 0xfa,0x1a,0x06,0x63, 0x97,0x48,0xb9,0x06, 0x6e,0x4f,0x46,0xa5, 0x74,0x42,0x74,0x91,
+ 0x06,0xeb,0x6f,0xb4, 0x33,0xb9,0x7a,0x12, 0xf0,0xbc,0x85,0xfc, 0x8f,0x1d,0x9c,0xaf,
+ 0x9e,0xdf,0x32,0xcc, 0xcf,0xc0,0x7b,0x30, 0xe6,0x31,0x10,0xc2, 0x4a,0x36,0x14,0xac,
+ 0xb2,0xcb,0x82,0xc7, 0x4c,0x61,0x17,0xfc, 0x3e,0x0b,0x2c,0xe3, 0x0a,0x3d,0x97,0xc6,
+ 0xdf,0xd6,0xdb,0x7a, 0x02,0x00,0xbc,0x98, 0x53,0x28,0xdd,0xbe, 0xfe,0x5e,0xf4,0xe9,
+ 0x86,0x30,0x79,0xa7, 0x10,0xcb,0xb1,0xf1, 0x57,0x69,0x6c,0x76, 0xb9,0x05,0xfb,0x19,
+ 0x96,0x65,0x67,0xd3, 0xa4,0x84,0x4b,0xef, 0x4c,0x92,0x74,0xc0, 0x44,0x5a,0x29,0x5b,
+ 0x2e,0xdb,0xa8,0xca, 0xef,0xe4,0x68,0x35, 0x95,0x43,0x39,0x96, 0xb3,0x31,0xeb,0xca,
+ 0x8f,0xd1,0xe9,0x53, 0x5c,0xb5,0x4e,0x0f, 0xf7,0xd1,0x45,0xb7, 0x7f,0x4b,0x35,0xd1,
+ 0x37,0x3c,0x02,0x01, 0x45,0xdc,0x00,0x78, 0x32,0x20,0xf5,0x44, 0xd5,0x7c,0x15,0x84,
+ 0xd6,0x64,0x49,0x25, 0x20,0x10,0x83,0xba, 0x71,0xd3,0x34,0xd4, 0x48,0x0f,0x4c,0x32,
+ 0x14,0x00,0x28,0xae, 0x24,0xc8,0x42,0x12, 0x08,0x08,0x10,0x09, 0x02,0x04,0x40,0x84,
+ 0x02,0xba,0x96,0xfa, 0xfb,0xe2,0x7a,0x8d, 0x96,0x27,0x57,0xf6, 0x33,0xd6,0xb9,0xed,
+ 0x9f,0x91,0xd4,0x7f, 0x97,0x1b,0x1e,0xb2, 0xbe,0x45,0xf6,0x19, 0x86,0x1a,0x3b,0xa1,
+ 0xe9,0x7f,0x9a,0xa7, 0x15,0x49,0x36,0x9b, 0x43,0x62,0x6d,0x54, 0xda,0x46,0x8e,0x13,
+ 0xc5,0x53,0x92,0x73, 0x6c,0x1c,0xc1,0x20, 0x80,0x05,0x00,0xa0, 0x44,0x02,0x80,0x01,
+ 0xb4,0x9b,0x01,0xb0, 0x06,0xc1,0xb4,0x9b, 0x10,0x36,0x80,0x6d, 0x26,0x0d,0x36,0x87,
+ 0x8a,0x16,0xb6,0xd0, 0x75,0x36,0x2c,0x14, 0x69,0xe9,0x97,0xea, 0xbc,0x1d,0x81,0x58,
+ 0x63,0x42,0x6d,0xb4, 0xd3,0x4d,0xa1,0xdb, 0xb6,0x97,0x76,0x6c, 0x9a,0xa8,0x0d,0x29,
+ 0xd8,0x1e,0xc7,0x77, 0x38,0x07,0xd3,0xdb, 0x4a,0xe5,0x2d,0x2d, 0x81,0xf8,0x2d,0x86,
+ 0x62,0x2f,0x7f,0x0d, 0x0a,0x0d,0xe5,0xe2, 0xf5,0x61,0xd1,0x40, 0x63,0x48,0x6c,0x26,
+ 0x4e,0x12,0x09,0x36, 0x3e,0x23,0xd9,0xf8, 0xb2,0xdb,0x13,0xd4, 0x72,0x51,0xfc,0x17,
+ 0x5b,0xce,0x57,0x7b, 0xde,0x7f,0x16,0x78, 0xe7,0xf5,0x36,0x3c, 0x10,0xf2,0xb6,0x30,
+ 0xb9,0x89,0x63,0x48, 0x12,0xa5,0xfe,0x5d, 0x3c,0xbf,0x24,0xd2, 0x86,0x97,0x33,0x96,
+ 0xb5,0x5b,0x59,0x81, 0xd3,0xf8,0xd6,0x77, 0x75,0xe8,0x40,0xbd, 0x87,0x5c,0xfe,0x57,
+ 0x8b,0x46,0x47,0x03, 0x9e,0xdc,0xd7,0xc5, 0xec,0xe2,0x8d,0x07, 0x85,0xde,0x5f,0xca,
+ 0xb6,0x05,0x59,0xac, 0xc0,0x76,0xc1,0x89, 0x08,0x81,0x8d,0x89, 0x26,0xc1,0x21,0x83,
+ 0x63,0x3e,0x6b,0x11, 0x1c,0xaa,0x81,0x28, 0x62,0x6c,0xaa,0x8a, 0xa4,0x42,0xe2,0x69,
+ 0xbd,0x2c,0x1c,0x2a, 0x3b,0x1a,0x8e,0xbb, 0x33,0xd8,0x4a,0x8b, 0x35,0xe4,0xb2,0x8a,
+ 0xf0,0x51,0xf6,0xa3, 0x9d,0x65,0xae,0x4f, 0x8e,0xf1,0xeb,0x79, 0x01,0xb0,0xd4,0x07,
+ 0x60,0xcd,0xc9,0xba, 0x48,0x67,0x5a,0xc8, 0x1a,0xf8,0x63,0x8e, 0x27,0xdf,0x9c,0x4a,
+ 0x73,0x90,0x89,0x49, 0xb9,0x49,0x82,0x10, 0x29,0x35,0x22,0x57, 0xa3,0x5b,0xaf,0x3d,
+ 0x8b,0x7f,0xd0,0x45, 0xdf,0x5b,0xa6,0xc4, 0xeb,0x30,0xf3,0xfa, 0x5e,0xab,0x86,0xe8,
+ 0xb2,0x37,0xf8,0xf8, 0xf2,0x77,0xa9,0xea, 0xe8,0xf3,0x3e,0xb7, 0xad,0xe6,0xf9,0xf8,
+ 0x89,0x5a,0x9d,0xf5, 0x2e,0xb2,0x59,0xcd, 0x4d,0x28,0x9a,0xc1, 0x48,0x77,0x47,0x1b,
+ 0xb2,0x63,0x19,0xb0, 0x86,0xd3,0x15,0x44, 0x8e,0x55,0x10,0x84, 0xaf,0x9d,0xfb,0xf4,
+ 0xd5,0xac,0xfc,0xb2, 0xba,0x4c,0x36,0x37, 0xd4,0x90,0x8a,0x15, 0xd3,0xdf,0xd0,0xa6,
+ 0xc1,0x9c,0x97,0x22, 0x73,0x58,0xfb,0x43, 0x6b,0xba,0x88,0xa3, 0xd9,0x23,0x45,0x51,
+ 0xb4,0xfb,0x9f,0xdc, 0x2a,0x3c,0xbe,0xff, 0x6b,0xc7,0x00,0x3b, 0x1b,0x4c,0x1a,0x49,
+ 0x34,0x3d,0xcd,0xc7, 0x11,0x6b,0x41,0x1f, 0x2f,0xcd,0xe8,0xe8, 0x6b,0xbc,0xbe,0x4a,
+ 0x2f,0x8b,0xba,0x7c, 0x37,0xcb,0x4e,0x67, 0xd9,0xb6,0x87,0x3d, 0xd4,0x69,0x77,0xf2,
+ 0x48,0xe5,0x75,0xe0, 0x63,0xea,0xf4,0xd0, 0x9c,0x46,0xa7,0x8c, 0x08,0x49,0x6a,0x08,
+ 0x91,0x1a,0x03,0x22, 0x03,0x4e,0x85,0x40, 0x34,0x42,0x69,0x51, 0xb6,0x41,0x0a,0x71,
+ 0x3a,0x25,0x36,0xe6, 0x9c,0x47,0xfb,0x22, 0x5a,0x52,0xe7,0x28, 0x7f,0x0c,0xc4,0x54,
+ 0x31,0x21,0x36,0x93, 0xa0,0x85,0x0d,0x02, 0x06,0x2f,0x1f,0x91, 0xe9,0xa4,0x8e,0x37,
+ 0x85,0xd5,0x55,0xae, 0xfc,0x77,0x95,0x4c, 0x05,0x7e,0x94,0x43, 0x36,0x18,0x37,0xa7,
+ 0x3d,0x71,0x08,0x18, 0x0c,0x4d,0xb0,0x6c, 0x43,0x01,0x67,0x98, 0x20,0x89,0xe3,0x4a,
+ 0x4c,0x13,0x4c,0x12, 0x1a,0x42,0x6c,0x00, 0xc6,0x86,0x73,0x20, 0x85,0x8b,0x23,0x95,
+ 0x30,0x46,0x88,0x13, 0xf2,0xd9,0x08,0xea, 0x0c,0xd0,0x38,0x26, 0xf1,0xd0,0xfd,0x66,
+ 0x3c,0xce,0x6f,0x87, 0x51,0x8d,0x43,0xc7, 0x5b,0x07,0xb2,0x5c, 0x4a,0x53,0x1a,0xee,
+ 0x5e,0xa2,0xf1,0x92, 0x44,0xc1,0xce,0x33, 0xc9,0xd0,0x7b,0x0e, 0x1b,0x2f,0x10,0x3f,
+ 0x9e,0xb6,0x9f,0xb9, 0x83,0x38,0xe9,0x59, 0x5e,0x6c,0x18,0x64, 0xef,0x87,0x1f,0xbb,
+ 0xfe,0x6e,0xf4,0xda, 0x4e,0xef,0x2e,0x93, 0x67,0x27,0x15,0x45, 0x11,0xef,0x43,0xbc,
+ 0xf1,0x77,0x36,0xb2, 0x7a,0xff,0xb3,0x16, 0x21,0x5c,0xdd,0xe2, 0x00,0x47,0xb7,0x01,
+ 0xbe,0xaf,0xe2,0xdb, 0x68,0x5b,0xb0,0xca, 0xe2,0xe3,0x54,0xff, 0xd7,0x6b,0x81,0x77,
+ 0xaf,0x04,0x40,0x27, 0xfe,0x8e,0xed,0x19, 0xa1,0xfe,0x98,0x4d, 0x3c,0xc9,0x4b,0x5f,
+ 0xa8,0x7b,0x1b,0x04, 0x77,0x09,0x46,0xb3, 0x95,0x05,0x8f,0xd2, 0xba,0x58,0x2b,0xf2,
+ 0x1b,0x14,0xea,0x9c, 0xa2,0x9a,0xc3,0x73, 0xaf,0x42,0xda,0xaa, 0x54,0x3d,0xf4,0x2d,
+ 0x26,0x94,0x17,0xb3, 0xc9,0x7a,0x57,0xbb, 0x78,0x05,0xf5,0xe6, 0x9d,0x58,0x85,0x72,
+ 0x6c,0xda,0x1a,0x9e, 0xeb,0xe3,0x63,0xb8, 0x26,0x19,0xef,0xad, 0x6d,0x76,0x36,0xf3,
+ 0xa9,0xd4,0x88,0x9a, 0xa1,0x1f,0xb7,0xe5, 0xe8,0x64,0xaf,0xb4, 0x0e,0x50,0x61,0x2a,
+ 0x9d,0x32,0xb0,0x96, 0x93,0x56,0xe5,0x35, 0x69,0x77,0x0d,0xdf, 0x3e,0x52,0xa2,0x7a,
+ 0x6d,0x67,0x17,0xda, 0x37,0x9a,0xb9,0xa8, 0x37,0x5c,0xbf,0xd3, 0x55,0xe5,0x53,0xe8,
+ 0x99,0x5a,0xc2,0xe5, 0x46,0x87,0x1a,0x27, 0x2e,0x2e,0x2b,0x73, 0xba,0x99,0xd9,0xee,
+ 0x87,0x27,0x93,0x34, 0xfb,0x65,0xf8,0x37, 0x91,0xdc,0x62,0x70, 0x3c,0x2f,0xf7,0x8e,
+ 0xe4,0x6f,0xa2,0xee, 0xd4,0xfb,0x3e,0x5b, 0xd4,0xb7,0x6b,0x2c, 0x09,0x02,0xc8,0xc2,
+ 0xe6,0x0c,0xc2,0xa6, 0xec,0xc4,0x42,0x88, 0x3a,0x4f,0x23,0x03, 0xc5,0x03,0x4d,0x7f,
+ 0x1f,0x96,0xc2,0xba, 0x94,0xbc,0xf6,0xda, 0x9b,0x48,0x77,0x35, 0x2e,0x3b,0x22,0x7b,
+ 0x05,0xf1,0xe9,0x60, 0xf9,0x7f,0x27,0xfc, 0x74,0x9c,0xeb,0xf1, 0xef,0x16,0x62,0xf3,
+ 0xff,0x6f,0xd1,0xed, 0x51,0xfa,0xf9,0x4e, 0x9b,0xbb,0x1c,0x5d, 0x7e,0x7a,0x73,0x93,
+ 0x7b,0xb1,0xeb,0x9b, 0x00,0xc8,0x16,0x4c, 0xdf,0x63,0x1c,0xa7, 0xb5,0x5d,0x55,0x7a,
+ 0x01,0xd7,0xee,0x7d, 0x7f,0x35,0xc7,0xdf, 0xdc,0xad,0xce,0xe8, 0x6f,0x79,0x8f,0x1f,
+ 0xe6,0xb7,0xbb,0x96, 0x5f,0x53,0xe8,0x10, 0xbe,0x58,0x3e,0x1c, 0xeb,0xba,0x0d,0x76,
+ 0xe6,0xdd,0xfd,0x9d, 0x34,0x88,0x8c,0x52, 0x40,0x60,0xec,0x74, 0x80,0x75,0x7d,0x05,
+ 0xd8,0x55,0x13,0x8e, 0x6d,0x27,0x2b,0xc4, 0xf6,0x16,0x1c,0xc3, 0x19,0x18,0x16,0xc9,
+ 0xa9,0xc8,0x6d,0xce, 0xa7,0xfe,0xd1,0xed, 0xc7,0xed,0xb7,0xf2, 0x76,0xba,0xbe,0xc1,
+ 0x4f,0xb1,0xc2,0xd1, 0xfa,0xea,0x53,0x80, 0x5e,0x69,0x4b,0x96, 0xfb,0x30,0x7c,0xed,
+ 0xd4,0x1f,0x67,0x9f, 0x42,0x19,0x44,0xf6, 0xf2,0x1f,0x5a,0xd0, 0x99,0x3f,0x4c,0xa7,
+ 0x1b,0x84,0x6c,0x97, 0x5d,0x09,0xec,0xfb, 0x34,0xdc,0x89,0xef, 0x13,0xc9,0x7a,0x74,
+ 0xc7,0x55,0x56,0x3d, 0x87,0xc4,0x53,0x4c, 0x80,0x3d,0x13,0x74, 0x49,0x1d,0xea,0x69,
+ 0x94,0xd2,0xf0,0x34, 0xe6,0xe9,0xf7,0xcf, 0x38,0xfd,0xf4,0x67, 0xdd,0x08,0x8c,0x91,
+ 0x0c,0x62,0xac,0x43, 0xd0,0x4b,0x39,0xae, 0xcc,0x85,0x60,0x0c, 0xe9,0xe1,0x80,0x7c,
+ 0x44,0xc5,0xc9,0xce, 0x83,0xc0,0x82,0x80, 0x94,0x6a,0xb4,0x3a, 0x05,0x1c,0x60,0xda,
+ 0xf0,0x38,0x7b,0x69, 0x25,0xe2,0x27,0x81, 0x7a,0xa2,0xe2,0x20, 0x01,0x02,0x40,0x20,
+ 0x02,0x04,0x21,0x09, 0x14,0x86,0xd7,0xf8, 0xe5,0x9c,0x13,0x5a, 0x46,0xa0,0x67,0x98,
+ 0x6b,0x87,0x9c,0xf6, 0x34,0xcd,0xec,0xfc, 0xf8,0xd7,0x24,0x6f, 0x10,0x00,0x47,0x8f,
+ 0xfe,0x12,0x41,0x35, 0x7a,0x84,0xeb,0xf4, 0xfd,0xae,0x27,0x87, 0xe5,0x65,0xb6,0xf4,
+ 0xfa,0x6f,0x6f,0x69, 0xcc,0x6a,0x44,0xd8, 0xfc,0x13,0x8f,0x41, 0x22,0xe7,0x5d,0x53,
+ 0xaa,0xfe,0x2e,0x98, 0x5c,0x89,0xa4,0xc6, 0x9a,0x32,0xab,0x3b, 0xfc,0x64,0x2a,0x0f,
+ 0xf1,0xd9,0x62,0x63, 0xef,0xcc,0xb2,0xd1, 0x2f,0xf1,0x42,0xe7, 0x49,0x87,0xe0,0xa9,
+ 0x74,0xb9,0x99,0x97, 0x10,0x96,0xfc,0x04, 0x19,0xc3,0x5c,0x8b, 0x07,0x02,0x17,0x04,
+ 0xee,0x4f,0xf7,0x9d, 0xed,0x9e,0x4f,0x8a, 0x5c,0x2c,0x2f,0x69, 0xf2,0x64,0x92,0x92,
+ 0x47,0xbc,0x6a,0x19, 0x02,0x50,0x22,0x0e, 0xf1,0xbe,0xed,0xd2, 0xa1,0xb9,0xea,0x89,
+ 0x4e,0x68,0x72,0x6d, 0xca,0xaa,0xa7,0x34, 0x03,0x33,0x0a,0xa0, 0x2a,0x94,0x6e,0x7d,
+ 0xfa,0x55,0x14,0x15, 0x0d,0xa8,0x65,0x1b, 0xf9,0xbf,0x55,0xcf, 0xaf,0x43,0x68,0xcd,
+ 0x96,0x38,0x0d,0xa8, 0x1b,0x1e,0xcc,0x29, 0xd1,0xa8,0xa2,0xc2, 0x28,0x3a,0xa9,0xa1,
+ 0xee,0xf7,0x9d,0xbf, 0x5d,0x89,0xd3,0xb7, 0x7b,0x91,0xb7,0xba, 0x3e,0x9e,0xe9,0xad,
+ 0x61,0xd6,0x9a,0xcd, 0x52,0x69,0x8f,0x81, 0x39,0xa1,0xb0,0xb1, 0xde,0xed,0x76,0x5f,
+ 0x3e,0xd6,0xef,0x7d, 0xf1,0xec,0x88,0x22, 0x0d,0x38,0x9a,0x07, 0x53,0xcf,0x02,0xcb,
+ 0x6a,0xf5,0x08,0xa1, 0x38,0x4a,0x62,0xaa, 0x14,0x4f,0xb5,0x06, 0x9f,0x08,0xa7,0xb3,
+ 0x28,0xcc,0x24,0x6c, 0xd7,0x4d,0xaa,0x88, 0x3e,0xb4,0x6a,0x63, 0x85,0x7f,0x90,0x04,
+ 0x96,0xbd,0x42,0x7e, 0x08,0x72,0x24,0xb3, 0xbf,0x56,0xbe,0x2f, 0xe8,0xf3,0xbc,0x4d,
+ 0x8e,0x1a,0x2f,0xb3, 0x1d,0xc1,0xdc,0xee, 0x6c,0xe2,0xc3,0xd8, 0x08,0x41,0xf4,0x91,
+ 0x7f,0x80,0x44,0x87, 0xf2,0xa6,0x10,0x21, 0xfa,0x0f,0xd2,0xcb, 0xba,0x40,0x00,0x84,
+ 0x5c,0x38,0x56,0x81, 0x52,0x5a,0x48,0x0b, 0xb7,0x05,0x47,0x89, 0xa0,0xa3,0x9b,0xad,
+ 0xc7,0xa7,0xab,0xe4, 0x79,0xde,0x50,0xeb, 0xf3,0x2d,0x74,0x3d, 0x1e,0xc0,0x92,0x73,
+ 0x98,0xb7,0xdd,0x75, 0x36,0x26,0x2f,0xdf, 0x15,0x02,0x43,0x5e, 0x02,0x27,0xb0,0x08,
+ 0x84,0xdf,0xe7,0xc2, 0xeb,0xe9,0xb2,0x31, 0xdd,0x41,0x14,0xc3, 0x13,0xbe,0x26,0xd7,
+ 0x8b,0x82,0xe2,0xf9, 0x0b,0xbc,0x95,0x66, 0x93,0x23,0x63,0xb7, 0xf5,0xbd,0xce,0xc3,
+ 0xc5,0xda,0xf9,0x1e, 0x0d,0x6f,0x1f,0x61, 0x0b,0x54,0xb0,0xb2, 0x24,0x61,0x86,0xc1,
+ 0xae,0x3d,0x5c,0x9f, 0x49,0x51,0xf3,0x8e, 0x3b,0x4d,0x49,0x9f, 0xba,0x84,0xab,0x58,
+ 0x18,0x03,0xf6,0x2c, 0x78,0xd0,0x7d,0xaa, 0x49,0x18,0xed,0x98, 0x91,0x30,0x3e,0x76,
+ 0xc8,0x9e,0xe0,0xf8, 0xb3,0x53,0xc6,0x88, 0x55,0x6b,0xf8,0x49, 0xd5,0x1f,0xb5,0x9e,
+ 0xa8,0x58,0x84,0xc1, 0x8c,0x41,0xe0,0x41, 0xcd,0x1b,0x29,0x94, 0x6a,0x4c,0x64,0xb9,
+ 0xc8,0x12,0x34,0x68, 0x2d,0xa3,0xd9,0x8c, 0xb3,0x5c,0x6b,0x9c, 0x13,0x2e,0x07,0xf2,
+ 0xd1,0x6a,0x14,0x17, 0x60,0xdd,0x7c,0x48, 0xd6,0x9f,0x64,0xca, 0xac,0xe6,0x4f,0x6f,
+ 0x76,0x81,0x26,0x60, 0x94,0x23,0x22,0xe9, 0x4f,0xd6,0xa4,0x08, 0xc3,0x21,0x3e,0x6b,
+ 0x10,0xed,0x67,0x77, 0x2f,0x72,0x1a,0x2d, 0x00,0xdc,0x5f,0x8a, 0xb3,0x49,0xdc,0xb0,
+ 0xa3,0x97,0xa2,0xd1, 0x39,0x64,0xd1,0x83, 0xf0,0xad,0xd5,0x54, 0x3d,0x88,0xe7,0x78,
+ 0xfc,0xf8,0x8e,0xab, 0xc2,0x5d,0x9f,0x81, 0xd7,0x4a,0xc9,0x28, 0xab,0x4e,0x23,0xe9,
+ 0xdd,0xc4,0xa2,0xe0, 0xae,0x4b,0xb3,0xf0, 0x34,0x50,0xc0,0x0d, 0x68,0xd0,0x13,0xf2,
+ 0x34,0x4e,0x9c,0x1a, 0x8b,0x23,0x75,0x8d, 0x52,0x85,0x4f,0x65, 0x67,0x86,0x99,0xa4,
+ 0xd2,0x1d,0x8e,0x7b, 0x0d,0x65,0x83,0x69, 0x67,0xe6,0x4a,0x71, 0xf6,0xbb,0xbd,0x54,
+ 0xff,0x91,0xda,0xff, 0x7e,0x08,0x4c,0xf6, 0x07,0x48,0xfa,0x96, 0x22,0xe7,0xe3,0x99,
+ 0x19,0xdf,0x90,0x14, 0xe6,0x2f,0x80,0x8f, 0xc4,0xee,0xe4,0xa8, 0x41,0x72,0x46,0x74,
+ 0x15,0x36,0x9d,0xcf, 0xfd,0x59,0x4e,0x24, 0xa6,0x26,0x27,0xda, 0x93,0x2c,0x9a,0xc3,
+ 0x4b,0xf2,0x8e,0xde, 0xa0,0x19,0xc8,0x54, 0xa4,0x95,0x2b,0xc1, 0x89,0x3f,0x50,0xa4,
+ 0xa8,0xa2,0xdf,0x15, 0xbb,0xeb,0x02,0xc3, 0x6c,0x81,0xf1,0x4d, 0x07,0x6d,0xa9,0x1c,
+ 0xbf,0xcd,0xed,0x7b, 0xfe,0xbe,0x49,0xcb, 0x90,0x41,0x77,0x4d, 0x78,0xb5,0x48,0x29,
+ 0xe1,0xf5,0x9a,0xa9, 0x8d,0x95,0x1f,0xeb, 0x66,0x3e,0x6c,0x11, 0xb5,0x65,0x86,0xf5,
+ 0x03,0x6e,0x43,0x5a, 0xef,0x52,0x5e,0xb1, 0xe9,0xb2,0x1f,0x9f, 0xb9,0x21,0x92,0x8d,
+ 0x5c,0x36,0x90,0x35, 0x77,0x0d,0xb5,0x3f, 0xaa,0xaa,0x94,0x62, 0x2d,0x52,0x83,0x30,
+ 0xf3,0x31,0x4b,0x1e, 0xf8,0x68,0xc5,0x4c, 0x13,0x68,0xe8,0x81, 0x10,0xe3,0xd9,0x7e,
+ 0xba,0xe1,0xd3,0xda, 0xee,0x71,0x6c,0xa9, 0x34,0x6d,0x31,0x46, 0x5f,0xd6,0xcf,0x08,
+ 0x61,0x44,0xc4,0x6b, 0x70,0x5a,0xb9,0x7c, 0x03,0x45,0x71,0x6b, 0x58,0x6e,0x7a,0xb1,
+ 0x99,0x9e,0x9d,0x33, 0xc6,0x51,0x61,0x66, 0x99,0xaf,0x69,0x40, 0xb3,0xf0,0xbe,0x72,
+ 0x9c,0x6e,0xed,0xe6, 0xe7,0xe2,0x79,0x79, 0x7a,0x6e,0x07,0xe6, 0xd6,0x6d,0xe8,0x70,
+ 0x6e,0x77,0x58,0x3c, 0xe5,0xec,0x2f,0xf5, 0xd2,0xdb,0x51,0xee, 0xc8,0xb8,0xee,0x1b,
+ 0xcf,0x48,0x92,0x46, 0x2e,0xd9,0x43,0x47, 0xe0,0x9f,0x63,0x9f, 0xf5,0x42,0x55,0x70,
+ 0x3d,0xbd,0x41,0xd2, 0xf8,0x19,0xfc,0xa8, 0xc0,0xa0,0xc0,0xb7, 0xc3,0x2f,0x7d,0x55,
+ 0xff,0x52,0x61,0x39, 0x03,0x0e,0x15,0xfb, 0x1b,0x28,0x93,0xa0, 0x6f,0xa7,0x20,0xa2,
+ 0x92,0xf4,0xc8,0x14, 0xbb,0xfc,0x42,0xdc, 0x2b,0xfe,0xd3,0xce, 0xb5,0x74,0xde,0x25,
+ 0x97,0x0f,0xa2,0x06, 0xd9,0x94,0x73,0xb2, 0x9a,0xbb,0xa0,0x62, 0x9b,0x82,0x03,0xb2,
+ 0x84,0xe8,0x29,0xe7, 0xe9,0xd6,0x70,0x4d, 0x1f,0x43,0xae,0x14, 0xea,0x6a,0xf3,0x32,
+ 0x77,0xca,0xfa,0xac, 0x4c,0x3a,0x75,0xca, 0x43,0x6a,0x7c,0x5d, 0xab,0xe4,0xb3,0xd0,
+ 0xb0,0xe0,0xac,0x49, 0x70,0xb4,0x8b,0xc9, 0x5c,0x54,0xcb,0xd1, 0x60,0x9d,0x48,0xf4,
+ 0x69,0xae,0xb0,0x60, 0x23,0x6a,0x36,0x22, 0x20,0xb8,0x62,0x89, 0x6a,0xf9,0x70,0xd5,
+ 0x7b,0xc3,0x77,0x93, 0xac,0x6f,0x0d,0x97, 0x13,0x91,0xad,0x41, 0xdd,0xbf,0xae,0xc7,
+ 0xd5,0xb6,0x8e,0x6e, 0x37,0xd3,0xeb,0x7c, 0x48,0xbc,0xab,0x66, 0xbd,0x91,0xdd,0x82,
+ 0x12,0x0c,0x75,0x03, 0x21,0xb8,0x82,0x21, 0x90,0xd0,0x7f,0xdf, 0x9c,0xaf,0xa1,0xa8,
+ 0xc1,0x6a,0x97,0xfc, 0x5a,0x2c,0x6d,0x62, 0xd1,0x03,0xf8,0xde, 0x59,0x20,0x52,0x10,
+ 0x98,0x24,0xd0,0xcf, 0x42,0x0f,0x41,0xc9, 0x24,0xc0,0xa5,0xc0, 0xdb,0x18,0xff,0x9f,
+ 0xf9,0xe7,0x4d,0x34, 0xd3,0x4c,0xe3,0x08, 0x41,0xd9,0x99,0x99, 0x99,0x9a,0x10,0xc9,
+ 0x8c,0x48,0x20,0x92, 0x0c,0x62,0xcc,0x76, 0x9e,0xa5,0x43,0x7f, 0x30,0xfe,0xdf,0x40,
+ 0x00,0x39,0x80,0x26, 0xe6,0x35,0xf1,0x9b, 0x95,0xd0,0xec,0x76, 0x20,0x79,0xd3,0xad,
+ 0x24,0xe5,0x1e,0x17, 0x97,0xa5,0x98,0x0b, 0x34,0xf3,0x76,0xb9, 0xa5,0x35,0xab,0x58,
+ 0xc6,0xca,0xb4,0xb9, 0x4e,0x8d,0xe3,0xf7, 0x5d,0xd8,0xc4,0x00, 0xac,0x06,0x9a,0x4c,
+ 0xe2,0xb6,0xee,0x39, 0xde,0x6d,0x58,0x55, 0x39,0x9f,0xc4,0x7c, 0x61,0x9f,0xb4,0xea,
+ 0xf2,0x96,0x2e,0x3a, 0xcb,0xda,0x5e,0xd8, 0xf1,0x22,0xdb,0xec, 0x7b,0xe4,0x69,0x85,
+ 0xb9,0x6b,0xb7,0x72, 0x47,0xe3,0x8a,0x19, 0xc2,0x9a,0xd8,0x56, 0x2b,0xe0,0x5a,0x88,
+ 0x3e,0x83,0x8c,0x38, 0xdf,0x5e,0xe3,0xf2, 0xe2,0x10,0x8c,0x3b, 0xcc,0x49,0x9e,0x55,
+ 0x9d,0x3e,0xc7,0x69, 0xd7,0xa5,0x47,0x04, 0xe3,0xab,0xa6,0x2a, 0x39,0xad,0x71,0x2d,
+ 0xaa,0x83,0x96,0x34, 0x6c,0x64,0x66,0xc4, 0x41,0xd1,0x60,0x22, 0x22,0xda,0xb6,0xe1,
+ 0x20,0x24,0xf2,0x91, 0xa1,0x60,0xe1,0x43, 0x29,0x98,0xc2,0x22, 0xc1,0xe2,0xac,0x5c,
+ 0xba,0x64,0x4f,0xf4, 0x5c,0x1b,0x8c,0x8e, 0xfa,0xdb,0x94,0xc8, 0xa5,0xc8,0x7c,0xfe,
+ 0x0e,0xa0,0x68,0xfe, 0xed,0xb6,0xd9,0x91, 0x00,0xfc,0x88,0x10, 0xc8,0xa0,0x5e,0xb0,
+ 0x28,0x1f,0xc7,0x90, 0x2f,0xf2,0x45,0xb8, 0xba,0xd9,0x0d,0x60, 0x7c,0xdf,0xce,0x81,
+ 0x5b,0x90,0xf8,0xb3, 0xb2,0x32,0x6f,0xa8, 0xcc,0xfa,0xb8,0x2c, 0x4c,0x13,0x26,0xd9,
+ 0xf6,0x42,0x71,0x58, 0x98,0x57,0x6a,0xe1, 0xaf,0x04,0xf2,0x45, 0xd7,0x82,0x76,0xf5,
+ 0x9c,0x3b,0x48,0xa4, 0x16,0x3a,0x8e,0x35, 0x32,0xd6,0x83,0xc5, 0xdb,0xe0,0x52,0x6c,
+ 0xb1,0x6a,0x68,0xa1, 0x00,0x7f,0x6f,0x47, 0x95,0xa5,0x70,0x9d, 0x8f,0x14,0xe3,0x43,
+ 0xda,0x74,0xa7,0xf6, 0x7d,0x0f,0x43,0x85, 0xcc,0xcb,0xd5,0x56, 0xe5,0xaf,0x33,0x73,
+ 0x36,0x99,0x92,0x53, 0x0c,0x61,0x25,0xc6, 0xe0,0x46,0xc3,0xb7, 0x3b,0xfc,0x8c,0x74,
+ 0xbb,0xc4,0x28,0xed, 0x31,0x6c,0xed,0x95, 0x76,0x05,0xd4,0x33, 0x90,0xc9,0x09,0x30,
+ 0x99,0x5a,0xd9,0x2c, 0xa6,0x0e,0x76,0x84, 0x0f,0x53,0x1d,0x6b, 0x59,0xfa,0x4f,0x30,
+ 0x87,0x40,0x4d,0xba, 0x4b,0x99,0x14,0xa0, 0xe2,0xcf,0x9b,0x95, 0xda,0xd8,0xfc,0x79,
+ 0xb5,0xa9,0xa5,0xe2, 0x33,0x2a,0x27,0xcb, 0xdd,0x59,0xc7,0x5a, 0xdf,0x33,0xe4,0x79,
+ 0xe2,0xaa,0x2b,0x81, 0x87,0x81,0xf4,0x85, 0x92,0xdd,0x09,0xfd, 0xbe,0x70,0x90,0x3f,
+ 0x83,0x46,0x03,0x25, 0x29,0x3d,0xc6,0x25, 0xfc,0x63,0x26,0xa6, 0x0d,0x99,0xd1,0x15,
+ 0xd6,0xf8,0x0b,0xef, 0xd1,0x3f,0x48,0x10, 0x3e,0x0e,0x1d,0x78, 0x8e,0x0a,0x4b,0x09,
+ 0xe9,0xe4,0x01,0x44, 0x98,0x34,0xa3,0xdc, 0xfc,0x95,0xba,0x8a, 0x7d,0xab,0x38,0x13,
+ 0xc6,0x8d,0x1f,0x51, 0x18,0xf9,0x81,0xa5, 0xf2,0x97,0x54,0x81, 0x99,0xda,0x22,0x95,
+ 0x30,0xc9,0xee,0x66, 0x4b,0xde,0xc9,0x1c, 0x31,0x2a,0x29,0x41, 0xbe,0xc6,0xb6,0x64,
+ 0x92,0x34,0xb2,0x1d, 0x79,0x01,0x3c,0xa6, 0x97,0xcc,0x15,0xc8, 0x15,0x9f,0x03,0x34,
+ 0xde,0xa7,0xe4,0x03, 0x7d,0xce,0x45,0x85, 0x3e,0xe8,0xa6,0xf1, 0x9e,0x9b,0x6c,0xa2,
+ 0x71,0x05,0xb5,0xc5, 0x80,0x82,0x57,0x38, 0x9b,0x23,0xe2,0x83, 0xfe,0xcb,0x85,0xcc,
+ 0x25,0x57,0xc1,0x87, 0x9b,0xd1,0xb1,0x8d, 0xc1,0xf7,0xb1,0x44, 0xfd,0x84,0x5d,0x9a,
+ 0xc7,0x22,0x1e,0x2d, 0x3b,0xe8,0x8b,0xf1, 0xa8,0xa1,0x33,0xc4, 0x48,0x6d,0x6c,0x74,
+ 0x73,0xa5,0xb5,0xae, 0x9e,0xcd,0xf9,0x6a, 0x91,0x7b,0xda,0x59, 0xd0,0x2b,0x7e,0x9e,
+ 0xfe,0xcd,0x45,0xc8, 0x79,0x88,0xcb,0x9e, 0x60,0xf4,0x71,0x7e, 0x4e,0x32,0xed,0x51,
+ 0xe4,0x9f,0x44,0xc3, 0xd6,0xdc,0x17,0x8a, 0x16,0xdb,0xcf,0xe5, 0x74,0xf2,0xaa,0xc1,
+ 0x32,0x20,0x1f,0x18, 0x02,0x6a,0xeb,0xb1, 0x77,0xc3,0xcd,0xac, 0x3c,0xb9,0x6a,0x88,
+ 0x52,0xde,0x9f,0x4f, 0xe1,0x12,0x9a,0x49, 0xdf,0x2f,0x44,0x69, 0xaa,0x6e,0x0a,0x01,
+ 0xd4,0x03,0xd0,0x15, 0xd2,0x01,0x7d,0x38, 0xf0,0xd0,0xc4,0xdd, 0x14,0x57,0x4f,0xd4,
+ 0x64,0x5f,0x90,0xde, 0xa0,0x6a,0xfc,0xe8, 0x49,0x2f,0x37,0x8f, 0x8b,0xbd,0xad,0x93,
+ 0x47,0xc6,0xbc,0xa4, 0xc9,0xd7,0xc2,0x52, 0xd1,0x9b,0x89,0x66, 0x73,0x81,0x0b,0x60,
+ 0xf8,0x7f,0x13,0x45, 0x2c,0x57,0xeb,0xa6, 0x71,0x7c,0xac,0x6a, 0x3c,0xfa,0x16,0x5f,
+ 0x67,0x0b,0xbc,0x1d, 0x8b,0xa8,0x7c,0x57, 0x1f,0x35,0xac,0x46, 0x14,0x31,0x60,0x33,
+ 0xaf,0xfa,0xe8,0x3b, 0x26,0x2f,0xa2,0x31, 0x36,0x90,0x36,0x29, 0x26,0x74,0xae,0x06,
+ 0x13,0x1a,0x4d,0x90, 0xc9,0xc1,0x76,0xe2, 0x40,0x29,0xc4,0x14, 0xa3,0x0d,0x95,0xc6,
+ 0xc7,0xf6,0x50,0x71, 0x6b,0x14,0xe3,0x9f, 0xad,0x3d,0x29,0x8a, 0x3c,0x79,0x5d,0x41,
+ 0x37,0x0f,0x20,0x77, 0x39,0x6a,0xa8,0x3c, 0x2b,0xbb,0x64,0x1b, 0xb5,0x20,0x67,0x84,
+ 0x1f,0x6c,0x56,0x40, 0x6f,0xdb,0xf7,0xf2, 0x39,0xaf,0x56,0x8c, 0x4d,0x6e,0x83,0x8b,
+ 0x52,0x80,0x6a,0xe9, 0xa3,0x7c,0xd1,0x26, 0x06,0x7b,0x36,0x1b, 0x3e,0x95,0xdc,0x05,
+ 0x0d,0x05,0x4c,0x0b, 0x3a,0x99,0xd4,0xbd, 0xd1,0x85,0x24,0x67, 0xe9,0xf8,0x94,0xf8,
+ 0xa3,0x09,0xdd,0xe9, 0xdc,0x52,0x4a,0x6e, 0xb2,0xf9,0x9c,0x7b, 0xb0,0xf4,0xf6,0x99,
+ 0x8d,0x2d,0x53,0x38, 0x6d,0x57,0x80,0x64, 0x45,0x12,0x94,0x73, 0x26,0x46,0x57,0xfa,
+ 0x20,0x7a,0x62,0x19, 0x7b,0x7f,0xe4,0xda, 0x7b,0x76,0xff,0x60, 0xf5,0xb2,0xae,0x70,
+ 0x74,0xb4,0x9e,0x9a, 0x59,0x2b,0x7d,0x31, 0x1d,0xdd,0xfd,0x9a, 0x09,0xd7,0xda,0x29,
+ 0x1b,0x64,0xff,0x37, 0xab,0x2d,0xc2,0x44, 0x40,0xc2,0xcb,0xf9, 0x6b,0xd3,0x16,0x84,
+ 0x0d,0x5c,0xb3,0xf4, 0x8a,0x67,0x28,0x17, 0xf3,0xf5,0xcd,0x07, 0x14,0x62,0x6c,0xba,
+ 0x52,0x03,0xc6,0xa0, 0xaa,0x5a,0x42,0xd1, 0x0c,0xce,0x13,0xfe, 0x86,0x83,0x49,0x5d,
+ 0x59,0xd0,0xc8,0xb0, 0xcd,0xf0,0x5e,0x4b, 0xe1,0xfd,0x0e,0x01, 0xa2,0xdd,0x50,0x72,
+ 0x97,0x2f,0xf9,0xd3, 0x95,0xd6,0xd6,0xb5, 0xcc,0x8e,0xba,0x6c, 0x17,0x40,0xd6,0xf9,
+ 0xc9,0xa0,0xd2,0xf4, 0xfa,0xe7,0x29,0x3c, 0xc7,0x29,0x77,0x32, 0x70,0x94,0xe1,0x25,
+ 0x10,0x63,0xe3,0xa7, 0x21,0x7a,0xb2,0xb0, 0x11,0x61,0x36,0xb7, 0xc6,0x73,0x6b,0xb6,
+ 0x14,0xc5,0x68,0xd4, 0x65,0xa0,0x68,0x1e, 0x02,0x1b,0x48,0x6d, 0x1c,0x7b,0x48,0x81,
+ 0x8d,0xa1,0x8c,0x1b, 0x4d,0xb1,0xb6,0x02, 0x10,0x00,0x24,0x00, 0xa1,0x08,0x10,0x94,
+ 0x42,0x91,0x0c,0x88, 0x62,0x8c,0x3d,0x9e, 0x1a,0x94,0x40,0x4d, 0x94,0x33,0xa6,0x81,
+ 0x40,0x86,0xd1,0x58, 0xcb,0x67,0x4f,0x91, 0x01,0x74,0xd3,0x19, 0x82,0xfb,0x3e,0xee,
+ 0x3f,0xab,0x38,0xed, 0x7d,0x4f,0x3f,0x1a, 0x92,0xdb,0x37,0x1b, 0xef,0xa4,0x69,0xd5,
+ 0x6e,0xe3,0xb7,0x5d, 0xf8,0x31,0xb7,0x0b, 0xe5,0x30,0x1e,0xff, 0xcd,0x9c,0x55,0xd6,
+ 0x2e,0x46,0x6d,0x4b, 0xdb,0x1f,0xa5,0xd2, 0x8a,0xc8,0x7f,0x1c, 0xf6,0x75,0x52,0x0d,
+ 0x4d,0xf8,0x39,0x33, 0x19,0x87,0xd4,0x56, 0xe9,0x99,0x13,0x50, 0x6a,0x9a,0x0a,0x50,
+ 0x50,0x61,0x11,0xf3, 0xb9,0x70,0x60,0xe6, 0x1f,0x9c,0xbf,0x13, 0xf7,0xa3,0xa1,0xb7,
+ 0x80,0x97,0xdc,0x55, 0xa1,0x74,0x22,0xa1, 0xaf,0xe3,0xdf,0x73, 0xff,0x93,0xb8,0xfa,
+ 0x7a,0x2d,0x40,0xea, 0x0c,0xfd,0xd4,0x04, 0xf5,0x50,0x94,0x9d, 0xaf,0xe4,0x82,0x25,
+ 0x02,0xdf,0x0e,0xfb, 0x5f,0x8b,0x22,0x86, 0x6d,0xf3,0xd1,0xf5, 0x04,0xb7,0x06,0xf2,
+ 0x04,0xba,0x91,0x67, 0x80,0x22,0x26,0x85, 0x68,0xc3,0x12,0xc5, 0x29,0x44,0xed,0x97,
+ 0x84,0x22,0x4d,0x33, 0x77,0xe4,0x2f,0xf9, 0x78,0x83,0x70,0x8d, 0x40,0xa7,0x16,0xbb,
+ 0xa7,0x55,0xa5,0x5b, 0xc3,0x33,0x0b,0x01, 0xbf,0xa1,0x7f,0x8c, 0x81,0xf0,0xac,0xad,
+ 0xaa,0xf4,0xb0,0xb6, 0x41,0x23,0xc6,0xc0, 0x8e,0x6c,0xe9,0x26, 0x49,0xc4,0x69,0x09,
+ 0x8d,0x37,0x87,0xfe, 0x05,0xf1,0xfa,0x2f, 0x97,0xbb,0xdb,0x74, 0xf7,0xf6,0xe1,0x6a,
+ 0x04,0xd2,0xb4,0xd1, 0x98,0xd5,0xfe,0xe1, 0xe0,0x52,0xb7,0x9b, 0x4c,0x8e,0x2b,0xa7,
+ 0xfd,0xb0,0x20,0xb1, 0x2c,0x16,0x60,0x22, 0x6a,0x27,0x85,0x2b, 0x3d,0x4b,0xa6,0x8a,
+ 0x60,0x74,0x02,0xc2, 0x88,0x6c,0x5a,0x97, 0xa3,0x42,0xc3,0xd7, 0xda,0xaf,0x8d,0x3a,
+ 0x42,0xf3,0xef,0xc1, 0x22,0x40,0x9b,0x7e, 0x4e,0x4d,0x49,0x8e, 0xd2,0x2a,0x22,0xb0,
+ 0x80,0x2e,0x5e,0xba, 0x8a,0x55,0x60,0xaa, 0x23,0x09,0x29,0x12, 0x70,0x8a,0x0d,0x87,
+ 0x56,0x1e,0x26,0x80, 0x2c,0x11,0xa2,0xb6, 0x99,0x63,0x35,0x52, 0x83,0x3c,0xa6,0xb8,
+ 0xa5,0x65,0x81,0x82, 0xed,0x6f,0xfd,0x38, 0x24,0x5b,0x45,0x3c, 0xc0,0x53,0xb8,0xab,
+ 0x51,0x73,0x7d,0x5f, 0x8f,0x6a,0xcd,0xf7, 0xba,0x30,0x9c,0xa6, 0xa1,0xea,0x1d,0x32,
+ 0x30,0x0c,0x03,0xa9, 0x06,0x5a,0xf6,0x60, 0x1d,0x52,0xf4,0xb0, 0x22,0xe2,0x8e,0x51,
+ 0x02,0x65,0x00,0x8c, 0x59,0x90,0x24,0x5a, 0xf9,0x82,0x06,0x9c, 0x62,0xd7,0x33,0x55,
+ 0x8b,0x8f,0x8a,0x7d, 0xdb,0x4c,0x46,0x95, 0x00,0x7b,0x02,0x82, 0x65,0x01,0x1a,0x85,
+ 0x08,0x04,0x4d,0xa4, 0x31,0x21,0x59,0x40, 0x42,0x40,0x00,0x4a, 0xb5,0x97,0x22,0xa6,
+ 0x25,0x77,0xa2,0x06, 0xc7,0x1d,0xd9,0x29, 0x09,0x8a,0x64,0xe9, 0x18,0x6a,0x61,0x60,
+ 0x86,0x10,0x8b,0x5b, 0x41,0xa9,0x44,0x07, 0xd2,0xb9,0x6a,0x8b, 0x75,0x38,0xad,0x51,
+ 0x26,0x08,0x9c,0xa8, 0x8b,0xb8,0x98,0x8b, 0x0c,0x17,0x8b,0x54, 0x55,0x05,0xd4,0x94,
+ 0x0a,0xb6,0x04,0x48, 0x45,0x4d,0xbb,0x83, 0x54,0x0c,0x25,0xed, 0xa4,0xaf,0xec,0xc0,
+ 0xea,0x8a,0x50,0x82, 0x21,0x8d,0xb6,0x8a, 0xea,0x57,0x8c,0x27, 0x31,0x0a,0xc9,0x28,
+ 0x49,0x80,0x58,0xda, 0x40,0xbf,0x3b,0x05, 0x69,0xa2,0xf1,0x36, 0xcd,0x1d,0x99,0x49,
+ 0x20,0xa5,0x88,0x3d, 0x76,0x8e,0xe7,0x89, 0x02,0x58,0x56,0x95, 0x2d,0x25,0x75,0xdc,
+ 0x61,0x52,0xa9,0xa2, 0x06,0x81,0xa4,0x8a, 0x6a,0x80,0x41,0xfb, 0xfc,0x68,0x42,0x0b,
+ 0xef,0x3e,0x38,0xac, 0x57,0x18,0x54,0xc0, 0x49,0xb5,0x3e,0xca, 0x03,0xdc,0xd8,0xbc,
+ 0xab,0x33,0xd1,0x8a, 0x7d,0xeb,0xea,0xdd, 0x1f,0x02,0xf8,0x92, 0x45,0x23,0xcb,0xc1,
+ 0xc3,0x91,0x4b,0x48, 0x20,0x6c,0x6b,0xac, 0xda,0xf5,0x9e,0x24, 0xcc,0xaf,0x0b,0xbc,
+ 0xf1,0xeb,0x51,0xd5, 0x7b,0x5f,0x3b,0x85, 0xa4,0xa3,0x25,0x99, 0x3e,0x8d,0xcc,0xc2,
+ 0x83,0x35,0xc4,0xd1, 0x94,0x25,0x05,0xf7, 0x0d,0xf7,0x25,0x8d, 0x26,0x15,0xc3,0x72,
+ 0x56,0x82,0x89,0xbf, 0x8a,0x99,0x00,0xb2, 0xc2,0x5c,0xde,0x8a, 0x9b,0xc4,0xaa,0xf8,
+ 0x22,0x95,0xf3,0xe0, 0x12,0x1c,0x6b,0xf0, 0xa4,0x2b,0xf6,0xb1, 0xec,0x7d,0x46,0x1e,
+ 0x2d,0x9d,0xc7,0xb1, 0x99,0xa7,0x67,0xb5, 0xf9,0xfb,0x8b,0x3e, 0xae,0x5c,0x05,0xc5,
+ 0x10,0x63,0x30,0x02, 0xf6,0xe7,0x34,0xc8, 0x1a,0x12,0x70,0xfd, 0x4f,0xff,0x17,0x72,
+ 0x45,0x38,0x50,0x90, 0x08,0xe9,0x08,0x24,
+ // 0x5cd8 = 23768 data bytes (33%)
+};
+
+static BZ2Manager_t lecode_pal_bin_mgr
+ = { lecode_pal_bin_bz2, sizeof(lecode_pal_bin_bz2), 0, 0 };
+
+//-----------------------------------------------------------------------------------
+
+static const u8 lecode_usa_bin_bz2[] = // pool/ref/lecode/r32/lecode-USA.bin
+{
+ // decompressed size: 0x117a0 = 71584 bytes
+ 0x00,0x01,0x17,0xa0,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x65,0xce, 0x12,0x9b,0x00,0x29,
+ 0xa4,0x7f,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xe0, 0x4e,0xb7,0xd2,0x7d, 0x77,0x6f,0x7a,0xfb, 0xb0,0xbd,0x89,0x4a,
+ 0x7d,0x86,0x76,0xf7, 0xb3,0xdc,0x62,0xde, 0x37,0x57,0x6c,0xdc, 0xba,0x9f,0x77,0x5d,
+ 0xeb,0xba,0xb7,0x61, 0x9b,0x19,0x53,0xb3, 0x29,0x3b,0x34,0x3a, 0xd7,0xa0,0x4d,0xed,
+ 0xc7,0x36,0x1f,0x47, 0x56,0xc9,0xad,0x20, 0xc8,0xb7,0xd7,0xaf, 0x28,0x69,0xbe,0xa9,
+ 0x3d,0x96,0x7b,0xbb, 0xdb,0xcd,0xee,0xf7, 0xb7,0x7a,0xf7,0x7b, 0x5e,0x58,0x02,0xae,
+ 0x44,0xf4,0xe5,0x76, 0x0d,0x5a,0x3e,0xbd, 0x1f,0x2e,0xee,0xf3, 0x9f,0x54,0x78,0xfb,
+ 0x9f,0x45,0x75,0x6c, 0xee,0xf7,0xdc,0x28, 0xdb,0x79,0xf6,0xdc, 0xf5,0xa7,0xb7,0xa7,
+ 0x27,0x4f,0x7b,0xba, 0xaa,0xec,0x58,0x3e, 0xd9,0xf5,0xe7,0x6d, 0xf6,0xda,0xd6,0xdb,
+ 0xd3,0x1d,0xbb,0xb7, 0xc6,0x7c,0xf6,0xde, 0x7d,0xdd,0xc7,0x8f, 0x0b,0x7b,0x87,0x70,
+ 0xfb,0xb5,0xe3,0x21, 0xe8,0xfa,0x94,0x33, 0x6c,0xf1,0xf2,0xf7, 0x19,0xbd,0x5f,0x7d,
+ 0x76,0xf9,0xbe,0xd9, 0xed,0xf4,0x3c,0xa9, 0xe7,0x9f,0x43,0xec, 0xe9,0x1d,0xf6,0xf7,
+ 0xbd,0xd5,0xa7,0xdd, 0xf4,0x2a,0x5d,0xed, 0x6b,0xdc,0xfa,0x7b, 0xcc,0x7d,0x07,0x77,
+ 0x67,0xae,0xbb,0xd5, 0xdb,0xbb,0x4d,0x47, 0xac,0xec,0xf5,0xd6, 0x55,0x2f,0x2a,0x0e,
+ 0xf6,0x1a,0x22,0x04, 0x00,0x08,0x1a,0x00, 0x13,0x00,0x02,0x19, 0x18,0x13,0x43,0x23,
+ 0x10,0x18,0x4d,0x32, 0x31,0x03,0x4d,0x34, 0x0c,0x82,0x7a,0x64, 0x34,0x0d,0x4d,0x30,
+ 0x53,0xc1,0x36,0xa3, 0x11,0x9a,0x4c,0x4c, 0x4d,0x1a,0x34,0xd4, 0xf1,0x34,0xd3,0x53,
+ 0x03,0x20,0xc9,0x4f, 0x19,0x34,0x00,0xc9, 0xa2,0x93,0xf5,0x37, 0xa5,0x4f,0x69,0x89,
+ 0x4f,0x69,0xa9,0xe9, 0x92,0x83,0x53,0x44, 0x26,0x13,0x40,0x01, 0x31,0x32,0x60,0x08,
+ 0xc0,0x13,0x40,0x00, 0x09,0x84,0x64,0xc4, 0xd4,0xc2,0x64,0x68, 0x6d,0x12,0x78,0x4d,
+ 0x30,0x81,0x1a,0x9e, 0xd2,0x31,0xa9,0xe8, 0x35,0x19,0xa8,0x61, 0x3d,0x04,0x32,0x34,
+ 0x6d,0x53,0xda,0x9a, 0x34,0xd4,0xf5,0x33, 0x13,0x1a,0x69,0x1a, 0x6a,0x32,0x6f,0x41,
+ 0x26,0xc5,0x32,0x31, 0xa4,0xc9,0xe4,0x8d, 0x1e,0x28,0xf4,0x6a, 0x34,0x1a,0x9a,0x10,
+ 0x00,0x02,0x68,0x00, 0x99,0x06,0x89,0x80, 0xa6,0xc2,0x69,0x84, 0x19,0x09,0x9a,0x00,
+ 0xd5,0x3c,0xd0,0x99, 0xa9,0x89,0x93,0x09, 0xa9,0xe4,0xd0,0xd5, 0x33,0xca,0x6d,0x46,
+ 0xca,0x9f,0xa6,0xa9, 0xfa,0x26,0x51,0xea, 0x62,0x3c,0x89,0xe3, 0x25,0x3c,0xa3,0xd3,
+ 0x4d,0x1a,0x99,0xa9, 0x99,0x4f,0x4d,0x4f, 0x53,0xc4,0xd4,0xfd, 0x53,0xd1,0x1e,0xa7,
+ 0x94,0xd0,0x64,0xd1, 0x90,0x6c,0xa1,0xa3, 0xd1,0xa4,0x3d,0x27, 0xa8,0x00,0xd3,0x42,
+ 0x68,0x88,0x4c,0x26, 0x41,0x1e,0xa9,0xfa, 0x26,0x26,0x48,0xf0, 0x53,0x01,0x34,0xcd,
+ 0x54,0xf2,0x78,0x4d, 0x34,0x51,0xfa,0xa7, 0xe9,0x31,0xaa,0x3c, 0x9e,0x8a,0x34,0xc8,
+ 0x79,0x4f,0x14,0x79, 0x4f,0x4d,0x36,0xa6, 0x99,0x4f,0x49,0xed, 0x50,0xf5,0x06,0x08,
+ 0xcd,0x43,0x47,0x94, 0x0f,0x4d,0x26,0xd4, 0xc8,0x7a,0x9e,0x90, 0xda,0x43,0x43,0xd4,
+ 0x79,0x47,0xa8,0xf2, 0x9a,0x63,0x53,0x46, 0x8f,0xd2,0x20,0x1a, 0x69,0xa6,0x98,0xd4,
+ 0x7a,0x4d,0x1a,0x68, 0x06,0x9e,0x94,0x22, 0x23,0x2a,0x79,0x4f, 0x4d,0x36,0x93,0x53,
+ 0x53,0xd9,0x4c,0x34, 0x26,0x0a,0x66,0xd4, 0xc2,0x9e,0x53,0xd4, 0xc2,0x7a,0x7a,0x4d,
+ 0x27,0xa2,0x79,0x4d, 0x3d,0x35,0x34,0xd1, 0x9a,0x47,0xa1,0x3c, 0x93,0xd1,0xa6,0x84,
+ 0xc9,0xa0,0xd9,0x1a, 0x8d,0x30,0x6a,0x64, 0xd3,0x4d,0x34,0x34, 0xf5,0x06,0x99,0xa4,
+ 0x07,0xa4,0xd1,0x84, 0x64,0x19,0x0d,0x34, 0x00,0x1a,0x68,0x69, 0xa0,0x00,0x03,0x4d,
+ 0x03,0x4d,0x00,0x91, 0x22,0x10,0x02,0x34, 0x01,0x32,0x0d,0x34, 0x0d,0x53,0xc0,0x98,
+ 0x99,0x34,0xc9,0x93, 0x10,0x0c,0x43,0x53, 0x06,0x9a,0x34,0x99, 0xa5,0x3d,0x4c,0x6a,
+ 0x79,0x4f,0x14,0xf0, 0x6a,0x7a,0x26,0x4d, 0x34,0x68,0xd4,0xda, 0x18,0x8d,0x0d,0x05,
+ 0x3d,0x3d,0x53,0xd9, 0x24,0xf6,0x4d,0x1a, 0x69,0xa9,0xe8,0x64, 0x13,0xd2,0x9e,0x28,
+ 0xcd,0x4f,0x04,0x9e, 0x9e,0x8a,0x7e,0xa7, 0xaa,0x79,0x46,0x9e, 0xa7,0xa9,0x99,0x4f,
+ 0x4d,0x34,0x7a,0x1a, 0x9b,0x4a,0x0a,0xe1, 0x6c,0x2e,0x0f,0x07, 0x70,0x35,0x7a,0x94,
+ 0x70,0xa6,0xae,0x88, 0x27,0x60,0xc3,0xfa, 0x1d,0xaf,0x11,0xb9, 0x6c,0x92,0x4d,0x21,
+ 0x2e,0xd8,0xe9,0x0a, 0x8d,0x44,0x04,0x09, 0x96,0x70,0xa0,0x85, 0x5b,0x7c,0x58,0xe8,
+ 0x4c,0x55,0xa8,0x85, 0x0c,0x04,0x6e,0xd8, 0x01,0x75,0xa4,0x96, 0xa6,0x8d,0x5d,0x55,
+ 0x09,0x05,0x67,0x08, 0x21,0x41,0xcc,0x22, 0x08,0xe7,0x30,0x07, 0x63,0x9f,0x82,0x90,
+ 0x34,0x62,0xb6,0x25, 0x92,0xc2,0x44,0xf2, 0x9b,0x38,0xe6,0x98, 0x53,0x67,0xce,0x77,
+ 0x99,0xac,0xc3,0x76, 0xba,0xb5,0xea,0xd5, 0x87,0x39,0xb2,0xb5, 0xac,0x55,0x9a,0x9d,
+ 0xac,0xa3,0xcb,0xad, 0x1e,0xbd,0x88,0x97, 0x33,0x69,0x81,0x0a, 0xea,0x85,0x5b,0xab,
+ 0xf5,0x37,0xdb,0x7b, 0x37,0xf7,0xf8,0x18, 0x33,0xe5,0xe5,0x81, 0xe9,0x5a,0x61,0xfd,
+ 0x36,0xc0,0xe8,0x03, 0x0c,0xba,0x99,0xc3, 0x19,0x54,0xab,0xf6, 0x16,0x2e,0x9d,0x8f,
+ 0x57,0x5a,0xbd,0x78, 0x2b,0xc0,0x42,0x10, 0x96,0xa3,0x92,0xcd, 0x92,0x42,0x33,0x73,
+ 0x20,0x0a,0x5b,0xe6, 0x9c,0x06,0x53,0x2c, 0x0c,0xa9,0xf3,0x54, 0x28,0x5b,0x76,0x23,
+ 0x29,0x99,0x6c,0xaf, 0x41,0x10,0xe0,0x6a, 0xb3,0x24,0xc9,0x35, 0x93,0xe8,0x61,0x88,
+ 0x49,0x0a,0x4d,0xa2, 0x3b,0x93,0x8a,0xd9, 0x76,0xfa,0x4f,0x1f, 0x4d,0xe0,0x5c,0xb0,
+ 0x00,0xe4,0x00,0xe4, 0x01,0xbd,0xe7,0x33, 0xba,0xbd,0x4f,0xfa, 0xf4,0xb7,0x1d,0x57,
+ 0xcc,0xc2,0xeb,0x59, 0x6d,0x0c,0x63,0x69, 0x9e,0xa2,0x8f,0x96, 0xcd,0x03,0x47,0xbd,
+ 0x61,0xad,0x68,0xd1, 0x54,0x40,0x7e,0xcf, 0xdb,0xe9,0xe3,0xfe, 0xdf,0x4d,0xda,0xec,
+ 0x03,0x05,0xbb,0x06, 0x10,0x0c,0x69,0x6f, 0xb8,0x5c,0xf0,0xa9, 0x44,0xf1,0x4f,0x29,
+ 0x3d,0x39,0xf9,0xbd, 0x95,0xc5,0xdc,0x4a, 0x26,0x72,0x95,0xd3, 0x77,0x78,0x92,0x44,
+ 0xf2,0x98,0x38,0xdd, 0xf4,0x66,0x74,0x30, 0x2c,0xe3,0x78,0xc1, 0x2f,0x78,0x8c,0x60,
+ 0x60,0x20,0x85,0x01, 0xf2,0x3d,0xdf,0xa9, 0x5f,0x5d,0xeb,0xed, 0x54,0x33,0xc5,0x9f,
+ 0x19,0x84,0xd7,0x86, 0x9e,0xd4,0xaf,0x96, 0x72,0xd8,0xff,0x69, 0x13,0x1c,0xdd,0xda,
+ 0xc1,0x77,0x1e,0x15, 0xc6,0x0a,0x32,0x3a, 0x2b,0x25,0x16,0xa0, 0xe8,0x9e,0x6b,0x95,
+ 0x57,0x8c,0xba,0x2c, 0x59,0x7b,0x0a,0x37, 0x4a,0x58,0x1c,0x1a, 0x64,0x75,0x50,0x64,
+ 0x5b,0x51,0xdc,0xfd, 0x68,0x14,0xc8,0xcb, 0xa5,0x4a,0x3b,0x98, 0xba,0x84,0x6e,0xa9,
+ 0x1c,0x1c,0xe6,0x12, 0x7d,0x50,0x74,0xbf, 0xc2,0x2c,0xc9,0x58, 0x26,0x2a,0x2f,0xf5,
+ 0x52,0xd4,0xcb,0x13, 0xa0,0x9a,0x2e,0x5f, 0x60,0x6c,0xe8,0x0d, 0xb4,0x99,0x0b,0x00,
+ 0xc6,0xee,0x2d,0x2b, 0xc8,0xe2,0x5b,0x4a, 0xe3,0x97,0x69,0xef, 0xa9,0x35,0x84,0xea,
+ 0x6c,0x37,0xb2,0x60, 0x97,0x5d,0x54,0x14, 0x85,0xe6,0xa1,0x51, 0x37,0x21,0xf0,0xf0,
+ 0x5a,0xd5,0x66,0x41, 0x2e,0x03,0x9e,0x5e, 0xa6,0x50,0x44,0x3c, 0x42,0xde,0x90,0xa2,
+ 0x54,0xad,0xbe,0x9b, 0x8f,0x57,0x02,0xa8, 0x04,0x04,0xbd,0x49, 0x3d,0x55,0x40,0x04,
+ 0x84,0x5c,0xcc,0xd8, 0x7c,0xdc,0x13,0x94, 0xb6,0x6f,0xa6,0xd2, 0xd4,0xf8,0x2a,0x37,
+ 0x74,0xf5,0xf6,0xfb, 0xa3,0x2d,0x95,0x9c, 0x17,0xdf,0x3d,0x9e, 0x24,0xe5,0x53,0x0f,
+ 0x86,0xd6,0x2a,0x79, 0xcd,0x1a,0x47,0x46, 0x4f,0x0a,0x2c,0xb8, 0xca,0xec,0x28,0xb9,
+ 0x50,0x55,0x8e,0x64, 0x7c,0x2b,0x10,0x24, 0xbd,0xf7,0x51,0x20, 0xc9,0x1a,0x65,0xeb,
+ 0x01,0x1c,0x62,0xe0, 0x97,0x50,0xe2,0xfa, 0xa0,0xb4,0x53,0xf3, 0x19,0x7b,0x14,0xfa,
+ 0x50,0x79,0xcd,0x1a, 0x42,0x35,0x3e,0xf6, 0xe3,0x33,0xd0,0xb3, 0x7e,0xe4,0x10,0xdc,
+ 0x17,0x80,0x78,0xca, 0x9f,0x59,0x8b,0xd0, 0x3a,0x0c,0x71,0xe0, 0xbd,0xba,0xcb,0x76,
+ 0x22,0xee,0xca,0x5d, 0x5a,0x75,0xd4,0x29, 0x0c,0x1e,0x3c,0x3b, 0x95,0x27,0xee,0x45,
+ 0xfb,0x67,0x08,0xfb, 0x74,0x32,0xd4,0x5a, 0x98,0x9b,0x0d,0x3d, 0x44,0x00,0x31,0xe7,
+ 0x0b,0x5f,0x1a,0x63, 0x77,0x15,0xe1,0xc7, 0x57,0xb8,0x3c,0x30, 0x62,0x31,0x8b,0x38,
+ 0x5a,0x09,0x89,0x98, 0x8f,0x47,0xea,0x26, 0x7b,0x6a,0x07,0xe6, 0x1c,0xe6,0x18,0xee,
+ 0x88,0x9b,0x51,0xb2, 0x55,0x06,0x02,0x51, 0xac,0x6d,0x13,0x07, 0xbc,0xa1,0x95,0x65,
+ 0x76,0x51,0x7e,0x9f, 0xc0,0xc2,0xcf,0x9b, 0x55,0x6c,0x66,0x61, 0x82,0x92,0xad,0x38,
+ 0xe0,0x5f,0xf1,0x35, 0xdf,0xea,0xa7,0xe9, 0x24,0x75,0x5e,0x01, 0x16,0x72,0xa7,0x85,
+ 0xbb,0x5c,0xe1,0x82, 0x23,0xb5,0xab,0xa4, 0xa6,0xa4,0x02,0x5c, 0x2e,0x87,0xb7,0xe7,
+ 0x66,0xae,0xb1,0x08, 0xb4,0x70,0x08,0x63, 0xf7,0x03,0x92,0x18, 0xa8,0x96,0x71,0x61,
+ 0x10,0x35,0x5b,0x5a, 0x4f,0x7b,0x2d,0xa6, 0x70,0xdb,0xf3,0xa1, 0x33,0xef,0xaa,0x3d,
+ 0x4c,0xd9,0x48,0xc3, 0x4e,0xea,0x80,0xa6, 0x40,0x15,0xed,0x37, 0xba,0xdb,0xa4,0x16,
+ 0xce,0xad,0x35,0x73, 0x26,0x7a,0x9d,0x8a, 0x98,0xa7,0x64,0xc1, 0x15,0x8f,0x4a,0xba,
+ 0x39,0x53,0x5c,0xb7, 0xc0,0x5d,0x80,0xd6, 0xe1,0x53,0xa0,0x69, 0x6c,0x25,0xcf,0xc6,
+ 0xb4,0x0f,0x0f,0x1d, 0x51,0xd4,0x45,0x86, 0x93,0xa9,0x71,0x8c, 0xb4,0xde,0xc9,0x42,
+ 0x95,0x7a,0x93,0xed, 0x09,0xca,0xcf,0xb3, 0x21,0x80,0x4c,0x05, 0x71,0x70,0xdd,0x6a,
+ 0x0e,0xc1,0xa6,0xc9, 0x6c,0xc0,0x5b,0x51, 0x59,0xb1,0x76,0x5a, 0xad,0xed,0x5a,0x6e,
+ 0x0c,0xc5,0x40,0x79, 0xf9,0xcd,0x0b,0x8a, 0x1c,0xdf,0x99,0x62, 0x08,0x83,0x05,0x4b,
+ 0xc6,0xd2,0x39,0x6f, 0x7b,0xaa,0xa2,0x9a, 0x50,0x1a,0x40,0x2e, 0x1e,0x25,0x52,0x53,
+ 0x74,0x58,0x21,0x2b, 0xca,0x7b,0x52,0x9c, 0xc0,0x98,0x68,0x4f, 0x80,0xba,0xe3,0x95,
+ 0xe0,0x29,0xc7,0x24, 0x90,0x84,0x21,0x42, 0xb8,0xf8,0xc3,0x85, 0x65,0xb0,0xcf,0xa9,
+ 0x10,0x45,0x40,0xde, 0xcd,0x7e,0xf6,0xe9, 0xf4,0x40,0x57,0xcc, 0xc7,0x4a,0xe9,0xe5,
+ 0xd2,0x81,0x77,0x11, 0x87,0xe4,0x18,0x7b, 0x8e,0x37,0x1c,0xea, 0xc2,0x0b,0xaa,0x16,
+ 0x94,0x40,0xe0,0x43, 0xaf,0x8b,0x42,0xc5, 0x5c,0x2b,0x78,0xb6, 0xd1,0x1a,0x19,0x3b,
+ 0x45,0x1f,0x84,0x82, 0xb5,0xe1,0x45,0x23, 0x1c,0x4f,0xd5,0x59, 0x89,0x85,0x69,0x83,
+ 0x62,0x35,0x7b,0x16, 0xe2,0xf5,0xc8,0xa8, 0x1d,0xa5,0x6f,0x10, 0x66,0xb7,0x9c,0xfd,
+ 0x26,0xe5,0xc8,0x56, 0x30,0x31,0x68,0x92, 0x24,0xa7,0x70,0x81, 0xca,0xe8,0x05,0xc4,
+ 0xcc,0x18,0x52,0xe8, 0xcc,0x40,0x8d,0x28, 0x44,0x38,0x92,0x53, 0x54,0x8e,0x21,0xbf,
+ 0x86,0xf4,0x40,0x03, 0x85,0x5a,0xb9,0x58, 0x38,0x23,0x9d,0x21, 0x20,0x9d,0xfa,0xe2,
+ 0xb4,0xfd,0xc6,0x4e, 0xcf,0xd7,0xe0,0x2d, 0x0a,0xf6,0xa4,0xf7, 0xb0,0x76,0xd6,0xa6,
+ 0x11,0xe0,0x4c,0x69, 0x11,0xf0,0x38,0x65, 0x2f,0x2e,0xd7,0xe3, 0xbf,0x34,0xdc,0xa7,
+ 0x42,0x6d,0x60,0xd0, 0xe1,0xc0,0x51,0x85, 0x70,0x39,0x16,0xa8, 0xdc,0x61,0xdf,0x31,
+ 0xa4,0x6a,0x31,0xcb, 0x56,0xf2,0x5a,0x14, 0xf6,0x56,0x5a,0xd1, 0xaf,0x79,0x70,0xdb,
+ 0x6d,0xa7,0xfb,0x7c, 0x4c,0x53,0x5f,0x94, 0xe7,0xa6,0x6c,0xd1, 0x4d,0x21,0xa3,0x14,
+ 0xc0,0x8a,0x2d,0x97, 0x23,0x31,0xe2,0x74, 0x3d,0x8c,0x49,0xb2, 0x06,0xf8,0x19,0xb3,
+ 0x3d,0x25,0xc2,0x73, 0x21,0xdf,0xdc,0x07, 0xb6,0x2d,0x4e,0x31, 0x28,0x42,0xcc,0x79,
+ 0x4e,0xd2,0x66,0xa5, 0x0c,0x9d,0x54,0xbe, 0x7e,0x52,0x6f,0xa4, 0x41,0xd9,0xc6,0xe5,
+ 0xb6,0xfd,0xaf,0x4d, 0x9a,0xce,0x0c,0xfc, 0xe4,0xcf,0x6f,0x6f, 0x4a,0xfd,0x8c,0x94,
+ 0xd3,0x47,0xe7,0x7c, 0x75,0x82,0xdd,0xfd, 0xc5,0xdf,0xc8,0x5e, 0x4e,0x7d,0xb8,0xce,
+ 0x61,0x7b,0x76,0x87, 0x4c,0x5b,0xb2,0xe3, 0xae,0xd0,0x58,0x28, 0x3d,0x42,0x24,0xf1,
+ 0x02,0x95,0x25,0x04, 0xef,0x22,0x21,0x70, 0xea,0xac,0xcc,0xcc, 0xb1,0x8e,0xd1,0x76,
+ 0x07,0xad,0x2e,0xf3, 0x35,0x9f,0x80,0xa3, 0x9b,0x85,0xf9,0xb9, 0x74,0x33,0x2d,0x5b,
+ 0xea,0x54,0x24,0x78, 0x8d,0xa4,0x48,0x17, 0xda,0x7b,0xe2,0x82, 0xeb,0x1b,0x18,0x38,
+ 0x98,0xba,0xce,0x3b, 0xf1,0xfb,0x1c,0xbb, 0xfe,0x3c,0x7d,0xaa, 0xd1,0xce,0x7f,0xbb,
+ 0x57,0x1f,0xb3,0x85, 0x45,0xf3,0xa4,0x5d, 0x40,0x3b,0x28,0x68, 0xcc,0xc5,0x59,0xb6,
+ 0x96,0x43,0x8e,0xa7, 0x77,0x67,0xde,0xad, 0x00,0x15,0x49,0x4c, 0x67,0xd0,0x17,0xe7,
+ 0xa3,0xae,0x2f,0x60, 0x88,0x6b,0x46,0xc5, 0x59,0x30,0xb0,0x10, 0xcc,0x9b,0xe6,0x6e,
+ 0x27,0xcc,0x10,0xdb, 0x05,0xe1,0x5e,0x78, 0xb2,0x76,0xcc,0x63, 0x19,0x8a,0x57,0x07,
+ 0x00,0x27,0xf7,0x5d, 0x33,0x24,0x6a,0x2a, 0x7e,0x51,0xc2,0x69, 0x01,0x0b,0xa3,0xbc,
+ 0x6e,0xf7,0x9c,0xff, 0x5d,0x0d,0x0f,0x74, 0x3b,0x9d,0x48,0xc9, 0x85,0xf7,0x5f,0x34,
+ 0x92,0x04,0x22,0x7d, 0x3a,0xca,0x23,0x38, 0x70,0x21,0x55,0x4b, 0x13,0xc7,0x82,0x19,
+ 0xda,0x5d,0x24,0x46, 0x02,0xe2,0xf3,0x4d, 0x89,0xbf,0xa7,0x05, 0x53,0x4c,0x21,0xaf,
+ 0xa5,0xd1,0xe9,0x66, 0x38,0x18,0xbd,0xa5, 0x2a,0x81,0x59,0x40, 0x51,0x3e,0xeb,0xb0,
+ 0xe0,0x56,0xca,0x6a, 0x0a,0xd8,0xc7,0x9f, 0x79,0x13,0xe2,0x54, 0x85,0x9f,0x82,0x42,
+ 0xcd,0x80,0xbd,0x84, 0x7f,0x9c,0xba,0x82, 0x8c,0xa2,0x8f,0x38, 0x2f,0x18,0xc6,0x31,
+ 0x94,0x00,0xca,0x4a, 0x69,0x77,0x20,0x20, 0x8f,0x7d,0x4c,0xf0, 0x4c,0xfd,0x1b,0x00,
+ 0xe4,0x31,0x23,0x6a, 0x84,0x05,0xd9,0x0e, 0x26,0xed,0x9c,0x9c, 0x72,0xb9,0x54,0xea,
+ 0x4a,0xe8,0x0a,0xec, 0xd9,0x75,0xb5,0xcc, 0x47,0x3f,0x5d,0xb0, 0xbb,0x31,0x04,0xf6,
+ 0x0e,0x03,0x25,0x95, 0x4b,0xfb,0xf6,0x58, 0x52,0xd4,0x64,0xe0, 0x49,0x01,0xa0,0x8d,
+ 0x07,0x06,0x08,0x39, 0x8b,0xbc,0x40,0x39, 0x86,0x51,0xc6,0xaf, 0x0a,0xd0,0x5c,0xcd,
+ 0xb1,0x93,0x4f,0x77, 0x7e,0x0f,0xa6,0x2a, 0x0d,0xc3,0x60,0xa1, 0xa2,0x75,0x61,0x11,
+ 0x9c,0xf3,0x1b,0x10, 0xc2,0xdc,0x6c,0xcf, 0x7c,0xf3,0x4c,0x35, 0x4c,0xe5,0xef,0xeb,
+ 0xea,0xb5,0xf1,0x2f, 0x34,0xbe,0x2d,0x44, 0xa2,0x72,0xf4,0xb4, 0x9b,0x47,0xa1,0xa9,
+ 0x2a,0x34,0x49,0xcf, 0x7e,0xb4,0xd1,0xd7, 0xb0,0x59,0xc3,0x00, 0x15,0x82,0xd8,0xb7,
+ 0xff,0xf3,0x53,0xff, 0x2e,0x97,0xd5,0x6b, 0xb5,0x3f,0xbc,0x95, 0x05,0x2c,0x56,0x96,
+ 0x32,0xb0,0x18,0xb4, 0x93,0x88,0x80,0xa6, 0x7d,0x27,0x29,0x0b, 0x8a,0x58,0x01,0x84,
+ 0x00,0x9a,0xbc,0x00, 0xf9,0xad,0x9a,0xb4, 0x1c,0xf5,0x2d,0x2f, 0xdf,0x98,0xe2,0x1f,
+ 0x57,0x01,0xa7,0x1d, 0x70,0xd9,0x4d,0x05, 0x4d,0x33,0x85,0xd7, 0xb5,0x31,0x81,0x13,
+ 0xad,0xe0,0xbc,0xdb, 0xf3,0x4f,0x9a,0xd0, 0x30,0x06,0x98,0x48, 0x89,0x32,0xc3,0x5c,
+ 0xe6,0x7d,0x50,0xb8, 0xda,0xe9,0x31,0xf6, 0xb8,0xe6,0x34,0x5b, 0x1c,0x7b,0x38,0xcd,
+ 0x38,0xe2,0xcd,0xa4, 0x03,0x4e,0x04,0xee, 0x5b,0x73,0x64,0x65, 0x47,0x61,0x55,0x9a,
+ 0x6c,0x61,0x7b,0xcd, 0xd3,0xb4,0x25,0xae, 0xb0,0x0f,0x12,0x46, 0x5d,0xe1,0x9f,0x9c,
+ 0xd4,0x42,0x7c,0x6c, 0x5b,0xbb,0xe8,0xc3, 0xa3,0xe4,0x6b,0x56, 0x46,0x8a,0xff,0xb3,
+ 0x78,0xc7,0xa5,0x6e, 0xaa,0x82,0x26,0x7e, 0x5e,0xd3,0x8c,0xa5, 0x11,0x34,0x41,0x31,
+ 0xac,0x92,0x1b,0x67, 0x5e,0x54,0x68,0xd4, 0xf2,0x49,0xf3,0xa1, 0x4d,0xa0,0x40,0xce,
+ 0xc5,0x3c,0x68,0xdc, 0xec,0xed,0xda,0xdd, 0x57,0x05,0x97,0x78, 0x0e,0x17,0x50,0x01,
+ 0x20,0x5a,0x92,0x80, 0x66,0x6d,0xdb,0xb2, 0x06,0x84,0x20,0x14, 0x25,0xcc,0x5d,0xc7,
+ 0x93,0x3e,0xbb,0x64, 0x36,0xe3,0x4e,0xad, 0x5b,0x42,0x60,0xbb, 0xda,0x71,0x83,0x25,
+ 0x50,0x12,0xf1,0x26, 0x00,0x4c,0x84,0x41, 0xd4,0x4f,0x81,0x8d, 0x12,0x9d,0x0a,0xa2,
+ 0x0e,0x26,0x67,0x3f, 0x6d,0x37,0x77,0x72, 0xa8,0x55,0xca,0x8d, 0xef,0x3a,0xb5,0xb2,
+ 0x94,0x8e,0x71,0x01, 0xa9,0xeb,0xea,0x19, 0xd8,0x9f,0x94,0xe1, 0x20,0xa4,0x62,0x65,
+ 0x16,0x52,0x57,0xcc, 0x5b,0x02,0x33,0x24, 0xb3,0x38,0xea,0xa7, 0x06,0xd6,0x65,0xb7,
+ 0x1b,0x82,0xc8,0x58, 0x02,0x10,0x18,0x60, 0x10,0x30,0x91,0x2f, 0xe1,0x1d,0x59,0x0e,
+ 0xad,0x25,0x6e,0x00, 0xb2,0xa5,0x97,0xe4, 0x12,0x95,0xc3,0x38, 0x93,0x2c,0x4e,0xde,
+ 0x5b,0xa6,0x31,0x44, 0xe1,0x55,0x5d,0xae, 0x59,0x3f,0x85,0x7b, 0xdb,0x40,0xf1,0x59,
+ 0x69,0x99,0xa9,0x30, 0x66,0x13,0x8e,0x24, 0xcb,0x39,0x3e,0x12, 0x69,0x26,0xe5,0x9e,
+ 0x07,0xa0,0xc2,0x59, 0x20,0x6f,0x6b,0xe7, 0x69,0xe6,0x8c,0xfc, 0xd7,0xc7,0x0d,0x8e,
+ 0xa4,0xc5,0xc7,0x56, 0x52,0x98,0x48,0xe7, 0xe7,0x9f,0x4c,0xca, 0x2e,0xcc,0xee,0x29,
+ 0xa0,0x42,0x35,0x6b, 0x6a,0xb6,0x51,0x44, 0xcc,0x6a,0xfa,0x7f, 0x1b,0x75,0x6a,0xf8,
+ 0x7c,0xda,0x8f,0x24, 0xee,0xb3,0x14,0x8d, 0x16,0x34,0x88,0x72, 0x24,0x34,0xfe,0x5b,
+ 0x75,0x55,0x4e,0xbd, 0x59,0x88,0x98,0xe4, 0x2e,0x6e,0xf0,0xba, 0xd2,0x01,0x19,0xa4,
+ 0x96,0x6b,0x03,0x50, 0x9b,0x36,0x11,0x43, 0x5a,0x66,0x1a,0x46, 0x6a,0x13,0x49,0x38,
+ 0x82,0x1a,0x87,0xf4, 0x98,0x51,0xa3,0x70, 0xb3,0x5a,0xdb,0xb1, 0x14,0x8e,0xc5,0x30,
+ 0x10,0xc2,0xcb,0xc9, 0x68,0xa1,0xa4,0x0d, 0x92,0x1c,0x34,0x91, 0x0c,0x0e,0x61,0xd1,
+ 0xaa,0xa2,0x5c,0x95, 0xe9,0x48,0x3d,0x56, 0xa6,0xb1,0x23,0x65, 0x3b,0x32,0x69,0x96,
+ 0x5a,0x2c,0x83,0x4d, 0x82,0xac,0xd4,0x98, 0x91,0x8c,0xc9,0x10, 0x9a,0xc5,0x11,0x20,
+ 0xc6,0x35,0xd8,0x70, 0x2c,0xea,0xeb,0x6e, 0x28,0xb2,0x02,0x0a, 0x03,0x92,0x55,0xaf,
+ 0xdb,0xa3,0x50,0xca, 0xe1,0x44,0x41,0x94, 0x41,0x83,0xa6,0x26, 0x89,0x92,0xbf,0xe8,
+ 0xd7,0x40,0x36,0x55, 0x48,0x73,0x4b,0x9e, 0x46,0x01,0x95,0x7f, 0xa1,0x11,0xce,0xd3,
+ 0xa2,0x3e,0x14,0x73, 0x37,0x8c,0x85,0x13, 0x59,0x96,0xe3,0x5e, 0x8a,0xcf,0x01,0xc1,
+ 0x7e,0x82,0x5e,0xae, 0xc3,0x7a,0x7c,0x6d, 0x73,0xa2,0x9e,0x77, 0xdb,0xa8,0x24,0xe8,
+ 0x2f,0x27,0x04,0x6a, 0x4b,0x51,0xa5,0x65, 0x41,0x03,0xb2,0x0a, 0x24,0x06,0xd1,0x02,
+ 0x53,0x34,0x1c,0xc4, 0x14,0xbd,0xe1,0x0f, 0xc5,0xc3,0x09,0x9d, 0x76,0x57,0xd5,0x4f,
+ 0x29,0xb7,0x0d,0x1e, 0x9a,0xca,0x79,0x57, 0x27,0x98,0x96,0xb2, 0x97,0x01,0x1e,0x75,
+ 0x26,0xb0,0x5b,0xf0, 0x1a,0xdb,0x21,0x8c, 0xaa,0xd2,0x7a,0xc3, 0xaf,0x35,0xb9,0x94,
+ 0x49,0x42,0x6c,0xb6, 0xd7,0x3d,0x0c,0x5e, 0x65,0xf1,0xc0,0x1d, 0xea,0x5c,0x3c,0xe7,
+ 0x0d,0x7c,0x0d,0x88, 0xbb,0xfe,0x9b,0xc5, 0x87,0x66,0x6b,0xd2, 0xa6,0x47,0x3d,0x76,
+ 0x0c,0x1d,0x3f,0xef, 0x33,0x27,0x7a,0xeb, 0xa0,0xad,0xd0,0xf5, 0xb7,0xf8,0xd3,0xd3,
+ 0x48,0x86,0xdc,0xe3, 0xf1,0x65,0x9f,0xa3, 0x4e,0xe8,0xd5,0x28, 0x31,0x6a,0xcf,0x84,
+ 0x9d,0xd3,0x54,0x1c, 0xe5,0xf9,0xe9,0x37, 0x26,0xf4,0x5c,0x20, 0x03,0x13,0x06,0x30,
+ 0xb4,0x19,0xf0,0x47, 0x06,0xda,0x2e,0xe5, 0x46,0x27,0x40,0xbe, 0xbe,0xd4,0x6c,0x67,
+ 0xad,0x2b,0xac,0xe4, 0x87,0x19,0x62,0x1b, 0x96,0x91,0xbf,0x6a, 0xfa,0x23,0x9d,0xa2,
+ 0x42,0x0f,0x39,0x92, 0x64,0xcd,0xeb,0xb8, 0xd7,0x89,0xa3,0xca, 0xd4,0xad,0xf7,0x4e,
+ 0x36,0x25,0xcb,0x1c, 0x13,0x06,0x2a,0x16, 0x9c,0x6c,0x21,0x82, 0x7c,0x8f,0xe3,0x65,
+ 0x69,0xb6,0xe7,0xe6, 0x20,0x47,0x88,0x23, 0xd0,0x5c,0x48,0x6d, 0xa0,0x74,0x95,0x3a,
+ 0x10,0x92,0x0e,0xe6, 0x73,0x78,0xb5,0x58, 0x39,0xb2,0x52,0xa2, 0x26,0x38,0x53,0xa0,
+ 0x96,0x2f,0xff,0xa6, 0xe5,0x6f,0x00,0x83, 0xee,0xac,0xed,0x99, 0xdc,0x8c,0x2b,0x5a,
+ 0xd8,0xff,0xab,0xfd, 0x74,0xd2,0x57,0xc9, 0x38,0x59,0xed,0x66, 0x05,0xa8,0xa2,0x4e,
+ 0x25,0x4c,0x3a,0x84, 0x90,0x50,0xd0,0x5b, 0x03,0xc2,0x8f,0x66, 0xc5,0xf6,0xe6,0x6b,
+ 0x3b,0x3d,0x95,0x0a, 0x7b,0x95,0xdf,0x63, 0x71,0x72,0xe9,0x32, 0x5a,0x17,0x01,0xf8,
+ 0x6f,0xc7,0x79,0x6c, 0xd5,0xe8,0x9e,0xeb, 0x10,0xd5,0xc4,0x72, 0x13,0xdf,0xdd,0xc2,
+ 0xc9,0x92,0xb5,0x61, 0xbd,0xde,0x1b,0xa8, 0xdb,0x88,0x09,0xc9, 0xc7,0x77,0x40,0x8c,
+ 0x1a,0xdf,0x75,0x0c, 0x12,0xb6,0x6f,0x5d, 0x38,0x17,0x96,0x74, 0xd4,0xb4,0x41,0xe8,
+ 0x1d,0x04,0x86,0xc6, 0x35,0xe1,0x03,0x57, 0xf8,0x3e,0x1f,0x19, 0x47,0xc2,0xf7,0x30,
+ 0xa5,0x13,0x4c,0x14, 0x1e,0xb4,0xa6,0xaf, 0x1b,0x90,0xb8,0x5e, 0xd1,0x7e,0xe5,0x07,
+ 0x88,0xb9,0x61,0x91, 0x23,0x4b,0x90,0x13, 0xb1,0xa2,0x09,0x11, 0xa5,0xf8,0x87,0x04,
+ 0x0b,0xc9,0x20,0x28, 0xd1,0x87,0x42,0xd1, 0xa8,0xa2,0x80,0xd3, 0x7d,0x32,0x8b,0xb4,
+ 0xa4,0x0d,0x63,0xf4, 0x2c,0x7c,0x0c,0x76, 0x13,0x18,0x1c,0x13, 0x8c,0x92,0xe9,0x78,
+ 0xb1,0x9b,0x38,0xa1, 0x21,0xcb,0x1d,0xed, 0x2c,0x30,0xe1,0xda, 0xfb,0x5b,0x51,0x1d,
+ 0x82,0xce,0x15,0xdb, 0x85,0xd1,0x7b,0x8c, 0x4c,0xee,0x40,0xb6, 0x7c,0x22,0x37,0xdc,
+ 0x65,0x00,0x39,0x30, 0xa9,0x8f,0xce,0xc3, 0xb8,0xcc,0x22,0xf8, 0x75,0x41,0xde,0x99,
+ 0x76,0x95,0x31,0x41, 0xef,0x14,0x0c,0xce, 0x12,0xdc,0x29,0x7f, 0x8c,0xa9,0x78,0x81,
+ 0x6c,0xa5,0x19,0xa1, 0x5e,0x11,0x58,0xa9, 0x74,0xe4,0x5b,0x02, 0x18,0x95,0x04,0xb7,
+ 0xa5,0xf0,0xa0,0xdf, 0xa1,0xab,0x66,0x77, 0x53,0x35,0x25,0xf4, 0x99,0x0a,0xf6,0x34,
+ 0x49,0x8c,0x7b,0xd8, 0xd6,0x4b,0x1d,0x84, 0x9a,0x6d,0x83,0x46, 0x24,0x05,0x96,0x1a,
+ 0x2b,0x77,0x64,0x52, 0xea,0x68,0x41,0x23, 0x3a,0x21,0x3a,0x79, 0x03,0x86,0x86,0x2c,
+ 0x84,0x42,0xd6,0x24, 0x69,0x14,0xf0,0x71, 0x28,0x69,0xd6,0x4a, 0x0d,0x4c,0x65,0x17,
+ 0x01,0x75,0xa6,0x1f, 0x0d,0x6a,0xcc,0x30, 0x91,0xc9,0x29,0xc5, 0xce,0x82,0xc2,0xb3,
+ 0x5a,0xbd,0x4e,0x71, 0xb0,0xd4,0xd1,0xa0, 0x83,0x86,0xe5,0x2e, 0xad,0x63,0x2a,0xc9,
+ 0x22,0x6f,0x25,0xa5, 0x6d,0x0d,0x26,0x0b, 0x3c,0x05,0x0a,0x14, 0x85,0xe1,0x9d,0x6e,
+ 0x22,0x8d,0xf9,0x20, 0xa2,0x25,0x47,0x22, 0xbc,0x1c,0x5c,0x7c, 0x78,0xeb,0xb7,0x71,
+ 0xf2,0x3b,0xf9,0x56, 0x76,0x79,0xb3,0x6b, 0x34,0xae,0xdc,0xd9, 0x08,0x50,0xd1,0xda,
+ 0x9c,0x76,0x1a,0x54, 0xa0,0x26,0x13,0x80, 0xff,0x5f,0x6c,0xe2, 0x64,0x23,0x03,0x0b,
+ 0x34,0x0d,0x84,0xc8, 0x88,0xd9,0xb6,0x90, 0xe5,0x9f,0x45,0x59, 0x1d,0x51,0x5d,0xe4,
+ 0xe5,0xec,0x9d,0xdc, 0x36,0x0e,0xcf,0xdb, 0x2e,0x86,0xbe,0x00, 0x3f,0xb3,0xf2,0x74,
+ 0x1b,0x3b,0xbe,0x5c, 0xd2,0x2c,0x11,0x9f, 0x6f,0x23,0x3c,0x6a, 0xb3,0xbb,0xb9,0xf3,
+ 0xbe,0x0c,0xe0,0xef, 0xb8,0x7a,0x6c,0x6f, 0xe0,0x3b,0x04,0x90, 0x6b,0x1e,0xa7,0xb0,
+ 0xf9,0xf1,0x17,0xcb, 0xdd,0x6d,0xdc,0x7d, 0x23,0xfe,0x84,0xad, 0x51,0x13,0xb1,0xd8,
+ 0x08,0xf8,0xf1,0x9e, 0x44,0x92,0x98,0x94, 0x10,0x84,0x58,0x7e, 0xa1,0x58,0x95,0x62,
+ 0x2e,0x97,0x3d,0xaf, 0xa0,0xd2,0x66,0xe9, 0x0a,0xa5,0x29,0x13, 0xe7,0x78,0x96,0xbb,
+ 0x7b,0xfd,0xc5,0x7e, 0xe7,0x96,0x30,0xf0, 0xe9,0x22,0x22,0xb6, 0xc1,0xa0,0x31,0x5a,
+ 0x0e,0x9d,0x86,0xd4, 0xd9,0x0c,0x8f,0x15, 0xfd,0x35,0x07,0x27, 0xc0,0xe8,0x47,0x6d,
+ 0xc1,0x00,0x33,0x07, 0x6f,0x10,0x11,0xef, 0x24,0xc5,0x34,0xc9, 0x78,0x0b,0x25,0x88,
+ 0xbc,0x82,0x41,0xef, 0x28,0x86,0x86,0x76, 0xdf,0x24,0x56,0xfc, 0x9e,0x0e,0x79,0x5d,
+ 0xbf,0x9a,0x33,0xf8, 0x2e,0xd9,0x16,0x60, 0x66,0x37,0x44,0x84, 0x6a,0xb1,0x75,0xe5,
+ 0x8a,0x30,0xe1,0xbc, 0x3d,0x56,0x16,0x2e, 0x34,0xdb,0x1b,0x7f, 0x86,0xd2,0xe5,0xf8,
+ 0x60,0xd5,0xd5,0x5f, 0xbb,0xb7,0x29,0x51, 0xc8,0xa8,0x73,0xc5, 0x33,0x13,0xbb,0x46,
+ 0x02,0xfa,0x73,0x45, 0xea,0xad,0x5f,0x18, 0x2d,0x7d,0x2f,0xf9, 0xfa,0x6f,0xc7,0x8b,
+ 0x75,0xd6,0xc1,0x5c, 0x0d,0x0b,0x55,0x9b, 0xb7,0xd8,0x4b,0x24, 0xa1,0xb6,0x97,0x38,
+ 0x6a,0x27,0x4c,0x16, 0x6a,0xcb,0xc9,0x31, 0xbf,0xec,0x80,0x61, 0xa6,0x41,0x15,0x04,
+ 0x8a,0xe4,0x6d,0xe9, 0x01,0x91,0xb5,0x85, 0xb7,0x6b,0xd5,0xb1, 0x74,0x6d,0x1c,0xfe,
+ 0x00,0xdb,0x6e,0x0e, 0xb0,0x6a,0x4d,0x74, 0x23,0x18,0xd7,0x49, 0xfc,0x50,0x4f,0x31,
+ 0x60,0x62,0x72,0xb9, 0xd4,0x2c,0xa3,0xbc, 0x3b,0xfe,0x36,0xb5, 0x16,0x14,0x76,0x5b,
+ 0xa9,0x1c,0x0b,0x3f, 0x01,0x90,0xc9,0x44, 0x3f,0x22,0x12,0x86, 0x45,0x11,0x39,0x34,
+ 0x8c,0x6f,0x6d,0x17, 0x19,0x43,0x48,0xd9, 0x6a,0xfb,0x3d,0x0e, 0x13,0x28,0xd0,0x11,
+ 0x0b,0x44,0x3a,0x86, 0x1d,0xa3,0x54,0xdf, 0xd2,0x70,0xff,0x87, 0x66,0x52,0x7c,0x86,
+ 0x2f,0x52,0xb5,0x9d, 0x5e,0xa3,0x33,0x67, 0x51,0x6f,0x6d,0x29, 0x21,0x6d,0x19,0xe4,
+ 0xb4,0x50,0x72,0x10, 0x91,0x53,0x25,0x61, 0x96,0x75,0xa4,0xe7, 0xaa,0xc9,0xa4,0xda,
+ 0x9f,0xe9,0x4f,0xbb, 0xaf,0x1d,0x9f,0x3c, 0x52,0x32,0x5c,0x04, 0x26,0xa7,0xaf,0x3e,
+ 0xd0,0x30,0x0c,0x52, 0xcd,0x58,0xc3,0x81, 0x73,0x81,0x70,0x4a, 0xb0,0x28,0x06,0x6c,
+ 0x2a,0x23,0xc8,0xe6, 0x6a,0xb8,0xa6,0x74, 0x1b,0x35,0xf9,0x95, 0x4e,0x0e,0xe8,0xa5,
+ 0x1f,0x9c,0xe9,0x2c, 0xfd,0xa5,0x23,0x42, 0xf0,0xa8,0x7f,0x3d, 0x78,0x99,0x03,0xce,
+ 0xaf,0xdb,0x54,0xab, 0x3e,0x4d,0xcc,0x16, 0xab,0xfb,0x08,0x94, 0x2e,0xc3,0x68,0xa4,
+ 0x4f,0x79,0x1d,0x41, 0xa0,0x73,0xd1,0x52, 0x15,0xdc,0xeb,0xb1, 0x1d,0xa8,0xa6,0x17,
+ 0x55,0x73,0x53,0x6a, 0x0a,0xbf,0x35,0x40, 0xe2,0xc6,0x6a,0xb6, 0x3a,0x80,0xc0,0x6b,
+ 0x18,0xf8,0xba,0x93, 0x84,0x8b,0x7d,0x24, 0xbd,0xa4,0xc1,0x09, 0x41,0x38,0xe0,0x36,
+ 0xd6,0xf3,0x6f,0x97, 0xc1,0xab,0x3d,0x3e, 0x0e,0xca,0xbf,0xaa, 0x76,0x38,0xa0,0x62,
+ 0x8c,0x47,0x49,0x1f, 0x55,0xac,0xbc,0x57, 0x5e,0xae,0xd6,0xdf, 0x6f,0xe6,0xcf,0xfb,
+ 0x58,0x08,0xc5,0xd7, 0x32,0x52,0x4a,0x6d, 0x78,0xdf,0xe5,0xad, 0xc4,0xba,0xc9,0xf7,
+ 0x24,0x00,0x10,0x09, 0x53,0xd9,0x7b,0x9e, 0xc7,0x2e,0x9a,0x4a, 0xcc,0x21,0xa4,0x0d,
+ 0x03,0x7a,0x66,0x40, 0xc1,0xb4,0x92,0x60, 0x9f,0xfb,0xe8,0x45, 0x2a,0x1b,0x6c,0xae,
+ 0x6d,0xa8,0x62,0x42, 0x21,0x44,0xde,0x7c, 0xb5,0x60,0x67,0x3e, 0xd7,0x9d,0x8b,0xb4,
+ 0x88,0x9d,0x09,0xd3, 0xb3,0x66,0x23,0xee, 0x36,0xb4,0xa6,0x3c, 0x47,0xd1,0x94,0xb5,
+ 0xa5,0x26,0x7b,0x38, 0xcc,0xc5,0x08,0xb0, 0x55,0x62,0x18,0x38, 0x20,0x92,0x33,0x04,
+ 0xf2,0x15,0x19,0xf0, 0x81,0xb6,0x37,0xd4, 0xc3,0x89,0x47,0x05, 0x68,0x2b,0x22,0xaa,
+ 0xc1,0x3c,0x57,0xa1, 0x28,0x44,0xe8,0x19, 0x78,0xb5,0xba,0xb0, 0x6f,0xab,0x5c,0xb3,
+ 0x30,0x8b,0xd7,0x4e, 0x8b,0x1f,0x26,0x8a, 0x1e,0xbc,0xaa,0x0d, 0x4f,0x48,0x20,0xef,
+ 0xd6,0x01,0xe8,0x95, 0x04,0xc5,0x83,0x58, 0xe2,0xf4,0xb3,0x0c, 0x2a,0xdf,0xd0,0x20,
+ 0xe0,0xcb,0x85,0x57, 0xde,0xf4,0x7b,0x99, 0x8f,0xc5,0x20,0x06, 0xb0,0xe1,0x11,0x10,
+ 0x85,0x5d,0x81,0x2a, 0xe4,0x7a,0xbf,0x52, 0x37,0xd3,0xfd,0x92, 0x47,0xf3,0x30,0x90,
+ 0xd1,0x36,0x92,0x1b, 0x11,0x8b,0x10,0x83, 0x97,0xaf,0x2c,0x19, 0x98,0xe5,0x54,0x75,
+ 0xd1,0x4c,0xb7,0x65, 0x29,0x18,0x0c,0x0f, 0x29,0xcf,0x56,0x55, 0x91,0xa2,0x39,0xca,
+ 0x7a,0x53,0xa2,0x2d, 0xca,0xcb,0x0c,0x3a, 0xe6,0x17,0x55,0x83, 0x7d,0xd1,0xf9,0x47,
+ 0xdc,0x56,0x61,0xb4, 0xb4,0x75,0x01,0x24, 0x18,0x62,0xdc,0xd2, 0x8f,0x63,0x50,0x1c,
+ 0x11,0x42,0x7c,0x15, 0x12,0xc2,0xc4,0x9a, 0x77,0x74,0x90,0x90, 0x35,0x33,0x5a,0x05,
+ 0x3b,0xba,0x4d,0x89, 0x04,0x22,0x6d,0xc1, 0xda,0x14,0x1f,0x8c, 0x69,0x25,0x08,0x68,
+ 0xb6,0x08,0x67,0xb8, 0xc1,0x98,0xbe,0x32, 0x3a,0x22,0x72,0x66, 0xa1,0x04,0x84,0x10,
+ 0x50,0xb3,0x75,0xee, 0xe3,0x2a,0xa5,0x1f, 0x14,0x18,0x12,0x50, 0x4f,0x6e,0xcc,0xde,
+ 0xc4,0xd4,0xe0,0xac, 0xdd,0xed,0x95,0x01, 0xa4,0x68,0x39,0x36, 0x7b,0x9a,0x3a,0x9a,
+ 0xd7,0x82,0xac,0x75, 0xb5,0x4e,0x1e,0xa8, 0xdb,0x42,0x25,0x6e, 0xac,0x49,0x93,0xbb,
+ 0xb4,0x2e,0x22,0x6a, 0xa8,0x75,0x42,0xff, 0x06,0x8a,0x65,0x39, 0x05,0x6c,0xfc,0x02,
+ 0x9a,0xcf,0xc4,0xa5, 0x00,0xf8,0xfa,0x42, 0x49,0x65,0x34,0x82, 0xe3,0x5c,0x6f,0x65,
+ 0xe0,0xb7,0x1c,0xa0, 0x13,0x21,0x01,0xb5, 0x5d,0xa7,0x19,0x72, 0x93,0x4b,0xed,0x94,
+ 0x24,0x6d,0xe2,0x03, 0xf3,0x93,0x56,0x23, 0x18,0x82,0x51,0x03, 0x15,0x44,0x15,0x48,
+ 0x3a,0x01,0xc4,0xfa, 0x92,0xa9,0x8a,0x4c, 0xdd,0x87,0xe8,0x67, 0x5a,0xd2,0x45,0x86,
+ 0x85,0x0b,0x50,0xb8, 0xf5,0x1c,0x09,0xa4, 0x85,0xd0,0xd7,0xaf, 0x62,0xe2,0x71,0x6f,
+ 0x55,0xa3,0x08,0xa4, 0xa5,0xb1,0xe8,0x29, 0x3e,0xc3,0xf6,0xa9, 0x2f,0x62,0xd1,0xbe,
+ 0x77,0x7d,0x5f,0x3b, 0xce,0xac,0x1d,0x4e, 0xd2,0xa0,0xac,0xc7, 0x33,0xc0,0xb8,0xec,
+ 0x41,0x5e,0xa7,0x95, 0x3d,0x61,0xab,0xb2, 0xd0,0x67,0x70,0xee, 0xc9,0xaf,0xcf,0x17,
+ 0x7c,0x32,0xb3,0x56, 0xc3,0x0d,0x94,0xb7, 0x8a,0x2d,0x8b,0xe3, 0xda,0xca,0xef,0x69,
+ 0x02,0x95,0x62,0xcf, 0xdd,0x32,0x35,0x24, 0x22,0x8a,0x32,0x55, 0x83,0x77,0x21,0x95,
+ 0x95,0x21,0x80,0x03, 0xd3,0x1d,0x22,0x06, 0xd6,0x2a,0xf0,0xa0, 0x35,0xc4,0x59,0x45,
+ 0x67,0x17,0x25,0xbb, 0xcf,0x79,0x38,0x55, 0x19,0x5c,0x79,0x0c, 0x34,0x67,0xc8,0xc7,
+ 0x05,0x19,0x40,0xdb, 0xa8,0xa7,0x6e,0xb9, 0xc1,0x80,0x05,0x9d, 0xbd,0x07,0x38,0x44,
+ 0xab,0xc9,0xb8,0x73, 0x8c,0xf4,0xa6,0x37, 0x42,0x49,0x6b,0x5a, 0x8d,0x58,0x11,0x36,
+ 0x15,0x96,0x79,0x10, 0x92,0xf7,0xec,0x42, 0xf0,0xe8,0x8e,0x31, 0x33,0x1f,0x48,0xcd,
+ 0x1c,0x51,0x7d,0x0c, 0xc0,0x78,0x39,0x1d, 0x63,0xdb,0x57,0x87, 0xc1,0xe4,0xf9,0x63,
+ 0x3a,0xc7,0x1a,0x68, 0x20,0x36,0x33,0x15, 0x6d,0x7a,0xd4,0x2a, 0x17,0x3d,0x20,0x14,
+ 0x21,0x32,0xdc,0xb7, 0x0f,0xbb,0x25,0x53, 0xb6,0xca,0xb5,0xba, 0xa8,0x66,0x2e,0xe9,
+ 0x4b,0xea,0x86,0xc0, 0xd5,0x42,0x05,0xe9, 0xe5,0xe2,0x6e,0x22, 0x12,0x16,0xf1,0x81,
+ 0x89,0xbb,0x2d,0x5c, 0x9d,0x62,0xdc,0x02, 0xc7,0xd9,0xd0,0x25, 0x2c,0xa7,0x14,0x74,
+ 0x35,0x4b,0xc8,0x88, 0x04,0x6b,0x5a,0x21, 0xf1,0x18,0x10,0xd0, 0x58,0xce,0x13,0x5c,
+ 0xbe,0x43,0x27,0xdb, 0xcb,0xd8,0x4b,0x26, 0x98,0x5f,0x2a,0xbc, 0x1a,0x76,0xad,0x34,
+ 0x71,0x83,0x03,0x0d, 0xc3,0x05,0xff,0x0e, 0xfa,0x04,0xbe,0xbe, 0x1e,0xa7,0x3a,0x78,
+ 0xac,0xcb,0xa1,0x49, 0x92,0xc7,0x6a,0xe4, 0xa1,0x07,0xea,0x69, 0x4b,0x4d,0x14,0x31,
+ 0x1e,0xc8,0x7a,0xc3, 0x71,0x05,0x66,0xb7, 0x4e,0x13,0x0c,0xa6, 0x8b,0x0e,0x5a,0x08,
+ 0xaf,0x9a,0x7f,0x8f, 0x19,0x76,0xae,0x36, 0x4d,0xd4,0xb3,0x68, 0xa3,0xd1,0xdb,0x61,
+ 0x6a,0x17,0x1e,0xc5, 0xa9,0x69,0x19,0x56, 0x31,0xb5,0x8a,0xd2, 0x23,0x46,0xb8,0x25,
+ 0x5b,0xd0,0x53,0x02, 0xe0,0x9f,0xb8,0x49, 0x89,0x8d,0xb4,0x15, 0x4c,0xdb,0x3d,0xc6,
+ 0x1f,0xc3,0xf5,0x53, 0x17,0x04,0x1e,0xe1, 0xe6,0x22,0x20,0x27, 0x87,0x3a,0x64,0x67,
+ 0xb3,0xb8,0xca,0x79, 0xd9,0xd4,0xfe,0x59, 0xc1,0xf6,0x6f,0x91, 0x64,0x88,0x89,0xbb,
+ 0x91,0xab,0x43,0x09, 0x2d,0x35,0x16,0xcf, 0x13,0x9f,0xdc,0xe6, 0xf6,0x9a,0x4d,0xc5,
+ 0x9d,0xdd,0xab,0x3a, 0x11,0xde,0x37,0x9c, 0x82,0x60,0x25,0xc0, 0xef,0xff,0xca,0x3b,
+ 0x3c,0xdf,0x51,0xca, 0xa8,0x25,0xc2,0x7a, 0xbb,0x0c,0xa7,0x24, 0xab,0x2a,0x12,0x36,
+ 0x0c,0x95,0x43,0x2e, 0x98,0xc3,0xdf,0xcb, 0x5a,0x22,0xfb,0xea, 0x9e,0x49,0xae,0xd9,
+ 0xf4,0x2c,0x90,0x5d, 0x20,0xf5,0xdc,0xcd, 0xe5,0x56,0xc7,0x6f, 0xc2,0xbb,0x69,0xf2,
+ 0x10,0x5c,0x66,0x33, 0xcb,0x31,0xa0,0x86, 0xd1,0xca,0xa8,0x84, 0x5c,0xc9,0x38,0x5b,
+ 0xf0,0x93,0x6e,0xe8, 0x0a,0x62,0x18,0x8f, 0x80,0xaa,0x52,0x76, 0x6c,0x57,0xa3,0xb2,
+ 0x9f,0x58,0xa1,0xf8, 0x3a,0xdc,0x4b,0xa9, 0xc6,0xa0,0xe5,0x24, 0xfc,0x23,0x08,0xb0,
+ 0xbb,0x87,0x97,0xd6, 0x1a,0x19,0x6a,0xa3, 0xee,0x4a,0x5a,0x29, 0xe1,0x6d,0x9d,0x9d,
+ 0x0e,0x21,0xa3,0xcf, 0x5f,0x46,0xe1,0x1a, 0xc4,0x69,0x50,0x02, 0x94,0xa5,0x24,0x90,
+ 0x96,0xb7,0xa5,0x2b, 0x3c,0x4d,0xab,0x89, 0x71,0xb7,0xd5,0xb6, 0x8b,0x0d,0x29,0xf2,
+ 0xf0,0x67,0x7b,0x88, 0x48,0xbf,0x4c,0x19, 0x9e,0x86,0x0c,0xe6, 0x78,0x0c,0x45,0x77,
+ 0xaa,0x7b,0xb6,0x85, 0xa8,0xf9,0x9a,0xe9, 0x60,0x7f,0x9e,0xaa, 0x94,0x1e,0xcb,0x77,
+ 0x06,0xb1,0x85,0x5d, 0x4e,0x3f,0xb2,0x90, 0x7b,0x2c,0xe8,0x6c, 0xbe,0xc5,0xe4,0xd3,
+ 0x00,0x5f,0x6b,0x42, 0xc8,0x69,0x1a,0x11, 0x8b,0x40,0xff,0x3d, 0x78,0xd8,0x30,0xab,
+ 0x3d,0x0b,0xc0,0x61, 0x61,0xf5,0x0d,0x59, 0xc5,0xde,0x49,0x23, 0x3b,0x57,0x1d,0xed,
+ 0x68,0x04,0x2a,0x9a, 0x4b,0x41,0x9f,0xb5, 0x21,0x2c,0x26,0x16, 0x98,0x50,0x35,0x53,
+ 0x86,0x3e,0xc6,0x21, 0xb2,0x88,0x0a,0xcd, 0x67,0x4e,0x29,0xab, 0xc5,0x94,0xd8,0x52,
+ 0x78,0x50,0x8a,0x98, 0xbb,0x26,0x96,0x53, 0xd2,0x35,0xeb,0xf6, 0xd3,0xbe,0xad,0xb4,
+ 0x6c,0x1b,0xa7,0x58, 0x12,0x22,0x5a,0x3d, 0x61,0x0b,0x19,0x69, 0xa3,0x61,0xd9,0x69,
+ 0xa9,0xcc,0xee,0xe3, 0x53,0x09,0x55,0x87, 0x8d,0xe6,0x3b,0x17, 0x2b,0xb4,0xe6,0xd3,
+ 0x62,0xce,0x36,0xf4, 0xd0,0xd4,0xb4,0x1a, 0x79,0x48,0x7c,0x32, 0x72,0xb0,0xee,0x49,
+ 0xa0,0xce,0xb6,0x08, 0x00,0x2d,0x4f,0x57, 0x71,0x2f,0xbf,0xb8, 0xfc,0x58,0x97,0xbc,
+ 0x15,0x50,0x6f,0xe9, 0x84,0x4b,0x0a,0x14, 0x39,0x1f,0x23,0xc8, 0xf2,0xff,0xde,0xcf,
+ 0x71,0xb5,0x9e,0x8e, 0x11,0xf6,0x79,0x58, 0x51,0xc6,0x40,0x40, 0xc3,0x41,0xa7,0xf2,
+ 0xfb,0xbd,0x1c,0x7d, 0x09,0x3f,0xa3,0x68, 0x6d,0xa1,0x47,0xa4, 0xdb,0x6a,0x53,0x07,
+ 0x24,0x06,0xdd,0xf6, 0x5c,0xf9,0x61,0x8e, 0xb5,0xf5,0x34,0xc7, 0x37,0xc1,0xac,0x19,
+ 0x78,0x2f,0x86,0x79, 0xa5,0xa0,0x42,0x92, 0xd3,0xd0,0x64,0x90, 0xb9,0x2a,0x56,0x5d,
+ 0x41,0x94,0x20,0xe5, 0xc6,0x96,0x2b,0xa5, 0x78,0x69,0xab,0xbd, 0xad,0x69,0x64,0x56,
+ 0xb7,0xba,0xdf,0xb3, 0xc1,0x01,0x6a,0xa5, 0x83,0x7b,0x5f,0x16, 0x6b,0xd6,0xc2,0x9b,
+ 0x1d,0x3c,0xea,0x0b, 0x56,0x7b,0xd3,0x9f, 0x3b,0xaf,0xbf,0x73, 0x9e,0x36,0x7a,0x0a,
+ 0x90,0x92,0xf3,0xf3, 0x0f,0x4b,0xca,0x98, 0x7c,0x86,0x18,0x4f, 0xd9,0xb4,0x8e,0x85,
+ 0x9f,0x37,0x8f,0x84, 0x22,0x86,0x92,0x33, 0x18,0xbe,0xeb,0x46, 0xa9,0xfb,0xf7,0xec,
+ 0x9a,0x32,0x98,0xa9, 0x7d,0xa3,0x35,0x8d, 0x17,0xf2,0x63,0x5e, 0x5d,0x81,0x24,0xab,
+ 0x5e,0x84,0x73,0xe5, 0xd8,0x0d,0xe0,0x03, 0x03,0x9f,0x69,0x7d, 0x46,0x92,0xcc,0x76,
+ 0x72,0xa1,0x56,0x07, 0xf3,0x4b,0x73,0xcb, 0x29,0xe5,0xa9,0x8a, 0x3c,0x7c,0xba,0xb4,
+ 0xf2,0xf4,0xf4,0x5a, 0x9c,0x2a,0xc9,0x43, 0x9d,0xdf,0xfa,0x15, 0x78,0x11,0xb2,0x36,
+ 0x7a,0x39,0x7c,0x4b, 0x17,0x60,0x20,0x36, 0x56,0x9a,0xe0,0x6b, 0x10,0x11,0x9c,0xd0,
+ 0xa1,0x3f,0x33,0x70, 0xda,0xa9,0xf3,0x7a, 0x98,0x70,0x50,0xe0, 0x2a,0x94,0x28,0x7d,
+ 0x26,0xc5,0x4f,0x34, 0x60,0xda,0xee,0xc5, 0xdd,0xa5,0x8f,0x9f, 0x7a,0x5b,0xcc,0xbe,
+ 0x92,0x07,0x03,0xaa, 0x2b,0xbe,0xfd,0x59, 0x54,0xdc,0xb1,0x79, 0x36,0xfa,0x88,0xb1,
+ 0x27,0x29,0x5d,0x93, 0x23,0x4d,0x80,0xd2, 0xf7,0x00,0x25,0x9d, 0x14,0x2b,0x04,0x25,
+ 0xc5,0x09,0x6a,0x44, 0xb7,0x06,0xcc,0x51, 0x43,0x19,0x9f,0xec, 0xd0,0x7b,0x46,0x23,
+ 0xb3,0x73,0x7c,0x3e, 0xe2,0x00,0xe9,0x2b, 0x11,0x65,0xac,0x4c, 0xe5,0xdc,0x68,0x43,
+ 0xaf,0xea,0xff,0xa7, 0xdc,0xee,0x95,0x1b, 0x4d,0x35,0xcc,0x0e, 0x25,0x1a,0x0b,0x57,
+ 0x6b,0xb1,0x75,0x6f, 0xe2,0x32,0xfb,0x33, 0xb3,0x20,0x98,0xc2, 0x7e,0xf2,0x52,0x41,
+ 0xe5,0x31,0x59,0x67, 0xfa,0x73,0x7d,0x94, 0x8e,0x47,0x71,0xba, 0x90,0x15,0xd3,0x12,
+ 0x47,0x2e,0x98,0x1d, 0xe7,0x7e,0x66,0x48, 0xd8,0x76,0x90,0xa9, 0x1b,0xb1,0xb5,0x90,
+ 0x8e,0x60,0x15,0x6b, 0x1c,0xb7,0x89,0x41, 0x21,0x85,0x2c,0x03, 0xa6,0x66,0x5b,0x3a,
+ 0xba,0x21,0x6e,0xd9, 0x0d,0x26,0xc0,0xd1, 0x1f,0x7f,0x71,0x23, 0x60,0xf9,0x6e,0x3a,
+ 0x0d,0xde,0xd0,0xd6, 0xc8,0x3f,0xbb,0xff, 0xd8,0x1f,0xbb,0x16, 0x59,0x66,0xc6,0xe1,
+ 0x0a,0x24,0xcc,0x79, 0x98,0xec,0xbf,0xe5, 0x1d,0x21,0xdb,0x78, 0xc5,0xc5,0x37,0x04,
+ 0x94,0xc8,0xca,0xac, 0x1b,0x98,0xce,0x18, 0x08,0x33,0x32,0x88, 0x76,0xed,0x35,0x9d,
+ 0xde,0x2b,0x66,0xdb, 0xfa,0x43,0xb0,0xe1, 0x5c,0xb3,0x32,0xf3, 0x31,0xe2,0xb9,0x1a,
+ 0x1a,0x62,0x9a,0x74, 0x6d,0x7e,0x11,0x93, 0x60,0x1d,0xe3,0xf9, 0x5e,0xda,0x0f,0x6f,
+ 0xd4,0x11,0x40,0xd7, 0xe6,0xd3,0x72,0x17, 0xe6,0x2a,0x19,0xed, 0x9e,0xe7,0x59,0x16,
+ 0xda,0xf9,0x7d,0x4c, 0x24,0x7e,0x96,0x6b, 0xb6,0x4a,0x14,0xb7, 0x64,0x1b,0xde,0xc6,
+ 0x05,0x89,0x29,0xc8, 0xab,0x03,0x51,0x20, 0xbc,0xc4,0xba,0x96, 0x10,0x0c,0xa6,0xfc,
+ 0xa5,0x5f,0x1f,0xf7, 0xe0,0x93,0x28,0x32, 0xed,0xca,0x51,0xc1, 0xb5,0xfb,0xf3,0xfc,
+ 0x8b,0xa8,0x54,0x75, 0x90,0x0a,0xf9,0xb0, 0x42,0xa3,0x55,0xff, 0xaf,0x60,0x86,0xb0,
+ 0xb7,0x71,0xf8,0xb8, 0x1e,0xdc,0x2f,0xf2, 0x63,0x56,0xd7,0xeb, 0xad,0x93,0xeb,0x1d,
+ 0x52,0xca,0xaa,0x20, 0xf7,0x37,0x25,0xf1, 0x5d,0x11,0xa2,0x68, 0x03,0xae,0x67,0xb7,
+ 0x65,0xab,0xb6,0x4b, 0x73,0x9e,0x07,0xa3, 0x29,0x21,0xb4,0xd2, 0x2c,0xb8,0x2d,0x68,
+ 0x8d,0xf9,0x32,0x7a, 0x88,0xf5,0x24,0xb8, 0x56,0xc3,0x61,0x6f, 0x29,0x82,0xe2,0x03,
+ 0xa5,0xc6,0x67,0x3e, 0xeb,0xc9,0xdf,0x78, 0xbb,0x59,0x7b,0x3f, 0x8f,0x49,0x79,0xeb,
+ 0xd0,0x40,0xe6,0x03, 0xbe,0x73,0xbf,0x54, 0xd8,0xc0,0x3c,0x1f, 0xe9,0x71,0x00,0x0c,
+ 0x5d,0x9f,0x25,0x9d, 0xd3,0x11,0x37,0x55, 0x0d,0xdc,0xb2,0xf6, 0xf7,0x3b,0x84,0x53,
+ 0xf2,0x51,0xc3,0x2d, 0xe8,0xd5,0x4e,0x34, 0x67,0x94,0xd2,0x10, 0x98,0x48,0x1b,0x3d,
+ 0x20,0xe7,0xa4,0x0f, 0x5f,0x10,0x2f,0x9f, 0x93,0x93,0x28,0xe0, 0x76,0x4f,0xe3,0x63,
+ 0x51,0x40,0x94,0x35, 0x96,0xce,0x51,0xab, 0x4d,0x7b,0x06,0xb0, 0xf4,0x18,0xb2,0x39,
+ 0xf6,0x8b,0xfe,0x2c, 0x25,0xf9,0x9a,0x03, 0xd2,0xfa,0x78,0xb8, 0x79,0x5c,0x5e,0x97,
+ 0x73,0xa6,0xa5,0xfb, 0x13,0x3f,0x5b,0xd5, 0x5a,0x0b,0xcc,0x4b, 0x62,0x3d,0x67,0x9b,
+ 0x0a,0x4c,0x16,0x2e, 0xbe,0x05,0xc9,0xbe, 0x57,0x3d,0xaf,0xc1, 0x9a,0xbe,0x30,0x52,
+ 0x80,0x19,0x4c,0x19, 0x4b,0xf8,0x18,0xd2, 0x87,0xd0,0xcc,0xb5, 0x52,0x76,0x01,0x90,
+ 0x1e,0x09,0xf8,0x1e, 0xdf,0x9d,0x7d,0xbc, 0xe7,0xfc,0xb8,0xaf, 0x5f,0x8d,0xc6,0xcb,
+ 0x39,0xde,0xb9,0xa3, 0x73,0x04,0x40,0xca, 0xe3,0x61,0x45,0xd7, 0xb8,0xc4,0x67,0x0f,
+ 0x69,0x38,0x53,0x5e, 0xa2,0x9b,0x5b,0x08, 0x82,0x1d,0x41,0x26, 0xa8,0xc3,0x58,0x3e,
+ 0xcd,0xbd,0x80,0x32, 0x18,0x63,0x50,0xcb, 0x20,0x90,0x81,0xc1, 0x38,0x3c,0x67,0x04,
+ 0x5a,0x65,0xda,0xf5, 0xdc,0x4e,0x8b,0xc7, 0xf2,0x2e,0xc7,0x07, 0x33,0xfb,0xd5,0xbe,
+ 0x1d,0x34,0x24,0xfe, 0x0c,0x2a,0x79,0x51, 0xcd,0x2e,0x73,0xe4, 0x9f,0xc5,0x47,0xae,
+ 0x25,0x61,0xc0,0xb9, 0xe8,0x65,0x43,0xc7, 0xca,0xb0,0x82,0x51, 0x28,0x55,0xa4,0xfa,
+ 0x5b,0x42,0x08,0x77, 0x8d,0x12,0x97,0xe4, 0x5e,0x7d,0x54,0x29, 0x03,0x2c,0x90,0x14,
+ 0xbd,0xe6,0x04,0xa1, 0x86,0x07,0x41,0xbd, 0x17,0xd8,0xa8,0xa1, 0x3a,0x53,0x07,0xba,
+ 0x7a,0x7b,0x90,0x71, 0x58,0x68,0x73,0xa3, 0x74,0xd7,0xbd,0xd6, 0xc2,0xf1,0x58,0x77,
+ 0x14,0x41,0x5c,0x6a, 0xf9,0xae,0x80,0x4f, 0xfb,0x3e,0xf4,0x80, 0x3b,0x96,0x51,0x47,
+ 0x1a,0xdf,0xbc,0x9e, 0x6c,0x54,0x28,0x09, 0x57,0xe7,0xd1,0xfa, 0x66,0xa7,0x57,0x5f,
+ 0xdb,0x7c,0xfe,0x57, 0x9d,0xa7,0xec,0x28, 0x5c,0xf8,0x26,0x83, 0xc8,0xe7,0x54,0xf9,
+ 0xea,0x16,0x98,0xe0, 0x20,0x69,0x8a,0x2e, 0x0c,0x0b,0xcc,0x40, 0xd9,0xb9,0x6f,0xce,
+ 0x89,0x55,0xae,0xed, 0x60,0x82,0x26,0x6c, 0xc3,0x6b,0xd4,0x36, 0x13,0xbe,0x70,0x80,
+ 0x3e,0x89,0x3a,0x33, 0xa9,0x93,0xd1,0x29, 0xbf,0x41,0x25,0x24, 0xff,0xcf,0xab,0x74,
+ 0x06,0x0b,0x5f,0x73, 0x59,0x03,0x3d,0x31, 0x8f,0x1a,0x8f,0x44, 0xa3,0x5f,0xc9,0xea,
+ 0xfe,0x74,0xb8,0x85, 0x87,0xec,0x3e,0x66, 0x3e,0x45,0x80,0xca, 0x90,0xba,0xb6,0xbb,
+ 0xe6,0x02,0xf3,0xc6, 0x0c,0x62,0x68,0x1b, 0x49,0xb1,0x14,0x35, 0x0c,0x88,0x93,0x83,
+ 0x30,0x26,0x49,0x74, 0xb7,0xd7,0x0a,0xd4, 0xaa,0xdb,0x36,0x37, 0x72,0xa8,0x94,0x06,
+ 0xe4,0x90,0x70,0xd5, 0x80,0x99,0xc6,0x33, 0xc0,0x62,0x5a,0xa6, 0xab,0x4c,0xf1,0x7d,
+ 0xb7,0x47,0xb8,0xdf, 0xf6,0xd2,0xf3,0x62, 0xb7,0x25,0x4f,0x4f, 0x24,0x18,0x0c,0x02,
+ 0xa6,0x20,0xd3,0x32, 0x2a,0xcb,0xad,0xf8, 0x82,0x65,0x8f,0x6b, 0x8b,0x5b,0x31,0x89,
+ 0x1e,0xb1,0x9b,0x16, 0x90,0x5b,0x67,0x22, 0xc4,0x23,0x1d,0x89, 0x07,0x46,0xcc,0xa1,
+ 0xe9,0xd8,0xb3,0xc7, 0x56,0xf1,0x69,0xbf, 0xda,0x53,0xe9,0xb5, 0xe3,0x3c,0x6f,0x2f,
+ 0x13,0x45,0xba,0xa2, 0x86,0x8d,0x37,0x0f, 0xf1,0xb0,0x4d,0x7f, 0x2f,0x9b,0xec,0x36,
+ 0x02,0x94,0xbf,0x54, 0xc1,0x39,0x05,0x06, 0xd5,0x3b,0x0d,0x0b, 0xa9,0x12,0x03,0x24,
+ 0x74,0xcf,0x57,0x65, 0xb5,0x24,0x75,0xfc, 0xc8,0x1c,0xed,0x38, 0xb9,0x8f,0x3c,0x9b,
+ 0x8b,0x8b,0xcd,0x95, 0xb1,0x42,0x13,0x99, 0x39,0xf2,0x7b,0x26, 0x16,0x28,0xb2,0xb2,
+ 0x56,0x12,0xb5,0xbd, 0x63,0xb4,0xb2,0x31, 0x14,0x40,0x13,0x34, 0x8b,0xc4,0x74,0x4d,
+ 0x18,0x82,0x38,0x89, 0x90,0x3d,0x2b,0x44, 0x36,0xd0,0x97,0x5e, 0xc5,0x26,0x36,0x09,
+ 0xb0,0x49,0x1a,0x49, 0xa1,0xb8,0xde,0x90, 0xdb,0x7f,0x25,0x80, 0x49,0x80,0xd8,0x90,
+ 0x68,0x1a,0x2c,0x30, 0x91,0xeb,0x4e,0x3f, 0xbd,0x38,0xf5,0xd2, 0xee,0xac,0xfc,0x26,
+ 0x1e,0xad,0x6f,0xde, 0xc8,0x00,0x7f,0x61, 0x93,0xfb,0x91,0x1f, 0x79,0xd1,0x26,0x20,
+ 0x50,0x88,0xfb,0x12, 0x92,0xa9,0xd6,0x74, 0x32,0x69,0x22,0xa0, 0xa8,0x36,0xa8,0xb4,
+ 0x33,0x9c,0x49,0xa4, 0xee,0xcb,0x36,0x2c, 0xcc,0xab,0x29,0x38, 0x47,0x75,0x02,0x46,
+ 0x02,0x85,0x09,0xd5, 0x0b,0x9c,0x6e,0x6b, 0xd4,0xf8,0x4e,0x00, 0xbb,0xb8,0xaa,0x6d,
+ 0xdf,0x5f,0xa5,0x89, 0x87,0x63,0xf5,0x60, 0x91,0x32,0x75,0x9d, 0x3f,0x47,0x70,0xb1,
+ 0x12,0xb5,0xf0,0x00, 0x39,0x22,0x20,0x09, 0x31,0x38,0xf8,0x5f, 0xab,0x24,0x4f,0x6a,
+ 0x7a,0x2a,0xed,0x87, 0xba,0x9a,0x26,0x31, 0x7a,0x70,0x53,0xc4, 0x90,0x8d,0x50,0xa1,
+ 0x1b,0x66,0x63,0x21, 0x78,0x2f,0x28,0x82, 0x37,0x8b,0x84,0x70, 0x60,0x12,0xb9,0xe8,
+ 0xed,0x9f,0xeb,0x6a, 0x55,0x55,0x8f,0xf6, 0xa0,0x45,0x7b,0x3d, 0x81,0x35,0x83,0x2e,
+ 0x3c,0xac,0x08,0x0a, 0x03,0x02,0x0d,0x07, 0x37,0xb1,0x01,0x48, 0x64,0xc2,0xc2,0x45,
+ 0x2b,0xe3,0xe2,0xbc, 0xce,0x77,0x4d,0x5e, 0x30,0xe0,0xa2,0x6c, 0xe2,0x44,0x62,0xfb,
+ 0xdd,0xd4,0xe7,0x1b, 0x38,0x32,0xe2,0xcd, 0xed,0xda,0xdd,0x15, 0x5a,0x6a,0x2f,0x08,
+ 0x4a,0xe1,0xd7,0x6d, 0x5d,0xec,0xf2,0x8a, 0x49,0xc6,0x48,0xbf, 0x96,0x79,0x4c,0xf2,
+ 0x41,0x10,0xec,0x7f, 0x5a,0xad,0x28,0x17, 0xba,0x6a,0x0c,0x27, 0xab,0x3d,0xd7,0xff,
+ 0x8d,0x71,0xc4,0xcb, 0x28,0x40,0xd0,0xd2, 0x59,0x40,0x82,0x57, 0x3a,0x9e,0x07,0xc3,
+ 0xf0,0x70,0xde,0xbc, 0x84,0x39,0xca,0x28, 0xe1,0x65,0x5b,0xc9, 0xcf,0x7a,0x3c,0xa7,
+ 0x97,0x42,0x41,0xd1, 0x74,0xab,0x7c,0xc9, 0x01,0x5b,0x61,0x5f, 0x6f,0x65,0xdb,0xfd,
+ 0x77,0x6b,0x72,0x6b, 0x8f,0x34,0x3d,0x49, 0x32,0x69,0xb6,0x57, 0x0e,0xc2,0x2d,0xfe,
+ 0x19,0xda,0xdb,0x17, 0x0f,0xe7,0x3f,0x56, 0xc4,0xe0,0xdc,0x30, 0x7f,0x5c,0xcd,0x2a,
+ 0xf9,0xba,0xfb,0xca, 0x87,0x81,0x9f,0x8c, 0xba,0x61,0x1b,0x16, 0xb6,0x1a,0xf8,0xfb,
+ 0xb5,0x51,0xf4,0x3f, 0x45,0xe3,0x57,0x14, 0xa6,0x03,0xae,0xec, 0x2a,0xca,0x0a,0x08,
+ 0x98,0xa3,0x48,0x1e, 0x46,0x8a,0x81,0x5d, 0x2a,0xbf,0x0b,0xda, 0xc4,0xbf,0xbb,0xe7,
+ 0x84,0x26,0x00,0xc1, 0xa1,0xba,0x24,0x08, 0x94,0x2c,0x46,0x9b, 0x6c,0x32,0xe7,0x02,
+ 0x31,0x1a,0xc7,0xfd, 0x9c,0xa7,0xf6,0x92, 0xf1,0x99,0x41,0xb6, 0xd6,0xf6,0xdc,0xde,
+ 0x57,0xc6,0xd6,0x24, 0x63,0x9a,0xf6,0x88, 0xe9,0x18,0x6b,0x1a, 0x9d,0x46,0xdf,0xd0,
+ 0x9a,0x3d,0xf4,0xdd, 0x64,0xbb,0xf2,0x73, 0x6b,0x37,0x2a,0x14, 0x8a,0x7f,0x91,0x40,
+ 0x50,0x15,0x07,0x39, 0x6a,0x42,0xd4,0x25, 0x5a,0x82,0x14,0x86, 0xa9,0x28,0x70,0xb9,
+ 0x8a,0x4a,0x09,0xb5, 0xdd,0xc1,0xcf,0xb0, 0xa7,0x75,0xda,0xd8, 0x97,0x31,0x8d,0x5f,
+ 0xcc,0x7e,0x77,0x17, 0xce,0x90,0x65,0x8d, 0x72,0xcc,0xb0,0x5e, 0xdd,0x73,0x9d,0xaf,
+ 0xc7,0xd6,0x52,0x0d, 0xdf,0x4a,0xac,0xd1, 0xc6,0xbf,0x2c,0x95, 0x9c,0x82,0x28,0x1c,
+ 0x26,0xe0,0xc3,0x68, 0x64,0xe6,0x9e,0xb1, 0x82,0x4a,0x94,0x69, 0x8d,0x8a,0x91,0x2c,
+ 0x5b,0xa9,0x49,0x43, 0x3d,0xcc,0x34,0xb3, 0x3c,0xaa,0xae,0xc5, 0xf6,0xae,0xc1,0xa2,
+ 0xc4,0x9a,0x0c,0xd5, 0x4f,0x19,0x04,0x95, 0xb1,0x31,0x7f,0x7f, 0x55,0xe5,0xcc,0xbf,
+ 0x41,0x16,0xec,0x06, 0xce,0xbf,0x24,0xd6, 0x36,0xce,0xb1,0x5b, 0x2e,0xc2,0x35,0xf7,
+ 0xf7,0x85,0x74,0x55, 0xd2,0x4e,0x69,0x5c, 0x71,0x10,0x61,0xa7, 0x58,0xa4,0xc5,0xda,
+ 0xf2,0xe7,0x55,0xf6, 0xbc,0xbc,0x3e,0x1f, 0xfd,0x7b,0x46,0xcf, 0x88,0xde,0x4c,0xbd,
+ 0x9f,0xa5,0x9e,0x16, 0xf7,0xfe,0xd0,0x75, 0x1c,0xac,0xce,0x57, 0x85,0xc9,0x65,0xff,
+ 0xdf,0x91,0xec,0x3b, 0x45,0xec,0x11,0x83, 0x59,0xf0,0x33,0xc1, 0xef,0xee,0xe5,0xaf,
+ 0x64,0x1b,0x8e,0x4a, 0x3e,0xf9,0xe8,0x0f, 0x9b,0xa3,0x0f,0x8d, 0xdb,0xbe,0x55,0x76,
+ 0x9a,0x53,0x2f,0x2d, 0xb7,0xb3,0x08,0xdf, 0x33,0xcd,0x92,0x46, 0xd5,0x91,0xa4,0x92,
+ 0xb4,0xcf,0xc9,0x2e, 0x85,0x4f,0x77,0xef, 0x2b,0xab,0x92,0x77, 0x6d,0x66,0xdc,0x27,
+ 0xf6,0xf8,0x1b,0x6b, 0x4c,0x4d,0x46,0xb9, 0xc0,0x61,0x28,0xc8, 0xbb,0xf8,0x37,0xcb,
+ 0xd1,0x78,0xf3,0xd8, 0x01,0x61,0xfa,0xfe, 0x2b,0x2e,0xd4,0xa7, 0x30,0xfb,0xa5,0x92,
+ 0xa4,0xe8,0x6b,0x3b, 0xe9,0x70,0xc7,0xf5, 0x8c,0x9a,0x4f,0x93, 0x70,0xe5,0x7a,0xb6,
+ 0xb1,0xf4,0xd0,0x7e, 0x15,0x7f,0xce,0x96, 0x3f,0x6b,0x65,0xd2, 0xd2,0x55,0xd4,0x34,
+ 0x43,0x95,0x92,0xf0, 0xf0,0x8b,0xaf,0x12, 0x91,0xb2,0xc3,0x08, 0x03,0xa5,0xf5,0xfb,
+ 0x6a,0xb3,0x5e,0xbb, 0xad,0x90,0xab,0x4b, 0x7f,0x66,0xa2,0x1d, 0x98,0x4e,0x95,0xe7,
+ 0x1f,0xf3,0xd6,0x1d, 0x52,0x49,0x63,0x92, 0x88,0x46,0xbf,0x53, 0xa8,0xab,0x08,0x5d,
+ 0xa0,0x7f,0x8c,0x5e, 0x06,0x62,0x0a,0x73, 0x51,0x65,0xb1,0x9f, 0xf4,0x63,0x8b,0x54,
+ 0x7d,0x27,0x3c,0xdd, 0xb7,0x57,0xde,0xe8, 0xaa,0xc7,0xbe,0xc8, 0x65,0x92,0x80,0xa1,
+ 0x93,0x5f,0xb2,0x75, 0x3d,0xc3,0xc5,0xb0, 0x80,0x17,0x30,0xc2, 0x11,0xcd,0xfc,0xa8,
+ 0x12,0x0b,0xfe,0x8c, 0xb5,0xab,0x20,0x85, 0xd6,0xfd,0x3e,0x8e, 0x7b,0x8c,0xb4,0xa7,
+ 0x3f,0xb4,0x07,0xe6, 0x05,0x0c,0xef,0xcb, 0x7f,0xda,0xf3,0xd9, 0xdf,0x90,0x15,0xcf,
+ 0x9c,0xf0,0xe3,0x2f, 0x56,0x03,0xec,0x7a, 0x5a,0xcd,0x6c,0xb3, 0x15,0xb5,0x5b,0x0f,
+ 0xe0,0xf7,0x1f,0x29, 0xbf,0x62,0x73,0x03, 0x6e,0x6f,0x63,0x1b, 0x58,0x9d,0x2d,0xb2,
+ 0xa9,0x10,0x3f,0x09, 0x1b,0xe5,0x18,0xc0, 0xe0,0xc3,0x6b,0x88, 0x8c,0x5f,0xdf,0x19,
+ 0x66,0x89,0x3b,0xc2, 0x04,0x18,0x20,0x63, 0x90,0x2f,0x96,0x6d, 0xf4,0x10,0x05,0xe1,
+ 0x60,0x28,0x36,0xc7, 0x85,0x31,0x5e,0xa4, 0x6a,0xa9,0xb4,0x33, 0x0b,0xb8,0xbf,0x3d,
+ 0x7e,0x33,0x3a,0x69, 0xd3,0x01,0x48,0x8a, 0x9d,0x9b,0x7c,0x7b, 0x9f,0x3f,0x33,0xaa,
+ 0x71,0xb9,0x91,0x1c, 0x86,0x97,0xd6,0x37, 0xa0,0x6b,0xa2,0x31, 0xa9,0xa1,0xc0,0x50,
+ 0x07,0x04,0x72,0x06, 0x9d,0x78,0x68,0x48, 0x0b,0x2b,0xfb,0xac, 0x49,0x04,0xa0,0x46,
+ 0xff,0x3d,0xfe,0xb0, 0x76,0x7c,0x0d,0x15, 0x2e,0xcf,0x47,0xe1, 0x39,0x8c,0x6f,0xc4,
+ 0xa1,0xae,0x57,0x47, 0x78,0xa0,0xe3,0x4a, 0x20,0x4f,0x18,0xda, 0xdb,0xed,0x26,0xa3,
+ 0x16,0x8f,0x93,0xe3, 0x5c,0x33,0xfe,0xd8, 0xd9,0xb8,0x08,0xe9, 0x79,0x9b,0x0c,0x9e,
+ 0x17,0x1f,0xb7,0xd6, 0xa0,0x36,0xc3,0xc3, 0xeb,0x1d,0x7b,0x79, 0x57,0x17,0x16,0xb7,
+ 0x88,0x48,0x8d,0xa0, 0x61,0x09,0x24,0x42, 0xbc,0x4e,0x0d,0x35, 0xcd,0xce,0x88,0x46,
+ 0x3c,0x66,0xfb,0xd4, 0x52,0x42,0x6e,0x9c, 0xa4,0xe9,0xb2,0x99, 0x83,0x7d,0x18,0x67,
+ 0x66,0xdb,0x71,0xb5, 0xcf,0xc4,0x8d,0x62, 0xb6,0xfd,0x73,0xb2, 0x5f,0x56,0x84,0x96,
+ 0x38,0xb6,0x92,0xd8, 0x69,0x1d,0xf2,0x38, 0x29,0xc0,0x73,0x51, 0x06,0x90,0xdb,0x9d,
+ 0x9c,0x1a,0xbe,0x82, 0xad,0x6b,0xb9,0xf5, 0x6b,0x4f,0x83,0xfd, 0xfa,0x54,0x36,0x89,
+ 0xe8,0x55,0xf9,0xea, 0x56,0xc9,0x7c,0x33, 0xd2,0xc3,0xa6,0x4c, 0x7a,0xb3,0xd6,0xc2,
+ 0xfa,0x16,0x33,0xc4, 0xdc,0xee,0xeb,0xa5, 0x53,0xa0,0xa7,0xc9, 0x6b,0xd9,0xa3,0x67,
+ 0x2e,0xcd,0x7d,0xe2, 0x76,0x2b,0xe8,0xbf, 0x8e,0x98,0xa2,0x98, 0x20,0xee,0xaf,0x3e,
+ 0x0b,0xed,0xda,0xbd, 0xa7,0x61,0x80,0x0e, 0xfd,0xc9,0x8c,0x3c, 0x02,0x0b,0x6f,0xa9,
+ 0xac,0x91,0x47,0x7a, 0x72,0xec,0x53,0xd8, 0x79,0x12,0xff,0x9b, 0x29,0x49,0x21,0x6f,
+ 0x92,0x39,0xd4,0x84, 0xbc,0x3d,0x9d,0xde, 0xab,0xc6,0x71,0xaf, 0xd6,0xd2,0x54,0x3b,
+ 0xe1,0x2e,0x78,0xd1, 0x8b,0x72,0x25,0x9e, 0x22,0x68,0xc3,0xd3, 0xd5,0xa2,0x19,0xfc,
+ 0xea,0xb7,0x67,0xdc, 0xc9,0xae,0x96,0x8d, 0x50,0x44,0xcb,0xe4, 0x70,0x93,0x29,0xd9,
+ 0xa4,0x81,0x94,0x36, 0x87,0xbb,0x70,0x11, 0xa4,0x45,0xdf,0x23, 0x03,0x50,0xa2,0x96,
+ 0x38,0x42,0xd6,0x35, 0x86,0x1f,0x48,0x00, 0xe1,0x70,0x29,0x1e, 0x58,0x05,0xbb,0xfd,
+ 0x3b,0x4e,0x77,0xbe, 0x9b,0x86,0x31,0x6a, 0x7f,0x38,0xfc,0xdc, 0xbf,0x0c,0x03,0x19,
+ 0x58,0x17,0x7d,0x0f, 0xc3,0xca,0x32,0x1b, 0x17,0xba,0xc3,0x0c, 0xe5,0x35,0x90,0x96,
+ 0x08,0x71,0xd6,0xd1, 0x3e,0x39,0xce,0xe5, 0x7b,0xf1,0x3f,0x15, 0xa4,0x79,0xac,0xae,
+ 0x1c,0x75,0x9e,0x12, 0xb9,0x9f,0x0a,0xf6, 0x6d,0x42,0xc8,0x1c, 0xef,0xd9,0x03,0x55,
+ 0xbb,0x5d,0x7c,0xe2, 0x03,0xef,0xa1,0xd0, 0x74,0xb1,0xe1,0x8c, 0x40,0xb0,0x82,0x3a,
+ 0x2a,0xfd,0x4c,0xea, 0xe5,0x45,0x4b,0x9c, 0x0c,0x94,0x32,0x09, 0x22,0xf9,0x29,0xec,
+ 0x7a,0x0a,0x5f,0x66, 0x36,0x85,0xcc,0x46, 0x9a,0x43,0x80,0x50, 0x74,0x4e,0xe6,0xa6,
+ 0x14,0x18,0x30,0x46, 0x92,0x18,0x90,0x60, 0xc1,0x2e,0x4d,0x86, 0x67,0x2f,0x3b,0x63,
+ 0x6a,0x75,0xa4,0x10, 0x01,0x55,0x16,0xa1, 0x8e,0xe4,0xaf,0xb5, 0x7e,0xb5,0x67,0xd4,
+ 0xff,0x66,0x8e,0x26, 0xc6,0x3d,0x1f,0xa3, 0xeb,0xa8,0x67,0x8a, 0x42,0xa0,0x5d,0x18,
+ 0x4c,0x72,0x53,0x88, 0x35,0xe8,0xb7,0x02, 0x62,0x8a,0xaa,0x63, 0x5e,0x8a,0x2c,0xd2,
+ 0x6e,0xf8,0x94,0xca, 0xaf,0x5f,0xd5,0xf2, 0xe5,0xd6,0xd3,0x3b, 0x43,0x2f,0x3e,0xa1,
+ 0x03,0xf9,0x91,0x26, 0x72,0x3c,0x5e,0x17, 0xc9,0xc1,0xa7,0xb9, 0xa1,0x24,0x88,0x56,
+ 0x84,0xb3,0xd2,0x4d, 0x1b,0x76,0xc8,0x40, 0x81,0x40,0x40,0x10, 0x26,0xf6,0xd2,0x4b,
+ 0x37,0x11,0x15,0x74, 0x9b,0x2e,0x5b,0x68, 0xfb,0x3f,0xae,0x0c, 0xed,0xc3,0x56,0xb0,
+ 0x82,0x11,0x70,0x65, 0xbd,0xc3,0xc1,0x37, 0xe3,0xd8,0x7f,0x0c, 0x89,0x79,0x14,0x6e,
+ 0xe3,0x20,0x30,0xf6, 0x3b,0x3f,0xf9,0xc3, 0x61,0x46,0xa3,0x3f, 0xd5,0x7b,0xa5,0x66,
+ 0x4b,0x8c,0x68,0x8e, 0x71,0xdf,0x81,0x3f, 0x9d,0x49,0xf3,0xc9, 0xad,0xd8,0x2e,0x01,
+ 0x44,0xa7,0x8c,0xa3, 0x39,0x18,0xff,0x12, 0x5e,0x22,0x7e,0x30, 0x80,0x74,0x6f,0x7c,
+ 0xc2,0x13,0x47,0x90, 0xa9,0x93,0x46,0xaa, 0x1a,0x06,0xa1,0xeb, 0xd4,0x74,0x30,0x4b,
+ 0x91,0x2f,0xab,0x4d, 0xb6,0x8c,0x45,0xd0, 0x28,0xab,0x0f,0x7f, 0xc9,0xf8,0x14,0x9d,
+ 0xb2,0x9c,0xfa,0x44, 0x64,0xdf,0x4d,0x3d, 0x1e,0x9a,0x7a,0xee, 0xf6,0x3c,0x20,0x66,
+ 0x08,0xc2,0x6f,0x51, 0x23,0x42,0xce,0x8f, 0xbf,0xbf,0x6f,0x8d, 0x5d,0x97,0xa3,0xde,
+ 0x52,0x4a,0x7d,0xab, 0x9f,0xb7,0x0e,0xce, 0x34,0x07,0x55,0xc7, 0x9e,0x8d,0x51,0xad,
+ 0x24,0xc8,0xa1,0x96, 0x78,0xe3,0x76,0x29, 0x2d,0x12,0x92,0x97, 0xbe,0xc8,0x78,0x67,
+ 0x1e,0x53,0x71,0xd4, 0x9b,0x2e,0x61,0xf4, 0xff,0x95,0xc7,0x02, 0x7d,0x3b,0x0f,0xd2,
+ 0x81,0x8e,0x54,0x77, 0x95,0xb8,0x4b,0x05, 0x4e,0xa9,0x69,0x73, 0xf8,0x1c,0x7f,0x11,
+ 0x5a,0xef,0xec,0xd8, 0x59,0x57,0xa2,0x72, 0x6b,0x32,0x0d,0x59, 0x22,0xbd,0x82,0x0f,
+ 0xb7,0x44,0x6e,0xd9, 0x09,0x36,0x35,0xdb, 0x31,0x50,0xdb,0x17, 0x06,0x72,0x1c,0x8f,
+ 0xba,0x60,0x7e,0xbe, 0x83,0x63,0x3a,0x81, 0x54,0xd2,0xe3,0x89, 0x67,0x12,0x1b,0x45,
+ 0xa5,0xaa,0xcf,0x12, 0x53,0x9b,0xd0,0xee, 0x5e,0x01,0x45,0x78, 0x5f,0xfc,0xd9,0xe5,
+ 0x2b,0xc3,0x24,0x27, 0x78,0x0e,0xb3,0x73, 0x8f,0x9f,0x3e,0x13, 0x38,0x75,0x74,0x10,
+ 0x71,0xab,0xf7,0x94, 0xa8,0x30,0xd3,0x53, 0x8b,0xe7,0xb7,0x72, 0xfa,0x16,0x37,0x90,
+ 0xd6,0xf7,0x2b,0x5b, 0x42,0xa0,0xa6,0xff, 0x11,0xbf,0x33,0x16, 0x13,0x87,0xd8,0x2b,
+ 0xd9,0x66,0xa9,0x71, 0xea,0xf2,0xb0,0x46, 0x7e,0x1b,0x1d,0x0b, 0x5b,0x55,0x42,0x1c,
+ 0x95,0x89,0xc4,0x25, 0xcf,0x2a,0x7b,0x8a, 0xf5,0x76,0xf1,0x2d, 0x2e,0x17,0x97,0xb1,
+ 0x7b,0xc8,0xae,0xa2, 0xae,0xc3,0x43,0x4e, 0x62,0x7e,0x86,0xae, 0xc0,0x68,0xec,0x6b,
+ 0x67,0x4a,0x9d,0x80, 0xde,0x4f,0xca,0x82, 0x9d,0x1e,0x32,0xf5, 0x3a,0xbf,0x4b,0x06,
+ 0xbc,0x22,0x3d,0x87, 0x61,0x6b,0x6d,0xae, 0xc0,0xa9,0x0e,0xd9, 0x8d,0xfc,0x4d,0xde,
+ 0x13,0xaa,0x75,0xcc, 0xd0,0x07,0x42,0x72, 0x48,0x5a,0x4a,0x3c, 0x61,0x32,0x8d,0x36,
+ 0x16,0x9a,0x78,0xaf, 0x69,0x3d,0x3a,0x8f, 0x9a,0x49,0x53,0xaf, 0xdf,0xdc,0xd7,0x70,
+ 0xde,0x07,0x3e,0xad, 0xa4,0xe7,0x35,0x34, 0xb7,0xe1,0x4a,0x96, 0xcf,0x13,0x4f,0x17,
+ 0x08,0xd4,0x41,0x4a, 0xc0,0x42,0x9a,0x4d, 0x6d,0xce,0xb2,0x8a, 0xa6,0xc6,0x27,0xc8,
+ 0x0a,0x57,0x15,0x10, 0x0c,0x16,0x73,0x0e, 0xdf,0x1d,0x41,0x01, 0x41,0xe5,0xa8,0x11,
+ 0x3c,0x8d,0x36,0x89, 0xdd,0x67,0x94,0xd6, 0x13,0x37,0x6f,0xf8, 0x6b,0x28,0x42,0xb4,
+ 0x30,0xca,0x68,0xe1, 0x33,0x68,0xc2,0x6d, 0x0b,0x25,0x96,0xd8, 0x69,0xd8,0xa4,0xc4,
+ 0xa8,0x60,0x8c,0xfb, 0x12,0xca,0x62,0x05, 0xac,0xf3,0xf5,0xf8, 0x92,0x4c,0x99,0x7f,
+ 0x0e,0xc6,0x82,0x7e, 0xfb,0x4f,0xcb,0x98, 0x82,0xae,0xc6,0xb2, 0x96,0xbf,0xb5,0x71,
+ 0x43,0x6d,0x21,0x9d, 0x87,0x95,0x69,0xe6, 0x4f,0x16,0x85,0x6e, 0x46,0x74,0xa9,0x1a,
+ 0x71,0xa6,0x1c,0x84, 0x26,0x3a,0x98,0x9d, 0x7f,0xc2,0x57,0xb9, 0x89,0xdc,0xe8,0xd0,
+ 0x60,0xcc,0xda,0x12, 0xa1,0xcd,0x57,0xc7, 0xfd,0x6e,0x6f,0x57, 0x82,0x15,0x1e,0xc6,
+ 0xb1,0x47,0xde,0xdb, 0x45,0x18,0xa3,0xe2, 0x2f,0xe5,0x4b,0xfe, 0x01,0x10,0x59,0xcf,
+ 0xe5,0x4e,0x65,0x93, 0x63,0x3d,0xcf,0x5f, 0x23,0x5d,0x7b,0x94, 0xb3,0x6d,0x77,0x63,
+ 0x83,0xaf,0x48,0xdd, 0xdd,0xea,0x5f,0x85, 0x9d,0xad,0x1d,0x86, 0x75,0xb5,0xbd,0xce,
+ 0x73,0x93,0x1a,0x7d, 0x83,0x8c,0x8d,0x81, 0xcc,0x0d,0x82,0x43, 0x44,0x9b,0x94,0xa2,
+ 0x9c,0x8a,0xc9,0x11, 0x11,0x92,0x55,0xcc, 0xa4,0x01,0x9b,0x83, 0x09,0x00,0x42,0x23,
+ 0x03,0x74,0xf7,0xa0, 0xe0,0x07,0x54,0x1c, 0x23,0x65,0x6b,0x1e, 0x62,0x52,0xca,0x6d,
+ 0xab,0x4b,0x31,0x57, 0x88,0xb5,0xf3,0x96, 0x1d,0x4c,0xc4,0xb6, 0xc3,0x4d,0xf4,0x18,
+ 0x8e,0x26,0x30,0xe5, 0xfe,0x8c,0x6e,0xa1, 0x07,0x92,0x57,0x73, 0x21,0x05,0x9a,0xf8,
+ 0xc9,0xa4,0x02,0x92, 0x5b,0xbb,0x48,0xcf, 0xf1,0xe1,0xa0,0xdc, 0x19,0x02,0xf7,0x4d,
+ 0x7b,0x00,0x49,0x8a, 0x50,0x70,0xc0,0xb7, 0x6a,0x1d,0x89,0xe4, 0x2d,0xdc,0x38,0xf9,
+ 0x45,0xf4,0x60,0xd5, 0x2b,0x7b,0xc3,0x5b, 0x39,0x6f,0x6d,0xca, 0x56,0xac,0xa4,0xe5,
+ 0x3d,0x6d,0x53,0xc0, 0x94,0x8e,0x9c,0xa1, 0x0d,0x3f,0x75,0x7a, 0x7b,0xa7,0xfe,0x8c,
+ 0x0a,0x2b,0xe1,0xa7, 0xb3,0xea,0xe6,0x42, 0x7d,0x6d,0x43,0x59, 0x42,0xfa,0x9a,0x4f,
+ 0x8d,0x39,0xe8,0xbc, 0x34,0x3f,0x0b,0xa4, 0x4f,0xd2,0x31,0x3d, 0x59,0x83,0x2a,0xe5,
+ 0x81,0x0e,0xb6,0xf8, 0xdf,0xac,0x6d,0xbb, 0x00,0xd5,0x81,0xd8, 0xcd,0x20,0xda,0x24,
+ 0x9d,0x14,0x25,0xa9, 0x77,0xad,0x73,0xe5, 0xf3,0xc6,0xcc,0x0c, 0xcc,0x0d,0x5f,0x53,
+ 0xc4,0xdb,0x2e,0xdc, 0x95,0x72,0x24,0x25, 0x93,0x11,0x7b,0xfe, 0x0b,0x16,0xba,0xf4,
+ 0xed,0x02,0x9b,0x64, 0x46,0xcc,0x0b,0xe1, 0x35,0xb7,0xe4,0xce, 0x62,0x6d,0xc7,0x2c,
+ 0x78,0xeb,0xeb,0x26, 0xfa,0xb3,0x76,0x6e, 0x84,0xa6,0x89,0x71, 0x3f,0xe6,0xee,0x5d,
+ 0xc7,0x53,0x19,0xf0, 0xf4,0x6d,0x10,0x5a, 0x1d,0xe2,0x0c,0xfc, 0x84,0x48,0xe7,0xd3,
+ 0xf8,0xd9,0x6d,0xb7, 0x99,0x4a,0x67,0x6b, 0x9f,0xcc,0x8f,0x9f, 0x97,0x12,0xd7,0x85,
+ 0x59,0xda,0x4e,0x9d, 0x6f,0xf0,0x43,0x0c, 0xc4,0xac,0x2e,0x9d, 0xdd,0x55,0x09,0x34,
+ 0xeb,0xfe,0xf2,0x9b, 0x1c,0xc1,0x91,0x01, 0x74,0xcf,0x55,0x73, 0x34,0x6a,0x47,0xb5,
+ 0x78,0x57,0x4c,0xe4, 0x69,0x62,0x9a,0x47, 0x19,0x40,0xe6,0xc8, 0x12,0xe7,0x85,0xe3,
+ 0x74,0xea,0x02,0x9d, 0x59,0xe3,0x3e,0x5e, 0x7b,0x3c,0x59,0x58, 0xf3,0x35,0x79,0xf2,
+ 0xfb,0x7d,0xce,0x3f, 0xf5,0xf3,0x24,0xb3, 0xff,0x11,0x59,0x31, 0x4d,0xb3,0x25,0x24,
+ 0x50,0xbf,0x87,0x3e, 0xb7,0x0e,0xbc,0xe8, 0xcb,0xce,0x2a,0xf7, 0x67,0x64,0x31,0x7e,
+ 0xda,0x5c,0x8d,0xe0, 0xed,0x2f,0x57,0x5e, 0x89,0x33,0x79,0xac, 0xc2,0xa0,0xa6,0x43,
+ 0xb7,0x36,0x97,0x37, 0xe7,0x90,0xb4,0x75, 0x79,0x96,0x18,0x8b, 0x28,0xec,0xcf,0x79,
+ 0xa2,0xde,0x29,0x49, 0x84,0x9f,0x8f,0x3d, 0x74,0x70,0x37,0xeb, 0xb6,0xe6,0xe6,0xe9,
+ 0xa5,0xd5,0x70,0xa1, 0x6d,0xdf,0x8f,0xb0, 0x39,0x93,0x44,0xb1, 0x49,0xbd,0x44,0x84,
+ 0x23,0x93,0x84,0xb0, 0x8b,0x24,0x29,0x07, 0x05,0x3f,0x98,0x2c, 0xed,0x7c,0x63,0xbf,
+ 0x7e,0x9c,0x65,0x3a, 0x3f,0x16,0xd5,0x87, 0x11,0xee,0xa1,0xe4, 0xe0,0xe8,0xca,0xea,
+ 0x12,0xd2,0xcb,0x84, 0x90,0xcb,0x59,0x9e, 0xb3,0xb7,0x69,0x69, 0x7e,0x05,0x90,0x1c,
+ 0x33,0x06,0x63,0x23, 0xe3,0x01,0x76,0x02, 0x8f,0x81,0x06,0xe7, 0x4b,0x4c,0xaa,0x5a,
+ 0x2a,0x0d,0x00,0x2d, 0xdf,0xcd,0x2d,0xc0, 0x54,0x8b,0x38,0x03, 0x10,0xda,0xb0,0x7d,
+ 0xc1,0x76,0x88,0xa7, 0xfc,0x37,0x2e,0xa5, 0xc7,0xae,0x69,0x84, 0x8f,0xcd,0x75,0x4f,
+ 0x9c,0xc2,0x9e,0xde, 0x9c,0x71,0xde,0xc0, 0x92,0xd4,0x2c,0x9c, 0x98,0xdb,0x74,0x9e,
+ 0x56,0x82,0xde,0xf6, 0xd3,0x1b,0x33,0xdd, 0x5b,0xbc,0xbd,0x5d, 0xac,0xae,0x72,0x30,
+ 0x7c,0xac,0xff,0x1e, 0x8e,0x17,0xa6,0xf6, 0x4d,0x4d,0xfb,0x70, 0x52,0x7e,0xb5,0x7e,
+ 0xc9,0x75,0x7d,0xff, 0x32,0x2e,0x7c,0x8c, 0x35,0x75,0x3b,0x6d, 0xb8,0xe6,0x36,0xc2,
+ 0x38,0xf2,0xa7,0x97, 0xf8,0x5a,0xb0,0x9d, 0x04,0x3b,0xc6,0x5e, 0x37,0xbf,0xbf,0xa3,
+ 0x3b,0x28,0x5b,0xad, 0x87,0x61,0x74,0x4d, 0x90,0xea,0xbe,0x54, 0xfb,0x75,0x79,0xd0,
+ 0x7e,0x4a,0x3f,0x22, 0xeb,0x50,0xd8,0xe0, 0x28,0xe4,0xc9,0xae, 0xf9,0x65,0xbb,0x97,
+ 0x5a,0xfa,0x71,0x9b, 0x25,0x25,0x77,0xcc, 0x1a,0x72,0xc6,0xaf, 0x63,0xff,0x22,0x17,
+ 0x84,0x74,0xb8,0x97, 0x88,0xcf,0x59,0x41, 0xe9,0x73,0x23,0xde, 0x6a,0x3d,0x18,0x6d,
+ 0xd6,0xdd,0x68,0xc9, 0xb7,0xc8,0x85,0x74, 0x2d,0x52,0xfb,0x7d, 0x8b,0x92,0xda,0xc7,
+ 0x31,0xcb,0x46,0x69, 0x4f,0x6b,0x7b,0x6d, 0x4d,0xed,0x3f,0x63, 0x93,0x11,0x1e,0x3e,
+ 0x5e,0x27,0xbe,0xb7, 0x5a,0xf2,0x40,0x45, 0xbd,0xfa,0x96,0xee, 0x6a,0x73,0x0f,0x3f,
+ 0xd7,0xca,0x08,0x70, 0x70,0xf8,0x42,0x0a, 0xd6,0xf0,0x7d,0x7a, 0xb7,0xb9,0xbc,0x4b,
+ 0xff,0x66,0x5f,0x2a, 0x5f,0xe0,0xea,0x3b, 0x69,0xb3,0xd9,0x0a, 0x82,0x8a,0xf1,0x93,
+ 0xc6,0x14,0x2a,0x67, 0x2b,0x6f,0x9f,0xcb, 0x68,0x6a,0xb2,0x71, 0xa5,0x83,0x2e,0x3e,
+ 0x4d,0x61,0x07,0x94, 0x9d,0x99,0x1f,0x2e, 0x87,0xf6,0xf2,0x78, 0x32,0x1f,0x2a,0xcb,
+ 0xb6,0xab,0xb6,0x58, 0x48,0xd4,0xd1,0xfc, 0xcc,0xf5,0xb8,0x7f, 0x7f,0x89,0xec,0xeb,
+ 0xf7,0x5b,0x47,0x02, 0x7e,0x04,0x1a,0xb4, 0x6c,0xf2,0x0a,0xc6, 0x7d,0x9d,0x94,0xe2,
+ 0x18,0x9b,0xa2,0x73, 0x01,0xb1,0x6e,0xc3, 0x6a,0x0b,0x09,0x17, 0x10,0x77,0xaa,0x65,
+ 0xbf,0xc2,0xb7,0xf1, 0x51,0xed,0xac,0xfd, 0x1b,0x67,0xb2,0x58, 0x9a,0x19,0x48,0xf5,
+ 0x1e,0x4e,0x29,0xe7, 0xbe,0xb8,0x63,0x93, 0x09,0xa4,0xa0,0x92, 0x7f,0xfa,0xab,0x4c,
+ 0xb4,0x90,0xb6,0xb2, 0x54,0xf6,0x12,0x73, 0xb2,0xf6,0xe1,0xa4, 0xcf,0x6f,0xe5,0x77,
+ 0xfe,0xa7,0xad,0x8b, 0x74,0xea,0x7c,0x69, 0x3d,0x93,0xd7,0x52, 0xae,0xea,0xbd,0x76,
+ 0xd8,0xad,0x6e,0xd4, 0x69,0x6f,0x78,0x98, 0xa5,0x1a,0x2a,0xad, 0x97,0xa2,0xfa,0xd7,
+ 0x5d,0xd5,0xc8,0x69, 0x7a,0xd6,0xee,0xd2, 0x26,0x66,0x06,0xe0, 0x30,0x3e,0xa7,0xd3,
+ 0xc6,0xa9,0x4b,0xc3, 0x7a,0xd3,0xa9,0xd5, 0x3f,0x7d,0x15,0x34, 0x0f,0x0b,0x78,0x7d,
+ 0x2d,0x5d,0x0c,0xb2, 0x1b,0xac,0x66,0xb2, 0xb6,0x4c,0xb0,0x57, 0x55,0x35,0xdb,0x95,
+ 0xe9,0x02,0xc0,0xb1, 0x46,0x60,0x19,0x90, 0x06,0x62,0xbd,0x01, 0x04,0x23,0x19,0x63,
+ 0xf7,0xfa,0x25,0xf0, 0xd5,0x7b,0x48,0x3b, 0x2c,0x9c,0xe3,0xce, 0x55,0xa2,0x31,0x14,
+ 0x0f,0x04,0xba,0xa3, 0xeb,0xb5,0x2f,0x6c, 0xa5,0x79,0x42,0x07, 0x4b,0xde,0xfd,0x39,
+ 0xa3,0x1d,0xb0,0xb1, 0x4b,0xad,0x4e,0x26, 0x9c,0x84,0x34,0x6e, 0xcd,0xd4,0xa5,0x08,
+ 0xc6,0xed,0xb0,0xef, 0x60,0x7b,0xa9,0x81, 0xf1,0xfc,0x6a,0x82, 0x84,0x1b,0xea,0x61,
+ 0xcf,0x3a,0x26,0x48, 0x87,0xdd,0xa7,0xf9, 0x32,0xe5,0x8e,0xac, 0x9b,0xa6,0x27,0x5e,
+ 0x9e,0xd1,0x4d,0x56, 0xe8,0xfa,0x1e,0x2f, 0x09,0xbc,0x5e,0xc1, 0x4d,0xa6,0x67,0xa7,
+ 0xf3,0xbc,0x9e,0x1e, 0xda,0x09,0x8d,0x53, 0x5f,0xcd,0x65,0x93, 0xb4,0xa8,0x1b,0xf5,
+ 0x97,0x0c,0xfc,0x9d, 0x86,0xaf,0xce,0x37, 0x57,0x30,0x52,0x1c, 0x3b,0x19,0x86,0x91,
+ 0x91,0xde,0x56,0x51, 0x40,0x26,0xa2,0x73, 0x52,0xec,0x50,0x2e, 0xfa,0x3c,0xf4,0x06,
+ 0x7b,0x7f,0x8c,0x0e, 0x1e,0x97,0x4f,0xb1, 0x0c,0xfa,0x8c,0x6c, 0x99,0xc9,0x32,0x04,
+ 0xac,0x53,0x90,0xb3, 0x5d,0x4a,0x0c,0xf6, 0xa7,0x7e,0x6e,0xa5, 0x92,0x3d,0x68,0xcc,
+ 0x28,0x9d,0x21,0xea, 0x22,0x95,0xca,0xf2, 0xfc,0x4c,0x47,0xf1, 0x06,0x83,0x51,0xbb,
+ 0xf8,0x20,0x7b,0x44, 0x08,0x01,0x3a,0x58, 0x5c,0x87,0x32,0x82, 0xa3,0x94,0x9b,0x55,
+ 0xae,0xb5,0x0d,0xef, 0x5c,0x55,0x52,0x76, 0x34,0x9a,0x7d,0x27, 0xcf,0xae,0x65,0x91,
+ 0x89,0xc6,0xde,0x56, 0xee,0x77,0x77,0x97, 0xce,0x94,0xb7,0x77, 0x3f,0x96,0xd3,0x6a,
+ 0xd7,0x7d,0x5b,0x71, 0xe0,0xf8,0x30,0x88, 0xb2,0x56,0x56,0xca, 0x76,0xc3,0x7a,0xd9,
+ 0x5f,0xaf,0x4c,0xae, 0x63,0x31,0x10,0xd5, 0xa5,0x9d,0x3b,0xba, 0x79,0x07,0xcf,0x63,
+ 0xe6,0x36,0x5a,0x7b, 0x3d,0x86,0x8f,0x49, 0x66,0xd6,0xc7,0xf7, 0xd0,0x0e,0x55,0x0e,
+ 0x77,0x54,0x4a,0x66, 0xb1,0x3a,0xd0,0xcb, 0x7b,0x70,0x56,0xa9, 0x4d,0xaa,0x8b,0x60,
+ 0x98,0x0c,0xb5,0xd8, 0xed,0xa1,0xe3,0xc4, 0x8d,0x4d,0x84,0x15, 0x6e,0x8a,0x7f,0x3d,
+ 0xaf,0xd9,0xe7,0xdf, 0x42,0x0e,0x00,0x79, 0xce,0xbc,0x82,0xb6, 0xc7,0x87,0xba,0xe6,
+ 0x37,0xd2,0xef,0x79, 0xbd,0x47,0x81,0xd3, 0xb7,0xb2,0x41,0xee, 0xd4,0xef,0xbb,0x82,
+ 0xa9,0xc9,0x39,0x8d, 0xde,0x0c,0xc3,0x8d, 0xa5,0x1c,0x2e,0xbd, 0x77,0x04,0x04,0xb8,
+ 0xbc,0x54,0xed,0xa9, 0xa9,0x4f,0x86,0x20, 0x04,0xc4,0xea,0xa7, 0x9a,0xda,0x5c,0x70,
+ 0x23,0xd8,0x90,0xcd, 0xe6,0x6b,0x94,0x1e, 0x6c,0x86,0xe7,0x6b, 0x6d,0x43,0x13,0x41,
+ 0x0b,0x2b,0x81,0x00, 0xe2,0xdb,0x6c,0xe1, 0x49,0xac,0x0c,0x50, 0x48,0x8f,0xbe,0x91,
+ 0xcc,0x68,0x3c,0x39, 0x19,0x2c,0x3a,0xc3, 0x08,0xbb,0x72,0x01, 0x61,0x38,0x35,0x7d,
+ 0xf5,0x25,0xf6,0x93, 0xbb,0x5a,0x0b,0x69, 0x77,0x1c,0x7b,0xd6, 0xc3,0x8b,0xe0,0x1d,
+ 0x53,0x63,0xe2,0xbf, 0x80,0x1a,0xf2,0x35, 0xe7,0xda,0xcc,0x56, 0x92,0x13,0x4d,0x71,
+ 0x17,0x57,0xe1,0x71, 0x9e,0x1a,0x5e,0xfe, 0x24,0x6b,0x98,0x64, 0x16,0x55,0x95,0x34,
+ 0x5e,0x9d,0x15,0xbe, 0x25,0xd8,0xb8,0xb6, 0x9b,0x57,0x46,0xd5, 0x2d,0xc1,0xda,0x6b,
+ 0xbf,0x9e,0xda,0x84, 0x64,0x42,0xbb,0x66, 0xf1,0x8b,0x64,0xc3, 0xd6,0xe1,0x64,0xd7,
+ 0xd0,0x49,0x9e,0xa2, 0x83,0xb1,0x7e,0x67, 0x49,0xe9,0x60,0x20, 0x22,0xac,0x5e,0xed,
+ 0xc1,0x4b,0x61,0xc7, 0x6f,0x80,0xea,0x9b, 0xdc,0x3a,0x3d,0xd2, 0x7f,0x33,0x32,0xd1,
+ 0x02,0x69,0x09,0x25, 0xc4,0x6c,0xe1,0x11, 0x72,0xf4,0xfa,0x22, 0x37,0xc0,0x7f,0x3b,
+ 0xeb,0x7e,0x4e,0x62, 0x9c,0xed,0xe4,0x6f, 0x67,0xdc,0xd2,0xf1, 0x25,0xd1,0x9d,0x5a,
+ 0x66,0x8b,0xe2,0xba, 0xe7,0xa4,0xb9,0x5b, 0x5b,0xd5,0x53,0x0b, 0x01,0x99,0x5c,0xf1,
+ 0x6d,0xb6,0x36,0x25, 0x8c,0x02,0x94,0x2a, 0xc3,0x4a,0xb9,0xc6, 0x46,0x25,0x7b,0xd6,
+ 0xd7,0x02,0x87,0x85, 0x15,0xca,0xdb,0x66, 0x3b,0x81,0xfa,0xc7, 0xd2,0xf0,0xff,0x74,
+ 0x2d,0x5e,0x90,0x07, 0x9c,0xce,0x2b,0xfc, 0x84,0xd9,0xf8,0x55, 0x47,0x1c,0xfe,0x79,
+ 0x19,0x18,0xbd,0x5d, 0xd8,0x35,0xc6,0x97, 0xe8,0x94,0x03,0xdd, 0x80,0x57,0xdf,0xa0,
+ 0xfc,0xa0,0xaa,0x8c, 0xd1,0xb4,0xb8,0x27, 0x05,0x27,0x36,0x75, 0x64,0x5e,0xb2,0xaa,
+ 0x5a,0xc5,0x66,0x30, 0x9c,0x1f,0x84,0x1a, 0x4d,0x8e,0xdb,0x90, 0xd9,0xbb,0x26,0xa0,
+ 0xfa,0x54,0x0c,0x4d, 0x57,0x2d,0x27,0x28, 0x4e,0x4e,0xad,0x1a, 0x54,0xd9,0x0a,0xc2,
+ 0x5d,0x8b,0x64,0xab, 0xc3,0xe9,0xab,0xde, 0x37,0xc7,0xd5,0x72, 0xfd,0x7e,0x61,0x62,
+ 0xfc,0x1e,0x77,0x13, 0x9a,0xd9,0x74,0xeb, 0x9f,0x5a,0x07,0xb2, 0x34,0x17,0x69,0x5c,
+ 0x04,0x40,0x90,0x8d, 0xa3,0x4c,0x22,0xee, 0xb6,0x1a,0x60,0x2d, 0x0e,0x06,0xe6,0xd2,
+ 0x27,0x9f,0xff,0x95, 0x68,0x42,0x8b,0x19, 0x84,0xdc,0x7c,0xdc, 0xc5,0x1a,0x29,0x91,
+ 0x65,0xc5,0xaf,0x28, 0x81,0xcc,0x01,0xbc, 0x5e,0xeb,0x28,0x5e, 0x6c,0x84,0x11,0x0d,
+ 0xa1,0x9d,0xd4,0x3b, 0xcd,0xb2,0x38,0x99, 0x9a,0x17,0x79,0x14, 0x96,0x1d,0xc9,0x4e,
+ 0x21,0x52,0xe5,0xb3, 0xbd,0x2a,0xb0,0xf6, 0xfd,0xd3,0x88,0x03, 0x3e,0x0c,0x58,0x8d,
+ 0xee,0xf1,0x9b,0xb6, 0xc3,0x71,0xca,0x68, 0xbc,0x21,0x2f,0x10, 0xe9,0x41,0xd0,0xc1,
+ 0xa5,0xd8,0xdb,0xd7, 0x70,0xb2,0xda,0x5c, 0x07,0x73,0x39,0x1a, 0x73,0xc0,0x8d,0x0a,
+ 0x20,0x18,0x31,0x70, 0x50,0xc9,0x76,0x27, 0x3b,0xc6,0x8c,0xee, 0xf7,0xdb,0xbb,0x89,
+ 0xf1,0x54,0xc3,0x61, 0x83,0x23,0x3e,0x07, 0xb6,0xe7,0x5f,0xa3, 0xe8,0xf3,0xf6,0x38,
+ 0x39,0xfb,0x58,0xec, 0xdc,0x61,0x4e,0x5b, 0xdd,0x1c,0x19,0xcc, 0xd9,0xe7,0xd8,0x6e,
+ 0xf1,0x2d,0xaf,0xab, 0x0b,0x94,0x18,0xbb, 0x56,0x49,0xa4,0x9b, 0x1b,0x01,0xb5,0xf6,
+ 0x9a,0x45,0x0f,0xed, 0x9a,0xf4,0x38,0x86, 0x79,0xc7,0x8f,0x1a, 0xbe,0x66,0x7e,0x46,
+ 0x63,0xaf,0xe5,0x78, 0x35,0xab,0x0c,0x6d, 0x36,0x90,0x67,0xf2, 0x21,0xfd,0xd5,0x45,
+ 0xee,0x13,0x08,0x37, 0xf1,0xe4,0xe1,0xa0, 0xe5,0xd1,0x4f,0x2a, 0xe8,0xbe,0x02,0x68,
+ 0x3d,0x2d,0xc2,0xc2, 0xe4,0x82,0xa9,0xb9, 0x80,0x0f,0xb2,0x4e, 0x31,0x19,0x8d,0x62,
+ 0xad,0x65,0x95,0x07, 0x05,0x0a,0xfa,0x6a, 0x85,0x37,0x12,0x94, 0xa1,0xdd,0x28,0x59,
+ 0xcc,0xf9,0x87,0x90, 0x7d,0x23,0x7a,0x6b, 0xc9,0xc9,0xc9,0x6e, 0x1e,0x32,0x8b,0x04,
+ 0x4c,0xde,0x61,0x52, 0x4b,0xa6,0x30,0xb2, 0xbf,0x72,0x5b,0x89, 0x48,0x84,0x21,0x24,
+ 0xb9,0xb1,0x89,0x8a, 0x18,0x94,0x29,0xef, 0x34,0xae,0xfa,0xe0, 0xe0,0x56,0xba,0x6d,
+ 0x0c,0xc3,0xb6,0xe5, 0xe0,0xb9,0xdf,0x58, 0xd2,0x4c,0xa5,0xf6, 0x6f,0xff,0xac,0x2c,
+ 0x37,0x87,0xdb,0xd3, 0x3e,0xad,0xab,0x69, 0xde,0xe4,0x96,0x04, 0x92,0xc7,0x8c,0xde,
+ 0x66,0x68,0x4c,0x5f, 0x22,0x3d,0xa0,0xbf, 0xda,0xb8,0xd3,0x05, 0xf6,0x90,0x1f,0x0c,
+ 0xa8,0x18,0x87,0x88, 0x86,0x4b,0xb2,0x52, 0x1f,0xa4,0x95,0xbd, 0x17,0x10,0x43,0xd1,
+ 0x48,0x18,0x94,0x4d, 0xdd,0xba,0x97,0xe3, 0x3d,0xc3,0xaa,0x6c, 0x9b,0x26,0xc6,0x02,
+ 0xf4,0x3e,0x12,0x7e, 0x5b,0x47,0x5f,0xa7, 0xa6,0x6f,0x56,0xad, 0xe5,0x03,0x85,0x85,
+ 0x3a,0x08,0x14,0x7e, 0x52,0x93,0x09,0x45, 0x62,0x58,0x3a,0x2b, 0x6e,0xa6,0x24,0x9e,
+ 0xae,0x0f,0xa7,0xaf, 0x65,0xc9,0xb5,0xd7, 0x49,0x50,0x48,0xe2, 0x5a,0xce,0x2d,0xbd,
+ 0x9e,0xde,0xc7,0x6e, 0x6a,0x09,0xd7,0x49, 0x47,0xef,0x14,0xf6, 0x58,0x5c,0x1e,0x81,
+ 0xd1,0xad,0x2a,0xd0, 0x2d,0xf2,0x9c,0xe9, 0xcb,0x29,0xe1,0xc2, 0x93,0x75,0x79,0xcd,
+ 0x87,0xd2,0x23,0x3b, 0x66,0xd6,0x03,0x97, 0x50,0xcc,0xbd,0x75, 0x19,0x82,0xf9,0xde,
+ 0xd3,0xa8,0x7b,0x24, 0x6a,0xc2,0x12,0x63, 0xf1,0x72,0x88,0x53, 0x9c,0x3f,0x0d,0xfd,
+ 0xd2,0x59,0x9d,0xdb, 0xa4,0x08,0xe2,0xfc, 0x72,0xed,0xac,0x94, 0x69,0x28,0x9b,0xb4,
+ 0x00,0x84,0x97,0x91, 0x52,0x9b,0x33,0x30, 0x61,0x36,0x3f,0xe9, 0x44,0x8b,0x2b,0x33,
+ 0x33,0x72,0x99,0x48, 0x20,0x97,0x76,0x69, 0x27,0x9f,0xf0,0x13, 0xda,0xf3,0xff,0x73,
+ 0xe5,0xdf,0xc3,0xd9, 0xf4,0x7c,0x1e,0x5f, 0x73,0x8f,0x3e,0xa7, 0x0a,0xee,0x7a,0x31,
+ 0xda,0xee,0x41,0x5b, 0x2b,0x33,0xa1,0xc8, 0x4c,0x6b,0x65,0x97, 0xae,0x60,0x9b,0x4f,
+ 0x34,0x81,0x86,0x4d, 0x7e,0x32,0x76,0xf9, 0xbb,0x60,0xd0,0x5d, 0x6f,0x10,0x1a,0xf5,
+ 0x2d,0xd9,0x29,0x65, 0xbc,0xae,0x59,0x4f, 0x66,0xb1,0x44,0xac, 0x69,0xe1,0x7a,0x96,
+ 0x1b,0xbe,0xd5,0x52, 0x0a,0x6c,0x74,0xec, 0xd9,0x27,0xce,0xe0, 0xaf,0x59,0x2c,0xe6,
+ 0xd9,0x30,0x9b,0x26, 0x56,0x72,0x76,0x2c, 0x0c,0x55,0xcf,0x2e, 0xdf,0x87,0xaa,0xe2,
+ 0xb8,0xa7,0x2c,0xea, 0x6a,0xca,0x6f,0x99, 0x62,0x18,0x67,0x78, 0xc5,0x3c,0x89,0x2b,
+ 0xe1,0x37,0x88,0xdb, 0x74,0xd7,0x44,0x0c, 0x58,0xcb,0xad,0xc6, 0xb1,0x53,0xe3,0x74,
+ 0xd4,0x61,0x8a,0xad, 0x0a,0x86,0x74,0xad, 0xe4,0xd8,0x0d,0xbc, 0xe9,0x5b,0x20,0xa5,
+ 0x8b,0xea,0x56,0xf4, 0xdc,0x35,0x15,0x18, 0x86,0x92,0xa3,0x11, 0xea,0x4a,0x5b,0xb3,
+ 0x53,0x4c,0xde,0x23, 0xb8,0xc7,0x96,0xbc, 0xd8,0x97,0x61,0xd0, 0x3b,0xaf,0x5d,0x5f,
+ 0x5b,0x79,0x3f,0x81, 0x52,0xb3,0x53,0x6c, 0x78,0x64,0x29,0x05, 0xb7,0x80,0x50,0x8c,
+ 0x87,0x65,0xc8,0xd2, 0x71,0x7d,0xc8,0x6c, 0x24,0xb2,0xf6,0x3d, 0x7c,0xa9,0x74,0x77,
+ 0x92,0x4b,0x62,0x2d, 0xe1,0x5a,0xbb,0x6e, 0xb7,0x1d,0xb0,0xb9, 0x82,0x82,0xbb,0x13,
+ 0xa2,0x65,0xfb,0x57, 0xc4,0x47,0x76,0x59, 0xd5,0xe5,0xef,0xa7, 0x64,0xc5,0x45,0x52,
+ 0xd9,0x4a,0x3b,0x99, 0x35,0x8c,0x54,0x46, 0x12,0xb6,0xf9,0x4a, 0x9a,0xa1,0x00,0xac,
+ 0x90,0x09,0x62,0x8a, 0x7a,0xfc,0x7c,0xa2, 0x23,0x58,0xc9,0x59, 0xcd,0xa2,0x91,0x12,
+ 0x07,0x36,0x64,0x0c, 0xb1,0xd3,0xf0,0xe9, 0x5a,0x1e,0x72,0xcd, 0xd7,0x3b,0xde,0x96,
+ 0xa3,0xef,0x91,0xfb, 0xcc,0x1c,0xa0,0x0e, 0xb0,0xc2,0x60,0x3e, 0xbf,0x91,0xa1,0xa0,
+ 0x6e,0xb5,0xa5,0x49, 0x2e,0x5e,0x43,0x20, 0x8d,0xa5,0x58,0xcc, 0xa9,0x76,0xac,0x58,
+ 0x50,0xd0,0x32,0x2a, 0x04,0x4f,0x90,0x0b, 0xc1,0x6f,0x5f,0xab, 0x30,0x66,0x51,0x1c,
+ 0xc7,0xf2,0xd3,0x5e, 0xed,0x77,0x89,0x6f, 0xa2,0x0f,0xbc,0xf7, 0x4d,0xf5,0x44,0x89,
+ 0xe4,0x8c,0x20,0x3e, 0x64,0xca,0x2f,0x8d, 0xc3,0x2f,0x9d,0x2c, 0x03,0xb6,0xa6,0xcb,
+ 0x44,0x38,0x59,0x6b, 0x01,0xfb,0x90,0x08, 0x1e,0xaf,0xa9,0x8d, 0xb2,0xb5,0xec,0xad,
+ 0x9b,0x34,0x6c,0x9d, 0xb1,0x9c,0xb0,0xc0, 0xf6,0xf3,0x80,0xf5, 0xd9,0x04,0xb2,0x70,
+ 0x3f,0xcb,0x97,0x47, 0x22,0x23,0xd1,0xf7, 0xdd,0x66,0x0c,0xfb, 0x2c,0x1e,0x1e,0xfa,
+ 0x77,0xec,0x05,0x9f, 0xc1,0x9f,0xfe,0xf5, 0xbf,0xfc,0x52,0x02, 0x44,0xde,0xe6,0x00,
+ 0x4f,0xa4,0x29,0x78, 0xd4,0xd0,0x78,0xea, 0x1a,0xa6,0x90,0xf9, 0x18,0x8a,0xe9,0x83,
+ 0x1a,0x7d,0x12,0x9d, 0x35,0xad,0x36,0x28, 0xab,0xae,0xf6,0x73, 0xf6,0x2a,0xbc,0xdf,
+ 0x73,0x11,0xc2,0x73, 0x47,0x05,0x59,0x57, 0x02,0xcf,0x3d,0x99, 0xb0,0xa3,0x43,0x18,
+ 0x7a,0x3a,0xb7,0x61, 0x9c,0x68,0xe7,0x64, 0x94,0x03,0x02,0xb3, 0x18,0xae,0x6e,0x75,
+ 0xdf,0xa5,0xe9,0xf4, 0xf9,0x14,0x8d,0xf1, 0x1e,0xa3,0x90,0x86, 0x7e,0xa7,0x4b,0x75,
+ 0xc4,0xd5,0xbf,0xea, 0xb4,0xdd,0xc5,0xf2, 0xf6,0xad,0x91,0xe9, 0xaf,0x6e,0xd7,0xd6,
+ 0x99,0xaf,0xb6,0x04, 0x31,0x3c,0x71,0x0c, 0x17,0x50,0x02,0x13, 0x26,0x40,0xbf,0x4a,
+ 0x65,0xd2,0xf0,0x62, 0xe7,0x06,0x6f,0x8d, 0x67,0xc8,0xdd,0x5e, 0xf9,0x32,0xfc,0xa7,
+ 0x91,0x5b,0x5d,0xc5, 0x97,0x24,0x7a,0x53, 0x21,0xbb,0xc2,0xc5, 0x37,0x90,0x2c,0x49,
+ 0x40,0x4a,0x45,0x1a, 0x7b,0xe6,0x47,0x33, 0x15,0xff,0x3d,0xcc, 0x2b,0xfb,0x1f,0xb3,
+ 0x4d,0x90,0xde,0x8a, 0x78,0x62,0xfb,0x06, 0x0f,0x84,0xfd,0xc3, 0x26,0xf9,0x36,0x9e,
+ 0x9f,0x07,0xc4,0xa6, 0x5c,0x12,0xa3,0xa4, 0x82,0xd2,0xc5,0x0e, 0xb4,0x71,0x28,0x55,
+ 0xf1,0x63,0xd9,0xee, 0x59,0x6c,0x39,0xe6, 0x68,0x18,0xd3,0x92, 0x25,0x2d,0x1b,0x7d,
+ 0x29,0xc7,0x55,0x27, 0xa3,0x01,0x12,0x6e, 0x14,0xc8,0x02,0x56, 0x9a,0xc9,0x51,0x21,
+ 0x42,0x12,0xa5,0x11, 0x80,0x90,0x61,0x5c, 0x8e,0x6b,0x9d,0x37, 0x7f,0xfc,0xc7,0xd5,
+ 0xd3,0xf6,0x24,0x23, 0x9c,0x8f,0xb3,0xf8, 0xd0,0x69,0xd4,0x22, 0x00,0x68,0x3f,0x9d,
+ 0x06,0xce,0x00,0x4b, 0x71,0xaa,0x1f,0xb7, 0x30,0xac,0x31,0x42, 0xdd,0x18,0xe5,0x31,
+ 0x2a,0x4a,0xa4,0x83, 0x29,0x46,0x21,0x48, 0x8d,0x87,0x23,0x16, 0x66,0xb5,0xad,0x06,
+ 0x60,0xd7,0xb5,0x38, 0xf0,0xf3,0xaa,0x01, 0x5c,0x25,0x0e,0x17, 0xd7,0xfe,0xbd,0x4e,
+ 0xd7,0x09,0xec,0xf6, 0xbb,0x7a,0xf7,0x06, 0x19,0x7d,0xd1,0xf2, 0x26,0x5c,0xeb,0xd8,
+ 0x9c,0x17,0x47,0x8c, 0x4f,0xe8,0xca,0x22, 0x68,0xaf,0x14,0x50, 0x4c,0x03,0x21,0x34,
+ 0x14,0x21,0x84,0x3d, 0xb8,0xb6,0xb8,0xb8, 0xcc,0xe5,0xaf,0x64, 0x4b,0x43,0x62,0xd4,
+ 0xc4,0x0b,0x30,0x2f, 0x71,0x8c,0xf9,0x90, 0x30,0x80,0x5c,0x8e, 0x8d,0x7a,0x3d,0x2b,
+ 0x15,0xc0,0xca,0xf8, 0x5a,0xad,0x5d,0x8a, 0xac,0x8d,0x06,0x66, 0x4d,0x4c,0x19,0x90,
+ 0x30,0x65,0x2c,0x65, 0x21,0x7b,0x14,0xf7, 0xd7,0xa8,0xf7,0x5e, 0x5b,0xab,0x2f,0xed,
+ 0x74,0xbb,0xff,0xaf, 0x79,0xff,0xb3,0x0b, 0x8a,0xca,0xd7,0x90, 0xae,0x48,0xdb,0x1c,
+ 0x01,0x4b,0xf1,0x71, 0xa7,0x8f,0x59,0x44, 0xfa,0xae,0xba,0xad, 0x20,0xdd,0x27,0xf1,
+ 0x8d,0x04,0x17,0xcb, 0xe0,0x53,0xfd,0xb6, 0x5c,0x47,0x0c,0x9d, 0xbb,0xa2,0x0c,0xa0,
+ 0x32,0xe3,0xb0,0x2e, 0x4f,0xc1,0x9e,0xea, 0xa4,0x9e,0xd3,0x4c, 0xd7,0x9b,0x5d,0xb5,
+ 0x3c,0x02,0x15,0xb2, 0x88,0x84,0x68,0x86, 0xb0,0xbc,0x27,0xf1, 0x74,0x57,0xb5,0x76,
+ 0x9d,0x5b,0x50,0xb6, 0x7a,0x8d,0xce,0x1e, 0x53,0xdf,0x0f,0x33, 0x00,0xec,0x25,0x29,
+ 0x09,0x30,0xc4,0x72, 0xd4,0x9f,0x1c,0x14, 0x21,0x5d,0xb4,0xde, 0x6b,0x74,0xa3,0xb0,
+ 0x0b,0x67,0x25,0x87, 0xbc,0x37,0x3d,0xd7, 0x53,0xe0,0x4d,0x4c, 0x3e,0x7b,0x1a,0x84,
+ 0xa0,0x3e,0xad,0xaf, 0x6e,0xaf,0x87,0xe4, 0x9d,0x4c,0x8c,0xc3, 0xb2,0xd1,0x42,0x5e,
+ 0x69,0x7c,0xca,0x36, 0x2f,0x57,0xd7,0xaa, 0xf7,0xaa,0x71,0x1d, 0x45,0x45,0xb2,0x3e,
+ 0xcf,0xb1,0x31,0x69, 0xa7,0xf9,0xe5,0x10, 0xc3,0x3e,0xd9,0x1e, 0x4d,0xef,0x4d,0xae,
+ 0x49,0xff,0xa1,0x8e, 0xbe,0xc5,0xb6,0xa6, 0xaf,0x9d,0x17,0x94, 0xc5,0x9c,0xc8,0x48,
+ 0x3a,0x79,0x1a,0x30, 0x93,0xa9,0xe9,0xda, 0xcb,0x97,0xa2,0xd9, 0xa2,0x39,0xb1,0xfb,
+ 0x6d,0x58,0x99,0xb4, 0x85,0xda,0xde,0x47, 0x77,0x6d,0x86,0xd6, 0x4f,0x71,0xf3,0x64,
+ 0xfd,0xfc,0x86,0xf3, 0x67,0xc6,0xa1,0x5d, 0xbf,0xca,0x92,0xe2, 0xd9,0xdf,0xa7,0x93,
+ 0x9f,0x12,0x9c,0x47, 0xd4,0xbc,0x97,0x36, 0x1c,0x17,0xe5,0x23, 0x75,0xaf,0xf1,0x3b,
+ 0x56,0x4b,0x57,0x77, 0x8f,0xfe,0x35,0x0a, 0x53,0x68,0x70,0x6b, 0x34,0x6e,0x0f,0xba,
+ 0xf5,0x6d,0xd2,0xc3, 0x01,0x9a,0x7c,0x7b, 0xbb,0xda,0x5a,0x61, 0x5f,0xa2,0x58,0x04,
+ 0xd8,0x88,0x39,0xc5, 0x3a,0xbe,0x65,0x35, 0x2f,0xd3,0x4d,0xf3, 0x5c,0x79,0xf8,0xbc,
+ 0xf4,0xe6,0x6b,0x71, 0x24,0x93,0x96,0xe6, 0x8b,0x0a,0xd6,0xf5, 0x58,0xf8,0xf8,0x8e,
+ 0xbc,0xa9,0x1c,0xf1, 0x48,0x64,0x08,0x35, 0xdb,0x20,0x0b,0x5c, 0x64,0xe7,0x55,0x59,
+ 0x39,0x6e,0x28,0x3a, 0x71,0x79,0x67,0x42, 0x84,0x97,0x2f,0x36, 0x78,0xf3,0x88,0x44,
+ 0x01,0x4f,0xf0,0xb4, 0xae,0x2e,0xc5,0x79, 0x61,0x59,0x4e,0x4e, 0xa3,0xcd,0xba,0xbd,
+ 0xd5,0xdf,0xb3,0x94, 0x84,0x69,0xa2,0x19, 0x74,0x5a,0xa9,0x5f, 0x77,0x1b,0x35,0x20,
+ 0x16,0x5a,0xb2,0xb0, 0x9b,0xab,0x50,0x65, 0xe1,0xe0,0x7b,0x57, 0xf4,0xb6,0xad,0x18,
+ 0xef,0x4a,0x25,0x77, 0x30,0x45,0xc9,0x1a, 0xdd,0x69,0x68,0xce, 0x7b,0x7c,0xaa,0x64,
+ 0x9a,0xed,0xc6,0xb2, 0xe3,0x31,0x15,0x5b, 0xdd,0xe6,0xa5,0xa9, 0xad,0xce,0xe8,0xaf,
+ 0x23,0x65,0xd3,0xbd, 0x6a,0xf3,0x87,0x9c, 0xaa,0x6c,0xc8,0xce, 0xa5,0x0f,0x49,0x75,
+ 0x1c,0x4b,0xe8,0x9b, 0x43,0x75,0xca,0xca, 0xb2,0x86,0xf5,0xec, 0x27,0x94,0xea,0x8c,
+ 0x46,0x9a,0x37,0xb7, 0xf9,0x8d,0xe9,0xeb, 0xd8,0xae,0xd1,0x39, 0x04,0x1e,0x17,0xa3,
+ 0xb1,0x87,0xb2,0xf4, 0x13,0x1d,0x5e,0xde, 0xef,0xcd,0xad,0x1f, 0x4f,0x0f,0xb5,0x8b,
+ 0xcd,0xf0,0xf3,0xaf, 0xe1,0x40,0xdb,0x12, 0x4f,0xf4,0x90,0xce, 0x8c,0x28,0x45,0xb4,
+ 0x20,0xfc,0x87,0x0b, 0xef,0x16,0x96,0x7a, 0x16,0xc4,0x50,0xc9, 0x65,0xc0,0x5b,0x7f,
+ 0x09,0x5f,0xab,0xb5, 0xec,0x5a,0xdd,0xaa, 0x70,0x22,0x86,0xca, 0xdb,0x20,0x61,0x23,
+ 0x74,0xfb,0xb6,0xf2, 0xc8,0xd7,0xa2,0xae, 0x5d,0x8b,0x1d,0x6f, 0x86,0xca,0xb9,0x0f,
+ 0xad,0x99,0x41,0xd8, 0x94,0x52,0xd7,0x41, 0xe9,0x54,0xcf,0x98, 0xc9,0x7f,0x12,0xbc,
+ 0x15,0x63,0x7f,0xa4, 0xb9,0x21,0x7b,0x9f, 0x25,0x5e,0x0e,0xb9, 0x8d,0x6a,0xe3,0xd0,
+ 0xe6,0x4c,0xc8,0x8b, 0x0b,0xe7,0x56,0xd0, 0x5b,0xa4,0x20,0x1e, 0x60,0xc7,0x44,0x87,
+ 0x6b,0x21,0xb4,0x6a, 0x7e,0xb3,0x46,0x83, 0x3b,0xe5,0xab,0xae, 0x29,0x70,0x28,0xb8,
+ 0xd9,0xa1,0x39,0xe4, 0x2a,0x95,0x32,0x49, 0xc3,0x27,0x6d,0x1f, 0x16,0xb6,0x68,0xc2,
+ 0xca,0x61,0x18,0xb4, 0x9e,0x55,0x92,0xeb, 0xa7,0x7a,0xfe,0x59, 0x5a,0x48,0xcd,0x5a,
+ 0x13,0x84,0xd3,0xc0, 0x40,0xa7,0x75,0xa8, 0x58,0x07,0x79,0x5a, 0xfd,0x23,0x16,0x38,
+ 0x66,0x6f,0x06,0x6c, 0xae,0x11,0x47,0x03, 0x0a,0x1b,0x15,0x8a, 0xbe,0xbe,0xa1,0x1c,
+ 0x2d,0x20,0xde,0xa4, 0x19,0xf5,0x76,0x8d, 0x14,0x37,0x66,0xaf, 0xa2,0x76,0xa9,0x42,
+ 0x25,0xd9,0xaf,0x7a, 0xd1,0xd3,0x0c,0x08, 0xfe,0x58,0x06,0xee, 0xdd,0xb2,0xaa,0x93,
+ 0x9b,0xf0,0xb8,0x97, 0xa8,0xb5,0x6a,0x1b, 0xe5,0xb6,0x97,0xe5, 0x61,0x9a,0x8d,0xbc,
+ 0x24,0x49,0x9d,0x0b, 0x92,0xd4,0x47,0x2d, 0x40,0x6e,0x74,0xc6, 0x6b,0x3d,0x6e,0xbb,
+ 0x8b,0x25,0xba,0x05, 0xc0,0x3a,0x30,0x21, 0x21,0x32,0x98,0x75, 0x34,0xe2,0x2d,0x70,
+ 0xd0,0xd6,0x1b,0xf0, 0x47,0xf2,0xb6,0xfb, 0x7e,0xde,0xee,0x1c, 0x0d,0x2f,0x5b,0x70,
+ 0x8b,0xa9,0x56,0xe8, 0x3f,0x4b,0x9a,0x81, 0x1d,0x2e,0xc0,0xe8, 0x34,0x13,0xf4,0x05,
+ 0x4d,0xe9,0xdb,0x1e, 0xbf,0xaa,0x81,0x2b, 0xec,0x23,0xc2,0xdf, 0xad,0x3d,0x0a,0xf1,
+ 0x67,0x46,0x66,0xd6, 0x62,0x89,0x48,0xf7, 0x2b,0x07,0x46,0x51, 0xe9,0xef,0x6a,0xea,
+ 0xf1,0x33,0x26,0x86, 0x75,0x4d,0xfa,0x4e, 0xa1,0xc2,0x1a,0x28, 0x76,0x4f,0xc0,0xdf,
+ 0x30,0xe8,0x6a,0x22, 0xda,0xeb,0xa4,0x6d, 0xde,0xeb,0x7c,0xc1, 0x33,0xc3,0xd6,0x2f,
+ 0x7f,0x22,0xc9,0x70, 0x60,0x5c,0xb2,0xac, 0x9a,0x38,0x39,0x09, 0x13,0x9b,0xa5,0x86,
+ 0x93,0x36,0x47,0x9c, 0xf0,0xc2,0x22,0x3a, 0xf7,0x53,0xb9,0xcb, 0x6b,0xcc,0xc7,0x0c,
+ 0xbe,0x49,0x06,0xc8, 0x88,0x72,0x99,0xf7, 0x19,0xbf,0xb0,0xff, 0x93,0x59,0x93,0x32,
+ 0x3e,0x21,0xe8,0xc2, 0x1e,0x77,0x56,0x70, 0x57,0x1f,0xbc,0x8b, 0x54,0x9d,0xff,0xbf,
+ 0xe5,0x48,0x6d,0xb4, 0x53,0x42,0xca,0x73, 0x95,0x2e,0x82,0xf0, 0x19,0x6f,0x2a,0x05,
+ 0xe4,0x9d,0x4c,0x75, 0x4f,0x86,0x6d,0x34, 0x50,0x43,0x57,0x4a, 0xb4,0xaf,0x28,0xa9,
+ 0x2c,0xea,0xb3,0x43, 0x2f,0x31,0x65,0x0b, 0x02,0x1c,0xe6,0x85, 0x46,0xb0,0x2f,0xa0,
+ 0x1a,0xaa,0x29,0xbf, 0x68,0xcf,0x13,0x6b, 0x53,0x81,0x24,0xd0, 0x24,0x3f,0x35,0x8c,
+ 0x3c,0x70,0x86,0x7a, 0x94,0x50,0x30,0x10, 0x1e,0xd1,0x22,0x69, 0x9b,0xbe,0xda,0x8b,
+ 0x2e,0x40,0xa1,0xbc, 0x24,0xeb,0xca,0xc7, 0xa4,0x1e,0x1c,0xb1, 0x01,0x7f,0xfd,0x23,
+ 0x7c,0xb9,0x2a,0x2d, 0xab,0x06,0x55,0x9a, 0x5c,0x14,0x9b,0xc6, 0xf2,0xc8,0x5b,0x8b,
+ 0x3d,0xf1,0xd0,0x0e, 0x1f,0xbc,0x0c,0x46, 0xc6,0x01,0xa2,0x53, 0xa9,0x66,0xcd,0x41,
+ 0xa3,0xfe,0x76,0x11, 0x4b,0x96,0xe5,0xaf, 0x03,0xbe,0xe9,0xf1, 0x1e,0x96,0x20,0xf7,
+ 0x41,0xb9,0x4d,0xc8, 0xf1,0x33,0x61,0xfd, 0x38,0x32,0xe3,0x4f, 0x6b,0xcd,0x3b,0x9a,
+ 0xcd,0x80,0x97,0x41, 0x41,0xf4,0xeb,0xe4, 0x41,0xda,0xfb,0x27, 0x74,0x87,0x1c,0x1d,
+ 0x9d,0x53,0x6d,0x5d, 0xdd,0xbe,0x81,0x84, 0x37,0x94,0xaa,0xd1, 0xc1,0x95,0x45,0x93,
+ 0x16,0xcd,0x1d,0x4c, 0xe3,0x20,0xb3,0x25, 0x60,0xac,0x29,0xcb, 0x32,0x64,0x78,0x34,
+ 0x23,0xb7,0x98,0x67, 0x49,0x5d,0x44,0x96, 0x5f,0x8b,0x44,0x59, 0x0d,0x4b,0xdc,0x27,
+ 0x8c,0xbd,0x8d,0xc7, 0x59,0xff,0x74,0xdd, 0x66,0xbe,0x37,0x6a, 0x46,0xd9,0x86,0x82,
+ 0x1b,0xea,0x91,0xd3, 0x9a,0x9e,0x5a,0xf1, 0x01,0x9e,0x10,0xf1, 0x39,0xde,0xd2,0x42,
+ 0x3b,0x68,0x0e,0xe1, 0x9c,0x7f,0x1e,0x5a, 0x0c,0x23,0x1b,0x4a, 0x5a,0x1c,0x7f,0xd3,
+ 0xd6,0xa6,0x0f,0xec, 0x83,0x73,0x09,0x05, 0xfa,0x92,0xc7,0x30, 0x00,0x51,0x25,0x97,
+ 0x7d,0x5d,0x47,0xdf, 0x64,0x77,0x95,0x7f, 0x8d,0x8e,0x10,0x56, 0x72,0xa1,0xfc,0x6b,
+ 0x44,0x7a,0x5f,0x3d, 0xaa,0x2d,0x8f,0x17, 0x8f,0xd5,0xae,0xfb, 0xb3,0xe6,0x3a,0x4f,
+ 0xbd,0xee,0xa0,0x90, 0xfe,0x4a,0x92,0x5f, 0x9e,0xf0,0x9a,0xb3, 0xd5,0x6d,0x22,0xaf,
+ 0x33,0xcd,0xe1,0x2d, 0xf4,0x4f,0x73,0x79, 0xe9,0xcc,0x99,0xdb, 0x5d,0xe3,0xa3,0xa3,
+ 0xef,0xcc,0x85,0x67, 0xb0,0x8d,0x00,0xca, 0xc1,0xd8,0x1e,0xcf, 0xdd,0xd0,0x6e,0x16,
+ 0x1f,0xcb,0x75,0x1f, 0xf5,0xfd,0xb5,0x95, 0x5e,0x59,0x4f,0x27, 0xb5,0x9d,0x91,0x9b,
+ 0x7b,0x86,0x86,0x1a, 0x68,0x36,0x0a,0x04, 0x22,0xa1,0xcd,0xbb, 0xcd,0xa3,0xd7,0xd7,
+ 0x0a,0xf0,0xe2,0xe6, 0x41,0x63,0x2c,0xfa, 0x27,0x2c,0x65,0xa5, 0x06,0x0a,0x99,0x57,
+ 0x3b,0x8f,0x9f,0xda, 0xbb,0xdb,0xb5,0xe3, 0xb4,0xd0,0x1f,0x01, 0x00,0xef,0x69,0x51,
+ 0x65,0x46,0x78,0x93, 0x4a,0xdf,0x84,0x56, 0x92,0xec,0x33,0xea, 0x05,0x9b,0x7b,0x1e,
+ 0x70,0x1b,0x7a,0x8a, 0x41,0xa8,0xe8,0x9d, 0x91,0xab,0x8d,0x9a, 0x40,0xfc,0xc8,0xa4,
+ 0x83,0x8f,0xcd,0x84, 0xc3,0x43,0x1d,0x90, 0xe2,0x06,0x55,0xe2, 0xa6,0xeb,0x89,0x2a,
+ 0xc0,0x4f,0x44,0xc5, 0xb4,0x23,0x62,0xd2, 0x18,0xc5,0xbe,0xec, 0x3f,0xde,0x7d,0x78,
+ 0xe2,0x62,0x95,0x93, 0x1b,0xa2,0x97,0x8f, 0x50,0x45,0xe0,0xa2, 0x4c,0xe1,0x5b,0x81,
+ 0x05,0x06,0xfd,0xe9, 0x93,0x66,0xb1,0x43, 0x4b,0x29,0x06,0x41, 0xad,0x9b,0x7c,0xd1,
+ 0x62,0x23,0x63,0xef, 0xf7,0x19,0x35,0xbb, 0x9d,0x4e,0xbf,0xb8, 0xd8,0x44,0xd5,0x54,
+ 0x74,0xa9,0x36,0xde, 0xd4,0xd5,0x55,0xf5, 0xf6,0x25,0xa8,0x39, 0xe9,0xb8,0xff,0x05,
+ 0x50,0x5e,0x02,0x99, 0xd3,0x1f,0x1f,0x3f, 0x1b,0x46,0x76,0xba, 0xaf,0x83,0xc9,0xed,
+ 0xfe,0xd7,0x77,0x57, 0x19,0xde,0xef,0xad, 0x5a,0xc0,0xc1,0x69, 0x15,0x23,0xc9,0x7d,
+ 0xde,0x74,0xcd,0xf6, 0xbe,0x89,0x2f,0x57, 0xba,0x4e,0x72,0x10, 0x7b,0x69,0x67,0xb2,
+ 0x85,0x57,0xea,0x57, 0x5f,0x8f,0x6d,0x62, 0xd3,0xa1,0xec,0x6a, 0x96,0x59,0x53,0x76,
+ 0x61,0xaf,0xa0,0x9f, 0x79,0x26,0xdc,0x7f, 0x5f,0xa5,0xc1,0x05, 0x83,0x10,0x29,0xb8,
+ 0x51,0x54,0x92,0x15, 0xbe,0x31,0xd8,0xd3, 0xe5,0xf4,0x6a,0x13, 0x93,0xf7,0xef,0xf4,
+ 0xce,0x48,0x43,0x6e, 0xd6,0xa0,0xdd,0x6d, 0xfe,0x77,0x63,0x73, 0xff,0x9d,0x77,0xf3,
+ 0x4c,0xc6,0xc0,0xfc, 0x63,0xb7,0xee,0x02, 0x83,0x48,0xb8,0x07, 0x60,0x6f,0x64,0xc9,
+ 0xf1,0xd4,0x0a,0x16, 0x16,0xe2,0x6c,0xd9, 0xda,0xca,0xd0,0x52, 0x88,0x47,0x77,0xc4,
+ 0xe9,0xb9,0xa1,0xf3, 0x80,0x3b,0xca,0x86, 0x89,0x23,0xf2,0xf9, 0x5c,0x8e,0x9f,0x0a,
+ 0xe1,0x46,0x9d,0x99, 0x4b,0x29,0xe5,0x59, 0x93,0xf2,0x1f,0x2b, 0x78,0x4b,0x8c,0x05,
+ 0x00,0xfd,0x99,0x5d, 0xf2,0x69,0x18,0x28, 0x42,0xd6,0xc6,0x1f, 0x97,0x06,0xd0,0x7d,
+ 0xf7,0x8e,0xb0,0x80, 0x80,0x86,0xb4,0x90, 0x56,0x34,0xa6,0x56, 0x46,0x47,0x2d,0x5b,
+ 0x71,0xae,0xfd,0xbc, 0xcd,0x65,0xdb,0xe9, 0xb1,0x2b,0x5c,0x19, 0xe1,0xce,0xea,0xd2,
+ 0xa1,0x9b,0x5c,0xe9, 0x7b,0xdf,0x31,0x05, 0x62,0x12,0xff,0x1d, 0x70,0xd6,0x67,0x23,
+ 0xef,0x3d,0x56,0xf6, 0xdf,0x8e,0x7f,0x08, 0xf9,0xec,0x4b,0x7d, 0xbe,0x92,0x0d,0xc0,
+ 0xd3,0x41,0x20,0x81, 0x01,0x52,0x7a,0x51, 0xab,0x40,0x04,0xa1, 0x82,0x42,0x10,0x50,
+ 0x36,0xc6,0xe3,0xf9, 0x57,0xf5,0x05,0xb6, 0xbc,0x6a,0x39,0x48, 0x42,0x2b,0xc8,0xcf,
+ 0x30,0xc0,0xf8,0xb0, 0x59,0x3e,0xa5,0x07, 0x39,0xc8,0xb2,0x85, 0xe8,0x7a,0x1e,0x06,
+ 0x53,0xd4,0x53,0xe3, 0xe2,0x73,0x14,0x6d, 0x07,0x65,0x8b,0x6a, 0xd4,0xd2,0x28,0xf1,
+ 0x71,0xec,0x08,0x66, 0x55,0x78,0xa4,0x82, 0xeb,0x32,0x47,0x65, 0x7f,0xd5,0xad,0xe7,
+ 0x86,0xd2,0x3c,0xc3, 0x81,0xde,0xba,0x5d, 0x41,0xbd,0x8a,0xea, 0xb8,0x9d,0x14,0x8b,
+ 0xf8,0x96,0xaf,0x67, 0xfe,0x35,0xa0,0x72, 0x48,0x48,0x30,0x92, 0x68,0xb8,0xda,0x62,
+ 0x50,0x98,0x82,0xe0, 0x66,0x6c,0xf3,0x4f, 0x9f,0x93,0x47,0x05, 0x75,0xdb,0x1b,0x53,
+ 0x6d,0x5d,0x73,0x6d, 0x3b,0x40,0xb0,0x3e, 0xa6,0x02,0x74,0x67, 0x30,0x65,0xb9,0xf7,
+ 0x50,0x57,0xec,0xd4, 0xae,0x58,0xe3,0x96, 0xac,0x32,0x2d,0x75, 0xca,0x1f,0x53,0x41,
+ 0xc8,0x5d,0xa1,0xec, 0x23,0x1b,0xc0,0x9c, 0x8a,0xec,0x33,0xfc, 0x58,0xd7,0x69,0x8d,
+ 0x31,0x5d,0x6f,0xf9, 0x9f,0x82,0xfe,0xb2, 0xb0,0x9a,0x6a,0x84, 0x88,0x50,0xa0,0xdf,
+ 0x8d,0xde,0x11,0xde, 0xf9,0xfd,0xb4,0xc0, 0x9a,0x01,0x22,0xaa, 0x7c,0xca,0x71,0xd8,
+ 0x45,0x26,0x91,0x05, 0xd5,0xd9,0x99,0xad, 0x32,0x90,0x41,0x24, 0x15,0x14,0xc9,0xb2,
+ 0x55,0x55,0xc8,0xaa, 0x81,0x5e,0xe2,0xb0, 0x9b,0x90,0xd6,0xd7, 0x77,0x83,0x47,0x0d,
+ 0x3a,0xcb,0x65,0x06, 0xb2,0x56,0x55,0x64, 0xb4,0xbf,0xdf,0x40, 0x8d,0xa7,0x3b,0xc1,
+ 0xb9,0xc0,0x91,0x5e, 0x9a,0x3c,0x47,0x19, 0x54,0xc4,0x41,0x6d, 0x7e,0x26,0xee,0x14,
+ 0xdd,0x73,0x2e,0x59, 0x2a,0x5d,0x54,0x47, 0x66,0xa8,0x15,0x0c, 0x9b,0x4a,0xfb,0x9e,
+ 0x1f,0x0e,0x67,0x9e, 0x09,0x1c,0xfe,0x80, 0x08,0x50,0x31,0x0d, 0xcb,0xe1,0x33,0x21,
+ 0x52,0x43,0xbe,0x25, 0xb6,0x23,0x9b,0xc2, 0x75,0xcd,0x99,0x59, 0xa1,0x21,0x62,0x98,
+ 0x58,0x3b,0x1d,0x50, 0x48,0x0c,0x39,0x55, 0xd4,0xac,0x8e,0x4e, 0x97,0xfb,0x3f,0x5b,
+ 0x58,0x8a,0xa3,0x1f, 0xfe,0x39,0x43,0x1b, 0x03,0xed,0x1d,0x6d, 0x21,0xa0,0x80,0x82,
+ 0x18,0x7e,0xd3,0xf6, 0x60,0xf4,0xf9,0x40, 0x61,0x49,0xce,0x86, 0x31,0x9d,0xbc,0x52,
+ 0x99,0xe0,0xa3,0x0e, 0x3f,0x08,0x79,0x2c, 0x7d,0x60,0x52,0x44, 0xbc,0xb0,0x82,0x5d,
+ 0x89,0x7a,0x5d,0x2b, 0xa0,0x18,0x51,0x2e, 0x51,0x60,0xf0,0x2b, 0x95,0xca,0xa9,0x4c,
+ 0xa4,0xa9,0x92,0x13, 0x4d,0x03,0x60,0x12, 0x01,0xa5,0x6a,0x00, 0xf8,0xf3,0xfe,0x79,
+ 0x13,0x65,0x13,0x21, 0x49,0x8a,0xdc,0x41, 0x73,0x41,0x06,0xb1, 0xd2,0xa8,0x88,0x74,
+ 0xb0,0x84,0xdc,0xa1, 0x07,0x18,0x33,0x5c, 0xcc,0x1d,0x37,0x5f, 0x08,0x6d,0x95,0xa6,
+ 0x5a,0x9c,0x14,0x84, 0x42,0x34,0x40,0xc2, 0xf5,0x48,0x35,0xd9, 0x06,0x78,0xf5,0xf4,
+ 0xe0,0x8f,0x7d,0xd7, 0x7e,0xab,0x93,0xc1, 0xae,0x88,0x24,0x31, 0xb4,0xad,0x32,0x6d,
+ 0x36,0x5e,0x6b,0xeb, 0x1b,0x45,0x02,0x9b, 0x13,0x6d,0x88,0x7e, 0x2c,0x24,0x43,0x0a,
+ 0x58,0x43,0xa9,0x34, 0x6f,0x1d,0xa6,0x29, 0x30,0x15,0x14,0x13, 0xb8,0x4c,0x86,0x21,
+ 0x09,0x4c,0xe4,0xb9, 0xf6,0xb3,0x85,0x4a, 0xde,0x69,0x2c,0xd9, 0xc1,0xd3,0x86,0xbe,
+ 0x49,0x5b,0x86,0x76, 0x6a,0xab,0x7e,0xb4, 0xb6,0xde,0x81,0x28, 0xd2,0x18,0x71,0x15,
+ 0x41,0x23,0x59,0x96, 0x7c,0x01,0x8d,0x21, 0xd3,0x90,0xf7,0xb4, 0xfc,0x93,0xe6,0xf4,
+ 0xbe,0xb3,0x05,0x16, 0xda,0x05,0x6c,0x8f, 0x89,0xd2,0x5a,0xbd, 0xeb,0xea,0x39,0xed,
+ 0x28,0x6d,0xcc,0x2e, 0x45,0x23,0x03,0x52, 0x8d,0x55,0x38,0x91, 0x27,0xba,0xb5,0x64,
+ 0x37,0x1d,0x7e,0x5f, 0x40,0x4f,0x01,0xc3, 0x43,0xa6,0x10,0x3d, 0x16,0xda,0x35,0xb7,
+ 0x75,0xfb,0x2b,0xd3, 0x6e,0xe6,0x14,0xb5, 0xfe,0x6c,0xe7,0x46, 0xd0,0xb1,0x99,0x7a,
+ 0x9a,0x4e,0x4d,0x15, 0x25,0x08,0xb6,0x23, 0xbc,0xce,0x3e,0xd7, 0xe7,0xe1,0x49,0x6c,
+ 0x1d,0xe9,0x8e,0x36, 0x07,0x4e,0xca,0x20, 0xd8,0x09,0x00,0x7d, 0x6d,0x9a,0x07,0x24,
+ 0x04,0x03,0x82,0x8e, 0xfd,0x11,0xda,0x3c, 0x36,0x32,0x92,0xd6, 0x1b,0x39,0x25,0x45,
+ 0xa8,0x0d,0x98,0x34, 0xe4,0x1f,0x7a,0xb4, 0xcc,0xe0,0x2b,0xee, 0xb0,0x36,0x65,0x7c,
+ 0x0b,0x17,0x6f,0x2d, 0xe9,0x91,0xf9,0xfc, 0x9f,0x1a,0xc6,0x3e, 0xe4,0xda,0x81,0x1e,
+ 0x96,0x80,0x35,0x2b, 0xc9,0x9d,0x94,0x91, 0xe5,0xa0,0x84,0x2f, 0xaf,0x0e,0x44,0x12,
+ 0x54,0x4f,0x51,0xba, 0x63,0x2a,0xcc,0x33, 0x34,0x93,0x8e,0xb6, 0x2c,0xdb,0x07,0x05,
+ 0x68,0xd7,0x18,0x02, 0x38,0x09,0x3d,0x88, 0xa1,0x14,0x02,0x48, 0x36,0xa1,0x04,0xe7,
+ 0x7b,0x06,0x73,0xd8, 0xe7,0xa1,0xc9,0x0a, 0x33,0x20,0xc9,0xdb, 0x1c,0x6c,0x67,0x47,
+ 0x2c,0x03,0x1d,0xbf, 0x37,0x30,0x4c,0x0c, 0x61,0xeb,0xb5,0xa1, 0x09,0x5d,0x84,0xb7,
+ 0x81,0x4d,0xd3,0x7a, 0x08,0x70,0x60,0x03, 0xca,0x3b,0x5d,0x1e, 0x94,0x74,0x1a,0xcf,
+ 0xd1,0x08,0x17,0x48, 0x49,0x09,0x27,0x4e, 0xd7,0x6e,0xfd,0x1b, 0x7c,0x6b,0x84,0x88,
+ 0x25,0x08,0x46,0xf9, 0xad,0xf8,0x1c,0xd9, 0xfb,0xb2,0xf7,0xde, 0x47,0x4d,0xb5,0x30,
+ 0xc9,0xe6,0x62,0x66, 0x92,0xf6,0x90,0x3a, 0xb5,0xd2,0x3a,0x7c, 0xa5,0x8c,0xd1,0x51,
+ 0x10,0x24,0x5b,0xb5, 0xa8,0x48,0x95,0x79, 0x0c,0xbf,0xb1,0xe4, 0xff,0xd6,0xb2,0xbe,
+ 0x07,0xde,0xcb,0xf2, 0x3e,0xf7,0x19,0x21, 0x91,0x0b,0x90,0x0e, 0x85,0x04,0x2c,0xf9,
+ 0x65,0x00,0x01,0xf1, 0x7e,0xa0,0x4d,0x52, 0x40,0x91,0x0b,0xa0, 0x9a,0xdc,0xa5,0xfe,
+ 0x8f,0x8f,0x2d,0x33, 0x26,0x2c,0x05,0x42, 0x43,0x4b,0xbb,0x8b, 0xcc,0xf0,0x6b,0x78,
+ 0xbf,0x0f,0x7b,0x46, 0x98,0x8d,0xcb,0x42, 0x01,0x20,0xf7,0x09, 0x50,0x08,0xe2,0xe8,
+ 0x74,0xc9,0x04,0x88, 0x53,0x11,0xca,0xc1, 0x0c,0x62,0xc9,0x1a, 0xb0,0x73,0x3d,0xdd,
+ 0x6a,0xc5,0x06,0x96, 0xaf,0xea,0xef,0xfc, 0x7e,0x3b,0x33,0x37, 0x93,0x50,0x22,0xa0,
+ 0xe4,0xf9,0xb9,0xc1, 0x23,0x6c,0xd4,0xe3, 0x46,0xa3,0x75,0x0e, 0xf7,0xb5,0x4c,0xa8,
+ 0x33,0xb7,0xdb,0x71, 0x3d,0x51,0x53,0x71, 0x52,0xbe,0xde,0xd1, 0x64,0xe4,0x3e,0x9e,
+ 0xad,0x6f,0x81,0xc1, 0x6f,0xbf,0x74,0xcb, 0x31,0x23,0xfd,0xe1, 0xe1,0x22,0xa8,0x88,
+ 0x95,0xc1,0xdb,0x84, 0xc8,0x34,0xdd,0x96, 0xce,0x61,0xb2,0x96, 0x05,0xac,0x21,0x82,
+ 0x53,0x40,0xc9,0x70, 0x1a,0xa5,0xcc,0x78, 0x3e,0xd3,0xe6,0x50, 0x72,0x79,0x3a,0x52,
+ 0x0c,0x3b,0xe2,0x35, 0xd2,0x7d,0x0f,0x9a, 0xfb,0xaa,0xe7,0x4c, 0x17,0xec,0x8e,0x89,
+ 0xea,0x78,0xeb,0xf8, 0x9b,0x9a,0x7e,0x2f, 0x5f,0xad,0xde,0xfe, 0x5a,0x16,0x82,0x9b,
+ 0x52,0xe3,0xa5,0xa7, 0x02,0x40,0x61,0xc8, 0x86,0x1a,0x38,0x88, 0x3e,0x4d,0x85,0x78,
+ 0x14,0xf5,0x14,0x51, 0x30,0xbf,0xaf,0xee, 0xd2,0xe0,0x68,0xf0, 0xab,0xcf,0x55,0x82,
+ 0xef,0x2c,0x0e,0x7e, 0x70,0x4a,0x83,0x12, 0x31,0x6a,0x64,0x20, 0xe1,0x54,0xde,0xc0,
+ 0xc6,0x25,0xb2,0x43, 0xe3,0x0b,0x2a,0xae, 0x10,0xa9,0x20,0x25, 0x40,0xa8,0x66,0x90,
+ 0xd0,0xb4,0x3e,0xa8, 0x1c,0xed,0x6f,0xa2, 0x82,0xe4,0x1f,0x17, 0x1c,0x7a,0xc0,0xb1,
+ 0xe5,0x5a,0xce,0x40, 0xfe,0x3f,0x9c,0x3f, 0x03,0x61,0x63,0x15, 0x81,0x94,0x50,0xfe,
+ 0x1f,0x41,0x5c,0x1a, 0x79,0xeb,0xf9,0xb6, 0x76,0x88,0x43,0x4d, 0x98,0x27,0x45,0xf8,
+ 0x10,0xc7,0x0d,0x2e, 0x33,0xa1,0x66,0x9e, 0x85,0x3b,0x40,0x79, 0xfa,0xea,0x89,0xe7,
+ 0x98,0x0c,0xfb,0x83, 0x15,0x1c,0x80,0xaf, 0xd5,0x4c,0x25,0xb6, 0x8c,0xd4,0x0e,0x57,
+ 0x6d,0xf7,0xb7,0x27, 0xd6,0xcc,0xab,0xd5, 0x9d,0x62,0xb8,0x77, 0xf7,0x83,0x3a,0xef,
+ 0xfa,0xdc,0xae,0x12, 0x4e,0x8b,0xe6,0x1a, 0xc1,0xf4,0x72,0x85, 0x4a,0xe7,0x2c,0xb3,
+ 0x83,0x62,0x0f,0x37, 0xc2,0x03,0xa9,0x26, 0x62,0x04,0x01,0xde, 0x90,0x4b,0x31,0x31,
+ 0x16,0xed,0x93,0x35, 0x99,0x85,0x6d,0xad, 0x55,0x58,0x00,0xb1, 0x2a,0xdf,0xb7,0x91,
+ 0x8a,0x0d,0xb1,0xb0, 0x61,0x03,0xc8,0xdc, 0xf9,0x87,0x46,0xb0, 0x5a,0xeb,0x0e,0xbc,
+ 0xd6,0x84,0xc8,0x1f, 0x38,0x2d,0x6b,0xe4, 0x5d,0x92,0x90,0xf6, 0xf1,0x21,0x0b,0x19,
+ 0xec,0xe9,0x39,0x84, 0x02,0x7f,0x48,0x85, 0x44,0x1b,0x3c,0xe0, 0x95,0x22,0x16,0xad,
+ 0x22,0x7c,0x86,0x5f, 0x13,0x67,0x83,0xb7, 0x5d,0xa3,0xcb,0xc4, 0xad,0xd2,0x66,0x94,
+ 0xa5,0x8b,0xde,0xea, 0x52,0x66,0xaa,0xba, 0x49,0x1a,0x7c,0xbf, 0x0f,0xb2,0xfb,0x03,
+ 0x8d,0x8b,0x1d,0xa9, 0x7d,0xa6,0x7e,0x07, 0xd5,0x74,0xaf,0x79, 0xe3,0xc8,0x2e,0xbf,
+ 0x0f,0x7b,0x19,0xe0, 0x50,0x1e,0x73,0x92, 0xa0,0x4e,0xff,0x7f, 0xf9,0x78,0x9a,0x3c,
+ 0x40,0xe2,0xa4,0x50, 0x70,0x11,0x8e,0x3a, 0xda,0x33,0x08,0x87, 0x30,0xc1,0x11,0x80,
+ 0x72,0x9a,0xd2,0x11, 0x4e,0x3d,0x45,0x3b, 0xf6,0x16,0xe5,0xb9, 0x32,0x67,0x35,0x45,
+ 0x69,0x56,0x01,0x95, 0x14,0x04,0x01,0xdf, 0xe8,0xe9,0x0b,0x22, 0x60,0x0d,0x2f,0x1f,
+ 0x2e,0x3f,0x5b,0xdb, 0x4f,0x89,0x2f,0xc7, 0xe7,0xc1,0x19,0x95, 0xd0,0x70,0x6e,0x32,
+ 0xe3,0x90,0x57,0xe8, 0x58,0x6e,0x45,0x49, 0x31,0x2c,0x99,0xec, 0xe4,0x1c,0x6b,0x48,
+ 0x2b,0x63,0xa3,0x1f, 0x81,0x5f,0x19,0xe3, 0x81,0x91,0x74,0x9c, 0x89,0x84,0xd9,0x33,
+ 0x23,0xa0,0x9c,0x0e, 0x67,0xb3,0xb1,0xfd, 0xde,0xd4,0x11,0xc7, 0xd3,0x89,0x9f,0xdd,
+ 0x2f,0xe7,0xcd,0x04, 0x3d,0xd2,0x02,0xda, 0x68,0x51,0xe2,0xaf, 0x9d,0xfb,0x3c,0xf2,
+ 0x49,0xbf,0x49,0x33, 0xf1,0xe5,0x73,0xa9, 0x11,0xee,0xf2,0x33, 0x90,0x64,0x3e,0xd0,
+ 0xec,0x2c,0xf2,0xb7, 0x2c,0x3d,0xcc,0x33, 0x41,0x81,0x53,0x8b, 0x6b,0xa3,0xf7,0xed,
+ 0xa7,0xae,0xe1,0x51, 0xba,0x76,0x86,0x90, 0xa5,0xa0,0x8d,0xb5, 0x88,0x43,0x25,0x25,
+ 0x65,0x8d,0xcc,0xba, 0x07,0x38,0x32,0x20, 0x18,0xd0,0x90,0x0d, 0x34,0x66,0xc3,0x84,
+ 0xf3,0x68,0x44,0xd2, 0x12,0x94,0x05,0x7f, 0xb3,0xb3,0x66,0xdf, 0x13,0x3c,0x97,0xd6,
+ 0x2d,0xe9,0x7a,0x9e, 0x32,0xe0,0x69,0x4c, 0x08,0x48,0x61,0x38, 0xdc,0x29,0xd3,0x54,
+ 0x11,0x33,0x1f,0xca, 0xf2,0xbc,0xae,0x6f, 0xc2,0xc8,0xd7,0xe1, 0x57,0x5c,0xba,0x1e,
+ 0x6e,0x84,0x50,0x33, 0xb2,0xc9,0xa4,0xa4, 0xcf,0x65,0x85,0x58, 0x16,0x2f,0xab,0xe5,
+ 0x1b,0x81,0x0a,0x8c, 0x1c,0x76,0x98,0x98, 0x68,0xd3,0x70,0x42, 0x7c,0x88,0xfe,0xd5,
+ 0xab,0x31,0x6e,0xd9, 0x0f,0x66,0x5f,0x28, 0xe8,0xc7,0xeb,0xfb, 0x39,0xab,0x44,0xbd,
+ 0x76,0x8d,0x75,0x28, 0x8f,0x4a,0x10,0x40, 0xcc,0x80,0x42,0x59, 0x6a,0x9a,0x4e,0x24,
+ 0xda,0x63,0x46,0xd9, 0x1e,0x54,0xa2,0x1a, 0x0a,0x35,0x49,0x38, 0x08,0x00,0x11,0x02,
+ 0x10,0x21,0x09,0x8c, 0x80,0x42,0x20,0x22, 0x2d,0x21,0xa1,0x20, 0x00,0x80,0x4a,0x26,
+ 0x9b,0x40,0x9a,0x21, 0x31,0x4d,0xb8,0x68, 0x60,0x08,0x48,0x20, 0x42,0x40,0xa1,0x04,
+ 0x42,0x44,0x34,0x0c, 0x72,0x54,0x66,0xca, 0x49,0xee,0xf7,0x10, 0x52,0x5e,0xa3,0x7d,
+ 0x7a,0x3f,0x05,0x17, 0x02,0xde,0xbb,0xa4, 0x82,0xc1,0x46,0x15, 0x27,0xf4,0x77,0x71,
+ 0x7c,0xb1,0xfb,0xae, 0xf2,0xdc,0x02,0xcd, 0x93,0x12,0xf6,0x45, 0x51,0x83,0x6a,0x8a,
+ 0xaa,0x91,0xc8,0xdf, 0xc1,0x2a,0x0d,0x45, 0x55,0x0c,0x6e,0xb5, 0x73,0xa2,0x26,0x4e,
+ 0xcf,0xcf,0xa1,0x17, 0xd1,0x6e,0x59,0x0c, 0xae,0x50,0x9e,0xbe, 0xfc,0x78,0x97,0x6b,
+ 0x16,0xdd,0xb7,0x65, 0x00,0x0a,0x50,0x0c, 0x45,0x66,0xb5,0xfd, 0x3e,0xf9,0xaf,0x1b,
+ 0xb7,0x5b,0x05,0x55, 0x18,0xc3,0x6a,0xed, 0x24,0x1b,0x23,0xad, 0xac,0x58,0x16,0x47,
+ 0x89,0x54,0xef,0x14, 0x35,0x5d,0xb2,0x28, 0x90,0x97,0xae,0x4e, 0x53,0xf4,0x6d,0x22,
+ 0xe3,0x8c,0x6a,0xc5, 0x7f,0xc7,0x66,0x2e, 0x99,0xf4,0x63,0x41, 0x83,0x13,0xad,0x65,
+ 0xa0,0xd7,0xfa,0xb9, 0x29,0x03,0x60,0xa4, 0x1c,0x07,0x8a,0x06, 0xce,0x85,0x20,0x41,
+ 0x39,0xaa,0x92,0x7a, 0x54,0x04,0x44,0xeb, 0xad,0xbb,0x2b,0x34, 0x2c,0x57,0xae,0xd0,
+ 0xcb,0xb0,0x8a,0x0b, 0xb2,0x91,0x70,0xaf, 0x3c,0x39,0x85,0xc8, 0xaa,0x3a,0x7a,0xe8,
+ 0xa4,0x73,0x68,0x14, 0x57,0xb9,0xe3,0xdc, 0x9d,0x36,0xc0,0xc6, 0xb2,0x32,0xb2,0x70,
+ 0xab,0x29,0xb2,0xf7, 0xb6,0xc2,0xb9,0x22, 0x48,0x28,0x98,0x37, 0x66,0xad,0x92,0xd9,
+ 0x52,0xbb,0x5c,0xec, 0xd8,0x5a,0x81,0xd8, 0xa9,0x8c,0x34,0xa0, 0x6a,0xc9,0x57,0x05,
+ 0x72,0xf1,0x9c,0x79, 0xc1,0x3c,0x65,0x00, 0xeb,0x2f,0x36,0x2c, 0xe3,0x7d,0x7b,0x86,
+ 0x94,0x15,0x9e,0xeb, 0xbb,0xbe,0x62,0xc9, 0x30,0x43,0x9f,0x57, 0x4f,0x92,0x0a,0x28,
+ 0xce,0xbf,0xf3,0xce, 0xc6,0x71,0x4d,0xe8, 0xae,0x9e,0x86,0x90, 0xc2,0x11,0x81,0x68,
+ 0xb3,0x51,0xe2,0xce, 0xac,0x16,0x12,0x70, 0x44,0x0f,0xf4,0x5d, 0x66,0x5d,0x71,0x93,
+ 0x31,0xa9,0xb6,0x68, 0xd2,0xf2,0xb0,0xbb, 0x04,0xd3,0xf2,0xee, 0x85,0xe5,0xf7,0x39,
+ 0xa1,0xf5,0xb0,0xd6, 0x42,0xe1,0x74,0xd3, 0x49,0xc1,0xcc,0x3f, 0x47,0x3b,0xd8,0xc8,
+ 0x48,0x88,0xc6,0x5c, 0x1c,0xe3,0x33,0x89, 0xa0,0x14,0x09,0x00, 0x3f,0x73,0x8f,0x25,
+ 0xf9,0xef,0xf6,0xdf, 0x9e,0xd2,0xed,0x6b, 0x97,0x3a,0x37,0xd5, 0xb0,0xc8,0x68,0xc3,
+ 0xe3,0x77,0x9f,0x92, 0x68,0xfe,0xcf,0x73, 0x06,0x23,0xfc,0x8f, 0x2b,0x79,0x07,0xba,
+ 0x62,0x31,0x31,0x50, 0xb2,0xc6,0x91,0x28, 0x41,0x20,0xe9,0xe7, 0xf7,0x9b,0x34,0x44,
+ 0x4b,0x5e,0x4e,0x6c, 0xe8,0x2f,0xd2,0xa6, 0xb3,0x23,0xe1,0xd7, 0xac,0xfe,0x10,0xd5,
+ 0x77,0x06,0xf4,0x82, 0x0f,0x4b,0x4d,0xc0, 0x0e,0x6e,0x04,0x3a, 0xdd,0x1c,0x0b,0x5f,
+ 0x99,0xd3,0x2d,0xcb, 0x63,0x4d,0x08,0x4c, 0x91,0xe8,0x07,0x7b, 0xaf,0xdf,0x19,0x78,
+ 0x5a,0xfa,0x7b,0x3a, 0xc6,0x71,0xda,0xbf, 0x2b,0x5b,0x42,0xad, 0x67,0x49,0x92,0x69,
+ 0xda,0x40,0xef,0x79, 0x01,0x52,0x49,0x43, 0x95,0x83,0xc7,0x9e, 0x3c,0x57,0xfd,0x9c,
+ 0xa4,0x84,0x06,0x0b, 0x56,0xbc,0x05,0xf1, 0x0e,0xb8,0xd5,0x01, 0x6d,0x7b,0xbf,0x79,
+ 0xd0,0xd6,0x51,0x38, 0xf1,0x7a,0x12,0x5d, 0xaa,0x3f,0x2a,0x0c, 0xb1,0x8a,0xc0,0x10,
+ 0xc1,0x16,0xcd,0x1b, 0x93,0xb2,0x86,0xc0, 0x64,0xcf,0xa5,0x07, 0x17,0xb4,0x81,0x63,
+ 0xae,0xd7,0xdb,0xfd, 0x3b,0x3e,0x5f,0xf4, 0xfb,0xdf,0x21,0x71, 0xf7,0xb0,0xfe,0x37,
+ 0x15,0xc5,0x99,0xca, 0xb1,0xf6,0x4e,0x22, 0x08,0x62,0xbf,0xb7, 0x26,0x56,0x53,0x39,
+ 0x1d,0x9d,0x60,0xc5, 0x33,0xab,0x0e,0xea, 0xdb,0x1f,0x45,0xec, 0xb3,0xa1,0x87,0xf6,
+ 0xad,0x86,0x0f,0x04, 0x6b,0x39,0x7b,0x88, 0x27,0x3c,0x95,0x69, 0xb0,0x91,0x1f,0xac,
+ 0x83,0x3c,0x54,0xc4, 0x1d,0x87,0x7e,0xe3, 0x0a,0xd5,0x65,0x26, 0x81,0x28,0xc0,0xcf,
+ 0xf5,0xfd,0x09,0x4d, 0x84,0x46,0xea,0x15, 0x37,0x1c,0x81,0x3e, 0xda,0x36,0xe7,0xd6,
+ 0xd9,0x4f,0x63,0x6f, 0xd6,0x90,0x7e,0xf2, 0xf1,0x9b,0xcb,0xb0, 0xca,0x00,0x97,0x2a,
+ 0xbd,0x48,0x82,0xaa, 0x8e,0x49,0x21,0x63, 0x86,0xaa,0xb9,0xc1, 0x4e,0xfd,0x5a,0xea,
+ 0x26,0x16,0xa6,0x60, 0x3c,0x84,0xfd,0xed, 0xfa,0xef,0xe1,0xd0, 0xf0,0xa0,0x16,0xf3,
+ 0x3e,0x3a,0xfc,0x17, 0x20,0xe2,0xf0,0xb1, 0xbd,0x74,0x8e,0x5b, 0x3f,0x71,0xca,0xd6,
+ 0x94,0xd8,0xbe,0x5b, 0x5f,0xcc,0x53,0x7b, 0xef,0xed,0x99,0xde, 0x5a,0xeb,0xc9,0xa3,
+ 0xfa,0x95,0x0f,0x9a, 0x3a,0x6b,0x78,0x49, 0x3e,0xe8,0xd8,0x3b, 0x64,0xaa,0xc8,0x6f,
+ 0xc1,0x2e,0xac,0x34, 0x6c,0x1f,0xca,0x5a, 0xfe,0x6c,0xff,0xb2, 0xfe,0xb3,0xf6,0xf9,
+ 0x94,0x59,0x5f,0x67, 0x7d,0xe6,0xe6,0x4e, 0xc1,0x6b,0xbe,0x1e, 0x0b,0xe9,0xf2,0x22,
+ 0xc1,0xdc,0xa7,0xe6, 0x61,0x9a,0xf0,0x2a, 0x68,0x8d,0x0c,0x96, 0xab,0xdb,0x5b,0xe5,
+ 0xff,0x91,0xa6,0xad, 0x5c,0x9d,0xb4,0x9c, 0xeb,0xd8,0xce,0x8d, 0x1d,0xd7,0xc0,0xbb,
+ 0x83,0x37,0x57,0x70, 0x97,0xc5,0x22,0xf9, 0x85,0x7a,0x16,0xe1, 0x7b,0x15,0x0d,0x70,
+ 0x92,0x59,0xe9,0x35, 0x78,0xe4,0x6e,0xd5, 0x7d,0x2b,0x27,0xf7, 0xcd,0xd4,0xf6,0x3a,
+ 0x9f,0x3b,0x58,0xf7, 0xaf,0xae,0xae,0x7e, 0x2b,0x13,0xef,0xdf, 0x7a,0xd4,0x84,0x28,
+ 0x01,0x9a,0x97,0x8f, 0xe1,0x2d,0x8f,0x47, 0x5e,0x8a,0x36,0xc4, 0xd1,0x80,0xee,0x4b,
+ 0x21,0x09,0x3e,0xd4, 0x89,0xf8,0x53,0x80, 0xc4,0xf8,0x35,0xd5, 0xc8,0xcb,0x71,0x17,
+ 0x11,0x6f,0xa1,0xca, 0xbb,0xd9,0xac,0xe5, 0x2e,0x6f,0xab,0x89, 0x9b,0x3f,0x63,0xb1,
+ 0xc5,0x53,0x0b,0xa2, 0xd5,0x52,0x18,0x51, 0x9f,0x39,0xf7,0xea, 0xd3,0xe8,0xce,0xde,
+ 0x7b,0x0b,0x37,0x53, 0x61,0x81,0x6d,0xa0, 0xb7,0x12,0x97,0xb6, 0xdd,0xed,0x1d,0x96,
+ 0x15,0xdd,0x3b,0xe8, 0x18,0x54,0x93,0xda, 0xd8,0x77,0xfe,0x33, 0x3d,0xdf,0x3d,0x9e,
+ 0x49,0x42,0x15,0x0d, 0xf2,0x59,0x09,0xf9, 0x11,0x5e,0xcd,0x86, 0x6b,0x90,0x1f,0xbf,
+ 0x5a,0x5f,0x70,0xf0, 0xad,0x92,0x68,0x22, 0x5c,0xc7,0x4d,0x7a, 0x4a,0xa3,0x83,0x93,
+ 0x6c,0x95,0x6b,0xd8, 0xf2,0x99,0x45,0xfa, 0xe1,0x25,0x3b,0x10, 0x1c,0xa7,0x9d,0x07,
+ 0x7b,0x6c,0xd7,0xf4, 0x95,0xdd,0xbe,0x79, 0x50,0xdb,0xcf,0x4f, 0x0d,0x09,0x24,0xc0,
+ 0x2c,0xd3,0xc6,0xf1, 0xe5,0x74,0xb8,0xac, 0xb7,0xf6,0x4a,0x28, 0x81,0x3f,0x2c,0xae,
+ 0x8c,0x23,0x80,0x62, 0x50,0x5c,0x79,0x27, 0xb4,0x89,0xd1,0x41, 0x7d,0x9a,0x14,0x71,
+ 0xd8,0x53,0xde,0x7b, 0xe9,0xa1,0x7d,0x36, 0xf9,0xc8,0x98,0x76, 0x1b,0x3e,0x58,0xd6,
+ 0x2c,0x1f,0x34,0x92, 0xf1,0x9d,0x74,0x09, 0x47,0x78,0x75,0x53, 0x9f,0xf7,0x13,0x03,
+ 0x42,0x0e,0xb0,0xf4, 0xb9,0xf2,0x8e,0xa5, 0xbe,0xfb,0x4b,0x49, 0x2f,0x93,0xfe,0xcf,
+ 0x60,0xb5,0x5e,0x28, 0x3b,0x46,0xba,0x27, 0x24,0x1d,0x82,0x59, 0x09,0x91,0x12,0x0e,
+ 0xf1,0x23,0xa1,0x79, 0xd3,0x3b,0x99,0xd4, 0x92,0xa6,0xdb,0x51, 0x3d,0x7e,0x76,0xc9,
+ 0x3e,0xe9,0x0c,0xb1, 0xbd,0x9b,0xad,0x34, 0x38,0xeb,0xf1,0xdd, 0xfa,0x12,0x98,0x86,
+ 0x1a,0x03,0x84,0xd2, 0x06,0x14,0x0a,0x3c, 0x2c,0x69,0xac,0xda, 0x86,0x17,0x7a,0xe1,
+ 0x5a,0x98,0xaa,0x4d, 0x92,0xb3,0x9d,0x96, 0x13,0x5d,0xa8,0x54, 0xcb,0x46,0xf4,0xfe,
+ 0xd9,0xff,0xd5,0x85, 0xc7,0x57,0xdd,0xfc, 0x3b,0x57,0xae,0x95, 0x9e,0x81,0x5a,0xd3,
+ 0x8a,0x16,0x1b,0x99, 0xd0,0x69,0x31,0xc9, 0xf1,0x8d,0x2c,0x44, 0xec,0xde,0x2f,0x35,
+ 0x73,0x76,0x70,0xdc, 0x16,0xf0,0xf0,0x7a, 0xa3,0x69,0x6b,0x99, 0x92,0x30,0xdc,0x50,
+ 0xc8,0x4e,0x24,0x7c, 0x47,0xde,0x1c,0x04, 0x17,0xc0,0x62,0xd0, 0xe0,0x60,0x65,0x51,
+ 0x05,0x9c,0xb9,0x83, 0x12,0x8e,0x8a,0x03, 0xfc,0x34,0xa8,0x7c, 0x78,0x9f,0xf7,0x0d,
+ 0xdf,0x64,0x83,0xcd, 0x9b,0x06,0x01,0xc5, 0x20,0x20,0xc0,0x33, 0x00,0x4f,0xef,0x2f,
+ 0xf2,0x4e,0x71,0x59, 0x08,0xa6,0x43,0x3f, 0x59,0xbc,0xe5,0xe2, 0x26,0xa6,0xdc,0xc9,
+ 0xff,0xeb,0xb7,0x2d, 0x74,0xdb,0xde,0x3f, 0x0b,0xc7,0xc9,0xfb, 0x6c,0xef,0xa5,0x59,
+ 0x7f,0xb4,0xcc,0xfd, 0xdb,0xec,0x07,0x3d, 0xdf,0xb7,0x47,0xf9, 0x7d,0x36,0x50,0x04,
+ 0x75,0x1b,0x69,0xe5, 0x0a,0x7b,0xfc,0xa0, 0x84,0x72,0xb8,0x6e, 0x52,0x84,0xf2,0x62,
+ 0x92,0xaa,0x26,0x9e, 0x66,0xe4,0xa2,0x57, 0xa8,0xe8,0xda,0x7b, 0xf7,0x58,0xf1,0x2a,
+ 0x07,0x87,0xb2,0xc8, 0xaa,0xa5,0x61,0xfb, 0x27,0xbf,0x9a,0xe9, 0x2c,0xb3,0xc6,0x4e,
+ 0x4c,0xd8,0x29,0x9f, 0xc8,0x4c,0x44,0x28, 0x5b,0xea,0x4d,0x1a, 0x61,0x0f,0x06,0x9b,
+ 0x59,0x3e,0xa3,0x07, 0xb5,0xcb,0x89,0x90, 0x0b,0x5d,0x7d,0xd4, 0x36,0x29,0x4c,0x40,
+ 0xd9,0x46,0xd1,0x02, 0x40,0x84,0x3d,0x84, 0x94,0x84,0x97,0x24, 0x8c,0x1e,0xd5,0xa9,
+ 0xed,0x54,0xa5,0x25, 0xa2,0xd0,0x83,0x51, 0x14,0xb0,0xc8,0x90, 0xae,0xfd,0x64,0xd3,
+ 0x1e,0xe0,0xf0,0x84, 0x41,0x04,0x4d,0xec, 0xf0,0xd3,0xac,0xe1, 0xe6,0xc7,0xd6,0x47,
+ 0xe3,0x1a,0x71,0xd1, 0xc1,0xc8,0xe7,0xee, 0x1e,0x5c,0xd9,0xa1, 0x5d,0x44,0x65,0xfd,
+ 0xf9,0x67,0x41,0x2d, 0xe3,0xb5,0x98,0xce, 0x0c,0x87,0x51,0xe7, 0x1c,0x52,0x7a,0xcc,
+ 0xc0,0x05,0xcf,0xad, 0x9d,0xfc,0x3c,0xcb, 0x79,0x27,0x56,0x30, 0x15,0x5a,0x0e,0xe6,
+ 0x16,0xd7,0x81,0x73, 0xf5,0xeb,0xff,0x83, 0xcb,0x3a,0x34,0xd5, 0xde,0xb2,0x2b,0x10,
+ 0xed,0x17,0xd4,0xc9, 0xb8,0x21,0x6e,0xd4, 0x39,0xe2,0xa3,0xdb, 0x14,0x4c,0x00,0x06,
+ 0x20,0x44,0x2b,0x9c, 0xc3,0xdc,0x02,0x69, 0x1b,0xd6,0x24,0x8f, 0x51,0xa5,0x98,0xc3,
+ 0xbf,0x69,0x6c,0x06, 0x10,0xfe,0x7d,0x68, 0x22,0x1e,0x04,0x90, 0x44,0xa0,0x86,0x8f,
+ 0x2c,0x49,0x1d,0x43, 0x41,0x0d,0x21,0x1e, 0x4b,0x42,0x53,0x68, 0x9b,0x55,0x34,0x20,
+ 0x26,0xd2,0x49,0x50, 0x1d,0xf8,0x34,0x8e, 0x66,0xa8,0x01,0xb3, 0xaf,0x18,0xa4,0x1c,
+ 0xa3,0x85,0x90,0xf8, 0x9d,0x01,0x09,0x54, 0xc4,0x1a,0x55,0xfd, 0x1c,0xc7,0x3b,0x71,
+ 0xce,0xe2,0x59,0x63, 0x72,0x35,0x5b,0x69, 0x4c,0xa5,0x5f,0x82, 0x7a,0x1d,0x0b,0x11,
+ 0x5a,0x1b,0xbd,0x0c, 0x5b,0x8f,0xe7,0xa6, 0x63,0xf4,0x80,0x6b, 0xf6,0xe1,0xb6,0x31,
+ 0x82,0x91,0xe2,0x1b, 0x9e,0xcf,0x73,0xb7, 0x96,0xd9,0x2a,0x24, 0xef,0x33,0x9a,0x7d,
+ 0x2e,0x11,0xdd,0x93, 0x28,0x6a,0xfc,0x44, 0x70,0xc9,0x4e,0xdf, 0xbf,0x16,0xcd,0xbf,
+ 0xbb,0xc8,0xe3,0xcf, 0x77,0x96,0x56,0xb4, 0x7f,0x8c,0x73,0x6c, 0x9c,0x65,0xea,0xa8,
+ 0xe8,0x40,0xe4,0xaf, 0xb7,0x8a,0xaf,0xff, 0x7d,0x0f,0x02,0x37, 0x93,0x9c,0xa6,0xa5,
+ 0xff,0x5c,0x2e,0x7a, 0x5a,0x3d,0x1e,0x76, 0xbb,0x5f,0xd2,0xe8, 0x69,0xc1,0xdc,0xd5,
+ 0xeb,0xec,0x02,0xd6, 0xb0,0x01,0xb3,0x58, 0xd0,0xb2,0xd8,0x7b, 0x86,0x83,0xb1,0xd9,
+ 0x41,0xbe,0x04,0xd1, 0xd6,0x30,0x3b,0xa6, 0x03,0x18,0x91,0x59, 0x88,0x7d,0x0c,0x04,
+ 0x03,0x06,0x64,0xaf, 0xf8,0xfb,0x12,0x4b, 0xa2,0xa2,0x0e,0x79, 0xaf,0x84,0xc0,0x9d,
+ 0x4b,0xbb,0x96,0x68, 0xd4,0xed,0xae,0x46, 0xbd,0x02,0xbe,0x3f, 0x6b,0x91,0x63,0xe7,
+ 0x7f,0x5e,0x86,0xb4, 0x4d,0x1e,0xb3,0x75, 0x0b,0x80,0x2e,0xbb, 0xd8,0xf7,0xb6,0x34,
+ 0x94,0x97,0xd7,0xf1, 0xe0,0x40,0x57,0x78, 0x12,0x85,0x88,0xd6, 0xe9,0x81,0x27,0x8c,
+ 0xd0,0xa1,0x34,0x18, 0x1b,0x72,0xc5,0xee, 0x3f,0x4d,0xa9,0xe0, 0xab,0x69,0x99,0xa8,
+ 0xe6,0xe2,0xda,0x7b, 0xa1,0xf7,0xcc,0x50, 0x91,0xc0,0x20,0x4c, 0xac,0xf0,0xb8,0x1f,
+ 0x0c,0xa9,0xdb,0x73, 0xc3,0x64,0x2d,0xee, 0x21,0x63,0xba,0xba, 0x74,0xc6,0x7c,0x3e,
+ 0x0e,0x14,0x49,0x92, 0x7a,0x52,0xca,0xf0, 0xad,0x40,0x51,0x46, 0x7a,0xb1,0x0d,0x2c,
+ 0x18,0x9c,0x8b,0xf3, 0xaf,0xe6,0xf8,0xf8, 0xfa,0xba,0x84,0x15, 0x97,0x79,0xac,0xc3,
+ 0xde,0xda,0x29,0xc5, 0x7a,0x5e,0xc0,0xd3, 0x5c,0xd8,0xf4,0x98, 0x98,0x6b,0x4e,0x64,
+ 0xea,0x61,0x26,0xc1, 0xb4,0xc6,0xf6,0xf0, 0x0b,0xbb,0x25,0x02, 0x6c,0x86,0xba,0x79,
+ 0x42,0x95,0x1c,0x5e, 0xd7,0x2c,0x5a,0x5e, 0x38,0x31,0x0c,0x24, 0x56,0x42,0xd1,0x40,
+ 0x2c,0x97,0xa1,0xf0, 0x3b,0x0f,0x07,0xe1, 0xd0,0x14,0x97,0x60, 0xca,0xcd,0xd3,0xd9,
+ 0x0e,0xcf,0xb0,0x81, 0x6b,0x68,0x17,0x66, 0x2f,0x81,0xd6,0x70, 0x05,0xa9,0x6d,0xf6,
+ 0x52,0x78,0xd1,0x5b, 0xb3,0xac,0x3d,0xde, 0x5c,0xae,0x30,0xd6, 0xa2,0xa5,0x11,0x20,
+ 0x8b,0x77,0xde,0x08, 0xa5,0xc5,0x40,0x05, 0x29,0x89,0x22,0x4d, 0x49,0x26,0x13,0x92,
+ 0xce,0x63,0x73,0xa9, 0x50,0x57,0x88,0x82, 0x88,0x99,0x3a,0x1a, 0x01,0x12,0x80,0x21,
+ 0x96,0xe6,0x09,0xc8, 0xa4,0x18,0x00,0x20, 0x14,0xaa,0x40,0xd1, 0x44,0x83,0xc9,0x52,
+ 0xa9,0xb1,0x91,0x98, 0x68,0x13,0x9a,0x49, 0x15,0xdd,0xc4,0xdc, 0x3b,0x09,0xa8,0x9c,
+ 0x2c,0xde,0x4c,0x42, 0xb7,0xc9,0xdc,0xb7, 0x8b,0x1e,0xf6,0x9c, 0x5d,0xdf,0xb7,0xde,
+ 0xdb,0xb5,0x6c,0x8c, 0x63,0x69,0x59,0x8b, 0xa2,0x26,0xc9,0x22, 0x53,0x4d,0xd3,0x66,
+ 0x89,0xb9,0xaa,0x02, 0x65,0x4a,0x82,0x9a, 0xa1,0x0d,0xaa,0x58, 0xd9,0x00,0xc9,0x95,
+ 0xe4,0x22,0x71,0x20, 0x93,0x02,0x40,0x90, 0xb1,0x13,0x9c,0xcc, 0x98,0x87,0x75,0x41,
+ 0x33,0x08,0x55,0xca, 0x90,0x41,0x0e,0xae, 0x64,0x44,0xc4,0x9a, 0x03,0xce,0x4c,0x19,
+ 0x24,0x50,0xcc,0xca, 0x12,0x70,0xb1,0x0c, 0x02,0xcc,0x4d,0x83, 0x04,0x72,0xa4,0x4a,
+ 0x11,0x62,0x6b,0x35, 0x12,0x93,0x93,0x00, 0xc8,0xc0,0x69,0xc4, 0x84,0x80,0x9c,0x28,
+ 0x56,0x44,0x50,0x8e, 0xea,0x54,0x38,0x0e, 0xcc,0xe1,0x88,0x00, 0x98,0x08,0x43,0x48,
+ 0x4f,0x77,0xb5,0xe2, 0x36,0xbe,0xd2,0xb6, 0xe8,0x0e,0xde,0xc5, 0x92,0x2c,0xc1,0x50,
+ 0xb6,0x55,0x08,0x04, 0xe2,0x42,0x81,0xd0, 0x93,0x19,0x72,0x0b, 0x18,0x28,0xa8,0x08,
+ 0x2a,0x53,0x70,0xc5, 0x0b,0xec,0x3c,0xc5, 0x7c,0x09,0x57,0xa9, 0x61,0xe0,0xf3,0x19,
+ 0xb6,0xe2,0xb3,0xcd, 0xfe,0x36,0x67,0x7c, 0xce,0x06,0xd3,0x23, 0x89,0x67,0x1b,0xbe,
+ 0xce,0xed,0x78,0x9a, 0xde,0xfb,0x6f,0x9d, 0xa1,0xbd,0x79,0xe7, 0x9e,0x79,0xe7,0x9a,
+ 0x69,0xa6,0xac,0x64, 0xce,0xae,0x8b,0x69, 0x95,0x05,0x3c,0x35, 0xa8,0xd3,0xbe,0xd1,
+ 0xa0,0xc2,0x99,0xd1, 0xcf,0x95,0x8d,0x9e, 0x9a,0xe5,0xbf,0xcd, 0x76,0xc5,0xab,0x02,
+ 0x2e,0x06,0x07,0x10, 0x4d,0x4a,0xef,0x81, 0xfc,0xb6,0xa8,0xa4, 0x9c,0x11,0x3e,0xd9,
+ 0x50,0x0f,0xba,0xaa, 0x37,0xda,0x95,0x91, 0x3e,0xcb,0xfc,0x65, 0x13,0x7a,0x34,0xac,
+ 0x2c,0xcc,0xe6,0xb3, 0x81,0x0b,0x3a,0x82, 0xab,0xbc,0x4d,0xd8, 0x10,0x49,0x12,0x51,
+ 0x2a,0xd5,0xd6,0x68, 0x49,0xdc,0x1c,0x28, 0x14,0x9b,0x24,0x13, 0xd8,0xf0,0xfc,0x8d,
+ 0x3c,0xb5,0x16,0xfa, 0x28,0x62,0x8e,0x1f, 0x17,0x2f,0x5f,0x40, 0x0e,0x2f,0x2a,0x1e,
+ 0xe3,0x7f,0xda,0x23, 0xe4,0xee,0x77,0x74, 0xa0,0x1a,0xfb,0xae, 0x34,0x51,0xf1,0xae,
+ 0xcf,0x97,0x76,0x8a, 0x14,0xaf,0x8c,0xea, 0xb7,0xc3,0x6c,0x99, 0xc1,0xb1,0x9a,0xad,
+ 0x06,0xde,0x6e,0xdc, 0x19,0xa3,0x0d,0x7c, 0x8a,0xc0,0x95,0x0a, 0x40,0x3f,0x80,0x92,
+ 0x5a,0xd6,0xfc,0x06, 0x7b,0x14,0xd5,0xf1, 0xfe,0x62,0xde,0xf6, 0xba,0xaa,0x35,0x2c,
+ 0xcb,0xf4,0xfe,0x2f, 0xcd,0x7b,0x13,0xcc, 0x20,0x15,0xa3,0xb4, 0xc7,0x6b,0x5e,0xea,
+ 0x3c,0x8d,0xec,0x3d, 0xb6,0xa4,0x29,0xe9, 0x1b,0x7f,0xda,0xe9, 0x2d,0x46,0x6d,0xc1,
+ 0xf8,0x5b,0x5e,0x4e, 0x4e,0xf5,0x5a,0xf5, 0x3f,0x28,0x80,0xf9, 0xed,0x07,0x77,0x7a,
+ 0xb8,0x5f,0x42,0xec, 0x53,0xab,0x7a,0x78, 0x82,0xa9,0x05,0xad, 0x9b,0xaa,0xc3,0x9e,
+ 0x49,0x48,0x5f,0xca, 0x23,0x5d,0x13,0x3e, 0xe6,0x06,0xeb,0xbe, 0xe4,0xb4,0x7f,0xaa,
+ 0xec,0xd1,0x1c,0xde, 0xc8,0xe9,0xd2,0xab, 0x8d,0xa6,0x70,0x0d, 0xeb,0xc1,0x13,0xd9,
+ 0xfb,0x0b,0xc5,0xd6, 0xba,0x22,0x15,0x78, 0x54,0x17,0x02,0x90, 0x09,0x89,0x64,0x15,
+ 0x9b,0x4a,0xb7,0x01, 0xd8,0x5c,0x3a,0xf3, 0xc0,0x88,0x04,0x08, 0x14,0x21,0x10,0x80,
+ 0x80,0x12,0x04,0x11, 0xd6,0xc0,0xda,0x8a, 0xda,0x90,0x88,0x04, 0x02,0x20,0x40,0x02,
+ 0x04,0x22,0x14,0x17, 0xf6,0x4b,0x73,0x98, 0x00,0x84,0x88,0x84, 0xd2,0xd2,0xb4,0x4e,
+ 0x00,0x50,0x8c,0x60, 0xac,0x49,0xfa,0xf4, 0x68,0xf0,0x6f,0x80, 0x31,0x9a,0x57,0xf9,
+ 0xdc,0x5b,0xbd,0x75, 0x77,0x33,0xf8,0x0e, 0x42,0xf3,0x5b,0xdc, 0xbe,0xcd,0x9b,0xdd,
+ 0xb4,0x44,0x20,0xcd, 0x7f,0x1f,0x45,0x5e, 0xf5,0xec,0xf6,0xcb, 0x23,0x7f,0x4c,0x5a,
+ 0xdc,0x6a,0x6f,0xd1, 0x72,0xc5,0x8e,0x6f, 0xd6,0x46,0x2a,0x68, 0x3f,0x22,0x03,0x0b,
+ 0x74,0x10,0x54,0xff, 0x0c,0x33,0x7a,0xce, 0xbd,0xa7,0x7a,0x02, 0x48,0x8e,0x73,0xa4,
+ 0x74,0xd7,0x32,0xea, 0x85,0x06,0x35,0xcb, 0x4f,0xd0,0xd3,0x5c, 0xd6,0x9b,0x36,0xee,
+ 0xfe,0x1f,0x1c,0x9d, 0xa3,0x4c,0xe0,0x66, 0x82,0x9a,0x40,0xb0, 0xf8,0xb7,0x35,0x2b,
+ 0xc9,0x57,0x47,0x88, 0xd0,0xa1,0x8a,0x03, 0x74,0xc0,0x3e,0x8a, 0x6c,0x32,0xdb,0x4d,
+ 0xd2,0xb5,0x99,0x23, 0x20,0x18,0xc6,0x68, 0x11,0xaa,0xa6,0x95, 0xcc,0x8f,0xc7,0x1d,
+ 0x9c,0x37,0x03,0x7f, 0x19,0xb1,0x6d,0xbc, 0x1c,0xaa,0x17,0x34, 0xa0,0x82,0x11,0x7d,
+ 0xcd,0x70,0x5f,0x40, 0x54,0x6e,0x28,0x50, 0x1a,0x45,0x46,0x55, 0x70,0xd4,0xea,0xb4,
+ 0x6b,0x29,0x77,0x5f, 0x47,0x37,0x0d,0x9d, 0x7a,0x63,0x8a,0x3b, 0xd2,0x33,0x05,0x10,
+ 0xe7,0x74,0x27,0x36, 0x70,0xd9,0xd4,0x81, 0x77,0x40,0x57,0x58, 0x7d,0x66,0xb4,0x11,
+ 0x15,0x6d,0xfc,0x78, 0x29,0x90,0x00,0x95, 0x23,0x0b,0x92,0x00, 0x88,0x40,0xeb,0x13,
+ 0xb2,0xd2,0xd6,0x41, 0x47,0x8e,0x2d,0x6a, 0x0d,0x04,0x82,0xbe, 0x53,0xba,0xaf,0x18,
+ 0x7d,0x6e,0x62,0x2b, 0x05,0x6f,0x83,0xe0, 0x7d,0x0e,0x86,0x01, 0x84,0x02,0x02,0x4b,
+ 0x93,0xc0,0x16,0xa4, 0x60,0x36,0xb5,0x0d, 0x43,0x46,0x7e,0x65, 0x29,0x74,0xcd,0x3f,
+ 0xb5,0x07,0x69,0x7f, 0xd6,0x6b,0xb0,0x75, 0xf5,0xf4,0xfc,0x76, 0xa3,0x50,0x6a,0x37,
+ 0x46,0x1e,0x4d,0x06, 0x5a,0x16,0xd7,0x91, 0xd5,0x64,0x6f,0xf2, 0xf3,0xb3,0xec,0x7a,
+ 0xef,0xd3,0xf5,0x55, 0xdc,0x89,0xed,0x82, 0xa0,0xf1,0xb7,0xc1, 0x48,0x18,0xdc,0x52,
+ 0x08,0xde,0xbb,0xbb, 0x32,0x35,0xd1,0xc1, 0x3c,0xad,0x2c,0xb7, 0xa1,0x63,0x53,0x00,
+ 0x11,0x61,0xbd,0xa1, 0x6b,0xb8,0xc5,0xe0, 0x79,0x7d,0x6e,0xa6, 0xf1,0xdb,0xf1,0x7a,
+ 0x29,0xff,0x86,0x06, 0x86,0xf8,0xce,0xf2, 0x8f,0x93,0xbb,0x33, 0x6d,0x4e,0x9a,0x91,
+ 0x15,0x85,0x30,0x40, 0xf2,0x98,0x36,0xc7, 0xa8,0xa9,0xfc,0xe3, 0x2b,0x6b,0xad,0xd2,
+ 0x0f,0x5b,0x61,0xe9, 0x95,0x40,0x1c,0xe3, 0x28,0x09,0x8b,0x59, 0x40,0xce,0xfa,0xbc,
+ 0xc9,0xb2,0xa8,0x80, 0x84,0xa7,0x93,0x17, 0x7c,0xbf,0xe3,0xc6, 0x5a,0xa5,0xc3,0x94,
+ 0xc5,0xca,0xad,0xf7, 0x6e,0x3e,0xee,0x1b, 0xe2,0x05,0x0a,0xf9, 0x98,0xc3,0xe6,0x44,
+ 0x7f,0x1d,0x44,0x0f, 0x21,0x88,0x22,0x10, 0x66,0x20,0xac,0xcd, 0x6d,0x49,0x7e,0x95,
+ 0x65,0x51,0x15,0xf0, 0xc4,0x31,0x09,0x57, 0xc2,0xe8,0x77,0x92, 0xc9,0x2e,0x07,0x1e,
+ 0xef,0xae,0xd8,0xf3, 0x3e,0xce,0xbc,0xcd, 0xbe,0xe9,0xff,0x1d, 0xe8,0xf2,0xfa,0x4a,
+ 0x61,0xeb,0xac,0xb4, 0xb0,0x6e,0x07,0x03, 0xc9,0x61,0x55,0x42, 0xeb,0x13,0xc9,0x1a,
+ 0x76,0x76,0x81,0x26, 0x3a,0x16,0x1d,0x5a, 0x85,0x1b,0x5b,0xc1, 0xc9,0x66,0x24,0xf5,
+ 0x7d,0x3b,0x57,0xd4, 0xd2,0x73,0x90,0x42, 0xb5,0xf5,0x40,0x76, 0x79,0x4e,0x0e,0x83,
+ 0x79,0x4f,0xc0,0xe0, 0xca,0xae,0x1e,0xe7, 0x6f,0xc2,0xed,0xf4, 0x76,0x65,0x64,0x78,
+ 0x78,0xf7,0xb8,0x07, 0xaa,0x12,0x0d,0x13, 0x11,0xb0,0x4d,0xa6, 0x03,0x6d,0xbe,0x70,
+ 0x60,0x63,0xbf,0x33, 0x27,0x89,0x53,0xa8, 0x4b,0xa4,0xa3,0x48, 0x20,0x04,0x6b,0xda,
+ 0x8c,0xc2,0x48,0x51, 0x7b,0x7b,0x81,0xc6, 0x37,0xad,0xa2,0x72, 0x33,0x98,0xac,0x8f,
+ 0xd8,0x23,0x61,0xf0, 0x5a,0x67,0xeb,0xe4, 0xfe,0x7a,0x26,0xbd, 0xba,0x14,0x48,0xf0,
+ 0x28,0x4c,0x36,0xbe, 0x43,0xc6,0x0a,0x03, 0xe6,0xb1,0x0f,0x8f, 0xee,0xec,0x7a,0x69,
+ 0xfb,0xff,0x7c,0xed, 0x4d,0x06,0xfb,0xf9, 0x0f,0xe2,0x59,0xbe, 0xcc,0xdd,0xa9,0x82,
+ 0xb4,0x91,0x49,0x61, 0xc7,0x4c,0x6e,0xd5, 0xc6,0x5f,0x18,0xbd, 0x6f,0x9a,0x5d,0xec,
+ 0x87,0xf1,0x7c,0x1d, 0xd6,0xf5,0xc0,0x1e, 0x25,0x5a,0x38,0x54, 0x8c,0x5d,0xa1,0x24,
+ 0x9b,0x4f,0x56,0xd4, 0x10,0x40,0xa1,0xa6, 0xdc,0x88,0x6b,0x09, 0xd3,0x38,0x41,0x09,
+ 0xce,0x10,0xbe,0x88, 0x81,0x78,0x41,0x09, 0xfd,0x80,0x21,0x0c, 0xad,0x80,0x9b,0xf4,
+ 0x1a,0x42,0xe4,0x31, 0x97,0xa1,0xa7,0x73, 0x52,0xea,0x44,0x86, 0xcc,0x3f,0xe7,0xf8,
+ 0x86,0x00,0xe9,0x1b, 0x28,0x75,0x61,0xd9, 0x78,0xc7,0xd1,0xe4, 0x1f,0x47,0xda,0x78,
+ 0x18,0x72,0x4a,0xc9, 0x5d,0x37,0xb2,0x67, 0x27,0x18,0x79,0x50, 0x1a,0x01,0xa0,0x47,
+ 0x26,0xbe,0xb3,0x2d, 0xb2,0x92,0xfc,0x07, 0x4a,0x3b,0x92,0xb6, 0x8b,0x10,0xfe,0xd5,
+ 0xa8,0xdf,0x49,0xea, 0x55,0x83,0x6d,0xdf, 0x5a,0xeb,0xb0,0xe9, 0x8d,0x87,0xa7,0x69,
+ 0x2d,0x66,0xe0,0x84, 0x81,0x01,0x67,0x65, 0x10,0x30,0x4e,0x7f, 0xb7,0xba,0xfd,0x3b,
+ 0xda,0x50,0x90,0xae, 0x34,0x97,0xf2,0x7c, 0xb7,0x47,0x37,0xb5, 0xfa,0x5f,0x6e,0x8a,
+ 0x16,0x9e,0x3b,0xc9, 0x43,0x67,0x75,0xf8, 0x31,0xb5,0xbd,0x79, 0xb8,0x2e,0xa1,0x25,
+ 0x61,0x89,0x50,0xd7, 0xd7,0x62,0x41,0xf5, 0x0c,0x11,0x28,0x64, 0x44,0x2f,0xaa,0x91,
+ 0xb0,0x75,0xf4,0x5a, 0x58,0x2b,0x04,0x04, 0xf8,0xb0,0x31,0xe2, 0x63,0x1f,0x5f,0xe2,
+ 0x61,0x31,0xb2,0xf9, 0xdb,0xca,0x70,0xd0, 0x85,0xbd,0x43,0xa1, 0xf4,0x20,0x23,0x23,
+ 0xb6,0x77,0x65,0xba, 0x74,0xe6,0xf5,0xac, 0x1c,0x05,0x48,0x7e, 0xb3,0x07,0x0b,0x9c,
+ 0x0e,0xce,0xb3,0x53, 0xdb,0x98,0xb8,0x5b, 0x81,0xd6,0x40,0x3c, 0xf5,0xa0,0x48,0x57,
+ 0x67,0x8d,0xf2,0xa1, 0xda,0xf7,0xd9,0x74, 0xaa,0x4b,0x50,0xad, 0x95,0xbb,0x6f,0xae,
+ 0xea,0xf8,0x93,0xbf, 0xaf,0xc0,0xea,0x1b, 0x90,0x12,0x59,0x20, 0x27,0x0f,0xd8,0x3b,
+ 0x7e,0xfd,0xc1,0x5c, 0xe4,0x70,0xdd,0x4f, 0x7a,0x85,0x12,0x3b, 0xd6,0xfe,0xdc,0xf9,
+ 0x95,0xf9,0x08,0x40, 0x0b,0x02,0x0d,0x56, 0xc8,0xad,0x18,0xcc, 0x7c,0x95,0xda,0x61,
+ 0xdd,0xdb,0x79,0x1f, 0x3a,0xa7,0x91,0x61, 0xc8,0x6a,0x7b,0x53, 0xf1,0xf9,0x54,0x20,
+ 0x0a,0xff,0x37,0x21, 0x1f,0x9c,0x45,0xd2, 0x0a,0x41,0xf2,0x28, 0xab,0xfa,0x9d,0xc9,
+ 0xf0,0xaa,0xb8,0x04, 0x3c,0x35,0x1d,0x53, 0xae,0x31,0x3a,0x95, 0xbe,0x2d,0xcd,0x68,
+ 0x30,0xcc,0xb8,0x20, 0xc6,0x19,0xaf,0xa0, 0xa1,0x3b,0x03,0x67, 0xa3,0x85,0x7f,0xcb,
+ 0x36,0x13,0x69,0xb5, 0x0d,0xe5,0x71,0x55, 0x1c,0xb9,0x36,0xba, 0x77,0x27,0x86,0xca,
+ 0xc6,0x9e,0x4c,0x94, 0xe4,0x50,0xd1,0xb1, 0xa9,0xe8,0x2c,0x3f, 0x04,0x0e,0x0d,0xbd,
+ 0x4b,0x70,0x90,0x2d, 0x48,0x36,0x5f,0x52, 0x8b,0xf0,0x7b,0x07, 0xe3,0xfa,0x27,0x4d,
+ 0x6e,0xeb,0x36,0xce, 0x89,0xc1,0xa6,0x25, 0xa8,0xb0,0x2f,0x2e, 0x53,0xad,0xa1,0x33,
+ 0x4a,0xb7,0x7b,0x3d, 0xd2,0x82,0x9f,0x4f, 0x88,0xda,0xb7,0xb0, 0x55,0x26,0x82,0x85,
+ 0xc4,0x74,0xf9,0xb3, 0x81,0xeb,0x79,0xba, 0x5c,0x6e,0xbd,0xcd, 0x2d,0xcf,0xf7,0x8f,
+ 0xae,0xc8,0x9a,0x04, 0x6b,0x6c,0x44,0x5a, 0x99,0xc3,0xc6,0x78, 0x10,0xec,0xc0,0xd4,
+ 0x5a,0xee,0xd9,0x79, 0x94,0x7a,0x8a,0x9f, 0xa5,0x5d,0xae,0xb6, 0x55,0x1b,0x2c,0x64,
+ 0xd3,0x80,0xcd,0xfb, 0xc5,0x29,0xc0,0xbe, 0xf5,0x70,0x22,0xd6, 0xe4,0xcb,0x83,0x8f,
+ 0x55,0xa8,0xb9,0x93, 0x3e,0x7f,0x47,0x8d, 0xef,0x6d,0x3c,0xcb, 0xa5,0xca,0xe2,0x1b,
+ 0xf4,0xa6,0xcc,0x8d, 0x09,0xbc,0xa8,0x93, 0xac,0x43,0x6b,0x0e, 0x15,0xc6,0x65,0x3e,
+ 0xcd,0xca,0x14,0x16, 0xd2,0x50,0x57,0x7b, 0xdf,0x41,0xee,0x7f, 0x88,0x5e,0x81,0x83,
+ 0xf4,0x27,0xc1,0xe4, 0x62,0x6f,0xe0,0x96, 0x2a,0x0f,0x47,0x79, 0x35,0xe7,0x5f,0x75,
+ 0xd9,0xb7,0x77,0x38, 0x1a,0x7d,0xed,0xa3, 0xf1,0x3e,0xe0,0x52, 0xa8,0xb4,0xbf,0xb2,
+ 0xa4,0xb4,0x6c,0xe5, 0x34,0x88,0xed,0xeb, 0xba,0x8f,0x37,0x2b, 0x7d,0xeb,0x30,0x86,
+ 0x54,0x19,0x9d,0x95, 0x27,0x6e,0x83,0xe9, 0x2f,0x30,0x31,0x93, 0x18,0x98,0x8f,0xa5,
+ 0xda,0xd9,0x8a,0x53, 0x37,0x65,0xc3,0x98, 0xac,0x90,0xd0,0x61, 0x8a,0xa3,0x18,0xd8,
+ 0x5f,0x1a,0x01,0x25, 0xe4,0x67,0x20,0x70, 0x8c,0x3c,0x3c,0x0b, 0x7e,0x1a,0xf6,0xc3,
+ 0x16,0x54,0x95,0x85, 0xe5,0x35,0xe1,0x26, 0x1b,0xb2,0x33,0xb8, 0xad,0x6f,0xf1,0x94,
+ 0x99,0x1b,0xf9,0x14, 0x7c,0x15,0x5d,0x30, 0x74,0x95,0x5c,0x1d, 0x27,0x6d,0xc0,0x96,
+ 0x2f,0x57,0xfa,0xc4, 0xd2,0x86,0x97,0x17, 0x93,0x6b,0x8a,0xc0, 0xab,0x55,0x9c,0x82,
+ 0xe6,0xc2,0xcd,0xec, 0xd3,0x73,0x77,0x19, 0x7d,0xe1,0x1c,0x66, 0xdf,0x8d,0x9e,0x86,
+ 0xfc,0xb2,0x6d,0xe0, 0xd1,0xa1,0xa2,0x02, 0x81,0xb7,0xc9,0x8e, 0x22,0x0c,0x29,0x10,
+ 0x26,0xde,0xe3,0x47, 0x08,0x92,0x5e,0xb5, 0x97,0xbf,0xe7,0x0a, 0xbf,0xd2,0xc6,0x92,
+ 0x1e,0x2d,0xe9,0x57, 0x4b,0x8c,0xf9,0x50, 0x01,0x8e,0xd0,0x7d, 0xbc,0x2f,0x3f,0xda,
+ 0xc6,0xb3,0xaa,0xe1, 0xfe,0x79,0xcf,0xac, 0x14,0xa8,0xf9,0x67, 0x94,0x93,0x5a,0xb6,
+ 0x99,0x0a,0x3f,0x9b, 0xd0,0xa6,0x35,0x65, 0xae,0x83,0x5e,0x12, 0x56,0x4f,0x08,0x1c,
+ 0x56,0xec,0x86,0x93, 0xc3,0xad,0x54,0x7f, 0xbe,0x37,0x72,0xa7, 0xc8,0xe6,0xfa,0xfe,
+ 0x2c,0x5c,0x4f,0x32, 0xfb,0xf8,0x85,0xf3, 0x7c,0xdf,0x66,0x7f, 0x27,0x98,0xfa,0x78,
+ 0x48,0x8a,0x08,0xd7, 0x77,0x6d,0x87,0xc8, 0x37,0xd2,0x5c,0xc8, 0xa1,0x3d,0x14,0xe0,
+ 0x6e,0x64,0x3e,0x00, 0xec,0x14,0xba,0x44, 0x97,0x37,0x74,0x05, 0xf4,0x88,0xe6,0xad,
+ 0xaf,0xc1,0x9f,0x8f, 0xd1,0xe3,0x5d,0xc7, 0x89,0xe8,0xf5,0xd7, 0x76,0xec,0xda,0x58,
+ 0xeb,0x6b,0x8f,0xc9, 0x08,0xd2,0x52,0x28, 0x56,0x07,0xb7,0x9b, 0xc8,0x9a,0xf5,0xcb,
+ 0x0a,0xaa,0xf6,0xed, 0x2a,0x41,0x80,0x7e, 0xd1,0xd2,0x9a,0xad, 0xd1,0xf6,0x9e,0x8f,
+ 0x3e,0x88,0xdc,0xbd, 0xb4,0x6c,0x7d,0xe9, 0x81,0xe7,0x59,0x25, 0x22,0x2c,0x99,0x12,
+ 0x62,0x86,0x78,0x9a, 0xc0,0x8b,0x99,0x08, 0x56,0x02,0xaa,0xc1, 0xb3,0x50,0x3d,0x32,
+ 0x14,0x34,0x78,0xf4, 0x88,0x66,0x77,0x2c, 0xe1,0xcf,0xd5,0x3b, 0xf2,0x6a,0x6f,0x05,
+ 0x7b,0x09,0x83,0x72, 0xa1,0x86,0xac,0x56, 0xd6,0xee,0x2b,0x22, 0xe4,0xfb,0x78,0xae,
+ 0x2b,0x3e,0x6f,0x9e, 0x7c,0xd6,0xcc,0x64, 0x6c,0x50,0x24,0x4a, 0x00,0x07,0xb1,0xc8,
+ 0x22,0x33,0x18,0xa9, 0x06,0xd7,0x87,0x49, 0xdf,0x66,0xc0,0x2a, 0xf9,0x55,0xbf,0x0f,
+ 0x2f,0xd8,0xb9,0x68, 0xa3,0xc9,0x3b,0x6c, 0x2a,0xcd,0xb0,0x3d, 0x30,0x81,0xdb,0xf5,
+ 0x54,0xb7,0x6e,0xdf, 0x06,0x52,0xf9,0xd3, 0x26,0x54,0x7a,0x57, 0x0f,0xcb,0xdf,0xfa,
+ 0xec,0xa4,0xd9,0xf6, 0x21,0x43,0xd3,0x06, 0x22,0x44,0x3c,0x51, 0x1a,0xc1,0x04,0x13,
+ 0xdc,0x50,0x24,0x8d, 0x64,0x00,0xab,0x64, 0x42,0x6c,0x7b,0xbe, 0xd7,0x33,0xe5,0x67,
+ 0x97,0x0b,0xba,0x9a, 0x91,0xc8,0x29,0xa1, 0x86,0xa6,0x97,0xcc, 0xfe,0xa8,0xa8,0x59,
+ 0x8f,0x92,0xef,0x68, 0xe3,0xcb,0xdf,0x28, 0xdf,0x35,0x0a,0x64, 0x53,0x4a,0x1d,0xe3,
+ 0x49,0x2d,0xe4,0x93, 0x5f,0xcc,0x4f,0x5c, 0x59,0xb8,0xb0,0x5a, 0xe1,0x22,0x49,0x29,
+ 0x00,0x84,0x1f,0x75, 0xc7,0x5c,0xd3,0x51, 0x20,0x3a,0xd1,0x90, 0xa0,0x01,0x45,0x91,
+ 0x26,0x42,0x10,0x90, 0x40,0x40,0x80,0x49, 0xb1,0xb1,0xa6,0x31, 0xb6,0x5f,0x0b,0x9e,
+ 0x77,0x81,0xf5,0x71, 0xfa,0xee,0x2e,0x82, 0xce,0x88,0xea,0x72, 0x3d,0x4c,0x89,0xd2,
+ 0xaf,0x22,0xf6,0x19, 0x86,0x1a,0x3b,0x23, 0xcc,0x7c,0xea,0xc7, 0x5c,0xa0,0x20,0x21,
+ 0x02,0x80,0x8a,0x9b, 0x48,0xb9,0x09,0xe0, 0xa9,0xc9,0x39,0xb6, 0x0e,0x60,0x90,0x40,
+ 0x02,0x80,0x50,0x22, 0x01,0x40,0x24,0x82, 0x20,0x12,0x40,0x92, 0x40,0x90,0x44,0x00,
+ 0x81,0xb4,0x03,0x69, 0x30,0x69,0xb4,0x3b, 0x3f,0x87,0x18,0x2e, 0x6d,0xa0,0x9c,0xba,
+ 0x9b,0x56,0x89,0x7d, 0x07,0x43,0xaa,0x78, 0x05,0x91,0x59,0x63, 0x42,0x6d,0xb4,0xd3,
+ 0x4d,0xa1,0xdd,0xba, 0x97,0xb4,0x78,0x0e, 0xd2,0x1d,0x75,0xd4, 0xbf,0xe2,0xdc,0x56,
+ 0xa0,0x9e,0x7f,0x04, 0xf6,0x0e,0xe3,0x57, 0xa3,0xff,0x8d,0x63, 0x7a,0x95,0xa0,0x78,
+ 0x38,0x31,0xeb,0x09, 0xa8,0x06,0x34,0x86, 0xc2,0x64,0xe1,0x20, 0x93,0x63,0xef,0x9e,
+ 0xd7,0xde,0x59,0xd2, 0x05,0x25,0x79,0x3a, 0x5f,0x01,0xc7,0x83, 0x9e,0x97,0xbe,0xe5,
+ 0x45,0x0f,0x8a,0x11, 0xb3,0xa0,0x35,0x18, 0x74,0x13,0x09,0x40, 0x22,0xb1,0x32,0x05,
+ 0x34,0x63,0x90,0x8e, 0xa2,0x48,0x90,0x64, 0x59,0xf1,0x8d,0x5b, 0x21,0x20,0x06,0xf2,
+ 0x8e,0x4a,0xa9,0x18, 0x03,0x66,0xe0,0x17, 0x91,0x3b,0x56,0xb7, 0xd8,0xe9,0x31,0x16,
+ 0x85,0x1c,0xe9,0x49, 0xe4,0x70,0xde,0x21, 0x57,0xad,0x2d,0xc8, 0x3d,0x27,0x60,0x10,
+ 0x90,0x88,0x18,0xd8, 0x92,0x6c,0x12,0x18, 0x36,0x33,0xcb,0x62, 0x23,0xc7,0x50,0x25,
+ 0x0c,0x4d,0x93,0x94, 0xd8,0x2a,0x7b,0x7d, 0x6d,0x0c,0x9c,0xa9, 0x77,0x13,0x11,0x9f,
+ 0xa4,0xd2,0xae,0xa6, 0x4c,0x42,0xa5,0x1b, 0x11,0xf8,0x6d,0xd4, 0x11,0x6b,0xc1,0xd1,
+ 0xfc,0xca,0xbc,0x30, 0x37,0xba,0x80,0x77, 0x22,0xe2,0x16,0x5e, 0x21,0x0b,0x6c,0x26,
+ 0x88,0xec,0x50,0xf7, 0x3e,0x34,0xdc,0xa7, 0x39,0x08,0x94,0x9b, 0x94,0x98,0x21,0x02,
+ 0x93,0x49,0x34,0xe3, 0x4d,0x02,0x4b,0x59, 0x0c,0xee,0xf4,0x9d, 0xf0,0x22,0x5f,0xc0,
+ 0x41,0x53,0xc4,0x78, 0xb7,0x7c,0x18,0xda, 0x4a,0xb8,0xb2,0x77, 0x4d,0xee,0x5d,0x5a,
+ 0xf6,0x3b,0x1e,0x87, 0x4f,0x87,0x25,0xb9, 0xe1,0xd1,0xec,0xa4, 0xdc,0xe3,0xa8,0xc4,
+ 0xc6,0xdb,0x37,0xc3, 0x3c,0x3f,0x11,0x9f, 0xe3,0xbc,0xdf,0x65, 0x5a,0xf3,0xf6,0xb1,
+ 0xe4,0xed,0x8c,0x8a, 0x3c,0xc9,0x73,0x5f, 0xa7,0x2f,0xa0,0xc5, 0x63,0x7c,0x32,0x11,
+ 0xcd,0x52,0xad,0x3a, 0x14,0xd8,0x33,0x13, 0x3e,0x3c,0xe7,0xf4, 0x22,0x8a,0x65,0x08,
+ 0x57,0x24,0x42,0x3b, 0x60,0xc0,0xa1,0xf8, 0xbb,0x60,0x96,0xdd, 0x5e,0x53,0xd9,0x00,
+ 0x1b,0xbc,0x64,0xb9, 0x3d,0xca,0x62,0x2c, 0xdd,0x58,0x2b,0x16, 0x32,0x33,0xd9,0x8b,
+ 0xd9,0x69,0x1f,0xbc, 0x7a,0x3e,0x42,0x3f, 0x44,0xba,0x0e,0xc7, 0xb7,0xb9,0x73,0x24,
+ 0xbd,0x99,0x8e,0x88, 0x4b,0x43,0xba,0x6d, 0x01,0x92,0xd4,0x9a, 0xee,0x5c,0x34,0x9b,
+ 0xc8,0x1a,0xa0,0x10, 0x25,0x36,0xda,0x69, 0xc1,0x20,0x60,0xe0, 0x7e,0x24,0x93,0x96,
+ 0x5d,0x5e,0x71,0x0a, 0x5e,0xb0,0x50,0xaa, 0x44,0x24,0x93,0xa0, 0x85,0x0d,0x02,0x06,
+ 0x2f,0x13,0x61,0xd6, 0xc9,0x1f,0x1b,0xdd, 0xf4,0xf7,0x7f,0xf3, 0xae,0x8b,0x00,0x2b,
+ 0xe9,0x56,0x86,0x6b, 0xf0,0xf0,0x4e,0x67, 0x01,0x08,0x18,0x0c, 0x4d,0xb0,0x6c,0x43,
+ 0x04,0x93,0x94,0x43, 0x04,0xd3,0x04,0x86, 0x90,0x99,0x00,0x0c, 0x66,0x25,0x40,0x07,
+ 0x22,0xa2,0xc8,0xf9, 0x08,0xfd,0x9b,0x40, 0xa7,0xd9,0x64,0x71, 0xcc,0xd9,0x9b,0xa7,
+ 0x12,0xdd,0x48,0x7b, 0xbf,0x0f,0x44,0xeb, 0x2f,0x7d,0xc8,0x33, 0xe3,0xaa,0xf5,0x64,
+ 0xd5,0x3b,0x92,0xec, 0xae,0x81,0x24,0x72, 0xcc,0xb3,0x13,0x9d, 0xa6,0xe6,0xd5,0x7c,
+ 0xfd,0xd7,0x57,0x5b, 0x4b,0xdb,0xa1,0x38, 0xb9,0x18,0x8e,0x74, 0x14,0x2c,0x31,0x87,
+ 0xbc,0x2c,0x25,0x2f, 0xb0,0xf7,0xcb,0x62, 0x2b,0x97,0xf7,0xc7, 0xc3,0x71,0x38,0x7d,
+ 0xfe,0xe2,0x7c,0x7e, 0xaf,0x4f,0xc0,0xf1, 0xe1,0x5a,0x20,0xf6, 0x2c,0xe1,0x80,0x47,
+ 0xaf,0x54,0x8d,0x2f, 0xd5,0xfe,0x7d,0x1e, 0x7d,0xcb,0x0c,0xae, 0x31,0xf4,0x7a,0xd7,
+ 0xa8,0x6f,0xa1,0xd2, 0xec,0xc1,0x10,0x1f, 0x6a,0xe1,0x7c,0x4d, 0x3e,0xce,0x18,0x7a,
+ 0xd2,0xe0,0xce,0x4e, 0x7b,0x63,0x69,0x45, 0xed,0x9f,0xbe,0x4a, 0xb7,0x9c,0xa7,0x2a,
+ 0xcf,0x02,0x35,0x60, 0xae,0x50,0xd9,0x28, 0xfd,0x21,0xc1,0xa6, 0xf2,0x89,0x1a,0xcf,
+ 0x43,0xa3,0x32,0xa1, 0x66,0x3f,0x2a,0xa8, 0xcd,0x03,0xd2,0xec, 0xdb,0x39,0xcb,0x85,
+ 0x76,0x4c,0x34,0x0a, 0x55,0x86,0x3d,0xe1, 0x2a,0xc9,0xc0,0xdf, 0x59,0xe7,0x76,0x97,
+ 0x08,0xbc,0x10,0x79, 0x00,0xcb,0x53,0x11, 0x19,0x60,0x67,0x19, 0x2f,0x3c,0xba,0x0c,
+ 0x27,0x4e,0x7f,0x77, 0xb0,0xb5,0x2c,0xbb, 0x12,0x2b,0xa3,0x2a, 0x87,0x90,0xda,0x67,
+ 0xb2,0x55,0x13,0x73, 0x0b,0x38,0x61,0xde, 0xb2,0x5e,0x07,0x5f, 0xc9,0xbd,0xa6,0xfe,
+ 0x78,0xbb,0x96,0x33, 0x70,0x3d,0x8b,0xb1, 0xf5,0x5d,0x39,0x71, 0xb2,0xcb,0x68,0xeb,
+ 0xb0,0xb8,0x6e,0x87, 0x1b,0x8b,0x33,0xc6, 0xd5,0x7e,0x0d,0xe1, 0xf7,0x38,0xea,0x3a,
+ 0x9e,0x2d,0x74,0x2e, 0xbb,0xc3,0xfb,0xfb, 0x91,0x7d,0x8b,0x60, 0x52,0x80,0xb0,0xc6,
+ 0x66,0xa1,0xba,0x4a, 0x04,0x19,0xfb,0xb8, 0x2e,0xb0,0x40,0xb3, 0xb5,0x8a,0xaa,0x9f,
+ 0x81,0x2f,0xee,0x5e, 0xfe,0x6e,0x47,0xab, 0xf8,0xec,0x6e,0x09, 0xdb,0xe2,0xb8,0xc1,
+ 0xca,0xf4,0x99,0x21, 0x95,0x8d,0x72,0xa2, 0xb7,0x2a,0x54,0xf8, 0x12,0xf0,0x67,0xf8,
+ 0x59,0x4d,0xdb,0x6c, 0x06,0x2f,0x98,0xb7, 0x44,0x9d,0xc2,0x51, 0x42,0x72,0xd2,0x52,
+ 0xa9,0x20,0x84,0xa3, 0x36,0x59,0x4f,0x1c, 0x6e,0x94,0x19,0xdc, 0x86,0x39,0xcc,0x03,
+ 0x7f,0xe5,0x65,0xe1, 0xee,0x77,0x3f,0x63, 0x97,0x78,0x78,0x29, 0x6e,0xfb,0xed,0x6b,
+ 0x9d,0x07,0x2b,0xf9, 0x4b,0xdb,0xbd,0xaf, 0xa3,0x96,0x21,0xa5, 0x62,0x58,0xa9,0xb0,
+ 0xe1,0x1b,0xd1,0xf2, 0x37,0x0b,0x30,0xfd, 0xa2,0x2c,0x3c,0xda, 0x58,0xdf,0xd9,0x8b,
+ 0x6f,0x23,0x17,0xb2, 0x7a,0xd6,0xab,0x79, 0x1c,0x4e,0x27,0x87, 0xf2,0x65,0x26,0x07,
+ 0xbc,0x55,0xbc,0x3e, 0x83,0x5b,0xfa,0x37, 0xfd,0x23,0x84,0x9e, 0xc8,0x91,0xd6,0x74,
+ 0x83,0xdf,0xfe,0xbe, 0x3c,0xf8,0x24,0xc6, 0xa6,0x5f,0x95,0x0c, 0xa6,0xd0,0xde,0x5b,
+ 0xcb,0x9f,0x5d,0x6e, 0x1e,0xec,0xd8,0x71, 0xbb,0xdf,0x2d,0xaf, 0xb2,0xd9,0xd0,0xe1,
+ 0xbd,0x4f,0x95,0x96, 0xfd,0x0a,0x54,0xd2, 0xe6,0x63,0x21,0xbf, 0x03,0x90,0x24,0x81,
+ 0xe8,0x17,0x1c,0xd3, 0x80,0xaa,0xa7,0xe3, 0x78,0x45,0x80,0xf3, 0x55,0x81,0x0e,0xfd,
+ 0x8f,0xa4,0xca,0x6c, 0xc6,0xa4,0xd9,0xe3, 0xcc,0x4d,0x00,0x4d, 0x9b,0x90,0x5e,0x6e,
+ 0xb6,0xc2,0x22,0x51, 0x83,0x7e,0x44,0xf2, 0x35,0xda,0x7e,0x03, 0xca,0x2f,0xd9,0xfd,
+ 0xbb,0x6b,0xa0,0x1c, 0x74,0xed,0x0a,0xe8, 0xd3,0x6d,0x8d,0x80, 0x08,0x00,0x81,0x08,
+ 0x42,0x44,0xe2,0xd7, 0x77,0x93,0xc1,0xbc, 0x8b,0x5c,0x3e,0xfa, 0xda,0x5c,0xd5,0xd5,
+ 0xbe,0x37,0x84,0xfc, 0xde,0xa6,0xf3,0x63, 0xbe,0xc3,0xdf,0xe0, 0xbf,0x60,0x04,0x60,
+ 0x77,0x52,0x41,0x35, 0xf7,0xa9,0xd9,0x5a, 0xd1,0xf8,0xda,0xde, 0x26,0x77,0xc0,0xfe,
+ 0x48,0xd4,0x6d,0xb2, 0xcd,0x08,0x9a,0x9a, 0x0e,0x29,0x02,0xf1, 0x3a,0x75,0x35,0xba,
+ 0xef,0x3f,0x70,0xc9, 0x72,0x26,0x72,0xbd, 0xae,0x53,0x59,0xcd, 0xf4,0x3c,0xe7,0x4d,
+ 0xc5,0xea,0x31,0x2a, 0xda,0x61,0x5f,0x76, 0xfc,0x5a,0xe8,0x2d, 0x6a,0x7b,0x09,0xde,
+ 0x9b,0x4f,0x2f,0x9f, 0x88,0x4b,0x6c,0x02, 0x0d,0x50,0xd6,0xe9, 0x83,0x81,0x33,0x5b,
+ 0x18,0x13,0xc1,0xda, 0x47,0xe3,0xb3,0xcd, 0xee,0x8d,0x92,0x3d, 0xff,0x97,0x20,0x24,
+ 0x0f,0xc4,0x81,0x43, 0x4c,0x13,0x1a,0x7e, 0x7c,0x47,0xd0,0x8a, 0x29,0x1b,0x9e,0x29,
+ 0x29,0xcd,0x0e,0x4d, 0xb9,0x55,0x54,0xe6, 0x84,0x02,0xa3,0x54, 0x93,0xdd,0xf2,0x7c,
+ 0x34,0xe6,0xad,0x75, 0x7c,0x6f,0x43,0xda, 0xfe,0x97,0xda,0x69, 0x3a,0x7b,0xc5,0x80,
+ 0xef,0x40,0xd6,0xfa, 0x9e,0x94,0xec,0x11, 0xe6,0xe3,0x65,0x24, 0x6f,0xba,0x29,0xd4,
+ 0x7b,0x56,0x0d,0xf4, 0x78,0xf3,0x87,0x34, 0x0a,0x5c,0x87,0x06, 0xa7,0x00,0x76,0x83,
+ 0x02,0xf8,0xc4,0x62, 0x05,0xa0,0xa2,0x84, 0x0c,0xc0,0xf0,0x68, 0xe8,0x22,0xfd,0xed,
+ 0xdc,0x4d,0x0b,0x30, 0x40,0x88,0x33,0xdf, 0xdd,0x38,0x9b,0x76, 0x16,0x5b,0x63,0xcc,
+ 0xbc,0x55,0x4c,0x41, 0xc1,0xad,0x51,0x8c, 0x51,0x30,0x34,0xd4, 0xa9,0x90,0x60,0x43,
+ 0x84,0x85,0x93,0x68, 0x95,0x12,0x84,0x60, 0xc3,0xb7,0x55,0x4a, 0x4d,0xe0,0x12,0xef,
+ 0x41,0x0b,0xb8,0xdb, 0x8d,0x8e,0xcd,0xff, 0xe7,0xc8,0xf0,0x7c, 0x7c,0x53,0xf7,0x4e,
+ 0x87,0x50,0xe1,0xe8, 0xac,0x36,0xbb,0xcf, 0x46,0x13,0x24,0xfa, 0x19,0x28,0x99,0x1a,
+ 0x44,0x5a,0xf1,0xf0, 0x29,0xd4,0x40,0x00, 0x7d,0xec,0x54,0xc6, 0x04,0x05,0x0e,0xe4,
+ 0x96,0xa2,0x02,0xbf, 0x5b,0x21,0x96,0x1b, 0x58,0xad,0x6b,0x2c, 0xbd,0xbf,0x73,0xd7,
+ 0x16,0xb2,0x4e,0x7c, 0xae,0xce,0x22,0x6c, 0x94,0x39,0xaa,0xa7, 0xdf,0xd7,0xf8,0x57,
+ 0x6c,0x63,0x0d,0x03, 0xf6,0xcf,0x28,0x53, 0xbd,0x89,0xf4,0xb7, 0x5c,0x8b,0xa9,0x8d,
+ 0xcb,0x44,0xf4,0xc4, 0x32,0xeb,0xcd,0xed, 0xfe,0x1e,0x25,0x86, 0xa7,0x80,0xc3,0xb9,
+ 0x1c,0x8a,0x43,0x8d, 0x77,0x03,0x71,0x2e, 0xe5,0x6a,0x83,0x28, 0xe1,0xf1,0xe5,0xe5,
+ 0xca,0x05,0xfc,0x10, 0x13,0xa6,0x53,0x64, 0xc9,0x75,0x83,0x5f, 0x2c,0x1d,0xb3,0x4a,
+ 0xd2,0xa6,0xb0,0xc0, 0xfd,0x0b,0xd8,0x9d, 0x5e,0xa2,0x6b,0xb3, 0x66,0x89,0xa3,0xc0,
+ 0xf0,0x34,0xfa,0xa7, 0x85,0xcd,0x53,0xd9, 0x4b,0xf2,0xf7,0x51, 0xf6,0x77,0x14,0xa3,
+ 0x4a,0xf1,0x1f,0x9b, 0xb0,0xf4,0x48,0xe8, 0xcb,0x39,0xb7,0xd1, 0x18,0xe7,0x67,0xdf,
+ 0x35,0x95,0xd2,0xb8, 0xea,0x32,0x3b,0x0c, 0xef,0x09,0xdf,0xdf, 0xee,0x2c,0x7b,0x6f,
+ 0x25,0xe6,0x4e,0x95, 0x17,0xbb,0x97,0xd2, 0x14,0x82,0x17,0x53, 0xba,0x6b,0x3c,0x2c,
+ 0x98,0xb3,0xe2,0xfd, 0x45,0x69,0x49,0xca, 0x44,0x38,0x5c,0x2c, 0xf5,0xb2,0x8d,0x31,
+ 0x86,0x45,0x75,0xb0, 0x20,0xcb,0x73,0x78, 0x1e,0x9b,0xaa,0xbd, 0xc9,0xdc,0xe9,0x06,
+ 0xdb,0x2c,0x59,0x0d, 0x45,0x6e,0x27,0xaf, 0x2b,0x88,0xd2,0x39, 0x61,0xa3,0x23,0xd5,
+ 0xe8,0x55,0x54,0x3e, 0xf3,0x71,0x7d,0x67, 0xee,0x89,0x56,0x2c, 0x7b,0x29,0x55,0x24,
+ 0xfe,0xc3,0x7e,0xf2, 0x6f,0x80,0xb0,0x15, 0xe6,0x0f,0x65,0xcb, 0x2f,0x5b,0xb8,0xd5,
+ 0x63,0x00,0x36,0xa4, 0x40,0x4f,0xda,0xd5, 0x3a,0xa0,0xd1,0x0a, 0xae,0x89,0xb5,0x14,
+ 0x4d,0x8f,0xb6,0xb0, 0x4d,0x1c,0x9e,0x4a, 0x96,0x07,0xa3,0xb5, 0xcb,0xd3,0x62,0xb9,
+ 0x7c,0x79,0x17,0xf7, 0xb3,0x7c,0x2a,0x6d, 0x18,0x44,0xd6,0x96, 0x8a,0x07,0x43,0x40,
+ 0x3b,0xc6,0x08,0x3e, 0xfb,0x01,0x67,0x56, 0xe9,0x7c,0xbd,0x44, 0x7e,0xc7,0xaf,0x65,
+ 0x9b,0x9e,0x05,0xc6, 0x16,0xc0,0xa9,0x2e, 0x9a,0xf9,0x5d,0xfb, 0xde,0x6e,0xd6,0xc2,
+ 0x86,0xa1,0xa3,0x76, 0xdc,0xcc,0x74,0x6a, 0x08,0x23,0x83,0xbe, 0x1e,0x8d,0x90,0x45,
+ 0x2f,0x39,0x06,0x4c, 0xcf,0xc4,0x75,0xb4, 0x8e,0x44,0x73,0x7c, 0xa6,0xc3,0x8c,0xdd,
+ 0x2b,0xa0,0x5c,0xb5, 0xee,0xe7,0x83,0xbc, 0x8e,0x3d,0x55,0x17, 0x9a,0x35,0x94,0x45,
+ 0x2d,0xe2,0x83,0x65, 0xb3,0xfd,0xed,0xee, 0x18,0x2f,0x73,0x29, 0x09,0x0d,0x0e,0x86,
+ 0xe6,0x0c,0xae,0xbd, 0x66,0xaa,0x79,0x98, 0x51,0xfa,0x6e,0x07, 0xdd,0x4c,0x6d,0x58,
+ 0xc8,0x39,0xea,0x06, 0xfc,0xa6,0xd6,0xf9, 0x0c,0x2d,0x80,0x9f, 0x0c,0x08,0xd4,0x00,
+ 0x44,0x2a,0x0c,0xda, 0x22,0x1f,0xc8,0xcb, 0x7b,0x97,0xc3,0xd2, 0x92,0xdb,0xd5,0x62,
+ 0x5a,0x63,0x8c,0xb1, 0x3f,0xe5,0x37,0xd3, 0xda,0xda,0x29,0x65, 0x21,0x2a,0x56,0xdb,
+ 0x7a,0xb0,0x19,0xbe, 0xb5,0x0b,0x95,0xd9, 0xe7,0x3a,0x4a,0x3b, 0xc3,0x1a,0xdd,0x0a,
+ 0x11,0xb9,0xc7,0xc6, 0x46,0xb9,0xa6,0x91, 0x93,0x0f,0xe3,0xf0, 0x2c,0xfe,0x6d,0xff,
+ 0xc9,0xf8,0x30,0xd0, 0x3c,0x37,0xdb,0xb8, 0x27,0xf9,0xe5,0x27, 0x57,0x27,0xa9,0xa7,
+ 0x64,0x6a,0x7d,0xa4, 0xb9,0x99,0x88,0xaf, 0x19,0x01,0x2b,0x2e, 0x78,0xf3,0xe4,0x26,
+ 0xee,0x5b,0xac,0x09, 0x20,0x6f,0xbf,0xa6, 0xd3,0xc5,0xd6,0x39, 0x19,0x5d,0xe5,0xcb,
+ 0x25,0x0c,0x85,0x2b, 0xba,0x45,0xab,0x19, 0xad,0xf4,0xcd,0xa2, 0xb4,0xc3,0x43,0x14,
+ 0x0d,0x76,0x84,0x13, 0x30,0x61,0xe4,0xf6, 0xa2,0xeb,0x71,0xcd, 0xb5,0x5d,0x9c,0x03,
+ 0xb8,0x7e,0x06,0x64, 0xb7,0x29,0xe2,0xc6, 0xcc,0xba,0xfb,0xfe, 0xe2,0x72,0x23,0x62,
+ 0x43,0x37,0x50,0x10, 0xd4,0xab,0x51,0x25, 0x26,0x8d,0xf5,0xce, 0x3e,0xde,0xab,0x78,
+ 0xec,0xfd,0x6e,0xa0, 0xb3,0xaa,0xb7,0xdb, 0x73,0xdb,0xc8,0x9f, 0x05,0xbb,0xe3,0xee,
+ 0xb2,0x1a,0x29,0x09, 0xcf,0x35,0x73,0x95, 0xb7,0x7a,0xa3,0x0a, 0x0b,0x06,0x9e,0xcd,
+ 0x22,0xde,0x86,0x57, 0xca,0xac,0x6b,0x98, 0x27,0x58,0x3c,0x9a, 0x6b,0xe5,0x0c,0x00,
+ 0x5b,0x22,0x39,0xc8, 0x10,0x4c,0xf1,0x82, 0xcd,0x28,0x75,0x89, 0xcb,0x71,0xdc,0xf9,
+ 0x99,0xf0,0x77,0xf5, 0x1a,0x6f,0x10,0x78, 0xfb,0xeb,0x06,0x08, 0xd8,0xca,0xa4,0x8b,
+ 0x35,0x3d,0x3d,0xbb, 0xa4,0xd4,0x62,0x94, 0xae,0x1e,0x60,0xc4, 0x83,0x3c,0xa0,0x64,
+ 0x37,0x10,0x44,0x32, 0x1a,0x0e,0x82,0x66, 0x8a,0xff,0xc4,0x92, 0xa1,0xfc,0x2d,0x26,
+ 0x4e,0xbd,0x69,0x01, 0xfc,0x4f,0x8a,0x48, 0x14,0x84,0x26,0x09, 0x34,0x33,0xe7,0x41,
+ 0xf3,0x9c,0x92,0x4c, 0x0a,0x5c,0x0d,0xb1, 0x8f,0xe8,0x7d,0x09, 0xc4,0x44,0x43,0xc4,
+ 0xa5,0x27,0x66,0x66, 0x66,0x66,0x69,0x4b, 0x42,0x20,0x82,0x09, 0x20,0xc4,0x33,0x1f,
+ 0xaa,0xe4,0xa8,0x6f, 0x8c,0x3e,0x37,0xcf, 0x00,0x3b,0x80,0x5c, 0x25,0xb0,0x5c,0x76,
+ 0xa3,0x8b,0xb7,0xdb, 0xb6,0xfb,0x37,0xf0, 0xdc,0xa2,0x4b,0x5d, 0xc3,0xa2,0xc2,0x6e,
+ 0xc5,0x1d,0x7d,0x9f, 0x08,0x99,0xa5,0x35, 0x0f,0x77,0x54,0x8d, 0x17,0xd0,0xe5,0xcf,
+ 0x22,0x4d,0x00,0x66, 0xcb,0x21,0x87,0x36, 0x57,0xc4,0xee,0xa5, 0x1c,0xe4,0xd5,0x24,
+ 0xb1,0xce,0x2b,0xce, 0x6a,0x7d,0xad,0x79, 0xc5,0x85,0x96,0x5a, 0x0d,0x4d,0x2e,0x90,
+ 0x74,0x9c,0x74,0xbd, 0x04,0x69,0xc5,0xb8, 0x6b,0xe3,0x39,0x23, 0xce,0x8a,0x59,0xf0,
+ 0xa6,0xb6,0x35,0xcb, 0x1b,0xf7,0x67,0xe5, 0xc6,0x2d,0xec,0x8e, 0x60,0x42,0x11,0x89,
+ 0x77,0x16,0x6f,0x74, 0xae,0x26,0x30,0x87, 0xa5,0x33,0x0f,0x39, 0x5c,0x75,0xb2,0x47,
+ 0x4e,0xcf,0x09,0xb2, 0xfb,0x09,0x94,0x03, 0xe2,0xb3,0x5e,0x05, 0xa3,0x66,0xe4,0x0e,
+ 0x56,0x81,0x20,0xd9, 0x04,0x6b,0x43,0x18, 0xd7,0xb9,0x39,0x56, 0xce,0x17,0x2f,0x32,
+ 0xe6,0x04,0xf8,0x17, 0x5b,0xfd,0xfd,0xa6, 0x81,0x93,0xc2,0x31, 0x84,0x21,0x78,0xeb,
+ 0x9d,0xb6,0xdb,0x2c, 0x00,0x7c,0x44,0x08, 0x64,0x90,0x22,0x27, 0x10,0x39,0x3c,0x60,
+ 0xd8,0x53,0x28,0xe6, 0xed,0x3e,0x4f,0x00, 0x7f,0x50,0x78,0xdf, 0x72,0xfb,0x3b,0x5b,
+ 0xeb,0xd3,0x81,0x2d, 0xf5,0xc9,0x17,0xdf, 0xa5,0x87,0x04,0x8c, 0xcd,0xe6,0xe5,0x61,
+ 0x56,0x9b,0x4b,0x58, 0x7c,0x55,0x30,0x77, 0x20,0xe1,0x70,0x36, 0x08,0x6c,0xdd,0xd2,
+ 0x4e,0x2c,0xd4,0x6b, 0x8f,0x8d,0x5e,0x03, 0x45,0x63,0x3f,0x26, 0xd1,0x83,0xa9,0x94,
+ 0x4a,0x40,0xb5,0xd8, 0x51,0xb7,0x52,0xdc, 0xc5,0x3f,0xb6,0xe1, 0x5b,0xbd,0x25,0xfd,
+ 0x3e,0x3d,0x5c,0x93, 0x39,0xb9,0x4e,0x1f, 0x3b,0x25,0x30,0xca, 0x0a,0x31,0x05,0xb8,
+ 0x34,0x7c,0x81,0xe2, 0xe5,0x78,0x14,0xbc, 0x54,0x28,0xf8,0x79, 0x2b,0x1a,0xdd,0xb9,
+ 0x66,0x47,0xa2,0x77, 0x52,0xbf,0x44,0x8e, 0x31,0xb9,0xb6,0xd2, 0x76,0x38,0x14,0x6c,
+ 0x81,0xf6,0xf3,0xb6, 0x3c,0xdf,0x72,0xaa, 0xc7,0x70,0x05,0x27, 0x08,0x71,0x31,0x07,
+ 0x28,0xa5,0x17,0xea, 0xf5,0x1b,0x6d,0x4f, 0xcd,0xed,0x34,0xcd, 0xc1,0xa3,0x0d,0x23,
+ 0xf6,0x7a,0x91,0xf9, 0xfa,0x32,0x53,0xf8, 0x2b,0x95,0x5e,0xb8, 0xe6,0xb1,0x7f,0x11,
+ 0x4c,0xad,0xc4,0xbf, 0x67,0xe2,0x24,0x16, 0x2b,0x11,0xc7,0xfd, 0xda,0xb3,0xbb,0xa6,
+ 0xac,0x31,0x9c,0x72, 0xe2,0x6c,0x83,0xf2, 0xec,0x76,0xa4,0x0f, 0x93,0xcd,0xc9,0x08,
+ 0x60,0xa4,0x88,0x9b, 0x9b,0x40,0x18,0x94, 0xbe,0xa1,0x1f,0x07, 0xdc,0xad,0xdc,0x23,
+ 0xdd,0x39,0xcd,0x9f, 0x98,0x75,0x32,0x23, 0xf0,0xd4,0x28,0x42, 0x70,0x1d,0x71,0xd0,
+ 0xbf,0x27,0x9a,0x8a, 0x92,0xfe,0xbe,0xc0, 0xa1,0x8b,0x71,0x80, 0x09,0xee,0x73,0x2a,
+ 0xa0,0xc4,0x85,0x47, 0x36,0xba,0x3a,0x6e, 0x70,0xd7,0x9c,0x68, 0x7a,0xeb,0x22,0x3d,
+ 0x89,0x21,0x9e,0xcb, 0xf1,0x2c,0x96,0xba, 0x23,0x68,0xbe,0x43, 0x36,0x29,0xc6,0x96,
+ 0xc3,0x1e,0x02,0x09, 0x5c,0xe2,0x6b,0xcf, 0x7a,0x0f,0xaa,0xb8, 0x5c,0xc2,0x55,0x7c,
+ 0x19,0x3c,0xdb,0x0e, 0x44,0x45,0x27,0xbd, 0xaf,0x28,0x06,0x48, 0xe9,0x9a,0xc7,0x1c,
+ 0x1e,0x2d,0x37,0xce, 0x18,0x53,0x51,0x42, 0x67,0x51,0xc3,0xb0, 0xd1,0xcd,0x95,0xfd,
+ 0x6e,0x7b,0x86,0xa1, 0x17,0x56,0x64,0x0e, 0xd6,0xc9,0x0a,0x10, 0xe1,0xa3,0x36,0x79,
+ 0xd3,0xd0,0xc1,0xf8, 0x95,0x3e,0x72,0xa3, 0xc5,0x3e,0xef,0x9a, 0xe3,0x51,0x33,0x5d,
+ 0x8f,0x81,0xef,0x26, 0x6e,0x5f,0x75,0xf1, 0x7c,0xde,0x9a,0x74, 0x7b,0x18,0x86,0xd8,
+ 0x5f,0x33,0x20,0xf8, 0x2c,0x5b,0x76,0x76, 0x8d,0x67,0x98,0x1b, 0xd1,0xf1,0x93,0xfa,
+ 0x8f,0x70,0x2d,0xd7, 0x0b,0x8d,0xdb,0x5c, 0x64,0x44,0xa7,0x3f, 0xd2,0xf8,0xc4,0xa6,
+ 0xa6,0x77,0x87,0x72, 0x69,0xab,0x70,0xe2, 0x10,0xc8,0x42,0x98, 0xd2,0x16,0xb9,0x00,
+ 0xbb,0x8d,0x1f,0xf4, 0xbc,0xc5,0x4b,0xfc, 0x8d,0xd2,0x0e,0xdb, 0xc4,0x84,0x92,0xf0,
+ 0xf6,0x31,0x6b,0x53, 0x64,0xfb,0xf3,0x32, 0x78,0xd8,0x4b,0xf2, 0xea,0x34,0x86,0xba,
+ 0x66,0x66,0xb8,0x20, 0x3b,0x0e,0xf7,0x47, 0x23,0xfd,0x93,0x38, 0xdf,0x07,0xe0,0x64,
+ 0x6e,0x3c,0x6a,0x45, 0xdb,0x0e,0xbb,0xbc, 0xfc,0x3c,0xd8,0x58, 0xbf,0x44,0x80,0xa6,
+ 0x20,0x3f,0x53,0x0f, 0x43,0xfa,0x50,0x75, 0xec,0x5f,0x78,0x62, 0x6d,0x20,0x6c,0x52,
+ 0x4c,0xe8,0x9c,0x0c, 0x26,0x34,0x9b,0x21, 0x93,0x82,0xe3,0x89, 0x00,0xa7,0x10,0x52,
+ 0x2a,0xe5,0x9b,0x72, 0xfa,0x4e,0xae,0x01, 0xd4,0xc4,0xa3,0xe0, 0x75,0xab,0xe1,0x68,
+ 0xc5,0xfb,0xfd,0x0c, 0x0d,0x2e,0x27,0x81, 0xc7,0x89,0x0a,0xe5, 0xaa,0xc9,0x6c,0x84,
+ 0xb8,0xaa,0x20,0x8a, 0xbd,0x9f,0xb8,0x61, 0xcc,0xce,0xff,0x29, 0xf1,0x28,0x55,0xcd,
+ 0x5c,0x2b,0x31,0x02, 0x0c,0x76,0xbc,0x8b, 0x70,0x85,0x43,0x0f, 0x86,0xe9,0x6b,0xae,
+ 0xe5,0xb5,0x52,0xcb, 0xeb,0xc9,0xeb,0x3a, 0x3e,0x46,0xc6,0xe2, 0xa0,0xc2,0x70,0x35,
+ 0x58,0x88,0xcd,0xf6, 0x73,0x3c,0xe4,0x3b, 0x3d,0x7c,0xe3,0x09, 0x76,0x64,0x45,0x02,
+ 0x94,0x74,0xfa,0x4e, 0x7a,0x81,0xe9,0xfc, 0x1e,0x5b,0x38,0xc6, 0x8d,0x32,0xc8,0xdc,
+ 0x4a,0x52,0xca,0x61, 0x6a,0xe4,0x9e,0x00, 0xb6,0xa2,0x21,0x33, 0x91,0x88,0x37,0x3e,
+ 0x79,0xbf,0xb3,0x57, 0xe9,0xf5,0xb7,0xcd, 0x94,0x33,0x04,0x21, 0xb9,0xd7,0xe9,0xa0,
+ 0x42,0x05,0xf4,0x73, 0xd4,0x8c,0x4b,0x94, 0x17,0x30,0xc3,0xf3, 0x12,0x66,0xf2,0x64,
+ 0x0e,0xde,0xc6,0x42, 0x92,0x36,0x27,0xe3, 0x59,0x3d,0xa3,0xfb, 0xce,0x5f,0x0b,0x5d,
+ 0xcb,0xe5,0xeb,0xd6, 0x1b,0x42,0x8b,0x80, 0x66,0x51,0xdf,0xf2, 0xf6,0x42,0x6e,0x22,
+ 0x63,0x15,0xd3,0xed, 0x68,0x62,0xaa,0xb8, 0xad,0xbb,0x61,0xd8, 0x4d,0x82,0xf7,0x6d,
+ 0x73,0x0e,0x4d,0x06, 0xd7,0xb5,0xb0,0x39, 0x49,0xe6,0xc4,0xa5, 0xce,0xca,0x10,0x4d,
+ 0x00,0x93,0xcd,0xcd, 0x22,0x4d,0x52,0xdb, 0x55,0x88,0x83,0xde, 0x3e,0x4a,0x20,0xf2,
+ 0xd9,0x36,0x58,0x7a, 0x93,0x40,0xc0,0x68, 0x30,0x90,0xda,0x43, 0x68,0xd1,0x11,0x09,
+ 0xa1,0x04,0x21,0x09, 0x04,0x00,0x80,0x01, 0x08,0x00,0x12,0x00, 0x50,0x81,0xb1,0x82,
+ 0x44,0x98,0x43,0x14, 0x31,0x62,0xee,0xf0, 0x09,0x24,0x13,0x65, 0x0c,0xe0,0x40,0xa0,
+ 0x43,0x68,0xac,0x07, 0x59,0xfa,0x00,0x6a, 0x6c,0x03,0x08,0x06, 0x1e,0x9f,0xe4,0xa0,
+ 0xd7,0x27,0xeb,0x97, 0x19,0xaf,0xa3,0x9b, 0x06,0xb1,0x6f,0x34, 0x43,0x23,0xf4,0x0f,
+ 0x01,0x57,0x0e,0x7f, 0xa6,0xab,0xd8,0x65, 0xbc,0x0b,0xf0,0xb6, 0x7f,0x3a,0x57,0x77,
+ 0x9a,0x3d,0x5c,0xf4, 0x55,0x7e,0xbe,0xe2, 0x74,0x67,0xbe,0x6f, 0x51,0xfc,0x14,0x23,
+ 0xcc,0xb7,0x1b,0x4c, 0x42,0x34,0xcc,0xce, 0x7b,0xfb,0xb0,0x1b, 0xd6,0x8a,0xcd,0x54,
+ 0xd1,0xc0,0x0b,0xbd, 0xdb,0xd2,0x4a,0x65, 0x3a,0xa7,0xa7,0xdf, 0x7c,0x8a,0xf1,0xb5,
+ 0x15,0x2b,0x1e,0x4b, 0x77,0x4e,0x82,0x77, 0xef,0xd8,0x6c,0x3f, 0x07,0x3d,0xe4,0x66,
+ 0x33,0xa8,0xad,0x2c, 0xb5,0xa6,0x94,0xf4, 0x0e,0x22,0x45,0xad, 0xeb,0x4e,0x4d,0x47,
+ 0x6b,0xae,0x4f,0x21, 0xa4,0xcb,0xc9,0x54, 0x2e,0x27,0x11,0xf7, 0xa2,0x5c,0xc1,0xdc,
+ 0x40,0x96,0xec,0x5a, 0xc0,0x01,0xa9,0x8c, 0xb2,0xf1,0xd8,0x64, 0xba,0x28,0x22,0xf3,
+ 0xb4,0xd0,0xe5,0x04, 0x3f,0xe3,0xd6,0xc7, 0xfe,0x3c,0x23,0x90, 0x52,0xae,0x58,0xd0,
+ 0x5c,0x9a,0xe8,0xf9, 0x3b,0x7e,0xe8,0xb0, 0x9d,0x16,0xae,0xcb, 0xe0,0xc4,0xaf,0x0b,
+ 0xdb,0x76,0x64,0xb7, 0xf3,0x99,0x18,0xa9, 0x9e,0x72,0x93,0x24, 0xe2,0x32,0x64,0xc6,
+ 0x9b,0xc0,0xff,0x21, 0xe6,0xf6,0x5f,0x63, 0xad,0xe8,0x3b,0x8b, 0xd7,0x11,0x9f,0x64,
+ 0x05,0x98,0x1e,0xb2, 0x0c,0xce,0x1c,0x61, 0x51,0x57,0xca,0xa6, 0x47,0xf3,0x41,0x1e,
+ 0x63,0x10,0x58,0xc4, 0xc3,0x44,0xa2,0xe1, 0x75,0xcb,0x93,0xaa, 0xd3,0x54,0x50,0xc5,
+ 0x17,0x06,0x24,0x0b, 0x3e,0x62,0xa1,0x60, 0xeb,0xee,0xec,0x65, 0x67,0x48,0x5d,0x13,
+ 0xc8,0x22,0x40,0x9b, 0x7a,0x59,0x35,0x26, 0x35,0x42,0xec,0x55, 0x88,0x02,0xf6,0xdb,
+ 0xa8,0xba,0x6e,0x8d, 0xaa,0xe9,0x5b,0xae, 0x6a,0x24,0x8b,0xc9, 0xc7,0xc3,0xe3,0x07,
+ 0x44,0x84,0xe9,0x88, 0x58,0x0e,0x29,0xad, 0x10,0xd1,0xaa,0x6b, 0x5a,0xd2,0xb2,0xc0,
+ 0xc5,0x76,0xb9,0xaf, 0xc1,0x04,0x8b,0x88, 0xa7,0x98,0x02,0x38, 0x53,0xd4,0xbb,0xc7,
+ 0xaa,0xe6,0xe9,0x52, 0xcb,0x63,0xe3,0xf6, 0x23,0x24,0xca,0x50, 0x8c,0x75,0x08,0xa3,
+ 0xba,0x48,0x3a,0x90, 0x69,0xb7,0x66,0x12, 0x04,0x99,0x32,0x64, 0x96,0x04,0x60,0x51,
+ 0xdb,0x14,0x09,0x29, 0x2a,0x04,0x92,0xe5, 0x30,0x40,0xd4,0x92, 0xd3,0x06,0xab,0x07,
+ 0x1e,0x31,0xf6,0xcd, 0x41,0x2a,0xe0,0x2b, 0x30,0xec,0x58,0x8d, 0x23,0x10,0x52,0xf0,
+ 0x13,0xa5,0x91,0x28, 0x04,0xd8,0x01,0x55, 0xbb,0xd3,0x65,0x9c, 0xbb,0x37,0x28,0xae,
+ 0x0d,0xbf,0x54,0xec, 0x96,0x30,0x14,0x14, 0x34,0x92,0x4e,0x34, 0xa5,0x04,0x30,0x94,
+ 0x35,0xe4,0x05,0x19, 0x54,0x09,0x7b,0xfb, 0x12,0xb5,0x32,0xb4, 0x99,0x26,0x08,0x9c,
+ 0xa8,0x8b,0x91,0x31, 0x23,0xbd,0xa6,0x29, 0x82,0xd4,0x94,0x0a, 0xac,0x3b,0x32,0x98,
+ 0x88,0x6d,0xde,0x1a, 0xa0,0x61,0x2e,0xb2, 0x4a,0xfd,0x98,0x1d, 0x51,0x4a,0x00,0xa5,
+ 0x84,0xa4,0xc6,0xdb, 0x45,0x75,0x2b,0xac, 0x27,0x31,0x0a,0xc9, 0x28,0x4a,0x98,0x00,
+ 0xb1,0xb6,0x81,0x7b, 0x86,0x80,0xbc,0x9b, 0x66,0x96,0xcc,0xa4, 0x90,0x50,0xc4,0x1c,
+ 0xc3,0x47,0x13,0xd9, 0xc0,0x96,0x25,0xa5, 0x4b,0x49,0x5b,0xec, 0xb2,0x69,0x54,0xd1,
+ 0x03,0x40,0xd2,0x45, 0x35,0x40,0x20,0xfa, 0x7e,0xee,0x10,0x82, 0xff,0x63,0x1e,0x0b,
+ 0x16,0x03,0x0a,0x98, 0x09,0x36,0xa7,0xd6, 0x40,0x7c,0xfb,0x17, 0xaa,0xd1,0xfd,0x48,
+ 0xa7,0xda,0x3e,0xa1, 0xd1,0xf1,0xef,0x92, 0x48,0xa4,0x7a,0x1c, 0x4c,0x69,0x14,0xb4,
+ 0x81,0x00,0xcc,0x19, 0x5b,0x51,0xdb,0x70, 0x14,0x10,0xfb,0x6d, 0x5e,0xf1,0x85,0x73,
+ 0xf7,0x1e,0x6d,0xec, 0x82,0xb0,0xe6,0x21, 0xfe,0x97,0x56,0xca, 0x0b,0x7d,0xfd,0xd1,
+ 0x41,0xa8,0x26,0x69, 0xfd,0xd4,0xb2,0xd4, 0xe3,0x5c,0x37,0x32, 0x77,0x97,0xcd,0xbb,
+ 0x14,0x4a,0x0a,0x28, 0x2e,0x09,0xe0,0xce, 0xe6,0xa1,0x37,0xa0, 0xf8,0x6f,0x5e,0x80,
+ 0x80,0xde,0xe9,0xfa, 0x01,0x9e,0x11,0xa1, 0xaf,0xe5,0x10,0x1f, 0x71,0x8c,0x6d,0xaa,
+ 0x47,0xaa,0x67,0x79, 0xe3,0xee,0xac,0xfe, 0xfd,0x0c,0x06,0x02, 0x8c,0x09,0x19,0x2c,
+ 0x00,0x8c,0x0e,0x6d, 0x90,0x6f,0xf3,0x39, 0x1f,0xa7,0xff,0xf1, 0x77,0x24,0x53,0x85,
+ 0x09,0x06,0x5c,0xe1, 0x29,0xb0,
+ // 0x5cc6 = 23750 data bytes (33%)
+};
+
+static BZ2Manager_t lecode_usa_bin_mgr
+ = { lecode_usa_bin_bz2, sizeof(lecode_usa_bin_bz2), 0, 0 };
+
+//-----------------------------------------------------------------------------------
+
+static const u8 lecode_jap_bin_bz2[] = // pool/ref/lecode/r32/lecode-JAP.bin
+{
+ // decompressed size: 0x117a0 = 71584 bytes
+ 0x00,0x01,0x17,0xa0,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xee,0x07, 0x6e,0x07,0x00,0x29,
+ 0xa7,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xe0, 0x4e,0xbb,0xee,0x4f, 0xac,0xfb,0xde,0xb7, 0xbc,0xe6,0xd8,0x95,
+ 0x27,0xd8,0x67,0x3d, 0xb9,0x63,0x36,0xb8, 0xdd,0x5d,0xb6,0x77, 0xb6,0xbc,0xfb,0xba,
+ 0xef,0xae,0xeb,0xb5, 0x7a,0x79,0xd8,0xc2, 0x7b,0x32,0xa1,0x28, 0xb7,0xad,0xbd,0xe0,
+ 0x6f,0xbb,0xde,0x25, 0xd1,0x46,0xaf,0xb3, 0x9c,0xda,0x06,0x8f, 0xb7,0x77,0x5a,0xa3,
+ 0xee,0xdc,0x3a,0xf5, 0xdf,0x50,0xbe,0xec, 0x77,0xb7,0x7d,0x3e, 0x77,0xc1,0x2f,0x4a,
+ 0x52,0xa7,0xbe,0xee, 0x77,0xa7,0x35,0x80, 0x4e,0xda,0xf6,0xfa, 0xf5,0xf3,0xde,0x7b,
+ 0x5b,0x3d,0x06,0xde, 0xfa,0x8b,0xef,0x65, 0x71,0x6e,0xf0,0x13, 0xdf,0x4f,0xbd,0xbd,
+ 0xf7,0xdb,0xbd,0x75, 0xf4,0x7a,0xaf,0x7b, 0x5b,0x7b,0x6d,0x5d, 0xb0,0x3e,0xbb,0xdf,
+ 0x70,0xdb,0x7d,0x5d, 0x55,0xda,0x9c,0x76, 0xe5,0xf1,0xef,0x9e, 0x4b,0xce,0x66,0xfb,
+ 0x15,0x57,0xb6,0x87, 0x1f,0x76,0xbe,0x32, 0x1e,0x8f,0xa8,0x0b, 0x5b,0x7b,0xcb,0xe5,
+ 0xf5,0xea,0xda,0x7d, 0x7c,0xbe,0xfb,0xbb, 0x25,0xf7,0x7d,0xc7, 0x4a,0x7b,0xce,0xfb,
+ 0xdc,0xf7,0xde,0x75, 0xc1,0xa6,0xc5,0x8f, 0x77,0xd0,0x2b,0xbd, 0xee,0xdd,0xf7,0xcf,
+ 0x69,0xd5,0x03,0xe9, 0xef,0xbe,0xfa,0xb5, 0xde,0x9b,0x34,0x18, 0x37,0xdd,0xb8,0x6f,
+ 0xb7,0xda,0xab,0x42, 0x0e,0xbc,0x34,0x44, 0x08,0x02,0x60,0x8d, 0x00,0x0d,0x00,0x01,
+ 0x18,0x6a,0x30,0x4d, 0x0d,0x34,0x34,0x34, 0x64,0x69,0xa0,0x0d, 0x03,0x46,0x89,0xe9,
+ 0xa1,0xa1,0x3d,0x09, 0x89,0x82,0x60,0x26, 0x13,0x69,0x3d,0x26, 0x13,0xd4,0xc9,0x89,
+ 0x93,0x4c,0x24,0xf0, 0x4d,0x32,0x19,0x0a, 0x9f,0xe9,0x4f,0xd4, 0xf2,0x53,0xf2,0x4f,
+ 0x46,0x49,0x9a,0x6a, 0x60,0x9a,0x69,0x3c, 0xd2,0x9e,0x93,0xc9, 0xb5,0x1a,0x50,0x6a,
+ 0x68,0x80,0x20,0x00, 0x98,0x13,0x00,0x00, 0x13,0x20,0x00,0x00, 0x98,0x13,0x23,0x44,
+ 0xc0,0x23,0x23,0x26, 0x1a,0x9a,0x64,0x68, 0x0c,0xa6,0x4c,0x4f, 0x4d,0x23,0x4f,0x46,
+ 0x9a,0x9a,0x31,0x34, 0xda,0x99,0x34,0xd1, 0x1f,0xa2,0x9b,0x48, 0xf4,0x99,0x93,0x51,
+ 0xb4,0x8f,0xd2,0x31, 0x32,0x8f,0x4f,0x51, 0xa4,0xf4,0x4f,0x50, 0xd1,0xea,0x69,0xa6,
+ 0x9e,0xa3,0x47,0xa4, 0xda,0x23,0x6a,0x68, 0x35,0x34,0x20,0x34, 0x01,0x32,0x34,0x09,
+ 0x84,0x1a,0x13,0x13, 0x08,0xc1,0x31,0x35, 0x53,0xf0,0xd2,0x6d, 0x34,0x98,0x03,0x48,
+ 0xcd,0x26,0x68,0x9b, 0x52,0x79,0x4f,0x41, 0xa5,0x1f,0x95,0x3c, 0xd4,0xcd,0x34,0x9a,
+ 0x4f,0x49,0xe1,0x35, 0x3c,0xa6,0x9a,0x7a, 0x9a,0x62,0x6f,0x54, 0xf5,0x3d,0x4d,0x3d,
+ 0x4c,0x27,0x92,0x79, 0x1a,0x8f,0x04,0xd4, 0xf5,0x3d,0x35,0x3d, 0x0c,0x91,0xa3,0x13,
+ 0x11,0xea,0x68,0xd1, 0xb4,0xd4,0x7a,0x4f, 0x44,0xd0,0xd1,0xa0, 0x1a,0x68,0x12,0x13,
+ 0x41,0x00,0x98,0x53, 0xc0,0x4d,0x34,0x1a, 0x69,0x36,0x85,0x36, 0x98,0xa6,0x69,0xe9,
+ 0x4c,0x69,0x34,0x99, 0xea,0x34,0xd3,0xd4, 0xcd,0xaa,0x9e,0x29, 0xe8,0x99,0x1e,0x35,
+ 0x26,0xc8,0x8f,0xd4, 0xd1,0xa1,0x3d,0x13, 0xd4,0xf4,0x8f,0x50, 0xd9,0x26,0x02,0x7a,
+ 0x40,0xda,0x26,0x04, 0x0f,0x28,0x7a,0x4f, 0x28,0xda,0x80,0xc9, 0x84,0xc4,0xcd,0x43,
+ 0x47,0xa8,0xd3,0xd4, 0x06,0x4d,0x0d,0x0d, 0x00,0xc8,0x0d,0x3d, 0x28,0x93,0x41,0x32,
+ 0x02,0xa7,0xe6,0x86, 0x95,0x3d,0x94,0xf2, 0x14,0xd8,0x09,0xa9, 0xfa,0xa7,0x85,0x3d,
+ 0x4f,0xd4,0x83,0xc0, 0xa6,0x8f,0x4d,0x47, 0xa9,0xe9,0x94,0x66, 0xa0,0x7a,0x35,0x3d,
+ 0x26,0x8f,0x53,0x69, 0x3d,0x4d,0x34,0x1a, 0x6d,0x26,0x87,0x92, 0x64,0xf5,0x34,0xc4,
+ 0x0d,0x03,0x43,0x4f, 0x28,0xd0,0x0d,0x1a, 0x34,0x00,0xf2,0x9e, 0xa6,0x9a,0x1a,0x00,
+ 0xf5,0x00,0x64,0x68, 0x34,0x00,0xf5,0x32, 0x1a,0x00,0x12,0x24, 0x42,0x02,0x1a,0x01,
+ 0x32,0x62,0x68,0x00, 0xc8,0x09,0x81,0x34, 0x64,0xd3,0x09,0x84, 0x68,0xd1,0xa0,0x6a,
+ 0x6d,0x13,0x09,0x80, 0x9e,0xa6,0x9a,0x61, 0x3d,0x4d,0x31,0x34, 0xc4,0x99,0x91,0xa3,
+ 0x4c,0x4c,0x10,0xd1, 0xa6,0x83,0x45,0x37, 0x88,0x62,0x6a,0x7a, 0x31,0x4d,0xa4,0xd3,
+ 0x47,0xa5,0x34,0x79, 0x34,0xf4,0x99,0x23, 0xc6,0x89,0xa8,0x78, 0xa1,0xe0,0xa7,0x99,
+ 0x4c,0xa7,0xea,0x41, 0x6a,0x9a,0xd7,0xf3, 0x79,0xbc,0x81,0xd6, 0xf3,0x91,0xd9,0xda,
+ 0x6d,0x13,0x1d,0x46, 0x1f,0xfc,0x77,0x3a, 0x2f,0x97,0x05,0x2b, 0x24,0x5c,0xd7,0x3a,
+ 0x46,0x0b,0x82,0x82, 0x05,0xd6,0x2e,0x4c, 0xc1,0x97,0xbf,0x36, 0x61,0x09,0x8a,0xb5,
+ 0x10,0xa1,0x80,0x8d, 0xb3,0x00,0x2e,0xda, 0x49,0x65,0xd1,0xa6, 0xaa,0xa1,0x20,0xac,
+ 0xe1,0x04,0x28,0x39, 0x84,0x41,0x20,0xe6, 0x00,0xec,0xed,0xe0, 0x24,0x0d,0x18,0xa3,
+ 0x92,0xe9,0x61,0x22, 0x81,0x4e,0x9e,0x73, 0x4d,0x29,0xd4,0x27, 0xbb,0xcd,0xcc,0xc4,
+ 0x76,0xc2,0xd6,0x6c, 0x58,0x87,0x3d,0xb2, 0xd7,0x16,0xac,0x4e, 0x4e,0x2c,0xb3,0xcc,
+ 0xb8,0x91,0x66,0xd4, 0x4b,0x99,0xd5,0x80, 0x85,0x77,0x4e,0xc5, 0xde,0x02,0x9a,0xdd,
+ 0x3d,0xd6,0x06,0x06, 0x0e,0x15,0x09,0x9a, 0xe0,0x3d,0x48,0x38, 0x9e,0x3b,0x60,0x74,
+ 0x01,0x88,0x5d,0x34, 0xe1,0x8c,0xaa,0x55, 0xfa,0xbb,0x17,0x67, 0x59,0xc2,0xad,0x5e,
+ 0xbc,0x15,0xe0,0x21, 0x08,0x4b,0x47,0xb7, 0xcf,0x49,0x21,0x19, 0xec,0xe4,0x01,0x4b,
+ 0x7c,0x93,0x80,0xc6, 0x65,0x81,0x95,0x3e, 0x4a,0x85,0x0b,0x66, 0xc4,0x63,0x33,0x1d,
+ 0x95,0xe8,0x22,0x1c, 0x0d,0x56,0x64,0x99, 0x26,0xb1,0x79,0xa8, 0x62,0x12,0x42,0x93,
+ 0x68,0x8e,0xd0,0xd7, 0x6e,0x7e,0x16,0xa3, 0xfa,0x6a,0xb8,0xd8, 0x55,0x40,0x1c,0x80,
+ 0x1c,0x80,0x3b,0x1f, 0x37,0xa0,0xe5,0xb5, 0xbf,0xe3,0xf8,0xf1, 0x9e,0xcf,0xe9,0x5f,
+ 0xfb,0x56,0x5b,0x43, 0x18,0xda,0x67,0xae, 0xa3,0xc8,0x66,0x69, 0xa3,0xbc,0x61,0xa8,
+ 0x68,0xcd,0xd4,0x40, 0x7a,0xdf,0xed,0xfc, 0xb3,0x1f,0xed,0xfc, 0x9d,0x2a,0xb0,0x20,
+ 0x6e,0xfc,0x10,0x38, 0x21,0xc4,0xf8,0x9f, 0x3b,0xce,0x09,0x9a, 0x37,0x90,0x5a,0x97,
+ 0x96,0x7d,0xf7,0x94, 0xf2,0x38,0x14,0x91, 0x67,0x15,0xcb,0x67, 0x57,0xe6,0x3d,0xe2,
+ 0x5c,0xfc,0xaf,0x95, 0x27,0xa9,0x17,0x4d, 0x06,0x3f,0x9a,0x12, 0xfd,0x44,0x63,0x03,
+ 0x01,0x00,0x26,0x0f, 0x93,0xef,0x79,0x16, 0x74,0x7d,0xad,0xc2, 0x86,0x78,0xbb,0xe3,
+ 0x32,0x9b,0x10,0xd3, 0xdc,0x15,0xfa,0xee, 0x5b,0x1f,0xea,0xa2, 0x6b,0x9b,0xfc,0x65,
+ 0x17,0xf2,0x55,0x2f, 0x10,0x11,0x72,0xb6, 0xae,0x08,0xb5,0x46, 0xd1,0xdb,0x96,0xa6,
+ 0x01,0x9b,0x16,0x5c, 0x3c,0x18,0xe4,0x23, 0x61,0x73,0x25,0x87, 0x35,0x46,0x55,0xd5,
+ 0x9e,0xe0,0xe7,0x81, 0x54,0x8c,0xca,0x56, 0xa7,0xd5,0x47,0xf1, 0xc8,0xdd,0x32,0x38,
+ 0x39,0xcc,0x24,0xf2, 0x81,0xd3,0x07,0x24, 0xb6,0x73,0xda,0x26, 0xad,0x99,0xf2,0x92,
+ 0xa9,0x6d,0xe6,0x86, 0x80,0xc2,0xbe,0xc1, 0xe7,0xa8,0x06,0xda, 0x4c,0x85,0x82,0x65,
+ 0xf6,0x77,0x4a,0xee, 0x35,0x6d,0xa5,0x84, 0xe5,0xee,0x78,0x74, 0x4d,0x62,0x3a,0x8d,
+ 0x87,0x63,0x26,0x09, 0x96,0x57,0x41,0x48, 0x5f,0xc2,0x85,0xc5, 0x0c,0xb8,0x03,0xe1,
+ 0x8b,0x86,0x1b,0x04, 0xc8,0x0e,0xfc,0xad, 0x8c,0xf0,0x44,0x3e, 0x31,0x71,0x08,0x53,
+ 0x2a,0x97,0x3e,0x43, 0xaf,0xd9,0x02,0xb0, 0x04,0x04,0xc3,0xaa, 0xb9,0x8a,0xe4,0x02,
+ 0x42,0x3e,0x76,0x7c, 0xbe,0x7e,0x35,0x22, 0x32,0xdf,0x76,0xd1, 0xbc,0xf1,0x54,0x70,
+ 0x6a,0xf5,0x37,0xfb, 0x73,0x19,0x56,0xe3, 0x62,0xbe,0x67,0x32, 0x49,0xca,0xa6,0x1f,
+ 0x19,0xac,0x24,0xf4, 0x8d,0x19,0xf7,0x46, 0x2f,0x37,0x16,0x5c, 0x63,0x75,0x74,0x5d,
+ 0x54,0x15,0x66,0x0c, 0x4f,0x8b,0x62,0x04, 0x97,0x7b,0xd0,0xc8, 0x30,0x46,0xf9,0xd5,
+ 0x97,0x08,0xe1,0x96, 0xf8,0xbe,0x79,0xc5, 0x78,0xc2,0x4a,0x7f, 0x01,0x96,0x97,0x17,
+ 0x96,0xe7,0xeb,0xb2, 0x67,0xa4,0x68,0xbd, 0xec,0xfc,0xaf,0x42, 0x85,0x86,0xae,0x5d,
+ 0x4f,0x2f,0x00,0xef, 0x0a,0x2f,0xdc,0x5e, 0xb0,0x1d,0xd2,0xfd, 0x63,0x9a,0xd4,0x72,
+ 0x5b,0x3b,0x2e,0xec, 0x9f,0xe6,0x25,0x9f, 0x0a,0x20,0xb3,0xd6, 0x3a,0xdb,0x27,0x07,
+ 0x6c,0x2b,0xb4,0x38, 0x47,0x4a,0x16,0x4a, 0x6a,0xc5,0x16,0xce, 0xa2,0xe3,0xb9,0x01,
+ 0xaf,0x9e,0x2e,0x3c, 0x49,0x5c,0xb5,0x66, 0x2c,0xb5,0xf9,0xc7, 0x8a,0x1c,0x66,0xb1,
+ 0xe6,0x16,0x04,0xa9, 0x95,0x1e,0x6f,0xcd, 0x4d,0x17,0x16,0x10, 0x4a,0x73,0x98,0x65,
+ 0x3c,0x23,0x71,0x67, 0x09,0x74,0x18,0x09, 0xe3,0x6a,0xe2,0x25, 0x1e,0xe2,0xc6,0x5d,
+ 0xb6,0x5b,0x46,0x0a, 0x7d,0x86,0x98,0x80, 0xdb,0x4b,0x93,0x37, 0x14,0x35,0x17,0x53,
+ 0xae,0x86,0x7d,0xa5, 0x78,0x1b,0x4a,0x39, 0x12,0x3c,0xbf,0x20, 0x8b,0x38,0xd3,0xbf,
+ 0xdb,0x2e,0x54,0xbd, 0x11,0xd8,0x55,0xec, 0x69,0xa9,0x00,0x97, 0x39,0xec,0x3b,0x2e,
+ 0x5a,0x6a,0xed,0x88, 0x45,0xa3,0x80,0x43, 0x1f,0xc0,0x1c,0x90, 0xcd,0x74,0xb3,0xcb,
+ 0x0c,0x81,0xac,0x45, 0xaa,0xf7,0x95,0xb7, 0xcf,0x1d,0x47,0xdf, 0x84,0xd7,0xfe,0xd6,
+ 0x1d,0x2c,0xe9,0x68, 0xc4,0x4e,0xee,0x98, 0xac,0x40,0x15,0xf5, 0x67,0xba,0x17,0x68,
+ 0x2d,0xb5,0x8a,0xcb, 0x6c,0xe5,0xf4,0x78, 0xcb,0x63,0x9d,0xb3, 0x04,0x57,0x3d,0x4b,
+ 0x28,0xec,0xe8,0x3b, 0x75,0x84,0xcb,0x41, 0x5a,0x2b,0x9d,0x03, 0x5d,0x6e,0x97,0x7f,
+ 0x0b,0x10,0xbe,0x3c, 0x55,0xc7,0x4d,0x16, 0xea,0x4e,0xc5,0xd6, 0xb6,0x49,0xc0,0x92,
+ 0x95,0x4b,0x36,0xd4, 0x6c,0x13,0xb5,0xe0, 0x6e,0x43,0x00,0x98, 0x4a,0xd5,0xa7,0x2b,
+ 0xd2,0x7a,0x1c,0xdc, 0xc7,0x0c,0x05,0xcd, 0x36,0x1c,0x17,0xc5, 0x9d,0xd6,0x56,0xaa,
+ 0xe8,0xd9,0xae,0x03, 0xf0,0x4c,0xa1,0x6a, 0x97,0xbc,0xf8,0x56, 0xf0,0xc6,0x1a,0x2a,
+ 0x9e,0x26,0x43,0xb7, 0x58,0x19,0xd4,0xd3, 0x52,0x13,0x48,0x05, 0xa7,0xc9,0x74,0x95,
+ 0x0d,0x56,0x18,0x4b, 0x33,0xcf,0x70,0x53, 0x34,0x26,0x9a,0x13, 0xe0,0x2e,0xf9,0x85,
+ 0x7a,0x0a,0x79,0xc9, 0x24,0x21,0x08,0x50, 0xa9,0x70,0x47,0x5f, 0x74,0xd8,0x69,0x57,
+ 0x88,0x2d,0xd0,0x35, 0xa7,0x3f,0x7b,0x76, 0xfa,0x20,0x2b,0xf6, 0xb2,0x12,0xbb,0x79,
+ 0x76,0xa0,0x61,0xc4, 0x61,0xfd,0x43,0x13, 0xa9,0xef,0x39,0x87, 0x5a,0x10,0x61,0x60,
+ 0xbc,0xb2,0x07,0x02, 0x1d,0x9c,0x6a,0x76, 0xac,0x61,0xd1,0xb7, 0x8f,0x11,0x53,0x27,
+ 0x05,0x47,0xe1,0x20, 0xb5,0x98,0x91,0x50, 0xc7,0x14,0x73,0xae, 0xe3,0x69,0x7a,0xa0,
+ 0xd8,0xca,0xc0,0x8f, 0x47,0x01,0xd8,0xe9, 0x1d,0x4b,0xdf,0xa0, 0xca,0xd2,0xf7,0xb9,
+ 0x1d,0x53,0xb1,0x30, 0x60,0x62,0xd5,0x24, 0x49,0x56,0xd2,0x07, 0x97,0xba,0x14,0xa6,
+ 0xe1,0x42,0x99,0x52, 0x6a,0x04,0x69,0x62, 0x21,0xc4,0xa2,0x9c, 0xa4,0x81,0x0d,0xfc,
+ 0x37,0xa2,0xd8,0x0e, 0xbe,0xe2,0xc9,0x5a, 0x38,0x23,0x9d,0x21, 0x24,0x9d,0xfb,0x43,
+ 0x0e,0xf3,0x91,0x9d, 0xd5,0x7d,0x7e,0x6b, 0x54,0xb2,0x70,0x6f, 0x24,0x9b,0x4a,0xa9,
+ 0x85,0x8a,0x17,0x4c, 0x54,0x94,0x1c,0x3a, 0x9f,0x36,0xaf,0x42, 0x79,0xad,0x6d,0x22,
+ 0x16,0xb0,0xc3,0x07, 0x10,0x05,0xd4,0xce, 0x5f,0x63,0x70,0x8d, 0x1c,0x5d,0x5b,0x59,
+ 0x0a,0x9c,0x39,0xeb, 0xdf,0xcf,0xa5,0x57, 0x73,0x76,0xad,0x63, 0x37,0xf6,0x9c,0x71,
+ 0xc4,0xfd,0xdf,0x8b, 0x8e,0x6c,0x12,0x99, 0xf9,0x77,0x48,0xaa, 0x90,0xa3,0x14,0xa1,
+ 0x14,0xdc,0x2e,0x76, 0x6b,0xc4,0xe9,0xfe, 0x3c,0x59,0xd2,0x46, 0xb0,0x33,0x66,0xbb,
+ 0xda,0x49,0xcd,0x87, 0x81,0x48,0x3d,0xb5, 0x14,0xe3,0x16,0x9c, 0x2c,0xd7,0x95,0xa0,
+ 0xcd,0xd9,0x53,0xca, 0xea,0x92,0xf0,0x72, 0xd3,0x7d,0x26,0x06, 0xd6,0x37,0xd4,0x6d,
+ 0xf9,0x9e,0x9b,0x39, 0xae,0x15,0x0c,0xf4, 0xcf,0x46,0x8d,0x5c, 0x06,0x72,0x93,0x4d,
+ 0x1e,0xdb,0xe3,0xae, 0x17,0xe7,0xd2,0xbc, 0xe4,0x31,0x2b,0x4a, 0x88,0xcf,0x65,0x8a,
+ 0x2a,0x9d,0x31,0x45, 0xab,0x8e,0xdb,0x5e, 0xb8,0x50,0x7b,0x44, 0x49,0xbb,0x0a,0x60,
+ 0xca,0x19,0xd6,0x18, 0x44,0xd1,0x2a,0xb3, 0x33,0x32,0xbf,0xba, 0x46,0x8c,0x0f,0x72,
+ 0x6d,0xdd,0x95,0x9b, 0xea,0x79,0xf8,0x9e, 0xff,0x1e,0x96,0x75, 0xab,0x7d,0x0a,0x84,
+ 0x8d,0xdb,0x89,0x12, 0x06,0x77,0x7f,0xee, 0x29,0x32,0xc1,0xb2, 0x43,0xa9,0x8f,0xe8,
+ 0xba,0xf7,0x47,0x8b, 0xb2,0xc1,0xe6,0x4e, 0xec,0x98,0x9d,0x34, 0x1d,0xda,0xf9,0x5a,
+ 0x91,0x2c,0xce,0xfa, 0x46,0x56,0x03,0x91, 0x15,0x39,0x71,0xd8, 0x71,0x4c,0x21,0xd7,
+ 0x93,0xc2,0xbb,0xf7, 0x2b,0xc2,0x05,0x62, 0x5b,0x26,0x04,0x06, 0x7b,0x94,0x62,0x17,
+ 0xac,0x44,0x33,0xc6, 0xe1,0x79,0x35,0xb8, 0x48,0x6e,0x4e,0x33, 0x76,0xa8,0xca,0x22,
+ 0xb9,0x0c,0xc4,0xcd, 0x11,0x76,0x77,0x0c, 0x63,0x19,0xaa,0x96, 0x8e,0x00,0x4f,0xbd,
+ 0x78,0xcd,0x91,0xa9, 0xad,0xf8,0x87,0x25, 0x48,0x08,0x65,0x1d, 0xe3,0x98,0x1d,0xbc,
+ 0x18,0x91,0x52,0xf6, 0xc3,0xdb,0xea,0x86, 0x4c,0x50,0x3d,0x01, 0xa4,0x90,0x21,0x14,
+ 0x6a,0xd7,0x59,0x1b, 0xe1,0xc7,0x89,0x75, 0xad,0xe8,0x8f,0x0c, 0x37,0xbb,0xbd,0x48,
+ 0x9c,0x03,0x22,0xff, 0x37,0x1b,0x4e,0xac, 0x35,0x8d,0x29,0x0d, 0xbd,0x5d,0xe6,0xc3,
+ 0x35,0xc0,0xc6,0xef, 0x2a,0xd7,0x0b,0x4b, 0x02,0xa1,0xf7,0xfd, 0xcf,0x16,0xe3,0x2d,
+ 0xa0,0x28,0xe6,0x3d, 0x0b,0xd8,0x9f,0xb9, 0x62,0x17,0x5f,0xae, 0x4a,0xed,0x80,0xbe,
+ 0x84,0x7e,0x73,0x0a, 0x0a,0x92,0xca,0x44, 0xf0,0xc4,0x63,0x18, 0xc6,0x50,0x03,0x29,
+ 0x2d,0x5b,0xc9,0x21, 0x04,0x7b,0xfa,0xc7, 0x80,0x67,0xe8,0xd5, 0x0e,0x43,0x32,0x77,
+ 0x08,0x40,0x61,0xa8, 0x71,0x3b,0x72,0xe4, 0xe3,0x73,0x8d,0x4e, 0x59,0x5d,0x01,0x5d,
+ 0x9a,0xef,0x6b,0x5c, 0xc1,0x73,0xe9,0x35, 0x77,0x73,0x10,0x4f, 0x56,0xe0,0x31,0x59,
+ 0x54,0xbf,0xd7,0x5d, 0x7f,0x2d,0x1e,0x2d, 0xc9,0x20,0x57,0x2f, 0xe5,0x02,0x25,0x09,
+ 0xf6,0xf2,0x21,0x1b, 0x38,0x38,0xed,0x66, 0x6c,0xd1,0xe1,0xe7, 0x76,0x58,0xfc,0xd6,
+ 0xa0,0x8e,0x31,0xe2, 0xda,0xbd,0xce,0xbb, 0xdc,0xcc,0x53,0x7a, 0x5f,0xc4,0x50,0x71,
+ 0xa5,0x85,0xf9,0xcb, 0x3d,0xcb,0xd1,0x33, 0x2b,0xa1,0xc9,0xe2, 0x59,0xd5,0x6b,0xe6,
+ 0xaf,0xf2,0x17,0xcd, 0xde,0x25,0x49,0xce, 0xdc,0x6e,0x1b,0x53, 0xa1,0xad,0x2b,0x35,
+ 0x25,0x29,0xc4,0x5a, 0xb5,0xb6,0x6b,0x1b, 0x7a,0x40,0x03,0x6d, 0x14,0xc8,0x85,0xfb,
+ 0xf8,0xff,0xbf,0x8a, 0xaf,0x65,0xdb,0x71, 0xfe,0x1a,0x18,0x18, 0xb1,0xf8,0x92,0x76,
+ 0x20,0x86,0xee,0x8d, 0xbb,0xec,0x77,0xb4, 0x69,0x43,0xc6,0x50, 0x01,0x34,0x02,0x55,
+ 0xf8,0x07,0xd0,0x70, 0xd5,0xe1,0xee,0x56, 0xb1,0x83,0x04,0xae, 0xa2,0x05,0xf0,0x94,
+ 0xeb,0xce,0x9b,0x5e, 0xa0,0xb9,0xa5,0xe4, 0xed,0x55,0x2b,0x42, 0x37,0x9c,0xc3,0x7d,
+ 0xc8,0x28,0x1f,0x41, 0x40,0xc0,0x1a,0x52, 0x44,0x69,0x9f,0x15, 0x93,0x9a,0x05,0xc3,
+ 0x23,0x79,0x91,0x95, 0xbc,0xca,0x31,0xa3, 0xdc,0x65,0x5d,0xe4, 0xa9,0xd7,0x58,0x71,
+ 0x20,0x1a,0x60,0x4f, 0x6c,0x9c,0xa1,0x23, 0x6a,0x3b,0x0b,0x2e, 0xaf,0x4d,0x0b,0xf5,
+ 0x37,0x4e,0x09,0x2f, 0x77,0x82,0x78,0x92, 0x75,0xd7,0xa6,0x7e, 0x73,0x54,0x09,0xf2,
+ 0xf1,0xaf,0x2f,0xe3, 0x0d,0xe7,0xca,0xd0, 0x5d,0x1a,0x8c,0x7b, 0xbc,0x26,0x7d,0x4a,
+ 0x2b,0x28,0x22,0x69, 0x64,0xe8,0x72,0x54, 0xa2,0x26,0xa0,0x26, 0x77,0xa9,0x03,0x55,
+ 0xd7,0x99,0x3a,0x95, 0xbc,0x25,0x37,0x21, 0x4d,0xd0,0x40,0xd1, 0xcd,0xa5,0xe9,0xd8,
+ 0xcb,0xbf,0x77,0x81, 0x64,0x96,0x5e,0x10, 0x39,0x8e,0xa0,0x02, 0x40,0xbb,0x0a,0x01,
+ 0xa1,0xbf,0x7e,0xd0, 0x34,0xe5,0x00,0xa8, 0x97,0x33,0x85,0x89, 0x0c,0xfa,0xed,0x8e,
+ 0xdb,0xfd,0xdd,0x7a, 0xd7,0x45,0x01,0x77, 0xba,0xe3,0x1b,0x21, 0x50,0x12,0xf3,0x0c,
+ 0x00,0xa1,0x08,0x83, 0x95,0x4e,0x2d,0xe9, 0x8a,0x54,0x55,0x10, 0x79,0x6c,0xed,0xf5,
+ 0xf4,0xdf,0x5f,0x4f, 0x58,0xac,0x95,0x3c, 0x0e,0xde,0xbd,0xca, 0xd5,0x0e,0x71,0x09,
+ 0xaa,0xed,0xed,0x8c, 0xf4,0x70,0x4f,0x38, 0x48,0x29,0x1a,0x96, 0x9b,0x69,0x2d,0x5b,
+ 0x57,0x20,0x8c,0xd9, 0x30,0xde,0x52,0xe9, 0xc3,0xb8,0x96,0xe7, 0x97,0xd6,0xb6,0x18,
+ 0x00,0x84,0x26,0x18, 0x44,0x0c,0x24,0x4c, 0x1a,0xd3,0xaf,0x21, 0xd7,0xa8,0xbd,0xa0,
+ 0x2e,0xd6,0xbb,0x82, 0x41,0x3c,0xad,0x37, 0x8d,0x2c,0xa8,0x1b, 0x99,0xa9,0x3c,0x10,
+ 0xce,0x14,0x51,0xb4, 0x92,0xc2,0xf7,0x56, 0xab,0x20,0x37,0x29, 0xec,0xb1,0x6c,0x91,
+ 0x83,0x0e,0x8e,0x38, 0x0f,0xa7,0xe1,0x78, 0x69,0x44,0x4a,0x83, 0x1b,0xdf,0x3d,0x74,
+ 0x98,0x20,0x70,0xf5, 0xf4,0x77,0x79,0xe3, 0x4b,0x3d,0xf1,0x03, 0x62,0x29,0x33,0x81,
+ 0xd5,0x94,0xa6,0x61, 0x1b,0xea,0x69,0x55, 0x9d,0x52,0xe5,0x9d, 0xfd,0x5a,0x64,0x23,
+ 0x58,0xb7,0x6c,0x65, 0x14,0x4c,0xc6,0xb3, 0xb1,0xe0,0x6f,0xe2, 0xbe,0x1d,0xf5,0x77,
+ 0x92,0xb7,0xf9,0xaa, 0x46,0xb7,0x8d,0x26, 0x1c,0x99,0x2a,0xff, 0xe7,0x4e,0xb2,0xc9,
+ 0xd9,0xb1,0x35,0x13, 0x5c,0x86,0x0d,0xe1, 0x97,0x20,0x80,0x46, 0x71,0x25,0x9e,0x60,
+ 0x68,0xd3,0x66,0xae, 0x28,0x6b,0x42,0xc3, 0x3e,0xcd,0x1a,0x69, 0x27,0x10,0x43,0x50,
+ 0xfc,0xf6,0x14,0x67, 0x5c,0x2c,0xf3,0x5b, 0x36,0x22,0x91,0xd8, 0xa6,0x02,0x18,0x59,
+ 0x78,0xad,0x14,0x34, 0x81,0xb2,0x43,0x86, 0x92,0x21,0x81,0xbc, 0x74,0x69,0x68,0x96,
+ 0xde,0xf2,0x52,0x0c, 0xac,0xba,0xc4,0x8d, 0x74,0xec,0xc9,0xa6, 0x59,0x68,0xb2,0x0d,
+ 0x36,0x0a,0xb3,0x52, 0x62,0x46,0x1b,0x24, 0x42,0x6f,0x4a,0x22, 0x49,0x9b,0xd8,0x52,
+ 0xe0,0x5b,0xad,0xbd, 0xdf,0xd4,0xb0,0x04, 0x94,0x07,0x20,0xab, 0x62,0xdf,0xa9,0xaa,
+ 0x31,0x80,0xa2,0x20, 0xdb,0x10,0x60,0xf1, 0x89,0x44,0xd9,0x60, 0xfb,0xeb,0x28,0x06,
+ 0xd7,0xdb,0x45,0xa0, 0x5d,0xc9,0x18,0x0e, 0x12,0x98,0xfb,0x09, 0x92,0x8e,0xc1,0x12,
+ 0x72,0x64,0x9e,0xd0, 0x52,0xc9,0xae,0xdb, 0x93,0x99,0xa7,0x47, 0x90,0xe0,0xbf,0x41,
+ 0x1e,0x81,0x7c,0xdd, 0xed,0x73,0xa8,0x9f, 0x27,0x9a,0xa0,0x93, 0xa6,0xbd,0x5e,0x34,
+ 0xef,0x23,0x78,0xd1, 0x8c,0xa0,0x81,0xd9, 0x05,0x10,0x06,0x82, 0x04,0xa6,0x80,0x39,
+ 0x88,0x2d,0x81,0xc9, 0x1e,0xd7,0x5c,0x13, 0x35,0xf1,0x6a,0xeb, 0x1e,0x79,0xb4,0x54,
+ 0x7a,0xac,0x2d,0xfb, 0xf7,0x87,0x95,0x2a, 0xd7,0xb2,0x02,0x3e, 0x7d,0x45,0x61,0xb9,
+ 0xe0,0xab,0x7a,0x86, 0x72,0xee,0x25,0x76, 0x67,0x62,0x73,0x73, 0x28,0x92,0x84,0xd9,
+ 0x7d,0xc6,0x92,0x19, 0xbd,0xd7,0x7c,0x90, 0x07,0x8a,0x97,0x5f, 0x9e,0xe1,0xa7,0x3f,
+ 0xa6,0x17,0x9f,0xbf, 0x84,0xb8,0xef,0x0d, 0x7c,0x55,0x88,0xe7, 0xb2,0xc1,0x83,0xa7,
+ 0xfe,0x67,0x64,0x79, 0x47,0x5d,0x35,0x6e, 0x87,0xac,0xc5,0xe4, 0xd3,0x76,0x93,0x2d,
+ 0xb1,0x89,0xd3,0x46, 0x96,0xa5,0x5d,0xb9, 0xae,0x24,0xcd,0xdb, 0x7b,0xf4,0xed,0xda,
+ 0xb0,0xe7,0x27,0xcb, 0x49,0xbb,0x1c,0x01, 0x69,0x00,0x18,0x9a, 0x31,0x85,0x81,0xc1,
+ 0x86,0x74,0x3b,0xd8, 0xfb,0x65,0x9a,0x9a, 0x16,0x76,0xf7,0x03, 0x71,0x45,0x89,0xef,
+ 0x37,0x98,0x1d,0x6d, 0xa8,0xaf,0x14,0x8d, 0x35,0x56,0x76,0x73, 0xb2,0x48,0x41,0xe0,
+ 0x30,0x4c,0x19,0xa6, 0x77,0x0a,0xa2,0x50, 0xf8,0xd8,0xea,0xfb, 0x67,0x1a,0x45,0xd8,
+ 0x0e,0xa8,0xc1,0x7b, 0x72,0xc5,0x1a,0x2e, 0x9c,0xc1,0x7a,0xe2, 0xfb,0x0f,0x13,0x66,
+ 0x7e,0xd1,0x02,0x44, 0x41,0x22,0x9b,0x02, 0x4b,0x6d,0x79,0xd2, 0x58,0xe8,0x42,0x48,
+ 0x3b,0x99,0xed,0xed, 0xec,0x32,0x73,0x65, 0x25,0x50,0x4d,0x70, 0xa6,0xea,0x60,0xc0,
+ 0xfd,0xfb,0xe5,0xf9, 0xe4,0x1f,0x76,0x47, 0xee,0x59,0x77,0x10, 0x15,0xad,0x7e,0x9f,
+ 0x56,0x8a,0x0a,0xd8, 0x87,0x37,0x8b,0xa6, 0xbc,0xb3,0x14,0x49, 0xc4,0xa9,0x87,0x50,
+ 0x92,0x0a,0x1a,0x0b, 0x40,0x78,0x71,0xd9, 0x98,0x2e,0xd2,0x82, 0x6f,0x47,0x42,0xa9,
+ 0x29,0x52,0x5b,0x78, 0x5d,0x24,0x52,0xc2, 0x1c,0xc8,0x17,0x0b, 0x18,0x81,0xc8,0x38,
+ 0xa3,0x13,0x51,0xc7, 0x7d,0x7c,0x26,0x90, 0x8a,0x55,0x31,0x0e, 0x1e,0x55,0x48,0x2f,
+ 0x60,0x70,0xf8,0x46, 0xe3,0xf4,0xe2,0xd9, 0x39,0x58,0xee,0xe9, 0x11,0x83,0x4b,0xee,
+ 0x3b,0x24,0xb5,0xcd, 0xeb,0xa7,0x02,0xf2, 0xe7,0x62,0xa4,0x14, 0x1e,0x99,0xd0,0x48,
+ 0x6c,0x63,0x5e,0x10, 0x33,0x1c,0xbf,0x0f, 0x8e,0x83,0xfc,0x3e, 0x55,0x30,0xd2,0xd2,
+ 0x0d,0x1d,0x5b,0x59, 0x7c,0x76,0xf6,0x33, 0x33,0xb6,0xe7,0xd6, 0x23,0xc4,0x8c,0xc1,
+ 0x24,0xa9,0xd0,0x6f, 0x45,0xd1,0xd6,0x45, 0x0d,0x4c,0xfe,0x13, 0x82,0x05,0xf5,0xc8,
+ 0x0a,0x95,0x21,0xd3, 0x82,0xd0,0x54,0x40, 0x57,0x5a,0x6d,0x47, 0x69,0x49,0x19,0x6f,
+ 0xd0,0xb9,0xf0,0x71, 0xdf,0xb4,0x50,0x60, 0xf1,0x8e,0x32,0x4b, 0xab,0xe5,0x46,0x46,
+ 0x89,0x42,0x43,0x96, 0x3e,0x52,0xab,0x58, 0x72,0x2f,0x7a,0x2b, 0xb3,0x3e,0x8d,0x69,
+ 0x2a,0xed,0xb3,0xd1, 0x7b,0x7c,0xe6,0x77, 0x20,0x5f,0x3d,0xf9, 0x1c,0x3e,0x4a,0x80,
+ 0x1c,0x99,0x54,0xc4, 0xdc,0xcb,0xb8,0xcf, 0x23,0x14,0x3a,0xa0, 0xf5,0x86,0x3b,0x4a,
+ 0xd8,0xa0,0xf8,0x0a, 0x06,0x7e,0xca,0xe0, 0x29,0x8b,0xc9,0x54, 0xc3,0x20,0x5f,0x21,
+ 0x47,0x26,0x2b,0xb2, 0x29,0x15,0x15,0xdc, 0x8b,0x20,0x43,0x12, 0xa0,0x4b,0xb1,0x2f,
+ 0x85,0x05,0xa8,0x6a, 0xc9,0xa1,0xd6,0xcd, 0x49,0x7d,0x40,0x85, 0x79,0x87,0x12,0x63,
+ 0x1f,0x21,0x1a,0x89, 0x66,0x18,0x49,0xa6, 0xd8,0x34,0x60,0xc0, 0x59,0x61,0x9b,0xb7,
+ 0x77,0x22,0x97,0x53, 0x44,0x02,0x33,0xa2, 0x14,0x28,0x90,0x38, 0x54,0xc5,0x92,0x88,
+ 0x59,0x69,0x1a,0x4d, 0x7c,0x2c,0x5a,0x9b, 0x0b,0x29,0x40,0xb1, 0x8e,0xa3,0x00,0x30,
+ 0xbc,0xd3,0xe2,0x2f, 0x65,0x96,0x52,0x39, 0x24,0x94,0x5d,0x72, 0xf6,0x15,0x9a,0xd5,
+ 0xea,0x73,0x8d,0x66, 0x5d,0x19,0xa8,0x39, 0xf7,0x29,0x70,0x96, 0x1a,0xac,0x92,0x26,
+ 0xf1,0x5a,0x56,0xd0, 0xd2,0x60,0xb3,0x20, 0xa1,0x42,0x90,0xbc, 0x83,0xbd,0xf2,0xca,
+ 0x38,0xa4,0x82,0x88, 0x95,0x9c,0x7b,0x31, 0xba,0x6c,0x4c,0x49, 0xe6,0x70,0x67,0xc8,
+ 0xfb,0xf8,0xb0,0xe5, 0xe7,0xd1,0xad,0xaa, 0xcb,0xf4,0x66,0x42, 0xc6,0x9d,0x70,0x71,
+ 0xc2,0xd7,0x25,0x01, 0x31,0x1c,0x08,0x36, 0xb7,0x2e,0xa6,0x42, 0x30,0x30,0xbb,0xa4,
+ 0x6d,0x6b,0x62,0x33, 0x68,0x58,0x8b,0x34, 0xfa,0xaa,0xe8,0xe9, 0x8b,0x2f,0xa6,0x6c,
+ 0xa7,0x77,0x0d,0x8d, 0xd9,0xfb,0x25,0xd3, 0xd7,0xc6,0x03,0xe9, 0x7b,0x9d,0x36,0xd1,
+ 0xee,0x57,0x3c,0x8b, 0x84,0x69,0x5f,0xc7, 0xd2,0x1a,0xcc,0xee, 0xee,0x7e,0x47,0x8b,
+ 0x49,0x3c,0x3e,0x46, 0xed,0x92,0xc0,0xee, 0x12,0x41,0xac,0xfd, 0xff,0x6d,0xf3,0xe2,
+ 0x2e,0x57,0x55,0xbb, 0x71,0xcf,0x3f,0xb8, 0x94,0x54,0x44,0xee, 0x76,0x22,0x46,0x3c,
+ 0x67,0x91,0x25,0x26, 0x25,0x84,0x21,0x16, 0x9f,0xa8,0x56,0xa5, 0xda,0xb7,0xd4,0xd5,
+ 0xe2,0x28,0x33,0xf9, 0xec,0xf9,0x54,0xa5, 0x22,0x7b,0xff,0x6f, 0x6b,0xb1,0xbe,0xec,
+ 0xab,0xf6,0x7b,0x93, 0x03,0x02,0x92,0x22, 0x2b,0x6a,0xda,0x03, 0x09,0x81,0xcf,0xb4,
+ 0x71,0x46,0xb8,0xc9, 0xf2,0xdf,0xd6,0x50, 0x78,0x9e,0x36,0xe8, 0x7c,0x8e,0xb4,0x00,
+ 0xd6,0x06,0xee,0x20, 0x23,0xde,0xca,0xb7, 0x34,0xd9,0x98,0x2b, 0xa5,0x8a,0xc4,0x92,
+ 0x41,0xef,0x6a,0x05, 0x4c,0xed,0xbe,0x50, 0xb8,0xf5,0xfc,0x88, 0x66,0x7e,0x3b,0x80,
+ 0x43,0x8e,0xfa,0x81, 0xac,0x81,0x64,0x89, 0x64,0x03,0x0b,0xf9, 0xf8,0x81,0xb5,0xa4,
+ 0x39,0x14,0x97,0xf3, 0xa7,0xd0,0x49,0x10, 0x22,0x2f,0xb2,0xe1, 0xb3,0xf6,0x23,0xaf,
+ 0xc9,0xdf,0xdc,0xd4, 0x35,0x5d,0xe0,0xd7, 0x34,0x6d,0x64,0x2e, 0x1a,0x90,0x5f,0xaf,
+ 0xc2,0x5e,0xd7,0xb7, 0x7e,0x60,0x5b,0xf5, 0x7d,0x6f,0xe5,0x3e, 0x42,0x9b,0xbb,0x16,
+ 0x24,0x44,0xc3,0x89, 0x70,0xc3,0x97,0x5d, 0x4c,0xf9,0x27,0x87, 0x14,0xc9,0xc2,0xa3,
+ 0x78,0xc1,0x85,0x5d, 0xbe,0x93,0x1b,0xf3, 0x10,0x0d,0x29,0xb0, 0x45,0x49,0x22,0xc9,
+ 0x1b,0x48,0x80,0xcb, 0xde,0x1d,0x6c,0xda, 0xe5,0x18,0xb9,0xa6, 0x8e,0x5e,0xe0,0xdb,
+ 0x6e,0x0f,0x68,0x35, 0x26,0xb8,0x03,0x18, 0xd7,0x37,0xd3,0x41, 0x3c,0xe2,0xb9,0x83,
+ 0xb9,0xd2,0x50,0xb1, 0x97,0x05,0x75,0xba, 0x7a,0xb4,0x57,0x87, 0xd1,0x6b,0x24,0xb9,
+ 0x9b,0x1d,0x70,0x98, 0xa4,0xd9,0xd9,0x38, 0x86,0x27,0x43,0x9c, 0x88,0x85,0x6f,0x80,
+ 0xed,0x0a,0x86,0x91, 0xae,0xd3,0x75,0xb9, 0x37,0xec,0xa3,0x34, 0x44,0x2c,0xd8,0xea,
+ 0x18,0x75,0xcd,0x53, 0x7d,0x9f,0xe7,0xf8, 0x3a,0xf2,0x93,0xc5, 0x62,0xf5,0xeb,0x59,
+ 0xd3,0x68,0xf3,0x9a, 0xfa,0x8b,0x7c,0x5c, 0xa4,0x85,0xc4,0xb4, 0xa6,0x71,0x70,0x91,
+ 0x4b,0x30,0xe7,0x61, 0x96,0x74,0xe5,0x13, 0xcb,0xa6,0x93,0x62, 0x7e,0xfa,0x7b,0x8a,
+ 0xf1,0xd6,0x72,0xa5, 0x24,0x95,0xd8,0x21, 0x37,0x7e,0xa0,0xf7, 0x81,0x80,0x62,0x95,
+ 0x5e,0x1c,0x4e,0x46, 0x17,0x17,0x00,0x9b, 0x00,0xa8,0x0c,0xf9, 0x54,0x47,0x83,0x9d,
+ 0xac,0xe2,0xad,0x19, 0x38,0xd6,0x55,0x30, 0x76,0x0a,0x51,0xf3, 0x2e,0xdc,0xf4,0x15,
+ 0x4e,0x8e,0x10,0xac, 0x7d,0x0b,0x39,0xe6, 0x40,0xf4,0xaf,0xc4, 0x54,0xaf,0x42,0x1b,
+ 0xd6,0x8b,0xb6,0x6d, 0x4c,0x4a,0xf1,0x1b, 0x75,0x8a,0xfd,0xdc, 0xea,0xa3,0x48,0xe7,
+ 0xa4,0xb4,0x4c,0xbb, 0x85,0xad,0x7a,0xaa, 0xd8,0x9f,0x19,0x93, 0x54,0x54,0x36,0xdf,
+ 0xae,0xb0,0x75,0x83, 0x2a,0xb6,0x4a,0xc0, 0xc0,0x67,0x35,0xce, 0xfc,0xe3,0x84,0x87,
+ 0x78,0x68,0xe9,0x4c, 0x10,0x94,0x13,0x8e, 0x5d,0xb6,0xb7,0x7c, 0x5e,0x3f,0x33,0x56,
+ 0x66,0x7c,0xce,0xb2, 0xbe,0x53,0xb1,0xed, 0xc0,0xc2,0x18,0x8e, 0x0c,0x7d,0x76,0xb1,
+ 0xf0,0x9d,0x7a,0xbd, 0xc5,0xbe,0xbf,0xcd, 0x9f,0xa6,0xc0,0x46, 0x16,0xa5,0x92,0x92,
+ 0x53,0x6b,0xc5,0xfd, 0x7a,0x8c,0x1b,0xb6, 0x4f,0xb2,0x20,0x00, 0x80,0x4a,0x9e,0xaf,
+ 0xb7,0xea,0xb1,0xe9, 0xa4,0xac,0xc2,0x1a, 0x40,0xd0,0x37,0xa1, 0x64,0x0c,0x1b,0x49,
+ 0x26,0x09,0xfc,0x8a, 0x11,0x4a,0x86,0xdc, 0xa2,0x6e,0xfa,0x86, 0x24,0x22,0x14,0x4e,
+ 0x17,0xf6,0xab,0x03, 0x4a,0x73,0x77,0x33, 0x85,0x54,0xcd,0x2a, 0x27,0x77,0x6d,0xb3,
+ 0x3d,0xa6,0xde,0xaa, 0xb1,0x26,0x7e,0xbc, 0x46,0xf6,0x21,0x9e, 0xdb,0xcc,0xc5,0x08,
+ 0xb8,0x55,0x66,0x58, 0x38,0x20,0x92,0x33, 0x85,0x31,0xd5,0x19, 0xf3,0x00,0xd5,0x38,
+ 0xaa,0x65,0xc4,0x4f, 0x58,0x99,0xf5,0x20, 0xa5,0x40,0x3e,0x41, 0xd0,0x10,0x81,0xe0,
+ 0x11,0x80,0x5b,0xb3, 0x60,0xf3,0x15,0x5e, 0xb8,0xe0,0x2e,0x0b, 0xe3,0xad,0xc9,0xcb,
+ 0x88,0x3c,0x01,0x45, 0x35,0xbd,0x52,0x41, 0xe2,0x2c,0x83,0xd1, 0x2a,0x0a,0x0b,0x86,
+ 0xc1,0xd2,0xf4,0xd4, 0x0c,0x2b,0xe2,0x54, 0x10,0x74,0x91,0xb3, 0x5f,0x73,0xd1,0xec,
+ 0x50,0x77,0xc4,0x00, 0xd6,0x15,0xf9,0x0c, 0x25,0x28,0x42,0xb0, 0xc0,0x95,0x82,0x39,
+ 0x3f,0x5e,0x37,0xb3, 0xf5,0x64,0x8f,0x09, 0x84,0x86,0x89,0xb4, 0x90,0xd8,0x8c,0x38,
+ 0x84,0x1b,0xca,0xf2, 0xbe,0x99,0x88,0x55, 0x47,0xb5,0x8a,0x65, 0xb7,0x3f,0x65,0x49,
+ 0x17,0xcc,0x0f,0x25, 0xd1,0xa8,0x2b,0x66, 0x73,0xa7,0xa1,0x4f, 0x3c,0x70,0x4b,0xa9,
+ 0x59,0x62,0x1d,0xb3, 0x2c,0x2c,0xc9,0xbc, 0xf1,0xec,0x8f,0x39, 0x69,0xe6,0xd5,0xd8,
+ 0xec,0xc1,0x24,0x19, 0x66,0x99,0xa6,0x9e, 0xeb,0x66,0x0e,0x08, 0xa1,0xbe,0x0b,0x09,
+ 0xc1,0x72,0x4d,0x3b, 0xea,0xe8,0x34,0x8d, 0xee,0x83,0x48,0xab, 0xb8,0xaa,0x9b,0xe7,
+ 0x52,0x08,0x44,0xd8, 0x07,0x48,0xa0,0xf6, 0xa6,0xb8,0x50,0x86, 0xb5,0xb4,0x86,0x7c,
+ 0x26,0x0c,0xc5,0xef, 0xa3,0xa2,0x27,0x2e, 0x8a,0x10,0x40,0x92, 0x0a,0x16,0x6e,0xb9,
+ 0xdc,0x64,0xd6,0xa3, 0xe7,0x03,0x22,0x2f, 0x30,0x53,0xe9,0x9d, 0x9b,0xbc,0x36,0x38,
+ 0x31,0x37,0x73,0x61, 0x40,0x68,0x1a,0x0d, 0xcb,0x3b,0x8a,0x3a, 0x7a,0xd7,0x02,0xac,
+ 0x45,0xb2,0x4e,0x1e, 0x9c,0xd9,0xc2,0x25, 0x6e,0xac,0x29,0x93, 0xbb,0xbd,0x2e,0x91,
+ 0x35,0x54,0x3a,0xa1, 0x7e,0x96,0x8a,0x65, 0x3b,0x44,0xc2,0xbe, 0x27,0x19,0x9a,0x98,
+ 0x2a,0x96,0x6a,0x25, 0x28,0x07,0xb2,0xae, 0x12,0x4a,0xa6,0x90, 0x30,0x14,0xe1,0xf6,
+ 0x7f,0x8c,0xde,0x68, 0xa0,0x14,0x21,0x01, 0xbf,0x65,0xe7,0x19, 0x51,0x0d,0x1d,0x92,
+ 0x84,0x9d,0xfc,0xc8, 0x7c,0xda,0x2b,0x11, 0x78,0x82,0x52,0x24, 0xd5,0x10,0x55,0x20,
+ 0xe0,0x0e,0x27,0xd3, 0x95,0x4c,0x52,0x65, 0xf8,0x7e,0xb6,0x75, 0x2d,0x24,0x58,0x68,
+ 0x50,0xb4,0x6b,0x8a, 0x4b,0xcc,0x74,0x44, 0x09,0xb5,0x5d,0x76, 0x5e,0x42,0xb7,0x77,
+ 0xba,0x60,0x2c,0x89, 0x24,0x1d,0x09,0x1f, 0x18,0xf7,0x68,0x89, 0xeb,0x4a,0x0e,0x51,
+ 0xbf,0xd5,0xf2,0xf9, 0x69,0x87,0xad,0xc4, 0xa0,0x16,0x19,0xf5, 0xfe,0xcf,0x03,0xb1,
+ 0x05,0x7c,0xef,0xda, 0xd3,0x5c,0x6f,0x72, 0xb4,0xd9,0xdc,0x3b, 0xb2,0x6f,0xb7,0x45,
+ 0xdf,0x32,0x2d,0xaf, 0x8c,0xc3,0x2a,0x38, 0x4a,0x2f,0x8c,0x51, 0xec,0x63,0x0b,0x9b,
+ 0x22,0xaa,0xf3,0x74, 0xb7,0xec,0x8d,0x54, 0x09,0xa9,0x46,0x42, 0xb0,0x6e,0x70,0x65,
+ 0x65,0x49,0x60,0x00, 0xe3,0x9d,0xc1,0x03, 0x6f,0x35,0xf7,0xf2, 0x2e,0x76,0x94,0x89,
+ 0xc9,0x3d,0xb5,0xbb, 0xdf,0x32,0xfc,0x2c, 0xeb,0x2a,0x1e,0x05, 0x77,0x13,0x01,0x45,
+ 0x07,0x14,0xe1,0x5b, 0x79,0xb3,0x77,0x15, 0x28,0x40,0x01,0xea, 0xfb,0x02,0x20,0x94,
+ 0xab,0xc9,0xb8,0x73, 0x8c,0xcc,0xa6,0x37, 0x42,0x49,0x6a,0x1a, 0x8d,0x30,0x11,0x36,
+ 0x15,0x96,0x65,0x10, 0x92,0xef,0x58,0x85, 0xf2,0xa8,0x8d,0x52, 0x66,0x63,0x3e,0xcc,
+ 0xec,0x51,0x7c,0x86, 0x5c,0x77,0xb8,0x9e, 0xd5,0xf1,0x75,0xe1, 0xf3,0x5b,0x8d,0xd1,
+ 0xa4,0xb1,0xad,0x33, 0x50,0x1a,0xc9,0x8a, 0xb7,0x10,0x9b,0xa4, 0x84,0xdd,0x40,0x0a,
+ 0x10,0x98,0xd8,0x6e, 0x47,0xaa,0x25,0x53, 0xb5,0xdb,0x5d,0xe0, 0x56,0x33,0x97,0x80,
+ 0xa5,0xf5,0x83,0x63, 0x35,0x72,0x81,0x7c, 0xbc,0x7e,0x5e,0xfe, 0x69,0x54,0xc5,0xe6,
+ 0x0e,0xd8,0xb3,0x6e, 0x75,0x16,0xa0,0x16, 0x63,0x5f,0x40,0x94, 0xb1,0x9f,0x51,0x2a,
+ 0x7d,0x85,0x69,0x6a, 0xa2,0x01,0x1a,0x96, 0x88,0x7e,0xdd,0x81, 0x0d,0x05,0x9c,0xa1,
+ 0x35,0xbb,0xc4,0x64, 0xfb,0x19,0x70,0xe5, 0x8b,0x4c,0x2f,0xe9, 0xaf,0x06,0x8d,0xab,
+ 0x4d,0x1c,0x40,0xc0, 0xc1,0x70,0xc4,0x67, 0x06,0x7c,0xce,0xe6, 0x04,0xb0,0x72,0xf4,
+ 0x92,0xc2,0x66,0x3d, 0x0a,0x4c,0x96,0x23, 0x57,0x52,0x84,0x1f, 0xb9,0xa5,0x2d,0x0c,
+ 0x50,0xc4,0x76,0x23, 0xd3,0x9b,0x35,0x15, 0x6c,0x2a,0x6c,0x96, 0x42,0x9d,0x91,0xce,
+ 0x28,0x2d,0x2f,0xa4, 0xb7,0x37,0x03,0xea, 0x7f,0x77,0x0b,0x0e, 0xae,0x1b,0x13,0x52,
+ 0x6e,0x62,0x3f,0x9b, 0xa3,0xc8,0xd6,0x4f, 0x2a,0x42,0x6f,0x88, 0xc6,0x11,0x98,0x85,
+ 0x70,0x66,0x88,0x93, 0x26,0xb1,0x2c,0xdd, 0x3a,0x58,0x75,0x0a, 0xd9,0xc2,0x7f,0x0b,
+ 0x4a,0x2d,0xf5,0x17, 0x50,0xdb,0x7d,0xf6, 0x3f,0xed,0xf2,0x53, 0x15,0x8a,0xb1,0x3f,
+ 0xc7,0xc0,0xfa,0xda, 0x09,0xe4,0x22,0xdb, 0xe4,0x4a,0xa8,0xb8, 0x46,0x2e,0x97,0x83,
+ 0xf7,0x6b,0x71,0xbc, 0x15,0x32,0x17,0xd7, 0xb6,0x9d,0x94,0xdb, 0x99,0x7e,0xf5,0x10,
+ 0x84,0xa5,0x1a,0x3a, 0x2c,0xab,0x5b,0x7c, 0xca,0x1d,0xb5,0x1c, 0xb6,0x73,0x5a,0x33,
+ 0x2c,0x13,0x81,0xa7, 0x44,0xc8,0x01,0x3c, 0x5e,0x5f,0xfa,0x29, 0xd6,0x4a,0xdc,0xee,
+ 0x97,0x06,0x70,0x45, 0xd3,0x32,0x83,0x93, 0xf2,0x3a,0x0e,0x62, 0x6b,0x49,0x03,0x90,
+ 0x68,0xaa,0x21,0x75, 0xc7,0x3d,0xf8,0x11, 0xb1,0x33,0x8c,0xfb, 0x07,0x30,0x70,0xbc,
+ 0xaf,0x5c,0x43,0x01, 0x84,0x14,0x73,0x7a, 0xbc,0x09,0x4e,0x87, 0xa5,0xec,0x6f,0xda,
+ 0x79,0x0a,0x2f,0x0b, 0x10,0xc2,0x58,0x6d, 0x30,0x85,0xb2,0x86, 0xe0,0xc2,0xc4,0x70,
+ 0xad,0x09,0x36,0xeb, 0x81,0x46,0x41,0x90, 0xf1,0x6a,0x4a,0x4e, 0xb5,0x5a,0x6e,0x34,
+ 0x0f,0xe0,0x83,0x1f, 0xd4,0xc5,0xac,0xda, 0x4d,0x9a,0xf0,0x3e, 0x9a,0x4f,0xea,0x89,
+ 0xc1,0x46,0xf7,0xc5, 0x57,0xb3,0x15,0xd1, 0x7e,0x7f,0xe8,0x42, 0x2c,0x26,0x4c,0xd2,
+ 0x55,0x79,0xe2,0xde, 0x9c,0xe4,0x6d,0x51, 0xa7,0x47,0x07,0x42, 0x80,0x14,0xe7,0x39,
+ 0x24,0x84,0xb5,0x3e, 0xc8,0xae,0xf0,0xb8, 0xb7,0x18,0xa4,0xf5, 0xd8,0x0a,0xed,0xa2,
+ 0xcb,0x4a,0x7c,0x8c, 0x21,0x5f,0x4e,0x0c, 0xe7,0xfd,0x6f,0x67, 0x30,0x54,0xbc,0xa7,
+ 0xb8,0x68,0x56,0xbe, 0x9e,0xa2,0x57,0x5f, 0xbb,0x2a,0x94,0x1c, 0xa6,0xd6,0x0d,0x2b,
+ 0x0a,0xba,0x7c,0x1e, 0xce,0x41,0xd9,0xe8, 0xa1,0xb2,0xf5,0x8b, 0xc9,0xa6,0x00,0xbe,
+ 0x6b,0x1d,0x90,0xd2, 0x31,0xc7,0x78,0xd1, 0x8c,0xff,0xf7,0x66, 0xcc,0xb5,0x4c,0x2b,
+ 0xe2,0xc2,0xef,0x58, 0x5a,0x7d,0x23,0x56, 0xf0,0xb8,0xf9,0x24, 0x68,0xb2,0xe3,0xd9,
+ 0x56,0x80,0x42,0xa9, 0xa4,0xb1,0xec,0xc0, 0x96,0x03,0x0b,0x2d, 0x2a,0x5a,0xf7,0xdd,
+ 0x6c,0x14,0x30,0xac, 0xd6,0x89,0xd2,0xd1, 0x23,0xe5,0x42,0x26, 0xc5,0xd6,0xb0,0x33,
+ 0xcd,0x58,0xe2,0x6f, 0x15,0x76,0x8d,0x4b, 0x74,0x65,0x04,0x88, 0x97,0x11,0xbb,0x68,
+ 0xd4,0x1a,0xe5,0xbf, 0xf8,0xfa,0xea,0x3d, 0x9f,0x70,0xb6,0x88, 0x29,0xcc,0xea,0x75,
+ 0x9d,0xfc,0x4a,0xc9, 0x13,0x82,0x35,0xf2, 0x83,0x49,0x11,0x1a, 0xe5,0x04,0xb4,0x5a,
+ 0x99,0x48,0x79,0x89, 0xca,0xb3,0xb7,0x26, 0x83,0x3c,0xd8,0x20, 0x00,0x95,0x7d,0x85,
+ 0xb4,0xbb,0x9e,0xff, 0x6b,0x39,0x38,0x2e, 0xd3,0x2f,0x9c,0x28, 0xfc,0xac,0xb4,0x93,
+ 0x0a,0x86,0x0c,0x76, 0xfe,0x69,0x9f,0x77, 0xf9,0xdb,0xc9,0xaf, 0x16,0x32,0xd7,0xb8,
+ 0x88,0xc2,0x86,0x0f, 0x01,0x04,0x89,0x36, 0x3b,0xba,0x09,0x58, 0x59,0x35,0x54,0xf1,
+ 0x37,0x12,0xeb,0x20, 0x7f,0xb2,0x2f,0x59, 0x67,0x0f,0x24,0x07, 0x1d,0xfe,0x77,0x7e,
+ 0x08,0x6b,0xd4,0xaa, 0x88,0xa8,0x59,0x0c, 0xba,0x69,0x4b,0x86, 0x42,0x92,0xd3,0xd0,
+ 0x64,0x90,0xbc,0x2b, 0xb6,0xce,0x64,0x90, 0x8c,0xb2,0xca,0x6e, 0x1a,0x1f,0x30,0x28,
+ 0xb3,0x9b,0x40,0x30, 0xc7,0x9f,0xb7,0x78, 0x4a,0x13,0x72,0x06, 0x2d,0xe9,0xe9,0x8f,
+ 0x9b,0x1d,0x54,0x6d, 0x71,0x5e,0x49,0xe5, 0xd7,0xe2,0x9f,0x3a, 0x3b,0x4f,0xbf,0x75,
+ 0xbf,0x35,0xf9,0x55, 0x21,0x25,0xa9,0xf4, 0x76,0x32,0x0f,0x98, 0xc2,0xf9,0xf6,0x2d,
+ 0x23,0x96,0x67,0xd1, 0x68,0x44,0xda,0x48, 0xc9,0x62,0xfb,0x8d, 0x1a,0x47,0xdd,0x3e,
+ 0xc1,0xa3,0x15,0x8a, 0x96,0xb2,0x98,0xb4, 0xe5,0x98,0x12,0x4a, 0x8b,0x50,0x8e,0x4c,
+ 0xb5,0x01,0xbb,0x00, 0x68,0xbe,0x4d,0x72, 0x6c,0x48,0xc8,0x76, 0xf0,0xe1,0x56,0x07,
+ 0xe4,0x16,0xe7,0x98, 0x37,0x14,0x4f,0xd4, 0xd5,0x53,0x9f,0x97, 0xf2,0xbd,0xa9,0xed,
+ 0x61,0x47,0xab,0xfa, 0xfb,0x4f,0xc5,0xf5, 0x2c,0x77,0x35,0x85, 0xbd,0x13,0xff,0x06,
+ 0xdb,0x62,0x42,0x0b, 0xa7,0x7c,0x06,0xb9, 0x01,0x31,0x19,0xcd, 0x47,0x7d,0xf4,0x71,
+ 0x05,0x95,0x68,0x43, 0xd7,0x82,0xaa,0x1a, 0xcf,0xd4,0xe0,0x36, 0xba,0x7d,0x5d,0x69,
+ 0x70,0x50,0xe5,0x15, 0x4c,0x05,0x0f,0xd7, 0x6d,0x2a,0xb2,0x70, 0xb0,0x85,0xed,0x1b,
+ 0x3e,0xb6,0x2c,0x70, 0x72,0xf9,0x12,0x38, 0xbf,0x8e,0x57,0xa0, 0xfd,0x08,0xad,0xbd,
+ 0x30,0xc2,0x4e,0x7f, 0x58,0x1a,0xd2,0x89, 0x4a,0xcb,0x9b,0x5b, 0x0c,0x08,0x0f,0x01,
+ 0xb6,0x19,0x6c,0x45, 0x66,0x83,0x6c,0xc3, 0x6a,0xd2,0x24,0xf5, 0x4d,0x23,0xb1,0x61,
+ 0x0c,0xf9,0xa4,0xf4, 0x06,0x00,0xc6,0xad, 0x6c,0x69,0x60,0xc7, 0x30,0xde,0x4c,0x16,
+ 0x96,0x30,0x0c,0xfe, 0x37,0xda,0xc7,0xd4, 0x12,0xb3,0x92,0x4e, 0x5d,0x5b,0xab,0x16,
+ 0xd5,0xc3,0x23,0x05, 0x9a,0x3f,0x8a,0xcb, 0xf6,0x68,0xb2,0x60, 0x98,0xcf,0xf4,0x65,
+ 0x1d,0xe4,0xf6,0xfa, 0x2a,0x10,0x79,0x2c, 0x57,0x4c,0xfd,0xfc, 0x97,0x57,0x23,0x92,
+ 0xda,0x6d,0xe4,0x05, 0x94,0xc4,0x91,0xf0, 0xd8,0x1d,0xb7,0x76, 0x68,0x24,0x6a,0xfd,
+ 0xcc,0x5e,0x32,0xa1, 0xbb,0x3b,0x19,0x08, 0xe4,0x01,0x57,0xb3, 0xbc,0xf1,0x28,0x24,
+ 0x30,0xa5,0x88,0x33, 0x4c,0x93,0x43,0x69, 0x36,0xaf,0x99,0x65, 0xac,0xd9,0xf8,0x20,
+ 0xd4,0xbd,0xce,0xb6, 0x0c,0xab,0x90,0x1f, 0xfe,0xfc,0x97,0x5f, 0xcf,0x03,0x03,0x49,
+ 0x51,0x75,0x84,0x4d, 0x26,0x62,0xc3,0x8d, 0xe2,0x8f,0xf8,0xf6, 0xec,0xc4,0x8b,0xb6,
+ 0x59,0x9a,0x6d,0xe1, 0x29,0x58,0xa8,0x6e, 0x63,0x28,0x60,0x22, 0x25,0x08,0x32,0x74,
+ 0x75,0xf5,0xd7,0x6d, 0x1a,0x61,0x1b,0x85, 0xc0,0xfd,0x74,0xd6, 0x24,0x7a,0x97,0x90,
+ 0x5e,0xc5,0x82,0x32, 0x5c,0xf3,0xcd,0x7e, 0x21,0x92,0x60,0x1e, 0xfd,0xf8,0xde,0xf6,
+ 0x0f,0x8f,0xe0,0xf1, 0x84,0xa9,0x1a,0xff, 0xd7,0x23,0xc5,0xc8, 0x53,0x67,0x6c,0xf6,
+ 0x9a,0x98,0xb6,0xd7, 0x8f,0xa1,0x84,0x8f, 0xda,0xcd,0x56,0xb9, 0x42,0x97,0x81,0xb5,
+ 0x24,0x6a,0xff,0x9c, 0x0b,0x0a,0x53,0x91, 0x5a,0xe6,0x5e,0x4d, 0xd5,0x01,0x7a,0xc4,
+ 0xba,0x46,0x10,0x0c, 0xad,0x7f,0x29,0x59, 0xc5,0xf9,0x57,0xe4, 0xca,0x0c,0x7b,0xb9,
+ 0x7e,0x49,0xcb,0x98, 0xbb,0xf5,0xe9,0x14, 0xbe,0xe4,0x25,0xf9, 0x9a,0x30,0x9d,0x92,
+ 0x15,0x35,0x62,0xbf, 0xb1,0x17,0x08,0x6b, 0x8b,0x87,0x8f,0xd2, 0xed,0x9e,0xfc,0xaf,
+ 0xcd,0xc1,0x63,0x63, 0x59,0x63,0x27,0x52, 0xea,0x96,0xaa,0x80, 0x3c,0x92,0x9e,0xff,
+ 0x0e,0x7c,0x77,0x48, 0xcf,0x34,0x01,0xd5, 0x30,0xb5,0x93,0x79, 0x68,0xba,0xa2,0x8b,
+ 0xd8,0x84,0x36,0x9a, 0x45,0x87,0x05,0x9c, 0x83,0x7c,0x4c,0x9e, 0x54,0x7f,0xf6,0x85,
+ 0x35,0xaa,0xf3,0xde, 0xe3,0x4d,0xc9,0x7c, 0xf0,0x39,0x2e,0xce, 0x7d,0xff,0xec,0x7f,
+ 0xef,0x48,0xfa,0x9f, 0x0f,0xc8,0xaa,0x3d, 0x3f,0x90,0xdc,0x5a, 0x87,0x74,0x0f,0x11,
+ 0xcf,0x45,0x2c,0x9c, 0x7f,0x2e,0x3c,0x0f, 0x71,0x20,0x99,0x0e, 0xc4,0x8f,0xd0,0x63,
+ 0x88,0xb3,0xe4,0xe3, 0x97,0x13,0x41,0xbb, 0x96,0x7d,0x7e,0x6f, 0x30,0xf9,0xfd,0x03,
+ 0xf9,0x26,0xf0,0x47, 0x61,0x72,0xcb,0x1b, 0x2d,0x63,0x0a,0xe8, 0x03,0x95,0xac,0x0e,
+ 0x0b,0x3f,0x67,0x62, 0x5e,0x9f,0xa3,0x74, 0x53,0xdb,0xfc,0xc7, 0x9d,0xc7,0xdf,0xd3,
+ 0x4a,0x03,0x34,0xcd, 0xdb,0x41,0x81,0x4e, 0x0c,0x97,0x30,0xc2, 0xf7,0xd7,0xf1,0xe4,
+ 0x02,0xf5,0xbd,0x1c, 0x1b,0xec,0xcf,0xb7, 0xea,0x76,0x9a,0x2a, 0x5f,0x60,0x63,0xd6,
+ 0xd1,0xda,0x3d,0xc3, 0x17,0x9e,0xc4,0x6f, 0xc7,0xa9,0x6a,0x18, 0x8f,0xae,0xd2,0xe5,
+ 0x1e,0xeb,0x4f,0x19, 0x9d,0x5d,0xed,0x33, 0x20,0xa9,0x81,0x26, 0x46,0x53,0x86,0x53,
+ 0x5a,0x1c,0x01,0x44, 0xf9,0x53,0x8d,0x94, 0xbc,0xbd,0x64,0x06, 0xad,0x1f,0x22,0x74,
+ 0x7d,0x8b,0x9d,0x47, 0xf4,0xe9,0x54,0xf9, 0xbc,0x3f,0x4e,0xa5, 0xce,0xe1,0xc5,0x33,
+ 0x88,0x62,0x06,0x56, 0xbe,0x5d,0x2f,0x6a, 0xea,0x0e,0x10,0xf5, 0xf3,0xe5,0x3b,0xd6,
+ 0x53,0x3b,0x8b,0x8c, 0x21,0xd5,0x13,0x0a, 0x8a,0x0b,0x0c,0xb3, 0xb9,0x17,0xc8,0x21,
+ 0x40,0x60,0x61,0x50, 0x10,0x38,0xc6,0xff, 0x0d,0xbd,0x19,0x9d, 0x79,0xca,0x29,0x7b,
+ 0xd5,0x72,0x3c,0xaf, 0x87,0xe2,0x61,0xcf, 0x1f,0x3f,0xe9,0xab, 0x7d,0x0a,0xb6,0xf0,
+ 0xfe,0xe6,0x55,0x3e, 0x34,0xfd,0x22,0xe7, 0x4e,0x13,0xe4,0xd4, 0xf6,0x4c,0x5c,0x70,
+ 0x30,0x79,0x39,0x32, 0xf3,0xfd,0xf7,0x15, 0x1d,0x96,0x2e,0x74, 0x2d,0x77,0x2c,0x66,
+ 0xe2,0x64,0x5a,0xef, 0x98,0x89,0xe1,0xf5, 0x3c,0xf2,0x02,0x9c, 0xa0,0x3a,0x4f,0x7d,
+ 0x50,0xd6,0x22,0xa1, 0xf6,0x2f,0xf7,0xda, 0xbf,0x0b,0xac,0xa8, 0xd9,0x3d,0xab,0x0f,
+ 0x11,0xe5,0x56,0xbc, 0x91,0xdb,0xfb,0xa8, 0x0c,0xf6,0x1c,0x6e, 0x1e,0xa1,0x95,0xb5,
+ 0x50,0xae,0xd8,0x76, 0xb4,0xc1,0x64,0x6a, 0xa6,0x08,0xfe,0x34, 0x11,0x01,0x1a,0xcc,
+ 0x22,0x43,0xed,0x47, 0x26,0x36,0x1c,0x04, 0xf8,0x33,0x7d,0x03, 0x4e,0x9f,0xe3,0xe5,
+ 0x3a,0x7f,0x31,0xcb, 0x41,0x73,0x1e,0x32, 0x1b,0xbe,0x5d,0x5a, 0x4a,0xd4,0xdd,0x3b,
+ 0xa7,0x28,0x9c,0x00, 0xea,0xf5,0xa7,0x9d, 0x77,0x6f,0xe9,0x63, 0x51,0x6b,0xb9,0xa4,
+ 0x84,0xac,0x58,0x2d, 0xf5,0xb1,0x6c,0xd4, 0x78,0xc6,0x03,0xf2, 0x95,0xc6,0xf8,0xec,
+ 0xf7,0x45,0x3e,0x14, 0x29,0x49,0x62,0x65, 0xee,0x6e,0x05,0xeb, 0x5f,0x77,0x5b,0x06,
+ 0x14,0xe3,0x2f,0x67, 0x95,0xe5,0xcb,0xda, 0x95,0x9f,0x53,0xc2, 0xc2,0xc3,0xb0,0x18,
+ 0xb2,0x17,0x44,0xd7, 0xbe,0x60,0x2f,0xbe, 0x30,0x63,0x13,0x40, 0xda,0x4d,0x88,0xa1,
+ 0xa8,0x64,0x44,0x9c, 0x19,0x21,0x32,0x4b, 0x81,0x7a,0xb9,0x7b, 0x52,0xab,0x5a,0xd8,
+ 0xdd,0xd5,0x51,0x28, 0x0d,0x89,0x20,0xe6, 0x95,0x80,0x99,0xa5, 0x67,0xc2,0x62,0x59,
+ 0x4d,0x56,0x99,0xfd, 0x5d,0x8f,0x2d,0xb1, 0xde,0x75,0x92,0xfe, 0xa8,0xad,0xb1,0xa7,
+ 0x83,0x24,0x17,0x18, 0x05,0x4c,0x41,0x9f, 0x64,0x55,0x8f,0x5b, 0xf3,0x04,0xcb,0x1d,
+ 0x7e,0x15,0x6c,0xe3, 0x12,0x39,0x97,0xc2, 0xfa,0xdc,0x57,0xe4, 0xe1,0x50,0x08,0xb8,
+ 0xce,0x31,0x88,0x46, 0x33,0x12,0x0e,0x03, 0x32,0x46,0x96,0x41, 0xd3,0x3c,0x4a,0x30,
+ 0x7b,0x5a,0x79,0x46, 0x18,0x9f,0x6b,0x0f, 0x3b,0x39,0xb4,0x68, 0xb9,0xbf,0xcd,0x21,
+ 0x69,0xfe,0xc7,0xe1, 0xef,0x38,0xc1,0x4a, 0x61,0xd7,0x40,0x48, 0x4d,0x44,0xec,0x76,
+ 0xf7,0xd2,0x20,0x0c, 0x51,0xdb,0xbd,0x5e, 0x8b,0x50,0x91,0xd6, 0xf7,0x12,0x37,0x55,
+ 0x74,0xd9,0x8f,0x4c, 0x7c,0x0b,0x97,0xf1, 0xe2,0xf9,0x59,0x8b, 0xaf,0xaa,0xaf,0xf9,
+ 0x74,0x52,0x2c,0xd6, 0x8a,0x2d,0x38,0xa5, 0x58,0x8b,0xdb,0x3d, 0x25,0xa3,0x19,0xa4,
+ 0x0b,0x1d,0x97,0xac, 0xf0,0xda,0x30,0x44, 0x75,0xa9,0x90,0x3c, 0xeb,0x44,0x36,0xd0,
+ 0x97,0x52,0xc5,0x26, 0x36,0x09,0xb0,0x49, 0x12,0x13,0xe4,0x08, 0x6d,0xbf,0x9e,0xc0,
+ 0x24,0xc0,0x6d,0x21, 0x15,0x9a,0xfa,0x2f, 0xd0,0x99,0xfd,0xe6, 0xcb,0xe0,0x9b,0x25,
+ 0xcf,0x6e,0x2d,0x77, 0xcc,0x39,0x55,0xbf, 0x7c,0xb8,0x00,0xfe, 0x90,0xa7,0xf6,0x5b,
+ 0xf7,0x85,0x12,0x14, 0x25,0x0e,0x13,0xe5, 0x65,0x28,0xa4,0xaa, 0x50,0x29,0xc4,0x40,
+ 0xd0,0xd1,0x66,0xab, 0xaa,0x53,0x4c,0xc3, 0x43,0xbb,0x2d,0x18, 0xb3,0x32,0xac,0x43,
+ 0x84,0x77,0x50,0x20, 0xc8,0x50,0xa1,0x3a, 0xb1,0xda,0xf5,0x1d, 0x8f,0xcd,0xf1,0xce,
+ 0x42,0x79,0x3f,0x67, 0x67,0xa7,0xf9,0x7f, 0xc7,0x9f,0x1a,0xc7, 0xfa,0x5c,0x90,0x3a,
+ 0x3d,0x0e,0xec,0xd2, 0xa4,0x4a,0xe1,0xb1, 0x8f,0x80,0x72,0x44, 0x40,0x12,0x91,0xb8,
+ 0x28,0x9f,0x0d,0x71, 0x3c,0x9d,0xeb,0x9b, 0x16,0x43,0xf1,0x55, 0x32,0x6d,0x20,0xa0,
+ 0x7a,0x33,0x3a,0x4b, 0xa4,0x29,0x6b,0x82, 0x94,0xac,0x5f,0x69, 0x46,0xbf,0xa7,0x07,
+ 0x67,0x21,0x06,0xb3, 0xa1,0xe3,0xf0,0xb7, 0xba,0x9e,0x43,0x7a, 0x7c,0x69,0x91,0x67,
+ 0xf6,0xf6,0x8a,0xd6, 0x61,0x70,0xf4,0x58, 0x49,0x4d,0x09,0x61, 0xb3,0x2f,0x7e,0x94,
+ 0xf1,0xa5,0x73,0x12, 0x79,0x07,0x5f,0xac, 0xf6,0xff,0xf3,0xf1, 0xd4,0xff,0x34,0xf0,
+ 0x96,0xe5,0xe5,0x91, 0x22,0xb8,0xb3,0xbf, 0xdb,0x81,0x44,0xd7, 0xb3,0x4c,0xa5,0xe8,
+ 0xfa,0xc8,0x3d,0xe3, 0xa6,0xd4,0x0a,0xe3, 0x41,0x84,0xfa,0x8b, 0xbc,0x89,0xdf,0x63,
+ 0x94,0x93,0x9a,0xcc, 0x3f,0x1e,0x7a,0x59, 0xf4,0x52,0x12,0x3b, 0x23,0xe8,0xdb,0x81,
+ 0xa7,0xb3,0xd1,0xef, 0xa5,0x3a,0xb4,0x7f, 0x0f,0x3f,0xfe,0x7d, 0x58,0x52,0x69,0x60,
+ 0x40,0xd0,0xdb,0x2a, 0xa0,0x41,0x39,0xb4, 0x4f,0xf6,0xdf,0xf3, 0x3e,0x4e,0x14,0x2c,
+ 0x5d,0xf6,0x50,0x14, 0x63,0x58,0xa8,0xbe, 0x7f,0xad,0xc8,0x50, 0x90,0x74,0x1c,0x8a,
+ 0xe5,0x19,0x9f,0x38, 0x74,0x01,0x63,0x5f, 0x67,0x6d,0x6d,0xdd, 0xfa,0x95,0x71,0xfb,
+ 0x33,0xdb,0x12,0x45, 0x41,0x67,0xff,0x12, 0xb5,0xea,0x51,0x67, 0x68,0x5b,0x39,0x03,
+ 0xf4,0x82,0x2c,0xa6, 0x03,0xaf,0x1c,0x9a, 0xa2,0x50,0xb9,0xf0, 0x94,0x6e,0x89,0x73,
+ 0x76,0x78,0x1e,0x2f, 0x51,0x2f,0xcc,0x0a, 0x43,0x24,0x52,0x5e, 0x93,0xdc,0x55,0x49,
+ 0x15,0x05,0x51,0x80, 0xef,0x9b,0xc7,0xa6, 0x66,0xd3,0x24,0x80, 0xf6,0xd9,0xee,0xb2,
+ 0x5e,0x9d,0xdc,0x66, 0x3b,0x0f,0xce,0x44, 0xae,0x31,0xc5,0x98, 0xbe,0x11,0x34,0x8c,
+ 0xc4,0xa0,0x09,0x32, 0xf5,0xad,0xd7,0xf9, 0x9e,0x3c,0x8c,0xd6, 0x5f,0x69,0xca,0x61,
+ 0x7c,0xdc,0xa4,0x8c, 0x03,0x4e,0xd1,0x1c, 0xfb,0x0c,0xa6,0xa7, 0x51,0xc5,0xfa,0x93,
+ 0x47,0xc6,0x9b,0xac, 0x97,0x7e,0x4e,0x6d, 0x64,0x62,0x42,0x91, 0x4f,0x5a,0xa0,0x28,
+ 0x0a,0x82,0xa3,0x96, 0xb5,0x31,0x67,0x52, 0xaf,0x49,0x0a,0x43, 0x55,0x14,0x35,0x0b,
+ 0x79,0x04,0xc2,0x23, 0x78,0x1b,0xe5,0xb3, 0x7a,0x4b,0xb4,0x9d, 0xad,0x06,0x87,0xf2,
+ 0x7d,0x6f,0x49,0x00, 0x54,0x04,0x6e,0x06, 0x74,0x41,0x01,0x4e, 0x03,0x12,0x35,0xfb,
+ 0xd7,0x7a,0x5e,0x35, 0xf3,0x00,0x14,0x47, 0x66,0xb2,0x48,0xaf, 0x84,0x9a,0x20,0x2f,
+ 0xe7,0x08,0x53,0x9c, 0x1c,0xb3,0x04,0x95, 0x14,0x34,0xc6,0xc7, 0x44,0x19,0x54,0xca,
+ 0x4a,0x21,0xf7,0xca, 0x03,0x3d,0xcf,0x15, 0x56,0xb9,0xb7,0xac, 0xfa,0x6c,0x69,0x8d,
+ 0xe7,0xe9,0x78,0x68, 0x24,0xad,0x89,0x8b, 0xce,0xea,0x3b,0xb9, 0x97,0xd4,0x11,0x6e,
+ 0xc0,0x5e,0x59,0x54, 0x19,0x4f,0xae,0x17, 0x8a,0x64,0x42,0x7b, 0x02,0x17,0x01,0xd9,
+ 0xaf,0x93,0x4a,0x84, 0x4d,0x8d,0x08,0x40, 0x78,0x46,0xc0,0x58, 0x3e,0xa3,0xc0,0x0b,
+ 0x5e,0xd7,0xe0,0xf3, 0x3d,0xae,0xd3,0x99, 0x8f,0x44,0xce,0x1d, 0x3a,0xdf,0xd6,0x20,
+ 0x15,0x5f,0xce,0x81, 0x98,0xf1,0xa8,0x2f, 0xf8,0xfe,0x33,0x2f, 0x17,0x7d,0xe4,0x5b,
+ 0x45,0xec,0x11,0xc2, 0xad,0xf8,0x99,0xfe, 0xfe,0x0d,0xd4,0xce, 0x9e,0x51,0xb8,0xf5,
+ 0x51,0xe2,0xa2,0x7d, 0xf5,0x74,0x62,0xe9, 0xb6,0xaf,0x55,0x5d, 0xa6,0x74,0xcb,0x94,
+ 0xdb,0xfe,0xa1,0xdb, 0xe3,0x7d,0x29,0x64, 0x6d,0x19,0x13,0xd7, 0xb1,0xcf,0xbf,0xc4,
+ 0x2e,0x3e,0x33,0x8b, 0xf3,0xad,0x5e,0xf5, 0xfe,0x7e,0x56,0x4c, 0x29,0xce,0xc9,0xd7,
+ 0x47,0xd1,0x65,0x13, 0x92,0xac,0x6e,0x08, 0x43,0x0a,0x69,0xaf, 0x2d,0x68,0x68,0x97,
+ 0x2d,0x61,0xd9,0x80, 0xc0,0xd2,0x7a,0x4d, 0x1d,0xa9,0x80,0x30, 0xfb,0xa3,0x5b,0x51,
+ 0xd9,0xf7,0xbf,0xba, 0x7e,0x16,0x3f,0xbc, 0x09,0xf4,0xf1,0xad, 0x1c,0xbd,0xc2,0xbb,
+ 0xce,0xc2,0xa3,0xde, 0x70,0x7d,0x84,0x33, 0xff,0xba,0x98,0xe8, 0x73,0x06,0x2b,0x6a,
+ 0xf0,0xae,0x89,0xc5, 0x78,0xc3,0x13,0x96, 0x91,0xb6,0x9a,0x40, 0x1d,0xef,0xa1,0xdf,
+ 0xd8,0x99,0xfd,0x5d, 0x9c,0xc5,0xd4,0xc7, 0xb3,0xb1,0x8a,0xb8, 0x29,0x4c,0xe1,0xb3,
+ 0x9f,0x65,0x71,0xe9, 0x9a,0x87,0x4e,0x6a, 0xa5,0x38,0x5b,0xf4, 0x4c,0x63,0xa0,0xc3,
+ 0x41,0x11,0x54,0xbc, 0x2c,0xec,0x35,0x06, 0x87,0x21,0xaa,0x83, 0xd3,0x80,0x5e,0x49,
+ 0xb8,0xdb,0xfb,0xbf, 0xe3,0xa0,0x3b,0x33, 0x14,0xf1,0xea,0x1e, 0x7d,0x94,0x39,0x4b,
+ 0x9f,0xd7,0xb0,0xdf, 0xe4,0x68,0x40,0x92, 0x28,0xab,0xe1,0x71, 0x14,0x27,0xb6,0x29,
+ 0xdc,0x42,0xa0,0xe4, 0xaf,0x61,0xe8,0x3e, 0x6f,0x81,0x32,0xbc, 0xdf,0x98,0x0f,0xf2,
+ 0x05,0xea,0x7b,0x4f, 0xf2,0xf7,0x79,0x4c, 0xe2,0x88,0x07,0x95, 0xe7,0xf0,0x70,0x3f,
+ 0x0f,0x8b,0x14,0x34, 0x8c,0x80,0xeb,0xa7, 0xab,0x57,0x81,0x87, 0x86,0x5e,0x49,0x8a,
+ 0x1f,0xf5,0xfd,0x9d, 0x1c,0x3f,0x5e,0x22, 0xb9,0xcc,0x2d,0x36, 0xc3,0x8e,0x9f,0x13,
+ 0xa2,0xa6,0x65,0xcb, 0xcb,0xd6,0xbb,0xa4, 0x88,0x11,0xbe,0xd6, 0xcb,0x5d,0xe9,0x1b,
+ 0x55,0x7d,0x3c,0x56, 0x32,0xbb,0x14,0x31, 0xf7,0x66,0xea,0x1c, 0xb9,0x0b,0x3a,0x5c,
+ 0x26,0x35,0x0e,0xe9, 0x27,0x68,0x19,0x11, 0x18,0x18,0xe5,0xd7, 0xdc,0x1e,0x47,0x09,
+ 0xa6,0xa2,0x75,0x80, 0x51,0x85,0x8f,0x8d, 0x77,0xd1,0xcc,0xec, 0x1b,0x6f,0xa3,0x5b,
+ 0x90,0xdf,0x78,0xab, 0xed,0x2e,0xe9,0xa5, 0xa5,0x95,0xd1,0x48, 0x71,0x29,0xc3,0x16,
+ 0x83,0x31,0x05,0x1f, 0x76,0x8f,0x42,0x95, 0x31,0x50,0x47,0xf6, 0xfc,0x2e,0x97,0xe3,
+ 0x7b,0xde,0xff,0x85, 0xc6,0xfb,0xda,0x75, 0xba,0x32,0x1a,0xf9, 0x17,0xfe,0xc3,0xdd,
+ 0x6e,0xd5,0x21,0xc2, 0xa2,0x71,0x74,0x43, 0xc0,0xdf,0xf2,0xe9, 0x49,0x52,0x65,0x1f,
+ 0x23,0x80,0xc7,0xbd, 0x91,0x5d,0xf4,0xba, 0xb9,0xf0,0x74,0xec, 0xe6,0x7c,0x8f,0x88,
+ 0x70,0xd6,0xea,0x2f, 0x25,0xcf,0xde,0xd4, 0x6f,0xc0,0xe9,0xfb, 0x33,0xa0,0x4a,0xbf,
+ 0x58,0xe8,0x31,0xe1, 0xbb,0x47,0x8d,0x8b, 0xc4,0x85,0xc1,0x12, 0x3b,0x96,0x1f,0xfb,
+ 0x4a,0x49,0x4d,0xd3, 0x94,0x9d,0x36,0x53, 0x30,0x70,0xe3,0x8c, 0xdd,0x74,0x8e,0x5e,
+ 0x7b,0xf1,0x2b,0x2d, 0x6a,0x3d,0xbc,0x92, 0x63,0x7d,0x4e,0x5b, 0x3c,0xa8,0x53,0x59,
+ 0x56,0x4b,0xe4,0x71, 0x53,0xb6,0x73,0x5d, 0x06,0x7a,0x6d,0xa6, 0x93,0x9c,0xaf,0x8c,
+ 0xa3,0x39,0xbd,0xd4, 0x68,0xf0,0x5c,0xfe, 0xb9,0x50,0xb5,0xe9, 0x77,0x51,0xbf,0x81,
+ 0x38,0xf8,0x2e,0x03, 0x1c,0xbb,0xa8,0xa4, 0xbf,0xa7,0x05,0x5b, 0x9e,0x84,0xad,0xd8,
+ 0xb6,0xe6,0xf7,0x71, 0x7b,0x84,0xbe,0x4b, 0x1d,0x28,0x53,0xb1, 0xa7,0x48,0xdb,0xa5,
+ 0xdf,0xad,0x47,0xa5, 0x10,0x42,0x49,0xcb, 0x9e,0xde,0x9f,0xee, 0xab,0xb5,0xa7,0x7d,
+ 0xf3,0xb5,0x04,0x5e, 0x68,0x92,0x2e,0x33, 0xa8,0xe6,0x6b,0xf0, 0xeb,0x50,0x66,0x7e,
+ 0x0c,0x3e,0x76,0x7e, 0x07,0xff,0x25,0xfb, 0xb9,0xf9,0x48,0x19, 0xe4,0x83,0xea,0x81,
+ 0x87,0xa9,0xe9,0xd8, 0xd8,0x77,0x4e,0x36, 0xbd,0xae,0xce,0x54, 0x1c,0x61,0x2f,0xc5,
+ 0xe7,0xde,0xa4,0x5c, 0x01,0x2d,0x19,0x19, 0x62,0xb9,0x84,0xf1, 0x5e,0x69,0xe9,0xa7,
+ 0xd1,0xc9,0xec,0xea, 0x3a,0xf6,0x1c,0x15, 0xaf,0xfe,0x39,0x49, 0x95,0x04,0xfa,0x40,
+ 0xf8,0x2b,0xd0,0xb7, 0xd2,0xd9,0x3b,0xa4, 0x23,0xd5,0x57,0x79, 0x21,0xa1,0x32,0xc7,
+ 0x54,0x08,0xda,0x16, 0x4f,0x64,0x80,0x40, 0x9d,0x36,0x00,0x3b, 0x4f,0xa7,0x1d,0xd6,
+ 0xcf,0xf5,0x57,0xda, 0xea,0xbd,0x2c,0xd7, 0xdb,0xf1,0x81,0x2c, 0x3d,0x87,0x3b,0xde,
+ 0x7d,0x15,0x2b,0x6e, 0xf4,0x34,0x0a,0x4b, 0x05,0x62,0x03,0x0b, 0xc0,0xd8,0x5a,0x45,
+ 0x04,0xaf,0x23,0xc8, 0x69,0x1e,0x83,0x29, 0x0d,0x7d,0x6e,0x6d, 0x5a,0xb2,0x16,0x26,
+ 0xcf,0xa9,0x9b,0x83, 0xad,0xee,0xf9,0xf7, 0x7b,0xb1,0xbb,0x2e, 0xcd,0x43,0x2f,0xea,
+ 0x84,0xf6,0x1b,0xfe, 0xab,0x4f,0x52,0xe2, 0xed,0x56,0x93,0x44, 0x92,0xfc,0x3b,0x6e,
+ 0x63,0xb2,0xa3,0x47, 0xc6,0x59,0x95,0x64, 0xd5,0xfb,0x39,0xd7, 0x79,0xda,0xc5,0xbd,
+ 0x8d,0xc9,0x22,0xbb, 0x5d,0x7f,0xbb,0xbe, 0x92,0x2b,0xba,0xc4, 0xd0,0x39,0xb3,0x03,
+ 0x46,0x51,0xd4,0x72, 0x05,0xbc,0x54,0x4a, 0x1c,0x8a,0x7c,0xd8, 0xed,0xb1,0x58,0xab,
+ 0x6d,0xb3,0x78,0x21, 0xf4,0x7a,0x3f,0x07, 0xd4,0xf5,0x9d,0x5b, 0xf9,0xc7,0xe0,0x0c,
+ 0xd7,0xd4,0x40,0x80, 0x9a,0x63,0x2b,0x13, 0xae,0x68,0x58,0x1b, 0x39,0xfe,0xa7,0x5a,
+ 0xa8,0x7a,0xfb,0x2f, 0x49,0xd6,0x8c,0x04, 0xa1,0x1e,0xac,0x4e, 0x9a,0x2a,0x00,0x7c,
+ 0x25,0x62,0x3a,0x4e, 0xe2,0xef,0x61,0xea, 0x31,0x3d,0x7c,0x24, 0x93,0x45,0xb6,0x19,
+ 0x12,0x20,0x7d,0x4b, 0x81,0x36,0x36,0x26, 0xd3,0x6d,0x32,0x23, 0xa8,0x90,0x65,0xa4,
+ 0xa9,0xf7,0x79,0x7c, 0xc6,0x69,0xf6,0x6b, 0x50,0x19,0xda,0x06, 0xad,0x62,0x04,0x42,
+ 0xe0,0xcb,0x01,0x4a, 0xf3,0xd3,0xce,0xd1, 0xfe,0x0c,0x8b,0x75, 0x71,0x30,0x9d,0xb4,
+ 0x9b,0xfa,0x5c,0x6f, 0xbd,0xe8,0xae,0x96, 0xa2,0xcd,0x5f,0x19, 0xe7,0xd8,0x0e,0x93,
+ 0x22,0xc9,0x0f,0x8e, 0x06,0xab,0xeb,0x60, 0xce,0xf1,0xe3,0xbb, 0x81,0x59,0xe7,0x2f,
+ 0xd6,0x3d,0x5c,0x4d, 0xab,0x0f,0xb1,0xa1, 0xff,0x29,0xb6,0x59, 0xd1,0x40,0xe8,0xe5,
+ 0xfa,0x04,0x2e,0x87, 0x96,0xc9,0x96,0x4e, 0x59,0x2b,0x86,0xa1, 0xc4,0xd2,0x75,0x73,
+ 0xe7,0xe4,0x42,0xf5, 0x62,0xda,0xb4,0x23, 0x3d,0x59,0xbb,0x8e, 0x1f,0xfb,0xea,0x68,
+ 0x55,0xe8,0x57,0xbf, 0x72,0xa0,0x78,0x6d, 0x76,0x0a,0x4e,0x73, 0x14,0xbd,0xec,0xde,
+ 0x54,0x82,0x64,0x64, 0x21,0xbd,0x14,0x8c, 0xe5,0x25,0x46,0xd3, 0x76,0xe2,0xa9,0x76,
+ 0x5e,0xc7,0x85,0x49, 0x88,0x2d,0x5c,0xfd, 0x30,0x59,0xc0,0x02, 0x13,0x16,0x79,0xa8,
+ 0x0a,0x35,0xfe,0x13, 0xe2,0x8a,0x6d,0xdb, 0x8d,0xb8,0xa8,0xa0, 0x4c,0xa3,0x35,0xa4,
+ 0xd8,0xef,0x84,0xbe, 0x67,0x13,0xa9,0xee, 0x67,0xdf,0x18,0x27, 0x43,0x80,0xfa,0xb1,
+ 0x6a,0x45,0x22,0x23, 0xf4,0x55,0x7b,0x12, 0x66,0x01,0xba,0x3e, 0x50,0xe8,0x6b,0x89,
+ 0xec,0x1e,0x39,0x0a, 0x94,0x44,0xa9,0x37, 0x9e,0x76,0x7a,0x43, 0x46,0x8a,0xa2,0xba,
+ 0xdd,0xbd,0x11,0x60, 0x8c,0xe9,0x50,0x53, 0x15,0x55,0xcb,0xb4, 0x55,0xc7,0x97,0x45,
+ 0x7b,0x33,0x69,0x32, 0x07,0xc0,0x82,0x1f, 0x83,0x6e,0x42,0x9c, 0xe0,0xbc,0xe7,0xa0,
+ 0xfb,0xd3,0x80,0x6a, 0x19,0x0f,0x7d,0xf7, 0x74,0xa2,0xba,0x31, 0xa9,0xd3,0x4e,0x68,
+ 0x38,0x68,0x4e,0xa5, 0xb0,0x98,0x78,0x4e, 0x89,0x28,0x87,0x6a, 0xb8,0x54,0x71,0x27,
+ 0x40,0xde,0xa7,0x8b, 0x5f,0x60,0x83,0x8d, 0xff,0x49,0x5a,0xe3, 0x11,0x35,0x39,0x59,
+ 0x92,0x5f,0x3f,0x73, 0x8f,0xe9,0xb4,0xbd, 0xcc,0xd0,0x77,0xab, 0x08,0x4d,0xb6,0xc5,
+ 0x7a,0xdf,0x5d,0xa5, 0xa7,0xfd,0x33,0x15, 0xac,0xb6,0x4b,0xf7, 0xdc,0xf5,0xbc,0x55,
+ 0x1e,0x6f,0x1f,0xe7, 0x39,0xf9,0xe1,0x83, 0x6d,0x4b,0x2f,0x3a, 0x4a,0x9b,0x6c,0xa6,
+ 0x15,0xd0,0xdb,0x4e, 0x4a,0xda,0x74,0x29, 0x7c,0x0e,0x06,0xff, 0x3e,0x3d,0xcd,0x9b,
+ 0x86,0x99,0x0b,0x39, 0x36,0x13,0xd9,0xad, 0x91,0xe5,0x3e,0xa8, 0xea,0x3c,0x01,0x84,
+ 0xdb,0x82,0xd1,0xd5, 0x1c,0xe4,0xd2,0x70, 0x1b,0xe3,0x29,0x22, 0x7a,0xf5,0x1f,0x45,
+ 0xd2,0xda,0x48,0xac, 0xd6,0x29,0x37,0xc2, 0x4e,0x65,0x61,0x06, 0x12,0xb4,0x08,0x53,
+ 0xda,0x1d,0xd9,0xab, 0x2c,0xef,0x17,0x77, 0x43,0x69,0x59,0x87, 0xf0,0x22,0x41,0x93,
+ 0x46,0x83,0xc9,0x55, 0xf1,0x6c,0xbf,0xb5, 0xb3,0xb1,0x21,0x79, 0x37,0x57,0x7c,0x10,
+ 0xa5,0x99,0xd3,0x33, 0x53,0x79,0x84,0x6f, 0x24,0x14,0x05,0xc4, 0xb5,0x1d,0xfe,0x46,
+ 0xd0,0xad,0x94,0x35, 0xd9,0x5c,0x90,0x09, 0x94,0x52,0x06,0x10, 0x9a,0x4a,0xbb,0xbb,
+ 0x4c,0x38,0x77,0x9f, 0x42,0x82,0x58,0xad, 0x61,0xe3,0x46,0x0b, 0x3c,0xa6,0xb6,0x4c,
+ 0x9b,0xf0,0x6a,0x50, 0x85,0x64,0x62,0x3d, 0x83,0x35,0x2c,0x24, 0xd0,0xb1,0x19,0x65,
+ 0x86,0x5b,0x14,0x98, 0x96,0x03,0x04,0x63, 0xb1,0x2f,0x62,0xc4, 0x0b,0x57,0xfe,0x3c,
+ 0x5e,0x04,0x93,0x3e, 0x5d,0x07,0x29,0x83, 0x67,0x8b,0x9f,0x99, 0x73,0x1c,0x65,0xb0,
+ 0xfc,0x00,0x46,0x8a, 0xb5,0x18,0x6d,0xd3, 0x36,0x9b,0xc8,0x36, 0x24,0x48,0x84,0x1f,
+ 0x94,0x12,0x33,0x52, 0xe5,0x44,0x32,0x66, 0x7c,0x72,0x0e,0x4c, 0x75,0x24,0xe6,0xee,
+ 0x14,0xf1,0x22,0x77, 0x3e,0x34,0x01,0xfc, 0x44,0xaa,0x1f,0x3a, 0x7a,0x23,0xd6,0xca,
+ 0x7f,0xbb,0x16,0xc1, 0xb9,0x83,0x23,0xed, 0x6b,0x17,0x9f,0xc5, 0x61,0x75,0x75,0x18,
+ 0xad,0xf9,0x96,0xbf, 0x00,0x45,0x17,0x76, 0xbd,0x1b,0xd7,0x5d, 0x36,0xa3,0xdd,0x16,
+ 0x3d,0x5e,0x36,0x96, 0xaa,0xed,0xaf,0xfb, 0x8c,0x2d,0x09,0x29, 0x9b,0xa1,0xb3,0x4f,
+ 0xd4,0x6d,0x6a,0xab, 0x3c,0xd8,0xf4,0x6d, 0x60,0x39,0x31,0xa8, 0x10,0xd2,0xcb,0x39,
+ 0x81,0xb4,0x48,0x79, 0x84,0xd8,0xa5,0x14, 0xe4,0x58,0x48,0x88, 0x8c,0x92,0xce,0x25,
+ 0x20,0x0d,0x0c,0x18, 0x48,0x02,0x09,0x18, 0x19,0xbd,0xe8,0x38, 0x00,0xf4,0x5b,0xa3,
+ 0x46,0x1c,0x69,0x69, 0x4a,0x29,0x90,0xd5, 0xb5,0x11,0xba,0x4d, 0x64,0x40,0xa8,0x6d,
+ 0xb3,0xad,0xb3,0x16, 0xdc,0xcd,0x52,0x0b, 0x85,0x43,0x3f,0x75, 0x5b,0x78,0x83,0xdb,
+ 0x96,0x35,0xcd,0x20, 0xd3,0x9b,0xf5,0x92, 0x02,0xf6,0xef,0xc6, 0x93,0x70,0xe5,0x69,
+ 0x06,0xe6,0xc9,0x17, 0xb8,0xca,0xb1,0x64, 0x09,0x51,0x0a,0xdb, 0x0c,0x0a,0x32,0x83,
+ 0xc1,0x40,0x85,0x1c, 0x97,0x23,0xc3,0x81, 0x58,0xa8,0xde,0x1a, 0x3b,0x86,0xd1,0xfe,
+ 0xca,0xd6,0x25,0xa7, 0x2d,0xe3,0x6f,0xe8, 0xb1,0xcf,0x98,0x97, 0x0c,0xa1,0x0d,0xaf,
+ 0xe8,0xea,0xda,0x58, 0xeb,0x20,0x7d,0xc8, 0x35,0x99,0xc5,0x4f, 0x71,0xd9,0x4f,0x89,
+ 0x6d,0x22,0xb6,0xba, 0xb6,0x0d,0xc2,0x4f, 0xcd,0x41,0xe8,0xbf, 0x34,0x4e,0xbf,0x7c,
+ 0x9f,0xaa,0x62,0x7b, 0x98,0xd0,0xcb,0x44, 0xa1,0x57,0x2f,0xb1, 0x37,0xf9,0x0e,0xb7,
+ 0xb9,0x0e,0x44,0x3d, 0xed,0xe9,0x07,0xea, 0xdc,0xef,0x10,0x9e, 0x06,0xbb,0x71,0x0f,
+ 0xc3,0xd1,0x37,0x5c, 0x1d,0xb4,0x1c,0x97, 0x0f,0x67,0xc5,0x6d, 0xf2,0x66,0x11,0x6e,
+ 0x9c,0xe8,0x8c,0x61, 0x71,0xd9,0x8b,0xb1, 0x4e,0x08,0x53,0x7c, 0x88,0xda,0x21,0x8c,
+ 0x5d,0x75,0x3f,0x16, 0x8b,0x34,0x2a,0x79, 0x83,0xd1,0x63,0x42, 0x7f,0xec,0x9f,0xb7,
+ 0x74,0x26,0x2a,0x95, 0x7f,0xd3,0x7b,0x36, 0x9f,0x63,0x1d,0xf0, 0xfb,0xb0,0x50,0x5b,
+ 0x0f,0x0d,0x06,0x7e, 0x42,0x24,0x83,0xec, 0xf8,0xb9,0xed,0xba, 0xbc,0xd5,0x34,0xb5,
+ 0xef,0xe6,0xc8,0xd3, 0xce,0x89,0x17,0x89, 0x65,0xda,0x4e,0x9d, 0x71,0xb0,0xc3,0x2d,
+ 0x62,0x59,0x17,0x8e, 0xef,0x2c,0x04,0x95, 0xe8,0x79,0x8b,0xf5, 0x7b,0x61,0x9d,0x41,
+ 0xb5,0x8f,0x84,0xd9, 0x98,0x54,0x8f,0xf5, 0x1a,0xdb,0xd6,0xf3, 0x32,0xa3,0x04,0x33,
+ 0x41,0xcd,0x98,0x25, 0xe1,0x06,0x23,0x74, 0xeb,0x02,0xa5,0x35, 0x77,0xcd,0x01,0x6b,
+ 0x32,0xe5,0xf3,0x1f, 0xc5,0xb5,0x7b,0xee, 0xf2,0x6f,0xbd,0xce, 0xce,0x43,0x48,0x6c,
+ 0x98,0xa5,0xd9,0x8e, 0x92,0x28,0x5e,0xc2, 0x9b,0x5b,0xaf,0xaf, 0x32,0xdd,0x88,0x05,
+ 0x5e,0xe4,0xed,0x43, 0x37,0xad,0xa5,0x46, 0xd2,0x1e,0x96,0x33, 0x6d,0xde,0x93,0xb8,
+ 0xbb,0x3c,0xab,0xd5, 0xf6,0x11,0xbb,0xba, 0xb5,0x80,0x79,0x0b, 0x0a,0xb7,0x69,0x65,
+ 0xa8,0xf2,0x8e,0xdd, 0x17,0xd4,0x5a,0x4b, 0x54,0x69,0x27,0xf7, 0x74,0x59,0x46,0x9e,
+ 0x9b,0x2e,0x3b,0xa3, 0x78,0xa6,0x57,0x74, 0xa2,0x71,0xee,0xdf, 0x6c,0x73,0x27,0x5c,
+ 0xb9,0xaf,0x67,0x1e, 0xd5,0x18,0x0a,0x8e, 0x8d,0x83,0x1d,0x33, 0x50,0xc5,0xea,0xcd,
+ 0xc4,0xb1,0x0f,0xd5, 0xea,0xf6,0x43,0xc9, 0xfa,0x3d,0xc7,0x54, 0xfd,0xca,0x90,0x78,
+ 0x48,0xb9,0x77,0xed, 0x4b,0x3a,0xff,0x23, 0x8c,0xdf,0x24,0x32, 0xd3,0x65,0x71,0xf9,
+ 0x86,0x99,0x0d,0x50, 0x16,0x20,0x75,0xcc, 0x19,0x8a,0xcb,0xa0, 0x34,0x40,0x28,0xf4,
+ 0x10,0x6f,0x0a,0x8a, 0x8a,0x95,0x99,0xed, 0x91,0x92,0xae,0x07, 0xd2,0xeb,0xe9,0xde,
+ 0xba,0x27,0x9c,0x01, 0x08,0xf3,0x75,0xaf, 0x54,0x7b,0x36,0xcf, 0xf9,0x56,0xb5,0xb7,
+ 0xf7,0x39,0xc1,0xc7, 0xf4,0x6e,0xb3,0xbd, 0x65,0x71,0xe2,0x71, 0xc7,0x0d,0xb5,0x77,
+ 0x93,0x02,0xa9,0x60, 0xbb,0x6e,0xd5,0xb9, 0x28,0xa7,0xfb,0xe9, 0xde,0xe4,0x7e,0x85,
+ 0x3a,0x35,0x96,0x5f, 0x0b,0x92,0x89,0x3e, 0x66,0xcf,0xc9,0x85, 0xe6,0x5d,0x37,0xc1,
+ 0x8b,0xbb,0x68,0xe6, 0x1b,0x88,0xd2,0x3a, 0x8a,0x8b,0xab,0xf8, 0xfc,0x79,0xdd,0x9c,
+ 0xad,0xb9,0x79,0x47, 0x79,0xc0,0xe7,0xb8, 0xd2,0x39,0x53,0xd3, 0xf9,0xff,0xde,0xa4,
+ 0x71,0x0e,0xef,0x5c, 0xc4,0x6f,0x7b,0x1d, 0xd4,0xda,0xf1,0x74, 0xc7,0x06,0xdd,0x94,
+ 0x4f,0x9c,0x75,0xe0, 0x2a,0xb4,0xfb,0x26, 0x3a,0x11,0x7a,0x54, 0xfb,0x6b,0xdd,0x8b,
+ 0xa3,0x4d,0x67,0xa7, 0xcc,0xfb,0xff,0x02, 0xfd,0x71,0x16,0xfb, 0x11,0xaf,0xa6,0x5a,
+ 0x8e,0xb0,0x30,0xfd, 0x3a,0xbd,0xd7,0xb0, 0xf1,0x44,0xc0,0xc0, 0xd8,0xf2,0x38,0x54,
+ 0x79,0x9a,0x43,0xd7, 0x74,0x45,0x6c,0x9c, 0x2b,0x1f,0x74,0xf9, 0x11,0x0e,0x46,0x49,
+ 0x2d,0xb5,0xbe,0xfe, 0xc9,0xf7,0xfc,0xea, 0xe6,0xb0,0x3c,0xd5, 0x7e,0x5d,0x04,0xb3,
+ 0x4f,0xe6,0xe7,0xd6, 0xd8,0xe7,0x16,0x17, 0x0e,0x7d,0x8a,0x17, 0xf2,0x4b,0x33,0x9a,
+ 0x11,0xb0,0x14,0xd0, 0x7b,0x0b,0x7f,0xc7, 0xe3,0x88,0xef,0x35, 0x79,0xe4,0x51,0xbf,
+ 0xd2,0xf7,0x06,0x2f, 0x61,0x73,0x5c,0xd7, 0xf9,0xed,0xf4,0x32, 0xf6,0x2f,0x07,0x0f,
+ 0x63,0xf2,0xe7,0x0f, 0xb7,0x65,0x0c,0x55, 0x6a,0x88,0x48,0x52, 0x51,0x64,0x23,0x41,
+ 0xfc,0x67,0xd6,0x60, 0xf3,0x44,0x6c,0x19, 0x73,0x2b,0x56,0x10, 0xfa,0xca,0x09,0x71,
+ 0xc0,0xce,0x7f,0x9e, 0xc7,0x9d,0x29,0xfa, 0xac,0xbb,0x6a,0xcc, 0xca,0xc1,0x78,0x6d,
+ 0xdb,0x4e,0xcf,0x77, 0x47,0xe1,0xd0,0x71, 0x7c,0x15,0xbb,0x07, 0x01,0xe8,0xa9,0xbd,
+ 0x1e,0xae,0x92,0xb5, 0x59,0x17,0x0d,0xd3, 0x50,0x6b,0xb2,0x9e, 0xaa,0xdf,0xbe,0xd5,
+ 0x37,0xa5,0xb1,0x95, 0x71,0xf2,0xe9,0x94, 0x99,0x8c,0xb1,0x5a, 0x3e,0x4d,0xa7,0xd7,
+ 0xad,0xc9,0x48,0xf3, 0xec,0xde,0xff,0xcc, 0x36,0xd5,0x15,0x79, 0x43,0xfb,0x5f,0x2b,
+ 0x47,0x8b,0xc4,0x71, 0x12,0x38,0xaf,0x2f, 0xd7,0x8b,0x4a,0x4e, 0xbb,0xfc,0xb6,0xf4,
+ 0x9d,0xb2,0xee,0x11, 0xd7,0xe8,0x79,0xfe, 0x2f,0xa7,0xf8,0x31, 0x7b,0x07,0xce,0x1a,
+ 0x47,0xe6,0xd0,0xae, 0xed,0xc4,0x79,0x77, 0x96,0x5b,0xa7,0x19, 0x9f,0xc2,0xd1,0x14,
+ 0x1b,0xa9,0xab,0x4f, 0x53,0x90,0xac,0xa9, 0x6c,0xe7,0x57,0x83, 0x1e,0x6b,0x6b,0xf7,
+ 0x10,0x62,0xe1,0xb8, 0x1d,0x7f,0x00,0x73, 0xf2,0x6b,0xd6,0xfa, 0x30,0x56,0xec,0xb8,
+ 0x07,0xf1,0xad,0xd3, 0x41,0xe2,0x75,0x11, 0xbf,0xe7,0xf9,0x3d, 0xd3,0x39,0xfe,0x36,
+ 0xd6,0x73,0x83,0xf2, 0x69,0x9d,0x83,0x98, 0xf8,0x75,0x6c,0xce, 0x6e,0xa1,0x6e,0x5b,
+ 0x06,0xd0,0x36,0x70, 0x20,0x84,0x66,0xfc, 0x4c,0xff,0x9b,0xc5, 0x56,0xe2,0xfb,0x8d,
+ 0x6f,0x0e,0xa6,0xeb, 0x15,0xef,0x95,0xd4, 0x9f,0x6d,0xce,0x3c, 0x32,0xed,0x4f,0xa5,
+ 0xb5,0xc1,0xba,0x4a, 0xcd,0x59,0x1c,0x1e, 0x7e,0xb5,0x11,0x92, 0xd8,0x5d,0x58,0xed,
+ 0xd3,0x8b,0xab,0x2d, 0x0a,0xb4,0x6f,0x4d, 0xcb,0x94,0x5c,0xc8, 0xb7,0x1e,0xbd,0x2b,
+ 0xf5,0x00,0x74,0x21, 0x9c,0x6b,0xa2,0x07, 0x3d,0xa4,0x23,0x06, 0x63,0x2d,0x7f,0xfb,
+ 0xef,0xcf,0x61,0x39, 0xdd,0x36,0x32,0x10, 0xb3,0x89,0xf4,0xe6, 0x30,0x39,0x16,0x33,
+ 0x99,0x6c,0xab,0x6a, 0x4c,0x9a,0x96,0x37, 0xaa,0x9f,0xde,0x96, 0xf1,0x89,0x75,0x0a,
+ 0xd2,0x33,0x73,0x92, 0xf6,0xb1,0x96,0x58, 0x31,0xbd,0x5c,0x2e, 0xce,0x22,0xa7,0x57,
+ 0xc9,0x3c,0xfe,0x82, 0x26,0x5b,0x81,0x92, 0xd8,0x34,0x92,0xa7, 0xe3,0x62,0x54,0x03,
+ 0x9d,0x21,0x97,0xc2, 0x31,0x7c,0x5e,0xda, 0xfe,0x33,0x9a,0xd3, 0x5c,0x5d,0xa4,0x4d,
+ 0x2b,0xaf,0x9c,0x21, 0x8e,0xd0,0x09,0x8a, 0x00,0x6b,0xc7,0x8f, 0x6d,0xb7,0x76,0xe1,
+ 0x1c,0xc1,0x38,0xb6, 0xc4,0xd2,0x0d,0xa4, 0xa5,0xf0,0x30,0xed, 0xdc,0x2e,0xd5,0xbf,
+ 0x1c,0xe5,0x1b,0x10, 0xff,0x7e,0xd2,0x1d, 0xc3,0xdc,0x8c,0x16, 0xab,0xd3,0x8a,0x68,
+ 0x61,0xc4,0x61,0xd1, 0x15,0x1b,0x19,0xac, 0x4e,0x1b,0x8d,0xca, 0xa2,0x5f,0x45,0x96,
+ 0xc0,0xd4,0x47,0x57, 0x54,0xf6,0x33,0xda, 0x2c,0xf7,0x7f,0x56, 0xcb,0x15,0x83,0xc0,
+ 0xe9,0xf1,0xbe,0x76, 0xeb,0x4d,0xab,0x84, 0x52,0xd5,0xd4,0xcf, 0xa1,0x6b,0x9e,0x5d,
+ 0xee,0x37,0x5f,0xb2, 0xb4,0x87,0x46,0x51, 0x5b,0xe6,0x52,0xfd, 0x90,0xde,0x36,0x57,
+ 0xc3,0xad,0x56,0xca, 0xca,0x31,0xab,0x4c, 0xbd,0xab,0xac,0x0c, 0xa3,0xd7,0x92,0x53,
+ 0x9a,0x1d,0x9e,0x53, 0x5d,0xa1,0xb7,0xca, 0xb5,0xc9,0x7f,0xbd, 0x28,0xe4,0x53,0x66,
+ 0x73,0x65,0xa1,0xdb, 0x52,0x5f,0x03,0x3b, 0xac,0xf9,0x65,0xd2, 0x9c,0xba,0x8b,0x67,
+ 0xcc,0x0c,0x97,0x23, 0x1f,0xe6,0x9d,0x70, 0x97,0xc5,0xe1,0xa1, 0xd0,0xea,0x0e,0x13,
+ 0x59,0xb1,0xb4,0x78, 0xfc,0x42,0x5d,0xe9, 0xdf,0x58,0xee,0x21, 0xed,0x1f,0xdb,0xe1,
+ 0xeb,0xaf,0xde,0xfe, 0x93,0x6b,0xa0,0x73, 0x42,0x61,0xee,0x35, 0x0f,0x9c,0xf9,0x88,
+ 0x9d,0xdf,0x20,0x8b, 0x7a,0x2e,0x50,0x21, 0x34,0x94,0xf6,0x8d, 0x21,0x0c,0x0b,0x38,
+ 0xbd,0x82,0xb1,0xb3, 0x6b,0x4d,0xe8,0xc4, 0x28,0x93,0xbc,0xaa, 0x79,0x5d,0x8e,0x8b,
+ 0x7b,0x24,0xc4,0xa6, 0x5b,0x25,0xb5,0x50, 0x72,0x65,0x76,0xf8, 0xda,0x7a,0x48,0xda,
+ 0x48,0x9d,0x3e,0xb5, 0xf3,0x8c,0xce,0xd5, 0xba,0x56,0x7c,0x2c, 0x70,0x81,0x33,0xb8,
+ 0x9f,0xb2,0xd4,0xee, 0xe7,0xd0,0xbd,0x5c, 0x61,0x97,0x34,0x80, 0x5c,0x4f,0x0d,0x1f,
+ 0x7c,0xde,0xa7,0xbe, 0xf2,0xb1,0xea,0xaf, 0xab,0xce,0xdf,0x60, 0xb6,0x1d,0xe7,0xd0,
+ 0x3a,0xc6,0xcb,0xc9, 0x7f,0x6c,0x1a,0x6b, 0xf5,0x0f,0xb8,0x9a, 0xb5,0x5e,0x12,0x8a,
+ 0x32,0x2f,0x3c,0x9e, 0x9b,0xbe,0x70,0x30, 0xbb,0xf7,0x88,0xd2, 0x5d,0x80,0x58,0xd3,
+ 0x93,0xa9,0xe9,0x44, 0x57,0xb4,0xaa,0x28, 0x4e,0xb6,0x8f,0x74, 0xcc,0x59,0x47,0x52,
+ 0xbb,0x5a,0x2e,0x2c, 0x46,0x44,0x4c,0xb8, 0x6f,0x92,0x5b,0x75, 0x48,0xf8,0xb0,0xb2,
+ 0xb7,0x69,0x7a,0x5b, 0xe9,0xc3,0x28,0xd1, 0xad,0xbd,0xcb,0x40, 0x46,0x15,0xb7,0xc3,
+ 0x80,0xae,0x55,0x06, 0xfb,0x2d,0xd4,0xe3, 0xda,0x89,0xab,0xa5, 0x72,0x78,0x34,0x48,
+ 0xc7,0x20,0x4a,0x1d, 0x01,0xb7,0x72,0x88, 0xda,0xba,0xfc,0x99, 0x97,0xe6,0x8f,0x6b,
+ 0x8d,0xee,0x2b,0xf5, 0x66,0x63,0x3e,0x5f, 0xbb,0x0f,0xea,0xc0, 0x9a,0x77,0x3f,0x02,
+ 0xb5,0xe9,0xd0,0xe2, 0xa4,0x39,0x5f,0x37, 0x8d,0x54,0x2e,0x06, 0x65,0xc1,0xe2,0xdb,
+ 0xec,0xac,0xc9,0x18, 0x14,0x9e,0x8a,0xd0, 0xd2,0xb0,0x71,0x73, 0x87,0x62,0xf5,0xbd,
+ 0x20,0x9d,0x2e,0x05, 0xdb,0xad,0xc3,0x3c, 0xb1,0xee,0x8f,0x1f, 0xb3,0xde,0xc4,0xd3,
+ 0xd9,0x00,0xf3,0xdb, 0xd4,0x42,0xe2,0x2f, 0xcd,0xfd,0x41,0xf7, 0xb5,0x66,0xd0,0xd1,
+ 0xe6,0x23,0x8a,0x62, 0x16,0x3b,0x26,0xed, 0x63,0x6a,0xb4,0xb7, 0x1c,0xc8,0x0e,0x18,
+ 0x06,0x8e,0x79,0x0b, 0x70,0x85,0x46,0x69, 0xd2,0xc3,0x14,0x92, 0x94,0xa3,0x3a,0xb2,
+ 0x5f,0x6f,0x3f,0xc1, 0x8d,0xcd,0x7b,0x9b, 0x63,0x33,0xfe,0x82, 0x7d,0xa7,0x41,0xdd,
+ 0x68,0x5f,0xc1,0x75, 0x35,0xf2,0x37,0x39, 0x3b,0x3d,0x8e,0x15, 0x29,0x64,0x9c,0x9d,
+ 0x7a,0xf6,0x2e,0x1a, 0x8d,0xc2,0xf0,0xa2, 0x34,0x51,0x39,0x2a, 0x5d,0x45,0xe1,0xb6,
+ 0xc0,0x7b,0x99,0x9b, 0xdf,0x73,0x26,0x09, 0xbe,0x5f,0x16,0x3f, 0x09,0xd7,0x70,0x3a,
+ 0xe1,0x54,0xfb,0xd2, 0xaa,0xc8,0x0f,0xc1, 0x10,0x24,0x23,0x9d, 0x69,0x84,0x58,0xa5,
+ 0x86,0xa8,0x55,0xae, 0x5b,0xdd,0x62,0x63, 0x71,0x7b,0xdb,0xac, 0x72,0x34,0xba,0x1b,
+ 0x98,0xf9,0x16,0x68, 0xbe,0xea,0x37,0x55, 0x29,0x53,0x2e,0xe9, 0xd5,0xb9,0x88,0xc0,
+ 0x1a,0x17,0x99,0xcc, 0xcc,0x17,0x93,0x04, 0x20,0xf1,0xea,0xe6, 0x79,0x54,0xef,0x6e,
+ 0xd1,0xc8,0xd7,0x69, 0x59,0xc8,0xa8,0xb9, 0x85,0x5b,0x86,0x8e, 0xb5,0x2b,0xc2,0xe9,
+ 0xfe,0x8b,0x69,0xe3, 0x42,0x85,0x5a,0x8f, 0xe2,0xcf,0x7d,0xec, 0xa8,0x3f,0x79,0x86,
+ 0xe6,0x1b,0xdc,0xc3, 0xa6,0x7c,0x79,0x37, 0xdf,0x2e,0xd6,0x14, 0x0d,0x35,0xbb,0xeb,
+ 0xe3,0xb3,0xde,0xee, 0x6a,0xd1,0xa6,0x03, 0x59,0x55,0x72,0x92, 0x92,0xfd,0x84,0xed,
+ 0x56,0x9e,0x0f,0x0f, 0x32,0x74,0xe8,0xaa, 0x78,0x4d,0x19,0x32, 0x33,0x9f,0xfe,0x67,
+ 0x29,0x48,0xdb,0xc4, 0x5f,0x6b,0x11,0x9b, 0x62,0x18,0x39,0x89, 0x22,0x46,0xb8,0xe1,
+ 0xa1,0x0b,0x9b,0x92, 0x03,0x1b,0x26,0xda, 0xfb,0x10,0xb7,0x03, 0x17,0x5c,0xc9,0x34,
+ 0x93,0x63,0x60,0x36, 0xbe,0x8b,0x48,0xa1, 0xff,0x81,0xab,0x43, 0x88,0x66,0x59,0xf3,
+ 0xa3,0xb6,0xde,0xcf, 0xc7,0xcd,0xba,0xfc, 0x67,0x79,0x5a,0xb0, 0xc6,0xd3,0x69,0x0b,
+ 0x0b,0x17,0xea,0xd4, 0x6c,0x76,0x76,0x24, 0xbf,0x5f,0x7b,0xaf, 0x94,0x68,0x76,0xae,
+ 0x5c,0xe6,0x8d,0xea, 0xe5,0xb1,0x0d,0xc8, 0x5d,0x7f,0xf0,0xb8, 0x3c,0xa1,0x15,0x45,
+ 0x99,0x21,0x7b,0x68, 0xd0,0x29,0x72,0xf5, 0x4d,0x6b,0x2a,0x0e, 0x3a,0x15,0xe8,0xeb,
+ 0x15,0x73,0xf1,0x11, 0x2e,0xe9,0x51,0x67, 0x29,0xe9,0x8d,0x8f, 0x74,0xf9,0x05,0xfd,
+ 0x57,0xcc,0x5b,0xb7, 0x2d,0x6d,0xde,0x4c, 0x95,0x91,0x55,0x2f, 0x6e,0x3a,0x87,0x3c,
+ 0x6f,0xcc,0x6c,0xdf, 0x1e,0x4d,0x90,0x84, 0x24,0x96,0xf0,0x62, 0x62,0x86,0x25,0x0a,
+ 0x5d,0x3f,0x83,0x77, 0xf8,0x63,0x81,0x5d, 0x6e,0x32,0x66,0x97, 0x4b,0xe2,0xda,0xb3,
+ 0xd6,0x57,0xf0,0x13, 0x55,0x0e,0xe0,0xfe, 0x22,0x0d,0x91,0x49, 0xd1,0x5d,0x3c,0xa2,
+ 0x33,0xa6,0x28,0x32, 0xcd,0x0a,0x0c,0x69, 0x8f,0x75,0xb9,0x49, 0x84,0xac,0xe6,0x4e,
+ 0xdd,0x8c,0x3d,0xeb, 0xaa,0x68,0xbe,0xa2, 0x04,0x01,0xb5,0x83, 0x51,0x7d,0xc3,0x58,
+ 0x7d,0x0c,0x61,0xfc, 0x17,0xa7,0x8d,0x75, 0x88,0xf1,0x9c,0x0e, 0x87,0x31,0x3d,0x85,
+ 0xe7,0xc1,0x8a,0xba, 0xb7,0xa3,0x95,0x69, 0xb4,0x70,0x2a,0xcb, 0xe5,0xbf,0xb3,0xb8,
+ 0xb5,0x77,0xbd,0x25, 0xbc,0x99,0xbe,0xa4, 0x70,0xc0,0xab,0x49, 0x02,0x9f,0x84,0xb4,
+ 0xa4,0xb2,0xf1,0xb0, 0x1e,0x15,0xf8,0x52, 0xa4,0x92,0xd6,0xc7, 0x74,0xdd,0x1d,0xeb,
+ 0xbd,0xa2,0xc7,0x30, 0x58,0xaa,0x9d,0xb2, 0xab,0x82,0xe6,0x25, 0x8d,0xa1,0x59,0x46,
+ 0xde,0x86,0xbb,0x52, 0x3a,0xab,0x93,0x46, 0xa2,0x71,0x2b,0x2d, 0xd5,0x4f,0x00,0x8e,
+ 0x4c,0xc3,0x23,0xd3, 0xd4,0x61,0x7a,0xf1, 0xb3,0x27,0x19,0x18, 0x99,0xdb,0x81,0xcb,
+ 0xa8,0x66,0x5e,0x75, 0x4c,0xc1,0x7e,0x5f, 0xc0,0xe5,0x3d,0xa4, 0x6b,0x4a,0xb1,0x1f,
+ 0x3f,0x02,0xe6,0x1e, 0x01,0xf7,0x19,0x7d, 0xab,0x58,0x79,0xd8, 0x4a,0x36,0xe9,0xf5,
+ 0xba,0xdb,0xbb,0x4f, 0x73,0x78,0xdc,0xe5, 0x01,0x59,0x3c,0x1e, 0xa5,0xba,0xf2,0x41,
+ 0x0d,0xcc,0xff,0x65, 0x10,0x59,0x59,0x99, 0x9b,0x69,0x94,0x82, 0x09,0x77,0x66,0x83,
+ 0x68,0x77,0xb5,0x78, 0x9e,0x9b,0xb8,0x58, 0x3a,0x86,0xc4,0xf0, 0x38,0xce,0x95,0xd3,
+ 0x84,0x7b,0x18,0x43, 0x87,0x60,0x1b,0x7a, 0x9d,0x6d,0xf6,0x85, 0x5e,0xd6,0x9a,0xba,
+ 0xab,0x19,0xad,0xdb, 0x2f,0xe1,0xa3,0x65, 0x91,0x67,0x90,0xd9, 0xa8,0xb8,0x3d,0x2f,
+ 0x7c,0xa2,0xdf,0x0f, 0xd1,0xd6,0xfc,0xce, 0xfb,0xab,0x97,0xf9, 0x1d,0x53,0xb4,0x96,
+ 0xe9,0x3a,0xe6,0x1c, 0x0e,0xd1,0x52,0x4a, 0x71,0x7a,0x86,0x6c, 0x83,0xf2,0xf8,0xeb,
+ 0xcb,0x8d,0x16,0xca, 0x61,0x46,0x4d,0xb6, 0x8a,0x7a,0x26,0x06, 0x6b,0xdd,0x2f,0x3f,
+ 0xb3,0xac,0xe2,0xc9, 0xab,0xd3,0x9d,0xe6, 0xb4,0x51,0xf3,0xae, 0x4b,0x0d,0x1f,0x84,
+ 0x53,0xc2,0x85,0x7c, 0xc3,0x86,0x46,0xaf, 0x27,0x08,0x48,0xcd, 0xbc,0xbb,0xde,0x9e,
+ 0xe5,0x6f,0x7b,0x93, 0x53,0x0c,0xda,0xf4, 0xeb,0x1a,0x31,0x7f, 0x22,0xe0,0x6e,0xf7,
+ 0xa7,0x6c,0x72,0x97, 0x31,0x54,0xae,0x1d, 0x1c,0x35,0x4a,0x8c, 0x43,0x42,0xa3,0x11,
+ 0xd8,0x14,0xbf,0x6d, 0x6d,0x43,0x86,0x47, 0x6d,0x89,0x1a,0xee, 0xa4,0x0f,0x6b,0xea,
+ 0xd6,0xcf,0x5f,0x4e, 0xf6,0xfb,0xfb,0xe9, 0x15,0xca,0xaa,0x95, 0xce,0x28,0x18,0x9b,
+ 0xab,0x8e,0x60,0xa6, 0x27,0xba,0xeb,0x21, 0xd3,0x0f,0xcf,0x72, 0xd8,0x69,0xd5,0xf7,
+ 0xcd,0x16,0x1f,0x58, 0xc0,0x76,0x04,0x77, 0x66,0x82,0xe2,0xad, 0x15,0x3d,0xe9,0x1c,
+ 0xe9,0x40,0xac,0x09, 0xd0,0x99,0x80,0xd5, 0xf1,0x11,0xed,0x8a, 0xde,0x2b,0x2a,0xfa,
+ 0x75,0x8c,0xe2,0x2a, 0x4b,0x73,0x28,0xec, 0xa4,0xd6,0x59,0x50, 0x8c,0x45,0x65,0xee,
+ 0x94,0x38,0x4c,0x8c, 0x44,0x17,0x23,0x11, 0x01,0x30,0x82,0x5a, 0xb9,0x51,0x51,0x1a,
+ 0xd6,0x52,0xee,0x60, 0xa9,0x11,0x20,0x73, 0x66,0xdb,0x6b,0x87, 0x5b,0xa3,0x56,0x09,
+ 0xe7,0xae,0xdd,0x88, 0xc0,0xe8,0xf5,0x18, 0x3d,0x77,0xe9,0x45, 0xc9,0x07,0x0d,0x1a,
+ 0x02,0x37,0xde,0x57, 0x25,0xc9,0x2f,0xb5, 0xce,0x6f,0x15,0x4b, 0xc2,0xae,0x47,0x1e,
+ 0x73,0x52,0xeb,0x27, 0x92,0x4d,0xc1,0xbd, 0x99,0x14,0x64,0x02, 0xf0,0xbe,0x6c,0x3a,
+ 0xb3,0x66,0x65,0x17, 0xc6,0x87,0x99,0x9d, 0xb9,0xc4,0xee,0x73, 0x16,0x81,0xef,0xaa,
+ 0xb4,0x23,0x7d,0x11, 0x22,0x89,0x22,0x48, 0x1f,0xa8,0x73,0x93, 0xbc,0x7b,0x22,0x51,
+ 0x30,0x9f,0xaf,0xcd, 0x3b,0x03,0xe9,0x3b, 0xee,0x93,0x71,0x9c, 0xbf,0xaa,0xae,0x68,
+ 0xf5,0x50,0x41,0xfd, 0xbe,0x7e,0xe7,0x9b, 0xe8,0x3f,0xca,0x9e, 0x85,0xa3,0x89,0x76,
+ 0xc6,0x6f,0x06,0x07, 0x6d,0x38,0x0c,0xcf, 0xe1,0xb7,0x53,0xf2, 0xcf,0x47,0x3c,0xc2,
+ 0x90,0x52,0x46,0xa8, 0x10,0xf0,0x5d,0x7b, 0x8f,0x54,0x79,0x97, 0x43,0xc6,0x60,0x77,
+ 0xfc,0xde,0x94,0x75, 0x8f,0xdc,0xac,0x33, 0xc9,0xa4,0x21,0xee, 0x4c,0x05,0x13,0xd1,
+ 0x17,0xfe,0x16,0x02, 0x1d,0xfe,0x12,0xa6, 0xb6,0x39,0xb9,0xd7, 0x46,0xe3,0x27,0xcc,
+ 0x5e,0x6d,0x94,0xd5, 0xad,0x94,0xd6,0x22, 0xb6,0xc7,0xaf,0x69, 0x8f,0x55,0xe5,0xcf,
+ 0x21,0x10,0x5c,0xd4, 0xbf,0xc5,0x56,0xc2, 0xb3,0xb3,0xbe,0xe3, 0x34,0x28,0x62,0x0b,
+ 0x5a,0xd8,0x40,0xce, 0x44,0x75,0xeb,0x94, 0x02,0xe6,0xde,0xa9, 0x5c,0xbd,0x03,0xae,
+ 0x97,0x4f,0x9f,0xd6, 0xa7,0x6f,0x7b,0xf6, 0x9c,0x84,0x33,0xf6, 0xba,0x32,0xb7,0x7e,
+ 0x54,0x47,0x25,0xa6, 0xde,0x3f,0x93,0xb3, 0x6c,0x8e,0xa2,0xf6, 0x8d,0x6f,0xd3,0x98,
+ 0xac,0xc8,0x8d,0x87, 0xcb,0x31,0x8a,0xa6, 0x08,0xd3,0xb4,0x2f, 0xe1,0xb5,0xaa,0x57,
+ 0xc6,0xdb,0x54,0x71, 0x9e,0x7f,0x89,0xf3, 0xbb,0xae,0xc3,0xe6, 0xcb,0xf5,0x1e,0x4d,
+ 0x6d,0x4f,0x5f,0x2f, 0x53,0x6c,0x4c,0x7f, 0xc0,0xe7,0xd4,0x88, 0x1a,0x61,0xa0,0x70,
+ 0x6a,0x08,0x38,0x08, 0x40,0x5e,0xf6,0x41, 0x4f,0x72,0x76,0xff, 0xc3,0xe9,0xe9,0xc5,
+ 0x43,0x9f,0xeb,0x30, 0xe0,0x29,0xe3,0x6d, 0x5c,0xca,0x1d,0x3e, 0xf6,0xab,0xf5,0xb6,
+ 0x95,0xf0,0xf5,0xa2, 0x9a,0x89,0x2f,0x9c, 0xe3,0x7b,0x8e,0xb2, 0xa2,0x51,0xb5,0xef,
+ 0x95,0xe7,0xe9,0xe6, 0xba,0x6f,0x88,0x0d, 0x6b,0x89,0x22,0x52, 0xd3,0x37,0xe9,0x0d,
+ 0x95,0x49,0x3d,0x63, 0x6c,0x72,0x88,0x44, 0xda,0x6d,0xca,0xd4, 0x18,0x14,0x03,0x10,
+ 0xc2,0x8a,0x0f,0x88, 0xa8,0x8c,0xd7,0xea, 0xe4,0xb9,0xef,0x27, 0x53,0xda,0xf9,0x47,
+ 0x9d,0xfd,0x98,0x39, 0x37,0x0b,0xce,0x23, 0xd7,0xe8,0xef,0xcf, 0x69,0x4e,0xb9,0x88,
+ 0x0e,0x8a,0x2f,0xfb, 0x5a,0x4e,0xff,0x6f, 0x6f,0x0d,0x4f,0x32, 0xae,0xfa,0xa6,0x70,
+ 0x72,0x29,0x54,0x83, 0x78,0xd4,0x43,0x42, 0x91,0x1c,0xc7,0xd8, 0x8a,0xd3,0x5c,0xbb,
+ 0x41,0x94,0x78,0xe6, 0xa7,0x1c,0x7c,0xf2, 0x80,0x58,0x24,0xa1, 0xb8,0x79,0x5d,0xbe,
+ 0x7b,0x4f,0x80,0x78, 0x1d,0x3e,0xba,0xbd, 0xad,0x05,0x11,0x23, 0xb7,0x4c,0xc8,0xf7,
+ 0x87,0xce,0xf8,0x94, 0x97,0x9d,0x4c,0x17, 0xb1,0x21,0x44,0xb1, 0x47,0x29,0x22,0xbc,
+ 0xe6,0x48,0x1a,0x35, 0x07,0x91,0x91,0xd2, 0x97,0x32,0xfb,0x31, 0x99,0x53,0x37,0x8f,
+ 0xb0,0x84,0x97,0x18, 0xb3,0x6c,0x8c,0xd9, 0xc4,0xb3,0x02,0xe2, 0xfc,0xcf,0x8e,0xfe,
+ 0x30,0x0e,0xa0,0xfe, 0x15,0xe8,0xf6,0x2c, 0x57,0x03,0x0d,0xae, 0xf2,0x74,0x98,0xb5,
+ 0x59,0x1a,0x0c,0xcc, 0x9a,0x98,0x33,0x20, 0x60,0xcb,0x00,0x65, 0x31,0xb4,0x90,0x79,
+ 0x6f,0x11,0x89,0x77, 0x97,0x55,0x8f,0xdb, 0xa1,0x91,0xc7,0x7e, 0xf2,0x1a,0x26,0x31,
+ 0x95,0xf8,0xa2,0x17, 0x83,0x4d,0x5a,0x00, 0x1e,0xf6,0xb2,0x58, 0x72,0xf3,0xfa,0x49,
+ 0xb9,0xa1,0xee,0xa8, 0xde,0x2c,0xa1,0x81, 0xeb,0x34,0x1b,0xef, 0xeb,0x40,0xdf,0x72,
+ 0x1b,0x21,0xcb,0x54, 0x06,0xae,0x3c,0xb3, 0xc9,0xfb,0x6a,0x40, 0x58,0x04,0x59,0xc5,
+ 0x20,0x55,0x0e,0x0d, 0x1e,0x73,0x14,0xc6, 0x87,0xaa,0x70,0x66, 0x3e,0xc4,0x70,0x35,
+ 0x57,0x74,0xf8,0x7d, 0xb4,0x08,0xe9,0x38, 0xae,0x9f,0x1f,0x8c, 0xff,0x81,0xf5,0xef,
+ 0xcf,0x32,0x8a,0x28, 0x28,0x91,0x8c,0xf0, 0xe0,0x3d,0xf2,0x20, 0x4e,0x72,0xcf,0xce,
+ 0x97,0x7a,0x44,0xe4, 0x93,0xba,0x6b,0xdd, 0x17,0x7c,0x2d,0xb7, 0x5b,0x85,0x3b,0xde,
+ 0xcd,0xab,0x53,0x92, 0x32,0x70,0x3c,0x3f, 0xb4,0xda,0x3a,0x3a, 0x1b,0x16,0xc4,0x25,
+ 0xf3,0x0b,0xc2,0xe6, 0xd9,0xbf,0x6b,0xa9, 0x5d,0xef,0x34,0xe2, 0x3a,0xab,0x8b,0x84,
+ 0x7a,0x7e,0x44,0x8c, 0x4a,0x7f,0x04,0xa9, 0x98,0x75,0x35,0x91, 0xfc,0xb9,0x32,0xed,
+ 0x13,0x3f,0xce,0xde, 0x37,0xa0,0xf6,0xac, 0x7a,0x51,0x7e,0x9b, 0x37,0x1b,0x28,0x48,
+ 0x6e,0xa6,0x4f,0x22, 0x12,0x75,0x3a,0x31, 0x5f,0x4b,0xd7,0xb7, 0x55,0x1f,0xcf,0x1e,
+ 0x7f,0x53,0xd8,0x66, 0x53,0x17,0x2b,0xf9, 0xbc,0xe9,0x18,0x0d, 0x25,0x7c,0x8e,0xf2,
+ 0x5e,0xa6,0x2b,0x78, 0xb4,0x23,0xd3,0xb2, 0xdf,0xe2,0xca,0x71, 0x1d,0xdf,0x47,0x1b,
+ 0x3a,0x25,0x68,0x92, 0xea,0xe8,0x39,0xb4, 0xe0,0xbd,0x82,0x37, 0x25,0xfe,0x17,0x29,
+ 0xac,0xfe,0xa3,0x7d, 0x8b,0xf8,0x5f,0x94, 0xc6,0xf0,0xd2,0xb8, 0x51,0xb8,0x3f,0x5d,
+ 0xf7,0xe9,0x25,0x88, 0x03,0x4a,0xfc,0xbb, 0xcb,0xea,0xda,0xf0, 0xb7,0x38,0xb0,0x49,
+ 0xb1,0x10,0x73,0x8c, 0x75,0xb5,0xab,0x29, 0x25,0x34,0xdf,0x34, 0xc8,0x9f,0x8d,0xb0,
+ 0x9c,0xd6,0xc7,0x59, 0x28,0x9c,0xb7,0x35, 0xbd,0xe5,0xbd,0xf5, 0xf6,0x26,0x46,0x2b,
+ 0xbf,0x53,0x83,0xf2, 0x8a,0x53,0x50,0x20, 0xdd,0x4c,0x40,0x11, 0xb2,0x13,0xa5,0x88,
+ 0xba,0x73,0x9c,0x57, 0x82,0xe3,0x06,0x8a, 0xd0,0xde,0x51,0x6c, 0xd0,0xee,0xf5,0x08,
+ 0x3a,0x00,0xa0,0xf8, 0xd8,0x4d,0x56,0x5f, 0xc7,0xb5,0xc2,0x55, 0x3e,0x24,0x7f,0x32,
+ 0xa5,0x8b,0xbb,0x36, 0xf8,0xc8,0x46,0x3b, 0xc1,0x89,0x11,0x9f, 0x6a,0x5e,0xdd,0xeb,
+ 0x11,0xa0,0x16,0x7a, 0xd3,0x71,0xdb,0xad, 0x68,0x67,0xe4,0x43, 0xfc,0x78,0x95,0xb6,
+ 0xea,0xb3,0xf2,0xcb, 0xf2,0x5d,0x39,0x80, 0x2f,0x08,0xd4,0x97, 0x9a,0x8d,0x7b,0xdc,
+ 0x35,0x93,0x24,0xd8, 0x6e,0x33,0xe9,0xe8, 0xa2,0xcb,0x7b,0xfd, 0x24,0xb2,0xf0,0x34,
+ 0x77,0x97,0xf1,0xb3, 0xeb,0xe0,0x34,0x79, 0xc7,0xd2,0x59,0x36, 0xb2,0x74,0xb5,0x21,
+ 0xec,0x98,0x51,0xc4, 0xcd,0xe3,0x68,0x6e, 0xbc,0xac,0xdb,0xb4, 0x37,0xb3,0x72,0x9e,
+ 0x6b,0xaa,0x91,0x15, 0xd5,0xc0,0xca,0xd1, 0x6f,0x5a,0xf9,0x9b, 0x2a,0xa7,0x24,0x83,
+ 0xc2,0xfb,0x7b,0x68, 0x7b,0x7f,0xb4,0x98, 0xec,0xfa,0x8b,0xcf, 0x33,0x0e,0xc7,0x03,
+ 0x37,0xd2,0xb6,0xf4, 0x79,0x9d,0x4e,0x56, 0x3d,0x08,0xc9,0x32, 0xa1,0x0e,0x6e,0xe6,
+ 0x98,0xb8,0x64,0x25, 0x21,0x9b,0x9a,0x76, 0x78,0xb9,0x08,0xa8, 0x46,0x25,0x8e,0xb6,
+ 0xb8,0xef,0xfa,0xa7, 0x4e,0xf5,0xdf,0x80, 0x87,0xdd,0x67,0x5c, 0xbb,0x24,0xe1,0xdf,
+ 0x20,0x29,0x90,0xc4, 0x4e,0xb1,0x1f,0x40, 0x86,0x03,0x27,0x64, 0xb4,0xda,0xf4,0xba,
+ 0xf6,0xd7,0xcb,0x81, 0x8a,0x94,0x9e,0x8d, 0x65,0xad,0xf8,0xcf, 0xc2,0xab,0x62,0xf9,
+ 0x99,0xea,0xb1,0x3c, 0x75,0x9e,0xc2,0x35, 0x63,0x5c,0xa3,0x29, 0x6e,0x12,0xf6,0x78,
+ 0x36,0x78,0x26,0x07, 0x67,0x91,0x0b,0x4b, 0x1b,0x13,0xb9,0x9f, 0xe8,0x32,0xcb,0x18,
+ 0x0f,0x29,0x6e,0x53, 0x01,0xdd,0xd2,0x5c, 0x47,0xec,0x77,0x34, 0xa0,0xf3,0x3d,0xe5,
+ 0x5c,0xa3,0xab,0x93, 0xcf,0xe0,0xda,0x68, 0xd1,0x23,0x82,0x7e, 0x49,0x7c,0x17,0x56,
+ 0xf6,0x97,0x4f,0x3e, 0x84,0x89,0x7d,0xe5, 0x5d,0x97,0x51,0x15, 0xd2,0x8d,0x93,0x95,
+ 0xaf,0x17,0xd9,0x0b, 0x44,0x26,0x4f,0x40, 0xfa,0x15,0x32,0xde, 0xe2,0xc0,0x3a,0xaf,
+ 0xc5,0xe7,0x98,0xc7, 0x50,0xb3,0x76,0x32, 0xa5,0xe4,0x22,0xa2, 0x16,0x24,0x36,0x2c,
+ 0x72,0xbe,0xd9,0xe8, 0x46,0xc6,0xe8,0xfd, 0x2d,0x60,0xba,0x9f, 0x5c,0x20,0xfe,0x7e,
+ 0x03,0x75,0x0d,0xe9, 0xab,0xce,0x3c,0xaa, 0x50,0x89,0xe6,0x8b, 0xea,0x1a,0xbc,0x61,
+ 0x81,0x2b,0xc5,0x00, 0xde,0xe7,0x1b,0x2a, 0x4b,0x0d,0x76,0xf3, 0x4e,0xe5,0x56,0xb6,
+ 0xcd,0x92,0x67,0x59, 0xb2,0xbf,0x95,0x96, 0x69,0x78,0xdf,0xe3, 0x24,0xba,0x81,0x85,
+ 0x0c,0xe7,0x9d,0x0b, 0x4f,0x13,0x0e,0xb7, 0x2c,0xd1,0xb3,0xa8, 0xd6,0xf6,0x72,0x5d,
+ 0x40,0xfd,0xbc,0x4b, 0x8d,0xc6,0x95,0x05, 0x48,0xea,0x6d,0xad, 0xd7,0xae,0xa9,0xaf,
+ 0x5b,0xb7,0xa7,0x4b, 0x53,0xf0,0xff,0xec, 0xcf,0x3b,0xf3,0xf1, 0xa3,0x41,0xfc,0x1a,
+ 0xc7,0xc0,0x9f,0x55, 0x07,0xeb,0x75,0xe8, 0x12,0x5c,0x84,0xfb, 0xd4,0x24,0x68,0x51,
+ 0x4e,0x13,0x28,0x53, 0xce,0x9c,0x28,0xeb, 0x20,0x4e,0x43,0xf2, 0x93,0xcf,0xe8,0xdd,
+ 0xf0,0x94,0x74,0x66, 0x6d,0x67,0xef,0xca, 0x4a,0xb9,0x58,0x42, 0x19,0x4a,0xa7,0xeb,
+ 0xb5,0xae,0xa7,0x9e, 0x34,0x33,0xc4,0x35, 0xd9,0x37,0x4b,0x63, 0x18,0x12,0xef,0xe0,
+ 0x85,0xce,0x91,0xd0, 0xa8,0xcb,0x83,0xba, 0x91,0xc7,0xb5,0x39, 0x2d,0x13,0x7d,0x8f,
+ 0x52,0xce,0x24,0x8c, 0x25,0xd1,0xac,0xd5, 0x36,0xbc,0x98,0xd0, 0xf3,0xd2,0x26,0x72,
+ 0xa6,0x42,0x4c,0xe1, 0x3b,0x36,0x96,0xa4, 0x1d,0x5c,0xfd,0xbd, 0xfd,0x3b,0x48,0xad,
+ 0xcf,0x9e,0xbc,0x57, 0x40,0x2e,0x8e,0xbf, 0xee,0xaf,0xca,0x65, 0x5e,0x74,0x98,0xf5,
+ 0xeb,0x88,0xe9,0x5d, 0xcb,0xe5,0x3a,0x6f, 0x5d,0x32,0x57,0x6f, 0xeb,0xa6,0xed,0x54,
+ 0xc5,0xef,0xbe,0xda, 0x06,0xae,0xa2,0x69, 0xda,0x99,0xb5,0xae, 0x9a,0xf1,0x99,0x70,
+ 0xd5,0x02,0xf3,0x0e, 0xf3,0x11,0x53,0xe6, 0x1b,0xad,0x35,0x0c, 0x3d,0x0e,0x35,0x2a,
+ 0x3e,0xb2,0xe4,0xc3, 0xcb,0xcc,0x1b,0x7e, 0x6b,0x08,0x60,0x10, 0xee,0x94,0x1c,0x56,
+ 0x16,0xae,0x11,0xb5, 0xa6,0x9c,0x15,0x19, 0xf2,0x71,0x8a,0xb0, 0xa4,0x94,0x08,0xf4,
+ 0x89,0x72,0x0e,0xdc, 0x21,0x9e,0x15,0x14, 0x8c,0x04,0x07,0x94, 0xe8,0x9e,0x66,0xeb,
+ 0xf9,0x28,0xf5,0x82, 0x05,0xad,0x6f,0x68, 0x82,0xc9,0x74,0x43, 0xb3,0xbf,0x4d,0x90,
+ 0x18,0x8a,0x79,0x1e, 0x5c,0xbd,0x73,0x22, 0x55,0x9c,0x4e,0xad, 0x23,0x7c,0xcf,0xe3,
+ 0x21,0x30,0x4e,0xf2, 0x4e,0x80,0x70,0xde, 0xa0,0xca,0x33,0x16, 0xec,0x5c,0x19,0xda,
+ 0x9e,0x0d,0x0a,0x11, 0xc5,0xcf,0xc1,0xed, 0x64,0xea,0x39,0x3b, 0x52,0x56,0xd7,0x62,
+ 0xe6,0x8f,0x55,0xcd, 0xbc,0xed,0x3b,0x56, 0xaf,0x62,0x9f,0x87, 0xbe,0xb3,0x78,0xa2,
+ 0xb7,0xf1,0xd6,0xbd, 0xde,0xe2,0xc9,0xe6, 0x0a,0x15,0x5d,0x13, 0x6e,0xc2,0x51,0x85,
+ 0xaf,0x10,0xf2,0x2a, 0x8f,0x5a,0x56,0x89, 0xd6,0x8b,0xb6,0x86, 0xe6,0x2d,0x82,0x19,
+ 0xf5,0x36,0xdc,0xd8, 0xd8,0xc0,0xc3,0x14, 0x13,0x9a,0x94,0xdd, 0xa8,0xcd,0x8b,0x83,
+ 0x22,0xe4,0x73,0x5d, 0x72,0xc5,0xc6,0x4b, 0x05,0x41,0x1d,0xb5, 0x1c,0x2f,0xbc,0x84,
+ 0x1d,0xd3,0x81,0x3a, 0x92,0xbc,0x68,0x21, 0x08,0x4f,0xf7,0xaf, 0xe5,0xec,0x69,0x7e,
+ 0xe7,0xd2,0xd5,0x7a, 0xb9,0x58,0x07,0xff, 0x5c,0x08,0xc4,0x8f, 0xa9,0x54,0xbd,0xa5,
+ 0xbd,0xbe,0x53,0x69, 0x95,0x0c,0x84,0x77, 0x59,0x9d,0xc1,0xa9, 0xcf,0x99,0xce,0x16,
+ 0x67,0xa4,0x8d,0xaf, 0x4b,0xe9,0xc8,0x8f, 0xc1,0x07,0xa1,0x7f, 0x91,0x5c,0x98,0xcf,
+ 0x55,0xfd,0x69,0xa3, 0x81,0xa4,0x8f,0x5b, 0x02,0xd2,0x30,0xf6, 0x22,0xf3,0x5c,0x9f,
+ 0x8b,0x3d,0x8a,0x00, 0x09,0xf3,0x6c,0x19, 0xbe,0xa3,0x59,0xf7, 0xd6,0x38,0x54,0x3f,
+ 0xa4,0x1b,0x80,0xad, 0x1e,0x1e,0x1e,0x45, 0xa2,0x3f,0xfd,0xbc, 0xc2,0xea,0x54,0x75,
+ 0xdc,0x6c,0x8f,0x84, 0xc8,0xdf,0x40,0xea, 0x0b,0xe4,0xbf,0xe0, 0xe0,0x9a,0x33,0xf3,
+ 0x62,0x7c,0xae,0x2b, 0xdc,0xdd,0xa3,0xab, 0x8b,0x49,0xaa,0xd3, 0xcd,0xe9,0xb0,0x11,
+ 0xb1,0xdc,0x03,0x21, 0xb2,0xfa,0x51,0x9d, 0x15,0xd0,0xbc,0x83, 0xe0,0xef,0xb6,0x7c,
+ 0x85,0x87,0xf6,0xf3, 0xfb,0x7d,0x1f,0xb7, 0x0f,0x57,0xeb,0x95, 0xe5,0x3f,0xb5,0x9c,
+ 0x9c,0xf3,0xcd,0x44, 0x50,0xd3,0x3f,0x60, 0xa1,0x42,0x63,0x10, 0x59,0x0a,0xb8,0x9a,
+ 0xa9,0x00,0xb5,0xab, 0xb7,0x32,0x15,0x08, 0x97,0x6b,0x21,0x50, 0xa2,0x48,0x2c,0x4b,
+ 0x35,0xf2,0xa0,0x6e, 0x3e,0xad,0x23,0x4e, 0x1a,0x94,0x07,0x86, 0x40,0x3d,0xcc,0xb6,
+ 0x61,0x71,0xbe,0x12, 0x63,0xcb,0xf3,0x4a, 0xc4,0xfc,0xfd,0xf5, 0xb0,0x61,0xc7,0xe6,
+ 0x03,0x91,0x55,0x30, 0x6b,0xfc,0x03,0xb4, 0x3d,0x08,0xea,0x02, 0xe3,0x45,0x39,0xcd,
+ 0xae,0xb2,0x10,0x86, 0x46,0xf4,0xcc,0x37, 0x7d,0x30,0xe9,0x53, 0x73,0xc2,0x98,0x60,
+ 0x27,0xdc,0x31,0xa5, 0x7e,0xd8,0xad,0x8c, 0x6c,0x1e,0xfd,0x70, 0xfb,0xdf,0xb3,0x10,
+ 0x4c,0x5e,0x99,0x31, 0xe8,0x14,0xdc,0x05, 0x05,0x7e,0xf4,0xf7, 0x85,0x4d,0xe0,0x28,
+ 0x4d,0x4a,0x71,0x19, 0xd7,0x2b,0x8e,0xc6, 0xf6,0x63,0x07,0x27, 0x70,0xdf,0xc7,0xb3,
+ 0x71,0xdf,0xe7,0xf5, 0x3c,0x5f,0xb4,0x3d, 0xcf,0xea,0xf1,0x90, 0x67,0x84,0xc7,0x33,
+ 0xfb,0x4f,0xc1,0x9f, 0x50,0x4d,0x9e,0xe0, 0xfe,0x24,0xe4,0x52, 0x5a,0x93,0x0c,0xf5,
+ 0x28,0x82,0x6d,0x82, 0x3e,0xc9,0xe5,0x91, 0x8f,0x54,0x39,0x0b, 0x71,0x54,0xe2,0x12,
+ 0xea,0x27,0x99,0x1a, 0x9b,0xd9,0x8b,0x7f, 0x2a,0x73,0x89,0xae, 0xc5,0xff,0x1e,0xfd,
+ 0x6b,0x5d,0xfe,0x9b, 0x56,0xaf,0x1d,0x11, 0x8c,0x15,0x0d,0xc8, 0xd7,0xc5,0x79,0xcc,
+ 0xa8,0xa0,0xd7,0xdd, 0x28,0x86,0x9c,0x2f, 0x66,0x42,0x5b,0xf8, 0xa0,0x03,0xb1,0xd0,
+ 0x8b,0xac,0x13,0x91, 0xec,0xa9,0xf7,0xb7, 0xba,0xeb,0x9e,0x37, 0x39,0xd8,0xe1,0x91,
+ 0x6a,0xee,0x14,0xda, 0x3d,0x87,0xf5,0x5a, 0x82,0x45,0x31,0xdb, 0xb4,0x78,0x64,0x58,
+ 0x4f,0x1f,0xe1,0x72, 0xfd,0xa3,0xa5,0xe3, 0xeb,0xbe,0x3d,0xe2, 0x11,0xd9,0xcd,0xba,
+ 0xd7,0xba,0x2d,0xae, 0xc3,0xc2,0xe8,0x6d, 0x3f,0x1e,0xdc,0x44, 0xfe,0xa0,0x35,0x0e,
+ 0x0f,0x7c,0x77,0xac, 0xbf,0xd6,0x09,0x22, 0xcc,0x21,0x11,0xf4, 0x49,0x4a,0x4c,0x7c,
+ 0xe9,0x26,0x0d,0x35, 0x9c,0x15,0x2a,0xe9, 0x6b,0x2c,0x3c,0x94, 0xa9,0x08,0xf7,0x99,
+ 0x1c,0x9f,0x8a,0x1f, 0x44,0x03,0xc1,0xb0, 0x6a,0x12,0x3c,0x4d, 0x55,0x6f,0x60,0x74,
+ 0x81,0xd4,0x3b,0xca, 0xd7,0xbd,0x76,0xb7, 0xed,0x5a,0xd2,0x19, 0x17,0xdb,0xb5,0xc0,
+ 0xc9,0x8c,0x2f,0x41, 0x02,0xf1,0x95,0x4c, 0xc1,0x62,0x1f,0xed, 0x87,0xf7,0x5f,0xdb,
+ 0x0e,0x8b,0xcb,0xe0, 0x3a,0xe7,0x68,0x32, 0xc2,0x68,0xe4,0x75, 0x11,0x38,0x3c,0x75,
+ 0x3f,0x8e,0x49,0xdb, 0x52,0x6a,0x66,0x7c, 0x55,0x1b,0x14,0x02, 0x06,0x29,0x25,0x53,
+ 0xf7,0xf5,0x88,0x06, 0x00,0x9a,0xf9,0x71, 0x63,0xc9,0xca,0x7e, 0xda,0x1e,0xfb,0x7c,
+ 0xc7,0xeb,0x0a,0xf1, 0xdc,0x4b,0x6d,0xbf, 0xb3,0xc3,0xba,0x32, 0xb0,0xa1,0x08,0x37,
+ 0x4f,0x20,0xeb,0x60, 0x14,0xd8,0xa2,0x21, 0x40,0xdb,0x1b,0x8f, 0x51,0x7d,0xe0,0xb6,
+ 0xd7,0x95,0x46,0xdc, 0xe6,0x06,0x0b,0xa0, 0x42,0x20,0x1c,0xf8, 0xe7,0x0c,0x8f,0x59,
+ 0x31,0xa9,0x82,0x43, 0xba,0xb7,0xb4,0xb1, 0xbd,0x55,0xde,0xe4, 0xe0,0x26,0x0e,0xc9,
+ 0x5c,0xdf,0xed,0xe4, 0x2e,0x20,0xb1,0x93, 0x7a,0x90,0x5e,0xa6, 0xfd,0xa2,0x57,0x6d,
+ 0x6d,0xb1,0x67,0xe7, 0x18,0x70,0x3b,0x19, 0x05,0xd4,0x1b,0x08, 0xac,0xb6,0x7a,0xbd,
+ 0x21,0xd3,0xec,0x8b, 0x67,0x37,0x5b,0xf6, 0xc0,0x1a,0x48,0x81, 0x10,0x0e,0xc9,0x34,
+ 0x5d,0xb6,0x98,0x94, 0x26,0x20,0xbb,0x0c, 0x4c,0x7c,0xdb,0xfa, 0x9b,0xc8,0xee,0xea,
+ 0xc8,0xad,0x74,0xed, 0xbb,0xaf,0xcf,0x79, 0xc9,0xf4,0xdc,0xff, 0x11,0xc4,0xd6,0x1f,
+ 0xf6,0x7c,0x14,0xed, 0x0e,0x7c,0xcb,0x5f, 0xf0,0xa0,0xb5,0x0c, 0xd4,0xad,0x9f,0x39,
+ 0x55,0xb3,0xe6,0x45, 0xec,0xf1,0x10,0xfe, 0xf8,0x82,0x11,0x5a, 0x31,0xa1,0x4c,0x42,
+ 0x76,0xc9,0x0c,0x8c, 0x03,0x3d,0x11,0xde, 0x66,0x0c,0xa2,0xb2, 0xe4,0xb9,0x0e,0xf5,
+ 0xf8,0x6b,0x48,0x9a, 0x6a,0x84,0x88,0x50, 0xa0,0xe4,0x89,0x7d, 0x56,0x75,0xdf,0x6f,
+ 0xa7,0xa8,0x2a,0x41, 0x43,0x88,0x7f,0xf1, 0xad,0xd4,0xb0,0x9a, 0xa8,0x93,0x25,0xd5,
+ 0xd9,0x99,0xae,0xb2, 0x90,0x41,0x24,0x17, 0x7f,0x49,0x5c,0x45, 0x11,0x34,0x82,0x7a,
+ 0xae,0x46,0xe3,0xf0, 0xc5,0xbb,0x5e,0xc7, 0xdd,0x54,0xc5,0xd1, 0x32,0xd4,0xbf,0x59,
+ 0x2b,0x2a,0xb2,0x5a, 0x79,0x74,0x70,0xa3, 0x5d,0xcb,0xd4,0xd1, 0xee,0x25,0x57,0xbf,
+ 0x49,0x08,0x06,0x58, 0x28,0xc8,0x61,0xb2, 0xfa,0xac,0xd5,0x73, 0xec,0xa2,0x42,0x0e,
+ 0x39,0x94,0xbe,0xc3, 0x6b,0xe7,0xcd,0xfd, 0x21,0x47,0xd1,0xfa, 0x61,0x13,0x31,0x3e,
+ 0xe7,0x7f,0x5d,0x1b, 0xb4,0x7e,0xd3,0x2b, 0xb0,0x3c,0x8e,0xfe, 0xf3,0xc8,0xd3,0x53,
+ 0x65,0x45,0x2b,0x4b, 0x49,0x70,0xf4,0x85, 0x05,0x6c,0x8a,0x2e, 0x69,0x33,0xfc,0x8e,
+ 0x41,0xfc,0x31,0x78, 0x9a,0xa3,0x74,0xcf, 0xde,0xd7,0x0d,0x95, 0x68,0x73,0xa4,0x26,
+ 0x48,0xfa,0x93,0xfa, 0xe3,0xdc,0x60,0x06, 0x61,0x53,0x53,0xa1, 0x86,0x40,0xd5,0x73,
+ 0x73,0xc5,0x9f,0xd7, 0x27,0xd3,0x10,0x48, 0x97,0x96,0x10,0x4b, 0x84,0x5d,0x4b,0x82,
+ 0xe8,0x06,0x14,0x4b, 0x8d,0x57,0x9b,0xfa, 0xe5,0x35,0xc7,0x4a, 0x65,0x25,0x50,0x41,
+ 0x25,0x0d,0x38,0x50, 0x81,0xc0,0x40,0x03, 0x14,0x9c,0x25,0x6a, 0x00,0xf9,0x34,0x47,
+ 0x86,0xc5,0x36,0x51, 0x38,0x1b,0x29,0x27, 0x05,0xb8,0x85,0x75, 0x99,0x83,0x29,0x81,
+ 0x53,0x4c,0xa2,0x08, 0xa6,0x01,0x42,0x62, 0x6e,0x4c,0x34,0xc6, 0x96,0x0b,0xdc,0xef,
+ 0x4f,0x08,0x6d,0x95, 0xad,0xca,0x90,0x78, 0xe1,0x52,0xba,0xa9, 0x06,0x97,0x0c,0xc4,
+ 0x3a,0x1a,0x6f,0x46, 0x8d,0xd7,0x37,0xeb, 0x4a,0xea,0xfa,0xb4, 0x48,0x42,0x92,0x10,
+ 0x25,0x21,0x40,0x5e, 0x11,0xdb,0x2d,0x34, 0x35,0x31,0x02,0x0d, 0xd8,0xa1,0x33,0x86,
+ 0x25,0x71,0x84,0x9a, 0x4d,0x95,0x93,0x32, 0xde,0xe6,0xea,0x02, 0x6d,0x01,0x4b,0x29,
+ 0xcc,0x41,0x36,0x43, 0x19,0x28,0x33,0x2c, 0xf6,0x87,0x8e,0x44, 0x8b,0xfb,0x80,0x35,
+ 0x4e,0xbc,0x71,0xb1, 0x40,0x17,0x51,0x4e, 0x0f,0x08,0x52,0xf7, 0xde,0x1c,0x0d,0xf5,
+ 0xc9,0x46,0x81,0x9b, 0x9e,0x72,0x19,0x04, 0x9b,0x7f,0x8c,0xea, 0xcc,0x58,0x07,0x2a,
+ 0x0c,0x92,0x09,0x3d, 0xd3,0xc8,0xd6,0x76, 0xf8,0x8c,0xaa,0x1c, 0x18,0x1e,0x7a,0x76,
+ 0xdf,0x6f,0x19,0x60, 0xd5,0xc7,0x52,0xb8, 0xd3,0x9e,0x03,0xbc, 0x23,0x18,0x5a,0xaa,
+ 0x60,0xfa,0xd2,0x1d, 0x05,0x9a,0xae,0x1a, 0x80,0xcc,0xeb,0xeb, 0x6f,0x42,0x62,0x88,
+ 0xe8,0x23,0x02,0x67, 0x1d,0x00,0xdd,0xf1, 0x19,0x17,0x25,0x89, 0x16,0x44,0x48,0x22,
+ 0x82,0xd2,0x35,0xbe, 0x6c,0xe7,0x46,0xc4, 0xaf,0x9d,0xbc,0xa6, 0x93,0x6e,0x8a,0x92,
+ 0x84,0x5a,0x11,0xef, 0x3d,0x1b,0xf3,0xcd, 0x7f,0x57,0x9a,0x80, 0xd7,0x3b,0x98,0x17,
+ 0x56,0xc3,0xb4,0xa2, 0x57,0x37,0xa6,0x00, 0x5e,0x55,0xbe,0x91, 0xc2,0x09,0x10,0x3b,
+ 0xfd,0x54,0xaf,0xf3, 0x97,0x67,0x23,0x84, 0xea,0xcf,0x5a,0x87, 0x3a,0x2a,0xc5,0x37,
+ 0xc2,0x9c,0x83,0xf0, 0x56,0x99,0x94,0x05, 0x7e,0x2a,0xe6,0xc4, 0xaf,0x72,0xc5,0xdd,
+ 0xe2,0xe4,0x0c,0x2e, 0xe7,0xb1,0xf1,0xbc, 0x4d,0xcd,0xac,0x5d, 0xc1,0x5b,0x68,0x04,
+ 0xbb,0xec,0x90,0xd3, 0x2f,0x16,0x74,0xa1, 0x3e,0x67,0x10,0xc7, 0xef,0xb3,0x49,0x12,
+ 0x5b,0x4c,0x18,0xed, 0xab,0x6f,0xec,0x16, 0x1c,0x95,0xdf,0xa1, 0xba,0x77,0x6b,0xd9,
+ 0x59,0xdd,0x84,0x56, 0x5e,0x37,0xe0,0xa2, 0x3d,0xd9,0xb4,0x38, 0xc3,0x2c,0xba,0xda,
+ 0x0a,0xf3,0xb8,0xc4, 0x77,0xfa,0x4d,0x83, 0x93,0x0c,0x62,0x30, 0x5e,0x1a,0xde,0x2e,
+ 0xbb,0xdd,0x56,0xdb, 0xf4,0xa8,0x32,0x4b, 0x93,0xda,0x83,0xa1, 0x43,0xb4,0xb1,0xd6,
+ 0xb4,0xc0,0x4c,0x26, 0x01,0x6d,0xca,0x54, 0xbd,0xc0,0xbb,0xa6, 0x9c,0xc0,0xb8,0xe0,
+ 0x90,0x32,0xc1,0x63, 0x68,0x22,0x08,0x1d, 0xea,0x02,0x40,0x3f, 0xf7,0x1c,0x0e,0x9f,
+ 0xda,0xa7,0xb7,0xf1, 0x74,0xf2,0xc4,0x61, 0x35,0xe7,0x59,0x08, 0xe9,0x1c,0x13,0x15,
+ 0xa4,0x72,0x78,0xab, 0x05,0xa2,0xa2,0xbc, 0xa4,0x24,0x5b,0xb5, 0xa0,0x48,0x97,0x30,
+ 0x8f,0x61,0xfd,0xde, 0x7f,0x8d,0xbf,0xe5, 0xb0,0xfd,0x2e,0x07, 0xc9,0xc0,0xbb,0xe4,
+ 0x4d,0xe9,0x52,0x0b, 0x84,0x18,0x8a,0x02, 0xc3,0x80,0x03,0xd2, 0xf1,0x81,0x06,0x9a,
+ 0x14,0x88,0x67,0x42, 0x6b,0xf1,0x10,0x71, 0x1f,0x24,0x92,0xa4, 0xa8,0x9e,0x0c,0x05,
+ 0x05,0x77,0x9d,0x17, 0x75,0x39,0xf2,0xdc, 0xc4,0xca,0x14,0x5c, 0x46,0x87,0x44,0x47,
+ 0xba,0xde,0x74,0xf3, 0x26,0xca,0xb2,0x8c, 0x85,0x58,0x21,0x8d, 0x05,0x73,0x75,0xd9,
+ 0xd6,0xac,0x50,0x67, 0x71,0x6f,0x7e,0xc7, 0x43,0xf2,0xb2,0x32, 0x78,0xc5,0x01,0x05,
+ 0xc0,0xa8,0xc1,0xa8, 0x81,0x34,0xc9,0xa0, 0xd1,0xc4,0x3b,0xed, 0x53,0x2a,0x0c,0xff,
+ 0xee,0xab,0x55,0xbc, 0xe7,0x0a,0xac,0xf5, 0x53,0x10,0xdd,0x2c, 0x6a,0xfd,0x75,0x70,
+ 0x5d,0x9f,0x7f,0x0f, 0x6f,0x72,0xe7,0x70, 0xf3,0x74,0xcf,0x69, 0x47,0xdf,0x8d,0x16,
+ 0x56,0x01,0x8c,0x9f, 0xcd,0xee,0xc2,0x25, 0x9a,0x86,0xcb,0x6b, 0x40,0xd9,0x2b,0x82,
+ 0xca,0x21,0x80,0x54, 0xc0,0xc8,0x70,0x1a, 0x25,0xe8,0x3c,0x0f, 0x9a,0x1c,0xe4,0xee,
+ 0x94,0xd4,0x10,0xdd, 0x99,0x4b,0x62,0xd6, 0x79,0xa0,0xea,0x49, 0x88,0xb6,0x0e,0x5b,
+ 0xa6,0xed,0x4f,0x51, 0x8e,0x37,0x2b,0x73, 0xd5,0xe7,0x5d,0xfb, 0xbe,0xc3,0xc6,0x82,
+ 0x1f,0x38,0x04,0x80, 0xbc,0x11,0x09,0xe8, 0xd2,0x20,0xe9,0x3b, 0x0d,0x30,0x31,0x71,
+ 0xaf,0xbc,0x08,0x5f, 0xf5,0x2a,0x3a,0x8d, 0xa7,0xb5,0x33,0x6d, 0x34,0x8e,0x11,0xd7,
+ 0x13,0xc5,0x0b,0x2c, 0x90,0x60,0x36,0x8a, 0x91,0x58,0x0f,0x82, 0x2d,0x18,0x15,0x60,
+ 0xc9,0x2f,0x62,0x15, 0x24,0x04,0xa8,0x15, 0x0d,0x12,0x1a,0x93, 0x5c,0xbf,0x44,0x0e,
+ 0x47,0x93,0xcb,0x41, 0x66,0x0f,0xed,0xc0, 0x1e,0x84,0x2c,0x75, 0xad,0xaf,0x11,0x1f,
+ 0x5f,0xe7,0x3f,0x73, 0xa5,0xb0,0x8e,0xdb, 0xd6,0xa4,0x5e,0xbf, 0x5c,0x9e,0xe6,0xae,
+ 0x83,0x1e,0x7d,0x9d, 0xaa,0x10,0xae,0xd0, 0x13,0xa2,0xe9,0x21, 0x9e,0xb1,0x2f,0x8a,
+ 0xe8,0x5c,0xc9,0xd1, 0xad,0x04,0x1e,0x86, 0x7d,0x74,0xf4,0x0c, 0x06,0x85,0x23,0x15,
+ 0x4c,0x80,0xcf,0xed, 0x2c,0x13,0x94,0x7b, 0x83,0x00,0x48,0x7d, 0xde,0x83,0xc9,0xe5,
+ 0xa4,0x31,0xba,0x1c, 0xa3,0x3c,0x3b,0xe8, 0x00,0xbd,0x7f,0xd7, 0x79,0xa0,0x10,0x62,
+ 0x5a,0x31,0x21,0xa2, 0xfb,0x15,0x01,0x2c, 0x55,0xf8,0xcc,0xa1, 0x3a,0x1d,0x0c,0x9f,
+ 0xcc,0x07,0x7a,0x5c, 0xc2,0xa0,0x0f,0x05, 0x74,0xaa,0x8d,0x04, 0xec,0x83,0xb6,0x7e,
+ 0xfb,0x55,0xda,0x85, 0xb3,0x19,0x25,0x57, 0x00,0x2c,0x4a,0xff, 0xde,0xe6,0xc8,0x76,
+ 0x88,0x38,0xf1,0x36, 0xbd,0x57,0xca,0x42, 0x73,0xc5,0xd6,0x79, 0xd8,0x99,0x42,0x58,
+ 0x1f,0x38,0x2d,0x08, 0x08,0xb8,0xeb,0x73, 0x62,0x3a,0xe6,0x7a, 0x3f,0x3f,0x9e,0x7f,
+ 0xb0,0x46,0x5b,0xbd, 0x31,0x1e,0x92,0xf5, 0x1c,0x12,0xa4,0x43, 0x2a,0xd2,0x3a,0xed,
+ 0x97,0x71,0xbb,0xb1, 0xdb,0xb1,0xce,0xe3, 0xa3,0x56,0xe8,0xb3, 0x4a,0x52,0xc5,0xc7,
+ 0xcc,0x94,0x99,0xaa, 0xad,0xb4,0xae,0x0b, 0x7b,0xc1,0xdf,0xf6, 0x5f,0x76,0x7d,0x3a,
+ 0xb1,0xda,0x9c,0xd8, 0x67,0x21,0xba,0xce, 0x95,0xf0,0x3c,0x78, 0xff,0x7d,0xb6,0x90,
+ 0xa6,0x16,0x7a,0x4b, 0x3e,0x2a,0xa1,0x37, 0x37,0x2b,0x7b,0x16, 0xd7,0xa1,0x76,0x91,
+ 0x49,0xbb,0x45,0x61, 0xe2,0xe9,0xcc,0x20, 0x97,0x24,0xc0,0xdd, 0xea,0x08,0x45,0x18,
+ 0x54,0x94,0xf2,0xac, 0x2d,0x4b,0x8d,0x33, 0x13,0x9a,0xa2,0xb4, 0xab,0x00,0xca,0x8a,
+ 0x02,0x00,0xf8,0x79, 0xca,0x4b,0x22,0x62, 0x06,0x97,0x8d,0x99, 0x8f,0xe2,0xfe,0xdc,
+ 0xfe,0x9c,0xb6,0x5c, 0x7c,0x11,0xf6,0xeb, 0x81,0xcd,0xdd,0x32, 0xe9,0xd7,0x9f,0x05,
+ 0xc3,0x4d,0x6d,0x45, 0x49,0x89,0x2d,0x85, 0x0b,0xb8,0x68,0x35, 0xed,0x02,0xaf,0x88,
+ 0x8c,0x4e,0x0d,0x8c, 0xc3,0xc4,0x03,0x16, 0xf0,0x9c,0x89,0x84, 0xd9,0x33,0x17,0x9a,
+ 0x9c,0x0e,0x63,0xdf, 0x63,0x57,0xf1,0x41, 0x1c,0xdd,0x94,0x5d, 0x3f,0x09,0x8f,0x4a,
+ 0x70,0x21,0xfa,0x08, 0x09,0x13,0x82,0x8f, 0x16,0x7c,0xef,0xde, 0xda,0x24,0x9b,0xf4,
+ 0x93,0x3f,0x36,0x66, 0xc2,0xa9,0x1e,0xf3, 0x2f,0x45,0x06,0x43, 0xec,0x46,0xb2,0x87,
+ 0x87,0xb8,0x61,0xe6, 0x41,0x9a,0x0c,0x0c, 0x25,0xf9,0xae,0x77, 0xb3,0x99,0x83,0x71,
+ 0x12,0x8d,0xcb,0xa4, 0x34,0x89,0x2c,0xdc, 0x8d,0x94,0x62,0x19, 0x29,0x33,0x34,0x6e,
+ 0x66,0xd0,0x39,0x82, 0xa8,0x33,0x20,0x1a, 0xe6,0x18,0x07,0x1c, 0x33,0xa1,0xe2,0x80,
+ 0xe7,0x98,0x87,0x3a, 0x63,0xc6,0x5b,0xcb, 0xcb,0xcb,0x59,0x3c, 0x22,0x63,0xa3,0xb6,
+ 0x67,0x67,0xe7,0x7a, 0x0d,0x01,0x98,0x60, 0x42,0x43,0x0a,0x26, 0xeb,0xa6,0xa0,0xb0,
+ 0x30,0x48,0x9b,0xc9, 0xf2,0x7c,0x9d,0xdf, 0x4e,0xda,0x9e,0xcf, 0x16,0x7a,0x8d,0x38,
+ 0xae,0xac,0x03,0x1c, 0x10,0xed,0x2a,0x2e, 0x17,0x02,0xd8,0x05, 0xe2,0x6a,0x71,0xa7,
+ 0x05,0x6a,0x41,0x05, 0x47,0x02,0xb3,0x42, 0x4c,0x33,0x90,0xd9, 0x90,0xbd,0x91,0x1f,
+ 0x85,0x6c,0x55,0x53, 0xa6,0x43,0xdd,0x9c, 0xc4,0xc2,0x18,0xfd, 0x7b,0xae,0x6b,0x51,
+ 0x3b,0x8b,0xb6,0x5d, 0x4a,0x83,0x32,0x1b, 0xd4,0x20,0x84,0x82, 0x33,0x79,0x8d,0x27,
+ 0x12,0x6d,0x31,0xa1, 0x70,0x9c,0x47,0xc9, 0x92,0x65,0x66,0xa8, 0x93,0x80,0x80,0x01,
+ 0x10,0x21,0x02,0x10, 0x98,0xc8,0x3b,0x76, 0x9a,0x20,0x22,0x2d, 0x21,0xa1,0x20,0x00,
+ 0x80,0x4a,0x28,0x4d, 0xa0,0x4d,0x10,0x98, 0xa8,0x6e,0x1a,0x18, 0x02,0x12,0x08,0x10,
+ 0x90,0x28,0x43,0x48, 0x1a,0x68,0x18,0xe4, 0xaa,0xd1,0x4a,0x49, 0xf1,0xdb,0x58,0x29,
+ 0x2f,0x68,0xdf,0x5e, 0xc7,0xde,0xa2,0xf0, 0x2d,0xea,0xf4,0xb0, 0x58,0x28,0xc1,0xa4,
+ 0xf8,0x06,0xad,0x2b, 0xbd,0x47,0xc4,0xe6, 0x0b,0x2c,0x18,0xd7, 0xf3,0x2a,0x5c,0x2b,
+ 0x62,0x94,0x61,0xb3, 0x87,0x84,0x28,0x06, 0xee,0x94,0x04,0x1f, 0xbb,0x5a,0xec,0x1d,
+ 0x78,0x80,0xf6,0xf8, 0x70,0x83,0x15,0x05, 0xe8,0xda,0xc8,0x76, 0x82,0x84,0xf6,0x19,
+ 0x14,0xfc,0xcc,0x4b, 0x83,0x09,0xdb,0x86, 0x50,0x00,0xa5,0x00, 0xce,0x2b,0x45,0xb3,
+ 0xfe,0x3b,0xa6,0xc4, 0x38,0x78,0x68,0x9e, 0xd3,0x44,0xbd,0x47, 0x61,0x65,0x60,0x8a,
+ 0x1c,0x26,0xc2,0x83, 0x83,0xf7,0x5a,0x62, 0x22,0x31,0x75,0xad, 0xe6,0xc6,0xf0,0xe6,
+ 0x28,0xcd,0x1b,0x02, 0x59,0xca,0x61,0xbf, 0xf3,0x84,0xc7,0x9e, 0x22,0x50,0x57,0x6c,
+ 0xf2,0xf2,0x13,0x1e, 0xfe,0x82,0x0c,0x1a, 0xa9,0x79,0x4a,0xb2, 0xbf,0xed,0xda,0x44,
+ 0x0d,0x90,0x90,0x70, 0x1f,0x28,0x5c,0x3a, 0x16,0x85,0x04,0xee, 0xda,0x4a,0xa9,0x58,
+ 0x12,0x6f,0x5e,0xb6, 0xf6,0x45,0x99,0xd6, 0x57,0x59,0x40,0x45, 0xf5,0x41,0x02,0xfb,
+ 0x30,0xbc,0x2b,0x7c, 0x67,0x02,0xf2,0xd1, 0x7e,0xe6,0xb4,0x12, 0x0b,0x94,0x01,0x17,
+ 0x4e,0xcb,0xff,0x0e, 0xfb,0xc5,0x30,0x01, 0x7e,0xe8,0xc9,0xdb, 0x68,0x2b,0x29,0xba,
+ 0xf8,0x9a,0xc2,0xc8, 0x44,0x80,0xa2,0x80, 0xe1,0xd1,0x5b,0x6c, 0xd9,0x31,0x13,0x6c,
+ 0x38,0xa3,0xb4,0x0b, 0x60,0xd2,0x0a,0xae, 0x20,0x71,0xa5,0x9f, 0x34,0x6d,0x5e,0x95,
+ 0x08,0x99,0x96,0x0d, 0x2b,0x23,0x4e,0xdf, 0x3f,0xe8,0x2b,0x81, 0xea,0xf6,0xbe,0x8a,
+ 0x62,0x20,0x61,0xb9, 0xdb,0x57,0x04,0xfa, 0xb8,0xcf,0xc2,0xce, 0x3b,0x82,0x6e,0xc5,
+ 0x8d,0x3d,0x24,0x52, 0x36,0xb2,0x92,0x64, 0x60,0x6e,0x6a,0x99, 0x50,0x79,0x77,0x48,
+ 0x5c,0x2e,0x26,0x62, 0x08,0x1f,0xe6,0xca, 0xf7,0xd6,0x18,0xb3, 0x1a,0x4c,0xe3,0x36,
+ 0x7a,0x7c,0x69,0x7c, 0x04,0xf3,0x07,0xdf, 0x0c,0xe5,0x9f,0x61, 0x43,0xf9,0x11,0x85,
+ 0x8b,0xfe,0xf9,0xf9, 0x73,0x72,0x82,0x1f, 0x3f,0x6b,0xe4,0xab, 0x50,0x19,0x82,0x66,
+ 0x10,0x81,0x86,0xd5, 0xfc,0x21,0x61,0x30, 0x3f,0x2d,0xe7,0x9b, 0x85,0x19,0x1d,0x07,
+ 0xdf,0xb4,0xb7,0x75, 0xcb,0xae,0x79,0xf5, 0x2c,0x31,0x1a,0x30, 0x35,0xfb,0xdf,0xcd,
+ 0x34,0x7a,0x5d,0xdc, 0x18,0x38,0xb0,0x66, 0x79,0x08,0x3b,0xb6, 0x23,0x07,0x09,0x0b,
+ 0x1c,0x69,0x36,0x98, 0xd8,0xf4,0x79,0xbe, 0xc7,0x15,0x24,0xbe, 0x35,0x34,0x53,0x05,
+ 0xf5,0x53,0x95,0x8a, 0x1f,0x89,0x5b,0x2e, 0x75,0xcd,0x24,0xd2, 0x09,0xf5,0x81,0x87,
+ 0xb7,0x76,0x90,0x04, 0xee,0x60,0xa6,0xbf, 0x95,0xfb,0x1a,0x7f, 0x5e,0x16,0xbc,0x17,
+ 0x51,0x94,0x0e,0x3d, 0xd8,0x9b,0x3f,0x7f, 0x87,0xc0,0xa7,0xb3, 0xe1,0x6e,0x9b,0xaf,
+ 0xda,0xab,0xf6,0x74, 0x54,0xbb,0xad,0x1f, 0x64,0xa8,0xf9,0x3e, 0x20,0x58,0xdf,0xf4,
+ 0x93,0x52,0x36,0xfa, 0x38,0xfe,0x2d,0x5f, 0x3c,0xae,0xee,0x27, 0xc8,0xeb,0x9e,0x1b,
+ 0x18,0x91,0x74,0xf6, 0x01,0x7e,0xda,0x2f, 0xa5,0x08,0xed,0x31, 0x9f,0xf8,0x5e,0x75,
+ 0xcf,0xb1,0x47,0xc4, 0x7e,0x54,0xca,0xbe, 0x21,0xbf,0x19,0x46, 0x8d,0xc9,0xd1,0x45,
+ 0x6e,0x19,0x33,0xe7, 0x3f,0x9e,0xd6,0xc2, 0xb1,0xf4,0x35,0xfc, 0xbe,0xcf,0xc5,0xf7,
+ 0x4b,0xec,0x7a,0x85, 0xc7,0xd9,0xdc,0xf7, 0xe0,0x53,0xfa,0x33, 0xf8,0x46,0x3c,0x34,
+ 0x07,0x80,0x1f,0xfe, 0x7f,0xa5,0x4e,0x96, 0xea,0x5e,0x94,0xa3, 0x13,0xee,0x7b,0xad,
+ 0x59,0x92,0xe4,0xc4, 0xf6,0x19,0xdb,0x5c, 0xd4,0x9a,0x2b,0xee, 0xc6,0xd7,0x8d,0xec,
+ 0x3a,0x82,0xe3,0xbd, 0x56,0x33,0x09,0x07, 0xdd,0x14,0x19,0xc1, 0x56,0x11,0x77,0xf9,
+ 0xce,0xb4,0xbd,0x86, 0xd2,0x68,0x92,0x8c, 0x2d,0xff,0xb9,0xfc, 0x74,0x0d,0x4c,0x8d,
+ 0xf1,0x4a,0xd9,0xd7, 0x61,0x4f,0xde,0x46, 0xf4,0xfb,0x6b,0xc4, 0xdd,0x7d,0x19,0xc1,
+ 0x78,0x8d,0xe3,0x59, 0x65,0x00,0x49,0x95, 0x5e,0xa4,0x21,0x75, 0xc7,0x2c,0x90,0xc1,
+ 0xc7,0xaf,0x6c,0xef, 0x15,0x3c,0x45,0xec, 0x2c,0x98,0x95,0x26, 0x13,0xe8,0x4f,0xdc,
+ 0xe2,0x33,0x06,0x2d, 0x1b,0x50,0x8d,0x39, 0x58,0xe2,0xb9,0x01, 0x71,0x71,0xd0,0x3b,
+ 0x06,0xbe,0xc9,0x60, 0x4f,0xbe,0xbe,0xe4, 0xe4,0x35,0xb7,0x5f, 0xdd,0xfe,0x1e,0xae,
+ 0x3e,0x45,0x3d,0x02, 0x62,0x5b,0xfb,0xf3, 0xe4,0x8d,0x4b,0xba, 0x29,0x97,0x88,0xa3,
+ 0xbc,0x99,0x2b,0x3f, 0xcb,0x2e,0xc4,0x30, 0xf0,0x7d,0x21,0x7b, 0xd9,0x73,0x7a,0x0f,
+ 0xeb,0x3f,0x6f,0x95, 0x45,0xab,0x1a,0xb7, 0x9f,0xcd,0x95,0x3a, 0xfd,0xa6,0xf8,0x73,
+ 0xdf,0x4f,0x93,0x6f, 0x03,0x78,0x9f,0x89, 0x82,0x6b,0xa0,0xb1, 0xa2,0x2a,0x64,0xba,
+ 0x77,0xb1,0x6f,0x18, 0xfc,0x86,0xb4,0xd7, 0x9e,0x51,0xb1,0x77, 0x17,0xf5,0xe7,0xd6,
+ 0xb1,0x17,0xb4,0xdc, 0x06,0x7d,0x9e,0x2a, 0x7f,0x2d,0x9c,0x95, 0x33,0xa4,0xf8,0x6f,
+ 0x59,0x82,0x6d,0x52, 0x53,0xb7,0x4b,0x93, 0xa1,0x1c,0x96,0x65, 0xb8,0xf9,0x9f,0x7e,
+ 0xd6,0xc7,0xec,0x7b, 0x7c,0x6f,0xb5,0x96, 0xfb,0x91,0x69,0x7d, 0x2c,0x66,0x94,0x70,
+ 0x5f,0xfe,0x2a,0xc2, 0x1c,0x00,0xd6,0xc5, 0xf5,0xb4,0x35,0xf2, 0x2a,0xe9,0xa2,0xac,
+ 0x8c,0x25,0x9a,0x07, 0x93,0x1b,0x04,0x24, 0xff,0x65,0x6f,0xe9, 0xa7,0x01,0x5a,0xaa,
+ 0x3a,0xd6,0x73,0xb6, 0xb0,0xce,0xe6,0xb1, 0xe3,0x76,0x58,0x1b, 0x96,0x1d,0xab,0xcf,
+ 0xfa,0x19,0x1b,0x7a, 0x3b,0x8d,0xc6,0x4a, 0xd8,0xdd,0x25,0x56, 0x21,0x8d,0x38,0xfb,
+ 0xd8,0x20,0xad,0x57, 0xa5,0x36,0x97,0xac, 0xc3,0x96,0xd8,0x57, 0x1b,0xb5,0x21,0x2f,
+ 0x4f,0x0b,0x69,0x65, 0xbe,0x53,0xa7,0x90, 0x10,0x67,0x30,0x5f, 0xf8,0x4b,0xea,0xfc,
+ 0x7f,0xaa,0xc6,0x92, 0x66,0x19,0x6d,0xb4, 0xb4,0x2e,0xe6,0x0b, 0x96,0x16,0x61,0x53,
+ 0x01,0xf0,0xfe,0xca, 0x4d,0xcd,0xbd,0x39, 0x50,0x13,0x93,0x79, 0x52,0x07,0x2f,0x26,
+ 0xe0,0x6a,0x5e,0xc8, 0x67,0x11,0x85,0x58, 0x0c,0x8e,0x40,0xd9, 0xd9,0xf9,0x4c,0x3b,
+ 0xcb,0xa3,0x7d,0xb5, 0x59,0xbb,0xe7,0x12, 0x09,0x15,0x2b,0xa0, 0xc1,0x25,0x60,0x09,
+ 0x47,0xab,0xe3,0xd9, 0xeb,0x72,0xdd,0x7f, 0xed,0x95,0x41,0x3e, 0xd6,0xc9,0xe3,0xe1,
+ 0x98,0x56,0x00,0xc4, 0xc0,0xbc,0xe2,0x9e, 0x8d,0x3d,0x29,0x9b, 0x03,0x28,0x28,0xe3,
+ 0xb6,0xa9,0xbf,0xd6, 0x4d,0x0c,0x69,0x37, 0xcb,0x44,0xc3,0xb2, 0xd9,0xf2,0xe6,0xb8,
+ 0xb8,0x3e,0x51,0x24, 0xe7,0x6a,0x88,0xee, 0xce,0xaf,0xd4,0x40, 0x19,0xaf,0xf1,0x8f,
+ 0x4f,0x66,0x51,0x94, 0x9f,0xbf,0xdb,0xed, 0xd3,0xd0,0xf6,0x63, 0x9e,0xe3,0x75,0x01,
+ 0xd8,0x73,0x40,0xe4, 0x83,0xa8,0x9a,0x42, 0xc4,0x44,0x83,0xc4, 0x93,0xa1,0xbb,0xab,
+ 0x8f,0x81,0x75,0x7c, 0x9b,0xf7,0xb7,0x2b, 0x6d,0xb3,0xb7,0x8b, 0x7a,0x48,0x75,0x5a,
+ 0x97,0x3d,0x41,0xa9, 0xdb,0xb7,0xdd,0xc7, 0xe8,0x5b,0xaa,0x98, 0x60,0x1c,0x2c,0x90,
+ 0x61,0x7a,0x5a,0x14, 0xbf,0x52,0xd3,0xb5, 0x42,0x9b,0x92,0x06, 0x7b,0x8d,0x82,0xf7,
+ 0x76,0xed,0x43,0xbe, 0xd7,0xb9,0xc1,0x0c, 0x99,0x89,0xcf,0xd1, 0xec,0x20,0xf0,0x22,
+ 0x75,0xe6,0x74,0x79, 0x77,0x0f,0xde,0xaf, 0x45,0x02,0x85,0x8d, 0x40,0xc0,0xdf,0xcd,
+ 0x0e,0x3e,0x51,0x64, 0x4f,0x8c,0x9d,0xa1, 0xa9,0x8e,0xc1,0xb4, 0xe1,0xba,0x2e,0x09,
+ 0xe8,0x7c,0x22,0x57, 0x0b,0xab,0xbb,0x20, 0xf0,0xcb,0xb5,0x88, 0x81,0x8a,0x5c,0xe1,
+ 0xf9,0x0e,0x67,0x08, 0x70,0x8a,0x59,0x75, 0x47,0x9f,0x81,0xca, 0xa0,0x2f,0x61,0x37,
+ 0x3f,0x29,0x5b,0x19, 0x0b,0x8f,0xf9,0x6a, 0x7d,0xac,0x90,0x79, 0x23,0x60,0xc0,0x3e,
+ 0xe2,0x02,0x0c,0x03, 0x30,0x05,0x1e,0xc6, 0xb3,0x08,0xe6,0xfb, 0x27,0x1c,0xc8,0x6a,
+ 0xb0,0xfb,0x1e,0x0d, 0xea,0x76,0x79,0xcc, 0xbf,0xe9,0xd7,0x72, 0xd7,0xc8,0xd5,0x6f,
+ 0x76,0x7e,0xd4,0x77, 0xc0,0xcf,0xb1,0x32, 0xcb,0xfa,0xa7,0xbf, 0xfb,0x6d,0xb6,0xee,
+ 0x7c,0x1f,0x46,0x73, 0xc5,0xf2,0xc1,0x7c, 0x58,0x8b,0x0d,0x7c, 0x15,0x0a,0x0c,0x04,
+ 0x10,0x35,0x28,0x6e, 0xd4,0x26,0x55,0xa2, 0x7a,0xf9,0x84,0x86, 0xdb,0xe7,0x4b,0xc0,
+ 0xb6,0x0b,0xd7,0xc9, 0xfe,0xd9,0xea,0xc1, 0x34,0x06,0xdf,0xcb, 0xc3,0xaa,0xa5,0x81,
+ 0xfb,0xa6,0xe2,0x9f, 0x9a,0xb2,0xcf,0x59, 0x39,0x33,0x60,0xa7, 0x3f,0x11,0x35,0x16,
+ 0xa1,0x6e,0x2f,0x96, 0xa9,0xbe,0x9b,0xfb, 0xf7,0xc5,0x05,0x4a, 0xa6,0xef,0x24,0x4c,
+ 0x80,0x5b,0x3b,0xee, 0x9d,0xb1,0x4a,0x62, 0x06,0xca,0x1b,0x44, 0x09,0x02,0x10,0xfc,
+ 0x7c,0x94,0x84,0x06, 0xc8,0x8c,0x1e,0xd6, 0x9d,0xab,0x52,0x9f, 0xb2,0xaa,0xf0,0x83,
+ 0x41,0x6e,0x58,0xc4, 0x48,0x5b,0x86,0xba, 0x69,0x8f,0x9e,0x3b, 0x10,0xc8,0xf7,0xc4,
+ 0xfe,0xef,0x12,0x96, 0x23,0x9b,0xed,0xaf, 0x49,0x1e,0xb8,0xb0, 0x93,0x93,0x10,0x83,
+ 0x95,0xb1,0x79,0x99, 0x89,0x42,0xb9,0xf9, 0x0f,0x2f,0x2a,0x40, 0x2b,0x74,0xd3,0xd6,
+ 0xfb,0xf9,0x09,0x96, 0x85,0x0e,0xf3,0x01, 0x90,0x00,0xb9,0x31, 0x13,0x9e,0xbc,0x85,
+ 0x9c,0x55,0xde,0xb1, 0xee,0x0b,0x83,0xce, 0x83,0xb9,0xe2,0xfb, 0x9e,0xf5,0x7f,0x65,
+ 0xe5,0x9d,0x3b,0xa5, 0xb8,0x8d,0x45,0x62, 0x0e,0x58,0xd8,0x63, 0xd0,0x21,0x3d,0xa0,
+ 0x73,0xf1,0x91,0xed, 0x0a,0x46,0x00,0x03, 0x10,0x22,0x10,0x4e, 0x63,0xb6,0x04,0xd2,
+ 0x37,0x8c,0x49,0x1f, 0xcd,0xa5,0x92,0xc3, 0xb9,0x69,0x6a,0x46, 0x10,0xfc,0xba,0xd0,
+ 0x44,0x3b,0x92,0x41, 0x12,0x82,0x1a,0x3f, 0x50,0x92,0x39,0xf6, 0x82,0x1a,0x42,0x3e,
+ 0x93,0x42,0x53,0x68, 0x9b,0x55,0x34,0x20, 0x26,0xd2,0x49,0x50, 0x1e,0x98,0x34,0x8d,
+ 0xdd,0x50,0x03,0x67, 0x58,0x31,0x48,0x36, 0xce,0x16,0x23,0xd5, 0xf2,0xa4,0x25,0x53,
+ 0x10,0x68,0x17,0x97, 0xc7,0x56,0xe6,0x39, 0x9c,0x7b,0x1a,0x9f, 0xf1,0x80,0xcb,0x51,
+ 0xe0,0xe6,0xb5,0xa7, 0x67,0x83,0x62,0x3a, 0xcf,0xc9,0xc3,0x47, 0xb8,0xfe,0x16,0xac,
+ 0x78,0x63,0x1a,0xf2, 0xa8,0x75,0x52,0x02, 0xa1,0xda,0x1b,0x9e, 0xbb,0x6b,0xb2,0x9a,
+ 0xd6,0x5d,0x8c,0xb6, 0x8b,0x25,0xa4,0xce, 0x4a,0xbb,0xb1,0x65, 0x17,0x9e,0xa4,0x92,
+ 0x15,0xb4,0x3f,0x9c, 0xd0,0xb8,0x6d,0xe2, 0x86,0x93,0x3b,0x4f, 0xa6,0xcd,0x56,0xd8,
+ 0xae,0xf5,0x63,0x8a, 0xf8,0x17,0x0a,0xa2, 0xc2,0x1a,0xbb,0x4d, 0xb8,0x55,0x7c,0x7e,
+ 0x6b,0x3f,0x25,0xc3, 0x52,0xff,0x7d,0xd4, 0x74,0x3c,0xbc,0xb3, 0xb8,0xfb,0xbe,0x23,
+ 0x8a,0xd9,0xe4,0xd3, 0x73,0x6d,0xce,0x74, 0x56,0x41,0x71,0x0c, 0x00,0x6c,0xd4,0x34,
+ 0x2c,0x76,0x1d,0xb3, 0x41,0x1b,0x08,0x37, 0xa0,0x9a,0x3a,0x66, 0x07,0x6a,0xc0,0x63,
+ 0x12,0x2a,0x62,0x1f, 0x02,0x02,0x01,0x83, 0x31,0x57,0xa3,0xc3, 0x24,0xb9,0xaa,0x20,
+ 0xe5,0x98,0x8e,0xfd, 0xce,0xa5,0xef,0x65, 0x9d,0x1a,0x9d,0xb5, 0xb5,0xb4,0xac,0x52,
+ 0x2b,0xd1,0xf6,0x59, 0x8b,0x3e,0x5f,0xdb, 0xc9,0xad,0x1c,0x2a, 0x11,0xce,0xb5,0xec,
+ 0x05,0xe9,0x70,0xfe, 0x15,0x8c,0xf5,0x25, 0xfa,0xf7,0x17,0x20, 0x2b,0xbb,0x92,0x81,
+ 0x61,0x6b,0xe0,0x93, 0x4b,0x30,0xd0,0x43, 0x06,0xd3,0x2e,0x68, 0x89,0x58,0xd8,0x68,
+ 0x32,0xb8,0x26,0x70, 0xc4,0x66,0xe3,0xa1, 0x8b,0x63,0xcd,0x0e, 0x18,0xda,0x0e,0x8b,
+ 0xa1,0xfb,0x65,0x6d, 0xdb,0x9a,0xd1,0x35, 0x62,0xee,0x06,0xa7, 0xb8,0x62,0x98,0xf5,
+ 0xef,0x12,0x83,0x02, 0x29,0x16,0x08,0x24, 0x28,0x9b,0x24,0xe4, 0xb4,0x05,0x9b,0x58,
+ 0xf0,0x2a,0x69,0xcc, 0xd4,0x43,0x16,0x0b, 0x89,0xca,0xb7,0x9b, 0x41,0x67,0x03,0x23,
+ 0x2a,0x69,0x2a,0xcb, 0x6d,0xd8,0xe0,0x6f, 0x2b,0x97,0x2a,0x0c, 0x2c,0xf7,0xb6,0x33,
+ 0xf7,0x7e,0xff,0x57, 0x80,0xb3,0x15,0xef, 0x5b,0xc4,0xd2,0x42, 0x4d,0x83,0x69,0x8d,
+ 0xf9,0x90,0x0b,0xde, 0x12,0x81,0x36,0x43, 0x5a,0xc9,0x42,0x95, 0x1c,0x3c,0x61,0x67,
+ 0xb6,0x01,0xa4,0x29, 0x42,0xb2,0x8f,0x93, 0xd5,0x78,0x1d,0xa6, 0x7e,0x80,0xb5,0x9e,
+ 0xce,0x68,0x68,0x0e, 0xb7,0xaa,0xc8,0xb9, 0x5d,0x20,0xdb,0xe7, 0x85,0xd0,0x88,0x4f,
+ 0x3b,0xc3,0x17,0xa4, 0x54,0x37,0xca,0x32, 0x65,0x70,0x19,0xf9, 0xd5,0xea,0xb5,0xd0,
+ 0xb7,0x6e,0x53,0x9c, 0xb8,0x4e,0x33,0xea, 0x54,0x94,0x49,0xb3, 0x97,0x3a,0x59,0x4b,
+ 0x8a,0x81,0x22,0xa4, 0xc4,0x04,0x9a,0x92, 0x4c,0x27,0x25,0xc4, 0x31,0xb9,0xd4,0xa8,
+ 0x2b,0xb8,0x82,0x19, 0xc3,0xd0,0x4b,0xd0, 0x11,0x34,0x02,0x8c, 0xb8,0x55,0xd2,0x0a,
+ 0x49,0x90,0x02,0x01, 0x5d,0x70,0x0d,0x4a, 0x20,0x3c,0x2a,0x57, 0x46,0x30,0x68,0x1a,
+ 0x45,0x28,0x90,0x8a, 0xee,0xe2,0x8e,0x1d, 0x85,0x14,0x52,0x56, 0x8f,0x0c,0x42,0xb7,
+ 0xca,0xf5,0x6d,0xc1, 0x9f,0x83,0x57,0x96, 0xe1,0x7e,0x27,0x41, 0x7e,0xed,0xf2,0x2f,
+ 0x1b,0x52,0xe2,0xdf, 0x08,0x1c,0x86,0x40, 0xce,0x84,0xcd,0xc8, 0x72,0xe9,0x00,0x38,
+ 0xa2,0x40,0x9a,0x2a, 0x02,0x52,0x48,0x24, 0x28,0x30,0xca,0xf0, 0x26,0x93,0x01,0x28,
+ 0x04,0x02,0x42,0xcc, 0xd2,0x94,0x30,0xc4, 0x3b,0xaa,0x0a,0x19, 0x42,0xae,0x54,0x82,
+ 0x08,0x75,0x73,0x04, 0x50,0x43,0x48,0x7a, 0x43,0x06,0x48,0x28, 0x68,0x62,0x52,0x92,
+ 0xb3,0x2c,0x02,0xd0, 0x51,0x83,0x04,0x72, 0xa4,0x44,0xa2,0xcd, 0x16,0x8a,0x22,0x1c,
+ 0x99,0x06,0x0c,0x86, 0xa4,0xc0,0x80,0x29, 0x2a,0x15,0x91,0x14, 0x23,0xba,0x95,0x0e,
+ 0x03,0xb3,0x38,0x62, 0x00,0x26,0x42,0x10, 0xd0,0x29,0xc2,0xdc, 0x6c,0xb6,0xfb,0x42,
+ 0xc6,0xe1,0x9d,0xfd, 0xcb,0x48,0xb6,0x5c, 0x11,0x6a,0x13,0x07, 0x6e,0x65,0x05,0xd1,
+ 0x34,0xab,0x32,0xa4, 0x51,0x48,0x72,0x2f, 0x1b,0x31,0x9e,0x32, 0x75,0x1a,0xfa,0x3e,
+ 0x06,0x15,0x39,0x15, 0x5d,0x16,0xfe,0x46, 0xda,0xd0,0xaf,0xaa, 0x73,0xdb,0x6e,0x8f,
+ 0x85,0xa7,0xba,0xd7, 0xf2,0xef,0x35,0xdd, 0xd6,0xf7,0x9b,0xca, 0xcf,0xef,0x37,0xfc,
+ 0xce,0x26,0x93,0xef, 0xbe,0xfb,0xef,0xbe, 0xa5,0x29,0x57,0x3b, 0x59,0xac,0xa2,0xea,
+ 0x5b,0x61,0x6f,0x8c, 0xc5,0x3c,0x7d,0x46, 0xb2,0x48,0xc7,0x34, 0x73,0xdd,0x46,0xbf,
+ 0x45,0x79,0x6e,0xea, 0xbd,0x8a,0xe2,0x2d, 0x85,0x3e,0xe0,0x4d, 0x4a,0x7d,0xcf,0x9f,
+ 0x7b,0x45,0x24,0xe0, 0x89,0xf6,0x2a,0x80, 0x3d,0xdd,0x17,0xcc, 0xeb,0x2c,0x13,0xdf,
+ 0x79,0x31,0x34,0x7a, 0x9a,0x2e,0x2d,0x0d, 0x28,0xb4,0x91,0x2b, 0x4a,0xc2,0xab,0xbc,
+ 0xd1,0xd8,0x10,0x49, 0x10,0x70,0xb3,0x67, 0x4b,0x0a,0x11,0xe8, 0x9c,0x2c,0x16,0x96,
+ 0x38,0x66,0x6b,0xe2, 0x78,0xd9,0xb2,0xd5, 0x63,0xe5,0x21,0xaa, 0x38,0xba,0x90,0x6d,
+ 0xe8,0x81,0xa9,0xa9, 0x17,0x97,0x2a,0x11, 0xf1,0x2e,0xfa,0xaa, 0x30,0x0c,0xc9,0x9b,
+ 0xf7,0x4e,0xf8,0xd3, 0x8f,0x8b,0x3d,0x10, 0x61,0xd2,0x33,0x6c, 0x5a,0x63,0x4d,0xcc,
+ 0x00,0xd8,0x65,0xa9, 0x09,0xaf,0x05,0xc3, 0x11,0x09,0xbe,0x3a, 0x01,0x94,0x48,0xc3,
+ 0x5c,0xd6,0xd8,0x0f, 0x4c,0xd9,0x1b,0xdd, 0xb2,0xda,0xe5,0x18, 0xe6,0xf9,0xac,0x7e,
+ 0x58,0x39,0xd4,0xe8, 0xe8,0x34,0xbd,0x7f, 0xdb,0xf9,0x53,0xf4, 0xf1,0x74,0xb6,0x38,
+ 0xcb,0xf3,0x6a,0x2b, 0xdc,0x8c,0x0d,0x2c, 0x56,0x43,0x15,0x13, 0x32,0xa1,0x5a,0x6c,
+ 0xeb,0x99,0x4e,0xc9, 0x4e,0xa3,0x3f,0xe8, 0x68,0xed,0x97,0xc8, 0xda,0xd1,0xf6,0x84,
+ 0x33,0xe7,0xb3,0x4e, 0xe9,0x6c,0xef,0xd7, 0x34,0x82,0x76,0x7c, 0xe9,0xe2,0x84,0xf9,
+ 0x86,0x54,0x4e,0x18, 0x69,0x07,0xd0,0x36, 0x70,0x0f,0xd9,0x32, 0xbd,0x36,0xbe,0x59,
+ 0xf3,0xf1,0x89,0xbe, 0x72,0x68,0x8d,0xef, 0xe4,0x71,0x52,0xc7, 0x8d,0xb3,0x38,0x06,
+ 0x7c,0x26,0xb3,0xf4, 0xd7,0x87,0x33,0x48, 0x85,0x5f,0xa1,0x39, 0x80,0x29,0x00,0x98,
+ 0x98,0x41,0x63,0xf2, 0x69,0xd7,0xe2,0xba, 0x0b,0xc4,0x2d,0xa8, 0x22,0x01,0x02,0x05,
+ 0x08,0x44,0x20,0x20, 0x04,0x81,0x04,0x75, 0x90,0x36,0xa2,0xab, 0x52,0x11,0x00,0x80,
+ 0x44,0x08,0x00,0x40, 0x84,0x42,0x83,0x02, 0xb9,0x66,0x73,0x00, 0x10,0x91,0x10,0x9a,
+ 0x5b,0x28,0x09,0x26, 0xfc,0xc1,0x68,0x73, 0xb6,0x28,0xd5,0xe0, 0xf6,0x80,0x18,0xd7,
+ 0x1e,0x07,0x75,0xda, 0xeb,0xf0,0xdc,0xce, 0xe2,0xba,0x13,0x5b, 0x5a,0x7d,0xa3,0x3b,
+ 0xe6,0x1e,0x10,0xba, 0xb8,0x90,0xab,0x66, 0xd0,0xf0,0x33,0x1c, 0xa5,0x31,0x67,0x67,
+ 0x97,0x72,0x8c,0x0b, 0x16,0x2e,0xba,0x08, 0xc0,0x4d,0x07,0xe5, 0x40,0x66,0xfa,0x00,
+ 0x82,0xa7,0xf7,0xe1, 0x9b,0xc6,0x73,0x2e, 0x7c,0xf8,0x4d,0xb3, 0x9c,0xe9,0x0c,0x35,
+ 0x8c,0xb2,0x81,0x31, 0x79,0x3d,0x97,0x10, 0x70,0x67,0xc6,0xb6, 0xb6,0xa5,0x59,0xd7,
+ 0x30,0x9b,0x43,0x76, 0x7f,0xca,0x46,0xce, 0x05,0x6c,0x40,0xae, 0xbe,0x5d,0x0b,0x79,
+ 0x4f,0xa3,0x5a,0xc6, 0x50,0xa7,0x8e,0x03, 0x96,0xc6,0x07,0xd5, 0x4d,0x1d,0x0b,0x99,
+ 0xb5,0xca,0xd8,0xc8, 0xd8,0x06,0x31,0xbe, 0x41,0x1b,0x26,0xca, 0xd5,0xaf,0xa7,0xc5,
+ 0x2c,0xb7,0xb8,0xef, 0x09,0x7b,0x87,0x05, 0xde,0x98,0xeb,0xa2, 0x52,0xb7,0x72,0xe5,
+ 0xd0,0xb1,0xc9,0xb0, 0xe4,0xa2,0xd1,0x89, 0x10,0x5f,0xa8,0x31, 0x25,0x86,0x20,0x48,
+ 0x87,0x25,0x3a,0xd2, 0xe1,0xdd,0x5b,0x5e, 0x33,0xa0,0x93,0xb7, 0x98,0x04,0x66,0x4a,
+ 0x21,0xcf,0x10,0xbd, 0x7a,0x07,0x62,0xb2, 0x32,0x72,0x06,0x0b, 0x43,0xc5,0x73,0x01,
+ 0x16,0xcd,0x67,0x58, 0x99,0x62,0x00,0x13, 0x24,0x61,0x8e,0x40, 0x11,0x09,0xfd,0xaa,
+ 0xd9,0x0c,0x55,0xb2, 0x56,0x33,0x66,0x36, 0xa8,0xde,0xcc,0xad, 0xe7,0x5f,0x6a,0xaf,
+ 0xec,0xe0,0xe9,0x13, 0x7a,0xd7,0xa4,0xe3, 0x3c,0x2e,0xf3,0x9d, 0xc3,0x46,0x1b,0x0c,
+ 0xed,0xc8,0xc3,0x31, 0xda,0x06,0xd6,0x89, 0xa8,0x23,0x0b,0x74, 0x82,0x86,0x36,0xf4,
+ 0x8c,0x5f,0x78,0xe3, 0x90,0xef,0x77,0x61, 0xd5,0x95,0xe7,0xde, 0xd0,0xa0,0x28,0x65,
+ 0x07,0xb0,0x93,0x11, 0x4c,0x0d,0x85,0x91, 0x51,0xf5,0xf4,0x09, 0x12,0x64,0x76,0x5d,
+ 0x0e,0x7a,0xc6,0x87, 0x41,0x55,0x69,0x42, 0x3c,0x6d,0x81,0x0c, 0x2e,0xb7,0x4c,0x66,
+ 0xb6,0x73,0x9c,0xa4, 0xa5,0x70,0xda,0x3e, 0x67,0x45,0x8b,0x3a, 0xce,0x45,0xb8,0x00,
+ 0xaa,0x56,0x1c,0x47, 0x12,0x47,0x66,0xc3, 0xcc,0xea,0xf2,0xfc, 0x79,0x8b,0xdd,0xf5,
+ 0x5b,0xba,0x3e,0xcc, 0x19,0xab,0x83,0x3e, 0x2d,0x1b,0x53,0x39, 0x62,0x54,0x52,0x88,
+ 0xbf,0x14,0xc6,0x87, 0xed,0x30,0x6e,0x2f, 0x5b,0x5b,0xfb,0xd3, 0xd6,0x5f,0x5a,0x6b,
+ 0xf4,0xa3,0x9d,0x6c, 0x6d,0x59,0x4d,0xb1, 0x10,0x70,0x28,0x09, 0xcf,0x6b,0xa8,0x1a,
+ 0x1e,0x63,0x36,0x8c, 0xaa,0x24,0x2c,0xa5, 0xf2,0x32,0x69,0xfd, 0x9e,0x25,0x05,0xbb,
+ 0xb8,0x5a,0x3f,0x52, 0x0e,0xe3,0x81,0xe1, 0x5e,0xa1,0x5c,0xa0, 0xd6,0x73,0x84,0x2f,
+ 0xd6,0xe8,0xbd,0x45, 0xf3,0x2f,0x4f,0x6d, 0xd2,0x85,0x0e,0x64, 0x4a,0xd3,0x19,0x20,
+ 0xc1,0x80,0xb6,0x2a, 0xd3,0x28,0x97,0x82, 0xa7,0x9a,0xd3,0x73, 0x6b,0x57,0xba,0x5e,
+ 0x3d,0xb7,0x35,0x1f, 0x98,0x1c,0x7e,0xef, 0x84,0x21,0x48,0xea, 0x35,0xe7,0x18,0x66,
+ 0x80,0xb0,0x70,0x02, 0x9b,0xdd,0x5b,0x0b, 0x2c,0x15,0x18,0xa5, 0xc9,0xee,0x4f,0x08,
+ 0xd3,0x28,0x12,0x63, 0x9f,0x59,0xef,0xce, 0xa8,0xde,0xd2,0x23, 0x2d,0x1d,0x2d,0x27,
+ 0x70,0xfd,0xf6,0x66, 0xda,0x7d,0xf8,0x7e, 0x50,0x0d,0xf5,0x79, 0x17,0xd1,0xbf,0xe6,
+ 0xe6,0xad,0x33,0x79, 0x5e,0xb4,0xbb,0xe9, 0xf4,0x7b,0x2d,0x8f, 0x3b,0xf9,0x33,0x96,
+ 0x65,0x60,0x7d,0x27, 0x47,0x73,0x9a,0x34, 0xa2,0x41,0x9c,0x62, 0x35,0x69,0xb4,0xd2,
+ 0x40,0x06,0xd4,0x60, 0x50,0xf1,0xa4,0xfc, 0x25,0x47,0x50,0x4b, 0xd1,0xd0,0xd2,0x08,
+ 0x01,0x1b,0x66,0xa3, 0x36,0x92,0x14,0x3e, 0xfd,0x2e,0xa0,0xe7, 0xdc,0x2c,0x1d,0xdd,
+ 0x4e,0x41,0x8a,0xf0, 0x6f,0xc8,0xd7,0x3e, 0xe9,0xc5,0x79,0xfc, 0x1e,0xe5,0x13,0xe0,
+ 0xe1,0x8a,0x64,0x78, 0x96,0x26,0x9c,0x67, 0x92,0xf9,0x82,0xc0, 0xfa,0x0d,0x3b,0xe0,
+ 0xfd,0xd8,0x6d,0x7e, 0xd3,0xf9,0xfd,0xcd, 0x5f,0x82,0xf9,0xa9, 0xa1,0x28,0x65,0xa7,
+ 0xae,0x38,0x2a,0xde, 0x57,0x7c,0xf1,0xf4, 0x97,0x6d,0xbb,0x82, 0x26,0xcc,0xe1,0x47,
+ 0xcd,0xb0,0xf4,0x6e, 0xbf,0x93,0x00,0x34, 0x35,0xcc,0x28,0xd1, 0x62,0x69,0x24,0xda,
+ 0x7a,0x56,0xa0,0x82, 0x05,0x0d,0x36,0xe4, 0x43,0x57,0x8f,0x61, 0x52,0xa2,0x48,0x21,
+ 0x3a,0x20,0xfc,0x24, 0x63,0x0f,0x44,0x24, 0x64,0x10,0x42,0xff, 0x24,0x09,0x86,0xd3,
+ 0x44,0x5a,0xf0,0xd8, 0x9b,0xe0,0xab,0x6b, 0xb9,0xd3,0xc5,0xc1, 0xc7,0xaf,0x5d,0xe5,
+ 0x4d,0xa5,0xef,0x8c, 0x01,0xd2,0x6a,0x23, 0x34,0x46,0x5b,0xb0, 0x8f,0x29,0x3b,0xbf,
+ 0x08,0xfa,0xce,0x6f, 0x13,0x16,0x49,0x68, 0x3a,0x5b,0x97,0x7b, 0x05,0x6b,0xf9,0x19,
+ 0x43,0xe4,0xce,0x34, 0x66,0x22,0x57,0x31, 0xb7,0x1b,0x49,0x12, 0x0f,0xd2,0x2b,0x9e,
+ 0x6c,0xed,0x6c,0xbf, 0xcb,0xe9,0xdf,0xe6, 0xae,0xf6,0x3f,0x0e, 0xcf,0x57,0xc5,0x3f,
+ 0x03,0x5b,0xeb,0x69, 0x52,0xd4,0xec,0xc8, 0x42,0x10,0x16,0x5b, 0x18,0x27,0x28,0x42,
+ 0x42,0xae,0xc1,0x20, 0xc8,0x69,0x21,0x7d, 0x66,0x25,0x0d,0x24, 0x70,0xf6,0x51,0xee,
+ 0x7c,0xff,0xdd,0xaa, 0xe3,0xe8,0xb0,0x1a, 0x43,0x8f,0x67,0xa5, 0xa4,0xe1,0x7b,0xac,
+ 0xbe,0x83,0x61,0x9a, 0xd0,0xf3,0x72,0x42, 0x8c,0x3a,0xcd,0x74, 0x23,0xed,0x9c,0x1e,
+ 0xff,0x94,0xf6,0xc2, 0x93,0xc7,0x37,0x0e, 0x81,0xc0,0x5c,0x87, 0x86,0xd1,0xc3,0x27,
+ 0x01,0x7a,0xad,0xcd, 0xeb,0xca,0xc8,0x63, 0x47,0xd3,0x40,0xdb, 0x42,0x59,0xd2,0x41,
+ 0x5c,0x8a,0xbc,0xdc, 0x5e,0x5f,0x79,0x09, 0x65,0xdd,0x9d,0x80, 0xca,0xc7,0x46,0xff,
+ 0x5d,0x97,0x74,0xaf, 0x00,0x3f,0xde,0x63, 0x9f,0x18,0x19,0x38, 0x00,0x1a,0xef,0x88,
+ 0x92,0x1b,0x8d,0x95, 0xc3,0x36,0x16,0x38, 0xc5,0x5a,0xba,0x2f, 0x4c,0x8c,0x89,0x96,
+ 0x11,0xbf,0x76,0x26, 0x1a,0x07,0xb2,0x94, 0x80,0xb8,0x30,0xdb, 0x25,0xe2,0x80,0xf8,
+ 0x52,0x07,0x4b,0x60, 0xa0,0xe1,0x65,0x65, 0x2e,0xa3,0x61,0xbf, 0x2b,0x51,0x6f,0x62,
+ 0x68,0x7c,0xfc,0xbe, 0x8f,0xb3,0xcc,0xc3, 0x13,0xa3,0xd3,0xb7, 0x6a,0x4f,0xa4,0x11,
+ 0xee,0xfe,0x66,0x6c, 0xfb,0x43,0x9f,0x71, 0x3c,0x43,0x57,0x89, 0x16,0xcf,0x05,0x0d,
+ 0xaf,0x4e,0x15,0x5b, 0x09,0x20,0x83,0x14, 0xcd,0x9e,0xed,0x09, 0x30,0xbc,0xcd,0x64,
+ 0x0c,0xfe,0x29,0xd0, 0x1b,0x65,0x9c,0xe6, 0xc3,0xac,0x5c,0x3d, 0x79,0xa9,0xb0,0x76,
+ 0x80,0x70,0xab,0x7a, 0xac,0xe5,0xa7,0x2a, 0x8e,0x1b,0x5b,0x4f, 0x7e,0xc0,0xfc,0x90,
+ 0x3a,0x39,0xf5,0x73, 0x82,0x40,0xb2,0x41, 0xc2,0xa2,0xfc,0x1f, 0xb8,0x7e,0x3f,0x9b,
+ 0xf2,0xd1,0xee,0x2f, 0x5d,0xed,0xcd,0xaf, 0x74,0xf0,0xcd,0x26, 0x29,0xb6,0x31,0x2e,
+ 0xd3,0xb6,0xa5,0x3f, 0x74,0xc7,0xe9,0xd1, 0x78,0xa1,0xab,0xb6, 0xe3,0x38,0xbd,0xfc,
+ 0x35,0x89,0x41,0x62, 0xe3,0x3d,0x87,0xdf, 0xde,0x05,0xb0,0xd3, 0xc0,0xee,0xb9,0xf0,
+ 0xf7,0x7d,0x67,0xd4, 0x1e,0x03,0xa2,0xec, 0x0a,0xd5,0xf3,0x51, 0x54,0xd0,0x39,0xe2,
+ 0xd3,0xc5,0xa1,0xa2, 0xb2,0xb3,0x2a,0x66, 0xcf,0xfc,0xaa,0x74, 0xf2,0x39,0x57,0x2c,
+ 0x64,0xd4,0x78,0xd2, 0xfd,0xce,0xd1,0x5a, 0xaf,0xaf,0xf6,0xf8, 0x30,0xec,0x78,0xb2,
+ 0x60,0x55,0x64,0x59, 0x8d,0x32,0x66,0xef, 0x1f,0xe1,0xf5,0xbd, 0x1b,0x4c,0x15,0x98,
+ 0x6f,0x92,0xd9,0xdc, 0xd6,0xa2,0xfd,0xbd, 0x4b,0xac,0x3a,0x4e, 0x52,0xa3,0x79,0xb3,
+ 0xa9,0xda,0xbb,0x4a, 0x93,0x18,0xd4,0x97, 0xe3,0x77,0xb0,0xfb, 0x3d,0xf8,0x66,0x91,
+ 0x84,0x14,0xa8,0xc3, 0xa7,0xad,0xd5,0xf2, 0x22,0xa1,0x3a,0x9c, 0x12,0x60,0x4d,0x03,
+ 0xf0,0xbe,0xfc,0xd7, 0xf7,0x99,0x1a,0xfe, 0x2d,0x98,0x23,0x82, 0x01,0x81,0x85,0x3e,
+ 0xeb,0xc7,0x5e,0xe9, 0x0d,0xdc,0x31,0x52, 0x39,0x23,0xd5,0xce, 0xf7,0x5c,0x2f,0x2f,
+ 0x1a,0x98,0xce,0x9a, 0xd7,0x47,0x57,0x3a, 0x21,0x3e,0xe1,0xe6, 0x04,0x64,0xc6,0x1e,
+ 0x1b,0xe9,0x96,0xf7, 0x51,0x8a,0x6f,0x04, 0xb8,0x2f,0x94,0x7a, 0xea,0x52,0xeb,0xc8,
+ 0x17,0xc6,0x99,0xc7, 0x72,0x1e,0xd3,0x78, 0x72,0x07,0x08,0xb9, 0xb9,0xaf,0x3b,0x82,
+ 0xb4,0xd1,0x79,0x3d, 0x25,0x6e,0xcc,0xf3, 0x5e,0x92,0x62,0x90, 0x8c,0xf6,0x32,0xb8,
+ 0xfe,0x42,0xd2,0xce, 0x83,0x32,0x97,0x29, 0x77,0x8c,0x1e,0x25, 0xd9,0x07,0x49,0xdc,
+ 0x74,0x25,0xac,0x06, 0x71,0x49,0x4b,0x1a, 0x7a,0x7b,0x2b,0x38, 0xac,0x8b,0x6c,0xb6,
+ 0xf2,0x8b,0xb3,0x85, 0xb7,0xed,0xc3,0xda, 0xf3,0x7d,0x50,0x61, 0x85,0x99,0xad,0x4d,
+ 0x68,0x91,0x33,0x90, 0xad,0x59,0x63,0x80, 0xb0,0x22,0x2c,0xe0, 0x47,0x88,0x32,0xe4,
+ 0x40,0x9b,0x7b,0x3c, 0xec,0x22,0x49,0x7c, 0xf6,0x5e,0x78,0x10, 0xab,0xfc,0x1c,0x29,
+ 0x21,0xe0,0xde,0x4a, 0xba,0x5a,0x9f,0x1a, 0x00,0x30,0xda,0x01, 0xd8,0xf9,0x3c,0xa4,
+ 0x4d,0xe7,0x2c,0x93, 0x6c,0x29,0x95,0xef, 0x51,0x29,0x57,0x2c, 0xba,0xd5,0x08,0x56,
+ 0xdb,0xce,0x42,0x9f, 0xb2,0xb6,0xe1,0x7f, 0xa3,0x89,0x24,0xab, 0x17,0x41,0x6c,0x54,
+ 0x76,0xc8,0x86,0x77, 0xcd,0xc4,0xac,0x3c, 0x7d,0x57,0xbb,0xd9, 0xee,0x4f,0x53,0x6f,
+ 0xe9,0x88,0xde,0x35, 0xe3,0xf7,0xea,0xc6, 0x7a,0xbb,0xa8,0x2c, 0x84,0x36,0x3b,0x21,
+ 0xf8,0x6e,0xd5,0x4c, 0x00,0x9f,0xa7,0x2c, 0x3d,0x0c,0xdb,0x3e, 0x98,0xe1,0xf1,0x53,
+ 0x1e,0x20,0xc7,0xc2, 0x0f,0x02,0x7f,0xae, 0xa9,0x3c,0x06,0xae, 0x90,0xa3,0xde,0x8f,
+ 0x00,0x47,0x21,0xdb, 0x50,0x1d,0x05,0x54, 0x10,0x12,0xf7,0xd7, 0x36,0xd9,0xb2,0xcc,
+ 0x28,0xb8,0xc7,0x1c, 0x2c,0x7d,0x99,0x02, 0xb2,0x99,0x93,0x2f, 0x2a,0x90,0xc6,0xdc,
+ 0x4d,0xde,0x9e,0x35, 0x73,0x62,0xa2,0xa5, 0x3b,0x9b,0xa9,0x4c, 0x8a,0x60,0x48,0xd7,
+ 0xfc,0xf7,0xe4,0xca, 0xbc,0xaf,0xf0,0xad, 0x3e,0xec,0xdd,0xee, 0x9d,0x9d,0x1e,0x45,
+ 0x9b,0x8e,0x79,0x01, 0xf4,0xf1,0x90,0x81, 0x60,0xcd,0x19,0x1d, 0x11,0xc7,0x33,0x94,
+ 0x85,0x7e,0xc2,0xd5, 0x66,0x82,0xeb,0xd5, 0x52,0x44,0x84,0x61, 0xea,0x66,0x1c,0x57,
+ 0x6b,0xb0,0x6a,0x3c, 0xfd,0xc3,0xf2,0xc9, 0xa1,0xbb,0x16,0x0c, 0x25,0xfb,0x85,0x0c,
+ 0x35,0x62,0x47,0x13, 0x89,0xd9,0xe2,0x60, 0x54,0x31,0xc0,0xe4, 0x71,0xfe,0x86,0xb8,
+ 0x4f,0xba,0x36,0x50, 0x9f,0x00,0xf2,0x45, 0x04,0x46,0x62,0x9e, 0xf9,0x28,0xe0,0x53,
+ 0x32,0x2b,0x8a,0xa6, 0x40,0xab,0xa6,0x57, 0xe7,0x78,0x7d,0xdc, 0xeb,0x25,0x1e,0x4b,
+ 0xb4,0x98,0xa1,0x5f, 0xce,0xea,0x07,0x21, 0x68,0xae,0x32,0xb7, 0xb7,0x0e,0x38,0x13,
+ 0x1a,0x3d,0x83,0xb6, 0x6c,0xea,0x2d,0x61, 0x22,0x57,0x77,0xf9, 0xb9,0x7d,0x25,0x8e,
+ 0xbf,0x1c,0xc1,0x63, 0x32,0x4c,0xd6,0x71, 0x3a,0x48,0x44,0xbf, 0x24,0xc9,0x27,0x4c,
+ 0x04,0x45,0xa2,0x95, 0xb1,0xec,0x3a,0x7c, 0x9f,0xd9,0xce,0x4c, 0xd4,0xe0,0xd4,0xa4,
+ 0x79,0xa3,0xe2,0x91, 0xab,0x9d,0x71,0xa7, 0xea,0xfd,0x09,0xb0, 0x5e,0x9f,0xa2,0xef,
+ 0x7c,0xe3,0x41,0x1d, 0x0a,0xb9,0x7c,0x70, 0xa0,0x22,0xdf,0x50, 0x00,0xeb,0xa4,0x9a,
+ 0xe4,0x09,0xac,0x3a, 0xd6,0xd6,0x1b,0x59, 0x71,0x24,0x94,0x80, 0x42,0x0d,0xe3,0x8f,
+ 0x54,0xd3,0x51,0x20, 0x37,0xc3,0x21,0x40, 0x02,0x8a,0xc2,0x4c, 0x84,0x21,0x20,0x80,
+ 0x81,0x00,0x90,0x20, 0x44,0x08,0x40,0x27, 0x40,0x38,0x71,0xd1, 0xdb,0xfb,0x34,0x2f,
+ 0xde,0x58,0x76,0x23, 0xdb,0xef,0x70,0x76, 0x7f,0xa7,0xfa,0x73, 0x05,0x82,0x37,0x84,
+ 0x1e,0x3f,0x0f,0xc0, 0x95,0x6c,0x0e,0x5b, 0xa6,0xb9,0xa1,0x74, 0x91,0x99,0x19,0x08,
+ 0x14,0x04,0x54,0x6d, 0x23,0x16,0x13,0xb8, 0xa7,0x24,0xe6,0xd8, 0x39,0x82,0x41,0x00,
+ 0x0a,0x01,0x43,0x1a, 0x6c,0x4d,0x80,0xda, 0x4d,0x80,0xd8,0x03, 0x60,0xda,0x4d,0x88,
+ 0x1b,0x40,0x36,0x93, 0x06,0x9b,0x43,0xe0, 0xfe,0x8c,0x60,0xbb, 0xf7,0x3b,0x6c,0x99,
+ 0x97,0x3a,0x5b,0xbb, 0xb2,0x55,0x99,0x54, 0xaf,0x8b,0x62,0xb6, 0xc6,0x84,0xdb,0x69,
+ 0xa6,0x9b,0x43,0xb9, 0x71,0x2e,0xd1,0xdf, 0x3b,0x28,0x75,0xd7, 0x4a,0xfa,0x6c,0xd5,
+ 0x6a,0x09,0xe7,0x6e, 0x2b,0x6d,0x5d,0xde, 0x4a,0x3f,0x9f,0x0a, 0x44,0x9e,0x27,0x89,
+ 0x5e,0x07,0x7d,0x7d, 0x1c,0xf1,0x35,0x00, 0xc6,0x90,0xd8,0x4c, 0x9c,0x24,0x12,0x6c,
+ 0x7d,0xcb,0xda,0x73, 0x3d,0xbe,0xe0,0x9e, 0xa3,0x9e,0xf1,0xf8, 0xeb,0xbd,0x2f,0x89,
+ 0xa4,0xcd,0x43,0x30, 0xfc,0x0b,0x3d,0xe8, 0x7c,0xdd,0x7c,0x2e, 0xbe,0x50,0x09,0x58,
+ 0x7e,0x6f,0xfb,0xf9, 0x3f,0xdd,0xad,0xa7, 0xf3,0xd4,0x96,0xba, 0x50,0x97,0x2b,0x9e,
+ 0x5a,0xed,0xe4,0xc0, 0xf2,0x27,0xeb,0x18, 0x86,0x54,0x80,0x2c, 0x3e,0x80,0xf7,0x50,
+ 0xa7,0x77,0x9a,0xc6, 0xe0,0x18,0x8b,0xd2, 0xa1,0x58,0x17,0x5d, 0x47,0x89,0x61,0xea,
+ 0xf3,0x26,0x1e,0x9b, 0xb0,0x0c,0x11,0x02, 0x08,0x0c,0x6c,0x49, 0x36,0x09,0x0c,0x1b,
+ 0x19,0xf5,0x18,0x88, 0xdc,0x28,0x12,0x86, 0x26,0xca,0xa8,0xaa, 0x44,0x2f,0x89,0xa7,
+ 0xf4,0xf0,0x70,0xa8, 0xe1,0xd4,0x68,0x37, 0xb1,0x3b,0x15,0xbf, 0xed,0x35,0x90,0x57,
+ 0x82,0x97,0xcb,0x32, 0xcf,0x99,0xd4,0x78, 0x75,0x6e,0xbe,0x58, 0x6c,0x73,0x81,0xd7,
+ 0x33,0x72,0x6e,0xd2, 0x1a,0xcc,0x13,0x44, 0x66,0x21,0xfa,0xde, 0xe2,0x6e,0x53,0x9c,
+ 0x84,0x4a,0x4d,0xca, 0x4c,0x10,0x81,0x49, 0xa9,0x12,0xd8,0x8d, 0x68,0x3c,0x64,0x4b,
+ 0xbc,0xd9,0x3b,0xe0, 0x46,0xc3,0xfa,0x50, 0xf8,0x5e,0x26,0xfb, 0xd8,0xf2,0xaf,0x32,
+ 0x7c,0xac,0x54,0x89, 0x3b,0xd5,0xf5,0xee, 0x33,0x5b,0xff,0x83, 0xa1,0x86,0xe0,0xcc,
+ 0xe9,0xb8,0x3e,0xce, 0xc2,0x61,0xce,0x22, 0xa4,0x4f,0x54,0x49, 0x77,0x87,0x1f,0xf8,
+ 0x98,0xa8,0xae,0xda, 0xc5,0x35,0xd0,0xd3, 0xa3,0x1d,0x4e,0x21, 0xd5,0xe9,0x26,0xc3,
+ 0x27,0xfe,0x23,0x32, 0x50,0xc6,0x0c,0xf3, 0x61,0x04,0xa9,0x85, 0x89,0xa9,0xaa,0x49,
+ 0x30,0x0c,0x52,0x5e, 0x86,0x1e,0x22,0x98, 0x53,0xe0,0x10,0x85, 0x71,0xe4,0x20,0x2e,
+ 0x29,0xbb,0xbd,0xc0, 0x4a,0xf1,0xb5,0x18, 0x1b,0x20,0x03,0x67, 0x4c,0x97,0x27,0x75,
+ 0xd9,0xfc,0x4f,0x37, 0x1c,0x8f,0xd5,0x69, 0x01,0x5f,0x07,0x91, 0xab,0x4c,0x99,0xee,
+ 0x0f,0x36,0x77,0xaf, 0xc8,0xef,0xad,0x73, 0x36,0x71,0x56,0x6b, 0x27,0x12,0x17,0x37,
+ 0x28,0x8e,0x4b,0x5c, 0x10,0x92,0xc6,0x22, 0x44,0x70,0x46,0x44, 0x05,0xc4,0x2a,0x00,
+ 0x4c,0x27,0x11,0x39, 0x12,0x24,0xa7,0x0e, 0x1b,0x84,0xe2,0x1c, 0x67,0x4b,0xbd,0xa1,
+ 0xd9,0xd3,0x40,0x86, 0x34,0x24,0x9d,0x04, 0x28,0x68,0x10,0x31, 0x3f,0x77,0xda,0x6b,
+ 0x3f,0x1d,0x08,0xf9, 0xbd,0xe5,0x8e,0x8b, 0xf2,0xde,0x53,0x64, 0x05,0x7c,0x94,0x43,
+ 0x35,0x78,0x17,0xa6, 0xfe,0xf5,0x08,0x18, 0x0c,0x4d,0xb0,0x6c, 0x43,0x04,0x93,0x94,
+ 0x43,0x04,0xd3,0x04, 0x86,0x90,0x9b,0x01, 0x1a,0x79,0xcc,0x29, 0xb4,0x3b,0xb9,0xab,
+ 0x04,0xfd,0xcc,0x56, 0xc7,0xc8,0x33,0x81, 0x04,0xe5,0x58,0xd9, 0xe8,0x77,0x1d,0xf7,
+ 0x4f,0x54,0xd3,0xf0, 0x70,0xe3,0xa2,0xeb, 0x76,0x16,0xd0,0xf2, 0x61,0xbd,0xf5,0xda,
+ 0x38,0x97,0x39,0xa6, 0x96,0x54,0x1f,0x0b, 0x96,0xcb,0xf1,0x13, 0xef,0x3f,0xbd,0x3b,
+ 0xa8,0xed,0xd2,0x9c, 0x74,0xac,0xaf,0x3a, 0x1e,0x2a,0x40,0xc3, 0xdb,0xb4,0xc9,0xfb,
+ 0xcf,0x7a,0xfe,0xbf, 0xc7,0xca,0xdb,0x4a, 0x45,0xec,0xb2,0xb2, 0xd1,0xda,0x67,0x03,
+ 0xa1,0xb2,0xb6,0x7e, 0x57,0x16,0xb0,0x80, 0xac,0x74,0x49,0x32, 0xe5,0x2b,0x2f,0xe0,
+ 0xdd,0xcd,0xb8,0x54, 0x34,0x6a,0xc0,0x46, 0xbc,0xb9,0x84,0x03, 0x52,0xd6,0xdf,0x74,
+ 0xc0,0x88,0x04,0x0c, 0xc2,0x1a,0x99,0x56, 0x74,0x5f,0x3f,0x5b, 0xb0,0x26,0x06,0xac,
+ 0xe5,0xa8,0x60,0xff, 0x4f,0x3d,0x1d,0xc2, 0x51,0xb4,0xed,0xf8, 0xb1,0x17,0x12,0x0b,
+ 0x6d,0x4d,0x60,0xc9, 0x49,0x74,0x86,0xe6, 0x9f,0x2a,0xf6,0x8d, 0x4f,0x53,0xd9,0x9d,
+ 0x50,0xb1,0xbd,0xa9, 0x08,0x66,0xd6,0x8f, 0x0b,0xf0,0xcc,0x42, 0x62,0xc2,0xb3,0xde,
+ 0x63,0x60,0xa7,0xf3, 0x0c,0x76,0xc4,0xcb, 0x25,0xb7,0xf9,0x29, 0xdf,0x3f,0xcd,0xce,
+ 0x23,0x4c,0x22,0x70, 0x42,0x36,0x3a,0x66, 0x85,0xba,0x0c,0x24, 0x7c,0x0a,0x3e,0x56,
+ 0x1d,0x54,0x60,0xd0, 0xd9,0xd6,0x93,0xe8, 0x92,0xbe,0xce,0x4c, 0xac,0xde,0x39,0xcb,
+ 0x8d,0xd6,0xa6,0xc2, 0x65,0xee,0xb7,0x91, 0xa7,0x93,0xbe,0x79, 0x0b,0xe3,0xa1,0xfe,
+ 0x1d,0x18,0x86,0xce, 0xba,0x6f,0xad,0xc4, 0x66,0x74,0xb3,0xae, 0x7a,0x3c,0x5e,0x24,
+ 0xc7,0x17,0x65,0xe2, 0x6f,0x27,0xb9,0xaa, 0x83,0xa5,0xf5,0x36, 0x94,0xb8,0x62,0x67,
+ 0x17,0xaa,0x94,0xfb, 0xff,0x29,0x1c,0x35, 0x90,0x26,0x42,0x6c, 0x71,0x4c,0x30,0x60,
+ 0x2c,0x61,0xe1,0x84, 0x88,0x84,0x6f,0x5c, 0xf1,0x30,0x3d,0x70, 0x34,0x31,0xd7,0xd6,
+ 0x4b,0x7d,0x6a,0x5d, 0x34,0xc6,0x4c,0x67, 0xf7,0x4b,0x50,0x6e, 0x4d,0xdc,0x31,0xcd,
+ 0xfe,0x95,0x32,0x95, 0x6d,0xec,0x6a,0xa8, 0xd6,0xff,0x6c,0xe0, 0xf8,0xf6,0x49,0xef,
+ 0x4d,0xf0,0xfb,0xd8, 0x47,0x4e,0x2a,0xc3, 0x19,0xe4,0xa0,0xc4, 0xdf,0xb8,0xed,0x24,
+ 0x25,0x94,0x47,0x28, 0xb1,0x37,0x63,0x72, 0xa0,0xf3,0xfc,0xfc, 0x23,0x79,0xd6,0xfb,
+ 0x7c,0x8e,0x8f,0x6d, 0xb6,0xfe,0xce,0x5d, 0x32,0x13,0x26,0x3e, 0xf7,0x7a,0x96,0xfc,
+ 0x0a,0x27,0x38,0xcc, 0x18,0xc1,0xfa,0x51, 0x46,0xeb,0x65,0xd8, 0x1b,0xd6,0xfb,0x0a,
+ 0xae,0x99,0xea,0x36, 0xdc,0xfa,0x3c,0x27, 0xb5,0xab,0xe4,0xc2, 0x99,0x8f,0xab,0xd5,
+ 0x36,0xa6,0x96,0x5b, 0x3d,0x0f,0x7a,0x37, 0xd9,0xa9,0xe5,0xee, 0xb6,0x3f,0x5b,0x5b,
+ 0x86,0x87,0x51,0xe3, 0xb7,0xb9,0x61,0x5b, 0xa2,0xe1,0x6d,0xa5, 0x61,0x8d,0xff,0x3a,
+ 0xfd,0xc1,0x13,0x1f, 0x3c,0xbc,0x8c,0xaa, 0xd6,0xfd,0x02,0xaa, 0x8f,0xac,0xe1,0x75,
+ 0x1a,0xb5,0xd7,0xcf, 0x42,0x0f,0x41,0xe2, 0xd5,0x4f,0x51,0x48, 0xb4,0x6b,0xff,0xc0,
+ 0xe0,0x14,0x83,0xcf, 0x5f,0x41,0xcb,0xc1, 0xa2,0x87,0xf1,0xfd, 0xfa,0xc1,0xf0,0x6e,
+ 0x75,0xfe,0x0e,0xc7, 0x1e,0x9a,0xe1,0xa7, 0x67,0x97,0x63,0xf6, 0xb2,0x34,0xc0,0xad,
+ 0xdd,0x52,0xc0,0xbc, 0x6e,0xb6,0x95,0xb9, 0x3b,0xeb,0xf9,0x29, 0xdb,0xd1,0xe7,0x7b,
+ 0x03,0x15,0x5f,0x58, 0xec,0x35,0x57,0x89, 0x25,0xa7,0x9d,0xd2, 0x8b,0xb4,0x40,0x02,
+ 0x04,0x80,0x40,0x44, 0x46,0x20,0x40,0x81, 0x00,0x49,0x33,0x99, 0x14,0xe7,0xc9,0x01,
+ 0x88,0x3b,0xae,0x3a, 0x5d,0x03,0x97,0x59, 0x4f,0x67,0x60,0x7d, 0xee,0x74,0x1c,0x1f,
+ 0x22,0xa4,0x46,0x29, 0x0e,0x00,0x46,0xf3, 0xe9,0x49,0x04,0xe1, 0xb2,0x89,0xd7,0xf0,
+ 0xb3,0x37,0x7a,0x64, 0xe4,0x45,0xbf,0x91, 0xf3,0xec,0xf8,0x6c, 0xc8,0x9a,0x1e,0xe8,
+ 0xe4,0x10,0x39,0xc9, 0xb6,0x5c,0xed,0xd7, 0xd4,0x1a,0xa4,0x4a, 0xcc,0x71,0xae,0x6c,
+ 0x3c,0xbf,0x6d,0xc5, 0x47,0x53,0xab,0xc6, 0xa3,0x9c,0xe9,0x38, 0x1a,0x08,0xe8,0x77,
+ 0xba,0xcf,0x65,0x3b, 0xb3,0x75,0xa3,0xd0, 0xc4,0x25,0xf0,0xc0, 0x41,0xaf,0x1a,0xe0,
+ 0x30,0x70,0x20,0xeb, 0xba,0x4d,0x4f,0xce, 0xa2,0xfa,0xa3,0xc2, 0xed,0x6d,0xef,0xb7,
+ 0x06,0xc1,0x1f,0x1f, 0xeb,0x48,0x09,0x03, 0xd2,0xc0,0xa1,0xa6, 0x09,0x8d,0x3f,0xc3,
+ 0x11,0xf7,0xa2,0x89, 0x2a,0xaf,0xaa,0x59, 0xdc,0x15,0x65,0x55, 0x69,0x97,0x70,0x41,
+ 0x24,0x42,0x88,0x65, 0xf6,0x3e,0x4f,0x1d, 0xdc,0x5b,0x7b,0xbd, 0xee,0xf6,0x7f,0x3b,
+ 0xe9,0xf6,0xff,0x32, 0xfd,0xf5,0x64,0xb7, 0x1a,0xa0,0x62,0x81, 0xd1,0xfb,0x90,0xee,
+ 0x46,0xfe,0xff,0x19, 0x21,0x80,0x8c,0x7e, 0x97,0x51,0x00,0x43, 0xe0,0xae,0x3d,0x10,
+ 0x32,0x36,0x0a,0x59, 0x1c,0x01,0x66,0xb1, 0x88,0xc4,0x0b,0x74, 0x92,0x46,0x04,0x40,
+ 0x6b,0x76,0xf8,0xb8, 0x59,0x2f,0x34,0x78, 0x7c,0xc6,0x41,0x81, 0x8c,0x19,0xf1,0x12,
+ 0x73,0x69,0xe8,0x51, 0x47,0x7c,0x9f,0x8f, 0x74,0x95,0xe9,0x3f, 0x4f,0x3b,0x2d,0x24,
+ 0x5b,0x64,0xe3,0xa6, 0x03,0x01,0x01,0x54, 0x64,0x12,0x83,0xbc, 0x45,0xc6,0x05,0x37,
+ 0x80,0x22,0xd4,0xc3, 0xb0,0x42,0xee,0x47, 0x33,0xf6,0xd5,0x44, 0x7e,0x7c,0x6d,0x4e,
+ 0xfe,0xfa,0xff,0xab, 0x13,0xde,0xb1,0xda, 0xed,0x7c,0x57,0xb7, 0xb0,0xa4,0x7f,0x3e,
+ 0x42,0x22,0xa6,0x3e, 0xa9,0x19,0x5f,0x13, 0x1e,0x1b,0x9a,0xd6, 0x20,0x00,0x4d,0x20,
+ 0x2b,0x86,0x96,0x52, 0x5a,0xa4,0x0e,0xad, 0xca,0x61,0xe3,0xf8, 0xde,0x64,0xeb,0x5a,
+ 0xa5,0x87,0xad,0x85, 0x35,0x9f,0xb5,0xb2, 0xff,0xe5,0x55,0x28, 0x44,0x5e,0x52,0x83,
+ 0x31,0x8d,0xe1,0xb6, 0xbf,0xfa,0xa1,0xe8, 0xe4,0xb1,0xfd,0x6f, 0x55,0x30,0xf9,0x5b,
+ 0x5f,0xb3,0xb2,0x2d, 0x28,0x5e,0x41,0xae, 0xa5,0x24,0x9d,0x25, 0x7c,0x4f,0xee,0xa6,
+ 0xc4,0xc5,0x45,0xdd, 0x4a,0x4a,0x9d,0xaa, 0x20,0x35,0xeb,0x61, 0xb2,0x33,0x3d,0x60,
+ 0xfd,0x75,0xe9,0x31, 0x9c,0x1c,0x77,0x07, 0xbe,0xb3,0x9b,0xcb, 0x22,0x49,0x91,0xb6,
+ 0xd4,0x5d,0x6c,0xd8, 0xa3,0xbd,0x6b,0x2f, 0x40,0xaf,0x70,0x6f, 0x83,0x62,0xd6,0x51,
+ 0x74,0xeb,0x69,0x6a, 0x34,0xc5,0x8c,0x97, 0x51,0x94,0xd2,0xaa, 0xb8,0xc5,0x36,0x7e,
+ 0x25,0xca,0x9e,0xd3, 0xf6,0x4c,0xaf,0x66, 0x23,0x0c,0x86,0xe6, 0x36,0x46,0x54,0xde,
+ 0xd7,0x2d,0xe4,0xa6, 0xd0,0xec,0xbb,0x77, 0xf5,0x88,0x40,0x31, 0x56,0x73,0xa0,0xc2,
+ 0xf2,0x68,0xd1,0x98, 0xeb,0x75,0x90,0x23, 0xa7,0x90,0x5e,0x65, 0xef,0x75,0xa3,0xf9,
+ 0x1a,0x6b,0xcf,0x9f, 0x5b,0xcc,0xec,0xa0, 0xe8,0xfa,0x32,0x2f, 0x1f,0xba,0x68,0xd0,
+ 0xbe,0xdb,0xdd,0xc1, 0x94,0xc5,0x34,0xd2, 0xde,0x69,0x77,0x32, 0x0c,0x56,0x2e,0x26,
+ 0x94,0x35,0xb6,0x9b, 0x0d,0x1e,0x06,0xd9, 0xd8,0xd8,0x50,0x95, 0xff,0x3b,0xd9,0xac,
+ 0xa2,0x94,0xa0,0xaf, 0x72,0xc3,0x46,0x47, 0x71,0x9b,0x55,0x50, 0xf7,0x17,0xc8,0x97,
+ 0x7f,0x08,0x4a,0xb1, 0x87,0xf6,0xd2,0xaa, 0x4a,0xa2,0xb7,0x74, 0xec,0x4e,0x5c,0xac,
+ 0x0b,0x8a,0x5d,0x6f, 0xa1,0x9a,0x86,0x00, 0x69,0x46,0x80,0x9f, 0xb1,0x9a,0x74,0x40,
+ 0xd4,0x59,0x1b,0x44, 0xa3,0xa8,0xa0,0x46, 0x62,0xf5,0xcd,0xd7, 0x62,0x6f,0x77,0xbe,
+ 0x27,0xa3,0x23,0xb0, 0xd2,0x4d,0xef,0x3f, 0xd6,0x60,0x22,0x66, 0xf3,0x02,0xda,0x0a,
+ 0x1f,0x65,0xfe,0x9c, 0x9f,0xad,0xf5,0x02, 0xb2,0xe8,0x76,0xff, 0x34,0x7f,0xb3,0xd5,
+ 0x64,0xe8,0x41,0x7a, 0x43,0x2e,0x0a,0x9e, 0xf3,0xe4,0x3a,0xe2, 0x66,0xec,0x67,0x94,
+ 0xad,0x31,0x33,0x85, 0xa1,0x70,0x4c,0xf2, 0x2b,0x0a,0xcf,0xa8, 0x5b,0xe5,0x41,0x9c,
+ 0xa6,0x0d,0x24,0xa9, 0x3e,0x12,0x0c,0x56, 0xa0,0xcd,0x03,0x50, 0x7a,0xa6,0xe1,0xba,
+ 0x68,0x44,0x72,0x38, 0x86,0xc1,0xd2,0xc7, 0x2b,0x2e,0x35,0x7a, 0xdd,0xa6,0xb3,0x2c,
+ 0xc8,0xb3,0xcb,0x82, 0x0f,0x61,0x9f,0xa1, 0xb9,0x83,0x2d,0x8c, 0x8f,0x4d,0xb3,0x85,
+ 0xb8,0x93,0x4b,0x19, 0xe3,0xff,0x5d,0x90, 0xd8,0xd4,0x1b,0x86, 0x8b,0xe0,0x79,0xc1,
+ 0xce,0xb1,0xbe,0x53, 0x59,0x3c,0xfb,0x12, 0x18,0x11,0xa9,0x17, 0xf1,0x10,0xd9,0x24,
+ 0x08,0x81,0xfa,0x15, 0xff,0xe7,0x4a,0x39, 0xba,0xad,0x76,0x05, 0x94,0x16,0x97,0xf3,
+ 0x2d,0xa4,0x1c,0x0a, 0x9a,0x5a,0x1d,0x24, 0xda,0x6a,0xd4,0xd7, 0x74,0x5f,0x64,0xbc,
+ 0xfc,0x87,0xd8,0x59, 0xae,0x2f,0xa6,0xb4, 0x1f,0x48,0x98,0xbd, 0x67,0x24,0x77,0x9d,
+ 0x6d,0x8b,0x2a,0x02, 0x5e,0x9e,0x97,0xc1, 0x4f,0xe3,0xbf,0x70, 0x3e,0x50,0xf7,0xd8,
+ 0x73,0xbd,0xa6,0xa8, 0x17,0x48,0x83,0x24, 0xcb,0x45,0x08,0x8c, 0xb0,0x4f,0x80,0x97,
+ 0x33,0x31,0x15,0xb9, 0x40,0x4b,0x25,0xfd, 0x13,0xd1,0xca,0xf6, 0x81,0x24,0x87,0x2b,
+ 0xfe,0x2e,0xd4,0x56, 0x63,0x76,0x79,0xc6, 0x15,0x32,0x17,0xa7, 0x10,0x56,0x53,0xe3,
+ 0x97,0x45,0x69,0x8e, 0xc3,0x34,0x0a,0x06, 0x9a,0xb2,0x09,0x96, 0x31,0xba,0xa8,0xe1,
+ 0xec,0xf7,0x79,0xed, 0x9f,0x1b,0x25,0x3c, 0xd9,0xfc,0x3e,0x5b, 0x64,0x5b,0x34,0xdd,
+ 0xc0,0x51,0xc9,0x90, 0x41,0x8a,0x53,0x20, 0x72,0x00,0x6b,0x98, 0xbb,0x62,0x96,0x59,
+ 0x2d,0xe9,0x6f,0x43, 0x1d,0xdb,0x6e,0x4e, 0xc7,0x28,0xe9,0x4f, 0xd9,0xe9,0x31,0x68,
+ 0xe4,0x11,0x3b,0x3c, 0x6e,0x5a,0x1c,0x37, 0x06,0xb6,0x31,0x2a, 0x58,0x29,0xc5,0xd5,
+ 0x4b,0xc5,0x46,0x5f, 0x7e,0xc1,0x3a,0xa1, 0xe2,0x26,0xbe,0x30, 0xc0,0x46,0xd8,0x6c,
+ 0x42,0xa1,0xe3,0x2a, 0xd4,0xe8,0x36,0x54, 0x67,0xfd,0x67,0x1f, 0x8f,0xce,0x5b,0x8e,
+ 0x83,0x9f,0xa7,0x7e, 0xcb,0x3a,0x1c,0xde, 0x0a,0x07,0xf4,0xba, 0x7b,0xc6,0xe8,0x35,
+ 0xfa,0x0e,0xbd,0xe2, 0xcd,0xeb,0x5e,0x1e, 0x08,0x21,0x10,0x0c, 0xc4,0x50,0x42,0x92,
+ 0xaa,0x15,0x49,0x0d, 0x07,0x2b,0xca,0xf4, 0x34,0x97,0xed,0x50, 0xfb,0xfc,0xfe,0x2f,
+ 0x10,0xb3,0xe0,0xfe, 0x2f,0x84,0x48,0x14, 0x84,0x26,0x09,0x34, 0x33,0xe9,0x41,0xfa,
+ 0x25,0x91,0x10,0x80, 0x24,0xa8,0x24,0x82, 0x0f,0xc1,0xf0,0x5e, 0x66,0x66,0x5e,0x62,
+ 0x21,0xd9,0x99,0x99, 0x99,0x9a,0x23,0x4e, 0x64,0x8c,0x6d,0x8e, 0x9a,0x65,0x27,0xc5,
+ 0x72,0xf0,0x4b,0xd3, 0x33,0xff,0xb8,0x03, 0x78,0x0b,0xa5,0x5a, 0xb5,0xaf,0xd1,0xf5,
+ 0x5b,0x2d,0x93,0x6f, 0x4a,0xfe,0x33,0x94, 0x49,0x69,0x35,0x94, 0x57,0x80,0xaf,0x47,
+ 0x3f,0x63,0xaf,0x53, 0x59,0xd5,0x98,0x6a, 0xe9,0x96,0xe0,0xc9, 0xe2,0xf7,0x67,0x12,
+ 0x4d,0x00,0x2a,0xc1, 0xde,0x63,0xce,0x46, 0xb3,0x5e,0xe3,0xcd, 0x58,0x28,0x72,0x38,
+ 0xe7,0xbb,0xdb,0x77, 0xba,0x43,0x13,0x38, 0x56,0xd3,0x6d,0xa2, 0xba,0xe0,0xf1,0x3f,
+ 0x8d,0x1a,0x21,0x6d, 0x1a,0xf2,0x1c,0x91, 0xfe,0x31,0x43,0x3c, 0x19,0xad,0x65,0x62,
+ 0xb8,0xe2,0x93,0xdd, 0x1f,0x35,0xcc,0x1c, 0xf0,0x60,0x60,0x60, 0xfd,0xbd,0xb2,0x51,
+ 0x0f,0xbf,0x67,0x1f, 0xf3,0x53,0x8b,0xb0, 0x9f,0x8c,0xb6,0x4a, 0xf9,0x81,0xaf,0x15,
+ 0x59,0x94,0x83,0xf2, 0xb5,0x70,0xfe,0x4b, 0x2d,0x3f,0xba,0x23, 0xe3,0x90,0xa9,0xc5,
+ 0x85,0xc3,0x84,0x99, 0x44,0x91,0x14,0x1b, 0xf5,0x7b,0x98,0x45, 0xc9,0xee,0x76,0xea,
+ 0xdb,0xcf,0xdd,0xe4, 0x38,0xac,0x14,0xa9, 0x0f,0x27,0xf8,0x6b, 0xb5,0xca,0x80,0x1d,
+ 0x91,0x03,0x0d,0x13, 0x88,0xd6,0x4e,0x3c, 0xff,0x28,0x58,0xc3, 0x96,0x6e,0xef,0xb6,
+ 0xfa,0x43,0x92,0x1d, 0xb7,0xf2,0xde,0xe6, 0xe7,0x6d,0x37,0x92, 0xa5,0xdd,0xbf,0xbc,
+ 0x22,0xf4,0x2f,0x71, 0xa0,0x91,0x9b,0x75, 0x4b,0x8b,0x09,0xc4, 0x85,0x57,0xe3,0x29,
+ 0x8b,0xea,0x88,0xa8, 0x1d,0xc9,0x35,0x6c, 0xe7,0x19,0x23,0xc9, 0x24,0xdb,0x67,0x4b,
+ 0x5a,0xdb,0x87,0xb5, 0xc0,0xa4,0xca,0xc5, 0x9f,0x4d,0x08,0x01, 0xce,0x1b,0x54,0x75,
+ 0x64,0x2f,0xfe,0xeb, 0x6a,0x3a,0xde,0x17, 0xbc,0xdc,0x6e,0xe8, 0xe4,0xac,0x6a,0xb2,
+ 0xb6,0x59,0x52,0x26, 0xde,0x33,0x03,0x56, 0x7e,0x9c,0x7c,0x60, 0xfc,0xa3,0x17,0x7b,
+ 0x83,0x56,0xf4,0xad, 0x1f,0x7a,0x23,0xe4, 0xc5,0xc1,0xa5,0x30, 0x02,0x6a,0x90,0x14,
+ 0x4c,0x0e,0x6c,0x7d, 0x85,0x24,0xc5,0xe4, 0x0e,0x76,0x06,0xc3, 0xde,0xfc,0x67,0x19,
+ 0x21,0xd0,0x13,0x2e, 0x52,0xe6,0x02,0x50, 0x71,0x47,0xea,0x68, 0x77,0x3a,0xec,0x54,
+ 0x3e,0xdb,0xbf,0xf4, 0x32,0xa6,0x99,0x8a, 0x4a,0x17,0xdb,0xe2, 0x64,0x31,0xd3,0x39,
+ 0x72,0x3d,0xf9,0x60, 0x4a,0xd0,0x5f,0x61, 0xbe,0xb0,0xb2,0x5b, 0xa1,0x3e,0x3e,0xb8,
+ 0x48,0x0e,0x1a,0x32, 0x09,0xbd,0xe6,0x98, 0x98,0xd8,0x99,0x34, 0x30,0x4b,0x95,0x4b,
+ 0xd3,0x76,0x5c,0xe0, 0x39,0x77,0x58,0x21, 0x64,0x0f,0xec,0xf3, 0x75,0xe2,0xdc,0x25,
+ 0x44,0x5a,0xb4,0x70, 0x16,0xc0,0x49,0xfe, 0x10,0xe6,0xfe,0x94, 0xfb,0x28,0x6f,0xb8,
+ 0xe5,0x68,0xba,0x05, 0x9f,0x2e,0x3f,0x2e, 0x1a,0x80,0xac,0x0e, 0x9e,0x20,0x9d,0x59,
+ 0x49,0x77,0x31,0x47, 0x10,0x25,0xc5,0x38, 0x37,0x78,0x46,0xac, 0x24,0x8d,0x2c,0x08,
+ 0x89,0x21,0xc4,0xbc, 0x2b,0x6d,0xef,0x0c, 0x42,0x06,0x1f,0xe2, 0x68,0x98,0xfb,0xcc,
+ 0x88,0x71,0xaf,0xfe, 0x8c,0x94,0xfb,0xe2, 0x9b,0xc6,0x73,0x9b, 0x63,0xd3,0x56,0x5a,
+ 0xca,0xc0,0x10,0x4a, 0xe5,0xd3,0x62,0x7e, 0x78,0x3f,0x5d,0x70, 0xb9,0x84,0xaa,0xf4,
+ 0x32,0x77,0xb5,0x18, 0x28,0xea,0x8f,0x77, 0x54,0x4f,0x99,0x23, 0xa4,0xb3,0x24,0xa0,
+ 0x1c,0x98,0x76,0xbc, 0xff,0xae,0x28,0x0d, 0x45,0x09,0xa5,0x5e, 0x89,0x9f,0xa5,0x8d,
+ 0xce,0xde,0x4b,0x5d, 0x61,0x67,0xe9,0x28, 0x45,0xdc,0xbc,0x71, 0x8c,0xbc,0x7d,0xbd,
+ 0x75,0x92,0x8b,0x90, 0xe1,0x23,0x30,0x79, 0x93,0xce,0xbb,0xde, 0xe1,0xb9,0x74,0xcb,
+ 0x0d,0xf1,0xf2,0x65, 0xdb,0xe9,0x94,0x28, 0xd8,0x4c,0x45,0xca, 0x81,0xf8,0x3f,0x23,
+ 0x5f,0xab,0xe1,0x74, 0xb3,0x0b,0x35,0x32, 0x20,0x21,0xcc,0x01, 0x78,0xd3,0xf5,0x75,
+ 0x1b,0x6c,0xe2,0xc2, 0xed,0xe5,0x5c,0x54, 0xdf,0x37,0xa5,0xf1, 0x89,0x9b,0x8a,0x2b,
+ 0xbb,0x73,0x4e,0x1d, 0xb8,0x28,0x53,0xc4, 0x83,0xcf,0x96,0xa9, 0x00,0x92,0x3f,0xa3,
+ 0x38,0x7e,0x8e,0x92, 0x95,0xea,0x9d,0xcc, 0x1d,0x97,0xd0,0x84, 0x92,0xf1,0x6c,0xeb,
+ 0x25,0x6f,0x69,0x68, 0xf8,0xb3,0x31,0x35, 0xd0,0x95,0x6f,0xc7, 0x9d,0x25,0x9a,0xe6,
+ 0x02,0x03,0x87,0xdd, 0x64,0xc8,0xff,0x74, 0xee,0x3f,0x03,0xbf, 0xc3,0xd5,0x78,0xf7,
+ 0xbe,0x8f,0x99,0xf4, 0xba,0x6e,0x86,0xca, 0xf3,0x9a,0xfe,0x81, 0xde,0x3d,0xbb,0xf9,
+ 0xed,0x66,0x58,0x4d, 0xa3,0x11,0xaf,0x97, 0xfd,0x68,0x3a,0xe6, 0x2f,0xb8,0x31,0x36,
+ 0x90,0x36,0x29,0x26, 0x74,0x0e,0x06,0x13, 0x1a,0x4d,0x90,0xc9, 0xc1,0x7c,0xe2,0x40,
+ 0x29,0xc4,0x14,0x8a, 0xb1,0x2b,0x32,0xfe, 0x73,0x83,0x4b,0x9b, 0x83,0x9e,0x7e,0x4b,
+ 0xd0,0xd1,0x72,0xe6, 0xc2,0x83,0x45,0xb5, 0xef,0x77,0xd4,0xd0, 0x78,0x5a,0x68,0x37,
+ 0xcd,0x2b,0xc6,0x50, 0xca,0xfd,0xd7,0xc5, 0x97,0x58,0xf9,0x4c, 0x6e,0x56,0xac,0x1d,
+ 0xd7,0x87,0x52,0xa4, 0x1a,0xb5,0x8d,0x08, 0xc5,0x61,0x37,0xee, 0x58,0x18,0xf9,0xb8,
+ 0x5e,0x55,0xec,0x52, 0xc1,0x78,0x76,0x21, 0x19,0xc1,0x76,0x9a, 0x37,0x28,0x6b,0x40,
+ 0x25,0x75,0xbe,0xc9, 0x67,0x23,0x3c,0x82, 0x36,0x0d,0xfe,0x23, 0x7c,0x49,0xde,0x1e,
+ 0xb7,0x11,0xd0,0x78, 0x5a,0x9c,0x58,0xb7, 0xec,0x26,0xf8,0x8c, 0x63,0x41,0x41,0xfd,
+ 0x0f,0x42,0x0c,0x9e, 0x70,0x98,0xbd,0x4f, 0xb8,0xab,0xa9,0x5d, 0x77,0xcb,0x3e,0xaf,
+ 0xd6,0xda,0xe2,0x5e, 0x6f,0x2f,0xa4,0x01, 0x88,0xdc,0xf7,0x96, 0xeb,0x63,0xda,0x39,
+ 0x45,0xf3,0x8a,0xdb, 0x8e,0xb7,0xdf,0xce, 0xf8,0x6f,0xa4,0x88, 0x18,0x46,0x73,0xb6,
+ 0x29,0x33,0x1a,0xd9, 0x47,0xa9,0x14,0xee, 0x10,0x5f,0xfc,0x62, 0x24,0xc4,0xd9,0x74,
+ 0xe4,0x45,0xcd,0x0e, 0x09,0x69,0x1c,0x7a, 0x04,0x2b,0xce,0x5e, 0x92,0xbf,0x4b,0xcb,
+ 0xb0,0x60,0x64,0x4e, 0x20,0xf8,0x3d,0x66, 0xe4,0x6c,0x25,0x63, 0x62,0xa1,0x51,0x8e,
+ 0xe5,0xe6,0xa0,0xa9, 0x5d,0x8f,0x01,0xbf, 0x72,0x09,0x83,0x11, 0x18,0xc6,0xd1,0x23,
+ 0x91,0x80,0xb1,0x7d, 0xdc,0x04,0x1c,0xa5, 0x67,0x21,0x24,0xbd, 0x89,0x42,0x0a,0x10,
+ 0x09,0x3c,0xf6,0x78, 0x89,0x35,0x4b,0x6c, 0xbb,0x1d,0x82,0x50, 0x77,0xcf,0x71,0x10,
+ 0x79,0xcc,0x9b,0x2c, 0xbc,0xbc,0xda,0x4d, 0x03,0x58,0x08,0x6d, 0x21,0xb4,0x6a,0xda,
+ 0x44,0x0c,0x6d,0x0c, 0x60,0xda,0x6d,0x8d, 0xb6,0xd8,0xc6,0xdb, 0x6c,0x1b,0x6c,0x43,
+ 0x1b,0x18,0x24,0x49, 0xa8,0x69,0x43,0x16, 0x1e,0xd6,0xd9,0x24, 0x82,0x6c,0xa1,0x9c,
+ 0x84,0x0a,0x04,0x36, 0x8a,0xc1,0xfd,0xf9, 0x98,0x0b,0x4d,0x31, 0x97,0xef,0xd3,0xfe,
+ 0x88,0xfc,0xba,0x63, 0xb4,0xff,0x4f,0x2b, 0x31,0x4a,0xd6,0x74, 0x19,0x06,0xff,0xbe,
+ 0x34,0x8b,0x38,0x73, 0xda,0xd3,0x78,0x99, 0x5c,0x85,0xf2,0x30, 0x50,0xe3,0x03,0xde,
+ 0x81,0x38,0xac,0x87, 0xb0,0xc6,0x67,0xcc, 0x55,0x68,0x1c,0xfc, 0xd6,0x65,0x52,0x0d,
+ 0xcd,0xe8,0x39,0x43, 0x12,0xe7,0x5a,0xd9, 0x1f,0xa6,0x40,0x14, 0x29,0x42,0x83,0x28,
+ 0x8f,0x8b,0xea,0x21, 0x83,0xd4,0xb3,0x99, 0xf8,0xad,0xf8,0x3f, 0xa5,0x8f,0x5e,0xc7,
+ 0x1a,0x45,0x7f,0x65, 0x56,0xd5,0x82,0x31, 0xdb,0x15,0xbb,0xcf, 0x3d,0x8f,0xcb,0x75,
+ 0x9f,0x5f,0x3b,0xa3, 0x1d,0x60,0xce,0x5d, 0x40,0x4f,0x4b,0x07, 0x8a,0xd1,0x37,0x75,
+ 0xf4,0x20,0x89,0x40, 0xb7,0xc3,0xc0,0xd6, 0xdf,0x48,0xa1,0x9c, 0x6e,0x6e,0x3c,0xe1,
+ 0x2f,0x2c,0x76,0x90, 0x25,0xd5,0x8b,0x64, 0x00,0x88,0x9a,0x15, 0x83,0x10,0x4a,0xe1,
+ 0x45,0x09,0xdd,0x97, 0x44,0x22,0x4d,0x33, 0xa0,0xf1,0x97,0xd6, 0xfb,0xc1,0xd1,0x23,
+ 0x56,0x2c,0xd0,0xbc, 0xe9,0xc5,0xe9,0x6e, 0xfb,0xb3,0x50,0x58, 0x1c,0x9a,0xd7,0xf6,
+ 0x48,0x17,0xce,0x0b, 0xb5,0xb0,0xc2,0x23, 0xc1,0x55,0x11,0xbe, 0x56,0x93,0x24,0xe2,
+ 0x2e,0x13,0x1a,0x6f, 0x07,0xbc,0x17,0xcd, 0xf4,0x5f,0x4f,0x7b, 0xb7,0xea,0x2f,0x2d,
+ 0x42,0xcd,0x09,0xa5, 0x61,0xa3,0x94,0x6b, 0x27,0x72,0x27,0x81, 0x45,0x3e,0x13,0xc3,
+ 0x8f,0x7c,0x5a,0xbf, 0x8a,0xcc,0x0a,0x02, 0x40,0x46,0xc7,0xc6, 0x40,0xee,0x99,0x06,
+ 0xe7,0xa3,0x31,0x14, 0x51,0x08,0x18,0xa2, 0x64,0x15,0x30,0x84, 0x68,0x8c,0xe2,0x15,
+ 0xbd,0xad,0x8a,0xbc, 0x94,0xe8,0x85,0xbe, 0x77,0xe8,0x90,0x26, 0xde,0xe2,0x4d,0x49,
+ 0x8d,0x50,0x58,0x15, 0x2d,0xa5,0x24,0xe0, 0xba,0xb2,0x6c,0x55, 0x85,0x51,0x4d,0xa9,
+ 0xa9,0xaa,0x80,0x8c, 0x01,0xc0,0xeb,0xe0, 0x70,0x01,0x50,0x91, 0x2b,0x86,0xcb,0x35,
+ 0x2a,0x94,0x69,0x9a, 0xd4,0x34,0xad,0x30, 0x30,0x9d,0xae,0x4f, 0xf0,0x41,0x22,0xe9,
+ 0x14,0xef,0x42,0x9d, 0xc5,0x59,0x77,0x39, 0x2a,0xfa,0xb6,0xac, 0xdf,0x76,0x46,0x1b,
+ 0x94,0xd4,0x1d,0x63, 0x8d,0x47,0x48,0x0e, 0xba,0x0a,0x16,0xad, 0xfb,0x51,0xc0,0x96,
+ 0x4c,0x82,0xc0,0x8c, 0x65,0x1d,0xb4,0xaa, 0x04,0x33,0x2c,0x00, 0x62,0x82,0x5b,0x6c,
+ 0xc1,0x03,0x55,0x2b, 0x8d,0xbd,0x51,0x50, 0x71,0xe1,0x1f,0x6e, 0xf5,0x08,0x9b,0x18,
+ 0x01,0x99,0xce,0x50, 0x83,0x01,0x08,0x05, 0x0e,0x1a,0x19,0x21, 0x59,0x40,0x42,0x40,
+ 0x00,0x52,0xf6,0x13, 0x91,0x6e,0x75,0xf7, 0xae,0x0e,0x0f,0xb7, 0x76,0x4b,0x11,0x25,
+ 0x92,0x1f,0x56,0x30, 0x10,0xca,0x62,0x5f, 0x0d,0x01,0x46,0x55, 0x03,0xf5,0x6c,0x7b,
+ 0x64,0xad,0x24,0x31, 0x01,0x03,0xb4,0x2d, 0xd5,0x70,0x88,0x3d, 0xb4,0xac,0xa8,0xb5,
+ 0x91,0x45,0x56,0x04, 0x48,0x45,0xa6,0xdd, 0xd8,0xd5,0x03,0x09, 0x75,0x32,0x57,0xb6,
+ 0x60,0x75,0x45,0x25, 0x2d,0x20,0x25,0x26, 0x36,0xda,0x2b,0xa9, 0x5d,0xb0,0x9c,0xc4,
+ 0x2b,0x24,0xa1,0x26, 0x01,0x63,0x65,0x02, 0xf5,0x1a,0x02,0xf1, 0x60,0x44,0x33,0x43,
+ 0x66,0x52,0x48,0x29, 0x62,0x0f,0xf5,0x68, 0xeb,0xbd,0xf4,0x09, 0x61,0x5a,0x54,0xb4,
+ 0x95,0xbf,0x71,0x6a, 0x95,0x4d,0x10,0x34, 0x0d,0x24,0x53,0x54, 0x02,0x0f,0xe7,0xdf,
+ 0xc2,0x10,0x5e,0xe5, 0xc7,0x86,0xc5,0x71, 0x85,0x4c,0x04,0x9b, 0x53,0xf6,0xb0,0x1e,
+ 0x85,0x8b,0xca,0xb3, 0xbf,0x66,0x29,0xf7, 0xaf,0xa3,0x74,0x79, 0x17,0xc4,0x92,0x29,
+ 0x1e,0x4e,0x0e,0x1c, 0x8a,0x5a,0x41,0x03, 0x63,0x5d,0x26,0xcf, 0xa4,0xf0,0xe6,0x63,
+ 0xfb,0xfe,0xc7,0xbe, 0xad,0x47,0x4d,0xce, 0xf9,0x7f,0xa3,0x41, 0x46,0x3b,0x31,0xff,
+ 0x24,0x26,0x65,0x41, 0x69,0x77,0xa0,0x27, 0xea,0x09,0xdc,0x07, 0xac,0x96,0x5a,0x3a,
+ 0xa7,0x0d,0xc9,0x5a, 0x3b,0xdb,0x7d,0x7a, 0x60,0x05,0x96,0x13, 0x06,0xf0,0x56,0x7c,
+ 0x09,0x55,0xe8,0x45, 0x43,0xd7,0xa0,0x24, 0x5d,0xeb,0xb0,0xa4, 0x2b,0xf6,0xb3,0x36,
+ 0x3d,0x16,0x1e,0x05, 0x9d,0xaf,0x06,0x66, 0x53,0x3e,0x17,0x97, 0xb7,0xb3,0xfa,0x72,
+ 0x60,0x2e,0x28,0x83, 0x15,0x80,0x17,0xb7, 0x37,0xcc,0x38,0xd4, 0x93,0x8b,0xd1,0xff,
+ 0xf1,0x77,0x24,0x53, 0x85,0x09,0x0e,0xe0, 0x76,0xe0,0x70,
+ // 0x5cdb = 23771 data bytes (33%)
+};
+
+static BZ2Manager_t lecode_jap_bin_mgr
+ = { lecode_jap_bin_bz2, sizeof(lecode_jap_bin_bz2), 0, 0 };
+
+//-----------------------------------------------------------------------------------
+
+static const u8 lecode_kor_bin_bz2[] = // pool/ref/lecode/r32/lecode-KOR.bin
+{
+ // decompressed size: 0x117a0 = 71584 bytes
+ 0x00,0x01,0x17,0xa0,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x4d,0x6c, 0x56,0x62,0x00,0x29,
+ 0xad,0x7f,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xe0, 0x4e,0xbb,0xee,0x4f, 0xaf,0x78,0xeb,0xef, 0x7d,0xc6,0xd8,0x94,
+ 0xab,0xe8,0x6b,0xbe, 0xfb,0xef,0x3e,0xe3, 0x36,0xbe,0x37,0x6b, 0xbb,0x37,0x3d,0x77,
+ 0xb7,0xd7,0xd3,0x9f, 0x3b,0xe3,0xc3,0xcd, 0x8c,0x26,0xc3,0x13, 0x66,0x47,0x7d,0xf4,
+ 0xf7,0x81,0x9f,0x61, 0xc9,0xd3,0xd1,0xd7, 0x76,0x4e,0xfb,0xb9, 0x07,0x44,0x86,0xaf,
+ 0x66,0x88,0xf9,0xed, 0xbb,0xb9,0xdf,0x6f, 0x68,0xee,0xc8,0x7b, 0xef,0x75,0xf3,0xe6,
+ 0x6d,0xb2,0x82,0xea, 0x93,0xee,0xd7,0xaf, 0x70,0x05,0x6b,0xdb, 0xeb,0xcd,0xf7,0x7b,
+ 0xaf,0x17,0xd5,0x1d, 0x5b,0xea,0xbe,0xb5, 0xd8,0x34,0x9c,0x7d, 0x1f,0x6d,0x3d,0xef,
+ 0xbb,0xe5,0xf7,0xb7, 0x6f,0xbd,0xab,0xdb, 0xee,0x7d,0xbb,0xe7, 0xd7,0x5e,0xf9,0x80,
+ 0x51,0xeb,0x4a,0xfb, 0x1a,0xed,0x33,0x37, 0x3b,0x9f,0x1f,0x1f, 0x27,0x9b,0xcc,0x61,
+ 0xf2,0xaf,0x66,0x3e, 0xf2,0x4f,0x88,0x87, 0x47,0xd4,0x0b,0xe6, 0x7b,0xd7,0x3e,0x77,
+ 0xdd,0xa3,0x7d,0x5f, 0x7a,0xef,0xbb,0x3e, 0xf6,0x5d,0xb7,0x3a, 0x94,0xee,0x77,0xb3,
+ 0xbe,0xfb,0xc3,0x94, 0x17,0xb5,0x69,0xf7, 0x55,0x03,0x9d,0xb6, 0xfa,0xfb,0xdd,0xf6,
+ 0xbd,0x83,0xd3,0x5e, 0xfb,0x9a,0xd7,0xd5, 0xf5,0xf2,0xfb,0x0f, 0x1a,0xce,0xb3,0xeb,
+ 0x6d,0x13,0xd4,0xa8, 0x3b,0xec,0x35,0x34, 0x41,0x34,0x00,0x04, 0x64,0x00,0x69,0x30,
+ 0x98,0x4c,0x13,0x00, 0x04,0xd3,0x4d,0x1a, 0x34,0x32,0x64,0xd3, 0x43,0x4c,0x44,0xf2,
+ 0x62,0x34,0x68,0xd3, 0x43,0x53,0x34,0x98, 0x13,0x27,0xa3,0x42, 0x7a,0x00,0x13,0x4d,
+ 0x30,0x4c,0x4c,0x53, 0x68,0xd5,0x4f,0xf4, 0xa7,0xb4,0xd3,0x26, 0x4d,0x01,0x3d,0x32,
+ 0x4c,0x9e,0x9a,0x06, 0x89,0xea,0x69,0x8a, 0x7a,0x69,0xa6,0xa7, 0xa8,0xf2,0x4d,0x4f,
+ 0xd4,0x1a,0x9a,0x40, 0x09,0xa6,0x80,0x00, 0x00,0x04,0xc4,0xc0, 0xa9,0xf9,0x34,0x06,
+ 0x82,0x64,0xc2,0x65, 0x3d,0x00,0x08,0xc4, 0xc4,0xc9,0xa9,0xe9, 0xa4,0xf4,0x32,0x27,
+ 0x90,0xd4,0xca,0x79, 0x4f,0x53,0xda,0x93, 0xcd,0x13,0x1a,0x53, 0xc4,0x63,0x53,0x53,
+ 0xd1,0xb4,0x4c,0xa7, 0xa4,0xf4,0x8c,0xd4, 0xfd,0x14,0xf2,0x46, 0x8f,0x4c,0x49,0xfa,
+ 0x53,0x6a,0x69,0xe5, 0x03,0x4c,0x4d,0xea, 0x86,0xd4,0xda,0x8d, 0x0d,0x34,0x0d,0xa9,
+ 0xa0,0xd4,0xd0,0x40, 0xd0,0x98,0x8c,0x40, 0x26,0x8d,0x06,0x80, 0x13,0x26,0x98,0x4d,
+ 0x1a,0x18,0x40,0xca, 0x7a,0x00,0x00,0x53, 0xd3,0x68,0xa9,0xe9, 0xe4,0x62,0x0a,0x7a,
+ 0x34,0x60,0x9b,0x41, 0x34,0x65,0x1f,0xa5, 0x1e,0x9b,0x4a,0x32, 0x79,0xa0,0xd5,0x34,
+ 0xf4,0x6a,0x36,0x48, 0xf4,0xf2,0xa7,0xa4, 0xc9,0xe5,0x19,0xa9, 0xa6,0x9b,0x48,0xf2,
+ 0x09,0xe9,0x34,0x0c, 0x9a,0x0f,0x51,0xe8, 0xd2,0x1e,0x89,0xea, 0x7a,0x80,0x69,0xa1,
+ 0x34,0x44,0x01,0x1a, 0x98,0x4c,0x99,0x32, 0x1a,0x06,0x45,0x3c, 0xc8,0x86,0xd2,0xa7,
+ 0xb1,0x31,0x34,0xc4, 0x4d,0x4f,0x05,0x3d, 0xa3,0x21,0x34,0x66, 0xa8,0xd3,0xc0,0xa3,
+ 0xca,0x1e,0xd2,0x9e, 0x4d,0x4f,0x53,0xca, 0x1b,0x51,0xfa,0x51, 0x8d,0x35,0x1e,0x93,
+ 0x69,0x0c,0x9e,0xa0, 0xd1,0xb5,0x1a,0x79, 0x35,0x1e,0xa1,0xe9, 0x3d,0x43,0x11,0xea,
+ 0x3f,0x4a,0x34,0x33, 0x51,0xea,0x7a,0x8f, 0x26,0xa0,0xd1,0xea, 0x68,0x03,0xd4,0x06,
+ 0x20,0x34,0xf4,0xa4, 0x24,0xf5,0x19,0x34, 0x68,0xa9,0xf8,0x9e, 0x89,0xa6,0x8c,0x53,
+ 0x6a,0x6a,0x7b,0x49, 0x9a,0x21,0xea,0x4f, 0xd1,0x4f,0x14,0xfd, 0x4c,0xd4,0x68,0xca,
+ 0x7a,0x4c,0x46,0x99, 0x3d,0x4d,0x94,0xda, 0x47,0x91,0x3d,0x09, 0xe9,0x3d,0x4d,0x0f,
+ 0x53,0x41,0x91,0x93, 0x4c,0x27,0xa9,0x93, 0x4d,0x1a,0x69,0xea, 0x64,0x69,0x93,0xd2,
+ 0x34,0x18,0x8d,0x18, 0x98,0x86,0x81,0xea, 0x0d,0x0d,0x06,0x83, 0x46,0x4d,0x00,0x0f,
+ 0x50,0x06,0x9a,0x68, 0x04,0x89,0x10,0x80, 0x80,0x00,0x26,0x46, 0x40,0x68,0x1a,0x08,
+ 0xc4,0x69,0x90,0xc2, 0x35,0x3c,0x43,0x21, 0xa0,0xd1,0x88,0x98, 0x1a,0x4f,0x48,0xc9,
+ 0xb4,0xd2,0x60,0x9a, 0x9b,0x10,0xc9,0xa6, 0x43,0x42,0x66,0x99, 0x4f,0x46,0x14,0xf4,
+ 0x98,0x4d,0xa9,0xe5, 0x3c,0x93,0x0d,0x32, 0x29,0xe9,0xa9,0xe9, 0x8d,0x53,0xf4,0x35,
+ 0x18,0x87,0xa2,0x32, 0x8c,0x4c,0x34,0xf4, 0xa1,0xe9,0xa6,0x46, 0xa0,0x57,0x8d,0xe5,
+ 0x76,0x1d,0x86,0x90, 0xe3,0xf6,0x68,0xec, 0x6c,0x38,0x8a,0x07, 0x59,0x87,0xff,0x1d,
+ 0xde,0xe2,0x61,0x6f, 0x52,0xa4,0x8b,0x7b, 0x33,0xa4,0x60,0xba, 0x27,0xa0,0x5c,0x6a,
+ 0x35,0x74,0x03,0x4f, 0xfb,0xd8,0x68,0x4c, 0x55,0xa8,0x85,0x0c, 0x04,0x6d,0x58,0x01,
+ 0x72,0xd2,0x4b,0x4d, 0x46,0xa2,0xaa,0x84, 0x82,0xb3,0x84,0x10, 0xa0,0xe6,0x11,0x44,
+ 0xa3,0x98,0x03,0xb1, 0xb9,0x82,0x88,0x34, 0x82,0x92,0x4b,0x23, 0x90,0x85,0x22,0xa1,
+ 0x44,0xe6,0x9e,0x54, 0x29,0x51,0x77,0xa1, 0xad,0xbe,0xed,0x75, 0x6d,0x58,0xb1,0x12,
+ 0x8b,0x75,0x6c,0xdb, 0xb1,0x41,0x28,0xd3, 0x4f,0x3a,0xcc,0xab, 0x56,0xe2,0xf4,0xd4,
+ 0x2b,0x01,0x0e,0xed, 0x4b,0x17,0x71,0x53, 0xe2,0x6f,0x2e,0x62, 0xe2,0xe3,0x63,0xd2,
+ 0x9d,0x9e,0x07,0xb5, 0x0a,0xff,0xd0,0x6e, 0x0e,0x80,0x17,0xcb, 0xac,0x9c,0x31,0x95,
+ 0x4a,0xbf,0x16,0xc5, 0xc9,0xd8,0xf5,0xb5, 0xab,0xd7,0x82,0xbc, 0x04,0x21,0x09,0x69,
+ 0x36,0xd9,0xf9,0x24, 0x23,0x3f,0x95,0x00, 0x52,0xdf,0x34,0xe0, 0x31,0xd9,0x60,0x65,
+ 0x4f,0x9a,0xa1,0x42, 0xd9,0xb1,0x18,0xec, 0xce,0x32,0xbd,0x04, 0x43,0x81,0xaa,0xcc,
+ 0x93,0x24,0xd6,0x2f, 0x29,0x0c,0x42,0x48, 0x52,0x6d,0x11,0xdc, 0x9a,0xde,0x5f,0xb6,
+ 0xc9,0xfe,0x99,0x5e, 0x05,0xed,0xa0,0x03, 0x90,0x03,0x90,0x06, 0xfb,0x73,0xa1,0xd7,
+ 0x6b,0x3f,0xd7,0xfb, 0x72,0x7c,0x4f,0x32, 0xfb,0xae,0x65,0xb4, 0x31,0x8d,0xa6,0x7e,
+ 0xd5,0x1e,0x5b,0x32, 0x5a,0x3e,0x13,0x0c, 0xd6,0x8c,0xf5,0x44, 0x07,0xfb,0xfe,0xbf,
+ 0xd9,0x87,0xfa,0xff, 0x63,0x75,0x57,0x02, 0x06,0xdb,0x82,0x07, 0x04,0x2e,0xf5,0x7c,
+ 0x2e,0x90,0x4c,0xd0, 0xde,0x69,0x65,0x26, 0xa5,0xbf,0xcb,0x9c, 0x4d,0x36,0x6a,0x41,
+ 0x12,0xd4,0x6d,0x99, 0xb7,0x9d,0x31,0xe6, 0x92,0xe2,0x53,0xe1, 0xc4,0xda,0x85,0x8d,
+ 0x46,0x5f,0x9c,0x13, 0xff,0x04,0x63,0x03, 0x01,0x40,0x30,0x0f, 0x9b,0xfe,0xde,0x4e,
+ 0x1f,0x55,0xf7,0x38, 0x2c,0x1a,0x73,0x72, 0x19,0x6a,0x72,0x9a, 0xb8,0x25,0xa9,0x6e,
+ 0x17,0xcf,0xe7,0xa2, 0xe2,0x19,0x99,0x27, 0x13,0x28,0x1c,0xcf, 0x90,0x06,0x3d,0x1e,
+ 0x02,0xc2,0x9d,0x38, 0xe0,0x15,0xb1,0x21, 0x98,0x05,0x55,0x38, 0xb2,0xd3,0xab,0x2c,
+ 0xc8,0x87,0x7e,0xc2, 0x07,0x28,0xe2,0x8b, 0xca,0x7f,0x7b,0xb2, 0x02,0xa9,0x19,0xa4,
+ 0xaa,0x9e,0xfa,0x6f, 0x44,0x8d,0xe4,0x11, 0xc1,0xce,0x61,0x1f, 0xa0,0x0e,0x98,0x39,
+ 0x05,0x9b,0x2b,0x64, 0xdd,0x93,0x5e,0x82, 0x57,0x25,0xad,0x08, 0x67,0x8b,0xdb,0x17,
+ 0x9c,0xc4,0xe0,0xdb, 0x49,0x90,0xaf,0x0d, 0x37,0x71,0x55,0x57, 0x8c,0xb6,0xd2,0xbd,
+ 0x72,0xec,0xfb,0x29, 0xe6,0x56,0x5d,0x0d, 0x86,0xfa,0x4c,0x13, 0x4d,0x30,0x82,0x8c,
+ 0xbf,0x75,0x0c,0x09, 0xfa,0xa8,0x04,0xc0, 0xcd,0xb3,0x2e,0x02, 0x68,0x07,0xbc,0xdc,
+ 0xb9,0x41,0x10,0xf1, 0x8b,0x86,0x42,0x99, 0x54,0xb7,0xf3,0xde, 0x99,0x5c,0x0a,0xc0,
+ 0x10,0x12,0xfd,0x2a, 0x89,0x55,0x00,0x12, 0x11,0xf2,0xb2,0xe1, 0xf2,0xf0,0x4e,0x52,
+ 0xd4,0xbe,0xc9,0xa5, 0xb3,0xf3,0x94,0x69, 0x53,0x95,0x73,0xba, 0x32,0xc7,0xb3,0x83,
+ 0x0d,0xf1,0xb1,0x89, 0x39,0x54,0xc3,0xc4, 0x6b,0x05,0x3c,0xc6, 0x8d,0x03,0xa3,0x17,
+ 0x81,0x16,0x5c,0x63, 0xf1,0x68,0xb8,0xa8, 0x2a,0xc3,0x31,0x3c, 0x3b,0x10,0x24,0xbf,
+ 0x77,0xa8,0x90,0x5c, 0x8d,0xe4,0xd6,0x58, 0x21,0xd6,0x97,0x00, 0xb9,0xc7,0x15,0xe4,
+ 0x09,0x69,0x7f,0xc9, 0x95,0x9b,0x1b,0xbc, 0x73,0xf5,0xd8,0x33, 0xd2,0x34,0x6e,0xf6,
+ 0x8e,0x6f,0x42,0x95, 0x86,0x5c,0xba,0xa2, 0x5e,0x09,0xde,0x15, 0x5f,0x51,0xbc,0x00,
+ 0x39,0xcd,0xf2,0xe1, 0xc0,0xbb,0xcd,0x7e, 0x69,0x77,0xa5,0x2e, 0xc1,0x39,0xf4,0xaa,
+ 0x0c,0x3e,0x5c,0x5b, 0xf5,0x51,0xdf,0x8c, 0x17,0x4e,0x11,0xeb, 0xd2,0xcd,0x53,0x35,
+ 0x44,0xf8,0xaa,0xe5, 0xc2,0x03,0x7d,0x31, 0x6d,0xe5,0x48,0xed, 0x8a,0xf1,0x6a,0x98,
+ 0xec,0xcf,0x14,0x38, 0xad,0xe3,0x50,0x16, 0x82,0x44,0xc8,0x8f, 0xe0,0xf9,0xe9,0xa2,
+ 0xea,0x84,0x12,0x1c, 0xe6,0x19,0x2f,0x89, 0xae,0xa9,0xd2,0x61, 0x06,0x02,0x51,0xb1,
+ 0x75,0x12,0x0f,0x6d, 0x46,0x61,0xc6,0x9c, 0x46,0x0a,0x7f,0xb5, 0xb6,0x60,0x36,0xbe,
+ 0xdc,0xce,0x45,0x0d, 0x46,0x16,0xf3,0xc1, 0xaf,0x65,0x7f,0xa5, 0xaf,0xa3,0x8f,0x1b,
+ 0xec,0x69,0x11,0x67, 0x1e,0x77,0xdb,0x55, 0xce,0x97,0x82,0x3b, 0x7a,0xb8,0x54,0xd4,
+ 0x80,0x4b,0x83,0xbf, 0xfd,0xcd,0xf4,0xd5, 0xcb,0x10,0x8b,0x47, 0x42,0x43,0x1f,0xbd,
+ 0x1c,0x90,0x62,0xba, 0x3a,0x45,0x90,0x40, 0xd6,0x23,0x60,0xbd, 0xee,0xf7,0x3a,0x43,
+ 0xaa,0xf7,0xa1,0xb3, 0xff,0x0a,0x8f,0xe6, 0xd1,0x9a,0x85,0xf4, 0xae,0xd4,0x15,0x88,
+ 0x02,0xc3,0xac,0xf7, 0x5d,0x75,0x02,0xdc, 0x58,0xac,0xae,0x6c, 0x9e,0x9f,0x15,0x58,
+ 0xc7,0x70,0xc1,0x16, 0x67,0xa9,0x5d,0x1d, 0x8c,0xf7,0xae,0x34, 0xcd,0x36,0x17,0xbc,
+ 0x60,0xe8,0x1a,0x9b, 0x54,0xbd,0xf8,0xd9, 0x86,0x60,0xe9,0x30, 0x3c,0x84,0x5a,0xad,
+ 0x39,0x6f,0x37,0x98, 0x9b,0xf8,0xe9,0x54, 0xaf,0x65,0x46,0xd0, 0x9e,0xb3,0x81,0xc8,
+ 0xcc,0x02,0x61,0x2b, 0x16,0x1d,0xb3,0xa4, 0xfc,0x3a,0xcd,0x5b, 0xa6,0x02,0xde,0x9b,
+ 0x2e,0x8b,0xd2,0xce, 0xe2,0x56,0xaa,0xf0, 0xcd,0x60,0x09,0x90, 0x50,0x58,0xb1,0x4b,
+ 0xb5,0xf9,0x16,0xb0, 0xcd,0x0d,0x95,0x4f, 0x2b,0x1d,0xeb,0x8b, 0xfc,0xea,0x69,0xa9,
+ 0x09,0xa3,0x02,0xc4, 0xc2,0x61,0x25,0x3e, 0xf3,0x08,0x25,0xa9, 0x4f,0x6c,0x54,0x1b,
+ 0x13,0xcd,0x0d,0xf0, 0x17,0x79,0x85,0x78, 0x15,0x13,0x92,0x28, 0x20,0x82,0x09,0x95,
+ 0x3f,0x90,0x38,0xd7, 0x1b,0x8d,0x4a,0xf1, 0x44,0x74,0x07,0x12, 0x83,0xf7,0xb7,0x5f,
+ 0x45,0x05,0x88,0xcc, 0xa4,0x6e,0xbc,0xba, 0x98,0x5d,0xc4,0x81, 0xee,0x8b,0xfb,0xfe,
+ 0x5f,0x30,0xea,0xc3, 0x0b,0xaa,0x16,0x9a, 0x40,0xe0,0x44,0xb5, 0x95,0x52,0xdd,0x8c,
+ 0x8c,0x08,0xf2,0x62, 0xa8,0x64,0xa1,0x26, 0xfc,0x22,0x15,0xaf, 0x12,0x2a,0x18,0xe2,
+ 0x8e,0x75,0xcc,0xd6, 0xd8,0xaa,0x0d,0x8a, 0xbb,0xf9,0xbb,0xcb, 0xf7,0xa6,0xd2,0x3a,
+ 0xd8,0xbe,0x41,0x97, 0xc2,0xe7,0x63,0xef, 0x9e,0x89,0x93,0x03, 0x15,0xe2,0x44,0x75,
+ 0x6c,0x20,0x7a,0x1b, 0xa1,0x4e,0x7e,0x3c, 0x39,0xd5,0x67,0xa0, 0x24,0x4d,0x11,0x4e,
+ 0x26,0x15,0x04,0xe5, 0x08,0x8f,0xe2,0x3d, 0x10,0x00,0xe3,0x59, 0xb4,0x56,0xce,0x08,
+ 0xe7,0x44,0x4b,0x27, 0x7e,0xf8,0xb3,0x4b, 0x7f,0x9b,0xb7,0xf7, 0xfb,0x05,0xa1,0xe1,
+ 0xd7,0xa4,0xf6,0x0f, 0x53,0x18,0xc2,0x54, 0x09,0xea,0x45,0x7c, 0x0e,0x19,0x47,0xd6,
+ 0x8d,0xda,0x3f,0x35, 0x0c,0xe7,0x42,0x85, 0x90,0xa1,0xc3,0x80, 0x9b,0x0a,0xe3,0x73,
+ 0x6d,0x91,0xbc,0xd4, 0x60,0x37,0x8e,0xb9, 0xc3,0xe0,0x31,0x7d, 0x2d,0x2a,0xbb,0x4b,
+ 0x95,0xe9,0xda,0xbe, 0xb0,0xeb,0xae,0xa7, 0xfb,0xfc,0x6c,0x63, 0x60,0x95,0x09,0x92,
+ 0x6d,0x51,0x55,0x21, 0x66,0x29,0x02,0x29, 0xba,0x5e,0x16,0x83, 0xc4,0xaa,0x7f,0x56,
+ 0x4d,0x09,0x63,0x88, 0x0c,0xdd,0x9d,0xf5, 0x34,0xa7,0xc4,0xc5, 0xa6,0x1e,0xdb,0x8c,
+ 0x71,0x93,0x52,0x1e, 0x83,0xca,0xd0,0xa7, 0xec,0xea,0x66,0xf5, 0x68,0xf3,0x73,0x92,
+ 0x7d,0x2e,0x0e,0xde, 0x47,0xce,0x7f,0xfc, 0x63,0x36,0xcd,0xed, 0x5d,0xd6,0x7a,0x8f,
+ 0x77,0x77,0x7f,0x92, 0xbc,0xe5,0x29,0x1e, 0xc4,0x87,0x6c,0x37, 0xe3,0xde,0x63,0x76,
+ 0xae,0x5a,0xe8,0xdd, 0x8c,0xf5,0xb9,0x76, 0xc9,0xd4,0x2e,0xde, 0x83,0xb8,0xda,0x36,
+ 0x12,0x1d,0x63,0x19, 0x1c,0x50,0x96,0x3c, 0xd0,0x0d,0xf2,0x42, 0x0b,0x16,0x9a,0x8b,
+ 0xc8,0x8d,0x8c,0x6e, 0x7b,0xe0,0x3a,0xf2, 0x4e,0x2c,0xed,0x9d, 0xd0,0xca,0xc1,0x7c,
+ 0x9c,0xc9,0xf9,0x46, 0x2c,0xef,0x52,0x31, 0xf7,0x8e,0xa4,0x46, 0x1a,0xdb,0x7b,0x82,
+ 0x93,0x4c,0x9b,0x20, 0x3c,0x99,0xbe,0xa3, 0xcf,0xf7,0x1e,0xfb, 0x33,0x07,0xae,0x9d,
+ 0xd7,0xb3,0x3a,0x84, 0x1d,0xf3,0x19,0x3f, 0xa1,0x12,0x9a,0xdc, 0xc6,0xd2,0x80,0xd2,
+ 0x8a,0x9c,0x98,0xcc, 0xba,0xb6,0x50,0xf3, 0xe9,0xe0,0x5c,0xfb, 0x76,0x70,0x81,0x58,
+ 0x95,0x91,0x02,0x03, 0x5d,0xd2,0x30,0xcb, 0xd5,0x22,0x1b,0x21, 0xa2,0xc4,0x78,0x9a,
+ 0x64,0x39,0x1f,0x15, 0xcb,0x14,0x64,0x11, 0x5b,0x86,0xa2,0x6a, 0x88,0xb9,0x3b,0xa6,
+ 0x31,0x8c,0xdd,0x4b, 0x07,0x00,0x27,0xe9, 0xbe,0x67,0x08,0xd4, 0xd5,0xf9,0x47,0x21,
+ 0x68,0x08,0x69,0x1f, 0x1d,0xdb,0xfe,0xde, 0x0c,0x38,0xa9,0x7b, 0x41,0xfd,0xcd,0x43,
+ 0x26,0x28,0x1f,0x80, 0xd1,0xc6,0x10,0x8a, 0x35,0x6c,0xd4,0x8d, 0xc8,0xe3,0x44,0xc2,
+ 0xad,0x68,0x8f,0xd6, 0x0e,0x6d,0xae,0xd2, 0x27,0x00,0xd0,0xbe, 0xd6,0x62,0xf5,0x75,
+ 0x61,0xac,0x69,0x08, 0x68,0x60,0xef,0x76, 0x1a,0x0e,0x06,0x57, 0xcc,0xc1,0xae,0x15,
+ 0x9a,0x05,0x53,0xf0, 0x7b,0x9e,0xbe,0xce, 0x73,0x60,0x52,0x4c, 0x7a,0x57,0xa2,0xfe,
+ 0x85,0x48,0x5c,0xfc, 0xf2,0xd6,0x6e,0x06, 0x1c,0x33,0xf8,0x6b, 0xa6,0x2a,0xdb,0x15,
+ 0xa5,0xc8,0x72,0xb1, 0x8c,0x63,0x30,0x01, 0x98,0xb6,0x67,0x1a, 0xb8,0x41,0x1f,0x53,
+ 0x80,0x7a,0x06,0x95, 0x1b,0x91,0x08,0x5d, 0x7e,0x0a,0x10,0x1c, 0x78,0x41,0x63,0x85,
+ 0x09,0xc7,0x2f,0x8f, 0x4e,0x98,0xae,0x80, 0xae,0xcd,0x77,0x5d, 0x5c,0xc0,0x73,0xea,
+ 0xf5,0xb7,0x33,0x10, 0x4f,0x5a,0xe0,0x31, 0x59,0x54,0xbf,0xef, 0xae,0xbe,0x96,0x93,
+ 0x16,0xee,0x48,0x22, 0xe6,0xee,0x4d,0x42, 0x93,0x83,0xa6,0x92, 0x70,0xb5,0x4d,0x71,
+ 0x5c,0x36,0x79,0x68, 0x2f,0xb1,0x35,0x38, 0x3b,0x2d,0x22,0x7a, 0xb2,0xfe,0xad,0x8c,
+ 0x42,0xc6,0x03,0xa2, 0xc2,0xbb,0x6e,0x63, 0x77,0x0c,0x2e,0x46, 0xa4,0xf7,0xef,0x34,
+ 0xc8,0xaa,0x67,0x1b, 0x75,0x5f,0x4d,0xb4, 0xd5,0x2f,0xa8,0x5f, 0x55,0xb3,0x4a,0x27,
+ 0xdb,0x67,0x67,0x36, 0xbb,0x9c,0xa9,0x2a, 0x34,0x49,0xcf,0x74, 0xb4,0xd0,0x57,0x2e,
+ 0x35,0xa9,0x00,0x0d, 0x97,0x52,0x99,0xf7, 0xef,0x7b,0xfb,0xe8, 0xd5,0xd3,0xe0,0x5e,
+ 0xff,0xb8,0xe9,0xea, 0x38,0x7b,0xb8,0x9a, 0xc0,0x42,0xca,0x3e, 0x15,0xdd,0x2b,0xa8,
+ 0xf9,0x08,0x2a,0x45, 0x00,0x11,0x80,0x12, 0xef,0x80,0x3e,0x7b, 0xa6,0xb3,0x87,0xba,
+ 0x55,0xa6,0x0c,0x12, 0x3c,0x88,0x18,0xd3, 0x2d,0xe7,0xde,0x36, 0x52,0xc3,0x06,0x93,
+ 0x91,0xb1,0x5c,0x8d, 0x89,0xaf,0xbb,0x85, 0x31,0xd8,0x27,0x9f, 0x3d,0x60,0xc0,0x1a,
+ 0x42,0x44,0xd4,0xcb, 0x15,0x73,0x9a,0x06, 0x03,0x43,0x6f,0x8f, 0x93,0xb7,0xc9,0x31,
+ 0xa6,0xe8,0xe4,0xdc, 0xe4,0x2d,0xe7,0x99, 0x75,0x20,0x1a,0x80, 0x27,0xf3,0x1d,0x9f,
+ 0x1b,0x89,0xbb,0x0a, 0xac,0xa6,0xd6,0x1f, 0xe6,0x69,0x28,0x44, 0xb5,0xdc,0x63,0xc5,
+ 0x97,0x9f,0x78,0xcf, 0xce,0x6a,0xa1,0x2e, 0xf3,0x2b,0x0b,0x12, 0x40,0xde,0xf3,0x75,
+ 0xcb,0x21,0xaf,0x5f, 0xa5,0xc3,0x63,0xdb, 0xc0,0x55,0x31,0x17, 0x37,0x1b,0x57,0xd0,
+ 0x29,0x44,0x4d,0x70, 0x26,0x34,0x12,0x43, 0x5e,0xeb,0xc7,0x8d, 0x75,0x4f,0x24,0x9e,
+ 0xc0,0x29,0xb4,0x08, 0x19,0x9a,0xa9,0xdb, 0x8d,0xbe,0xa6,0xe5, 0xad,0x1a,0xe0,0xb2,
+ 0xee,0x01,0xc8,0x75, 0x00,0x12,0x05,0xa9, 0x28,0x06,0x66,0xe5, 0xcb,0x20,0x6b,0x21,
+ 0x00,0xa1,0x2e,0x62, 0xf6,0x14,0x99,0xf6, 0x8d,0xa8,0x6d,0xb6, 0xca,0xac,0xfb,0x42,
+ 0x60,0xbb,0xda,0x71, 0x83,0x11,0x50,0x12, 0xf1,0x26,0x00,0x4c, 0x84,0x41,0xf5,0xb3,
+ 0xd3,0xb7,0x12,0x9d, 0x0a,0xa2,0x0e,0x06, 0x56,0xd6,0xe2,0x6f, 0x6f,0x65,0x51,0x57,
+ 0x2a,0x77,0xfd,0xbd, 0x9d,0xba,0xaa,0x1c, 0xe2,0x13,0x55,0xd0, 0xb2,0x33,0xf3,0x60,
+ 0x94,0xe1,0x20,0xa3, 0x6e,0x4a,0x6e,0x24, 0xb0,0x1b,0xb7,0x04, 0x67,0x09,0x97,0x32,
+ 0x58,0x4e,0x15,0xb4, 0x96,0xfc,0xae,0x3b, 0x81,0x90,0x08,0x42, 0x61,0xa6,0x20,0x61,
+ 0x1a,0x60,0xc4,0x3b, 0x11,0x9d,0x8a,0x8c, 0x58,0x02,0xe5,0x57, 0x30,0x46,0x25,0x2b,
+ 0x0e,0x62,0xc9,0x32, 0x0f,0x53,0x3d,0x17, 0x82,0x21,0xc2,0x69, 0xb7,0x96,0x58,0xfd,
+ 0x25,0x70,0x65,0x06, 0x8a,0x8b,0x0b,0xc0, 0x44,0xc1,0x77,0x47, 0x1c,0x27,0xd4,0x71,
+ 0xfc,0x74,0x62,0xa3, 0x49,0x7d,0xf7,0x41, 0x64,0x57,0x20,0x6f, 0xed,0x33,0x36,0x59,
+ 0x63,0x37,0x2d,0xf0, 0x83,0x61,0x29,0x31, 0x75,0xd5,0x94,0xa6, 0x41,0x1b,0x59,0xe6,
+ 0xd3,0x2a,0x8b,0xa9, 0x3b,0x6a,0x6b,0x08, 0x46,0xad,0x6d,0x56, 0xc9,0xa6,0x91,0x8d,
+ 0x6b,0x63,0xc2,0xe0, 0xc6,0x7c,0x3b,0xfa, 0xef,0x26,0x70,0x74, 0x13,0x91,0x1e,0x44,
+ 0xb8,0x92,0xe5,0xa9, 0xff,0x9b,0xc5,0x55, 0x4a,0xd5,0x89,0xe8, 0x4f,0x72,0x17,0x37,
+ 0x8e,0x5d,0xa9,0x00, 0x86,0x89,0x25,0x9f, 0x60,0x69,0x13,0x66, 0xb6,0x28,0x6b,0x44,
+ 0xc3,0x40,0xcd,0x22, 0x69,0x27,0x10,0x43, 0x50,0xfd,0x16,0x14, 0x65,0xb8,0x59,0xf6,
+ 0xb6,0x6c,0x45,0x23, 0xb1,0x4c,0x04,0x30, 0xb2,0xf1,0x5a,0x28, 0x69,0x03,0x64,0x87,
+ 0x0d,0x24,0x43,0x03, 0x72,0xe8,0xd3,0xd1, 0x2d,0xb5,0xd4,0xa4, 0x1a,0x5d,0x35,0x62,
+ 0x46,0xba,0x76,0x64, 0xd3,0x2c,0xb4,0x59, 0x06,0x9b,0x05,0x59, 0xa9,0x31,0x23,0x09,
+ 0x92,0x21,0x34,0x0a, 0x22,0x41,0x8b,0x77, 0xa1,0xc0,0xb3,0x9f, 0xa1,0xb6,0xa2,0xc8,
+ 0x08,0x28,0x0e,0x21, 0x56,0xc3,0xb9,0x46, 0xa1,0x95,0xd2,0x88, 0x83,0x14,0x83,0x07,
+ 0xcc,0x4b,0x27,0x0b, 0x07,0xbc,0xae,0x80, 0x6c,0xab,0x28,0xb3, 0xcb,0xba,0x23,0x00,
+ 0xe3,0x1f,0x75,0x13, 0xa8,0x6b,0x51,0x3b, 0x91,0x3a,0x46,0xc2, 0x51,0x59,0xb5,0xcd,
+ 0x66,0x93,0x29,0xa4, 0x98,0xe7,0xc7,0xd1, 0xec,0x63,0x9a,0xb7, 0xa7,0x79,0xf5,0xf7,
+ 0x38,0x90,0x36,0xf2, 0xa3,0x9c,0xbe,0xa7, 0x32,0x8c,0xc9,0x50, 0xce,0x90,0x38,0x64,
+ 0x14,0x06,0x75,0x13, 0x9c,0xf0,0x73,0x10, 0x55,0xff,0x20,0x7b, 0x3d,0x60,0x4d,0x0b,
+ 0xd2,0xc0,0xac,0x79, 0x4d,0xbc,0x59,0xea, 0xb2,0xaf,0x9b,0x74, 0x79,0x12,0xbc,0xa6,
+ 0x80,0x47,0x52,0x2a, 0x8e,0xe1,0x3d,0xe1, 0x3b,0xb8,0x43,0xb9, 0xd6,0x66,0x72,0x0e,
+ 0xbd,0x07,0x06,0x4d, 0x14,0xc9,0xa6,0x97, 0xea,0x35,0x11,0x6d, 0x7b,0x3d,0x4e,0xf8,
+ 0x01,0xf3,0xd2,0xe3, 0x69,0x39,0x67,0xca, 0xda,0x8c,0x2f,0xd3, 0xc3,0x58,0x72,0xcd,
+ 0x86,0x55,0x88,0xe7, 0xb4,0xc1,0x87,0x53, 0x24,0xfa,0x7a,0xbc, 0x6e,0x69,0xd7,0x5c,
+ 0xad,0xba,0xea,0xb0, 0x70,0xe7,0x9e,0x91, 0x0d,0xa3,0x87,0xc2, 0x96,0xb7,0x5f,0x4e,
+ 0x51,0xaa,0x50,0x62, 0xd5,0x9f,0x1d,0x39, 0x4d,0x50,0x73,0x47, 0xf7,0xd2,0x6e,0x6e,
+ 0x08,0xba,0x40,0x06, 0x26,0xcc,0x61,0x5c, 0x6f,0xa1,0x9d,0x85, 0x16,0xe6,0x77,0x6c,
+ 0xc3,0x94,0x62,0x6f, 0xaa,0xb8,0x1b,0x4a, 0x4c,0xcf,0x98,0xe6, 0x50,0x79,0xc6,0xe6,
+ 0xde,0xad,0x1d,0x5a, 0xf0,0xa6,0x9c,0xeb, 0x24,0x20,0xf4,0x5c, 0x27,0x0c,0xee,0x7f,
+ 0x2b,0x01,0x35,0x3b, 0x0c,0xc6,0x7d,0x83, 0x8d,0xa1,0x76,0x63, 0x8e,0x60,0xdd,0x62,
+ 0xcb,0x1a,0x31,0x43, 0x46,0x38,0x35,0x5a, 0xeb,0x5d,0xe1,0xf9, 0x28,0x09,0x51,0x44,
+ 0xaa,0x8b,0x89,0x6d, 0xf5,0x4e,0x8a,0xa7, 0x41,0x04,0x50,0x3b, 0x9a,0x2d,0x47,0xb0,
+ 0xc1,0xcd,0xad,0x46, 0xa8,0x9e,0xe1,0x3d, 0xdc,0xe1,0x8d,0xfa, 0x6e,0xad,0xe5,0x10,
+ 0x7d,0xf2,0xa3,0xba, 0x65,0xcc,0x40,0x56, 0xb5,0xf0,0x7e,0x47, 0x35,0xdc,0x47,0xea,
+ 0xad,0x58,0xb3,0x8e, 0x70,0xb3,0x9a,0xab, 0xdb,0x88,0xa2,0x4e, 0x25,0x4c,0x3a,0x84,
+ 0x90,0x50,0xd0,0x5c, 0x81,0xe3,0x47,0x74, 0xc5,0xea,0x4c,0xd5, 0x76,0x7b,0x0a,0x14,
+ 0xf6,0xcb,0xc1,0xc4, 0xed,0xb2,0x69,0x31, 0xda,0x17,0x91,0xcd, 0x41,0xfc,0x2f,0x25,
+ 0x99,0xb9,0x6f,0x6f, 0x80,0x66,0xc4,0x72, 0x69,0x56,0xb4,0x73, 0x8e,0x7e,0xb4,0xb8,
+ 0xd0,0xe8,0x0d,0x7d, 0x68,0x20,0x13,0x8a, 0xa7,0x71,0x24,0x56, 0xa4,0x03,0x2a,0x0b,
+ 0xe6,0x24,0xb4,0xdc, 0xfb,0x86,0xc2,0x7a, 0x6e,0xbd,0x47,0xc8, 0x3c,0x89,0xd0,0x48,
+ 0x66,0x96,0xc5,0x8a, 0xc7,0x7b,0xe3,0x6e, 0x60,0xf4,0xfc,0x7a, 0x61,0xa5,0xa5,0x1a,
+ 0x38,0xcd,0x69,0xf7, 0x3b,0xd8,0xc7,0x9d, 0xb7,0x3e,0xc9,0x1e, 0x44,0x61,0x92,0x4a,
+ 0x9d,0x16,0xf4,0x37, 0x25,0xa3,0x05,0x11, 0xae,0x3e,0x61,0xc1, 0x02,0xe9,0x90,0x17,
+ 0xf7,0xf4,0xef,0xa8, 0xba,0x2f,0xd0,0x19, 0xe6,0x5c,0x5f,0xcd, 0x4d,0x71,0xb3,0x95,
+ 0x0d,0x9f,0x57,0xaf, 0x5a,0x86,0xaf,0xb2, 0x38,0xe1,0x9e,0xd3, 0xc2,0xcb,0x6c,0xc2,
+ 0x84,0x87,0x2c,0x79, 0xaa,0x58,0x61,0xc0, 0xb5,0xf6,0x36,0xa2, 0x3b,0x25,0x9c,0x2b,
+ 0xb6,0xff,0x79,0xf0, 0x35,0x4c,0xee,0x40, 0xb8,0x7e,0x11,0x1b, 0x0d,0xc4,0x01,0x36,
+ 0xe9,0x85,0x7b,0xa3, 0xa6,0x73,0x32,0x19, 0x7c,0x4e,0x11,0xdc, 0x3a,0x3d,0xa5,0x79,
+ 0x34,0x7f,0x04,0x06, 0x46,0xd2,0x2e,0x9a, 0xbe,0xdc,0x42,0xb0, 0x25,0x5c,0x4a,0x31,
+ 0x85,0x5c,0x8a,0x82, 0x9e,0xd5,0xc8,0xac, 0x04,0x31,0x29,0xc4, 0xb7,0xc5,0x81,0x41,
+ 0x6f,0x0d,0x56,0x34, 0x3b,0x69,0x92,0x3e, 0xd3,0x21,0x5d,0x61, 0x44,0x98,0xc7,0xcc,
+ 0x46,0xa6,0x58,0x6c, 0x24,0xd3,0x6c,0x1a, 0x30,0x20,0x2c,0xb0, 0xcf,0x5b,0xb9,0x90,
+ 0x4c,0x94,0x23,0x08, 0x24,0x67,0x44,0x28, 0xd2,0x20,0x70,0xa1, 0x8b,0x35,0x08,0x7a,
+ 0xd4,0x4d,0x2e,0xb6, 0x3e,0x4d,0x4d,0xa5, 0x94,0x60,0xd7,0xcb, 0x4d,0x70,0x17,0x5a,
+ 0x79,0xef,0xad,0x66, 0xcd,0x99,0xc3,0x9c, 0xe2,0xe3,0x7f,0x61, 0x59,0xad,0x5e,0xa7,
+ 0x38,0xd6,0xe9,0xa8, 0xc9,0x83,0xa9,0x72, 0x97,0x5e,0xb0,0x95, 0x64,0x91,0x37,0x8a,
+ 0xd2,0xb6,0x86,0x93, 0x05,0x8c,0x10,0x7a, 0xd2,0x24,0xc9,0x6d, 0x5e,0xa3,0x6d,0x07,
+ 0x22,0xd8,0xd2,0x56, 0x1e,0x0d,0x9c,0x0e, 0x5a,0xfa,0xfa,0x9e, 0x17,0x1d,0x4f,0xad,
+ 0xde,0x51,0x61,0xe3, 0x67,0x6a,0x6b,0x34, 0xae,0xe4,0xd9,0x9a, 0x49,0x83,0x5c,0xa3,
+ 0xaf,0xdd,0xbb,0x07, 0xbe,0xa0,0x5d,0xe2, 0x67,0x5a,0x7c,0x05, 0x02,0x0d,0x8e,0x42,
+ 0x6e,0x6b,0x18,0x49, 0xd1,0x66,0xdf,0xe0, 0xae,0x7e,0x63,0x79, 0x03,0x59,0x71,0xf1,
+ 0xb1,0xdd,0xdc,0x36, 0x0e,0xdf,0xc5,0x5d, 0x66,0xd7,0x00,0x1e, 0xb7,0x8f,0xac,0x6c,
+ 0xcf,0x05,0x72,0xc8, 0xb0,0x46,0x6d,0xcd, 0x46,0x68,0xd0,0x67, 0x77,0x73,0xcc,0xf9,
+ 0x2a,0xa8,0x53,0x74, 0xd1,0xe8,0x36,0xc1, 0x07,0x34,0xbf,0x7b, 0xbe,0xe9,0xd1,0x16,
+ 0xce,0xe2,0xcd,0xa7, 0x14,0xff,0x32,0x50, 0x68,0x82,0xcd,0x56, 0x88,0x7a,0x68,0x57,
+ 0x30,0x51,0x29,0x88, 0xa0,0x84,0x22,0x59, 0xe2,0x85,0x2d,0x15, 0x2d,0x09,0x95,0xcb,
+ 0x4a,0xa6,0x22,0xe2, 0xa2,0xc2,0xa8,0x42, 0x02,0x55,0xb7,0xec, 0x75,0xae,0x2e,0x56,
+ 0xd8,0x63,0x83,0xa7, 0x4a,0x03,0x9c,0xeb, 0xa5,0x88,0xc0,0x07, 0x84,0x00,0xb5,0x23,
+ 0x0c,0x41,0x70,0x6b, 0x3d,0x17,0xf8,0x29, 0x8f,0x23,0x9d,0xbb, 0x1c,0xce,0xc4,0x00,
+ 0xcc,0x1d,0xe4,0x50, 0x47,0xc2,0x99,0x1c, 0xd3,0xe7,0x62,0xac, 0x8d,0xf5,0xe5,0x92,
+ 0x07,0xc2,0xaa,0x14, 0x33,0xb6,0xb3,0x46, 0x17,0xab,0xe5,0xd3, 0x34,0xc9,0xb6,0xc0,
+ 0x86,0x94,0xc5,0x83, 0x57,0x02,0xb9,0x12, 0x90,0x0c,0x2f,0xa5, 0xc3,0x0e,0x2a,0x33,
+ 0x91,0x47,0x7d,0x3a, 0x59,0xe9,0x22,0x04, 0x45,0xe8,0x3a,0x6d, 0x8e,0xb8,0x13,0x7b,
+ 0x79,0xd0,0xe0,0x91, 0x9b,0x29,0x1b,0x17, 0x44,0x6b,0x23,0x7c, 0x33,0x20,0x09,0xc6,
+ 0xf6,0x04,0x4d,0xbd, 0x38,0x46,0xf7,0xe6, 0xfc,0xfe,0xea,0x73, 0xd8,0x98,0xe3,0x88,
+ 0x07,0x48,0x1c,0x4b, 0x66,0x5d,0xb8,0xd0, 0x96,0x39,0x43,0xab, 0x68,0xe1,0x73,0x5f,
+ 0x30,0x65,0x77,0x33, 0x12,0x63,0x7b,0xc4, 0x03,0x6b,0x70,0x11, 0x52,0x48,0xae,0x46,
+ 0xe1,0xb0,0xe4,0xb7, 0xb0,0xb6,0x6d,0x6f, 0x58,0xba,0x36,0x8d, 0xf5,0xd8,0xdb,0x6e,
+ 0x0f,0x68,0x35,0x26, 0xba,0x01,0x8c,0x6b, 0x07,0x83,0xec,0xa4, 0x51,0x94,0xaf,0x30,
+ 0x79,0x7c,0xca,0x16, 0x39,0xe0,0x1f,0x0b, 0x8f,0xad,0x45,0x85, 0x1c,0x6d,0xa4,0x8e,
+ 0x7e,0xcf,0xc6,0x64, 0x32,0x51,0x0f,0xcc, 0x84,0xa1,0x91,0x44, 0x44,0xc1,0x61,0xf7,
+ 0x91,0x70,0xca,0x1a, 0x46,0xbb,0x51,0xd9, 0x67,0xaf,0x99,0x46, 0x74,0x88,0x59,0x43,
+ 0xa8,0x61,0xb3,0xed, 0x61,0x55,0x7d,0xa2, 0xe9,0x7a,0x9d,0x81, 0x49,0xf2,0xd8,0xbf,
+ 0x6d,0x6b,0x59,0xec, 0xcc,0xbd,0x85,0x45, 0xbd,0x94,0xa4,0x85, 0xc8,0xb4,0xa6,0x6c,
+ 0xa1,0x22,0x96,0x4a, 0xbb,0x2c,0x66,0x93, 0x9e,0x9f,0x16,0x93, 0x62,0x7f,0xee,0x9f,
+ 0x7f,0x5e,0x38,0xdc, 0xe8,0x80,0xc9,0x70, 0x10,0x9b,0x3e,0x51, 0xfb,0xf0,0xc0,0x31,
+ 0x4a,0x5b,0x1a,0x77, 0x74,0xee,0x09,0x54, 0x04,0xc0,0xcb,0x85, 0x44,0x79,0x1d,0x56,
+ 0x7b,0x8a,0x66,0x41, 0xc3,0xae,0x91,0x23, 0xb7,0x29,0x37,0xd4, 0xf0,0x2c,0x7b,0x8a,
+ 0x46,0x65,0xe1,0x50, 0xf9,0xf5,0xe4,0xfa, 0x6e,0x82,0x54,0xaf, 0xe4,0xaa,0x57,0x99,
+ 0x26,0xef,0xc5,0xbb, 0x1d,0x64,0x4a,0x17, 0x25,0x17,0x91,0xa7, 0xe3,0x47,0x64,0x38,
+ 0x67,0x3d,0x35,0x44, 0xd3,0xd8,0x78,0xaf, 0xd9,0x2b,0x13,0xc9, 0x68,0xd5,0x57,0x0d,
+ 0x6f,0x92,0xa0,0xf3, 0x26,0x5d,0x9e,0x4a, 0x81,0x80,0x8e,0xb6, 0xc1,0x7f,0x07,0x2e,
+ 0x0a,0x4b,0x9e,0x04, 0xbb,0xa9,0x82,0x12, 0x82,0x71,0xcf,0xb6, 0xd6,0xeb,0x67,0x91,
+ 0xd0,0xd5,0x9c,0x9f, 0x43,0xc7,0xd7,0xd3, 0x3b,0x1d,0x98,0x18, 0x63,0x11,0xc0,0x8f,
+ 0xac,0xd6,0x4e,0x1b, 0xaf,0x57,0x6b,0x6f, 0xdb,0xfd,0x39,0xfe, 0x06,0x02,0x30,0x71,
+ 0x59,0x29,0x25,0x36, 0xbe,0x6f,0xe7,0xcd, 0xc0,0xb9,0x64,0xfb, 0x92,0x00,0x08,0x04,
+ 0xa9,0xec,0x7d,0xef, 0x17,0x39,0x4d,0x25, 0x66,0x10,0xd2,0x06, 0x81,0xbd,0x1b,0x20,
+ 0x60,0xda,0x49,0x30, 0x4f,0xc8,0xa1,0x14, 0xa5,0x24,0xb2,0xb9, 0xb8,0xa1,0x89,0x08,
+ 0x85,0x13,0x71,0xf4, 0x55,0x81,0x9c,0xfb, 0x5d,0x8c,0x5e,0xa4, 0x44,0xe8,0x4e,0xce,
+ 0xcd,0x98,0x8e,0xd3, 0x5b,0x4a,0x61,0x44, 0x7b,0x32,0x96,0xd2, 0x52,0x67,0xb3,0x6d,
+ 0x98,0xa1,0x16,0x0a, 0xac,0x43,0x07,0x04, 0x12,0x46,0x50,0x9e, 0xa1,0x51,0x9f,0x20,
+ 0x0d,0x79,0xc3,0x53, 0x0e,0x25,0x1c,0x74, 0xcb,0xa2,0x09,0xd0, 0x07,0xc4,0x3a,0xb1,
+ 0x24,0x0f,0x20,0x45, 0xd1,0x67,0x7f,0x58, 0xe8,0xa9,0x6e,0xc3, 0x80,0xb7,0x6e,0x0e,
+ 0x46,0x36,0xa6,0x52, 0x3a,0x42,0x6a,0x6a, 0x7a,0x41,0x07,0x6c, 0xb0,0x0f,0x3a,0xa8,
+ 0x26,0x2c,0x1a,0xc7, 0x3f,0xc2,0x98,0x61, 0x56,0xea,0x81,0x07, 0x3d,0x2d,0xfd,0x5e,
+ 0x06,0xf3,0x6f,0x31, 0xe2,0x90,0x25,0x61, 0xc2,0x22,0x21,0x0a, 0xbb,0x02,0x55,0xc8,
+ 0xde,0xfe,0xd8,0xe6, 0x27,0xfa,0xa4,0x8f, 0x19,0x87,0xe6,0x99, 0x08,0xa1,0xa4,0x86,
+ 0xc4,0x61,0x44,0x20, 0xdd,0x58,0x95,0xec, 0xcc,0x42,0xaa,0x39, 0xe8,0xa6,0x5b,0x62,
+ 0x94,0x8b,0xc6,0x07, 0xcf,0x73,0xd4,0x95, 0x62,0xe5,0x1f,0x56, 0x9e,0x94,0xe8,0xc7,
+ 0x90,0xb2,0x06,0x1d, 0xc2,0xdc,0x69,0x66, 0xfa,0x23,0xd6,0x1d, 0x36,0xac,0x1b,0x71,
+ 0xb7,0xdd,0x82,0x48, 0x5a,0xef,0x0d,0x6e, 0x7c,0x4d,0xd8,0x38, 0x22,0xa5,0x20,0x68,
+ 0x5c,0x06,0xca,0x52, 0xe7,0x36,0xac,0x90, 0x33,0xf2,0xda,0x05, 0x3b,0xca,0x4d,0x8f,
+ 0xce,0x50,0xa1,0x13, 0x5d,0xb7,0x0b,0x9a, 0x50,0x78,0xc6,0xb8, 0x50,0x86,0xb5,0xb4,
+ 0x43,0x3d,0xf6,0x0c, 0xc5,0xee,0xa3,0xa2, 0x27,0xa5,0xc6,0xa3, 0x04,0x10,0x26,0x41,
+ 0x42,0xcd,0xed,0x9d, 0xc6,0xa6,0xb5,0x1f, 0x3c,0x18,0x12,0x50, 0x4f,0xda,0x33,0x37,
+ 0x87,0xcd,0x2d,0x72, 0x07,0xd1,0x68,0x38, 0x34,0xe0,0x0d,0x91, 0x40,0x38,0x84,0x7b,
+ 0xd9,0x76,0xd4,0xbe, 0x04,0xf5,0x49,0xbd, 0x42,0xa7,0x6e,0x2e, 0x6f,0x99,0x03,0xdb,
+ 0xa6,0x33,0x87,0xbd, 0x34,0xb6,0x81,0xd2, 0x6c,0xcb,0x35,0x4f, 0x60,0xa0,0x78,0x79,
+ 0x33,0x81,0x4c,0xd5, 0x01,0x24,0x99,0xaa, 0xcc,0xa0,0x1d,0xe4, 0xc1,0x24,0xb2,0x1a,
+ 0x41,0x70,0xd7,0x21, 0xd6,0xf8,0xb2,0xde, 0x34,0x16,0xeb,0x40, 0x87,0x71,0x66,0xe2,
+ 0x66,0x1d,0x14,0x4a, 0x8e,0x24,0x0a,0x9d, 0x6d,0x34,0x93,0xce, 0x55,0x12,0x65,0xcb,
+ 0x1b,0x48,0x93,0x54, 0x41,0x54,0x83,0xa2, 0x1c,0x4f,0xd9,0x95, 0x4c,0x52,0x67,0x2e,
+ 0x1f,0xe8,0xce,0x2b, 0x49,0x16,0x1a,0x14, 0x2d,0x3a,0xd9,0xa8, 0xe8,0xe6,0x92,0x17,
+ 0x02,0xbd,0x7b,0x17, 0x09,0xc5,0xbd,0x56, 0x58,0x45,0x25,0x2d, 0x8f,0x26,0x93,0xed,
+ 0xbe,0xf5,0x25,0xee, 0x1a,0x0e,0x94,0xdc, 0xea,0x7a,0xae,0xa9, 0x2f,0xe7,0xf3,0xb3,
+ 0x02,0xb3,0x1f,0x77, 0xe3,0x5d,0x76,0x20, 0xaf,0xd7,0x75,0xd3, 0xd0,0x1a,0x18,0xfa,
+ 0xc6,0x77,0x0e,0xec, 0x9b,0x4d,0x91,0x77, 0xc8,0x95,0x9a,0xb7, 0xac,0x31,0xe5,0xb9,
+ 0x51,0x70,0x61,0x8f, 0x7d,0x2b,0xdd,0xbc, 0x0a,0x55,0xaa,0xcd, 0xd1,0x64,0x6a,0x48,
+ 0x45,0x14,0x62,0x2b, 0x06,0xee,0xc3,0x2b, 0x2a,0x43,0x00,0x06, 0x61,0x5c,0x10,0x16,
+ 0xcc,0x37,0xe3,0xb0, 0x17,0xd7,0x32,0xa6, 0x28,0x17,0x64,0xed, 0xf7,0xe3,0x4e,0xa2,
+ 0xc9,0xc6,0x87,0xcc, 0x6d,0x66,0x80,0x8c, 0x70,0x53,0x8a,0x17, 0x5f,0x45,0x5b,0x8a,
+ 0xd0,0x20,0x1f,0x41, 0xec,0x48,0x82,0x52, 0xaf,0x26,0xe1,0xce, 0x31,0xa5,0x31,0xba,
+ 0x12,0x4b,0x35,0xa8, 0xd4,0x01,0x13,0x61, 0x59,0x63,0x22,0x12, 0x5e,0x1b,0x10,0xbe,
+ 0x55,0x11,0xab,0x4c, 0xc3,0xd0,0x33,0x2e, 0x28,0xbd,0x43,0x2e, 0xdd,0xe6,0x27,0x60,
+ 0xf6,0x55,0xe1,0xf0, 0x79,0x6d,0xc9,0x99, 0x63,0x8f,0x32,0xd4, 0x0d,0xc3,0x84,0xa6,
+ 0x8a,0x6c,0x52,0x49, 0xb1,0x90,0x0a,0x10, 0x99,0x6d,0xdb,0x7f, 0xdf,0x12,0xa9,0xdc,
+ 0xe2,0xda,0xd1,0xa8, 0x65,0x2e,0x8a,0x97, 0xcf,0x0d,0x81,0xaa, 0x84,0x0b,0xd0,0xcb,
+ 0xe2,0xed,0xa2,0x12, 0x16,0xee,0xa3,0x82, 0x2c,0x5a,0x79,0x8b, 0x2a,0x02,0x63,0x73,
+ 0x72,0x08,0x8d,0x92, 0x56,0x5d,0x74,0xda, 0xf7,0x2b,0xd7,0x77, 0x01,0x0d,0x53,0x44,
+ 0x3e,0xd9,0x81,0x0d, 0x05,0xad,0x28,0x9a, 0xdb,0xe2,0x32,0x79, 0xc3,0xba,0x9f,0x6f,
+ 0x3c,0x6a,0xa1,0x79, 0xd6,0x20,0xd2,0x35, 0x6d,0xa3,0x58,0x30, 0x30,0x9c,0x30,0x5f,
+ 0xc3,0xec,0xbe,0x1c, 0x84,0xb0,0xb4,0xfa, 0x59,0x62,0x33,0x26, 0x85,0x26,0x4b,0x1b,
+ 0x07,0xeb,0xf3,0x46, 0x1e,0xc7,0x55,0x44, 0xf9,0x9f,0x81,0x5d, 0x60,0x59,0x84,0x1f,
+ 0xa1,0xa5,0x2d,0x44, 0x5b,0x62,0x3d,0xc8, 0xec,0x9b,0x68,0x2b, 0x35,0xcb,0xb8,0x4c,
+ 0x32,0x9a,0x2c,0x39, 0x68,0xa2,0xbe,0x94, 0xff,0x1f,0x57,0x61, 0x83,0x5b,0x19,0x02,
+ 0x25,0x4d,0x55,0x24, 0xbe,0xfe,0x64,0x4b, 0x06,0xca,0x20,0x6b, 0x64,0x63,0x09,0xab,
+ 0xc1,0xb8,0x66,0xc8, 0x50,0xa1,0x6c,0x95, 0x69,0x2c,0xc9,0x44, 0xfd,0xa4,0x57,0xa8,
+ 0xcc,0xa5,0x52,0x96, 0x2e,0x5b,0x9a,0xcc, 0xf2,0x3e,0x1f,0x0f, 0x42,0xc8,0x15,0xe6,
+ 0x66,0xa7,0x82,0xd8, 0xcf,0x84,0x8b,0xd6, 0xea,0x11,0x7d,0xa1, 0xde,0x51,0xbf,0xd1,
+ 0x51,0x21,0x7d,0xbb, 0xc4,0xed,0x53,0x6e, 0x62,0xb9,0xe5,0xcc, 0x08,0x0e,0x82,0x46,
+ 0x90,0x51,0x90,0xf3, 0xec,0x6a,0x31,0x1a, 0xd8,0xda,0x66,0x35, 0x2c,0x58,0x45,0x82,
+ 0x6c,0x26,0xa6,0xcc, 0x80,0x13,0xa2,0xc1, 0xf1,0x29,0x79,0x13, 0x9b,0xb2,0x58,0x19,
+ 0xa9,0x1c,0x9d,0xb4, 0x99,0x7a,0x39,0x38, 0x05,0xaa,0x27,0x6d, 0x49,0xf0,0x8b,0x37,
+ 0xd4,0x4f,0x91,0x45, 0x17,0x78,0x33,0xe4, 0x18,0x0b,0x85,0xd4, 0x6c,0xc5,0x24,0xae,
+ 0x13,0x5b,0x9e,0x46, 0xe6,0x2a,0x71,0x19, 0x7b,0x5b,0x8b,0xbd, 0x55,0xbc,0xb2,0xda,
+ 0xb8,0x15,0x93,0x09, 0x59,0x69,0x84,0x2d, 0x84,0x37,0x05,0x9b, 0xfc,0xf4,0xa1,0x17,
+ 0x2d,0x29,0x35,0xb0, 0x49,0x89,0x1c,0xc5, 0xb7,0x0c,0xcb,0x55, 0x27,0xa7,0x50,0x5f,
+ 0xc1,0x08,0xbe,0x8e, 0xe7,0x32,0xb7,0x4d, 0xe9,0xec,0x19,0x7f, 0x7c,0x61,0x8a,0xd3,
+ 0xc2,0x39,0x5d,0xd0, 0xcc,0x6d,0x4c,0x79, 0xd2,0x96,0x54,0xef, 0xb9,0x37,0x67,0x3d,
+ 0x80,0x67,0xf1,0xaf, 0x51,0xb5,0x46,0xa9, 0x1a,0x34,0x00,0xa5, 0x29,0x49,0x24,0x25,
+ 0xab,0xea,0x0a,0xcf, 0x03,0x92,0x71,0x2d, 0x7d,0xea,0xb6,0xd1, 0x61,0xa5,0x3d,0x9c,
+ 0x1b,0x76,0x91,0x79, 0x44,0x19,0xee,0xc6, 0xee,0x73,0x05,0x53, 0xd3,0x3d,0xb3,0x42,
+ 0xd1,0x66,0xea,0xa5, 0x73,0xeb,0xe9,0x69, 0x41,0xdd,0xed,0x20, 0xd3,0xb0,0xab,0x89,
+ 0x83,0xdd,0xfd,0x39, 0x87,0xb9,0xd2,0x43, 0x65,0xeb,0x17,0xcf, 0xaf,0x5a,0x40,0x5f,
+ 0x35,0x92,0xc8,0x69, 0x19,0x23,0x16,0x43, 0xff,0x3b,0x11,0xac, 0x61,0x56,0x34,0x2f,
+ 0x09,0x85,0x87,0xd5, 0xb5,0x67,0x0b,0x75, 0x24,0x8d,0x26,0x9e, 0x3e,0x15,0x68,0x49,
+ 0x22,0xed,0xa2,0xb3, 0x49,0x64,0x5a,0x81, 0x2b,0xe6,0x16,0x9a, 0x55,0x35,0xd9,0x3f,
+ 0xb8,0xe8,0x61,0x59, 0xac,0xc7,0x4b,0x44, 0x8f,0xdf,0x84,0x4d, 0x8b,0xdb,0x58,0x80,
+ 0xdd,0xb0,0xb3,0xa1, 0xf1,0x24,0xb9,0x2b, 0xd5,0x69,0xa3,0x5a, 0xdc,0xfa,0xdc,0xd0,
+ 0x99,0x29,0xeb,0xb9, 0x96,0x8d,0x69,0xc8, 0xae,0x77,0xc6,0xe4, 0x68,0xf6,0x7e,0x0a,
+ 0xdb,0x20,0xa7,0x0b, 0x86,0xca,0xf7,0xae, 0x56,0xc9,0xcc,0xd3, 0x62,0xd0,0xb6,0xf4,
+ 0xf0,0xd4,0xb4,0x9a, 0x89,0x48,0x7a,0xb4, 0xe5,0x68,0xef,0xa4, 0xf3,0x43,0x31,0xdb,
+ 0x04,0x00,0x13,0x59, 0xd7,0xe7,0xec,0xa5, 0xe2,0xd8,0xce,0x5c, 0xe7,0xa7,0x82,0xc2,
+ 0x61,0x12,0xbf,0x86, 0xb4,0x0a,0x76,0xbf, 0x26,0xff,0xc4,0xf5, 0x17,0x73,0x97,0xeb,
+ 0x96,0xbd,0xbf,0x89, 0xc2,0x10,0x60,0x81, 0x5d,0x0d,0x63,0xfc, 0x2b,0x68,0xab,0xa9,
+ 0x3d,0x37,0x85,0xc3, 0x07,0x1f,0x95,0x17, 0x0d,0x35,0x83,0x92, 0x03,0xaf,0xfa,0xcf,
+ 0x73,0x43,0x7f,0x5a, 0x92,0x26,0xcb,0x54, 0x34,0xf2,0xbf,0x7c, 0x06,0x62,0x51,0x83,
+ 0x25,0x36,0x68,0x1e, 0x7e,0xc7,0x87,0x25, 0x43,0x2f,0xb1,0xa0, 0x32,0xa5,0x4c,0xf1,
+ 0xc8,0x2c,0xf0,0xea, 0x0b,0xd3,0xa1,0xb7, 0xa3,0x6d,0x37,0x66, 0x82,0xfe,0xe7,0x3f,
+ 0x56,0xd9,0xef,0x4e, 0x72,0x9e,0x07,0x21, 0x3a,0x5b,0xa8,0xaf, 0xe8,0x3e,0x70,0xee,
+ 0xff,0xa2,0xe3,0x9b, 0x35,0xb5,0xaa,0x11, 0xf0,0x9a,0x40,0xbf, 0x0b,0x0f,0xe0,0x61,
+ 0x76,0xfb,0x86,0x91, 0xbe,0x67,0x98,0xd0, 0x89,0xb4,0x91,0x90, 0xc5,0xea,0xb4,0x69,
+ 0x1f,0xc4,0x7d,0xb3, 0x46,0x1b,0x15,0x2d, 0x66,0x31,0x6a,0x0b, 0x30,0x24,0x95,0x16,
+ 0xa1,0x1b,0xd2,0xd4, 0x07,0x13,0xd8,0x00, 0x40,0x1c,0xdb,0x12, 0x39,0x6c,0x88,0xc3,
+ 0x6a,0xb0,0x3f,0x30, 0x5a,0x7c,0x71,0xc0, 0x93,0xf8,0x9e,0xbe, 0x94,0xf3,0x9b,0xfe,
+ 0xf0,0xa8,0x48,0xf0, 0xff,0xd9,0x5b,0xfd, 0xfe,0xeb,0xd5,0xab, 0xc4,0x81,0x63,0x78,
+ 0xfe,0x96,0xde,0x5b, 0x52,0x80,0x58,0x2a, 0x06,0xd0,0x80,0x8a, 0xc6,0x0a,0x76,0xca,
+ 0xbe,0xc6,0x8b,0xbe, 0xd1,0x3e,0x97,0x4b, 0x37,0x05,0x0e,0x02, 0xa9,0x51,0x43,0xfe,
+ 0xad,0x95,0x4c,0x2d, 0x76,0xe0,0x6d,0xb3, 0x2b,0xf7,0x97,0xe5, 0xb9,0xc5,0xe0,0xd2,
+ 0x6c,0x7c,0x57,0x1b, 0x0f,0xe2,0xa2,0xbc, 0xb8,0xc5,0xda,0xd5, 0x69,0x87,0x5a,0x51,
+ 0x29,0x59,0x73,0x6b, 0x91,0xbf,0x80,0xf0, 0x9b,0x61,0xa6,0x62, 0x2b,0x34,0x1b,0x76,
+ 0x1b,0x56,0x91,0x27, 0xac,0x69,0x1f,0xb8, 0xc4,0x76,0x2e,0x4d, 0x07,0x43,0x41,0x14,
+ 0xb5,0x77,0xa0,0x5e, 0xdf,0x18,0x3a,0xee, 0x1f,0xa3,0xde,0xec, 0xd5,0x1c,0x76,0x1d,
+ 0xbd,0x7e,0x7a,0x7b, 0xfa,0xb5,0xe9,0x23, 0x20,0x8d,0x99,0xd7, 0x0a,0xec,0xd2,0x18,
+ 0xd8,0x4d,0x4e,0x84, 0xa7,0xea,0xa5,0x28, 0x4b,0xb7,0x14,0x56, 0x17,0xf3,0xd8,0x6e,
+ 0xa4,0x73,0x1c,0x87, 0x27,0x20,0x2b,0xa6, 0x24,0x8e,0xe1,0x81, 0xde,0x7b,0xe3,0x2a,
+ 0x46,0xab,0xb3,0x85, 0x48,0xdd,0x8d,0x7c, 0x84,0x72,0xe0,0xab, 0x58,0xdb,0xf8,0xd4,
+ 0x12,0x18,0x52,0xc4, 0x19,0x0c,0x93,0x47, 0xb3,0x88,0x17,0x5d, 0x28,0x93,0x5e,0xfd,
+ 0x9e,0xf9,0xac,0xf9, 0xf8,0x60,0xd5,0x3d, 0xbf,0x1f,0x02,0xfc, 0x9f,0xfe,0xe7,0x34,
+ 0xfd,0x9d,0x48,0xaa, 0x39,0xac,0x92,0x46, 0xc8,0xe7,0x1c,0xdf, 0xee,0xff,0xe3,0x68,
+ 0x9d,0xd5,0x0e,0xf8, 0xc9,0x64,0x53,0x0b, 0xc8,0x67,0x88,0x03, 0x91,0x11,0x99,0x16,
+ 0x57,0x83,0xc5,0x5e, 0xbf,0x24,0xa0,0x73, 0xdc,0x1a,0xf2,0x2d, 0xb2,0xfe,0x2b,0x11,
+ 0x8a,0xe7,0x92,0xd7, 0xf5,0x0c,0x93,0x00, 0xc1,0x7d,0x17,0xbb, 0x83,0xa0,0xd7,0xf1,
+ 0x88,0x95,0x23,0x5f, 0xe3,0xcc,0xec,0x64, 0x29,0xb3,0xdd,0x3e, 0x57,0x4f,0x16,0xda,
+ 0xf9,0xbc,0x38,0x48, 0xfc,0xec,0xd3,0x6b, 0x54,0x29,0x6d,0x08, 0x37,0x7f,0xb2,0x05,
+ 0x81,0x29,0xc8,0xaa, 0xeb,0x45,0x20,0xba, 0x62,0x5d,0x5b,0x08, 0x06,0x53,0x79,0x29,
+ 0x57,0xc3,0xff,0xed, 0xe1,0x32,0x83,0x1a, 0xdc,0xa5,0x1c,0xf5, 0xad,0xb7,0xed,0xa4,
+ 0x53,0xfb,0x90,0x0a, 0xf5,0xd8,0x64,0x23, 0x53,0xea,0x3d,0x64, 0x35,0x6b,0x76,0xff,
+ 0x03,0x0d,0xed,0x42, 0xf3,0x2d,0xd6,0xd8, 0x55,0xd6,0xc9,0xc5, 0x75,0x4b,0x2a,0xa8,
+ 0x83,0xc8,0xbb,0x2f, 0x9a,0xe8,0x83,0x2c, 0xa0,0x03,0xda,0x30, 0xb3,0x71,0x60,0xb5,
+ 0x39,0xdd,0x44,0x21, 0xb4,0xd2,0x2b,0xb8, 0x2c,0x64,0x19,0x64, 0xc9,0xe8,0x23,0xfe,
+ 0x30,0xe9,0x97,0x91, 0x16,0x65,0x1e,0x93, 0x4f,0x01,0x2d,0x5b, 0x91,0xd9,0xf7,0x5f,
+ 0xf7,0xb4,0x9b,0xef, 0xd1,0x2f,0x8a,0xf4, 0xd3,0xae,0x81,0x1a, 0x69,0x87,0x93,0x28,
+ 0xf3,0x1e,0x71,0x75, 0xfe,0x1c,0xcb,0xc3, 0x16,0xcb,0x21,0x9d, 0xac,0xd6,0xb7,0x4b,
+ 0x27,0x0d,0x75,0x4e, 0xd1,0xb3,0x0f,0x67, 0x0b,0x04,0xf4,0xfc, 0xc3,0xf1,0x4d,0x48,
+ 0x2f,0x25,0x58,0x2f, 0xc8,0xdd,0x18,0x2e, 0x75,0x26,0x98,0x1a, 0xeb,0xa1,0x9d,0x40,
+ 0x1e,0xbc,0xd8,0x72, 0x38,0xb8,0xc0,0x9f, 0xbb,0xf9,0x0f,0x6d, 0xf6,0x7e,0x25,0x34,
+ 0xa0,0x33,0xcc,0xe5, 0xda,0xb6,0xc5,0x83, 0x95,0x87,0x25,0xf9, 0x58,0x5e,0xfc,0xe8,
+ 0x01,0x7e,0x9e,0x57, 0xea,0x60,0xdf,0xe4, 0x7b,0x6e,0xbb,0x69, 0x99,0x4b,0xed,0x4c,
+ 0xed,0x6d,0x95,0xb1, 0x06,0x20,0xf5,0x4d, 0x43,0x05,0x78,0xcd, 0xe3,0x58,0xaf,0x6f,
+ 0x97,0x1c,0x9e,0x36, 0xb6,0xf2,0x68,0x28, 0xd0,0xa7,0x0b,0x50, 0xd6,0x9a,0x1a,0x98,
+ 0xd0,0x77,0xf2,0x2c, 0x52,0x95,0x74,0xb0, 0x0e,0x35,0x97,0x68, 0xbc,0xf6,0x76,0x57,
+ 0xfe,0x0f,0x4a,0xa2, 0xfa,0x9b,0x45,0xe6, 0x79,0x8d,0xf0,0x5b, 0xbe,0x9f,0x3b,0x67,
+ 0xc6,0x04,0x64,0xb3, 0xd7,0xf3,0xde,0xd6, 0x1c,0xdd,0x99,0x6b, 0xe5,0x8d,0x8a,0xea,
+ 0xa5,0xb0,0xae,0x87, 0x30,0xf5,0x06,0x25, 0x31,0x33,0x06,0xc3, 0x38,0xe5,0xe1,0x18,
+ 0x4c,0x10,0x19,0x03, 0x83,0x8f,0x38,0xa0, 0x6a,0xb7,0x43,0x35, 0x00,0xcb,0x49,0x4b,
+ 0x3f,0xd0,0xe9,0xb5, 0x53,0x7b,0xaa,0xfe, 0xa5,0x6e,0x2d,0x33, 0x64,0xfe,0xfe,0x15,
+ 0x3f,0x62,0x3d,0x32, 0xe7,0x36,0x49,0xf3, 0x28,0xf5,0xc4,0xac, 0x38,0x17,0x7d,0x4c,
+ 0x58,0x78,0xfe,0xdb, 0x0a,0x8e,0xcb,0x2b, 0x1a,0x6c,0xcc,0x2a, 0x65,0x19,0xe3,0x64,
+ 0x10,0x88,0x63,0x7d, 0x4d,0x18,0xa6,0x04, 0x6d,0x40,0x32,0xff, 0x12,0xa2,0xa1,0x05,
+ 0x45,0x16,0xba,0x48, 0x8c,0x42,0xca,0x20, 0x3e,0x79,0x51,0x78, 0xdd,0x01,0x7b,0x8d,
+ 0x17,0x4d,0x67,0xb0, 0x63,0x6a,0xc8,0x2e, 0xe3,0x69,0xf9,0xe1, 0x7c,0x96,0x1d,0xad,
+ 0x50,0x5a,0x1a,0xd5, 0xb0,0x4f,0xe5,0x42, 0x41,0xdc,0xe4,0xf7, 0xf2,0xcb,0xfc,0xd1,
+ 0xcc,0x88,0x84,0x01, 0x1d,0xfb,0x8f,0x50, 0x91,0xa9,0xee,0xb7, 0x83,0x90,0xe7,0x1c,
+ 0xda,0xdf,0x41,0xd2, 0xc3,0x7f,0xca,0xc7, 0x50,0xd2,0xa6,0x65, 0xd7,0x27,0x72,0xe9,
+ 0x43,0x42,0x3b,0x03, 0x4b,0x34,0x3a,0x6d, 0x9a,0x71,0x21,0x13, 0x7e,0xcb,0xc9,0x54,
+ 0x1c,0x1a,0x94,0x98, 0xb1,0x0d,0x34,0x87, 0x68,0x26,0x38,0xe2, 0x04,0xba,0x06,0x70,
+ 0x45,0x8e,0x8d,0xb7, 0x4a,0x34,0xe6,0x42, 0x0d,0x09,0xc9,0xa9, 0x6c,0x03,0x82,0x37,
+ 0x32,0x52,0x0c,0x39, 0xc6,0xa7,0x95,0xc4, 0xf9,0xb2,0xeb,0x8a, 0xcf,0xaf,0xf9,0x38,
+ 0x38,0x56,0x03,0x16, 0x42,0xea,0xda,0xef, 0x18,0x0b,0xc2,0x18, 0x31,0x89,0xa0,0x6d,
+ 0x26,0xc4,0x50,0xd4, 0x32,0x22,0x4e,0x0c, 0xf0,0x4c,0x92,0xdf, 0xde,0x2e,0x82,0xd4,
+ 0xaa,0xd8,0x36,0x37, 0x71,0x54,0x4a,0x03, 0x94,0x24,0x1c,0x05, 0x60,0x26,0x66,0xb3,
+ 0xbf,0x62,0x5a,0x66, 0xab,0x4c,0xf3,0x7b, 0x7c,0xcd,0x8f,0x31, 0xd9,0x4b,0xcd,0x8a,
+ 0xdc,0x1a,0x5c,0x20, 0xba,0x60,0x14,0xb1, 0x06,0x7d,0x91,0x4e, 0x3d,0x3f,0x8c,0x26,
+ 0x57,0xed,0x70,0x2b, 0x67,0x98,0x91,0xbf, 0x77,0x8c,0x11,0x6d, 0x9c,0x93,0x10,0x8c,
+ 0x16,0x24,0x1c,0xfb, 0x31,0x46,0x96,0x19, 0xb9,0x77,0xf4,0x5e, 0x77,0x74,0xfe,0xb6,
+ 0x18,0x1e,0x7f,0xa3, 0x7f,0x91,0x45,0x0d, 0x19,0x7d,0x1f,0xe4, 0x90,0xb9,0xef,0xa7,
+ 0xf4,0x3b,0x4d,0x79, 0x0d,0x5e,0xd7,0xa8, 0x6c,0x26,0x62,0x75, 0xf9,0x97,0x12,0x52,
+ 0x03,0x00,0xec,0xde, 0x9d,0x8e,0x69,0x23, 0x91,0xde,0x40,0xce, 0xa7,0x3d,0x92,0xf3,
+ 0xd4,0x5d,0x5c,0x8f, 0x3e,0x57,0x05,0x08, 0x4e,0xf6,0x73,0xf4, 0x39,0x2c,0x59,0xad,
+ 0x14,0x5a,0x71,0x4a, 0xb1,0x17,0x96,0x7a, 0xab,0x46,0x3b,0x48, 0x16,0x71,0x97,0x8c,
+ 0xf0,0xda,0x30,0x04, 0x76,0x09,0x9f,0x96, 0x44,0x68,0x18,0xa0, 0x68,0x4b,0xaf,0x62,
+ 0x93,0x1b,0x04,0xd8, 0x24,0x89,0x23,0xf7, 0x87,0x1b,0x92,0x1b, 0x6f,0xc9,0x67,0xd1,
+ 0x62,0x53,0x60,0x36, 0x90,0x8b,0x2c,0x3d, 0xec,0x8f,0xaa,0x71, 0x4d,0x8c,0xcd,0x62,
+ 0xf6,0x3b,0x4b,0x5f, 0x15,0x87,0x36,0xb7, 0xaf,0x9d,0x00,0x1f, 0xd5,0x64,0xfc,0xb5,
+ 0x5f,0xdd,0x32,0x62, 0x10,0x04,0x54,0x0b, 0xfa,0xec,0xc9,0x33, 0x43,0x22,0x1d,0x11,
+ 0x0a,0x82,0xa0,0xda, 0xa2,0xd0,0xce,0x71, 0x26,0x93,0xbb,0x2c, 0xd8,0xb3,0x32,0xac,
+ 0xa4,0xe1,0x1d,0xd4, 0x09,0x18,0x0a,0x14, 0x27,0x4e,0x3b,0x9e, 0x17,0x61,0xe7,0xf3,
+ 0x0e,0x22,0x7a,0xbc, 0x0e,0x0f,0x95,0xf2, 0xfd,0xe7,0x97,0x95, 0x4f,0xf9,0xac,0xa0,
+ 0xf3,0xff,0x8e,0x49, 0x4b,0x77,0xcf,0x5f, 0x05,0xc2,0x48,0x14, 0xf3,0x9b,0xac,0x4f,
+ 0xeb,0xde,0x2b,0xdc, 0xdf,0x4a,0xb7,0x08, 0xfe,0xfe,0xf2,0x9f, 0x6f,0x46,0x86,0xde,
+ 0xc6,0x07,0xa4,0x32, 0xc9,0x75,0x65,0x2d, 0x74,0x49,0x4a,0xd5, 0xfe,0xa0,0x6b,0xe6,
+ 0x72,0xb0,0x20,0xe3, 0xfa,0x8e,0x67,0x0b, 0x79,0xaa,0xe6,0xb7, 0x87,0xfc,0x4c,0x8c,
+ 0xee,0x5f,0xb9,0x56, 0xb1,0x17,0x91,0xa6, 0xa2,0x9d,0x86,0x10, 0x54,0x30,0xc4,0x87,
+ 0xac,0xf7,0x41,0x3c, 0xe4,0xb1,0xf1,0x72, 0xfb,0xda,0x7c,0x4d, 0xb7,0x27,0xc0,0xfa,
+ 0x18,0x54,0xfc,0x83, 0xe3,0x45,0x3a,0xc8, 0x59,0xca,0x21,0x68, 0xbf,0xf5,0xde,0x4e,
+ 0x6b,0x86,0xbc,0x6c, 0xb9,0x1a,0x5e,0x2c, 0x1d,0xe3,0xa9,0x8a, 0xf1,0xab,0x4c,0x58,
+ 0xaf,0xad,0xbb,0x96, 0xeb,0x23,0x3e,0x52, 0x4d,0x67,0x1f,0xcd, 0x96,0x6c,0xf1,0x24,
+ 0x24,0x7d,0x9f,0xf2, 0xf6,0xa1,0xdb,0xe9, 0xb8,0x18,0x98,0x79, 0xde,0xd7,0xef,0xae,
+ 0xc8,0x19,0x6a,0xd3, 0x02,0x3b,0x0b,0x34, 0x81,0xcc,0xd2,0xdd, 0x14,0x5e,0x2d,0x17,
+ 0x07,0xf2,0x74,0xfa, 0x91,0xf8,0x34,0x1b, 0x17,0xd0,0x5f,0x1e, 0x43,0x19,0x38,0xf5,
+ 0x53,0x18,0x0e,0x07, 0x4c,0xb9,0xa6,0x49, 0x2a,0x5d,0x8d,0x85, 0x9d,0xad,0xb7,0x62,
+ 0xe7,0xfd,0xab,0x57, 0x36,0x67,0x5a,0x48, 0x90,0x87,0x72,0xc7, 0x5c,0x38,0xd2,0xb7,
+ 0xfd,0x13,0xb5,0xca, 0x17,0x03,0x92,0x3c, 0x89,0x91,0xd5,0x6e, 0x1b,0xe1,0xa4,0x1f,
+ 0x9b,0xd0,0x98,0x6a, 0x64,0xc9,0xb1,0x74, 0xe3,0xf5,0xe8,0x30, 0x9b,0x23,0x4d,0x4c,
+ 0x1f,0xdb,0x4b,0x6e, 0x9c,0x4a,0x62,0x98, 0x80,0x6d,0xfc,0xa0, 0x94,0x99,0x6a,0x73,
+ 0xa9,0xa5,0xb9,0xc2, 0xdd,0x4b,0xeb,0xdc, 0x3b,0xee,0x7f,0xf1, 0x29,0x48,0xb0,0x74,
+ 0x03,0x95,0x57,0xd9, 0x4d,0x17,0x64,0x00, 0x25,0x7f,0x33,0x50, 0xae,0xf9,0x28,0x0f,
+ 0x6b,0xb9,0xff,0xb1, 0xb0,0x99,0xc9,0x66, 0xf7,0x3b,0xec,0x5f, 0x1f,0x50,0x91,0x86,
+ 0x6b,0x1a,0x23,0xa6, 0x61,0xa8,0x6a,0x75, 0x1b,0x3e,0x34,0xd1, 0xf0,0xe6,0xeb,0x25,
+ 0xf0,0x09,0xcd,0xac, 0xac,0xe4,0x29,0x14, 0xf6,0x4a,0x02,0x80, 0xa8,0x39,0xeb,0x52,
+ 0x16,0x88,0x54,0x0e, 0xb5,0x24,0x29,0x13, 0x21,0x41,0x43,0x85, 0x8f,0x48,0x20,0x8d,
+ 0xb4,0x3e,0x61,0x3a, 0x5c,0x05,0x91,0x8f, 0x80,0x59,0x89,0x15, 0x07,0xab,0xed,0x75,
+ 0x59,0x05,0x00,0x84, 0x07,0x00,0xe6,0xa8, 0x20,0xc5,0x28,0x53, 0xaf,0xa4,0xca,0xe0,
+ 0x71,0xe5,0x14,0x06, 0xf5,0x8a,0xab,0x40, 0x3b,0x2f,0x0c,0x63, 0x4d,0xdf,0x4d,0x0c,
+ 0x9c,0xd3,0xdc,0xc3, 0x60,0x51,0x44,0x10, 0xe2,0x1d,0x06,0x40, 0xe7,0xa0,0xaf,0x29,
+ 0x0a,0x1f,0xe7,0x50, 0x1a,0x1e,0x9c,0xad, 0x5e,0xef,0x97,0xac, 0xfa,0xcc,0x99,0x8d,
+ 0xe8,0xa9,0x78,0x28, 0x24,0xad,0x89,0x8b, 0xd6,0xeb,0xbc,0xc9, 0x97,0xd4,0x11,0x6e,
+ 0xc0,0x6b,0xeb,0xed, 0x5a,0xa4,0xa7,0xce, 0xce,0x57,0x46,0xaf, 0x76,0x54,0x17,0xae,
+ 0xb7,0x4b,0x29,0xa5, 0x6d,0xc4,0x41,0x7c, 0x9d,0x62,0x91,0xdc, 0x10,0xa0,0xc7,0x8b,
+ 0xba,0xaf,0xb9,0xd6, 0x8f,0xdf,0xd5,0x91, 0x0e,0x09,0x13,0xe4, 0x6c,0x7f,0x38,0x20,
+ 0x6a,0xae,0xf1,0xc6, 0x7b,0xe9,0x48,0x54, 0x59,0x72,0x56,0xfb, 0xfb,0xce,0x61,0x58,
+ 0x2b,0x98,0x3f,0x99, 0x5b,0xd5,0x5f,0xf4, 0xff,0x6c,0x39,0x1d, 0x64,0x6b,0x31,0xca,
+ 0x3f,0xdb,0x36,0xee, 0xf7,0xd1,0x84,0xa7, 0xda,0xba,0x4d,0x56, 0x1a,0x22,0x37,0x31,
+ 0x97,0x61,0xeb,0x3c, 0xe7,0x42,0x38,0xfb, 0x55,0x8c,0xe9,0xd4, 0x3b,0xbf,0xc1,0xe5,
+ 0x94,0x2f,0xc7,0xf1, 0xa9,0x8d,0x75,0x03, 0x3f,0x1b,0x18,0x12, 0xe9,0x5a,0x65,0x62,
+ 0x26,0xb6,0x78,0xf6, 0x40,0xc1,0xe0,0xa0, 0xc4,0xff,0xe6,0x4d, 0x7e,0xc1,0xa3,0x07,
+ 0xab,0xcc,0xc4,0x96, 0x1f,0x6f,0x9a,0xc5, 0xba,0x55,0xe4,0x1d, 0x75,0x32,0x94,0x7e,
+ 0xf7,0x5f,0xc4,0x8a, 0xed,0x7e,0x2b,0x5c, 0x24,0x79,0x9c,0x98, 0x24,0xd1,0x7b,0xe2,
+ 0xc9,0x79,0xa6,0xde, 0xfd,0xe4,0x35,0xff, 0x5c,0x8a,0xa8,0x76, 0xfe,0x25,0xd6,0x81,
+ 0x84,0x4d,0x2b,0x0c, 0xb3,0x35,0x53,0x9c, 0x6d,0xb4,0x01,0x17, 0xd3,0xf0,0x2b,0x4b,
+ 0x32,0xf6,0xcf,0x25, 0x85,0xb3,0xfd,0xda, 0xd8,0xb6,0xa1,0x3a, 0x99,0x8f,0x41,0xe8,
+ 0xb2,0x3a,0x44,0x92, 0xc9,0x25,0x21,0x19, 0xfa,0xed,0x6d,0x68, 0x83,0x4b,0x14,0xb3,
+ 0x19,0x96,0xca,0x7e, 0x27,0x63,0xc1,0xee, 0xf1,0x3c,0xed,0x6f, 0xc1,0x04,0x1e,0xf1,
+ 0x6e,0xff,0x87,0x99, 0xe6,0xb4,0xbe,0x6c, 0xe6,0x3a,0x87,0x5e, 0x90,0xc1,0x4b,0x1e,
+ 0xbe,0xf1,0xbf,0xac, 0xd0,0x81,0x04,0x52, 0xa6,0x6f,0x2f,0x9c, 0x57,0x28,0x3e,0x42,
+ 0xaa,0x24,0x16,0xa1, 0x53,0x98,0x15,0x97, 0x01,0x11,0x9d,0x2e, 0x18,0x1e,0xb0,0x15,
+ 0x33,0x72,0x9f,0x1f, 0x73,0x9f,0xf6,0xb0, 0xd5,0x98,0x0c,0xa7, 0xc4,0xef,0xd9,0xe2,
+ 0xed,0xb4,0xeb,0x80, 0xec,0xed,0xf1,0xb5, 0x14,0x27,0xb1,0x6c, 0xce,0x27,0xe6,0xf5,
+ 0xe1,0x2a,0x3f,0x56, 0x8b,0x63,0x74,0x6f, 0x57,0x1f,0x5e,0x9c, 0x8b,0x0c,0x24,0x43,
+ 0x04,0x44,0x6f,0x08, 0xc6,0x07,0x06,0x1b, 0x5d,0x42,0x31,0x7e, 0xa0,0xcb,0x34,0xd4,
+ 0xdc,0x31,0x95,0xd8, 0xa1,0x8f,0xc1,0x5d, 0x25,0xdd,0xd9,0x5a, 0xf2,0xb9,0x41,0xbd,
+ 0x8b,0xc9,0xde,0xc8, 0xda,0xe3,0xdb,0xb2, 0x6d,0x1f,0x5f,0x9b, 0x19,0xee,0x1d,0xbd,
+ 0xed,0x1a,0x90,0xa7, 0x22,0x8b,0xcf,0x58, 0xd2,0xf9,0x5d,0x07, 0x73,0x73,0x93,0xab,
+ 0xcb,0x23,0xa4,0xf8, 0xa9,0xf3,0x13,0xdf, 0x14,0x4d,0x06,0xb8, 0x20,0x0b,0x7b,0xa4,
+ 0x56,0x21,0x35,0xf8, 0xea,0x21,0xfe,0xa4, 0x91,0x81,0x92,0x07, 0xd8,0x43,0xfe,0xfc,
+ 0x2d,0x86,0xee,0xe6, 0x8f,0x61,0x75,0x71, 0x19,0x12,0xcf,0xcd, 0x9c,0xf7,0x1d,0x5d,
+ 0x69,0xd2,0x1d,0x79, 0x03,0x89,0x82,0x1f, 0x85,0xb6,0xc5,0x9c, 0x4a,0x8f,0xe3,0xf8,
+ 0xf9,0xf5,0xff,0x7d, 0x2e,0x29,0xdc,0x5c, 0x95,0x4d,0x7e,0x4e, 0x62,0xa3,0x67,0x5a,
+ 0x70,0xcb,0x17,0x09, 0x7e,0xdb,0xdd,0xca, 0x34,0xb7,0xb2,0x66, 0x74,0x08,0x99,0xd5,
+ 0xc7,0x41,0x8e,0xf9, 0xba,0x38,0x74,0x9a, 0x0d,0x06,0x7c,0x44, 0x38,0x5e,0xef,0xe1,
+ 0x52,0x21,0x36,0xed, 0x92,0x89,0xf6,0x36, 0x03,0x93,0x64,0x36, 0x5b,0x2a,0xda,0x59,
+ 0xf2,0x85,0xeb,0xda, 0xba,0xed,0x62,0x27, 0x38,0xd7,0x95,0xd7, 0xce,0xa1,0x6c,0xb6,
+ 0x6c,0xe4,0x47,0x2d, 0x5f,0x0e,0x1c,0x14, 0x1a,0x33,0x6f,0x36, 0xb0,0xeb,0xfe,0x23,
+ 0x0c,0x68,0xf6,0xf2, 0x24,0xc2,0x73,0xc4, 0xee,0x61,0xeb,0xd1, 0xed,0xe4,0x79,0xe9,
+ 0x49,0xc7,0x70,0x17, 0xee,0xae,0x46,0x25, 0xbf,0x8e,0x12,0x9d, 0x37,0xa1,0x33,0x6c,
+ 0x20,0x73,0x35,0xb1, 0xb9,0x48,0xf2,0xd7, 0xfb,0x90,0xe8,0x65, 0xcf,0x95,0xd4,0x23,
+ 0xbe,0x5d,0x1f,0xdc, 0x83,0x0f,0x92,0x6c, 0xdb,0x54,0xc7,0xf5, 0x92,0xcc,0x58,0x2b,
+ 0x71,0xc8,0x94,0x07, 0x6d,0x1a,0x63,0x0d, 0xb9,0x0c,0xc2,0xdb, 0xa5,0x52,0x10,0x58,
+ 0x27,0x2b,0x34,0xb7, 0xbf,0xdd,0x1f,0xfb, 0x9d,0x42,0x00,0xcf, 0x38,0x1f,0x60,0x0c,
+ 0x3d,0x6f,0xb3,0x64, 0xe5,0xff,0x1c,0x2d, 0xf6,0xf3,0xef,0xca, 0x87,0xee,0x18,0x71,
+ 0x9e,0xb9,0x9d,0xd3, 0x0d,0x3b,0x5a,0xb6, 0x5f,0xb7,0x8f,0x0a, 0xda,0x3c,0x82,0xd5,
+ 0x4c,0xeb,0x2e,0x73, 0x19,0x2f,0x69,0x94, 0x08,0xd6,0xac,0x20, 0x06,0xbc,0x87,0x7e,
+ 0xc9,0xfe,0x97,0xf0, 0x62,0xf3,0x78,0xf3, 0xf6,0xf8,0xe2,0x2d, 0xb5,0xde,0xcb,0x00,
+ 0xe2,0xa9,0x68,0x01, 0xf0,0xff,0x1f,0x43, 0xea,0x7f,0x2d,0x15, 0xf9,0x4c,0xdf,0x73,
+ 0x9d,0xf4,0x5f,0x9f, 0xf2,0x81,0x2b,0xfd, 0x77,0x0b,0xd5,0xdb, 0x29,0x5b,0x79,0x05,
+ 0xf0,0x68,0x14,0xd6, 0x12,0x57,0x61,0xaf, 0xc7,0x0b,0x68,0xa2, 0xb3,0xa2,0xf2,0x3e,
+ 0x63,0x48,0xfa,0x8c, 0xac,0x1a,0xeb,0x15, 0xb7,0xea,0xdd,0xa0, 0xe8,0xcb,0x54,0xb3,
+ 0xf8,0xff,0x5c,0x1c, 0x6f,0xb1,0x49,0x7b, 0xf8,0xae,0x8b,0xa3, 0x56,0xcb,0xff,0xf7,
+ 0xe2,0xf9,0xf0,0xe6, 0xb9,0x2d,0x3d,0x1a, 0xba,0xcb,0x65,0x4c, 0x34,0x42,0x5b,0x2c,
+ 0xef,0x3f,0xdc,0xd1, 0xa6,0xe4,0xec,0x7f, 0xe2,0x75,0xd3,0x58, 0x2c,0xaf,0xd2,0xc6,
+ 0x01,0xde,0xc3,0xfa, 0xb8,0x50,0x60,0xb2, 0x36,0x4f,0x12,0x6a, 0x01,0x99,0x27,0x87,
+ 0x68,0xba,0x5b,0x4a, 0xf6,0x10,0xcb,0xc9, 0x34,0x40,0x57,0x4d, 0x81,0xdb,0x60,0x7c,
+ 0x8c,0x7b,0x58,0x34, 0x3f,0x24,0x6e,0xcf, 0xf7,0xbe,0x77,0xf5, 0xee,0x35,0x8f,0xf4,
+ 0xe1,0xd1,0x9f,0x15, 0x4e,0xa1,0xb1,0x20, 0x40,0x28,0xa0,0x7c, 0xd5,0x64,0x26,0x9b,
+ 0xe2,0xc6,0x6a,0x55, 0x44,0x31,0x80,0x59, 0x6d,0xd1,0x67,0xf4, 0x36,0x01,0xb9,0x11,
+ 0x88,0x6a,0xca,0x32, 0xd4,0x20,0x7e,0x7c, 0x49,0x9b,0x6e,0xdf, 0xa4,0x77,0xbd,0xdc,
+ 0x24,0x93,0x45,0x96, 0x1a,0xa9,0x10,0x3e, 0xbd,0xc0,0x9b,0x1b, 0x13,0x69,0xb6,0x99,
+ 0x11,0x71,0x20,0xd2, 0xa4,0xa9,0xee,0xba, 0x7e,0xa3,0xac,0xf6, 0xbc,0x3f,0x70,0x58,
+ 0xeb,0x0b,0x56,0xb1, 0x4c,0x4a,0x86,0xb8, 0x3b,0x1e,0xc7,0xca, 0x37,0xf5,0x2c,0x8c,
+ 0xb0,0x7c,0x38,0xa7, 0x7c,0xb9,0xec,0xcd, 0x0f,0x15,0x72,0x18, 0x0c,0xf7,0x6d,0x96,
+ 0x85,0x63,0x2a,0x21, 0xc8,0x79,0xa0,0x46, 0xdc,0xc9,0x45,0xfc, 0x1f,0x03,0xac,0x43,
+ 0x56,0x39,0x23,0x96, 0xf8,0xf0,0x92,0xb8, 0xe5,0x5a,0xc0,0x54, 0xfe,0x69,0x73,0x53,
+ 0xe8,0x87,0xa7,0x44, 0xe7,0x58,0x84,0x68, 0xff,0xf2,0xe3,0x26, 0x8b,0x74,0x2a,0x18,
+ 0x86,0x92,0x68,0xd7, 0x4b,0x96,0x8a,0x03, 0xd8,0x87,0x62,0xc0, 0xc4,0x5a,0xf2,0x71,
+ 0x12,0x3f,0x1e,0x6d, 0x52,0x78,0x39,0x58, 0x16,0xa9,0x07,0x24, 0xc7,0x66,0x96,0xc2,
+ 0x59,0x29,0xfc,0x17, 0x34,0x80,0xcb,0x11, 0x84,0x07,0x19,0x03, 0x42,0xad,0x25,0x06,
+ 0xf1,0x9e,0x31,0x55, 0xbd,0x4f,0xa1,0x28, 0xf9,0xd6,0x2d,0x7e, 0x99,0xc5,0xf1,0x40,
+ 0x36,0xaa,0x2b,0x78, 0xa4,0x98,0xd1,0xe2, 0x85,0x14,0x8b,0x86, 0x99,0x71,0x49,0xfb,
+ 0x21,0x06,0x5a,0x4b, 0x57,0x54,0x0d,0x28, 0x46,0xd6,0xfd,0x07, 0x53,0x0f,0x85,0xb4,
+ 0x49,0x99,0x1a,0xc8, 0x26,0x70,0xbf,0x8a, 0x78,0x12,0x83,0xab, 0xed,0x16,0x83,0xcd,
+ 0x51,0x0a,0x75,0xad, 0xb1,0xd8,0x05,0xa8, 0x8b,0x9d,0xea,0x80, 0xc4,0x41,0xa8,0x81,
+ 0xd0,0x9c,0xc9,0xae, 0x15,0x63,0xd1,0xbd, 0xd4,0xc0,0xa1,0x08, 0xd4,0x3d,0x69,0x20,
+ 0x80,0x5a,0xe1,0x4e, 0x6c,0x89,0x88,0xac, 0x34,0x83,0x60,0x35, 0xf7,0x7c,0x27,0x12,
+ 0x93,0xb6,0xc6,0x4a, 0x80,0x2c,0x26,0xe6, 0xb2,0x52,0xe0,0x53, 0x60,0xa6,0xd4,0x3b,
+ 0x00,0x94,0x78,0xbd, 0x3c,0x55,0x1b,0xf4, 0x64,0x9f,0xda,0x2f, 0xea,0xb0,0x6c,0x02,
+ 0x0f,0xc4,0x71,0xe1, 0xd8,0xa9,0x0e,0x56, 0x06,0xd9,0x07,0x19, 0xdf,0x85,0x49,0x21,
+ 0x42,0x9a,0x9b,0x1f, 0x62,0x31,0xeb,0xe6, 0xf4,0x7f,0x2b,0x19, 0xaa,0x7c,0x85,0x75,
+ 0x6c,0x10,0xc4,0xc0, 0x51,0xd3,0x2e,0xb2, 0xa6,0xce,0xbb,0xde, 0x2b,0x34,0xb9,0xff,
+ 0x23,0x2f,0x7c,0xbb, 0xec,0xb1,0xd4,0xe5, 0x14,0xac,0x9f,0xa0, 0x2a,0x19,0x24,0xf5,
+ 0x94,0x2c,0x3b,0x67, 0xb5,0x66,0x6f,0xca, 0xb2,0xdf,0xeb,0xb8, 0x5b,0xac,0x9a,0x1b,
+ 0x0a,0x1a,0x3e,0x45, 0x6d,0x3c,0xa1,0x0e, 0xc0,0x6a,0x75,0xb3, 0x2f,0x64,0x4a,0x9a,
+ 0xa9,0xf2,0xa8,0x35, 0xfc,0x74,0x44,0x3d, 0x9b,0x3e,0xb4,0x38, 0xec,0x87,0x1a,0x0f,
+ 0xa0,0x4d,0x9f,0xb7, 0x87,0xe6,0xec,0x62, 0xc9,0x98,0xcc,0xa2, 0x6b,0x3e,0x6f,0xc9,
+ 0x98,0x23,0xc9,0x52, 0xa1,0x0c,0x2a,0x67, 0xde,0x07,0x52,0x96, 0x78,0xf6,0xb7,0x70,
+ 0xa6,0x55,0xa8,0x29, 0xc6,0x62,0xb4,0xd7, 0x11,0xea,0xe3,0x1e, 0x45,0x9b,0x5b,0x97,
+ 0xb2,0x22,0x54,0xb3, 0x73,0x8a,0x13,0xb7, 0x42,0x66,0xb5,0x27, 0x18,0xe6,0x92,0x0a,
+ 0x4a,0xc1,0x04,0xac, 0xcd,0xfa,0x38,0x10, 0x13,0x35,0x77,0xf8, 0xd8,0x6b,0x2d,0xe7,
+ 0xa4,0x23,0x5d,0x71, 0x5b,0x91,0xcd,0xa0, 0xbb,0x77,0x7e,0x45, 0x04,0xb1,0x5a,0xc1,
+ 0xc7,0x8c,0xa6,0x7f, 0x23,0x5a,0x56,0x68, 0x5f,0xf7,0x56,0x50, 0x85,0x68,0x61,0xad,
+ 0x68,0xe1,0x33,0x31, 0x84,0xda,0x16,0x3b, 0x2d,0xb0,0xd2,0xb1, 0x49,0x89,0x6c,0xd8,
+ 0x23,0x3a,0xc4,0xb3, 0x18,0x30,0x06,0xc4, 0xeb,0x75,0x72,0xa0, 0xc4,0x12,0x0f,0x23,
+ 0x79,0x09,0xf3,0x9b, 0xd8,0x0c,0xc6,0xc0, 0xaa,0xce,0x35,0xa3, 0xaa,0x36,0xe6,0x09,
+ 0xfb,0x7a,0xb6,0x97, 0x73,0xc7,0xce,0x2c, 0x02,0x33,0xe5,0x48, 0xd3,0xcd,0x21,0xc8,
+ 0x44,0x63,0xab,0x33, 0x61,0xb7,0x62,0x27, 0xb2,0xbe,0x6c,0xe4, 0x98,0x39,0xfd,0x32,
+ 0x1e,0x0c,0x68,0xcf, 0xeb,0xc1,0x90,0xdc, 0xf0,0xd0,0xfe,0xac, 0x16,0x23,0xfc,0x2c,
+ 0xb0,0xbd,0x7e,0x92, 0xfe,0xc4,0xff,0x84, 0x21,0x01,0x9b,0x9a, 0x94,0x99,0x64,0xdc,
+ 0xa7,0xb8,0x4b,0xfd, 0xbe,0x3e,0x35,0x75, 0x9b,0xef,0x3b,0xac, 0xde,0xe1,0x13,0x7a,
+ 0x3a,0x79,0x7e,0xe3, 0x7d,0xd5,0x57,0xda, 0xb2,0x70,0x2d,0xb7, 0x72,0x63,0x51,0x21,
+ 0xbd,0xe5,0xa1,0x0b, 0x84,0xce,0x61,0xdc, 0x3c,0xa7,0xa1,0x96, 0x6c,0xdb,0x6a,0x75,
+ 0xae,0xb2,0xa4,0x1c, 0xaf,0x25,0x89,0x20, 0xc4,0x68,0x5c,0xce, 0xb8,0x80,0x2e,0xf3,
+ 0x20,0x46,0x75,0x4b, 0x3b,0x74,0xdb,0x15, 0xc5,0x46,0x73,0xaa, 0xb9,0x4d,0xbc,0x78,
+ 0x57,0x15,0xbe,0xca, 0xb6,0x52,0xa4,0xa1, 0x52,0x0b,0x75,0xc3, 0x2e,0xd2,0xb7,0xc2,
+ 0x41,0xed,0x4b,0x51, 0x6f,0x48,0x36,0xee, 0x82,0x92,0x02,0x73, 0x1a,0x77,0x7d,0x23,
+ 0x40,0xb2,0x92,0x06, 0xe3,0xcc,0x18,0x5a, 0x8b,0xdb,0x02,0x6c, 0x72,0x83,0x8e,0x05,
+ 0x39,0xa1,0xe0,0xc0, 0x21,0x4f,0x35,0xc0, 0xf2,0x21,0x58,0x2a, 0x76,0x0d,0x29,0xc3,
+ 0x79,0x5e,0xc2,0xb6, 0x67,0x25,0x39,0xe3, 0x7b,0x1e,0x44,0xe4, 0x36,0x85,0x08,0x6d,
+ 0x7f,0x1a,0xf5,0xfe, 0xab,0xff,0x6e,0x06, 0x0a,0xf9,0x09,0x6d, 0xbb,0x49,0xd0,0xdf,
+ 0x48,0xab,0x9b,0x83, 0x8b,0x5d,0x17,0xc6, 0xa0,0xf4,0x61,0x9a, 0x9e,0x7f,0x01,0x5f,
+ 0x14,0xc5,0x1c,0xae, 0x99,0xa8,0x96,0x29, 0xe1,0xf3,0x0d,0xf7, 0x87,0x1b,0xbd,0x0e,
+ 0xc4,0x3e,0x85,0x82, 0x13,0x2a,0xda,0xed, 0x10,0x98,0xf5,0x1b, 0x38,0x7f,0x87,0x70,
+ 0x6e,0xa0,0x7a,0x78, 0x75,0xf6,0x0e,0x4f, 0x52,0xbb,0x44,0xab, 0x91,0x29,0x1e,0xa2,
+ 0x2a,0xf8,0x7d,0x93, 0x11,0xb5,0x52,0x84, 0x13,0xdd,0x21,0x23, 0x44,0x2f,0x8d,0xa3,
+ 0x81,0xce,0xa2,0xc5, 0x1a,0x7c,0xc1,0xbb, 0x5f,0x3a,0x8f,0xe6, 0xa3,0xb6,0x74,0x27,
+ 0x28,0x8f,0x6f,0xf9, 0x30,0xa7,0xd4,0xe3, 0x49,0x7c,0x3a,0xe8, 0x48,0x16,0xaf,0x8c,
+ 0x81,0x9f,0x90,0x8b, 0x28,0xfb,0x2e,0x4e, 0x7b,0x7d,0x86,0x72, 0x7a,0x5e,0x0e,0x9c,
+ 0x0a,0x12,0xf5,0x34, 0x23,0x47,0xe1,0xdb, 0x78,0x8b,0xb7,0x7d, 0x85,0xf0,0xc3,0x31,
+ 0xad,0x8b,0xcf,0x2f, 0x59,0x08,0xa9,0xda, 0xfa,0xa9,0xed,0xb4, 0x46,0x6c,0x05,0xd2,
+ 0x3d,0x95,0xcc,0xa3, 0x0f,0x5a,0xd6,0xdc, 0xa6,0xbf,0x73,0x8c, 0xec,0x17,0xd3,0x2c,
+ 0xb0,0x81,0xaf,0x87, 0xfb,0x90,0xab,0xc6, 0xe7,0x48,0x14,0x19, 0x4d,0x19,0xc1,0x7a,
+ 0xab,0xf0,0xdf,0xad, 0xce,0xdc,0x3e,0xe9, 0x72,0xb1,0xbf,0x07, 0x22,0x5b,0x68,0xac,
+ 0x18,0xa7,0xdc,0x94, 0x8a,0x14,0xf1,0x61, 0x50,0xe7,0xdb,0xb5, 0x3e,0x32,0xf3,0xca,
+ 0xd6,0x11,0xd9,0x0c, 0x62,0xb7,0x99,0x27, 0x7c,0x3e,0xc6,0x1a, 0xeb,0xe9,0x93,0x2e,
+ 0x73,0xef,0xd2,0x4f, 0x35,0xdb,0x3b,0x29, 0xf5,0x4e,0xf4,0xac, 0xc7,0xed,0xe5,0x2c,
+ 0xee,0xf9,0xd7,0x84, 0xd3,0x05,0xbb,0x4a, 0x2a,0xc9,0x3f,0x5d, 0x45,0xa4,0x69,0x69,
+ 0x34,0xeb,0xdc,0x0b, 0x95,0xb4,0xc3,0xd7, 0xe7,0x9a,0xf4,0xce, 0xe7,0x44,0xe6,0x4e,
+ 0x4b,0x06,0xbb,0x8c, 0xfb,0x8a,0x50,0x95, 0x2e,0x05,0x73,0x1d, 0x34,0x68,0x62,0xf0,
+ 0xcd,0xb0,0xef,0x62, 0x9b,0xf7,0x73,0x69, 0x8f,0x6b,0x1c,0x3a, 0x9d,0xff,0x27,0x36,
+ 0xd9,0x58,0xd7,0x10, 0xf2,0x2f,0x99,0x1b, 0x48,0xfa,0xd6,0xcb, 0xcc,0x40,0x5b,0x02,
+ 0xde,0xd2,0xe5,0x85, 0xae,0xc8,0x0c,0xd8, 0x1e,0xd9,0x02,0x21, 0x92,0xc3,0x03,0xb4,
+ 0x01,0x31,0x83,0x07, 0xcb,0x2f,0x88,0xa4, 0x2d,0x40,0x8e,0x07, 0x4f,0x49,0x51,0xd1,
+ 0x51,0x8d,0xb9,0x00, 0xc4,0x36,0xed,0x9f, 0x84,0x5c,0xb4,0x55, 0xe9,0xbc,0x87,0xb4,
+ 0x23,0x99,0x04,0x87, 0xe3,0x1f,0x09,0x80, 0xb2,0x7f,0xd2,0x94, 0x68,0x99,0xca,0xb9,
+ 0x8b,0x0a,0xa5,0x44, 0xe2,0xf1,0x93,0x42, 0x52,0x01,0x5e,0xe5, 0x6c,0xf5,0x47,0xda,
+ 0xae,0xda,0x4d,0x72, 0xfa,0x3d,0x62,0x25, 0xbd,0x0c,0xc7,0x1a, 0x0b,0xaf,0x8b,0x33,
+ 0x59,0x65,0xc6,0x76, 0x1a,0x90,0x59,0xda, 0xf1,0xda,0x63,0xf0, 0x7c,0xf9,0xbd,0xdc,
+ 0x6d,0xae,0xee,0x86, 0xef,0x7f,0x68,0xeb, 0x68,0xe6,0x48,0x9e, 0xd3,0xe3,0x2d,0x1c,
+ 0x53,0xbd,0xca,0x66, 0x6b,0xff,0x83,0xbe, 0x9f,0x94,0x2d,0xd9, 0xe0,0x57,0x69,0x12,
+ 0xce,0x3b,0x10,0x15, 0x4e,0xcd,0x8e,0xe6, 0x1e,0x7d,0x2e,0xea, 0xeb,0x2d,0xd1,0xc7,
+ 0x53,0xd2,0x4f,0x7f, 0xf4,0xef,0x54,0x37, 0x71,0x64,0x35,0xf5, 0xc9,0xc5,0xb2,0x3e,
+ 0x27,0xe2,0xfb,0x15, 0x1e,0xe2,0xa1,0xa5, 0x46,0x36,0x9b,0xc6, 0xcd,0x40,0x68,0xac,
+ 0x87,0x11,0x90,0x7d, 0xb6,0xf2,0x93,0x87, 0x6e,0xe8,0xef,0x5a, 0x8b,0x34,0x38,0xdd,
+ 0x77,0x3e,0x6f,0xe0, 0x96,0x4b,0xbb,0x53, 0xb6,0xf9,0xe3,0x19, 0x73,0xf6,0xd7,0x29,
+ 0x55,0x15,0xff,0x2e, 0x2e,0x5b,0x8a,0xbf, 0x60,0xae,0x24,0x43, 0x44,0xb5,0xf7,0x1d,
+ 0x29,0xa6,0xb1,0x6d, 0xf9,0x7c,0x40,0xc3, 0x7b,0x2e,0xfc,0xc1, 0x3c,0xb4,0x9f,0x96,
+ 0x21,0x3c,0x87,0x40, 0x45,0x96,0x70,0x9d, 0xc0,0x6c,0xe7,0x38, 0xe9,0x9c,0xb0,0x88,
+ 0x28,0x42,0x53,0x6c, 0x15,0x10,0x3e,0xba, 0x15,0x7b,0x9f,0x27, 0x6d,0x14,0x22,0x65,
+ 0x3c,0xbe,0x8e,0x43, 0x11,0xf6,0xdb,0x21, 0xdd,0xf6,0x5e,0xcf, 0x33,0xe0,0x6b,0x3e,
+ 0x9c,0x4e,0xd7,0x0f, 0xdc,0xc0,0xd8,0xe5, 0x66,0x61,0x25,0xee, 0x50,0xe4,0x61,0xc3,
+ 0x6b,0xbe,0xce,0x6e, 0x1e,0x84,0xc7,0x6d, 0x5e,0xee,0x4a,0x52, 0x7f,0xbb,0xe3,0x43,
+ 0x1d,0x53,0xa8,0xf5, 0xe7,0x94,0xf9,0xdb, 0x7b,0x9a,0xb3,0x9a, 0xf7,0xfb,0x24,0x68,
+ 0xca,0xd5,0x4e,0x34, 0xc6,0x3e,0xcf,0x22, 0xbf,0x11,0xe9,0xe7, 0x1d,0x7c,0xd3,0x6c,
+ 0xe2,0x95,0x73,0x2c, 0x9f,0x76,0x0f,0xe4, 0x80,0xb9,0xcf,0xa5, 0x29,0x16,0xe2,0x1b,
+ 0xdd,0x84,0xf0,0xc8, 0xc5,0x74,0x72,0xd2, 0x0e,0x19,0x36,0x7c, 0x75,0xbe,0x7f,0x57,
+ 0x89,0xde,0x97,0x97, 0xd1,0x39,0x6c,0xc6, 0x4f,0x32,0x95,0x77, 0x76,0x5c,0xca,0x9d,
+ 0xdd,0x34,0x8c,0x86, 0x3f,0x9d,0xb2,0x14, 0x9a,0x4e,0x9f,0x4f, 0xae,0xf9,0x4a,0x4d,
+ 0xd6,0xcd,0x6d,0x5e, 0x14,0x99,0xed,0xf1, 0x1c,0x42,0x8d,0x8f, 0xbd,0x0e,0x47,0x3f,
+ 0xcb,0xcc,0xc1,0xad, 0xcf,0x85,0x57,0x17, 0xa6,0x8f,0x8f,0x91, 0x44,0x8f,0x0f,0xb6,
+ 0x8d,0xe7,0x07,0x77, 0xb8,0x67,0x0b,0x95, 0xb5,0x95,0xcf,0xf8, 0xd4,0xce,0xc1,0xce,
+ 0xf8,0x15,0x6c,0xca, 0x45,0xcb,0x36,0x0d, 0xa0,0x6c,0xdf,0x1c, 0x1c,0xc2,0x4f,0x17,
+ 0x47,0xc6,0xe1,0xa9, 0x97,0x43,0x61,0x0b, 0x2b,0xef,0x66,0xbb, 0x9d,0xba,0x3c,0x1c,
+ 0x03,0xc2,0x2e,0x31, 0xf4,0x76,0x78,0x56, 0x11,0x66,0x9c,0x7e, 0x2f,0x93,0xc2,0x9e,
+ 0x32,0x5b,0x8b,0x35, 0x79,0x09,0x44,0xda, 0xd7,0x43,0x2e,0xcc, 0xc9,0xb6,0x60,0x8c,
+ 0x6f,0x07,0x17,0x93, 0x3d,0x20,0x58,0xeb, 0x45,0x09,0x9d,0xc5, 0x11,0xd4,0x76,0x16,
+ 0xc8,0x87,0xb1,0xad, 0xe8,0xeb,0x23,0x8b, 0xa3,0x96,0xd5,0x94, 0xb7,0xc8,0xea,0x2a,
+ 0xfb,0x2e,0x7f,0x1a, 0xcb,0xa4,0xc7,0x17, 0x2c,0x96,0x57,0x13, 0x3d,0xbe,0xe3,0x5b,
+ 0xd5,0xb6,0x76,0xc2, 0x12,0x5a,0x7b,0xab, 0x96,0x97,0xa5,0x1b, 0xd5,0x42,0xab,0xe1,
+ 0x35,0x57,0xdc,0xf2, 0xe5,0xe8,0xa0,0xa3, 0x78,0x19,0x7d,0x73, 0x07,0xf4,0x1c,0x9c,
+ 0x8a,0x40,0x7b,0x31, 0x36,0x5e,0xaa,0xef, 0x29,0x5b,0x8e,0x61, 0x84,0x7b,0xcf,0x01,
+ 0x3f,0x94,0x04,0x94, 0x10,0x8d,0xa7,0xba, 0x2c,0xc6,0xbf,0xe3, 0x0a,0x02,0x04,0xbe,
+ 0x42,0x26,0x74,0x7f, 0x55,0xcb,0x38,0x63, 0xd8,0x2f,0x29,0x90, 0x35,0xff,0x5e,0x33,
+ 0xe9,0x0e,0x1f,0x6e, 0x29,0xf6,0xa6,0x61, 0xc6,0x83,0xdc,0xed, 0x41,0xce,0xdc,0xe4,
+ 0xe5,0x78,0x4d,0x25, 0xd3,0x26,0xc5,0xaa, 0xc5,0xa6,0x43,0x97, 0x3a,0xfd,0x5b,0xbb,
+ 0xd7,0x31,0x3a,0xbc, 0x95,0x0c,0x8d,0xd6, 0x8a,0xeb,0xc1,0x80, 0xb6,0x4e,0x36,0x97,
+ 0x51,0x5f,0xb0,0xdc, 0x69,0xb5,0x6d,0x92, 0xda,0x37,0xdb,0x5b, 0xd3,0x5f,0xaa,0xeb,
+ 0x2d,0xb2,0xd9,0xf2, 0xde,0x9f,0x34,0x9e, 0xc7,0x37,0x63,0x61, 0xba,0x64,0x9e,0x8f,
+ 0x5a,0x9e,0x6b,0x35, 0x0a,0xc5,0x85,0x9e, 0x81,0xbc,0xbe,0x21, 0xd3,0x97,0xf2,0x7b,
+ 0x1f,0x2b,0x37,0xaf, 0xbc,0xd2,0x59,0x4d, 0xc3,0xfe,0xb7,0x63, 0x97,0x3f,0x9d,0xbf,
+ 0x32,0x56,0xb3,0xba, 0xc0,0xb6,0x8f,0x42, 0x6b,0x34,0x22,0xcd, 0x25,0x2f,0x48,0x0b,
+ 0xaa,0x6c,0xc6,0xd0, 0xb2,0x02,0x3f,0x5b, 0x83,0x03,0x8f,0xea, 0x4e,0x3b,0xd7,0x79,
+ 0x39,0xf7,0x4f,0x47, 0x33,0x20,0xe7,0x37, 0xab,0x81,0xca,0xed, 0x60,0xf2,0xb7,0xda,
+ 0x1a,0xdb,0x0e,0xde, 0xa3,0x83,0x78,0xd2, 0x6c,0x83,0xb9,0x13, 0xbc,0x75,0xb8,0x3e,
+ 0x2b,0x7c,0x73,0x1b, 0x22,0x36,0x47,0x0f, 0x74,0xf4,0x7a,0xf6, 0x0d,0x88,0x0d,0x2c,
+ 0x2e,0xc9,0x38,0x7c, 0x52,0x98,0xad,0x38, 0x70,0xf0,0x4c,0x62, 0xd4,0x2b,0x4f,0x27,
+ 0x4d,0xbc,0x8c,0x5d, 0x1b,0x9e,0xce,0x60, 0xa4,0x32,0xf1,0xbb, 0x5d,0xa6,0xcb,0x81,
+ 0x0f,0x43,0x07,0x23, 0x86,0xed,0xa5,0xc6, 0x71,0xa2,0x52,0xbb, 0x59,0xa0,0x81,0x19,
+ 0xad,0x8e,0xb6,0x61, 0xbb,0x8d,0x8e,0xc5, 0xac,0x28,0x0b,0x6e, 0x40,0x2c,0x23,0x43,
+ 0x17,0x5c,0x3d,0x56, 0x14,0x6e,0xde,0x45, 0x6c,0xb6,0xe3,0x23, 0x3a,0xcc,0x6c,0xf6,
+ 0xa7,0x5c,0x6c,0x65, 0x2b,0xc8,0x00,0xc7, 0x9b,0x58,0x7b,0x27, 0xf5,0x12,0x56,0xca,
+ 0x28,0xc4,0x3a,0xe1, 0xe5,0xf7,0x0d,0x85, 0x06,0xe5,0xd2,0x19, 0x2c,0xbc,0x15,0x1d,
+ 0x62,0x72,0x3b,0x98, 0x35,0x72,0xf2,0x42, 0x36,0x32,0x5b,0x3c, 0x45,0xd4,0xf2,0x0e,
+ 0xb5,0xfc,0x7a,0x2e, 0xa8,0x8c,0x88,0x9a, 0x74,0xdd,0x22,0xdb, 0xae,0x39,0x81,0xb5,
+ 0x39,0xb7,0x4b,0xde, 0xfe,0xfa,0x68,0xd5, 0x1a,0x25,0x6e,0x75, 0x68,0x08,0xc2,0xb2,
+ 0xe8,0x40,0x4f,0xd8, 0x35,0xf2,0xe8,0x1b, 0xca,0x3a,0xa3,0x91, 0x4b,0x41,0x8f,0x3c,
+ 0x43,0xd3,0x88,0xc2, 0xe8,0x96,0x69,0x9b, 0x54,0x42,0xd4,0xd7, 0x5d,0x11,0xbf,0xb9,
+ 0xfa,0xdc,0x7f,0x5d, 0x3b,0xa8,0x4f,0x97, 0xfb,0x65,0x39,0x31, 0x52,0x0d,0xa5,0x22,
+ 0xb5,0x5e,0x17,0x4d, 0xb4,0x92,0xe1,0x6d, 0x2e,0xca,0xa8,0x58, 0x0c,0xfb,0x07,0x6f,
+ 0x1f,0x69,0x66,0x58, 0xc4,0xd5,0x96,0x2b, 0x44,0x46,0xc1,0xc6, 0x65,0xfb,0x17,0x9a,
+ 0xa6,0x12,0xa7,0xfb, 0x37,0x5d,0x6e,0x98, 0xf6,0xc7,0xb4,0x2e, 0xb8,0x4f,0xb3,0xd6,
+ 0xa0,0x7a,0x2e,0x7d, 0x6d,0x7b,0xca,0x66, 0x58,0x66,0xce,0xad, 0xe0,0x60,0x7c,0x12,
+ 0xe4,0x90,0x79,0x0f, 0x6a,0xe1,0x42,0x62, 0xa4,0x77,0x2c,0x8c, 0x07,0x20,0x02,0x3b,
+ 0x36,0x7d,0x24,0x1d, 0x68,0x75,0x49,0x35, 0x33,0x6f,0x8a,0xa0, 0xa4,0xe6,0xce,0xac,
+ 0x8b,0xd5,0x69,0x3f, 0x0e,0x9b,0x0b,0x12, 0xc8,0xfa,0x41,0x3a, 0x2e,0x6f,0xef,0x7b,
+ 0x5f,0x8d,0x64,0x6e, 0x2e,0xde,0x64,0xdb, 0xc2,0xa7,0x13,0x33, 0x82,0xed,0x4d,0xc5,
+ 0xd2,0x78,0x75,0xad, 0xdc,0xbb,0xa2,0xd0, 0x5a,0x44,0x86,0xdf, 0x22,0x82,0x58,0x92,
+ 0xbe,0x4f,0x95,0x38, 0x76,0xd0,0x34,0xf1, 0x7c,0x4e,0x6b,0xaa, 0x62,0xa4,0xae,0x3c,
+ 0xe7,0x7c,0x1e,0x58, 0xec,0xd6,0x99,0xed, 0xcd,0x35,0xb2,0x59, 0xa0,0x44,0x09,0x08,
+ 0xe6,0x9a,0x61,0x16, 0xd5,0x18,0x6a,0x85, 0x4e,0x6e,0xcf,0xa5, 0xc0,0xc1,0xef,0xf8,
+ 0x15,0x63,0x3b,0xf8, 0x72,0x4b,0x31,0xa5, 0xcc,0x6e,0x9b,0xb5, 0x7b,0xfa,0x2a,0x2a,
+ 0xa6,0x06,0x1b,0xb9, 0x06,0x23,0x00,0x6f, 0x47,0x9b,0x38,0x62, 0x6e,0x84,0x30,0xf5,
+ 0x43,0x3b,0xae,0x77, 0x9d,0x3a,0x1d,0xc6, 0x9e,0xc6,0xf6,0x75, 0x65,0x83,0x90,0x46,
+ 0xdc,0xea,0x1e,0x8b, 0x79,0x85,0x43,0x4b, 0x3e,0x64,0xa3,0x6b, 0x3e,0x9d,0x9d,0x38,
+ 0x31,0xf3,0x60,0x99, 0xad,0x87,0xbe,0x65, 0x74,0x86,0xf7,0x2c, 0xe9,0xa1,0x3f,0x2a,
+ 0xfb,0xbb,0xb1,0x85, 0x03,0x6d,0xe6,0xf6, 0x33,0x6d,0xf9,0x3b, 0x8c,0xb1,0x67,0x4e,
+ 0xa8,0x0e,0x65,0x56, 0xca,0x4a,0x4b,0xdd, 0x29,0xcc,0xbd,0xf0, 0xb9,0x9a,0x17,0x74,
+ 0x6a,0xb0,0x85,0xb8, 0x64,0x68,0xcb,0xfe, 0x10,0x60,0xda,0x71, 0x2a,0xb9,0xc1,0xaa,
+ 0xec,0xf2,0x1a,0xbe, 0xca,0x69,0x61,0xe5, 0x35,0x54,0xc7,0x32, 0x72,0x44,0x8c,0xbd,
+ 0x6d,0xbc,0x7c,0xe7, 0x19,0x88,0x51,0xb4, 0x14,0x88,0x88,0x04, 0x09,0x20,0x8f,0x04,
+ 0x84,0x50,0xfd,0x43, 0x8e,0x43,0x88,0x67, 0xe0,0x3d,0xec,0x66, 0xf3,0x33,0xf5,0x32,
+ 0xdd,0x7b,0xcf,0x87, 0x5a,0xb0,0xc6,0xd3, 0x69,0x0b,0x07,0x4e, 0x7c,0x33,0x73,0x9c,
+ 0xfa,0x56,0x06,0x36, 0x53,0x28,0x1b,0xe2, 0x57,0x29,0x03,0xd1, 0xf6,0xfb,0x54,0x77,
+ 0xc8,0x95,0xd4,0x31, 0xc0,0xc0,0x07,0xaf, 0xf8,0xd8,0x17,0x88, 0x2a,0xaa,0x76,0x22,
+ 0x03,0xf6,0x49,0xcc, 0x23,0x36,0xd1,0x59, 0x06,0x59,0x50,0x70, 0x10,0xae,0xfe,0xa1,
+ 0x4d,0x29,0x4a,0x50, 0xee,0x94,0x2c,0xe6, 0x7e,0x09,0xe8,0xce, 0x5f,0xd1,0x5c,0x3a,
+ 0x2f,0x51,0x8f,0x8f, 0xad,0x7e,0x15,0xd5, 0x19,0x56,0xd4,0x54, 0x58,0xce,0x51,0x25,
+ 0xd2,0x19,0xbc,0xfe, 0x2f,0xd6,0x9a,0x4c, 0x84,0x21,0x24,0xb7, 0x43,0x13,0x14,0x31,
+ 0x28,0x52,0xde,0xe9, 0xdd,0xdd,0x91,0xc0, 0x2c,0xf2,0x73,0x1c, 0x0f,0xb9,0xe8,0x94,
+ 0x5b,0xf1,0x2b,0xc0, 0xe2,0x0f,0xf3,0x1f, 0x8e,0x40,0xac,0x9c, 0x1e,0x04,0x3f,0x6e,
+ 0x52,0xd2,0x1b,0xbc, 0x24,0xbc,0xc1,0x36, 0xdf,0xfb,0xf6,0x13, 0x7a,0x6c,0x5d,0x6e,
+ 0x12,0x61,0x41,0x86, 0xf5,0xd2,0xee,0x86, 0x2e,0xf2,0x07,0x5c, 0x2f,0x55,0x02,0x68,
+ 0x5a,0x83,0x71,0xf5, 0xa8,0x70,0xb8,0xea, 0x8f,0xce,0x4b,0x3e, 0x93,0xc8,0x21,0xe9,
+ 0x24,0x0d,0x5d,0x91, 0xb5,0x2f,0xa6,0x09, 0xc7,0xbb,0x7d,0x5b, 0x77,0x49,0xd1,0xa8,
+ 0x6a,0x9e,0xf9,0x3d, 0x05,0x9d,0xaf,0x0f, 0x31,0xdd,0x9b,0x18, 0x34,0x8e,0x19,0x15,
+ 0x69,0x20,0x53,0xf1, 0x15,0x21,0x29,0x89, 0xac,0x87,0xc5,0xa7, 0x0e,0x44,0x92,0x5b,
+ 0xc8,0xdc,0xb9,0x47, 0x78,0xf7,0x6c,0xa3, 0x98,0x28,0xaa,0x9d, 0xc2,0xab,0x86,0xef,
+ 0x6e,0xbe,0xe4,0x9b, 0x06,0xe2,0x28,0xe3, 0xea,0x11,0xb9,0xf4, 0xd2,0x0b,0x21,0x28,
+ 0xd6,0x95,0x68,0x17, 0x0c,0xa6,0xc0,0xdb, 0xc6,0x54,0xf8,0x93, 0x52,0x6f,0x2e,0x4e,
+ 0xf5,0xfd,0x8d,0xf2, 0x8c,0xdc,0x8d,0x85, 0xb0,0xe5,0xd4,0x33, 0x2f,0x7d,0x5b,0x30,
+ 0x5f,0xe3,0xe8,0x56, 0xa4,0xcc,0x84,0x92, 0x87,0x41,0x0f,0xc1, 0xb9,0xdc,0x14,0xc9,
+ 0x70,0xe0,0xf4,0xa8, 0x5e,0x57,0xed,0x8f, 0xe5,0xd4,0x1e,0x34, 0xdf,0x85,0x93,0x4b,
+ 0x44,0x99,0x49,0xa2, 0xfc,0xe0,0x1d,0x06, 0xea,0xf4,0x8d,0xd8, 0x92,0x08,0x6e,0xbf,
+ 0xfd,0x14,0x48,0xb2, 0xb3,0x33,0x37,0xb7, 0x65,0x20,0x82,0x5d, 0xd9,0xa4,0x9e,0x26,
+ 0xdb,0xc1,0xee,0xbd, 0x0c,0x2c,0x9f,0xa1, 0xcf,0x70,0x3e,0x46, 0x3f,0x7a,0xe1,0x75,
+ 0x7c,0x19,0xe6,0x29, 0x05,0xed,0xbc,0xc8, 0x35,0xca,0x92,0xf7, 0x75,0xb8,0xad,0x94,
+ 0x9a,0xb9,0x95,0xc6, 0x67,0x3c,0xc2,0x06, 0x11,0x19,0xac,0x74, 0xce,0xbd,0x9b,0x20,
+ 0xc0,0x69,0xf7,0x87, 0x0c,0x7a,0xda,0x15, 0x92,0xb4,0xf1,0xba, 0xb8,0x7f,0x47,0x8c,
+ 0xed,0x05,0xb9,0xfe, 0x4b,0x0d,0xc7,0x72, 0xa9,0x05,0x39,0xdf, 0x6a,0xcd,0x88,0x7f,
+ 0x83,0x7e,0xbc,0x89, 0x66,0x36,0x3b,0x09, 0xb2,0x62,0xe6,0x27, 0x6a,0xc0,0xc5,0x5b,
+ 0x25,0xd1,0xe0,0xe8, 0x38,0xae,0x29,0xde, 0x9c,0xfd,0x09,0x4d, 0xf2,0xac,0x43,0x0c,
+ 0xcf,0x28,0xa7,0xea, 0x49,0x5f,0x20,0xdf, 0x23,0x5f,0xc5,0xbc, 0x20,0x6a,0xad,0xae,
+ 0x87,0x12,0xc5,0x4f, 0x6f,0x8b,0x46,0x1a, 0xaa,0xb5,0x95,0x0c, 0xc9,0x7b,0x5b,0xb8,
+ 0xb6,0x43,0xf7,0xdc, 0x56,0xc4,0x29,0x67, 0x02,0x95,0xc2,0x9b, 0x86,0xa2,0xa3,0x10,
+ 0xd2,0x54,0x62,0x39, 0x25,0x2e,0xd6,0xa6, 0x55,0x0b,0xa1,0x6e, 0xee,0xe7,0xd1,0xcc,
+ 0xc4,0xb7,0xbd,0x13, 0xb5,0xe9,0x6a,0x7b, 0xaa,0xf3,0x76,0x34, 0x2a,0x68,0x6d,0x8f,
+ 0x08,0x85,0x20,0xac, 0xef,0x09,0xc8,0xc2, 0xf0,0x3a,0xd9,0x3a, 0x5f,0xe3,0xf2,0x18,
+ 0x6b,0x69,0xcb,0x69, 0x56,0x7c,0xe6,0x03, 0xb1,0x23,0x7a,0x66, 0x2c,0x2a,0xcd,0x53,
+ 0xc9,0x23,0xb2,0x32, 0x22,0xc1,0x0b,0x20, 0xa5,0xdb,0x56,0x08, 0x8e,0xec,0xa7,0x5f,
+ 0x8b,0x62,0x6a,0x4c, 0xfa,0x28,0x96,0xde, 0x51,0xbe,0x93,0x5c, 0x29,0x41,0x16,0x55,
+ 0x67,0xcb,0x50,0xd4, 0xe4,0x02,0xa4,0x31, 0x10,0x0f,0xca,0xf0, 0x93,0xaf,0xa8,0x85,
+ 0x44,0x3c,0xcd,0x42, 0xf6,0xef,0x94,0x84, 0x48,0x1c,0xd9,0x08, 0x1d,0xc8,0xd3,0xdf,
+ 0xc9,0xbe,0x3c,0x75, 0xea,0xf6,0xae,0x98, 0xa1,0xe5,0xdc,0xac, 0x06,0xb7,0xec,0x30,
+ 0xbd,0x92,0xe3,0xdf, 0xee,0x23,0x48,0x47, 0x3b,0xf4,0xf9,0xbe, 0x6d,0x7d,0xce,0x9f,
+ 0x98,0x55,0x2b,0xda, 0xe4,0x5d,0xf3,0x07, 0x49,0xb4,0x38,0x23, 0x1d,0x3d,0xbd,0x59,
+ 0xf2,0x97,0x06,0xf2, 0x64,0x4f,0x18,0x05, 0x9e,0xee,0xa0,0xd3, 0x95,0x22,0x34,0x47,
+ 0x46,0x12,0x52,0x5e, 0xe6,0xbf,0x7f,0x73, 0x76,0x1d,0x75,0xf7, 0xcd,0xda,0x3d,0x5f,
+ 0xaa,0x32,0x5f,0x5a, 0x27,0xd4,0x0a,0x02, 0xfe,0x05,0x30,0x4d, 0x7e,0x93,0xa8,0x3e,
+ 0x27,0x2d,0x63,0x22, 0xea,0x9a,0x7a,0x23, 0xf5,0xa0,0x83,0xd4, 0xfb,0x9b,0x8e,0x07,
+ 0x4d,0xf8,0x69,0xea, 0x1a,0x36,0x0e,0xd8, 0xcd,0xd0,0xc0,0xf0, 0x27,0x01,0xf1,0x70,
+ 0xbb,0x79,0xe2,0x3e, 0x71,0x54,0x61,0x4c, 0x0c,0x3c,0x3c,0x1e, 0xdb,0x84,0x9b,0xda,
+ 0x9d,0xba,0xe0,0x3e, 0x58,0x4c,0xb7,0xf5, 0x43,0x98,0xb2,0x6b, 0x49,0x9a,0x01,0x23,
+ 0xfa,0xc2,0x8b,0x91, 0x48,0xee,0xa2,0x75, 0x5c,0x84,0x68,0x65, 0x09,0xa9,0x1b,0x69,
+ 0x54,0x87,0x67,0xc4, 0x47,0x41,0x3d,0xdf, 0x76,0x7d,0x2d,0x97, 0xbf,0x9d,0xb6,0x49,
+ 0xef,0x8d,0xf5,0x0f, 0xc2,0x71,0x8b,0x0b, 0x5f,0xa2,0xfd,0x7d, 0xfe,0xe7,0x67,0xd7,
+ 0x9d,0x5b,0xb9,0x1a, 0x4e,0x82,0xf3,0x87, 0x47,0x51,0x10,0x37, 0xda,0x2c,0x62,0x76,
+ 0x92,0xed,0xf9,0x9d, 0x8d,0x5e,0x05,0x03, 0x39,0xcf,0x61,0xa8, 0x3a,0xff,0x63,0xa9,
+ 0xb7,0xf3,0x75,0x2f, 0xbb,0x6c,0x37,0x11, 0x15,0xbb,0x36,0x47, 0xec,0x2b,0x6c,0xc7,
+ 0xb5,0x29,0x5d,0x9d, 0x06,0x13,0xdc,0x71, 0x06,0x2a,0x98,0x23, 0x35,0xa1,0x7e,0x8d,
+ 0xb5,0x52,0xbd,0x36, 0xfa,0xc3,0x79,0xf5, 0x76,0x9e,0x4f,0x7f, 0xe0,0x76,0xbe,0x54,
+ 0xbf,0xc0,0xf3,0x6b, 0xea,0xfb,0x49,0x6d, 0xc9,0x0d,0xbb,0xa1, 0x60,0x9b,0xb8,0x06,
+ 0x76,0x83,0x80,0x84, 0x04,0xe3,0x5c,0x07, 0xb5,0x67,0x5b,0xee, 0x64,0xe2,0x9b,0x46,
+ 0x9a,0xf0,0x4d,0xc6, 0x36,0x0c,0xde,0x21, 0xc2,0xd8,0xbd,0x66, 0xb6,0x4d,0x7d,0x1a,
+ 0x01,0x8e,0x3a,0xa7, 0x36,0xe3,0x01,0x67, 0x62,0x51,0xc8,0x7f, 0x55,0xe3,0x72,0x7c,
+ 0x8f,0x6e,0x0d,0x65, 0x92,0x44,0xa5,0xa5, 0x6f,0x9f,0x38,0xda, 0x24,0xf4,0xa0,0x22,
+ 0x4d,0xc2,0x98,0x80, 0x72,0xb3,0x05,0xed, 0x00,0xc4,0x30,0xa2, 0x85,0xda,0x2a,0x3a,
+ 0x9d,0xdf,0x07,0xcb, 0xd3,0xf6,0xde,0x61, 0xd4,0xd9,0xfa,0x1f, 0x5b,0x2b,0x26,0xe8,
+ 0xbb,0x3e,0xff,0xec, 0xea,0x78,0xdc,0x4a, 0x12,0x03,0xaa,0xd7, 0x5f,0xf6,0xf6,0x0d,
+ 0xaf,0x71,0x6f,0x15, 0x4f,0x1d,0x5e,0xd6, 0x67,0x45,0x91,0x4a, 0xa4,0x1b,0xc7,0xa2,
+ 0x18,0xc9,0x35,0xcd, 0xfd,0xf5,0x5e,0x66, 0xea,0x06,0xf2,0xde, 0xf2,0x09,0xaf,0xc3,
+ 0xa4,0x13,0x64,0x5f, 0xc4,0x28,0x85,0xec, 0xbe,0xde,0x67,0x1f, 0x7c,0xf5,0x7c,0x7e,
+ 0xd6,0xbd,0xc0,0xc3, 0x1b,0xb7,0x3c,0x69, 0x97,0x1c,0x97,0xfa, 0xf5,0xd3,0x2e,0xe2,
+ 0x81,0x44,0xb1,0x07, 0x29,0x22,0x8b,0x14, 0x50,0x4c,0x1a,0x35, 0x46,0x42,0xf7,0xda,
+ 0x2e,0xe8,0xea,0x38, 0x7c,0x3d,0xff,0x3b, 0x56,0x8d,0x70,0xf9, 0xeb,0x4c,0xc3,0xb0,
+ 0x1d,0x8e,0xd2,0xc7, 0x95,0x87,0x8c,0x1e, 0x81,0xe6,0x6f,0x63, 0xe8,0x6f,0xaa,0x0e,
+ 0x63,0xdc,0x71,0xbd, 0xb6,0xfa,0x8a,0xee, 0x1b,0x6a,0xd3,0x1b, 0x43,0x1a,0xcf,0x35,
+ 0xa3,0xfb,0xb9,0xdb, 0xef,0x2e,0xc6,0xf9, 0xbd,0xaa,0x6d,0x69, 0xb3,0xde,0x7f,0xc1,
+ 0x61,0x7b,0x99,0xcd, 0x58,0x56,0xd7,0x18, 0x4b,0x92,0x25,0xce, 0x00,0xed,0x6b,0x23,
+ 0x46,0x77,0x43,0x7d, 0x29,0x22,0x3b,0x09, 0x3c,0x86,0x34,0x08, 0x2d,0x64,0xe9,0x7d,
+ 0x93,0x2c,0xbb,0x25, 0xa8,0xb9,0xb3,0x05, 0x9b,0x8e,0xdd,0xf0, 0xbd,0x29,0xe2,0xd2,
+ 0x11,0xf6,0x39,0x08, 0x36,0x87,0x8b,0x47, 0xd2,0x62,0x98,0xd0, 0xf4,0x0e,0x0c,0x2f,
+ 0x79,0x1e,0x56,0x65, 0xcd,0x3e,0x17,0xbb, 0x81,0x1d,0x5e,0xc7, 0x3f,0x8d,0xb3,0xf2,
+ 0x8f,0x46,0xf8,0xf9, 0xb4,0x51,0x41,0x44, 0x8c,0x77,0x85,0x0d, 0xf9,0x43,0x4c,0x89,
+ 0xcb,0x49,0x3a,0xa2, 0xed,0xa9,0xc8,0x22, 0xd1,0xc7,0x0c,0x9a, 0x70,0x32,0x78,0x4f,
+ 0x12,0x6c,0xd9,0xea, 0x1a,0x26,0x90,0x28, 0x8b,0xca,0x1c,0x3e, 0xf1,0xd3,0xae,0xa4,
+ 0x5e,0x1b,0x97,0x2c, 0xb7,0x17,0x71,0x52, 0x2b,0x55,0x28,0xce, 0x90,0xe1,0xcc,0x2a,
+ 0x81,0xfa,0x3d,0x9e, 0xcb,0xa5,0x5d,0x9f, 0x6a,0x50,0x66,0x19, 0x08,0x74,0x73,0x66,
+ 0xde,0xd4,0xa4,0xf3, 0xa9,0x93,0x5f,0x96, 0x67,0x59,0x9d,0xf4, 0xe1,0x7c,0xc6,0x0f,
+ 0xeb,0x9f,0x23,0x52, 0xa6,0x34,0xef,0x92, 0x92,0xed,0x42,0x3f, 0x7f,0x93,0x66,0xaa,
+ 0x1d,0x09,0x5a,0x5b, 0xee,0xc3,0x42,0x38, 0xba,0xb7,0x9f,0xe0, 0x49,0xc8,0x6d,0x33,
+ 0x97,0xaf,0x99,0xe2, 0xe6,0x35,0x42,0x94, 0x9a,0x96,0x9a,0xf9, 0x73,0x1c,0x49,0x77,
+ 0xf6,0x75,0x9a,0x71, 0x6b,0x45,0x63,0x07, 0xcf,0x71,0x6d,0x12, 0xf7,0x48,0xdc,0x97,
+ 0xd7,0xfb,0xb6,0xde, 0x46,0xff,0x85,0x99, 0xe0,0x24,0x53,0x5b, 0xc3,0x81,0x69,0x46,
+ 0x81,0xef,0x66,0x60, 0x23,0x7c,0x06,0x6b, 0x7c,0x9b,0xd8,0x98, 0x3a,0xf0,0xaf,0xcd,
+ 0x2c,0x72,0x6e,0x44, 0x1c,0xe5,0x1d,0x5f, 0x4b,0x05,0x3c,0x54, 0x92,0x7c,0xdb,0x32,
+ 0x8e,0x57,0xeb,0xd0, 0x66,0xc7,0x2a,0x61, 0x39,0x68,0xd1,0xf2, 0x23,0xe2,0x44,0xc9,
+ 0x93,0x92,0xef,0xed, 0x75,0xae,0x0a,0x53, 0x20,0x41,0xb5,0x31, 0x00,0x23,0xb8,0x4a,
+ 0x8e,0x2a,0xc9,0x5b, 0xc1,0x7b,0x42,0x0c, 0x79,0xdc,0xfa,0x51, 0xdc,0xcc,0x74,0xf3,
+ 0xb6,0xe4,0x26,0x80, 0x54,0x61,0xc8,0x79, 0xa6,0xf3,0x07,0x92, 0xc2,0x79,0xb9,0x7f,
+ 0xb3,0x77,0x7e,0xd6, 0x05,0x4c,0xa4,0x23, 0x59,0x11,0xa8,0xb9, 0xe3,0xca,0xdc,0xba,
+ 0x5a,0x2b,0xe2,0xd0, 0x56,0x66,0x43,0x75, 0x6b,0x0d,0x0b,0xf8, 0x9f,0x7b,0x12,0xae,
+ 0xe5,0x46,0x39,0x05, 0xcf,0xb4,0xe6,0x00, 0xae,0x46,0xa4,0xb4, 0xd4,0x34,0xde,0xe2,
+ 0x2a,0x91,0x24,0xbb, 0x43,0x3f,0x03,0x45, 0x0b,0x0d,0x5d,0xd2, 0x47,0x69,0xa9,0xae,
+ 0xdf,0x5e,0x91,0xa1, 0x5b,0x0d,0xb3,0xce, 0xcb,0x5c,0xaa,0x4c, 0xcb,0xd7,0x6a,0xc4,
+ 0xd9,0x2e,0x9b,0x89, 0xdb,0xe6,0xf1,0x1d, 0x79,0x99,0xd7,0x10, 0x6a,0xd5,0xb4,0xb3,
+ 0x9d,0x55,0x8a,0xa6, 0xc7,0x13,0x33,0x45, 0xaa,0xdb,0x06,0x2d, 0x28,0x94,0xb2,0x0f,
+ 0x0b,0xd4,0xdb,0xc4, 0xdc,0x7d,0x64,0x87, 0x27,0x79,0x85,0xe9, 0xd9,0x95,0xb2,0xbf,
+ 0xd0,0x8f,0xea,0x79, 0x7a,0xec,0x58,0xb0, 0x29,0x12,0x2f,0xf8, 0xe8,0x33,0xaf,0x87,
+ 0x0c,0xb7,0x24,0x62, 0x11,0xbe,0xf6,0xcb, 0x4e,0xbf,0x9c,0x6c, 0xa2,0x86,0x4b,0x2d,
+ 0x35,0xb9,0xf2,0xd5, 0xfa,0x8b,0x5c,0xb6, 0xb9,0x6a,0x9a,0x71, 0x43,0x65,0x6e,0x10,
+ 0x32,0x48,0xd2,0x7d, 0xc3,0x79,0xa4,0x30, 0x1a,0x3b,0x45,0xc6, 0x6f,0xd1,0xe6,0x38,
+ 0xc6,0xaa,0x06,0x73, 0x69,0x3f,0x35,0x4a, 0xb7,0xe2,0xcc,0x95, 0x5b,0xe9,0x1c,0x2f,
+ 0xe2,0xe3,0xfc,0xc6, 0x23,0x87,0x39,0xae, 0x72,0x5b,0xbd,0xf2, 0xd9,0xeb,0x33,0xdc,
+ 0xd9,0xb4,0x3d,0x07, 0x8f,0xf2,0x24,0x44, 0xf0,0xad,0xd8,0x5b, 0x7e,0x40,0x3c,0xc8,
+ 0x70,0x84,0xc7,0x5c, 0xd4,0x1a,0x93,0x62, 0x0a,0x8a,0x0d,0x2e, 0xf1,0x5d,0x32,0x9d,
+ 0x07,0x05,0xc6,0xdd, 0x04,0x9e,0x90,0xb2, 0x5c,0x82,0x46,0x07, 0x8e,0xfd,0x9e,0xbd,
+ 0x8e,0xac,0x83,0x09, 0xba,0x6b,0x4b,0x62, 0xa6,0xd9,0x65,0x1e, 0x1d,0x2b,0xe5,0x65,
+ 0xd7,0xd4,0x9d,0x17, 0x1d,0x8c,0x92,0xa3, 0xed,0xf4,0xd8,0x02, 0x2d,0xc6,0xef,0x9a,
+ 0xd6,0xfb,0x50,0xe4, 0xd1,0xd5,0x9b,0xc9, 0x3e,0xb2,0x5a,0x61, 0xe3,0x6f,0xd5,0xf4,
+ 0x0b,0xa3,0xce,0x07, 0x36,0x17,0x71,0xe9, 0xb8,0x21,0x25,0x7c, 0xf2,0xe2,0x20,0xe7,
+ 0xbe,0x73,0xb5,0x5c, 0x0c,0xb2,0x2d,0xba, 0xa0,0x0a,0x1e,0x3b, 0xaa,0x54,0x97,0x3e,
+ 0x47,0x71,0xd9,0xdd, 0x53,0x6e,0xdc,0x37, 0xcb,0x6c,0x2f,0x65, 0x65,0x9a,0x3c,0x08,
+ 0x48,0x93,0x3a,0x17, 0xfe,0x13,0x5a,0x39, 0x50,0x19,0xf3,0x3c, 0xce,0x77,0x51,0xdb,
+ 0xc9,0x78,0xc0,0xb4, 0x47,0x44,0xe3,0xe4, 0x26,0x51,0x47,0x52, 0xb2,0x0d,0x68,0xd5,
+ 0x4d,0x8a,0x67,0xfe, 0x61,0xba,0x1e,0xed, 0xbb,0xd7,0x5c,0xcf, 0x7c,0x67,0x51,0x2d,
+ 0x13,0x1c,0x83,0xdb, 0xe3,0x50,0x21,0x52, 0xd8,0x9d,0x06,0x79, 0x65,0xa9,0xcb,0xa3,
+ 0x6c,0x77,0x82,0xd0, 0x77,0x8f,0xac,0xde, 0xef,0x65,0x6e,0x05, 0x38,0xf9,0x53,0x62,
+ 0x56,0xa1,0x62,0x91, 0x8b,0x2f,0x1f,0xd6, 0x6b,0xb8,0x8c,0x71, 0xda,0xf1,0x75,0x79,
+ 0x5b,0x79,0x5e,0x90, 0xbb,0xed,0xb4,0x20, 0x89,0xdf,0x82,0x74, 0x2e,0x71,0x6d,0x36,
+ 0x11,0xba,0xff,0xc4, 0xe1,0xb6,0x4e,0x70, 0x33,0x5a,0xc1,0x8d, 0x94,0xbc,0x34,0xd7,
+ 0x4e,0x31,0x1e,0x9e, 0x1e,0x62,0x45,0x07, 0x6a,0x59,0x24,0xce, 0x95,0xc6,0xb8,0x34,
+ 0x89,0x5a,0x6c,0x31, 0xbd,0xd4,0xf8,0x89, 0x57,0x24,0xfb,0xd2, 0x2c,0x92,0x47,0x71,
+ 0x5f,0xb1,0x5e,0xd3, 0x59,0x77,0xd5,0xd5, 0xd7,0x59,0x07,0x94, 0xb9,0x17,0xc3,0xce,
+ 0xf2,0xce,0x0a,0xe1, 0x7d,0xbc,0x5a,0xa4, 0xf0,0xf9,0x7c,0x69, 0x0d,0x7e,0xb9,0x3b,
+ 0x8b,0x29,0x93,0x52, 0xeb,0x17,0x4d,0x96, 0xfa,0xa0,0x5e,0x98, 0xe7,0xe1,0x2a,0x7e,
+ 0xd1,0xb4,0xd1,0x41, 0x7f,0x2f,0x74,0xcd, 0x49,0x8a,0x60,0x99, 0x7d,0x8a,0x01,0xc9,
+ 0x94,0x2e,0x50,0xc8, 0x21,0xdb,0x2c,0x3a, 0xbc,0x2c,0x18,0x46, 0x75,0x34,0xe9,0x96,
+ 0x69,0x84,0xeb,0x35, 0x61,0x49,0x2c,0x11, 0xe9,0x13,0x04,0x1d, 0xb4,0x75,0xf4,0x0f,
+ 0x88,0xa8,0x38,0x79, 0x8c,0x7b,0x2b,0xba, 0xf7,0x51,0x7a,0xa9, 0x81,0xbb,0xe8,0x8a,
+ 0x7c,0xb3,0x75,0x7b, 0x6f,0xd8,0x0f,0x4b, 0x04,0xc0,0x71,0x7e, 0x33,0x7a,0xd3,0x7d,
+ 0x2a,0x7b,0x15,0x8c, 0x9a,0xf8,0x5c,0xea, 0x46,0x92,0xe8,0x10, 0xc4,0x08,0xed,0xc1,
+ 0xd0,0x0e,0x1a,0xc9, 0x05,0xa1,0x56,0xc5, 0x19,0xc2,0x7c,0x68, 0xf8,0xf7,0xa2,0x5f,
+ 0xf6,0xfb,0xd7,0xf6, 0x53,0x96,0xbd,0x69, 0x1d,0x9d,0xdb,0x2d, 0xb4,0xc4,0x9b,0xdf,
+ 0xc5,0x47,0xeb,0x4a, 0x26,0xf4,0x66,0x52, 0x37,0x37,0xdc,0xda, 0x49,0x7b,0x3b,0x3b,
+ 0xec,0xcf,0x57,0x61, 0xd0,0x3b,0xfb,0x3d, 0xb0,0xa4,0x91,0xe8, 0xdc,0x62,0x43,0xd8,
+ 0x4a,0x77,0x88,0x73, 0x01,0xdb,0xd8,0x2d, 0x78,0x1b,0x5b,0x8d, 0x43,0x86,0x09,0xc9,
+ 0x4a,0x67,0x28,0xc9, 0x95,0x91,0x89,0x66, 0x5d,0x9b,0xae,0x38, 0xb2,0xc9,0x58,0xa0,
+ 0x47,0x6d,0x6b,0x85, 0xf8,0x72,0x41,0xd4, 0xf6,0x72,0x02,0x49, 0x23,0x35,0x30,0x91,
+ 0xa8,0x1f,0x17,0x52, 0xf5,0xcc,0x63,0xd9, 0xbb,0x8e,0x64,0x17, 0x88,0x9a,0xda,0x7c,
+ 0x2d,0x92,0xa2,0xcd, 0xf6,0x4b,0x70,0x21, 0x7e,0xb8,0xfb,0xd2, 0x4b,0xcd,0xb9,0x90,
+ 0x21,0x12,0x19,0x4d, 0x18,0x47,0x47,0x29, 0x5b,0xab,0xf5,0x26, 0x47,0xdf,0x83,0x03,
+ 0x3b,0x5c,0xff,0x49, 0x9f,0x36,0xff,0xcf, 0xa1,0x1d,0x03,0xd2, 0xbf,0x9f,0x85,0x6d,
+ 0x18,0xbc,0x80,0xbc, 0xf7,0x27,0xfd,0xf3, 0xdc,0xa0,0x0d,0x61, 0x3d,0x81,0x84,0xe1,
+ 0x38,0x1f,0xba,0x3c, 0xab,0xbf,0xed,0x87, 0xd9,0x84,0xaf,0x6a, 0x43,0x9e,0xc1,0xf4,
+ 0x3e,0xbb,0x50,0x35, 0xd5,0xd3,0xf4,0x5b, 0xf8,0x91,0x8c,0x50, 0x27,0xdf,0xa9,0xf1,
+ 0x38,0x32,0xeb,0x72, 0xe2,0xf2,0x3c,0xb7, 0xdd,0x65,0xd3,0x6a, 0xcc,0xec,0x9e,0x44,
+ 0xb3,0xd7,0xd8,0xd8, 0x78,0x8d,0xe9,0x18, 0x6c,0x7e,0xb3,0xe7, 0xc6,0x31,0xe7,0xc8,
+ 0x5c,0x2f,0xe9,0xe4, 0x76,0x14,0x1e,0x5f, 0x6d,0x97,0xc3,0xe9, 0xd5,0xe3,0xbd,0x03,
+ 0x4b,0xa3,0x3d,0x9e, 0x7f,0x26,0xe6,0x9e, 0x08,0x76,0x30,0x55, 0x33,0xf0,0x84,0x63,
+ 0x9b,0x6d,0xf0,0xc4, 0xd6,0x4a,0x09,0xf5, 0x8e,0xeb,0x39,0x97, 0x7c,0xf8,0x0c,0xcc,
+ 0xc2,0x45,0x03,0x04, 0xcc,0x9b,0x3d,0x9f, 0xa3,0xde,0xf6,0x2b, 0xf3,0x97,0x5c,0x0f,
+ 0xc6,0x40,0x32,0xb9, 0x85,0x55,0x41,0x96, 0x0e,0xa6,0x9d,0xf3, 0x8a,0x21,0xe5,0x4d,
+ 0x6c,0x28,0x55,0x8b, 0x48,0x00,0x2d,0x2b, 0x12,0x6b,0x43,0xb3, 0x3a,0xc3,0x7c,0xe2,
+ 0x08,0x16,0xa9,0xbb, 0x96,0xb7,0x58,0x0d, 0x8c,0x2c,0xa7,0x5c, 0x0f,0xc9,0x7b,0x12,
+ 0x8a,0x0f,0x2e,0xf5, 0xa0,0x8f,0xa4,0x43, 0x9f,0x41,0xe3,0x72, 0xf4,0x06,0x64,0x9a,
+ 0x3f,0x82,0x9f,0x89, 0xf8,0x5a,0xdf,0x60, 0xad,0xbf,0x90,0x6c, 0x0b,0x84,0x8a,0xfd,
+ 0x23,0xde,0x15,0x57, 0xc0,0x85,0x0e,0x2b, 0xe2,0x33,0x2d,0xa5, 0x8e,0xba,0xa4,0x33,
+ 0x06,0xdd,0x43,0x7c, 0x39,0xb3,0xf9,0x7e, 0x0e,0xaf,0x55,0xc0, 0xe8,0xf4,0x5b,0x09,
+ 0xbe,0xde,0x8f,0xab, 0xde,0xf3,0x3c,0xeb, 0x3b,0xb5,0x47,0x2b, 0x95,0x88,0xd8,0x7b,
+ 0xc0,0xe2,0xd3,0x18, 0xa2,0x53,0x2a,0x90, 0x93,0xde,0x45,0x0e, 0x71,0x3e,0xd7,0x06,
+ 0x85,0x32,0x98,0xd3, 0xb4,0xfd,0x6e,0x3b, 0xeb,0xce,0x2b,0x57, 0xcc,0xf4,0xf6,0x99,
+ 0x1d,0x5e,0xc6,0xde, 0xb3,0x76,0xe4,0x63, 0x05,0x4c,0x3c,0x25, 0x6b,0x1c,0x90,0xc9,
+ 0x4a,0xa6,0x8b,0xed, 0x6d,0x69,0x4b,0xa5, 0x6c,0xf4,0xc0,0xeb, 0xfc,0xe8,0x3f,0x02,
+ 0x5a,0xa6,0xac,0xb3, 0x30,0x0c,0x1e,0x6f, 0xef,0x54,0x48,0x9c, 0x10,0x62,0x7f,0x9c,
+ 0xe5,0xf5,0xae,0x1d, 0xe6,0x66,0x0a,0x05, 0x5e,0x23,0x3c,0x92, 0x68,0x31,0xd3,0x37,
+ 0xf1,0xb8,0xaf,0xdc, 0x24,0x66,0x65,0x57, 0xd9,0xee,0xed,0x92, 0x9b,0x8d,0xda,0xf9,
+ 0x3f,0x2b,0x51,0x83, 0xf7,0x7b,0xef,0x57, 0x56,0x9e,0x39,0xec, 0x7d,0x60,0x8a,0x4f,
+ 0xd7,0x83,0xab,0x65, 0x4f,0x4d,0x52,0x0b, 0x0d,0x80,0xb5,0x36, 0xfe,0x97,0x7c,0xad,
+ 0x8a,0xca,0x65,0x2a, 0x42,0x3e,0x26,0xfb, 0x9f,0xf5,0x83,0xe7, 0x12,0x34,0xb4,0xac,
+ 0x30,0x58,0x83,0xe9, 0x0a,0xf9,0xc7,0x9e, 0x34,0x14,0xbd,0xe5, 0x8a,0x74,0x85,0xb2,
+ 0x9d,0x2d,0x57,0x5d, 0x29,0x42,0x98,0x59, 0x3e,0x05,0xcd,0x85, 0xdf,0xd6,0xb6,0x03,
+ 0xa3,0x1c,0x88,0x28, 0x23,0x87,0x99,0x29, 0x58,0xb7,0xf9,0xe2, 0xb5,0xde,0x04,0xc3,
+ 0x04,0x0b,0xcc,0x49, 0xb1,0xa2,0x98,0x10, 0xb1,0x25,0x0e,0x87, 0xaa,0x60,0x16,0x9d,
+ 0xd2,0xd3,0x38,0xbb, 0xff,0xf5,0xeb,0xfb, 0xcb,0x8e,0x0f,0xe8, 0xe1,0x5f,0x5e,0xf9,
+ 0x78,0xf7,0x1d,0xe7, 0x2f,0x89,0x72,0x75, 0x98,0x50,0x84,0x1c, 0xab,0xea,0x8e,0x2c,
+ 0x02,0x9b,0x14,0x44, 0x28,0x1b,0x63,0x71, 0xf6,0x82,0xdb,0x5f, 0xd6,0xbe,0x75,0x1b,
+ 0x38,0x42,0x2b,0xc8, 0xc6,0x61,0x79,0xe2, 0xc1,0x64,0xfa,0xd4, 0x1a,0x1d,0x7b,0x3e,
+ 0x95,0x2b,0xdf,0x55, 0x7b,0xcc,0xeb,0xa8, 0x0e,0xd9,0x61,0xe2, 0xd6,0x68,0x4a,0xde,
+ 0xaf,0x50,0x80,0x6f, 0xba,0xd9,0xfa,0x4c, 0xbb,0xca,0xef,0xdc, 0x33,0xc3,0x9f,0xc6,
+ 0x61,0x23,0xbe,0xa1, 0xc2,0xe5,0x67,0xa0, 0x43,0x39,0xff,0x13, 0xe4,0xca,0x1d,0x00,
+ 0xf3,0x48,0x48,0x2f, 0x52,0x67,0x76,0xd5, 0xcb,0x69,0x89,0x49, 0x31,0x05,0xc8,0x55,
+ 0xac,0xc8,0x7f,0x27, 0x6f,0x1e,0x0d,0x55, 0x16,0x9d,0xbf,0x61, 0xd3,0x72,0x9a,0x3c,
+ 0x9a,0x11,0xdd,0xf4, 0xd2,0xe9,0x46,0x47, 0x45,0xbf,0x71,0xbb, 0xa6,0x6d,0x7e,0x88,
+ 0xc5,0xa3,0x70,0x44, 0x73,0xdd,0x8b,0xbb, 0xd4,0xb8,0x57,0xdc, 0xea,0xdb,0xca,0xfa,
+ 0x58,0x52,0x54,0x81, 0x6d,0xfb,0x37,0xa9, 0xd0,0x9a,0x12,0xba, 0xdd,0x6e,0x3a,0xd7,
+ 0xe7,0x2d,0x02,0x69, 0xaa,0x12,0x21,0x42, 0x83,0x74,0x4b,0xce, 0x67,0x5f,0xf7,0xbd,
+ 0x8d,0x41,0x52,0x04, 0x8a,0xa9,0xf9,0x54, 0xe7,0xd8,0x45,0x26, 0x91,0x05,0xd5,0xd9,
+ 0x99,0xad,0x32,0x90, 0x41,0x24,0x17,0x7e, 0x9e,0xa9,0x4a,0x68, 0x9c,0xf8,0x4f,0x26,
+ 0x85,0xfe,0xbc,0x31, 0xaf,0xd8,0xef,0xe8, 0x21,0x65,0x96,0xd3, 0xc0,0xa8,0x85,0x13,
+ 0x51,0x0c,0x35,0x3b, 0x47,0x83,0x02,0x9a, 0xfa,0xfb,0x69,0x1c, 0xad,0x23,0xf1,0x16,
+ 0x46,0xa8,0x85,0x80, 0x64,0x5a,0xee,0x0e, 0x75,0x4c,0x92,0x86, 0xeb,0x22,0x2a,0x72,
+ 0xbe,0x8d,0x86,0x27, 0x59,0xb1,0xdc,0xca, 0x6b,0x41,0x8f,0xe7, 0xf3,0x40,0x3a,0x42,
+ 0x0b,0xf9,0x61,0x2c, 0x61,0x52,0x61,0xf8, 0x09,0x1d,0x28,0xe5, 0x61,0x35,0xe5,0x4a,
+ 0x28,0xc0,0xc7,0x50, 0xd2,0x6a,0x17,0x67, 0xa4,0x28,0x2b,0x67, 0x68,0xbb,0xd3,0x68,
+ 0xb0,0xfd,0x7c,0x4a, 0x3a,0x88,0xf2,0x77, 0x50,0x58,0x3f,0xe2, 0x17,0x19,0x9a,0x4c,
+ 0xb0,0xa2,0x47,0xf1, 0x4f,0xe8,0x8f,0xd8, 0x5f,0x86,0x1a,0xa6, 0xb3,0xa1,0xaf,0x68,
+ 0xf2,0x46,0xb4,0x86, 0xef,0x93,0x3f,0x92, 0x4f,0x86,0x41,0x22, 0x5f,0x38,0x20,0x97,
+ 0x10,0xb9,0x97,0x05, 0xd0,0x0c,0x28,0x72, 0xdb,0x2b,0xbe,0x7e, 0xb9,0x5c,0xa6,0x94,
+ 0xe9,0x1d,0x4d,0x40, 0xc2,0x4a,0x4d,0x49, 0x34,0x0d,0x80,0x48, 0x06,0x95,0xa8,0x3e,
+ 0x2c,0xfc,0x29,0x13, 0xa4,0x8a,0x68,0x86, 0xc2,0x6d,0x16,0xd9, 0x0d,0x17,0x19,0x11,
+ 0xa7,0x68,0xac,0x0c, 0x15,0x4d,0x32,0x98, 0x8a,0xa6,0x42,0x93, 0x9c,0x19,0xa6,0xa6,
+ 0x15,0xe6,0x83,0x89, 0x08,0x6d,0x92,0xaf, 0x6e,0x09,0xd2,0x0f, 0x3c,0x12,0x56,0x5d,
+ 0x48,0x35,0x38,0x66, 0x29,0xd5,0x50,0x5e, 0x0d,0x6e,0xbf,0x2f, 0xc1,0xb8,0xbc,0xae,
+ 0x8a,0x4b,0x53,0x20, 0x1b,0x03,0xae,0x74, 0x34,0xee,0xe0,0xf4, 0x8d,0x7a,0x84,0x4d,
+ 0x83,0x69,0xb0,0x1b, 0x3c,0x47,0x59,0x8a, 0x4c,0x1b,0xac,0x9e, 0xe6,0xdc,0x0a,0x4d,
+ 0x02,0xa2,0x88,0x58, 0x4c,0x09,0xb0,0x84, 0xc9,0x3c,0xe7,0x5f, 0xb4,0x92,0xa4,0xb7,
+ 0xa1,0x0d,0x13,0xcd, 0xa3,0x65,0x7a,0x05, 0xb5,0x0f,0xd3,0x29, 0xb7,0xd8,0xbb,0x9f,
+ 0xbd,0x3f,0x5d,0xb5, 0x3a,0x4c,0xe6,0x4b, 0x84,0x50,0xd8,0x26, 0x72,0x8b,0x50,0x06,
+ 0x89,0x8a,0x82,0x09, 0x38,0xb7,0xe4,0xfe, 0xcd,0x86,0x3a,0xf0, 0xee,0xc8,0xc1,0x62,
+ 0x43,0x53,0x04,0x73, 0xe4,0x22,0x15,0x7b, 0xef,0xad,0x8d,0x6c, 0xe6,0xe9,0x80,0xae,
+ 0x8f,0x0c,0x1d,0xa2, 0x47,0x1f,0x9a,0x8d, 0x55,0x18,0x91,0x27, 0xb6,0xb3,0x61,0x5e,
+ 0x3e,0x57,0x8b,0x95, 0xd0,0x13,0xbd,0xbc, 0x89,0x34,0x71,0x22, 0xbc,0x85,0x43,0x51,
+ 0xa1,0x7a,0xdb,0xbd, 0x2d,0xdc,0x9b,0xb9, 0xd9,0xcb,0x8f,0xf3, 0xa7,0x3a,0x39,0x22,
+ 0xbe,0x86,0xea,0x9a, 0x4d,0xc2,0x2a,0x4a, 0x11,0x68,0x47,0xba, 0xba,0x0f,0xb7,0xf9,
+ 0xf8,0x52,0x46,0xba, 0xea,0xfa,0xdd,0xa0, 0xee,0xa9,0x52,0xba, 0xde,0x17,0xc1,0x73,
+ 0x57,0x39,0x23,0xb0, 0x09,0x10,0x3b,0xdd, 0x64,0xaf,0x73,0xb7, 0x26,0xf7,0x01,0xd5,
+ 0x95,0x6a,0x1c,0xe8, 0xab,0x10,0xe7,0x05, 0x39,0x03,0xed,0x34, 0x91,0x74,0x00,0x6f,
+ 0x3a,0x1c,0x90,0xdc, 0x2e,0x4c,0x80,0xda, 0x22,0x5e,0x97,0xb5, 0xfb,0x5d,0x15,0xd1,
+ 0x60,0x67,0x09,0x75, 0xa0,0x04,0xfb,0x95, 0x80,0xbc,0x33,0xa9, 0x68,0xd7,0xf1,0xbf,
+ 0xc4,0x2c,0x7c,0xcc, 0x84,0x89,0x2e,0x52, 0xfe,0x3b,0xda,0xdc, 0xed,0x78,0x57,0x5f,
+ 0x53,0x97,0x77,0x4b, 0xaa,0xb1,0xcb,0x85, 0x52,0xf9,0x64,0xdf, 0x74,0x6c,0x4e,0x44,
+ 0xcc,0x2a,0xd8,0x89, 0x9f,0xa7,0xb5,0x7c, 0x53,0x79,0x18,0x20, 0xd8,0xc2,0x84,0x8c,
+ 0x17,0xc1,0x2e,0xdf, 0xe3,0x3c,0x2e,0x00, 0xc3,0x5a,0xe4,0x2a, 0x29,0x0b,0xc7,0xf2,
+ 0x01,0xd0,0x9a,0xa8, 0x64,0x7d,0x23,0x19, 0xe4,0xd2,0x05,0x40, 0x3b,0x8e,0x8e,0x32,
+ 0xf3,0xfb,0xb3,0x5d, 0xa7,0x9e,0xc8,0xa4, 0xe4,0xd8,0xa8,0x28, 0x5b,0x89,0x5d,0xdd,
+ 0xdc,0xed,0xee,0x9b, 0x28,0x6d,0x31,0x4b, 0xd6,0x91,0x2b,0xaf, 0x36,0x46,0x2f,0xb0,
+ 0xf1,0xfa,0x5e,0x44, 0xbe,0x27,0x93,0x7f, 0x9e,0x25,0xbb,0x81, 0xd5,0xa9,0x91,0xec,
+ 0x71,0x96,0x0b,0x45, 0x44,0x40,0x91,0x6e, 0xd6,0x89,0x22,0x5c, 0xe2,0x2c,0x7b,0x1d,
+ 0x4f,0x3f,0x9f,0x95, 0x75,0xda,0xad,0xba, 0xf7,0x5a,0x64,0x45, 0x50,0x54,0xc0,0x36,
+ 0x13,0x6f,0xa6,0x4d, 0x56,0x00,0x0e,0x8d, 0xfa,0x01,0x39,0x3e, 0xf0,0xc6,0x1a,0x30,
+ 0x8c,0xad,0x5b,0xfa, 0xbe,0xec,0x5d,0x0a, 0x83,0x54,0x56,0x26, 0x6f,0x3e,0x27,0x67,
+ 0x91,0xf1,0xb3,0x7f, 0x57,0x85,0xa7,0xce, 0x33,0xf9,0xf4,0x44, 0xa5,0xa4,0xcc,0x23,
+ 0xb9,0xdd,0x71,0x26, 0x4d,0x9a,0x72,0x33, 0xa5,0x41,0x26,0x11, 0x80,0x54,0x5b,0xee,
+ 0xd3,0x50,0x24,0x14, 0x9d,0x17,0x3f,0x99, 0x9b,0x26,0x5e,0x49, 0x8e,0x0c,0x13,0x03,
+ 0x27,0x45,0x13,0x8a, 0xeb,0x2e,0x3e,0x64, 0x37,0x7b,0xff,0x66, 0xfa,0x61,0x03,0x9e,
+ 0x55,0x03,0x5f,0xc0, 0xe9,0x0a,0x7d,0x0d, 0x3a,0xee,0x9d,0x82, 0x9c,0x10,0xbd,0x3a,
+ 0x9e,0xff,0x5f,0x27, 0xa2,0xdf,0x35,0xdd, 0x38,0x5a,0xbe,0x27, 0xf8,0xc2,0x41,0x44,
+ 0x4f,0x98,0xc9,0xf0, 0xb6,0x61,0x11,0x26, 0xc4,0x56,0xe5,0xf1, 0x06,0xa7,0x58,0x16,
+ 0x34,0x84,0xf9,0x47, 0x81,0x8c,0x6a,0x18, 0xa5,0xd3,0x72,0x1d, 0x31,0x3c,0x22,0x0e,
+ 0xe6,0x39,0xfa,0x0c, 0x37,0xdd,0x13,0x9b, 0x2d,0xc0,0x55,0xde, 0x93,0xda,0xc4,0x0e,
+ 0x12,0xe2,0xf5,0x1c, 0xa3,0x92,0xae,0xef, 0xd6,0xeb,0x75,0x3c, 0xef,0x5f,0xa7,0x6e,
+ 0xbc,0x51,0xe8,0x00, 0x8b,0x13,0x06,0x30, 0x96,0x88,0x31,0x83, 0x64,0x57,0x56,0x81,
+ 0x4b,0x4d,0x3d,0xba, 0x81,0xfd,0x62,0xa1, 0x5a,0xaa,0xd2,0x3d, 0x99,0x9a,0x56,0xa4,
+ 0x72,0x5d,0x83,0xbe, 0xa5,0x90,0x83,0xa3, 0xa5,0xbd,0x59,0x80, 0x4b,0x8e,0x43,0xcd,
+ 0x2c,0x2a,0xba,0x32, 0x85,0x04,0xa6,0x50, 0x58,0x91,0x65,0x68, 0xfe,0x80,0x73,0xb5,
+ 0x1b,0xf3,0x9b,0x8c, 0x5f,0xd3,0x1a,0x57, 0xc1,0x42,0xab,0x63, 0x28,0xfb,0xea,0xff,
+ 0x12,0x9b,0xdf,0x1e, 0xba,0x1f,0x6f,0x56, 0x91,0x6d,0xfc,0x09, 0xe6,0x64,0xaa,0x97,
+ 0xf4,0xe5,0x6c,0x10, 0x85,0x72,0xe0,0x9b, 0x97,0x71,0x0c,0x3a, 0xf4,0xf3,0xa2,0x18,
+ 0x98,0x1d,0x56,0x05, 0x2a,0x41,0x17,0x59, 0xf8,0x2c,0x68,0x18, 0x0d,0x0b,0xc3,0x15,
+ 0xf6,0xb8,0x35,0xe5, 0x28,0x27,0x24,0xef, 0x18,0x02,0x44,0xc7, 0xbc,0x07,0xd3,0xcb,
+ 0x48,0x67,0x78,0x75, 0xaa,0xe0,0xf0,0x2e, 0x83,0x32,0xe7,0xf4, 0xdc,0x57,0x09,0x27,
+ 0x45,0xe9,0x7e,0xa5, 0x79,0xc5,0xc7,0x14, 0x96,0xf7,0xa1,0xf6, 0x26,0x30,0xfe,0x7f,
+ 0x49,0xfd,0x41,0xe4, 0xe6,0x33,0x08,0x01, 0xeb,0xda,0x0b,0x09, 0x77,0x48,0x16,0x0d,
+ 0xb4,0x6b,0x75,0x97, 0x42,0xb8,0xfc,0x45, 0x30,0x00,0x60,0xca, 0x87,0xeb,0xe8,0xda,
+ 0x87,0xbc,0x5a,0x61, 0x03,0xcb,0xde,0xf9, 0xbb,0x34,0x27,0x64, 0x2e,0x76,0x47,0x55,
+ 0x27,0x44,0xb1,0x42, 0x70,0x59,0xf0,0x91, 0x69,0x2a,0x6f,0x63, 0x39,0x08,0x64,0xd3,
+ 0x23,0xed,0x3c,0xc3, 0x80,0x9f,0x04,0x85, 0x74,0x19,0xf3,0x6c, 0x94,0x63,0x0e,0x22,
+ 0xed,0x38,0x2b,0x71, 0x19,0x38,0x1e,0xe5, 0x76,0x86,0xc2,0x19, 0x4f,0x49,0x7a,0x10,
+ 0x85,0xda,0x8e,0xfa, 0x10,0x44,0x9a,0x77, 0x71,0xd8,0xee,0x0f, 0x3f,0xb6,0xea,0xdb,
+ 0xcd,0xf6,0xa4,0xbc, 0x9b,0x77,0x72,0xed, 0x53,0xf0,0x54,0x38, 0x71,0x01,0xbf,0xda,
+ 0xc4,0xfb,0xd6,0x33, 0xb7,0xb6,0xbc,0x75, 0x02,0x30,0xf0,0xf5, 0x3e,0x9e,0x86,0x74,
+ 0x79,0x88,0x13,0xfb, 0xa3,0xd5,0x15,0x7d, 0x11,0x03,0x99,0x53, 0x18,0x80,0x15,0x38,
+ 0xa0,0x73,0x04,0xe0, 0x54,0x0a,0x65,0x98, 0x5a,0x96,0xd0,0xc5, 0x9c,0xd5,0x15,0xa5,
+ 0x58,0x06,0x54,0x50, 0x10,0x07,0xbf,0xa0, 0xb0,0x26,0x20,0x69, 0x7c,0xbc,0x78,0xff,
+ 0x67,0xf5,0xe7,0xe5, 0xcb,0xf0,0x7a,0x70, 0x47,0xd8,0xae,0x07, 0x0a,0xdb,0x2d,0xba,
+ 0xfc,0x2a,0x21,0xb5, 0xb6,0x15,0x24,0x96, 0x1c,0xf9,0x09,0x08, 0xd7,0xb4,0x85,0x5b,
+ 0x09,0x18,0x5c,0x36, 0xe5,0x29,0xe0,0x0a, 0x13,0x02,0x50,0x12, 0x02,0x48,0x24,0x50,
+ 0xe1,0x24,0xe0,0x92, 0x3d,0xb7,0x3d,0x6f, 0x22,0xea,0x88,0xe7, 0xef,0x2a,0xed,0xbc,
+ 0x55,0xfd,0x3b,0x80, 0x43,0xfc,0xc8,0x09, 0x53,0xc2,0x6f,0x55, 0x7e,0xf3,0xe1,0xdb,
+ 0xa2,0x94,0x04,0x52, 0x3f,0x81,0x3b,0xd0, 0xaa,0x47,0xbd,0x9d, 0xa6,0x81,0x9d,0x7c,
+ 0x74,0xd3,0x89,0x07, 0x61,0xdd,0xdc,0xf3, 0xbc,0x16,0xd0,0x3a, 0xaf,0x7b,0x19,0xc2,
+ 0x24,0x06,0xa6,0x73, 0x5d,0x8e,0xa7,0x13, 0x13,0xb5,0x94,0x7f, 0x09,0xe1,0xd8,0x94,
+ 0x6e,0x2d,0x1d,0xfc, 0xd3,0xac,0x8d,0x8b, 0x24,0xe2,0xd1,0xc7, 0xd5,0x0b,0x18,0x05,
+ 0x7b,0x03,0x00,0xc3, 0x06,0x6c,0x19,0x26, 0x8e,0x77,0xa4,0x1e, 0x13,0x62,0xad,0x91,
+ 0x91,0x90,0x9e,0xb1, 0x25,0x6a,0x55,0x85, 0xb3,0xf5,0xd7,0x01, 0x42,0x60,0x41,0xc1,
+ 0x83,0xc3,0x5b,0xbc, 0x76,0x98,0x30,0x48, 0x3c,0xe9,0x5f,0xf4, 0xba,0x59,0x5e,0x2e,
+ 0x26,0xbe,0xfe,0xc2, 0xbd,0x07,0x97,0x90, 0x28,0x19,0xd8,0x76, 0x98,0xd5,0x15,0x69,
+ 0xb2,0x02,0xb5,0xed, 0x9b,0xf5,0x7e,0x51, 0xb5,0x11,0x41,0xf1, 0xed,0x9c,0xc7,0xb6,
+ 0x55,0xed,0x65,0x77, 0xe8,0xd9,0x24,0xfd, 0x7a,0x79,0xee,0x5e, 0xfa,0xb9,0xf5,0xf5,
+ 0x1b,0xeb,0xc6,0x7f, 0xbf,0xec,0xba,0xde, 0xc6,0xa7,0xa0,0xeb, 0xea,0x9e,0xcd,0xb0,
+ 0xec,0x06,0x9b,0x01, 0xb0,0xcf,0xb4,0x88, 0x77,0x12,0x92,0x90, 0xd1,0xba,0x47,0xf8,
+ 0x94,0x43,0x41,0x4b, 0x53,0xc9,0xc0,0x40, 0x00,0x88,0x10,0x81, 0x08,0x4c,0x64,0x02,
+ 0x11,0x01,0x11,0x59, 0x0d,0x09,0x00,0x04, 0x02,0x51,0x32,0x6d, 0x02,0x68,0x84,0xc5,
+ 0x33,0x70,0xd0,0xc0, 0x10,0x90,0x40,0x84, 0x81,0x42,0x08,0x84, 0x88,0x21,0x21,0x0c,
+ 0x92,0xce,0x66,0x43, 0xc1,0xdf,0x28,0x81, 0xc4,0xbf,0x1d,0x2d, 0xf5,0xfe,0x18,0xba,
+ 0x05,0xbd,0x2d,0x5a, 0x8b,0x02,0x5a,0x88, 0x1c,0xb3,0x84,0x2a, 0xb5,0xd0,0x71,0xc5,
+ 0x55,0x0c,0x16,0xf1, 0xe6,0xb7,0x6c,0x4a, 0x73,0x61,0xbc,0xbd, 0x74,0x4c,0x0d,0x84,
+ 0xe6,0x08,0x26,0x95, 0x0e,0x84,0x38,0x7b, 0x1e,0x6c,0x90,0x5f, 0x41,0x6a,0x58,0x6c,
+ 0xae,0x50,0x9e,0xb7, 0x0a,0x3c,0x8b,0xd5, 0x8b,0x8e,0xda,0x45, 0x00,0x0a,0x50,0x0c,
+ 0x92,0xb3,0x5a,0xfd, 0xa7,0x82,0xd7,0xcd, 0xeb,0xcd,0x82,0xaa, 0x8c,0x63,0xda,0xbd,
+ 0x49,0x06,0xd4,0x71, 0x9c,0x0b,0x0e,0x8e, 0x8b,0x6c,0xc4,0x46, 0x26,0xe1,0x74,0x34,
+ 0x66,0x0d,0x14,0x0c, 0xa9,0x9f,0x69,0xe3, 0x1e,0x68,0x7d,0xc0, 0xe7,0xa8,0xeb,0x10,
+ 0x93,0x3c,0x99,0xc8, 0x30,0x6e,0xce,0x8d, 0xac,0xfa,0x6e,0xfb, 0xaf,0xcf,0x20,0x6d,
+ 0x32,0x41,0xc0,0x80, 0xa2,0x78,0xe8,0x54, 0x48,0x27,0xf3,0x64, 0xa4,0x95,0x02,0x22,
+ 0x7d,0xf7,0x5f,0x9e, 0xe5,0x37,0x1b,0x6c, 0x8c,0x08,0x5c,0x54, 0x12,0x17,0x19,0x85,
+ 0xb1,0x53,0xea,0x1c, 0x0b,0x6b,0x35,0xec, 0x2a,0x41,0x00,0xb9, 0x40,0x13,0x00,0x62,
+ 0x95,0xdc,0xfc,0xdb, 0x8e,0x25,0x3b,0xa0, 0x5c,0xb4,0x31,0xb1, 0x72,0x55,0x94,0xda,
+ 0xaa,0x58,0x59,0xc2, 0xc4,0x22,0x40,0x51, 0x40,0x6f,0xcd,0x5a, 0x98,0xaf,0x8d,0x17,
+ 0xec,0x52,0xd5,0x95, 0xac,0x1d,0x3a,0x98, 0xa1,0x24,0x03,0x15, 0x93,0x6a,0x67,0x0b,
+ 0x3f,0x28,0x07,0x0b, 0x9d,0xb5,0xae,0xc5, 0x0c,0xd4,0x55,0xbf, 0x9c,0xc2,0x72,0xaf,
+ 0xa1,0xa7,0xea,0x26, 0xe0,0x81,0x86,0x3e, 0x9b,0x22,0x11,0xd1, 0x5f,0x59,0xf8,0xda,
+ 0xc4,0x71,0x49,0xc8, 0x77,0x59,0x35,0x07, 0x18,0xfc,0xc4,0x06, 0x65,0x55,0x6d,0xd9,
+ 0x8d,0xe4,0xc2,0xe0, 0xb8,0x47,0xbd,0x30, 0x2f,0xcd,0x56,0x1d, 0xb1,0x56,0x43,0x49,
+ 0x9d,0x5e,0xbf,0x4f, 0x95,0x37,0xb4,0x65, 0xff,0xf3,0xfc,0xc3, 0x96,0x3a,0x1b,0x21,
+ 0x3e,0xb8,0xd8,0xd4, 0xb1,0x8c,0x45,0x30, 0xe6,0x1f,0x7f,0xd5, 0xfb,0x59,0x89,0x04,
+ 0x40,0xcd,0x83,0x9c, 0x6c,0x73,0x3e,0xc8, 0x60,0x24,0x01,0xdb, 0xcc,0xf4,0x24,0x3f,
+ 0x3b,0x81,0xea,0xda, 0x5d,0xb5,0x72,0xe3, 0x7e,0xfd,0x93,0x0c, 0x36,0x8b,0xfd,0x76,
+ 0xeb,0xf2,0x4d,0x1f, 0x77,0xbf,0x83,0xdc, 0xbf,0xce,0xf1,0xf7, 0x70,0x78,0x0c,0x46,
+ 0x06,0x0a,0x16,0x40, 0xd2,0x6d,0x31,0xb1, 0xe6,0x65,0x76,0x78, 0xa9,0x25,0x75,0xa5,
+ 0xf4,0x2a,0xac,0x5f, 0x56,0xaf,0x2b,0x54, 0x3f,0x1e,0xc5,0x79, 0xf8,0x86,0x9a,0x73,
+ 0x1d,0xdd,0x02,0x3d, 0x7c,0xc9,0x80,0x1d, 0xe7,0xc4,0x1a,0x9d, 0x2d,0xd6,0x73,0xe1,
+ 0x6c,0xb6,0xd9,0x92, 0x28,0x41,0xc6,0x7c, 0x7f,0x6e,0xef,0x33, 0x30,0xf9,0x7d,0x45,
+ 0x95,0x6a,0xf8,0x9b, 0xf9,0xc4,0x65,0x54, 0x3d,0x3a,0xeb,0x65, 0xfb,0x8e,0x40,0x50,
+ 0xc8,0x33,0xd3,0x57, 0xb5,0x6b,0xbf,0x83, 0xe3,0x96,0x22,0x29, 0xcf,0x09,0x8b,0x1d,
+ 0xe2,0xb3,0x0d,0xf8, 0xb8,0xc0,0xa7,0x8e, 0xdf,0xdb,0x6c,0x2f, 0x65,0x5a,0x6e,0xf7,
+ 0x6f,0xfd,0xba,0x8e, 0x4c,0x09,0xa8,0xd3, 0x76,0x61,0xc1,0x19, 0xe6,0x0c,0xcc,0xdc,
+ 0xd0,0x7b,0x85,0x97, 0xf1,0xa0,0x7f,0x9e, 0xc1,0xe2,0xef,0x99, 0x8f,0x87,0xa7,0xfd,
+ 0xfe,0x83,0xa1,0xc1, 0xd3,0x1f,0x57,0xc1, 0xe8,0x45,0x50,0xf0, 0xf1,0x55,0x6b,0xbb,
+ 0xf2,0xe7,0x78,0x2c, 0x7e,0xce,0x46,0x26, 0x42,0xce,0x2b,0x2b, 0x12,0x62,0x93,0xc6,
+ 0x8b,0x7b,0x6d,0x05, 0xd7,0xd8,0x73,0x87, 0x89,0xea,0x5a,0x8d, 0x37,0x18,0x70,0xfb,
+ 0x3d,0xd4,0x3a,0x13, 0x22,0x66,0xab,0x89, 0x13,0xbd,0x24,0x1a, 0x02,0x9a,0x22,0xf0,
+ 0x1d,0x69,0x56,0x4d, 0xa4,0xd0,0xa5,0x18, 0x1b,0xbf,0x6f,0xa9, 0x29,0xb0,0xc8,0xde,
+ 0x31,0x54,0x79,0xe8, 0x13,0x86,0x8d,0xc1, 0xf6,0x56,0x13,0x6b, 0xe9,0xce,0x0c,0x44,
+ 0x6f,0x32,0xd1,0xa4, 0x01,0x1e,0x45,0x6a, 0x70,0x86,0x18,0x1d, 0x69,0x21,0x93,0x8a,
+ 0x8e,0xfb,0xe4,0x70, 0x95,0x59,0x49,0x85, 0xc9,0xd7,0xef,0xa1, 0x3e,0xc7,0x09,0xa9,
+ 0x98,0x74,0x3c,0x38, 0x47,0x1a,0x36,0x7d, 0xf7,0x19,0xe8,0x51, 0xc5,0xc5,0x40,0xe6,
+ 0xf2,0xf0,0x9d,0xc0, 0xa1,0x7b,0xd6,0x62, 0xb7,0xa0,0xae,0x5f, 0xb7,0xbf,0x9d,0xc7,
+ 0xa9,0xb3,0x26,0x65, 0xbe,0xbe,0x3d,0xa0, 0xeb,0x2c,0x52,0x4c, 0x7c,0x25,0x9d,0xf4,
+ 0xd4,0xb3,0x99,0xd7, 0x17,0x34,0x32,0xf8, 0x92,0xbb,0x78,0xd6, 0xf6,0x3e,0x5c,0xb7,
+ 0xf2,0xcc,0xcc,0xf8, 0xef,0x39,0xd7,0x61, 0x7a,0x9a,0xca,0x38, 0x8d,0xb8,0x43,0xe7,
+ 0x3e,0xa3,0x2e,0x3c, 0x1d,0xf2,0x5f,0x5b, 0x18,0xd7,0x42,0xa6, 0x8a,0xa1,0x91,0xde,
+ 0xbd,0x8d,0x79,0x7f, 0xc8,0x6a,0x0b,0x79, 0xa4,0xed,0x4a,0x2e, 0xb3,0x34,0x24,0x4a,
+ 0x75,0xf9,0x57,0x70, 0x66,0xbe,0x0d,0xea, 0x3f,0x15,0x7c,0x56, 0x15,0xea,0x1c,0x05,
+ 0xfa,0x6b,0x26,0xaa, 0x8a,0x3a,0xe4,0x5b, 0x3d,0x72,0x3a,0xc5, 0x5f,0xce,0xe7,0xdb,
+ 0x37,0xe2,0xa5,0xb1, 0xf8,0x38,0xdd,0x0d, 0x6a,0x80,0x19,0xf7, 0x2a,0xe2,0xda,0x99,
+ 0x4e,0xde,0x6a,0xe5, 0xfe,0x7c,0x11,0x4e, 0x80,0x7b,0x0b,0x26, 0x7d,0x36,0xf3,0x30,
+ 0x36,0xa8,0xc0,0xb4, 0x81,0xa7,0x44,0xdb, 0x67,0xc2,0x13,0x26, 0xe6,0xaf,0x09,0x53,
+ 0xd7,0x77,0x43,0x11, 0xac,0xed,0x8c,0x33, 0xba,0xf6,0x7c,0xbe, 0xbe,0xae,0xaa,0x8c,
+ 0xc6,0xf9,0x5d,0x0b, 0xda,0xe8,0x5a,0x9a, 0x97,0x92,0xb9,0xd3, 0xb1,0x20,0x85,0xc7,
+ 0x87,0xd8,0xb8,0x71, 0x82,0x69,0x31,0xfb, 0x88,0x59,0x1e,0xca, 0xb7,0xdb,0xc9,0xb3,
+ 0x3f,0xa9,0x52,0x2a, 0xf8,0x38,0xfb,0x5a, 0x8e,0x33,0x67,0x49, 0x49,0x06,0x8a,0x9d,
+ 0x0f,0x12,0x83,0x9d, 0xff,0x9a,0xe6,0x82, 0x4c,0x33,0x9f,0xd0, 0xd9,0xe2,0xdc,0x0d,
+ 0xd3,0x8d,0x38,0xc9, 0x80,0xf7,0xbd,0xcb, 0xde,0x29,0x14,0x06, 0x1b,0x07,0xd4,0x37,
+ 0x74,0x16,0x1a,0x76, 0xe9,0x88,0xf2,0x11, 0x7a,0xa0,0x19,0x1c, 0x81,0xbf,0xdd,0xa8,
+ 0xf0,0xaa,0x1b,0x5e, 0x3d,0x0d,0x9d,0x8a, 0x48,0x93,0x8f,0xae, 0x13,0x2f,0x20,0x0f,
+ 0x05,0x63,0x79,0xf2, 0xf7,0xb8,0xcc,0xb5, 0xf0,0x14,0x50,0xfe, 0x86,0x59,0x59,0x30,
+ 0x90,0x01,0x89,0x31, 0x4b,0xda,0x3c,0x28, 0x9b,0x98,0x31,0x02, 0x4d,0x72,0xaa,0x75,
+ 0x7f,0xc2,0x92,0x0b, 0x69,0xb7,0xcd,0x42, 0x69,0xd8,0x65,0xea, 0xc6,0xb1,0x60,0xfa,
+ 0xc2,0x46,0x4e,0xd5, 0x09,0x2e,0xce,0xa7, 0xa0,0x80,0x19,0xef, 0xf2,0x4f,0x4f,0x64,
+ 0x52,0x13,0xa3,0xc0, 0xd2,0xd2,0x47,0x91, 0xfd,0xae,0xdf,0xb6, 0x5e,0x28,0x3a,0x8d,
+ 0xb4,0x4e,0x48,0x1d, 0x64,0xda,0x14,0x44, 0x48,0x3c,0x49,0x3a, 0x1c,0xb8,0xb6,0xeb,
+ 0xee,0x2f,0x53,0x7c, 0xfe,0x8a,0xb6,0x59, 0xbb,0x65,0x7d,0x14, 0x3c,0xbe,0x45,0xbe,
+ 0xbc,0xd4,0xed,0x5c, 0xef,0x26,0xfa,0x36, 0xab,0xa6,0x19,0x07, 0x0a,0x48,0x30,0xbb,
+ 0x2f,0xb9,0x4b,0xc2, 0xb0,0xf5,0x50,0xb7, 0x23,0x81,0xaf,0xf7, 0xd6,0xb1,0x73,0x6a,
+ 0xdc,0x3b,0x9c,0xa7, 0x77,0xa1,0xa3,0x33, 0x3a,0x65,0x1e,0x64, 0x1e,0x14,0x4f,0x3e,
+ 0xd6,0xf3,0x93,0x6d, 0x32,0xed,0x8a,0x28, 0x13,0xed,0x39,0x01, 0x91,0xba,0xa1,0x0e,
+ 0x36,0x49,0x63,0xcb, 0x34,0x9e,0x9f,0xc8, 0xfc,0x8c,0x9b,0x8d, 0x0d,0xc1,0x6f,0x8f,
+ 0x3f,0xef,0x12,0xf8, 0x3b,0xfb,0x92,0x0f, 0x8d,0x55,0x8d,0x8a, 0x07,0xe7,0x36,0x6b,
+ 0xc2,0x71,0xe0,0x8b, 0x95,0x2f,0x6f,0x71, 0xdd,0xf6,0xd3,0x3e, 0xb7,0x16,0x56,0x86,
+ 0xc4,0x7a,0xbe,0x9e, 0xae,0xba,0xf0,0xab, 0xe4,0x60,0xfe,0xaa, 0x59,0xb5,0x2d,0x04,
+ 0x8e,0x3d,0xa6,0x00, 0x44,0x00,0x9b,0x61, 0xe3,0xe5,0x1a,0x52, 0xe4,0xa1,0x96,0x1a,
+ 0xda,0xdf,0x2b,0x95, 0x39,0x8a,0x95,0x6b, 0x1d,0xfa,0x37,0x6a, 0xc7,0x43,0x83,0xc4,
+ 0xfc,0xbf,0x6c,0xae, 0xe5,0x7f,0xc9,0x20, 0xb7,0xe6,0x89,0x19, 0x3d,0xb6,0x13,0x5f,
+ 0x9f,0x17,0x71,0xf8, 0xfc,0x96,0x2e,0xcd, 0x1f,0x96,0xd8,0x62, 0xd2,0x36,0x2f,0x0c,
+ 0xe6,0x0f,0xd3,0x98, 0xe2,0xa4,0x67,0x12, 0x94,0x18,0xff,0xab, 0xee,0xd1,0x1a,0xb9,
+ 0x4c,0x77,0x4a,0xcf, 0xcb,0xd1,0xd4,0x89, 0x20,0x36,0xf5,0x19, 0x24,0xd2,0xad,0x2e,
+ 0xc0,0xb4,0xd2,0xf6, 0xb4,0x51,0xae,0xa6, 0xb8,0x5a,0x46,0x47, 0x01,0x68,0xf0,0x66,
+ 0x8e,0xa7,0x2f,0x9c, 0x96,0xb0,0xf1,0xb3, 0x3e,0xe6,0xa2,0x6b, 0x43,0x9a,0xc4,0x13,
+ 0x20,0x17,0x1b,0x63, 0xa3,0x6c,0x52,0x98, 0x40,0xd9,0x3b,0x68, 0x81,0x20,0x42,0x1f,
+ 0x9d,0x92,0x90,0x92, 0xeb,0x48,0x5e,0x5b, 0x4b,0x91,0x5f,0x47, 0xa2,0xea,0x6a,0x53,
+ 0x65,0x55,0x10,0x85, 0x4a,0x44,0x85,0xda, 0x05,0x93,0x4c,0x6d, 0x47,0x80,0x4c,0x8d,
+ 0xd8,0x8d,0xf2,0x69, 0x3f,0x5a,0x46,0xd2, 0xb6,0x1d,0xd4,0x7b, 0x81,0x83,0xf7,0xe1,
+ 0xa8,0xf7,0x70,0x5c, 0x67,0xf3,0x87,0x4f, 0x4b,0x15,0x75,0x6a, 0x60,0x13,0xdf,0x30,
+ 0xc8,0xfb,0x73,0x12, 0x1c,0xf0,0x9f,0x44, 0x71,0x56,0x00,0x19, 0xd5,0x54,0xaf,0xcd,
+ 0xc9,0xb7,0xba,0xc0, 0x90,0x75,0x91,0xb9, 0xdd,0x3d,0xb2,0xbc, 0xf9,0xbf,0xe5,0x68,
+ 0x87,0x12,0xf5,0x90, 0x6b,0xae,0xd9,0x09, 0x36,0x77,0xb6,0x39, 0xfd,0xbf,0x29,0xa4,
+ 0x83,0x47,0x6c,0xbc, 0xf7,0x52,0xfc,0xc6, 0x95,0x00,0x26,0x36, 0x66,0xc2,0x3d,0xe0,
+ 0x26,0x91,0xbb,0x62, 0x48,0xfd,0x2d,0x2c, 0xa6,0x1e,0x0b,0x4b, 0x54,0x30,0x87,0xe7,
+ 0x56,0x82,0x21,0xde, 0x49,0x04,0x4a,0x08, 0x68,0xff,0x21,0x24, 0x70,0x1a,0x08,0x69,
+ 0x08,0xf9,0xcd,0x09, 0x4d,0xa2,0x6d,0x54, 0xd0,0x80,0x9b,0x49, 0x25,0x40,0x7a,0xa0,
+ 0xd2,0x39,0x8a,0xa0, 0x02,0x21,0x7c,0x08, 0x19,0x00,0x53,0x91, 0xcc,0xf8,0xa5,0x6b,
+ 0x81,0xcc,0x65,0x48, 0x18,0x0c,0x41,0xbd, 0x1c,0x76,0x57,0x3f, 0xcf,0xa8,0xb0,0xa4,
+ 0xff,0x55,0x19,0xca, 0x9a,0xbc,0xae,0x34, 0xad,0xe8,0x57,0x43, 0xdb,0xe9,0xff,0x48,
+ 0x86,0x99,0xfb,0xb5, 0xdf,0xa5,0x3b,0x1d, 0x6c,0xd7,0x91,0x14, 0x29,0x5c,0x1d,0x99,
+ 0x6b,0xf0,0x76,0x72, 0x5a,0xea,0x41,0x6d, 0xa6,0xb4,0xd4,0xdd, 0x46,0xb8,0xdf,0xad,
+ 0x09,0x8d,0x9f,0x7e, 0x32,0x98,0xb7,0xb8, 0x91,0x7e,0xcb,0x37, 0x00,0xfc,0xae,0x37,
+ 0x96,0xe9,0xcc,0x57, 0x61,0x55,0x34,0xac, 0x7f,0xa7,0x4c,0xfc, 0xf8,0x18,0x6f,0x1f,
+ 0x09,0x35,0x60,0x3d, 0x18,0x98,0xae,0x36, 0x26,0x8e,0x8a,0xff, 0x3d,0x96,0x44,0x5a,
+ 0xd5,0x12,0xb8,0x13, 0xb0,0xea,0x36,0xb1, 0xb8,0xb2,0x60,0x0b, 0x56,0xc0,0x06,0xcd,
+ 0x53,0x42,0xce,0x30, 0xef,0x5a,0x0e,0xdb, 0x61,0x07,0x32,0x09, 0xa3,0x88,0xc0,0xee,
+ 0xd8,0x0c,0x62,0x45, 0x66,0x21,0xef,0xe0, 0x20,0x18,0x33,0x19, 0x7a,0x5e,0xc8,0x92,
+ 0xe8,0xe8,0x8f,0xdd, 0x7c,0xfb,0x48,0x9d, 0x4a,0x32,0xc6,0xbd, 0xdc,0x0a,0xf0,0x74,
+ 0x5c,0x2d,0xa5,0x6e, 0x50,0xb3,0xdc,0xe2, 0xda,0xf3,0x3f,0x9b, 0x2a,0x98,0x9a,0xe3,
+ 0xd9,0xd2,0x35,0xd0, 0x8b,0xec,0xf6,0xde, 0xfa,0xc6,0x86,0x93, 0x01,0x5f,0xb0,0xed,
+ 0x9e,0x04,0xa1,0x61, 0x59,0x85,0xb8,0x36, 0xd0,0x50,0xd2,0xc0, 0x68,0x21,0x83,0x69,
+ 0x8e,0xf3,0x94,0x21, 0x59,0xd9,0x69,0x35, 0x3d,0x1a,0xb8,0x4d, 0x58,0xbe,0xc3,0xe4,
+ 0x32,0xff,0xcc,0x3a, 0x06,0x43,0xc2,0xec, 0x73,0x0a,0xb7,0x50, 0xd3,0x99,0x31,0x4f,
+ 0xba,0x42,0x57,0x75, 0x77,0x13,0xbc,0xab, 0xe5,0xb6,0x0c,0x45, 0x1b,0xa1,0x01,0x06,
+ 0x07,0x49,0x04,0x12, 0x16,0x90,0xb3,0xf2, 0x1a,0x2d,0xba,0x69, 0xc6,0xa8,0x86,0x96,
+ 0x04,0x4e,0x45,0x89, 0xd7,0xf9,0xff,0x2e, 0x74,0x24,0xa9,0x5a, 0xa8,0x17,0x81,0xdd,
+ 0xdf,0x6f,0x2a,0x30, 0x34,0x5d,0x89,0xa3, 0xb7,0xef,0xba,0x5b, 0xd5,0x7f,0xa4,0x31,
+ 0x34,0xf0,0x93,0x60, 0xda,0x63,0x7d,0xcc, 0x02,0xf7,0x84,0xa0, 0x4d,0x90,0xd7,0x57,
+ 0x28,0x52,0xa3,0xe1, 0xe3,0x0b,0x41,0xca, 0x06,0x12,0x29,0x42, 0xc9,0x80,0xc8,0xf8,
+ 0xfd,0x97,0x95,0xde, 0x50,0x91,0x93,0x6e, 0x31,0x73,0x34,0x56, 0x43,0xb4,0xec,0xb0,
+ 0x6f,0x2b,0x16,0x0c, 0x82,0x09,0xcd,0x75, 0x9b,0xb1,0x6a,0x57, 0xf6,0xab,0x8b,0x12,
+ 0x13,0xd6,0xde,0xb3, 0x3e,0xed,0x6e,0xdb, 0x12,0x19,0xf5,0x2a, 0x4c,0x25,0x0d,0x08,
+ 0xb4,0xea,0x60,0xc1, 0x5a,0x20,0x40,0x4d, 0x34,0x08,0x93,0x52, 0x49,0x84,0xe4,0xb5,
+ 0x6c,0x6e,0x74,0xaa, 0x0b,0x11,0x10,0x51, 0x13,0x27,0x44,0xa9, 0x19,0x45,0x20,0x86,
+ 0x5b,0x99,0xf3,0x91, 0x48,0x30,0x00,0x40, 0x29,0x54,0x81,0xa2, 0x89,0x07,0x92,0xa5,
+ 0x53,0x63,0x23,0x30, 0xd0,0x27,0x34,0x92, 0x2b,0xbb,0x89,0xb8, 0x76,0x13,0x51,0x38,
+ 0x59,0xbc,0x98,0x85, 0x6f,0x53,0x6e,0xdf, 0x93,0x18,0xf4,0xe1, 0xe8,0xf0,0xb7,0x17,
+ 0x2d,0x5c,0x22,0xd9, 0xb2,0x96,0x16,0xe0, 0x40,0xe4,0x32,0x06, 0x74,0x26,0x2c,0x49,
+ 0xcb,0xa4,0x80,0x71, 0x34,0x90,0x89,0xaa, 0x02,0x52,0x08,0x24, 0x28,0x32,0x65,0x79,
+ 0x08,0x9c,0x48,0x24, 0xc0,0x90,0x24,0x2c, 0x44,0xe7,0x33,0x26, 0x21,0xdd,0x50,0x4c,
+ 0xc2,0x15,0x72,0xa4, 0x10,0x43,0xab,0x99, 0x11,0x31,0x26,0x80, 0xf3,0x93,0x06,0x49,
+ 0x14,0x33,0x32,0x84, 0x9c,0x2c,0x43,0x00, 0xb3,0x13,0x60,0xc1, 0x1c,0xa9,0x12,0x84,
+ 0x58,0x9a,0xcd,0x44, 0xa4,0xe4,0xc0,0x32, 0x30,0x1a,0x71,0x21, 0x20,0x27,0x0a,0x15,
+ 0x91,0x14,0x23,0xba, 0x95,0x0e,0x03,0xb3, 0x39,0x26,0x03,0x74, 0x89,0x92,0xa0,0xab,
+ 0x59,0xf8,0x73,0xf2, 0xd3,0x6d,0xec,0x4b, 0x3b,0x62,0xcb,0x2c, 0xd0,0xe0,0x8b,0x30,
+ 0x30,0x76,0xa6,0x50, 0x5b,0x11,0x31,0x95, 0x20,0xa1,0x82,0x49, 0x81,0x75,0x2a,0xc9,
+ 0xd2,0x4a,0x34,0x2b, 0x83,0x32,0xb5,0xd4, 0xbe,0x6c,0x0a,0x52, 0x67,0x34,0x1d,0x2b,
+ 0xd3,0xd1,0x12,0xda, 0x6d,0xf6,0xd7,0x85, 0xe2,0x65,0xea,0xe3, 0x75,0xb8,0x17,0xbb,
+ 0xdd,0xa7,0x63,0xd6, 0xe7,0xec,0x36,0xbc, 0x4e,0xab,0x78,0xd3, 0x4d,0x34,0xd3,0x4d,
+ 0x30,0xc3,0x0c,0x4d, 0xce,0x83,0x2a,0xfa, 0x34,0x9f,0xc8,0x11, 0xef,0x2b,0x16,0x3d,
+ 0x9b,0xa8,0x18,0x47, 0x13,0x51,0xce,0x3e, 0x1e,0xbf,0x73,0x6a, 0xdd,0x56,0x2a,0x08,
+ 0x2d,0x01,0x66,0xff, 0xb8,0x08,0x51,0xdb, 0xc5,0xf7,0x78,0x52, 0x80,0xea,0x15,0xfb,
+ 0xe4,0x90,0x07,0x91, 0x35,0xe8,0x74,0x16, 0x44,0xfb,0xff,0x5e, 0x51,0x37,0xa3,0x4a,
+ 0xc2,0xcc,0xce,0x6b, 0x38,0x10,0xb3,0xa8, 0x2a,0xbb,0xc4,0xdd, 0x81,0x04,0x91,0x25,
+ 0x12,0xad,0x5e,0x76, 0x06,0x0c,0xd5,0x09, 0x84,0xe0,0x1c,0xb6, 0x7a,0xb7,0x07,0x95,
+ 0x46,0xf2,0x19,0x5f, 0x3d,0x0b,0x41,0x4c, 0x67,0xda,0xd5,0x3d, 0x03,0x3f,0x80,0xde,
+ 0x5f,0x35,0x70,0x8e, 0x05,0xc6,0x5e,0x09, 0xb0,0x8c,0x8d,0xcf, 0xb8,0x73,0xa4,0x8f,
+ 0x3d,0x04,0x82,0x29, 0x54,0xbe,0x33,0xef, 0xf4,0x06,0xe3,0x39, 0x41,0xe1,0xaf,0x61,
+ 0xed,0x35,0x52,0xab, 0x32,0x29,0x9e,0x57, 0xe5,0x06,0x4b,0x06, 0x1b,0x27,0x27,0x81,
+ 0xf5,0x09,0xd2,0x93, 0xf5,0x58,0xef,0x52, 0xd7,0x9f,0xcf,0x6b, 0xfc,0xd5,0x4b,0x22,
+ 0x92,0x6b,0x03,0xb7, 0xbb,0xfc,0x7e,0x29, 0x3f,0x50,0x80,0xb1, 0xa2,0xcd,0x66,0xea,
+ 0x59,0xcd,0xcf,0xc5, 0xbf,0xd4,0x42,0x59, 0xd7,0xc1,0xc9,0x24, 0x6d,0x1e,0xda,0xb9,
+ 0x69,0x58,0xc9,0x23, 0xe9,0xac,0x30,0x14, 0xce,0x58,0xf0,0xe5, 0x7d,0xd1,0x01,0xf7,
+ 0xda,0x7d,0x59,0xe6, 0x47,0xc8,0xce,0x3e, 0x30,0xb1,0x68,0xaf, 0xc5,0x16,0x88,0x27,
+ 0x25,0xa5,0x57,0x55, 0xcf,0x38,0xa5,0xa1, 0xfb,0xc4,0x6b,0xcc, 0xf6,0xd9,0x6f,0xf8,
+ 0x5f,0x43,0xe6,0x28, 0xfd,0xd9,0xa3,0x39, 0xc4,0x95,0x96,0x8d, 0x8e,0x3e,0xe0,0xe0,
+ 0x1a,0x00,0xa0,0xc7, 0x9c,0xb4,0x6e,0x76, 0xc0,0x84,0x8f,0x36, 0x8a,0xe0,0x54,0x01,
+ 0x20,0x81,0x05,0x27, 0x54,0xaf,0xc7,0xee, 0x5d,0x01,0x94,0x36, 0xc4,0x22,0x01,0x02,
+ 0x05,0x08,0x44,0x20, 0x20,0x04,0x81,0x04, 0x75,0x70,0x36,0xa2, 0xd1,0xa9,0x08,0x80,
+ 0x40,0x22,0x04,0x00, 0x20,0x42,0x21,0x41, 0x77,0x6a,0x5b,0xcd, 0x30,0x00,0x84,0x88,
+ 0x8e,0xd1,0x51,0x3f, 0xa0,0xa2,0xc4,0xf6, 0x48,0x06,0xea,0x5d, 0xef,0x51,0xbe,0xf3,
+ 0x7b,0xa0,0x0c,0x6d, 0x3f,0x43,0xc1,0xee, 0x76,0xda,0x78,0x77, 0x5f,0x06,0x11,0x61,
+ 0xfc,0x59,0x36,0xb7, 0x3f,0x2a,0x54,0x53, 0x0f,0x53,0xc4,0xae, 0xdc,0x10,0x53,0xc6,
+ 0xab,0x13,0x9e,0xaa, 0x2d,0x6c,0xb4,0xd7, 0xb4,0x5c,0x59,0xb3, 0xcf,0x70,0xed,0x4b,
+ 0x05,0x34,0x1f,0xda, 0x80,0xbe,0xe1,0x84, 0x15,0x9f,0xe1,0x86, 0x73,0x2c,0xec,0xdc,
+ 0xfa,0xb0,0x99,0x11, 0xce,0x74,0x47,0x7e, 0xa9,0x95,0x4c,0x24, 0x2f,0x52,0x61,0xce,
+ 0xf3,0x2b,0x02,0x54, 0x18,0x35,0x6c,0xba, 0xf3,0xca,0xcb,0x51, 0xa4,0x1c,0x0d,0x40,
+ 0x50,0x48,0x15,0xce, 0x05,0x39,0x33,0x5f, 0x5a,0x6a,0x31,0x96, 0x35,0x3e,0x7d,0x5d,
+ 0x48,0x0f,0xd9,0x98, 0xc0,0xf8,0x14,0xa7, 0x51,0xba,0xa5,0xaa, 0x7b,0x61,0x2b,0x80,
+ 0x18,0xc6,0x59,0x1a, 0xbd,0x25,0x56,0xbe, 0x9f,0x0c,0xb2,0xde, 0xe4,0x3e,0x1e,0xee,
+ 0x99,0x14,0x78,0x23, 0xb4,0x8d,0x52,0x43, 0x97,0x2e,0x85,0xae, 0xe5,0x9b,0x4e,0x4a,
+ 0x2e,0x04,0x48,0x83, 0x19,0x31,0xb3,0x9c, 0x18,0x83,0x26,0x24, 0xa4,0xab,0x4c,0xc2,
+ 0x81,0x86,0xbf,0x4e, 0x8b,0xc7,0x6f,0x31, 0xc8,0xcc,0x14,0x53, 0x9d,0xd0,0xa6,0xdd,
+ 0xc3,0x77,0x52,0xc6, 0x2d,0x61,0x71,0x61, 0xcf,0x6d,0x55,0x08, 0xeb,0x71,0x65,0x53,
+ 0x84,0x99,0x00,0x09, 0x62,0x30,0xc2,0x20, 0x08,0x84,0x1e,0xdd, 0x2b,0xca,0xc7,0x98,
+ 0x52,0xe5,0x88,0xf6, 0x07,0xd2,0x44,0x2b, 0xea,0x3c,0xb2,0xf5, 0x87,0xf4,0xcc,0x45,
+ 0x74,0xa9,0xe5,0x79, 0x9f,0x3b,0x83,0x00, 0xc2,0x01,0x01,0x35, 0xc9,0xe0,0x08,0xe4,
+ 0x60,0x1b,0x59,0x8d, 0x43,0x46,0x4c,0xca, 0x52,0xeb,0x1a,0x7f, 0xcd,0x07,0x61,0x7b,
+ 0xd4,0xea,0xef,0x35, 0xb5,0xf4,0x9c,0x86, 0x66,0x61,0x99,0xcb, 0x17,0xf8,0xb4,0x19,
+ 0xc4,0x2e,0x4b,0x6b, 0xa8,0xc0,0xd3,0xc6, 0xcc,0xcd,0x5e,0xff, 0xe0,0xfb,0x9a,0xb8,
+ 0xb7,0xa7,0x46,0x54, 0x1f,0x1f,0x74,0x14, 0x81,0x6b,0x88,0x41, 0x1c,0xdb,0xbb,0xb3,
+ 0x23,0x5d,0x1b,0xf3, 0xd7,0x67,0x63,0x3d, 0x0c,0x39,0xa6,0x89, 0x00,0x4a,0xc3,0x7b,
+ 0x13,0xbd,0xf3,0xfb, 0x4d,0x2d,0x63,0x61, 0xd3,0xf7,0x3b,0x2a, 0x3f,0xbb,0x26,0xec,
+ 0x67,0xbc,0x9e,0xd0, 0xca,0xb2,0x4a,0x8a, 0x51,0x5a,0x57,0xc9, 0x50,0x10,0x3c,0xf6,
+ 0x0c,0x37,0x7c,0x7a, 0xdc,0x7b,0x36,0xd7, 0x3f,0x80,0x3b,0xcb, 0x0f,0x5e,0xd2,0xac,
+ 0x46,0x12,0x37,0x54, 0x04,0xc8,0xd0,0x50, 0x32,0xf8,0x99,0x33, 0x65,0x51,0x00,0xe8,
+ 0x47,0x13,0xcf,0x87, 0x57,0xf1,0xe4,0xa8, 0xcd,0xa9,0xcd,0x1f, 0xf5,0xe1,0xfd,0x77,
+ 0x8e,0x0c,0x0c,0xdd, 0x51,0x31,0x9b,0x10, 0xc8,0x4d,0xc1,0x83, 0x92,0x0d,0xc5,0x95,
+ 0xf3,0xbd,0x01,0x96, 0x5c,0x70,0xa9,0x8c, 0xd6,0x49,0x18,0xe4, 0x08,0x06,0xe8,0x5f,
+ 0xee,0x11,0x20,0x70, 0x75,0x36,0x8e,0xf8, 0x1b,0xdb,0xdf,0x16, 0x6b,0x75,0xe6,0x75,
+ 0x0e,0x9f,0xb6,0x0f, 0x5b,0x0d,0x54,0x2f, 0x5b,0x20,0xc0,0x7c, 0x0c,0x1e,0x17,0x2d,
+ 0x65,0x14,0x19,0x35, 0x4c,0xee,0xc6,0xa1, 0x84,0x08,0xc1,0x48, 0xe3,0xa9,0x5f,0xd7,
+ 0xa7,0x49,0x9e,0x7a, 0x0b,0x33,0x45,0xeb, 0x4b,0x4c,0xeb,0xdd, 0xdb,0xe8,0x26,0x60,
+ 0x45,0x63,0xbc,0xa0, 0x6e,0x59,0x4c,0xc7, 0x53,0x2f,0x73,0x57, 0x89,0x1f,0x9b,0xa8,
+ 0xda,0x5f,0x70,0xbe, 0x8e,0x06,0x7e,0xcc, 0xec,0x8f,0xa9,0xaa, 0xef,0xbe,0xe8,0x8c,
+ 0xd1,0x20,0xcb,0x62, 0x36,0x09,0xb4,0xc0, 0x6d,0xb7,0xce,0x8c, 0x0c,0xa7,0xa4,0x93,
+ 0xd5,0xd0,0xe8,0x12, 0xf6,0x93,0xb4,0x82, 0x00,0x46,0xa1,0xa8, 0xc6,0x49,0x0a,0x2e,
+ 0x6e,0x73,0x7a,0xf6, 0xf8,0xf9,0xd3,0xd1, 0x9c,0xc5,0x78,0x18, 0x23,0x77,0x9a,0xa7,
+ 0x13,0xf4,0xb7,0xb7, 0x68,0x9e,0xff,0x00, 0x53,0x23,0xc0,0xa2, 0x6d,0xd6,0xb4,0x9f,
+ 0x30,0x50,0x3c,0x1d, 0x53,0x9f,0x37,0xd9, 0xda,0xd9,0x31,0xf7, 0xfd,0x93,0xaf,0x04,
+ 0x5e,0xb6,0xca,0xeb, 0x9a,0xcf,0xea,0x75, 0xbf,0xc1,0x46,0xae, 0xab,0xfb,0xdb,0xfc,
+ 0xab,0x95,0x71,0x72, 0x95,0xbb,0x13,0x3e, 0xaf,0xad,0xdf,0x79, 0x5f,0x83,0x71,0x49,
+ 0xf7,0xec,0x28,0x48, 0x76,0x9c,0x32,0x6d, 0x11,0x6a,0x69,0x24, 0xda,0x7a,0x56,0xa0,
+ 0x82,0x05,0x0d,0x36, 0xe6,0x43,0x57,0x7b, 0xd8,0x9b,0x11,0x4d, 0x1c,0xc1,0xfd,0x24,
+ 0xc5,0xe2,0x0a,0x29, 0xe9,0x81,0x09,0x40, 0x5a,0xd3,0x8d,0x98, 0xa1,0xe4,0xc2,0xf1,
+ 0x9b,0x68,0x6b,0xf7, 0x96,0xeb,0xdc,0x95, 0x29,0xb8,0x6e,0xda, 0x0e,0xe7,0xb8,0x30,
+ 0x07,0x7c,0x91,0xb3, 0x83,0xba,0x5b,0xad, 0xc2,0x2b,0x37,0x47, 0x97,0xba,0xc3,0x99,
+ 0x63,0x14,0x20,0x5f, 0x0a,0xb6,0x99,0x96, 0x14,0x39,0xce,0x34, 0xf8,0xfe,0x0e,0x03,
+ 0xb3,0x11,0x17,0xae, 0xbd,0x8a,0xf1,0x73, 0x06,0x93,0x54,0x8b, 0x57,0xf2,0x22,0x3d,
+ 0xe4,0xe1,0xfe,0xf7, 0xd2,0xc1,0xcb,0xbb, 0xc9,0xf8,0x76,0x3d, 0xae,0xc9,0xfe,0xf6,
+ 0xbf,0xfa,0x6f,0x11, 0xad,0xe5,0x48,0x10, 0x01,0x80,0xd0,0x08, 0x1d,0xa8,0x63,0x05,
+ 0x38,0x81,0x21,0x1e, 0xc9,0xa4,0x8b,0x2c, 0x12,0x0c,0xf3,0x49, 0x0b,0xfe,0x8c,0x4a,
+ 0x1a,0x48,0xe3,0x6d, 0x23,0xb4,0xfe,0x5f, 0x5f,0x9f,0xe6,0xa8, 0xb0,0x1a,0x71,0x56,
+ 0x41,0x94,0xe6,0xbf, 0x69,0x25,0x79,0x3f, 0x0f,0x99,0xd2,0x50, 0x06,0x06,0x16,0x74,
+ 0x2d,0x84,0xb1,0xc1, 0xe4,0xf4,0x18,0x18, 0xdb,0x36,0x67,0x33, 0x8d,0xa9,0xc0,0x50,
+ 0x86,0xf9,0x63,0x85, 0xc7,0x03,0x8b,0x66, 0xba,0x36,0xf2,0xb4, 0x19,0xe0,0xf6,0xc8,
+ 0x0f,0x3e,0xd4,0x29, 0x0c,0xec,0x30,0x7c, 0x1c,0xdd,0x97,0x7b, 0x45,0xa6,0xc8,0x36,
+ 0x1c,0x64,0xe8,0xeb, 0x34,0x27,0x6c,0xf1, 0x9a,0x93,0x5f,0xe3, 0xe7,0x23,0x34,0x54,
+ 0x61,0x82,0xd8,0x4a, 0x2e,0x4e,0xd2,0xbd, 0x34,0x3b,0x53,0xba, 0x5f,0x29,0x34,0xaa,
+ 0xec,0xec,0xfd,0xec, 0x3b,0xfc,0xaf,0xab, 0x29,0x05,0x43,0x2d, 0x6c,0xfa,0x2c,0xf5,
+ 0xe9,0x75,0x46,0x3a, 0x7a,0x6a,0x5b,0xc1, 0x31,0xbb,0x84,0xe2, 0xc4,0xae,0x64,0xde,
+ 0x13,0xb8,0xf6,0x82, 0xe5,0xf3,0x70,0xa7, 0x7a,0xd9,0x17,0x84, 0x58,0x21,0x3f,0x3b,
+ 0xde,0x83,0x52,0x68, 0xa1,0x58,0x1b,0x4d, 0x80,0x7a,0x5a,0x65, 0x19,0xab,0x2e,0x62,
+ 0xf8,0xda,0x49,0x5e, 0x33,0x8c,0x43,0x28, 0x08,0x2b,0x84,0x6d, 0x27,0x10,0xe0,0x5b,
+ 0xf6,0x2e,0xb9,0x57, 0xf2,0xbf,0x70,0x6c, 0xea,0x0d,0xb3,0x37, 0xe9,0x8c,0x7a,0xbc,
+ 0x3d,0x63,0x30,0x43, 0x62,0x99,0xee,0xbd, 0xbe,0x8e,0x44,0x3e, 0x99,0x6c,0xff,0x39,
+ 0x41,0xf9,0x9c,0xb2, 0x39,0x31,0xf4,0x02, 0x20,0x4c,0x20,0xd8, 0xa1,0xb4,0xe3,0x64,
+ 0x7e,0x07,0xed,0xfb, 0x08,0x25,0x27,0xc3, 0xd7,0xd1,0xe2,0x32, 0x32,0xc9,0x48,0x8b,
+ 0x0b,0xb4,0x91,0xb4, 0xa5,0x26,0xdd,0x9f, 0x06,0x8b,0xe5,0x0d, 0x5f,0x8d,0xc6,0x75,
+ 0x8b,0xe8,0x6b,0x12, 0xc2,0x8b,0x8c,0xfd, 0x7c,0xfb,0x90,0xad, 0x37,0xa7,0x99,0xdf,
+ 0x76,0xb1,0x6e,0xb7, 0x9e,0x10,0xf3,0x1f, 0x17,0x20,0x59,0xda, 0x66,0x22,0x39,0x9c,
+ 0x36,0xf2,0xe2,0xdc, 0x83,0xb7,0x55,0x45, 0xa7,0xd5,0xeb,0xeb, 0xfe,0x15,0x32,0x65,
+ 0xf7,0x92,0x18,0xd6, 0xd5,0x65,0xb6,0x23, 0x94,0xea,0xbd,0xc3, 0xe6,0x62,0xc3,0xaf,
+ 0x66,0x54,0x0d,0xc6, 0x0b,0x61,0x6a,0x44, 0xe9,0xdc,0x0c,0xaf, 0x3f,0xf9,0xbe,0x96,
+ 0x9d,0xc2,0xc3,0xa7, 0x2a,0x73,0x2d,0xeb, 0x52,0x99,0x6b,0x52, 0xe3,0x0a,0x9b,0xb4,
+ 0xe9,0x5d,0x66,0x55, 0xed,0xde,0xa5,0x49, 0x9c,0x5a,0x4c,0x75, 0x7a,0x10,0xfe,0x2e,
+ 0x38,0x6a,0x91,0x84, 0x14,0xa8,0xc3,0xe4, 0xe2,0x69,0x43,0x2c, 0xda,0x53,0x27,0x5f,
+ 0x4f,0x98,0xfc,0x0f, 0xbf,0x3e,0xf6,0xeb, 0xfc,0xae,0xb5,0x9c, 0x5a,0xf0,0xce,0x86,
+ 0x11,0x7f,0x83,0x87, 0x63,0xce,0x62,0xc2, 0x21,0xb7,0x66,0xac, 0xef,0xec,0x8f,0x4d,
+ 0x27,0x2b,0x87,0x2f, 0xd1,0xc6,0xaa,0x35, 0xb0,0xe9,0x77,0x56, 0x1e,0xbb,0x10,0x27,
+ 0xbd,0xc6,0x8e,0x90, 0xbf,0x7e,0x6d,0x09, 0x3e,0x2c,0xab,0xd4, 0xb8,0xa5,0xc5,0x7e,
+ 0xa3,0xe7,0x78,0xab, 0x2d,0x34,0x63,0x19, 0xdf,0x21,0xd0,0x7b, 0x5d,0xe9,0xc8,0x1c,
+ 0x23,0x1f,0x1f,0x4f, 0x75,0xd7,0x35,0x60, 0x64,0xca,0x92,0xb5, 0x6a,0x53,0x55,0x24,
+ 0xc5,0x80,0x46,0x7f, 0x52,0xbe,0x6e,0xad, 0x52,0x4e,0x82,0x85, 0x2f,0x92,0xc3,0xe6,
+ 0x0f,0x93,0x0d,0x03, 0xa4,0xee,0xbc,0x12, 0xdd,0xfb,0x53,0x49, 0x6a,0x34,0x98,0xfa,
+ 0xab,0x5c,0x76,0xc5, 0x96,0x53,0x8c,0x17, 0xc0,0x85,0xb9,0x95, 0xc3,0xd2,0x1b,0xed,
+ 0x03,0x0b,0xfc,0xac, 0x34,0xd9,0x44,0x8a, 0x0e,0xc2,0xab,0x25, 0x1c,0x28,0x1b,0x7b,
+ 0x71,0xc4,0x41,0x7b, 0x22,0x04,0xdb,0xe4, 0xf3,0xd0,0x89,0x25, 0x86,0xcb,0xaf,0x4e,
+ 0x15,0x7f,0x4b,0x06, 0x48,0x78,0x17,0x52, 0xae,0x8d,0x27,0xce, 0x38,0x00,0x40,0x11,
+ 0x80,0xd5,0x39,0xf8, 0xf5,0x87,0x90,0xd0, 0xd9,0xa3,0x49,0x8c, 0x29,0xe5,0x3f,0x9c,
+ 0xc2,0x50,0x13,0xcb, 0xac,0xb8,0x74,0x28, 0x53,0x48,0x48,0x45, 0xe0,0x61,0x16,0x20,
+ 0x56,0x4d,0x5e,0x00, 0x52,0x1b,0x6a,0x61, 0x75,0xb7,0xca,0xa6, 0x3f,0x6d,0xdd,0x97,
+ 0x0f,0x99,0xeb,0xee, 0x64,0xed,0xe1,0xb9, 0x5f,0xed,0xef,0x2f, 0x77,0x06,0xd7,0x7e,
+ 0xf7,0x16,0x55,0xe9, 0x58,0xfd,0xdb,0xd4, 0xc2,0x22,0x42,0x3e, 0x7b,0x50,0x9f,0x7c,
+ 0x7d,0x13,0x9b,0x9e, 0x46,0x12,0x04,0xe9, 0x0d,0x0e,0xe2,0x7f, 0x35,0x42,0x74,0x0d,
+ 0x4d,0x14,0x4a,0x8f, 0x6e,0x6e,0xfc,0x65, 0x10,0xed,0x20,0x7b, 0x25,0xe7,0xaa,0xb4,
+ 0x04,0x7e,0x26,0x0d, 0xdf,0x70,0x55,0x62, 0x8a,0x55,0x3c,0x4a, 0xeb,0xb9,0x8d,0x67,
+ 0x9e,0x11,0xc3,0x54, 0x8a,0x0a,0x40,0x91, 0x76,0x71,0xcb,0x68, 0x29,0xe8,0xe6,0xda,
+ 0x53,0xc0,0x91,0x57, 0x7b,0xdf,0x4b,0x95, 0x2a,0x3c,0x6c,0x8f, 0xa8,0xb3,0xd6,0xa7,
+ 0x8a,0xae,0xb5,0x8a, 0x7f,0x7c,0x40,0x7b, 0xd3,0x68,0x40,0x88, 0x32,0xc6,0x46,0xb0,
+ 0x5a,0x19,0x8b,0xd1, 0xa1,0x8d,0x84,0x5c, 0x13,0x4e,0x09,0x7a, 0x41,0xc9,0x18,0x79,
+ 0xb4,0x27,0x10,0xab, 0x5d,0xad,0x0c,0x5f, 0xf0,0x5a,0xd3,0x30, 0x26,0xe2,0xb9,0x72,
+ 0x3b,0x4d,0x12,0x20, 0xc5,0x75,0x6d,0x6f, 0x95,0x59,0x13,0x46, 0xaf,0x9f,0xcb,0x5b,
+ 0x21,0xfe,0xe5,0x43, 0xf3,0x38,0x02,0x2e, 0x20,0xe6,0x4d,0x93, 0xd9,0xe7,0xf7,0xd6,
+ 0xcd,0x94,0x15,0x0b, 0x7b,0xa3,0x92,0xa3, 0xcc,0xfb,0x5e,0x8c, 0xc0,0xe2,0x4e,0xf3,
+ 0xdd,0x68,0xb3,0xba, 0xba,0x7e,0x07,0x14, 0xbd,0x2c,0x08,0x0f, 0xbb,0xf4,0xa8,0xe4,
+ 0xdc,0xb9,0xf0,0xb6, 0x1d,0xb5,0x29,0xce, 0xf6,0xb7,0x35,0x29, 0xcc,0xfa,0x1c,0x6d,
+ 0x7d,0xef,0x43,0x24, 0x61,0x90,0x46,0x58, 0xca,0xd5,0xa1,0x80, 0xa8,0x1b,0xd6,0x70,
+ 0xc8,0x61,0x40,0x55, 0x74,0x33,0x8d,0x53, 0xa5,0xef,0xce,0x71, 0x5f,0x00,0xb3,0xed,
+ 0x69,0x32,0x9d,0x1e, 0x87,0xac,0xc3,0x61, 0x7e,0xc2,0x10,0xe9, 0x4d,0x9c,0x43,0x4e,
+ 0x94,0xc6,0x0a,0x67, 0x40,0xe3,0xee,0x96, 0x41,0x35,0x2a,0xbe, 0x6b,0x49,0x12,0x49,
+ 0x48,0x04,0x20,0xfb, 0x2e,0x3d,0xab,0x4d, 0x44,0x80,0xe9,0x46, 0x42,0x80,0x05,0x15,
+ 0xc4,0x99,0x08,0x42, 0x41,0x01,0x02,0x01, 0x20,0x40,0x88,0x10, 0x80,0x56,0x12,0xb7,
+ 0xf2,0x76,0xbd,0x4f, 0x79,0x67,0x71,0xbf, 0xce,0xd5,0xab,0xe8, 0xf7,0x9f,0xdf,0x13,
+ 0xca,0xc0,0x6a,0xd2, 0x0f,0x16,0xd2,0x15, 0xd5,0xf2,0xbe,0x4b, 0x3f,0x59,0x18,0xdd,
+ 0xf5,0x41,0xd4,0x94, 0x04,0x04,0x20,0x50, 0x11,0x43,0x69,0x16, 0x61,0x3b,0xf5,0x34,
+ 0x93,0x99,0xb0,0x73, 0x02,0x41,0x00,0x0a, 0x01,0x40,0x88,0x05, 0x00,0x90,0xda,0x4d,
+ 0x80,0xd8,0x03,0x60, 0xda,0x4d,0x88,0x1b, 0x40,0x36,0x93,0x06, 0x9b,0x43,0xdf,0x98,
+ 0xa0,0xee,0x79,0x39, 0x1d,0x55,0x9b,0x26, 0xca,0x9f,0x93,0x54, 0xef,0x4b,0x22,0xb2,
+ 0xc6,0x84,0xdb,0x69, 0xa6,0x9b,0x43,0xb9, 0xb9,0x4b,0xba,0x2e, 0x4a,0xb0,0x8a,0x63,
+ 0x98,0x39,0x9d,0x65, 0xa4,0xea,0xc4,0xf8, 0x6e,0xea,0x38,0xfa, 0xee,0x2c,0x3d,0xa3,
+ 0x71,0x7d,0x8b,0x4b, 0x45,0xd5,0xd3,0xd9, 0x29,0xa1,0xa4,0x26, 0x90,0xd8,0x4c,0x9c,
+ 0x24,0x12,0x6c,0x7d, 0xf3,0xd9,0xf7,0xde, 0xff,0x68,0x4f,0x53, 0xb2,0xf0,0x7e,0x0d,
+ 0xce,0x9f,0xe2,0x7d, 0xcc,0xff,0x8f,0x9e, 0x3d,0xe7,0x4f,0x6e, 0xe4,0x31,0xb6,0x10,
+ 0xbb,0x59,0x40,0x25, 0xac,0x7d,0x34,0x69, 0xe4,0x1e,0x4b,0x52, 0x69,0x73,0x59,0x2b,
+ 0x5b,0xcb,0x4c,0x0e, 0xa7,0xed,0xeb,0x77, 0x15,0xe8,0x40,0xb7, 0x7d,0x6b,0xe9,0xf9,
+ 0xed,0x17,0x1d,0xd2, 0xf5,0x5b,0x5a,0xf8, 0xdd,0x86,0x3c,0xa9, 0xd0,0xee,0xf0,0xb0,
+ 0x25,0x5f,0x06,0xad, 0x33,0x30,0x5d,0xf0, 0x31,0x21,0x10,0x31, 0xb1,0x24,0xd8,0x24,
+ 0x30,0x6c,0x67,0x96, 0xc4,0x47,0x70,0xa0, 0x4a,0x18,0x9b,0x2a, 0xa3,0xa5,0xad,0x32,
+ 0x4a,0xe3,0x53,0xea, 0x61,0x61,0xd1,0xd6, 0xd4,0x65,0xee,0x62, 0x76,0x2b,0x49,0x64,
+ 0x95,0xa0,0xa1,0xf2, 0x9c,0xe4,0x16,0x77, 0x7d,0x47,0x85,0x5b, 0x58,0x19,0xdd,0x28,
+ 0x75,0xac,0xdb,0x19, 0x69,0x0c,0xae,0xc8, 0x1a,0xd8,0x0e,0x3b, 0xcf,0xc5,0x38,0x94,
+ 0xd3,0x48,0x44,0xa4, 0xdc,0xa4,0xc1,0x08, 0x14,0x9a,0x91,0x2e, 0x2c,0x6b,0x9c,0xdd,
+ 0x59,0xb9,0xd0,0x45, 0x8e,0xaf,0x07,0x35, 0xaa,0xbe,0xee,0x30, 0x7a,0xae,0x13,0xac,
+ 0xc3,0xed,0x32,0x71, 0x06,0x6f,0x35,0x9b, 0xf6,0x2e,0xed,0x3b, 0x5d,0xae,0x87,0x4b,
+ 0x7d,0x1f,0x61,0xbd, 0xf4,0xa8,0x64,0x1b, 0x54,0x51,0x09,0x4a, 0x07,0xfd,0x41,0x51,
+ 0x8e,0x7c,0xb6,0x72, 0x6c,0xfc,0xd9,0xce, 0xaf,0x1e,0x88,0xe1, 0x4a,0x24,0xdf,0x2d,
+ 0xd2,0x47,0x31,0xeb, 0xe4,0x73,0xf8,0x4c, 0x6f,0xa6,0x21,0x14, 0x2b,0xaf,0x8b,0x14,
+ 0x29,0xb0,0x67,0x25, 0xc8,0x9f,0x2f,0x1b, 0x66,0x72,0x7a,0xb8, 0x8a,0x38,0x28,0xd0,
+ 0x54,0x6c,0xb7,0xbe, 0x98,0x93,0xe2,0x66, 0x6a,0x2c,0x40,0x0c, 0x9b,0xad,0x96,0x5c,
+ 0x67,0x59,0x48,0xcf, 0x7a,0x9c,0x85,0x7e, 0xc9,0x48,0xa1,0x94, 0x9d,0xe2,0xea,0x11,
+ 0x20,0x5b,0x52,0x7e, 0x5f,0x79,0xf2,0xfa, 0x66,0x4c,0x5f,0x0a, 0xcf,0xf5,0x0f,0x17,
+ 0x04,0x8c,0x39,0x25, 0x95,0xcb,0x36,0x80, 0xce,0x35,0x26,0xbb, 0xa7,0x0d,0x14,0x32,
+ 0x1e,0x38,0xca,0x5b, 0x72,0x64,0x05,0x11, 0x10,0x34,0xe2,0x66, 0x30,0x70,0x36,0x3c,
+ 0x55,0x71,0x96,0xa7, 0xe7,0xe7,0x50,0x9a, 0x21,0x44,0x41,0x3a, 0x70,0xc4,0xa2,0x16,
+ 0x78,0x12,0x50,0x2f, 0x17,0x61,0xfd,0x32, 0x47,0x8b,0xdf,0x56, 0xe9,0xbd,0x6b,0xaa,
+ 0x6c,0x00,0xaf,0x52, 0x8c,0x09,0x41,0xad, 0xc0,0x9a,0xbd,0x39, 0xbb,0xc4,0x20,0x60,
+ 0x31,0x36,0xc1,0xb1, 0x18,0x10,0x09,0x28, 0xe0,0xd3,0x29,0x30, 0x4d,0x30,0x48,0x69,
+ 0x09,0xca,0x00,0x4a, 0x12,0x06,0x11,0x9b, 0x0d,0x39,0x41,0x0f, 0xbb,0xf4,0xd7,0x1e,
+ 0x51,0x99,0x33,0x12, 0x5e,0xab,0x8b,0xed, 0x77,0x7e,0x3f,0x6d, 0x82,0xbb,0xd7,0x3d,
+ 0x43,0xc9,0x8d,0xe6, 0xa3,0xa6,0xe6,0xa7, 0xb6,0xa1,0xc5,0x42, 0xac,0xb7,0x57,0x67,
+ 0x35,0xee,0x34,0x64, 0xbb,0xad,0xac,0xa4, 0xf7,0xa8,0x4a,0x1a, 0x3e,0x3f,0x9a,0xf1,
+ 0xe9,0x9b,0xef,0x63, 0x34,0x6d,0x63,0xf9, 0x7e,0xb7,0x23,0xe2, 0x8b,0x7b,0x6b,0x17,
+ 0x05,0xa5,0xdc,0xf2, 0x3c,0xee,0x74,0x03, 0xc2,0x96,0x99,0xa2, 0x18,0xb2,0x12,0xa8,
+ 0x22,0x7d,0x89,0x1a, 0x65,0x9e,0x76,0xf7, 0x2e,0xcb,0x66,0x57, 0x0c,0xec,0x19,0xeb,
+ 0xba,0xcd,0xb8,0x22, 0x03,0xee,0x50,0x56, 0xe7,0xb9,0xc9,0xa4, 0x68,0x13,0xec,0x78,
+ 0x77,0x7e,0x02,0xfe, 0x43,0x22,0xda,0xae, 0x51,0xb5,0x6f,0xa1, 0x94,0x09,0x85,0xc8,
+ 0xd6,0x46,0xd1,0xa6, 0x1a,0x92,0x79,0x79, 0xb3,0x8e,0x6e,0xaf, 0xa3,0xd1,0x94,0x4c,
+ 0xdf,0xda,0xc4,0xee, 0xff,0xc4,0x4d,0xdb, 0xc3,0x64,0xbe,0xcb, 0x67,0x16,0x01,0xd2,
+ 0xba,0xf6,0x21,0x2b, 0x40,0xaf,0x44,0x53, 0x59,0x6f,0x17,0x77, 0x5f,0xd7,0xe2,0xf5,
+ 0xa7,0xed,0x04,0x6d, 0x11,0x33,0xcd,0xe8, 0xcf,0xaf,0x84,0xe0, 0xe4,0x10,0xa2,0x5f,
+ 0x61,0x27,0x49,0xd2, 0x48,0xfa,0x67,0x71, 0x0b,0x90,0xf7,0x02, 0xde,0x6d,0xaf,0x4e,
+ 0xca,0xe6,0xbf,0x7d, 0x5b,0x9f,0x22,0x5a, 0x07,0x63,0xe7,0xb6, 0xa8,0xa5,0xbb,0x57,
+ 0x35,0x03,0xed,0xe9, 0xc6,0x1d,0xe3,0x46, 0x7b,0x2a,0xdb,0x9e, 0x2e,0xaa,0x5e,0x62,
+ 0xd7,0xf8,0x72,0x39, 0x12,0xbb,0xfd,0xb7, 0xda,0xd6,0x3b,0x0e, 0x96,0x87,0xb7,0xe8,
+ 0xf8,0x1c,0x6d,0x25, 0xe2,0xe1,0xf6,0x5d, 0x8f,0xe6,0xff,0xae, 0xad,0xb8,0x34,0x98,
+ 0x01,0x22,0x70,0x42, 0x08,0xb4,0x7c,0x6d, 0xd2,0xec,0x48,0x0d, 0xe1,0xe9,0x56,0x57,
+ 0xc4,0x96,0x31,0x85, 0x1c,0x86,0xfe,0x0b, 0x01,0x9c,0xbd,0x01, 0x38,0x76,0x52,0x54,
+ 0x4f,0x99,0x66,0x29, 0x66,0x6d,0x14,0x5d, 0x8b,0xff,0xbf,0xcd, 0x1f,0x04,0x77,0x1b,
+ 0x2f,0x52,0xd5,0xa5, 0x32,0xeb,0xc4,0x1c, 0x9d,0x94,0x71,0x18, 0x46,0x1c,0xfc,0xa3,
+ 0x65,0x39,0xe3,0x72, 0x90,0xbd,0xf2,0xb7, 0x7e,0x4d,0x4b,0x46, 0x78,0x59,0xad,0xf6,
+ 0x12,0xd9,0x46,0xad, 0xfc,0x4d,0xf0,0x18, 0xeb,0x9e,0xb3,0xcb, 0x4d,0xc1,0x87,0x69,
+ 0x41,0x0c,0xcd,0x65, 0xe9,0xba,0xfe,0x92, 0xab,0x26,0x78,0xf6, 0x76,0x11,0xd2,0x0e,
+ 0xe2,0x32,0x72,0xd8, 0xb5,0xf8,0x8d,0x3f, 0xf5,0x7d,0xdc,0x8d, 0xe5,0x58,0x2f,0xf6,
+ 0xed,0xed,0x90,0xd1, 0xf3,0xe9,0x3a,0x12, 0xde,0x59,0x03,0xfe, 0xfc,0xd8,0xc8,0xaf,
+ 0x9d,0xe1,0xe0,0x3a, 0x13,0xd6,0x18,0x8a, 0xb8,0xc8,0x88,0xb5, 0x34,0x1d,0x93,0x50,
+ 0x37,0xe1,0xcf,0x30, 0xf9,0x31,0x2d,0x46, 0xed,0xc2,0x74,0x2e, 0x4e,0x9a,0xf1,0x0b,
+ 0x01,0xf6,0x94,0x51, 0x90,0x07,0xa2,0x6e, 0x41,0x23,0x74,0x9a, 0x65,0x6d,0xb2,0x34,
+ 0xdf,0xe9,0xc4,0x8f, 0xb1,0xd1,0x3a,0xbc, 0xdd,0xc2,0xe6,0x9c, 0xb3,0x04,0x57,0xf8,
+ 0x64,0xc3,0x9f,0x29, 0xd0,0xe0,0x4f,0x3c, 0x5f,0xbe,0x0a,0x4c, 0x29,0xc9,0x13,0xec,
+ 0xf9,0x9a,0xd8,0x9d, 0xca,0xb2,0xba,0x13, 0x23,0xf8,0xb5,0x94, 0x94,0x5b,0x67,0x30,
+ 0xa1,0x2c,0xf0,0x57, 0xd4,0x37,0x27,0x89, 0x8b,0x25,0x36,0x36, 0x6b,0x23,0xb1,0xae,
+ 0xf1,0x74,0x0b,0x3b, 0x5b,0xc4,0xe2,0x6c, 0x24,0x97,0x9a,0x9a, 0x9b,0x75,0x17,0x28,
+ 0x80,0x04,0x09,0x00, 0x80,0x04,0xc6,0x31, 0x83,0xa1,0x5c,0x7a, 0x1a,0x6c,0x5b,0xb5,
+ 0x6f,0x6d,0x2b,0x61, 0xaf,0xaf,0x6f,0x77, 0xb0,0xfc,0xbd,0x95, 0xc7,0x45,0xe7,0xe7,
+ 0x2e,0x93,0xbd,0x80, 0x23,0xc4,0xee,0xa4, 0x84,0x56,0x6a,0x51, 0xb0,0xd8,0x79,0x7e,
+ 0x65,0x3f,0x9d,0x6b, 0x01,0xa6,0xa8,0xf5, 0x30,0x72,0x4c,0x4c, 0x66,0x44,0xc4,0xa1,
+ 0xce,0x20,0xd1,0x77, 0x9e,0xa7,0xe8,0x22, 0x15,0x65,0x0c,0x66, 0x11,0xf7,0x90,0xb5,
+ 0x6c,0x25,0x36,0x55, 0x50,0x89,0x6d,0x77, 0x7e,0xc7,0x89,0x5c, 0xe7,0xa7,0xd8,0x75,
+ 0xb3,0x5b,0x9d,0xee, 0xdb,0x47,0xc2,0x44, 0x25,0x98,0x02,0x0e, 0x38,0x6b,0xa1,0x60,
+ 0xe0,0x42,0xc8,0x77, 0x33,0x6c,0xf8,0x77, 0xc7,0x55,0xdc,0x61, 0x9a,0xe4,0x7c,0x5f,
+ 0x95,0x20,0x24,0x0f, 0xdc,0x40,0xa1,0xa6, 0x09,0x8d,0x3f,0x56, 0x23,0xd4,0x8a,0x29,
+ 0x71,0x13,0xcf,0xb9, 0x4e,0x63,0x56,0x55, 0x56,0x88,0x77,0x04, 0x12,0x44,0x94,0x49,
+ 0x97,0xef,0xbf,0x9f, 0x66,0xee,0x3d,0x9b, 0x5c,0xbe,0xfb,0x79, 0xd1,0xfc,0x6f,0x4b,
+ 0x7d,0xa3,0xe1,0xea, 0x33,0x7e,0xae,0xd7, 0xa6,0x03,0xc2,0x03, 0xa0,0xe1,0x7d,0x9f,
+ 0xb1,0x5f,0x8f,0x39, 0x1e,0x47,0x6b,0x33, 0xbd,0x96,0xdf,0xd5, 0xfa,0x7f,0xc4,0xd6,
+ 0x31,0x93,0xd7,0xd8, 0x36,0xb8,0x07,0x2c, 0x6b,0x75,0x69,0xa6, 0x3a,0xe7,0x02,0x8a,
+ 0x10,0xd8,0x20,0x77, 0x3a,0xe3,0xe5,0x66, 0x45,0xa3,0xa5,0xc9, 0x58,0x30,0x31,0x82,
+ 0xfc,0x54,0xcc,0xd3, 0xc4,0x18,0x63,0xb6, 0x2d,0x49,0x48,0x8d, 0x8e,0xbd,0x28,0xf0,
+ 0x24,0xce,0xcb,0x4d, 0xa3,0x60,0xe1,0x47, 0xdf,0xa0,0xe4,0xdd, 0xe7,0xad,0x53,0x06,
+ 0xa2,0x43,0x1b,0xbe, 0x03,0xfc,0x20,0x07, 0x20,0xc3,0x6f,0x13, 0x33,0x67,0xae,0x82,
+ 0xff,0x7c,0xad,0x7e, 0xa7,0xa1,0xc2,0xa7, 0x85,0xd3,0x78,0xa2, 0x78,0x38,0x58,0x5f,
+ 0x87,0x3e,0x06,0x00, 0xfc,0x82,0x53,0x86, 0x71,0x91,0x31,0x76, 0x44,0x64,0xfe,0x8e,
+ 0x35,0x03,0x2e,0xf9, 0x00,0x01,0x84,0xa2, 0x54,0x2c,0xb0,0x1d, 0x59,0x49,0x56,0x34,
+ 0x40,0xad,0xd3,0xa9, 0xda,0xe0,0xe4,0xad, 0x37,0x87,0xf8,0x5b, 0x0d,0xf2,0xd8,0x0d,
+ 0x75,0x42,0xe6,0x8d, 0xb3,0x22,0x99,0xfa, 0x36,0x90,0x30,0xd0, 0x7b,0xff,0xc9,0xf2,
+ 0xc8,0x5d,0x73,0x79, 0x03,0x5a,0xc2,0x3b, 0x2c,0x7a,0xf9,0x7b, 0x48,0xbe,0xa8,0x7d,
+ 0xfa,0x2e,0x95,0xda, 0x70,0xaf,0x38,0x5a, 0x9f,0x79,0x56,0xf1, 0x87,0x9d,0x26,0x97,
+ 0xbb,0xcc,0x17,0x41, 0x31,0x86,0x73,0x18, 0xe6,0x8f,0x33,0x98, 0x07,0x40,0x4a,0x11,
+ 0xa4,0x4c,0xa5,0x6a, 0x97,0x25,0x60,0x26, 0x2a,0x9a,0xa0,0x8c, 0x99,0x02,0x23,0x6f,
+ 0x8d,0x48,0x71,0x3e, 0x24,0x4d,0xa2,0x42, 0x49,0x09,0x24,0x6d, 0xbe,0x6f,0x83,0xa3,
+ 0x9d,0x95,0x52,0x9d, 0x62,0x83,0xa6,0xc7, 0x1d,0x0e,0xc8,0xba, 0x37,0xd2,0x46,0x63,
+ 0xf7,0xaf,0x6c,0xf5, 0xc3,0x2a,0xd2,0xc7, 0x64,0xcb,0xbf,0x43, 0x43,0x23,0x41,0x7b,
+ 0x0b,0x5f,0xdc,0xdf, 0x69,0x7d,0x3d,0x65, 0xe7,0x8f,0x5b,0xcb, 0xb4,0xa0,0xe0,0x0e,
+ 0xe5,0xf6,0xcc,0x5a, 0xfa,0x53,0x89,0x12, 0x00,0x2a,0x01,0x11, 0x01,0xb8,0x93,0xc7,
+ 0xa0,0x08,0x12,0x30, 0x74,0x5d,0x8c,0xe5, 0xdd,0xdd,0x55,0xb6, 0x78,0x6c,0x24,0xcd,
+ 0x53,0xe1,0xab,0xc5, 0xdb,0x3f,0x99,0xb6, 0x6a,0xb9,0x82,0x85, 0xa2,0xce,0xa6,0x98,
+ 0x71,0xc9,0x2b,0xdb, 0x8d,0x2c,0x0b,0x79, 0x82,0x0a,0x2f,0xaf, 0xec,0xa1,0x44,0x1a,
+ 0x96,0x4f,0x70,0xea, 0x4f,0x73,0x7a,0xa8, 0x37,0x18,0xde,0xbf, 0xcc,0xc1,0x22,0x00,
+ 0x31,0x9b,0x38,0x47, 0x85,0x82,0x34,0x80, 0x92,0x50,0xfb,0x34, 0x1f,0xd9,0x48,0x1e,
+ 0x46,0x3f,0x19,0xe8, 0x69,0x70,0x2b,0xa7, 0xe7,0xfc,0xee,0x24, 0x6e,0xbb,0x33,0x7d,
+ 0x35,0x75,0x33,0x67, 0xfe,0xb4,0x00,0xf2, 0xfa,0x1a,0x08,0x1d, 0x04,0x70,0xa8,0xfa,
+ 0x64,0xb3,0xa5,0xe1, 0x06,0x96,0xef,0xfe, 0x47,0xff,0xf9,0x6a, 0xed,0x27,0x41,0xb8,
+ 0x03,0x3c,0x0d,0xde, 0x98,0x6e,0xe3,0x48, 0x7e,0xd9,0xac,0x25, 0xd0,0x69,0x2a,0xb9,
+ 0xa6,0x66,0x5d,0x42, 0xa0,0xc5,0x0d,0x1f, 0x74,0x72,0x34,0xa0, 0x89,0xfe,0x45,0x06,
+ 0x4c,0xdf,0x70,0x6e, 0xb5,0x61,0xc8,0x8e, 0x6d,0x6b,0x30,0xcd, 0x11,0x4c,0xc1,0x84,
+ 0xd8,0x78,0x97,0x18, 0x96,0x2a,0x1f,0x9b, 0x25,0x3f,0xb1,0xe6, 0xee,0x37,0x1b,0x0b,
+ 0x65,0xed,0x08,0x7c, 0x09,0xf4,0xa9,0x9e, 0x02,0x04,0x66,0x06, 0x3f,0xa2,0xfa,0xba,
+ 0x58,0x03,0xdd,0xec, 0x85,0xce,0xb8,0x9e, 0x69,0x66,0x30,0x1b, 0x32,0x30,0x06,0xf4,
+ 0x03,0xfd,0x17,0xb4, 0xb9,0x98,0x0c,0xee, 0xc2,0xe0,0x78,0x6c, 0x68,0x80,0xde,0xc4,
+ 0xfe,0x9a,0xa1,0xd2, 0xd8,0xcd,0xe3,0x66, 0x96,0xa6,0xc4,0xb7, 0x41,0xbd,0x59,0xbf,
+ 0xfa,0x52,0xfe,0x67, 0x53,0x24,0x8a,0x74, 0xb6,0x9d,0x46,0x56, 0x7d,0x59,0xc6,0x8a,
+ 0xad,0x69,0xec,0x24, 0xd7,0x08,0x94,0x5f, 0x3a,0x36,0xd6,0xd0, 0xf1,0x36,0x4e,0xed,
+ 0xec,0xb7,0x7f,0xf9, 0x22,0xc4,0x33,0x26, 0xbb,0x5f,0xd1,0xcf, 0xf2,0x80,0xd6,0xa8,
+ 0xba,0x38,0x17,0x3c, 0x9c,0x25,0xd2,0x08, 0xf7,0x0c,0xa9,0x11, 0x08,0x5e,0x09,0xc2,
+ 0x14,0xf2,0x1f,0x69, 0x99,0xf7,0x45,0x20, 0xf0,0x4b,0x56,0x4e, 0x67,0xbf,0xc7,0xa6,
+ 0x7e,0xd6,0x11,0xa8, 0xb8,0xd7,0xd5,0x3f, 0xec,0xcc,0x8d,0xeb, 0x3e,0x45,0x98,0x3a,
+ 0xce,0x3a,0xdf,0xba, 0x44,0xf3,0x19,0xf1, 0x28,0xb7,0xf7,0x97, 0x16,0x1c,0xab,0x2b,
+ 0x26,0x35,0x8f,0x7b, 0x38,0x9e,0x07,0x44, 0xd8,0x48,0xd4,0xc6, 0x24,0x60,0xd8,0xb2,
+ 0x00,0x20,0xe2,0x8c, 0x90,0x40,0x20,0x80, 0x18,0xf6,0x53,0x8c, 0x1f,0xd4,0x92,0xdf,
+ 0x23,0x92,0x2b,0xf7, 0x77,0x36,0x3d,0x47, 0x0d,0x5f,0x67,0xdd, 0x6e,0x6b,0xa6,0xe1,
+ 0x88,0x7d,0x97,0x5d, 0x2b,0x61,0x31,0x50, 0xc1,0xfa,0xc7,0x4b, 0x17,0x03,0xe8,0xe1,
+ 0xe0,0x3f,0x80,0x57, 0x18,0x28,0xe8,0xc6, 0x02,0x39,0x21,0xb1, 0x0a,0x77,0x9b,0x54,
+ 0xd4,0xc7,0xf5,0x53, 0xe8,0x7a,0xce,0xdf, 0xf6,0x9a,0xdb,0xdd, 0xce,0x45,0x4d,0x3c,
+ 0x9f,0xe3,0xce,0xfa, 0x6c,0x98,0x53,0x73, 0xb8,0x9a,0x29,0x65, 0x6a,0xbf,0x17,0x41,
+ 0xd2,0x51,0x2a,0x6c, 0xea,0x27,0x72,0x5e, 0x8c,0x48,0x31,0xd4, 0x0c,0x86,0xe2,0x08,
+ 0x86,0x43,0x41,0xbe, 0xcb,0xfb,0x36,0x37, 0x15,0x8c,0x06,0x43, 0xa9,0xf8,0x7a,0x1c,
+ 0x7d,0x62,0xd1,0x03, 0xf8,0xfe,0x39,0x20, 0x52,0x10,0x98,0x24, 0xd0,0xcf,0x36,0x0f,
+ 0x35,0xc9,0x24,0xc0, 0xa4,0xa8,0x24,0x82, 0x0f,0x99,0xe6,0x3c, 0x44,0x44,0x3c,0x4a,
+ 0x52,0x76,0x66,0x66, 0x66,0x66,0x94,0xb5, 0xd1,0x04,0x10,0x49, 0x06,0x21,0xa4,0xf6,
+ 0x7b,0xe8,0x25,0xe7, 0x1f,0x8b,0xd7,0x00, 0xee,0x01,0x71,0x17, 0x1c,0xb6,0x1a,0x5e,
+ 0xcf,0x67,0xb3,0x6d, 0xf1,0x9f,0x8a,0xe5, 0x12,0x5a,0xce,0x96, 0x8b,0x09,0xbb,0x14,
+ 0x76,0x16,0x7d,0xf2, 0x99,0x70,0x6b,0x82, 0x35,0x95,0x25,0x86, 0x61,0xf7,0x54,0xf2,
+ 0x0e,0x42,0x00,0x54, 0x86,0x0c,0x99,0x96, 0x47,0x37,0x68,0xa6, 0x97,0x18,0x66,0x4c,
+ 0xf8,0xcd,0x67,0xb9, 0xe0,0xcc,0x2c,0xe9, 0xe7,0xde,0x6d,0xac, 0x58,0xf3,0x7f,0xce,
+ 0x0e,0x93,0x91,0xfc, 0x68,0xd1,0x8b,0x95, 0x6b,0xec,0x39,0x23, 0xd1,0x8a,0x19,0xe2,
+ 0xcd,0x71,0xd5,0x8a, 0xe7,0x9c,0xf0,0xef, 0x31,0x77,0x62,0x06, 0x06,0x10,0x19,0x82,
+ 0x89,0x3b,0xe1,0x2d, 0x94,0x2e,0xfd,0xdd, 0xc4,0x7d,0x9d,0x1c, 0xa4,0x56,0xe9,0x66,
+ 0xb1,0x9e,0x1a,0xe3, 0xad,0xb5,0xaa,0x1f, 0x95,0xcb,0x50,0x5e, 0xb0,0xdb,0x7a,0x70,
+ 0x81,0x43,0x1e,0xc2, 0x92,0xe2,0x6d,0x63, 0x24,0xb6,0x3c,0xb7, 0x3f,0x73,0x75,0x52,
+ 0xbf,0xeb,0xbc,0x4e, 0xbf,0xc3,0xf8,0xdd, 0x3f,0xcc,0xad,0xbd, 0x79,0xaf,0x46,0x8e,
+ 0xd7,0xe7,0xe1,0x1d, 0xf7,0x7d,0x4c,0xb3, 0xf0,0x96,0x0a,0x41, 0x86,0xa9,0xc4,0xab,
+ 0x87,0x4c,0xb0,0xb9, 0x82,0xc4,0xe3,0x25, 0xde,0xe3,0xfe,0xa7, 0x9a,0x39,0x41,0xfb,
+ 0x9f,0x4a,0x0e,0xbb, 0x4f,0xe0,0xe0,0x50, 0xa2,0xff,0x0c,0x8b, 0xd7,0xc4,0xd6,0x42,
+ 0x23,0x33,0xc2,0x54, 0x59,0x4a,0xa5,0x2e, 0xfd,0x55,0x35,0xdf, 0x5c,0x20,0x77,0x65,
+ 0x4c,0x3c,0x41,0xf8, 0x52,0x56,0x64,0xa7, 0xba,0xaa,0xec,0xc9, 0xcd,0xe0,0xe4,0xdd,
+ 0xad,0xa2,0xd1,0xbc, 0x47,0xcb,0x48,0x1d, 0xe5,0xe3,0xe8,0xeb, 0x48,0x68,0xf8,0x6d,
+ 0x25,0xdb,0x76,0x3c, 0xbd,0x0d,0x34,0xb6, 0x56,0x6e,0xb6,0xb7, 0x56,0xfd,0x54,0x02,
+ 0x24,0x52,0x08,0x00, 0xa0,0x85,0x73,0x34, 0xbf,0xc6,0x54,0x90, 0x3e,0xf8,0x20,0x6f,
+ 0x4e,0x12,0xfa,0xf6, 0x09,0x64,0x5a,0x1f, 0x11,0xec,0xa4,0x87, 0x60,0x8e,0x58,0xe3,
+ 0x9e,0x37,0xa9,0x19, 0x63,0x43,0x27,0x34, 0x07,0xa9,0x90,0xcc, 0x7e,0x1f,0x94,0xb2,
+ 0xc7,0x6a,0x06,0x29, 0xaa,0x1a,0xc6,0xa0, 0xe5,0x0c,0x5c,0xdd, 0x3e,0xce,0xbb,0xbf,
+ 0x84,0xa5,0x14,0x93, 0xd4,0x1f,0x8f,0xb9, 0xae,0x88,0xcd,0xdf, 0xc9,0xdc,0x18,0xb6,
+ 0x26,0xc8,0x1b,0x42, 0x23,0x9e,0x7d,0x41, 0x44,0x34,0x3a,0x3c, 0x1e,0x10,0x80,0x17,
+ 0xae,0x07,0xa0,0xf7, 0xd5,0x8f,0xc2,0x23, 0x2e,0x40,0x86,0x29, 0xbb,0x5e,0x68,0x1f,
+ 0x0d,0xcb,0xe0,0xe3, 0xfa,0x3f,0x73,0x62, 0x23,0x84,0x68,0x8b, 0x36,0x4e,0x07,0xa5,
+ 0x8c,0x8b,0xec,0x91, 0xee,0xfe,0x04,0xb9, 0x50,0xde,0xf2,0x4b, 0x1c,0x31,0x22,0xdb,
+ 0xf9,0x47,0xa4,0xcf, 0x1f,0xad,0xf9,0xce, 0x94,0x20,0x9e,0x41, 0xde,0x36,0x4a,0x60,
+ 0xea,0xf3,0xbe,0x77, 0x56,0x72,0x45,0xe1, 0xbc,0x07,0x07,0x49, 0x62,0xd5,0x4e,0x85,
+ 0xea,0x12,0xe6,0x69, 0x2b,0xe9,0x3b,0x83, 0x2c,0x71,0x59,0xf1, 0x2f,0x44,0x44,0xbc,
+ 0x50,0x67,0x75,0xe2, 0x59,0x2f,0x7a,0x09, 0x9c,0x27,0xaa,0xcb, 0x38,0x8a,0x83,0x6c,
+ 0xf2,0x00,0x1c,0xc9, 0xdb,0xa2,0xc4,0xb8, 0x80,0xbf,0x65,0x42, 0xa4,0x10,0x9b,0xa0,
+ 0xb3,0x8d,0x48,0xe8, 0x43,0x51,0x77,0xb6, 0x46,0x76,0xb1,0xed, 0x89,0x42,0x7e,0x1c,
+ 0x29,0x2b,0xd4,0x13, 0x04,0x92,0x46,0x5f, 0x51,0x21,0xca,0xcc, 0x68,0xe5,0x4d,0xb4,
+ 0xae,0xb9,0xe5,0x24, 0x63,0x7c,0x32,0xa0, 0x74,0xf6,0x07,0x48, 0xc3,0x96,0x7c,0xe9,
+ 0x5b,0x16,0x8d,0xef, 0x0f,0x1f,0xc8,0x4e, 0x68,0xb8,0x85,0xe5, 0xfa,0x47,0x0c,0xf7,
+ 0xa7,0x36,0xd3,0xc7, 0xe5,0xf5,0xad,0x13, 0xf2,0x1a,0xb2,0x41, 0xc8,0x18,0x07,0x44,
+ 0x32,0x40,0x11,0x11, 0x10,0x12,0x6b,0xfb, 0x5a,0xcd,0xfe,0x7d, 0x41,0xe3,0x47,0x53,
+ 0x3d,0x8e,0xdc,0xf5, 0xaf,0x86,0x22,0xf6, 0x57,0x75,0xa2,0x24, 0x55,0x33,0x06,0x7a,
+ 0x4f,0x1a,0x9c,0xfa, 0x03,0x6b,0x50,0x0d, 0xfd,0xb6,0x6b,0xd3, 0xf5,0x3e,0x8d,0x2b,
+ 0xf6,0x9e,0xfe,0x0f, 0x6f,0xfc,0x30,0x17, 0x0d,0x21,0x7c,0xac, 0xd8,0xb8,0xe4,0x6d,
+ 0x1f,0x92,0x66,0x26, 0xae,0x12,0xcf,0x1f, 0xbf,0x19,0x3c,0xd8, 0x78,0xf2,0x0e,0x2f,
+ 0x83,0x9e,0x91,0xff, 0x29,0x9e,0x1f,0xc6, 0xc3,0xd9,0xf9,0xbd, 0x7d,0x2b,0xd9,0xda,
+ 0xd6,0x49,0x6a,0xfd, 0xb9,0x16,0xdc,0x9f, 0x95,0xad,0x85,0xf2, 0xf1,0x20,0x29,0x74,
+ 0xb4,0x31,0xa9,0xfd, 0x64,0x16,0x58,0xac, 0x8c,0x4d,0xa4,0x0d, 0x8a,0x49,0x9d,0x0b,
+ 0x81,0x84,0xc6,0x93, 0x64,0x32,0x70,0x5c, 0x15,0x60,0x02,0x3a, 0xa8,0x80,0x94,0x14,
+ 0x5f,0x35,0x94,0x66, 0x64,0x28,0xed,0xbd, 0x7e,0x33,0x75,0x9e, 0x2f,0xb4,0x6c,0xea,
+ 0xb0,0x61,0xfe,0x64, 0x40,0xd7,0xf3,0xde, 0x27,0x43,0x39,0x0c, 0x7f,0x0e,0xff,0x51,
+ 0x35,0x30,0x7c,0x56, 0x8c,0x06,0x54,0xca, 0x4d,0x19,0xc4,0xda, 0xdc,0x7b,0xdf,0xdd,
+ 0xa8,0xb3,0xbc,0xa3, 0x1b,0x3f,0xfb,0xd4, 0x8a,0x9b,0x88,0x11, 0x6d,0xad,0xc3,0x30,
+ 0x87,0x24,0xc8,0x7a, 0x2d,0x8e,0x60,0x65, 0x48,0x01,0xa4,0x6b, 0x8a,0x42,0xfb,0xd0,
+ 0x93,0x9b,0x2a,0x58, 0x8a,0x5a,0x92,0x08, 0xc3,0xd4,0x4f,0xbf, 0xf2,0xfc,0x6b,0x76,
+ 0xa1,0xb9,0x7e,0x34, 0xd2,0x93,0x4b,0xd3, 0x72,0x46,0x31,0xa0, 0x10,0x7f,0xf8,0xf5,
+ 0x1b,0xf5,0x43,0xb2, 0xee,0xf8,0x17,0xc5, 0xb0,0x61,0xd2,0xcd, 0xa2,0x4b,0x19,0x8a,
+ 0x9d,0xc9,0xc8,0x38, 0x01,0x4d,0x34,0x3a, 0x26,0xa2,0xce,0x4d, 0x78,0x25,0x9c,0x84,
+ 0xd0,0xd9,0xa9,0xd2, 0xfb,0x3e,0x1b,0x48, 0x91,0x03,0x08,0xef, 0xbf,0x55,0x02,0x21,
+ 0xf2,0xe7,0xbd,0x43, 0x3c,0xaf,0xba,0x38, 0xaf,0x58,0xf9,0x24, 0x23,0x10,0xac,0x6f,
+ 0x5a,0x70,0xd2,0xb8, 0xd9,0x39,0xbb,0x83, 0x89,0xc7,0xaf,0x39, 0xd7,0x99,0x3e,0x77,
+ 0x3a,0xb1,0x60,0xb4, 0xc1,0xe1,0x0b,0x83, 0xce,0xa1,0x52,0xc0, 0x13,0xe3,0x46,0xa4,
+ 0xa8,0xa3,0x6c,0xe6, 0xac,0x2b,0x8a,0x5c, 0xcb,0x54,0x09,0x63, 0x11,0x18,0xdf,0x29,
+ 0x00,0xdc,0xb9,0x34, 0x1c,0x86,0x9c,0x88, 0x79,0xe8,0x94,0xbf, 0xb2,0x50,0x82,0x68,
+ 0x04,0x9e,0x7b,0x3c, 0x44,0x9a,0xa5,0xb6, 0xaa,0x23,0x3f,0x23, 0xe0,0x3d,0xa4,0x41,
+ 0xc0,0x65,0x0c,0xb2, 0xf3,0x32,0x44,0xd0, 0x30,0xbe,0x43,0x69, 0x0d,0xa3,0x56,0xd2,
+ 0x20,0x63,0x69,0x08, 0x48,0x20,0x04,0x00, 0x08,0x40,0x00,0x90, 0x02,0x84,0x20,0x42,
+ 0x51,0x0a,0x42,0x86, 0x94,0x31,0x60,0xf2, 0x98,0x24,0x92,0x09, 0xb2,0x86,0x6f,0xe0,
+ 0x50,0x21,0xb4,0x56, 0x0f,0xb5,0x8b,0x01, 0x69,0xa6,0x33,0x3a, 0x2f,0xa2,0x13,0x56,
+ 0xc4,0x25,0xe1,0xc4, 0x8d,0x4f,0xd1,0xd0, 0x7c,0xa1,0xb0,0x97, 0x8d,0xe7,0x60,0x5f,
+ 0x26,0xd1,0xaf,0x73, 0x51,0xf7,0xad,0xb7, 0x0a,0xe6,0x66,0x6e, 0x7d,0x54,0x9a,0xd4,
+ 0xc5,0xc9,0xa5,0x12, 0xb9,0x9f,0xeb,0x8e, 0x9e,0x8c,0x0f,0x91, 0xc0,0xdb,0xed,0xa8,
+ 0x55,0xc8,0xaf,0x6c, 0xef,0x11,0x8c,0x2f, 0x2e,0x6c,0x6e,0x1c, 0x46,0xd8,0x56,0x84,
+ 0x54,0x17,0xcb,0x23, 0x00,0x56,0xdc,0xed, 0x12,0x53,0x0a,0x9f, 0x79,0x1e,0x5f,0xd0,
+ 0xa7,0x57,0xb1,0xfd, 0x34,0x95,0xbf,0xe6, 0x22,0xc4,0x52,0xc8, 0xbe,0x8f,0x77,0xbe,
+ 0xf4,0xfb,0x2f,0xd1, 0xa0,0xd2,0x8e,0xa0, 0xcb,0xb5,0x01,0x3d, 0x44,0x25,0x27,0x6b,
+ 0xca,0x69,0xc9,0xa8, 0xd8,0xa2,0xeb,0x87, 0xc4,0x92,0x9c,0x59, 0x78,0x4f,0xbd,0x12,
+ 0xe5,0xce,0xe2,0x04, 0xba,0x81,0x6b,0xc0, 0x11,0x13,0x21,0x5b, 0x17,0xc2,0x56,0x49,
+ 0xe7,0x4e,0xb9,0x54, 0x4b,0x0c,0x73,0x34, 0xce,0x6f,0xbf,0x7e, 0x3f,0xbf,0x5a,0x98,
+ 0x95,0xaa,0xb6,0xc2, 0xaf,0x34,0x6c,0xb3, 0x2b,0x76,0x05,0xa2, 0x73,0xad,0x75,0x2f,
+ 0xe8,0x09,0x57,0x2e, 0x2b,0x53,0xdb,0x4c, 0xae,0x84,0x0a,0x7c, 0x77,0x29,0x32,0x4e,
+ 0x23,0x36,0x4c,0x34, 0xdd,0xef,0x92,0x2e, 0xfb,0x77,0xfa,0x37, 0x3c,0xa7,0xb3,0xb8,
+ 0xb8,0x46,0x4b,0x20, 0x2c,0xc1,0xe8,0x46, 0xaa,0x46,0x7f,0xa6, 0x8b,0xf7,0x45,0x6a,
+ 0xde,0x65,0x53,0xa1, 0xbf,0x26,0x3e,0xa3, 0x10,0x4a,0x9c,0x1c, 0x04,0x4d,0x61,0x3b,
+ 0x3d,0x4b,0x9d,0x35, 0x10,0x50,0x0a,0x30, 0xa2,0x0e,0x04,0x0b, 0x52,0xf4,0x63,0x31,
+ 0x39,0xfb,0x55,0xf2, 0xfc,0x9a,0x29,0x53, 0x67,0x6f,0x2b,0xf1, 0xc9,0xb2,0x21,0x7d,
+ 0xbb,0x28,0x65,0x2b, 0x68,0x1a,0x14,0x99, 0x04,0x93,0x7e,0xe2, 0xc1,0xb0,0xab,0x25,
+ 0x51,0x12,0x9a,0xcd, 0xc2,0x30,0x37,0x9d, 0x7e,0x1e,0xe0,0x70, 0x2a,0x29,0x8b,0xd9,
+ 0x45,0x35,0xa2,0x1a, 0x35,0x4d,0x6b,0x1a, 0x56,0x58,0x18,0x4e, 0xd7,0x3b,0xfd,0x90,
+ 0x48,0xb8,0x45,0x3b, 0xc0,0xa7,0x6f,0x56, 0xa2,0xf7,0x4d,0x57, 0x34,0x52,0xc6,0x17,
+ 0x80,0x31,0x30,0xd5, 0xe4,0x8a,0x76,0x86, 0x6c,0x92,0x12,0x0e, 0xc4,0x16,0x9e,0x8b,
+ 0xb8,0x0f,0x26,0x4d, 0x41,0x70,0x46,0x1a, 0x8e,0xe2,0x15,0x10, 0x90,0x09,0x11,0x0a,
+ 0x81,0x21,0x71,0x18, 0x20,0x6a,0x49,0x70, 0xf6,0xaa,0x31,0x9c, 0x72,0xcf,0xba,0x7a,
+ 0x08,0xad,0x40,0x1e, 0xd9,0x8a,0xd3,0x0d, 0x13,0x10,0x52,0xef, 0x13,0xa5,0x91,0x28,
+ 0x04,0xd8,0x01,0x55, 0x17,0x17,0x74,0x32, 0xce,0x72,0xc5,0xcd, 0x16,0x69,0x77,0x74,
+ 0xdd,0x92,0xca,0x24, 0x32,0x49,0xf6,0x12, 0xa1,0x0c,0x25,0x0d, 0x79,0x01,0x46,0x55,
+ 0x03,0xf4,0xeb,0x7b, 0x30,0x56,0x70,0x18, 0x80,0x81,0xe5,0x44, 0x5b,0x89,0x89,0x1f,
+ 0x06,0x98,0xa6,0x0b, 0x52,0x50,0x2a,0xaf, 0xe2,0x42,0x2d,0x36, 0xee,0x46,0xa8,0x18,
+ 0x4b,0xda,0xc9,0x5e, 0xd9,0x81,0xd5,0x14, 0xa1,0x04,0x43,0x1b, 0x6d,0x15,0xd4,0xae,
+ 0x58,0x4e,0x62,0x15, 0x92,0x50,0x93,0x00, 0xb1,0xc9,0xc0,0xbb, 0xf7,0x69,0x80,0x5d,
+ 0x2b,0xe8,0x86,0x68, 0x6d,0x4a,0x49,0x05, 0x4c,0x41,0xfa,0x9a, 0x3b,0x6f,0x77,0x02,
+ 0x58,0x36,0xd5,0x2d, 0x25,0x71,0xda,0x5a, 0xa5,0x53,0x44,0x0d, 0x03,0x49,0x14,0xd5,
+ 0x00,0x83,0xf9,0xfc, 0x18,0x12,0x57,0x2d, 0x2b,0xdf,0x93,0x1f, 0x1d,0x8a,0xf1,0x85,
+ 0x66,0x20,0xa4,0x62, 0x41,0x0d,0x51,0xc5, 0x80,0xf4,0x2c,0xdd, 0xd6,0xcb,0xfe,0x58,
+ 0xa7,0x2d,0xf0,0xdd, 0x1a,0xdb,0xe2,0x49, 0x14,0x8f,0x3b,0x83, 0x87,0x22,0x96,0x90,
+ 0x40,0x22,0x04,0x6c, 0xfd,0x16,0x7f,0x86, 0x90,0x85,0xc2,0xd5, 0xef,0x17,0x27,0x71,
+ 0x6b,0xd1,0xee,0xe2, 0x13,0x85,0x21,0x09, 0xe2,0x6d,0x6c,0x90, 0xb8,0xe1,0x69,0x4d,
+ 0x02,0x90,0x94,0xa7, 0xf1,0x21,0x6d,0x3e, 0x31,0xa3,0x33,0x2b, 0x1b,0xa2,0xff,0x7e,
+ 0x8b,0x60,0xc3,0x02, 0xf4,0xa7,0x0d,0x0f, 0xe5,0x42,0xa3,0x07, 0xd6,0x47,0x18,0x08,
+ 0x13,0x30,0x25,0x40, 0x34,0xe2,0x35,0x37, 0x3d,0x22,0x03,0xa8, 0xbc,0xbe,0x1a,0x46,
+ 0x95,0x9f,0x03,0xcd, 0xdb,0x59,0xf5,0x73, 0xb0,0x17,0x6a,0x20, 0xc5,0x60,0x05,0xe5,
+ 0xde,0xf1,0x90,0x6f, 0x72,0xb9,0x4f,0xaf, 0xff,0xf1,0x77,0x24, 0x53,0x85,0x09,0x04,
+ 0xd6,0xc5,0x66,0x20,
+ // 0x5cf4 = 23796 data bytes (33%)
+};
+
+static BZ2Manager_t lecode_kor_bin_mgr
+ = { lecode_kor_bin_bz2, sizeof(lecode_kor_bin_bz2), 0, 0 };
+
diff --git a/project/src/lib-breff.c b/project/src/lib-breff.c
index ca7e366..4c2c262 100644
--- a/project/src/lib-breff.c
+++ b/project/src/lib-breff.c
@@ -270,7 +270,7 @@ enumError CreateBREFF
SortSubFilesSZS(szs,SORT_BREFF);
- if ( logging > 1 )
+ if ( logging >= 2 )
{
printf("\nsorted file list:\n");
int i;
diff --git a/project/src/lib-brres.c b/project/src/lib-brres.c
index 3397810..f89ae29 100644
--- a/project/src/lib-brres.c
+++ b/project/src/lib-brres.c
@@ -789,7 +789,7 @@ enumError CreateBRRES
//--- clean
- if (logging)
+ if ( logging >= 1 )
dump_brres_group(broot,endian);
FREE(ep_list);
@@ -998,7 +998,7 @@ int IterateFilesBRRES
//--- iterate groups
#if defined(TEST) || 1
- if (logging)
+ if ( logging >= 1 )
dump_brres_group(root,endian);
#endif
diff --git a/project/src/lib-checksum.c b/project/src/lib-checksum.c
index b4f19ba..0355e0b 100644
--- a/project/src/lib-checksum.c
+++ b/project/src/lib-checksum.c
@@ -59,8 +59,10 @@ void CreateSSChecksum ( char *buf, uint bufsize, const sha1_size_t *ss )
if (opt_db64)
{
PRINT("TAB64=%.65s\n",TableEncode64BySetup);
- EncodeBase64(buf,bufsize,ss,sizeof(*ss),
- TableEncode64BySetup, false,0,0 );
+ const int coding = opt_coding64 == ENCODE_OFF ? ENCODE_BASE64URL : opt_coding64;
+ EncodeByMode(buf,bufsize,(ccp)ss,sizeof(*ss),coding);
+//DEL EncodeBase64(buf,bufsize,ss,sizeof(*ss),
+//DEL TableEncode64BySetup, false,0,0 );
}
else if (opt_base64)
{
@@ -113,7 +115,9 @@ void CreateSSChecksumDB ( char *buf, uint bufsize, const sha1_size_t *ss )
DASSERT(bufsize>CHECKSUM_DB_SIZE);
DASSERT(ss);
- EncodeBase64(buf,bufsize,ss,sizeof(*ss),TableEncode64url,false,0,0);
+ const int coding = opt_coding64 == ENCODE_OFF ? ENCODE_BASE64URL : opt_coding64;
+ EncodeByMode(buf,bufsize,(ccp)ss,sizeof(*ss),coding);
+//DEL EncodeBase64(buf,bufsize,ss,sizeof(*ss),TableEncode64url,false,0,0);
}
///////////////////////////////////////////////////////////////////////////////
@@ -170,492 +174,59 @@ enumError GetSSByFile ( sha1_size_t *ss, ccp path1, ccp path2 )
return err;
}
-//
-///////////////////////////////////////////////////////////////////////////////
-/////////////// struct DistributionInfo_t ///////////////
-///////////////////////////////////////////////////////////////////////////////
-
-void InitializeDistributionInfo
- ( DistributionInfo_t * dinf, bool add_default_param )
-{
- DASSERT(dinf);
- memset(dinf,0,sizeof(*dinf));
- InitializeParamField(&dinf->translate);
- dinf->translate.free_data = true;
- InitializeParamField(&dinf->param);
- dinf->param.free_data = true;
-
- uint slot;
- for ( slot = 0; slot < MAX_DISTRIBUTION_ARENA; slot++ )
- {
- ParamField_t *pf = dinf->arena + slot;
- InitializeParamField(pf);
- pf->free_data = true;
- }
-
- for ( slot = 0; slot < MAX_DISTRIBUTION_TRACK; slot++ )
- {
- ParamField_t *pf = dinf->track + slot;
- InitializeParamField(pf);
- pf->free_data = true;
- }
-
- if (add_default_param)
- AddParamDistributionInfo(dinf,true);
-}
-
///////////////////////////////////////////////////////////////////////////////
-
-void ResetDistributionInfo ( DistributionInfo_t * dinf )
-{
- if (dinf)
- {
- ResetParamField(&dinf->translate);
- ResetParamField(&dinf->param);
-
- uint slot;
- for ( slot = 0; slot < MAX_DISTRIBUTION_ARENA; slot++ )
- ResetParamField(dinf->arena+slot);
- for ( slot = 0; slot < MAX_DISTRIBUTION_TRACK; slot++ )
- ResetParamField(dinf->track+slot);
- }
-}
-
///////////////////////////////////////////////////////////////////////////////
-void AddParamDistributionInfo ( DistributionInfo_t * dinf, bool overwrite )
+int IsSSChecksum ( sha1_size_t *res, ccp source, int slen )
{
- DASSERT(dinf);
-
- char buf[100];
+ // slen < 0 => strlen(source)
+ // returns: 0:fail, 1:SHA1, 2:DB64
- //-- UUID
-
- uuid_buf_t uuid;
- bool create_uuid = overwrite;
- if (!create_uuid)
- {
- const ParamFieldItem_t *it = FindParamField(&dinf->param,"UUID");
- if ( !it || !it->data || ScanUUID(uuid,(ccp)it->data) == (ccp)it->data )
- create_uuid = true;
- }
-
- if (create_uuid)
- {
- CreateTextUUID(buf,sizeof(buf));
- ReplaceParamField(&dinf->param,"UUID",false,0,STRDUP(buf));
- }
+ ccp end = source + ( slen < 0 ? strlen(source) : slen );
+ // skip leading controls
+ while ( source < end && (uchar)*source <= ' ' )
+ source++;
- //-- time stamps
-
- time_t tim = time(0);
- struct tm *tm = localtime(&tim);
- strftime(buf,sizeof(buf),"%F %T %z",tm);
-
- if ( overwrite || !FindParamField(&dinf->param,"FIRST-CREATION") )
- ReplaceParamField(&dinf->param,"FIRST-CREATION",false,0,STRDUP(buf));
- ReplaceParamField(&dinf->param,"LAST-UPDATE",false,0,STRDUP(buf));
-}
-
-//
-///////////////////////////////////////////////////////////////////////////////
-/////////////// slot translation ///////////////
-///////////////////////////////////////////////////////////////////////////////
+ ccp start = source;
+ while ( source < end && (uchar)*source > ' ' )
+ source++;
-char * ScanSlot ( uint *res_slot, ccp source, bool need_point )
-{
- DASSERT(res_slot);
- DASSERT(source);
- *res_slot = 0;
+ sha1_size_t temp;
+ if (!res)
+ res = &temp;
- char *end;
- uint slot = strtoul(source,&end,10);
- if ( !need_point
- && slot >= MIN_DISTRIBUTION_SLOT
- && slot < MAX_DISTRIBUTION_TRACK
- && (uchar)*end <= ' '
- && ( end-source == 2 || end-source == 3 ))
+ const uint len = source - start;
+ if ( len == 40 )
{
- *res_slot = slot;
- return end;
- }
-
- slot *= 10;
- if ( slot < MIN_DISTRIBUTION_SLOT || slot >= MAX_DISTRIBUTION_TRACK || *end != '.' )
- return (char*)source;
-
- uint track = strtoul(end+1,&end,10);
- slot += track;
- if ( track < 1 || track > 9 || slot >= MAX_DISTRIBUTION_TRACK )
- return (char*)source;
-
- *res_slot = slot;
- while ( *end == ' ' || *end == '\t' )
- end++;
- return end;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-void NormalizeSlotTranslation ( char *buf, uint bufsize, ccp name,
- char ** p_first_para, char ** p_first_brack )
-{
- DASSERT(buf);
- DASSERT(bufsize>10);
-
- if (!name)
- name = "";
-
- char *dest = buf, *buf_end = buf + bufsize - 4;
- char *first_para = 0;
- char *first_brack = 0;
-
- uint have_space = 0;
- while ( *name && dest < buf_end )
- {
- int ch = (uchar)*name++;
- switch(ch)
+ ccp ptr;
+ for ( ptr = start; ptr < source; ptr++ )
{
- case ' ':
- case '_':
- case '-':
- case '+':
- have_space++;
- break;
-
- case '\'':
- break; // ignore
-
- case '[':
- if (!first_brack)
- first_brack = dest;
- goto bracket;
-
- case '(':
- if (!first_para)
- first_para = dest;
- // fall through
-
- case '{':
- bracket:
- ch = '(';
- // fall through
-
- case '.':
- if (have_space)
- {
- have_space = 0;
- *dest++ = ' ';
- }
- *dest++ = ch;
- break;
-
- case '}':
- case ')':
- case ']':
- *dest++ = ')';
- break;
-
- default:
- ch = tolower(ch);
- if ( ch >= 'a' && ch <= 'z' || ch >= '0' && ch <= '9' )
- {
- if (have_space)
- {
- have_space = 0;
- *dest++ = ' ';
- }
- *dest++ = ch;
- }
+ const u8 type = TableNumbers[(u8)*ptr];
+ if ( type >= 16 )
break;
}
- }
-
- if ( dest > buf )
- {
- if ( dest > buf+4 && !memcmp(dest-4,".szs",4) || !memcmp(dest-4,".wbz",4) )
- dest -= 4;
- if ( dest > buf+2 && !memcmp(dest-2,"_d",2) )
- dest -= 2;
- *dest = 0;
-
- if ( first_brack)
- {
- if ( first_brack >= dest )
- first_brack = 0;
- else
- dest = first_brack;
- }
-
- if ( first_para >= dest )
- first_para = 0;
- }
- else
- first_para = first_brack = 0;
-
- if (p_first_para)
- *p_first_para = first_para;
- if (p_first_brack)
- *p_first_brack = first_brack;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-uint DefineSlotTranslation
- ( ParamField_t *translate, bool is_arena, uint slot, ccp name )
-{
- DASSERT(translate);
- if (!name)
- return 0;
-
- if (is_arena)
- {
- if ( slot >= MAX_DISTRIBUTION_ARENA )
- slot = 0;
- else
- slot += DISTRIBUTION_ARENA_DELTA;
- }
- else
- {
- if ( slot >= MAX_DISTRIBUTION_TRACK )
- slot = 0;
- }
-
- char buf[1000];
- char *first_para = 0, *first_brack = 0;
- NormalizeSlotTranslation(buf,sizeof(buf),name,&first_para,&first_brack);
-
- uint count = 0;
- if (*buf)
- {
- ReplaceParamField(translate,buf,false,slot,0);
- count++;
-
- if (first_brack)
- {
- *first_brack = 0;
- ReplaceParamField(translate,buf,false,slot,0);
- count++;
- }
- if (first_para)
+ if ( ptr == source )
{
- *first_para = 0;
- ReplaceParamField(translate,buf,false,slot,0);
- count++;
+ Sha1Hex2Bin(res->hash,start,source);
+ return 1;
}
}
-
- return count;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-#undef EARLY_NUM_SLOT
-#define EARLY_NUM_SLOT 1
-
-int FindSlotByTranslation ( const ParamField_t *translate, ccp fname, ccp sha1 )
-{
- DASSERT(translate);
- ccp slash = strrchr(fname,'/');
- if (slash)
- fname = slash+1;
-
- #if EARLY_NUM_SLOT
- uint slot;
- ScanSlot(&slot,fname,false);
- if (slot)
- return slot;
- #endif
-
- char buf[1000];
-
- char *first_para = 0, *first_brack = 0;
- NormalizeSlotTranslation(buf,sizeof(buf),fname,&first_para,&first_brack);
- const ParamFieldItem_t *it = FindParamField(translate,buf);
- if ( !it && first_brack )
- {
- *first_brack = 0;
- it = FindParamField(translate,buf);
- }
-
- if ( !it && first_para )
- {
- *first_para = 0;
- it = FindParamField(translate,buf);
- }
-
- if ( !it && sha1 )
- it = FindParamField(translate,sha1);
-
-
- #if EARLY_NUM_SLOT
- return it ? it->num : 0;
- #else
- if (it)
- return it->num;
-
- uint slot;
- ScanSlot(&slot,fname,false);
- return slot;
- #endif
-}
-
-#undef EARLY_NUM_SLOT
-
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-void ScanSlotTranslation
- ( ParamField_t *translate, ParamField_t *param, ccp fname, bool ignore )
-{
- DASSERT(translate);
- DASSERT(fname);
- PRINT(" - scan translation%s: %s\n", param ? "+param" : "", fname);
-
- szs_file_t szs;
- InitializeSZS(&szs);
- enumError err = LoadSZS(&szs,fname,true,ignore,true);
- if (err)
- return;
-
-
- //--- support for special file formats
-
- switch((int)szs.fform_arch)
- {
- case FF_BMG:
- if (verbose>1)
- printf(" - scan translation [BMG]: %s\n",fname);
- ResetSZS(&szs);
- return;
- }
-
-
- //--- standard text file
-
- if ( verbose > 1 )
- printf("Scan translation%s[TEXT/%s]: %s\n",
- param ? "+param" : "",
- GetExtFF(szs.fform_file,szs.fform_arch), fname );
- else if ( verbose >= 0 )
- printf("Scan %s\n",fname);
-
- char *eol = (char*)szs.data;
- char *end = eol + szs.size;
-
- for(;;)
+ else if ( len == CHECKSUM_DB_SIZE )
{
- while ( eol < end && (uchar)*eol <= ' ' )
- eol++;
- if ( eol == end )
- break;
-
- char *src = eol;
- while ( eol < end && *eol != 0 && *eol != '\r' && *eol != '\n' )
- eol++;
- *eol = 0;
-
- if ( *src == '#' || *src == '!' )
- continue;
-
-
- //--- manage parameters
-
- if ( *src == '@' )
- {
- if (!param)
- continue;
-
- char name_buf[100], *name = name_buf;
- src++;
-
- for(;;)
- {
- const char ch = *src;
- if ( !isalnum(ch) && ch != '_' && ch != '-' && ch != '.' )
- break;
- src++;
- if ( name < name_buf + sizeof(name_buf) - 1 )
- *name++ = toupper(ch);
- }
-
- while ( src < eol && (uchar)*src <= ' ' )
- src++;
- if ( src < eol && *src == '=' )
- {
- src++;
- while ( src < eol && (uchar)*src <= ' ' )
- src++;
- }
-
- if ( name > name_buf )
- {
- //PRINT(" %.*s = |%.*s|\n",(int)(name-name_buf),name_buf,(int)(eol-src),src);
- ReplaceParamField( param, MEMDUP(name_buf,name-name_buf),
- true, 0, MEMDUP(src,eol-src) );
- }
- continue;
- }
-
- //PRINTF("LINE: |%.*s|\n",(int)(eol-src),src);
-
-
- //--- skip "()" | detect SHA1 checksum
-
- char *sha1 = 0;
- if ( *src == '(' )
- {
- while ( src < eol && *src != ')' )
- src++;
- if ( src++ == eol )
- continue;
- }
- else
- {
- // detect sha1 checksum
-
- char *x = src;
- while ( x < eol && isalnum((int)*x) )
- x++;
- if ( x < eol && x - src == 40 )
- {
- sha1 = src;
- src = x;
- }
- }
-
- while ( src < eol && (uchar)*src <= ' ' )
- src++;
-
- const bool is_arena = *src == 'a' || *src == 'A';
- if (is_arena)
- src++;
-
- if (!isdigit((int)*src))
- continue;
-
- uint slot;
- src = ScanSlot(&slot,src,true); // ???
- if (!slot)
- continue;
-
- char *tab = strrchr(src,'\t');
- if (tab)
- src = tab;
- while ( src < eol && (uchar)*src <= ' ' )
- src++;
-
- DefineSlotTranslation(translate,is_arena,slot,src);
- if (sha1)
+ char buf[sizeof(sha1_size_t)+12];
+ uint len64 = DecodeBase64(buf,sizeof(buf),start,len,TableDecode64url,false,0);
+ if ( len64 == sizeof(sha1_size_t) )
{
- sha1[40] = 0;
- DefineSlotTranslation(translate,is_arena,slot,sha1);
+ memcpy(res,buf,sizeof(*res));
+ return 2;
}
}
- ResetSZS(&szs);
+ // no a checksum
+ memset(res,0,sizeof(sha1_size_t));
+ return 0;
}
//
diff --git a/project/src/lib-checksum.h b/project/src/lib-checksum.h
index 2215f0b..dec46e4 100644
--- a/project/src/lib-checksum.h
+++ b/project/src/lib-checksum.h
@@ -41,6 +41,7 @@
#define _GNU_SOURCE 1
#include "dclib-types.h"
+#include "lib-ledis.h"
typedef struct szs_file_t szs_file_t;
@@ -57,7 +58,7 @@ typedef struct szs_file_t szs_file_t;
typedef struct sha1_size_t
{
sha1_hash_t hash; // SHA1 checksum (binary)
- u32 size; // size of date (big endian)
+ u32 size; // size of data (big endian)
}
__attribute__ ((packed)) sha1_size_t;
@@ -74,88 +75,10 @@ void CreateSSChecksumDBBySZS ( char *buf, uint bufsize, const szs_file_t *szs );
enumError GetSSByFile ( sha1_size_t *ss, ccp path1, ccp path2 );
-//
-///////////////////////////////////////////////////////////////////////////////
-/////////////// struct DistributionInfo_t ///////////////
-///////////////////////////////////////////////////////////////////////////////
-
-#define DISTRIB_MAGIC8 "#DISTRIB"
-#define DISTRIB_MAGIC8_NUM 0x2344495354524942ull
-
-#define DISTRIBUTION_FILE_VERSION 1
-#define MIN_DISTRIBUTION_SLOT 10 // included
-#define MAX_DISTRIBUTION_TRACK 10000 // excluded
-#define MAX_DISTRIBUTION_ARENA 1000 // excluded
-#define DISTRIBUTION_ARENA_DELTA 100000
-
-#define DEFAULT_DISTIBUTION_FNAME "distribution.txt"
-
-//-----------------------------------------------------------------------------
-
-static inline bool IsValidDistribArena ( uint slot )
-{
- return slot == DISTRIBUTION_ARENA_DELTA
- || slot >= DISTRIBUTION_ARENA_DELTA+MIN_DISTRIBUTION_SLOT
- && slot < DISTRIBUTION_ARENA_DELTA+MAX_DISTRIBUTION_ARENA;
-}
-
-static inline bool IsValidDistribTrack ( uint slot )
-{
- return !slot
- || slot >= MIN_DISTRIBUTION_SLOT && slot < MAX_DISTRIBUTION_TRACK;
-}
-
-static inline bool IsValidDistribSlot ( uint slot )
-{
- return !slot
- || slot >= MIN_DISTRIBUTION_SLOT
- && slot < MAX_DISTRIBUTION_TRACK
- || slot == DISTRIBUTION_ARENA_DELTA
- || slot >= DISTRIBUTION_ARENA_DELTA+MIN_DISTRIBUTION_SLOT
- && slot < DISTRIBUTION_ARENA_DELTA+MAX_DISTRIBUTION_ARENA;
-}
-
-//-----------------------------------------------------------------------------
-// [[DistributionInfo_t]]
-
-typedef struct DistributionInfo_t
-{
- ParamField_t translate;
- ParamField_t param;
- ParamField_t arena[MAX_DISTRIBUTION_ARENA];
- ParamField_t track[MAX_DISTRIBUTION_TRACK];
-}
-DistributionInfo_t;
-
-//-----------------------------------------------------------------------------
-
-void InitializeDistributionInfo
- ( DistributionInfo_t * dinf, bool add_default_param );
-void ResetDistributionInfo ( DistributionInfo_t *dinf );
-void AddParamDistributionInfo ( DistributionInfo_t * dinf, bool overwrite );
-
-enumError ScanDistribFile
- ( DistributionInfo_t *dinf, ccp fname, int ignore, bool assume_arena );
-
-//
-///////////////////////////////////////////////////////////////////////////////
-/////////////// slot translation ///////////////
-///////////////////////////////////////////////////////////////////////////////
-
-char * ScanSlot ( uint *res_slot, ccp source, bool need_point );
-
-void NormalizeSlotTranslation ( char *buf, uint bufsize, ccp name,
- char ** p_first_para, char ** p_first_brack );
-
-uint DefineSlotTranslation
- ( ParamField_t *translate, bool is_arena, uint slot, ccp name );
-
-// 'sha1' can be NULL
-int FindSlotByTranslation ( const ParamField_t *translate, ccp fname, ccp sha1 );
-
-// 'param' not NULL: Scan "@PARAM = VALUE" lines and store result.
-void ScanSlotTranslation
- ( ParamField_t *translate, ParamField_t *param, ccp fname, bool ignore );
+// slen < 0 => strlen(source)
+// returns: 0:fail, 1:SHA1, 2:DB64
+// if res != NULL: scanned SHA1
+int IsSSChecksum ( sha1_size_t *res, ccp source, int slen );
//
///////////////////////////////////////////////////////////////////////////////
diff --git a/project/src/lib-ctcode.c b/project/src/lib-ctcode.c
index 4b3f0bb..ff92a0c 100644
--- a/project/src/lib-ctcode.c
+++ b/project/src/lib-ctcode.c
@@ -36,7 +36,7 @@
***************************************************************************/
#include "lib-ctcode.h"
-#include "lib-lecode.h"
+#include "lib-ledis.h"
#include "lib-szs.h"
#include "lib-xbmg.h"
#include "lib-bzip2.h"
@@ -95,7 +95,7 @@ void SetName16 ( u16 *dest, ccp src )
///////////////////////////////////////////////////////////////////////////////
-static void SetTrackBMG
+void SetTrackBMG
(
ctcode_t *ctcode, // valid CTCODE
bmg_t *bmg, // destination BMG
@@ -152,6 +152,18 @@ static inline void SetTrackString
//-----------------------------------------------------------------------------
+static inline void SetTrackXString
+(
+ ctcode_t *ctcode, // valid CTCODE
+ uint tidx, // index of the track
+ ccp text // any text
+)
+{
+ SetTrackBMG(ctcode,&ctcode->track_xstring,tidx,text);
+}
+
+//-----------------------------------------------------------------------------
+
static inline void SetTrackIdentifier
(
ctcode_t *ctcode, // valid CTCODE
@@ -299,6 +311,33 @@ static ccp GetTrackString
}
//-----------------------------------------------------------------------------
+#if 0
+
+ static ccp GetTrackXString
+ (
+ char *buf, // dest buffer
+ uint size, // size of 'buf'
+ ctcode_t *ctcode, // valid CTCODE
+ uint tidx, // index of the track
+ const bmg_item_t *bi // NULL or bmg text
+ )
+ {
+ DASSERT(buf);
+ DASSERT(size);
+ DASSERT(ctcode);
+
+ if ( !bi || !bi->len )
+ bi = FindItemBMG(&ctcode->track_xstring,tidx+ctcode->ctb.track_name1.beg);
+
+ if ( bi && bi->len )
+ PrintString16BMG(buf,size,bi->text,bi->len,BMG_UTF8_MAX,0,opt_bmg_colors);
+ else
+ *buf = 0;
+ return buf;
+ }
+
+#endif
+//-----------------------------------------------------------------------------
static ccp GetTrackIdentifier
(
@@ -449,8 +488,11 @@ void InitializeCTCODE ( ctcode_t * ctcode, ct_mode_t ct_mode )
ctcode->use_lecode = lecode_enabled;
ctcode->fname = EmptyString;
+
+ ctcode->n_strings = 4;
InitializeBMG(&ctcode->track_file);
InitializeBMG(&ctcode->track_string);
+ InitializeBMG(&ctcode->track_xstring);
InitializeBMG(&ctcode->track_ident);
}
@@ -461,6 +503,7 @@ void ResetCTCODE ( ctcode_t * ctcode )
DASSERT(ctcode);
ResetBMG(&ctcode->track_file);
ResetBMG(&ctcode->track_string);
+ ResetBMG(&ctcode->track_xstring);
ResetBMG(&ctcode->track_ident);
ResetDataCTCODE(ctcode,false);
FreeString(ctcode->fname);
@@ -480,7 +523,7 @@ static void SetupUsedSlotList ( u8 *slot_list, uint n_slots, uint le_phase )
{
memset( slot_list + MKW_ARENA_BEG,
2,
- LE_FIRST_LOWER_CT_SLOT - MKW_ARENA_BEG );
+ LE_FIRST_CT_SLOT - MKW_ARENA_BEG );
if ( le_phase == 1 )
{
const uint max = n_slots < LE_FIRST_UPPER_CT_SLOT
@@ -525,7 +568,7 @@ void SetupUsedSlotsCTCODE ( ctcode_t * ctcode )
{
SetupUsedSlotList( ctcode->used_slot,
sizeof(ctcode->used_slot), ctcode->ctb.le_phase );
- ctcode->n_tracks = LE_FIRST_LOWER_CT_SLOT;
+ ctcode->n_tracks = LE_FIRST_CT_SLOT;
}
else
{
@@ -1227,7 +1270,7 @@ void DumpCTCODE ( FILE *f, uint indent, ctcode_t * ctcode )
PrepareExportCTCODE(ctcode);
- if ( ctcode->fform == FF_CT_TEXT )
+ if ( ctcode->fform == FF_CTDEF )
fprintf(f,"\n%*sSections in virtual binary code:\n\n",indent,"");
else
fprintf(f,"\n%*sSections:\n\n",indent,"");
@@ -1251,7 +1294,7 @@ void DumpCTCODE ( FILE *f, uint indent, ctcode_t * ctcode )
if (long_count)
{
- if ( ctcode->fform == FF_CT_TEXT )
+ if ( ctcode->fform == FF_CTDEF )
fprintf(f,"\n%*sHexdump of headers in virtual binary code:\n",indent,"");
else
fprintf(f,"\n%*sHexdump of headers:\n",indent,"");
@@ -1379,8 +1422,6 @@ static int InsertTrackIntoCup ( ctcode_t *ctcode, uint tidx, bool hidden )
DASSERT(ctcode);
DASSERT( tidx < ctcode->max_tracks );
-// [[2do]] [[hidden]]
-
if (hidden)
{
ctcode->tracks_defined++;
@@ -1567,6 +1608,15 @@ static enumError ScanRTL_Option ( ctcode_t *ctcode, ScanInfo_t * si )
ctcode->use_le_flags = num > 0;
PRINT("%%LE-FLAGS = %d\n",ctcode->use_le_flags);
}
+ else if (!strcmp(name,"N-STRINGS"))
+ {
+ long num;
+ enumError err = ScanUValueSI(si,&num,false);
+ if (err)
+ return err;
+ ctcode->n_strings = num < 0 || num > 255 ? 255 : num;
+ PRINT("%%LE-STRINGS = %d\n",ctcode->n_strings);
+ }
else if (!strcmp(name,"REPLACE-AT"))
{
long num;
@@ -1883,7 +1933,8 @@ static enumError ScanRTL_Track
//--- scan track_file, track_string and track_ident => create fname
- char *track_file = 0, *track_string = 0, *track_ident = 0;
+ // in scan order!
+ char *track_file = 0, *track_string = 0, *track_ident = 0, *track_xstring = 0;
char fname[100];
err = ConcatStringsSI(si,&track_file,0);
@@ -1892,6 +1943,7 @@ static enumError ScanRTL_Track
abort:
FreeString(track_file);
FreeString(track_string);
+ FreeString(track_xstring);
FreeString(track_ident);
return err;
}
@@ -1926,9 +1978,30 @@ static enumError ScanRTL_Track
err = ConcatStringsSI(si,&track_ident,0);
if (err)
goto abort;
+
+ if ( NextCharSI(si,false) == ';' )
+ {
+ SkipCharSI(si,';');
+ err = ConcatStringsSI(si,&track_xstring,0);
+ if (err)
+ goto abort;
+ }
}
}
+ //-- skip additional strings
+
+ for ( int n = (int)ctcode->n_strings - 4; n > 0; n-- )
+ {
+ if ( NextCharSI(si,false) == ';' )
+ {
+ SkipCharSI(si,';');
+ err = ConcatStringsSI(si,0,0);
+ if (err)
+ goto abort;
+ }
+ }
+
CheckEolSI(si);
@@ -1948,10 +2021,17 @@ static enumError ScanRTL_Track
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);
}
SetTrackFile(ctcode,tidx,track_file);
SetTrackString(ctcode,tidx,track_string);
+ SetTrackXString(ctcode,tidx,track_xstring);
SetTrackIdentifier(ctcode,tidx,track_ident);
td->music_id = htonl(music_id);
@@ -1973,6 +2053,7 @@ static enumError ScanRTL_Track
FreeString(track_file);
FreeString(track_string);
+ FreeString(track_xstring);
FreeString(track_ident);
return ERR_OK;
@@ -2026,7 +2107,7 @@ enumError ScanSetupArena ( ctcode_arena_t *ca, ScanInfo_t * si )
if (err)
return err;
- if ( property_id > 0 && ( property_id < MKW_ARENA_BEG || property_id >= MKW_ARENA_END ))
+ if ( property_id > 0 && !IsMkwArena(property_id) )
{
ccp eol = FindNextLineFeedSI(si,true);
if ( si->no_warn <= 0 )
@@ -2236,7 +2317,7 @@ enumError ScanTextArena
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
@@ -2363,7 +2444,7 @@ enumError ScanTextCTCODE
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
@@ -2384,6 +2465,7 @@ enumError ScanTextCTCODE
// [[file-name]]
UsePatchingListBMG(&ctcode->track_string);
+ //UsePatchingListBMG(&ctcode->track_xstring);
CalcCupRefCTCODE(ctcode,true);
return max_err;
}
@@ -2874,7 +2956,7 @@ enumError ScanLEBinCTCODE
for ( tidx = 0; tidx < max;
tidx++, td++, prop++, music++, flags++, ct_flags++ )
{
- if ( tidx >= 0x2a && tidx < LE_FIRST_LOWER_CT_SLOT )
+ if ( tidx >= 0x2a && tidx < LE_FIRST_CT_SLOT )
{
td->music_id = htonl(0x75);
td->property_id = htonl(0);
@@ -2945,7 +3027,8 @@ enumError ScanCTCODE
enumError err;
// [[analyse-magic]]
- switch (GetByMagicFF(data,data_size,data_size))
+ const file_format_t fform = GetByMagicFF(data,data_size,data_size);
+ switch (fform)
{
case FF_BRRES:
err = ScanBrresCTCODE(ctcode,ct_mode,data,data_size,cdata);
@@ -2969,14 +3052,14 @@ enumError ScanCTCODE
ctcode->fform = FF_CT1_DATA;
break;
- case FF_CT_TEXT:
+ case FF_CTDEF:
#if USE_NEW_CONTAINER_CTC
FreeContainerData(cdata);
#else
FreeContainer(cdata);
#endif
- err = ScanTextCTCODE(ctcode,ct_mode,data,data_size);
- ctcode->fform = FF_CT_TEXT;
+ err = ScanTextCTCODE(ctcode,ct_mode,data,data_size);
+ ctcode->fform = FF_CTDEF;
break;
case FF_LE_BIN:
@@ -2985,7 +3068,7 @@ enumError ScanCTCODE
#else
FreeContainer(cdata);
#endif
- err = ScanLEBinCTCODE(ctcode,ct_mode,data,data_size);
+ err = ScanLEBinCTCODE(ctcode,ct_mode,data,data_size);
ctcode->fform = FF_LE_BIN;
break;
@@ -2997,13 +3080,21 @@ enumError ScanCTCODE
#endif
if (ct_mode)
InitializeCTCODE(ctcode,ct_mode);
- return ERROR0(ERR_INVALID_DATA,
- "No CTCODE file: %s\n", ctcode->fname ? ctcode->fname : "?");
+
+ ccp fname = ctcode->fname ? ctcode->fname : "?";
+ return fform == FF_UNKNOWN
+ ? ERROR0(ERR_INVALID_DATA,
+ "Need CT-CODE compatible file, but have unknown file format: %s\n",
+ fname)
+ : ERROR0(ERR_INVALID_DATA,
+ "Need CT-CODE compatible file, but file format is %s: %s",
+ GetNameFF(fform,0),fname);
}
if ( !err && opt_patch_names )
PatchNamesCTCODE(ctcode);
+ ImportCtcodeLDUMP(ctcode);
return err;
}
@@ -3059,7 +3150,7 @@ enumError LoadCTCODE
if (!strcmp(fname,"0"))
{
- ctcode->fform = FF_CT_TEXT;
+ ctcode->fform = FF_CTDEF;
ctcode->fname = STRDUP(fname);
return ERR_OK;
}
@@ -3183,7 +3274,7 @@ enumError SaveTextCTCODE
fputs(section_sep,F.f);
}
else
- fprintf(F.f,"%s\r\n\r\n",CT_TEXT_MAGIC8);
+ fprintf(F.f,"%s\r\n\r\n",CT_DEF_MAGIC8);
MARK_USED(keybuf,namebuf);
fprintf( F.f, text_ctcode_setup_cr,
@@ -3232,7 +3323,6 @@ enumError SaveTextCTCODE
if ( omode.mode & 1 && ctcode->used_tracks )
{
-// [[2do]] [TRACK-LIST]
fprintf(F.f,"%s[RACING-TRACK-LIST]\r\n%s",
section_sep,
omode.syntax
@@ -3600,7 +3690,7 @@ enumError SaveMessageCTCODE
prev_cup = bi->text;
prev_cup_len = bi->len;
}
- else if ( prev_cup && tidx >= LE_FIRST_LOWER_CT_SLOT )
+ else if ( prev_cup && tidx >= LE_FIRST_CT_SLOT )
{
bmg_item_t *bi
= InsertItemBMG(&bmg,ctcode->ctb.cup_ref.beg+tidx,0,0,0);
@@ -3888,7 +3978,7 @@ enumError SaveCTCODE
{ REF("rmcj","mod2.bin", ctcode_mod2_jap_bz2), FF_MOD2 },
{ REF("rmcj","ovr1.bin", ctcode_ovr1_jap_bz2), FF_OVR1 },
- // [[2do]] [[ct-korea]]
+ // [[ct-korea]]
{ REF("rmck","boot_code.bin", 0), FF_CT0_CODE },
{ REF("rmck","boot_data.bin", 0), FF_CT0_DATA },
{ REF("rmck","bad1code.bin", 0), FF_CT1_CODE },
@@ -4056,7 +4146,7 @@ enumError SaveCTCODE
static const u32 pal[] = { 0x8065920c, 0x80653644, 0x8065a034, 0 };
static const u32 usa[] = { 0x80654d84, 0x8064f1bc, 0x80655bac, 0 };
static const u32 jap[] = { 0x80658878, 0x80652cb0, 0x806596a0, 0 };
- static const u32 kor[] = { 0 }; // [[2do]] [[ct-korea]]
+ static const u32 kor[] = { 0 }; // [[ct-korea]]
DeactivateMOD2( bz2s+BIDX_MOD2, lang_mode, pal, usa, jap, kor );
}
@@ -4068,7 +4158,7 @@ enumError SaveCTCODE
static const u32 pal[] = { 0x808a5b30, 0 };
static const u32 usa[] = { 0x808a1058, 0 };
static const u32 jap[] = { 0x808a4c90, 0 };
- static const u32 kor[] = { 0 }; // [[2do]] [[ct-korea]]
+ static const u32 kor[] = { 0 }; // [[ct-korea]]
DeactivateMOD2( bz2s+BIDX_MOD2, lang_mode, pal, usa, jap, kor );
}
}
@@ -4521,7 +4611,7 @@ int ScanOptAllowSlots ( ccp arg )
}
}
- if ( logging > 1 ) // must be set before --allow-slots
+ if ( logging >= 2 ) // must be set before --allow-slots
HexDump16(stdlog,0,0,ctcode_used_slot,sizeof(ctcode_used_slot));
return 0;
}
diff --git a/project/src/lib-ctcode.h b/project/src/lib-ctcode.h
index 9f6bf5b..e419f11 100644
--- a/project/src/lib-ctcode.h
+++ b/project/src/lib-ctcode.h
@@ -58,8 +58,8 @@
#define CT_MOD2_MAGIC_NUM 0x4d4f4432
#define CT_OVR1_MAGIC_NUM 0x4f565231
-#define CT_TEXT_MAGIC8 "#CT-CODE"
-#define CT_TEXT_MAGIC8_NUM 0x2343542d434f4445ull
+#define CT_DEF_MAGIC8 "#CT-CODE"
+#define CT_DEF_MAGIC8_NUM 0x2343542d434f4445ull
#define CT_CODE_TEX_OFFSET 0x760 // CTCODE offset in TEX0 file
#define CT_CODE_TEX_IMAGE_OFF 0x658c0 // IMAGE offset in TEX0 file
@@ -83,11 +83,16 @@
#define LE_CODE_MAX_TRACKS BMG_N_LE_TRACK // max supported tracks
#define LE_CODE_MAX_CUPS BMG_N_LE_RCUP // max supported cups, must be <= 0x100
+
+#define LE_FIRST_CT_SLOT MKW_LE_SLOT_BEG // LE: first used custom slot
+#define LE_LAST_CT_SLOT (MKW_LE_SLOT_END-1) // LE: last used custom slot
+#define LE_FIRST_RANDOM_SLOT MKW_LE_RANDOM_BEG // LE: first used random slot
+#define LE_LAST_RANDOM_SLOT (MKW_LE_RANDOM_END-1) // LE: last used random slot
+
+// 3 [[obsolete]] definitions
#define LE_FIRST_LOWER_CT_SLOT 0x44 // LE: first used custom slot
#define LE_FIRST_UPPER_CT_SLOT 0x120 // LE: first used upper custom slot
#define LE_LAST_UPPER_CT_SLOT 0x13d // LE: first used upper custom slot
-#define LE_FIRST_RANDOM_SLOT 0x3e // LE: first used upper custom slot
-#define LE_LAST_RANDOM_SLOT 0x41 // LE: first used upper custom slot
#define CODE_MAX_TRACKS LE_CODE_MAX_TRACKS // max(CT/LE CODE_MAX_TRACKS)
#define CODE_MAX_CUPS LE_CODE_MAX_CUPS // max(CT/LE CODE_MAX_CUPS)
@@ -112,6 +117,9 @@ typedef u8 le_flags_t; // type of ttack flags
static inline int TrackByAliasLE ( le_property_t prop, le_music_t music )
{ return prop << 8 | music; }
+ccp PrintLEFT ( le_flags_t flags );
+le_flags_t ScanLEFT ( ccp text );
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// ctcode_*_t ///////////////
@@ -229,7 +237,7 @@ ctcode_cupref_t;
typedef struct ctcode_arena_t
{
le_property_t prop[MKW_N_ARENAS]; // only valid if !=0
- le_music_t music[MKW_N_ARENAS]; // only valid if le_prop[]!=0
+ le_music_t music[MKW_N_ARENAS]; // only valid if prop[]!=0
}
ctcode_arena_t;
@@ -266,7 +274,7 @@ typedef struct ctcode_t
uint n_unused_cups; // number of unused cups
- //--- arenas setup fir LE-CODE
+ //--- arenas setup for LE-CODE
ctcode_arena_t arena; // data of section [SETUP-ARENA]
@@ -282,6 +290,7 @@ typedef struct ctcode_t
bmg_t track_file; // file names of any length
bmg_t track_string; // track strings of any length
+ bmg_t track_xstring; // extended track strings of any length
bmg_t track_ident; // identifiers of any length (e.g. checksums)
// property, music and le_flags
@@ -309,6 +318,7 @@ typedef struct ctcode_t
bool replace_at; // true: Replace "@..@" on track names
bool use_lecode; // true: enable le-code support
bool use_le_flags; // true: le_flags enabled
+ u8 n_strings; // number of used strings in track params (for syntax check)
struct le_lpar_t *lpar; // NULL or LPAR parameters
@@ -397,6 +407,14 @@ ccp PrintMusicID ( uint mid, bool force_hex );
ccp PrintPropertyID ( uint tid, bool force_hex );
ccp PrintArenaSlot ( uint tid, bool force_hex );
+void SetTrackBMG
+(
+ ctcode_t *ctcode, // valid CTCODE
+ bmg_t *bmg, // destination BMG
+ uint tidx, // index of the track
+ ccp text // any text
+);
+
///////////////////////////////////////////////////////////////////////////////
enumError ScanSetupArena ( ctcode_arena_t *ca, ScanInfo_t * si );
@@ -421,7 +439,7 @@ int IterateFilesCTCODE
//-----------------------------------------------------------------------------
static inline bool IsCtcodeFF ( file_format_t ff )
- { return ff == FF_TEX_CT || ff == FF_CT_TEXT || ff == FF_LE_BIN; }
+ { return ff == FF_TEX_CT || ff == FF_CTDEF || ff == FF_LE_BIN; }
//-----------------------------------------------------------------------------
diff --git a/project/src/lib-file.c b/project/src/lib-file.c
index 18a5bd1..16037f7 100644
--- a/project/src/lib-file.c
+++ b/project/src/lib-file.c
@@ -46,6 +46,7 @@
#include <dirent.h>
#include <stddef.h>
+#include "dclib-utf8.h"
#include "lib-std.h"
#include "lib-szs.h"
#include "lib-rarc.h"
@@ -59,8 +60,7 @@
#include "lib-rkg.h"
#include "lib-image.h"
#include "lib-staticr.h"
-#include "lib-ctcode.h"
-#include "lib-lecode.h"
+#include "lib-ledis.h"
#include "lib-common.h"
#include "lib-bzip2.h"
#include "lib-checksum.h"
@@ -758,7 +758,7 @@ file_format_t GetByMagicFF
case ADDR_PORT_MAGIC_NUM: return FF_PORTDB;
//--- see below for BOM support
- case CT_TEXT_MAGIC8_NUM: return FF_CT_TEXT;
+ case CT_DEF_MAGIC8_NUM: return FF_CTDEF;
case DISTRIB_MAGIC8_NUM: return FF_DISTRIB;
case ITEMSLT_TEXT_MAGIC_NUM: return FF_ITEMSLT_TXT;
case OBJFLOW_TEXT_MAGIC8_NUM: return FF_OBJFLOW_TXT;
@@ -767,6 +767,12 @@ file_format_t GetByMagicFF
case GH_KART_TEXT_MAGIC8_NUM: return FF_GH_KART_TXT;
case GH_KOBJ_TEXT_MAGIC8_NUM: return FF_GH_KOBJ_TXT;
case LE_LPAR_MAGIC_NUM: return FF_LPAR;
+ case LE_DEFINE_MAGIC8_NUM: return FF_LEDEF;
+ case LE_DISTRIB_MAGIC8_NUM: return FF_LEDIS;
+ 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_PREFIX_MAGIC8_NUM: return FF_PREFIX;
}
}
@@ -867,7 +873,7 @@ file_format_t GetByMagicFF
const u64 magic64 = be64(data+bom_len);
switch(magic64)
{
- case CT_TEXT_MAGIC8_NUM: return FF_CT_TEXT;
+ case CT_DEF_MAGIC8_NUM: return FF_CTDEF;
case DISTRIB_MAGIC8_NUM: return FF_DISTRIB;
case ITEMSLT_TEXT_MAGIC_NUM: return FF_ITEMSLT_TXT;
case OBJFLOW_TEXT_MAGIC8_NUM: return FF_OBJFLOW_TXT;
@@ -1955,8 +1961,8 @@ void SearchConfigHelper ( search_file_list_t *sfl, int stop_mode )
ccp etc[] = { "wiimm", "" };
SearchConfig(sfl,CONFIG_FILE, opt,2, &xdg_home,1, &home,1, etc,2, etc+1,1, 0,0, stop_mode );
- if (logging>3)
- DumpSearchFile(stdout,2,sfl,logging>4,"Config search list");
+ if ( logging >= 4 )
+ DumpSearchFile(stdout,2,sfl,logging>=5,"Config search list");
}
//-----------------------------------------------------------------------------
@@ -2543,7 +2549,7 @@ static char * trim_line ( char * ptr, bool allow_quote, char ** begin )
buf_ptr = MALLOC(need);
buf_size = need;
}
-
+
uint scanned_len;
int elen = ScanEscapedString(buf_ptr,buf_size,ptr,slen,true,-1,&scanned_len);
if ( elen > slen )
@@ -3528,6 +3534,7 @@ int ScanOptCoding64 ( ccp arg )
{ ENCODE_BASE64URL, "URL", 0, 0 },
{ ENCODE_BASE64STAR, "STAR", 0, 0 },
{ ENCODE_BASE64XML, "XML", 0, 0 },
+ { ENCODE_HEX, "HEX", 0, 0 },
{ 0,0,0,0 }
};
@@ -3547,9 +3554,9 @@ int ScanOptCoding64 ( ccp arg )
EncodeMode_t SetupCoding64 ( EncodeMode_t mode, EncodeMode_t fallback )
{
- PRINT("SetupCoding64(%d,%d) std=%d, url=%d, star=%d, xml=%d\n",
+ PRINT("SetupCoding64(%d,%d) std=%d, url=%d, star=%d, xml=%d, hex=%d\n",
mode, fallback,
- ENCODE_BASE64, ENCODE_BASE64URL, ENCODE_BASE64STAR, ENCODE_BASE64XML );
+ ENCODE_BASE64, ENCODE_BASE64URL, ENCODE_BASE64STAR, ENCODE_BASE64XML, ENCODE_HEX );
switch(mode)
{
@@ -3577,6 +3584,14 @@ EncodeMode_t SetupCoding64 ( EncodeMode_t mode, EncodeMode_t fallback )
TableEncode64BySetup = TableEncode64xml;
break;
+ #if 0
+ case ENCODE_HEX:
+ PRINT("USE ENCODE_HEX\n");
+ TableDecode64BySetup = TableDecode64;
+ TableEncode64BySetup = TableEncode64;
+ break;
+ #endif
+
default:
PRINT("BASE64 -> FALLBACK\n");
return SetupCoding64( fallback == ENCODE_OFF
@@ -3853,5 +3868,649 @@ slot_info_t GetSlotByName ( mem_t name, bool minus_for_empty )
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// mkw_prefix_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#include "prefix.inc"
+
+static const mkw_prefix_t *current_prefix_tab = 0;
+static int current_prefix_tab_len = 0;
+
+///////////////////////////////////////////////////////////////////////////////
+
+int ScanOptLoadPrefix ( ccp arg )
+{
+ if ( !arg || !*arg )
+ return 0;
+
+ raw_data_t raw;
+ enumError err = LoadRawData(&raw,true,arg,0,opt_ignore>0,0);
+ if ( !err && raw.fform == FF_PREFIX )
+ DefinePrefixTable(raw.data,raw.data_size);
+ ResetRawData(&raw);
+ return err > ERR_WARNING;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static int compare_prekey ( mkw_prefix_t *a, mkw_prefix_t *b )
+{
+ return strcmp(a->prefix,b->prefix);
+}
+
+//-----------------------------------------------------------------------------
+
+const mkw_prefix_t * ScanPrefixTable ( ScanText_t *st )
+{
+ DASSERT(st);
+ if (!st)
+ return 0;
+
+ enum
+ {
+ IDX_PREFIX,
+ IDX_INFO,
+ IDX_FLAGS,
+ IDX_ORDER,
+ IDX_COLOR,
+ IDX__N
+ };
+
+ st->detect_sections++;
+
+ int n_elem = 0;
+ while (NextLineScanText(st))
+ {
+ ccp pipe = memchr(st->line,'|',st->eol-st->line);
+ if ( pipe && pipe > st->line )
+ n_elem++;
+ }
+ if (!n_elem)
+ return 0;
+
+ mkw_prefix_t *tab = CALLOC( n_elem+1, sizeof(*tab) );
+ mkw_prefix_t *ptr = tab;
+
+ RewindScanText(st);
+ while ( ptr < tab+n_elem < n_elem && NextLineScanText(st) )
+ {
+ mem_t srcline = { .ptr = st->line, .len = st->eol - st->line };
+ mem_t src[IDX__N+2];
+ const uint n = SplitByCharMem(src,IDX__N+1,srcline,'|');
+ if ( n <= IDX_INFO )
+ continue;
+
+ PRINT0("LINE %d/%d: %.*s | %.*s | %.*s | %.*s | %.*s |\n",
+ lineno, n_elem,
+ src[IDX_PREFIX].len, src[IDX_PREFIX].ptr,
+ src[IDX_INFO].len, src[IDX_INFO].ptr,
+ src[IDX_FLAGS].len, src[IDX_FLAGS].ptr,
+ src[IDX_ORDER].len, src[IDX_ORDER].ptr,
+ src[IDX_COLOR].len, src[IDX_COLOR].ptr );
+
+ StringCopySMem(ptr->prefix,sizeof(ptr->prefix),src[IDX_PREFIX]);
+ ptr->info = MEMDUP(src[IDX_INFO].ptr,src[IDX_INFO].len);
+ if ( n > IDX_ORDER )
+ ptr->order = str2l(src[IDX_ORDER].ptr,0,10);
+ if ( n > IDX_COLOR )
+ ptr->color = str2l(src[IDX_COLOR].ptr,0,10);
+
+ if ( n > IDX_FLAGS )
+ {
+ mkw_prefix_flags_t flags = 0;
+ mem_t f = src[IDX_FLAGS];
+ if (memchr(f.ptr,'N',f.len)) flags |= MPF_NINTENDO;
+ if (memchr(f.ptr,'M',f.len)) flags |= MPF_MARIOKART;
+ if (memchr(f.ptr,'1',f.len)) flags |= MPF_PREFIX1;
+ if (memchr(f.ptr,'2',f.len)) flags |= MPF_PREFIX2;
+ ptr->flags = flags;
+ }
+ ptr++;
+ }
+
+ qsort( tab, n_elem, sizeof(*tab), (qsort_func)compare_prekey );
+
+ st->detect_sections--;
+ return tab;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+const mkw_prefix_t * DefinePrefixTable ( cvp source, uint len )
+{
+ ScanText_t st;
+ SetupScanText(&st,source,len);
+
+ if (current_prefix_tab)
+ {
+ for ( mkw_prefix_t *ptr = (mkw_prefix_t*)current_prefix_tab; ptr->info; ptr++ )
+ FreeString(ptr->info);
+ FREE((void*)current_prefix_tab);
+ }
+
+ current_prefix_tab = ScanPrefixTable(&st);
+ current_prefix_tab_len = 0;
+ if (current_prefix_tab)
+ for ( const mkw_prefix_t *ptr = current_prefix_tab; ptr->info; ptr++ )
+ current_prefix_tab_len++;
+
+ ResetScanText(&st);
+ return current_prefix_tab;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+const mkw_prefix_t * GetPrefixTable(void)
+{
+ if (!current_prefix_tab)
+ {
+ DecodeBZIP2Manager(&prefix_inc_mgr);
+ DefinePrefixTable(prefix_inc_mgr.data,prefix_inc_mgr.size);
+ }
+
+ return current_prefix_tab;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+const mkw_prefix_t * FindPrefix ( ccp pre, int pre_len, bool exact )
+{
+ if ( !pre || !*pre )
+ return 0;
+
+ char pbuf[20];
+ if ( pre_len < 0 )
+ pre_len = strlen(pre);
+ if ( !pre_len || pre_len >= sizeof(pbuf) )
+ return 0;
+ if (pre[pre_len])
+ {
+ memcpy(pbuf,pre,pre_len);
+ pbuf[pre_len] = 0;
+ pre = pbuf;
+ }
+
+ const mkw_prefix_t *tab = GetPrefixTable();
+ if (!tab)
+ return 0;
+
+ for ( int i = 0; i < 2; i++ )
+ {
+ 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;
+ }
+
+ if ( exact || i )
+ return 0;
+
+ StringUpperS(pbuf,sizeof(pbuf),pre);
+ if (!strcmp(pbuf,pre))
+ return 0;
+ pre = pbuf;
+ }
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError SavePrefixTable ( FILE *f, const mkw_prefix_t * tab )
+{
+ if (!tab)
+ tab = GetPrefixTable();
+ if ( !tab || !f )
+ return ERR_MISSING_PARAM;
+
+ fprintf(f,
+ "#PREFIX1\r\n"
+ "#> prefix|info|flags|order|\r\n"
+ "# Info flags: N: by Nintento, M: Original Mario Kart\r\n"
+ "# Functional flags: 1|2: Can be used as first|second part of a combi\r\n"
+ "#%.68s\r\n"
+ ,Minus300 );
+
+ int count = 0, fw_prefix = 0, fw_info = 0;
+ for ( ; tab->info; tab++ )
+ {
+ count++;
+ exmem_t prefix = EscapeStringPipeCircS(tab->prefix);
+ exmem_t info = EscapeStringPipeCircS(tab->info);
+
+ if ( fw_prefix < prefix.data.len )
+ fw_prefix = prefix.data.len;
+ if ( fw_info < info.data.len )
+ fw_info = info.data.len;
+
+ fprintf(f,"%s|%s|%s%s%s%s|%u|\r\n",
+ prefix.data.ptr, info.data.ptr,
+ tab->flags & MPF_NINTENDO ? "N" : "",
+ tab->flags & MPF_MARIOKART ? "M" : "",
+ tab->flags & MPF_PREFIX1 ? "1" : "",
+ tab->flags & MPF_PREFIX2 ? "2" : "",
+ tab->order );
+
+ FreeExMem(&prefix);
+ FreeExMem(&info);
+ }
+
+ fprintf(f,
+ "#-------------------\r\n"
+ "# %u prefixes total\r\n"
+ "# Max prefix len:%2u\r\n"
+ "# Max info len:%4u\r\n"
+ ,count
+ ,fw_prefix
+ ,fw_info
+ );
+
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError SavePrefixTableFN ( ccp fname, const mkw_prefix_t * tab )
+{
+ File_t F;
+ enumError err = CreateFileOpt(&F,true,fname,false,0);
+ if (!err)
+ err = SavePrefixTable(F.f,tab);
+ CloseFile(&F,0);
+ return err;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// split_filename_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+ccp opt_plus = "+";
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetSPF ( split_filename_t *spf )
+{
+ if (spf)
+ {
+ if (spf->input_alloced)
+ FreeString(spf->input);
+ FreeString(spf->norm.ptr);
+ InitializeSPF(spf);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void AnalyseSPF
+(
+ split_filename_t *spf, // valid pointet
+ bool init_spf, // true: InitializeSPF(), false: ResetSPF()
+ ccp source, // NULL or ponter to name
+ ccp src_end, // end of source. if 0 then use strlen()
+ CopyMode_t cpm, // copy mode for 'source'
+ ccp plus_mode // NULL or string of chars
+)
+{
+ if (!spf)
+ return;
+
+ //--- setup
+
+ if ( init_spf)
+ InitializeSPF(spf);
+ else
+ ResetSPF(spf);
+
+ if ( !source || !*source || src_end && src_end <= source )
+ return;
+
+ char buf[100];
+
+
+ //--- store input data
+
+ if ( cpm == CPM_COPY )
+ {
+ // optimization: we need only the base name
+ const int nlen = src_end ? src_end - source : strlen(source);
+ char *slash = memrchr(source,'/',nlen);
+ if (slash)
+ source = slash+1;
+ }
+
+ int nlen = src_end ? src_end - source : strlen(source);
+ spf->input = CopyData(source,nlen,cpm,&spf->input_alloced);
+
+ char *name = (char*)spf->input;
+ char *end = name + nlen;
+
+
+ //--- remove leading directory and store source
+
+ char *slash = memrchr(name,'/',nlen);
+ if (slash)
+ {
+ slash++;
+ nlen -= slash - name;
+ name = slash;
+ }
+
+ spf->source.ptr = name;
+ spf->source.len = nlen;
+
+
+ //--- split source into name + d + ext
+
+ // find last space or ']' or ')'
+ for ( char *p1 = end-1; p1 > name; p1-- )
+ {
+ if ( *p1 == '.' )
+ {
+ spf->f_ext.ptr = p1;
+ spf->f_ext.len = end - p1;
+ end = p1;
+ nlen = end - name;
+ break;
+ }
+
+ if ( (uchar)*p1 <= ' ' || *p1 == ']' || *p1 == ')' )
+ break;
+ }
+
+ if ( nlen >= 2 && end[-1] == 'd' && end[-2] == '_' )
+ {
+ end -= 2;
+ spf->f_d.ptr = end;
+ spf->f_d.len = 2;
+ nlen -= 2;
+ }
+
+ spf->f_name.ptr = name;
+ spf->f_name.len = nlen;;
+
+
+ //--- alloc name buffer and normalize blanks,controls and "ː⁄"
+
+ char *p1 = MALLOC(nlen+1), *p2;
+ spf->norm.ptr = p1;
+ int have_blank = 0;
+ for ( ccp src = name; src < end; src++ )
+ {
+ if ( (uchar)*src > ' ' )
+ {
+ if ( have_blank && p1 > spf->norm.ptr )
+ *p1++ = ' ';
+
+ if (!memcmp(src,"ː",sizeof("ː")-1))
+ {
+ *p1++ = ':';
+ src += sizeof("ː") - 2;
+ }
+ else if (!memcmp(src,"⁄",sizeof("⁄")-1))
+ {
+ *p1++ = '/';
+ src += sizeof("⁄") - 2;
+ }
+ else
+ *p1++ = *src;
+ have_blank = 0;
+ }
+ else
+ have_blank++;
+ }
+
+ *p1 = 0;
+ name = (char*)spf->norm.ptr;
+ end = p1;
+ nlen = end - name;
+ spf->norm.len = nlen;
+
+
+ //--- attributes and authors
+
+ p1 = memrchr(name,'[',nlen);
+ if (p1)
+ {
+ p2 = memrchr(name,']',nlen);
+ if ( !p2 || p2 <= p1 )
+ p2 = end;
+
+ spf->attribs.ptr = p1+1;
+ spf->attribs.len = p2 - spf->attribs.ptr;
+ end = p1;
+ while ( end > name && end[-1] == ' ' )
+ end--;
+ nlen = end - name;
+ }
+
+ p1 = memrchr(name,'(',nlen);
+ if (p1)
+ {
+ p2 = memrchr(name,')',nlen);
+ if ( !p2 || p2 <= p1 )
+ p2 = end;
+
+ spf->authors.ptr = p1+1;
+ spf->authors.len = p2 - spf->authors.ptr;
+ end = p1;
+ while ( end > name && end[-1] == ' ' )
+ end--;
+ nlen = end - name;
+ }
+
+
+ //--- check version number
+
+ p1 = memrchr(name,' ',nlen);
+ p2 = memrchr(name,'}',nlen);
+ if ( !p1 || p2 && p1 < p2 )
+ p1 = p2;
+ if (p1)
+ {
+ p1++;
+ p2 = buf;
+ for ( char *src = p1; src < end && p2 < buf+sizeof(buf)-1 && isalpha((int)*src); src++ )
+ *p2++ = tolower((int)*src);
+
+ int plen = p2 - buf, valid = 0;
+ switch (plen)
+ {
+ case 1:
+ valid = !memcmp(buf,"v",1)
+ || !memcmp(buf,"t",1);
+ break;
+
+ case 2:
+ valid = !memcmp(buf,"rc",2)
+ || !memcmp(buf,"vx",2);
+ break;
+
+ case 3:
+ valid = !memcmp(buf,"pre",3)
+ || !memcmp(buf,"poc",3)
+ || !memcmp(buf,"rcx",3);
+ break;
+
+ case 4:
+ valid = !memcmp(buf,"beta",4)
+ || !memcmp(buf,"test",4)
+ || !memcmp(buf,"vjam",4);
+ break;
+
+ case 5:
+ valid = !memcmp(buf,"alpha",5);
+ break;
+
+ case 7:
+ valid = !memcmp(buf,"preview",7);
+ break;
+ }
+
+ if (valid)
+ {
+ spf->version.ptr = p1;
+ spf->version.len = end - p1;
+ end = p1;
+ while ( end > name && end[-1] == ' ' )
+ end--;
+ nlen = end - name;
+ }
+ }
+
+
+ //--- check extra
+
+ p1 = memrchr(name,'{',nlen);
+ if (!p1)
+ p1 = memrchr(name,'(',nlen);
+ if (p1)
+ {
+ p2 = memrchr(p1,'}',end-p1);
+ if (!p2)
+ p2 = memrchr(p1,')',end-p1);
+ if (!p2)
+ p2 = end;
+ if ( p1 < p2 )
+ {
+ spf->extra.ptr = p1+1;
+ spf->extra.len = p2 - spf->extra.ptr;
+ end = p1;
+ while ( end > name && end[-1] == ' ' )
+ end--;
+ nlen = end - name;
+ }
+ }
+
+
+ //--- plus
+
+ spf->plus_order = 999999;
+ if ( *name == '+' )
+ {
+ p2 = strchr(name,' ');
+ if (p2)
+ {
+ p1 = name;
+ while ( *p1 == '+' )
+ p1++;
+ if ( p1 == p2 )
+ p1--;
+
+ spf->plus_order = 998000 - (p1-name) * 1000;
+ if ( spf->plus_order < 0 )
+ spf->plus_order = 0;
+
+ ccp found = plus_mode ? strchr(plus_mode,*p1) : 0;
+ spf->plus_order += found ? found - plus_mode : 500 + *p1;
+
+ spf->plus.ptr = name;
+ spf->plus.len = p2 - name;
+ name = p2+1;
+ nlen = end - name;
+ }
+ }
+
+
+ //--- special chars
+
+ #if SUPPORT_SPLIT_SIGN
+ p1 = name;
+ for (;;)
+ {
+ p2 = NextUTF8Char(p1);
+ const int len = p2 - p1;
+ if ( ( !len || memcmp(p1,"→",len) && memcmp(p1,"»",len) )
+ && ( len != 1 || !strchr("~>^",*p1) )
+ )
+ {
+ break;
+ }
+ p1 = p2;
+ }
+ if ( p1 > name )
+ {
+ if ( *p1 == ' ' )
+ p1++;
+ spf->sign.ptr = name;
+ spf->sign.len = p1 - name;
+ name = p1;
+ nlen = end - name;
+ }
+ #endif
+
+
+ //--- boost
+
+ if (!strncasecmp(name,"boost:",6))
+ {
+ spf->boost.ptr = name;
+ spf->boost.len = 6;
+ name += 6;
+ if ( *name == ' ' )
+ name++;
+ nlen = end - name;
+ }
+
+
+ //--- game prefix
+
+ spf->game_order = 999999;
+ p1 = memchr(name,' ',nlen);
+ if (p1)
+ {
+ const mkw_prefix_t *pre1 = FindPrefix(name,p1-name,true);
+ if (pre1)
+ {
+ spf->game1.ptr = name;
+ spf->game1.len = p1 - name;
+ spf->game = spf->game1;
+ spf->game_color = pre1->color;
+ spf->game_order = 1000 * pre1->order;
+ int add_game = 998;
+ name = p1+1;
+ nlen = end - name;
+
+ if ( pre1->flags & MPF_PREFIX1 )
+ {
+ 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;
+ name = p1+1;
+ nlen = end - name;
+ add_game = 2*pre2->order;
+ }
+ }
+ }
+ spf->game_order += add_game;
+ if (spf->boost.len)
+ spf->game_order++;
+ }
+ }
+
+
+ //--- finally we have the pure name
+
+ spf->name.ptr = name;
+ spf->name.len = nlen;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// END ///////////////
///////////////////////////////////////////////////////////////////////////////
diff --git a/project/src/lib-geohit.c b/project/src/lib-geohit.c
index 1d5a357..655a0f0 100644
--- a/project/src/lib-geohit.c
+++ b/project/src/lib-geohit.c
@@ -450,7 +450,7 @@ enumError ScanTextGEOHIT
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
diff --git a/project/src/lib-itemslot.c b/project/src/lib-itemslot.c
index 8e32690..2ec467c 100644
--- a/project/src/lib-itemslot.c
+++ b/project/src/lib-itemslot.c
@@ -486,7 +486,7 @@ enumError ScanTextITEMSLOT
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
diff --git a/project/src/lib-kmp-pflags.c b/project/src/lib-kmp-pflags.c
index d6d84da..3f827a3 100644
--- a/project/src/lib-kmp-pflags.c
+++ b/project/src/lib-kmp-pflags.c
@@ -1468,7 +1468,7 @@ void AnalysePFlagScenarios
}
#if defined(TEST) || defined(HAVE_WIIMM_EXT)
- if ( logging > 1 )
+ if ( logging >= 2 )
{
XDump_t xd;
InitializeXDump(&xd);
@@ -1869,7 +1869,7 @@ static uint DiffXPF ( xpf_mode1_info_t *l1, xpf_mode1_info_t *l2, int loop )
//--- logging
- if ( logging > 1 )
+ if ( logging >= 2 )
{
LogListXPF(l1,1,"patching list",loop,max_eval);
LogListXPF(l2,2,"reference list",loop,max_eval);
@@ -1951,7 +1951,7 @@ enumError RepairXPF ( kmp_t *kmp )
while (DiffXPF(kinfo,rinfo,loop))
loop++;
- if ( logging > 1 )
+ if ( logging >= 2 )
fputc('\n',stdlog);
FREE(rinfo);
diff --git a/project/src/lib-kmp-text.c b/project/src/lib-kmp-text.c
index 1e83f41..9d041ac 100644
--- a/project/src/lib-kmp-text.c
+++ b/project/src/lib-kmp-text.c
@@ -1894,7 +1894,7 @@ static void TermGL
const bool auto_prev
= gl->ph->ac_mode == KMP_AC_PREV
|| gl->ph->ac_mode == KMP_AC_AUTO_PREV && !grp->have_prev_cmd;
- if (sect_ph==KMP_ENPH) PRINT1("auto_prev=%d ; %s\n",auto_prev,grp->name);
+ //if (sect_ph==KMP_ENPH) PRINT1("auto_prev=%d ; %s\n",auto_prev,grp->name);
#else
const bool auto_prev
= gl->ph->ac_mode == KMP_AC_PREV
@@ -5696,7 +5696,7 @@ enumError ScanTextKMP
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
diff --git a/project/src/lib-lecode.c b/project/src/lib-lecode.c
index 26bd3b8..ad6d94c 100644
--- a/project/src/lib-lecode.c
+++ b/project/src/lib-lecode.c
@@ -36,11 +36,13 @@
***************************************************************************/
#include "dclib-xdump.h"
-#include "lib-lecode.h"
+#include "lib-ledis.h"
#include "lib-std.h"
#include "lib-mkw.h"
#include "lib-szs.h"
+#include "lib-bzip2.h"
#include "lpar.inc"
+#include "lecode.inc"
#include <stddef.h>
@@ -49,11 +51,11 @@
/////////////// vars ///////////////
///////////////////////////////////////////////////////////////////////////////
-ccp opt_le_define = 0;
ccp opt_le_arena = 0;
ccp opt_lpar = 0;
ccp opt_track_dest = 0;
ParamField_t opt_track_source = {0};
+int opt_szs_mode = TFMD_LINK;
ccp opt_le_alias = 0;
bool opt_engine_valid = false;
@@ -77,26 +79,72 @@ uint GetNextRacingTrackLE ( uint tid )
if ( ++tid == 0xff )
tid++;
- if ( tid > MKW_N_TRACKS && tid < LE_FIRST_LOWER_CT_SLOT )
- tid = LE_FIRST_LOWER_CT_SLOT;
+ if ( tid > MKW_N_TRACKS && tid < LE_FIRST_CT_SLOT )
+ tid = LE_FIRST_CT_SLOT;
return tid;
}
///////////////////////////////////////////////////////////////////////////////
-int ScanOptTrackSource ( ccp arg, int mode )
+int ScanOptTrackSource ( ccp arg, int arg_len, int mode )
{
- if ( arg && *arg )
+ static ccp last_key = ""; // for optimization if scanning path/*.szs
+
+ if (arg)
{
- if (!opt_track_source.field)
- InitializeParamField(&opt_track_source);
- AppendParamField(&opt_track_source,arg,false,mode,0);
+ if ( arg_len < 0 )
+ arg_len = strlen(arg);
+ if ( arg_len > 0 )
+ {
+ char path[PATH_MAX];
+ StringCopySM(path,sizeof(path),arg,arg_len);
+ if ( path[arg_len-1] == '/' )
+ path[--arg_len] = 0;
+
+ if ( arg_len > 0
+ && strcmp(last_key,path)
+ && !FindParamField(&opt_track_source,path)
+ )
+ {
+ PRINT("APPEND TRACK_SOURCE: 0x%03x %s\n",mode,path);
+ if (!opt_track_source.field)
+ InitializeParamField(&opt_track_source);
+ ParamFieldItem_t *it
+ = AppendParamField(&opt_track_source,path,false,mode,0);
+ if (it)
+ last_key = it->key;
+ }
+ }
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
+int ScanOptSzsMode ( ccp arg )
+{
+ const KeywordTab_t keytab[] =
+ {
+ { 0, "OFF", 0, 0 },
+ { TFMD_COPY, "COPY", "CP", 0 },
+ { TFMD_MOVE, "MOVE", "MV", 0 },
+ { TFMD_MOVE1, "MOVE1", "MV1", 0 },
+ { TFMD_LINK, "LINK", "LN", 0 },
+ { 0,0,0,0 }
+ };
+
+ int abbrev_count;
+ const KeywordTab_t *cmd = ScanKeyword(&abbrev_count,arg,keytab);
+ if (!cmd)
+ return 1;
+
+ opt_szs_mode = cmd->id;
+ PRINT1("SZS-MODE=%d\n",opt_szs_mode);
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
int ScanOpt200cc ( ccp arg )
{
const int stat
@@ -210,6 +258,7 @@ ccp GetLecodeSpeedoName ( speedo_mode_t mode )
}
///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
ccp GetLecodeDebugName ( le_debug_mode_t mode )
{
@@ -284,16 +333,16 @@ int ScanOptDebug ( ccp arg )
}
///////////////////////////////////////////////////////////////////////////////
-
#if 0
-int ScanOptReserved_1bb ( ccp arg )
-{
+
+ int ScanOptReserved_1bb ( ccp arg )
+ {
opt_reserved_1bb = str2l(arg,0,10);
PRINT("RESERVED_1BB=%d\n",opt_reserved_1bb);
return 0;
-}
-#endif
+ }
+#endif
///////////////////////////////////////////////////////////////////////////////
int ScanOptAlias ( ccp arg )
@@ -356,7 +405,7 @@ int ScanOptEngine ( ccp arg )
return ERROR0(ERR_SYNTAX,
"Invalid argument for option --engine, »a,b,c« expected: %s",arg);
- if (sum > 0.0 )
+ if ( sum > 0.0 )
{
sum = 100/sum;
uint total = 100;
@@ -420,12 +469,50 @@ const VarMap_t * SetupVarsLECODE()
{ "SPEEDO$2", SPEEDO_FRACTION2 },
{ "SPEEDO$3", SPEEDO_FRACTION3 },
+ { "BT", LTTY_ARENA },
+ { "VS", LTTY_TRACK },
+ { "FILL", -1 },
+
+ { "RALL", MKW_LE_RANDOM_BEG+0 },
+ { "RORIG", MKW_LE_RANDOM_BEG+1 },
+ { "RCUST", MKW_LE_RANDOM_BEG+2 },
+ { "RNEW", MKW_LE_RANDOM_BEG+3 },
+
+ { "LE$STRING_LIST_ENABLED", LE_STRING_LIST_ENABLED },
+ { "LE$STRING_SET_ENABLED", LE_STRING_SET_ENABLED },
+ { "LE$TYPE_MARKERS_ENABLED",LE_TYPE_MARKERS_ENABLED },
+
{0,0}
};
const struct inttab_t * ip;
for ( ip = inttab; ip->name; ip++ )
DefineIntVar(&vm,ip->name,ip->val);
+
+ char name[20];
+ ccp prefix = GetNameLTTY(LTTY_ARENA);
+ for ( int slot = MKW_ARENA_BEG; slot < MKW_ARENA_END; slot++ )
+ {
+ snprintf(name,sizeof(name),"%s%u",prefix,slot);
+ StringUpperS(name,sizeof(name),name);
+ DefineIntVar(&vm,name,slot);
+ }
+
+ prefix = GetNameLTTY(LTTY_TRACK);
+ for ( int slot = MKW_TRACK_BEG; slot < MKW_TRACK_END; slot++ )
+ {
+ snprintf(name,sizeof(name),"%s%u",prefix,slot);
+ StringUpperS(name,sizeof(name),name);
+ DefineIntVar(&vm,name,slot);
+ }
+
+ prefix = GetNameLTTY(LTTY_RANDOM|LTTY_TRACK);
+ for ( int slot = MKW_LE_RANDOM_BEG; slot < MKW_LE_RANDOM_END; slot++ )
+ {
+ snprintf(name,sizeof(name),"%s%u",prefix,slot);
+ StringUpperS(name,sizeof(name),name);
+ DefineIntVar(&vm,name,slot);
+ }
}
return &vm;
}
@@ -671,6 +758,148 @@ bool SetupLecodeDebugIfEmptyLPAR ( le_lpar_t *lpar )
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_region_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+le_region_t GetLEREG ( char ch )
+{
+ switch (ch)
+ {
+ case 'p': case 'P': return LEREG_PAL;
+ case 'u': case 'U': return LEREG_USA;
+ case 'j': case 'J': return LEREG_JAP;
+ case 'k': case 'K': return LEREG_KOR;
+ }
+ return LEREG_UNKNOWN;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetNameLEREG ( le_region_t lereg, ccp return_on_invalid )
+{
+ switch (lereg)
+ {
+ case LEREG_PAL: return "PAL";
+ case LEREG_USA: return "USA";
+ case LEREG_JAP: return "JAP";
+ case LEREG_KOR: return "KOR";
+ default: return return_on_invalid;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// replace last '@' by region name.
+// returns either NULL on error or 'name' or 'buf'. If !buf or to small, then use circ-buf.
+
+ccp PatchNameLEREG ( char *buf, uint bufsize, ccp name, le_region_t lereg )
+{
+ if (!name)
+ return 0;
+
+ ccp at = strrchr(name,'@');
+ ccp reg = GetNameLEREG(lereg,0);
+ if ( !at || !reg )
+ return name;
+
+ const uint pos = at - name;
+ const uint need = strlen(name)+ 3; // includes term-0
+
+ if ( ( !buf || !bufsize ) && need <= CIRC_BUF_MAX_ALLOC )
+ {
+ buf = GetCircBuf(need);
+ bufsize = need;
+ }
+
+ if ( buf && bufsize >= need )
+ {
+ memcpy(buf,name,pos);
+ memcpy(buf+pos,reg,3);
+ strcpy(buf+pos+3,at+1);
+ return buf;
+ }
+
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+const mem_t GetLecodeLEREG ( le_region_t reg )
+{
+ BZ2Manager_t *lm;
+ switch (reg)
+ {
+ case LEREG_PAL: lm = &lecode_pal_bin_mgr; break;
+ case LEREG_USA: lm = &lecode_usa_bin_mgr; break;
+ case LEREG_JAP: lm = &lecode_jap_bin_mgr; break;
+ case LEREG_KOR: lm = &lecode_kor_bin_mgr; break;
+ default: return NullMem;
+ }
+
+ DecodeBZIP2Manager(lm);
+ mem_t res = { .ptr = (ccp)lm->data, .len = lm->size };
+ return res;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetLecodeBuildLEREG ( le_region_t reg )
+{
+ return GetBuildLECODE(GetLecodeLEREG(reg));
+}
+
+//-----------------------------------------------------------------------------
+
+ccp GetBuildLECODE ( mem_t lecode )
+{
+ if ( !lecode.ptr || lecode.len < sizeof(le_binary_head_v4_t) )
+ return "?";
+
+ const le_binary_head_v4_t *head = (le_binary_head_v4_t*)lecode.ptr;
+ return ntohl(head->version) < 4
+ ? PrintCircBuf("%u",ntohl(head->build_number))
+ : PrintCircBuf("%u (%.10s)",ntohl(head->build_number),head->timestamp);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetLecodeInfoLEREG ( le_region_t reg )
+{
+ return GetInfoLECODE(GetLecodeLEREG(reg));
+}
+
+//-----------------------------------------------------------------------------
+
+ccp GetInfoLECODE ( mem_t lecode )
+{
+ if ( !lecode.ptr || lecode.len < sizeof(le_binary_head_v4_t) )
+ return "?";
+
+ const le_binary_head_v4_t *head = (le_binary_head_v4_t*)lecode.ptr;
+ ccp region = head->region == 'P' ? "PAL"
+ : head->region == 'E' ? "USA"
+ : head->region == 'J' ? "JAP"
+ : head->region == 'K' ? "KOR"
+ : "?";
+ ccp debug = head->debug == 'D' ? "/debug" : "";
+
+ return ntohl(head->version) < 4
+ ? PrintCircBuf("%s%s v%u, build %u, %u bytes",
+ region, debug,
+ ntohl(head->version),
+ ntohl(head->build_number),
+ ntohl(head->size) )
+ : PrintCircBuf("%s%s v%u, build %u (%s UTC), %u bytes",
+ region, debug,
+ ntohl(head->version),
+ ntohl(head->build_number),
+ head->timestamp,
+ ntohl(head->size) );
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// LPAR support ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -938,12 +1167,16 @@ static void NormalizeLPAR ( le_lpar_t * lp )
if ( sum != 0 && sum != 100 )
{
double factor = 100.0/sum;
- lp->engine[0] = lp->engine[0] * factor;
- lp->engine[1] = lp->engine[1] * factor;
+ lp->engine[0] = double2int( lp->engine[0] * factor );
+ lp->engine[1] = double2int( lp->engine[1] * factor );
sum = lp->engine[0] + lp->engine[1];
if ( sum > 100 )
lp->engine[1] -= sum-100;
lp->engine[2] = 100 - lp->engine[0] - lp->engine[1];
+ PRINT0("NORM ENGINE: %u + %u + %u = %u [200cc=%d])\n",
+ lp->engine[0], lp->engine[1], lp->engine[2],
+ lp->engine[0] + lp->engine[1] + lp->engine[2],
+ lp->enable_200cc );
}
if ( lp->thcloud_frames < 1 || lp->thcloud_frames > 0x7fff )
@@ -1047,33 +1280,52 @@ enumError SaveTextLPAR
DASSERT(fname);
PRINT("SaveTextLPAR(%s,%d)\n",fname,set_time);
-
- //--- open file
-
File_t F;
enumError err = CreateFileOpt(&F,true,fname,testmode,fname);
if ( err > ERR_WARNING || !F.f )
return err;
+ err = SaveTextFileLPAR(lpar,F.f,true);
+
+ ResetFile(&F,set_time);
+ return err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError SaveTextFileLPAR
+(
+ le_lpar_t *lpar, // LE-CODE parameters
+ FILE *f, // open file
+ bool print_full // true: print ehader + append section [END]
+)
+{
+ DASSERT(lpar);
+ DASSERT(f);
+ PRINT("SaveTextFileLPAR(%s,%d)\n",fname,set_time);
+
//--- print header + syntax info
- if ( print_header && !brief_count && !export_count )
- fprintf(F.f,text_lpar_head_cr);
- else
- fprintf(F.f,"%s\r\n",LE_LPAR_MAGIC);
+ if (print_full)
+ {
+ if ( print_header && !brief_count && !export_count )
+ fprintf(f,text_lpar_head_cr);
+ else
+ fprintf(f,"%s\r\n",LE_LPAR_MAGIC);
+ }
//--- print section
SetupLecodeDebugIfEmptyLPAR(lpar);
- err = WriteSectionLPAR(F.f,lpar);
+ enumError err = WriteSectionLPAR(f,lpar);
//--- print footer
- fputs(section_end,F.f);
- ResetFile(&F,set_time);
+ if (print_full)
+ fputs(section_end,f);
return err;
}
@@ -1394,6 +1646,7 @@ enumError AnalyseLEBinary
ana->valid = LE_HEAD_FOUND;
ana->version = head->phase;
+ ana->region = GetLEREG(head->region);
ana->data = data;
ana->size = data_size;
ana->head = head;
@@ -1646,6 +1899,24 @@ enumError AnalyseLEBinary
///////////////////////////////////////////////////////////////////////////////
+le_region_t GetLERegion ( const le_analyse_t *ana )
+{
+ if (ana->valid)
+ {
+ const le_binary_head_t *h = ana->head;
+ switch (h->region)
+ {
+ case 'P': return LEREG_PAL;
+ case 'E': return LEREG_USA;
+ case 'J': return LEREG_JAP;
+ case 'K': return LEREG_KOR;
+ }
+ }
+ return LEREG_UNKNOWN;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
void CalculateStatsLE ( le_analyse_t *ana )
{
ResetLEAnalyseUsage(ana);
@@ -1659,7 +1930,7 @@ void CalculateStatsLE ( le_analyse_t *ana )
? ana->max_property : ana->max_music;
if ( ana->max_slot > ana->max_flags )
ana->max_slot = ana->max_flags;
- if ( ana->max_slot < LE_FIRST_LOWER_CT_SLOT )
+ if ( ana->max_slot < LE_FIRST_CT_SLOT )
return;
@@ -1673,7 +1944,7 @@ void CalculateStatsLE ( le_analyse_t *ana )
used++;
}
- for ( slot = LE_FIRST_LOWER_CT_SLOT; slot < ana->n_slot; slot++ )
+ for ( slot = LE_FIRST_CT_SLOT; slot < ana->n_slot; slot++ )
{
total++;
if (IsLESlotUsed(ana,slot))
@@ -1704,7 +1975,7 @@ const le_usage_t * GetLEUsage ( const le_analyse_t *ana0, bool force_recalc )
if ( force_recalc && ana->usage )
ResetLEAnalyseUsage(ana);
- if ( ana->usage || ana->max_slot < LE_FIRST_LOWER_CT_SLOT )
+ if ( ana->usage || ana->max_slot < LE_FIRST_CT_SLOT )
return ana->usage;
ana->usage_size = ana->n_slot > 0x100 ? ana->n_slot : 0x100;
@@ -1734,7 +2005,7 @@ const le_usage_t * GetLEUsage ( const le_analyse_t *ana0, bool force_recalc )
usage[slot] = IsLESlotUsed(ana,slot)
? LEU_S_TRACK|LEU_F_ONLINE : LEU_F_ONLINE;
- for ( slot = LE_FIRST_LOWER_CT_SLOT; slot < ana->usage_size; slot++ )
+ for ( slot = LE_FIRST_CT_SLOT; slot < ana->usage_size; slot++ )
{
if (IsLESlotUsed(ana,slot))
{
@@ -1904,7 +2175,7 @@ static ccp GetSlotInfo
ccp music1 = "", music0 = "";
const int music = ana->music ? ana->music[tid] : -1;
ccp musicx = GetMkwMusicName3(music);
- if ( tid < MKW_ORIGINAL_END || tid >= LE_FIRST_LOWER_CT_SLOT )
+ if ( tid < MKW_ORIGINAL_END || tid >= LE_FIRST_CT_SLOT )
{
if ( music < MKW_MUSIC_MIN_ID || music > MKW_MUSIC_MAX_ID )
{
@@ -2029,7 +2300,7 @@ static void DumpLETracks
//--- battle cups
- if ( ana->n_cup_track && ana->cup_track )
+ if ( ana->n_cup_arena && ana->cup_arena )
{
fprintf(f,"\n%*s%s" "%u cup%s with battle tracks (%s):%s\n",
indent-2,"", col->heading,
@@ -2042,7 +2313,7 @@ static void DumpLETracks
{
if ( cp[0] || cp[1] || cp[2] || cp[3] || cp[4] )
{
- fprintf(f,"%*s" "Cup %2u:",indent,"",cup);
+ fprintf(f,"%*s" "Cup %3u:",indent,"",cup);
uint warnings;
DumpLECup(f,ana,cp,5,col,CHECK_ARENA,&warnings,done);
if (warnings)
@@ -2075,7 +2346,7 @@ static void DumpLETracks
{
if ( cp[0] || cp[1] || cp[2] || cp[3] )
{
- fprintf(f,"%*s" "Cup %2u:",indent,"",cup);
+ fprintf(f,"%*s" "Cup %3u:",indent,"",cup);
uint warnings;
DumpLECup(f,ana,cp,4,col,CHECK_TRACK,&warnings,done);
if (warnings)
@@ -2176,7 +2447,7 @@ static void DumpLETracks
uint first_unused_slot = max_used_slot + 1;
if (!IsRacingTrackLE(first_unused_slot))
- first_unused_slot = LE_FIRST_LOWER_CT_SLOT;
+ first_unused_slot = LE_FIRST_CT_SLOT;
const int unused_slots = ana->n_slot - first_unused_slot;
if ( unused_slots > 0 )
fprintf(f,"%*s > %u slot%s beginning with slot %u (%x/hex) are not used.\n",
@@ -2332,7 +2603,7 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyse_t *ana )
const le_binary_head_v4_t *h = ana->head_v4;
DASSERT(h);
fprintf(f,
- "%*s" "Timestamp: %s\n"
+ "%*s" "Timestamp: %s UTC\n"
,indent,"", h->timestamp
);
}
@@ -2351,7 +2622,7 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyse_t *ana )
const le_binary_param_t *h = ana->param;
DASSERT(h);
fprintf(f,
- "\n%*s%s" "Parameters:%s\n"
+ "\n%*s%s" "Parameters (LPAR):%s\n"
"%*s" "Magic: %.4s\n"
"%*s" "Version: %u\n"
"%*s" "Param size: %x/hex = %u bytes\n"
@@ -2612,7 +2883,8 @@ void DumpLEAnalyse ( FILE *f, uint indent, const le_analyse_t *ana )
/////////////// copy track files ///////////////
///////////////////////////////////////////////////////////////////////////////
-void CopyTrackFile ( uint tid, ccp name )
+void TransferTrackFile
+ ( LogFile_t *log, uint dest_slot, ccp src_name, TransferMode_t flags )
{
if ( opt_track_dest
&& IsDirectory(opt_track_dest,false)
@@ -2620,23 +2892,24 @@ void CopyTrackFile ( uint tid, ccp name )
{
char src[PATH_MAX];
char dest[PATH_MAX];
+ flags &= TFMD_M_FLAGS;
ParamFieldItem_t *ptr = opt_track_source.field, *end;
for ( end = ptr + opt_track_source.used; ptr < end; ptr++ )
{
- PathCatBufPPE(src,sizeof(src),ptr->key,name,".szs");
+ PathCatBufPPE(src,sizeof(src),ptr->key,src_name,".szs");
struct stat st;
if ( !stat(src,&st) && S_ISREG(st.st_mode) )
{
- snprintf(dest,sizeof(dest),"%s/%03x.szs",opt_track_dest,tid);
- if (!TransferFile(src,dest,ptr->num,0666))
+ snprintf(dest,sizeof(dest),"%s/%03x.szs",opt_track_dest,dest_slot);
+ if (!TransferFile(log,dest,src,ptr->num|flags,0666))
{
- PathCatBufPPE(src,sizeof(src),ptr->key,name,"_d.szs");
+ 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,tid);
- TransferFile(src,dest,ptr->num,0666);
+ snprintf(dest,sizeof(dest),"%s/%03x_d.szs",opt_track_dest,dest_slot);
+ TransferFile(log,dest,src,ptr->num|flags,0666);
}
}
break;
@@ -2645,6 +2918,32 @@ void CopyTrackFile ( uint tid, ccp name )
}
}
+///////////////////////////////////////////////////////////////////////////////
+
+void TransferTrackBySlot
+ ( LogFile_t *log, uint dest_slot, uint src_slot, TransferMode_t flags )
+{
+ if ( IsValidLecodeSlot(dest_slot)
+ && IsValidLecodeSlot(src_slot)
+ && opt_track_dest
+ && IsDirectory(opt_track_dest,false)
+ )
+ {
+ 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 );
+
+ 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 );
+ TransferFile(log,dest,src,TFMD_LINK|flags,0666);
+ }
+ }
+}
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// LECODE file ///////////////
@@ -2674,7 +2973,7 @@ const ctcode_t * LoadLEFile ( uint le_phase )
{
PRINT("le=%d, ctm=%d[%s]\n",
le_phase, ct_mode, GetCtModeNameBMG(ct_mode,true) );
- if ( logging > 1 )
+ if ( logging >= 2 )
fprintf(stdlog,"Load LE definition (%s)\n",
GetCtModeNameBMG(ct_mode,true) );
@@ -2731,8 +3030,8 @@ enumError ApplyCTCODE ( le_analyse_t * ana, const ctcode_t * ctcode )
if ( prop && music && flags )
{
- const uint max = ana->max_slot < LE_FIRST_LOWER_CT_SLOT
- ? ana->max_slot : LE_FIRST_LOWER_CT_SLOT;
+ const uint max = ana->max_slot < LE_FIRST_CT_SLOT
+ ? ana->max_slot : LE_FIRST_CT_SLOT;
uint tid;
for ( tid = 0; tid < max; tid++ )
{
@@ -2754,7 +3053,7 @@ enumError ApplyCTCODE ( le_analyse_t * ana, const ctcode_t * ctcode )
{
uint cup_idx, max = ctcode->n_racing_cups;
if ( max > ana->max_cup_track )
- max = ana->max_cup_track ;
+ max = ana->max_cup_track;
for ( cup_idx = 0; cup_idx < max; cup_idx++, cup++ )
{
@@ -2832,6 +3131,9 @@ enumError ApplyCTCODE ( le_analyse_t * ana, const ctcode_t * ctcode )
//--- copy/move/link track files
+ LogFile_t log0 = { .log = stdlog };
+ LogFile_t *log = logging >= 3 ? &log0 : 0;
+
char buf[500];
const bmg_item_t * bi = ctcode->track_file.item;
const bmg_item_t * bi_end = bi + ctcode->track_file.item_used;
@@ -2839,7 +3141,7 @@ enumError ApplyCTCODE ( le_analyse_t * ana, const ctcode_t * ctcode )
{
PrintString16BMG( buf, sizeof(buf), bi->text, bi->len,
BMG_UTF8_MAX, 0, true );
- CopyTrackFile(bi->mid - ctcode->ctb.track_name1.beg,buf);
+ TransferTrackFile(log,bi->mid - ctcode->ctb.track_name1.beg,buf,0);
}
CalculateStatsLE(ana);
@@ -2863,7 +3165,7 @@ bool DefineAliasLE ( le_analyse_t * ana, uint slot, uint alias )
for(;;)
{
if ( alias >= ana->n_slot
- || alias >= MKW_ARENA_BEG && alias < LE_FIRST_LOWER_CT_SLOT )
+ || alias >= MKW_ARENA_BEG && alias < LE_FIRST_CT_SLOT )
{
printf("ALIAS: Invalid alias: %x = %x\n",slot,alias);
return false;
@@ -3040,7 +3342,6 @@ static enumError ScanTextLPAR_CHAT
)
{
PRINT(">> ScanTextLPAR_CHAT(pass=%u)\n",is_pass2+1);
- // [[2do]] ???
//--- setup data
@@ -3356,7 +3657,7 @@ enumError ScanTextLPAR
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
diff --git a/project/src/lib-lecode.h b/project/src/lib-lecode.h
index c8ed13d..4d724ad 100644
--- a/project/src/lib-lecode.h
+++ b/project/src/lib-lecode.h
@@ -59,7 +59,7 @@
#define LE_CUP_MAGIC "CUP2"
#define LE_COURSE_MAGIC "CRS2"
-#define LE_RESERVED_SLOTS (LE_FIRST_LOWER_CT_SLOT - 32)
+#define LE_RESERVED_SLOTS (LE_FIRST_CT_SLOT - 32)
#define LE_MAX_BLOCK_TRACK 50
//-----------------------------------------------------------------------------
@@ -239,6 +239,49 @@ ccp GetPredefDebugName ( predef_debug_t pd_mode );
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_region_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_region_t]]
+
+typedef enum le_region_t
+{
+ LEREG_UNKNOWN = 0,
+
+ LEREG_PAL,
+ LEREG_USA,
+ LEREG_JAP,
+ LEREG_KOR,
+
+ LEREG__BEG = LEREG_PAL,
+ LEREG__END = LEREG_KOR,
+ LEREG__N = LEREG__END - LEREG__BEG + 1,
+}
+le_region_t;
+
+//-----------------------------------------------------------------------------
+
+le_region_t GetLEREG ( char ch ); // anylse first char only
+ccp GetNameLEREG ( le_region_t lereg, ccp return_on_invalid );
+
+// replace last '@' by region name.
+// returns either NULL on error or 'name' or 'buf'. If !buf or to small, then use circ-buf.
+ccp PatchNameLEREG ( char *buf, uint bufsize, ccp name, le_region_t lereg );
+
+const mem_t GetLecodeLEREG ( le_region_t reg );
+
+// returns circ-buf
+ccp GetLecodeBuildLEREG ( le_region_t reg );
+ccp GetLecodeInfoLEREG ( le_region_t reg );
+
+//-----------------------------------------------------------------------------
+// some more global functions, used as helpers for *LEREG functions
+
+// returns circ-buf
+ccp GetBuildLECODE ( mem_t lecode );
+ccp GetInfoLECODE ( mem_t lecode );
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// le_lpar_t ///////////////
///////////////////////////////////////////////////////////////////////////////
// [[le_lpar_t]] [[new-lpar]]
@@ -288,6 +331,7 @@ extern const u16 chat_mode_mkwfun[BMG_N_CHAT];
//-----------------------------------------------------------------------------
void InitializeLPAR ( le_lpar_t *lpar, bool load_lpar );
+static inline void ResetLPAR ( le_lpar_t *lpar ) {}
enumError LoadLPAR
(
@@ -316,6 +360,13 @@ enumError SaveTextLPAR
bool set_time // true: set time stamps
);
+enumError SaveTextFileLPAR
+(
+ le_lpar_t *lpar, // LE-CODE parameters
+ FILE *f, // open file
+ bool print_full // true: print ehader + append section [END]
+);
+
enumError WriteSectionLPAR
(
FILE *f, // output files
@@ -677,6 +728,7 @@ typedef struct le_analyse_t
le_valid_t valid; // see LE_VALID_* above
uint version; // version = phase
+ le_region_t region; // one of LEREG_*
const u8 *data; // pointer to raw data
u32 size; // data size
@@ -762,6 +814,8 @@ enumError AnalyseLEBinary
uint data_size // data size
);
+le_region_t GetLERegion ( const le_analyse_t *ana );
+
void CalculateStatsLE ( le_analyse_t *ana );
const le_usage_t * GetLEUsage ( const le_analyse_t *ana0, bool force_recalc );
char GetLEUsageChar ( le_usage_t usage );
@@ -771,7 +825,10 @@ ccp GetLEValid ( le_valid_t valid );
void CalculateStatsLE ( le_analyse_t *ana );
void DumpLEAnalyse ( FILE *f, uint indent, const le_analyse_t *ana );
-static inline bool IsLESlotUsed ( le_analyse_t *ana, uint slot )
+void TransferTrackFile ( LogFile_t *log, uint dest_slot, ccp src_name, TransferMode_t flags );
+void TransferTrackBySlot ( LogFile_t *log, uint dest_slot, uint src_slot, TransferMode_t flags );
+
+static inline bool IsLESlotUsed ( const le_analyse_t *ana, uint slot )
{ return slot < ana->n_slot && ana->music[slot]; }
///////////////////////////////////////////////////////////////////////////////
@@ -792,17 +849,17 @@ const VarMap_t * SetupVarsLECODE();
static inline bool IsRacingTrackLE ( uint tid )
{ return tid < MKW_N_TRACKS
- || tid >= LE_FIRST_LOWER_CT_SLOT && tid != 0xff; }
+ || tid >= LE_FIRST_CT_SLOT && tid != 0xff; }
uint GetNextRacingTrackLE ( uint tid );
///////////////////////////////////////////////////////////////////////////////
-extern ccp opt_le_define;
extern ccp opt_le_arena;
extern ccp opt_lpar;
extern ccp opt_track_dest;
extern ParamField_t opt_track_source;
+extern int opt_szs_mode;
extern ccp opt_le_alias;
extern bool opt_engine_valid;
@@ -816,7 +873,8 @@ extern int opt_lecode_debug;
extern bool opt_complete;
-int ScanOptTrackSource ( ccp arg, int mode );
+int ScanOptTrackSource ( ccp arg, int arg_len, int mode );
+int ScanOptSzsMode ( ccp arg );
int ScanOptAlias ( ccp arg );
int ScanOptEngine ( ccp arg );
int ScanOpt200cc ( ccp arg );
diff --git a/project/src/lib-ledis.c b/project/src/lib-ledis.c
new file mode 100644
index 0000000..e85b31a
--- /dev/null
+++ b/project/src/lib-ledis.c
@@ -0,0 +1,6815 @@
+
+/***************************************************************************
+ * _______ _______ _______ *
+ * | ___ |____ | ___ | *
+ * | | |_| / /| | |_| *
+ * | |_____ / / | |_____ *
+ * |_____ | / / |_____ | *
+ * _ | | / / _ | | *
+ * | |___| |/ /____| |___| | *
+ * |_______|_______|_______| *
+ * *
+ * Wiimms SZS Tools *
+ * https://szs.wiimm.de/ *
+ * *
+ ***************************************************************************
+ * *
+ * This file is part of the SZS project. *
+ * Visit https://szs.wiimm.de/ for project details and sources. *
+ * *
+ * Copyright (c) 2011-2022 by Dirk Clemens <wiimm@wiimm.de> *
+ * *
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt *
+ * *
+ ***************************************************************************/
+
+#include "dclib-utf8.h"
+#include "dclib-regex.h"
+#include "lib-ledis.h"
+#include "lib-checksum.h"
+#include "lib-szs.h"
+#include "db-mkw.h"
+#include "crypt.h"
+
+#include "ledis.inc"
+#include "distrib.inc"
+
+#include <dirent.h>
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// global vars ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+ccp opt_create_dump = 0; // NULL of filename
+le_distrib_t ledis_dump = {0}; // data collector for 'opt_create_dump'
+int ledis_dump_enabled = 0; // -1:done, 0:disabled, 1:enabled
+
+ccp opt_le_define = 0; // NULL or last defined filename
+StringField_t le_define_list = {0}; // list with all filenames
+
+///////////////////////////////////////////////////////////////////////////////
+
+static const le_cup_ref_t standard_bt_ref[MKW_N_ARENAS] =
+ { 33,32,35,34,36, 39,40,41,37,38 };
+
+static const le_cup_ref_t standard_vs_ref[MKW_N_TRACKS] =
+ { 8, 1, 2, 4, 16,20,25,26, 0, 5, 6, 7, 27,31,23,18,
+ 9,15,11, 3, 21,30,29,17, 14,10,12,13, 24,22,19,28 };
+
+static const le_cup_ref_t mkwfun_random_ref[MKW_N_LE_RANDOM] =
+ { 62, 63, 64, 65 };
+
+///////////////////////////////////////////////////////////////////////////////
+
+#if LE_TYPE_MARKERS_ENABLED
+ #define LTT_MARKER_ARENA 0x1000
+ #define LTT_MARKER_TRACK 0x2000
+ #define LTT_MARKER__ALL 0x3000
+#endif
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// helpers ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#define DUMP_CUP_SLOTS_ENABLED 0
+
+#if DUMP_CUP_SLOTS_ENABLED
+ static void DumpCupSlots ( const le_distrib_t *ld, ccp info )
+ {
+ fflush(stdout);
+ fflush(stderr);
+
+ const int min = 68;
+ const int max = min + 15;
+
+ fprintf(stdlog,"CUP-SLOT %d..%d:",min,max);
+ for ( int slot = min; slot <= max; slot++ )
+ {
+ le_track_t *lt = GetTrackLD((le_distrib_t*)ld,slot);
+ if (lt)
+ fprintf(stdlog," %d",lt->cup_slot);
+ else
+ fputs(" -",stdlog);
+ }
+
+ if (info)
+ fprintf(stdlog," # %s\n",info);
+ else
+ fputs("\n",stdlog);
+ fflush(stdlog);
+ }
+#else
+ static inline void DumpCupSlots ( le_distrib_t const *ld, ccp info ) {}
+#endif
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_track_type_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetNameLTTY ( le_track_type_t track_type )
+{
+ return track_type & LTTY_TRACK
+ ? "vs"
+ : track_type & LTTY_ARENA
+ ? "bt"
+ : track_type & LTTY_RANDOM
+ ? "rd"
+ : "xx";
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_options_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+le_options_t defaultLEO = LEO__DEFAULT;
+
+//-----------------------------------------------------------------------------
+
+static KeywordTab_t keywords_leo[] =
+{
+ { LEO__DEFAULT, "RESET", 0, ~0 },
+ { 0, "CLEAR", 0, ~0 },
+
+ { LTT_SHA1, "SHA1", 0, LEO_LTT_SELECTOR },
+ { LTT_SHA1_D, "D-SHA1", "DSHA1", LEO_LTT_SELECTOR },
+ { LTT_IDENT, "IDENT", 0, LEO_LTT_SELECTOR },
+ { LTT_IDENT_D, "D-IDENT", "DIDENT", LEO_LTT_SELECTOR },
+ { LTT_FILE, "FILES", 0, LEO_LTT_SELECTOR },
+ { LTT_NAME, "NAMES", 0, LEO_LTT_SELECTOR },
+ { LTT_XNAME, "XNAMES", 0, LEO_LTT_SELECTOR },
+ { LTT_XNAME2, "X2NAMES", 0, LEO_LTT_SELECTOR },
+ #if LE_STRING_LIST_ENABLED
+ { LTT_TEMP1, "TEMP1", 0, LEO_LTT_SELECTOR },
+ { LTT_TEMP2, "TEMP2", 0, LEO_LTT_SELECTOR },
+ #endif
+
+ { LEO_MKW, "MKW", 0, 0 },
+ { LEO_MKW1, "MKW1", 0, 0 },
+ { LEO_MKW2, "MKW2", 0, 0 },
+ { LEO_CTCODE, "CT-CODE", "CTCODE", 0 },
+ { LEO_LECODE, "LE-CODE", "LECODE", 0 },
+
+ { LEO_IN_EMPTY, "IN-EMPTY", "INEMPTY", 0 },
+ { LEO_IN_EMPTY, "IEMPTY", 0, 0 },
+ { LEO_IN_MINUS, "IN-MINUS", "INMINUS", 0 },
+ { LEO_IN_MINUS, "IMINUS", 0, 0 },
+ { LEO_IN_ALL, "IN-ALL", "INALL", 0 },
+ { LEO_IN_ALL, "IALL", 0, 0 },
+
+ { LEO_OVERWRITE, "OVERWRITE", 0, LEO_M_HOW },
+ { LEO_INSERT, "INSERT", 0, LEO_M_HOW },
+ { LEO_REPLACE, "REPLACE", 0, LEO_M_HOW },
+
+ { LEO_VERSUS, "VERSUS", "VS", 0 },
+ { LEO_BATTLE, "BATTLE", "BT", 0 },
+ { LEO_CUSTOM, "CUSTOM", 0, 0 },
+ { LEO_ORIGINAL, "ORIGINAL", 0, 0 },
+ { LEO_NO_D_FILES, "NO-D", "NOD", 0 },
+
+ { LEO_OUT_EMPTY, "OUT-EMPTY", "OUTEMPTY", 0 },
+ { LEO_OUT_EMPTY, "OEMPTY", 0, 0 },
+ { LEO_OUT_MINUS, "OUT-MINUS", "OUTMINUS", 0 },
+ { LEO_OUT_MINUS, "OMINUS", 0, 0 },
+ { LEO_OUT_ALL, "OUT-ALL", "OUTALL", 0 },
+ { LEO_OUT_ALL, "OALL", 0, 0 },
+
+ { LEO_IN_LECODE, "IN-LECODE", "INLECODE", 0 },
+ { LEO_IN_LECODE, "ILECODE", 0, 0 },
+ { LEO_BRIEF, "BRIEF", 0, 0 },
+
+ { LEO_HELP, "HELP", "H", 0 },
+
+ { LEO_CUT_STD, "CUT-STD", "CUTSTD", 0 },
+ { LEO_CUT_CTCODE, "CUT-CTCODE", "CUTCTCODE", 0 },
+
+ {0,0,0,0}
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_options_t SetupDefaultLEO(void)
+{
+ defaultLEO = LEO__DEFAULT;
+ if ( !print_header || brief_count )
+ defaultLEO |= LEO_BRIEF;
+ return defaultLEO;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_options_t ScanLEO ( le_options_t current, ccp arg, ccp err_info )
+{
+ if (!arg)
+ return current;
+
+ 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);
+ return stat != -1 ? stat : current;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool IsInputNameValidLEO ( ccp name, le_options_t opt )
+{
+ return !name || !*name
+ ? ( opt & LEO_IN_EMPTY ) != 0
+ : *name == '-' && !name[1]
+ ? ( opt & LEO_IN_MINUS ) != 0
+ : true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool IsOutputNameValidLEO ( ccp name, le_options_t opt )
+{
+ return !name || !*name
+ ? ( opt & LEO_OUT_EMPTY ) != 0
+ : *name == '-' && !name[1]
+ ? ( opt & LEO_OUT_MINUS ) != 0
+ : true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool IsAssignmentAllowedLEO ( ccp cur_name, ccp new_name, le_options_t opt )
+{
+ if (!IsInputNameValidLEO(new_name,opt))
+ return false;
+
+ switch ( opt & LEO_M_HOW )
+ {
+ case 0:
+ case LEO_OVERWRITE: return true;
+ case LEO_INSERT: return !IsOutputNameValidLEO(cur_name,opt);
+ case LEO_REPLACE: return IsOutputNameValidLEO(cur_name,opt);
+ default: return false;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetUpperNameLTT ( le_track_text_t ltt )
+{
+ switch ( ltt & LEO_LTT_SELECTOR )
+ {
+ case LTT_SHA1: return "SHA1";
+ case LTT_SHA1_D: return "D-SHA1";
+ case LTT_IDENT: return "IDENT";
+ case LTT_IDENT_D: return "D-IDENT";
+ case LTT_FILE: return "FILE";
+ case LTT_NAME: return "NAME";
+ case LTT_XNAME: return "XNAME";
+ case LTT_XNAME2: return "XNAME2";
+ #if LE_STRING_LIST_ENABLED
+ case LTT_TEMP1: return "TEMP1";
+ case LTT_TEMP2: return "TEMP2";
+ #endif
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------
+
+ccp GetLowerNameLTT ( le_track_text_t ltt )
+{
+ switch ( ltt & LEO_LTT_SELECTOR )
+ {
+ case LTT_SHA1: return "sha1";
+ case LTT_SHA1_D: return "d-sha1";
+ case LTT_IDENT: return "ident";
+ case LTT_IDENT_D: return "d-ident";
+ case LTT_FILE: return "file";
+ case LTT_NAME: return "name";
+ case LTT_XNAME: return "xname";
+ case LTT_XNAME2: return "xname2";
+ #if LE_STRING_LIST_ENABLED
+ case LTT_TEMP1: return "temp1";
+ case LTT_TEMP2: return "temp2";
+ #endif
+ }
+ return 0;
+}
+
+//-----------------------------------------------------------------------------
+
+int GetDModeLTT ( le_track_text_t ltt )
+{
+ // returns 0:unknown ltt, 1:std string, 2:_d string, 3:both
+
+ switch ( ltt & LEO_LTT_SELECTOR )
+ {
+ case LTT_SHA1:
+ case LTT_IDENT:
+ return 1;
+
+ case LTT_SHA1_D:
+ case LTT_IDENT_D:
+ return 2;
+
+ case LTT_FILE:
+ case LTT_NAME:
+ case LTT_XNAME:
+ case LTT_XNAME2:
+ #if LE_STRING_LIST_ENABLED
+ case LTT_TEMP1:
+ case LTT_TEMP2:
+ #endif
+ return 3;
+ }
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetTextLEO ( le_options_t opt )
+{
+ char buf[300], *dest = buf, *end = buf + sizeof(buf) - 1;
+
+ static const le_options_t ctab[] =
+ { LEO_IN_ALL, LEO_M_ARENA, LEO_M_ORIGINAL, LEO_OUT_ALL, 0 };
+
+ for ( const le_options_t *cptr = ctab; *cptr; cptr++ )
+ if ( ( opt & *cptr ) == *cptr )
+ opt &= ~*cptr;
+
+ *dest = 0;
+ PrintKeywordList(dest,end-dest,0,keywords_leo,opt,0,INT64_MIN);
+ if ( dest > buf && !*dest )
+ *--dest = 0;
+ return CopyCircBuf0(buf,strlen(buf));
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetInputFilterLEO ( le_options_t opt )
+{
+ static const le_options_t mask
+ = LEO_M_BMG
+ | LEO_IN_ALL
+ | LEO_M_HOW
+ ;
+ return GetTextLEO(opt&mask);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetOutputFilterLEO ( le_options_t opt )
+{
+ static const le_options_t mask
+ = LEO_M_ARENA
+ | LEO_M_ORIGINAL
+ | LEO_NO_D_FILES
+ | LEO_OUT_ALL
+ ;
+ return GetTextLEO(opt&mask);
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool GetBmgBySlotLEO
+ ( char *buf, uint bufsize, const bmg_t *bmg, int slot, le_options_t opt )
+{
+ if ( !bmg || slot < 0 )
+ return 0;
+
+ if (!(opt&LEO_M_BMG))
+ opt |= LEO_M_BMG;
+
+
+ //-- LE-CODE
+
+ if ( opt & LEO_LECODE && slot < BMG_N_LE_TRACK )
+ {
+ const bmg_item_t *bi = FindItemBMG(bmg,slot+MID_LE_TRACK_BEG);
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,bufsize,bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ if (IsInputNameValidLEO(buf,opt))
+ return true;
+ }
+ }
+
+
+ //-- CT-CODE
+
+ if ( opt & LEO_CTCODE && slot < BMG_N_CT_TRACK )
+ {
+ const bmg_item_t *bi = FindItemBMG(bmg,slot+MID_CT_TRACK_BEG);
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,bufsize,bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ if (IsInputNameValidLEO(buf,opt))
+ return true;
+ }
+ }
+
+
+ //-- MKW2
+
+ if ( opt & LEO_MKW2 )
+ {
+ const bmg_item_t *bi
+ = IsMkwTrack(slot)
+ ? FindItemBMG(bmg,slot+MID_TRACK1_BEG)
+ : IsMkwArena(slot)
+ ? FindItemBMG(bmg,slot-BMG_N_TRACK+MID_ARENA1_BEG)
+ : 0;
+
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,bufsize,bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ if (IsInputNameValidLEO(buf,opt))
+ return true;
+ }
+ }
+
+
+ //-- MKW1
+
+ if ( opt & LEO_MKW1 )
+ {
+ const bmg_item_t *bi
+ = IsMkwTrack(slot)
+ ? FindItemBMG(bmg,slot+MID_TRACK2_BEG)
+ : IsMkwArena(slot)
+ ? FindItemBMG(bmg,slot+MID_ARENA2_BEG)
+ : 0;
+
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,bufsize,bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ if (IsInputNameValidLEO(buf,opt))
+ return true;
+ }
+ }
+
+ return false;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_strpar_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+const le_strpar_t NullLSP = {0};
+const le_strpar_t DefaultLSP = { .opt = LEO__DEFAULT };
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetLSP ( le_strpar_t *par )
+{
+ if (par)
+ {
+ #if LE_STRING_SET_ENABLED
+ FreeString(par->key);
+ #endif
+ InitializeLSP(par,par->opt);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+char * ScanLSP ( le_strpar_t *par, ccp arg, enumError *ret_err )
+{
+ static const KeywordTab_t keytab[] =
+ {
+ { LTT_SHA1, "SHA1", 0, 0 },
+ { LTT_SHA1_D, "D-SHA1", "DSHA1", 0 },
+ { LTT_IDENT, "IDENT", 0, 0 },
+ { LTT_IDENT_D, "D-IDENT", "DIDENT", 0 },
+ { LTT_FILE, "FILES", 0, 0 },
+ { LTT_NAME, "NAMES", 0, 0 },
+ { LTT_XNAME, "XNAMES", 0, 0 },
+ { LTT_XNAME2, "X2NAMES", 0, 0 },
+ #if LE_STRING_LIST_ENABLED
+ { LTT_TEMP1, "TEMP1", 0, 0 },
+ { LTT_TEMP2, "TEMP2", 0, 0 },
+ #endif
+ {0,0,0,0}
+ };
+
+ //--------------
+
+ if ( !par || !arg )
+ return (char*)arg;
+
+ ccp src = arg;
+ while ( *src > 0 && *src <= ' ' )
+ src++;
+
+ enumError err = ERR_OK;
+
+ #if LE_STRING_SET_ENABLED
+ if ( *src == '[' )
+ {
+ src++;
+ ccp end = strchr(src,']');
+ if (!end)
+ err = ERR_SYNTAX;
+ else
+ {
+ SetKeyNameLSP(par,src,end-src);
+ src = end+1;
+ }
+ }
+ else
+ #endif
+ {
+ char name[50], *nptr = name;
+ while ( isalnum((int)*src) && nptr < name + sizeof(name) -2 )
+ *nptr++ = *src++;
+ *nptr = 0;
+
+ int abbrev_count;
+ const KeywordTab_t *cmd = ScanKeyword(&abbrev_count,name,keytab);
+
+ if (!cmd)
+ err = ERR_SEMANTIC;
+ else
+ par->opt = par->opt & ~LEO_LTT_SELECTOR | cmd->id;
+ }
+
+ //--- terminate
+
+ if (ret_err)
+ *ret_err = err;
+
+ if ( err == ERR_OK )
+ {
+ while ( *src > 0 && *src <= ' ' )
+ src++;
+ arg = src;
+ }
+
+ return (char*)arg;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetNameLSP ( const le_strpar_t *par )
+{
+ if (par)
+ {
+ ccp name = GetLowerNameLTT(par->opt);
+ if (name)
+ return name;
+
+ #if LE_STRING_SET_ENABLED
+ if (IsValidSetLSP(par))
+ return PrintCircBuf("[%s]",par->key);
+ #endif
+ }
+ return "?";
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetOptionsLSP ( const le_strpar_t *par, le_options_t mask )
+{
+ if (!par)
+ return 0;
+
+ #if LE_STRING_SET_ENABLED
+ if (IsValidSetLSP(par))
+ return PrintCircBuf("[%s],%s",
+ par->key, GetTextLEO(par->opt&~LEO_LTT_SELECTOR&mask) );
+ #endif
+ return GetTextLEO(par->opt&mask);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError ScanOptionsLSP ( le_strpar_t *par, ccp arg, ccp err_info )
+{
+ if ( !par || !arg )
+ return ERR_MISSING_PARAM;
+
+ #if LE_STRING_SET_ENABLED
+ while ( *arg > 0 && *arg <= ' ' )
+ arg++;
+
+ if ( *arg == '[' )
+ {
+ enumError err;
+ arg = ScanLSP(par,arg,&err);
+ if (err)
+ return err;
+ }
+ #endif
+
+ par->opt = ScanLEO(par->opt,arg,err_info);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+#if LE_STRING_SET_ENABLED
+
+ void SetKeyNameLSP ( le_strpar_t *par, ccp key, int key_len )
+ {
+ if ( par && par->key != key )
+ {
+ FreeString(par->key);
+ if ( key && *key )
+ {
+ if ( key_len < 0 )
+ key_len = strlen(key);
+ par->key = MEMDUP(key,key_len);
+ par->opt = par->opt & ~LEO_LTT_SELECTOR | LTT_STRSET;
+ }
+ else
+ par->key = 0;
+ }
+ }
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_cup_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void InitializeLECUP ( le_cup_t *lc, uint max_cups, uint tracks_per_cup )
+{
+ DASSERT(lc);
+ memset(lc,0,sizeof(*lc));
+ lc->max = max_cups;
+ lc->tracks = tracks_per_cup;
+ lc->fill_slot = -1;
+ lc->fill_src = -1;
+ lc->dirty = true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetLECUP ( le_cup_t *lc )
+{
+ if (lc)
+ {
+ FREE(lc->list);
+ InitializeLECUP(lc,lc->max,lc->tracks);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_cup_ref_t * GetLECUP ( const le_cup_t *lc, uint cup_index )
+{
+ return lc && cup_index < lc->used
+ ? lc->list + cup_index * lc->tracks
+ : 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_cup_ref_t * DefineLECUP ( le_cup_t *lc, uint cup_index )
+{
+ if ( !lc || cup_index >= lc->max )
+ return 0;
+
+ const uint size_per_cup = sizeof(*lc->list) * lc->tracks;
+
+ if ( cup_index >= lc->size )
+ {
+ uint n_cups = cup_index + lc->size/4 + 100;
+ if ( n_cups > lc->max )
+ n_cups = lc->max;
+
+ lc->list = REALLOC( lc->list, n_cups * size_per_cup );
+ lc->size = n_cups;
+ ASSERT( lc->size <= lc->max );
+ }
+ ASSERT( cup_index < lc->size );
+
+ if ( cup_index >= lc->used )
+ {
+ lc->dirty = true;
+ le_cup_ref_t *beg = lc->list + lc->used * lc->tracks;
+ lc->used = cup_index + 1;
+ ASSERT( lc->used <= lc->size );
+ le_cup_ref_t *end = lc->list + lc->used * lc->tracks;
+ memset( beg, ~0, (u8*)end-(u8*)beg );
+ }
+ ASSERT( cup_index < lc->used );
+
+ return lc->list + cup_index * lc->tracks;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+uint GetCupSlotLECUP ( const le_cup_t *lc, const le_cup_ref_t *ptr )
+{
+ if ( !lc || !lc->list || !ptr )
+ return 0;
+
+ const uint idx = ptr - lc->list;
+ const uint cup = idx / lc->tracks;
+ return cup < lc->used
+ ? 10 * cup + (idx % lc->tracks) + 11
+ : 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void AppendLECUP ( le_cup_t *lc, le_cup_ref_t ref )
+{
+ if ( lc && ref >= 0 )
+ {
+ if ( lc->cur_index >= lc->tracks )
+ {
+ lc->cur_index = 0;
+ lc->cur_cup++;
+ }
+
+ le_cup_ref_t *cr = DefineLECUP(lc,lc->cur_cup);
+ if (cr)
+ {
+ lc->dirty = true;
+ cr += lc->cur_index++;
+ *cr = ref;
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void CloseLECUP ( le_cup_t *lc )
+{
+ if (lc)
+ {
+ lc->close_used = true;
+ if ( lc->cur_index )
+ lc->cur_index = lc->tracks;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void PackLECUP ( le_cup_t *lc )
+{
+ if ( !lc || !lc->used )
+ return;
+
+ PRINT("PackLECUP(%d) < N=%d\n",lc->tracks,lc->used);
+ le_cup_ref_t *dest = lc->list;
+ le_cup_ref_t *end = lc->list + lc->used * lc->tracks;
+
+ for ( le_cup_ref_t *src = lc->list; src < end; src++ )
+ if ( *src >= 0 )
+ *dest++ = *src;
+
+ lc->used = ( dest - lc->list + lc->tracks - 1 ) / lc->tracks;
+ end = lc->list + lc->used * lc->tracks;
+ while ( dest < end )
+ *dest++ = -1;
+ PRINT("PackLECUP(%d) > N=%d\n",lc->tracks,lc->used);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void EvenLECUP ( le_cup_t *lc )
+{
+ if (lc)
+ {
+ DefineLECUP( lc, lc->tracks == 4 ? 5 : 1 );
+ if ( lc->used & 1 )
+ DefineLECUP(lc,lc->used);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool HaveInvalidLECUP ( le_cup_t *lc )
+{
+ if (lc)
+ {
+ le_cup_ref_t *end = lc->list + lc->used * lc->tracks;
+ for ( le_cup_ref_t *ptr = lc->list; ptr < end; ptr++ )
+ if ( *ptr < 0 )
+ return true;
+ }
+ return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void FillLECUP ( le_cup_t *lc, le_cup_ref_t fallback )
+{
+ if (!lc)
+ return;
+
+ le_cup_ref_t *end = lc->list + lc->used * lc->tracks;
+ for ( le_cup_ref_t *ptr = lc->list; ptr < end; ptr++ )
+ if ( *ptr < 0 )
+ *ptr = fallback;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_track_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void InitializeLT ( le_track_t *lt )
+{
+ DASSERT(lt);
+ memset(lt,0,sizeof(*lt));
+ lt->track_status = LTS_VALID;
+ #if LE_STRING_SET_ENABLED
+ InitializeParamField(&lt->str_set);
+ lt->str_set.free_data = true;
+ #endif
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ClearStringsLT ( le_track_t *lt )
+{
+ if (lt)
+ {
+ FreeString(lt->file);
+ FreeString(lt->name);
+ FreeString(lt->xname);
+ FreeString(lt->lti[0].ident);
+ FreeString(lt->lti[1].ident);
+
+ lt->file = 0;
+ lt->name = 0;
+ lt->xname = 0;
+ memset(lt->lti,0,sizeof(*lt->lti));
+
+ #if LE_STRING_LIST_ENABLED
+ for ( int idx = 0; idx < LTT__LIST_SIZE; idx++ )
+ FreeString(lt->str_list[idx]);
+ memset(lt->str_list,0,sizeof(lt->str_list));
+ #endif
+
+ #if LE_STRING_SET_ENABLED
+ ResetParamField(&lt->str_set);
+ #endif
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ClearLT ( le_track_t *lt, le_track_type_t ltty ) // auto-ltty if 0
+{
+ if (lt)
+ {
+ ClearStringsLT(lt);
+
+ const int slot = lt->track_slot;
+ memset(lt,0,sizeof(*lt));
+ lt->track_slot = slot;
+ lt->track_type = ltty ? ltty : IsMkwArena(slot) ? LTTY_ARENA : LTTY_TRACK;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void MoveLT ( le_track_t *dest, le_track_t *src )
+{
+ if ( dest && src && dest != src )
+ {
+ ClearLT(dest,0);
+ memcpy(dest,src,sizeof(*dest));
+
+ src->file = 0;
+ src->name = 0;
+ src->xname = 0;
+ src->lti[0].ident = 0;
+ src->lti[1].ident = 0;
+ ClearLT(src,0);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetupStandardArenaLT ( le_track_t *lt, uint setup_slot )
+{
+ if (IsMkwArena(setup_slot))
+ setup_slot -= MKW_ARENA_BEG;
+ if ( setup_slot < MKW_N_ARENAS )
+ SetupByTrackInfoLT(lt,arena_info+setup_slot);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetupStandardTrackLT ( le_track_t *lt, uint setup_slot )
+{
+ if (IsMkwTrack(setup_slot))
+ SetupByTrackInfoLT(lt,track_info+setup_slot);
+ else if (IsMkwArena(setup_slot))
+ {
+ setup_slot -= MKW_ARENA_BEG;
+ SetupByTrackInfoLT(lt,arena_info+setup_slot);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetupByTrackInfoLT ( le_track_t *lt, const TrackInfo_t *ti )
+{
+ if ( !lt || !ti )
+ return;
+
+ lt->cup_slot = ti->def_slot;
+ lt->track_type = IsMkwArena(ti->track_id) ? LTTY_ARENA : LTTY_TRACK;
+ lt->property = ti->track_id;
+ lt->music = ti->music_id;
+
+ le_strpar_t spar = { .opt = LEO__DEFAULT|LEO_IN_ALL };
+ SetFileLT(lt,&spar,ti->track_fname);
+ SetNameLT(lt,&spar,ti->name_en);
+
+ sha1_hex_t hex;
+ Sha1Bin2Hex(hex,ti->sha1[0]);
+ SetIdentOptLT(lt,hex,false,false,LEO_IN_ALL);
+
+ const u32 have_d = be32(ti->sha1[TI_SHA1_IS_D]);
+ if (have_d)
+ {
+ Sha1Bin2Hex(hex,ti->sha1[TI_SHA1_IS_D]);
+ SetIdentOptLT(lt,hex,true,false,LEO_IN_ALL);
+ }
+
+ // last action because SetIdent*LT() clears 'is_original'
+ lt->is_original = lt->lti[0].orig_sha1 = lt->lti[1].orig_sha1 = lt->track_slot == ti->track_id;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetupLecodeRandomTrackLT ( le_track_t *lt, uint setup_slot )
+{
+ if (IsLecodeRandom(setup_slot))
+ {
+ lt->track_status = LTS_ACTIVE;
+ lt->track_type = LTTY_RANDOM|LTTY_TRACK;
+ lt->cup_slot = setup_slot - MKW_LE_RANDOM_BEG + 91;
+ lt->property = 0;
+ lt->music = MKW_MUSIC_MIN_ID;
+
+ static ccp names[] =
+ {
+ "Random: All Tracks",
+ "Random: Original Tracks",
+ "Random: Custom Tracks",
+ "Random: New Tracks",
+ };
+
+ if (IsLecodeRandom(setup_slot))
+ SetNameLT(lt,0,names[setup_slot-MKW_LE_RANDOM_BEG]);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+// -1:wrong slot or not a battle, 0:correct slots,
+// 1:wrong property, 2:wrong music, 3:both wrong
+
+int HaveUsualBattleSlots ( le_track_t *lt )
+{
+ if ( !lt || !IsArenaLTTY(lt->track_type) || !IsMkwArena(lt->track_slot) )
+ return -1;
+
+ const TrackInfo_t *ai = arena_info + lt->track_slot - MKW_ARENA_BEG;
+ return ( lt->property == lt->track_slot ? 0 : 1 )
+ | ( lt->music == ai->music_id ? 0 : 2 );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ClearIdentLT ( le_track_t *lt )
+{
+ FreeString(lt->lti[0].ident);
+ FreeString(lt->lti[1].ident);
+ lt->lti[0].ident = lt->lti[1].ident = 0;
+
+ lt->lti[0].have_sha1 = lt->lti[1].have_sha1 = 0;
+ lt->lti[0].orig_sha1 = lt->lti[1].orig_sha1 = 0;
+ lt->is_original = 0;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// Set*LT() functions ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void SetIdentOptLT
+ ( le_track_t *lt, ccp ident, bool use_d, bool csum_only, le_options_t opt )
+{
+ le_strpar_t spar = { .opt = opt, .use_d = use_d, .csum_only = csum_only };
+ SetIdentLT(lt,&spar,ident);
+}
+
+//-----------------------------------------------------------------------------
+
+void SetIdentLT ( le_track_t *lt, const le_strpar_t *par, ccp ident )
+{
+ // par: opt, use_d, csum_only
+ if (!lt)
+ return;
+ if (!par)
+ par = &DefaultLSP;
+
+ le_track_id_t *lti = lt->lti + (par->use_d>0);
+ if ( IsAssignmentAllowedLEO(lti->ident,ident,par->opt) )
+ {
+ if (!par->use_d)
+ ClearIdentLT(lt);
+
+ if (ident)
+ {
+ while ( *ident == ' ' || *ident == '\t' )
+ ident++;
+
+ sha1_size_t sha1size;
+ const int stat = IsSSChecksum(&sha1size,ident,-1);
+ if (stat)
+ {
+ lti->have_sha1 = true;
+ memcpy(lti->sha1bin,sha1size.hash,sizeof(lti->sha1bin));
+ FreeString(lti->ident);
+ lti->ident = stat == 2 ? STRDUP(ident) : 0;
+ }
+ else
+ {
+ lti->have_sha1 = false;
+ memset(lti->sha1bin,0,sizeof(lti->sha1bin));
+ FreeString(lti->ident);
+ lti->ident = par->csum_only ? 0 : STRDUP(ident);
+ }
+
+ //-- calculate is_orig
+
+ bool is_orig = false;
+ if (lti->have_sha1)
+ {
+ const TrackInfo_t *ti =
+ IsMkwTrack(lt->track_slot)
+ ? track_info + lt->track_slot
+ : IsMkwArena(lt->track_slot)
+ ? arena_info + lt->track_slot - MKW_ARENA_BEG
+ : 0;
+
+ if (ti)
+ {
+ const u8 *sptr = ti->sha1[ par->use_d ? TI_SHA1_IS_D : 0 ];
+ if (lti->have_sha1)
+ is_orig = !memcmp(lti->sha1bin,sptr,sizeof(lti->sha1bin))
+ || !memcmp(lti->sha1bin,sptr+TI_SHA1_NORM,sizeof(lti->sha1bin));
+ else
+ is_orig = !*(u32*)sptr;
+ }
+ }
+
+ lti->orig_sha1 = is_orig;
+ }
+ lt->is_original = lt->lti[0].orig_sha1 && lt->lti[1].orig_sha1;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetFileLT ( le_track_t *lt, const le_strpar_t *par, ccp fname )
+{
+ // par: opt
+
+ if (!par)
+ par = &DefaultLSP;
+
+ if ( lt && IsAssignmentAllowedLEO(lt->file,fname,par->opt) )
+ {
+ FreeString(lt->file);
+ lt->file = STRDUP(fname);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetNameLT ( le_track_t *lt, const le_strpar_t *par, ccp name )
+{
+ // par: opt
+
+ if (!par)
+ par = &DefaultLSP;
+
+ if ( lt && IsAssignmentAllowedLEO(lt->name,name,par->opt) )
+ {
+ FreeString(lt->name);
+ if ( lt->xname && !strcmp(lt->xname,name) )
+ {
+ lt->name = lt->xname;
+ lt->xname = 0;
+ }
+ else
+ lt->name = STRDUP(name);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetXNameLT ( le_track_t *lt, const le_strpar_t *par, ccp xname )
+{
+ // par: opt
+
+ if (!par)
+ par = &DefaultLSP;
+
+ if ( lt && IsAssignmentAllowedLEO(lt->xname,xname,par->opt) )
+ {
+ FreeString(lt->xname);
+ if ( !lt->name || strcmp(lt->name,xname) )
+ lt->xname = STRDUP(xname);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+#if LE_STRING_LIST_ENABLED
+
+ void SetListLT ( le_track_t *lt, const le_strpar_t *par, ccp text )
+ {
+ // par: ltt, opt
+
+ if (!par)
+ par = &DefaultLSP;
+
+ const le_track_text_t ltt = par->opt & LEO_LTT_SELECTOR;
+
+ if ( lt && ltt >= LTT__LIST_BEG && ltt < LTT__LIST_END )
+ {
+ ccp *ptr = lt->str_list + ltt - LTT__LIST_BEG;
+ if (IsAssignmentAllowedLEO(*ptr,text,par->opt))
+ {
+ FreeString(*ptr);
+ *ptr = STRDUP(text);
+ }
+ }
+ }
+
+#endif // LE_STRING_LIST_ENABLED
+///////////////////////////////////////////////////////////////////////////////
+#if LE_STRING_SET_ENABLED
+
+ void SetSetLT ( le_track_t *lt, const le_strpar_t *par, ccp text )
+ {
+ // par: ltt, key, opt
+ if ( lt && par && par->key )
+ {
+ PRINT0(" %u [%s] = %s\n",lt->track_slot,par->key,text);
+ ReplaceParamField(&lt->str_set,par->key,false,0,STRDUP(text));
+ }
+ }
+
+ //----------------------------------------------------------------------------
+
+ void SetByKeyLT ( le_track_t *lt, ccp key, ccp text )
+ {
+ le_strpar_t par = { .key = key };
+ SetSetLT(lt,&par,text);
+ }
+
+#endif // LE_STRING_SET_ENABLED
+///////////////////////////////////////////////////////////////////////////////
+
+void SetTextOptLT ( le_track_t *lt, ccp text, le_options_t opt )
+{
+ le_strpar_t par = { .opt = opt };
+ SetTextLT(lt,&par,text);
+}
+
+//-----------------------------------------------------------------------------
+
+void SetTextLT ( le_track_t *lt, const le_strpar_t *par, ccp text )
+{
+ // par: ltt, *
+
+ le_strpar_t mypar = {0};
+ if (par)
+ mypar = *par;
+
+ const le_track_text_t ltt = mypar.opt & LEO_LTT_SELECTOR;
+ switch (ltt)
+ {
+ case LTT_SHA1:
+ mypar.use_d = false;
+ mypar.csum_only = true;
+ SetIdentLT(lt,&mypar,text);
+ break;
+
+ case LTT_IDENT:
+ mypar.use_d = false;
+ mypar.csum_only = false;
+ SetIdentLT(lt,&mypar,text);
+ break;
+
+ case LTT_SHA1_D:
+ mypar.use_d = true;
+ mypar.csum_only = true;
+ SetIdentLT(lt,&mypar,text);
+ break;
+
+ case LTT_IDENT_D:
+ mypar.use_d = true;
+ mypar.csum_only = false;
+ SetIdentLT(lt,&mypar,text);
+ break;
+
+ case LTT_FILE:
+ SetFileLT(lt,&mypar,text);
+ break;
+
+ case LTT_NAME:
+ SetNameLT(lt,&mypar,text);
+ break;
+
+ case LTT_XNAME:
+ case LTT_XNAME2:
+ SetXNameLT(lt,&mypar,text);
+ break;
+
+ #if LE_STRING_SET_ENABLED
+ case LTT_STRSET:
+ SetSetLT(lt,&mypar,text);
+ break;
+ #endif
+
+ default:
+ #if LE_STRING_LIST_ENABLED
+ if ( ltt >= LTT__LIST_BEG && ltt < LTT__LIST_END )
+ SetListLT(lt,&mypar,text);
+ #endif
+ break;
+ }
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// Get*LT() functions ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetSha1LT ( const le_track_t *lt, bool use_d, ccp return_on_empty )
+{
+ const le_track_id_t *lti = lt->lti + (use_d>0);
+ if ( !lt || lt->track_status < LTS_EXPORT || !lti->have_sha1 )
+ return return_on_empty;
+
+ char *buf = GetCircBuf(sizeof(sha1_hex_t));
+ Sha1Bin2Hex(buf,lti->sha1bin);
+ return buf;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetIdentLT ( const le_track_t *lt, bool use_d, bool use_sha1, ccp return_on_empty )
+{
+ const le_track_id_t *lti = lt->lti + (use_d>0);
+ if ( !lt || lt->track_status < LTS_EXPORT )
+ return return_on_empty;
+
+ return lti->ident
+ ? ( *lti->ident ? lti->ident : return_on_empty )
+ : use_sha1
+ ? GetSha1LT(lt,use_d,return_on_empty)
+ : return_on_empty;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetFileLT ( const le_track_t *lt, ccp return_on_empty )
+{
+ return lt && lt->track_status >= LTS_EXPORT && lt->file && *lt->file
+ ? lt->file
+ : return_on_empty;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetNameLT ( const le_track_t *lt, ccp return_on_empty )
+{
+ return lt && lt->track_status >= LTS_EXPORT && IsOutputNameValidLEO(lt->name,0)
+ ? lt->name
+ : return_on_empty;
+}
+
+//-----------------------------------------------------------------------------
+
+ccp GetXNameLT ( const le_track_t *lt, ccp return_on_empty )
+{
+ return lt && lt->track_status >= LTS_EXPORT && IsOutputNameValidLEO(lt->xname,0)
+ ? lt->xname
+ : return_on_empty;
+}
+
+//-----------------------------------------------------------------------------
+
+ccp GetXName2LT ( const le_track_t *lt, ccp return_on_empty )
+{
+ if ( !lt || lt->track_status < LTS_EXPORT )
+ return return_on_empty;
+
+ return IsOutputNameValidLEO(lt->xname,0)
+ ? lt->xname
+ : IsOutputNameValidLEO(lt->name,0)
+ ? lt->name
+ : return_on_empty;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+#if LE_STRING_LIST_ENABLED
+
+ ccp GetListLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty )
+ {
+ const le_track_text_t ltt = opt & LEO_LTT_SELECTOR;
+
+ if ( lt
+ && lt->track_status >= LTS_EXPORT
+ && ltt >= LTT__LIST_BEG
+ && ltt < LTT__LIST_END
+ )
+ {
+ ccp text = lt->str_list[ ltt - LTT__LIST_BEG ];
+ if ( text && *text )
+ return text;
+ }
+
+ return return_on_empty;
+ }
+
+#endif // LE_STRING_LIST_ENABLED
+///////////////////////////////////////////////////////////////////////////////
+#if LE_STRING_SET_ENABLED
+
+ ccp GetSetLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty )
+ {
+ if ( lt
+ && lt->track_status >= LTS_EXPORT
+ && IsValidSetLSP(par)
+ )
+ {
+ const ParamFieldItem_t *it = FindParamField(&lt->str_set,par->key);
+ if (it)
+ return it->data;
+ }
+ return return_on_empty;
+ }
+
+#endif // LE_STRING_SET_ENABLED
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetTextLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty )
+{
+ if (!par)
+ return return_on_empty;
+
+ #if LE_STRING_SET_ENABLED
+ if (IsValidSetLSP(par))
+ return GetSetLT(lt,par,return_on_empty);
+ #endif
+ return GetTextOptLT(lt,par->opt,return_on_empty);
+}
+
+//-----------------------------------------------------------------------------
+
+ccp GetTextOptLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty )
+{
+ const le_track_text_t ltt = opt & LEO_LTT_SELECTOR;
+ switch (ltt)
+ {
+ case LTT_SHA1: return GetSha1LT(lt,false,return_on_empty);
+ case LTT_SHA1_D: return GetSha1LT(lt,true, return_on_empty);
+ case LTT_IDENT: return GetIdentLT(lt,false,false,return_on_empty);
+ case LTT_IDENT_D: return GetIdentLT(lt,true, false,return_on_empty);
+
+ case LTT_FILE: return GetFileLT(lt,return_on_empty);
+ case LTT_NAME: return GetNameLT(lt,return_on_empty);
+ case LTT_XNAME: return GetXNameLT(lt,return_on_empty);
+ case LTT_XNAME2: return GetXName2LT(lt,return_on_empty);
+
+ default:
+ #if LE_STRING_LIST_ENABLED
+ if ( ltt >= LTT__LIST_BEG && ltt < LTT__LIST_END )
+ return GetListLT(lt,ltt,return_on_empty);
+ #endif
+ break;
+ }
+
+ return return_on_empty;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp * GetPtrLT ( const le_track_t *lt, const le_strpar_t *par )
+{
+ #if LE_STRING_SET_ENABLED
+ if (IsValidSetLSP(par))
+ {
+ ParamFieldItem_t *it = FindParamField(&lt->str_set,par->key);
+ return it ? (ccp*)&it->data : 0;
+ }
+ #endif
+ return par ? GetPtrOptLT(lt,par->opt,par->allow_d) : 0;
+}
+
+//-----------------------------------------------------------------------------
+
+ccp * GetPtrOptLT ( const le_track_t *lt, le_options_t opt, bool allow_d )
+{
+ const le_track_text_t ltt = opt & LEO_LTT_SELECTOR;
+ switch (ltt)
+ {
+ case LTT_IDENT_D:
+ if (allow_d)
+ return (ccp*)&lt->lti[1].ident;
+ break;
+
+ case LTT_IDENT: return (ccp*)&lt->lti[0].ident;
+ case LTT_FILE: return (ccp*)&lt->file;
+ case LTT_NAME: return (ccp*)&lt->name;
+ case LTT_XNAME: return (ccp*)&lt->xname;
+
+ default:
+ #if LE_STRING_LIST_ENABLED
+ if ( ltt >= LTT__LIST_BEG && ltt < LTT__LIST_END )
+ return (ccp*)lt->str_list + ltt - LTT__LIST_BEG;
+ #endif
+ break;
+ }
+
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetSlotNameLT ( const le_track_t *lt )
+{
+ if (!lt)
+ return 0;
+
+ static const char rslot_name[][6] = { "rAll", "rOrig", "rCust", "rNew" };
+
+ ccp pre = GetNameLTTY(lt->track_type);
+ return lt->track_slot >= MKW_LE_RANDOM_BEG && lt->track_slot <= MKW_LE_RANDOM_END
+ ? rslot_name[ lt->track_slot - MKW_LE_RANDOM_BEG ]
+ : PrintCircBuf( "%s%u", pre, lt->track_slot );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetCupLT ( const le_track_t *lt, ccp return_on_empty )
+{
+ if (!lt)
+ return return_on_empty;
+
+ const bool hidden = IsHiddenLETF(lt->flags);
+ if (!lt->cup_slot)
+ return hidden ? "H" : "-";
+
+ return PrintCircBuf("%s%s%u.%u",
+ hidden ? "H" : "",
+ IsArenaLTTY(lt->track_type) ? "A" : IsRandomLTTY(lt->track_type) ? "R" : "",
+ lt->cup_slot / 10, lt->cup_slot % 10 );
+}
+
+//-----------------------------------------------------------------------------
+
+ccp GetCupAlignLT ( const le_track_t *lt )
+{
+ ccp res = GetCupLT(lt,"-");
+ return IsHiddenLETF(lt->flags)
+ ? PrintCircBuf("%8s",res)
+ : PrintCircBuf("%6s ",res);
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// Quote*LT() functions ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+ccp QuoteSha1LT ( const le_track_t *lt, bool use_d, ccp return_on_empty )
+{
+ ccp res = GetSha1LT(lt,use_d,return_on_empty);
+ return QuoteStringCircS(res,"\"\"",CHMD__MODERN);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp QuoteIdentLT ( const le_track_t *lt, bool use_d, bool use_sha1, ccp return_on_empty )
+{
+ ccp res = GetIdentLT(lt,use_d,use_sha1,return_on_empty);
+ return QuoteStringCircS(res,EmptyQuote,CHMD__MODERN);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp QuoteFileLT ( const le_track_t *lt, ccp return_on_empty )
+{
+ ccp res = GetFileLT(lt,return_on_empty);
+ return QuoteStringCircS(res,EmptyQuote,CHMD__MODERN);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp QuoteNameLT ( const le_track_t *lt, ccp return_on_empty )
+{
+ ccp res = GetNameLT(lt,return_on_empty);
+ return QuoteStringCircS(res,EmptyQuote,CHMD__MODERN);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp QuoteXNameLT ( const le_track_t *lt, ccp return_on_empty )
+{
+ ccp res = GetXNameLT(lt,return_on_empty);
+ return QuoteStringCircS(res,EmptyQuote,CHMD__MODERN);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp QuoteXName2LT ( const le_track_t *lt, ccp return_on_empty )
+{
+ ccp res = GetXName2LT(lt,return_on_empty);
+ return QuoteStringCircS(res,EmptyQuote,CHMD__MODERN);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+#if LE_STRING_LIST_ENABLED
+
+ ccp QuoteListLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty )
+ {
+ ccp res = GetListLT(lt,opt,return_on_empty);
+ return QuoteStringCircS(res,EmptyQuote,CHMD__MODERN);
+ }
+
+#endif // LE_STRING_LIST_ENABLED
+///////////////////////////////////////////////////////////////////////////////
+#if LE_STRING_SET_ENABLED
+
+ ccp QuoteSetLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty )
+ {
+ ccp res = GetSetLT(lt,par,return_on_empty);
+ return QuoteStringCircS(res,EmptyQuote,CHMD__MODERN);
+ }
+
+#endif // LE_STRING_SET_ENABLED
+///////////////////////////////////////////////////////////////////////////////
+
+ccp QuoteTextLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty )
+{
+ if (!par)
+ return return_on_empty;
+
+ #if LE_STRING_SET_ENABLED
+ if (IsValidSetLSP(par))
+ return QuoteSetLT(lt,par,return_on_empty);
+ #endif
+ return QuoteTextOptLT(lt,par->opt,return_on_empty);
+}
+//-----------------------------------------------------------------------------
+
+ccp QuoteTextOptLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty )
+{
+ const le_track_text_t ltt = opt & LEO_LTT_SELECTOR;
+ switch (ltt)
+ {
+ case LTT_SHA1: return QuoteSha1LT(lt,false,return_on_empty); break;
+ case LTT_SHA1_D: return QuoteSha1LT(lt,true, return_on_empty); break;
+ case LTT_IDENT: return QuoteIdentLT(lt,false,false,return_on_empty); break;
+ case LTT_IDENT_D: return QuoteIdentLT(lt,true, false,return_on_empty); break;
+
+ case LTT_NAME: return QuoteNameLT(lt,return_on_empty); break;
+ case LTT_XNAME: return QuoteXNameLT(lt,return_on_empty); break;
+ case LTT_XNAME2: return QuoteXName2LT(lt,return_on_empty); break;
+ case LTT_FILE: return QuoteFileLT(lt,return_on_empty); break;
+
+ default:
+ #if LE_STRING_LIST_ENABLED
+ if ( ltt >= LTT__LIST_BEG && ltt < LTT__LIST_END )
+ return QuoteListLT(lt,ltt,return_on_empty);
+ #endif
+ break;
+ }
+
+ return return_on_empty;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: management ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void InitializeLD ( le_distrib_t *ld )
+{
+ DASSERT(ld);
+ memset(ld,0,sizeof(*ld));
+
+ ld->is_initialized = true;
+ ld->scan.bt.add_unused = true;
+ ld->scan.bt.add_unused = true;
+ ld->auto_setup = LAS_DEFAULT;
+
+ InitializeLSP(&ld->spar,SetupDefaultLEO());
+ InitializeLECUP(&ld->cup_battle,BMG_MAX_BCUP,BMG_BCUP_TRACKS);
+ InitializeLECUP(&ld->cup_versus,BMG_MAX_RCUP,BMG_RCUP_TRACKS);
+
+ InitializeParamField(&ld->dis_param);
+ ld->dis_param.free_data = true;
+
+ InitializeEML(&ld->group);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetLD ( le_distrib_t *ld )
+{
+ if (ld)
+ {
+ ResetArchLD(ld);
+ ResetTracksAndCupsLD(ld);
+ ResetParamField(&ld->dis_param);
+ FREE(ld->lpar);
+ ResetLSP(&ld->spar);
+
+ if (ld->ctcode)
+ {
+ ResetCTCODE(ld->ctcode);
+ FREE(ld->ctcode);
+ }
+
+ for ( int reg = 0; reg < LEREG__N; reg++ )
+ if (ld->lecode_alloced[reg])
+ FREE((u8*)ld->lecode[reg].ptr);
+
+ InitializeLD(ld);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetTracksAndCupsLD ( le_distrib_t *ld )
+{
+ if (ld)
+ {
+ le_track_t *lt = ld->tlist;
+ le_track_t *end = lt + ld->tlist_used;
+ for ( ; lt < end; lt++ )
+ ResetLT(lt);
+
+ FREE(ld->tlist);
+ ld->tlist = 0;
+ ld->tlist_used = ld->tlist_size = 0;
+
+ FREE(ld->reflist);
+ ld->reflist = 0;
+ ld->reflist_used = ld->reflist_size = 0;
+
+ ResetLECUP(&ld->cup_battle);
+ ResetLECUP(&ld->cup_versus);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void AutoSetupLD ( le_distrib_t *ld, le_auto_setup_t auto_setup )
+{
+ if (!ld)
+ return;
+
+ ld->auto_setup = auto_setup;
+ for ( int slot = MKW_TRACK_BEG; slot < MKW_ARENA_END; slot++ )
+ DefineTrackLD(ld,slot,true);
+ for ( int slot = MKW_LE_RANDOM_BEG; slot < MKW_LE_RANDOM_END; slot++ )
+ DefineTrackLD(ld,slot,true);
+
+ if ( auto_setup & LAS_ARENA )
+ {
+ DefineLECUP(&ld->cup_battle,1);
+ memcpy(ld->cup_battle.list,standard_bt_ref,sizeof(standard_bt_ref));
+ }
+
+ if ( auto_setup & LAS_TRACK )
+ {
+ DefineLECUP(&ld->cup_versus,7);
+ memcpy(ld->cup_versus.list,standard_vs_ref,sizeof(standard_vs_ref));
+ }
+
+ if ( auto_setup & LAS_TEMPLATE )
+ {
+ le_cup_ref_t *ref = DefineLECUP(&ld->cup_versus,8);
+ if (ref)
+ memcpy(ref,mkwfun_random_ref,sizeof(mkwfun_random_ref));
+
+ ref = DefineLECUP(&ld->cup_versus,9);
+ if (ref)
+ {
+ for ( int i = 1; i <= 6; i++ )
+ {
+ le_track_t *lt = DefineFreeTrackLD(ld,LTTY_TRACK,true);
+ if (lt)
+ {
+ lt->property = 10+i;
+ lt->music = NormalizeMusicID(20+i);
+
+ char buf[30];
+ snprintf(buf,sizeof(buf),"file_%03u",lt->track_slot);
+ SetFileLT(lt,0,buf);
+
+ if ( i == 3 )
+ {
+ lt->flags = LETF_RND_HEAD;
+ SetNameLT(lt,0,"Head of a group");
+ *ref++ = lt->track_slot;
+ }
+ else if ( i == 4 || i == 5 )
+ {
+ lt->flags = LETF_RND_GROUP;
+ snprintf(buf,sizeof(buf),"Group Track #%u (hidden)",i-3);
+ SetNameLT(lt,0,buf);
+ SetIdentOptLT(lt,"SHA1 of SZS",false,false,0);
+ }
+ else
+ {
+ snprintf(buf,sizeof(buf),"Test Track #%u",i);
+ SetNameLT(lt,0,buf);
+ SetIdentOptLT(lt,"SHA1 of SZS",false,false,0);
+ *ref++ = lt->track_slot;
+ }
+
+ snprintf(buf,sizeof(buf),"Extended Name #%u",i);
+ SetXNameLT(lt,0,buf);
+ }
+ }
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void AnalyzeLD ( le_distrib_t *ld, bool force_new_analysis )
+{
+ if ( !ld || ld->ana.valid && !force_new_analysis )
+ return;
+
+ memset(&ld->ana,0,sizeof(ld->ana));
+ ld->ana.valid = true;
+ ld->ana.bt.orig_tracks = true;
+ ld->ana.vs.orig_tracks = true;
+
+ ld->ana.bt.add_unused = !ld->scan.valid || ld->scan.bt.add_unused;
+ ld->ana.vs.add_unused = !ld->scan.valid || ld->scan.vs.add_unused;
+
+ for ( int slot = MKW_ARENA_BEG; slot < MKW_ARENA_END; slot++ )
+ {
+ le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !lt || lt->track_status < LTS_EXPORT || !lt->is_original )
+ {
+ ld->ana.bt.orig_tracks = false;
+ break;
+ }
+ }
+
+ for ( int slot = MKW_TRACK_BEG; slot < MKW_TRACK_END; slot++ )
+ {
+ le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !lt || lt->track_status < LTS_EXPORT || !lt->is_original )
+ {
+ ld->ana.vs.orig_tracks = false;
+ break;
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void CutLD ( le_distrib_t *ld, le_options_t opt )
+{
+ if (!ld)
+ return;
+
+ if ( opt & LEO_CUT_STD )
+ ClearTracksLD( ld, BMG_N_TRACK + BMG_N_ARENA, INT_MAX );
+
+ if ( opt & LEO_CUT_CTCODE )
+ {
+ ClearTracksLD( ld, CT_CODE_MAX_TRACKS, INT_MAX );
+ ClearTracksLD( ld, BMG_N_TRACK, BMG_N_TRACK + BMG_N_ARENA );
+ }
+}
+
+//-----------------------------------------------------------------------------
+
+void ClearTracksLD ( le_distrib_t *ld, int from, int to )
+{
+ if (!ld)
+ return;
+
+ if ( from < 0 )
+ from = 0;
+ if ( to > ld->tlist_used )
+ to = ld->tlist_used;
+
+ le_track_t *lt = ld->tlist + from;
+ le_track_t *end = ld->tlist + to;
+
+ for ( ; lt < end; lt++ )
+ {
+ FreeString(lt->lti[0].ident);
+ FreeString(lt->lti[1].ident);
+ FreeString(lt->name);
+ FreeString(lt->file);
+ memset(lt,0,sizeof(*lt));
+ }
+
+ if ( ld->tlist_used == to )
+ ld->tlist_used = from;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+uint PackTracksLD ( const le_distrib_t *ld )
+{
+ if (!ld)
+ return 0;
+
+ if ( ld->tlist_used < LE_FIRST_CT_SLOT )
+ return LE_FIRST_CT_SLOT;
+
+ int slot;
+ for ( slot = ld->tlist_used - 1; slot >= LE_FIRST_CT_SLOT; slot-- )
+ {
+ le_track_t *lt = ld->tlist + slot;
+ if ( lt->track_status >= LTS_ACTIVE )
+ break;
+ ClearLT(lt,0);
+ }
+ return ((le_distrib_t*)ld)->tlist_used = slot+1;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void CheckTracksLD ( const le_distrib_t *ld )
+{
+ if (!ld)
+ return;
+
+ le_track_t *lt = ld->tlist;
+ for ( int slot = 0; slot < ld->tlist_used; slot++, lt++ )
+ {
+ if ( lt->track_status < LTS_ACTIVE )
+ continue;
+
+ if ( lt->track_type & LTTY_TRACK )
+ {
+ if (!IsMkwTrack(lt->property))
+ lt->track_status = LTS_FAIL;
+ }
+ else
+ {
+ if (!IsMkwArena(lt->property))
+ lt->track_status = LTS_FAIL;
+ }
+ }
+
+ PackTracksLD(ld);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+le_track_t * GetTrackLD ( le_distrib_t *ld, int slot )
+{
+ if ( !ld || !IsValidLecodeSlot(slot) || slot >= ld->tlist_used )
+ return 0;
+
+ le_track_t *lt = ld->tlist + slot;
+ return lt->track_status < LTS_ACTIVE ? 0 : lt;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_track_t * DefineTrackLD ( le_distrib_t *ld, int slot, bool mark_export )
+{
+ if ( !ld || !IsValidLecodeSlot(slot) )
+ return 0;
+
+ if (!ld->is_initialized)
+ InitializeLD(ld);
+
+ uint need = slot + 1;
+ if ( need > ld->tlist_size )
+ {
+ static const int tab[] = { 512, 1024, 2048, LE_MAX_TRACKS, 0 };
+ for ( const int *ptr = tab; *ptr; ptr++ )
+ if ( need <= *ptr )
+ {
+ need = *ptr;
+ break;
+ }
+
+ ld->tlist = REALLOC( ld->tlist, need * sizeof(*ld->tlist) );
+ memset( ld->tlist + ld->tlist_size, 0, ( need - ld->tlist_size) * sizeof(*ld->tlist) );
+ ld->tlist_size = need;
+
+ FREE(ld->reflist);
+ ld->reflist = 0;
+ ld->reflist_used = ld->reflist_size = 0;
+ }
+
+ DASSERT( slot >= 0 && slot <= MKW_MAX_TRACK_SLOT );
+ DASSERT( slot < ld->tlist_size );
+
+ if ( ld->tlist_used <= slot )
+ ld->tlist_used = slot + 1;
+ if ( ld->tlist_used < LE_FIRST_CT_SLOT )
+ ld->tlist_used = LE_FIRST_CT_SLOT;
+ ASSERT( ld->tlist_used <= ld->tlist_size );
+
+ le_track_t *lt = ld->tlist + slot;
+ if ( lt->track_status == LTS_INVALID )
+ {
+ // initialize
+
+ InitializeLT(lt);
+ lt->track_slot = slot;
+
+ if ( IsMkwArena(slot) )
+ {
+ lt->track_type = LTTY_ARENA;
+ if ( ld->auto_setup & LAS_ARENA )
+ SetupStandardArenaLT(lt,slot);
+ }
+ else if ( IsLecodeRandom(slot) )
+ {
+ lt->track_status = LTS_ACTIVE;
+ lt->track_type = LTTY_RANDOM|LTTY_TRACK;
+ if ( ld->auto_setup & LAS_RANDOM )
+ SetupLecodeRandomTrackLT(lt,slot);
+ }
+ else
+ {
+ lt->track_type = LTTY_TRACK;
+ if ( IsMkwTrack(slot) && ld->auto_setup & LAS_TRACK )
+ SetupStandardTrackLT(lt,slot);
+ }
+
+ DirtyCupLD(ld,lt->track_type);
+ }
+
+ if ( mark_export && lt->track_status < LTS_ACTIVE )
+ lt->track_status = LTS_EXPORT;
+
+ return lt;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_track_t * DefineFreeTrackLD
+ ( le_distrib_t *ld, le_track_type_t ltty, bool mark_export )
+{
+ if (!ld)
+ return 0;
+
+ if (!ltty)
+ ltty = LTTY_TRACK | LTTY_ARENA;
+ const int slot_beg
+ = ltty == LTTY_TRACK
+ ? MKW_TRACK_BEG
+ : ltty == LTTY_ARENA
+ ? MKW_ARENA_BEG
+ : ltty & (LTTY_TRACK|LTTY_ARENA)
+ ? LE_FIRST_CT_SLOT
+ : -1;
+
+ if ( slot_beg < 0 )
+ return 0;
+
+ for ( int slot = slot_beg; slot <= LE_LAST_CT_SLOT; slot++ )
+ {
+ if ( slot == MKW_TRACK_END && !(ltty&LTTY_ARENA) || slot == MKW_ARENA_END )
+ slot = LE_FIRST_CT_SLOT;
+
+ le_track_t *lt = DefineTrackLD(ld,slot,false);
+ if ( lt && lt->track_status < LTS_ACTIVE )
+ {
+ if (mark_export)
+ lt->track_status = LTS_EXPORT;
+ lt->track_type = ltty;
+ DirtyCupLD(ld,ltty);
+ return lt;
+ }
+ }
+
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_track_t * DefineGroupTrackLD
+ ( le_distrib_t *ld, le_track_type_t ltty, bool mark_export )
+{
+ if (!ld)
+ return 0;
+
+ if (!ltty)
+ ltty = LTTY_TRACK | LTTY_ARENA;
+ DirtyCupLD(ld,ltty);
+
+ int slot = PackTracksLD(ld);
+ ASSERT ( slot >= LE_FIRST_CT_SLOT );
+ return DefineTrackLD(ld,slot,mark_export);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+int FindFreeTracksLD ( le_distrib_t *ld, le_track_type_t ltty, int n )
+{
+ int beg, end;
+ if ( ltty == LTTY_TRACK )
+ {
+ beg = MKW_TRACK_BEG;
+ end = MKW_TRACK_END;
+ }
+ else if ( ltty == LTTY_ARENA )
+ {
+ beg = MKW_ARENA_BEG;
+ end = MKW_ARENA_END;
+ }
+ else
+ {
+ beg = LE_FIRST_CT_SLOT;
+ end = 0;
+ }
+
+ int prev = -10, start = -10;
+ for ( int slot = beg; slot < LE_LAST_CT_SLOT; slot++ )
+ {
+ if ( slot == end )
+ slot = LE_FIRST_CT_SLOT;
+
+ if ( slot < ld->tlist_used && IsActiveLT(ld->tlist+slot) )
+ continue;
+
+ if ( prev+1 != slot )
+ start = slot;
+ prev = slot;
+ if ( start + n == slot )
+ return start;
+ }
+ return -1;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_track_t * ReserveTracksLD
+ ( le_distrib_t *ld, le_track_type_t ltty, int n, bool mark_export )
+{
+ const int first = FindFreeTracksLD(ld,ltty,n);
+ if ( first < 0 )
+ return 0;
+ for ( int slot = first; slot < first + n; slot++ )
+ {
+ le_track_t *lt = DefineTrackLD(ld,slot,mark_export);
+ lt->track_type = ltty;
+ lt->track_status = mark_export ? LTS_EXPORT : LTS_ACTIVE;
+ }
+ return ld->tlist + first;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ClearUserFlagsAndCupsLD ( le_distrib_t *ld )
+{
+ if (ld)
+ {
+ le_track_t *lt = ld->tlist;
+ for ( int slot = 0; slot < ld->tlist_used; slot++, lt++ )
+ {
+ lt->user_flags = 0;
+ lt->cup_slot = 0;
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool HaveWiimmCupLD ( const le_distrib_t *ld )
+{
+ if (!ld)
+ return false;
+
+ le_cup_ref_t *ref = GetLECUP(&ld->cup_versus,8);
+ return ref && ref[0] == 62 && ref[1] == 63 && ref[2] == 64 && ref[3] == 65;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: scan text files ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static ccp xstring ( char *buf, int bufsize, mem_t src )
+{
+ if (!src.len)
+ return 0;
+
+ StringCopySM(buf,bufsize,src.ptr,src.len);
+ ScanEscapedStringPipe(buf,bufsize,buf,0);
+ return buf;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanDumpLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+)
+{
+ ScanText_t st;
+ SetupScanText(&st,data,data_size);
+ ScanDumpSTLD(ld,init_ld,&st);
+ ResetScanText(&st);
+}
+
+//-----------------------------------------------------------------------------
+
+void ScanDumpSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+)
+{
+ if ( !ld || !st )
+ return;
+
+ st->detect_sections++;
+
+ for(;;)
+ {
+ if (!st->is_section)
+ NextLineScanText(st);
+ if (st->is_eot)
+ break;
+
+ if (!st->is_section)
+ continue;
+
+ ccp sect = st->line + 1;
+ int slen = st->eol - 1 - sect;
+ PRINT0("SECTION: %.*s\n",slen,sect);
+
+ if (!strncasecmp(sect,"TOOL",4))
+ {
+ PRINT0(">> TOOL: ignore\n");
+ st->is_section = false;
+ }
+ else if (!strncasecmp(sect,"SETTINGS",8))
+ {
+ PRINT0(">> SETTINGS: 2do\n");
+ // [[2do]] ???
+ st->is_section = false;
+ }
+ else if (!strncasecmp(sect,"DISTRIBUTION-PARAM",18))
+ {
+ ImportDistribSTLD(ld,st);
+ }
+ else if ( !strncasecmp(sect,"LECODE-PARAMETERS",17)
+ || !strncasecmp(sect,"CHAT-MESSAGE-MODES",18)
+ || !strncasecmp(sect,"DEBUG-DOCU",10)
+ || !strncasecmp(sect,"DEBUG-1",7)
+ || !strncasecmp(sect,"DEBUG-2",7)
+ || !strncasecmp(sect,"DEBUG-3",7)
+ || !strncasecmp(sect,"DEBUG-4",7)
+ )
+ {
+ SetupLparLD(ld,false);
+ ccp start = st->line;
+ while ( NextLineScanText(st) && !st->is_section )
+ ;
+ ScanTextLPAR(ld->lpar,false,0,start,st->line-start);
+ }
+ else if (!strncasecmp(sect,"CUP-REF",7))
+ {
+ PRINT0(">> CUP-REF: 2do\n");
+ ScanRefSTLD(ld,false,st);
+ }
+ else if (!strncasecmp(sect,"TRACK-REF",9))
+ {
+ PRINT0(">> TRACK-REF: 2do\n");
+ ScanRefSTLD(ld,false,st);
+ }
+ else if (!strncasecmp(sect,"TRACK-STRINGS",13))
+ {
+ PRINT0(">> TRACK-STRINGS: 2do\n");
+ ScanStrSTLD(ld,false,st);
+ }
+ else if ( !strncasecmp(sect,"END",3)
+ || !strncasecmp(sect,"LECODE-INFO",6) )
+ {
+ // simply ignore
+ st->is_section = false;
+ }
+ else
+ {
+ ERROR0(ERR_WARNING,"Unknown section will be ignored: %.*s\n",slen,sect);
+ st->is_section = false;
+ }
+ }
+
+ st->detect_sections--;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanRefLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+)
+{
+ ScanText_t st;
+ SetupScanText(&st,data,data_size);
+ ScanRefSTLD(ld,init_ld,&st);
+ ResetScanText(&st);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanRefSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+)
+{
+ if ( !ld || !st )
+ return;
+
+ if ( init_ld || !ld->is_initialized )
+ InitializeLD(ld);
+
+ enum
+ {
+ IDX_TSLOT, // track_slot
+ IDX_TYPE, // 'vs' | 'bt'
+ IDX_ORIGINAL,
+ IDX_CUP_SLOT, // cup slot
+ IDX_CUP_NAME, // cup name
+ IDX_PROPERTY,
+ IDX_MUSIC,
+ IDX_FLAGS,
+ IDX_HIDDEN,
+ IDX_SHA1,
+ IDX_SHA1_D,
+ IDX_IDENT,
+ IDX_IDENT_D,
+ IDX_FILE,
+ IDX_FILE_D,
+ IDX_NAME,
+ IDX_NAME_D,
+ IDX_XNAME,
+ IDX_XNAME_D,
+ IDX__N
+ };
+
+ while (NextLineScanText(st))
+ {
+ mem_t srcline = { .ptr = st->line, .len = st->eol - st->line };
+ mem_t src[IDX__N+2];
+ const uint n = SplitByCharMem(src,IDX__N+1,srcline,'|');
+ if ( n < IDX_FLAGS )
+ continue;
+
+ const int tslot = str2l(src[IDX_TSLOT].ptr,0,10);
+ le_track_t *lt = DefineTrackLD(ld,tslot,true);
+ if (!lt)
+ continue;
+
+ PRINT0("LINE[%d]: %.*s|\n",tslot,(int)(ptr-line),line);
+
+ lt->cup_slot = str2l(src[IDX_CUP_SLOT].ptr,0,10);
+ lt->property = str2l(src[IDX_PROPERTY].ptr,0,10);
+ lt->music = str2l(src[IDX_MUSIC].ptr,0,10);
+ lt->flags = str2l(src[IDX_FLAGS].ptr,0,10);
+
+ char buf[LE_TRACK_STRING_MAX+1];
+ if ( n > IDX_SHA1 ) SetIdentOptLT(lt,xstring(buf,sizeof(buf),src[IDX_SHA1]), 0,1,ld->spar.opt );
+ if ( n > IDX_IDENT ) SetIdentOptLT(lt,xstring(buf,sizeof(buf),src[IDX_IDENT]), 0,0,ld->spar.opt );
+ if ( n > IDX_SHA1_D ) SetIdentOptLT(lt,xstring(buf,sizeof(buf),src[IDX_SHA1_D]), 1,1,ld->spar.opt );
+ if ( n > IDX_IDENT_D ) SetIdentOptLT(lt,xstring(buf,sizeof(buf),src[IDX_IDENT_D]),1,0,ld->spar.opt );
+ if ( n > IDX_FILE ) SetFileLT (lt,&ld->spar,xstring(buf,sizeof(buf),src[IDX_FILE] ) );
+ if ( n > IDX_NAME ) SetNameLT (lt,&ld->spar,xstring(buf,sizeof(buf),src[IDX_NAME] ) );
+ if ( n > IDX_XNAME ) SetXNameLT(lt,&ld->spar,xstring(buf,sizeof(buf),src[IDX_XNAME]) );
+
+ #if 0
+ // this is the last action to overwrite previous changes
+ if (src[IDX_ORIGINAL].len)
+ lt->is_original = str2l(src[IDX_ORIGINAL].ptr,0,10);
+ #endif
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanStrLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+)
+{
+ ScanText_t st;
+ SetupScanText(&st,data,data_size);
+ ScanStrSTLD(ld,init_ld,&st);
+ ResetScanText(&st);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanStrSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+)
+{
+ if ( !ld || !st )
+ return;
+
+ if ( init_ld || !ld->is_initialized )
+ InitializeLD(ld);
+
+ enum
+ {
+ IDX_TSLOT, // track_slot
+ IDX_D_MODE, // bit fields: 1: set std, 2: set _d, 3: set both
+ IDX_IS_SET,
+ IDX_NAME,
+ IDX_STRING,
+ IDX__N
+ };
+
+ while (NextLineScanText(st))
+ {
+ mem_t srcline = { .ptr = st->line, .len = st->eol - st->line };
+ mem_t src[IDX__N+2];
+ const uint n = SplitByCharMem(src,IDX__N+1,srcline,'|');
+ if ( n < IDX__N )
+ continue;
+
+ const int tslot = str2l(src[IDX_TSLOT].ptr,0,10);
+ le_track_t *lt = DefineTrackLD(ld,tslot,true);
+ if (!lt)
+ continue;
+
+ le_strpar_t spar = { .opt = LEO__DEFAULT|LEO_IN_ALL };
+ if ( str2l(src[IDX_IS_SET].ptr,0,10) > 0 )
+ #if LE_STRING_SET_ENABLED
+ SetKeyNameLSP(&spar,src[IDX_NAME].ptr,src[IDX_NAME].len);
+ #else
+ continue;
+ #endif
+ else
+ ScanLSP(&spar,src[IDX_NAME].ptr,0);
+
+ char buf[LE_TRACK_STRING_MAX+1];
+ StringCopySM(buf,sizeof(buf),src[IDX_STRING].ptr,src[IDX_STRING].len);
+ ScanEscapedStringPipe(buf,sizeof(buf),buf,0);
+
+ PRINT1(">>>> %s = %s\n",GetNameLSP(&spar),buf);
+ const int dmode = str2l(src[IDX_D_MODE].ptr,0,10);
+ if ( dmode == 2 )
+ spar.use_d = true;
+ SetTextLT(lt,&spar,buf);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanSha1LD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+)
+{
+ ScanText_t st;
+ SetupScanText(&st,data,data_size);
+ ScanSha1STLD(ld,init_ld,&st);
+ ResetScanText(&st);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanSha1STLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+)
+{
+ if ( !ld || !st )
+ return;
+
+ if ( init_ld || !ld->is_initialized )
+ InitializeLD(ld);
+
+ while (NextLineScanText(st))
+ ScanSha1LineLD(ld,st->line,st->eol,true);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool ScanSha1LineLD
+(
+ le_distrib_t *ld, // valid structure
+ ccp src, // NULL or start of line
+ ccp end, // end of line
+ bool ident_only // TRUE: SetIdent*LT() only
+)
+{
+ if ( !ld || !src || !end )
+ return false;
+
+ bool is_arena = false;
+ bool is_d = false;
+ uint tslot = -1;
+ uint cup = 0;
+
+ int pi;
+ char buf[300];
+ int valid_sha1 = false;
+ sha1_size_t bin;
+ enum { P_TYPE, P_FLAGS, P_SHA1, P_TSLOT, P_CUP, P_NAME };
+
+ for ( pi = P_TYPE; pi <= P_NAME; pi++ )
+ {
+ while ( src < end && (uchar)*src <= ' ' )
+ src++;
+
+ ccp par = src;
+ while ( src < end && (uchar)*src > ' ' )
+ src++;
+
+ switch (pi)
+ {
+ case P_TYPE:
+ PRINT0("TYPE: %.*s\n",(int)(src-par),par);
+ if ( src - par != 2 )
+ return false;
+ if (!strncasecmp(par,"bt",2))
+ is_arena = true;
+ else if (strncasecmp(par,"vs",2))
+ return false;
+ break;
+
+ case P_FLAGS:
+ PRINT0("FLAGS: %.*s\n",(int)(src-par),par);
+ StringCopySM(buf,sizeof(buf),par,src-par);
+ is_d = strchr(buf,'d') != 0;
+ break;
+
+ case P_SHA1:
+ PRINT0("SHA1: %.*s\n",(int)(src-par),par);
+ valid_sha1 = IsSSChecksum(&bin,par,src-par);
+ break;
+
+ case P_TSLOT:
+ PRINT0("TSLOT: %.*s\n",(int)(src-par),par);
+ {
+ char *scan_end;
+ tslot = str2ul(par,&scan_end,10);
+ if ( tslot > MKW_MAX_TRACK_SLOT || scan_end != src )
+ return false;
+ }
+ break;
+
+ case P_CUP:
+ PRINT0("CUP: %.*s\n",(int)(src-par),par);
+ {
+ if ( *par == 'a' || *par == 'A' )
+ par++;
+ if ( par < src )
+ {
+ ccp pt = strchr(par,'.');
+ if ( pt && pt < src )
+ cup = str2ul(par,0,10) * 10 + str2ul(pt+1,0,10);
+ }
+ }
+ break;
+
+ case P_NAME:
+ src = end-1;
+ while ( src >= par && (uchar)*src <= ' ' )
+ src--;
+ src++;
+ PRINT0("XNAME: %.*s\n",(int)(src-par),par);
+ StringCopySM(buf,sizeof(buf),par,src-par);
+ break;
+ }
+ }
+
+ if (!valid_sha1)
+ return false;
+
+ sha1_hex_t hex;
+ Sha1Bin2Hex(hex,bin.hash);
+ PRINT0(">>> arena=%d, d=%d, tslot=%4d, cup=%2d : %s : |%s|\n",
+ is_arena, is_d, tslot, cup, hex, buf );
+
+ le_track_t *lt = DefineTrackLD(ld,tslot,true);
+ if (!ident_only)
+ {
+ lt->track_type = is_arena ? LTTY_ARENA : LTTY_TRACK;
+ lt->cup_slot = cup;
+ SetXNameLT(lt,0,buf);
+ }
+ SetIdentOptLT(lt,hex,is_d,true,0);
+ return true;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: scan ledef ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const KeywordTab_t * scan_cmd
+(
+ ScanInfo_t *si, // valid structure
+ const KeywordTab_t *commands, // command table
+ ccp section, // name of section
+ enumError *max_err // NULL or max_err variable
+)
+{
+ DASSERT(si);
+ DASSERT(commands);
+
+ char buf[100];
+ if (!ScanNameSI(si,buf,sizeof(buf),true,true,0))
+ {
+ if (!si->no_warn)
+ {
+ ccp eol = FindNextLineFeedSI(si,true);
+ ScanFile_t *sf = si->cur_file;
+ DASSERT(sf);
+ ERROR0(ERR_WARNING,
+ "File %s, section [%s], line #%u:\nMissing command: %.*s\n",
+ sf->name, section, sf->line,
+ (int)(eol - sf->prev_ptr), sf->prev_ptr );
+ }
+ if ( max_err && *max_err < ERR_WARNING )
+ *max_err = ERR_WARNING;
+ GotoEolSI(si);
+ return 0;
+ }
+
+ int abbrev_count;
+ const KeywordTab_t *cmd = ScanKeyword(&abbrev_count,buf,commands);
+ if (!cmd)
+ {
+ if (!si->no_warn)
+ {
+ ScanFile_t *sf = si->cur_file;
+ ccp msg = GetKeywordError(commands,buf,abbrev_count,0);
+ ERROR0(ERR_WARNING,
+ "File %s, section [%s], line #%u:\n%s\n",
+ sf->name, section, sf->line, msg );
+ }
+ if ( max_err && *max_err < ERR_WARNING )
+ *max_err = ERR_WARNING;
+ GotoEolSI(si);
+ return 0;
+ }
+
+ return cmd;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError scan_track ( le_track_t *lt, ScanInfo_t *si )
+{
+ if ( !lt || !si || !si->ld )
+ return ERR_MISSING_PARAM;
+ le_distrib_t *ld = si->ld;
+
+ memset(lt,0,sizeof(*lt));
+ lt->track_status = LTS_EXPORT;
+
+ enumError err;
+ ScanIndexSI(si,&err,0,0,ld->is_pass2?0:2);
+ if (err)
+ return err;
+
+ uint uval;
+ err = ScanUIntValueSI(si,&uval);
+ if (err)
+ return err;
+ lt->track_type = uval;
+
+ err = ScanUIntValueSI(si,&uval);
+ if (err)
+ return err;
+ lt->property = uval;
+
+ err = ScanUIntValueSI(si,&uval);
+ if (err)
+ return err;
+ lt->music = NormalizeMusicID(uval);
+
+ DEFINE_VAR(var);
+ err = ScanValueSI(si,&var);
+ if (!err)
+ lt->flags = var.mode == VAR_STRING ? ScanLEFT(var.str) : GetIntV(&var);
+ ResetV(&var);
+
+ PRINT0("TRACK %s: t=%d, p=%d, m=%d, f:%x\n",
+ last_index_name, lt->track_type, lt->property, lt->music, lt->flags );
+
+ if ( lt->track_type == LTTY_TRACK )
+ {
+ if (!IsMkwTrack(lt->property))
+ {
+ if (!si->no_warn)
+ {
+ ScanFile_t *sf = si->cur_file;
+ ERROR0(ERR_WARNING,
+ "File %s, section [TRACK-LIST], line #%u:\n"
+ "Versus track with invalid property %d.\n",
+ sf->name, sf->line, lt->property );
+ }
+ return ERR_WARNING;
+ }
+ }
+ else if ( lt->track_type == LTTY_ARENA )
+ {
+ if (!IsMkwArena(lt->property))
+ {
+ if (!si->no_warn)
+ {
+ ScanFile_t *sf = si->cur_file;
+ ERROR0(ERR_WARNING,
+ "File %s, section [TRACK-LIST], line #%u:\n"
+ "Battle arena with invalid property %d.\n",
+ sf->name, sf->line, lt->property );
+ }
+ return ERR_WARNING;
+ }
+ }
+ else
+ {
+ if (!si->no_warn)
+ {
+ ScanFile_t *sf = si->cur_file;
+ ERROR0(ERR_WARNING,
+ "File %s, section [TRACK-LIST], line #%u:\n"
+ "Invalid track type (not bt, not vs).\n",
+ sf->name, sf->line );
+ }
+ return ERR_WARNING;
+ }
+
+ return err;
+}
+
+//-----------------------------------------------------------------------------
+
+static enumError ScanLeDefTRACKS
+(
+ le_distrib_t *ld, // valid structure
+ ScanInfo_t *si, // valid structure
+ int pass // 1|2
+)
+{
+ if ( !ld || !si )
+ return ERR_MISSING_PARAM;
+
+ enum { C_SLOT, C_TRACK, C_IDENT, C_FILE, C_NAME, C_XNAME,
+ C_LIST, C_STD_ARENAS, C_STD_VERSUS };
+ enum { O_STRING = 0x100 };
+
+ static const KeywordTab_t commands[] =
+ {
+ { C_SLOT, "SLOT", 0, 0 },
+ { C_TRACK, "TRACK", 0, 0 },
+
+ { C_IDENT, "IDENT", 0, O_STRING },
+ { C_FILE, "FILE", 0, O_STRING },
+ { C_NAME, "NAME", 0, O_STRING },
+ { C_XNAME, "XNAME", 0, O_STRING },
+
+ #if LE_STRING_LIST_ENABLED
+ { C_LIST, "TEMP1", 0, O_STRING|LTT_TEMP1 },
+ { C_LIST, "TEMP2", 0, O_STRING|LTT_TEMP2 },
+ #endif
+
+ { C_STD_ARENAS, "STANDARD-BATTLE-ARENAS",
+ "STANDARDBATTLEARENAS", 0 },
+ { C_STD_VERSUS, "STANDARD-VERSUS-TRACKS",
+ "STANDARDVERSUSTRACKS", 0 },
+ { C_STD_VERSUS, "STD_VERSUS", 0, 0 },
+
+ { 0,0,0,0 }
+ };
+
+ s_nsec_t total_nsec = -GetTimerNSec(), get_track_nsec = 0;
+
+ enumError max_err = ERR_OK;
+ int next_slot = -1, count = 0;
+ DEFINE_VAR(string_par);
+ le_track_t *current_lt = 0;
+ le_strpar_t spar = { .opt = ld->spar.opt };
+
+ for (;;)
+ {
+ if (IsSectionOrEotSI(si,true))
+ break;
+
+ bool define_set = false;
+
+ #if LE_STRING_SET_ENABLED
+ char ch = NextCharSI(si,true);
+ if ( ch == '[' )
+ {
+ ccp eol = GetEolSI(si);
+ if (eol)
+ {
+ ScanFile_t *sf = si->cur_file;
+ DASSERT(sf);
+ ccp beg = sf->ptr+1;
+ ccp ptr = memchr(beg,']',eol-beg);
+ if ( ptr && ptr < eol )
+ {
+ SetKeyNameLSP(&spar,beg,ptr-beg);
+ sf->ptr = ptr+1;
+ PRINT0("[%s] = %.*s\n",buf,(int)(eol-sf->ptr),sf->ptr);
+ define_set = true;
+ }
+ }
+ }
+ #endif
+
+ const KeywordTab_t *cmd = 0;
+ if (!define_set)
+ {
+ cmd = scan_cmd(si,commands,"TRACK-LIST",&max_err);
+ if (!cmd)
+ continue;
+ }
+
+ const le_options_t opt = cmd ? cmd->opt : 0;
+ if ( opt & O_STRING || define_set )
+ {
+ if (!current_lt)
+ {
+ if (!si->no_warn)
+ {
+ ccp eol = FindNextLineFeedSI(si,true);
+ ScanFile_t *sf = si->cur_file;
+ DASSERT(sf);
+ ERROR0(ERR_WARNING,
+ "File %s, section [TRACK-LIST], line #%u:\nNo current track: %.*s\n",
+ sf->name, sf->line,
+ (int)(eol - sf->prev_ptr), sf->prev_ptr );
+ }
+ if ( max_err < ERR_WARNING )
+ max_err = ERR_WARNING;
+ GotoEolSI(si);
+ continue;
+ }
+
+ enumError err = ScanStringSI(si,&string_par);
+ if ( max_err < err )
+ max_err = err;
+
+ #if LE_STRING_SET_ENABLED
+ if (define_set)
+ {
+ SetSetLT(current_lt,&spar,string_par.str);
+ continue;
+ }
+ #endif
+ }
+
+ ASSERT(cmd);
+ switch(cmd->id)
+ {
+ case C_SLOT:
+ ScanIntValueSI(si,&next_slot);
+ PRINT0("NEXT-SLOT: %d\n",next_slot);
+ CheckEolSI(si);
+ continue; // skip 'next_slot=-1'
+
+ case C_TRACK:
+ {
+ current_lt = 0;
+ le_track_t temp;
+ if (!scan_track(&temp,si))
+ {
+ count++;
+
+ get_track_nsec -= GetTimerNSec();
+ le_track_t *lt
+ = next_slot >= 0
+ ? DefineTrackLD(ld,next_slot,true) // SLOT has highest priority
+ : IsRandomLETF(temp.flags)
+ ? DefineGroupTrackLD(ld,temp.track_type,true) // append random tracks always
+ : DefineFreeTrackLD(ld,temp.track_type,true); // fallback: search a free slot
+ get_track_nsec += GetTimerNSec();
+
+ if (lt)
+ {
+ temp.track_slot = lt->track_slot;
+ MoveLT(lt,&temp);
+ if (*last_index_name)
+ {
+ #if LE_TYPE_MARKERS_ENABLED
+ uint val = lt->track_slot;
+ if ( lt->track_type & LTTY_ARENA )
+ val |= LTT_MARKER_ARENA;
+ if ( lt->track_type & LTTY_TRACK )
+ val |= LTT_MARKER_TRACK;
+ DefineIntVar(&si->gvar,last_index_name,val);
+ #else
+ DefineIntVar(&si->gvar,last_index_name,lt->track_slot);
+ #endif
+ }
+ current_lt = lt;
+ }
+ }
+ ClearLT(&temp,0);
+ }
+ break;
+
+ case C_IDENT:
+ SetIdentOptLT(current_lt,string_par.str,false,true,ld->spar.opt);
+ break;
+
+ case C_FILE:
+ SetFileLT(current_lt,&spar,string_par.str);
+ break;
+
+ case C_NAME:
+ SetNameLT(current_lt,&spar,string_par.str);
+ break;
+
+ case C_XNAME:
+ SetXNameLT(current_lt,&spar,string_par.str);
+ break;
+
+ #if LE_STRING_LIST_ENABLED
+ case C_LIST:
+ SetListLT(current_lt,&spar,string_par.str);
+ break;
+ #endif // LE_STRING_LIST_ENABLED
+
+ case C_STD_ARENAS:
+ for ( int slot = MKW_ARENA_BEG; slot < MKW_ARENA_END; slot++ )
+ SetupStandardArenaLT(DefineFreeTrackLD(ld,LTTY_ARENA,true),slot);
+ current_lt = 0;
+ break;
+
+ case C_STD_VERSUS:
+ for ( int slot = MKW_TRACK_BEG; slot < MKW_TRACK_END; slot++ )
+ SetupStandardTrackLT(DefineFreeTrackLD(ld,LTTY_TRACK,true),slot);
+ current_lt = 0;
+ break;
+ }
+ CheckEolSI(si);
+ next_slot = -1;
+ }
+
+ ResetV(&string_par);
+
+ if ( log_timing >= 1 )
+ {
+ total_nsec += GetTimerNSec();
+ fprintf(stdlog,
+ "%sLE-DEF: %d tracks scanned in %s,"
+ " of which %s are searching free slots.\n",
+ verbose >= 1 ? " > " : "",
+ count,
+ PrintTimerNSec6(0,0,total_nsec,0),
+ PrintTimerNSec6(0,0,get_track_nsec,0) );
+ }
+
+ return max_err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static void add_reflist_to_cup
+ ( le_distrib_t *ld, const le_cup_ref_t *slot_list, int n_slots )
+{
+ if ( !ld || !slot_list || n_slots < 1 )
+ return;
+
+ while ( n_slots-- > 0 )
+ {
+ #if LE_TYPE_MARKERS_ENABLED
+ le_cup_ref_t val = *slot_list++;
+ le_cup_ref_t slot = val & ~LTT_MARKER__ALL;
+ PRINT0("APPEND %d (val:%x)%s\n",slot,val,IsValidLecodeSlot(slot)?"":" INVALID!");
+ #else
+ le_cup_ref_t slot = *slot_list++;
+ PRINT0("APPEND %d %s\n",slot,IsValidLecodeSlot(slot)?"":" INVALID!");
+ #endif
+ if (!IsValidLecodeSlot(slot))
+ continue;
+
+ le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !IsVisibleLT(lt) )
+ {
+ #if LE_TYPE_MARKERS_ENABLED
+ if ( val & LTT_MARKER_TRACK )
+ AppendLECUP(&ld->cup_versus,slot);
+
+ if ( val & LTT_MARKER_ARENA )
+ AppendLECUP(&ld->cup_battle,slot);
+ #endif
+ continue;
+ }
+
+ if ( lt->track_type & LTTY_TRACK )
+ {
+ lt->user_flags |= LTTY_TRACK;
+ AppendLECUP(&ld->cup_versus,slot);
+ }
+
+ if ( lt->track_type & LTTY_ARENA )
+ {
+ lt->user_flags |= LTTY_ARENA;
+ AppendLECUP(&ld->cup_battle,slot);
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
+
+static void append_to_cup ( ScanInfo_t *si )
+{
+ if ( !si || !si->ld )
+ return;
+
+ for(;;)
+ {
+ char ch = NextCharSI(si,false);
+ if (!ch)
+ break;
+
+ int val;
+ const enumError err = ScanIntValueSI(si,&val);
+ if (err)
+ return;
+
+ le_cup_ref_t ref = val;
+ add_reflist_to_cup(si->ld,&ref,1);
+ SkipCharSI(si,',');
+ }
+}
+
+//-----------------------------------------------------------------------------
+
+static void close_cup ( ScanInfo_t *si )
+{
+ if ( !si || !si->ld )
+ return;
+
+ for(;;)
+ {
+ char ch = NextCharSI(si,false);
+ if (!ch)
+ break;
+
+ int val;
+ const enumError err = ScanIntValueSI(si,&val);
+ if (err)
+ return;
+
+ if ( val == LTTY_ARENA )
+ CloseLECUP(&si->ld->cup_battle);
+ else if ( val == LTTY_TRACK )
+ CloseLECUP(&si->ld->cup_versus);
+ SkipCharSI(si,',');
+ }
+}
+
+//-----------------------------------------------------------------------------
+
+static enumError ScanLeDefCUPS
+(
+ le_distrib_t *ld, // valid structure
+ ScanInfo_t *si, // valid structure
+ int pass // 1|2
+)
+{
+ if ( !ld || !si )
+ return ERR_MISSING_PARAM;
+
+ enum { C_APPEND, C_NEW_CUP, C_STD_CUPS, C_MKWFUN, C_UNUSED };
+ enum { O_BOOL_VAL = 1, O_BT = 2, O_VS = 4 };
+ static const KeywordTab_t commands[] =
+ {
+ { C_APPEND, "APPEND", 0, 0 },
+ { C_NEW_CUP, "NEW-CUP", "NEWCUP", 0 },
+
+ { C_STD_CUPS, "STANDARD-BATTLE-CUPS", "STANDARDBATTLECUPS", O_BT },
+ { C_STD_CUPS, "STANDARD-VERSUS-CUPS", "STANDARDVERSUSCUPS", O_VS },
+ { C_STD_CUPS, "STANDARD-CUPS", "STANDARDCUPS", O_BT|O_VS },
+
+ { C_MKWFUN, "MKWFUN-RANDOM-CUP", "MKWFUNRANDOMCUP", 0 },
+
+ { C_UNUSED, "ADD-UNUSED-ARENAS", "ADDUNUSEDARENAS", O_BOOL_VAL|O_BT },
+ { C_UNUSED, "ADD-UNUSED-TRACKS", "ADDUNUSEDTRACKS", O_BOOL_VAL|O_VS },
+ { C_UNUSED, "ADD-UNUSED", "ADDUNUSED", O_BOOL_VAL|O_BT|O_VS },
+
+ { 0,0,0,0 }
+ };
+
+ enumError max_err = ERR_OK;
+ bool bool_val = false;
+
+ for (;;)
+ {
+ char ch = NextCharSI(si,true);
+ if ( !ch || ch == '[' )
+ break;
+
+ const KeywordTab_t *cmd = scan_cmd(si,commands,"TRACK-LIST",&max_err);
+ if (!cmd)
+ continue;
+
+ if ( cmd->opt & O_BOOL_VAL )
+ {
+ SkipCharSI(si,'=');
+ int val;
+ const enumError err = ScanIntValueSI(si,&val);
+ if (!err)
+ bool_val = val > 0;
+ else if ( max_err < err )
+ max_err = err;
+ }
+
+ switch(cmd->id)
+ {
+ case C_APPEND:
+ append_to_cup(si);
+ break;
+
+ case C_NEW_CUP:
+ close_cup(si);
+ break;
+
+ case C_STD_CUPS:
+ if (cmd->opt&O_BT)
+ add_reflist_to_cup(ld,standard_bt_ref,MKW_N_ARENAS);
+ if (cmd->opt&O_VS)
+ add_reflist_to_cup(ld,standard_vs_ref,MKW_N_TRACKS);
+ break;
+
+ case C_MKWFUN:
+ for ( int slot = MKW_LE_RANDOM_BEG; slot <= MKW_LE_RANDOM_END; slot++ )
+ DefineTrackLD(ld,slot,true);
+ add_reflist_to_cup(ld,mkwfun_random_ref,MKW_N_LE_RANDOM);
+ break;
+
+ case C_UNUSED:
+ if (cmd->opt&O_BT)
+ ld->scan.bt.add_unused = bool_val;
+ if (cmd->opt&O_VS)
+ ld->scan.vs.add_unused = bool_val;
+ break;
+ }
+ CheckEolSI(si);
+ }
+
+ return max_err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError ScanLeDefLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size, // size of 'data'
+ ccp fname, // NULL or filename for error messages
+ CopyMode_t cm_fname // copy mode of 'fname'
+)
+{
+ ScanText_t st;
+ SetupScanText(&st,data,data_size);
+ SetFilenameScanText(&st,fname,cm_fname);
+ const enumError err = ScanLeDefSTLD(ld,init_ld,&st);
+ ResetScanText(&st);
+ return err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError ScanLeDefSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+)
+{
+ enum { SECT_TOOL, SECT_TRACKS, SECT_CUPS, SECT_END };
+ static const KeywordTab_t sections[] =
+ {
+ { SECT_TOOL, "TOOL", 0, 1 },
+ { SECT_TRACKS, "TRACK-LIST", "TRACKLIST", 1 },
+ { SECT_CUPS, "CUP-LIST", "CUPLIST", 2 },
+ { SECT_END, "END", 0, 0 },
+ { 0,0,0,0 }
+ };
+
+ if ( !ld || !st )
+ return ERR_MISSING_PARAM;
+
+ if ( init_ld || !ld->is_initialized )
+ InitializeLD(ld);
+
+ if (!ld->second_ledef)
+ {
+ ld->second_ledef = true;
+ ResetTracksAndCupsLD(ld);
+ memset(&ld->scan,0,sizeof(ld->scan));
+ ld->scan.valid = true;
+ ld->scan.bt.add_unused = true;
+ ld->scan.vs.add_unused = true;
+ ClearUserFlagsAndCupsLD(ld);
+ }
+
+ ScanInfo_t si;
+ InitializeSI(&si,st->data,st->data_size,st->fname,0);
+ si.predef = SetupVarsLECODE();
+ si.ld = ld;
+
+ enumError max_err = ERR_OK;
+ for ( int pass = 1; pass <= 2; pass++ )
+ {
+ if ( pass > 1 )
+ RestartSI(&si);
+
+ PRINT("----- pass %u\n",pass);
+ max_err = ERR_OK;
+ ld->is_pass2 = pass == 2;
+ si.no_warn = pass == 1;
+ si.total_err = 0;
+ DefineIntVar(&si.gvar, "$PASS", pass );
+
+ for(;;)
+ {
+ char ch = NextCharSI(&si,true);
+ if (!ch)
+ break;
+
+ if ( ch != '[' )
+ {
+ NextLineSI(&si,true,false);
+ continue;
+ }
+ ResetLocalVarsSI(&si,0);
+
+ si.cur_file->ptr++;
+ char name[40];
+ ScanNameSI(&si,name,sizeof(name),true,true,0);
+ PRINT0("--> pass=%u: #%04u: %s\n",pass,si.cur_file->line,name);
+
+ int abbrev_count;
+ const KeywordTab_t *cmd = ScanKeyword(&abbrev_count,name,sections);
+ if ( !cmd || abbrev_count )
+ continue;
+ NextLineSI(&si,false,false);
+ PRINT0("Path %d, section %s\n",pass,cmd->name1);
+ PRINT0("--> %-6s #%-4u |%.3s|\n",cmd->name1,si.cur_file->line,si.cur_file->ptr);
+
+ // check pass
+ if ( cmd->opt == pass )
+ si.no_warn = false;
+ else if ( cmd->opt )
+ continue; // wrong pass
+ else
+ si.no_warn = pass == 1;
+
+ enumError err = ERR_OK;
+ switch (cmd->id)
+ {
+ case SECT_TRACKS: err = ScanLeDefTRACKS(ld,&si,pass); break;
+ case SECT_CUPS: err = ScanLeDefCUPS(ld,&si,pass); break;
+
+ default:
+ // ignore all other sections without any warnings
+ break;
+ }
+
+ if ( max_err < err )
+ max_err = err;
+ }
+ #if HAVE_PRINT0
+ if ( logging >= 1 )
+ {
+ printf("VAR DUMP/GLOBAL PASS %u:\n",pass);
+ DumpVarMap(stdout,3,&si.gvar,false);
+ }
+ #endif
+ }
+
+
+ //--- terminate
+
+
+ CheckLevelSI(&si);
+ if ( max_err < ERR_WARNING && si.total_err )
+ max_err = ERR_WARNING;
+ PRINT("ERR(ScanTextKMP) = %u (errcount=%u)\n", max_err, si.total_err );
+ ResetSI(&si);
+ return max_err;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: cup helpers ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void DirtyCupLD ( le_distrib_t *ld, le_track_type_t ltty )
+{
+ if (ld)
+ {
+ if ( ltty & LTTY_ARENA )
+ ld->cup_battle.dirty = true;
+ if ( ltty & LTTY_TRACK )
+ ld->cup_versus.dirty = true;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_track_t * FindFillTrackLD ( le_distrib_t *ld, le_cup_t *lc, bool allow_candidate )
+{
+ if ( !ld || !lc )
+ return 0;
+
+ le_track_type_t ltty = GetLttyLECUP(lc);
+
+ le_track_t *fill = GetTrackLD(ld,lc->fill_slot);
+ if ( !fill || fill->track_status != LTS_FILL || !(fill->track_type&ltty) )
+ {
+ fill = 0;
+ le_track_t *lt = ld->tlist;
+ for ( int slot = 0; slot < ld->tlist_used ; slot++, lt++ )
+ if ( lt->track_status >= LTS_FILL && lt->track_type & ltty )
+ {
+ if ( lt->track_status == LTS_FILL )
+ {
+ // we have already a fill track
+ fill = lt;
+ lc->fill_slot = fill->track_slot;
+ break;
+ }
+ if ( allow_candidate && !fill )
+ fill = lt;
+ }
+ }
+ return fill;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool PrintCupRefLD ( FILE *f, le_distrib_t *ld, le_cup_t *lc )
+{
+ if ( !f || !lc || !lc->used )
+ return false;
+
+ le_track_t *fill = FindFillTrackLD(ld,lc,true);
+ const int fill_slot = fill ? fill->track_slot : -999;
+ ccp type = lc->tracks == BMG_BCUP_TRACKS ? "BT" : "VS";
+
+ #if 1
+ le_cup_ref_t *cup = lc->list;
+ for ( int i = 0; i< lc->used; i++ )
+ {
+ fprintf(f,"%s|%u|",type,i);
+ for ( int nt = lc->tracks; nt > 0; nt--, cup++ )
+ fprintf(f,"%d|", *cup == fill_slot ? -1 : *cup );
+ fputs("\r\n",f);
+ }
+ return true;
+ #else
+ if ( lc->tracks == BMG_BCUP_TRACKS )
+ {
+ le_cup_ref_t *cup = lc->list;
+ for ( int i = 0; i< lc->used; i++, cup += BMG_BCUP_TRACKS )
+ fprintf(f,"bt|%u|%d|%d|%d|%d|%d|\r\n",
+ i, cup[0], cup[1], cup[2], cup[3], cup[4] );
+ return true;
+ }
+
+ if ( lc->tracks == BMG_RCUP_TRACKS )
+ {
+ le_cup_ref_t *cup = lc->list;
+ for ( int i = 0; i< lc->used; i++, cup += BMG_RCUP_TRACKS )
+ fprintf(f,"vs|%u|%d|%d|%d|%d|\r\n",
+ i, cup[0], cup[1], cup[2], cup[3] );
+ return true;
+ }
+ ASSERT(0);
+ return false;
+ #endif
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void update_cup_helper
+(
+ le_distrib_t *ld, // valid distrib
+ le_cup_t *lc, // cup to update
+ le_track_type_t ltty, // LTTY_ARENA | LTTY_TRACK
+ le_cup_ref_t p_fallback, // fall back if no track is found
+ bool add_missed // true: add missed files (user_flag==0)
+)
+{
+ DASSERT(ld);
+ DASSERT(lc);
+ PRINT("update_cup_helper(%d,fb=%d,add=%d) #%u: used=%d, dirty=%d\n",
+ lc->tracks, p_fallback, add_missed,
+ __LINE__, lc->used, lc->dirty );
+
+
+ //--- remove invalid cup references & mark used
+
+ le_cup_ref_t *end = lc->list + lc->used * lc->tracks;
+ for ( le_cup_ref_t *ptr = lc->list; ptr < end; ptr++ )
+ {
+ if ( *ptr >= 0 )
+ {
+ le_track_t *lt = GetTrackLD(ld,*ptr);
+ if ( IsVisibleLT(lt) && lt->track_type & ltty )
+ lt->user_flags |= ltty;
+ else
+ *ptr = -1;
+ }
+ }
+
+
+ //--- append not used tracks
+
+ if (add_missed)
+ {
+ le_track_t *lt = ld->tlist;
+ for ( int slot = 0; slot < ld->tlist_used; slot++, lt++ )
+ if ( IsVisibleLT(lt) && lt->track_type & ltty && !(lt->user_flags&ltty) )
+ AppendLECUP(lc,slot);
+ }
+
+
+ //--- pack, even num of cups
+
+ if (!lc->close_used)
+ PackLECUP(lc);
+ EvenLECUP(lc);
+
+
+ //--- fill cups
+
+ if (HaveInvalidLECUP(lc))
+ {
+ le_strpar_t spar = { .opt = LEO__DEFAULT|LEO_IN_ALL };
+ le_track_t *fill = FindFillTrackLD(ld,lc,true);
+
+ if (!fill)
+ {
+ fill = DefineFreeTrackLD(ld,ltty,true);
+ SetupStandardTrackLT(fill,p_fallback);
+ fill->track_status = LTS_FILL;
+ lc->fill_slot = fill->track_slot;
+ lc->fill_src = -1;
+ }
+ else if ( fill->track_status != LTS_FILL )
+ {
+ le_track_t *next = DefineTrackLD(ld,ld->tlist_used,true);
+ if (next)
+ {
+ next->track_status = LTS_FILL;
+ next->property = fill->property;
+ next->music = fill->music;
+ lc->fill_slot = next->track_slot;
+ lc->fill_src = fill->track_slot;
+
+ SetFileLT(next,&spar,GetFileLT(fill,0));
+ SetIdentOptLT(next,GetIdentLT(fill,false,true,0),false,false,LEO_IN_ALL);
+ SetIdentOptLT(next,GetIdentLT(fill,true, true,0),true, false,LEO_IN_ALL);
+ fill = next;
+ }
+ }
+
+ if (fill)
+ {
+ if ( fill->track_status == LTS_FILL )
+ {
+ fill->flags = 0;
+ fill->track_type = ltty;
+ SetNameLT(fill,&spar,"-");
+ }
+
+ FillLECUP(lc,fill->track_slot);
+ }
+ }
+
+
+ //--- assign cup_slot's
+
+ if ( lc->tracks == 4 )
+ DumpCupSlots(ld,"before assign");
+
+ end = lc->list + lc->used * lc->tracks;
+ for ( le_cup_ref_t *ptr = lc->list; ptr < end; ptr++ )
+ {
+ if ( *ptr >= 0 )
+ {
+ le_track_t *lt = GetTrackLD(ld,*ptr);
+ if ( lt && !lt->cup_slot && lt->track_type & ltty )
+ {
+ lt->cup_slot = GetCupSlotLECUP(lc,ptr);
+ if ( lt->flags & LETF_RND_HEAD )
+ {
+ for ( int hslot = lt->track_slot+1; hslot < ld->tlist_used; hslot++ )
+ {
+ le_track_t *hlt = GetTrackLD(ld,hslot);
+ if ( IsActiveLT(hlt) && IsHiddenLETF(hlt->flags) )
+ hlt->cup_slot = lt->cup_slot;
+ else
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if ( lc->tracks == 4 )
+ DumpCupSlots(ld,"behind assign");
+
+ //--- terminate
+
+ lc->dirty = false;
+ PRINT("update_cup_helper(%d) #%u: used=%d, dirty=%d\n",lc->tracks,__LINE__,lc->used,lc->dirty);
+}
+
+//-----------------------------------------------------------------------------
+
+void UpdateCupsLD ( le_distrib_t *ld )
+{
+ if (!ld)
+ return;
+
+ CloseArchLD(ld);
+ if ( ld->cup_battle.used && !ld->cup_battle.dirty && ld->cup_versus.used && !ld->cup_versus.dirty )
+ return;
+
+ PRINT0("UpdateCupsLD() N=%d,%d, dirty=%d,%d\n",
+ ld->cup_battle.used, ld->cup_versus.used,
+ ld->cup_battle.dirty, ld->cup_versus.dirty );
+ s_nsec_t dur_nsec = -GetTimerNSec();
+
+
+ //--- clear user flags
+
+ CheckTracksLD(ld);
+ ClearUserFlagsAndCupsLD(ld);
+
+
+ //--- battle cups
+
+ if (!ld->cup_battle.used)
+ add_reflist_to_cup(ld,standard_bt_ref,MKW_N_ARENAS);
+
+ update_cup_helper( ld, &ld->cup_battle, LTTY_ARENA,MKW_ARENA_BEG,
+ !ld->scan.valid || ld->scan.bt.add_unused );
+
+
+ //--- versus cups
+
+ if (!ld->cup_versus.used)
+ add_reflist_to_cup(ld,standard_vs_ref,MKW_N_TRACKS);
+
+ update_cup_helper( ld, &ld->cup_versus, LTTY_TRACK,MKW_TRACK_BEG,
+ !ld->scan.valid || ld->scan.vs.add_unused );
+
+
+ //--- terminate
+
+ if ( log_timing >= 1 )
+ {
+ dur_nsec += GetTimerNSec();
+ fprintf(stdlog,"%sUpdateCupsLD() N=%d,%d, done in %s\n",
+ verbose >= 1 ? " > " : "",
+ ld->cup_battle.used, ld->cup_versus.used,
+ PrintTimerNSec6(0,0,dur_nsec,0) );
+ }
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: manage archive ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[track-arch]]
+
+void ResetLTA ( le_track_arch_t *ta, bool reset_lt )
+{
+ if (ta)
+ {
+ if (reset_lt)
+ ResetLT(&ta->lt);
+ FreeString(ta->name_order);
+ FreeString(ta->version);
+ memset(ta,0,sizeof(*ta));
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetArchLD ( le_distrib_t *ld )
+{
+ if (ld)
+ {
+ le_track_arch_t *ta = ld->arch;
+ le_track_arch_t *end = ta + ld->arch_used;
+ for ( ; ta < end; ta++ )
+ ResetLTA(ta,true);
+ ld->arch = 0;
+ ld->arch_used = 0;
+ ld->arch_size = 0;
+
+ exmem_key_t *ek = ld->group.list;
+ exmem_key_t *gend = ek + ld->group.used;
+ for ( ; ek < gend; ek++ )
+ {
+ le_group_info_t *gi = (le_group_info_t*)ek->data.data.ptr;
+ FREE(gi->list);
+ }
+ ResetEML(&ld->group);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static void AddToGroup ( le_distrib_t *ld, le_track_arch_t *ta, mem_t grp )
+{
+ if ( !ld || !ta || !grp.len )
+ return;
+
+ mem_t pre = { .ptr = ta->lt.track_type == LTTY_ARENA ? "A" : "T", .len = 1 };
+ mem_t key = MemCat2A(pre,grp);
+ PRINT0("+GRP[%.*s] += %d\n",key.len,key.ptr,ta->lt.track_slot);
+
+ exmem_key_t *ek = FindInsertEML(&ld->group,key.ptr,CPM_MOVE,0);
+ if (!ek->data.data.ptr)
+ {
+ ek->data.data.ptr = CALLOC(1,sizeof(le_group_info_t));
+ ek->data.data.len = sizeof(le_group_info_t);
+ ek->data.is_alloced = true;
+ le_group_info_t *gi = (le_group_info_t*)ek->data.data.ptr;
+ gi->group = ld->group.used;
+ }
+
+ le_group_info_t *gi = (le_group_info_t*)ek->data.data.ptr;
+ ta->group = gi->group;
+
+ #if 0
+ char xbuf[30];
+ snprintf(xbuf,sizeof(xbuf),"%d %s",ta->group,ek->key);
+ SetByKeyLT(&ta->lt,"grp",xbuf);
+ #endif
+
+
+ //-- append index to list;
+
+ if ( ta->lt.flags & LETF_RND_HEAD && !gi->n_head++ )
+ gi->head1 = ta->lt.track_slot;
+ if ( ta->lt.flags & LETF_RND_GROUP )
+ gi->n_group++;
+
+ if ( gi->used >= gi->size )
+ {
+ gi->size = gi->used + 10;
+ gi->list = REALLOC( gi->list, gi->size * sizeof(*gi->list) );
+ }
+ ASSERT( gi->used < gi->size );
+ gi->list[gi->used++] = ta->lt.track_slot;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_track_arch_t * GetNextArchLD ( le_distrib_t *ld )
+{
+ if (!ld)
+ return 0;
+
+ if ( ld->arch_used >= ld->arch_size )
+ {
+ static const int tab[] = { 100, 200, 500, 100, 2000, LE_MAX_TRACKS, 0 };
+ uint need = ld->arch_used + 1;
+ for ( const int *ptr = tab; *ptr; ptr++ )
+ if ( need <= *ptr )
+ {
+ need = *ptr;
+ break;
+ }
+
+ ld->arch = REALLOC( ld->arch, need * sizeof(*ld->arch) );
+ memset( ld->arch + ld->arch_size, 0, ( need - ld->arch_size ) * sizeof(*ld->arch) );
+ ld->arch_size = need;
+ }
+
+ DASSERT( ld->arch_used < ld->tlist_size );
+
+ le_track_arch_t *ta = ld->arch + ld->arch_used;
+ memset(ta,0,sizeof(*ta));
+ InitializeLT(&ta->lt);
+
+ ta->lt.track_slot = ld->arch_used++; // index of 'arch'
+ ta->lt.track_status = LTS_EXPORT;
+ ta->attr_order = 1000;
+ ta->plus_order = 10000000;
+ ta->game_order = 10000000;
+ return ta;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw )
+{
+ if ( !ld || !raw )
+ return ERR_MISSING_PARAM;
+
+ char buf[LE_TRACK_STRING_MAX+1];
+ exmem_dest_t exdest = { .buf = buf, .buf_size = sizeof(buf), .try_circ = true };
+
+ szs_file_t szs;
+ AssignSZS(&szs,true,raw->data,raw->data_size,false,raw->fform,raw->fname);
+
+ analyse_szs_t as;
+ AnalyseSZS(&as,true,&szs,raw->fname);
+ PRINT0("SHA1: %s, slots: r=%d a=%d m=%d\n",
+ as.sha1_szs,
+ as.slotinfo.race_slot, as.slotinfo.arena_slot, as.slotinfo.music_index );
+
+ split_filename_t spf;
+ AnalyseSPF(&spf,true,raw->fname,0,CPM_LINK,opt_plus);
+
+ enumError err = ERR_WARNING;
+ if ( as.valid_track && !spf.f_d.len )
+ {
+ ccp slash = strrchr(raw->fname,'/');
+ if (slash)
+ ScanOptTrackSource(raw->fname,slash-raw->fname,opt_szs_mode);
+ else
+ ScanOptTrackSource(".",1,opt_szs_mode);
+
+ err = ERR_OK;
+ le_track_arch_t *ta = GetNextArchLD(ld);
+
+ if (szs.is_arena)
+ {
+ ta->lt.track_type = LTTY_ARENA;
+ ta->lt.property = MKW_ARENA_BEG;
+
+ if (as.slotinfo.arena_slot)
+ {
+ int slot = as.slotinfo.arena_slot - 11;
+ slot = slot/10*5 + slot%10;
+ if ( (uint)slot < MKW_N_ARENAS )
+ ta->lt.property = arena_pos_default[slot] + MKW_ARENA_BEG;
+ }
+ }
+ else
+ {
+ ta->lt.track_type = LTTY_TRACK;
+ ta->lt.property = MKW_TRACK_BEG;
+
+ if (as.slotinfo.race_slot)
+ {
+ int slot = as.slotinfo.race_slot - 11;
+ slot = slot/10*4 + slot%10;
+ if ( (uint)slot < MKW_N_TRACKS )
+ ta->lt.property = track_pos_default[slot];
+ }
+ }
+ ta->lt.music = as.slotinfo.music_index
+ ? as.slotinfo.music_index
+ : NormalizeMusicID(ta->lt.property);
+
+ if (spf.plus.len)
+ ta->lt.flags |= LETF_NEW;
+
+
+ //-- setup basic strings
+
+ mem_t space = { .ptr = " ", .len = 1 };
+ le_strpar_t spar = { .opt = LEO__DEFAULT | LEO_IN_ALL | LEO_OUT_ALL };
+
+ SetIdentLT(&ta->lt,&spar,as.sha1_szs);
+
+ StringCopySM(buf,sizeof(buf),spf.f_name.ptr,spf.f_name.len);
+ SetFileLT(&ta->lt,&spar,buf);
+
+ #if SUPPORT_SPLIT_SIGN
+ mem_t list[] = { spf.sign, spf.boost, spf.game, spf.name, spf.extra };
+ #else
+ mem_t list[] = { spf.boost, spf.game, spf.name, spf.extra };
+ #endif
+ mem_src_t msrc = { .src = list, .n_src = sizeof(list)/sizeof(*list) };
+ exmem_t exsum = ExMemCat(&exdest,space,&msrc);
+ SetNameLT(&ta->lt,&spar,exsum.data.ptr);
+ FreeExMem(&exsum);
+
+ StringCopySM(buf,sizeof(buf),spf.norm.ptr,spf.norm.len);
+ SetXNameLT(&ta->lt,&spar,buf);
+
+ //-- setup arch extensions
+
+ mem_t sum = MemCatSep3A(space,spf.name,spf.version,spf.extra);
+ ta->name_order = sum.ptr;
+ ta->version = MEMDUP(spf.version.ptr,spf.version.len);
+
+ //-- setup order & group
+
+ mem_t grp = {0};
+ mem_t attr_list[100+1];
+ const int n = SplitByCharMem(attr_list,100,spf.attribs,',');
+ for ( int i = 0; i < n; i++ )
+ {
+ mem_t attr = attr_list[i];
+ if ( !attr.ptr || !attr.len )
+ continue;
+
+ if (!memcmp(attr.ptr,"head=",5))
+ {
+ ta->lt.flags |= LETF_RND_HEAD;
+ grp = MidMem(attr,5,attr.len);
+ }
+ else if (!memcmp(attr.ptr,"grp=",4))
+ {
+ ta->lt.flags |= LETF_RND_GROUP;
+ if (!grp.len)
+ grp = MidMem(attr,4,attr.len);
+ }
+ else if ( grp.len && !StrCmpMem(attr,"grp") )
+ {
+ ta->lt.flags |= LETF_RND_GROUP;
+ }
+ else if ( !StrCmpMem(attr,"new") )
+ ta->lt.flags |= LETF_NEW;
+ else if (!memcmp(attr.ptr,"order=",6))
+ ta->attr_order = str2l(attr.ptr+6,0,10);
+ }
+
+ if (grp.len)
+ AddToGroup(ld,ta,grp);
+
+ //--- plus_order, game_order
+
+ ta->plus_order = spf.plus_order;
+ ta->game_order = spf.game_order;
+// ta->game_color = spf.game_color;
+
+
+ //-- clean
+
+ PRINT0("order=%d,%d,%d, grp=%d \"%.*s\"\n",
+ ta->attr_order, ta->plus_order, ta->game_order,
+ ta->group, grp.len, grp.ptr );
+ }
+
+ //-- clean & return
+
+ ResetSPF(&spf);
+ ResetAnalyseSZS(&as);
+ ResetSZS(&szs);
+ return err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static int cmp_order ( const le_track_arch_t **pa, const le_track_arch_t **pb )
+{
+ const le_track_arch_t *a = *pa;
+ const le_track_arch_t *b = *pb;
+ ASSERT(a&&b);
+
+ int res = ( a->lt.track_type & LTTY_TRACK ) - ( b->lt.track_type & LTTY_TRACK );
+ if (!res)
+ {
+ res = a->attr_order - b->attr_order;
+ if (!res)
+ {
+ res = a->plus_order - b->plus_order;
+ if (!res)
+ {
+ res = strcasecmp(a->name_order,b->name_order);
+ if (!res)
+ {
+ res = a->game_order - b->game_order;
+ if (!res)
+ res = (int)a->lt.track_slot - (int)b->lt.track_slot;
+ }
+ }
+ }
+ }
+ return res;
+}
+
+//-----------------------------------------------------------------------------
+
+bool CloseArchLD ( le_distrib_t *ld )
+{
+ if ( !ld || !ld->arch )
+ return false;
+
+ //-- manage groups
+
+ exmem_key_t *ek = ld->group.list;
+ exmem_key_t *gend = ek + ld->group.used;
+ for ( ; ek < gend; ek++ )
+ {
+ le_group_info_t *gi = (le_group_info_t*)ek->data.data.ptr;
+ const bool clear_group = !gi->n_group || gi->n_group == 1 && !gi->n_head;
+
+ if ( !clear_group && !gi->n_head && gi->used )
+ {
+ // first member becomes head
+ gi->n_head++;
+ gi->head1 = *gi->list;
+ }
+
+ for ( int i = 0; i < gi->used; i++ )
+ {
+ int index = gi->list[i];
+ PRINT0("A: %zd/%d : %d/%d/%d : %d/%d/%d\n",
+ ek-ld->group.list, ld->group.used,
+ i, gi->used, gi->size,
+ index, ld->arch_used, ld->arch_size );
+ ASSERT( index < ld->arch_used );
+
+ le_track_arch_t *ta = ld->arch + index;
+ if (clear_group)
+ {
+ if ( ta->lt.flags & LETF_RND_GROUP )
+ {
+ ta->lt.flags &= ~LETF__RND;
+ ta->group = 0;
+ }
+ else
+ ta->lt.track_status = LTS_VALID; // deactivate track
+ }
+ else if ( index == gi->head1 )
+ ta->lt.flags |= LETF_RND_HEAD;
+ else if ( ta->lt.flags & LETF_RND_GROUP )
+ ta->lt.flags &= ~LETF_RND_HEAD;
+ else
+ ta->lt.track_status = LTS_VALID; // deactivate track
+ }
+ }
+
+
+ //--- [[2do]] order
+
+ le_track_arch_t **order = MALLOC( (ld->arch_used+1) * sizeof(*order) );
+ le_track_arch_t **ptr = order;
+
+ le_track_arch_t *ta = ld->arch;
+ le_track_arch_t *end = ta + ld->arch_used;
+ for ( ; ta < end; ta++ )
+ if ( ta->lt.track_status >= LTS_EXPORT && !IsHiddenLETF(ta->lt.flags) )
+ *ptr++ = ta;
+ *ptr = 0;
+
+ int n_order = ptr - order;
+ if ( n_order > 1 )
+ qsort( order, n_order, sizeof(*order), (qsort_func)cmp_order );
+
+
+ //--- assign tracks
+
+ for ( ptr = order; *ptr; ptr++ )
+ {
+ le_track_arch_t *ta = *ptr;
+ le_track_t *lt = IsRandomLETF(ta->lt.flags)
+ ? DefineGroupTrackLD(ld,ta->lt.track_type,true)
+ : DefineFreeTrackLD(ld,ta->lt.track_type,true);
+ ta->lt.track_slot = lt->track_slot;
+ *lt = ta->lt;
+
+ if (ta->group)
+ {
+ for ( exmem_key_t *ek = ld->group.list; ek < gend; ek++ )
+ {
+ le_group_info_t *gi = (le_group_info_t*)ek->data.data.ptr;
+ if ( gi->group == ta->group )
+ {
+ for ( int i = 0; i < gi->used; i++ )
+ {
+ int index = gi->list[i];
+ PRINT0("B: %zd/%d : %d/%d/%d : %d/%d/%d\n",
+ ek-ld->group.list, ld->group.used,
+ i, gi->used, gi->size,
+ index, ld->arch_used, ld->arch_size );
+ ASSERT( index < ld->arch_used );
+
+ le_track_arch_t *ta2 = ld->arch + index;
+ if ( ta2 != ta && IsHiddenLETF(ta2->lt.flags) )
+ {
+ le_track_t *lt2 = DefineFreeTrackLD(ld,0,true);
+ ta2->lt.track_slot = lt2->track_slot;
+ *lt2 = ta2->lt;
+ ResetLTA(ta2,false);
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ ResetLTA(ta,false);
+ }
+
+ ld->cup_battle.dirty = true;
+ ld->cup_versus.dirty = true;
+
+ FREE(order);
+ ResetArchLD(ld);
+ return true;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: import ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportLD ( le_distrib_t *ld, const le_distrib_t *src )
+{
+ // [[2do]] ???
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void SetupLparLD ( le_distrib_t *ld, bool load_lpar )
+{
+ if ( !ld || ld->lpar )
+ return;
+
+ ld->lpar = MALLOC(sizeof(*ld->lpar));
+ InitializeLPAR(ld->lpar,load_lpar);
+ PatchLPAR(ld->lpar);
+ ld->lpar->limit_mode = LPM_FORCE_AUTOMATIC;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportLparLD ( le_distrib_t *ld, const le_lpar_t *lpar )
+{
+ if ( !ld || !lpar )
+ return;
+
+ SetupLparLD(ld,false);
+ ASSERT(ld->lpar);
+ memcpy(ld->lpar,lpar,sizeof(*ld->lpar));
+ PatchLPAR(ld->lpar);
+ ld->lpar->limit_mode = LPM_FORCE_AUTOMATIC;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportAnaLD ( le_distrib_t *ld, const le_analyse_t *ana )
+{
+ if ( !ld || !ana || !ana->valid )
+ return;
+
+
+ //--- import lecode binary + lpar
+
+ if ( ld->spar.opt & LEO_IN_LECODE )
+ AssignLecodeLD(ld,GetLERegion(ana),ana->data,ana->size);
+ ImportLparLD(ld,&ana->lpar);
+
+
+ //--- import tracks
+
+ DefineTrackLD(ld,ana->n_slot-1,false); // alloc reference list of good size
+
+ for ( int slot = 0; slot < ana->n_slot; slot++ )
+ {
+ if ( slot == MKW_ARENA_END )
+ slot = LE_FIRST_CT_SLOT;
+
+ if (!IsLESlotUsed(ana,slot))
+ continue;
+
+ le_track_t *lt = DefineTrackLD(ld,slot,true);
+ if (lt)
+ {
+ if (ana->property) lt->property = ana->property[slot];
+ if (ana->music) lt->music = ana->music[slot];
+ if (ana->flags) lt->flags = ana->flags[slot];
+ }
+ }
+
+
+ //--- arena cups and slots
+
+ if ( ana->n_cup_arena && ana->cup_arena )
+ {
+ const uint *ref_src = ana->cup_arena;
+ for ( int cup_idx = 0; cup_idx < ana->n_cup_arena; cup_idx++ )
+ {
+ le_cup_ref_t *ref_dest = DefineLECUP(&ld->cup_battle,cup_idx);
+ for ( int i = 0; i < BMG_BCUP_TRACKS; i++ )
+ {
+ int slot = htonl( ana->cup_arena[ BMG_BCUP_TRACKS*cup_idx + i ] );
+ le_track_t *lt = DefineTrackLD(ld,slot,false);
+ if ( lt && IsArenaLTTY(lt->track_type) )
+ {
+ lt->cup_slot = 10*cup_idx + i + 11;
+ if ( ref_dest && ref_src )
+ *ref_dest++ = ntohl(*ref_src++);
+ }
+ }
+ }
+ }
+
+
+ //--- racing cups and slots
+
+ if ( ana->n_cup_track && ana->cup_track )
+ {
+ const uint *ref_src = ana->cup_track;
+ for ( int cup_idx = 0; cup_idx < ana->n_cup_track; cup_idx++ )
+ {
+ le_cup_ref_t *ref_dest = DefineLECUP(&ld->cup_versus,cup_idx);
+ for ( int i = 0; i < BMG_RCUP_TRACKS; i++ )
+ {
+ int slot = htonl( ana->cup_track[ BMG_RCUP_TRACKS*cup_idx + i ] );
+ le_track_t *lt = DefineTrackLD(ld,slot,false);
+ if ( lt && !IsArenaLTTY(lt->track_type) )
+ {
+ lt->cup_slot = 10*cup_idx + i + 11;
+ if ( ref_dest && ref_src )
+ *ref_dest++ = ntohl(*ref_src++);
+ }
+ }
+ }
+ }
+
+ PackTracksLD(ld);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportCtcodeLD ( le_distrib_t *ld, const ctcode_t *ctcode )
+{
+ if ( !ld || !ctcode )
+ return;
+
+
+ //--- setup lower slots with defaults
+
+ for ( int slot = 0; slot < MKW_ARENA_END; slot++ )
+ {
+ le_track_t *lt = DefineTrackLD(ld,slot,true);
+ lt->property = slot;
+ lt->music = GetMkwMusicSlot(slot);
+ }
+
+
+ //--- copy track properties
+
+ le_strpar_t spar = { .opt = LEO__DEFAULT|LEO_IN_ALL };
+
+ const ctcode_crs1_data_t *td = ctcode->crs->data;
+ if (td)
+ {
+ const int max = ctcode->n_tracks;
+ for ( int slot = 0; slot < max; slot++, td++ )
+ {
+ if ( slot == MKW_ARENA_END )
+ {
+ slot = LE_FIRST_CT_SLOT;
+ td = ctcode->crs->data + slot;
+ }
+
+ le_track_t *lt = DefineTrackLD(ld,slot,true);
+ if (lt)
+ {
+ if (IsMkwArena(slot))
+ {
+ const u8 prop = ctcode->arena.prop[slot-MKW_ARENA_BEG];
+ if (prop) // invalid if 0
+ {
+ lt->property = prop;
+ lt->music = ctcode->arena.music[slot-MKW_ARENA_BEG];
+ }
+ }
+ else
+ {
+ lt->property = ntohl(td->property_id);
+ lt->music = ntohl(td->music_id);
+ lt->flags = ctcode->le_flags[slot];
+ }
+
+ char buf[200];
+ const int str_idx = ctcode->ctb.track_name1.beg + slot;
+ const bmg_item_t *bi;
+
+ bi = FindItemBMG(&ctcode->track_ident,str_idx);
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,sizeof(buf),bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ SetIdentLT(lt,&spar,buf);
+ }
+
+ bi = FindItemBMG(&ctcode->track_file,str_idx);
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,sizeof(buf),bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ SetFileLT(lt,&spar,buf);
+ }
+
+ bi = FindItemBMG(&ctcode->track_string,str_idx);
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,sizeof(buf),bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ SetNameLT(lt,&spar,buf);
+ }
+
+ bi = FindItemBMG(&ctcode->track_xstring,str_idx);
+ if ( bi && bi->text )
+ {
+ PrintString16BMG(buf,sizeof(buf),bi->text,bi->len,BMG_UTF8_MAX,0,1);
+ SetXNameLT(lt,&spar,buf);
+ }
+ }
+ }
+ }
+
+
+ //--- battle cups and tracks
+
+ const ctcode_cup1_data_t *cup;
+ cup = ctcode->cup_battle;
+ if (cup )
+ {
+ uint max = ctcode->n_battle_cups;
+ if ( max > ld->cup_battle.max )
+ max = ld->cup_battle.max;
+
+ for ( int cup_idx = 0; cup_idx < max; cup_idx++, cup++ )
+ {
+ le_cup_ref_t *dest = DefineLECUP(&ld->cup_battle,cup_idx);
+ for ( int i = 0; i < BMG_BCUP_TRACKS; i++ )
+ {
+ const int slot = ntohl(cup->track_id[i]);
+ le_track_t *lt = DefineTrackLD(ld,slot,false);
+ if ( lt && IsArenaLTTY(lt->track_type) )
+ {
+ lt->cup_slot = 10*cup_idx + i + 11;
+ if (dest)
+ *dest++ = slot;
+ }
+ }
+ }
+ }
+
+
+ //--- racing cups and tracks
+
+ cup = ctcode->cup_racing;
+ if (cup)
+ {
+ uint max = ctcode->n_racing_cups;
+ if ( max > ld->cup_versus.max )
+ max = ld->cup_versus.max;
+
+ for ( int cup_idx = 0; cup_idx < max; cup_idx++, cup++ )
+ {
+ le_cup_ref_t *dest = DefineLECUP(&ld->cup_versus,cup_idx);
+ for ( int i = 0; i < BMG_RCUP_TRACKS; i++ )
+ {
+ const int slot = ntohl(cup->track_id[i]);
+ le_track_t *lt = DefineTrackLD(ld,slot,false);
+ if ( lt && !IsArenaLTTY(lt->track_type) )
+ {
+ lt->cup_slot = 10*cup_idx + i + 11;
+ if (dest)
+ *dest++ = slot;
+ }
+ }
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportBmgLD ( le_distrib_t *ld, const bmg_t *bmg, const le_strpar_t *par )
+{
+ if ( !ld || !bmg )
+ return;
+
+ if (!par)
+ par = &ld->spar;
+
+ char buf[LE_TRACK_STRING_MAX+1];
+ for ( int slot = 0; slot < ld->tlist_used; slot++ )
+ {
+ le_track_t *lt = GetTrackLD(ld,slot);
+ if ( lt && GetBmgBySlotLEO(buf,sizeof(buf),bmg,slot,ld->spar.opt) )
+ SetTextLT(lt,par,buf);
+ }
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: import files and options ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError ImportRawDataLD
+(
+ le_distrib_t *ld, // destination
+ raw_data_t *raw // source
+)
+{
+ enumError err = ERR_MISSING_PARAM;
+ if ( ld && raw )
+ {
+ if (!ld->is_initialized)
+ InitializeLD(ld);
+
+ if ( logging >= 2 && raw->fname )
+ fprintf(stdlog,"Import data to LD: %s\n",raw->fname);
+
+ err = ERR_OK;
+ switch(raw->fform)
+ {
+ case FF_LEDEF:
+ err = ScanLeDefLD(ld,false,raw->data,raw->data_size,raw->fname,CPM_LINK);
+ break;
+
+ case FF_LEDIS:
+ ScanDumpLD(ld,false,raw->data,raw->data_size);
+ break;
+
+ case FF_LEREF:
+ ScanRefLD(ld,false,raw->data,raw->data_size);
+ break;
+
+ case FF_LESTR:
+ ScanStrLD(ld,false,raw->data,raw->data_size);
+ break;
+
+ case FF_SHA1REF:
+ ScanSha1LD(ld,false,raw->data,raw->data_size);
+ break;
+
+ case FF_LE_BIN:
+ {
+ le_analyse_t ana;
+ err = AnalyseLEBinary(&ana,raw->data,raw->data_size);
+ if (!err)
+ ImportAnaLD(ld,&ana);
+ ResetLEAnalyse(&ana);
+ }
+ break;
+
+ case FF_PREFIX:
+ DefinePrefixTable(raw->data,raw->data_size);
+ break;
+
+ case FF_LPAR:
+ {
+ le_lpar_t lpar;
+ InitializeLPAR(&lpar,true);
+ err = ScanTextLPAR(&lpar,false,raw->fname,raw->data,raw->data_size);
+ if (!err)
+ ImportLparLD(ld,&lpar);
+ ResetLPAR(&lpar);
+ }
+ break;
+
+ case FF_BMG:
+ case FF_BMG_TXT:
+ {
+ bmg_t bmg;
+ err = ScanBMG(&bmg,true,raw->fname,raw->data,raw->data_size);
+ if (!err)
+ ImportBmgLD(ld,&bmg,&ld->spar);
+ ResetBMG(&bmg);
+ }
+ break;
+
+ case FF_DISTRIB:
+ err = ImportDistribLD(ld,raw->data,raw->data_size);
+ break;
+
+ case FF_U8:
+ err = AddToArchLD(ld,raw);
+ break;
+
+ case FF_BRRES:
+ case FF_TEX_CT:
+ case FF_CT1_DATA:
+ case FF_CTDEF:
+ if (!ld->ctcode)
+ ld->ctcode = MALLOC(sizeof(*ld->ctcode));
+ InitializeCTCODE(ld->ctcode,CTM_LECODE2);
+ err = ScanRawDataCTCODE(ld->ctcode,CTM_NO_INIT,raw,0);
+ if (!err)
+ ImportCtcodeLD(ld,ld->ctcode);
+ ResetCTCODE(ld->ctcode);
+ break;
+
+ case FF_UNKNOWN:
+ err = ERROR0(ERR_INVALID_DATA,
+ "Need LE-CODE compatible file, but have unknown file format: %s\n",
+ raw->fname);
+ break;
+
+ default:
+ err = ERROR0(ERR_INVALID_DATA,
+ "Need LE-CODE compatible file, but file format is %s: %s",
+ GetNameFF(raw->fform_file,raw->fform),raw->fname);
+ }
+ }
+ return err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+struct search_t
+{
+ le_distrib_t *ld;
+ int count;
+ enumError max_err;
+};
+
+//-----------------------------------------------------------------------------
+
+static enumError search_func
+(
+ mem_t path, // full path of existing file, never NULL
+ uint st_mode, // copy of struct stat.st_mode, see "man 2 stat"
+ void *param // user defined parameter
+)
+{
+ if (!S_ISREG(st_mode))
+ return ERR_JOB_IGNORED;
+
+ struct search_t *s = (struct search_t*)param;
+ ASSERT(s);
+ ASSERT(s->ld);
+
+ const enumError err = ImportFileLD(s->ld,path.ptr,false,false);
+ if ( s->max_err < err )
+ s->max_err = err;
+ s->count++;
+ return err;
+}
+
+//-----------------------------------------------------------------------------
+
+enumError ImportFileLD
+(
+ le_distrib_t *ld, // destination
+ ccp fname, // file name of source
+ bool use_wildcard, // true & file not exist: search files
+ bool support_options // support options (leading '+' and no slash )
+)
+{
+ enumError err = ERR_MISSING_PARAM;
+ if ( ld && fname )
+ {
+ if (!ld->is_initialized)
+ InitializeLD(ld);
+
+ if ( support_options && *fname == '+' )
+ ld->spar.opt = ScanLEO(ld->spar.opt,fname+1,"Filter option");
+ else
+ {
+ struct stat st;
+ if ( use_wildcard && HaveWildcards(MemByString(fname)) && stat(fname,&st) )
+ {
+ struct search_t param = { .ld = ld };
+ SearchPaths(fname,0,false,search_func,&param);
+ return param.count
+ ? param.max_err
+ : ERROR0(ERR_CANT_OPEN,"File not found: %s\n",fname);
+ }
+
+ raw_data_t raw;
+ err = LoadRawData(&raw,true,fname,0,opt_ignore>0,0);
+ if (!err)
+ err = ImportRawDataLD(ld,&raw);
+ ResetRawData(&raw);
+ }
+ }
+ return err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportOptionsLD ( le_distrib_t *ld )
+{
+ if (ld)
+ {
+ if (!ld->is_initialized)
+ InitializeLD(ld);
+
+ ccp *ptr = le_define_list.field, *end;
+ for ( end = ptr + le_define_list.used; ptr < end; ptr++ )
+ ImportFileLD(ld,*ptr,true,false);
+ }
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: export ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+bool ExportAnaLD ( const le_distrib_t *ld, le_analyse_t *ana )
+{
+ if ( !ld && !ana )
+ return false;
+
+
+ //--- assign LPAR
+
+ if (ld->lpar)
+ ana->lpar = *ld->lpar;
+
+
+ //--- slots and flags
+
+ ana->n_slot = 0;
+ int max = PackTracksLD(ld);
+
+ le_property_t *prop = ana->property;
+ le_music_t *music = ana->music;
+ le_flags_t *flags = ana->flags;
+
+ if ( prop && music && flags )
+ {
+ if ( max > ana->max_slot )
+ max = ana->max_slot;
+ ana->n_slot = max;
+
+ const le_track_t *lt = ld->tlist;
+ for ( int slot = 0; slot < max; slot++, lt++ )
+ {
+ if ( lt->track_status < LTS_EXPORT )
+ continue;
+ prop[slot] = lt->property;
+ music[slot] = lt->music;
+ flags[slot] = lt->flags;
+ }
+ }
+
+
+ //--- copy battle cups
+
+ ana->n_cup_arena = 0;
+
+ le_cup_track_t *cup_dest = ana->cup_arena;
+ if (cup_dest)
+ {
+ uint max = ld->cup_battle.used;
+ if ( max > ana->max_cup_arena )
+ max = ana->max_cup_arena;
+
+ for ( int cup_idx = 0; cup_idx < max; cup_idx++ )
+ {
+ const le_cup_ref_t *ref = GetLECUP(&ld->cup_battle,cup_idx);
+ if (ref)
+ {
+ *cup_dest++ = htonl(*ref++);
+ *cup_dest++ = htonl(*ref++);
+ *cup_dest++ = htonl(*ref++);
+ *cup_dest++ = htonl(*ref++);
+ *cup_dest++ = htonl(*ref++);
+ ana->n_cup_arena++;
+ }
+ }
+ }
+
+
+ //--- copy racing cups
+
+ ana->n_cup_track = 0;
+
+ cup_dest = ana->cup_track;
+ if (cup_dest)
+ {
+ uint max = ld->cup_versus.used;
+ if ( max > ana->max_cup_track )
+ max = ana->max_cup_track;
+
+ for ( int cup_idx = 0; cup_idx < max; cup_idx++ )
+ {
+ const le_cup_ref_t *ref = GetLECUP(&ld->cup_versus,cup_idx);
+ if (ref)
+ {
+ *cup_dest++ = htonl(*ref++);
+ *cup_dest++ = htonl(*ref++);
+ *cup_dest++ = htonl(*ref++);
+ *cup_dest++ = htonl(*ref++);
+ ana->n_cup_track++;
+ }
+ }
+ }
+ PRINT("%s() #%u: n_cups=%d+%d\n",__FUNCTION__,__LINE__,ana->n_cup_arena,ana->n_cup_track);
+
+
+ //--- setup by version
+
+ switch (ana->param_vers)
+ {
+ case 1:
+ ana->cup_par->n_racing_cups = htonl(ana->n_cup_track);
+ ana->cup_par->n_battle_cups = htonl(ana->n_cup_arena);
+ ana->course_par->n_slot = htonl(ana->n_slot);
+ break;
+ }
+
+
+ //--- finalize
+
+ PatchLECODE(ana);
+ return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool ExportCtCodeLD ( const le_distrib_t *ld, ctcode_t *ctc )
+{
+ // [[2do]] ???
+ return false;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: reference list ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static void PrintSectionTool ( FILE *f, bool be_verbose )
+{
+ DASSERT(f);
+
+ if (be_verbose)
+ fprintf(f,text_ledis_tool_cr,
+ tool_name, SYSTEM2, VERSION, REVISION_NUM, DATE );
+ else
+ fprintf(f,
+ "\r\n[TOOL]\r\n"
+ "TOOL = %s\r\n"
+ "SYSTEM = %s\r\n"
+ "VERSION = %s\r\n"
+ "REVISION = %u\r\n"
+ "DATE = %s\r\n"
+ "\r\n",
+ tool_name, SYSTEM2, VERSION, REVISION_NUM, DATE );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+int SetupReferenceList ( le_distrib_t *ld, FilterFuncLD filter, le_options_t opt )
+{
+ const uint need = ld->tlist_used + 1;
+ if ( ld->reflist_size < need )
+ {
+ FREE(ld->reflist);
+ ld->reflist = CALLOC(need,sizeof(*ld->reflist));
+ ld->reflist_size = need;
+ }
+
+ le_track_t *lt = ld->tlist, **dest = ld->reflist;
+ for ( int slot = 0; slot < ld->tlist_used; slot++, lt++ )
+ if ( filter ? filter(lt,opt) : lt->track_status >= LTS_EXPORT )
+ *dest++ = lt;
+ *dest = 0;
+
+ ld->reflist_used = dest - ld->reflist;
+ ASSERT( ld->reflist_used < ld->reflist_size );
+ return ld->reflist_used ;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static bool check_filter ( const le_track_t *lt, le_options_t opt )
+{
+ const le_options_t a = opt & LEO_M_ARENA;
+ if ( a == LEO_VERSUS && !IsTrackLTTY(lt->track_type) || a == LEO_BATTLE && !IsArenaLTTY(lt->track_type) )
+ return false;
+
+ const le_options_t o = opt & LEO_M_ORIGINAL;
+ if ( o == LEO_CUSTOM && lt->is_original || o == LEO_ORIGINAL && !lt->is_original )
+ return false;
+
+ return true;
+}
+
+//-----------------------------------------------------------------------------
+
+static bool filter_options_td ( const le_track_t *lt, le_options_t opt )
+{
+ return lt->track_status >= LTS_EXPORT
+ && check_filter(lt,opt);
+}
+
+//-----------------------------------------------------------------------------
+
+static bool filter_name_td ( const le_track_t *lt, le_options_t opt )
+{
+ return lt->track_status >= LTS_EXPORT
+ && check_filter(lt,opt)
+ && IsOutputNameValidLEO(lt->name,opt);
+}
+
+//-----------------------------------------------------------------------------
+
+static bool filter_xname2_td ( const le_track_t *lt, le_options_t opt )
+{
+ return lt->track_status >= LTS_EXPORT
+ && check_filter(lt,opt)
+ && ( IsOutputNameValidLEO(lt->name,opt) || IsOutputNameValidLEO(lt->xname,opt) );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static int cmp_cup_lt ( const le_track_t **pa, const le_track_t **pb )
+{
+ const le_track_t *a = *pa;
+ const le_track_t *b = *pb;
+ ASSERT(a&&b);
+
+ int res = a->track_type - b->track_type;
+ if (!res)
+ {
+ res = a->cup_slot - b->cup_slot;
+ if (!res)
+ res = a->track_slot - b->track_slot;
+ }
+ return res;
+}
+
+//-----------------------------------------------------------------------------
+
+int SortByCupLD ( le_distrib_t *ld, FilterFuncLD filter, le_options_t opt )
+{
+ DASSERT(ld);
+
+ UpdateCupsLD(ld);
+ int n = SetupReferenceList(ld,filter,opt);
+ if ( n > 1 )
+ qsort( ld->reflist, n, sizeof(*ld->reflist), (qsort_func)cmp_cup_lt );
+ return n;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: listings ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateDumpLD ( FILE *f, le_distrib_t *ld )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ UpdateCupsLD(ld);
+
+ export_count++;
+ brief_count++;
+
+ fprintf(f,
+ "%s : LE-CODE distribution\r\n"
+ "%s[TOOL]\r\n\r\n"
+ "TOOL = %s\r\n"
+ "SYSTEM = %s\r\n"
+ "VERSION = %s\r\n"
+ "REVISION = %u\r\n"
+ "DATE = %s\r\n"
+ "\r\n",
+ LE_DISTRIB_MAGIC8,
+ section_sep,
+ tool_name, SYSTEM2, VERSION, REVISION_NUM, DATE );
+
+ #if 0
+ fprintf(f,
+ "%s[SETTINGS]\r\n\r\n"
+ "\r\n",
+ section_sep
+ );
+ #endif
+
+
+ //--- distribution params
+
+ if (ld->dis_param.used)
+ {
+ int count = 0;
+ ParamFieldItem_t *it = ld->dis_param.field, *end;
+ for ( end = it + ld->dis_param.used; it < end; it++ )
+ {
+ ccp data = (ccp)it->data;
+ if ( data && *data )
+ {
+ if (!count++)
+ fprintf(f,"%s[DISTRIBUTION-PARAM]\r\n\r\n",section_sep);
+
+ int len = strlen(it->key);
+ ccp sep = len > 14 ? " " : len > 6 ? "\t" : "\t\t";
+ fprintf(f,"@%s%s= %s\r\n", it->key, sep, data );
+ }
+ }
+ }
+
+
+ //-- lecode info
+
+ fprintf(f,"%s[LECODE-INFO]\r\n# Info about current lecode binaries:\r\n\r\n",
+ section_sep );
+ CreateLeInfoLD(f,ld,true);
+
+
+ //-- LPAR
+
+ if (ld->lpar)
+ CreateLparLD(f,ld,false);
+
+
+ //-- cup reference
+
+ fprintf(f,"%s[CUP-REF]\r\n\r\n",section_sep);
+
+ if (PrintCupRefLD(f,ld,&ld->cup_battle))
+ fputs("\r\n",f);
+
+ if (PrintCupRefLD(f,ld,&ld->cup_versus))
+ fputs("\r\n",f);
+
+
+ //-- track reference
+
+ fprintf(f,"%s[TRACK-REF]\r\n\r\n",section_sep);
+ const enumError err1 = CreateRefLD(f,ld,false);
+
+
+ //-- track strings
+
+ fprintf(f,"%s[TRACK-STRINGS]\r\n\r\n",section_sep);
+ const enumError err2 = CreateStringsLD(f,ld);
+
+
+ //-- end
+
+ fprintf(f,
+ "%s[END]\r\n"
+ "# This section is ignored.\r\n"
+ "\r\n",
+ section_sep );
+
+ export_count--;
+ brief_count--;
+ return err1 > err2 ? err1 : err2;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateRefLD ( FILE *f, le_distrib_t *ld, bool add_strings )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ UpdateCupsLD(ld);
+ SetupReferenceList(ld,filter_options_td,ld->spar.opt);
+
+ fprintf(f,"%s : LE-CODE track reference v1\r\n",LE_REFERENCE_MAGIC8);
+
+ ccp filter = GetOutputFilterLEO(ld->spar.opt&LEO_M_OUTPUT);
+ if (filter)
+ fprintf(f,"# Active output filter: %s\r\n",filter);
+
+ fprintf(f,
+ "#> track_slot|type|orig|cup_slot|cup_slot_name|property|music|flags|hidden|sha1|sha1_d|%s\r\n",
+ add_strings ? "ident|ident_d|file|file_d|name|name_d|xname|xname_d|" : "" );
+
+ const bool no_d = ( ld->spar.opt & LEO_NO_D_FILES ) != 0;
+ int count = 0;
+
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ count++;
+ const le_track_t *lt = *plt;
+
+ fprintf(f,"%u|%s|%u|%u|%s|%u|%u|%u|%u|%s|%s|",
+ lt->track_slot, GetNameLTTY(lt->track_type),
+ lt->is_original,
+ lt->cup_slot, GetCupLT(lt,""),
+ lt->property, lt->music,
+ lt->flags, IsHiddenLETF(lt->flags),
+ GetSha1LT(lt,0,""),
+ no_d ? 0 : GetSha1LT(lt,1,"") );
+
+ if (add_strings)
+ {
+ exmem_t id1 = EscapeStringPipeCircS(GetIdentLT(lt,0,false,0));
+ exmem_t id2 = EscapeStringPipeCircS( no_d ? 0 : GetIdentLT(lt,1,false,0) );
+ exmem_t file = EscapeStringPipeCircS(GetFileLT(lt,0));
+ exmem_t name = EscapeStringPipeCircS(GetNameLT(lt,0));
+ exmem_t xname = EscapeStringPipeCircS(GetXNameLT(lt,0));
+
+ fprintf(f,"%s|%s|%s||%s||%s||\r\n",
+ id1.data.ptr,
+ id2.data.ptr,
+ file.data.ptr,
+ name.data.ptr,
+ xname.data.ptr );
+
+ FreeExMem(&id1);
+ FreeExMem(&id2);
+ FreeExMem(&file);
+ FreeExMem(&name);
+ FreeExMem(&xname);
+ }
+ else
+ fputs("\r\n",f);
+ }
+
+ if ( count > 1 )
+ fprintf(f,"#-----\r\n# %u records total\r\n",count);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateStringsLD ( FILE *f, le_distrib_t *ld )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ SetupReferenceList(ld,filter_options_td,ld->spar.opt);
+ fprintf(f,"%s : LE-CODE track strings v1\r\n",LE_STRINGS_MAGIC8);
+
+ ccp filter = GetOutputFilterLEO(ld->spar.opt&LEO_M_OUTPUT);
+ if (filter)
+ fprintf(f,"# Active output filter: %s\r\n",filter);
+
+ fputs("#> track_slot|d_mode|is_set|name|string|\r\n",f);
+
+ const bool allow_d = !( ld->spar.opt & LEO_NO_D_FILES );
+ int n_strings = 0, n_tracks = 0;
+
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ n_tracks++;
+ const le_track_t *lt = *plt;
+
+ for ( int ltt = 0; ltt < LTT__N; ltt++ )
+ {
+ ccp *ptr = GetPtrOptLT(lt,ltt,allow_d);
+ if ( ptr && *ptr )
+ {
+ n_strings++;
+ exmem_t text = EscapeStringPipeCircS(*ptr);
+ fprintf(f,"%u|%u|0|%s|%s|\r\n",
+ lt->track_slot,
+ GetDModeLTT(ltt),
+ GetLowerNameLTT(ltt),
+ text.data.ptr );
+ FreeExMem(&text);
+ }
+ }
+
+ #if LE_STRING_SET_ENABLED
+ ParamFieldItem_t *end = lt->str_set.field + lt->str_set.used;
+ for ( ParamFieldItem_t *ptr = lt->str_set.field; ptr < end; ptr++ )
+ {
+ n_strings++;
+ exmem_t name = EscapeStringPipeCircS(ptr->key);
+ exmem_t text = EscapeStringPipeCircS(ptr->data);
+ fprintf(f,"%u|3|1|%s|%s|\r\n",
+ lt->track_slot,
+ name.data.ptr,
+ text.data.ptr );
+ FreeExMem(&name);
+ FreeExMem(&text);
+ }
+ #endif
+ }
+
+ if ( n_tracks > 1 )
+ fprintf(f,"#-----\r\n# %u strings for %u tracks total\r\n",n_strings,n_tracks);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static u32 GetPrefixIdByName ( ccp name, bool is_arena )
+{
+ intx_t res;
+ res.u32[0] = 0;
+
+ if ( name && *name == '+' )
+ for ( int i = 0; i < 4 && (u8)*name > ' ' ; i++ )
+ res.s8[i] = *name++;
+ return is_arena ? ~res.u32[0] : res.u32[0];
+}
+
+//-----------------------------------------------------------------------------
+
+uint GetNameFw ( le_distrib_t *ld, bool use_xname )
+{
+ uint fw = 4;
+ if (ld->reflist)
+ {
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ le_track_t *lt = *plt;
+ ccp name = use_xname ? GetXName2LT(lt,"") : lt->name;
+ uint nlen = strlen8(name) + GetEscapeLen(name,-1,CHMD__MODERN,'"');
+ if ( fw < nlen )
+ fw = nlen;
+ }
+ }
+ return fw;
+}
+
+//-----------------------------------------------------------------------------
+
+enumError CreateNamesLD ( FILE *f, le_distrib_t *ld, bool use_xname )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ SortByCupLD( ld, use_xname ? filter_xname2_td : filter_name_td, ld->spar.opt );
+
+ uint fw = GetNameFw(ld,use_xname) + 11;
+ fprintf(f,"\r\n%.*s\r\n Cup Name\r\n%.*s\r\n",
+ fw, Minus300, fw, Minus300 );
+
+ u32 prev_id = 0;
+ int count = 0, prev_cup = -1;
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ le_track_t *lt = *plt;
+
+ ccp name = use_xname ? GetXName2LT(lt,"") : lt->name;
+ u32 cur_id = GetPrefixIdByName(name,IsArenaLTTY(lt->track_type));
+ if (!count++)
+ prev_id = cur_id;
+
+ int cur_cup = lt->cup_slot / 10;
+
+ if ( prev_id != cur_id )
+ {
+ prev_id = cur_id;
+ prev_cup = cur_cup;
+ fprintf(f,"\r\n%.*s\r\n\r\n",fw,Minus300);
+ }
+ else if ( prev_cup != cur_cup )
+ {
+ prev_cup = cur_cup;
+ fputs("\r\n",f);
+ }
+
+ exmem_t esc = EscapeStringEx(name,-1,EmptyString,EmptyString,CHMD__MODERN,0,false);
+ fprintf(f,"%s %s\r\n", GetCupAlignLT(lt), esc.data.ptr);
+ FreeExMem(&esc);
+ }
+
+ if ( count > 1 )
+ fprintf(f,"\r\n%.*s\r\n\r\n",fw,Minus300);
+ else
+ fputs("\r\n",f);
+
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateInfoLD ( FILE *f, le_distrib_t *ld, bool use_xname )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ DumpCupSlots(ld,"before sort");
+ SortByCupLD( ld, use_xname ? filter_xname2_td : filter_name_td, ld->spar.opt );
+ DumpCupSlots(ld,"behind sort");
+
+ uint fw = GetNameFw(ld,use_xname) + 33;
+ fprintf(f,"\r\n%.*s\r\n()\t Cup Prop\tMusic\tName\r\n%.*s\r\n",
+ fw, Minus300, fw, Minus300 );
+
+ u32 prev_id = 0;
+ int count = 0, prev_cup = -1;
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ le_track_t *lt = *plt;
+
+ ccp name = use_xname ? GetXName2LT(lt,"") : lt->name;
+ u32 cur_id = GetPrefixIdByName(name,IsArenaLTTY(lt->track_type));
+ if (!count++)
+ prev_id = cur_id;
+
+ int cur_cup = lt->cup_slot / 10;
+
+ if ( prev_id != cur_id )
+ {
+ prev_id = cur_id;
+ prev_cup = cur_cup;
+ fprintf(f,"\r\n%.*s\r\n\r\n",fw,Minus300);
+ }
+ else if ( prev_cup != cur_cup )
+ {
+ prev_cup = cur_cup;
+ fputs("\r\n",f);
+ }
+
+ exmem_t esc = EscapeStringEx(name,-1,EmptyString,EmptyString,CHMD__MODERN,0,false);
+ fprintf(f,"()\t%s %s\t%s\t%s\r\n",
+ GetCupAlignLT(lt),
+ PrintPropertyID(lt->property,false),
+ PrintMusicID(lt->music,false),
+ esc.data.ptr );
+ FreeExMem(&esc);
+ }
+
+ if ( count > 1 )
+ fprintf(f,"\r\n%.*s\r\n\r\n",fw,Minus300);
+ else
+ fputs("\r\n",f);
+
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateSha1LD
+ ( FILE *f, le_distrib_t *ld, bool use_xname, bool add_comments )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ UpdateCupsLD(ld);
+ SetupReferenceList(ld,filter_options_td,ld->spar.opt);
+
+ static char sep[] = "#----------\r\n";
+
+ if (add_comments)
+ {
+ fprintf(f,
+ "%s\r\n"
+ "# A SHA1 list, that can be used for example @ Wiimmfi.de\r\n"
+ ,LE_SHA1REF_MAGIC8 );
+
+ ccp filter = GetOutputFilterLEO(ld->spar.opt&LEO_M_OUTPUT);
+ if ( filter && *filter )
+ fprintf(f,"# Active output filter: %s\r\n",filter);
+
+ fputs( "# Columns: TYPE FLAGS SHA1 TRACK_SLOT CUP NAME\r\n"
+ "# During the import, only the first 4 columns are evaluated.\r\n"
+ "# Flags: d:is _d file / t:title only / h:hidden / o:original track\r\n"
+ ,f );
+ }
+
+ int count = 0, prev_type = 99;
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ const le_track_t *lt = *plt;
+
+ if ( prev_type != lt->track_type )
+ {
+ prev_type = lt->track_type;
+ fputs( add_comments ? sep : "\r\n", f );
+ }
+
+ const int max = ld->spar.opt & LEO_NO_D_FILES ? 0 : 1;
+ for ( int d = 0; d <= max; d++ )
+ {
+ const le_track_id_t *lti = lt->lti + d;
+ if ( lti->have_sha1 )
+ {
+ count++;
+ sha1_hex_t hex;
+ Sha1Bin2Hex(hex,lti->sha1bin);
+
+ ccp name = use_xname ? GetXName2LT(lt,0) : GetNameLT(lt,0);
+ exmem_t esc = EscapeStringEx(name,-1,EmptyString,EmptyString,CHMD__MODERN,0,false);
+
+ fprintf(f,"%s %c%c%c%c %s %4d %s %s\r\n",
+ GetNameLTTY(lt->track_type),
+ d ? 'd' : '-',
+ IsTitleLETF(lt->flags) ? 't' : '-',
+ IsHiddenLETF(lt->flags) ? 'h' : '-',
+ lti->orig_sha1 ? 'o' : '-',
+ hex, lt->track_slot, GetCupAlignLT(lt),
+ esc.data.ptr );
+ FreeExMem(&esc);
+ }
+ }
+ }
+
+ if ( count > 3 && add_comments )
+ fprintf(f,"%s# %u records total\r\n",sep,count);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateCtDefLD ( FILE *f, le_distrib_t *ld )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ UpdateCupsLD(ld);
+ const bool have_wiimm_cup = HaveWiimmCupLD(ld);
+
+ fprintf(f,text_ledis_ctdef_header_cr,CT_DEF_MAGIC8,have_wiimm_cup);
+
+ int prev_cup = 0, tidx = (8+have_wiimm_cup)*4;
+ for ( int slot = BMG_LE_FIRST_CTRACK; slot < ld->tlist_used; slot++ )
+ {
+ le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !lt || lt->track_status < LTS_EXPORT )
+ continue;
+ char type;
+ if (IsHiddenLETF(lt->flags))
+ type = 'H';
+ else
+ {
+ type = 'T';
+ const int cur_cup = tidx++/4;
+ if ( prev_cup != cur_cup )
+ {
+ prev_cup = cur_cup;
+ fprintf(f,"\r\nC \"Cup %u\"\r\n",cur_cup);
+ }
+ }
+
+ fprintf(f,"%c %s\t; %s\t; 0x%02x\t; %s; %s; %s; %s\r\n",
+ type,
+ PrintMusicID(lt->music,false),
+ PrintPropertyID(lt->property,false),
+ lt->flags,
+ QuoteFileLT(lt,""),
+ QuoteNameLT(lt,""),
+ QuoteIdentLT(lt,false,true,""),
+ QuoteXNameLT(lt,"") );
+ }
+
+ fputs("\r\n",f);
+
+ extern const char text_ctcode_setup_arena_cr[];
+ int count = 0;
+ for ( int slot = MKW_ARENA_BEG; slot < MKW_ARENA_END; slot++ )
+ {
+ le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !lt || lt->track_status < LTS_EXPORT || HaveUsualBattleSlots(lt) <= 0 )
+ continue;
+
+ if (!count++)
+ fprintf(f,"\r\n%s",text_ctcode_setup_arena_cr);
+
+ fprintf(f,"%s\t%s\t%s\t# A%u\r\n",
+ PrintPropertyID(lt->track_slot,false),
+ PrintPropertyID(lt->property,false),
+ PrintMusicID(lt->music,false),
+ lt->cup_slot );
+ }
+ if (count)
+ fputs("\r\n",f);
+
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static void print_ledef_text
+ ( FILE *f, const le_distrib_t *ld, int max_len, ccp name, ccp text )
+{
+ DASSERT(f);
+ DASSERT(ld);
+ DASSERT(name);
+
+ if (IsOutputNameValidLEO(text,ld->spar.opt))
+ {
+ ccp esc = EscapeStringS(text,"",CHMD__MODERN);
+ const int n_tabs = ( max_len - strlen8(name) ) / 8;
+ if ( n_tabs > 0 )
+ fprintf(f,"\t%s%.*s\"%s\"\r\n",name,n_tabs,Tabs20,esc);
+ else
+ fprintf(f,"\t%s \"%s\"\r\n",name,esc);
+ FreeString(esc);
+ }
+}
+
+//-----------------------------------------------------------------------------
+
+static void print_ledef_track
+ ( FILE *f, const le_distrib_t *ld, const le_track_t *lt )
+{
+ DASSERT(f);
+ DASSERT(ld);
+ DASSERT(lt);
+
+ char comment[30], *dest = comment;
+ if ( lt->lti[0].orig_sha1 )
+ dest = StringCopyE(dest,comment+sizeof(comment),", original");
+ if ( IsHiddenLETF(lt->flags) )
+ dest = StringCopyE(dest,comment+sizeof(comment),", hidden");
+ *dest = 0;
+
+ ccp type = GetNameLTTY(lt->track_type);
+ fprintf(f,"\r\nTRACK %s%u\t%s\t%s\t%s\t\"%s\"%s%s\r\n",
+ type,
+ lt->track_slot,
+ type,
+ PrintPropertyID(lt->property,false),
+ PrintMusicID(lt->music,false),
+ PrintLEFT(lt->flags),
+ *comment ? "\t#" : "",
+ *comment ? comment+1 : "" );
+
+ #if LE_STRING_SET_ENABLED
+ int max_len = 0;
+ ParamFieldItem_t *set_end = lt->str_set.field + lt->str_set.used;
+ if (lt->str_set.used)
+ {
+ for ( ParamFieldItem_t *ptr = lt->str_set.field; ptr < set_end; ptr++ )
+ if (IsOutputNameValidLEO(ptr->data,ld->spar.opt))
+ {
+ const int slen = strlen8(ptr->key);
+ if ( max_len < slen )
+ max_len = slen;
+ }
+ }
+ max_len = ( max_len + 18 ) / 8 * 8 - 1;
+ #else
+ int max_len = 7;
+ #endif
+
+ print_ledef_text(f,ld,max_len,"ident",GetIdentLT(lt,false,true,0));
+ print_ledef_text(f,ld,max_len,"file",GetFileLT(lt,0));
+ print_ledef_text(f,ld,max_len,"name",GetNameLT(lt,0));
+ print_ledef_text(f,ld,max_len,"xname",GetXNameLT(lt,0));
+
+ #if LE_STRING_LIST_ENABLED
+ for ( int ltt = LTT__LIST_BEG; ltt < LTT__LIST_END; ltt++ )
+ {
+ ccp *ptr = GetPtrOptLT(lt,ltt,true);
+ if ( ptr && *ptr )
+ print_ledef_text(f,ld,max_len,GetLowerNameLTT(ltt),GetListLT(lt,ltt,0));
+ }
+ #endif
+
+ #if LE_STRING_SET_ENABLED
+ if (lt->str_set.used)
+ {
+ max_len -= 2;
+ for ( ParamFieldItem_t *ptr = lt->str_set.field; ptr < set_end; ptr++ )
+ if (IsOutputNameValidLEO(ptr->data,ld->spar.opt))
+ {
+ ccp esc = EscapeStringS(ptr->data,"",CHMD__MODERN);
+ const int n_tabs = ( max_len - strlen8(ptr->key) ) / 8;
+ if ( n_tabs > 0 )
+ fprintf(f,"\t[%s]%.*s\"%s\"\r\n",ptr->key,n_tabs,Tabs20,esc);
+ else
+ fprintf(f,"\t[%s] \"%s\"\r\n",ptr->key,esc);
+ FreeString(esc);
+ }
+ }
+ #endif
+
+}
+
+//-----------------------------------------------------------------------------
+
+static void print_ledef_cup
+ ( FILE *f, le_distrib_t *ld, const le_cup_t *lc, int sep_index )
+{
+ DASSERT(f);
+ DASSERT(cup);
+ DASSERT(title);
+
+ if (!lc->used)
+ return;
+
+
+ //--- get field widths
+
+ int max = LE_FIRST_CT_SLOT;
+ for ( int i = 0; i < lc->used; i++ )
+ {
+ le_cup_ref_t *ref = GetLECUP(lc,i);
+ if (ref)
+ for ( int t = 0; t < lc->tracks; t++ )
+ if ( max < ref[t] )
+ max = ref[t];
+ }
+
+ char buf[20];
+ const int fw_cup = snprintf(buf,sizeof(buf),"%d",lc->used-1);
+ const int fw_track = snprintf(buf,sizeof(buf),"%d",max) + 2;
+
+
+ //--- print cups
+
+ ccp sep = "";
+ int count = 0, next_sep = -1;
+ const int cup_end = lc->used;
+ for ( int i = 0; i < cup_end; i++ )
+ {
+ le_cup_ref_t *ref = GetLECUP(lc,i);
+ if ( i+2 <= cup_end && !memcmp(standard_bt_ref,ref,sizeof(standard_bt_ref)) )
+ {
+ fputs(sep,f);
+ fputs("# 2 battle cups with standard layout (STANDARD-BATTLE-CUPS):\r\n",f);
+ next_sep = count+2;
+ }
+ else if ( i+8 <= cup_end && !memcmp(standard_vs_ref,ref,sizeof(standard_vs_ref)) )
+ {
+ fputs(sep,f);
+ fputs("# 8 versus cups with standard layout (STANDARD-VERSUS-CUPS):\r\n",f);
+ next_sep = count+8;
+ }
+ else if ( !memcmp(mkwfun_random_ref,ref,sizeof(mkwfun_random_ref)) )
+ {
+ fputs(sep,f);
+ fputs("# 1 versus cup with standard MKW-Fun random slots (MKWFUN-RANDOM-CUP):\r\n",f);
+ next_sep = count+1;
+ }
+
+ if (ref)
+ {
+ if ( count == next_sep || count >= next_sep && count == sep_index )
+ fputs(sep,f);
+ count++;
+ sep = "\r\n";
+
+ fputs("APPEND",f);
+ for ( int t = 0; t < lc->tracks; t++ )
+ {
+ const int slot = ref[t];
+ ccp info = "-1";
+ if ( slot >= 0 )
+ {
+ const le_track_t *lt = GetTrackLD(ld,slot);
+ if ( IsActiveLT(lt) )
+ {
+ if ( lt->track_status == LTS_FILL )
+ info = "fill";
+ else
+ info = GetSlotNameLT(lt);
+ }
+ }
+ fprintf(f,"\t%*s",fw_track,info);
+ }
+ fprintf(f,"\t# %*d\r\n",fw_cup,i);
+ }
+ }
+ fputs(sep,f);
+}
+
+//-----------------------------------------------------------------------------
+
+enumError CreateLeDefLD ( FILE *f, le_distrib_t *ld )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ UpdateCupsLD(ld);
+ AnalyzeLD(ld,true);
+ const bool be_verbose = !(ld->spar.opt & LEO_BRIEF);
+
+ if (be_verbose)
+ fprintf(f,text_ledis_ledef_header_cr,LE_DEFINE_MAGIC8);
+ else
+ fprintf(f,"%s\r\n",LE_DEFINE_MAGIC8);
+
+ PrintSectionTool(f,be_verbose);
+
+ //-- TRACK-LIST
+
+ if (be_verbose)
+ fprintf(f,text_ledis_ledef_track_list_cr);
+ else
+ fprintf(f,"\r\n[TRACK-LIST]\r\n");
+
+ // battle arenas
+
+ ccp info = "\r\n#--- battle arenas\r\n";
+ int first = MKW_ARENA_BEG;
+ if (ld->ana.bt.orig_tracks)
+ {
+ first = MKW_ARENA_END;
+ fprintf(f,"%s\r\nSTANDARD-BATTLE-ARENAS\r\n",info);
+ info = 0;
+ }
+
+ for ( int slot = first; slot < ld->tlist_used; slot++ )
+ {
+ const le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !lt || lt->track_status < LTS_EXPORT || !IsArenaLTTY(lt->track_type) )
+ continue;
+
+ if (info)
+ {
+ fputs(info,f);
+ info = 0;
+ }
+
+ print_ledef_track(f,ld,lt);
+ }
+
+ // versus tracks
+
+ info = "\r\n#--- versus tracks\r\n";
+ first = MKW_TRACK_BEG;
+ if (ld->ana.vs.orig_tracks)
+ {
+ first = MKW_TRACK_END;
+ fprintf(f,"%s\r\nSTANDARD-VERSUS-TRACKS\r\n",info);
+ info = 0;
+ }
+
+ for ( int slot = first; slot < ld->tlist_used; slot++ )
+ {
+ const le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !lt || lt->track_status < LTS_EXPORT || IsArenaLTTY(lt->track_type) )
+ continue;
+
+ if (info)
+ {
+ fputs(info,f);
+ info = 0;
+ }
+
+ print_ledef_track(f,ld,lt);
+ }
+
+ fputs("\r\n",f);
+
+
+ //-- CUP-LIST
+
+ if (be_verbose)
+ fprintf(f,text_ledis_ledef_cup_list_cr);
+ else
+ fprintf(f,"\n\r\n[CUP-LIST]\r\n\r\n");
+
+ // battle cups
+
+ fputs("#--- battle cups\r\n\r\n",f);
+ print_ledef_cup(f,ld,&ld->cup_battle,2);
+
+ fprintf(f,
+ "# Append unused battle arenas automatically (0=NO/1=YES):\r\n"
+ "ADD-UNUSED-ARENAS = %s\r\n"
+ "\r\n"
+ ,ld->ana.bt.add_unused ? "yes" : "no"
+ );
+
+ // versus cups
+
+ fputs("#--- versus cups\r\n\r\n",f);
+ print_ledef_cup(f,ld,&ld->cup_versus,8);
+
+ fprintf(f,
+ "# Append unused versus tracks automatically (0=NO/1=YES):\r\n"
+ "ADD-UNUSED-TRACKS = %s\r\n"
+ "\r\n"
+ ,ld->ana.vs.add_unused ? "yes" : "no"
+ );
+
+
+ //-- END
+
+ if (be_verbose)
+ fputs("\r\n#\f\r\n###########\r\n [END]\r\n###########\r\n",f);
+ else
+ fputs("\r\n[END]\r\n",f);
+
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateLecode4LD ( ccp fname, le_distrib_t *ld )
+{
+ if ( !fname || !ld )
+ return ERR_MISSING_PARAM;
+
+ ccp at = strrchr(fname,'@');
+ if (!at)
+ return ERROR0(ERR_WARNING,"Missing '@' in filename: %s\n",fname);
+
+ char path[PATH_MAX];
+ if ( strlen(fname) > sizeof(path) - 4 )
+ return ERROR0(ERR_WARNING,"Filename too long: %s\n",fname);
+
+ char *tag = path + (at-fname);
+ memcpy(path,fname,tag-path);
+ strncpy(tag+3,at+1,path+sizeof(path)-tag-3);
+
+ for ( le_region_t reg = LEREG__BEG; reg <= LEREG__END; reg++ )
+ {
+ memcpy(tag,GetNameLEREG(reg,"@@@"),3);
+ File_t F;
+ enumError err = CreateFileOpt(&F,true,path,false,0);
+ if (!err)
+ err = CreateLecodeLD(F.f,ld,reg);
+ if (err)
+ return err;
+ }
+
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateLecodeLD ( FILE *f, le_distrib_t *ld, le_region_t region )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ UpdateCupsLD(ld);
+
+ mem_t lecode = GetLecodeLD(ld,region);
+ if (!lecode.ptr)
+ return ERR_MISSING_PARAM;
+
+ le_analyse_t ana;
+ u8 *data = MEMDUP(lecode.ptr,lecode.len);
+ if (!AnalyseLEBinary(&ana,data,lecode.len))
+ {
+ ExportAnaLD(ld,&ana);
+ fwrite(data,lecode.len,1,f);
+ }
+ FREE(data);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateLeInfoLD ( FILE *f, const le_distrib_t *ld, bool list_only )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ if (!list_only)
+ {
+ const ColorSet_t *colset = GetFileColorSet(f);
+ fprintf(f,"\r\n%sCurrent LE-CODE binaries:%s\r\n\r\n",colset->caption,colset->reset);
+ }
+
+ for ( le_region_t reg = LEREG__BEG; reg <= LEREG__END; reg++ )
+ {
+ mem_t builtin = GetLecodeLEREG(reg);
+ mem_t current = GetLecodeLD(ld,reg);
+ if ( current.ptr )
+ fprintf(f," %s, %s\r\n",
+ GetInfoLECODE(current),
+ current.ptr == builtin.ptr ? "built-in" : "loaded" );
+ }
+ fputs("\r\n",f);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateLparLD ( FILE *f, le_distrib_t *ld, bool print_full )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ SetupLparLD(ld,true);
+ return SaveTextFileLPAR(ld->lpar,f,print_full);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateBmgLD ( FILE *f, le_distrib_t *ld, bool bmg_text )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ bmg_t bmg;
+ InitializeBMG(&bmg);
+
+ le_options_t source = ld->spar.opt & LEO_M_BMG;
+ if (!source)
+ source = LEO_M_BMG;
+
+ for ( int slot = 0; slot < ld->tlist_used; slot++ )
+ {
+ le_track_t *lt = GetTrackLD(ld,slot);
+ if ( !lt || lt->track_status < LTS_EXPORT )
+ continue;
+
+ ccp text = GetTextLT(lt,&ld->spar,0);
+ if (!IsOutputNameValidLEO(text,ld->spar.opt))
+ continue;
+
+ PRINT0("SLOT %d: %s\n",slot,text);
+
+ if ( source & LEO_MKW1 )
+ {
+ const u32 mid = IsMkwTrack(slot)
+ ? slot+MID_TRACK1_BEG
+ : IsMkwArena(slot)
+ ? slot-BMG_N_TRACK+MID_ARENA1_BEG
+ : 0;
+
+ if (mid)
+ {
+ bmg_item_t *bi = InsertItemBMG(&bmg,mid,0,0,0);
+ ASSERT(bi);
+ AssignItemTextBMG(bi,text,-1);
+ }
+ }
+
+ if ( source & LEO_MKW2 )
+ {
+ const u32 mid = IsMkwTrack(slot)
+ ? slot+MID_TRACK2_BEG
+ : IsMkwArena(slot)
+ ? slot-BMG_N_TRACK+MID_ARENA2_BEG
+ : 0;
+
+ if (mid)
+ {
+ bmg_item_t *bi = InsertItemBMG(&bmg,mid,0,0,0);
+ ASSERT(bi);
+ AssignItemTextBMG(bi,text,-1);
+ }
+ }
+
+ if ( source & LEO_CTCODE && slot < BMG_N_CT_TRACK )
+ {
+ bmg_item_t *bi = InsertItemBMG(&bmg,slot+MID_CT_TRACK_BEG,0,0,0);
+ ASSERT(bi);
+ AssignItemTextBMG(bi,text,-1);
+ }
+
+ if ( source & LEO_LECODE )
+ {
+ bmg_item_t *bi = InsertItemBMG(&bmg,slot+MID_LE_TRACK_BEG,0,0,0);
+ ASSERT(bi);
+ AssignItemTextBMG(bi,text,-1);
+ }
+ }
+
+ enumError err = bmg_text || isatty(fileno(f))
+ ? SaveTextFileBMG( &bmg, f, 0, long_count > 0,
+ brief_count > 0 ? brief_count : !print_header )
+ : SaveRawFileBMG(&bmg,f,0);
+
+ ResetBMG(&bmg);
+ return err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static void debug_cups ( FILE *f, const le_cup_t *lc )
+{
+ fprintf(f,"%6u (0x%x) cups used, %u (0x%x) alloced (%s)\r\n",
+ lc->used, lc->used, lc->size, lc->size,
+ PrintSize1000(0,0,lc->size*sizeof(*lc->list)*lc->tracks,0) );
+
+ if (!lc->used)
+ return;
+
+ u16 count[LE_MAX_TRACKS] = {0};
+ int slots_used = 0, different = 0, max_use = 0;
+
+ const le_cup_ref_t *end = lc->list + lc->used * lc->tracks;
+ for ( const le_cup_ref_t *ptr = lc->list; ptr < end; ptr++ )
+ {
+ uint idx = *ptr;
+ if ( idx < LE_MAX_TRACKS )
+ {
+ slots_used++;
+ if (!count[idx]++)
+ different++;
+ if ( max_use < count[idx] )
+ max_use = count[idx];
+ }
+ }
+
+ fprintf(f,"%6u slots total, %u slots used.\r\n",
+ lc->used*lc->tracks, slots_used );
+ fprintf(f,"%6u different track references, max %u for one track.\r\n",
+ different, max_use );
+}
+
+//-----------------------------------------------------------------------------
+
+enumError CreateDebugLD ( FILE *f, const le_distrib_t *ld )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ const ColorSet_t *colset = GetFileColorSet(f);
+
+ //--- basics
+
+ fprintf(f,"\r\n%sBasic settings:%s\r\n",colset->caption,colset->reset);
+ fprintf(f,
+ " Current auto-setup: 0x%x\r\n"
+ " Current options: %s\r\n"
+ ,ld->auto_setup
+ ,GetOptionsLSP(&ld->spar,LEO__ALL)
+ );
+
+
+ //--- tracks
+
+ fprintf(f,"\r\n%sTracks:%s\r\n",colset->caption,colset->reset);
+ fprintf(f," %u (0x%x) tracks used, %u (0x%x) alloced (%s)\r\n",
+ ld->tlist_used, ld->tlist_used, ld->tlist_size, ld->tlist_size,
+ PrintSize1000(0,0,ld->tlist_size*sizeof(*ld->tlist),0) );
+
+ uint n_status[LTS__N] = {0};
+ uint n_arena = 0, n_track = 0, n_random = 0;
+ uint n_text[LTT__N] = {0}, size_text[LTT__N] = {0};
+ uint n_sha1 = 0, n_sha1_d = 0;
+
+ #if LE_STRING_SET_ENABLED
+ typedef struct count_t { uint n; uint size; } count_t;
+ exmem_list_t str_count;
+ InitializeEML(&str_count);
+ #endif
+
+ le_track_t *lt = ld->tlist;
+ for ( int slot = 0; slot < ld->tlist_used; slot++, lt++ )
+ {
+ if ( lt->track_status < LTS__N )
+ n_status[lt->track_status]++;
+
+ if ( lt->track_status < LTS_ACTIVE )
+ continue;
+
+ if ( lt->track_type & LTTY_ARENA ) n_arena++;
+ if ( lt->track_type & LTTY_TRACK ) n_track++;
+ if ( lt->track_type & LTTY_RANDOM ) n_random++;
+
+ if (lt->lti[0].have_sha1) n_sha1++;
+ if (lt->lti[1].have_sha1) n_sha1_d++;
+
+ for ( int ltt = 0; ltt < LTT__N; ltt++ )
+ {
+ ccp *ptr = GetPtrOptLT(lt,ltt,true);
+ if ( ptr && *ptr )
+ {
+ n_text[ltt]++;
+ size_text[ltt] += GetGoodAllocSize(strlen(*ptr) + 1);
+ }
+ }
+
+ #if LE_STRING_SET_ENABLED
+ ParamFieldItem_t *end = lt->str_set.field + lt->str_set.used;
+ for ( ParamFieldItem_t *ptr = lt->str_set.field; ptr < end; ptr++ )
+ {
+ exmem_key_t *ek = FindInsertEML(&str_count,ptr->key,CPM_LINK,0);
+ if (!ek->data.data.ptr)
+ {
+ ek->data.data.ptr = CALLOC(1,sizeof(count_t));
+ ek->data.data.len = sizeof(count_t);
+ ek->data.is_alloced = true;
+ }
+ count_t *cnt = (count_t*)ek->data.data.ptr;
+ cnt->n++;
+ cnt->size += GetGoodAllocSize(strlen(ptr->data)+1);
+ }
+ #endif
+ }
+
+ fprintf(f,"%s Summaries by track status:%s\n",colset->heading,colset->reset);
+ for ( int i = 0; i < LTS__N; i++ )
+ if (n_status[i])
+ fprintf(f,"%8u of status %s\n",n_status[i],GetNameLTS(i));
+
+ fprintf(f,"%s Summaries by track type:%s\n",colset->heading,colset->reset);
+ if (n_arena) fprintf(f,"%8u of type BATTLE ARENA\n",n_arena);
+ if (n_track) fprintf(f,"%8u of type VERSUS TRACK\n",n_track);
+ if (n_random) fprintf(f,"%8u of type RANDOM\n",n_random);
+
+ fprintf(f,"%s String usage:%s\n",colset->heading,colset->reset);
+ if (n_sha1)
+ fprintf(f,"%8u string%c of type SHA1 (not alloced)\n",
+ n_sha1, n_sha1 == 1 ? ' ' : 's' );
+ if (n_sha1_d)
+ fprintf(f,"%8u string%c of type D-SHA1 (not alloced)\n",
+ n_sha1_d, n_sha1_d == 1 ? ' ' : 's' );
+
+ for ( int ltt = 0; ltt < LTT__N; ltt++ )
+ {
+ if (n_text[ltt])
+ {
+ char type[20];
+ snprintf(type,sizeof(type),"%s,",GetUpperNameLTT(ltt));
+ fprintf(f,"%8u string%c of type %-8s %s\n",
+ n_text[ltt], n_text[ltt] == 1 ? ' ' : 's',
+ type, PrintSize1000(0,0,size_text[ltt],DC_SFORM_ALIGN));
+ }
+ }
+
+ #if LE_STRING_SET_ENABLED
+ if (str_count.used)
+ {
+ fprintf(f,"%s String set usage:%s\n",colset->heading,colset->reset);
+ exmem_key_t *end = str_count.list + str_count.used;
+ for ( exmem_key_t *ek = str_count.list; ek < end; ek++ )
+ {
+ count_t *cnt = (count_t*)ek->data.data.ptr;
+ fprintf(f,"%8u, %s : %s\n",
+ cnt->n, PrintSize1000(0,0,cnt->size,DC_SFORM_ALIGN), ek->key );
+ }
+ }
+ #endif // LE_STRING_SET_ENABLED
+
+ //--- cups
+
+ fprintf(f,"\r\n%sBattle Cups:%s\r\n",colset->caption,colset->reset);
+ debug_cups(f,&ld->cup_battle);
+
+ fprintf(f,"\r\n%sVersus Cups:%s\r\n",colset->caption,colset->reset);
+ debug_cups(f,&ld->cup_versus);
+
+ //--- misc
+
+ fprintf(f,"\r\n%sCurrent LE-CODE binaries:%s\r\n",colset->caption,colset->reset);
+ CreateLeInfoLD(f,ld,true);
+
+ //--- terminate
+
+ #if LE_STRING_SET_ENABLED
+ ResetEML(&str_count);
+ #endif
+
+ return ERR_OK;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: text jobs ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError SubstLD ( le_distrib_t *ld, const le_strpar_t *dest, ccp arg )
+{
+ if ( !ld || !dest || !arg || !*arg )
+ return ERR_MISSING_PARAM;
+
+ //--- setup
+
+ Regex_t re;
+ enumError err = ScanRegex(&re,true,arg);
+ PRINT0("err=%d, valid=%d\n",err,re.valid);
+ if ( err || !re.valid )
+ {
+ ResetRegex(&re);
+ return err ? err : ERR_INVALID_DATA;
+ }
+
+ struct { FastBuf_t b; char space[1000]; } result;
+ InitializeFastBuf(&result,sizeof(result));
+
+ SetupReferenceList(ld,filter_options_td,dest->opt);
+
+ //--- main loop
+
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ le_track_t *lt = *plt;
+ if ( lt->track_status < LTS_EXPORT )
+ continue;
+
+ ccp text = GetTextLT(lt,dest,0);
+ if ( text && *text )
+ {
+ ReplaceRegex(&re,&result.b,text,-1);
+ SetTextLT(lt,dest,result.b.buf);
+ }
+ }
+
+ //--- terminate
+
+ ResetRegex(&re);
+ ResetFastBuf(&result.b);
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CopyLD ( le_distrib_t *ld, const le_strpar_t *dest,
+ const le_strpar_t *src, int n_src )
+{
+ if ( !ld || !dest || !src || n_src < 1 )
+ return ERR_MISSING_PARAM;
+
+ char buf[LE_TRACK_STRING_MAX+10];
+
+ SetupReferenceList(ld,filter_options_td,dest->opt);
+ for ( le_track_t **plt = ld->reflist; *plt; plt++ )
+ {
+ le_track_t *lt = *plt;
+ char *bufptr = buf;
+ for ( int idx = 0; idx < n_src; idx++ )
+ {
+ if ( bufptr > buf )
+ *bufptr++ = '\1';
+ ccp text = GetTextLT(lt,src+idx,0);
+ if (IsInputNameValidLEO(text,src[idx].opt))
+ bufptr = StringCopyE(bufptr,buf+sizeof(buf),text);
+ if ( bufptr >= buf + LE_TRACK_STRING_MAX )
+ {
+ buf[LE_TRACK_STRING_MAX-1] = 0;
+ break;
+ }
+ }
+
+ ccp *ptr = GetPtrLT(lt,dest);
+ if (IsAssignmentAllowedLEO( ptr ? *ptr : 0,buf,dest->opt))
+ SetTextLT(lt,dest,buf);
+ }
+ return ERR_OK;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: copy files ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enumError TransferFilesLD ( le_distrib_t *ld, bool logit, bool testmode )
+{
+ LogFile_t log0 = { .log = stdlog };
+ LogFile_t *log = logit ? &log0 : 0;
+
+ TransferMode_t flags = testmode ? TFMD_F_TEST : 0;
+
+ le_track_t *lt = ld->tlist;
+ for ( int slot = 0; slot < ld->tlist_used; slot++, lt++ )
+ if ( lt->track_status >= LTS_EXPORT )
+ {
+ ccp file = GetFileLT(lt,0);
+ if (file)
+ TransferTrackFile(log,lt->track_slot,file,flags);
+ }
+
+ // support for fill-tracks
+ TransferTrackBySlot(log,ld->cup_battle.fill_slot,ld->cup_battle.fill_src,flags);
+ TransferTrackBySlot(log,ld->cup_versus.fill_slot,ld->cup_versus.fill_src,flags);
+
+ return ERR_OK;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_distrib_t: distribution ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void UpdateDistribLD ( le_distrib_t *ld, bool overwrite )
+{
+ DASSERT(ld);
+ char buf[100];
+
+ UpdateCupsLD(ld);
+
+
+ //-- UUID
+
+ uuid_buf_t uuid;
+ bool create_uuid = overwrite;
+ if (!create_uuid)
+ {
+ const ParamFieldItem_t *it = FindParamField(&ld->dis_param,"UUID");
+ if ( !it || !it->data || ScanUUID(uuid,(ccp)it->data) == (ccp)it->data )
+ create_uuid = true;
+ }
+
+ if (create_uuid)
+ {
+ CreateTextUUID(buf,sizeof(buf));
+ ReplaceParamField(&ld->dis_param,"UUID",false,0,STRDUP(buf));
+ }
+
+
+ //-- time stamps
+
+ ccp tim = PrintTimeByFormat("%F %T %z",GetTimeSec(false));
+
+ if ( overwrite || !FindParamField(&ld->dis_param,"FIRST-CREATION") )
+ ReplaceParamField(&ld->dis_param,"FIRST-CREATION",false,0,STRDUP(tim));
+ ReplaceParamField(&ld->dis_param,"LAST-UPDATE",false,0,STRDUP(tim));
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool AddDistribParamLD ( le_distrib_t *ld, ccp src, ccp end )
+{
+ if ( !src || *src != '@' )
+ return false;
+
+ char name_buf[100], *name = name_buf;
+ src++;
+
+ //-- scan name
+
+ for(;;)
+ {
+ const char ch = *src;
+ if ( !isalnum(ch) && ch != '_' && ch != '-' && ch != '.' )
+ break;
+ src++;
+ if ( name < name_buf + sizeof(name_buf) - 1 )
+ *name++ = toupper(ch);
+ }
+
+ //-- skip spaces
+
+ while ( src < end && (uchar)*src <= ' ' )
+ src++;
+
+ //--- check for '='
+
+ if ( src < end && *src == '=' )
+ {
+ src++;
+ while ( src < end && (uchar)*src <= ' ' )
+ src++;
+ }
+
+ if ( name > name_buf )
+ {
+ PRINT0("@%.*s = |%.*s|\n",(int)(name-name_buf),name_buf,(int)(end-src),src);
+ ReplaceParamField( &ld->dis_param, MEMDUP(name_buf,name-name_buf),
+ true, 0, MEMDUP(src,end-src) );
+ }
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError ImportDistribLD ( le_distrib_t *ld, cvp data, uint size )
+{
+ if ( !ld || !data || !size )
+ return ERR_MISSING_PARAM;
+
+ ScanText_t st;
+ SetupScanText(&st,data,size);
+ const enumError err = ImportDistribSTLD(ld,&st);
+ ResetScanText(&st);
+ return err;
+}
+
+//-----------------------------------------------------------------------------
+
+enumError ImportDistribSTLD ( le_distrib_t *ld, ScanText_t *st )
+{
+ if ( !ld || !st )
+ return ERR_MISSING_PARAM;
+
+ while (NextLineScanText(st))
+ {
+ PRINT0("LINE: |%.*s|\n",(int)(st->eol-st->line),st->line);
+ if ( *st->line == '@' )
+ AddDistribParamLD(ld,st->line,st->eol);
+ else
+ ScanSha1LineLD(ld,st->line,st->eol,false);
+ }
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CreateDistribLD ( FILE *f, le_distrib_t *ld, bool use_xname )
+{
+ if ( !f || !ld )
+ return ERR_MISSING_PARAM;
+
+ UpdateDistribLD(ld,false);
+
+ ccp uuid = GetParamFieldStr(&ld->dis_param,1,"UUID","");
+ fprintf(f,text_distrib_head_cr
+
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT1","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT2","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT3","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT4","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT5","")
+
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-CT-WIIMM","")
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-WIIMMFI","")
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-CT-WIIKI","")
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-MISC","")
+ ,GetParamFieldStr(&ld->dis_param,1,"MAIL","")
+ ,GetParamFieldStr(&ld->dis_param,1,"NOTE-FOR-WIMMM","")
+
+ ,GetParamFieldStr(&ld->dis_param,1,"NAME","?")
+ ,GetParamFieldStr(&ld->dis_param,1,"VERSION","?")
+ ,GetParamFieldStr(&ld->dis_param,1,"AUTHORS","?")
+ ,GetParamFieldStr(&ld->dis_param,1,"RELEASE-DATE","")
+ ,GetParamFieldStr(&ld->dis_param,1,"KEYWORDS","")
+ ,GetParamFieldStr(&ld->dis_param,1,"PREDECESSOR","")
+
+ ,GetParamFieldStr(&ld->dis_param,1,"WIIMMFI-REGION","")
+ ,GetParamFieldStr(&ld->dis_param,1,"INFO-TEXT","")
+ ,GetParamFieldStr(&ld->dis_param,1,"INFO-URL","")
+
+ ,uuid
+ ,GetParamFieldIntMM(&ld->dis_param,1,"DISPLAY-MODE",3,0,3)
+ ,GetParamFieldIntMM(&ld->dis_param,1,"DATABASE-NAME",1,0,1)
+ ,GetParamFieldIntMM(&ld->dis_param,1,"VIEW-COMMENT",0,0,1)
+ ,GetParamFieldIntMM(&ld->dis_param,1,"ENABLE-NEW",0,0,1)
+ ,GetParamFieldIntMM(&ld->dis_param,1,"ENABLE-AGAIN",0,0,1)
+ ,GetParamFieldIntMM(&ld->dis_param,1,"ENABLE-FILL",0,0,1)
+ ,GetParamFieldIntMM(&ld->dis_param,1,"ENABLE-UPDATE",0,0,1)
+ ,GetParamFieldIntMM(&ld->dis_param,1,"ENABLE-BOOST",0,0,1)
+
+ ,uuid
+ ,VERSION
+ ,REVISION_NUM
+ ,GetParamFieldStr(&ld->dis_param,1,"FIRST-CREATION","")
+ ,GetParamFieldStr(&ld->dis_param,1,"LAST-UPDATE","")
+ );
+
+
+ //--- mark some more params as 'used'
+
+ GetParamFieldStr(&ld->dis_param,1,"WSZST-VERSION","");
+ GetParamFieldStr(&ld->dis_param,1,"WSZST-REVISION","");
+
+
+ //--- additional parameters
+
+ ccp info = text_distrib_param_cr;
+
+ const ParamFieldItem_t *it = ld->dis_param.field;
+ for ( int i = 0; i < ld->dis_param.used; i++, it++ )
+ if (!it->num)
+ {
+ int len = strlen(it->key);
+ ccp sep = len > 14 ? " " : len > 6 ? "\t" : "\t\t";
+ fprintf(f,"%s@%s%s= %s\r\n", info, it->key, sep, (ccp)it->data );
+ info = "";
+ }
+
+
+ //--- sha1 list of tracks and arenas
+
+ fputs(text_distrib_tracks_cr,f);
+ CreateSha1LD(f,ld,use_xname,false);
+ fputs("\r\n",f);
+
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+// lecode support
+
+void FreeLecodeLD ( le_distrib_t *ld, le_region_t reg )
+{
+ if ( !ld || reg < LEREG__BEG || reg > LEREG__END )
+ return;
+
+ const int idx = reg - LEREG__BEG;
+ if (ld->lecode_alloced[idx])
+ FREE((u8*)ld->lecode[idx].ptr);
+ ld->lecode[idx].ptr = 0;
+ ld->lecode[idx].len = 0;
+ ld->lecode_alloced[idx] = false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+mem_t AssignLecodeLD ( le_distrib_t *ld, le_region_t reg, cvp data, uint size )
+{
+ if ( !ld || reg < LEREG__BEG || reg > LEREG__END )
+ return NullMem;
+
+ FreeLecodeLD(ld,reg);
+ const int idx = reg - LEREG__BEG;
+ mem_t *lec = ld->lecode + idx;
+ if ( data && size )
+ {
+ lec->ptr = MEMDUP(data,size);
+ lec->len = size;
+ ld->lecode_alloced[idx] = true;
+ }
+
+ return *lec;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+mem_t GetLecodeLD ( const le_distrib_t *ld, le_region_t reg )
+{
+ if ( !ld || reg < LEREG__BEG || reg > LEREG__END )
+ return NullMem;
+
+ const int idx = reg - LEREG__BEG;
+ mem_t lecode = ld->lecode[idx];
+ if (!lecode.ptr)
+ lecode = GetLecodeLEREG(reg);
+ return lecode;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// ledis_dump support ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+int EnableLDUMP ( ccp filename )
+{
+ if ( ledis_dump_enabled >= 0 )
+ {
+ ledis_dump_enabled = 1;
+ if (filename)
+ {
+ FreeString(opt_create_dump);
+ opt_create_dump = STRDUP(filename);
+ }
+ }
+ return ledis_dump_enabled;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+enumError CloseLDUMP()
+{
+ enumError err = ERR_NOTHING_TO_DO;
+ if ( ledis_dump_enabled > 0 )
+ {
+ if ( opt_create_dump && *opt_create_dump && ledis_dump.tlist_used )
+ {
+ File_t F;
+ err = CreateFile(&F,true,opt_create_dump,FM_OVERWRITE|FM_STDIO|FM_TOUCH);
+ if (!err)
+ err = CreateRefLD(F.f,&ledis_dump,true);
+ CloseFile(&F,0);
+ }
+ ResetLD(&ledis_dump);
+ ledis_dump_enabled = -1;
+ }
+ return err;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportAnaLDUMP ( const le_analyse_t *ana )
+{
+ if ( ledis_dump_enabled > 0 )
+ ImportAnaLD(&ledis_dump,ana);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ImportCtcodeLDUMP ( const ctcode_t *ctcode )
+{
+ if ( ledis_dump_enabled > 0 )
+ ImportCtcodeLD(&ledis_dump,ctcode);
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct DistributionInfo_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void InitializeDistributionInfo
+ ( DistributionInfo_t * dinf, bool add_default_param )
+{
+ DASSERT(dinf);
+ memset(dinf,0,sizeof(*dinf));
+ InitializeLD(&dinf->ld);
+ InitializeParamField(&dinf->translate);
+ dinf->translate.free_data = true;
+
+ uint slot;
+ for ( slot = 0; slot < MAX_DISTRIBUTION_ARENA; slot++ )
+ {
+ ParamField_t *pf = dinf->arena + slot;
+ InitializeParamField(pf);
+ pf->free_data = true;
+ }
+
+ for ( slot = 0; slot < MAX_DISTRIBUTION_TRACK; slot++ )
+ {
+ ParamField_t *pf = dinf->track + slot;
+ InitializeParamField(pf);
+ pf->free_data = true;
+ }
+
+ if (add_default_param)
+ AddParamDistributionInfo(dinf,true);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ResetDistributionInfo ( DistributionInfo_t * dinf )
+{
+ if (dinf)
+ {
+ ResetParamField(&dinf->translate);
+ ResetLD(&dinf->ld);
+
+ uint slot;
+ for ( slot = 0; slot < MAX_DISTRIBUTION_ARENA; slot++ )
+ ResetParamField(dinf->arena+slot);
+ for ( slot = 0; slot < MAX_DISTRIBUTION_TRACK; slot++ )
+ ResetParamField(dinf->track+slot);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void AddParamDistributionInfo ( DistributionInfo_t * dinf, bool overwrite )
+{
+ DASSERT(dinf);
+ UpdateDistribLD(&dinf->ld,overwrite);
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// slot translation ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+char * ScanSlot ( uint *res_slot, ccp source, bool need_point )
+{
+ DASSERT(res_slot);
+ DASSERT(source);
+ *res_slot = 0;
+
+ char *end;
+ uint slot = strtoul(source,&end,10);
+ if ( !need_point
+ && slot >= MIN_DISTRIBUTION_SLOT
+ && slot < MAX_DISTRIBUTION_TRACK
+ && (uchar)*end <= ' '
+ && ( end-source == 2 || end-source == 3 ))
+ {
+ *res_slot = slot;
+ return end;
+ }
+
+ slot *= 10;
+ if ( slot < MIN_DISTRIBUTION_SLOT || slot >= MAX_DISTRIBUTION_TRACK || *end != '.' )
+ return (char*)source;
+
+ uint track = strtoul(end+1,&end,10);
+ slot += track;
+ if ( track < 1 || track > 9 || slot >= MAX_DISTRIBUTION_TRACK )
+ return (char*)source;
+
+ *res_slot = slot;
+ while ( *end == ' ' || *end == '\t' )
+ end++;
+ return end;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void NormalizeSlotTranslation ( char *buf, uint bufsize, ccp name,
+ char ** p_first_para, char ** p_first_brack )
+{
+ DASSERT(buf);
+ DASSERT(bufsize>10);
+
+ if (!name)
+ name = "";
+
+ char *dest = buf, *buf_end = buf + bufsize - 4;
+ char *first_para = 0;
+ char *first_brack = 0;
+
+ uint have_space = 0;
+ while ( *name && dest < buf_end )
+ {
+ int ch = (uchar)*name++;
+ switch(ch)
+ {
+ case ' ':
+ case '_':
+ case '-':
+ case '+':
+ have_space++;
+ break;
+
+ case '\'':
+ break; // ignore
+
+ case '[':
+ if (!first_brack)
+ first_brack = dest;
+ goto bracket;
+
+ case '(':
+ if (!first_para)
+ first_para = dest;
+ // fall through
+
+ case '{':
+ bracket:
+ ch = '(';
+ // fall through
+
+ case '.':
+ if (have_space)
+ {
+ have_space = 0;
+ *dest++ = ' ';
+ }
+ *dest++ = ch;
+ break;
+
+ case '}':
+ case ')':
+ case ']':
+ *dest++ = ')';
+ break;
+
+ default:
+ ch = tolower(ch);
+ if ( ch >= 'a' && ch <= 'z' || ch >= '0' && ch <= '9' )
+ {
+ if (have_space)
+ {
+ have_space = 0;
+ *dest++ = ' ';
+ }
+ *dest++ = ch;
+ }
+ break;
+ }
+ }
+
+ if ( dest > buf )
+ {
+ if ( dest > buf+4 && !memcmp(dest-4,".szs",4) || !memcmp(dest-4,".wbz",4) )
+ dest -= 4;
+ if ( dest > buf+2 && !memcmp(dest-2,"_d",2) )
+ dest -= 2;
+ *dest = 0;
+
+ if ( first_brack)
+ {
+ if ( first_brack >= dest )
+ first_brack = 0;
+ else
+ dest = first_brack;
+ }
+
+ if ( first_para >= dest )
+ first_para = 0;
+ }
+ else
+ first_para = first_brack = 0;
+
+ if (p_first_para)
+ *p_first_para = first_para;
+ if (p_first_brack)
+ *p_first_brack = first_brack;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+uint DefineSlotTranslation
+ ( ParamField_t *translate, bool is_arena, uint slot, ccp name )
+{
+ DASSERT(translate);
+ if (!name)
+ return 0;
+
+ if (is_arena)
+ {
+ if ( slot >= MAX_DISTRIBUTION_ARENA )
+ slot = 0;
+ else
+ slot += DISTRIBUTION_ARENA_DELTA;
+ }
+ else
+ {
+ if ( slot >= MAX_DISTRIBUTION_TRACK )
+ slot = 0;
+ }
+
+ char buf[1000];
+ char *first_para = 0, *first_brack = 0;
+ NormalizeSlotTranslation(buf,sizeof(buf),name,&first_para,&first_brack);
+
+ uint count = 0;
+ if (*buf)
+ {
+ ReplaceParamField(translate,buf,false,slot,0);
+ count++;
+
+ if (first_brack)
+ {
+ *first_brack = 0;
+ ReplaceParamField(translate,buf,false,slot,0);
+ count++;
+ }
+
+ if (first_para)
+ {
+ *first_para = 0;
+ ReplaceParamField(translate,buf,false,slot,0);
+ count++;
+ }
+ }
+
+ return count;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+#undef EARLY_NUM_SLOT
+#define EARLY_NUM_SLOT 1
+
+int FindSlotByTranslation ( const ParamField_t *translate, ccp fname, ccp sha1 )
+{
+ DASSERT(translate);
+ ccp slash = strrchr(fname,'/');
+ if (slash)
+ fname = slash+1;
+
+ #if EARLY_NUM_SLOT
+ uint slot;
+ ScanSlot(&slot,fname,false);
+ if (slot)
+ return slot;
+ #endif
+
+ char buf[1000];
+
+ char *first_para = 0, *first_brack = 0;
+ NormalizeSlotTranslation(buf,sizeof(buf),fname,&first_para,&first_brack);
+ const ParamFieldItem_t *it = FindParamField(translate,buf);
+ if ( !it && first_brack )
+ {
+ *first_brack = 0;
+ it = FindParamField(translate,buf);
+ }
+
+ if ( !it && first_para )
+ {
+ *first_para = 0;
+ it = FindParamField(translate,buf);
+ }
+
+ if ( !it && sha1 )
+ it = FindParamField(translate,sha1);
+
+
+ #if EARLY_NUM_SLOT
+ return it ? it->num : 0;
+ #else
+ if (it)
+ return it->num;
+
+ uint slot;
+ ScanSlot(&slot,fname,false);
+ return slot;
+ #endif
+}
+
+#undef EARLY_NUM_SLOT
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanSlotTranslation
+ ( ParamField_t *translate, le_distrib_t *ld, ccp fname, bool ignore )
+{
+ DASSERT(translate);
+ DASSERT(fname);
+ PRINT(" - scan translation%s: %s\n", ld ? "+ld" : "", fname);
+
+ szs_file_t szs;
+ InitializeSZS(&szs);
+ enumError err = LoadSZS(&szs,fname,true,ignore,true);
+ if (err)
+ return;
+
+
+ //--- support for special file formats
+
+ switch((int)szs.fform_arch)
+ {
+ case FF_BMG:
+ if (verbose>1)
+ printf(" - scan translation [BMG]: %s\n",fname);
+ ResetSZS(&szs);
+ return;
+ }
+
+
+ //--- standard text file
+
+ if ( verbose > 1 )
+ printf("Scan translation%s[TEXT/%s]: %s\n",
+ ld ? "+ld" : "",
+ GetExtFF(szs.fform_file,szs.fform_arch), fname );
+ else if ( verbose >= 0 )
+ printf("Scan %s\n",fname);
+
+ char *eol = (char*)szs.data;
+ char *end = eol + szs.size;
+
+ for(;;)
+ {
+ while ( eol < end && (uchar)*eol <= ' ' )
+ eol++;
+ if ( eol == end )
+ break;
+
+ char *src = eol;
+ while ( eol < end && *eol != 0 && *eol != '\r' && *eol != '\n' )
+ eol++;
+ *eol = 0;
+
+ if ( *src == '#' || *src == '!' )
+ continue;
+
+
+ //--- manage parameters
+
+ if ( *src == '@' )
+ {
+ if (ld)
+ AddDistribParamLD(ld,src,eol);
+ continue;
+ }
+
+ PRINT0("LINE: |%.*s|\n",(int)(eol-src),src);
+
+
+ //--- scan new sha1 list
+
+ if (ScanSha1LineLD(ld,src,eol,false))
+ continue;
+
+
+ //--- skip "()" | detect SHA1 checksum
+
+ char *sha1 = 0;
+ if ( *src == '(' )
+ {
+ while ( src < eol && *src != ')' )
+ src++;
+ if ( src++ == eol )
+ continue;
+ }
+ else
+ {
+ // detect sha1 checksum
+
+ char *x = src;
+ while ( x < eol && isalnum((int)*x) )
+ x++;
+ if ( x < eol && x - src == 40 )
+ {
+ sha1 = src;
+ src = x;
+ }
+ }
+
+ while ( src < eol && (uchar)*src <= ' ' )
+ src++;
+
+ const bool is_arena = *src == 'a' || *src == 'A';
+ if (is_arena)
+ src++;
+
+ if (!isdigit((int)*src))
+ continue;
+
+ uint slot;
+ src = ScanSlot(&slot,src,true); // ???
+ if (!slot)
+ continue;
+
+ char *tab = strrchr(src,'\t');
+ if (tab)
+ src = tab;
+ while ( src < eol && (uchar)*src <= ' ' )
+ src++;
+
+ DefineSlotTranslation(translate,is_arena,slot,src);
+ if (sha1)
+ {
+ sha1[40] = 0;
+ DefineSlotTranslation(translate,is_arena,slot,sha1);
+ }
+ }
+
+ ResetSZS(&szs);
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// misc ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanOptLeDefine ( ccp arg )
+{
+ opt_le_define = arg;
+ if ( arg && *arg )
+ AppendStringField(&le_define_list,arg,false);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp PrintLEFT ( le_flags_t flags )
+{
+ char *buf = GetCircBuf(5);
+ buf[0] = flags & LETF_NEW ? 'N' : '-';
+ buf[1] = flags & LETF_RND_HEAD ? 'H' : '-';
+ buf[2] = flags & LETF_RND_GROUP ? 'G' : '-';
+ buf[3] = flags & LETF_ALIAS ? 'A' : '-';
+ buf[4] = 0;
+ return buf;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+le_flags_t ScanLEFT ( ccp text )
+{
+ le_flags_t res = 0;
+ if (text)
+ {
+ if ( strchr(text,'N') || strchr(text,'n') ) res |= LETF_NEW;
+ if ( strchr(text,'H') || strchr(text,'h') ) res |= LETF_RND_HEAD;
+ if ( strchr(text,'G') || strchr(text,'g') ) res |= LETF_RND_GROUP;
+ if ( strchr(text,'A') || strchr(text,'a') ) res |= LETF_ALIAS;
+ }
+ return res;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ccp GetNameLTS ( le_track_status_t lts )
+{
+ switch(lts)
+ {
+ case LTS_INVALID: return "INVALID";
+ case LTS_VALID: return "VALID";
+ case LTS_FAIL: return "FAIL";
+ case LTS_ACTIVE: return "ACTIVE";
+ case LTS_FILL: return "FILL";
+ case LTS_EXPORT: return "EXPORT";
+ case LTS__N: break;
+ }
+ return 0;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// END ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
diff --git a/project/src/lib-ledis.h b/project/src/lib-ledis.h
new file mode 100644
index 0000000..b39d629
--- /dev/null
+++ b/project/src/lib-ledis.h
@@ -0,0 +1,1059 @@
+
+/***************************************************************************
+ * _______ _______ _______ *
+ * | ___ |____ | ___ | *
+ * | | |_| / /| | |_| *
+ * | |_____ / / | |_____ *
+ * |_____ | / / |_____ | *
+ * _ | | / / _ | | *
+ * | |___| |/ /____| |___| | *
+ * |_______|_______|_______| *
+ * *
+ * Wiimms SZS Tools *
+ * https://szs.wiimm.de/ *
+ * *
+ ***************************************************************************
+ * *
+ * This file is part of the SZS project. *
+ * Visit https://szs.wiimm.de/ for project details and sources. *
+ * *
+ * Copyright (c) 2011-2022 by Dirk Clemens <wiimm@wiimm.de> *
+ * *
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt *
+ * *
+ ***************************************************************************/
+
+#ifndef SZS_LIB_LEDIS_H
+#define SZS_LIB_LEDIS_H 1
+
+#include "lib-std.h"
+#include "lib-mkw.h"
+#include "lib-ctcode.h"
+#include "lib-lecode.h"
+
+#include "dclib-parser.h"
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// support options ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+// If 1, then enable the string list 'le_track_t::str_list' with some
+// predifined string types.
+
+#define LE_STRING_LIST_ENABLED 1
+
+//-----------------------------------------------------------------------------
+
+// If 1, then enable the string set 'le_track_t::str_set'. It supports any
+// number of strings that can be accessed by '[name]'.
+
+#define LE_STRING_SET_ENABLED 1
+
+//-----------------------------------------------------------------------------
+
+// LE-DEF can set track-type markers in vars to remember the track type.
+// So [CUP-LIST] can be defined before [TRACK-LIST]. Anyway, because [TRACK-LIST]
+// is scanned in pass-1 and [CUP-LIST] in pass-2 this can be always set to 0.
+
+#define LE_TYPE_MARKERS_ENABLED 0
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// definitions ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#define LE_DEFINE_MAGIC8 "#LE-DEF1"
+#define LE_DEFINE_MAGIC8_NUM 0x234c452d44454631ull
+
+#define LE_DISTRIB_MAGIC8 "#LE-DIST"
+#define LE_DISTRIB_MAGIC8_NUM 0x234c452d44495354ull
+
+#define LE_REFERENCE_MAGIC8 "#LE-REF1"
+#define LE_REFERENCE_MAGIC8_NUM 0x234c452d52454631ull
+
+#define LE_STRINGS_MAGIC8 "#LE-STR1"
+#define LE_STRINGS_MAGIC8_NUM 0x234c452d53545231ull
+
+#define LE_SHA1REF_MAGIC8 "#SHA1REF"
+#define LE_SHA1REF_MAGIC8_NUM 0x2353484131524546ull
+
+#define LE_PREFIX_MAGIC8 "#PREFIX1"
+#define LE_PREFIX_MAGIC8_NUM 0x2350524546495831ull
+
+#define LE_MAX_TRACKS (MKW_MAX_TRACK_SLOT+1)
+#define LE_TRACK_STRING_MAX 500
+
+//-----------------------------------------------------------------------------
+
+typedef u16 le_group_t;
+
+typedef struct le_track_t le_track_t;
+typedef struct le_distrib_t le_distrib_t;
+typedef struct raw_data_t raw_data_t;
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// global vars ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+extern ccp opt_create_dump; // NULL of filename
+extern le_distrib_t ledis_dump; // data collector for 'opt_create_dump'
+extern int ledis_dump_enabled; // -1:done, 0:disabled, 1:enabled
+
+extern ccp opt_le_define; // NULL or last defined filename
+extern StringField_t le_define_list; // list with all filenames
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_track_type_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_track_type_t]]
+
+typedef enum le_track_type_t
+{
+ LTTY_NONE = 0x00,
+ LTTY_ARENA = 0x01, // true: is a battle arena
+ LTTY_TRACK = 0x02, // true: is a versus track
+ LTTY_RANDOM = 0x04, // true: is a LE-CODE random slot
+ LTTY__NEXT = 0x08, // next free bit
+}
+__attribute__ ((packed)) le_track_type_t;
+
+//-----------------------------------------------------------------------------
+
+static inline bool IsArenaLTTY ( le_track_type_t track_type )
+ { return ( track_type & LTTY_ARENA ) > 0; }
+
+static inline bool IsTrackLTTY ( le_track_type_t track_type )
+ { return ( track_type & LTTY_TRACK ) > 0; }
+
+static inline bool IsRandomLTTY ( le_track_type_t track_type )
+ { return ( track_type & LTTY_RANDOM ) > 0; }
+
+ccp GetNameLTTY ( le_track_type_t track_type );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_track_status_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_track_status_t]]
+
+typedef enum le_track_status_t
+{
+ LTS_INVALID = 0, // record not initalized
+ LTS_VALID, // record initalized, but inactive
+ LTS_FAIL, // record initalized and inactive with any invalid settings
+ LTS_ACTIVE, // record initalized and active
+ LTS_FILL, // record initalized and active and used as fill-track
+ LTS_EXPORT, // record initalized and active and can be exported
+ LTS__N
+}
+__attribute__ ((packed)) le_track_status_t;
+
+ccp GetNameLTS ( le_track_status_t lts );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_track_text_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_track_text_t]]
+
+typedef enum le_track_text_t
+{
+ LTT_UNDEFINED = 0, // always NULL to support GetTextLEO()
+ LTT_SHA1, // access SHA1 checksum (standard)
+ LTT_SHA1_D, // access SHA1 checksum (_d file)
+ LTT_IDENT, // access identification (standard)
+ LTT_IDENT_D, // access identification (_d file)
+ LTT_FILE, // access file name
+ LTT_NAME, // access name
+ LTT_XNAME, // access xname
+ LTT_XNAME2, // access xname with fallback to name
+
+ #if LE_STRING_LIST_ENABLED
+ // part of string-list, accesses by 'str_list[index-LTT__LIST_BEG]'
+ LTT_TEMP1, // temporary string
+ LTT_TEMP2, // temporary string
+ #endif
+
+ #if LE_STRING_SET_ENABLED
+ LTT_STRSET, // access str_set[name]
+ #endif
+
+ LTT__N, // number of modes
+ LTT__DEFAULT = LTT_NAME,
+
+ #if LE_STRING_LIST_ENABLED
+ // pool range
+ LTT__LIST_BEG = LTT_TEMP1,
+ LTT__LIST_END = LTT_TEMP2+1,
+ LTT__LIST_SIZE = LTT__LIST_END - LTT__LIST_BEG,
+ #endif
+}
+le_track_text_t;
+
+//-----------------------------------------------------------------------------
+
+ccp GetUpperNameLTT ( le_track_text_t ltt ); // 'ltt' is masked by LEO_LTT_SELECTOR
+ccp GetLowerNameLTT ( le_track_text_t ltt ); // 'ltt' is masked by LEO_LTT_SELECTOR
+
+// returns 0:unknown ltt, 1:std string, 2:_d string, 3:both
+int GetDModeLTT ( le_track_text_t ltt );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_options_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_options_t]]
+
+typedef enum le_options_t
+{
+ //-- text selector
+
+ LEO_LTT_SELECTOR = 0x000000f, // mask to store le_track_text_t selector
+
+
+ //-- BMG input source selector. If none is set then use all
+
+ LEO_MKW1 = 0x0000010, // import track names from MKW set 1 (0x2454../0x24b8..)
+ LEO_MKW2 = 0x0000020, // import track names from MKW set 2 (0x2490../0x24cc..)
+ LEO_CTCODE = 0x0000040, // import track names from CT-CODE (0x4000..)
+ LEO_LECODE = 0x0000080, // import track names from LE-CODE (0x7000..)
+ LEO_MKW = LEO_MKW1 | LEO_MKW2,
+ LEO_M_BMG = LEO_MKW | LEO_CTCODE | LEO_LECODE,
+
+
+ //-- BMG input options
+
+ LEO_IN_EMPTY = 0x0000100, // accept empty strings as valid
+ LEO_IN_MINUS = 0x0000200, // accept minus strings as valid
+ LEO_IN_ALL = LEO_IN_EMPTY | LEO_IN_MINUS,
+
+
+ //-- BMG operator
+
+ LEO_INSERT = 0x0000400, // insert only new strings into the source.
+ LEO_REPLACE = 0x0000800, // replace only strings that are already defined.
+ LEO_OVERWRITE = 0x0000c00, // insert all valid strings
+ LEO_M_HOW = 0x0000c00,
+
+
+ //-- Output filter pairs. Only valid if exact 1 bit is set
+
+ LEO_VERSUS = 0x0001000, // use racing tracks only (!lt->arena)
+ LEO_BATTLE = 0x0002000, // use battle arenas only (lt->arena)
+ LEO_M_ARENA = LEO_VERSUS | LEO_BATTLE,
+
+ LEO_CUSTOM = 0x0004000, // use custom tracks only (!lt->original)
+ LEO_ORIGINAL = 0x0008000, // use original tracks only (lt->original)
+ LEO_M_ORIGINAL = LEO_CUSTOM | LEO_ORIGINAL,
+
+ LEO_NO_D_FILES = 0x0010000, // suppred info about _d files
+
+ LEO_M_OUTPUT = LEO_M_ARENA | LEO_M_ORIGINAL | LEO_NO_D_FILES,
+
+
+ //-- Output filter flags
+
+ LEO_OUT_EMPTY = 0x0020000, // accept empty strings as valid
+ LEO_OUT_MINUS = 0x0040000, // accept minus strings as valid
+ LEO_OUT_ALL = LEO_OUT_EMPTY | LEO_OUT_MINUS,
+
+
+ //-- more options
+
+ LEO_IN_LECODE = 0x0100000, // import lecode binary
+ LEO_BRIEF = 0x0200000, // suppress descriptions
+
+
+ //-- special signals
+
+ LEO_HELP = 0x1000000, // print help and exit
+
+ LEO_CUT_STD = 0x2000000, // cut for standard distribution.
+ LEO_CUT_CTCODE = 0x4000000, // cut for CT-CODE distribution.
+ LEO_M_CUT = LEO_CUT_STD | LEO_CUT_CTCODE,
+
+
+ //-- misc
+
+ LEO__ALL = 0x7ffffff,
+ LEO__DEFAULT = LTT__DEFAULT | LEO_OVERWRITE,
+ LEO__SRC = LEO_LTT_SELECTOR | LEO_IN_ALL,
+ LEO__DEST = LEO_LTT_SELECTOR | LEO_OUT_ALL | LEO_M_OUTPUT | LEO_M_HOW,
+}
+le_options_t;
+
+//-----------------------------------------------------------------------------
+
+extern le_options_t defaultLEO;
+le_options_t SetupDefaultLEO(void);
+
+le_options_t ScanLEO ( le_options_t current, ccp arg, ccp err_info );
+
+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
+
+// Options: LEO_M_HOW, LEO_IN_*, LEO_OUT_*
+bool IsAssignmentAllowedLEO ( ccp cur_name, ccp new_name, le_options_t opt );
+
+ccp GetTextLEO ( le_options_t opt );
+ccp GetInputFilterLEO ( le_options_t opt );
+ccp GetOutputFilterLEO ( le_options_t opt );
+
+// Options: LEO_IN_*, LEO_M_BMG
+bool GetBmgBySlotLEO
+ ( char *buf, uint bufsize, const bmg_t *bmg, int slot, le_options_t opt );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_strpar_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_strpar_t]]
+
+typedef struct le_strpar_t
+{
+ le_options_t opt; // string selector and options
+
+ bool use_d; // true: use _d variant if available
+ bool allow_d; // true: allow _d pointers
+ bool use_sha1; // true: get use_sha1 as fallback for ident
+ bool csum_only; // true: set sha1 only, but not an ident string.
+
+ #if LE_STRING_SET_ENABLED
+ ccp key; // NULL or key for LTT_STRSET, alloced, lower case
+ #endif
+}
+le_strpar_t;
+
+//-----------------------------------------------------------------------------
+
+extern const le_strpar_t NullLSP, DefaultLSP;
+
+static inline void InitializeLSP ( le_strpar_t *par, le_options_t opt )
+ { DASSERT(par); memset(par,0,sizeof(*par)); par->opt = opt; }
+void ResetLSP ( le_strpar_t *par );
+
+static inline void SetOptionsLSP ( le_strpar_t *par, le_options_t opt )
+ { if (par) par->opt = opt; }
+
+char * ScanLSP ( le_strpar_t *par, ccp arg, enumError *ret_err );
+ccp GetNameLSP ( const le_strpar_t *par );
+ccp GetOptionsLSP ( const le_strpar_t *par, le_options_t mask );
+enumError ScanOptionsLSP ( le_strpar_t *par, ccp arg, ccp err_info );
+
+//-----------------------------------------------------------------------------
+
+#if LE_STRING_SET_ENABLED
+
+ // key can be 'par->key' => don't change it
+ // if key_len < 0: use strlen(key)
+ void SetKeyNameLSP ( le_strpar_t *par, ccp key, int key_len );
+
+ static inline bool IsValidSetLSP ( const le_strpar_t *par )
+ { return par && ( par->opt & LEO_LTT_SELECTOR ) == LTT_STRSET && par->key; }
+
+#endif
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_cup_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_cup_ref_t]] [[le_cup_t]]
+
+typedef s16 le_cup_ref_t;
+
+typedef struct le_cup_t
+{
+ le_cup_ref_t *list; // list with tracks => list[size][tracks]
+ uint used; // used cups of 'list'
+ uint size; // alloced cups of 'list'
+ uint max; // max pssible cups of 'list'
+ uint tracks; // number of tracks of each cup
+
+ uint cur_cup; // current cup
+ uint cur_index; // current index
+
+ int fill_slot; // -1 or fill slot
+ int fill_src; // -1 or source of fill slot
+
+ bool dirty; // true: call UpdateCupsLD() to recalc cup-track relations
+ bool close_used; // true: CloseLECUP() (command NEW-CUP) used
+}
+le_cup_t;
+
+///////////////////////////////////////////////////////////////////////////////
+
+void InitializeLECUP ( le_cup_t *lc, uint max_cups, uint tracks_per_cup );
+void ResetLECUP ( le_cup_t *lc );
+
+le_cup_ref_t * GetLECUP ( const le_cup_t *lc, uint cup_index );
+le_cup_ref_t * DefineLECUP ( le_cup_t *lc, uint cup_index );
+
+// return 0 or cup slot like 21
+uint GetCupSlotLECUP ( const le_cup_t *lc, const le_cup_ref_t *ptr );
+
+void AppendLECUP ( le_cup_t *lc, le_cup_ref_t ref );
+void CloseLECUP ( le_cup_t *lc );
+void PackLECUP ( le_cup_t *lc );
+void EvenLECUP ( le_cup_t *lc );
+void FillLECUP ( le_cup_t *lc, le_cup_ref_t fallback );
+bool HaveInvalidLECUP ( le_cup_t *lc );
+
+static inline le_track_type_t GetLttyLECUP ( const le_cup_t *lc )
+ { return lc && lc->tracks == 5 ? LTTY_ARENA : LTTY_TRACK; }
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_track_id_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_track_id_t]]
+
+typedef struct le_track_id_t
+{
+ // keep it small!
+
+ bool have_sha1; // true: 'sha1bin' is valid
+ bool orig_sha1; // true: 'sha1bin' is original (or normed)
+ sha1_hash_t sha1bin; // sha1 of track, created from ident
+ ccp ident; // NULL or identfication, fallback 'sha1bin'
+}
+le_track_id_t;
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_track_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_track_t]]
+
+typedef struct le_track_t
+{
+ // keep it small!
+
+ u16 track_slot; // index of le_distrib_t, 0..MKW_MAX_TRACK_SLOT
+ u16 cup_slot; // 0 or 'cup * 10 + tidx'
+
+ le_track_status_t track_status; // LTS_INVALID | LTS_VALID | LTS_ACTIVE | LTS_EXPORT
+ le_track_type_t track_type; // LTTY_NONE | LTTY_ARENA | LTTY_TRACK | LTTY_RANDOM
+ u8 is_original; // 0:is custom, 1:is original
+ u8 user_flags; // free usable flags
+
+ le_property_t property; // property
+ le_music_t music; // music slot
+ le_flags_t flags; // flags
+
+ le_track_id_t lti[2]; // index 0: normal, index 1:_d
+ ccp file; // NULL or filename of track
+ ccp name; // NULL or name of track
+ ccp xname; // NULL or extended name of track, fallback 'name'
+
+ #if LE_STRING_LIST_ENABLED
+ ccp str_list[LTT__LIST_SIZE];
+ // list of strings
+ #endif
+
+ #if LE_STRING_SET_ENABLED
+ ParamField_t str_set; // set of strings, accessed by '[name]'
+ #endif
+}
+le_track_t;
+
+//-----------------------------------------------------------------------------
+
+void InitializeLT ( le_track_t *lt );
+void ClearStringsLT ( le_track_t *lt );
+
+void ClearLT ( le_track_t *lt, le_track_type_t ltty ); // auto-ltty if 0
+void MoveLT ( le_track_t *dest, le_track_t *src );
+static inline void ResetLT ( le_track_t *lt ) { ClearLT(lt,0); }
+
+void SetupStandardArenaLT ( le_track_t *lt, uint setup_slot ); // slots 0..9 || 32..41
+void SetupStandardTrackLT ( le_track_t *lt, uint setup_slot ); // slots 0..31
+void SetupByTrackInfoLT ( le_track_t *lt, const TrackInfo_t *ti );
+
+void SetupLecodeRandomTrackLT ( le_track_t *lt, uint setup_slot ); // slots 62..65
+
+// -1:wrong slot or not a battle, 0:correct slots,
+// 1:wrong property, 2:wrong music, 3:both wrong
+int HaveUsualBattleSlots ( le_track_t *lt );
+
+void ClearIdentLT ( le_track_t *lt );
+
+//-----------------------------------------------------------------------------
+
+static inline bool IsActiveLT ( const le_track_t *lt )
+ { return lt && lt->track_status >= LTS_ACTIVE; }
+
+static inline bool IsExportLT ( const le_track_t *lt )
+ { return lt && lt->track_status >= LTS_EXPORT; }
+
+static inline bool IsVisibleLT ( const le_track_t *lt )
+ { return lt && lt->track_status >= LTS_ACTIVE && !IsHiddenLETF(lt->flags); }
+
+//-----------------------------------------------------------------------------
+// SetListLT(), SetText*LT(): use 'opt & LEO_LTT_SELECTOR' to select text
+// recognized options: LEO_M_HOW | LEO_IN_*
+
+void SetIdentLT ( le_track_t *lt, const le_strpar_t *par, ccp ident ); // par: opt, use_d, csum_only
+void SetFileLT ( le_track_t *lt, const le_strpar_t *par, ccp fname ); // par: opt
+void SetNameLT ( le_track_t *lt, const le_strpar_t *par, ccp name ); // par: opt
+void SetXNameLT ( le_track_t *lt, const le_strpar_t *par, ccp xname ); // par: opt
+#if LE_STRING_LIST_ENABLED
+void SetListLT ( le_track_t *lt, const le_strpar_t *par, ccp text ); // par: ltt, opt
+#endif
+#if LE_STRING_SET_ENABLED
+void SetSetLT ( le_track_t *lt, const le_strpar_t *par, ccp text ); // par: ltt, key, opt
+void SetByKeyLT ( le_track_t *lt, ccp key, ccp text );
+#endif
+void SetTextLT ( le_track_t *lt, const le_strpar_t *par, ccp text ); // par: ltt, *
+
+//-----------------------------------------------------------------------------
+// set with 'opt'
+
+void SetIdentOptLT ( le_track_t *lt, ccp ident, bool use_d, bool csum_only, le_options_t opt );
+void SetTextOptLT ( le_track_t *lt, ccp text, le_options_t opt );
+
+//-----------------------------------------------------------------------------
+// use 'opt & LEO_LTT_SELECTOR' to select text
+
+ccp * GetPtrLT ( const le_track_t *lt, const le_strpar_t *par );
+ccp * GetPtrOptLT ( const le_track_t *lt, le_options_t opt, bool allow_d );
+
+ccp GetSha1LT ( const le_track_t *lt, bool use_d, ccp return_on_empty );
+ccp GetIdentLT ( const le_track_t *lt, bool use_d, bool use_sha1, ccp return_on_empty );
+ccp GetFileLT ( const le_track_t *lt, ccp return_on_empty );
+ccp GetNameLT ( const le_track_t *lt, ccp return_on_empty );
+ccp GetXNameLT ( const le_track_t *lt, ccp return_on_empty );
+ccp GetXName2LT ( const le_track_t *lt, ccp return_on_empty );
+
+ccp GetTextLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty );
+ccp GetTextOptLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty );
+
+ccp QuoteSha1LT ( const le_track_t *lt, bool use_d, ccp return_on_empty );
+ccp QuoteIdentLT ( const le_track_t *lt, bool use_d, bool use_sha1, ccp return_on_empty );
+ccp QuoteFileLT ( const le_track_t *lt, ccp return_on_empty );
+ccp QuoteNameLT ( const le_track_t *lt, ccp return_on_empty );
+ccp QuoteXNameLT ( const le_track_t *lt, ccp return_on_empty );
+ccp QuoteXName2LT ( const le_track_t *lt, ccp return_on_empty );
+
+ccp QuoteTextLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty );
+ccp QuoteTextOptLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty );
+
+//-----------------------------------------------------------------------------
+
+#if LE_STRING_LIST_ENABLED
+
+ ccp GetListLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty );
+ ccp QuoteListLT ( const le_track_t *lt, le_options_t opt, ccp return_on_empty );
+
+#endif
+
+#if LE_STRING_SET_ENABLED
+
+ ccp GetSetLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty );
+ ccp QuoteSetLT ( const le_track_t *lt, const le_strpar_t *par, ccp return_on_empty );
+
+#endif
+
+//-----------------------------------------------------------------------------
+
+ccp GetSlotNameLT ( const le_track_t *lt );
+
+ccp GetCupLT ( const le_track_t *lt, ccp return_on_empty );
+ccp GetCupAlignLT ( const le_track_t *lt );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_track_arch_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_track_arch_t]]
+
+typedef struct le_track_arch_t
+{
+ le_track_t lt; // usual track data
+ le_group_t group; // group id
+
+ // all string alloced
+
+ ccp name_order; // relevant name for order
+ ccp version; // version
+
+ // order := attr_order plus_order name_order game_order
+
+ s16 attr_order; // order by attribute, default=1000
+ uint plus_order; // order by plus prefix
+ uint game_order; // order by game prefix
+}
+le_track_arch_t;
+
+//-----------------------------------------------------------------------------
+
+void ResetLTA ( le_track_arch_t *ta, bool reset_lt );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// enum le_auto_setup_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_auto_setup_t]]
+
+typedef enum le_auto_setup_t
+{
+ LAS_OFF = 0,
+ LAS_ARENA = LTTY_ARENA, // true: setup original battle arenas automatically
+ LAS_TRACK = LTTY_TRACK, // true: setup original versus tracks automatically
+ LAS_RANDOM = LTTY_RANDOM, // true: setup LE-CODE random slots automatically
+ LAS_DEFAULT = LAS_ARENA | LAS_TRACK | LAS_RANDOM,
+
+ LAS_TEMPLATE = LTTY__NEXT // true: insert example tracks
+}
+__attribute__ ((packed)) le_auto_setup_t;
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// le_type_settings_t + le_settings_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_type_settings_t]]
+
+typedef struct le_type_settings_t
+{
+ bool orig_tracks; // true: tracks are original
+ bool add_unused; // true: add unused arenas/tracks
+}
+__attribute__ ((packed)) le_type_settings_t;
+
+///////////////////////////////////////////////////////////////////////////////
+// [[le_settings_t]]
+
+typedef struct le_settings_t
+{
+ bool valid; // true if scan or analysis done
+ le_type_settings_t bt; // battle settings
+ le_type_settings_t vs; // versus settings
+}
+le_settings_t;
+
+///////////////////////////////////////////////////////////////////////////////
+// [[le_group_info_t]]
+
+typedef struct le_group_info_t
+{
+ uint group; // group number
+
+ u16 *list; // list of group members
+ uint used; // number of group members
+ uint size; // alloced elements of 'list'
+
+ uint n_head; // number of head members
+ uint n_group; // number of grp members
+ uint head1; // first head member, valid if 'n_head>0'
+}
+le_group_info_t;
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct le_distrib_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[le_distrib_t]]
+
+typedef struct le_distrib_t
+{
+ //-- basic data
+
+ bool is_initialized; // true: data is InitializeLD()
+ le_auto_setup_t auto_setup; // bit files (LAS_*)
+ le_strpar_t spar; // current string param, incl. default 'opt'
+
+ le_track_t *tlist; // list of tracks
+ uint tlist_used; // used elements in 'tlist'
+ uint tlist_size; // alloced 'tlist' elements
+
+
+ //-- more data
+
+ ParamField_t dis_param; // parameter list for FF_DISTRIB
+ le_lpar_t *lpar; // NULL or LPAR settings
+ le_cup_t cup_battle; // track list for battle cups
+ le_cup_t cup_versus; // track list for versus cups
+ mem_t lecode[LEREG__N]; // LE-CODE data
+ bool lecode_alloced[LEREG__N];
+ // true, if 'lecode' is alloced
+ le_settings_t scan; // settings by ScanLeDefLD()
+ le_settings_t ana; // settings by AnalyzeLD()
+
+
+ //-- this is a reference list, setup by e.g. Sort*()
+ //-- the list is termianted by a NULL pointer.
+
+ le_track_t **reflist; // reference list, terminated by NULL
+ uint reflist_used; // used elements in 'tlist'
+ uint reflist_size; // alloced 'tlist' elements
+
+ //-- track archive
+
+ le_track_arch_t *arch; // list of tracks
+ uint arch_used; // used elements in 'arch'
+ uint arch_size; // alloced 'tlist' elements
+
+ exmem_list_t group; // group manager
+
+
+ //-- helper data
+
+ ctcode_t *ctcode; // NULL or temporary file
+
+
+ //-- scan helpers
+
+ bool is_pass2; // true on pass2
+ bool second_ledef; // true: don't clear tracks and cups
+}
+le_distrib_t;
+
+//-----------------------------------------------------------------------------
+
+void InitializeLD ( le_distrib_t *ld );
+void ResetLD ( le_distrib_t *ld );
+void ResetTracksAndCupsLD ( le_distrib_t *ld );
+void AutoSetupLD ( le_distrib_t *ld, le_auto_setup_t auto_setup );
+
+void AnalyzeLD ( le_distrib_t *ld, bool force_new_analysis );
+
+void CutLD ( le_distrib_t *ld, le_options_t opt ); // opt=LEO_M_CUT
+void ClearTracksLD ( le_distrib_t *ld, int from, int to );
+
+void SetupLparLD ( le_distrib_t *ld, bool load_lpar );
+
+//-----------------------------------------------------------------------------
+// trackhelpers
+
+uint PackTracksLD ( const le_distrib_t *ld );
+void CheckTracksLD ( const le_distrib_t *ld );
+
+le_track_t * GetTrackLD ( le_distrib_t *ld, int slot );
+le_track_t * DefineTrackLD ( le_distrib_t *ld, int slot, bool mark_export );
+le_track_t * DefineFreeTrackLD ( le_distrib_t *ld, le_track_type_t ltty, bool mark_export );
+le_track_t * DefineGroupTrackLD ( le_distrib_t *ld, le_track_type_t ltty, bool mark_export );
+
+le_track_t * FindFillTrackLD ( le_distrib_t *ld, le_cup_t *lc, bool allow_candidate );
+
+int FindFreeTracksLD ( le_distrib_t *ld, le_track_type_t ltty, int n );
+le_track_t * ReserveTracksLD ( le_distrib_t *ld, le_track_type_t ltty, int n, bool mark_export );
+
+//-----------------------------------------------------------------------------
+// cup helpers
+
+void ClearUserFlagsAndCupsLD ( le_distrib_t *ld );
+bool HaveWiimmCupLD ( const le_distrib_t *ld );
+
+void DirtyCupLD ( le_distrib_t *ld, le_track_type_t ltty );
+void UpdateCupsLD ( le_distrib_t *ld );
+
+bool PrintCupRefLD ( FILE *f, le_distrib_t *ld, le_cup_t *lc );
+
+//-----------------------------------------------------------------------------
+// manage archive [[track-arch]]
+
+void ResetArchLD ( le_distrib_t *ld );
+le_track_arch_t * GetNextArchLD ( le_distrib_t *ld );
+enumError AddToArchLD ( le_distrib_t *ld, raw_data_t *raw );
+bool CloseArchLD ( le_distrib_t *ld ); // return true on activity
+
+//-----------------------------------------------------------------------------
+
+typedef bool (*FilterFuncLD) ( const le_track_t *lt, le_options_t opt );
+
+int SetupReferenceList ( le_distrib_t *ld, FilterFuncLD filter, le_options_t opt );
+int SortByCupLD ( le_distrib_t *ld, FilterFuncLD filter, le_options_t opt );
+
+//-----------------------------------------------------------------------------
+
+void ScanDumpLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+);
+
+void ScanDumpSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+);
+
+//-----------------------------------------------------------------------------
+
+enumError ScanLeDefLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size, // size of 'data'
+ ccp fname, // NULL or filename for error messages
+ CopyMode_t cm_fname // copy mode of 'fname'
+);
+
+enumError ScanLeDefSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+);
+
+//-----------------------------------------------------------------------------
+
+void ScanRefLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+);
+
+void ScanRefSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+);
+
+//-----------------------------------------------------------------------------
+
+void ScanStrLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+);
+
+void ScanStrSTLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+);
+
+//-----------------------------------------------------------------------------
+
+void ScanSha1LD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ const void * data, // data to scan
+ uint data_size // size of 'data'
+);
+
+void ScanSha1STLD
+(
+ le_distrib_t *ld, // valid structure
+ bool init_ld, // TRUE: initialze 'ld'
+ ScanText_t *st // initialized source
+);
+
+bool ScanSha1LineLD
+(
+ le_distrib_t *ld, // valid structure
+ ccp src, // NULL or start of line
+ ccp end, // end of line
+ bool ident_only // TRUE: SetIdent*LT() only
+);
+
+//-----------------------------------------------------------------------------
+
+enumError ImportRawDataLD
+(
+ le_distrib_t *ld, // destination
+ raw_data_t *raw // source
+);
+
+enumError ImportFileLD
+(
+ le_distrib_t *ld, // destination
+ ccp fname, // file name of source
+ bool use_wildcard, // true & file not exist: search files
+ bool support_options // support options (leading '+' and no slash )
+);
+
+void ImportOptionsLD ( le_distrib_t *ld );
+
+void ImportLD ( le_distrib_t *ld, const le_distrib_t *src );
+void ImportLparLD ( le_distrib_t *ld, const le_lpar_t *lpar );
+void ImportAnaLD ( le_distrib_t *ld, const le_analyse_t *ana );
+void ImportCtcodeLD ( le_distrib_t *ld, const ctcode_t *ctcode );
+void ImportBmgLD ( le_distrib_t *ld, const bmg_t *bmg, const le_strpar_t *par );
+
+//-----------------------------------------------------------------------------
+
+bool ExportAnaLD ( const le_distrib_t *ld, le_analyse_t *ana );
+bool ExportCtCodeLD ( const le_distrib_t *ld, ctcode_t *ctcode );
+
+//-----------------------------------------------------------------------------
+// create files
+
+enumError CreateDumpLD ( FILE *f, le_distrib_t *ld );
+enumError CreateRefLD ( FILE *f, le_distrib_t *ld, bool add_strings );
+enumError CreateStringsLD ( FILE *f, le_distrib_t *ld );
+enumError CreateNamesLD ( FILE *f, le_distrib_t *ld, bool use_xname );
+enumError CreateInfoLD ( FILE *f, le_distrib_t *ld, bool use_xname );
+enumError CreateSha1LD ( FILE *f, le_distrib_t *ld, bool use_xname, bool add_comments );
+enumError CreateCtDefLD ( FILE *f, le_distrib_t *ld );
+enumError CreateLeDefLD ( FILE *f, le_distrib_t *ld );
+enumError CreateLecodeLD ( FILE *f, le_distrib_t *ld, le_region_t region );
+enumError CreateLparLD ( FILE *f, le_distrib_t *ld, bool print_full );
+enumError CreateBmgLD ( FILE *f, le_distrib_t *ld, bool bmg_text );
+
+enumError CreateLeInfoLD ( FILE *f, const le_distrib_t *ld, bool list_only );
+enumError CreateDebugLD ( FILE *f, const le_distrib_t *ld );
+
+enumError CreateLecode4LD ( ccp fname, le_distrib_t *ld );
+
+//-----------------------------------------------------------------------------
+// special jobs
+
+enumError SubstLD ( le_distrib_t *ld, const le_strpar_t *dest, ccp arg );
+enumError CopyLD ( le_distrib_t *ld, const le_strpar_t *dest,
+ const le_strpar_t *src, int n_src );
+
+enumError TransferFilesLD ( le_distrib_t *ld, bool logit, bool testmode );
+
+//-----------------------------------------------------------------------------
+// distribution support
+
+void UpdateDistribLD ( le_distrib_t *ld, bool overwrite );
+bool AddDistribParamLD ( le_distrib_t *ld, ccp src, ccp end );
+
+enumError ImportDistribLD ( le_distrib_t *ld, cvp data, uint size );
+enumError ImportDistribSTLD ( le_distrib_t *ld, ScanText_t *st );
+
+enumError CreateDistribLD ( FILE *f, le_distrib_t *ld, bool use_xname );
+
+//-----------------------------------------------------------------------------
+// lecode support
+
+void FreeLecodeLD ( le_distrib_t *ld, le_region_t reg );
+mem_t AssignLecodeLD ( le_distrib_t *ld, le_region_t reg, cvp data, uint size );
+mem_t GetLecodeLD ( const le_distrib_t *ld, le_region_t reg );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// ledis_dump support ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+int EnableLDUMP ( ccp filename );
+enumError CloseLDUMP();
+
+void ImportAnaLDUMP ( const le_analyse_t *ana );
+void ImportCtcodeLDUMP ( const ctcode_t *ctcode );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// struct DistributionInfo_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#define DISTRIB_MAGIC8 "#DISTRIB"
+#define DISTRIB_MAGIC8_NUM 0x2344495354524942ull
+
+#define DISTRIBUTION_FILE_VERSION 1
+#define MIN_DISTRIBUTION_SLOT 10 // included
+#define MAX_DISTRIBUTION_TRACK 10000 // excluded
+#define MAX_DISTRIBUTION_ARENA 1000 // excluded
+#define DISTRIBUTION_ARENA_DELTA 100000
+
+#define DEFAULT_DISTIBUTION_FNAME "distribution.txt"
+
+//-----------------------------------------------------------------------------
+
+static inline bool IsValidDistribArena ( uint slot )
+{
+ return slot == DISTRIBUTION_ARENA_DELTA
+ || slot >= DISTRIBUTION_ARENA_DELTA+MIN_DISTRIBUTION_SLOT
+ && slot < DISTRIBUTION_ARENA_DELTA+MAX_DISTRIBUTION_ARENA;
+}
+
+static inline bool IsValidDistribTrack ( uint slot )
+{
+ return !slot
+ || slot >= MIN_DISTRIBUTION_SLOT && slot < MAX_DISTRIBUTION_TRACK;
+}
+
+static inline bool IsValidDistribSlot ( uint slot )
+{
+ return !slot
+ || slot >= MIN_DISTRIBUTION_SLOT
+ && slot < MAX_DISTRIBUTION_TRACK
+ || slot == DISTRIBUTION_ARENA_DELTA
+ || slot >= DISTRIBUTION_ARENA_DELTA+MIN_DISTRIBUTION_SLOT
+ && slot < DISTRIBUTION_ARENA_DELTA+MAX_DISTRIBUTION_ARENA;
+}
+
+//-----------------------------------------------------------------------------
+// [[DistributionInfo_t]]
+
+typedef struct DistributionInfo_t
+{
+ le_distrib_t ld;
+ ParamField_t translate;
+ ParamField_t arena[MAX_DISTRIBUTION_ARENA];
+ ParamField_t track[MAX_DISTRIBUTION_TRACK];
+}
+DistributionInfo_t;
+
+//-----------------------------------------------------------------------------
+
+void InitializeDistributionInfo
+ ( DistributionInfo_t * dinf, bool add_default_param );
+void ResetDistributionInfo ( DistributionInfo_t *dinf );
+void AddParamDistributionInfo ( DistributionInfo_t * dinf, bool overwrite );
+
+enumError ScanDistribFile
+ ( DistributionInfo_t *dinf, ccp fname, int ignore, bool assume_arena );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// slot translation ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+char * ScanSlot ( uint *res_slot, ccp source, bool need_point );
+
+void NormalizeSlotTranslation ( char *buf, uint bufsize, ccp name,
+ char ** p_first_para, char ** p_first_brack );
+
+uint DefineSlotTranslation
+ ( ParamField_t *translate, bool is_arena, uint slot, ccp name );
+
+// 'sha1' can be NULL
+int FindSlotByTranslation ( const ParamField_t *translate, ccp fname, ccp sha1 );
+
+// 'param' not NULL: Scan "@PARAM = VALUE" lines and store result.
+void ScanSlotTranslation
+ ( ParamField_t *translate, le_distrib_t *ld, ccp fname, bool ignore );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// misc ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+void ScanOptLeDefine ( ccp arg );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// END ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#endif // SZS_LIB_LEDIS_H
+
diff --git a/project/src/lib-lex.c b/project/src/lib-lex.c
index 5640674..eb992d9 100644
--- a/project/src/lib-lex.c
+++ b/project/src/lib-lex.c
@@ -1542,8 +1542,8 @@ enumError ScanLEXFunc
default:
AppendElementLEX(lex,magic,data,size,true);
#if HAVE_PRINT0
- if (logging>1)
- DumpElementsLEX(stdout,lex,logging>2);
+ if ( logging >= 2 )
+ DumpElementsLEX(stdout, lex, logging >= 3 );
#endif
}
return ERR_OK;
@@ -1582,8 +1582,8 @@ enumError ScanRawLEX
else
UpdateLEX(lex,opt_complete,false);
- if (logging>0)
- DumpElementsLEX(stdout,lex,logging>2);
+ if ( logging >= 1 )
+ DumpElementsLEX( stdout, lex, logging >= 3 );
return err;
}
diff --git a/project/src/lib-mdl.c b/project/src/lib-mdl.c
index 7b3650f..9f11950 100644
--- a/project/src/lib-mdl.c
+++ b/project/src/lib-mdl.c
@@ -4105,7 +4105,7 @@ ccp RenameForSlot42MDL
}
#ifdef TEST
- //if ( logging > 1 && stdlog )
+ //if ( logging >= 2 && stdlog )
{
fprintf(stdlog,
"\tRename %u MDL material%s:\n",
diff --git a/project/src/lib-minigame.c b/project/src/lib-minigame.c
index a9ae7a6..7cc3e84 100644
--- a/project/src/lib-minigame.c
+++ b/project/src/lib-minigame.c
@@ -540,7 +540,7 @@ enumError ScanTextMINIGAME
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
diff --git a/project/src/lib-numeric.h b/project/src/lib-numeric.h
index c52261b..b83658a 100644
--- a/project/src/lib-numeric.h
+++ b/project/src/lib-numeric.h
@@ -112,7 +112,17 @@ enum
#define LETF_ALIAS 0x08 // use TrackByAliasLE(prop,music)
// as alias for another track
-#define LETF__ALL 0x0f
+#define LETF__RND 0x06 // both random flags
+#define LETF__ALL 0x0f // all bits of above
+
+static inline bool IsTitleLETF ( uint flags )
+ { return (flags&(LETF_RND_HEAD|LETF_RND_GROUP)) == LETF_RND_HEAD; }
+
+static inline bool IsHiddenLETF ( uint flags )
+ { return (flags&(LETF_RND_HEAD|LETF_RND_GROUP)) == LETF_RND_GROUP; }
+
+static inline bool IsRandomLETF ( uint flags )
+ { return (flags&(LETF_RND_HEAD|LETF_RND_GROUP)) != 0; }
//-----------------------------------------------------------------------------
// [[lpar_mode_t]]
@@ -1040,7 +1050,7 @@ enumError ParserCalc ( const VarMap_t * predef );
//
///////////////////////////////////////////////////////////////////////////////
-/////////////// scan text ///////////////
+/////////////// scan info ///////////////
///////////////////////////////////////////////////////////////////////////////
// [[TextCommand_t]]
@@ -1229,7 +1239,7 @@ typedef struct ScanInfo_t
//--- init data
ccp init_data; // begin of text
- uint init_data_size; // end of text
+ uint init_data_size; // total size of text
ccp init_name; // name or file for warnings
int init_revision; // revision number at start
@@ -1267,6 +1277,7 @@ typedef struct ScanInfo_t
struct kmp_t * kmp; // for KMP scanning
struct lex_t * lex; // for LEX scanning
struct mdl_t * mdl; // for MDL scanning
+ struct le_distrib_t * ld; // for LEDEF scanning
} ScanInfo_t;
@@ -1767,6 +1778,17 @@ char NextCharSI
//-----------------------------------------------------------------------------
+bool IsSectionOrEotSI
+(
+ // Call NextCharSI() and check for new section or EOT (return true if found)
+ // Section name is stored in 'last_index_name' (upper case)
+
+ ScanInfo_t * si, // valid data
+ bool skip_lines // true: skip empty lines
+);
+
+//-----------------------------------------------------------------------------
+
char SkipCharSI
(
// return next non skipped character
@@ -1793,6 +1815,13 @@ enumError CheckLevelSI
//-----------------------------------------------------------------------------
+ccp GetEolSI
+(
+ ScanInfo_t * si // valid data
+);
+
+//-----------------------------------------------------------------------------
+
void GotoEolSI
(
ScanInfo_t * si // valid data
@@ -1877,8 +1906,8 @@ uint ScanNameSI
enumError ConcatStringsSI
(
ScanInfo_t * si, // valid data
- char ** dest_str, // store string here, use FREE + MALLOC
- uint * len // not NULL: store length of return string here
+ char ** dest_str, // not NULL: store string here, use FREE + MALLOC
+ uint * ret_len // not NULL: store length of return string here
);
//-----------------------------------------------------------------------------
@@ -1891,10 +1920,10 @@ enumError ScanStringSI
//-----------------------------------------------------------------------------
-extern char last_index_name[VARNAME_SIZE+1];
-
int ScanIndexSI
(
+ // varname is stored in 'last_index_name' (upper case)
+
ScanInfo_t * si, // valid data
enumError * err, // return value: error code
int index, // index to define if name
@@ -1906,7 +1935,13 @@ int ScanIndexSI
//-----------------------------------------------------------------------------
-void SetIndexName ( ccp name );
+extern char last_index_name[VARNAME_SIZE+1];
+
+static inline void SetIndexName ( ccp name )
+ { StringUpperS(last_index_name,sizeof(last_index_name),name); }
+
+static inline void SetIndexNameM ( mem_t name )
+ { MemUpperS(last_index_name,sizeof(last_index_name),name); }
//-----------------------------------------------------------------------------
diff --git a/project/src/lib-objflow.c b/project/src/lib-objflow.c
index d7cb1cc..c01c25d 100644
--- a/project/src/lib-objflow.c
+++ b/project/src/lib-objflow.c
@@ -397,7 +397,7 @@ enumError ScanTextOBJFLOW
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
diff --git a/project/src/lib-pack.c b/project/src/lib-pack.c
index 9473108..d5d906b 100644
--- a/project/src/lib-pack.c
+++ b/project/src/lib-pack.c
@@ -166,7 +166,7 @@ enumError CreatePACK
SortSubFilesSZS(szs,SORT_AUTO);
- if ( logging > 1 )
+ if ( logging >= 2 )
{
printf("\nsorted file list:\n");
int i;
diff --git a/project/src/lib-parser-func.c b/project/src/lib-parser-func.c
index 6854619..1285694 100644
--- a/project/src/lib-parser-func.c
+++ b/project/src/lib-parser-func.c
@@ -74,6 +74,13 @@ void DefineParserVars ( VarMap_t * vm )
struct inttab_t { ccp name; int val; };
static const struct inttab_t inttab[] =
{
+ { "NO", 0 },
+ { "YES", 1 },
+ { "OFF", 0 },
+ { "ON", 1 },
+ { "DISABLED", 0 },
+ { "ENABLED", 1 },
+
{ "INT$MIN", INT_MIN },
{ "INT$MAX", INT_MAX },
@@ -179,6 +186,7 @@ void DefineMkwVars ( VarMap_t * vm )
{ "LE$F_NEW", LETF_NEW },
{ "LE$F_HEAD", LETF_RND_HEAD },
{ "LE$F_GROUP", LETF_RND_GROUP },
+ { "LE$F_ALIAS", LETF_ALIAS },
{ "LE$PRODUCTIVE", LPM_PRODUCTIVE },
{ "LE$TESTING", LPM_TESTING },
diff --git a/project/src/lib-parser.c b/project/src/lib-parser.c
index f375395..7271258 100644
--- a/project/src/lib-parser.c
+++ b/project/src/lib-parser.c
@@ -2216,6 +2216,51 @@ char NextCharSI
///////////////////////////////////////////////////////////////////////////////
+bool IsSectionOrEotSI
+(
+ // Call NextCharSI() and check for new section or EOT (return true if found)
+ // Section name is stored in 'last_index_name' (upper case)
+
+ ScanInfo_t * si, // valid data
+ bool skip_lines // true: skip empty lines
+)
+{
+ DASSERT(si);
+
+ *last_index_name = 0;
+ char ch = NextCharSI(si,skip_lines);
+ if (!ch)
+ return true;
+
+ if ( ch == '[' )
+ {
+ ScanFile_t *sf = si->cur_file;
+ DASSERT(sf);
+ ccp beg = sf->ptr + 1;
+ ccp eol = beg;
+ while ( eol < sf->end && *eol != '\n' )
+ eol++;
+ eol--;
+ while ( eol > beg && (uchar)*eol <= ' ' )
+ eol--;
+
+ if ( *eol == ']' )
+ {
+ int len = eol - beg;
+ if ( len > 0 && !memchr(beg,'[',len) && !memchr(beg,']',len) )
+ {
+ mem_t name = { .ptr = beg, .len = len };
+ SetIndexNameM(name);
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
char SkipCharSI
(
// return next non skipped character
@@ -2372,6 +2417,25 @@ enumError CheckLevelSI
///////////////////////////////////////////////////////////////////////////////
+ccp GetEolSI
+(
+ ScanInfo_t * si // valid data
+)
+{
+ DASSERT(si);
+ ScanFile_t *sf = si->cur_file;
+ DASSERT(sf);
+
+ ccp ptr = sf->ptr, prev = sf->prev_ptr;
+ GotoEolSI(si);
+ ccp eol = sf->ptr;
+ sf->ptr = ptr;
+ sf->prev_ptr = prev;
+ return eol;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
void GotoEolSI
(
ScanInfo_t * si // valid data
@@ -2647,12 +2711,14 @@ uint ScanNameSI
enumError ConcatStringsSI
(
ScanInfo_t * si, // valid data
- char ** dest_str, // store string here, use FREE + MALLOC
+ char ** dest_str, // not NULL: store string here, use FREE + MALLOC
uint * ret_len // not NULL: store length of return string here
)
{
DASSERT(si);
+ //-- clear result
+
if (dest_str)
{
FreeString(*dest_str);
@@ -2661,6 +2727,9 @@ enumError ConcatStringsSI
if (ret_len)
*ret_len = 0;
+
+ //-- scan string
+
// [[var-string-]] support of dynamic buffer
char buf[5000];
char *buf_end = buf + sizeof(buf) - 1;
@@ -2711,6 +2780,8 @@ enumError ConcatStringsSI
}
}
+ //-- store result
+
const uint len = dest - buf;
if (ret_len)
*ret_len = len;
@@ -2781,10 +2852,10 @@ enumError ScanStringSI
char last_index_name[VARNAME_SIZE+1] = {0};
-//-----------------------------------------------------------------------------
-
int ScanIndexSI
(
+ // varname is stored in 'last_index_name' (upper case)
+
ScanInfo_t * si, // valid data
enumError * err, // return value: error code
int index, // index to define if name
@@ -2805,6 +2876,7 @@ int ScanIndexSI
char ch = NextCharSI(si,false);
if (IsNum(ch,0))
{
+ *last_index_name = 0;
u32 num;
*err = ScanU32SI(si,&num,1,0);
if (il)
@@ -2872,16 +2944,18 @@ int ScanIndexSI
//-----------------------------------------------------------------------------
+#if 0 // [[2do]] [[obsolete]]
void SetIndexName ( ccp name )
{
if (!name)
name = "";
char *dest = last_index_name;
- char *end = dest + sizeof(last_index_name) -1 ;
- while ( dest < end && *name )
+ char *endbuf = dest + sizeof(last_index_name) -1 ;
+ while ( dest < endbuf && *name )
*dest++ = toupper((int)*name++);
*dest = 0;
}
+#endif
//-----------------------------------------------------------------------------
diff --git a/project/src/lib-pat.c b/project/src/lib-pat.c
index 535c8d7..55a66be 100644
--- a/project/src/lib-pat.c
+++ b/project/src/lib-pat.c
@@ -1466,7 +1466,7 @@ enumError ScanTextPAT
break;
default:
- // ignore all other section without any warnings
+ // ignore all other sections without any warnings
break;
}
diff --git a/project/src/lib-staticr.c b/project/src/lib-staticr.c
index eef7e60..2cd338a 100644
--- a/project/src/lib-staticr.c
+++ b/project/src/lib-staticr.c
@@ -2574,12 +2574,12 @@ ct_dol_ext_t ct_dol_ext_kor =
{
0x802a5000,
{ "rmck/boot_code.bin;boot_code.bin",
- 0, 0, // [[2do]] [[ct-korea]]
+ 0, 0, // [[ct-korea]]
FF_CT0_CODE },
0x80002800,
{ "rmck/boot_data.bin;boot_data.bin",
- 0, 0, // [[2do]] [[ct-korea]]
+ 0, 0, // [[ct-korea]]
FF_CT0_DATA },
};
@@ -2904,7 +2904,7 @@ const addr_port_t * GetPortingRecord ( str_mode_t mode, u32 addr )
}
const addr_port_t *p = base[beg];
- PRINT1("%u/%u: %08x + %06x + %06x, %08x\n",
+ PRINT0("%u/%u: %08x + %06x + %06x, %08x\n",
beg, addr_port_records,
p->addr[region], p->size1, p->size2,
(p[1]).addr[region] );
@@ -4841,7 +4841,7 @@ static bool CleanDol ( staticr_t * str ) // return TRUE if dol data modified.
uint sect_list;
dol_header_t *dol_head = (dol_header_t*)str->data;
- uint new_size = RemoveDolSections(dol_head,0x7f83,&sect_list,logging>2?stdlog:0);
+ uint new_size = RemoveDolSections(dol_head,0x7f83,&sect_list,logging>=3?stdlog:0);
bool stat = new_size > 0;
noPRINT("SIZE: %x -> %x / sect=%x\n",str->data_size,new_size,sect_list);
if (stat)
@@ -4963,7 +4963,8 @@ static void InititializeGCT()
wcode_job.grow_size = 0x0100;
wcode_data.grow_size = 0x0400;
- if (logging>2) TraceGCT("Init");
+ if ( logging >= 3 )
+ TraceGCT("Init");
}
}
@@ -5268,7 +5269,7 @@ static enumError SetupCodeLoader
+ code_size - cheat_offset;
#if defined(TEST) || defined(DEBUG) // || HAVE_WIIMM_EXT
- if (logging>2)
+ if ( logging >= 3 )
fprintf(stderr,
"SetupCodeLoader() %d+%d+%d = %d, c-off=0x%x, ch-type=%d, seg=%d => %s\n",
code_size, wcode_job.used, wcode_data.used, total_data_size,
@@ -5919,7 +5920,8 @@ static enumError AddWCode ( cvp data, uint size )
}
}
term:
- if (logging>2) TraceGCT("WCode");
+ if ( logging >= 3 )
+ TraceGCT("WCode");
return ERR_OK;
}
@@ -5984,7 +5986,7 @@ static enumError AddCheatCode
InsertGrowBuffer(&gecko_data,mgr->data,mgr->size);
u64 magic = hton64(GCT_MAGIC8_NUM);
InsertGrowBuffer(&gecko_data,&magic,sizeof(magic));
- if (logging>2)
+ if ( logging >= 3 )
TraceGCT("Setup");
}
@@ -6189,7 +6191,7 @@ static uint AddSectionsDOL
if ( gecko_data.used )
{
- if (logging>0)
+ if ( logging >= 1 )
fprintf(stdlog,">> GCT DATA/GROW, %u = 0x%x bytes\n",
gecko_data.used, gecko_data.used );
@@ -6203,7 +6205,7 @@ static uint AddSectionsDOL
InsertGrowBuffer(&gecko_data,&term,sizeof(term));
count += AddSectionGCH(str,gecko_data.ptr,gecko_data.used,"GCT",false);
- if ( verbose > 1 || logging > 1 )
+ if ( verbose > 1 || logging >= 2 )
{
fputs("\n Memory map of code handler and GCT files:\n",stdlog);
PrintMemMap(&gct_data_mem,stdlog,5,"part");
diff --git a/project/src/lib-std.c b/project/src/lib-std.c
index 3200eb4..1059810 100644
--- a/project/src/lib-std.c
+++ b/project/src/lib-std.c
@@ -75,11 +75,13 @@
///////////////////////////////////////////////////////////////////////////////
ccp opt_config = 0;
+bool opt_no_pager = false;
ccp tool_name = "?";
ccp std_share_path = 0;
ccp share_path = 0;
volatile int verbose = 0;
volatile int logging = 0;
+volatile int log_timing = 0;
bool allow_all = false;
char escape_char = '%';
bool use_utf8 = true;
@@ -368,6 +370,7 @@ void SetupColors()
void SetupLib ( int argc, char ** argv, ccp tname, ccp tvers, ccp ttitle )
{
SetupProgname(argc,argv,tname,tvers,ttitle);
+ ProgInfo.error_level = ERRLEV_HEADING;
#if LOG_PROGINFO
PRINT1("PROG1: %s | %s | %s\n",ProgInfo.progname,ProgInfo.progdir,ProgInfo.progpath);
@@ -412,284 +415,6 @@ void SetupLib ( int argc, char ** argv, ccp tname, ccp tvers, ccp ttitle )
TRACE("BIG_ENDIAN=%d\n",BIG_ENDIAN);
#endif
- // numeric types
-
- TRACE("- int\n");
- TRACE_SIZEOF(bool);
- TRACE_SIZEOF(short);
- TRACE_SIZEOF(int);
- TRACE_SIZEOF(long);
- TRACE_SIZEOF(long long);
- TRACE_SIZEOF(size_t);
- TRACE_SIZEOF(off_t);
-
- TRACE_SIZEOF(int8_t);
- TRACE_SIZEOF(int16_t);
- TRACE_SIZEOF(int32_t);
- TRACE_SIZEOF(int64_t);
- TRACE_SIZEOF(uint8_t);
- TRACE_SIZEOF(uint16_t);
- TRACE_SIZEOF(uint32_t);
- TRACE_SIZEOF(uint64_t);
-
- TRACE_SIZEOF(u8);
- TRACE_SIZEOF(u16);
- TRACE_SIZEOF(u32);
- TRACE_SIZEOF(u64);
- TRACE_SIZEOF(s8);
- TRACE_SIZEOF(s16);
- TRACE_SIZEOF(s32);
- TRACE_SIZEOF(s64);
- TRACE_SIZEOF(be16_t);
- TRACE_SIZEOF(be32_t);
- TRACE_SIZEOF(be64_t);
-
- TRACE("- numeric vectors\n");
- TRACE_SIZEOF(float);
- TRACE_SIZEOF(float32);
- TRACE_SIZEOF(float3);
- TRACE_SIZEOF(float3List_t);
-
- TRACE_SIZEOF(double);
- TRACE_SIZEOF(double3);
- TRACE_SIZEOF(double3List_t);
-
- TRACE_SIZEOF(float34);
- TRACE_SIZEOF(double34);
- TRACE_SIZEOF(MatrixD_t);
-
- TRACE("- mem\n");
- TRACE_SIZEOF(mem_t);
- TRACE_SIZEOF(exmem_t);
- TRACE_SIZEOF(exmem_key_t);
- TRACE_SIZEOF(exmem_list_t);
-
- TRACE("- sha1\n");
- TRACE_SIZEOF(sha1_hash_t);
- TRACE_SIZEOF(sha1_hex_t);
- TRACE_SIZEOF(sha1_type_t);
- TRACE_SIZEOF(sha1_db_t);
-
- TRACE("- arch\n");
- TRACE_SIZEOF(yaz0_header_t);
- TRACE_SIZEOF(wbz_header_t);
- TRACE_SIZEOF(szs_subfile_t);
- TRACE_SIZEOF(szs_subfile_list_t);
- TRACE_SIZEOF(szs_file_t);
- TRACE_SIZEOF(szs_extract_t);
- TRACE_SIZEOF(szs_iterator_t);
- TRACE_SIZEOF(string_pool_t);
- TRACE_SIZEOF(u8_header_t);
- TRACE_SIZEOF(u8_node_t);
- TRACE_SIZEOF(pack_header_t);
- TRACE_SIZEOF(pack_metric_t);
- TRACE_SIZEOF(rarc_file_header_t);
- TRACE_SIZEOF(rarc_header_t);
- TRACE_SIZEOF(rarc_node_t);
- TRACE_SIZEOF(rarc_entry_t);
-
- TRACE("- sub file system\n");
- TRACE_SIZEOF(SubDirList_t);
- TRACE_SIZEOF(SubDir_t);
- TRACE_SIZEOF(SubFileList_t);
- TRACE_SIZEOF(SubFile_t);
-
- TRACE("- brres\n");
- TRACE_SIZEOF(brres_t);
- TRACE_SIZEOF(brres_header_t);
- TRACE_SIZEOF(brres_root_t);
- TRACE_SIZEOF(brres_group_t);
- TRACE_SIZEOF(brres_entry_t);
- TRACE_SIZEOF(brsub_header_t);
- TRACE_SIZEOF(brsub_list_t);
- TRACE_SIZEOF(brsub_cut_t);
- TRACE_SIZEOF(grp_entry_t);
- TRACE_SIZEOF(tex_info_t);
-
- TRACE("- breff\n");
- TRACE_SIZEOF(breff_item_data_t);
- TRACE_SIZEOF(breff_item_list_t);
- TRACE_SIZEOF(breff_item_name_t);
- TRACE_SIZEOF(breff_root_t);
- TRACE_SIZEOF(breff_root_head_t);
- TRACE_SIZEOF(breft_image_t);
-
- TRACE("- bmg\n");
- TRACE_SIZEOF(bmg_header_t);
- TRACE_SIZEOF(bmg_section_t);
- TRACE_SIZEOF(bmg_inf_t);
- TRACE_SIZEOF(bmg_inf_item_t);
- TRACE_SIZEOF(bmg_dat_t);
- TRACE_SIZEOF(bmg_mid_t);
- TRACE_SIZEOF(bmg_flw_t);
- TRACE_SIZEOF(bmg_fli_t);
- TRACE_SIZEOF(bmg_t);
- TRACE_SIZEOF(bmg_item_t);
-
- TRACE("- ctcode\n");
- TRACE_SIZEOF(ctcode_header_t);
- TRACE_SIZEOF(ctcode_sect_info_t);
- TRACE_SIZEOF(ctcode_cup1_head_t);
- TRACE_SIZEOF(ctcode_cup1_data_t);
- TRACE_SIZEOF(ctcode_crs1_head_t);
- TRACE_SIZEOF(ctcode_crs1_data_t);
- TRACE_SIZEOF(ctcode_t);
-
- TRACE("- kcl\n");
- TRACE_SIZEOF(kcl_mode_t);
- TRACE_SIZEOF(kcl_t);
- TRACE_SIZEOF(kcl_head_t);
- TRACE_SIZEOF(kcl_triangle_t);
- TRACE_SIZEOF(kcl_tridata_status_t);
- TRACE_SIZEOF(kcl_tridata_flt_t);
- TRACE_SIZEOF(kcl_tridata_dbl_t);
- TRACE_SIZEOF(kcl_tridata0_t);
- TRACE_SIZEOF(kcl_tridata1_t);
- TRACE_SIZEOF(kcl_tridata_t);
- TRACE_SIZEOF(kcl_tri_param_t);
- TRACE_SIZEOF(kcl_cube_t);
- TRACE_SIZEOF(kcl_tri_t);
-
- TRACE("- kmp\n");
- TRACE_SIZEOF(kmp_t);
- TRACE_SIZEOF(kmp_ph_t);
- TRACE_SIZEOF(kmp_flag_t);
- TRACE_SIZEOF(kmp_file_mkw_t);
- TRACE_SIZEOF(kmp_gopt_t);
- TRACE_SIZEOF(kmp_gopt2_t);
- TRACE_SIZEOF(kmp_group_t);
- TRACE_SIZEOF(kmp_group_list_t);
- TRACE_SIZEOF(kmp_group_name_t);
- TRACE_SIZEOF(kmp_rtobj_t);
- TRACE_SIZEOF(kmp_rtobj_list_t);
- TRACE_SIZEOF(kmp_linfo_mode);
- TRACE_SIZEOF(kmp_linfo_t);
-
- TRACE_SIZEOF(kmp_area_entry_t);
- TRACE_SIZEOF(kmp_came_entry_t);
- TRACE_SIZEOF(kmp_ckph_entry_t);
- TRACE_SIZEOF(kmp_ckpt_entry_t);
- TRACE_SIZEOF(kmp_cnpt_entry_t);
- TRACE_SIZEOF(kmp_enph_entry_t);
- TRACE_SIZEOF(kmp_enpt_entry_t);
- TRACE_SIZEOF(kmp_gobj_entry_t);
- TRACE_SIZEOF(kmp_itph_entry_t);
- TRACE_SIZEOF(kmp_itpt_entry_t);
- TRACE_SIZEOF(kmp_jgpt_entry_t);
- TRACE_SIZEOF(kmp_ktpt_entry_t);
- TRACE_SIZEOF(kmp_mspt_entry_t);
- TRACE_SIZEOF(kmp_poti_group_t);
- TRACE_SIZEOF(kmp_poti_point_t);
- TRACE_SIZEOF(kmp_stgi_entry_t);
-
- TRACE_SIZEOF(pos_param_t);
- TRACE_SIZEOF(pos_file_t);
-
- TRACE("- mdl\n");
- TRACE_SIZEOF(mdl_t);
- TRACE_SIZEOF(mdl_head_t);
- TRACE_SIZEOF(mdl_sect0_t);
- TRACE_SIZEOF(mdl_sect1_t);
- TRACE_SIZEOF(mdl_sect2_t);
- TRACE_SIZEOF(mdl_sect8_t);
- TRACE_SIZEOF(mdl_sect8_layer_t);
- TRACE_SIZEOF(mdl_sect10_t);
- TRACE_SIZEOF(mdl_minimap_t);
-
- TRACE("- pat\n");
- TRACE_SIZEOF(pat_t);
- TRACE_SIZEOF(pat_element_t);
- TRACE_SIZEOF(pat_analyse_t);
- TRACE_SIZEOF(pat_head_t);
- TRACE_SIZEOF(pat_s0_bhead_t);
- TRACE_SIZEOF(pat_s0_belem_t);
- TRACE_SIZEOF(pat_s0_sref_t);
- TRACE_SIZEOF(pat_s0_shead_t);
- TRACE_SIZEOF(pat_s0_selem_t);
-
- TRACE("- static rel\n");
- TRACE_SIZEOF(rel_header_t);
- TRACE_SIZEOF(rel_sect_info_t);
- TRACE_SIZEOF(rel_imp_t);
- TRACE_SIZEOF(rel_data_t);
- TRACE_SIZEOF(rel_type_t);
-
- TRACE("- tpl, bti\n");
- TRACE_SIZEOF(tpl_header_t);
- TRACE_SIZEOF(tpl_imgtab_t);
- TRACE_SIZEOF(tpl_pal_header_t);
- TRACE_SIZEOF(tpl_img_header_t);
- TRACE_SIZEOF(bti_header_t);
-
- TRACE("- common.szs\n");
- TRACE_SIZEOF(geohit_bin_t);
- TRACE_SIZEOF(geohit_t);
- TRACE_SIZEOF(itemslot_bin_t);
- TRACE_SIZEOF(itemslot_t);
- TRACE_SIZEOF(minigame_kmg_head_t);
- TRACE_SIZEOF(minigame_kmg_t);
-
- TRACE("---\n");
- TRACE_SIZEOF(Color_t);
- TRACE_SIZEOF(KeywordTab_t);
- TRACE_SIZEOF(Container_t);
- TRACE_SIZEOF(ContainerData_t);
- TRACE_SIZEOF(DataContainer_t);
- TRACE_SIZEOF(File_t);
- TRACE_SIZEOF(FileAttrib_t);
- TRACE_SIZEOF(FormatField_t);
- TRACE_SIZEOF(FormatFieldItem_t);
- TRACE_SIZEOF(FuncInfo_t);
- TRACE_SIZEOF(FuncParam_t);
- TRACE_SIZEOF(Image_t);
- TRACE_SIZEOF(ImageGeometry_t);
- TRACE_SIZEOF(iobuf);
- TRACE_SIZEOF(List_t);
- TRACE_SIZEOF(MemItem_t);
- TRACE_SIZEOF(ParamList_t);
- TRACE_SIZEOF(PatchImage_t);
- TRACE_SIZEOF(ScanFile_t);
- TRACE_SIZEOF(ScanInfo_t);
- TRACE_SIZEOF(ScanLoop_t);
- TRACE_SIZEOF(ScanMacro_t);
- TRACE_SIZEOF(ScanParamMode);
- TRACE_SIZEOF(ScanParam_t);
- TRACE_SIZEOF(SetupDef_t);
- TRACE_SIZEOF(ListDef_t);
- TRACE_SIZEOF(SetupParam_t);
- TRACE_SIZEOF(StringField_t);
- TRACE_SIZEOF(SubstString_t);
- TRACE_SIZEOF(TrackInfo_t);
- TRACE_SIZEOF(VarMode_t);
- TRACE_SIZEOF(IntMode_t);
- TRACE_SIZEOF(Var_t);
- TRACE_SIZEOF(VarMap_t);
-
- TRACE("- DbFile\n");
- TRACE_SIZEOF(DbFile_t);
- TRACE_SIZEOF(DbFile);
- TRACE_SIZEOF(UsedFile_t);
- TRACE_SIZEOF(DbFileSZS_t);
- TRACE_SIZEOF(DbFileSZS);
- TRACE_SIZEOF(DbFileRefSZS);
- TRACE_SIZEOF(UsedFileSZS_t);
- TRACE_SIZEOF(DbFileSHA1_t);
- TRACE_SIZEOF(DbFileSHA1);
- TRACE_SIZEOF(DbFileRefSHA1);
- TRACE_SIZEOF(UsedFileSHA1_t);
- TRACE_SIZEOF(DbFileFILE_t);
- TRACE_SIZEOF(DbFileFILE);
- TRACE_SIZEOF(DbFileRefFILE);
- TRACE_SIZEOF(UsedFileFILE_t);
- TRACE_SIZEOF(DbFileGROUP_t);
- TRACE_SIZEOF(DbFileGROUP);
- TRACE_SIZEOF(DbFileRefGROUP);
- TRACE_SIZEOF(UsedFileGROUP_t);
-
- TRACE("- DbObject\n");
- TRACE_SIZEOF(ObjectInfo);
- TRACE_SIZEOF(UsedObject_t);
-
// assertions
TRACE("-\n");
@@ -717,7 +442,8 @@ void SetupLib ( int argc, char ** argv, ccp tname, ccp tvers, ccp ttitle )
TRACE("-\n");
- //----- some assertion
+
+ //----- more assertions
#if HAVE_ASSERT
{
@@ -741,6 +467,7 @@ void SetupLib ( int argc, char ** argv, ccp tname, ccp tvers, ccp ttitle )
}
#endif
+
//----- initialize data structures
InitializeParamField(&patch_bmg_list);
@@ -769,6 +496,7 @@ void SetupLib ( int argc, char ** argv, ccp tname, ccp tvers, ccp ttitle )
#endif
}
+
//--- misc
SetupStandardSZS();
@@ -787,6 +515,8 @@ void NormalizeOptions
)
{
SetupColors();
+ ProgInfo.error_level = logging > 0 ? ERRLEV_EXTENDED : ERRLEV_HEADING;
+
//--- load configuration
@@ -795,6 +525,12 @@ void NormalizeOptions
share_path = config->share_path;
+ //--- logging & log_timing
+
+ if ( logging >= 3 && !log_timing )
+ log_timing++;
+
+
//--- diff, delta and minimize
minimize_level = delta_count < 9 ? delta_count : 9;
@@ -964,8 +700,9 @@ ccp LibGetErrorText ( int stat, ccp ret_not_found )
void SetupPager()
{
- if (isatty(fileno(stdout)))
+ if ( !opt_no_pager && isatty(fileno(stdout)) )
{
+ fflush(stdout);
opt_colorize = 1;
SetupColors();
StdoutToPager();
@@ -3938,6 +3675,7 @@ void cmd_version_section
if ( verbose > 0 )
printf(
+ "\n"
#ifdef _POSIX_C_SOURCE
"posix_c_source=%s\n"
#endif
@@ -4101,9 +3839,52 @@ enumError cmd_argtest ( int argc, char ** argv )
{
printf("ARGUMENT TEST: %u arguments:\n",argc);
- int idx;
- for ( idx = 0; idx < argc; idx++ )
- printf("%4u.: |%s|\n",idx,argv[idx]);
+ for ( int idx = 0; idx < argc; idx++ )
+ printf("%4u: |%s|\n",idx,argv[idx]);
+ return ERR_OK;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// command expand ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError path_found ( mem_t path, uint st_mode, void * param )
+{
+ printf(" > %s%s\n", path.ptr, S_ISDIR(st_mode) ? "/" : "" );
+ return ERR_OK;
+}
+
+//-----------------------------------------------------------------------------
+
+enumError cmd_expand ( int argc, char ** argv )
+{
+ SetupPager();
+ printf("%sExpand %d Argument%s:%s\n",
+ colout->caption,
+ n_param, n_param == 1 ? "" : "s",
+ colout->reset );
+
+ bool allow_hidden = false;
+ for ( ParamList_t *param = first_param; param; param = param->next )
+ {
+ if (!strcmp(param->arg,"/h"))
+ {
+ allow_hidden = false;
+ printf("%sIgnore hidden files.%s\n", colout->info, colout->reset );
+ }
+ else if (!strcmp(param->arg,"+h"))
+ {
+ allow_hidden = true;
+ printf("%sSearch hidden files too.%s\n", colout->info, colout->reset );
+ }
+ else
+ {
+ NORMALIZE_FILENAME_PARAM(param);
+ printf("%s%s%s\n", colout->hint, param->arg, colout->reset );
+ SearchPaths(param->arg,0,allow_hidden,path_found,0);
+ }
+ }
return ERR_OK;
}
@@ -4221,16 +4002,16 @@ enumError cmd_filetype()
if ( long_count > 1 )
printf("\n"
- "type decomp vers valid file name\n"
- "%.*s\n", max_len + 29, Minus300 );
+ "type decomp vers valid file name\n"
+ "%.*s\n", max_len + 31, Minus300 );
else if ( long_count )
printf("\n"
- "type decomp vers file name\n"
- "%.*s\n", max_len + 23, Minus300 );
+ "type decomp vers file name\n"
+ "%.*s\n", max_len + 25, Minus300 );
else
printf("\n"
- "type file name\n"
- "%.*s\n", max_len + 8, Minus300 );
+ "type file name\n"
+ "%.*s\n", max_len + 9, Minus300 );
}
ParamList_t *param;
@@ -4339,14 +4120,14 @@ enumError cmd_filetype()
else
valid = IsValid(buf,written,fatt.size,0,fform2,param->arg);
}
- printf("%-6s %-6s %7s %-5s %s\n",
+ printf("%-7s %-7s %7s %-5s %s\n",
stat1, stat2, vbuf, valid_text[valid], param->arg );
}
else
- printf("%-6s %-6s %7s %s\n",stat1,stat2,vbuf,param->arg);
+ printf("%-7s %-7s %7s %s\n",stat1,stat2,vbuf,param->arg);
}
else
- printf("%-6s %s\n",stat1,param->arg);
+ printf("%-7s %s\n",stat1,param->arg);
}
}
@@ -5199,7 +4980,7 @@ file_format_t RepairMagic
if ( rep->mode == REPMD_ANALYZE && rep->magic_len )
{
- if (logging>1)
+ if ( logging >= 2 )
fprintf(stderr,"REPAIR MAGIC: %s -> %s (%s) : %s\n",
PrintID(data,rep->magic_len,0),
PrintID(rep->magic,rep->magic_len,0),
@@ -6619,7 +6400,7 @@ valid_t IsValidKCL
//--- logging
- if ( logging > 1 )
+ if ( logging >= 2 )
{
fprintf(stdlog,"\nMemory map of KCL sections: %s\n", fname ? fname : "" );
PrintMemMap(&mm,stdlog,3,"info");
diff --git a/project/src/lib-std.h b/project/src/lib-std.h
index f5d042d..599a25c 100644
--- a/project/src/lib-std.h
+++ b/project/src/lib-std.h
@@ -2100,6 +2100,136 @@ ccp GetSha1Data ( cvp data, uint size );
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// mkw_prefix_flags_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[mkw_prefix_flags_t]]
+
+typedef enum mkw_prefix_flags_t
+{
+ MPF_NINTENDO = 0x01, // N: by Nintendo
+ MPF_MARIOKART = 0x02, // M: Mario Kaert series
+ MPF_PREFIX1 = 0x04, // 1: can be used as part 1 for a prefix pair
+ MPF_PREFIX2 = 0x08, // 2: can be used as part 2 for a prefix pair
+}
+__attribute__ ((packed)) mkw_prefix_flags_t;
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// mkw_prefix_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[mkw_prefix_t]]
+
+typedef struct mkw_prefix_t
+{
+ char prefix[8];
+ ccp info; // if NULL: list terminator
+ mkw_prefix_flags_t flags;
+ u8 order;
+ u8 color;
+}
+mkw_prefix_t;
+
+///////////////////////////////////////////////////////////////////////////////
+
+int ScanOptLoadPrefix ( ccp arg );
+
+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 );
+
+// if tab==0: Use GetPrefixTable()
+enumError SavePrefixTable ( FILE *f, const mkw_prefix_t * tab );
+enumError SavePrefixTableFN ( ccp fname, const mkw_prefix_t * tab );
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// split_filename_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[split_filename_t]]
+
+#define SUPPORT_SPLIT_SIGN 0
+
+typedef struct split_filename_t
+{
+ mem_t source; // full source without leading directories
+
+ //--- split source into 3 parts
+
+ mem_t f_name; // name part
+ mem_t f_d; // empty or "_d"
+ mem_t f_ext; // file extention
+
+ //--- split name into 3 parts
+
+ mem_t norm; // normalized name, alloced
+
+ mem_t plus;
+ #if SUPPORT_SPLIT_SIGN
+ mem_t sign;
+ #endif
+ mem_t boost;
+ mem_t game1;
+ mem_t game2;
+ mem_t game;
+ mem_t name;
+ mem_t extra;
+ mem_t version;
+ mem_t authors;
+ mem_t attribs;
+
+
+ //--- misc
+
+ uint plus_order;
+ uint game_order;
+ uint game_color;
+
+ ccp input;
+ bool input_alloced;
+}
+split_filename_t;
+
+//-----------------------------------------------------------------------------
+
+extern ccp opt_plus;
+
+static inline void InitializeSPF ( split_filename_t *spf )
+ { DASSERT(spf); memset(spf,0,sizeof(*spf)); }
+
+void ResetSPF ( split_filename_t *spf );
+void AnalyseSPF
+(
+ split_filename_t *spf, // valid pointet
+ bool init_spf, // true: InitializeSPF(), false: ResetSPF()
+ ccp source, // NULL or ponter to name
+ ccp src_end, // end of source. if 0 then use strlen()
+ CopyMode_t cpm, // copy mode for 'source'
+ ccp plus_mode // NULL or string of format '[max][','][chars]'
+);
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// output_mode_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[output_mode_t]]
+
+typedef struct output_mode_t
+{
+ bool syntax; // true: print syntax infos
+ u8 mode; // 1:list, 2:ref, 3:full
+ bool cross_ref; // true: print cross reference infos
+ bool hex; // true: force hex out
+ bool lecode; // true: print LE-CODE specific data
+}
+output_mode_t;
+
+extern output_mode_t output_mode;
+void InitializeOutputMode ( output_mode_t * outmode );
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// misc ///////////////
///////////////////////////////////////////////////////////////////////////////
// [[IsArena_t]]
@@ -2141,6 +2271,7 @@ void cmd_version_section
enumError cmd_config();
enumError cmd_install();
enumError cmd_argtest ( int argc, char ** argv );
+enumError cmd_expand ( int argc, char ** argv );
enumError cmd_error();
enumError cmd_filetype();
enumError cmd_fileattrib();
@@ -2259,25 +2390,6 @@ static inline ccp PrintU16M1 ( u16 num )
//
///////////////////////////////////////////////////////////////////////////////
-/////////////// output_mode_t ///////////////
-///////////////////////////////////////////////////////////////////////////////
-// [[output_mode_t]]
-
-typedef struct output_mode_t
-{
- bool syntax; // true: print syntax infos
- u8 mode; // 1:list, 2:ref, 3:full
- bool cross_ref; // true: print cross reference infos
- bool hex; // true: force hex out
- bool lecode; // true: print LE-CODE specific data
-}
-output_mode_t;
-
-extern output_mode_t output_mode;
-void InitializeOutputMode ( output_mode_t * outmode );
-
-//
-///////////////////////////////////////////////////////////////////////////////
/////////////// apple only ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -2301,12 +2413,14 @@ extern const u8 TestDataLEX[8*1];
///////////////////////////////////////////////////////////////////////////////
extern ccp opt_config;
+extern bool opt_no_pager;
extern ccp config_path;
extern ccp tool_name;
extern ccp std_share_path;
extern ccp share_path;
extern volatile int verbose;
extern volatile int logging;
+extern volatile int log_timing;
extern bool allow_all;
extern char escape_char;
extern bool use_utf8;
diff --git a/project/src/lib-szs-create.c b/project/src/lib-szs-create.c
index 9463e5b..8d394b7 100644
--- a/project/src/lib-szs-create.c
+++ b/project/src/lib-szs-create.c
@@ -890,7 +890,7 @@ enumError CreateSZS
//--- debugging
- if ( logging > 1 )
+ if ( logging >= 2 )
{
int i;
for ( i = 0; i < szs->subfile.used; i++ )
@@ -4884,7 +4884,7 @@ void AnalyseSZS
(
analyse_szs_t *as, // result
bool init_sa, // true: init 'as', false: reset 'as'
- szs_file_t *szs, // SZS filre t analysze
+ szs_file_t *szs, // SZS file to analysze
ccp fname // NULL or fname for slot analysis
)
{
diff --git a/project/src/lib-szs.c b/project/src/lib-szs.c
index 7230c73..9fe30db 100644
--- a/project/src/lib-szs.c
+++ b/project/src/lib-szs.c
@@ -1218,7 +1218,7 @@ static enumError BackTrackYAZ ( yaz_compr_t *yaz, uint max_depth )
if ( max_depth > BACK_TRACK_MAX_DEPTH )
max_depth = BACK_TRACK_MAX_DEPTH;
- if (logging)
+ if ( logging >= 1 )
{
fprintf(stdlog,">>YAZ back tracking: depth=%u, max-depth=%u\n",
max_depth, BACK_TRACK_MAX_DEPTH );
@@ -2483,7 +2483,7 @@ enumError CreateU8
//--- debugging
- if ( logging > 0 )
+ if ( logging >= 1 )
{
printf("----- internal file list -----\n");
IterateFilesParSZS(szs,PrintFileSZS,0,false,true,0,0,SORT_NONE);
diff --git a/project/src/lib-szs.h b/project/src/lib-szs.h
index 8fd85bb..834b4e0 100644
--- a/project/src/lib-szs.h
+++ b/project/src/lib-szs.h
@@ -1384,8 +1384,8 @@ typedef struct raw_data_t
DataContainer_t *old_container; // old data [[container]] support, init with NULL
Container_t container; // container data
-
-} raw_data_t;
+}
+raw_data_t;
///////////////////////////////////////////////////////////////////////////////
@@ -1461,7 +1461,7 @@ typedef struct analyse_szs_t
sha1_hex_t sha1_vrcorn; // SHA1 of vrcorn
sha1_hex_t sha1_minimap; // SHA1 of minimap
- //--- slots of orgiginal tarcks: 0:none, 11.84:track 111..125:arena
+ //--- slots of orgiginal tracks: 0:none, 11.84:track 111..125:arena
u8 sha1_kmp_slot;
u8 sha1_kmp_norm_slot;
@@ -1502,7 +1502,7 @@ void AnalyseSZS
(
analyse_szs_t *as, // result
bool init_sa, // true: init 'as', false: reset 'as'
- szs_file_t *szs, // SZS filre t analysze
+ szs_file_t *szs, // SZS file to analysze
ccp fname // NULL or fname for slot analysis
);
diff --git a/project/src/lib-xbmg.c b/project/src/lib-xbmg.c
index 5a82e46..0c46cc4 100644
--- a/project/src/lib-xbmg.c
+++ b/project/src/lib-xbmg.c
@@ -1287,7 +1287,7 @@ int ScanOptFilterBMG ( ccp arg )
memset( filter_message+a3, value, b3-a3 );
}
- if ( logging > 1 )
+ if ( logging >= 2 )
HexDump016(stderr,0,0,filter_message,MAX_FILTER_MSG);
return 0;
diff --git a/project/src/prefix.inc b/project/src/prefix.inc
new file mode 100644
index 0000000..00ea477
--- /dev/null
+++ b/project/src/prefix.inc
@@ -0,0 +1,83 @@
+
+static const u8 prefix_inc_bz2[] =
+{
+ // decompressed size: 0x9c1 = 2497 bytes
+ 0x00,0x00,0x09,0xc1,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xb6,0xa4, 0x97,0xb5,0x00,0x00,
+ 0xe9,0xdf,0x80,0x00, 0x12,0x61,0xef,0x7f, 0xf0,0x3f,0xef,0xdf, 0xf0,0x3f,0xef,0xff,
+ 0xe4,0x50,0x04,0x3e, 0x64,0xe8,0x6b,0x76, 0xdd,0xbb,0x6d,0xb3, 0x93,0x98,0x68,0x85,
+ 0x3d,0x34,0xd1,0x3d, 0x13,0x43,0x04,0xda, 0xa3,0x4f,0x28,0xda, 0x69,0x0c,0x80,0x00,
+ 0x00,0xd0,0x34,0x25, 0x31,0xa6,0x4c,0x9a, 0x69,0xa9,0x18,0x01, 0x06,0x80,0x62,0x06,
+ 0x80,0xd0,0x68,0x01, 0xa0,0x9a,0x14,0xf4, 0x29,0x93,0xf4,0xd5, 0x07,0xa4,0xd0,0x34,
+ 0x68,0xd0,0x7a,0x80, 0x00,0x68,0x00,0x1c, 0xd3,0x13,0x26,0x4d, 0x18,0x4c,0x13,0x13,
+ 0x4c,0x02,0x60,0x10, 0xc1,0x18,0x11,0x80, 0x48,0x90,0x99,0x05, 0x32,0x30,0x8d,0x35,
+ 0x3d,0x02,0x81,0xb5, 0x06,0xd4,0x1b,0x21, 0x91,0xa9,0xed,0x0a, 0x1e,0xa3,0x04,0x83,
+ 0xd8,0x12,0x0f,0x4f, 0x8f,0x1f,0xcf,0x62, 0xf3,0xa7,0x6b,0xfb, 0x7b,0x6f,0x95,0x62,
+ 0x02,0x47,0x86,0x11, 0x59,0xfa,0xdf,0x33, 0x67,0x8d,0x76,0x56, 0xec,0x0f,0x49,0x5b,
+ 0xa3,0xef,0xe0,0xac, 0x11,0x79,0xe9,0xbf, 0xca,0x78,0x97,0xe8, 0xad,0xaf,0xf3,0xe2,
+ 0xc6,0xc9,0x43,0x41, 0x6c,0x19,0x85,0xa9, 0x64,0xa1,0x96,0x5c, 0x29,0xaa,0x08,0x49,
+ 0x5d,0x5d,0xf5,0xbd, 0xcf,0xab,0x70,0xba, 0xf6,0x09,0xee,0xb5, 0x20,0x31,0xc4,0xda,
+ 0xa9,0x4d,0x01,0xf3, 0x15,0xc8,0x3f,0x73, 0xc9,0x91,0xd5,0x34, 0x61,0x38,0xae,0x29,
+ 0x4c,0x66,0xf2,0x7b, 0xb3,0xb6,0x39,0xc7, 0x8d,0x87,0x28,0xdc, 0x05,0xfd,0xea,0xc2,
+ 0x3f,0x62,0xa6,0xbd, 0x2f,0xcb,0x8f,0x7b, 0x61,0x51,0xab,0x40, 0x07,0xac,0x81,0x28,
+ 0xfb,0x69,0x5c,0xdd, 0xda,0x68,0x09,0xfd, 0x6c,0xa5,0x72,0x45, 0x55,0x7b,0xed,0x65,
+ 0x72,0xfd,0xfb,0x0b, 0xc5,0xa0,0x73,0xee, 0x1b,0x6d,0x26,0x21, 0x2b,0xb0,0xc7,0x28,
+ 0x72,0x93,0x3b,0xa8, 0x44,0x44,0x28,0x85, 0x3e,0x89,0xc9,0x09, 0x29,0xfb,0xe0,0xf9,
+ 0x31,0x82,0x49,0x9b, 0x35,0x59,0xa8,0x2e, 0x34,0xc9,0x6d,0x89, 0x3c,0x00,0x56,0x6c,
+ 0xe1,0x84,0x35,0x17, 0xc1,0x51,0xe0,0x42, 0xe3,0x41,0x16,0x65, 0x41,0x0f,0x4d,0x0c,
+ 0xe2,0x85,0x58,0xdb, 0x4f,0xd7,0x6f,0x7d, 0xc6,0x8a,0x99,0x9e, 0xdf,0x73,0x8e,0x3c,
+ 0xb1,0xd8,0xca,0x7d, 0x60,0x33,0x26,0x1c, 0xfa,0x8e,0x23,0x75, 0x16,0xac,0x9b,0x51,
+ 0x55,0xe7,0x9e,0x65, 0xfe,0x25,0x24,0xc2, 0x7a,0x21,0x32,0xe3, 0xca,0x43,0xdf,0x3e,
+ 0x37,0x75,0x65,0xb2, 0x45,0x40,0xe4,0x60, 0xb2,0x66,0x6c,0xd6, 0x9b,0x26,0x41,0xf1,
+ 0xa0,0x96,0x01,0xc2, 0xcb,0xaf,0x64,0x34, 0x3e,0x5e,0x4e,0x4c, 0xb1,0x46,0x22,0x4c,
+ 0x69,0x8d,0xa7,0x99, 0xa2,0xd6,0xd5,0x21, 0x27,0x41,0xe7,0x25, 0x22,0x96,0xc7,0x86,
+ 0xe8,0x53,0xb5,0x6b, 0xb5,0x8a,0xeb,0xed, 0xa7,0xdf,0x6b,0xfd, 0x59,0x62,0x22,0x61,
+ 0x91,0x9a,0xef,0x5e, 0x93,0x46,0x3b,0x0e, 0x6d,0x88,0xf5,0xbb, 0xe4,0xe8,0x0e,0x4a,
+ 0xc1,0xa0,0x2b,0x4c, 0x81,0x5a,0xda,0x54, 0x14,0x75,0x88,0x3f, 0x84,0x40,0xc4,0xdb,
+ 0x1b,0xd7,0x10,0xdb, 0x11,0xbd,0x64,0x2e, 0x6b,0x5f,0x23,0x5e, 0x06,0x9e,0x23,0x0c,
+ 0x18,0xd3,0x26,0xd2, 0x4f,0x7e,0x7c,0xe5, 0x2b,0x61,0x13,0x89, 0xcd,0xfb,0x6b,0x3c,
+ 0x54,0x88,0x08,0x64, 0xe8,0x81,0x94,0x94, 0x28,0x13,0x6a,0xf2, 0x58,0xd8,0xc1,0xc2,
+ 0xa2,0x5e,0x8e,0x93, 0xd6,0x6c,0x71,0x02, 0x45,0xdb,0x53,0x4a, 0xa8,0x97,0x36,0x90,
+ 0xcd,0x66,0xc3,0xdf, 0x70,0xb2,0x5e,0xe8, 0xe8,0x37,0x21,0x52, 0x85,0xbf,0x7c,0xcb,
+ 0x00,0x15,0x59,0xf4, 0x80,0x56,0xca,0x16, 0x59,0x2b,0xae,0xe0, 0x95,0xee,0xff,0xe4,
+ 0xaf,0xb5,0xa5,0xf3, 0x33,0x53,0x31,0x75, 0xb5,0x8b,0xb6,0x3a, 0xf9,0xe4,0x6d,0x7c,
+ 0x29,0x84,0x24,0x70, 0x82,0x1b,0x56,0x60, 0xc3,0x9d,0xba,0xe5, 0x53,0xca,0x26,0xfc,
+ 0x35,0xa0,0xed,0x53, 0x91,0x8d,0x8d,0xa5, 0xc6,0x1a,0x3a,0x35, 0x36,0x6d,0xbe,0xf1,
+ 0xf8,0xc6,0xe6,0x9c, 0xc3,0x18,0x2e,0x18, 0x21,0xb7,0x0a,0x77, 0x6d,0x68,0xd6,0x79,
+ 0x85,0x8b,0xb5,0x57, 0xb1,0x3b,0xae,0x70, 0x1a,0xea,0x29,0xb3, 0x10,0xbe,0xc0,0xd0,
+ 0xa2,0xdc,0xcc,0x9b, 0x72,0x09,0x74,0xb9, 0x01,0x8a,0x30,0x5d, 0x1e,0xe5,0x2d,0x65,
+ 0xb3,0xb5,0x0c,0x38, 0x2c,0x2e,0xad,0xda, 0x7e,0xea,0x2e,0x2d, 0xdc,0x37,0x5e,0x44,
+ 0x2e,0x9d,0x72,0xb9, 0xe1,0xbe,0x46,0x19, 0xc5,0x06,0x70,0x41, 0x42,0xa3,0x04,0x43,
+ 0x3d,0xd9,0x35,0x70, 0x49,0x29,0x3d,0xb9, 0x6f,0x9d,0x71,0xd4, 0x4b,0x40,0xbf,0x88,
+ 0xc9,0x47,0x62,0xb2, 0x22,0x0e,0x49,0xf2, 0x85,0x65,0xce,0x8c, 0x8b,0x15,0x23,0x14,
+ 0x60,0x4d,0x2e,0x5b, 0x84,0xa6,0x16,0xbd, 0x73,0xd1,0x32,0x1b, 0x98,0xa6,0xf5,0xc0,
+ 0x50,0xb8,0x6e,0x08, 0x74,0xca,0x14,0xd3, 0x72,0x80,0x20,0x44, 0xfa,0xef,0xa4,0xf1,
+ 0xa1,0x0c,0x91,0x29, 0x36,0x5c,0x22,0x30, 0x40,0x19,0x90,0x3c, 0x0d,0x91,0xe1,0x22,
+ 0xb9,0x81,0xec,0x54, 0x34,0x36,0xc0,0x8c, 0x25,0x05,0x3d,0xe3, 0x56,0x94,0xc2,0x8e,
+ 0x4d,0x0b,0xaf,0x8d, 0xa1,0x70,0x8b,0x74, 0x6a,0x32,0xc9,0x36, 0x08,0x60,0x00,0xa2,
+ 0x84,0x66,0x11,0x40, 0xcc,0x10,0x96,0x14, 0x51,0x9d,0x89,0x4b, 0x59,0x86,0xe9,0x4b,
+ 0x7d,0xb9,0x0e,0xaa, 0x9f,0x64,0x64,0x62, 0x5f,0x4e,0x96,0x02, 0x6f,0x94,0xa1,0x9f,
+ 0xfa,0x82,0x32,0x82, 0x8d,0x80,0x37,0x41, 0x89,0xdf,0x26,0x7a, 0xea,0x66,0xa8,0xb4,
+ 0x99,0x76,0x88,0x39, 0xf6,0x60,0x89,0x9c, 0xb7,0xe3,0xc0,0xe9, 0x73,0xc7,0xaa,0x7b,
+ 0x5f,0x5e,0x5a,0xfc, 0x4a,0x8b,0x3b,0xfd, 0x1a,0x53,0x6b,0x76, 0x25,0x2d,0x39,0x35,
+ 0x4e,0x65,0x38,0x1d, 0x8a,0x81,0xe8,0x4c, 0x66,0x6a,0xf4,0x0b, 0xfd,0x29,0x67,0xbf,
+ 0x8a,0x8e,0xe5,0x64, 0x00,0x9f,0xc8,0x7b, 0x96,0x84,0x2a,0xb1, 0x50,0x97,0x2c,0x49,
+ 0xcf,0x7a,0x00,0x77, 0xa8,0xe3,0xa0,0x4b, 0x64,0xa7,0x74,0x57, 0x3e,0x46,0x74,0x21,
+ 0x82,0x0e,0xef,0xf3, 0x20,0x5f,0xa6,0x07, 0xd6,0x88,0x47,0x8d, 0x20,0x5f,0xe4,0x43,
+ 0x60,0x8f,0x26,0xa9, 0x28,0x6e,0x90,0xe1, 0x43,0x6e,0x23,0xca, 0x37,0xd6,0xca,0xa9,
+ 0x4f,0x6d,0xe4,0x49, 0xb4,0x09,0x31,0x1e, 0x22,0x12,0xc0,0x3f, 0x2b,0x97,0xc3,0xb6,
+ 0x03,0x2e,0xce,0xef, 0x09,0xae,0x57,0x4e, 0x6c,0xf8,0x1f,0xc4, 0xbd,0xba,0x7f,0x3e,
+ 0xae,0xff,0x0e,0xd6, 0xcf,0x0a,0x4e,0xc7, 0xdc,0xd9,0x0f,0xf8, 0xed,0x49,0xfd,0xb1,
+ 0xc1,0x60,0x49,0x96, 0x7d,0x94,0xa4,0x66, 0xaf,0x43,0xd7,0x4f, 0xa5,0x4f,0x92,0x68,
+ 0x3c,0x52,0xb3,0x4c, 0x3e,0x0a,0xa5,0xde, 0x71,0xcd,0xb5,0x0a, 0x6d,0x45,0x45,0x7d,
+ 0xf5,0xee,0x29,0x8c, 0x6e,0xe5,0x46,0x26, 0x40,0xcc,0x5d,0x8b, 0xb6,0xd8,0xf8,0x6d,
+ 0x89,0xc2,0x23,0x7e, 0x3a,0x4e,0xac,0x63, 0x22,0x6a,0xbe,0x4f, 0x07,0x28,0x61,0x65,
+ 0x10,0x6a,0x87,0xf8, 0xbb,0x92,0x29,0xc2, 0x84,0x85,0xb5,0x24, 0xbd,0xa8,
+ // 0x45e = 1118 data bytes (45%)
+};
+
+static BZ2Manager_t prefix_inc_mgr
+ = { prefix_inc_bz2, sizeof(prefix_inc_bz2), 0, 0 };
+
diff --git a/project/src/ui/tab-wbmgt.inc b/project/src/ui/tab-wbmgt.inc
index 753342c..8e38144 100644
--- a/project/src/ui/tab-wbmgt.inc
+++ b/project/src/ui/tab-wbmgt.inc
@@ -67,6 +67,10 @@
"wbmgt ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wbmgt EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wbmgt TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -212,6 +216,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -221,6 +229,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -471,13 +482,16 @@
//---------- COMMAND wbmgt ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+ //---------- COMMAND wbmgt EXPAND ----------
+
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wbmgt TEST ----------
{ T_CMD_BEG, "TEST", 0,0,0 },
-
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wbmgt COLORS ----------
diff --git a/project/src/ui/tab-wctct.inc b/project/src/ui/tab-wctct.inc
index bb24731..312a34a 100644
--- a/project/src/ui/tab-wctct.inc
+++ b/project/src/ui/tab-wctct.inc
@@ -68,6 +68,10 @@
"wctct ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wctct EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wctct TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -199,6 +203,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -208,6 +216,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -346,6 +357,11 @@
{ T_OPT_GO, "REPAIR_MAGICS", "repair-magics|repairmagics",
0, 0 /* copy of wszst */ },
+ { T_OPT_GP, "CREATE_DISTRIB", "create-distrib|createdistrib",
+ "file",
+ "Create a LE-CODE distribution dump with a track list and more info about"
+ " the current distribution. Store the dump info a file." },
+
#if OPT_OLD_NEW
{ H_OPT_GM, "OLD", "OLD",
0, 0 /* copy of wszst */ },
@@ -589,13 +605,16 @@
//---------- COMMAND wctct ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wctct EXPAND ----------
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wctct TEST ----------
{ T_CMD_BEG, "TEST", 0,0,0 },
-
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wctct COLORS ----------
diff --git a/project/src/ui/tab-wimgt.inc b/project/src/ui/tab-wimgt.inc
index 3ab70bd..bc5e27e 100644
--- a/project/src/ui/tab-wimgt.inc
+++ b/project/src/ui/tab-wimgt.inc
@@ -68,6 +68,10 @@
"wimgt ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wimgt EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wimgt TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -169,6 +173,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -178,6 +186,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -419,13 +430,16 @@
//---------- COMMAND wimgt ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+ //---------- COMMAND wimgt EXPAND ----------
+
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wimgt TEST ----------
{ T_CMD_BEG, "TEST", 0,0,0 },
-
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wimgt COLORS ----------
diff --git a/project/src/ui/tab-wkclt.inc b/project/src/ui/tab-wkclt.inc
index 2a137c8..ebeda48 100644
--- a/project/src/ui/tab-wkclt.inc
+++ b/project/src/ui/tab-wkclt.inc
@@ -67,6 +67,10 @@
"wkclt ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wkclt EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wkclt TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -282,6 +286,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -291,6 +299,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -588,7 +599,11 @@
//---------- COMMAND wkclt ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wkclt EXPAND ----------
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wkclt TEST ----------
diff --git a/project/src/ui/tab-wkmpt.inc b/project/src/ui/tab-wkmpt.inc
index 0b2a49a..b647c4d 100644
--- a/project/src/ui/tab-wkmpt.inc
+++ b/project/src/ui/tab-wkmpt.inc
@@ -67,6 +67,10 @@
"wkmpt ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wkmpt EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wkmpt TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -266,6 +270,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -275,6 +283,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -685,7 +696,11 @@
//---------- COMMAND wkmpt ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wkmpt EXPAND ----------
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wkmpt TEST ----------
diff --git a/project/src/ui/tab-wlect.inc b/project/src/ui/tab-wlect.inc
index d5ac35d..3581bef 100644
--- a/project/src/ui/tab-wlect.inc
+++ b/project/src/ui/tab-wlect.inc
@@ -67,6 +67,10 @@
"wlect ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wlect EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wlect TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -161,17 +165,23 @@
{ T_SEP_CMD, 0,0,0,0 }, //----- separator -----
{ T_DEF_CMD, "CREATE", "CREATE|CR",
- "wlect CREATE [keyword]",
+ "wlect CREATE [keyword] ...",
"Create a file and print it to standard output."
+ " Options {--dest} and {--DEST} can forc another destination."
" The kind of file is defined by KEYWORD."
- " Use command without keywords to get a list of possible keywords."
+ " The command can create LEX files, a LPAR file or a track listing."
+ "\n "
+ " Use the command without keyword to get an extended description." },
+
+ { T_DEF_CMD, "DISTRIBUTION", "DISTRIBUTION|DIS|DISTRIB",
+ "wlect DISTRIBUTION [argument]...",
+ "This command manages data for LE-CODE track distributions."
+ " It reads any number of source files with different file types,"
+ " collects the data and creates any number of files with different file types."
"\n "
- " The following keywords are possible:"
- " @LEX@ for a LEX text file with all known sections except @TEST@."
- " @LEX+@ for a LEX text file with all known sections including @TEST@."
- " @SET1, CANN, HIPT@ and @TEST@ (section names)"
- " for a LEX text file with 1 section only."
- " @LPAR@ for an example LE-CODE parameter file." },
+ " Use the command without keyword to get an extended description."
+ "\n "
+ "This command is still under development. Its use is therefore EXPERIMENTAL!" },
{ T_DEF_CMD, "CAT", "CAT",
"wlect CAT [source]...",
@@ -222,6 +232,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -231,6 +245,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -253,6 +270,12 @@
"This option is completely ignored by wlect."
" It only exists due to compatibility with the other tools." },
+ { T_OPT_GP, "LOAD_PREFIX", "load-prefix|loadprefix",
+ 0, 0 /* copy of wszst */ },
+
+ { T_OPT_CP, "PLUS", "plus",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GMP, "CHDIR", "chdir",
0, 0 /* copy of wszst */ },
@@ -407,6 +430,11 @@
{ T_OPT_GO, "REPAIR_MAGICS", "repair-magics|repairmagics",
0, 0 /* copy of wszst */ },
+ { T_OPT_CP, "CREATE_DISTRIB", "create-distrib|createdistrib",
+ "file",
+ "Create a LE-CODE distribution dump with a track list and more info about"
+ " the current distribution. Store the dump info a file." },
+
#if OPT_OLD_NEW
{ H_OPT_GM, "OLD", "OLD",
0, 0 /* copy of wszst */ },
@@ -542,6 +570,15 @@
" directory specified by option {--track-dir}."
" If linking fails, the file is copied." },
+ { T_OPT_CP, "SZS_MODE", "szs-mode|szsmode",
+ "mode",
+ "If a track is inserted via the SZS file,"
+ " then the associated directory is automatically included in the list"
+ " of search directories for option {--track-dir}."
+ " This option now sets the transfer mode. @OFF@ turns this feature off."
+ " The values @COPY@, @MOVE@, @MOVE1@ and @LINK@ define one of the 4 modes."
+ " Default mode is @LINK@." },
+
{ T_SEP_OPT, 0,0,0,0 }, //----- separator -----
{ T_OPT_C, "COMPLETE", "C|complete",
@@ -721,13 +758,16 @@
//---------- COMMAND wlect ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+ //---------- COMMAND wlect EXPAND ----------
+
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wlect TEST ----------
{ T_CMD_BEG, "TEST", 0,0,0 },
-
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wlect COLORS ----------
@@ -821,6 +861,7 @@
{ T_COPT, "VERBOSE", 0,0,
"For LE-CODE binaries: If set, print a track slot usage table." },
{ T_COPY_GRP, "PATCH", 0,0,0 },
+ { T_COPT, "CREATE_DISTRIB",0,0,0 },
//---------- COMMAND wlect DL ----------
@@ -851,6 +892,7 @@
{ T_COPY_GRP, "DEST", 0,0,0 },
// { T_COPT, "NO_CHECK", 0,0,0 },
{ T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "CREATE_DISTRIB",0,0,0 },
//---------- COMMAND wlect LPAR ----------
@@ -878,8 +920,22 @@
{ T_COPT, "LEX_PURGE", 0,0,0 },
{ H_COPT, "LEX_RM_FEAT", 0,0,0 },
{ T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "LE_DEFINE", 0,0,0 },
+ { T_COPT, "LOAD_BMG", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
{ T_COPY_GRP, "PARAM", 0,0,0 },
+ //---------- COMMAND wlect DISTRIBUTION ----------
+
+ { T_CMD_BEG, "DISTRIBUTION", 0,0,0 },
+ { T_COPT, "LOAD_PREFIX", 0,0,0 },
+ { T_COPT, "PLUS", 0,0,0 },
+ { T_COPY_GRP, "TRACK_COPY", 0,0,0 },
+ { T_COPT, "SZS_MODE", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TEXTOUT", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+
//---------- COMMAND wlect CAT ----------
{ T_CMD_BEG, "CAT", 0,0,0 },
diff --git a/project/src/ui/tab-wmdlt.inc b/project/src/ui/tab-wmdlt.inc
index 85018fd..bb03e3b 100644
--- a/project/src/ui/tab-wmdlt.inc
+++ b/project/src/ui/tab-wmdlt.inc
@@ -67,6 +67,10 @@
"wmdlt ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wmdlt EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wmdlt TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -192,6 +196,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -201,6 +209,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -457,7 +468,11 @@
//---------- COMMAND wmdlt ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wmdlt EXPAND ----------
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wmdlt TEST ----------
diff --git a/project/src/ui/tab-wpatt.inc b/project/src/ui/tab-wpatt.inc
index b2f193e..aa7b71d 100644
--- a/project/src/ui/tab-wpatt.inc
+++ b/project/src/ui/tab-wpatt.inc
@@ -67,6 +67,10 @@
"wpatt ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wpatt EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wpatt TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -160,6 +164,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -169,6 +177,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -355,7 +366,11 @@
//---------- COMMAND wpatt ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wpatt EXPAND ----------
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wpatt TEST ----------
diff --git a/project/src/ui/tab-wstrt.inc b/project/src/ui/tab-wstrt.inc
index 4015738..d540bcd 100644
--- a/project/src/ui/tab-wstrt.inc
+++ b/project/src/ui/tab-wstrt.inc
@@ -68,6 +68,10 @@
"wstrt ARGTEST ...",
0 /* copy of wszst */ },
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wstrt EXPAND ...",
+ 0 /* copy of wszst */ },
+
{ T_DEF_CMD, "TEST", "TEST",
"wstrt TEST [options]... [ignored]...",
0 /* copy of wszst */ },
@@ -223,6 +227,10 @@
"MAX_WIDTH", "max-width|maxwidth",
0, 0 /* copy of wszst */ },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0, 0 /* copy of wszst */ },
@@ -232,6 +240,9 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0, 0 /* copy of wszst */ },
+ { T_OPT_GM, "TIMING", "timing",
+ 0, 0 /* copy of wszst */ },
+
{ T_OPT_GP, "WARN", "W|warn",
0, 0 /* copy of wszst */ },
@@ -923,13 +934,16 @@
//---------- COMMAND wstrt ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+ //---------- COMMAND wstrt EXPAND ----------
+
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wstrt TEST ----------
{ T_CMD_BEG, "TEST", 0,0,0 },
-
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wstrt COLORS ----------
@@ -997,6 +1011,7 @@
{ T_COPT, "FADDR", 0,0,0 },
{ T_COPT, "SNAME", 0,0,0 },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "TIMING", 0,0,0 },
{ T_SEP_OPT, 0,0,0,0 },
{ T_COPY_GRP, "HEXDUMP", 0,0,0 },
diff --git a/project/src/ui/tab-wszst.inc b/project/src/ui/tab-wszst.inc
index d836fdf..3fbde8d 100644
--- a/project/src/ui/tab-wszst.inc
+++ b/project/src/ui/tab-wszst.inc
@@ -89,7 +89,18 @@
{ T_DEF_CMD, "ARGTEST", "ARGTEST",
"wszst ARGTEST ...",
"This debug command accepts all kinds of parameters"
- " and prints one line for each parameter." },
+ " and prints one line for each parameter."
+ " All tools know the ARGTEST command." },
+
+ { T_DEF_CMD, "EXPAND", "EXPAND",
+ "wszst EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters"
+ " and prints one line for each parameter."
+ " After that, the parameter is treated as a filename with wildcards"
+ " and all matching files are searched."
+ " The special parameters '+h' and '/h' enable or disable the search"
+ " for hidden directories and files (files beginning with a point)."
+ " All tools know the EXPAND command." },
{ T_DEF_CMD, "TEST", "TEST",
"wszst TEST [options]... [ignored]...",
@@ -105,12 +116,14 @@
{ T_DEF_CMD, "ERROR", "ERROR|ERR",
"wszst ERROR [error_code]",
"Translate an exit code to a message name."
- " If no exit code is entered, print a table with all error messages." },
+ " If no exit code is entered, print a table with all error messages."
+ " All tools know the ERROR command." },
{ T_DEF_CMD, "FILETYPE", "FILETYPE|FT",
"wszst FILETYPE file...",
"Scan the header of the entered files and print file type"
- " and path for each file as list." },
+ " and path for each file as list."
+ " All tools know the FILETYPE command." },
{ T_DEF_CMD, "FILEATTRIB", "FILEATTRIB|FA",
"wszst FILEATTRIB [keyword]...",
@@ -118,7 +131,8 @@
" If at least one keyword is entered, only matching file types"
" are printed."
" A keyword is either a file type (like 'BRRES' or 'BMG')"
- " or one of the printed keywords (like 'ARCHIVE' or 'EXTRACT')." },
+ " or one of the printed keywords (like 'ARCHIVE' or 'EXTRACT')."
+ " All tools know the FILEATTRIB command." },
{ T_DEF_CMD, "BRSUB", "BRSUB",
"wszst BRSUB [file]...",
@@ -130,17 +144,20 @@
{ T_DEF_CMD, "SYMBOLS", "SYMBOLS",
"wszst SYMBOLS",
- "Print predefined symbols of text parser to standard output." },
+ "Print predefined symbols of text parser to standard output."
+ " Many tools know the SYMBOLS command." },
{ T_DEF_CMD, "FUNCTIONS", "FUNCTIONS",
"wszst FUNCTIONS [key]...",
"Print a list with all parser functions."
" If one or more keys entered,"
- " then only functions that match at least one key are printed." },
+ " then only functions that match at least one key are printed."
+ " Many tools know the FUNCTIONS command." },
{ T_DEF_CMD, "CALCULATE", "CALCULATE",
"wszst CALCULATE expression...",
- "Calculate each expression and print the result to standard output." },
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command." },
{ T_DEF_CMD, "MATRIX", "MATRIX",
"wszst MATRIX [patch-option]... [vector]...",
@@ -352,6 +369,11 @@
"wszst ANALYZE [source]...",
"Analyse track files and print results in machine readable format." },
+ { T_DEF_CMD, "SPLIT", "SPLIT",
+ "wszst SPLIT [source]...",
+ "Analyse (file) names and split them into the different parts."
+ " Print the results in machine readable format." },
+
{ T_DEF_CMD, "IS_TEXTURE", "IS-TEXTURE|ISTEXTURE",
"wszst IS-TEXTURE --reference reference [source]...",
"Test each source to see if it's a texture hack versus a reference file."
@@ -368,7 +390,7 @@
"wszst FEATURES [source]...",
"Analyse track files and create a feature list in machine readable format." },
- { T_DEF_CMD, "DISTRIBUTION", "DISTRIBUTION|DIST",
+ { T_DEF_CMD, "DISTRIBUTION", "DISTRIBUTION|DIS|DISTRIB",
"wszst DISTRIBUTION result source...\n"
"wszst DISTRIBUTION directory [source]...",
"Load each @SOURCE@ (SZS, WBZ, U8 or WU8) and calculate a checksum"
@@ -384,7 +406,9 @@
"\n "
" 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." },
+ " On scanning of file @result@, parameters are scanned too."
+ "\n "
+ "See »welect DISTRIBUTION« for a new and alternative implementation of this." },
{ T_SEP_CMD, 0,0,0,0 }, //----- separator -----
@@ -694,6 +718,11 @@
" for help and some other messages."
" The default is 120. This option is ignored if --width is set." },
+ { T_OPT_G|F_IGNORE,
+ "NO_PAGER", "no-pager|nopager",
+ 0,
+ "Forbid the internal usage of a pager." },
+
{ T_OPT_GM, "QUIET", "q|quiet",
0,
"Be quiet and print only error messages."
@@ -710,7 +739,13 @@
{ T_OPT_GM, "LOGGING", "L|logging",
0,
- "This debug option enables the logging of internal lists and maps." },
+ "This debug option enables the logging of internal lists and maps."
+ " Set it up to three times to be more verbose.\n" },
+
+ { T_OPT_GM, "TIMING", "timing",
+ 0,
+ "Activate the timing of some operations."
+ " Logging level 3 activates them too.\n" },
{ T_OPT_GP, "WARN", "W|warn",
"list",
@@ -765,6 +800,25 @@
" The optional parameter is deprecated and ignored."
"\1 See https://szs.wiimm.de/opt/lecode for details." },
+ { T_OPT_GP, "LOAD_PREFIX", "load-prefix|loadprefix",
+ "file",
+ "Read in a PREFIX file and replace the internal prefix database with the content."
+ " https://ct.wiimm.de/export/prefix is the authoritative source for this." },
+
+ { T_OPT_CP, "PLUS", "plus",
+ "chars",
+ "If a name begins with a plus sign, then all characters up to the first space"
+ " are recognized as a plus prefix."
+ " The first part consists of all the plus signs followed by any other characters."
+ " The first character of the second part is used to determine the sort value."
+ " If the second part is empty, then the last plus sign is used instead."
+ "\n "
+ " The higher sorting value is now calculated from the number of plus signs"
+ " in the first part, the more plus signs, the smaller the value."
+ " The first character from the second part determines the lower value."
+ " If it is in parameter CHARS then the position determines the value,"
+ " otherwise the ASCII value to which 500 is added." },
+
{ T_OPT_GMP, "CHDIR", "chdir",
"dir",
"Set a new working directory for all following options,"
@@ -1531,7 +1585,7 @@
0,
"Print an ID with 8 characters instead of a SHA-1 sum with"
" 40 characters. The SHA-1 sum is used to calculate the ID."
- " The ID consists of '0'-'9' and 'a'-'w' (32 characters)." },
+ " The ID consists of '0'-'9' and 'a'-'v' (32 different characters)." },
{ T_OPT_CO, "BASE64", "base64",
"[=mode]",
@@ -2578,6 +2632,7 @@
{ T_COPT, "RM_AIPARAM", 0,0,0 },
{ T_COPY_GRP, "ALIGN", 0,0,0 },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "TIMING", 0,0,0 },
{ T_COPY_GRP, "ENCODE", 0,0,0 },
{ T_COPT, "AUTO_ADD", 0,0,0 },
{ T_COPT, "MIPMAPS", 0,0,0 },
@@ -2663,7 +2718,11 @@
//---------- COMMAND wszst ARGTEST ----------
{ T_CMD_BEG, "ARGTEST", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wszst EXPAND ----------
+ { T_CMD_BEG, "EXPAND", 0,0,0 },
{ T_ALL_OPT, 0, 0,0,0 },
//---------- COMMAND wszst TEST ----------
@@ -2840,6 +2899,7 @@
{ T_COPT, "BRIEF", 0,0,
"Limit output to SZS specific data." },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "TIMING", 0,0,0 },
//---------- COMMAND wszst _CODE ----------
@@ -3030,6 +3090,19 @@
{ T_COPT, "DEST", 0,0,0 },
{ T_COPT, "DEST2", 0,0,0 },
+ //---------- COMMAND wszst SPLIT ----------
+
+ { T_CMD_BEG, "SPLIT", 0,0,0 },
+ { T_COPT, "LOAD_PREFIX", 0,0,0 },
+ { T_COPT, "PLUS", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "SCRIPT", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "DEST", 0,0,0 },
+ { T_COPT, "DEST2", 0,0,0 },
+
//---------- COMMAND wszst IS_TEXTURE ----------
{ T_CMD_BEG, "IS_TEXTURE", 0,0,0 },
@@ -3247,6 +3320,7 @@
{ T_COPT, "IGNORE_SETUP", 0,0,0 },
{ T_COPY_GRP, "ALIGN", 0,0,0 },
{ T_COPT, "LOGGING", 0,0,0 },
+ { T_COPT, "TIMING", 0,0,0 },
{ T_COPY_GRP, "ENCODE", 0,0,0 },
{ T_COPT, "MIPMAPS", 0,0,0 },
{ T_COPT, "NO_MIPMAPS", 0,0,0 },
diff --git a/project/src/ui/ui-wbmgt.c b/project/src/ui/ui-wbmgt.c
index aa991c4..0741af3 100644
--- a/project/src/ui/ui-wbmgt.c
+++ b/project/src/ui/ui-wbmgt.c
@@ -353,6 +353,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -368,7 +373,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -541,7 +553,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 == 64
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 66
};
@@ -641,6 +653,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -684,9 +697,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -840,39 +856,41 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_POINTS,
- /* 0x08d */ OPT_UTF_8,
- /* 0x08e */ OPT_NO_UTF_8,
- /* 0x08f */ OPT_FORCE,
- /* 0x090 */ OPT_REPAIR_MAGICS,
- /* 0x091 */ OPT_OLD,
- /* 0x092 */ OPT_STD,
- /* 0x093 */ OPT_NEW,
- /* 0x094 */ OPT_EXTRACT,
- /* 0x095 */ OPT_NUMBER,
- /* 0x096 */ OPT_ALIGN,
- /* 0x097 */ OPT_MACRO_BMG,
- /* 0x098 */ OPT_FILTER_BMG,
- /* 0x099 */ OPT_BMG_ENDIAN,
- /* 0x09a */ OPT_BMG_ENCODING,
- /* 0x09b */ OPT_BMG_INF_SIZE,
- /* 0x09c */ OPT_BMG_MID,
- /* 0x09d */ OPT_FORCE_ATTRIB,
- /* 0x09e */ OPT_DEF_ATTRIB,
- /* 0x09f */ OPT_NO_ATTRIB,
- /* 0x0a0 */ OPT_X_ESCAPES,
- /* 0x0a1 */ OPT_OLD_ESCAPES,
- /* 0x0a2 */ OPT_NO_BMG_COLORS,
- /* 0x0a3 */ OPT_BMG_COLORS,
- /* 0x0a4 */ OPT_NO_BMG_INLINE,
- /* 0x0a5 */ OPT_SECTIONS,
- /* 0x0a6 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 0x08a */ OPT_NO_COLORS,
+ /* 0x08b */ OPT_CT_CODE,
+ /* 0x08c */ OPT_LE_CODE,
+ /* 0x08d */ OPT_CHDIR,
+ /* 0x08e */ OPT_POINTS,
+ /* 0x08f */ OPT_UTF_8,
+ /* 0x090 */ OPT_NO_UTF_8,
+ /* 0x091 */ OPT_FORCE,
+ /* 0x092 */ OPT_REPAIR_MAGICS,
+ /* 0x093 */ OPT_OLD,
+ /* 0x094 */ OPT_STD,
+ /* 0x095 */ OPT_NEW,
+ /* 0x096 */ OPT_EXTRACT,
+ /* 0x097 */ OPT_NUMBER,
+ /* 0x098 */ OPT_ALIGN,
+ /* 0x099 */ OPT_MACRO_BMG,
+ /* 0x09a */ OPT_FILTER_BMG,
+ /* 0x09b */ OPT_BMG_ENDIAN,
+ /* 0x09c */ OPT_BMG_ENCODING,
+ /* 0x09d */ OPT_BMG_INF_SIZE,
+ /* 0x09e */ OPT_BMG_MID,
+ /* 0x09f */ OPT_FORCE_ATTRIB,
+ /* 0x0a0 */ OPT_DEF_ATTRIB,
+ /* 0x0a1 */ OPT_NO_ATTRIB,
+ /* 0x0a2 */ OPT_X_ESCAPES,
+ /* 0x0a3 */ OPT_OLD_ESCAPES,
+ /* 0x0a4 */ OPT_NO_BMG_COLORS,
+ /* 0x0a5 */ OPT_BMG_COLORS,
+ /* 0x0a6 */ OPT_NO_BMG_INLINE,
+ /* 0x0a7 */ OPT_SECTIONS,
+ /* 0x0a8 */ 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,
@@ -913,109 +931,115 @@ static u8 option_allowed_cmd_ARGTEST[32] = // cmd #4
1,1
};
-static u8 option_allowed_cmd_TEST[32] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[32] = // 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
};
-static u8 option_allowed_cmd_COLORS[32] = // cmd #6
+static u8 option_allowed_cmd_TEST[32] = // 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
+};
+
+static u8 option_allowed_cmd_COLORS[32] = // cmd #7
{
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
};
-static u8 option_allowed_cmd_ERROR[32] = // cmd #7
+static u8 option_allowed_cmd_ERROR[32] = // cmd #8
{
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,1
};
-static u8 option_allowed_cmd_FILETYPE[32] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[32] = // cmd #9
{
0,1,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
};
-static u8 option_allowed_cmd_FILEATTRIB[32] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[32] = // cmd #10
{
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
};
-static u8 option_allowed_cmd_POINTS[32] = // cmd #10
+static u8 option_allowed_cmd_POINTS[32] = // cmd #11
{
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
};
-static u8 option_allowed_cmd_REGEXP[32] = // cmd #11
+static u8 option_allowed_cmd_REGEXP[32] = // 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
};
-static u8 option_allowed_cmd_EXTRACT[32] = // cmd #12
+static u8 option_allowed_cmd_EXTRACT[32] = // cmd #13
{
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
};
-static u8 option_allowed_cmd_SECTIONS[32] = // cmd #13
+static u8 option_allowed_cmd_SECTIONS[32] = // cmd #14
{
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
};
-static u8 option_allowed_cmd_LIST[32] = // cmd #14
+static u8 option_allowed_cmd_LIST[32] = // cmd #15
{
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
};
-static u8 option_allowed_cmd_SLOTS[32] = // cmd #15
+static u8 option_allowed_cmd_SLOTS[32] = // cmd #16
{
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
};
-static u8 option_allowed_cmd_DIFF[32] = // cmd #16
+static u8 option_allowed_cmd_DIFF[32] = // cmd #17
{
0,0,0,0,1, 0,1,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
};
-static u8 option_allowed_cmd_CAT[32] = // cmd #17
+static u8 option_allowed_cmd_CAT[32] = // cmd #18
{
0,1,1,1,0, 0,0,0,0,0, 0,0,1,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,0
};
-static u8 option_allowed_cmd_MIX[32] = // cmd #18
+static u8 option_allowed_cmd_MIX[32] = // cmd #19
{
0,1,1,1,0, 0,0,0,0,0, 0,0,1,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,0
};
-static u8 option_allowed_cmd_IDENTIFIER[32] = // cmd #19
+static u8 option_allowed_cmd_IDENTIFIER[32] = // cmd #20
{
0,1,1,1,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,0
};
-static u8 option_allowed_cmd_DECODE[32] = // cmd #20
+static u8 option_allowed_cmd_DECODE[32] = // cmd #21
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,0,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,0
};
-static u8 option_allowed_cmd_ENCODE[32] = // cmd #21
+static u8 option_allowed_cmd_ENCODE[32] = // cmd #22
{
0,0,0,0,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
};
-static u8 option_allowed_cmd_PATCH[32] = // cmd #22
+static u8 option_allowed_cmd_PATCH[32] = // cmd #23
{
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
@@ -1037,9 +1061,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -1094,6 +1120,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
@@ -1422,7 +1454,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,
- 26,
+ 28,
option_tab_tool,
0
},
@@ -1488,13 +1520,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wbmgt ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wbmgt EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -1534,7 +1585,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wbmgt ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -1549,7 +1601,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wbmgt FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -1566,7 +1618,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
diff --git a/project/src/ui/ui-wbmgt.h b/project/src/ui/ui-wbmgt.h
index 855342f..31f238f 100644
--- a/project/src/ui/ui-wbmgt.h
+++ b/project/src/ui/ui-wbmgt.h
@@ -100,9 +100,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -125,7 +127,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 64
+ OPT__N_TOTAL // == 66
} enumOptions;
@@ -212,6 +214,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -304,6 +308,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -326,7 +331,7 @@ typedef enum enumCommands
CMD_PATCH,
- CMD__N // == 23
+ CMD__N // == 24
} enumCommands;
@@ -373,6 +378,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
diff --git a/project/src/ui/ui-wctct.c b/project/src/ui/ui-wctct.c
index 1344aa3..2d15c1f 100644
--- a/project/src/ui/ui-wctct.c
+++ b/project/src/ui/ui-wctct.c
@@ -453,6 +453,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -468,7 +473,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -616,6 +628,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<"
},
+ { OPT_CREATE_DISTRIB, false, false, false, false, false, 0, "create-distrib",
+ "file",
+ "Create a LE-CODE distribution dump with a track list and more info"
+ " about the current distribution. Store the dump info a file."
+ },
+
{ OPT_OLD, false, true, false, false, false, 0, "OLD",
0,
"Developer option: Cancel --NEW and use old implementation if"
@@ -672,7 +690,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 == 83
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 86
};
@@ -834,6 +852,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -875,9 +894,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -944,6 +966,8 @@ static const struct option OptionLong[] =
{ "force", 0, 0, GO_FORCE },
{ "repair-magics", 2, 0, GO_REPAIR_MAGICS },
{ "repairmagics", 2, 0, GO_REPAIR_MAGICS },
+ { "create-distrib", 1, 0, GO_CREATE_DISTRIB },
+ { "createdistrib", 1, 0, GO_CREATE_DISTRIB },
{ "OLD", 0, 0, GO_OLD },
{ "STD", 0, 0, GO_STD },
{ "NEW", 0, 0, GO_NEW },
@@ -1058,57 +1082,60 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_OLD_SPINY,
- /* 0x08c */ OPT_CRS1,
- /* 0x08d */ OPT_CHDIR,
- /* 0x08e */ OPT_ROUND,
- /* 0x08f */ OPT_RAW,
- /* 0x090 */ OPT_BMG_ENDIAN,
- /* 0x091 */ OPT_BMG_ENCODING,
- /* 0x092 */ OPT_BMG_INF_SIZE,
- /* 0x093 */ OPT_BMG_MID,
- /* 0x094 */ OPT_FORCE_ATTRIB,
- /* 0x095 */ OPT_DEF_ATTRIB,
- /* 0x096 */ OPT_NO_ATTRIB,
- /* 0x097 */ OPT_X_ESCAPES,
- /* 0x098 */ OPT_OLD_ESCAPES,
- /* 0x099 */ OPT_NO_BMG_COLORS,
- /* 0x09a */ OPT_BMG_COLORS,
- /* 0x09b */ OPT_NO_BMG_INLINE,
- /* 0x09c */ OPT_NO_ECHO,
- /* 0x09d */ OPT_UTF_8,
- /* 0x09e */ OPT_NO_UTF_8,
- /* 0x09f */ OPT_FORCE,
- /* 0x0a0 */ OPT_REPAIR_MAGICS,
- /* 0x0a1 */ OPT_OLD,
- /* 0x0a2 */ OPT_STD,
- /* 0x0a3 */ OPT_NEW,
- /* 0x0a4 */ OPT_EXTRACT,
- /* 0x0a5 */ OPT_LIST,
- /* 0x0a6 */ OPT_REF,
- /* 0x0a7 */ OPT_FULL,
- /* 0x0a8 */ OPT_HEX,
- /* 0x0a9 */ OPT_CT_DIR,
- /* 0x0aa */ OPT_CT_LOG,
- /* 0x0ab */ OPT_ALLOW_SLOTS,
- /* 0x0ac */ OPT_IMAGES,
- /* 0x0ad */ OPT_LOAD_BMG,
- /* 0x0ae */ OPT_PATCH_BMG,
- /* 0x0af */ OPT_MACRO_BMG,
- /* 0x0b0 */ OPT_FILTER_BMG,
- /* 0x0b1 */ OPT_PATCH_NAMES,
- /* 0x0b2 */ OPT_ORDER_BY,
- /* 0x0b3 */ OPT_ORDER_ALL,
- /* 0x0b4 */ OPT_DYNAMIC,
- /* 0x0b5 */ OPT_WRITE_TRACKS,
- /* 0x0b6 */ OPT_NUMBER,
- /* 0x0b7 */ OPT_SECTIONS,
- /* 0x0b8 */ 0,0,0,0, 0,0,0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 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_RAW,
+ /* 0x092 */ OPT_BMG_ENDIAN,
+ /* 0x093 */ OPT_BMG_ENCODING,
+ /* 0x094 */ OPT_BMG_INF_SIZE,
+ /* 0x095 */ OPT_BMG_MID,
+ /* 0x096 */ OPT_FORCE_ATTRIB,
+ /* 0x097 */ OPT_DEF_ATTRIB,
+ /* 0x098 */ OPT_NO_ATTRIB,
+ /* 0x099 */ OPT_X_ESCAPES,
+ /* 0x09a */ OPT_OLD_ESCAPES,
+ /* 0x09b */ OPT_NO_BMG_COLORS,
+ /* 0x09c */ OPT_BMG_COLORS,
+ /* 0x09d */ OPT_NO_BMG_INLINE,
+ /* 0x09e */ OPT_NO_ECHO,
+ /* 0x09f */ OPT_UTF_8,
+ /* 0x0a0 */ OPT_NO_UTF_8,
+ /* 0x0a1 */ OPT_FORCE,
+ /* 0x0a2 */ OPT_REPAIR_MAGICS,
+ /* 0x0a3 */ OPT_CREATE_DISTRIB,
+ /* 0x0a4 */ OPT_OLD,
+ /* 0x0a5 */ OPT_STD,
+ /* 0x0a6 */ OPT_NEW,
+ /* 0x0a7 */ OPT_EXTRACT,
+ /* 0x0a8 */ OPT_LIST,
+ /* 0x0a9 */ OPT_REF,
+ /* 0x0aa */ OPT_FULL,
+ /* 0x0ab */ OPT_HEX,
+ /* 0x0ac */ OPT_CT_DIR,
+ /* 0x0ad */ OPT_CT_LOG,
+ /* 0x0ae */ OPT_ALLOW_SLOTS,
+ /* 0x0af */ OPT_IMAGES,
+ /* 0x0b0 */ OPT_LOAD_BMG,
+ /* 0x0b1 */ OPT_PATCH_BMG,
+ /* 0x0b2 */ OPT_MACRO_BMG,
+ /* 0x0b3 */ OPT_FILTER_BMG,
+ /* 0x0b4 */ OPT_PATCH_NAMES,
+ /* 0x0b5 */ OPT_ORDER_BY,
+ /* 0x0b6 */ OPT_ORDER_ALL,
+ /* 0x0b7 */ OPT_DYNAMIC,
+ /* 0x0b8 */ OPT_WRITE_TRACKS,
+ /* 0x0b9 */ OPT_NUMBER,
+ /* 0x0ba */ OPT_SECTIONS,
+ /* 0x0bb */ 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,
@@ -1148,109 +1175,115 @@ static u8 option_allowed_cmd_ARGTEST[47] = // cmd #4
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1
};
-static u8 option_allowed_cmd_TEST[47] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[47] = // 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
+};
+
+static u8 option_allowed_cmd_TEST[47] = // 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
};
-static u8 option_allowed_cmd_COLORS[47] = // cmd #6
+static u8 option_allowed_cmd_COLORS[47] = // cmd #7
{
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
};
-static u8 option_allowed_cmd_ERROR[47] = // cmd #7
+static u8 option_allowed_cmd_ERROR[47] = // cmd #8
{
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,1
};
-static u8 option_allowed_cmd_FILETYPE[47] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[47] = // cmd #9
{
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
};
-static u8 option_allowed_cmd_FILEATTRIB[47] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[47] = // cmd #10
{
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
};
-static u8 option_allowed_cmd_SYMBOLS[47] = // cmd #10
+static u8 option_allowed_cmd_SYMBOLS[47] = // cmd #11
{
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
};
-static u8 option_allowed_cmd_FUNCTIONS[47] = // cmd #11
+static u8 option_allowed_cmd_FUNCTIONS[47] = // cmd #12
{
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
};
-static u8 option_allowed_cmd_CALCULATE[47] = // cmd #12
+static u8 option_allowed_cmd_CALCULATE[47] = // 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
};
-static u8 option_allowed_cmd_FLOAT[47] = // cmd #13
+static u8 option_allowed_cmd_FLOAT[47] = // cmd #14
{
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
};
-static u8 option_allowed_cmd_EXPORT[47] = // cmd #14
+static u8 option_allowed_cmd_EXPORT[47] = // 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
};
-static u8 option_allowed_cmd_RAWDUMP[47] = // cmd #15
+static u8 option_allowed_cmd_RAWDUMP[47] = // 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,1,1,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_DUMP[47] = // cmd #16
+static u8 option_allowed_cmd_DUMP[47] = // cmd #17
{
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,1,1,
1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0
};
-static u8 option_allowed_cmd_CAT[47] = // cmd #17
+static u8 option_allowed_cmd_CAT[47] = // cmd #18
{
0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,1,1,1, 1,1,0,1,1,
1,1,1,1,1, 0,1,0,0,0, 0,0,0,0,0, 1,0
};
-static u8 option_allowed_cmd_BMG[47] = // cmd #18
+static u8 option_allowed_cmd_BMG[47] = // cmd #19
{
0,0,1,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,1,1,1,1, 1,1,0,1,1,
1,1,1,1,1, 0,1,0,0,0, 0,0,0,0,0, 1,0
};
-static u8 option_allowed_cmd_TRACKS[47] = // cmd #19
+static u8 option_allowed_cmd_TRACKS[47] = // cmd #20
{
0,0,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,1,1,1, 1,1,0,1,1,
1,1,1,1,1, 0,1,0,0,0, 0,0,0,0,0, 1,0
};
-static u8 option_allowed_cmd_DECODE[47] = // cmd #20
+static u8 option_allowed_cmd_DECODE[47] = // cmd #21
{
0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,1,1,1, 1,1,0,1,1,
1,1,1,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_CREATE[47] = // cmd #21
+static u8 option_allowed_cmd_CREATE[47] = // cmd #22
{
0,0,1,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,1,1,0,0, 0,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_PATCH[47] = // cmd #22
+static u8 option_allowed_cmd_PATCH[47] = // cmd #23
{
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,
1,1,1,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,0
@@ -1272,9 +1305,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -1292,6 +1327,7 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_TEST,
OptionInfo + OPT_FORCE,
OptionInfo + OPT_REPAIR_MAGICS,
+ OptionInfo + OPT_CREATE_DISTRIB,
OptionInfo + OPT_NONE, // separator
@@ -1334,6 +1370,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
@@ -1654,7 +1696,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,
- 28,
+ 31,
option_tab_tool,
0
},
@@ -1720,13 +1762,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wctct ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wctct EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -1766,7 +1827,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wctct ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -1781,7 +1843,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wctct FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -1798,7 +1860,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -1843,7 +1906,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"CALCULATE",
0,
"wctct CALCULATE expression...",
- "Calculate each expression and print the result to standard output.",
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command.",
0,
1,
option_tab_cmd_CALCULATE,
diff --git a/project/src/ui/ui-wctct.h b/project/src/ui/ui-wctct.h
index 532b082..f55d4ad 100644
--- a/project/src/ui/ui-wctct.h
+++ b/project/src/ui/ui-wctct.h
@@ -115,9 +115,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -136,6 +138,7 @@ typedef enum enumOptions
OPT_TEST,
OPT_FORCE,
OPT_REPAIR_MAGICS,
+ OPT_CREATE_DISTRIB,
OPT_OLD,
OPT_STD,
OPT_NEW,
@@ -144,7 +147,7 @@ typedef enum enumOptions
OPT_CT_LOG,
OPT_ALLOW_SLOTS,
- OPT__N_TOTAL // == 83
+ OPT__N_TOTAL // == 86
} enumOptions;
@@ -248,6 +251,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -374,6 +379,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -395,7 +401,7 @@ typedef enum enumCommands
CMD_PATCH,
- CMD__N // == 23
+ CMD__N // == 24
} enumCommands;
@@ -443,6 +449,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
@@ -470,6 +478,7 @@ typedef enum enumGetOpt
GO_NO_UTF_8,
GO_FORCE,
GO_REPAIR_MAGICS,
+ GO_CREATE_DISTRIB,
GO_OLD,
GO_STD,
GO_NEW,
diff --git a/project/src/ui/ui-wimgt.c b/project/src/ui/ui-wimgt.c
index 7ffff1c..c6eca37 100644
--- a/project/src/ui/ui-wimgt.c
+++ b/project/src/ui/ui-wimgt.c
@@ -316,6 +316,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -331,7 +336,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -492,7 +504,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 == 57
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 59
};
@@ -588,6 +600,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -625,9 +638,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -766,33 +782,34 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_UTF_8,
- /* 0x08d */ OPT_NO_UTF_8,
- /* 0x08e */ OPT_FORCE,
- /* 0x08f */ OPT_REPAIR_MAGICS,
- /* 0x090 */ OPT_OLD,
- /* 0x091 */ OPT_STD,
- /* 0x092 */ OPT_NEW,
- /* 0x093 */ OPT_EXTRACT,
- /* 0x094 */ OPT_NUMBER,
- /* 0x095 */ OPT_MIPMAPS,
- /* 0x096 */ OPT_NO_MIPMAPS,
- /* 0x097 */ OPT_N_MIPMAPS,
- /* 0x098 */ OPT_MAX_MIPMAPS,
- /* 0x099 */ OPT_MIPMAP_SIZE,
- /* 0x09a */ OPT_FAST_MIPMAPS,
- /* 0x09b */ OPT_CMPR_DEFAULT,
- /* 0x09c */ OPT_PRE_CONVERT,
- /* 0x09d */ OPT_STRIP,
- /* 0x09e */ OPT_SECTIONS,
- /* 0x09f */ 0,
- /* 0x0a0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 0x08a */ OPT_NO_COLORS,
+ /* 0x08b */ OPT_CT_CODE,
+ /* 0x08c */ OPT_LE_CODE,
+ /* 0x08d */ OPT_CHDIR,
+ /* 0x08e */ OPT_UTF_8,
+ /* 0x08f */ OPT_NO_UTF_8,
+ /* 0x090 */ OPT_FORCE,
+ /* 0x091 */ OPT_REPAIR_MAGICS,
+ /* 0x092 */ OPT_OLD,
+ /* 0x093 */ OPT_STD,
+ /* 0x094 */ OPT_NEW,
+ /* 0x095 */ OPT_EXTRACT,
+ /* 0x096 */ OPT_NUMBER,
+ /* 0x097 */ OPT_MIPMAPS,
+ /* 0x098 */ OPT_NO_MIPMAPS,
+ /* 0x099 */ OPT_N_MIPMAPS,
+ /* 0x09a */ OPT_MAX_MIPMAPS,
+ /* 0x09b */ OPT_MIPMAP_SIZE,
+ /* 0x09c */ OPT_FAST_MIPMAPS,
+ /* 0x09d */ OPT_CMPR_DEFAULT,
+ /* 0x09e */ OPT_PRE_CONVERT,
+ /* 0x09f */ OPT_STRIP,
+ /* 0x0a0 */ OPT_SECTIONS,
+ /* 0x0a1 */ 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,
/* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
@@ -829,62 +846,67 @@ static u8 option_allowed_cmd_ARGTEST[26] = // 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
};
-static u8 option_allowed_cmd_TEST[26] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[26] = // 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
};
-static u8 option_allowed_cmd_COLORS[26] = // cmd #6
+static u8 option_allowed_cmd_TEST[26] = // 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
+};
+
+static u8 option_allowed_cmd_COLORS[26] = // cmd #7
{
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
};
-static u8 option_allowed_cmd_ERROR[26] = // cmd #7
+static u8 option_allowed_cmd_ERROR[26] = // cmd #8
{
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, 1
};
-static u8 option_allowed_cmd_FILETYPE[26] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[26] = // cmd #9
{
0,1,0,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_FILEATTRIB[26] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[26] = // cmd #10
{
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
};
-static u8 option_allowed_cmd_LIST[26] = // cmd #10
+static u8 option_allowed_cmd_LIST[26] = // cmd #11
{
0,1,1,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_LIST_L[26] = // cmd #11
+static u8 option_allowed_cmd_LIST_L[26] = // cmd #12
{
0,1,1,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_LIST_LL[26] = // cmd #12
+static u8 option_allowed_cmd_LIST_LL[26] = // cmd #13
{
0,1,1,0,0, 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_DECODE[26] = // cmd #13
+static u8 option_allowed_cmd_DECODE[26] = // cmd #14
{
0,0,0,0,1, 1,1,1,1,1, 1,1,1,0,1, 1,1,1,1,1, 1,1,1,1,1, 0
};
-static u8 option_allowed_cmd_ENCODE[26] = // cmd #14
+static u8 option_allowed_cmd_ENCODE[26] = // cmd #15
{
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
};
-static u8 option_allowed_cmd_CONVERT[26] = // cmd #15
+static u8 option_allowed_cmd_CONVERT[26] = // cmd #16
{
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
};
-static u8 option_allowed_cmd_COPY[26] = // cmd #16
+static u8 option_allowed_cmd_COPY[26] = // cmd #17
{
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
};
@@ -905,9 +927,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -959,6 +983,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
@@ -1188,7 +1218,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,
- 23,
+ 25,
option_tab_tool,
0
},
@@ -1254,13 +1284,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wimgt ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wimgt EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -1300,7 +1349,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wimgt ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -1315,7 +1365,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wimgt FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -1332,7 +1382,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
diff --git a/project/src/ui/ui-wimgt.h b/project/src/ui/ui-wimgt.h
index 4595e8e..1373c02 100644
--- a/project/src/ui/ui-wimgt.h
+++ b/project/src/ui/ui-wimgt.h
@@ -94,9 +94,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -118,7 +120,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 57
+ OPT__N_TOTAL // == 59
} enumOptions;
@@ -193,6 +195,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -244,6 +248,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -260,7 +265,7 @@ typedef enum enumCommands
CMD_COPY,
- CMD__N // == 17
+ CMD__N // == 18
} enumCommands;
@@ -306,6 +311,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
diff --git a/project/src/ui/ui-wkclt.c b/project/src/ui/ui-wkclt.c
index adcb273..df62da4 100644
--- a/project/src/ui/ui-wkclt.c
+++ b/project/src/ui/ui-wkclt.c
@@ -265,7 +265,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
0,
"Print an ID with 8 characters instead of a SHA-1 sum with 40"
" characters. The SHA-1 sum is used to calculate the ID. The ID"
- " consists of '0'-'9' and 'a'-'w' (32 characters)."
+ " consists of '0'-'9' and 'a'-'v' (32 different characters)."
},
{ OPT_BASE64, true, false, false, false, false, 0, "base64",
@@ -453,6 +453,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -468,7 +473,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -680,7 +692,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 == 77
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 79
};
@@ -914,6 +926,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -965,9 +978,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -1122,53 +1138,55 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_SCALE,
- /* 0x08d */ OPT_SHIFT,
- /* 0x08e */ OPT_XSS,
- /* 0x08f */ OPT_YSS,
- /* 0x090 */ OPT_ZSS,
- /* 0x091 */ OPT_ROT,
- /* 0x092 */ OPT_XROT,
- /* 0x093 */ OPT_YROT,
- /* 0x094 */ OPT_ZROT,
- /* 0x095 */ OPT_TRANSLATE,
- /* 0x096 */ OPT_NULL,
- /* 0x097 */ OPT_NEXT,
- /* 0x098 */ OPT_ASCALE,
- /* 0x099 */ OPT_AROT,
- /* 0x09a */ OPT_TFORM_SCRIPT,
- /* 0x09b */ OPT_KCL,
- /* 0x09c */ OPT_KCL_FLAG,
- /* 0x09d */ OPT_KCL_SCRIPT,
- /* 0x09e */ OPT_TRI_AREA,
- /* 0x09f */ OPT_TRI_HEIGHT,
- /* 0x0a0 */ OPT_FLAG_FILE,
- /* 0x0a1 */ OPT_XTRIDATA,
- /* 0x0a2 */ OPT_SLOT,
- /* 0x0a3 */ OPT_ID,
- /* 0x0a4 */ OPT_BASE64,
- /* 0x0a5 */ OPT_DB64,
- /* 0x0a6 */ OPT_CODING,
- /* 0x0a7 */ OPT_ROUND,
- /* 0x0a8 */ OPT_NO_ECHO,
- /* 0x0a9 */ OPT_UTF_8,
- /* 0x0aa */ OPT_NO_UTF_8,
- /* 0x0ab */ OPT_FORCE,
- /* 0x0ac */ OPT_REPAIR_MAGICS,
- /* 0x0ad */ OPT_TINY,
- /* 0x0ae */ OPT_OLD,
- /* 0x0af */ OPT_STD,
- /* 0x0b0 */ OPT_NEW,
- /* 0x0b1 */ OPT_EXTRACT,
- /* 0x0b2 */ OPT_NUMBER,
- /* 0x0b3 */ OPT_SECTIONS,
- /* 0x0b4 */ 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 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_ECHO,
+ /* 0x0ab */ OPT_UTF_8,
+ /* 0x0ac */ OPT_NO_UTF_8,
+ /* 0x0ad */ OPT_FORCE,
+ /* 0x0ae */ OPT_REPAIR_MAGICS,
+ /* 0x0af */ OPT_TINY,
+ /* 0x0b0 */ OPT_OLD,
+ /* 0x0b1 */ OPT_STD,
+ /* 0x0b2 */ OPT_NEW,
+ /* 0x0b3 */ OPT_EXTRACT,
+ /* 0x0b4 */ OPT_NUMBER,
+ /* 0x0b5 */ OPT_SECTIONS,
+ /* 0x0b6 */ 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,
/* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
@@ -1208,169 +1226,175 @@ static u8 option_allowed_cmd_ARGTEST[41] = // cmd #4
1,1,1,1,1, 1,1,1,1,1, 1
};
-static u8 option_allowed_cmd_TEST[41] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[41] = // 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
};
-static u8 option_allowed_cmd_COLORS[41] = // cmd #6
+static u8 option_allowed_cmd_TEST[41] = // 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
+};
+
+static u8 option_allowed_cmd_COLORS[41] = // 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, 1,0,1,0,0,
0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_ERROR[41] = // cmd #7
+static u8 option_allowed_cmd_ERROR[41] = // cmd #8
{
0,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, 1
};
-static u8 option_allowed_cmd_FILETYPE[41] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[41] = // 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, 1,0,0,0,0,
0,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_FILEATTRIB[41] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[41] = // 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,1,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_SYMBOLS[41] = // cmd #10
+static u8 option_allowed_cmd_SYMBOLS[41] = // 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,1,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_FUNCTIONS[41] = // cmd #11
+static u8 option_allowed_cmd_FUNCTIONS[41] = // 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, 1,1,1,0,0,
0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_CALCULATE[41] = // cmd #12
+static u8 option_allowed_cmd_CALCULATE[41] = // 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
};
-static u8 option_allowed_cmd_MATRIX[41] = // cmd #13
+static u8 option_allowed_cmd_MATRIX[41] = // cmd #14
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 1,0,1,0,0,
0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_FLOAT[41] = // cmd #14
+static u8 option_allowed_cmd_FLOAT[41] = // 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,1, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_EXPORT[41] = // cmd #15
+static u8 option_allowed_cmd_EXPORT[41] = // 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
};
-static u8 option_allowed_cmd_CAT[41] = // cmd #16
+static u8 option_allowed_cmd_CAT[41] = // cmd #17
{
0,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,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_DECODE[41] = // cmd #17
+static u8 option_allowed_cmd_DECODE[41] = // cmd #18
{
0,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, 0
};
-static u8 option_allowed_cmd_ENCODE[41] = // cmd #18
+static u8 option_allowed_cmd_ENCODE[41] = // cmd #19
{
0,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, 0
};
-static u8 option_allowed_cmd_COPY[41] = // cmd #19
+static u8 option_allowed_cmd_COPY[41] = // cmd #20
{
0,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, 0
};
-static u8 option_allowed_cmd_CFF[41] = // cmd #20
+static u8 option_allowed_cmd_CFF[41] = // cmd #21
{
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,0,1,0,1,
1,1,1,1,1, 1,1,1,1,1, 0
};
-static u8 option_allowed_cmd_TYPES[41] = // cmd #21
+static u8 option_allowed_cmd_TYPES[41] = // 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,1,1,0,0,
0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_FLAGS[41] = // cmd #22
+static u8 option_allowed_cmd_FLAGS[41] = // cmd #23
{
0,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,1,1,0,0,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_DUMP[41] = // cmd #23
+static u8 option_allowed_cmd_DUMP[41] = // cmd #24
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 1,0,1,0,0,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_DBRIEF[41] = // cmd #24
+static u8 option_allowed_cmd_DBRIEF[41] = // cmd #25
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 1,0,1,0,0,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_LIST[41] = // cmd #25
+static u8 option_allowed_cmd_LIST[41] = // cmd #26
{
0,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,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_TRIANGLES[41] = // cmd #26
+static u8 option_allowed_cmd_TRIANGLES[41] = // cmd #27
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 1,0,1,0,0,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_TRAVERSE[41] = // cmd #27
+static u8 option_allowed_cmd_TRAVERSE[41] = // cmd #28
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 1,0,1,0,0,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_FALL[41] = // cmd #28
+static u8 option_allowed_cmd_FALL[41] = // cmd #29
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,0, 1,0,1,0,0,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_CHECK[41] = // cmd #29
+static u8 option_allowed_cmd_CHECK[41] = // 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, 1,0,1,0,1,
1,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_SHA1[41] = // cmd #30
+static u8 option_allowed_cmd_SHA1[41] = // cmd #31
{
0,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,0,0,
0,0,0,0,0, 0,0,0,0,1, 0
};
-static u8 option_allowed_cmd_ANALYZE[41] = // cmd #31
+static u8 option_allowed_cmd_ANALYZE[41] = // cmd #32
{
0,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,1, 0
};
-static u8 option_allowed_cmd_BLOW[41] = // cmd #32
+static u8 option_allowed_cmd_BLOW[41] = // 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,0, 0,0,0,0,1, 0
@@ -1392,9 +1416,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -1450,6 +1476,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
&option_cmd_TEST_VERBOSE,
@@ -2131,7 +2163,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms KCL Tool : Analyze, modify, export and create KCL and OBJ"
" files.",
0,
- 27,
+ 29,
option_tab_tool,
0
},
@@ -2197,13 +2229,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wkclt ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wkclt EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -2243,7 +2294,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wkclt ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -2258,7 +2310,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wkclt FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -2275,7 +2327,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -2320,7 +2373,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"CALCULATE",
0,
"wkclt CALCULATE expression...",
- "Calculate each expression and print the result to standard output.",
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command.",
0,
1,
option_tab_cmd_CALCULATE,
diff --git a/project/src/ui/ui-wkclt.h b/project/src/ui/ui-wkclt.h
index 50c89ca..352a4b8 100644
--- a/project/src/ui/ui-wkclt.h
+++ b/project/src/ui/ui-wkclt.h
@@ -109,9 +109,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -138,7 +140,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 77
+ OPT__N_TOTAL // == 79
} enumOptions;
@@ -240,6 +242,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -367,6 +371,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -398,7 +403,7 @@ typedef enum enumCommands
CMD_BLOW,
- CMD__N // == 33
+ CMD__N // == 34
} enumCommands;
@@ -443,6 +448,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
diff --git a/project/src/ui/ui-wkmpt.c b/project/src/ui/ui-wkmpt.c
index 3d566eb..6cce3b2 100644
--- a/project/src/ui/ui-wkmpt.c
+++ b/project/src/ui/ui-wkmpt.c
@@ -545,6 +545,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -560,7 +565,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -877,7 +889,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 == 94
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 96
};
@@ -1125,6 +1137,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -1175,9 +1188,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -1366,67 +1382,69 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_SCALE,
- /* 0x08d */ OPT_SHIFT,
- /* 0x08e */ OPT_XSS,
- /* 0x08f */ OPT_YSS,
- /* 0x090 */ OPT_ZSS,
- /* 0x091 */ OPT_ROT,
- /* 0x092 */ OPT_XROT,
- /* 0x093 */ OPT_YROT,
- /* 0x094 */ OPT_ZROT,
- /* 0x095 */ OPT_YPOS,
- /* 0x096 */ OPT_TRANSLATE,
- /* 0x097 */ OPT_NULL,
- /* 0x098 */ OPT_NEXT,
- /* 0x099 */ OPT_ASCALE,
- /* 0x09a */ OPT_AROT,
- /* 0x09b */ OPT_TFORM_SCRIPT,
- /* 0x09c */ OPT_RM_GOBJ,
- /* 0x09d */ OPT_BATTLE,
- /* 0x09e */ OPT_EXPORT_FLAGS,
- /* 0x09f */ OPT_ROUTE_OPTIONS,
- /* 0x0a0 */ OPT_WIM0,
- /* 0x0a1 */ OPT_SLOT,
- /* 0x0a2 */ OPT_POS_MODE,
- /* 0x0a3 */ OPT_POS_FILE,
- /* 0x0a4 */ OPT_PNG,
- /* 0x0a5 */ OPT_LOAD_KCL,
- /* 0x0a6 */ OPT_KCL,
- /* 0x0a7 */ OPT_KCL_FLAG,
- /* 0x0a8 */ OPT_KCL_SCRIPT,
- /* 0x0a9 */ OPT_TRI_AREA,
- /* 0x0aa */ OPT_TRI_HEIGHT,
- /* 0x0ab */ OPT_FLAG_FILE,
- /* 0x0ac */ OPT_XTRIDATA,
- /* 0x0ad */ OPT_KMP,
- /* 0x0ae */ OPT_SPEED_MOD,
- /* 0x0af */ OPT_KTPT2,
- /* 0x0b0 */ OPT_TFORM_KMP,
- /* 0x0b1 */ OPT_REPAIR_XPF,
- /* 0x0b2 */ OPT_GAMEMODES,
- /* 0x0b3 */ OPT_ROUND,
- /* 0x0b4 */ OPT_EPSILON,
- /* 0x0b5 */ OPT_DIFF,
- /* 0x0b6 */ OPT_NO_ECHO,
- /* 0x0b7 */ OPT_UTF_8,
- /* 0x0b8 */ OPT_NO_UTF_8,
- /* 0x0b9 */ OPT_FORCE,
- /* 0x0ba */ OPT_REPAIR_MAGICS,
- /* 0x0bb */ OPT_TINY,
- /* 0x0bc */ OPT_OLD,
- /* 0x0bd */ OPT_STD,
- /* 0x0be */ OPT_NEW,
- /* 0x0bf */ OPT_EXTRACT,
- /* 0x0c0 */ OPT_NUMBER,
- /* 0x0c1 */ OPT_SECTIONS,
- /* 0x0c2 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 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_SPEED_MOD,
+ /* 0x0b1 */ OPT_KTPT2,
+ /* 0x0b2 */ OPT_TFORM_KMP,
+ /* 0x0b3 */ OPT_REPAIR_XPF,
+ /* 0x0b4 */ OPT_GAMEMODES,
+ /* 0x0b5 */ OPT_ROUND,
+ /* 0x0b6 */ OPT_EPSILON,
+ /* 0x0b7 */ OPT_DIFF,
+ /* 0x0b8 */ OPT_NO_ECHO,
+ /* 0x0b9 */ OPT_UTF_8,
+ /* 0x0ba */ OPT_NO_UTF_8,
+ /* 0x0bb */ OPT_FORCE,
+ /* 0x0bc */ OPT_REPAIR_MAGICS,
+ /* 0x0bd */ OPT_TINY,
+ /* 0x0be */ OPT_OLD,
+ /* 0x0bf */ OPT_STD,
+ /* 0x0c0 */ OPT_NEW,
+ /* 0x0c1 */ OPT_EXTRACT,
+ /* 0x0c2 */ OPT_NUMBER,
+ /* 0x0c3 */ OPT_SECTIONS,
+ /* 0x0c4 */ 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,
@@ -1465,157 +1483,163 @@ static u8 option_allowed_cmd_ARGTEST[49] = // cmd #4
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[49] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[49] = // 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
};
-static u8 option_allowed_cmd_COLORS[49] = // cmd #6
+static u8 option_allowed_cmd_TEST[49] = // 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
+};
+
+static u8 option_allowed_cmd_COLORS[49] = // 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,1,
0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_ERROR[49] = // cmd #7
+static u8 option_allowed_cmd_ERROR[49] = // cmd #8
{
0,0,0,0,0, 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,1
};
-static u8 option_allowed_cmd_FILETYPE[49] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[49] = // 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,1,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_FILEATTRIB[49] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[49] = // 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,
1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_SYMBOLS[49] = // cmd #10
+static u8 option_allowed_cmd_SYMBOLS[49] = // 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,
1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_FUNCTIONS[49] = // cmd #11
+static u8 option_allowed_cmd_FUNCTIONS[49] = // 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,1,
1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_CALCULATE[49] = // cmd #12
+static u8 option_allowed_cmd_CALCULATE[49] = // 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
};
-static u8 option_allowed_cmd_MATRIX[49] = // cmd #13
+static u8 option_allowed_cmd_MATRIX[49] = // cmd #14
{
0,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,1,0,0,1,
0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_FLOAT[49] = // cmd #14
+static u8 option_allowed_cmd_FLOAT[49] = // 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,1,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_STARTPOS[49] = // cmd #15
+static u8 option_allowed_cmd_STARTPOS[49] = // cmd #16
{
0,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,1,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_OBJECTS[49] = // cmd #16
+static u8 option_allowed_cmd_OBJECTS[49] = // 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,1,
1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_EXPORT[49] = // cmd #17
+static u8 option_allowed_cmd_EXPORT[49] = // cmd #18
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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_XEXPORT[49] = // cmd #18
+static u8 option_allowed_cmd_XEXPORT[49] = // 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
};
-static u8 option_allowed_cmd_CAT[49] = // cmd #19
+static u8 option_allowed_cmd_CAT[49] = // cmd #20
{
0,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,1,0,0,0,
1,1,1,1,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_DECODE[49] = // cmd #20
+static u8 option_allowed_cmd_DECODE[49] = // cmd #21
{
0,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,1,0,0,0,
1,1,1,1,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,0
};
-static u8 option_allowed_cmd_ENCODE[49] = // cmd #21
+static u8 option_allowed_cmd_ENCODE[49] = // cmd #22
{
0,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,1,0,0,0,
0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,1,1,0
};
-static u8 option_allowed_cmd_DIFF[49] = // cmd #22
+static u8 option_allowed_cmd_DIFF[49] = // 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,1, 1,0,0,0,1, 0,1,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_DRAW[49] = // cmd #23
+static u8 option_allowed_cmd_DRAW[49] = // cmd #24
{
0,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,1,0,0,0,
1,1,1,1,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,0
};
-static u8 option_allowed_cmd_CHECK[49] = // cmd #24
+static u8 option_allowed_cmd_CHECK[49] = // 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,1,
0,1,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_STGI[49] = // cmd #25
+static u8 option_allowed_cmd_STGI[49] = // 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,
1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_KTPT[49] = // cmd #26
+static u8 option_allowed_cmd_KTPT[49] = // 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,1,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_ROUTES[49] = // cmd #27
+static u8 option_allowed_cmd_ROUTES[49] = // 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,
1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_GOBJ[49] = // cmd #28
+static u8 option_allowed_cmd_GOBJ[49] = // 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,1,
1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_GAMEMODES[49] = // cmd #29
+static u8 option_allowed_cmd_GAMEMODES[49] = // 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,1,0,1,
1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0
};
-static u8 option_allowed_cmd_WIM0[49] = // cmd #30
+static u8 option_allowed_cmd_WIM0[49] = // 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,1,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,0
@@ -1637,9 +1661,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -1704,6 +1730,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
&option_cmd_TEST_VERBOSE,
@@ -2196,7 +2228,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Wiimms KMP Tool : Analyze, modify, export and create (compile) KMP"
" files.",
0,
- 36,
+ 38,
option_tab_tool,
0
},
@@ -2262,13 +2294,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wkmpt ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wkmpt EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -2308,7 +2359,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wkmpt ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -2323,7 +2375,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wkmpt FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -2340,7 +2392,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -2385,7 +2438,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"CALCULATE",
0,
"wkmpt CALCULATE expression...",
- "Calculate each expression and print the result to standard output.",
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command.",
0,
1,
option_tab_cmd_CALCULATE,
diff --git a/project/src/ui/ui-wkmpt.h b/project/src/ui/ui-wkmpt.h
index a40d695..9bef264 100644
--- a/project/src/ui/ui-wkmpt.h
+++ b/project/src/ui/ui-wkmpt.h
@@ -117,9 +117,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -155,7 +157,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 94
+ OPT__N_TOTAL // == 96
} enumOptions;
@@ -267,6 +269,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -382,6 +386,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -411,7 +416,7 @@ typedef enum enumCommands
CMD_WIM0,
- CMD__N // == 31
+ CMD__N // == 32
} enumCommands;
@@ -459,6 +464,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
diff --git a/project/src/ui/ui-wlect.c b/project/src/ui/ui-wlect.c
index 1c67b0d..720e084 100644
--- a/project/src/ui/ui-wlect.c
+++ b/project/src/ui/ui-wlect.c
@@ -53,6 +53,20 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
//----- command specific options -----
+ { OPT_PLUS, false, false, false, false, false, 0, "plus",
+ "chars",
+ "If a name begins with a plus sign, then all characters up to the"
+ " first space are recognized as a plus prefix. The first part consists"
+ " of all the plus signs followed by any other characters. The first"
+ " character of the second part is used to determine the sort value. If"
+ " the second part is empty, then the last plus sign is used instead.\n"
+ " The higher sorting value is now calculated from the number of plus"
+ " signs in the first part, the more plus signs, the smaller the value."
+ " The first character from the second part determines the lower value."
+ " If it is in parameter CHARS then the position determines the value,"
+ " otherwise the ASCII value to which 500 is added."
+ },
+
{ OPT_ROUND, false, false, false, false, false, 0, "round",
0,
"Print additional lines with rounded values (to 3 and 2 bytes for"
@@ -110,6 +124,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" values. If needed, LEX section TEST is created or removed if empty."
},
+ { OPT_CREATE_DISTRIB, false, false, false, false, false, 0, "create-distrib",
+ "file",
+ "Create a LE-CODE distribution dump with a track list and more info"
+ " about the current distribution. Store the dump info a file."
+ },
+
{ OPT_LE_DEFINE, false, false, false, false, true, 0, "le-define",
"file",
"Use this file as definition file to patch LE-CODE. The file format"
@@ -230,6 +250,15 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --track-dir. If linking fails, the file is copied."
},
+ { OPT_SZS_MODE, false, false, false, false, false, 0, "szs-mode",
+ "mode",
+ "If a track is inserted via the SZS file, then the associated"
+ " directory is automatically included in the list of search"
+ " directories for option --track-dir. This option now sets the"
+ " transfer mode. OFF turns this feature off. The values COPY, MOVE,"
+ " MOVE1 and LINK define one of the 4 modes. Default mode is LINK."
+ },
+
{ OPT_COMPLETE, false, false, false, false, true, 'C', "complete",
0,
" Append missing sections to the LEX file."
@@ -358,7 +387,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 == 44
+ {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 47
//----- global options -----
@@ -418,6 +447,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -433,7 +467,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -482,6 +523,13 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" compatibility with the other tools."
},
+ { OPT_LOAD_PREFIX, false, false, false, false, false, 0, "load-prefix",
+ "file",
+ "Read in a PREFIX file and replace the internal prefix database with"
+ " the content. https://ct.wiimm.de/export/prefix is the authoritative"
+ " source for this."
+ },
+
{ OPT_CHDIR, false, false, false, false, false, 0, "chdir",
"dir",
"Set a new working directory for all following options, for all"
@@ -612,7 +660,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 == 79
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 85
};
@@ -742,6 +790,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -761,6 +810,8 @@ static const KeywordTab_t CommandTab[] =
{ CMD_PATCH, "PATCH", "P", 0 },
{ CMD_LPAR, "LPAR", 0, 0 },
{ CMD_CREATE, "CREATE", "CR", 0 },
+ { CMD_DISTRIBUTION, "DISTRIBUTION", "DIS", 0 },
+ { CMD_DISTRIBUTION, "DISTRIB", 0, 0 },
{ CMD_CAT, "CAT", 0, 0 },
{ CMD_DECODE, "DECODE", "DEC", 0 },
{ CMD_ENCODE, "ENCODE", "ENC", 0 },
@@ -787,9 +838,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -799,6 +853,9 @@ static const struct option OptionLong[] =
{ "ctcode", 0, 0, GO_CT_CODE },
{ "le-code", 2, 0, GO_LE_CODE },
{ "lecode", 2, 0, GO_LE_CODE },
+ { "load-prefix", 1, 0, GO_LOAD_PREFIX },
+ { "loadprefix", 1, 0, GO_LOAD_PREFIX },
+ { "plus", 1, 0, GO_PLUS },
{ "chdir", 1, 0, GO_CHDIR },
{ "const", 1, 0, 'c' },
{ "round", 0, 0, GO_ROUND },
@@ -845,6 +902,8 @@ static const struct option OptionLong[] =
{ "force", 0, 0, GO_FORCE },
{ "repair-magics", 2, 0, GO_REPAIR_MAGICS },
{ "repairmagics", 2, 0, GO_REPAIR_MAGICS },
+ { "create-distrib", 1, 0, GO_CREATE_DISTRIB },
+ { "createdistrib", 1, 0, GO_CREATE_DISTRIB },
{ "OLD", 0, 0, GO_OLD },
{ "STD", 0, 0, GO_STD },
{ "NEW", 0, 0, GO_NEW },
@@ -874,6 +933,8 @@ static const struct option OptionLong[] =
{ "move1tracks", 1, 0, GO_MOVE1_TRACKS },
{ "link-tracks", 1, 0, GO_LINK_TRACKS },
{ "linktracks", 1, 0, GO_LINK_TRACKS },
+ { "szs-mode", 1, 0, GO_SZS_MODE },
+ { "szsmode", 1, 0, GO_SZS_MODE },
{ "complete", 0, 0, 'C' },
{ "load-bmg", 1, 0, GO_LOAD_BMG },
{ "loadbmg", 1, 0, GO_LOAD_BMG },
@@ -962,56 +1023,62 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_ROUND,
- /* 0x08d */ OPT_NO_ECHO,
- /* 0x08e */ OPT_UTF_8,
- /* 0x08f */ OPT_NO_UTF_8,
- /* 0x090 */ OPT_LT_CLEAR,
- /* 0x091 */ OPT_LT_ONLINE,
- /* 0x092 */ OPT_LT_N_PLAYERS,
- /* 0x093 */ OPT_LT_COND_BIT,
- /* 0x094 */ OPT_LT_GAME_MODE,
- /* 0x095 */ OPT_LT_ENGINE,
- /* 0x096 */ OPT_LT_RANDOM,
- /* 0x097 */ OPT_LEX_PURGE,
- /* 0x098 */ OPT_LEX_RM_FEAT,
- /* 0x099 */ OPT_FORCE,
- /* 0x09a */ OPT_REPAIR_MAGICS,
- /* 0x09b */ OPT_OLD,
- /* 0x09c */ OPT_STD,
- /* 0x09d */ OPT_NEW,
- /* 0x09e */ OPT_EXTRACT,
- /* 0x09f */ OPT_LE_DEFINE,
- /* 0x0a0 */ OPT_LE_ARENA,
- /* 0x0a1 */ OPT_LPAR,
- /* 0x0a2 */ OPT_ALIAS,
- /* 0x0a3 */ OPT_ENGINE,
- /* 0x0a4 */ OPT_200CC,
- /* 0x0a5 */ OPT_PERFMON,
- /* 0x0a6 */ OPT_CUSTOM_TT,
- /* 0x0a7 */ OPT_XPFLAGS,
- /* 0x0a8 */ OPT_SPEEDOMETER,
- /* 0x0a9 */ OPT_DEBUG,
- /* 0x0aa */ OPT_TRACK_DIR,
- /* 0x0ab */ OPT_COPY_TRACKS,
- /* 0x0ac */ OPT_MOVE_TRACKS,
- /* 0x0ad */ OPT_MOVE1_TRACKS,
- /* 0x0ae */ OPT_LINK_TRACKS,
- /* 0x0af */ OPT_LOAD_BMG,
- /* 0x0b0 */ OPT_PATCH_BMG,
- /* 0x0b1 */ OPT_MACRO_BMG,
- /* 0x0b2 */ OPT_PATCH_NAMES,
- /* 0x0b3 */ OPT_ORDER_BY,
- /* 0x0b4 */ OPT_ORDER_ALL,
- /* 0x0b5 */ OPT_NUMBER,
- /* 0x0b6 */ OPT_SECTIONS,
- /* 0x0b7 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 0x08a */ OPT_NO_COLORS,
+ /* 0x08b */ OPT_CT_CODE,
+ /* 0x08c */ OPT_LE_CODE,
+ /* 0x08d */ OPT_LOAD_PREFIX,
+ /* 0x08e */ OPT_PLUS,
+ /* 0x08f */ OPT_CHDIR,
+ /* 0x090 */ OPT_ROUND,
+ /* 0x091 */ OPT_NO_ECHO,
+ /* 0x092 */ OPT_UTF_8,
+ /* 0x093 */ OPT_NO_UTF_8,
+ /* 0x094 */ OPT_LT_CLEAR,
+ /* 0x095 */ OPT_LT_ONLINE,
+ /* 0x096 */ OPT_LT_N_PLAYERS,
+ /* 0x097 */ OPT_LT_COND_BIT,
+ /* 0x098 */ OPT_LT_GAME_MODE,
+ /* 0x099 */ OPT_LT_ENGINE,
+ /* 0x09a */ OPT_LT_RANDOM,
+ /* 0x09b */ OPT_LEX_PURGE,
+ /* 0x09c */ OPT_LEX_RM_FEAT,
+ /* 0x09d */ OPT_FORCE,
+ /* 0x09e */ OPT_REPAIR_MAGICS,
+ /* 0x09f */ OPT_CREATE_DISTRIB,
+ /* 0x0a0 */ OPT_OLD,
+ /* 0x0a1 */ OPT_STD,
+ /* 0x0a2 */ OPT_NEW,
+ /* 0x0a3 */ OPT_EXTRACT,
+ /* 0x0a4 */ OPT_LE_DEFINE,
+ /* 0x0a5 */ OPT_LE_ARENA,
+ /* 0x0a6 */ OPT_LPAR,
+ /* 0x0a7 */ OPT_ALIAS,
+ /* 0x0a8 */ OPT_ENGINE,
+ /* 0x0a9 */ OPT_200CC,
+ /* 0x0aa */ OPT_PERFMON,
+ /* 0x0ab */ OPT_CUSTOM_TT,
+ /* 0x0ac */ OPT_XPFLAGS,
+ /* 0x0ad */ OPT_SPEEDOMETER,
+ /* 0x0ae */ OPT_DEBUG,
+ /* 0x0af */ OPT_TRACK_DIR,
+ /* 0x0b0 */ OPT_COPY_TRACKS,
+ /* 0x0b1 */ OPT_MOVE_TRACKS,
+ /* 0x0b2 */ OPT_MOVE1_TRACKS,
+ /* 0x0b3 */ OPT_LINK_TRACKS,
+ /* 0x0b4 */ OPT_SZS_MODE,
+ /* 0x0b5 */ OPT_LOAD_BMG,
+ /* 0x0b6 */ OPT_PATCH_BMG,
+ /* 0x0b7 */ OPT_MACRO_BMG,
+ /* 0x0b8 */ OPT_PATCH_NAMES,
+ /* 0x0b9 */ OPT_ORDER_BY,
+ /* 0x0ba */ OPT_ORDER_ALL,
+ /* 0x0bb */ OPT_NUMBER,
+ /* 0x0bc */ OPT_SECTIONS,
+ /* 0x0bd */ 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,
@@ -1027,154 +1094,166 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/////////////// opt_allowed_cmd_* ///////////////
///////////////////////////////////////////////////////////////////////////////
-static u8 option_allowed_cmd_VERSION[44] = // cmd #1
+static u8 option_allowed_cmd_VERSION[47] = // cmd #1
{
- 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,1
+ 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,1
};
-static u8 option_allowed_cmd_HELP[44] = // cmd #2
+static u8 option_allowed_cmd_HELP[47] = // 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
};
-static u8 option_allowed_cmd_CONFIG[44] = // cmd #3
+static u8 option_allowed_cmd_CONFIG[47] = // cmd #3
{
- 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, 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
};
-static u8 option_allowed_cmd_ARGTEST[44] = // cmd #4
+static u8 option_allowed_cmd_ARGTEST[47] = // 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
};
-static u8 option_allowed_cmd_TEST[44] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[47] = // 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
};
-static u8 option_allowed_cmd_COLORS[44] = // cmd #6
+static u8 option_allowed_cmd_TEST[47] = // cmd #6
{
- 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
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,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_ERROR[44] = // cmd #7
+static u8 option_allowed_cmd_COLORS[47] = // cmd #7
{
- 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,1
+ 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
};
-static u8 option_allowed_cmd_FILETYPE[44] = // cmd #8
+static u8 option_allowed_cmd_ERROR[47] = // cmd #8
{
- 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,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,1
};
-static u8 option_allowed_cmd_FILEATTRIB[44] = // cmd #9
+static u8 option_allowed_cmd_FILETYPE[47] = // cmd #9
{
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, 1,0
};
-static u8 option_allowed_cmd_SYMBOLS[44] = // cmd #10
+static u8 option_allowed_cmd_FILEATTRIB[47] = // cmd #10
{
- 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,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
};
-static u8 option_allowed_cmd_FUNCTIONS[44] = // cmd #11
+static u8 option_allowed_cmd_SYMBOLS[47] = // cmd #11
{
- 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,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
};
-static u8 option_allowed_cmd_CALCULATE[44] = // cmd #12
+static u8 option_allowed_cmd_FUNCTIONS[47] = // cmd #12
+{
+ 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
+};
+
+static u8 option_allowed_cmd_CALCULATE[47] = // 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
};
-static u8 option_allowed_cmd_FLOAT[44] = // cmd #13
+static u8 option_allowed_cmd_FLOAT[47] = // cmd #14
{
- 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,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
};
-static u8 option_allowed_cmd_EXPORT[44] = // cmd #14
+static u8 option_allowed_cmd_EXPORT[47] = // 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,0,0, 0,0
};
-static u8 option_allowed_cmd_DPAD[44] = // cmd #15
+static u8 option_allowed_cmd_DPAD[47] = // 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,0,0,0, 0,0
};
-static u8 option_allowed_cmd_DUMP[44] = // cmd #16
+static u8 option_allowed_cmd_DUMP[47] = // cmd #17
{
- 0,0,1,0,0, 0,0,0,0,0, 0,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,1,0, 0,0,0,0,0, 0,0,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
};
-static u8 option_allowed_cmd_DL[44] = // cmd #17
+static u8 option_allowed_cmd_DL[47] = // cmd #18
{
- 0,0,1,0,0, 0,0,0,0,0, 0,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,1,0, 0,0,0,0,0, 0,0,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
};
-static u8 option_allowed_cmd_DLL[44] = // cmd #18
+static u8 option_allowed_cmd_DLL[47] = // cmd #19
{
- 0,0,1,0,0, 0,0,0,0,0, 0,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,1,0, 0,0,0,0,0, 0,0,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
};
-static u8 option_allowed_cmd_BIN_DIFF[44] = // cmd #19
+static u8 option_allowed_cmd_BIN_DIFF[47] = // 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,0,0, 0,0
+};
+
+static u8 option_allowed_cmd_PATCH[47] = // cmd #21
+{
+ 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,0,
+ 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_PATCH[44] = // cmd #20
+static u8 option_allowed_cmd_LPAR[47] = // cmd #22
{
- 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,1, 1,1,1,1,1, 1,1,1,0
+ 0,0,0,0,1, 1,1,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_LPAR[44] = // cmd #21
+static u8 option_allowed_cmd_CREATE[47] = // cmd #23
{
- 0,0,0,1,1, 1,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,0,0,0, 0,0,0,0,0,
- 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0
+ 0,0,0,0,1, 1,1,0,1,1, 1,1,0,1,0, 1,0,1,1,1, 1,1,1,1,0, 0,0,0,0,0,
+ 0,1,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_CREATE[44] = // cmd #22
+static u8 option_allowed_cmd_DISTRIBUTION[47] = // cmd #24
{
- 0,0,0,1,1, 1,0,1,1,1, 1,0,0,1,0, 1,1,1,1,1, 1,1,0,0,0, 0,0,0,0,0,
- 0,0,0,0,1, 1,1,1,1,1, 1,1,1,0
+ 0,1,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,1,1,1,1,
+ 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_CAT[44] = // cmd #23
+static u8 option_allowed_cmd_CAT[47] = // cmd #25
{
- 0,0,0,1,1, 1,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,1,0
+ 0,0,0,0,1, 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,
+ 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0
};
-static u8 option_allowed_cmd_DECODE[44] = // cmd #24
+static u8 option_allowed_cmd_DECODE[47] = // cmd #26
{
- 0,0,0,1,1, 1,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,1, 1,1,1,1,1, 1,1,1,0
+ 0,0,0,0,1, 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,
+ 1,0,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,0
};
-static u8 option_allowed_cmd_ENCODE[44] = // cmd #25
+static u8 option_allowed_cmd_ENCODE[47] = // cmd #27
{
- 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,1, 1,1,1,1,1, 1,1,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,
+ 1,0,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,0
};
@@ -1193,15 +1272,18 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
OptionInfo + OPT_NO_COLORS,
OptionInfo + OPT_CT_CODE,
OptionInfo + OPT_LE_CODE,
+ OptionInfo + OPT_LOAD_PREFIX,
OptionInfo + OPT_CHDIR,
OptionInfo + OPT_CONST,
OptionInfo + OPT_MAX_FILE_SIZE,
@@ -1255,6 +1337,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
@@ -1355,6 +1443,7 @@ static const InfoOption_t * option_tab_cmd_DUMP[] =
&option_cmd_DUMP_LONG,
&option_cmd_DUMP_VERBOSE,
+ OptionInfo + OPT_CREATE_DISTRIB,
0
};
@@ -1376,6 +1465,7 @@ static const InfoOption_t * option_tab_cmd_DL[] =
&option_cmd_DUMP_LONG,
&option_cmd_DUMP_VERBOSE,
+ OptionInfo + OPT_CREATE_DISTRIB,
0
};
@@ -1397,6 +1487,7 @@ static const InfoOption_t * option_tab_cmd_DLL[] =
&option_cmd_DUMP_LONG,
&option_cmd_DUMP_VERBOSE,
+ OptionInfo + OPT_CREATE_DISTRIB,
0
};
@@ -1441,6 +1532,7 @@ static const InfoOption_t * option_tab_cmd_PATCH[] =
OptionInfo + OPT_UPDATE,
OptionInfo + OPT_PRESERVE,
OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_CREATE_DISTRIB,
0
};
@@ -1512,6 +1604,11 @@ static const InfoOption_t * option_tab_cmd_CREATE[] =
OptionInfo + OPT_NONE, // separator
+ OptionInfo + OPT_LE_DEFINE,
+ OptionInfo + OPT_LOAD_BMG,
+
+ OptionInfo + OPT_NONE, // separator
+
OptionInfo + OPT_ENGINE,
OptionInfo + OPT_200CC,
OptionInfo + OPT_PERFMON,
@@ -1523,6 +1620,38 @@ static const InfoOption_t * option_tab_cmd_CREATE[] =
0
};
+static const InfoOption_t * option_tab_cmd_DISTRIBUTION[] =
+{
+ OptionInfo + OPT_LOAD_PREFIX,
+ OptionInfo + OPT_PLUS,
+ OptionInfo + OPT_TRACK_DIR,
+ OptionInfo + OPT_COPY_TRACKS,
+ OptionInfo + OPT_MOVE_TRACKS,
+ OptionInfo + OPT_MOVE1_TRACKS,
+ OptionInfo + OPT_LINK_TRACKS,
+ OptionInfo + OPT_SZS_MODE,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+ &option_grp_TEXTOPT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_PRESERVE,
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_CAT[] =
{
OptionInfo + OPT_COMPLETE,
@@ -1595,7 +1724,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,
- 28,
+ 31,
option_tab_tool,
0
},
@@ -1661,13 +1790,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wlect ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wlect EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -1707,7 +1855,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wlect ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -1722,7 +1871,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wlect FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -1739,7 +1888,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -1784,7 +1934,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"CALCULATE",
0,
"wlect CALCULATE expression...",
- "Calculate each expression and print the result to standard output.",
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command.",
0,
1,
option_tab_cmd_CALCULATE,
@@ -1852,7 +2003,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print an information dump for each source file. LE-CODE binaries and"
" LEX binaries are accepted as input.",
0,
- 12,
+ 13,
option_tab_cmd_DUMP,
option_allowed_cmd_DUMP
},
@@ -1866,7 +2017,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"wlect DL [source]...",
"Short cut for 'DUMP --long'.",
0,
- 12,
+ 13,
option_tab_cmd_DL,
option_allowed_cmd_DL
},
@@ -1880,7 +2031,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"wlect DLL [source]...",
"Short cut for 'DUMP --long --long'.",
0,
- 12,
+ 13,
option_tab_cmd_DLL,
option_allowed_cmd_DLL
},
@@ -1917,7 +2068,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Read each LE-BIN file and patch it. Use --le-define to setup cups and"
" tracks.",
0,
- 24,
+ 25,
option_tab_cmd_PATCH,
option_allowed_cmd_PATCH
},
@@ -1944,21 +2095,37 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
true,
"CREATE",
"CR",
- "wlect CREATE [keyword]",
- "Create a file and print it to standard output. The kind of file is"
- " defined by KEYWORD. Use command without keywords to get a list of"
- " possible keywords.\n"
- " The following keywords are possible: LEX for a LEX text file with"
- " all known sections except TEST. LEX+ for a LEX text file with all"
- " known sections including TEST. SET1, CANN, HIPT and TEST (section"
- " names) for a LEX text file with 1 section only. LPAR for an example"
- " LE-CODE parameter file.",
+ "wlect CREATE [keyword] ...",
+ "Create a file and print it to standard output. Options --dest and"
+ " --DEST can forc another destination. The kind of file is defined by"
+ " KEYWORD. The command can create LEX files, a LPAR file or a track"
+ " listing.\n"
+ " Use the command without keyword to get an extended description.",
0,
- 29,
+ 31,
option_tab_cmd_CREATE,
option_allowed_cmd_CREATE
},
+ { CMD_DISTRIBUTION,
+ false,
+ false,
+ false,
+ "DISTRIBUTION",
+ "DIS",
+ "wlect DISTRIBUTION [argument]...",
+ "This command manages data for LE-CODE track distributions. It reads"
+ " any number of source files with different file types, collects the"
+ " data and creates any number of files with different file types.\n"
+ " Use the command without keyword to get an extended description.\n"
+ " This command is still under development. Its use is therefore"
+ " EXPERIMENTAL!",
+ 0,
+ 20,
+ option_tab_cmd_DISTRIBUTION,
+ option_allowed_cmd_DISTRIBUTION
+ },
+
{ CMD_CAT,
false,
false,
diff --git a/project/src/ui/ui-wlect.h b/project/src/ui/ui-wlect.h
index 4e6198e..854d96a 100644
--- a/project/src/ui/ui-wlect.h
+++ b/project/src/ui/ui-wlect.h
@@ -56,6 +56,7 @@ typedef enum enumOptions
//----- command specific options -----
+ OPT_PLUS,
OPT_ROUND,
OPT_LONG,
OPT_NO_HEADER,
@@ -66,6 +67,7 @@ typedef enum enumOptions
OPT_LT_CLEAR,
OPT_LT_ONLINE,
OPT_LT_N_PLAYERS,
+ OPT_CREATE_DISTRIB,
OPT_LE_DEFINE,
OPT_LE_ARENA,
OPT_LPAR,
@@ -82,6 +84,7 @@ typedef enum enumOptions
OPT_MOVE_TRACKS,
OPT_MOVE1_TRACKS,
OPT_LINK_TRACKS,
+ OPT_SZS_MODE,
OPT_COMPLETE,
OPT_LOAD_BMG,
OPT_PATCH_BMG,
@@ -100,7 +103,7 @@ typedef enum enumOptions
OPT_IGNORE,
OPT_SECTIONS,
- OPT__N_SPECIFIC, // == 44
+ OPT__N_SPECIFIC, // == 47
//----- global options -----
@@ -112,15 +115,18 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
OPT_NO_COLORS,
OPT_CT_CODE,
OPT_LE_CODE,
+ OPT_LOAD_PREFIX,
OPT_CHDIR,
OPT_CONST,
OPT_MAX_FILE_SIZE,
@@ -140,7 +146,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 79
+ OPT__N_TOTAL // == 85
} enumOptions;
@@ -155,6 +161,7 @@ typedef enum enumOptions
//{
// //----- command specific options -----
//
+// OB_PLUS = 1llu << OPT_PLUS,
// OB_ROUND = 1llu << OPT_ROUND,
// OB_LONG = 1llu << OPT_LONG,
// OB_NO_HEADER = 1llu << OPT_NO_HEADER,
@@ -165,6 +172,7 @@ typedef enum enumOptions
// OB_LT_CLEAR = 1llu << OPT_LT_CLEAR,
// OB_LT_ONLINE = 1llu << OPT_LT_ONLINE,
// OB_LT_N_PLAYERS = 1llu << OPT_LT_N_PLAYERS,
+// OB_CREATE_DISTRIB = 1llu << OPT_CREATE_DISTRIB,
// OB_LE_DEFINE = 1llu << OPT_LE_DEFINE,
// OB_LE_ARENA = 1llu << OPT_LE_ARENA,
// OB_LPAR = 1llu << OPT_LPAR,
@@ -181,6 +189,7 @@ typedef enum enumOptions
// OB_MOVE_TRACKS = 1llu << OPT_MOVE_TRACKS,
// OB_MOVE1_TRACKS = 1llu << OPT_MOVE1_TRACKS,
// OB_LINK_TRACKS = 1llu << OPT_LINK_TRACKS,
+// OB_SZS_MODE = 1llu << OPT_SZS_MODE,
// OB_COMPLETE = 1llu << OPT_COMPLETE,
// OB_LOAD_BMG = 1llu << OPT_LOAD_BMG,
// OB_PATCH_BMG = 1llu << OPT_PATCH_BMG,
@@ -248,6 +257,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -279,7 +290,8 @@ typedef enum enumOptions
//
// OB_CMD_DUMP = OB_GRP_PATCH
// | OB_LONG
-// | OB_GRP_PATCH,
+// | OB_GRP_PATCH
+// | OB_CREATE_DISTRIB,
//
// OB_CMD_DL = OB_CMD_DUMP,
//
@@ -290,7 +302,8 @@ typedef enum enumOptions
// OB_CMD_PATCH = OB_GRP_PATCH
// | OB_GRP_TRACK_COPY
// | OB_GRP_DEST
-// | OB_IGNORE,
+// | OB_IGNORE
+// | OB_CREATE_DISTRIB,
//
// OB_CMD_LPAR = OB_GRP_PATCH
// | OB_GRP_DEST
@@ -303,8 +316,16 @@ typedef enum enumOptions
// | OB_LT_CLEAR
// | OB_LT_ONLINE
// | OB_LT_N_PLAYERS
+// | OB_LE_DEFINE
+// | OB_LOAD_BMG
// | OB_GRP_PARAM,
//
+// OB_CMD_DISTRIBUTION = OB_PLUS
+// | OB_GRP_TRACK_COPY
+// | OB_SZS_MODE
+// | OB_GRP_TEXTOUT
+// | OB_GRP_DEST,
+//
// OB_CMD_CAT = OB_COMPLETE
// | OB_GRP_TEXTOUT
// | OB_NO_ECHO
@@ -336,6 +357,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -356,12 +378,13 @@ typedef enum enumCommands
CMD_LPAR,
CMD_CREATE,
+ CMD_DISTRIBUTION,
CMD_CAT,
CMD_DECODE,
CMD_ENCODE,
- CMD__N // == 26
+ CMD__N // == 28
} enumCommands;
@@ -405,11 +428,15 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
GO_CT_CODE,
GO_LE_CODE,
+ GO_LOAD_PREFIX,
+ GO_PLUS,
GO_CHDIR,
GO_ROUND,
GO_NO_ECHO,
@@ -426,6 +453,7 @@ typedef enum enumGetOpt
GO_LEX_RM_FEAT,
GO_FORCE,
GO_REPAIR_MAGICS,
+ GO_CREATE_DISTRIB,
GO_OLD,
GO_STD,
GO_NEW,
@@ -446,6 +474,7 @@ typedef enum enumGetOpt
GO_MOVE_TRACKS,
GO_MOVE1_TRACKS,
GO_LINK_TRACKS,
+ GO_SZS_MODE,
GO_LOAD_BMG,
GO_PATCH_BMG,
GO_MACRO_BMG,
diff --git a/project/src/ui/ui-wmdlt.c b/project/src/ui/ui-wmdlt.c
index 14d0016..0be480c 100644
--- a/project/src/ui/ui-wmdlt.c
+++ b/project/src/ui/ui-wmdlt.c
@@ -375,6 +375,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -390,7 +395,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -572,7 +584,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 == 66
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 68
};
@@ -703,6 +715,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -743,9 +756,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -879,42 +895,44 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_MDL,
- /* 0x08d */ OPT_SCALE,
- /* 0x08e */ OPT_SHIFT,
- /* 0x08f */ OPT_XSS,
- /* 0x090 */ OPT_YSS,
- /* 0x091 */ OPT_ZSS,
- /* 0x092 */ OPT_ROT,
- /* 0x093 */ OPT_XROT,
- /* 0x094 */ OPT_YROT,
- /* 0x095 */ OPT_ZROT,
- /* 0x096 */ OPT_TRANSLATE,
- /* 0x097 */ OPT_NULL,
- /* 0x098 */ OPT_NEXT,
- /* 0x099 */ OPT_ASCALE,
- /* 0x09a */ OPT_AROT,
- /* 0x09b */ OPT_TFORM_SCRIPT,
- /* 0x09c */ OPT_ROUND,
- /* 0x09d */ OPT_NO_ECHO,
- /* 0x09e */ OPT_UTF_8,
- /* 0x09f */ OPT_NO_UTF_8,
- /* 0x0a0 */ OPT_FORCE,
- /* 0x0a1 */ OPT_REPAIR_MAGICS,
- /* 0x0a2 */ OPT_TINY,
- /* 0x0a3 */ OPT_OLD,
- /* 0x0a4 */ OPT_STD,
- /* 0x0a5 */ OPT_NEW,
- /* 0x0a6 */ OPT_EXTRACT,
- /* 0x0a7 */ OPT_NUMBER,
- /* 0x0a8 */ OPT_SECTIONS,
- /* 0x0a9 */ 0,0,0,0, 0,0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 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_ECHO,
+ /* 0x0a0 */ OPT_UTF_8,
+ /* 0x0a1 */ OPT_NO_UTF_8,
+ /* 0x0a2 */ OPT_FORCE,
+ /* 0x0a3 */ OPT_REPAIR_MAGICS,
+ /* 0x0a4 */ OPT_TINY,
+ /* 0x0a5 */ OPT_OLD,
+ /* 0x0a6 */ OPT_STD,
+ /* 0x0a7 */ OPT_NEW,
+ /* 0x0a8 */ OPT_EXTRACT,
+ /* 0x0a9 */ OPT_NUMBER,
+ /* 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,
@@ -955,103 +973,109 @@ static u8 option_allowed_cmd_ARGTEST[33] = // cmd #4
1,1,1
};
-static u8 option_allowed_cmd_TEST[33] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[33] = // 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
};
-static u8 option_allowed_cmd_COLORS[33] = // cmd #6
+static u8 option_allowed_cmd_TEST[33] = // 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
+};
+
+static u8 option_allowed_cmd_COLORS[33] = // cmd #7
{
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
};
-static u8 option_allowed_cmd_ERROR[33] = // cmd #7
+static u8 option_allowed_cmd_ERROR[33] = // cmd #8
{
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,1
};
-static u8 option_allowed_cmd_FILETYPE[33] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[33] = // cmd #9
{
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,1,0
};
-static u8 option_allowed_cmd_FILEATTRIB[33] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[33] = // cmd #10
{
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
};
-static u8 option_allowed_cmd_SYMBOLS[33] = // cmd #10
+static u8 option_allowed_cmd_SYMBOLS[33] = // cmd #11
{
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
};
-static u8 option_allowed_cmd_FUNCTIONS[33] = // cmd #11
+static u8 option_allowed_cmd_FUNCTIONS[33] = // cmd #12
{
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
};
-static u8 option_allowed_cmd_CALCULATE[33] = // cmd #12
+static u8 option_allowed_cmd_CALCULATE[33] = // 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
};
-static u8 option_allowed_cmd_MATRIX[33] = // cmd #13
+static u8 option_allowed_cmd_MATRIX[33] = // cmd #14
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,1,0,1, 0,0,0,0,0, 0,0,0,0,0,
0,0,0
};
-static u8 option_allowed_cmd_FLOAT[33] = // cmd #14
+static u8 option_allowed_cmd_FLOAT[33] = // cmd #15
{
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
};
-static u8 option_allowed_cmd_EXPORT[33] = // cmd #15
+static u8 option_allowed_cmd_EXPORT[33] = // 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
};
-static u8 option_allowed_cmd_CAT[33] = // cmd #16
+static u8 option_allowed_cmd_CAT[33] = // cmd #17
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
0,1,0
};
-static u8 option_allowed_cmd_DECODE[33] = // cmd #17
+static u8 option_allowed_cmd_DECODE[33] = // cmd #18
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1,
1,1,0
};
-static u8 option_allowed_cmd_ENCODE[33] = // cmd #18
+static u8 option_allowed_cmd_ENCODE[33] = // cmd #19
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1,
1,1,0
};
-static u8 option_allowed_cmd_STRINGS[33] = // cmd #19
+static u8 option_allowed_cmd_STRINGS[33] = // cmd #20
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
0,1,0
};
-static u8 option_allowed_cmd_GEOMETRY[33] = // cmd #20
+static u8 option_allowed_cmd_GEOMETRY[33] = // cmd #21
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
0,1,0
};
-static u8 option_allowed_cmd_XTEST[33] = // cmd #21
+static u8 option_allowed_cmd_XTEST[33] = // cmd #22
{
0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
0,1,0
@@ -1073,9 +1097,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -1129,6 +1155,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
&option_cmd_TEST_VERBOSE,
@@ -1452,7 +1484,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,
- 25,
+ 27,
option_tab_tool,
0
},
@@ -1518,13 +1550,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wmdlt ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wmdlt EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -1564,7 +1615,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wmdlt ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -1579,7 +1631,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wmdlt FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -1596,7 +1648,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -1641,7 +1694,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"CALCULATE",
0,
"wmdlt CALCULATE expression...",
- "Calculate each expression and print the result to standard output.",
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command.",
0,
1,
option_tab_cmd_CALCULATE,
diff --git a/project/src/ui/ui-wmdlt.h b/project/src/ui/ui-wmdlt.h
index 54e94e3..242795b 100644
--- a/project/src/ui/ui-wmdlt.h
+++ b/project/src/ui/ui-wmdlt.h
@@ -101,9 +101,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -127,7 +129,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 66
+ OPT__N_TOTAL // == 68
} enumOptions;
@@ -217,6 +219,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -300,6 +304,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -320,7 +325,7 @@ typedef enum enumCommands
CMD_GEOMETRY,
CMD_XTEST,
- CMD__N // == 22
+ CMD__N // == 23
} enumCommands;
@@ -365,6 +370,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
diff --git a/project/src/ui/ui-wpatt.c b/project/src/ui/ui-wpatt.c
index b0df846..d2b9b3a 100644
--- a/project/src/ui/ui-wpatt.c
+++ b/project/src/ui/ui-wpatt.c
@@ -217,6 +217,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -232,7 +237,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -403,7 +415,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 == 50
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 52
};
@@ -504,6 +516,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -540,9 +553,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -658,26 +674,28 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_ROUND,
- /* 0x08d */ OPT_NO_ECHO,
- /* 0x08e */ OPT_PAT,
- /* 0x08f */ OPT_UTF_8,
- /* 0x090 */ OPT_NO_UTF_8,
- /* 0x091 */ OPT_FORCE,
- /* 0x092 */ OPT_REPAIR_MAGICS,
- /* 0x093 */ OPT_OLD,
- /* 0x094 */ OPT_STD,
- /* 0x095 */ OPT_NEW,
- /* 0x096 */ OPT_EXTRACT,
- /* 0x097 */ OPT_NUMBER,
- /* 0x098 */ OPT_SECTIONS,
- /* 0x099 */ 0,0,0,0, 0,0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 0x08a */ OPT_NO_COLORS,
+ /* 0x08b */ OPT_CT_CODE,
+ /* 0x08c */ OPT_LE_CODE,
+ /* 0x08d */ OPT_CHDIR,
+ /* 0x08e */ OPT_ROUND,
+ /* 0x08f */ OPT_NO_ECHO,
+ /* 0x090 */ OPT_PAT,
+ /* 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_SECTIONS,
+ /* 0x09b */ 0,0,0,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,
@@ -715,67 +733,72 @@ static u8 option_allowed_cmd_ARGTEST[18] = // cmd #4
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1
};
-static u8 option_allowed_cmd_TEST[18] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[18] = // cmd #5
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1
};
-static u8 option_allowed_cmd_COLORS[18] = // cmd #6
+static u8 option_allowed_cmd_TEST[18] = // cmd #6
+{
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1
+};
+
+static u8 option_allowed_cmd_COLORS[18] = // cmd #7
{
0,0,1,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0
};
-static u8 option_allowed_cmd_ERROR[18] = // cmd #7
+static u8 option_allowed_cmd_ERROR[18] = // cmd #8
{
0,0,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,1
};
-static u8 option_allowed_cmd_FILETYPE[18] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[18] = // cmd #9
{
0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0
};
-static u8 option_allowed_cmd_FILEATTRIB[18] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[18] = // cmd #10
{
0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0
};
-static u8 option_allowed_cmd_SYMBOLS[18] = // cmd #10
+static u8 option_allowed_cmd_SYMBOLS[18] = // cmd #11
{
0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0
};
-static u8 option_allowed_cmd_FUNCTIONS[18] = // cmd #11
+static u8 option_allowed_cmd_FUNCTIONS[18] = // cmd #12
{
0,0,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0
};
-static u8 option_allowed_cmd_CALCULATE[18] = // cmd #12
+static u8 option_allowed_cmd_CALCULATE[18] = // cmd #13
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0
};
-static u8 option_allowed_cmd_FLOAT[18] = // cmd #13
+static u8 option_allowed_cmd_FLOAT[18] = // cmd #14
{
0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0
};
-static u8 option_allowed_cmd_EXPORT[18] = // cmd #14
+static u8 option_allowed_cmd_EXPORT[18] = // cmd #15
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0
};
-static u8 option_allowed_cmd_CAT[18] = // cmd #15
+static u8 option_allowed_cmd_CAT[18] = // cmd #16
{
0,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0, 0,1,0
};
-static u8 option_allowed_cmd_DECODE[18] = // cmd #16
+static u8 option_allowed_cmd_DECODE[18] = // cmd #17
{
0,0,0,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,0
};
-static u8 option_allowed_cmd_ENCODE[18] = // cmd #17
+static u8 option_allowed_cmd_ENCODE[18] = // cmd #18
{
0,0,0,0,0, 0,1,1,1,1, 1,1,1,1,1, 1,1,0
};
@@ -796,9 +819,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -851,6 +876,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
@@ -1000,7 +1031,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,
- 24,
+ 26,
option_tab_tool,
0
},
@@ -1066,13 +1097,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wpatt ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wpatt EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -1112,7 +1162,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wpatt ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -1127,7 +1178,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wpatt FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -1144,7 +1195,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -1189,7 +1241,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"CALCULATE",
0,
"wpatt CALCULATE expression...",
- "Calculate each expression and print the result to standard output.",
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command.",
0,
1,
option_tab_cmd_CALCULATE,
diff --git a/project/src/ui/ui-wpatt.h b/project/src/ui/ui-wpatt.h
index 414f0a8..81e9549 100644
--- a/project/src/ui/ui-wpatt.h
+++ b/project/src/ui/ui-wpatt.h
@@ -86,9 +86,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -111,7 +113,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 50
+ OPT__N_TOTAL // == 52
} enumOptions;
@@ -170,6 +172,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -228,6 +232,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -243,7 +248,7 @@ typedef enum enumCommands
CMD_DECODE,
CMD_ENCODE,
- CMD__N // == 18
+ CMD__N // == 19
} enumCommands;
@@ -288,6 +293,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
diff --git a/project/src/ui/ui-wstrt.c b/project/src/ui/ui-wstrt.c
index b82ca2a..f3900b7 100644
--- a/project/src/ui/ui-wstrt.c
+++ b/project/src/ui/ui-wstrt.c
@@ -551,6 +551,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -566,7 +571,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -886,7 +898,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" directory."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 118
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 120
};
@@ -1066,6 +1078,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_HELP, "?", 0, 0 },
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -1111,9 +1124,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -1327,93 +1343,95 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_VS_REGION,
- /* 0x08d */ OPT_BT_REGION,
- /* 0x08e */ OPT_ALL_RANKS,
- /* 0x08f */ OPT_POINTS,
- /* 0x090 */ OPT_CHEAT,
- /* 0x091 */ OPT_HTTPS,
- /* 0x092 */ OPT_DOMAIN,
- /* 0x093 */ OPT_WIIMMFI,
- /* 0x094 */ OPT_TWIIMMFI,
- /* 0x095 */ OPT_WC24,
- /* 0x096 */ OPT_WCODE,
- /* 0x097 */ OPT_ADD_WCODE,
- /* 0x098 */ OPT_PB_MODE,
- /* 0x099 */ OPT_PATCHED_BY,
- /* 0x09a */ OPT_VS,
- /* 0x09b */ OPT_VS2,
- /* 0x09c */ OPT_BT,
- /* 0x09d */ OPT_BT2,
- /* 0x09e */ OPT_CANNON,
- /* 0x09f */ OPT_MENO,
- /* 0x0a0 */ OPT_UTF_8,
- /* 0x0a1 */ OPT_NO_UTF_8,
- /* 0x0a2 */ OPT_FORCE,
- /* 0x0a3 */ OPT_REPAIR_MAGICS,
- /* 0x0a4 */ OPT_OLD,
- /* 0x0a5 */ OPT_STD,
- /* 0x0a6 */ OPT_NEW,
- /* 0x0a7 */ OPT_EXTRACT,
- /* 0x0a8 */ OPT_NUMBER,
- /* 0x0a9 */ OPT_CLEAN_DOL,
- /* 0x0aa */ OPT_ADD_LECODE,
- /* 0x0ab */ OPT_ADD_CTCODE,
- /* 0x0ac */ OPT_CT_DIR,
- /* 0x0ad */ OPT_MOVE_D8,
- /* 0x0ae */ OPT_ADD_SECTION,
- /* 0x0af */ OPT_FULL_GCH,
- /* 0x0b0 */ OPT_GCT_NO_SEP,
- /* 0x0b1 */ OPT_GCT_SEP,
- /* 0x0b2 */ OPT_GCT_ASM_SEP,
- /* 0x0b3 */ OPT_GCT_LIST,
- /* 0x0b4 */ OPT_GCT_MOVE,
- /* 0x0b5 */ OPT_GCT_ADDR,
- /* 0x0b6 */ OPT_GCT_SPACE,
- /* 0x0b7 */ OPT_ALLOW_USER_GCH,
- /* 0x0b8 */ OPT_CREATE_SECT,
- /* 0x0b9 */ OPT_WPF,
- /* 0x0ba */ OPT_SECTIONS,
- /* 0x0bb */ OPT_PORT_DB,
- /* 0x0bc */ OPT_ORDER,
- /* 0x0bd */ OPT_VADDR,
- /* 0x0be */ OPT_FADDR,
- /* 0x0bf */ OPT_SNAME,
- /* 0x0c0 */ OPT_INT1,
- /* 0x0c1 */ OPT_INT2,
- /* 0x0c2 */ OPT_INT3,
- /* 0x0c3 */ OPT_INT4,
- /* 0x0c4 */ OPT_INT5,
- /* 0x0c5 */ OPT_INT6,
- /* 0x0c6 */ OPT_INT7,
- /* 0x0c7 */ OPT_INT8,
- /* 0x0c8 */ OPT_FLOAT,
- /* 0x0c9 */ OPT_DOUBLE,
- /* 0x0ca */ OPT_LE,
- /* 0x0cb */ OPT_BE,
- /* 0x0cc */ OPT_ZEROS,
- /* 0x0cd */ OPT_HEX,
- /* 0x0ce */ OPT_DEC,
- /* 0x0cf */ OPT_C_SYNTAX,
- /* 0x0d0 */ OPT_ADDR,
- /* 0x0d1 */ OPT_ALIGN,
- /* 0x0d2 */ OPT_TRIGGER,
- /* 0x0d3 */ OPT_NO_ADDR,
- /* 0x0d4 */ OPT_NO_NUMBERS,
- /* 0x0d5 */ OPT_NO_TEXT,
- /* 0x0d6 */ OPT_FORMAT,
- /* 0x0d7 */ OPT_NO_NULL,
- /* 0x0d8 */ OPT_NARROW,
- /* 0x0d9 */ OPT_SMALL,
- /* 0x0da */ OPT_WIDE,
- /* 0x0db */ OPT_BYTES,
- /* 0x0dc */ 0,0,0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 0x08a */ OPT_NO_COLORS,
+ /* 0x08b */ OPT_CT_CODE,
+ /* 0x08c */ OPT_LE_CODE,
+ /* 0x08d */ OPT_CHDIR,
+ /* 0x08e */ OPT_VS_REGION,
+ /* 0x08f */ OPT_BT_REGION,
+ /* 0x090 */ OPT_ALL_RANKS,
+ /* 0x091 */ OPT_POINTS,
+ /* 0x092 */ OPT_CHEAT,
+ /* 0x093 */ OPT_HTTPS,
+ /* 0x094 */ OPT_DOMAIN,
+ /* 0x095 */ OPT_WIIMMFI,
+ /* 0x096 */ OPT_TWIIMMFI,
+ /* 0x097 */ OPT_WC24,
+ /* 0x098 */ OPT_WCODE,
+ /* 0x099 */ OPT_ADD_WCODE,
+ /* 0x09a */ OPT_PB_MODE,
+ /* 0x09b */ OPT_PATCHED_BY,
+ /* 0x09c */ OPT_VS,
+ /* 0x09d */ OPT_VS2,
+ /* 0x09e */ OPT_BT,
+ /* 0x09f */ OPT_BT2,
+ /* 0x0a0 */ OPT_CANNON,
+ /* 0x0a1 */ OPT_MENO,
+ /* 0x0a2 */ OPT_UTF_8,
+ /* 0x0a3 */ OPT_NO_UTF_8,
+ /* 0x0a4 */ OPT_FORCE,
+ /* 0x0a5 */ OPT_REPAIR_MAGICS,
+ /* 0x0a6 */ OPT_OLD,
+ /* 0x0a7 */ OPT_STD,
+ /* 0x0a8 */ OPT_NEW,
+ /* 0x0a9 */ OPT_EXTRACT,
+ /* 0x0aa */ OPT_NUMBER,
+ /* 0x0ab */ OPT_CLEAN_DOL,
+ /* 0x0ac */ OPT_ADD_LECODE,
+ /* 0x0ad */ OPT_ADD_CTCODE,
+ /* 0x0ae */ OPT_CT_DIR,
+ /* 0x0af */ OPT_MOVE_D8,
+ /* 0x0b0 */ OPT_ADD_SECTION,
+ /* 0x0b1 */ OPT_FULL_GCH,
+ /* 0x0b2 */ OPT_GCT_NO_SEP,
+ /* 0x0b3 */ OPT_GCT_SEP,
+ /* 0x0b4 */ OPT_GCT_ASM_SEP,
+ /* 0x0b5 */ OPT_GCT_LIST,
+ /* 0x0b6 */ OPT_GCT_MOVE,
+ /* 0x0b7 */ OPT_GCT_ADDR,
+ /* 0x0b8 */ OPT_GCT_SPACE,
+ /* 0x0b9 */ OPT_ALLOW_USER_GCH,
+ /* 0x0ba */ OPT_CREATE_SECT,
+ /* 0x0bb */ OPT_WPF,
+ /* 0x0bc */ OPT_SECTIONS,
+ /* 0x0bd */ OPT_PORT_DB,
+ /* 0x0be */ OPT_ORDER,
+ /* 0x0bf */ OPT_VADDR,
+ /* 0x0c0 */ OPT_FADDR,
+ /* 0x0c1 */ OPT_SNAME,
+ /* 0x0c2 */ OPT_INT1,
+ /* 0x0c3 */ OPT_INT2,
+ /* 0x0c4 */ OPT_INT3,
+ /* 0x0c5 */ OPT_INT4,
+ /* 0x0c6 */ OPT_INT5,
+ /* 0x0c7 */ OPT_INT6,
+ /* 0x0c8 */ OPT_INT7,
+ /* 0x0c9 */ OPT_INT8,
+ /* 0x0ca */ OPT_FLOAT,
+ /* 0x0cb */ OPT_DOUBLE,
+ /* 0x0cc */ OPT_LE,
+ /* 0x0cd */ OPT_BE,
+ /* 0x0ce */ OPT_ZEROS,
+ /* 0x0cf */ OPT_HEX,
+ /* 0x0d0 */ OPT_DEC,
+ /* 0x0d1 */ OPT_C_SYNTAX,
+ /* 0x0d2 */ OPT_ADDR,
+ /* 0x0d3 */ OPT_ALIGN,
+ /* 0x0d4 */ OPT_TRIGGER,
+ /* 0x0d5 */ OPT_NO_ADDR,
+ /* 0x0d6 */ OPT_NO_NUMBERS,
+ /* 0x0d7 */ OPT_NO_TEXT,
+ /* 0x0d8 */ OPT_FORMAT,
+ /* 0x0d9 */ OPT_NO_NULL,
+ /* 0x0da */ OPT_NARROW,
+ /* 0x0db */ OPT_SMALL,
+ /* 0x0dc */ OPT_WIDE,
+ /* 0x0dd */ OPT_BYTES,
+ /* 0x0de */ 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,
/* 0x100 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
@@ -1455,140 +1473,147 @@ static u8 option_allowed_cmd_ARGTEST[66] = // cmd #4
1,1,1,1,1, 1
};
-static u8 option_allowed_cmd_TEST[66] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[66] = // 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
};
-static u8 option_allowed_cmd_COLORS[66] = // cmd #6
+static u8 option_allowed_cmd_TEST[66] = // 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
+};
+
+static u8 option_allowed_cmd_COLORS[66] = // 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
};
-static u8 option_allowed_cmd_ERROR[66] = // cmd #7
+static u8 option_allowed_cmd_ERROR[66] = // cmd #8
{
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,
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[66] = // cmd #8
+static u8 option_allowed_cmd_FILETYPE[66] = // cmd #9
{
0,1,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
};
-static u8 option_allowed_cmd_FILEATTRIB[66] = // cmd #9
+static u8 option_allowed_cmd_FILEATTRIB[66] = // cmd #10
{
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_RAWDUMP[66] = // cmd #10
+static u8 option_allowed_cmd_RAWDUMP[66] = // cmd #11
{
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
};
-static u8 option_allowed_cmd_DUMP[66] = // cmd #11
+static u8 option_allowed_cmd_DUMP[66] = // cmd #12
{
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
};
-static u8 option_allowed_cmd_CDUMP[66] = // cmd #12
+static u8 option_allowed_cmd_CDUMP[66] = // 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
};
-static u8 option_allowed_cmd_HEXDUMP[66] = // cmd #13
+static u8 option_allowed_cmd_HEXDUMP[66] = // 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, 1,1,1,1,1, 1,1,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[66] = // cmd #14
+static u8 option_allowed_cmd_PORT[66] = // cmd #15
{
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,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[66] = // cmd #15
+static u8 option_allowed_cmd_WHERE[66] = // cmd #16
{
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,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[66] = // cmd #16
+static u8 option_allowed_cmd_HTTPS[66] = // cmd #17
{
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
};
-static u8 option_allowed_cmd_EXTRACT[66] = // cmd #17
+static u8 option_allowed_cmd_EXTRACT[66] = // cmd #18
{
0,0,0,0,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, 0
};
-static u8 option_allowed_cmd_TRACKS[66] = // cmd #18
+static u8 option_allowed_cmd_TRACKS[66] = // cmd #19
{
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
};
-static u8 option_allowed_cmd_ARENAS[66] = // cmd #19
+static u8 option_allowed_cmd_ARENAS[66] = // cmd #20
{
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
};
-static u8 option_allowed_cmd_FILES[66] = // cmd #20
+static u8 option_allowed_cmd_FILES[66] = // 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
};
-static u8 option_allowed_cmd_FIND[66] = // cmd #21
+static u8 option_allowed_cmd_FIND[66] = // 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
};
-static u8 option_allowed_cmd_POINTS[66] = // cmd #22
+static u8 option_allowed_cmd_POINTS[66] = // cmd #23
{
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
};
-static u8 option_allowed_cmd_ANALYZE[66] = // cmd #23
+static u8 option_allowed_cmd_ANALYZE[66] = // cmd #24
{
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
};
-static u8 option_allowed_cmd_PATCH[66] = // cmd #24
+static u8 option_allowed_cmd_PATCH[66] = // cmd #25
{
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,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
@@ -1611,9 +1636,11 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
@@ -1685,6 +1712,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
@@ -1753,6 +1786,7 @@ static const InfoOption_t * option_tab_cmd_HEXDUMP[] =
OptionInfo + OPT_FADDR,
OptionInfo + OPT_SNAME,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_NONE, // separator
@@ -2020,7 +2054,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,
- 40,
+ 42,
option_tab_tool,
0
},
@@ -2086,13 +2120,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wstrt ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wstrt EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -2132,7 +2185,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wstrt ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -2147,7 +2201,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wstrt FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
2,
option_tab_cmd_FILETYPE,
@@ -2164,7 +2218,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -2226,7 +2281,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Select parts by --vaddr, --faddr and --sname. Without selectors, the"
" whole file is dumped.",
0,
- 32,
+ 33,
option_tab_cmd_HEXDUMP,
option_allowed_cmd_HEXDUMP
},
diff --git a/project/src/ui/ui-wstrt.h b/project/src/ui/ui-wstrt.h
index 31ecfe0..23742b8 100644
--- a/project/src/ui/ui-wstrt.h
+++ b/project/src/ui/ui-wstrt.h
@@ -135,9 +135,11 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
@@ -179,7 +181,7 @@ typedef enum enumOptions
OPT_CLEAN_DOL,
OPT_CT_DIR,
- OPT__N_TOTAL // == 118
+ OPT__N_TOTAL // == 120
} enumOptions;
@@ -313,6 +315,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -415,6 +419,7 @@ typedef enum enumCommands
CMD_HELP,
CMD_CONFIG,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -439,7 +444,7 @@ typedef enum enumCommands
CMD_ANALYZE,
CMD_PATCH,
- CMD__N // == 25
+ CMD__N // == 26
} enumCommands;
@@ -487,6 +492,8 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
diff --git a/project/src/ui/ui-wszst.c b/project/src/ui/ui-wszst.c
index 1d62e8e..7c4445c 100644
--- a/project/src/ui/ui-wszst.c
+++ b/project/src/ui/ui-wszst.c
@@ -53,6 +53,20 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
//----- command specific options -----
+ { OPT_PLUS, false, false, false, false, false, 0, "plus",
+ "chars",
+ "If a name begins with a plus sign, then all characters up to the"
+ " first space are recognized as a plus prefix. The first part consists"
+ " of all the plus signs followed by any other characters. The first"
+ " character of the second part is used to determine the sort value. If"
+ " the second part is empty, then the last plus sign is used instead.\n"
+ " The higher sorting value is now calculated from the number of plus"
+ " signs in the first part, the more plus signs, the smaller the value."
+ " The first character from the second part determines the lower value."
+ " If it is in parameter CHARS then the position determines the value,"
+ " otherwise the ASCII value to which 500 is added."
+ },
+
{ OPT_TOUCH, false, false, false, false, false, 0, "touch",
0,
"Mark the minimap as modified to force a new calculation of the"
@@ -445,7 +459,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
0,
"Print an ID with 8 characters instead of a SHA-1 sum with 40"
" characters. The SHA-1 sum is used to calculate the ID. The ID"
- " consists of '0'-'9' and 'a'-'w' (32 characters)."
+ " consists of '0'-'9' and 'a'-'v' (32 different characters)."
},
{ OPT_BASE64, true, false, false, false, false, 0, "base64",
@@ -1132,7 +1146,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 == 135
+ {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 136
//----- global options -----
@@ -1192,6 +1206,11 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" --width is set."
},
+ { OPT_NO_PAGER, false, false, false, true, false, 0, "no-pager",
+ 0,
+ "Forbid the internal usage of a pager."
+ },
+
{ OPT_QUIET, false, false, false, false, false, 'q', "quiet",
0,
"Be quiet and print only error messages. Multiple usage is possible."
@@ -1207,7 +1226,14 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_LOGGING, false, false, false, false, false, 'L', "logging",
0,
- "This debug option enables the logging of internal lists and maps."
+ "This debug option enables the logging of internal lists and maps. Set"
+ " it up to three times to be more verbose.\n"
+ },
+
+ { OPT_TIMING, false, false, false, false, false, 0, "timing",
+ 0,
+ "Activate the timing of some operations. Logging level 3 activates"
+ " them too.\n"
},
{ OPT_WARN, false, false, false, false, false, 'W', "warn",
@@ -1257,6 +1283,13 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" details."
},
+ { OPT_LOAD_PREFIX, false, false, false, false, false, 0, "load-prefix",
+ "file",
+ "Read in a PREFIX file and replace the internal prefix database with"
+ " the content. https://ct.wiimm.de/export/prefix is the authoritative"
+ " source for this."
+ },
+
{ OPT_CHDIR, false, false, false, false, false, 0, "chdir",
"dir",
"Set a new working directory for all following options, for all"
@@ -1768,7 +1801,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 == 211
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 215
};
@@ -2274,6 +2307,7 @@ static const KeywordTab_t CommandTab[] =
{ CMD_CONFIG, "CONFIG", 0, 0 },
{ CMD_INSTALL, "INSTALL", 0, 0 },
{ CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_EXPAND, "EXPAND", 0, 0 },
{ CMD_TEST, "TEST", 0, 0 },
{ CMD_COLORS, "COLORS", 0, 0 },
{ CMD_ERROR, "ERROR", "ERR", 0 },
@@ -2322,9 +2356,11 @@ static const KeywordTab_t CommandTab[] =
{ CMD_SHA1, "SHA1", 0, 0 },
{ CMD_ANALYZE, "ANALYZE", "ANA", 0 },
{ CMD_ANALYZE, "ANALYSE", 0, 0 },
+ { CMD_SPLIT, "SPLIT", 0, 0 },
{ CMD_IS_TEXTURE, "IS-TEXTURE", "ISTEXTURE", 0 },
{ CMD_FEATURES, "FEATURES", 0, 0 },
- { CMD_DISTRIBUTION, "DISTRIBUTION", "DIST", 0 },
+ { CMD_DISTRIBUTION, "DISTRIBUTION", "DIS", 0 },
+ { CMD_DISTRIBUTION, "DISTRIB", 0, 0 },
{ CMD_DIFF, "DIFF", "CMP", 0 },
{ CMD_CHECK, "CHECK", 0, 0 },
{ CMD_SLOTS, "SLOTS", 0, 0 },
@@ -2379,9 +2415,12 @@ static const struct option OptionLong[] =
{ "width", 1, 0, GO_WIDTH },
{ "max-width", 1, 0, GO_MAX_WIDTH },
{ "maxwidth", 1, 0, GO_MAX_WIDTH },
+ { "no-pager", 0, 0, GO_NO_PAGER },
+ { "nopager", 0, 0, GO_NO_PAGER },
{ "quiet", 0, 0, 'q' },
{ "verbose", 0, 0, 'v' },
{ "logging", 0, 0, 'L' },
+ { "timing", 0, 0, GO_TIMING },
{ "warn", 1, 0, 'W' },
{ "de", 0, 0, GO_DE },
{ "colors", 2, 0, GO_COLORS },
@@ -2391,6 +2430,9 @@ static const struct option OptionLong[] =
{ "ctcode", 0, 0, GO_CT_CODE },
{ "le-code", 2, 0, GO_LE_CODE },
{ "lecode", 2, 0, GO_LE_CODE },
+ { "load-prefix", 1, 0, GO_LOAD_PREFIX },
+ { "loadprefix", 1, 0, GO_LOAD_PREFIX },
+ { "plus", 1, 0, GO_PLUS },
{ "chdir", 1, 0, GO_CHDIR },
{ "const", 1, 0, 'c' },
{ "touch", 0, 0, GO_TOUCH },
@@ -2791,177 +2833,181 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x083 */ OPT_COMPATIBLE,
/* 0x084 */ OPT_WIDTH,
/* 0x085 */ OPT_MAX_WIDTH,
- /* 0x086 */ OPT_DE,
- /* 0x087 */ OPT_COLORS,
- /* 0x088 */ OPT_NO_COLORS,
- /* 0x089 */ OPT_CT_CODE,
- /* 0x08a */ OPT_LE_CODE,
- /* 0x08b */ OPT_CHDIR,
- /* 0x08c */ OPT_TOUCH,
- /* 0x08d */ OPT_AUTO,
- /* 0x08e */ OPT_SET_FLAGS,
- /* 0x08f */ OPT_SET_SCALE,
- /* 0x090 */ OPT_SET_ROT,
- /* 0x091 */ OPT_SET_X,
- /* 0x092 */ OPT_SET_Y,
- /* 0x093 */ OPT_SET_Z,
- /* 0x094 */ OPT_XCENTER,
- /* 0x095 */ OPT_YCENTER,
- /* 0x096 */ OPT_ZCENTER,
- /* 0x097 */ OPT_CENTER,
- /* 0x098 */ OPT_SCALE,
- /* 0x099 */ OPT_SHIFT,
- /* 0x09a */ OPT_XSS,
- /* 0x09b */ OPT_YSS,
- /* 0x09c */ OPT_ZSS,
- /* 0x09d */ OPT_ROT,
- /* 0x09e */ OPT_XROT,
- /* 0x09f */ OPT_YROT,
- /* 0x0a0 */ OPT_ZROT,
- /* 0x0a1 */ OPT_YPOS,
- /* 0x0a2 */ OPT_TRANSLATE,
- /* 0x0a3 */ OPT_NULL,
- /* 0x0a4 */ OPT_NEXT,
- /* 0x0a5 */ OPT_ASCALE,
- /* 0x0a6 */ OPT_AROT,
- /* 0x0a7 */ OPT_TFORM_SCRIPT,
- /* 0x0a8 */ OPT_MINIMAP,
- /* 0x0a9 */ OPT_RM_GOBJ,
- /* 0x0aa */ OPT_BATTLE,
- /* 0x0ab */ OPT_EXPORT_FLAGS,
- /* 0x0ac */ OPT_ROUTE_OPTIONS,
- /* 0x0ad */ OPT_WIM0,
- /* 0x0ae */ OPT_SLOT,
- /* 0x0af */ OPT_LOAD_KCL,
- /* 0x0b0 */ OPT_KCL,
- /* 0x0b1 */ OPT_KCL_FLAG,
- /* 0x0b2 */ OPT_KCL_SCRIPT,
- /* 0x0b3 */ OPT_TRI_AREA,
- /* 0x0b4 */ OPT_TRI_HEIGHT,
- /* 0x0b5 */ OPT_FLAG_FILE,
- /* 0x0b6 */ OPT_XTRIDATA,
- /* 0x0b7 */ OPT_KMP,
- /* 0x0b8 */ OPT_SPEED_MOD,
- /* 0x0b9 */ OPT_KTPT2,
- /* 0x0ba */ OPT_TFORM_KMP,
- /* 0x0bb */ OPT_REPAIR_XPF,
- /* 0x0bc */ OPT_GAMEMODES,
- /* 0x0bd */ OPT_MDL,
- /* 0x0be */ OPT_PAT,
- /* 0x0bf */ OPT_PATCH_FILE,
- /* 0x0c0 */ OPT_KMG_LIMIT,
- /* 0x0c1 */ OPT_KMG_COPY,
- /* 0x0c2 */ OPT_LT_CLEAR,
- /* 0x0c3 */ OPT_LT_ONLINE,
- /* 0x0c4 */ OPT_LT_N_PLAYERS,
- /* 0x0c5 */ OPT_LT_COND_BIT,
- /* 0x0c6 */ OPT_LT_GAME_MODE,
- /* 0x0c7 */ OPT_LT_ENGINE,
- /* 0x0c8 */ OPT_LT_RANDOM,
- /* 0x0c9 */ OPT_LEX_PURGE,
- /* 0x0ca */ OPT_LEX_FEATURES,
- /* 0x0cb */ OPT_LEX_RM_FEAT,
- /* 0x0cc */ OPT_LOAD_BMG,
- /* 0x0cd */ OPT_PATCH_BMG,
- /* 0x0ce */ OPT_MACRO_BMG,
- /* 0x0cf */ OPT_FILTER_BMG,
- /* 0x0d0 */ OPT_CACHE,
- /* 0x0d1 */ OPT_CNAME,
- /* 0x0d2 */ OPT_ID,
- /* 0x0d3 */ OPT_BASE64,
- /* 0x0d4 */ OPT_DB64,
- /* 0x0d5 */ OPT_CODING,
- /* 0x0d6 */ OPT_VERIFY,
- /* 0x0d7 */ OPT_ROUND,
- /* 0x0d8 */ OPT_PIPE,
- /* 0x0d9 */ OPT_DELTA,
- /* 0x0da */ OPT_DIFF,
- /* 0x0db */ OPT_EPSILON,
- /* 0x0dc */ OPT_BMG_ENDIAN,
- /* 0x0dd */ OPT_BMG_ENCODING,
- /* 0x0de */ OPT_BMG_INF_SIZE,
- /* 0x0df */ OPT_BMG_MID,
- /* 0x0e0 */ OPT_FORCE_ATTRIB,
- /* 0x0e1 */ OPT_DEF_ATTRIB,
- /* 0x0e2 */ OPT_NO_ATTRIB,
- /* 0x0e3 */ OPT_X_ESCAPES,
- /* 0x0e4 */ OPT_OLD_ESCAPES,
- /* 0x0e5 */ OPT_NO_BMG_COLORS,
- /* 0x0e6 */ OPT_BMG_COLORS,
- /* 0x0e7 */ OPT_NO_BMG_INLINE,
- /* 0x0e8 */ OPT_AUTOADD_PATH,
- /* 0x0e9 */ OPT_STRIP,
- /* 0x0ea */ OPT_UTF_8,
- /* 0x0eb */ OPT_NO_UTF_8,
- /* 0x0ec */ OPT_FORCE,
- /* 0x0ed */ OPT_REPAIR_MAGICS,
- /* 0x0ee */ OPT_TINY,
- /* 0x0ef */ OPT_YAZ0,
- /* 0x0f0 */ OPT_YAZ1,
- /* 0x0f1 */ OPT_XYZ,
- /* 0x0f2 */ OPT_BZ,
- /* 0x0f3 */ OPT_SH,
- /* 0x0f4 */ OPT_BASH,
- /* 0x0f5 */ OPT_JSON,
- /* 0x0f6 */ OPT_PHP,
- /* 0x0f7 */ OPT_MAKEDOC,
- /* 0x0f8 */ OPT_VAR,
- /* 0x0f9 */ OPT_ARRAY,
- /* 0x0fa */ OPT_AVAR,
- /* 0x0fb */ OPT_CASE,
- /* 0x0fc */ OPT_PMODES,
- /* 0x0fd */ OPT_FMODES,
- /* 0x0fe */ OPT_INSTALL,
- /* 0x0ff */ OPT_ANALYZE,
- /* 0x100 */ OPT_ANALYZE_MODE,
- /* 0x101 */ OPT_OLD,
- /* 0x102 */ OPT_STD,
- /* 0x103 */ OPT_NEW,
- /* 0x104 */ OPT_EXTRACT,
- /* 0x105 */ OPT_REFERENCE,
- /* 0x106 */ OPT_NUMBER,
- /* 0x107 */ OPT_REMOVE_SRC,
- /* 0x108 */ OPT_IGNORE_SETUP,
- /* 0x109 */ OPT_PURGE,
- /* 0x10a */ OPT_ALIGN_U8,
- /* 0x10b */ OPT_ALIGN_PACK,
- /* 0x10c */ OPT_ALIGN_BRRES,
- /* 0x10d */ OPT_ALIGN_BREFF,
- /* 0x10e */ OPT_ALIGN_BREFT,
- /* 0x10f */ OPT_ALIGN,
- /* 0x110 */ OPT_ENCODE_ALL,
- /* 0x111 */ OPT_ENCODE_IMG,
- /* 0x112 */ OPT_NO_ENCODE,
- /* 0x113 */ OPT_NO_RECURSE,
- /* 0x114 */ OPT_AUTO_ADD,
- /* 0x115 */ OPT_NO_ECHO,
- /* 0x116 */ OPT_PT_DIR,
- /* 0x117 */ OPT_RM_AIPARAM,
- /* 0x118 */ OPT_U8,
- /* 0x119 */ OPT_SZS,
- /* 0x11a */ OPT_WU8,
- /* 0x11b */ OPT_XWU8,
- /* 0x11c */ OPT_WBZ,
- /* 0x11d */ OPT_PACK,
- /* 0x11e */ OPT_BRRES,
- /* 0x11f */ OPT_BREFF,
- /* 0x120 */ OPT_BREFT,
- /* 0x121 */ OPT_NO_COMPRESS,
- /* 0x122 */ OPT_FAST,
- /* 0x123 */ OPT_LINKS,
- /* 0x124 */ OPT_BASEDIR,
- /* 0x125 */ OPT_DECODE,
- /* 0x126 */ OPT_MIPMAPS,
- /* 0x127 */ OPT_NO_MIPMAPS,
- /* 0x128 */ OPT_N_MIPMAPS,
- /* 0x129 */ OPT_MAX_MIPMAPS,
- /* 0x12a */ OPT_MIPMAP_SIZE,
- /* 0x12b */ OPT_FAST_MIPMAPS,
- /* 0x12c */ OPT_CMPR_DEFAULT,
- /* 0x12d */ OPT_CUT,
- /* 0x12e */ OPT_RAW,
- /* 0x12f */ OPT_SECTIONS,
- /* 0x130 */ 0,0,0,0, 0,0,
+ /* 0x086 */ OPT_NO_PAGER,
+ /* 0x087 */ OPT_TIMING,
+ /* 0x088 */ OPT_DE,
+ /* 0x089 */ OPT_COLORS,
+ /* 0x08a */ OPT_NO_COLORS,
+ /* 0x08b */ OPT_CT_CODE,
+ /* 0x08c */ OPT_LE_CODE,
+ /* 0x08d */ OPT_LOAD_PREFIX,
+ /* 0x08e */ OPT_PLUS,
+ /* 0x08f */ OPT_CHDIR,
+ /* 0x090 */ OPT_TOUCH,
+ /* 0x091 */ OPT_AUTO,
+ /* 0x092 */ OPT_SET_FLAGS,
+ /* 0x093 */ OPT_SET_SCALE,
+ /* 0x094 */ OPT_SET_ROT,
+ /* 0x095 */ OPT_SET_X,
+ /* 0x096 */ OPT_SET_Y,
+ /* 0x097 */ OPT_SET_Z,
+ /* 0x098 */ OPT_XCENTER,
+ /* 0x099 */ OPT_YCENTER,
+ /* 0x09a */ OPT_ZCENTER,
+ /* 0x09b */ OPT_CENTER,
+ /* 0x09c */ OPT_SCALE,
+ /* 0x09d */ OPT_SHIFT,
+ /* 0x09e */ OPT_XSS,
+ /* 0x09f */ OPT_YSS,
+ /* 0x0a0 */ OPT_ZSS,
+ /* 0x0a1 */ OPT_ROT,
+ /* 0x0a2 */ OPT_XROT,
+ /* 0x0a3 */ OPT_YROT,
+ /* 0x0a4 */ OPT_ZROT,
+ /* 0x0a5 */ OPT_YPOS,
+ /* 0x0a6 */ OPT_TRANSLATE,
+ /* 0x0a7 */ OPT_NULL,
+ /* 0x0a8 */ OPT_NEXT,
+ /* 0x0a9 */ OPT_ASCALE,
+ /* 0x0aa */ OPT_AROT,
+ /* 0x0ab */ OPT_TFORM_SCRIPT,
+ /* 0x0ac */ OPT_MINIMAP,
+ /* 0x0ad */ OPT_RM_GOBJ,
+ /* 0x0ae */ OPT_BATTLE,
+ /* 0x0af */ OPT_EXPORT_FLAGS,
+ /* 0x0b0 */ OPT_ROUTE_OPTIONS,
+ /* 0x0b1 */ OPT_WIM0,
+ /* 0x0b2 */ OPT_SLOT,
+ /* 0x0b3 */ OPT_LOAD_KCL,
+ /* 0x0b4 */ OPT_KCL,
+ /* 0x0b5 */ OPT_KCL_FLAG,
+ /* 0x0b6 */ OPT_KCL_SCRIPT,
+ /* 0x0b7 */ OPT_TRI_AREA,
+ /* 0x0b8 */ OPT_TRI_HEIGHT,
+ /* 0x0b9 */ OPT_FLAG_FILE,
+ /* 0x0ba */ OPT_XTRIDATA,
+ /* 0x0bb */ OPT_KMP,
+ /* 0x0bc */ OPT_SPEED_MOD,
+ /* 0x0bd */ OPT_KTPT2,
+ /* 0x0be */ OPT_TFORM_KMP,
+ /* 0x0bf */ OPT_REPAIR_XPF,
+ /* 0x0c0 */ OPT_GAMEMODES,
+ /* 0x0c1 */ OPT_MDL,
+ /* 0x0c2 */ OPT_PAT,
+ /* 0x0c3 */ OPT_PATCH_FILE,
+ /* 0x0c4 */ OPT_KMG_LIMIT,
+ /* 0x0c5 */ OPT_KMG_COPY,
+ /* 0x0c6 */ OPT_LT_CLEAR,
+ /* 0x0c7 */ OPT_LT_ONLINE,
+ /* 0x0c8 */ OPT_LT_N_PLAYERS,
+ /* 0x0c9 */ OPT_LT_COND_BIT,
+ /* 0x0ca */ OPT_LT_GAME_MODE,
+ /* 0x0cb */ OPT_LT_ENGINE,
+ /* 0x0cc */ OPT_LT_RANDOM,
+ /* 0x0cd */ OPT_LEX_PURGE,
+ /* 0x0ce */ OPT_LEX_FEATURES,
+ /* 0x0cf */ OPT_LEX_RM_FEAT,
+ /* 0x0d0 */ OPT_LOAD_BMG,
+ /* 0x0d1 */ OPT_PATCH_BMG,
+ /* 0x0d2 */ OPT_MACRO_BMG,
+ /* 0x0d3 */ OPT_FILTER_BMG,
+ /* 0x0d4 */ OPT_CACHE,
+ /* 0x0d5 */ OPT_CNAME,
+ /* 0x0d6 */ OPT_ID,
+ /* 0x0d7 */ OPT_BASE64,
+ /* 0x0d8 */ OPT_DB64,
+ /* 0x0d9 */ OPT_CODING,
+ /* 0x0da */ OPT_VERIFY,
+ /* 0x0db */ OPT_ROUND,
+ /* 0x0dc */ OPT_PIPE,
+ /* 0x0dd */ OPT_DELTA,
+ /* 0x0de */ OPT_DIFF,
+ /* 0x0df */ OPT_EPSILON,
+ /* 0x0e0 */ OPT_BMG_ENDIAN,
+ /* 0x0e1 */ OPT_BMG_ENCODING,
+ /* 0x0e2 */ OPT_BMG_INF_SIZE,
+ /* 0x0e3 */ OPT_BMG_MID,
+ /* 0x0e4 */ OPT_FORCE_ATTRIB,
+ /* 0x0e5 */ OPT_DEF_ATTRIB,
+ /* 0x0e6 */ OPT_NO_ATTRIB,
+ /* 0x0e7 */ OPT_X_ESCAPES,
+ /* 0x0e8 */ OPT_OLD_ESCAPES,
+ /* 0x0e9 */ OPT_NO_BMG_COLORS,
+ /* 0x0ea */ OPT_BMG_COLORS,
+ /* 0x0eb */ OPT_NO_BMG_INLINE,
+ /* 0x0ec */ OPT_AUTOADD_PATH,
+ /* 0x0ed */ OPT_STRIP,
+ /* 0x0ee */ OPT_UTF_8,
+ /* 0x0ef */ OPT_NO_UTF_8,
+ /* 0x0f0 */ OPT_FORCE,
+ /* 0x0f1 */ OPT_REPAIR_MAGICS,
+ /* 0x0f2 */ OPT_TINY,
+ /* 0x0f3 */ OPT_YAZ0,
+ /* 0x0f4 */ OPT_YAZ1,
+ /* 0x0f5 */ OPT_XYZ,
+ /* 0x0f6 */ OPT_BZ,
+ /* 0x0f7 */ OPT_SH,
+ /* 0x0f8 */ OPT_BASH,
+ /* 0x0f9 */ OPT_JSON,
+ /* 0x0fa */ OPT_PHP,
+ /* 0x0fb */ OPT_MAKEDOC,
+ /* 0x0fc */ OPT_VAR,
+ /* 0x0fd */ OPT_ARRAY,
+ /* 0x0fe */ OPT_AVAR,
+ /* 0x0ff */ OPT_CASE,
+ /* 0x100 */ OPT_PMODES,
+ /* 0x101 */ OPT_FMODES,
+ /* 0x102 */ OPT_INSTALL,
+ /* 0x103 */ OPT_ANALYZE,
+ /* 0x104 */ OPT_ANALYZE_MODE,
+ /* 0x105 */ OPT_OLD,
+ /* 0x106 */ OPT_STD,
+ /* 0x107 */ OPT_NEW,
+ /* 0x108 */ OPT_EXTRACT,
+ /* 0x109 */ OPT_REFERENCE,
+ /* 0x10a */ OPT_NUMBER,
+ /* 0x10b */ OPT_REMOVE_SRC,
+ /* 0x10c */ OPT_IGNORE_SETUP,
+ /* 0x10d */ OPT_PURGE,
+ /* 0x10e */ OPT_ALIGN_U8,
+ /* 0x10f */ OPT_ALIGN_PACK,
+ /* 0x110 */ OPT_ALIGN_BRRES,
+ /* 0x111 */ OPT_ALIGN_BREFF,
+ /* 0x112 */ OPT_ALIGN_BREFT,
+ /* 0x113 */ OPT_ALIGN,
+ /* 0x114 */ OPT_ENCODE_ALL,
+ /* 0x115 */ OPT_ENCODE_IMG,
+ /* 0x116 */ OPT_NO_ENCODE,
+ /* 0x117 */ OPT_NO_RECURSE,
+ /* 0x118 */ OPT_AUTO_ADD,
+ /* 0x119 */ OPT_NO_ECHO,
+ /* 0x11a */ OPT_PT_DIR,
+ /* 0x11b */ OPT_RM_AIPARAM,
+ /* 0x11c */ OPT_U8,
+ /* 0x11d */ OPT_SZS,
+ /* 0x11e */ OPT_WU8,
+ /* 0x11f */ OPT_XWU8,
+ /* 0x120 */ OPT_WBZ,
+ /* 0x121 */ OPT_PACK,
+ /* 0x122 */ OPT_BRRES,
+ /* 0x123 */ OPT_BREFF,
+ /* 0x124 */ OPT_BREFT,
+ /* 0x125 */ OPT_NO_COMPRESS,
+ /* 0x126 */ OPT_FAST,
+ /* 0x127 */ OPT_LINKS,
+ /* 0x128 */ OPT_BASEDIR,
+ /* 0x129 */ OPT_DECODE,
+ /* 0x12a */ OPT_MIPMAPS,
+ /* 0x12b */ OPT_NO_MIPMAPS,
+ /* 0x12c */ OPT_N_MIPMAPS,
+ /* 0x12d */ OPT_MAX_MIPMAPS,
+ /* 0x12e */ OPT_MIPMAP_SIZE,
+ /* 0x12f */ OPT_FAST_MIPMAPS,
+ /* 0x130 */ OPT_CMPR_DEFAULT,
+ /* 0x131 */ OPT_CUT,
+ /* 0x132 */ OPT_RAW,
+ /* 0x133 */ OPT_SECTIONS,
+ /* 0x134 */ 0,0,
};
//
@@ -2969,706 +3015,724 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/////////////// opt_allowed_cmd_* ///////////////
///////////////////////////////////////////////////////////////////////////////
-static u8 option_allowed_cmd_VERSION[135] = // cmd #1
+static u8 option_allowed_cmd_VERSION[136] = // 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,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,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,1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
};
-static u8 option_allowed_cmd_HELP[135] = // cmd #2
+static u8 option_allowed_cmd_HELP[136] = // 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
};
-static u8 option_allowed_cmd_CONFIG[135] = // cmd #3
+static u8 option_allowed_cmd_CONFIG[136] = // 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,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,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,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, 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, 1
};
-static u8 option_allowed_cmd_INSTALL[135] = // cmd #4
+static u8 option_allowed_cmd_INSTALL[136] = // 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,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[136] = // 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
};
-static u8 option_allowed_cmd_ARGTEST[135] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[136] = // 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
};
-static u8 option_allowed_cmd_TEST[135] = // cmd #6
+static u8 option_allowed_cmd_TEST[136] = // cmd #7
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,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[135] = // cmd #7
+static u8 option_allowed_cmd_COLORS[136] = // cmd #8
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,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
};
-static u8 option_allowed_cmd_ERROR[135] = // cmd #8
+static u8 option_allowed_cmd_ERROR[136] = // 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,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,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,1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
};
-static u8 option_allowed_cmd_FILETYPE[135] = // cmd #9
+static u8 option_allowed_cmd_FILETYPE[136] = // 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,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,1,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,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
};
-static u8 option_allowed_cmd_FILEATTRIB[135] = // cmd #10
+static u8 option_allowed_cmd_FILEATTRIB[136] = // 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,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,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #11
+static u8 option_allowed_cmd_BRSUB[136] = // 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,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,1,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,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
};
-static u8 option_allowed_cmd_SYMBOLS[135] = // cmd #12
+static u8 option_allowed_cmd_SYMBOLS[136] = // 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,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,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #13
+static u8 option_allowed_cmd_FUNCTIONS[136] = // 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,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,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
};
-static u8 option_allowed_cmd_CALCULATE[135] = // cmd #14
+static u8 option_allowed_cmd_CALCULATE[136] = // 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,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #15
+static u8 option_allowed_cmd_MATRIX[136] = // cmd #16
{
- 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,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,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,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
};
-static u8 option_allowed_cmd_FLOAT[135] = // cmd #16
+static u8 option_allowed_cmd_FLOAT[136] = // 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,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,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #17
+static u8 option_allowed_cmd_VR_CALC[136] = // cmd #18
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #18
+static u8 option_allowed_cmd_VR_RACE[136] = // 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,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,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #19
+static u8 option_allowed_cmd_AUTOADD[136] = // 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,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, 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,0, 0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_TRACKS[135] = // cmd #20
+static u8 option_allowed_cmd_TRACKS[136] = // 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,1,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,1,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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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
};
-static u8 option_allowed_cmd_SCANCACHE[135] = // cmd #21
+static u8 option_allowed_cmd_SCANCACHE[136] = // 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,0,
0,0,0,0,0, 0,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,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
};
-static u8 option_allowed_cmd_EXPORT[135] = // cmd #22
+static u8 option_allowed_cmd_EXPORT[136] = // 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, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #23
+static u8 option_allowed_cmd_SIZEOF[136] = // 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,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, 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,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[135] = // cmd #24
+static u8 option_allowed_cmd_CODE[136] = // 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
};
-static u8 option_allowed_cmd_RECODE[135] = // cmd #25
+static u8 option_allowed_cmd_RECODE[136] = // 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,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,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[135] = // cmd #26
+static u8 option_allowed_cmd_SUBFILE[136] = // 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,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, 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
};
-static u8 option_allowed_cmd_TESTNORM[135] = // cmd #27
+static u8 option_allowed_cmd_TESTNORM[136] = // 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
};
-static u8 option_allowed_cmd_LIST[135] = // cmd #28
+static u8 option_allowed_cmd_LIST[136] = // 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,1,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,1,0,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, 0,0,0,1,1,
- 0,1,1,0,1, 1,1,1,1,1, 1,1,1,0,0
+ 0,0,1,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,1,0,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,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[135] = // cmd #29
+static u8 option_allowed_cmd_LIST_L[136] = // 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,1,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,1,0,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, 0,0,0,1,1,
- 0,1,1,0,1, 1,1,1,1,1, 1,1,1,0,0
+ 0,0,1,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,1,0,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,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[135] = // cmd #30
+static u8 option_allowed_cmd_LIST_LL[136] = // 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,1,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,1,0,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, 0,0,0,1,1,
- 0,1,1,0,1, 1,1,1,1,1, 1,1,1,0,0
+ 0,0,1,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,1,0,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,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[135] = // cmd #31
+static u8 option_allowed_cmd_LIST_LLL[136] = // 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,1,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,1,0,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, 0,0,0,1,1,
- 0,1,1,0,1, 1,1,1,1,1, 1,1,1,0,0
+ 0,0,1,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,1,0,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,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[135] = // cmd #32
+static u8 option_allowed_cmd_LIST_A[136] = // 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,1,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,1,0,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, 0,0,0,1,1,
- 0,1,1,0,1, 1,1,1,1,1, 1,1,1,0,0
+ 0,0,1,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,1,0,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,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[135] = // cmd #33
+static u8 option_allowed_cmd_LIST_LA[136] = // 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,1,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,1,0,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, 0,0,0,1,1,
- 0,1,1,0,1, 1,1,1,1,1, 1,1,1,0,0
+ 0,0,1,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,1,0,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,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[135] = // cmd #34
+static u8 option_allowed_cmd_NAME_REF[136] = // 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,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,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,1,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,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[135] = // cmd #35
+static u8 option_allowed_cmd_ILIST[136] = // 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,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,1,0,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, 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,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,1,0,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,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[135] = // cmd #36
+static u8 option_allowed_cmd_ILIST_L[136] = // 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,1,1,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,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, 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,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,1,0,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,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[135] = // cmd #37
+static u8 option_allowed_cmd_ILIST_LL[136] = // 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,1,1,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,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, 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,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,1,0,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,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[135] = // cmd #38
+static u8 option_allowed_cmd_ILIST_A[136] = // 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,1,1,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,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, 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,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,1,0,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,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[135] = // cmd #39
+static u8 option_allowed_cmd_ILIST_LA[136] = // 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,1,1,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,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, 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,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,1,0,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,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[135] = // cmd #40
+static u8 option_allowed_cmd_MEMORY[136] = // 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,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, 1,1,0,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, 0,0,0,1,1,
- 0,1,1,1,1, 1,1,1,1,1, 1,1,1,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,1,1,0,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,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[135] = // cmd #41
+static u8 option_allowed_cmd_MEMORY_A[136] = // 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,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, 1,1,0,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, 0,0,0,1,1,
- 0,1,1,1,1, 1,1,1,1,1, 1,1,1,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,1,1,0,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,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[135] = // cmd #42
+static u8 option_allowed_cmd_DUMP[136] = // 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,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,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, 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,0, 0,1,1,0,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,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[135] = // cmd #43
+static u8 option_allowed_cmd_SHA1[136] = // 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,0, 0,0,0,0,0, 0,1,1,1,1, 1,0,1,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,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, 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,0, 0,0,1,1,1, 1,1,0,1,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, 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,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_ANALYZE[135] = // cmd #44
+static u8 option_allowed_cmd_ANALYZE[136] = // 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,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,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,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, 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,1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
};
-static u8 option_allowed_cmd_IS_TEXTURE[135] = // cmd #45
+static u8 option_allowed_cmd_SPLIT[136] = // cmd #46
{
+ 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,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,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,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, 1
+};
+
+static u8 option_allowed_cmd_IS_TEXTURE[136] = // 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,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,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
};
-static u8 option_allowed_cmd_FEATURES[135] = // cmd #46
+static u8 option_allowed_cmd_FEATURES[136] = // cmd #48
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,1,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,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,1,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,1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
};
-static u8 option_allowed_cmd_DISTRIBUTION[135] = // cmd #47
+static u8 option_allowed_cmd_DISTRIBUTION[136] = // 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,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, 1,1,0,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, 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,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,1,1,0,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,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[135] = // cmd #48
+static u8 option_allowed_cmd_DIFF[136] = // 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,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, 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,1,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,1,1,0, 0
};
-static u8 option_allowed_cmd_CHECK[135] = // cmd #49
+static u8 option_allowed_cmd_CHECK[136] = // cmd #51
{
- 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,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, 1,1,0,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, 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,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,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,1,1,0,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,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[135] = // cmd #50
+static u8 option_allowed_cmd_SLOTS[136] = // cmd #52
{
- 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,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,1,0,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, 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,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,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,1,0,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,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[135] = // cmd #51
+static u8 option_allowed_cmd_STGI[136] = // cmd #53
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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,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, 0,0,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_ISARENA[135] = // cmd #52
+static u8 option_allowed_cmd_ISARENA[136] = // cmd #54
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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,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,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
};
-static u8 option_allowed_cmd_NORMALIZE[135] = // cmd #53
+static u8 option_allowed_cmd_NORMALIZE[136] = // cmd #55
{
- 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0, 0,1,0,0,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
+ 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0, 0,0,1,0,0, 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[135] = // cmd #54
+static u8 option_allowed_cmd_PATCH[136] = // cmd #56
{
- 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0, 0,1,0,0,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
+ 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0, 0,0,1,0,0, 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[135] = // cmd #55
+static u8 option_allowed_cmd_COPY[136] = // cmd #57
{
- 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0, 0,1,0,0,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
+ 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0, 0,0,1,0,0, 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[135] = // cmd #56
+static u8 option_allowed_cmd_DUPLICATE[136] = // cmd #58
{
- 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0, 0,1,0,0,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
+ 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0, 0,0,1,0,0, 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[135] = // cmd #57
+static u8 option_allowed_cmd_MINIMAP[136] = // cmd #59
{
- 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,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,1,1,0,
- 0,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,1,1,1,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,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,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,1,1,
+ 0,0,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,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[135] = // cmd #58
+static u8 option_allowed_cmd_COMPRESS[136] = // cmd #60
{
- 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0, 0,1,0,0,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
+ 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0, 0,0,1,0,0, 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[135] = // cmd #59
+static u8 option_allowed_cmd_DECOMPRESS[136] = // cmd #61
{
- 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0, 0,1,0,0,1, 1,1,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,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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0, 0,0,1,0,0, 1,1,1,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
};
-static u8 option_allowed_cmd_ENCODE[135] = // cmd #60
+static u8 option_allowed_cmd_ENCODE[136] = // cmd #62
{
- 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,0,0,0,0, 0,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,1,
- 0,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,1, 1,1,1,1,1, 1,0,1,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,0,0,0, 0,0,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,
+ 1,0,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, 1,1,1,1,1, 1,1,0,1,0, 0
};
-static u8 option_allowed_cmd_CREATE[135] = // cmd #61
+static u8 option_allowed_cmd_CREATE[136] = // cmd #63
{
- 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,0,0,0,0, 0,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, 1,1,1,1,0, 1,1,1,0,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,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,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,0,0,0, 0,0,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,1,1,1,1, 0,1,1,1,0,
+ 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,
+ 1,0,0,0,0, 1,1,1,1,1, 1,1,0,1,0, 0
};
-static u8 option_allowed_cmd_UPDATE[135] = // cmd #62
+static u8 option_allowed_cmd_UPDATE[136] = // cmd #64
{
- 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,0,0,0,0, 0,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,1,0,1, 1,1,1,1,0, 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, 1,1,1,0,0,
- 0,1,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,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,0,0,0, 0,0,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,1,0, 1,1,1,1,1, 0,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,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[135] = // cmd #63
+static u8 option_allowed_cmd_EXTRACT[136] = // cmd #65
{
- 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,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,1,1,0, 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,1,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
+ 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,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,1,1, 0,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,1, 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[135] = // cmd #64
+static u8 option_allowed_cmd_XDECODE[136] = // cmd #66
{
- 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,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,1,1,0, 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,1,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
+ 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,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,1,1, 0,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,1, 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[135] = // cmd #65
+static u8 option_allowed_cmd_XEXPORT[136] = // cmd #67
{
- 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,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,1,1,0, 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,1,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
+ 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,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,1,1, 0,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,1, 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[135] = // cmd #66
+static u8 option_allowed_cmd_XALL[136] = // cmd #68
{
- 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,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,1,1,0, 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,1,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
+ 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,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,1,1, 0,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,1, 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[135] = // cmd #67
+static u8 option_allowed_cmd_XCOMMON[136] = // cmd #69
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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, 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,0, 0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_BINARY[135] = // cmd #68
+static u8 option_allowed_cmd_BINARY[136] = // cmd #70
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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, 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,0, 0,0,0,0,0, 0,0,0,0,0, 0
};
-static u8 option_allowed_cmd_TEXT[135] = // cmd #69
+static u8 option_allowed_cmd_TEXT[136] = // 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,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,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,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, 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,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
};
-static u8 option_allowed_cmd_CAT[135] = // cmd #70
+static u8 option_allowed_cmd_CAT[136] = // 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,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,0,1,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,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,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
};
-static u8 option_allowed_cmd_BMG[135] = // cmd #71
+static u8 option_allowed_cmd_BMG[136] = // 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,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,0,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, 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,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
};
-static u8 option_allowed_cmd_KCL[135] = // cmd #72
+static u8 option_allowed_cmd_KCL[136] = // cmd #74
{
- 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,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,0, 0,0,0,1,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,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,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, 0,0,0,0,1,
+ 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
};
-static u8 option_allowed_cmd_KMP[135] = // cmd #73
+static u8 option_allowed_cmd_KMP[136] = // cmd #75
{
- 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,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,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,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,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,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,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,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_LEX[135] = // cmd #74
+static u8 option_allowed_cmd_LEX[136] = // cmd #76
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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,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,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,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
};
-static u8 option_allowed_cmd_INFO[135] = // cmd #75
+static u8 option_allowed_cmd_INFO[136] = // cmd #77
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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,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, 0,0,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[135] = // cmd #76
+static u8 option_allowed_cmd_GHOST[136] = // 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,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, 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,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,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,1
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
};
-static u8 option_allowed_cmd_YAZDUMP[135] = // cmd #77
+static u8 option_allowed_cmd_YAZDUMP[136] = // 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,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, 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
};
-static u8 option_allowed_cmd_VEHICLE[135] = // cmd #78
+static u8 option_allowed_cmd_VEHICLE[136] = // 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,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,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, 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, 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
};
@@ -3687,15 +3751,18 @@ static const InfoOption_t * option_tab_tool[] =
OptionInfo + OPT_COMPATIBLE,
OptionInfo + OPT_WIDTH,
OptionInfo + OPT_MAX_WIDTH,
+ OptionInfo + OPT_NO_PAGER,
OptionInfo + OPT_QUIET,
OptionInfo + OPT_VERBOSE,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_WARN,
OptionInfo + OPT_DE,
OptionInfo + OPT_COLORS,
OptionInfo + OPT_NO_COLORS,
OptionInfo + OPT_CT_CODE,
OptionInfo + OPT_LE_CODE,
+ OptionInfo + OPT_LOAD_PREFIX,
OptionInfo + OPT_CHDIR,
OptionInfo + OPT_CONST,
OptionInfo + OPT_BATTLE,
@@ -3809,6 +3876,12 @@ static const InfoOption_t * option_tab_cmd_ARGTEST[] =
0
};
+static const InfoOption_t * option_tab_cmd_EXPAND[] =
+{
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_TEST[] =
{
&option_cmd_TEST_VERBOSE,
@@ -3979,6 +4052,7 @@ static const InfoOption_t * option_tab_cmd_SIZEOF[] =
&option_cmd_SIZEOF_SORT,
&option_cmd_SIZEOF_BRIEF,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
0
};
@@ -4052,6 +4126,7 @@ static const InfoOption_t * option_tab_cmd_LIST[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4115,6 +4190,7 @@ static const InfoOption_t * option_tab_cmd_LIST_L[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4178,6 +4254,7 @@ static const InfoOption_t * option_tab_cmd_LIST_LL[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4241,6 +4318,7 @@ static const InfoOption_t * option_tab_cmd_LIST_LLL[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4304,6 +4382,7 @@ static const InfoOption_t * option_tab_cmd_LIST_A[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4367,6 +4446,7 @@ static const InfoOption_t * option_tab_cmd_LIST_LA[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4437,6 +4517,7 @@ static const InfoOption_t * option_tab_cmd_ILIST[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4497,6 +4578,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_L[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4557,6 +4639,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_LL[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4617,6 +4700,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_A[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4677,6 +4761,7 @@ static const InfoOption_t * option_tab_cmd_ILIST_LA[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4742,6 +4827,7 @@ static const InfoOption_t * option_tab_cmd_MEMORY[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4807,6 +4893,7 @@ static const InfoOption_t * option_tab_cmd_MEMORY_A[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
OptionInfo + OPT_NO_ENCODE,
@@ -4862,6 +4949,7 @@ static const InfoOption_t * option_tab_cmd_DUMP[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
&option_grp_ENCODE_ALL,
@@ -4920,6 +5008,7 @@ static const InfoOption_t * option_tab_cmd_SHA1[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
&option_grp_ENCODE_ALL,
@@ -4982,6 +5071,36 @@ static const InfoOption_t * option_tab_cmd_ANALYZE[] =
0
};
+static const InfoOption_t * option_tab_cmd_SPLIT[] =
+{
+ OptionInfo + OPT_LOAD_PREFIX,
+ OptionInfo + OPT_PLUS,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+
+ OptionInfo + OPT_NONE, // separator
+
+ &option_grp_SCRIPT_SECTIONS,
+ OptionInfo + OPT_SH,
+ OptionInfo + OPT_BASH,
+ OptionInfo + OPT_JSON,
+ OptionInfo + OPT_PHP,
+ OptionInfo + OPT_MAKEDOC,
+ OptionInfo + OPT_VAR,
+ OptionInfo + OPT_ARRAY,
+ OptionInfo + OPT_AVAR,
+ OptionInfo + OPT_CASE,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+
+ 0
+};
+
static const InfoOption_t * option_tab_cmd_IS_TEXTURE[] =
{
OptionInfo + OPT_IGNORE,
@@ -5051,6 +5170,7 @@ static const InfoOption_t * option_tab_cmd_DISTRIBUTION[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
&option_grp_ENCODE_ALL,
@@ -5128,6 +5248,7 @@ static const InfoOption_t * option_tab_cmd_CHECK[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
&option_grp_ENCODE_ALL,
@@ -5231,6 +5352,7 @@ static const InfoOption_t * option_tab_cmd_SLOTS[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
&option_grp_ENCODE_ALL,
@@ -5941,6 +6063,7 @@ static const InfoOption_t * option_tab_cmd_ENCODE[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
&option_grp_ENCODE_ALL,
@@ -6053,6 +6176,7 @@ static const InfoOption_t * option_tab_cmd_CREATE[] =
OptionInfo + OPT_ALIGN_BREFT,
OptionInfo + OPT_ALIGN,
OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_TIMING,
OptionInfo + OPT_ENCODE_ALL,
OptionInfo + OPT_ENCODE_IMG,
&option_grp_ENCODE_ALL,
@@ -6903,7 +7027,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,
- 67,
+ 70,
option_tab_tool,
0
},
@@ -6985,13 +7109,32 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wszst ARGTEST ...",
"This debug command accepts all kinds of parameters and prints one"
- " line for each parameter.",
+ " line for each parameter. All tools know the ARGTEST command.",
0,
0,
option_tab_cmd_ARGTEST,
option_allowed_cmd_ARGTEST
},
+ { CMD_EXPAND,
+ false,
+ false,
+ false,
+ "EXPAND",
+ 0,
+ "wszst EXPAND ...",
+ "This debug command accepts (like ARGTEST) all kinds of parameters and"
+ " prints one line for each parameter. After that, the parameter is"
+ " treated as a filename with wildcards and all matching files are"
+ " searched. The special parameters '+h' and '/h' enable or disable the"
+ " search for hidden directories and files (files beginning with a"
+ " point). All tools know the EXPAND command.",
+ 0,
+ 0,
+ option_tab_cmd_EXPAND,
+ option_allowed_cmd_EXPAND
+ },
+
{ CMD_TEST,
false,
false,
@@ -7031,7 +7174,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"ERR",
"wszst ERROR [error_code]",
"Translate an exit code to a message name. If no exit code is entered,"
- " print a table with all error messages.",
+ " print a table with all error messages. All tools know the ERROR"
+ " command.",
0,
4,
option_tab_cmd_ERROR,
@@ -7046,7 +7190,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"FT",
"wszst FILETYPE file...",
"Scan the header of the entered files and print file type and path for"
- " each file as list.",
+ " each file as list. All tools know the FILETYPE command.",
0,
3,
option_tab_cmd_FILETYPE,
@@ -7063,7 +7207,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a table with attributes for all known file types. If at least"
" one keyword is entered, only matching file types are printed. A"
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
- " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the"
+ " FILEATTRIB command.",
0,
1,
option_tab_cmd_FILEATTRIB,
@@ -7094,7 +7239,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"SYMBOLS",
0,
"wszst SYMBOLS",
- "Print predefined symbols of text parser to standard output.",
+ "Print predefined symbols of text parser to standard output. Many"
+ " tools know the SYMBOLS command.",
0,
1,
option_tab_cmd_SYMBOLS,
@@ -7109,7 +7255,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
0,
"wszst FUNCTIONS [key]...",
"Print a list with all parser functions. If one or more keys entered,"
- " then only functions that match at least one key are printed.",
+ " then only functions that match at least one key are printed. Many"
+ " tools know the FUNCTIONS command.",
0,
3,
option_tab_cmd_FUNCTIONS,
@@ -7123,7 +7270,8 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"CALCULATE",
0,
"wszst CALCULATE expression...",
- "Calculate each expression and print the result to standard output.",
+ "Calculate each expression and print the result to standard output."
+ " Many tools know the CALCULATE command.",
0,
1,
option_tab_cmd_CALCULATE,
@@ -7292,7 +7440,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"This hidden command prints a list with the size of data structures"
" and variables.",
0,
- 3,
+ 4,
option_tab_cmd_SIZEOF,
option_allowed_cmd_SIZEOF
},
@@ -7367,7 +7515,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" archives. If listing a directory, then a virtual SZS file is created"
" (like CREATE does it) and listed.",
0,
- 48,
+ 49,
option_tab_cmd_LIST,
option_allowed_cmd_LIST
},
@@ -7382,7 +7530,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with size. 'LIST-L' and 'LL' are short cuts for"
" 'LIST --long'.",
0,
- 48,
+ 49,
option_tab_cmd_LIST_L,
option_allowed_cmd_LIST_L
},
@@ -7397,7 +7545,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with offset and size. 'LIST-LL' and 'LLL' are"
" short cuts for 'LIST --long --long'.",
0,
- 48,
+ 49,
option_tab_cmd_LIST_LL,
option_allowed_cmd_LIST_LL
},
@@ -7412,7 +7560,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with offset and size in debugging mode. 'LIST-LLL'"
" and 'LLLL' are short cuts for 'LIST --long --long --long'.",
0,
- 48,
+ 49,
option_tab_cmd_LIST_LLL,
option_allowed_cmd_LIST_LLL
},
@@ -7427,7 +7575,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all sub files with size. 'LIST-A' and 'LA' are short"
" cuts for 'LIST --long --all --all'.",
0,
- 48,
+ 49,
option_tab_cmd_LIST_A,
option_allowed_cmd_LIST_A
},
@@ -7442,7 +7590,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all sub files with offset and size. 'LIST-LA' and"
" 'LLA' are short cuts for 'LIST --long --long --all --all'.",
0,
- 48,
+ 49,
option_tab_cmd_LIST_LA,
option_allowed_cmd_LIST_LA
},
@@ -7476,7 +7624,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" listing a directory, then a virtual SZS file is created (like CREATE"
" does it) and listed.",
0,
- 45,
+ 46,
option_tab_cmd_ILIST,
option_allowed_cmd_ILIST
},
@@ -7491,7 +7639,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all image files with geometry data. 'ILIST-L' and 'ILL' are"
" short cuts for 'ILIST --long'.",
0,
- 45,
+ 46,
option_tab_cmd_ILIST_L,
option_allowed_cmd_ILIST_L
},
@@ -7506,7 +7654,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List all sub files with advanced geometry data. 'ILIST-LL' and 'ILLL'"
" are short cuts for 'ILIST --long --long'.",
0,
- 45,
+ 46,
option_tab_cmd_ILIST_LL,
option_allowed_cmd_ILIST_LL
},
@@ -7521,7 +7669,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all image files. 'ILIST-A' and 'ILA' are short cuts"
" for 'ILIST --all'.",
0,
- 45,
+ 46,
option_tab_cmd_ILIST_A,
option_allowed_cmd_ILIST_A
},
@@ -7536,7 +7684,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"List recursive all image files with geometry data. 'ILIST-LA' and"
" 'ILLA' are short cuts for 'ILIST --long --all'.",
0,
- 45,
+ 46,
option_tab_cmd_ILIST_LA,
option_allowed_cmd_ILIST_LA
},
@@ -7551,7 +7699,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Dump a memory map of each source file. Virtual images (extracted"
" directories) are also supported.",
0,
- 47,
+ 48,
option_tab_cmd_MEMORY,
option_allowed_cmd_MEMORY
},
@@ -7566,7 +7714,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Dump recursive a memory map of each source file. 'MEMORY-A' and"
" 'MEMA' are short cuts for 'MEMORY --all --all'.",
0,
- 47,
+ 48,
option_tab_cmd_MEMORY_A,
option_allowed_cmd_MEMORY_A
},
@@ -7583,7 +7731,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" relocation. Virtual images (extracted directories) are also"
" supported.",
0,
- 41,
+ 42,
option_tab_cmd_DUMP,
option_allowed_cmd_DUMP
},
@@ -7598,7 +7746,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
"Print a SHA1 checksum for each source. The checksum is calculated by"
" using the uncompressed data and after patching.",
0,
- 48,
+ 49,
option_tab_cmd_SHA1,
option_allowed_cmd_SHA1
},
@@ -7617,6 +7765,21 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
option_allowed_cmd_ANALYZE
},
+ { CMD_SPLIT,
+ false,
+ false,
+ false,
+ "SPLIT",
+ 0,
+ "wszst SPLIT [source]...",
+ "Analyse (file) names and split them into the different parts. Print"
+ " the results in machine readable format.",
+ 0,
+ 15,
+ option_tab_cmd_SPLIT,
+ option_allowed_cmd_SPLIT
+ },
+
{ CMD_IS_TEXTURE,
false,
false,
@@ -7657,7 +7820,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
false,
false,
"DISTRIBUTION",
- "DIST",
+ "DIS",
"wszst DISTRIBUTION result source...\n"
"wszst DISTRIBUTION directory [source]...",
"Load each SOURCE (SZS, WBZ, U8 or WU8) and calculate a checksum of"
@@ -7670,9 +7833,11 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" directory, it is used as first source too.\n"
" 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.",
+ " scanning of file result, parameters are scanned too.\n"
+ " See »welect DISTRIBUTION« for a new and alternative implementation"
+ " of this.",
0,
- 45,
+ 46,
option_tab_cmd_DISTRIBUTION,
option_allowed_cmd_DISTRIBUTION
},
@@ -7708,7 +7873,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" internal object and file database. The source can be a SZS, U8, WU8"
" or WBZ file, or an U8 like directory.",
0,
- 90,
+ 91,
option_tab_cmd_CHECK,
option_allowed_cmd_CHECK
},
@@ -7726,7 +7891,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" positive or a negative slot list, whatever is shorter. For battle"
" arenas, the keyword ARENA is printed.",
0,
- 86,
+ 87,
option_tab_cmd_SLOTS,
option_allowed_cmd_SLOTS
},
@@ -7910,7 +8075,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" Create and/or encode sub files if necessary. It works like command"
" CREATE, but without creating a new first level archive file.",
0,
- 69,
+ 70,
option_tab_cmd_ENCODE,
option_allowed_cmd_ENCODE
},
@@ -7926,7 +8091,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" not hidden files of the directory structure. Create and/or encode"
" sub files if necessary. The default destination is '%P/%N%T'.",
0,
- 95,
+ 96,
option_tab_cmd_CREATE,
option_allowed_cmd_CREATE
},
diff --git a/project/src/ui/ui-wszst.h b/project/src/ui/ui-wszst.h
index 161aa7e..cdd1c7a 100644
--- a/project/src/ui/ui-wszst.h
+++ b/project/src/ui/ui-wszst.h
@@ -56,6 +56,7 @@ typedef enum enumOptions
//----- command specific options -----
+ OPT_PLUS,
OPT_TOUCH,
OPT_AUTO,
OPT_SET_FLAGS,
@@ -191,7 +192,7 @@ typedef enum enumOptions
OPT_RAW,
OPT_SECTIONS,
- OPT__N_SPECIFIC, // == 135
+ OPT__N_SPECIFIC, // == 136
//----- global options -----
@@ -203,15 +204,18 @@ typedef enum enumOptions
OPT_COMPATIBLE,
OPT_WIDTH,
OPT_MAX_WIDTH,
+ OPT_NO_PAGER,
OPT_QUIET,
OPT_VERBOSE,
OPT_LOGGING,
+ OPT_TIMING,
OPT_WARN,
OPT_DE,
OPT_COLORS,
OPT_NO_COLORS,
OPT_CT_CODE,
OPT_LE_CODE,
+ OPT_LOAD_PREFIX,
OPT_CHDIR,
OPT_CONST,
OPT_BATTLE,
@@ -272,7 +276,7 @@ typedef enum enumOptions
OPT_NEW,
OPT_EXTRACT,
- OPT__N_TOTAL // == 211
+ OPT__N_TOTAL // == 215
} enumOptions;
@@ -287,6 +291,7 @@ typedef enum enumOptions
//{
// //----- command specific options -----
//
+// OB_PLUS = 1llu << OPT_PLUS,
// OB_TOUCH = 1llu << OPT_TOUCH,
// OB_AUTO = 1llu << OPT_AUTO,
// OB_SET_FLAGS = 1llu << OPT_SET_FLAGS,
@@ -573,6 +578,8 @@ typedef enum enumOptions
//
// OB_CMD_ARGTEST = ~(u64)0,
//
+// OB_CMD_EXPAND = ~(u64)0,
+//
// OB_CMD_TEST = ~(u64)0,
//
// OB_CMD_COLORS = OB_LONG
@@ -723,6 +730,12 @@ typedef enum enumOptions
// | OB_DEST
// | OB_DEST2,
//
+// OB_CMD_SPLIT = OB_PLUS
+// | OB_IGNORE
+// | OB_GRP_SCRIPT
+// | OB_DEST
+// | OB_DEST2,
+//
// OB_CMD_IS_TEXTURE = OB_IGNORE
// | OB_REFERENCE
// | OB_LONG,
@@ -949,6 +962,7 @@ typedef enum enumCommands
CMD_CONFIG,
CMD_INSTALL,
CMD_ARGTEST,
+ CMD_EXPAND,
CMD_TEST,
CMD_COLORS,
CMD_ERROR,
@@ -992,6 +1006,7 @@ typedef enum enumCommands
CMD_SHA1,
CMD_ANALYZE,
+ CMD_SPLIT,
CMD_IS_TEXTURE,
CMD_FEATURES,
CMD_DISTRIBUTION,
@@ -1031,7 +1046,7 @@ typedef enum enumCommands
CMD_VEHICLE,
- CMD__N // == 79
+ CMD__N // == 81
} enumCommands;
@@ -1087,11 +1102,15 @@ typedef enum enumGetOpt
GO_COMPATIBLE,
GO_WIDTH,
GO_MAX_WIDTH,
+ GO_NO_PAGER,
+ GO_TIMING,
GO_DE,
GO_COLORS,
GO_NO_COLORS,
GO_CT_CODE,
GO_LE_CODE,
+ GO_LOAD_PREFIX,
+ GO_PLUS,
GO_CHDIR,
GO_TOUCH,
GO_AUTO,
diff --git a/project/src/ui/ui.def b/project/src/ui/ui.def
index 8e47764..ed569a1 100644
--- a/project/src/ui/ui.def
+++ b/project/src/ui/ui.def
@@ -43,7 +43,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wszst ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wszst EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wszst TEST [options]... [ignored]...", \
@@ -59,19 +68,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wszst ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wszst FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wszst FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "BRSUB", "BRSUB", \
"wszst BRSUB [file]...", \
@@ -82,16 +93,19 @@
#:def_cmd( "SYMBOLS", "SYMBOLS", \
"wszst SYMBOLS", \
- "Print predefined symbols of text parser to standard output." )
+ "Print predefined symbols of text parser to standard output. Many" \
+ " tools know the SYMBOLS command." )
#:def_cmd( "FUNCTIONS", "FUNCTIONS", \
"wszst FUNCTIONS [key]...", \
"Print a list with all parser functions. If one or more keys entered," \
- " then only functions that match at least one key are printed." )
+ " then only functions that match at least one key are printed. Many" \
+ " tools know the FUNCTIONS command." )
#:def_cmd( "CALCULATE", "CALCULATE", \
"wszst CALCULATE expression...", \
- "Calculate each expression and print the result to standard output." )
+ "Calculate each expression and print the result to standard output." \
+ " Many tools know the CALCULATE command." )
#:def_cmd( "MATRIX", "MATRIX", \
"wszst MATRIX [patch-option]... [vector]...", \
@@ -252,6 +266,11 @@
"wszst ANALYZE [source]...", \
"Analyse track files and print results in machine readable format." )
+#:def_cmd( "SPLIT", "SPLIT", \
+ "wszst SPLIT [source]...", \
+ "Analyse (file) names and split them into the different parts. Print" \
+ " the results in machine readable format." )
+
#:def_cmd( "IS_TEXTURE", "IS-TEXTURE|ISTEXTURE", \
"wszst IS-TEXTURE --reference reference [source]...", \
"Test each source to see if it's a texture hack versus a reference" \
@@ -262,7 +281,7 @@
" CAME has been intentionally left out. Section ENPT is only checked" \
" if KCL contains a least one face of type force-recalculation." )
-#:def_cmd( "DISTRIBUTION", "DISTRIBUTION|DIST", \
+#:def_cmd( "DISTRIBUTION", "DISTRIBUTION|DIS|DISTRIB", \
"wszst DISTRIBUTION result source...\n" \
"wszst DISTRIBUTION directory [source]...", \
"Load each @SOURCE@ (SZS, WBZ, U8 or WU8) and calculate a checksum of" \
@@ -275,7 +294,9 @@
" directory, it is used as first source too.\n" \
" 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." )
+ " scanning of file @result@, parameters are scanned too.\n" \
+ " See »welect DISTRIBUTION« for a new and alternative implementation" \
+ " of this." )
#:def_cmd( "DIFF", "DIFF|CMP", \
"wszst DIFF source1 source2\n" \
@@ -537,6 +558,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -550,7 +575,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -592,6 +623,25 @@
"Enable LE-CODE and CT-CODE support. The optional parameter is" \
" deprecated and ignored." )
+#:def_opt( "LOAD_PREFIX", "load-prefix|loadprefix", "GP", \
+ "file", \
+ "Read in a PREFIX file and replace the internal prefix database with" \
+ " the content. https://ct.wiimm.de/export/prefix is the authoritative" \
+ " source for this." )
+
+#:def_opt( "PLUS", "plus", "CP", \
+ "chars", \
+ "If a name begins with a plus sign, then all characters up to the" \
+ " first space are recognized as a plus prefix. The first part consists" \
+ " of all the plus signs followed by any other characters. The first" \
+ " character of the second part is used to determine the sort value. If" \
+ " the second part is empty, then the last plus sign is used instead.\n" \
+ " The higher sorting value is now calculated from the number of plus" \
+ " signs in the first part, the more plus signs, the smaller the value." \
+ " The first character from the second part determines the lower value." \
+ " If it is in parameter CHARS then the position determines the value," \
+ " otherwise the ASCII value to which 500 is added." )
+
#:def_opt( "CHDIR", "chdir", "GMP", \
"dir", \
"Set a new working directory for all following options, for all" \
@@ -1224,7 +1274,7 @@
"", \
"Print an ID with 8 characters instead of a SHA-1 sum with 40" \
" characters. The SHA-1 sum is used to calculate the ID. The ID" \
- " consists of '0'-'9' and 'a'-'w' (32 characters)." )
+ " consists of '0'-'9' and 'a'-'v' (32 different characters)." )
#:def_opt( "BASE64", "base64", "CO", \
"[=mode]", \
@@ -2264,6 +2314,10 @@
"", \
"" )
+#:def_cmd_opt( "SIZEOF", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SUBFILE", "DEST", \
"", \
"" )
@@ -2413,6 +2467,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST", "ENCODE_ALL", \
"", \
"" )
@@ -2606,6 +2664,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_L", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_L", "ENCODE_ALL", \
"", \
"" )
@@ -2799,6 +2861,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LL", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LL", "ENCODE_ALL", \
"", \
"" )
@@ -2992,6 +3058,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LLL", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LLL", "ENCODE_ALL", \
"", \
"" )
@@ -3185,6 +3255,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_A", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_A", "ENCODE_ALL", \
"", \
"" )
@@ -3378,6 +3452,10 @@
"", \
"" )
+#:def_cmd_opt( "LIST_LA", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LIST_LA", "ENCODE_ALL", \
"", \
"" )
@@ -3582,6 +3660,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST", "ENCODE_ALL", \
"", \
"" )
@@ -3763,6 +3845,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_L", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_L", "ENCODE_ALL", \
"", \
"" )
@@ -3944,6 +4030,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LL", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LL", "ENCODE_ALL", \
"", \
"" )
@@ -4125,6 +4215,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_A", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_A", "ENCODE_ALL", \
"", \
"" )
@@ -4306,6 +4400,10 @@
"", \
"" )
+#:def_cmd_opt( "ILIST_LA", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ILIST_LA", "ENCODE_ALL", \
"", \
"" )
@@ -4495,6 +4593,10 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY", "ENCODE_ALL", \
"", \
"" )
@@ -4684,6 +4786,10 @@
"", \
"" )
+#:def_cmd_opt( "MEMORY_A", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "MEMORY_A", "ENCODE_ALL", \
"", \
"" )
@@ -4844,6 +4950,10 @@
"", \
"" )
+#:def_cmd_opt( "DUMP", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DUMP", "ENCODE_ALL", \
"", \
"" )
@@ -5017,6 +5127,10 @@
"", \
"" )
+#:def_cmd_opt( "SHA1", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SHA1", "ENCODE_ALL", \
"", \
"" )
@@ -5185,6 +5299,67 @@
"", \
"" )
+#:def_cmd_opt( "SPLIT", "LOAD_PREFIX", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "PLUS", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "IGNORE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "SECTIONS", \
+ "", \
+ "Dump info using configuration or section syntax. Use {--var name} as" \
+ " prefix." )
+
+#:def_cmd_opt( "SPLIT", "SH", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "BASH", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "JSON", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "PHP", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "MAKEDOC", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "VAR", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "ARRAY", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "AVAR", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "CASE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "DEST", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "SPLIT", "DEST2", \
+ "", \
+ "" )
+
#:def_cmd_opt( "IS_TEXTURE", "IGNORE", \
"", \
"" )
@@ -5371,6 +5546,10 @@
"", \
"" )
+#:def_cmd_opt( "DISTRIBUTION", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DISTRIBUTION", "ENCODE_ALL", \
"", \
"" )
@@ -5603,6 +5782,10 @@
"", \
"" )
+#:def_cmd_opt( "CHECK", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CHECK", "ENCODE_ALL", \
"", \
"" )
@@ -5944,6 +6127,10 @@
"", \
"" )
+#:def_cmd_opt( "SLOTS", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "SLOTS", "ENCODE_ALL", \
"", \
"" )
@@ -8225,6 +8412,10 @@
"", \
"" )
+#:def_cmd_opt( "ENCODE", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "ENCODE", "ENCODE_ALL", \
"", \
"" )
@@ -8590,6 +8781,10 @@
"", \
"" )
+#:def_cmd_opt( "CREATE", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CREATE", "ENCODE_ALL", \
"", \
"" )
@@ -11245,7 +11440,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wbmgt ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wbmgt EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wbmgt TEST [options]... [ignored]...", \
@@ -11261,19 +11465,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wbmgt ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wbmgt FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wbmgt FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "POINTS", "POINTS|PTS", \
"wbmgt POINTS [--points=list]", \
@@ -11407,6 +11613,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -11420,7 +11630,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -12516,7 +12732,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wctct ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wctct EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wctct TEST [options]... [ignored]...", \
@@ -12532,19 +12757,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wctct ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wctct FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wctct FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "SYMBOLS", "SYMBOLS", \
"wctct SYMBOLS", \
@@ -12559,7 +12786,8 @@
#:def_cmd( "CALCULATE", "CALCULATE", \
"wctct CALCULATE expression...", \
- "Calculate each expression and print the result to standard output." )
+ "Calculate each expression and print the result to standard output." \
+ " Many tools know the CALCULATE command." )
#:def_cmd( "FLOAT", "FLOAT", \
"wctct FLOAT number...", \
@@ -12668,6 +12896,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -12681,7 +12913,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -12900,6 +13138,11 @@
" give filename scanning the highest priority.\n" \
">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<" )
+#:def_opt( "CREATE_DISTRIB", "create-distrib|createdistrib", "GP", \
+ "file", \
+ "Create a LE-CODE distribution dump with a track list and more info" \
+ " about the current distribution. Store the dump info a file." )
+
#:def_opt( "LIST", "list", "C", \
"", \
"Cancel all previous {--rel} and {--full} and enter LIST mode" \
@@ -13909,7 +14152,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wimgt ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wimgt EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wimgt TEST [options]... [ignored]...", \
@@ -13925,19 +14177,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wimgt ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wimgt FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wimgt FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "LIST", "LIST|LS", \
"wimgt LIST [source]...", \
@@ -14030,6 +14284,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -14043,7 +14301,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -14810,7 +15074,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wkclt ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wkclt EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wkclt TEST [options]... [ignored]...", \
@@ -14826,19 +15099,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wkclt ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wkclt FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wkclt FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "SYMBOLS", "SYMBOLS", \
"wkclt SYMBOLS", \
@@ -14853,7 +15128,8 @@
#:def_cmd( "CALCULATE", "CALCULATE", \
"wkclt CALCULATE expression...", \
- "Calculate each expression and print the result to standard output." )
+ "Calculate each expression and print the result to standard output." \
+ " Many tools know the CALCULATE command." )
#:def_cmd( "MATRIX", "MATRIX", \
"wkclt MATRIX [patch-option]... [vector]...", \
@@ -15035,6 +15311,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -15048,7 +15328,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -15337,7 +15623,7 @@
"", \
"Print an ID with 8 characters instead of a SHA-1 sum with 40" \
" characters. The SHA-1 sum is used to calculate the ID. The ID" \
- " consists of '0'-'9' and 'a'-'w' (32 characters)." )
+ " consists of '0'-'9' and 'a'-'v' (32 different characters)." )
#:def_opt( "BASE64", "base64", "CO", \
"[=mode]", \
@@ -17322,7 +17608,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wkmpt ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wkmpt EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wkmpt TEST [options]... [ignored]...", \
@@ -17338,19 +17633,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wkmpt ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wkmpt FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wkmpt FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "SYMBOLS", "SYMBOLS", \
"wkmpt SYMBOLS", \
@@ -17365,7 +17662,8 @@
#:def_cmd( "CALCULATE", "CALCULATE", \
"wkmpt CALCULATE expression...", \
- "Calculate each expression and print the result to standard output." )
+ "Calculate each expression and print the result to standard output." \
+ " Many tools know the CALCULATE command." )
#:def_cmd( "MATRIX", "MATRIX", \
"wkmpt MATRIX [patch-option]... [vector]...", \
@@ -17542,6 +17840,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -17555,7 +17857,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -19442,7 +19750,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wlect ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wlect EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wlect TEST [options]... [ignored]...", \
@@ -19458,19 +19775,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wlect ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wlect FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wlect FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "SYMBOLS", "SYMBOLS", \
"wlect SYMBOLS", \
@@ -19485,7 +19804,8 @@
#:def_cmd( "CALCULATE", "CALCULATE", \
"wlect CALCULATE expression...", \
- "Calculate each expression and print the result to standard output." )
+ "Calculate each expression and print the result to standard output." \
+ " Many tools know the CALCULATE command." )
#:def_cmd( "FLOAT", "FLOAT", \
"wlect FLOAT number...", \
@@ -19536,15 +19856,21 @@
" standard output if no other destination is defined." )
#:def_cmd( "CREATE", "CREATE|CR", \
- "wlect CREATE [keyword]", \
- "Create a file and print it to standard output. The kind of file is" \
- " defined by KEYWORD. Use command without keywords to get a list of" \
- " possible keywords.\n" \
- " The following keywords are possible: @LEX@ for a LEX text file with" \
- " all known sections except @TEST@. @LEX+@ for a LEX text file with" \
- " all known sections including @TEST@. @SET1, CANN, HIPT@ and @TEST@" \
- " (section names) for a LEX text file with 1 section only. @LPAR@ for" \
- " an example LE-CODE parameter file." )
+ "wlect CREATE [keyword] ...", \
+ "Create a file and print it to standard output. Options {--dest} and" \
+ " {--DEST} can forc another destination. The kind of file is defined" \
+ " by KEYWORD. The command can create LEX files, a LPAR file or a track" \
+ " listing.\n" \
+ " Use the command without keyword to get an extended description." )
+
+#:def_cmd( "DISTRIBUTION", "DISTRIBUTION|DIS|DISTRIB", \
+ "wlect DISTRIBUTION [argument]...", \
+ "This command manages data for LE-CODE track distributions. It reads" \
+ " any number of source files with different file types, collects the" \
+ " data and creates any number of files with different file types.\n" \
+ " Use the command without keyword to get an extended description.\n" \
+ " This command is still under development. Its use is therefore" \
+ " EXPERIMENTAL!" )
#:def_cmd( "CAT", "CAT", \
"wlect CAT [source]...", \
@@ -19611,6 +19937,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -19624,7 +19954,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -19666,6 +20002,25 @@
"This option is completely ignored by wlect. It only exists due to" \
" compatibility with the other tools." )
+#:def_opt( "LOAD_PREFIX", "load-prefix|loadprefix", "GP", \
+ "file", \
+ "Read in a PREFIX file and replace the internal prefix database with" \
+ " the content. https://ct.wiimm.de/export/prefix is the authoritative" \
+ " source for this." )
+
+#:def_opt( "PLUS", "plus", "CP", \
+ "chars", \
+ "If a name begins with a plus sign, then all characters up to the" \
+ " first space are recognized as a plus prefix. The first part consists" \
+ " of all the plus signs followed by any other characters. The first" \
+ " character of the second part is used to determine the sort value. If" \
+ " the second part is empty, then the last plus sign is used instead.\n" \
+ " The higher sorting value is now calculated from the number of plus" \
+ " signs in the first part, the more plus signs, the smaller the value." \
+ " The first character from the second part determines the lower value." \
+ " If it is in parameter CHARS then the position determines the value," \
+ " otherwise the ASCII value to which 500 is added." )
+
#:def_opt( "CHDIR", "chdir", "GMP", \
"dir", \
"Set a new working directory for all following options, for all" \
@@ -19792,6 +20147,11 @@
" give filename scanning the highest priority.\n" \
">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<" )
+#:def_opt( "CREATE_DISTRIB", "create-distrib|createdistrib", "CP", \
+ "file", \
+ "Create a LE-CODE distribution dump with a track list and more info" \
+ " about the current distribution. Store the dump info a file." )
+
#:def_opt( "LE_DEFINE", "le-define|ledefine", "CP", \
"file", \
"Use this file as definition file to patch LE-CODE. The file format" \
@@ -19892,6 +20252,15 @@
" this directory are linked to the directory specified by option" \
" {--track-dir}. If linking fails, the file is copied." )
+#:def_opt( "SZS_MODE", "szs-mode|szsmode", "CP", \
+ "mode", \
+ "If a track is inserted via the SZS file, then the associated" \
+ " directory is automatically included in the list of search" \
+ " directories for option {--track-dir}. This option now sets the" \
+ " transfer mode. @OFF@ turns this feature off. The values @COPY@," \
+ " @MOVE@, @MOVE1@ and @LINK@ define one of the 4 modes. Default mode" \
+ " is @LINK@." )
+
#:def_opt( "COMPLETE", "C|complete", "C", \
"", \
" Append missing sections to the LEX file." )
@@ -20162,6 +20531,10 @@
"", \
"For LE-CODE binaries: If set, print a track slot usage table." )
+#:def_cmd_opt( "DUMP", "CREATE_DISTRIB", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DL", "LE_DEFINE", \
"", \
"" )
@@ -20215,6 +20588,10 @@
"", \
"For LE-CODE binaries: If set, print a track slot usage table." )
+#:def_cmd_opt( "DL", "CREATE_DISTRIB", \
+ "", \
+ "" )
+
#:def_cmd_opt( "DLL", "LE_DEFINE", \
"", \
"" )
@@ -20268,6 +20645,10 @@
"", \
"For LE-CODE binaries: If set, print a track slot usage table." )
+#:def_cmd_opt( "DLL", "CREATE_DISTRIB", \
+ "", \
+ "" )
+
#:def_cmd_opt( "BIN_DIFF", "QUIET", \
"", \
"Suppress all messages and tell result as exit status only." )
@@ -20372,6 +20753,10 @@
"", \
"" )
+#:def_cmd_opt( "PATCH", "CREATE_DISTRIB", \
+ "", \
+ "" )
+
#:def_cmd_opt( "LPAR", "LE_DEFINE", \
"", \
"" )
@@ -20548,6 +20933,14 @@
"", \
"" )
+#:def_cmd_opt( "CREATE", "LE_DEFINE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "CREATE", "LOAD_BMG", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CREATE", "ENGINE", \
"", \
"" )
@@ -20576,6 +20969,86 @@
"", \
"" )
+#:def_cmd_opt( "DISTRIBUTION", "LOAD_PREFIX", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "PLUS", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "TRACK_DIR", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "COPY_TRACKS", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "MOVE_TRACKS", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "MOVE1_TRACKS", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "LINK_TRACKS", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "SZS_MODE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "IGNORE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "NO_HEADER", \
+ "", \
+ "Suppress the syntax information section in LE text files." )
+
+#:def_cmd_opt( "DISTRIBUTION", "BRIEF", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "EXPORT", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "DEST", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "DEST2", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "ESC", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "OVERWRITE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "NUMBER", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "REMOVE_DEST", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "UPDATE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "DISTRIBUTION", "PRESERVE", \
+ "", \
+ "" )
+
#:def_cmd_opt( "CAT", "COMPLETE", \
"", \
"" )
@@ -20737,7 +21210,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wmdlt ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wmdlt EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wmdlt TEST [options]... [ignored]...", \
@@ -20753,19 +21235,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wmdlt ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wmdlt FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wmdlt FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "SYMBOLS", "SYMBOLS", \
"wmdlt SYMBOLS", \
@@ -20780,7 +21264,8 @@
#:def_cmd( "CALCULATE", "CALCULATE", \
"wmdlt CALCULATE expression...", \
- "Calculate each expression and print the result to standard output." )
+ "Calculate each expression and print the result to standard output." \
+ " Many tools know the CALCULATE command." )
#:def_cmd( "MATRIX", "MATRIX", \
"wmdlt MATRIX [patch-option]... [vector]...", \
@@ -20882,6 +21367,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -20895,7 +21384,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -22025,7 +22520,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wpatt ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wpatt EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wpatt TEST [options]... [ignored]...", \
@@ -22041,19 +22545,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wpatt ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wpatt FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wpatt FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "SYMBOLS", "SYMBOLS", \
"wpatt SYMBOLS", \
@@ -22068,7 +22574,8 @@
#:def_cmd( "CALCULATE", "CALCULATE", \
"wpatt CALCULATE expression...", \
- "Calculate each expression and print the result to standard output." )
+ "Calculate each expression and print the result to standard output." \
+ " Many tools know the CALCULATE command." )
#:def_cmd( "FLOAT", "FLOAT", \
"wpatt FLOAT number...", \
@@ -22147,6 +22654,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -22160,7 +22671,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -22616,7 +23133,16 @@
#:def_cmd( "ARGTEST", "ARGTEST", \
"wstrt ARGTEST ...", \
"This debug command accepts all kinds of parameters and prints one" \
- " line for each parameter." )
+ " line for each parameter. All tools know the ARGTEST command." )
+
+#:def_cmd( "EXPAND", "EXPAND", \
+ "wstrt EXPAND ...", \
+ "This debug command accepts (like ARGTEST) all kinds of parameters and" \
+ " prints one line for each parameter. After that, the parameter is" \
+ " treated as a filename with wildcards and all matching files are" \
+ " searched. The special parameters '+h' and '/h' enable or disable the" \
+ " search for hidden directories and files (files beginning with a" \
+ " point). All tools know the EXPAND command." )
#:def_cmd( "TEST", "TEST", \
"wstrt TEST [options]... [ignored]...", \
@@ -22632,19 +23158,21 @@
#:def_cmd( "ERROR", "ERROR|ERR", \
"wstrt ERROR [error_code]", \
"Translate an exit code to a message name. If no exit code is entered," \
- " print a table with all error messages." )
+ " print a table with all error messages. All tools know the ERROR" \
+ " command." )
#:def_cmd( "FILETYPE", "FILETYPE|FT", \
"wstrt FILETYPE file...", \
"Scan the header of the entered files and print file type and path for" \
- " each file as list." )
+ " each file as list. All tools know the FILETYPE command." )
#:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \
"wstrt FILEATTRIB [keyword]...", \
"Print a table with attributes for all known file types. If at least" \
" one keyword is entered, only matching file types are printed. A" \
" keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \
- " printed keywords (like 'ARCHIVE' or 'EXTRACT')." )
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT'). All tools know the" \
+ " FILEATTRIB command." )
#:def_cmd( "DUMP", "DUMP", \
"wstrt DUMP file...", \
@@ -22772,6 +23300,10 @@
" some other messages. The default is 120. This option is ignored if" \
" --width is set." )
+#:def_opt( "NO_PAGER", "no-pager|nopager", "G", \
+ "", \
+ "Forbid the internal usage of a pager." )
+
#:def_opt( "QUIET", "q|quiet", "GM", \
"", \
"Be quiet and print only error messages. Multiple usage is possible." \
@@ -22785,7 +23317,13 @@
#:def_opt( "LOGGING", "L|logging", "GM", \
"", \
- "This debug option enables the logging of internal lists and maps." )
+ "This debug option enables the logging of internal lists and maps. Set" \
+ " it up to three times to be more verbose.\n" )
+
+#:def_opt( "TIMING", "timing", "GM", \
+ "", \
+ "Activate the timing of some operations. Logging level 3 activates" \
+ " them too.\n" )
#:def_opt( "WARN", "W|warn", "GP", \
"list", \
@@ -23414,6 +23952,10 @@
"", \
"" )
+#:def_cmd_opt( "HEXDUMP", "TIMING", \
+ "", \
+ "" )
+
#:def_cmd_opt( "HEXDUMP", "INT1", \
"", \
"" )
diff --git a/project/src/wbmgt.c b/project/src/wbmgt.c
index 58ca368..530c28f 100644
--- a/project/src/wbmgt.c
+++ b/project/src/wbmgt.c
@@ -771,13 +771,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -893,6 +895,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wbmgt); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -936,6 +939,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wbmgt";
print_title_func = print_title;
SetupLib(argc,argv,WBMGT_SHORT,VERSION,TITLE);
@@ -961,6 +973,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wctct.c b/project/src/wctct.c
index 82bd675..73652d9 100644
--- a/project/src/wctct.c
+++ b/project/src/wctct.c
@@ -36,6 +36,7 @@
***************************************************************************/
#include "lib-ctcode.h"
+#include "lib-ledis.h"
#include "lib-szs.h"
#include "lib-xbmg.h"
#include "lib-bzip2.h"
@@ -363,7 +364,7 @@ static enumError cmd_decode()
char dest[PATH_MAX];
SubstDest(dest,sizeof(dest),param->arg,opt_dest,def_path,
- GetExtFF(FF_CT_TEXT,0),false);
+ GetExtFF(FF_CTDEF,0),false);
if ( verbose >= 0 || testmode )
{
@@ -371,7 +372,7 @@ static enumError cmd_decode()
verbose > 0 ? "\n" : "",
testmode ? "WOULD " : "",
GetNameFF(raw.fform,0), raw.fname,
- GetNameFF(FF_CT_TEXT,0), dest );
+ GetNameFF(FF_CTDEF,0), dest );
fflush(stdlog);
}
@@ -586,7 +587,7 @@ static enumError cmd_create()
case CTS_LIST:
case CTS_REF:
case CTS_FULL:
- dest_ff2 = FF_CT_TEXT;
+ dest_ff2 = FF_CTDEF;
def_path = "\1P/\1F\1?T";
break;
}
@@ -602,7 +603,7 @@ static enumError cmd_create()
for ( ; param; param = param->next )
{
NORMALIZE_FILENAME_PARAM(param);
- enumError err = LoadRawData(&raw,false,param->arg,0,opt_ignore>0,FF_CT_TEXT);
+ enumError err = LoadRawData(&raw,false,param->arg,0,opt_ignore>0,FF_CTDEF);
if ( err == ERR_NOT_EXISTS || err > ERR_WARNING && opt_ignore )
continue;
if ( err > ERR_WARNING )
@@ -748,16 +749,18 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_OLD_SPINY: old_spiny = true; break;
case GO_CRS1: err += ScanOptCRS1(optarg); break;
@@ -770,6 +773,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_TEST: testmode++; break;
case GO_FORCE: force_count++; break;
case GO_REPAIR_MAGICS: err += ScanOptRepairMagic(optarg); break;
+ case GO_CREATE_DISTRIB: EnableLDUMP(optarg); break;
#if OPT_OLD_NEW
case GO_OLD: opt_new = opt_new>0 ? -1 : opt_new-1; break;
@@ -898,6 +902,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wctct); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -942,6 +947,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wctct";
print_title_func = print_title;
SetupLib(argc,argv,WCTCT_SHORT,VERSION,TITLE);
ctcode_enabled = true;
@@ -968,6 +982,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wimgt.c b/project/src/wimgt.c
index 835e34e..ce84ef3 100644
--- a/project/src/wimgt.c
+++ b/project/src/wimgt.c
@@ -584,13 +584,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -698,6 +700,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wimgt); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -735,6 +738,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wimgt";
print_title_func = print_title;
SetupLib(argc,argv,WIMGT_SHORT,VERSION,TITLE);
@@ -760,6 +772,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wkclt.c b/project/src/wkclt.c
index 5538ecd..0592df1 100644
--- a/project/src/wkclt.c
+++ b/project/src/wkclt.c
@@ -1282,13 +1282,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -1418,6 +1420,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wkclt); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -1471,6 +1474,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wkclt";
print_title_func = print_title;
SetupLib(argc,argv,WKCLT_SHORT,VERSION,TITLE);
@@ -1496,6 +1508,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wkmpt.c b/project/src/wkmpt.c
index 9c5b341..11eb940 100644
--- a/project/src/wkmpt.c
+++ b/project/src/wkmpt.c
@@ -1580,13 +1580,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -1734,6 +1736,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wkmpt); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -1785,6 +1788,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wkmpt";
print_title_func = print_title;
SetupLib(argc,argv,WKMPT_SHORT,VERSION,TITLE);
@@ -1810,6 +1822,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wlect.c b/project/src/wlect.c
index 3ea7ea5..cf0a9f0 100644
--- a/project/src/wlect.c
+++ b/project/src/wlect.c
@@ -35,7 +35,7 @@
* *
***************************************************************************/
-#include "lib-lecode.h"
+#include "lib-ledis.h"
#include "lib-szs.h"
#include "lib-xbmg.h"
//#include "lib-bzip2.h"
@@ -219,8 +219,7 @@ static enumError cmd_test()
#elif 0
- ParamList_t *param;
- for ( param = first_param; param; param = param->next )
+ for ( ParamList_t *param = first_param; param; param = param->next )
{
//NORMALIZE_FILENAME_PARAM(param);
}
@@ -311,6 +310,8 @@ static enumError cmd_dpad()
static enumError cmd_dump ( int long_level )
{
+ SetupPager();
+
if ( long_level > 0 )
{
RegisterOptionByIndex(&InfoUI_wlect,OPT_LONG,long_level,false);
@@ -366,6 +367,7 @@ static enumError cmd_dump ( int long_level )
ResetCTCODE(&ctcode);
}
fflush(stdout);
+ CloseLDUMP();
}
ResetRawData(&raw);
@@ -751,7 +753,9 @@ static enumError cmd_patch()
PatchLECODE(&ana);
err = SaveFILE( dest, 0, dest_is_source||opt_overwrite,
raw.data, raw.data_size, 0 );
+ ImportAnaLDUMP(&ana);
ResetLEAnalyse(&ana);
+ CloseLDUMP();
}
ResetRawData(&raw);
@@ -763,48 +767,148 @@ static enumError cmd_patch()
/////////////// command create ///////////////
///////////////////////////////////////////////////////////////////////////////
-static enumError cmd_create()
+static void help_create ( enumError exit_code )
{
- stdlog = stderr;
+ //SetupTermWidth();
+ if ( logging >= 3 )
+ printf("# colors: %d %d %d\n",colout->col_mode,colout->colorize,colout->n_colors);
- if ( n_param != 1 )
- {
- fputs("\n"
- "Use command CREATE without exact one keyword.\n"
- "\n"
- "Possible keywords:\n"
- " LEX : Create a with all sections except »TEST«.\n"
- " LEX+ : Create a complete LEX text file.\n"
- " SET1 : Create a LEX text file with section »SET1« only.\n"
- " CANNON : Create a LEX text file with section »CANN« only.\n"
- " TEST : Create a LEX text file with section »TEST« only.\n"
- " LPAR : Create a LPAR text file as template.\n"
- #if HAVE_WIIMM_EXT
- "\n"
- "Hidden keyword:\n"
- " FEATURES : Create a LEX text file with section »FEA0« only.\n"
- " DEVELOP : Like LEX+, but include all devoloper sections.\n"
+ static const char text[] =
+ "\n"
+ "{heading|Command »%s CREATE«}\n"
+ "\n"
+ " |This command creates text files."
+ " The optional argument defines the type of output. The general syntax is:\n"
+ "|[4,25]\n"
+ "\t|{cmd|%s CREATE}\n"
+ "\t|{cmd|%s CREATE SUB_COMMAND} {opt|option}...\n"
+ "\n"
+ " |This help is printed if no {cmd|SUB_COMMAND} is used or if it is »{name|HELP}«."
+ " The sub-commands are case sensitive, unique abbreviations are allowed."
+ " The sub-commands are logically divided into several groups:\n"
+ "\n"
+ "\tCreate a LEX file:\t|{name|LEX}, {name|LEX+}, {name|SET1}, {name|CANNONS}, {name|HIPT}, {name|TEST}.\n"
+ "\tCreate another file:\t|{name|LPAR}, {name|LE-DEF}, {name|PREFIX}.\n"
+ "\tPrint an information:\t|{name|LE-INFO}.\n"
+ #if HAVE_WIIMM_EXTxx
+ "\tHidden sub-commands:\t|{name|DEVELOP}, {name|FEATURES}.\n"
#endif
- "\n",stderr);
+ "\n"
+ " |This help and the generated text files are output via the standard output (stdout)"
+ " by an internal pager."
+ " Options {opt|--dest}, {opt|--DEST} and {opt|--overwrite} can change this default.\n"
+ "\n"
- hint_exit(ERR_SYNTAX);
- }
+ //---------------------------------------------------------------------
+
+ "\n"
+ "{caption|Create a LEX file:}\n"
+ #if HAVE_WIIMM_EXTxx
+ "\n|[4,14]"
+ #else
+ "\n|[4,13]"
+ #endif
+ " |The following sub-commands create a LEX file with one or all sections:\n"
+ "\n"
+ "\t{name|LEX}:\t|"
+ "Create a LEX file with all known sections except section »TEST«.\n"
+ "\t{name|LEX+}:\t|"
+ "Create a complete LEX text file including section »TEST«.\n"
+ #if HAVE_WIIMM_EXTxx
+ "\t{info|DEVELOP}:\t|"
+ "This {warn|hidden sub-command} acts like LEX+,"
+ " but includes all devoloper sections.\n"
+ #endif
+ "\n"
+ #if HAVE_WIIMM_EXTxx
+ "\t{info|FEATURES}:\t|"
+ "This {warn|hidden sub-command} create a LEX text file with section »FEA0« only."
+ " {warn|This section is under development.}\n"
+ #endif
+ "\t{name|SET1}:\t|"
+ "Create a LEX text file with section »SET1« only.\n"
+ "\t{name|CANNONS}:\t|"
+ "Create a LEX text file with section »CANN« only.\n"
+ "\t{name|HIPT}:\t|"
+ "Create a LEX text file with section »HIPT« only.\n"
+ "\t{name|TEST}:\t|"
+ "Create a LEX text file with section »TEST« only.\n"
+ "\n"
+
+ //---------------------------------------------------------------------
+
+ "\n"
+ "{caption|Create other files:}\n"
+ "\n"
+ "\t{name|LPAR}:\t|"
+ "Create a LPAR text file (LE-CODE parameters) as template."
+ " Option {opt|--lpar} is recognized to change defaults.\n"
+ "\t{name|LE-DEF}:\t|"
+ "Create a LE-CODE distribution definition file of type LE-DEF as template.\n"
+ "\t{name|PREFIX}:\t|"
+ "Create a machine readable prefix list."
+ " {file|https://ct.wiimm.de/export/prefix} is the authoritative source for this.\n"
+ "\n"
+
+ //---------------------------------------------------------------------
+
+ "\n"
+ "{caption|Print an information:}\n"
+ "\n"
+ "\t{name|LE-INFO}:\t|"
+ "Print information about built-in LE-CODE binaries.\n"
+ "\n"
+
+ ;
+
+ int good_width = GetGoodTermWidth(0,false);
+ PrintColoredLines(stdout,colout,0,good_width-1,0,0,text,
+ ProgInfo.progname,
+ ProgInfo.progname,
+ ProgInfo.progname );
+ ClosePager();
+ exit(exit_code);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError cmd_create()
+{
+ CheckOptDest("-",false);
+ if (!strcmp(opt_dest,"-"))
+ SetupPager();
+
+ if ( n_param != 1 )
+ help_create(ERR_OK);
//--- data
- enum { C_LEX, C_FEATURES, C_SET1, C_CANNON, C_HIDE_PT, C_TEST, C_LPAR };
+ enum { C_HELP,
+ C_LEX, C_FEATURES, C_SET1, C_CANNON, C_HIDE_PT, C_TEST,
+ C_LPAR, C_LEDEF, C_PREFIX,
+ C_LEINFO,
+ };
+
static const KeywordTab_t tab[] =
{
+ { C_HELP, "HELP", "H", 0 },
+
{ C_LEX, "LEX", 0, 0 },
- { C_LEX, "LEX+", 0, 1 },
- { C_LEX, "DEVELOP", 0, 2 },
+ { C_LEX, "LEX+", 0, 1 },
+ { C_LEX, "DEVELOP", 0, 2 },
{ C_FEATURES, "FEATURES", 0, 0 },
{ C_SET1, "SET1", 0, 0 },
- { C_CANNON, "CANNON", 0, 0 },
+ { C_CANNON, "CANNONS", 0, 0 },
{ C_HIDE_PT, "HIPT", 0, 0 },
{ C_TEST, "TEST", 0, 0 },
+
{ C_LPAR, "LPAR", 0, 0 },
+ { C_LEDEF, "LE-DEF", "LEDEF", 0 },
+ { C_PREFIX, "PREFIX", 0, 0 },
+
+ { C_LEINFO, "LE-INFO", "LEINFO", 0 },
+
{ 0,0,0,0 }
};
@@ -825,54 +929,39 @@ static enumError cmd_create()
enumError err = ERR_OK;
switch (cmd->id)
{
+ case C_HELP:
+ help_create(ERR_OK);
+ break;
+
+ //-------------------------
+
case C_LEX:
{
lex_t lex;
InitializeLEX(&lex);
lex.develop = cmd->opt > 1;
- UpdateLEX(&lex,true,cmd->opt>0);
+ UpdateLEX( &lex, true, cmd->opt > 0 );
PatchLEX(&lex,0);
- err = SaveTextLEX(&lex,"-",false);
+ err = SaveTextLEX(&lex,opt_dest,false);
ResetLEX(&lex);
}
break;
case C_FEATURES:
- {
- lex_t lex;
- InitializeLEX(&lex);
- AppendFea0LEX(&lex,false,0);
- err = SaveTextLEX(&lex,"-",false);
- ResetLEX(&lex);
- }
- break;
-
case C_SET1:
- {
- lex_t lex;
- InitializeLEX(&lex);
- AppendSet1LEX(&lex,false);
- err = SaveTextLEX(&lex,"-",false);
- ResetLEX(&lex);
- }
- break;
-
case C_CANNON:
- {
- lex_t lex;
- InitializeLEX(&lex);
- AppendCannLEX(&lex,false);
- err = SaveTextLEX(&lex,"-",false);
- ResetLEX(&lex);
- }
- break;
-
case C_HIDE_PT:
{
lex_t lex;
InitializeLEX(&lex);
- AppendHiptLEX(&lex,false);
- err = SaveTextLEX(&lex,"-",false);
+ switch (cmd->id)
+ {
+ case C_FEATURES: AppendFea0LEX(&lex,false,0); break;
+ case C_SET1: AppendSet1LEX(&lex,false); break;
+ case C_CANNON: AppendCannLEX(&lex,false); break;
+ case C_HIDE_PT: AppendHiptLEX(&lex,false); break;
+ }
+ err = SaveTextLEX(&lex,opt_dest,false);
ResetLEX(&lex);
}
break;
@@ -883,26 +972,1028 @@ static enumError cmd_create()
InitializeLEX(&lex);
lex_item_t * li = AppendTestLEX(&lex,false);
PatchTestLEX((lex_test_t*)li->elem.data,0);
- err = SaveTextLEX(&lex,"-",false);
+ err = SaveTextLEX(&lex,opt_dest,false);
ResetLEX(&lex);
}
break;
+ //-------------------------
+
case C_LPAR:
{
le_lpar_t lpar;
InitializeLPAR(&lpar,true);
PatchLPAR(&lpar);
lpar.limit_mode = LPM_FORCE_AUTOMATIC;
- err = SaveTextLPAR(&lpar,"-",false);
+ err = SaveTextLPAR(&lpar,opt_dest,false);
+ }
+ break;
+
+ case C_LEDEF:
+ {
+ File_t F;
+ enumError err = CreateFileOpt(&F,true,opt_dest,false,0);
+ if (!err)
+ {
+ le_distrib_t ld;
+ InitializeLD(&ld);
+ AutoSetupLD(&ld,LAS_DEFAULT|LAS_TEMPLATE);
+ err = CreateLeDefLD(F.f,&ld);
+ ResetLD(&ld);
+ }
+ CloseFile(&F,0);
}
break;
+
+ case C_PREFIX:
+ SavePrefixTableFN(opt_dest,0);
+ break;
+
+ //-------------------------
+
+ case C_LEINFO:
+ {
+ File_t F;
+ enumError err = CreateFileOpt(&F,true,opt_dest,false,0);
+ if (!err)
+ {
+ fprintf(F.f,
+ "\n"
+ "Built-in LE-CODE binaries:\n"
+ "\n"
+ " %s\n"
+ " %s\n"
+ " %s\n"
+ " %s\n"
+ "\n"
+ ,GetLecodeInfoLEREG(LEREG_PAL)
+ ,GetLecodeInfoLEREG(LEREG_USA)
+ ,GetLecodeInfoLEREG(LEREG_JAP)
+ ,GetLecodeInfoLEREG(LEREG_KOR)
+ );
+ }
+ CloseFile(&F,0);
+ }
+ }
+
+ return err;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// command distrib ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static void help_distrib ( enumError exit_code )
+{
+ if ( logging >= 3 )
+ printf("# colors: %d %d %d\n",colout->col_mode,colout->colorize,colout->n_colors);
+
+ static const char text[] =
+ "\n"
+ "{heading|Command »%s DISTRIBUTION«}\n"
+ "\n"
+ " |This command manages data for LE-CODE track distributions."
+ " It reads any number of source files with different file types,"
+ " collects the data and creates any number of files with different file types.\n"
+ "\n"
+ " |»{cmd|%s DISTRIBUTION}« is a very powerful tool when dealing with distributions."
+ " Because of the complexity, the input line offers many possibilities."
+ " First, the default options (arguments beginning with 1 or 2 minus signs"
+ " like {opt|-B} or {opt|--brief}) are evaluated."
+ " Then the remaining arguments of the command line are evaluated step by step from left to right."
+ " There are {name|input files} that change the internal model."
+ " The {name|instructions} are used to change the data or to write data to files."
+ " The {name|processing options} affect both reading and writing.\n"
+ "\n"
+ " |{warn|This command is still under development."
+ " Its use is therefore experimental and errors are quite likely!}\n"
+ "\n"
+ " {syntax|Syntax:}\n"
+ "|[4]\n"
+ "\t|{cmd|%s DISTRIBUTION}\n"
+ "\t|{cmd|%s DISTRIBUTION} {opt|option}... {par|argument}...\n"
+ "\n"
+ " |»{cmd|DIS}« and »{cmd|DISTRIB}« are well defined shortcuts for »{cmd|DISTRIBUTION}«."
+ " Without arguments, this help is printed.\n"
+ "\n"
+
+ //-------------------------------------------------------------------------
+
+ "\n"
+ "{heading|Arguments:}\n"
+ "\n"
+ " |Arguments are divided into 3 groups:"
+ " {name|processing options}, {name|instructions} and {name|filenames}.\n"
+ "\n"
+ " |If an argument beginns with a {hl|plus sign} ({hl|+}), then is is scanned as"
+ " a {name|comma-separated list of processing options}."
+ " To use a filename that starts with a plus sign (e.g. »{file|+file.txt}«),"
+ " precede it with »{file|./}« (e.g. »{file|./+file.txt}«).\n"
+ "\n"
+ " |Otherwise, if the argument is of the form {hl|COMMAND=PARAMETER},"
+ " then it is a {name|instruction}."
+ " COMMAND is a keyword (case-insenitive) and starts with a letter"
+ " followed by any number of letters, digits and minus signs."
+ " PARAMETER must consist of at least one character."
+ " If PARAMETER is empty, then the next argument is used as PARAMETER."
+ " This also allows the syntax {hl|COMMAND= PARAMETER} (2 arguments),"
+ " which is helpful for the automatic completion of filenames.\n"
+ "\n"
+ " |Otherwise it is a {name|filename of an input file}."
+ " The file is read and generally overwrites existing content."
+ " This means that the file last read in has the highest priority."
+ " However, this can be influenced by the processing options."
+ " Arguments beginning with »{file|/}« or »{file|./}«"
+ " are always recognized as filenames.\n"
+ "\n"
+ " |All arguments are executed in the order in which they were entered without any logging."
+ " Only error messages are displayed."
+ " With option {opt|--verbose} (short: {opt|-v}),"
+ " at least one log line for each argument is printed.\n"
+ "\n"
+ " |It is possible to store arguments into a file (e.g. into file »{file|param.txt}«)"
+ " and to include those file by option {opt|-@FILENAME}"
+ " (e.g. by »{file|-@param.txt}«). This option can be used multiple times"
+ " and is evaluated before the actual analysis of the command line."
+ " Command »{cmd|wlect argtest ...}« is suitable for tests.\n"
+ "\n"
+
+ //-------------------------------------------------------------------------
+
+ "\n"
+ "{heading|Input Files:}\n"
+ "\n"
+ " |{name|Input files} are processed in the order in which they were entered."
+ " They supplement or overwrite the internal data structure with its diverse data.\n"
+ "\n"
+ " |If a file does not exist but the associated filename contains wildcards"
+ " (any of »{file|*?[}«), then all matching files are loaded as source."
+ " So it's possible to keep the command line small if using »{file|'*.szs'}«"
+ " (with apostrophs) instead of »{file|*.szs}«.\n"
+ "\n"
+ " |The following file types are recognized and processed."
+ " The names used here are the same as those given out"
+ " by the command {cmd|FILETYPE} for identification:\n"
+ "|[4,13]\n"
+ "\t{name|LEDIS}:\t|"
+ "A distribution dump created by {name|write instruction} »{par|DUMP=…}«."
+ " Such a dump usually contains all relevant data of the internal model,"
+ " which is restored by reading it in.\n"
+ "\n"
+ "\t{name|LEDEF}:\t|"
+ "A distribution definition file."
+ " This new format replaces the old {name|CTTEXT} format."
+ " It supports all LE-CODE properties and will be further developed to match LE-CODE."
+ " Templates can be created with instruction »{par|LEDEF=…}«"
+ " or with command »{par|wlect CREATE LEDEF}«.\n"
+ "\n"
+ "\t{name|LEREF}:\t|"
+ "A track reference list created by {name|write instruction} »{par|REF=…}«.\n"
+ "\n"
+ "\t{name|SHA1REF}:\t|"
+ "A SHA1 reference list created by {name|write instruction} »{par|SHA1=…}«."
+ " Only checksum and track slot are used.\n"
+ "\n"
+ "\t{name|LE-BIN}:\t|"
+ "A LE-CODE binary file (e.g. »{file|lecode-PAL.bin}«)."
+ " Usually settings and LPAR are imported."
+ " Option {name|IN-LECODE} decides if the file is used as template"
+ " for the specifig region if a binary is created.\n"
+ "\n"
+ "\t{name|PREFIX}:\t|"
+ "Replace the internal prefix list by the content of the file."
+ " {file|https://ct.wiimm.de/export/prefix} is the authoritative source for this.\n"
+ "\n"
+ "\t{name|LPAR}:\t|"
+ "A LE-CODE parameter file (e.g. »{file|lpar.txt}«).\n"
+ "\n"
+ "\t{name|BMG} and {name|BMGTXT}:\n\t\t|"
+ "Any BMG (binary or text)."
+ " See section »{heading|Processing Options}« for more details.\n"
+ "\n"
+ "\t{name|DISTRIB}:\t|"
+ "A distribution file created by {name|write instruction} »{par|DISTRIB=…}«"
+ " or by command »{cmd|wszst DISTRIBUTION}«."
+ " Such files are imported by ct.wiimm.de to display information about distributions.\n"
+ "\n"
+ "\t{name|CTTEXT}:\t|"
+ "A CT-CODE or LE-CODE definition file."
+ " The file is scanned by the CT-CODE scanner and then imported.\n"
+ "\n"
+ " |All file types that are accepted by option {opt|--le-define}"
+ " ({name|BRRES}, {name|TEX0}, {name|CT-CODE}, ...) are also possible.\n"
+ "\n"
+
+ //-------------------------------------------------------------------------
+
+ "\n"
+ "{heading|Instructions:}\n"
+ "\n"
+ " |{name|Instructions} are of the form {hl|COMMAND=PARAMETER} (1 argument)"
+ " or {hl|COMMAND= PARAMETER} (2 arguments). Commands are case-insenitive."
+ " The use of keywords without the minus sign and unique abbreviations are permitted."
+ " Any number of write instructions can be used."
+ " And these can be mixed with input files at will.\n"
+ "\n"
+ " |Most commands, but not all, are {name|write instructions}."
+ " They write the current contents of the internal model to a file."
+ " In these cases, {hl|PARAMETER} is a filename."
+ " If a filename is a minus sign only, then {file|stdout} is used."
+ " Existing files are only overwritten if at least one of the options"
+ " {opt|--overwrite} (short: {opt|-o}) or {opt|--remove-dest} (short: {opt|-r}) is set.\n"
+ "\n|[4,14]"
+
+ //-------------------------
+ " |{heading|Create human readable information files:}\n"
+ "\n"
+
+ "\t{name|NAMES}:\t|"
+ "Create a human readable reference file with cup info and track names."
+ " Only tracks with known name (not empty) are printed."
+ " The tracks are ordered by cups.\n"
+ "\t{name|XNAMES}:\t|"
+ "Same as {name|NAMES}, but use extended names if available.\n"
+ "\n"
+ "\t{name|INFO}:\t|"
+ "Create a human readable reference file with cup info slots and track names."
+ " Only tracks with known name (not empty) are printed."
+ " The tracks are ordered by cups.\n"
+ "\t{name|XINFO}:\t|"
+ "Same as {name|INFO}, but use extended names if available.\n"
+ "\n"
+ "\t{name|LE-INFO}:\t|"
+ "Print information about current LE-CODE binaries.\n"
+ "\n"
+ "\t{name|PREFIX}:\t|"
+ "Print a machine readable prefix list."
+ " {file|https://ct.wiimm.de/export/prefix} is the authoritative source for this.\n"
+ "\n"
+ "\t{name|DEBUG}:\t|"
+ "Print some statistics for debugging."
+ " The current sate is analysed without updating cups.\n"
+ "\n"
+
+ //-------------------------
+ " |{heading|Create human and machine readable definition files (usually input files):}\n"
+ "\n"
+
+ "\t{name|LE-DEF}:\t|"
+ "Create a LE-CODE definition file of format »{name|#LE-DEF1}«,"
+ " that is usually used to declare tracks for a LE-CODE distributions."
+ " This new format replaces the old format created by {name|CTDEF=}."
+ " It supports all LE-CODE properties and will be further developed"
+ " to match future LE-CODE.\n"
+ "\n"
+ "\t{name|CT-DEF}:\t|"
+ "Create a definition file of format »{name|#CT-CODE}«,"
+ " that is usually used to declare tracks for a CT-CODE or LE-CODE distributions."
+ " Only simple layouts are supported,"
+ " so that the track arrangement can be distorted when importing again."
+ " In addition, a file is created"
+ " that can only be read by the tools since version 2.28a.\n"
+ "\n"
+
+
+ //-------------------------
+ " {heading|Generate machine-readable files that can also be used as input files:}\n"
+ "\n"
+
+ "\t{name|SHA1}:\t|"
+ "Create a SHA1 list file that can be used on Wiimmfi"
+ " to limit the tracks that can be used in a region."
+ " Only tracks with known SHA1 are printed."
+ " The output can be used as input file to restore the checksums.\n"
+ "\t{name|XSHA1}:\t|"
+ "Same as {name|SHA1}, but use extended names if available.\n"
+ "\n"
+ "\t{name|DISTRIB}:\t|"
+ "Create a distribution file like command »{cmd|wszst DISTRIBUTION}« does."
+ " However, this variant only supports tracks with a known track slot."
+ " The output can be used as input file.\n"
+ "\t{name|XDISTRIB}:\t|"
+ "Same as {name|DISTRIB}, but use extended names for the track list if available.\n"
+ "\n"
+ "\t{name|LPAR}:\t|"
+ "Create a LPAR file. Use {opt|--brief} ({opt|-b}) to suppress comments.\n"
+ "\n"
+ "\t{name|BMG}:\t|"
+ "Create a BMG binary file. BMG options are recognized."
+ " But if the output goes to a terminal, then use {name|BMGTXT} insted.\n"
+ "\t{name|BMGTXT}:\t|"
+ "Create a BMG text file. BMG options are recognized.\n"
+ "\n"
+ "\t{name|REF}:\t|"
+ "Create a machine readable track reference (type {name|LEREF}),"
+ " that can be used as input file for other commands."
+ " One line is printed for each defined track.\n"
+ "\n"
+ "\t{name|DUMP}:\t|"
+ "Create a dump of the complete internal model to a distribution file"
+ " (type {name|LE-DIS})."
+ " This file can be used as source to restore the internal model.\n"
+ "\n"
+
+ //-------------------------
+ " {heading|Create LE-CODE binary files:}\n"
+ "\n"
+
+ "\t{name|LECODE}:\t|"
+ "Create 4 LE-CODE binary files, one for each region."
+ " The filename must contain at least {hl|one »@« character}."
+ " The last »@« character is replaced by"
+ " {name|PAL}, {name|USA}, {name|JAP} and {name|KOR} in sequence."
+ " The binary data embedded in the SZS tools is usually used as a template."
+ " At the moment it is {info|build %s}."
+ " Other templates can be used with the {name|IN-LECODE} processing option.\n"
+ "\n"
+ "\t{name|PAL}:\t|"
+ "Similar to mode {name|LECODE}, but only the PAL version is generated."
+ " The »@« character has no special meaning here.\n"
+ "\t{name|USA}:\t|"
+ "Like {name|PAL}, but the USA version is generated.\n"
+ "\t{name|JAP}:\t|"
+ "Like {name|PAL}, but the JAP version is generated.\n"
+ "\t{name|KOR}:\t|"
+ "Like {name|PAL}, but the KOR version is generated.\n"
+ "\n"
+
+ //-------------------------
+ " {heading|String functions:}\n"
+ "\n"
+
+ "\t{name|SUBST}:\t|"
+ "This command searches for text passages using a regular expression"
+ " and replaces the found passages with another text.\r"
+ " {heading|Syntax of PARAMETER:} |{syntax|STORAGE ',' SEP REGEXP SEP REPLACEMENT SEP OPTIONS}\n"
+ "\n\t\t|"
+ "{syntax|STORAGE} is a storage indicator"
+ " explained in section »{name|Processing Options: Storage}«."
+ " {syntax|SEP} is the very first character behind the comma."
+ " It must occur exactly 3 times and separates the 3 parts from each other."
+ " {syntax|REGEXP} is the extended regular expression used for searching."
+ " If successful, replace that portion matched with {syntax|REPLACEMENT}."
+ " The replacement may contain the special string »{mark|$0}«"
+ " to refer to that portion of the pattern space which matched,"
+ " and the special string1 »{mark|$1}« through »{mark|$9}«"
+ " to refer to the corresponding matching sub-expressions in the regexp."
+ " The two characters »{mark|g}« for global (replace all occurrences)"
+ " and »{mark|i}« for ignore case are recognized as {syntax|OPTIONS}.\r"
+ "\r"
+ "Examples: |{syntax|subst=name,+abc+xyz+}\r"
+ "{syntax|subst=[key],/search ([0-9])/replace $1/gi}\n"
+ "\n"
+
+ "\t{name|COPY}:\t|"
+ "This command copies the texts of 1 or more sources to a destination.\r"
+ " {heading|Syntax of PARAMETER:} {syntax|DEST '=' SRC [ '+' SRC ]...}\r"
+ "\r"
+ "{syntax|DEST} and {syntax|SRC} are storage indicators"
+ " explained in section »{name|Processing Options: Storage}«."
+ " The sources are joined textually, with CTRL-A (ASCII 1, '\\1')"
+ " inserted as a separator between the sources."
+ " Use instruction {name|SUBST} to change the separators.\r"
+ "\r"
+ "Example: |{syntax|copy=[result]=sha1+[size]}\n"
+ "\n"
+
+ //-------------------------
+ " {heading|Copy, move or link track files:}\n"
+ "\n|[4,12,14,22]"
+
+ "\t{name|TRACKS}:\t|"
+ "Copy, move or links files following the options {opt|--copy-tracks},"
+ " {opt|--move-tracks}, {opt|--move1-tracks}, {opt|--link-tracks}"
+ " and {opt|--track-dir}."
+ " {hl|PARAMETER} is a keyword that specifies the options for execution:\n"
+ "\n"
+
+ "\t\t\t{name|NO-LOG}:\t|"
+ "Transfer the tracks without logging.\n"
+ "\t\t\t{name|LOG}:\t|"
+ "Transfer the tracks with logging.\n"
+ "\t\t\t{name|TEST}:\t|"
+ "Log planned actions only and don't touch any file.\n"
+ "\n"
+
+ //-------------------------------------------------------------------------
+
+ "\n"
+ "{heading|Processing Options:}\n"
+ "\n"
+ " |{name|Processing Options} are inserted as comma separated list."
+ " A list always begins with a plus sign to distinguish it from filenames"
+ " and instructions."
+ " Option names are case-insenitive. Unique abbreviations are allowed."
+ " Names with a minus sign in their name can also be specified without the minus sign.\n"
+ "\n"
+ " |Most option names can be preeceded by a minus sign or a slash to negate its meaning."
+ "\n"
+ " |{name|Processing Options} are only valid for subsequent arguments."
+ " This makes it possible to use different filters for different input or output files."
+ " The keywords are divided into several functional groups.\n"
+ "\n|[4,16]"
+
+ //-------------------------
+
+ " |{heading|Managment Options:}\n"
+ "\n"
+ "\t{name|HELP}:\t|"
+ "Stop execution and print this help.\n"
+ "\t{name|RESET}:\t|"
+ "Reset the filter to its default.\n"
+ "\n"
+ "\t{name|CUT-STD}:\t|"
+ "Remove settings and tracks, that are not needed for a standard distribution"
+ " with 32 tracks and 10 battle arenas.\n"
+ "\t{name|CUT-CTCODE}:\t|"
+ "Remove settings and tracks, that are not needed for a CT-CODE distribution."
+ " Arenas are also removed.\n"
+ "\n"
+
+ //-------------------------
+
+ " |{heading|BMG source:}\n"
+ "\n"
+ "\t|Define which BMG strings are used as input."
+ " Multiple source can be selected. If none is selected, then all are used."
+ " {name|MKW1} has the lowest priority and {name|LE-CODE} the highest.\n"
+ "\n"
+
+ "\t{name|MKW1}:\t|"
+ "Use the first set of orignal names starting from"
+ " message id 0x2454 (racing tracks) and 0x2490 (battle arenas).\n"
+ "\t{name|MKW2}:\t|"
+ "Use the second set of orignal names starting from"
+ " message id 0x24b8 (racing tracks) and 0x24cc (battle arenas).\n"
+ "\t{name|MKW}:\t|"
+ "Short cut for »{name|+MKW1,MKW2}«.\n"
+ "\t{name|CT-CODE}:\t|"
+ "Use the CT-CODE names starting from message id 0x4000.\n"
+ "\t{name|LE-CODE}:\t|"
+ "Use the LE-CODE names starting from message id 0x7000.\n"
+ "\n"
+
+ //-------------------------
+
+ " |{heading|Input filters:}\n"
+ "\n"
+ "\t|Define the type of character identifiers accepted as source."
+ " Empty character strings and character strings"
+ " that only consist of a minus sign are considered invalid.\n"
+ "\n"
+
+ "\t{name|IN-EMPTY}:\t|"
+ "Empty strings are also considered valid."
+ " {name|IEMPTY} is a short cut for this keyword.\n"
+ "\t{name|IN-MINUS}:\t|"
+ "Strings consisting only of a minus sign are also considered valid."
+ " {name|IMINUS} is a short cut for this keyword.\n"
+ "\t{name|IN-ALL}:\t|"
+ "Short cut for »{name|+IN-EMPTY,IN-MINUS}«."
+ " {name|IALL} is a short cut for this keyword.\n"
+ "\n"
+
+ //-------------------------
+
+ " |{heading|Input operation:}\n"
+ "\n"
+ "\t|Define how already existing strings are overwritten.\n"
+ "\n"
+
+ "\t{name|OVERWRITE}:\t|"
+ "Insert all valid BMG strings and overwrite already existing strings."
+ " This is the default.\n"
+ "\t{name|INSERT}:\t|"
+ "Insert only valid BMG strings, that are empty in the track list.\n"
+ "\t{name|REPLACE}:\t|"
+ "Replace only valid BMG strings that are already defined in the track list."
+ " Other strings are ignored.\n"
+ "\n"
+
+ //-------------------------
+
+ " |{heading|Storage:}\n"
+ "\n"
+ "\t|Define the string type being processed. This is used for BMG input and output files only.\n"
+ "\n"
+
+ "\t{name|IDENT}:\t|"
+ "Define a new identfication string."
+ " If it is a valid SHA1 or DB64 string, then update SHA1 too."
+ " If reading, then get the identfication string.\n"
+ "\t{name|SHA1}:\t|"
+ "Same as {name|IDENT} if writing."
+ " If reading, then get the SHA1 string.\n"
+ "\t{name|FILE}:\t|"
+ "Define a new or get the filename.\n"
+ "\t{name|NAME}:\t|"
+ "Define a new or get the standard name.\n"
+ "\t{name|XNAME}:\t|"
+ "Define a new or get the extended name.\n"
+ "\t{name|X2NAME}:\t|"
+ "Define a new standard and a new extended name."
+ " If reading, then get the extended name, if valid, or the standard name as fallback.\n"
+ "\n"
+ "\t{name|[key]}:\t|"
+ "For each track there is a set of character strings at the user's disposal."
+ " The character strings are addressed via KEY."
+ " The KEY itself can consist of any character and are case-sensitive."
+ " This type of square bracket option can only be used"
+ " directly after the leading plus sign. More processing options may follow.\n"
+ "\n"
+
+ //-------------------------
+
+ " |{heading|Output filters:}\n"
+ "\n"
+ "\t|Select tracks for the output by their features.\n"
+ "\n"
+
+ "\t{name|VERSUS}||{name|VS}:\t|"
+ "Select versus tracks only.\n"
+ "\t{name|BATTLE}||{name|BT}:\t|"
+ "Select battle tracks (arenas) only."
+ " If neither or both of {name|VERSUS} and {name|BATTLE} set, both types are selected.\n"
+ "\n"
+ "\t{name|CUSTOM}:\t|"
+ "Select custom tracks."
+ " An original track in the wrong slot will also be considered CUSTOM.\n"
+ "\t{name|ORIGINAL}:\t|"
+ "Select original tracks at correct track slot only."
+ " Original tracks are detected by their SHA1."
+ " If neither or both of {name|CUSTOM} and {name|ORIGINAL} set, both types are selected.\n"
+ "\n"
+ "\t{name|NO-D}:\t|"
+ "This option suppresses information about so-called '_d' files."
+ " This affects 2 sub-commands:"
+ " With the {name|REF} sub-command, the data fields relating to '_d' files remain empty,"
+ " and with {name|SHA1}, no lines are output for '_d' tracks.\n"
+ "\n"
+
+ //-------------------------
+
+ " |{heading|Empty output strings:}\n"
+ "\n"
+ "\t|For sub-commands {name|(X)NAMES} and {name|(X)INFO},"
+ " only tracks that have a valid name are output."
+ " Empty character strings and character strings"
+ " that only consist of a minus sign are considered invalid.\n"
+ "\n"
+
+ "\t{name|OUT-EMPTY}:\t|"
+ "Empty strings are also considered valid."
+ " {name|OEMPTY} is a short cut for this keyword.\n"
+ "\t{name|OUT-MINUS}:\t|"
+ "Strings consisting only of a minus sign are also considered valid."
+ " {name|OMINUS} is a short cut for this keyword.\n"
+ "\t{name|OUT-ALL}:\t|"
+ "Short cut for »{name|+OUT-EMPTY,OUT-MINUS}«."
+ " {name|OALL} is a short cut for this keyword.\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}«),"
+ " 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."
+ " One reason to activate this option is to use more recent LE-CODE versions."
+ " {name|ILECODE} is a short cut for this keyword.\n"
+ "\t{name|/IN-LECODE}:\t|"
+ "Switch option {name|IN-LECODE} off.\n"
+ "\n"
+ "\t{name|BRIEF}:\t|"
+ "When creating text files, detailed descriptions are suppressed."
+ " The default is based on the global options {opt|--no-header} and {opt|--brief}.\n"
+ "\t{name|/BRIEF}:\t|"
+ "Switch option {name|BRIEF} off.\n"
+ "\n"
+
+ //-------------------------------------------------------------------------
+
+ "\n"
+ "{heading|Examples:}\n"
+ "\n"
+ " |....\n"
+ "\n"
+
+ //-------------------------------------------------------------------------
+
+ "\n"
+ "{heading|Built-in LE-CODE binaries:}\n"
+ "\n"
+ " |%s\r%s\r%s\r%s\n"
+ "\n"
+
+ ;
+
+ #if 0
+ char wildcards[] = PATTERN_WILDCARDS;
+ for ( char *ptr = wildcards; *ptr; ptr++ )
+ if ( *ptr == ' ' )
+ *ptr = 0xa0;
+ #endif
+
+ int good_width = GetGoodTermWidth(0,false);
+ PrintColoredLines(stdout,colout,0,good_width-1,0,0,text
+ ,ProgInfo.progname
+ ,ProgInfo.progname
+ ,ProgInfo.progname
+ ,ProgInfo.progname
+ // ,wildcards
+ ,GetLecodeBuildLEREG(LEREG_PAL)
+ ,GetLecodeInfoLEREG(LEREG_PAL)
+ ,GetLecodeInfoLEREG(LEREG_USA)
+ ,GetLecodeInfoLEREG(LEREG_JAP)
+ ,GetLecodeInfoLEREG(LEREG_KOR)
+ );
+ ClosePager();
+ exit(exit_code);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static void PrintHead ( ccp format, ... )
+ __attribute__ ((__format__(__printf__,1,2)));
+
+static void PrintHead ( ccp format, ... )
+{
+ if (stdlog)
+ {
+ char buf[500];
+ va_list arg;
+ va_start(arg,format);
+ vsnprintf(buf,sizeof(buf),format,arg);
+ va_end(arg);
+
+ ASSERT(collog);
+ fprintf(stdlog,"%s▼ %s%s\n",collog->caption,buf,collog->reset);
+ fflush(stdlog);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError cmd_distrib_instruction ( le_distrib_t *ld, ccp mode, char * arg )
+{
+ u_nsec_t start_nsec = GetTimerNSec();
+
+ enum { C_NAMES, C_INFO, C_LEINFO, C_SHA1, C_DISTRIB,
+ C_CTDEF, C_LEDEF, C_REF, C_STRINGS, C_DUMP,
+ C_LECODE, C_LECODE4, C_LPAR,
+ C_BMG, C_SUBST, C_COPY,
+ C_TRACKS, C_PREFIX, C_RESERVE, C_DEBUG };
+
+ enum
+ {
+ O_PARAM_D = 0x100, // scan storage DEST
+ O_PARAM_S = 0x200, // scan storage SRC
+ O_PARAM_SS = 0x600, // scan storage SRC [ + SRC ]...
+ O_PARAM_A = 0x800, // allow additonal arguments
+ };
+
+ static const KeywordTab_t tab[] =
+ {
+ { C_NAMES, "NAMES", 0, 0 },
+ { C_NAMES, "XNAMES", 0, 1 },
+ { C_INFO, "INFO", 0, 0 },
+ { C_INFO, "XINFO", 0, 1 },
+ { C_LEINFO, "LE-INFO", "LEINFO", 0 },
+
+ { C_SHA1, "SHA1", 0, 0 },
+ { C_SHA1, "XSHA1", 0, 1 },
+ { C_DISTRIB, "DISTRIBUTION", 0, 0 },
+ { C_DISTRIB, "XDISTRIBUTION", 0, 1 },
+
+ { C_CTDEF, "CT-DEF", "CTDEF", 0 },
+ { C_LEDEF, "LE-DEF", "LEDEF", 0 },
+ { C_LEDEF, "DEFINITION", "DEF", 0 },
+ { C_REF, "REFERENCE", "REF", 0 },
+ { C_STRINGS, "STRINGS", "STR", 0 },
+ { C_DUMP, "DUMP", 0, 0 },
+
+ { C_LECODE, "PAL", 0, LEREG_PAL },
+ { C_LECODE, "USA", 0, LEREG_USA },
+ { C_LECODE, "JAP", 0, LEREG_JAP },
+ { C_LECODE, "KOR", 0, LEREG_KOR },
+ { C_LECODE4, "LECODE", 0, 0 },
+
+ { C_LPAR, "LPAR", 0, 0 },
+
+ { C_BMG, "BMG", "BMGBIN", 0 },
+ { C_BMG, "BMG-TXT", "BMGTXT", 1 },
+
+
+ { C_SUBST, "SUBST", 0, O_PARAM_D|O_PARAM_A },
+ { C_COPY, "COPY", 0, O_PARAM_D|O_PARAM_SS },
+
+ { C_TRACKS, "TRACKS", 0, 0 },
+
+ { C_PREFIX, "PREFIX", 0, 0 },
+ { C_RESERVE, "RESERVE", 0, 0 },
+ { C_DEBUG, "DEBUG", 0, 0 },
+
+ { 0,0,0,0 }
+ };
+
+ enum { O_LOG = 1, O_TEST = 2 };
+ static const KeywordTab_t tracks_tab[] =
+ {
+ { 0, "NO-LOG", "NOLOG", 0 },
+ { 0, "LOG", 0, O_LOG },
+ { 0, "TEST", 0, O_LOG|O_TEST },
+ { 0,0,0,0 }
+ };
+
+ if ( !ld || !mode || !arg || !*arg )
+ return ERROR0(ERR_MISSING_PARAM,0);
+
+
+ //--- scan keyword
+
+ int cmd_stat;
+ const KeywordTab_t *cmd = ScanKeyword(&cmd_stat,mode,tab);
+ if (!cmd)
+ {
+ PrintHead("Instruction: %s = %s",mode,arg);
+ PrintKeywordError(tab,mode,cmd_stat,0,"instruction");
+ hint_exit(ERR_SYNTAX);
+ }
+
+
+ //--- start
+
+ if ( verbose >= 1 )
+ PrintHead("Instruction %s: %s",cmd->name1,arg);
+
+ u_nsec_t temp_nsec = GetTimerNSec();
+ if ( CloseArchLD(ld) && verbose >= 2 )
+ {
+ const u_nsec_t dur = GetTimerNSec() - temp_nsec;
+ fprintf(stdlog,"%s >> SZS archive closed in %s%s\n",
+ collog->status, PrintTimerNSec6(0,0,dur,0), collog->reset );
+ start_nsec += dur;
+ }
+
+
+ //--- text argument only
+
+ const int MAX_PAR_SRC = 20;
+ int n_par_src = 0;
+ le_strpar_t par_dest, par_src[MAX_PAR_SRC];
+
+ enumError err = ERR_OK;
+ const le_options_t opt = cmd->opt;
+ if ( opt & (O_PARAM_D|O_PARAM_S) )
+ {
+ if ( opt & O_PARAM_D )
+ {
+ par_dest = ld->spar;
+ char *end = ScanLSP(&par_dest,arg,&err);
+ if ( opt & (O_PARAM_S|O_PARAM_A) )
+ {
+ if ( *end != '=' && *end != ',' )
+ return ERROR0( ERR_SEMANTIC,"%s: Missing '=' or ',': %s\n",cmd->name1,end);
+ end++;
+ }
+
+ if (err)
+ {
+ err_param12:;
+ return ERROR0( ERR_SEMANTIC,
+ "%s: Invalid string name: %s\n", cmd->name1, arg );
+ }
+ arg = end;
+ if ( verbose >= 2 )
+ fprintf(stdlog," > %s%s %s\n",
+ cmd->name1,
+ opt & O_PARAM_S ? " DEST: " : ":",
+ GetOptionsLSP(&par_dest,LEO__DEST));
+ }
+
+ if ( opt & O_PARAM_S )
+ {
+ const int max = opt & O_PARAM_SS ? MAX_PAR_SRC : 1;
+ le_strpar_t *src = par_src;
+ while ( n_par_src < max )
+ {
+ *src = ld->spar;
+ char *end = ScanLSP(src,arg,&err);
+ if (err)
+ goto err_param12;
+ if ( verbose >= 2 )
+ fprintf(stdlog," > %s SRC[%02u]: %s\n",
+ cmd->name1, n_par_src+1, GetOptionsLSP(src,LEO__SRC));
+ n_par_src++;
+ src++ ;
+ arg = end;
+ if ( *arg != '+' && *arg != ',' )
+ break;
+ arg++;
+ }
+ }
+ if ( *arg && !(opt&O_PARAM_A) )
+ return ERROR0( ERR_SEMANTIC,"%s: Missing end-of-line: %s\n",cmd->name1,arg);
+ }
+
+
+ //--- text argument only
+
+ err = ~0;
+ switch (cmd->id)
+ {
+ case C_LECODE4: err = CreateLecode4LD(arg,ld); break;
+ case C_SUBST: err = SubstLD(ld,&par_dest,arg); break;
+ case C_COPY: err = CopyLD(ld,&par_dest,par_src,n_par_src); break;
+
+ case C_TRACKS:
+ cmd = ScanKeyword(&cmd_stat,arg,tracks_tab);
+ if (!cmd)
+ {
+ PrintHead("Instruction: %s = %s",mode,arg);
+ PrintKeywordError(tab,arg,cmd_stat,0,"TRACKS keyword");
+ hint_exit(ERR_SYNTAX);
+ }
+ err = TransferFilesLD(ld,cmd->opt&O_LOG,cmd->opt&O_TEST);
+ break;
+
+ case C_RESERVE:
+ {
+ le_track_type_t ltty = LTTY_TRACK;
+ char ch = tolower(*arg);
+ if ( ch == 'a' || ch == 'b' )
+ {
+ ltty = LTTY_ARENA;
+ arg++;
+ }
+ else if ( ch == 't' || ch == 'v' )
+ arg++;
+
+ char *end;
+ int n1 = str2ul(arg,&end,10);
+ if ( end > arg )
+ {
+ int n2 = 1;
+ if ( *end == ',' || *end == 'x' )
+ n2 = str2ul(end+1,0,10);
+ ccp ltty_name = ltty==LTTY_TRACK ? "versus track" : "battle arena";
+ PRINT1("RESERVE %s %dx%d\n", ltty_name, n1, n2 );
+ if ( n2 > 0 )
+ {
+ if ( verbose >= 1 )
+ fprintf(stdlog," > Reserve %dx%d %s%s\n",
+ n1, n2, ltty_name, n1*n2 == 1 ? "" : "s" );
+ while ( n1-- > 0 )
+ {
+ le_track_t *lt = ReserveTracksLD(ld,ltty,n2,false);
+ if (!lt)
+ break;
+ if ( verbose >= 1 )
+ {
+ if ( n2 > 1 )
+ fprintf(stdlog," > Slots %d to %d reserved for %u %ss.\n",
+ lt->track_slot, lt->track_slot + n2 -1, n2, ltty_name );
+ else
+ fprintf(stdlog," > Slot %d reserved for a %s.\n",
+ lt->track_slot, ltty_name );
+ }
+ }
+ }
+ }
+ }
+ err = ERR_OK;
+ break;
+ }
+
+
+ //-- with opened file
+
+ if ( err == ~0 )
+ {
+ File_t F;
+ err = CreateFileOpt(&F,true,arg,false,0);
+ if (!err)
+ {
+ const bool variant = cmd->opt & 1; // use xnames || force text mode
+ switch (cmd->id)
+ {
+ case C_NAMES: err = CreateNamesLD(F.f,ld,variant); break;
+ case C_INFO: err = CreateInfoLD(F.f,ld,variant); break;
+ case C_LEINFO: err = CreateLeInfoLD(F.f,ld,false); break;
+ case C_SHA1: err = CreateSha1LD(F.f,ld,variant,true); break;
+ case C_DISTRIB: err = CreateDistribLD(F.f,ld,variant); break;
+
+ case C_CTDEF: err = CreateCtDefLD(F.f,ld); break;
+ case C_LEDEF: err = CreateLeDefLD(F.f,ld); break;
+ case C_REF: err = CreateRefLD(F.f,ld,true); break;
+ case C_STRINGS: err = CreateStringsLD(F.f,ld); break;
+ case C_DUMP: err = CreateDumpLD(F.f,ld); break;
+
+ case C_LECODE: err = CreateLecodeLD(F.f,ld,cmd->opt); break;
+ case C_LPAR: err = CreateLparLD(F.f,ld,true); break;
+ case C_BMG: err = CreateBmgLD(F.f,ld,variant||F.is_stdio); break;
+ case C_PREFIX: err = SavePrefixTable(F.f,0); break;
+ case C_DEBUG: err = CreateDebugLD(F.f,ld); break;
+ }
+ }
+ CloseFile(&F,0);
+ }
+
+ if ( verbose >= 2 )
+ {
+ const u_nsec_t dur = GetTimerNSec() - start_nsec;
+ fprintf(stdlog,"%s >> %s done in %s%s\n",
+ collog->status, cmd->name1,
+ PrintTimerNSec6(0,0,dur,0), collog->reset );
}
- fflush(stdout);
return err;
}
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError cmd_distrib()
+{
+ stdlog = stderr;
+ SetupPager();
+ if (!n_param)
+ help_distrib(ERR_OK);
+
+ CheckOptDest("-",false);
+
+ if ( verbose >= 1 )
+ fputc('\n',stdlog);
+
+ le_distrib_t ld;
+ InitializeLD(&ld);
+
+ for ( ParamList_t *param = first_param; param; param = param->next )
+ {
+ NORMALIZE_FILENAME_PARAM(param);
+ ccp arg = param->arg;
+
+ if ( *arg == '+' )
+ {
+ if ( verbose >= 1 )
+ PrintHead("Scan options: %s",arg);
+ ScanOptionsLSP(&ld.spar,arg+1,"Filter option");
+ if ( ld.spar.opt & LEO_HELP )
+ help_distrib(ERR_OK);
+ if ( ld.spar.opt & LEO_M_CUT )
+ {
+ CutLD(&ld,ld.spar.opt);
+ ld.spar.opt &= ~LEO_M_CUT;
+ }
+ if ( verbose >= 2 )
+ fprintf(stdlog," > Options: %s\n",GetOptionsLSP(&ld.spar,LEO__ALL));
+ continue;
+ }
+
+ char *fname = strchr(arg,'=');
+ if ( fname && isalpha((int)*arg) )
+ {
+ ccp p = arg;
+ while ( isalnum((int)*p) || *p == '-' )
+ p++;
+ if ( p == fname )
+ {
+ *fname++ = 0;
+ if (!*fname)
+ {
+ param = param->next;
+ if (param)
+ {
+ NORMALIZE_FILENAME_PARAM(param);
+ fname = param->arg;
+ }
+ }
+ cmd_distrib_instruction(&ld,arg,fname);
+ continue;
+ }
+ }
+
+ if ( verbose >= 1 )
+ PrintHead("Read file(s): %s",arg);
+ const u_nsec_t start_nsec = GetTimerNSec();
+ NORMALIZE_FILENAME_PARAM(param);
+ ImportFileLD(&ld,arg,true,false);
+ if ( verbose >= 2 )
+ {
+ const u_nsec_t dur = GetTimerNSec() - start_nsec;
+ fprintf(stdlog,"%s >> File(s) read in %s%s\n",
+ collog->status, PrintTimerNSec6(0,0,dur,0), collog->reset );
+ }
+ }
+
+ ClosePager();
+ return ProgInfo.max_error;
+}
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// command cat ///////////////
@@ -1125,13 +2216,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -1144,6 +2237,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_TEST: testmode++; break;
case GO_FORCE: force_count++; break;
case GO_REPAIR_MAGICS: err += ScanOptRepairMagic(optarg); break;
+ case GO_CREATE_DISTRIB: EnableLDUMP(optarg); break;
#if OPT_OLD_NEW
case GO_OLD: opt_new = opt_new>0 ? -1 : opt_new-1; break;
@@ -1162,6 +2256,9 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_PRESERVE: opt_preserve = true; break;
case GO_IGNORE: opt_ignore++; break;
+ case GO_LOAD_PREFIX: err += ScanOptLoadPrefix(optarg); break;
+ case GO_PLUS: opt_plus = optarg; break;
+
case GO_LOAD_BMG: err += ScanOptLoadBMG(optarg); break;
case GO_PATCH_BMG: err += ScanOptPatchMessage(optarg); break;
case GO_MACRO_BMG: err += ScanOptMacroBMG(optarg); break;
@@ -1170,7 +2267,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_ORDER_BY: opt_order_by = optarg; break;
case GO_ORDER_ALL: opt_order_all = true; break;
- case GO_LE_DEFINE: opt_le_define = optarg; break;
+ case GO_LE_DEFINE: ScanOptLeDefine(optarg); break;
case GO_LE_ARENA: opt_le_arena = optarg; break;
case GO_LPAR: opt_lpar = optarg; break;
case GO_ALIAS: err += ScanOptAlias(optarg); break;
@@ -1183,10 +2280,11 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_DEBUG: err += ScanOptDebug(optarg); break;
case GO_TRACK_DIR: opt_track_dest = optarg; break;
- case GO_COPY_TRACKS: err += ScanOptTrackSource(optarg,TFMD_COPY); break;
- case GO_MOVE_TRACKS: err += ScanOptTrackSource(optarg,TFMD_MOVE); break;
- case GO_MOVE1_TRACKS: err += ScanOptTrackSource(optarg,TFMD_MOVE1); break;
- case GO_LINK_TRACKS: err += ScanOptTrackSource(optarg,TFMD_LINK); break;
+ case GO_COPY_TRACKS: err += ScanOptTrackSource(optarg,-1,TFMD_COPY); break;
+ case GO_MOVE_TRACKS: err += ScanOptTrackSource(optarg,-1,TFMD_MOVE); break;
+ case GO_MOVE1_TRACKS: err += ScanOptTrackSource(optarg,-1,TFMD_MOVE1); break;
+ case GO_LINK_TRACKS: err += ScanOptTrackSource(optarg,-1,TFMD_LINK); break;
+ case GO_SZS_MODE: err += ScanOptSzsMode(optarg); break;
case GO_COMPLETE: opt_complete = true; break;
@@ -1286,6 +2384,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wlect); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -1306,6 +2405,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_PATCH: err = cmd_patch(); break;
case CMD_CREATE: err = cmd_create(); break;
+ case CMD_DISTRIBUTION: err = cmd_distrib(); break;
case CMD_CAT: err = cmd_cat(); break;
case CMD_LPAR: err = cmd_lpar(); break;
case CMD_DECODE: err = cmd_convert(cmd_ct->id,"DECODE","\1P/\1N.txt"); break;
@@ -1333,11 +2433,21 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wlect";
print_title_func = print_title;
SetupLib(argc,argv,WLECT_SHORT,VERSION,TITLE);
ctcode_enabled = true;
lecode_enabled = true;
+
//----- process arguments
if ( argc < 2 )
@@ -1360,6 +2470,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wmdlt.c b/project/src/wmdlt.c
index b78ea83..133e53e 100644
--- a/project/src/wmdlt.c
+++ b/project/src/wmdlt.c
@@ -541,13 +541,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -665,6 +667,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wmdlt); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -707,6 +710,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wmdlt";
print_title_func = print_title;
SetupLib(argc,argv,WMDLT_SHORT,VERSION,TITLE);
@@ -732,6 +744,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wpatt.c b/project/src/wpatt.c
index 47107a5..e383ab0 100644
--- a/project/src/wpatt.c
+++ b/project/src/wpatt.c
@@ -350,13 +350,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -459,6 +461,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wpatt); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -497,6 +500,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wpatt";
print_title_func = print_title;
SetupLib(argc,argv,WPATT_SHORT,VERSION,TITLE);
@@ -522,6 +534,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wstrt.c b/project/src/wstrt.c
index 7708f78..81ee94d 100644
--- a/project/src/wstrt.c
+++ b/project/src/wstrt.c
@@ -311,7 +311,7 @@ static enumError cmd_hexdump()
{
//--- list addresses of option --vaddr and --faddr
- if ( logging > 1 )
+ if ( logging >= 2 )
{
if (dol_sections)
fprintf(stdlog,"\nSections: %s\n",
@@ -363,7 +363,7 @@ static enumError cmd_hexdump()
else
TranslateAllDolOffsets(dol,&mm,true);
- if ( logging > 1 )
+ if ( logging >= 2 )
{
fputs("\nList of virtual addresses to dump:\n\n",stdlog);
PrintMemMap(&mm,stdlog,5,0);
@@ -1583,13 +1583,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -1788,6 +1790,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_HELP: PrintHelpColor(&InfoUI_wstrt); break;
case CMD_CONFIG: err = cmd_config(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0);
break;
@@ -1835,6 +1838,15 @@ static enumError CheckCommand ( int argc, char ** argv )
int main ( int argc, char ** argv )
#endif
{
+ #if !SZS_WRAPPER
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+ #endif
+
+ tool_name = "wstrt";
print_title_func = print_title;
SetupLib(argc,argv,WSTRT_SHORT,VERSION,TITLE);
@@ -1868,6 +1880,7 @@ static enumError CheckCommand ( int argc, char ** argv )
if (SIGINT_level)
err = ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return err;
}
diff --git a/project/src/wszst.c b/project/src/wszst.c
index f39bd59..7d8d475 100644
--- a/project/src/wszst.c
+++ b/project/src/wszst.c
@@ -44,7 +44,7 @@
#include "lib-xbmg.h"
#include "lib-kcl.h"
#include "lib-kmp.h"
-#include "lib-lecode.h"
+#include "lib-ledis.h"
#include "lib-mdl.h"
#include "lib-pat.h"
#include "lib-breff.h"
@@ -69,8 +69,6 @@
#include "wcommand.h"
#endif
-#include "distrib.inc"
-
//
///////////////////////////////////////////////////////////////////////////////
/////////////// definitions ///////////////
@@ -451,7 +449,7 @@ static const sizeof_info_t sizeof_info_szs_list[] =
SIZEOF_INFO_ENTRY(kmp_ana_pflag_res_t)
SIZEOF_INFO_ENTRY(kmp_ana_pflag_t)
- SIZEOF_INFO_TITLE("LE-CODE")
+ SIZEOF_INFO_TITLE("LE-CODE basics")
SIZEOF_INFO_ENTRY(lecode_debug_info_t)
SIZEOF_INFO_ENTRY(lecode_debug_ex_t)
SIZEOF_INFO_ENTRY(le_lpar_t)
@@ -469,6 +467,30 @@ static const sizeof_info_t sizeof_info_szs_list[] =
SIZEOF_INFO_ENTRY(le_cup_par_t)
SIZEOF_INFO_ENTRY(le_course_par_t)
SIZEOF_INFO_ENTRY(le_analyse_t)
+ SIZEOF_INFO_ENTRY(le_region_t)
+ SIZEOF_INFO_ENTRY(le_cup_track_t)
+ SIZEOF_INFO_ENTRY(le_property_t)
+ SIZEOF_INFO_ENTRY(le_music_t)
+ SIZEOF_INFO_ENTRY(le_flags_t)
+
+ SIZEOF_INFO_TITLE("LE-CODE distribution")
+ SIZEOF_INFO_ENTRY(le_group_t)
+ SIZEOF_INFO_ENTRY(le_track_type_t)
+ SIZEOF_INFO_ENTRY(le_track_status_t)
+ SIZEOF_INFO_ENTRY(le_track_text_t)
+ SIZEOF_INFO_ENTRY(le_options_t)
+ SIZEOF_INFO_ENTRY(le_cup_ref_t)
+ SIZEOF_INFO_ENTRY(le_cup_t)
+ SIZEOF_INFO_ENTRY(le_strpar_t)
+ SIZEOF_INFO_ENTRY(le_track_id_t)
+ SIZEOF_INFO_ENTRY(le_track_t)
+ SIZEOF_INFO_ENTRY(le_track_arch_t)
+ SIZEOF_INFO_ENTRY(le_auto_setup_t)
+ SIZEOF_INFO_ENTRY(le_type_settings_t)
+ SIZEOF_INFO_ENTRY(le_settings_t)
+ SIZEOF_INFO_ENTRY(le_group_info_t)
+ SIZEOF_INFO_ENTRY(le_distrib_t)
+ SIZEOF_INFO_ENTRY(DistributionInfo_t)
SIZEOF_INFO_TITLE("LEX")
SIZEOF_INFO_ENTRY(features_szs_t)
@@ -577,6 +599,8 @@ static const sizeof_info_t sizeof_info_szs_list[] =
SIZEOF_INFO_ENTRY(wbz_header_t)
SIZEOF_INFO_ENTRY(analyse_szs_t)
SIZEOF_INFO_ENTRY(file_type_t)
+ SIZEOF_INFO_ENTRY(mkw_prefix_t)
+ SIZEOF_INFO_ENTRY(split_filename_t)
SIZEOF_INFO_TERM()
};
@@ -2541,6 +2565,118 @@ static enumError cmd_analyze()
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// command split ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static void print_split_val ( PrintScript_t *ps, ccp name, mem_t val )
+{
+ DASSERT(ps);
+ DASSERT(name);
+
+
+ if ( val.ptr && val.len )
+ {
+ char buf[1000];
+ PrintEscapedString(buf,sizeof(buf),val.ptr,val.len,CHMD_UTF8,'"',0);
+ PrintScriptVars(ps,0,"%s=\"%s\"\n",name,buf);
+ }
+ else
+ PrintScriptVars(ps,0,"%s=\"\"\n",name);
+}
+
+//-----------------------------------------------------------------------------
+
+static enumError cmd_split()
+{
+ static ccp def_path = "\1P/\1F\1?T";
+ CheckOptDest("-",false);
+ char dest[PATH_MAX];
+ enumError max_err = ERR_OK;
+ if (!strcmp(opt_dest,"-"))
+ fputc('\n',stdout);
+
+ split_filename_t spf;
+ InitializeSPF(&spf);
+
+ File_t fo;
+ InitializeFile(&fo);
+
+ PrintScript_t ps;
+ SetupPrintScriptByOptions(&ps);
+
+ ParamList_t *param;
+ for ( param = first_param; param; param = param->next )
+ {
+ NORMALIZE_FILENAME_PARAM(param);
+
+ if (!fo.f)
+ SubstDest(dest,sizeof(dest),param->arg,opt_dest,def_path,
+ GetExtFF(script_fform,0),false);
+
+ if (!fo.f)
+ {
+ enumError err = CreateFile(&fo,false,dest,FM_STDIO|FM_OVERWRITE);
+ if (err)
+ {
+ max_err = err;
+ break;
+ }
+ ps.f = fo.f;
+ PrintScriptHeader(&ps);
+ }
+
+ const u_nsec_t start_nsec = GetTimerNSec();
+ AnalyseSPF(&spf,false,param->arg,0,CPM_LINK,opt_plus);
+ const u_nsec_t duration_nsec = GetTimerNSec() - start_nsec;
+
+ PutScriptVars(&ps,1,0);
+
+ print_split_val(&ps,"source",spf.source);
+
+ print_split_val(&ps,"file_name",spf.f_name);
+ print_split_val(&ps,"file_d",spf.f_d);
+ print_split_val(&ps,"file_ext",spf.f_ext);
+
+ print_split_val(&ps,"normed",spf.norm);
+ print_split_val(&ps,"plus",spf.plus);
+ PrintScriptVars(&ps,0,"plus_order=%d\n",spf.plus_order);
+
+ #if SUPPORT_SPLIT_SIGN
+ print_split_val(&ps,"sign",spf.sign);
+ #endif
+ print_split_val(&ps,"boost",spf.boost);
+
+ print_split_val(&ps,"game1",spf.game1);
+ print_split_val(&ps,"game2",spf.game2);
+ print_split_val(&ps,"game",spf.game);
+ PrintScriptVars(&ps,0,"game_order=%d\ngame_color=%d\n",
+ spf.game_order, spf.game_color );
+
+ print_split_val(&ps,"name",spf.name);
+ print_split_val(&ps,"extra",spf.extra);
+ print_split_val(&ps,"version",spf.version);
+ print_split_val(&ps,"authors",spf.authors);
+ print_split_val(&ps,"attribs",spf.attribs);
+
+ PrintScriptVars(&ps,2,"duration_nsec=%llu\n",duration_nsec);
+
+ if (!script_array)
+ {
+ PrintScriptFooter(&ps);
+ ps.f = 0;
+ ResetFile(&fo,0);
+ }
+ }
+
+ PrintScriptFooter(&ps);
+ ResetPrintScript(&ps);
+ ResetFile(&fo,0);
+ ResetSPF(&spf);
+ return max_err;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// command is-texture ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -2841,61 +2977,6 @@ enumError ScanDistribFile
///////////////////////////////////////////////////////////////////////////////
-static ccp GetDistribParamByNameS ( DistributionInfo_t *dinf, ccp name, ccp def )
-{
- DASSERT(dinf);
- DASSERT(name);
- ParamFieldItem_t *it = FindParamField(&dinf->param,name);
- if ( it && it->data )
- {
- it->num = 1;
- return (ccp)it->data;
- }
- return def;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// for name changes
-
-#if 0
-
-static ccp GetDistribParamByNameS2
- ( DistributionInfo_t *dinf, ccp name1, ccp name2, ccp def )
-{
- DASSERT(dinf);
- DASSERT(name);
- ParamFieldItem_t *it = FindParamField(&dinf->param,name1);
- if (!it)
- it = FindParamField(&dinf->param,name2);
- if ( it && it->data )
- {
- it->num = 1;
- return (ccp)it->data;
- }
- return def;
-}
-
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-
-static int GetDistribParamByNameIMM
- ( DistributionInfo_t *dinf, ccp name, int def, int min, int max )
-{
- DASSERT(dinf);
- DASSERT(name);
- ParamFieldItem_t *it = FindParamField(&dinf->param,name);
- if (!it)
- return def;
- it->num = 1;
-
- char *end;
- int val = str2l((ccp)it->data,&end,10);
- return *end || val < min || val > max ? def : val;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
static enumError cmd_distribution()
{
SetPatchFileModeReadonly();
@@ -2958,21 +3039,21 @@ static enumError cmd_distribution()
else if ( !result_found && !strcmp(result,arg) )
{
result_found = true;
- ScanSlotTranslation(&dinf.translate,&dinf.param,arg,false);
+ ScanSlotTranslation(&dinf.translate,&dinf.ld,arg,false);
}
else
ScanSlotTranslation(&dinf.translate,0,arg,false);
}
if (!result_found)
- ScanSlotTranslation(&dinf.translate,&dinf.param,result,true);
+ ScanSlotTranslation(&dinf.translate,&dinf.ld,result,true);
AddParamDistributionInfo(&dinf,false);
//--- logging
- if ( logging > 0 )
+ if ( logging >= 1 )
{
fputs("--------------- translation ---------------\n",stdlog);
@@ -3007,8 +3088,8 @@ static enumError cmd_distribution()
fputs("---------------- parameter ----------------\n",stdlog);
uint i;
- const ParamFieldItem_t *it = dinf.param.field;
- for ( i = 0; i < dinf.param.used; i++, it++ )
+ const ParamFieldItem_t *it = dinf.ld.dis_param.field;
+ for ( i = 0; i < dinf.ld.dis_param.used; i++, it++ )
fprintf(stdlog,"%4u. %-20s = %s\n",
i+1, it->key, (ccp)it->data );
@@ -3089,84 +3170,11 @@ static enumError cmd_distribution()
if (!f)
ERROR1(ERR_CANT_CREATE,"Can't create file: %s\n",result);
- ccp uuid = GetDistribParamByNameS(&dinf,"UUID","");
- fprintf(f,text_distrib_head_cr
-
- ,GetDistribParamByNameS(&dinf,"COMMENT1","")
- ,GetDistribParamByNameS(&dinf,"COMMENT2","")
- ,GetDistribParamByNameS(&dinf,"COMMENT3","")
- ,GetDistribParamByNameS(&dinf,"COMMENT4","")
- ,GetDistribParamByNameS(&dinf,"COMMENT5","")
-
- ,GetDistribParamByNameS(&dinf,"USER-CT-WIIMM","")
- ,GetDistribParamByNameS(&dinf,"USER-WIIMMFI","")
- ,GetDistribParamByNameS(&dinf,"USER-CT-WIIKI","")
- ,GetDistribParamByNameS(&dinf,"USER-MISC","")
- ,GetDistribParamByNameS(&dinf,"MAIL","")
- ,GetDistribParamByNameS(&dinf,"NOTE-FOR-WIMMM","")
-
- ,GetDistribParamByNameS(&dinf,"NAME","?")
- ,GetDistribParamByNameS(&dinf,"VERSION","?")
- ,GetDistribParamByNameS(&dinf,"AUTHORS","?")
- ,GetDistribParamByNameS(&dinf,"RELEASE-DATE","")
- ,GetDistribParamByNameS(&dinf,"KEYWORDS","")
- ,GetDistribParamByNameS(&dinf,"PREDECESSOR","")
-
- ,GetDistribParamByNameS(&dinf,"WIIMMFI-REGION","")
- ,GetDistribParamByNameS(&dinf,"INFO-TEXT","")
- ,GetDistribParamByNameS(&dinf,"INFO-URL","")
-
- ,uuid
- ,GetDistribParamByNameIMM(&dinf,"DISPLAY-MODE",3,0,3)
- ,GetDistribParamByNameIMM(&dinf,"DATABASE-NAME",1,0,1)
- ,GetDistribParamByNameIMM(&dinf,"VIEW-COMMENT",0,0,1)
- ,GetDistribParamByNameIMM(&dinf,"ENABLE-NEW",0,0,1)
- ,GetDistribParamByNameIMM(&dinf,"ENABLE-AGAIN",0,0,1)
- ,GetDistribParamByNameIMM(&dinf,"ENABLE-FILL",0,0,1)
- ,GetDistribParamByNameIMM(&dinf,"ENABLE-UPDATE",0,0,1)
- ,GetDistribParamByNameIMM(&dinf,"ENABLE-BOOST",0,0,1)
-
- ,uuid
- ,VERSION
- ,REVISION_NUM
- ,GetDistribParamByNameS(&dinf,"FIRST-CREATION","")
- ,GetDistribParamByNameS(&dinf,"LAST-UPDATE","")
- );
-
-
-
- //--- mark some more params as 'used'
-
- GetDistribParamByNameS(&dinf,"WSZST-VERSION","");
- GetDistribParamByNameS(&dinf,"WSZST-REVISION","");
-
-
- //--- additional parameters
-
- ccp info = text_distrib_param_cr;
-
- const ParamFieldItem_t *it = dinf.param.field;
- for ( i = 0; i < dinf.param.used; i++, it++ )
- if (!it->num)
- {
- int len = strlen(it->key);
- ccp sep;
- if ( len > 14 )
- sep = " ";
- else if ( len > 6 )
- sep = "\t";
- else
- sep = "\t\t";
-
- fprintf(f,"%s@%s%s= %s\r\n", info, it->key, sep, (ccp)it->data );
- info = "";
- }
+ CreateDistribLD(f,&dinf.ld,true);
//--- battle arenas
- fputs(text_distrib_tracks_cr,f);
-
int slot, slot10 = -1, count = 0;
for ( slot = 0; slot < MAX_DISTRIBUTION_ARENA; slot++ )
{
@@ -5584,13 +5592,15 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_COMPATIBLE: err += ScanOptCompatible(optarg); break;
case GO_WIDTH: err += ScanOptWidth(optarg); break;
case GO_MAX_WIDTH: err += ScanOptMaxWidth(optarg); break;
+ case GO_NO_PAGER: opt_no_pager = true; break;
case GO_QUIET: verbose = verbose > -1 ? -1 : verbose - 1; break;
case GO_VERBOSE: verbose = verbose < 0 ? 0 : verbose + 1; break;
case GO_LOGGING: logging++; break;
+ case GO_TIMING: log_timing++; break;
case GO_WARN: err += ScanOptWarn(optarg); break;
case GO_DE: use_de = true; break;
case GO_CT_CODE: ctcode_enabled = true; break;
- case GO_LE_CODE: lecode_enabled = true; break;
+ case GO_LE_CODE: lecode_enabled = true; break; // optional argument ignored
case GO_COLORS: err += ScanOptColorize(0,optarg,0); break;
case GO_NO_COLORS: opt_colorize = COLMD_OFF; break;
@@ -5598,6 +5608,8 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_CONST: err += ScanOptConst(optarg); break;
case GO_TOUCH: break;
case GO_AUTO: break;
+ case GO_LOAD_PREFIX: err += ScanOptLoadPrefix(optarg); break;
+ case GO_PLUS: opt_plus = optarg; break;
case GO_SET_FLAGS: err += ScanOptSetFlags(optarg); break;
case GO_SET_SCALE: err += ScanOptSetScale(optarg); break;
case GO_SET_ROT: err += ScanOptSetRot(optarg); break;
@@ -5887,6 +5899,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_CONFIG: err = cmd_config(); break;
case CMD_INSTALL: err = cmd_install(); break;
case CMD_ARGTEST: err = cmd_argtest(argc,argv); break;
+ case CMD_EXPAND: err = cmd_expand(argc,argv); break;
case CMD_TEST: err = cmd_test(); break;
case CMD_COLORS: err = Command_COLORS(brief_count?-brief_count:long_count,0,0); break;
case CMD_ERROR: err = cmd_error(); break;
@@ -5932,6 +5945,7 @@ static enumError CheckCommand ( int argc, char ** argv )
case CMD_MEMORY_A: set_all(1); err = cmd_memory(); break;
case CMD_SHA1: err = cmd_sha1(); break;
case CMD_ANALYZE: err = cmd_analyze(); break;
+ case CMD_SPLIT: err = cmd_split(); break;
case CMD_IS_TEXTURE: err = cmd_is_texture(); break;
case CMD_FEATURES: err = cmd_features(); break;
case CMD_DISTRIBUTION: err = cmd_distribution(); break;
@@ -5989,6 +6003,7 @@ static enumError CheckCommand ( int argc, char ** argv )
int main_wszst ( int argc, char ** argv )
{
+ tool_name = "wszst";
print_title_func = print_title;
SetupLib(argc,argv,WSZST_SHORT,VERSION,TITLE);
SetupExtendedSZS();
@@ -6307,6 +6322,12 @@ int main_wrapper ( int argc, char ** argv )
int main ( int argc, char ** argv )
{
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+
//PRINT("ERR__N=%u\n",ERR__N);
if ( argc > 1 )
{
@@ -6321,7 +6342,9 @@ int main ( int argc, char ** argv )
const wrapper_t *w = FindWrapper(argc,argv);
DASSERT(w);
- return w->func(argc,argv);
+ const int err = w->func(argc,argv);
+ ClosePager();
+ return err;
}
//
diff --git a/project/src/wtest.c b/project/src/wtest.c
index 2283dd8..10e7814 100644
--- a/project/src/wtest.c
+++ b/project/src/wtest.c
@@ -4050,6 +4050,98 @@ static enumError test_arg_manager ( int argc, char ** argv )
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// test_xcode_hex() ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError test_xcode_hex ( int argc, char ** argv )
+{
+ putchar('\n');
+ char buf1[50], buf2[20];
+ for ( int i = 1; i < argc; i++ )
+ {
+ ccp arg = argv[i];
+ int elen = EncodeHex(buf1,sizeof(buf1),arg,-1,0);
+ int dlen = DecodeHex(buf2,sizeof(buf2),buf1,-1,-1,0);
+ printf("\n| %s | %s | %s | %d,%d\n",arg,buf1,buf2,elen,dlen);
+
+ elen = EncodeHex(buf1+1,sizeof(buf1)-2,arg,-1,0);
+ char *ptr = buf1 + elen + 1;
+ *buf1 = *ptr++ = '"';
+ *ptr = 0;
+ dlen = DecodeHex(buf2,sizeof(buf2),buf1,-1,-1,0);
+ printf("| %s | %s | %s | %d,%d\n",arg,buf1,buf2,elen,dlen);
+ }
+ putchar('\n');
+ return 0;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// test_is_checksum() ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError test_is_checksum ( int argc, char ** argv )
+{
+ putchar('\n');
+ sha1_size_t res;
+ sha1_hex_t hex;
+
+ for ( int i = 1; i < argc; i++ )
+ {
+ ccp arg = argv[i];
+ int stat = IsSSChecksum(&res,arg,-1);
+ Sha1Bin2Hex(hex,res.hash);
+ printf(" %d %s : %s\n",stat,hex,arg);
+ }
+ putchar('\n');
+ return 0;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// test_test_prefix() ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static enumError test_test_prefix ( int argc, char ** argv )
+{
+ putchar('\n');
+
+ for ( int i = 1; i < argc; i++ )
+ {
+ ccp arg = argv[i];
+ if (!strcmp(arg,"-l"))
+ {
+ const mkw_prefix_t *tab = GetPrefixTable();
+ if (tab)
+ {
+ putchar('\n');
+ for ( ; tab->info; tab++ )
+ printf(" %-8s %s\n",tab->prefix,tab->info);
+ putchar('\n');
+ }
+ continue;
+ }
+ if (!strcmp(arg,"-x"))
+ {
+ SavePrefixTableFN("-",0);
+ 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);
+ else
+ putchar('\n');
+ }
+
+ putchar('\n');
+ return 0;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// develop() ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -4329,6 +4421,9 @@ enum
CMD_UTF8, // test_utf8(argc,argv)
CMD_NICE, // test_nice(argc,argv)
CMD_ARG_MANAGER, // test_arg_manager(argc,argv)
+ CMD_XCODE_HEX, // test_xcode_hex(argc,argv)
+ CMD_IS_CHECKSUM, // test_is_checksum(argc,argv)
+ CMD_TEST_PREFIX, // test_test_prefix(argc,argv)
#ifdef HAVE_WIIMM_EXT
CMD_WIIMM, // test_wiimm(argc,argv)
@@ -4401,6 +4496,9 @@ static const KeywordTab_t CommandTab[] =
{ CMD_UTF8, "UTF8", 0, 0 },
{ CMD_NICE, "NICE", 0, 0 },
{ CMD_ARG_MANAGER, "ARG-MANAGER", "AM", 0 },
+ { CMD_XCODE_HEX, "XCODE-HEX", "XH", 0 },
+ { CMD_IS_CHECKSUM, "IS-CHECKSUM", "ICSUM", 0 },
+ { CMD_TEST_PREFIX, "TEST-PREFIX", "TP", 0 },
#ifdef HAVE_WIIMM_EXT
{ CMD_WIIMM, "WIIMM", "W", 0 },
@@ -4456,6 +4554,12 @@ void AddOne ( double m[3][4] )
int main ( int argc, char ** argv )
{
+ ArgManager_t am = {0};
+ SetupArgManager(&am,LOUP_AUTO,argc,argv,false);
+ ExpandAtArgManager(&am,AMXM_SHORT,10,false);
+ argc = am.argc;
+ argv = am.argv;
+
print_title_func = print_title;
SetupLib(argc,argv,NAME,VERSION,TITLE);
@@ -4564,6 +4668,9 @@ int main ( int argc, char ** argv )
case CMD_UTF8: test_utf8(argc,argv); break;
case CMD_NICE: test_nice(argc,argv); break;
case CMD_ARG_MANAGER: test_arg_manager(argc,argv); break;
+ case CMD_XCODE_HEX: test_xcode_hex(argc,argv); break;
+ case CMD_IS_CHECKSUM: test_is_checksum(argc,argv); break;
+ case CMD_TEST_PREFIX: test_test_prefix(argc,argv); break;
#ifdef HAVE_WIIMM_EXT
case CMD_WIIMM: test_wiimm(argc,argv); break;
@@ -4580,6 +4687,7 @@ int main ( int argc, char ** argv )
if (SIGINT_level)
ERROR0(ERR_INTERRUPT,"Program interrupted by user.");
+ ClosePager();
return ProgInfo.max_error;
}