Annotation of embedaddon/sudo/plugins/sudoers/toke.c, revision 1.1

1.1     ! misho       1: #include <config.h>
        !             2: /*     $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $     */
        !             3: 
        !             4: /* A lexical scanner generated by flex */
        !             5: 
        !             6: /* Scanner skeleton version:
        !             7:  * $Header: /cvs/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
        !             8:  */
        !             9: 
        !            10: #define FLEX_SCANNER
        !            11: #define YY_FLEX_MAJOR_VERSION 2
        !            12: #define YY_FLEX_MINOR_VERSION 5
        !            13: 
        !            14: #include <stdio.h>
        !            15: #include <errno.h>
        !            16: 
        !            17: 
        !            18: /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
        !            19: #ifdef c_plusplus
        !            20: #ifndef __cplusplus
        !            21: #define __cplusplus
        !            22: #endif
        !            23: #endif
        !            24: 
        !            25: 
        !            26: #ifdef __cplusplus
        !            27: 
        !            28: #include <stdlib.h>
        !            29: #include <unistd.h>
        !            30: 
        !            31: /* Use prototypes in function declarations. */
        !            32: #define YY_USE_PROTOS
        !            33: 
        !            34: /* The "const" storage-class-modifier is valid. */
        !            35: #define YY_USE_CONST
        !            36: 
        !            37: #else  /* ! __cplusplus */
        !            38: 
        !            39: #ifdef __STDC__
        !            40: 
        !            41: #define YY_USE_PROTOS
        !            42: #define YY_USE_CONST
        !            43: 
        !            44: #endif /* __STDC__ */
        !            45: #endif /* ! __cplusplus */
        !            46: 
        !            47: #ifdef __TURBOC__
        !            48:  #pragma warn -rch
        !            49:  #pragma warn -use
        !            50: #include <io.h>
        !            51: #include <stdlib.h>
        !            52: #define YY_USE_CONST
        !            53: #define YY_USE_PROTOS
        !            54: #endif
        !            55: 
        !            56: #ifdef YY_USE_CONST
        !            57: #define yyconst const
        !            58: #else
        !            59: #define yyconst
        !            60: #endif
        !            61: 
        !            62: 
        !            63: #ifdef YY_USE_PROTOS
        !            64: #define YY_PROTO(proto) proto
        !            65: #else
        !            66: #define YY_PROTO(proto) ()
        !            67: #endif
        !            68: 
        !            69: /* Returned upon end-of-file. */
        !            70: #define YY_NULL 0
        !            71: 
        !            72: /* Promotes a possibly negative, possibly signed char to an unsigned
        !            73:  * integer for use as an array index.  If the signed char is negative,
        !            74:  * we want to instead treat it as an 8-bit unsigned char, hence the
        !            75:  * double cast.
        !            76:  */
        !            77: #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
        !            78: 
        !            79: /* Enter a start condition.  This macro really ought to take a parameter,
        !            80:  * but we do it the disgusting crufty way forced on us by the ()-less
        !            81:  * definition of BEGIN.
        !            82:  */
        !            83: #define BEGIN yy_start = 1 + 2 *
        !            84: 
        !            85: /* Translate the current start state into a value that can be later handed
        !            86:  * to BEGIN to return to the state.  The YYSTATE alias is for lex
        !            87:  * compatibility.
        !            88:  */
        !            89: #define YY_START ((yy_start - 1) / 2)
        !            90: #define YYSTATE YY_START
        !            91: 
        !            92: /* Action number for EOF rule of a given start state. */
        !            93: #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
        !            94: 
        !            95: /* Special action meaning "start processing a new file". */
        !            96: #define YY_NEW_FILE yyrestart( yyin )
        !            97: 
        !            98: #define YY_END_OF_BUFFER_CHAR 0
        !            99: 
        !           100: /* Size of default input buffer. */
        !           101: #define YY_BUF_SIZE 16384
        !           102: 
        !           103: typedef struct yy_buffer_state *YY_BUFFER_STATE;
        !           104: 
        !           105: extern int yyleng;
        !           106: extern FILE *yyin, *yyout;
        !           107: 
        !           108: #define EOB_ACT_CONTINUE_SCAN 0
        !           109: #define EOB_ACT_END_OF_FILE 1
        !           110: #define EOB_ACT_LAST_MATCH 2
        !           111: 
        !           112: /* The funky do-while in the following #define is used to turn the definition
        !           113:  * int a single C statement (which needs a semi-colon terminator).  This
        !           114:  * avoids problems with code like:
        !           115:  *
        !           116:  *     if ( condition_holds )
        !           117:  *             yyless( 5 );
        !           118:  *     else
        !           119:  *             do_something_else();
        !           120:  *
        !           121:  * Prior to using the do-while the compiler would get upset at the
        !           122:  * "else" because it interpreted the "if" statement as being all
        !           123:  * done when it reached the ';' after the yyless() call.
        !           124:  */
        !           125: 
        !           126: /* Return all but the first 'n' matched characters back to the input stream. */
        !           127: 
        !           128: #define yyless(n) \
        !           129:        do \
        !           130:                { \
        !           131:                /* Undo effects of setting up yytext. */ \
        !           132:                *yy_cp = yy_hold_char; \
        !           133:                YY_RESTORE_YY_MORE_OFFSET \
        !           134:                yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
        !           135:                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
        !           136:                } \
        !           137:        while ( 0 )
        !           138: 
        !           139: #define unput(c) yyunput( c, yytext_ptr )
        !           140: 
        !           141: /* The following is because we cannot portably get our hands on size_t
        !           142:  * (without autoconf's help, which isn't available because we want
        !           143:  * flex-generated scanners to compile on their own).
        !           144:  */
        !           145: typedef unsigned int yy_size_t;
        !           146: 
        !           147: 
        !           148: struct yy_buffer_state
        !           149:        {
        !           150:        FILE *yy_input_file;
        !           151: 
        !           152:        char *yy_ch_buf;                /* input buffer */
        !           153:        char *yy_buf_pos;               /* current position in input buffer */
        !           154: 
        !           155:        /* Size of input buffer in bytes, not including room for EOB
        !           156:         * characters.
        !           157:         */
        !           158:        yy_size_t yy_buf_size;
        !           159: 
        !           160:        /* Number of characters read into yy_ch_buf, not including EOB
        !           161:         * characters.
        !           162:         */
        !           163:        int yy_n_chars;
        !           164: 
        !           165:        /* Whether we "own" the buffer - i.e., we know we created it,
        !           166:         * and can realloc() it to grow it, and should free() it to
        !           167:         * delete it.
        !           168:         */
        !           169:        int yy_is_our_buffer;
        !           170: 
        !           171:        /* Whether this is an "interactive" input source; if so, and
        !           172:         * if we're using stdio for input, then we want to use getc()
        !           173:         * instead of fread(), to make sure we stop fetching input after
        !           174:         * each newline.
        !           175:         */
        !           176:        int yy_is_interactive;
        !           177: 
        !           178:        /* Whether we're considered to be at the beginning of a line.
        !           179:         * If so, '^' rules will be active on the next match, otherwise
        !           180:         * not.
        !           181:         */
        !           182:        int yy_at_bol;
        !           183: 
        !           184:        /* Whether to try to fill the input buffer when we reach the
        !           185:         * end of it.
        !           186:         */
        !           187:        int yy_fill_buffer;
        !           188: 
        !           189:        int yy_buffer_status;
        !           190: #define YY_BUFFER_NEW 0
        !           191: #define YY_BUFFER_NORMAL 1
        !           192:        /* When an EOF's been seen but there's still some text to process
        !           193:         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
        !           194:         * shouldn't try reading from the input source any more.  We might
        !           195:         * still have a bunch of tokens to match, though, because of
        !           196:         * possible backing-up.
        !           197:         *
        !           198:         * When we actually see the EOF, we change the status to "new"
        !           199:         * (via yyrestart()), so that the user can continue scanning by
        !           200:         * just pointing yyin at a new input file.
        !           201:         */
        !           202: #define YY_BUFFER_EOF_PENDING 2
        !           203:        };
        !           204: 
        !           205: static YY_BUFFER_STATE yy_current_buffer = 0;
        !           206: 
        !           207: /* We provide macros for accessing buffer states in case in the
        !           208:  * future we want to put the buffer states in a more general
        !           209:  * "scanner state".
        !           210:  */
        !           211: #define YY_CURRENT_BUFFER yy_current_buffer
        !           212: 
        !           213: 
        !           214: /* yy_hold_char holds the character lost when yytext is formed. */
        !           215: static char yy_hold_char;
        !           216: 
        !           217: static int yy_n_chars;         /* number of characters read into yy_ch_buf */
        !           218: 
        !           219: 
        !           220: int yyleng;
        !           221: 
        !           222: /* Points to current character in buffer. */
        !           223: static char *yy_c_buf_p = (char *) 0;
        !           224: static int yy_init = 1;                /* whether we need to initialize */
        !           225: static int yy_start = 0;       /* start state number */
        !           226: 
        !           227: /* Flag which is used to allow yywrap()'s to do buffer switches
        !           228:  * instead of setting up a fresh yyin.  A bit of a hack ...
        !           229:  */
        !           230: static int yy_did_buffer_switch_on_eof;
        !           231: 
        !           232: void yyrestart YY_PROTO(( FILE *input_file ));
        !           233: 
        !           234: void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
        !           235: void yy_load_buffer_state YY_PROTO(( void ));
        !           236: YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
        !           237: void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
        !           238: void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
        !           239: void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
        !           240: #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
        !           241: 
        !           242: YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
        !           243: YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
        !           244: YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
        !           245: 
        !           246: static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
        !           247: static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
        !           248: static void yy_flex_free YY_PROTO(( void * ));
        !           249: 
        !           250: #define yy_new_buffer yy_create_buffer
        !           251: 
        !           252: #define yy_set_interactive(is_interactive) \
        !           253:        { \
        !           254:        if ( ! yy_current_buffer ) \
        !           255:                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
        !           256:        yy_current_buffer->yy_is_interactive = is_interactive; \
        !           257:        }
        !           258: 
        !           259: #define yy_set_bol(at_bol) \
        !           260:        { \
        !           261:        if ( ! yy_current_buffer ) \
        !           262:                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
        !           263:        yy_current_buffer->yy_at_bol = at_bol; \
        !           264:        }
        !           265: 
        !           266: #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
        !           267: 
        !           268: 
        !           269: #define yywrap() 1
        !           270: #define YY_SKIP_YYWRAP
        !           271: typedef unsigned char YY_CHAR;
        !           272: FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
        !           273: typedef int yy_state_type;
        !           274: extern char *yytext;
        !           275: #define yytext_ptr yytext
        !           276: 
        !           277: static yy_state_type yy_get_previous_state YY_PROTO(( void ));
        !           278: static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
        !           279: static int yy_get_next_buffer YY_PROTO(( void ));
        !           280: static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        !           281: 
        !           282: /* Done after the current pattern has been matched and before the
        !           283:  * corresponding action - sets up yytext.
        !           284:  */
        !           285: #define YY_DO_BEFORE_ACTION \
        !           286:        yytext_ptr = yy_bp; \
        !           287:        yyleng = (int) (yy_cp - yy_bp); \
        !           288:        yy_hold_char = *yy_cp; \
        !           289:        *yy_cp = '\0'; \
        !           290:        yy_c_buf_p = yy_cp;
        !           291: 
        !           292: #define YY_NUM_RULES 59
        !           293: #define YY_END_OF_BUFFER 60
        !           294: static yyconst short int yy_accept[607] =
        !           295:     {   0,
        !           296:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !           297:         0,    0,   60,   47,   55,   54,   53,   46,   58,   32,
        !           298:        48,   49,   32,   50,   47,   47,   47,   47,   52,   51,
        !           299:        58,   42,   42,   42,   42,   42,   42,   42,   42,   42,
        !           300:        42,   58,   47,   47,   55,   58,   42,   42,   42,   42,
        !           301:        42,    2,   58,    1,   47,   47,   17,   16,   17,   16,
        !           302:        16,   58,   58,   58,    3,    9,    8,    9,    4,    9,
        !           303:         5,   58,   13,   13,   13,   11,   12,   47,    0,   55,
        !           304:        53,    0,   57,    0,   47,   34,    0,   32,    0,   33,
        !           305:         0,   45,   45,    0,   47,   47,    0,   47,   47,   47,
        !           306: 
        !           307:        47,    0,   37,   42,   42,   42,   42,   42,   42,   42,
        !           308:        42,   42,   42,   47,   56,   47,   55,    0,    0,    0,
        !           309:         0,    0,    0,   47,   47,   47,   47,   47,    2,    1,
        !           310:         0,    1,   43,   43,    0,   47,   17,   17,   15,   14,
        !           311:        15,    0,    0,    3,    9,    0,    6,    7,    9,    9,
        !           312:        13,    0,   13,   13,    0,   10,    0,    0,    0,   34,
        !           313:        34,    0,    0,   47,   47,   47,   47,   47,    0,    0,
        !           314:        37,   37,   42,   39,   42,   42,   42,   42,   42,   42,
        !           315:        42,   42,   42,   42,   47,    0,    0,    0,    0,    0,
        !           316:         0,   47,   47,   47,   47,   47,    0,   47,   10,    0,
        !           317: 
        !           318:        47,   47,   47,   47,   47,   47,    0,   38,   38,   38,
        !           319:         0,    0,   37,   37,   37,   37,   37,   37,   37,   42,
        !           320:        42,   42,   42,   42,   42,   42,   42,   40,   42,   41,
        !           321:        47,    0,    0,    0,    0,    0,    0,   47,   47,   47,
        !           322:        47,   47,   47,   47,    0,    0,   38,   38,   38,    0,
        !           323:        37,   37,    0,   37,   37,   37,   37,   37,   37,   37,
        !           324:        37,   37,   37,   37,    0,   25,   42,   42,   42,   42,
        !           325:        42,   42,   42,   42,   47,    0,    0,    0,    0,   47,
        !           326:        47,   47,   47,   47,   47,   47,   47,    0,   38,    0,
        !           327:        37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
        !           328: 
        !           329:        37,   37,   37,   37,   37,   37,   37,   37,   37,   42,
        !           330:        42,   42,   42,   42,   42,   42,   42,   47,    0,    0,
        !           331:         0,   47,   47,   47,   35,   35,   35,    0,    0,   37,
        !           332:        37,   37,   37,   37,   37,   37,    0,    0,    0,    0,
        !           333:         0,   37,   37,   37,   37,   37,   37,   37,   37,   37,
        !           334:        37,   37,   37,   37,   37,   42,   42,    0,   24,   42,
        !           335:        42,   42,   42,    0,   23,    0,   26,   47,    0,    0,
        !           336:         0,   47,   47,   47,   47,   35,   35,   35,   35,    0,
        !           337:        37,    0,   37,   37,   37,   37,   37,   37,   37,   37,
        !           338:        37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
        !           339: 
        !           340:        37,   37,   37,   37,   37,   37,   37,   37,   37,   42,
        !           341:        42,   42,   42,   42,   42,   44,    0,    0,    0,   47,
        !           342:        20,   43,   36,   36,   36,   36,   37,    0,    0,    0,
        !           343:        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
        !           344:        37,   37,   37,    0,    0,    0,    0,    0,   37,   37,
        !           345:        37,   37,   37,   37,   37,   37,   42,   42,   42,   42,
        !           346:         0,   22,    0,   27,    0,   20,    0,    0,   47,    0,
        !           347:        47,   47,   47,   36,   36,   36,   36,    0,    0,    0,
        !           348:         0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
        !           349:        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
        !           350: 
        !           351:        37,   37,    0,   30,   42,   42,   42,    0,    0,    0,
        !           352:        21,   20,    0,    0,    0,    0,    0,   20,    0,   47,
        !           353:        47,   47,    0,    0,    0,   37,   37,   37,   37,   37,
        !           354:        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
        !           355:        37,   37,   37,    0,   28,   42,   42,   21,    0,   18,
        !           356:         0,    0,   20,   47,   47,   47,   47,   47,    0,    0,
        !           357:         0,    0,    0,   37,   37,   37,   37,   37,   37,   37,
        !           358:        37,    0,   31,   42,    0,   47,   47,   47,   37,   37,
        !           359:        37,   37,   37,   37,    0,   29,    0,   47,   47,   47,
        !           360:        47,   47,   37,   37,   37,   37,   37,    0,   19,   35,
        !           361: 
        !           362:        35,   35,   35,   35,   35,    0
        !           363:     } ;
        !           364: 
        !           365: static yyconst int yy_ec[256] =
        !           366:     {   0,
        !           367:         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        !           368:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           369:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           370:         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
        !           371:         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
        !           372:        19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
        !           373:        25,   26,   10,   27,   28,   29,   30,   31,   32,   29,
        !           374:        33,   34,   35,   36,   36,   37,   36,   38,   39,   40,
        !           375:        36,   41,   42,   43,   44,   45,   46,   47,   48,   36,
        !           376:        10,   49,   10,    1,   50,    1,   51,   52,   53,   54,
        !           377: 
        !           378:        55,   56,   57,   57,   58,   57,   57,   59,   60,   61,
        !           379:        62,   57,   57,   63,   64,   65,   66,   57,   57,   57,
        !           380:        57,   57,    1,    1,    1,    1,    1,    1,    1,    1,
        !           381:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           382:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           383:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           384:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           385:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           386:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           387:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           388: 
        !           389:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           390:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           391:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           392:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           393:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           394:         1,    1,    1,    1,    1
        !           395:     } ;
        !           396: 
        !           397: static yyconst int yy_meta[67] =
        !           398:     {   0,
        !           399:         1,    2,    3,    4,    5,    6,    1,    7,    7,    1,
        !           400:         1,    8,    1,    9,   10,   11,   11,   11,   11,   11,
        !           401:        11,   11,   11,   12,   13,    7,    1,   11,   11,   11,
        !           402:        11,   11,    1,    1,    1,    1,    1,    1,    1,    1,
        !           403:         1,    1,    1,    1,    1,    1,    1,    1,   14,   15,
        !           404:        16,   16,   16,   16,   16,   16,   15,   15,   15,   15,
        !           405:        15,   15,   15,   15,   15,   15
        !           406:     } ;
        !           407: 
        !           408: static yyconst short int yy_base[671] =
        !           409:     {   0,
        !           410:         0,   65,   67,   72,   99,  114,  162,  227,  292,  340,
        !           411:        86,  125, 2840, 2790, 2836, 3665, 2833, 3665,  387,   70,
        !           412:      3665, 3665, 2771, 3665,  136,  397,  133,  159, 2795, 3665,
        !           413:      3665,  453, 2781,   33,  504, 2770, 2767, 2777, 2765, 2771,
        !           414:      2754,  559,  170,   19,  165,  583,   38,   49, 2739,   68,
        !           415:      2727,   81,  219, 2771,  305,   48,    0, 3665, 2761, 3665,
        !           416:         0,  250,  639,  119,    0, 2709, 3665,  108, 3665,  112,
        !           417:      3665,  140, 2699,   98,  121, 3665,  195, 2693,  661, 2739,
        !           418:      2736, 2736, 3665,  227,  247,  300,  316,  152,  354, 2681,
        !           419:       686,  373, 2670,  711,  352,  722, 2692, 2669,  375,  414,
        !           420: 
        !           421:       302, 2656,   57,  763,    0, 2628, 2625, 2614,  505, 2602,
        !           422:      2606, 2599, 2601,  202, 3665,  153,  546, 2572, 2565, 2549,
        !           423:      2537, 2524,  200,  110,  244,   28,  111,  252,  171, 2578,
        !           424:       422, 2577,  565, 2529,  818,  262,    0, 2573,  179, 3665,
        !           425:      3665,  599,  269,    0, 2513,  453, 3665, 3665, 2512,  548,
        !           426:      2490, 2533,  206,  253,  323, 2535, 2524, 2513,  607,  615,
        !           427:       306,  722,  586,  831,  867,  903,  939, 2499, 2456,  980,
        !           428:       333, 1022, 1063,    0, 2430, 2394, 2363, 2364, 2374, 2369,
        !           429:      2327, 2330, 2329, 2328,  266, 2289, 2283, 2272, 2274, 2279,
        !           430:       409,  334, 2279,  145,  335,   83,  672,  278, 2327, 2325,
        !           431: 
        !           432:       627,  259, 1106, 1142,  741,  210, 2293, 2279,  683,  513,
        !           433:      2275, 2271,  352,  747, 1178,  780,  788, 1220,  815, 2270,
        !           434:       400,  325, 2261, 2258, 2248, 2246, 2242,    0, 2240,    0,
        !           435:       489, 2223, 2213, 2198, 2211, 2198,  420,  407,  529,  490,
        !           436:       491, 1263, 1299, 1335, 2235, 2234,  839, 2234, 2232, 2228,
        !           437:      2226,  528,  848,  657,  856,  665, 1371,    0,  877, 1382,
        !           438:       886,  894, 1424,  913,  570, 3665, 2208, 2197, 2198, 2177,
        !           439:      2184, 2193, 2190, 2169,  558, 2145, 2098, 2099,  648,  626,
        !           440:       530,  559,  923,  336, 1467, 1503,  964, 2138, 2137, 2108,
        !           441:      2086, 1537,  551, 1000, 1041, 1082,  653,  694,  797, 1049,
        !           442: 
        !           443:       923, 1580,    0, 1116, 1591, 1090, 1008, 1633, 1125, 2069,
        !           444:      2065,  747,  686, 2046, 2005,  786,  926,  905, 2014, 1982,
        !           445:       679,  634,  544,  915, 1675, 1710, 1745, 2015, 1978, 1962,
        !           446:      1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273,
        !           447:      1207,  950,  951,  962,  991, 1247, 1073, 1865,    0, 1283,
        !           448:      1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924,
        !           449:      1898, 1893, 1873, 1286, 3665, 1336, 3665,  707, 1790, 1783,
        !           450:       786,  930,  764, 1298, 1358, 1041, 1960, 1995, 1400, 1823,
        !           451:      1799, 1348,  708, 1406, 1348, 2031,    0,  559, 2042, 1441,
        !           452:      1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548,
        !           453: 
        !           454:      1557, 1602, 2126,    0, 1613, 2137, 1650, 1565, 1660, 1765,
        !           455:      1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577,  897,  938,
        !           456:      1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731,
        !           457:      1563, 1478, 1504, 1694, 1524, 2324,    0,  617, 2335, 1753,
        !           458:      1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358,
        !           459:      1887,  714,  825, 2419,    0,  926, 1407, 1508, 1506, 1471,
        !           460:      1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910,
        !           461:      1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005,
        !           462:      2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501,    0,
        !           463:      1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769,
        !           464: 
        !           465:      1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118,  384,
        !           466:      1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596,
        !           467:      2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362,
        !           468:      2043, 2704,    0, 1224, 2715, 2403, 2437, 2445,  992, 2454,
        !           469:      2474, 2483,  903, 1921, 3665, 1941,  839, 3665,  843, 3665,
        !           470:      1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579,  811,
        !           471:      2607, 2617, 2642,  640,  629, 2109,  535,  447, 2650,    0,
        !           472:      1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684,
        !           473:      2692,  337,    0,  333, 2067, 3665,  327, 2733, 1912, 2938,
        !           474:      2974, 2743, 3665, 2767, 2777, 2658, 3665,  166, 3665, 2805,
        !           475: 
        !           476:      2813, 2847,   63, 2855, 2881, 3665, 3023, 3039, 3055, 3071,
        !           477:      3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205,
        !           478:      3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346,
        !           479:      3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409,
        !           480:      3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477,
        !           481:      3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567,
        !           482:      3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648
        !           483:     } ;
        !           484: 
        !           485: static yyconst short int yy_def[671] =
        !           486:     {   0,
        !           487:       606,    1,    1,    1,  607,  607,  608,  608,  609,  609,
        !           488:       610,  610,  606,  611,  606,  606,  606,  606,  612,  613,
        !           489:       606,  606,  614,  606,  615,  611,   26,   26,  616,  606,
        !           490:       606,  606,   32,   32,   32,   35,   35,   35,   35,   35,
        !           491:        35,  611,   26,  611,  606,  612,   32,   32,   35,   35,
        !           492:        35,  606,  606,  606,  617,  611,  618,  606,  618,  606,
        !           493:       618,  606,  612,  606,  619,  620,  606,  620,  606,  620,
        !           494:       606,  621,  622,  622,  622,  606,  606,  611,  611,  606,
        !           495:       606,  623,  606,  624,  606,  613,  606,  625,  613,  614,
        !           496:       614,  615,  626,  611,  611,   26,  616,   96,   96,   96,
        !           497: 
        !           498:        96,  627,  628,   35,   35,   35,   35,   35,   35,   35,
        !           499:        35,   35,   35,  611,  606,  611,  606,  606,  606,  606,
        !           500:       606,  606,  623,  611,   96,  611,  611,  611,  606,  606,
        !           501:       606,  606,  617,  629,  611,  611,  618,  618,  606,  606,
        !           502:       606,  624,  606,  619,  620,  620,  606,  606,  620,  620,
        !           503:       622,  606,  622,  622,  606,  606,  623,  630,  606,  606,
        !           504:       625,  625,  606,  611,  611,  611,   96,  167,  631,  606,
        !           505:       632,  606,  104,   35,   35,   35,   35,   35,   35,   35,
        !           506:        35,   35,   35,   35,  611,  606,  606,  606,  606,  606,
        !           507:       623,  611,  167,  611,  611,  611,  606,  611,  606,  630,
        !           508: 
        !           509:       611,  611,  611,  611,  611,  611,  633,  634,  634,  209,
        !           510:       635,  634,  636,  172,  606,  215,  215,  606,  215,   35,
        !           511:        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
        !           512:       611,  606,  606,  606,  606,  606,  623,  611,  611,  611,
        !           513:       611,  611,  611,  611,  606,  637,  637,  247,  637,  638,
        !           514:       639,  640,  606,  641,  218,  641,  641,  257,  641,  606,
        !           515:       260,  260,  606,  260,  606,  606,   35,   35,   35,   35,
        !           516:        35,   35,   35,   35,  611,  606,  606,  606,  623,  611,
        !           517:       611,  611,  611,  611,  611,  611,  611,  642,  642,  643,
        !           518:       644,  606,  606,  606,  606,  606,  645,  645,  646,  263,
        !           519: 
        !           520:       646,  646,  302,  646,  606,  305,  305,  606,  305,   35,
        !           521:        35,   35,   35,   35,   35,   35,   35,  611,  606,  606,
        !           522:       623,  611,  611,  611,  611,  611,  611,  606,  647,  648,
        !           523:       292,  606,  332,  332,  606,  332,  606,  606,  606,  606,
        !           524:       606,  606,  649,  649,  650,  308,  650,  650,  348,  650,
        !           525:       606,  351,  351,  606,  351,   35,   35,  606,  606,   35,
        !           526:        35,   35,   35,  606,  606,  606,  606,  611,  606,  606,
        !           527:       623,  611,  611,  611,  611,  611,  611,  611,  611,  606,
        !           528:       651,  606,  652,  335,  652,  652,  386,  386,  606,  389,
        !           529:       389,  606,  389,  606,  606,  606,  606,  653,  653,  654,
        !           530: 
        !           531:       354,  654,  654,  403,  654,  606,  406,  406,  406,   35,
        !           532:        35,   35,   35,   35,   35,  611,  606,  606,  623,  611,
        !           533:       611,  611,  611,  611,  611,  611,  606,  606,  606,  606,
        !           534:       655,  655,  656,  392,  656,  656,  436,  436,  606,  439,
        !           535:       439,  606,  439,  606,  606,  606,  606,  606,  606,  657,
        !           536:       657,  658,  658,  658,  454,  454,   35,   35,   35,   35,
        !           537:       606,  606,  606,  606,  606,  606,  623,  623,  611,  659,
        !           538:       660,  611,  611,  611,  611,  611,  611,  606,  606,  606,
        !           539:       606,  606,  606,  661,  661,  662,  442,  662,  662,  489,
        !           540:       489,  606,  492,  492,  606,  492,  606,  606,  606,  606,
        !           541: 
        !           542:       663,  663,  606,  606,   35,   35,   35,  606,  664,  623,
        !           543:       611,  659,  659,  659,  659,  606,  659,  660,  660,  611,
        !           544:       611,  611,  606,  606,  606,  606,  665,  665,  666,  495,
        !           545:       666,  666,  532,  532,  606,  535,  535,  535,  606,  606,
        !           546:       606,  606,  606,  606,  606,   35,   35,  606,  664,  606,
        !           547:       623,  606,  606,  611,  611,  611,  611,  611,  606,  606,
        !           548:       606,  606,  606,  606,  667,  667,  668,  668,  668,  569,
        !           549:       569,  606,  606,   35,  623,  611,  611,  611,  606,  606,
        !           550:       606,  606,  669,  669,  606,  606,  670,  611,  611,  611,
        !           551:       611,  611,  606,  606,  606,  606,  606,  670,  606,  611,
        !           552: 
        !           553:       611,  611,  611,  611,  611,    0,  606,  606,  606,  606,
        !           554:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           555:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           556:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           557:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           558:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           559:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606
        !           560:     } ;
        !           561: 
        !           562: static yyconst short int yy_nxt[3732] =
        !           563:     {   0,
        !           564:        14,   15,   16,   17,   18,   19,   20,   21,   22,   14,
        !           565:        23,   24,   14,   14,   25,   26,   27,   28,   26,   26,
        !           566:        26,   26,   26,   29,   30,   31,   14,   32,   33,   33,
        !           567:        33,   34,   35,   35,   35,   35,   36,   37,   35,   38,
        !           568:        39,   40,   41,   35,   35,   35,   35,   35,   42,   14,
        !           569:        43,   43,   43,   43,   43,   43,   14,   14,   14,   14,
        !           570:        14,   14,   14,   44,   14,   14,   45,   79,   52,  105,
        !           571:        46,  170,   53,   52,  105,   87,   79,   53,   54,  107,
        !           572:       172,   55,  129,   54,  116,  105,   55,   74,   16,   75,
        !           573:        76,  194,  130,   88,   47,   48,   79,  124,   49,  153,
        !           574: 
        !           575:        15,   58,   59,  125,   60,   50,  111,   35,   51,   35,
        !           576:        60,   79,   35,  136,   35,   15,   58,   59,   89,   60,
        !           577:       143,  115,   60,   61,  154,   60,   74,   16,   75,   76,
        !           578:        56,   79,  147,  127,   77,   56,  148,   60,   61,   93,
        !           579:        93,  150,  115,   93,   93,  238,  152,   62,   99,   99,
        !           580:        99,   99,   99,   99,   99,   99,  146,   87,   79,   79,
        !           581:       146,   93,   62,   15,   16,   17,  117,   63,  599,  152,
        !           582:       192,  195,  129,   77,  100,  100,  100,  100,  100,  101,
        !           583:       143,  115,  130,   78,   94,   98,   98,   98,   98,   98,
        !           584:        98,   98,   98,   79,  118,  119,  155,  156,  120,  151,
        !           585: 
        !           586:       162,   79,   83,  143,  115,  121,  185,  153,  122,  238,
        !           587:        64,   65,   65,   65,   65,   65,   65,   65,   65,   65,
        !           588:        65,   65,   65,   65,   65,   65,   65,   65,   15,   16,
        !           589:        17,  131,   63,   97,   85,   85,   85,   85,   85,   85,
        !           590:        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
        !           591:        79,  139,  115,  140,  152,  141,  154,   78,   79,  140,
        !           592:       191,  141,   85,   85,   85,   85,   85,   85,   85,   85,
        !           593:       143,  115,  201,  141,  141,   64,   65,   65,   65,   65,
        !           594:        65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
        !           595:        65,   65,   65,   15,   16,   17,   67,   63,  141,  193,
        !           596: 
        !           597:        79,  152,   68,   69,   70,  606,  196,   79,  134,  134,
        !           598:        79,  606,  134,  134,   79,  198,   71,  168,  168,  168,
        !           599:       168,  168,  168,  606,  155,  156,   79,  231,  159,  599,
        !           600:       134,  160,  160,  160,  160,  160,  160,  160,  160,  241,
        !           601:        72,   15,   16,   17,   67,   63,  382,  170,   89,  283,
        !           602:        68,   69,   70,  135,  162,   86,  214,   86,   86,  267,
        !           603:       530,   86,   86,  268,   71,   86,  170,  164,  165,  166,
        !           604:       164,  164,  164,  164,  164,  214,   93,   93,   86,   86,
        !           605:        93,   93,   79,   79,   79,  240,   83,  238,   72,   83,
        !           606:       168,  168,  168,  168,  168,  168,  168,  168,   93,   84,
        !           607: 
        !           608:        79,  265,   85,   85,   85,   85,   85,   85,   85,   85,
        !           609:        95,   83,   96,   96,   96,   96,   96,   96,   96,   96,
        !           610:        97,   94,   83,  266,   98,   98,   98,   98,   98,  168,
        !           611:       168,  168,  168,  168,  168,  168,  168,   85,   85,   85,
        !           612:        85,   85,   85,   85,   85,   79,  551,   98,   98,   98,
        !           613:        98,   98,   98,   78,  145,   79,  280,  145,  145,   78,
        !           614:       606,  237,   78,   78,  145,   78,   78,   78,  104,  104,
        !           615:       104,  104,  104,  104,  104,  104,   97,  145,  279,   78,
        !           616:       104,  104,  104,  104,  104,  105,  105,  105,  105,  106,
        !           617:       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
        !           618: 
        !           619:       105,   79,  105,   98,   98,   98,   98,   98,   98,   78,
        !           620:        78,   78,   78,   78,   78,   78,   78,   78,   78,  105,
        !           621:       105,  105,  105,  105,  105,  105,  105,  606,  249,  249,
        !           622:       249,  105,  105,  105,  105,  105,  177,   79,   79,   79,
        !           623:       105,  178,  170,  275,  179,  282,  180,  117,  382,  143,
        !           624:       115,  214,   97,  238,   78,   78,   78,   78,   78,   78,
        !           625:       114,  115,   78,   78,   78,  170,   78,   78,  134,  134,
        !           626:        78,  265,  134,  134,  214,  118,  119,   79,   79,  120,
        !           627:       431,  431,   78,   78,   78,   83,  121,   93,  323,  122,
        !           628:       134,   93,   79,  266,  281,   84,  146,   93,   85,   85,
        !           629: 
        !           630:        85,   85,   85,   85,   85,   85,   79,   79,  373,   93,
        !           631:        93,  318,  324,  135,  606,  606,  606,  606,  606,  606,
        !           632:       606,  606,  160,  160,  160,  160,  160,  160,  160,  160,
        !           633:       160,  160,  160,  160,  160,  160,  160,  160,  484,  484,
        !           634:       123,   83,  242,  243,  244,  242,  242,  242,  242,  242,
        !           635:        83,  142,  530,  322,  606,  606,  606,  606,  606,  606,
        !           636:       606,  606,   78,  487,   78,   78,   78,  170,   78,   78,
        !           637:       253,  170,   78,  134,   79,   79,  255,  134,  606,  170,
        !           638:       255,   83,   79,  134,   78,   78,   78,   90,  255,   90,
        !           639:        90,   90,  372,   90,   90,  134,  134,   90,  247,  247,
        !           640: 
        !           641:       248,  249,  249,  249,  249,  249,  211,  253,  170,   90,
        !           642:        90,   90,   92,  321,   78,   78,   92,  255,   78,   78,
        !           643:       360,  382,   92,  161,  361,  161,  161,  253,  170,  161,
        !           644:       161,  384,  371,  161,   92,   92,   78,  167,  167,  167,
        !           645:       167,  167,  167,  167,  167,  161,  161,  161,  358,  167,
        !           646:       167,  167,  167,  167,  201,   79,  202,  202,  202,  202,
        !           647:       202,  202,  219,  219,  219,  219,  219,  219,  219,  219,
        !           648:       359,  416,  167,  167,  167,  167,  167,  167,  173,  173,
        !           649:       173,  173,  173,  173,  173,  173,   97,  364,   83,   79,
        !           650:       173,  173,  173,  173,  173,  257,  257,  257,  257,  257,
        !           651: 
        !           652:       257,  257,  257,  258,  258,  258,  258,  258,  259,  365,
        !           653:       253,  170,   79,  167,  167,  167,  167,  167,  167,  133,
        !           654:       300,   78,   78,  133,  559,   78,   78,  421,  606,  133,
        !           655:       256,  256,  256,  256,  256,  256,  256,  256,  606,  170,
        !           656:       419,  133,  133,   78,  201,  550,  202,  202,  202,  202,
        !           657:       202,  202,  202,  202,  289,  289,  289,  289,  289,  289,
        !           658:       289,  289,  211,  294,  295,  296,  294,  294,  294,  294,
        !           659:       294,  264,  264,  264,  264,  264,  264,  264,  264,   79,
        !           660:       201,  574,  203,  203,  203,  203,  203,  203,  203,  203,
        !           661:       253,  170,  298,  298,  298,  298,  298,  298,  467,   83,
        !           662: 
        !           663:       255,  302,  302,  302,  302,  302,  302,  302,  302,  303,
        !           664:       303,  303,  303,  303,  304,   79,  201,  170,  204,  204,
        !           665:       204,  204,  204,  205,  202,  202,  606,  366,  301,  301,
        !           666:       301,  301,  301,  301,  301,  301,  606,  170,  325,  326,
        !           667:       327,  325,  325,  325,  325,  325,  300,  501,  501,  367,
        !           668:       468,   79,   78,   79,  206,  206,  206,  206,  206,  206,
        !           669:       206,  206,  368,   79,  170,  170,  206,  206,  206,  206,
        !           670:       206,   79,  374,  255,  300,  253,  170,  283,   79,  284,
        !           671:       284,  284,  284,  284,  284,  300,   79,  420,  469,  206,
        !           672:       206,  206,  206,  206,  206,  208,  209,  210,  210,  210,
        !           673: 
        !           674:       210,  210,  210,  211,  253,  170,  170,  212,  212,  212,
        !           675:       212,  212,   79,  337,  346,  338,  338,  338,  338,  338,
        !           676:       338,  338,  338,  349,  349,  349,  349,  349,  350,  487,
        !           677:       212,  212,  212,  212,  212,  212,  170,  215,  216,  217,
        !           678:       215,  215,  215,  215,  215,  218,  527,  527,  434,  219,
        !           679:       219,  219,  219,  219,  337,  375,  339,  339,  339,  339,
        !           680:       339,  339,  339,  339,  309,  309,  309,  309,  309,  309,
        !           681:       309,  309,  219,  219,  219,  219,  219,  219,  220,  220,
        !           682:       220,  220,  220,  220,  220,  220,  606,  170,   79,   79,
        !           683:       220,  220,  220,  220,  220,  337,  346,  340,  340,  340,
        !           684: 
        !           685:       340,  340,  341,  338,  338,  348,  348,  348,  348,  348,
        !           686:       348,  348,  348,  206,  206,  206,  206,  206,  206,  201,
        !           687:       550,  202,  202,  202,  202,  202,  202,  202,  202,  253,
        !           688:       170,  344,  344,  344,  344,  344,  344,  548,  606,  300,
        !           689:       347,  347,  347,  347,  347,  347,  347,  347,  387,  387,
        !           690:       387,  387,  387,  388,   79,  201,  547,  202,  202,  202,
        !           691:       202,  202,  202,  202,  202,  336,  336,  336,  336,  336,
        !           692:       336,  336,  336,  386,  386,  386,  386,  386,  386,  386,
        !           693:       386,  394,  395,  396,  394,  394,  394,  394,  394,  358,
        !           694:        79,  253,  170,  254,  254,  254,  254,  254,  254,  254,
        !           695: 
        !           696:       254,  255,  253,  170,  546,  256,  256,  256,  256,  256,
        !           697:       606,  359,  385,  385,  385,  385,  385,  385,  385,  385,
        !           698:       337,  170,  338,  338,  338,  338,  338,  338,  256,  256,
        !           699:       256,  256,  256,  256,  170,  260,  261,  262,  260,  260,
        !           700:       260,  260,  260,  263,  170,  565,  565,  264,  264,  264,
        !           701:       264,  264,  337,  300,  338,  338,  338,  338,  338,  338,
        !           702:       338,  338,  355,  355,  355,  355,  355,  355,  355,  355,
        !           703:       264,  264,  264,  264,  264,  264,  283,  434,  284,  284,
        !           704:       284,  284,  284,  284,  284,  284,  337,  364,  338,  338,
        !           705:       338,  338,  338,  338,  338,  338,  253,  170,  399,  399,
        !           706: 
        !           707:       399,  399,  399,  399,  170,  597,  346,  575,   83,  365,
        !           708:       597,   79,  283,  346,  285,  285,  285,  285,  285,  285,
        !           709:       285,  285,  403,  403,  403,  403,  403,  403,  403,  403,
        !           710:       404,  404,  404,  404,  404,  405,  606,  366,  402,  402,
        !           711:       402,  402,  402,  402,  402,  402,   79,   79,  283,  170,
        !           712:       286,  286,  286,  286,  286,  287,  284,  284,  346,  367,
        !           713:       461,  606,  422,  428,  429,  430,  428,  428,  428,  428,
        !           714:       428,  384,  170,  423,  424,  425,  426,  423,  423,  423,
        !           715:       423,  401,  462,   79,  253,  170,  298,  298,  298,  298,
        !           716:       298,  298,  298,  298,  255,  253,  170,  299,  299,  299,
        !           717: 
        !           718:       299,  299,  299,  299,  299,  300,   79,  463,  503,  301,
        !           719:       301,  301,  301,  301,  375,  376,  376,  376,  376,  376,
        !           720:       376,  393,  393,  393,  393,  393,  393,  393,  393,  464,
        !           721:       504,  384,  301,  301,  301,  301,  301,  301,  170,  305,
        !           722:       306,  307,  305,  305,  305,  305,  305,  308,   79,  583,
        !           723:       583,  309,  309,  309,  309,  309,  436,  436,  436,  436,
        !           724:       436,  436,  436,  436,  437,  437,  437,  437,  437,  438,
        !           725:       478,  253,  170,  508,  309,  309,  309,  309,  309,  309,
        !           726:       283,  346,  284,  284,  284,  284,  284,  284,  284,  284,
        !           727:       606,  382,  435,  435,  435,  435,  435,  435,  435,  435,
        !           728: 
        !           729:       444,  384,  445,  445,  445,  445,  445,  445,  445,  445,
        !           730:       507,  472,  144,  144,   83,   79,  283,  382,  284,  284,
        !           731:       284,  284,  284,  284,  284,  284,  444,  434,  446,  446,
        !           732:       446,  446,  446,  446,  446,  446,  444,  606,  447,  447,
        !           733:       447,  447,  447,  448,  445,  445,   79,  434,  461,  506,
        !           734:       505,   79,  332,  333,  334,  332,  332,  332,  332,  332,
        !           735:       335,  253,  170,  444,  336,  336,  336,  336,  336,  510,
        !           736:       462,  401,  409,  409,  409,  409,  409,  409,  409,  409,
        !           737:       455,  455,  455,  455,  455,  456,  384,  336,  336,  336,
        !           738:       336,  336,  336,  253,  170,  344,  344,  344,  344,  344,
        !           739: 
        !           740:       344,  344,  344,  300,  253,  170,  345,  345,  345,  345,
        !           741:       345,  345,  345,  345,  346,  606,  170,  463,  347,  347,
        !           742:       347,  347,  347,   79,  472,  401,  253,  170,  451,  451,
        !           743:       451,  451,  451,  451,  331,  503,  401,   79,  511,  464,
        !           744:       466,  347,  347,  347,  347,  347,  347,  170,  351,  352,
        !           745:       353,  351,  351,  351,  351,  351,  354,  504,  465,   79,
        !           746:       355,  355,  355,  355,  355,  454,  454,  454,  454,  454,
        !           747:       454,  454,  454,  606,   79,  453,  453,  453,  453,  453,
        !           748:       453,  453,  453,  355,  355,  355,  355,  355,  355,  375,
        !           749:       376,  376,  376,  376,  376,  376,  376,  376,  470,  478,
        !           750: 
        !           751:       544,  479,  479,  479,  479,  479,  479,  479,  479,  443,
        !           752:       443,  443,  443,  443,  443,  443,  443,  460,  470,  459,
        !           753:       470,  471,  545,   79,  375,  377,  377,  377,  377,  377,
        !           754:       377,  377,  377,  478,  470,  480,  480,  480,  480,  480,
        !           755:       480,  480,  480,   79,  478,  382,  481,  481,  481,  481,
        !           756:       481,  482,  479,  479,  470,  434,  470,  470,   79,  375,
        !           757:       378,  378,  378,  378,  378,  379,  376,  376,  489,  489,
        !           758:       489,  489,  489,  489,  489,  489,  490,  490,  490,  490,
        !           759:       490,  491,  606,  170,  488,  488,  488,  488,  488,  488,
        !           760:       488,  488,  401,   79,  382,  382,  383,  383,  383,  383,
        !           761: 
        !           762:       383,  383,  383,  383,  384,  487,  458,  457,  385,  385,
        !           763:       385,  385,  385,  497,  498,  499,  497,  497,  497,  497,
        !           764:       497,  444,  331,  445,  445,  445,  445,  445,  445,  445,
        !           765:       445,  385,  385,  385,  385,  385,  385,  389,  390,  391,
        !           766:       389,  389,  389,  389,  389,  392,  251,  418,  417,  393,
        !           767:       393,  393,  393,  393,  444,  606,  445,  445,  445,  445,
        !           768:       445,  445,  445,  445,  444,  487,  445,  445,  445,  445,
        !           769:       445,  445,  393,  393,  393,  393,  393,  393,  253,  170,
        !           770:       399,  399,  399,  399,  399,  399,  399,  399,  346,  253,
        !           771:       170,  400,  400,  400,  400,  400,  400,  400,  400,  401,
        !           772: 
        !           773:       253,  170,  382,  402,  402,  402,  402,  402,  467,   83,
        !           774:       401,  513,  487,  514,  515,  516,  513,  415,  514,  515,
        !           775:       516,  509,  544,  414,  554,  588,  402,  402,  402,  402,
        !           776:       402,  402,  170,  406,  407,  408,  406,  406,  406,  406,
        !           777:       406,  413,  572,  572,  545,  409,  409,  409,  409,  409,
        !           778:       520,  521,  522,  520,  520,  520,  520,  520,  517,   79,
        !           779:        79,  412,  411,  519,  573,  573,  410,  337,  409,  409,
        !           780:       409,  409,  409,  409,  375,  376,  376,  376,  376,  376,
        !           781:       376,  376,  376,   79,  472,  331,  473,  473,  473,  473,
        !           782:       473,  473,  523,  524,  525,  523,  523,  523,  523,  523,
        !           783: 
        !           784:       478,  251,  479,  479,  479,  479,  479,  479,   79,  375,
        !           785:       376,  376,  376,  376,  376,  376,  376,  376,  478,   79,
        !           786:       479,  479,  479,  479,  479,  479,  479,  479,  478,  382,
        !           787:       479,  479,  479,  479,  479,  479,  479,  479,  211,  530,
        !           788:       370,  369,  363,   79,  382,  585,  432,  432,  432,  432,
        !           789:       432,  432,  432,  432,  384,  382,  606,  433,  433,  433,
        !           790:       433,  433,  433,  433,  433,  434,  530,  586,  585,  435,
        !           791:       435,  435,  435,  435,  496,  496,  496,  496,  496,  496,
        !           792:       496,  496,  532,  532,  532,  532,  532,  532,  532,  532,
        !           793:       586,  362,  435,  435,  435,  435,  435,  435,  439,  440,
        !           794: 
        !           795:       441,  439,  439,  439,  439,  439,  442,  357,  356,  331,
        !           796:       443,  443,  443,  443,  443,  533,  533,  533,  533,  533,
        !           797:       534,  606,  382,  531,  531,  531,  531,  531,  531,  531,
        !           798:       531,  251,  530,  443,  443,  443,  443,  443,  443,  253,
        !           799:       170,  451,  451,  451,  451,  451,  451,  451,  451,  401,
        !           800:       253,  170,  452,  452,  452,  452,  452,  452,  452,  452,
        !           801:       211,  211,  276,  320,  453,  453,  453,  453,  453,  170,
        !           802:       539,  539,  539,  539,  539,  539,  539,  539,  170,  540,
        !           803:       540,  540,  540,  540,  540,  540,  540,  453,  453,  453,
        !           804:       453,  453,  453,  472,  319,  473,  473,  473,  473,  473,
        !           805: 
        !           806:       473,  473,  473,  170,  541,  541,  541,  541,  541,  542,
        !           807:       539,  539,  606,  317,  606,  606,  606,  575,   83,  513,
        !           808:       316,  514,  515,  516,  315,  314,  313,  312,   79,  472,
        !           809:       587,  474,  474,  474,  474,  474,  474,  474,  474,  606,
        !           810:       311,  514,  515,  516,  606,  310,  606,  606,  516,  292,
        !           811:       606,  251,  606,  606,  606,  211,  288,  211,  103,  517,
        !           812:       276,  278,  276,  277,   79,  472,  517,  475,  475,  475,
        !           813:       475,  475,  476,  477,  477,  552,  276,  274,  553,  553,
        !           814:       553,  553,  553,  553,  553,  553,  517,  273,  272,  271,
        !           815:       270,  517,  269,   97,  211,  512,  512,  519,  251,  512,
        !           816: 
        !           817:        79,  472,  211,  477,  477,  477,  473,  473,  473,  473,
        !           818:       473,  512,  512,  512,  518,  518,  103,  559,  518,  560,
        !           819:       560,  560,  560,  560,  560,  560,  560,   83,  199,  239,
        !           820:       518,  518,  518,  236,  235,  234,   79,  382,  233,  485,
        !           821:       485,  485,  485,  485,  485,  485,  485,  434,  382,  232,
        !           822:       486,  486,  486,  486,  486,  486,  486,  486,  487,  230,
        !           823:       229,  228,  488,  488,  488,  488,  488,  559,  227,  561,
        !           824:       561,  561,  561,  561,  561,  561,  561,  538,  538,  538,
        !           825:       538,  538,  538,  538,  538,  488,  488,  488,  488,  488,
        !           826:       488,  492,  493,  494,  492,  492,  492,  492,  492,  495,
        !           827: 
        !           828:       226,  225,  224,  496,  496,  496,  496,  496,  559,  223,
        !           829:       562,  562,  562,  562,  562,  563,  560,  560,  569,  569,
        !           830:       569,  569,  569,  569,  569,  569,  496,  496,  496,  496,
        !           831:       496,  496,  253,  170,  502,  502,  502,  502,  502,  502,
        !           832:       502,  502,  472,  222,  473,  473,  473,  473,  473,  473,
        !           833:       473,  473,  570,  570,  570,  570,  570,  571,  606,  221,
        !           834:       568,  568,  568,  568,  568,  568,  568,  568,  170,  539,
        !           835:       539,  539,  539,  539,  539,  539,  539,   79,  472,  103,
        !           836:       473,  473,  473,  473,  473,  473,  473,  473,  170,  539,
        !           837:       539,  539,  539,  539,  539,  539,  539,  170,  539,  539,
        !           838: 
        !           839:       539,  539,  539,  539,  553,  553,  553,  553,  553,  553,
        !           840:       553,  553,   95,   79,  382,   83,  528,  528,  528,  528,
        !           841:       528,  528,  528,  528,  487,  382,   83,  529,  529,  529,
        !           842:       529,  529,  529,  529,  529,  530,  199,  151,  152,  531,
        !           843:       531,  531,  531,  531,  553,  553,  553,  553,  553,  553,
        !           844:       553,  553,  576,  577,  578,  576,  576,  576,  576,  576,
        !           845:       146,  146,  531,  531,  531,  531,  531,  531,  535,  536,
        !           846:       537,  535,  535,  535,  535,  535,  138,  197,  132,  132,
        !           847:       538,  538,  538,  538,  538,   79,  554,  190,  555,  555,
        !           848:       555,  555,  555,  555,  579,  580,  581,  579,  579,  579,
        !           849: 
        !           850:       579,  579,  189,  538,  538,  538,  538,  538,  538,  554,
        !           851:       188,  555,  555,  555,  555,  555,  555,  555,  555,  187,
        !           852:       559,   79,  560,  560,  560,  560,  560,  560,  560,  560,
        !           853:       559,  186,  560,  560,  560,  560,  560,  560,  560,  560,
        !           854:       184,  183,  182,  181,   79,  554,  176,  556,  556,  556,
        !           855:       556,  556,  556,  556,  556,  559,  175,  560,  560,  560,
        !           856:       560,  560,  560,  382,  174,  584,  584,  584,  584,  584,
        !           857:       584,  584,  584,  593,  593,  593,  593,  593,  593,  103,
        !           858:        79,  554,   78,  557,  557,  557,  557,  557,  558,  555,
        !           859:       555,  593,  593,  593,  593,  593,  593,  593,  593,  594,
        !           860: 
        !           861:       594,  594,  594,  594,  594,  594,  594,  595,  595,  595,
        !           862:       595,  595,  596,  593,  593,  103,   79,  382,  163,  566,
        !           863:       566,  566,  566,  566,  566,  566,  566,  530,  382,   91,
        !           864:       567,  567,  567,  567,  567,  567,  567,  567,   83,   81,
        !           865:        80,   79,  568,  568,  568,  568,  568,  152,  600,  601,
        !           866:       602,  600,  600,  600,  600,  600,  588,  146,  589,  589,
        !           867:       589,  589,  589,  589,  138,  568,  568,  568,  568,  568,
        !           868:       568,  554,  132,  555,  555,  555,  555,  555,  555,  555,
        !           869:       555,   79,  593,  593,  593,  593,  593,  593,  593,  593,
        !           870:       128,   79,  593,  593,  593,  593,  593,  593,  593,  593,
        !           871: 
        !           872:       126,  113,  112,  111,  110,  109,   79,  554,  108,  555,
        !           873:       555,  555,  555,  555,  555,  555,  555,  105,  103,   91,
        !           874:       603,  603,  603,  603,  603,  603,  603,  603,  600,  600,
        !           875:       600,  600,  600,  600,  600,  600,   81,   80,   79,  606,
        !           876:       606,  606,   79,  588,  606,  589,  589,  589,  589,  589,
        !           877:       589,  589,  589,   79,  606,  606,  606,  606,  606,  606,
        !           878:       606,   79,  604,  604,  604,  604,  604,  605,  603,  603,
        !           879:       603,  603,  603,  603,  603,  603,  603,  603,   79,  588,
        !           880:       606,  590,  590,  590,  590,  590,  590,  590,  590,  606,
        !           881:       606,  606,  606,  606,  606,   79,  603,  603,  603,  603,
        !           882: 
        !           883:       603,  603,  606,   79,  606,  606,  606,  606,  606,  606,
        !           884:       606,  606,  606,  606,   79,  588,  606,  591,  591,  591,
        !           885:       591,  591,  592,  589,  589,  606,  606,  606,  606,   79,
        !           886:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           887:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           888:        79,  588,  606,  589,  589,  589,  589,  589,  589,  589,
        !           889:       589,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           890:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           891:       606,  606,  606,  606,  606,  606,   79,  588,  606,  589,
        !           892:       589,  589,  589,  589,  589,  589,  589,  606,  606,  606,
        !           893: 
        !           894:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           895:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           896:       606,  606,   79,   57,   57,   57,   57,   57,   57,   57,
        !           897:        57,   57,   57,   57,   57,   57,   57,   57,   57,   31,
        !           898:        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        !           899:        31,   31,   31,   31,   31,   66,   66,   66,   66,   66,
        !           900:        66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
        !           901:        66,   73,   73,   73,   73,   73,   73,   73,   73,   73,
        !           902:        73,   73,   73,   73,   73,   73,   73,   78,  606,  606,
        !           903:       606,  606,  606,  606,  606,   78,   78,   78,  606,  606,
        !           904: 
        !           905:        78,   78,   78,   82,   82,   82,   82,   82,   82,   82,
        !           906:        82,   82,   82,   82,   82,   82,   82,   82,   82,   86,
        !           907:       606,  606,  606,  606,   86,  606,  606,   86,   86,   86,
        !           908:        86,  606,   86,   86,   86,   90,  606,  606,  606,  606,
        !           909:       606,  606,  606,   90,   90,   90,  606,  606,   90,   90,
        !           910:        90,   92,  606,  606,   92,   92,  606,   92,  606,   92,
        !           911:        92,   92,  606,  606,   92,   92,   92,  102,  102,  606,
        !           912:       606,  606,  102,  133,  606,  606,  133,  133,  606,  133,
        !           913:       606,  133,  133,  133,  606,  606,  133,  133,  133,  137,
        !           914:       606,  606,  137,  137,  606,  137,  606,  137,  137,  137,
        !           915: 
        !           916:       606,  137,  606,  137,  137,  145,  606,  606,  145,  606,
        !           917:       606,  145,  606,  145,  145,  145,  145,  606,  145,  145,
        !           918:       145,  149,  149,  149,  149,  149,  149,  149,  149,  149,
        !           919:       149,  149,  149,  149,  149,  149,  149,  151,  151,  606,
        !           920:       151,  606,  151,  151,  151,  151,  151,  151,  151,  151,
        !           921:       151,  151,  151,  157,  157,  157,  157,  157,  157,  157,
        !           922:       157,  157,  157,  157,  157,  157,  157,  157,  157,  158,
        !           923:       158,  606,  158,  158,  158,  158,  158,  158,  158,  158,
        !           924:       158,  158,  158,  158,  158,  161,  606,  606,  606,  606,
        !           925:       161,  606,  606,  161,  161,  161,  606,  606,  161,  161,
        !           926: 
        !           927:       161,   93,  606,  606,   93,   93,  606,   93,  606,   93,
        !           928:        93,   93,  606,  606,   93,   93,   93,  169,  169,  606,
        !           929:       606,  606,  169,  171,  171,  171,  606,  606,  606,  171,
        !           930:       134,  606,  606,  134,  134,  606,  134,  606,  134,  134,
        !           931:       134,  606,  606,  134,  134,  134,  200,  200,  200,  200,
        !           932:       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
        !           933:       200,  200,  207,  207,  606,  606,  606,  207,  213,  213,
        !           934:       213,  606,  606,  606,  213,  245,  245,  606,  606,  606,
        !           935:       245,  246,  246,  606,  606,  606,  246,  250,  250,  606,
        !           936:       606,  606,  250,  252,  252,  252,  606,  606,  606,  252,
        !           937: 
        !           938:       288,  288,  606,  606,  606,  288,  290,  290,  606,  606,
        !           939:       606,  290,  291,  291,  606,  606,  606,  291,  293,  293,
        !           940:       293,  606,  606,  606,  293,  297,  297,  297,  297,  606,
        !           941:       606,  606,  297,  328,  328,  606,  606,  606,  328,  329,
        !           942:       329,  606,  606,  606,  329,  330,  330,  606,  606,  606,
        !           943:       330,  342,  342,  342,  606,  606,  606,  342,  343,  343,
        !           944:       343,  343,  606,  606,  606,  343,  380,  380,  606,  606,
        !           945:       606,  380,  381,  381,  606,  606,  606,  381,  397,  397,
        !           946:       397,  606,  606,  606,  397,  398,  398,  398,  398,  606,
        !           947:       606,  606,  398,  427,  427,  606,  606,  606,  427,  431,
        !           948: 
        !           949:       606,  431,  431,  606,  606,  606,  431,  449,  449,  449,
        !           950:       606,  606,  606,  449,  450,  450,  450,  450,  606,  606,
        !           951:       606,  450,  483,  483,  606,  606,  606,  483,  484,  606,
        !           952:       484,  484,  606,  606,  606,  484,  500,  500,  500,  606,
        !           953:       606,  606,  500,  501,  501,  501,  606,  606,  606,  606,
        !           954:       501,  512,  512,  606,  512,  512,  512,  606,  606,  512,
        !           955:       512,  512,  606,  606,  512,  512,  512,  518,  518,  606,
        !           956:       518,  518,  518,  606,  606,  518,  518,  518,  606,  606,
        !           957:       518,  518,  518,  526,  526,  606,  606,  606,  526,  527,
        !           958:       606,  527,  527,  606,  606,  606,  527,  543,  543,  606,
        !           959: 
        !           960:       606,  606,  606,  543,  549,  549,  549,  549,  549,  549,
        !           961:       549,  549,  549,  549,  549,  549,  549,  549,  549,  549,
        !           962:       564,  564,  606,  606,  606,  564,  565,  606,  565,  565,
        !           963:       606,  606,  606,  565,  582,  582,  606,  606,  606,  582,
        !           964:       583,  606,  583,  606,  606,  606,  606,  583,  598,  598,
        !           965:       598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
        !           966:       598,  598,  598,  598,   13,  606,  606,  606,  606,  606,
        !           967:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           968:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           969:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           970: 
        !           971:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           972:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           973:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !           974:       606
        !           975:     } ;
        !           976: 
        !           977: static yyconst short int yy_chk[3732] =
        !           978:     {   0,
        !           979:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           980:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           981:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           982:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           983:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           984:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           985:         1,    1,    1,    1,    1,    1,    2,   44,    3,   34,
        !           986:         2,  103,    3,    4,   47,   20,  126,    4,    3,   34,
        !           987:       103,    3,   52,    4,   44,   48,    4,   11,   11,   11,
        !           988:        11,  126,   52,   20,    2,    2,   56,   47,    2,   74,
        !           989: 
        !           990:         5,    5,    5,   48,    5,    2,   50,    3,    2,    3,
        !           991:         5,  603,    4,   56,    4,    6,    6,    6,   20,    6,
        !           992:        64,   64,    5,    5,   75,    6,   12,   12,   12,   12,
        !           993:         3,  196,   68,   50,   11,    4,   70,    6,    6,   25,
        !           994:        25,   72,   72,   25,   25,  196,   74,    5,   27,   27,
        !           995:        27,   27,   27,   27,   27,   27,   68,   88,  124,  127,
        !           996:        70,   25,    6,    7,    7,    7,   45,    7,  598,   75,
        !           997:       124,  127,  129,   12,   28,   28,   28,   28,   28,   28,
        !           998:       139,  139,  129,   43,   25,   43,   43,   43,   43,   43,
        !           999:        43,   43,   43,  194,   45,   45,   77,   77,   45,   77,
        !          1000: 
        !          1001:        88,  116,  123,  114,  114,   45,  116,  153,   45,  194,
        !          1002:         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        !          1003:         7,    7,    7,    7,    7,    7,    7,    7,    8,    8,
        !          1004:         8,   53,    8,  206,   53,   53,   53,   53,   53,   53,
        !          1005:        53,   53,   84,   84,   84,   84,   84,   84,   84,   84,
        !          1006:       114,   62,   62,   62,  153,   62,  154,  125,  206,   62,
        !          1007:       123,   62,   85,   85,   85,   85,   85,   85,   85,   85,
        !          1008:       143,  143,  202,   62,   62,    8,    8,    8,    8,    8,
        !          1009:         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        !          1010:         8,    8,    8,    9,    9,    9,    9,    9,   62,  125,
        !          1011: 
        !          1012:       128,  154,    9,    9,    9,   86,  128,  202,   55,   55,
        !          1013:       136,  161,   55,   55,  185,  136,    9,  101,  101,  101,
        !          1014:       101,  101,  101,   86,  155,  155,  198,  185,   87,  587,
        !          1015:        55,   87,   87,   87,   87,   87,   87,   87,   87,  198,
        !          1016:         9,   10,   10,   10,   10,   10,  584,  171,   86,  284,
        !          1017:        10,   10,   10,   55,  161,   89,  171,   89,   89,  222,
        !          1018:       582,   89,   89,  222,   10,   89,  213,   95,   95,   95,
        !          1019:        95,   95,   95,   95,   95,  213,   92,   92,   89,   89,
        !          1020:        92,   92,  192,  195,  284,  195,  510,  192,   10,   19,
        !          1021:        99,   99,   99,   99,   99,   99,   99,   99,   92,   19,
        !          1022: 
        !          1023:        95,  221,   19,   19,   19,   19,   19,   19,   19,   19,
        !          1024:        26,  191,   26,   26,   26,   26,   26,   26,   26,   26,
        !          1025:        26,   92,  237,  221,   26,   26,   26,   26,   26,  100,
        !          1026:       100,  100,  100,  100,  100,  100,  100,  131,  131,  131,
        !          1027:       131,  131,  131,  131,  131,   26,  510,   26,   26,   26,
        !          1028:        26,   26,   26,   32,  146,  238,  238,  146,  146,   32,
        !          1029:       568,  191,   32,   32,  146,   32,   32,   32,   32,   32,
        !          1030:        32,   32,   32,   32,   32,   32,   32,  146,  237,   32,
        !          1031:        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        !          1032:        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        !          1033: 
        !          1034:        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        !          1035:        32,   32,   32,   32,   32,   32,   32,   32,   32,   35,
        !          1036:        35,   35,   35,   35,   35,   35,   35,   35,  210,  210,
        !          1037:       210,   35,   35,   35,   35,   35,  109,  231,  240,  241,
        !          1038:        35,  109,  252,  231,  109,  241,  109,  117,  567,  150,
        !          1039:       150,  252,  239,  240,   35,   35,   35,   35,   35,   35,
        !          1040:        42,   42,   42,   42,   42,  293,   42,   42,  133,  133,
        !          1041:        42,  265,  133,  133,  293,  117,  117,  239,  281,  117,
        !          1042:       388,  388,   42,   42,   42,   46,  117,  163,  281,  117,
        !          1043:       133,  163,  323,  265,  239,   46,  150,  163,   46,   46,
        !          1044: 
        !          1045:        46,   46,   46,   46,   46,   46,  275,  282,  323,  163,
        !          1046:       163,  275,  282,  133,  142,  142,  142,  142,  142,  142,
        !          1047:       142,  142,  159,  159,  159,  159,  159,  159,  159,  159,
        !          1048:       160,  160,  160,  160,  160,  160,  160,  160,  438,  438,
        !          1049:        46,   63,  201,  201,  201,  201,  201,  201,  201,  201,
        !          1050:       279,   63,  565,  280,   63,   63,   63,   63,   63,   63,
        !          1051:        63,   63,   79,  564,   79,   79,   79,  297,   79,   79,
        !          1052:       254,  254,   79,  197,  280,  201,  297,  197,  256,  256,
        !          1053:       254,  321,  322,  197,   79,   79,   79,   91,  256,   91,
        !          1054:        91,   91,  322,   91,   91,  197,  197,   91,  209,  209,
        !          1055: 
        !          1056:       209,  209,  209,  209,  209,  209,  209,  298,  298,   91,
        !          1057:        91,   91,   94,  279,   94,   94,   94,  298,   94,   94,
        !          1058:       313,  383,   94,  162,  313,  162,  162,  452,  452,  162,
        !          1059:       162,  383,  321,  162,   94,   94,   94,   96,   96,   96,
        !          1060:        96,   96,   96,   96,   96,  162,  162,  162,  312,   96,
        !          1061:        96,   96,   96,   96,  205,  368,  205,  205,  205,  205,
        !          1062:       205,  205,  214,  214,  214,  214,  214,  214,  214,  214,
        !          1063:       312,  368,   96,   96,   96,   96,   96,   96,  104,  104,
        !          1064:       104,  104,  104,  104,  104,  104,  104,  316,  371,  205,
        !          1065:       104,  104,  104,  104,  104,  216,  216,  216,  216,  216,
        !          1066: 
        !          1067:       216,  216,  216,  217,  217,  217,  217,  217,  217,  316,
        !          1068:       299,  299,  373,  104,  104,  104,  104,  104,  104,  135,
        !          1069:       299,  135,  135,  135,  560,  135,  135,  373,  219,  135,
        !          1070:       219,  219,  219,  219,  219,  219,  219,  219,  453,  453,
        !          1071:       371,  135,  135,  135,  164,  549,  164,  164,  164,  164,
        !          1072:       164,  164,  164,  164,  247,  247,  247,  247,  247,  247,
        !          1073:       247,  247,  247,  253,  253,  253,  253,  253,  253,  253,
        !          1074:       253,  255,  255,  255,  255,  255,  255,  255,  255,  164,
        !          1075:       165,  547,  165,  165,  165,  165,  165,  165,  165,  165,
        !          1076:       259,  259,  259,  259,  259,  259,  259,  259,  419,  419,
        !          1077: 
        !          1078:       259,  261,  261,  261,  261,  261,  261,  261,  261,  262,
        !          1079:       262,  262,  262,  262,  262,  165,  166,  543,  166,  166,
        !          1080:       166,  166,  166,  166,  166,  166,  264,  317,  264,  264,
        !          1081:       264,  264,  264,  264,  264,  264,  301,  301,  283,  283,
        !          1082:       283,  283,  283,  283,  283,  283,  301,  456,  456,  317,
        !          1083:       419,  166,  167,  318,  167,  167,  167,  167,  167,  167,
        !          1084:       167,  167,  318,  324,  342,  343,  167,  167,  167,  167,
        !          1085:       167,  283,  324,  342,  343,  344,  344,  287,  372,  287,
        !          1086:       287,  287,  287,  287,  287,  344,  420,  372,  420,  167,
        !          1087:       167,  167,  167,  167,  167,  170,  170,  170,  170,  170,
        !          1088: 
        !          1089:       170,  170,  170,  170,  345,  345,  539,  170,  170,  170,
        !          1090:       170,  170,  287,  294,  345,  294,  294,  294,  294,  294,
        !          1091:       294,  294,  294,  307,  307,  307,  307,  307,  307,  527,
        !          1092:       170,  170,  170,  170,  170,  170,  172,  172,  172,  172,
        !          1093:       172,  172,  172,  172,  172,  172,  491,  491,  526,  172,
        !          1094:       172,  172,  172,  172,  295,  376,  295,  295,  295,  295,
        !          1095:       295,  295,  295,  295,  300,  300,  300,  300,  300,  300,
        !          1096:       300,  300,  172,  172,  172,  172,  172,  172,  173,  173,
        !          1097:       173,  173,  173,  173,  173,  173,  347,  347,  511,  376,
        !          1098:       173,  173,  173,  173,  173,  296,  347,  296,  296,  296,
        !          1099: 
        !          1100:       296,  296,  296,  296,  296,  306,  306,  306,  306,  306,
        !          1101:       306,  306,  306,  173,  173,  173,  173,  173,  173,  203,
        !          1102:       509,  203,  203,  203,  203,  203,  203,  203,  203,  304,
        !          1103:       304,  304,  304,  304,  304,  304,  304,  508,  309,  304,
        !          1104:       309,  309,  309,  309,  309,  309,  309,  309,  334,  334,
        !          1105:       334,  334,  334,  334,  203,  204,  507,  204,  204,  204,
        !          1106:       204,  204,  204,  204,  204,  331,  331,  331,  331,  331,
        !          1107:       331,  331,  331,  333,  333,  333,  333,  333,  333,  333,
        !          1108:       333,  337,  337,  337,  337,  337,  337,  337,  337,  358,
        !          1109:       204,  215,  215,  215,  215,  215,  215,  215,  215,  215,
        !          1110: 
        !          1111:       215,  215,  502,  502,  506,  215,  215,  215,  215,  215,
        !          1112:       336,  358,  336,  336,  336,  336,  336,  336,  336,  336,
        !          1113:       341,  501,  341,  341,  341,  341,  341,  341,  215,  215,
        !          1114:       215,  215,  215,  215,  218,  218,  218,  218,  218,  218,
        !          1115:       218,  218,  218,  218,  397,  534,  534,  218,  218,  218,
        !          1116:       218,  218,  339,  397,  339,  339,  339,  339,  339,  339,
        !          1117:       339,  339,  346,  346,  346,  346,  346,  346,  346,  346,
        !          1118:       218,  218,  218,  218,  218,  218,  242,  484,  242,  242,
        !          1119:       242,  242,  242,  242,  242,  242,  340,  364,  340,  340,
        !          1120:       340,  340,  340,  340,  340,  340,  350,  350,  350,  350,
        !          1121: 
        !          1122:       350,  350,  350,  350,  398,  669,  350,  551,  551,  364,
        !          1123:       669,  242,  243,  398,  243,  243,  243,  243,  243,  243,
        !          1124:       243,  243,  352,  352,  352,  352,  352,  352,  352,  352,
        !          1125:       353,  353,  353,  353,  353,  353,  355,  366,  355,  355,
        !          1126:       355,  355,  355,  355,  355,  355,  374,  243,  244,  449,
        !          1127:       244,  244,  244,  244,  244,  244,  244,  244,  449,  366,
        !          1128:       414,  385,  374,  382,  382,  382,  382,  382,  382,  382,
        !          1129:       382,  385,  450,  375,  375,  375,  375,  375,  375,  375,
        !          1130:       375,  450,  414,  244,  257,  257,  257,  257,  257,  257,
        !          1131:       257,  257,  257,  257,  257,  260,  260,  260,  260,  260,
        !          1132: 
        !          1133:       260,  260,  260,  260,  260,  260,  375,  415,  457,  260,
        !          1134:       260,  260,  260,  260,  379,  379,  379,  379,  379,  379,
        !          1135:       379,  384,  384,  384,  384,  384,  384,  384,  384,  415,
        !          1136:       457,  483,  260,  260,  260,  260,  260,  260,  263,  263,
        !          1137:       263,  263,  263,  263,  263,  263,  263,  263,  379,  571,
        !          1138:       571,  263,  263,  263,  263,  263,  390,  390,  390,  390,
        !          1139:       390,  390,  390,  390,  391,  391,  391,  391,  391,  391,
        !          1140:       479,  399,  399,  465,  263,  263,  263,  263,  263,  263,
        !          1141:       285,  399,  285,  285,  285,  285,  285,  285,  285,  285,
        !          1142:       393,  432,  393,  393,  393,  393,  393,  393,  393,  393,
        !          1143: 
        !          1144:       394,  432,  394,  394,  394,  394,  394,  394,  394,  394,
        !          1145:       460,  473,  619,  619,  468,  285,  286,  433,  286,  286,
        !          1146:       286,  286,  286,  286,  286,  286,  395,  433,  395,  395,
        !          1147:       395,  395,  395,  395,  395,  395,  396,  435,  396,  396,
        !          1148:       396,  396,  396,  396,  396,  396,  473,  435,  461,  459,
        !          1149:       458,  286,  292,  292,  292,  292,  292,  292,  292,  292,
        !          1150:       292,  400,  400,  445,  292,  292,  292,  292,  292,  468,
        !          1151:       461,  400,  401,  401,  401,  401,  401,  401,  401,  401,
        !          1152:       408,  408,  408,  408,  408,  408,  431,  292,  292,  292,
        !          1153:       292,  292,  292,  302,  302,  302,  302,  302,  302,  302,
        !          1154: 
        !          1155:       302,  302,  302,  302,  305,  305,  305,  305,  305,  305,
        !          1156:       305,  305,  305,  305,  305,  402,  402,  463,  305,  305,
        !          1157:       305,  305,  305,  469,  477,  402,  405,  405,  405,  405,
        !          1158:       405,  405,  405,  405,  427,  503,  405,  422,  469,  463,
        !          1159:       418,  305,  305,  305,  305,  305,  305,  308,  308,  308,
        !          1160:       308,  308,  308,  308,  308,  308,  308,  503,  417,  477,
        !          1161:       308,  308,  308,  308,  308,  407,  407,  407,  407,  407,
        !          1162:       407,  407,  407,  409,  416,  409,  409,  409,  409,  409,
        !          1163:       409,  409,  409,  308,  308,  308,  308,  308,  308,  325,
        !          1164:       325,  325,  325,  325,  325,  325,  325,  325,  421,  428,
        !          1165: 
        !          1166:       505,  428,  428,  428,  428,  428,  428,  428,  428,  434,
        !          1167:       434,  434,  434,  434,  434,  434,  434,  413,  421,  412,
        !          1168:       421,  421,  505,  325,  326,  326,  326,  326,  326,  326,
        !          1169:       326,  326,  326,  429,  466,  429,  429,  429,  429,  429,
        !          1170:       429,  429,  429,  421,  430,  485,  430,  430,  430,  430,
        !          1171:       430,  430,  430,  430,  466,  485,  466,  466,  326,  327,
        !          1172:       327,  327,  327,  327,  327,  327,  327,  327,  440,  440,
        !          1173:       440,  440,  440,  440,  440,  440,  441,  441,  441,  441,
        !          1174:       441,  441,  443,  500,  443,  443,  443,  443,  443,  443,
        !          1175:       443,  443,  500,  327,  332,  486,  332,  332,  332,  332,
        !          1176: 
        !          1177:       332,  332,  332,  332,  332,  486,  411,  410,  332,  332,
        !          1178:       332,  332,  332,  444,  444,  444,  444,  444,  444,  444,
        !          1179:       444,  446,  381,  446,  446,  446,  446,  446,  446,  446,
        !          1180:       446,  332,  332,  332,  332,  332,  332,  335,  335,  335,
        !          1181:       335,  335,  335,  335,  335,  335,  380,  370,  369,  335,
        !          1182:       335,  335,  335,  335,  447,  488,  447,  447,  447,  447,
        !          1183:       447,  447,  447,  447,  448,  488,  448,  448,  448,  448,
        !          1184:       448,  448,  335,  335,  335,  335,  335,  335,  348,  348,
        !          1185:       348,  348,  348,  348,  348,  348,  348,  348,  348,  351,
        !          1186:       351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
        !          1187: 
        !          1188:       451,  451,  528,  351,  351,  351,  351,  351,  467,  467,
        !          1189:       451,  470,  528,  470,  470,  470,  471,  363,  471,  471,
        !          1190:       471,  467,  544,  362,  555,  589,  351,  351,  351,  351,
        !          1191:       351,  351,  354,  354,  354,  354,  354,  354,  354,  354,
        !          1192:       354,  361,  546,  572,  544,  354,  354,  354,  354,  354,
        !          1193:       472,  472,  472,  472,  472,  472,  472,  472,  470,  555,
        !          1194:       589,  360,  357,  471,  546,  572,  356,  338,  354,  354,
        !          1195:       354,  354,  354,  354,  377,  377,  377,  377,  377,  377,
        !          1196:       377,  377,  377,  472,  476,  330,  476,  476,  476,  476,
        !          1197:       476,  476,  478,  478,  478,  478,  478,  478,  478,  478,
        !          1198: 
        !          1199:       482,  329,  482,  482,  482,  482,  482,  482,  377,  378,
        !          1200:       378,  378,  378,  378,  378,  378,  378,  378,  480,  476,
        !          1201:       480,  480,  480,  480,  480,  480,  480,  480,  481,  529,
        !          1202:       481,  481,  481,  481,  481,  481,  481,  481,  328,  529,
        !          1203:       320,  319,  315,  378,  386,  574,  386,  386,  386,  386,
        !          1204:       386,  386,  386,  386,  386,  389,  531,  389,  389,  389,
        !          1205:       389,  389,  389,  389,  389,  389,  531,  574,  585,  389,
        !          1206:       389,  389,  389,  389,  487,  487,  487,  487,  487,  487,
        !          1207:       487,  487,  493,  493,  493,  493,  493,  493,  493,  493,
        !          1208:       585,  314,  389,  389,  389,  389,  389,  389,  392,  392,
        !          1209: 
        !          1210:       392,  392,  392,  392,  392,  392,  392,  311,  310,  291,
        !          1211:       392,  392,  392,  392,  392,  494,  494,  494,  494,  494,
        !          1212:       494,  496,  566,  496,  496,  496,  496,  496,  496,  496,
        !          1213:       496,  290,  566,  392,  392,  392,  392,  392,  392,  403,
        !          1214:       403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
        !          1215:       406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
        !          1216:       289,  288,  278,  277,  406,  406,  406,  406,  406,  497,
        !          1217:       497,  497,  497,  497,  497,  497,  497,  497,  498,  498,
        !          1218:       498,  498,  498,  498,  498,  498,  498,  406,  406,  406,
        !          1219:       406,  406,  406,  423,  276,  423,  423,  423,  423,  423,
        !          1220: 
        !          1221:       423,  423,  423,  499,  499,  499,  499,  499,  499,  499,
        !          1222:       499,  499,  512,  274,  512,  512,  512,  575,  575,  513,
        !          1223:       273,  513,  513,  513,  272,  271,  270,  269,  423,  424,
        !          1224:       575,  424,  424,  424,  424,  424,  424,  424,  424,  514,
        !          1225:       268,  514,  514,  514,  515,  267,  515,  515,  515,  251,
        !          1226:       518,  250,  518,  518,  518,  249,  248,  246,  245,  512,
        !          1227:       236,  235,  234,  233,  424,  425,  513,  425,  425,  425,
        !          1228:       425,  425,  425,  425,  425,  516,  232,  229,  516,  516,
        !          1229:       516,  516,  516,  516,  516,  516,  514,  227,  226,  225,
        !          1230:       224,  515,  223,  220,  212,  517,  517,  518,  211,  517,
        !          1231: 
        !          1232:       425,  426,  208,  426,  426,  426,  426,  426,  426,  426,
        !          1233:       426,  517,  517,  517,  519,  519,  207,  523,  519,  523,
        !          1234:       523,  523,  523,  523,  523,  523,  523,  200,  199,  193,
        !          1235:       519,  519,  519,  190,  189,  188,  426,  436,  187,  436,
        !          1236:       436,  436,  436,  436,  436,  436,  436,  436,  439,  186,
        !          1237:       439,  439,  439,  439,  439,  439,  439,  439,  439,  184,
        !          1238:       183,  182,  439,  439,  439,  439,  439,  524,  181,  524,
        !          1239:       524,  524,  524,  524,  524,  524,  524,  530,  530,  530,
        !          1240:       530,  530,  530,  530,  530,  439,  439,  439,  439,  439,
        !          1241:       439,  442,  442,  442,  442,  442,  442,  442,  442,  442,
        !          1242: 
        !          1243:       180,  179,  178,  442,  442,  442,  442,  442,  525,  177,
        !          1244:       525,  525,  525,  525,  525,  525,  525,  525,  536,  536,
        !          1245:       536,  536,  536,  536,  536,  536,  442,  442,  442,  442,
        !          1246:       442,  442,  454,  454,  454,  454,  454,  454,  454,  454,
        !          1247:       454,  454,  474,  176,  474,  474,  474,  474,  474,  474,
        !          1248:       474,  474,  537,  537,  537,  537,  537,  537,  538,  175,
        !          1249:       538,  538,  538,  538,  538,  538,  538,  538,  540,  540,
        !          1250:       540,  540,  540,  540,  540,  540,  540,  474,  475,  169,
        !          1251:       475,  475,  475,  475,  475,  475,  475,  475,  541,  541,
        !          1252:       541,  541,  541,  541,  541,  541,  541,  542,  542,  542,
        !          1253: 
        !          1254:       542,  542,  542,  542,  552,  552,  552,  552,  552,  552,
        !          1255:       552,  552,  168,  475,  489,  158,  489,  489,  489,  489,
        !          1256:       489,  489,  489,  489,  489,  492,  157,  492,  492,  492,
        !          1257:       492,  492,  492,  492,  492,  492,  156,  152,  151,  492,
        !          1258:       492,  492,  492,  492,  553,  553,  553,  553,  553,  553,
        !          1259:       553,  553,  554,  554,  554,  554,  554,  554,  554,  554,
        !          1260:       149,  145,  492,  492,  492,  492,  492,  492,  495,  495,
        !          1261:       495,  495,  495,  495,  495,  495,  138,  134,  132,  130,
        !          1262:       495,  495,  495,  495,  495,  554,  558,  122,  558,  558,
        !          1263:       558,  558,  558,  558,  559,  559,  559,  559,  559,  559,
        !          1264: 
        !          1265:       559,  559,  121,  495,  495,  495,  495,  495,  495,  520,
        !          1266:       120,  520,  520,  520,  520,  520,  520,  520,  520,  119,
        !          1267:       561,  558,  561,  561,  561,  561,  561,  561,  561,  561,
        !          1268:       562,  118,  562,  562,  562,  562,  562,  562,  562,  562,
        !          1269:       113,  112,  111,  110,  520,  521,  108,  521,  521,  521,
        !          1270:       521,  521,  521,  521,  521,  563,  107,  563,  563,  563,
        !          1271:       563,  563,  563,  569,  106,  569,  569,  569,  569,  569,
        !          1272:       569,  569,  569,  596,  596,  596,  596,  596,  596,  102,
        !          1273:       521,  522,   98,  522,  522,  522,  522,  522,  522,  522,
        !          1274:       522,  579,  579,  579,  579,  579,  579,  579,  579,  580,
        !          1275: 
        !          1276:       580,  580,  580,  580,  580,  580,  580,  581,  581,  581,
        !          1277:       581,  581,  581,  581,  581,   97,  522,  532,   93,  532,
        !          1278:       532,  532,  532,  532,  532,  532,  532,  532,  535,   90,
        !          1279:       535,  535,  535,  535,  535,  535,  535,  535,   82,   81,
        !          1280:        80,   78,  535,  535,  535,  535,  535,   73,  588,  588,
        !          1281:       588,  588,  588,  588,  588,  588,  592,   66,  592,  592,
        !          1282:       592,  592,  592,  592,   59,  535,  535,  535,  535,  535,
        !          1283:       535,  556,   54,  556,  556,  556,  556,  556,  556,  556,
        !          1284:       556,  588,  594,  594,  594,  594,  594,  594,  594,  594,
        !          1285:        51,  592,  595,  595,  595,  595,  595,  595,  595,  595,
        !          1286: 
        !          1287:        49,   41,   40,   39,   38,   37,  556,  557,   36,  557,
        !          1288:       557,  557,  557,  557,  557,  557,  557,   33,   29,   23,
        !          1289:       600,  600,  600,  600,  600,  600,  600,  600,  601,  601,
        !          1290:       601,  601,  601,  601,  601,  601,   17,   15,   14,   13,
        !          1291:         0,    0,  557,  576,    0,  576,  576,  576,  576,  576,
        !          1292:       576,  576,  576,  600,    0,    0,    0,    0,    0,    0,
        !          1293:         0,  601,  602,  602,  602,  602,  602,  602,  602,  602,
        !          1294:       604,  604,  604,  604,  604,  604,  604,  604,  576,  577,
        !          1295:         0,  577,  577,  577,  577,  577,  577,  577,  577,    0,
        !          1296:         0,    0,    0,    0,    0,  602,  605,  605,  605,  605,
        !          1297: 
        !          1298:       605,  605,    0,  604,    0,    0,    0,    0,    0,    0,
        !          1299:         0,    0,    0,    0,  577,  578,    0,  578,  578,  578,
        !          1300:       578,  578,  578,  578,  578,    0,    0,    0,    0,  605,
        !          1301:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !          1302:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !          1303:       578,  590,    0,  590,  590,  590,  590,  590,  590,  590,
        !          1304:       590,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !          1305:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !          1306:         0,    0,    0,    0,    0,    0,  590,  591,    0,  591,
        !          1307:       591,  591,  591,  591,  591,  591,  591,    0,    0,    0,
        !          1308: 
        !          1309:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !          1310:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !          1311:         0,    0,  591,  607,  607,  607,  607,  607,  607,  607,
        !          1312:       607,  607,  607,  607,  607,  607,  607,  607,  607,  608,
        !          1313:       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
        !          1314:       608,  608,  608,  608,  608,  609,  609,  609,  609,  609,
        !          1315:       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
        !          1316:       609,  610,  610,  610,  610,  610,  610,  610,  610,  610,
        !          1317:       610,  610,  610,  610,  610,  610,  610,  611,    0,    0,
        !          1318:         0,    0,    0,    0,    0,  611,  611,  611,    0,    0,
        !          1319: 
        !          1320:       611,  611,  611,  612,  612,  612,  612,  612,  612,  612,
        !          1321:       612,  612,  612,  612,  612,  612,  612,  612,  612,  613,
        !          1322:         0,    0,    0,    0,  613,    0,    0,  613,  613,  613,
        !          1323:       613,    0,  613,  613,  613,  614,    0,    0,    0,    0,
        !          1324:         0,    0,    0,  614,  614,  614,    0,    0,  614,  614,
        !          1325:       614,  615,    0,    0,  615,  615,    0,  615,    0,  615,
        !          1326:       615,  615,    0,    0,  615,  615,  615,  616,  616,    0,
        !          1327:         0,    0,  616,  617,    0,    0,  617,  617,    0,  617,
        !          1328:         0,  617,  617,  617,    0,    0,  617,  617,  617,  618,
        !          1329:         0,    0,  618,  618,    0,  618,    0,  618,  618,  618,
        !          1330: 
        !          1331:         0,  618,    0,  618,  618,  620,    0,    0,  620,    0,
        !          1332:         0,  620,    0,  620,  620,  620,  620,    0,  620,  620,
        !          1333:       620,  621,  621,  621,  621,  621,  621,  621,  621,  621,
        !          1334:       621,  621,  621,  621,  621,  621,  621,  622,  622,    0,
        !          1335:       622,    0,  622,  622,  622,  622,  622,  622,  622,  622,
        !          1336:       622,  622,  622,  623,  623,  623,  623,  623,  623,  623,
        !          1337:       623,  623,  623,  623,  623,  623,  623,  623,  623,  624,
        !          1338:       624,    0,  624,  624,  624,  624,  624,  624,  624,  624,
        !          1339:       624,  624,  624,  624,  624,  625,    0,    0,    0,    0,
        !          1340:       625,    0,    0,  625,  625,  625,    0,    0,  625,  625,
        !          1341: 
        !          1342:       625,  626,    0,    0,  626,  626,    0,  626,    0,  626,
        !          1343:       626,  626,    0,    0,  626,  626,  626,  627,  627,    0,
        !          1344:         0,    0,  627,  628,  628,  628,    0,    0,    0,  628,
        !          1345:       629,    0,    0,  629,  629,    0,  629,    0,  629,  629,
        !          1346:       629,    0,    0,  629,  629,  629,  630,  630,  630,  630,
        !          1347:       630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
        !          1348:       630,  630,  631,  631,    0,    0,    0,  631,  632,  632,
        !          1349:       632,    0,    0,    0,  632,  633,  633,    0,    0,    0,
        !          1350:       633,  634,  634,    0,    0,    0,  634,  635,  635,    0,
        !          1351:         0,    0,  635,  636,  636,  636,    0,    0,    0,  636,
        !          1352: 
        !          1353:       637,  637,    0,    0,    0,  637,  638,  638,    0,    0,
        !          1354:         0,  638,  639,  639,    0,    0,    0,  639,  640,  640,
        !          1355:       640,    0,    0,    0,  640,  641,  641,  641,  641,    0,
        !          1356:         0,    0,  641,  642,  642,    0,    0,    0,  642,  643,
        !          1357:       643,    0,    0,    0,  643,  644,  644,    0,    0,    0,
        !          1358:       644,  645,  645,  645,    0,    0,    0,  645,  646,  646,
        !          1359:       646,  646,    0,    0,    0,  646,  647,  647,    0,    0,
        !          1360:         0,  647,  648,  648,    0,    0,    0,  648,  649,  649,
        !          1361:       649,    0,    0,    0,  649,  650,  650,  650,  650,    0,
        !          1362:         0,    0,  650,  651,  651,    0,    0,    0,  651,  652,
        !          1363: 
        !          1364:         0,  652,  652,    0,    0,    0,  652,  653,  653,  653,
        !          1365:         0,    0,    0,  653,  654,  654,  654,  654,    0,    0,
        !          1366:         0,  654,  655,  655,    0,    0,    0,  655,  656,    0,
        !          1367:       656,  656,    0,    0,    0,  656,  657,  657,  657,    0,
        !          1368:         0,    0,  657,  658,  658,  658,    0,    0,    0,    0,
        !          1369:       658,  659,  659,    0,  659,  659,  659,    0,    0,  659,
        !          1370:       659,  659,    0,    0,  659,  659,  659,  660,  660,    0,
        !          1371:       660,  660,  660,    0,    0,  660,  660,  660,    0,    0,
        !          1372:       660,  660,  660,  661,  661,    0,    0,    0,  661,  662,
        !          1373:         0,  662,  662,    0,    0,    0,  662,  663,  663,    0,
        !          1374: 
        !          1375:         0,    0,    0,  663,  664,  664,  664,  664,  664,  664,
        !          1376:       664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
        !          1377:       665,  665,    0,    0,    0,  665,  666,    0,  666,  666,
        !          1378:         0,    0,    0,  666,  667,  667,    0,    0,    0,  667,
        !          1379:       668,    0,  668,    0,    0,    0,    0,  668,  670,  670,
        !          1380:       670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
        !          1381:       670,  670,  670,  670,  606,  606,  606,  606,  606,  606,
        !          1382:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !          1383:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !          1384:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !          1385: 
        !          1386:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !          1387:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !          1388:       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
        !          1389:       606
        !          1390:     } ;
        !          1391: 
        !          1392: static yy_state_type yy_last_accepting_state;
        !          1393: static char *yy_last_accepting_cpos;
        !          1394: 
        !          1395: /* The intent behind this definition is that it'll catch
        !          1396:  * any uses of REJECT which flex missed.
        !          1397:  */
        !          1398: #define REJECT reject_used_but_not_detected
        !          1399: #define yymore() yymore_used_but_not_detected
        !          1400: #define YY_MORE_ADJ 0
        !          1401: #define YY_RESTORE_YY_MORE_OFFSET
        !          1402: char *yytext;
        !          1403: #line 1 "toke.l"
        !          1404: #define INITIAL 0
        !          1405: #line 2 "toke.l"
        !          1406: /*
        !          1407:  * Copyright (c) 1996, 1998-2005, 2007-2011
        !          1408:  *     Todd C. Miller <Todd.Miller@courtesan.com>
        !          1409:  *
        !          1410:  * Permission to use, copy, modify, and distribute this software for any
        !          1411:  * purpose with or without fee is hereby granted, provided that the above
        !          1412:  * copyright notice and this permission notice appear in all copies.
        !          1413:  *
        !          1414:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !          1415:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !          1416:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !          1417:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !          1418:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !          1419:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !          1420:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !          1421:  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
        !          1422:  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
        !          1423:  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !          1424:  *
        !          1425:  * Sponsored in part by the Defense Advanced Research Projects
        !          1426:  * Agency (DARPA) and Air Force Research Laboratory, Air Force
        !          1427:  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
        !          1428:  */
        !          1429: 
        !          1430: #include <config.h>
        !          1431: 
        !          1432: #include <sys/types.h>
        !          1433: #include <sys/param.h>
        !          1434: #include <sys/stat.h>
        !          1435: #include <stdio.h>
        !          1436: #ifdef STDC_HEADERS
        !          1437: # include <stdlib.h>
        !          1438: # include <stddef.h>
        !          1439: #else
        !          1440: # ifdef HAVE_STDLIB_H
        !          1441: #  include <stdlib.h>
        !          1442: # endif
        !          1443: #endif /* STDC_HEADERS */
        !          1444: #ifdef HAVE_STRING_H
        !          1445: # include <string.h>
        !          1446: #endif /* HAVE_STRING_H */
        !          1447: #ifdef HAVE_STRINGS_H
        !          1448: # include <strings.h>
        !          1449: #endif /* HAVE_STRINGS_H */
        !          1450: #ifdef HAVE_UNISTD_H
        !          1451: # include <unistd.h>
        !          1452: #endif /* HAVE_UNISTD_H */
        !          1453: #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS)
        !          1454: # include <malloc.h>
        !          1455: #endif /* HAVE_MALLOC_H && !STDC_HEADERS */
        !          1456: #ifdef HAVE_DIRENT_H
        !          1457: # include <dirent.h>
        !          1458: # define NAMLEN(dirent) strlen((dirent)->d_name)
        !          1459: #else
        !          1460: # define dirent direct
        !          1461: # define NAMLEN(dirent) (dirent)->d_namlen
        !          1462: # ifdef HAVE_SYS_NDIR_H
        !          1463: #  include <sys/ndir.h>
        !          1464: # endif
        !          1465: # ifdef HAVE_SYS_DIR_H
        !          1466: #  include <sys/dir.h>
        !          1467: # endif
        !          1468: # ifdef HAVE_NDIR_H
        !          1469: #  include <ndir.h>
        !          1470: # endif
        !          1471: #endif
        !          1472: #include <errno.h>
        !          1473: #include <ctype.h>
        !          1474: #include "sudoers.h"
        !          1475: #include "parse.h"
        !          1476: #include "toke.h"
        !          1477: #include <gram.h>
        !          1478: 
        !          1479: extern YYSTYPE yylval;
        !          1480: extern int parse_error;
        !          1481: int sudolineno;
        !          1482: char *sudoers;
        !          1483: 
        !          1484: static int continued, prev_state, sawspace;
        !          1485: 
        !          1486: static int _push_include(char *, int);
        !          1487: static int pop_include(void);
        !          1488: static char *parse_include(char *);
        !          1489: 
        !          1490: #ifdef TRACELEXER
        !          1491: static int sudoers_trace_print(const char *msg);
        !          1492: #else
        !          1493: # define sudoers_trace_print NULL
        !          1494: #endif
        !          1495: int (*trace_print)(const char *msg) = sudoers_trace_print;
        !          1496: 
        !          1497: #define        push_include(_p)        (_push_include((_p), FALSE))
        !          1498: #define        push_includedir(_p)     (_push_include((_p), TRUE))
        !          1499: #define YY_NO_INPUT 1
        !          1500: #define YY_NO_UNPUT 1
        !          1501: #define GOTDEFS 1
        !          1502: 
        !          1503: #define GOTCMND 2
        !          1504: 
        !          1505: #define STARTDEFS 3
        !          1506: 
        !          1507: #define INDEFS 4
        !          1508: 
        !          1509: #define INSTR 5
        !          1510: 
        !          1511: #line 1511 "lex.yy.c"
        !          1512: 
        !          1513: /* Macros after this point can all be overridden by user definitions in
        !          1514:  * section 1.
        !          1515:  */
        !          1516: 
        !          1517: #ifndef YY_SKIP_YYWRAP
        !          1518: #ifdef __cplusplus
        !          1519: extern "C" int yywrap YY_PROTO(( void ));
        !          1520: #else
        !          1521: extern int yywrap YY_PROTO(( void ));
        !          1522: #endif
        !          1523: #endif
        !          1524: 
        !          1525: #ifndef YY_NO_UNPUT
        !          1526: static void yyunput YY_PROTO(( int c, char *buf_ptr ));
        !          1527: #endif
        !          1528: 
        !          1529: #ifndef yytext_ptr
        !          1530: static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
        !          1531: #endif
        !          1532: 
        !          1533: #ifdef YY_NEED_STRLEN
        !          1534: static int yy_flex_strlen YY_PROTO(( yyconst char * ));
        !          1535: #endif
        !          1536: 
        !          1537: #ifndef YY_NO_INPUT
        !          1538: #ifdef __cplusplus
        !          1539: static int yyinput YY_PROTO(( void ));
        !          1540: #else
        !          1541: static int input YY_PROTO(( void ));
        !          1542: #endif
        !          1543: #endif
        !          1544: 
        !          1545: #if defined(YY_STACK_USED) && YY_STACK_USED
        !          1546: static int yy_start_stack_ptr = 0;
        !          1547: static int yy_start_stack_depth = 0;
        !          1548: static int *yy_start_stack = 0;
        !          1549: #ifndef YY_NO_PUSH_STATE
        !          1550: static void yy_push_state YY_PROTO(( int new_state ));
        !          1551: #endif
        !          1552: #ifndef YY_NO_POP_STATE
        !          1553: static void yy_pop_state YY_PROTO(( void ));
        !          1554: #endif
        !          1555: #ifndef YY_NO_TOP_STATE
        !          1556: static int yy_top_state YY_PROTO(( void ));
        !          1557: #endif
        !          1558: 
        !          1559: #else
        !          1560: #define YY_NO_PUSH_STATE 1
        !          1561: #define YY_NO_POP_STATE 1
        !          1562: #define YY_NO_TOP_STATE 1
        !          1563: #endif
        !          1564: 
        !          1565: #ifdef YY_MALLOC_DECL
        !          1566: YY_MALLOC_DECL
        !          1567: #else
        !          1568: #ifdef __STDC__
        !          1569: #ifndef __cplusplus
        !          1570: #include <stdlib.h>
        !          1571: #endif
        !          1572: #else
        !          1573: /* Just try to get by without declaring the routines.  This will fail
        !          1574:  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
        !          1575:  * or sizeof(void*) != sizeof(int).
        !          1576:  */
        !          1577: #endif
        !          1578: #endif
        !          1579: 
        !          1580: /* Amount of stuff to slurp up with each read. */
        !          1581: #ifndef YY_READ_BUF_SIZE
        !          1582: #define YY_READ_BUF_SIZE 8192
        !          1583: #endif
        !          1584: 
        !          1585: /* Copy whatever the last rule matched to the standard output. */
        !          1586: 
        !          1587: #ifndef ECHO
        !          1588: /* This used to be an fputs(), but since the string might contain NUL's,
        !          1589:  * we now use fwrite().
        !          1590:  */
        !          1591: #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
        !          1592: #endif
        !          1593: 
        !          1594: /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
        !          1595:  * is returned in "result".
        !          1596:  */
        !          1597: #ifndef YY_INPUT
        !          1598: #define YY_INPUT(buf,result,max_size) \
        !          1599:        if ( yy_current_buffer->yy_is_interactive ) \
        !          1600:                { \
        !          1601:                int c = '*', n; \
        !          1602:                for ( n = 0; n < max_size && \
        !          1603:                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
        !          1604:                        buf[n] = (char) c; \
        !          1605:                if ( c == '\n' ) \
        !          1606:                        buf[n++] = (char) c; \
        !          1607:                if ( c == EOF && ferror( yyin ) ) \
        !          1608:                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
        !          1609:                result = n; \
        !          1610:                } \
        !          1611:        else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
        !          1612:                  && ferror( yyin ) ) \
        !          1613:                YY_FATAL_ERROR( "input in flex scanner failed" );
        !          1614: #endif
        !          1615: 
        !          1616: /* No semi-colon after return; correct usage is to write "yyterminate();" -
        !          1617:  * we don't want an extra ';' after the "return" because that will cause
        !          1618:  * some compilers to complain about unreachable statements.
        !          1619:  */
        !          1620: #ifndef yyterminate
        !          1621: #define yyterminate() return YY_NULL
        !          1622: #endif
        !          1623: 
        !          1624: /* Number of entries by which start-condition stack grows. */
        !          1625: #ifndef YY_START_STACK_INCR
        !          1626: #define YY_START_STACK_INCR 25
        !          1627: #endif
        !          1628: 
        !          1629: /* Report a fatal error. */
        !          1630: #ifndef YY_FATAL_ERROR
        !          1631: #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
        !          1632: #endif
        !          1633: 
        !          1634: /* Default declaration of generated scanner - a define so the user can
        !          1635:  * easily add parameters.
        !          1636:  */
        !          1637: #ifndef YY_DECL
        !          1638: #define YY_DECL int yylex YY_PROTO(( void ))
        !          1639: #endif
        !          1640: 
        !          1641: /* Code executed at the beginning of each rule, after yytext and yyleng
        !          1642:  * have been set up.
        !          1643:  */
        !          1644: #ifndef YY_USER_ACTION
        !          1645: #define YY_USER_ACTION
        !          1646: #endif
        !          1647: 
        !          1648: /* Code executed at the end of each rule. */
        !          1649: #ifndef YY_BREAK
        !          1650: #define YY_BREAK break;
        !          1651: #endif
        !          1652: 
        !          1653: #define YY_RULE_SETUP \
        !          1654:        if ( yyleng > 0 ) \
        !          1655:                yy_current_buffer->yy_at_bol = \
        !          1656:                                (yytext[yyleng - 1] == '\n'); \
        !          1657:        YY_USER_ACTION
        !          1658: 
        !          1659: YY_DECL
        !          1660:        {
        !          1661:        register yy_state_type yy_current_state;
        !          1662:        register char *yy_cp, *yy_bp;
        !          1663:        register int yy_act;
        !          1664: 
        !          1665: #line 119 "toke.l"
        !          1666: 
        !          1667: #line 1667 "lex.yy.c"
        !          1668: 
        !          1669:        if ( yy_init )
        !          1670:                {
        !          1671:                yy_init = 0;
        !          1672: 
        !          1673: #ifdef YY_USER_INIT
        !          1674:                YY_USER_INIT;
        !          1675: #endif
        !          1676: 
        !          1677:                if ( ! yy_start )
        !          1678:                        yy_start = 1;   /* first start state */
        !          1679: 
        !          1680:                if ( ! yyin )
        !          1681:                        yyin = stdin;
        !          1682: 
        !          1683:                if ( ! yyout )
        !          1684:                        yyout = stdout;
        !          1685: 
        !          1686:                if ( ! yy_current_buffer )
        !          1687:                        yy_current_buffer =
        !          1688:                                yy_create_buffer( yyin, YY_BUF_SIZE );
        !          1689: 
        !          1690:                yy_load_buffer_state();
        !          1691:                }
        !          1692: 
        !          1693:        while ( 1 )             /* loops until end-of-file is reached */
        !          1694:                {
        !          1695:                yy_cp = yy_c_buf_p;
        !          1696: 
        !          1697:                /* Support of yytext. */
        !          1698:                *yy_cp = yy_hold_char;
        !          1699: 
        !          1700:                /* yy_bp points to the position in yy_ch_buf of the start of
        !          1701:                 * the current run.
        !          1702:                 */
        !          1703:                yy_bp = yy_cp;
        !          1704: 
        !          1705:                yy_current_state = yy_start;
        !          1706:                yy_current_state += YY_AT_BOL();
        !          1707: yy_match:
        !          1708:                do
        !          1709:                        {
        !          1710:                        register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
        !          1711:                        if ( yy_accept[yy_current_state] )
        !          1712:                                {
        !          1713:                                yy_last_accepting_state = yy_current_state;
        !          1714:                                yy_last_accepting_cpos = yy_cp;
        !          1715:                                }
        !          1716:                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
        !          1717:                                {
        !          1718:                                yy_current_state = (int) yy_def[yy_current_state];
        !          1719:                                if ( yy_current_state >= 607 )
        !          1720:                                        yy_c = yy_meta[(unsigned int) yy_c];
        !          1721:                                }
        !          1722:                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        !          1723:                        ++yy_cp;
        !          1724:                        }
        !          1725:                while ( yy_base[yy_current_state] != 3665 );
        !          1726: 
        !          1727: yy_find_action:
        !          1728:                yy_act = yy_accept[yy_current_state];
        !          1729:                if ( yy_act == 0 )
        !          1730:                        { /* have to back up */
        !          1731:                        yy_cp = yy_last_accepting_cpos;
        !          1732:                        yy_current_state = yy_last_accepting_state;
        !          1733:                        yy_act = yy_accept[yy_current_state];
        !          1734:                        }
        !          1735: 
        !          1736:                YY_DO_BEFORE_ACTION;
        !          1737: 
        !          1738: 
        !          1739: do_action:     /* This label is used only to access EOF actions. */
        !          1740: 
        !          1741: 
        !          1742:                switch ( yy_act )
        !          1743:        { /* beginning of action switch */
        !          1744:                        case 0: /* must back up */
        !          1745:                        /* undo the effects of YY_DO_BEFORE_ACTION */
        !          1746:                        *yy_cp = yy_hold_char;
        !          1747:                        yy_cp = yy_last_accepting_cpos;
        !          1748:                        yy_current_state = yy_last_accepting_state;
        !          1749:                        goto yy_find_action;
        !          1750: 
        !          1751: case 1:
        !          1752: YY_RULE_SETUP
        !          1753: #line 120 "toke.l"
        !          1754: {
        !          1755:                            LEXTRACE(", ");
        !          1756:                            return ',';
        !          1757:                        }                       /* return ',' */
        !          1758:        YY_BREAK
        !          1759: case 2:
        !          1760: YY_RULE_SETUP
        !          1761: #line 125 "toke.l"
        !          1762: BEGIN STARTDEFS;
        !          1763:        YY_BREAK
        !          1764: case 3:
        !          1765: YY_RULE_SETUP
        !          1766: #line 127 "toke.l"
        !          1767: {
        !          1768:                            BEGIN INDEFS;
        !          1769:                            LEXTRACE("DEFVAR ");
        !          1770:                            if (!fill(yytext, yyleng))
        !          1771:                                yyterminate();
        !          1772:                            return DEFVAR;
        !          1773:                        }
        !          1774:        YY_BREAK
        !          1775: 
        !          1776: case 4:
        !          1777: YY_RULE_SETUP
        !          1778: #line 136 "toke.l"
        !          1779: {
        !          1780:                            BEGIN STARTDEFS;
        !          1781:                            LEXTRACE(", ");
        !          1782:                            return ',';
        !          1783:                        }                       /* return ',' */
        !          1784:        YY_BREAK
        !          1785: case 5:
        !          1786: YY_RULE_SETUP
        !          1787: #line 142 "toke.l"
        !          1788: {
        !          1789:                            LEXTRACE("= ");
        !          1790:                            return '=';
        !          1791:                        }                       /* return '=' */
        !          1792:        YY_BREAK
        !          1793: case 6:
        !          1794: YY_RULE_SETUP
        !          1795: #line 147 "toke.l"
        !          1796: {
        !          1797:                            LEXTRACE("+= ");
        !          1798:                            return '+';
        !          1799:                        }                       /* return '+' */
        !          1800:        YY_BREAK
        !          1801: case 7:
        !          1802: YY_RULE_SETUP
        !          1803: #line 152 "toke.l"
        !          1804: {
        !          1805:                            LEXTRACE("-= ");
        !          1806:                            return '-';
        !          1807:                        }                       /* return '-' */
        !          1808:        YY_BREAK
        !          1809: case 8:
        !          1810: YY_RULE_SETUP
        !          1811: #line 157 "toke.l"
        !          1812: {
        !          1813:                            LEXTRACE("BEGINSTR ");
        !          1814:                            yylval.string = NULL;
        !          1815:                            prev_state = YY_START;
        !          1816:                            BEGIN INSTR;
        !          1817:                        }
        !          1818:        YY_BREAK
        !          1819: case 9:
        !          1820: YY_RULE_SETUP
        !          1821: #line 164 "toke.l"
        !          1822: {
        !          1823:                            LEXTRACE("WORD(2) ");
        !          1824:                            if (!fill(yytext, yyleng))
        !          1825:                                yyterminate();
        !          1826:                            return WORD;
        !          1827:                        }
        !          1828:        YY_BREAK
        !          1829: 
        !          1830: 
        !          1831: case 10:
        !          1832: YY_RULE_SETUP
        !          1833: #line 173 "toke.l"
        !          1834: {
        !          1835:                            /* Line continuation char followed by newline. */
        !          1836:                            ++sudolineno;
        !          1837:                            continued = TRUE;
        !          1838:                        }
        !          1839:        YY_BREAK
        !          1840: case 11:
        !          1841: YY_RULE_SETUP
        !          1842: #line 179 "toke.l"
        !          1843: {
        !          1844:                            LEXTRACE("ENDSTR ");
        !          1845:                            BEGIN prev_state;
        !          1846: 
        !          1847:                            if (yylval.string == NULL) {
        !          1848:                                LEXTRACE("ERROR "); /* empty string */
        !          1849:                                return ERROR;
        !          1850:                            }
        !          1851:                            if (prev_state == INITIAL) {
        !          1852:                                switch (yylval.string[0]) {
        !          1853:                                case '%':
        !          1854:                                    if (yylval.string[1] == '\0' ||
        !          1855:                                        (yylval.string[1] == ':' &&
        !          1856:                                        yylval.string[2] == '\0')) {
        !          1857:                                        LEXTRACE("ERROR "); /* empty group */
        !          1858:                                        return ERROR;
        !          1859:                                    }
        !          1860:                                    LEXTRACE("USERGROUP ");
        !          1861:                                    return USERGROUP;
        !          1862:                                case '+':
        !          1863:                                    if (yylval.string[1] == '\0') {
        !          1864:                                        LEXTRACE("ERROR "); /* empty netgroup */
        !          1865:                                        return ERROR;
        !          1866:                                    }
        !          1867:                                    LEXTRACE("NETGROUP ");
        !          1868:                                    return NETGROUP;
        !          1869:                                }
        !          1870:                            }
        !          1871:                            LEXTRACE("WORD(4) ");
        !          1872:                            return WORD;
        !          1873:                        }
        !          1874:        YY_BREAK
        !          1875: case 12:
        !          1876: YY_RULE_SETUP
        !          1877: #line 211 "toke.l"
        !          1878: {
        !          1879:                            LEXTRACE("BACKSLASH ");
        !          1880:                            if (!append(yytext, yyleng))
        !          1881:                                yyterminate();
        !          1882:                        }
        !          1883:        YY_BREAK
        !          1884: case 13:
        !          1885: YY_RULE_SETUP
        !          1886: #line 217 "toke.l"
        !          1887: {
        !          1888:                            LEXTRACE("STRBODY ");
        !          1889:                            if (!append(yytext, yyleng))
        !          1890:                                yyterminate();
        !          1891:                        }
        !          1892:        YY_BREAK
        !          1893: 
        !          1894: 
        !          1895: case 14:
        !          1896: YY_RULE_SETUP
        !          1897: #line 225 "toke.l"
        !          1898: {
        !          1899:                            /* quoted fnmatch glob char, pass verbatim */
        !          1900:                            LEXTRACE("QUOTEDCHAR ");
        !          1901:                            if (!fill_args(yytext, 2, sawspace))
        !          1902:                                yyterminate();
        !          1903:                            sawspace = FALSE;
        !          1904:                        }
        !          1905:        YY_BREAK
        !          1906: case 15:
        !          1907: YY_RULE_SETUP
        !          1908: #line 233 "toke.l"
        !          1909: {
        !          1910:                            /* quoted sudoers special char, strip backslash */
        !          1911:                            LEXTRACE("QUOTEDCHAR ");
        !          1912:                            if (!fill_args(yytext + 1, 1, sawspace))
        !          1913:                                yyterminate();
        !          1914:                            sawspace = FALSE;
        !          1915:                        }
        !          1916:        YY_BREAK
        !          1917: case 16:
        !          1918: YY_RULE_SETUP
        !          1919: #line 241 "toke.l"
        !          1920: {
        !          1921:                            BEGIN INITIAL;
        !          1922:                            yyless(0);
        !          1923:                            return COMMAND;
        !          1924:                        }                       /* end of command line args */
        !          1925:        YY_BREAK
        !          1926: case 17:
        !          1927: YY_RULE_SETUP
        !          1928: #line 247 "toke.l"
        !          1929: {
        !          1930:                            LEXTRACE("ARG ");
        !          1931:                            if (!fill_args(yytext, yyleng, sawspace))
        !          1932:                                yyterminate();
        !          1933:                            sawspace = FALSE;
        !          1934:                        }                       /* a command line arg */
        !          1935:        YY_BREAK
        !          1936: 
        !          1937: case 18:
        !          1938: YY_RULE_SETUP
        !          1939: #line 255 "toke.l"
        !          1940: {
        !          1941:                            char *path;
        !          1942: 
        !          1943:                            if (continued) {
        !          1944:                                LEXTRACE("ERROR ");
        !          1945:                                return ERROR;
        !          1946:                            }
        !          1947: 
        !          1948:                            if ((path = parse_include(yytext)) == NULL)
        !          1949:                                yyterminate();
        !          1950: 
        !          1951:                            LEXTRACE("INCLUDE\n");
        !          1952: 
        !          1953:                            /* Push current buffer and switch to include file */
        !          1954:                            if (!push_include(path))
        !          1955:                                yyterminate();
        !          1956:                        }
        !          1957:        YY_BREAK
        !          1958: case 19:
        !          1959: YY_RULE_SETUP
        !          1960: #line 273 "toke.l"
        !          1961: {
        !          1962:                            char *path;
        !          1963: 
        !          1964:                            if (continued) {
        !          1965:                                LEXTRACE("ERROR ");
        !          1966:                                return ERROR;
        !          1967:                            }
        !          1968: 
        !          1969:                            if ((path = parse_include(yytext)) == NULL)
        !          1970:                                yyterminate();
        !          1971: 
        !          1972:                            LEXTRACE("INCLUDEDIR\n");
        !          1973: 
        !          1974:                            /*
        !          1975:                             * Push current buffer and switch to include file.
        !          1976:                             * We simply ignore empty directories.
        !          1977:                             */
        !          1978:                            if (!push_includedir(path) && parse_error)
        !          1979:                                yyterminate();
        !          1980:                        }
        !          1981:        YY_BREAK
        !          1982: case 20:
        !          1983: YY_RULE_SETUP
        !          1984: #line 294 "toke.l"
        !          1985: {
        !          1986:                            char deftype;
        !          1987:                            int n;
        !          1988: 
        !          1989:                            if (continued) {
        !          1990:                                LEXTRACE("ERROR ");
        !          1991:                                return ERROR;
        !          1992:                            }
        !          1993: 
        !          1994:                            for (n = 0; isblank((unsigned char)yytext[n]); n++)
        !          1995:                                continue;
        !          1996:                            n += sizeof("Defaults") - 1;
        !          1997:                            if ((deftype = yytext[n++]) != '\0') {
        !          1998:                                while (isblank((unsigned char)yytext[n]))
        !          1999:                                    n++;
        !          2000:                            }
        !          2001:                            BEGIN GOTDEFS;
        !          2002:                            switch (deftype) {
        !          2003:                                case ':':
        !          2004:                                    yyless(n);
        !          2005:                                    LEXTRACE("DEFAULTS_USER ");
        !          2006:                                    return DEFAULTS_USER;
        !          2007:                                case '>':
        !          2008:                                    yyless(n);
        !          2009:                                    LEXTRACE("DEFAULTS_RUNAS ");
        !          2010:                                    return DEFAULTS_RUNAS;
        !          2011:                                case '@':
        !          2012:                                    yyless(n);
        !          2013:                                    LEXTRACE("DEFAULTS_HOST ");
        !          2014:                                    return DEFAULTS_HOST;
        !          2015:                                case '!':
        !          2016:                                    yyless(n);
        !          2017:                                    LEXTRACE("DEFAULTS_CMND ");
        !          2018:                                    return DEFAULTS_CMND;
        !          2019:                                default:
        !          2020:                                    LEXTRACE("DEFAULTS ");
        !          2021:                                    return DEFAULTS;
        !          2022:                            }
        !          2023:                        }
        !          2024:        YY_BREAK
        !          2025: case 21:
        !          2026: YY_RULE_SETUP
        !          2027: #line 334 "toke.l"
        !          2028: {
        !          2029:                            int n;
        !          2030: 
        !          2031:                            if (continued) {
        !          2032:                                LEXTRACE("ERROR ");
        !          2033:                                return ERROR;
        !          2034:                            }
        !          2035: 
        !          2036:                            for (n = 0; isblank((unsigned char)yytext[n]); n++)
        !          2037:                                continue;
        !          2038:                            switch (yytext[n]) {
        !          2039:                                case 'H':
        !          2040:                                    LEXTRACE("HOSTALIAS ");
        !          2041:                                    return HOSTALIAS;
        !          2042:                                case 'C':
        !          2043:                                    LEXTRACE("CMNDALIAS ");
        !          2044:                                    return CMNDALIAS;
        !          2045:                                case 'U':
        !          2046:                                    LEXTRACE("USERALIAS ");
        !          2047:                                    return USERALIAS;
        !          2048:                                case 'R':
        !          2049:                                    LEXTRACE("RUNASALIAS ");
        !          2050:                                    return RUNASALIAS;
        !          2051:                            }
        !          2052:                        }
        !          2053:        YY_BREAK
        !          2054: case 22:
        !          2055: YY_RULE_SETUP
        !          2056: #line 360 "toke.l"
        !          2057: {
        !          2058:                                /* cmnd does not require passwd for this user */
        !          2059:                                LEXTRACE("NOPASSWD ");
        !          2060:                                return NOPASSWD;
        !          2061:                        }
        !          2062:        YY_BREAK
        !          2063: case 23:
        !          2064: YY_RULE_SETUP
        !          2065: #line 366 "toke.l"
        !          2066: {
        !          2067:                                /* cmnd requires passwd for this user */
        !          2068:                                LEXTRACE("PASSWD ");
        !          2069:                                return PASSWD;
        !          2070:                        }
        !          2071:        YY_BREAK
        !          2072: case 24:
        !          2073: YY_RULE_SETUP
        !          2074: #line 372 "toke.l"
        !          2075: {
        !          2076:                                LEXTRACE("NOEXEC ");
        !          2077:                                return NOEXEC;
        !          2078:                        }
        !          2079:        YY_BREAK
        !          2080: case 25:
        !          2081: YY_RULE_SETUP
        !          2082: #line 377 "toke.l"
        !          2083: {
        !          2084:                                LEXTRACE("EXEC ");
        !          2085:                                return EXEC;
        !          2086:                        }
        !          2087:        YY_BREAK
        !          2088: case 26:
        !          2089: YY_RULE_SETUP
        !          2090: #line 382 "toke.l"
        !          2091: {
        !          2092:                                LEXTRACE("SETENV ");
        !          2093:                                return SETENV;
        !          2094:                        }
        !          2095:        YY_BREAK
        !          2096: case 27:
        !          2097: YY_RULE_SETUP
        !          2098: #line 387 "toke.l"
        !          2099: {
        !          2100:                                LEXTRACE("NOSETENV ");
        !          2101:                                return NOSETENV;
        !          2102:                        }
        !          2103:        YY_BREAK
        !          2104: case 28:
        !          2105: YY_RULE_SETUP
        !          2106: #line 392 "toke.l"
        !          2107: {
        !          2108:                                LEXTRACE("LOG_OUTPUT ");
        !          2109:                                return LOG_OUTPUT;
        !          2110:                        }
        !          2111:        YY_BREAK
        !          2112: case 29:
        !          2113: YY_RULE_SETUP
        !          2114: #line 397 "toke.l"
        !          2115: {
        !          2116:                                LEXTRACE("NOLOG_OUTPUT ");
        !          2117:                                return NOLOG_OUTPUT;
        !          2118:                        }
        !          2119:        YY_BREAK
        !          2120: case 30:
        !          2121: YY_RULE_SETUP
        !          2122: #line 402 "toke.l"
        !          2123: {
        !          2124:                                LEXTRACE("LOG_INPUT ");
        !          2125:                                return LOG_INPUT;
        !          2126:                        }
        !          2127:        YY_BREAK
        !          2128: case 31:
        !          2129: YY_RULE_SETUP
        !          2130: #line 407 "toke.l"
        !          2131: {
        !          2132:                                LEXTRACE("NOLOG_INPUT ");
        !          2133:                                return NOLOG_INPUT;
        !          2134:                        }
        !          2135:        YY_BREAK
        !          2136: case 32:
        !          2137: YY_RULE_SETUP
        !          2138: #line 412 "toke.l"
        !          2139: {
        !          2140:                            /* empty group or netgroup */
        !          2141:                            LEXTRACE("ERROR ");
        !          2142:                            return ERROR;
        !          2143:                        }
        !          2144:        YY_BREAK
        !          2145: case 33:
        !          2146: YY_RULE_SETUP
        !          2147: #line 418 "toke.l"
        !          2148: {
        !          2149:                            /* netgroup */
        !          2150:                            if (!fill(yytext, yyleng))
        !          2151:                                yyterminate();
        !          2152:                            LEXTRACE("NETGROUP ");
        !          2153:                            return NETGROUP;
        !          2154:                        }
        !          2155:        YY_BREAK
        !          2156: case 34:
        !          2157: YY_RULE_SETUP
        !          2158: #line 426 "toke.l"
        !          2159: {
        !          2160:                            /* group */
        !          2161:                            if (!fill(yytext, yyleng))
        !          2162:                                yyterminate();
        !          2163:                            LEXTRACE("USERGROUP ");
        !          2164:                            return USERGROUP;
        !          2165:                        }
        !          2166:        YY_BREAK
        !          2167: case 35:
        !          2168: YY_RULE_SETUP
        !          2169: #line 434 "toke.l"
        !          2170: {
        !          2171:                            if (!fill(yytext, yyleng))
        !          2172:                                yyterminate();
        !          2173:                            LEXTRACE("NTWKADDR ");
        !          2174:                            return NTWKADDR;
        !          2175:                        }
        !          2176:        YY_BREAK
        !          2177: case 36:
        !          2178: YY_RULE_SETUP
        !          2179: #line 441 "toke.l"
        !          2180: {
        !          2181:                            if (!fill(yytext, yyleng))
        !          2182:                                yyterminate();
        !          2183:                            LEXTRACE("NTWKADDR ");
        !          2184:                            return NTWKADDR;
        !          2185:                        }
        !          2186:        YY_BREAK
        !          2187: case 37:
        !          2188: YY_RULE_SETUP
        !          2189: #line 448 "toke.l"
        !          2190: {
        !          2191:                            if (!ipv6_valid(yytext)) {
        !          2192:                                LEXTRACE("ERROR ");
        !          2193:                                return ERROR;
        !          2194:                            }
        !          2195:                            if (!fill(yytext, yyleng))
        !          2196:                                yyterminate();
        !          2197:                            LEXTRACE("NTWKADDR ");
        !          2198:                            return NTWKADDR;
        !          2199:                        }
        !          2200:        YY_BREAK
        !          2201: case 38:
        !          2202: YY_RULE_SETUP
        !          2203: #line 459 "toke.l"
        !          2204: {
        !          2205:                            if (!ipv6_valid(yytext)) {
        !          2206:                                LEXTRACE("ERROR ");
        !          2207:                                return ERROR;
        !          2208:                            }
        !          2209:                            if (!fill(yytext, yyleng))
        !          2210:                                yyterminate();
        !          2211:                            LEXTRACE("NTWKADDR ");
        !          2212:                            return NTWKADDR;
        !          2213:                        }
        !          2214:        YY_BREAK
        !          2215: case 39:
        !          2216: YY_RULE_SETUP
        !          2217: #line 470 "toke.l"
        !          2218: {
        !          2219:                            LEXTRACE("ALL ");
        !          2220:                            return ALL;
        !          2221: 
        !          2222:                        }
        !          2223:        YY_BREAK
        !          2224: case 40:
        !          2225: YY_RULE_SETUP
        !          2226: #line 476 "toke.l"
        !          2227: {
        !          2228: #ifdef HAVE_SELINUX
        !          2229:                            LEXTRACE("ROLE ");
        !          2230:                            return ROLE;
        !          2231: #else
        !          2232:                            goto got_alias;
        !          2233: #endif
        !          2234:                        }
        !          2235:        YY_BREAK
        !          2236: case 41:
        !          2237: YY_RULE_SETUP
        !          2238: #line 485 "toke.l"
        !          2239: {
        !          2240: #ifdef HAVE_SELINUX
        !          2241:                            LEXTRACE("TYPE ");
        !          2242:                            return TYPE;
        !          2243: #else
        !          2244:                            goto got_alias;
        !          2245: #endif
        !          2246:                        }
        !          2247:        YY_BREAK
        !          2248: case 42:
        !          2249: YY_RULE_SETUP
        !          2250: #line 494 "toke.l"
        !          2251: {
        !          2252: #ifndef HAVE_SELINUX
        !          2253:                        got_alias:
        !          2254: #endif
        !          2255:                            if (!fill(yytext, yyleng))
        !          2256:                                yyterminate();
        !          2257:                            LEXTRACE("ALIAS ");
        !          2258:                            return ALIAS;
        !          2259:                        }
        !          2260:        YY_BREAK
        !          2261: case 43:
        !          2262: YY_RULE_SETUP
        !          2263: #line 504 "toke.l"
        !          2264: {
        !          2265:                            /* no command args allowed for Defaults!/path */
        !          2266:                            if (!fill_cmnd(yytext, yyleng))
        !          2267:                                yyterminate();
        !          2268:                            LEXTRACE("COMMAND ");
        !          2269:                            return COMMAND;
        !          2270:                        }
        !          2271:        YY_BREAK
        !          2272: case 44:
        !          2273: YY_RULE_SETUP
        !          2274: #line 512 "toke.l"
        !          2275: {
        !          2276:                            BEGIN GOTCMND;
        !          2277:                            LEXTRACE("COMMAND ");
        !          2278:                            if (!fill_cmnd(yytext, yyleng))
        !          2279:                                yyterminate();
        !          2280:                        }                       /* sudo -e */
        !          2281:        YY_BREAK
        !          2282: case 45:
        !          2283: YY_RULE_SETUP
        !          2284: #line 519 "toke.l"
        !          2285: {
        !          2286:                            /* directories can't have args... */
        !          2287:                            if (yytext[yyleng - 1] == '/') {
        !          2288:                                LEXTRACE("COMMAND ");
        !          2289:                                if (!fill_cmnd(yytext, yyleng))
        !          2290:                                    yyterminate();
        !          2291:                                return COMMAND;
        !          2292:                            } else {
        !          2293:                                BEGIN GOTCMND;
        !          2294:                                LEXTRACE("COMMAND ");
        !          2295:                                if (!fill_cmnd(yytext, yyleng))
        !          2296:                                    yyterminate();
        !          2297:                            }
        !          2298:                        }                       /* a pathname */
        !          2299:        YY_BREAK
        !          2300: case 46:
        !          2301: YY_RULE_SETUP
        !          2302: #line 534 "toke.l"
        !          2303: {
        !          2304:                            LEXTRACE("BEGINSTR ");
        !          2305:                            yylval.string = NULL;
        !          2306:                            prev_state = YY_START;
        !          2307:                            BEGIN INSTR;
        !          2308:                        }
        !          2309:        YY_BREAK
        !          2310: case 47:
        !          2311: YY_RULE_SETUP
        !          2312: #line 541 "toke.l"
        !          2313: {
        !          2314:                            /* a word */
        !          2315:                            if (!fill(yytext, yyleng))
        !          2316:                                yyterminate();
        !          2317:                            LEXTRACE("WORD(5) ");
        !          2318:                            return WORD;
        !          2319:                        }
        !          2320:        YY_BREAK
        !          2321: case 48:
        !          2322: YY_RULE_SETUP
        !          2323: #line 549 "toke.l"
        !          2324: {
        !          2325:                            LEXTRACE("( ");
        !          2326:                            return '(';
        !          2327:                        }
        !          2328:        YY_BREAK
        !          2329: case 49:
        !          2330: YY_RULE_SETUP
        !          2331: #line 554 "toke.l"
        !          2332: {
        !          2333:                            LEXTRACE(") ");
        !          2334:                            return ')';
        !          2335:                        }
        !          2336:        YY_BREAK
        !          2337: case 50:
        !          2338: YY_RULE_SETUP
        !          2339: #line 559 "toke.l"
        !          2340: {
        !          2341:                            LEXTRACE(", ");
        !          2342:                            return ',';
        !          2343:                        }                       /* return ',' */
        !          2344:        YY_BREAK
        !          2345: case 51:
        !          2346: YY_RULE_SETUP
        !          2347: #line 564 "toke.l"
        !          2348: {
        !          2349:                            LEXTRACE("= ");
        !          2350:                            return '=';
        !          2351:                        }                       /* return '=' */
        !          2352:        YY_BREAK
        !          2353: case 52:
        !          2354: YY_RULE_SETUP
        !          2355: #line 569 "toke.l"
        !          2356: {
        !          2357:                            LEXTRACE(": ");
        !          2358:                            return ':';
        !          2359:                        }                       /* return ':' */
        !          2360:        YY_BREAK
        !          2361: case 53:
        !          2362: YY_RULE_SETUP
        !          2363: #line 574 "toke.l"
        !          2364: {
        !          2365:                            if (yyleng & 1) {
        !          2366:                                LEXTRACE("!");
        !          2367:                                return '!';     /* return '!' */
        !          2368:                            }
        !          2369:                        }
        !          2370:        YY_BREAK
        !          2371: case 54:
        !          2372: YY_RULE_SETUP
        !          2373: #line 581 "toke.l"
        !          2374: {
        !          2375:                            if (YY_START == INSTR) {
        !          2376:                                LEXTRACE("ERROR ");
        !          2377:                                return ERROR;   /* line break in string */
        !          2378:                            }
        !          2379:                            BEGIN INITIAL;
        !          2380:                            ++sudolineno;
        !          2381:                            continued = FALSE;
        !          2382:                            LEXTRACE("\n");
        !          2383:                            return COMMENT;
        !          2384:                        }                       /* return newline */
        !          2385:        YY_BREAK
        !          2386: case 55:
        !          2387: YY_RULE_SETUP
        !          2388: #line 593 "toke.l"
        !          2389: {                      /* throw away space/tabs */
        !          2390:                            sawspace = TRUE;    /* but remember for fill_args */
        !          2391:                        }
        !          2392:        YY_BREAK
        !          2393: case 56:
        !          2394: YY_RULE_SETUP
        !          2395: #line 597 "toke.l"
        !          2396: {
        !          2397:                            sawspace = TRUE;    /* remember for fill_args */
        !          2398:                            ++sudolineno;
        !          2399:                            continued = TRUE;
        !          2400:                        }                       /* throw away EOL after \ */
        !          2401:        YY_BREAK
        !          2402: case 57:
        !          2403: YY_RULE_SETUP
        !          2404: #line 603 "toke.l"
        !          2405: {
        !          2406:                            BEGIN INITIAL;
        !          2407:                            ++sudolineno;
        !          2408:                            continued = FALSE;
        !          2409:                            LEXTRACE("#\n");
        !          2410:                            return COMMENT;
        !          2411:                        }                       /* comment, not uid/gid */
        !          2412:        YY_BREAK
        !          2413: case 58:
        !          2414: YY_RULE_SETUP
        !          2415: #line 611 "toke.l"
        !          2416: {
        !          2417:                            LEXTRACE("ERROR ");
        !          2418:                            return ERROR;
        !          2419:                        }       /* parse error */
        !          2420:        YY_BREAK
        !          2421: case YY_STATE_EOF(INITIAL):
        !          2422: case YY_STATE_EOF(GOTDEFS):
        !          2423: case YY_STATE_EOF(GOTCMND):
        !          2424: case YY_STATE_EOF(STARTDEFS):
        !          2425: case YY_STATE_EOF(INDEFS):
        !          2426: case YY_STATE_EOF(INSTR):
        !          2427: #line 616 "toke.l"
        !          2428: {
        !          2429:                            if (YY_START != INITIAL) {
        !          2430:                                BEGIN INITIAL;
        !          2431:                                LEXTRACE("ERROR ");
        !          2432:                                return ERROR;
        !          2433:                            }
        !          2434:                            if (!pop_include())
        !          2435:                                yyterminate();
        !          2436:                        }
        !          2437:        YY_BREAK
        !          2438: case 59:
        !          2439: YY_RULE_SETUP
        !          2440: #line 626 "toke.l"
        !          2441: ECHO;
        !          2442:        YY_BREAK
        !          2443: #line 2443 "lex.yy.c"
        !          2444: 
        !          2445:        case YY_END_OF_BUFFER:
        !          2446:                {
        !          2447:                /* Amount of text matched not including the EOB char. */
        !          2448:                int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
        !          2449: 
        !          2450:                /* Undo the effects of YY_DO_BEFORE_ACTION. */
        !          2451:                *yy_cp = yy_hold_char;
        !          2452:                YY_RESTORE_YY_MORE_OFFSET
        !          2453: 
        !          2454:                if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
        !          2455:                        {
        !          2456:                        /* We're scanning a new file or input source.  It's
        !          2457:                         * possible that this happened because the user
        !          2458:                         * just pointed yyin at a new source and called
        !          2459:                         * yylex().  If so, then we have to assure
        !          2460:                         * consistency between yy_current_buffer and our
        !          2461:                         * globals.  Here is the right place to do so, because
        !          2462:                         * this is the first action (other than possibly a
        !          2463:                         * back-up) that will match for the new input source.
        !          2464:                         */
        !          2465:                        yy_n_chars = yy_current_buffer->yy_n_chars;
        !          2466:                        yy_current_buffer->yy_input_file = yyin;
        !          2467:                        yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
        !          2468:                        }
        !          2469: 
        !          2470:                /* Note that here we test for yy_c_buf_p "<=" to the position
        !          2471:                 * of the first EOB in the buffer, since yy_c_buf_p will
        !          2472:                 * already have been incremented past the NUL character
        !          2473:                 * (since all states make transitions on EOB to the
        !          2474:                 * end-of-buffer state).  Contrast this with the test
        !          2475:                 * in input().
        !          2476:                 */
        !          2477:                if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
        !          2478:                        { /* This was really a NUL. */
        !          2479:                        yy_state_type yy_next_state;
        !          2480: 
        !          2481:                        yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
        !          2482: 
        !          2483:                        yy_current_state = yy_get_previous_state();
        !          2484: 
        !          2485:                        /* Okay, we're now positioned to make the NUL
        !          2486:                         * transition.  We couldn't have
        !          2487:                         * yy_get_previous_state() go ahead and do it
        !          2488:                         * for us because it doesn't know how to deal
        !          2489:                         * with the possibility of jamming (and we don't
        !          2490:                         * want to build jamming into it because then it
        !          2491:                         * will run more slowly).
        !          2492:                         */
        !          2493: 
        !          2494:                        yy_next_state = yy_try_NUL_trans( yy_current_state );
        !          2495: 
        !          2496:                        yy_bp = yytext_ptr + YY_MORE_ADJ;
        !          2497: 
        !          2498:                        if ( yy_next_state )
        !          2499:                                {
        !          2500:                                /* Consume the NUL. */
        !          2501:                                yy_cp = ++yy_c_buf_p;
        !          2502:                                yy_current_state = yy_next_state;
        !          2503:                                goto yy_match;
        !          2504:                                }
        !          2505: 
        !          2506:                        else
        !          2507:                                {
        !          2508:                                yy_cp = yy_c_buf_p;
        !          2509:                                goto yy_find_action;
        !          2510:                                }
        !          2511:                        }
        !          2512: 
        !          2513:                else switch ( yy_get_next_buffer() )
        !          2514:                        {
        !          2515:                        case EOB_ACT_END_OF_FILE:
        !          2516:                                {
        !          2517:                                yy_did_buffer_switch_on_eof = 0;
        !          2518: 
        !          2519:                                if ( yywrap() )
        !          2520:                                        {
        !          2521:                                        /* Note: because we've taken care in
        !          2522:                                         * yy_get_next_buffer() to have set up
        !          2523:                                         * yytext, we can now set up
        !          2524:                                         * yy_c_buf_p so that if some total
        !          2525:                                         * hoser (like flex itself) wants to
        !          2526:                                         * call the scanner after we return the
        !          2527:                                         * YY_NULL, it'll still work - another
        !          2528:                                         * YY_NULL will get returned.
        !          2529:                                         */
        !          2530:                                        yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
        !          2531: 
        !          2532:                                        yy_act = YY_STATE_EOF(YY_START);
        !          2533:                                        goto do_action;
        !          2534:                                        }
        !          2535: 
        !          2536:                                else
        !          2537:                                        {
        !          2538:                                        if ( ! yy_did_buffer_switch_on_eof )
        !          2539:                                                YY_NEW_FILE;
        !          2540:                                        }
        !          2541:                                break;
        !          2542:                                }
        !          2543: 
        !          2544:                        case EOB_ACT_CONTINUE_SCAN:
        !          2545:                                yy_c_buf_p =
        !          2546:                                        yytext_ptr + yy_amount_of_matched_text;
        !          2547: 
        !          2548:                                yy_current_state = yy_get_previous_state();
        !          2549: 
        !          2550:                                yy_cp = yy_c_buf_p;
        !          2551:                                yy_bp = yytext_ptr + YY_MORE_ADJ;
        !          2552:                                goto yy_match;
        !          2553: 
        !          2554:                        case EOB_ACT_LAST_MATCH:
        !          2555:                                yy_c_buf_p =
        !          2556:                                &yy_current_buffer->yy_ch_buf[yy_n_chars];
        !          2557: 
        !          2558:                                yy_current_state = yy_get_previous_state();
        !          2559: 
        !          2560:                                yy_cp = yy_c_buf_p;
        !          2561:                                yy_bp = yytext_ptr + YY_MORE_ADJ;
        !          2562:                                goto yy_find_action;
        !          2563:                        }
        !          2564:                break;
        !          2565:                }
        !          2566: 
        !          2567:        default:
        !          2568:                YY_FATAL_ERROR(
        !          2569:                        "fatal flex scanner internal error--no action found" );
        !          2570:        } /* end of action switch */
        !          2571:                } /* end of scanning one token */
        !          2572:        } /* end of yylex */
        !          2573: 
        !          2574: 
        !          2575: /* yy_get_next_buffer - try to read in a new buffer
        !          2576:  *
        !          2577:  * Returns a code representing an action:
        !          2578:  *     EOB_ACT_LAST_MATCH -
        !          2579:  *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
        !          2580:  *     EOB_ACT_END_OF_FILE - end of file
        !          2581:  */
        !          2582: 
        !          2583: static int yy_get_next_buffer()
        !          2584:        {
        !          2585:        register char *dest = yy_current_buffer->yy_ch_buf;
        !          2586:        register char *source = yytext_ptr;
        !          2587:        register int number_to_move, i;
        !          2588:        int ret_val;
        !          2589: 
        !          2590:        if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
        !          2591:                YY_FATAL_ERROR(
        !          2592:                "fatal flex scanner internal error--end of buffer missed" );
        !          2593: 
        !          2594:        if ( yy_current_buffer->yy_fill_buffer == 0 )
        !          2595:                { /* Don't try to fill the buffer, so this is an EOF. */
        !          2596:                if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
        !          2597:                        {
        !          2598:                        /* We matched a single character, the EOB, so
        !          2599:                         * treat this as a final EOF.
        !          2600:                         */
        !          2601:                        return EOB_ACT_END_OF_FILE;
        !          2602:                        }
        !          2603: 
        !          2604:                else
        !          2605:                        {
        !          2606:                        /* We matched some text prior to the EOB, first
        !          2607:                         * process it.
        !          2608:                         */
        !          2609:                        return EOB_ACT_LAST_MATCH;
        !          2610:                        }
        !          2611:                }
        !          2612: 
        !          2613:        /* Try to read more data. */
        !          2614: 
        !          2615:        /* First move last chars to start of buffer. */
        !          2616:        number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
        !          2617: 
        !          2618:        for ( i = 0; i < number_to_move; ++i )
        !          2619:                *(dest++) = *(source++);
        !          2620: 
        !          2621:        if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
        !          2622:                /* don't do the read, it's not guaranteed to return an EOF,
        !          2623:                 * just force an EOF
        !          2624:                 */
        !          2625:                yy_current_buffer->yy_n_chars = yy_n_chars = 0;
        !          2626: 
        !          2627:        else
        !          2628:                {
        !          2629:                int num_to_read =
        !          2630:                        yy_current_buffer->yy_buf_size - number_to_move - 1;
        !          2631: 
        !          2632:                while ( num_to_read <= 0 )
        !          2633:                        { /* Not enough room in the buffer - grow it. */
        !          2634: #ifdef YY_USES_REJECT
        !          2635:                        YY_FATAL_ERROR(
        !          2636: "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
        !          2637: #else
        !          2638: 
        !          2639:                        /* just a shorter name for the current buffer */
        !          2640:                        YY_BUFFER_STATE b = yy_current_buffer;
        !          2641: 
        !          2642:                        int yy_c_buf_p_offset =
        !          2643:                                (int) (yy_c_buf_p - b->yy_ch_buf);
        !          2644: 
        !          2645:                        if ( b->yy_is_our_buffer )
        !          2646:                                {
        !          2647:                                int new_size = b->yy_buf_size * 2;
        !          2648: 
        !          2649:                                if ( new_size <= 0 )
        !          2650:                                        b->yy_buf_size += b->yy_buf_size / 8;
        !          2651:                                else
        !          2652:                                        b->yy_buf_size *= 2;
        !          2653: 
        !          2654:                                b->yy_ch_buf = (char *)
        !          2655:                                        /* Include room in for 2 EOB chars. */
        !          2656:                                        yy_flex_realloc( (void *) b->yy_ch_buf,
        !          2657:                                                         b->yy_buf_size + 2 );
        !          2658:                                }
        !          2659:                        else
        !          2660:                                /* Can't grow it, we don't own it. */
        !          2661:                                b->yy_ch_buf = 0;
        !          2662: 
        !          2663:                        if ( ! b->yy_ch_buf )
        !          2664:                                YY_FATAL_ERROR(
        !          2665:                                "fatal error - scanner input buffer overflow" );
        !          2666: 
        !          2667:                        yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
        !          2668: 
        !          2669:                        num_to_read = yy_current_buffer->yy_buf_size -
        !          2670:                                                number_to_move - 1;
        !          2671: #endif
        !          2672:                        }
        !          2673: 
        !          2674:                if ( num_to_read > YY_READ_BUF_SIZE )
        !          2675:                        num_to_read = YY_READ_BUF_SIZE;
        !          2676: 
        !          2677:                /* Read in more data. */
        !          2678:                YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
        !          2679:                        yy_n_chars, num_to_read );
        !          2680: 
        !          2681:                yy_current_buffer->yy_n_chars = yy_n_chars;
        !          2682:                }
        !          2683: 
        !          2684:        if ( yy_n_chars == 0 )
        !          2685:                {
        !          2686:                if ( number_to_move == YY_MORE_ADJ )
        !          2687:                        {
        !          2688:                        ret_val = EOB_ACT_END_OF_FILE;
        !          2689:                        yyrestart( yyin );
        !          2690:                        }
        !          2691: 
        !          2692:                else
        !          2693:                        {
        !          2694:                        ret_val = EOB_ACT_LAST_MATCH;
        !          2695:                        yy_current_buffer->yy_buffer_status =
        !          2696:                                YY_BUFFER_EOF_PENDING;
        !          2697:                        }
        !          2698:                }
        !          2699: 
        !          2700:        else
        !          2701:                ret_val = EOB_ACT_CONTINUE_SCAN;
        !          2702: 
        !          2703:        yy_n_chars += number_to_move;
        !          2704:        yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
        !          2705:        yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
        !          2706: 
        !          2707:        yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
        !          2708: 
        !          2709:        return ret_val;
        !          2710:        }
        !          2711: 
        !          2712: 
        !          2713: /* yy_get_previous_state - get the state just before the EOB char was reached */
        !          2714: 
        !          2715: static yy_state_type yy_get_previous_state()
        !          2716:        {
        !          2717:        register yy_state_type yy_current_state;
        !          2718:        register char *yy_cp;
        !          2719: 
        !          2720:        yy_current_state = yy_start;
        !          2721:        yy_current_state += YY_AT_BOL();
        !          2722: 
        !          2723:        for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
        !          2724:                {
        !          2725:                register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
        !          2726:                if ( yy_accept[yy_current_state] )
        !          2727:                        {
        !          2728:                        yy_last_accepting_state = yy_current_state;
        !          2729:                        yy_last_accepting_cpos = yy_cp;
        !          2730:                        }
        !          2731:                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
        !          2732:                        {
        !          2733:                        yy_current_state = (int) yy_def[yy_current_state];
        !          2734:                        if ( yy_current_state >= 607 )
        !          2735:                                yy_c = yy_meta[(unsigned int) yy_c];
        !          2736:                        }
        !          2737:                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        !          2738:                }
        !          2739: 
        !          2740:        return yy_current_state;
        !          2741:        }
        !          2742: 
        !          2743: 
        !          2744: /* yy_try_NUL_trans - try to make a transition on the NUL character
        !          2745:  *
        !          2746:  * synopsis
        !          2747:  *     next_state = yy_try_NUL_trans( current_state );
        !          2748:  */
        !          2749: 
        !          2750: #ifdef YY_USE_PROTOS
        !          2751: static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
        !          2752: #else
        !          2753: static yy_state_type yy_try_NUL_trans( yy_current_state )
        !          2754: yy_state_type yy_current_state;
        !          2755: #endif
        !          2756:        {
        !          2757:        register int yy_is_jam;
        !          2758:        register char *yy_cp = yy_c_buf_p;
        !          2759: 
        !          2760:        register YY_CHAR yy_c = 1;
        !          2761:        if ( yy_accept[yy_current_state] )
        !          2762:                {
        !          2763:                yy_last_accepting_state = yy_current_state;
        !          2764:                yy_last_accepting_cpos = yy_cp;
        !          2765:                }
        !          2766:        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
        !          2767:                {
        !          2768:                yy_current_state = (int) yy_def[yy_current_state];
        !          2769:                if ( yy_current_state >= 607 )
        !          2770:                        yy_c = yy_meta[(unsigned int) yy_c];
        !          2771:                }
        !          2772:        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        !          2773:        yy_is_jam = (yy_current_state == 606);
        !          2774: 
        !          2775:        return yy_is_jam ? 0 : yy_current_state;
        !          2776:        }
        !          2777: 
        !          2778: 
        !          2779: #ifndef YY_NO_UNPUT
        !          2780: #ifdef YY_USE_PROTOS
        !          2781: static void yyunput( int c, register char *yy_bp )
        !          2782: #else
        !          2783: static void yyunput( c, yy_bp )
        !          2784: int c;
        !          2785: register char *yy_bp;
        !          2786: #endif
        !          2787:        {
        !          2788:        register char *yy_cp = yy_c_buf_p;
        !          2789: 
        !          2790:        /* undo effects of setting up yytext */
        !          2791:        *yy_cp = yy_hold_char;
        !          2792: 
        !          2793:        if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
        !          2794:                { /* need to shift things up to make room */
        !          2795:                /* +2 for EOB chars. */
        !          2796:                register int number_to_move = yy_n_chars + 2;
        !          2797:                register char *dest = &yy_current_buffer->yy_ch_buf[
        !          2798:                                        yy_current_buffer->yy_buf_size + 2];
        !          2799:                register char *source =
        !          2800:                                &yy_current_buffer->yy_ch_buf[number_to_move];
        !          2801: 
        !          2802:                while ( source > yy_current_buffer->yy_ch_buf )
        !          2803:                        *--dest = *--source;
        !          2804: 
        !          2805:                yy_cp += (int) (dest - source);
        !          2806:                yy_bp += (int) (dest - source);
        !          2807:                yy_current_buffer->yy_n_chars =
        !          2808:                        yy_n_chars = yy_current_buffer->yy_buf_size;
        !          2809: 
        !          2810:                if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
        !          2811:                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
        !          2812:                }
        !          2813: 
        !          2814:        *--yy_cp = (char) c;
        !          2815: 
        !          2816: 
        !          2817:        yytext_ptr = yy_bp;
        !          2818:        yy_hold_char = *yy_cp;
        !          2819:        yy_c_buf_p = yy_cp;
        !          2820:        }
        !          2821: #endif /* ifndef YY_NO_UNPUT */
        !          2822: 
        !          2823: 
        !          2824: #ifndef YY_NO_INPUT
        !          2825: #ifdef __cplusplus
        !          2826: static int yyinput()
        !          2827: #else
        !          2828: static int input()
        !          2829: #endif
        !          2830:        {
        !          2831:        int c;
        !          2832: 
        !          2833:        *yy_c_buf_p = yy_hold_char;
        !          2834: 
        !          2835:        if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
        !          2836:                {
        !          2837:                /* yy_c_buf_p now points to the character we want to return.
        !          2838:                 * If this occurs *before* the EOB characters, then it's a
        !          2839:                 * valid NUL; if not, then we've hit the end of the buffer.
        !          2840:                 */
        !          2841:                if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
        !          2842:                        /* This was really a NUL. */
        !          2843:                        *yy_c_buf_p = '\0';
        !          2844: 
        !          2845:                else
        !          2846:                        { /* need more input */
        !          2847:                        int offset = yy_c_buf_p - yytext_ptr;
        !          2848:                        ++yy_c_buf_p;
        !          2849: 
        !          2850:                        switch ( yy_get_next_buffer() )
        !          2851:                                {
        !          2852:                                case EOB_ACT_LAST_MATCH:
        !          2853:                                        /* This happens because yy_g_n_b()
        !          2854:                                         * sees that we've accumulated a
        !          2855:                                         * token and flags that we need to
        !          2856:                                         * try matching the token before
        !          2857:                                         * proceeding.  But for input(),
        !          2858:                                         * there's no matching to consider.
        !          2859:                                         * So convert the EOB_ACT_LAST_MATCH
        !          2860:                                         * to EOB_ACT_END_OF_FILE.
        !          2861:                                         */
        !          2862: 
        !          2863:                                        /* Reset buffer status. */
        !          2864:                                        yyrestart( yyin );
        !          2865: 
        !          2866:                                        /* fall through */
        !          2867: 
        !          2868:                                case EOB_ACT_END_OF_FILE:
        !          2869:                                        {
        !          2870:                                        if ( yywrap() )
        !          2871:                                                return EOF;
        !          2872: 
        !          2873:                                        if ( ! yy_did_buffer_switch_on_eof )
        !          2874:                                                YY_NEW_FILE;
        !          2875: #ifdef __cplusplus
        !          2876:                                        return yyinput();
        !          2877: #else
        !          2878:                                        return input();
        !          2879: #endif
        !          2880:                                        }
        !          2881: 
        !          2882:                                case EOB_ACT_CONTINUE_SCAN:
        !          2883:                                        yy_c_buf_p = yytext_ptr + offset;
        !          2884:                                        break;
        !          2885:                                }
        !          2886:                        }
        !          2887:                }
        !          2888: 
        !          2889:        c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
        !          2890:        *yy_c_buf_p = '\0';     /* preserve yytext */
        !          2891:        yy_hold_char = *++yy_c_buf_p;
        !          2892: 
        !          2893:        yy_current_buffer->yy_at_bol = (c == '\n');
        !          2894: 
        !          2895:        return c;
        !          2896:        }
        !          2897: #endif /* ifndef YY_NO_INPUT */
        !          2898: 
        !          2899: 
        !          2900: #ifdef YY_USE_PROTOS
        !          2901: void yyrestart( FILE *input_file )
        !          2902: #else
        !          2903: void yyrestart( input_file )
        !          2904: FILE *input_file;
        !          2905: #endif
        !          2906:        {
        !          2907:        if ( ! yy_current_buffer )
        !          2908:                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
        !          2909: 
        !          2910:        yy_init_buffer( yy_current_buffer, input_file );
        !          2911:        yy_load_buffer_state();
        !          2912:        }
        !          2913: 
        !          2914: 
        !          2915: #ifdef YY_USE_PROTOS
        !          2916: void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
        !          2917: #else
        !          2918: void yy_switch_to_buffer( new_buffer )
        !          2919: YY_BUFFER_STATE new_buffer;
        !          2920: #endif
        !          2921:        {
        !          2922:        if ( yy_current_buffer == new_buffer )
        !          2923:                return;
        !          2924: 
        !          2925:        if ( yy_current_buffer )
        !          2926:                {
        !          2927:                /* Flush out information for old buffer. */
        !          2928:                *yy_c_buf_p = yy_hold_char;
        !          2929:                yy_current_buffer->yy_buf_pos = yy_c_buf_p;
        !          2930:                yy_current_buffer->yy_n_chars = yy_n_chars;
        !          2931:                }
        !          2932: 
        !          2933:        yy_current_buffer = new_buffer;
        !          2934:        yy_load_buffer_state();
        !          2935: 
        !          2936:        /* We don't actually know whether we did this switch during
        !          2937:         * EOF (yywrap()) processing, but the only time this flag
        !          2938:         * is looked at is after yywrap() is called, so it's safe
        !          2939:         * to go ahead and always set it.
        !          2940:         */
        !          2941:        yy_did_buffer_switch_on_eof = 1;
        !          2942:        }
        !          2943: 
        !          2944: 
        !          2945: #ifdef YY_USE_PROTOS
        !          2946: void yy_load_buffer_state( void )
        !          2947: #else
        !          2948: void yy_load_buffer_state()
        !          2949: #endif
        !          2950:        {
        !          2951:        yy_n_chars = yy_current_buffer->yy_n_chars;
        !          2952:        yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
        !          2953:        yyin = yy_current_buffer->yy_input_file;
        !          2954:        yy_hold_char = *yy_c_buf_p;
        !          2955:        }
        !          2956: 
        !          2957: 
        !          2958: #ifdef YY_USE_PROTOS
        !          2959: YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
        !          2960: #else
        !          2961: YY_BUFFER_STATE yy_create_buffer( file, size )
        !          2962: FILE *file;
        !          2963: int size;
        !          2964: #endif
        !          2965:        {
        !          2966:        YY_BUFFER_STATE b;
        !          2967: 
        !          2968:        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
        !          2969:        if ( ! b )
        !          2970:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
        !          2971: 
        !          2972:        b->yy_buf_size = size;
        !          2973: 
        !          2974:        /* yy_ch_buf has to be 2 characters longer than the size given because
        !          2975:         * we need to put in 2 end-of-buffer characters.
        !          2976:         */
        !          2977:        b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
        !          2978:        if ( ! b->yy_ch_buf )
        !          2979:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
        !          2980: 
        !          2981:        b->yy_is_our_buffer = 1;
        !          2982: 
        !          2983:        yy_init_buffer( b, file );
        !          2984: 
        !          2985:        return b;
        !          2986:        }
        !          2987: 
        !          2988: 
        !          2989: #ifdef YY_USE_PROTOS
        !          2990: void yy_delete_buffer( YY_BUFFER_STATE b )
        !          2991: #else
        !          2992: void yy_delete_buffer( b )
        !          2993: YY_BUFFER_STATE b;
        !          2994: #endif
        !          2995:        {
        !          2996:        if ( ! b )
        !          2997:                return;
        !          2998: 
        !          2999:        if ( b == yy_current_buffer )
        !          3000:                yy_current_buffer = (YY_BUFFER_STATE) 0;
        !          3001: 
        !          3002:        if ( b->yy_is_our_buffer )
        !          3003:                yy_flex_free( (void *) b->yy_ch_buf );
        !          3004: 
        !          3005:        yy_flex_free( (void *) b );
        !          3006:        }
        !          3007: 
        !          3008: 
        !          3009: #ifndef YY_ALWAYS_INTERACTIVE
        !          3010: #ifndef YY_NEVER_INTERACTIVE
        !          3011: #include <unistd.h>
        !          3012: #endif
        !          3013: #endif
        !          3014: 
        !          3015: #ifdef YY_USE_PROTOS
        !          3016: void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
        !          3017: #else
        !          3018: void yy_init_buffer( b, file )
        !          3019: YY_BUFFER_STATE b;
        !          3020: FILE *file;
        !          3021: #endif
        !          3022: 
        !          3023: 
        !          3024:        {
        !          3025:        int oerrno = errno;
        !          3026: 
        !          3027:        yy_flush_buffer( b );
        !          3028: 
        !          3029:        b->yy_input_file = file;
        !          3030:        b->yy_fill_buffer = 1;
        !          3031: 
        !          3032: #if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
        !          3033:        b->yy_is_interactive = 1;
        !          3034: #else
        !          3035: #if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
        !          3036:        b->yy_is_interactive = 0;
        !          3037: #else
        !          3038:        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
        !          3039: #endif
        !          3040: #endif
        !          3041:        errno = oerrno;
        !          3042:        }
        !          3043: 
        !          3044: 
        !          3045: #ifdef YY_USE_PROTOS
        !          3046: void yy_flush_buffer( YY_BUFFER_STATE b )
        !          3047: #else
        !          3048: void yy_flush_buffer( b )
        !          3049: YY_BUFFER_STATE b;
        !          3050: #endif
        !          3051: 
        !          3052:        {
        !          3053:        if ( ! b )
        !          3054:                return;
        !          3055: 
        !          3056:        b->yy_n_chars = 0;
        !          3057: 
        !          3058:        /* We always need two end-of-buffer characters.  The first causes
        !          3059:         * a transition to the end-of-buffer state.  The second causes
        !          3060:         * a jam in that state.
        !          3061:         */
        !          3062:        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
        !          3063:        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
        !          3064: 
        !          3065:        b->yy_buf_pos = &b->yy_ch_buf[0];
        !          3066: 
        !          3067:        b->yy_at_bol = 1;
        !          3068:        b->yy_buffer_status = YY_BUFFER_NEW;
        !          3069: 
        !          3070:        if ( b == yy_current_buffer )
        !          3071:                yy_load_buffer_state();
        !          3072:        }
        !          3073: 
        !          3074: 
        !          3075: #ifndef YY_NO_SCAN_BUFFER
        !          3076: #ifdef YY_USE_PROTOS
        !          3077: YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
        !          3078: #else
        !          3079: YY_BUFFER_STATE yy_scan_buffer( base, size )
        !          3080: char *base;
        !          3081: yy_size_t size;
        !          3082: #endif
        !          3083:        {
        !          3084:        YY_BUFFER_STATE b;
        !          3085: 
        !          3086:        if ( size < 2 ||
        !          3087:             base[size-2] != YY_END_OF_BUFFER_CHAR ||
        !          3088:             base[size-1] != YY_END_OF_BUFFER_CHAR )
        !          3089:                /* They forgot to leave room for the EOB's. */
        !          3090:                return 0;
        !          3091: 
        !          3092:        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
        !          3093:        if ( ! b )
        !          3094:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
        !          3095: 
        !          3096:        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
        !          3097:        b->yy_buf_pos = b->yy_ch_buf = base;
        !          3098:        b->yy_is_our_buffer = 0;
        !          3099:        b->yy_input_file = 0;
        !          3100:        b->yy_n_chars = b->yy_buf_size;
        !          3101:        b->yy_is_interactive = 0;
        !          3102:        b->yy_at_bol = 1;
        !          3103:        b->yy_fill_buffer = 0;
        !          3104:        b->yy_buffer_status = YY_BUFFER_NEW;
        !          3105: 
        !          3106:        yy_switch_to_buffer( b );
        !          3107: 
        !          3108:        return b;
        !          3109:        }
        !          3110: #endif
        !          3111: 
        !          3112: 
        !          3113: #ifndef YY_NO_SCAN_STRING
        !          3114: #ifdef YY_USE_PROTOS
        !          3115: YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
        !          3116: #else
        !          3117: YY_BUFFER_STATE yy_scan_string( yy_str )
        !          3118: yyconst char *yy_str;
        !          3119: #endif
        !          3120:        {
        !          3121:        int len;
        !          3122:        for ( len = 0; yy_str[len]; ++len )
        !          3123:                ;
        !          3124: 
        !          3125:        return yy_scan_bytes( yy_str, len );
        !          3126:        }
        !          3127: #endif
        !          3128: 
        !          3129: 
        !          3130: #ifndef YY_NO_SCAN_BYTES
        !          3131: #ifdef YY_USE_PROTOS
        !          3132: YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
        !          3133: #else
        !          3134: YY_BUFFER_STATE yy_scan_bytes( bytes, len )
        !          3135: yyconst char *bytes;
        !          3136: int len;
        !          3137: #endif
        !          3138:        {
        !          3139:        YY_BUFFER_STATE b;
        !          3140:        char *buf;
        !          3141:        yy_size_t n;
        !          3142:        int i;
        !          3143: 
        !          3144:        /* Get memory for full buffer, including space for trailing EOB's. */
        !          3145:        n = len + 2;
        !          3146:        buf = (char *) yy_flex_alloc( n );
        !          3147:        if ( ! buf )
        !          3148:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
        !          3149: 
        !          3150:        for ( i = 0; i < len; ++i )
        !          3151:                buf[i] = bytes[i];
        !          3152: 
        !          3153:        buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
        !          3154: 
        !          3155:        b = yy_scan_buffer( buf, n );
        !          3156:        if ( ! b )
        !          3157:                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
        !          3158: 
        !          3159:        /* It's okay to grow etc. this buffer, and we should throw it
        !          3160:         * away when we're done.
        !          3161:         */
        !          3162:        b->yy_is_our_buffer = 1;
        !          3163: 
        !          3164:        return b;
        !          3165:        }
        !          3166: #endif
        !          3167: 
        !          3168: 
        !          3169: #ifndef YY_NO_PUSH_STATE
        !          3170: #ifdef YY_USE_PROTOS
        !          3171: static void yy_push_state( int new_state )
        !          3172: #else
        !          3173: static void yy_push_state( new_state )
        !          3174: int new_state;
        !          3175: #endif
        !          3176:        {
        !          3177:        if ( yy_start_stack_ptr >= yy_start_stack_depth )
        !          3178:                {
        !          3179:                yy_size_t new_size;
        !          3180: 
        !          3181:                yy_start_stack_depth += YY_START_STACK_INCR;
        !          3182:                new_size = yy_start_stack_depth * sizeof( int );
        !          3183: 
        !          3184:                if ( ! yy_start_stack )
        !          3185:                        yy_start_stack = (int *) yy_flex_alloc( new_size );
        !          3186: 
        !          3187:                else
        !          3188:                        yy_start_stack = (int *) yy_flex_realloc(
        !          3189:                                        (void *) yy_start_stack, new_size );
        !          3190: 
        !          3191:                if ( ! yy_start_stack )
        !          3192:                        YY_FATAL_ERROR(
        !          3193:                        "out of memory expanding start-condition stack" );
        !          3194:                }
        !          3195: 
        !          3196:        yy_start_stack[yy_start_stack_ptr++] = YY_START;
        !          3197: 
        !          3198:        BEGIN(new_state);
        !          3199:        }
        !          3200: #endif
        !          3201: 
        !          3202: 
        !          3203: #ifndef YY_NO_POP_STATE
        !          3204: static void yy_pop_state()
        !          3205:        {
        !          3206:        if ( --yy_start_stack_ptr < 0 )
        !          3207:                YY_FATAL_ERROR( "start-condition stack underflow" );
        !          3208: 
        !          3209:        BEGIN(yy_start_stack[yy_start_stack_ptr]);
        !          3210:        }
        !          3211: #endif
        !          3212: 
        !          3213: 
        !          3214: #ifndef YY_NO_TOP_STATE
        !          3215: static int yy_top_state()
        !          3216:        {
        !          3217:        return yy_start_stack[yy_start_stack_ptr - 1];
        !          3218:        }
        !          3219: #endif
        !          3220: 
        !          3221: #ifndef YY_EXIT_FAILURE
        !          3222: #define YY_EXIT_FAILURE 2
        !          3223: #endif
        !          3224: 
        !          3225: #ifdef YY_USE_PROTOS
        !          3226: static void yy_fatal_error( yyconst char msg[] )
        !          3227: #else
        !          3228: static void yy_fatal_error( msg )
        !          3229: char msg[];
        !          3230: #endif
        !          3231:        {
        !          3232:        (void) fprintf( stderr, "%s\n", msg );
        !          3233:        exit( YY_EXIT_FAILURE );
        !          3234:        }
        !          3235: 
        !          3236: 
        !          3237: 
        !          3238: /* Redefine yyless() so it works in section 3 code. */
        !          3239: 
        !          3240: #undef yyless
        !          3241: #define yyless(n) \
        !          3242:        do \
        !          3243:                { \
        !          3244:                /* Undo effects of setting up yytext. */ \
        !          3245:                yytext[yyleng] = yy_hold_char; \
        !          3246:                yy_c_buf_p = yytext + n; \
        !          3247:                yy_hold_char = *yy_c_buf_p; \
        !          3248:                *yy_c_buf_p = '\0'; \
        !          3249:                yyleng = n; \
        !          3250:                } \
        !          3251:        while ( 0 )
        !          3252: 
        !          3253: 
        !          3254: /* Internal utility routines. */
        !          3255: 
        !          3256: #ifndef yytext_ptr
        !          3257: #ifdef YY_USE_PROTOS
        !          3258: static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
        !          3259: #else
        !          3260: static void yy_flex_strncpy( s1, s2, n )
        !          3261: char *s1;
        !          3262: yyconst char *s2;
        !          3263: int n;
        !          3264: #endif
        !          3265:        {
        !          3266:        register int i;
        !          3267:        for ( i = 0; i < n; ++i )
        !          3268:                s1[i] = s2[i];
        !          3269:        }
        !          3270: #endif
        !          3271: 
        !          3272: #ifdef YY_NEED_STRLEN
        !          3273: #ifdef YY_USE_PROTOS
        !          3274: static int yy_flex_strlen( yyconst char *s )
        !          3275: #else
        !          3276: static int yy_flex_strlen( s )
        !          3277: yyconst char *s;
        !          3278: #endif
        !          3279:        {
        !          3280:        register int n;
        !          3281:        for ( n = 0; s[n]; ++n )
        !          3282:                ;
        !          3283: 
        !          3284:        return n;
        !          3285:        }
        !          3286: #endif
        !          3287: 
        !          3288: 
        !          3289: #ifdef YY_USE_PROTOS
        !          3290: static void *yy_flex_alloc( yy_size_t size )
        !          3291: #else
        !          3292: static void *yy_flex_alloc( size )
        !          3293: yy_size_t size;
        !          3294: #endif
        !          3295:        {
        !          3296:        return (void *) malloc( size );
        !          3297:        }
        !          3298: 
        !          3299: #ifdef YY_USE_PROTOS
        !          3300: static void *yy_flex_realloc( void *ptr, yy_size_t size )
        !          3301: #else
        !          3302: static void *yy_flex_realloc( ptr, size )
        !          3303: void *ptr;
        !          3304: yy_size_t size;
        !          3305: #endif
        !          3306:        {
        !          3307:        /* The cast to (char *) in the following accommodates both
        !          3308:         * implementations that use char* generic pointers, and those
        !          3309:         * that use void* generic pointers.  It works with the latter
        !          3310:         * because both ANSI C and C++ allow castless assignment from
        !          3311:         * any pointer type to void*, and deal with argument conversions
        !          3312:         * as though doing an assignment.
        !          3313:         */
        !          3314:        return (void *) realloc( (char *) ptr, size );
        !          3315:        }
        !          3316: 
        !          3317: #ifdef YY_USE_PROTOS
        !          3318: static void yy_flex_free( void *ptr )
        !          3319: #else
        !          3320: static void yy_flex_free( ptr )
        !          3321: void *ptr;
        !          3322: #endif
        !          3323:        {
        !          3324:        free( ptr );
        !          3325:        }
        !          3326: 
        !          3327: #if defined(YY_MAIN) && YY_MAIN
        !          3328: int main()
        !          3329:        {
        !          3330:        yylex();
        !          3331:        return 0;
        !          3332:        }
        !          3333: #endif
        !          3334: #line 626 "toke.l"
        !          3335: 
        !          3336: struct path_list {
        !          3337:     char *path;
        !          3338:     struct path_list *next;
        !          3339: };
        !          3340: 
        !          3341: struct include_stack {
        !          3342:     YY_BUFFER_STATE bs;
        !          3343:     char *path;
        !          3344:     struct path_list *more; /* more files in case of includedir */
        !          3345:     int lineno;
        !          3346:     int keepopen;
        !          3347: };
        !          3348: 
        !          3349: static int
        !          3350: pl_compare(const void *v1, const void *v2)
        !          3351: {
        !          3352:     const struct path_list * const *p1 = v1;
        !          3353:     const struct path_list * const *p2 = v2;
        !          3354: 
        !          3355:     return strcmp((*p1)->path, (*p2)->path);
        !          3356: }
        !          3357: 
        !          3358: static char *
        !          3359: switch_dir(struct include_stack *stack, char *dirpath)
        !          3360: {
        !          3361:     DIR *dir;
        !          3362:     int i, count = 0;
        !          3363:     char *path = NULL;
        !          3364:     struct dirent *dent;
        !          3365:     struct stat sb;
        !          3366:     struct path_list *pl, *first = NULL;
        !          3367:     struct path_list **sorted = NULL;
        !          3368: 
        !          3369:     if (!(dir = opendir(dirpath))) {
        !          3370:        if (errno != ENOENT) {
        !          3371:            char *errbuf;
        !          3372:            if (asprintf(&errbuf, _("%s: %s"), dirpath, strerror(errno)) != -1) {
        !          3373:                yyerror(errbuf);
        !          3374:                free(errbuf);
        !          3375:            } else {
        !          3376:                yyerror(_("unable to allocate memory"));
        !          3377:            }
        !          3378:        }
        !          3379:        goto done;
        !          3380:     }
        !          3381:     while ((dent = readdir(dir))) {
        !          3382:        /* Ignore files that end in '~' or have a '.' in them. */
        !          3383:        if (dent->d_name[0] == '\0' || dent->d_name[NAMLEN(dent) - 1] == '~'
        !          3384:            || strchr(dent->d_name, '.') != NULL) {
        !          3385:            continue;
        !          3386:        }
        !          3387:        if (asprintf(&path, "%s/%s", dirpath, dent->d_name) == -1) {
        !          3388:            closedir(dir);
        !          3389:            goto bad;
        !          3390:        }
        !          3391:        if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
        !          3392:            efree(path);
        !          3393:            path = NULL;
        !          3394:            continue;
        !          3395:        }
        !          3396:        pl = malloc(sizeof(*pl));
        !          3397:        if (pl == NULL)
        !          3398:            goto bad;
        !          3399:        pl->path = path;
        !          3400:        pl->next = first;
        !          3401:        first = pl;
        !          3402:        count++;
        !          3403:     }
        !          3404:     closedir(dir);
        !          3405: 
        !          3406:     if (count == 0)
        !          3407:        goto done;
        !          3408: 
        !          3409:     /* Sort the list as an array. */
        !          3410:     sorted = malloc(sizeof(*sorted) * count);
        !          3411:     if (sorted == NULL)
        !          3412:        goto bad;
        !          3413:     pl = first;
        !          3414:     for (i = 0; i < count; i++) {
        !          3415:        sorted[i] = pl;
        !          3416:        pl = pl->next;
        !          3417:     }
        !          3418:     qsort(sorted, count, sizeof(*sorted), pl_compare);
        !          3419: 
        !          3420:     /* Apply sorting to the list. */
        !          3421:     first = sorted[0];
        !          3422:     sorted[count - 1]->next = NULL;
        !          3423:     for (i = 1; i < count; i++)
        !          3424:        sorted[i - 1]->next = sorted[i];
        !          3425:     efree(sorted);
        !          3426: 
        !          3427:     /* Pull out the first element for parsing, leave the rest for later. */
        !          3428:     if (count) {
        !          3429:        path = first->path;
        !          3430:        pl = first->next;
        !          3431:        efree(first);
        !          3432:        stack->more = pl;
        !          3433:     } else {
        !          3434:        path = NULL;
        !          3435:     }
        !          3436: done:
        !          3437:     efree(dirpath);
        !          3438:     return path;
        !          3439: bad:
        !          3440:     while (first != NULL) {
        !          3441:        pl = first;
        !          3442:        first = pl->next;
        !          3443:        free(pl->path);
        !          3444:        free(pl);
        !          3445:     }
        !          3446:     efree(sorted);
        !          3447:     efree(dirpath);
        !          3448:     efree(path);
        !          3449:     return NULL;
        !          3450: }
        !          3451: 
        !          3452: #define MAX_SUDOERS_DEPTH      128
        !          3453: #define SUDOERS_STACK_INCREMENT        16
        !          3454: 
        !          3455: static size_t istacksize, idepth;
        !          3456: static struct include_stack *istack;
        !          3457: static int keepopen;
        !          3458: 
        !          3459: void
        !          3460: init_lexer(void)
        !          3461: {
        !          3462:     struct path_list *pl;
        !          3463: 
        !          3464:     while (idepth) {
        !          3465:        idepth--;
        !          3466:        while ((pl = istack[idepth].more) != NULL) {
        !          3467:            istack[idepth].more = pl->next;
        !          3468:            efree(pl->path);
        !          3469:            efree(pl);
        !          3470:        }
        !          3471:        efree(istack[idepth].path);
        !          3472:        if (idepth && !istack[idepth].keepopen)
        !          3473:            fclose(istack[idepth].bs->yy_input_file);
        !          3474:        yy_delete_buffer(istack[idepth].bs);
        !          3475:     }
        !          3476:     efree(istack);
        !          3477:     istack = NULL;
        !          3478:     istacksize = idepth = 0;
        !          3479:     sudolineno = 1;
        !          3480:     keepopen = FALSE;
        !          3481:     sawspace = FALSE;
        !          3482:     continued = FALSE;
        !          3483:     prev_state = INITIAL;
        !          3484: }
        !          3485: 
        !          3486: static int
        !          3487: _push_include(char *path, int isdir)
        !          3488: {
        !          3489:     struct path_list *pl;
        !          3490:     FILE *fp;
        !          3491: 
        !          3492:     /* push current state onto stack */
        !          3493:     if (idepth >= istacksize) {
        !          3494:        if (idepth > MAX_SUDOERS_DEPTH) {
        !          3495:            yyerror(_("too many levels of includes"));
        !          3496:            return FALSE;
        !          3497:        }
        !          3498:        istacksize += SUDOERS_STACK_INCREMENT;
        !          3499:        istack = (struct include_stack *) realloc(istack,
        !          3500:            sizeof(*istack) * istacksize);
        !          3501:        if (istack == NULL) {
        !          3502:            yyerror(_("unable to allocate memory"));
        !          3503:            return FALSE;
        !          3504:        }
        !          3505:     }
        !          3506:     if (isdir) {
        !          3507:        if (!(path = switch_dir(&istack[idepth], path))) {
        !          3508:            /* switch_dir() called yyerror() for us */
        !          3509:            return FALSE;
        !          3510:        }
        !          3511:        while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) {
        !          3512:            /* Unable to open path in includedir, go to next one, if any. */
        !          3513:            efree(path);
        !          3514:            if ((pl = istack[idepth].more) == NULL)
        !          3515:                return FALSE;
        !          3516:            path = pl->path;
        !          3517:            istack[idepth].more = pl->next;
        !          3518:            efree(pl);
        !          3519:        }
        !          3520:     } else {
        !          3521:        if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {
        !          3522:            char *errbuf;
        !          3523:            if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {
        !          3524:                yyerror(errbuf);
        !          3525:                free(errbuf);
        !          3526:            } else {
        !          3527:                yyerror(_("unable to allocate memory"));
        !          3528:            }
        !          3529:            return FALSE;
        !          3530:        }
        !          3531:        istack[idepth].more = NULL;
        !          3532:     }
        !          3533:     /* Push the old (current) file and open the new one. */
        !          3534:     istack[idepth].path = sudoers; /* push old path */
        !          3535:     istack[idepth].bs = YY_CURRENT_BUFFER;
        !          3536:     istack[idepth].lineno = sudolineno;
        !          3537:     istack[idepth].keepopen = keepopen;
        !          3538:     idepth++;
        !          3539:     sudolineno = 1;
        !          3540:     sudoers = path;
        !          3541:     yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
        !          3542: 
        !          3543:     return TRUE;
        !          3544: }
        !          3545: 
        !          3546: static int
        !          3547: pop_include(void)
        !          3548: {
        !          3549:     struct path_list *pl;
        !          3550:     FILE *fp;
        !          3551: 
        !          3552:     if (idepth == 0)
        !          3553:        return FALSE;
        !          3554: 
        !          3555:     if (!keepopen)
        !          3556:        fclose(YY_CURRENT_BUFFER->yy_input_file);
        !          3557:     yy_delete_buffer(YY_CURRENT_BUFFER);
        !          3558:     /* If we are in an include dir, move to the next file. */
        !          3559:     while ((pl = istack[idepth - 1].more) != NULL) {
        !          3560:        fp = open_sudoers(pl->path, FALSE, &keepopen);
        !          3561:        if (fp != NULL) {
        !          3562:            istack[idepth - 1].more = pl->next;
        !          3563:            efree(sudoers);
        !          3564:            sudoers = pl->path;
        !          3565:            sudolineno = 1;
        !          3566:            yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
        !          3567:            efree(pl);
        !          3568:            break;
        !          3569:        }
        !          3570:        /* Unable to open path in include dir, go to next one. */
        !          3571:        istack[idepth - 1].more = pl->next;
        !          3572:        efree(pl->path);
        !          3573:        efree(pl);
        !          3574:     }
        !          3575:     /* If no path list, just pop the last dir on the stack. */
        !          3576:     if (pl == NULL) {
        !          3577:        idepth--;
        !          3578:        yy_switch_to_buffer(istack[idepth].bs);
        !          3579:        efree(sudoers);
        !          3580:        sudoers = istack[idepth].path;
        !          3581:        sudolineno = istack[idepth].lineno;
        !          3582:        keepopen = istack[idepth].keepopen;
        !          3583:     }
        !          3584:     return TRUE;
        !          3585: }
        !          3586: 
        !          3587: static char *
        !          3588: parse_include(char *base)
        !          3589: {
        !          3590:     char *cp, *ep, *path;
        !          3591:     int len = 0, subst = 0;
        !          3592:     size_t shost_len = 0;
        !          3593: 
        !          3594:     /* Pull out path from #include line. */
        !          3595:     cp = base + sizeof("#include");
        !          3596:     if (*cp == 'i')
        !          3597:        cp += 3; /* includedir */
        !          3598:     while (isblank((unsigned char) *cp))
        !          3599:        cp++;
        !          3600:     ep = cp;
        !          3601:     while (*ep != '\0' && !isspace((unsigned char) *ep)) {
        !          3602:        if (ep[0] == '%' && ep[1] == 'h') {
        !          3603:            shost_len = strlen(user_shost);
        !          3604:            len += shost_len - 2;
        !          3605:            subst = 1;
        !          3606:        }
        !          3607:        ep++;
        !          3608:     }
        !          3609: 
        !          3610:     /* Make a copy of path and return it. */
        !          3611:     len += (int)(ep - cp);
        !          3612:     if ((path = malloc(len + 1)) == NULL) {
        !          3613:        yyerror(_("unable to allocate memory"));
        !          3614:        return NULL;
        !          3615:     }
        !          3616:     if (subst) {
        !          3617:        /* substitute for %h */
        !          3618:        char *pp = path;
        !          3619:        while (cp < ep) {
        !          3620:            if (cp[0] == '%' && cp[1] == 'h') {
        !          3621:                memcpy(pp, user_shost, shost_len);
        !          3622:                pp += shost_len;
        !          3623:                cp += 2;
        !          3624:                continue;
        !          3625:            }
        !          3626:            *pp++ = *cp++;
        !          3627:        }
        !          3628:        *pp = '\0';
        !          3629:     } else {
        !          3630:        memcpy(path, cp, len);
        !          3631:        path[len] = '\0';
        !          3632:     }
        !          3633: 
        !          3634:     /* Push any excess characters (e.g. comment, newline) back to the lexer */
        !          3635:     if (*ep != '\0')
        !          3636:        yyless((int)(ep - base));
        !          3637: 
        !          3638:     return path;
        !          3639: }
        !          3640: 
        !          3641: #ifdef TRACELEXER
        !          3642: static int
        !          3643: sudoers_trace_print(const char *msg)
        !          3644: {
        !          3645:     return fputs(msg, stderr);
        !          3646: }
        !          3647: #endif /* TRACELEXER */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>