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

#define yy_create_buffer rpsl_create_buffer
#define yy_delete_buffer rpsl_delete_buffer
#define yy_scan_buffer rpsl_scan_buffer
#define yy_scan_string rpsl_scan_string
#define yy_scan_bytes rpsl_scan_bytes
#define yy_flex_debug rpsl_flex_debug
#define yy_init_buffer rpsl_init_buffer
#define yy_flush_buffer rpsl_flush_buffer
#define yy_load_buffer_state rpsl_load_buffer_state
#define yy_switch_to_buffer rpsl_switch_to_buffer
#define yyin rpslin
#define yyleng rpslleng
#define yylex rpsllex
#define yyout rpslout
#define yyrestart rpslrestart
#define yytext rpsltext
#define yywrap rpslwrap

/* A lexical scanner generated by flex */

/* Scanner skeleton version:
 * $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 $
 */

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5

#include <stdio.h>


/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifndef __cplusplus
#define __cplusplus
#endif
#endif


#ifdef __cplusplus

#include <stdlib.h>
#include <unistd.h>

/* Use prototypes in function declarations. */
#define YY_USE_PROTOS

/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST

#else   /* ! __cplusplus */

#if __STDC__

#define YY_USE_PROTOS
#define YY_USE_CONST

#endif  /* __STDC__ */
#endif  /* ! __cplusplus */

#ifdef __TURBOC__
 #pragma warn -rch
 #pragma warn -use
#include <io.h>
#include <stdlib.h>
#define YY_USE_CONST
#define YY_USE_PROTOS
#endif

#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif


#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
/* [<][>][^][v][top][bottom][index][help] */
#else
#define YY_PROTO(proto) ()
/* [<][>][^][v][top][bottom][index][help] */
#endif

/* Returned upon end-of-file. */
#define YY_NULL 0

/* Promotes a possibly negative, possibly signed char to an unsigned
 * integer for use as an array index.  If the signed char is negative,
 * we want to instead treat it as an 8-bit unsigned char, hence the
 * double cast.
 */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
/* [<][>][^][v][top][bottom][index][help] */

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN yy_start = 1 + 2 *

/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START ((yy_start - 1) / 2)
#define YYSTATE YY_START

/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* [<][>][^][v][top][bottom][index][help] */

/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart( yyin )

#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#define YY_BUF_SIZE 16384

typedef struct yy_buffer_state *YY_BUFFER_STATE;

extern int yyleng;
extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2

/* The funky do-while in the following #define is used to turn the definition
 * int a single C statement (which needs a semi-colon terminator).  This
 * avoids problems with code like:
 *
 *      if ( condition_holds )
 *              yyless( 5 );
 *      else
 *              do_something_else();
 *
 * Prior to using the do-while the compiler would get upset at the
 * "else" because it interpreted the "if" statement as being all
 * done when it reached the ';' after the yyless() call.
 */

/* Return all but the first 'n' matched characters back to the input stream. */

#define yyless(n) \
/* [<][>][^][v][top][bottom][index][help] */
        do \
                { \
                /* Undo effects of setting up yytext. */ \
                *yy_cp = yy_hold_char; \
                YY_RESTORE_YY_MORE_OFFSET \
                yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                } \
        while ( 0 )

#define unput(c) yyunput( c, yytext_ptr )
/* [<][>][^][v][top][bottom][index][help] */

/* The following is because we cannot portably get our hands on size_t
 * (without autoconf's help, which isn't available because we want
 * flex-generated scanners to compile on their own).
 */
typedef unsigned int yy_size_t;


struct yy_buffer_state
        {
        FILE *yy_input_file;

        char *yy_ch_buf;                /* input buffer */
        char *yy_buf_pos;               /* current position in input buffer */

        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
        yy_size_t yy_buf_size;

        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
        int yy_n_chars;

        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
         * delete it.
         */
        int yy_is_our_buffer;

        /* Whether this is an "interactive" input source; if so, and
         * if we're using stdio for input, then we want to use getc()
         * instead of fread(), to make sure we stop fetching input after
         * each newline.
         */
        int yy_is_interactive;

        /* Whether we're considered to be at the beginning of a line.
         * If so, '^' rules will be active on the next match, otherwise
         * not.
         */
        int yy_at_bol;

        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
        int yy_fill_buffer;

        int yy_buffer_status;
#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
        /* When an EOF's been seen but there's still some text to process
         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
         * shouldn't try reading from the input source any more.  We might
         * still have a bunch of tokens to match, though, because of
         * possible backing-up.
         *
         * When we actually see the EOF, we change the status to "new"
         * (via yyrestart()), so that the user can continue scanning by
         * just pointing yyin at a new input file.
         */
#define YY_BUFFER_EOF_PENDING 2
        };

static YY_BUFFER_STATE yy_current_buffer = 0;

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 */
#define YY_CURRENT_BUFFER yy_current_buffer


/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;

static int yy_n_chars;          /* number of characters read into yy_ch_buf */


int yyleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 1;         /* whether we need to initialize */
static int yy_start = 0;        /* start state number */

/* Flag which is used to allow yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void yyrestart YY_PROTO(( FILE *input_file ));

void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
void yy_load_buffer_state YY_PROTO(( void ));
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )

YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));

static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
static void yy_flex_free YY_PROTO(( void * ));

#define yy_new_buffer yy_create_buffer

#define yy_set_interactive(is_interactive) \
/* [<][>][^][v][top][bottom][index][help] */
        { \
        if ( ! yy_current_buffer ) \
                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
        yy_current_buffer->yy_is_interactive = is_interactive; \
        }

#define yy_set_bol(at_bol) \
/* [<][>][^][v][top][bottom][index][help] */
        { \
        if ( ! yy_current_buffer ) \
                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
        yy_current_buffer->yy_at_bol = at_bol; \
        }

#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
/* [<][>][^][v][top][bottom][index][help] */


#define YY_USES_REJECT
typedef unsigned char YY_CHAR;
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
typedef int yy_state_type;
extern char *yytext;
#define yytext_ptr yytext

static yy_state_type yy_get_previous_state YY_PROTO(( void ));
static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
static int yy_get_next_buffer YY_PROTO(( void ));
static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
        yytext_ptr = yy_bp; \
        yyleng = (int) (yy_cp - yy_bp); \
        yy_hold_char = *yy_cp; \
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;

#define YY_NUM_RULES 60
#define YY_END_OF_BUFFER 61
static yyconst short int yy_acclist[736] =
    {   0,
       61,    4,   60,   60,    3,    4,   60,    4,   60,    2,
       60,    4,   60,   58,   59,   60,   49,   60,   48,   59,
       60,   59,   60,   47,   60,   11,   47,   60,   10,   60,
       47,   60,   12,   47,   60,   47,   60,   46,   47,   60,
       46,   47,   60,   46,   47,   60,   47,   60,   13,   60,
       11,   13,   60,   12,   13,   60,   14,   60,   11,   60,
       12,   14,   60,   40,   60,   11,   40,   60,   10,   60,
       20,   40,   60,   12,   40,   60,   40,   60,   40,   60,
       40,   60,   40,   60,   40,   60,   17,   40,   60,   40,
       60,   36,   40,   60,   36,   40,   60,   40,   60,   36,

       40,   60,   36,   40,   60,   36,   40,   60,   36,   40,
       60,   36,   40,   60,    7,   60,    6,   60,    7,   60,
        5,    6,   60,   40,   60,   17,   40,   60,   40,   60,
        3,    2,    1,   58,   57,   50,   51,   57,   51,   57,
       55,   57,   56,   57,   52,   57,   54,   57,   53,   57,
       11,    9,    9,    8,   46,   12,   13,   11,   13,   12,
       13,   14,   12,   14,    9,    8,   12,   12,   12,   17,
       17,   19,   17,   36,   26,   36,   26,   36,   36,   26,
       36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
       36,   26,   36,   26,   36,   26,   36,   26,   36,    7,

        7,    5,   17,   42,   41,   43,   50,   51,   51,   10,
       12,   12,   12,   12,   19,   38,   19,   38,   19,   19,
       38,   38,   17,   18,   36,   37,   38,   36,   36,   26,
       26,   36,   26,   36,   26,   36,   26,   36,   26,   36,
       26,   36,   26,   26,   27,   36,   26,   36,   26,   36,
       26,   36,   26,   36,   26,   36,   26,   36,   26,   26,
       36,   26,   36,   45,   17,   50,   51,   12,   12,   12,
       12,   38,   19,   19,   19,   38,   38,   38,   17,   18,
       23,   23,   38,   37,   38,   37,   38,   36,   36,   26,
       36,   26,   36,   26,   36,   26,   36,   26,   36,   26,

       36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
       36,   26,   28,   36,   26,   28,   36,   26,   27,   36,
       26,   36,   26,   36,   26,   36,   26,   36,   26,   26,
       36,   26,   29,   36,   26,   29,   36,   26,   36,   26,
       33,   36,   17,   44,   39,   39,   12,   39,   12,   39,
       19,   38,   19,   38,   19,   19,   19,   38,   38,   19,
       38,   38,   19,   38,   17,   18,   23,   23,   23,   37,
       38,   37,   38,   37,   38,   37,   38,   36,   26,   36,
       26,   36,   26,   36,   26,   36,   26,   27,   36,   26,
       26,   34,   36,   26,   26,   36,   36,   26,   36,   26,

       26,   17,   12,   19,   19,   38,   38,   19,   38,   38,
       19,   38,   17,   18,   37,   38,   37,   38,   36,   26,
       36,   26,   36,   26,   36,   26,   36,   26,   27,   36,
       26,   36,   26,   32,   36,   26,   32,   36,   26,   36,
       36,   26,   36,   26,   31,   36,   26,   31,   36,   26,
       30,   36,   26,   30,   36,   17,   39,   39,   39,   12,
       39,   19,   19,   21,   38,   38,   38,   19,   38,   38,
       19,   38,   17,   18,   37,   38,   37,   38,   36,   26,
       36,   26,   36,   26,   36,   26,   36,   26,   27,   36,
       36,   36,   26,   36,   17,   12,   19,   19,   21,   38,

       38,   38,   19,   38,   38,   19,   38,   17,   37,   38,
       37,   38,   36,   26,   36,   26,   36,   26,   36,   26,
       36,   28,   26,   27,   36,   28,   29,   26,   36,   36,
       26,   36,   29,   17,   39,   39,   12,   39,   19,   19,
       38,   24,   21,   38,   38,   19,   38,   38,   19,   38,
       17,   37,   38,   37,   38,   36,   26,   36,   26,   36,
       26,   36,   28,   27,   36,   26,   36,   36,   26,   36,
       29,   19,   19,   38,   24,   21,   38,   38,   19,   38,
       38,   19,   38,   17,   37,   38,   37,   38,   36,   26,
       36,   26,   36,   27,   36,   32,   31,   30,   26,   36,

       32,   36,   26,   36,   31,   30,   39,   19,   19,   38,
       24,   25,   25,   21,   38,   38,   19,   38,   38,   19,
       38,   17,   37,   38,   37,   38,   36,   26,   36,   28,
       27,   36,   36,   26,   36,   29,   19,   19,   38,   24,
       21,   38,   38,   19,   38,   38,   19,   38,   17,   37,
       38,   37,   38,   36,   26,   36,   27,   36,   35,   36,
       26,   35,   36,   16,   16,   19,   16,   16,   19,   16,
       16,   16,   16,   38,   16,   16,   24,   25,   16,   16,
       21,   38,   16,   16,   38,   16,   16,   19,   38,   16,
       38,   16,   19,   38,   16,   16,   17,   16,   16,   37,

       38,   16,   37,   38,   16,   16,   36,   16,   26,   36,
       16,   27,   36,   32,   32,   31,   31,   30,   30,   19,
       24,   21,   38,   38,   19,   38,   17,   27,   36,   22,
       22,   22,   22,   22,   15
    } ;

static yyconst short int yy_accept[829] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    2,    4,    5,
        8,   10,   12,   14,   17,   19,   22,   24,   26,   29,
       31,   33,   36,   38,   41,   44,   47,   49,   51,   54,
       57,   59,   61,   64,   66,   69,   71,   74,   77,   79,
       81,   83,   85,   87,   90,   92,   95,   98,  100,  103,
      106,  109,  112,  115,  117,  119,  121,  124,  126,  129,
      131,  132,  132,  133,  133,  133,  134,  135,  136,  139,
      141,  143,  145,  147,  149,  151,  152,  153,  154,  155,
      156,  157,  157,  157,  158,  160,  162,  163,  165,  165,

      165,  165,  166,  167,  167,  168,  169,  170,  170,  171,
      171,  171,  172,  172,  173,  173,  173,  173,  174,  174,
      174,  174,  174,  174,  174,  175,  175,  177,  179,  180,
      180,  182,  184,  186,  188,  190,  192,  194,  196,  198,
      200,  201,  202,  203,  203,  204,  205,  206,  207,  209,
      210,  210,  211,  211,  211,  211,  211,  211,  212,  213,
      214,  215,  216,  217,  219,  219,  219,  220,  220,  220,
      220,  220,  222,  223,  223,  224,  224,  224,  225,  225,
      225,  225,  225,  226,  228,  228,  229,  230,  231,  233,
      235,  237,  239,  241,  243,  244,  247,  249,  251,  253,

      255,  257,  259,  260,  262,  264,  265,  266,  266,  268,
      268,  268,  268,  268,  268,  269,  270,  271,  272,  272,
      273,  273,  273,  274,  274,  274,  274,  275,  275,  275,
      275,  275,  277,  278,  279,  279,  279,  280,  280,  280,
      281,  281,  281,  282,  283,  283,  283,  283,  284,  286,
      288,  288,  289,  290,  292,  294,  296,  298,  300,  302,
      304,  306,  308,  310,  312,  313,  315,  318,  321,  321,
      323,  325,  327,  329,  330,  332,  333,  335,  338,  340,
      343,  344,  345,  346,  347,  347,  347,  349,  351,  351,
      352,  353,  355,  355,  356,  357,  357,  358,  358,  358,

      358,  359,  360,  360,  362,  363,  363,  365,  365,  366,
      366,  367,  367,  367,  368,  369,  370,  370,  370,  372,
      374,  376,  378,  378,  379,  381,  383,  385,  387,  387,
      387,  390,  390,  390,  390,  390,  391,  394,  395,  397,
      398,  400,  401,  401,  401,  402,  403,  403,  403,  403,
      404,  404,  405,  405,  406,  406,  406,  406,  406,  407,
      408,  408,  408,  410,  411,  413,  413,  414,  414,  414,
      415,  415,  415,  415,  415,  415,  415,  417,  419,  419,
      420,  422,  424,  426,  428,  428,  428,  431,  431,  431,
      431,  431,  431,  431,  433,  434,  436,  439,  441,  442,

      444,  445,  447,  450,  450,  450,  450,  451,  453,  456,
      457,  458,  459,  460,  462,  462,  463,  463,  464,  464,
      464,  464,  466,  467,  467,  468,  468,  468,  470,  471,
      473,  473,  474,  474,  475,  475,  475,  475,  475,  477,
      479,  479,  480,  482,  484,  486,  488,  488,  488,  491,
      491,  491,  491,  491,  491,  491,  491,  492,  492,  492,
      493,  495,  495,  495,  495,  495,  495,  495,  495,  496,
      496,  496,  497,  497,  498,  498,  499,  499,  499,  499,
      499,  499,  501,  502,  502,  503,  503,  505,  506,  508,
      508,  509,  509,  509,  509,  509,  509,  509,  509,  511,

      513,  513,  514,  516,  518,  520,  522,  522,  523,  523,
      526,  526,  527,  527,  527,  527,  527,  528,  528,  530,
      530,  530,  530,  531,  533,  533,  533,  534,  534,  534,
      534,  534,  534,  535,  536,  537,  539,  539,  540,  540,
      541,  541,  541,  541,  542,  543,  543,  543,  545,  545,
      546,  546,  548,  549,  551,  551,  551,  552,  552,  552,
      552,  552,  552,  554,  556,  556,  557,  559,  561,  563,
      563,  564,  564,  566,  566,  566,  566,  566,  568,  568,
      568,  568,  569,  571,  571,  571,  571,  571,  571,  572,
      572,  572,  572,  572,  572,  573,  573,  574,  574,  574,

      574,  574,  575,  576,  576,  576,  578,  578,  579,  579,
      581,  582,  584,  584,  584,  585,  585,  585,  585,  585,
      585,  585,  585,  587,  589,  589,  590,  592,  594,  594,
      596,  596,  597,  597,  597,  598,  598,  599,  601,  602,
      602,  602,  603,  605,  606,  606,  606,  606,  607,  607,
      607,  608,  608,  609,  609,  610,  610,  610,  610,  611,
      611,  612,  613,  614,  614,  616,  616,  617,  617,  619,
      620,  622,  622,  622,  623,  623,  623,  623,  623,  623,
      625,  627,  627,  628,  630,  631,  633,  633,  633,  634,
      636,  636,  636,  637,  637,  637,  637,  638,  638,  639,

      639,  639,  639,  639,  640,  641,  641,  641,  643,  643,
      644,  644,  646,  647,  649,  649,  649,  650,  650,  650,
      650,  650,  650,  650,  650,  652,  654,  654,  655,  657,
      659,  659,  659,  661,  664,  664,  664,  664,  664,  665,
      667,  668,  670,  671,  672,  673,  675,  676,  678,  679,
      680,  683,  684,  686,  687,  690,  692,  695,  695,  696,
      698,  699,  699,  699,  699,  699,  702,  705,  706,  708,
      711,  714,  714,  715,  716,  717,  717,  718,  719,  719,
      720,  721,  722,  722,  724,  724,  725,  725,  727,  727,
      727,  728,  728,  728,  728,  728,  728,  728,  730,  730,

      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
      730,  731,  732,  732,  732,  732,  733,  734,  735,  735,
      735,  735,  735,  735,  735,  735,  736,  736
    } ;

static yyconst int yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    5,    6,    7,    1,    1,    1,    1,    8,
        9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
       19,   19,   19,   19,   19,   20,   21,   22,   12,   23,
       24,   25,    1,   26,   35,   36,   37,   37,   38,   39,
       40,   41,   41,   41,   41,   42,   41,   43,   44,   45,
       41,   46,   47,   48,   49,   41,   41,   41,   41,   41,
       29,   30,   31,   32,   33,   34,   35,   36,   37,   37,

       38,   39,   40,   41,   41,   41,   41,   42,   41,   43,
       44,   45,   41,   46,   47,   48,   49,   41,   41,   41,
       41,   41,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1
    } ;

static yyconst int yy_meta[50] =
    {   0,
        1,    2,    3,    4,    1,    5,    1,    6,    6,    1,
        7,    6,    8,    9,   10,   11,   11,   11,   11,   11,
       11,   12,    6,    1,    6,   13,   14,   15,    6,    5,
        6,    1,   16,    1,   14,   14,   14,   17,   14,   15,
       15,   15,   15,   15,   15,   15,   15,   15,   15
    } ;

static yyconst short int yy_base[988] =
    {   0,
        0,    6,    8,    9,   54,   82,   14,   20,   28,   68,
      111,    0, 1916,    2,  147,  166, 1889,11232,11232,    0,
       78,11232,    7,    0,11232,11232,  183,11232,   24,   97,
     1864,    0, 1878,   13, 1862,   49, 1829,    0,   96,    0,
        0,  167,  168,   62,  171,  204,    0,  230,11232,  248,
      274,  172,  323,  357, 1837,  406,  440,  229,  127,   67,
      167,  130, 1812,    0,11232,  192,11232,  324,  452,  469,
        0,  221,11232,  250,  326,11232,    0,11232,  475,  481,
    11232,11232,11232,11232,11232,  208,  301,11232,11232,11232,
        0, 1830, 1818,    0,  212,    0,    0,  233,   77, 1815,

      502,  183,  214, 1832,  550,  580,  611,  645,    0,  549,
      671,    0,    0,  719,  757,  791,  825,  874,  908,  934,
      941, 1822,  980, 1014, 1063,  579, 1112, 1146, 1170,  708,
      728, 1787, 1791, 1783, 1768, 1760, 1761, 1790, 1756, 1741,
        0,  348,11232, 1773,  734,  244,  339,  260,  756,  790,
      384,11232,  340, 1209,  920, 1772, 1758, 1257, 1288,  953,
     1768, 1336,  982,  728,    0,  323, 1373, 1410, 1431, 1465,
     1499, 1533, 1581,  783, 1619, 1655, 1662, 1686, 1158, 1757,
     1182,  205, 1725, 1759, 1780, 1829, 1863, 1890, 1939, 1988,
     2022,    0,    0, 2046, 2085, 1256, 1724, 1703, 1702, 1691,

     1720, 1691, 2134, 1665, 1673,    0, 1325, 2173, 1347, 1362,
     1696, 2194, 2228, 1379, 1387, 1682, 2262, 1399, 2310, 2347,
        0,  666, 2367, 2404,  782, 1430,  816, 2425, 2459, 2493,
     2527, 2575, 1466, 2612, 1498, 1006, 2633, 2669, 1666, 2676,
     1665, 1570, 1587, 1593,  393,    0, 2715, 2764, 2798, 2832,
     2866, 2915, 2949, 2983, 3032, 1674, 1698, 1725, 1759, 1779,
     1793, 1875, 1889, 1664, 3081, 3118,  264, 1896, 1582, 3155,
      238, 1672,  401, 3164, 1635, 3203, 3240,  396, 1631, 1618,
     2034, 3276, 3302, 3336, 1601, 2058, 3370, 2194, 3406, 3419,
     3445,    0,    0, 2299, 3493, 3530, 1005, 3551, 3585, 3619,

     3653, 2318, 1582, 3701, 3738, 2326, 1347, 1457, 3759, 3795,
     3802, 2336, 1572,11232, 2356, 1353,  459,  489, 3841,    0,
     3875, 3909, 3943, 3992, 4026, 2373, 2379, 2393,  415,  479,
     2424, 1546, 1550,  487,  249, 2460, 2492, 4075, 2564, 4124,
     4158, 4197, 4234,  648, 4283, 2581, 2589,    0, 2601, 2688,
        0, 4331, 4368, 1456, 4389, 4423, 4457, 4491, 2766, 2800,
     2832, 2915, 4539, 4576, 1490, 1525, 4597, 2949, 4633, 3117,
     1536, 1534, 1523,  556,  586,    0, 4655, 4689, 4723, 4772,
     4806, 3125, 3176, 3239, 1481, 1488, 3247, 3302, 1476, 1482,
     1468, 1494, 1459, 4855,    0, 4892,  563, 3482, 4926, 4950,

        0, 4977,  653, 1449, 1455, 1430,    0, 5014,  747, 3499,
     3507, 1429, 1425, 3519,    0, 5062, 5099, 1750, 5120, 5154,
     5188, 5222, 3551,  317, 5258, 3586, 1421, 5278, 5315, 2219,
     1751, 5336, 5372, 3618, 1402, 1388,  658,  741, 5394, 5428,
     5462, 5511, 5545, 3690, 3707, 3713, 3814, 1323, 3841,  208,
     3875, 1301, 1239, 1241,  451, 1223, 5568,  766,  777, 5602,
     5626,  833,  698, 3727, 1230, 1254,  834,  768, 3909, 3994,
     4170, 4234,    0, 5664, 5701, 2223, 5722, 5756, 5790, 5824,
     4240, 5858, 5907,  451, 4320, 4339, 5940, 5977, 2450, 2451,
     5998, 6046, 1240, 1218, 1212,  861,  882,    0, 6068, 6102,

     6123, 6172, 6206,    0, 4345, 4357,  574, 4388, 1175, 4422,
      689,  953, 1204, 1161, 1181,  746, 1182, 1167, 6229, 1125,
     1129, 1132, 6263, 6287, 1122,  840, 4456, 1097,  786, 1094,
     1099, 1076,  278, 4528, 1106, 4545,    0, 6325, 6362, 2484,
     6383, 6417, 6451, 6485, 6506, 6538, 1086, 6559,  517, 4553,
     4565, 6579, 6616, 2518,  378, 2519, 6637, 6673, 1094, 1072,
      927,  967, 6695, 6729, 6737, 6786, 6820,    0, 4655,  821,
     1326, 1053, 6869,  951, 1028, 1010, 1032, 6892, 4689, 1023,
     1031, 6926, 6950, 4772, 1029,  996, 1002, 1059, 1400, 4891,
      998,  980, 4899,    0, 6988, 7025, 2789, 7046, 7080, 7114,

     7148, 7182, 4962, 7206, 4938, 4985, 5021, 5051, 5070, 7231,
     7268, 2823, 5013, 2790, 7289, 7325, 1000,  989,  983, 1071,
     1099,    0, 7347, 7381, 7402, 7451, 7485,    0,  950, 7534,
     1180, 1440,  970, 1198, 1508, 1205, 1734, 7568, 5076,  942,
      919, 7592, 7616, 5119,  887,  865,  856, 5153,  853,  835,
      866,    0, 7654, 7691, 2857, 7712, 7746, 7780, 7814, 7848,
     7869, 1411, 7889,  818, 7902,  546, 5088, 5187, 7922, 7959,
     2940,  815, 2858, 7980, 8016,  811,  809, 1120, 1217, 8038,
     8072, 8080, 8129, 8163,  778, 8212,  769,  743, 8246, 8270,
      730,  721,  709,  661,  672,    0, 8308, 8345, 2974, 8366,

     8400, 8434, 8468, 8502, 5268, 5288, 5294, 5395, 5304, 5430,
     5513, 8535, 8572, 3297, 5581, 2941, 8593, 8629,  647,  582,
      571, 1387, 1459,    0, 8651, 8685, 8706, 8755, 8789, 8838,
     1251,  543, 8872,    0,  527, 1475,  480, 1509,11232,  553,
     3327, 5614, 5638, 8899, 1426, 8920, 8954, 8976, 5654,  478,
     8995,  686, 5672, 5678, 9015, 9052, 3331, 5690, 3577, 9073,
     9109,  441,  413, 1540, 1601, 9131, 9165, 9173,    0,    0,
     5721, 1551, 2058,  409,  390, 1637, 2174,  347, 1696, 2228,
     1452,    0,  331,    0,  917, 5757, 5789,    0,  324, 5824,
        0,  313,  307,  277, 1603, 1627,    0, 5907, 5929,  235,

      239, 1712,  202, 5946,  159, 5952,  147, 1766,   95,  504,
     5966, 6035,   79,   51, 3440,11232, 6068, 1368,   48,   45,
     6102, 6122,    3, 6128, 6136,11232,11232, 9222, 9239, 9256,
     9273, 9290, 9307, 9324, 9334, 9351, 9368, 9385, 9402, 9419,
     9436, 9453, 9470, 9487, 9504, 9513, 9530, 9547, 9564, 9581,
     9590, 9607, 9624, 9632, 9649, 9666, 9675, 9692, 9709, 9717,
     9734, 9751, 9761, 9770, 9786, 9797, 9814, 9821, 9829, 9836,
     9853, 9870, 9887, 9904, 9921, 9931, 9948, 9957, 9974, 9991,
     9998,10006,10014,10031,10048,10058,10067,10084,10101,10108,
    10115,10123,10130,10147,10164,10173,10190,10207,10214,10221,

    10229,10237,10254,10271,10281,10291,10300,10317,10334,10351,
    10358,10365,10373,10380,10397,10414,10424,10434,10443,10460,
    10477,10494,10510,10511,10518,10526,10534,10551,10568,10578,
    10588,10598,10607,10624,10641,10658,10675,10682,10689,10697,
    10704,10721,10738,10747,10764,10781,10798,10805,10812,10820,
    10828,10845,10862,10871,10888,10905,10922,10929,10936,10944,
    10951,10968,10985,10995,11005,11015,11031,11047,11058,11075,
    11082,11089,11097,11105,11122,11129,11136,11144,11151,11158,
    11166,11174,11182,11190,11198,11206,11214
    } ;

