From beeb5a165d3fcdb144d2f55bf089fbd88fd27023 Mon Sep 17 00:00:00 2001 From: crc Date: Mon, 10 Jan 2022 15:32:00 +0000 Subject: [PATCH] nga w/o libc: no longer segfault on exit (freebsd & openbsd) FossilOrigin-Name: 068c0fd2e322efeb743423607c3e712b0488c563e3374b9835d92437025dfb22 --- vm/nga-c-no-libc/bsd-amd64.s | 5 +- vm/nga-c-no-libc/image.c | 974 +++++++++++++++++++---------------- vm/nga-c-no-libc/retro.c | 4 +- 3 files changed, 524 insertions(+), 459 deletions(-) diff --git a/vm/nga-c-no-libc/bsd-amd64.s b/vm/nga-c-no-libc/bsd-amd64.s index fcd84aa..691a637 100644 --- a/vm/nga-c-no-libc/bsd-amd64.s +++ b/vm/nga-c-no-libc/bsd-amd64.s @@ -15,7 +15,10 @@ .p2align 8 _start: - jmp main + call main + movl $0x0,%edi + movq $0x1,%rax + syscall putchar: mov %rdi,%rax diff --git a/vm/nga-c-no-libc/image.c b/vm/nga-c-no-libc/image.c index 43ee969..d49a211 100644 --- a/vm/nga-c-no-libc/image.c +++ b/vm/nga-c-no-libc/image.c @@ -10,58 +10,68 @@ #define CELL_MAX LLONG_MAX - 1 #endif #endif -CELL ngaImageCells = 9689; -CELL ngaImage[] = { 1793,9674,9664,9688,202107,379,351,1030,1535,0,10,1,10,2,10,3,10,4,10, +CELL ngaImageCells = 10979; +CELL ngaImage[] = { 1793,10964,10952,10978,202201,410,382,1230,1535,0,10,1,10,2,10,3,10,4,10, 5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10,16,10, 17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234,1,2575, - 85000450,1,656912,112,157,268505089,63,62,285281281,0,63,2063,10,101384453,0,9,10,2049,56,25, - 459011,76,524546,76,302256641,1,10,16974595,0,50529798,10,25,524547,95,50529798,10,17108738,1,251790353,101777669, - 1,17565186,86,524545,90,64,167838467,-1,134287105,3,59,659457,3,459023,107,2049,56,25,2049,107, - 1793,114,2049,114,117506307,0,107,0,524545,26,112,168820993,0,126,1642241,126,134283523,11,112,1793, - 107,524545,2049,107,1793,107,16846593,126,140,157,1793,64,16846593,126,112,157,1793,64,7,10, - 659713,1,659713,2,659713,3,1793,167,17108737,3,2,524559,107,2049,107,2049,107,2049,121,168820998, - 2,535,1030,167841793,180,9,17826049,0,180,2,15,25,524546,163,134287105,181,95,2305,182,459023, - 190,134287361,181,185,659201,180,10,659969,7,2049,56,25,17694978,58,206,9,84152833,48,319750404,205, - 117507601,208,184618754,45,25,16974851,-1,168886532,1,134284289,1,221,134284289,0,208,660227,32,0,0,115, - 105,103,105,108,58,115,0,285278479,238,6,2576,524546,81,1641217,1,167838467,235,2049,250,2049, - 246,524545,238,200,17826050,237,0,2572,2563,2049,228,1793,133,459023,133,1793,276,17760513,145,3, - 165,8,251727617,3,2,2049,159,16,168820993,-1,126,2049,159,2575,2049,200,17563906,0,290,9, - 1793,133,285282049,3,2,134287105,126,287,524545,1793,107,16846593,3,0,107,8,659201,3,524545,26, - 112,17043201,3,11,2049,112,2049,107,268505092,126,1642241,126,656131,659201,3,524545,11,112,2049,107, - 459009,23,112,459009,55,112,459009,19,112,459009,21,112,1793,9,10,524546,159,134284303,161,1807, - 1030,1642241,237,285282049,359,1,459012,354,117509889,180,354,134287105,359,200,16845825,0,367,351,1793,64, - 1793,381,17826050,359,256,8,117506305,360,370,64,2116,11340,11700,11400,13685,13104,12432,12402,9603,9801, - 11514,11413,11110,12528,11948,10302,13340,9700,13455,12753,10500,10670,12654,13320,11960,13908,10088,10605,11865,11025, - 0,2049,200,987393,1,1793,107,524546,457,2049,455,2049,455,17891588,2,457,8,17045505,-24,-16, - 17043736,-8,1118488,1793,107,17043202,1,169021201,2049,56,25,33883396,101450758,6404,459011,447,34668804,2,2049,444, - 524545,389,447,302056196,389,659969,1,0,13,151,100,117,112,0,466,15,151,100,114,111, - 112,0,473,17,151,115,119,97,112,0,481,25,151,99,97,108,108,0,489,27, - 151,101,113,63,0,497,29,151,45,101,113,63,0,504,31,151,108,116,63,0, - 512,33,151,103,116,63,0,519,35,151,102,101,116,99,104,0,526,37,151,115, - 116,111,114,101,0,535,39,151,43,0,544,41,151,45,0,549,43,151,42,0, - 554,45,151,47,109,111,100,0,559,47,151,97,110,100,0,567,49,151,111,114, - 0,574,51,151,120,111,114,0,580,53,151,115,104,105,102,116,0,587,345,157, - 112,117,115,104,0,596,348,157,112,111,112,0,604,342,157,48,59,0,611,56, - 145,102,101,116,99,104,45,110,101,120,116,0,617,59,145,115,116,111,114,101, - 45,110,101,120,116,0,631,228,145,115,58,116,111,45,110,117,109,98,101,114, - 0,645,95,145,115,58,101,113,63,0,660,81,145,115,58,108,101,110,103,116, - 104,0,669,64,145,99,104,111,111,115,101,0,681,74,151,105,102,0,691,72, - 145,45,105,102,0,697,267,157,115,105,103,105,108,58,40,0,704,126,133,67, - 111,109,112,105,108,101,114,0,715,3,133,72,101,97,112,0,727,107,145,44, - 0,735,121,145,115,44,0,740,127,157,59,0,746,301,157,91,0,751,317,157, - 93,0,756,2,133,68,105,99,116,105,111,110,97,114,121,0,761,158,145,100, - 58,108,105,110,107,0,775,159,145,100,58,120,116,0,785,161,145,100,58,99, - 108,97,115,115,0,793,163,145,100,58,110,97,109,101,0,804,145,145,99,108, - 97,115,115,58,119,111,114,100,0,814,157,145,99,108,97,115,115,58,109,97, - 99,114,111,0,828,133,145,99,108,97,115,115,58,100,97,116,97,0,843,165, - 145,100,58,97,100,100,45,104,101,97,100,101,114,0,857,268,157,115,105,103, - 105,108,58,35,0,873,274,157,115,105,103,105,108,58,58,0,884,293,157,115, - 105,103,105,108,58,38,0,895,272,157,115,105,103,105,108,58,36,0,906,332, - 157,114,101,112,101,97,116,0,917,334,157,97,103,97,105,110,0,927,379,145, - 105,110,116,101,114,112,114,101,116,0,936,200,145,100,58,108,111,111,107,117, - 112,0,949,151,145,99,108,97,115,115,58,112,114,105,109,105,116,105,118,101, - 0,961,4,133,86,101,114,115,105,111,110,0,980,426,145,105,0,991,107,145, - 100,0,996,420,145,114,0,1001,205,133,66,97,115,101,0,1006,351,145,101,114, + 85000450,1,656912,133,178,268505089,63,62,285281281,0,63,2063,10,101384453,0,9,10,68485378,255,18350338, + 8,255,1045,18350338,16,255,1045,352393217,24,255,10,268289,-24,68229121,-16,68229121,-8,2577,2049,56, + 25,459011,97,524546,97,302256641,1,10,16974595,0,50529798,10,25,524547,116,50529798,10,17108738,1,251790353, + 101777669,1,17565186,107,524545,111,64,167838467,-1,134287105,3,59,659457,3,459023,128,2049,56,25,2049, + 128,1793,135,2049,135,117506307,0,128,0,524545,26,133,168820993,0,147,1642241,147,134283523,11,133, + 1793,128,524545,2049,128,1793,128,16846593,147,161,178,1793,64,16846593,147,133,178,1793,64,7, + 10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,192,17108737,3,2,524559,128,2049,128, + 2049,128,524545,0,128,524545,0,128,2049,142,168820998,2,595,1230,167841793,211,9,17826049,0,211, + 2,15,25,524546,188,134287105,212,116,2305,213,459023,221,134287361,212,216,659201,211,10,659969,7, + 2049,56,25,17694978,58,237,9,84152833,48,319750404,236,117507601,239,184618754,45,25,16974851,-1,168886532,1, + 134284289,1,252,134284289,0,239,660227,32,0,0,115,105,103,105,108,58,115,0,285278479,269, + 6,2576,524546,102,1641217,1,167838467,266,2049,281,2049,277,524545,269,231,17826050,268,0,2572,2563, + 2049,259,1793,154,459023,154,1793,307,17760513,166,3,190,8,251727617,3,2,2049,180,16,168820993, + -1,147,2049,180,2575,2049,231,17563906,0,321,9,1793,154,285282049,3,2,134287105,147,318,524545, + 1793,128,16846593,3,0,128,8,659201,3,524545,26,133,17043201,3,11,2049,133,2049,128,268505092, + 147,1642241,147,656131,659201,3,524545,11,133,2049,128,459009,23,133,459009,55,133,459009,19,133, + 459009,21,133,1793,9,10,524546,180,134284303,182,1807,1230,1642241,268,285282049,390,1,459012,385,117509889, + 211,385,134287105,390,231,16845825,0,398,382,1793,64,1793,412,17826050,390,287,8,117506305,391,401, + 64,2116,11340,11700,11400,13685,13104,12432,12402,9603,9801,11514,11413,11110,12528,11948,10302,13340,9700,13455, + 12753,10500,10670,12654,13320,11960,13908,10088,10605,11865,11025,0,2049,231,987393,1,1793,128,524546,488, + 2049,486,2049,486,17891588,2,488,8,17045505,-24,-16,17043736,-8,1118488,1793,128,17043202,1,169021201,2049, + 56,25,33883396,101450758,6404,459011,478,34668804,2,2049,475,524545,420,478,302056196,420,659969,1,114,101, + 116,114,111,46,109,117,114,105,0,0,13,172,497,0,100,117,112,0,508,15, + 172,497,0,100,114,111,112,0,517,17,172,497,0,115,119,97,112,0,527,25, + 172,497,0,99,97,108,108,0,537,27,172,497,0,101,113,63,0,547,29,172, + 497,0,45,101,113,63,0,556,31,172,497,0,108,116,63,0,566,33,172,497, + 0,103,116,63,0,575,35,172,497,0,102,101,116,99,104,0,584,37,172,497, + 0,115,116,111,114,101,0,595,39,172,497,0,43,0,606,41,172,497,0,45, + 0,613,43,172,497,0,42,0,620,45,172,497,0,47,109,111,100,0,627,47, + 172,497,0,97,110,100,0,637,49,172,497,0,111,114,0,646,51,172,497,0, + 120,111,114,0,654,53,172,497,0,115,104,105,102,116,0,663,376,178,497,0, + 112,117,115,104,0,674,379,178,497,0,112,111,112,0,684,373,178,497,0,48, + 59,0,693,56,166,497,0,102,101,116,99,104,45,110,101,120,116,0,701,59, + 166,497,0,115,116,111,114,101,45,110,101,120,116,0,717,259,166,497,0,115, + 58,116,111,45,110,117,109,98,101,114,0,733,116,166,497,0,115,58,101,113, + 63,0,750,102,166,497,0,115,58,108,101,110,103,116,104,0,761,64,166,497, + 0,99,104,111,111,115,101,0,775,74,172,497,0,105,102,0,787,72,166,497, + 0,45,105,102,0,795,298,178,497,0,115,105,103,105,108,58,40,0,804,147, + 154,497,0,67,111,109,112,105,108,101,114,0,817,3,154,497,0,72,101,97, + 112,0,831,128,166,497,0,44,0,841,142,166,497,0,115,44,0,848,148,178, + 497,0,59,0,856,332,178,497,0,91,0,863,348,178,497,0,93,0,870,2, + 154,497,0,68,105,99,116,105,111,110,97,114,121,0,877,179,166,497,0,100, + 58,108,105,110,107,0,893,180,166,497,0,100,58,120,116,0,905,182,166,497, + 0,100,58,99,108,97,115,115,0,915,188,166,497,0,100,58,110,97,109,101, + 0,928,166,166,497,0,99,108,97,115,115,58,119,111,114,100,0,940,178,166, + 497,0,99,108,97,115,115,58,109,97,99,114,111,0,956,154,166,497,0,99, + 108,97,115,115,58,100,97,116,97,0,973,190,166,497,0,100,58,97,100,100, + 45,104,101,97,100,101,114,0,989,299,178,497,0,115,105,103,105,108,58,35, + 0,1007,305,178,497,0,115,105,103,105,108,58,58,0,1020,324,178,497,0,115, + 105,103,105,108,58,38,0,1033,303,178,497,0,115,105,103,105,108,58,36,0, + 1046,363,178,497,0,114,101,112,101,97,116,0,1059,365,178,497,0,97,103,97, + 105,110,0,1071,410,166,497,0,105,110,116,101,114,112,114,101,116,0,1082,231, + 166,497,0,100,58,108,111,111,107,117,112,0,1097,172,166,497,0,99,108,97, + 115,115,58,112,114,105,109,105,116,105,118,101,0,1111,4,154,497,0,86,101, + 114,115,105,111,110,0,1132,457,166,497,0,105,0,1145,128,166,497,0,100,0, + 1152,451,166,497,0,114,0,1159,236,154,497,0,66,97,115,101,0,1166,90,166, + 497,0,112,97,99,107,0,1176,76,166,497,0,117,110,112,97,99,107,0,1186, + 184,166,497,0,100,58,115,111,117,114,99,101,0,1198,382,166,497,0,101,114, 114,58,110,111,116,102,111,117,110,100,0,115,116,111,114,101,0,110,0,101, 116,0,101,114,118,101,0,115,0,63,0,0,0,63,64,91,92,93,94,96, 123,124,125,126,0,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, @@ -77,422 +87,476 @@ CELL ngaImage[] = { 1793,9674,9664,9688,202107,379,351,1030,1535,0,10,1,10,2,10, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1212,1545,166, + 0,0,69,79,77,0,1,-3,15,10,1536,1560,166,0,0,100,101,112,116,104, + 0,1,-1,15,10,1549,1576,166,0,0,100,58,108,97,115,116,0,1,2,15, + 10,1564,1595,166,0,0,100,58,108,97,115,116,46,120,116,0,2049,1576,2049,180, + 15,10,1580,1619,166,0,0,100,58,108,97,115,116,46,99,108,97,115,115,0, + 2049,1576,2049,182,15,10,1601,1642,166,0,0,100,58,108,97,115,116,46,110,97, + 109,101,0,2049,1576,2049,188,10,1625,1660,166,0,0,114,101,99,108,97,115,115, + 0,2049,1576,2049,182,16,10,1647,1681,166,0,0,105,109,109,101,100,105,97,116, + 101,0,1,178,2049,1660,10,1666,1696,166,0,0,100,97,116,97,0,1,154,2049, + 1660,10,1686,1716,166,0,0,112,114,105,109,105,116,105,118,101,0,1,172,2049, + 1660,10,1701,1731,178,0,0,104,111,111,107,0,1,1793,2049,128,1,3,15,1, + 1,17,2049,128,10,1721,1758,166,0,0,115,101,116,45,104,111,111,107,0,1, + 1,17,16,10,1744,1775,166,0,0,117,110,104,111,111,107,0,1,1,17,2, + 1,1,17,4,16,10,1763,1792,178,0,0,40,0,10,1785,1800,178,0,0,41, + 0,10,1793,1818,166,0,0,99,111,109,112,105,108,101,58,108,105,116,0,1, + 1,2049,128,2049,128,10,1801,1843,166,0,0,99,111,109,112,105,108,101,58,106, + 117,109,112,0,1,1793,2049,128,2049,128,10,1825,1868,166,0,0,99,111,109,112, + 105,108,101,58,99,97,108,108,0,1,2049,2049,128,2049,128,10,1850,1892,166,0, + 0,99,111,109,112,105,108,101,58,114,101,116,0,1,10,2049,128,10,1875,1913, + 166,0,0,99,111,109,112,105,108,105,110,103,63,0,1,147,15,10,1897,1930, + 178,0,0,115,105,103,105,108,58,96,0,2049,259,2049,128,10,1917,1948,178,0, + 0,115,105,103,105,108,58,92,0,2049,457,10,1935,1964,178,0,0,115,105,103, + 105,108,58,94,0,2049,451,10,1951,1977,166,0,0,104,101,114,101,0,1,3, + 15,10,1967,1994,178,0,0,115,105,103,105,108,58,64,0,2049,231,2049,180,15, + 2049,1913,1793,2010,1,3841,2049,128,2049,128,10,1,2003,1793,2016,15,10,1,2014,2049, + 64,10,1981,2034,178,0,0,115,105,103,105,108,58,33,0,2049,231,2049,180,15, + 2049,1913,1793,2050,1,4097,2049,128,2049,128,10,1,2043,1793,2056,16,10,1,2054,2049, + 64,10,2021,2075,166,0,0,100,58,99,114,101,97,116,101,0,1793,2077,1,154, + 1,0,2049,190,2049,1977,2049,1576,2049,180,16,10,2061,2102,166,0,0,118,97,114, + 45,110,0,2049,2075,2049,128,10,2091,2116,166,0,0,118,97,114,0,134284289,0,2102, + 10,2107,2131,166,0,0,99,111,110,115,116,0,2049,2075,2049,1576,2049,180,16,10, + 2120,2149,172,0,0,116,117,99,107,0,100926722,10,2139,2161,172,0,0,111,118,101, + 114,0,67502597,10,2151,2172,172,0,0,110,105,112,0,772,10,2163,2189,172,0,0, + 100,114,111,112,45,112,97,105,114,0,771,10,2174,2201,172,0,0,63,100,117, + 112,0,6402,10,2191,2217,166,0,0,100,117,112,45,112,97,105,114,0,67502597,67502597, + 10,2203,2229,166,0,0,100,105,112,0,525572,6,10,2220,2241,166,0,0,115,105, + 112,0,67502597,1,25,2049,2229,10,2232,2255,166,0,0,98,105,0,1,2241,2049,2229, + 8,10,2247,2270,166,0,0,98,105,42,0,1,2229,2049,2229,8,10,2261,2285,166, + 0,0,98,105,64,0,2,2049,2270,10,2276,2298,166,0,0,116,114,105,0,1793, + 2307,1,2241,2049,2229,2049,2241,10,1,2300,2049,2229,8,10,2289,2323,166,0,0,116, + 114,105,42,0,1793,2340,1793,2333,4,1,2229,2049,2229,10,1,2327,2049,2229,2049,2229, + 10,1,2325,2049,2229,8,10,2313,2356,166,0,0,116,114,105,64,0,2,2,2049, + 2323,10,2346,2372,166,0,0,119,104,105,108,101,0,1793,2381,525570,1639430,3,1,2374, + 7,10,1,2374,8,3,10,2361,2397,166,0,0,117,110,116,105,108,0,1793,2408, + 525570,385942534,-1,25,3,1,2399,7,10,1,2399,8,3,10,2386,2426,166,0,0,102, + 111,114,101,118,101,114,0,1793,2430,8,10,1,2428,2049,2241,1,2426,7,10,2413, + 2449,166,0,0,116,105,109,101,115,0,1793,2461,4,25,33886721,1,2053,1542,1,2452, + 7,10,1,2451,8,3,10,2438,2479,178,0,0,115,105,103,105,108,58,124,0, + 2049,231,1793,2487,2049,180,15,10,1,2483,1793,2495,2049,182,15,10,1,2491,2049,2255, + 2049,1913,1793,2510,1,154,2049,2229,2049,1868,10,1,2503,1,25,2049,64,10,2466,2527, + 166,0,0,84,82,85,69,0,1,-1,10,2517,2541,166,0,0,70,65,76,83, + 69,0,1,0,10,2530,2554,166,0,0,99,97,115,101,0,1793,2559,67502597,11,10, + 1,2556,2049,2229,4,1793,2571,772,8,2049,2527,10,1,2566,1793,2579,3,2049,2541,10, + 1,2575,2049,64,25,6,3,3,10,2544,2600,166,0,0,115,58,99,97,115,101, + 0,1793,2606,67502597,2049,116,10,1,2602,2049,2229,4,1793,2618,772,8,2049,2527,10,1, + 2613,1793,2626,3,2049,2541,10,1,2622,2049,64,25,6,3,3,10,2588,2644,166,0, + 0,110,111,116,0,1,-1,23,10,2635,2659,166,0,0,108,116,101,113,63,0, + 2049,2217,101516555,22,10,2648,2675,166,0,0,103,116,101,113,63,0,4,2049,2659,10, + 2664,2690,166,0,0,110,58,77,65,88,0,1,-5,15,10,2679,2705,166,0,0, + 110,58,77,73,78,0,1,-4,15,10,2694,2722,166,0,0,110,58,122,101,114, + 111,63,0,1,0,11,10,2709,2740,166,0,0,110,58,45,122,101,114,111,63, + 0,1,0,12,10,2726,2761,166,0,0,110,58,110,101,103,97,116,105,118,101, + 63,0,1,0,13,10,2744,2782,166,0,0,110,58,112,111,115,105,116,105,118, + 101,63,0,1,-1,14,10,2765,2812,166,0,0,110,58,115,116,114,105,99,116, + 108,121,45,112,111,115,105,116,105,118,101,63,0,1,0,14,10,2786,2829,166, + 0,0,110,58,101,118,101,110,63,0,1,2,20,3,2049,2722,10,2816,2848,166, + 0,0,110,58,111,100,100,63,0,2049,2829,2049,2644,10,2836,2862,166,0,0,105, + 102,59,0,67502597,1,74,2049,2229,25,6,771,10,2853,2881,166,0,0,45,105,102, + 59,0,67502597,1,72,2049,2229,2049,2644,25,6,771,10,2871,2901,172,0,0,114,111, + 116,0,67503109,10,2892,2910,172,0,0,47,0,197652,10,2903,2921,172,0,0,109,111, + 100,0,788,10,2912,2934,166,0,0,110,58,112,111,119,0,1,1,4,1793,2942, + 67502597,19,10,1,2939,2049,2449,772,10,2923,2962,166,0,0,110,58,110,101,103,97, + 116,101,0,1,-1,19,10,2948,2980,166,0,0,110,58,115,113,117,97,114,101, + 0,4866,10,2966,2994,166,0,0,110,58,115,113,114,116,0,1,1,1793,3012,2049, + 2217,197652,67502597,18,1,2,197652,25,17,1,2998,7,10,1,2998,8,772,10,2982,3028, + 166,0,0,110,58,109,105,110,0,2049,2217,13,1793,3035,3,10,1,3033,1793,3041, + 772,10,1,3039,2049,64,10,3017,3057,166,0,0,110,58,109,97,120,0,2049,2217, + 14,1793,3064,3,10,1,3062,1793,3070,772,10,1,3068,2049,64,10,3046,3086,166,0, + 0,110,58,97,98,115,0,2,2049,2761,1,2962,9,10,3075,3106,166,0,0,110, + 58,108,105,109,105,116,0,4,5,2049,3028,6,2049,3057,10,3093,3125,166,0,0, + 110,58,105,110,99,0,659713,1,10,3114,3139,166,0,0,110,58,100,101,99,0, + 659969,1,10,3128,3158,166,0,0,110,58,98,101,116,119,101,101,110,63,0,67503109, + 1793,3166,67503109,67503109,2049,3106,10,1,3161,2049,2241,11,10,3142,3187,166,0,0,83,99, + 111,112,101,76,105,115,116,0,10725,10831,10,3172,3198,166,0,0,123,123,0,2049, + 1576,2,1,3187,2049,59,16,10,3190,3225,166,0,0,45,45,45,114,101,118,101, + 97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,166,0,0,125, + 125,0,1,3187,2049,56,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281, + 3841,3187,1793,3276,1,2,983567,1,3187,2049,3125,1641487,3,1,3265,7,10,1,3263,8, + 16,10,1,3259,2049,64,10,3233,3296,166,0,0,66,121,116,101,0,10,3286,3312, + 166,0,0,98,121,116,101,45,109,97,115,107,0,1,255,4,1,8,19,2, + 1793,3326,2049,2962,24,21,10,1,3321,2049,2229,24,10,3297,3345,166,0,0,114,101, + 112,108,97,99,101,0,1,0,1793,3374,1793,3369,1793,3364,1793,3359,3,3841,3296,10, + 1,3355,2049,2229,10,1,3353,2049,2229,10,1,3351,2049,2229,10,1,3349,2049,2554,1, + 1,1793,3400,1793,3395,1793,3390,3,3841,3296,10,1,3386,2049,2229,10,1,3384,2049,2229, + 10,1,3382,2049,2554,1,2,1793,3419,1793,3414,3,3841,3296,10,1,3410,2049,2229,10, + 1,3408,2049,2554,1,3,1793,3431,3,3841,3296,10,1,3427,2049,2554,3,10,3233,3460, + 166,0,0,98,58,116,111,45,98,121,116,101,45,97,100,100,114,101,115,115, + 0,1,4,19,10,3437,3477,166,0,0,98,58,102,101,116,99,104,0,1,4, + 20,4,1,4,20,67503109,17,15,4,2049,3312,10,3464,3504,166,0,0,98,58,115, + 116,111,114,101,0,4,4097,3296,1,4,20,4,1793,3518,2,15,2049,76,10,1, + 3513,2049,2229,2049,3345,2049,90,4,16,10,3491,3542,166,0,0,104,58,102,101,116, + 99,104,0,1793,3547,2049,3477,10,1,3544,1793,3559,2049,3125,2049,3477,1,-8,24,10, + 1,3551,2049,2255,22,10,3529,3578,166,0,0,104,58,115,116,111,114,101,0,2049, + 2217,1793,3586,1,255,21,10,1,3582,2049,2229,2049,3504,2049,3125,1793,3603,1,8,24, + 1,255,21,10,1,3596,2049,2229,2049,3504,10,3565,3623,166,0,0,119,58,102,101, + 116,99,104,0,1,4,197652,15,10,3610,3641,166,0,0,119,58,115,116,111,114, + 101,0,1,4,197652,16,10,3628,3664,166,0,0,119,58,102,101,116,99,104,45, + 110,101,120,116,0,2,1,4,17,4,2049,3623,10,3646,3690,166,0,0,104,58, + 102,101,116,99,104,45,110,101,120,116,0,2,1,2,17,4,2049,3542,10,3672, + 3716,166,0,0,98,58,102,101,116,99,104,45,110,101,120,116,0,2,1,1, + 17,4,2049,3477,10,3698,3742,166,0,0,119,58,115,116,111,114,101,45,110,101, + 120,116,0,2,1,4,17,1,3641,2049,2229,10,3724,3769,166,0,0,104,58,115, + 116,111,114,101,45,110,101,120,116,0,2,1,2,17,1,3578,2049,2229,10,3751, + 3796,166,0,0,98,58,115,116,111,114,101,45,110,101,120,116,0,2,1,1, + 17,1,3504,2049,2229,10,3778,3819,166,0,0,118,58,105,110,99,45,98,121,0, + 1793,3823,4367,10,1,3821,2049,2241,16,10,3805,3843,166,0,0,118,58,100,101,99, + 45,98,121,0,1793,3847,1180687,10,1,3845,2049,2241,16,10,3829,3864,166,0,0,118, + 58,105,110,99,0,1,1,4,2049,3819,10,3853,3881,166,0,0,118,58,100,101, + 99,0,1,1,4,2049,3843,10,3870,3900,166,0,0,118,58,108,105,109,105,116, + 0,251790597,1542,2049,3106,4100,10,3887,3916,166,0,0,118,58,111,110,0,2049,2527,4100, + 10,3906,3931,166,0,0,118,58,111,102,102,0,2049,2541,4100,10,3920,3946,166,0, + 0,97,108,108,111,116,0,1,3,2049,3819,10,3935,3967,166,0,0,118,58,112, + 114,101,115,101,114,118,101,0,983556,1793,3975,1,25,2049,2229,10,1,3970,2049,2229, + 4100,10,3951,3995,166,0,0,118,58,117,112,100,97,116,101,0,4,1793,4002,15, + 4,8,10,1,3998,2049,2241,16,10,3981,4018,166,0,0,99,111,112,121,0,1793, + 4027,285278725,1,33951492,268767489,1,6,10,1,4020,2049,2449,771,10,4008,4044,154,0,0,115, + 116,97,114,116,0,0,10,4033,4055,154,0,0,101,110,100,0,0,10,4046,4072, + 166,0,0,116,101,114,109,105,110,97,116,101,0,1,0,3841,4055,16,10,4008, + 4096,166,0,0,98,117,102,102,101,114,58,115,116,97,114,116,0,3841,4044,10, + 4078,4115,166,0,0,98,117,102,102,101,114,58,101,110,100,0,3841,4055,10,4099, + 4134,166,0,0,98,117,102,102,101,114,58,97,100,100,0,3841,4055,16,1,4055, + 2049,3864,2049,4072,10,4118,4160,166,0,0,98,117,102,102,101,114,58,103,101,116, + 0,1,4055,2049,3881,3841,4055,15,2049,4072,10,4144,4188,166,0,0,98,117,102,102, + 101,114,58,101,109,112,116,121,0,3841,4044,4097,4055,2049,4072,10,4170,4212,166,0, + 0,98,117,102,102,101,114,58,115,105,122,101,0,3841,4055,3841,4044,18,10,4195, + 4234,166,0,0,98,117,102,102,101,114,58,115,101,116,0,4097,4044,2049,4188,10, + 4218,4260,166,0,0,98,117,102,102,101,114,58,112,114,101,115,101,114,118,101, + 0,3841,4044,3841,4055,1793,4273,1,25,2049,2229,4097,4044,10,1,4266,2049,2229,4097,4055, + 10,4239,4297,154,0,0,84,101,109,112,83,116,114,105,110,103,115,0,32,4280, + 4317,154,0,0,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,4298, + 4331,166,0,0,83,84,82,73,78,71,83,0,2049,1545,3841,4297,3841,4317,19,18, + 10,4318,4353,154,0,0,67,117,114,114,101,110,116,0,31,10,4340,4370,166,0, + 0,115,58,112,111,105,110,116,101,114,0,3841,4353,3841,4317,19,2049,4331,17,10, + 4355,4391,166,0,0,115,58,110,101,120,116,0,1,4353,2049,3864,3841,4353,3841,4297, + 11,1793,4407,1,0,4097,4353,10,1,4402,9,10,4318,4423,166,0,0,115,58,116, + 101,109,112,0,2,2049,102,2049,3125,2049,4370,4,2049,4018,2049,4370,2049,4391,10,4411, + 4451,166,0,0,115,58,101,109,112,116,121,0,2049,4370,2049,4391,1,0,67502597,16, + 10,4438,4472,166,0,0,115,58,115,107,105,112,0,6,1793,4480,68223234,1,786703,0, + 10,1,4475,2049,2372,2049,3139,5,10,4460,4500,166,0,0,115,58,107,101,101,112, + 0,2049,1913,1793,4509,1,4472,2049,1868,10,1,4504,9,2049,1977,1,142,2049,2229,2049, + 154,10,4488,4534,178,0,0,115,105,103,105,108,58,39,0,2049,1913,1,4500,1, + 4423,2049,64,10,4521,4556,166,0,0,115,58,102,101,116,99,104,0,17,15,10, + 4543,4572,166,0,0,115,58,115,116,111,114,101,0,17,16,10,4559,4587,166,0, + 0,115,58,99,104,111,112,0,2049,4423,2,2049,102,67502597,17,2049,3139,1,0,4, + 16,10,4575,4616,166,0,0,115,58,114,101,118,101,114,115,101,0,1793,4658,2, + 2049,4423,2049,4234,1,102,1793,4634,2,2049,102,17,2049,3139,10,1,4627,2049,2255,4, + 1793,4648,2,15,2049,4134,2049,3139,10,1,4641,2049,2449,3,2049,4096,2049,4423,10,1, + 4618,2049,4260,10,4601,4678,166,0,0,115,58,112,114,101,112,101,110,100,0,2049, + 4423,1793,4702,2,2049,102,17,1793,4694,2,2049,102,2049,3125,10,1,4688,2049,2229,4, + 2049,4018,10,1,4682,2049,2241,10,4663,4721,166,0,0,115,58,97,112,112,101,110, + 100,0,4,2049,4678,10,4707,4741,166,0,0,115,58,102,111,114,45,101,97,99, + 104,0,1793,4756,67502597,6415,3,67502597,67502597,251987205,2054,101777670,1,1,4743,7,10,1,4743,8, + 771,10,4725,4779,166,0,0,115,58,105,110,100,101,120,47,99,104,97,114,0, + 4,1793,4793,68223234,1,6415,33883396,101450758,6404,3,1,4782,7,10,1,4782,1793,4802,18,2049, + 3139,772,10,1,4797,1793,4811,2049,102,67502597,11,10,1,4806,2049,2298,1793,4821,3,1, + -1,10,1,4817,9,10,4761,4847,166,0,0,115,58,99,111,110,116,97,105,110, + 115,47,99,104,97,114,63,0,2049,4779,1,-1,12,10,4825,4865,166,0,0,115, + 58,104,97,115,104,0,1,5381,4,1793,4873,286458116,33,10,1,4870,2049,4741,10,4853, + 4887,154,0,0,83,114,99,0,0,4878,4897,154,0,0,84,97,114,0,0,4888, + 4907,154,0,0,80,97,100,0,0,4898,4915,154,0,0,73,0,0,4908,4923,154, + 0,0,70,0,0,4916,4932,154,0,0,65,116,0,0,4924,4948,166,0,0,116, + 101,114,109,105,110,97,116,101,0,1,0,3841,4907,3841,4897,2049,102,17,16,10, + 4933,4972,166,0,0,101,120,116,114,97,99,116,0,3841,4887,3841,4915,17,3841,4907, + 3841,4897,2049,102,2049,4018,10,4959,4999,166,0,0,99,111,109,112,97,114,101,0, + 3841,4907,3841,4897,2049,116,3841,4923,22,4097,4923,3841,4923,1793,5019,3841,4915,4097,4932,10, + 1,5014,2049,72,10,4986,5034,166,0,0,110,101,120,116,0,1,4915,2049,3864,10, + 4853,5063,166,0,0,115,58,99,111,110,116,97,105,110,115,47,115,116,114,105, + 110,103,63,0,4097,4897,4097,4887,2049,4451,4097,4907,1,0,4097,4915,1,0,4097,4923, + 3841,4887,2049,102,1793,5094,2049,4972,2049,4948,2049,4999,2049,5034,10,1,5085,2049,2449,3841, + 4923,10,5039,5110,154,0,0,83,116,114,0,0,5101,5124,166,0,0,101,120,116, + 114,97,99,116,0,2049,2217,3841,5110,4,2049,4018,3841,-1,67502597,17,1,0,4,16, + 10,5111,5151,166,0,0,99,104,101,99,107,0,1,5124,2049,2229,1793,5162,1,3125, + 2049,2229,10,1,5157,2049,2229,3841,5110,2049,4865,67502597,11,10,5140,5187,166,0,0,108, + 111,99,97,116,105,111,110,0,67503109,67503109,1793,5220,1793,5215,4,1793,5201,67502597,2049,2722, + 21,10,1,5196,2049,2229,4,1793,5211,772,2,10,1,5208,9,10,1,5193,2049,2229, + 10,1,5191,2049,2229,10,5173,5236,166,0,0,115,101,116,117,112,0,2049,4451,4097, + 5110,1,0,67503109,67503109,1,102,1,4865,2049,2255,2049,4451,2049,4234,1793,5260,67502597,2049,102, + 10,1,5256,2049,2229,4,10,5039,5286,166,0,0,115,58,105,110,100,101,120,47, + 115,116,114,105,110,103,0,67502597,1793,5312,1793,5305,2049,5236,1793,5300,2049,5151,2049,5187, + 10,1,5295,2049,2449,10,1,5291,2049,4260,771,3,10,1,5289,2049,2229,18,1,2, + 18,1,-1,2049,3057,10,5266,5339,166,0,0,115,58,102,105,108,116,101,114,0, + 1793,5367,2049,4451,2049,4234,4,1793,5359,2049,2217,4,8,1,4134,1,15,2049,64,10, + 1,5348,2049,4741,3,2049,4096,10,1,5341,2049,4260,10,5325,5383,166,0,0,115,58, + 109,97,112,0,1793,5405,2049,4451,2049,4234,4,1793,5397,67502597,8,2049,4134,10,1,5392, + 2049,4741,3,2049,4096,10,1,5385,2049,4260,10,5372,5424,166,0,0,115,58,115,117, + 98,115,116,114,0,1793,5430,17,2049,4451,10,1,5426,2049,2229,1793,5442,67502597,1,4018, + 2049,2229,10,1,5436,2049,2241,67502597,1793,5455,17,1,0,4,16,10,1,5449,2049,2229, + 10,5410,5473,166,0,0,115,58,114,105,103,104,116,0,67502597,2049,102,67502597,18,4, + 2049,5424,10,5460,5494,166,0,0,115,58,108,101,102,116,0,1,0,4,2049,5424, + 10,5482,5520,166,0,0,115,58,98,101,103,105,110,115,45,119,105,116,104,63, + 0,2,2049,102,1,17,2049,2229,2049,5494,2049,116,10,5500,5550,166,0,0,115,58, + 101,110,100,115,45,119,105,116,104,63,0,2,2049,102,1,17,2049,2229,2049,5473, + 2049,116,10,5532,5574,166,0,0,115,58,99,111,112,121,0,67502597,2049,102,2049,3125, + 2049,4018,10,5562,5596,166,0,0,115,58,68,73,71,73,84,83,0,2049,4472,48, + 49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,0,1,5598,10,5582, + 5641,166,0,0,115,58,65,83,67,73,73,45,76,79,87,69,82,67,65,83, + 69,0,2049,4472,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, + 113,114,115,116,117,118,119,120,121,122,0,1,5643,10,5618,5696,166,0,0,115, + 58,65,83,67,73,73,45,85,80,80,69,82,67,65,83,69,0,2049,4472,65, + 66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85, + 86,87,88,89,90,0,1,5698,10,5673,5749,166,0,0,115,58,65,83,67,73, + 73,45,76,69,84,84,69,82,83,0,2049,4472,97,98,99,100,101,102,103,104, + 105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66, + 67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86, + 87,88,89,90,0,1,5751,10,5728,5826,166,0,0,115,58,80,85,78,67,84, + 85,65,84,73,79,78,0,2049,4472,95,33,34,35,36,37,38,39,40,41,42, + 43,44,45,46,47,58,59,60,61,62,63,64,91,92,93,94,96,123,124,125, + 126,0,1,5828,1,95,67502597,16,10,5807,5886,154,0,0,115,58,87,72,73,84, + 69,83,80,65,67,69,0,32,9,10,13,0,5868,5898,178,0,0,39,0,1, + 4451,2049,166,10,5891,5910,178,0,0,36,0,1,0,2049,154,10,5903,0,154,0, + 0,65,83,67,73,73,58,78,85,76,0,5915,27,154,0,0,65,83,67,73, + 73,58,69,83,67,0,5930,8,154,0,0,65,83,67,73,73,58,66,83,0, + 5945,9,154,0,0,65,83,67,73,73,58,72,84,0,5959,10,154,0,0,65, + 83,67,73,73,58,76,70,0,5973,11,154,0,0,65,83,67,73,73,58,86, + 84,0,5987,12,154,0,0,65,83,67,73,73,58,70,70,0,6001,13,154,0, + 0,65,83,67,73,73,58,67,82,0,6015,32,154,0,0,65,83,67,73,73, + 58,83,80,65,67,69,0,6029,127,154,0,0,65,83,67,73,73,58,68,69, + 76,0,6046,1,154,0,0,65,83,67,73,73,58,83,79,72,0,6061,2,154, + 0,0,65,83,67,73,73,58,83,84,88,0,6076,3,154,0,0,65,83,67, + 73,73,58,69,84,88,0,6091,4,154,0,0,65,83,67,73,73,58,69,79, + 84,0,6106,5,154,0,0,65,83,67,73,73,58,69,78,81,0,6121,6,154, + 0,0,65,83,67,73,73,58,65,67,75,0,6136,7,154,0,0,65,83,67, + 73,73,58,66,69,76,0,6151,14,154,0,0,65,83,67,73,73,58,83,79, + 0,6166,15,154,0,0,65,83,67,73,73,58,83,73,0,6180,16,154,0,0, + 65,83,67,73,73,58,68,76,69,0,6194,17,154,0,0,65,83,67,73,73, + 58,68,67,49,0,6209,18,154,0,0,65,83,67,73,73,58,68,67,50,0, + 6224,19,154,0,0,65,83,67,73,73,58,68,67,51,0,6239,20,154,0,0, + 65,83,67,73,73,58,68,67,52,0,6254,21,154,0,0,65,83,67,73,73, + 58,78,65,75,0,6269,22,154,0,0,65,83,67,73,73,58,83,89,78,0, + 6284,23,154,0,0,65,83,67,73,73,58,69,84,66,0,6299,24,154,0,0, + 65,83,67,73,73,58,67,65,78,0,6314,25,154,0,0,65,83,67,73,73, + 58,69,77,0,6329,26,154,0,0,65,83,67,73,73,58,83,85,66,0,6343, + 28,154,0,0,65,83,67,73,73,58,70,83,0,6358,29,154,0,0,65,83, + 67,73,73,58,71,83,0,6372,30,154,0,0,65,83,67,73,73,58,82,83, + 0,6386,31,154,0,0,65,83,67,73,73,58,85,83,0,6400,6432,166,0,0, + 99,58,108,111,119,101,114,99,97,115,101,63,0,1,97,1,122,2049,3158,10, + 6414,6457,166,0,0,99,58,117,112,112,101,114,99,97,115,101,63,0,1,65, + 1,90,2049,3158,10,6439,6479,166,0,0,99,58,108,101,116,116,101,114,63,0, + 1,6432,1,6457,2049,2255,22,10,6464,6501,166,0,0,99,58,100,105,103,105,116, + 63,0,1,48,1,57,2049,3158,10,6487,6524,166,0,0,99,58,118,105,115,105, + 98,108,101,63,0,1,32,1,126,2049,3158,10,6508,6545,166,0,0,99,58,118, + 111,119,101,108,63,0,2049,4472,97,101,105,111,117,65,69,73,79,85,0,1, + 6547,4,2049,4847,10,6531,6582,166,0,0,99,58,99,111,110,115,111,110,97,110, + 116,63,0,2,2049,6479,1793,6592,2049,6545,2049,2644,10,1,6587,1793,6600,3,2049,2541, + 10,1,6596,2049,64,10,6564,6624,166,0,0,99,58,119,104,105,116,101,115,112, + 97,99,101,63,0,1,5886,4,2049,4847,10,6605,6649,166,0,0,99,58,45,108, + 111,119,101,114,99,97,115,101,63,0,2049,6432,2049,2644,10,6630,6673,166,0,0, + 99,58,45,117,112,112,101,114,99,97,115,101,63,0,2049,6457,2049,2644,10,6654, + 6693,166,0,0,99,58,45,100,105,103,105,116,63,0,2049,6501,2049,2644,10,6678, + 6718,166,0,0,99,58,45,119,104,105,116,101,115,112,97,99,101,63,0,2049, + 6624,2049,2644,10,6698,6740,166,0,0,99,58,45,118,105,115,105,98,108,101,63, + 0,2049,6524,2049,2644,10,6723,6760,166,0,0,99,58,45,118,111,119,101,108,63, + 0,2049,6545,2049,2644,10,6745,6784,166,0,0,99,58,45,99,111,110,115,111,110, + 97,110,116,63,0,2049,6582,2049,2644,10,6765,6805,166,0,0,99,58,116,111,45, + 117,112,112,101,114,0,2,2049,6432,25,3,1,32,18,10,6789,6830,166,0,0, + 99,58,116,111,45,108,111,119,101,114,0,2,2049,6457,25,3,1,32,17,10, + 6814,6856,166,0,0,99,58,116,111,45,115,116,114,105,110,103,0,2049,4472,46, + 0,1,6858,2049,4423,1,37,2049,2241,10,6839,6888,166,0,0,99,58,116,111,103, + 103,108,101,45,99,97,115,101,0,2,2049,6432,1,6805,1,6830,2049,64,10,6869, + 6915,166,0,0,99,58,116,111,45,110,117,109,98,101,114,0,2,2049,6501,1793, + 6924,1,48,18,10,1,6920,1793,6932,3,1,0,10,1,6928,2049,64,10,6898,6953, + 166,0,0,115,58,116,111,45,117,112,112,101,114,0,1,6805,2049,5383,10,6937, + 6974,166,0,0,115,58,116,111,45,108,111,119,101,114,0,1,6830,2049,5383,10, + 6958,6996,166,0,0,115,58,116,114,105,109,45,108,101,102,116,0,2049,4423,1793, + 7010,2049,56,1,6624,1,2740,2049,2255,21,10,1,7000,2049,2372,2049,3139,10,6979,7035, + 166,0,0,115,58,116,114,105,109,45,114,105,103,104,116,0,2049,4423,2049,4616, + 2049,6996,2049,4616,10,7017,7056,166,0,0,115,58,116,114,105,109,0,2049,7035,2049, + 6996,10,7044,7085,154,0,0,82,101,119,114,105,116,101,85,110,100,101,114,115, + 99,111,114,101,115,0,-1,7061,7095,166,0,0,115,117,98,0,1,95,1793,7102, + 1,32,10,1,7099,2049,2554,10,7086,7120,166,0,0,114,101,119,114,105,116,101, + 0,3841,7085,1793,7129,1,7095,2049,5383,10,1,7124,9,10,7107,7145,166,0,0,104, + 97,110,100,108,101,0,1,4534,8,10,7061,7162,178,0,0,115,105,103,105,108, + 58,39,0,2049,7120,2049,7145,10,7149,7185,166,0,0,115,58,115,112,108,105,116, + 47,99,104,97,114,0,2049,2217,2049,4779,772,2049,2217,2049,5494,1,39,2049,2229,10, + 7167,7219,166,0,0,115,58,115,112,108,105,116,47,115,116,114,105,110,103,0, + 2049,2217,2049,5286,2049,3125,772,2049,2217,2049,5494,1,39,2049,2229,10,7199,7250,166,0, + 0,115,58,114,101,112,108,97,99,101,0,67502597,2049,102,2049,1977,16,1793,7266,2049, + 7219,4,2049,1977,15,17,10,1,7258,2049,2229,2049,4678,2049,4721,10,7235,7289,154,0, + 0,83,112,108,105,116,45,79,110,0,0,7275,7302,166,0,0,109,97,116,99, + 104,63,0,3841,7289,11,10,7290,7321,166,0,0,116,101,114,109,105,110,97,116, + 101,0,1,0,67502597,2049,3139,16,10,7306,7338,166,0,0,115,116,101,112,0,1, + 3125,2049,2229,2049,7302,1793,7352,2,2049,128,2049,7321,10,1,7346,9,10,7235,7372,166, + 0,0,115,58,116,111,107,101,110,105,122,101,0,4097,7289,2049,4500,2049,1977,1, + 0,2049,128,1793,7394,2,2049,128,2,1,7338,2049,4741,3,10,1,7384,2049,2229,2049, + 1977,67502597,18,2049,3139,67502597,16,10,7356,7419,154,0,0,78,101,101,100,108,101,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1014,1543,145, - 69,79,77,0,1,-3,15,10,1536,1556,145,100,101,112,116,104,0,1,-1,15, - 10,1547,1570,145,100,58,108,97,115,116,0,1,2,15,10,1560,1587,145,100,58, - 108,97,115,116,46,120,116,0,2049,1570,2049,159,15,10,1574,1609,145,100,58,108, - 97,115,116,46,99,108,97,115,115,0,2049,1570,2049,161,15,10,1593,1630,145,100, - 58,108,97,115,116,46,110,97,109,101,0,2049,1570,2049,163,10,1615,1646,145,114, - 101,99,108,97,115,115,0,2049,1570,2049,161,16,10,1635,1665,145,105,109,109,101, - 100,105,97,116,101,0,1,157,2049,1646,10,1652,1678,145,100,97,116,97,0,1, - 133,2049,1646,10,1670,1696,145,112,114,105,109,105,116,105,118,101,0,1,151,2049, - 1646,10,1683,1709,157,104,111,111,107,0,1,1793,2049,107,1,3,15,1,1,17, - 2049,107,10,1701,1734,145,115,101,116,45,104,111,111,107,0,1,1,17,16,10, - 1722,1749,145,117,110,104,111,111,107,0,1,1,17,2,1,1,17,4,16,10, - 1739,1764,157,40,0,10,1759,1770,157,41,0,10,1765,1786,145,99,111,109,112,105, - 108,101,58,108,105,116,0,1,1,2049,107,2049,107,10,1771,1809,145,99,111,109, - 112,105,108,101,58,106,117,109,112,0,1,1793,2049,107,2049,107,10,1793,1832,145, - 99,111,109,112,105,108,101,58,99,97,108,108,0,1,2049,2049,107,2049,107,10, - 1816,1854,145,99,111,109,112,105,108,101,58,114,101,116,0,1,10,2049,107,10, - 1839,1873,145,99,111,109,112,105,108,105,110,103,63,0,1,126,15,10,1859,1888, - 157,115,105,103,105,108,58,96,0,2049,228,2049,107,10,1877,1904,157,115,105,103, - 105,108,58,92,0,2049,426,10,1893,1918,157,115,105,103,105,108,58,94,0,2049, - 420,10,1907,1929,145,104,101,114,101,0,1,3,15,10,1921,1944,157,115,105,103, - 105,108,58,64,0,2049,200,2049,159,15,2049,1873,1793,1960,1,3841,2049,107,2049,107, - 10,1,1953,1793,1966,15,10,1,1964,2049,64,10,1933,1982,157,115,105,103,105,108, - 58,33,0,2049,200,2049,159,15,2049,1873,1793,1998,1,4097,2049,107,2049,107,10,1, - 1991,1793,2004,16,10,1,2002,2049,64,10,1971,2021,145,100,58,99,114,101,97,116, - 101,0,1793,2023,1,133,1,0,2049,165,2049,1929,2049,1570,2049,159,16,10,2009,2046, - 145,118,97,114,45,110,0,2049,2021,2049,107,10,2037,2058,145,118,97,114,0,134284289, - 0,2046,10,2051,2071,145,99,111,110,115,116,0,2049,2021,2049,1570,2049,159,16,10, - 2062,2087,151,116,117,99,107,0,100926722,10,2079,2097,151,111,118,101,114,0,67502597,10, - 2089,2106,151,110,105,112,0,772,10,2099,2121,151,100,114,111,112,45,112,97,105, - 114,0,771,10,2108,2131,151,63,100,117,112,0,6402,10,2123,2145,145,100,117,112, - 45,112,97,105,114,0,67502597,67502597,10,2133,2155,145,100,105,112,0,525572,6,10,2148, - 2165,145,115,105,112,0,67502597,1,25,2049,2155,10,2158,2177,145,98,105,0,1,2165, - 2049,2155,8,10,2171,2190,145,98,105,42,0,1,2155,2049,2155,8,10,2183,2203,145, - 98,105,64,0,2,2049,2190,10,2196,2214,145,116,114,105,0,1793,2223,1,2165,2049, - 2155,2049,2165,10,1,2216,2049,2155,8,10,2207,2237,145,116,114,105,42,0,1793,2254, - 1793,2247,4,1,2155,2049,2155,10,1,2241,2049,2155,2049,2155,10,1,2239,2049,2155,8, - 10,2229,2268,145,116,114,105,64,0,2,2,2049,2237,10,2260,2282,145,119,104,105, - 108,101,0,1793,2291,525570,1639430,3,1,2284,7,10,1,2284,8,3,10,2273,2305,145, - 117,110,116,105,108,0,1793,2316,525570,385942534,-1,25,3,1,2307,7,10,1,2307,8, - 3,10,2296,2330,145,116,105,109,101,115,0,1793,2342,4,25,33886721,1,2053,1542,1, - 2333,7,10,1,2332,8,3,10,2321,2358,157,115,105,103,105,108,58,124,0,2049, - 200,1793,2366,2049,159,15,10,1,2362,1793,2374,2049,161,15,10,1,2370,2049,2177,2049, - 1873,1793,2389,1,133,2049,2155,2049,1832,10,1,2382,1,25,2049,64,10,2347,2404,145, - 84,82,85,69,0,1,-1,10,2396,2416,145,70,65,76,83,69,0,1,0,10, - 2407,2427,145,99,97,115,101,0,1793,2432,67502597,11,10,1,2429,2049,2155,4,1793,2444, - 772,8,2049,2404,10,1,2439,1793,2452,3,2049,2416,10,1,2448,2049,64,25,6,3, - 3,10,2419,2471,145,115,58,99,97,115,101,0,1793,2477,67502597,2049,95,10,1,2473, - 2049,2155,4,1793,2489,772,8,2049,2404,10,1,2484,1793,2497,3,2049,2416,10,1,2493, - 2049,64,25,6,3,3,10,2461,2513,145,110,111,116,0,1,-1,23,10,2506,2526, - 145,108,116,101,113,63,0,2049,2145,101516555,22,10,2517,2540,145,103,116,101,113,63, - 0,4,2049,2526,10,2531,2553,145,110,58,77,65,88,0,1,-5,15,10,2544,2566, - 145,110,58,77,73,78,0,1,-4,15,10,2557,2581,145,110,58,122,101,114,111, - 63,0,1,0,11,10,2570,2597,145,110,58,45,122,101,114,111,63,0,1,0, - 12,10,2585,2616,145,110,58,110,101,103,97,116,105,118,101,63,0,1,0,13, - 10,2601,2635,145,110,58,112,111,115,105,116,105,118,101,63,0,1,-1,14,10, - 2620,2663,145,110,58,115,116,114,105,99,116,108,121,45,112,111,115,105,116,105, - 118,101,63,0,1,0,14,10,2639,2678,145,110,58,101,118,101,110,63,0,1, - 2,20,3,2049,2581,10,2667,2695,145,110,58,111,100,100,63,0,2049,2678,2049,2513, - 10,2685,2707,145,105,102,59,0,67502597,1,74,2049,2155,25,6,771,10,2700,2724,145, - 45,105,102,59,0,67502597,1,72,2049,2155,2049,2513,25,6,771,10,2716,2742,157,105, - 102,58,0,1,25,2049,107,1,3,2049,107,10,2735,2759,157,45,105,102,58,0, - 1,1644289,2049,107,1,-1,2049,107,1,3,2049,107,10,2751,2779,151,114,111,116,0, - 67503109,10,2772,2786,151,47,0,197652,10,2781,2795,151,109,111,100,0,788,10,2788,2806, - 145,110,58,112,111,119,0,1,1,4,1793,2814,67502597,19,10,1,2811,2049,2330,772, - 10,2797,2832,145,110,58,110,101,103,97,116,101,0,1,-1,19,10,2820,2848,145, - 110,58,115,113,117,97,114,101,0,4866,10,2836,2860,145,110,58,115,113,114,116, - 0,1,1,1793,2878,2049,2145,197652,67502597,18,1,2,197652,25,17,1,2864,7,10,1, - 2864,8,772,10,2850,2892,145,110,58,109,105,110,0,2049,2145,13,1793,2899,3,10, - 1,2897,1793,2905,772,10,1,2903,2049,64,10,2883,2919,145,110,58,109,97,120,0, - 2049,2145,14,1793,2926,3,10,1,2924,1793,2932,772,10,1,2930,2049,64,10,2910,2946, - 145,110,58,97,98,115,0,2,2049,2616,1,2832,9,10,2937,2964,145,110,58,108, - 105,109,105,116,0,4,5,2049,2892,6,2049,2919,10,2953,2981,145,110,58,105,110, - 99,0,659713,1,10,2972,2993,145,110,58,100,101,99,0,659969,1,10,2984,3010,145, - 110,58,98,101,116,119,101,101,110,63,0,67503109,1793,3018,67503109,67503109,2049,2964,10,1, - 3013,2049,2165,11,10,2996,3036,145,118,58,105,110,99,45,98,121,0,1793,3040,4367, - 10,1,3038,2049,2165,16,10,3024,3058,145,118,58,100,101,99,45,98,121,0,1793, - 3062,1180687,10,1,3060,2049,2165,16,10,3046,3077,145,118,58,105,110,99,0,1,1, - 4,2049,3036,10,3068,3092,145,118,58,100,101,99,0,1,1,4,2049,3058,10,3083, - 3109,145,118,58,108,105,109,105,116,0,251790597,1542,2049,2964,4100,10,3098,3123,145,118, - 58,111,110,0,2049,2404,4100,10,3115,3136,145,118,58,111,102,102,0,2049,2416,4100, - 10,3127,3149,145,97,108,108,111,116,0,1,3,2049,3036,10,3140,3168,145,118,58, - 112,114,101,115,101,114,118,101,0,983556,1793,3176,1,25,2049,2155,10,1,3171,2049, - 2155,4100,10,3154,3194,145,118,58,117,112,100,97,116,101,0,4,1793,3201,15,4, - 8,10,1,3197,2049,2165,16,10,3182,3215,145,99,111,112,121,0,1793,3224,285278725,1, - 33951492,268767489,1,6,10,1,3217,2049,2330,771,10,3207,3243,145,83,99,111,112,101,76, - 105,115,116,0,9480,9578,10,3230,3252,145,123,123,0,2049,1570,2,1,3243,2049,59, - 16,10,3246,3277,145,45,45,45,114,101,118,101,97,108,45,45,45,0,2049,1570, - 1,3243,2049,2981,16,10,3261,3291,145,125,125,0,1,3243,2049,56,4,15,11,1793, - 3305,3841,3243,4097,2,10,1,3300,1793,3331,3841,3243,1793,3326,1,2,983567,1,3243,2049, - 2981,1641487,3,1,3315,7,10,1,3313,8,16,10,1,3309,2049,64,10,3285,3345,133, - 115,116,97,114,116,0,0,10,3336,3354,133,101,110,100,0,0,10,3347,3369,145, - 116,101,114,109,105,110,97,116,101,0,1,0,3841,3354,16,10,3285,3391,145,98, - 117,102,102,101,114,58,115,116,97,114,116,0,3841,3345,10,3375,3408,145,98,117, - 102,102,101,114,58,101,110,100,0,3841,3354,10,3394,3425,145,98,117,102,102,101, - 114,58,97,100,100,0,3841,3354,16,1,3354,2049,3077,2049,3369,10,3411,3449,145,98, - 117,102,102,101,114,58,103,101,116,0,1,3354,2049,3092,3841,3354,15,2049,3369,10, - 3435,3475,145,98,117,102,102,101,114,58,101,109,112,116,121,0,3841,3345,4097,3354, - 2049,3369,10,3459,3497,145,98,117,102,102,101,114,58,115,105,122,101,0,3841,3354, - 3841,3345,18,10,3482,3517,145,98,117,102,102,101,114,58,115,101,116,0,4097,3345, - 2049,3475,10,3503,3541,145,98,117,102,102,101,114,58,112,114,101,115,101,114,118, - 101,0,3841,3345,3841,3354,1793,3554,1,25,2049,2155,4097,3345,10,1,3547,2049,2155,4097, - 3354,10,3522,3576,133,84,101,109,112,83,116,114,105,110,103,115,0,32,3561,3594, - 133,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,3577,3606,145,83, - 84,82,73,78,71,83,0,2049,1543,3841,3576,3841,3594,19,18,10,3595,3626,133,67, - 117,114,114,101,110,116,0,31,10,3615,3641,145,115,58,112,111,105,110,116,101, - 114,0,3841,3626,3841,3594,19,2049,3606,17,10,3628,3660,145,115,58,110,101,120,116, - 0,1,3626,2049,3077,3841,3626,3841,3576,11,1793,3676,1,0,4097,3626,10,1,3671,9, - 10,3595,3690,145,115,58,116,101,109,112,0,2,2049,81,2049,2981,2049,3641,4,2049, - 3215,2049,3641,2049,3660,10,3680,3716,145,115,58,101,109,112,116,121,0,2049,3641,2049, - 3660,1,0,67502597,16,10,3705,3735,145,115,58,115,107,105,112,0,6,1793,3743,68223234, - 1,786703,0,10,1,3738,2049,2282,2049,2993,5,10,3725,3761,145,115,58,107,101,101, - 112,0,2049,1873,1793,3770,1,3735,2049,1832,10,1,3765,9,2049,1929,1,121,2049,2155, - 2049,133,10,3751,3793,157,115,105,103,105,108,58,39,0,2049,1873,1,3761,1,3690, - 2049,64,10,3782,3812,145,115,58,99,104,111,112,0,2049,3690,2,2049,81,67502597,17, - 2049,2993,1,0,4,16,10,3802,3839,145,115,58,114,101,118,101,114,115,101,0, - 1793,3881,2,2049,3690,2049,3517,1,81,1793,3857,2,2049,81,17,2049,2993,10,1,3850, - 2049,2177,4,1793,3871,2,15,2049,3425,2049,2993,10,1,3864,2049,2330,3,2049,3391,2049, - 3690,10,1,3841,2049,3541,10,3826,3899,145,115,58,112,114,101,112,101,110,100,0, - 2049,3690,1793,3923,2,2049,81,17,1793,3915,2,2049,81,2049,2981,10,1,3909,2049,2155, - 4,2049,3215,10,1,3903,2049,2165,10,3886,3940,145,115,58,97,112,112,101,110,100, - 0,4,2049,3899,10,3928,3958,145,115,58,102,111,114,45,101,97,99,104,0,1793, - 3973,67502597,6415,3,67502597,67502597,251987205,2054,101777670,1,1,3960,7,10,1,3960,8,771,10,3944, - 3994,145,115,58,105,110,100,101,120,47,99,104,97,114,0,4,1793,4008,68223234,1, - 6415,33883396,101450758,6404,3,1,3997,7,10,1,3997,1793,4017,18,2049,2993,772,10,1,4012, - 1793,4026,2049,81,67502597,11,10,1,4021,2049,2214,1793,4036,3,1,-1,10,1,4032,9, - 10,3978,4060,145,115,58,99,111,110,116,97,105,110,115,47,99,104,97,114,63, - 0,2049,3994,1,-1,12,10,4040,4076,145,115,58,104,97,115,104,0,1,5381,4, - 1793,4084,286458116,33,10,1,4081,2049,3958,10,4066,4096,133,83,114,99,0,0,4089,4104, - 133,84,97,114,0,0,4097,4112,133,80,97,100,0,0,4105,4118,133,73,0,0, - 4113,4124,133,70,0,0,4119,4131,133,65,116,0,0,4125,4145,145,116,101,114,109, - 105,110,97,116,101,0,1,0,3841,4112,3841,4104,2049,81,17,16,10,4132,4167,145, - 101,120,116,114,97,99,116,0,3841,4096,3841,4118,17,3841,4112,3841,4104,2049,81,2049, - 3215,10,4156,4192,145,99,111,109,112,97,114,101,0,3841,4112,3841,4104,2049,95,3841, - 4124,22,4097,4124,3841,4124,1793,4212,3841,4118,4097,4131,10,1,4207,2049,72,10,4181,4225, - 145,110,101,120,116,0,1,4118,2049,3077,10,4066,4252,145,115,58,99,111,110,116, - 97,105,110,115,47,115,116,114,105,110,103,63,0,4097,4104,4097,4096,2049,3716,4097, - 4112,1,0,4097,4118,1,0,4097,4124,3841,4096,2049,81,1793,4283,2049,4167,2049,4145,2049, - 4192,2049,4225,10,1,4274,2049,2330,3841,4124,10,4230,4297,133,83,116,114,0,0,4290, - 4309,145,101,120,116,114,97,99,116,0,2049,2145,3841,4297,4,2049,3215,3841,-1,67502597, - 17,1,0,4,16,10,4298,4334,145,99,104,101,99,107,0,1,4309,2049,2155,1793, - 4345,1,2981,2049,2155,10,1,4340,2049,2155,3841,4297,2049,4076,67502597,11,10,4325,4368,145, - 108,111,99,97,116,105,111,110,0,67503109,67503109,1793,4401,1793,4396,4,1793,4382,67502597,2049, - 2581,21,10,1,4377,2049,2155,4,1793,4392,772,2,10,1,4389,9,10,1,4374,2049, - 2155,10,1,4372,2049,2155,10,4356,4415,145,115,101,116,117,112,0,2049,3716,4097,4297, - 1,0,67503109,67503109,1,81,1,4076,2049,2177,2049,3716,2049,3517,1793,4439,67502597,2049,81,10, - 1,4435,2049,2155,4,10,4230,4463,145,115,58,105,110,100,101,120,47,115,116,114, - 105,110,103,0,67502597,1793,4489,1793,4482,2049,4415,1793,4477,2049,4334,2049,4368,10,1,4472, - 2049,2330,10,1,4468,2049,3541,771,3,10,1,4466,2049,2155,18,1,2,18,1,-1, - 2049,2919,10,4445,4514,145,115,58,102,105,108,116,101,114,0,1793,4542,2049,3716,2049, - 3517,4,1793,4534,2049,2145,4,8,1,3425,1,15,2049,64,10,1,4523,2049,3958,3, - 2049,3391,10,1,4516,2049,3541,10,4502,4556,145,115,58,109,97,112,0,1793,4578,2049, - 3716,2049,3517,4,1793,4570,67502597,8,2049,3425,10,1,4565,2049,3958,3,2049,3391,10,1, - 4558,2049,3541,10,4547,4595,145,115,58,115,117,98,115,116,114,0,1793,4601,17,2049, - 3716,10,1,4597,2049,2155,1793,4613,67502597,1,3215,2049,2155,10,1,4607,2049,2165,67502597,1793, - 4626,17,1,0,4,16,10,1,4620,2049,2155,10,4583,4642,145,115,58,114,105,103, - 104,116,0,67502597,2049,81,67502597,18,4,2049,4595,10,4631,4661,145,115,58,108,101,102, - 116,0,1,0,4,2049,4595,10,4651,4685,145,115,58,98,101,103,105,110,115,45, - 119,105,116,104,63,0,2,2049,81,1,17,2049,2155,2049,4661,2049,95,10,4667,4713, - 145,115,58,101,110,100,115,45,119,105,116,104,63,0,2,2049,81,1,17,2049, - 2155,2049,4642,2049,95,10,4697,4735,145,115,58,99,111,112,121,0,67502597,2049,81,2049, - 2981,2049,3215,10,4725,4755,145,115,58,68,73,71,73,84,83,0,2049,3735,48,49, - 50,51,52,53,54,55,56,57,65,66,67,68,69,70,0,1,4757,10,4743,4798, - 145,115,58,65,83,67,73,73,45,76,79,87,69,82,67,65,83,69,0,2049, - 3735,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, - 116,117,118,119,120,121,122,0,1,4800,10,4777,4851,145,115,58,65,83,67,73, - 73,45,85,80,80,69,82,67,65,83,69,0,2049,3735,65,66,67,68,69,70, - 71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, - 0,1,4853,10,4830,4902,145,115,58,65,83,67,73,73,45,76,69,84,84,69, - 82,83,0,2049,3735,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, - 112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73, - 74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0,1,4904, - 10,4883,4977,145,115,58,80,85,78,67,84,85,65,84,73,79,78,0,2049,3735, - 95,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,58,59,60,61, - 62,63,64,91,92,93,94,96,123,124,125,126,0,1,4979,1,95,67502597,16,10, - 4960,5035,133,115,58,87,72,73,84,69,83,80,65,67,69,0,32,9,10,13, - 0,5019,5045,157,39,0,1,3716,2049,145,10,5040,5055,157,36,0,1,0,2049,133, - 10,5050,0,133,65,83,67,73,73,58,78,85,76,0,5060,27,133,65,83,67, - 73,73,58,69,83,67,0,5073,8,133,65,83,67,73,73,58,66,83,0,5086, - 9,133,65,83,67,73,73,58,72,84,0,5098,10,133,65,83,67,73,73,58, - 76,70,0,5110,11,133,65,83,67,73,73,58,86,84,0,5122,12,133,65,83, - 67,73,73,58,70,70,0,5134,13,133,65,83,67,73,73,58,67,82,0,5146, - 32,133,65,83,67,73,73,58,83,80,65,67,69,0,5158,127,133,65,83,67, - 73,73,58,68,69,76,0,5173,1,133,65,83,67,73,73,58,83,79,72,0, - 5186,2,133,65,83,67,73,73,58,83,84,88,0,5199,3,133,65,83,67,73, - 73,58,69,84,88,0,5212,4,133,65,83,67,73,73,58,69,79,84,0,5225, - 5,133,65,83,67,73,73,58,69,78,81,0,5238,6,133,65,83,67,73,73, - 58,65,67,75,0,5251,7,133,65,83,67,73,73,58,66,69,76,0,5264,14, - 133,65,83,67,73,73,58,83,79,0,5277,15,133,65,83,67,73,73,58,83, - 73,0,5289,16,133,65,83,67,73,73,58,68,76,69,0,5301,17,133,65,83, - 67,73,73,58,68,67,49,0,5314,18,133,65,83,67,73,73,58,68,67,50, - 0,5327,19,133,65,83,67,73,73,58,68,67,51,0,5340,20,133,65,83,67, - 73,73,58,68,67,52,0,5353,21,133,65,83,67,73,73,58,78,65,75,0, - 5366,22,133,65,83,67,73,73,58,83,89,78,0,5379,23,133,65,83,67,73, - 73,58,69,84,66,0,5392,24,133,65,83,67,73,73,58,67,65,78,0,5405, - 25,133,65,83,67,73,73,58,69,77,0,5418,26,133,65,83,67,73,73,58, - 83,85,66,0,5430,28,133,65,83,67,73,73,58,70,83,0,5443,29,133,65, - 83,67,73,73,58,71,83,0,5455,30,133,65,83,67,73,73,58,82,83,0, - 5467,31,133,65,83,67,73,73,58,85,83,0,5479,5507,145,99,58,108,111,119, - 101,114,99,97,115,101,63,0,1,97,1,122,2049,3010,10,5491,5530,145,99,58, - 117,112,112,101,114,99,97,115,101,63,0,1,65,1,90,2049,3010,10,5514,5550, - 145,99,58,108,101,116,116,101,114,63,0,1,5507,1,5530,2049,2177,22,10,5537, - 5570,145,99,58,100,105,103,105,116,63,0,1,48,1,57,2049,3010,10,5558,5591, - 145,99,58,118,105,115,105,98,108,101,63,0,1,32,1,126,2049,3010,10,5577, - 5610,145,99,58,118,111,119,101,108,63,0,2049,3735,97,101,105,111,117,65,69, - 73,79,85,0,1,5612,4,2049,4060,10,5598,5645,145,99,58,99,111,110,115,111, - 110,97,110,116,63,0,2,2049,5550,1793,5655,2049,5610,2049,2513,10,1,5650,1793,5663, - 3,2049,2416,10,1,5659,2049,64,10,5629,5685,145,99,58,119,104,105,116,101,115, - 112,97,99,101,63,0,1,5035,4,2049,4060,10,5668,5708,145,99,58,45,108,111, - 119,101,114,99,97,115,101,63,0,2049,5507,2049,2513,10,5691,5730,145,99,58,45, - 117,112,112,101,114,99,97,115,101,63,0,2049,5530,2049,2513,10,5713,5748,145,99, - 58,45,100,105,103,105,116,63,0,2049,5570,2049,2513,10,5735,5771,145,99,58,45, - 119,104,105,116,101,115,112,97,99,101,63,0,2049,5685,2049,2513,10,5753,5791,145, - 99,58,45,118,105,115,105,98,108,101,63,0,2049,5591,2049,2513,10,5776,5809,145, - 99,58,45,118,111,119,101,108,63,0,2049,5610,2049,2513,10,5796,5831,145,99,58, - 45,99,111,110,115,111,110,97,110,116,63,0,2049,5645,2049,2513,10,5814,5850,145, - 99,58,116,111,45,117,112,112,101,114,0,2,2049,5507,25,3,1,32,18,10, - 5836,5873,145,99,58,116,111,45,108,111,119,101,114,0,2,2049,5530,25,3,1, - 32,17,10,5859,5897,145,99,58,116,111,45,115,116,114,105,110,103,0,2049,3735, - 46,0,1,5899,2049,3690,1,37,2049,2165,10,5882,5927,145,99,58,116,111,103,103, - 108,101,45,99,97,115,101,0,2,2049,5507,1,5850,1,5873,2049,64,10,5910,5952, - 145,99,58,116,111,45,110,117,109,98,101,114,0,2,2049,5570,1793,5961,1,48, - 18,10,1,5957,1793,5969,3,1,0,10,1,5965,2049,64,10,5937,5988,145,115,58, - 116,111,45,117,112,112,101,114,0,1,5850,2049,4556,10,5974,6007,145,115,58,116, - 111,45,108,111,119,101,114,0,1,5873,2049,4556,10,5993,6027,145,115,58,116,114, - 105,109,45,108,101,102,116,0,2049,3690,1793,6041,2049,56,1,5685,1,2597,2049,2177, - 21,10,1,6031,2049,2282,2049,2993,10,6012,6064,145,115,58,116,114,105,109,45,114, - 105,103,104,116,0,2049,3690,2049,3839,2049,6027,2049,3839,10,6048,6083,145,115,58,116, - 114,105,109,0,2049,6064,2049,6027,10,6073,6110,133,82,101,119,114,105,116,101,85, - 110,100,101,114,115,99,111,114,101,115,0,-1,6088,6118,145,115,117,98,0,1, - 95,1793,6125,1,32,10,1,6122,2049,2427,10,6111,6141,145,114,101,119,114,105,116, - 101,0,3841,6110,1793,6150,1,6118,2049,4556,10,1,6145,9,10,6130,6164,145,104,97, - 110,100,108,101,0,1,3793,8,10,6088,6179,157,115,105,103,105,108,58,39,0, - 2049,6141,2049,6164,10,6168,6200,145,115,58,115,112,108,105,116,47,99,104,97,114, - 0,2049,2145,2049,3994,772,2049,2145,2049,4661,1,39,2049,2155,10,6184,6232,145,115,58, - 115,112,108,105,116,47,115,116,114,105,110,103,0,2049,2145,2049,4463,2049,2981,772, - 2049,2145,2049,4661,1,39,2049,2155,10,6214,6261,145,115,58,114,101,112,108,97,99, - 101,0,67502597,2049,81,2049,1929,16,1793,6277,2049,6232,4,2049,1929,15,17,10,1,6269, - 2049,2155,2049,3899,2049,3940,10,6248,6298,133,83,112,108,105,116,45,79,110,0,0, - 6286,6309,145,109,97,116,99,104,63,0,3841,6298,11,10,6299,6326,145,116,101,114, - 109,105,110,97,116,101,0,1,0,67502597,2049,2993,16,10,6313,6341,145,115,116,101, - 112,0,1,2981,2049,2155,2049,6309,1793,6355,2,2049,107,2049,6326,10,1,6349,9,10, - 6248,6373,145,115,58,116,111,107,101,110,105,122,101,0,4097,6298,2049,3761,2049,1929, - 1,0,2049,107,1793,6395,2,2049,107,2,1,6341,2049,3958,3,10,1,6385,2049,2155, - 2049,1929,67502597,18,2049,2993,67502597,16,10,6359,6418,133,78,101,101,100,108,101,0,0, + 0,0,0,0,0,0,0,0,7407,7556,154,0,0,76,101,110,0,0,7547,7569, + 154,0,0,84,111,107,101,110,115,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,6408,6553,133,76,101,110,0,0,6546,6564,133,84,111, - 107,101,110,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7557,7705, + 154,0,0,84,80,0,0,7697,7716,166,0,0,115,97,118,101,0,2049,4500,3841, + 7705,1,7569,17,2049,3125,16,1,7705,2049,3864,10,7706,7741,166,0,0,110,101,120, + 116,0,1793,7747,3841,7556,17,10,1,7743,2049,2241,10,7731,7763,166,0,0,100,111, + 110,101,63,0,2049,102,2049,2722,10,7356,7794,166,0,0,115,58,116,111,107,101, + 110,105,122,101,45,111,110,45,115,116,114,105,110,103,0,1,0,4097,7705,1793, + 7808,2,1,7419,2049,5574,2049,4721,10,1,7800,1793,7817,2049,102,4097,7556,10,1,7812, + 2049,2255,1793,7834,1,7419,2049,7219,2049,7716,2049,7741,2049,7763,10,1,7823,2049,2397,1, + 7569,3841,7705,2049,3139,4097,7569,10,7768,7861,166,0,0,102,111,114,45,101,97,99, + 104,0,4,2049,56,1,17,2049,2229,1793,7877,5,2049,56,84018692,525572,1542,10,1,7870, + 2049,2449,771,10,7847,7899,166,0,0,115,117,98,115,116,105,116,117,116,101,0, + 2049,4331,1,129,18,10,7883,7918,166,0,0,101,120,116,114,97,99,116,0,2049, + 7899,2049,5574,10,7905,7937,166,0,0,116,111,107,101,110,105,122,101,0,2049,7794, + 2049,4451,10,7923,7955,166,0,0,99,111,109,98,105,110,101,0,2049,7899,2049,4721, + 2049,4721,10,7942,7973,166,0,0,109,101,114,103,101,0,4,1,7955,2049,7861,772, + 10,7962,7994,166,0,0,102,105,110,100,45,101,110,100,0,2,2049,102,2049,7899, + 2049,102,18,67502597,17,10,7980,8016,166,0,0,99,108,101,97,110,0,2049,7994,1, + 0,4,16,10,7768,8042,166,0,0,115,58,114,101,112,108,97,99,101,45,97, + 108,108,0,1,3,1793,8057,2049,7918,2049,7937,2049,7973,2049,8016,2049,4423,10,1,8046, + 2049,3967,10,8023,8074,154,0,0,83,116,114,105,110,103,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,6554,6698,133,84,80,0,0, - 6692,6707,145,115,97,118,101,0,2049,3761,3841,6698,1,6564,17,2049,2981,16,1,6698, - 2049,3077,10,6699,6730,145,110,101,120,116,0,1793,6736,3841,6553,17,10,1,6732,2049, - 2165,10,6722,6750,145,100,111,110,101,63,0,2049,81,2049,2581,10,6359,6779,145,115, - 58,116,111,107,101,110,105,122,101,45,111,110,45,115,116,114,105,110,103,0, - 1,0,4097,6698,1793,6793,2,1,6418,2049,4735,2049,3940,10,1,6785,1793,6802,2049,81, - 4097,6553,10,1,6797,2049,2177,1793,6819,1,6418,2049,6232,2049,6707,2049,6730,2049,6750,10, - 1,6808,2049,2305,1,6564,3841,6698,2049,2993,4097,6564,10,6755,6844,145,102,111,114,45, - 101,97,99,104,0,4,2049,56,1,17,2049,2155,1793,6860,5,2049,56,84018692,525572,1542, - 10,1,6853,2049,2330,771,10,6832,6880,145,115,117,98,115,116,105,116,117,116,101, - 0,2049,3606,1,129,18,10,6866,6897,145,101,120,116,114,97,99,116,0,2049,6880, - 2049,4735,10,6886,6914,145,116,111,107,101,110,105,122,101,0,2049,6779,2049,3716,10, - 6902,6930,145,99,111,109,98,105,110,101,0,2049,6880,2049,3940,2049,3940,10,6919,6946, - 145,109,101,114,103,101,0,4,1,6930,2049,6844,772,10,6937,6965,145,102,105,110, - 100,45,101,110,100,0,2,2049,81,2049,6880,2049,81,18,67502597,17,10,6953,6985,145, - 99,108,101,97,110,0,2049,6965,1,0,4,16,10,6755,7009,145,115,58,114,101, - 112,108,97,99,101,45,97,108,108,0,1,3,1793,7024,2049,6897,2049,6914,2049,6946, - 2049,6985,2049,3690,10,1,7013,2049,3168,10,6992,7039,133,83,116,114,105,110,103,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,7029,7119,145,99,104,101,99,107,45,115,105,103,110,0, - 2049,2616,1793,7128,1,45,2049,3425,10,1,7123,9,10,7105,7144,145,110,45,62,100, - 105,103,105,116,0,2049,4755,17,15,10,7132,7160,145,99,111,110,118,101,114,116, - 0,1793,7174,3841,205,20,4,2049,7144,2049,3425,2,2049,2581,10,1,7162,2049,2305,3, - 10,6992,7195,145,110,58,116,111,45,115,116,114,105,110,103,0,1793,7209,1,7039, - 2049,3517,2,2049,2946,2049,7160,2049,7119,10,1,7197,2049,3541,1,7039,2049,3839,10,7180, - 7226,145,99,104,97,114,0,1,32,1793,7235,1,95,2049,3425,10,1,7230,2049,2427, - 1,114,1793,7248,1,13,2049,3425,10,1,7243,2049,2427,1,110,1793,7261,1,10,2049, - 3425,10,1,7256,2049,2427,1,116,1793,7274,1,9,2049,3425,10,1,7269,2049,2427,1, - 48,1793,7287,1,0,2049,3425,10,1,7282,2049,2427,1,94,1793,7300,1,27,2049,3425, - 10,1,7295,2049,2427,2049,3425,10,7218,7315,145,116,121,112,101,0,1,99,1793,7323, - 4,2049,3425,10,1,7319,2049,2427,1,115,1793,7337,4,1,3425,2049,3958,10,1,7331, - 2049,2427,1,110,1793,7353,4,2049,7195,1,3425,2049,3958,10,1,7345,2049,2427,3,10, - 7307,7369,145,104,97,110,100,108,101,0,1,92,1793,7378,2049,56,2049,7226,10,1, - 7373,2049,2427,1,37,1793,7391,2049,56,2049,7315,10,1,7386,2049,2427,2049,3425,10,7180, - 7410,145,115,58,102,111,114,109,97,116,0,1793,7439,2049,3716,1793,7434,2049,3517,1793, - 7429,2049,56,25,2049,7369,1,7420,7,10,1,7420,8,3,10,1,7416,2049,2165,10, - 1,7412,2049,3541,10,7398,7455,145,115,58,99,111,110,115,116,0,1,3761,2049,2155, - 2049,2071,10,7444,7472,133,86,97,108,117,101,115,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,7462,7508,145,102,114,111,109,0,2049,81,2,1793,7526,1793,7519,1,7472,4113,10, - 1,7515,2049,2165,2049,2993,10,1,7513,2049,2330,3,10,7500,7538,145,116,111,0,2, - 2049,81,1793,7554,2049,56,1,97,18,2049,2981,1,7472,266001,10,1,7543,2049,2330,3, - 10,7444,7571,145,114,101,111,114,100,101,114,0,1,7508,2049,2155,2049,7538,10,7560, - 7587,145,99,117,114,114,121,0,2049,1929,1793,7597,4,2049,1786,2049,1809,10,1,7591, - 2049,2155,10,7578,7610,145,100,111,101,115,0,2049,1587,4,2049,7587,2049,1570,2049,159, - 16,1,145,2049,1646,10,7602,7639,145,100,58,102,111,114,45,101,97,99,104,0, - 1,2,1793,7665,6415,2049,2145,1793,7657,1793,7652,2052,10,1,7650,2049,2155,10,1,7648, - 2049,2155,1,7643,7,10,1,7643,8,3,10,7625,7685,145,100,58,108,111,111,107, - 117,112,45,120,116,0,1,0,4,1793,7710,2049,2145,2049,159,2831,1793,7703,4,1, - 2106,2049,2155,10,1,7697,1,15,2049,64,10,1,7690,2049,7639,3,10,7670,7728,145, - 97,58,108,101,110,103,116,104,0,15,10,7716,7751,145,97,58,99,111,117,110, - 116,101,100,45,114,101,115,117,108,116,115,0,8,2049,1929,1793,7764,2,2049,107, - 1,107,2049,2330,10,1,7756,2049,2155,10,7730,7786,145,97,58,102,114,111,109,45, - 115,116,114,105,110,103,0,2049,1929,1793,7800,2,2049,81,2049,107,1,107,2049,3958, - 10,1,7790,2049,2155,10,7769,7819,145,97,58,102,111,114,45,101,97,99,104,0, - 4,2049,56,1,17,2049,2155,1793,7835,5,2049,56,84018692,525572,1542,10,1,7828,2049,2330, - 771,10,7805,7850,145,97,58,100,117,112,0,2049,1929,1793,7863,2,15,2049,107,1, - 107,2049,7819,10,1,7854,2049,2155,10,7841,7878,145,97,58,99,111,112,121,0,1, - 3,1793,7894,4097,3,2,2049,7728,2049,107,1,107,2049,7819,10,1,7882,2049,3168,10, - 7868,7914,145,97,58,116,111,45,115,116,114,105,110,103,0,1,3,1793,7927,2049, - 7850,1,0,2049,107,2049,2981,10,1,7918,2049,3168,2049,3690,10,7899,7946,145,97,58, - 97,112,112,101,110,100,0,2049,2145,1,35,2049,2203,17,2049,1929,1793,7971,2049,107, - 1793,7966,1,107,2049,7819,10,1,7961,2049,2203,10,1,7957,2049,2155,10,7934,7989,145, - 97,58,112,114,101,112,101,110,100,0,4,2049,7946,10,7976,8003,145,97,58,99, - 104,111,112,0,2049,7850,1,-1,2049,3149,2,2049,3092,10,7993,8025,145,97,58,102, - 105,108,116,101,114,0,1793,8040,67502597,1,25,2049,2155,4,1,107,1,15,2049,64, - 10,1,8027,2049,7587,2049,1929,1793,8055,67502597,15,2049,107,2049,7819,10,1,8048,2049,2155, - 2049,1929,67502597,18,2049,2993,67502597,16,10,8013,8083,145,97,58,99,111,110,116,97,105, - 110,115,63,0,1,0,4,1793,8095,4,5,67502597,11,6,22,10,1,8088,2049,7819, - 772,10,8068,8123,145,97,58,99,111,110,116,97,105,110,115,47,115,116,114,105, - 110,103,63,0,1,0,4,1793,8136,4,5,67502597,2049,95,6,22,10,1,8128,2049, - 7819,772,10,8101,8151,145,97,58,109,97,112,0,1793,8157,8,2049,107,10,1,8153, - 2049,7587,2049,1929,1793,8172,67502597,15,2049,107,2049,7819,10,1,8165,2049,2155,10,8142,8190, - 145,97,58,114,101,118,101,114,115,101,0,2049,1929,1793,8224,2049,56,1793,8202,17, - 2049,2993,10,1,8198,2049,2165,2,2049,107,1793,8218,2,15,2049,107,2049,2993,10,1, - 8211,2049,2330,3,10,1,8194,2049,2155,10,8177,8237,145,97,58,116,104,0,17,2049, - 2981,10,8229,8252,145,97,58,102,101,116,99,104,0,2049,8237,15,10,8241,8267,145, - 97,58,115,116,111,114,101,0,2049,8237,16,10,8256,8283,145,97,58,114,101,100, - 117,99,101,0,1,17,2049,2155,2049,7819,10,8271,8302,145,105,100,101,110,116,105, - 102,121,0,1,-1,4,1,0,1793,8333,2049,2404,11,1793,8327,67502597,1,-1,11,1793, - 8323,772,2,10,1,8320,9,10,1,8314,9,2049,2981,10,1,8309,2049,8283,3,10, - 8271,8350,145,97,58,105,110,100,101,120,0,1,3,1793,8363,1,27,2049,7587,2049, - 8151,2049,8302,10,1,8354,2049,3168,10,8339,8386,145,97,58,105,110,100,101,120,47, - 115,116,114,105,110,103,0,1,3,1793,8399,1,95,2049,7587,2049,8151,2049,8302,10, - 1,8390,2049,3168,10,8368,8414,145,97,58,109,97,107,101,0,2049,7751,2,2,1, - 3,1793,8425,2049,8190,10,1,8422,2049,3168,4,2049,7878,10,8404,8438,157,123,0,1, - 301,2049,157,1,1556,2049,145,1,301,2049,157,10,8433,8456,157,125,0,1,317,2049, - 157,1,2155,2049,145,1,1556,2049,145,1,17,2049,151,1,41,2049,151,1,2993,2049, - 145,1,317,2049,157,1,8414,2049,145,10,8451,8500,145,98,111,117,110,100,115,63, - 0,67502597,2049,7728,67502597,13,10,8489,8514,145,99,111,112,121,0,2049,56,2049,107,10, - 8506,8529,145,116,111,45,101,110,100,0,2,2049,7728,17,2049,2981,10,8451,8546,145, - 97,58,108,101,102,116,0,2049,8500,1793,8554,771,1,-1,10,1,8550,2049,2707,2049, - 1929,67502597,2049,107,1793,8575,1,2981,2049,2155,1,8514,2049,2330,3,10,1,8565,2049,2155, - 10,8536,8591,145,97,58,114,105,103,104,116,0,2049,8500,1793,8599,771,1,-1,10, - 1,8595,2049,2707,2049,1929,67502597,2049,107,1793,8622,4,2049,8529,67502597,18,4,1,8514,2049, - 2330,3,10,1,8610,2049,2155,10,8580,8639,145,97,58,109,105,100,100,108,101,0, - 1,2097,2049,2155,4,67502597,2049,8500,1793,8654,771,3,1,-1,10,1,8649,2049,2707,771, - 2049,2145,4,18,2049,2981,2049,1929,67502597,2049,107,1793,8689,772,1793,8679,17,2049,2981,10, - 1,8675,2049,2155,1,8514,2049,2330,3,10,1,8672,2049,2155,10,8627,8702,133,70,108, - 97,103,0,0,8694,8714,145,99,111,109,112,97,114,101,0,67440386,184946434,10,8703,8727, - 145,108,101,110,103,116,104,0,659202,10,8717,8737,145,110,101,120,116,0,17043713,1, - 1,2577,10,8729,8755,145,110,111,116,45,101,113,117,97,108,0,50529030,2561,0,10, - 8742,8767,145,108,111,111,112,0,524549,8737,2049,8714,18157313,8702,8702,16,420610310,1,1,8767, - 7,10,8627,8790,145,97,58,101,113,63,0,1048833,-1,8702,2049,8714,151066369,-1,8755,2049, - 8727,2049,8767,251724547,8702,10,8781,8815,145,97,58,45,101,113,63,0,2049,8790,2049,2513, - 10,8805,8838,145,97,58,98,101,103,105,110,115,45,119,105,116,104,63,0,1, - 3,1793,8854,2,2049,7728,1,17,2049,2155,2049,8546,2049,8790,10,1,8842,2049,3168,10, - 8820,8875,145,97,58,101,110,100,115,45,119,105,116,104,63,0,1,3,1793,8891, - 2,2049,7728,1,17,2049,2155,2049,8591,2049,8790,10,1,8879,2049,3168,10,8859,8912,145, - 99,117,114,114,101,110,116,45,108,105,110,101,0,2049,3606,1,1025,18,10,8896, - 8934,145,99,111,117,110,116,45,116,111,107,101,110,115,0,1793,8940,1,32,11, - 10,1,8936,2049,4514,2049,81,10,8918,8965,145,112,114,111,99,101,115,115,45,116, - 111,107,101,110,115,0,1793,8993,1,32,2049,6200,4,1793,8986,2,2049,81,2049,2597, - 1,379,1,15,2049,64,10,1,8974,2049,2155,2049,2981,10,1,8967,2049,2330,2049,379, - 10,8859,9014,145,115,58,101,118,97,108,117,97,116,101,0,2049,8912,2049,4735,2049, - 8912,2,2049,8934,2049,8965,10,9000,9032,133,76,80,0,0,9026,9042,133,73,110,100, - 101,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9033,9082,145,110,101, - 120,116,0,3841,9032,1,9042,17,2049,3077,10,9074,9098,145,112,114,101,112,0,1, - 9032,2049,3077,1,0,3841,9032,1,9042,17,16,10,9090,9119,145,100,111,110,101,0, - 1,9032,2049,3092,10,9000,9129,145,73,0,3841,9032,1,9042,17,15,10,9124,9141,145, - 74,0,3841,9032,1,9042,17,2049,2993,15,10,9136,9155,145,75,0,3841,9032,1,9042, - 17,1,2,18,15,10,9150,9182,145,105,110,100,101,120,101,100,45,116,105,109, - 101,115,0,2049,9098,4,1793,9198,25,33886721,1,2053,1542,2049,9082,1,9187,7,10,1, - 9187,8,3,2049,9119,10,9165,9216,145,100,101,99,105,109,97,108,0,1,10,4097, - 205,10,9205,9231,145,98,105,110,97,114,121,0,1,2,4097,205,10,9221,9245,145, - 111,99,116,97,108,0,1,8,4097,205,10,9236,9257,145,104,101,120,0,1,16, - 4097,205,10,9250,9278,145,105,111,58,101,110,117,109,101,114,97,116,101,0,27, - 10,9262,9292,145,105,111,58,113,117,101,114,121,0,28,10,9280,9307,145,105,111, - 58,105,110,118,111,107,101,0,29,10,9294,9324,145,105,111,58,115,99,97,110, - 45,102,111,114,0,1,-1,4,2049,9278,1793,9355,2049,9129,2049,9292,772,67502597,11,1793, - 9351,1793,9346,3,2049,9129,10,1,9342,2049,2155,10,1,9340,9,10,1,9331,2049,9182, - 3,10,9309,9370,145,99,58,112,117,116,0,1793,9372,1,0,2049,9307,10,9361,9383, - 145,110,108,0,1,10,2049,9370,10,9377,9394,145,115,112,0,1,32,2049,9370,10, - 9388,9406,145,116,97,98,0,1,9,2049,9370,10,9399,9420,145,115,58,112,117,116, - 0,1,9370,2049,3958,10,9411,9434,145,110,58,112,117,116,0,2049,7195,2049,9420,10, - 9425,9448,145,114,101,115,101,116,0,2049,1556,25,771,1,9448,7,10,9439,9470,145, - 100,117,109,112,45,115,116,97,99,107,0,2049,1556,25,134284547,9470,134283782,9434,2049,9394, - 10,9456,9488,145,70,82,69,69,0,2049,3606,1,1025,18,2049,1929,18,10,9480,9505, - 145,101,111,108,63,0,1793,9511,1,13,11,10,1,9507,1793,9519,1,10,11,10, - 1,9515,1793,9527,1,32,11,10,1,9523,2049,2214,22,22,10,9497,9544,145,118,97, - 108,105,100,63,0,2,2049,81,2049,2597,10,9534,9557,145,98,115,63,0,2,1793, - 9564,1,8,11,10,1,9560,1793,9572,1,127,11,10,1,9568,2049,2177,22,10,9550, - 9590,145,99,104,101,99,107,45,98,115,0,2049,9557,1793,9600,2049,3449,2049,3449,771, - 10,1,9594,9,10,9480,9613,145,99,58,103,101,116,0,1793,9615,1,1,2049,9324, - 2049,9307,10,9604,9631,145,115,58,103,101,116,0,1793,9659,1,7,15,2049,3517,1793, - 9650,2049,9613,2,2049,3425,2049,9590,2049,9505,10,1,9640,2049,2305,2049,3391,2049,3812,10, - 1,9633,2049,3541,10,9622,9674,145,108,105,115,116,101,110,0,2049,9631,2049,9544,1, - 379,1,15,2049,64,1,9674,7,10,0 }; + 0,8062,8156,166,0,0,99,104,101,99,107,45,115,105,103,110,0,2049,2761,1793, + 8165,1,45,2049,4134,10,1,8160,9,10,8140,8183,166,0,0,110,45,62,100,105, + 103,105,116,0,2049,5596,17,15,10,8169,8201,166,0,0,99,111,110,118,101,114, + 116,0,1793,8215,3841,236,20,4,2049,8183,2049,4134,2,2049,2722,10,1,8203,2049,2397, + 3,10,8023,8238,166,0,0,110,58,116,111,45,115,116,114,105,110,103,0,1793, + 8252,1,8074,2049,4234,2,2049,3086,2049,8201,2049,8156,10,1,8240,2049,4260,1,8074,2049, + 4616,10,8221,8271,166,0,0,99,104,97,114,0,1,32,1793,8280,1,95,2049,4134, + 10,1,8275,2049,2554,1,114,1793,8293,1,13,2049,4134,10,1,8288,2049,2554,1,110, + 1793,8306,1,10,2049,4134,10,1,8301,2049,2554,1,116,1793,8319,1,9,2049,4134,10, + 1,8314,2049,2554,1,48,1793,8332,1,0,2049,4134,10,1,8327,2049,2554,1,94,1793, + 8345,1,27,2049,4134,10,1,8340,2049,2554,2049,4134,10,8261,8362,166,0,0,116,121, + 112,101,0,1,99,1793,8370,4,2049,4134,10,1,8366,2049,2554,1,115,1793,8384,4, + 1,4134,2049,4741,10,1,8378,2049,2554,1,110,1793,8400,4,2049,8238,1,4134,2049,4741, + 10,1,8392,2049,2554,3,10,8352,8418,166,0,0,104,97,110,100,108,101,0,1, + 92,1793,8427,2049,56,2049,8271,10,1,8422,2049,2554,1,37,1793,8440,2049,56,2049,8362, + 10,1,8435,2049,2554,2049,4134,10,8221,8461,166,0,0,115,58,102,111,114,109,97, + 116,0,1793,8490,2049,4451,1793,8485,2049,4234,1793,8480,2049,56,25,2049,8418,1,8471,7, + 10,1,8471,8,3,10,1,8467,2049,2241,10,1,8463,2049,4260,10,8447,8508,166,0, + 0,115,58,99,111,110,115,116,0,1,4500,2049,2229,2049,2131,10,8495,8527,154,0, + 0,86,97,108,117,101,115,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8515,8565,166,0, + 0,102,114,111,109,0,2049,102,2,1793,8583,1793,8576,1,8527,4113,10,1,8572,2049, + 2241,2049,3139,10,1,8570,2049,2449,3,10,8555,8597,166,0,0,116,111,0,2,2049, + 102,1793,8613,2049,56,1,97,18,2049,3125,1,8527,266001,10,1,8602,2049,2449,3,10, + 8495,8632,166,0,0,114,101,111,114,100,101,114,0,1,8565,2049,2229,2049,8597,10, + 8619,8650,166,0,0,99,117,114,114,121,0,2049,1977,1793,8660,4,2049,1818,2049,1843, + 10,1,8654,2049,2229,10,8639,8675,166,0,0,100,111,101,115,0,2049,1595,4,2049, + 8650,2049,1576,2049,180,16,1,166,2049,1660,10,8665,8706,166,0,0,100,58,102,111, + 114,45,101,97,99,104,0,1,2,1793,8732,6415,2049,2217,1793,8724,1793,8719,2052,10, + 1,8717,2049,2229,10,1,8715,2049,2229,1,8710,7,10,1,8710,8,3,10,8690,8754, + 166,0,0,100,58,108,111,111,107,117,112,45,120,116,0,1,0,4,1793,8779, + 2049,2217,2049,180,2831,1793,8772,4,1,2172,2049,2229,10,1,8766,1,15,2049,64,10, + 1,8759,2049,8706,3,10,8737,8799,166,0,0,97,58,108,101,110,103,116,104,0, + 15,10,8785,8824,166,0,0,97,58,99,111,117,110,116,101,100,45,114,101,115, + 117,108,116,115,0,8,2049,1977,1793,8837,2,2049,128,1,128,2049,2449,10,1,8829, + 2049,2229,10,8801,8861,166,0,0,97,58,102,114,111,109,45,115,116,114,105,110, + 103,0,2049,1977,1793,8875,2,2049,102,2049,128,1,128,2049,4741,10,1,8865,2049,2229, + 10,8842,8896,166,0,0,97,58,102,111,114,45,101,97,99,104,0,4,2049,56, + 1,17,2049,2229,1793,8912,5,2049,56,84018692,525572,1542,10,1,8905,2049,2449,771,10,8880, + 8929,166,0,0,97,58,100,117,112,0,2049,1977,1793,8942,2,15,2049,128,1,128, + 2049,8896,10,1,8933,2049,2229,10,8918,8959,166,0,0,97,58,99,111,112,121,0, + 1,3,1793,8975,4097,3,2,2049,8799,2049,128,1,128,2049,8896,10,1,8963,2049,3967, + 10,8947,8997,166,0,0,97,58,116,111,45,115,116,114,105,110,103,0,1,3, + 1793,9010,2049,8929,1,0,2049,128,2049,3125,10,1,9001,2049,3967,2049,4423,10,8980,9031, + 166,0,0,97,58,97,112,112,101,110,100,0,2049,2217,1,35,2049,2285,17,2049, + 1977,1793,9056,2049,128,1793,9051,1,128,2049,8896,10,1,9046,2049,2285,10,1,9042,2049, + 2229,10,9017,9076,166,0,0,97,58,112,114,101,112,101,110,100,0,4,2049,9031, + 10,9061,9092,166,0,0,97,58,99,104,111,112,0,2049,8929,1,-1,2049,3946,2, + 2049,3881,10,9080,9116,166,0,0,97,58,102,105,108,116,101,114,0,1793,9131,67502597, + 1,25,2049,2229,4,1,128,1,15,2049,64,10,1,9118,2049,8650,2049,1977,1793,9146, + 67502597,15,2049,128,2049,8896,10,1,9139,2049,2229,2049,1977,67502597,18,2049,3139,67502597,16,10, + 9102,9176,166,0,0,97,58,99,111,110,116,97,105,110,115,63,0,1,0,4, + 1793,9188,4,5,67502597,11,6,22,10,1,9181,2049,8896,772,10,9159,9218,166,0,0, + 97,58,99,111,110,116,97,105,110,115,47,115,116,114,105,110,103,63,0,1, + 0,4,1793,9231,4,5,67502597,2049,116,6,22,10,1,9223,2049,8896,772,10,9194,9248, + 166,0,0,97,58,109,97,112,0,1793,9254,8,2049,128,10,1,9250,2049,8650,2049, + 1977,1793,9269,67502597,15,2049,128,2049,8896,10,1,9262,2049,2229,10,9237,9289,166,0,0, + 97,58,114,101,118,101,114,115,101,0,2049,1977,1793,9323,2049,56,1793,9301,17,2049, + 3139,10,1,9297,2049,2241,2,2049,128,1793,9317,2,15,2049,128,2049,3139,10,1,9310, + 2049,2449,3,10,1,9293,2049,2229,10,9274,9338,166,0,0,97,58,116,104,0,17, + 2049,3125,10,9328,9355,166,0,0,97,58,102,101,116,99,104,0,2049,9338,15,10, + 9342,9372,166,0,0,97,58,115,116,111,114,101,0,2049,9338,16,10,9359,9390,166, + 0,0,97,58,114,101,100,117,99,101,0,1,17,2049,2229,2049,8896,10,9376,9410, + 166,0,0,97,58,105,110,100,101,120,0,5,5,1,-1,1,0,6,6,4, + 1793,9458,67502597,11,1793,9445,1793,9440,67502597,1,-1,11,1793,9436,772,2,10,1,9433,9, + 10,1,9427,2049,2229,10,1,9425,9,1793,9453,2049,3125,10,1,9450,2049,2229,10,1, + 9421,2049,8896,771,10,9397,9478,166,0,0,105,100,101,110,116,105,102,121,0,1, + -1,4,1,0,1793,9509,2049,2527,11,1793,9503,67502597,1,-1,11,1793,9499,772,2,10, + 1,9496,9,10,1,9490,9,2049,3125,10,1,9485,2049,9390,3,10,9397,9535,166,0, + 0,97,58,105,110,100,101,120,47,115,116,114,105,110,103,0,1,3,1793,9548, + 1,116,2049,8650,2049,9248,2049,9478,10,1,9539,2049,3967,10,9515,9565,166,0,0,97, + 58,109,97,107,101,0,2049,8824,2,2,1,3,1793,9576,2049,9289,10,1,9573,2049, + 3967,4,2049,8959,10,9553,9591,178,0,0,123,0,1,332,2049,178,1,1560,2049,166, + 1,332,2049,178,10,9584,9611,178,0,0,125,0,1,348,2049,178,1,2229,2049,166, + 1,1560,2049,166,1,17,2049,172,1,41,2049,172,1,3139,2049,166,1,348,2049,178, + 1,9565,2049,166,10,9604,9657,166,0,0,98,111,117,110,100,115,63,0,67502597,2049, + 8799,67502597,13,10,9644,9673,166,0,0,99,111,112,121,0,2049,56,2049,128,10,9663, + 9690,166,0,0,116,111,45,101,110,100,0,2,2049,8799,17,2049,3125,10,9604,9709, + 166,0,0,97,58,108,101,102,116,0,2049,9657,1793,9717,771,1,-1,10,1,9713, + 2049,2862,2049,1977,67502597,2049,128,1793,9738,1,3125,2049,2229,1,9673,2049,2449,3,10,1, + 9728,2049,2229,10,9697,9756,166,0,0,97,58,114,105,103,104,116,0,2049,9657,1793, + 9764,771,1,-1,10,1,9760,2049,2862,2049,1977,67502597,2049,128,1793,9787,4,2049,9690,67502597, + 18,4,1,9673,2049,2449,3,10,1,9775,2049,2229,10,9743,9806,166,0,0,97,58, + 109,105,100,100,108,101,0,1,2161,2049,2229,4,67502597,2049,9657,1793,9821,771,3,1, + -1,10,1,9816,2049,2862,771,2049,2217,4,18,2049,3125,2049,1977,67502597,2049,128,1793,9856, + 772,1793,9846,17,2049,3125,10,1,9842,2049,2229,1,9673,2049,2449,3,10,1,9839,2049, + 2229,10,9792,9871,154,0,0,70,108,97,103,0,0,9861,9885,166,0,0,99,111, + 109,112,97,114,101,0,67440386,184946434,10,9872,9900,166,0,0,108,101,110,103,116,104, + 0,659202,10,9888,9912,166,0,0,110,101,120,116,0,17043713,1,1,2577,10,9902,9932, + 166,0,0,110,111,116,45,101,113,117,97,108,0,50529030,2561,0,10,9917,9946,166, + 0,0,108,111,111,112,0,524549,9912,2049,9885,18157313,9871,9871,16,420610310,1,1,9946,7, + 10,9792,9971,166,0,0,97,58,101,113,63,0,1048833,-1,9871,2049,9885,151066369,-1,9932, + 2049,9900,2049,9946,251724547,9871,10,9960,9998,166,0,0,97,58,45,101,113,63,0,2049, + 9971,2049,2644,10,9986,10023,166,0,0,97,58,98,101,103,105,110,115,45,119,105, + 116,104,63,0,1,3,1793,10039,2,2049,8799,1,17,2049,2229,2049,9709,2049,9971,10, + 1,10027,2049,3967,10,10003,10062,166,0,0,97,58,101,110,100,115,45,119,105,116, + 104,63,0,1,3,1793,10078,2,2049,8799,1,17,2049,2229,2049,9756,2049,9971,10,1, + 10066,2049,3967,10,10044,10101,166,0,0,99,117,114,114,101,110,116,45,108,105,110, + 101,0,2049,4331,1,1025,18,10,10083,10125,166,0,0,99,111,117,110,116,45,116, + 111,107,101,110,115,0,1793,10131,1,32,11,10,1,10127,2049,5339,2049,102,10,10107, + 10158,166,0,0,112,114,111,99,101,115,115,45,116,111,107,101,110,115,0,1793, + 10186,1,32,2049,7185,4,1793,10179,2,2049,102,2049,2740,1,410,1,15,2049,64,10, + 1,10167,2049,2229,2049,3125,10,1,10160,2049,2449,2049,410,10,10044,10209,166,0,0,115, + 58,101,118,97,108,117,97,116,101,0,2049,10101,2049,5574,2049,10101,2,2049,10125,2049, + 10158,10,10193,10229,154,0,0,76,80,0,0,10221,10241,154,0,0,73,110,100,101, + 120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,10230,10283,166,0,0,110, + 101,120,116,0,3841,10229,1,10241,17,2049,3864,10,10273,10301,166,0,0,112,114,101, + 112,0,1,10229,2049,3864,1,0,3841,10229,1,10241,17,16,10,10291,10324,166,0,0, + 100,111,110,101,0,1,10229,2049,3881,10,10193,10336,166,0,0,73,0,3841,10229,1, + 10241,17,15,10,10329,10350,166,0,0,74,0,3841,10229,1,10241,17,2049,3139,15,10, + 10343,10366,166,0,0,75,0,3841,10229,1,10241,17,1,2,18,15,10,10359,10395,166, + 0,0,105,110,100,101,120,101,100,45,116,105,109,101,115,0,2049,10301,4,1793, + 10411,25,33886721,1,2053,1542,2049,10283,1,10400,7,10,1,10400,8,3,2049,10324,10,10376, + 10431,166,0,0,100,101,99,105,109,97,108,0,1,10,4097,236,10,10418,10448,166, + 0,0,98,105,110,97,114,121,0,1,2,4097,236,10,10436,10464,166,0,0,111, + 99,116,97,108,0,1,8,4097,236,10,10453,10478,166,0,0,104,101,120,0,1, + 16,4097,236,10,10469,10501,166,0,0,105,111,58,101,110,117,109,101,114,97,116, + 101,0,27,10,10483,10517,166,0,0,105,111,58,113,117,101,114,121,0,28,10, + 10503,10534,166,0,0,105,111,58,105,110,118,111,107,101,0,29,10,10519,10553,166, + 0,0,105,111,58,115,99,97,110,45,102,111,114,0,1,-1,4,2049,10501,1793, + 10584,2049,10336,2049,10517,772,67502597,11,1793,10580,1793,10575,3,2049,10336,10,1,10571,2049,2229, + 10,1,10569,9,10,1,10560,2049,10395,3,10,10536,10601,166,0,0,99,58,112,117, + 116,0,1793,10603,1,0,2049,10534,10,10590,10616,166,0,0,110,108,0,1,10,2049, + 10601,10,10608,10629,166,0,0,115,112,0,1,32,2049,10601,10,10621,10643,166,0,0, + 116,97,98,0,1,9,2049,10601,10,10634,10659,166,0,0,115,58,112,117,116,0, + 1,10601,2049,4741,10,10648,10675,166,0,0,110,58,112,117,116,0,2049,8238,2049,10659, + 10,10664,10691,166,0,0,114,101,115,101,116,0,2049,1560,25,771,1,10691,7,10, + 10680,10715,166,0,0,100,117,109,112,45,115,116,97,99,107,0,2049,1560,25,134284547, + 10715,134283782,10675,2049,10629,10,10699,10735,166,0,0,70,82,69,69,0,2049,4331,1,1025, + 18,2049,1977,18,10,10725,10754,166,0,0,101,111,108,63,0,1793,10760,1,13,11, + 10,1,10756,1793,10768,1,10,11,10,1,10764,1793,10776,1,32,11,10,1,10772,2049, + 2298,22,22,10,10744,10795,166,0,0,118,97,108,105,100,63,0,2,2049,102,2049, + 2740,10,10783,10810,166,0,0,98,115,63,0,2,1793,10817,1,8,11,10,1,10813, + 1793,10825,1,127,11,10,1,10821,2049,2255,22,10,10801,10845,166,0,0,99,104,101, + 99,107,45,98,115,0,2049,10810,1793,10868,2049,4212,1,2,2049,2675,1793,10861,2049,4160, + 3,10,1,10857,9,2049,4160,3,10,1,10849,9,10,10725,10883,166,0,0,99,58, + 103,101,116,0,1793,10885,1,1,2049,10553,2049,10534,10,10872,10908,166,0,0,115,58, + 103,101,116,45,119,111,114,100,0,1793,10936,1,7,15,2049,4234,1793,10927,2049,10883, + 2,2049,4134,2049,10845,2049,10754,10,1,10917,2049,2397,2049,4096,2049,4587,10,1,10910,2049, + 4260,10,10892,10950,166,0,0,98,121,101,0,26,10,10941,10964,166,0,0,108,105, + 115,116,101,110,0,2049,10908,2049,10795,1,410,1,15,2049,64,1,10964,7,10,0 }; diff --git a/vm/nga-c-no-libc/retro.c b/vm/nga-c-no-libc/retro.c index f31dd5e..d8302f3 100644 --- a/vm/nga-c-no-libc/retro.c +++ b/vm/nga-c-no-libc/retro.c @@ -10,8 +10,7 @@ This file contains a minimal implementation of the virtual machine. - - Copyright (c) 2008 - 2021, Charles Childers + Copyright (c) 2008 - 2022, Charles Childers Copyright (c) 2009 - 2010, Luke Parrish Copyright (c) 2010, Marc Simpson Copyright (c) 2010, Jay Skeer @@ -79,7 +78,6 @@ int main(int argc, char **argv) { memory[i] = ngaImage[i]; execute(0); - return 0; } void prepare_vm() {