modules/up/src/rpsl/rpsl/rpsl.l.cc

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. YY_PROTO
  2. YY_PROTO
  3. YY_SC_TO_UI
  4. YY_STATE_EOF
  5. yyless
  6. unput
  7. yy_set_interactive
  8. yy_set_bol
  9. YY_AT_BOL
  10. yymore
  11. YYLESS
  12. YY_INPUT
  13. yyterminate
  14. YY_FATAL_ERROR
  15. yy_get_next_buffer
  16. yy_get_previous_state
  17. yy_try_NUL_trans
  18. yyunput
  19. yyinput
  20. yyrestart
  21. yy_switch_to_buffer
  22. yy_load_buffer_state
  23. yy_create_buffer
  24. yy_delete_buffer
  25. yy_init_buffer
  26. yy_flush_buffer
  27. yy_scan_buffer
  28. yy_scan_string
  29. yy_scan_bytes
  30. yy_push_state
  31. yy_pop_state
  32. yy_top_state
  33. yy_fatal_error
  34. yyless
  35. yy_flex_strncpy
  36. yy_flex_strlen
  37. yy_flex_alloc
  38. yy_flex_realloc
  39. yy_flex_free
  40. main
  41. handle_error
  42. handle_object_error
  43. rpslerror
  44. handle_warning
  45. yy_scan_object
  46. changeCurrentAttr
  47. validIPv6
  48. validIntForPhone

   1 #define yy_create_buffer rpsl_create_buffer
   2 #define yy_delete_buffer rpsl_delete_buffer
   3 #define yy_scan_buffer rpsl_scan_buffer
   4 #define yy_scan_string rpsl_scan_string
   5 #define yy_scan_bytes rpsl_scan_bytes
   6 #define yy_flex_debug rpsl_flex_debug
   7 #define yy_init_buffer rpsl_init_buffer
   8 #define yy_flush_buffer rpsl_flush_buffer
   9 #define yy_load_buffer_state rpsl_load_buffer_state
  10 #define yy_switch_to_buffer rpsl_switch_to_buffer
  11 #define yyin rpslin
  12 #define yyleng rpslleng
  13 #define yylex rpsllex
  14 #define yyout rpslout
  15 #define yyrestart rpslrestart
  16 #define yytext rpsltext
  17 #define yywrap rpslwrap
  18 
  19 /* A lexical scanner generated by flex */
  20 
  21 /* Scanner skeleton version:
  22  * $Header: /ncc/cvsroot/ncc/RIP/modules/up/src/rpsl/rpsl/rpsl.l.cc,v 1.1.1.1 2000/03/10 16:32:24 engin Exp $
  23  */
  24 
  25 #define FLEX_SCANNER
  26 #define YY_FLEX_MAJOR_VERSION 2
  27 #define YY_FLEX_MINOR_VERSION 5
  28 
  29 #include <stdio.h>
  30 
  31 
  32 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
  33 #ifdef c_plusplus
  34 #ifndef __cplusplus
  35 #define __cplusplus
  36 #endif
  37 #endif
  38 
  39 
  40 #ifdef __cplusplus
  41 
  42 #include <stdlib.h>
  43 #include <unistd.h>
  44 
  45 /* Use prototypes in function declarations. */
  46 #define YY_USE_PROTOS
  47 
  48 /* The "const" storage-class-modifier is valid. */
  49 #define YY_USE_CONST
  50 
  51 #else   /* ! __cplusplus */
  52 
  53 #if __STDC__
  54 
  55 #define YY_USE_PROTOS
  56 #define YY_USE_CONST
  57 
  58 #endif  /* __STDC__ */
  59 #endif  /* ! __cplusplus */
  60 
  61 #ifdef __TURBOC__
  62  #pragma warn -rch
  63  #pragma warn -use
  64 #include <io.h>
  65 #include <stdlib.h>
  66 #define YY_USE_CONST
  67 #define YY_USE_PROTOS
  68 #endif
  69 
  70 #ifdef YY_USE_CONST
  71 #define yyconst const
  72 #else
  73 #define yyconst
  74 #endif
  75 
  76 
  77 #ifdef YY_USE_PROTOS
  78 #define YY_PROTO(proto) proto
     /* [<][>][^][v][top][bottom][index][help] */
  79 #else
  80 #define YY_PROTO(proto) ()
     /* [<][>][^][v][top][bottom][index][help] */
  81 #endif
  82 
  83 /* Returned upon end-of-file. */
  84 #define YY_NULL 0
  85 
  86 /* Promotes a possibly negative, possibly signed char to an unsigned
  87  * integer for use as an array index.  If the signed char is negative,
  88  * we want to instead treat it as an 8-bit unsigned char, hence the
  89  * double cast.
  90  */
  91 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
     /* [<][>][^][v][top][bottom][index][help] */
  92 
  93 /* Enter a start condition.  This macro really ought to take a parameter,
  94  * but we do it the disgusting crufty way forced on us by the ()-less
  95  * definition of BEGIN.
  96  */
  97 #define BEGIN yy_start = 1 + 2 *
  98 
  99 /* Translate the current start state into a value that can be later handed
 100  * to BEGIN to return to the state.  The YYSTATE alias is for lex
 101  * compatibility.
 102  */
 103 #define YY_START ((yy_start - 1) / 2)
 104 #define YYSTATE YY_START
 105 
 106 /* Action number for EOF rule of a given start state. */
 107 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
     /* [<][>][^][v][top][bottom][index][help] */
 108 
 109 /* Special action meaning "start processing a new file". */
 110 #define YY_NEW_FILE yyrestart( yyin )
 111 
 112 #define YY_END_OF_BUFFER_CHAR 0
 113 
 114 /* Size of default input buffer. */
 115 #define YY_BUF_SIZE 16384
 116 
 117 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 118 
 119 extern int yyleng;
 120 extern FILE *yyin, *yyout;
 121 
 122 #define EOB_ACT_CONTINUE_SCAN 0
 123 #define EOB_ACT_END_OF_FILE 1
 124 #define EOB_ACT_LAST_MATCH 2
 125 
 126 /* The funky do-while in the following #define is used to turn the definition
 127  * int a single C statement (which needs a semi-colon terminator).  This
 128  * avoids problems with code like:
 129  *
 130  *      if ( condition_holds )
 131  *              yyless( 5 );
 132  *      else
 133  *              do_something_else();
 134  *
 135  * Prior to using the do-while the compiler would get upset at the
 136  * "else" because it interpreted the "if" statement as being all
 137  * done when it reached the ';' after the yyless() call.
 138  */
 139 
 140 /* Return all but the first 'n' matched characters back to the input stream. */
 141 
 142 #define yyless(n) \
     /* [<][>][^][v][top][bottom][index][help] */
 143         do \
 144                 { \
 145                 /* Undo effects of setting up yytext. */ \
 146                 *yy_cp = yy_hold_char; \
 147                 YY_RESTORE_YY_MORE_OFFSET \
 148                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
 149                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 150                 } \
 151         while ( 0 )
 152 
 153 #define unput(c) yyunput( c, yytext_ptr )
     /* [<][>][^][v][top][bottom][index][help] */
 154 
 155 /* The following is because we cannot portably get our hands on size_t
 156  * (without autoconf's help, which isn't available because we want
 157  * flex-generated scanners to compile on their own).
 158  */
 159 typedef unsigned int yy_size_t;
 160 
 161 
 162 struct yy_buffer_state
 163         {
 164         FILE *yy_input_file;
 165 
 166         char *yy_ch_buf;                /* input buffer */
 167         char *yy_buf_pos;               /* current position in input buffer */
 168 
 169         /* Size of input buffer in bytes, not including room for EOB
 170          * characters.
 171          */
 172         yy_size_t yy_buf_size;
 173 
 174         /* Number of characters read into yy_ch_buf, not including EOB
 175          * characters.
 176          */
 177         int yy_n_chars;
 178 
 179         /* Whether we "own" the buffer - i.e., we know we created it,
 180          * and can realloc() it to grow it, and should free() it to
 181          * delete it.
 182          */
 183         int yy_is_our_buffer;
 184 
 185         /* Whether this is an "interactive" input source; if so, and
 186          * if we're using stdio for input, then we want to use getc()
 187          * instead of fread(), to make sure we stop fetching input after
 188          * each newline.
 189          */
 190         int yy_is_interactive;
 191 
 192         /* Whether we're considered to be at the beginning of a line.
 193          * If so, '^' rules will be active on the next match, otherwise
 194          * not.
 195          */
 196         int yy_at_bol;
 197 
 198         /* Whether to try to fill the input buffer when we reach the
 199          * end of it.
 200          */
 201         int yy_fill_buffer;
 202 
 203         int yy_buffer_status;
 204 #define YY_BUFFER_NEW 0
 205 #define YY_BUFFER_NORMAL 1
 206         /* When an EOF's been seen but there's still some text to process
 207          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
 208          * shouldn't try reading from the input source any more.  We might
 209          * still have a bunch of tokens to match, though, because of
 210          * possible backing-up.
 211          *
 212          * When we actually see the EOF, we change the status to "new"
 213          * (via yyrestart()), so that the user can continue scanning by
 214          * just pointing yyin at a new input file.
 215          */
 216 #define YY_BUFFER_EOF_PENDING 2
 217         };
 218 
 219 static YY_BUFFER_STATE yy_current_buffer = 0;
 220 
 221 /* We provide macros for accessing buffer states in case in the
 222  * future we want to put the buffer states in a more general
 223  * "scanner state".
 224  */
 225 #define YY_CURRENT_BUFFER yy_current_buffer
 226 
 227 
 228 /* yy_hold_char holds the character lost when yytext is formed. */
 229 static char yy_hold_char;
 230 
 231 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
 232 
 233 
 234 int yyleng;
 235 
 236 /* Points to current character in buffer. */
 237 static char *yy_c_buf_p = (char *) 0;
 238 static int yy_init = 1;         /* whether we need to initialize */
 239 static int yy_start = 0;        /* start state number */
 240 
 241 /* Flag which is used to allow yywrap()'s to do buffer switches
 242  * instead of setting up a fresh yyin.  A bit of a hack ...
 243  */
 244 static int yy_did_buffer_switch_on_eof;
 245 
 246 void yyrestart YY_PROTO(( FILE *input_file ));
 247 
 248 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
 249 void yy_load_buffer_state YY_PROTO(( void ));
 250 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
 251 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
 252 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
 253 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
 254 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
 255 
 256 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
 257 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
 258 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 259 
 260 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
 261 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
 262 static void yy_flex_free YY_PROTO(( void * ));
 263 
 264 #define yy_new_buffer yy_create_buffer
 265 
 266 #define yy_set_interactive(is_interactive) \
     /* [<][>][^][v][top][bottom][index][help] */
 267         { \
 268         if ( ! yy_current_buffer ) \
 269                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
 270         yy_current_buffer->yy_is_interactive = is_interactive; \
 271         }
 272 
 273 #define yy_set_bol(at_bol) \
     /* [<][>][^][v][top][bottom][index][help] */
 274         { \
 275         if ( ! yy_current_buffer ) \
 276                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
 277         yy_current_buffer->yy_at_bol = at_bol; \
 278         }
 279 
 280 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
     /* [<][>][^][v][top][bottom][index][help] */
 281 
 282 
 283 #define YY_USES_REJECT
 284 typedef unsigned char YY_CHAR;
 285 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 286 typedef int yy_state_type;
 287 extern char *yytext;
 288 #define yytext_ptr yytext
 289 
 290 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
 291 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
 292 static int yy_get_next_buffer YY_PROTO(( void ));
 293 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 294 
 295 /* Done after the current pattern has been matched and before the
 296  * corresponding action - sets up yytext.
 297  */
 298 #define YY_DO_BEFORE_ACTION \
 299         yytext_ptr = yy_bp; \
 300         yyleng = (int) (yy_cp - yy_bp); \
 301         yy_hold_char = *yy_cp; \
 302         *yy_cp = '\0'; \
 303         yy_c_buf_p = yy_cp;
 304 
 305 #define YY_NUM_RULES 60
 306 #define YY_END_OF_BUFFER 61
 307 static yyconst short int yy_acclist[736] =
 308     {   0,
 309        61,    4,   60,   60,    3,    4,   60,    4,   60,    2,
 310        60,    4,   60,   58,   59,   60,   49,   60,   48,   59,
 311        60,   59,   60,   47,   60,   11,   47,   60,   10,   60,
 312        47,   60,   12,   47,   60,   47,   60,   46,   47,   60,
 313        46,   47,   60,   46,   47,   60,   47,   60,   13,   60,
 314        11,   13,   60,   12,   13,   60,   14,   60,   11,   60,
 315        12,   14,   60,   40,   60,   11,   40,   60,   10,   60,
 316        20,   40,   60,   12,   40,   60,   40,   60,   40,   60,
 317        40,   60,   40,   60,   40,   60,   17,   40,   60,   40,
 318        60,   36,   40,   60,   36,   40,   60,   40,   60,   36,
 319 
 320        40,   60,   36,   40,   60,   36,   40,   60,   36,   40,
 321        60,   36,   40,   60,    7,   60,    6,   60,    7,   60,
 322         5,    6,   60,   40,   60,   17,   40,   60,   40,   60,
 323         3,    2,    1,   58,   57,   50,   51,   57,   51,   57,
 324        55,   57,   56,   57,   52,   57,   54,   57,   53,   57,
 325        11,    9,    9,    8,   46,   12,   13,   11,   13,   12,
 326        13,   14,   12,   14,    9,    8,   12,   12,   12,   17,
 327        17,   19,   17,   36,   26,   36,   26,   36,   36,   26,
 328        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 329        36,   26,   36,   26,   36,   26,   36,   26,   36,    7,
 330 
 331         7,    5,   17,   42,   41,   43,   50,   51,   51,   10,
 332        12,   12,   12,   12,   19,   38,   19,   38,   19,   19,
 333        38,   38,   17,   18,   36,   37,   38,   36,   36,   26,
 334        26,   36,   26,   36,   26,   36,   26,   36,   26,   36,
 335        26,   36,   26,   26,   27,   36,   26,   36,   26,   36,
 336        26,   36,   26,   36,   26,   36,   26,   36,   26,   26,
 337        36,   26,   36,   45,   17,   50,   51,   12,   12,   12,
 338        12,   38,   19,   19,   19,   38,   38,   38,   17,   18,
 339        23,   23,   38,   37,   38,   37,   38,   36,   36,   26,
 340        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 341 
 342        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 343        36,   26,   28,   36,   26,   28,   36,   26,   27,   36,
 344        26,   36,   26,   36,   26,   36,   26,   36,   26,   26,
 345        36,   26,   29,   36,   26,   29,   36,   26,   36,   26,
 346        33,   36,   17,   44,   39,   39,   12,   39,   12,   39,
 347        19,   38,   19,   38,   19,   19,   19,   38,   38,   19,
 348        38,   38,   19,   38,   17,   18,   23,   23,   23,   37,
 349        38,   37,   38,   37,   38,   37,   38,   36,   26,   36,
 350        26,   36,   26,   36,   26,   36,   26,   27,   36,   26,
 351        26,   34,   36,   26,   26,   36,   36,   26,   36,   26,
 352 
 353        26,   17,   12,   19,   19,   38,   38,   19,   38,   38,
 354        19,   38,   17,   18,   37,   38,   37,   38,   36,   26,
 355        36,   26,   36,   26,   36,   26,   36,   26,   27,   36,
 356        26,   36,   26,   32,   36,   26,   32,   36,   26,   36,
 357        36,   26,   36,   26,   31,   36,   26,   31,   36,   26,
 358        30,   36,   26,   30,   36,   17,   39,   39,   39,   12,
 359        39,   19,   19,   21,   38,   38,   38,   19,   38,   38,
 360        19,   38,   17,   18,   37,   38,   37,   38,   36,   26,
 361        36,   26,   36,   26,   36,   26,   36,   26,   27,   36,
 362        36,   36,   26,   36,   17,   12,   19,   19,   21,   38,
 363 
 364        38,   38,   19,   38,   38,   19,   38,   17,   37,   38,
 365        37,   38,   36,   26,   36,   26,   36,   26,   36,   26,
 366        36,   28,   26,   27,   36,   28,   29,   26,   36,   36,
 367        26,   36,   29,   17,   39,   39,   12,   39,   19,   19,
 368        38,   24,   21,   38,   38,   19,   38,   38,   19,   38,
 369        17,   37,   38,   37,   38,   36,   26,   36,   26,   36,
 370        26,   36,   28,   27,   36,   26,   36,   36,   26,   36,
 371        29,   19,   19,   38,   24,   21,   38,   38,   19,   38,
 372        38,   19,   38,   17,   37,   38,   37,   38,   36,   26,
 373        36,   26,   36,   27,   36,   32,   31,   30,   26,   36,
 374 
 375        32,   36,   26,   36,   31,   30,   39,   19,   19,   38,
 376        24,   25,   25,   21,   38,   38,   19,   38,   38,   19,
 377        38,   17,   37,   38,   37,   38,   36,   26,   36,   28,
 378        27,   36,   36,   26,   36,   29,   19,   19,   38,   24,
 379        21,   38,   38,   19,   38,   38,   19,   38,   17,   37,
 380        38,   37,   38,   36,   26,   36,   27,   36,   35,   36,
 381        26,   35,   36,   16,   16,   19,   16,   16,   19,   16,
 382        16,   16,   16,   38,   16,   16,   24,   25,   16,   16,
 383        21,   38,   16,   16,   38,   16,   16,   19,   38,   16,
 384        38,   16,   19,   38,   16,   16,   17,   16,   16,   37,
 385 
 386        38,   16,   37,   38,   16,   16,   36,   16,   26,   36,
 387        16,   27,   36,   32,   32,   31,   31,   30,   30,   19,
 388        24,   21,   38,   38,   19,   38,   17,   27,   36,   22,
 389        22,   22,   22,   22,   15
 390     } ;
 391 
 392 static yyconst short int yy_accept[829] =
 393     {   0,
 394         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 395         1,    1,    1,    1,    1,    1,    1,    2,    4,    5,
 396         8,   10,   12,   14,   17,   19,   22,   24,   26,   29,
 397        31,   33,   36,   38,   41,   44,   47,   49,   51,   54,
 398        57,   59,   61,   64,   66,   69,   71,   74,   77,   79,
 399        81,   83,   85,   87,   90,   92,   95,   98,  100,  103,
 400       106,  109,  112,  115,  117,  119,  121,  124,  126,  129,
 401       131,  132,  132,  133,  133,  133,  134,  135,  136,  139,
 402       141,  143,  145,  147,  149,  151,  152,  153,  154,  155,
 403       156,  157,  157,  157,  158,  160,  162,  163,  165,  165,
 404 
 405       165,  165,  166,  167,  167,  168,  169,  170,  170,  171,
 406       171,  171,  172,  172,  173,  173,  173,  173,  174,  174,
 407       174,  174,  174,  174,  174,  175,  175,  177,  179,  180,
 408       180,  182,  184,  186,  188,  190,  192,  194,  196,  198,
 409       200,  201,  202,  203,  203,  204,  205,  206,  207,  209,
 410       210,  210,  211,  211,  211,  211,  211,  211,  212,  213,
 411       214,  215,  216,  217,  219,  219,  219,  220,  220,  220,
 412       220,  220,  222,  223,  223,  224,  224,  224,  225,  225,
 413       225,  225,  225,  226,  228,  228,  229,  230,  231,  233,
 414       235,  237,  239,  241,  243,  244,  247,  249,  251,  253,
 415 
 416       255,  257,  259,  260,  262,  264,  265,  266,  266,  268,
 417       268,  268,  268,  268,  268,  269,  270,  271,  272,  272,
 418       273,  273,  273,  274,  274,  274,  274,  275,  275,  275,
 419       275,  275,  277,  278,  279,  279,  279,  280,  280,  280,
 420       281,  281,  281,  282,  283,  283,  283,  283,  284,  286,
 421       288,  288,  289,  290,  292,  294,  296,  298,  300,  302,
 422       304,  306,  308,  310,  312,  313,  315,  318,  321,  321,
 423       323,  325,  327,  329,  330,  332,  333,  335,  338,  340,
 424       343,  344,  345,  346,  347,  347,  347,  349,  351,  351,
 425       352,  353,  355,  355,  356,  357,  357,  358,  358,  358,
 426 
 427       358,  359,  360,  360,  362,  363,  363,  365,  365,  366,
 428       366,  367,  367,  367,  368,  369,  370,  370,  370,  372,
 429       374,  376,  378,  378,  379,  381,  383,  385,  387,  387,
 430       387,  390,  390,  390,  390,  390,  391,  394,  395,  397,
 431       398,  400,  401,  401,  401,  402,  403,  403,  403,  403,
 432       404,  404,  405,  405,  406,  406,  406,  406,  406,  407,
 433       408,  408,  408,  410,  411,  413,  413,  414,  414,  414,
 434       415,  415,  415,  415,  415,  415,  415,  417,  419,  419,
 435       420,  422,  424,  426,  428,  428,  428,  431,  431,  431,
 436       431,  431,  431,  431,  433,  434,  436,  439,  441,  442,
 437 
 438       444,  445,  447,  450,  450,  450,  450,  451,  453,  456,
 439       457,  458,  459,  460,  462,  462,  463,  463,  464,  464,
 440       464,  464,  466,  467,  467,  468,  468,  468,  470,  471,
 441       473,  473,  474,  474,  475,  475,  475,  475,  475,  477,
 442       479,  479,  480,  482,  484,  486,  488,  488,  488,  491,
 443       491,  491,  491,  491,  491,  491,  491,  492,  492,  492,
 444       493,  495,  495,  495,  495,  495,  495,  495,  495,  496,
 445       496,  496,  497,  497,  498,  498,  499,  499,  499,  499,
 446       499,  499,  501,  502,  502,  503,  503,  505,  506,  508,
 447       508,  509,  509,  509,  509,  509,  509,  509,  509,  511,
 448 
 449       513,  513,  514,  516,  518,  520,  522,  522,  523,  523,
 450       526,  526,  527,  527,  527,  527,  527,  528,  528,  530,
 451       530,  530,  530,  531,  533,  533,  533,  534,  534,  534,
 452       534,  534,  534,  535,  536,  537,  539,  539,  540,  540,
 453       541,  541,  541,  541,  542,  543,  543,  543,  545,  545,
 454       546,  546,  548,  549,  551,  551,  551,  552,  552,  552,
 455       552,  552,  552,  554,  556,  556,  557,  559,  561,  563,
 456       563,  564,  564,  566,  566,  566,  566,  566,  568,  568,
 457       568,  568,  569,  571,  571,  571,  571,  571,  571,  572,
 458       572,  572,  572,  572,  572,  573,  573,  574,  574,  574,
 459 
 460       574,  574,  575,  576,  576,  576,  578,  578,  579,  579,
 461       581,  582,  584,  584,  584,  585,  585,  585,  585,  585,
 462       585,  585,  585,  587,  589,  589,  590,  592,  594,  594,
 463       596,  596,  597,  597,  597,  598,  598,  599,  601,  602,
 464       602,  602,  603,  605,  606,  606,  606,  606,  607,  607,
 465       607,  608,  608,  609,  609,  610,  610,  610,  610,  611,
 466       611,  612,  613,  614,  614,  616,  616,  617,  617,  619,
 467       620,  622,  622,  622,  623,  623,  623,  623,  623,  623,
 468       625,  627,  627,  628,  630,  631,  633,  633,  633,  634,
 469       636,  636,  636,  637,  637,  637,  637,  638,  638,  639,
 470 
 471       639,  639,  639,  639,  640,  641,  641,  641,  643,  643,
 472       644,  644,  646,  647,  649,  649,  649,  650,  650,  650,
 473       650,  650,  650,  650,  650,  652,  654,  654,  655,  657,
 474       659,  659,  659,  661,  664,  664,  664,  664,  664,  665,
 475       667,  668,  670,  671,  672,  673,  675,  676,  678,  679,
 476       680,  683,  684,  686,  687,  690,  692,  695,  695,  696,
 477       698,  699,  699,  699,  699,  699,  702,  705,  706,  708,
 478       711,  714,  714,  715,  716,  717,  717,  718,  719,  719,
 479       720,  721,  722,  722,  724,  724,  725,  725,  727,  727,
 480       727,  728,  728,  728,  728,  728,  728,  728,  730,  730,
 481 
 482       730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
 483       730,  731,  732,  732,  732,  732,  733,  734,  735,  735,
 484       735,  735,  735,  735,  735,  735,  736,  736
 485     } ;
 486 
 487 static yyconst int yy_ec[256] =
 488     {   0,
 489         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
 490         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
 491         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 492         1,    2,    5,    6,    7,    1,    1,    1,    1,    8,
 493         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
 494        19,   19,   19,   19,   19,   20,   21,   22,   12,   23,
 495        24,   25,    1,   26,   35,   36,   37,   37,   38,   39,
 496        40,   41,   41,   41,   41,   42,   41,   43,   44,   45,
 497        41,   46,   47,   48,   49,   41,   41,   41,   41,   41,
 498        29,   30,   31,   32,   33,   34,   35,   36,   37,   37,
 499 
 500        38,   39,   40,   41,   41,   41,   41,   42,   41,   43,
 501        44,   45,   41,   46,   47,   48,   49,   41,   41,   41,
 502        41,   41,    1,    1,    1,    1,    1,    1,    1,    1,
 503         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 504         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 505         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 506         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 507         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 508         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 509         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 510 
 511         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 512         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 513         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 514         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 515         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 516         1,    1,    1,    1,    1
 517     } ;
 518 
 519 static yyconst int yy_meta[50] =
 520     {   0,
 521         1,    2,    3,    4,    1,    5,    1,    6,    6,    1,
 522         7,    6,    8,    9,   10,   11,   11,   11,   11,   11,
 523        11,   12,    6,    1,    6,   13,   14,   15,    6,    5,
 524         6,    1,   16,    1,   14,   14,   14,   17,   14,   15,
 525        15,   15,   15,   15,   15,   15,   15,   15,   15
 526     } ;
 527 
 528 static yyconst short int yy_base[988] =
 529     {   0,
 530         0,    6,    8,    9,   54,   82,   14,   20,   28,   68,
 531       111,    0, 1916,    2,  147,  166, 1889,11232,11232,    0,
 532        78,11232,    7,    0,11232,11232,  183,11232,   24,   97,
 533      1864,    0, 1878,   13, 1862,   49, 1829,    0,   96,    0,
 534         0,  167,  168,   62,  171,  204,    0,  230,11232,  248,
 535       274,  172,  323,  357, 1837,  406,  440,  229,  127,   67,
 536       167,  130, 1812,    0,11232,  192,11232,  324,  452,  469,
 537         0,  221,11232,  250,  326,11232,    0,11232,  475,  481,
 538     11232,11232,11232,11232,11232,  208,  301,11232,11232,11232,
 539         0, 1830, 1818,    0,  212,    0,    0,  233,   77, 1815,
 540 
 541       502,  183,  214, 1832,  550,  580,  611,  645,    0,  549,
 542       671,    0,    0,  719,  757,  791,  825,  874,  908,  934,
 543       941, 1822,  980, 1014, 1063,  579, 1112, 1146, 1170,  708,
 544       728, 1787, 1791, 1783, 1768, 1760, 1761, 1790, 1756, 1741,
 545         0,  348,11232, 1773,  734,  244,  339,  260,  756,  790,
 546       384,11232,  340, 1209,  920, 1772, 1758, 1257, 1288,  953,
 547      1768, 1336,  982,  728,    0,  323, 1373, 1410, 1431, 1465,
 548      1499, 1533, 1581,  783, 1619, 1655, 1662, 1686, 1158, 1757,
 549      1182,  205, 1725, 1759, 1780, 1829, 1863, 1890, 1939, 1988,
 550      2022,    0,    0, 2046, 2085, 1256, 1724, 1703, 1702, 1691,
 551 
 552      1720, 1691, 2134, 1665, 1673,    0, 1325, 2173, 1347, 1362,
 553      1696, 2194, 2228, 1379, 1387, 1682, 2262, 1399, 2310, 2347,
 554         0,  666, 2367, 2404,  782, 1430,  816, 2425, 2459, 2493,
 555      2527, 2575, 1466, 2612, 1498, 1006, 2633, 2669, 1666, 2676,
 556      1665, 1570, 1587, 1593,  393,    0, 2715, 2764, 2798, 2832,
 557      2866, 2915, 2949, 2983, 3032, 1674, 1698, 1725, 1759, 1779,
 558      1793, 1875, 1889, 1664, 3081, 3118,  264, 1896, 1582, 3155,
 559       238, 1672,  401, 3164, 1635, 3203, 3240,  396, 1631, 1618,
 560      2034, 3276, 3302, 3336, 1601, 2058, 3370, 2194, 3406, 3419,
 561      3445,    0,    0, 2299, 3493, 3530, 1005, 3551, 3585, 3619,
 562 
 563      3653, 2318, 1582, 3701, 3738, 2326, 1347, 1457, 3759, 3795,
 564      3802, 2336, 1572,11232, 2356, 1353,  459,  489, 3841,    0,
 565      3875, 3909, 3943, 3992, 4026, 2373, 2379, 2393,  415,  479,
 566      2424, 1546, 1550,  487,  249, 2460, 2492, 4075, 2564, 4124,
 567      4158, 4197, 4234,  648, 4283, 2581, 2589,    0, 2601, 2688,
 568         0, 4331, 4368, 1456, 4389, 4423, 4457, 4491, 2766, 2800,
 569      2832, 2915, 4539, 4576, 1490, 1525, 4597, 2949, 4633, 3117,
 570      1536, 1534, 1523,  556,  586,    0, 4655, 4689, 4723, 4772,
 571      4806, 3125, 3176, 3239, 1481, 1488, 3247, 3302, 1476, 1482,
 572      1468, 1494, 1459, 4855,    0, 4892,  563, 3482, 4926, 4950,
 573 
 574         0, 4977,  653, 1449, 1455, 1430,    0, 5014,  747, 3499,
 575      3507, 1429, 1425, 3519,    0, 5062, 5099, 1750, 5120, 5154,
 576      5188, 5222, 3551,  317, 5258, 3586, 1421, 5278, 5315, 2219,
 577      1751, 5336, 5372, 3618, 1402, 1388,  658,  741, 5394, 5428,
 578      5462, 5511, 5545, 3690, 3707, 3713, 3814, 1323, 3841,  208,
 579      3875, 1301, 1239, 1241,  451, 1223, 5568,  766,  777, 5602,
 580      5626,  833,  698, 3727, 1230, 1254,  834,  768, 3909, 3994,
 581      4170, 4234,    0, 5664, 5701, 2223, 5722, 5756, 5790, 5824,
 582      4240, 5858, 5907,  451, 4320, 4339, 5940, 5977, 2450, 2451,
 583      5998, 6046, 1240, 1218, 1212,  861,  882,    0, 6068, 6102,
 584 
 585      6123, 6172, 6206,    0, 4345, 4357,  574, 4388, 1175, 4422,
 586       689,  953, 1204, 1161, 1181,  746, 1182, 1167, 6229, 1125,
 587      1129, 1132, 6263, 6287, 1122,  840, 4456, 1097,  786, 1094,
 588      1099, 1076,  278, 4528, 1106, 4545,    0, 6325, 6362, 2484,
 589      6383, 6417, 6451, 6485, 6506, 6538, 1086, 6559,  517, 4553,
 590      4565, 6579, 6616, 2518,  378, 2519, 6637, 6673, 1094, 1072,
 591       927,  967, 6695, 6729, 6737, 6786, 6820,    0, 4655,  821,
 592      1326, 1053, 6869,  951, 1028, 1010, 1032, 6892, 4689, 1023,
 593      1031, 6926, 6950, 4772, 1029,  996, 1002, 1059, 1400, 4891,
 594       998,  980, 4899,    0, 6988, 7025, 2789, 7046, 7080, 7114,
 595 
 596      7148, 7182, 4962, 7206, 4938, 4985, 5021, 5051, 5070, 7231,
 597      7268, 2823, 5013, 2790, 7289, 7325, 1000,  989,  983, 1071,
 598      1099,    0, 7347, 7381, 7402, 7451, 7485,    0,  950, 7534,
 599      1180, 1440,  970, 1198, 1508, 1205, 1734, 7568, 5076,  942,
 600       919, 7592, 7616, 5119,  887,  865,  856, 5153,  853,  835,
 601       866,    0, 7654, 7691, 2857, 7712, 7746, 7780, 7814, 7848,
 602      7869, 1411, 7889,  818, 7902,  546, 5088, 5187, 7922, 7959,
 603      2940,  815, 2858, 7980, 8016,  811,  809, 1120, 1217, 8038,
 604      8072, 8080, 8129, 8163,  778, 8212,  769,  743, 8246, 8270,
 605       730,  721,  709,  661,  672,    0, 8308, 8345, 2974, 8366,
 606 
 607      8400, 8434, 8468, 8502, 5268, 5288, 5294, 5395, 5304, 5430,
 608      5513, 8535, 8572, 3297, 5581, 2941, 8593, 8629,  647,  582,
 609       571, 1387, 1459,    0, 8651, 8685, 8706, 8755, 8789, 8838,
 610      1251,  543, 8872,    0,  527, 1475,  480, 1509,11232,  553,
 611      3327, 5614, 5638, 8899, 1426, 8920, 8954, 8976, 5654,  478,
 612      8995,  686, 5672, 5678, 9015, 9052, 3331, 5690, 3577, 9073,
 613      9109,  441,  413, 1540, 1601, 9131, 9165, 9173,    0,    0,
 614      5721, 1551, 2058,  409,  390, 1637, 2174,  347, 1696, 2228,
 615      1452,    0,  331,    0,  917, 5757, 5789,    0,  324, 5824,
 616         0,  313,  307,  277, 1603, 1627,    0, 5907, 5929,  235,
 617 
 618       239, 1712,  202, 5946,  159, 5952,  147, 1766,   95,  504,
 619      5966, 6035,   79,   51, 3440,11232, 6068, 1368,   48,   45,
 620      6102, 6122,    3, 6128, 6136,11232,11232, 9222, 9239, 9256,
 621      9273, 9290, 9307, 9324, 9334, 9351, 9368, 9385, 9402, 9419,
 622      9436, 9453, 9470, 9487, 9504, 9513, 9530, 9547, 9564, 9581,
 623      9590, 9607, 9624, 9632, 9649, 9666, 9675, 9692, 9709, 9717,
 624      9734, 9751, 9761, 9770, 9786, 9797, 9814, 9821, 9829, 9836,
 625      9853, 9870, 9887, 9904, 9921, 9931, 9948, 9957, 9974, 9991,
 626      9998,10006,10014,10031,10048,10058,10067,10084,10101,10108,
 627     10115,10123,10130,10147,10164,10173,10190,10207,10214,10221,
 628 
 629     10229,10237,10254,10271,10281,10291,10300,10317,10334,10351,
 630     10358,10365,10373,10380,10397,10414,10424,10434,10443,10460,
 631     10477,10494,10510,10511,10518,10526,10534,10551,10568,10578,
 632     10588,10598,10607,10624,10641,10658,10675,10682,10689,10697,
 633     10704,10721,10738,10747,10764,10781,10798,10805,10812,10820,
 634     10828,10845,10862,10871,10888,10905,10922,10929,10936,10944,
 635     10951,10968,10985,10995,11005,11015,11031,11047,11058,11075,
 636     11082,11089,11097,11105,11122,11129,11136,11144,11151,11158,
 637     11166,11174,11182,11190,11198,11206,11214
 638     } ;
 639 
 640 static yyconst short int yy_def[988] =
 641     {   0,
 642       828,  828,  829,  829,  830,  830,  831,  831,  832,  832,
 643       827,   11,  833,  833,   11,   11,  827,  827,  827,  834,
 644       827,  827,  835,  836,  827,  827,  837,  827,  827,  827,
 645       827,  838,  827,  827,  827,  827,  827,  839,  839,  840,
 646       841,  827,  842,  843,  827,  843,  844,  845,  827,  843,
 647       827,  846,  847,  827,  827,  827,   56,   51,   56,   56,
 648        57,   57,   57,  848,  827,  848,  827,  846,   54,   50,
 649       834,  827,  827,  835,  835,  827,  836,  827,  827,  827,
 650       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 651       838,  827,  827,  839,  839,  840,  841,  842,  843,  849,
 652 
 653       827,  843,  843,  844,  845,  850,  827,  849,   50,   51,
 654       827,   51,  851,  851,  852,  853,  827,  827,  827,  118,
 655       120,  854,  855,  827,  827,  119,  827,  127,  125,  111,
 656       128,  128,  127,  128,  128,  128,  128,  128,  128,  128,
 657       856,  856,  827,  851,  118,  843,  843,   70,  827,  827,
 658       827,  827,  849,  827,  101,  101,  827,  850,  827,  107,
 659       107,  849,  111,  111,  857,  827,  857,  857,  858,  858,
 660       859,  827,  172,  172,  827,  175,  176,  827,  178,  173,
 661       827,  860,  855,  861,  173,  827,  186,  183,  827,  827,
 662       190,  190,  191,  189,  827,  194,  191,  191,  191,  191,
 663 
 664       191,  191,  827,  191,  191,  857,  175,   70,  827,  154,
 665       154,  862,  862,  863,  159,  159,  827,  217,  162,  111,
 666       864,  865,  864,  864,  865,  827,  224,  866,  866,  867,
 667       827,  231,  231,  231,  231,  232,  827,  237,  238,  827,
 668       868,  240,  827,  827,  869,  870,  827,  871,  872,  872,
 669       827,  873,  873,  827,  827,  255,  255,  255,  255,  255,
 670       255,  255,  255,  255,  827,  265,  265,  255,  827,  255,
 671       270,  270,  270,  254,  270,  827,  276,  276,  270,  270,
 672       237,  874,  875,  875,  876,  876,  827,  287,  877,  877,
 673       827,  291,  878,  827,  878,  878,  296,  879,  879,  880,
 674 
 675       827,  301,  301,  301,  301,  301,  305,  304,  827,  309,
 676       827,  311,  881,  827,  827,  827,  882,  883,  871,  319,
 677       884,  884,  827,  885,  827,  325,  325,  325,  266,  827,
 678       325,  827,  827,  827,  827,  254,  325,  827,  325,  827,
 679       254,  827,  276,  827,  827,  309,  284,  886,  886,  287,
 680       887,  887,  887,  353,  888,  888,  889,  827,  358,  358,
 681       358,  358,  358,  358,  364,  363,  827,  827,  367,  827,
 682       827,  890,  891,  827,  892,  893,  894,  894,  827,  895,
 683       827,  381,  381,  381,  827,  827,  381,  827,  827,  827,
 684       827,  827,  827,  827,  338,  338,  338,  381,  340,  254,
 685 
 686       342,  342,  342,  827,  827,  827,  345,  345,  345,  367,
 687       284,  886,  349,  287,  896,  896,  896,  417,  897,  897,
 688       898,  827,  422,  422,  422,  425,  425,  425,  425,  429,
 689       428,  827,  432,  827,  899,  900,  901,  902,  903,  903,
 690       827,  904,  827,  443,  443,  443,  827,  827,  443,  905,
 691       827,  827,  827,  827,  906,  827,  394,  396,  827,  340,
 692       254,  402,  827,  827,  827,  827,  408,  827,  432,  284,
 693       349,  287,  907,  907,  907,  475,  908,  908,  909,  910,
 694       478,  827,  910,  482,  483,  483,  483,  483,  488,  487,
 695       827,  491,  827,  911,  912,  827,  913,  914,  915,  915,
 696 
 697       483,  916,  827,  503,  503,  503,  917,  827,  827,  503,
 698       905,  905,  827,  827,  827,  906,  906,  827,  457,  827,
 699       827,  827,  340,  254,  827,  827,  827,  827,  918,  827,
 700       827,  827,  491,  284,  471,  287,  919,  919,  919,  539,
 701       920,  920,  921,  922,  542,  922,  545,  546,  548,  546,
 702       546,  546,  546,  553,  923,  552,  827,  557,  924,  925,
 703       926,  927,  928,  928,  546,  929,  827,  567,  567,  917,
 704       917,  827,  827,  930,  827,  931,  932,  457,  827,  827,
 705       827,  340,  254,  827,  827,  827,  827,  918,  918,  827,
 706       827,  827,  471,  933,  933,  933,  596,  934,  934,  935,
 707 
 708       936,  936,  599,  937,  599,  602,  602,  602,  602,  602,
 709       602,  611,  827,  610,  827,  615,  827,  938,  939,  827,
 710       940,  941,  942,  942,  602,  943,  827,  627,  827,  827,
 711       930,  930,  827,  931,  931,  932,  932,  340,  827,  827,
 712       827,  340,  254,  827,  827,  827,  827,  827,  827,  827,
 713       593,  944,  944,  944,  654,  945,  945,  946,  947,  947,
 714       657,  937,  937,  661,  660,  665,  660,  660,  660,  660,
 715       670,  827,  669,  827,  674,  948,  949,  950,  951,  952,
 716       952,  660,  953,  827,  827,  827,  827,  827,  340,  254,
 717       827,  827,  827,  827,  827,  954,  954,  954,  698,  955,
 718 
 719       955,  956,  957,  957,  701,  663,  701,  704,  704,  704,
 720       704,  704,  704,  713,  827,  712,  827,  717,  827,  958,
 721       959,  827,  960,  961,  962,  962,  704,  963,  827,  827,
 722       964,  827,  340,  254,  827,  965,  827,  966,  827,  967,
 723       968,  827,  663,  663,  969,  970,  970,  663,  663,  748,
 724       747,  751,  747,  747,  747,  747,  756,  827,  755,  827,
 725       760,  971,  972,  973,  974,  975,  975,  747,  733,  254,
 726       733,  964,  964,  827,  827,  965,  965,  827,  966,  966,
 727       967,  748,  748,  751,  751,  747,  747,  755,  827,  747,
 728       760,  827,  976,  977,  827,  978,  979,  733,  827,  980,
 729 
 730       981,  982,  983,  827,  827,  827,  984,  827,  985,  827,
 731       827,  827,  986,  987,  827,  827,  827,  827,  827,  827,
 732       827,  827,  827,  827,  827,  827,    0,  827,  827,  827,
 733       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 734       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 735       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 736       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 737       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 738       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 739       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 740 
 741       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 742       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 743       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 744       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 745       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 746       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 747       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 748       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
 749       827,  827,  827,  827,  827,  827,  827
 750     } ;
 751 
 752 static yyconst short int yy_nxt[11282] =
 753     {   0,
 754       827,  827,   19,   66,   67,   66,   20,   21,   22,   21,
 755        25,   25,   20,   26,   26,   39,   30,   39,  827,   74,
 756        40,   39,   30,   39,  824,   86,   40,   86,   76,   42,
 757        30,   42,   23,   23,   43,   92,   90,   27,   27,   74,
 758        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
 759        23,   23,   23,   23,   23,   29,   30,   29,   31,  181,
 760        32,   33,  806,   31,   31,  181,   31,   31,   31,   42,
 761        30,   42,   90,   93,   43,  100,   34,   35,   36,   72,
 762        73,   72,   37,   29,   30,   29,   31,  101,   32,   33,
 763       100,   31,   31,  806,   31,   31,   31,   95,   87,   95,
 764 
 765        87,  133,  101,   88,   34,   35,   36,   89,  134,  181,
 766        37,   44,   45,   46,   45,   44,   47,   48,   49,   49,
 767        44,   50,   49,   51,   52,   53,   54,   54,   54,   54,
 768        54,   54,   55,   49,   44,   49,   44,   56,   57,   49,
 769        49,   49,   44,   58,   44,   59,   56,   56,   56,   60,
 770        57,   57,   57,   57,   57,   61,   62,   57,   63,   57,
 771        68,  806,   69,   69,   69,   69,   69,   69,   86,   91,
 772        86,   91,   86,  131,   86,  132,  138,  139,   70,   68,
 773       794,   69,   69,   69,   69,   69,   69,  114,  114,  114,
 774       114,  114,  114,  142,  143,  142,  100,   70,   79,   79,
 775 
 776        79,   79,   80,   80,  135,   87,  136,   87,  101,   86,
 777       102,   86,  137,   95,  103,   95,  181,  100,   81,  181,
 778       511,   82,   72,   73,   72,   83,  246,  100,   84,  101,
 779        85,   91,   99,   91,   91,   91,   91,   91,   91,  101,
 780       511,   91,  130,  106,  110,  110,  110,  110,  110,  110,
 781       188,   91,   91,  806,   91,  107,  794,  100,   91,   91,
 782        91,  108,   74,  109,  109,  109,  109,  109,  109,  101,
 783        99,  827,  208,  101,   99,  337,   99,  247,   99,  827,
 784        99,  827,   74,   99,   99,  330,  110,  111,   99,  112,
 785       112,  112,  112,  112,  112,  392,  393,   99,  122,  101,
 786 
 787       110,  110,  151,  152,  151,   99,  110,   99,  110,  110,
 788       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
 789       110,  110,  110,   99,  166,   99,  166,   99,  794,   99,
 790       473,  478,   99,   99,  721,   99,  115,  144,   74,  114,
 791       114,  114,  114,  114,  114,  799,   99,   76,  101,  142,
 792       143,  142,  100,  100,   99,   99,   99,   99,   74,   99,
 793       222,   99,  153,   99,  101,  154,   99,   99,  468,  110,
 794       117,  116,  118,  118,  118,  118,  118,  118,  119,  555,
 795        99,  555,  101,  120,  121,  151,  152,  151,   99,  110,
 796        99,  120,  120,  120,  120,  120,  121,  121,  121,  121,
 797 
 798       121,  121,  121,  121,  121,  121,   99,  181,   99,  247,
 799        99,  463,   99,  188,  246,   99,   99,  344,  123,  124,
 800       116,  125,  125,  125,  125,  125,  125,  126,  130,   99,
 801       459,  101,  127,  128,  794,  339,  827,   99,  123,   99,
 802       127,  127,  127,  127,  127,  128,  128,  128,  128,  128,
 803       128,  128,  128,  128,  128,  129,  129,  129,  129,  129,
 804       129,  827,  721,  516,  537,  541,  128,  145,  145,  145,
 805       145,  145,  145,  181,  128,  128,  128,  128,  128,  146,
 806       246,  147,  100,  516,  148,  148,  148,  148,  148,  148,
 807       149,  149,  149,  149,  150,  150,  150,  150,  150,  150,
 808 
 809       150,  150,   99,  181,   99,  815,   99,  815,   99,  153,
 810       376,   99,   99,  385,  155,  100,   99,  156,  156,  156,
 811       156,  156,  156,  386,  390,   99,  778,  101,  155,  155,
 812       594,  599,  391,   99,  155,   99,  155,  155,  155,  155,
 813       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
 814       155,   91,   99,   91,  166,   91,  166,   91,   91,  696,
 815       701,   91,  130,  106,  110,  110,  110,  110,  110,  110,
 816       181,   91,   91,  775,   91,  107,  247,  246,   91,   91,
 817        91,   91,  153,   91,  459,   91,  570,   91,   91,  774,
 818       222,   91,  122,   91,  179,  179,  179,  179,  179,  179,
 819 
 820       181,   91,   91,  721,   91,  159,  570,  376,   91,   91,
 821        91,  105,   91,   99,   91,  105,   91,  105,   91,   91,
 822       105,  105,   91,  160,  106,  105,  161,  161,  161,  161,
 823       161,  161,   91,   91,  105,   91,  107,  160,  160,   91,
 824        91,   91,  105,  160,  105,  160,  160,  160,  160,  160,
 825       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
 826       162,  162,  162,  162,  162,  162,  247,  225,  619,  225,
 827       154,  153,  181,  153,  463,  153,  226,  153,  226,  376,
 828       153,  153,  404,  163,  738,  153,  164,  164,  164,  164,
 829       164,  164,  405,  406,  153,  737,  154,  163,  163,  827,
 830 
 831       153,  511,  153,  163,  153,  163,  163,  163,  163,  163,
 832       163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
 833       166,  511,  166,  163,  163,  163,  163,  163,  163,  166,
 834       344,  166,  525,  736,  167,  167,  167,  167,  167,  167,
 835       195,  130,  526,  196,  196,  196,  196,  196,  196,  207,
 836       207,  207,  207,  207,  207,  181,  168,  153,  516,  153,
 837       247,  153,  498,  153,  735,  220,  153,  153,  468,  153,
 838       165,  209,  209,  209,  209,  150,  150,  732,  516,  130,
 839       153,  731,  154,  225,  827,  225,  827,  827,  153,  153,
 840       153,   99,  226,   99,  226,   99,  221,   99,  588,  330,
 841 
 842        99,   99,  530,   99,  170,  150,  150,  150,  150,  150,
 843       150,  520,  531,  532,   99,  521,  101,  827,  588,  827,
 844       233,  522,   99,   99,   99,  153,  827,  153,  827,  153,
 845       721,  153,  619,  570,  153,  153,  715,  163,  165,  169,
 846       172,  172,  172,  172,  172,  172,  130,  130,  153,  153,
 847       154,  173,  173,  570,  827,  827,  153,  163,  153,  173,
 848       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
 849       173,  173,  173,  173,   99,  181,   99,  585,   99,  348,
 850        99,  695,  376,   99,   99,  586,  110,  174,  171,  175,
 851       175,  175,  175,  175,  175,  119,  181,   99,  694,  101,
 852 
 853       176,  177,  693,  498,  692,   99,  110,   99,  176,  176,
 854       176,  176,  176,  177,  177,  177,  177,  177,  177,  177,
 855       177,  177,  177,  178,  178,  178,  178,  178,  178,  122,
 856       827,  153,  691,  212,  179,  155,  155,  155,  155,  155,
 857       155,  181,  179,  179,  179,  179,  179,  180,  498,  176,
 858       176,  176,  176,  176,  176,  126,  177,  177,  177,  177,
 859       177,  177,  827,  631,  688,  511,  217,  177,  160,  160,
 860       160,  160,  160,  160,  330,  177,  177,  177,  177,  177,
 861        99,  181,   99,  631,   99,  511,   99,  687,  622,   99,
 862        99,  269,  123,  130,   99,  130,  685,  163,  163,  163,
 863 
 864       163,  163,  163,   99,  122,  101,  827,  827,  827,  827,
 865       619,   99,  123,   99,  153,  827,  153,  827,  153,  293,
 866       153,  495,  634,  153,  153,  650,  163,  165,  169,  173,
 867       173,  173,  173,  173,  173,  649,  647,  153,  646,  154,
 868       184,  184,  634,  302,  636,  153,  163,  153,  184,  184,
 869       184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
 870       184,  184,  184,   99,  636,   99,  645,   99,  641,   99,
 871       640,  588,   99,   99,  633,  123,  185,  171,  186,  186,
 872       186,  186,  186,  186,  126,  181,   99,  629,  101,  186,
 873       187,  588,  498,  619,   99,  123,   99,  186,  186,  186,
 874 
 875       186,  186,  187,  187,  187,  187,  187,  187,  187,  187,
 876       187,  187,   99,  181,   99,  495,   99,  153,   99,  593,
 877       622,   99,   99,  592,  188,  185,  171,  189,  189,  189,
 878       189,  189,  189,  126,  181,   99,  591,  101,  190,  191,
 879       590,  622,  587,   99,  188,   99,  192,  192,  192,  192,
 880       192,  193,  193,  193,  193,  193,  193,  193,  193,  193,
 881       193,  194,  194,  194,  194,  194,  194,  827,  584,  581,
 882       580,  579,  191,  242,  242,  242,  242,  242,  242,  577,
 883       193,  193,  193,  193,  193,  187,  187,  187,  187,  187,
 884       187,  827,  631,  576,  516,  575,  187,  243,  244,  243,
 885 
 886       243,  243,  243,  344,  187,  187,  187,  187,  187,  153,
 887       634,  153,  631,  153,  516,  153,  574,  636,  153,  153,
 888       572,  210,  100,  153,  211,  211,  211,  211,  211,  211,
 889       634,  181,  153,  122,  154,  210,  210,  636,  724,  495,
 890       153,  210,  153,  210,  210,  210,  210,  210,  210,  210,
 891       210,  210,  210,  210,  210,  210,  210,  210,   91,  153,
 892        91,  373,   91,  772,   91,   91,  529,  528,   91,  518,
 893       106,  268,  268,  268,  268,  268,  268,  269,   91,   91,
 894       515,   91,  159,  772,  514,   91,   91,   91,  158,   91,
 895       153,   91,  158,   91,  158,   91,   91,  158,  158,   91,
 896 
 897       215,  106,  158,  216,  216,  216,  216,  216,  216,   91,
 898        91,  158,   91,  159,  215,  215,   91,   91,   91,  158,
 899       215,  158,  215,  215,  215,  215,  215,  215,  215,  215,
 900       215,  215,  215,  215,  215,  215,  215,  166,  570,  166,
 901       281,  281,  281,  281,  281,  281,  513,  330,  827,  100,
 902       827,  162,  162,  162,  162,  162,  162,  153,  570,  163,
 903       509,  154,  150,  150,  150,  150,  150,  150,  314,  314,
 904       314,  314,  314,  219,  166,  212,  166,  210,  210,  210,
 905       210,  210,  210,  816,  816,  816,  816,  816,  223,  223,
 906       223,  223,  223,  223,  286,  286,  286,  286,  286,  286,
 907 
 908       217,  181,  215,  215,  215,  215,  215,  215,  622,  495,
 909       224,  225,  588,  225,  288,  288,  288,  288,  288,  288,
 910       226,  344,  226,  373,  100,  227,  227,  227,  227,  227,
 911       227,  153,  588,  153,  473,  153,  154,  153,  471,  100,
 912       153,  153,  348,  153,  228,  294,  294,  294,  294,  294,
 913       294,  101,  631,  166,  153,  166,  154,  827,  827,  827,
 914       827,  459,  153,  153,  153,  153,  827,  153,  827,  153,
 915       351,  153,  631,  181,  153,  153,  466,  153,  221,  306,
 916       724,  302,  302,  302,  302,  302,  302,  776,  153,  222,
 917       154,  827,  465,  827,  360,  464,  153,  153,  153,   99,
 918 
 919       153,   99,  163,   99,  456,   99,  455,  776,   99,   99,
 920       454,   99,  228,  302,  302,  302,  302,  302,  302,  453,
 921       634,  779,   99,  452,  101,  448,  827,  447,  827,  463,
 922        99,   99,   99,  153,  166,  153,  166,  153,  415,  153,
 923       634,  779,  153,  153,  122,  163,  231,  229,  232,  232,
 924       232,  232,  232,  232,  181,  373,  153,  241,  154,  233,
 925       233,  724,  423,  772,  153,  163,  153,  233,  233,  233,
 926       234,  233,  233,  233,  233,  233,  233,  233,  233,  233,
 927       233,  233,  827,  772,  827,  312,  312,  312,  312,  312,
 928       312,  389,  388,  373,  235,  351,  233,  233,  233,  233,
 929 
 930       233,  233,  314,  314,  314,  314,  314,  314,  315,  315,
 931       316,  314,  314,  314,  348,  181,  332,  181,  233,   99,
 932       333,   99,  797,   99,  724,   99,  334,  335,   99,   99,
 933       188,  110,  236,  230,  237,  237,  237,  237,  237,  237,
 934       119,  181,   99,  345,  101,  238,  239,  342,  797,  776,
 935        99,  110,   99,  238,  238,  238,  238,  238,  239,  239,
 936       239,  239,  239,  239,  239,  239,  239,  239,  235,  776,
 937       238,  238,  238,  238,  238,  238,  126,  239,  239,  239,
 938       239,  239,  239,  827,  338,  827,  122,  827,  239,  324,
 939       324,  324,  324,  324,  324,  218,  239,  239,  239,  239,
 940 
 941       239,  240,  240,  240,  240,  240,  240,  241,  779,  213,
 942       280,  279,  242,  324,  324,  324,  324,  324,  324,  827,
 943       242,  242,  242,  242,  242,   99,  181,   99,  779,   99,
 944       275,   99,  274,  797,   99,   99,  273,  123,  247,   99,
 945       327,  327,  327,  327,  327,  327,  636,  272,   99,  271,
 946       101,  827,  827,  827,  827,  468,   99,  123,   99,  153,
 947       827,  153,  827,  153,  473,  153,  636,  270,  153,  153,
 948       221,  248,  235,  229,  328,  328,  328,  328,  328,  328,
 949       181,  218,  153,  214,  154,  213,  206,  797,  483,  205,
 950       153,  248,  153,  221,  328,  328,  328,  328,  328,  328,
 951 
 952       827,  204,  203,  202,  201,  200,  250,  250,  328,  328,
 953       328,  328,  328,  328,  250,  250,  250,  250,  250,  250,
 954       250,  250,  250,  250,  250,  250,  250,  250,  250,   99,
 955       199,   99,  198,   99,  197,   99,  181,  157,   99,   99,
 956       154,  123,  251,  230,  252,  252,  252,  252,  252,  252,
 957       126,   92,   99,   90,  101,  252,  253,  140,  122,   90,
 958        99,  123,   99,  252,  252,  252,  252,  252,  253,  253,
 959       253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
 960       253,  253,  253,  253,  827,   90,   90,   90,  827,  253,
 961       328,  328,  328,  328,  328,  328,  827,  253,  253,  253,
 962 
 963       253,  253,  188,  130,  327,  327,  327,  327,  327,  327,
 964       827,  331,  331,  331,  331,  331,  331,  269,   65,  827,
 965       827,  827,  188,  827,  254,  254,  254,  254,  254,  254,
 966       254,  254,  254,  254,  254,  254,  254,  254,  254,   99,
 967       827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
 968       827,  188,  251,  230,  255,  255,  255,  255,  255,  255,
 969       126,  827,   99,  827,  101,  252,  253,  827,  827,  827,
 970        99,  188,   99,  256,  256,  256,  256,  256,  257,  257,
 971       257,  257,  257,  257,  257,  257,  257,  257,   99,  827,
 972        99,  827,   99,  827,   99,  827,  827,   99,   99,  827,
 973 
 974       188,  251,  230,  258,  258,  258,  258,  258,  258,  126,
 975       827,   99,  827,  101,  259,  260,  827,  827,  827,   99,
 976       188,   99,  261,  261,  261,  261,  261,  262,  262,  262,
 977       262,  262,  262,  262,  262,  262,  262,  263,  263,  263,
 978       263,  263,  263,  827,  827,  827,  827,  827,  260,  346,
 979       346,  346,  346,  346,  346,  827,  262,  262,  262,  262,
 980       262,  264,  264,  264,  264,  264,  264,  827,  827,  827,
 981       772,  349,  253,  286,  286,  286,  286,  286,  286,  459,
 982       257,  257,  257,  257,  257,   99,  827,   99,  827,   99,
 983       772,   99,  827,  827,   99,   99,  827,  265,  130,   99,
 984 
 985       266,  266,  266,  266,  266,  266,  827,  827,   99,  827,
 986       101,  266,  266,  827,  827,  827,   99,  265,   99,  267,
 987       267,  267,  267,  267,  267,  267,  267,  267,  267,  267,
 988       267,  267,  267,  267,   99,  827,   99,  827,   99,  827,
 989        99,  827,  827,   99,   99,  827,  276,  130,   99,  277,
 990       277,  277,  277,  277,  277,  827,  827,   99,  827,  101,
 991       277,  277,  827,  827,  827,   99,  276,   99,  278,  278,
 992       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
 993       278,  278,  278,   99,  827,   99,  776,  827,  282,  282,
 994       282,  282,  282,  282,  153,  463,  153,  827,  153,  827,
 995 
 996       153,  827,  827,  153,  153,  827,  776,  350,  153,  288,
 997       288,  288,  288,  288,  288,  827,  827,  153,  827,  154,
 998       827,  827,  827,  827,  827,  153,  827,  153,  153,  153,
 999       153,  163,  153,  827,  153,  827,  827,  153,  153,  827,
1000       779,  827,  153,  284,  284,  284,  284,  284,  284,  468,
1001       827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1002       779,  153,  158,   91,  153,   91,  158,   91,  158,   91,
1003        91,  158,  158,   91,  287,   91,  158,  287,  287,  287,
1004       287,  287,  287,   91,   91,  158,   91,  159,  287,  287,
1005        91,   91,   91,  158,  287,  158,  287,  287,  287,  287,
1006 
1007       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1008       287,  225,  827,  225,  294,  294,  294,  294,  294,  294,
1009       289,  827,  289,  827,  827,  290,  290,  290,  290,  290,
1010       290,  361,  827,  360,  360,  360,  360,  360,  360,  351,
1011       827,  360,  360,  360,  360,  360,  360,  153,  225,  827,
1012       225,  371,  371,  371,  371,  371,  371,  289,  827,  291,
1013       130,  827,  292,  292,  292,  292,  292,  292,  166,  827,
1014       166,  314,  314,  314,  314,  314,  314,  827,  827,  827,
1015       827,  827,  295,  295,  295,  295,  295,  295,  380,  380,
1016       380,  380,  380,  380,  383,  383,  383,  383,  383,  383,
1017 
1018       827,  827,  827,  827,  296,  225,  827,  225,  384,  384,
1019       384,  384,  384,  384,  226,  827,  226,  827,  827,  297,
1020       297,  297,  297,  297,  297,  153,  827,  153,  827,  153,
1021       827,  153,  827,  827,  153,  153,  827,  153,  293,  387,
1022       387,  387,  387,  387,  387,  269,  827,  827,  153,  827,
1023       154,  827,  827,  827,  827,  827,  153,  153,  153,  153,
1024       153,  153,  163,  153,  537,  153,  827,  827,  153,  153,
1025       827,  153,  299,  130,  827,  394,  394,  394,  394,  394,
1026       394,  827,  153,  827,  154,  827,  827,  827,  544,  827,
1027       153,  153,  153,   99,  827,   99,  827,   99,  827,   99,
1028 
1029       827,  827,   99,   99,  827,   99,  299,  380,  380,  380,
1030       380,  380,  380,  827,  827,  827,   99,  827,  101,  827,
1031       827,  827,  827,  827,   99,   99,   99,  153,  153,  153,
1032       163,  153,  594,  153,  827,  827,  153,  153,  827,  163,
1033       293,  298,  301,  301,  301,  301,  301,  301,  827,  827,
1034       153,  827,  154,  302,  302,  827,  602,  827,  153,  163,
1035       153,  302,  302,  302,  302,  302,  302,  302,  302,  302,
1036       302,  302,  302,  302,  302,  302,  166,  827,  166,  380,
1037       380,  380,  380,  380,  380,  827,  827,  827,  303,  827,
1038       304,  304,  304,  304,  304,  304,  410,  410,  410,  410,
1039 
1040       410,  410,  827,  827,  411,  411,  411,  411,  411,  411,
1041       398,  827,  305,  225,  827,  225,  413,  413,  413,  413,
1042       413,  413,  289,  827,  291,  306,  827,  307,  307,  307,
1043       307,  307,  307,   99,  827,   99,  827,   99,  827,   99,
1044       827,  827,   99,   99,  827,  110,  308,  300,  309,  309,
1045       309,  309,  309,  309,  119,  827,   99,  827,  101,  310,
1046       310,  827,  827,  827,   99,  110,   99,  310,  310,  310,
1047       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
1048       310,  310,  306,  827,  310,  310,  310,  310,  310,  310,
1049       126,  311,  311,  311,  311,  311,  311,  241,  827,  827,
1050 
1051       827,   91,  312,  414,  414,  414,  414,  414,  414,  827,
1052       312,  312,  312,  312,  312,  153,  827,  153,  827,  153,
1053       827,  153,  827,  827,  153,  153,  827,  163,  827,  153,
1054       163,  163,  163,  163,  163,  163,  827,  827,  153,  827,
1055       154,  319,  319,  827,  827,  827,  153,  163,  153,  319,
1056       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
1057       319,  319,  319,  319,  153,  827,  153,  827,  153,  827,
1058       153,  827,  827,  153,  153,  827,  248,  130,  153,  424,
1059       827,  425,  425,  425,  425,  425,  425,  153,  827,  154,
1060       827,  827,  827,  827,  827,  153,  248,  153,  153,  827,
1061 
1062       153,  827,  153,  652,  153,  827,  827,  153,  153,  827,
1063       248,  306,  298,  426,  827,  423,  423,  423,  423,  423,
1064       423,  153,  827,  154,  827,  827,  827,  659,  827,  153,
1065       248,  153,  153,  153,  153,  163,  153,  827,  153,  827,
1066       827,  153,  153,  827,  248,  306,  298,  423,  423,  423,
1067       423,  423,  423,  827,  827,  153,  827,  154,  827,  827,
1068       827,  827,  827,  153,  248,  153,  153,  827,  153,  827,
1069       153,  696,  153,  827,  827,  153,  153,  827,  163,  293,
1070       298,  302,  302,  302,  302,  302,  302,  827,  827,  153,
1071       827,  154,  322,  322,  827,  704,  827,  153,  163,  153,
1072 
1073       322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
1074       322,  322,  322,  322,  322,   99,  827,   99,  827,   99,
1075       827,   99,  827,  827,   99,   99,  827,  123,  323,  300,
1076       425,  425,  425,  425,  425,  425,  126,  827,   99,  827,
1077       101,  827,  827,  827,  827,  827,   99,  123,   99,   99,
1078       153,   99,  163,   99,  739,   99,  827,  827,   99,   99,
1079       827,  123,  323,  300,  434,  434,  434,  434,  434,  434,
1080       827,  827,   99,  827,  101,  827,  827,  827,  746,  827,
1081        99,  123,   99,   99,  827,   99,  827,   99,  827,   99,
1082       827,  827,   99,   99,  827,  188,  247,   99,  183,  183,
1083 
1084       183,  183,  183,  183,  827,  827,   99,  827,  101,  183,
1085       183,  827,  827,  827,   99,  188,   99,  254,  254,  254,
1086       254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
1087       254,  254,   99,  827,   99,  827,   99,  827,   99,  827,
1088       827,   99,   99,  827,  188,  323,  300,  325,  325,  325,
1089       325,  325,  325,  126,  827,   99,  827,  101,  324,  324,
1090       827,  827,  827,   99,  188,   99,  326,  326,  326,  326,
1091       326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
1092       326,   99,  827,   99,  827,   99,  827,   99,  827,  827,
1093        99,   99,  827,  265,  130,   99,  266,  266,  266,  266,
1094 
1095       266,  266,  827,  827,   99,  827,  101,  266,  266,  827,
1096       827,  827,   99,  265,   99,  267,  267,  267,  267,  267,
1097       267,  267,  267,  267,  267,  267,  267,  267,  267,  267,
1098       329,  247,  434,  434,  434,  434,  434,  434,  241,  330,
1099       442,  442,  442,  442,  442,  442,  827,  827,  827,  827,
1100       329,  827,  266,  266,  266,  266,  266,  266,  266,  266,
1101       266,  266,  266,  266,  266,  266,  266,  336,  827,  827,
1102       328,  328,  328,  328,  328,  328,  827,  130,  827,  340,
1103       340,  340,  340,  340,  340,  827,  827,  827,  827,  827,
1104       340,  445,  445,  445,  445,  445,  445,  827,  341,  341,
1105 
1106       341,  341,  341,   99,  827,   99,  827,   99,  827,   99,
1107       827,  827,   99,   99,  827,  276,  130,   99,  277,  277,
1108       277,  277,  277,  277,  827,  827,   99,  827,  101,  277,
1109       277,  827,  827,  827,   99,  276,   99,  278,  278,  278,
1110       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
1111       278,  278,  343,  247,  446,  446,  446,  446,  446,  446,
1112       827,  344,  449,  449,  449,  449,  449,  449,  269,  827,
1113       827,  827,  343,  827,  277,  277,  277,  277,  277,  277,
1114       277,  277,  277,  277,  277,  277,  277,  277,  277,  100,
1115       827,  282,  282,  282,  282,  282,  282,  827,  827,  827,
1116 
1117       827,  101,  153,  827,  153,  827,  153,  153,  153,  163,
1118       827,  153,  153,  827,  450,  212,  153,  451,  451,  451,
1119       451,  451,  451,  827,  827,  153,  827,  154,  225,  827,
1120       225,  827,  827,  153,  827,  153,  153,  226,  153,  226,
1121       153,  153,  153,  163,  827,  153,  153,  827,  827,  347,
1122       153,  284,  284,  284,  284,  284,  284,  827,  827,  153,
1123       827,  154,  827,  827,  827,  827,  827,  153,  827,  153,
1124       158,   91,  153,   91,  158,   91,  158,   91,   91,  158,
1125       158,   91,  287,  217,  158,  287,  287,  287,  287,  287,
1126       287,   91,   91,  158,   91,  159,  287,  287,   91,   91,
1127 
1128        91,  158,  287,  158,  287,  287,  287,  287,  287,  287,
1129       287,  287,  287,  287,  287,  287,  287,  287,  287,  100,
1130       827,  290,  290,  290,  290,  290,  290,  827,  827,  827,
1131       827,  154,  100,  827,  290,  290,  290,  290,  290,  290,
1132       827,  815,  827,  815,  154,  153,  827,  153,  827,  153,
1133       821,  153,  821,  827,  153,  153,  827,  163,  130,  153,
1134       292,  292,  292,  292,  292,  292,  827,  827,  153,  827,
1135       154,  163,  163,  827,  827,  827,  153,  163,  153,  163,
1136       163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
1137       163,  163,  163,  163,  166,  827,  166,  442,  442,  442,
1138 
1139       442,  442,  442,  269,  827,  827,  827,  827,  352,  352,
1140       352,  352,  352,  352,  469,  469,  469,  469,  469,  469,
1141       470,  827,  411,  411,  411,  411,  411,  411,  827,  827,
1142       353,  225,  472,  225,  414,  414,  414,  414,  414,  414,
1143       226,  827,  226,  827,  827,  354,  354,  354,  354,  354,
1144       354,  153,  827,  153,  827,  153,  827,  153,  827,  827,
1145       153,  153,  827,  153,  355,  478,  483,  483,  483,  483,
1146       483,  483,  827,  827,  153,  827,  154,  827,  827,  827,
1147       827,  827,  153,  153,  153,  153,  827,  153,  827,  153,
1148       827,  153,  827,  827,  153,  153,  827,  153,  351,  473,
1149 
1150       827,  483,  483,  483,  483,  483,  483,  827,  153,  827,
1151       154,  827,  827,  827,  163,  827,  153,  153,  153,   99,
1152       827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
1153       827,   99,  355,  434,  434,  434,  434,  434,  434,  827,
1154       827,  827,   99,  827,  101,  827,  827,  827,  827,  827,
1155        99,   99,   99,  153,  827,  153,  827,  153,  827,  153,
1156       827,  827,  153,  153,  827,  163,  358,  356,  359,  359,
1157       359,  359,  359,  359,  827,  827,  153,  827,  154,  360,
1158       360,  827,  827,  827,  153,  163,  153,  360,  360,  360,
1159       360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
1160 
1161       360,  360,  166,  827,  166,  502,  502,  502,  502,  502,
1162       502,  827,  827,  827,  362,  827,  363,  363,  363,  363,
1163       363,  363,  505,  505,  505,  505,  505,  505,  506,  506,
1164       506,  506,  506,  506,  827,  827,  827,  827,  364,  225,
1165       827,  225,  527,  527,  527,  527,  527,  527,  289,  827,
1166       291,  361,  827,  365,  365,  365,  365,  365,  365,   99,
1167       827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
1168       827,  110,  366,  357,  367,  367,  367,  367,  367,  367,
1169       368,  827,   99,  827,  101,  369,  369,  827,  827,  827,
1170        99,  110,   99,  369,  369,  369,  369,  369,  369,  369,
1171 
1172       369,  369,  369,  369,  369,  369,  369,  369,  361,  827,
1173       369,  369,  369,  369,  369,  369,  827,  370,  370,  370,
1174       370,  370,  370,  241,  827,  827,  507,  827,  371,  508,
1175       508,  508,  508,  508,  508,  827,  371,  371,  371,  371,
1176       371,  153,  827,  153,  827,  153,  827,  153,  827,  827,
1177       153,  153,  827,  248,  130,  153,  510,  510,  510,  510,
1178       510,  510,  269,  827,  153,  827,  154,  827,  827,  827,
1179       827,  827,  153,  248,  153,  153,  827,  153,  827,  153,
1180       827,  153,  827,  827,  153,  153,  827,  248,  361,  356,
1181       451,  451,  451,  451,  451,  451,  269,  827,  153,  827,
1182 
1183       154,  827,  827,  827,  827,  827,  153,  248,  153,  153,
1184       827,  153,  827,  153,  827,  153,  827,  827,  153,  153,
1185       827,  248,  361,  356,  533,  533,  533,  533,  533,  533,
1186       827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
1187       153,  248,  153,  153,  827,  153,  827,  153,  827,  153,
1188       827,  827,  153,  153,  827,  163,  351,  356,  360,  360,
1189       360,  360,  360,  360,  827,  827,  153,  827,  154,  378,
1190       378,  827,  827,  827,  153,  163,  153,  378,  378,  378,
1191       378,  378,  378,  378,  378,  378,  378,  378,  378,  378,
1192       378,  378,   99,  827,   99,  827,   99,  827,   99,  827,
1193 
1194       827,   99,   99,  827,  123,  379,  357,  827,  827,  534,
1195       534,  534,  534,  534,  534,   99,  827,  101,  827,  827,
1196       827,  827,  827,   99,  123,   99,   99,  827,   99,  827,
1197        99,  827,   99,  827,  827,   99,   99,  827,  188,  379,
1198       357,  381,  381,  381,  381,  381,  381,  827,  827,   99,
1199       827,  101,  380,  380,  827,  827,  827,   99,  188,   99,
1200       382,  382,  382,  382,  382,  382,  382,  382,  382,  382,
1201       382,  382,  382,  382,  382,   99,  827,   99,  827,   99,
1202       827,   99,  827,  827,   99,   99,  827,  395,  130,   99,
1203       396,  396,  396,  396,  396,  396,  827,  827,   99,  827,
1204 
1205       101,  396,  396,  827,  827,  827,   99,  395,   99,  397,
1206       397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
1207       397,  397,  397,  397,   99,  827,   99,  827,   99,  827,
1208        99,  827,  827,   99,   99,  827,  123,  247,   99,  399,
1209       399,  399,  399,  399,  399,  827,  827,   99,  827,  101,
1210       399,  183,  827,  827,  827,   99,  123,   99,  399,  399,
1211       399,  399,  399,  183,  183,  183,  183,  183,  183,  183,
1212       183,  183,  183,  399,  399,  399,  399,  399,  399,  827,
1213       827,  827,  827,  827,  399,  535,  535,  535,  535,  535,
1214       535,  827,  400,  400,  400,  400,  400,   99,  827,   99,
1215 
1216       827,   99,  827,   99,  827,  827,   99,   99,  827,  401,
1217       130,   99,  402,  402,  402,  402,  402,  402,  827,  827,
1218        99,  827,  101,  402,  402,  827,  827,  827,   99,  401,
1219        99,  403,  403,  403,  403,  403,  403,  403,  403,  403,
1220       403,  403,  403,  403,  403,  403,  343,   91,  827,  536,
1221       536,  536,  536,  536,  536,  545,  545,  545,  545,  545,
1222       545,  827,  827,  827,  827,  827,  343,  827,  277,  277,
1223       277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1224       277,  277,  277,   99,  827,   99,  827,   99,  827,   99,
1225       827,  827,   99,   99,  827,  407,  130,   99,  408,  408,
1226 
1227       408,  408,  408,  408,  827,  827,   99,  827,  101,  408,
1228       408,  827,  827,  827,   99,  407,   99,  409,  409,  409,
1229       409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
1230       409,  409,  166,  549,  166,  550,  550,  550,  550,  550,
1231       550,  827,  827,  827,  827,  827,  416,  416,  416,  416,
1232       416,  416,  537,  827,  550,  550,  550,  550,  550,  550,
1233       568,  568,  568,  568,  568,  568,  827,  827,  417,  225,
1234       827,  225,  569,  569,  569,  569,  569,  569,  226,  827,
1235       226,  827,  827,  418,  418,  418,  418,  418,  418,  153,
1236       827,  153,  827,  153,  827,  153,  827,  827,  153,  153,
1237 
1238       827,  153,  415,  508,  508,  508,  508,  508,  508,  330,
1239       827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
1240       153,  153,  153,  153,  827,  153,  827,  153,  827,  153,
1241       827,  827,  153,  153,  827,  153,  420,  573,  573,  573,
1242       573,  573,  573,  269,  827,  827,  153,  827,  154,  827,
1243       827,  827,  827,  827,  153,  153,  153,   99,  827,   99,
1244       827,   99,  827,   99,  827,  827,   99,   99,  827,   99,
1245       420,  527,  527,  527,  527,  527,  527,  344,  827,  827,
1246        99,  827,  101,  827,  827,  827,  827,  827,   99,   99,
1247        99,  153,  827,  153,  827,  153,  827,  153,  827,  827,
1248 
1249       153,  153,  827,  163,  415,  419,  422,  422,  422,  422,
1250       422,  422,  827,  827,  153,  827,  154,  423,  423,  827,
1251       827,  827,  153,  163,  153,  423,  423,  423,  423,  423,
1252       423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
1253       166,  212,  166,  534,  534,  534,  534,  534,  534,  827,
1254       827,  827,  427,  827,  428,  428,  428,  428,  428,  428,
1255       536,  536,  536,  536,  536,  536,  607,  827,  608,  608,
1256       608,  608,  608,  608,  827,  827,  429,  225,  827,  225,
1257       608,  608,  608,  608,  608,  608,  289,  827,  291,  426,
1258       827,  430,  430,  430,  430,  430,  430,   99,  827,   99,
1259 
1260       827,   99,  827,   99,  827,  827,   99,   99,  827,  110,
1261       431,  421,  432,  432,  432,  432,  432,  432,  368,  827,
1262        99,  827,  101,  433,  433,  827,  827,  827,   99,  110,
1263        99,  433,  433,  433,  433,  433,  433,  433,  433,  433,
1264       433,  433,  433,  433,  433,  433,  426,  827,  433,  433,
1265       433,  433,  433,  433,  827,  153,  827,  153,  827,  153,
1266       827,  153,  827,  827,  153,  153,  827,  248,  426,  419,
1267       628,  628,  628,  628,  628,  628,  827,  827,  153,  827,
1268       154,  827,  827,  827,  827,  827,  153,  248,  153,  153,
1269       827,  153,  827,  153,  827,  153,  827,  827,  153,  153,
1270 
1271       827,  248,  426,  419,  639,  639,  639,  639,  639,  639,
1272       827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
1273       153,  248,  153,  153,  827,  153,  827,  153,  827,  153,
1274       827,  827,  153,  153,  827,  163,  415,  419,  423,  423,
1275       423,  423,  423,  423,  827,  827,  153,  827,  154,  440,
1276       440,  827,  827,  827,  153,  163,  153,  440,  440,  440,
1277       440,  440,  440,  440,  440,  440,  440,  440,  440,  440,
1278       440,  440,   99,  827,   99,  827,   99,  827,   99,  827,
1279       827,   99,   99,  827,  123,  441,  421,  644,  644,  644,
1280       644,  644,  644,  827,  827,   99,  827,  101,  827,  827,
1281 
1282       827,  827,  827,   99,  123,   99,   99,  827,   99,  827,
1283        99,  827,   99,  827,  827,   99,   99,  827,  188,  441,
1284       421,  443,  443,  443,  443,  443,  443,  827,  827,   99,
1285       827,  101,  442,  442,  827,  827,  827,   99,  188,   99,
1286       444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
1287       444,  444,  444,  444,  444,   99,  827,   99,  827,   99,
1288       827,   99,  827,  827,   99,   99,  827,  123,  247,   99,
1289       183,  183,  183,  183,  183,  183,  827,  827,   99,  827,
1290       101,  457,  457,  827,  827,  827,   99,  123,   99,  457,
1291       457,  457,  457,  457,  457,  457,  457,  457,  457,  457,
1292 
1293       457,  457,  457,  457,  458,  247,  648,  648,  648,  648,
1294       648,  648,  827,  459,  651,  651,  651,  651,  651,  651,
1295       827,  827,  827,  827,  458,  827,  396,  396,  396,  396,
1296       396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
1297       396,  460,  460,  460,  460,  460,  460,  827,  827,  827,
1298       827,  827,  460,  661,  661,  661,  661,  661,  661,  827,
1299       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
1300       460,  827,  827,  827,  827,  827,  460,  661,  661,  661,
1301       661,  661,  661,  827,  461,  461,  461,  461,  461,  462,
1302       247,  827,  827,  604,  827,  827,  827,  827,  463,  664,
1303 
1304       665,  665,  665,  665,  665,  665,  827,  827,  827,  462,
1305       827,  402,  402,  402,  402,  402,  402,  402,  402,  402,
1306       402,  402,  402,  402,  402,  402,  467,  247,  672,  672,
1307       672,  672,  672,  672,  652,  468,  665,  665,  665,  665,
1308       665,  665,  827,  827,  827,  827,  467,  827,  408,  408,
1309       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
1310       408,  408,  408,  166,  666,  166,  667,  667,  667,  667,
1311       667,  667,  827,  827,  827,  827,  827,  474,  474,  474,
1312       474,  474,  474,  652,  827,  667,  667,  667,  667,  667,
1313       667,  639,  639,  639,  639,  639,  639,  459,  827,  475,
1314 
1315       225,  709,  225,  710,  710,  710,  710,  710,  710,  226,
1316       827,  226,  827,  827,  476,  476,  476,  476,  476,  476,
1317       153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
1318       153,  827,  153,  477,  644,  644,  644,  644,  644,  644,
1319       463,  827,  827,  153,  827,  154,  827,  827,  827,  827,
1320       827,  153,  153,  153,  153,  827,  153,  827,  153,  827,
1321       153,  827,  827,  153,  153,  827,  153,  473,  648,  648,
1322       648,  648,  648,  648,  468,  827,  827,  153,  827,  154,
1323       827,  827,  827,  827,  827,  153,  153,  153,   99,  827,
1324        99,  827,   99,  827,   99,  827,  827,   99,   99,  827,
1325 
1326        99,  477,  710,  710,  710,  710,  710,  710,  827,  827,
1327       827,   99,  827,  101,  827,  827,  827,  827,  827,   99,
1328        99,   99,  153,  827,  153,  827,  153,  827,  153,  827,
1329       827,  153,  153,  827,  163,  480,  481,  482,  482,  482,
1330       482,  482,  482,  827,  827,  153,  827,  154,  483,  483,
1331       827,  827,  827,  153,  163,  153,  483,  483,  483,  483,
1332       483,  483,  483,  483,  483,  483,  483,  483,  483,  483,
1333       483,  484,  478,  485,  485,  485,  485,  485,  485,  166,
1334       827,  166,  827,  748,  748,  748,  748,  748,  748,  827,
1335       827,  486,  827,  487,  487,  487,  487,  487,  487,  604,
1336 
1337       153,  827,  827,  749,  749,  749,  749,  749,  749,  748,
1338       748,  748,  748,  748,  748,  488,  225,  739,  225,  751,
1339       751,  751,  751,  751,  751,  289,  827,  291,  480,  827,
1340       489,  489,  489,  489,  489,  489,   99,  827,   99,  827,
1341        99,  827,   99,  827,  827,   99,   99,  827,  110,  490,
1342       479,  491,  491,  491,  491,  491,  491,  368,  827,   99,
1343       827,  101,  492,  492,  827,  827,  827,   99,  110,   99,
1344       492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
1345       492,  492,  492,  492,  492,  480,  827,  492,  492,  492,
1346       492,  492,  492,  827,  153,  827,  153,  827,  153,  827,
1347 
1348       153,  827,  827,  153,  153,  827,  248,  480,  478,  750,
1349       751,  751,  751,  751,  751,  751,  827,  153,  827,  154,
1350       827,  827,  827,  827,  827,  153,  248,  153,  153,  827,
1351       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1352       248,  480,  478,  752,  827,  753,  753,  753,  753,  753,
1353       753,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1354       248,  153,  153,  827,  153,  827,  153,  827,  153,  827,
1355       827,  153,  153,  827,  163,  473,  478,  483,  483,  483,
1356       483,  483,  483,  827,  827,  153,  827,  154,  500,  500,
1357       827,  827,  827,  153,  163,  153,  500,  500,  500,  500,
1358 
1359       500,  500,  500,  500,  500,  500,  500,  500,  500,  500,
1360       500,   99,  827,   99,  827,   99,  827,   99,  827,  827,
1361        99,   99,  827,  123,  501,  479,  739,  827,  753,  753,
1362       753,  753,  753,  753,   99,  827,  101,  827,  827,  827,
1363       827,  827,   99,  123,   99,   99,  827,   99,  827,   99,
1364       827,   99,  827,  827,   99,   99,  827,  188,  501,  479,
1365       503,  503,  503,  503,  503,  503,  827,  827,   99,  827,
1366       101,  502,  502,  827,  827,  827,   99,  188,   99,  504,
1367       504,  504,  504,  504,  504,  504,  504,  504,  504,  504,
1368       504,  504,  504,  504,  519,  519,  758,  758,  758,  758,
1369 
1370       758,  758,  519,  519,  519,  519,  519,  519,  519,  519,
1371       519,  519,  519,  519,  519,  519,  519,  523,  523,  523,
1372       523,  523,  523,  827,  827,  827,  827,  827,  523,  294,
1373       294,  294,  294,  294,  294,  827,  523,  523,  523,  523,
1374       523,  523,  523,  523,  523,  523,  523,  827,  827,  827,
1375       153,  827,  523,  153,  153,  153,  153,  153,  153,  827,
1376       524,  524,  524,  524,  524,  166,  153,  166,  827,  749,
1377       749,  749,  749,  749,  749,  827,  827,  827,  827,  538,
1378       538,  538,  538,  538,  538,  785,  827,  786,  786,  786,
1379       786,  786,  786,  786,  786,  786,  786,  786,  786,  827,
1380 
1381       827,  539,  225,  827,  225,  789,  789,  789,  789,  789,
1382       789,  226,  827,  226,  827,  827,  540,  540,  540,  540,
1383       540,  540,  153,  827,  153,  827,  153,  827,  153,  827,
1384       827,  153,  153,  827,  153,  537,  798,  798,  798,  798,
1385       798,  798,  269,  827,  827,  153,  827,  154,  827,  827,
1386       827,  827,  827,  153,  153,  153,  153,  827,  153,  827,
1387       153,  827,  153,  827,  827,  153,  153,  827,  153,  542,
1388       785,  827,  786,  786,  786,  786,  786,  786,  827,  153,
1389       827,  154,  827,  827,  827,  827,  827,  153,  153,  153,
1390        99,  827,   99,  827,   99,  827,   99,  827,  827,   99,
1391 
1392        99,  827,   99,  542,  786,  786,  786,  786,  786,  786,
1393       827,  827,  827,   99,  827,  101,  827,  827,  827,  827,
1394       827,   99,   99,   99,  153,  827,  153,  827,  153,  827,
1395       153,  827,  827,  153,  153,  827,  163,  537,  541,  788,
1396       788,  788,  788,  788,  788,  827,  827,  153,  827,  154,
1397       827,  827,  827,  827,  827,  153,  163,  153,  153,  827,
1398       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1399       163,  546,  547,  548,  548,  548,  548,  548,  548,  827,
1400       827,  153,  827,  154,  544,  544,  827,  827,  827,  153,
1401       163,  153,  544,  544,  544,  544,  544,  544,  544,  544,
1402 
1403       544,  544,  544,  544,  544,  544,  544,  153,  827,  153,
1404       827,  153,  827,  153,  827,  827,  153,  153,  827,  163,
1405       546,  541,  798,  798,  798,  798,  798,  798,  269,  827,
1406       153,  827,  154,  827,  827,  827,  827,  827,  153,  163,
1407       153,  166,  827,  166,  804,  804,  804,  804,  804,  804,
1408       827,  827,  827,  551,  827,  552,  552,  552,  552,  552,
1409       552,  810,  810,  810,  810,  810,  810,  811,  812,  811,
1410       811,  811,  811,  827,  827,  827,  827,  553,  225,  827,
1411       225,  816,  816,  816,  816,  816,  816,  289,  827,  291,
1412       827,  827,  554,  554,  554,  554,  554,  554,   99,  555,
1413 
1414        99,  555,   99,  827,   99,  827,  827,   99,   99,  827,
1415       110,  556,  543,  557,  557,  557,  557,  557,  557,  368,
1416       827,   99,  827,  101,  558,  558,  827,  827,  827,   99,
1417       110,   99,  558,  558,  558,  558,  558,  558,  558,  558,
1418       558,  558,  558,  558,  558,  558,  558,  827,  827,  827,
1419       817,  817,  818,  816,  816,  816,  827,  827,  827,  546,
1420       827,  558,  558,  558,  558,  558,  558,  827,  153,  827,
1421       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1422       248,  546,  541,  816,  816,  816,  816,  816,  816,  827,
1423       827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1424 
1425       248,  153,  153,  827,  153,  827,  153,  827,  153,  827,
1426       827,  153,  153,  827,  248,  546,  541,  822,  822,  822,
1427       822,  822,  822,  827,  827,  153,  827,  154,  827,  827,
1428       827,  827,  827,  153,  248,  153,  537,  823,  823,  823,
1429       823,  823,  823,  825,  825,  825,  825,  825,  825,  564,
1430       564,  826,  826,  826,  826,  826,  826,  564,  564,  564,
1431       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
1432       564,  564,   99,  827,   99,  827,   99,  827,   99,  827,
1433       827,   99,   99,  827,  123,  565,  543,  827,  827,  827,
1434       827,  827,  827,  827,  827,   99,  827,  101,  827,  827,
1435 
1436       827,  827,  827,   99,  123,   99,   99,  827,   99,  827,
1437        99,  827,   99,  827,  827,   99,   99,  827,  188,  565,
1438       543,  566,  566,  566,  566,  566,  566,  827,  827,   99,
1439       827,  101,  566,  566,  827,  827,  827,   99,  188,   99,
1440       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
1441       567,  567,  567,  567,  567,  578,  578,  827,  827,  827,
1442       827,  827,  827,  578,  578,  578,  578,  578,  578,  578,
1443       578,  578,  578,  578,  578,  578,  578,  578,  582,  582,
1444       582,  582,  582,  582,  827,  827,  827,  827,  827,  582,
1445       827,  827,  827,  827,  827,  827,  827,  582,  582,  582,
1446 
1447       582,  582,  582,  582,  582,  582,  582,  582,  827,  827,
1448       827,  827,  827,  582,  827,  827,  827,  827,  827,  827,
1449       827,  583,  583,  583,  583,  583,  166,  827,  166,  827,
1450       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1451       595,  595,  595,  595,  595,  595,  827,  827,  827,  827,
1452       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1453       827,  827,  596,  225,  827,  225,  827,  827,  827,  827,
1454       827,  827,  226,  827,  226,  827,  827,  597,  597,  597,
1455       597,  597,  597,  153,  827,  153,  827,  153,  827,  153,
1456       827,  827,  153,  153,  827,  153,  598,  827,  827,  827,
1457 
1458       827,  827,  827,  827,  827,  827,  153,  827,  154,  827,
1459       827,  827,  827,  827,  153,  153,  153,  153,  827,  153,
1460       827,  153,  827,  153,  827,  827,  153,  153,  827,  153,
1461       594,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1462       153,  827,  154,  827,  827,  827,  827,  827,  153,  153,
1463       153,   99,  827,   99,  827,   99,  827,   99,  827,  827,
1464        99,   99,  827,   99,  598,  827,  827,  827,  827,  827,
1465       827,  827,  827,  827,   99,  827,  101,  827,  827,  827,
1466       827,  827,   99,   99,   99,  153,  827,  153,  827,  153,
1467       827,  153,  827,  827,  153,  153,  827,  163,  601,  599,
1468 
1469       827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
1470       154,  827,  827,  827,  827,  827,  153,  163,  153,  598,
1471       827,  603,  603,  603,  603,  603,  603,  827,  827,  827,
1472       827,  827,  827,  827,  827,  827,  827,  604,  153,  827,
1473       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1474       163,  594,  599,  827,  827,  827,  827,  827,  827,  827,
1475       827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1476       163,  153,  601,  605,  606,  606,  606,  606,  606,  606,
1477       166,  827,  166,  827,  827,  827,  827,  827,  827,  827,
1478       827,  827,  609,  827,  610,  610,  610,  610,  610,  610,
1479 
1480       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1481       827,  827,  827,  827,  827,  827,  611,  225,  827,  225,
1482       827,  827,  827,  827,  827,  827,  289,  827,  291,  601,
1483       827,  612,  612,  612,  612,  612,  612,   99,  827,   99,
1484       827,   99,  827,   99,  827,  827,   99,   99,  827,  110,
1485       614,  600,  615,  615,  615,  615,  615,  615,  368,  827,
1486        99,  827,  101,  616,  616,  827,  827,  827,   99,  110,
1487        99,  616,  616,  616,  616,  616,  616,  616,  616,  616,
1488       616,  616,  616,  616,  616,  616,  601,  827,  616,  616,
1489       616,  616,  616,  616,  827,  153,  827,  153,  827,  153,
1490 
1491       827,  153,  827,  827,  153,  153,  827,  248,  601,  599,
1492       827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
1493       154,  827,  827,  827,  827,  827,  153,  248,  153,  153,
1494       827,  153,  827,  153,  827,  153,  827,  827,  153,  153,
1495       827,  248,  601,  599,  827,  827,  827,  827,  827,  827,
1496       827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
1497       153,  248,  153,  624,  624,  827,  827,  827,  827,  827,
1498       827,  624,  624,  624,  624,  624,  624,  624,  624,  624,
1499       624,  624,  624,  624,  624,  624,   99,  827,   99,  827,
1500        99,  827,   99,  827,  827,   99,   99,  827,  123,  625,
1501 
1502       600,  827,  827,  827,  827,  827,  827,  827,  827,   99,
1503       827,  101,  827,  827,  827,  827,  827,   99,  123,   99,
1504        99,  827,   99,  827,   99,  827,   99,  827,  827,   99,
1505        99,  827,  188,  625,  600,  626,  626,  626,  626,  626,
1506       626,  827,  827,   99,  827,  101,  626,  626,  827,  827,
1507       827,   99,  188,   99,  627,  627,  627,  627,  627,  627,
1508       627,  627,  627,  627,  627,  627,  627,  627,  627,   99,
1509       827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
1510       827,  123,  625,  600,  630,  630,  630,  630,  630,  630,
1511       269,  827,   99,  827,  101,  626,  626,  827,  827,  827,
1512 
1513        99,  123,   99,  626,  626,  626,  626,  626,  626,  626,
1514       626,  626,  626,  626,  626,  626,  626,  626,  638,  638,
1515       827,  827,  827,  827,  827,  827,  638,  638,  638,  638,
1516       638,  638,  638,  638,  638,  638,  638,  638,  638,  638,
1517       638,  642,  642,  642,  642,  642,  642,  827,  827,  827,
1518       827,  827,  642,  827,  827,  827,  827,  827,  827,  827,
1519       642,  642,  642,  642,  642,  642,  642,  642,  642,  642,
1520       642,  827,  827,  827,  827,  827,  642,  827,  827,  827,
1521       827,  827,  827,  827,  643,  643,  643,  643,  643,  166,
1522       827,  166,  827,  827,  827,  827,  827,  827,  827,  827,
1523 
1524       827,  827,  827,  653,  653,  653,  653,  653,  653,  827,
1525       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1526       827,  827,  827,  827,  827,  654,  225,  827,  225,  827,
1527       827,  827,  827,  827,  827,  226,  827,  226,  827,  827,
1528       655,  655,  655,  655,  655,  655,  153,  827,  153,  827,
1529       153,  827,  153,  827,  827,  153,  153,  827,  153,  652,
1530       827,  827,  827,  827,  827,  827,  827,  827,  827,  153,
1531       827,  154,  827,  827,  827,  827,  827,  153,  153,  153,
1532       153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
1533       153,  827,  153,  657,  827,  827,  827,  827,  827,  827,
1534 
1535       827,  827,  827,  153,  827,  154,  827,  827,  827,  827,
1536       827,  153,  153,  153,   99,  827,   99,  827,   99,  827,
1537        99,  827,  827,   99,   99,  827,   99,  657,  827,  827,
1538       827,  827,  827,  827,  827,  827,  827,   99,  827,  101,
1539       827,  827,  827,  827,  827,   99,   99,   99,  153,  827,
1540       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1541       163,  652,  656,  827,  827,  827,  827,  827,  827,  827,
1542       827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1543       163,  153,  153,  827,  153,  827,  153,  827,  153,  827,
1544       827,  153,  153,  827,  163,  660,  656,  827,  827,  827,
1545 
1546       827,  827,  827,  827,  827,  153,  827,  154,  827,  827,
1547       827,  827,  827,  153,  163,  153,  662,  827,  662,  100,
1548       827,  663,  663,  663,  663,  663,  663,  827,  827,  827,
1549       827,  154,  166,  827,  166,  827,  827,  827,  827,  827,
1550       827,  827,  827,  827,  668,  827,  669,  669,  669,  669,
1551       669,  669,  827,  827,  827,  827,  827,  827,  827,  827,
1552       827,  827,  827,  827,  827,  827,  827,  827,  670,  225,
1553       827,  225,  827,  827,  827,  827,  827,  827,  289,  827,
1554       291,  827,  827,  671,  671,  671,  671,  671,  671,   99,
1555       827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
1556 
1557       827,  110,  673,  658,  674,  674,  674,  674,  674,  674,
1558       368,  827,   99,  827,  101,  675,  675,  827,  827,  827,
1559        99,  110,   99,  675,  675,  675,  675,  675,  675,  675,
1560       675,  675,  675,  675,  675,  675,  675,  675,  660,  827,
1561       675,  675,  675,  675,  675,  675,  827,  153,  827,  153,
1562       827,  153,  827,  153,  827,  827,  153,  153,  827,  248,
1563       660,  656,  827,  827,  827,  827,  827,  827,  827,  827,
1564       153,  827,  154,  827,  827,  827,  827,  827,  153,  248,
1565       153,  153,  827,  153,  827,  153,  827,  153,  827,  827,
1566       153,  153,  827,  248,  660,  656,  827,  827,  827,  827,
1567 
1568       827,  827,  827,  827,  153,  827,  154,  827,  827,  827,
1569       827,  827,  153,  248,  153,  652,  827,  827,  827,  827,
1570       827,  827,  827,  827,  827,  827,  827,  827,  681,  681,
1571       827,  827,  827,  827,  827,  827,  681,  681,  681,  681,
1572       681,  681,  681,  681,  681,  681,  681,  681,  681,  681,
1573       681,   99,  827,   99,  827,   99,  827,   99,  827,  827,
1574        99,   99,  827,  123,  682,  658,  827,  827,  827,  827,
1575       827,  827,  827,  827,   99,  827,  101,  827,  827,  827,
1576       827,  827,   99,  123,   99,   99,  827,   99,  827,   99,
1577       827,   99,  827,  827,   99,   99,  827,  188,  682,  658,
1578 
1579       683,  683,  683,  683,  683,  683,  827,  827,   99,  827,
1580       101,  683,  683,  827,  827,  827,   99,  188,   99,  684,
1581       684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
1582       684,  684,  684,  684,   99,  827,   99,  827,   99,  827,
1583        99,  827,  827,   99,   99,  827,  123,  682,  658,  686,
1584       686,  686,  686,  686,  686,  269,  827,   99,  827,  101,
1585       683,  683,  827,  827,  827,   99,  123,   99,  683,  683,
1586       683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
1587       683,  683,  683,  183,  183,  183,  183,  183,  183,  827,
1588       827,  827,  827,  827,  183,  827,  827,  827,  827,  827,
1589 
1590       827,  827,  183,  183,  183,  183,  183,  689,  689,  689,
1591       689,  689,  689,  827,  827,  827,  827,  827,  689,  827,
1592       827,  827,  827,  827,  827,  827,  689,  689,  689,  689,
1593       689,  689,  689,  689,  689,  689,  689,  827,  827,  827,
1594       827,  827,  689,  827,  827,  827,  827,  827,  827,  827,
1595       690,  690,  690,  690,  690,  166,  827,  166,  827,  827,
1596       827,  827,  827,  827,  827,  827,  827,  827,  827,  697,
1597       697,  697,  697,  697,  697,  827,  827,  827,  827,  827,
1598       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1599       827,  698,  225,  827,  225,  827,  827,  827,  827,  827,
1600 
1601       827,  226,  827,  226,  827,  827,  699,  699,  699,  699,
1602       699,  699,  153,  827,  153,  827,  153,  827,  153,  827,
1603       827,  153,  153,  827,  153,  700,  827,  827,  827,  827,
1604       827,  827,  827,  827,  827,  153,  827,  154,  827,  827,
1605       827,  827,  827,  153,  153,  153,  153,  827,  153,  827,
1606       153,  827,  153,  827,  827,  153,  153,  827,  153,  696,
1607       827,  827,  827,  827,  827,  827,  827,  827,  827,  153,
1608       827,  154,  827,  827,  827,  827,  827,  153,  153,  153,
1609        99,  827,   99,  827,   99,  827,   99,  827,  827,   99,
1610        99,  827,   99,  700,  827,  827,  827,  827,  827,  827,
1611 
1612       827,  827,  827,   99,  827,  101,  827,  827,  827,  827,
1613       827,   99,   99,   99,  153,  827,  153,  827,  153,  827,
1614       153,  827,  827,  153,  153,  827,  163,  703,  701,  827,
1615       827,  827,  827,  827,  827,  827,  827,  153,  827,  154,
1616       827,  827,  827,  827,  827,  153,  163,  153,  153,  827,
1617       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1618       163,  696,  701,  827,  827,  827,  827,  827,  827,  827,
1619       827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1620       163,  153,  700,  827,  705,  705,  705,  705,  705,  705,
1621       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1622 
1623       604,  706,  100,  827,  663,  663,  663,  663,  663,  663,
1624       827,  827,  827,  827,  154,  703,  707,  708,  708,  708,
1625       708,  708,  708,  166,  827,  166,  827,  827,  827,  827,
1626       827,  827,  827,  827,  827,  711,  827,  712,  712,  712,
1627       712,  712,  712,  827,  827,  827,  827,  827,  827,  827,
1628       827,  827,  827,  827,  827,  827,  827,  827,  827,  713,
1629       225,  827,  225,  827,  827,  827,  827,  827,  827,  289,
1630       827,  291,  703,  827,  714,  714,  714,  714,  714,  714,
1631        99,  827,   99,  827,   99,  827,   99,  827,  827,   99,
1632        99,  827,  110,  716,  702,  717,  717,  717,  717,  717,
1633 
1634       717,  368,  827,   99,  827,  101,  718,  718,  827,  827,
1635       827,   99,  110,   99,  718,  718,  718,  718,  718,  718,
1636       718,  718,  718,  718,  718,  718,  718,  718,  718,  703,
1637       827,  718,  718,  718,  718,  718,  718,  827,  153,  827,
1638       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1639       248,  703,  701,  827,  827,  827,  827,  827,  827,  827,
1640       827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1641       248,  153,  153,  827,  153,  827,  153,  827,  153,  827,
1642       827,  153,  153,  827,  248,  703,  701,  827,  827,  827,
1643       827,  827,  827,  827,  827,  153,  827,  154,  827,  827,
1644 
1645       827,  827,  827,  153,  248,  153,  726,  726,  827,  827,
1646       827,  827,  827,  827,  726,  726,  726,  726,  726,  726,
1647       726,  726,  726,  726,  726,  726,  726,  726,  726,   99,
1648       827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
1649       827,  123,  727,  702,  827,  827,  827,  827,  827,  827,
1650       827,  827,   99,  827,  101,  827,  827,  827,  827,  827,
1651        99,  123,   99,   99,  827,   99,  827,   99,  827,   99,
1652       827,  827,   99,   99,  827,  188,  727,  702,  728,  728,
1653       728,  728,  728,  728,  827,  827,   99,  827,  101,  728,
1654       728,  827,  827,  827,   99,  188,   99,  729,  729,  729,
1655 
1656       729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
1657       729,  729,   99,  827,   99,  827,   99,  827,   99,  827,
1658       827,   99,   99,  827,  123,  727,  702,  730,  730,  730,
1659       730,  730,  730,  269,  827,   99,  827,  101,  728,  728,
1660       827,  827,  827,   99,  123,   99,  728,  728,  728,  728,
1661       728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
1662       728,  733,  733,  733,  733,  733,  733,  827,  827,  827,
1663       827,  827,  733,  827,  827,  827,  827,  827,  827,  827,
1664       733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
1665       733,  827,  827,  827,  827,  827,  733,  827,  827,  827,
1666 
1667       827,  827,  827,  827,  734,  734,  734,  734,  734,  166,
1668       827,  166,  827,  827,  827,  827,  827,  827,  827,  827,
1669       827,  827,  827,  740,  740,  740,  740,  740,  740,  827,
1670       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1671       827,  827,  827,  827,  827,  741,  225,  827,  225,  827,
1672       827,  827,  827,  827,  827,  226,  827,  226,  827,  827,
1673       742,  742,  742,  742,  742,  742,  153,  827,  153,  827,
1674       153,  827,  153,  827,  827,  153,  153,  827,  153,  739,
1675       827,  827,  827,  827,  827,  827,  827,  827,  827,  153,
1676       827,  154,  827,  827,  827,  827,  827,  153,  153,  153,
1677 
1678       153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
1679       153,  827,  153,  744,  827,  827,  827,  827,  827,  827,
1680       827,  827,  827,  153,  827,  154,  827,  827,  827,  827,
1681       827,  153,  153,  153,   99,  827,   99,  827,   99,  827,
1682        99,  827,  827,   99,   99,  827,   99,  744,  827,  827,
1683       827,  827,  827,  827,  827,  827,  827,   99,  827,  101,
1684       827,  827,  827,  827,  827,   99,   99,   99,  153,  827,
1685       153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
1686       163,  739,  743,  827,  827,  827,  827,  827,  827,  827,
1687       827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
1688 
1689       163,  153,  153,  827,  153,  827,  153,  827,  153,  827,
1690       827,  153,  153,  827,  163,  747,  743,  827,  827,  827,
1691       827,  827,  827,  827,  827,  153,  827,  154,  827,  827,
1692       827,  827,  827,  153,  163,  153,  166,  827,  166,  827,
1693       827,  827,  827,  827,  827,  827,  827,  827,  754,  827,
1694       755,  755,  755,  755,  755,  755,  827,  827,  827,  827,
1695       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1696       827,  827,  756,  225,  827,  225,  827,  827,  827,  827,
1697       827,  827,  289,  827,  291,  827,  827,  757,  757,  757,
1698       757,  757,  757,   99,  827,   99,  827,   99,  827,   99,
1699 
1700       827,  827,   99,   99,  827,  110,  759,  745,  760,  760,
1701       760,  760,  760,  760,  368,  827,   99,  827,  101,  761,
1702       761,  827,  827,  827,   99,  110,   99,  761,  761,  761,
1703       761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
1704       761,  761,  747,  827,  761,  761,  761,  761,  761,  761,
1705       827,  153,  827,  153,  827,  153,  827,  153,  827,  827,
1706       153,  153,  827,  248,  747,  743,  827,  827,  827,  827,
1707       827,  827,  827,  827,  153,  827,  154,  827,  827,  827,
1708       827,  827,  153,  248,  153,  153,  827,  153,  827,  153,
1709       827,  153,  827,  827,  153,  153,  827,  248,  747,  743,
1710 
1711       827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
1712       154,  827,  827,  827,  827,  827,  153,  248,  153,  739,
1713       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1714       827,  827,  767,  767,  827,  827,  827,  827,  827,  827,
1715       767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
1716       767,  767,  767,  767,  767,   99,  827,   99,  827,   99,
1717       827,   99,  827,  827,   99,   99,  827,  123,  768,  745,
1718       827,  827,  827,  827,  827,  827,  827,  827,   99,  827,
1719       101,  827,  827,  827,  827,  827,   99,  123,   99,   99,
1720       827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
1721 
1722       827,  188,  768,  745,  769,  769,  769,  769,  769,  769,
1723       827,  827,   99,  827,  101,  769,  769,  827,  827,  827,
1724        99,  188,   99,  770,  770,  770,  770,  770,  770,  770,
1725       770,  770,  770,  770,  770,  770,  770,  770,   99,  827,
1726        99,  827,   99,  827,   99,  827,  827,   99,   99,  827,
1727       123,  768,  745,  771,  771,  771,  771,  771,  771,  269,
1728       827,   99,  827,  101,  769,  769,  827,  827,  827,   99,
1729       123,   99,  769,  769,  769,  769,  769,  769,  769,  769,
1730       769,  769,  769,  769,  769,  769,  769,  183,  183,  183,
1731       183,  183,  183,  827,  827,  827,  827,  827,  183,  827,
1732 
1733       827,  827,  827,  827,  827,  827,  183,  183,  183,  183,
1734       183,  153,  827,  827,  153,  153,  153,  153,  153,  153,
1735       153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
1736       153,  827,  827,  130,  153,  827,  827,  827,  827,  827,
1737       827,  827,  827,  153,  827,  154,  827,  827,  827,  827,
1738       827,  153,  827,  153,  153,  827,  153,  827,  153,  827,
1739       153,  827,  827,  153,  153,  827,  827,  827,  153,  827,
1740       827,  827,  827,  827,  827,  827,  827,  153,  827,  154,
1741       827,  827,  827,  827,  827,  153,  827,  153,  153,  827,
1742       827,  782,  782,  782,  782,  782,  782,  827,  827,  827,
1743 
1744       827,  827,  827,  827,  827,  827,  827,  604,  130,  783,
1745       784,  784,  784,  784,  784,  784,  166,  827,  166,  827,
1746       827,  827,  827,  827,  827,  827,  827,  827,  787,  827,
1747       788,  788,  788,  788,  788,  788,  827,  827,  827,  827,
1748       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1749       827,  827,  220,  225,  827,  225,  827,  827,  827,  827,
1750       827,  827,  289,  827,  291,  130,  827,  292,  292,  292,
1751       292,  292,  292,   99,  827,   99,  827,   99,  827,   99,
1752       827,  827,   99,   99,  827,  110,  790,   99,  791,  791,
1753       791,  791,  791,  791,  368,  827,   99,  827,  101,  110,
1754 
1755       110,  827,  827,  827,   99,  110,   99,  110,  110,  110,
1756       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
1757       110,  110,  130,  827,  110,  110,  110,  110,  110,  110,
1758       827,  153,  827,  153,  827,  153,  827,  153,  827,  827,
1759       153,  153,  827,  248,  130,  153,  827,  827,  827,  827,
1760       827,  827,  827,  827,  153,  827,  154,  827,  827,  827,
1761       827,  827,  153,  248,  153,  153,  827,  153,  827,  153,
1762       827,  153,  827,  827,  153,  153,  827,  248,  130,  153,
1763       827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
1764       154,  827,  827,  827,  827,  827,  153,  248,  153,  319,
1765 
1766       319,  827,  827,  827,  827,  827,  827,  319,  319,  319,
1767       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
1768       319,  319,   18,   18,   18,   18,   18,   18,   18,   18,
1769        18,   18,   18,   18,   18,   18,   18,   18,   18,   24,
1770        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
1771        24,   24,   24,   24,   24,   24,   28,   28,   28,   28,
1772        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
1773        28,   28,   28,   38,   38,   38,   38,   38,   38,   38,
1774        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1775        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
1776 
1777        41,   41,   41,   41,   41,   41,   41,   64,   64,   64,
1778        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
1779        64,   64,   64,   64,   71,   71,  827,   71,   71,   71,
1780        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
1781        71,   75,  827,  827,   75,   75,  827,   75,   75,   75,
1782        75,   77,   77,  827,   77,  827,   77,   77,   77,   77,
1783        77,   77,   77,   77,   77,   77,   77,   77,   78,   78,
1784        78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
1785        78,   78,   78,   78,   78,   91,   91,  827,   91,   91,
1786        91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
1787 
1788        91,   91,   94,   94,  827,   94,   94,   94,   94,   94,
1789        94,   94,   94,   94,   94,   94,   94,   94,   94,   96,
1790        96,  827,   96,   96,   96,   96,   96,   96,   96,   96,
1791        96,   96,   96,   96,   96,   96,   97,  827,  827,  827,
1792        97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
1793        97,   97,   97,   98,   98,  827,   98,   98,   98,   98,
1794        98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
1795        99,  827,   99,  827,  827,  827,   99,   99,   99,   99,
1796        99,  827,   99,   99,   99,   99,   99,  104,  104,  827,
1797       827,  827,  104,  104,  104,  104,  104,  104,  104,  827,
1798 
1799       104,  104,  104,  104,  105,  105,  105,  105,  105,  105,
1800       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
1801       105,  113,  113,  113,  827,  827,  113,  113,  827,  113,
1802       116,  827,  116,  827,  827,  827,  116,  116,  116,  116,
1803       116,  827,  116,  116,  116,  116,  116,  141,  141,  827,
1804       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
1805       141,  141,  141,  141,  153,  827,  153,  827,  827,  827,
1806       153,  153,  827,  153,  153,  827,  153,  153,  153,  153,
1807       153,  158,  158,  158,  158,  158,  158,  158,  158,  158,
1808       158,  158,  158,  158,  158,  158,  158,  158,  165,  165,
1809 
1810       165,  827,  827,  165,  165,  827,  165,  169,  827,  169,
1811       827,  827,  827,  169,  169,  169,  169,  169,  827,  169,
1812       169,  169,  169,  169,  171,  827,  171,  827,  827,  827,
1813       171,  171,  171,  171,  171,  827,  171,  171,  171,  171,
1814       171,  182,  182,  827,  827,  182,  827,  827,  182,  183,
1815       827,  183,  827,  827,  827,  183,  183,  183,  183,  183,
1816       827,  183,  183,  183,  183,  183,  141,  141,  827,  141,
1817       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
1818       141,  141,  141,  221,  221,  221,  827,  827,  221,  221,
1819       827,  221,  229,  827,  229,  827,  827,  827,  229,  229,
1820 
1821       229,  229,  229,  827,  229,  229,  229,  229,  229,  230,
1822       827,  230,  827,  827,  827,  230,  230,  230,  230,  230,
1823       827,  230,  230,  230,  230,  230,  245,  245,  245,  827,
1824       245,  827,  827,  245,  249,  827,  249,  827,  827,  827,
1825       249,  249,  249,  249,  249,  827,  249,  249,  249,  249,
1826       249,  283,  827,  283,  827,  827,  827,  283,  283,  827,
1827       283,  283,  827,  283,  283,  283,  283,  283,  285,  827,
1828       827,  285,  827,  827,  285,  285,  285,  285,  293,  293,
1829       293,  827,  827,  293,  293,  827,  293,  294,  827,  294,
1830       827,  827,  294,  294,  827,  827,  294,  298,  827,  298,
1831 
1832       827,  827,  827,  298,  298,  298,  298,  298,  827,  298,
1833       298,  298,  298,  298,  300,  827,  300,  827,  827,  827,
1834       300,  300,  300,  300,  300,  827,  300,  300,  300,  300,
1835       300,  313,  313,  827,  313,  827,  827,  313,  317,  317,
1836       317,  827,  317,  827,  827,  317,  318,  827,  827,  318,
1837       827,  827,  318,  320,  827,  320,  827,  827,  827,  320,
1838       320,  320,  320,  320,  827,  320,  320,  320,  320,  320,
1839       321,  827,  321,  827,  827,  827,  321,  321,  321,  321,
1840       321,  827,  321,  321,  321,  321,  321,  324,  827,  324,
1841       827,  827,  827,  324,  324,  324,  324,  324,  324,  324,
1842 
1843       324,  324,  324,  324,   99,  827,   99,  827,  827,  827,
1844        99,   99,   99,   99,   99,  827,   99,   99,   99,   99,
1845        99,  283,  827,  283,  827,  827,  827,  283,  283,  283,
1846       283,  283,  827,  283,  283,  283,  283,  283,  285,  285,
1847       827,  285,  827,  827,  285,  285,  285,  285,  153,  827,
1848       153,  827,  827,  827,  153,  153,  153,  153,  153,  827,
1849       153,  153,  153,  153,  153,  351,  351,  351,  827,  827,
1850       351,  351,  827,  351,  356,  827,  356,  827,  827,  827,
1851       356,  356,  356,  356,  356,  827,  356,  356,  356,  356,
1852       356,  357,  827,  357,  827,  827,  827,  357,  357,  357,
1853 
1854       357,  357,  827,  357,  357,  357,  357,  357,  372,  372,
1855       827,  372,  827,  827,  372,  374,  374,  374,  827,  374,
1856       827,  827,  374,  375,  375,  375,  827,  375,  827,  827,
1857       375,  377,  827,  377,  827,  827,  827,  377,  377,  377,
1858       377,  377,  827,  377,  377,  377,  377,  377,  380,  827,
1859       380,  827,  827,  827,  380,  380,  380,  380,  380,  827,
1860       380,  380,  380,  380,  380,  412,  827,  827,  412,  827,
1861       827,  412,  412,  412,  412,  415,  415,  415,  827,  827,
1862       415,  415,  827,  415,  419,  827,  419,  827,  827,  827,
1863       419,  419,  419,  419,  419,  827,  419,  419,  419,  419,
1864 
1865       419,  421,  827,  421,  827,  827,  827,  421,  421,  421,
1866       421,  421,  827,  421,  421,  421,  421,  421,  435,  435,
1867       827,  435,  827,  827,  435,  436,  436,  827,  436,  827,
1868       827,  436,  437,  437,  437,  827,  437,  827,  827,  437,
1869       438,  827,  827,  438,  827,  827,  438,  439,  827,  439,
1870       827,  827,  827,  439,  439,  439,  439,  439,  827,  439,
1871       439,  439,  439,  439,  442,  827,  442,  827,  827,  827,
1872       442,  442,  442,  442,  442,  827,  442,  442,  442,  442,
1873       442,  473,  473,  473,  827,  827,  473,  473,  827,  473,
1874       478,  827,  478,  827,  827,  827,  478,  478,  478,  478,
1875 
1876       478,  827,  478,  478,  478,  478,  478,  479,  827,  479,
1877       827,  827,  827,  479,  479,  479,  479,  479,  827,  479,
1878       479,  479,  479,  479,  493,  493,  827,  493,  827,  827,
1879       493,  494,  494,  827,  494,  827,  827,  494,  496,  496,
1880       496,  827,  496,  827,  827,  496,  497,  497,  497,  827,
1881       497,  827,  827,  497,  499,  827,  499,  827,  827,  827,
1882       499,  499,  499,  499,  499,  827,  499,  499,  499,  499,
1883       499,  502,  827,  502,  827,  827,  827,  502,  502,  502,
1884       502,  502,  827,  502,  502,  502,  502,  502,  512,  827,
1885       827,  512,  827,  827,  512,  512,  512,  512,  517,  827,
1886 
1887       827,  517,  827,  827,  517,  517,  517,  517,  537,  537,
1888       537,  827,  827,  537,  537,  827,  537,  541,  827,  541,
1889       827,  827,  827,  541,  541,  541,  541,  541,  827,  541,
1890       541,  541,  541,  541,  543,  827,  543,  827,  827,  827,
1891       543,  543,  543,  543,  543,  827,  543,  543,  543,  543,
1892       543,  544,  827,  544,  827,  827,  827,  544,  544,  544,
1893       544,  544,  827,  544,  544,  544,  544,  544,  559,  559,
1894       827,  559,  827,  827,  559,  560,  560,  827,  560,  827,
1895       827,  560,  561,  561,  561,  827,  561,  827,  827,  561,
1896       562,  827,  827,  562,  827,  827,  562,  563,  827,  563,
1897 
1898       827,  827,  827,  563,  563,  563,  563,  563,  827,  563,
1899       563,  563,  563,  563,  566,  827,  566,  827,  827,  827,
1900       566,  566,  566,  566,  566,  827,  566,  566,  566,  566,
1901       566,  571,  827,  827,  571,  827,  827,  571,  571,  571,
1902       571,  589,  827,  827,  589,  827,  827,  589,  589,  589,
1903       589,  594,  594,  594,  827,  827,  594,  594,  827,  594,
1904       599,  827,  599,  827,  827,  827,  599,  599,  599,  599,
1905       599,  827,  599,  599,  599,  599,  599,  600,  827,  600,
1906       827,  827,  827,  600,  600,  600,  600,  600,  827,  600,
1907       600,  600,  600,  600,  602,  827,  602,  827,  827,  827,
1908 
1909       602,  602,  602,  602,  602,  827,  602,  602,  602,  602,
1910       602,  613,  827,  613,  827,  827,  827,  827,  827,  827,
1911       613,  617,  617,  827,  617,  827,  827,  617,  618,  618,
1912       827,  618,  827,  827,  618,  620,  620,  620,  827,  620,
1913       827,  827,  620,  621,  621,  621,  827,  621,  827,  827,
1914       621,  623,  827,  623,  827,  827,  827,  623,  623,  623,
1915       623,  623,  827,  623,  623,  623,  623,  623,  626,  827,
1916       626,  827,  827,  827,  626,  626,  626,  626,  626,  827,
1917       626,  626,  626,  626,  626,  632,  827,  827,  632,  827,
1918       827,  632,  632,  632,  632,  635,  827,  827,  635,  827,
1919 
1920       827,  635,  635,  635,  635,  637,  827,  827,  637,  827,
1921       827,  637,  637,  637,  637,  652,  652,  652,  827,  827,
1922       652,  652,  827,  652,  656,  827,  656,  827,  827,  827,
1923       656,  656,  656,  656,  656,  827,  656,  656,  656,  656,
1924       656,  658,  827,  658,  827,  827,  827,  658,  658,  658,
1925       658,  658,  827,  658,  658,  658,  658,  658,  659,  827,
1926       659,  827,  827,  827,  659,  659,  659,  659,  659,  827,
1927       659,  659,  659,  659,  659,  153,  827,  153,  827,  827,
1928       827,  153,  153,  153,  153,  153,  827,  153,  153,  153,
1929       153,  153,  676,  676,  827,  676,  827,  827,  676,  677,
1930 
1931       677,  827,  677,  827,  827,  677,  678,  678,  678,  827,
1932       678,  827,  827,  678,  679,  827,  827,  679,  827,  827,
1933       679,  680,  827,  680,  827,  827,  827,  680,  680,  680,
1934       680,  680,  827,  680,  680,  680,  680,  680,  683,  827,
1935       683,  827,  827,  827,  683,  683,  683,  683,  683,  827,
1936       683,  683,  683,  683,  683,  696,  696,  696,  827,  827,
1937       696,  696,  827,  696,  701,  827,  701,  827,  827,  827,
1938       701,  701,  701,  701,  701,  827,  701,  701,  701,  701,
1939       701,  702,  827,  702,  827,  827,  827,  702,  702,  702,
1940       702,  702,  827,  702,  702,  702,  702,  702,  704,  827,
1941 
1942       704,  827,  827,  827,  704,  704,  704,  704,  704,  827,
1943       704,  704,  704,  704,  704,  719,  719,  827,  719,  827,
1944       827,  719,  720,  720,  827,  720,  827,  827,  720,  722,
1945       722,  722,  827,  722,  827,  827,  722,  723,  723,  723,
1946       827,  723,  827,  827,  723,  725,  827,  725,  827,  827,
1947       827,  725,  725,  725,  725,  725,  827,  725,  725,  725,
1948       725,  725,  728,  827,  728,  827,  827,  827,  728,  728,
1949       728,  728,  728,  827,  728,  728,  728,  728,  728,  739,
1950       739,  739,  827,  827,  739,  739,  827,  739,  743,  827,
1951       743,  827,  827,  827,  743,  743,  743,  743,  743,  827,
1952 
1953       743,  743,  743,  743,  743,  745,  827,  745,  827,  827,
1954       827,  745,  745,  745,  745,  745,  827,  745,  745,  745,
1955       745,  745,  746,  827,  746,  827,  827,  827,  746,  746,
1956       746,  746,  746,  827,  746,  746,  746,  746,  746,  762,
1957       762,  827,  762,  827,  827,  762,  763,  763,  827,  763,
1958       827,  827,  763,  764,  764,  764,  827,  764,  827,  827,
1959       764,  765,  827,  827,  765,  827,  827,  765,  766,  827,
1960       766,  827,  827,  827,  766,  766,  766,  766,  766,  827,
1961       766,  766,  766,  766,  766,  769,  827,  769,  827,  827,
1962       827,  769,  769,  769,  769,  769,  827,  769,  769,  769,
1963 
1964       769,  769,  773,  827,  827,  773,  827,  827,  773,  773,
1965       773,  773,  777,  827,  827,  777,  827,  827,  777,  777,
1966       777,  777,  780,  827,  827,  780,  827,  827,  780,  780,
1967       780,  780,  781,  827,  781,  827,  827,  827,  827,  827,
1968       827,  781,  827,  827,  827,  827,  827,  781,  294,  827,
1969       294,  827,  827,  294,  294,  827,  827,  294,   99,  827,
1970        99,  827,  827,  827,   99,   99,   99,   99,   99,  827,
1971        99,   99,   99,   99,   99,  163,  827,  163,  827,  827,
1972       827,  163,  163,  163,  163,  163,  827,  163,  163,  163,
1973       163,  163,  792,  792,  827,  792,  827,  827,  792,  793,
1974 
1975       793,  827,  793,  827,  827,  793,  795,  795,  795,  827,
1976       795,  827,  827,  795,  796,  796,  796,  827,  796,  827,
1977       827,  796,  320,  827,  320,  827,  827,  827,  320,  320,
1978       320,  320,  320,  827,  320,  320,  320,  320,  320,  800,
1979       800,  827,  800,  827,  827,  800,  801,  801,  827,  801,
1980       827,  827,  801,  802,  802,  802,  827,  802,  827,  827,
1981       802,  803,  827,  827,  803,  827,  827,  803,  805,  805,
1982       827,  805,  827,  827,  805,  807,  807,  827,  827,  807,
1983       827,  827,  807,  808,  808,  808,  827,  808,  827,  827,
1984       808,  809,  809,  827,  827,  809,  827,  827,  809,  813,
1985 
1986       813,  827,  827,  813,  827,  827,  813,  814,  814,  827,
1987       827,  814,  827,  827,  814,  819,  819,  827,  827,  819,
1988       827,  827,  819,  820,  820,  827,  827,  820,  827,  827,
1989       820,   17,  827,  827,  827,  827,  827,  827,  827,  827,
1990       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1991       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1992       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1993       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
1994       827
1995     } ;
1996 
1997 static yyconst short int yy_chk[11282] =
1998     {   0,
1999         0,    0,    1,   14,   14,   14,    1,    2,    2,    2,
2000         3,    4,    2,    3,    4,    7,    7,    7,    0,   23,
2001         7,    8,    8,    8,  823,   29,    8,   29,   23,    9,
2002         9,    9,    2,    2,    9,   34,   34,    3,    4,   23,
2003         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
2004         2,    2,    2,    2,    2,    5,    5,    5,    5,  820,
2005         5,    5,  819,    5,    5,  814,    5,    5,    5,   10,
2006        10,   10,   36,   36,   10,   44,    5,    5,    5,   21,
2007        21,   21,    5,    6,    6,    6,    6,   44,    6,    6,
2008        99,    6,    6,  813,    6,    6,    6,   39,   30,   39,
2009 
2010        30,   60,   99,   30,    6,    6,    6,   30,   60,  809,
2011         6,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2012        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2013        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2014        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2015        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2016        15,  807,   15,   15,   15,   15,   15,   15,   42,   43,
2017        42,   43,   45,   59,   45,   59,   62,   62,   15,   16,
2018       805,   16,   16,   16,   16,   16,   16,   52,   52,   52,
2019        52,   52,   52,   66,   66,   66,  102,   16,   27,   27,
2020 
2021        27,   27,   27,   27,   61,   46,   61,   46,  102,   86,
2022        46,   86,   61,   95,   46,   95,  803,   46,   27,  182,
2023       450,   27,   72,   72,   72,   27,  182,  103,   27,   46,
2024        27,   48,   48,   48,   98,   48,   98,   48,   48,  103,
2025       450,   48,   58,   48,   58,   58,   58,   58,   58,   58,
2026       271,   48,   48,  801,   48,   48,  800,  146,   48,   48,
2027        48,   50,   74,   50,   50,   50,   50,   50,   50,  146,
2028       148,   74,  148,   50,   51,  271,   51,  267,   51,  533,
2029        51,  533,   74,   51,   51,  267,   51,   51,   51,   51,
2030        51,   51,   51,   51,   51,  335,  335,   51,  794,   51,
2031 
2032        51,   51,   87,   87,   87,   51,   51,   51,   51,   51,
2033        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2034        51,   51,   51,   53,  166,   53,  166,   53,  793,   53,
2035       424,  424,   53,   53,  792,   53,   53,   68,   75,   68,
2036        68,   68,   68,   68,   68,  789,   53,   75,   53,  142,
2037       142,  142,  147,  153,   53,   53,   53,   54,   75,   54,
2038       166,   54,  783,   54,  147,  153,   54,   54,  778,   54,
2039        54,   54,   54,   54,   54,   54,   54,   54,   54,  555,
2040        54,  555,   54,   54,   54,  151,  151,  151,   54,   54,
2041        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
2042 
2043        54,   54,   54,   54,   54,   54,   56,  245,   56,  278,
2044        56,  775,   56,  273,  245,   56,   56,  278,   56,   56,
2045        56,   56,   56,   56,   56,   56,   56,   56,  329,   56,
2046       774,   56,   56,   56,  763,  273,  329,   56,   56,   56,
2047        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
2048        56,   56,   56,   56,   56,   57,   57,   57,   57,   57,
2049        57,   57,  762,  455,  484,  484,   57,   69,   69,   69,
2050        69,   69,   69,  317,   57,   57,   57,   57,   57,   70,
2051       317,   70,   70,  455,   70,   70,   70,   70,   70,   70,
2052        79,   79,   79,   79,   79,   79,   80,   80,   80,   80,
2053 
2054        80,   80,  101,  318,  101,  810,  101,  810,  101,  750,
2055       318,  101,  101,  330,  101,  101,  101,  101,  101,  101,
2056       101,  101,  101,  330,  334,  101,  737,  101,  101,  101,
2057       549,  549,  334,  101,  101,  101,  101,  101,  101,  101,
2058       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
2059       101,  105,  105,  105,  740,  105,  740,  105,  105,  666,
2060       666,  105,  110,  105,  110,  110,  110,  110,  110,  110,
2061       374,  105,  105,  735,  105,  105,  397,  374,  105,  105,
2062       105,  106,  106,  106,  397,  106,  507,  106,  106,  732,
2063       740,  106,  721,  106,  126,  126,  126,  126,  126,  126,
2064 
2065       375,  106,  106,  720,  106,  106,  507,  375,  106,  106,
2066       106,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2067       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2068       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2069       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2070       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2071       108,  108,  108,  108,  108,  108,  403,  222,  719,  222,
2072       108,  111,  437,  111,  403,  111,  222,  111,  222,  437,
2073       111,  111,  344,  111,  695,  111,  111,  111,  111,  111,
2074       111,  111,  344,  344,  111,  694,  111,  111,  111,  752,
2075 
2076       752,  511,  111,  111,  111,  111,  111,  111,  111,  111,
2077       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
2078       114,  511,  114,  130,  130,  130,  130,  130,  130,  164,
2079       693,  164,  463,  692,  114,  114,  114,  114,  114,  114,
2080       131,  164,  463,  131,  131,  131,  131,  131,  131,  145,
2081       145,  145,  145,  145,  145,  438,  114,  115,  516,  115,
2082       409,  115,  438,  115,  691,  164,  115,  115,  409,  115,
2083       115,  149,  149,  149,  149,  149,  149,  688,  516,  458,
2084       115,  687,  115,  225,  174,  225,  174,  458,  115,  115,
2085       115,  116,  225,  116,  225,  116,  174,  116,  529,  685,
2086 
2087       116,  116,  468,  116,  116,  150,  150,  150,  150,  150,
2088       150,  459,  468,  468,  116,  459,  116,  227,  529,  227,
2089       174,  459,  116,  116,  116,  117,  227,  117,  227,  117,
2090       677,  117,  676,  570,  117,  117,  672,  117,  117,  117,
2091       117,  117,  117,  117,  117,  117,  462,  467,  117,  664,
2092       117,  117,  117,  570,  462,  467,  117,  117,  117,  117,
2093       117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
2094       117,  117,  117,  117,  118,  496,  118,  526,  118,  651,
2095       118,  650,  496,  118,  118,  526,  118,  118,  118,  118,
2096       118,  118,  118,  118,  118,  118,  497,  118,  649,  118,
2097 
2098       118,  118,  647,  497,  646,  118,  118,  118,  118,  118,
2099       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
2100       118,  118,  118,  119,  119,  119,  119,  119,  119,  119,
2101       785,  785,  645,  155,  119,  155,  155,  155,  155,  155,
2102       155,  561,  119,  119,  119,  119,  119,  120,  561,  120,
2103       120,  120,  120,  120,  120,  120,  121,  121,  121,  121,
2104       121,  121,  121,  574,  641,  512,  160,  121,  160,  160,
2105       160,  160,  160,  160,  512,  121,  121,  121,  121,  121,
2106       123,  562,  123,  574,  123,  512,  123,  640,  562,  123,
2107       123,  633,  123,  123,  123,  163,  629,  163,  163,  163,
2108 
2109       163,  163,  163,  123,  619,  123,  297,  236,  297,  236,
2110       618,  123,  123,  123,  124,  297,  124,  297,  124,  236,
2111       124,  617,  576,  124,  124,  592,  124,  124,  124,  124,
2112       124,  124,  124,  124,  124,  591,  587,  124,  586,  124,
2113       124,  124,  576,  236,  577,  124,  124,  124,  124,  124,
2114       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
2115       124,  124,  124,  125,  577,  125,  585,  125,  581,  125,
2116       580,  588,  125,  125,  575,  125,  125,  125,  125,  125,
2117       125,  125,  125,  125,  125,  620,  125,  572,  125,  125,
2118       125,  588,  620,  560,  125,  125,  125,  125,  125,  125,
2119 
2120       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
2121       125,  125,  127,  621,  127,  559,  127,  547,  127,  535,
2122       621,  127,  127,  532,  127,  127,  127,  127,  127,  127,
2123       127,  127,  127,  127,  678,  127,  531,  127,  127,  127,
2124       530,  678,  528,  127,  127,  127,  127,  127,  127,  127,
2125       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
2126       127,  128,  128,  128,  128,  128,  128,  128,  525,  522,
2127       521,  520,  128,  179,  179,  179,  179,  179,  179,  518,
2128       128,  128,  128,  128,  128,  129,  129,  129,  129,  129,
2129       129,  129,  631,  515,  517,  514,  129,  181,  181,  181,
2130 
2131       181,  181,  181,  517,  129,  129,  129,  129,  129,  154,
2132       634,  154,  631,  154,  517,  154,  513,  636,  154,  154,
2133       509,  154,  154,  154,  154,  154,  154,  154,  154,  154,
2134       634,  679,  154,  495,  154,  154,  154,  636,  679,  494,
2135       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
2136       154,  154,  154,  154,  154,  154,  154,  154,  158,  158,
2137       158,  493,  158,  731,  158,  158,  466,  465,  158,  456,
2138       158,  196,  196,  196,  196,  196,  196,  196,  158,  158,
2139       454,  158,  158,  731,  453,  158,  158,  158,  159,  159,
2140       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2141 
2142       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2143       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2144       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2145       159,  159,  159,  159,  159,  159,  159,  162,  571,  162,
2146       207,  207,  207,  207,  207,  207,  452,  571,  307,  162,
2147       307,  162,  162,  162,  162,  162,  162,  307,  571,  307,
2148       448,  162,  209,  209,  209,  209,  209,  209,  316,  316,
2149       316,  316,  316,  162,  167,  210,  167,  210,  210,  210,
2150       210,  210,  210,  818,  818,  818,  818,  818,  167,  167,
2151       167,  167,  167,  167,  214,  214,  214,  214,  214,  214,
2152 
2153       215,  722,  215,  215,  215,  215,  215,  215,  722,  436,
2154       167,  168,  589,  168,  218,  218,  218,  218,  218,  218,
2155       168,  589,  168,  435,  662,  168,  168,  168,  168,  168,
2156       168,  169,  589,  169,  427,  169,  662,  169,  413,  745,
2157       169,  169,  412,  169,  169,  226,  226,  226,  226,  226,
2158       226,  745,  632,  781,  169,  781,  169,  354,  308,  354,
2159       308,  632,  169,  169,  169,  170,  354,  170,  354,  170,
2160       308,  170,  632,  723,  170,  170,  406,  170,  170,  233,
2161       723,  233,  233,  233,  233,  233,  233,  736,  170,  781,
2162       170,  365,  405,  365,  308,  404,  170,  170,  170,  171,
2163 
2164       365,  171,  365,  171,  393,  171,  392,  736,  171,  171,
2165       391,  171,  171,  235,  235,  235,  235,  235,  235,  390,
2166       635,  738,  171,  389,  171,  386,  366,  385,  366,  635,
2167       171,  171,  171,  172,  172,  172,  172,  172,  366,  172,
2168       635,  738,  172,  172,  373,  172,  172,  172,  172,  172,
2169       172,  172,  172,  172,  764,  372,  172,  371,  172,  172,
2170       172,  764,  366,  772,  172,  172,  172,  172,  172,  172,
2171       172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
2172       172,  172,  173,  772,  173,  242,  242,  242,  242,  242,
2173       242,  333,  332,  313,  173,  303,  173,  173,  173,  173,
2174 
2175       173,  173,  243,  243,  243,  243,  243,  243,  244,  244,
2176       244,  244,  244,  244,  285,  765,  269,  795,  173,  175,
2177       269,  175,  765,  175,  795,  175,  269,  269,  175,  175,
2178       280,  175,  175,  175,  175,  175,  175,  175,  175,  175,
2179       175,  796,  175,  279,  175,  175,  175,  275,  796,  776,
2180       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
2181       175,  175,  175,  175,  175,  175,  175,  175,  176,  776,
2182       176,  176,  176,  176,  176,  176,  176,  177,  177,  177,
2183       177,  177,  177,  177,  272,  264,  241,  239,  177,  256,
2184       256,  256,  256,  256,  256,  216,  177,  177,  177,  177,
2185 
2186       177,  178,  178,  178,  178,  178,  178,  178,  779,  211,
2187       205,  204,  178,  257,  257,  257,  257,  257,  257,  257,
2188       178,  178,  178,  178,  178,  183,  802,  183,  779,  183,
2189       202,  183,  201,  802,  183,  183,  200,  183,  183,  183,
2190       258,  258,  258,  258,  258,  258,  637,  199,  183,  198,
2191       183,  418,  431,  418,  431,  637,  183,  183,  183,  184,
2192       418,  184,  418,  184,  431,  184,  637,  197,  184,  184,
2193       180,  184,  184,  184,  259,  259,  259,  259,  259,  259,
2194       808,  161,  184,  157,  184,  156,  144,  808,  431,  140,
2195       184,  184,  184,  185,  260,  260,  260,  260,  260,  260,
2196 
2197       260,  139,  138,  137,  136,  135,  185,  185,  261,  261,
2198       261,  261,  261,  261,  185,  185,  185,  185,  185,  185,
2199       185,  185,  185,  185,  185,  185,  185,  185,  185,  186,
2200       134,  186,  133,  186,  132,  186,  122,  104,  186,  186,
2201       100,  186,  186,  186,  186,  186,  186,  186,  186,  186,
2202       186,   93,  186,   92,  186,  186,  186,   63,   55,   37,
2203       186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
2204       186,  186,  186,  186,  186,  186,  186,  186,  187,  187,
2205       187,  187,  187,  187,  187,   35,   33,   31,   17,  187,
2206       262,  262,  262,  262,  262,  262,  262,  187,  187,  187,
2207 
2208       187,  187,  188,  188,  263,  263,  263,  263,  263,  263,
2209       263,  268,  268,  268,  268,  268,  268,  268,   13,    0,
2210         0,    0,  188,    0,  188,  188,  188,  188,  188,  188,
2211       188,  188,  188,  188,  188,  188,  188,  188,  188,  189,
2212         0,  189,    0,  189,    0,  189,    0,    0,  189,  189,
2213         0,  189,  189,  189,  189,  189,  189,  189,  189,  189,
2214       189,    0,  189,    0,  189,  189,  189,    0,    0,    0,
2215       189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
2216       189,  189,  189,  189,  189,  189,  189,  189,  190,    0,
2217       190,    0,  190,    0,  190,    0,    0,  190,  190,    0,
2218 
2219       190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
2220         0,  190,    0,  190,  190,  190,    0,    0,    0,  190,
2221       190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
2222       190,  190,  190,  190,  190,  190,  190,  191,  191,  191,
2223       191,  191,  191,  191,    0,    0,    0,    0,  191,  281,
2224       281,  281,  281,  281,  281,    0,  191,  191,  191,  191,
2225       191,  194,  194,  194,  194,  194,  194,  194,    0,    0,
2226       773,  286,  194,  286,  286,  286,  286,  286,  286,  773,
2227       194,  194,  194,  194,  194,  195,    0,  195,    0,  195,
2228       773,  195,    0,    0,  195,  195,    0,  195,  195,  195,
2229 
2230       195,  195,  195,  195,  195,  195,    0,    0,  195,    0,
2231       195,  195,  195,    0,    0,    0,  195,  195,  195,  195,
2232       195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
2233       195,  195,  195,  195,  203,    0,  203,    0,  203,    0,
2234       203,    0,    0,  203,  203,    0,  203,  203,  203,  203,
2235       203,  203,  203,  203,  203,    0,    0,  203,    0,  203,
2236       203,  203,    0,    0,    0,  203,  203,  203,  203,  203,
2237       203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
2238       203,  203,  203,  208,    0,  208,  777,    0,  208,  208,
2239       208,  208,  208,  208,  212,  777,  212,    0,  212,    0,
2240 
2241       212,    0,    0,  212,  212,    0,  777,  288,  212,  288,
2242       288,  288,  288,  288,  288,    0,    0,  212,    0,  212,
2243       430,    0,  430,    0,  476,  212,  476,  212,  213,  430,
2244       213,  430,  213,  476,  213,  476,    0,  213,  213,    0,
2245       780,    0,  213,  213,  213,  213,  213,  213,  213,  780,
2246         0,  213,    0,  213,    0,    0,    0,    0,    0,  213,
2247       780,  213,  217,  217,  217,  217,  217,  217,  217,  217,
2248       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2249       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2250       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2251 
2252       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2253       217,  219,    0,  219,  294,  294,  294,  294,  294,  294,
2254       219,    0,  219,    0,    0,  219,  219,  219,  219,  219,
2255       219,  302,    0,  302,  302,  302,  302,  302,  302,  306,
2256         0,  306,  306,  306,  306,  306,  306,  219,  220,    0,
2257       220,  312,  312,  312,  312,  312,  312,  220,    0,  220,
2258       220,    0,  220,  220,  220,  220,  220,  220,  223,    0,
2259       223,  315,  315,  315,  315,  315,  315,    0,    0,    0,
2260         0,    0,  223,  223,  223,  223,  223,  223,  326,  326,
2261       326,  326,  326,  326,  327,  327,  327,  327,  327,  327,
2262 
2263         0,    0,    0,    0,  223,  224,    0,  224,  328,  328,
2264       328,  328,  328,  328,  224,    0,  224,    0,    0,  224,
2265       224,  224,  224,  224,  224,  228,    0,  228,    0,  228,
2266         0,  228,    0,    0,  228,  228,    0,  228,  228,  331,
2267       331,  331,  331,  331,  331,  331,    0,    0,  228,    0,
2268       228,  489,  490,  489,  490,    0,  228,  228,  228,  229,
2269       489,  229,  489,  229,  490,  229,    0,    0,  229,  229,
2270         0,  229,  229,  336,    0,  336,  336,  336,  336,  336,
2271       336,    0,  229,    0,  229,  540,    0,  540,  490,    0,
2272       229,  229,  229,  230,  540,  230,  540,  230,    0,  230,
2273 
2274         0,    0,  230,  230,    0,  230,  230,  337,  337,  337,
2275       337,  337,  337,    0,    0,    0,  230,    0,  230,  554,
2276       556,  554,  556,    0,  230,  230,  230,  231,  554,  231,
2277       554,  231,  556,  231,    0,    0,  231,  231,    0,  231,
2278       231,  231,  231,  231,  231,  231,  231,  231,    0,    0,
2279       231,    0,  231,  231,  231,    0,  556,    0,  231,  231,
2280       231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
2281       231,  231,  231,  231,  231,  231,  232,    0,  232,  339,
2282       339,  339,  339,  339,  339,    0,    0,    0,  232,    0,
2283       232,  232,  232,  232,  232,  232,  346,  346,  346,  346,
2284 
2285       346,  346,  347,    0,  347,  347,  347,  347,  347,  347,
2286       339,    0,  232,  234,    0,  234,  349,  349,  349,  349,
2287       349,  349,  234,    0,  234,  234,    0,  234,  234,  234,
2288       234,  234,  234,  237,    0,  237,    0,  237,    0,  237,
2289         0,    0,  237,  237,    0,  237,  237,  237,  237,  237,
2290       237,  237,  237,  237,  237,    0,  237,    0,  237,  237,
2291       237,    0,    0,    0,  237,  237,  237,  237,  237,  237,
2292       237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
2293       237,  237,  238,    0,  238,  238,  238,  238,  238,  238,
2294       238,  240,  240,  240,  240,  240,  240,  240,    0,    0,
2295 
2296         0,  350,  240,  350,  350,  350,  350,  350,  350,    0,
2297       240,  240,  240,  240,  240,  247,    0,  247,    0,  247,
2298         0,  247,    0,    0,  247,  247,    0,  247,    0,  247,
2299       247,  247,  247,  247,  247,  247,    0,    0,  247,    0,
2300       247,  247,  247,    0,    0,    0,  247,  247,  247,  247,
2301       247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
2302       247,  247,  247,  247,  248,    0,  248,    0,  248,    0,
2303       248,    0,    0,  248,  248,    0,  248,  248,  248,  359,
2304         0,  359,  359,  359,  359,  359,  359,  248,    0,  248,
2305       597,  614,  597,  614,    0,  248,  248,  248,  249,  597,
2306 
2307       249,  597,  249,  614,  249,    0,    0,  249,  249,    0,
2308       249,  249,  249,  360,    0,  360,  360,  360,  360,  360,
2309       360,  249,    0,  249,  612,    0,  612,  614,    0,  249,
2310       249,  249,  250,  612,  250,  612,  250,    0,  250,    0,
2311         0,  250,  250,    0,  250,  250,  250,  361,  361,  361,
2312       361,  361,  361,    0,    0,  250,    0,  250,  655,  673,
2313       655,  673,    0,  250,  250,  250,  251,  655,  251,  655,
2314       251,  673,  251,    0,    0,  251,  251,    0,  251,  251,
2315       251,  251,  251,  251,  251,  251,  251,    0,    0,  251,
2316         0,  251,  251,  251,    0,  673,    0,  251,  251,  251,
2317 
2318       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
2319       251,  251,  251,  251,  251,  252,    0,  252,    0,  252,
2320         0,  252,    0,    0,  252,  252,    0,  252,  252,  252,
2321       362,  362,  362,  362,  362,  362,  252,    0,  252,    0,
2322       252,  671,  716,  671,  716,    0,  252,  252,  252,  253,
2323       671,  253,  671,  253,  716,  253,    0,    0,  253,  253,
2324         0,  253,  253,  253,  368,  368,  368,  368,  368,  368,
2325       253,    0,  253,    0,  253,  699,    0,  699,  716,    0,
2326       253,  253,  253,  254,  699,  254,  699,  254,    0,  254,
2327         0,    0,  254,  254,    0,  254,  254,  254,  254,  254,
2328 
2329       254,  254,  254,  254,    0,    0,  254,    0,  254,  254,
2330       254,    0,    0,    0,  254,  254,  254,  254,  254,  254,
2331       254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
2332       254,  254,  255,    0,  255,    0,  255,    0,  255,    0,
2333         0,  255,  255,    0,  255,  255,  255,  255,  255,  255,
2334       255,  255,  255,  255,    0,  255,    0,  255,  255,  255,
2335         0,    0,    0,  255,  255,  255,  255,  255,  255,  255,
2336       255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
2337       255,  265,    0,  265,    0,  265,    0,  265,    0,    0,
2338       265,  265,    0,  265,  265,  265,  265,  265,  265,  265,
2339 
2340       265,  265,    0,    0,  265,    0,  265,  265,  265,    0,
2341         0,    0,  265,  265,  265,  265,  265,  265,  265,  265,
2342       265,  265,  265,  265,  265,  265,  265,  265,  265,  265,
2343       266,  266,  370,  370,  370,  370,  370,  370,  370,  266,
2344       382,  382,  382,  382,  382,  382,    0,    0,    0,    0,
2345       266,    0,  266,  266,  266,  266,  266,  266,  266,  266,
2346       266,  266,  266,  266,  266,  266,  266,  270,    0,    0,
2347       270,  270,  270,  270,  270,  270,  270,  274,    0,  274,
2348       274,  274,  274,  274,  274,    0,    0,    0,    0,    0,
2349       274,  383,  383,  383,  383,  383,  383,    0,  274,  274,
2350 
2351       274,  274,  274,  276,    0,  276,    0,  276,    0,  276,
2352         0,    0,  276,  276,    0,  276,  276,  276,  276,  276,
2353       276,  276,  276,  276,    0,    0,  276,    0,  276,  276,
2354       276,    0,    0,    0,  276,  276,  276,  276,  276,  276,
2355       276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
2356       276,  276,  277,  277,  384,  384,  384,  384,  384,  384,
2357         0,  277,  387,  387,  387,  387,  387,  387,  387,    0,
2358         0,    0,  277,    0,  277,  277,  277,  277,  277,  277,
2359       277,  277,  277,  277,  277,  277,  277,  277,  277,  282,
2360         0,  282,  282,  282,  282,  282,  282,    0,  714,    0,
2361 
2362       714,  282,  283,    0,  283,    0,  283,  714,  283,  714,
2363         0,  283,  283,    0,  388,  283,  283,  388,  388,  388,
2364       388,  388,  388,    0,    0,  283,    0,  283,  741,    0,
2365       741,    0,  757,  283,  757,  283,  284,  741,  284,  741,
2366       284,  757,  284,  757,    0,  284,  284,    0,    0,  284,
2367       284,  284,  284,  284,  284,  284,  284,    0,    0,  284,
2368         0,  284,    0,    0,    0,    0,    0,  284,    0,  284,
2369       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2370       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2371       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2372 
2373       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2374       287,  287,  287,  287,  287,  287,  287,  287,  287,  289,
2375         0,  289,  289,  289,  289,  289,  289,    0,    0,    0,
2376         0,  289,  290,    0,  290,  290,  290,  290,  290,  290,
2377         0,  815,    0,  815,  290,  291,    0,  291,    0,  291,
2378       815,  291,  815,    0,  291,  291,    0,  291,  291,  291,
2379       291,  291,  291,  291,  291,  291,    0,    0,  291,    0,
2380       291,  291,  291,    0,    0,    0,  291,  291,  291,  291,
2381       291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
2382       291,  291,  291,  291,  295,    0,  295,  398,  398,  398,
2383 
2384       398,  398,  398,  398,    0,    0,    0,    0,  295,  295,
2385       295,  295,  295,  295,  410,  410,  410,  410,  410,  410,
2386       411,    0,  411,  411,  411,  411,  411,  411,    0,    0,
2387       295,  296,  414,  296,  414,  414,  414,  414,  414,  414,
2388       296,    0,  296,    0,    0,  296,  296,  296,  296,  296,
2389       296,  298,    0,  298,    0,  298,    0,  298,    0,    0,
2390       298,  298,    0,  298,  298,  423,  423,  423,  423,  423,
2391       423,  423,    0,    0,  298,    0,  298,    0,  759,    0,
2392       759,    0,  298,  298,  298,  299,    0,  299,    0,  299,
2393       759,  299,    0,    0,  299,  299,    0,  299,  299,  426,
2394 
2395         0,  426,  426,  426,  426,  426,  426,    0,  299,    0,
2396       299,    0,    0,    0,  759,    0,  299,  299,  299,  300,
2397         0,  300,    0,  300,    0,  300,    0,    0,  300,  300,
2398         0,  300,  300,  434,  434,  434,  434,  434,  434,    0,
2399         0,    0,  300,    0,  300,    0,    0,    0,    0,    0,
2400       300,  300,  300,  301,    0,  301,    0,  301,    0,  301,
2401         0,    0,  301,  301,    0,  301,  301,  301,  301,  301,
2402       301,  301,  301,  301,    0,    0,  301,    0,  301,  301,
2403       301,    0,    0,    0,  301,  301,  301,  301,  301,  301,
2404       301,  301,  301,  301,  301,  301,  301,  301,  301,  301,
2405 
2406       301,  301,  304,    0,  304,  444,  444,  444,  444,  444,
2407       444,    0,    0,    0,  304,    0,  304,  304,  304,  304,
2408       304,  304,  445,  445,  445,  445,  445,  445,  446,  446,
2409       446,  446,  446,  446,    0,    0,    0,    0,  304,  305,
2410         0,  305,  464,  464,  464,  464,  464,  464,  305,    0,
2411       305,  305,    0,  305,  305,  305,  305,  305,  305,  309,
2412         0,  309,    0,  309,    0,  309,    0,    0,  309,  309,
2413         0,  309,  309,  309,  309,  309,  309,  309,  309,  309,
2414       309,    0,  309,    0,  309,  309,  309,    0,    0,    0,
2415       309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
2416 
2417       309,  309,  309,  309,  309,  309,  309,  309,  310,    0,
2418       310,  310,  310,  310,  310,  310,  310,  311,  311,  311,
2419       311,  311,  311,  311,    0,    0,  447,    0,  311,  447,
2420       447,  447,  447,  447,  447,    0,  311,  311,  311,  311,
2421       311,  319,    0,  319,    0,  319,    0,  319,    0,    0,
2422       319,  319,    0,  319,  319,  319,  449,  449,  449,  449,
2423       449,  449,  449,    0,  319,    0,  319,    0,    0,    0,
2424         0,    0,  319,  319,  319,  321,    0,  321,    0,  321,
2425         0,  321,    0,    0,  321,  321,    0,  321,  321,  321,
2426       451,  451,  451,  451,  451,  451,  451,    0,  321,    0,
2427 
2428       321,    0,    0,    0,    0,    0,  321,  321,  321,  322,
2429         0,  322,    0,  322,    0,  322,    0,    0,  322,  322,
2430         0,  322,  322,  322,  469,  469,  469,  469,  469,  469,
2431         0,    0,  322,    0,  322,    0,    0,    0,    0,    0,
2432       322,  322,  322,  323,    0,  323,    0,  323,    0,  323,
2433         0,    0,  323,  323,    0,  323,  323,  323,  323,  323,
2434       323,  323,  323,  323,    0,    0,  323,    0,  323,  323,
2435       323,    0,    0,    0,  323,  323,  323,  323,  323,  323,
2436       323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
2437       323,  323,  324,    0,  324,    0,  324,    0,  324,    0,
2438 
2439         0,  324,  324,    0,  324,  324,  324,  470,    0,  470,
2440       470,  470,  470,  470,  470,  324,    0,  324,    0,    0,
2441         0,    0,    0,  324,  324,  324,  325,    0,  325,    0,
2442       325,    0,  325,    0,    0,  325,  325,    0,  325,  325,
2443       325,  325,  325,  325,  325,  325,  325,    0,    0,  325,
2444         0,  325,  325,  325,    0,    0,    0,  325,  325,  325,
2445       325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
2446       325,  325,  325,  325,  325,  338,    0,  338,    0,  338,
2447         0,  338,    0,    0,  338,  338,    0,  338,  338,  338,
2448       338,  338,  338,  338,  338,  338,    0,    0,  338,    0,
2449 
2450       338,  338,  338,    0,    0,    0,  338,  338,  338,  338,
2451       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
2452       338,  338,  338,  338,  340,    0,  340,    0,  340,    0,
2453       340,    0,    0,  340,  340,    0,  340,  340,  340,  340,
2454       340,  340,  340,  340,  340,    0,    0,  340,    0,  340,
2455       340,  340,    0,    0,    0,  340,  340,  340,  340,  340,
2456       340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
2457       340,  340,  340,  341,  341,  341,  341,  341,  341,    0,
2458         0,    0,    0,    0,  341,  471,  471,  471,  471,  471,
2459       471,    0,  341,  341,  341,  341,  341,  342,    0,  342,
2460 
2461         0,  342,    0,  342,    0,    0,  342,  342,    0,  342,
2462       342,  342,  342,  342,  342,  342,  342,  342,    0,    0,
2463       342,    0,  342,  342,  342,    0,    0,    0,  342,  342,
2464       342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
2465       342,  342,  342,  342,  342,  342,  343,  472,    0,  472,
2466       472,  472,  472,  472,  472,  481,  481,  481,  481,  481,
2467       481,    0,    0,    0,    0,    0,  343,    0,  343,  343,
2468       343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
2469       343,  343,  343,  345,    0,  345,    0,  345,    0,  345,
2470         0,    0,  345,  345,    0,  345,  345,  345,  345,  345,
2471 
2472       345,  345,  345,  345,    0,    0,  345,    0,  345,  345,
2473       345,    0,    0,    0,  345,  345,  345,  345,  345,  345,
2474       345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
2475       345,  345,  352,  485,  352,  485,  485,  485,  485,  485,
2476       485,    0,    0,    0,    0,    0,  352,  352,  352,  352,
2477       352,  352,  486,    0,  486,  486,  486,  486,  486,  486,
2478       505,  505,  505,  505,  505,  505,    0,    0,  352,  353,
2479         0,  353,  506,  506,  506,  506,  506,  506,  353,    0,
2480       353,    0,    0,  353,  353,  353,  353,  353,  353,  355,
2481         0,  355,    0,  355,    0,  355,    0,    0,  355,  355,
2482 
2483         0,  355,  355,  508,  508,  508,  508,  508,  508,  508,
2484         0,    0,  355,    0,  355,    0,    0,    0,    0,    0,
2485       355,  355,  355,  356,    0,  356,    0,  356,    0,  356,
2486         0,    0,  356,  356,    0,  356,  356,  510,  510,  510,
2487       510,  510,  510,  510,    0,    0,  356,    0,  356,    0,
2488         0,    0,    0,    0,  356,  356,  356,  357,    0,  357,
2489         0,  357,    0,  357,    0,    0,  357,  357,    0,  357,
2490       357,  527,  527,  527,  527,  527,  527,  527,    0,    0,
2491       357,    0,  357,    0,    0,    0,    0,    0,  357,  357,
2492       357,  358,    0,  358,    0,  358,    0,  358,    0,    0,
2493 
2494       358,  358,    0,  358,  358,  358,  358,  358,  358,  358,
2495       358,  358,    0,    0,  358,    0,  358,  358,  358,    0,
2496         0,    0,  358,  358,  358,  358,  358,  358,  358,  358,
2497       358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
2498       363,  534,  363,  534,  534,  534,  534,  534,  534,    0,
2499         0,    0,  363,    0,  363,  363,  363,  363,  363,  363,
2500       536,  536,  536,  536,  536,  536,  550,    0,  550,  550,
2501       550,  550,  550,  550,    0,    0,  363,  364,    0,  364,
2502       551,  551,  551,  551,  551,  551,  364,    0,  364,  364,
2503         0,  364,  364,  364,  364,  364,  364,  367,    0,  367,
2504 
2505         0,  367,    0,  367,    0,    0,  367,  367,    0,  367,
2506       367,  367,  367,  367,  367,  367,  367,  367,  367,    0,
2507       367,    0,  367,  367,  367,    0,    0,    0,  367,  367,
2508       367,  367,  367,  367,  367,  367,  367,  367,  367,  367,
2509       367,  367,  367,  367,  367,  367,  369,    0,  369,  369,
2510       369,  369,  369,  369,  369,  377,    0,  377,    0,  377,
2511         0,  377,    0,    0,  377,  377,    0,  377,  377,  377,
2512       569,  569,  569,  569,  569,  569,    0,    0,  377,    0,
2513       377,    0,    0,    0,    0,    0,  377,  377,  377,  378,
2514         0,  378,    0,  378,    0,  378,    0,    0,  378,  378,
2515 
2516         0,  378,  378,  378,  579,  579,  579,  579,  579,  579,
2517         0,    0,  378,    0,  378,    0,    0,    0,    0,    0,
2518       378,  378,  378,  379,    0,  379,    0,  379,    0,  379,
2519         0,    0,  379,  379,    0,  379,  379,  379,  379,  379,
2520       379,  379,  379,  379,    0,    0,  379,    0,  379,  379,
2521       379,    0,    0,    0,  379,  379,  379,  379,  379,  379,
2522       379,  379,  379,  379,  379,  379,  379,  379,  379,  379,
2523       379,  379,  380,    0,  380,    0,  380,    0,  380,    0,
2524         0,  380,  380,    0,  380,  380,  380,  584,  584,  584,
2525       584,  584,  584,    0,    0,  380,    0,  380,    0,    0,
2526 
2527         0,    0,    0,  380,  380,  380,  381,    0,  381,    0,
2528       381,    0,  381,    0,    0,  381,  381,    0,  381,  381,
2529       381,  381,  381,  381,  381,  381,  381,    0,    0,  381,
2530         0,  381,  381,  381,    0,    0,    0,  381,  381,  381,
2531       381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
2532       381,  381,  381,  381,  381,  394,    0,  394,    0,  394,
2533         0,  394,    0,    0,  394,  394,    0,  394,  394,  394,
2534       394,  394,  394,  394,  394,  394,    0,    0,  394,    0,
2535       394,  394,  394,    0,    0,    0,  394,  394,  394,  394,
2536       394,  394,  394,  394,  394,  394,  394,  394,  394,  394,
2537 
2538       394,  394,  394,  394,  396,  396,  590,  590,  590,  590,
2539       590,  590,    0,  396,  593,  593,  593,  593,  593,  593,
2540         0,    0,    0,    0,  396,    0,  396,  396,  396,  396,
2541       396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
2542       396,  399,  399,  399,  399,  399,  399,    0,    0,    0,
2543         0,    0,  399,  605,  605,  605,  605,  605,  605,    0,
2544       399,  399,  399,  399,  399,  400,  400,  400,  400,  400,
2545       400,    0,    0,    0,    0,    0,  400,  603,  603,  603,
2546       603,  603,  603,    0,  400,  400,  400,  400,  400,  402,
2547       402,    0,    0,  603,    0,    0,    0,    0,  402,  606,
2548 
2549       606,  606,  606,  606,  606,  606,    0,    0,    0,  402,
2550         0,  402,  402,  402,  402,  402,  402,  402,  402,  402,
2551       402,  402,  402,  402,  402,  402,  408,  408,  613,  613,
2552       613,  613,  613,  613,  607,  408,  607,  607,  607,  607,
2553       607,  607,    0,    0,    0,    0,  408,    0,  408,  408,
2554       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
2555       408,  408,  408,  416,  608,  416,  608,  608,  608,  608,
2556       608,  608,    0,    0,    0,    0,    0,  416,  416,  416,
2557       416,  416,  416,  609,    0,  609,  609,  609,  609,  609,
2558       609,  639,  639,  639,  639,  639,  639,  639,    0,  416,
2559 
2560       417,  667,  417,  667,  667,  667,  667,  667,  667,  417,
2561         0,  417,    0,    0,  417,  417,  417,  417,  417,  417,
2562       419,    0,  419,    0,  419,    0,  419,    0,    0,  419,
2563       419,    0,  419,  419,  644,  644,  644,  644,  644,  644,
2564       644,    0,    0,  419,    0,  419,    0,    0,    0,    0,
2565         0,  419,  419,  419,  420,    0,  420,    0,  420,    0,
2566       420,    0,    0,  420,  420,    0,  420,  420,  648,  648,
2567       648,  648,  648,  648,  648,    0,    0,  420,    0,  420,
2568         0,    0,    0,    0,    0,  420,  420,  420,  421,    0,
2569       421,    0,  421,    0,  421,    0,    0,  421,  421,    0,
2570 
2571       421,  421,  668,  668,  668,  668,  668,  668,    0,    0,
2572         0,  421,    0,  421,    0,    0,    0,    0,    0,  421,
2573       421,  421,  422,    0,  422,    0,  422,    0,  422,    0,
2574         0,  422,  422,    0,  422,  422,  422,  422,  422,  422,
2575       422,  422,  422,    0,    0,  422,    0,  422,  422,  422,
2576         0,    0,    0,  422,  422,  422,  422,  422,  422,  422,
2577       422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
2578       422,  425,  425,  425,  425,  425,  425,  425,  425,  428,
2579         0,  428,    0,  705,  705,  705,  705,  705,  705,    0,
2580         0,  428,    0,  428,  428,  428,  428,  428,  428,  705,
2581 
2582       706,    0,    0,  706,  706,  706,  706,  706,  706,  707,
2583       707,  707,  707,  707,  707,  428,  429,  709,  429,  709,
2584       709,  709,  709,  709,  709,  429,    0,  429,  429,    0,
2585       429,  429,  429,  429,  429,  429,  432,    0,  432,    0,
2586       432,    0,  432,    0,    0,  432,  432,    0,  432,  432,
2587       432,  432,  432,  432,  432,  432,  432,  432,    0,  432,
2588         0,  432,  432,  432,    0,    0,    0,  432,  432,  432,
2589       432,  432,  432,  432,  432,  432,  432,  432,  432,  432,
2590       432,  432,  432,  432,  432,  433,    0,  433,  433,  433,
2591       433,  433,  433,  433,  439,    0,  439,    0,  439,    0,
2592 
2593       439,    0,    0,  439,  439,    0,  439,  439,  439,  708,
2594       708,  708,  708,  708,  708,  708,    0,  439,    0,  439,
2595         0,    0,    0,    0,    0,  439,  439,  439,  440,    0,
2596       440,    0,  440,    0,  440,    0,    0,  440,  440,    0,
2597       440,  440,  440,  710,    0,  710,  710,  710,  710,  710,
2598       710,  440,    0,  440,    0,    0,    0,    0,    0,  440,
2599       440,  440,  441,    0,  441,    0,  441,    0,  441,    0,
2600         0,  441,  441,    0,  441,  441,  441,  441,  441,  441,
2601       441,  441,  441,    0,    0,  441,    0,  441,  441,  441,
2602         0,    0,    0,  441,  441,  441,  441,  441,  441,  441,
2603 
2604       441,  441,  441,  441,  441,  441,  441,  441,  441,  441,
2605       441,  442,    0,  442,    0,  442,    0,  442,    0,    0,
2606       442,  442,    0,  442,  442,  442,  711,    0,  711,  711,
2607       711,  711,  711,  711,  442,    0,  442,    0,    0,    0,
2608         0,    0,  442,  442,  442,  443,    0,  443,    0,  443,
2609         0,  443,    0,    0,  443,  443,    0,  443,  443,  443,
2610       443,  443,  443,  443,  443,  443,    0,    0,  443,    0,
2611       443,  443,  443,    0,    0,    0,  443,  443,  443,  443,
2612       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
2613       443,  443,  443,  443,  457,  457,  715,  715,  715,  715,
2614 
2615       715,  715,  457,  457,  457,  457,  457,  457,  457,  457,
2616       457,  457,  457,  457,  457,  457,  457,  460,  460,  460,
2617       460,  460,  460,    0,    0,    0,    0,    0,  460,  742,
2618       742,  742,  742,  742,  742,    0,  460,  460,  460,  460,
2619       460,  461,  461,  461,  461,  461,  461,    0,    0,    0,
2620       743,    0,  461,  743,  743,  743,  743,  743,  743,    0,
2621       461,  461,  461,  461,  461,  474,  749,  474,    0,  749,
2622       749,  749,  749,  749,  749,    0,    0,    0,    0,  474,
2623       474,  474,  474,  474,  474,  753,    0,  753,  753,  753,
2624       753,  753,  753,  754,  754,  754,  754,  754,  754,    0,
2625 
2626         0,  474,  475,    0,  475,  758,  758,  758,  758,  758,
2627       758,  475,    0,  475,    0,    0,  475,  475,  475,  475,
2628       475,  475,  477,    0,  477,    0,  477,    0,  477,    0,
2629         0,  477,  477,    0,  477,  477,  771,  771,  771,  771,
2630       771,  771,  771,    0,    0,  477,    0,  477,    0,    0,
2631         0,    0,    0,  477,  477,  477,  478,    0,  478,    0,
2632       478,    0,  478,    0,    0,  478,  478,    0,  478,  478,
2633       786,    0,  786,  786,  786,  786,  786,  786,    0,  478,
2634         0,  478,    0,    0,    0,    0,    0,  478,  478,  478,
2635       479,    0,  479,    0,  479,    0,  479,    0,    0,  479,
2636 
2637       479,    0,  479,  479,  787,  787,  787,  787,  787,  787,
2638         0,    0,    0,  479,    0,  479,    0,    0,    0,    0,
2639         0,  479,  479,  479,  480,    0,  480,    0,  480,    0,
2640       480,    0,    0,  480,  480,    0,  480,  480,  480,  790,
2641       790,  790,  790,  790,  790,    0,    0,  480,    0,  480,
2642         0,    0,    0,    0,    0,  480,  480,  480,  482,    0,
2643       482,    0,  482,    0,  482,    0,    0,  482,  482,    0,
2644       482,  482,  482,  482,  482,  482,  482,  482,  482,    0,
2645         0,  482,    0,  482,  482,  482,    0,    0,    0,  482,
2646       482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
2647 
2648       482,  482,  482,  482,  482,  482,  482,  483,    0,  483,
2649         0,  483,    0,  483,    0,    0,  483,  483,    0,  483,
2650       483,  483,  798,  798,  798,  798,  798,  798,  798,    0,
2651       483,    0,  483,    0,    0,    0,    0,    0,  483,  483,
2652       483,  487,    0,  487,  799,  799,  799,  799,  799,  799,
2653         0,    0,    0,  487,    0,  487,  487,  487,  487,  487,
2654       487,  804,  804,  804,  804,  804,  804,  806,  806,  806,
2655       806,  806,  806,    0,    0,    0,    0,  487,  488,    0,
2656       488,  811,  811,  811,  811,  811,  811,  488,    0,  488,
2657         0,    0,  488,  488,  488,  488,  488,  488,  491,  491,
2658 
2659       491,  491,  491,    0,  491,    0,    0,  491,  491,    0,
2660       491,  491,  491,  491,  491,  491,  491,  491,  491,  491,
2661         0,  491,    0,  491,  491,  491,    0,    0,    0,  491,
2662       491,  491,  491,  491,  491,  491,  491,  491,  491,  491,
2663       491,  491,  491,  491,  491,  491,  491,  492,    0,  492,
2664       812,  812,  812,  812,  812,  812,    0,    0,    0,  492,
2665         0,  492,  492,  492,  492,  492,  492,  492,  499,    0,
2666       499,    0,  499,    0,  499,    0,    0,  499,  499,    0,
2667       499,  499,  499,  817,  817,  817,  817,  817,  817,    0,
2668         0,  499,    0,  499,    0,    0,    0,    0,    0,  499,
2669 
2670       499,  499,  500,    0,  500,    0,  500,    0,  500,    0,
2671         0,  500,  500,    0,  500,  500,  500,  821,  821,  821,
2672       821,  821,  821,    0,    0,  500,    0,  500,    0,    0,
2673         0,    0,    0,  500,  500,  500,  501,  822,  822,  822,
2674       822,  822,  822,  824,  824,  824,  824,  824,  824,  501,
2675       501,  825,  825,  825,  825,  825,  825,  501,  501,  501,
2676       501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
2677       501,  501,  502,    0,  502,    0,  502,    0,  502,    0,
2678         0,  502,  502,    0,  502,  502,  502,    0,    0,    0,
2679         0,    0,    0,    0,    0,  502,    0,  502,    0,    0,
2680 
2681         0,    0,    0,  502,  502,  502,  503,    0,  503,    0,
2682       503,    0,  503,    0,    0,  503,  503,    0,  503,  503,
2683       503,  503,  503,  503,  503,  503,  503,    0,    0,  503,
2684         0,  503,  503,  503,    0,    0,    0,  503,  503,  503,
2685       503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
2686       503,  503,  503,  503,  503,  519,  519,    0,    0,    0,
2687         0,    0,    0,  519,  519,  519,  519,  519,  519,  519,
2688       519,  519,  519,  519,  519,  519,  519,  519,  523,  523,
2689       523,  523,  523,  523,    0,    0,    0,    0,    0,  523,
2690         0,    0,    0,    0,    0,    0,    0,  523,  523,  523,
2691 
2692       523,  523,  524,  524,  524,  524,  524,  524,    0,    0,
2693         0,    0,    0,  524,    0,    0,    0,    0,    0,    0,
2694         0,  524,  524,  524,  524,  524,  538,    0,  538,    0,
2695         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2696       538,  538,  538,  538,  538,  538,    0,    0,    0,    0,
2697         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2698         0,    0,  538,  539,    0,  539,    0,    0,    0,    0,
2699         0,    0,  539,    0,  539,    0,    0,  539,  539,  539,
2700       539,  539,  539,  541,    0,  541,    0,  541,    0,  541,
2701         0,    0,  541,  541,    0,  541,  541,    0,    0,    0,
2702 
2703         0,    0,    0,    0,    0,    0,  541,    0,  541,    0,
2704         0,    0,    0,    0,  541,  541,  541,  542,    0,  542,
2705         0,  542,    0,  542,    0,    0,  542,  542,    0,  542,
2706       542,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2707       542,    0,  542,    0,    0,    0,    0,    0,  542,  542,
2708       542,  543,    0,  543,    0,  543,    0,  543,    0,    0,
2709       543,  543,    0,  543,  543,    0,    0,    0,    0,    0,
2710         0,    0,    0,    0,  543,    0,  543,    0,    0,    0,
2711         0,    0,  543,  543,  543,  544,    0,  544,    0,  544,
2712         0,  544,    0,    0,  544,  544,    0,  544,  544,  544,
2713 
2714         0,    0,    0,    0,    0,    0,    0,    0,  544,    0,
2715       544,    0,    0,    0,    0,    0,  544,  544,  544,  545,
2716         0,  545,  545,  545,  545,  545,  545,    0,    0,    0,
2717         0,    0,    0,    0,    0,    0,    0,  545,  546,    0,
2718       546,    0,  546,    0,  546,    0,    0,  546,  546,    0,
2719       546,  546,  546,    0,    0,    0,    0,    0,    0,    0,
2720         0,  546,    0,  546,    0,    0,    0,    0,    0,  546,
2721       546,  546,  548,  548,  548,  548,  548,  548,  548,  548,
2722       552,    0,  552,    0,    0,    0,    0,    0,    0,    0,
2723         0,    0,  552,    0,  552,  552,  552,  552,  552,  552,
2724 
2725         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2726         0,    0,    0,    0,    0,    0,  552,  553,    0,  553,
2727         0,    0,    0,    0,    0,    0,  553,    0,  553,  553,
2728         0,  553,  553,  553,  553,  553,  553,  557,    0,  557,
2729         0,  557,    0,  557,    0,    0,  557,  557,    0,  557,
2730       557,  557,  557,  557,  557,  557,  557,  557,  557,    0,
2731       557,    0,  557,  557,  557,    0,    0,    0,  557,  557,
2732       557,  557,  557,  557,  557,  557,  557,  557,  557,  557,
2733       557,  557,  557,  557,  557,  557,  558,    0,  558,  558,
2734       558,  558,  558,  558,  558,  563,    0,  563,    0,  563,
2735 
2736         0,  563,    0,    0,  563,  563,    0,  563,  563,  563,
2737         0,    0,    0,    0,    0,    0,    0,    0,  563,    0,
2738       563,    0,    0,    0,    0,    0,  563,  563,  563,  564,
2739         0,  564,    0,  564,    0,  564,    0,    0,  564,  564,
2740         0,  564,  564,  564,    0,    0,    0,    0,    0,    0,
2741         0,    0,  564,    0,  564,    0,    0,    0,    0,    0,
2742       564,  564,  564,  565,  565,    0,    0,    0,    0,    0,
2743         0,  565,  565,  565,  565,  565,  565,  565,  565,  565,
2744       565,  565,  565,  565,  565,  565,  566,    0,  566,    0,
2745       566,    0,  566,    0,    0,  566,  566,    0,  566,  566,
2746 
2747       566,    0,    0,    0,    0,    0,    0,    0,    0,  566,
2748         0,  566,    0,    0,    0,    0,    0,  566,  566,  566,
2749       567,    0,  567,    0,  567,    0,  567,    0,    0,  567,
2750       567,    0,  567,  567,  567,  567,  567,  567,  567,  567,
2751       567,    0,    0,  567,    0,  567,  567,  567,    0,    0,
2752         0,  567,  567,  567,  567,  567,  567,  567,  567,  567,
2753       567,  567,  567,  567,  567,  567,  567,  567,  567,  573,
2754         0,  573,    0,  573,    0,  573,    0,    0,  573,  573,
2755         0,  573,  573,  573,  573,  573,  573,  573,  573,  573,
2756       573,    0,  573,    0,  573,  573,  573,    0,    0,    0,
2757 
2758       573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
2759       573,  573,  573,  573,  573,  573,  573,  573,  578,  578,
2760         0,    0,    0,    0,    0,    0,  578,  578,  578,  578,
2761       578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
2762       578,  582,  582,  582,  582,  582,  582,    0,    0,    0,
2763         0,    0,  582,    0,    0,    0,    0,    0,    0,    0,
2764       582,  582,  582,  582,  582,  583,  583,  583,  583,  583,
2765       583,    0,    0,    0,    0,    0,  583,    0,    0,    0,
2766         0,    0,    0,    0,  583,  583,  583,  583,  583,  595,
2767         0,  595,    0,    0,    0,    0,    0,    0,    0,    0,
2768 
2769         0,    0,    0,  595,  595,  595,  595,  595,  595,    0,
2770         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2771         0,    0,    0,    0,    0,  595,  596,    0,  596,    0,
2772         0,    0,    0,    0,    0,  596,    0,  596,    0,    0,
2773       596,  596,  596,  596,  596,  596,  598,    0,  598,    0,
2774       598,    0,  598,    0,    0,  598,  598,    0,  598,  598,
2775         0,    0,    0,    0,    0,    0,    0,    0,    0,  598,
2776         0,  598,    0,    0,    0,    0,    0,  598,  598,  598,
2777       599,    0,  599,    0,  599,    0,  599,    0,    0,  599,
2778       599,    0,  599,  599,    0,    0,    0,    0,    0,    0,
2779 
2780         0,    0,    0,  599,    0,  599,    0,    0,    0,    0,
2781         0,  599,  599,  599,  600,    0,  600,    0,  600,    0,
2782       600,    0,    0,  600,  600,    0,  600,  600,    0,    0,
2783         0,    0,    0,    0,    0,    0,    0,  600,    0,  600,
2784         0,    0,    0,    0,    0,  600,  600,  600,  601,    0,
2785       601,    0,  601,    0,  601,    0,    0,  601,  601,    0,
2786       601,  601,  601,    0,    0,    0,    0,    0,    0,    0,
2787         0,  601,    0,  601,    0,    0,    0,    0,    0,  601,
2788       601,  601,  602,    0,  602,    0,  602,    0,  602,    0,
2789         0,  602,  602,    0,  602,  602,  602,    0,    0,    0,
2790 
2791         0,    0,    0,    0,    0,  602,    0,  602,    0,    0,
2792         0,    0,    0,  602,  602,  602,  604,    0,  604,  604,
2793         0,  604,  604,  604,  604,  604,  604,    0,    0,    0,
2794         0,  604,  610,    0,  610,    0,    0,    0,    0,    0,
2795         0,    0,    0,    0,  610,    0,  610,  610,  610,  610,
2796       610,  610,    0,    0,    0,    0,    0,    0,    0,    0,
2797         0,    0,    0,    0,    0,    0,    0,    0,  610,  611,
2798         0,  611,    0,    0,    0,    0,    0,    0,  611,    0,
2799       611,    0,    0,  611,  611,  611,  611,  611,  611,  615,
2800         0,  615,    0,  615,    0,  615,    0,    0,  615,  615,
2801 
2802         0,  615,  615,  615,  615,  615,  615,  615,  615,  615,
2803       615,    0,  615,    0,  615,  615,  615,    0,    0,    0,
2804       615,  615,  615,  615,  615,  615,  615,  615,  615,  615,
2805       615,  615,  615,  615,  615,  615,  615,  615,  616,    0,
2806       616,  616,  616,  616,  616,  616,  616,  623,    0,  623,
2807         0,  623,    0,  623,    0,    0,  623,  623,    0,  623,
2808       623,  623,    0,    0,    0,    0,    0,    0,    0,    0,
2809       623,    0,  623,    0,    0,    0,    0,    0,  623,  623,
2810       623,  624,    0,  624,    0,  624,    0,  624,    0,    0,
2811       624,  624,    0,  624,  624,  624,    0,    0,    0,    0,
2812 
2813         0,    0,    0,    0,  624,    0,  624,    0,    0,    0,
2814         0,    0,  624,  624,  624,  625,    0,    0,    0,    0,
2815         0,    0,    0,    0,    0,    0,    0,    0,  625,  625,
2816         0,    0,    0,    0,    0,    0,  625,  625,  625,  625,
2817       625,  625,  625,  625,  625,  625,  625,  625,  625,  625,
2818       625,  626,    0,  626,    0,  626,    0,  626,    0,    0,
2819       626,  626,    0,  626,  626,  626,    0,    0,    0,    0,
2820         0,    0,    0,    0,  626,    0,  626,    0,    0,    0,
2821         0,    0,  626,  626,  626,  627,    0,  627,    0,  627,
2822         0,  627,    0,    0,  627,  627,    0,  627,  627,  627,
2823 
2824       627,  627,  627,  627,  627,  627,    0,    0,  627,    0,
2825       627,  627,  627,    0,    0,    0,  627,  627,  627,  627,
2826       627,  627,  627,  627,  627,  627,  627,  627,  627,  627,
2827       627,  627,  627,  627,  630,    0,  630,    0,  630,    0,
2828       630,    0,    0,  630,  630,    0,  630,  630,  630,  630,
2829       630,  630,  630,  630,  630,  630,    0,  630,    0,  630,
2830       630,  630,    0,    0,    0,  630,  630,  630,  630,  630,
2831       630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
2832       630,  630,  630,  638,  638,  638,  638,  638,  638,    0,
2833         0,    0,    0,    0,  638,    0,    0,    0,    0,    0,
2834 
2835         0,    0,  638,  638,  638,  638,  638,  642,  642,  642,
2836       642,  642,  642,    0,    0,    0,    0,    0,  642,    0,
2837         0,    0,    0,    0,    0,    0,  642,  642,  642,  642,
2838       642,  643,  643,  643,  643,  643,  643,    0,    0,    0,
2839         0,    0,  643,    0,    0,    0,    0,    0,    0,    0,
2840       643,  643,  643,  643,  643,  653,    0,  653,    0,    0,
2841         0,    0,    0,    0,    0,    0,    0,    0,    0,  653,
2842       653,  653,  653,  653,  653,    0,    0,    0,    0,    0,
2843         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2844         0,  653,  654,    0,  654,    0,    0,    0,    0,    0,
2845 
2846         0,  654,    0,  654,    0,    0,  654,  654,  654,  654,
2847       654,  654,  656,    0,  656,    0,  656,    0,  656,    0,
2848         0,  656,  656,    0,  656,  656,    0,    0,    0,    0,
2849         0,    0,    0,    0,    0,  656,    0,  656,    0,    0,
2850         0,    0,    0,  656,  656,  656,  657,    0,  657,    0,
2851       657,    0,  657,    0,    0,  657,  657,    0,  657,  657,
2852         0,    0,    0,    0,    0,    0,    0,    0,    0,  657,
2853         0,  657,    0,    0,    0,    0,    0,  657,  657,  657,
2854       658,    0,  658,    0,  658,    0,  658,    0,    0,  658,
2855       658,    0,  658,  658,    0,    0,    0,    0,    0,    0,
2856 
2857         0,    0,    0,  658,    0,  658,    0,    0,    0,    0,
2858         0,  658,  658,  658,  659,    0,  659,    0,  659,    0,
2859       659,    0,    0,  659,  659,    0,  659,  659,  659,    0,
2860         0,    0,    0,    0,    0,    0,    0,  659,    0,  659,
2861         0,    0,    0,    0,    0,  659,  659,  659,  660,    0,
2862       660,    0,  660,    0,  660,    0,    0,  660,  660,    0,
2863       660,  660,  660,    0,    0,    0,    0,    0,    0,    0,
2864         0,  660,    0,  660,    0,    0,    0,    0,    0,  660,
2865       660,  660,  661,    0,  661,  661,  661,  661,  661,  661,
2866         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2867 
2868       661,  663,  663,    0,  663,  663,  663,  663,  663,  663,
2869         0,    0,    0,    0,  663,  665,  665,  665,  665,  665,
2870       665,  665,  665,  669,    0,  669,    0,    0,    0,    0,
2871         0,    0,    0,    0,    0,  669,    0,  669,  669,  669,
2872       669,  669,  669,    0,    0,    0,    0,    0,    0,    0,
2873         0,    0,    0,    0,    0,    0,    0,    0,    0,  669,
2874       670,    0,  670,    0,    0,    0,    0,    0,    0,  670,
2875         0,  670,  670,    0,  670,  670,  670,  670,  670,  670,
2876       674,    0,  674,    0,  674,    0,  674,    0,    0,  674,
2877       674,    0,  674,  674,  674,  674,  674,  674,  674,  674,
2878 
2879       674,  674,    0,  674,    0,  674,  674,  674,    0,    0,
2880         0,  674,  674,  674,  674,  674,  674,  674,  674,  674,
2881       674,  674,  674,  674,  674,  674,  674,  674,  674,  675,
2882         0,  675,  675,  675,  675,  675,  675,  675,  680,    0,
2883       680,    0,  680,    0,  680,    0,    0,  680,  680,    0,
2884       680,  680,  680,    0,    0,    0,    0,    0,    0,    0,
2885         0,  680,    0,  680,    0,    0,    0,    0,    0,  680,
2886       680,  680,  681,    0,  681,    0,  681,    0,  681,    0,
2887         0,  681,  681,    0,  681,  681,  681,    0,    0,    0,
2888         0,    0,    0,    0,    0,  681,    0,  681,    0,    0,
2889 
2890         0,    0,    0,  681,  681,  681,  682,  682,    0,    0,
2891         0,    0,    0,    0,  682,  682,  682,  682,  682,  682,
2892       682,  682,  682,  682,  682,  682,  682,  682,  682,  683,
2893         0,  683,    0,  683,    0,  683,    0,    0,  683,  683,
2894         0,  683,  683,  683,    0,    0,    0,    0,    0,    0,
2895         0,    0,  683,    0,  683,    0,    0,    0,    0,    0,
2896       683,  683,  683,  684,    0,  684,    0,  684,    0,  684,
2897         0,    0,  684,  684,    0,  684,  684,  684,  684,  684,
2898       684,  684,  684,  684,    0,    0,  684,    0,  684,  684,
2899       684,    0,    0,    0,  684,  684,  684,  684,  684,  684,
2900 
2901       684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
2902       684,  684,  686,    0,  686,    0,  686,    0,  686,    0,
2903         0,  686,  686,    0,  686,  686,  686,  686,  686,  686,
2904       686,  686,  686,  686,    0,  686,    0,  686,  686,  686,
2905         0,    0,    0,  686,  686,  686,  686,  686,  686,  686,
2906       686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
2907       686,  689,  689,  689,  689,  689,  689,    0,    0,    0,
2908         0,    0,  689,    0,    0,    0,    0,    0,    0,    0,
2909       689,  689,  689,  689,  689,  690,  690,  690,  690,  690,
2910       690,    0,    0,    0,    0,    0,  690,    0,    0,    0,
2911 
2912         0,    0,    0,    0,  690,  690,  690,  690,  690,  697,
2913         0,  697,    0,    0,    0,    0,    0,    0,    0,    0,
2914         0,    0,    0,  697,  697,  697,  697,  697,  697,    0,
2915         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2916         0,    0,    0,    0,    0,  697,  698,    0,  698,    0,
2917         0,    0,    0,    0,    0,  698,    0,  698,    0,    0,
2918       698,  698,  698,  698,  698,  698,  700,    0,  700,    0,
2919       700,    0,  700,    0,    0,  700,  700,    0,  700,  700,
2920         0,    0,    0,    0,    0,    0,    0,    0,    0,  700,
2921         0,  700,    0,    0,    0,    0,    0,  700,  700,  700,
2922 
2923       701,    0,  701,    0,  701,    0,  701,    0,    0,  701,
2924       701,    0,  701,  701,    0,    0,    0,    0,    0,    0,
2925         0,    0,    0,  701,    0,  701,    0,    0,    0,    0,
2926         0,  701,  701,  701,  702,    0,  702,    0,  702,    0,
2927       702,    0,    0,  702,  702,    0,  702,  702,    0,    0,
2928         0,    0,    0,    0,    0,    0,    0,  702,    0,  702,
2929         0,    0,    0,    0,    0,  702,  702,  702,  703,    0,
2930       703,    0,  703,    0,  703,    0,    0,  703,  703,    0,
2931       703,  703,  703,    0,    0,    0,    0,    0,    0,    0,
2932         0,  703,    0,  703,    0,    0,    0,    0,    0,  703,
2933 
2934       703,  703,  704,    0,  704,    0,  704,    0,  704,    0,
2935         0,  704,  704,    0,  704,  704,  704,    0,    0,    0,
2936         0,    0,    0,    0,    0,  704,    0,  704,    0,    0,
2937         0,    0,    0,  704,  704,  704,  712,    0,  712,    0,
2938         0,    0,    0,    0,    0,    0,    0,    0,  712,    0,
2939       712,  712,  712,  712,  712,  712,    0,    0,    0,    0,
2940         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2941         0,    0,  712,  713,    0,  713,    0,    0,    0,    0,
2942         0,    0,  713,    0,  713,    0,    0,  713,  713,  713,
2943       713,  713,  713,  717,    0,  717,    0,  717,    0,  717,
2944 
2945         0,    0,  717,  717,    0,  717,  717,  717,  717,  717,
2946       717,  717,  717,  717,  717,    0,  717,    0,  717,  717,
2947       717,    0,    0,    0,  717,  717,  717,  717,  717,  717,
2948       717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
2949       717,  717,  718,    0,  718,  718,  718,  718,  718,  718,
2950       718,  725,    0,  725,    0,  725,    0,  725,    0,    0,
2951       725,  725,    0,  725,  725,  725,    0,    0,    0,    0,
2952         0,    0,    0,    0,  725,    0,  725,    0,    0,    0,
2953         0,    0,  725,  725,  725,  726,    0,  726,    0,  726,
2954         0,  726,    0,    0,  726,  726,    0,  726,  726,  726,
2955 
2956         0,    0,    0,    0,    0,    0,    0,    0,  726,    0,
2957       726,    0,    0,    0,    0,    0,  726,  726,  726,  727,
2958         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2959         0,    0,  727,  727,    0,    0,    0,    0,    0,    0,
2960       727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
2961       727,  727,  727,  727,  727,  728,    0,  728,    0,  728,
2962         0,  728,    0,    0,  728,  728,    0,  728,  728,  728,
2963         0,    0,    0,    0,    0,    0,    0,    0,  728,    0,
2964       728,    0,    0,    0,    0,    0,  728,  728,  728,  729,
2965         0,  729,    0,  729,    0,  729,    0,    0,  729,  729,
2966 
2967         0,  729,  729,  729,  729,  729,  729,  729,  729,  729,
2968         0,    0,  729,    0,  729,  729,  729,    0,    0,    0,
2969       729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
2970       729,  729,  729,  729,  729,  729,  729,  729,  730,    0,
2971       730,    0,  730,    0,  730,    0,    0,  730,  730,    0,
2972       730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
2973         0,  730,    0,  730,  730,  730,    0,    0,    0,  730,
2974       730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
2975       730,  730,  730,  730,  730,  730,  730,  733,  733,  733,
2976       733,  733,  733,    0,    0,    0,    0,    0,  733,    0,
2977 
2978         0,    0,    0,    0,    0,    0,  733,  733,  733,  733,
2979       733,  744,  744,    0,  744,  744,  744,  744,  744,  744,
2980       746,    0,  746,    0,  746,    0,  746,    0,    0,  746,
2981       746,    0,    0,  746,  746,    0,    0,    0,    0,    0,
2982         0,    0,    0,  746,    0,  746,    0,    0,    0,    0,
2983         0,  746,    0,  746,  747,    0,  747,    0,  747,    0,
2984       747,    0,    0,  747,  747,    0,    0,  747,  747,    0,
2985         0,    0,    0,    0,    0,    0,    0,  747,    0,  747,
2986         0,    0,    0,    0,    0,  747,    0,  747,  748,    0,
2987         0,  748,  748,  748,  748,  748,  748,    0,    0,    0,
2988 
2989         0,    0,    0,    0,    0,    0,    0,  748,  751,  751,
2990       751,  751,  751,  751,  751,  751,  755,    0,  755,    0,
2991         0,    0,    0,    0,    0,    0,    0,    0,  755,    0,
2992       755,  755,  755,  755,  755,  755,    0,    0,    0,    0,
2993         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2994         0,    0,  755,  756,    0,  756,    0,    0,    0,    0,
2995         0,    0,  756,    0,  756,  756,    0,  756,  756,  756,
2996       756,  756,  756,  760,    0,  760,    0,  760,    0,  760,
2997         0,    0,  760,  760,    0,  760,  760,  760,  760,  760,
2998       760,  760,  760,  760,  760,    0,  760,    0,  760,  760,
2999 
3000       760,    0,    0,    0,  760,  760,  760,  760,  760,  760,
3001       760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
3002       760,  760,  761,    0,  761,  761,  761,  761,  761,  761,
3003       761,  766,    0,  766,    0,  766,    0,  766,    0,    0,
3004       766,  766,    0,  766,  766,  766,    0,    0,    0,    0,
3005         0,    0,    0,    0,  766,    0,  766,    0,    0,    0,
3006         0,    0,  766,  766,  766,  767,    0,  767,    0,  767,
3007         0,  767,    0,    0,  767,  767,    0,  767,  767,  767,
3008         0,    0,    0,    0,    0,    0,    0,    0,  767,    0,
3009       767,    0,    0,    0,    0,    0,  767,  767,  767,  768,
3010 
3011       768,    0,    0,    0,    0,    0,    0,  768,  768,  768,
3012       768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
3013       768,  768,  828,  828,  828,  828,  828,  828,  828,  828,
3014       828,  828,  828,  828,  828,  828,  828,  828,  828,  829,
3015       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
3016       829,  829,  829,  829,  829,  829,  830,  830,  830,  830,
3017       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
3018       830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
3019       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
3020       832,  832,  832,  832,  832,  832,  832,  832,  832,  832,
3021 
3022       832,  832,  832,  832,  832,  832,  832,  833,  833,  833,
3023       833,  833,  833,  833,  833,  833,  833,  833,  833,  833,
3024       833,  833,  833,  833,  834,  834,    0,  834,  834,  834,
3025       834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
3026       834,  835,    0,    0,  835,  835,    0,  835,  835,  835,
3027       835,  836,  836,    0,  836,    0,  836,  836,  836,  836,
3028       836,  836,  836,  836,  836,  836,  836,  836,  837,  837,
3029       837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
3030       837,  837,  837,  837,  837,  838,  838,    0,  838,  838,
3031       838,  838,  838,  838,  838,  838,  838,  838,  838,  838,
3032 
3033       838,  838,  839,  839,    0,  839,  839,  839,  839,  839,
3034       839,  839,  839,  839,  839,  839,  839,  839,  839,  840,
3035       840,    0,  840,  840,  840,  840,  840,  840,  840,  840,
3036       840,  840,  840,  840,  840,  840,  841,    0,    0,    0,
3037       841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
3038       841,  841,  841,  842,  842,    0,  842,  842,  842,  842,
3039       842,  842,  842,  842,  842,  842,  842,  842,  842,  842,
3040       843,    0,  843,    0,    0,    0,  843,  843,  843,  843,
3041       843,    0,  843,  843,  843,  843,  843,  844,  844,    0,
3042         0,    0,  844,  844,  844,  844,  844,  844,  844,    0,
3043 
3044       844,  844,  844,  844,  845,  845,  845,  845,  845,  845,
3045       845,  845,  845,  845,  845,  845,  845,  845,  845,  845,
3046       845,  846,  846,  846,    0,    0,  846,  846,    0,  846,
3047       847,    0,  847,    0,    0,    0,  847,  847,  847,  847,
3048       847,    0,  847,  847,  847,  847,  847,  848,  848,    0,
3049       848,  848,  848,  848,  848,  848,  848,  848,  848,  848,
3050       848,  848,  848,  848,  849,    0,  849,    0,    0,    0,
3051       849,  849,    0,  849,  849,    0,  849,  849,  849,  849,
3052       849,  850,  850,  850,  850,  850,  850,  850,  850,  850,
3053       850,  850,  850,  850,  850,  850,  850,  850,  851,  851,
3054 
3055       851,    0,    0,  851,  851,    0,  851,  852,    0,  852,
3056         0,    0,    0,  852,  852,  852,  852,  852,    0,  852,
3057       852,  852,  852,  852,  853,    0,  853,    0,    0,    0,
3058       853,  853,  853,  853,  853,    0,  853,  853,  853,  853,
3059       853,  854,  854,    0,    0,  854,    0,    0,  854,  855,
3060         0,  855,    0,    0,    0,  855,  855,  855,  855,  855,
3061         0,  855,  855,  855,  855,  855,  856,  856,    0,  856,
3062       856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
3063       856,  856,  856,  857,  857,  857,    0,    0,  857,  857,
3064         0,  857,  858,    0,  858,    0,    0,    0,  858,  858,
3065 
3066       858,  858,  858,    0,  858,  858,  858,  858,  858,  859,
3067         0,  859,    0,    0,    0,  859,  859,  859,  859,  859,
3068         0,  859,  859,  859,  859,  859,  860,  860,  860,    0,
3069       860,    0,    0,  860,  861,    0,  861,    0,    0,    0,
3070       861,  861,  861,  861,  861,    0,  861,  861,  861,  861,
3071       861,  862,    0,  862,    0,    0,    0,  862,  862,    0,
3072       862,  862,    0,  862,  862,  862,  862,  862,  863,    0,
3073         0,  863,    0,    0,  863,  863,  863,  863,  864,  864,
3074       864,    0,    0,  864,  864,    0,  864,  865,    0,  865,
3075         0,    0,  865,  865,    0,    0,  865,  866,    0,  866,
3076 
3077         0,    0,    0,  866,  866,  866,  866,  866,    0,  866,
3078       866,  866,  866,  866,  867,    0,  867,    0,    0,    0,
3079       867,  867,  867,  867,  867,    0,  867,  867,  867,  867,
3080       867,  868,  868,    0,  868,    0,    0,  868,  869,  869,
3081       869,    0,  869,    0,    0,  869,  870,    0,    0,  870,
3082         0,    0,  870,  871,    0,  871,    0,    0,    0,  871,
3083       871,  871,  871,  871,    0,  871,  871,  871,  871,  871,
3084       872,    0,  872,    0,    0,    0,  872,  872,  872,  872,
3085       872,    0,  872,  872,  872,  872,  872,  873,    0,  873,
3086         0,    0,    0,  873,  873,  873,  873,  873,  873,  873,
3087 
3088       873,  873,  873,  873,  874,    0,  874,    0,    0,    0,
3089       874,  874,  874,  874,  874,    0,  874,  874,  874,  874,
3090       874,  875,    0,  875,    0,    0,    0,  875,  875,  875,
3091       875,  875,    0,  875,  875,  875,  875,  875,  876,  876,
3092         0,  876,    0,    0,  876,  876,  876,  876,  877,    0,
3093       877,    0,    0,    0,  877,  877,  877,  877,  877,    0,
3094       877,  877,  877,  877,  877,  878,  878,  878,    0,    0,
3095       878,  878,    0,  878,  879,    0,  879,    0,    0,    0,
3096       879,  879,  879,  879,  879,    0,  879,  879,  879,  879,
3097       879,  880,    0,  880,    0,    0,    0,  880,  880,  880,
3098 
3099       880,  880,    0,  880,  880,  880,  880,  880,  881,  881,
3100         0,  881,    0,    0,  881,  882,  882,  882,    0,  882,
3101         0,    0,  882,  883,  883,  883,    0,  883,    0,    0,
3102       883,  884,    0,  884,    0,    0,    0,  884,  884,  884,
3103       884,  884,    0,  884,  884,  884,  884,  884,  885,    0,
3104       885,    0,    0,    0,  885,  885,  885,  885,  885,    0,
3105       885,  885,  885,  885,  885,  886,    0,    0,  886,    0,
3106         0,  886,  886,  886,  886,  887,  887,  887,    0,    0,
3107       887,  887,    0,  887,  888,    0,  888,    0,    0,    0,
3108       888,  888,  888,  888,  888,    0,  888,  888,  888,  888,
3109 
3110       888,  889,    0,  889,    0,    0,    0,  889,  889,  889,
3111       889,  889,    0,  889,  889,  889,  889,  889,  890,  890,
3112         0,  890,    0,    0,  890,  891,  891,    0,  891,    0,
3113         0,  891,  892,  892,  892,    0,  892,    0,    0,  892,
3114       893,    0,    0,  893,    0,    0,  893,  894,    0,  894,
3115         0,    0,    0,  894,  894,  894,  894,  894,    0,  894,
3116       894,  894,  894,  894,  895,    0,  895,    0,    0,    0,
3117       895,  895,  895,  895,  895,    0,  895,  895,  895,  895,
3118       895,  896,  896,  896,    0,    0,  896,  896,    0,  896,
3119       897,    0,  897,    0,    0,    0,  897,  897,  897,  897,
3120 
3121       897,    0,  897,  897,  897,  897,  897,  898,    0,  898,
3122         0,    0,    0,  898,  898,  898,  898,  898,    0,  898,
3123       898,  898,  898,  898,  899,  899,    0,  899,    0,    0,
3124       899,  900,  900,    0,  900,    0,    0,  900,  901,  901,
3125       901,    0,  901,    0,    0,  901,  902,  902,  902,    0,
3126       902,    0,    0,  902,  903,    0,  903,    0,    0,    0,
3127       903,  903,  903,  903,  903,    0,  903,  903,  903,  903,
3128       903,  904,    0,  904,    0,    0,    0,  904,  904,  904,
3129       904,  904,    0,  904,  904,  904,  904,  904,  905,    0,
3130         0,  905,    0,    0,  905,  905,  905,  905,  906,    0,
3131 
3132         0,  906,    0,    0,  906,  906,  906,  906,  907,  907,
3133       907,    0,    0,  907,  907,    0,  907,  908,    0,  908,
3134         0,    0,    0,  908,  908,  908,  908,  908,    0,  908,
3135       908,  908,  908,  908,  909,    0,  909,    0,    0,    0,
3136       909,  909,  909,  909,  909,    0,  909,  909,  909,  909,
3137       909,  910,    0,  910,    0,    0,    0,  910,  910,  910,
3138       910,  910,    0,  910,  910,  910,  910,  910,  911,  911,
3139         0,  911,    0,    0,  911,  912,  912,    0,  912,    0,
3140         0,  912,  913,  913,  913,    0,  913,    0,    0,  913,
3141       914,    0,    0,  914,    0,    0,  914,  915,    0,  915,
3142 
3143         0,    0,    0,  915,  915,  915,  915,  915,    0,  915,
3144       915,  915,  915,  915,  916,    0,  916,    0,    0,    0,
3145       916,  916,  916,  916,  916,    0,  916,  916,  916,  916,
3146       916,  917,    0,    0,  917,    0,    0,  917,  917,  917,
3147       917,  918,    0,    0,  918,    0,    0,  918,  918,  918,
3148       918,  919,  919,  919,    0,    0,  919,  919,    0,  919,
3149       920,    0,  920,    0,    0,    0,  920,  920,  920,  920,
3150       920,    0,  920,  920,  920,  920,  920,  921,    0,  921,
3151         0,    0,    0,  921,  921,  921,  921,  921,    0,  921,
3152       921,  921,  921,  921,  922,    0,  922,    0,    0,    0,
3153 
3154       922,  922,  922,  922,  922,    0,  922,  922,  922,  922,
3155       922,  923,    0,  923,    0,    0,    0,    0,    0,    0,
3156       923,  924,  924,    0,  924,    0,    0,  924,  925,  925,
3157         0,  925,    0,    0,  925,  926,  926,  926,    0,  926,
3158         0,    0,  926,  927,  927,  927,    0,  927,    0,    0,
3159       927,  928,    0,  928,    0,    0,    0,  928,  928,  928,
3160       928,  928,    0,  928,  928,  928,  928,  928,  929,    0,
3161       929,    0,    0,    0,  929,  929,  929,  929,  929,    0,
3162       929,  929,  929,  929,  929,  930,    0,    0,  930,    0,
3163         0,  930,  930,  930,  930,  931,    0,    0,  931,    0,
3164 
3165         0,  931,  931,  931,  931,  932,    0,    0,  932,    0,
3166         0,  932,  932,  932,  932,  933,  933,  933,    0,    0,
3167       933,  933,    0,  933,  934,    0,  934,    0,    0,    0,
3168       934,  934,  934,  934,  934,    0,  934,  934,  934,  934,
3169       934,  935,    0,  935,    0,    0,    0,  935,  935,  935,
3170       935,  935,    0,  935,  935,  935,  935,  935,  936,    0,
3171       936,    0,    0,    0,  936,  936,  936,  936,  936,    0,
3172       936,  936,  936,  936,  936,  937,    0,  937,    0,    0,
3173         0,  937,  937,  937,  937,  937,    0,  937,  937,  937,
3174       937,  937,  938,  938,    0,  938,    0,    0,  938,  939,
3175 
3176       939,    0,  939,    0,    0,  939,  940,  940,  940,    0,
3177       940,    0,    0,  940,  941,    0,    0,  941,    0,    0,
3178       941,  942,    0,  942,    0,    0,    0,  942,  942,  942,
3179       942,  942,    0,  942,  942,  942,  942,  942,  943,    0,
3180       943,    0,    0,    0,  943,  943,  943,  943,  943,    0,
3181       943,  943,  943,  943,  943,  944,  944,  944,    0,    0,
3182       944,  944,    0,  944,  945,    0,  945,    0,    0,    0,
3183       945,  945,  945,  945,  945,    0,  945,  945,  945,  945,
3184       945,  946,    0,  946,    0,    0,    0,  946,  946,  946,
3185       946,  946,    0,  946,  946,  946,  946,  946,  947,    0,
3186 
3187       947,    0,    0,    0,  947,  947,  947,  947,  947,    0,
3188       947,  947,  947,  947,  947,  948,  948,    0,  948,    0,
3189         0,  948,  949,  949,    0,  949,    0,    0,  949,  950,
3190       950,  950,    0,  950,    0,    0,  950,  951,  951,  951,
3191         0,  951,    0,    0,  951,  952,    0,  952,    0,    0,
3192         0,  952,  952,  952,  952,  952,    0,  952,  952,  952,
3193       952,  952,  953,    0,  953,    0,    0,    0,  953,  953,
3194       953,  953,  953,    0,  953,  953,  953,  953,  953,  954,
3195       954,  954,    0,    0,  954,  954,    0,  954,  955,    0,
3196       955,    0,    0,    0,  955,  955,  955,  955,  955,    0,
3197 
3198       955,  955,  955,  955,  955,  956,    0,  956,    0,    0,
3199         0,  956,  956,  956,  956,  956,    0,  956,  956,  956,
3200       956,  956,  957,    0,  957,    0,    0,    0,  957,  957,
3201       957,  957,  957,    0,  957,  957,  957,  957,  957,  958,
3202       958,    0,  958,    0,    0,  958,  959,  959,    0,  959,
3203         0,    0,  959,  960,  960,  960,    0,  960,    0,    0,
3204       960,  961,    0,    0,  961,    0,    0,  961,  962,    0,
3205       962,    0,    0,    0,  962,  962,  962,  962,  962,    0,
3206       962,  962,  962,  962,  962,  963,    0,  963,    0,    0,
3207         0,  963,  963,  963,  963,  963,    0,  963,  963,  963,
3208 
3209       963,  963,  964,    0,    0,  964,    0,    0,  964,  964,
3210       964,  964,  965,    0,    0,  965,    0,    0,  965,  965,
3211       965,  965,  966,    0,    0,  966,    0,    0,  966,  966,
3212       966,  966,  967,    0,  967,    0,    0,    0,    0,    0,
3213         0,  967,    0,    0,    0,    0,    0,  967,  968,    0,
3214       968,    0,    0,  968,  968,    0,    0,  968,  969,    0,
3215       969,    0,    0,    0,  969,  969,  969,  969,  969,    0,
3216       969,  969,  969,  969,  969,  970,    0,  970,    0,    0,
3217         0,  970,  970,  970,  970,  970,    0,  970,  970,  970,
3218       970,  970,  971,  971,    0,  971,    0,    0,  971,  972,
3219 
3220       972,    0,  972,    0,    0,  972,  973,  973,  973,    0,
3221       973,    0,    0,  973,  974,  974,  974,    0,  974,    0,
3222         0,  974,  975,    0,  975,    0,    0,    0,  975,  975,
3223       975,  975,  975,    0,  975,  975,  975,  975,  975,  976,
3224       976,    0,  976,    0,    0,  976,  977,  977,    0,  977,
3225         0,    0,  977,  978,  978,  978,    0,  978,    0,    0,
3226       978,  979,    0,    0,  979,    0,    0,  979,  980,  980,
3227         0,  980,    0,    0,  980,  981,  981,    0,    0,  981,
3228         0,    0,  981,  982,  982,  982,    0,  982,    0,    0,
3229       982,  983,  983,    0,    0,  983,    0,    0,  983,  984,
3230 
3231       984,    0,    0,  984,    0,    0,  984,  985,  985,    0,
3232         0,  985,    0,    0,  985,  986,  986,    0,    0,  986,
3233         0,    0,  986,  987,  987,    0,    0,  987,    0,    0,
3234       987,  827,  827,  827,  827,  827,  827,  827,  827,  827,
3235       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
3236       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
3237       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
3238       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
3239       827
3240     } ;
3241 
3242 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
3243 static char *yy_full_match;
3244 static int yy_lp;
3245 #define REJECT \
3246 { \
3247 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
3248 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
3249 ++yy_lp; \
3250 goto find_rule; \
3251 }
3252 #define yymore() yymore_used_but_not_detected
     /* [<][>][^][v][top][bottom][index][help] */