static yyconst short int yy_def[988] =
    {   0,
      828,  828,  829,  829,  830,  830,  831,  831,  832,  832,
      827,   11,  833,  833,   11,   11,  827,  827,  827,  834,
      827,  827,  835,  836,  827,  827,  837,  827,  827,  827,
      827,  838,  827,  827,  827,  827,  827,  839,  839,  840,
      841,  827,  842,  843,  827,  843,  844,  845,  827,  843,
      827,  846,  847,  827,  827,  827,   56,   51,   56,   56,
       57,   57,   57,  848,  827,  848,  827,  846,   54,   50,
      834,  827,  827,  835,  835,  827,  836,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      838,  827,  827,  839,  839,  840,  841,  842,  843,  849,

      827,  843,  843,  844,  845,  850,  827,  849,   50,   51,
      827,   51,  851,  851,  852,  853,  827,  827,  827,  118,
      120,  854,  855,  827,  827,  119,  827,  127,  125,  111,
      128,  128,  127,  128,  128,  128,  128,  128,  128,  128,
      856,  856,  827,  851,  118,  843,  843,   70,  827,  827,
      827,  827,  849,  827,  101,  101,  827,  850,  827,  107,
      107,  849,  111,  111,  857,  827,  857,  857,  858,  858,
      859,  827,  172,  172,  827,  175,  176,  827,  178,  173,
      827,  860,  855,  861,  173,  827,  186,  183,  827,  827,
      190,  190,  191,  189,  827,  194,  191,  191,  191,  191,

      191,  191,  827,  191,  191,  857,  175,   70,  827,  154,
      154,  862,  862,  863,  159,  159,  827,  217,  162,  111,
      864,  865,  864,  864,  865,  827,  224,  866,  866,  867,
      827,  231,  231,  231,  231,  232,  827,  237,  238,  827,
      868,  240,  827,  827,  869,  870,  827,  871,  872,  872,
      827,  873,  873,  827,  827,  255,  255,  255,  255,  255,
      255,  255,  255,  255,  827,  265,  265,  255,  827,  255,
      270,  270,  270,  254,  270,  827,  276,  276,  270,  270,
      237,  874,  875,  875,  876,  876,  827,  287,  877,  877,
      827,  291,  878,  827,  878,  878,  296,  879,  879,  880,

      827,  301,  301,  301,  301,  301,  305,  304,  827,  309,
      827,  311,  881,  827,  827,  827,  882,  883,  871,  319,
      884,  884,  827,  885,  827,  325,  325,  325,  266,  827,
      325,  827,  827,  827,  827,  254,  325,  827,  325,  827,
      254,  827,  276,  827,  827,  309,  284,  886,  886,  287,
      887,  887,  887,  353,  888,  888,  889,  827,  358,  358,
      358,  358,  358,  358,  364,  363,  827,  827,  367,  827,
      827,  890,  891,  827,  892,  893,  894,  894,  827,  895,
      827,  381,  381,  381,  827,  827,  381,  827,  827,  827,
      827,  827,  827,  827,  338,  338,  338,  381,  340,  254,

      342,  342,  342,  827,  827,  827,  345,  345,  345,  367,
      284,  886,  349,  287,  896,  896,  896,  417,  897,  897,
      898,  827,  422,  422,  422,  425,  425,  425,  425,  429,
      428,  827,  432,  827,  899,  900,  901,  902,  903,  903,
      827,  904,  827,  443,  443,  443,  827,  827,  443,  905,
      827,  827,  827,  827,  906,  827,  394,  396,  827,  340,
      254,  402,  827,  827,  827,  827,  408,  827,  432,  284,
      349,  287,  907,  907,  907,  475,  908,  908,  909,  910,
      478,  827,  910,  482,  483,  483,  483,  483,  488,  487,
      827,  491,  827,  911,  912,  827,  913,  914,  915,  915,

      483,  916,  827,  503,  503,  503,  917,  827,  827,  503,
      905,  905,  827,  827,  827,  906,  906,  827,  457,  827,
      827,  827,  340,  254,  827,  827,  827,  827,  918,  827,
      827,  827,  491,  284,  471,  287,  919,  919,  919,  539,
      920,  920,  921,  922,  542,  922,  545,  546,  548,  546,
      546,  546,  546,  553,  923,  552,  827,  557,  924,  925,
      926,  927,  928,  928,  546,  929,  827,  567,  567,  917,
      917,  827,  827,  930,  827,  931,  932,  457,  827,  827,
      827,  340,  254,  827,  827,  827,  827,  918,  918,  827,
      827,  827,  471,  933,  933,  933,  596,  934,  934,  935,

      936,  936,  599,  937,  599,  602,  602,  602,  602,  602,
      602,  611,  827,  610,  827,  615,  827,  938,  939,  827,
      940,  941,  942,  942,  602,  943,  827,  627,  827,  827,
      930,  930,  827,  931,  931,  932,  932,  340,  827,  827,
      827,  340,  254,  827,  827,  827,  827,  827,  827,  827,
      593,  944,  944,  944,  654,  945,  945,  946,  947,  947,
      657,  937,  937,  661,  660,  665,  660,  660,  660,  660,
      670,  827,  669,  827,  674,  948,  949,  950,  951,  952,
      952,  660,  953,  827,  827,  827,  827,  827,  340,  254,
      827,  827,  827,  827,  827,  954,  954,  954,  698,  955,

      955,  956,  957,  957,  701,  663,  701,  704,  704,  704,
      704,  704,  704,  713,  827,  712,  827,  717,  827,  958,
      959,  827,  960,  961,  962,  962,  704,  963,  827,  827,
      964,  827,  340,  254,  827,  965,  827,  966,  827,  967,
      968,  827,  663,  663,  969,  970,  970,  663,  663,  748,
      747,  751,  747,  747,  747,  747,  756,  827,  755,  827,
      760,  971,  972,  973,  974,  975,  975,  747,  733,  254,
      733,  964,  964,  827,  827,  965,  965,  827,  966,  966,
      967,  748,  748,  751,  751,  747,  747,  755,  827,  747,
      760,  827,  976,  977,  827,  978,  979,  733,  827,  980,

      981,  982,  983,  827,  827,  827,  984,  827,  985,  827,
      827,  827,  986,  987,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,    0,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,

      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827
    } ;

