ed874559607bedce5cc5bb742e4ca34e21eb5a25
[asterisk/asterisk.git] / 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,   36,  -11,   36,   36,   36,  -11,   36,
527       -11,  -11,  -11,  -11,   36,  -11,   36,  -11,   36,   36,
528        36,   36,   36,   36,   36,   36,   36,   36,  -11,   36,
529       -11,   37,  -11,  -11,   36,   36,   36,   36,   36,   36,
530
531        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
532        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
533        36,  -11,   36,  -11,   36,   36,  -11,   36,   36,   36,
534        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
535        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
536        36,   36,   36,  -11,  -11,  -11,  -11,  -11
537     },
538
539     {
540         7,   38,   38,   38,   38,   38,   38,   38,   38,   38,
541        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
542        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
543        38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
544
545        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
546        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
547        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
548        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
549        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
550        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
551        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
552        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
553        38,   38,   38,   38,   38,   38,   38,   38
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,   36,  -13,   36,   36,   36,  -13,   36,
562       -13,  -13,  -13,  -13,   36,  -13,   36,  -13,   36,   36,
563        36,   36,   36,   36,   36,   36,   36,   36,  -13,   36,
564       -13,  -13,  -13,  -13,   36,   36,   36,   36,   36,   36,
565        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
566        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
567        36,  -13,   36,  -13,   36,   36,  -13,   36,   36,   36,
568        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
569
570        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
571        36,   36,   36,  -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,   36,  -14,   36,   36,   36,  -14,   36,
579       -14,  -14,  -14,  -14,   36,  -14,   36,  -14,   36,   36,
580        36,   36,   36,   36,   36,   36,   36,   36,  -14,   36,
581       -14,  -14,  -14,  -14,   36,   36,   36,   36,   36,   36,
582        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
583
584        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
585        36,  -14,   36,  -14,   36,   36,  -14,   36,   36,   36,
586        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
587        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
588        36,   36,   36,   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,   36,  -15,   36,   36,   36,  -15,   36,
596       -15,  -15,  -15,  -15,   36,  -15,   36,  -15,   36,   36,
597
598        36,   36,   36,   36,   36,   36,   36,   36,  -15,   36,
599       -15,  -15,  -15,  -15,   36,   36,   36,   36,   36,   36,
600        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
601        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
602        36,  -15,   36,  -15,   36,   36,  -15,   36,   36,   36,
603        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
604        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
605        36,   36,   36,  -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,  -16,  -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,   36,  -23,   36,   36,   36,  -23,   36,
735       -23,  -23,  -23,  -23,   36,  -23,   36,  -23,   41,   41,
736        41,   41,   41,   41,   41,   41,   41,   41,  -23,   36,
737       -23,  -23,  -23,  -23,   36,   36,   36,   36,   36,   36,
738        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
739        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
740        36,  -23,   36,  -23,   36,   36,  -23,   36,   36,   36,
741        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
742
743        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
744        36,   36,   36,  -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,   42,  -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,   43,  -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,  -26,  -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,  -26,  -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,   44,  -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,  -29,  -29,  -29,  -29
848
849     },
850
851     {
852         7,   45,   45,   45,   45,   45,   45,   45,   45,   45,
853        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
854        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
855        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
856        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
857        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
858        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
859        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
860        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
861        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
862
863        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
864        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
865        45,   45,   45,   46,   45,   47,   45,   45
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,   48,   48,   48,   48,   48,   48,   48,   48,  -33,
904
905       -33,   48,   48,  -33,   48,   48,   48,   48,   48,   48,
906        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
907        48,   48,  -33,  -33,   48,   48,  -33,  -33,  -33,   48,
908       -33,  -33,  -33,  -33,   48,  -33,   48,  -33,   48,   48,
909        48,   48,   48,   48,   48,   48,   48,   48,  -33,   48,
910       -33,  -33,  -33,  -33,   48,   48,   48,   48,   48,   48,
911        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
912        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
913        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
914        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
915
916        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
917        48,   48,   48,   48,  -33,   48,   48,   48
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,   49,  -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,  -37,  -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,   39,   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,   36,  -41,   36,   36,   36,  -41,   36,
1046       -41,  -41,  -41,  -41,   36,  -41,   36,  -41,   41,   41,
1047        41,   41,   41,   41,   41,   41,   41,   41,  -41,   36,
1048       -41,  -41,  -41,  -41,   36,   36,   36,   36,   36,   36,
1049
1050        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1051        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1052        36,  -41,   36,  -41,   36,   36,  -41,   36,   36,   36,
1053        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1054        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
1055        36,   36,   36,  -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,  -42,  -42,  -42,  -42,  -42,
1063
1064       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1065       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1066       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1067       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1068       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1069       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1070       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1071       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
1072       -42,  -42,  -42,  -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,  -43,  -43,  -43,  -43,  -43,
1081       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1082       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1083       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1084       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1085       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1086       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1087       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1088
1089       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
1090       -43,  -43,  -43,  -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,   46,   45,   47,   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
1199 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
1200 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
1201 static int yy_get_next_buffer (yyscan_t yyscanner );
1202 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
1203
1204 /* Done after the current pattern has been matched and before the
1205  * corresponding action - sets up yytext.
1206  */
1207 #define YY_DO_BEFORE_ACTION \
1208         yyg->yytext_ptr = yy_bp; \
1209         yyg->yytext_ptr -= yyg->yy_more_len; \
1210         yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
1211         yyg->yy_hold_char = *yy_cp; \
1212         *yy_cp = '\0'; \
1213         yyg->yy_c_buf_p = yy_cp;
1214
1215 #define YY_NUM_RULES 30
1216 #define YY_END_OF_BUFFER 31
1217 /* This struct is not used in this scanner,
1218    but its presence is necessary. */
1219 struct yy_trans_info
1220         {
1221         flex_int32_t yy_verify;
1222         flex_int32_t yy_nxt;
1223         };
1224 static yyconst flex_int16_t yy_accept[50] =
1225     {   0,
1226         0,    0,    0,    0,   27,   27,   31,   30,   20,   22,
1227        24,   30,   24,   24,   13,    2,   17,   18,   11,    9,
1228        10,   12,   23,   15,    5,    3,    4,   14,    1,   30,
1229        26,   25,   27,   28,   28,   24,    8,    0,   21,   19,
1230        23,   16,    7,    6,    0,   26,   25,   27,   29
1231     } ;
1232
1233 static yyconst yy_state_type yy_NUL_trans[50] =
1234     {   0,
1235         8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
1236         0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
1237         0,    0,    0,    0,    0,    0,    0,    0,    0,   45,
1238         0,    0,   48,    0,    0,    0,    0,   38,    0,    0,
1239         0,    0,    0,    0,   45,    0,    0,   48,    0
1240     } ;
1241
1242 /* The intent behind this definition is that it'll catch
1243  * any uses of REJECT which flex missed.
1244  */
1245 #define REJECT reject_used_but_not_detected
1246 #define yymore() (yyg->yy_more_flag = 1)
1247 #define YY_MORE_ADJ yyg->yy_more_len
1248 #define YY_RESTORE_YY_MORE_OFFSET
1249 #line 1 "ast_expr2.fl"
1250 #line 2 "ast_expr2.fl"
1251 /*! \file
1252  *
1253  * \brief Dialplan Expression Parser
1254  */
1255
1256 #include <sys/types.h>
1257 #include <stdio.h>
1258 #include <stdlib.h>
1259 #include <string.h>
1260 #include <locale.h>
1261 #include <ctype.h>
1262 #if !defined(SOLARIS) && !defined(__CYGWIN__)
1263 #include <err.h>
1264 #else
1265 #define quad_t int64_t
1266 #endif
1267 #include <errno.h>
1268 #include <regex.h>
1269 #include <limits.h>
1270
1271 #include "asterisk.h"
1272
1273 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
1274
1275 #include "asterisk/ast_expr.h"
1276 #include "asterisk/logger.h"
1277 #include "asterisk/strings.h"
1278
1279 enum valtype {
1280         AST_EXPR_integer, AST_EXPR_numeric_string, AST_EXPR_string
1281 } ;
1282
1283 struct val {
1284         enum valtype type;
1285         union {
1286                 char *s;
1287                 quad_t i;
1288         } u;
1289 } ;
1290
1291 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
1292
1293 #define SET_COLUMNS yylloc_param->first_column = (int)(yyg->yytext_r - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);yylloc_param->last_column = yylloc_param->last_column + yyleng - 1; yylloc_param->first_line = yylloc_param->last_line = 1
1294 #define SET_STRING yylval_param->val = (struct val *)calloc(sizeof(struct val),1); yylval_param->val->type = AST_EXPR_string; yylval_param->val->u.s = strdup(yytext);
1295 #define SET_NUMERIC_STRING yylval_param->val = (struct val *)calloc(sizeof(struct val),1); yylval_param->val->type = AST_EXPR_numeric_string; yylval_param->val->u.s = strdup(yytext);
1296
1297 struct parse_io
1298 {
1299         char *string;
1300         struct val *val;
1301         yyscan_t scanner;
1302 };
1303  
1304 void ast_yyset_column(int column_no, yyscan_t yyscanner);
1305 int ast_yyget_column(yyscan_t yyscanner);
1306 static int curlycount = 0;
1307
1308 #line 1304 "ast_expr2f.c"
1309
1310 #define INITIAL 0
1311 #define var 1
1312 #define trail 2
1313
1314 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1315  * down here because we want the user's section 1 to have been scanned first.
1316  * The user has a chance to override it with an option.
1317  */
1318 #include <unistd.h>
1319
1320 #ifndef YY_EXTRA_TYPE
1321 #define YY_EXTRA_TYPE void *
1322 #endif
1323
1324 /* Holds the entire state of the reentrant scanner. */
1325 struct yyguts_t
1326     {
1327
1328     /* User-defined. Not touched by flex. */
1329     YY_EXTRA_TYPE yyextra_r;
1330
1331     /* The rest are the same as the globals declared in the non-reentrant scanner. */
1332     FILE *yyin_r, *yyout_r;
1333     size_t yy_buffer_stack_top; /**< index of top of stack. */
1334     size_t yy_buffer_stack_max; /**< capacity of stack. */
1335     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1336     char yy_hold_char;
1337     int yy_n_chars;
1338     int yyleng_r;
1339     char *yy_c_buf_p;
1340     int yy_init;
1341     int yy_start;
1342     int yy_did_buffer_switch_on_eof;
1343     int yy_start_stack_ptr;
1344     int yy_start_stack_depth;
1345     int *yy_start_stack;
1346     yy_state_type yy_last_accepting_state;
1347     char* yy_last_accepting_cpos;
1348
1349     int yylineno_r;
1350     int yy_flex_debug_r;
1351
1352     char *yytext_r;
1353     int yy_more_flag;
1354     int yy_more_len;
1355
1356     YYSTYPE * yylval_r;
1357
1358     YYLTYPE * yylloc_r;
1359
1360     }; /* end struct yyguts_t */
1361
1362     /* This must go here because YYSTYPE and YYLTYPE are included
1363      * from bison output in section 1.*/
1364     #    define yylval yyg->yylval_r
1365     
1366     #    define yylloc yyg->yylloc_r
1367     
1368 /* Accessor methods to globals.
1369    These are made visible to non-reentrant scanners for convenience. */
1370
1371 int ast_yylex_destroy (yyscan_t yyscanner );
1372
1373 int ast_yyget_debug (yyscan_t yyscanner );
1374
1375 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
1376
1377 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
1378
1379 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1380
1381 FILE *ast_yyget_in (yyscan_t yyscanner );
1382
1383 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
1384
1385 FILE *ast_yyget_out (yyscan_t yyscanner );
1386
1387 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
1388
1389 int ast_yyget_leng (yyscan_t yyscanner );
1390
1391 char *ast_yyget_text (yyscan_t yyscanner );
1392
1393 int ast_yyget_lineno (yyscan_t yyscanner );
1394
1395 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
1396
1397 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
1398
1399 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1400
1401        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
1402     
1403         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1404     
1405 /* Macros after this point can all be overridden by user definitions in
1406  * section 1.
1407  */
1408
1409 #ifndef YY_SKIP_YYWRAP
1410 #ifdef __cplusplus
1411 extern "C" int ast_yywrap (yyscan_t yyscanner );
1412 #else
1413 extern int ast_yywrap (yyscan_t yyscanner );
1414 #endif
1415 #endif
1416
1417     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
1418     
1419 #ifndef yytext_ptr
1420 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1421 #endif
1422
1423 #ifdef YY_NEED_STRLEN
1424 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1425 #endif
1426
1427 #ifndef YY_NO_INPUT
1428
1429 #ifdef __cplusplus
1430 static int yyinput (yyscan_t yyscanner );
1431 #else
1432 static int input (yyscan_t yyscanner );
1433 #endif
1434
1435 #endif
1436
1437 /* Amount of stuff to slurp up with each read. */
1438 #ifndef YY_READ_BUF_SIZE
1439 #define YY_READ_BUF_SIZE 8192
1440 #endif
1441
1442 /* Copy whatever the last rule matched to the standard output. */
1443 #ifndef ECHO
1444 /* This used to be an fputs(), but since the string might contain NUL's,
1445  * we now use fwrite().
1446  */
1447 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1448 #endif
1449
1450 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1451  * is returned in "result".
1452  */
1453 #ifndef YY_INPUT
1454 #define YY_INPUT(buf,result,max_size) \
1455         errno=0; \
1456         while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
1457         { \
1458                 if( errno != EINTR) \
1459                 { \
1460                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1461                         break; \
1462                 } \
1463                 errno=0; \
1464                 clearerr(yyin); \
1465         }\
1466 \
1467
1468 #endif
1469
1470 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1471  * we don't want an extra ';' after the "return" because that will cause
1472  * some compilers to complain about unreachable statements.
1473  */
1474 #ifndef yyterminate
1475 #define yyterminate() return YY_NULL
1476 #endif
1477
1478 /* Number of entries by which start-condition stack grows. */
1479 #ifndef YY_START_STACK_INCR
1480 #define YY_START_STACK_INCR 25
1481 #endif
1482
1483 /* Report a fatal error. */
1484 #ifndef YY_FATAL_ERROR
1485 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1486 #endif
1487
1488 /* end tables serialization structures and prototypes */
1489
1490 /* Default declaration of generated scanner - a define so the user can
1491  * easily add parameters.
1492  */
1493 #ifndef YY_DECL
1494 #define YY_DECL_IS_OURS 1
1495
1496 extern int ast_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1497
1498 #define YY_DECL int ast_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1499 #endif /* !YY_DECL */
1500
1501 /* Code executed at the beginning of each rule, after yytext and yyleng
1502  * have been set up.
1503  */
1504 #ifndef YY_USER_ACTION
1505 #define YY_USER_ACTION
1506 #endif
1507
1508 /* Code executed at the end of each rule. */
1509 #ifndef YY_BREAK
1510 #define YY_BREAK break;
1511 #endif
1512
1513 #define YY_RULE_SETUP \
1514         YY_USER_ACTION
1515
1516 /** The main scanner function which does all the work.
1517  */
1518 YY_DECL
1519 {
1520         register yy_state_type yy_current_state;
1521         register char *yy_cp, *yy_bp;
1522         register int yy_act;
1523     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1524
1525 #line 64 "ast_expr2.fl"
1526
1527
1528 #line 1524 "ast_expr2f.c"
1529
1530     yylval = yylval_param;
1531
1532     yylloc = yylloc_param;
1533
1534         if ( yyg->yy_init )
1535                 {
1536                 yyg->yy_init = 0;
1537
1538 #ifdef YY_USER_INIT
1539                 YY_USER_INIT;
1540 #endif
1541
1542                 if ( ! yyg->yy_start )
1543                         yyg->yy_start = 1;      /* first start state */
1544
1545                 if ( ! yyin )
1546                         yyin = stdin;
1547
1548                 if ( ! yyout )
1549                         yyout = stdout;
1550
1551                 if ( ! YY_CURRENT_BUFFER ) {
1552                         ast_yyensure_buffer_stack (yyscanner);
1553                         YY_CURRENT_BUFFER_LVALUE =
1554                                 ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1555                 }
1556
1557                 ast_yy_load_buffer_state(yyscanner );
1558                 }
1559
1560         while ( 1 )             /* loops until end-of-file is reached */
1561                 {
1562                 yyg->yy_more_len = 0;
1563                 if ( yyg->yy_more_flag )
1564                         {
1565                         yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
1566                         yyg->yy_more_flag = 0;
1567                         }
1568                 yy_cp = yyg->yy_c_buf_p;
1569
1570                 /* Support of yytext. */
1571                 *yy_cp = yyg->yy_hold_char;
1572
1573                 /* yy_bp points to the position in yy_ch_buf of the start of
1574                  * the current run.
1575                  */
1576                 yy_bp = yy_cp;
1577
1578                 yy_current_state = yyg->yy_start;
1579 yy_match:
1580                 while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
1581                         {
1582                         if ( yy_accept[yy_current_state] )
1583                                 {
1584                                 yyg->yy_last_accepting_state = yy_current_state;
1585                                 yyg->yy_last_accepting_cpos = yy_cp;
1586                                 }
1587
1588                         ++yy_cp;
1589                         }
1590
1591                 yy_current_state = -yy_current_state;
1592
1593 yy_find_action:
1594                 yy_act = yy_accept[yy_current_state];
1595
1596                 YY_DO_BEFORE_ACTION;
1597
1598 do_action:      /* This label is used only to access EOF actions. */
1599
1600                 switch ( yy_act )
1601         { /* beginning of action switch */
1602                         case 0: /* must back up */
1603                         /* undo the effects of YY_DO_BEFORE_ACTION */
1604                         *yy_cp = yyg->yy_hold_char;
1605                         yy_cp = yyg->yy_last_accepting_cpos + 1;
1606                         yy_current_state = yyg->yy_last_accepting_state;
1607                         goto yy_find_action;
1608
1609 case 1:
1610 YY_RULE_SETUP
1611 #line 66 "ast_expr2.fl"
1612 { SET_COLUMNS; SET_STRING; return TOK_OR;}
1613         YY_BREAK
1614 case 2:
1615 YY_RULE_SETUP
1616 #line 67 "ast_expr2.fl"
1617 { SET_COLUMNS; SET_STRING; return TOK_AND;}
1618         YY_BREAK
1619 case 3:
1620 YY_RULE_SETUP
1621 #line 68 "ast_expr2.fl"
1622 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
1623         YY_BREAK
1624 case 4:
1625 YY_RULE_SETUP
1626 #line 69 "ast_expr2.fl"
1627 { SET_COLUMNS; SET_STRING; return TOK_GT;}
1628         YY_BREAK
1629 case 5:
1630 YY_RULE_SETUP
1631 #line 70 "ast_expr2.fl"
1632 { SET_COLUMNS; SET_STRING; return TOK_LT;}
1633         YY_BREAK
1634 case 6:
1635 YY_RULE_SETUP
1636 #line 71 "ast_expr2.fl"
1637 { SET_COLUMNS; SET_STRING; return TOK_GE;}
1638         YY_BREAK
1639 case 7:
1640 YY_RULE_SETUP
1641 #line 72 "ast_expr2.fl"
1642 { SET_COLUMNS; SET_STRING; return TOK_LE;}
1643         YY_BREAK
1644 case 8:
1645 YY_RULE_SETUP
1646 #line 73 "ast_expr2.fl"
1647 { SET_COLUMNS; SET_STRING; return TOK_NE;}
1648         YY_BREAK
1649 case 9:
1650 YY_RULE_SETUP
1651 #line 74 "ast_expr2.fl"
1652 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
1653         YY_BREAK
1654 case 10:
1655 YY_RULE_SETUP
1656 #line 75 "ast_expr2.fl"
1657 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
1658         YY_BREAK
1659 case 11:
1660 YY_RULE_SETUP
1661 #line 76 "ast_expr2.fl"
1662 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
1663         YY_BREAK
1664 case 12:
1665 YY_RULE_SETUP
1666 #line 77 "ast_expr2.fl"
1667 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
1668         YY_BREAK
1669 case 13:
1670 YY_RULE_SETUP
1671 #line 78 "ast_expr2.fl"
1672 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
1673         YY_BREAK
1674 case 14:
1675 YY_RULE_SETUP
1676 #line 79 "ast_expr2.fl"
1677 { SET_COLUMNS; SET_STRING; return TOK_COND;}
1678         YY_BREAK
1679 case 15:
1680 YY_RULE_SETUP
1681 #line 80 "ast_expr2.fl"
1682 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
1683         YY_BREAK
1684 case 16:
1685 YY_RULE_SETUP
1686 #line 81 "ast_expr2.fl"
1687 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
1688         YY_BREAK
1689 case 17:
1690 YY_RULE_SETUP
1691 #line 82 "ast_expr2.fl"
1692 { SET_COLUMNS; SET_STRING; return TOK_LP;}
1693         YY_BREAK
1694 case 18:
1695 YY_RULE_SETUP
1696 #line 83 "ast_expr2.fl"
1697 { SET_COLUMNS; SET_STRING; return TOK_RP;}
1698         YY_BREAK
1699 case 19:
1700 YY_RULE_SETUP
1701 #line 84 "ast_expr2.fl"
1702 {/* gather the contents of ${} expressions, with trailing stuff, into a single TOKEN. They are much more complex now than they used to be */
1703                        curlycount = 0; BEGIN(var); yymore();}
1704         YY_BREAK
1705 case 20:
1706 YY_RULE_SETUP
1707 #line 87 "ast_expr2.fl"
1708 {}
1709         YY_BREAK
1710 case 21:
1711 /* rule 21 can match eol */
1712 YY_RULE_SETUP
1713 #line 88 "ast_expr2.fl"
1714 {SET_COLUMNS; SET_STRING; return TOKEN;}
1715         YY_BREAK
1716 case 22:
1717 /* rule 22 can match eol */
1718 YY_RULE_SETUP
1719 #line 90 "ast_expr2.fl"
1720 {/* what to do with eol */}
1721         YY_BREAK
1722 case 23:
1723 YY_RULE_SETUP
1724 #line 91 "ast_expr2.fl"
1725 {   SET_COLUMNS;  /* the original behavior of the expression parser was to bring in numbers as a numeric string */
1726                                 SET_NUMERIC_STRING;
1727                                 return TOKEN;}
1728         YY_BREAK
1729 case 24:
1730 YY_RULE_SETUP
1731 #line 94 "ast_expr2.fl"
1732 {SET_COLUMNS; SET_STRING; return TOKEN;}
1733         YY_BREAK
1734 case 25:
1735 /* rule 25 can match eol */
1736 YY_RULE_SETUP
1737 #line 96 "ast_expr2.fl"
1738 {curlycount--; if(curlycount < 0){ BEGIN(trail);  yymore();} else {  yymore();}}
1739         YY_BREAK
1740 case 26:
1741 /* rule 26 can match eol */
1742 YY_RULE_SETUP
1743 #line 97 "ast_expr2.fl"
1744 {curlycount++; yymore();  }
1745         YY_BREAK
1746 case 27:
1747 YY_RULE_SETUP
1748 #line 98 "ast_expr2.fl"
1749 {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN;}
1750         YY_BREAK
1751 case 28:
1752 /* rule 28 can match eol */
1753 YY_RULE_SETUP
1754 #line 99 "ast_expr2.fl"
1755 {char c = yytext[yyleng-1]; BEGIN(0); unput(c); SET_COLUMNS; SET_STRING; return TOKEN;}
1756         YY_BREAK
1757 case 29:
1758 YY_RULE_SETUP
1759 #line 100 "ast_expr2.fl"
1760 {curlycount = 0; BEGIN(var); yymore();  }
1761         YY_BREAK
1762 case YY_STATE_EOF(trail):
1763 #line 101 "ast_expr2.fl"
1764 {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN; /* actually, if an expr is only a variable ref, this could happen a LOT */}
1765         YY_BREAK
1766 case 30:
1767 YY_RULE_SETUP
1768 #line 103 "ast_expr2.fl"
1769 ECHO;
1770         YY_BREAK
1771 #line 1767 "ast_expr2f.c"
1772 case YY_STATE_EOF(INITIAL):
1773 case YY_STATE_EOF(var):
1774         yyterminate();
1775
1776         case YY_END_OF_BUFFER:
1777                 {
1778                 /* Amount of text matched not including the EOB char. */
1779                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1780
1781                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1782                 *yy_cp = yyg->yy_hold_char;
1783                 YY_RESTORE_YY_MORE_OFFSET
1784
1785                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1786                         {
1787                         /* We're scanning a new file or input source.  It's
1788                          * possible that this happened because the user
1789                          * just pointed yyin at a new source and called
1790                          * ast_yylex().  If so, then we have to assure
1791                          * consistency between YY_CURRENT_BUFFER and our
1792                          * globals.  Here is the right place to do so, because
1793                          * this is the first action (other than possibly a
1794                          * back-up) that will match for the new input source.
1795                          */
1796                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1797                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1798                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1799                         }
1800
1801                 /* Note that here we test for yy_c_buf_p "<=" to the position
1802                  * of the first EOB in the buffer, since yy_c_buf_p will
1803                  * already have been incremented past the NUL character
1804                  * (since all states make transitions on EOB to the
1805                  * end-of-buffer state).  Contrast this with the test
1806                  * in input().
1807                  */
1808                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1809                         { /* This was really a NUL. */
1810                         yy_state_type yy_next_state;
1811
1812                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1813
1814                         yy_current_state = yy_get_previous_state( yyscanner );
1815
1816                         /* Okay, we're now positioned to make the NUL
1817                          * transition.  We couldn't have
1818                          * yy_get_previous_state() go ahead and do it
1819                          * for us because it doesn't know how to deal
1820                          * with the possibility of jamming (and we don't
1821                          * want to build jamming into it because then it
1822                          * will run more slowly).
1823                          */
1824
1825                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1826
1827                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1828
1829                         if ( yy_next_state )
1830                                 {
1831                                 /* Consume the NUL. */
1832                                 yy_cp = ++yyg->yy_c_buf_p;
1833                                 yy_current_state = yy_next_state;
1834                                 goto yy_match;
1835                                 }
1836
1837                         else
1838                                 {
1839                                 yy_cp = yyg->yy_c_buf_p;
1840                                 goto yy_find_action;
1841                                 }
1842                         }
1843
1844                 else switch ( yy_get_next_buffer( yyscanner ) )
1845                         {
1846                         case EOB_ACT_END_OF_FILE:
1847                                 {
1848                                 yyg->yy_did_buffer_switch_on_eof = 0;
1849
1850                                 if ( ast_yywrap(yyscanner ) )
1851                                         {
1852                                         /* Note: because we've taken care in
1853                                          * yy_get_next_buffer() to have set up
1854                                          * yytext, we can now set up
1855                                          * yy_c_buf_p so that if some total
1856                                          * hoser (like flex itself) wants to
1857                                          * call the scanner after we return the
1858                                          * YY_NULL, it'll still work - another
1859                                          * YY_NULL will get returned.
1860                                          */
1861                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1862
1863                                         yy_act = YY_STATE_EOF(YY_START);
1864                                         goto do_action;
1865                                         }
1866
1867                                 else
1868                                         {
1869                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
1870                                                 YY_NEW_FILE;
1871                                         }
1872                                 break;
1873                                 }
1874
1875                         case EOB_ACT_CONTINUE_SCAN:
1876                                 yyg->yy_c_buf_p =
1877                                         yyg->yytext_ptr + yy_amount_of_matched_text;
1878
1879                                 yy_current_state = yy_get_previous_state( yyscanner );
1880
1881                                 yy_cp = yyg->yy_c_buf_p;
1882                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1883                                 goto yy_match;
1884
1885                         case EOB_ACT_LAST_MATCH:
1886                                 yyg->yy_c_buf_p =
1887                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1888
1889                                 yy_current_state = yy_get_previous_state( yyscanner );
1890
1891                                 yy_cp = yyg->yy_c_buf_p;
1892                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1893                                 goto yy_find_action;
1894                         }
1895                 break;
1896                 }
1897
1898         default:
1899                 YY_FATAL_ERROR(
1900                         "fatal flex scanner internal error--no action found" );
1901         } /* end of action switch */
1902                 } /* end of scanning one token */
1903 } /* end of ast_yylex */
1904
1905 /* yy_get_next_buffer - try to read in a new buffer
1906  *
1907  * Returns a code representing an action:
1908  *      EOB_ACT_LAST_MATCH -
1909  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1910  *      EOB_ACT_END_OF_FILE - end of file
1911  */
1912 static int yy_get_next_buffer (yyscan_t yyscanner)
1913 {
1914     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1915         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1916         register char *source = yyg->yytext_ptr;
1917         register int number_to_move, i;
1918         int ret_val;
1919
1920         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1921                 YY_FATAL_ERROR(
1922                 "fatal flex scanner internal error--end of buffer missed" );
1923
1924         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1925                 { /* Don't try to fill the buffer, so this is an EOF. */
1926                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1927                         {
1928                         /* We matched a single character, the EOB, so
1929                          * treat this as a final EOF.
1930                          */
1931                         return EOB_ACT_END_OF_FILE;
1932                         }
1933
1934                 else
1935                         {
1936                         /* We matched some text prior to the EOB, first
1937                          * process it.
1938                          */
1939                         return EOB_ACT_LAST_MATCH;
1940                         }
1941                 }
1942
1943         /* Try to read more data. */
1944
1945         /* First move last chars to start of buffer. */
1946         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
1947
1948         for ( i = 0; i < number_to_move; ++i )
1949                 *(dest++) = *(source++);
1950
1951         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1952                 /* don't do the read, it's not guaranteed to return an EOF,
1953                  * just force an EOF
1954                  */
1955                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1956
1957         else
1958                 {
1959                         size_t num_to_read =
1960                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1961
1962                 while ( num_to_read <= 0 )
1963                         { /* Not enough room in the buffer - grow it. */
1964
1965                         /* just a shorter name for the current buffer */
1966                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1967
1968                         int yy_c_buf_p_offset =
1969                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1970
1971                         if ( b->yy_is_our_buffer )
1972                                 {
1973                                 int new_size = b->yy_buf_size * 2;
1974
1975                                 if ( new_size <= 0 )
1976                                         b->yy_buf_size += b->yy_buf_size / 8;
1977                                 else
1978                                         b->yy_buf_size *= 2;
1979
1980                                 b->yy_ch_buf = (char *)
1981                                         /* Include room in for 2 EOB chars. */
1982                                         ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
1983                                 }
1984                         else
1985                                 /* Can't grow it, we don't own it. */
1986                                 b->yy_ch_buf = 0;
1987
1988                         if ( ! b->yy_ch_buf )
1989                                 YY_FATAL_ERROR(
1990                                 "fatal error - scanner input buffer overflow" );
1991
1992                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1993
1994                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1995                                                 number_to_move - 1;
1996
1997                         }
1998
1999                 if ( num_to_read > YY_READ_BUF_SIZE )
2000                         num_to_read = YY_READ_BUF_SIZE;
2001
2002                 /* Read in more data. */
2003                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2004                         yyg->yy_n_chars, num_to_read );
2005
2006                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2007                 }
2008
2009         if ( yyg->yy_n_chars == 0 )
2010                 {
2011                 if ( number_to_move == YY_MORE_ADJ )
2012                         {
2013                         ret_val = EOB_ACT_END_OF_FILE;
2014                         ast_yyrestart(yyin  ,yyscanner);
2015                         }
2016
2017                 else
2018                         {
2019                         ret_val = EOB_ACT_LAST_MATCH;
2020                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2021                                 YY_BUFFER_EOF_PENDING;
2022                         }
2023                 }
2024
2025         else
2026                 ret_val = EOB_ACT_CONTINUE_SCAN;
2027
2028         yyg->yy_n_chars += number_to_move;
2029         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2030         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2031
2032         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2033
2034         return ret_val;
2035 }
2036
2037 /* yy_get_previous_state - get the state just before the EOB char was reached */
2038
2039     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2040 {
2041         register yy_state_type yy_current_state;
2042         register char *yy_cp;
2043     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2044
2045         yy_current_state = yyg->yy_start;
2046
2047         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2048                 {
2049                 if ( *yy_cp )
2050                         {
2051                         yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
2052                         }
2053                 else
2054                         yy_current_state = yy_NUL_trans[yy_current_state];
2055                 if ( yy_accept[yy_current_state] )
2056                         {
2057                         yyg->yy_last_accepting_state = yy_current_state;
2058                         yyg->yy_last_accepting_cpos = yy_cp;
2059                         }
2060                 }
2061
2062         return yy_current_state;
2063 }
2064
2065 /* yy_try_NUL_trans - try to make a transition on the NUL character
2066  *
2067  * synopsis
2068  *      next_state = yy_try_NUL_trans( current_state );
2069  */
2070     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
2071 {
2072         register int yy_is_jam;
2073     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2074         register char *yy_cp = yyg->yy_c_buf_p;
2075
2076         yy_current_state = yy_NUL_trans[yy_current_state];
2077         yy_is_jam = (yy_current_state == 0);
2078
2079         if ( ! yy_is_jam )
2080                 {
2081                 if ( yy_accept[yy_current_state] )
2082                         {
2083                         yyg->yy_last_accepting_state = yy_current_state;
2084                         yyg->yy_last_accepting_cpos = yy_cp;
2085                         }
2086                 }
2087
2088         return yy_is_jam ? 0 : yy_current_state;
2089 }
2090
2091     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
2092 {
2093         register char *yy_cp;
2094     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2095
2096     yy_cp = yyg->yy_c_buf_p;
2097
2098         /* undo effects of setting up yytext */
2099         *yy_cp = yyg->yy_hold_char;
2100
2101         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2102                 { /* need to shift things up to make room */
2103                 /* +2 for EOB chars. */
2104                 register int number_to_move = yyg->yy_n_chars + 2;
2105                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2106                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2107                 register char *source =
2108                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2109
2110                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2111                         *--dest = *--source;
2112
2113                 yy_cp += (int) (dest - source);
2114                 yy_bp += (int) (dest - source);
2115                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2116                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2117
2118                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2119                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2120                 }
2121
2122         *--yy_cp = (char) c;
2123
2124         yyg->yytext_ptr = yy_bp;
2125         yyg->yy_hold_char = *yy_cp;
2126         yyg->yy_c_buf_p = yy_cp;
2127 }
2128
2129 #ifndef YY_NO_INPUT
2130 #ifdef __cplusplus
2131     static int yyinput (yyscan_t yyscanner)
2132 #else
2133     static int input  (yyscan_t yyscanner)
2134 #endif
2135
2136 {
2137         int c;
2138     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2139
2140         *yyg->yy_c_buf_p = yyg->yy_hold_char;
2141
2142         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2143                 {
2144                 /* yy_c_buf_p now points to the character we want to return.
2145                  * If this occurs *before* the EOB characters, then it's a
2146                  * valid NUL; if not, then we've hit the end of the buffer.
2147                  */
2148                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2149                         /* This was really a NUL. */
2150                         *yyg->yy_c_buf_p = '\0';
2151
2152                 else
2153                         { /* need more input */
2154                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2155                         ++yyg->yy_c_buf_p;
2156
2157                         switch ( yy_get_next_buffer( yyscanner ) )
2158                                 {
2159                                 case EOB_ACT_LAST_MATCH:
2160                                         /* This happens because yy_g_n_b()
2161                                          * sees that we've accumulated a
2162                                          * token and flags that we need to
2163                                          * try matching the token before
2164                                          * proceeding.  But for input(),
2165                                          * there's no matching to consider.
2166                                          * So convert the EOB_ACT_LAST_MATCH
2167                                          * to EOB_ACT_END_OF_FILE.
2168                                          */
2169
2170                                         /* Reset buffer status. */
2171                                         ast_yyrestart(yyin ,yyscanner);
2172
2173                                         /*FALLTHROUGH*/
2174
2175                                 case EOB_ACT_END_OF_FILE:
2176                                         {
2177                                         if ( ast_yywrap(yyscanner ) )
2178                                                 return EOF;
2179
2180                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
2181                                                 YY_NEW_FILE;
2182 #ifdef __cplusplus
2183                                         return yyinput(yyscanner);
2184 #else
2185                                         return input(yyscanner);
2186 #endif
2187                                         }
2188
2189                                 case EOB_ACT_CONTINUE_SCAN:
2190                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2191                                         break;
2192                                 }
2193                         }
2194                 }
2195
2196         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2197         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
2198         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2199
2200         return c;
2201 }
2202 #endif  /* ifndef YY_NO_INPUT */
2203
2204 /** Immediately switch to a different input stream.
2205  * @param input_file A readable stream.
2206  * @param yyscanner The scanner object.
2207  * @note This function does not reset the start condition to @c INITIAL .
2208  */
2209     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
2210 {
2211     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2212
2213         if ( ! YY_CURRENT_BUFFER ){
2214         ast_yyensure_buffer_stack (yyscanner);
2215                 YY_CURRENT_BUFFER_LVALUE =
2216             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2217         }
2218
2219         ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2220         ast_yy_load_buffer_state(yyscanner );
2221 }
2222
2223 /** Switch to a different input buffer.
2224  * @param new_buffer The new input buffer.
2225  * @param yyscanner The scanner object.
2226  */
2227     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
2228 {
2229     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2230
2231         /* TODO. We should be able to replace this entire function body
2232          * with
2233          *              ast_yypop_buffer_state();
2234          *              ast_yypush_buffer_state(new_buffer);
2235      */
2236         ast_yyensure_buffer_stack (yyscanner);
2237         if ( YY_CURRENT_BUFFER == new_buffer )
2238                 return;
2239
2240         if ( YY_CURRENT_BUFFER )
2241                 {
2242                 /* Flush out information for old buffer. */
2243                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2244                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2245                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2246                 }
2247
2248         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2249         ast_yy_load_buffer_state(yyscanner );
2250
2251         /* We don't actually know whether we did this switch during
2252          * EOF (ast_yywrap()) processing, but the only time this flag
2253          * is looked at is after ast_yywrap() is called, so it's safe
2254          * to go ahead and always set it.
2255          */
2256         yyg->yy_did_buffer_switch_on_eof = 1;
2257 }
2258
2259 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
2260 {
2261     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2262         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2263         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2264         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2265         yyg->yy_hold_char = *yyg->yy_c_buf_p;
2266 }
2267
2268 /** Allocate and initialize an input buffer state.
2269  * @param file A readable stream.
2270  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2271  * @param yyscanner The scanner object.
2272  * @return the allocated buffer state.
2273  */
2274     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
2275 {
2276         YY_BUFFER_STATE b;
2277     
2278         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2279         if ( ! b )
2280                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2281
2282         b->yy_buf_size = size;
2283
2284         /* yy_ch_buf has to be 2 characters longer than the size given because
2285          * we need to put in 2 end-of-buffer characters.
2286          */
2287         b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
2288         if ( ! b->yy_ch_buf )
2289                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
2290
2291         b->yy_is_our_buffer = 1;
2292
2293         ast_yy_init_buffer(b,file ,yyscanner);
2294
2295         return b;
2296 }
2297
2298 /** Destroy the buffer.
2299  * @param b a buffer created with ast_yy_create_buffer()
2300  * @param yyscanner The scanner object.
2301  */
2302     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2303 {
2304     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2305
2306         if ( ! b )
2307                 return;
2308
2309         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2310                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2311
2312         if ( b->yy_is_our_buffer )
2313                 ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
2314
2315         ast_yyfree((void *) b ,yyscanner );
2316 }
2317
2318 #ifndef __cplusplus
2319 extern int isatty (int );
2320 #endif /* __cplusplus */
2321     
2322 /* Initializes or reinitializes a buffer.
2323  * This function is sometimes called more than once on the same buffer,
2324  * such as during a ast_yyrestart() or at EOF.
2325  */
2326     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
2327
2328 {
2329         int oerrno = errno;
2330     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2331
2332         ast_yy_flush_buffer(b ,yyscanner);
2333
2334         b->yy_input_file = file;
2335         b->yy_fill_buffer = 1;
2336
2337     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
2338      * called from ast_yyrestart() or through yy_get_next_buffer.
2339      * In that case, we don't want to reset the lineno or column.
2340      */
2341     if (b != YY_CURRENT_BUFFER){
2342         b->yy_bs_lineno = 1;
2343         b->yy_bs_column = 0;
2344     }
2345
2346         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2347     
2348         errno = oerrno;
2349 }
2350
2351 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2352  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2353  * @param yyscanner The scanner object.
2354  */
2355     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
2356 {
2357     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2358         if ( ! b )
2359                 return;
2360
2361         b->yy_n_chars = 0;
2362
2363         /* We always need two end-of-buffer characters.  The first causes
2364          * a transition to the end-of-buffer state.  The second causes
2365          * a jam in that state.
2366          */
2367         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2368         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2369
2370         b->yy_buf_pos = &b->yy_ch_buf[0];
2371
2372         b->yy_at_bol = 1;
2373         b->yy_buffer_status = YY_BUFFER_NEW;
2374
2375         if ( b == YY_CURRENT_BUFFER )
2376                 ast_yy_load_buffer_state(yyscanner );
2377 }
2378
2379 /** Pushes the new state onto the stack. The new state becomes
2380  *  the current state. This function will allocate the stack
2381  *  if necessary.
2382  *  @param new_buffer The new state.
2383  *  @param yyscanner The scanner object.
2384  */
2385 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2386 {
2387     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2388         if (new_buffer == NULL)
2389                 return;
2390
2391         ast_yyensure_buffer_stack(yyscanner);
2392
2393         /* This block is copied from ast_yy_switch_to_buffer. */
2394         if ( YY_CURRENT_BUFFER )
2395                 {
2396                 /* Flush out information for old buffer. */
2397                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2398                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2399                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2400                 }
2401
2402         /* Only push if top exists. Otherwise, replace top. */
2403         if (YY_CURRENT_BUFFER)
2404                 yyg->yy_buffer_stack_top++;
2405         YY_CURRENT_BUFFER_LVALUE = new_buffer;
2406
2407         /* copied from ast_yy_switch_to_buffer. */
2408         ast_yy_load_buffer_state(yyscanner );
2409         yyg->yy_did_buffer_switch_on_eof = 1;
2410 }
2411
2412 /** Removes and deletes the top of the stack, if present.
2413  *  The next element becomes the new top.
2414  *  @param yyscanner The scanner object.
2415  */
2416 void ast_yypop_buffer_state (yyscan_t yyscanner)
2417 {
2418     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2419         if (!YY_CURRENT_BUFFER)
2420                 return;
2421
2422         ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2423         YY_CURRENT_BUFFER_LVALUE = NULL;
2424         if (yyg->yy_buffer_stack_top > 0)
2425                 --yyg->yy_buffer_stack_top;
2426
2427         if (YY_CURRENT_BUFFER) {
2428                 ast_yy_load_buffer_state(yyscanner );
2429                 yyg->yy_did_buffer_switch_on_eof = 1;
2430         }
2431 }
2432
2433 /* Allocates the stack if it does not exist.
2434  *  Guarantees space for at least one push.
2435  */
2436 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
2437 {
2438         int num_to_alloc;
2439     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2440
2441         if (!yyg->yy_buffer_stack) {
2442
2443                 /* First allocation is just for 2 elements, since we don't know if this
2444                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
2445                  * immediate realloc on the next call.
2446          */
2447                 num_to_alloc = 1;
2448                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
2449                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2450                                                                 , yyscanner);
2451                 
2452                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2453                                 
2454                 yyg->yy_buffer_stack_max = num_to_alloc;
2455                 yyg->yy_buffer_stack_top = 0;
2456                 return;
2457         }
2458
2459         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2460
2461                 /* Increase the buffer to prepare for a possible push. */
2462                 int grow_size = 8 /* arbitrary grow size */;
2463
2464                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2465                 yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
2466                                                                 (yyg->yy_buffer_stack,
2467                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2468                                                                 , yyscanner);
2469
2470                 /* zero only the new slots.*/
2471                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2472                 yyg->yy_buffer_stack_max = num_to_alloc;
2473         }
2474 }
2475
2476 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2477  * @param base the character buffer
2478  * @param size the size in bytes of the character buffer
2479  * @param yyscanner The scanner object.
2480  * @return the newly allocated buffer state object. 
2481  */
2482 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
2483 {
2484         YY_BUFFER_STATE b;
2485     
2486         if ( size < 2 ||
2487              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2488              base[size-1] != YY_END_OF_BUFFER_CHAR )
2489                 /* They forgot to leave room for the EOB's. */
2490                 return 0;
2491
2492         b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2493         if ( ! b )
2494                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
2495
2496         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2497         b->yy_buf_pos = b->yy_ch_buf = base;
2498         b->yy_is_our_buffer = 0;
2499         b->yy_input_file = 0;
2500         b->yy_n_chars = b->yy_buf_size;
2501         b->yy_is_interactive = 0;
2502         b->yy_at_bol = 1;
2503         b->yy_fill_buffer = 0;
2504         b->yy_buffer_status = YY_BUFFER_NEW;
2505
2506         ast_yy_switch_to_buffer(b ,yyscanner );
2507
2508         return b;
2509 }
2510
2511 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
2512  * scan from a @e copy of @a str.
2513  * @param str a NUL-terminated string to scan
2514  * @param yyscanner The scanner object.
2515  * @return the newly allocated buffer state object.
2516  * @note If you want to scan bytes that may contain NUL values, then use
2517  *       ast_yy_scan_bytes() instead.
2518  */
2519 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
2520 {
2521     
2522         return ast_yy_scan_bytes(str,strlen(str) ,yyscanner);
2523 }
2524
2525 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
2526  * scan from a @e copy of @a bytes.
2527  * @param bytes the byte buffer to scan
2528  * @param len the number of bytes in the buffer pointed to by @a bytes.
2529  * @param yyscanner The scanner object.
2530  * @return the newly allocated buffer state object.
2531  */
2532 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
2533 {
2534         YY_BUFFER_STATE b;
2535         char *buf;
2536         yy_size_t n;
2537         int i;
2538     
2539         /* Get memory for full buffer, including space for trailing EOB's. */
2540         n = len + 2;
2541         buf = (char *) ast_yyalloc(n ,yyscanner );
2542         if ( ! buf )
2543                 YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
2544
2545         for ( i = 0; i < len; ++i )
2546                 buf[i] = bytes[i];
2547
2548         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2549
2550         b = ast_yy_scan_buffer(buf,n ,yyscanner);
2551         if ( ! b )
2552                 YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
2553
2554         /* It's okay to grow etc. this buffer, and we should throw it
2555          * away when we're done.
2556          */
2557         b->yy_is_our_buffer = 1;
2558
2559         return b;
2560 }
2561
2562 #ifndef YY_EXIT_FAILURE
2563 #define YY_EXIT_FAILURE 2
2564 #endif
2565
2566 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2567 {
2568         (void) fprintf( stderr, "%s\n", msg );
2569         exit( YY_EXIT_FAILURE );
2570 }
2571
2572 /* Redefine yyless() so it works in section 3 code. */
2573
2574 #undef yyless
2575 #define yyless(n) \
2576         do \
2577                 { \
2578                 /* Undo effects of setting up yytext. */ \
2579         int yyless_macro_arg = (n); \
2580         YY_LESS_LINENO(yyless_macro_arg);\
2581                 yytext[yyleng] = yyg->yy_hold_char; \
2582                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2583                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2584                 *yyg->yy_c_buf_p = '\0'; \
2585                 yyleng = yyless_macro_arg; \
2586                 } \
2587         while ( 0 )
2588
2589 /* Accessor  methods (get/set functions) to struct members. */
2590
2591 /** Get the user-defined data for this scanner.
2592  * @param yyscanner The scanner object.
2593  */
2594 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
2595 {
2596     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2597     return yyextra;
2598 }
2599
2600 /** Get the current line number.
2601  * @param yyscanner The scanner object.
2602  */
2603 int ast_yyget_lineno  (yyscan_t yyscanner)
2604 {
2605     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2606     
2607         if (! YY_CURRENT_BUFFER)
2608             return 0;
2609     
2610     return yylineno;
2611 }
2612
2613 /** Get the current column number.
2614  * @param yyscanner The scanner object.
2615  */
2616 int ast_yyget_column  (yyscan_t yyscanner)
2617 {
2618     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2619     
2620         if (! YY_CURRENT_BUFFER)
2621             return 0;
2622     
2623     return yycolumn;
2624 }
2625
2626 /** Get the input stream.
2627  * @param yyscanner The scanner object.
2628  */
2629 FILE *ast_yyget_in  (yyscan_t yyscanner)
2630 {
2631     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2632     return yyin;
2633 }
2634
2635 /** Get the output stream.
2636  * @param yyscanner The scanner object.
2637  */
2638 FILE *ast_yyget_out  (yyscan_t yyscanner)
2639 {
2640     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2641     return yyout;
2642 }
2643
2644 /** Get the length of the current token.
2645  * @param yyscanner The scanner object.
2646  */
2647 int ast_yyget_leng  (yyscan_t yyscanner)
2648 {
2649     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2650     return yyleng;
2651 }
2652
2653 /** Get the current token.
2654  * @param yyscanner The scanner object.
2655  */
2656
2657 char *ast_yyget_text  (yyscan_t yyscanner)
2658 {
2659     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2660     return yytext;
2661 }
2662
2663 /** Set the user-defined data. This data is never touched by the scanner.
2664  * @param user_defined The data to be associated with this scanner.
2665  * @param yyscanner The scanner object.
2666  */
2667 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
2668 {
2669     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2670     yyextra = user_defined ;
2671 }
2672
2673 /** Set the current line number.
2674  * @param line_number
2675  * @param yyscanner The scanner object.
2676  */
2677 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
2678 {
2679     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2680
2681         /* lineno is only valid if an input buffer exists. */
2682         if (! YY_CURRENT_BUFFER )
2683            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
2684     
2685     yylineno = line_number;
2686 }
2687
2688 /** Set the current column.
2689  * @param line_number
2690  * @param yyscanner The scanner object.
2691  */
2692 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
2693 {
2694     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2695
2696         /* column is only valid if an input buffer exists. */
2697         if (! YY_CURRENT_BUFFER )
2698            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
2699     
2700     yycolumn = column_no;
2701 }
2702
2703 /** Set the input stream. This does not discard the current
2704  * input buffer.
2705  * @param in_str A readable stream.
2706  * @param yyscanner The scanner object.
2707  * @see ast_yy_switch_to_buffer
2708  */
2709 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
2710 {
2711     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2712     yyin = in_str ;
2713 }
2714
2715 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
2716 {
2717     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2718     yyout = out_str ;
2719 }
2720
2721 int ast_yyget_debug  (yyscan_t yyscanner)
2722 {
2723     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2724     return yy_flex_debug;
2725 }
2726
2727 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
2728 {
2729     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2730     yy_flex_debug = bdebug ;
2731 }
2732
2733 /* Accessor methods for yylval and yylloc */
2734
2735 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
2736 {
2737     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2738     return yylval;
2739 }
2740
2741 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2742 {
2743     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2744     yylval = yylval_param;
2745 }
2746
2747 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
2748 {
2749     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2750     return yylloc;
2751 }
2752     
2753 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
2754 {
2755     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2756     yylloc = yylloc_param;
2757 }
2758     
2759 static int yy_init_globals (yyscan_t yyscanner)
2760 {
2761     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2762     /* Initialization is the same as for the non-reentrant scanner.
2763        This function is called once per scanner lifetime. */
2764
2765     yyg->yy_buffer_stack = 0;
2766     yyg->yy_buffer_stack_top = 0;
2767     yyg->yy_buffer_stack_max = 0;
2768     yyg->yy_c_buf_p = (char *) 0;
2769     yyg->yy_init = 1;
2770     yyg->yy_start = 0;
2771     yyg->yy_start_stack_ptr = 0;
2772     yyg->yy_start_stack_depth = 0;
2773     yyg->yy_start_stack = (int *) 0;
2774
2775 /* Defined in main.c */
2776 #ifdef YY_STDINIT
2777     yyin = stdin;
2778     yyout = stdout;
2779 #else
2780     yyin = (FILE *) 0;
2781     yyout = (FILE *) 0;
2782 #endif
2783
2784     /* For future reference: Set errno on error, since we are called by
2785      * ast_yylex_init()
2786      */
2787     return 0;
2788 }
2789
2790 /* User-visible API */
2791
2792 /* ast_yylex_init is special because it creates the scanner itself, so it is
2793  * the ONLY reentrant function that doesn't take the scanner as the last argument.
2794  * That's why we explicitly handle the declaration, instead of using our macros.
2795  */
2796
2797 int ast_yylex_init(yyscan_t* ptr_yy_globals)
2798
2799 {
2800     if (ptr_yy_globals == NULL){
2801         errno = EINVAL;
2802         return 1;
2803     }
2804
2805     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
2806
2807     if (*ptr_yy_globals == NULL){
2808         errno = ENOMEM;
2809         return 1;
2810     }
2811
2812     memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
2813
2814     return yy_init_globals ( *ptr_yy_globals );
2815 }
2816
2817 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
2818 int ast_yylex_destroy  (yyscan_t yyscanner)
2819 {
2820     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2821
2822     /* Pop the buffer stack, destroying each element. */
2823         while(YY_CURRENT_BUFFER){
2824                 ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
2825                 YY_CURRENT_BUFFER_LVALUE = NULL;
2826                 ast_yypop_buffer_state(yyscanner);
2827         }
2828
2829         /* Destroy the stack itself. */
2830         ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
2831         yyg->yy_buffer_stack = NULL;
2832
2833     /* Destroy the start condition stack. */
2834         ast_yyfree(yyg->yy_start_stack ,yyscanner );
2835         yyg->yy_start_stack = NULL;
2836
2837     /* Destroy the main struct (reentrant only). */
2838     ast_yyfree ( yyscanner , yyscanner );
2839     return 0;
2840 }
2841
2842 /*
2843  * Internal utility routines.
2844  */
2845
2846 #ifndef yytext_ptr
2847 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
2848 {
2849         register int i;
2850     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2851         for ( i = 0; i < n; ++i )
2852                 s1[i] = s2[i];
2853 }
2854 #endif
2855
2856 #ifdef YY_NEED_STRLEN
2857 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
2858 {
2859         register int n;
2860     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2861         for ( n = 0; s[n]; ++n )
2862                 ;
2863
2864         return n;
2865 }
2866 #endif
2867
2868 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
2869 {
2870         return (void *) malloc( size );
2871 }
2872
2873 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
2874 {
2875         /* The cast to (char *) in the following accommodates both
2876          * implementations that use char* generic pointers, and those
2877          * that use void* generic pointers.  It works with the latter
2878          * because both ANSI C and C++ allow castless assignment from
2879          * any pointer type to void*, and deal with argument conversions
2880          * as though doing an assignment.
2881          */
2882         return (void *) realloc( (char *) ptr, size );
2883 }
2884
2885 void ast_yyfree (void * ptr , yyscan_t yyscanner)
2886 {
2887         free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
2888 }
2889
2890 #define YYTABLES_NAME "yytables"
2891
2892 #undef YY_NEW_FILE
2893 #undef YY_FLUSH_BUFFER
2894 #undef yy_set_bol
2895 #undef yy_new_buffer
2896 #undef yy_set_interactive
2897 #undef yytext_ptr
2898 #undef YY_DO_BEFORE_ACTION
2899
2900 #ifdef YY_DECL_IS_OURS
2901 #undef YY_DECL_IS_OURS
2902 #undef YY_DECL
2903 #endif
2904 #line 103 "ast_expr2.fl"
2905
2906
2907
2908 /* I'm putting the interface routine to the whole parse here in the flexer input file
2909    mainly because of all the flexer initialization that has to be done. Shouldn't matter
2910    where it is, as long as it's somewhere. I didn't want to define a prototype for the
2911    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
2912         UGH! that would be inappropriate. */
2913
2914 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
2915 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
2916
2917 int ast_expr(char *expr, char *buf, int length)
2918 {
2919         struct parse_io io;
2920         int return_value = 0;
2921         
2922         memset(&io, 0, sizeof(io));
2923         io.string = expr;  /* to pass to the error routine */
2924         
2925         ast_yylex_init(&io.scanner);
2926         
2927         ast_yy_scan_string(expr, io.scanner);
2928         
2929         ast_yyparse ((void *) &io);
2930
2931         ast_yylex_destroy(io.scanner);
2932
2933         if (!io.val) {
2934                 if (length > 1) {
2935                         strcpy(buf, "0");
2936                         return_value = 1;
2937                 }
2938         } else {
2939                 if (io.val->type == AST_EXPR_integer) {
2940                         int res_length;
2941
2942                         res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
2943                         return_value = (res_length <= length) ? res_length : length;
2944                 } else {
2945 #ifdef STANDALONE
2946                         strncpy(buf, io.val->u.s, length - 1);
2947 #else /* !STANDALONE */
2948                         ast_copy_string(buf, io.val->u.s, length);
2949 #endif /* STANDALONE */
2950                         return_value = strlen(buf);
2951                         free(io.val->u.s);
2952                 }
2953                 free(io.val);
2954         }
2955         return return_value;
2956 }
2957
2958 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
2959 {       
2960         struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
2961         char spacebuf[8000]; /* best safe than sorry */
2962         char spacebuf2[8000]; /* best safe than sorry */
2963         int i=0;
2964         spacebuf[0] = 0;
2965         
2966         for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
2967                                                                                                         which is the same thing as... get this:
2968                                                                                                         yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
2969                                                                                                         I was tempted to just use yy_buf_pos in the STATE, but..., well:
2970                                                                                                                 a. the yy_buf_pos is the current position in the buffer, which
2971                                                                                                                         may not relate to the entire string/buffer because of the
2972                                                                                                                         buffering.
2973                                                                                                                 b. but, analysis of the situation is that when you use the
2974                                                                                                                         ast_yy_scan_string func, it creates a single buffer the size of
2975                                                                                                                         string, so the two would be the same... 
2976                                                                                                         so, in the end, the yycolumn macro is available, shorter, therefore easier. */
2977         spacebuf2[i++]='^';
2978         spacebuf2[i]= 0;
2979
2980 #ifdef STANDALONE3
2981         /* easier to read in the standalone version */
2982         printf("ast_yyerror(): syntax error: %s; Input:\n%s\n%s\n",  
2983                         s, parseio->string,spacebuf2);
2984 #else
2985         ast_log(LOG_WARNING,"ast_yyerror(): syntax error: %s; Input:\n%s\n%s\n",  
2986                         s, parseio->string,spacebuf2);
2987 #endif
2988 #ifndef STANDALONE
2989         ast_log(LOG_WARNING,"If you have questions, please refer to doc/channelvariables.txt in the asterisk source.\n");
2990 #endif
2991         return(0);
2992 }
2993