3253 #define YY_MORE_ADJ 0
3254 #define YY_RESTORE_YY_MORE_OFFSET
3255 char *yytext;
3256 #line 1 "rpsl.l"
3257 #define INITIAL 0
3258 /*
3259 //  $Id: rpsl.l.cc,v 1.1.1.1 2000/03/10 16:32:24 engin Exp $
3260 //
3261 //  Copyright (c) 1994 by the University of Southern California
3262 //  All rights reserved.
3263 //
3264 //  Permission to use, copy, modify, and distribute this software and its
3265 //  documentation in source and binary forms for lawful non-commercial
3266 //  purposes and without fee is hereby granted, provided that the above
3267 //  copyright notice appear in all copies and that both the copyright
3268 //  notice and this permission notice appear in supporting documentation,
3269 //  and that any documentation, advertising materials, and other materials
3270 //  related to such distribution and use acknowledge that the software was
3271 //  developed by the University of Southern California, Information
3272 //  Sciences Institute. The name of the USC may not be used to endorse or
3273 //  promote products derived from this software without specific prior
3274 //  written permission.
3275 //
3276 //  THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY
3277 //  REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY
3278 //  PURPOSE.  THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
3279 //  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
3280 //  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
3281 //  TITLE, AND NON-INFRINGEMENT.
3282 //
3283 //  IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
3284 //  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT,
3285 //  OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE
3286 //  OR PERFORMANCE OF THIS SOFTWARE.
3287 //
3288 //  Questions concerning this software should be directed to
3289 //  ratoolset@isi.edu.
3290 //
3291 //  Author(s): Cengiz Alaettinoglu <cengiz@ISI.EDU>
3292 */
3293 /* definitions */
3294 #define STRING 1
3295 
3296 #define EXPECT_OPERATOR 2
3297 
3298 #define FREETEXT 3
3299 
3300 #define BLOBMODE 4
3301 
3302 #define GENERICMODE 5
3303 
3304 #define SKIP_OBJECT 6
3305 
3306 #define POLICYMODE 7
3307 
3308 /*%option nodefault /* */
3309 /*%option debug     /* */
3310 #line 83 "rpsl.l"
3311 #include "config.h"
3312 #include <cstring>
3313 #include <cstdarg>
3314 #include <cstdio>
3315 #include <time.h>
3316 
3317 #include "object.hh"
3318 #include "rpsl.y.hh"
3319 #include "schema.hh"
3320 
3321 static int errorLine = 0;
3322 static int errorColon = 0;
3323 #define errorNewLine { errorLine++;   errorColon = 0; }
3324 
3325 static int scan_position = 0;
3326 static bool start_of_object = true;
3327 static bool genericMode = true;
3328 static int oldStart = 0;
3329 
3330 Object *current_object;
3331 Attr   *current_attribute;
3332 YY_BUFFER_STATE rpsl_buffer = (YY_BUFFER_STATE) NULL;
3333 
3334 #define MAX_STR_CONST 1024
3335 #define LEXER_RETURN return
3336 #define YY_USER_ACTION { scan_position += yyleng; errorColon += yyleng; }
3337 #define YYLESS(n) {scan_position -= yyleng - n; errorColon -= yyleng - n; yyless(n); }
     /* [<][>][^][v][top][bottom][index][help] */