static yyconst short int yy_nxt[11282] =
    {   0,
      827,  827,   19,   66,   67,   66,   20,   21,   22,   21,
       25,   25,   20,   26,   26,   39,   30,   39,  827,   74,
       40,   39,   30,   39,  824,   86,   40,   86,   76,   42,
       30,   42,   23,   23,   43,   92,   90,   27,   27,   74,
       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
       23,   23,   23,   23,   23,   29,   30,   29,   31,  181,
       32,   33,  806,   31,   31,  181,   31,   31,   31,   42,
       30,   42,   90,   93,   43,  100,   34,   35,   36,   72,
       73,   72,   37,   29,   30,   29,   31,  101,   32,   33,
      100,   31,   31,  806,   31,   31,   31,   95,   87,   95,

       87,  133,  101,   88,   34,   35,   36,   89,  134,  181,
       37,   44,   45,   46,   45,   44,   47,   48,   49,   49,
       44,   50,   49,   51,   52,   53,   54,   54,   54,   54,
       54,   54,   55,   49,   44,   49,   44,   56,   57,   49,
       49,   49,   44,   58,   44,   59,   56,   56,   56,   60,
       57,   57,   57,   57,   57,   61,   62,   57,   63,   57,
       68,  806,   69,   69,   69,   69,   69,   69,   86,   91,
       86,   91,   86,  131,   86,  132,  138,  139,   70,   68,
      794,   69,   69,   69,   69,   69,   69,  114,  114,  114,
      114,  114,  114,  142,  143,  142,  100,   70,   79,   79,

       79,   79,   80,   80,  135,   87,  136,   87,  101,   86,
      102,   86,  137,   95,  103,   95,  181,  100,   81,  181,
      511,   82,   72,   73,   72,   83,  246,  100,   84,  101,
       85,   91,   99,   91,   91,   91,   91,   91,   91,  101,
      511,   91,  130,  106,  110,  110,  110,  110,  110,  110,
      188,   91,   91,  806,   91,  107,  794,  100,   91,   91,
       91,  108,   74,  109,  109,  109,  109,  109,  109,  101,
       99,  827,  208,  101,   99,  337,   99,  247,   99,  827,
       99,  827,   74,   99,   99,  330,  110,  111,   99,  112,
      112,  112,  112,  112,  112,  392,  393,   99,  122,  101,

      110,  110,  151,  152,  151,   99,  110,   99,  110,  110,
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
      110,  110,  110,   99,  166,   99,  166,   99,  794,   99,
      473,  478,   99,   99,  721,   99,  115,  144,   74,  114,
      114,  114,  114,  114,  114,  799,   99,   76,  101,  142,
      143,  142,  100,  100,   99,   99,   99,   99,   74,   99,
      222,   99,  153,   99,  101,  154,   99,   99,  468,  110,
      117,  116,  118,  118,  118,  118,  118,  118,  119,  555,
       99,  555,  101,  120,  121,  151,  152,  151,   99,  110,
       99,  120,  120,  120,  120,  120,  121,  121,  121,  121,

      121,  121,  121,  121,  121,  121,   99,  181,   99,  247,
       99,  463,   99,  188,  246,   99,   99,  344,  123,  124,
      116,  125,  125,  125,  125,  125,  125,  126,  130,   99,
      459,  101,  127,  128,  794,  339,  827,   99,  123,   99,
      127,  127,  127,  127,  127,  128,  128,  128,  128,  128,
      128,  128,  128,  128,  128,  129,  129,  129,  129,  129,
      129,  827,  721,  516,  537,  541,  128,  145,  145,  145,
      145,  145,  145,  181,  128,  128,  128,  128,  128,  146,
      246,  147,  100,  516,  148,  148,  148,  148,  148,  148,
      149,  149,  149,  149,  150,  150,  150,  150,  150,  150,

      150,  150,   99,  181,   99,  815,   99,  815,   99,  153,
      376,   99,   99,  385,  155,  100,   99,  156,  156,  156,
      156,  156,  156,  386,  390,   99,  778,  101,  155,  155,
      594,  599,  391,   99,  155,   99,  155,  155,  155,  155,
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
      155,   91,   99,   91,  166,   91,  166,   91,   91,  696,
      701,   91,  130,  106,  110,  110,  110,  110,  110,  110,
      181,   91,   91,  775,   91,  107,  247,  246,   91,   91,
       91,   91,  153,   91,  459,   91,  570,   91,   91,  774,
      222,   91,  122,   91,  179,  179,  179,  179,  179,  179,

      181,   91,   91,  721,   91,  159,  570,  376,   91,   91,
       91,  105,   91,   99,   91,  105,   91,  105,   91,   91,
      105,  105,   91,  160,  106,  105,  161,  161,  161,  161,
      161,  161,   91,   91,  105,   91,  107,  160,  160,   91,
       91,   91,  105,  160,  105,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      162,  162,  162,  162,  162,  162,  247,  225,  619,  225,
      154,  153,  181,  153,  463,  153,  226,  153,  226,  376,
      153,  153,  404,  163,  738,  153,  164,  164,  164,  164,
      164,  164,  405,  406,  153,  737,  154,  163,  163,  827,

      153,  511,  153,  163,  153,  163,  163,  163,  163,  163,
      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
      166,  511,  166,  163,  163,  163,  163,  163,  163,  166,
      344,  166,  525,  736,  167,  167,  167,  167,  167,  167,
      195,  130,  526,  196,  196,  196,  196,  196,  196,  207,
      207,  207,  207,  207,  207,  181,  168,  153,  516,  153,
      247,  153,  498,  153,  735,  220,  153,  153,  468,  153,
      165,  209,  209,  209,  209,  150,  150,  732,  516,  130,
      153,  731,  154,  225,  827,  225,  827,  827,  153,  153,
      153,   99,  226,   99,  226,   99,  221,   99,  588,  330,

       99,   99,  530,   99,  170,  150,  150,  150,  150,  150,
      150,  520,  531,  532,   99,  521,  101,  827,  588,  827,
      233,  522,   99,   99,   99,  153,  827,  153,  827,  153,
      721,  153,  619,  570,  153,  153,  715,  163,  165,  169,
      172,  172,  172,  172,  172,  172,  130,  130,  153,  153,
      154,  173,  173,  570,  827,  827,  153,  163,  153,  173,
      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
      173,  173,  173,  173,   99,  181,   99,  585,   99,  348,
       99,  695,  376,   99,   99,  586,  110,  174,  171,  175,
      175,  175,  175,  175,  175,  119,  181,   99,  694,  101,

      176,  177,  693,  498,  692,   99,  110,   99,  176,  176,
      176,  176,  176,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  178,  178,  178,  178,  178,  178,  122,
      827,  153,  691,  212,  179,  155,  155,  155,  155,  155,
      155,  181,  179,  179,  179,  179,  179,  180,  498,  176,
      176,  176,  176,  176,  176,  126,  177,  177,  177,  177,
      177,  177,  827,  631,  688,  511,  217,  177,  160,  160,
      160,  160,  160,  160,  330,  177,  177,  177,  177,  177,
       99,  181,   99,  631,   99,  511,   99,  687,  622,   99,
       99,  269,  123,  130,   99,  130,  685,  163,  163,  163,

      163,  163,  163,   99,  122,  101,  827,  827,  827,  827,
      619,   99,  123,   99,  153,  827,  153,  827,  153,  293,
      153,  495,  634,  153,  153,  650,  163,  165,  169,  173,
      173,  173,  173,  173,  173,  649,  647,  153,  646,  154,
      184,  184,  634,  302,  636,  153,  163,  153,  184,  184,
      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
      184,  184,  184,   99,  636,   99,  645,   99,  641,   99,
      640,  588,   99,   99,  633,  123,  185,  171,  186,  186,
      186,  186,  186,  186,  126,  181,   99,  629,  101,  186,
      187,  588,  498,  619,   99,  123,   99,  186,  186,  186,

      186,  186,  187,  187,  187,  187,  187,  187,  187,  187,
      187,  187,   99,  181,   99,  495,   99,  153,   99,  593,
      622,   99,   99,  592,  188,  185,  171,  189,  189,  189,
      189,  189,  189,  126,  181,   99,  591,  101,  190,  191,
      590,  622,  587,   99,  188,   99,  192,  192,  192,  192,
      192,  193,  193,  193,  193,  193,  193,  193,  193,  193,
      193,  194,  194,  194,  194,  194,  194,  827,  584,  581,
      580,  579,  191,  242,  242,  242,  242,  242,  242,  577,
      193,  193,  193,  193,  193,  187,  187,  187,  187,  187,
      187,  827,  631,  576,  516,  575,  187,  243,  244,  243,

      243,  243,  243,  344,  187,  187,  187,  187,  187,  153,
      634,  153,  631,  153,  516,  153,  574,  636,  153,  153,
      572,  210,  100,  153,  211,  211,  211,  211,  211,  211,
      634,  181,  153,  122,  154,  210,  210,  636,  724,  495,
      153,  210,  153,  210,  210,  210,  210,  210,  210,  210,
      210,  210,  210,  210,  210,  210,  210,  210,   91,  153,
       91,  373,   91,  772,   91,   91,  529,  528,   91,  518,
      106,  268,  268,  268,  268,  268,  268,  269,   91,   91,
      515,   91,  159,  772,  514,   91,   91,   91,  158,   91,
      153,   91,  158,   91,  158,   91,   91,  158,  158,   91,

      215,  106,  158,  216,  216,  216,  216,  216,  216,   91,
       91,  158,   91,  159,  215,  215,   91,   91,   91,  158,
      215,  158,  215,  215,  215,  215,  215,  215,  215,  215,
      215,  215,  215,  215,  215,  215,  215,  166,  570,  166,
      281,  281,  281,  281,  281,  281,  513,  330,  827,  100,
      827,  162,  162,  162,  162,  162,  162,  153,  570,  163,
      509,  154,  150,  150,  150,  150,  150,  150,  314,  314,
      314,  314,  314,  219,  166,  212,  166,  210,  210,  210,
      210,  210,  210,  816,  816,  816,  816,  816,  223,  223,
      223,  223,  223,  223,  286,  286,  286,  286,  286,  286,

      217,  181,  215,  215,  215,  215,  215,  215,  622,  495,
      224,  225,  588,  225,  288,  288,  288,  288,  288,  288,
      226,  344,  226,  373,  100,  227,  227,  227,  227,  227,
      227,  153,  588,  153,  473,  153,  154,  153,  471,  100,
      153,  153,  348,  153,  228,  294,  294,  294,  294,  294,
      294,  101,  631,  166,  153,  166,  154,  827,  827,  827,
      827,  459,  153,  153,  153,  153,  827,  153,  827,  153,
      351,  153,  631,  181,  153,  153,  466,  153,  221,  306,
      724,  302,  302,  302,  302,  302,  302,  776,  153,  222,
      154,  827,  465,  827,  360,  464,  153,  153,  153,   99,

      153,   99,  163,   99,  456,   99,  455,  776,   99,   99,
      454,   99,  228,  302,  302,  302,  302,  302,  302,  453,
      634,  779,   99,  452,  101,  448,  827,  447,  827,  463,
       99,   99,   99,  153,  166,  153,  166,  153,  415,  153,
      634,  779,  153,  153,  122,  163,  231,  229,  232,  232,
      232,  232,  232,  232,  181,  373,  153,  241,  154,  233,
      233,  724,  423,  772,  153,  163,  153,  233,  233,  233,
      234,  233,  233,  233,  233,  233,  233,  233,  233,  233,
      233,  233,  827,  772,  827,  312,  312,  312,  312,  312,
      312,  389,  388,  373,  235,  351,  233,  233,  233,  233,

      233,  233,  314,  314,  314,  314,  314,  314,  315,  315,
      316,  314,  314,  314,  348,  181,  332,  181,  233,   99,
      333,   99,  797,   99,  724,   99,  334,  335,   99,   99,
      188,  110,  236,  230,  237,  237,  237,  237,  237,  237,
      119,  181,   99,  345,  101,  238,  239,  342,  797,  776,
       99,  110,   99,  238,  238,  238,  238,  238,  239,  239,
      239,  239,  239,  239,  239,  239,  239,  239,  235,  776,
      238,  238,  238,  238,  238,  238,  126,  239,  239,  239,
      239,  239,  239,  827,  338,  827,  122,  827,  239,  324,
      324,  324,  324,  324,  324,  218,  239,  239,  239,  239,

      239,  240,  240,  240,  240,  240,  240,  241,  779,  213,
      280,  279,  242,  324,  324,  324,  324,  324,  324,  827,
      242,  242,  242,  242,  242,   99,  181,   99,  779,   99,
      275,   99,  274,  797,   99,   99,  273,  123,  247,   99,
      327,  327,  327,  327,  327,  327,  636,  272,   99,  271,
      101,  827,  827,  827,  827,  468,   99,  123,   99,  153,
      827,  153,  827,  153,  473,  153,  636,  270,  153,  153,
      221,  248,  235,  229,  328,  328,  328,  328,  328,  328,
      181,  218,  153,  214,  154,  213,  206,  797,  483,  205,
      153,  248,  153,  221,  328,  328,  328,  328,  328,  328,

      827,  204,  203,  202,  201,  200,  250,  250,  328,  328,
      328,  328,  328,  328,  250,  250,  250,  250,  250,  250,
      250,  250,  250,  250,  250,  250,  250,  250,  250,   99,
      199,   99,  198,   99,  197,   99,  181,  157,   99,   99,
      154,  123,  251,  230,  252,  252,  252,  252,  252,  252,
      126,   92,   99,   90,  101,  252,  253,  140,  122,   90,
       99,  123,   99,  252,  252,  252,  252,  252,  253,  253,
      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
      253,  253,  253,  253,  827,   90,   90,   90,  827,  253,
      328,  328,  328,  328,  328,  328,  827,  253,  253,  253,

      253,  253,  188,  130,  327,  327,  327,  327,  327,  327,
      827,  331,  331,  331,  331,  331,  331,  269,   65,  827,
      827,  827,  188,  827,  254,  254,  254,  254,  254,  254,
      254,  254,  254,  254,  254,  254,  254,  254,  254,   99,
      827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
      827,  188,  251,  230,  255,  255,  255,  255,  255,  255,
      126,  827,   99,  827,  101,  252,  253,  827,  827,  827,
       99,  188,   99,  256,  256,  256,  256,  256,  257,  257,
      257,  257,  257,  257,  257,  257,  257,  257,   99,  827,
       99,  827,   99,  827,   99,  827,  827,   99,   99,  827,

      188,  251,  230,  258,  258,  258,  258,  258,  258,  126,
      827,   99,  827,  101,  259,  260,  827,  827,  827,   99,
      188,   99,  261,  261,  261,  261,  261,  262,  262,  262,
      262,  262,  262,  262,  262,  262,  262,  263,  263,  263,
      263,  263,  263,  827,  827,  827,  827,  827,  260,  346,
      346,  346,  346,  346,  346,  827,  262,  262,  262,  262,
      262,  264,  264,  264,  264,  264,  264,  827,  827,  827,
      772,  349,  253,  286,  286,  286,  286,  286,  286,  459,
      257,  257,  257,  257,  257,   99,  827,   99,  827,   99,
      772,   99,  827,  827,   99,   99,  827,  265,  130,   99,

      266,  266,  266,  266,  266,  266,  827,  827,   99,  827,
      101,  266,  266,  827,  827,  827,   99,  265,   99,  267,
      267,  267,  267,  267,  267,  267,  267,  267,  267,  267,
      267,  267,  267,  267,   99,  827,   99,  827,   99,  827,
       99,  827,  827,   99,   99,  827,  276,  130,   99,  277,
      277,  277,  277,  277,  277,  827,  827,   99,  827,  101,
      277,  277,  827,  827,  827,   99,  276,   99,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,   99,  827,   99,  776,  827,  282,  282,
      282,  282,  282,  282,  153,  463,  153,  827,  153,  827,

      153,  827,  827,  153,  153,  827,  776,  350,  153,  288,
      288,  288,  288,  288,  288,  827,  827,  153,  827,  154,
      827,  827,  827,  827,  827,  153,  827,  153,  153,  153,
      153,  163,  153,  827,  153,  827,  827,  153,  153,  827,
      779,  827,  153,  284,  284,  284,  284,  284,  284,  468,
      827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
      779,  153,  158,   91,  153,   91,  158,   91,  158,   91,
       91,  158,  158,   91,  287,   91,  158,  287,  287,  287,
      287,  287,  287,   91,   91,  158,   91,  159,  287,  287,
       91,   91,   91,  158,  287,  158,  287,  287,  287,  287,

      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
      287,  225,  827,  225,  294,  294,  294,  294,  294,  294,
      289,  827,  289,  827,  827,  290,  290,  290,  290,  290,
      290,  361,  827,  360,  360,  360,  360,  360,  360,  351,
      827,  360,  360,  360,  360,  360,  360,  153,  225,  827,
      225,  371,  371,  371,  371,  371,  371,  289,  827,  291,
      130,  827,  292,  292,  292,  292,  292,  292,  166,  827,
      166,  314,  314,  314,  314,  314,  314,  827,  827,  827,
      827,  827,  295,  295,  295,  295,  295,  295,  380,  380,
      380,  380,  380,  380,  383,  383,  383,  383,  383,  383,

      827,  827,  827,  827,  296,  225,  827,  225,  384,  384,
      384,  384,  384,  384,  226,  827,  226,  827,  827,  297,
      297,  297,  297,  297,  297,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  153,  293,  387,
      387,  387,  387,  387,  387,  269,  827,  827,  153,  827,
      154,  827,  827,  827,  827,  827,  153,  153,  153,  153,
      153,  153,  163,  153,  537,  153,  827,  827,  153,  153,
      827,  153,  299,  130,  827,  394,  394,  394,  394,  394,
      394,  827,  153,  827,  154,  827,  827,  827,  544,  827,
      153,  153,  153,   99,  827,   99,  827,   99,  827,   99,

      827,  827,   99,   99,  827,   99,  299,  380,  380,  380,
      380,  380,  380,  827,  827,  827,   99,  827,  101,  827,
      827,  827,  827,  827,   99,   99,   99,  153,  153,  153,
      163,  153,  594,  153,  827,  827,  153,  153,  827,  163,
      293,  298,  301,  301,  301,  301,  301,  301,  827,  827,
      153,  827,  154,  302,  302,  827,  602,  827,  153,  163,
      153,  302,  302,  302,  302,  302,  302,  302,  302,  302,
      302,  302,  302,  302,  302,  302,  166,  827,  166,  380,
      380,  380,  380,  380,  380,  827,  827,  827,  303,  827,
      304,  304,  304,  304,  304,  304,  410,  410,  410,  410,

      410,  410,  827,  827,  411,  411,  411,  411,  411,  411,
      398,  827,  305,  225,  827,  225,  413,  413,  413,  413,
      413,  413,  289,  827,  291,  306,  827,  307,  307,  307,
      307,  307,  307,   99,  827,   99,  827,   99,  827,   99,
      827,  827,   99,   99,  827,  110,  308,  300,  309,  309,
      309,  309,  309,  309,  119,  827,   99,  827,  101,  310,
      310,  827,  827,  827,   99,  110,   99,  310,  310,  310,
      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
      310,  310,  306,  827,  310,  310,  310,  310,  310,  310,
      126,  311,  311,  311,  311,  311,  311,  241,  827,  827,

      827,   91,  312,  414,  414,  414,  414,  414,  414,  827,
      312,  312,  312,  312,  312,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  163,  827,  153,
      163,  163,  163,  163,  163,  163,  827,  827,  153,  827,
      154,  319,  319,  827,  827,  827,  153,  163,  153,  319,
      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
      319,  319,  319,  319,  153,  827,  153,  827,  153,  827,
      153,  827,  827,  153,  153,  827,  248,  130,  153,  424,
      827,  425,  425,  425,  425,  425,  425,  153,  827,  154,
      827,  827,  827,  827,  827,  153,  248,  153,  153,  827,

      153,  827,  153,  652,  153,  827,  827,  153,  153,  827,
      248,  306,  298,  426,  827,  423,  423,  423,  423,  423,
      423,  153,  827,  154,  827,  827,  827,  659,  827,  153,
      248,  153,  153,  153,  153,  163,  153,  827,  153,  827,
      827,  153,  153,  827,  248,  306,  298,  423,  423,  423,
      423,  423,  423,  827,  827,  153,  827,  154,  827,  827,
      827,  827,  827,  153,  248,  153,  153,  827,  153,  827,
      153,  696,  153,  827,  827,  153,  153,  827,  163,  293,
      298,  302,  302,  302,  302,  302,  302,  827,  827,  153,
      827,  154,  322,  322,  827,  704,  827,  153,  163,  153,

      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
      322,  322,  322,  322,  322,   99,  827,   99,  827,   99,
      827,   99,  827,  827,   99,   99,  827,  123,  323,  300,
      425,  425,  425,  425,  425,  425,  126,  827,   99,  827,
      101,  827,  827,  827,  827,  827,   99,  123,   99,   99,
      153,   99,  163,   99,  739,   99,  827,  827,   99,   99,
      827,  123,  323,  300,  434,  434,  434,  434,  434,  434,
      827,  827,   99,  827,  101,  827,  827,  827,  746,  827,
       99,  123,   99,   99,  827,   99,  827,   99,  827,   99,
      827,  827,   99,   99,  827,  188,  247,   99,  183,  183,

      183,  183,  183,  183,  827,  827,   99,  827,  101,  183,
      183,  827,  827,  827,   99,  188,   99,  254,  254,  254,
      254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
      254,  254,   99,  827,   99,  827,   99,  827,   99,  827,
      827,   99,   99,  827,  188,  323,  300,  325,  325,  325,
      325,  325,  325,  126,  827,   99,  827,  101,  324,  324,
      827,  827,  827,   99,  188,   99,  326,  326,  326,  326,
      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
      326,   99,  827,   99,  827,   99,  827,   99,  827,  827,
       99,   99,  827,  265,  130,   99,  266,  266,  266,  266,

      266,  266,  827,  827,   99,  827,  101,  266,  266,  827,
      827,  827,   99,  265,   99,  267,  267,  267,  267,  267,
      267,  267,  267,  267,  267,  267,  267,  267,  267,  267,
      329,  247,  434,  434,  434,  434,  434,  434,  241,  330,
      442,  442,  442,  442,  442,  442,  827,  827,  827,  827,
      329,  827,  266,  266,  266,  266,  266,  266,  266,  266,
      266,  266,  266,  266,  266,  266,  266,  336,  827,  827,
      328,  328,  328,  328,  328,  328,  827,  130,  827,  340,
      340,  340,  340,  340,  340,  827,  827,  827,  827,  827,
      340,  445,  445,  445,  445,  445,  445,  827,  341,  341,

      341,  341,  341,   99,  827,   99,  827,   99,  827,   99,
      827,  827,   99,   99,  827,  276,  130,   99,  277,  277,
      277,  277,  277,  277,  827,  827,   99,  827,  101,  277,
      277,  827,  827,  827,   99,  276,   99,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  343,  247,  446,  446,  446,  446,  446,  446,
      827,  344,  449,  449,  449,  449,  449,  449,  269,  827,
      827,  827,  343,  827,  277,  277,  277,  277,  277,  277,
      277,  277,  277,  277,  277,  277,  277,  277,  277,  100,
      827,  282,  282,  282,  282,  282,  282,  827,  827,  827,

      827,  101,  153,  827,  153,  827,  153,  153,  153,  163,
      827,  153,  153,  827,  450,  212,  153,  451,  451,  451,
      451,  451,  451,  827,  827,  153,  827,  154,  225,  827,
      225,  827,  827,  153,  827,  153,  153,  226,  153,  226,
      153,  153,  153,  163,  827,  153,  153,  827,  827,  347,
      153,  284,  284,  284,  284,  284,  284,  827,  827,  153,
      827,  154,  827,  827,  827,  827,  827,  153,  827,  153,
      158,   91,  153,   91,  158,   91,  158,   91,   91,  158,
      158,   91,  287,  217,  158,  287,  287,  287,  287,  287,
      287,   91,   91,  158,   91,  159,  287,  287,   91,   91,

       91,  158,  287,  158,  287,  287,  287,  287,  287,  287,
      287,  287,  287,  287,  287,  287,  287,  287,  287,  100,
      827,  290,  290,  290,  290,  290,  290,  827,  827,  827,
      827,  154,  100,  827,  290,  290,  290,  290,  290,  290,
      827,  815,  827,  815,  154,  153,  827,  153,  827,  153,
      821,  153,  821,  827,  153,  153,  827,  163,  130,  153,
      292,  292,  292,  292,  292,  292,  827,  827,  153,  827,
      154,  163,  163,  827,  827,  827,  153,  163,  153,  163,
      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
      163,  163,  163,  163,  166,  827,  166,  442,  442,  442,

      442,  442,  442,  269,  827,  827,  827,  827,  352,  352,
      352,  352,  352,  352,  469,  469,  469,  469,  469,  469,
      470,  827,  411,  411,  411,  411,  411,  411,  827,  827,
      353,  225,  472,  225,  414,  414,  414,  414,  414,  414,
      226,  827,  226,  827,  827,  354,  354,  354,  354,  354,
      354,  153,  827,  153,  827,  153,  827,  153,  827,  827,
      153,  153,  827,  153,  355,  478,  483,  483,  483,  483,
      483,  483,  827,  827,  153,  827,  154,  827,  827,  827,
      827,  827,  153,  153,  153,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  153,  351,  473,

      827,  483,  483,  483,  483,  483,  483,  827,  153,  827,
      154,  827,  827,  827,  163,  827,  153,  153,  153,   99,
      827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
      827,   99,  355,  434,  434,  434,  434,  434,  434,  827,
      827,  827,   99,  827,  101,  827,  827,  827,  827,  827,
       99,   99,   99,  153,  827,  153,  827,  153,  827,  153,
      827,  827,  153,  153,  827,  163,  358,  356,  359,  359,
      359,  359,  359,  359,  827,  827,  153,  827,  154,  360,
      360,  827,  827,  827,  153,  163,  153,  360,  360,  360,
      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,

      360,  360,  166,  827,  166,  502,  502,  502,  502,  502,
      502,  827,  827,  827,  362,  827,  363,  363,  363,  363,
      363,  363,  505,  505,  505,  505,  505,  505,  506,  506,
      506,  506,  506,  506,  827,  827,  827,  827,  364,  225,
      827,  225,  527,  527,  527,  527,  527,  527,  289,  827,
      291,  361,  827,  365,  365,  365,  365,  365,  365,   99,
      827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
      827,  110,  366,  357,  367,  367,  367,  367,  367,  367,
      368,  827,   99,  827,  101,  369,  369,  827,  827,  827,
       99,  110,   99,  369,  369,  369,  369,  369,  369,  369,

      369,  369,  369,  369,  369,  369,  369,  369,  361,  827,
      369,  369,  369,  369,  369,  369,  827,  370,  370,  370,
      370,  370,  370,  241,  827,  827,  507,  827,  371,  508,
      508,  508,  508,  508,  508,  827,  371,  371,  371,  371,
      371,  153,  827,  153,  827,  153,  827,  153,  827,  827,
      153,  153,  827,  248,  130,  153,  510,  510,  510,  510,
      510,  510,  269,  827,  153,  827,  154,  827,  827,  827,
      827,  827,  153,  248,  153,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  248,  361,  356,
      451,  451,  451,  451,  451,  451,  269,  827,  153,  827,

      154,  827,  827,  827,  827,  827,  153,  248,  153,  153,
      827,  153,  827,  153,  827,  153,  827,  827,  153,  153,
      827,  248,  361,  356,  533,  533,  533,  533,  533,  533,
      827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
      153,  248,  153,  153,  827,  153,  827,  153,  827,  153,
      827,  827,  153,  153,  827,  163,  351,  356,  360,  360,
      360,  360,  360,  360,  827,  827,  153,  827,  154,  378,
      378,  827,  827,  827,  153,  163,  153,  378,  378,  378,
      378,  378,  378,  378,  378,  378,  378,  378,  378,  378,
      378,  378,   99,  827,   99,  827,   99,  827,   99,  827,

      827,   99,   99,  827,  123,  379,  357,  827,  827,  534,
      534,  534,  534,  534,  534,   99,  827,  101,  827,  827,
      827,  827,  827,   99,  123,   99,   99,  827,   99,  827,
       99,  827,   99,  827,  827,   99,   99,  827,  188,  379,
      357,  381,  381,  381,  381,  381,  381,  827,  827,   99,
      827,  101,  380,  380,  827,  827,  827,   99,  188,   99,
      382,  382,  382,  382,  382,  382,  382,  382,  382,  382,
      382,  382,  382,  382,  382,   99,  827,   99,  827,   99,
      827,   99,  827,  827,   99,   99,  827,  395,  130,   99,
      396,  396,  396,  396,  396,  396,  827,  827,   99,  827,

      101,  396,  396,  827,  827,  827,   99,  395,   99,  397,
      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
      397,  397,  397,  397,   99,  827,   99,  827,   99,  827,
       99,  827,  827,   99,   99,  827,  123,  247,   99,  399,
      399,  399,  399,  399,  399,  827,  827,   99,  827,  101,
      399,  183,  827,  827,  827,   99,  123,   99,  399,  399,
      399,  399,  399,  183,  183,  183,  183,  183,  183,  183,
      183,  183,  183,  399,  399,  399,  399,  399,  399,  827,
      827,  827,  827,  827,  399,  535,  535,  535,  535,  535,
      535,  827,  400,  400,  400,  400,  400,   99,  827,   99,

      827,   99,  827,   99,  827,  827,   99,   99,  827,  401,
      130,   99,  402,  402,  402,  402,  402,  402,  827,  827,
       99,  827,  101,  402,  402,  827,  827,  827,   99,  401,
       99,  403,  403,  403,  403,  403,  403,  403,  403,  403,
      403,  403,  403,  403,  403,  403,  343,   91,  827,  536,
      536,  536,  536,  536,  536,  545,  545,  545,  545,  545,
      545,  827,  827,  827,  827,  827,  343,  827,  277,  277,
      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
      277,  277,  277,   99,  827,   99,  827,   99,  827,   99,
      827,  827,   99,   99,  827,  407,  130,   99,  408,  408,

      408,  408,  408,  408,  827,  827,   99,  827,  101,  408,
      408,  827,  827,  827,   99,  407,   99,  409,  409,  409,
      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
      409,  409,  166,  549,  166,  550,  550,  550,  550,  550,
      550,  827,  827,  827,  827,  827,  416,  416,  416,  416,
      416,  416,  537,  827,  550,  550,  550,  550,  550,  550,
      568,  568,  568,  568,  568,  568,  827,  827,  417,  225,
      827,  225,  569,  569,  569,  569,  569,  569,  226,  827,
      226,  827,  827,  418,  418,  418,  418,  418,  418,  153,
      827,  153,  827,  153,  827,  153,  827,  827,  153,  153,

      827,  153,  415,  508,  508,  508,  508,  508,  508,  330,
      827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
      153,  153,  153,  153,  827,  153,  827,  153,  827,  153,
      827,  827,  153,  153,  827,  153,  420,  573,  573,  573,
      573,  573,  573,  269,  827,  827,  153,  827,  154,  827,
      827,  827,  827,  827,  153,  153,  153,   99,  827,   99,
      827,   99,  827,   99,  827,  827,   99,   99,  827,   99,
      420,  527,  527,  527,  527,  527,  527,  344,  827,  827,
       99,  827,  101,  827,  827,  827,  827,  827,   99,   99,
       99,  153,  827,  153,  827,  153,  827,  153,  827,  827,

      153,  153,  827,  163,  415,  419,  422,  422,  422,  422,
      422,  422,  827,  827,  153,  827,  154,  423,  423,  827,
      827,  827,  153,  163,  153,  423,  423,  423,  423,  423,
      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
      166,  212,  166,  534,  534,  534,  534,  534,  534,  827,
      827,  827,  427,  827,  428,  428,  428,  428,  428,  428,
      536,  536,  536,  536,  536,  536,  607,  827,  608,  608,
      608,  608,  608,  608,  827,  827,  429,  225,  827,  225,
      608,  608,  608,  608,  608,  608,  289,  827,  291,  426,
      827,  430,  430,  430,  430,  430,  430,   99,  827,   99,

      827,   99,  827,   99,  827,  827,   99,   99,  827,  110,
      431,  421,  432,  432,  432,  432,  432,  432,  368,  827,
       99,  827,  101,  433,  433,  827,  827,  827,   99,  110,
       99,  433,  433,  433,  433,  433,  433,  433,  433,  433,
      433,  433,  433,  433,  433,  433,  426,  827,  433,  433,
      433,  433,  433,  433,  827,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  248,  426,  419,
      628,  628,  628,  628,  628,  628,  827,  827,  153,  827,
      154,  827,  827,  827,  827,  827,  153,  248,  153,  153,
      827,  153,  827,  153,  827,  153,  827,  827,  153,  153,

      827,  248,  426,  419,  639,  639,  639,  639,  639,  639,
      827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
      153,  248,  153,  153,  827,  153,  827,  153,  827,  153,
      827,  827,  153,  153,  827,  163,  415,  419,  423,  423,
      423,  423,  423,  423,  827,  827,  153,  827,  154,  440,
      440,  827,  827,  827,  153,  163,  153,  440,  440,  440,
      440,  440,  440,  440,  440,  440,  440,  440,  440,  440,
      440,  440,   99,  827,   99,  827,   99,  827,   99,  827,
      827,   99,   99,  827,  123,  441,  421,  644,  644,  644,
      644,  644,  644,  827,  827,   99,  827,  101,  827,  827,

      827,  827,  827,   99,  123,   99,   99,  827,   99,  827,
       99,  827,   99,  827,  827,   99,   99,  827,  188,  441,
      421,  443,  443,  443,  443,  443,  443,  827,  827,   99,
      827,  101,  442,  442,  827,  827,  827,   99,  188,   99,
      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
      444,  444,  444,  444,  444,   99,  827,   99,  827,   99,
      827,   99,  827,  827,   99,   99,  827,  123,  247,   99,
      183,  183,  183,  183,  183,  183,  827,  827,   99,  827,
      101,  457,  457,  827,  827,  827,   99,  123,   99,  457,
      457,  457,  457,  457,  457,  457,  457,  457,  457,  457,

      457,  457,  457,  457,  458,  247,  648,  648,  648,  648,
      648,  648,  827,  459,  651,  651,  651,  651,  651,  651,
      827,  827,  827,  827,  458,  827,  396,  396,  396,  396,
      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
      396,  460,  460,  460,  460,  460,  460,  827,  827,  827,
      827,  827,  460,  661,  661,  661,  661,  661,  661,  827,
      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
      460,  827,  827,  827,  827,  827,  460,  661,  661,  661,
      661,  661,  661,  827,  461,  461,  461,  461,  461,  462,
      247,  827,  827,  604,  827,  827,  827,  827,  463,  664,

      665,  665,  665,  665,  665,  665,  827,  827,  827,  462,
      827,  402,  402,  402,  402,  402,  402,  402,  402,  402,
      402,  402,  402,  402,  402,  402,  467,  247,  672,  672,
      672,  672,  672,  672,  652,  468,  665,  665,  665,  665,
      665,  665,  827,  827,  827,  827,  467,  827,  408,  408,
      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
      408,  408,  408,  166,  666,  166,  667,  667,  667,  667,
      667,  667,  827,  827,  827,  827,  827,  474,  474,  474,
      474,  474,  474,  652,  827,  667,  667,  667,  667,  667,
      667,  639,  639,  639,  639,  639,  639,  459,  827,  475,

      225,  709,  225,  710,  710,  710,  710,  710,  710,  226,
      827,  226,  827,  827,  476,  476,  476,  476,  476,  476,
      153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
      153,  827,  153,  477,  644,  644,  644,  644,  644,  644,
      463,  827,  827,  153,  827,  154,  827,  827,  827,  827,
      827,  153,  153,  153,  153,  827,  153,  827,  153,  827,
      153,  827,  827,  153,  153,  827,  153,  473,  648,  648,
      648,  648,  648,  648,  468,  827,  827,  153,  827,  154,
      827,  827,  827,  827,  827,  153,  153,  153,   99,  827,
       99,  827,   99,  827,   99,  827,  827,   99,   99,  827,

       99,  477,  710,  710,  710,  710,  710,  710,  827,  827,
      827,   99,  827,  101,  827,  827,  827,  827,  827,   99,
       99,   99,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  163,  480,  481,  482,  482,  482,
      482,  482,  482,  827,  827,  153,  827,  154,  483,  483,
      827,  827,  827,  153,  163,  153,  483,  483,  483,  483,
      483,  483,  483,  483,  483,  483,  483,  483,  483,  483,
      483,  484,  478,  485,  485,  485,  485,  485,  485,  166,
      827,  166,  827,  748,  748,  748,  748,  748,  748,  827,
      827,  486,  827,  487,  487,  487,  487,  487,  487,  604,

      153,  827,  827,  749,  749,  749,  749,  749,  749,  748,
      748,  748,  748,  748,  748,  488,  225,  739,  225,  751,
      751,  751,  751,  751,  751,  289,  827,  291,  480,  827,
      489,  489,  489,  489,  489,  489,   99,  827,   99,  827,
       99,  827,   99,  827,  827,   99,   99,  827,  110,  490,
      479,  491,  491,  491,  491,  491,  491,  368,  827,   99,
      827,  101,  492,  492,  827,  827,  827,   99,  110,   99,
      492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
      492,  492,  492,  492,  492,  480,  827,  492,  492,  492,
      492,  492,  492,  827,  153,  827,  153,  827,  153,  827,

      153,  827,  827,  153,  153,  827,  248,  480,  478,  750,
      751,  751,  751,  751,  751,  751,  827,  153,  827,  154,
      827,  827,  827,  827,  827,  153,  248,  153,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      248,  480,  478,  752,  827,  753,  753,  753,  753,  753,
      753,  153,  827,  154,  827,  827,  827,  827,  827,  153,
      248,  153,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  163,  473,  478,  483,  483,  483,
      483,  483,  483,  827,  827,  153,  827,  154,  500,  500,
      827,  827,  827,  153,  163,  153,  500,  500,  500,  500,

      500,  500,  500,  500,  500,  500,  500,  500,  500,  500,
      500,   99,  827,   99,  827,   99,  827,   99,  827,  827,
       99,   99,  827,  123,  501,  479,  739,  827,  753,  753,
      753,  753,  753,  753,   99,  827,  101,  827,  827,  827,
      827,  827,   99,  123,   99,   99,  827,   99,  827,   99,
      827,   99,  827,  827,   99,   99,  827,  188,  501,  479,
      503,  503,  503,  503,  503,  503,  827,  827,   99,  827,
      101,  502,  502,  827,  827,  827,   99,  188,   99,  504,
      504,  504,  504,  504,  504,  504,  504,  504,  504,  504,
      504,  504,  504,  504,  519,  519,  758,  758,  758,  758,

      758,  758,  519,  519,  519,  519,  519,  519,  519,  519,
      519,  519,  519,  519,  519,  519,  519,  523,  523,  523,
      523,  523,  523,  827,  827,  827,  827,  827,  523,  294,
      294,  294,  294,  294,  294,  827,  523,  523,  523,  523,
      523,  523,  523,  523,  523,  523,  523,  827,  827,  827,
      153,  827,  523,  153,  153,  153,  153,  153,  153,  827,
      524,  524,  524,  524,  524,  166,  153,  166,  827,  749,
      749,  749,  749,  749,  749,  827,  827,  827,  827,  538,
      538,  538,  538,  538,  538,  785,  827,  786,  786,  786,
      786,  786,  786,  786,  786,  786,  786,  786,  786,  827,

      827,  539,  225,  827,  225,  789,  789,  789,  789,  789,
      789,  226,  827,  226,  827,  827,  540,  540,  540,  540,
      540,  540,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  153,  537,  798,  798,  798,  798,
      798,  798,  269,  827,  827,  153,  827,  154,  827,  827,
      827,  827,  827,  153,  153,  153,  153,  827,  153,  827,
      153,  827,  153,  827,  827,  153,  153,  827,  153,  542,
      785,  827,  786,  786,  786,  786,  786,  786,  827,  153,
      827,  154,  827,  827,  827,  827,  827,  153,  153,  153,
       99,  827,   99,  827,   99,  827,   99,  827,  827,   99,

       99,  827,   99,  542,  786,  786,  786,  786,  786,  786,
      827,  827,  827,   99,  827,  101,  827,  827,  827,  827,
      827,   99,   99,   99,  153,  827,  153,  827,  153,  827,
      153,  827,  827,  153,  153,  827,  163,  537,  541,  788,
      788,  788,  788,  788,  788,  827,  827,  153,  827,  154,
      827,  827,  827,  827,  827,  153,  163,  153,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      163,  546,  547,  548,  548,  548,  548,  548,  548,  827,
      827,  153,  827,  154,  544,  544,  827,  827,  827,  153,
      163,  153,  544,  544,  544,  544,  544,  544,  544,  544,

      544,  544,  544,  544,  544,  544,  544,  153,  827,  153,
      827,  153,  827,  153,  827,  827,  153,  153,  827,  163,
      546,  541,  798,  798,  798,  798,  798,  798,  269,  827,
      153,  827,  154,  827,  827,  827,  827,  827,  153,  163,
      153,  166,  827,  166,  804,  804,  804,  804,  804,  804,
      827,  827,  827,  551,  827,  552,  552,  552,  552,  552,
      552,  810,  810,  810,  810,  810,  810,  811,  812,  811,
      811,  811,  811,  827,  827,  827,  827,  553,  225,  827,
      225,  816,  816,  816,  816,  816,  816,  289,  827,  291,
      827,  827,  554,  554,  554,  554,  554,  554,   99,  555,

       99,  555,   99,  827,   99,  827,  827,   99,   99,  827,
      110,  556,  543,  557,  557,  557,  557,  557,  557,  368,
      827,   99,  827,  101,  558,  558,  827,  827,  827,   99,
      110,   99,  558,  558,  558,  558,  558,  558,  558,  558,
      558,  558,  558,  558,  558,  558,  558,  827,  827,  827,
      817,  817,  818,  816,  816,  816,  827,  827,  827,  546,
      827,  558,  558,  558,  558,  558,  558,  827,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      248,  546,  541,  816,  816,  816,  816,  816,  816,  827,
      827,  153,  827,  154,  827,  827,  827,  827,  827,  153,

      248,  153,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  248,  546,  541,  822,  822,  822,
      822,  822,  822,  827,  827,  153,  827,  154,  827,  827,
      827,  827,  827,  153,  248,  153,  537,  823,  823,  823,
      823,  823,  823,  825,  825,  825,  825,  825,  825,  564,
      564,  826,  826,  826,  826,  826,  826,  564,  564,  564,
      564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
      564,  564,   99,  827,   99,  827,   99,  827,   99,  827,
      827,   99,   99,  827,  123,  565,  543,  827,  827,  827,
      827,  827,  827,  827,  827,   99,  827,  101,  827,  827,

      827,  827,  827,   99,  123,   99,   99,  827,   99,  827,
       99,  827,   99,  827,  827,   99,   99,  827,  188,  565,
      543,  566,  566,  566,  566,  566,  566,  827,  827,   99,
      827,  101,  566,  566,  827,  827,  827,   99,  188,   99,
      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
      567,  567,  567,  567,  567,  578,  578,  827,  827,  827,
      827,  827,  827,  578,  578,  578,  578,  578,  578,  578,
      578,  578,  578,  578,  578,  578,  578,  578,  582,  582,
      582,  582,  582,  582,  827,  827,  827,  827,  827,  582,
      827,  827,  827,  827,  827,  827,  827,  582,  582,  582,

      582,  582,  582,  582,  582,  582,  582,  582,  827,  827,
      827,  827,  827,  582,  827,  827,  827,  827,  827,  827,
      827,  583,  583,  583,  583,  583,  166,  827,  166,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      595,  595,  595,  595,  595,  595,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  596,  225,  827,  225,  827,  827,  827,  827,
      827,  827,  226,  827,  226,  827,  827,  597,  597,  597,
      597,  597,  597,  153,  827,  153,  827,  153,  827,  153,
      827,  827,  153,  153,  827,  153,  598,  827,  827,  827,

      827,  827,  827,  827,  827,  827,  153,  827,  154,  827,
      827,  827,  827,  827,  153,  153,  153,  153,  827,  153,
      827,  153,  827,  153,  827,  827,  153,  153,  827,  153,
      594,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      153,  827,  154,  827,  827,  827,  827,  827,  153,  153,
      153,   99,  827,   99,  827,   99,  827,   99,  827,  827,
       99,   99,  827,   99,  598,  827,  827,  827,  827,  827,
      827,  827,  827,  827,   99,  827,  101,  827,  827,  827,
      827,  827,   99,   99,   99,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  163,  601,  599,

      827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
      154,  827,  827,  827,  827,  827,  153,  163,  153,  598,
      827,  603,  603,  603,  603,  603,  603,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  604,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      163,  594,  599,  827,  827,  827,  827,  827,  827,  827,
      827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
      163,  153,  601,  605,  606,  606,  606,  606,  606,  606,
      166,  827,  166,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  609,  827,  610,  610,  610,  610,  610,  610,

      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  611,  225,  827,  225,
      827,  827,  827,  827,  827,  827,  289,  827,  291,  601,
      827,  612,  612,  612,  612,  612,  612,   99,  827,   99,
      827,   99,  827,   99,  827,  827,   99,   99,  827,  110,
      614,  600,  615,  615,  615,  615,  615,  615,  368,  827,
       99,  827,  101,  616,  616,  827,  827,  827,   99,  110,
       99,  616,  616,  616,  616,  616,  616,  616,  616,  616,
      616,  616,  616,  616,  616,  616,  601,  827,  616,  616,
      616,  616,  616,  616,  827,  153,  827,  153,  827,  153,

      827,  153,  827,  827,  153,  153,  827,  248,  601,  599,
      827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
      154,  827,  827,  827,  827,  827,  153,  248,  153,  153,
      827,  153,  827,  153,  827,  153,  827,  827,  153,  153,
      827,  248,  601,  599,  827,  827,  827,  827,  827,  827,
      827,  827,  153,  827,  154,  827,  827,  827,  827,  827,
      153,  248,  153,  624,  624,  827,  827,  827,  827,  827,
      827,  624,  624,  624,  624,  624,  624,  624,  624,  624,
      624,  624,  624,  624,  624,  624,   99,  827,   99,  827,
       99,  827,   99,  827,  827,   99,   99,  827,  123,  625,

      600,  827,  827,  827,  827,  827,  827,  827,  827,   99,
      827,  101,  827,  827,  827,  827,  827,   99,  123,   99,
       99,  827,   99,  827,   99,  827,   99,  827,  827,   99,
       99,  827,  188,  625,  600,  626,  626,  626,  626,  626,
      626,  827,  827,   99,  827,  101,  626,  626,  827,  827,
      827,   99,  188,   99,  627,  627,  627,  627,  627,  627,
      627,  627,  627,  627,  627,  627,  627,  627,  627,   99,
      827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
      827,  123,  625,  600,  630,  630,  630,  630,  630,  630,
      269,  827,   99,  827,  101,  626,  626,  827,  827,  827,

       99,  123,   99,  626,  626,  626,  626,  626,  626,  626,
      626,  626,  626,  626,  626,  626,  626,  626,  638,  638,
      827,  827,  827,  827,  827,  827,  638,  638,  638,  638,
      638,  638,  638,  638,  638,  638,  638,  638,  638,  638,
      638,  642,  642,  642,  642,  642,  642,  827,  827,  827,
      827,  827,  642,  827,  827,  827,  827,  827,  827,  827,
      642,  642,  642,  642,  642,  642,  642,  642,  642,  642,
      642,  827,  827,  827,  827,  827,  642,  827,  827,  827,
      827,  827,  827,  827,  643,  643,  643,  643,  643,  166,
      827,  166,  827,  827,  827,  827,  827,  827,  827,  827,

      827,  827,  827,  653,  653,  653,  653,  653,  653,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  654,  225,  827,  225,  827,
      827,  827,  827,  827,  827,  226,  827,  226,  827,  827,
      655,  655,  655,  655,  655,  655,  153,  827,  153,  827,
      153,  827,  153,  827,  827,  153,  153,  827,  153,  652,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  153,
      827,  154,  827,  827,  827,  827,  827,  153,  153,  153,
      153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
      153,  827,  153,  657,  827,  827,  827,  827,  827,  827,

      827,  827,  827,  153,  827,  154,  827,  827,  827,  827,
      827,  153,  153,  153,   99,  827,   99,  827,   99,  827,
       99,  827,  827,   99,   99,  827,   99,  657,  827,  827,
      827,  827,  827,  827,  827,  827,  827,   99,  827,  101,
      827,  827,  827,  827,  827,   99,   99,   99,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      163,  652,  656,  827,  827,  827,  827,  827,  827,  827,
      827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
      163,  153,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  163,  660,  656,  827,  827,  827,

      827,  827,  827,  827,  827,  153,  827,  154,  827,  827,
      827,  827,  827,  153,  163,  153,  662,  827,  662,  100,
      827,  663,  663,  663,  663,  663,  663,  827,  827,  827,
      827,  154,  166,  827,  166,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  668,  827,  669,  669,  669,  669,
      669,  669,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  670,  225,
      827,  225,  827,  827,  827,  827,  827,  827,  289,  827,
      291,  827,  827,  671,  671,  671,  671,  671,  671,   99,
      827,   99,  827,   99,  827,   99,  827,  827,   99,   99,

      827,  110,  673,  658,  674,  674,  674,  674,  674,  674,
      368,  827,   99,  827,  101,  675,  675,  827,  827,  827,
       99,  110,   99,  675,  675,  675,  675,  675,  675,  675,
      675,  675,  675,  675,  675,  675,  675,  675,  660,  827,
      675,  675,  675,  675,  675,  675,  827,  153,  827,  153,
      827,  153,  827,  153,  827,  827,  153,  153,  827,  248,
      660,  656,  827,  827,  827,  827,  827,  827,  827,  827,
      153,  827,  154,  827,  827,  827,  827,  827,  153,  248,
      153,  153,  827,  153,  827,  153,  827,  153,  827,  827,
      153,  153,  827,  248,  660,  656,  827,  827,  827,  827,

      827,  827,  827,  827,  153,  827,  154,  827,  827,  827,
      827,  827,  153,  248,  153,  652,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  681,  681,
      827,  827,  827,  827,  827,  827,  681,  681,  681,  681,
      681,  681,  681,  681,  681,  681,  681,  681,  681,  681,
      681,   99,  827,   99,  827,   99,  827,   99,  827,  827,
       99,   99,  827,  123,  682,  658,  827,  827,  827,  827,
      827,  827,  827,  827,   99,  827,  101,  827,  827,  827,
      827,  827,   99,  123,   99,   99,  827,   99,  827,   99,
      827,   99,  827,  827,   99,   99,  827,  188,  682,  658,

      683,  683,  683,  683,  683,  683,  827,  827,   99,  827,
      101,  683,  683,  827,  827,  827,   99,  188,   99,  684,
      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
      684,  684,  684,  684,   99,  827,   99,  827,   99,  827,
       99,  827,  827,   99,   99,  827,  123,  682,  658,  686,
      686,  686,  686,  686,  686,  269,  827,   99,  827,  101,
      683,  683,  827,  827,  827,   99,  123,   99,  683,  683,
      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
      683,  683,  683,  183,  183,  183,  183,  183,  183,  827,
      827,  827,  827,  827,  183,  827,  827,  827,  827,  827,

      827,  827,  183,  183,  183,  183,  183,  689,  689,  689,
      689,  689,  689,  827,  827,  827,  827,  827,  689,  827,
      827,  827,  827,  827,  827,  827,  689,  689,  689,  689,
      689,  689,  689,  689,  689,  689,  689,  827,  827,  827,
      827,  827,  689,  827,  827,  827,  827,  827,  827,  827,
      690,  690,  690,  690,  690,  166,  827,  166,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  697,
      697,  697,  697,  697,  697,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  698,  225,  827,  225,  827,  827,  827,  827,  827,

      827,  226,  827,  226,  827,  827,  699,  699,  699,  699,
      699,  699,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  153,  700,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  153,  827,  154,  827,  827,
      827,  827,  827,  153,  153,  153,  153,  827,  153,  827,
      153,  827,  153,  827,  827,  153,  153,  827,  153,  696,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  153,
      827,  154,  827,  827,  827,  827,  827,  153,  153,  153,
       99,  827,   99,  827,   99,  827,   99,  827,  827,   99,
       99,  827,   99,  700,  827,  827,  827,  827,  827,  827,

      827,  827,  827,   99,  827,  101,  827,  827,  827,  827,
      827,   99,   99,   99,  153,  827,  153,  827,  153,  827,
      153,  827,  827,  153,  153,  827,  163,  703,  701,  827,
      827,  827,  827,  827,  827,  827,  827,  153,  827,  154,
      827,  827,  827,  827,  827,  153,  163,  153,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      163,  696,  701,  827,  827,  827,  827,  827,  827,  827,
      827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
      163,  153,  700,  827,  705,  705,  705,  705,  705,  705,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,

      604,  706,  100,  827,  663,  663,  663,  663,  663,  663,
      827,  827,  827,  827,  154,  703,  707,  708,  708,  708,
      708,  708,  708,  166,  827,  166,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  711,  827,  712,  712,  712,
      712,  712,  712,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  713,
      225,  827,  225,  827,  827,  827,  827,  827,  827,  289,
      827,  291,  703,  827,  714,  714,  714,  714,  714,  714,
       99,  827,   99,  827,   99,  827,   99,  827,  827,   99,
       99,  827,  110,  716,  702,  717,  717,  717,  717,  717,

      717,  368,  827,   99,  827,  101,  718,  718,  827,  827,
      827,   99,  110,   99,  718,  718,  718,  718,  718,  718,
      718,  718,  718,  718,  718,  718,  718,  718,  718,  703,
      827,  718,  718,  718,  718,  718,  718,  827,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      248,  703,  701,  827,  827,  827,  827,  827,  827,  827,
      827,  153,  827,  154,  827,  827,  827,  827,  827,  153,
      248,  153,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  248,  703,  701,  827,  827,  827,
      827,  827,  827,  827,  827,  153,  827,  154,  827,  827,

      827,  827,  827,  153,  248,  153,  726,  726,  827,  827,
      827,  827,  827,  827,  726,  726,  726,  726,  726,  726,
      726,  726,  726,  726,  726,  726,  726,  726,  726,   99,
      827,   99,  827,   99,  827,   99,  827,  827,   99,   99,
      827,  123,  727,  702,  827,  827,  827,  827,  827,  827,
      827,  827,   99,  827,  101,  827,  827,  827,  827,  827,
       99,  123,   99,   99,  827,   99,  827,   99,  827,   99,
      827,  827,   99,   99,  827,  188,  727,  702,  728,  728,
      728,  728,  728,  728,  827,  827,   99,  827,  101,  728,
      728,  827,  827,  827,   99,  188,   99,  729,  729,  729,

      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
      729,  729,   99,  827,   99,  827,   99,  827,   99,  827,
      827,   99,   99,  827,  123,  727,  702,  730,  730,  730,
      730,  730,  730,  269,  827,   99,  827,  101,  728,  728,
      827,  827,  827,   99,  123,   99,  728,  728,  728,  728,
      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
      728,  733,  733,  733,  733,  733,  733,  827,  827,  827,
      827,  827,  733,  827,  827,  827,  827,  827,  827,  827,
      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
      733,  827,  827,  827,  827,  827,  733,  827,  827,  827,

      827,  827,  827,  827,  734,  734,  734,  734,  734,  166,
      827,  166,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  740,  740,  740,  740,  740,  740,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  741,  225,  827,  225,  827,
      827,  827,  827,  827,  827,  226,  827,  226,  827,  827,
      742,  742,  742,  742,  742,  742,  153,  827,  153,  827,
      153,  827,  153,  827,  827,  153,  153,  827,  153,  739,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  153,
      827,  154,  827,  827,  827,  827,  827,  153,  153,  153,

      153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
      153,  827,  153,  744,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  153,  827,  154,  827,  827,  827,  827,
      827,  153,  153,  153,   99,  827,   99,  827,   99,  827,
       99,  827,  827,   99,   99,  827,   99,  744,  827,  827,
      827,  827,  827,  827,  827,  827,  827,   99,  827,  101,
      827,  827,  827,  827,  827,   99,   99,   99,  153,  827,
      153,  827,  153,  827,  153,  827,  827,  153,  153,  827,
      163,  739,  743,  827,  827,  827,  827,  827,  827,  827,
      827,  153,  827,  154,  827,  827,  827,  827,  827,  153,

      163,  153,  153,  827,  153,  827,  153,  827,  153,  827,
      827,  153,  153,  827,  163,  747,  743,  827,  827,  827,
      827,  827,  827,  827,  827,  153,  827,  154,  827,  827,
      827,  827,  827,  153,  163,  153,  166,  827,  166,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  754,  827,
      755,  755,  755,  755,  755,  755,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  756,  225,  827,  225,  827,  827,  827,  827,
      827,  827,  289,  827,  291,  827,  827,  757,  757,  757,
      757,  757,  757,   99,  827,   99,  827,   99,  827,   99,

      827,  827,   99,   99,  827,  110,  759,  745,  760,  760,
      760,  760,  760,  760,  368,  827,   99,  827,  101,  761,
      761,  827,  827,  827,   99,  110,   99,  761,  761,  761,
      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
      761,  761,  747,  827,  761,  761,  761,  761,  761,  761,
      827,  153,  827,  153,  827,  153,  827,  153,  827,  827,
      153,  153,  827,  248,  747,  743,  827,  827,  827,  827,
      827,  827,  827,  827,  153,  827,  154,  827,  827,  827,
      827,  827,  153,  248,  153,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  248,  747,  743,

      827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
      154,  827,  827,  827,  827,  827,  153,  248,  153,  739,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  767,  767,  827,  827,  827,  827,  827,  827,
      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
      767,  767,  767,  767,  767,   99,  827,   99,  827,   99,
      827,   99,  827,  827,   99,   99,  827,  123,  768,  745,
      827,  827,  827,  827,  827,  827,  827,  827,   99,  827,
      101,  827,  827,  827,  827,  827,   99,  123,   99,   99,
      827,   99,  827,   99,  827,   99,  827,  827,   99,   99,

      827,  188,  768,  745,  769,  769,  769,  769,  769,  769,
      827,  827,   99,  827,  101,  769,  769,  827,  827,  827,
       99,  188,   99,  770,  770,  770,  770,  770,  770,  770,
      770,  770,  770,  770,  770,  770,  770,  770,   99,  827,
       99,  827,   99,  827,   99,  827,  827,   99,   99,  827,
      123,  768,  745,  771,  771,  771,  771,  771,  771,  269,
      827,   99,  827,  101,  769,  769,  827,  827,  827,   99,
      123,   99,  769,  769,  769,  769,  769,  769,  769,  769,
      769,  769,  769,  769,  769,  769,  769,  183,  183,  183,
      183,  183,  183,  827,  827,  827,  827,  827,  183,  827,

      827,  827,  827,  827,  827,  827,  183,  183,  183,  183,
      183,  153,  827,  827,  153,  153,  153,  153,  153,  153,
      153,  827,  153,  827,  153,  827,  153,  827,  827,  153,
      153,  827,  827,  130,  153,  827,  827,  827,  827,  827,
      827,  827,  827,  153,  827,  154,  827,  827,  827,  827,
      827,  153,  827,  153,  153,  827,  153,  827,  153,  827,
      153,  827,  827,  153,  153,  827,  827,  827,  153,  827,
      827,  827,  827,  827,  827,  827,  827,  153,  827,  154,
      827,  827,  827,  827,  827,  153,  827,  153,  153,  827,
      827,  782,  782,  782,  782,  782,  782,  827,  827,  827,

      827,  827,  827,  827,  827,  827,  827,  604,  130,  783,
      784,  784,  784,  784,  784,  784,  166,  827,  166,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  787,  827,
      788,  788,  788,  788,  788,  788,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  220,  225,  827,  225,  827,  827,  827,  827,
      827,  827,  289,  827,  291,  130,  827,  292,  292,  292,
      292,  292,  292,   99,  827,   99,  827,   99,  827,   99,
      827,  827,   99,   99,  827,  110,  790,   99,  791,  791,
      791,  791,  791,  791,  368,  827,   99,  827,  101,  110,

      110,  827,  827,  827,   99,  110,   99,  110,  110,  110,
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
      110,  110,  130,  827,  110,  110,  110,  110,  110,  110,
      827,  153,  827,  153,  827,  153,  827,  153,  827,  827,
      153,  153,  827,  248,  130,  153,  827,  827,  827,  827,
      827,  827,  827,  827,  153,  827,  154,  827,  827,  827,
      827,  827,  153,  248,  153,  153,  827,  153,  827,  153,
      827,  153,  827,  827,  153,  153,  827,  248,  130,  153,
      827,  827,  827,  827,  827,  827,  827,  827,  153,  827,
      154,  827,  827,  827,  827,  827,  153,  248,  153,  319,

      319,  827,  827,  827,  827,  827,  827,  319,  319,  319,
      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
      319,  319,   18,   18,   18,   18,   18,   18,   18,   18,
       18,   18,   18,   18,   18,   18,   18,   18,   18,   24,
       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
       24,   24,   24,   24,   24,   24,   28,   28,   28,   28,
       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
       28,   28,   28,   38,   38,   38,   38,   38,   38,   38,
       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,

       41,   41,   41,   41,   41,   41,   41,   64,   64,   64,
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
       64,   64,   64,   64,   71,   71,  827,   71,   71,   71,
       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
       71,   75,  827,  827,   75,   75,  827,   75,   75,   75,
       75,   77,   77,  827,   77,  827,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77,   77,   78,   78,
       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
       78,   78,   78,   78,   78,   91,   91,  827,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,

       91,   91,   94,   94,  827,   94,   94,   94,   94,   94,
       94,   94,   94,   94,   94,   94,   94,   94,   94,   96,
       96,  827,   96,   96,   96,   96,   96,   96,   96,   96,
       96,   96,   96,   96,   96,   96,   97,  827,  827,  827,
       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
       97,   97,   97,   98,   98,  827,   98,   98,   98,   98,
       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
       99,  827,   99,  827,  827,  827,   99,   99,   99,   99,
       99,  827,   99,   99,   99,   99,   99,  104,  104,  827,
      827,  827,  104,  104,  104,  104,  104,  104,  104,  827,

      104,  104,  104,  104,  105,  105,  105,  105,  105,  105,
      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
      105,  113,  113,  113,  827,  827,  113,  113,  827,  113,
      116,  827,  116,  827,  827,  827,  116,  116,  116,  116,
      116,  827,  116,  116,  116,  116,  116,  141,  141,  827,
      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
      141,  141,  141,  141,  153,  827,  153,  827,  827,  827,
      153,  153,  827,  153,  153,  827,  153,  153,  153,  153,
      153,  158,  158,  158,  158,  158,  158,  158,  158,  158,
      158,  158,  158,  158,  158,  158,  158,  158,  165,  165,

      165,  827,  827,  165,  165,  827,  165,  169,  827,  169,
      827,  827,  827,  169,  169,  169,  169,  169,  827,  169,
      169,  169,  169,  169,  171,  827,  171,  827,  827,  827,
      171,  171,  171,  171,  171,  827,  171,  171,  171,  171,
      171,  182,  182,  827,  827,  182,  827,  827,  182,  183,
      827,  183,  827,  827,  827,  183,  183,  183,  183,  183,
      827,  183,  183,  183,  183,  183,  141,  141,  827,  141,
      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
      141,  141,  141,  221,  221,  221,  827,  827,  221,  221,
      827,  221,  229,  827,  229,  827,  827,  827,  229,  229,

      229,  229,  229,  827,  229,  229,  229,  229,  229,  230,
      827,  230,  827,  827,  827,  230,  230,  230,  230,  230,
      827,  230,  230,  230,  230,  230,  245,  245,  245,  827,
      245,  827,  827,  245,  249,  827,  249,  827,  827,  827,
      249,  249,  249,  249,  249,  827,  249,  249,  249,  249,
      249,  283,  827,  283,  827,  827,  827,  283,  283,  827,
      283,  283,  827,  283,  283,  283,  283,  283,  285,  827,
      827,  285,  827,  827,  285,  285,  285,  285,  293,  293,
      293,  827,  827,  293,  293,  827,  293,  294,  827,  294,
      827,  827,  294,  294,  827,  827,  294,  298,  827,  298,

      827,  827,  827,  298,  298,  298,  298,  298,  827,  298,
      298,  298,  298,  298,  300,  827,  300,  827,  827,  827,
      300,  300,  300,  300,  300,  827,  300,  300,  300,  300,
      300,  313,  313,  827,  313,  827,  827,  313,  317,  317,
      317,  827,  317,  827,  827,  317,  318,  827,  827,  318,
      827,  827,  318,  320,  827,  320,  827,  827,  827,  320,
      320,  320,  320,  320,  827,  320,  320,  320,  320,  320,
      321,  827,  321,  827,  827,  827,  321,  321,  321,  321,
      321,  827,  321,  321,  321,  321,  321,  324,  827,  324,
      827,  827,  827,  324,  324,  324,  324,  324,  324,  324,

      324,  324,  324,  324,   99,  827,   99,  827,  827,  827,
       99,   99,   99,   99,   99,  827,   99,   99,   99,   99,
       99,  283,  827,  283,  827,  827,  827,  283,  283,  283,
      283,  283,  827,  283,  283,  283,  283,  283,  285,  285,
      827,  285,  827,  827,  285,  285,  285,  285,  153,  827,
      153,  827,  827,  827,  153,  153,  153,  153,  153,  827,
      153,  153,  153,  153,  153,  351,  351,  351,  827,  827,
      351,  351,  827,  351,  356,  827,  356,  827,  827,  827,
      356,  356,  356,  356,  356,  827,  356,  356,  356,  356,
      356,  357,  827,  357,  827,  827,  827,  357,  357,  357,

      357,  357,  827,  357,  357,  357,  357,  357,  372,  372,
      827,  372,  827,  827,  372,  374,  374,  374,  827,  374,
      827,  827,  374,  375,  375,  375,  827,  375,  827,  827,
      375,  377,  827,  377,  827,  827,  827,  377,  377,  377,
      377,  377,  827,  377,  377,  377,  377,  377,  380,  827,
      380,  827,  827,  827,  380,  380,  380,  380,  380,  827,
      380,  380,  380,  380,  380,  412,  827,  827,  412,  827,
      827,  412,  412,  412,  412,  415,  415,  415,  827,  827,
      415,  415,  827,  415,  419,  827,  419,  827,  827,  827,
      419,  419,  419,  419,  419,  827,  419,  419,  419,  419,

      419,  421,  827,  421,  827,  827,  827,  421,  421,  421,
      421,  421,  827,  421,  421,  421,  421,  421,  435,  435,
      827,  435,  827,  827,  435,  436,  436,  827,  436,  827,
      827,  436,  437,  437,  437,  827,  437,  827,  827,  437,
      438,  827,  827,  438,  827,  827,  438,  439,  827,  439,
      827,  827,  827,  439,  439,  439,  439,  439,  827,  439,
      439,  439,  439,  439,  442,  827,  442,  827,  827,  827,
      442,  442,  442,  442,  442,  827,  442,  442,  442,  442,
      442,  473,  473,  473,  827,  827,  473,  473,  827,  473,
      478,  827,  478,  827,  827,  827,  478,  478,  478,  478,

      478,  827,  478,  478,  478,  478,  478,  479,  827,  479,
      827,  827,  827,  479,  479,  479,  479,  479,  827,  479,
      479,  479,  479,  479,  493,  493,  827,  493,  827,  827,
      493,  494,  494,  827,  494,  827,  827,  494,  496,  496,
      496,  827,  496,  827,  827,  496,  497,  497,  497,  827,
      497,  827,  827,  497,  499,  827,  499,  827,  827,  827,
      499,  499,  499,  499,  499,  827,  499,  499,  499,  499,
      499,  502,  827,  502,  827,  827,  827,  502,  502,  502,
      502,  502,  827,  502,  502,  502,  502,  502,  512,  827,
      827,  512,  827,  827,  512,  512,  512,  512,  517,  827,

      827,  517,  827,  827,  517,  517,  517,  517,  537,  537,
      537,  827,  827,  537,  537,  827,  537,  541,  827,  541,
      827,  827,  827,  541,  541,  541,  541,  541,  827,  541,
      541,  541,  541,  541,  543,  827,  543,  827,  827,  827,
      543,  543,  543,  543,  543,  827,  543,  543,  543,  543,
      543,  544,  827,  544,  827,  827,  827,  544,  544,  544,
      544,  544,  827,  544,  544,  544,  544,  544,  559,  559,
      827,  559,  827,  827,  559,  560,  560,  827,  560,  827,
      827,  560,  561,  561,  561,  827,  561,  827,  827,  561,
      562,  827,  827,  562,  827,  827,  562,  563,  827,  563,

      827,  827,  827,  563,  563,  563,  563,  563,  827,  563,
      563,  563,  563,  563,  566,  827,  566,  827,  827,  827,
      566,  566,  566,  566,  566,  827,  566,  566,  566,  566,
      566,  571,  827,  827,  571,  827,  827,  571,  571,  571,
      571,  589,  827,  827,  589,  827,  827,  589,  589,  589,
      589,  594,  594,  594,  827,  827,  594,  594,  827,  594,
      599,  827,  599,  827,  827,  827,  599,  599,  599,  599,
      599,  827,  599,  599,  599,  599,  599,  600,  827,  600,
      827,  827,  827,  600,  600,  600,  600,  600,  827,  600,
      600,  600,  600,  600,  602,  827,  602,  827,  827,  827,

      602,  602,  602,  602,  602,  827,  602,  602,  602,  602,
      602,  613,  827,  613,  827,  827,  827,  827,  827,  827,
      613,  617,  617,  827,  617,  827,  827,  617,  618,  618,
      827,  618,  827,  827,  618,  620,  620,  620,  827,  620,
      827,  827,  620,  621,  621,  621,  827,  621,  827,  827,
      621,  623,  827,  623,  827,  827,  827,  623,  623,  623,
      623,  623,  827,  623,  623,  623,  623,  623,  626,  827,
      626,  827,  827,  827,  626,  626,  626,  626,  626,  827,
      626,  626,  626,  626,  626,  632,  827,  827,  632,  827,
      827,  632,  632,  632,  632,  635,  827,  827,  635,  827,

      827,  635,  635,  635,  635,  637,  827,  827,  637,  827,
      827,  637,  637,  637,  637,  652,  652,  652,  827,  827,
      652,  652,  827,  652,  656,  827,  656,  827,  827,  827,
      656,  656,  656,  656,  656,  827,  656,  656,  656,  656,
      656,  658,  827,  658,  827,  827,  827,  658,  658,  658,
      658,  658,  827,  658,  658,  658,  658,  658,  659,  827,
      659,  827,  827,  827,  659,  659,  659,  659,  659,  827,
      659,  659,  659,  659,  659,  153,  827,  153,  827,  827,
      827,  153,  153,  153,  153,  153,  827,  153,  153,  153,
      153,  153,  676,  676,  827,  676,  827,  827,  676,  677,

      677,  827,  677,  827,  827,  677,  678,  678,  678,  827,
      678,  827,  827,  678,  679,  827,  827,  679,  827,  827,
      679,  680,  827,  680,  827,  827,  827,  680,  680,  680,
      680,  680,  827,  680,  680,  680,  680,  680,  683,  827,
      683,  827,  827,  827,  683,  683,  683,  683,  683,  827,
      683,  683,  683,  683,  683,  696,  696,  696,  827,  827,
      696,  696,  827,  696,  701,  827,  701,  827,  827,  827,
      701,  701,  701,  701,  701,  827,  701,  701,  701,  701,
      701,  702,  827,  702,  827,  827,  827,  702,  702,  702,
      702,  702,  827,  702,  702,  702,  702,  702,  704,  827,

      704,  827,  827,  827,  704,  704,  704,  704,  704,  827,
      704,  704,  704,  704,  704,  719,  719,  827,  719,  827,
      827,  719,  720,  720,  827,  720,  827,  827,  720,  722,
      722,  722,  827,  722,  827,  827,  722,  723,  723,  723,
      827,  723,  827,  827,  723,  725,  827,  725,  827,  827,
      827,  725,  725,  725,  725,  725,  827,  725,  725,  725,
      725,  725,  728,  827,  728,  827,  827,  827,  728,  728,
      728,  728,  728,  827,  728,  728,  728,  728,  728,  739,
      739,  739,  827,  827,  739,  739,  827,  739,  743,  827,
      743,  827,  827,  827,  743,  743,  743,  743,  743,  827,

      743,  743,  743,  743,  743,  745,  827,  745,  827,  827,
      827,  745,  745,  745,  745,  745,  827,  745,  745,  745,
      745,  745,  746,  827,  746,  827,  827,  827,  746,  746,
      746,  746,  746,  827,  746,  746,  746,  746,  746,  762,
      762,  827,  762,  827,  827,  762,  763,  763,  827,  763,
      827,  827,  763,  764,  764,  764,  827,  764,  827,  827,
      764,  765,  827,  827,  765,  827,  827,  765,  766,  827,
      766,  827,  827,  827,  766,  766,  766,  766,  766,  827,
      766,  766,  766,  766,  766,  769,  827,  769,  827,  827,
      827,  769,  769,  769,  769,  769,  827,  769,  769,  769,

      769,  769,  773,  827,  827,  773,  827,  827,  773,  773,
      773,  773,  777,  827,  827,  777,  827,  827,  777,  777,
      777,  777,  780,  827,  827,  780,  827,  827,  780,  780,
      780,  780,  781,  827,  781,  827,  827,  827,  827,  827,
      827,  781,  827,  827,  827,  827,  827,  781,  294,  827,
      294,  827,  827,  294,  294,  827,  827,  294,   99,  827,
       99,  827,  827,  827,   99,   99,   99,   99,   99,  827,
       99,   99,   99,   99,   99,  163,  827,  163,  827,  827,
      827,  163,  163,  163,  163,  163,  827,  163,  163,  163,
      163,  163,  792,  792,  827,  792,  827,  827,  792,  793,

      793,  827,  793,  827,  827,  793,  795,  795,  795,  827,
      795,  827,  827,  795,  796,  796,  796,  827,  796,  827,
      827,  796,  320,  827,  320,  827,  827,  827,  320,  320,
      320,  320,  320,  827,  320,  320,  320,  320,  320,  800,
      800,  827,  800,  827,  827,  800,  801,  801,  827,  801,
      827,  827,  801,  802,  802,  802,  827,  802,  827,  827,
      802,  803,  827,  827,  803,  827,  827,  803,  805,  805,
      827,  805,  827,  827,  805,  807,  807,  827,  827,  807,
      827,  827,  807,  808,  808,  808,  827,  808,  827,  827,
      808,  809,  809,  827,  827,  809,  827,  827,  809,  813,

      813,  827,  827,  813,  827,  827,  813,  814,  814,  827,
      827,  814,  827,  827,  814,  819,  819,  827,  827,  819,
      827,  827,  819,  820,  820,  827,  827,  820,  827,  827,
      820,   17,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827
    } ;

