Merged revisions 72933 via svnmerge from
[asterisk/asterisk.git] / main / ast_expr2f.c
1 #line 2 "ast_expr2f.c"
2
3 #line 4 "ast_expr2f.c"
4
5 #define  YY_INT_ALIGNED short int
6
7 /* A lexical scanner generated by flex */
8
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12 #define YY_FLEX_SUBMINOR_VERSION 31
13 #if YY_FLEX_SUBMINOR_VERSION > 0
14 #define FLEX_BETA
15 #endif
16
17 /* First, we deal with  platform-specific or compiler-specific issues. */
18
19 /* begin standard C headers. */
20 #include <stdio.h>
21 #include <string.h>
22 #include <errno.h>
23 #include <stdlib.h>
24
25 /* end standard C headers. */
26
27 /* flex integer type definitions */
28
29 #ifndef FLEXINT_H
30 #define FLEXINT_H
31
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33
34 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
35 #include <inttypes.h>
36 typedef int8_t flex_int8_t;
37 typedef uint8_t flex_uint8_t;
38 typedef int16_t flex_int16_t;
39 typedef uint16_t flex_uint16_t;
40 typedef int32_t flex_int32_t;
41 typedef uint32_t flex_uint32_t;
42 #else
43 typedef signed char flex_int8_t;
44 typedef short int flex_int16_t;
45 typedef int flex_int32_t;
46 typedef unsigned char flex_uint8_t; 
47 typedef unsigned short int flex_uint16_t;
48 typedef unsigned int flex_uint32_t;
49 #endif /* ! C99 */
50
51 /* Limits of integral types. */
52 #ifndef INT8_MIN
53 #define INT8_MIN               (-128)
54 #endif
55 #ifndef INT16_MIN
56 #define INT16_MIN              (-32767-1)
57 #endif
58 #ifndef INT32_MIN
59 #define INT32_MIN              (-2147483647-1)
60 #endif
61 #ifndef INT8_MAX
62 #define INT8_MAX               (127)
63 #endif
64 #ifndef INT16_MAX
65 #define INT16_MAX              (32767)
66 #endif
67 #ifndef INT32_MAX
68 #define INT32_MAX              (2147483647)
69 #endif
70 #ifndef UINT8_MAX
71 #define UINT8_MAX              (255U)
72 #endif
73 #ifndef UINT16_MAX
74 #define UINT16_MAX             (65535U)
75 #endif
76 #ifndef UINT32_MAX
77 #define UINT32_MAX             (4294967295U)
78 #endif
79
80 #endif /* ! FLEXINT_H */
81
82 #ifdef __cplusplus
83
84 /* The "const" storage-class-modifier is valid. */
85 #define YY_USE_CONST
86
87 #else   /* ! __cplusplus */
88
89 #if __STDC__
90
91 #define YY_USE_CONST
92
93 #endif  /* __STDC__ */
94 #endif  /* ! __cplusplus */
95
96 #ifdef YY_USE_CONST
97 #define yyconst const
98 #else
99 #define yyconst
100 #endif
101
102 /* Returned upon end-of-file. */
103 #define YY_NULL 0
104
105 /* Promotes a possibly negative, possibly signed char to an unsigned
106  * integer for use as an array index.  If the signed char is negative,
107  * we want to instead treat it as an 8-bit unsigned char, hence the
108  * double cast.
109  */
110 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
111
112 /* An opaque pointer. */
113 #ifndef YY_TYPEDEF_YY_SCANNER_T
114 #define YY_TYPEDEF_YY_SCANNER_T
115 typedef void* yyscan_t;
116 #endif
117
118 /* For convenience, these vars (plus the bison vars far below)
119    are macros in the reentrant scanner. */
120 #define yyin yyg->yyin_r
121 #define yyout yyg->yyout_r
122 #define yyextra yyg->yyextra_r
123 #define yyleng yyg->yyleng_r
124 #define yytext yyg->yytext_r
125 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
126 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
127 #define yy_flex_debug yyg->yy_flex_debug_r
128
129 int ast_yylex_init (yyscan_t* scanner);
130
131 /* Enter a start condition.  This macro really ought to take a parameter,
132  * but we do it the disgusting crufty way forced on us by the ()-less
133  * definition of BEGIN.
134  */
135 #define BEGIN yyg->yy_start = 1 + 2 *
136
137 /* Translate the current start state into a value that can be later handed
138  * to BEGIN to return to the state.  The YYSTATE alias is for lex
139  * compatibility.
140  */
141 #define YY_START ((yyg->yy_start - 1) / 2)
142 #define YYSTATE YY_START
143
144 /* Action number for EOF rule of a given start state. */
145 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
146
147 /* Special action meaning "start processing a new file". */
148 #define YY_NEW_FILE ast_yyrestart(yyin ,yyscanner )
149
150 #define YY_END_OF_BUFFER_CHAR 0
151
152 /* Size of default input buffer. */
153 #ifndef YY_BUF_SIZE
154 #define YY_BUF_SIZE 16384
155 #endif
156
157 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
158 #define YY_TYPEDEF_YY_BUFFER_STATE
159 typedef struct yy_buffer_state *YY_BUFFER_STATE;
160 #endif
161
162 #define EOB_ACT_CONTINUE_SCAN 0
163 #define EOB_ACT_END_OF_FILE 1
164 #define EOB_ACT_LAST_MATCH 2
165
166     #define YY_LESS_LINENO(n)
167     
168 /* Return all but the first "n" matched characters back to the input stream. */
169 #define yyless(n) \
170         do \
171                 { \
172                 /* Undo effects of setting up yytext. */ \
173         int yyless_macro_arg = (n); \
174         YY_LESS_LINENO(yyless_macro_arg);\
175                 *yy_cp = yyg->yy_hold_char; \
176                 YY_RESTORE_YY_MORE_OFFSET \
177                 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
178                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
179                 } \
180         while ( 0 )
181
182 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
183
184 /* The following is because we cannot portably get our hands on size_t
185  * (without autoconf's help, which isn't available because we want
186  * flex-generated scanners to compile on their own).
187  */
188
189 #ifndef YY_TYPEDEF_YY_SIZE_T
190 #define YY_TYPEDEF_YY_SIZE_T
191 typedef unsigned int yy_size_t;
192 #endif
193
194 #ifndef YY_STRUCT_YY_BUFFER_STATE
195 #define YY_STRUCT_YY_BUFFER_STATE
196 struct yy_buffer_state
197         {
198         FILE *yy_input_file;
199
200         char *yy_ch_buf;                /* input buffer */
201         char *yy_buf_pos;               /* current position in input buffer */
202
203         /* Size of input buffer in bytes, not including room for EOB
204          * characters.
205          */
206         yy_size_t yy_buf_size;
207
208         /* Number of characters read into yy_ch_buf, not including EOB
209          * characters.
210          */
211         int yy_n_chars;
212
213         /* Whether we "own" the buffer - i.e., we know we created it,
214          * and can realloc() it to grow it, and should free() it to
215          * delete it.
216          */
217         int yy_is_our_buffer;
218
219         /* Whether this is an "interactive" input source; if so, and
220          * if we're using stdio for input, then we want to use getc()
221          * instead of fread(), to make sure we stop fetching input after
222          * each newline.
223          */
224         int yy_is_interactive;
225
226         /* Whether we're considered to be at the beginning of a line.
227          * If so, '^' rules will be active on the next match, otherwise
228          * not.
229          */
230         int yy_at_bol;
231
232     int yy_bs_lineno; /**< The line count. */
233     int yy_bs_column; /**< The column count. */
234     
235         /* Whether to try to fill the input buffer when we reach the
236          * end of it.
237          */
238         int yy_fill_buffer;
239
240         int yy_buffer_status;
241
242 #define YY_BUFFER_NEW 0
243 #define YY_BUFFER_NORMAL 1
244         /* When an EOF's been seen but there's still some text to process
245          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
246          * shouldn't try reading from the input source any more.  We might
247          * still have a bunch of tokens to match, though, because of
248          * possible backing-up.
249          *
250          * When we actually see the EOF, we change the status to "new"
251          * (via ast_yyrestart()), so that the user can continue scanning by
252          * just pointing yyin at a new input file.
253          */
254 #define YY_BUFFER_EOF_PENDING 2
255
256         };
257 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
258
259 /* We provide macros for accessing buffer states in case in the
260  * future we want to put the buffer states in a more general
261  * "scanner state".
262  *
263  * Returns the top of the stack, or NULL.
264  */
265 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
266                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
267                           : NULL)
268
269 /* Same as previous macro, but useful when we know that the buffer stack is not
270  * NULL or when we need an lvalue. For internal use only.
271  */
272 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
273
274 void ast_yyrestart (FILE *input_file ,yyscan_t yyscanner );
275 void ast_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
276 YY_BUFFER_STATE ast_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
277 void ast_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
278 void ast_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
279 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
280 void ast_yypop_buffer_state (yyscan_t yyscanner );
281
282 static void ast_yyensure_buffer_stack (yyscan_t yyscanner );
283 static void ast_yy_load_buffer_state (yyscan_t yyscanner );
284 static void ast_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
285
286 #define YY_FLUSH_BUFFER ast_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
287
288 YY_BUFFER_STATE ast_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
289 YY_BUFFER_STATE ast_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
290 YY_BUFFER_STATE ast_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
291
292 void *ast_yyalloc (yy_size_t ,yyscan_t yyscanner );
293 void *ast_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
294 void ast_yyfree (void * ,yyscan_t yyscanner );
295
296 #define yy_new_buffer ast_yy_create_buffer
297
298 #define yy_set_interactive(is_interactive) \
299         { \
300         if ( ! YY_CURRENT_BUFFER ){ \
301         ast_yyensure_buffer_stack (yyscanner); \
302                 YY_CURRENT_BUFFER_LVALUE =    \
303             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
304         } \
305         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
306         }
307
308 #define yy_set_bol(at_bol) \
309         { \
310         if ( ! YY_CURRENT_BUFFER ){\
311         ast_yyensure_buffer_stack (yyscanner); \
312                 YY_CURRENT_BUFFER_LVALUE =    \
313             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
314         } \
315         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
316         }
317
318 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
319
320 /* Begin user sect3 */
321
322 #define ast_yywrap(n) 1
323 #define YY_SKIP_YYWRAP
324
325 typedef char YY_CHAR;
326
327 typedef int yy_state_type;
328
329 #define yytext_ptr yytext_r
330 static yyconst flex_int16_t yy_nxt[][128] =
331     {
332     {
333         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
334         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
335         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
336         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
337         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
338         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
339         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
340         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
342         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
343
344         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
345         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
346         0,    0,    0,    0,    0,    0,    0,    0
347     },
348
349     {
350         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
351        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
352         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
353         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
354        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
355        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
356        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
357
358        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
359        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
360        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
361        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
362        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
363        13,   13,   13,    8,   29,    8,    8,    8
364     },
365
366     {
367         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
368        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
369         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
370         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
371
372        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
373        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
374        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
375        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
376        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
377        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
378        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
379        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
380        13,   13,   13,    8,   29,    8,    8,    8
381     },
382
383     {
384         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
385
386        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
387        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
388        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
389        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
390        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
391        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
392        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
393        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
394        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
395        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
396
397        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
398        30,   30,   30,   31,   30,   32,   30,   30
399     },
400
401     {
402         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
403        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
404        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
405        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
406        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
407        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
408        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
409        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
410
411        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
412        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
413        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
414        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
415        30,   30,   30,   31,   30,   32,   30,   30
416     },
417
418     {
419         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
420        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
421        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
422        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
423        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
424
425        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
426        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
427        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
428        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
429        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
430        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
431        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
432        33,   33,   33,   33,   34,   33,   33,   33
433     },
434
435     {
436         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
437        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
438
439        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
440        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
441        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
442        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
443        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
444        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
445        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
446        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
447        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
448        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
449
450        33,   33,   33,   33,   34,   33,   33,   33
451     },
452
453     {
454        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
455        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
456        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
457        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
458        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
459        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
460        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
461        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
462        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
463
464        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
465        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
466        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
467        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7
468     },
469
470     {
471         7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
472        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
473        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
474        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
475        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
476        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
477
478        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
479        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
480        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
481        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
482        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
483        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
484        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8
485     },
486
487     {
488         7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
489        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
490        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
491
492        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
493        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
494        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
495        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
496        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
497        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
498        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
499        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
500        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
501        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9
502
503     },
504
505     {
506         7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
507       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
508       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
509       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
510       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
511       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
512       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
513       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
514       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
515       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
516
517       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
518       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
519       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10
520     },
521
522     {
523         7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
524       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
525       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
526       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
527       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
528       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
529       -11,   36,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
530
531       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
532       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
533       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
534       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
535       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
536       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
537     },
538
539     {
540         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
541        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
542        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
543        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
544
545        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
546        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
547        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
548        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
549        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
550        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
551        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
552        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
553        37,   37,   37,   37,   37,   37,   37,   37
554     },
555
556     {
557         7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
558
559       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
560       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
561       -13,  -13,  -13,  -13,  -13,   39,   39,  -13,  -13,   39,
562       -13,  -13,  -13,  -13,   39,  -13,   39,  -13,   39,   39,
563        39,   39,   39,   39,   39,   39,   39,   39,  -13,   39,
564       -13,  -13,  -13,  -13,   39,   39,   39,   39,   39,   39,
565        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
566        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
567        39,  -13,   39,  -13,   39,   39,  -13,   39,   39,   39,
568        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
569
570        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
571        39,   39,   39,  -13,  -13,  -13,  -13,  -13
572     },
573
574     {
575         7,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
576       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
577       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
578       -14,  -14,  -14,  -14,  -14,   39,   39,  -14,  -14,   39,
579       -14,  -14,  -14,  -14,   39,  -14,   39,  -14,   39,   39,
580        39,   39,   39,   39,   39,   39,   39,   39,  -14,   39,
581       -14,  -14,  -14,  -14,   39,   39,   39,   39,   39,   39,
582        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
583
584        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
585        39,  -14,   39,  -14,   39,   39,  -14,   39,   39,   39,
586        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
587        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
588        39,   39,   39,   40,  -14,  -14,  -14,  -14
589     },
590
591     {
592         7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
593       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
594       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
595       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
596       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
597
598       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
599       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
600       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
601       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
602       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
603       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
604       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
605       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15
606     },
607
608     {
609         7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
610       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
611
612       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
613       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   41,  -16,
614       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
615       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
616       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
617       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
618       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
619       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
620       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
621       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
622
623       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
624     },
625
626     {
627         7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
628       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
629       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
630       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
631       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
632       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
633       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
634       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
635       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
636
637       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
638       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
639       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
640       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
641     },
642
643     {
644         7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
645       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
646       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
647       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
648       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
649       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
650
651       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
652       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
653       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
654       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
655       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
656       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
657       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
658     },
659
660     {
661         7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
662       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
663       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
664
665       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
666       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
667       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
668       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
669       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
670       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
671       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
672       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
673       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
674       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19
675
676     },
677
678     {
679         7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
680       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
681       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
682       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
683       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
684       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
685       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
686       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
687       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
688       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
689
690       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
691       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
692       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20
693     },
694
695     {
696         7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
697       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
698       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
699       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
700       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
701       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
702       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
703
704       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
705       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
706       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
707       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
708       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
709       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21
710     },
711
712     {
713         7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
714       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
715       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
716       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
717
718       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
719       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
720       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
721       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
722       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
723       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
724       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
725       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
726       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22
727     },
728
729     {
730         7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
731
732       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
733       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
734       -23,  -23,  -23,  -23,  -23,   39,   39,  -23,  -23,   39,
735       -23,  -23,  -23,  -23,   39,  -23,   42,  -23,   43,   43,
736        43,   43,   43,   43,   43,   43,   43,   43,  -23,   39,
737       -23,  -23,  -23,  -23,   39,   39,   39,   39,   39,   39,
738        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
739        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
740        39,  -23,   39,  -23,   39,   39,  -23,   39,   39,   39,
741        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
742
743        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
744        39,   39,   39,  -23,  -23,  -23,  -23,  -23
745     },
746
747     {
748         7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
749       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
750       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
751       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
752       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
753       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   44,  -24,
754       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
755       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
756
757       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
758       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
759       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
760       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
761       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24
762     },
763
764     {
765         7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
766       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
767       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
768       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
769       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
770
771       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
772       -25,   45,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
773       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
774       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
775       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
776       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
777       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
778       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
779     },
780
781     {
782         7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
783       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
784
785       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
786       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
787       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
788       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
789       -26,   46,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
790       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
791       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
792       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
793       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
794       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
795
796       -26,  -26,  -26,  -26,  -26,  -26,   47,  -26
797     },
798
799     {
800         7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
801       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
802       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
803       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
804       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
805       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
806       -27,   48,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
807       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
808       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
809
810       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
811       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
812       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
813       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27
814     },
815
816     {
817         7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
818       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
819       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
820       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
821       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
822       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
823
824       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
825       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
826       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
827       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
828       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
829       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
830       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28
831     },
832
833     {
834         7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
835       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
836       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
837
838       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
839       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
840       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
841       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
842       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
843       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
844       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
845       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
846       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
847       -29,  -29,  -29,  -29,   49,  -29,  -29,  -29
848
849     },
850
851     {
852         7,   50,   50,   50,   50,   50,   50,   50,   50,   50,
853        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
854        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
855        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
856        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
857        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
858        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
859        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
860        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
861        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
862
863        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
864        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
865        50,   50,   50,   51,   50,   52,   50,   50
866     },
867
868     {
869         7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
870       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
871       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
872       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
873       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
874       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
875       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
876
877       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
878       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
879       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
880       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
881       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
882       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31
883     },
884
885     {
886         7,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
887       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
888       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
889       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
890
891       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
892       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
893       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
894       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
895       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
896       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
897       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
898       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
899       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
900     },
901
902     {
903         7,   53,   53,   53,   53,   53,   53,   53,   53,  -33,
904
905       -33,   53,   53,  -33,   53,   53,   53,   53,   53,   53,
906        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
907        53,   53,  -33,  -33,   53,   53,  -33,  -33,  -33,   53,
908       -33,  -33,  -33,  -33,   53,  -33,   53,  -33,   53,   53,
909        53,   53,   53,   53,   53,   53,   53,   53,  -33,   53,
910       -33,  -33,  -33,  -33,   53,   53,   53,   53,   53,   53,
911        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
912        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
913        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
914        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
915
916        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
917        53,   53,   53,   53,  -33,   53,   53,   53
918     },
919
920     {
921         7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
922       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
923       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
924       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
925       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
926       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
927       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
928       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
929
930       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
931       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
932       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
933       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
934       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
935     },
936
937     {
938         7,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
939       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
940       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
941       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
942       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
943
944       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
945       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
946       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
947       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
948       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
949       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
950       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
951       -35,  -35,  -35,   54,  -35,  -35,  -35,  -35
952     },
953
954     {
955         7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
956       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
957
958       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
959       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
960       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
961       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
962       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
963       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
964       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
965       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
966       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
967       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
968
969       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36
970     },
971
972     {
973         7,   37,   37,   37,   37,   37,   37,   37,   37,   37,
974        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
975        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
976        37,   37,   37,   37,   38,   37,   37,   37,   37,   37,
977        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
978        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
979        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
980        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
981        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
982
983        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
984        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
985        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
986        37,   37,   37,   37,   37,   37,   37,   37
987     },
988
989     {
990         7,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
991       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
992       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
993       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
994       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
995       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
996
997       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
998       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
999       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1000       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1001       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1002       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1003       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38
1004     },
1005
1006     {
1007         7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1008       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1009       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
1010
1011       -39,  -39,  -39,  -39,  -39,   39,   39,  -39,  -39,   39,
1012       -39,  -39,  -39,  -39,   39,  -39,   39,  -39,   39,   39,
1013        39,   39,   39,   39,   39,   39,   39,   39,  -39,   39,
1014       -39,  -39,  -39,  -39,   39,   39,   39,   39,   39,   39,
1015        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1016        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1017        39,  -39,   39,  -39,   39,   39,  -39,   39,   39,   39,
1018        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1019        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1020        39,   39,   39,  -39,  -39,  -39,  -39,  -39
1021
1022     },
1023
1024     {
1025         7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1026       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1027       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1028       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1029       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1030       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1031       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1032       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1033       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1034       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1035
1036       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1037       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
1038       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
1039     },
1040
1041     {
1042         7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1043       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1044       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1045       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1046       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1047       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1048       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1049
1050       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1051       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1052       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1053       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1054       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
1055       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
1056     },
1057
1058     {
1059         7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1060       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1061       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1062       -42,  -42,  -42,  -42,  -42,   39,   39,  -42,  -42,   39,
1063
1064       -42,  -42,  -42,  -42,   39,  -42,   39,  -42,   55,   55,
1065        55,   55,   55,   55,   55,   55,   55,   55,  -42,   39,
1066       -42,  -42,  -42,  -42,   39,   39,   39,   39,   39,   39,
1067        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1068        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1069        39,  -42,   39,  -42,   39,   39,  -42,   39,   39,   39,
1070        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1071        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1072        39,   39,   39,  -42,  -42,  -42,  -42,  -42
1073     },
1074
1075     {
1076         7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1077
1078       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1079       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1080       -43,  -43,  -43,  -43,  -43,   39,   39,  -43,  -43,   39,
1081       -43,  -43,  -43,  -43,   39,  -43,   42,  -43,   43,   43,
1082        43,   43,   43,   43,   43,   43,   43,   43,  -43,   39,
1083       -43,  -43,  -43,  -43,   39,   39,   39,   39,   39,   39,
1084        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1085        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1086        39,  -43,   39,  -43,   39,   39,  -43,   39,   39,   39,
1087        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1088
1089        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1090        39,   39,   39,  -43,  -43,  -43,  -43,  -43
1091     },
1092
1093     {
1094         7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1095       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1096       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1097       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1098       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1099       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1100       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1101       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1102
1103       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1104       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1105       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1106       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
1107       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
1108     },
1109
1110     {
1111         7,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1112       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1113       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1114       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1115       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1116
1117       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1118       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1119       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1120       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1121       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1122       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1123       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
1124       -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
1125     },
1126
1127     {
1128         7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1129       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1130
1131       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1132       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1133       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1134       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1135       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1136       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1137       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1138       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1139       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1140       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
1141
1142       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
1143     },
1144
1145     {
1146         7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1147       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1148       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1149       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1150       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1151       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1152       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1153       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1154       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1155
1156       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1157       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1158       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
1159       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
1160     },
1161
1162     {
1163         7,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1164       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1165       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1166       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1167       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1168       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1169
1170       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1171       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1172       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1173       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1174       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1175       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
1176       -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
1177     },
1178
1179     {
1180         7,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1181       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1182       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1183
1184       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1185       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1186       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1187       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1188       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1189       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1190       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1191       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1192       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
1193       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49
1194
1195     },
1196
1197     {
1198         7,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1199        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1200        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1201        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1202        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1203        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1204        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1205        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1206        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1207        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1208
1209        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1210        50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
1211        50,   50,   50,   51,   50,   52,   50,   50
1212     },
1213
1214     {
1215         7,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1216       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1217       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1218       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1219       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1220       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1221       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1222
1223       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1224       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1225       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1226       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1227       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
1228       -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51
1229     },
1230
1231     {
1232         7,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1233       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1234       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1235       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1236
1237       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1238       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1239       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1240       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1241       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1242       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1243       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1244       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
1245       -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52
1246     },
1247
1248     {
1249         7,   53,   53,   53,   53,   53,   53,   53,   53,  -53,
1250
1251       -53,   53,   53,  -53,   53,   53,   53,   53,   53,   53,
1252        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
1253        53,   53,  -53,  -53,   53,   53,  -53,  -53,  -53,   53,
1254       -53,  -53,  -53,  -53,   53,  -53,   53,  -53,   53,   53,
1255        53,   53,   53,   53,   53,   53,   53,   53,  -53,   53,
1256       -53,  -53,  -53,  -53,   53,   53,   53,   53,   53,   53,
1257        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
1258        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
1259        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
1260        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
1261
1262        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
1263        53,   53,   53,   53,  -53,   53,   53,   53
1264     },
1265
1266     {
1267         7,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1268       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1269       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1270       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1271       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1272       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1273       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1274       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1275
1276       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1277       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1278       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1279       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
1280       -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54
1281     },
1282
1283     {
1284         7,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1285       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1286       -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
1287       -55,  -55,  -55,  -55,  -55,   39,   39,  -55,  -55,   39,
1288       -55,  -55,  -55,  -55,   39,  -55,   39,  -55,   55,   55,
1289
1290        55,   55,   55,   55,   55,   55,   55,   55,  -55,   39,
1291       -55,  -55,  -55,  -55,   39,   39,   39,   39,   39,   39,
1292        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1293        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1294        39,  -55,   39,  -55,   39,   39,  -55,   39,   39,   39,
1295        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1296        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
1297        39,   39,   39,  -55,  -55,  -55,  -55,  -55
1298     },
1299
1300     } ;
1301
1302 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
1303 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
1304 static int yy_get_next_buffer (yyscan_t yyscanner );
1305 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
1306
1307 /* Done after the current pattern has been matched and before the
1308  * corresponding action - sets up yytext.
1309  */
1310 #define YY_DO_BEFORE_ACTION \
1311         yyg->yytext_ptr = yy_bp; \
1312         yyg->yytext_ptr -= yyg->yy_more_len; \
1313         yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
1314         yyg->yy_hold_char = *yy_cp; \
1315         *yy_cp = '\0'; \
1316         yyg->yy_c_buf_p = yy_cp;
1317
1318 #define YY_NUM_RULES 35
1319 #define YY_END_OF_BUFFER 36
1320 /* This struct is not used in this scanner,
1321    but its presence is necessary. */
1322 struct yy_trans_info
1323         {
1324         flex_int32_t yy_verify;
1325         flex_int32_t yy_nxt;
1326         };
1327 static yyconst flex_int16_t yy_accept[56] =
1328     {   0,
1329         0,    0,    0,    0,   32,   32,   36,   35,   25,   27,
1330        19,   35,   29,   29,   17,    2,   22,   23,   15,   13,
1331        14,   16,   28,   20,    9,    3,    8,   18,    1,   35,
1332        31,   30,   32,   33,   33,   12,    0,   26,   29,   24,
1333         5,   29,   28,   21,   11,    6,    7,   10,    4,    0,
1334        31,   30,   32,   34,   28
1335     } ;
1336
1337 static yyconst yy_state_type yy_NUL_trans[56] =
1338     {   0,
1339         8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
1340         0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
1341         0,    0,    0,    0,    0,    0,    0,    0,    0,   50,
1342         0,    0,   53,    0,    0,    0,   37,    0,    0,    0,
1343         0,    0,    0,    0,    0,    0,    0,    0,    0,   50,
1344         0,    0,   53,    0,    0
1345     } ;
1346
1347 /* The intent behind this definition is that it'll catch
1348  * any uses of REJECT which flex missed.
1349  */
1350 #define REJECT reject_used_but_not_detected
1351 #define yymore() (yyg->yy_more_flag = 1)
1352 #define YY_MORE_ADJ yyg->yy_more_len
1353 #define YY_RESTORE_YY_MORE_OFFSET
1354 #line 1 "ast_expr2.fl"
1355 #line 2 "ast_expr2.fl"
1356 /*
1357  * Asterisk -- An open source telephony toolkit.
1358  *
1359  * Copyright (C) 1999 - 2006, Digium, Inc.
1360  *
1361  * Mark Spencer <markster@digium.com>
1362  *
1363  * See http://www.asterisk.org for more information about
1364  * the Asterisk project. Please do not directly contact
1365  * any of the maintainers of this project for assistance;
1366  * the project provides a web site, mailing lists and IRC
1367  * channels for your use.
1368  *
1369  * This program is free software, distributed under the terms of
1370  * the GNU General Public License Version 2. See the LICENSE file
1371  * at the top of the source tree.
1372  */
1373
1374 /*! \file
1375  *
1376  * \brief Dialplan Expression Lexical Scanner
1377  */
1378
1379 #include "asterisk.h"
1380
1381 #include <sys/types.h>
1382 #include <stdio.h>
1383
1384 #ifndef STANDALONE
1385 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
1386 #else
1387 #ifndef __USE_ISOC99
1388 #define __USE_ISOC99 1
1389 #endif
1390 #endif
1391
1392 #ifdef __USE_ISOC99
1393 #define FP___PRINTF "%.16Lg"
1394 #define FP___FMOD   fmodl
1395 #define FP___STRTOD  strtold
1396 #define FP___TYPE    long double
1397 #else
1398 #define FP___PRINTF "%.8g"
1399 #define FP___FMOD   fmod
1400 #define FP___STRTOD  strtod
1401 #define FP___TYPE    double
1402 #endif
1403
1404 #include <stdlib.h>
1405 #include <string.h>
1406 #include <locale.h>
1407 #include <ctype.h>
1408 #if !defined(SOLARIS) && !defined(__CYGWIN__)
1409 /* #include <err.h> */
1410 #else
1411 #define quad_t int64_t
1412 #endif
1413 #include <errno.h>
1414 #include <regex.h>
1415 #include <limits.h>
1416
1417 #include "asterisk/ast_expr.h"
1418 #include "asterisk/logger.h"
1419 #include "asterisk/strings.h"
1420
1421 enum valtype {
1422         AST_EXPR_number, AST_EXPR_numeric_string, AST_EXPR_string
1423 } ;
1424
1425 struct val {
1426         enum valtype type;
1427         union {
1428                 char *s;
1429                 FP___TYPE i; /* long double or just double if it's a bad day */
1430         } u;
1431 } ;
1432
1433 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
1434
1435 #define SET_COLUMNS     do {            \
1436         yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf); \
1437         yylloc_param->last_column += yyleng - 1; \
1438         yylloc_param->first_line = yylloc_param->last_line = 1; \
1439         } while (0)
1440
1441 #define SET_STRING      do {            \
1442         yylval_param->val = calloc(1, sizeof(struct val));      \
1443         yylval_param->val->type = AST_EXPR_string;              \
1444         yylval_param->val->u.s = strdup(yytext);                \
1445         } while (0)
1446
1447 #define SET_NUMERIC_STRING      do {    \
1448         yylval_param->val = calloc(1, sizeof(struct val));      \
1449         yylval_param->val->type = AST_EXPR_numeric_string;      \
1450         yylval_param->val->u.s = strdup(yytext);        \
1451         } while (0)
1452
1453 struct parse_io
1454 {
1455         char *string;
1456         struct val *val;
1457         yyscan_t scanner;
1458 };
1459  
1460 void ast_yyset_column(int column_no, yyscan_t yyscanner);
1461 int ast_yyget_column(yyscan_t yyscanner);
1462 static int curlycount = 0;
1463 static char *expr2_token_subst(char *mess);
1464
1465 #line 1466 "ast_expr2f.c"
1466
1467 #define INITIAL 0
1468 #define var 1
1469 #define trail 2
1470
1471 #ifndef YY_NO_UNISTD_H
1472 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1473  * down here because we want the user's section 1 to have been scanned first.
1474  * The user has a chance to override it with an option.
1475  */
1476 #include <unistd.h>
1477 #endif
1478
1479 #ifndef YY_EXTRA_TYPE
1480 #define YY_EXTRA_TYPE void *
1481 #endif
1482
1483 /* Holds the entire state of the reentrant scanner. */
1484 struct yyguts_t
1485     {
1486
1487     /* User-defined. Not touched by flex. */
1488     YY_EXTRA_TYPE yyextra_r;
1489
1490     /* The rest are the same as the globals declared in the non-reentrant scanner. */
1491     FILE *yyin_r, *yyout_r;
1492     size_t yy_buffer_stack_top; /**< index of top of stack. */
1493     size_t yy_buffer_stack_max; /**< capacity of stack. */
1494     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1495     char yy_hold_char;
1496     int yy_n_chars;
1497     int yyleng_r;
1498     char *yy_c_buf_p;
1499     int yy_init;
1500     int yy_start;
1501     int yy_did_buffer_switch_on_eof;
1502     int yy_start_stack_ptr;
1503     int yy_start_stack_depth;
1504     int *yy_start_stack;
1505     yy_state_type yy_last_accepting_state;
1506     char* yy_last_accepting_cpos;
1507
1508     int yylineno_r;
1509     int yy_flex_debug_r;
1510
1511     char *yytext_r;
1512     int yy_more_flag;
1513     int yy_more_len;
1514
1515     YYSTYPE * yylval_r;
1516
1517     YYLTYPE * yylloc_r;
1518
1519     }; /* end struct yyguts_t */
1520
1521 static int yy_init_globals (yyscan_t yyscanner );
1522
1523     /* This must go here because YYSTYPE and YYLTYPE are included
1524      * from bison output in section 1.*/
1525     #    define yylval yyg->yylval_r
1526     
1527     #    define yylloc yyg->yylloc_r
1528     
1529 /* Accessor methods to globals.
1530    These are made visible to non-reentrant scanners for convenience. */
1531
1532 int ast_yylex_destroy (yyscan_t yyscanner );
1533
1534 int ast_yyget_debug (yyscan_t yyscanner );
1535
1536 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
1537
1538 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
1539
1540 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1541
1542 FILE *ast_yyget_in (yyscan_t yyscanner );
1543
1544 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
1545
1546 FILE *ast_yyget_out (yyscan_t yyscanner );
1547
1548 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
1549
1550 int ast_yyget_leng (yyscan_t yyscanner );
1551
1552 char *ast_yyget_text (yyscan_t yyscanner );
1553
1554 int ast_yyget_lineno (yyscan_t yyscanner );
1555
1556 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
1557
1558 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
1559
1560 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1561
1562        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
1563     
1564         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1565     
1566 /* Macros after this point can all be overridden by user definitions in
1567  * section 1.
1568  */
1569
1570 #ifndef YY_SKIP_YYWRAP
1571 #ifdef __cplusplus
1572 extern "C" int ast_yywrap (yyscan_t yyscanner );
1573 #else
1574 extern int ast_yywrap (yyscan_t yyscanner );
1575 #endif
1576 #endif
1577
1578     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
1579     
1580 #ifndef yytext_ptr
1581 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1582 #endif
1583
1584 #ifdef YY_NEED_STRLEN
1585 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1586 #endif
1587
1588 #ifndef YY_NO_INPUT
1589
1590 #ifdef __cplusplus
1591 static int yyinput (yyscan_t yyscanner );
1592 #else
1593 static int input (yyscan_t yyscanner );
1594 #endif
1595
1596 #endif
1597
1598 /* Amount of stuff to slurp up with each read. */
1599 #ifndef YY_READ_BUF_SIZE
1600 #define YY_READ_BUF_SIZE 8192
1601 #endif
1602
1603 /* Copy whatever the last rule matched to the standard output. */
1604 #ifndef ECHO
1605 /* This used to be an fputs(), but since the string might contain NUL's,
1606  * we now use fwrite().
1607  */
1608 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1609 #endif
1610
1611 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1612  * is returned in "result".
1613  */
1614 #ifndef YY_INPUT
1615 #define YY_INPUT(buf,result,max_size) \
1616         errno=0; \
1617         while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
1618         { \
1619                 if( errno != EINTR) \
1620                 { \
1621                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1622                         break; \
1623                 } \
1624                 errno=0; \
1625                 clearerr(yyin); \
1626         }\
1627 \
1628
1629 #endif
1630
1631 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1632  * we don't want an extra ';' after the "return" because that will cause
1633  * some compilers to complain about unreachable statements.
1634  */
1635 #ifndef yyterminate
1636 #define yyterminate() return YY_NULL
1637 #endif
1638
1639 /* Number of entries by which start-condition stack grows. */
1640 #ifndef YY_START_STACK_INCR
1641 #define YY_START_STACK_INCR 25
1642 #endif
1643
1644 /* Report a fatal error. */
1645 #ifndef YY_FATAL_ERROR
1646 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1647 #endif
1648
1649 /* end tables serialization structures and prototypes */
1650
1651 /* Default declaration of generated scanner - a define so the user can
1652  * easily add parameters.
1653  */
1654 #ifndef YY_DECL
1655 #define YY_DECL_IS_OURS 1
1656
1657 extern int ast_yylex \
1658                (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1659
1660 #define YY_DECL int ast_yylex \
1661                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1662 #endif /* !YY_DECL */
1663
1664 /* Code executed at the beginning of each rule, after yytext and yyleng
1665  * have been set up.
1666  */
1667 #ifndef YY_USER_ACTION
1668 #define YY_USER_ACTION
1669 #endif
1670
1671 /* Code executed at the end of each rule. */
1672 #ifndef YY_BREAK
1673 #define YY_BREAK break;
1674 #endif
1675
1676 #define YY_RULE_SETUP \
1677         YY_USER_ACTION
1678
1679 /** The main scanner function which does all the work.
1680  */
1681 YY_DECL
1682 {
1683         register yy_state_type yy_current_state;
1684         register char *yy_cp, *yy_bp;
1685         register int yy_act;
1686     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1687
1688 #line 121 "ast_expr2.fl"
1689
1690
1691 #line 1692 "ast_expr2f.c"
1692
1693     yylval = yylval_param;
1694
1695     yylloc = yylloc_param;
1696
1697         if ( yyg->yy_init )
1698                 {
1699                 yyg->yy_init = 0;
1700
1701 #ifdef YY_USER_INIT
1702                 YY_USER_INIT;
1703 #endif
1704
1705                 if ( ! yyg->yy_start )
1706                         yyg->yy_start = 1;      /* first start state */
1707
1708                 if ( ! yyin )
1709                         yyin = stdin;
1710
1711                 if ( ! yyout )
1712                         yyout = stdout;
1713
1714                 if ( ! YY_CURRENT_BUFFER ) {
1715                         ast_yyensure_buffer_stack (yyscanner);
1716                         YY_CURRENT_BUFFER_LVALUE =
1717                                 ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1718                 }
1719
1720                 ast_yy_load_buffer_state(yyscanner );
1721                 }
1722
1723         while ( 1 )             /* loops until end-of-file is reached */
1724                 {
1725                 yyg->yy_more_len = 0;
1726                 if ( yyg->yy_more_flag )
1727                         {
1728                         yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
1729                         yyg->yy_more_flag = 0;
1730                         }
1731                 yy_cp = yyg->yy_c_buf_p;
1732
1733                 /* Support of yytext. */
1734                 *yy_cp = yyg->yy_hold_char;
1735
1736                 /* yy_bp points to the position in yy_ch_buf of the start of
1737                  * the current run.
1738                  */
1739                 yy_bp = yy_cp;
1740
1741                 yy_current_state = yyg->yy_start;
1742 yy_match:
1743                 while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
1744                         {
1745                         if ( yy_accept[yy_current_state] )
1746                                 {
1747                                 yyg->yy_last_accepting_state = yy_current_state;
1748                                 yyg->yy_last_accepting_cpos = yy_cp;
1749                                 }
1750
1751                         ++yy_cp;
1752                         }
1753
1754                 yy_current_state = -yy_current_state;
1755
1756 yy_find_action:
1757                 yy_act = yy_accept[yy_current_state];
1758
1759                 YY_DO_BEFORE_ACTION;
1760
1761 do_action:      /* This label is used only to access EOF actions. */
1762
1763                 switch ( yy_act )
1764         { /* beginning of action switch */
1765                         case 0: /* must back up */
1766                         /* undo the effects of YY_DO_BEFORE_ACTION */
1767                         *yy_cp = yyg->yy_hold_char;
1768                         yy_cp = yyg->yy_last_accepting_cpos + 1;
1769                         yy_current_state = yyg->yy_last_accepting_state;
1770                         goto yy_find_action;
1771
1772 case 1:
1773 YY_RULE_SETUP
1774 #line 123 "ast_expr2.fl"
1775 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1776         YY_BREAK
1777 case 2:
1778 YY_RULE_SETUP
1779 #line 124 "ast_expr2.fl"
1780 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1781         YY_BREAK
1782 case 3:
1783 YY_RULE_SETUP
1784 #line 125 "ast_expr2.fl"
1785 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1786         YY_BREAK
1787 case 4:
1788 YY_RULE_SETUP
1789 #line 126 "ast_expr2.fl"
1790 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1791         YY_BREAK
1792 case 5:
1793 YY_RULE_SETUP
1794 #line 127 "ast_expr2.fl"
1795 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1796         YY_BREAK
1797 case 6:
1798 YY_RULE_SETUP
1799 #line 128 "ast_expr2.fl"
1800 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1801         YY_BREAK
1802 case 7:
1803 YY_RULE_SETUP
1804 #line 129 "ast_expr2.fl"
1805 { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
1806         YY_BREAK
1807 case 8:
1808 YY_RULE_SETUP
1809 #line 130 "ast_expr2.fl"
1810 { SET_COLUMNS; SET_STRING; return TOK_GT;}
1811         YY_BREAK
1812 case 9:
1813 YY_RULE_SETUP
1814 #line 131 "ast_expr2.fl"
1815 { SET_COLUMNS; SET_STRING; return TOK_LT;}
1816         YY_BREAK
1817 case 10:
1818 YY_RULE_SETUP
1819 #line 132 "ast_expr2.fl"
1820 { SET_COLUMNS; SET_STRING; return TOK_GE;}
1821         YY_BREAK
1822 case 11:
1823 YY_RULE_SETUP
1824 #line 133 "ast_expr2.fl"
1825 { SET_COLUMNS; SET_STRING; return TOK_LE;}
1826         YY_BREAK
1827 case 12:
1828 YY_RULE_SETUP
1829 #line 134 "ast_expr2.fl"
1830 { SET_COLUMNS; SET_STRING; return TOK_NE;}
1831         YY_BREAK
1832 case 13:
1833 YY_RULE_SETUP
1834 #line 135 "ast_expr2.fl"
1835 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
1836         YY_BREAK
1837 case 14:
1838 YY_RULE_SETUP
1839 #line 136 "ast_expr2.fl"
1840 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
1841         YY_BREAK
1842 case 15:
1843 YY_RULE_SETUP
1844 #line 137 "ast_expr2.fl"
1845 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
1846         YY_BREAK
1847 case 16:
1848 YY_RULE_SETUP
1849 #line 138 "ast_expr2.fl"
1850 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
1851         YY_BREAK
1852 case 17:
1853 YY_RULE_SETUP
1854 #line 139 "ast_expr2.fl"
1855 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
1856         YY_BREAK
1857 case 18:
1858 YY_RULE_SETUP
1859 #line 140 "ast_expr2.fl"
1860 { SET_COLUMNS; SET_STRING; return TOK_COND;}
1861         YY_BREAK
1862 case 19:
1863 YY_RULE_SETUP
1864 #line 141 "ast_expr2.fl"
1865 { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
1866         YY_BREAK
1867 case 20:
1868 YY_RULE_SETUP
1869 #line 142 "ast_expr2.fl"
1870 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
1871         YY_BREAK
1872 case 21:
1873 YY_RULE_SETUP
1874 #line 143 "ast_expr2.fl"
1875 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
1876         YY_BREAK
1877 case 22:
1878 YY_RULE_SETUP
1879 #line 144 "ast_expr2.fl"
1880 { SET_COLUMNS; SET_STRING; return TOK_LP;}
1881         YY_BREAK
1882 case 23:
1883 YY_RULE_SETUP
1884 #line 145 "ast_expr2.fl"
1885 { SET_COLUMNS; SET_STRING; return TOK_RP;}
1886         YY_BREAK
1887 case 24:
1888 YY_RULE_SETUP
1889 #line 146 "ast_expr2.fl"
1890 {
1891                 /* gather the contents of ${} expressions, with trailing stuff,
1892                  * into a single TOKEN.
1893                  * They are much more complex now than they used to be
1894                  */
1895                 curlycount = 0;
1896                 BEGIN(var);
1897                 yymore();
1898         }
1899         YY_BREAK
1900 case 25:
1901 YY_RULE_SETUP
1902 #line 156 "ast_expr2.fl"
1903 {}
1904         YY_BREAK
1905 case 26:
1906 /* rule 26 can match eol */
1907 YY_RULE_SETUP
1908 #line 157 "ast_expr2.fl"
1909 {SET_COLUMNS; SET_STRING; return TOKEN;}
1910         YY_BREAK
1911 case 27:
1912 /* rule 27 can match eol */
1913 YY_RULE_SETUP
1914 #line 159 "ast_expr2.fl"
1915 {/* what to do with eol */}
1916         YY_BREAK
1917 case 28:
1918 YY_RULE_SETUP
1919 #line 160 "ast_expr2.fl"
1920 {
1921                 SET_COLUMNS;
1922                 /* the original behavior of the expression parser was
1923                  * to bring in numbers as a numeric string
1924                  */
1925                 SET_NUMERIC_STRING;
1926                 return TOKEN;
1927         }
1928         YY_BREAK
1929 case 29:
1930 YY_RULE_SETUP
1931 #line 169 "ast_expr2.fl"
1932 {
1933                 SET_COLUMNS;
1934                 SET_STRING;
1935                 return TOKEN;
1936         }
1937         YY_BREAK
1938 case 30:
1939 /* rule 30 can match eol */
1940 YY_RULE_SETUP
1941 #line 176 "ast_expr2.fl"
1942 {
1943                 curlycount--;
1944                 if (curlycount < 0) {
1945                         BEGIN(trail);
1946                         yymore();
1947                 } else {
1948                         yymore();
1949                 }
1950         }
1951         YY_BREAK
1952 case 31:
1953 /* rule 31 can match eol */
1954 YY_RULE_SETUP
1955 #line 186 "ast_expr2.fl"
1956 {
1957                 curlycount++;
1958                 yymore();
1959         }
1960         YY_BREAK
1961 case 32:
1962 YY_RULE_SETUP
1963 #line 192 "ast_expr2.fl"
1964 {
1965                 BEGIN(0);
1966                 SET_COLUMNS;
1967                 SET_STRING;
1968                 return TOKEN;
1969         }
1970         YY_BREAK
1971 case 33:
1972 /* rule 33 can match eol */
1973 YY_RULE_SETUP
1974 #line 199 "ast_expr2.fl"
1975 {
1976                 char c = yytext[yyleng-1];
1977                 BEGIN(0);
1978                 unput(c);
1979                 SET_COLUMNS;
1980                 SET_STRING;
1981                 return TOKEN;
1982         }
1983         YY_BREAK
1984 case 34:
1985 YY_RULE_SETUP
1986 #line 208 "ast_expr2.fl"
1987 {
1988                 curlycount = 0;
1989                 BEGIN(var);
1990                 yymore();
1991         }
1992         YY_BREAK
1993 case YY_STATE_EOF(trail):
1994 #line 214 "ast_expr2.fl"
1995 {
1996                 BEGIN(0);
1997                 SET_COLUMNS;
1998                 SET_STRING;
1999                 return TOKEN;
2000                 /*actually, if an expr is only a variable ref, this could happen a LOT */
2001         }
2002         YY_BREAK
2003 case 35:
2004 YY_RULE_SETUP
2005 #line 222 "ast_expr2.fl"
2006 ECHO;
2007         YY_BREAK
2008 #line 2009 "ast_expr2f.c"
2009 case YY_STATE_EOF(INITIAL):
2010 case YY_STATE_EOF(var):
2011         yyterminate();
2012
2013         case YY_END_OF_BUFFER:
2014                 {
2015                 /* Amount of text matched not including the EOB char. */
2016                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2017
2018                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2019                 *yy_cp = yyg->yy_hold_char;
2020                 YY_RESTORE_YY_MORE_OFFSET
2021
2022                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2023                         {
2024                         /* We're scanning a new file or input source.  It's
2025                          * possible that this happened because the user
2026                          * just pointed yyin at a new source and called
2027                          * ast_yylex().  If so, then we have to assure
2028                          * consistency between YY_CURRENT_BUFFER and our
2029                          * globals.  Here is the right place to do so, because
2030                          * this is the first action (other than possibly a
2031                          * back-up) that will match for the new input source.
2032                          */
2033                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2034                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2035                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2036                         }
2037
2038                 /* Note that here we test for yy_c_buf_p "<=" to the position
2039                  * of the first EOB in the buffer, since yy_c_buf_p will
2040                  * already have been incremented past the NUL character
2041                  * (since all states make transitions on EOB to the
2042                  * end-of-buffer state).  Contrast this with the test
2043                  * in input().
2044                  */
2045                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2046                         { /* This was really a NUL. */
2047                         yy_state_type yy_next_state;
2048
2049                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2050
2051                         yy_current_state = yy_get_previous_state( yyscanner );
2052
2053                         /* Okay, we're now positioned to make the NUL
2054                          * transition.  We couldn't have
2055                          * yy_get_previous_state() go ahead and do it
2056                          * for us because it doesn't know how to deal
2057                          * with the possibility of jamming (and we don't
2058                          * want to build jamming into it because then it
2059                          * will run more slowly).
2060                          */
2061
2062                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2063
2064                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2065
2066                         if ( yy_next_state )
2067                                 {
2068                                 /* Consume the NUL. */
2069                                 yy_cp = ++yyg->yy_c_buf_p;
2070                                 yy_current_state = yy_next_state;
2071                                 goto yy_match;
2072                                 }
2073
2074                         else
2075                                 {
2076                                 yy_cp = yyg->yy_c_buf_p;
2077                                 goto yy_find_action;
2078                                 }
2079                         }
2080
2081                 else switch ( yy_get_next_buffer( yyscanner ) )
2082                         {
2083                         case EOB_ACT_END_OF_FILE:
2084                                 {
2085                                 yyg->yy_did_buffer_switch_on_eof = 0;
2086
2087                                 if ( ast_yywrap(yyscanner ) )
2088                                         {
2089                                         /* Note: because we've taken care in
2090                                          * yy_get_next_buffer() to have set up
2091                                          * yytext, we can now set up
2092                                          * yy_c_buf_p so that if some total
2093                                          * hoser (like flex itself) wants to
2094                                          * call the scanner after we return the
2095                                          * YY_NULL, it'll still work - another
2096                                          * YY_NULL will get returned.
2097                                          */
2098                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2099
2100                                         yy_act = YY_STATE_EOF(YY_START);
2101                                         goto do_action;
2102                                         }
2103
2104                                 else
2105                                         {
2106                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2107                                                 YY_NEW_FILE;
2108                                         }
2109                                 break;
2110                                 }
2111
2112                         case EOB_ACT_CONTINUE_SCAN:
2113                                 yyg->yy_c_buf_p =
2114                                         yyg->yytext_ptr + yy_amount_of_matched_text;
2115
2116                                 yy_current_state = yy_get_previous_state( yyscanner );
2117
2118                                 yy_cp = yyg->yy_c_buf_p;
2119                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2120                                 goto yy_match;
2121
2122                         case EOB_ACT_LAST_MATCH:
2123                                 yyg->yy_c_buf_p =
2124                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2125
2126                                 yy_current_state = yy_get_previous_state( yyscanner );
2127
2128                                 yy_cp = yyg->yy_c_buf_p;
2129                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2130                                 goto yy_find_action;
2131                         }
2132                 break;
2133                 }
2134
2135         default:
2136                 YY_FATAL_ERROR(
2137                         "fatal flex scanner internal error--no action found" );
2138         } /* end of action switch */
2139                 } /* end of scanning one token */
2140 } /* end of ast_yylex */
2141
2142 /* yy_get_next_buffer - try to read in a new buffer
2143  *
2144  * Returns a code representing an action:
2145  *      EOB_ACT_LAST_MATCH -
2146  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2147  *      EOB_ACT_END_OF_FILE - end of file
2148  */
2149 static int yy_get_next_buffer (yyscan_t yyscanner)
2150 {
2151     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2152         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2153         register char *source = yyg->yytext_ptr;
2154         register int number_to_move, i;
2155         int ret_val;
2156
2157         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2158                 YY_FATAL_ERROR(
2159                 "fatal flex scanner internal error--end of buffer missed" );
2160
2161         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2162                 { /* Don't try to fill the buffer, so this is an EOF. */
2163                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2164                         {
2165                         /* We matched a single character, the EOB, so
2166                          * treat this as a final EOF.
2167                          */
2168                         return EOB_ACT_END_OF_FILE;
2169                         }
2170
2171                 else
2172                         {
2173                         /* We matched some text prior to the EOB, first
2174                          * process it.
2175                          */
2176                         return EOB_ACT_LAST_MATCH;
2177                         }
2178                 }
2179
2180         /* Try to read more data. */
2181
2182         /* First move last chars to start of buffer. */
2183         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2184
2185         for ( i = 0; i < number_to_move; ++i )
2186                 *(dest++) = *(source++);
2187
2188         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2189                 /* don't do the read, it's not guaranteed to return an EOF,
2190                  * just force an EOF
2191                  */
2192                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2193
2194         else
2195                 {
2196                         int num_to_read =
2197                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2198
2199                 while ( num_to_read <= 0 )
2200                         { /* Not enough room in the buffer - grow it. */
2201
2202                         /* just a shorter name for the current buffer */
2203                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2204
2205                         int yy_c_buf_p_offset =
2206                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2207
2208                         if ( b->yy_is_our_buffer )
2209                                 {
2210                                 int new_size = b->yy_buf_size * 2;
2211
2212                                 if ( new_size <= 0 )
2213                                         b->yy_buf_size += b->yy_buf_size / 8;
2214                                 else
2215                                         b->yy_buf_size *= 2;
2216
2217                                 b->yy_ch_buf = (char *)
2218                                         /* Include room in for 2 EOB chars. */
2219                                         ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2220                                 }
2221                         else
2222                                 /* Can't grow it, we don't own it. */
2223                                 b->yy_ch_buf = 0;
2224
2225                         if ( ! b->yy_ch_buf )
2226                                 YY_FATAL_ERROR(
2227                                 "fatal error - scanner input buffer overflow" );
2228
2229                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2230
2231                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2232                                                 number_to_move - 1;
2233
2234                         }
2235
2236                 if ( num_to_read > YY_READ_BUF_SIZE )
2237                         num_to_read = YY_READ_BUF_SIZE;
2238
2239                 /* Read in more data. */
2240                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2241                         yyg->yy_n_chars, num_to_read );
2242
2243                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2244                 }
2245
2246         if ( yyg->yy_n_chars == 0 )
2247                 {
2248                 if ( number_to_move == YY_MORE_ADJ )
2249                         {
2250                         ret_val = EOB_ACT_END_OF_FILE;
2251                         ast_yyrestart(yyin  ,yyscanner);
2252                         }
2253
2254                 else
2255                         {
2256                         ret_val = EOB_ACT_LAST_MATCH;
2257                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2258                                 YY_BUFFER_EOF_PENDING;
2259                         }
2260                 }
2261
2262         else
2263                 ret_val = EOB_ACT_CONTINUE_SCAN;
2264
2265         yyg->yy_n_chars += number_to_move;
2266         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2267         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2268
2269         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2270
2271         return ret_val;
2272 }
2273
2274 /* yy_get_previous_state - get the state just before the EOB char was reached */
2275
2276     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2277 {
2278         register yy_state_type yy_current_state;
2279         register char *yy_cp;
2280     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2281
2282         yy_current_state = yyg->yy_start;
2283
2284         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2285                 {
2286                 if ( *yy_cp )
2287                         {
2288                         yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
2289                         }
2290                 else
2291                         yy_current_state = yy_NUL_trans[yy_current_state];
2292                 if ( yy_accept[yy_current_state] )
2293                         {
2294                         yyg->yy_last_accepting_state = yy_current_state;
2295                         yyg->yy_last_accepting_cpos = yy_cp;
2296                         }
2297                 }
2298
2299         return yy_current_state;
2300 }
2301
2302 /* yy_try_NUL_trans - try to make a transition on the NUL character
2303  *
2304  * synopsis
2305  *      next_state = yy_try_NUL_trans( current_state );
2306  */
2307     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
2308 {
2309         register int yy_is_jam;
2310     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2311         register char *yy_cp = yyg->yy_c_buf_p;
2312
2313         yy_current_state = yy_NUL_trans[yy_current_state];
2314         yy_is_jam = (yy_current_state == 0);
2315
2316         if ( ! yy_is_jam )
2317                 {
2318                 if ( yy_accept[yy_current_state] )
2319                         {
2320                         yyg->yy_last_accepting_state = yy_current_state;
2321                         yyg->yy_last_accepting_cpos = yy_cp;
2322                         }
2323                 }
2324
2325         return yy_is_jam ? 0 : yy_current_state;
2326 }
2327
2328     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
2329 {
2330         register char *yy_cp;
2331     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2332
2333     yy_cp = yyg->yy_c_buf_p;
2334
2335         /* undo effects of setting up yytext */
2336         *yy_cp = yyg->yy_hold_char;
2337
2338         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2339                 { /* need to shift things up to make room */
2340                 /* +2 for EOB chars. */
2341                 register int number_to_move = yyg->yy_n_chars + 2;
2342                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2343                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2344                 register char *source =
2345                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2346
2347                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2348                         *--dest = *--source;
2349
2350                 yy_cp += (int) (dest - source);
2351                 yy_bp += (int) (dest - source);
2352                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2353                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2354
2355                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2356                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2357                 }
2358
2359         *--yy_cp = (char) c;
2360
2361         yyg->yytext_ptr = yy_bp;
2362         yyg->yy_hold_char = *yy_cp;
2363         yyg->yy_c_buf_p = yy_cp;
2364 }
2365
2366 #ifndef YY_NO_INPUT
2367 #ifdef __cplusplus
2368     static int yyinput (yyscan_t yyscanner)
2369 #else
2370     static int input  (yyscan_t yyscanner)
2371 #endif
2372
2373 {
2374         int c;
2375     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2376
2377         *yyg->yy_c_buf_p = yyg->yy_hold_char;
2378
2379         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2380                 {
2381                 /* yy_c_buf_p now points to the character we want to return.
2382                  * If this occurs *before* the EOB characters, then it's a
2383                  * valid NUL; if not, then we've hit the end of the buffer.
2384                  */
2385                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2386                         /* This was really a NUL. */
2387                         *yyg->yy_c_buf_p = '\0';
2388
2389                 else
2390                         { /* need more input */
2391                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2392                         ++yyg->yy_c_buf_p;
2393
2394                         switch ( yy_get_next_buffer( yyscanner ) )
2395                                 {
2396                                 case EOB_ACT_LAST_MATCH:
2397                                         /* This happens because yy_g_n_b()
2398                                          * sees that we've accumulated a
2399                                          * token and flags that we need to
2400                                          * try matching the token before
2401                                          * proceeding.  But for input(),
2402                                          * there's no matching to consider.
2403                                          * So convert the EOB_ACT_LAST_MATCH
2404                                          * to EOB_ACT_END_OF_FILE.
2405                                          */
2406
2407                                         /* Reset buffer status. */
2408                                         ast_yyrestart(yyin ,yyscanner);
2409
2410                                         /*FALLTHROUGH*/
2411
2412                                 case EOB_ACT_END_OF_FILE:
2413                                         {
2414                                         if ( ast_yywrap(yyscanner ) )
2415                                                 return EOF;
2416
2417                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2418                                                 YY_NEW_FILE;
2419 #ifdef __cplusplus
2420                                         return yyinput(yyscanner);
2421 #else
2422                                         return input(yyscanner);
2423 #endif
2424                                         }
2425
2426                                 case EOB_ACT_CONTINUE_SCAN:
2427                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2428                                         break;
2429                                 }
2430                         }
2431                 }
2432
2433         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2434         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
2435         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2436
2437         return c;
2438 }
2439 #endif  /* ifndef YY_NO_INPUT */
2440
2441 /** Immediately switch to a different input stream.
2442  * @param input_file A readable stream.
2443  * @param yyscanner The scanner object.
2444  * @note This function does not reset the start condition to @c INITIAL .
2445  */
2446     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
2447 {
2448     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2449
2450         if ( ! YY_CURRENT_BUFFER ){
2451         ast_yyensure_buffer_stack (yyscanner);
2452                 YY_CURRENT_BUFFER_LVALUE =
2453             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2454         }
2455
2456         ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2457         ast_yy_load_buffer_state(yyscanner );
2458 }
2459
2460 /** Switch to a different input buffer.
2461  * @param new_buffer The new input buffer.
2462  * @param yyscanner The scanner object.
2463  */
2464     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
2465 {
2466     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2467
2468         /* TODO. We should be able to replace this entire function body
2469          * with
2470          *              ast_yypop_buffer_state();
2471          *              ast_yypush_buffer_state(new_buffer);
2472      */
2473         ast_yyensure_buffer_stack (yyscanner);
2474         if ( YY_CURRENT_BUFFER == new_buffer )
2475                 return;
2476
2477         if ( YY_CURRENT_BUFFER )
2478                 {
2479                 /* Flush out information for old buffer. */
2480                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2481                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2482                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2483                 }
2484
2485         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2486         ast_yy_load_buffer_state(yyscanner );
2487
2488         /* We don't actually know whether we did this switch during
2489          * EOF (ast_yywrap()) processing, but the only time this flag
2490          * is looked at is after ast_yywrap() is called, so it's safe
2491          * to go ahead and always set it.
2492          */
2493         yyg->yy_did_buffer_switch_on_eof = 1;
2494 }
2495
2496 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
2497 {
2498     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2499         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2500         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2501         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2502         yyg->yy_hold_char = *yyg->yy_c_buf_p;
2503 }
2504
2505 /** Allocate and initialize an input buffer state.
2506  * @param file A readable stream.
2507  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2508  * @param yyscanner The scanner object.
2509  * @return the allocated buffer state.
2510  */
2511     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
2512 {
2513         YY_BUFFER_STATE b;
2514     
2515         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2516         if ( ! b )
2517                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2518
2519         b->yy_buf_size = size;
2520
2521         /* yy_ch_buf has to be 2 characters longer than the size given because
2522          * we need to put in 2 end-of-buffer characters.
2523          */
2524         b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
2525         if ( ! b->yy_ch_buf )
2526                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2527
2528         b->yy_is_our_buffer = 1;
2529
2530         ast_yy_init_buffer(b,file ,yyscanner);
2531
2532         return b;
2533 }
2534
2535 /** Destroy the buffer.
2536  * @param b a buffer created with ast_yy_create_buffer()
2537  * @param yyscanner The scanner object.
2538  */
2539     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2540 {
2541     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2542
2543         if ( ! b )
2544                 return;
2545
2546         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2547                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2548
2549         if ( b->yy_is_our_buffer )
2550                 ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
2551
2552         ast_yyfree((void *) b ,yyscanner );
2553 }
2554
2555 #ifndef __cplusplus
2556 extern int isatty (int );
2557 #endif /* __cplusplus */
2558     
2559 /* Initializes or reinitializes a buffer.
2560  * This function is sometimes called more than once on the same buffer,
2561  * such as during a ast_yyrestart() or at EOF.
2562  */
2563     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
2564
2565 {
2566         int oerrno = errno;
2567     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2568
2569         ast_yy_flush_buffer(b ,yyscanner);
2570
2571         b->yy_input_file = file;
2572         b->yy_fill_buffer = 1;
2573
2574     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
2575      * called from ast_yyrestart() or through yy_get_next_buffer.
2576      * In that case, we don't want to reset the lineno or column.
2577      */
2578     if (b != YY_CURRENT_BUFFER){
2579         b->yy_bs_lineno = 1;
2580         b->yy_bs_column = 0;
2581     }
2582
2583         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2584     
2585         errno = oerrno;
2586 }
2587
2588 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2589  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2590  * @param yyscanner The scanner object.
2591  */
2592     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2593 {
2594     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2595         if ( ! b )
2596                 return;
2597
2598         b->yy_n_chars = 0;
2599
2600         /* We always need two end-of-buffer characters.  The first causes
2601          * a transition to the end-of-buffer state.  The second causes
2602          * a jam in that state.
2603          */
2604         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2605         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2606
2607         b->yy_buf_pos = &b->yy_ch_buf[0];
2608
2609         b->yy_at_bol = 1;
2610         b->yy_buffer_status = YY_BUFFER_NEW;
2611
2612         if ( b == YY_CURRENT_BUFFER )
2613                 ast_yy_load_buffer_state(yyscanner );
2614 }
2615
2616 /** Pushes the new state onto the stack. The new state becomes
2617  *  the current state. This function will allocate the stack
2618  *  if necessary.
2619  *  @param new_buffer The new state.
2620  *  @param yyscanner The scanner object.
2621  */
2622 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2623 {
2624     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2625         if (new_buffer == NULL)
2626                 return;
2627
2628         ast_yyensure_buffer_stack(yyscanner);
2629
2630         /* This block is copied from ast_yy_switch_to_buffer. */
2631         if ( YY_CURRENT_BUFFER )
2632                 {
2633                 /* Flush out information for old buffer. */
2634                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2635                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2636                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2637                 }
2638
2639         /* Only push if top exists. Otherwise, replace top. */
2640         if (YY_CURRENT_BUFFER)
2641                 yyg->yy_buffer_stack_top++;
2642         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2643
2644         /* copied from ast_yy_switch_to_buffer. */
2645         ast_yy_load_buffer_state(yyscanner );
2646         yyg->yy_did_buffer_switch_on_eof = 1;
2647 }
2648
2649 /** Removes and deletes the top of the stack, if present.
2650  *  The next element becomes the new top.
2651  *  @param yyscanner The scanner object.
2652  */
2653 void ast_yypop_buffer_state (yyscan_t yyscanner)
2654 {
2655     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2656         if (!YY_CURRENT_BUFFER)
2657                 return;
2658
2659         ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2660         YY_CURRENT_BUFFER_LVALUE = NULL;
2661         if (yyg->yy_buffer_stack_top > 0)
2662                 --yyg->yy_buffer_stack_top;
2663
2664         if (YY_CURRENT_BUFFER) {
2665                 ast_yy_load_buffer_state(yyscanner );
2666                 yyg->yy_did_buffer_switch_on_eof = 1;
2667         }
2668 }
2669
2670 /* Allocates the stack if it does not exist.
2671  *  Guarantees space for at least one push.
2672  */
2673 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
2674 {
2675         int num_to_alloc;
2676     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2677
2678         if (!yyg->yy_buffer_stack) {
2679
2680                 /* First allocation is just for 2 elements, since we don't know if this
2681                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2682                  * immediate realloc on the next call.
2683          */
2684                 num_to_alloc = 1;
2685                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
2686                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2687                                                                 , yyscanner);
2688                 
2689                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2690                                 
2691                 yyg->yy_buffer_stack_max = num_to_alloc;
2692                 yyg->yy_buffer_stack_top = 0;
2693                 return;
2694         }
2695
2696         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2697
2698                 /* Increase the buffer to prepare for a possible push. */
2699                 int grow_size = 8 /* arbitrary grow size */;
2700
2701                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2702                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
2703                                                                 (yyg->yy_buffer_stack,
2704                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2705                                                                 , yyscanner);
2706
2707                 /* zero only the new slots.*/
2708                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2709                 yyg->yy_buffer_stack_max = num_to_alloc;
2710         }
2711 }
2712
2713 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2714  * @param base the character buffer
2715  * @param size the size in bytes of the character buffer
2716  * @param yyscanner The scanner object.
2717  * @return the newly allocated buffer state object. 
2718  */
2719 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2720 {
2721         YY_BUFFER_STATE b;
2722     
2723         if ( size < 2 ||
2724              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2725              base[size-1] != YY_END_OF_BUFFER_CHAR )
2726                 /* They forgot to leave room for the EOB's. */
2727                 return 0;
2728
2729         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2730         if ( ! b )
2731                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
2732
2733         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2734         b->yy_buf_pos = b->yy_ch_buf = base;
2735         b->yy_is_our_buffer = 0;
2736         b->yy_input_file = 0;
2737         b->yy_n_chars = b->yy_buf_size;
2738         b->yy_is_interactive = 0;
2739         b->yy_at_bol = 1;
2740         b->yy_fill_buffer = 0;
2741         b->yy_buffer_status = YY_BUFFER_NEW;
2742
2743         ast_yy_switch_to_buffer(b ,yyscanner );
2744
2745         return b;
2746 }
2747
2748 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
2749  * scan from a @e copy of @a str.
2750  * @param str a NUL-terminated string to scan
2751  * @param yyscanner The scanner object.
2752  * @return the newly allocated buffer state object.
2753  * @note If you want to scan bytes that may contain NUL values, then use
2754  *       ast_yy_scan_bytes() instead.
2755  */
2756 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
2757 {
2758     
2759         return ast_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
2760 }
2761
2762 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
2763  * scan from a @e copy of @a bytes.
2764  * @param bytes the byte buffer to scan
2765  * @param len the number of bytes in the buffer pointed to by @a bytes.
2766  * @param yyscanner The scanner object.
2767  * @return the newly allocated buffer state object.
2768  */
2769 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
2770 {
2771         YY_BUFFER_STATE b;
2772         char *buf;
2773         yy_size_t n;
2774         int i;
2775     
2776         /* Get memory for full buffer, including space for trailing EOB's. */
2777         n = len + 2;
2778         buf = (char *) ast_yyalloc(n ,yyscanner );
2779         if ( ! buf )
2780                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
2781
2782         for ( i = 0; i < len; ++i )
2783                 buf[i] = bytes[i];
2784
2785         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2786
2787         b = ast_yy_scan_buffer(buf,n ,yyscanner);
2788         if ( ! b )
2789                 YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
2790
2791         /* It's okay to grow etc. this buffer, and we should throw it
2792          * away when we're done.
2793          */
2794         b->yy_is_our_buffer = 1;
2795
2796         return b;
2797 }
2798
2799 #ifndef YY_EXIT_FAILURE
2800 #define YY_EXIT_FAILURE 2
2801 #endif
2802
2803 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2804 {
2805         (void) fprintf( stderr, "%s\n", msg );
2806         exit( YY_EXIT_FAILURE );
2807 }
2808
2809 /* Redefine yyless() so it works in section 3 code. */
2810
2811 #undef yyless
2812 #define yyless(n) \
2813         do \
2814                 { \
2815                 /* Undo effects of setting up yytext. */ \
2816         int yyless_macro_arg = (n); \
2817         YY_LESS_LINENO(yyless_macro_arg);\
2818                 yytext[yyleng] = yyg->yy_hold_char; \
2819                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2820                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2821                 *yyg->yy_c_buf_p = '\0'; \
2822                 yyleng = yyless_macro_arg; \
2823                 } \
2824         while ( 0 )
2825
2826 /* Accessor  methods (get/set functions) to struct members. */
2827
2828 /** Get the user-defined data for this scanner.
2829  * @param yyscanner The scanner object.
2830  */
2831 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
2832 {
2833     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2834     return yyextra;
2835 }
2836
2837 /** Get the current line number.
2838  * @param yyscanner The scanner object.
2839  */
2840 int ast_yyget_lineno  (yyscan_t yyscanner)
2841 {
2842     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2843     
2844         if (! YY_CURRENT_BUFFER)
2845             return 0;
2846     
2847     return yylineno;
2848 }
2849
2850 /** Get the current column number.
2851  * @param yyscanner The scanner object.
2852  */
2853 int ast_yyget_column  (yyscan_t yyscanner)
2854 {
2855     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2856     
2857         if (! YY_CURRENT_BUFFER)
2858             return 0;
2859     
2860     return yycolumn;
2861 }
2862
2863 /** Get the input stream.
2864  * @param yyscanner The scanner object.
2865  */
2866 FILE *ast_yyget_in  (yyscan_t yyscanner)
2867 {
2868     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2869     return yyin;
2870 }
2871
2872 /** Get the output stream.
2873  * @param yyscanner The scanner object.
2874  */
2875 FILE *ast_yyget_out  (yyscan_t yyscanner)
2876 {
2877     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2878     return yyout;
2879 }
2880
2881 /** Get the length of the current token.
2882  * @param yyscanner The scanner object.
2883  */
2884 int ast_yyget_leng  (yyscan_t yyscanner)
2885 {
2886     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2887     return yyleng;
2888 }
2889
2890 /** Get the current token.
2891  * @param yyscanner The scanner object.
2892  */
2893
2894 char *ast_yyget_text  (yyscan_t yyscanner)
2895 {
2896     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2897     return yytext;
2898 }
2899
2900 /** Set the user-defined data. This data is never touched by the scanner.
2901  * @param user_defined The data to be associated with this scanner.
2902  * @param yyscanner The scanner object.
2903  */
2904 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2905 {
2906     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2907     yyextra = user_defined ;
2908 }
2909
2910 /** Set the current line number.
2911  * @param line_number
2912  * @param yyscanner The scanner object.
2913  */
2914 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
2915 {
2916     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2917
2918         /* lineno is only valid if an input buffer exists. */
2919         if (! YY_CURRENT_BUFFER )
2920            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
2921     
2922     yylineno = line_number;
2923 }
2924
2925 /** Set the current column.
2926  * @param line_number
2927  * @param yyscanner The scanner object.
2928  */
2929 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
2930 {
2931     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2932
2933         /* column is only valid if an input buffer exists. */
2934         if (! YY_CURRENT_BUFFER )
2935            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
2936     
2937     yycolumn = column_no;
2938 }
2939
2940 /** Set the input stream. This does not discard the current
2941  * input buffer.
2942  * @param in_str A readable stream.
2943  * @param yyscanner The scanner object.
2944  * @see ast_yy_switch_to_buffer
2945  */
2946 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
2947 {
2948     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2949     yyin = in_str ;
2950 }
2951
2952 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
2953 {
2954     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2955     yyout = out_str ;
2956 }
2957
2958 int ast_yyget_debug  (yyscan_t yyscanner)
2959 {
2960     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2961     return yy_flex_debug;
2962 }
2963
2964 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
2965 {
2966     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2967     yy_flex_debug = bdebug ;
2968 }
2969
2970 /* Accessor methods for yylval and yylloc */
2971
2972 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
2973 {
2974     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2975     return yylval;
2976 }
2977
2978 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2979 {
2980     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2981     yylval = yylval_param;
2982 }
2983
2984 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
2985 {
2986     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2987     return yylloc;
2988 }
2989     
2990 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
2991 {
2992     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2993     yylloc = yylloc_param;
2994 }
2995     
2996 static int yy_init_globals (yyscan_t yyscanner)
2997 {
2998     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2999     /* Initialization is the same as for the non-reentrant scanner.
3000        This function is called once per scanner lifetime. */
3001
3002     yyg->yy_buffer_stack = 0;
3003     yyg->yy_buffer_stack_top = 0;
3004     yyg->yy_buffer_stack_max = 0;
3005     yyg->yy_c_buf_p = (char *) 0;
3006     yyg->yy_init = 1;
3007     yyg->yy_start = 0;
3008     yyg->yy_start_stack_ptr = 0;
3009     yyg->yy_start_stack_depth = 0;
3010     yyg->yy_start_stack = (int *) 0;
3011
3012 /* Defined in main.c */
3013 #ifdef YY_STDINIT
3014     yyin = stdin;
3015     yyout = stdout;
3016 #else
3017     yyin = (FILE *) 0;
3018     yyout = (FILE *) 0;
3019 #endif
3020
3021     /* For future reference: Set errno on error, since we are called by
3022      * ast_yylex_init()
3023      */
3024     return 0;
3025 }
3026
3027 /* User-visible API */
3028
3029 /* ast_yylex_init is special because it creates the scanner itself, so it is
3030  * the ONLY reentrant function that doesn't take the scanner as the last argument.
3031  * That's why we explicitly handle the declaration, instead of using our macros.
3032  */
3033
3034 int ast_yylex_init(yyscan_t* ptr_yy_globals)
3035
3036 {
3037     if (ptr_yy_globals == NULL){
3038         errno = EINVAL;
3039         return 1;
3040     }
3041
3042     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
3043
3044     if (*ptr_yy_globals == NULL){
3045         errno = ENOMEM;
3046         return 1;
3047     }
3048
3049     memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
3050
3051     return yy_init_globals ( *ptr_yy_globals );
3052 }
3053
3054 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
3055 int ast_yylex_destroy  (yyscan_t yyscanner)
3056 {
3057     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3058
3059     /* Pop the buffer stack, destroying each element. */
3060         while(YY_CURRENT_BUFFER){
3061                 ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3062                 YY_CURRENT_BUFFER_LVALUE = NULL;
3063                 ast_yypop_buffer_state(yyscanner);
3064         }
3065
3066         /* Destroy the stack itself. */
3067         ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
3068         yyg->yy_buffer_stack = NULL;
3069
3070     /* Destroy the start condition stack. */
3071         ast_yyfree(yyg->yy_start_stack ,yyscanner );
3072         yyg->yy_start_stack = NULL;
3073
3074     /* Destroy the main struct (reentrant only). */
3075     ast_yyfree ( yyscanner , yyscanner );
3076     return 0;
3077 }
3078
3079 /*
3080  * Internal utility routines.
3081  */
3082
3083 #ifndef yytext_ptr
3084 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3085 {
3086         register int i;
3087     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3088         for ( i = 0; i < n; ++i )
3089                 s1[i] = s2[i];
3090 }
3091 #endif
3092
3093 #ifdef YY_NEED_STRLEN
3094 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3095 {
3096         register int n;
3097     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3098         for ( n = 0; s[n]; ++n )
3099                 ;
3100
3101         return n;
3102 }
3103 #endif
3104
3105 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
3106 {
3107         return (void *) malloc( size );
3108 }
3109
3110 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
3111 {
3112         /* The cast to (char *) in the following accommodates both
3113          * implementations that use char* generic pointers, and those
3114          * that use void* generic pointers.  It works with the latter
3115          * because both ANSI C and C++ allow castless assignment from
3116          * any pointer type to void*, and deal with argument conversions
3117          * as though doing an assignment.
3118          */
3119         return (void *) realloc( (char *) ptr, size );
3120 }
3121
3122 void ast_yyfree (void * ptr , yyscan_t yyscanner)
3123 {
3124         free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
3125 }
3126
3127 #define YYTABLES_NAME "yytables"
3128
3129 #undef YY_NEW_FILE
3130 #undef YY_FLUSH_BUFFER
3131 #undef yy_set_bol
3132 #undef yy_new_buffer
3133 #undef yy_set_interactive
3134 #undef yytext_ptr
3135 #undef YY_DO_BEFORE_ACTION
3136
3137 #ifdef YY_DECL_IS_OURS
3138 #undef YY_DECL_IS_OURS
3139 #undef YY_DECL
3140 #endif
3141 #line 222 "ast_expr2.fl"
3142
3143
3144
3145 /* I'm putting the interface routine to the whole parse here in the flexer input file
3146    mainly because of all the flexer initialization that has to be done. Shouldn't matter
3147    where it is, as long as it's somewhere. I didn't want to define a prototype for the
3148    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
3149         UGH! that would be inappropriate. */
3150
3151 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
3152 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
3153
3154 int ast_expr(char *expr, char *buf, int length)
3155 {
3156         struct parse_io io;
3157         int return_value = 0;
3158         
3159         memset(&io, 0, sizeof(io));
3160         io.string = expr;  /* to pass to the error routine */
3161         
3162         ast_yylex_init(&io.scanner);
3163         
3164         ast_yy_scan_string(expr, io.scanner);
3165         
3166         ast_yyparse ((void *) &io);
3167
3168         ast_yylex_destroy(io.scanner);
3169
3170         if (!io.val) {
3171                 if (length > 1) {
3172                         strcpy(buf, "0");
3173                         return_value = 1;
3174                 }
3175         } else {
3176                 if (io.val->type == AST_EXPR_number) {
3177                         int res_length;
3178
3179                         res_length = snprintf(buf, length, FP___PRINTF, io.val->u.i);
3180                         return_value = (res_length <= length) ? res_length : length;
3181                 } else {
3182 #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
3183                         strncpy(buf, io.val->u.s, length - 1);
3184 #else /* !STANDALONE && !LOW_MEMORY */
3185                         ast_copy_string(buf, io.val->u.s, length);
3186 #endif /* STANDALONE || LOW_MEMORY */
3187                         return_value = strlen(buf);
3188                         free(io.val->u.s);
3189                 }
3190                 free(io.val);
3191         }
3192         return return_value;
3193 }
3194
3195
3196 char extra_error_message[4095];
3197 int extra_error_message_supplied = 0;
3198 void  ast_expr_register_extra_error_info(char *message);
3199 void  ast_expr_clear_extra_error_info(void);
3200
3201 void  ast_expr_register_extra_error_info(char *message)
3202 {
3203        extra_error_message_supplied=1;
3204        strcpy(extra_error_message, message);
3205 }
3206
3207 void  ast_expr_clear_extra_error_info(void)
3208 {
3209        extra_error_message_supplied=0;
3210        extra_error_message[0] = 0;
3211 }
3212
3213 static char *expr2_token_equivs1[] = 
3214 {
3215         "TOKEN",
3216         "TOK_COND",
3217         "TOK_COLONCOLON",
3218         "TOK_OR",
3219         "TOK_AND",
3220         "TOK_EQ",
3221         "TOK_GT",
3222         "TOK_LT",
3223         "TOK_GE",
3224         "TOK_LE",
3225         "TOK_NE",
3226         "TOK_PLUS",
3227         "TOK_MINUS",
3228         "TOK_MULT",
3229         "TOK_DIV",
3230         "TOK_MOD",
3231         "TOK_COMPL",
3232         "TOK_COLON",
3233         "TOK_EQTILDE",
3234         "TOK_RP",
3235         "TOK_LP"
3236 };
3237
3238 static char *expr2_token_equivs2[] = 
3239 {
3240         "<token>",
3241         "?",
3242         "::",
3243         "|",
3244         "&",
3245         "=",