3338 #define yylval rpsllval
3339 #define yy_scan_object rpsl_scan_object
3340 #define yyschema schema
3341 
3342 extern void handle_error(char *, ...);
3343 extern void handle_warning(char *, ...);
3344 extern int validIPv6(const char *);
3345 extern int validIntForPhone(const char *);
3346 
3347 extern "C" {
3348 extern void atollRA(...);
3349 }
3350 #line 3351 "lex.rpsl.c"
3351 
3352 /* Macros after this point can all be overridden by user definitions in
3353  * section 1.
3354  */
3355 
3356 #ifndef YY_SKIP_YYWRAP
3357 #ifdef __cplusplus
3358 extern "C" int yywrap YY_PROTO(( void ));
3359 #else
3360 extern int yywrap YY_PROTO(( void ));
3361 #endif
3362 #endif
3363 
3364 #ifndef YY_NO_UNPUT
3365 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
3366 #endif
3367 
3368 #ifndef yytext_ptr
3369 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
3370 #endif
3371 
3372 #ifdef YY_NEED_STRLEN
3373 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
3374 #endif
3375 
3376 #ifndef YY_NO_INPUT
3377 #ifdef __cplusplus
3378 static int yyinput YY_PROTO(( void ));
3379 #else
3380 static int input YY_PROTO(( void ));
3381 #endif
3382 #endif
3383 
3384 #if YY_STACK_USED
3385 static int yy_start_stack_ptr = 0;
3386 static int yy_start_stack_depth = 0;
3387 static int *yy_start_stack = 0;
3388 #ifndef YY_NO_PUSH_STATE
3389 static void yy_push_state YY_PROTO(( int new_state ));
3390 #endif
3391 #ifndef YY_NO_POP_STATE
3392 static void yy_pop_state YY_PROTO(( void ));
3393 #endif
3394 #ifndef YY_NO_TOP_STATE
3395 static int yy_top_state YY_PROTO(( void ));
3396 #endif
3397 
3398 #else
3399 #define YY_NO_PUSH_STATE 1
3400 #define YY_NO_POP_STATE 1
3401 #define YY_NO_TOP_STATE 1
3402 #endif
3403 
3404 #ifdef YY_MALLOC_DECL
3405 YY_MALLOC_DECL
3406 #else
3407 #if __STDC__
3408 #ifndef __cplusplus
3409 #include <stdlib.h>
3410 #endif
3411 #else
3412 /* Just try to get by without declaring the routines.  This will fail
3413  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
3414  * or sizeof(void*) != sizeof(int).
3415  */
3416 #endif
3417 #endif
3418 
3419 /* Amount of stuff to slurp up with each read. */
3420 #ifndef YY_READ_BUF_SIZE
3421 #define YY_READ_BUF_SIZE 8192
3422 #endif
3423 
3424 /* Copy whatever the last rule matched to the standard output. */
3425 
3426 #ifndef ECHO
3427 /* This used to be an fputs(), but since the string might contain NUL's,
3428  * we now use fwrite().
3429  */
3430 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
3431 #endif
3432 
3433 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3434  * is returned in "result".
3435  */
3436 #ifndef YY_INPUT
3437 #define YY_INPUT(buf,result,max_size) \
     /* [<][>][^][v][top][bottom][index][help] */