static yyconst short int yy_chk[11282] =
    {   0,
        0,    0,    1,   14,   14,   14,    1,    2,    2,    2,
        3,    4,    2,    3,    4,    7,    7,    7,    0,   23,
        7,    8,    8,    8,  823,   29,    8,   29,   23,    9,
        9,    9,    2,    2,    9,   34,   34,    3,    4,   23,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    5,    5,    5,    5,  820,
        5,    5,  819,    5,    5,  814,    5,    5,    5,   10,
       10,   10,   36,   36,   10,   44,    5,    5,    5,   21,
       21,   21,    5,    6,    6,    6,    6,   44,    6,    6,
       99,    6,    6,  813,    6,    6,    6,   39,   30,   39,

       30,   60,   99,   30,    6,    6,    6,   30,   60,  809,
        6,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       15,  807,   15,   15,   15,   15,   15,   15,   42,   43,
       42,   43,   45,   59,   45,   59,   62,   62,   15,   16,
      805,   16,   16,   16,   16,   16,   16,   52,   52,   52,
       52,   52,   52,   66,   66,   66,  102,   16,   27,   27,

       27,   27,   27,   27,   61,   46,   61,   46,  102,   86,
       46,   86,   61,   95,   46,   95,  803,   46,   27,  182,
      450,   27,   72,   72,   72,   27,  182,  103,   27,   46,
       27,   48,   48,   48,   98,   48,   98,   48,   48,  103,
      450,   48,   58,   48,   58,   58,   58,   58,   58,   58,
      271,   48,   48,  801,   48,   48,  800,  146,   48,   48,
       48,   50,   74,   50,   50,   50,   50,   50,   50,  146,
      148,   74,  148,   50,   51,  271,   51,  267,   51,  533,
       51,  533,   74,   51,   51,  267,   51,   51,   51,   51,
       51,   51,   51,   51,   51,  335,  335,   51,  794,   51,

       51,   51,   87,   87,   87,   51,   51,   51,   51,   51,
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
       51,   51,   51,   53,  166,   53,  166,   53,  793,   53,
      424,  424,   53,   53,  792,   53,   53,   68,   75,   68,
       68,   68,   68,   68,   68,  789,   53,   75,   53,  142,
      142,  142,  147,  153,   53,   53,   53,   54,   75,   54,
      166,   54,  783,   54,  147,  153,   54,   54,  778,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,  555,
       54,  555,   54,   54,   54,  151,  151,  151,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,

       54,   54,   54,   54,   54,   54,   56,  245,   56,  278,
       56,  775,   56,  273,  245,   56,   56,  278,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,  329,   56,
      774,   56,   56,   56,  763,  273,  329,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   57,   57,   57,   57,   57,
       57,   57,  762,  455,  484,  484,   57,   69,   69,   69,
       69,   69,   69,  317,   57,   57,   57,   57,   57,   70,
      317,   70,   70,  455,   70,   70,   70,   70,   70,   70,
       79,   79,   79,   79,   79,   79,   80,   80,   80,   80,

       80,   80,  101,  318,  101,  810,  101,  810,  101,  750,
      318,  101,  101,  330,  101,  101,  101,  101,  101,  101,
      101,  101,  101,  330,  334,  101,  737,  101,  101,  101,
      549,  549,  334,  101,  101,  101,  101,  101,  101,  101,
      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
      101,  105,  105,  105,  740,  105,  740,  105,  105,  666,
      666,  105,  110,  105,  110,  110,  110,  110,  110,  110,
      374,  105,  105,  735,  105,  105,  397,  374,  105,  105,
      105,  106,  106,  106,  397,  106,  507,  106,  106,  732,
      740,  106,  721,  106,  126,  126,  126,  126,  126,  126,

      375,  106,  106,  720,  106,  106,  507,  375,  106,  106,
      106,  107,  107,  107,  107,  107,  107,  107,  107,  107,
      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
      108,  108,  108,  108,  108,  108,  403,  222,  719,  222,
      108,  111,  437,  111,  403,  111,  222,  111,  222,  437,
      111,  111,  344,  111,  695,  111,  111,  111,  111,  111,
      111,  111,  344,  344,  111,  694,  111,  111,  111,  752,

      752,  511,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      114,  511,  114,  130,  130,  130,  130,  130,  130,  164,
      693,  164,  463,  692,  114,  114,  114,  114,  114,  114,
      131,  164,  463,  131,  131,  131,  131,  131,  131,  145,
      145,  145,  145,  145,  145,  438,  114,  115,  516,  115,
      409,  115,  438,  115,  691,  164,  115,  115,  409,  115,
      115,  149,  149,  149,  149,  149,  149,  688,  516,  458,
      115,  687,  115,  225,  174,  225,  174,  458,  115,  115,
      115,  116,  225,  116,  225,  116,  174,  116,  529,  685,

      116,  116,  468,  116,  116,  150,  150,  150,  150,  150,
      150,  459,  468,  468,  116,  459,  116,  227,  529,  227,
      174,  459,  116,  116,  116,  117,  227,  117,  227,  117,
      677,  117,  676,  570,  117,  117,  672,  117,  117,  117,
      117,  117,  117,  117,  117,  117,  462,  467,  117,  664,
      117,  117,  117,  570,  462,  467,  117,  117,  117,  117,
      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
      117,  117,  117,  117,  118,  496,  118,  526,  118,  651,
      118,  650,  496,  118,  118,  526,  118,  118,  118,  118,
      118,  118,  118,  118,  118,  118,  497,  118,  649,  118,

      118,  118,  647,  497,  646,  118,  118,  118,  118,  118,
      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
      118,  118,  118,  119,  119,  119,  119,  119,  119,  119,
      785,  785,  645,  155,  119,  155,  155,  155,  155,  155,
      155,  561,  119,  119,  119,  119,  119,  120,  561,  120,
      120,  120,  120,  120,  120,  120,  121,  121,  121,  121,
      121,  121,  121,  574,  641,  512,  160,  121,  160,  160,
      160,  160,  160,  160,  512,  121,  121,  121,  121,  121,
      123,  562,  123,  574,  123,  512,  123,  640,  562,  123,
      123,  633,  123,  123,  123,  163,  629,  163,  163,  163,

      163,  163,  163,  123,  619,  123,  297,  236,  297,  236,
      618,  123,  123,  123,  124,  297,  124,  297,  124,  236,
      124,  617,  576,  124,  124,  592,  124,  124,  124,  124,
      124,  124,  124,  124,  124,  591,  587,  124,  586,  124,
      124,  124,  576,  236,  577,  124,  124,  124,  124,  124,
      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
      124,  124,  124,  125,  577,  125,  585,  125,  581,  125,
      580,  588,  125,  125,  575,  125,  125,  125,  125,  125,
      125,  125,  125,  125,  125,  620,  125,  572,  125,  125,
      125,  588,  620,  560,  125,  125,  125,  125,  125,  125,

      125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
      125,  125,  127,  621,  127,  559,  127,  547,  127,  535,
      621,  127,  127,  532,  127,  127,  127,  127,  127,  127,
      127,  127,  127,  127,  678,  127,  531,  127,  127,  127,
      530,  678,  528,  127,  127,  127,  127,  127,  127,  127,
      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
      127,  128,  128,  128,  128,  128,  128,  128,  525,  522,
      521,  520,  128,  179,  179,  179,  179,  179,  179,  518,
      128,  128,  128,  128,  128,  129,  129,  129,  129,  129,
      129,  129,  631,  515,  517,  514,  129,  181,  181,  181,

      181,  181,  181,  517,  129,  129,  129,  129,  129,  154,
      634,  154,  631,  154,  517,  154,  513,  636,  154,  154,
      509,  154,  154,  154,  154,  154,  154,  154,  154,  154,
      634,  679,  154,  495,  154,  154,  154,  636,  679,  494,
      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
      154,  154,  154,  154,  154,  154,  154,  154,  158,  158,
      158,  493,  158,  731,  158,  158,  466,  465,  158,  456,
      158,  196,  196,  196,  196,  196,  196,  196,  158,  158,
      454,  158,  158,  731,  453,  158,  158,  158,  159,  159,
      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,

      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
      159,  159,  159,  159,  159,  159,  159,  162,  571,  162,
      207,  207,  207,  207,  207,  207,  452,  571,  307,  162,
      307,  162,  162,  162,  162,  162,  162,  307,  571,  307,
      448,  162,  209,  209,  209,  209,  209,  209,  316,  316,
      316,  316,  316,  162,  167,  210,  167,  210,  210,  210,
      210,  210,  210,  818,  818,  818,  818,  818,  167,  167,
      167,  167,  167,  167,  214,  214,  214,  214,  214,  214,

      215,  722,  215,  215,  215,  215,  215,  215,  722,  436,
      167,  168,  589,  168,  218,  218,  218,  218,  218,  218,
      168,  589,  168,  435,  662,  168,  168,  168,  168,  168,
      168,  169,  589,  169,  427,  169,  662,  169,  413,  745,
      169,  169,  412,  169,  169,  226,  226,  226,  226,  226,
      226,  745,  632,  781,  169,  781,  169,  354,  308,  354,
      308,  632,  169,  169,  169,  170,  354,  170,  354,  170,
      308,  170,  632,  723,  170,  170,  406,  170,  170,  233,
      723,  233,  233,  233,  233,  233,  233,  736,  170,  781,
      170,  365,  405,  365,  308,  404,  170,  170,  170,  171,

      365,  171,  365,  171,  393,  171,  392,  736,  171,  171,
      391,  171,  171,  235,  235,  235,  235,  235,  235,  390,
      635,  738,  171,  389,  171,  386,  366,  385,  366,  635,
      171,  171,  171,  172,  172,  172,  172,  172,  366,  172,
      635,  738,  172,  172,  373,  172,  172,  172,  172,  172,
      172,  172,  172,  172,  764,  372,  172,  371,  172,  172,
      172,  764,  366,  772,  172,  172,  172,  172,  172,  172,
      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
      172,  172,  173,  772,  173,  242,  242,  242,  242,  242,
      242,  333,  332,  313,  173,  303,  173,  173,  173,  173,

      173,  173,  243,  243,  243,  243,  243,  243,  244,  244,
      244,  244,  244,  244,  285,  765,  269,  795,  173,  175,
      269,  175,  765,  175,  795,  175,  269,  269,  175,  175,
      280,  175,  175,  175,  175,  175,  175,  175,  175,  175,
      175,  796,  175,  279,  175,  175,  175,  275,  796,  776,
      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
      175,  175,  175,  175,  175,  175,  175,  175,  176,  776,
      176,  176,  176,  176,  176,  176,  176,  177,  177,  177,
      177,  177,  177,  177,  272,  264,  241,  239,  177,  256,
      256,  256,  256,  256,  256,  216,  177,  177,  177,  177,

      177,  178,  178,  178,  178,  178,  178,  178,  779,  211,
      205,  204,  178,  257,  257,  257,  257,  257,  257,  257,
      178,  178,  178,  178,  178,  183,  802,  183,  779,  183,
      202,  183,  201,  802,  183,  183,  200,  183,  183,  183,
      258,  258,  258,  258,  258,  258,  637,  199,  183,  198,
      183,  418,  431,  418,  431,  637,  183,  183,  183,  184,
      418,  184,  418,  184,  431,  184,  637,  197,  184,  184,
      180,  184,  184,  184,  259,  259,  259,  259,  259,  259,
      808,  161,  184,  157,  184,  156,  144,  808,  431,  140,
      184,  184,  184,  185,  260,  260,  260,  260,  260,  260,

      260,  139,  138,  137,  136,  135,  185,  185,  261,  261,
      261,  261,  261,  261,  185,  185,  185,  185,  185,  185,
      185,  185,  185,  185,  185,  185,  185,  185,  185,  186,
      134,  186,  133,  186,  132,  186,  122,  104,  186,  186,
      100,  186,  186,  186,  186,  186,  186,  186,  186,  186,
      186,   93,  186,   92,  186,  186,  186,   63,   55,   37,
      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
      186,  186,  186,  186,  186,  186,  186,  186,  187,  187,
      187,  187,  187,  187,  187,   35,   33,   31,   17,  187,
      262,  262,  262,  262,  262,  262,  262,  187,  187,  187,

      187,  187,  188,  188,  263,  263,  263,  263,  263,  263,
      263,  268,  268,  268,  268,  268,  268,  268,   13,    0,
        0,    0,  188,    0,  188,  188,  188,  188,  188,  188,
      188,  188,  188,  188,  188,  188,  188,  188,  188,  189,
        0,  189,    0,  189,    0,  189,    0,    0,  189,  189,
        0,  189,  189,  189,  189,  189,  189,  189,  189,  189,
      189,    0,  189,    0,  189,  189,  189,    0,    0,    0,
      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
      189,  189,  189,  189,  189,  189,  189,  189,  190,    0,
      190,    0,  190,    0,  190,    0,    0,  190,  190,    0,

      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
        0,  190,    0,  190,  190,  190,    0,    0,    0,  190,
      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
      190,  190,  190,  190,  190,  190,  190,  191,  191,  191,
      191,  191,  191,  191,    0,    0,    0,    0,  191,  281,
      281,  281,  281,  281,  281,    0,  191,  191,  191,  191,
      191,  194,  194,  194,  194,  194,  194,  194,    0,    0,
      773,  286,  194,  286,  286,  286,  286,  286,  286,  773,
      194,  194,  194,  194,  194,  195,    0,  195,    0,  195,
      773,  195,    0,    0,  195,  195,    0,  195,  195,  195,

      195,  195,  195,  195,  195,  195,    0,    0,  195,    0,
      195,  195,  195,    0,    0,    0,  195,  195,  195,  195,
      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
      195,  195,  195,  195,  203,    0,  203,    0,  203,    0,
      203,    0,    0,  203,  203,    0,  203,  203,  203,  203,
      203,  203,  203,  203,  203,    0,    0,  203,    0,  203,
      203,  203,    0,    0,    0,  203,  203,  203,  203,  203,
      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
      203,  203,  203,  208,    0,  208,  777,    0,  208,  208,
      208,  208,  208,  208,  212,  777,  212,    0,  212,    0,

      212,    0,    0,  212,  212,    0,  777,  288,  212,  288,
      288,  288,  288,  288,  288,    0,    0,  212,    0,  212,
      430,    0,  430,    0,  476,  212,  476,  212,  213,  430,
      213,  430,  213,  476,  213,  476,    0,  213,  213,    0,
      780,    0,  213,  213,  213,  213,  213,  213,  213,  780,
        0,  213,    0,  213,    0,    0,    0,    0,    0,  213,
      780,  213,  217,  217,  217,  217,  217,  217,  217,  217,
      217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
      217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
      217,  217,  217,  217,  217,  217,  217,  217,  217,  217,

      217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
      217,  219,    0,  219,  294,  294,  294,  294,  294,  294,
      219,    0,  219,    0,    0,  219,  219,  219,  219,  219,
      219,  302,    0,  302,  302,  302,  302,  302,  302,  306,
        0,  306,  306,  306,  306,  306,  306,  219,  220,    0,
      220,  312,  312,  312,  312,  312,  312,  220,    0,  220,
      220,    0,  220,  220,  220,  220,  220,  220,  223,    0,
      223,  315,  315,  315,  315,  315,  315,    0,    0,    0,
        0,    0,  223,  223,  223,  223,  223,  223,  326,  326,
      326,  326,  326,  326,  327,  327,  327,  327,  327,  327,

        0,    0,    0,    0,  223,  224,    0,  224,  328,  328,
      328,  328,  328,  328,  224,    0,  224,    0,    0,  224,
      224,  224,  224,  224,  224,  228,    0,  228,    0,  228,
        0,  228,    0,    0,  228,  228,    0,  228,  228,  331,
      331,  331,  331,  331,  331,  331,    0,    0,  228,    0,
      228,  489,  490,  489,  490,    0,  228,  228,  228,  229,
      489,  229,  489,  229,  490,  229,    0,    0,  229,  229,
        0,  229,  229,  336,    0,  336,  336,  336,  336,  336,
      336,    0,  229,    0,  229,  540,    0,  540,  490,    0,
      229,  229,  229,  230,  540,  230,  540,  230,    0,  230,

        0,    0,  230,  230,    0,  230,  230,  337,  337,  337,
      337,  337,  337,    0,    0,    0,  230,    0,  230,  554,
      556,  554,  556,    0,  230,  230,  230,  231,  554,  231,
      554,  231,  556,  231,    0,    0,  231,  231,    0,  231,
      231,  231,  231,  231,  231,  231,  231,  231,    0,    0,
      231,    0,  231,  231,  231,    0,  556,    0,  231,  231,
      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
      231,  231,  231,  231,  231,  231,  232,    0,  232,  339,
      339,  339,  339,  339,  339,    0,    0,    0,  232,    0,
      232,  232,  232,  232,  232,  232,  346,  346,  346,  346,

      346,  346,  347,    0,  347,  347,  347,  347,  347,  347,
      339,    0,  232,  234,    0,  234,  349,  349,  349,  349,
      349,  349,  234,    0,  234,  234,    0,  234,  234,  234,
      234,  234,  234,  237,    0,  237,    0,  237,    0,  237,
        0,    0,  237,  237,    0,  237,  237,  237,  237,  237,
      237,  237,  237,  237,  237,    0,  237,    0,  237,  237,
      237,    0,    0,    0,  237,  237,  237,  237,  237,  237,
      237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
      237,  237,  238,    0,  238,  238,  238,  238,  238,  238,
      238,  240,  240,  240,  240,  240,  240,  240,    0,    0,

        0,  350,  240,  350,  350,  350,  350,  350,  350,    0,
      240,  240,  240,  240,  240,  247,    0,  247,    0,  247,
        0,  247,    0,    0,  247,  247,    0,  247,    0,  247,
      247,  247,  247,  247,  247,  247,    0,    0,  247,    0,
      247,  247,  247,    0,    0,    0,  247,  247,  247,  247,
      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
      247,  247,  247,  247,  248,    0,  248,    0,  248,    0,
      248,    0,    0,  248,  248,    0,  248,  248,  248,  359,
        0,  359,  359,  359,  359,  359,  359,  248,    0,  248,
      597,  614,  597,  614,    0,  248,  248,  248,  249,  597,

      249,  597,  249,  614,  249,    0,    0,  249,  249,    0,
      249,  249,  249,  360,    0,  360,  360,  360,  360,  360,
      360,  249,    0,  249,  612,    0,  612,  614,    0,  249,
      249,  249,  250,  612,  250,  612,  250,    0,  250,    0,
        0,  250,  250,    0,  250,  250,  250,  361,  361,  361,
      361,  361,  361,    0,    0,  250,    0,  250,  655,  673,
      655,  673,    0,  250,  250,  250,  251,  655,  251,  655,
      251,  673,  251,    0,    0,  251,  251,    0,  251,  251,
      251,  251,  251,  251,  251,  251,  251,    0,    0,  251,
        0,  251,  251,  251,    0,  673,    0,  251,  251,  251,

      251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
      251,  251,  251,  251,  251,  252,    0,  252,    0,  252,
        0,  252,    0,    0,  252,  252,    0,  252,  252,  252,
      362,  362,  362,  362,  362,  362,  252,    0,  252,    0,
      252,  671,  716,  671,  716,    0,  252,  252,  252,  253,
      671,  253,  671,  253,  716,  253,    0,    0,  253,  253,
        0,  253,  253,  253,  368,  368,  368,  368,  368,  368,
      253,    0,  253,    0,  253,  699,    0,  699,  716,    0,
      253,  253,  253,  254,  699,  254,  699,  254,    0,  254,
        0,    0,  254,  254,    0,  254,  254,  254,  254,  254,

      254,  254,  254,  254,    0,    0,  254,    0,  254,  254,
      254,    0,    0,    0,  254,  254,  254,  254,  254,  254,
      254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
      254,  254,  255,    0,  255,    0,  255,    0,  255,    0,
        0,  255,  255,    0,  255,  255,  255,  255,  255,  255,
      255,  255,  255,  255,    0,  255,    0,  255,  255,  255,
        0,    0,    0,  255,  255,  255,  255,  255,  255,  255,
      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
      255,  265,    0,  265,    0,  265,    0,  265,    0,    0,
      265,  265,    0,  265,  265,  265,  265,  265,  265,  265,

      265,  265,    0,    0,  265,    0,  265,  265,  265,    0,
        0,    0,  265,  265,  265,  265,  265,  265,  265,  265,
      265,  265,  265,  265,  265,  265,  265,  265,  265,  265,
      266,  266,  370,  370,  370,  370,  370,  370,  370,  266,
      382,  382,  382,  382,  382,  382,    0,    0,    0,    0,
      266,    0,  266,  266,  266,  266,  266,  266,  266,  266,
      266,  266,  266,  266,  266,  266,  266,  270,    0,    0,
      270,  270,  270,  270,  270,  270,  270,  274,    0,  274,
      274,  274,  274,  274,  274,    0,    0,    0,    0,    0,
      274,  383,  383,  383,  383,  383,  383,    0,  274,  274,

      274,  274,  274,  276,    0,  276,    0,  276,    0,  276,
        0,    0,  276,  276,    0,  276,  276,  276,  276,  276,
      276,  276,  276,  276,    0,    0,  276,    0,  276,  276,
      276,    0,    0,    0,  276,  276,  276,  276,  276,  276,
      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
      276,  276,  277,  277,  384,  384,  384,  384,  384,  384,
        0,  277,  387,  387,  387,  387,  387,  387,  387,    0,
        0,    0,  277,    0,  277,  277,  277,  277,  277,  277,
      277,  277,  277,  277,  277,  277,  277,  277,  277,  282,
        0,  282,  282,  282,  282,  282,  282,    0,  714,    0,

      714,  282,  283,    0,  283,    0,  283,  714,  283,  714,
        0,  283,  283,    0,  388,  283,  283,  388,  388,  388,
      388,  388,  388,    0,    0,  283,    0,  283,  741,    0,
      741,    0,  757,  283,  757,  283,  284,  741,  284,  741,
      284,  757,  284,  757,    0,  284,  284,    0,    0,  284,
      284,  284,  284,  284,  284,  284,  284,    0,    0,  284,
        0,  284,    0,    0,    0,    0,    0,  284,    0,  284,
      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,

      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
      287,  287,  287,  287,  287,  287,  287,  287,  287,  289,
        0,  289,  289,  289,  289,  289,  289,    0,    0,    0,
        0,  289,  290,    0,  290,  290,  290,  290,  290,  290,
        0,  815,    0,  815,  290,  291,    0,  291,    0,  291,
      815,  291,  815,    0,  291,  291,    0,  291,  291,  291,
      291,  291,  291,  291,  291,  291,    0,    0,  291,    0,
      291,  291,  291,    0,    0,    0,  291,  291,  291,  291,
      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
      291,  291,  291,  291,  295,    0,  295,  398,  398,  398,

      398,  398,  398,  398,    0,    0,    0,    0,  295,  295,
      295,  295,  295,  295,  410,  410,  410,  410,  410,  410,
      411,    0,  411,  411,  411,  411,  411,  411,    0,    0,
      295,  296,  414,  296,  414,  414,  414,  414,  414,  414,
      296,    0,  296,    0,    0,  296,  296,  296,  296,  296,
      296,  298,    0,  298,    0,  298,    0,  298,    0,    0,
      298,  298,    0,  298,  298,  423,  423,  423,  423,  423,
      423,  423,    0,    0,  298,    0,  298,    0,  759,    0,
      759,    0,  298,  298,  298,  299,    0,  299,    0,  299,
      759,  299,    0,    0,  299,  299,    0,  299,  299,  426,

        0,  426,  426,  426,  426,  426,  426,    0,  299,    0,
      299,    0,    0,    0,  759,    0,  299,  299,  299,  300,
        0,  300,    0,  300,    0,  300,    0,    0,  300,  300,
        0,  300,  300,  434,  434,  434,  434,  434,  434,    0,
        0,    0,  300,    0,  300,    0,    0,    0,    0,    0,
      300,  300,  300,  301,    0,  301,    0,  301,    0,  301,
        0,    0,  301,  301,    0,  301,  301,  301,  301,  301,
      301,  301,  301,  301,    0,    0,  301,    0,  301,  301,
      301,    0,    0,    0,  301,  301,  301,  301,  301,  301,
      301,  301,  301,  301,  301,  301,  301,  301,  301,  301,

      301,  301,  304,    0,  304,  444,  444,  444,  444,  444,
      444,    0,    0,    0,  304,    0,  304,  304,  304,  304,
      304,  304,  445,  445,  445,  445,  445,  445,  446,  446,
      446,  446,  446,  446,    0,    0,    0,    0,  304,  305,
        0,  305,  464,  464,  464,  464,  464,  464,  305,    0,
      305,  305,    0,  305,  305,  305,  305,  305,  305,  309,
        0,  309,    0,  309,    0,  309,    0,    0,  309,  309,
        0,  309,  309,  309,  309,  309,  309,  309,  309,  309,
      309,    0,  309,    0,  309,  309,  309,    0,    0,    0,
      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,

      309,  309,  309,  309,  309,  309,  309,  309,  310,    0,
      310,  310,  310,  310,  310,  310,  310,  311,  311,  311,
      311,  311,  311,  311,    0,    0,  447,    0,  311,  447,
      447,  447,  447,  447,  447,    0,  311,  311,  311,  311,
      311,  319,    0,  319,    0,  319,    0,  319,    0,    0,
      319,  319,    0,  319,  319,  319,  449,  449,  449,  449,
      449,  449,  449,    0,  319,    0,  319,    0,    0,    0,
        0,    0,  319,  319,  319,  321,    0,  321,    0,  321,
        0,  321,    0,    0,  321,  321,    0,  321,  321,  321,
      451,  451,  451,  451,  451,  451,  451,    0,  321,    0,

      321,    0,    0,    0,    0,    0,  321,  321,  321,  322,
        0,  322,    0,  322,    0,  322,    0,    0,  322,  322,
        0,  322,  322,  322,  469,  469,  469,  469,  469,  469,
        0,    0,  322,    0,  322,    0,    0,    0,    0,    0,
      322,  322,  322,  323,    0,  323,    0,  323,    0,  323,
        0,    0,  323,  323,    0,  323,  323,  323,  323,  323,
      323,  323,  323,  323,    0,    0,  323,    0,  323,  323,
      323,    0,    0,    0,  323,  323,  323,  323,  323,  323,
      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
      323,  323,  324,    0,  324,    0,  324,    0,  324,    0,

        0,  324,  324,    0,  324,  324,  324,  470,    0,  470,
      470,  470,  470,  470,  470,  324,    0,  324,    0,    0,
        0,    0,    0,  324,  324,  324,  325,    0,  325,    0,
      325,    0,  325,    0,    0,  325,  325,    0,  325,  325,
      325,  325,  325,  325,  325,  325,  325,    0,    0,  325,
        0,  325,  325,  325,    0,    0,    0,  325,  325,  325,
      325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
      325,  325,  325,  325,  325,  338,    0,  338,    0,  338,
        0,  338,    0,    0,  338,  338,    0,  338,  338,  338,
      338,  338,  338,  338,  338,  338,    0,    0,  338,    0,

      338,  338,  338,    0,    0,    0,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  340,    0,  340,    0,  340,    0,
      340,    0,    0,  340,  340,    0,  340,  340,  340,  340,
      340,  340,  340,  340,  340,    0,    0,  340,    0,  340,
      340,  340,    0,    0,    0,  340,  340,  340,  340,  340,
      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
      340,  340,  340,  341,  341,  341,  341,  341,  341,    0,
        0,    0,    0,    0,  341,  471,  471,  471,  471,  471,
      471,    0,  341,  341,  341,  341,  341,  342,    0,  342,

        0,  342,    0,  342,    0,    0,  342,  342,    0,  342,
      342,  342,  342,  342,  342,  342,  342,  342,    0,    0,
      342,    0,  342,  342,  342,    0,    0,    0,  342,  342,
      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
      342,  342,  342,  342,  342,  342,  343,  472,    0,  472,
      472,  472,  472,  472,  472,  481,  481,  481,  481,  481,
      481,    0,    0,    0,    0,    0,  343,    0,  343,  343,
      343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
      343,  343,  343,  345,    0,  345,    0,  345,    0,  345,
        0,    0,  345,  345,    0,  345,  345,  345,  345,  345,

      345,  345,  345,  345,    0,    0,  345,    0,  345,  345,
      345,    0,    0,    0,  345,  345,  345,  345,  345,  345,
      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
      345,  345,  352,  485,  352,  485,  485,  485,  485,  485,
      485,    0,    0,    0,    0,    0,  352,  352,  352,  352,
      352,  352,  486,    0,  486,  486,  486,  486,  486,  486,
      505,  505,  505,  505,  505,  505,    0,    0,  352,  353,
        0,  353,  506,  506,  506,  506,  506,  506,  353,    0,
      353,    0,    0,  353,  353,  353,  353,  353,  353,  355,
        0,  355,    0,  355,    0,  355,    0,    0,  355,  355,

        0,  355,  355,  508,  508,  508,  508,  508,  508,  508,
        0,    0,  355,    0,  355,    0,    0,    0,    0,    0,
      355,  355,  355,  356,    0,  356,    0,  356,    0,  356,
        0,    0,  356,  356,    0,  356,  356,  510,  510,  510,
      510,  510,  510,  510,    0,    0,  356,    0,  356,    0,
        0,    0,    0,    0,  356,  356,  356,  357,    0,  357,
        0,  357,    0,  357,    0,    0,  357,  357,    0,  357,
      357,  527,  527,  527,  527,  527,  527,  527,    0,    0,
      357,    0,  357,    0,    0,    0,    0,    0,  357,  357,
      357,  358,    0,  358,    0,  358,    0,  358,    0,    0,

      358,  358,    0,  358,  358,  358,  358,  358,  358,  358,
      358,  358,    0,    0,  358,    0,  358,  358,  358,    0,
        0,    0,  358,  358,  358,  358,  358,  358,  358,  358,
      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
      363,  534,  363,  534,  534,  534,  534,  534,  534,    0,
        0,    0,  363,    0,  363,  363,  363,  363,  363,  363,
      536,  536,  536,  536,  536,  536,  550,    0,  550,  550,
      550,  550,  550,  550,    0,    0,  363,  364,    0,  364,
      551,  551,  551,  551,  551,  551,  364,    0,  364,  364,
        0,  364,  364,  364,  364,  364,  364,  367,    0,  367,

        0,  367,    0,  367,    0,    0,  367,  367,    0,  367,
      367,  367,  367,  367,  367,  367,  367,  367,  367,    0,
      367,    0,  367,  367,  367,    0,    0,    0,  367,  367,
      367,  367,  367,  367,  367,  367,  367,  367,  367,  367,
      367,  367,  367,  367,  367,  367,  369,    0,  369,  369,
      369,  369,  369,  369,  369,  377,    0,  377,    0,  377,
        0,  377,    0,    0,  377,  377,    0,  377,  377,  377,
      569,  569,  569,  569,  569,  569,    0,    0,  377,    0,
      377,    0,    0,    0,    0,    0,  377,  377,  377,  378,
        0,  378,    0,  378,    0,  378,    0,    0,  378,  378,

        0,  378,  378,  378,  579,  579,  579,  579,  579,  579,
        0,    0,  378,    0,  378,    0,    0,    0,    0,    0,
      378,  378,  378,  379,    0,  379,    0,  379,    0,  379,
        0,    0,  379,  379,    0,  379,  379,  379,  379,  379,
      379,  379,  379,  379,    0,    0,  379,    0,  379,  379,
      379,    0,    0,    0,  379,  379,  379,  379,  379,  379,
      379,  379,  379,  379,  379,  379,  379,  379,  379,  379,
      379,  379,  380,    0,  380,    0,  380,    0,  380,    0,
        0,  380,  380,    0,  380,  380,  380,  584,  584,  584,
      584,  584,  584,    0,    0,  380,    0,  380,    0,    0,

        0,    0,    0,  380,  380,  380,  381,    0,  381,    0,
      381,    0,  381,    0,    0,  381,  381,    0,  381,  381,
      381,  381,  381,  381,  381,  381,  381,    0,    0,  381,
        0,  381,  381,  381,    0,    0,    0,  381,  381,  381,
      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
      381,  381,  381,  381,  381,  394,    0,  394,    0,  394,
        0,  394,    0,    0,  394,  394,    0,  394,  394,  394,
      394,  394,  394,  394,  394,  394,    0,    0,  394,    0,
      394,  394,  394,    0,    0,    0,  394,  394,  394,  394,
      394,  394,  394,  394,  394,  394,  394,  394,  394,  394,

      394,  394,  394,  394,  396,  396,  590,  590,  590,  590,
      590,  590,    0,  396,  593,  593,  593,  593,  593,  593,
        0,    0,    0,    0,  396,    0,  396,  396,  396,  396,
      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
      396,  399,  399,  399,  399,  399,  399,    0,    0,    0,
        0,    0,  399,  605,  605,  605,  605,  605,  605,    0,
      399,  399,  399,  399,  399,  400,  400,  400,  400,  400,
      400,    0,    0,    0,    0,    0,  400,  603,  603,  603,
      603,  603,  603,    0,  400,  400,  400,  400,  400,  402,
      402,    0,    0,  603,    0,    0,    0,    0,  402,  606,

      606,  606,  606,  606,  606,  606,    0,    0,    0,  402,
        0,  402,  402,  402,  402,  402,  402,  402,  402,  402,
      402,  402,  402,  402,  402,  402,  408,  408,  613,  613,
      613,  613,  613,  613,  607,  408,  607,  607,  607,  607,
      607,  607,    0,    0,    0,    0,  408,    0,  408,  408,
      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
      408,  408,  408,  416,  608,  416,  608,  608,  608,  608,
      608,  608,    0,    0,    0,    0,    0,  416,  416,  416,
      416,  416,  416,  609,    0,  609,  609,  609,  609,  609,
      609,  639,  639,  639,  639,  639,  639,  639,    0,  416,

      417,  667,  417,  667,  667,  667,  667,  667,  667,  417,
        0,  417,    0,    0,  417,  417,  417,  417,  417,  417,
      419,    0,  419,    0,  419,    0,  419,    0,    0,  419,
      419,    0,  419,  419,  644,  644,  644,  644,  644,  644,
      644,    0,    0,  419,    0,  419,    0,    0,    0,    0,
        0,  419,  419,  419,  420,    0,  420,    0,  420,    0,
      420,    0,    0,  420,  420,    0,  420,  420,  648,  648,
      648,  648,  648,  648,  648,    0,    0,  420,    0,  420,
        0,    0,    0,    0,    0,  420,  420,  420,  421,    0,
      421,    0,  421,    0,  421,    0,    0,  421,  421,    0,

      421,  421,  668,  668,  668,  668,  668,  668,    0,    0,
        0,  421,    0,  421,    0,    0,    0,    0,    0,  421,
      421,  421,  422,    0,  422,    0,  422,    0,  422,    0,
        0,  422,  422,    0,  422,  422,  422,  422,  422,  422,
      422,  422,  422,    0,    0,  422,    0,  422,  422,  422,
        0,    0,    0,  422,  422,  422,  422,  422,  422,  422,
      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
      422,  425,  425,  425,  425,  425,  425,  425,  425,  428,
        0,  428,    0,  705,  705,  705,  705,  705,  705,    0,
        0,  428,    0,  428,  428,  428,  428,  428,  428,  705,

      706,    0,    0,  706,  706,  706,  706,  706,  706,  707,
      707,  707,  707,  707,  707,  428,  429,  709,  429,  709,
      709,  709,  709,  709,  709,  429,    0,  429,  429,    0,
      429,  429,  429,  429,  429,  429,  432,    0,  432,    0,
      432,    0,  432,    0,    0,  432,  432,    0,  432,  432,
      432,  432,  432,  432,  432,  432,  432,  432,    0,  432,
        0,  432,  432,  432,    0,    0,    0,  432,  432,  432,
      432,  432,  432,  432,  432,  432,  432,  432,  432,  432,
      432,  432,  432,  432,  432,  433,    0,  433,  433,  433,
      433,  433,  433,  433,  439,    0,  439,    0,  439,    0,

      439,    0,    0,  439,  439,    0,  439,  439,  439,  708,
      708,  708,  708,  708,  708,  708,    0,  439,    0,  439,
        0,    0,    0,    0,    0,  439,  439,  439,  440,    0,
      440,    0,  440,    0,  440,    0,    0,  440,  440,    0,
      440,  440,  440,  710,    0,  710,  710,  710,  710,  710,
      710,  440,    0,  440,    0,    0,    0,    0,    0,  440,
      440,  440,  441,    0,  441,    0,  441,    0,  441,    0,
        0,  441,  441,    0,  441,  441,  441,  441,  441,  441,
      441,  441,  441,    0,    0,  441,    0,  441,  441,  441,
        0,    0,    0,  441,  441,  441,  441,  441,  441,  441,

      441,  441,  441,  441,  441,  441,  441,  441,  441,  441,
      441,  442,    0,  442,    0,  442,    0,  442,    0,    0,
      442,  442,    0,  442,  442,  442,  711,    0,  711,  711,
      711,  711,  711,  711,  442,    0,  442,    0,    0,    0,
        0,    0,  442,  442,  442,  443,    0,  443,    0,  443,
        0,  443,    0,    0,  443,  443,    0,  443,  443,  443,
      443,  443,  443,  443,  443,  443,    0,    0,  443,    0,
      443,  443,  443,    0,    0,    0,  443,  443,  443,  443,
      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
      443,  443,  443,  443,  457,  457,  715,  715,  715,  715,

      715,  715,  457,  457,  457,  457,  457,  457,  457,  457,
      457,  457,  457,  457,  457,  457,  457,  460,  460,  460,
      460,  460,  460,    0,    0,    0,    0,    0,  460,  742,
      742,  742,  742,  742,  742,    0,  460,  460,  460,  460,
      460,  461,  461,  461,  461,  461,  461,    0,    0,    0,
      743,    0,  461,  743,  743,  743,  743,  743,  743,    0,
      461,  461,  461,  461,  461,  474,  749,  474,    0,  749,
      749,  749,  749,  749,  749,    0,    0,    0,    0,  474,
      474,  474,  474,  474,  474,  753,    0,  753,  753,  753,
      753,  753,  753,  754,  754,  754,  754,  754,  754,    0,

        0,  474,  475,    0,  475,  758,  758,  758,  758,  758,
      758,  475,    0,  475,    0,    0,  475,  475,  475,  475,
      475,  475,  477,    0,  477,    0,  477,    0,  477,    0,
        0,  477,  477,    0,  477,  477,  771,  771,  771,  771,
      771,  771,  771,    0,    0,  477,    0,  477,    0,    0,
        0,    0,    0,  477,  477,  477,  478,    0,  478,    0,
      478,    0,  478,    0,    0,  478,  478,    0,  478,  478,
      786,    0,  786,  786,  786,  786,  786,  786,    0,  478,
        0,  478,    0,    0,    0,    0,    0,  478,  478,  478,
      479,    0,  479,    0,  479,    0,  479,    0,    0,  479,

      479,    0,  479,  479,  787,  787,  787,  787,  787,  787,
        0,    0,    0,  479,    0,  479,    0,    0,    0,    0,
        0,  479,  479,  479,  480,    0,  480,    0,  480,    0,
      480,    0,    0,  480,  480,    0,  480,  480,  480,  790,
      790,  790,  790,  790,  790,    0,    0,  480,    0,  480,
        0,    0,    0,    0,    0,  480,  480,  480,  482,    0,
      482,    0,  482,    0,  482,    0,    0,  482,  482,    0,
      482,  482,  482,  482,  482,  482,  482,  482,  482,    0,
        0,  482,    0,  482,  482,  482,    0,    0,    0,  482,
      482,  482,  482,  482,  482,  482,  482,  482,  482,  482,

      482,  482,  482,  482,  482,  482,  482,  483,    0,  483,
        0,  483,    0,  483,    0,    0,  483,  483,    0,  483,
      483,  483,  798,  798,  798,  798,  798,  798,  798,    0,
      483,    0,  483,    0,    0,    0,    0,    0,  483,  483,
      483,  487,    0,  487,  799,  799,  799,  799,  799,  799,
        0,    0,    0,  487,    0,  487,  487,  487,  487,  487,
      487,  804,  804,  804,  804,  804,  804,  806,  806,  806,
      806,  806,  806,    0,    0,    0,    0,  487,  488,    0,
      488,  811,  811,  811,  811,  811,  811,  488,    0,  488,
        0,    0,  488,  488,  488,  488,  488,  488,  491,  491,

      491,  491,  491,    0,  491,    0,    0,  491,  491,    0,
      491,  491,  491,  491,  491,  491,  491,  491,  491,  491,
        0,  491,    0,  491,  491,  491,    0,    0,    0,  491,
      491,  491,  491,  491,  491,  491,  491,  491,  491,  491,
      491,  491,  491,  491,  491,  491,  491,  492,    0,  492,
      812,  812,  812,  812,  812,  812,    0,    0,    0,  492,
        0,  492,  492,  492,  492,  492,  492,  492,  499,    0,
      499,    0,  499,    0,  499,    0,    0,  499,  499,    0,
      499,  499,  499,  817,  817,  817,  817,  817,  817,    0,
        0,  499,    0,  499,    0,    0,    0,    0,    0,  499,

      499,  499,  500,    0,  500,    0,  500,    0,  500,    0,
        0,  500,  500,    0,  500,  500,  500,  821,  821,  821,
      821,  821,  821,    0,    0,  500,    0,  500,    0,    0,
        0,    0,    0,  500,  500,  500,  501,  822,  822,  822,
      822,  822,  822,  824,  824,  824,  824,  824,  824,  501,
      501,  825,  825,  825,  825,  825,  825,  501,  501,  501,
      501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
      501,  501,  502,    0,  502,    0,  502,    0,  502,    0,
        0,  502,  502,    0,  502,  502,  502,    0,    0,    0,
        0,    0,    0,    0,    0,  502,    0,  502,    0,    0,

        0,    0,    0,  502,  502,  502,  503,    0,  503,    0,
      503,    0,  503,    0,    0,  503,  503,    0,  503,  503,
      503,  503,  503,  503,  503,  503,  503,    0,    0,  503,
        0,  503,  503,  503,    0,    0,    0,  503,  503,  503,
      503,  503,  503,  503,  503,  503,  503,  503,  503,  503,
      503,  503,  503,  503,  503,  519,  519,    0,    0,    0,
        0,    0,    0,  519,  519,  519,  519,  519,  519,  519,
      519,  519,  519,  519,  519,  519,  519,  519,  523,  523,
      523,  523,  523,  523,    0,    0,    0,    0,    0,  523,
        0,    0,    0,    0,    0,    0,    0,  523,  523,  523,

      523,  523,  524,  524,  524,  524,  524,  524,    0,    0,
        0,    0,    0,  524,    0,    0,    0,    0,    0,    0,
        0,  524,  524,  524,  524,  524,  538,    0,  538,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      538,  538,  538,  538,  538,  538,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  538,  539,    0,  539,    0,    0,    0,    0,
        0,    0,  539,    0,  539,    0,    0,  539,  539,  539,
      539,  539,  539,  541,    0,  541,    0,  541,    0,  541,
        0,    0,  541,  541,    0,  541,  541,    0,    0,    0,

        0,    0,    0,    0,    0,    0,  541,    0,  541,    0,
        0,    0,    0,    0,  541,  541,  541,  542,    0,  542,
        0,  542,    0,  542,    0,    0,  542,  542,    0,  542,
      542,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      542,    0,  542,    0,    0,    0,    0,    0,  542,  542,
      542,  543,    0,  543,    0,  543,    0,  543,    0,    0,
      543,  543,    0,  543,  543,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  543,    0,  543,    0,    0,    0,
        0,    0,  543,  543,  543,  544,    0,  544,    0,  544,
        0,  544,    0,    0,  544,  544,    0,  544,  544,  544,

        0,    0,    0,    0,    0,    0,    0,    0,  544,    0,
      544,    0,    0,    0,    0,    0,  544,  544,  544,  545,
        0,  545,  545,  545,  545,  545,  545,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  545,  546,    0,
      546,    0,  546,    0,  546,    0,    0,  546,  546,    0,
      546,  546,  546,    0,    0,    0,    0,    0,    0,    0,
        0,  546,    0,  546,    0,    0,    0,    0,    0,  546,
      546,  546,  548,  548,  548,  548,  548,  548,  548,  548,
      552,    0,  552,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  552,    0,  552,  552,  552,  552,  552,  552,

        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  552,  553,    0,  553,
        0,    0,    0,    0,    0,    0,  553,    0,  553,  553,
        0,  553,  553,  553,  553,  553,  553,  557,    0,  557,
        0,  557,    0,  557,    0,    0,  557,  557,    0,  557,
      557,  557,  557,  557,  557,  557,  557,  557,  557,    0,
      557,    0,  557,  557,  557,    0,    0,    0,  557,  557,
      557,  557,  557,  557,  557,  557,  557,  557,  557,  557,
      557,  557,  557,  557,  557,  557,  558,    0,  558,  558,
      558,  558,  558,  558,  558,  563,    0,  563,    0,  563,

        0,  563,    0,    0,  563,  563,    0,  563,  563,  563,
        0,    0,    0,    0,    0,    0,    0,    0,  563,    0,
      563,    0,    0,    0,    0,    0,  563,  563,  563,  564,
        0,  564,    0,  564,    0,  564,    0,    0,  564,  564,
        0,  564,  564,  564,    0,    0,    0,    0,    0,    0,
        0,    0,  564,    0,  564,    0,    0,    0,    0,    0,
      564,  564,  564,  565,  565,    0,    0,    0,    0,    0,
        0,  565,  565,  565,  565,  565,  565,  565,  565,  565,
      565,  565,  565,  565,  565,  565,  566,    0,  566,    0,
      566,    0,  566,    0,    0,  566,  566,    0,  566,  566,

      566,    0,    0,    0,    0,    0,    0,    0,    0,  566,
        0,  566,    0,    0,    0,    0,    0,  566,  566,  566,
      567,    0,  567,    0,  567,    0,  567,    0,    0,  567,
      567,    0,  567,  567,  567,  567,  567,  567,  567,  567,
      567,    0,    0,  567,    0,  567,  567,  567,    0,    0,
        0,  567,  567,  567,  567,  567,  567,  567,  567,  567,
      567,  567,  567,  567,  567,  567,  567,  567,  567,  573,
        0,  573,    0,  573,    0,  573,    0,    0,  573,  573,
        0,  573,  573,  573,  573,  573,  573,  573,  573,  573,
      573,    0,  573,    0,  573,  573,  573,    0,    0,    0,

      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
      573,  573,  573,  573,  573,  573,  573,  573,  578,  578,
        0,    0,    0,    0,    0,    0,  578,  578,  578,  578,
      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
      578,  582,  582,  582,  582,  582,  582,    0,    0,    0,
        0,    0,  582,    0,    0,    0,    0,    0,    0,    0,
      582,  582,  582,  582,  582,  583,  583,  583,  583,  583,
      583,    0,    0,    0,    0,    0,  583,    0,    0,    0,
        0,    0,    0,    0,  583,  583,  583,  583,  583,  595,
        0,  595,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,  595,  595,  595,  595,  595,  595,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  595,  596,    0,  596,    0,
        0,    0,    0,    0,    0,  596,    0,  596,    0,    0,
      596,  596,  596,  596,  596,  596,  598,    0,  598,    0,
      598,    0,  598,    0,    0,  598,  598,    0,  598,  598,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  598,
        0,  598,    0,    0,    0,    0,    0,  598,  598,  598,
      599,    0,  599,    0,  599,    0,  599,    0,    0,  599,
      599,    0,  599,  599,    0,    0,    0,    0,    0,    0,

        0,    0,    0,  599,    0,  599,    0,    0,    0,    0,
        0,  599,  599,  599,  600,    0,  600,    0,  600,    0,
      600,    0,    0,  600,  600,    0,  600,  600,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  600,    0,  600,
        0,    0,    0,    0,    0,  600,  600,  600,  601,    0,
      601,    0,  601,    0,  601,    0,    0,  601,  601,    0,
      601,  601,  601,    0,    0,    0,    0,    0,    0,    0,
        0,  601,    0,  601,    0,    0,    0,    0,    0,  601,
      601,  601,  602,    0,  602,    0,  602,    0,  602,    0,
        0,  602,  602,    0,  602,  602,  602,    0,    0,    0,

        0,    0,    0,    0,    0,  602,    0,  602,    0,    0,
        0,    0,    0,  602,  602,  602,  604,    0,  604,  604,
        0,  604,  604,  604,  604,  604,  604,    0,    0,    0,
        0,  604,  610,    0,  610,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  610,    0,  610,  610,  610,  610,
      610,  610,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  610,  611,
        0,  611,    0,    0,    0,    0,    0,    0,  611,    0,
      611,    0,    0,  611,  611,  611,  611,  611,  611,  615,
        0,  615,    0,  615,    0,  615,    0,    0,  615,  615,

        0,  615,  615,  615,  615,  615,  615,  615,  615,  615,
      615,    0,  615,    0,  615,  615,  615,    0,    0,    0,
      615,  615,  615,  615,  615,  615,  615,  615,  615,  615,
      615,  615,  615,  615,  615,  615,  615,  615,  616,    0,
      616,  616,  616,  616,  616,  616,  616,  623,    0,  623,
        0,  623,    0,  623,    0,    0,  623,  623,    0,  623,
      623,  623,    0,    0,    0,    0,    0,    0,    0,    0,
      623,    0,  623,    0,    0,    0,    0,    0,  623,  623,
      623,  624,    0,  624,    0,  624,    0,  624,    0,    0,
      624,  624,    0,  624,  624,  624,    0,    0,    0,    0,

        0,    0,    0,    0,  624,    0,  624,    0,    0,    0,
        0,    0,  624,  624,  624,  625,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  625,  625,
        0,    0,    0,    0,    0,    0,  625,  625,  625,  625,
      625,  625,  625,  625,  625,  625,  625,  625,  625,  625,
      625,  626,    0,  626,    0,  626,    0,  626,    0,    0,
      626,  626,    0,  626,  626,  626,    0,    0,    0,    0,
        0,    0,    0,    0,  626,    0,  626,    0,    0,    0,
        0,    0,  626,  626,  626,  627,    0,  627,    0,  627,
        0,  627,    0,    0,  627,  627,    0,  627,  627,  627,

      627,  627,  627,  627,  627,  627,    0,    0,  627,    0,
      627,  627,  627,    0,    0,    0,  627,  627,  627,  627,
      627,  627,  627,  627,  627,  627,  627,  627,  627,  627,
      627,  627,  627,  627,  630,    0,  630,    0,  630,    0,
      630,    0,    0,  630,  630,    0,  630,  630,  630,  630,
      630,  630,  630,  630,  630,  630,    0,  630,    0,  630,
      630,  630,    0,    0,    0,  630,  630,  630,  630,  630,
      630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
      630,  630,  630,  638,  638,  638,  638,  638,  638,    0,
        0,    0,    0,    0,  638,    0,    0,    0,    0,    0,

        0,    0,  638,  638,  638,  638,  638,  642,  642,  642,
      642,  642,  642,    0,    0,    0,    0,    0,  642,    0,
        0,    0,    0,    0,    0,    0,  642,  642,  642,  642,
      642,  643,  643,  643,  643,  643,  643,    0,    0,    0,
        0,    0,  643,    0,    0,    0,    0,    0,    0,    0,
      643,  643,  643,  643,  643,  653,    0,  653,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  653,
      653,  653,  653,  653,  653,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  653,  654,    0,  654,    0,    0,    0,    0,    0,

        0,  654,    0,  654,    0,    0,  654,  654,  654,  654,
      654,  654,  656,    0,  656,    0,  656,    0,  656,    0,
        0,  656,  656,    0,  656,  656,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  656,    0,  656,    0,    0,
        0,    0,    0,  656,  656,  656,  657,    0,  657,    0,
      657,    0,  657,    0,    0,  657,  657,    0,  657,  657,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  657,
        0,  657,    0,    0,    0,    0,    0,  657,  657,  657,
      658,    0,  658,    0,  658,    0,  658,    0,    0,  658,
      658,    0,  658,  658,    0,    0,    0,    0,    0,    0,

        0,    0,    0,  658,    0,  658,    0,    0,    0,    0,
        0,  658,  658,  658,  659,    0,  659,    0,  659,    0,
      659,    0,    0,  659,  659,    0,  659,  659,  659,    0,
        0,    0,    0,    0,    0,    0,    0,  659,    0,  659,
        0,    0,    0,    0,    0,  659,  659,  659,  660,    0,
      660,    0,  660,    0,  660,    0,    0,  660,  660,    0,
      660,  660,  660,    0,    0,    0,    0,    0,    0,    0,
        0,  660,    0,  660,    0,    0,    0,    0,    0,  660,
      660,  660,  661,    0,  661,  661,  661,  661,  661,  661,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

      661,  663,  663,    0,  663,  663,  663,  663,  663,  663,
        0,    0,    0,    0,  663,  665,  665,  665,  665,  665,
      665,  665,  665,  669,    0,  669,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  669,    0,  669,  669,  669,
      669,  669,  669,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  669,
      670,    0,  670,    0,    0,    0,    0,    0,    0,  670,
        0,  670,  670,    0,  670,  670,  670,  670,  670,  670,
      674,    0,  674,    0,  674,    0,  674,    0,    0,  674,
      674,    0,  674,  674,  674,  674,  674,  674,  674,  674,

      674,  674,    0,  674,    0,  674,  674,  674,    0,    0,
        0,  674,  674,  674,  674,  674,  674,  674,  674,  674,
      674,  674,  674,  674,  674,  674,  674,  674,  674,  675,
        0,  675,  675,  675,  675,  675,  675,  675,  680,    0,
      680,    0,  680,    0,  680,    0,    0,  680,  680,    0,
      680,  680,  680,    0,    0,    0,    0,    0,    0,    0,
        0,  680,    0,  680,    0,    0,    0,    0,    0,  680,
      680,  680,  681,    0,  681,    0,  681,    0,  681,    0,
        0,  681,  681,    0,  681,  681,  681,    0,    0,    0,
        0,    0,    0,    0,    0,  681,    0,  681,    0,    0,

        0,    0,    0,  681,  681,  681,  682,  682,    0,    0,
        0,    0,    0,    0,  682,  682,  682,  682,  682,  682,
      682,  682,  682,  682,  682,  682,  682,  682,  682,  683,
        0,  683,    0,  683,    0,  683,    0,    0,  683,  683,
        0,  683,  683,  683,    0,    0,    0,    0,    0,    0,
        0,    0,  683,    0,  683,    0,    0,    0,    0,    0,
      683,  683,  683,  684,    0,  684,    0,  684,    0,  684,
        0,    0,  684,  684,    0,  684,  684,  684,  684,  684,
      684,  684,  684,  684,    0,    0,  684,    0,  684,  684,
      684,    0,    0,    0,  684,  684,  684,  684,  684,  684,

      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
      684,  684,  686,    0,  686,    0,  686,    0,  686,    0,
        0,  686,  686,    0,  686,  686,  686,  686,  686,  686,
      686,  686,  686,  686,    0,  686,    0,  686,  686,  686,
        0,    0,    0,  686,  686,  686,  686,  686,  686,  686,
      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
      686,  689,  689,  689,  689,  689,  689,    0,    0,    0,
        0,    0,  689,    0,    0,    0,    0,    0,    0,    0,
      689,  689,  689,  689,  689,  690,  690,  690,  690,  690,
      690,    0,    0,    0,    0,    0,  690,    0,    0,    0,

        0,    0,    0,    0,  690,  690,  690,  690,  690,  697,
        0,  697,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  697,  697,  697,  697,  697,  697,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  697,  698,    0,  698,    0,
        0,    0,    0,    0,    0,  698,    0,  698,    0,    0,
      698,  698,  698,  698,  698,  698,  700,    0,  700,    0,
      700,    0,  700,    0,    0,  700,  700,    0,  700,  700,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  700,
        0,  700,    0,    0,    0,    0,    0,  700,  700,  700,

      701,    0,  701,    0,  701,    0,  701,    0,    0,  701,
      701,    0,  701,  701,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  701,    0,  701,    0,    0,    0,    0,
        0,  701,  701,  701,  702,    0,  702,    0,  702,    0,
      702,    0,    0,  702,  702,    0,  702,  702,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  702,    0,  702,
        0,    0,    0,    0,    0,  702,  702,  702,  703,    0,
      703,    0,  703,    0,  703,    0,    0,  703,  703,    0,
      703,  703,  703,    0,    0,    0,    0,    0,    0,    0,
        0,  703,    0,  703,    0,    0,    0,    0,    0,  703,

      703,  703,  704,    0,  704,    0,  704,    0,  704,    0,
        0,  704,  704,    0,  704,  704,  704,    0,    0,    0,
        0,    0,    0,    0,    0,  704,    0,  704,    0,    0,
        0,    0,    0,  704,  704,  704,  712,    0,  712,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  712,    0,
      712,  712,  712,  712,  712,  712,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  712,  713,    0,  713,    0,    0,    0,    0,
        0,    0,  713,    0,  713,    0,    0,  713,  713,  713,
      713,  713,  713,  717,    0,  717,    0,  717,    0,  717,

        0,    0,  717,  717,    0,  717,  717,  717,  717,  717,
      717,  717,  717,  717,  717,    0,  717,    0,  717,  717,
      717,    0,    0,    0,  717,  717,  717,  717,  717,  717,
      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
      717,  717,  718,    0,  718,  718,  718,  718,  718,  718,
      718,  725,    0,  725,    0,  725,    0,  725,    0,    0,
      725,  725,    0,  725,  725,  725,    0,    0,    0,    0,
        0,    0,    0,    0,  725,    0,  725,    0,    0,    0,
        0,    0,  725,  725,  725,  726,    0,  726,    0,  726,
        0,  726,    0,    0,  726,  726,    0,  726,  726,  726,

        0,    0,    0,    0,    0,    0,    0,    0,  726,    0,
      726,    0,    0,    0,    0,    0,  726,  726,  726,  727,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  727,  727,    0,    0,    0,    0,    0,    0,
      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
      727,  727,  727,  727,  727,  728,    0,  728,    0,  728,
        0,  728,    0,    0,  728,  728,    0,  728,  728,  728,
        0,    0,    0,    0,    0,    0,    0,    0,  728,    0,
      728,    0,    0,    0,    0,    0,  728,  728,  728,  729,
        0,  729,    0,  729,    0,  729,    0,    0,  729,  729,

        0,  729,  729,  729,  729,  729,  729,  729,  729,  729,
        0,    0,  729,    0,  729,  729,  729,    0,    0,    0,
      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
      729,  729,  729,  729,  729,  729,  729,  729,  730,    0,
      730,    0,  730,    0,  730,    0,    0,  730,  730,    0,
      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
        0,  730,    0,  730,  730,  730,    0,    0,    0,  730,
      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
      730,  730,  730,  730,  730,  730,  730,  733,  733,  733,
      733,  733,  733,    0,    0,    0,    0,    0,  733,    0,

        0,    0,    0,    0,    0,    0,  733,  733,  733,  733,
      733,  744,  744,    0,  744,  744,  744,  744,  744,  744,
      746,    0,  746,    0,  746,    0,  746,    0,    0,  746,
      746,    0,    0,  746,  746,    0,    0,    0,    0,    0,
        0,    0,    0,  746,    0,  746,    0,    0,    0,    0,
        0,  746,    0,  746,  747,    0,  747,    0,  747,    0,
      747,    0,    0,  747,  747,    0,    0,  747,  747,    0,
        0,    0,    0,    0,    0,    0,    0,  747,    0,  747,
        0,    0,    0,    0,    0,  747,    0,  747,  748,    0,
        0,  748,  748,  748,  748,  748,  748,    0,    0,    0,

        0,    0,    0,    0,    0,    0,    0,  748,  751,  751,
      751,  751,  751,  751,  751,  751,  755,    0,  755,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  755,    0,
      755,  755,  755,  755,  755,  755,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  755,  756,    0,  756,    0,    0,    0,    0,
        0,    0,  756,    0,  756,  756,    0,  756,  756,  756,
      756,  756,  756,  760,    0,  760,    0,  760,    0,  760,
        0,    0,  760,  760,    0,  760,  760,  760,  760,  760,
      760,  760,  760,  760,  760,    0,  760,    0,  760,  760,

      760,    0,    0,    0,  760,  760,  760,  760,  760,  760,
      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
      760,  760,  761,    0,  761,  761,  761,  761,  761,  761,
      761,  766,    0,  766,    0,  766,    0,  766,    0,    0,
      766,  766,    0,  766,  766,  766,    0,    0,    0,    0,
        0,    0,    0,    0,  766,    0,  766,    0,    0,    0,
        0,    0,  766,  766,  766,  767,    0,  767,    0,  767,
        0,  767,    0,    0,  767,  767,    0,  767,  767,  767,
        0,    0,    0,    0,    0,    0,    0,    0,  767,    0,
      767,    0,    0,    0,    0,    0,  767,  767,  767,  768,

      768,    0,    0,    0,    0,    0,    0,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  828,  828,  828,  828,  828,  828,  828,  828,
      828,  828,  828,  828,  828,  828,  828,  828,  828,  829,
      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
      829,  829,  829,  829,  829,  829,  830,  830,  830,  830,
      830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
      830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
      832,  832,  832,  832,  832,  832,  832,  832,  832,  832,

      832,  832,  832,  832,  832,  832,  832,  833,  833,  833,
      833,  833,  833,  833,  833,  833,  833,  833,  833,  833,
      833,  833,  833,  833,  834,  834,    0,  834,  834,  834,
      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
      834,  835,    0,    0,  835,  835,    0,  835,  835,  835,
      835,  836,  836,    0,  836,    0,  836,  836,  836,  836,
      836,  836,  836,  836,  836,  836,  836,  836,  837,  837,
      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
      837,  837,  837,  837,  837,  838,  838,    0,  838,  838,
      838,  838,  838,  838,  838,  838,  838,  838,  838,  838,

      838,  838,  839,  839,    0,  839,  839,  839,  839,  839,
      839,  839,  839,  839,  839,  839,  839,  839,  839,  840,
      840,    0,  840,  840,  840,  840,  840,  840,  840,  840,
      840,  840,  840,  840,  840,  840,  841,    0,    0,    0,
      841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
      841,  841,  841,  842,  842,    0,  842,  842,  842,  842,
      842,  842,  842,  842,  842,  842,  842,  842,  842,  842,
      843,    0,  843,    0,    0,    0,  843,  843,  843,  843,
      843,    0,  843,  843,  843,  843,  843,  844,  844,    0,
        0,    0,  844,  844,  844,  844,  844,  844,  844,    0,

      844,  844,  844,  844,  845,  845,  845,  845,  845,  845,
      845,  845,  845,  845,  845,  845,  845,  845,  845,  845,
      845,  846,  846,  846,    0,    0,  846,  846,    0,  846,
      847,    0,  847,    0,    0,    0,  847,  847,  847,  847,
      847,    0,  847,  847,  847,  847,  847,  848,  848,    0,
      848,  848,  848,  848,  848,  848,  848,  848,  848,  848,
      848,  848,  848,  848,  849,    0,  849,    0,    0,    0,
      849,  849,    0,  849,  849,    0,  849,  849,  849,  849,
      849,  850,  850,  850,  850,  850,  850,  850,  850,  850,
      850,  850,  850,  850,  850,  850,  850,  850,  851,  851,

      851,    0,    0,  851,  851,    0,  851,  852,    0,  852,
        0,    0,    0,  852,  852,  852,  852,  852,    0,  852,
      852,  852,  852,  852,  853,    0,  853,    0,    0,    0,
      853,  853,  853,  853,  853,    0,  853,  853,  853,  853,
      853,  854,  854,    0,    0,  854,    0,    0,  854,  855,
        0,  855,    0,    0,    0,  855,  855,  855,  855,  855,
        0,  855,  855,  855,  855,  855,  856,  856,    0,  856,
      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
      856,  856,  856,  857,  857,  857,    0,    0,  857,  857,
        0,  857,  858,    0,  858,    0,    0,    0,  858,  858,

      858,  858,  858,    0,  858,  858,  858,  858,  858,  859,
        0,  859,    0,    0,    0,  859,  859,  859,  859,  859,
        0,  859,  859,  859,  859,  859,  860,  860,  860,    0,
      860,    0,    0,  860,  861,    0,  861,    0,    0,    0,
      861,  861,  861,  861,  861,    0,  861,  861,  861,  861,
      861,  862,    0,  862,    0,    0,    0,  862,  862,    0,
      862,  862,    0,  862,  862,  862,  862,  862,  863,    0,
        0,  863,    0,    0,  863,  863,  863,  863,  864,  864,
      864,    0,    0,  864,  864,    0,  864,  865,    0,  865,
        0,    0,  865,  865,    0,    0,  865,  866,    0,  866,

        0,    0,    0,  866,  866,  866,  866,  866,    0,  866,
      866,  866,  866,  866,  867,    0,  867,    0,    0,    0,
      867,  867,  867,  867,  867,    0,  867,  867,  867,  867,
      867,  868,  868,    0,  868,    0,    0,  868,  869,  869,
      869,    0,  869,    0,    0,  869,  870,    0,    0,  870,
        0,    0,  870,  871,    0,  871,    0,    0,    0,  871,
      871,  871,  871,  871,    0,  871,  871,  871,  871,  871,
      872,    0,  872,    0,    0,    0,  872,  872,  872,  872,
      872,    0,  872,  872,  872,  872,  872,  873,    0,  873,
        0,    0,    0,  873,  873,  873,  873,  873,  873,  873,

      873,  873,  873,  873,  874,    0,  874,    0,    0,    0,
      874,  874,  874,  874,  874,    0,  874,  874,  874,  874,
      874,  875,    0,  875,    0,    0,    0,  875,  875,  875,
      875,  875,    0,  875,  875,  875,  875,  875,  876,  876,
        0,  876,    0,    0,  876,  876,  876,  876,  877,    0,
      877,    0,    0,    0,  877,  877,  877,  877,  877,    0,
      877,  877,  877,  877,  877,  878,  878,  878,    0,    0,
      878,  878,    0,  878,  879,    0,  879,    0,    0,    0,
      879,  879,  879,  879,  879,    0,  879,  879,  879,  879,
      879,  880,    0,  880,    0,    0,    0,  880,  880,  880,

      880,  880,    0,  880,  880,  880,  880,  880,  881,  881,
        0,  881,    0,    0,  881,  882,  882,  882,    0,  882,
        0,    0,  882,  883,  883,  883,    0,  883,    0,    0,
      883,  884,    0,  884,    0,    0,    0,  884,  884,  884,
      884,  884,    0,  884,  884,  884,  884,  884,  885,    0,
      885,    0,    0,    0,  885,  885,  885,  885,  885,    0,
      885,  885,  885,  885,  885,  886,    0,    0,  886,    0,
        0,  886,  886,  886,  886,  887,  887,  887,    0,    0,
      887,  887,    0,  887,  888,    0,  888,    0,    0,    0,
      888,  888,  888,  888,  888,    0,  888,  888,  888,  888,

      888,  889,    0,  889,    0,    0,    0,  889,  889,  889,
      889,  889,    0,  889,  889,  889,  889,  889,  890,  890,
        0,  890,    0,    0,  890,  891,  891,    0,  891,    0,
        0,  891,  892,  892,  892,    0,  892,    0,    0,  892,
      893,    0,    0,  893,    0,    0,  893,  894,    0,  894,
        0,    0,    0,  894,  894,  894,  894,  894,    0,  894,
      894,  894,  894,  894,  895,    0,  895,    0,    0,    0,
      895,  895,  895,  895,  895,    0,  895,  895,  895,  895,
      895,  896,  896,  896,    0,    0,  896,  896,    0,  896,
      897,    0,  897,    0,    0,    0,  897,  897,  897,  897,

      897,    0,  897,  897,  897,  897,  897,  898,    0,  898,
        0,    0,    0,  898,  898,  898,  898,  898,    0,  898,
      898,  898,  898,  898,  899,  899,    0,  899,    0,    0,
      899,  900,  900,    0,  900,    0,    0,  900,  901,  901,
      901,    0,  901,    0,    0,  901,  902,  902,  902,    0,
      902,    0,    0,  902,  903,    0,  903,    0,    0,    0,
      903,  903,  903,  903,  903,    0,  903,  903,  903,  903,
      903,  904,    0,  904,    0,    0,    0,  904,  904,  904,
      904,  904,    0,  904,  904,  904,  904,  904,  905,    0,
        0,  905,    0,    0,  905,  905,  905,  905,  906,    0,

        0,  906,    0,    0,  906,  906,  906,  906,  907,  907,
      907,    0,    0,  907,  907,    0,  907,  908,    0,  908,
        0,    0,    0,  908,  908,  908,  908,  908,    0,  908,
      908,  908,  908,  908,  909,    0,  909,    0,    0,    0,
      909,  909,  909,  909,  909,    0,  909,  909,  909,  909,
      909,  910,    0,  910,    0,    0,    0,  910,  910,  910,
      910,  910,    0,  910,  910,  910,  910,  910,  911,  911,
        0,  911,    0,    0,  911,  912,  912,    0,  912,    0,
        0,  912,  913,  913,  913,    0,  913,    0,    0,  913,
      914,    0,    0,  914,    0,    0,  914,  915,    0,  915,

        0,    0,    0,  915,  915,  915,  915,  915,    0,  915,
      915,  915,  915,  915,  916,    0,  916,    0,    0,    0,
      916,  916,  916,  916,  916,    0,  916,  916,  916,  916,
      916,  917,    0,    0,  917,    0,    0,  917,  917,  917,
      917,  918,    0,    0,  918,    0,    0,  918,  918,  918,
      918,  919,  919,  919,    0,    0,  919,  919,    0,  919,
      920,    0,  920,    0,    0,    0,  920,  920,  920,  920,
      920,    0,  920,  920,  920,  920,  920,  921,    0,  921,
        0,    0,    0,  921,  921,  921,  921,  921,    0,  921,
      921,  921,  921,  921,  922,    0,  922,    0,    0,    0,

      922,  922,  922,  922,  922,    0,  922,  922,  922,  922,
      922,  923,    0,  923,    0,    0,    0,    0,    0,    0,
      923,  924,  924,    0,  924,    0,    0,  924,  925,  925,
        0,  925,    0,    0,  925,  926,  926,  926,    0,  926,
        0,    0,  926,  927,  927,  927,    0,  927,    0,    0,
      927,  928,    0,  928,    0,    0,    0,  928,  928,  928,
      928,  928,    0,  928,  928,  928,  928,  928,  929,    0,
      929,    0,    0,    0,  929,  929,  929,  929,  929,    0,
      929,  929,  929,  929,  929,  930,    0,    0,  930,    0,
        0,  930,  930,  930,  930,  931,    0,    0,  931,    0,

        0,  931,  931,  931,  931,  932,    0,    0,  932,    0,
        0,  932,  932,  932,  932,  933,  933,  933,    0,    0,
      933,  933,    0,  933,  934,    0,  934,    0,    0,    0,
      934,  934,  934,  934,  934,    0,  934,  934,  934,  934,
      934,  935,    0,  935,    0,    0,    0,  935,  935,  935,
      935,  935,    0,  935,  935,  935,  935,  935,  936,    0,
      936,    0,    0,    0,  936,  936,  936,  936,  936,    0,
      936,  936,  936,  936,  936,  937,    0,  937,    0,    0,
        0,  937,  937,  937,  937,  937,    0,  937,  937,  937,
      937,  937,  938,  938,    0,  938,    0,    0,  938,  939,

      939,    0,  939,    0,    0,  939,  940,  940,  940,    0,
      940,    0,    0,  940,  941,    0,    0,  941,    0,    0,
      941,  942,    0,  942,    0,    0,    0,  942,  942,  942,
      942,  942,    0,  942,  942,  942,  942,  942,  943,    0,
      943,    0,    0,    0,  943,  943,  943,  943,  943,    0,
      943,  943,  943,  943,  943,  944,  944,  944,    0,    0,
      944,  944,    0,  944,  945,    0,  945,    0,    0,    0,
      945,  945,  945,  945,  945,    0,  945,  945,  945,  945,
      945,  946,    0,  946,    0,    0,    0,  946,  946,  946,
      946,  946,    0,  946,  946,  946,  946,  946,  947,    0,

      947,    0,    0,    0,  947,  947,  947,  947,  947,    0,
      947,  947,  947,  947,  947,  948,  948,    0,  948,    0,
        0,  948,  949,  949,    0,  949,    0,    0,  949,  950,
      950,  950,    0,  950,    0,    0,  950,  951,  951,  951,
        0,  951,    0,    0,  951,  952,    0,  952,    0,    0,
        0,  952,  952,  952,  952,  952,    0,  952,  952,  952,
      952,  952,  953,    0,  953,    0,    0,    0,  953,  953,
      953,  953,  953,    0,  953,  953,  953,  953,  953,  954,
      954,  954,    0,    0,  954,  954,    0,  954,  955,    0,
      955,    0,    0,    0,  955,  955,  955,  955,  955,    0,

      955,  955,  955,  955,  955,  956,    0,  956,    0,    0,
        0,  956,  956,  956,  956,  956,    0,  956,  956,  956,
      956,  956,  957,    0,  957,    0,    0,    0,  957,  957,
      957,  957,  957,    0,  957,  957,  957,  957,  957,  958,
      958,    0,  958,    0,    0,  958,  959,  959,    0,  959,
        0,    0,  959,  960,  960,  960,    0,  960,    0,    0,
      960,  961,    0,    0,  961,    0,    0,  961,  962,    0,
      962,    0,    0,    0,  962,  962,  962,  962,  962,    0,
      962,  962,  962,  962,  962,  963,    0,  963,    0,    0,
        0,  963,  963,  963,  963,  963,    0,  963,  963,  963,

      963,  963,  964,    0,    0,  964,    0,    0,  964,  964,
      964,  964,  965,    0,    0,  965,    0,    0,  965,  965,
      965,  965,  966,    0,    0,  966,    0,    0,  966,  966,
      966,  966,  967,    0,  967,    0,    0,    0,    0,    0,
        0,  967,    0,    0,    0,    0,    0,  967,  968,    0,
      968,    0,    0,  968,  968,    0,    0,  968,  969,    0,
      969,    0,    0,    0,  969,  969,  969,  969,  969,    0,
      969,  969,  969,  969,  969,  970,    0,  970,    0,    0,
        0,  970,  970,  970,  970,  970,    0,  970,  970,  970,
      970,  970,  971,  971,    0,  971,    0,    0,  971,  972,

      972,    0,  972,    0,    0,  972,  973,  973,  973,    0,
      973,    0,    0,  973,  974,  974,  974,    0,  974,    0,
        0,  974,  975,    0,  975,    0,    0,    0,  975,  975,
      975,  975,  975,    0,  975,  975,  975,  975,  975,  976,
      976,    0,  976,    0,    0,  976,  977,  977,    0,  977,
        0,    0,  977,  978,  978,  978,    0,  978,    0,    0,
      978,  979,    0,    0,  979,    0,    0,  979,  980,  980,
        0,  980,    0,    0,  980,  981,  981,    0,    0,  981,
        0,    0,  981,  982,  982,  982,    0,  982,    0,    0,
      982,  983,  983,    0,    0,  983,    0,    0,  983,  984,

      984,    0,    0,  984,    0,    0,  984,  985,  985,    0,
        0,  985,    0,    0,  985,  986,  986,    0,    0,  986,
        0,    0,  986,  987,  987,    0,    0,  987,    0,    0,
      987,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
      827
    } ;

