~crc_/retroforth

f8fe4b98a6920268774dfad17352b79d8a394255 — crc 16 days ago 03b6543
as: words not included by default, split into separate file

FossilOrigin-Name: 19e4a3624a82cd293f23329d9ec5d2755db1eb656f7dd8c10373a78d76cf3b71
5 files changed, 202 insertions(+), 296 deletions(-)

M GNUmakefile
M Makefile
M interface/future.retro
A interface/new-strings.retro
M vm/nga-c/image.c
M GNUmakefile => GNUmakefile +1 -0
@@ 83,6 83,7 @@ DEVICES += interface/unsigned.retro
DEVICES += interface/ffi.retro
DEVICES += interface/retro-napia.retro
DEVICES += interface/future.retro
# DEVICES += interface/new-strings.retro
DEVICES += interface/block.retro
DEVICES += interface/deprecated.retro
DEVICES += interface/double.retro

M Makefile => Makefile +1 -0
@@ 68,6 68,7 @@ DEVICES += interface/ffi.retro
DEVICES += interface/unsigned.retro
DEVICES += interface/retro-napia.retro
DEVICES += interface/future.retro
# DEVICES += interface/new-strings.retro
DEVICES += interface/block.retro
DEVICES += interface/deprecated.retro
DEVICES += interface/double.retro

M interface/future.retro => interface/future.retro +0 -133
@@ 7,10 7,6 @@ Notes:
`aa:` is a new set of array words. These will be replacing the
existing set in the future.

`as:` is a new set of string words. These will be replacing the
existing set in the future. (In the current system, strings are
null terminated. The `as` strings are length-prefixed instead.)

~~~
'NextArray var
:arrays FREE #513 #12 n:mul n:sub ;


@@ 28,12 24,6 @@ null terminated. The `as` strings are length-prefixed instead.)
                      &store sip n:inc ] times
         drop-pair ] sip ;

:as:map aa:map ;

:as:left a:left ;
:as:right a:right ;
:as:middle a:middle ;