3438         if ( yy_current_buffer->yy_is_interactive ) \
3439                 { \
3440                 int c = '*', n; \
3441                 for ( n = 0; n < max_size && \
3442                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3443                         buf[n] = (char) c; \
3444                 if ( c == '\n' ) \
3445                         buf[n++] = (char) c; \
3446                 if ( c == EOF && ferror( yyin ) ) \
3447                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
3448                 result = n; \
3449                 } \
3450         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
3451                   && ferror( yyin ) ) \
3452                 YY_FATAL_ERROR( "input in flex scanner failed" );
3453 #endif
3454 
3455 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3456  * we don't want an extra ';' after the "return" because that will cause
3457  * some compilers to complain about unreachable statements.
3458  */
3459 #ifndef yyterminate
3460 #define yyterminate() return YY_NULL
     /* [<][>][^][v][top][bottom][index][help] */
3461 #endif
3462 
3463 /* Number of entries by which start-condition stack grows. */
3464 #ifndef YY_START_STACK_INCR
3465 #define YY_START_STACK_INCR 25
3466 #endif
3467 
3468 /* Report a fatal error. */
3469 #ifndef YY_FATAL_ERROR
3470 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
     /* [<][>][^][v][top][bottom][index][help] */
3471 #endif
3472 
3473 /* Default declaration of generated scanner - a define so the user can
3474  * easily add parameters.
3475  */
3476 #ifndef YY_DECL
3477 #define YY_DECL int yylex YY_PROTO(( void ))
3478 #endif
3479 
3480 /* Code executed at the beginning of each rule, after yytext and yyleng
3481  * have been set up.
3482  */
3483 #ifndef YY_USER_ACTION
3484 #define YY_USER_ACTION
3485 #endif
3486 
3487 /* Code executed at the end of each rule. */
3488 #ifndef YY_BREAK
3489 #define YY_BREAK break;
3490 #endif
3491 
3492 #define YY_RULE_SETUP \
3493         if ( yyleng > 0 ) \
3494                 yy_current_buffer->yy_at_bol = \
3495                                 (yytext[yyleng - 1] == '\n'); \
3496         YY_USER_ACTION
3497 
3498 YY_DECL
3499         {
3500         register yy_state_type yy_current_state;
3501         register char *yy_cp, *yy_bp;
3502         register int yy_act;
3503 
3504 #line 124 "rpsl.l"
3505 
3506  
3507    /* this code is copied to beginning of yylex */
3508    static char string_buf[MAX_STR_CONST];
3509    char *string_buf_ptr;
3510 
3511 
3512 #line 3513 "lex.rpsl.c"
3513 
3514         if ( yy_init )
3515                 {
3516                 yy_init = 0;
3517 
3518 #ifdef YY_USER_INIT
3519                 YY_USER_INIT;
3520 #endif
3521 
3522                 if ( ! yy_start )
3523                         yy_start = 1;   /* first start state */
3524 
3525                 if ( ! yyin )
3526                         yyin = stdin;
3527 
3528                 if ( ! yyout )
3529                         yyout = stdout;
3530 
3531                 if ( ! yy_current_buffer )
3532                         yy_current_buffer =
3533                                 yy_create_buffer( yyin, YY_BUF_SIZE );
3534 
3535                 yy_load_buffer_state();
3536                 }
3537 
3538         while ( 1 )             /* loops until end-of-file is reached */
3539                 {
3540                 yy_cp = yy_c_buf_p;
3541 
3542                 /* Support of yytext. */
3543                 *yy_cp = yy_hold_char;
3544 
3545                 /* yy_bp points to the position in yy_ch_buf of the start of
3546                  * the current run.
3547                  */
3548                 yy_bp = yy_cp;
3549 
3550                 yy_current_state = yy_start;
3551                 yy_current_state += YY_AT_BOL();
3552                 yy_state_ptr = yy_state_buf;
3553                 *yy_state_ptr++ = yy_current_state;
3554 yy_match:
3555                 do
3556                         {
3557                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3558                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3559                                 {
3560                                 yy_current_state = (int) yy_def[yy_current_state];
3561                                 if ( yy_current_state >= 828 )
3562                                         yy_c = yy_meta[(unsigned int) yy_c];
3563                                 }
3564                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3565                         *yy_state_ptr++ = yy_current_state;
3566                         ++yy_cp;
3567                         }
3568                 while ( yy_base[yy_current_state] != 11232 );
3569 
3570 yy_find_action:
3571                 yy_current_state = *--yy_state_ptr;
3572                 yy_lp = yy_accept[yy_current_state];
3573 find_rule: /* we branch to this label when backing up */
3574                 for ( ; ; ) /* until we find what rule we matched */
3575                         {
3576                         if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
3577                                 {
3578                                 yy_act = yy_acclist[yy_lp];
3579                                         {
3580                                         yy_full_match = yy_cp;
3581                                         break;
3582                                         }
3583                                 }
3584                         --yy_cp;
3585                         yy_current_state = *--yy_state_ptr;
3586                         yy_lp = yy_accept[yy_current_state];
3587                         }
3588 
3589                 YY_DO_BEFORE_ACTION;
3590 
3591 
3592 do_action:      /* This label is used only to access EOF actions. */
3593 
3594 
3595                 switch ( yy_act )
3596         { /* beginning of action switch */
3597 case 1:
3598 YY_RULE_SETUP
3599 #line 131 "rpsl.l"
3600 { //
3601    errorLine = 0; 
3602    errorColon = yyleng;
3603 
3604    *(yytext + yyleng - 1) = 0; // remove ':'
3605 
3606    yylval.attr = new Attr;
3607    yylval.attr->offset = scan_position - yyleng;
3608    current_attribute = yylval.attr;
3609 
3610    if (start_of_object) {
3611       start_of_object = false;
3612       current_object->type = yyschema.searchClass(yytext);
3613       if (!current_object->type) {
3614          handle_error("Error: unknown class \"%s\"\n", yytext);
3615          yylval.attr->type   = NULL;
3616 //(*current_object) += yylval.attr;
3617          BEGIN(SKIP_OBJECT);
3618          LEXER_RETURN(TKN_UNKNOWN_CLASS);
3619       }
3620    }
3621 
3622    yylval.attr->type   = current_object->type->searchAttr(yytext);
3623    yylval.attr->object = current_object;
3624 
3625 //   (*current_object) += yylval.attr;
3626 
3627    if (! yylval.attr->type) {
3628       if (! schema.isForgiving())
3629          handle_error("Error: unknown attribute %s of class %s\n",
3630                       yytext, current_object->type->name);
3631       BEGIN(FREETEXT);
3632       LEXER_RETURN(ATTR_FREETEXT);
3633    }
3634 
3635    if (yylval.attr->type->isObsolete())
3636       handle_warning("Warning: attribute %s of class %s is now obsolete\n", 
3637               yytext, current_object->type->name);
3638 
3639    if (!yylval.attr->type->shouldParse()) { // may be free text?
3640       BEGIN(FREETEXT);
3641       LEXER_RETURN(ATTR_FREETEXT);
3642    } else {
3643       if (yylval.attr->type->syntax() == ATTR_GENERIC) {
3644          genericMode = true;
3645          BEGIN(GENERICMODE);
3646       } else if (yylval.attr->type->syntax() == ATTR_BLOBS) {
3647          genericMode = true;
3648          BEGIN(BLOBMODE);
3649       } else {
3650          genericMode = false;
3651          BEGIN(POLICYMODE);
3652       }
3653       LEXER_RETURN(yylval.attr->type->syntax());
3654    }
3655 }
3656         YY_BREAK
3657 case 2:
3658 YY_RULE_SETUP
3659 #line 188 "rpsl.l"
3660 {
3661    if (current_attribute)
3662       current_attribute->len = scan_position - current_attribute->offset;
3663    LEXER_RETURN(TKN_EOO);
3664 }
3665         YY_BREAK
3666 case YY_STATE_EOF(INITIAL):
3667 case YY_STATE_EOF(STRING):
3668 case YY_STATE_EOF(EXPECT_OPERATOR):
3669 case YY_STATE_EOF(FREETEXT):
3670 case YY_STATE_EOF(BLOBMODE):
3671 case YY_STATE_EOF(GENERICMODE):
3672 case YY_STATE_EOF(SKIP_OBJECT):
3673 case YY_STATE_EOF(POLICYMODE):
3674 #line 194 "rpsl.l"
3675 {
3676    yy_delete_buffer(rpsl_buffer);
3677    rpsl_buffer = (YY_BUFFER_STATE) NULL;
3678    if (current_attribute)
3679       current_attribute->len = scan_position - current_attribute->offset;
3680    BEGIN(INITIAL);
3681    yyterminate();
3682 }
3683         YY_BREAK
3684 case 3:
3685 YY_RULE_SETUP
3686 #line 203 "rpsl.l"
3687 
3688         YY_BREAK
3689 case 4:
3690 YY_RULE_SETUP
3691 #line 205 "rpsl.l"
3692 { // not a valid line
3693    current_attribute = NULL;
3694    handle_error("Error: valid lines start with attribute names, spaces or #\n");
3695    BEGIN(FREETEXT);
3696    LEXER_RETURN(TKN_ERROR);
3697 }
3698         YY_BREAK
3699 
3700 case 5:
3701 YY_RULE_SETUP
3702 #line 213 "rpsl.l"
3703 {
3704      BEGIN(INITIAL);
3705      if (current_attribute)
3706         current_attribute->len = scan_position - current_attribute->offset;
3707      LEXER_RETURN(TKN_EOO);
3708   }
3709         YY_BREAK
3710 case 6:
3711 YY_RULE_SETUP
3712 #line 219 "rpsl.l"
3713 errorNewLine;
3714         YY_BREAK
3715 case 7:
3716 YY_RULE_SETUP
3717 #line 220 "rpsl.l"
3718 ;
3719         YY_BREAK
3720 
3721 
3722 case 8:
3723 YY_RULE_SETUP
3724 #line 224 "rpsl.l"
3725 errorNewLine; errorColon++; // line continuation with +
3726         YY_BREAK
3727 case 9:
3728 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3729 yy_c_buf_p = yy_cp = yy_bp + 1;
3730 YY_DO_BEFORE_ACTION; /* set up yytext again */
3731 YY_RULE_SETUP
3732 #line 225 "rpsl.l"
3733 errorNewLine; // line continuation with space or comment
3734         YY_BREAK
3735 case 10:
3736 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3737 yy_c_buf_p = yy_cp = yy_bp + 1;
3738 YY_DO_BEFORE_ACTION; /* set up yytext again */
3739 YY_RULE_SETUP
3740 #line 226 "rpsl.l"
3741 { // end of attribute and may be end of object too
3742       BEGIN(INITIAL);
3743       if (current_attribute)
3744          current_attribute->len = scan_position - current_attribute->offset;
3745       LEXER_RETURN(TKN_EOA);
3746    }
3747         YY_BREAK
3748 case 11:
3749 YY_RULE_SETUP
3750 #line 232 "rpsl.l"
3751 ; // skip white space
3752         YY_BREAK
3753 case 12:
3754 YY_RULE_SETUP
3755 #line 233 "rpsl.l"
3756 ; // skip comment 
3757         YY_BREAK
3758 
3759 // dont parse anything, keep going till EOA
3760 case 13:
3761 YY_RULE_SETUP
3762 #line 237 "rpsl.l"
3763 ; // this rule needs to be after \n rules
3764         YY_BREAK
3765 
3766 
3767 case 14:
3768 YY_RULE_SETUP
3769 #line 241 "rpsl.l"
3770 {
3771      yylval.string = strdup(yytext);
3772      LEXER_RETURN(TKN_BLOB);
3773   }
3774         YY_BREAK
3775 
3776 
3777 case 15:
3778 YY_RULE_SETUP
3779 #line 248 "rpsl.l"
3780 {
3781      tm ts;
3782      bzero((char *) &ts, sizeof(ts));
3783 
3784      int date, zone_hours, zone_mins;
3785      sscanf(yytext, "%d %d:%d:%d %d:%d", 
3786                     &date, 
3787                     &ts.tm_hour, &ts.tm_min, &ts.tm_sec,
3788                     &zone_hours, &zone_mins);
3789 
3790      ts.tm_mday = date % 100; date /= 100;
3791      ts.tm_mon  = date % 100 - 1; date /= 100;
3792      ts.tm_year = date - 1900;
3793    
3794      if (ts.tm_mday > 31) {
3795         handle_error("Error: Invalid day %d\n", ts.tm_mday);
3796         LEXER_RETURN(TKN_ERROR);
3797      }
3798      if (ts.tm_mon > 11) {
3799         handle_error("Error: Invalid month %d\n", ts.tm_mon);
3800         LEXER_RETURN(TKN_ERROR);
3801      }
3802      if (ts.tm_year < 70) {
3803         handle_error("Error: Invalid year %d\n", ts.tm_year);
3804         LEXER_RETURN(TKN_ERROR);
3805      }
3806      if (ts.tm_sec > 59) {
3807         handle_error("Error: Invalid sec %d\n", ts.tm_sec);
3808         LEXER_RETURN(TKN_ERROR);
3809      }
3810      if (ts.tm_min > 59) {
3811         handle_error("Error: Invalid min %d\n", ts.tm_min);
3812         LEXER_RETURN(TKN_ERROR);
3813      }
3814      if (ts.tm_hour > 23) {
3815         handle_error("Error: Invalid hour %d\n", ts.tm_hour);
3816         LEXER_RETURN(TKN_ERROR);
3817      }
3818      if (zone_mins > 59) {
3819         handle_error("Error: Invalid zone min %d\n", zone_mins);
3820         LEXER_RETURN(TKN_ERROR);
3821      }
3822      if (zone_hours > 23) {
3823         handle_error("Error: Invalid zone hour %d\n", zone_hours);
3824         LEXER_RETURN(TKN_ERROR);
3825      }
3826 
3827      // this fiddling with TZ is necessary for mktime to use utc as timezone
3828      // it sucks, there's got to be a better way
3829      time_t result = mktime(&ts);
3830      result -= timezone;
3831 /*
3832      char *TZ=getenv("TZ");
3833      if (TZ)
3834         TZ = strdup(TZ);
3835      setenv("TZ", "", 1);
3836      time_t result = mktime(&ts);
3837      if (TZ) {
3838         setenv("TZ", TZ, 1);
3839         free(TZ);
3840      } else
3841         unsetenv("TZ");
3842 */
3843      if (zone_hours < 0)
3844         zone_mins *= -1;
3845 
3846      result += zone_mins * 60 + zone_hours * 60 * 60;
3847    
3848      yylval.time = result;
3849      LEXER_RETURN(TKN_TIMESTAMP);
3850   }
3851         YY_BREAK
3852 
3853 
3854 case 16:
3855 YY_RULE_SETUP
3856 #line 323 "rpsl.l"
3857 {
3858      if(current_attribute->type->syntax() == ATTR_AUTH){
3859      yylval.string = strdup(yytext);
3860      LEXER_RETURN(TKN_CRYPTEDPW);
3861      }else{
3862        scan_position -= yyleng; errorColon -= yyleng;
3863        REJECT;
3864      }
3865   }
3866         YY_BREAK
3867 case 17:
3868 YY_RULE_SETUP
3869 #line 333 "rpsl.l"
3870 {
3871      // The following code causes problem on Solaris since long long int
3872      // is not standardized yet 
3873      // sscanf(yytext, "%Ld", &(yylval.i));
3874      if(current_attribute->type->syntax() == ATTR_PHONE){
3875        if(validIntForPhone(yytext)){
3876          atollRA(yytext, &yylval.i);
3877          LEXER_RETURN(TKN_INT);
3878        }else{
3879          scan_position -= yyleng; errorColon -= yyleng;
3880          REJECT;
3881        }
3882      }else{
3883        atollRA(yytext, &yylval.i);
3884        LEXER_RETURN(TKN_INT);
3885      }
3886     /* atollRA(yytext, &yylval.i);
3887      LEXER_RETURN(TKN_INT);*/
3888   }
3889         YY_BREAK
3890 case 18:
3891 YY_RULE_SETUP
3892 #line 353 "rpsl.l"
3893 {
3894      unsigned int ms, ls;
3895      char *colon = strchr(yytext, ':');
3896      *colon = 0;
3897      ms = atoi(yytext);
3898      ls = atoi(colon+1);
3899      if (ms > 65535 || ls > 65535)
3900         LEXER_RETURN(TKN_ERROR);
3901 
3902      yylval.i = (ms << 16) + ls;
3903      LEXER_RETURN(TKN_INT);
3904   }
3905         YY_BREAK
3906 case 19:
3907 YY_RULE_SETUP
3908 #line 366 "rpsl.l"
3909 {
3910      yylval.real = atof(yytext);
3911      LEXER_RETURN(TKN_REAL);
3912   }
3913         YY_BREAK
3914 case 20:
3915 YY_RULE_SETUP
3916 #line 371 "rpsl.l"
3917 {
3918      string_buf_ptr = string_buf; 
3919      oldStart = YY_START;
3920      BEGIN(STRING);
3921   }
3922         YY_BREAK
3923 case 21:
3924 YY_RULE_SETUP
3925 #line 377 "rpsl.l"
3926 {
3927      yylval.ip = new IPAddr(yytext);
3928      LEXER_RETURN(TKN_IPV4);
3929   }
3930         YY_BREAK
3931 case 22:
3932 YY_RULE_SETUP
3933 #line 382 "rpsl.l"
3934 {
3935      yylval.string = strdup(yytext);
3936      printf("debug: lexer: Returning TKN_PRFXV6\n");
3937      LEXER_RETURN(TKN_PRFXV6);
3938   }
3939         YY_BREAK
3940 case 23:
3941 YY_RULE_SETUP
3942 #line 388 "rpsl.l"
3943 {
3944      yylval.string = strdup(yytext);
3945      if(validIPv6(yylval.string)){
3946         printf("debug: lexer: Returning TKN_PRFXV6\n");
3947         LEXER_RETURN(TKN_PRFXV6);
3948      }else{
3949         handle_error("Error: Invalid IPv6 prefix\n");
3950         BEGIN(FREETEXT);
3951         LEXER_RETURN(TKN_ERROR);
3952      }
3953   }
3954         YY_BREAK
3955 case 24:
3956 YY_RULE_SETUP
3957 #line 400 "rpsl.l"
3958 {
3959      yylval.prfx = new Prefix(yytext);
3960      LEXER_RETURN(TKN_PRFXV4);
3961   }
3962         YY_BREAK
3963 case 25:
3964 YY_RULE_SETUP
3965 #line 405 "rpsl.l"
3966 {
3967      yylval.prfxrng = new PrefixRange(yytext);
3968      LEXER_RETURN(TKN_PRFXV4RNG);
3969   }
3970         YY_BREAK
3971 case 26:
3972 YY_RULE_SETUP
3973 #line 410 "rpsl.l"
3974 {
3975       /*printf("DEBUG: lexer: matched a nichdl candidate (%s)\n",yytext);*/
3976       if(current_attribute->type->syntax() != ATTR_NICHDL){
3977         /*printf("DEBUG: lexer: This is not a nichdl attribute, rejecting\n");*/
3978         scan_position -= yyleng; errorColon -= yyleng;
3979         REJECT;
3980       }else{
3981         yylval.string = strdup(yytext);
3982         LEXER_RETURN(TKN_NICHDL);
3983       }
3984   }
3985         YY_BREAK
3986 /* The order of these rules are important */
3987 case 27:
3988 YY_RULE_SETUP
3989 #line 424 "rpsl.l"
3990 {
3991      yylval.i = atoi(yytext+2);
3992      LEXER_RETURN(TKN_ASNO);
3993   }
3994         YY_BREAK
3995 case 28:
3996 YY_RULE_SETUP
3997 #line 429 "rpsl.l"
3998 {
3999      yylval.sid = symbols.symID(yytext);
4000      LEXER_RETURN(TKN_ASNAME);
4001   }
4002         YY_BREAK
4003 case 29:
4004 YY_RULE_SETUP
4005 #line 434 "rpsl.l"
4006 {
4007      yylval.sid = symbols.symID(yytext);
4008      LEXER_RETURN(TKN_RSNAME);
4009   }
4010         YY_BREAK
4011 case 30:
4012 YY_RULE_SETUP
4013 #line 439 "rpsl.l"
4014 {
4015      yylval.sid = symbols.symID(yytext);
4016      LEXER_RETURN(TKN_RTRSNAME);
4017   }
4018         YY_BREAK
4019 case 31:
4020 YY_RULE_SETUP
4021 #line 444 "rpsl.l"
4022 {
4023      yylval.sid = symbols.symID(yytext);
4024      LEXER_RETURN(TKN_PRNGNAME);
4025   }
4026         YY_BREAK
4027 case 32:
4028 YY_RULE_SETUP
4029 #line 449 "rpsl.l"
4030 {
4031      yylval.sid = symbols.symID(yytext);
4032      LEXER_RETURN(TKN_FLTRNAME);
4033   }
4034         YY_BREAK
4035 case 33:
4036 YY_RULE_SETUP
4037 #line 454 "rpsl.l"
4038 {
4039      yylval.i = 1;
4040      LEXER_RETURN(TKN_BOOLEAN);
4041   }
4042         YY_BREAK
4043 case 34:
4044 YY_RULE_SETUP
4045 #line 459 "rpsl.l"
4046 {
4047      yylval.i = 0;
4048      LEXER_RETURN(TKN_BOOLEAN);
4049   }
4050         YY_BREAK
4051 case 35:
4052 YY_RULE_SETUP
4053 #line 464 "rpsl.l"
4054 { /* keycert name */  
4055      yylval.string = strdup(yytext);
4056      printf("debug: lexer: Returning TKN_KEYCRTNAME\n");
4057      LEXER_RETURN(TKN_KEYCRTNAME);
4058   }
4059         YY_BREAK
4060 case 36:
4061 YY_RULE_SETUP
4062 #line 471 "rpsl.l"
4063 { /* reserved word or rp-attribute, or arbitrary name */
4064      if (!genericMode) {
4065         oldStart = YY_START;
4066 
4067         int index;
4068         if ((index  = yyschema.searchKeyword(yytext)) >= 0) {
4069            if (index == KEYW_OPERATOR)
4070               BEGIN(EXPECT_OPERATOR);
4071            LEXER_RETURN(index);
4072         }
4073      
4074         if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4075            BEGIN(EXPECT_OPERATOR);
4076            LEXER_RETURN(TKN_RP_ATTR);
4077         }
4078      }
4079 
4080      yylval.string = strdup(yytext);
4081      LEXER_RETURN(TKN_WORD);
4082   }
4083         YY_BREAK
4084 case 37:
4085 YY_RULE_SETUP
4086 #line 492 "rpsl.l"
4087 { /* rp-attribute.method or DNS name */
4088      if (!genericMode) {
4089         char *p = strchr(yytext, '.');
4090         *p = 0;
4091 
4092         if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4093            *p = '.';
4094            YYLESS((p - yytext));
4095            LEXER_RETURN(TKN_RP_ATTR);
4096         }
4097 
4098         *p = '.';
4099      }
4100 
4101      yylval.sid = symbols.symID(yytext);
4102      LEXER_RETURN(TKN_DNS);
4103   }
4104         YY_BREAK
4105 case 38:
4106 YY_RULE_SETUP
4107 #line 510 "rpsl.l"
4108 { /* DNS name */
4109      yylval.sid = symbols.symID(yytext);
4110      LEXER_RETURN(TKN_DNS);
4111   }
4112         YY_BREAK
4113 case 39:
4114 YY_RULE_SETUP
4115 #line 515 "rpsl.l"
4116 { /* email */  
4117      yylval.string = strdup(yytext);
4118      LEXER_RETURN(TKN_EMAIL);
4119   }
4120         YY_BREAK
4121 case 40:
4122 YY_RULE_SETUP
4123 #line 522 "rpsl.l"
4124 {
4125      if (*yytext <= 0) {
4126         handle_error("Error: Non-ASCII character encountered\n");
4127         LEXER_RETURN(TKN_ERROR);
4128      } else
4129         LEXER_RETURN(*yytext);
4130   }
4131         YY_BREAK
4132 
4133 
4134 case 41:
4135 YY_RULE_SETUP
4136 #line 532 "rpsl.l"
4137 {
4138       yylval.moreSpecOp = new FilterMS(0);
4139       LEXER_RETURN(OP_MS);
4140    }
4141         YY_BREAK
4142 case 42:
4143 YY_RULE_SETUP
4144 #line 537 "rpsl.l"
4145 {
4146       yylval.moreSpecOp = new FilterMS(1);
4147       LEXER_RETURN(OP_MS);
4148    }
4149         YY_BREAK
4150 case 43:
4151 YY_RULE_SETUP
4152 #line 542 "rpsl.l"
4153 {
4154       int i;
4155       sscanf(yytext, "^%d", &i);
4156       yylval.moreSpecOp = new FilterMS(2, i, i);
4157       LEXER_RETURN(OP_MS);
4158    }
4159         YY_BREAK
4160 case 44:
4161 YY_RULE_SETUP
4162 #line 549 "rpsl.l"
4163 {
4164       int i, j;
4165       sscanf(yytext, "^%d-%d", &i, &j);
4166       yylval.moreSpecOp = new FilterMS(2, i, j);
4167       LEXER_RETURN(OP_MS);
4168    }
4169         YY_BREAK
4170 case 45:
4171 YY_RULE_SETUP
4172 #line 556 "rpsl.l"
4173 LEXER_RETURN(TKN_3DOTS);
4174         YY_BREAK
4175 
4176 
4177 case 46:
4178 YY_RULE_SETUP
4179 #line 560 "rpsl.l"
4180 {
4181       yylval.string = strdup(yytext);
4182       BEGIN(oldStart);
4183       LEXER_RETURN(TKN_OPERATOR);
4184    }
4185         YY_BREAK
4186 case 47:
4187 YY_RULE_SETUP
4188 #line 566 "rpsl.l"
4189 {
4190       YYLESS(0); 
4191       BEGIN(oldStart);
4192    }
4193         YY_BREAK
4194 
4195 
4196 case 48:
4197 YY_RULE_SETUP
4198 #line 573 "rpsl.l"
4199 { /* saw closing quote - all done */
4200       BEGIN(oldStart);
4201       *string_buf_ptr = '\0';
4202       yylval.string = strdup(string_buf);
4203       LEXER_RETURN(TKN_STRING);
4204    }
4205         YY_BREAK
4206 case 49:
4207 YY_RULE_SETUP
4208 #line 580 "rpsl.l"
4209 {
4210       errorNewLine;
4211       handle_error("Error: unterminated string encountered\n");
4212       BEGIN(oldStart);
4213       if (current_attribute)
4214          current_attribute->len = scan_position - current_attribute->offset;
4215       LEXER_RETURN(TKN_EOA);
4216    }
4217         YY_BREAK
4218 case 50:
4219 YY_RULE_SETUP
4220 #line 589 "rpsl.l"
4221 {
4222       /* octal escape sequence */
4223       int result;
4224       
4225       (void) sscanf( yytext + 1, "%o", &result );
4226 
4227       if ( result > 0xff ) {
4228          handle_error("Error: octal escape sequence is out of bounds\n");
4229          BEGIN(oldStart);
4230          LEXER_RETURN(TKN_ERROR);
4231       }
4232 
4233       *string_buf_ptr++ = result;
4234    }
4235         YY_BREAK
4236 case 51:
4237 YY_RULE_SETUP
4238 #line 604 "rpsl.l"
4239 {                       /* like '\48' or '\0777777' */
4240       handle_error("Error: bad octal escape sequence\n");
4241       BEGIN(oldStart);
4242       LEXER_RETURN(TKN_ERROR);
4243    }
4244         YY_BREAK
4245 case 52:
4246 YY_RULE_SETUP
4247 #line 610 "rpsl.l"
4248 *string_buf_ptr++ = '\n';
4249         YY_BREAK
4250 case 53:
4251 YY_RULE_SETUP
4252 #line 611 "rpsl.l"
4253 *string_buf_ptr++ = '\t';
4254         YY_BREAK
4255 case 54:
4256 YY_RULE_SETUP
4257 #line 612 "rpsl.l"
4258 *string_buf_ptr++ = '\r';
4259         YY_BREAK
4260 case 55:
4261 YY_RULE_SETUP
4262 #line 613 "rpsl.l"
4263 *string_buf_ptr++ = '\b';
4264         YY_BREAK
4265 case 56:
4266 YY_RULE_SETUP
4267 #line 614 "rpsl.l"
4268 *string_buf_ptr++ = '\f';
4269         YY_BREAK
4270 case 57:
4271 YY_RULE_SETUP
4272 #line 616 "rpsl.l"
4273 *string_buf_ptr++ = yytext[1];
4274         YY_BREAK
4275 case 58:
4276 YY_RULE_SETUP
4277 #line 618 "rpsl.l"
4278 {
4279       char *yptr = yytext;
4280       while ( *yptr )
4281          *string_buf_ptr++ = *yptr++;
4282    }
4283         YY_BREAK
4284 case 59:
4285 YY_RULE_SETUP
4286 #line 624 "rpsl.l"
4287 *string_buf_ptr++ = yytext[0];
4288         YY_BREAK
4289 
4290 case 60:
4291 YY_RULE_SETUP
4292 #line 627 "rpsl.l"
4293 ECHO;
4294         YY_BREAK
4295 #line 4296 "lex.rpsl.c"
4296 
4297         case YY_END_OF_BUFFER:
4298                 {
4299                 /* Amount of text matched not including the EOB char. */
4300                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
4301 
4302                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4303                 *yy_cp = yy_hold_char;
4304                 YY_RESTORE_YY_MORE_OFFSET
4305 
4306                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
4307                         {
4308                         /* We're scanning a new file or input source.  It's
4309                          * possible that this happened because the user
4310                          * just pointed yyin at a new source and called
4311                          * yylex().  If so, then we have to assure
4312                          * consistency between yy_current_buffer and our
4313                          * globals.  Here is the right place to do so, because
4314                          * this is the first action (other than possibly a
4315                          * back-up) that will match for the new input source.
4316                          */
4317                         yy_n_chars = yy_current_buffer->yy_n_chars;
4318                         yy_current_buffer->yy_input_file = yyin;
4319                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
4320                         }
4321 
4322                 /* Note that here we test for yy_c_buf_p "<=" to the position
4323                  * of the first EOB in the buffer, since yy_c_buf_p will
4324                  * already have been incremented past the NUL character
4325                  * (since all states make transitions on EOB to the
4326                  * end-of-buffer state).  Contrast this with the test
4327                  * in input().
4328                  */
4329                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4330                         { /* This was really a NUL. */
4331                         yy_state_type yy_next_state;
4332 
4333                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
4334 
4335                         yy_current_state = yy_get_previous_state();
4336 
4337                         /* Okay, we're now positioned to make the NUL
4338                          * transition.  We couldn't have
4339                          * yy_get_previous_state() go ahead and do it
4340                          * for us because it doesn't know how to deal
4341                          * with the possibility of jamming (and we don't
4342                          * want to build jamming into it because then it
4343                          * will run more slowly).
4344                          */
4345 
4346                         yy_next_state = yy_try_NUL_trans( yy_current_state );
4347 
4348                         yy_bp = yytext_ptr + YY_MORE_ADJ;
4349 
4350                         if ( yy_next_state )
4351                                 {
4352                                 /* Consume the NUL. */
4353                                 yy_cp = ++yy_c_buf_p;
4354                                 yy_current_state = yy_next_state;
4355                                 goto yy_match;
4356                                 }
4357 
4358                         else
4359                                 {
4360                                 yy_cp = yy_c_buf_p;
4361                                 goto yy_find_action;
4362                                 }
4363                         }
4364 
4365                 else switch ( yy_get_next_buffer() )
4366                         {
4367                         case EOB_ACT_END_OF_FILE:
4368                                 {
4369                                 yy_did_buffer_switch_on_eof = 0;
4370 
4371                                 if ( yywrap() )
4372                                         {
4373                                         /* Note: because we've taken care in
4374                                          * yy_get_next_buffer() to have set up
4375                                          * yytext, we can now set up
4376                                          * yy_c_buf_p so that if some total
4377                                          * hoser (like flex itself) wants to
4378                                          * call the scanner after we return the
4379                                          * YY_NULL, it'll still work - another
4380                                          * YY_NULL will get returned.
4381                                          */
4382                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
4383 
4384                                         yy_act = YY_STATE_EOF(YY_START);
4385                                         goto do_action;
4386                                         }
4387 
4388                                 else
4389                                         {
4390                                         if ( ! yy_did_buffer_switch_on_eof )
4391                                                 YY_NEW_FILE;
4392                                         }
4393                                 break;
4394                                 }
4395 
4396                         case EOB_ACT_CONTINUE_SCAN:
4397                                 yy_c_buf_p =
4398                                         yytext_ptr + yy_amount_of_matched_text;
4399 
4400                                 yy_current_state = yy_get_previous_state();
4401 
4402                                 yy_cp = yy_c_buf_p;
4403                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
4404                                 goto yy_match;
4405 
4406                         case EOB_ACT_LAST_MATCH:
4407                                 yy_c_buf_p =
4408                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
4409 
4410                                 yy_current_state = yy_get_previous_state();
4411 
4412                                 yy_cp = yy_c_buf_p;
4413                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
4414                                 goto yy_find_action;
4415                         }
4416                 break;
4417                 }
4418 
4419         default:
4420                 YY_FATAL_ERROR(
4421                         "fatal flex scanner internal error--no action found" );
4422         } /* end of action switch */
4423                 } /* end of scanning one token */
4424         } /* end of yylex */
4425 
4426 
4427 /* yy_get_next_buffer - try to read in a new buffer
4428  *
4429  * Returns a code representing an action:
4430  *      EOB_ACT_LAST_MATCH -
4431  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4432  *      EOB_ACT_END_OF_FILE - end of file
4433  */
4434 
4435 static int yy_get_next_buffer()
     /* [<][>][^][v][top][bottom][index][help] */