static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
static char *yy_full_match;
static int yy_lp;
#define REJECT \
{ \
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
yy_cp = yy_full_match; /* restore poss. backed-over text */ \
++yy_lp; \
goto find_rule; \
}
#define yymore() yymore_used_but_not_detected
/* [<][>][^][v][top][bottom][index][help] */
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "rpsl.l"
#define INITIAL 0
/*
//  $Id: rpsl.l.cc,v 1.1.1.1 2000/03/10 16:32:24 engin Exp $
//
//  Copyright (c) 1994 by the University of Southern California
//  All rights reserved.
//
//  Permission to use, copy, modify, and distribute this software and its
//  documentation in source and binary forms for lawful non-commercial
//  purposes and without fee is hereby granted, provided that the above
//  copyright notice appear in all copies and that both the copyright
//  notice and this permission notice appear in supporting documentation,
//  and that any documentation, advertising materials, and other materials
//  related to such distribution and use acknowledge that the software was
//  developed by the University of Southern California, Information
//  Sciences Institute. The name of the USC may not be used to endorse or
//  promote products derived from this software without specific prior
//  written permission.
//
//  THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY
//  REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY
//  PURPOSE.  THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
//  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
//  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
//  TITLE, AND NON-INFRINGEMENT.
//
//  IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
//  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT,
//  OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE
//  OR PERFORMANCE OF THIS SOFTWARE.
//
//  Questions concerning this software should be directed to
//  ratoolset@isi.edu.
//
//  Author(s): Cengiz Alaettinoglu <cengiz@ISI.EDU>
*/
/* definitions */
#define STRING 1

