text: /*----------------------------------------------------------------------*\
  
      smScan.c
  
      ScannerMaker generated scanner
  
  \*----------------------------------------------------------------------*/
  
  /* %%IMPORT */
  
  
  /* For open, read & close */
  #include <fcntl.h>
  
  /* For iconv conversion */
  #include <errno.h>
  #include "converter.h"
  #include "charset.h"
  
  #include "sysdep.h"
  
  #include "types.h"
  
  #include "alan.h"
  #include "lmlog.h"
  #include "encode.h"
  #include "util.h"
  
  /* END %%IMPORT */
  
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  #include "smScan.h"
  
  /* Local imports */
  extern int smScReader( smScContext smThis, unsigned char *smBuffer, unsigned int smLength );
  extern int smScAction( smScContext smThis, int smInternalCode, Token *smToken );
  extern int smScPostHook( smScContext smThis, Token *smToken );
  
  /* System dependencies */
  
  /* These datatypes should be defined to be unsigned integers of length 1, 2
   * and 4 bytes respectively.
   */
  typedef unsigned char UByte1;
  typedef unsigned short UByte2;
  typedef unsigned int UByte4;
  
  
  /* START of scanning tables */
  
  
  /*
   * MAP
   *
   * [character] -> character
   *
   */
  
  static UByte1 smMap[256]={
  0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  ,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
  ,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47
  ,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63
  ,64,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,91,92,93,94,95
  ,96,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,123,124,125,126,127
  ,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143
  ,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159
  ,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175
  ,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
  ,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239
  ,240,241,242,243,244,245,246,215,248,249,250,251,252,253,254,223
  ,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239
  ,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
  }
  ;
  
  
  /*
   * SCANNER
   *
   * [scanner] -> state
   */
  
  static UByte1 smScanner[2]={
  0,1
  }
  ;
  
  /*
   * ACCEPT (internal token code)
   *
   * [state] -> icode
   */
  
  static UByte1 smAccept[493]={
  0,0,153,10,7,8,9,11,1,12,2,13,147,6,15,5
  ,14,148,3,4,160,150,149,154,33,30,31,19,32,23,20,24
  ,27,25,21,18,22,16,29,26,28,17,157,39,37,40,42,35
  ,45,41,38,48,49,36,47,43,44,50,34,46,155,57,74,55
  ,52,58,69,64,73,71,66,76,70,56,59,65,79,68,54,77
  ,67,62,75,61,78,51,63,53,60,72,95,86,83,85,93,89
  ,81,80,91,94,82,90,88,87,84,92,112,108,109,105,99,104
  ,107,106,102,98,100,111,97,96,110,103,101,115,121,124,116,120
  ,118,119,114,113,117,123,122,156,133,132,126,129,128,131,134,127
  ,130,125,137,136,138,135,139,143,140,142,141,144,145,146,0,148
  ,149,0,148,0,148,0,148,0,148,0,148,0,148,0,148,0
  ,148,0,148,0,148,0,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
  ,148,148,148,148,148,148,148,148,148,148,148,148,148
  }
  ;
  
  /*
   * EXTERNAL TOKEN CODE
   *
   * [icode] -> ecode
   */
  
  static UByte1 smTokenCode[160]={
  5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
  ,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36
  ,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52
  ,53,54,55,56,57,58,60,61,62,63,64,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,91,92,93,94,95,96,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,123,124,125,126,127,128,129,130,131,132,133
  ,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149
  ,150,151,4,3,3,59,1,2,0,0,0,0,3,1,2,0
  }
  ;
  
  /*
   * EOT and Unknown
   *
   * [scanner] -> icode
   *
   */
  
  static UByte1 smEOTCode[2]={
  151,158
  }
  ;
  static UByte1 smUnknownCode[2]={
  150,157
  }
  ;
  
  /*
   * DFA
   */
  
    
  static UByte1 smDFAdetRow[493]={
  1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1
  ,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0
  ,1,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0
  ,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
  ,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1
  ,0,0,1,1,1,1,1,0,1,0,1,0,1,0,1,0
  ,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1
  }
  ;
  static UByte1 smDFAdetCol[256]={
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  }
  ;
    
  static UByte2 smDFArowVal[493]={
  141,188,2,493,493,493,493,493,493,23,493,169,12,493,220,188
  ,28,573,493,493,20,158,493,23,493,493,493,493,493,654,708,284
  ,188,284,220,249,284,276,303,330,284,284,165,284,284,284,357,284
  ,384,284,284,284,284,284,284,284,284,284,411,284,493,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,438,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,465,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,492,284,284,284
  ,284,284,284,519,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,493,284,284,284,284,284,284,284,284
  ,284,284,546,284,284,284,284,284,284,284,284,284,284,284,0,600
  ,163,167,627,47,681,94,735,171,762,173,789,175,816,60,843,177
  ,870,179,897,181,924,135,951,978,1005,1032,1059,1086,1113,1140,1167,1194
  ,1221,1248,1275,1302,1329,1356,1383,1410,1437,1464,1491,1518,1545,1572,1599,1626
  ,1653,1680,1707,1734,1761,1788,1815,1842,1869,1896,1923,1950,1977,2004,2031,2058
  ,2085,2112,2139,2166,2193,2220,2247,2274,2301,2328,2355,2382,2409,2436,2463,2490
  ,2517,2544,2571,2598,2625,2652,2679,2706,2733,2760,2787,2814,2841,2868,2895,2922
  ,2949,2976,3003,3030,3057,3084,3111,3138,3165,3192,3219,3246,3273,3300,3327,3354
  ,3381,3408,3435,3462,3489,3516,3543,3570,3597,3624,3651,3678,284,3705,3732,3759
  ,3786,3813,3840,3867,3894,3921,3948,3975,4002,4029,4056,4083,4110,4137,4164,4191
  ,4218,4245,4272,4299,4326,4353,4380,4407,4434,4461,4488,4515,4542,4569,4596,4623
  ,4650,4677,4704,4731,4758,4785,4812,4839,4866,4893,4920,4947,4974,5001,5028,5055
  ,5082,5109,5136,5163,5190,5217,5244,5271,5298,5325,5352,5379,5406,5433,5460,5487
  ,5514,5541,5568,5595,5622,5649,5676,5703,5730,5757,5784,5811,5838,5865,5892,5919
  ,5946,5973,6000,6027,6054,6081,6108,6135,6162,6189,6216,6243,6270,6297,6324,6351
  ,6378,6405,6432,6459,6486,6513,6540,6567,6594,6621,6648,6675,6702,6729,6756,6783
  ,6810,6837,6864,6891,6918,6945,6972,6999,7026,7053,7080,7107,7134,7161,7188,7215
  ,7242,7269,7296,7323,7350,7377,7404,7431,7458,7485,7512,7539,7566,7593,7620,7647
  ,7674,7701,7728,7755,7782,7809,7836,7863,7890,7917,7944,7971,7998,8025,8052,8079
  ,8106,8133,8160,8187,8214,8241,8268,8295,8322,8349,8376,8403,8430,8457,8484,8511
  ,8538,8565,8592,8619,8646,8673,8700,8727,8754,8781,8808,8835,8862,8889,8916,8943
  ,8970,8997,9024,9051,9078,9105,9132,9159,9186,9213,9240,9267,9294
  }
  ;
  static UByte1 smDFAcolVal[256]={
  0,0,0,0,0,0,0,0,0,29,31,0,0,29,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,29,38,39,0,40,0,0,30,41,42,43,44,45,46,36,37
  ,0,0,0,0,0,0,0,0,0,0,32,0,35,27,28,0
  ,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  ,16,17,18,19,20,21,22,23,24,25,26,0,0,0,0,0
  ,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  ,16,17,18,19,20,21,22,23,24,25,26,33,0,34,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10
  ,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,10
  ,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10
  ,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,0
  }
  ;
  static UByte1 smDFAerr[(22*21+7)/8]={
  0x80,0x00,0x0C,0xEF,0xFF,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xBF,0xFF,
  0xFE,0xFF,0xFF,0xF9,0xFF,0xFF,0xDF,0xFF,0xFD,0x80,0x27,0xFF,0xFF,0xF7,0xFF,0xF3,
  0x00,0x00,0x7E,0xFF,0xFC,0x00,0x00,0x1F,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,
  0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,0xFF,0x7C
  };
    
  static UByte1 smDFAerrRow[493]={
  0,1,2,3,3,3,3,3,3,4,3,5,6,3,7,7
  ,8,9,3,3,10,11,3,12,3,3,3,3,3,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,13,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,3,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,3,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,14,9
  ,13,15,9,14,9,14,9,16,9,5,9,17,9,5,9,18
  ,9,19,9,20,9,21,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
  ,9,9,9,9,9,9,9,9,9,9,9,9,9
  }
  ;
  static UByte1 smDFAerrCol[256]={
  0,0,0,0,0,0,0,0,0,1,2,0,0,3,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,1,4,5,0,4,0,0,6,4,4,4,4,4,7,4,8
  ,9,9,9,9,9,9,9,9,9,9,4,0,4,10,11,0
  ,0,12,12,13,14,15,12,12,12,16,12,12,17,12,18,12
  ,12,12,12,12,12,19,12,12,12,12,12,0,0,0,0,20
  ,0,12,12,13,14,15,12,12,12,16,12,12,17,12,18,12
  ,12,12,12,12,12,19,12,12,12,12,12,4,0,4,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  ,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12
  ,12,12,12,12,12,12,12,0,12,12,12,12,12,12,12,12
  ,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12
  ,12,12,12,12,12,12,12,0,12,12,12,12,12,12,12,0
  }
  ;
    
  static UByte2 smDFAval[9321]={
  158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158
  ,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158
  ,158,158,158,158,158,158,158,21,158,158,158,158,158,158,158,163
  ,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163
  ,163,163,163,163,163,163,163,163,163,163,163,163,163,160,22,163
  ,163,163,163,163,163,163,163,163,163,163,163,163,163,163,165,165
  ,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165
  ,165,165,165,165,165,165,165,165,165,165,165,165,42,165,165,165
  ,165,165,165,165,165,165,165,165,165,165,165,165,165,12,17,159
  ,162,164,282,283,284,285,166,284,284,368,286,168,170,369,370,461
  ,287,172,288,371,372,284,284,284,15,16,2,163,2,13,18,19
  ,14,10,11,3,158,161,4,5,6,7,8,9,284,284,284,284
  ,284,191,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,26,27,20,165,20,284,284,284,440
  ,489,284,284,284,284,490,284,284,284,284,284,284,284,284,284,284
  ,197,284,284,284,284,284,284,24,25,284,50,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,53,284,284,284,284,284,284,284
  ,284,284,284,284,284,54,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,205,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,322,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,65,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,83,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,240,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,105,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,359,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,131,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,151,284,284,284,284,284,284,284,284,284,284
  ,373,174,284,374,284,284,284,284,284,284,284,29,284,284,284,176
  ,284,30,284,284,284,284,284,284,284,284,284,284,284,425,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,31,284,284,178,284,284,284,284,284,284,375,284,284,284,284
  ,284,284,376,284,284,284,284,284,462,284,284,284,284,284,284,284
  ,284,284,44,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,426,284
  ,284,284,479,284,284,284,284,284,32,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,488,284,284,284,284,284,284,284
  ,284,284,284,284,284,33,284,284,284,284,284,284,427,34,284,284
  ,284,284,35,36,284,284,284,284,284,284,284,298,284,284,284,299
  ,284,284,284,284,284,284,284,284,284,37,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,38,284,284,284,284
  ,284,284,284,39,284,428,284,40,284,284,284,284,284,284,284,284
  ,284,432,284,284,284,284,284,284,189,284,284,284,284,284,284,41
  ,284,284,492,284,284,284,284,284,284,284,284,284,284,284,284,43
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,45,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,434,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,46
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,47,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,437,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,48,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,49,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,201,284,284,284,284,284,284,284
  ,284,284,284,284,284,51,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,52,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,208,284,284,55,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,56,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,57,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,58,284,284,284,212,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,59,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,61,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,62,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,63,284,284,284,222,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,64
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,66,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,67,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,68,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,69,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,70,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,71,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,72,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,73,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,74,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,75,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,76,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,77,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,78,284
  ,284,284,284,284,284,284,284,284,284,284,79,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,80,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,81,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,82,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,84,284,284,284,284,284,284,284,284,284,85,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,86,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,87,284,284,284,232,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,88,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,89,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,90,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,91,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,92,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,93,284,284,284,284,284,284,284
  ,284,284,284,284,284,94,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,95,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,96,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,97,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,98
  ,284,284,284,284,284,284,284,284,284,284,284,99,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,100,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,101,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,102,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,103,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,104,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,106,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,107
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,108,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,109,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,110,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,111,284,284,284,284,284,284,284,284,284,284,284,284,112
  ,284,284,284,354,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,113,284
  ,284,284,284,284,284,114,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,115,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,116,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,117,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,118,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,119
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,120
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,121,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,122,284,284,284,284
  ,284,284,284,284,284,284,284,284,123,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,124,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,125,284,284
  ,284,284,284,284,284,284,284,284,126,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,127,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,128,284
  ,284,284,284,284,284,284,284,284,284,284,129,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,130,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,132,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,133,284,284,284,284,284
  ,284,284,284,284,284,284,134,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,272,284,284,284,284,284,284,284,284,284,284,284,284,284,136
  ,284,284,284,284,284,284,284,284,284,284,284,284,137,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,138,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,139,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,140,284,284,284,284,284,284,141,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,142,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,143,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,144,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,145,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,146,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,147,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,148,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,149
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,150,284,284,284,284,284,284
  ,284,284,284,284,284,284,152,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,153,284,284,284,284,284,284,154,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,155,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,156,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,157,284,284,289,284,284,284,284,284,284,284,284,284,284,290
  ,377,180,284,284,284,284,284,284,284,378,284,291,284,284,284,284
  ,284,284,284,284,284,284,284,379,284,284,284,284,284,182,284,284
  ,292,284,284,284,284,284,284,284,284,284,183,284,284,284,293,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,184,284,284,284,297,284,284,284,185,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,186,284,380,284,187,284,284,302,284,284,284,284,284,284,284,284
  ,284,284,284,303,188,284,284,284,431,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,381,284,284,284,284,190,284,284
  ,284,284,284,284,284,284,284,284,192,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,193,284,284,284,284,284,284,284,284,284,284,438,284
  ,284,284,284,284,194,284,284,284,284,284,284,284,284,284,284,439
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,195,284,284,284,284,284,284,284,284,284,284
  ,284,284,384,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,196,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,198
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,386,284,284,284,284,284,199,284,284,284,284,284
  ,284,284,284,284,284,387,284,284,284,284,284,284,284,284,284,284
  ,284,200,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,481,284,284,284,284
  ,441,202,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,203,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,204,284,284,284,284,284,469,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,206
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,207,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,209,284,284,284,284,284,284,284,284,284,284,284,284
  ,317,284,284,284,210,284,284,284,284,284,284,284,284,284,211,284
  ,284,318,284,284,284,284,284,284,319,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,213,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,214,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,215,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,216
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,217,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,218,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,219,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,220,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,221,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,223,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,224,284,284,284,225,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,226,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,227,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,228,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,229,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,230,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,231,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,233,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,234,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,235,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,236,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,237,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,238,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,239,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,241,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,242,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,243,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,244,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,245,284
  ,284,284,284,284,284,284,284,284,284,284,246,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,247,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,248,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,249,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,250,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,251,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,252,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,253,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,254,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,255
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,256,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,257,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,258,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,259,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,260,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,261,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,262,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,263,284,284,284,284,284,284,284
  ,284,264,284,284,284,284,284,284,284,284,284,284,284,284,284,459
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,265,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,266,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,267
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,268,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,269,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,270,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,271,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,273,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,274,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,275,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,276,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,277
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,278,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,279,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,280,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,281,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,294,284,284,284,284
  ,284,284,284,295,284,284,284,284,284,296,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,300,284,284,284,284,284,429,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,301,284,284,284,284,284,284,284,284,284,284
  ,304,284,284,284,433,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,305,284,284,284,284,284,284,306,307
  ,284,284,284,284,284,308,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,309,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,310,284,284,284,284,284,284,284,480,284,284,284,311,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,464,284,284,284,284,284,284,312,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,313,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,314,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,315,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,470,284,284,284,284,284,284,316,284,284
  ,392,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,320,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,321,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,323,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,324,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,325,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,326,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,327,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,328,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,329,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,330,405,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,331,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,332,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,451,284,284,284
  ,284,333,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,334,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,335,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,336,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,337,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,338,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,339,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,340,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,341,284,284,284,284,284
  ,284,342,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,343,284,284,284,284,284,284,344,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,345,284,284,284,284,284,284,284,284,284,284,284,284,346,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,347,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,348,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,349,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,350,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,351,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,352,284,284,284,284,284,284,284,353
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,355,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,356,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,357,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,358,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,360,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,361,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,362,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,363,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,364,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,365,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,366,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,367,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,382,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,435,284,284,284,284,284,284,284,284,284,465,284,284,466,284
  ,284,284,284,284,284,284,284,284,383,284,284,467,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,385,284,284,284,284,284,284,284,284,284,284,284,388
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,389,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,390,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,391,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,393,284,284
  ,284,284,394,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,395,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,396,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,397,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,398,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,399,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,400,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,401,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,402,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,403,284
  ,284,284,284,284,448,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,404,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,406,284,284,284
  ,284,284,284,284,407,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,408,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,409,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,410,284,284,284,284,284,284,284,284,284
  ,284,284,411,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,412
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,413,284,284,284,284,284,284
  ,284,284,284,284,414,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,415,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,416,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,417,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,418,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,419,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,420,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,421,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,422,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,423,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,424,284,284,284,284,284,430,284,284,284,463,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,436,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,442,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,443,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,444,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,445,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,446,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,447,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,449,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,450,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,452,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,453,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,454
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,455,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,456,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,457
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,458,284,284,284
  ,284,284,487,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,460,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,468,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,471,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,472,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,473,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,474,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,475,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,476,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,477
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,478,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,482,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,483,284,284,284,484,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,485,284,284,284
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,486,284,284,284,284,284,284,284,284,284,284,284,284,284,491
  ,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
  ,284,284,284,284,284,284,284,284,284
  }
  ;
    
  
  
  /* END of scanning tables */
  
  
  
  
  
  
  /*
   * Source position calculation
   */
  
  static void smSourcePosition(
       smScContext smThis,
       unsigned char *smAt,
       unsigned char *smEnd)
  {
    if(smThis->smPosContinue<smEnd) {
      if(smThis->smPosContinue>smAt) smAt=smThis->smPosContinue;
      smThis->smNextPosition+=smEnd-smAt;
      for(;smAt<smEnd;smAt++)
        if(*smAt==10) {
      smThis->smPosLine=smAt;
      smThis->smNextLine++;
        }
  
      smThis->smNextColumn=smEnd-smThis->smPosLine;
      smThis->smPosContinue=smEnd;
    }
  }
  
  static void smRewindSourcePosition(
       smScContext smThis,
       unsigned char *smAt,
       unsigned char *smEnd)
  {
    if(smThis->smPosContinue>smEnd) return;
    smThis->smNextPosition-=smEnd-smAt;
    while(smAt<smEnd--) if(*smEnd==10) smThis->smNextLine--;
    while(smThis->smBegining<smEnd)
      if(*smEnd==10) {
        smThis->smPosLine=smEnd;
        break;
      }
      else smEnd--;
    if(smAt<smThis->smPosLine) smThis->smPosLine=smThis->smPosPrevLine;
    smThis->smNextColumn=smAt-smThis->smPosLine;
    smThis->smPosContinue=smAt;
  }
  
  
  /*
   * int smReadBuffer(SMContext smThis)
   *
   * SmThis function reads charcters using the reader into the buffer in a
   * context. The buffer is enlarged if the current buffer is full
   * (smEnd-smText==smSize) or reduced if current buffer is larger than
   * the standard buffer size and the token may fit the standard buffer
   * (smEnd-smText<smTokenSize AND smSize>smTokenSize). The function
   * returns the number of characters read into the buffer.
   *
   */
  
  static int smReadBuffer(smScContext smThis)
  {
    long length;
    int size;
    long mod;
  
    if(smThis->smBegining!=smThis->smText) {
      /* Move data to beginning of buffer */
      length=smThis->smEnd-smThis->smText;
      memcpy((void *)smThis->smBegining,(void *)smThis->smText,(size_t)length);
      if(length<1024 && smThis->smSize>1024) {
        /* Reduce buffer size */
        smThis->smSize=1024;
        smThis->smBegining=(unsigned char *)realloc(smThis->smBegining,(size_t)1024+1);
      }
    }
    else if(smThis->smBegining+smThis->smSize==smThis->smEnd) {
      /* Try to enlarge buffer */
      if(smThis->smSize==524288) {
        /* Cut Buffer */
        smSourcePosition(smThis,smThis->smText,smThis->smEnd-1024);
        memcpy((void *)smThis->smBegining,(void *)(smThis->smEnd-1024),(size_t)1024);
        mod=smThis->smEnd-smThis->smBegining-1024;
        smThis->smContinue-=mod;
        smThis->smEnd-=mod;
        smThis->smPosPrevLine-=mod;
        smThis->smPosLine-=mod;
        smThis->smPosContinue-=mod;
        smThis->smBufferOverflow+=mod;
      }
      else {
        unsigned char *begining = smThis->smBegining;
        size=smThis->smSize*1.5;
        if(size>524288) size=524288;
        /* Enlarge buffer */
        smThis->smBegining=(unsigned char *)realloc(smThis->smBegining,(size_t)size+1);
        if(smThis->smBegining==NULL) {
      /* Cut Buffer */
      smThis->smBegining = begining;	/* Restore to original buffer */
      smSourcePosition(smThis,smThis->smText,smThis->smEnd-1024);
      memcpy((void *)smThis->smBegining, (void *)(smThis->smEnd-1024), (size_t)1024);
      mod=smThis->smEnd-smThis->smBegining-1024;
      smThis->smContinue-=mod;
      smThis->smEnd-=mod;
      smThis->smPosPrevLine-=mod;
      smThis->smPosLine-=mod;
      smThis->smPosContinue-=mod;
          smThis->smBufferOverflow+=mod;
        }
        else
      smThis->smSize=size;
      }
    }
    if(smThis->smBegining!=smThis->smText) {
      mod=smThis->smText-smThis->smBegining;
      smThis->smContinue-=mod;
      smThis->smEnd-=mod;
      smThis->smPosPrevLine-=mod;
      smThis->smPosLine-=mod;
      smThis->smPosContinue-=mod;
      smThis->smText-=mod;
    }
    length=smThis->smSize-(smThis->smEnd-smThis->smBegining);
    length=smScReader(smThis,smThis->smEnd,(unsigned int)length);
    if(length<0) return length;
    smThis->smEnd+=length;
    return length;
  }
  
  /*
   * SMContext SMNew( smScScanner scanner )
   *
   * Create a new context.
   *
   */
  
  smScContext smScNew(smScScanner smScanner)
  {
    smScContext smThis;
  
    smThis=(smScContext)malloc((size_t)sizeof(smScContextItem));
    if(smThis==NULL) {
      return NULL;
    }
    smThis->smBegining=(unsigned char *)malloc((size_t)1024+1);
    if(smThis->smBegining==NULL) {
      free((char *)smThis);
      return NULL;
    }
    smThis->smSize=1024;
    smThis->smContinue=smThis->smBegining;
    smThis->smEnd=smThis->smBegining;
    smThis->smPosPrevLine=smThis->smBegining-1;
    smThis->smPosLine=smThis->smBegining-1;
    smThis->smPosContinue=smThis->smBegining;
    smThis->smText=smThis->smBegining;
  
    smThis->smLength=0;
    smThis->smNextLine=1;
    smThis->smNextColumn=1;
    smThis->smNextPosition=0;
    smThis->smLine=1;
    smThis->smColumn=1;
    smThis->smPosition=0;
    smThis->smScanner=smScanner;
    smThis->smBegining[0]=0;
    return smThis;
  }
  
  /*
   * void SMDelete( SMContext smThis )
   *
   * Destroy a context and associated buffer.
   *
   */
  
  void smScDelete(smScContext smThis)
  {
    free((char *)smThis->smBegining);
    free((char *)smThis);
  }
  
  /*
   * int SMSkip( SMContext smThis, int smLength )
   *
   * Enlarge/reduce the current token in a context with length characters.
   * If length is less than zero reduce the token, if length is greater
   * than zero enlarge the token.
   *
   */
  
  int smScSkip(
       smScContext smThis,
       int smLength)
  {
    int empty;
  
    if(smLength>0) {
      empty=smThis->smEnd-smThis->smContinue;
      if(empty<smLength) {
        empty=smReadBuffer(smThis);
        if(empty<0) return empty;
        empty=smThis->smEnd-smThis->smContinue;
        if(empty<smLength) smLength=empty;
      }
      smSourcePosition(smThis,smThis->smContinue,smThis->smContinue+smLength);
      smThis->smContinue+=smLength;
      smThis->smLength+=smLength;
    }
    else if(smLength<0) {
      smLength= -smLength;
      if(smLength>smThis->smLength) smLength=smThis->smLength;
      smRewindSourcePosition(smThis,smThis->smContinue-smLength,smThis->smContinue);
      smThis->smContinue-=smLength;
      smThis->smLength-=smLength;
      }
    return smLength;
  }
  
  int smScModify(
       smScContext smThis,
       unsigned char *smBuffer,
       int smLength)
  {
    if(smLength<0) {
  /* This code is identical to smSkip but no source position is rewinded */
      smLength= -smLength;
      if(smLength>smThis->smLength) smLength=smThis->smLength;
      smThis->smContinue-=smLength;
      smThis->smLength-=smLength;
  /***********************************************************************/
      memcpy((void *)smThis->smContinue,(void *)smBuffer,(size_t)smLength);
      return smLength;
    }
    else if(smLength>0) {
      int length1;
      int length2;
  
      for(length2=smLength;(length1=smScSkip(smThis,length2));length2-=length1) {
        if(length1<0) return length1;
        memcpy((void *)(smThis->smContinue-length1),(void *)smBuffer,(size_t)length1);
        smBuffer+=length1;
      }
      return smLength-length2;
    }
    return smLength;
  }
  
  int smScCopy(
       smScContext smThis,
       unsigned char *smBuffer,
       unsigned int smFrom,
       unsigned int smTo)
  {
    if(smFrom>smThis->smLength) smFrom=smThis->smLength;
    if(smTo>smThis->smLength) smTo=smThis->smLength;
    memcpy((void *)smBuffer,(void *)(smThis->smText+smFrom),(size_t)smTo-smFrom);
    return smTo-smFrom;
  }
  
  int smScMapCopy(
       smScContext smThis,
       unsigned char *smBuffer,
       unsigned int smFrom,
       unsigned int smTo)
  {
    int n;
    int len;
    unsigned char *at;
  
    if(smFrom>smThis->smLength) smFrom=smThis->smLength;
    if(smTo>smThis->smLength) smTo=smThis->smLength;
    len=0;
    for(n=smFrom,at=smThis->smText+smFrom;n<smTo;n++) {
  *smBuffer++=smMap[*at++];
      len++;
    }
    return len;
  }
  
  void smScScrScanner(
       smScScanner smScanner,
       int smOnOff)
  {
  }
  
  void smScScrToken(
       smScScanner smScanner,
       int smCode,
       int smOnOff)
  {
  }
  
  void smScScrRule(
       smScScanner smScanner,
       int smCode,
       int smOnOff)
  {
  }
  
  int smScan(
       smScContext smThis,
       Token *smToken)
  {
    unsigned char *at;
    unsigned char *end;
    unsigned char *rew_at;
    unsigned char ch;
    int state;
    int rew_state;
    int code;
  
    do {				/* Skip loop */
      smThis->smLine=smThis->smNextLine;
      smThis->smColumn=smThis->smNextColumn;
      smThis->smPosition=smThis->smNextPosition;
      end=(smThis->smEnd);
      smThis->smText=smThis->smContinue;
      smThis->smBufferOverflow=0;
      smToken->srcp.line=smThis->smNextLine;
      smToken->srcp.col=smThis->smNextColumn;
      smThis->smPosPrevLine=smThis->smPosLine;
      rew_at=smThis->smText;
      do {			/* Continue loop */
        rew_state=493;
        rew_at++;
        at=(smThis->smContinue);
        state=smScanner[smThis->smScanner];
        for (;;) {
      if(at==end) {
        int mod;
  
        if(state>=493) state-=493+1;
        smThis->smContinue=end;
        mod=smReadBuffer(smThis);
        if(mod<0) return mod;
        rew_at-=end-smThis->smContinue;
        at=smThis->smContinue;
        end=smThis->smEnd;
            if(at==end)
          break;
          }
        ch = *at++;
  {
    int smERRindex;
  
    
    
    
    smERRindex=smDFAerrRow[state]*21+smDFAerrCol[ch];
    
    if(smDFAerr[smERRindex>>3] & (0x80>>(smERRindex&0x7)))
      state=493;
    else {
    
      if(smDFAdetRow[state]<smDFAdetCol[ch])
     state=smDFArowVal[state];
      else if(smDFAdetRow[state]>smDFAdetCol[ch])
      state=smDFAcolVal[ch];
      else
    
    
        state=smDFAval[smDFArowVal[state]+smDFAcolVal[ch]];
    
    }
  }
        if(state>=493) break;
        if(smAccept[state]>0) {
          rew_state=state;
          rew_at=at;
        }
        }
        if(rew_state==493) {
          if(rew_at>end) {
        code=smEOTCode[smThis->smScanner];
        rew_at=end;
          }
          else
        code=smUnknownCode[smThis->smScanner];
        }
        else
      code=smAccept[rew_state]-1;
        smThis->smContinue=rew_at;
        smThis->smLength=smThis->smContinue-smThis->smText;
        smSourcePosition(smThis,smThis->smText,smThis->smContinue);
        smToken->code=smTokenCode[code]-1;
        code=smScAction(smThis,code,smToken);
      } while(code<-1);
      smToken->code=code;
      code=smScPostHook(smThis,smToken);
    } while(code<0);
    return smToken->code=code;
  }
  