4436         {
4437         register char *dest = yy_current_buffer->yy_ch_buf;
4438         register char *source = yytext_ptr;
4439         register int number_to_move, i;
4440         int ret_val;
4441 
4442         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
4443                 YY_FATAL_ERROR(
4444                 "fatal flex scanner internal error--end of buffer missed" );
4445 
4446         if ( yy_current_buffer->yy_fill_buffer == 0 )
4447                 { /* Don't try to fill the buffer, so this is an EOF. */
4448                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
4449                         {
4450                         /* We matched a single character, the EOB, so
4451                          * treat this as a final EOF.
4452                          */
4453                         return EOB_ACT_END_OF_FILE;
4454                         }
4455 
4456                 else
4457                         {
4458                         /* We matched some text prior to the EOB, first
4459                          * process it.
4460                          */
4461                         return EOB_ACT_LAST_MATCH;
4462                         }
4463                 }
4464 
4465         /* Try to read more data. */
4466 
4467         /* First move last chars to start of buffer. */
4468         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
4469 
4470         for ( i = 0; i < number_to_move; ++i )
4471                 *(dest++) = *(source++);
4472 
4473         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4474                 /* don't do the read, it's not guaranteed to return an EOF,
4475                  * just force an EOF
4476                  */
4477                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
4478 
4479         else
4480                 {
4481                 int num_to_read =
4482                         yy_current_buffer->yy_buf_size - number_to_move - 1;
4483 
4484                 while ( num_to_read <= 0 )
4485                         { /* Not enough room in the buffer - grow it. */
4486 #ifdef YY_USES_REJECT
4487                         YY_FATAL_ERROR(
4488 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
4489 #else
4490 
4491                         /* just a shorter name for the current buffer */
4492                         YY_BUFFER_STATE b = yy_current_buffer;
4493 
4494                         int yy_c_buf_p_offset =
4495                                 (int) (yy_c_buf_p - b->yy_ch_buf);
4496 
4497                         if ( b->yy_is_our_buffer )
4498                                 {
4499                                 int new_size = b->yy_buf_size * 2;
4500 
4501                                 if ( new_size <= 0 )
4502                                         b->yy_buf_size += b->yy_buf_size / 8;
4503                                 else
4504                                         b->yy_buf_size *= 2;
4505 
4506                                 b->yy_ch_buf = (char *)
4507                                         /* Include room in for 2 EOB chars. */
4508                                         yy_flex_realloc( (void *) b->yy_ch_buf,
4509                                                          b->yy_buf_size + 2 );
4510                                 }
4511                         else
4512                                 /* Can't grow it, we don't own it. */
4513                                 b->yy_ch_buf = 0;
4514 
4515                         if ( ! b->yy_ch_buf )
4516                                 YY_FATAL_ERROR(
4517                                 "fatal error - scanner input buffer overflow" );
4518 
4519                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4520 
4521                         num_to_read = yy_current_buffer->yy_buf_size -
4522                                                 number_to_move - 1;
4523 #endif
4524                         }
4525 
4526                 if ( num_to_read > YY_READ_BUF_SIZE )
4527                         num_to_read = YY_READ_BUF_SIZE;
4528 
4529                 /* Read in more data. */
4530                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
4531                         yy_n_chars, num_to_read );
4532 
4533                 yy_current_buffer->yy_n_chars = yy_n_chars;
4534                 }
4535 
4536         if ( yy_n_chars == 0 )
4537                 {
4538                 if ( number_to_move == YY_MORE_ADJ )
4539                         {
4540                         ret_val = EOB_ACT_END_OF_FILE;
4541                         yyrestart( yyin );
4542                         }
4543 
4544                 else
4545                         {
4546                         ret_val = EOB_ACT_LAST_MATCH;
4547                         yy_current_buffer->yy_buffer_status =
4548                                 YY_BUFFER_EOF_PENDING;
4549                         }
4550                 }
4551 
4552         else
4553                 ret_val = EOB_ACT_CONTINUE_SCAN;
4554 
4555         yy_n_chars += number_to_move;
4556         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4557         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4558 
4559         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
4560 
4561         return ret_val;
4562         }
4563 
4564 
4565 /* yy_get_previous_state - get the state just before the EOB char was reached */
4566 
4567 static yy_state_type yy_get_previous_state()
     /* [<][>][^][v][top][bottom][index][help] */