#define EXPECT_OPERATOR 2

#define FREETEXT 3

#define BLOBMODE 4

#define GENERICMODE 5

#define SKIP_OBJECT 6

#define POLICYMODE 7

/*%option nodefault /* */
/*%option debug     /* */
#line 83 "rpsl.l"
#include "config.h"
#include <cstring>
#include <cstdarg>
#include <cstdio>
#include <time.h>

#include "object.hh"
#include "rpsl.y.hh"
#include "schema.hh"

static int errorLine = 0;
static int errorColon = 0;
#define errorNewLine { errorLine++;   errorColon = 0; }

static int scan_position = 0;
static bool start_of_object = true;
static bool genericMode = true;
static int oldStart = 0;

Object *current_object;
Attr   *current_attribute;
YY_BUFFER_STATE rpsl_buffer = (YY_BUFFER_STATE) NULL;

#define MAX_STR_CONST 1024
#define LEXER_RETURN return
#define YY_USER_ACTION { scan_position += yyleng; errorColon += yyleng; }
#define YYLESS(n) {scan_position -= yyleng - n; errorColon -= yyleng - n; yyless(n); }
/* [<][>][^][v][top][bottom][index][help] */
#define yylval rpsllval
#define yy_scan_object rpsl_scan_object
#define yyschema schema

