test.c 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  1. #if 0
  2. #include <stdio.h>
  3. // =============================================================================
  4. // Command description
  5. // =============================================================================
  6. // Semantic: %command [%mode]
  7. // Syntax : *TEST? [NORMal|FULL]
  8. // Checks SCPI Input/Output interface. This command is designed to test the SCPI
  9. // command parser and device stability.
  10. // Arguments:
  11. // @mode - optional parameter, checking mode. Avaliable values:
  12. // * FULL - full test using huge-size data volume;
  13. // * NORMal - usual test using default-size data volume, default mode;
  14. // Returns:
  15. // Sample text string.
  16. // -----
  17. // @SCPI_ARGS_N = 1 (%mode)
  18. #define SCPI_ARGS_N 1
  19. // -----
  20. // Include handler header
  21. #include "app/scpi/scpi_handler.h"
  22. // -----
  23. // @argTokens, @argTypes
  24. // Declare argument parser entities
  25. // Supported arguments: 1=CHARACTER
  26. DECLARE_SCPI_ARGS( eScpiArg_Character );
  27. // Argument 1 Character Values allowed list
  28. DECLARE_ARGUMENT_CHARACTER_ALLOWED_LIST( AllowedValues_Argument1, "FULL", "NORMal" );
  29. #include "app/scpi/commandHandlers/test.h"
  30. // =================================================================================
  31. // @fsqvbl_CommandHandlerTEST
  32. // State's virtual table
  33. static void fsqe_CommandHandlerTEST( const struct fFSeqEntry_t * this, tFSeqCtx_t ctx );
  34. static void fsql_CommandHandlerTEST( const struct fFSeqEntry_t * this, tFSeqCtx_t ctx );
  35. static const struct fFSeqEntry_t * fsqf_CommandHandlerTEST( const struct fFSeqEntry_t * this, tFSeqCtx_t ctx, const struct fFSeqEntry_t * * pDeferredNext );
  36. const fFSeqVTable_t fsqvbl_CommandHandlerTEST =
  37. {
  38. .f = fsqf_CommandHandlerTEST,
  39. .enter = fsqe_CommandHandlerTEST,
  40. .leave = fsql_CommandHandlerTEST
  41. };
  42. static void fsqe_CommandHandlerTEST( const struct fFSeqEntry_t * this, tFSeqCtx_t ctx )
  43. {
  44. sProcessProgramDataCommonContext_t * common_ctx = ctx;
  45. common_ctx->TEST.idx = 0; // reset position
  46. common_ctx->TEST.N = 0; // reset position
  47. common_ctx->TEST.MAX_N = 0; // reset position
  48. SCPI_PARSE_ARGUMENTS( common_ctx ); (void)common_ctx->argsParserStatus; // status is modified
  49. }
  50. static void fsql_CommandHandlerTEST( const struct fFSeqEntry_t * this, tFSeqCtx_t ctx )
  51. {
  52. }
  53. static const char test[];
  54. #if DEBUG_USBTMC_TESTCMD > 0
  55. #define MAX_TESTBUF_LEN 128
  56. volatile size_t testBufferIdx = 0;
  57. volatile size_t testBufferCount = 0;
  58. size_t testBufferCapacity[ MAX_TESTBUF_LEN ] = { 0 };
  59. size_t testBufferLen[ MAX_TESTBUF_LEN ] = { 0 };
  60. #endif
  61. static const struct fFSeqEntry_t * fsqf_CommandHandlerTEST( const struct fFSeqEntry_t * this,
  62. tFSeqCtx_t ctx,
  63. const struct fFSeqEntry_t * * pDeferredNext )
  64. {
  65. const fFSeqEntry_t * nextstate = NULL;
  66. sProcessProgramDataCommonContext_t * common_ctx = ctx;
  67. switch( common_ctx->event )
  68. {
  69. case eProgramData_Event_Write:
  70. {
  71. if( ! common_ctx->isQuery )
  72. {
  73. common_ctx->status = eProgramDataSyntaxError; // invalid command header type: COMMAND not supported
  74. }
  75. else if( eScpiStatus_success != common_ctx->argsParserStatus ) // check argument parser status
  76. {
  77. common_ctx->status = eProgramDataArgumentSyntax; // parameter syntax error, caller should generate error message
  78. }
  79. else
  80. {
  81. switch( SCPI_PROCESS_ARGUMENT_CHARACTER( common_ctx, AllowedValues_Argument1, 0 ) )
  82. {
  83. case 0: // FULL
  84. common_ctx->TEST.MAX_N = 3;
  85. common_ctx->status = eProgramDataNeedRead; // request processed, wait for reading...
  86. break;
  87. case 1: // NORMal
  88. common_ctx->TEST.MAX_N = 0;
  89. common_ctx->status = eProgramDataNeedRead; // request processed, wait for reading...
  90. break;
  91. default:
  92. common_ctx->status = eProgramDataIllegalArgument; // illegal parameter value, caller should generate error message
  93. }
  94. }
  95. }
  96. break;
  97. case eProgramData_Event_Read:
  98. {
  99. // @idx - current position of the source data to be outputed
  100. size_t idx = common_ctx->TEST.idx;
  101. size_t N = common_ctx->TEST.N;
  102. #if DEBUG_USBTMC_TESTCMD > 0
  103. if( testBufferIdx >= MAX_TESTBUF_LEN || testBufferIdx == 0 )
  104. {
  105. testBufferIdx = 0; testBufferCount = 0;
  106. memset( testBufferCapacity, 0xff, sizeof(testBufferCapacity) );
  107. memset( testBufferLen, 0xff, sizeof(testBufferLen) );
  108. }
  109. testBufferCapacity[testBufferIdx] = bsize;
  110. #endif
  111. size_t len = strlen(test + idx);
  112. size_t written = scpi_WriteChunkOutput( test + idx, len);
  113. idx += written;
  114. #if DEBUG_USBTMC_TESTCMD > 0
  115. testBufferLen[testBufferIdx] = testBufferCapacity[testBufferIdx] - bsize;
  116. testBufferCount += testBufferLen[testBufferIdx];
  117. testBufferIdx++;
  118. #endif
  119. // EXAMPLE:
  120. // Check for end-condition:
  121. if( written == len )
  122. {
  123. if( N < common_ctx->TEST.MAX_N )
  124. { N++; idx = 0; common_ctx->status = eProgramDataNeedRead; } else
  125. common_ctx->status = eProgramDataDone;
  126. }
  127. else
  128. {
  129. common_ctx->status = eProgramDataNeedRead;
  130. }
  131. // Since @done flag is set, this dispatcher shall not be called anymore.
  132. // Since this handler is implemented as a single-state automat, there no
  133. // ... other states to go to:
  134. (void)nextstate;
  135. // modify current postion index:
  136. common_ctx->TEST.idx = idx;
  137. common_ctx->TEST.N = N;
  138. }
  139. break;
  140. }
  141. return nextstate;
  142. }
  143. static const char test[] =
  144. "00h1415926535897932384626433832795028841971693993751058209749445"
  145. "01h9230781640628620899862803482534211706798214808651328230664709"
  146. "02h3844609550582231725359408128481117450284102701938521105559644"
  147. "03h6229489549303819644288109756659334461284756482337867831652712"
  148. "04h0190914564856692346034861045432664821339360726024914127372458"
  149. "05h7006606315588174881520920962829254091715364367892590360011330"
  150. "06h5305488204665213841469519415116094330572703657595919530921861"
  151. "07h1738193261179310511854807446237996274956735188575272489122793"
  152. "08h8183011949129833673362440656643086021394946395224737190702179"
  153. "09h8609437027705392171762931767523846748184676694051320005681271"
  154. "0ah4526356082778577134275778960917363717872146844090122495343014"
  155. "0bh6549585371050792279689258923542019956112129021960864034418159"
  156. "0ch8136297747713099605187072113499999983729780499510597317328160"
  157. "0dh9631859502445945534690830264252230825334468503526193118817101"
  158. "0eh0003137838752886587533208381420617177669147303598253490428755"
  159. "0fh4687311595628638823537875937519577818577805321712268066130019"
  160. #if 0
  161. "10h2787661119590921642019891415926535897932384626433832795028841"
  162. "11h9716939937510582097494459230781640628620899862803482534211706"
  163. "12h7982148086513282306647093844609550582231725359408128481117450"
  164. "13h2841027019385211055596446229489549303819644288109756659334461"
  165. "14h2847564823378678316527120190914564856692346034861045432664821"
  166. "15h3393607260249141273724587006606315588174881520920962829254091"
  167. "16h7153643678925903600113305305488204665213841469519415116094330"
  168. "17h5727036575959195309218611738193261179310511854807446237996274"
  169. "18h9567351885752724891227938183011949129833673362440656643086021"
  170. "19h3949463952247371907021798609437027705392171762931767523846748"
  171. "1ah1846766940513200056812714526356082778577134275778960917363717"
  172. "1bh8721468440901224953430146549585371050792279689258923542019956"
  173. "1ch1121290219608640344181598136297747713099605187072113499999983"
  174. "1dh7297804995105973173281609631859502445945534690830264252230825"
  175. "1eh3344685035261931188171010003137838752886587533208381420617177"
  176. "1fh6691473035982534904287554687311595628638823537875937519577818"
  177. "20h5778053217122680661300192787661119590921642019891415926535897"
  178. "21h9323846264338327950288419716939937510582097494459230781640628"
  179. "22h6208998628034825342117067982148086513282306647093844609550582"
  180. "23h2317253594081284811174502841027019385211055596446229489549303"
  181. "24h8196442881097566593344612847564823378678316527120190914564856"
  182. "25h6923460348610454326648213393607260249141273724587006606315588"
  183. "26h1748815209209628292540917153643678925903600113305305488204665"
  184. "27h2138414695194151160943305727036575959195309218611738193261179"
  185. "28h3105118548074462379962749567351885752724891227938183011949129"
  186. "29h8336733624406566430860213949463952247371907021798609437027705"
  187. "2ah3921717629317675238467481846766940513200056812714526356082778"
  188. "2bh5771342757789609173637178721468440901224953430146549585371050"
  189. "2ch7922796892589235420199561121290219608640344181598136297747713"
  190. "2dh0996051870721134999999837297804995105973173281609631859502445"
  191. "2eh9455346908302642522308253344685035261931188171010003137838752"
  192. "2fh8865875332083814206171776691473035982534904287554687311595628"
  193. "30h6388235378759375195778185778053217122680661300192787661119590"
  194. "31h9216420198914159265358979323846264338327950288419716939937510"
  195. "32h5820974944592307816406286208998628034825342117067982148086513"
  196. "33h2823066470938446095505822317253594081284811174502841027019385"
  197. "34h2110555964462294895493038196442881097566593344612847564823378"
  198. "35h6783165271201909145648566923460348610454326648213393607260249"
  199. "36h1412737245870066063155881748815209209628292540917153643678925"
  200. "37h9036001133053054882046652138414695194151160943305727036575959"
  201. "38h1953092186117381932611793105118548074462379962749567351885752"
  202. "39h7248912279381830119491298336733624406566430860213949463952247"
  203. "3ah3719070217986094370277053921717629317675238467481846766940513"
  204. "3bh2000568127145263560827785771342757789609173637178721468440901"
  205. "3ch2249534301465495853710507922796892589235420199561121290219608"
  206. "3dh6403441815981362977477130996051870721134999999837297804995105"
  207. "3eh9731732816096318595024459455346908302642522308253344685035261"
  208. "3fhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  209. "40h1415926535897932384626433832795028841971693993751058209749445"
  210. "41h9230781640628620899862803482534211706798214808651328230664709"
  211. "42h3844609550582231725359408128481117450284102701938521105559644"
  212. "43h6229489549303819644288109756659334461284756482337867831652712"
  213. "44h0190914564856692346034861045432664821339360726024914127372458"
  214. "45h7006606315588174881520920962829254091715364367892590360011330"
  215. "46h5305488204665213841469519415116094330572703657595919530921861"
  216. "47h1738193261179310511854807446237996274956735188575272489122793"
  217. "48h8183011949129833673362440656643086021394946395224737190702179"
  218. "49h8609437027705392171762931767523846748184676694051320005681271"
  219. "4ah4526356082778577134275778960917363717872146844090122495343014"
  220. "4bh6549585371050792279689258923542019956112129021960864034418159"
  221. "4ch8136297747713099605187072113499999983729780499510597317328160"
  222. "4dh9631859502445945534690830264252230825334468503526193118817101"
  223. "4eh0003137838752886587533208381420617177669147303598253490428755"
  224. "4fh4687311595628638823537875937519577818577805321712268066130019"
  225. "50h1415926535897932384626433832795028841971693993751058209749445"
  226. "51h9230781640628620899862803482534211706798214808651328230664709"
  227. "52h3844609550582231725359408128481117450284102701938521105559644"
  228. "53h6229489549303819644288109756659334461284756482337867831652712"
  229. "54h0190914564856692346034861045432664821339360726024914127372458"
  230. "55h7006606315588174881520920962829254091715364367892590360011330"
  231. "56h5305488204665213841469519415116094330572703657595919530921861"
  232. "57h1738193261179310511854807446237996274956735188575272489122793"
  233. "58h8183011949129833673362440656643086021394946395224737190702179"
  234. "59h8609437027705392171762931767523846748184676694051320005681271"
  235. "5ah4526356082778577134275778960917363717872146844090122495343014"
  236. "5bh6549585371050792279689258923542019956112129021960864034418159"
  237. "5ch8136297747713099605187072113499999983729780499510597317328160"
  238. "5dh9631859502445945534690830264252230825334468503526193118817101"
  239. "5eh0003137838752886587533208381420617177669147303598253490428755"
  240. "5fh4687311595628638823537875937519577818577805321712268066130019"
  241. "60h2787661119590921642019891415926535897932384626433832795028841"
  242. "61h9716939937510582097494459230781640628620899862803482534211706"
  243. "62h7982148086513282306647093844609550582231725359408128481117450"
  244. "63h2841027019385211055596446229489549303819644288109756659334461"
  245. "64h2847564823378678316527120190914564856692346034861045432664821"
  246. "65h3393607260249141273724587006606315588174881520920962829254091"
  247. "66h7153643678925903600113305305488204665213841469519415116094330"
  248. "67h5727036575959195309218611738193261179310511854807446237996274"
  249. "68h9567351885752724891227938183011949129833673362440656643086021"
  250. "69h3949463952247371907021798609437027705392171762931767523846748"
  251. "6ah1846766940513200056812714526356082778577134275778960917363717"
  252. "6bh8721468440901224953430146549585371050792279689258923542019956"
  253. "6ch1121290219608640344181598136297747713099605187072113499999983"
  254. "6dh7297804995105973173281609631859502445945534690830264252230825"
  255. "6eh3344685035261931188171010003137838752886587533208381420617177"
  256. "6fh6691473035982534904287554687311595628638823537875937519577818"
  257. "70h5778053217122680661300192787661119590921642019891415926535897"
  258. "71h9323846264338327950288419716939937510582097494459230781640628"
  259. "72h6208998628034825342117067982148086513282306647093844609550582"
  260. "73h2317253594081284811174502841027019385211055596446229489549303"
  261. "74h8196442881097566593344612847564823378678316527120190914564856"
  262. "75h6923460348610454326648213393607260249141273724587006606315588"
  263. "76h1748815209209628292540917153643678925903600113305305488204665"
  264. "77h2138414695194151160943305727036575959195309218611738193261179"
  265. "78h3105118548074462379962749567351885752724891227938183011949129"
  266. "79h8336733624406566430860213949463952247371907021798609437027705"
  267. "7ah3921717629317675238467481846766940513200056812714526356082778"
  268. "7bh5771342757789609173637178721468440901224953430146549585371050"
  269. "7ch7922796892589235420199561121290219608640344181598136297747713"
  270. "7dh0996051870721134999999837297804995105973173281609631859502445"
  271. "7eh9455346908302642522308253344685035261931188171010003137838752"
  272. "7fh8865875332083814206171776691473035982534904287554687311595628"
  273. "80h6388235378759375195778185778053217122680661300192787661119590"
  274. "81h9216420198914159265358979323846264338327950288419716939937510"
  275. "82h5820974944592307816406286208998628034825342117067982148086513"
  276. "83h2823066470938446095505822317253594081284811174502841027019385"
  277. "84h2110555964462294895493038196442881097566593344612847564823378"
  278. "85h6783165271201909145648566923460348610454326648213393607260249"
  279. "86h1412737245870066063155881748815209209628292540917153643678925"
  280. "87h9036001133053054882046652138414695194151160943305727036575959"
  281. "88h1953092186117381932611793105118548074462379962749567351885752"
  282. "89h7248912279381830119491298336733624406566430860213949463952247"
  283. "8ah3719070217986094370277053921717629317675238467481846766940513"
  284. "8bh2000568127145263560827785771342757789609173637178721468440901"
  285. "8ch2249534301465495853710507922796892589235420199561121290219608"
  286. "8dh6403441815981362977477130996051870721134999999837297804995105"
  287. "8eh9731732816096318595024459455346908302642522308253344685035261"
  288. "8fhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  289. "90h1415926535897932384626433832795028841971693993751058209749445"
  290. "91h9230781640628620899862803482534211706798214808651328230664709"
  291. "92h3844609550582231725359408128481117450284102701938521105559644"
  292. "93h6229489549303819644288109756659334461284756482337867831652712"
  293. "94h0190914564856692346034861045432664821339360726024914127372458"
  294. "95h7006606315588174881520920962829254091715364367892590360011330"
  295. "96h5305488204665213841469519415116094330572703657595919530921861"
  296. "97h1738193261179310511854807446237996274956735188575272489122793"
  297. "98h8183011949129833673362440656643086021394946395224737190702179"
  298. "99h8609437027705392171762931767523846748184676694051320005681271"
  299. "9ah4526356082778577134275778960917363717872146844090122495343014"
  300. "9bh6549585371050792279689258923542019956112129021960864034418159"
  301. "9ch8136297747713099605187072113499999983729780499510597317328160"
  302. "9dh9631859502445945534690830264252230825334468503526193118817101"
  303. "9eh0003137838752886587533208381420617177669147303598253490428755"
  304. "9fh4687311595628638823537875937519577818577805321712268066130019"
  305. "a0h2787661119590921642019891415926535897932384626433832795028841"
  306. "a1h9716939937510582097494459230781640628620899862803482534211706"
  307. "a2h7982148086513282306647093844609550582231725359408128481117450"
  308. "a3h2841027019385211055596446229489549303819644288109756659334461"
  309. "a4h2847564823378678316527120190914564856692346034861045432664821"
  310. "a5h3393607260249141273724587006606315588174881520920962829254091"
  311. "a6h7153643678925903600113305305488204665213841469519415116094330"
  312. "a7h5727036575959195309218611738193261179310511854807446237996274"
  313. "a8h9567351885752724891227938183011949129833673362440656643086021"
  314. "a9h3949463952247371907021798609437027705392171762931767523846748"
  315. "aah1846766940513200056812714526356082778577134275778960917363717"
  316. "abh8721468440901224953430146549585371050792279689258923542019956"
  317. "ach1121290219608640344181598136297747713099605187072113499999983"
  318. "adh7297804995105973173281609631859502445945534690830264252230825"
  319. "aeh3344685035261931188171010003137838752886587533208381420617177"
  320. "afh6691473035982534904287554687311595628638823537875937519577818"
  321. "b0h5778053217122680661300192787661119590921642019891415926535897"
  322. "b1h9323846264338327950288419716939937510582097494459230781640628"
  323. "b2h6208998628034825342117067982148086513282306647093844609550582"
  324. "b3h2317253594081284811174502841027019385211055596446229489549303"
  325. "b4h8196442881097566593344612847564823378678316527120190914564856"
  326. "b5h6923460348610454326648213393607260249141273724587006606315588"
  327. "b6h1748815209209628292540917153643678925903600113305305488204665"
  328. "b7h2138414695194151160943305727036575959195309218611738193261179"
  329. "b8h3105118548074462379962749567351885752724891227938183011949129"
  330. "b9h8336733624406566430860213949463952247371907021798609437027705"
  331. "bah3921717629317675238467481846766940513200056812714526356082778"
  332. "bbh5771342757789609173637178721468440901224953430146549585371050"
  333. "bch7922796892589235420199561121290219608640344181598136297747713"
  334. "bdh0996051870721134999999837297804995105973173281609631859502445"
  335. "beh9455346908302642522308253344685035261931188171010003137838752"
  336. "bfh8865875332083814206171776691473035982534904287554687311595628"
  337. "c0h6388235378759375195778185778053217122680661300192787661119590"
  338. "c1h9216420198914159265358979323846264338327950288419716939937510"
  339. "c2h5820974944592307816406286208998628034825342117067982148086513"
  340. "c3h2823066470938446095505822317253594081284811174502841027019385"
  341. "c4h2110555964462294895493038196442881097566593344612847564823378"
  342. "c5h6783165271201909145648566923460348610454326648213393607260249"
  343. "c6h1412737245870066063155881748815209209628292540917153643678925"
  344. "c7h9036001133053054882046652138414695194151160943305727036575959"
  345. "c8h1953092186117381932611793105118548074462379962749567351885752"
  346. "c9h7248912279381830119491298336733624406566430860213949463952247"
  347. "cah3719070217986094370277053921717629317675238467481846766940513"
  348. "cbh2000568127145263560827785771342757789609173637178721468440901"
  349. "cch2249534301465495853710507922796892589235420199561121290219608"
  350. "cdh6403441815981362977477130996051870721134999999837297804995105"
  351. "ceh9731732816096318595024459455346908302642522308253344685035261"
  352. "cfhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  353. "d0h6388235378759375195778185778053217122680661300192787661119590"
  354. "d1h9216420198914159265358979323846264338327950288419716939937510"
  355. "d2h5820974944592307816406286208998628034825342117067982148086513"
  356. "d3h2823066470938446095505822317253594081284811174502841027019385"
  357. "d4h2110555964462294895493038196442881097566593344612847564823378"
  358. "d5h6783165271201909145648566923460348610454326648213393607260249"
  359. "d6h1412737245870066063155881748815209209628292540917153643678925"
  360. "d7h9036001133053054882046652138414695194151160943305727036575959"
  361. "d8h1953092186117381932611793105118548074462379962749567351885752"
  362. "d9h7248912279381830119491298336733624406566430860213949463952247"
  363. "dah3719070217986094370277053921717629317675238467481846766940513"
  364. "dbh2000568127145263560827785771342757789609173637178721468440901"
  365. "dch2249534301465495853710507922796892589235420199561121290219608"
  366. "ddh6403441815981362977477130996051870721134999999837297804995105"
  367. "deh9731732816096318595024459455346908302642522308253344685035261"
  368. "dfhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  369. "e0h6388235378759375195778185778053217122680661300192787661119590"
  370. "e1h9216420198914159265358979323846264338327950288419716939937510"
  371. "e2h5820974944592307816406286208998628034825342117067982148086513"
  372. "e3h2823066470938446095505822317253594081284811174502841027019385"
  373. "e4h2110555964462294895493038196442881097566593344612847564823378"
  374. "e5h6783165271201909145648566923460348610454326648213393607260249"
  375. "e6h1412737245870066063155881748815209209628292540917153643678925"
  376. "e7h9036001133053054882046652138414695194151160943305727036575959"
  377. "e8h1953092186117381932611793105118548074462379962749567351885752"
  378. "e9h7248912279381830119491298336733624406566430860213949463952247"
  379. "eah3719070217986094370277053921717629317675238467481846766940513"
  380. "ebh2000568127145263560827785771342757789609173637178721468440901"
  381. "ech2249534301465495853710507922796892589235420199561121290219608"
  382. "edh6403441815981362977477130996051870721134999999837297804995105"
  383. "eeh9731732816096318595024459455346908302642522308253344685035261"
  384. "ffhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  385. "f0h6388235378759375195778185778053217122680661300192787661119590"
  386. "f1h9216420198914159265358979323846264338327950288419716939937510"
  387. "f2h5820974944592307816406286208998628034825342117067982148086513"
  388. "f3h2823066470938446095505822317253594081284811174502841027019385"
  389. "f4h2110555964462294895493038196442881097566593344612847564823378"
  390. "f5h6783165271201909145648566923460348610454326648213393607260249"
  391. "f6h1412737245870066063155881748815209209628292540917153643678925"
  392. "f7h9036001133053054882046652138414695194151160943305727036575959"
  393. "f8h1953092186117381932611793105118548074462379962749567351885752"
  394. "f9h7248912279381830119491298336733624406566430860213949463952247"
  395. "fah3719070217986094370277053921717629317675238467481846766940513"
  396. "fbh2000568127145263560827785771342757789609173637178721468440901"
  397. "fch2249534301465495853710507922796892589235420199561121290219608"
  398. "fdh6403441815981362977477130996051870721134999999837297804995105"
  399. "feh9731732816096318595024459455346908302642522308253344685035261"
  400. "ffh000000000000000000000000000000000000000000000000000000000000z"
  401. #endif
  402. "\x00";
  403. //"000000000000000000000000000000000000000000000000000000000000000z" "\x00";
  404. //"99999999999999999999999999999999999999999999999999999999999999z" "\x00";
  405. //"6666666666666666666666666666666666666666666666666666z" "\x00";
  406. //"888888888888888888888888888888888888888888888888888z" "\x00";
  407. /*
  408. "4000000000000000000000000000000000000000000000000000000000000000"
  409. "4100000000000000000000000000000000000000000000000000000000000000"
  410. "4200000000000000000000000000000000000000000000000000000000000000"
  411. "4300000000000000000000000000000000000000000000000000000000000000"
  412. "4400000000000000000000000000000000000000000000000000000000000000"
  413. "4500000000000000000000000000000000000000000000000000000000000000"
  414. "4600000000000000000000000000000000000000000000000000000000000000"
  415. "4700000000000000000000000000000000000000000000000000000000000000"
  416. "4800000000000000000000000000000000000000000000000000000000000000"
  417. "4900000000000000000000000000000000000000000000000000000000000000"
  418. "4a00000000000000000000000000000000000000000000000000000000000000"
  419. "4b00000000000000000000000000000000000000000000000000000000000000"
  420. "4c00000000000000000000000000000000000000000000000000000000000000"
  421. "4d00000000000000000000000000000000000000000000000000000000000000"
  422. "4e00000000000000000000000000000000000000000000000000000000000000"
  423. "4f00000000000000000000000000000000000000000000000000000000000000"
  424. "5000000000000000000000000000000000000000000000000000000000000000"
  425. "5100000000000000000000000000000000000000000000000000000000000000"
  426. "5200000000000000000000000000000000000000000000000000000000000000"
  427. "5300000000000000000000000000000000000000000000000000000000000000"
  428. "5400000000000000000000000000000000000000000000000000000000000000"
  429. "5500000000000000000000000000000000000000000000000000000000000000"
  430. "5600000000000000000000000000000000000000000000000000000000000000"
  431. "5700000000000000000000000000000000000000000000000000000000000000"
  432. "5800000000000000000000000000000000000000000000000000000000000000"
  433. "5900000000000000000000000000000000000000000000000000000000000000"
  434. "5a00000000000000000000000000000000000000000000000000000000000000"
  435. "5b00000000000000000000000000000000000000000000000000000000000000"
  436. "5c00000000000000000000000000000000000000000000000000000000000000"
  437. "5d00000000000000000000000000000000000000000000000000000000000000"
  438. "5e00000000000000000000000000000000000000000000000000000000000000"
  439. "5f00000000000000000000000000000000000000000000000000000000000000"
  440. "6000000000000000000000000000000000000000000000000000000000000000"
  441. "6100000000000000000000000000000000000000000000000000000000000000"
  442. "6200000000000000000000000000000000000000000000000000000000000000"
  443. "6300000000000000000000000000000000000000000000000000000000000000"
  444. "6400000000000000000000000000000000000000000000000000000000000000"
  445. "6500000000000000000000000000000000000000000000000000000000000000"
  446. "6600000000000000000000000000000000000000000000000000000000000000"
  447. "6700000000000000000000000000000000000000000000000000000000000000"
  448. "6800000000000000000000000000000000000000000000000000000000000000"
  449. "6900000000000000000000000000000000000000000000000000000000000000"
  450. "6a00000000000000000000000000000000000000000000000000000000000000"
  451. "6b00000000000000000000000000000000000000000000000000000000000000"
  452. "6c00000000000000000000000000000000000000000000000000000000000000"
  453. "6d00000000000000000000000000000000000000000000000000000000000000"
  454. "6e00000000000000000000000000000000000000000000000000000000000000"
  455. "6f00000000000000000000000000000000000000000000000000000000000000"
  456. "7000000000000000000000000000000000000000000000000000000000000000"
  457. "7100000000000000000000000000000000000000000000000000000000000000"
  458. "7200000000000000000000000000000000000000000000000000000000000000"
  459. "7300000000000000000000000000000000000000000000000000000000000000"
  460. "7400000000000000000000000000000000000000000000000000000000000000"
  461. "7500000000000000000000000000000000000000000000000000000000000000"
  462. "7600000000000000000000000000000000000000000000000000000000000000"
  463. "7700000000000000000000000000000000000000000000000000000000000000"
  464. "7800000000000000000000000000000000000000000000000000000000000000"
  465. "7900000000000000000000000000000000000000000000000000000000000000"
  466. "7a00000000000000000000000000000000000000000000000000000000000000"
  467. "7b00000000000000000000000000000000000000000000000000000000000000"
  468. "7c00000000000000000000000000000000000000000000000000000000000000"
  469. "7d00000000000000000000000000000000000000000000000000000000000000"
  470. "7e00000000000000000000000000000000000000000000000000000000000000"
  471. "7f00000000000000000000000000000000000000000000000000000000000000"
  472. "8000000000000000000000000000000000000000000000000000000000000000"
  473. "8100000000000000000000000000000000000000000000000000000000000000"
  474. "8200000000000000000000000000000000000000000000000000000000000000"
  475. "8300000000000000000000000000000000000000000000000000000000000000"
  476. "8400000000000000000000000000000000000000000000000000000000000000"
  477. "8500000000000000000000000000000000000000000000000000000000000000"
  478. "8600000000000000000000000000000000000000000000000000000000000000"
  479. "8700000000000000000000000000000000000000000000000000000000000000"
  480. "8800000000000000000000000000000000000000000000000000000000000000"
  481. "8900000000000000000000000000000000000000000000000000000000000000"
  482. "8a00000000000000000000000000000000000000000000000000000000000000"
  483. "8b00000000000000000000000000000000000000000000000000000000000000"
  484. "8c00000000000000000000000000000000000000000000000000000000000000"
  485. "8d00000000000000000000000000000000000000000000000000000000000000"
  486. "8e00000000000000000000000000000000000000000000000000000000000000"
  487. "8f00000000000000000000000000000000000000000000000000000000000000"
  488. "9000000000000000000000000000000000000000000000000000000000000000"
  489. "9100000000000000000000000000000000000000000000000000000000000000"
  490. "9200000000000000000000000000000000000000000000000000000000000000"
  491. "9300000000000000000000000000000000000000000000000000000000000000"
  492. "9400000000000000000000000000000000000000000000000000000000000000"
  493. "9500000000000000000000000000000000000000000000000000000000000000"
  494. "9600000000000000000000000000000000000000000000000000000000000000"
  495. "9700000000000000000000000000000000000000000000000000000000000000"
  496. "9800000000000000000000000000000000000000000000000000000000000000"
  497. "9900000000000000000000000000000000000000000000000000000000000000"
  498. "9a00000000000000000000000000000000000000000000000000000000000000"
  499. "9b00000000000000000000000000000000000000000000000000000000000000"
  500. "9c00000000000000000000000000000000000000000000000000000000000000"
  501. "9d00000000000000000000000000000000000000000000000000000000000000"
  502. "9e00000000000000000000000000000000000000000000000000000000000000"
  503. "9f00000000000000000000000000000000000000000000000000000000000000"
  504. "a000000000000000000000000000000000000000000000000000000000000000"
  505. "a100000000000000000000000000000000000000000000000000000000000000"
  506. "a200000000000000000000000000000000000000000000000000000000000000"
  507. "a300000000000000000000000000000000000000000000000000000000000000"
  508. "a400000000000000000000000000000000000000000000000000000000000000"
  509. "a500000000000000000000000000000000000000000000000000000000000000"
  510. "a600000000000000000000000000000000000000000000000000000000000000"
  511. "a700000000000000000000000000000000000000000000000000000000000000"
  512. "a800000000000000000000000000000000000000000000000000000000000000"
  513. "a900000000000000000000000000000000000000000000000000000000000000"
  514. "aa00000000000000000000000000000000000000000000000000000000000000"
  515. "ab00000000000000000000000000000000000000000000000000000000000000"
  516. "ac00000000000000000000000000000000000000000000000000000000000000"
  517. "ad00000000000000000000000000000000000000000000000000000000000000"
  518. "ae00000000000000000000000000000000000000000000000000000000000000"
  519. "af00000000000000000000000000000000000000000000000000000000000000"
  520. "b000000000000000000000000000000000000000000000000000000000000000"
  521. "b100000000000000000000000000000000000000000000000000000000000000"
  522. "b200000000000000000000000000000000000000000000000000000000000000"
  523. "b300000000000000000000000000000000000000000000000000000000000000"
  524. "b400000000000000000000000000000000000000000000000000000000000000"
  525. "b500000000000000000000000000000000000000000000000000000000000000"
  526. "b600000000000000000000000000000000000000000000000000000000000000"
  527. "b700000000000000000000000000000000000000000000000000000000000000"
  528. "b800000000000000000000000000000000000000000000000000000000000000"
  529. "b900000000000000000000000000000000000000000000000000000000000000"
  530. "ba00000000000000000000000000000000000000000000000000000000000000"
  531. "bb00000000000000000000000000000000000000000000000000000000000000"
  532. "bc00000000000000000000000000000000000000000000000000000000000000"
  533. "bd00000000000000000000000000000000000000000000000000000000000000"
  534. "be00000000000000000000000000000000000000000000000000000000000000"
  535. "bf00000000000000000000000000000000000000000000000000000000000000"
  536. "c000000000000000000000000000000000000000000000000000000000000000"
  537. "c100000000000000000000000000000000000000000000000000000000000000"
  538. "c200000000000000000000000000000000000000000000000000000000000000"
  539. "c300000000000000000000000000000000000000000000000000000000000000"
  540. "c400000000000000000000000000000000000000000000000000000000000000"
  541. "c500000000000000000000000000000000000000000000000000000000000000"
  542. "c600000000000000000000000000000000000000000000000000000000000000"
  543. "c700000000000000000000000000000000000000000000000000000000000000"
  544. "c800000000000000000000000000000000000000000000000000000000000000"
  545. "c900000000000000000000000000000000000000000000000000000000000000"
  546. "ca00000000000000000000000000000000000000000000000000000000000000"
  547. "cb00000000000000000000000000000000000000000000000000000000000000"
  548. "cc00000000000000000000000000000000000000000000000000000000000000"
  549. "cd00000000000000000000000000000000000000000000000000000000000000"
  550. "ce00000000000000000000000000000000000000000000000000000000000000"
  551. "cf00000000000000000000000000000000000000000000000000000000000000"
  552. "d000000000000000000000000000000000000000000000000000000000000000"
  553. "d100000000000000000000000000000000000000000000000000000000000000"
  554. "d200000000000000000000000000000000000000000000000000000000000000"
  555. "d300000000000000000000000000000000000000000000000000000000000000"
  556. "d400000000000000000000000000000000000000000000000000000000000000"
  557. "d500000000000000000000000000000000000000000000000000000000000000"
  558. "d600000000000000000000000000000000000000000000000000000000000000"
  559. "d700000000000000000000000000000000000000000000000000000000000000"
  560. "d800000000000000000000000000000000000000000000000000000000000000"
  561. "d900000000000000000000000000000000000000000000000000000000000000"
  562. "da00000000000000000000000000000000000000000000000000000000000000"
  563. "db00000000000000000000000000000000000000000000000000000000000000"
  564. "dc00000000000000000000000000000000000000000000000000000000000000"
  565. "dd00000000000000000000000000000000000000000000000000000000000000"
  566. "de00000000000000000000000000000000000000000000000000000000000000"
  567. "df00000000000000000000000000000000000000000000000000000000000000"
  568. "e000000000000000000000000000000000000000000000000000000000000000"
  569. "e100000000000000000000000000000000000000000000000000000000000000"
  570. "e200000000000000000000000000000000000000000000000000000000000000"
  571. "e300000000000000000000000000000000000000000000000000000000000000"
  572. "e400000000000000000000000000000000000000000000000000000000000000"
  573. "e500000000000000000000000000000000000000000000000000000000000000"
  574. "e600000000000000000000000000000000000000000000000000000000000000"
  575. "e700000000000000000000000000000000000000000000000000000000000000"
  576. "e800000000000000000000000000000000000000000000000000000000000000"
  577. "e900000000000000000000000000000000000000000000000000000000000000"
  578. "ea00000000000000000000000000000000000000000000000000000000000000"
  579. "eb00000000000000000000000000000000000000000000000000000000000000"
  580. "ec00000000000000000000000000000000000000000000000000000000000000"
  581. "ed00000000000000000000000000000000000000000000000000000000000000"
  582. "ee00000000000000000000000000000000000000000000000000000000000000"
  583. "ef00000000000000000000000000000000000000000000000000000000000000"
  584. "f000000000000000000000000000000000000000000000000000000000000000"
  585. "f100000000000000000000000000000000000000000000000000000000000000"
  586. "f200000000000000000000000000000000000000000000000000000000000000"
  587. "f300000000000000000000000000000000000000000000000000000000000000"
  588. "f400000000000000000000000000000000000000000000000000000000000000"
  589. "f500000000000000000000000000000000000000000000000000000000000000"
  590. "f600000000000000000000000000000000000000000000000000000000000000"
  591. "f700000000000000000000000000000000000000000000000000000000000000"
  592. "f800000000000000000000000000000000000000000000000000000000000000"
  593. "f900000000000000000000000000000000000000000000000000000000000000"
  594. "fa00000000000000000000000000000000000000000000000000000000000000"
  595. "fb00000000000000000000000000000000000000000000000000000000000000"
  596. "fc00000000000000000000000000000000000000000000000000000000000000"
  597. "fd00000000000000000000000000000000000000000000000000000000000000"
  598. "fe00000000000000000000000000000000000000000000000000000000000000"
  599. "ff00000000000000000000000000000000000000000000000000000000000000"
  600. */
  601. //"40h93118817101000313783875288658753320838142061---z" "\x00";
  602. #endif