4568         {
4569         register yy_state_type yy_current_state;
4570         register char *yy_cp;
4571 
4572         yy_current_state = yy_start;
4573         yy_current_state += YY_AT_BOL();
4574         yy_state_ptr = yy_state_buf;
4575         *yy_state_ptr++ = yy_current_state;
4576 
4577         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
4578                 {
4579                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4580                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4581                         {
4582                         yy_current_state = (int) yy_def[yy_current_state];
4583                         if ( yy_current_state >= 828 )
4584                                 yy_c = yy_meta[(unsigned int) yy_c];
4585                         }
4586                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4587                 *yy_state_ptr++ = yy_current_state;
4588                 }
4589 
4590         return yy_current_state;
4591         }
4592 
4593 
4594 /* yy_try_NUL_trans - try to make a transition on the NUL character
4595  *
4596  * synopsis
4597  *      next_state = yy_try_NUL_trans( current_state );
4598  */
4599 
4600 #ifdef YY_USE_PROTOS
4601 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
     /* [<][>][^][v][top][bottom][index][help] */
4602 #else
4603 static yy_state_type yy_try_NUL_trans( yy_current_state )
4604 yy_state_type yy_current_state;
4605 #endif
4606         {
4607         register int yy_is_jam;
4608 
4609         register YY_CHAR yy_c = 1;
4610         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4611                 {
4612                 yy_current_state = (int) yy_def[yy_current_state];
4613                 if ( yy_current_state >= 828 )
4614                         yy_c = yy_meta[(unsigned int) yy_c];
4615                 }
4616         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4617         yy_is_jam = (yy_current_state == 827);
4618         if ( ! yy_is_jam )
4619                 *yy_state_ptr++ = yy_current_state;
4620 
4621         return yy_is_jam ? 0 : yy_current_state;
4622         }
4623 
4624 
4625 #ifndef YY_NO_UNPUT
4626 #ifdef YY_USE_PROTOS
4627 static void yyunput( int c, register char *yy_bp )
     /* [<][>][^][v][top][bottom][index][help] */