extern void handle_error(char *, ...);
extern void handle_warning(char *, ...);
extern int validIPv6(const char *);
extern int validIntForPhone(const char *);

extern "C" {
extern void atollRA(...);
}
#line 3351 "lex.rpsl.c"

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap YY_PROTO(( void ));
#else
extern int yywrap YY_PROTO(( void ));
#endif
#endif

#ifndef YY_NO_UNPUT
static void yyunput YY_PROTO(( int c, char *buf_ptr ));
#endif

#ifndef yytext_ptr
static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen YY_PROTO(( yyconst char * ));
#endif

#ifndef YY_NO_INPUT
#ifdef __cplusplus
static int yyinput YY_PROTO(( void ));
#else
static int input YY_PROTO(( void ));
#endif
#endif

#if YY_STACK_USED
static int yy_start_stack_ptr = 0;
static int yy_start_stack_depth = 0;
static int *yy_start_stack = 0;
#ifndef YY_NO_PUSH_STATE
static void yy_push_state YY_PROTO(( int new_state ));
#endif
#ifndef YY_NO_POP_STATE
static void yy_pop_state YY_PROTO(( void ));
#endif
#ifndef YY_NO_TOP_STATE
static int yy_top_state YY_PROTO(( void ));
#endif

#else
#define YY_NO_PUSH_STATE 1
#define YY_NO_POP_STATE 1
#define YY_NO_TOP_STATE 1
#endif

#ifdef YY_MALLOC_DECL
YY_MALLOC_DECL
#else
#if __STDC__
#ifndef __cplusplus
#include <stdlib.h>
#endif
#else
/* Just try to get by without declaring the routines.  This will fail
 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
 * or sizeof(void*) != sizeof(int).
 */
#endif
#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* Copy whatever the last rule matched to the standard output. */

#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
#endif

/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 * is returned in "result".
 */
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
/* [<][>][^][v][top][bottom][index][help] */
        if ( yy_current_buffer->yy_is_interactive ) \
                { \
                int c = '*', n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
                if ( c == '\n' ) \
                        buf[n++] = (char) c; \
                if ( c == EOF && ferror( yyin ) ) \
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
                result = n; \
                } \
        else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
                  && ferror( yyin ) ) \
                YY_FATAL_ERROR( "input in flex scanner failed" );
#endif

/* No semi-colon after return; correct usage is to write "yyterminate();" -
 * we don't want an extra ';' after the "return" because that will cause
 * some compilers to complain about unreachable statements.
 */
#ifndef yyterminate
#define yyterminate() return YY_NULL
/* [<][>][^][v][top][bottom][index][help] */
#endif

/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif

/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
/* [<][>][^][v][top][bottom][index][help] */
#endif

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL int yylex YY_PROTO(( void ))
#endif

/* Code executed at the beginning of each rule, after yytext and yyleng
 * have been set up.
 */
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK break;
#endif

#define YY_RULE_SETUP \
        if ( yyleng > 0 ) \
                yy_current_buffer->yy_at_bol = \
                                (yytext[yyleng - 1] == '\n'); \
        YY_USER_ACTION

YY_DECL
        {
        register yy_state_type yy_current_state;
        register char *yy_cp, *yy_bp;
        register int yy_act;

#line 124 "rpsl.l"

 
   /* this code is copied to beginning of yylex */
   static char string_buf[MAX_STR_CONST];
   char *string_buf_ptr;


#line 3513 "lex.rpsl.c"

        if ( yy_init )
                {
                yy_init = 0;

#ifdef YY_USER_INIT
                YY_USER_INIT;
#endif

                if ( ! yy_start )
                        yy_start = 1;   /* first start state */

                if ( ! yyin )
                        yyin = stdin;

                if ( ! yyout )
                        yyout = stdout;

                if ( ! yy_current_buffer )
                        yy_current_buffer =
                                yy_create_buffer( yyin, YY_BUF_SIZE );

                yy_load_buffer_state();
                }

        while ( 1 )             /* loops until end-of-file is reached */
                {
                yy_cp = yy_c_buf_p;

                /* Support of yytext. */
                *yy_cp = yy_hold_char;

                /* yy_bp points to the position in yy_ch_buf of the start of
                 * the current run.
                 */
                yy_bp = yy_cp;

                yy_current_state = yy_start;
                yy_current_state += YY_AT_BOL();
                yy_state_ptr = yy_state_buf;
                *yy_state_ptr++ = yy_current_state;
yy_match:
                do
                        {
                        register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
                                if ( yy_current_state >= 828 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        *yy_state_ptr++ = yy_current_state;
                        ++yy_cp;
                        }
                while ( yy_base[yy_current_state] != 11232 );

yy_find_action:
                yy_current_state = *--yy_state_ptr;
                yy_lp = yy_accept[yy_current_state];
find_rule: /* we branch to this label when backing up */
                for ( ; ; ) /* until we find what rule we matched */
                        {
                        if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
                                {
                                yy_act = yy_acclist[yy_lp];
                                        {
                                        yy_full_match = yy_cp;
                                        break;
                                        }
                                }
                        --yy_cp;
                        yy_current_state = *--yy_state_ptr;
                        yy_lp = yy_accept[yy_current_state];
                        }

                YY_DO_BEFORE_ACTION;


do_action:      /* This label is used only to access EOF actions. */


                switch ( yy_act )
        { /* beginning of action switch */
case 1:
YY_RULE_SETUP
#line 131 "rpsl.l"
{ //
   errorLine = 0; 
   errorColon = yyleng;

   *(yytext + yyleng - 1) = 0; // remove ':'

   yylval.attr = new Attr;
   yylval.attr->offset = scan_position - yyleng;
   current_attribute = yylval.attr;

   if (start_of_object) {
      start_of_object = false;
      current_object->type = yyschema.searchClass(yytext);
      if (!current_object->type) {
         handle_error("Error: unknown class \"%s\"\n", yytext);
         yylval.attr->type   = NULL;
//(*current_object) += yylval.attr;
         BEGIN(SKIP_OBJECT);
         LEXER_RETURN(TKN_UNKNOWN_CLASS);
      }
   }

   yylval.attr->type   = current_object->type->searchAttr(yytext);
   yylval.attr->object = current_object;

//   (*current_object) += yylval.attr;

   if (! yylval.attr->type) {
      if (! schema.isForgiving())
         handle_error("Error: unknown attribute %s of class %s\n",
                      yytext, current_object->type->name);
      BEGIN(FREETEXT);
      LEXER_RETURN(ATTR_FREETEXT);
   }

   if (yylval.attr->type->isObsolete())
      handle_warning("Warning: attribute %s of class %s is now obsolete\n", 
              yytext, current_object->type->name);

   if (!yylval.attr->type->shouldParse()) { // may be free text?
      BEGIN(FREETEXT);
      LEXER_RETURN(ATTR_FREETEXT);
   } else {
      if (yylval.attr->type->syntax() == ATTR_GENERIC) {
         genericMode = true;
         BEGIN(GENERICMODE);
      } else if (yylval.attr->type->syntax() == ATTR_BLOBS) {
         genericMode = true;
         BEGIN(BLOBMODE);
      } else {
         genericMode = false;
         BEGIN(POLICYMODE);
      }
      LEXER_RETURN(yylval.attr->type->syntax());
   }
}
        YY_BREAK
case 2:
YY_RULE_SETUP
#line 188 "rpsl.l"
{
   if (current_attribute)
      current_attribute->len = scan_position - current_attribute->offset;
   LEXER_RETURN(TKN_EOO);
}
        YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(STRING):
case YY_STATE_EOF(EXPECT_OPERATOR):
case YY_STATE_EOF(FREETEXT):
case YY_STATE_EOF(BLOBMODE):
case YY_STATE_EOF(GENERICMODE):
case YY_STATE_EOF(SKIP_OBJECT):
case YY_STATE_EOF(POLICYMODE):
#line 194 "rpsl.l"
{
   yy_delete_buffer(rpsl_buffer);
   rpsl_buffer = (YY_BUFFER_STATE) NULL;
   if (current_attribute)
      current_attribute->len = scan_position - current_attribute->offset;
   BEGIN(INITIAL);
   yyterminate();
}
        YY_BREAK
case 3:
YY_RULE_SETUP
#line 203 "rpsl.l"

        YY_BREAK
case 4:
YY_RULE_SETUP
#line 205 "rpsl.l"
{ // not a valid line
   current_attribute = NULL;
   handle_error("Error: valid lines start with attribute names, spaces or #\n");
   BEGIN(FREETEXT);
   LEXER_RETURN(TKN_ERROR);
}
        YY_BREAK

case 5:
YY_RULE_SETUP
#line 213 "rpsl.l"
{
     BEGIN(INITIAL);
     if (current_attribute)
        current_attribute->len = scan_position - current_attribute->offset;
     LEXER_RETURN(TKN_EOO);
  }
        YY_BREAK
case 6:
YY_RULE_SETUP
#line 219 "rpsl.l"
errorNewLine;
        YY_BREAK
case 7:
YY_RULE_SETUP
#line 220 "rpsl.l"
;
        YY_BREAK


case 8:
YY_RULE_SETUP
#line 224 "rpsl.l"
errorNewLine; errorColon++; // line continuation with +
        YY_BREAK
case 9:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 225 "rpsl.l"
errorNewLine; // line continuation with space or comment
        YY_BREAK
case 10:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 226 "rpsl.l"
{ // end of attribute and may be end of object too
      BEGIN(INITIAL);
      if (current_attribute)
         current_attribute->len = scan_position - current_attribute->offset;
      LEXER_RETURN(TKN_EOA);
   }
        YY_BREAK
case 11:
YY_RULE_SETUP
#line 232 "rpsl.l"
; // skip white space
        YY_BREAK
case 12:
YY_RULE_SETUP
#line 233 "rpsl.l"
; // skip comment 
        YY_BREAK

// dont parse anything, keep going till EOA
case 13:
YY_RULE_SETUP
#line 237 "rpsl.l"
; // this rule needs to be after \n rules
        YY_BREAK


case 14:
YY_RULE_SETUP
#line 241 "rpsl.l"
{
     yylval.string = strdup(yytext);
     LEXER_RETURN(TKN_BLOB);
  }
        YY_BREAK


case 15:
YY_RULE_SETUP
#line 248 "rpsl.l"
{
     tm ts;
     bzero((char *) &ts, sizeof(ts));

     int date, zone_hours, zone_mins;
     sscanf(yytext, "%d %d:%d:%d %d:%d", 
                    &date, 
                    &ts.tm_hour, &ts.tm_min, &ts.tm_sec,
                    &zone_hours, &zone_mins);

     ts.tm_mday = date % 100; date /= 100;
     ts.tm_mon  = date % 100 - 1; date /= 100;
     ts.tm_year = date - 1900;
   
     if (ts.tm_mday > 31) {
        handle_error("Error: Invalid day %d\n", ts.tm_mday);
        LEXER_RETURN(TKN_ERROR);
     }
     if (ts.tm_mon > 11) {
        handle_error("Error: Invalid month %d\n", ts.tm_mon);
        LEXER_RETURN(TKN_ERROR);
     }
     if (ts.tm_year < 70) {
        handle_error("Error: Invalid year %d\n", ts.tm_year);
        LEXER_RETURN(TKN_ERROR);
     }
     if (ts.tm_sec > 59) {
        handle_error("Error: Invalid sec %d\n", ts.tm_sec);
        LEXER_RETURN(TKN_ERROR);
     }
     if (ts.tm_min > 59) {
        handle_error("Error: Invalid min %d\n", ts.tm_min);
        LEXER_RETURN(TKN_ERROR);
     }
     if (ts.tm_hour > 23) {
        handle_error("Error: Invalid hour %d\n", ts.tm_hour);
        LEXER_RETURN(TKN_ERROR);
     }
     if (zone_mins > 59) {
        handle_error("Error: Invalid zone min %d\n", zone_mins);
        LEXER_RETURN(TKN_ERROR);
     }
     if (zone_hours > 23) {
        handle_error("Error: Invalid zone hour %d\n", zone_hours);
        LEXER_RETURN(TKN_ERROR);
     }

     // this fiddling with TZ is necessary for mktime to use utc as timezone
     // it sucks, there's got to be a better way
     time_t result = mktime(&ts);
     result -= timezone;
/*
     char *TZ=getenv("TZ");
     if (TZ)
        TZ = strdup(TZ);
     setenv("TZ", "", 1);
     time_t result = mktime(&ts);
     if (TZ) {
        setenv("TZ", TZ, 1);
        free(TZ);
     } else
        unsetenv("TZ");
*/
     if (zone_hours < 0)
        zone_mins *= -1;

     result += zone_mins * 60 + zone_hours * 60 * 60;
   
     yylval.time = result;
     LEXER_RETURN(TKN_TIMESTAMP);
  }
        YY_BREAK


case 16:
YY_RULE_SETUP
#line 323 "rpsl.l"
{
     if(current_attribute->type->syntax() == ATTR_AUTH){
     yylval.string = strdup(yytext);
     LEXER_RETURN(TKN_CRYPTEDPW);
     }else{
       scan_position -= yyleng; errorColon -= yyleng;
       REJECT;
     }
  }
        YY_BREAK
case 17:
YY_RULE_SETUP
#line 333 "rpsl.l"
{
     // The following code causes problem on Solaris since long long int
     // is not standardized yet 
     // sscanf(yytext, "%Ld", &(yylval.i));
     if(current_attribute->type->syntax() == ATTR_PHONE){
       if(validIntForPhone(yytext)){
         atollRA(yytext, &yylval.i);
         LEXER_RETURN(TKN_INT);
       }else{
         scan_position -= yyleng; errorColon -= yyleng;
         REJECT;
       }
     }else{
       atollRA(yytext, &yylval.i);
       LEXER_RETURN(TKN_INT);
     }
    /* atollRA(yytext, &yylval.i);
     LEXER_RETURN(TKN_INT);*/
  }
        YY_BREAK
case 18:
YY_RULE_SETUP
#line 353 "rpsl.l"
{
     unsigned int ms, ls;
     char *colon = strchr(yytext, ':');
     *colon = 0;
     ms = atoi(yytext);
     ls = atoi(colon+1);
     if (ms > 65535 || ls > 65535)
        LEXER_RETURN(TKN_ERROR);

     yylval.i = (ms << 16) + ls;
     LEXER_RETURN(TKN_INT);
  }
        YY_BREAK
case 19:
YY_RULE_SETUP
#line 366 "rpsl.l"
{
     yylval.real = atof(yytext);
     LEXER_RETURN(TKN_REAL);
  }
        YY_BREAK
case 20:
YY_RULE_SETUP
#line 371 "rpsl.l"
{
     string_buf_ptr = string_buf; 
     oldStart = YY_START;
     BEGIN(STRING);
  }
        YY_BREAK
case 21:
YY_RULE_SETUP
#line 377 "rpsl.l"
{
     yylval.ip = new IPAddr(yytext);
     LEXER_RETURN(TKN_IPV4);
  }
        YY_BREAK
case 22:
YY_RULE_SETUP
#line 382 "rpsl.l"
{
     yylval.string = strdup(yytext);
     printf("debug: lexer: Returning TKN_PRFXV6\n");
     LEXER_RETURN(TKN_PRFXV6);
  }
        YY_BREAK
case 23:
YY_RULE_SETUP
#line 388 "rpsl.l"
{
     yylval.string = strdup(yytext);
     if(validIPv6(yylval.string)){
        printf("debug: lexer: Returning TKN_PRFXV6\n");
        LEXER_RETURN(TKN_PRFXV6);
     }else{
        handle_error("Error: Invalid IPv6 prefix\n");
        BEGIN(FREETEXT);
        LEXER_RETURN(TKN_ERROR);
     }
  }
        YY_BREAK
case 24:
YY_RULE_SETUP
#line 400 "rpsl.l"
{
     yylval.prfx = new Prefix(yytext);
     LEXER_RETURN(TKN_PRFXV4);
  }
        YY_BREAK
case 25:
YY_RULE_SETUP
#line 405 "rpsl.l"
{
     yylval.prfxrng = new PrefixRange(yytext);
     LEXER_RETURN(TKN_PRFXV4RNG);
  }
        YY_BREAK
case 26:
YY_RULE_SETUP
#line 410 "rpsl.l"
{
      /*printf("DEBUG: lexer: matched a nichdl candidate (%s)\n",yytext);*/
      if(current_attribute->type->syntax() != ATTR_NICHDL){
        /*printf("DEBUG: lexer: This is not a nichdl attribute, rejecting\n");*/
        scan_position -= yyleng; errorColon -= yyleng;
        REJECT;
      }else{
        yylval.string = strdup(yytext);
        LEXER_RETURN(TKN_NICHDL);
      }
  }
        YY_BREAK
/* The order of these rules are important */
case 27:
YY_RULE_SETUP
#line 424 "rpsl.l"
{
     yylval.i = atoi(yytext+2);
     LEXER_RETURN(TKN_ASNO);
  }
        YY_BREAK
case 28:
YY_RULE_SETUP
#line 429 "rpsl.l"
{
     yylval.sid = symbols.symID(yytext);
     LEXER_RETURN(TKN_ASNAME);
  }
        YY_BREAK
case 29:
YY_RULE_SETUP
#line 434 "rpsl.l"
{
     yylval.sid = symbols.symID(yytext);
     LEXER_RETURN(TKN_RSNAME);
  }
        YY_BREAK
case 30:
YY_RULE_SETUP
#line 439 "rpsl.l"
{
     yylval.sid = symbols.symID(yytext);
     LEXER_RETURN(TKN_RTRSNAME);
  }
        YY_BREAK
case 31:
YY_RULE_SETUP
#line 444 "rpsl.l"
{
     yylval.sid = symbols.symID(yytext);
     LEXER_RETURN(TKN_PRNGNAME);
  }
        YY_BREAK
case 32:
YY_RULE_SETUP
#line 449 "rpsl.l"
{
     yylval.sid = symbols.symID(yytext);
     LEXER_RETURN(TKN_FLTRNAME);
  }
        YY_BREAK
case 33:
YY_RULE_SETUP
#line 454 "rpsl.l"
{
     yylval.i = 1;
     LEXER_RETURN(TKN_BOOLEAN);
  }
        YY_BREAK
case 34:
YY_RULE_SETUP
#line 459 "rpsl.l"
{
     yylval.i = 0;
     LEXER_RETURN(TKN_BOOLEAN);
  }
        YY_BREAK
case 35:
YY_RULE_SETUP
#line 464 "rpsl.l"
{ /* keycert name */  
     yylval.string = strdup(yytext);
     printf("debug: lexer: Returning TKN_KEYCRTNAME\n");
     LEXER_RETURN(TKN_KEYCRTNAME);
  }
        YY_BREAK
case 36:
YY_RULE_SETUP
#line 471 "rpsl.l"
{ /* reserved word or rp-attribute, or arbitrary name */
     if (!genericMode) {
        oldStart = YY_START;

        int index;
        if ((index  = yyschema.searchKeyword(yytext)) >= 0) {
           if (index == KEYW_OPERATOR)
              BEGIN(EXPECT_OPERATOR);
           LEXER_RETURN(index);
        }
     
        if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
           BEGIN(EXPECT_OPERATOR);
           LEXER_RETURN(TKN_RP_ATTR);
        }
     }

     yylval.string = strdup(yytext);
     LEXER_RETURN(TKN_WORD);
  }
        YY_BREAK
case 37:
YY_RULE_SETUP
#line 492 "rpsl.l"
{ /* rp-attribute.method or DNS name */
     if (!genericMode) {
        char *p = strchr(yytext, '.');
        *p = 0;

        if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
           *p = '.';
           YYLESS((p - yytext));
           LEXER_RETURN(TKN_RP_ATTR);
        }

        *p = '.';
     }

     yylval.sid = symbols.symID(yytext);
     LEXER_RETURN(TKN_DNS);
  }
        YY_BREAK
case 38:
YY_RULE_SETUP
#line 510 "rpsl.l"
{ /* DNS name */
     yylval.sid = symbols.symID(yytext);
     LEXER_RETURN(TKN_DNS);
  }
        YY_BREAK
case 39:
YY_RULE_SETUP
#line 515 "rpsl.l"
{ /* email */  
     yylval.string = strdup(yytext);
     LEXER_RETURN(TKN_EMAIL);
  }
        YY_BREAK
case 40:
YY_RULE_SETUP
#line 522 "rpsl.l"
{
     if (*yytext <= 0) {
        handle_error("Error: Non-ASCII character encountered\n");
        LEXER_RETURN(TKN_ERROR);
     } else
        LEXER_RETURN(*yytext);
  }
        YY_BREAK


case 41:
YY_RULE_SETUP
#line 532 "rpsl.l"
{
      yylval.moreSpecOp = new FilterMS(0);
      LEXER_RETURN(OP_MS);
   }
        YY_BREAK
case 42:
YY_RULE_SETUP
#line 537 "rpsl.l"
{
      yylval.moreSpecOp = new FilterMS(1);
      LEXER_RETURN(OP_MS);
   }
        YY_BREAK
case 43:
YY_RULE_SETUP
#line 542 "rpsl.l"
{
      int i;
      sscanf(yytext, "^%d", &i);
      yylval.moreSpecOp = new FilterMS(2, i, i);
      LEXER_RETURN(OP_MS);
   }
        YY_BREAK
case 44:
YY_RULE_SETUP
#line 549 "rpsl.l"
{
      int i, j;
      sscanf(yytext, "^%d-%d", &i, &j);
      yylval.moreSpecOp = new FilterMS(2, i, j);
      LEXER_RETURN(OP_MS);
   }
        YY_BREAK
case 45:
YY_RULE_SETUP
#line 556 "rpsl.l"
LEXER_RETURN(TKN_3DOTS);
        YY_BREAK


case 46:
YY_RULE_SETUP
#line 560 "rpsl.l"
{
      yylval.string = strdup(yytext);
      BEGIN(oldStart);
      LEXER_RETURN(TKN_OPERATOR);
   }
        YY_BREAK
case 47:
YY_RULE_SETUP
#line 566 "rpsl.l"
{
      YYLESS(0); 
      BEGIN(oldStart);
   }
        YY_BREAK


case 48:
YY_RULE_SETUP
#line 573 "rpsl.l"
{ /* saw closing quote - all done */
      BEGIN(oldStart);
      *string_buf_ptr = '\0';
      yylval.string = strdup(string_buf);
      LEXER_RETURN(TKN_STRING);
   }
        YY_BREAK
case 49:
YY_RULE_SETUP
#line 580 "rpsl.l"
{
      errorNewLine;
      handle_error("Error: unterminated string encountered\n");
      BEGIN(oldStart);
      if (current_attribute)
         current_attribute->len = scan_position - current_attribute->offset;
      LEXER_RETURN(TKN_EOA);
   }
        YY_BREAK
case 50:
YY_RULE_SETUP
#line 589 "rpsl.l"
{
      /* octal escape sequence */
      int result;
      
      (void) sscanf( yytext + 1, "%o", &result );

      if ( result > 0xff ) {
         handle_error("Error: octal escape sequence is out of bounds\n");
         BEGIN(oldStart);
         LEXER_RETURN(TKN_ERROR);
      }

      *string_buf_ptr++ = result;
   }
        YY_BREAK
case 51:
YY_RULE_SETUP
#line 604 "rpsl.l"
{                       /* like '\48' or '\0777777' */
      handle_error("Error: bad octal escape sequence\n");
      BEGIN(oldStart);
      LEXER_RETURN(TKN_ERROR);
   }
        YY_BREAK
case 52:
YY_RULE_SETUP
#line 610 "rpsl.l"
*string_buf_ptr++ = '\n';
        YY_BREAK
case 53:
YY_RULE_SETUP
#line 611 "rpsl.l"
*string_buf_ptr++ = '\t';
        YY_BREAK
case 54:
YY_RULE_SETUP
#line 612 "rpsl.l"
*string_buf_ptr++ = '\r';
        YY_BREAK
case 55:
YY_RULE_SETUP
#line 613 "rpsl.l"
*string_buf_ptr++ = '\b';
        YY_BREAK
case 56:
YY_RULE_SETUP
#line 614 "rpsl.l"
*string_buf_ptr++ = '\f';
        YY_BREAK
case 57:
YY_RULE_SETUP
#line 616 "rpsl.l"
*string_buf_ptr++ = yytext[1];
        YY_BREAK
case 58:
YY_RULE_SETUP
#line 618 "rpsl.l"
{
      char *yptr = yytext;
      while ( *yptr )
         *string_buf_ptr++ = *yptr++;
   }
        YY_BREAK
case 59:
YY_RULE_SETUP
#line 624 "rpsl.l"
*string_buf_ptr++ = yytext[0];
        YY_BREAK

case 60:
YY_RULE_SETUP
#line 627 "rpsl.l"
ECHO;
        YY_BREAK
#line 4296 "lex.rpsl.c"

        case YY_END_OF_BUFFER:
                {
                /* Amount of text matched not including the EOB char. */
                int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;

                /* Undo the effects of YY_DO_BEFORE_ACTION. */
                *yy_cp = yy_hold_char;
                YY_RESTORE_YY_MORE_OFFSET

                if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
                        {
                        /* We're scanning a new file or input source.  It's
                         * possible that this happened because the user
                         * just pointed yyin at a new source and called
                         * yylex().  If so, then we have to assure
                         * consistency between yy_current_buffer and our
                         * globals.  Here is the right place to do so, because
                         * this is the first action (other than possibly a
                         * back-up) that will match for the new input source.
                         */
                        yy_n_chars = yy_current_buffer->yy_n_chars;
                        yy_current_buffer->yy_input_file = yyin;
                        yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
                        }

                /* Note that here we test for yy_c_buf_p "<=" to the position
                 * of the first EOB in the buffer, since yy_c_buf_p will
                 * already have been incremented past the NUL character
                 * (since all states make transitions on EOB to the
                 * end-of-buffer state).  Contrast this with the test
                 * in input().
                 */
                if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
                        { /* This was really a NUL. */
                        yy_state_type yy_next_state;

                        yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;

                        yy_current_state = yy_get_previous_state();

                        /* Okay, we're now positioned to make the NUL
                         * transition.  We couldn't have
                         * yy_get_previous_state() go ahead and do it
                         * for us because it doesn't know how to deal
                         * with the possibility of jamming (and we don't
                         * want to build jamming into it because then it
                         * will run more slowly).
                         */

                        yy_next_state = yy_try_NUL_trans( yy_current_state );

                        yy_bp = yytext_ptr + YY_MORE_ADJ;

                        if ( yy_next_state )
                                {
                                /* Consume the NUL. */
                                yy_cp = ++yy_c_buf_p;
                                yy_current_state = yy_next_state;
                                goto yy_match;
                                }

                        else
                                {
                                yy_cp = yy_c_buf_p;
                                goto yy_find_action;
                                }
                        }

                else switch ( yy_get_next_buffer() )
                        {
                        case EOB_ACT_END_OF_FILE:
                                {
                                yy_did_buffer_switch_on_eof = 0;

                                if ( yywrap() )
                                        {
                                        /* Note: because we've taken care in
                                         * yy_get_next_buffer() to have set up
                                         * yytext, we can now set up
                                         * yy_c_buf_p so that if some total
                                         * hoser (like flex itself) wants to
                                         * call the scanner after we return the
                                         * YY_NULL, it'll still work - another
                                         * YY_NULL will get returned.
                                         */
                                        yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;

                                        yy_act = YY_STATE_EOF(YY_START);
                                        goto do_action;
                                        }

                                else
                                        {
                                        if ( ! yy_did_buffer_switch_on_eof )
                                                YY_NEW_FILE;
                                        }
                                break;
                                }

                        case EOB_ACT_CONTINUE_SCAN:
                                yy_c_buf_p =
                                        yytext_ptr + yy_amount_of_matched_text;

                                yy_current_state = yy_get_previous_state();

                                yy_cp = yy_c_buf_p;
                                yy_bp = yytext_ptr + YY_MORE_ADJ;
                                goto yy_match;

                        case EOB_ACT_LAST_MATCH:
                                yy_c_buf_p =
                                &yy_current_buffer->yy_ch_buf[yy_n_chars];

                                yy_current_state = yy_get_previous_state();

                                yy_cp = yy_c_buf_p;
                                yy_bp = yytext_ptr + YY_MORE_ADJ;
                                goto yy_find_action;
                        }
                break;
                }

        default:
                YY_FATAL_ERROR(
                        "fatal flex scanner internal error--no action found" );
        } /* end of action switch */
                } /* end of scanning one token */
        } /* end of yylex */


