Wed Feb 11 11:59:44 2009

Asterisk developer's documentation


ast_expr2f.c

Go to the documentation of this file.
00001 #line 2 "ast_expr2f.c"
00002 
00003 #line 4 "ast_expr2f.c"
00004 
00005 #define  YY_INT_ALIGNED short int
00006 
00007 /* A lexical scanner generated by flex */
00008 
00009 #define FLEX_SCANNER
00010 #define YY_FLEX_MAJOR_VERSION 2
00011 #define YY_FLEX_MINOR_VERSION 5
00012 #define YY_FLEX_SUBMINOR_VERSION 35
00013 #if YY_FLEX_SUBMINOR_VERSION > 0
00014 #define FLEX_BETA
00015 #endif
00016 
00017 /* First, we deal with  platform-specific or compiler-specific issues. */
00018 
00019 /* begin standard C headers. */
00020 #include <stdio.h>
00021 #include <string.h>
00022 #include <errno.h>
00023 #include <stdlib.h>
00024 
00025 /* end standard C headers. */
00026 
00027 /* flex integer type definitions */
00028 
00029 #ifndef FLEXINT_H
00030 #define FLEXINT_H
00031 
00032 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
00033 
00034 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
00035 
00036 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
00037  * if you want the limit (max/min) macros for int types. 
00038  */
00039 #ifndef __STDC_LIMIT_MACROS
00040 #define __STDC_LIMIT_MACROS 1
00041 #endif
00042 
00043 #include <inttypes.h>
00044 typedef int8_t flex_int8_t;
00045 typedef uint8_t flex_uint8_t;
00046 typedef int16_t flex_int16_t;
00047 typedef uint16_t flex_uint16_t;
00048 typedef int32_t flex_int32_t;
00049 typedef uint32_t flex_uint32_t;
00050 #else
00051 typedef signed char flex_int8_t;
00052 typedef short int flex_int16_t;
00053 typedef int flex_int32_t;
00054 typedef unsigned char flex_uint8_t; 
00055 typedef unsigned short int flex_uint16_t;
00056 typedef unsigned int flex_uint32_t;
00057 
00058 /* Limits of integral types. */
00059 #ifndef INT8_MIN
00060 #define INT8_MIN               (-128)
00061 #endif
00062 #ifndef INT16_MIN
00063 #define INT16_MIN              (-32767-1)
00064 #endif
00065 #ifndef INT32_MIN
00066 #define INT32_MIN              (-2147483647-1)
00067 #endif
00068 #ifndef INT8_MAX
00069 #define INT8_MAX               (127)
00070 #endif
00071 #ifndef INT16_MAX
00072 #define INT16_MAX              (32767)
00073 #endif
00074 #ifndef INT32_MAX
00075 #define INT32_MAX              (2147483647)
00076 #endif
00077 #ifndef UINT8_MAX
00078 #define UINT8_MAX              (255U)
00079 #endif
00080 #ifndef UINT16_MAX
00081 #define UINT16_MAX             (65535U)
00082 #endif
00083 #ifndef UINT32_MAX
00084 #define UINT32_MAX             (4294967295U)
00085 #endif
00086 
00087 #endif /* ! C99 */
00088 
00089 #endif /* ! FLEXINT_H */
00090 
00091 #ifdef __cplusplus
00092 
00093 /* The "const" storage-class-modifier is valid. */
00094 #define YY_USE_CONST
00095 
00096 #else /* ! __cplusplus */
00097 
00098 /* C99 requires __STDC__ to be defined as 1. */
00099 #if defined (__STDC__)
00100 
00101 #define YY_USE_CONST
00102 
00103 #endif   /* defined (__STDC__) */
00104 #endif   /* ! __cplusplus */
00105 
00106 #ifdef YY_USE_CONST
00107 #define yyconst const
00108 #else
00109 #define yyconst
00110 #endif
00111 
00112 /* Returned upon end-of-file. */
00113 #define YY_NULL 0
00114 
00115 /* Promotes a possibly negative, possibly signed char to an unsigned
00116  * integer for use as an array index.  If the signed char is negative,
00117  * we want to instead treat it as an 8-bit unsigned char, hence the
00118  * double cast.
00119  */
00120 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00121 
00122 /* An opaque pointer. */
00123 #ifndef YY_TYPEDEF_YY_SCANNER_T
00124 #define YY_TYPEDEF_YY_SCANNER_T
00125 typedef void* yyscan_t;
00126 #endif
00127 
00128 /* For convenience, these vars (plus the bison vars far below)
00129    are macros in the reentrant scanner. */
00130 #define yyin yyg->yyin_r
00131 #define yyout yyg->yyout_r
00132 #define yyextra yyg->yyextra_r
00133 #define yyleng yyg->yyleng_r
00134 #define yytext yyg->yytext_r
00135 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
00136 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
00137 #define yy_flex_debug yyg->yy_flex_debug_r
00138 
00139 /* Enter a start condition.  This macro really ought to take a parameter,
00140  * but we do it the disgusting crufty way forced on us by the ()-less
00141  * definition of BEGIN.
00142  */
00143 #define BEGIN yyg->yy_start = 1 + 2 *
00144 
00145 /* Translate the current start state into a value that can be later handed
00146  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00147  * compatibility.
00148  */
00149 #define YY_START ((yyg->yy_start - 1) / 2)
00150 #define YYSTATE YY_START
00151 
00152 /* Action number for EOF rule of a given start state. */
00153 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00154 
00155 /* Special action meaning "start processing a new file". */
00156 #define YY_NEW_FILE ast_yyrestart(yyin ,yyscanner )
00157 
00158 #define YY_END_OF_BUFFER_CHAR 0
00159 
00160 /* Size of default input buffer. */
00161 #ifndef YY_BUF_SIZE
00162 #define YY_BUF_SIZE 16384
00163 #endif
00164 
00165 /* The state buf must be large enough to hold one state per character in the main buffer.
00166  */
00167 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
00168 
00169 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00170 #define YY_TYPEDEF_YY_BUFFER_STATE
00171 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00172 #endif
00173 
00174 #define EOB_ACT_CONTINUE_SCAN 0
00175 #define EOB_ACT_END_OF_FILE 1
00176 #define EOB_ACT_LAST_MATCH 2
00177 
00178     #define YY_LESS_LINENO(n)
00179     
00180 /* Return all but the first "n" matched characters back to the input stream. */
00181 #define yyless(n) \
00182    do \
00183       { \
00184       /* Undo effects of setting up yytext. */ \
00185         int yyless_macro_arg = (n); \
00186         YY_LESS_LINENO(yyless_macro_arg);\
00187       *yy_cp = yyg->yy_hold_char; \
00188       YY_RESTORE_YY_MORE_OFFSET \
00189       yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00190       YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00191       } \
00192    while ( 0 )
00193 
00194 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
00195 
00196 #ifndef YY_TYPEDEF_YY_SIZE_T
00197 #define YY_TYPEDEF_YY_SIZE_T
00198 typedef size_t yy_size_t;
00199 #endif
00200 
00201 #ifndef YY_STRUCT_YY_BUFFER_STATE
00202 #define YY_STRUCT_YY_BUFFER_STATE
00203 struct yy_buffer_state
00204    {
00205    FILE *yy_input_file;
00206 
00207    char *yy_ch_buf;     /* input buffer */
00208    char *yy_buf_pos;    /* current position in input buffer */
00209 
00210    /* Size of input buffer in bytes, not including room for EOB
00211     * characters.
00212     */
00213    yy_size_t yy_buf_size;
00214 
00215    /* Number of characters read into yy_ch_buf, not including EOB
00216     * characters.
00217     */
00218    int yy_n_chars;
00219 
00220    /* Whether we "own" the buffer - i.e., we know we created it,
00221     * and can realloc() it to grow it, and should free() it to
00222     * delete it.
00223     */
00224    int yy_is_our_buffer;
00225 
00226    /* Whether this is an "interactive" input source; if so, and
00227     * if we're using stdio for input, then we want to use getc()
00228     * instead of fread(), to make sure we stop fetching input after
00229     * each newline.
00230     */
00231    int yy_is_interactive;
00232 
00233    /* Whether we're considered to be at the beginning of a line.
00234     * If so, '^' rules will be active on the next match, otherwise
00235     * not.
00236     */
00237    int yy_at_bol;
00238 
00239     int yy_bs_lineno; /**< The line count. */
00240     int yy_bs_column; /**< The column count. */
00241     
00242    /* Whether to try to fill the input buffer when we reach the
00243     * end of it.
00244     */
00245    int yy_fill_buffer;
00246 
00247    int yy_buffer_status;
00248 
00249 #define YY_BUFFER_NEW 0
00250 #define YY_BUFFER_NORMAL 1
00251    /* When an EOF's been seen but there's still some text to process
00252     * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00253     * shouldn't try reading from the input source any more.  We might
00254     * still have a bunch of tokens to match, though, because of
00255     * possible backing-up.
00256     *
00257     * When we actually see the EOF, we change the status to "new"
00258     * (via ast_yyrestart()), so that the user can continue scanning by
00259     * just pointing yyin at a new input file.
00260     */
00261 #define YY_BUFFER_EOF_PENDING 2
00262 
00263    };
00264 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
00265 
00266 /* We provide macros for accessing buffer states in case in the
00267  * future we want to put the buffer states in a more general
00268  * "scanner state".
00269  *
00270  * Returns the top of the stack, or NULL.
00271  */
00272 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
00273                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
00274                           : NULL)
00275 
00276 /* Same as previous macro, but useful when we know that the buffer stack is not
00277  * NULL or when we need an lvalue. For internal use only.
00278  */
00279 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
00280 
00281 void ast_yyrestart (FILE *input_file ,yyscan_t yyscanner );
00282 void ast_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00283 YY_BUFFER_STATE ast_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
00284 void ast_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00285 void ast_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00286 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00287 void ast_yypop_buffer_state (yyscan_t yyscanner );
00288 
00289 static void ast_yyensure_buffer_stack (yyscan_t yyscanner );
00290 static void ast_yy_load_buffer_state (yyscan_t yyscanner );
00291 static void ast_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
00292 
00293 #define YY_FLUSH_BUFFER ast_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
00294 
00295 YY_BUFFER_STATE ast_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
00296 YY_BUFFER_STATE ast_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
00297 YY_BUFFER_STATE ast_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
00298 
00299 void *ast_yyalloc (yy_size_t ,yyscan_t yyscanner );
00300 void *ast_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
00301 void ast_yyfree (void * ,yyscan_t yyscanner );
00302 
00303 #define yy_new_buffer ast_yy_create_buffer
00304 
00305 #define yy_set_interactive(is_interactive) \
00306    { \
00307    if ( ! YY_CURRENT_BUFFER ){ \
00308         ast_yyensure_buffer_stack (yyscanner); \
00309       YY_CURRENT_BUFFER_LVALUE =    \
00310             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00311    } \
00312    YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00313    }
00314 
00315 #define yy_set_bol(at_bol) \
00316    { \
00317    if ( ! YY_CURRENT_BUFFER ){\
00318         ast_yyensure_buffer_stack (yyscanner); \
00319       YY_CURRENT_BUFFER_LVALUE =    \
00320             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00321    } \
00322    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00323    }
00324 
00325 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00326 
00327 /* Begin user sect3 */
00328 
00329 #define ast_yywrap(n) 1
00330 #define YY_SKIP_YYWRAP
00331 
00332 typedef char YY_CHAR;
00333 
00334 typedef int yy_state_type;
00335 
00336 #define yytext_ptr yytext_r
00337 static yyconst flex_int16_t yy_nxt[][128] =
00338     {
00339     {
00340         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00342         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00343         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00344         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00345         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00346         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00347         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00348         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00349         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00350 
00351         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00352         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00353         0,    0,    0,    0,    0,    0,    0,    0
00354     },
00355 
00356     {
00357         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
00358        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
00359         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
00360         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
00361        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
00362        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
00363        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
00364 
00365        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00366        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00367        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
00368        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00369        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00370        13,   13,   13,    8,   29,    8,    8,    8
00371     },
00372 
00373     {
00374         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
00375        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
00376         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
00377         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
00378 
00379        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
00380        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
00381        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
00382        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00383        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00384        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
00385        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00386        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00387        13,   13,   13,    8,   29,    8,    8,    8
00388     },
00389 
00390     {
00391         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00392 
00393        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00394        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00395        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00396        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00397        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00398        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00399        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00400        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00401        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00402        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00403 
00404        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00405        30,   30,   30,   31,   30,   32,   30,   30
00406     },
00407 
00408     {
00409         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00410        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00411        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00412        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00413        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00414        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00415        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00416        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00417 
00418        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00419        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00420        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00421        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00422        30,   30,   30,   31,   30,   32,   30,   30
00423     },
00424 
00425     {
00426         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
00427        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
00428        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00429        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
00430        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
00431 
00432        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
00433        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
00434        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00435        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00436        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00437        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00438        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00439        33,   33,   33,   33,   34,   33,   33,   33
00440     },
00441 
00442     {
00443         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
00444        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
00445 
00446        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00447        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
00448        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
00449        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
00450        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
00451        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00452        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00453        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00454        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00455        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00456 
00457        33,   33,   33,   33,   34,   33,   33,   33
00458     },
00459 
00460     {
00461        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00462        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00463        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00464        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00465        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00466        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00467        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00468        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00469        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00470 
00471        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00472        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00473        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00474        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7
00475     },
00476 
00477     {
00478         7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00479        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00480        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00481        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00482        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00483        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00484 
00485        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00486        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00487        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00488        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00489        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00490        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00491        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8
00492     },
00493 
00494     {
00495         7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00496        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00497        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00498 
00499        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00500        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00501        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00502        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00503        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00504        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00505        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00506        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00507        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00508        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9
00509 
00510     },
00511 
00512     {
00513         7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00514       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00515       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00516       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00517       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00518       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00519       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00520       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00521       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00522       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00523 
00524       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00525       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00526       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10
00527     },
00528 
00529     {
00530         7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00531       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00532       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00533       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00534       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00535       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00536       -11,   36,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00537 
00538       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00539       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00540       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00541       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00542       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00543       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
00544     },
00545 
00546     {
00547         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00548        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00549        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00550        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
00551 
00552        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00553        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00554        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00555        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00556        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00557        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00558        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00559        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00560        37,   37,   37,   37,   37,   37,   37,   37
00561     },
00562 
00563     {
00564         7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00565 
00566       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00567       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00568       -13,  -13,  -13,  -13,  -13,   39,   39,  -13,  -13,   39,
00569       -13,  -13,  -13,  -13,   39,  -13,   39,  -13,   39,   39,
00570        39,   39,   39,   39,   39,   39,   39,   39,  -13,   39,
00571       -13,  -13,  -13,  -13,   39,   39,   39,   39,   39,   39,
00572        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00573        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00574        39,  -13,   39,  -13,   39,   39,  -13,   39,   39,   39,
00575        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00576 
00577        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00578        39,   39,   39,  -13,  -13,  -13,  -13,  -13
00579     },
00580 
00581     {
00582         7,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00583       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00584       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00585       -14,  -14,  -14,  -14,  -14,   39,   39,  -14,  -14,   39,
00586       -14,  -14,  -14,  -14,   39,  -14,   39,  -14,   39,   39,
00587        39,   39,   39,   39,   39,   39,   39,   39,  -14,   39,
00588       -14,  -14,  -14,  -14,   39,   39,   39,   39,   39,   39,
00589        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00590 
00591        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00592        39,  -14,   39,  -14,   39,   39,  -14,   39,   39,   39,
00593        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00594        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00595        39,   39,   39,   40,  -14,  -14,  -14,  -14
00596     },
00597 
00598     {
00599         7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00600       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00601       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00602       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00603       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00604 
00605       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00606       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00607       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00608       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00609       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00610       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00611       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00612       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15
00613     },
00614 
00615     {
00616         7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00617       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00618 
00619       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00620       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   41,  -16,
00621       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00622       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00623       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00624       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00625       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00626       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00627       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00628       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00629 
00630       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
00631     },
00632 
00633     {
00634         7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00635       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00636       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00637       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00638       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00639       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00640       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00641       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00642       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00643 
00644       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00645       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00646       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00647       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
00648     },
00649 
00650     {
00651         7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00652       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00653       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00654       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00655       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00656       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00657 
00658       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00659       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00660       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00661       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00662       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00663       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00664       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
00665     },
00666 
00667     {
00668         7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00669       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00670       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00671 
00672       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00673       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00674       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00675       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00676       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00677       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00678       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00679       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00680       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00681       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19
00682 
00683     },
00684 
00685     {
00686         7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00687       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00688       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00689       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00690       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00691       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00692       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00693       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00694       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00695       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00696 
00697       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00698       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00699       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20
00700     },
00701 
00702     {
00703         7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00704       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00705       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00706       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00707       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00708       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00709       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00710 
00711       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00712       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00713       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00714       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00715       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00716       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21
00717     },
00718 
00719     {
00720         7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00721       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00722       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00723       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00724 
00725       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00726       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00727       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00728       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00729       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00730       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00731       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00732       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00733       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22
00734     },
00735 
00736     {
00737         7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00738 
00739       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00740       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00741       -23,  -23,  -23,  -23,  -23,   39,   39,  -23,  -23,   39,
00742       -23,  -23,  -23,  -23,   39,  -23,   39,  -23,   42,   42,
00743        42,   42,   42,   42,   42,   42,   42,   42,  -23,   39,
00744       -23,  -23,  -23,  -23,   39,   39,   39,   39,   39,   39,
00745        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00746        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00747        39,  -23,   39,  -23,   39,   39,  -23,   39,   39,   39,
00748        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00749 
00750        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00751        39,   39,   39,  -23,  -23,  -23,  -23,  -23
00752     },
00753 
00754     {
00755         7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00756       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00757       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00758       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00759       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00760       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   43,  -24,
00761       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00762       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00763 
00764       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00765       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00766       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00767       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00768       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24
00769     },
00770 
00771     {
00772         7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00773       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00774       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00775       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00776       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00777 
00778       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00779       -25,   44,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00780       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00781       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00782       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00783       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00784       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00785       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
00786     },
00787 
00788     {
00789         7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00790       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00791 
00792       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00793       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00794       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00795       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00796       -26,   45,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00797       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00798       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00799       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00800       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00801       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00802 
00803       -26,  -26,  -26,  -26,  -26,  -26,   46,  -26
00804     },
00805 
00806     {
00807         7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00808       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00809       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00810       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00811       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00812       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00813       -27,   47,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00814       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00815       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00816 
00817       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00818       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00819       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00820       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27
00821     },
00822 
00823     {
00824         7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00825       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00826       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00827       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00828       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00829       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00830 
00831       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00832       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00833       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00834       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00835       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00836       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00837       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28
00838     },
00839 
00840     {
00841         7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00842       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00843       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00844 
00845       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00846       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00847       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00848       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00849       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00850       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00851       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00852       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00853       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00854       -29,  -29,  -29,  -29,   48,  -29,  -29,  -29
00855 
00856     },
00857 
00858     {
00859         7,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00860        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00861        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00862        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00863        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00864        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00865        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00866        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00867        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00868        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00869 
00870        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00871        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00872        49,   49,   49,   50,   49,   51,   49,   49
00873     },
00874 
00875     {
00876         7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00877       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00878       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00879       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00880       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00881       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00882       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00883 
00884       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00885       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00886       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00887       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00888       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00889       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31
00890     },
00891 
00892     {
00893         7,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00894       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00895       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00896       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00897 
00898       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00899       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00900       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00901       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00902       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00903       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00904       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00905       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00906       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
00907     },
00908 
00909     {
00910         7,   52,   52,   52,   52,   52,   52,   52,   52,  -33,
00911 
00912       -33,   52,   52,  -33,   52,   52,   52,   52,   52,   52,
00913        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00914        52,   52,  -33,  -33,   52,   52,  -33,  -33,  -33,   52,
00915       -33,  -33,  -33,  -33,   52,  -33,   52,  -33,   52,   52,
00916        52,   52,   52,   52,   52,   52,   52,   52,  -33,   52,
00917       -33,  -33,  -33,  -33,   52,   52,   52,   52,   52,   52,
00918        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00919        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00920        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00921        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00922 
00923        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
00924        52,   52,   52,   52,  -33,   52,   52,   52
00925     },
00926 
00927     {
00928         7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00929       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00930       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00931       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00932       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00933       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00934       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00935       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00936 
00937       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00938       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00939       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00940       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00941       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
00942     },
00943 
00944     {
00945         7,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00946       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00947       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00948       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00949       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00950 
00951       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00952       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00953       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00954       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00955       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00956       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00957       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00958       -35,  -35,  -35,   53,  -35,  -35,  -35,  -35
00959     },
00960 
00961     {
00962         7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00963       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00964 
00965       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00966       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00967       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00968       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00969       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00970       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00971       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00972       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00973       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00974       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00975 
00976       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36
00977     },
00978 
00979     {
00980         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00981        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00982        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00983        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
00984        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00985        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00986        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00987        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00988        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00989 
00990        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00991        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00992        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
00993        37,   37,   37,   37,   37,   37,   37,   37
00994     },
00995 
00996     {
00997         7,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00998       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
00999       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01000       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01001       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01002       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01003 
01004       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01005       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01006       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01007       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01008       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01009       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
01010       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38
01011     },
01012 
01013     {
01014         7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01015       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01016       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01017 
01018       -39,  -39,  -39,  -39,  -39,   39,   39,  -39,  -39,   39,
01019       -39,  -39,  -39,  -39,   39,  -39,   39,  -39,   39,   39,
01020        39,   39,   39,   39,   39,   39,   39,   39,  -39,   39,
01021       -39,  -39,  -39,  -39,   39,   39,   39,   39,   39,   39,
01022        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01023        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01024        39,  -39,   39,  -39,   39,   39,  -39,   39,   39,   39,
01025        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01026        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01027        39,   39,   39,  -39,  -39,  -39,  -39,  -39
01028 
01029     },
01030 
01031     {
01032         7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01033       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01034       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01035       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01036       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01037       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01038       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01039       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01040       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01041       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01042 
01043       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01044       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01045       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
01046     },
01047 
01048     {
01049         7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01050       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01051       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01052       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01053       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01054       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01055       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01056 
01057       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01058       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01059       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01060       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01061       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01062       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
01063     },
01064 
01065     {
01066         7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01067       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01068       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01069       -42,  -42,  -42,  -42,  -42,   39,   39,  -42,  -42,   39,
01070 
01071       -42,  -42,  -42,  -42,   39,  -42,   39,  -42,   42,   42,
01072        42,   42,   42,   42,   42,   42,   42,   42,  -42,   39,
01073       -42,  -42,  -42,  -42,   39,   39,   39,   39,   39,   39,
01074        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01075        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01076        39,  -42,   39,  -42,   39,   39,  -42,   39,   39,   39,
01077        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01078        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
01079        39,   39,   39,  -42,  -42,  -42,  -42,  -42
01080     },
01081 
01082     {
01083         7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01084 
01085       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01086       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01087       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01088       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01089       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01090       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01091       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01092       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01093       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01094       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01095 
01096       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01097       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
01098     },
01099 
01100     {
01101         7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01102       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01103       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01104       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01105       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01106       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01107       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01108       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01109 
01110       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01111       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01112       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01113       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01114       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
01115     },
01116 
01117     {
01118         7,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01119       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01120       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01121       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01122       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01123 
01124       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01125       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01126       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01127       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01128       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01129       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01130       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
01131       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
01132     },
01133 
01134     {
01135         7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01136       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01137 
01138       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01139       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01140       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01141       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01142       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01143       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01144       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01145       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01146       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01147       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01148 
01149       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
01150     },
01151 
01152     {
01153         7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01154       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01155       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01156       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01157       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01158       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01159       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01160       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01161       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01162 
01163       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01164       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01165       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01166       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
01167     },
01168 
01169     {
01170         7,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01171       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01172       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01173       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01174       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01175       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01176 
01177       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01178       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01179       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01180       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01181       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01182       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
01183       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
01184     },
01185 
01186     {
01187         7,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01188        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01189        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01190 
01191        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01192        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01193        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01194        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01195        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01196        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01197        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01198        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01199        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
01200        49,   49,   49,   50,   49,   51,   49,   49
01201 
01202     },
01203 
01204     {
01205         7,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01206       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01207       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01208       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01209       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01210       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01211       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01212       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01213       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01214       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01215 
01216       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01217       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
01218       -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50
01219     },
01220 
01221     {
01222         7,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01223       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01224       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01225       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01226       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01227       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01228       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01229 
01230       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01231       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01232       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01233       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01234       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
01235       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51
01236     },
01237 
01238     {
01239         7,   52,   52,   52,   52,   52,   52,   52,   52,  -52,
01240       -52,   52,   52,  -52,   52,   52,   52,   52,   52,   52,
01241        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01242        52,   52,  -52,  -52,   52,   52,  -52,  -52,  -52,   52,
01243 
01244       -52,  -52,  -52,  -52,   52,  -52,   52,  -52,   52,   52,
01245        52,   52,   52,   52,   52,   52,   52,   52,  -52,   52,
01246       -52,  -52,  -52,  -52,   52,   52,   52,   52,   52,   52,
01247        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01248        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01249        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01250        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01251        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
01252        52,   52,   52,   52,  -52,   52,   52,   52
01253     },
01254 
01255     {
01256         7,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01257 
01258       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01259       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01260       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01261       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01262       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01263       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01264       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01265       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01266       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01267       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01268 
01269       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
01270       -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53
01271     },
01272 
01273     } ;
01274 
01275 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
01276 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
01277 static int yy_get_next_buffer (yyscan_t yyscanner );
01278 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
01279 
01280 /* Done after the current pattern has been matched and before the
01281  * corresponding action - sets up yytext.
01282  */
01283 #define YY_DO_BEFORE_ACTION \
01284    yyg->yytext_ptr = yy_bp; \
01285    yyg->yytext_ptr -= yyg->yy_more_len; \
01286    yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
01287    yyg->yy_hold_char = *yy_cp; \
01288    *yy_cp = '\0'; \
01289    yyg->yy_c_buf_p = yy_cp;
01290 
01291 #define YY_NUM_RULES 35
01292 #define YY_END_OF_BUFFER 36
01293 /* This struct is not used in this scanner,
01294    but its presence is necessary. */
01295 struct yy_trans_info
01296    {
01297    flex_int32_t yy_verify;
01298    flex_int32_t yy_nxt;
01299    };
01300 static yyconst flex_int16_t yy_accept[54] =
01301     {   0,
01302         0,    0,    0,    0,   32,   32,   36,   35,   25,   27,
01303        19,   35,   29,   29,   17,    2,   22,   23,   15,   13,
01304        14,   16,   28,   20,    9,    3,    8,   18,    1,   35,
01305        31,   30,   32,   33,   33,   12,    0,   26,   29,   24,
01306         5,   28,   21,   11,    6,    7,   10,    4,    0,   31,
01307        30,   32,   34
01308     } ;
01309 
01310 static yyconst yy_state_type yy_NUL_trans[54] =
01311     {   0,
01312         8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
01313         0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
01314         0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
01315         0,    0,   52,    0,    0,    0,   37,    0,    0,    0,
01316         0,    0,    0,    0,    0,    0,    0,    0,   49,    0,
01317         0,   52,    0
01318     } ;
01319 
01320 /* The intent behind this definition is that it'll catch
01321  * any uses of REJECT which flex missed.
01322  */
01323 #define REJECT reject_used_but_not_detected
01324 #define yymore() (yyg->yy_more_flag = 1)
01325 #define YY_MORE_ADJ yyg->yy_more_len
01326 #define YY_RESTORE_YY_MORE_OFFSET
01327 #line 1 "ast_expr2.fl"
01328 #line 2 "ast_expr2.fl"
01329 /*
01330  * Asterisk -- An open source telephony toolkit.
01331  *
01332  * Copyright (C) 1999 - 2006, Digium, Inc.
01333  *
01334  * Mark Spencer <markster@digium.com>
01335  *
01336  * See http://www.asterisk.org for more information about
01337  * the Asterisk project. Please do not directly contact
01338  * any of the maintainers of this project for assistance;
01339  * the project provides a web site, mailing lists and IRC
01340  * channels for your use.
01341  *
01342  * This program is free software, distributed under the terms of
01343  * the GNU General Public License Version 2. See the LICENSE file
01344  * at the top of the source tree.
01345  */
01346 
01347 /*! \file
01348  *
01349  * \brief Dialplan Expression Lexical Scanner
01350  */
01351 
01352 #include "asterisk.h"
01353 
01354 #if !defined(STANDALONE_AEL)
01355 ASTERISK_FILE_VERSION(__FILE__, "$Revision: 153337 $")
01356 #endif
01357 
01358 #include <sys/types.h>
01359 #include <stdio.h>
01360 #include <stdlib.h>
01361 #include <string.h>
01362 #include <locale.h>
01363 #include <ctype.h>
01364 #if !defined(SOLARIS) && !defined(__CYGWIN__)
01365 /* #include <err.h> */
01366 #else
01367 #define quad_t int64_t
01368 #endif
01369 #include <errno.h>
01370 #include <regex.h>
01371 #include <limits.h>
01372 
01373 #include "asterisk/ast_expr.h"
01374 #include "asterisk/logger.h"
01375 #include "asterisk/strings.h"
01376 
01377 enum valtype {
01378    AST_EXPR_integer, AST_EXPR_numeric_string, AST_EXPR_string
01379 } ;
01380 
01381 struct val {
01382    enum valtype type;
01383    union {
01384       char *s;
01385       quad_t i;
01386    } u;
01387 } ;
01388 
01389 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
01390 
01391 #define SET_COLUMNS  do {     \
01392    yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf); \
01393    yylloc_param->last_column += yyleng - 1; \
01394    yylloc_param->first_line = yylloc_param->last_line = 1; \
01395    } while (0)
01396 
01397 #define SET_STRING   do {     \
01398    yylval_param->val = calloc(1, sizeof(struct val)); \
01399    yylval_param->val->type = AST_EXPR_string;      \
01400    yylval_param->val->u.s = strdup(yytext);     \
01401    } while (0)
01402 
01403 #define SET_NUMERIC_STRING do {  \
01404    yylval_param->val = calloc(1, sizeof(struct val)); \
01405    yylval_param->val->type = AST_EXPR_numeric_string; \
01406    yylval_param->val->u.s = strdup(yytext);  \
01407    } while (0)
01408 
01409 struct parse_io
01410 {
01411    char *string;
01412    struct val *val;
01413    yyscan_t scanner;
01414 };
01415  
01416 void ast_yyset_column(int column_no, yyscan_t yyscanner);
01417 int ast_yyget_column(yyscan_t yyscanner);
01418 static int curlycount = 0;
01419 static char *expr2_token_subst(const char *mess);
01420 
01421 #line 1422 "ast_expr2f.c"
01422 
01423 #define INITIAL 0
01424 #define var 1
01425 #define trail 2
01426 
01427 #ifndef YY_NO_UNISTD_H
01428 /* Special case for "unistd.h", since it is non-ANSI. We include it way
01429  * down here because we want the user's section 1 to have been scanned first.
01430  * The user has a chance to override it with an option.
01431  */
01432 #include <unistd.h>
01433 #endif
01434 
01435 #ifndef YY_EXTRA_TYPE
01436 #define YY_EXTRA_TYPE void *
01437 #endif
01438 
01439 /* Holds the entire state of the reentrant scanner. */
01440 struct yyguts_t
01441     {
01442 
01443     /* User-defined. Not touched by flex. */
01444     YY_EXTRA_TYPE yyextra_r;
01445 
01446     /* The rest are the same as the globals declared in the non-reentrant scanner. */
01447     FILE *yyin_r, *yyout_r;
01448     size_t yy_buffer_stack_top; /**< index of top of stack. */
01449     size_t yy_buffer_stack_max; /**< capacity of stack. */
01450     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
01451     char yy_hold_char;
01452     int yy_n_chars;
01453     int yyleng_r;
01454     char *yy_c_buf_p;
01455     int yy_init;
01456     int yy_start;
01457     int yy_did_buffer_switch_on_eof;
01458     int yy_start_stack_ptr;
01459     int yy_start_stack_depth;
01460     int *yy_start_stack;
01461     yy_state_type yy_last_accepting_state;
01462     char* yy_last_accepting_cpos;
01463 
01464     int yylineno_r;
01465     int yy_flex_debug_r;
01466 
01467     char *yytext_r;
01468     int yy_more_flag;
01469     int yy_more_len;
01470 
01471     YYSTYPE * yylval_r;
01472 
01473     YYLTYPE * yylloc_r;
01474 
01475     }; /* end struct yyguts_t */
01476 
01477 static int yy_init_globals (yyscan_t yyscanner );
01478 
01479     /* This must go here because YYSTYPE and YYLTYPE are included
01480      * from bison output in section 1.*/
01481     #    define yylval yyg->yylval_r
01482     
01483     #    define yylloc yyg->yylloc_r
01484     
01485 int ast_yylex_init (yyscan_t* scanner);
01486 
01487 int ast_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
01488 
01489 /* Accessor methods to globals.
01490    These are made visible to non-reentrant scanners for convenience. */
01491 
01492 int ast_yylex_destroy (yyscan_t yyscanner );
01493 
01494 int ast_yyget_debug (yyscan_t yyscanner );
01495 
01496 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
01497 
01498 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
01499 
01500 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
01501 
01502 FILE *ast_yyget_in (yyscan_t yyscanner );
01503 
01504 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
01505 
01506 FILE *ast_yyget_out (yyscan_t yyscanner );
01507 
01508 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
01509 
01510 int ast_yyget_leng (yyscan_t yyscanner );
01511 
01512 char *ast_yyget_text (yyscan_t yyscanner );
01513 
01514 int ast_yyget_lineno (yyscan_t yyscanner );
01515 
01516 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
01517 
01518 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
01519 
01520 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
01521 
01522        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
01523     
01524         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
01525     
01526 /* Macros after this point can all be overridden by user definitions in
01527  * section 1.
01528  */
01529 
01530 #ifndef YY_SKIP_YYWRAP
01531 #ifdef __cplusplus
01532 extern "C" int ast_yywrap (yyscan_t yyscanner );
01533 #else
01534 extern int ast_yywrap (yyscan_t yyscanner );
01535 #endif
01536 #endif
01537 
01538     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
01539     
01540 #ifndef yytext_ptr
01541 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
01542 #endif
01543 
01544 #ifdef YY_NEED_STRLEN
01545 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
01546 #endif
01547 
01548 #ifndef YY_NO_INPUT
01549 
01550 #ifdef __cplusplus
01551 static int yyinput (yyscan_t yyscanner );
01552 #else
01553 static int input (yyscan_t yyscanner );
01554 #endif
01555 
01556 #endif
01557 
01558 /* Amount of stuff to slurp up with each read. */
01559 #ifndef YY_READ_BUF_SIZE
01560 #define YY_READ_BUF_SIZE 8192
01561 #endif
01562 
01563 /* Copy whatever the last rule matched to the standard output. */
01564 #ifndef ECHO
01565 /* This used to be an fputs(), but since the string might contain NUL's,
01566  * we now use fwrite().
01567  */
01568 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
01569 #endif
01570 
01571 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
01572  * is returned in "result".
01573  */
01574 #ifndef YY_INPUT
01575 #define YY_INPUT(buf,result,max_size) \
01576    errno=0; \
01577    while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
01578    { \
01579       if( errno != EINTR) \
01580       { \
01581          YY_FATAL_ERROR( "input in flex scanner failed" ); \
01582          break; \
01583       } \
01584       errno=0; \
01585       clearerr(yyin); \
01586    }\
01587 \
01588 
01589 #endif
01590 
01591 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01592  * we don't want an extra ';' after the "return" because that will cause
01593  * some compilers to complain about unreachable statements.
01594  */
01595 #ifndef yyterminate
01596 #define yyterminate() return YY_NULL
01597 #endif
01598 
01599 /* Number of entries by which start-condition stack grows. */
01600 #ifndef YY_START_STACK_INCR
01601 #define YY_START_STACK_INCR 25
01602 #endif
01603 
01604 /* Report a fatal error. */
01605 #ifndef YY_FATAL_ERROR
01606 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
01607 #endif
01608 
01609 /* end tables serialization structures and prototypes */
01610 
01611 /* Default declaration of generated scanner - a define so the user can
01612  * easily add parameters.
01613  */
01614 #ifndef YY_DECL
01615 #define YY_DECL_IS_OURS 1
01616 
01617 extern int ast_yylex \
01618                (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
01619 
01620 #define YY_DECL int ast_yylex \
01621                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
01622 #endif /* !YY_DECL */
01623 
01624 /* Code executed at the beginning of each rule, after yytext and yyleng
01625  * have been set up.
01626  */
01627 #ifndef YY_USER_ACTION
01628 #define YY_USER_ACTION
01629 #endif
01630 
01631 /* Code executed at the end of each rule. */
01632 #ifndef YY_BREAK
01633 #define YY_BREAK break;
01634 #endif
01635 
01636 #define YY_RULE_SETUP \
01637    YY_USER_ACTION
01638 
01639 /** The main scanner function which does all the work.
01640  */
01641 YY_DECL
01642 {
01643    register yy_state_type yy_current_state;
01644    register char *yy_cp, *yy_bp;
01645    register int yy_act;
01646     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
01647 
01648 #line 105 "ast_expr2.fl"
01649 
01650 
01651 #line 1652 "ast_expr2f.c"
01652 
01653     yylval = yylval_param;
01654 
01655     yylloc = yylloc_param;
01656 
01657    if ( !yyg->yy_init )
01658       {
01659       yyg->yy_init = 1;
01660 
01661 #ifdef YY_USER_INIT
01662       YY_USER_INIT;
01663 #endif
01664 
01665       if ( ! yyg->yy_start )
01666          yyg->yy_start = 1;   /* first start state */
01667 
01668       if ( ! yyin )
01669          yyin = stdin;
01670 
01671       if ( ! yyout )
01672          yyout = stdout;
01673 
01674       if ( ! YY_CURRENT_BUFFER ) {
01675          ast_yyensure_buffer_stack (yyscanner);
01676          YY_CURRENT_BUFFER_LVALUE =
01677             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
01678       }
01679 
01680       ast_yy_load_buffer_state(yyscanner );
01681       }
01682 
01683    while ( 1 )    /* loops until end-of-file is reached */
01684       {
01685       yyg->yy_more_len = 0;
01686       if ( yyg->yy_more_flag )
01687          {
01688          yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
01689          yyg->yy_more_flag = 0;
01690          }
01691       yy_cp = yyg->yy_c_buf_p;
01692 
01693       /* Support of yytext. */
01694       *yy_cp = yyg->yy_hold_char;
01695 
01696       /* yy_bp points to the position in yy_ch_buf of the start of
01697        * the current run.
01698        */
01699       yy_bp = yy_cp;
01700 
01701       yy_current_state = yyg->yy_start;
01702 yy_match:
01703       while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
01704          {
01705          if ( yy_accept[yy_current_state] )
01706             {
01707             yyg->yy_last_accepting_state = yy_current_state;
01708             yyg->yy_last_accepting_cpos = yy_cp;
01709             }
01710 
01711          ++yy_cp;
01712          }
01713 
01714       yy_current_state = -yy_current_state;
01715 
01716 yy_find_action:
01717       yy_act = yy_accept[yy_current_state];
01718 
01719       YY_DO_BEFORE_ACTION;
01720 
01721 do_action:  /* This label is used only to access EOF actions. */
01722 
01723       switch ( yy_act )
01724    { /* beginning of action switch */
01725          case 0: /* must back up */
01726          /* undo the effects of YY_DO_BEFORE_ACTION */
01727          *yy_cp = yyg->yy_hold_char;
01728          yy_cp = yyg->yy_last_accepting_cpos + 1;
01729          yy_current_state = yyg->yy_last_accepting_state;
01730          goto yy_find_action;
01731 
01732 case 1:
01733 YY_RULE_SETUP
01734 #line 107 "ast_expr2.fl"
01735 { SET_COLUMNS; SET_STRING; return TOK_OR;}
01736    YY_BREAK
01737 case 2:
01738 YY_RULE_SETUP
01739 #line 108 "ast_expr2.fl"
01740 { SET_COLUMNS; SET_STRING; return TOK_AND;}
01741    YY_BREAK
01742 case 3:
01743 YY_RULE_SETUP
01744 #line 109 "ast_expr2.fl"
01745 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
01746    YY_BREAK
01747 case 4:
01748 YY_RULE_SETUP
01749 #line 110 "ast_expr2.fl"
01750 { SET_COLUMNS; SET_STRING; return TOK_OR;}
01751    YY_BREAK
01752 case 5:
01753 YY_RULE_SETUP
01754 #line 111 "ast_expr2.fl"
01755 { SET_COLUMNS; SET_STRING; return TOK_AND;}
01756    YY_BREAK
01757 case 6:
01758 YY_RULE_SETUP
01759 #line 112 "ast_expr2.fl"
01760 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
01761    YY_BREAK
01762 case 7:
01763 YY_RULE_SETUP
01764 #line 113 "ast_expr2.fl"
01765 { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
01766    YY_BREAK
01767 case 8:
01768 YY_RULE_SETUP
01769 #line 114 "ast_expr2.fl"
01770 { SET_COLUMNS; SET_STRING; return TOK_GT;}
01771    YY_BREAK
01772 case 9:
01773 YY_RULE_SETUP
01774 #line 115 "ast_expr2.fl"
01775 { SET_COLUMNS; SET_STRING; return TOK_LT;}
01776    YY_BREAK
01777 case 10:
01778 YY_RULE_SETUP
01779 #line 116 "ast_expr2.fl"
01780 { SET_COLUMNS; SET_STRING; return TOK_GE;}
01781    YY_BREAK
01782 case 11:
01783 YY_RULE_SETUP
01784 #line 117 "ast_expr2.fl"
01785 { SET_COLUMNS; SET_STRING; return TOK_LE;}
01786    YY_BREAK
01787 case 12:
01788 YY_RULE_SETUP
01789 #line 118 "ast_expr2.fl"
01790 { SET_COLUMNS; SET_STRING; return TOK_NE;}
01791    YY_BREAK
01792 case 13:
01793 YY_RULE_SETUP
01794 #line 119 "ast_expr2.fl"
01795 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
01796    YY_BREAK
01797 case 14:
01798 YY_RULE_SETUP
01799 #line 120 "ast_expr2.fl"
01800 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
01801    YY_BREAK
01802 case 15:
01803 YY_RULE_SETUP
01804 #line 121 "ast_expr2.fl"
01805 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
01806    YY_BREAK
01807 case 16:
01808 YY_RULE_SETUP
01809 #line 122 "ast_expr2.fl"
01810 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
01811    YY_BREAK
01812 case 17:
01813 YY_RULE_SETUP
01814 #line 123 "ast_expr2.fl"
01815 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
01816    YY_BREAK
01817 case 18:
01818 YY_RULE_SETUP
01819 #line 124 "ast_expr2.fl"
01820 { SET_COLUMNS; SET_STRING; return TOK_COND;}
01821    YY_BREAK
01822 case 19:
01823 YY_RULE_SETUP
01824 #line 125 "ast_expr2.fl"
01825 { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
01826    YY_BREAK
01827 case 20:
01828 YY_RULE_SETUP
01829 #line 126 "ast_expr2.fl"
01830 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
01831    YY_BREAK
01832 case 21:
01833 YY_RULE_SETUP
01834 #line 127 "ast_expr2.fl"
01835 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
01836    YY_BREAK
01837 case 22:
01838 YY_RULE_SETUP
01839 #line 128 "ast_expr2.fl"
01840 { SET_COLUMNS; SET_STRING; return TOK_LP;}
01841    YY_BREAK
01842 case 23:
01843 YY_RULE_SETUP
01844 #line 129 "ast_expr2.fl"
01845 { SET_COLUMNS; SET_STRING; return TOK_RP;}
01846    YY_BREAK
01847 case 24:
01848 YY_RULE_SETUP
01849 #line 130 "ast_expr2.fl"
01850 {
01851       /* gather the contents of ${} expressions, with trailing stuff,
01852        * into a single TOKEN.
01853        * They are much more complex now than they used to be
01854        */
01855       curlycount = 0;
01856       BEGIN(var);
01857       yymore();
01858    }
01859    YY_BREAK
01860 case 25:
01861 YY_RULE_SETUP
01862 #line 140 "ast_expr2.fl"
01863 {}
01864    YY_BREAK
01865 case 26:
01866 /* rule 26 can match eol */
01867 YY_RULE_SETUP
01868 #line 141 "ast_expr2.fl"
01869 {SET_COLUMNS; SET_STRING; return TOKEN;}
01870    YY_BREAK
01871 case 27:
01872 /* rule 27 can match eol */
01873 YY_RULE_SETUP
01874 #line 143 "ast_expr2.fl"
01875 {/* what to do with eol */}
01876    YY_BREAK
01877 case 28:
01878 YY_RULE_SETUP
01879 #line 144 "ast_expr2.fl"
01880 {
01881       SET_COLUMNS;
01882       /* the original behavior of the expression parser was
01883        * to bring in numbers as a numeric string
01884        */
01885       SET_NUMERIC_STRING;
01886       return TOKEN;
01887    }
01888    YY_BREAK
01889 case 29:
01890 YY_RULE_SETUP
01891 #line 153 "ast_expr2.fl"
01892 {
01893       SET_COLUMNS;
01894       SET_STRING;
01895       return TOKEN;
01896    }
01897    YY_BREAK
01898 case 30:
01899 /* rule 30 can match eol */
01900 YY_RULE_SETUP
01901 #line 160 "ast_expr2.fl"
01902 {
01903       curlycount--;
01904       if (curlycount < 0) {
01905          BEGIN(trail);
01906          yymore();
01907       } else {
01908          yymore();
01909       }
01910    }
01911    YY_BREAK
01912 case 31:
01913 /* rule 31 can match eol */
01914 YY_RULE_SETUP
01915 #line 170 "ast_expr2.fl"
01916 {
01917       curlycount++;
01918       yymore();
01919    }
01920    YY_BREAK
01921 case 32:
01922 YY_RULE_SETUP
01923 #line 176 "ast_expr2.fl"
01924 {
01925       BEGIN(0);
01926       SET_COLUMNS;
01927       SET_STRING;
01928       return TOKEN;
01929    }
01930    YY_BREAK
01931 case 33:
01932 /* rule 33 can match eol */
01933 YY_RULE_SETUP
01934 #line 183 "ast_expr2.fl"
01935 {
01936       char c = yytext[yyleng-1];
01937       BEGIN(0);
01938       unput(c);
01939       SET_COLUMNS;
01940       SET_STRING;
01941       return TOKEN;
01942    }
01943    YY_BREAK
01944 case 34:
01945 YY_RULE_SETUP
01946 #line 192 "ast_expr2.fl"
01947 {
01948       curlycount = 0;
01949       BEGIN(var);
01950       yymore();
01951    }
01952    YY_BREAK
01953 case YY_STATE_EOF(trail):
01954 #line 198 "ast_expr2.fl"
01955 {
01956       BEGIN(0);
01957       SET_COLUMNS;
01958       SET_STRING;
01959       return TOKEN;
01960       /*actually, if an expr is only a variable ref, this could happen a LOT */
01961    }
01962    YY_BREAK
01963 case 35:
01964 YY_RULE_SETUP
01965 #line 206 "ast_expr2.fl"
01966 ECHO;
01967    YY_BREAK
01968 #line 1969 "ast_expr2f.c"
01969 case YY_STATE_EOF(INITIAL):
01970 case YY_STATE_EOF(var):
01971    yyterminate();
01972 
01973    case YY_END_OF_BUFFER:
01974       {
01975       /* Amount of text matched not including the EOB char. */
01976       int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
01977 
01978       /* Undo the effects of YY_DO_BEFORE_ACTION. */
01979       *yy_cp = yyg->yy_hold_char;
01980       YY_RESTORE_YY_MORE_OFFSET
01981 
01982       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
01983          {
01984          /* We're scanning a new file or input source.  It's
01985           * possible that this happened because the user
01986           * just pointed yyin at a new source and called
01987           * ast_yylex().  If so, then we have to assure
01988           * consistency between YY_CURRENT_BUFFER and our
01989           * globals.  Here is the right place to do so, because
01990           * this is the first action (other than possibly a
01991           * back-up) that will match for the new input source.
01992           */
01993          yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
01994          YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
01995          YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
01996          }
01997 
01998       /* Note that here we test for yy_c_buf_p "<=" to the position
01999        * of the first EOB in the buffer, since yy_c_buf_p will
02000        * already have been incremented past the NUL character
02001        * (since all states make transitions on EOB to the
02002        * end-of-buffer state).  Contrast this with the test
02003        * in input().
02004        */
02005       if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
02006          { /* This was really a NUL. */
02007          yy_state_type yy_next_state;
02008 
02009          yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
02010 
02011          yy_current_state = yy_get_previous_state( yyscanner );
02012 
02013          /* Okay, we're now positioned to make the NUL
02014           * transition.  We couldn't have
02015           * yy_get_previous_state() go ahead and do it
02016           * for us because it doesn't know how to deal
02017           * with the possibility of jamming (and we don't
02018           * want to build jamming into it because then it
02019           * will run more slowly).
02020           */
02021 
02022          yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
02023 
02024          yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02025 
02026          if ( yy_next_state )
02027             {
02028             /* Consume the NUL. */
02029             yy_cp = ++yyg->yy_c_buf_p;
02030             yy_current_state = yy_next_state;
02031             goto yy_match;
02032             }
02033 
02034          else
02035             {
02036             yy_cp = yyg->yy_c_buf_p;
02037             goto yy_find_action;
02038             }
02039          }
02040 
02041       else switch ( yy_get_next_buffer( yyscanner ) )
02042          {
02043          case EOB_ACT_END_OF_FILE:
02044             {
02045             yyg->yy_did_buffer_switch_on_eof = 0;
02046 
02047             if ( ast_yywrap(yyscanner ) )
02048                {
02049                /* Note: because we've taken care in
02050                 * yy_get_next_buffer() to have set up
02051                 * yytext, we can now set up
02052                 * yy_c_buf_p so that if some total
02053                 * hoser (like flex itself) wants to
02054                 * call the scanner after we return the
02055                 * YY_NULL, it'll still work - another
02056                 * YY_NULL will get returned.
02057                 */
02058                yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
02059 
02060                yy_act = YY_STATE_EOF(YY_START);
02061                goto do_action;
02062                }
02063 
02064             else
02065                {
02066                if ( ! yyg->yy_did_buffer_switch_on_eof )
02067                   YY_NEW_FILE;
02068                }
02069             break;
02070             }
02071 
02072          case EOB_ACT_CONTINUE_SCAN:
02073             yyg->yy_c_buf_p =
02074                yyg->yytext_ptr + yy_amount_of_matched_text;
02075 
02076             yy_current_state = yy_get_previous_state( yyscanner );
02077 
02078             yy_cp = yyg->yy_c_buf_p;
02079             yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02080             goto yy_match;
02081 
02082          case EOB_ACT_LAST_MATCH:
02083             yyg->yy_c_buf_p =
02084             &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
02085 
02086             yy_current_state = yy_get_previous_state( yyscanner );
02087 
02088             yy_cp = yyg->yy_c_buf_p;
02089             yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02090             goto yy_find_action;
02091          }
02092       break;
02093       }
02094 
02095    default:
02096       YY_FATAL_ERROR(
02097          "fatal flex scanner internal error--no action found" );
02098    } /* end of action switch */
02099       } /* end of scanning one token */
02100 } /* end of ast_yylex */
02101 
02102 /* yy_get_next_buffer - try to read in a new buffer
02103  *
02104  * Returns a code representing an action:
02105  * EOB_ACT_LAST_MATCH -
02106  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
02107  * EOB_ACT_END_OF_FILE - end of file
02108  */
02109 static int yy_get_next_buffer (yyscan_t yyscanner)
02110 {
02111     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02112    register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
02113    register char *source = yyg->yytext_ptr;
02114    register int number_to_move, i;
02115    int ret_val;
02116 
02117    if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
02118       YY_FATAL_ERROR(
02119       "fatal flex scanner internal error--end of buffer missed" );
02120 
02121    if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
02122       { /* Don't try to fill the buffer, so this is an EOF. */
02123       if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
02124          {
02125          /* We matched a single character, the EOB, so
02126           * treat this as a final EOF.
02127           */
02128          return EOB_ACT_END_OF_FILE;
02129          }
02130 
02131       else
02132          {
02133          /* We matched some text prior to the EOB, first
02134           * process it.
02135           */
02136          return EOB_ACT_LAST_MATCH;
02137          }
02138       }
02139 
02140    /* Try to read more data. */
02141 
02142    /* First move last chars to start of buffer. */
02143    number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
02144 
02145    for ( i = 0; i < number_to_move; ++i )
02146       *(dest++) = *(source++);
02147 
02148    if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
02149       /* don't do the read, it's not guaranteed to return an EOF,
02150        * just force an EOF
02151        */
02152       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
02153 
02154    else
02155       {
02156          int num_to_read =
02157          YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
02158 
02159       while ( num_to_read <= 0 )
02160          { /* Not enough room in the buffer - grow it. */
02161 
02162          /* just a shorter name for the current buffer */
02163          YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
02164 
02165          int yy_c_buf_p_offset =
02166             (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
02167 
02168          if ( b->yy_is_our_buffer )
02169             {
02170             int new_size = b->yy_buf_size * 2;
02171 
02172             if ( new_size <= 0 )
02173                b->yy_buf_size += b->yy_buf_size / 8;
02174             else
02175                b->yy_buf_size *= 2;
02176 
02177             b->yy_ch_buf = (char *)
02178                /* Include room in for 2 EOB chars. */
02179                ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
02180             }
02181          else
02182             /* Can't grow it, we don't own it. */
02183             b->yy_ch_buf = 0;
02184 
02185          if ( ! b->yy_ch_buf )
02186             YY_FATAL_ERROR(
02187             "fatal error - scanner input buffer overflow" );
02188 
02189          yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
02190 
02191          num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
02192                   number_to_move - 1;
02193 
02194          }
02195 
02196       if ( num_to_read > YY_READ_BUF_SIZE )
02197          num_to_read = YY_READ_BUF_SIZE;
02198 
02199       /* Read in more data. */
02200       YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
02201          yyg->yy_n_chars, (size_t) num_to_read );
02202 
02203       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02204       }
02205 
02206    if ( yyg->yy_n_chars == 0 )
02207       {
02208       if ( number_to_move == YY_MORE_ADJ )
02209          {
02210          ret_val = EOB_ACT_END_OF_FILE;
02211          ast_yyrestart(yyin  ,yyscanner);
02212          }
02213 
02214       else
02215          {
02216          ret_val = EOB_ACT_LAST_MATCH;
02217          YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
02218             YY_BUFFER_EOF_PENDING;
02219          }
02220       }
02221 
02222    else
02223       ret_val = EOB_ACT_CONTINUE_SCAN;
02224 
02225    if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
02226       /* Extend the array by 50%, plus the number we really need. */
02227       yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
02228       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) ast_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
02229       if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
02230          YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
02231    }
02232 
02233    yyg->yy_n_chars += number_to_move;
02234    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
02235    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
02236 
02237    yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
02238 
02239    return ret_val;
02240 }
02241 
02242 /* yy_get_previous_state - get the state just before the EOB char was reached */
02243 
02244     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
02245 {
02246    register yy_state_type yy_current_state;
02247    register char *yy_cp;
02248     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02249 
02250    yy_current_state = yyg->yy_start;
02251 
02252    for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
02253       {
02254       if ( *yy_cp )
02255          {
02256          yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
02257          }
02258       else
02259          yy_current_state = yy_NUL_trans[yy_current_state];
02260       if ( yy_accept[yy_current_state] )
02261          {
02262          yyg->yy_last_accepting_state = yy_current_state;
02263          yyg->yy_last_accepting_cpos = yy_cp;
02264          }
02265       }
02266 
02267    return yy_current_state;
02268 }
02269 
02270 /* yy_try_NUL_trans - try to make a transition on the NUL character
02271  *
02272  * synopsis
02273  * next_state = yy_try_NUL_trans( current_state );
02274  */
02275     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
02276 {
02277    register int yy_is_jam;
02278     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
02279    register char *yy_cp = yyg->yy_c_buf_p;
02280 
02281    yy_current_state = yy_NUL_trans[yy_current_state];
02282    yy_is_jam = (yy_current_state == 0);
02283 
02284    if ( ! yy_is_jam )
02285       {
02286       if ( yy_accept[yy_current_state] )
02287          {
02288          yyg->yy_last_accepting_state = yy_current_state;
02289          yyg->yy_last_accepting_cpos = yy_cp;
02290          }
02291       }
02292 
02293    return yy_is_jam ? 0 : yy_current_state;
02294 }
02295 
02296     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
02297 {
02298    register char *yy_cp;
02299     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02300 
02301     yy_cp = yyg->yy_c_buf_p;
02302 
02303    /* undo effects of setting up yytext */
02304    *yy_cp = yyg->yy_hold_char;
02305 
02306    if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02307       { /* need to shift things up to make room */
02308       /* +2 for EOB chars. */
02309       register int number_to_move = yyg->yy_n_chars + 2;
02310       register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
02311                YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
02312       register char *source =
02313             &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
02314 
02315       while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
02316          *--dest = *--source;
02317 
02318       yy_cp += (int) (dest - source);
02319       yy_bp += (int) (dest - source);
02320       YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
02321          yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
02322 
02323       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02324          YY_FATAL_ERROR( "flex scanner push-back overflow" );
02325       }
02326 
02327    *--yy_cp = (char) c;
02328 
02329    yyg->yytext_ptr = yy_bp;
02330    yyg->yy_hold_char = *yy_cp;
02331    yyg->yy_c_buf_p = yy_cp;
02332 }
02333 
02334 #ifndef YY_NO_INPUT
02335 #ifdef __cplusplus
02336     static int yyinput (yyscan_t yyscanner)
02337 #else
02338     static int input  (yyscan_t yyscanner)
02339 #endif
02340 
02341 {
02342    int c;
02343     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02344 
02345    *yyg->yy_c_buf_p = yyg->yy_hold_char;
02346 
02347    if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
02348       {
02349       /* yy_c_buf_p now points to the character we want to return.
02350        * If this occurs *before* the EOB characters, then it's a
02351        * valid NUL; if not, then we've hit the end of the buffer.
02352        */
02353       if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
02354          /* This was really a NUL. */
02355          *yyg->yy_c_buf_p = '\0';
02356 
02357       else
02358          { /* need more input */
02359          int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
02360          ++yyg->yy_c_buf_p;
02361 
02362          switch ( yy_get_next_buffer( yyscanner ) )
02363             {
02364             case EOB_ACT_LAST_MATCH:
02365                /* This happens because yy_g_n_b()
02366                 * sees that we've accumulated a
02367                 * token and flags that we need to
02368                 * try matching the token before
02369                 * proceeding.  But for input(),
02370                 * there's no matching to consider.
02371                 * So convert the EOB_ACT_LAST_MATCH
02372                 * to EOB_ACT_END_OF_FILE.
02373                 */
02374 
02375                /* Reset buffer status. */
02376                ast_yyrestart(yyin ,yyscanner);
02377 
02378                /*FALLTHROUGH*/
02379 
02380             case EOB_ACT_END_OF_FILE:
02381                {
02382                if ( ast_yywrap(yyscanner ) )
02383                   return EOF;
02384 
02385                if ( ! yyg->yy_did_buffer_switch_on_eof )
02386                   YY_NEW_FILE;
02387 #ifdef __cplusplus
02388                return yyinput(yyscanner);
02389 #else
02390                return input(yyscanner);
02391 #endif
02392                }
02393 
02394             case EOB_ACT_CONTINUE_SCAN:
02395                yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
02396                break;
02397             }
02398          }
02399       }
02400 
02401    c = *(unsigned char *) yyg->yy_c_buf_p;   /* cast for 8-bit char's */
02402    *yyg->yy_c_buf_p = '\0';   /* preserve yytext */
02403    yyg->yy_hold_char = *++yyg->yy_c_buf_p;
02404 
02405    return c;
02406 }
02407 #endif   /* ifndef YY_NO_INPUT */
02408 
02409 /** Immediately switch to a different input stream.
02410  * @param input_file A readable stream.
02411  * @param yyscanner The scanner object.
02412  * @note This function does not reset the start condition to @c INITIAL .
02413  */
02414     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
02415 {
02416     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02417 
02418    if ( ! YY_CURRENT_BUFFER ){
02419         ast_yyensure_buffer_stack (yyscanner);
02420       YY_CURRENT_BUFFER_LVALUE =
02421             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
02422    }
02423 
02424    ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
02425    ast_yy_load_buffer_state(yyscanner );
02426 }
02427 
02428 /** Switch to a different input buffer.
02429  * @param new_buffer The new input buffer.
02430  * @param yyscanner The scanner object.
02431  */
02432     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
02433 {
02434     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02435 
02436    /* TODO. We should be able to replace this entire function body
02437     * with
02438     *    ast_yypop_buffer_state();
02439     *    ast_yypush_buffer_state(new_buffer);
02440      */
02441    ast_yyensure_buffer_stack (yyscanner);
02442    if ( YY_CURRENT_BUFFER == new_buffer )
02443       return;
02444 
02445    if ( YY_CURRENT_BUFFER )
02446       {
02447       /* Flush out information for old buffer. */
02448       *yyg->yy_c_buf_p = yyg->yy_hold_char;
02449       YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02450       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02451       }
02452 
02453    YY_CURRENT_BUFFER_LVALUE = new_buffer;
02454    ast_yy_load_buffer_state(yyscanner );
02455 
02456    /* We don't actually know whether we did this switch during
02457     * EOF (ast_yywrap()) processing, but the only time this flag
02458     * is looked at is after ast_yywrap() is called, so it's safe
02459     * to go ahead and always set it.
02460     */
02461    yyg->yy_did_buffer_switch_on_eof = 1;
02462 }
02463 
02464 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
02465 {
02466     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02467    yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
02468    yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
02469    yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
02470    yyg->yy_hold_char = *yyg->yy_c_buf_p;
02471 }
02472 
02473 /** Allocate and initialize an input buffer state.
02474  * @param file A readable stream.
02475  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
02476  * @param yyscanner The scanner object.
02477  * @return the allocated buffer state.
02478  */
02479     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
02480 {
02481    YY_BUFFER_STATE b;
02482     
02483    b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02484    if ( ! b )
02485       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
02486 
02487    b->yy_buf_size = size;
02488 
02489    /* yy_ch_buf has to be 2 characters longer than the size given because
02490     * we need to put in 2 end-of-buffer characters.
02491     */
02492    b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
02493    if ( ! b->yy_ch_buf )
02494       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
02495 
02496    b->yy_is_our_buffer = 1;
02497 
02498    ast_yy_init_buffer(b,file ,yyscanner);
02499 
02500    return b;
02501 }
02502 
02503 /** Destroy the buffer.
02504  * @param b a buffer created with ast_yy_create_buffer()
02505  * @param yyscanner The scanner object.
02506  */
02507     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02508 {
02509     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02510 
02511    if ( ! b )
02512       return;
02513 
02514    if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
02515       YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
02516 
02517    if ( b->yy_is_our_buffer )
02518       ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
02519 
02520    ast_yyfree((void *) b ,yyscanner );
02521 }
02522 
02523 #ifndef __cplusplus
02524 extern int isatty (int );
02525 #endif /* __cplusplus */
02526     
02527 /* Initializes or reinitializes a buffer.
02528  * This function is sometimes called more than once on the same buffer,
02529  * such as during a ast_yyrestart() or at EOF.
02530  */
02531     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
02532 
02533 {
02534    int oerrno = errno;
02535     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02536 
02537    ast_yy_flush_buffer(b ,yyscanner);
02538 
02539    b->yy_input_file = file;
02540    b->yy_fill_buffer = 1;
02541 
02542     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
02543      * called from ast_yyrestart() or through yy_get_next_buffer.
02544      * In that case, we don't want to reset the lineno or column.
02545      */
02546     if (b != YY_CURRENT_BUFFER){
02547         b->yy_bs_lineno = 1;
02548         b->yy_bs_column = 0;
02549     }
02550 
02551         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
02552     
02553    errno = oerrno;
02554 }
02555 
02556 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
02557  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
02558  * @param yyscanner The scanner object.
02559  */
02560     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02561 {
02562     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02563    if ( ! b )
02564       return;
02565 
02566    b->yy_n_chars = 0;
02567 
02568    /* We always need two end-of-buffer characters.  The first causes
02569     * a transition to the end-of-buffer state.  The second causes
02570     * a jam in that state.
02571     */
02572    b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
02573    b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
02574 
02575    b->yy_buf_pos = &b->yy_ch_buf[0];
02576 
02577    b->yy_at_bol = 1;
02578    b->yy_buffer_status = YY_BUFFER_NEW;
02579 
02580    if ( b == YY_CURRENT_BUFFER )
02581       ast_yy_load_buffer_state(yyscanner );
02582 }
02583 
02584 /** Pushes the new state onto the stack. The new state becomes
02585  *  the current state. This function will allocate the stack
02586  *  if necessary.
02587  *  @param new_buffer The new state.
02588  *  @param yyscanner The scanner object.
02589  */
02590 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
02591 {
02592     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02593    if (new_buffer == NULL)
02594       return;
02595 
02596    ast_yyensure_buffer_stack(yyscanner);
02597 
02598    /* This block is copied from ast_yy_switch_to_buffer. */
02599    if ( YY_CURRENT_BUFFER )
02600       {
02601       /* Flush out information for old buffer. */
02602       *yyg->yy_c_buf_p = yyg->yy_hold_char;
02603       YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02604       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02605       }
02606 
02607    /* Only push if top exists. Otherwise, replace top. */
02608    if (YY_CURRENT_BUFFER)
02609       yyg->yy_buffer_stack_top++;
02610    YY_CURRENT_BUFFER_LVALUE = new_buffer;
02611 
02612    /* copied from ast_yy_switch_to_buffer. */
02613    ast_yy_load_buffer_state(yyscanner );
02614    yyg->yy_did_buffer_switch_on_eof = 1;
02615 }
02616 
02617 /** Removes and deletes the top of the stack, if present.
02618  *  The next element becomes the new top.
02619  *  @param yyscanner The scanner object.
02620  */
02621 void ast_yypop_buffer_state (yyscan_t yyscanner)
02622 {
02623     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02624    if (!YY_CURRENT_BUFFER)
02625       return;
02626 
02627    ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
02628    YY_CURRENT_BUFFER_LVALUE = NULL;
02629    if (yyg->yy_buffer_stack_top > 0)
02630       --yyg->yy_buffer_stack_top;
02631 
02632    if (YY_CURRENT_BUFFER) {
02633       ast_yy_load_buffer_state(yyscanner );
02634       yyg->yy_did_buffer_switch_on_eof = 1;
02635    }
02636 }
02637 
02638 /* Allocates the stack if it does not exist.
02639  *  Guarantees space for at least one push.
02640  */
02641 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
02642 {
02643    int num_to_alloc;
02644     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02645 
02646    if (!yyg->yy_buffer_stack) {
02647 
02648       /* First allocation is just for 2 elements, since we don't know if this
02649        * scanner will even need a stack. We use 2 instead of 1 to avoid an
02650        * immediate realloc on the next call.
02651          */
02652       num_to_alloc = 1;
02653       yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
02654                         (num_to_alloc * sizeof(struct yy_buffer_state*)
02655                         , yyscanner);
02656       if ( ! yyg->yy_buffer_stack )
02657          YY_FATAL_ERROR( "out of dynamic memory in ast_yyensure_buffer_stack()" );
02658                           
02659       memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
02660             
02661       yyg->yy_buffer_stack_max = num_to_alloc;
02662       yyg->yy_buffer_stack_top = 0;
02663       return;
02664    }
02665 
02666    if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
02667 
02668       /* Increase the buffer to prepare for a possible push. */
02669       int grow_size = 8 /* arbitrary grow size */;
02670 
02671       num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
02672       yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
02673                         (yyg->yy_buffer_stack,
02674                         num_to_alloc * sizeof(struct yy_buffer_state*)
02675                         , yyscanner);
02676       if ( ! yyg->yy_buffer_stack )
02677          YY_FATAL_ERROR( "out of dynamic memory in ast_yyensure_buffer_stack()" );
02678 
02679       /* zero only the new slots.*/
02680       memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
02681       yyg->yy_buffer_stack_max = num_to_alloc;
02682    }
02683 }
02684 
02685 /** Setup the input buffer state to scan directly from a user-specified character buffer.
02686  * @param base the character buffer
02687  * @param size the size in bytes of the character buffer
02688  * @param yyscanner The scanner object.
02689  * @return the newly allocated buffer state object. 
02690  */
02691 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
02692 {
02693    YY_BUFFER_STATE b;
02694     
02695    if ( size < 2 ||
02696         base[size-2] != YY_END_OF_BUFFER_CHAR ||
02697         base[size-1] != YY_END_OF_BUFFER_CHAR )
02698       /* They forgot to leave room for the EOB's. */
02699       return 0;
02700 
02701    b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02702    if ( ! b )
02703       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
02704 
02705    b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
02706    b->yy_buf_pos = b->yy_ch_buf = base;
02707    b->yy_is_our_buffer = 0;
02708    b->yy_input_file = 0;
02709    b->yy_n_chars = b->yy_buf_size;
02710    b->yy_is_interactive = 0;
02711    b->yy_at_bol = 1;
02712    b->yy_fill_buffer = 0;
02713    b->yy_buffer_status = YY_BUFFER_NEW;
02714 
02715    ast_yy_switch_to_buffer(b ,yyscanner );
02716 
02717    return b;
02718 }
02719 
02720 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
02721  * scan from a @e copy of @a str.
02722  * @param yystr a NUL-terminated string to scan
02723  * @param yyscanner The scanner object.
02724  * @return the newly allocated buffer state object.
02725  * @note If you want to scan bytes that may contain NUL values, then use
02726  *       ast_yy_scan_bytes() instead.
02727  */
02728 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
02729 {
02730     
02731    return ast_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
02732 }
02733 
02734 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
02735  * scan from a @e copy of @a bytes.
02736  * @param bytes the byte buffer to scan
02737  * @param len the number of bytes in the buffer pointed to by @a bytes.
02738  * @param yyscanner The scanner object.
02739  * @return the newly allocated buffer state object.
02740  */
02741 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
02742 {
02743    YY_BUFFER_STATE b;
02744    char *buf;
02745    yy_size_t n;
02746    int i;
02747     
02748    /* Get memory for full buffer, including space for trailing EOB's. */
02749    n = _yybytes_len + 2;
02750    buf = (char *) ast_yyalloc(n ,yyscanner );
02751    if ( ! buf )
02752       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
02753 
02754    for ( i = 0; i < _yybytes_len; ++i )
02755       buf[i] = yybytes[i];
02756 
02757    buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
02758 
02759    b = ast_yy_scan_buffer(buf,n ,yyscanner);
02760    if ( ! b )
02761       YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
02762 
02763    /* It's okay to grow etc. this buffer, and we should throw it
02764     * away when we're done.
02765     */
02766    b->yy_is_our_buffer = 1;
02767 
02768    return b;
02769 }
02770 
02771 #ifndef YY_EXIT_FAILURE
02772 #define YY_EXIT_FAILURE 2
02773 #endif
02774 
02775 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
02776 {
02777       (void) fprintf( stderr, "%s\n", msg );
02778    exit( YY_EXIT_FAILURE );
02779 }
02780 
02781 /* Redefine yyless() so it works in section 3 code. */
02782 
02783 #undef yyless
02784 #define yyless(n) \
02785    do \
02786       { \
02787       /* Undo effects of setting up yytext. */ \
02788         int yyless_macro_arg = (n); \
02789         YY_LESS_LINENO(yyless_macro_arg);\
02790       yytext[yyleng] = yyg->yy_hold_char; \
02791       yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
02792       yyg->yy_hold_char = *yyg->yy_c_buf_p; \
02793       *yyg->yy_c_buf_p = '\0'; \
02794       yyleng = yyless_macro_arg; \
02795       } \
02796    while ( 0 )
02797 
02798 /* Accessor  methods (get/set functions) to struct members. */
02799 
02800 /** Get the user-defined data for this scanner.
02801  * @param yyscanner The scanner object.
02802  */
02803 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
02804 {
02805     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02806     return yyextra;
02807 }
02808 
02809 /** Get the current line number.
02810  * @param yyscanner The scanner object.
02811  */
02812 int ast_yyget_lineno  (yyscan_t yyscanner)
02813 {
02814     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02815     
02816         if (! YY_CURRENT_BUFFER)
02817             return 0;
02818     
02819     return yylineno;
02820 }
02821 
02822 /** Get the current column number.
02823  * @param yyscanner The scanner object.
02824  */
02825 int ast_yyget_column  (yyscan_t yyscanner)
02826 {
02827     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02828     
02829         if (! YY_CURRENT_BUFFER)
02830             return 0;
02831     
02832     return yycolumn;
02833 }
02834 
02835 /** Get the input stream.
02836  * @param yyscanner The scanner object.
02837  */
02838 FILE *ast_yyget_in  (yyscan_t yyscanner)
02839 {
02840     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02841     return yyin;
02842 }
02843 
02844 /** Get the output stream.
02845  * @param yyscanner The scanner object.
02846  */
02847 FILE *ast_yyget_out  (yyscan_t yyscanner)
02848 {
02849     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02850     return yyout;
02851 }
02852 
02853 /** Get the length of the current token.
02854  * @param yyscanner The scanner object.
02855  */
02856 int ast_yyget_leng  (yyscan_t yyscanner)
02857 {
02858     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02859     return yyleng;
02860 }
02861 
02862 /** Get the current token.
02863  * @param yyscanner The scanner object.
02864  */
02865 
02866 char *ast_yyget_text  (yyscan_t yyscanner)
02867 {
02868     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02869     return yytext;
02870 }
02871 
02872 /** Set the user-defined data. This data is never touched by the scanner.
02873  * @param user_defined The data to be associated with this scanner.
02874  * @param yyscanner The scanner object.
02875  */
02876 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
02877 {
02878     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02879     yyextra = user_defined ;
02880 }
02881 
02882 /** Set the current line number.
02883  * @param line_number
02884  * @param yyscanner The scanner object.
02885  */
02886 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
02887 {
02888     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02889 
02890         /* lineno is only valid if an input buffer exists. */
02891         if (! YY_CURRENT_BUFFER )
02892            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
02893     
02894     yylineno = line_number;
02895 }
02896 
02897 /** Set the current column.
02898  * @param line_number
02899  * @param yyscanner The scanner object.
02900  */
02901 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
02902 {
02903     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02904 
02905         /* column is only valid if an input buffer exists. */
02906         if (! YY_CURRENT_BUFFER )
02907            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
02908     
02909     yycolumn = column_no;
02910 }
02911 
02912 /** Set the input stream. This does not discard the current
02913  * input buffer.
02914  * @param in_str A readable stream.
02915  * @param yyscanner The scanner object.
02916  * @see ast_yy_switch_to_buffer
02917  */
02918 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
02919 {
02920     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02921     yyin = in_str ;
02922 }
02923 
02924 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
02925 {
02926     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02927     yyout = out_str ;
02928 }
02929 
02930 int ast_yyget_debug  (yyscan_t yyscanner)
02931 {
02932     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02933     return yy_flex_debug;
02934 }
02935 
02936 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
02937 {
02938     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02939     yy_flex_debug = bdebug ;
02940 }
02941 
02942 /* Accessor methods for yylval and yylloc */
02943 
02944 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
02945 {
02946     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02947     return yylval;
02948 }
02949 
02950 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
02951 {
02952     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02953     yylval = yylval_param;
02954 }
02955 
02956 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
02957 {
02958     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02959     return yylloc;
02960 }
02961     
02962 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
02963 {
02964     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02965     yylloc = yylloc_param;
02966 }
02967     
02968 /* User-visible API */
02969 
02970 /* ast_yylex_init is special because it creates the scanner itself, so it is
02971  * the ONLY reentrant function that doesn't take the scanner as the last argument.
02972  * That's why we explicitly handle the declaration, instead of using our macros.
02973  */
02974 
02975 int ast_yylex_init(yyscan_t* ptr_yy_globals)
02976 
02977 {
02978     if (ptr_yy_globals == NULL){
02979         errno = EINVAL;
02980         return 1;
02981     }
02982 
02983     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
02984 
02985     if (*ptr_yy_globals == NULL){
02986         errno = ENOMEM;
02987         return 1;
02988     }
02989 
02990     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
02991     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
02992 
02993     return yy_init_globals ( *ptr_yy_globals );
02994 }
02995 
02996 /* ast_yylex_init_extra has the same functionality as ast_yylex_init, but follows the
02997  * convention of taking the scanner as the last argument. Note however, that
02998  * this is a *pointer* to a scanner, as it will be allocated by this call (and
02999  * is the reason, too, why this function also must handle its own declaration).
03000  * The user defined value in the first argument will be available to ast_yyalloc in
03001  * the yyextra field.
03002  */
03003 
03004 int ast_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
03005 
03006 {
03007     struct yyguts_t dummy_yyguts;
03008 
03009     ast_yyset_extra (yy_user_defined, &dummy_yyguts);
03010 
03011     if (ptr_yy_globals == NULL){
03012         errno = EINVAL;
03013         return 1;
03014     }
03015    
03016     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
03017    
03018     if (*ptr_yy_globals == NULL){
03019         errno = ENOMEM;
03020         return 1;
03021     }
03022     
03023     /* By setting to 0xAA, we expose bugs in
03024     yy_init_globals. Leave at 0x00 for releases. */
03025     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
03026     
03027     ast_yyset_extra (yy_user_defined, *ptr_yy_globals);
03028     
03029     return yy_init_globals ( *ptr_yy_globals );
03030 }
03031 
03032 static int yy_init_globals (yyscan_t yyscanner)
03033 {
03034     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
03035     /* Initialization is the same as for the non-reentrant scanner.
03036      * This function is called from ast_yylex_destroy(), so don't allocate here.
03037      */
03038 
03039     yyg->yy_buffer_stack = 0;
03040     yyg->yy_buffer_stack_top = 0;
03041     yyg->yy_buffer_stack_max = 0;
03042     yyg->yy_c_buf_p = (char *) 0;
03043     yyg->yy_init = 0;
03044     yyg->yy_start = 0;
03045 
03046     yyg->yy_start_stack_ptr = 0;
03047     yyg->yy_start_stack_depth = 0;
03048     yyg->yy_start_stack =  NULL;
03049 
03050 /* Defined in main.c */
03051 #ifdef YY_STDINIT
03052     yyin = stdin;
03053     yyout = stdout;
03054 #else
03055     yyin = (FILE *) 0;
03056     yyout = (FILE *) 0;
03057 #endif
03058 
03059     /* For future reference: Set errno on error, since we are called by
03060      * ast_yylex_init()
03061      */
03062     return 0;
03063 }
03064 
03065 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
03066 int ast_yylex_destroy  (yyscan_t yyscanner)
03067 {
03068     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
03069 
03070     /* Pop the buffer stack, destroying each element. */
03071    while(YY_CURRENT_BUFFER){
03072       ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
03073       YY_CURRENT_BUFFER_LVALUE = NULL;
03074       ast_yypop_buffer_state(yyscanner);
03075    }
03076 
03077    /* Destroy the stack itself. */
03078    ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
03079    yyg->yy_buffer_stack = NULL;
03080 
03081     /* Destroy the start condition stack. */
03082         ast_yyfree(yyg->yy_start_stack ,yyscanner );
03083         yyg->yy_start_stack = NULL;
03084 
03085     /* Reset the globals. This is important in a non-reentrant scanner so the next time
03086      * ast_yylex() is called, initialization will occur. */
03087     yy_init_globals( yyscanner);
03088 
03089     /* Destroy the main struct (reentrant only). */
03090     ast_yyfree ( yyscanner , yyscanner );
03091     yyscanner = NULL;
03092     return 0;
03093 }
03094 
03095 /*
03096  * Internal utility routines.
03097  */
03098 
03099 #ifndef yytext_ptr
03100 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
03101 {
03102    register int i;
03103    for ( i = 0; i < n; ++i )
03104       s1[i] = s2[i];
03105 }
03106 #endif
03107 
03108 #ifdef YY_NEED_STRLEN
03109 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
03110 {
03111    register int n;
03112    for ( n = 0; s[n]; ++n )
03113       ;
03114 
03115    return n;
03116 }
03117 #endif
03118 
03119 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
03120 {
03121    return (void *) malloc( size );
03122 }
03123 
03124 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
03125 {
03126    /* The cast to (char *) in the following accommodates both
03127     * implementations that use char* generic pointers, and those
03128     * that use void* generic pointers.  It works with the latter
03129     * because both ANSI C and C++ allow castless assignment from
03130     * any pointer type to void*, and deal with argument conversions
03131     * as though doing an assignment.
03132     */
03133    return (void *) realloc( (char *) ptr, size );
03134 }
03135 
03136 #define YYTABLES_NAME "yytables"
03137 
03138 #line 206 "ast_expr2.fl"
03139 
03140 
03141 
03142 /* I'm putting the interface routine to the whole parse here in the flexer input file
03143    mainly because of all the flexer initialization that has to be done. Shouldn't matter
03144    where it is, as long as it's somewhere. I didn't want to define a prototype for the
03145    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
03146    UGH! that would be inappropriate. */
03147 
03148 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
03149 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
03150 
03151 void ast_yyfree(void *ptr, yyscan_t yyscanner)
03152 {
03153       if (ptr) /* the normal generated ast_yyfree func just frees its first arg;
03154                     this get complaints on some systems, as sometimes this
03155                     arg is a nil ptr! It's usually not fatal, but is irritating! */
03156               free( (char *) ptr );
03157 }
03158 
03159 int ast_expr(char *expr, char *buf, int length)
03160 {
03161    struct parse_io io;
03162    int return_value = 0;
03163    
03164    memset(&io, 0, sizeof(io));
03165    io.string = expr;  /* to pass to the error routine */
03166    
03167    ast_yylex_init(&io.scanner);
03168    
03169    ast_yy_scan_string(expr, io.scanner);
03170    
03171    ast_yyparse ((void *) &io);
03172 
03173    ast_yylex_destroy(io.scanner);
03174 
03175    if (!io.val) {
03176       if (length > 1) {
03177          strcpy(buf, "0");
03178          return_value = 1;
03179       }
03180    } else {
03181       if (io.val->type == AST_EXPR_integer) {
03182          int res_length;
03183 
03184          res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
03185          return_value = (res_length <= length) ? res_length : length;
03186       } else {
03187 #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
03188          strncpy(buf, io.val->u.s, length - 1);
03189 #else /* !STANDALONE && !LOW_MEMORY */
03190          ast_copy_string(buf, io.val->u.s, length);
03191 #endif /* STANDALONE || LOW_MEMORY */
03192          return_value = strlen(buf);
03193          free(io.val->u.s);
03194       }
03195       free(io.val);
03196    }
03197    return return_value;
03198 }
03199 
03200 
03201 char extra_error_message[4095];
03202 int extra_error_message_supplied = 0;
03203 void  ast_expr_register_extra_error_info(char *message);
03204 void  ast_expr_clear_extra_error_info(void);
03205 
03206 void  ast_expr_register_extra_error_info(char *message)
03207 {
03208        extra_error_message_supplied=1;
03209        strcpy(extra_error_message, message);
03210 }
03211 
03212 void  ast_expr_clear_extra_error_info(void)
03213 {
03214        extra_error_message_supplied=0;
03215        extra_error_message[0] = 0;
03216 }
03217 
03218 static char *expr2_token_equivs1[] = 
03219 {
03220    "TOKEN",
03221    "TOK_COND",
03222    "TOK_COLONCOLON",
03223    "TOK_OR",
03224    "TOK_AND",
03225    "TOK_EQ",
03226    "TOK_GT",
03227    "TOK_LT",
03228    "TOK_GE",
03229    "TOK_LE",
03230    "TOK_NE",
03231    "TOK_PLUS",
03232    "TOK_MINUS",
03233    "TOK_MULT",
03234    "TOK_DIV",
03235    "TOK_MOD",
03236    "TOK_COMPL",
03237    "TOK_COLON",
03238    "TOK_EQTILDE",
03239    "TOK_RP",
03240    "TOK_LP"
03241 };
03242 
03243 static char *expr2_token_equivs2[] = 
03244 {
03245    "<token>",
03246    "?",
03247    "::",
03248    "|",
03249    "&",
03250    "=",
03251    ">",
03252    "<",
03253    ">=",
03254    "<=",
03255    "!=",
03256    "+",
03257    "-",
03258    "*",
03259    "/",
03260    "%",
03261    "!",
03262    ":",
03263    "=~",
03264    ")",
03265    "("
03266 };
03267 
03268 
03269 static char *expr2_token_subst(const char *mess)
03270 {
03271    /* calc a length, malloc, fill, and return; yyerror had better free it! */
03272    int len=0,i;
03273    const char *p;
03274    char *res, *s,*t;
03275    int expr2_token_equivs_entries = sizeof(expr2_token_equivs1)/sizeof(char*);
03276 
03277    for (p=mess; *p; p++) {
03278       for (i=0; i<expr2_token_equivs_entries; i++) {
03279          if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 )
03280          {
03281             len+=strlen(expr2_token_equivs2[i])+2;
03282             p += strlen(expr2_token_equivs1[i])-1;
03283             break;
03284          }
03285       }
03286       len++;
03287    }
03288    res = (char*)malloc(len+1);
03289    res[0] = 0;
03290    s = res;
03291    for (p=mess; *p;) {
03292       int found = 0;
03293       for (i=0; i<expr2_token_equivs_entries; i++) {
03294          if ( strncmp(p,expr2_token_equivs1[i],strlen(expr2_token_equivs1[i])) == 0 ) {
03295             *s++ = '\'';
03296             for (t=expr2_token_equivs2[i]; *t;) {
03297                *s++ = *t++;
03298             }
03299             *s++ = '\'';
03300             p += strlen(expr2_token_equivs1[i]);
03301             found = 1;
03302             break;
03303          }
03304       }
03305       if( !found )
03306          *s++ = *p++;
03307    }
03308    *s++ = 0;
03309    return res;
03310 }
03311 
03312 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
03313 {  
03314    struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
03315    char spacebuf[8000]; /* best safe than sorry */
03316    char spacebuf2[8000]; /* best safe than sorry */
03317    int i=0;
03318    char *s2 = expr2_token_subst(s);
03319    spacebuf[0] = 0;
03320    
03321    for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
03322                                                                         which is the same thing as... get this:
03323                                        yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
03324                                        I was tempted to just use yy_buf_pos in the STATE, but..., well:
03325                                           a. the yy_buf_pos is the current position in the buffer, which
03326                                              may not relate to the entire string/buffer because of the
03327                                              buffering.
03328                                           b. but, analysis of the situation is that when you use the
03329                                              ast_yy_scan_string func, it creates a single buffer the size of
03330                                              string, so the two would be the same... 
03331                                        so, in the end, the yycolumn macro is available, shorter, therefore easier. */
03332    spacebuf2[i++]='^';
03333    spacebuf2[i]= 0;
03334 
03335 #ifdef STANDALONE3
03336    /* easier to read in the standalone version */
03337    printf("ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
03338          (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
03339 #else
03340    ast_log(LOG_WARNING,"ast_yyerror(): %s syntax error: %s; Input:\n%s\n%s\n",  
03341          (extra_error_message_supplied?extra_error_message:""), s2, parseio->string,spacebuf2);
03342 #endif
03343 #ifndef STANDALONE
03344    ast_log(LOG_WARNING,"If you have questions, please refer to doc/channelvariables.txt in the asterisk source.\n");
03345 #endif
03346    free(s2);
03347    return(0);
03348 }
03349 

Generated on Wed Feb 11 11:59:44 2009 for Asterisk - the Open Source PBX by  doxygen 1.4.7