4628 #else
4629 static void yyunput( c, yy_bp )
4630 int c;
4631 register char *yy_bp;
4632 #endif
4633         {
4634         register char *yy_cp = yy_c_buf_p;
4635 
4636         /* undo effects of setting up yytext */
4637         *yy_cp = yy_hold_char;
4638 
4639         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4640                 { /* need to shift things up to make room */
4641                 /* +2 for EOB chars. */
4642                 register int number_to_move = yy_n_chars + 2;
4643                 register char *dest = &yy_current_buffer->yy_ch_buf[
4644                                         yy_current_buffer->yy_buf_size + 2];
4645                 register char *source =
4646                                 &yy_current_buffer->yy_ch_buf[number_to_move];
4647 
4648                 while ( source > yy_current_buffer->yy_ch_buf )
4649                         *--dest = *--source;
4650 
4651                 yy_cp += (int) (dest - source);
4652                 yy_bp += (int) (dest - source);
4653                 yy_current_buffer->yy_n_chars =
4654                         yy_n_chars = yy_current_buffer->yy_buf_size;
4655 
4656                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4657                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
4658                 }
4659 
4660         *--yy_cp = (char) c;
4661 
4662 
4663         yytext_ptr = yy_bp;
4664         yy_hold_char = *yy_cp;
4665         yy_c_buf_p = yy_cp;
4666         }
4667 #endif  /* ifndef YY_NO_UNPUT */
4668 
4669 
4670 #ifdef __cplusplus
4671 static int yyinput()
     /* [<][>][^][v][top][bottom][index][help] */