/* yy_get_next_buffer - try to read in a new buffer
 *
 * Returns a code representing an action:
 *      EOB_ACT_LAST_MATCH -
 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *      EOB_ACT_END_OF_FILE - end of file
 */

static int yy_get_next_buffer()
/* [<][>][^][v][top][bottom][index][help] */
        {
        register char *dest = yy_current_buffer->yy_ch_buf;
        register char *source = yytext_ptr;
        register int number_to_move, i;
        int ret_val;

        if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
                YY_FATAL_ERROR(
                "fatal flex scanner internal error--end of buffer missed" );

        if ( yy_current_buffer->yy_fill_buffer == 0 )
                { /* Don't try to fill the buffer, so this is an EOF. */
                if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
                        {
                        /* We matched a single character, the EOB, so
                         * treat this as a final EOF.
                         */
                        return EOB_ACT_END_OF_FILE;
                        }

                else
                        {
                        /* We matched some text prior to the EOB, first
                         * process it.
                         */
                        return EOB_ACT_LAST_MATCH;
                        }
                }

        /* Try to read more data. */

        /* First move last chars to start of buffer. */
        number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;

        for ( i = 0; i < number_to_move; ++i )
                *(dest++) = *(source++);

        if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
                /* don't do the read, it's not guaranteed to return an EOF,
                 * just force an EOF
                 */
                yy_current_buffer->yy_n_chars = yy_n_chars = 0;

        else
                {
                int num_to_read =
                        yy_current_buffer->yy_buf_size - number_to_move - 1;

                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
#ifdef YY_USES_REJECT
                        YY_FATAL_ERROR(
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
#else

                        /* just a shorter name for the current buffer */
                        YY_BUFFER_STATE b = yy_current_buffer;

                        int yy_c_buf_p_offset =
                                (int) (yy_c_buf_p - b->yy_ch_buf);

                        if ( b->yy_is_our_buffer )
                                {
                                int new_size = b->yy_buf_size * 2;

                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
                                else
                                        b->yy_buf_size *= 2;

                                b->yy_ch_buf = (char *)
                                        /* Include room in for 2 EOB chars. */
                                        yy_flex_realloc( (void *) b->yy_ch_buf,
                                                         b->yy_buf_size + 2 );
                                }
                        else
                                /* Can't grow it, we don't own it. */
                                b->yy_ch_buf = 0;

                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
                                "fatal error - scanner input buffer overflow" );

                        yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];

                        num_to_read = yy_current_buffer->yy_buf_size -
                                                number_to_move - 1;
#endif
                        }

                if ( num_to_read > YY_READ_BUF_SIZE )
                        num_to_read = YY_READ_BUF_SIZE;

                /* Read in more data. */
                YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
                        yy_n_chars, num_to_read );

                yy_current_buffer->yy_n_chars = yy_n_chars;
                }

        if ( yy_n_chars == 0 )
                {
                if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
                        yyrestart( yyin );
                        }

                else
                        {
                        ret_val = EOB_ACT_LAST_MATCH;
                        yy_current_buffer->yy_buffer_status =
                                YY_BUFFER_EOF_PENDING;
                        }
                }

        else
                ret_val = EOB_ACT_CONTINUE_SCAN;

        yy_n_chars += number_to_move;
        yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
        yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;

        yytext_ptr = &yy_current_buffer->yy_ch_buf[0];

        return ret_val;
        }


/* yy_get_previous_state - get the state just before the EOB char was reached */

static yy_state_type yy_get_previous_state()
/* [<][>][^][v][top][bottom][index][help] */
        {
        register yy_state_type yy_current_state;
        register char *yy_cp;

        yy_current_state = yy_start;
        yy_current_state += YY_AT_BOL();
        yy_state_ptr = yy_state_buf;
        *yy_state_ptr++ = yy_current_state;

        for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
                {
                register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
                        if ( yy_current_state >= 828 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                *yy_state_ptr++ = yy_current_state;
                }

        return yy_current_state;
        }


/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *      next_state = yy_try_NUL_trans( current_state );
 */

#ifdef YY_USE_PROTOS
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
/* [<][>][^][v][top][bottom][index][help] */
#else
static yy_state_type yy_try_NUL_trans( yy_current_state )
yy_state_type yy_current_state;
#endif
        {
        register int yy_is_jam;

        register YY_CHAR yy_c = 1;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
                if ( yy_current_state >= 828 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        yy_is_jam = (yy_current_state == 827);
        if ( ! yy_is_jam )
                *yy_state_ptr++ = yy_current_state;

        return yy_is_jam ? 0 : yy_current_state;
        }


#ifndef YY_NO_UNPUT
#ifdef YY_USE_PROTOS
static void yyunput( int c, register char *yy_bp )
/* [<][>][^][v][top][bottom][index][help] */
#else
static void yyunput( c, yy_bp )
int c;
register char *yy_bp;
#endif
        {
        register char *yy_cp = yy_c_buf_p;

        /* undo effects of setting up yytext */
        *yy_cp = yy_hold_char;

        if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
                { /* need to shift things up to make room */
                /* +2 for EOB chars. */
                register int number_to_move = yy_n_chars + 2;
                register char *dest = &yy_current_buffer->yy_ch_buf[
                                        yy_current_buffer->yy_buf_size + 2];
                register char *source =
                                &yy_current_buffer->yy_ch_buf[number_to_move];

                while ( source > yy_current_buffer->yy_ch_buf )
                        *--dest = *--source;

                yy_cp += (int) (dest - source);
                yy_bp += (int) (dest - source);
                yy_current_buffer->yy_n_chars =
                        yy_n_chars = yy_current_buffer->yy_buf_size;

                if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
                }

        *--yy_cp = (char) c;


        yytext_ptr = yy_bp;
        yy_hold_char = *yy_cp;
        yy_c_buf_p = yy_cp;
        }
#endif  /* ifndef YY_NO_UNPUT */


#ifdef __cplusplus
static int yyinput()
/* [<][>][^][v][top][bottom][index][help] */
#else
static int input()
#endif
        {
        int c;

        *yy_c_buf_p = yy_hold_char;

        if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
                {
                /* yy_c_buf_p now points to the character we want to return.
                 * If this occurs *before* the EOB characters, then it's a
                 * valid NUL; if not, then we've hit the end of the buffer.
                 */
                if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
                        /* This was really a NUL. */
                        *yy_c_buf_p = '\0';

                else
                        { /* need more input */
                        int offset = yy_c_buf_p - yytext_ptr;
                        ++yy_c_buf_p;

                        switch ( yy_get_next_buffer() )
                                {
                                case EOB_ACT_LAST_MATCH:
                                        /* This happens because yy_g_n_b()
                                         * sees that we've accumulated a
                                         * token and flags that we need to
                                         * try matching the token before
                                         * proceeding.  But for input(),
                                         * there's no matching to consider.
                                         * So convert the EOB_ACT_LAST_MATCH
                                         * to EOB_ACT_END_OF_FILE.
                                         */

                                        /* Reset buffer status. */
                                        yyrestart( yyin );

                                        /* fall through */

                                case EOB_ACT_END_OF_FILE:
                                        {
                                        if ( yywrap() )
                                                return EOF;

                                        if ( ! yy_did_buffer_switch_on_eof )
                                                YY_NEW_FILE;
#ifdef __cplusplus
                                        return yyinput();
#else
                                        return input();
#endif
                                        }

                                case EOB_ACT_CONTINUE_SCAN:
                                        yy_c_buf_p = yytext_ptr + offset;
                                        break;
                                }
                        }
                }

        c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
        *yy_c_buf_p = '\0';     /* preserve yytext */
        yy_hold_char = *++yy_c_buf_p;

        yy_current_buffer->yy_at_bol = (c == '\n');

        return c;
        }


#ifdef YY_USE_PROTOS
void yyrestart( FILE *input_file )
/* [<][>][^][v][top][bottom][index][help] */
#else
void yyrestart( input_file )
FILE *input_file;
#endif
        {
        if ( ! yy_current_buffer )
                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );

        yy_init_buffer( yy_current_buffer, input_file );
        yy_load_buffer_state();
        }


#ifdef YY_USE_PROTOS
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
/* [<][>][^][v][top][bottom][index][help] */
#else
void yy_switch_to_buffer( new_buffer )
YY_BUFFER_STATE new_buffer;
#endif
        {
        if ( yy_current_buffer == new_buffer )
                return;

        if ( yy_current_buffer )
                {
                /* Flush out information for old buffer. */
                *yy_c_buf_p = yy_hold_char;
                yy_current_buffer->yy_buf_pos = yy_c_buf_p;
                yy_current_buffer->yy_n_chars = yy_n_chars;
                }

        yy_current_buffer = new_buffer;
        yy_load_buffer_state();

        /* We don't actually know whether we did this switch during
         * EOF (yywrap()) processing, but the only time this flag
         * is looked at is after yywrap() is called, so it's safe
         * to go ahead and always set it.
         */
        yy_did_buffer_switch_on_eof = 1;
        }


#ifdef YY_USE_PROTOS
void yy_load_buffer_state( void )
/* [<][>][^][v][top][bottom][index][help] */
#else
void yy_load_buffer_state()
#endif
        {
        yy_n_chars = yy_current_buffer->yy_n_chars;
        yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
        yyin = yy_current_buffer->yy_input_file;
        yy_hold_char = *yy_c_buf_p;
        }


#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
/* [<][>][^][v][top][bottom][index][help] */
#else
YY_BUFFER_STATE yy_create_buffer( file, size )
FILE *file;
int size;
#endif
        {
        YY_BUFFER_STATE b;

        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

        b->yy_buf_size = size;

        /* yy_ch_buf has to be 2 characters longer than the size given because
         * we need to put in 2 end-of-buffer characters.
         */
        b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
        if ( ! b->yy_ch_buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

        b->yy_is_our_buffer = 1;

        yy_init_buffer( b, file );

        return b;
        }


#ifdef YY_USE_PROTOS
void yy_delete_buffer( YY_BUFFER_STATE b )
/* [<][>][^][v][top][bottom][index][help] */
#else
void yy_delete_buffer( b )
YY_BUFFER_STATE b;
#endif
        {
        if ( ! b )
                return;

        if ( b == yy_current_buffer )
                yy_current_buffer = (YY_BUFFER_STATE) 0;

        if ( b->yy_is_our_buffer )
                yy_flex_free( (void *) b->yy_ch_buf );

        yy_flex_free( (void *) b );
        }


#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#endif
#endif

#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
/* [<][>][^][v][top][bottom][index][help] */
#else
void yy_init_buffer( b, file )
YY_BUFFER_STATE b;
FILE *file;
#endif


        {
        yy_flush_buffer( b );

        b->yy_input_file = file;
        b->yy_fill_buffer = 1;

#if YY_ALWAYS_INTERACTIVE
        b->yy_is_interactive = 1;
#else
#if YY_NEVER_INTERACTIVE
        b->yy_is_interactive = 0;
#else
        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
#endif
#endif
        }


#ifdef YY_USE_PROTOS
void yy_flush_buffer( YY_BUFFER_STATE b )
/* [<][>][^][v][top][bottom][index][help] */
#else
void yy_flush_buffer( b )
YY_BUFFER_STATE b;
#endif

        {
        if ( ! b )
                return;

        b->yy_n_chars = 0;

        /* We always need two end-of-buffer characters.  The first causes
         * a transition to the end-of-buffer state.  The second causes
         * a jam in that state.
         */
        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;

        b->yy_buf_pos = &b->yy_ch_buf[0];

        b->yy_at_bol = 1;
        b->yy_buffer_status = YY_BUFFER_NEW;

        if ( b == yy_current_buffer )
                yy_load_buffer_state();
        }


#ifndef YY_NO_SCAN_BUFFER
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
/* [<][>][^][v][top][bottom][index][help] */
#else
YY_BUFFER_STATE yy_scan_buffer( base, size )
char *base;
yy_size_t size;
#endif
        {
        YY_BUFFER_STATE b;

        if ( size < 2 ||
             base[size-2] != YY_END_OF_BUFFER_CHAR ||
             base[size-1] != YY_END_OF_BUFFER_CHAR )
                /* They forgot to leave room for the EOB's. */
                return 0;

        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );

        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
        b->yy_input_file = 0;
        b->yy_n_chars = b->yy_buf_size;
        b->yy_is_interactive = 0;
        b->yy_at_bol = 1;
        b->yy_fill_buffer = 0;
        b->yy_buffer_status = YY_BUFFER_NEW;

        yy_switch_to_buffer( b );

        return b;
        }
#endif


#ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
/* [<][>][^][v][top][bottom][index][help] */
#else
YY_BUFFER_STATE yy_scan_string( yy_str )
yyconst char *yy_str;
#endif
        {
        int len;
        for ( len = 0; yy_str[len]; ++len )
                ;

        return yy_scan_bytes( yy_str, len );
        }
#endif


#ifndef YY_NO_SCAN_BYTES
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
/* [<][>][^][v][top][bottom][index][help] */
#else
YY_BUFFER_STATE yy_scan_bytes( bytes, len )
yyconst char *bytes;
int len;
#endif
        {
        YY_BUFFER_STATE b;
        char *buf;
        yy_size_t n;
        int i;

        /* Get memory for full buffer, including space for trailing EOB's. */
        n = len + 2;
        buf = (char *) yy_flex_alloc( n );
        if ( ! buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

        for ( i = 0; i < len; ++i )
                buf[i] = bytes[i];

        buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;

        b = yy_scan_buffer( buf, n );
        if ( ! b )
                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );

        /* It's okay to grow etc. this buffer, and we should throw it
         * away when we're done.
         */
        b->yy_is_our_buffer = 1;

        return b;
        }
#endif


#ifndef YY_NO_PUSH_STATE
#ifdef YY_USE_PROTOS
static void yy_push_state( int new_state )
/* [<][>][^][v][top][bottom][index][help] */
#else
static void yy_push_state( new_state )
int new_state;
#endif
        {
        if ( yy_start_stack_ptr >= yy_start_stack_depth )
                {
                yy_size_t new_size;

                yy_start_stack_depth += YY_START_STACK_INCR;
                new_size = yy_start_stack_depth * sizeof( int );

                if ( ! yy_start_stack )
                        yy_start_stack = (int *) yy_flex_alloc( new_size );

                else
                        yy_start_stack = (int *) yy_flex_realloc(
                                        (void *) yy_start_stack, new_size );

                if ( ! yy_start_stack )
                        YY_FATAL_ERROR(
                        "out of memory expanding start-condition stack" );
                }

        yy_start_stack[yy_start_stack_ptr++] = YY_START;

        BEGIN(new_state);
        }
#endif


#ifndef YY_NO_POP_STATE
static void yy_pop_state()
/* [<][>][^][v][top][bottom][index][help] */
        {
        if ( --yy_start_stack_ptr < 0 )
                YY_FATAL_ERROR( "start-condition stack underflow" );

        BEGIN(yy_start_stack[yy_start_stack_ptr]);
        }
#endif


#ifndef YY_NO_TOP_STATE
static int yy_top_state()
/* [<][>][^][v][top][bottom][index][help] */
        {
        return yy_start_stack[yy_start_stack_ptr - 1];
        }
#endif

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

#ifdef YY_USE_PROTOS
static void yy_fatal_error( yyconst char msg[] )
/* [<][>][^][v][top][bottom][index][help] */
#else
static void yy_fatal_error( msg )
char msg[];
#endif
        {
        (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
        }



/* Redefine yyless() so it works in section 3 code. */

#undef yyless
#define yyless(n) \
/* [<][>][^][v][top][bottom][index][help] */
        do \
                { \
                /* Undo effects of setting up yytext. */ \
                yytext[yyleng] = yy_hold_char; \
                yy_c_buf_p = yytext + n; \
                yy_hold_char = *yy_c_buf_p; \
                *yy_c_buf_p = '\0'; \
                yyleng = n; \
                } \
        while ( 0 )


/* Internal utility routines. */

#ifndef yytext_ptr
#ifdef YY_USE_PROTOS
static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
/* [<][>][^][v][top][bottom][index][help] */
#else
static void yy_flex_strncpy( s1, s2, n )
char *s1;
yyconst char *s2;
int n;
#endif
        {
        register int i;
        for ( i = 0; i < n; ++i )
                s1[i] = s2[i];
        }
#endif

#ifdef YY_NEED_STRLEN
#ifdef YY_USE_PROTOS
static int yy_flex_strlen( yyconst char *s )
/* [<][>][^][v][top][bottom][index][help] */
#else
static int yy_flex_strlen( s )
yyconst char *s;
#endif
        {
        register int n;
        for ( n = 0; s[n]; ++n )
                ;

        return n;
        }
#endif


#ifdef YY_USE_PROTOS
static void *yy_flex_alloc( yy_size_t size )
/* [<][>][^][v][top][bottom][index][help] */
#else
static void *yy_flex_alloc( size )
yy_size_t size;
#endif
        {
        return (void *) malloc( size );
        }

#ifdef YY_USE_PROTOS
static void *yy_flex_realloc( void *ptr, yy_size_t size )
/* [<][>][^][v][top][bottom][index][help] */
#else
static void *yy_flex_realloc( ptr, size )
void *ptr;
yy_size_t size;
#endif
        {
        /* The cast to (char *) in the following accommodates both
         * implementations that use char* generic pointers, and those
         * that use void* generic pointers.  It works with the latter
         * because both ANSI C and C++ allow castless assignment from
         * any pointer type to void*, and deal with argument conversions
         * as though doing an assignment.
         */
        return (void *) realloc( (char *) ptr, size );
        }

#ifdef YY_USE_PROTOS
static void yy_flex_free( void *ptr )
/* [<][>][^][v][top][bottom][index][help] */
#else
static void yy_flex_free( ptr )
void *ptr;
#endif
        {
        free( ptr );
        }

#if YY_MAIN
int main()
/* [<][>][^][v][top][bottom][index][help] */
        {
        yylex();
        return 0;
        }
#endif
#line 627 "rpsl.l"

extern "C" {
int yywrap () {
   return 1;
}
}

void handle_error(char *s, ...) {
/* [<][>][^][v][top][bottom][index][help] */
   current_object->has_error = true;

   char buffer[1024] = "***";
   va_list ap;
   va_start(ap, s);
   vsprintf(buffer+3, s, ap);
   va_end(ap);

   if (current_attribute)
      current_attribute->errors += buffer;
   else 
      current_object->errors += buffer;
}

void handle_object_error(char *s, ...) {
/* [<][>][^][v][top][bottom][index][help] */
   current_object->has_error = true;

   char buffer[1024] = "***";
   va_list ap;
   va_start(ap, s);
   vsprintf(buffer+3, s, ap);
   va_end(ap);

   current_object->errors += buffer;
}

void rpslerror(char *, ...) {
/* [<][>][^][v][top][bottom][index][help] */
   if (current_attribute) {
      current_attribute->errorLine = errorLine;
      current_attribute->errorColon = errorColon - yyleng;
      current_attribute->errorLeng  = yyleng;
   }
}

void handle_warning(char *s, ...) {
/* [<][>][^][v][top][bottom][index][help] */
   current_object->has_warning = true;

   char buffer[1024];
   va_list ap;
   va_start(ap, s);
   vsprintf(buffer, s, ap);
   va_end(ap);

   if (current_attribute) 
      current_attribute->errors += buffer;
   else 
      current_object->errors += buffer;
}

void yy_scan_object(Object *o) {
/* [<][>][^][v][top][bottom][index][help] */
   errorLine = 0; 
   errorColon = 0;
   current_object = o;
   current_attribute = NULL;
   start_of_object = true;
   scan_position = 0;
   genericMode = true;

   if (rpsl_buffer)
      yy_delete_buffer(rpsl_buffer);
   rpsl_buffer = yy_scan_bytes(o->contents, o->size);
   BEGIN(INITIAL);
}

Attr *changeCurrentAttr(Attr *b) {
/* [<][>][^][v][top][bottom][index][help] */
   if (current_attribute) {
      b->object = current_attribute->object;
      b->type   = current_attribute->type;
      b->offset = current_attribute->offset;;
      b->len    = current_attribute->len;
      b->errors = current_attribute->errors;
      b->errorLine  = current_attribute->errorLine;
      b->errorColon = current_attribute->errorColon;
      b->errorLeng  = current_attribute->errorLeng;
      delete current_attribute;
   }
   current_attribute = b;
   return b;
}

int validIPv6(const char *s){
/* [<][>][^][v][top][bottom][index][help] */
   char *string, *sleft, *sright, *pos;
   int countleft = 0, countright = 0; 
   string = strdup(s);
   pos = strstr(string,"/");
   pos[0] = '\0';
   sleft = strdup(string);
   pos = strstr(sleft,"::");
   pos[0] = '\0';  
   sright = pos + 2;
   // count the ':'s on the left
   for(int i=0;i<strlen(sleft);i++){
     if(sleft[i] == ':'){ countleft++;} 
   }
   // count the ':'s on the right
   for(int i=0;i<strlen(sright);i++){
     if(sright[i] == ':'){ countright++;} 
   }
   printf("The two parts are: %s and %s\nCounts are %i and %i\n",
                           sleft, sright, countleft, countright); 

   // now, if the total # of quads is  > 8, than there
   // is a problem with the syntax of the ipv6 address.
   if((countleft + 1 + countright + 1) <= 8 ){
     return 1;
   }else{
     return 0;
   }
}

int validIntForPhone(const char * arg){
/* [<][>][^][v][top][bottom][index][help] */
   /* Checks if the integer is valid  as a phone no (should not contain '+' or '-')*/
   if((strchr(arg,'+') == NULL) && (strchr(arg,'-') == NULL)){
       return 1;
   }
   return 0;
}


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