{{
  'Count var
  :prepare  #0 &Count store ;


@@ 53,137 43,14 @@ null terminated. The `as` strings are length-prefixed instead.)
:aa:contains? (an-f)
  swap #0 swap [ swap [ over eq? ] dip or ] a:for-each nip ;

:as:contains? aa:contains? ;

:as:filter a:filter ;

:as:length fetch ;

:as:th n:inc n:add ;
:as:store a:th store ;
:as:fetch as:th fetch ;

:aa:first (a-n) #0 a:fetch ;
:aa:last  (a-n) dup a:length n:dec a:fetch ;

:as:first aa:first ;
:as:last aa:last ;
:as:index/c aa:index ;


:as:dup a:dup ;
:as:last aa:last ;
:as:temp a:dup ;

:as:trim-right (s-s)
  as:temp [ dup v:dec [ as:last #32 lteq? ] sip swap ] while
  dup v:inc ;

{{
  'Start var
  'End var
  'Len var
  :find-end dup as:length dup !Len over n:add n:inc !End n:inc ;
  :new-size @Start over swap n:sub @Len swap n:sub ;
  :patch    over store ;
---reveal---
  :as:trim-left (s-s)
    as:dup dup #0 as:fetch #32 eq?
    [ dup !Start find-end
      [ fetch-next #32 -eq? over @End -eq? and ] while
      new-size patch ] if ;
}}

:as:trim (s-s) as:trim-left as:trim-right ;

:sigil:" (s-a) here [ dup s:length comma &comma s:for-each ] dip ; immediate

:as:for-each (sq-) a:for-each ;

:aa:hash (a-n) #5381 swap [ swap #33 n:mul n:add ] a:for-each ;
:as:hash (s-n) aa:hash ;

:aa:eq? (aa-f) aa:hash swap aa:hash eq? ;
:aa:-eq? (aa-f) aa:hash swap aa:hash -eq? ;
:as:eq? (ss-f) aa:eq? ;
:as:-eq? (ss-f) aa:-eq? ;

:a:dup here [ dup a:length comma &comma a:for-each ] dip ;
:as:dup a:dup ;

:as:temp ;
:as:keep ;

:as:to-upper (s-s) [ as:dup &c:to-upper as:map as:temp ] gc ;
:as:to-lower (s-s) [ as:dup &c:to-lower as:map as:temp ] gc ;
~~~

  a:append        aa-a    Create a new array with the contents of a1
  a:behead        a-a     Remove first item from an array
  a:chop  a-a     Remove last item from an array
* a:contains?     an-f    True if array contains n. False otherwise
  a:copy  sd-     Copy array from s to d
* a:dup   a-a     Make a copy of an array
* a:eq?   aa-f    Compare two arrays for equality
* a:-eq?  aa-f    Compare two arrays for inequality
* a:fetch an-v    Fetch value stored at index n in array
  a:filter        aq-a    Run q once for each value in a. If it returns
  a:first a-n     Return the first value in an array
* a:for-each      aq-     Run q once for each value in the array. Pushes
* a:hash  a-n     Return the hash of an array
* a:indices       av-a    Return array of indices for v in source array
* a:index av-n    Return first index of n in a
  a:last  a-n     Return the last value in an array
* a:left  an-a    Return left n values from array
* a:length        a-n     Return the length of an array
* a:make  ...n-a  Create a new permanent array from the provided values
  a:make/temp     ...n-a  Create a new temporary array from the
* a:map   aq-a    Run q once for each value in the array. Takes the
* a:middle        afl-a   Return new array from f to l, inclusive
  a:prepend       aa-a    Create a new array with the contents of a2
  a:reduce        anq-n   Takes an array, a starting value, and a quote.
  a:reverse       a-a     Reverse the order of items in an array
* a:right an-a    Return right n values from array
* a:store van-    Store value v into array at index n
  a:temp  a-a     Make a copy of the array in the temporary string/array
* a:th    an-p    Return the address of a specific index into the array


  s:append        ss-s    Append s2 to s1, returning new temporary string
  s:behead        s-s     Remove first item from a string
  s:chop  s-s     Remove last item from a string
* s:contains?     sc-f    True if string contains c. False otherwise
  s:copy  sd-     Copy string s to memory at d
* s:dup   s-s     Make a copy of string
* s:eq?   ss-f    Compare two strings for equality
* s:-eq?  ss-f    Compare two strings for inequality
  s:evaluate      s-?     Interpret each token in a string
* s:fetch sn-c    Return character at index n in the string
* s:filter        sq-s    Run q once for each value in s If it returns
  s:first s-c     Return the first character in a string
  s:for-each      sq-     Run q once for each character in s. Pushes
  s:get/line      '-s     Read a line of input until enter is
  s:get/token     -s      Read a string from the keyboard ending when
* s:hash  s-n     Return the hash of the string
* s:index/c       sc-f    True if string contains c, false otherwise
  s:keep  s-s     Move string to here, allocating space and returning
  s:last  s-c     Return the last character in a string
* s:left  sn-s    Return left n characters of string
* s:length        s-n     Return the length of a string
* s:middle        sfl-s   Return substring from f to l, inclusive
  s:pool  -p      Return the starting address of the temporary string/array
  s:prepend       ss-s    Create a new string with the contents of s2
  s:put   s-      Display a string
  s:reverse       s-s     Reverse the order of values in the string.
  s:rewrite       s-s     Replace underscores in string with spaces
* s:right sn-s    Return right n characters of string
* s:store csn-    Store character into string at index n
  s:temp  s-s     Put a copy of a string in the temporary buffers.
* s:th    sn-a    Given a string and index, return the address
* s:to-lower      s-s     Make all characters in string lowercase
  s:to-n  s-n     Convert a string to a number
* s:to-upper      s-s     Make all characters in a string uppercase
* s:trim  s-s     Trim both leading and trailing whitespace from a string
* s:trim-right    s-s     Trim trailing whitespace from a string
* s:trim-left     s-s     Trim leading whitespace from a string


A interface/new-strings.retro => interface/new-strings.retro +73 -0
@@ 0,0 1,73 @@
# New Words

This contains a variety of words from my more recent systems.

Notes:

`as:` is a new set of string words. These will be replacing the
existing set in the future. (In the current system, strings are
null terminated. The `as` strings are length-prefixed instead.)

~~~
:as:map aa:map ;

:as:left a:left ;
:as:right a:right ;
:as:middle a:middle ;

:as:contains? aa:contains? ;

:as:filter a:filter ;

:as:length fetch ;

:as:th n:inc n:add ;
:as:store a:th store ;
:as:fetch as:th fetch ;

:as:first aa:first ;
:as:last aa:last ;
:as:index/c aa:index ;

:as:dup a:dup ;
:as:last aa:last ;
:as:temp a:dup ;

:as:trim-right (s-s)
  as:temp [ dup v:dec [ as:last #32 lteq? ] sip swap ] while
  dup v:inc ;

{{
  'Start var
  'End var
  'Len var
  :find-end dup as:length dup !Len over n:add n:inc !End n:inc ;
  :new-size @Start over swap n:sub @Len swap n:sub ;
  :patch    over store ;
---reveal---
  :as:trim-left (s-s)
    as:dup dup #0 as:fetch #32 eq?
    [ dup !Start find-end
      [ fetch-next #32 -eq? over @End -eq? and ] while
      new-size patch ] if ;
}}

:as:trim (s-s) as:trim-left as:trim-right ;

:sigil:" (s-a) here [ dup s:length comma &comma s:for-each ] dip ; immediate

:as:for-each (sq-) a:for-each ;

:as:hash (s-n) aa:hash ;

:as:eq? (ss-f) aa:eq? ;
:as:-eq? (ss-f) aa:-eq? ;

:as:dup a:dup ;

:as:temp ;
:as:keep ;

:as:to-upper (s-s) [ as:dup &c:to-upper as:map as:temp ] gc ;
:as:to-lower (s-s) [ as:dup &c:to-lower as:map as:temp ] gc ;
~~~

M vm/nga-c/image.c => vm/nga-c/image.c +127 -163
@@ 10,8 10,8 @@
#define CELL_MAX LLONG_MAX - 1
#endif
#endif
CELL ngaImageCells = 20664;
CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10,1,10,2,10,3,10,
CELL ngaImageCells = 19953;
CELL ngaImage[] = { 1793,19462,19908,19952,202301,415,387,1247,1535,0,10995,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,163,180,268505089,65,64,285281281,0,65,2063,10,101384453,0,9,10,68485378,


@@ 20,8 20,8 @@ CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10
                       1,251790353,101777669,1,17565186,109,524545,113,66,167838467,-1,134287105,3,61,659457,3,459023,130,2049,58,
                       25,2049,130,1793,137,2049,137,117506307,0,130,0,524545,28,135,168820993,0,149,1642241,149,134283523,
                       13,135,1793,130,524545,2049,130,1793,130,16846593,149,163,180,1793,66,16846593,149,135,180,1793,
                       66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,20428,17108737,3,2,524559,130,
                       2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,19409,1247,167841793,
                       66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19717,17108737,3,2,524559,130,
                       2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18698,1247,167841793,
                       216,11,17826049,0,216,2,15,25,524546,190,134287105,217,118,2305,218,459023,226,134287361,217,221,
                       659201,216,10,659969,7,2049,58,25,17694978,58,242,9,84152833,48,319750404,241,117507601,244,184618754,45,
                       25,16974851,-1,168886532,1,134284289,1,257,134284289,0,244,660227,32,0,0,115,105,103,105,108,


@@ 170,7 170,7 @@ CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10
                       110,58,105,110,99,0,659713,1,10,3114,3139,168,16552,210720197721,110,58,100,101,99,0,
                       659969,1,10,3128,3158,168,16552,8246617666422322998,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,168,16552,249861296566813883,83,99,
                       111,112,101,76,105,115,116,0,20521,20575,10,3172,3198,168,16552,5864091,123,123,0,2049,
                       111,112,101,76,105,115,116,0,19810,19864,10,3172,3198,168,16552,5864091,123,123,0,2049,
                       1576,2,1,3187,2049,61,16,10,3190,3225,168,16552,-6305314778776785742,45,45,45,114,101,118,101,
                       97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,168,16552,5864159,125,
                       125,0,1,3187,2049,58,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281,


@@ 228,7 228,7 @@ CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10
                       10,4239,4297,156,16552,-4600587576916820603,84,101,109,112,83,116,114,105,110,103,115,0,32,4280,
                       4317,156,16552,7474516786580364824,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,4298,
                       4331,168,16552,229440420829967,83,84,82,73,78,71,83,0,2049,1545,3841,4297,3841,4317,19,18,
                       10,4318,4353,156,0,0,67,117,114,114,101,110,116,0,26,10,4340,4370,168,0,
                       10,4318,4353,156,0,0,67,117,114,114,101,110,116,0,20,10,4340,4370,168,0,
                       0,115,58,112,111,105,110,116,101,114,0,3841,4353,3841,4317,19,2049,4331,17,10,
                       4355,4391,168,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,168,16552,6953962777192,115,58,116,


@@ 888,160 888,124 @@ CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10
                       0,2049,1977,1793,17492,2,2049,17351,1,17351,2049,2449,10,1,17484,2049,2229,10,17467,17509,
                       168,0,6953302515007,97,97,58,109,97,112,0,4,1793,17539,2049,58,1793,17533,1793,17522,15,
                       67502597,8,10,1,17518,2049,2241,1,39,2049,2241,2049,3125,10,1,17516,2049,2449,771,10,
                       1,17512,2049,2241,10,17497,17556,168,0,6953323861585,97,115,58,109,97,112,0,2049,17509,10,
                       17544,17572,168,0,229459687400510,97,115,58,108,101,102,116,0,2049,8654,10,17559,17589,168,0,
                       7572169691476913,97,115,58,114,105,103,104,116,0,2049,8673,10,17575,17607,168,0,249881599622948834,97,115,
                       58,109,105,100,100,108,101,0,2049,8614,10,17592,17621,156,0,210671126606,67,111,117,110,
                       116,0,0,17610,17635,168,0,229479071419028,112,114,101,112,97,114,101,0,1,0,1,17621,
                       16,10,17622,17654,168,0,229481161821089,114,101,115,101,114,118,101,0,4,1,0,2049,17351,
                       10,17641,17671,168,0,210723988469,112,97,116,99,104,0,2049,1977,67502597,2049,17283,2049,3139,67502597,
                       16,10,17660,17694,168,0,229462046998285,99,108,101,97,110,117,112,0,2,2049,4423,4,1,
                       0,16,10,17681,17714,168,0,6953774213361,109,97,116,99,104,63,0,67502597,11,10,17702,17729,
                       168,0,6953974036516,114,101,99,111,114,100,0,1,17621,15,2049,17351,10,17717,17748,168,0,
                       229470109485971,105,116,101,114,97,116,101,0,1793,17760,2049,17714,1,17729,9,1,17621,2049,3864,
                       10,1,17750,2049,8777,10,17592,17781,168,0,8246067467232158272,97,97,58,105,110,100,105,99,101,
                       115,0,2049,17635,2049,1977,1793,17793,2049,17654,2049,17748,3,10,1,17787,2049,2229,2049,17671,
                       2049,17694,10,17765,17816,168,0,7572146434556505,97,97,58,105,110,100,101,120,0,1793,17825,2049,
                       17781,1,0,2049,9236,10,1,17818,2049,17362,10,17802,17848,168,0,-3596900463221605921,97,97,58,99,
                       111,110,116,97,105,110,115,63,0,4,1,0,4,1793,17866,4,1793,17860,67502597,11,
                       10,1,17857,2049,2229,22,10,1,17854,2049,8777,772,10,17830,17890,168,0,-3569332041486845839,97,115,
                       58,99,111,110,116,97,105,110,115,63,0,2049,17848,10,17872,17908,168,0,249881599349305785,97,
                       115,58,102,105,108,116,101,114,0,2049,8997,10,17893,17926,168,0,249881599579432661,97,115,58,
                       108,101,110,103,116,104,0,15,10,17911,17939,168,0,210706783919,97,115,58,116,104,0,
                       2049,3125,2049,17270,10,17928,17958,168,0,7572169693067168,97,115,58,115,116,111,114,101,0,2049,
                       9219,16,10,17944,17976,168,0,7572169677116093,97,115,58,102,101,116,99,104,0,2049,17939,15,
                       10,17962,17994,168,0,7572146430834761,97,97,58,102,105,114,115,116,0,1,0,2049,9236,10,
                       17980,18012,168,0,229458982959509,97,97,58,108,97,115,116,0,2,2049,8598,2049,3139,2049,9236,
                       10,17999,18034,168,0,7572169677258203,97,115,58,102,105,114,115,116,0,2049,17994,10,18020,18050,
                       168,0,229459687396583,97,115,58,108,97,115,116,0,2049,18012,10,18037,18069,168,0,8246092782587163933,97,
                       115,58,105,110,100,101,120,47,99,0,2049,17816,10,18053,18084,168,0,6953323852444,97,115,
                       58,100,117,112,0,2049,8810,10,18072,18100,168,0,229459687396583,97,115,58,108,97,115,116,
                       0,2049,18012,10,18087,18116,168,0,229459687688233,97,115,58,116,101,109,112,0,2049,8810,10,
                       18103,18138,168,0,-7106699936504964166,97,115,58,116,114,105,109,45,114,105,103,104,116,0,2049,
                       18116,1793,18160,2,2049,3881,1793,18154,2049,18100,1,32,2049,2659,10,1,18147,2049,2241,4,
                       10,1,18142,2049,2372,2,2049,3864,10,18119,18179,156,0,210690259379,83,116,97,114,116,0,
                       0,18168,18189,156,0,193455868,69,110,100,0,0,18180,18199,156,0,193463204,76,101,110,0,
                       0,18190,18214,168,0,7572371885291434,102,105,110,100,45,101,110,100,0,2,2049,17926,2,4097,
                       18199,67502597,2049,17270,2049,3125,4097,18189,2049,3125,10,18200,18244,168,0,7572707956476599,110,101,119,45,
                       115,105,122,101,0,3841,18179,67502597,4,2049,17283,3841,18199,4,2049,17283,10,18230,18267,168,
                       0,210723988469,112,97,116,99,104,0,67502597,16,10,18119,18288,168,0,-3569308011477864665,97,115,58,116,
                       114,105,109,45,108,101,102,116,0,2049,18084,2,1,0,2049,17976,1,32,11,1793,
                       18327,2,4097,18179,2049,18214,1793,18318,2049,58,1,32,12,67502597,3841,18189,12,21,10,1,
                       18307,2049,2372,2049,18244,2049,18267,10,1,18300,9,10,18270,18344,168,0,229459687702255,97,115,58,
                       116,114,105,109,0,2049,18288,2049,18138,10,18331,18362,180,0,229482595734745,115,105,103,105,108,
                       58,34,0,2049,1977,1793,18376,2,2049,104,2049,17351,1,17351,2049,4741,10,1,18366,2049,
                       2229,10,18349,18398,168,0,-4580099406349869736,97,115,58,102,111,114,45,101,97,99,104,0,2049,
                       8777,10,18381,18414,168,0,229458982815749,97,97,58,104,97,115,104,0,1,5381,4,1793,18427,
                       4,1,33,2049,17296,2049,17270,10,1,18419,2049,8777,10,18401,18445,168,0,229459687252823,97,115,
                       58,104,97,115,104,0,2049,18414,10,18432,18460,168,0,6953302506774,97,97,58,101,113,63,
                       0,2049,18414,4,2049,18414,11,10,18448,18480,168,0,229458980699715,97,97,58,45,101,113,63,
                       0,2049,18414,4,2049,18414,12,10,18467,18499,168,0,6953323853352,97,115,58,101,113,63,0,
                       2049,18460,10,18487,18515,168,0,229459685136789,97,115,58,45,101,113,63,0,2049,18480,10,18502,
                       18529,168,0,210704781289,97,58,100,117,112,0,2049,1977,1793,18543,2,2049,8598,2049,17351,1,
                       17351,2049,8777,10,1,18533,2049,2229,10,18518,18560,168,0,6953323852444,97,115,58,100,117,112,
                       0,2049,18529,10,18548,18576,168,0,229459687688233,97,115,58,116,101,109,112,0,10,18563,18590,
                       168,0,229459687364536,97,115,58,107,101,101,112,0,10,18577,18608,168,0,-4580098812306212145,97,115,58,
                       116,111,45,117,112,112,101,114,0,1793,18619,2049,18560,1,6804,2049,17556,2049,18576,10,
                       1,18610,2049,17362,10,18591,18641,168,0,-4580098812316913748,97,115,58,116,111,45,108,111,119,101,
                       114,0,1793,18652,2049,18560,1,6829,2049,17556,2049,18576,10,1,18643,2049,17362,10,18624,18675,
                       168,0,-3527051417241377258,98,108,111,99,107,58,105,110,118,111,107,101,0,1,3,2049,10534,
                       2049,10515,10,18624,18698,168,0,8246131600073141446,98,108,111,99,107,58,114,101,97,100,0,1,
                       0,2049,18675,10,18682,18720,168,0,-4578818303223200395,98,108,111,99,107,58,119,114,105,116,101,
                       0,1,1,2049,18675,10,18703,18745,168,0,-4036225629868593021,98,108,111,99,107,58,115,101,116,
                       45,102,105,108,101,0,1,2,2049,18675,10,18725,18763,168,0,229480770855518,115,58,115,112,
                       108,105,116,0,2049,7184,10,18750,18789,168,0,6119006473764520940,115,58,115,112,108,105,116,45,
                       111,110,45,115,116,114,105,110,103,0,2049,7218,10,18766,18814,168,0,-2157201768052001381,115,58,
                       99,111,110,116,97,105,110,115,45,99,104,97,114,63,0,2049,4857,10,18792,18841,
                       168,0,-6456228026363444588,115,58,99,111,110,116,97,105,110,115,45,115,116,114,105,110,103,
                       63,0,2049,5286,10,18817,18868,168,0,-3160266536000611262,97,58,99,111,110,116,97,105,110,115,
                       45,115,116,114,105,110,103,63,0,2049,9099,10,18844,18887,168,0,8246014626430519194,97,58,105,
                       110,100,101,120,45,111,102,0,2049,9291,10,18871,18913,168,0,-5025353456659034242,97,58,105,110,
                       100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,9416,10,18890,18932,168,
                       0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0,2049,4779,10,18916,18958,168,0,
                       -94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,
                       5069,10,18935,18977,168,0,8246228896775126019,100,111,117,98,108,101,58,118,97,114,0,2049,2075,
                       4,2049,130,2049,130,10,18961,19003,168,0,-3421095308458227740,100,111,117,98,108,101,58,102,101,
                       116,99,104,0,2049,58,4,15,10,18985,19026,168,0,-3421095308442276665,100,111,117,98,108,101,
                       58,115,116,111,114,101,0,1,19,2049,2229,2049,61,16,10,19008,19052,168,0,-3421095308461432127,
                       100,111,117,98,108,101,58,99,111,110,115,116,0,2049,18977,1,19003,2049,8460,10,
                       19034,19076,168,0,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,0,67503109,5,67503109,
                       6,10,19059,19097,168,0,8246228896775106679,100,111,117,98,108,101,58,100,105,112,0,67503109,67503109,
                       5,5,8,6,6,10,19081,19121,168,0,8246228896775123014,100,111,117,98,108,101,58,115,105,
                       112,0,1,2217,2049,2229,2049,19097,10,19105,19144,168,0,8246632143337714634,109,101,109,58,105,110,
                       118,111,107,101,0,1,15,2049,10534,2049,10515,10,19128,0,156,0,210667451248,65,76,76,
                       79,67,0,19151,1,156,0,6384048135,70,82,69,69,0,19162,2,156,0,210689088690,83,84,
                       79,82,69,0,19172,3,156,0,210673137615,70,69,84,67,72,0,19183,4,156,0,6952683137271,
                       82,69,83,73,90,69,0,19105,19221,168,0,249897943727936361,109,101,109,58,97,108,108,111,
                       99,0,1,0,2049,19144,10,19206,19241,168,0,249897943749573803,109,101,109,58,115,116,111,114,
                       101,0,1,2,2049,19144,10,19226,19261,168,0,249897943733622728,109,101,109,58,102,101,116,99,
                       104,0,1,3,2049,19144,10,19246,19280,168,0,7572664961638592,109,101,109,58,102,114,101,101,
                       0,1,1,2049,19144,10,19266,19301,168,0,8246632143679146032,109,101,109,58,114,101,115,105,122,
                       101,0,1,4,2049,19144,10,19285,19321,168,0,249897943730056489,109,101,109,58,99,101,108,108,
                       43,0,1,8,19,17,10,19306,19348,168,0,1050530996183190288,109,101,109,58,102,101,116,99,
                       104,45,100,111,117,98,108,101,0,2,1,1,2049,19321,15,5,2049,19261,6,10,
                       19326,19381,168,0,1730340976492540563,109,101,109,58,115,116,111,114,101,45,100,111,117,98,108,
                       101,0,5,5,2049,2217,1,1,2049,19321,6,2049,19241,6,2049,19241,10,19359,19405,168,
                       20192,193470948,84,73,66,0,1,7,15,10,19396,19425,168,20192,8246457295145463473,105,109,97,103,101,
                       58,115,97,118,101,0,1,1000,2049,10534,2049,10515,10,19409,19443,168,0,210711039690,101,100,
                       105,116,63,0,2,1793,19450,1,8,11,10,1,19446,1793,19458,1,127,11,10,1,
                       19454,2049,2255,22,10,19432,19476,168,0,6953539406400,103,97,116,104,101,114,0,2049,19443,1,
                       17,1,4134,2049,66,10,19464,19496,168,0,210709415765,99,121,99,108,101,0,2049,10864,2049,
                       2217,4,8,2049,2644,25,3,2049,19476,1,19496,7,10,19409,19529,168,20192,-4557881830897049127,112,97,
                       114,115,101,45,117,110,116,105,108,0,1793,19541,2049,4451,2049,4234,2049,19496,771,2049,
                       4096,10,1,19531,2049,4260,10,19512,19557,168,20192,210726130610,115,58,103,101,116,0,1793,19579,
                       1793,19565,1,13,11,10,1,19561,1793,19573,1,10,11,10,1,19569,2049,2255,22,10,
                       1,19559,2049,19529,10,19546,19595,168,20192,210708950412,99,108,101,97,114,0,2049,4472,92,94,
                       91,50,74,92,94,91,48,59,48,72,0,1,19597,2049,8246,2049,10640,10,19584,19629,
                       156,20192,6952575930081,78,111,69,99,104,111,0,0,19617,19639,156,0,193454829,69,79,84,0,
                       0,19630,19654,156,0,7571133383038306,73,103,110,111,114,105,110,103,0,0,19640,19670,168,0,
                       249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,19654,10,19655,19686,168,0,229486327000139,118,
                       101,114,115,105,111,110,0,3841,4,1,100,20,10,19673,19703,168,0,210710254026,100,111,
                       110,101,63,0,2,4097,19639,1793,19712,1,13,11,10,1,19708,1793,19720,1,10,11,
                       10,1,19716,1793,19728,1,32,11,10,1,19724,2049,2298,22,22,10,19692,19745,168,0,
                       6385195044,101,111,108,63,0,3841,19639,1793,19753,1,13,11,10,1,19749,1793,19761,1,10,
                       11,10,1,19757,2049,2255,22,10,19735,19779,168,0,6954126150804,118,97,108,105,100,63,0,
                       2,2049,104,2049,2812,10,19767,19800,168,0,249883998779477802,99,104,101,99,107,45,101,111,102,
                       0,2,1793,19807,1,-1,11,10,1,19803,1793,19815,1,4,11,10,1,19811,2049,2255,
                       22,1793,19825,2049,10931,10,1,19822,9,10,19785,19837,168,0,5863258,98,115,0,2049,4212,
                       1,2,2049,2675,1793,19849,2049,4160,3,10,1,19845,9,2049,4160,3,10,19829,19870,168,
                       0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793,19877,1,8,11,10,1,19873,
                       1793,19885,1,127,11,10,1,19881,2049,2255,22,1793,19895,2049,19837,10,1,19892,9,10,
                       19856,19910,168,0,210708806723,99,104,101,99,107,0,2049,19800,2049,19870,10,19899,19930,168,0,
                       249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,10864,2,2049,4134,10,19915,19948,168,
                       0,6953366942559,98,117,102,102,101,114,0,1793,19958,2049,19405,2049,4234,8,2049,4096,10,1,
                       19950,2049,4260,10,19936,19979,168,0,8246863741238799215,114,101,97,100,45,116,111,107,101,110,0,
                       1793,19995,1793,19990,2049,19930,2049,19910,2049,19703,10,1,19983,2049,2397,10,1,19981,2049,19948,
                       2049,4587,10,19963,20013,168,0,210716150453,105,110,112,117,116,0,2049,19979,2049,19779,10,20002,
                       20031,168,0,229479082815460,112,114,111,99,101,115,115,0,2049,19670,1793,20049,771,2049,19745,1793,
                       20045,1,19654,2049,3931,10,1,20040,9,10,1,20035,2049,2862,1,415,1,17,2049,66,
                       10,19617,20068,180,20192,5861507,47,47,0,2049,15996,1,19654,2049,3916,10,20060,20087,168,20192,
                       6953343520347,98,97,110,110,101,114,0,2049,19686,2049,4472,82,69,84,82,79,32,49,50,
                       32,40,37,110,46,37,110,41,92,110,0,1,20091,2049,8246,2049,10640,2049,10716,2049,
                       1545,2049,10716,18,2049,1545,2049,4472,37,110,32,77,97,120,44,32,37,110,32,85,
                       115,101,100,44,32,37,110,32,70,114,101,101,92,110,0,1,20127,2049,8246,2049,
                       10640,10,20075,20173,168,20192,6953744547860,108,105,115,116,101,110,0,3841,19629,1793,20180,2049,20087,
                       10,1,20177,2049,74,2049,20013,2049,20031,1,20184,7,10,105,110,116,101,114,102,97,
                       99,101,47,114,101,116,114,111,45,117,110,105,120,46,114,101,116,114,111,0,
                       20161,20232,156,0,229441520490121,83,111,117,114,99,101,115,0,1,20469,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,20219,20372,168,0,6953711201841,107,110,111,119,110,63,0,2,1,20232,2049,9099,10,20360,
                       20389,168,0,210716136861,105,110,100,101,120,0,1,20232,4,2049,9416,1,20232,4,2049,9236,
                       10,20378,20412,168,0,6953974036516,114,101,99,111,114,100,0,2049,4500,2,1,20232,2049,3864,
                       3841,20232,1,20232,17,16,10,1793,20467,2049,15931,2049,20372,1793,20437,2049,20389,10,1,20434,
                       1793,20444,2049,20412,10,1,20441,2049,66,1793,20457,1,192,1,2,17,8,10,1,20450,
                       2049,2229,2049,1576,2049,186,16,10,1,20428,100,105,99,116,45,119,111,114,100,115,
                       45,108,105,115,116,105,110,103,46,102,111,114,116,104,0,20161,20507,168,20469,229461403550098,
                       100,58,119,111,114,100,115,0,1793,20516,2049,190,2049,10640,2049,10610,10,1,20509,2049,
                       8491,10,20494,20539,168,20469,-3502157631813457253,100,58,119,111,114,100,115,45,119,105,116,104,0,
                       2049,1977,2049,5573,1793,20570,2049,190,2,2049,1977,2049,5286,1793,20559,2049,10640,2049,10610,10,
                       1,20554,1793,20565,3,10,1,20563,2049,66,10,1,20545,2049,8491,10,20521,20596,168,20469,
                       2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,1977,
                       2049,5519,1793,20608,2049,10640,2049,10610,10,1,20603,1793,20614,3,10,1,20612,2049,66,10,
                       20521,20647,168,20469,2947807019553410009,100,58,119,111,114,100,115,45,98,101,103,105,110,110,105,
                       110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,20658,2049,190,2049,20596,10,1,
                       20653,2049,8491,10,0 };
                       1,17512,2049,2241,10,17497,17555,156,0,210671126606,67,111,117,110,116,0,0,17544,17569,168,
                       0,229479071419028,112,114,101,112,97,114,101,0,1,0,1,17555,16,10,17556,17588,168,0,
                       229481161821089,114,101,115,101,114,118,101,0,4,1,0,2049,17351,10,17575,17605,168,0,210723988469,
                       112,97,116,99,104,0,2049,1977,67502597,2049,17283,2049,3139,67502597,16,10,17594,17628,168,0,
                       229462046998285,99,108,101,97,110,117,112,0,2,2049,4423,4,1,0,16,10,17615,17648,168,
                       0,6953774213361,109,97,116,99,104,63,0,67502597,11,10,17636,17663,168,0,6953974036516,114,101,99,
                       111,114,100,0,1,17555,15,2049,17351,10,17651,17682,168,0,229470109485971,105,116,101,114,97,
                       116,101,0,1793,17694,2049,17648,1,17663,9,1,17555,2049,3864,10,1,17684,2049,8777,10,
                       17497,17715,168,0,8246067467232158272,97,97,58,105,110,100,105,99,101,115,0,2049,17569,2049,1977,
                       1793,17727,2049,17588,2049,17682,3,10,1,17721,2049,2229,2049,17605,2049,17628,10,17699,17750,168,
                       0,7572146434556505,97,97,58,105,110,100,101,120,0,1793,17759,2049,17715,1,0,2049,9236,10,
                       1,17752,2049,17362,10,17736,17782,168,0,-3596900463221605921,97,97,58,99,111,110,116,97,105,110,
                       115,63,0,4,1,0,4,1793,17800,4,1793,17794,67502597,11,10,1,17791,2049,2229,22,
                       10,1,17788,2049,8777,772,10,17764,17820,168,0,7572146430834761,97,97,58,102,105,114,115,116,
                       0,1,0,2049,9236,10,17806,17838,168,0,229458982959509,97,97,58,108,97,115,116,0,2,
                       2049,8598,2049,3139,2049,9236,10,17825,17859,168,0,229458982815749,97,97,58,104,97,115,104,0,
                       1,5381,4,1793,17872,4,1,33,2049,17296,2049,17270,10,1,17864,2049,8777,10,17846,17889,
                       168,0,6953302506774,97,97,58,101,113,63,0,2049,17859,4,2049,17859,11,10,17877,17909,168,
                       0,229458980699715,97,97,58,45,101,113,63,0,2049,17859,4,2049,17859,12,10,17896,17927,168,
                       0,210704781289,97,58,100,117,112,0,2049,1977,1793,17941,2,2049,8598,2049,17351,1,17351,2049,
                       8777,10,1,17931,2049,2229,10,17916,17964,168,0,-3527051417241377258,98,108,111,99,107,58,105,110,
                       118,111,107,101,0,1,3,2049,10534,2049,10515,10,17916,17987,168,0,8246131600073141446,98,108,111,
                       99,107,58,114,101,97,100,0,1,0,2049,17964,10,17971,18009,168,0,-4578818303223200395,98,108,
                       111,99,107,58,119,114,105,116,101,0,1,1,2049,17964,10,17992,18034,168,0,-4036225629868593021,
                       98,108,111,99,107,58,115,101,116,45,102,105,108,101,0,1,2,2049,17964,10,
                       18014,18052,168,0,229480770855518,115,58,115,112,108,105,116,0,2049,7184,10,18039,18078,168,0,
                       6119006473764520940,115,58,115,112,108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,
                       7218,10,18055,18103,168,0,-2157201768052001381,115,58,99,111,110,116,97,105,110,115,45,99,104,
                       97,114,63,0,2049,4857,10,18081,18130,168,0,-6456228026363444588,115,58,99,111,110,116,97,105,
                       110,115,45,115,116,114,105,110,103,63,0,2049,5286,10,18106,18157,168,0,-3160266536000611262,97,
                       58,99,111,110,116,97,105,110,115,45,115,116,114,105,110,103,63,0,2049,9099,
                       10,18133,18176,168,0,8246014626430519194,97,58,105,110,100,101,120,45,111,102,0,2049,9291,10,
                       18160,18202,168,0,-5025353456659034242,97,58,105,110,100,101,120,45,111,102,45,115,116,114,105,
                       110,103,0,2049,9416,10,18179,18221,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,
                       102,0,2049,4779,10,18205,18247,168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,
                       45,115,116,114,105,110,103,0,2049,5069,10,18224,18266,168,0,8246228896775126019,100,111,117,98,
                       108,101,58,118,97,114,0,2049,2075,4,2049,130,2049,130,10,18250,18292,168,0,-3421095308458227740,
                       100,111,117,98,108,101,58,102,101,116,99,104,0,2049,58,4,15,10,18274,18315,
                       168,0,-3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,19,2049,2229,
                       2049,61,16,10,18297,18341,168,0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,
                       116,0,2049,18266,1,18292,2049,8460,10,18323,18365,168,0,-4575607512064199915,100,111,117,98,108,101,
                       58,115,119,97,112,0,67503109,5,67503109,6,10,18348,18386,168,0,8246228896775106679,100,111,117,98,
                       108,101,58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,18370,18410,168,0,8246228896775123014,
                       100,111,117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,18386,10,18394,18433,
                       168,0,8246632143337714634,109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10534,2049,10515,
                       10,18417,0,156,0,210667451248,65,76,76,79,67,0,18440,1,156,0,6384048135,70,82,69,
                       69,0,18451,2,156,0,210689088690,83,84,79,82,69,0,18461,3,156,0,210673137615,70,69,
                       84,67,72,0,18472,4,156,0,6952683137271,82,69,83,73,90,69,0,18394,18510,168,0,
                       249897943727936361,109,101,109,58,97,108,108,111,99,0,1,0,2049,18433,10,18495,18530,168,0,
                       249897943749573803,109,101,109,58,115,116,111,114,101,0,1,2,2049,18433,10,18515,18550,168,0,
                       249897943733622728,109,101,109,58,102,101,116,99,104,0,1,3,2049,18433,10,18535,18569,168,0,
                       7572664961638592,109,101,109,58,102,114,101,101,0,1,1,2049,18433,10,18555,18590,168,0,8246632143679146032,
                       109,101,109,58,114,101,115,105,122,101,0,1,4,2049,18433,10,18574,18610,168,0,
                       249897943730056489,109,101,109,58,99,101,108,108,43,0,1,8,19,17,10,18595,18637,168,0,
                       1050530996183190288,109,101,109,58,102,101,116,99,104,45,100,111,117,98,108,101,0,2,1,
                       1,2049,18610,15,5,2049,18550,6,10,18615,18670,168,0,1730340976492540563,109,101,109,58,115,116,
                       111,114,101,45,100,111,117,98,108,101,0,5,5,2049,2217,1,1,2049,18610,6,
                       2049,18530,6,2049,18530,10,18648,18694,168,19481,193470948,84,73,66,0,1,7,15,10,18685,
                       18714,168,19481,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0,1,1000,2049,10534,2049,
                       10515,10,18698,18732,168,0,210711039690,101,100,105,116,63,0,2,1793,18739,1,8,11,10,
                       1,18735,1793,18747,1,127,11,10,1,18743,2049,2255,22,10,18721,18765,168,0,6953539406400,103,
                       97,116,104,101,114,0,2049,18732,1,17,1,4134,2049,66,10,18753,18785,168,0,210709415765,
                       99,121,99,108,101,0,2049,10864,2049,2217,4,8,2049,2644,25,3,2049,18765,1,18785,
                       7,10,18698,18818,168,19481,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,
                       18830,2049,4451,2049,4234,2049,18785,771,2049,4096,10,1,18820,2049,4260,10,18801,18846,168,19481,
                       210726130610,115,58,103,101,116,0,1793,18868,1793,18854,1,13,11,10,1,18850,1793,18862,1,
                       10,11,10,1,18858,2049,2255,22,10,1,18848,2049,18818,10,18835,18884,168,19481,210708950412,99,
                       108,101,97,114,0,2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,
                       1,18886,2049,8246,2049,10640,10,18873,18918,156,19481,6952575930081,78,111,69,99,104,111,0,0,
                       18906,18928,156,0,193454829,69,79,84,0,0,18919,18943,156,0,7571133383038306,73,103,110,111,114,
                       105,110,103,0,0,18929,18959,168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,
                       3841,18943,10,18944,18975,168,0,229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,
                       20,10,18962,18992,168,0,210710254026,100,111,110,101,63,0,2,4097,18928,1793,19001,1,13,
                       11,10,1,18997,1793,19009,1,10,11,10,1,19005,1793,19017,1,32,11,10,1,19013,
                       2049,2298,22,22,10,18981,19034,168,0,6385195044,101,111,108,63,0,3841,18928,1793,19042,1,
                       13,11,10,1,19038,1793,19050,1,10,11,10,1,19046,2049,2255,22,10,19024,19068,168,
                       0,6954126150804,118,97,108,105,100,63,0,2,2049,104,2049,2812,10,19056,19089,168,0,249883998779477802,
                       99,104,101,99,107,45,101,111,102,0,2,1793,19096,1,-1,11,10,1,19092,1793,
                       19104,1,4,11,10,1,19100,2049,2255,22,1793,19114,2049,10931,10,1,19111,9,10,19074,
                       19126,168,0,5863258,98,115,0,2049,4212,1,2,2049,2675,1793,19138,2049,4160,3,10,1,
                       19134,9,2049,4160,3,10,19118,19159,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,
                       2,1793,19166,1,8,11,10,1,19162,1793,19174,1,127,11,10,1,19170,2049,2255,22,
                       1793,19184,2049,19126,10,1,19181,9,10,19145,19199,168,0,210708806723,99,104,101,99,107,0,
                       2049,19089,2049,19159,10,19188,19219,168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,
                       2049,10864,2,2049,4134,10,19204,19237,168,0,6953366942559,98,117,102,102,101,114,0,1793,19247,
                       2049,18694,2049,4234,8,2049,4096,10,1,19239,2049,4260,10,19225,19268,168,0,8246863741238799215,114,101,
                       97,100,45,116,111,107,101,110,0,1793,19284,1793,19279,2049,19219,2049,19199,2049,18992,10,
                       1,19272,2049,2397,10,1,19270,2049,19237,2049,4587,10,19252,19302,168,0,210716150453,105,110,112,
                       117,116,0,2049,19268,2049,19068,10,19291,19320,168,0,229479082815460,112,114,111,99,101,115,115,
                       0,2049,18959,1793,19338,771,2049,19034,1793,19334,1,18943,2049,3931,10,1,19329,9,10,1,
                       19324,2049,2862,1,415,1,17,2049,66,10,18906,19357,180,19481,5861507,47,47,0,2049,15996,
                       1,18943,2049,3916,10,19349,19376,168,19481,6953343520347,98,97,110,110,101,114,0,2049,18975,2049,
                       4472,82,69,84,82,79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,
                       1,19380,2049,8246,2049,10640,2049,10716,2049,1545,2049,10716,18,2049,1545,2049,4472,37,110,32,
                       77,97,120,44,32,37,110,32,85,115,101,100,44,32,37,110,32,70,114,101,
                       101,92,110,0,1,19416,2049,8246,2049,10640,10,19364,19462,168,19481,6953744547860,108,105,115,116,
                       101,110,0,3841,18918,1793,19469,2049,19376,10,1,19466,2049,74,2049,19302,2049,19320,1,19473,
                       7,10,105,110,116,101,114,102,97,99,101,47,114,101,116,114,111,45,117,110,
                       105,120,46,114,101,116,114,111,0,19450,19521,156,0,229441520490121,83,111,117,114,99,101,
                       115,0,1,19758,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,19508,19661,168,0,6953711201841,107,110,111,119,110,
                       63,0,2,1,19521,2049,9099,10,19649,19678,168,0,210716136861,105,110,100,101,120,0,1,
                       19521,4,2049,9416,1,19521,4,2049,9236,10,19667,19701,168,0,6953974036516,114,101,99,111,114,
                       100,0,2049,4500,2,1,19521,2049,3864,3841,19521,1,19521,17,16,10,1793,19756,2049,15931,
                       2049,19661,1793,19726,2049,19678,10,1,19723,1793,19733,2049,19701,10,1,19730,2049,66,1793,19746,
                       1,192,1,2,17,8,10,1,19739,2049,2229,2049,1576,2049,186,16,10,1,19717,100,
                       105,99,116,45,119,111,114,100,115,45,108,105,115,116,105,110,103,46,102,111,
                       114,116,104,0,19450,19796,168,19758,229461403550098,100,58,119,111,114,100,115,0,1793,19805,2049,
                       190,2049,10640,2049,10610,10,1,19798,2049,8491,10,19783,19828,168,19758,-3502157631813457253,100,58,119,111,
                       114,100,115,45,119,105,116,104,0,2049,1977,2049,5573,1793,19859,2049,190,2,2049,1977,
                       2049,5286,1793,19848,2049,10640,2049,10610,10,1,19843,1793,19854,3,10,1,19852,2049,66,10,
                       1,19834,2049,8491,10,19810,19885,168,19758,2818131571306626127,100,105,115,112,108,97,121,45,105,102,
                       45,108,101,102,116,0,2,2049,1977,2049,5519,1793,19897,2049,10640,2049,10610,10,1,19892,
                       1793,19903,3,10,1,19901,2049,66,10,19810,19936,168,19758,2947807019553410009,100,58,119,111,114,100,
                       115,45,98,101,103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1977,2049,
                       5573,1793,19947,2049,190,2049,19885,10,1,19942,2049,8491,10,0 };