4672 #else
4673 static int input()
4674 #endif
4675         {
4676         int c;
4677 
4678         *yy_c_buf_p = yy_hold_char;
4679 
4680         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4681                 {
4682                 /* yy_c_buf_p now points to the character we want to return.
4683                  * If this occurs *before* the EOB characters, then it's a
4684                  * valid NUL; if not, then we've hit the end of the buffer.
4685                  */
4686                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4687                         /* This was really a NUL. */
4688                         *yy_c_buf_p = '\0';
4689 
4690                 else
4691                         { /* need more input */
4692                         int offset = yy_c_buf_p - yytext_ptr;
4693                         ++yy_c_buf_p;
4694 
4695                         switch ( yy_get_next_buffer() )
4696                                 {
4697                                 case EOB_ACT_LAST_MATCH:
4698                                         /* This happens because yy_g_n_b()
4699                                          * sees that we've accumulated a
4700                                          * token and flags that we need to
4701                                          * try matching the token before
4702                                          * proceeding.  But for input(),
4703                                          * there's no matching to consider.
4704                                          * So convert the EOB_ACT_LAST_MATCH
4705                                          * to EOB_ACT_END_OF_FILE.
4706                                          */
4707 
4708                                         /* Reset buffer status. */
4709                                         yyrestart( yyin );
4710 
4711                                         /* fall through */
4712 
4713                                 case EOB_ACT_END_OF_FILE:
4714                                         {
4715                                         if ( yywrap() )
4716                                                 return EOF;
4717 
4718                                         if ( ! yy_did_buffer_switch_on_eof )
4719                                                 YY_NEW_FILE;
4720 #ifdef __cplusplus
4721                                         return yyinput();
4722 #else
4723                                         return input();
4724 #endif
4725                                         }
4726 
4727                                 case EOB_ACT_CONTINUE_SCAN:
4728                                         yy_c_buf_p = yytext_ptr + offset;
4729                                         break;
4730                                 }
4731                         }
4732                 }
4733 
4734         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
4735         *yy_c_buf_p = '\0';     /* preserve yytext */
4736         yy_hold_char = *++yy_c_buf_p;
4737 
4738         yy_current_buffer->yy_at_bol = (c == '\n');
4739 
4740         return c;
4741         }
4742 
4743 
4744 #ifdef YY_USE_PROTOS
4745 void yyrestart( FILE *input_file )
     /* [<][>][^][v][top][bottom][index][help] */
4746 #else
4747 void yyrestart( input_file )
4748 FILE *input_file;
4749 #endif
4750         {
4751         if ( ! yy_current_buffer )
4752                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
4753 
4754         yy_init_buffer( yy_current_buffer, input_file );
4755         yy_load_buffer_state();
4756         }
4757 
4758 
4759 #ifdef YY_USE_PROTOS
4760 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
     /* [<][>][^][v][top][bottom][index][help] */
4761 #else
4762 void yy_switch_to_buffer( new_buffer )
4763 YY_BUFFER_STATE new_buffer;
4764 #endif
4765         {
4766         if ( yy_current_buffer == new_buffer )
4767                 return;
4768 
4769         if ( yy_current_buffer )
4770                 {
4771                 /* Flush out information for old buffer. */
4772                 *yy_c_buf_p = yy_hold_char;
4773                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
4774                 yy_current_buffer->yy_n_chars = yy_n_chars;
4775                 }
4776 
4777         yy_current_buffer = new_buffer;
4778         yy_load_buffer_state();
4779 
4780         /* We don't actually know whether we did this switch during
4781          * EOF (yywrap()) processing, but the only time this flag
4782          * is looked at is after yywrap() is called, so it's safe
4783          * to go ahead and always set it.
4784          */
4785         yy_did_buffer_switch_on_eof = 1;
4786         }
4787 
4788 
4789 #ifdef YY_USE_PROTOS
4790 void yy_load_buffer_state( void )
     /* [<][>][^][v][top][bottom][index][help] */
4791 #else
4792 void yy_load_buffer_state()
4793 #endif
4794         {
4795         yy_n_chars = yy_current_buffer->yy_n_chars;
4796         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
4797         yyin = yy_current_buffer->yy_input_file;
4798         yy_hold_char = *yy_c_buf_p;
4799         }
4800 
4801 
4802 #ifdef YY_USE_PROTOS
4803 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
     /* [<][>][^][v][top][bottom][index][help] */
4804 #else
4805 YY_BUFFER_STATE yy_create_buffer( file, size )
4806 FILE *file;
4807 int size;
4808 #endif
4809         {
4810         YY_BUFFER_STATE b;
4811 
4812         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4813         if ( ! b )
4814                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4815 
4816         b->yy_buf_size = size;
4817 
4818         /* yy_ch_buf has to be 2 characters longer than the size given because
4819          * we need to put in 2 end-of-buffer characters.
4820          */
4821         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
4822         if ( ! b->yy_ch_buf )
4823                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4824 
4825         b->yy_is_our_buffer = 1;
4826 
4827         yy_init_buffer( b, file );
4828 
4829         return b;
4830         }
4831 
4832 
4833 #ifdef YY_USE_PROTOS
4834 void yy_delete_buffer( YY_BUFFER_STATE b )
     /* [<][>][^][v][top][bottom][index][help] */
4835 #else
4836 void yy_delete_buffer( b )
4837 YY_BUFFER_STATE b;
4838 #endif
4839         {
4840         if ( ! b )
4841                 return;
4842 
4843         if ( b == yy_current_buffer )
4844                 yy_current_buffer = (YY_BUFFER_STATE) 0;
4845 
4846         if ( b->yy_is_our_buffer )
4847                 yy_flex_free( (void *) b->yy_ch_buf );
4848 
4849         yy_flex_free( (void *) b );
4850         }
4851 
4852 
4853 #ifndef YY_ALWAYS_INTERACTIVE
4854 #ifndef YY_NEVER_INTERACTIVE
4855 extern int isatty YY_PROTO(( int ));
4856 #endif
4857 #endif
4858 
4859 #ifdef YY_USE_PROTOS
4860 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
     /* [<][>][^][v][top][bottom][index][help] */
4861 #else
4862 void yy_init_buffer( b, file )
4863 YY_BUFFER_STATE b;
4864 FILE *file;
4865 #endif
4866 
4867 
4868         {
4869         yy_flush_buffer( b );
4870 
4871         b->yy_input_file = file;
4872         b->yy_fill_buffer = 1;
4873 
4874 #if YY_ALWAYS_INTERACTIVE
4875         b->yy_is_interactive = 1;
4876 #else
4877 #if YY_NEVER_INTERACTIVE
4878         b->yy_is_interactive = 0;
4879 #else
4880         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4881 #endif
4882 #endif
4883         }
4884 
4885 
4886 #ifdef YY_USE_PROTOS
4887 void yy_flush_buffer( YY_BUFFER_STATE b )
     /* [<][>][^][v][top][bottom][index][help] */
4888 #else
4889 void yy_flush_buffer( b )
4890 YY_BUFFER_STATE b;
4891 #endif
4892 
4893         {
4894         if ( ! b )
4895                 return;
4896 
4897         b->yy_n_chars = 0;
4898 
4899         /* We always need two end-of-buffer characters.  The first causes
4900          * a transition to the end-of-buffer state.  The second causes
4901          * a jam in that state.
4902          */
4903         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4904         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4905 
4906         b->yy_buf_pos = &b->yy_ch_buf[0];
4907 
4908         b->yy_at_bol = 1;
4909         b->yy_buffer_status = YY_BUFFER_NEW;
4910 
4911         if ( b == yy_current_buffer )
4912                 yy_load_buffer_state();
4913         }
4914 
4915 
4916 #ifndef YY_NO_SCAN_BUFFER
4917 #ifdef YY_USE_PROTOS
4918 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
4919 #else
4920 YY_BUFFER_STATE yy_scan_buffer( base, size )
4921 char *base;
4922 yy_size_t size;
4923 #endif
4924         {
4925         YY_BUFFER_STATE b;
4926 
4927         if ( size < 2 ||
4928              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4929              base[size-1] != YY_END_OF_BUFFER_CHAR )
4930                 /* They forgot to leave room for the EOB's. */
4931                 return 0;
4932 
4933         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4934         if ( ! b )
4935                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4936 
4937         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4938         b->yy_buf_pos = b->yy_ch_buf = base;
4939         b->yy_is_our_buffer = 0;
4940         b->yy_input_file = 0;
4941         b->yy_n_chars = b->yy_buf_size;
4942         b->yy_is_interactive = 0;
4943         b->yy_at_bol = 1;
4944         b->yy_fill_buffer = 0;
4945         b->yy_buffer_status = YY_BUFFER_NEW;
4946 
4947         yy_switch_to_buffer( b );
4948 
4949         return b;
4950         }
4951 #endif
4952 
4953 
4954 #ifndef YY_NO_SCAN_STRING
4955 #ifdef YY_USE_PROTOS
4956 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
     /* [<][>][^][v][top][bottom][index][help] */
4957 #else
4958 YY_BUFFER_STATE yy_scan_string( yy_str )
4959 yyconst char *yy_str;
4960 #endif
4961         {
4962         int len;
4963         for ( len = 0; yy_str[len]; ++len )
4964                 ;
4965 
4966         return yy_scan_bytes( yy_str, len );
4967         }
4968 #endif
4969 
4970 
4971 #ifndef YY_NO_SCAN_BYTES
4972 #ifdef YY_USE_PROTOS
4973 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
     /* [<][>][^][v][top][bottom][index][help] */
4974 #else
4975 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
4976 yyconst char *bytes;
4977 int len;
4978 #endif
4979         {
4980         YY_BUFFER_STATE b;
4981         char *buf;
4982         yy_size_t n;
4983         int i;
4984 
4985         /* Get memory for full buffer, including space for trailing EOB's. */
4986         n = len + 2;
4987         buf = (char *) yy_flex_alloc( n );
4988         if ( ! buf )
4989                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4990 
4991         for ( i = 0; i < len; ++i )
4992                 buf[i] = bytes[i];
4993 
4994         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
4995 
4996         b = yy_scan_buffer( buf, n );
4997         if ( ! b )
4998                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4999 
5000         /* It's okay to grow etc. this buffer, and we should throw it
5001          * away when we're done.
5002          */
5003         b->yy_is_our_buffer = 1;
5004 
5005         return b;
5006         }
5007 #endif
5008 
5009 
5010 #ifndef YY_NO_PUSH_STATE
5011 #ifdef YY_USE_PROTOS
5012 static void yy_push_state( int new_state )
     /* [<][>][^][v][top][bottom][index][help] */
5013 #else
5014 static void yy_push_state( new_state )
5015 int new_state;
5016 #endif
5017         {
5018         if ( yy_start_stack_ptr >= yy_start_stack_depth )
5019                 {
5020                 yy_size_t new_size;
5021 
5022                 yy_start_stack_depth += YY_START_STACK_INCR;
5023                 new_size = yy_start_stack_depth * sizeof( int );
5024 
5025                 if ( ! yy_start_stack )
5026                         yy_start_stack = (int *) yy_flex_alloc( new_size );
5027 
5028                 else
5029                         yy_start_stack = (int *) yy_flex_realloc(
5030                                         (void *) yy_start_stack, new_size );
5031 
5032                 if ( ! yy_start_stack )
5033                         YY_FATAL_ERROR(
5034                         "out of memory expanding start-condition stack" );
5035                 }
5036 
5037         yy_start_stack[yy_start_stack_ptr++] = YY_START;
5038 
5039         BEGIN(new_state);
5040         }
5041 #endif
5042 
5043 
5044 #ifndef YY_NO_POP_STATE
5045 static void yy_pop_state()
     /* [<][>][^][v][top][bottom][index][help] */
5046         {
5047         if ( --yy_start_stack_ptr < 0 )
5048                 YY_FATAL_ERROR( "start-condition stack underflow" );
5049 
5050         BEGIN(yy_start_stack[yy_start_stack_ptr]);
5051         }
5052 #endif
5053 
5054 
5055 #ifndef YY_NO_TOP_STATE
5056 static int yy_top_state()
     /* [<][>][^][v][top][bottom][index][help] */
5057         {
5058         return yy_start_stack[yy_start_stack_ptr - 1];
5059         }
5060 #endif
5061 
5062 #ifndef YY_EXIT_FAILURE
5063 #define YY_EXIT_FAILURE 2
5064 #endif
5065 
5066 #ifdef YY_USE_PROTOS
5067 static void yy_fatal_error( yyconst char msg[] )
     /* [<][>][^][v][top][bottom][index][help] */
5068 #else
5069 static void yy_fatal_error( msg )
5070 char msg[];
5071 #endif
5072         {
5073         (void) fprintf( stderr, "%s\n", msg );
5074         exit( YY_EXIT_FAILURE );
5075         }
5076 
5077 
5078 
5079 /* Redefine yyless() so it works in section 3 code. */
5080 
5081 #undef yyless
5082 #define yyless(n) \
     /* [<][>][^][v][top][bottom][index][help] */
5083         do \
5084                 { \
5085                 /* Undo effects of setting up yytext. */ \
5086                 yytext[yyleng] = yy_hold_char; \
5087                 yy_c_buf_p = yytext + n; \
5088                 yy_hold_char = *yy_c_buf_p; \
5089                 *yy_c_buf_p = '\0'; \
5090                 yyleng = n; \
5091                 } \
5092         while ( 0 )
5093 
5094 
5095 /* Internal utility routines. */
5096 
5097 #ifndef yytext_ptr
5098 #ifdef YY_USE_PROTOS
5099 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
     /* [<][>][^][v][top][bottom][index][help] */
5100 #else
5101 static void yy_flex_strncpy( s1, s2, n )
5102 char *s1;
5103 yyconst char *s2;
5104 int n;
5105 #endif
5106         {
5107         register int i;
5108         for ( i = 0; i < n; ++i )
5109                 s1[i] = s2[i];
5110         }
5111 #endif
5112 
5113 #ifdef YY_NEED_STRLEN
5114 #ifdef YY_USE_PROTOS
5115 static int yy_flex_strlen( yyconst char *s )
     /* [<][>][^][v][top][bottom][index][help] */
5116 #else
5117 static int yy_flex_strlen( s )
5118 yyconst char *s;
5119 #endif
5120         {
5121         register int n;
5122         for ( n = 0; s[n]; ++n )
5123                 ;
5124 
5125         return n;
5126         }
5127 #endif
5128 
5129 
5130 #ifdef YY_USE_PROTOS
5131 static void *yy_flex_alloc( yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5132 #else
5133 static void *yy_flex_alloc( size )
5134 yy_size_t size;
5135 #endif
5136         {
5137         return (void *) malloc( size );
5138         }
5139 
5140 #ifdef YY_USE_PROTOS
5141 static void *yy_flex_realloc( void *ptr, yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5142 #else
5143 static void *yy_flex_realloc( ptr, size )
5144 void *ptr;
5145 yy_size_t size;
5146 #endif
5147         {
5148         /* The cast to (char *) in the following accommodates both
5149          * implementations that use char* generic pointers, and those
5150          * that use void* generic pointers.  It works with the latter
5151          * because both ANSI C and C++ allow castless assignment from
5152          * any pointer type to void*, and deal with argument conversions
5153          * as though doing an assignment.
5154          */
5155         return (void *) realloc( (char *) ptr, size );
5156         }
5157 
5158 #ifdef YY_USE_PROTOS
5159 static void yy_flex_free( void *ptr )
     /* [<][>][^][v][top][bottom][index][help] */
5160 #else
5161 static void yy_flex_free( ptr )
5162 void *ptr;
5163 #endif
5164         {
5165         free( ptr );
5166         }
5167 
5168 #if YY_MAIN
5169 int main()
     /* [<][>][^][v][top][bottom][index][help] */
5170         {
5171         yylex();
5172         return 0;
5173         }
5174 #endif
5175 #line 627 "rpsl.l"
5176 
5177 extern "C" {
5178 int yywrap () {
5179    return 1;
5180 }
5181 }
5182 
5183 void handle_error(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5184    current_object->has_error = true;
5185 
5186    char buffer[1024] = "***";
5187    va_list ap;
5188    va_start(ap, s);
5189    vsprintf(buffer+3, s, ap);
5190    va_end(ap);
5191 
5192    if (current_attribute)
5193       current_attribute->errors += buffer;
5194    else 
5195       current_object->errors += buffer;
5196 }
5197 
5198 void handle_object_error(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5199    current_object->has_error = true;
5200 
5201    char buffer[1024] = "***";
5202    va_list ap;
5203    va_start(ap, s);
5204    vsprintf(buffer+3, s, ap);
5205    va_end(ap);
5206 
5207    current_object->errors += buffer;
5208 }
5209 
5210 void rpslerror(char *, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5211    if (current_attribute) {
5212       current_attribute->errorLine = errorLine;
5213       current_attribute->errorColon = errorColon - yyleng;
5214       current_attribute->errorLeng  = yyleng;
5215    }
5216 }
5217 
5218 void handle_warning(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5219    current_object->has_warning = true;
5220 
5221    char buffer[1024];
5222    va_list ap;
5223    va_start(ap, s);
5224    vsprintf(buffer, s, ap);
5225    va_end(ap);
5226 
5227    if (current_attribute) 
5228       current_attribute->errors += buffer;
5229    else 
5230       current_object->errors += buffer;
5231 }
5232 
5233 void yy_scan_object(Object *o) {
     /* [<][>][^][v][top][bottom][index][help] */
5234    errorLine = 0; 
5235    errorColon = 0;
5236    current_object = o;
5237    current_attribute = NULL;
5238    start_of_object = true;
5239    scan_position = 0;
5240    genericMode = true;
5241 
5242    if (rpsl_buffer)
5243       yy_delete_buffer(rpsl_buffer);
5244    rpsl_buffer = yy_scan_bytes(o->contents, o->size);
5245    BEGIN(INITIAL);
5246 }
5247 
5248 Attr *changeCurrentAttr(Attr *b) {
     /* [<][>][^][v][top][bottom][index][help] */
5249    if (current_attribute) {
5250       b->object = current_attribute->object;
5251       b->type   = current_attribute->type;
5252       b->offset = current_attribute->offset;;
5253       b->len    = current_attribute->len;
5254       b->errors = current_attribute->errors;
5255       b->errorLine  = current_attribute->errorLine;
5256       b->errorColon = current_attribute->errorColon;
5257       b->errorLeng  = current_attribute->errorLeng;
5258       delete current_attribute;
5259    }
5260    current_attribute = b;
5261    return b;
5262 }
5263 
5264 int validIPv6(const char *s){
     /* [<][>][^][v][top][bottom][index][help] */
5265    char *string, *sleft, *sright, *pos;
5266    int countleft = 0, countright = 0; 
5267    string = strdup(s);
5268    pos = strstr(string,"/");
5269    pos[0] = '\0';
5270    sleft = strdup(string);
5271    pos = strstr(sleft,"::");
5272    pos[0] = '\0';  
5273    sright = pos + 2;
5274    // count the ':'s on the left
5275    for(int i=0;i<strlen(sleft);i++){
5276      if(sleft[i] == ':'){ countleft++;} 
5277    }
5278    // count the ':'s on the right
5279    for(int i=0;i<strlen(sright);i++){
5280      if(sright[i] == ':'){ countright++;} 
5281    }
5282    printf("The two parts are: %s and %s\nCounts are %i and %i\n",
5283                            sleft, sright, countleft, countright); 
5284 
5285    // now, if the total # of quads is  > 8, than there
5286    // is a problem with the syntax of the ipv6 address.
5287    if((countleft + 1 + countright + 1) <= 8 ){
5288      return 1;
5289    }else{
5290      return 0;
5291    }
5292 }
5293 
5294 int validIntForPhone(const char * arg){
     /* [<][>][^][v][top][bottom][index][help] */
5295    /* Checks if the integer is valid  as a phone no (should not contain '+' or '-')*/
5296    if((strchr(arg,'+') == NULL) && (strchr(arg,'-') == NULL)){
5297        return 1;
5298    }
5299    return 0;
5300 }
5301 

/* [<][>][^][v][top][bottom][index][help] */