Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove old buildname and options.
[simgrid.git] / src / surf / simgrid_dtd.c
1
2 #line 3 "src/surf/simgrid_dtd.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define yy_create_buffer surf_parse__create_buffer
9 #define yy_delete_buffer surf_parse__delete_buffer
10 #define yy_flex_debug surf_parse__flex_debug
11 #define yy_init_buffer surf_parse__init_buffer
12 #define yy_flush_buffer surf_parse__flush_buffer
13 #define yy_load_buffer_state surf_parse__load_buffer_state
14 #define yy_switch_to_buffer surf_parse__switch_to_buffer
15 #define yyin surf_parse_in
16 #define yyleng surf_parse_leng
17 #define yylex surf_parse_lex
18 #define yylineno surf_parse_lineno
19 #define yyout surf_parse_out
20 #define yyrestart surf_parse_restart
21 #define yytext surf_parse_text
22 #define yywrap surf_parse_wrap
23 #define yyalloc surf_parse_alloc
24 #define yyrealloc surf_parse_realloc
25 #define yyfree surf_parse_free
26
27 #define FLEX_SCANNER
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
30 #define YY_FLEX_SUBMINOR_VERSION 35
31 #if YY_FLEX_SUBMINOR_VERSION > 0
32 #define FLEX_BETA
33 #endif
34
35 /* First, we deal with  platform-specific or compiler-specific issues. */
36
37 /* begin standard C headers. */
38 #include <stdio.h>
39 #include <string.h>
40 #include <errno.h>
41 #include <stdlib.h>
42
43 /* end standard C headers. */
44
45 /* flex integer type definitions */
46
47 #ifndef FLEXINT_H
48 #define FLEXINT_H
49
50 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55  * if you want the limit (max/min) macros for int types. 
56  */
57 #ifndef __STDC_LIMIT_MACROS
58 #define __STDC_LIMIT_MACROS 1
59 #endif
60
61 #include <inttypes.h>
62 typedef int8_t flex_int8_t;
63 typedef uint8_t flex_uint8_t;
64 typedef int16_t flex_int16_t;
65 typedef uint16_t flex_uint16_t;
66 typedef int32_t flex_int32_t;
67 typedef uint32_t flex_uint32_t;
68 #else
69 typedef signed char flex_int8_t;
70 typedef short int flex_int16_t;
71 typedef int flex_int32_t;
72 typedef unsigned char flex_uint8_t; 
73 typedef unsigned short int flex_uint16_t;
74 typedef unsigned int flex_uint32_t;
75
76 /* Limits of integral types. */
77 #ifndef INT8_MIN
78 #define INT8_MIN               (-128)
79 #endif
80 #ifndef INT16_MIN
81 #define INT16_MIN              (-32767-1)
82 #endif
83 #ifndef INT32_MIN
84 #define INT32_MIN              (-2147483647-1)
85 #endif
86 #ifndef INT8_MAX
87 #define INT8_MAX               (127)
88 #endif
89 #ifndef INT16_MAX
90 #define INT16_MAX              (32767)
91 #endif
92 #ifndef INT32_MAX
93 #define INT32_MAX              (2147483647)
94 #endif
95 #ifndef UINT8_MAX
96 #define UINT8_MAX              (255U)
97 #endif
98 #ifndef UINT16_MAX
99 #define UINT16_MAX             (65535U)
100 #endif
101 #ifndef UINT32_MAX
102 #define UINT32_MAX             (4294967295U)
103 #endif
104
105 #endif /* ! C99 */
106
107 #endif /* ! FLEXINT_H */
108
109 #ifdef __cplusplus
110
111 /* The "const" storage-class-modifier is valid. */
112 #define YY_USE_CONST
113
114 #else   /* ! __cplusplus */
115
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
118
119 #define YY_USE_CONST
120
121 #endif  /* defined (__STDC__) */
122 #endif  /* ! __cplusplus */
123
124 #ifdef YY_USE_CONST
125 #define yyconst const
126 #else
127 #define yyconst
128 #endif
129
130 /* Returned upon end-of-file. */
131 #define YY_NULL 0
132
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134  * integer for use as an array index.  If the signed char is negative,
135  * we want to instead treat it as an 8-bit unsigned char, hence the
136  * double cast.
137  */
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
139
140 /* Enter a start condition.  This macro really ought to take a parameter,
141  * but we do it the disgusting crufty way forced on us by the ()-less
142  * definition of BEGIN.
143  */
144 #define BEGIN (yy_start) = 1 + 2 *
145
146 /* Translate the current start state into a value that can be later handed
147  * to BEGIN to return to the state.  The YYSTATE alias is for lex
148  * compatibility.
149  */
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
152
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
155
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
158
159 #define YY_END_OF_BUFFER_CHAR 0
160
161 /* Size of default input buffer. */
162 #ifndef YY_BUF_SIZE
163 #ifdef __ia64__
164 /* On IA-64, the buffer size is 16k, not 8k.
165  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
166  * Ditto for the __ia64__ case accordingly.
167  */
168 #define YY_BUF_SIZE 32768
169 #else
170 #define YY_BUF_SIZE 16384
171 #endif /* __ia64__ */
172 #endif
173
174 /* The state buf must be large enough to hold one state per character in the main buffer.
175  */
176 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
177
178 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
179 #define YY_TYPEDEF_YY_BUFFER_STATE
180 typedef struct yy_buffer_state *YY_BUFFER_STATE;
181 #endif
182
183 extern int surf_parse_leng;
184
185 extern FILE *surf_parse_in, *surf_parse_out;
186
187 #define EOB_ACT_CONTINUE_SCAN 0
188 #define EOB_ACT_END_OF_FILE 1
189 #define EOB_ACT_LAST_MATCH 2
190
191     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
192      *       access to the local variable yy_act. Since yyless() is a macro, it would break
193      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
194      *       One obvious solution it to make yy_act a global. I tried that, and saw
195      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
196      *       normally declared as a register variable-- so it is not worth it.
197      */
198     #define  YY_LESS_LINENO(n) \
199             do { \
200                 int yyl;\
201                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
202                     if ( surf_parse_text[yyl] == '\n' )\
203                         --surf_parse_lineno;\
204             }while(0)
205     
206 /* Return all but the first "n" matched characters back to the input stream. */
207 #define yyless(n) \
208         do \
209                 { \
210                 /* Undo effects of setting up surf_parse_text. */ \
211         int yyless_macro_arg = (n); \
212         YY_LESS_LINENO(yyless_macro_arg);\
213                 *yy_cp = (yy_hold_char); \
214                 YY_RESTORE_YY_MORE_OFFSET \
215                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
216                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
217                 } \
218         while ( 0 )
219
220 #define unput(c) yyunput( c, (yytext_ptr)  )
221
222 #ifndef YY_TYPEDEF_YY_SIZE_T
223 #define YY_TYPEDEF_YY_SIZE_T
224 typedef size_t yy_size_t;
225 #endif
226
227 #ifndef YY_STRUCT_YY_BUFFER_STATE
228 #define YY_STRUCT_YY_BUFFER_STATE
229 struct yy_buffer_state
230         {
231         FILE *yy_input_file;
232
233         char *yy_ch_buf;                /* input buffer */
234         char *yy_buf_pos;               /* current position in input buffer */
235
236         /* Size of input buffer in bytes, not including room for EOB
237          * characters.
238          */
239         yy_size_t yy_buf_size;
240
241         /* Number of characters read into yy_ch_buf, not including EOB
242          * characters.
243          */
244         int yy_n_chars;
245
246         /* Whether we "own" the buffer - i.e., we know we created it,
247          * and can realloc() it to grow it, and should free() it to
248          * delete it.
249          */
250         int yy_is_our_buffer;
251
252         /* Whether this is an "interactive" input source; if so, and
253          * if we're using stdio for input, then we want to use getc()
254          * instead of fread(), to make sure we stop fetching input after
255          * each newline.
256          */
257         int yy_is_interactive;
258
259         /* Whether we're considered to be at the beginning of a line.
260          * If so, '^' rules will be active on the next match, otherwise
261          * not.
262          */
263         int yy_at_bol;
264
265     int yy_bs_lineno; /**< The line count. */
266     int yy_bs_column; /**< The column count. */
267     
268         /* Whether to try to fill the input buffer when we reach the
269          * end of it.
270          */
271         int yy_fill_buffer;
272
273         int yy_buffer_status;
274
275 #define YY_BUFFER_NEW 0
276 #define YY_BUFFER_NORMAL 1
277         /* When an EOF's been seen but there's still some text to process
278          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
279          * shouldn't try reading from the input source any more.  We might
280          * still have a bunch of tokens to match, though, because of
281          * possible backing-up.
282          *
283          * When we actually see the EOF, we change the status to "new"
284          * (via surf_parse_restart()), so that the user can continue scanning by
285          * just pointing surf_parse_in at a new input file.
286          */
287 #define YY_BUFFER_EOF_PENDING 2
288
289         };
290 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
291
292 /* Stack of input buffers. */
293 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
294 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
295 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
296
297 /* We provide macros for accessing buffer states in case in the
298  * future we want to put the buffer states in a more general
299  * "scanner state".
300  *
301  * Returns the top of the stack, or NULL.
302  */
303 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
304                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
305                           : NULL)
306
307 /* Same as previous macro, but useful when we know that the buffer stack is not
308  * NULL or when we need an lvalue. For internal use only.
309  */
310 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
311
312 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
313 static char yy_hold_char;
314 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
315 int surf_parse_leng;
316
317 /* Points to current character in buffer. */
318 static char *yy_c_buf_p = (char *) 0;
319 static int yy_init = 0;         /* whether we need to initialize */
320 static int yy_start = 0;        /* start state number */
321
322 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
323  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
324  */
325 static int yy_did_buffer_switch_on_eof;
326
327 void surf_parse_restart (FILE *input_file  );
328 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
329 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
330 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
331 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
332 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
333 void surf_parse_pop_buffer_state (void );
334
335 static void surf_parse_ensure_buffer_stack (void );
336 static void surf_parse__load_buffer_state (void );
337 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
338
339 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
340
341 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
342 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
343 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
344
345 void *surf_parse_alloc (yy_size_t  );
346 void *surf_parse_realloc (void *,yy_size_t  );
347 void surf_parse_free (void *  );
348
349 #define yy_new_buffer surf_parse__create_buffer
350
351 #define yy_set_interactive(is_interactive) \
352         { \
353         if ( ! YY_CURRENT_BUFFER ){ \
354         surf_parse_ensure_buffer_stack (); \
355                 YY_CURRENT_BUFFER_LVALUE =    \
356             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
357         } \
358         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
359         }
360
361 #define yy_set_bol(at_bol) \
362         { \
363         if ( ! YY_CURRENT_BUFFER ){\
364         surf_parse_ensure_buffer_stack (); \
365                 YY_CURRENT_BUFFER_LVALUE =    \
366             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
367         } \
368         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
369         }
370
371 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
372
373 /* Begin user sect3 */
374
375 #define surf_parse_wrap(n) 1
376 #define YY_SKIP_YYWRAP
377
378 typedef unsigned char YY_CHAR;
379
380 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
381
382 typedef int yy_state_type;
383
384 extern int surf_parse_lineno;
385
386 int surf_parse_lineno = 1;
387
388 extern char *surf_parse_text;
389 #define yytext_ptr surf_parse_text
390
391 static yy_state_type yy_get_previous_state (void );
392 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
393 static int yy_get_next_buffer (void );
394 static void yy_fatal_error (yyconst char msg[]  );
395
396 /* Done after the current pattern has been matched and before the
397  * corresponding action - sets up surf_parse_text.
398  */
399 #define YY_DO_BEFORE_ACTION \
400         (yytext_ptr) = yy_bp; \
401         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
402         (yy_hold_char) = *yy_cp; \
403         *yy_cp = '\0'; \
404         (yy_c_buf_p) = yy_cp;
405
406 #define YY_NUM_RULES 380
407 #define YY_END_OF_BUFFER 381
408 /* This struct is not used in this scanner,
409    but its presence is necessary. */
410 struct yy_trans_info
411         {
412         flex_int32_t yy_verify;
413         flex_int32_t yy_nxt;
414         };
415 static yyconst flex_int16_t yy_accept[2221] =
416     {   0,
417         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
418         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
419         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
420         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
421         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
422         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
423         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
424         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
425         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
426         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
427
428         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
429         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
431         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
433         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
434         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
436         0,    0,    0,    0,  381,  379,   15,   10,   10,   15,
437        15,  359,   10,  359,    5,    6,    5,    8,    9,    8,
438
439       375,  367,  368,  376,  373,  376,  374,  378,  367,  368,
440       378,  379,   22,   10,   22,   22,   22,   20,   22,   26,
441        10,   26,   26,   26,  379,  379,   26,   37,   10,   37,
442        37,   37,   35,   37,   37,   37,  376,  375,   59,   10,
443        59,   59,   59,   57,   59,   59,   59,   59,   63,   10,
444        63,  379,   63,   82,   10,   82,   82,   82,   80,   82,
445        82,   82,   86,   10,   86,   95,   10,   95,   95,   95,
446        93,   95,   95,   99,   10,   99,   99,  379,   99,   99,
447       379,  379,   99,  379,   99,  379,   99,  122,   10,  122,
448       122,  122,  120,  122,  122,  122,  122,  122,  126,   10,
449
450       126,  126,  161,   10,  161,  161,  161,  159,  161,  161,
451       161,  161,  161,  161,  161,  165,   10,  165,  186,   10,
452       186,  186,  186,  184,  186,  186,  186,  186,  186,  186,
453       190,   10,  190,  199,   10,  199,  199,  199,  197,  199,
454       199,  203,   10,  203,  230,   10,  230,  230,  230,  228,
455       230,  230,  230,  230,  234,   10,  234,  234,  247,   10,
456       247,  247,  247,  245,  247,  247,  251,   10,  251,  379,
457       251,  268,   10,  268,  268,  268,  266,  268,  268,  268,
458       272,   10,  272,  272,  285,   10,  285,  285,  285,  283,
459       285,  285,  289,   10,  289,  302,   10,  302,  302,  302,
460
461       300,  302,  302,  302,  306,   10,  306,  306,  319,   10,
462       319,  319,  319,  317,  319,  319,  319,  319,  323,   10,
463       323,  379,  323,  330,   10,  330,  330,  330,  328,  330,
464       334,   10,  334,  341,   10,  341,  341,  341,  339,  341,
465       345,   10,  345,  345,  345,  354,   10,  354,  354,  354,
466       352,  354,  354,  358,   10,  358,   10,    0,    2,    2,
467         0,    4,    7,  370,  369,    0,    0,    0,    0,    0,
468         0,    0,   21,   23,   23,    0,    0,    0,    0,    0,
469         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
470         0,    0,   36,   38,   38,   38,   38,    0,    0,    0,
471
472        58,   60,   60,   60,   60,   60,   60,   60,    0,    0,
473        81,   83,   83,   83,   83,    0,   94,   96,   96,   96,
474         0,    0,    0,    0,    0,    0,    0,    0,    0,  121,
475       123,  123,  123,  123,  123,  123,    0,  160,  162,  162,
476       162,  162,  162,  162,  162,  162,  162,  162,  162,    0,
477       185,  187,  187,  187,  187,  187,  187,  187,    0,  198,
478       200,  200,  200,    0,  229,  231,  231,  231,  231,  231,
479       231,    0,  246,  248,  248,  248,  248,    0,    0,  267,
480       269,  269,  269,  269,  269,    0,  284,  286,  286,  286,
481         0,  301,  303,  303,  303,  303,    0,  318,  320,  320,
482
483       320,  320,  320,    0,    0,  329,  331,  331,    0,  340,
484       342,  342,    0,    0,  353,  355,  355,  355,    0,    0,
485         0,    0,    0,    3,    0,    0,    0,    0,    0,    0,
486         0,  377,    0,   23,    0,    0,   88,    0,    0,    0,
487         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
488        87,    0,    0,    0,    0,   38,    0,    0,   38,    0,
489         0,    0,  372,   60,    0,    0,   60,   60,   60,   60,
490         0,    0,    0,   83,   83,   83,    0,    0,    0,    0,
491        96,    0,    0,   88,    0,    0,    0,    0,   87,    0,
492         0,  123,  123,  123,    0,    0,  123,  123,    0,    0,
493
494       162,    0,    0,  162,    0,    0,  162,  162,  162,  162,
495       162,  162,    0,    0,  187,  187,    0,    0,  187,  187,
496       187,    0,    0,  200,    0,    0,    0,    0,  231,    0,
497         0,  231,  231,  231,    0,    0,  248,  248,  248,    0,
498         0,    0,  269,  269,  269,  269,    0,    0,  286,    0,
499         0,    0,    0,  303,  303,  303,    0,    0,  320,  320,
500       320,  320,    0,    0,    0,  331,    0,    0,    0,    0,
501         0,    0,    0,    0,    0,  355,    0,    0,    0,   14,
502         1,    0,    0,  365,    0,    0,    0,  362,  361,    0,
503         0,   23,    0,    0,   25,    0,   88,    0,    0,    0,
504
505         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
506         0,   87,    0,    0,    0,    0,   38,    0,   30,   29,
507        38,    0,    0,    0,   40,    0,   60,    0,   44,   43,
508         0,    0,   60,    0,    0,   60,    0,    0,   62,    0,
509         0,   83,   83,   83,    0,    0,   85,    0,    0,   90,
510        89,   96,    0,    0,   98,    0,    0,    0,    0,    0,
511         0,    0,    0,  123,  123,  123,    0,  103,  102,  123,
512       123,    0,    0,  125,    0,  162,  162,  162,    0,  142,
513       141,  162,    0,  130,  129,    0,    0,  162,  162,  162,
514       162,  162,    0,    0,  164,    0,  187,  187,  187,    0,
515
516       169,  168,    0,    0,  187,  187,    0,    0,  189,    0,
517       200,    0,  194,  193,    0,    0,  202,    0,  231,    0,
518       207,  206,  231,  231,  231,    0,    0,  233,    0,    0,
519         0,    0,    0,  248,    0,    0,  250,    0,    0,    0,
520         0,  269,  269,    0,    0,  269,    0,    0,  271,    0,
521       286,    0,  276,  275,    0,    0,  288,    0,    0,    0,
522       303,  303,    0,    0,    0,    0,  305,    0,  320,  320,
523       320,  320,    0,    0,  322,    0,    0,  331,    0,    0,
524       333,    0,    0,  338,  337,    0,    0,  344,    0,    0,
525         0,  349,  348,  355,    0,    0,  357,    0,    0,    0,
526
527       366,  360,    0,    0,    0,   23,    0,    0,    0,    0,
528         0,    0,  100,  204,  167,    0,    0,  346,    0,    0,
529         0,    0,    0,  166,    0,    0,    0,    0,   38,    0,
530         0,   60,    0,   48,   47,    0,    0,    0,   46,   45,
531        60,    0,  347,   83,    0,    0,   83,    0,   96,    0,
532        97,    0,    0,  101,  205,    0,    0,    0,  123,  123,
533         0,    0,  123,  123,    0,  162,  162,  162,    0,    0,
534         0,  144,  143,  162,  162,  162,  162,  162,    0,  187,
535       187,  187,    0,  177,  176,  187,  187,    0,  200,    0,
536       231,  231,  231,  231,    0,    0,  240,  239,    0,  238,
537
538       237,  248,    0,  204,    0,  257,  256,  269,  269,    0,
539       255,  254,  269,    0,  286,    0,    0,  295,  294,  303,
540       303,    0,  293,  292,    0,  320,    0,    0,  320,  320,
541         0,    0,  331,    0,    0,    0,  355,    0,    0,    0,
542         0,   12,    0,  363,  364,    0,   23,    0,    0,    0,
543         0,    0,    0,  100,  204,    0,  167,    0,    0,  346,
544         0,  235,   28,    0,    0,  166,   27,    0,    0,   32,
545        31,   38,    0,    0,   60,    0,   50,   49,   60,    0,
546       347,   83,    0,    0,    0,    0,    0,    0,   96,    0,
547         0,  101,  205,  236,  236,  235,  123,  123,    0,  107,
548
549       106,    0,    0,    0,    0,  123,    0,    0,    0,  162,
550       162,    0,  140,  139,    0,    0,  162,  162,  162,  162,
551         0,    0,    0,  187,  187,    0,    0,  187,    0,  200,
552         0,  231,  231,  231,    0,    0,  231,    0,  248,    0,
553         0,  269,  269,  269,    0,  286,    0,  303,  303,    0,
554       320,    0,  310,  309,  320,  320,    0,    0,    0,    0,
555         0,    0,    0,    0,    0,    0,    0,    0,    0,   11,
556         0,   23,    0,    0,    0,    0,    0,  336,    0,    0,
557         0,   41,  235,  191,   28,    0,  335,    0,   27,    0,
558         0,   38,    0,    0,   60,   60,    0,   83,    0,    0,
559
560         0,    0,    0,    0,    0,    0,    0,   77,   76,    0,
561        96,    0,    0,  236,  192,  123,  123,    0,  105,  104,
562         0,    0,    0,  123,    0,  124,    0,  152,  151,    0,
563         0,  162,    0,  138,  137,    0,    0,  162,  162,    0,
564         0,    0,    0,  173,  172,    0,    0,  187,    0,  171,
565       170,  187,    0,  188,  200,    0,  231,  231,  231,    0,
566         0,    0,  231,    0,  232,  248,    0,    0,    0,    0,
567         0,    0,  269,    0,  286,    0,    0,    0,    0,    0,
568         0,  320,  320,  320,    0,    0,    0,  327,  326,    0,
569         0,   42,    0,  351,  350,    0,  356,    0,    0,    0,
570
571         0,    0,    0,    0,  252,    0,    0,  128,  336,    0,
572         0,  308,   41,  191,    0,  335,  127,    0,  307,   38,
573         0,    0,   39,   60,   60,    0,    0,    0,    0,    0,
574         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
575         0,  253,    0,  192,  123,  123,    0,    0,  123,    0,
576       154,  153,  162,    0,  132,  131,    0,    0,  162,    0,
577       134,  133,    0,    0,  175,  174,  187,  187,  200,    0,
578       231,    0,    0,  231,  231,    0,    0,  231,  248,    0,
579       249,    0,    0,  261,  260,    0,  259,  258,  269,    0,
580       286,    0,    0,  299,  298,    0,  297,  296,    0,  320,
581
582       320,  320,    0,    0,    0,    0,   42,    0,    0,    0,
583        17,    0,   19,   18,    0,  252,  324,    0,  128,  273,
584        16,  308,    0,  127,    0,  307,   38,  371,   60,   60,
585         0,   61,    0,   79,   78,    0,    0,    0,    0,    0,
586         0,    0,    0,    0,    0,    0,    0,   92,   91,  253,
587         0,  123,  123,    0,    0,    0,    0,  123,  162,    0,
588       136,  135,  162,    0,  187,  187,  200,    0,  201,  231,
589         0,  213,  212,  231,  231,    0,    0,    0,    0,  231,
590       248,  274,  269,    0,  286,    0,    0,    0,    0,  320,
591       320,    0,  325,    0,    0,  343,    0,    0,    0,   17,
592
593         0,  324,    0,  273,   16,    0,    0,   38,    0,    0,
594        60,    0,    0,    0,    0,    0,    0,    0,    0,    0,
595         0,    0,    0,  123,  123,    0,  113,    0,  112,  123,
596       162,  162,    0,  163,  187,  187,  200,    0,    0,  231,
597       231,  231,    0,  217,    0,  216,  231,  248,  274,  269,
598         0,  270,    0,    0,    0,    0,    0,  312,  311,    0,
599         0,  320,    0,  321,  325,    0,    0,    0,    0,    0,
600        24,    0,    0,    0,   38,    0,    0,    0,   60,    0,
601         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
602         0,  123,  123,  115,  114,    0,    0,  162,  162,  187,
603
604       187,  200,    0,  209,  208,  231,  231,  231,  219,  218,
605         0,    0,  248,  269,    0,    0,    0,    0,  287,    0,
606         0,  316,  315,    0,    0,    0,  332,    0,    0,    0,
607       290,    0,    0,    0,    0,    0,    0,    0,    0,   60,
608         0,    0,    0,    0,   69,    0,    0,    0,    0,   68,
609         0,  291,  123,    0,    0,    0,  117,  116,  162,  162,
610         0,    0,  187,    0,    0,  231,  231,  231,    0,  221,
611       220,    0,    0,    0,    0,    0,    0,    0,    0,    0,
612         0,    0,    0,  314,  313,    0,    0,    0,  290,    0,
613         0,    0,   34,   33,    0,    0,    0,    0,   60,    0,
614
615         0,    0,    0,    0,    0,    0,    0,    0,  291,    0,
616         0,  123,    0,  119,  118,  162,  162,    0,  179,  178,
617       187,    0,  196,  195,  231,    0,    0,  231,    0,    0,
618         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
619         0,    0,    0,    0,    0,   65,   64,    0,    0,    0,
620         0,    0,    0,    0,    0,   75,    0,    0,    0,   74,
621         0,    0,    0,  109,  108,  123,  162,  162,  187,  231,
622         0,  215,  214,  231,    0,    0,    0,    0,    0,    0,
623         0,    0,    0,    0,  278,    0,    0,  277,    0,  304,
624         0,    0,    0,    0,    0,    0,   65,   64,    0,    0,
625
626         0,    0,    0,   52,   51,    0,    0,    0,    0,    0,
627         0,    0,  123,  162,    0,    0,    0,    0,    0,    0,
628         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
629         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
630         0,   56,    0,   55,   73,    0,    0,   72,    0,    0,
631         0,   84,  123,  162,    0,    0,    0,    0,    0,    0,
632         0,  211,  210,    0,    0,    0,  244,    0,  243,    0,
633       265,    0,  264,    0,  280,  282,  279,  281,    0,    0,
634         0,   12,    0,   12,    0,    0,    0,   67,   71,   66,
635        70,  123,  162,    0,    0,    0,    0,    0,    0,    0,
636
637         0,    0,    0,    0,    0,  242,  241,  263,  262,    0,
638         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
639         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
640         0,    0,    0,    0,    0,    0,    0,    0,   54,   53,
641         0,  111,  110,    0,    0,    0,    0,    0,    0,    0,
642         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
643         0,    0,    0,   11,    0,    0,    0,    0,    0,    0,
644         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
645         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
646         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
647
648         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
649         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
650         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
651         0,    0,    0,  146,    0,    0,  145,    0,  181,    0,
652       180,    0,    0,  223,    0,    0,  222,    0,    0,    0,
653         0,    0,  150,    0,  149,    0,    0,    0,  225,    0,
654       224,    0,    0,    0,    0,    0,    0,    0,    0,    0,
655         0,    0,    0,    0,    0,  156,    0,  155,    0,    0,
656         0,    0,    0,    0,    0,    0,  158,  157,  148,  147,
657       183,  182,  227,  226,    0,    0,    0,    0,    0,    0,
658
659         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
660         0,    0,    0,    0,    0,    0,    0,    0,   13,    0
661     } ;
662
663 static yyconst flex_int32_t yy_ec[256] =
664     {   0,
665         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
666         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
667         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
668         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
669         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
670        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
671        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
672        16,   28,   29,   16,   30,   31,   32,   33,   34,   35,
673        16,   36,   37,   38,   39,   40,   41,   42,   43,   16,
674        44,    1,   45,    1,   46,    1,   47,   48,   49,   50,
675
676        51,   52,   53,   54,   55,   16,   56,   57,   58,   59,
677        60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
678        70,   16,    1,    1,    1,    1,    1,    1,    1,    1,
679         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
680         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
681         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
682         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
683         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
684         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
685         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
686
687         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
688         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
689         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
690         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
691         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
692         1,    1,    1,    1,    1
693     } ;
694
695 static yyconst flex_int32_t yy_meta[71] =
696     {   0,
697         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
698         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
699         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
700         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
701         5,    5,    5,    1,    1,    5,    9,    9,    9,    9,
702         9,    9,    5,    5,    5,    5,    5,    5,    5,    5,
703         5,    5,    5,    5,    5,    5,    5,    5,    5,    5
704     } ;
705
706 static yyconst flex_int16_t yy_base[2497] =
707     {   0,
708         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
709        14,   17,   33,   36,   49,   55,   45,   61,   66,   73,
710       106,  173,   76,   79,   83,  126,  129,  134,  137,  154,
711       193,  196,  201,  204,  221,  224,  227,  230,  248,  309,
712       280,  286,  370,  434,  268,  273,  277,  330,  333,  337,
713       340,  390,  498,  563,  393,  398,  628,  691,  401,  454,
714       457,  462,  465,  518,  521,  526,  529,  583,  586,  591,
715       594,  648,  651,  656,  659,  711,  714,  719,  722,  739,
716       745,  748,  756,  765,  768,  773,  776,  785,  803,  867,
717       823,  826,  831,  835,  887,  890,  895,  899,  931,    0,
718
719      1000, 1003, 1021, 1085, 1041, 1044, 1149, 1204, 1049, 1053,
720      1259, 1323, 1105, 1108, 1113, 1117, 1169, 1172, 1177, 1181,
721      1387, 1451, 1224, 1227, 1232, 1236, 1279, 1282, 1287, 1290,
722      1515, 1579, 1343, 1346, 1351, 1354, 1407, 1410, 1415, 1418,
723      1643, 1698, 1471, 1474, 1753, 1817, 1479, 1482, 1535, 1538,
724      1543, 1546, 1599, 1602, 1881, 1945, 1607, 1610, 1663, 1666,
725      1671, 1674, 1718, 1721, 2009, 2076, 1726, 1729, 2143, 2198,
726      1773, 1776, 1781, 1784, 1837, 1840, 1845, 1848, 2253, 2320,
727      1901, 1904,    0,    0, 5394, 7748, 7748,   96,  100,   29,
728        41, 7748,  157,   51, 7748, 7748, 5383, 7748, 7748, 5372,
729
730      7748, 5385, 5367,  360, 7748, 7748, 7748, 7748, 5365, 5365,
731      5322,   84, 7748,  160, 5346,    0,  144, 7748, 5314, 7748,
732       164, 2383, 5314,  492,  224, 5349, 5299, 7748,  167, 5338,
733         0,  216, 7748, 5294, 5294, 5292,  344, 5280, 7748,  303,
734      5303,    0,  341, 7748, 5263, 5261,   41, 5244, 7748,  427,
735        13,   81,  141, 7748,  482, 5278,    0,  342, 7748, 5236,
736      5235, 5225, 7748,  491,  345, 7748,  548, 5260,    0,  347,
737      7748, 5222, 5211, 7748,  556, 1919, 1920, 5204,   80, 5238,
738       198,  252,  364,  613,   59, 5246,   83, 7748,  613, 5224,
739         0,  405, 7748, 5176, 5180, 5187, 5175, 5168, 7748,  618,
740
741       177,  235, 7748,  676, 5212,    0,  469, 7748,  167, 5170,
742      5166, 5168,  149, 5166,  147, 7748,  682,  476, 7748,  685,
743      5188,    0,  535, 7748, 5139, 5145, 5150, 5152, 5137, 5137,
744      7748,  793,  606, 7748,  796, 5169,    0,  540, 7748, 5125,
745      5133, 7748,  852,  780, 7748,  857, 5162,    0,  541, 7748,
746      5133, 5125, 5127,  243, 7748,  916,  348,  357, 7748,  921,
747      5146,    0,  605, 7748, 5101,  275, 7748, 1006,  670, 5142,
748      5082, 7748, 1009, 5117,    0,  660, 7748, 5072, 5066,  336,
749      7748, 1012, 5114,  420, 7748, 1070, 5101,    0,  723, 7748,
750      5065, 5068, 7748, 1077, 1056, 7748, 1134, 5093,    0,  734,
751
752      7748, 5048, 5039, 5043, 7748, 1141, 5092,  470, 7748, 1198,
753      5075,    0,  740, 7748, 5028, 5032, 5032, 5021, 7748, 1253,
754      1071, 5069,  240, 7748, 1307, 5060,    0,  760, 7748, 5031,
755      7748, 1315, 1294, 7748, 1318, 5049,    0,  841, 7748, 5018,
756      7748, 1371, 1864, 5003,  180, 7748, 1379, 5041,    0,  905,
757      7748, 5004, 5006, 7748, 1382, 1358, 1436,   18, 4982, 7748,
758      5033, 5022, 7748, 7748, 7748, 1429,  241, 4975, 4970, 4966,
759      5010, 4969, 7748,    0, 4961, 4961, 4974, 4947, 4934,  364,
760      4942, 4943,  794,  373, 4927,  413, 4948,  477,  858, 4921,
761      1140, 1195, 7748,    0, 4925, 1910, 4914,  234, 4907, 4951,
762
763      7748,    0, 4910, 1968, 4899, 4919, 4899, 4903, 4888, 1372,
764      7748,    0, 4899, 4889, 4888, 4869, 7748,    0, 1975, 4866,
765      4905, 4886, 4850, 4859, 4862,  403, 4872,  488,  532, 7748,
766         0, 4861,  539, 1981, 4834, 4852, 4837, 7748,    0, 4844,
767      1989, 4818, 2029, 4813, 4808, 4816, 4799, 4801, 4785, 4787,
768      7748,    0, 4788, 4766, 2032, 4754, 4750, 4769, 4745, 7748,
769         0, 4744, 2036, 4736, 7748,    0, 4739, 2039, 4726, 4739,
770      4737, 4725, 7748,    0, 4712, 4716, 4706, 4678, 4685, 7748,
771         0, 4673, 4691, 4686, 4676, 4710, 7748,    0, 4668, 2042,
772      4665, 7748,    0, 4656, 4656, 4646, 4646, 7748,    0, 4633,
773
774      4616, 4622, 4621, 4605, 4602, 7748,    0, 4606, 4614, 7748,
775         0, 2096, 4611,  553, 7748,    0, 2099, 4601, 4583, 4623,
776      4623,  442, 4574, 7748, 1432,    0, 4569, 4561, 4603, 4600,
777      4555, 7748, 4564, 4530, 1914, 2102, 1500, 4526, 4517, 4507,
778      4513, 4501, 4497, 4504, 4505, 4486, 4465, 4452, 4469, 4456,
779      1503, 4435, 4448, 4448, 4433, 4441, 2105, 1567, 4435, 4458,
780      2108, 2163, 7748, 4429, 2123, 1631, 2166, 4420, 2170, 4431,
781      2173, 2176, 4416, 4416, 4419, 4412, 2218, 2225, 2228, 1805,
782      4395, 2231, 2273, 1509, 4397, 4386, 4388, 4376, 1747, 4375,
783      4369, 4375, 4366, 4376, 2276, 1869, 4371, 4356, 2279, 2282,
784
785      1510, 2287, 2060, 4368, 2341, 2127, 2344, 4360, 4357, 4349,
786      4340, 4349, 2347, 2350,  436, 4326, 2353, 2188, 2374, 4336,
787      4323, 2377, 2382, 4320, 2387, 2309, 2396, 2406, 4332, 2409,
788      2415, 4329, 4310, 4273, 2432, 2439, 2451, 2454, 2458, 2447,
789      2461, 4273, 2472, 2476, 2480, 2483, 2486, 2494, 4276, 2501,
790      2506, 2515, 2525, 2520, 2534, 2530, 2540, 2544, 4276, 4259,
791      4265, 4251, 2548, 2552, 4260, 4241, 2555, 2559, 2563, 2567,
792      2583, 2586, 4246, 2589, 2593, 4234, 2607, 2614, 4275, 7748,
793      7748,  196, 4237, 7748, 4270, 4269, 4220, 7748, 7748, 4204,
794      4203, 4211, 2617, 2621, 7748, 2627, 1506, 4201, 4188, 4206,
795
796      4187, 4184, 4170, 4177, 4169, 4165,  477, 4172, 4156, 4170,
797      4165, 1692, 4152, 4151, 4163,  542, 2636, 2647, 7748, 7748,
798      2640, 4186, 2658, 2661, 7748, 2664, 4146, 2667, 7748, 7748,
799      2683, 2686, 2694, 2701, 2706, 4145, 2714, 2719, 7748, 2722,
800       595, 4142, 2725, 4141, 2728, 2733, 7748, 2743, 2748, 7748,
801      7748, 4133, 2756, 2762, 7748, 2765, 4127, 4138, 4107, 4114,
802      4102, 4097, 4096, 4098, 4100, 2768, 2771, 7748, 7748, 4086,
803      4096, 2789, 2792, 7748, 2795, 4071, 4091, 4082, 2798, 7748,
804      7748, 2814, 2817, 7748, 7748, 2825, 2828, 4072, 4078, 4083,
805      4075, 4063, 2836, 2843, 7748, 2846, 4058, 4049, 4057, 2849,
806
807      7748, 7748, 2858, 2865, 4043, 4045, 2876, 2879, 7748, 2882,
808      4048, 2885, 7748, 7748, 2901, 2904, 7748, 2907, 4029, 2911,
809      7748, 7748, 4036, 4035, 4033, 2926, 2932, 7748, 2935, 2938,
810      2941, 2956, 2959, 4032, 2967, 2975, 7748, 2978, 4025, 2981,
811      2987, 4012, 4008, 2999, 3002, 4019, 3010, 3013, 7748, 3017,
812      4019, 3020, 7748, 7748, 3032, 3036, 7748, 3039, 3043, 3051,
813      3999, 3993, 3046, 3064, 3072, 3075, 7748, 3079, 3983, 3082,
814      3994, 3973, 3085, 3100, 7748, 3104, 3971, 3984, 3107, 3110,
815      7748, 3113, 3119, 7748, 7748, 3132, 3135, 7748, 3139, 3983,
816      3142, 7748, 7748, 3981, 3154, 3158, 7748, 3165,  585, 3168,
817
818      7748, 7748, 4013, 3987, 3931, 3921, 3173, 3914, 3920, 3913,
819      3907, 3913, 1936, 2001, 2068, 3908, 3905, 2071, 3894, 3901,
820      3899, 3894, 3878, 2135, 3890, 3882, 3177, 3188, 3882, 3903,
821      3180, 3877, 3199, 7748, 7748, 3207, 3210, 3218, 7748, 7748,
822      3871, 3228, 2237, 3861, 3231, 3237, 3249, 3252, 3860, 3255,
823      7748, 3850, 3851, 2246, 3258, 3848, 3846, 3844, 3846, 3837,
824      3261, 3267, 3279, 3283, 3286, 3289, 3292, 3311, 3314, 3317,
825      3332, 7748, 7748, 3340, 3343, 3346, 3350, 3364, 3368, 3371,
826      3375, 3382, 3393, 7748, 7748, 3401, 3404, 3378, 3835, 3411,
827      3834, 3838, 3826, 3415, 3422, 3441, 7748, 7748, 3449, 7748,
828
829      7748, 3819, 3426, 3462, 3465, 7748, 7748, 3810, 3825, 3477,
830      7748, 7748, 3801, 3485, 3795, 3490, 3493, 7748, 7748, 3794,
831      3804, 3509, 7748, 7748, 3517, 3790, 3520, 3523, 3779, 3792,
832      3531, 3777, 3538, 3545, 3550, 3750, 3556, 3559,  687, 3789,
833      3564, 7748, 3787, 7748, 7748, 3742, 3737, 3569, 3730, 3742,
834      3728, 3739, 3736, 2301, 2839, 3738, 3574, 3726, 3705, 3579,
835      3710, 3583, 3588, 3713, 3714, 3591, 3594, 3699, 3597, 7748,
836      7748, 3703, 3719, 3605, 3686, 3610, 7748, 7748, 3683, 3624,
837      3620, 3683, 3633, 2338, 2392, 3645, 3648, 3656, 3684, 3671,
838      3670, 3659, 3663, 3666, 3669, 3675, 3685, 3672, 3679, 7748,
839
840      7748, 3687, 3690, 3698, 3706, 3676, 3701, 3716, 3721, 3737,
841      3740, 3743, 7748, 7748, 3751, 3758, 3769, 3772, 3775, 3778,
842      3781, 3796, 3802, 3814, 3817, 3820, 3828, 3838, 3823, 3667,
843      3845, 3672, 3646, 3661, 3848, 3852, 3661, 3860, 3648, 3866,
844      3649, 3869, 3875, 3879, 3898, 3642, 3901, 3904, 3907, 3910,
845      3635, 3925, 7748, 7748, 3632, 3621, 3933, 3629, 3936, 3942,
846      3955, 3959, 3617, 3963, 3967, 3983,  655,  339,  713, 7748,
847      3611, 3986, 3989, 3604, 3594, 3609, 3580, 3810, 3576, 3575,
848      3569, 3992, 3995, 3998, 4004, 3583, 4008, 3567, 4013, 3580,
849      3554, 3568, 3588, 4016, 3545, 3549, 4019, 4022, 3566, 3540,
850
851       635, 3535, 3534, 3521,  814, 3516, 4025, 7748, 7748, 4040,
852      4043, 3493, 3507, 4048, 4051, 3483, 3489, 4055, 7748, 7748,
853      4063, 3497, 3496, 3473, 4071, 7748, 4076, 7748, 7748, 4085,
854      4090, 3462, 4099, 7748, 7748, 4107, 4110, 4118, 3470, 4121,
855      4125, 4139, 4142, 7748, 7748, 4150, 4154, 3467, 4162, 7748,
856      7748, 3463, 4171, 7748, 3460, 4174, 3441, 4177, 3458, 4180,
857      3469, 3467, 3445, 4195, 7748, 3443, 4198, 3425, 4201, 4204,
858      4222, 4225, 3430, 4236, 3424, 4240, 4243, 4246, 4255, 4261,
859      4273, 3423, 3419, 3420, 4276, 3414, 4279, 7748, 7748, 4288,
860      4295, 4269, 4300, 7748, 7748, 4308, 7748,   40,  733,  699,
861
862      3414, 4314, 4317, 4327, 4332, 3405, 3402, 4339, 4342, 3401,
863      3401, 4347, 4350, 4353, 3397, 4356, 4359, 3396, 4362, 3399,
864      3405, 4365, 7748, 3385, 3392, 4368, 4372, 4375, 3405, 3399,
865      3397, 3394, 3380, 3383, 3374, 3372, 3356, 3346, 4390, 4393,
866      4396, 4404, 3316, 4411, 3307, 3298,  757,  873, 3303, 4414,
867      7748, 7748, 3297, 4422, 7748, 7748, 4430, 4434, 3267, 4442,
868      7748, 7748, 4450, 4453, 7748, 7748, 3262, 3263, 3240, 4461,
869      3246, 4464, 4469, 3247, 3223, 1027, 1031, 3210, 3174, 4482,
870      7748, 3159, 4485, 7748, 7748, 4494, 7748, 7748, 3105, 4502,
871      3088, 4505, 4508, 7748, 7748, 4517, 7748, 7748, 4525, 4528,
872
873      3080,   37, 4531,   70, 4534, 4537, 4540, 4546,  782,  604,
874      4556, 4565, 7748, 7748, 4560, 4573, 4579,   88, 4582, 4585,
875      4588, 4594,  223, 4597,  412, 4600,  490, 7748, 4603,  541,
876      4606, 7748, 4610, 7748, 7748,  646,  682,  708,  708,  730,
877       748,  755,  793,  801,  806, 4621, 4625, 7748, 7748, 4633,
878       774,  808,  814,  839,  877,  868,  887,  853,  854, 4636,
879      7748, 7748,  867, 4644,  878,  870,  966, 4647, 7748, 4650,
880      4653, 7748, 7748,  964,  960, 1010, 1043, 1023, 1054, 1024,
881      1037, 4668, 1054, 4671, 4674, 4680, 4683, 4686, 4695, 4704,
882      1062, 4707, 4710, 4713, 4716, 7748, 4722, 1127, 1395, 4726,
883
884      4742, 4745, 1049, 4748, 4751, 1063, 1065, 1055, 4754, 4757,
885      1072, 1087, 1093, 1108, 1102, 1129, 1137, 1136, 1153, 1142,
886      1153, 4765, 1127, 1131, 1156, 1226, 7748, 1224, 7748, 4768,
887      1191, 1184, 4772, 7748, 1179, 1187, 1183, 4777, 4791, 1199,
888      1218, 1230, 1282, 7748, 1286, 7748, 4786, 1239, 4799, 1241,
889      4805, 7748, 4808, 4811, 4819, 4826, 4829, 7748, 7748, 4838,
890      4841, 4849, 4852, 7748, 4856, 4859, 1282, 1459, 1292, 4862,
891      7748, 1250, 1262, 1300, 4867, 4871, 1340, 1341, 1299, 1331,
892      1340, 1379, 1394, 1418, 1397, 1405, 1406, 1412, 1432, 4881,
893      1397, 1397, 4885, 7748, 7748, 4891, 4894, 1419, 1432, 4903,
894
895      1433, 4909, 4912, 7748, 7748, 1435, 1440, 1438, 7748, 7748,
896      4922, 4927, 4935, 4940, 4943, 1518, 1582, 4953, 7748, 4958,
897      4961, 7748, 7748, 4972, 4977, 4985, 7748, 1575, 1557, 1621,
898      4990, 1445, 1450, 4993, 4997, 1495, 1522, 1516, 1532, 1496,
899      1537, 1535, 1535, 1568, 7748, 1593, 1579, 1583, 1587, 7748,
900      5005, 5011, 5014, 5017, 5025, 5035, 7748, 7748, 1570, 1582,
901      5043, 5046, 1587, 5055, 5061, 1581, 5069, 1590, 5073, 7748,
902      7748, 5081, 5087, 5095, 5099, 1608, 1625, 1636, 1638, 1645,
903      1647, 5107, 5113, 7748, 7748, 1670, 1762, 5121, 5126, 1618,
904      1620, 5129, 7748, 7748, 1664, 1658, 1675, 1681, 5140, 1688,
905
906      1705, 1728, 1715, 1700, 1718, 1732, 1723, 5143, 5146, 5149,
907      5158, 1694, 5167, 7748, 7748, 1695, 1699, 5175, 7748, 7748,
908      1711, 5184, 7748, 7748, 1738, 5153, 5192, 1720, 5200, 1762,
909      1813, 5208, 1821, 1826, 1751, 1760, 1790, 1759, 1768, 1795,
910      5216, 1793, 5219, 5222, 5225, 5244, 5247, 1779, 1791, 1800,
911      1828, 5250, 5253, 1829, 1831, 7748, 1836, 1840, 1845, 7748,
912      1848, 5261, 5264, 7748, 7748, 1824, 1825, 5272, 5275, 5280,
913      5283, 7748, 7748, 5293, 1863, 1883, 1876, 1889, 1886, 1895,
914      1889, 1898, 1895, 1904, 7748, 1903, 1917, 7748, 5298, 7748,
915      2005, 5301, 5304, 5313, 5333, 5378, 5325, 5328, 1919, 1955,
916
917      1949, 1966, 5353, 7748, 7748, 1974, 1955, 1957, 1986, 1965,
918      1967, 5344, 1945, 1957, 5369, 5398, 5372, 5406, 5414, 5422,
919      5417, 5435, 2001, 2000, 2040, 2013, 2046, 2019, 2048, 2022,
920      2054, 2061, 2059, 2083, 2121, 5443, 2175, 2114, 5463, 5508,
921      2099, 7748, 2100, 7748, 7748, 2110, 2111, 7748, 2110, 2123,
922      5453, 7748, 2084, 2070, 5483, 2187, 2209, 5491, 2280, 2282,
923      5528, 7748, 7748, 5536, 2331, 2355, 7748, 2165, 7748, 2173,
924      7748, 2180, 7748, 2216, 7748, 7748, 7748, 7748, 2316, 2281,
925      2418, 2231, 2374, 2235, 5456, 2237, 2254, 7748, 7748, 7748,
926      7748, 5499, 5502, 2491, 2264, 2555, 2266, 2257, 2272, 2275,
927
928      2288, 2561, 2331, 2606, 2334, 7748, 7748, 7748, 7748, 5544,
929      2365, 2375, 2392, 5547, 2397, 2405, 5552, 5556, 5566, 5570,
930      2384, 2394, 2407, 2407, 2416, 2446, 2438, 2449, 2441, 2470,
931      2455, 2469, 2479, 2469, 2480, 2503, 5579, 2554, 7748, 7748,
932      5584, 7748, 7748, 5598, 2599, 2621, 2543, 2550, 2565, 2569,
933      2574, 2571, 2581, 2577, 2601, 2597, 2600, 2621, 2618, 2622,
934      2641, 2639, 2663, 7748, 2657, 2652, 2660, 2663, 2664, 2669,
935      2673, 2672, 2682, 2688, 2694, 2707, 2713, 2714, 2712, 2718,
936      2723, 2726, 2731, 2735, 2742, 2740, 2761, 2746, 2764, 2753,
937      2750, 2778, 2770, 2767, 2783, 2771, 2786, 2774, 2789, 2787,
938
939      2785, 2800, 2800, 2797, 2829, 2837, 2829, 2829, 2835, 2836,
940      2847, 2841, 2884, 2866, 2858, 2886, 2862, 2892, 2865, 2892,
941      2890, 2883, 2913, 2896, 2888, 2916, 2906, 2902, 2922, 2920,
942      2925, 2947, 2923, 7748, 2947, 2933, 7748, 2935, 7748, 2936,
943      7748, 2966, 2943, 7748, 2967, 2955, 7748, 2977, 2953, 2967,
944      2964, 2982, 7748, 2984, 7748, 2999, 3001, 3002, 7748, 3005,
945      7748, 3006, 5592, 3025, 3052, 3035, 3054, 3022, 3027, 3029,
946      3030, 3048, 3049, 5611, 3087, 7748, 3085, 7748, 3090, 3088,
947      3094, 3109, 3113, 3117, 3109, 3143, 7748, 7748, 7748, 7748,
948      7748, 7748, 7748, 7748, 3222, 3224, 3129, 3179, 3112, 3133,
949
950      3184, 3186, 3254, 3277, 3195, 3216, 3292, 3311, 3287, 3290,
951      3130, 3335, 3341, 3372, 3319, 3208, 5606, 5619, 7748, 7748,
952      5639, 5648, 5657, 5666, 5675, 5684, 5693, 5702, 5711, 5720,
953      5729, 5738, 5747, 5756, 5765, 5774, 5783, 5792, 5801, 5810,
954      5819, 5828, 5837, 5846, 5855, 5864, 5873, 5882, 5891, 5900,
955      5909, 5918, 5927, 5936, 5945, 5954, 5963, 5972, 5981, 5990,
956      5999, 6006, 6013, 6020, 6027, 6034, 6041, 6048, 6055, 6062,
957      6069, 6076, 6083, 6090, 6097, 6104, 6111, 6118, 6125, 6134,
958      6141, 6146, 6153, 6158, 6165, 6170, 6177, 6182, 6189, 6194,
959      6199, 6206, 6211, 6218, 6223, 6230, 6235, 6242, 6247, 6254,
960
961      6259, 6266, 6271, 6278, 6283, 6290, 6295, 6302, 6307, 6314,
962      6319, 6326, 6331, 6338, 6343, 6352, 6358, 6365, 6373, 6380,
963      6388, 6395, 6403, 6410, 6418, 6425, 6433, 6440, 6448, 6455,
964      6463, 6470, 6478, 6485, 6493, 6500, 6508, 6516, 6524, 6532,
965      6540, 6547, 6555, 6563, 6571, 6578, 6586, 6593, 6601, 6609,
966      6616, 6624, 6633, 6639, 6646, 6654, 6662, 6670, 6677, 6685,
967      6692, 6700, 6707, 6715, 6722, 6730, 6737, 6745, 6752, 6760,
968      6767, 6775, 6782, 6790, 6797, 6805, 6812, 6820, 6827, 6835,
969      6842, 6850, 6857, 6865, 6872, 6880, 6888, 6895, 6903, 6912,
970      6921, 6928, 6936, 6943, 6951, 6958, 6966, 6973, 6981, 6988,
971
972      6995, 7003, 7011, 7019, 7027, 7035, 7042, 7050, 7057, 7065,
973      7072, 7080, 7087, 7095, 7102, 7110, 7117, 7125, 7132, 7140,
974      7148, 7156, 7164, 7172, 7180, 7189, 7198, 7205, 7213, 7220,
975      7228, 7235, 7243, 7250, 7258, 7265, 7272, 7280, 7288, 7296,
976      7304, 7312, 7319, 7327, 7334, 7342, 7349, 7357, 7365, 7373,
977      7380, 7388, 7396, 7404, 7411, 7419, 7427, 7435, 7443, 7452,
978      7461, 7469, 7477, 7484, 7492, 7499, 7507, 7515, 7523, 7531,
979      7538, 7545, 7553, 7560, 7567, 7575, 7582, 7589, 7597, 7604,
980      7612, 7619, 7627, 7635, 7642, 7650, 7658, 7666, 7675, 7684,
981      7693, 7702, 7711, 7720, 7729, 7738
982
983     } ;
984
985 static yyconst flex_int16_t yy_def[2497] =
986     {   0,
987      2221, 2221, 2222, 2222, 2222, 2222, 2223, 2223, 2224, 2224,
988      2225, 2225, 2226, 2226, 2226, 2226, 2227, 2227, 2221, 2221,
989      2228, 2228, 2229, 2229, 2229, 2229, 2229, 2229, 2221, 2221,
990      2229, 2229, 2221, 2221, 2229, 2229, 2229, 2229, 2230, 2230,
991      2226, 2226, 2231, 2231, 2232, 2232, 2221, 2221, 2232, 2232,
992      2232, 2232, 2233, 2233, 2234, 2234, 2235, 2235, 2236, 2236,
993      2236, 2236, 2221, 2221, 2236, 2236, 2236, 2236, 2221, 2221,
994      2236, 2236, 2221, 2221, 2236, 2236, 2236, 2236, 2221, 2221,
995      2236, 2236, 2221, 2221, 2236, 2236, 2236, 2236, 2237, 2237,
996      2238, 2238, 2221, 2221, 2238, 2238, 2238, 2238, 2220,   99,
997
998      2239, 2239, 2240, 2240, 2241, 2241, 2242, 2242, 2243, 2243,
999      2244, 2244, 2245, 2245, 2221, 2221, 2245, 2245, 2245, 2245,
1000      2246, 2246, 2247, 2247, 2221, 2221, 2247, 2247, 2247, 2247,
1001      2248, 2248, 2249, 2249, 2221, 2221, 2249, 2249, 2249, 2249,
1002      2250, 2250, 2251, 2251, 2252, 2252, 2253, 2253, 2221, 2221,
1003      2253, 2253, 2253, 2253, 2254, 2254, 2255, 2255, 2221, 2221,
1004      2255, 2255, 2255, 2255, 2256, 2256, 2257, 2257, 2258, 2258,
1005      2259, 2259, 2221, 2221, 2259, 2259, 2259, 2259, 2260, 2260,
1006      2261, 2261, 2221, 2221, 2220, 2220, 2220, 2220, 2220, 2220,
1007      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1008
1009      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1010      2220, 2220, 2220, 2220, 2220, 2262, 2220, 2220, 2262, 2220,
1011      2220, 2220,  222,  222,  222,  224,  224, 2220, 2220, 2220,
1012      2263, 2220, 2220, 2263, 2263, 2263, 2220, 2220, 2220, 2220,
1013      2220, 2264, 2220, 2220, 2264, 2264, 2264, 2264, 2220, 2220,
1014       224,  224,  224, 2220, 2220, 2220, 2265, 2220, 2220, 2265,
1015      2265, 2265, 2220, 2220, 2220, 2220, 2220, 2220, 2266, 2220,
1016      2220, 2266, 2266, 2220, 2220,  225,  225,  225,  276,  277,
1017       277,  277,  277,  283,  284,  283,  283, 2220, 2220, 2220,
1018      2267, 2220, 2220, 2267, 2267, 2267, 2267, 2267, 2220, 2220,
1019
1020       224,  224, 2220, 2220, 2220, 2268, 2220, 2220, 2268, 2268,
1021      2268, 2268, 2268, 2268, 2268, 2220, 2220, 2220, 2220, 2220,
1022      2220, 2269, 2220, 2220, 2269, 2269, 2269, 2269, 2269, 2269,
1023      2220, 2220, 2220, 2220, 2220, 2220, 2270, 2220, 2220, 2270,
1024      2270, 2220, 2220, 2220, 2220, 2220, 2220, 2271, 2220, 2220,
1025      2271, 2271, 2271, 2271, 2220, 2220,  224,  224, 2220, 2220,
1026      2220, 2272, 2220, 2220, 2272, 2272, 2220, 2220,  224,  369,
1027       369, 2220, 2220, 2220, 2273, 2220, 2220, 2273, 2273, 2273,
1028      2220, 2220,  369,  369, 2220, 2220, 2220, 2274, 2220, 2220,
1029      2274, 2274, 2220, 2220, 2220, 2220, 2220, 2220, 2275, 2220,
1030
1031      2220, 2275, 2275, 2275, 2220, 2220,  369,  369, 2220, 2220,
1032      2220, 2276, 2220, 2220, 2276, 2276, 2276, 2276, 2220, 2220,
1033       224,  421,  421, 2220, 2220, 2220, 2277, 2220, 2220, 2277,
1034      2220, 2220, 2220, 2220, 2220, 2220, 2278, 2220, 2220, 2278,
1035      2220, 2220,  421,  443,  443, 2220, 2220, 2220, 2279, 2220,
1036      2220, 2279, 2279, 2220, 2220, 2220, 2220, 2280, 2220, 2220,
1037      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1038      2220, 2220, 2220, 2281, 2281, 2282, 2220, 2220, 2220, 2220,
1039      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1040      2220, 2220, 2220, 2283, 2283, 2283, 2283, 2220, 2284, 2220,
1041
1042      2220, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2286, 2220,
1043      2220, 2287, 2287, 2287, 2287, 2288, 2220, 2289, 2289, 2289,
1044      2290, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1045      2267, 2267, 2267, 2267, 2267, 2267, 2291, 2220, 2292, 2292,
1046      2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2293,
1047      2220, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2295, 2220,
1048      2296, 2296, 2296, 2297, 2220, 2298, 2298, 2298, 2298, 2298,
1049      2298, 2299, 2220, 2300, 2300, 2300, 2300, 2301, 2220, 2220,
1050      2302, 2302, 2302, 2302, 2302, 2303, 2220, 2304, 2304, 2304,
1051      2305, 2220, 2306, 2306, 2306, 2306, 2307, 2220, 2308, 2308,
1052
1053      2308, 2308, 2308, 2309, 2220, 2220, 2310, 2310, 2311, 2220,
1054      2312, 2312, 2313, 2220, 2220, 2314, 2314, 2314, 2315, 2316,
1055      2220, 2316, 2220, 2220, 2220, 2317, 2220, 2220, 2220, 2220,
1056      2220, 2220, 2220, 2318, 2319, 2319, 2220, 2220, 2220, 2220,
1057      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1058      2220, 2220, 2220, 2220, 2220, 2320, 2220, 2220, 2320, 2220,
1059      2321, 2321, 2220, 2322, 2220, 2220, 2322, 2322, 2322, 2322,
1060      2323, 2323, 2220, 2324, 2324, 2324, 2325, 2325, 2220, 2220,
1061      2326, 2327, 2327, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1062      2220, 2328, 2328, 2328, 2220, 2220, 2328, 2328, 2329, 2329,
1063
1064      2330, 2220, 2220, 2330, 2220, 2220, 2330, 2330, 2330, 2330,
1065      2330, 2330, 2331, 2331, 2332, 2332, 2220, 2220, 2332, 2332,
1066      2332, 2333, 2333, 2334, 2220, 2220, 2335, 2335, 2336, 2220,
1067      2220, 2336, 2336, 2336, 2337, 2337, 2338, 2338, 2338, 2339,
1068      2339, 2220, 2340, 2340, 2340, 2340, 2341, 2341, 2342, 2220,
1069      2220, 2343, 2343, 2344, 2344, 2344, 2345, 2345, 2346, 2346,
1070      2346, 2346, 2347, 2347, 2220, 2348, 2349, 2349, 2220, 2220,
1071      2350, 2350, 2220, 2220, 2220, 2351, 2352, 2352, 2353, 2220,
1072      2220, 2353, 2220, 2220, 2354, 2220, 2220, 2220, 2220, 2220,
1073      2220, 2355, 2220, 2356, 2220, 2356, 2220, 2220, 2220, 2220,
1074
1075      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1076      2220, 2220, 2220, 2220, 2220, 2220, 2357, 2220, 2220, 2220,
1077      2357, 2220, 2220, 2358, 2220, 2358, 2359, 2220, 2220, 2220,
1078      2220, 2220, 2359, 2220, 2220, 2359, 2220, 2360, 2220, 2360,
1079      2220, 2361, 2361, 2361, 2220, 2362, 2220, 2362, 2220, 2220,
1080      2220, 2363, 2220, 2364, 2220, 2364, 2220, 2220, 2220, 2220,
1081      2220, 2220, 2220, 2365, 2365, 2365, 2220, 2220, 2220, 2365,
1082      2365, 2220, 2366, 2220, 2366, 2367, 2367, 2367, 2220, 2220,
1083      2220, 2367, 2220, 2220, 2220, 2220, 2220, 2367, 2367, 2367,
1084      2367, 2367, 2220, 2368, 2220, 2368, 2369, 2369, 2369, 2220,
1085
1086      2220, 2220, 2220, 2220, 2369, 2369, 2220, 2370, 2220, 2370,
1087      2371, 2220, 2220, 2220, 2220, 2372, 2220, 2372, 2373, 2220,
1088      2220, 2220, 2373, 2373, 2373, 2220, 2374, 2220, 2374, 2220,
1089      2220, 2220, 2220, 2375, 2220, 2376, 2220, 2376, 2220, 2220,
1090      2220, 2377, 2377, 2220, 2220, 2377, 2220, 2378, 2220, 2378,
1091      2379, 2220, 2220, 2220, 2220, 2380, 2220, 2380, 2220, 2220,
1092      2381, 2381, 2220, 2220, 2220, 2382, 2220, 2382, 2383, 2383,
1093      2383, 2383, 2220, 2384, 2220, 2384, 2220, 2385, 2220, 2386,
1094      2220, 2386, 2220, 2220, 2220, 2220, 2387, 2220, 2387, 2220,
1095      2220, 2220, 2220, 2388, 2220, 2389, 2220, 2389, 2390, 2391,
1096
1097      2220, 2220, 2220, 2220, 2220, 2392, 2393, 2220, 2220, 2220,
1098      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1099      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2394, 2220,
1100      2395, 2396, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1101      2396, 2397, 2220, 2398, 2220, 2220, 2398, 2399, 2400, 2220,
1102      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2401, 2401,
1103      2220, 2220, 2401, 2401, 2402, 2403, 2403, 2403, 2220, 2220,
1104      2220, 2220, 2220, 2403, 2403, 2403, 2403, 2403, 2404, 2405,
1105      2405, 2405, 2220, 2220, 2220, 2405, 2405, 2406, 2407, 2408,
1106      2409, 2409, 2409, 2409, 2410, 2220, 2220, 2220, 2220, 2220,
1107
1108      2220, 2411, 2412, 2220, 2220, 2220, 2220, 2413, 2413, 2220,
1109      2220, 2220, 2413, 2414, 2415, 2416, 2220, 2220, 2220, 2417,
1110      2417, 2220, 2220, 2220, 2418, 2419, 2220, 2220, 2419, 2419,
1111      2420, 2220, 2421, 2422, 2423, 2220, 2424, 2425, 2426, 2427,
1112      2427, 2220, 2427, 2220, 2220, 2220, 2428, 2429, 2220, 2220,
1113      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1114      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1115      2220, 2430, 2220, 2431, 2432, 2220, 2220, 2220, 2432, 2433,
1116      2220, 2434, 2220, 2220, 2220, 2220, 2220, 2435, 2436, 2220,
1117      2220, 2220, 2220, 2220, 2220, 2220, 2437, 2437, 2220, 2220,
1118
1119      2220, 2220, 2220, 2220, 2220, 2437, 2438, 2220, 2220, 2439,
1120      2439, 2220, 2220, 2220, 2220, 2220, 2439, 2439, 2439, 2439,
1121      2440, 2220, 2220, 2441, 2441, 2220, 2220, 2441, 2442, 2443,
1122      2444, 2445, 2445, 2445, 2220, 2220, 2445, 2446, 2447, 2448,
1123      2220, 2449, 2449, 2449, 2450, 2451, 2452, 2453, 2453, 2454,
1124      2455, 2220, 2220, 2220, 2455, 2455, 2456, 2220, 2220, 2220,
1125      2457, 2458, 2220, 2220, 2220, 2459, 2460, 2461, 2461, 2220,
1126      2220, 2462, 2463, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1127      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1128      2220, 2464, 2220, 2465, 2466, 2466, 2467, 2468, 2220, 2220,
1129
1130      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2469,
1131      2470, 2220, 2220, 2220, 2220, 2471, 2471, 2220, 2220, 2220,
1132      2220, 2220, 2220, 2471, 2220, 2220, 2220, 2220, 2220, 2220,
1133      2220, 2472, 2220, 2220, 2220, 2220, 2220, 2472, 2472, 2220,
1134      2220, 2473, 2220, 2220, 2220, 2220, 2220, 2474, 2220, 2220,
1135      2220, 2474, 2220, 2220, 2475, 2476, 2477, 2477, 2477, 2220,
1136      2220, 2220, 2477, 2220, 2220, 2478, 2479, 2220, 2220, 2220,
1137      2220, 2220, 2480, 2481, 2482, 2483, 2220, 2220, 2220, 2220,
1138      2484, 2485, 2485, 2485, 2486, 2220, 2220, 2220, 2220, 2487,
1139      2488, 2220, 2220, 2220, 2220, 2220, 2220, 2489, 2490, 2490,
1140
1141      2220, 2220, 2220, 2463, 2220, 2220, 2220, 2220, 2220, 2220,
1142      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2464,
1143      2220, 2220, 2220, 2466, 2466, 2467, 2220, 2220, 2220, 2220,
1144      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2469, 2220,
1145      2220, 2220, 2220, 2220, 2471, 2471, 2220, 2220, 2471, 2220,
1146      2220, 2220, 2472, 2220, 2220, 2220, 2220, 2220, 2472, 2220,
1147      2220, 2220, 2473, 2220, 2220, 2220, 2474, 2474, 2475, 2476,
1148      2477, 2220, 2220, 2477, 2477, 2220, 2220, 2477, 2478, 2220,
1149      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2480, 2481,
1150      2482, 2483, 2220, 2220, 2220, 2220, 2220, 2220, 2484, 2485,
1151
1152      2485, 2485, 2486, 2220, 2487, 2488, 2220, 2489, 2490, 2490,
1153      2220, 2220, 2220, 2220, 2463, 2220, 2220, 2220, 2220, 2220,
1154      2220, 2220, 2220, 2220, 2220, 2220, 2464, 2220, 2466, 2466,
1155      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1156      2220, 2220, 2220, 2220, 2220, 2469, 2220, 2220, 2220, 2220,
1157      2220, 2471, 2471, 2220, 2220, 2220, 2220, 2471, 2472, 2220,
1158      2220, 2220, 2472, 2473, 2474, 2474, 2475, 2220, 2220, 2477,
1159      2220, 2220, 2220, 2477, 2477, 2220, 2220, 2220, 2220, 2477,
1160      2478, 2220, 2480, 2481, 2482, 2483, 2484, 2220, 2220, 2485,
1161      2485, 2486, 2220, 2487, 2220, 2220, 2489, 2490, 2490, 2220,
1162
1163      2463, 2220, 2220, 2220, 2220, 2220, 2220, 2464, 2220, 2220,
1164      2466, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1165      2220, 2469, 2220, 2471, 2471, 2220, 2220, 2220, 2220, 2471,
1166      2472, 2472, 2220, 2220, 2474, 2474, 2475, 2220, 2220, 2477,
1167      2477, 2477, 2220, 2220, 2220, 2220, 2477, 2478, 2220, 2480,
1168      2220, 2220, 2220, 2220, 2483, 2484, 2220, 2220, 2220, 2220,
1169      2220, 2485, 2220, 2220, 2220, 2487, 2489, 2490, 2490, 2220,
1170      2220, 2220, 2220, 2220, 2464, 2220, 2220, 2220, 2466, 2220,
1171      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2469,
1172      2220, 2471, 2471, 2220, 2220, 2220, 2220, 2472, 2472, 2474,
1173
1174      2474, 2475, 2220, 2220, 2220, 2477, 2477, 2477, 2220, 2220,
1175      2220, 2220, 2478, 2480, 2220, 2220, 2220, 2220, 2220, 2484,
1176      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2489, 2490, 2490,
1177      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2466,
1178      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1179      2469, 2220, 2471, 2220, 2220, 2220, 2220, 2220, 2472, 2472,
1180      2220, 2220, 2474, 2220, 2220, 2477, 2477, 2477, 2220, 2220,
1181      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1182      2220, 2484, 2220, 2220, 2220, 2489, 2490, 2490, 2220, 2220,
1183      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2466, 2220,
1184
1185      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2469, 2220, 2220,
1186      2220, 2471, 2220, 2220, 2220, 2472, 2472, 2220, 2220, 2220,
1187      2474, 2220, 2220, 2220, 2477, 2220, 2220, 2477, 2220, 2220,
1188      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1189      2484, 2489, 2490, 2490, 2490, 2220, 2220, 2220, 2220, 2220,
1190      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1191      2220, 2469, 2220, 2220, 2220, 2471, 2472, 2472, 2474, 2477,
1192      2220, 2220, 2220, 2477, 2220, 2220, 2220, 2220, 2220, 2220,
1193      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1194      2489, 2490, 2490, 2490, 2491, 2492, 2220, 2220, 2220, 2220,
1195
1196      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1197      2220, 2469, 2471, 2472, 2220, 2220, 2220, 2220, 2220, 2220,
1198      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1199      2220, 2220, 2220, 2220, 2489, 2490, 2493, 2494, 2491, 2492,
1200      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1201      2220, 2220, 2471, 2472, 2220, 2220, 2220, 2220, 2220, 2220,
1202      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1203      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2489, 2493,
1204      2490, 2495, 2494, 2496, 2490, 2220, 2220, 2220, 2220, 2220,
1205      2220, 2471, 2472, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1206
1207      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2489,
1208      2495, 2220, 2496, 2490, 2220, 2220, 2220, 2220, 2220, 2220,
1209      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1210      2220, 2220, 2220, 2220, 2220, 2220, 2489, 2220, 2220, 2220,
1211      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1212      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1213      2220, 2220, 2489, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1214      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1215      2220, 2220, 2220, 2220, 2489, 2220, 2220, 2220, 2220, 2220,
1216      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1217
1218      2220, 2220, 2220, 2220, 2220, 2489, 2220, 2220, 2220, 2220,
1219      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1220      2220, 2220, 2220, 2220, 2220, 2220, 2489, 2220, 2220, 2220,
1221      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1222      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2489, 2220, 2220,
1223      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1224      2220, 2220, 2489, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1225      2220, 2220, 2220, 2489, 2220, 2220, 2220, 2220, 2220, 2220,
1226      2220, 2220, 2220, 2220, 2489, 2489, 2220, 2220, 2220, 2220,
1227      2220, 2220, 2220, 2220, 2489, 2489, 2489, 2489, 2489, 2489,
1228
1229      2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
1230      2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2220,    0,
1231      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1232      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1233      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1234      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1235      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1236      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1237      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1238      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1239
1240      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1241      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1242      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1243      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1244      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1245      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1246      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1247      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1248      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1249      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1250
1251      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1252      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1253      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1254      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1255      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1256      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1257      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1258      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1259      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
1260      2220, 2220, 2220, 2220, 2220, 2220
1261
1262     } ;
1263
1264 static yyconst flex_int16_t yy_nxt[7819] =
1265     {   0,
1266      2220,  188,  189,  188,  188,  189,  188,  188,  189,  188,
1267       188,  189,  188,  193,  189,  193,  199,  190,  196,  199,
1268       190,  196, 2220,  191,  509,  197,  191,  621,  197,  194,
1269       193,  189,  193,  458,  200,  202,  203,  200,  202,  203,
1270       204,  205,  622,  204,  205,  458,  194,  209,  210,  459,
1271       206,  202,  203,  206,  207,  461,  204,  202,  203,  780,
1272       207,  460,  204,  209,  210, 1508,  206,  189,  189,  189,
1273       521,  460,  206,  510,  189,  189,  189,  221,  189,  221,
1274       221,  189,  221,  212,  221,  189,  221,  505,  461,  211,
1275       212,  506, 2220,  222, 1591,  507,  222,  457,  457,  457,
1276
1277       223,  457,  457,  457,  460,  211,  213,  214,  189,  214,
1278       213,  213,  213,  213,  213,  213,  213,  215,  213,  213,
1279       213,  526,  213,  217,  213,  218,  213,  221,  189,  221,
1280       221,  189,  221,  481, 1593,  221,  189,  221,  189,  189,
1281       189,  510,  484,  223,  472,  484,  224,  490,  461,  213,
1282       213,  224,  509, 1603,  225,  189,  189,  189,  457,  457,
1283       457,  457,  457,  457,  460,  457,  457,  457,  457,  457,
1284       457,  225,  219,  213,  214,  189,  214,  213,  213,  213,
1285       213,  213,  213,  213,  215,  213,  213,  213,  537,  213,
1286       217,  213,  218,  213,  221,  189,  221,  221,  189,  221,
1287
1288       548,  492,  189,  189,  189,  189,  189,  189,  545, 2220,
1289       223,  546,  549,  223,  540,  780,  213,  213,  226,  999,
1290       461,  226,  221,  189,  221,  221,  189,  221,  221,  189,
1291       221,  221,  189,  221,  541, 2220,  460,  510,  224,  219,
1292       492,  224,  484,  621,  227,  479,  537,  227,  228,  229,
1293       189,  229,  228,  228,  228,  228,  228,  228,  228,  230,
1294       228,  228,  228, 2220,  228,  232,  228,  233,  228,  250,
1295       189,  250,  486,  487,  250,  189,  250,  660,  189,  189,
1296       189, 1606,  202,  203,  491,  251,  478,  204,  202,  203,
1297       251,  228,  228,  204,  252,  492,  570,  237,  627,  234,
1298
1299       492,  628,  235,  237,  457,  457,  457,  571,  236,  228,
1300       229,  189,  229,  228,  228,  228,  228,  228,  228,  228,
1301       230,  228,  228,  228,  238,  228,  232,  228,  233,  228,
1302       238,  189,  189,  189,  250,  189,  250,  576,  250,  189,
1303       250,  250,  189,  250,  577,  461,  461,  252,  498,  461,
1304       251,  461,  228,  228,  251,  499,  516,  253, 1142,  572,
1305       234,  460,  460,  235,  460,  460,  466,  460,  572,  236,
1306       239,  240,  189,  240,  239,  239,  239,  239,  239,  239,
1307       239,  241,  239,  239,  239,  487,  239,  243,  239,  244,
1308       239,  250,  189,  250,  264,  189,  264, 1399,  584,  264,
1309
1310       189,  264,  275,  189,  275,  585,  467,  253,  510,  461,
1311       265,  479,  468,  239,  239,  265,  469,  492,  276,  647,
1312       640,  470,  245,  641,  246,  460,  528,  247,  457,  457,
1313       457,  586,  648,  248,  239,  240,  189,  240,  239,  239,
1314       239,  239,  239,  239,  239,  241,  239,  239,  239,  647,
1315       239,  243,  239,  244,  239,  275,  189,  275,  275,  189,
1316       275,  780,  688,  275,  189,  275,  189,  189,  189,  640,
1317      1607,  276,  650,  461,  277,  782,  482,  239,  239,  277,
1318       461,  597,  278,  457,  457,  457,  245,  550,  246,  460,
1319       897,  247,  457,  457,  457,  898,  460,  248,  254,  255,
1320
1321       189,  255,  254,  254,  254,  254,  254,  254,  254,  256,
1322       254,  254,  254,  487,  254,  258,  254,  259,  254,  189,
1323       189,  189,  275,  189,  275, 1017,  482,  275,  189,  275,
1324       275,  189,  275,  652,  647,  278,  650, 1018,  279,  461,
1325       488,  254,  254,  279,  461,  461,  280,  690,  260,  457,
1326       457,  457,  489,  261, 1608,  460,  490,  457,  457,  457,
1327       460,  460,  262,  254,  255,  189,  255,  254,  254,  254,
1328       254,  254,  254,  254,  256,  254,  254,  254,  647,  254,
1329       258,  254,  259,  254,  275,  189,  275,  189,  189,  189,
1330      1026,  691,  189,  189,  189,  275,  189,  275,  693,  773,
1331
1332       280,  694, 1018,  281,  780, 1611,  254,  254,  281,  461,
1333       461,  277,  648,  260,  457,  457,  457,  559,  261,  457,
1334       457,  457, 1139, 1142, 2220,  460,  460,  262,  266,  267,
1335       189,  267,  266,  266,  266,  266,  266,  266,  266,  268,
1336       266,  266,  266, 1026,  266,  270,  266,  271,  266,  275,
1337       189,  275,  189,  189,  189, 1043, 1431,  189,  189,  189,
1338       275,  189,  275, 1432,  461,  277,  524, 1599,  282,  525,
1339      1612,  266,  266,  282,  780,  529,  280,  457,  457,  457,
1340       460,  578,  272,  457,  457,  457,  457,  457,  457, 1398,
1341       273,  266,  267,  189,  267,  266,  266,  266,  266,  266,
1342
1343       266,  266,  268,  266,  266,  266,  780,  266,  270,  266,
1344       271,  266,  275,  189,  275,  275,  189,  275, 1142, 1613,
1345       275,  189,  275,  189,  189,  189,  579,  461,  280, 1267,
1346       492,  283, 1142, 1614,  266,  266,  283, 1615,  461,  284,
1347       189,  189,  189,  460,  461,  272,  275,  189,  275,  275,
1348       189,  275, 1142,  273,  460, 1616,  284,  189,  189,  189,
1349       460, 1510,  285, 1400,  461,  285,  189,  189,  189,  275,
1350       189,  275, 1617,  286,  275,  189,  275,  275,  189,  275,
1351       460, 1509,  286, 1554,  461,  283,  275,  189,  275, 1555,
1352       283,  564, 1618,  287,  457,  457,  457,  457,  457,  457,
1353
1354       460, 1142,  287,  288,  289,  189,  289,  288,  288,  288,
1355       288,  288,  288,  288,  290,  288,  288,  288, 1619,  288,
1356       292,  288,  293,  288,  300,  189,  300,  300,  189,  300,
1357      1620, 1621,  189,  189,  189, 1436,  189,  189,  189, 1623,
1358       301, 1598, 1437,  301,  644,  461,  288,  288,  252,  294,
1359       645,  295,  252,  457,  457,  457,  646,  296,  457,  457,
1360       457,  460, 1624,  297, 1625, 1626,  298,  288,  289,  189,
1361       289,  288,  288,  288,  288,  288,  288,  288,  290,  288,
1362       288,  288, 1627,  288,  292,  288,  293,  288,  300,  189,
1363       300,  300,  189,  300, 1628, 1629,  300,  189,  300, 1556,
1364
1365       300,  189,  300, 1630,  301, 1557, 1631,  301,  653,  461,
1366       288,  288,  302,  294,  645,  295,  302,  457,  457,  457,
1367       646,  296,  457,  457,  457,  460, 1632,  297, 1635, 1636,
1368       298,  303,  304,  189,  304,  303,  303,  303,  303,  303,
1369       303,  303,  305,  303,  303,  303,  306,  303,  307,  303,
1370       308,  303,  306,  306,  306,  306,  306,  306,  306,  306,
1371       306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
1372       306,  306,  306,  306,  303,  303,  306,  306,  309,  310,
1373       306,  306,  306,  306,  306,  311,  306,  312,  306,  306,
1374       306,  313,  306,  314,  315,  306,  306,  306,  306,  306,
1375
1376       306,  317,  189,  317,  317,  189,  317,  457,  457,  457,
1377       457,  457,  457,  457,  457,  457, 1637,  318, 1641, 1642,
1378       318,  319,  320,  189,  320,  319,  319,  319,  319,  319,
1379       319,  319,  321,  319,  319,  319, 1643,  319,  323,  319,
1380       324,  319,  332,  189,  332,  332,  189,  332, 1644, 1645,
1381       343,  189,  343, 1576,  343,  189,  343, 1578,  333, 1577,
1382       461,  333, 1646, 1579,  319,  319,  344,  591,  325,  326,
1383       344,  457,  457,  457, 1647,  327,  460,  328,  457,  457,
1384       457,  329,  604, 1648,  330,  319,  320,  189,  320,  319,
1385       319,  319,  319,  319,  319,  319,  321,  319,  319,  319,
1386
1387      1650,  319,  323,  319,  324,  319,  356,  189,  356,  356,
1388       189,  356, 1662, 1672,  189,  189,  189,  605,  189,  189,
1389       189, 1673,  357, 1674, 1675,  357, 1679, 1680,  319,  319,
1390       252,  510,  325,  326,  252,  457,  457,  457, 1681,  327,
1391      1682,  328,  457,  457,  457,  329, 1142, 1683,  330,  334,
1392       335,  189,  335,  334,  334,  334,  334,  334,  334,  334,
1393       336,  334,  334,  334, 1684,  334,  338,  334,  339,  334,
1394       356,  189,  356,  356,  189,  356, 1668, 1685,  356,  189,
1395       356, 1686,  356,  189,  356, 1687,  357, 1688, 1689,  357,
1396       644, 1691,  334,  334,  358, 1692,  645,  340,  358,  457,
1397
1398       457,  457,  655,  341,  334,  335,  189,  335,  334,  334,
1399       334,  334,  334,  334,  334,  336,  334,  334,  334, 1693,
1400       334,  338,  334,  339,  334,  368,  189,  368,  368,  189,
1401       368, 1694, 1695,  189,  189,  189, 1698,  189,  189,  189,
1402      1699,  369, 1700, 1701,  369,  653, 1702,  334,  334,  370,
1403      1706,  645,  340,  370,  457,  457,  457,  655,  341,  345,
1404       346,  189,  346,  345,  345,  345,  345,  345,  345,  345,
1405       347,  345,  345,  345, 1707,  345,  349,  345,  350,  345,
1406       368,  189,  368,  368,  189,  368, 1708, 1709,  368,  189,
1407       368,  368,  189,  368, 1710, 1713,  369, 1714,  461,  369,
1408
1409      1731,  780,  345,  345,  371,  609,  351,  371,  457,  457,
1410       457, 1142, 1732,  352,  460,  353,  457,  457,  457,  457,
1411       457,  457,  354,  345,  346,  189,  346,  345,  345,  345,
1412       345,  345,  345,  345,  347,  345,  345,  345, 1728,  345,
1413       349,  345,  350,  345,  382,  189,  382,  382,  189,  382,
1414      1733, 1730,  189,  189,  189,  189,  189,  189, 1740, 1741,
1415       383, 1742,  461,  383, 1736, 1738,  345,  345,  370,  619,
1416       351,  370,  457,  457,  457, 1737, 1739,  352,  460,  353,
1417       457,  457,  457,  457,  457,  457,  354,  359,  360,  189,
1418       360,  359,  359,  359,  359,  359,  359,  359,  361,  359,
1419
1420       359,  359, 1743,  359,  363,  359,  364,  359,  382,  189,
1421       382,  382,  189,  382, 1142, 1744,  382,  189,  382,  382,
1422       189,  382,  653, 1745,  383, 1746, 1747,  383,  645, 1748,
1423       359,  359,  384, 1749,  673,  384,  365,  457,  457,  457,
1424      1750,  625,  625,  625,  625,  625,  625, 1752,  784, 1669,
1425       366,  359,  360,  189,  360,  359,  359,  359,  359,  359,
1426       359,  359,  361,  359,  359,  359, 1753,  359,  363,  359,
1427       364,  359,  394,  189,  394,  394,  189,  394, 1142, 1759,
1428       406,  189,  406,  406,  189,  406, 1760, 1763,  395, 1766,
1429      1767,  395, 1768, 1790,  359,  359,  407,  626, 1791,  407,
1430
1431       365,  797,  797,  797,  812,  812,  812,  797,  797,  797,
1432       797,  797,  797, 1729,  366,  372,  373,  189,  373,  372,
1433       372,  372,  372,  372,  372,  372,  374,  372,  372,  372,
1434      1795,  372,  376,  372,  377,  372,  189,  189,  189,  189,
1435       189,  189, 1776, 1796,  406,  189,  406,  406,  189,  406,
1436      1777, 1797,  370, 1798, 1799,  370, 1778,  876,  372,  372,
1437       407, 1800,  798,  407,  378,  798,  877,  379,  818,  818,
1438       818,  857,  819,  878, 1801,  820, 1142, 1802,  380,  372,
1439       373,  189,  373,  372,  372,  372,  372,  372,  372,  372,
1440       374,  372,  372,  372,  780,  372,  376,  372,  377,  372,
1441
1442       406,  189,  406,  406,  189,  406, 1779, 1803,  420,  189,
1443       420,  420,  189,  420, 1780, 1787,  408, 1804, 1805,  408,
1444      1781, 1786,  372,  372,  421, 1806, 1807,  421,  378, 1816,
1445      1817,  379,  828,  828,  828, 1821,  829, 1825, 1828,  830,
1446      1142, 1835,  380,  385,  386,  189,  386,  385,  385,  385,
1447       385,  385,  385,  385,  387,  385,  385,  385, 1836,  385,
1448       389,  385,  390,  385,  189,  189,  189,  189,  189,  189,
1449      1837, 1838,  420,  189,  420,  420,  189,  420, 1839, 1788,
1450       422, 1840, 1846,  422, 1847, 1848,  385,  385,  421,  780,
1451      1849,  421,  391,  812,  812,  812, 1850,  392,  385,  386,
1452
1453       189,  386,  385,  385,  385,  385,  385,  385,  385,  387,
1454       385,  385,  385, 1851,  385,  389,  385,  390,  385,  420,
1455       189,  420,  420,  189,  420, 1854, 1855,  432,  189,  432,
1456       432,  189,  432, 1856, 1842,  423, 1857, 1858,  423, 1859,
1457      1860,  385,  385,  433, 1861, 1866,  433,  391,  812,  812,
1458       812, 1867,  392,  396,  397,  189,  397,  396,  396,  396,
1459       396,  396,  396,  396,  398,  396,  396,  396, 1868,  396,
1460       400,  396,  401,  396,  442,  189,  442,  442,  189,  442,
1461      1869, 1142,  189,  189,  189,  189,  189,  189, 1870, 1874,
1462       443, 1883, 1884,  443, 1875, 1885,  396,  396,  252, 1886,
1463
1464      1887,  252,  402, 1888, 1876,  403,  849,  849,  849,  857,
1465       850, 1899,  780,  851, 1843, 1900,  404,  396,  397,  189,
1466       397,  396,  396,  396,  396,  396,  396,  396,  398,  396,
1467       396,  396, 1901,  396,  400,  396,  401,  396,  442,  189,
1468       442,  442,  189,  442, 1891, 1877,  442,  189,  442,  442,
1469       189,  442, 1902, 1879,  444, 1878, 1906,  444, 1881, 1907,
1470       396,  396,  445, 1880, 1908,  445,  402, 1909, 1882,  403,
1471       867,  867,  867, 1910,  868,  613, 1911,  869, 1913, 1914,
1472       404,  409,  410,  189,  410,  409,  409,  409,  409,  409,
1473       409,  409,  411,  409,  409,  409, 1923,  409,  413,  409,
1474
1475       414,  409,  455,  189,  455,  455,  189,  455, 1924, 1925,
1476       478,  657,  657,  657, 1926,  793,  793,  793,  456, 1927,
1477      1928,  456, 1929, 1930,  409,  409,  614, 1931,  658, 1932,
1478       521,  521,  415,  795,  416, 1933,  417, 1154, 1154, 1154,
1479       522,  527, 1934, 1941,  418,  409,  410,  189,  410,  409,
1480       409,  409,  409,  409,  409,  409,  411,  409,  409,  409,
1481      1942,  409,  413,  409,  414,  409,  523,  523,  488,  665,
1482       665,  665,  524, 1943, 1944,  525,  679,  679,  679, 1945,
1483       492,  526,  695,  695,  695, 1946,  666, 1947,  409,  409,
1484       702,  702,  702,  680, 1948, 1949,  415, 1950,  416,  696,
1485
1486       417, 1953, 1155, 1155, 1155, 1954, 1967,  703,  418,  424,
1487       425,  189,  425,  424,  424,  424,  424,  424,  424,  424,
1488       426,  424,  424,  424,  780,  424,  428,  424,  429,  424,
1489       705,  705,  705,  717,  717,  717, 1968,  725,  725,  725,
1490       730,  730,  730,  750,  750,  750, 1156,  706, 1969, 1970,
1491       718, 1971,  424,  424,  726, 1972, 1973,  731, 1974, 1975,
1492       751,  879,  879,  879, 1935,  880, 1976, 1977,  881, 1157,
1493      1157, 1157, 1160, 1160, 1160,  430,  424,  425,  189,  425,
1494       424,  424,  424,  424,  424,  424,  424,  426,  424,  424,
1495       424, 1978,  424,  428,  424,  429,  424,  769,  769,  769,
1496
1497       774,  774,  774,  793,  793,  793,  657,  657,  657,  823,
1498       823,  823, 1986, 1987,  770, 1988, 1989,  775, 1990,  424,
1499       424,  795, 1981,  658,  665,  665,  665,  825,  883,  883,
1500       883, 1991,  884, 1984, 1992,  885, 1166, 1166, 1166, 1993,
1501       780,  666,  430,  434,  435,  189,  435,  434,  434,  434,
1502       434,  434,  434,  434,  436,  434,  434,  434,  796,  434,
1503       438,  434,  439,  434,  823,  823,  823,  831,  831,  831,
1504      2006,  834,  834,  834,  837,  837,  837,  837,  837,  837,
1505      1981, 2007,  825, 1979,  832, 2008,  434,  434,  835,  900,
1506       900,  900,  839,  901, 1982,  839,  902,  440,  434,  435,
1507
1508       189,  435,  434,  434,  434,  434,  434,  434,  434,  436,
1509       434,  434,  434, 1994,  434,  438,  434,  439,  434,  845,
1510       845,  845,  840, 1995, 2009,  826,  845,  845,  845,  679,
1511       679,  679,  853,  853,  853, 1996, 2012,  847, 1181, 1181,
1512      1181,  434,  434, 2012,  847, 1997,  680, 1192, 1192, 1192,
1513       855, 2015,  440,  446,  447,  189,  447,  446,  446,  446,
1514       446,  446,  446,  446,  448,  446,  446,  446, 2016,  446,
1515       450,  446,  451,  446,  853,  853,  853,  695,  695,  695,
1516       872,  872,  872,  872,  872,  872, 1981,  848,  702,  702,
1517       702, 2023,  855, 2026,  696, 2027,  446,  446,  874, 2028,
1518
1519      1982,  874, 1154, 1154, 1154,  703, 1998,  452, 2000,  856,
1520       912,  912,  912, 2029,  913, 2030, 1999,  914, 2001,  453,
1521       446,  447,  189,  447,  446,  446,  446,  446,  446,  446,
1522       446,  448,  446,  446,  446,  780,  446,  450,  446,  451,
1523       446,  875,  705,  705,  705,  886,  886,  886,  893,  893,
1524       893,  893,  893,  893,  717,  717,  717, 2002, 2033,  706,
1525      1299, 2036,  887,  446,  446, 1300,  895, 2003, 1301,  895,
1526      2012,  718, 1302, 2010,  452,  903,  903,  903,  907,  907,
1527       907, 2004, 1981,  907,  907,  907,  453,  461,  725,  725,
1528       725, 2005,  904, 1984,  476, 2038,  909,  915,  915,  915,
1529
1530      2012,  909, 2039,  460,  477,  726,  896,  915,  915,  915,
1531       730,  730,  730, 2040, 1303,  917,  920,  920,  920, 1304,
1532       921, 2047, 1305,  922, 2048,  917, 1306,  731, 2049,  478,
1533       479,  480,  910,  926,  926,  926,  481, 1142, 1143,  482,
1534       926,  926,  926,  483, 2050,  484, 2051,  485,  935,  935,
1535       935,  928,  930,  930,  930,  932,  932,  932,  928, 2220,
1536      2220, 2220,  935,  935,  935,  918,  937, 2052, 2053,  931,
1537      2054, 2055,  933,  940,  940,  940, 2220, 2220, 2220, 2220,
1538       937,  944,  944,  944, 2220, 2220, 2220,  947,  947,  947,
1539       941, 2056, 2057,  929, 2220,  947,  947,  947,  945, 2058,
1540
1541      2059, 2220,  750,  750,  750,  949, 2060,  952,  952,  952,
1542      2061,  953, 2021,  949,  954,  934,  955,  955,  955,  751,
1543       938,  959,  959,  959, 2062,  942,  955,  955,  955, 2022,
1544       950,  963,  963,  963,  957, 2220, 2220, 2220,  960,  943,
1545       946,  965,  965,  965,  957,  965,  965,  965,  964,  973,
1546       973,  973, 2220,  973,  973,  973,  979,  979,  979,  967,
1547       979,  979,  979,  967,  769,  769,  769,  975,  983,  983,
1548       983,  975,  984, 2064,  981,  985, 2024, 2069,  981,  958,
1549      2070,  770, 2031,  961,  986,  986,  986,  986,  986,  986,
1550       774,  774,  774, 2025,  991,  991,  991,  962,  992, 2032,
1551
1552      2071,  993,  988, 2072, 2073,  988, 2074,  775,  995,  995,
1553       995, 2075, 2076,  968,  976,  995,  995,  995,  793,  793,
1554       793,  982,  793,  793,  793, 2065,  997, 2034,  793,  793,
1555       793, 2077, 2078,  997, 2079, 2066,  795, 1027, 1027, 1027,
1556       795, 2220, 2220, 2220, 2035,  989,  795, 2067,  818,  818,
1557       818, 2080,  819, 2081, 1028,  820, 2082, 2068, 2220,  823,
1558       823,  823,  823,  823,  823,  823,  823,  823,  828,  828,
1559       828, 2083,  829, 1007, 2084,  830,  998,  825, 2086, 2087,
1560       825, 2088,  780,  825,  831,  831,  831, 1033, 1033, 1033,
1561      2089, 1034, 2090, 2091, 1035, 1036, 1036, 1036, 2092, 1029,
1562
1563      2093,  832,  834,  834,  834, 2085, 2094, 1038, 1038, 1038,
1564      1031, 1039, 1037, 2095, 1040,  837,  837,  837, 2096,  835,
1565       837,  837,  837,  837,  837,  837, 1045, 1045, 1045,  845,
1566       845,  845, 2097,  839,  845,  845,  845, 2098,  839, 2099,
1567      2100,  839, 2101, 1046,  845,  845,  845,  847, 2102,  849,
1568       849,  849,  847,  850, 2103, 2104,  851,  853,  853,  853,
1569      2105,  780,  847,  853,  853,  853, 1050, 1050, 1050, 1061,
1570      1061, 1061,  867,  867,  867,  855,  868, 2107, 2106,  869,
1571      1042,  855, 2108, 2109, 1051, 2110, 1062, 2111, 2112, 1048,
1572       872,  872,  872,  872,  872,  872,  872,  872,  872,  879,
1573
1574       879,  879, 2113,  880, 2114, 2115,  881, 2116,  874, 2117,
1575      2118,  874, 2119, 2120,  874, 1069, 1069, 1069,  883,  883,
1576       883, 2121,  884, 2122, 2123,  885,  886,  886,  886, 1071,
1577      1071, 1071, 1070, 1072, 2124, 2125, 1073,  893,  893,  893,
1578      1155, 1155, 1155,  887,  893,  893,  893,  893,  893,  893,
1579       900,  900,  900, 2126,  901,  895,  780,  902, 1065,  903,
1580       903,  903,  895, 2128, 2129,  895, 1083, 1083, 1083, 2130,
1581      1084, 2131, 2132, 1085, 2127, 2133,  904,  907,  907,  907,
1582       907,  907,  907,  907,  907,  907,  912,  912,  912, 2134,
1583       913, 2135, 2136,  914, 2137,  909, 2138, 2139,  909, 2140,
1584
1585      2141,  909,  915,  915,  915,  915,  915,  915,  915,  915,
1586       915, 1079,  920,  920,  920, 2142,  921, 2143, 2144,  922,
1587       917, 2145, 2146,  917, 2147,  780,  917,  926,  926,  926,
1588      2149, 2148, 1088,  926,  926,  926,  926,  926,  926,  930,
1589       930,  930, 1096, 1096, 1096,  928, 1097, 2150, 2151, 1098,
1590      2152,  928, 2153, 2154,  928, 2155,  931,  932,  932,  932,
1591      1099, 1099, 1099, 2156, 1100, 2157, 2158, 1101,  935,  935,
1592       935, 2159, 1090, 2160,  933, 2161,  935,  935,  935,  935,
1593       935,  935,  940,  940,  940, 2162,  937, 2164, 1105, 1105,
1594      1105, 2165, 1106, 1095,  937, 1107,  780,  937, 2166,  941,
1595
1596       944,  944,  944, 1110, 1110, 1110, 2167, 1111, 2163, 2168,
1597      1112,  947,  947,  947,  947,  947,  947,  945,  947,  947,
1598       947,  952,  952,  952, 2169,  953, 2170, 2171,  954,  949,
1599      2172, 2173,  949,  955,  955,  955,  949,  955,  955,  955,
1600       955,  955,  955, 1103,  959,  959,  959,  963,  963,  963,
1601      2175,  957, 1117, 1117, 1117,  957, 1118, 2176,  957, 1119,
1602      2177,  960, 2178, 2179,  964, 1122, 1122, 1122, 2180, 1123,
1603      2181, 2182, 1124,  965,  965,  965,  965,  965,  965, 1114,
1604       965,  965,  965, 1127, 1127, 1127,  973,  973,  973, 2183,
1605      2184,  967, 2187, 2188,  967, 2189, 2190, 1116,  967, 2191,
1606
1607      1128,  973,  973,  973,  975,  973,  973,  973,  979,  979,
1608       979,  979,  979,  979,  979,  979,  979, 2192, 2193,  975,
1609       983,  983,  983,  975,  984, 2194,  981,  985,  780,  981,
1610      1590,  780,  981,  986,  986,  986,  986,  986,  986, 1125,
1611       986,  986,  986,  991,  991,  991, 1585,  992,  780,  780,
1612       993,  988,  780, 1583,  988,  995,  995,  995,  988,  995,
1613       995,  995,  780, 1131, 2201, 1134,  995,  995,  995, 1141,
1614      1141, 1141, 2195,  997,  793,  793,  793,  997, 1027, 1027,
1615      1027,  823,  823,  823,  997, 2202, 2199, 1142, 1143, 1169,
1616      1169, 1169,  795, 1170, 2213, 1028, 1171, 1135,  780,  825,
1617
1618      1033, 1033, 1033,  780, 1034,  780, 2196, 1035, 1036, 1036,
1619      1036, 1176, 1176, 1176,  780, 1177, 2217, 1582, 1178, 1038,
1620      1038, 1038, 1581, 1039, 1138, 1037, 1040,  780, 1174,  837,
1621       837,  837, 1045, 1045, 1045,  780, 2200, 1148, 1183, 1183,
1622      1183,  780, 1184,  780, 2207, 1185, 2203,  839, 2204, 1046,
1623      1186, 1186, 1186,  845,  845,  845, 1050, 1050, 1050, 1193,
1624      1193, 1193, 1061, 1061, 1061, 2208, 1580, 1187, 1199, 1199,
1625      1199,  847, 1200,  780, 1051, 1201, 2197, 1180, 2198, 1062,
1626      1202, 1202, 1202, 1575, 1204, 1204, 1204,  872,  872,  872,
1627      1208, 1208, 1208, 2220, 2220, 2220,  780, 1203, 1574, 1570,
1628
1629      1188, 1205, 2209, 1156, 1567,  874,  780, 1209, 2205,  780,
1630      2220,  780, 2220, 2220, 2220, 1069, 1069, 1069, 1212, 1212,
1631      1212, 2210, 1213, 1566, 2217, 1214, 1565, 1563, 1206, 2220,
1632       780, 2206, 1070, 1071, 1071, 1071, 2211, 1072,  780, 2212,
1633      1073, 1215, 1215, 1215, 2220, 2220, 2220, 2220, 2220, 2220,
1634      1207, 2220, 2220, 2220,  780, 1559, 1210, 1211, 1216, 1558,
1635       780, 2220, 1553, 1552, 2220, 2220, 2220, 2220, 2220,  893,
1636       893,  893, 1222, 1222, 1222, 1551, 2220, 2220, 2220,  907,
1637       907,  907, 2220, 2220, 2220, 2220, 1545,  895, 1544, 1223,
1638      2215,  780, 1218, 2220, 1083, 1083, 1083,  909, 1084, 2214,
1639
1640      2220, 1085, 1226, 1226, 1226, 2220, 2220, 2220, 1219, 1543,
1641      1542, 1217,  915,  915,  915, 1541, 1235, 1235, 1235, 1227,
1642      1540, 2216, 2220,  926,  926,  926, 1539,  935,  935,  935,
1643       917, 1221, 1220, 1236, 1538, 1537, 1225, 1536, 1530, 1224,
1644      1229,  928, 1096, 1096, 1096,  937, 1097, 1529, 1528, 1098,
1645      1099, 1099, 1099, 1527, 1100, 1525, 1523, 1101, 1521, 1520,
1646      1237, 1518, 1228, 1155, 1155, 1155, 1105, 1105, 1105, 1517,
1647      1106, 1511, 1504, 1107, 1502, 1231, 1501, 1238, 1110, 1110,
1648      1110, 1500, 1111, 1491, 1489, 1112,  947,  947,  947, 1482,
1649      1240,  955,  955,  955, 1117, 1117, 1117, 1479, 1118, 1478,
1650
1651      1477, 1119, 1476, 1475,  949, 1471, 1469, 1241, 1468,  957,
1652      1122, 1122, 1122, 1467, 1123, 1459, 1453, 1124,  965,  965,
1653       965, 1127, 1127, 1127, 1252, 1252, 1252, 1449, 1253, 1448,
1654      1447, 1254,  973,  973,  973, 1446,  967, 1445, 1128, 1259,
1655      1259, 1259, 1443, 1442, 1245, 1247,  979,  979,  979, 1438,
1656       975,  986,  986,  986, 1435, 1434, 1260, 1264, 1264, 1264,
1657       995,  995,  995, 1250,  981, 1141, 1141, 1141, 1433,  988,
1658       793,  793,  793, 1430, 1265, 1157, 1157, 1157,  997, 1257,
1659      1160, 1160, 1160, 1142, 1283, 1283, 1283, 1429,  795, 1285,
1660      1285, 1285, 1166, 1166, 1166, 1289, 1289, 1289, 1169, 1169,
1661
1662      1169, 1262, 1170, 1425, 1424, 1171,  823,  823,  823, 1421,
1663      1261, 1176, 1176, 1176, 1268, 1177, 1420, 1419, 1178, 1266,
1664      1273, 1181, 1181, 1181,  825,  837,  837,  837, 1418, 1417,
1665      1269, 1415, 1412, 1286, 1183, 1183, 1183, 1411, 1184, 1290,
1666      1410, 1185, 1408,  839, 1407, 1284, 1186, 1186, 1186, 1307,
1667      1307, 1307, 1406, 1308, 1405, 1294, 1309,  845,  845,  845,
1668      1192, 1192, 1192, 1187, 1193, 1193, 1193, 1314, 1314, 1314,
1669      1314, 1314, 1314, 1401, 1392,  847, 1283, 1283, 1283, 1386,
1670      1199, 1199, 1199, 1297, 1200, 1384, 1383, 1201, 1202, 1202,
1671      1202, 1318, 1318, 1318, 1382, 1319, 1375, 1368, 1320, 1204,
1672
1673      1204, 1204, 1325, 1325, 1325, 1203, 1310, 1321, 1321, 1321,
1674      1366, 1322, 1363, 1359, 1323, 1358, 1205, 1208, 1208, 1208,
1675      1326, 1357, 1327, 1327, 1327, 1355, 1328, 1324, 1315, 1329,
1676      1317, 1284, 1316, 1313, 1209, 1312, 1311, 1315, 1330, 1330,
1677      1330, 2220, 2220, 2220, 1212, 1212, 1212, 1298, 1213, 1296,
1678      1295, 1214, 1215, 1215, 1215, 1331, 1293, 1292, 2220, 1333,
1679      1333, 1333, 1291, 1334, 1288, 1287, 1335, 1282, 1281, 1216,
1680      1336, 1336, 1336, 2220, 2220, 2220, 2220, 2220, 2220, 1340,
1681      1340, 1340,  893,  893,  893, 1280, 1279, 1337, 1278, 1277,
1682      2220, 1276, 1275, 2220, 1274, 1272, 1341, 1222, 1222, 1222,
1683
1684       895, 1271, 1332, 1343, 1343, 1343, 1270, 1344, 1142, 1263,
1685      1345, 1409, 1409, 1409, 1223, 1346, 1346, 1346, 2220, 2220,
1686      2220, 1226, 1226, 1226, 1353, 1353, 1353, 1339, 1338, 1349,
1687      1349, 1349, 1347, 1350, 1258, 2220, 1351, 1256, 1227, 2220,
1688      2220, 2220, 1354, 1255, 1251, 1342,  915,  915,  915, 1235,
1689      1235, 1235, 1249, 1360, 1360, 1360, 2220, 1361, 1248, 1246,
1690      1362, 1364, 1364, 1364,  917, 1244, 1236,  935,  935,  935,
1691      1369, 1369, 1369, 1243, 1242, 1348, 1371, 1371, 1371, 1365,
1692      2220, 2220, 2220, 1239, 1234,  937, 1233, 1370, 1232, 1230,
1693      1352, 1198, 1197, 1372, 1196, 1356, 1195, 2220, 1194,  947,
1694
1695       947,  947,  955,  955,  955, 1377, 1377, 1377, 1379, 1379,
1696      1379,  965,  965,  965, 1191, 1190, 1367,  949, 1189, 1182,
1697       957, 1179, 1378, 1175, 1173, 1380, 1252, 1252, 1252,  967,
1698      1253, 1172, 1168, 1254,  973,  973,  973, 1259, 1259, 1259,
1699      1167, 1373, 1165, 1387, 1387, 1387, 1376, 1388, 1164, 1163,
1700      1389, 1162,  975, 1161, 1260, 1159,  979,  979,  979, 1158,
1701       986,  986,  986, 1374, 1264, 1264, 1264, 1153, 1393, 1393,
1702      1393, 1152, 1394, 1381,  981, 1395, 1151, 1150,  988, 1149,
1703      1147, 1265, 1146, 1385, 1396, 1396, 1396, 1402, 1402, 1402,
1704       793,  793,  793, 1413, 1413, 1413, 1283, 1283, 1283, 1414,
1705
1706      1414, 1414, 1397, 1145, 1403, 1285, 1285, 1285,  795, 1416,
1707      1416, 1416, 1390, 1391, 1289, 1289, 1289, 1422, 1422, 1422,
1708       837,  837,  837, 1427, 1427, 1427, 1307, 1307, 1307, 1144,
1709      1308, 1137, 1136, 1309, 1133, 1423, 1132, 1130,  839, 1129,
1710      1428,  845,  845,  845, 1440, 1440, 1440, 1126, 1404, 1314,
1711      1314, 1314, 1444, 1444, 1444, 1121, 1318, 1318, 1318,  847,
1712      1319, 1441, 1120, 1320, 1321, 1321, 1321, 1115, 1322, 1113,
1713      1109, 1323, 1325, 1325, 1325, 1108, 1426, 1327, 1327, 1327,
1714      1104, 1328, 1102, 1094, 1329, 1439, 1330, 1330, 1330, 1093,
1715      1326, 1450, 1450, 1450, 1092, 1451, 1091, 1089, 1452, 1087,
1716
1717      1333, 1333, 1333, 1331, 1334, 1086, 1082, 1335, 1336, 1336,
1718      1336, 1454, 1454, 1454, 1081, 1455, 1080, 1078, 1456, 1457,
1719      1457, 1457, 1340, 1340, 1340, 1337, 1460, 1460, 1460, 1077,
1720      1461, 1076, 1075, 1462, 1074, 1068, 1458, 1067, 1066, 1341,
1721       893,  893,  893, 1343, 1343, 1343, 1064, 1344, 1063, 1060,
1722      1345, 1346, 1346, 1346, 1059, 1464, 1464, 1464,  895, 1465,
1723      1058, 1057, 1466, 1349, 1349, 1349, 1056, 1350, 1347, 1055,
1724      1351, 1054, 1353, 1353, 1353,  915,  915,  915, 1472, 1472,
1725      1472, 1360, 1360, 1360, 1053, 1361, 1052, 1049, 1362, 1463,
1726      1354, 1047, 1044,  917, 1041, 1473, 1364, 1364, 1364, 1480,
1727
1728      1480, 1480, 1369, 1369, 1369, 1483, 1483, 1483, 1032, 1484,
1729      1030, 1025, 1485, 1024, 1365, 1023, 1022, 1481, 1021, 1370,
1730      1020, 1019, 1474, 1371, 1371, 1371, 1486, 1486, 1486, 1016,
1731      1487, 1015, 1014, 1488, 1013, 1012, 1470,  947,  947,  947,
1732      1372,  955,  955,  955, 1377, 1377, 1377, 1493, 1493, 1493,
1733      1011, 1494, 1010, 1009, 1495,  949, 1379, 1379, 1379,  957,
1734      1008, 1378, 1496, 1496, 1496, 1006, 1497, 1005, 1004, 1498,
1735      1507, 1507, 1507, 1380,  965,  965,  965,  973,  973,  973,
1736      1387, 1387, 1387, 1003, 1388, 1002, 1001, 1389, 1492,  979,
1737       979,  979,  967, 1000,  780,  975,  986,  986,  986,  994,
1738
1739      1490, 1393, 1393, 1393,  990, 1394,  978,  981, 1395, 1396,
1740      1396, 1396,  977,  972,  988, 1402, 1402, 1402, 1512, 1512,
1741      1512,  971, 1513,  970,  969, 1514,  951, 1397,  793,  793,
1742       793,  939, 1403, 1516, 1516, 1516, 1499,  925, 1505, 1503,
1743      1519, 1519, 1519, 1409, 1409, 1409,  795, 1506, 1522, 1522,
1744      1522, 1413, 1413, 1413, 1414, 1414, 1414, 1416, 1416, 1416,
1745      1524, 1524, 1524, 1526, 1526, 1526, 1422, 1422, 1422, 1531,
1746      1531, 1531,  924, 1427, 1427, 1427, 1533, 1533, 1533,  923,
1747      1534,  919,  911, 1535, 1423,  906,  905, 1532,  899, 1515,
1748      1428,  845,  845,  845, 1440, 1440, 1440, 1547, 1547, 1547,
1749
1750       892, 1548,  891,  890, 1549, 1550, 1550, 1550,  889,  847,
1751       888, 1441, 1444, 1444, 1444, 1450, 1450, 1450,  882, 1451,
1752       871,  870, 1452, 1454, 1454, 1454,  866, 1455,  865,  864,
1753      1456, 1457, 1457, 1457,  863, 1560, 1560, 1560, 1546, 1561,
1754       862,  861, 1562, 1460, 1460, 1460,  860, 1461, 1458,  859,
1755      1462,  893,  893,  893, 1464, 1464, 1464,  858, 1465,  852,
1756       844, 1466, 1568, 1568, 1568, 1472, 1472, 1472,  843,  895,
1757      1571, 1571, 1571,  842, 1572,  841,  836, 1573,  833,  827,
1758      1569,  822, 1473, 1480, 1480, 1480, 1483, 1483, 1483,  821,
1759      1484,  817,  816, 1485,  815, 1486, 1486, 1486,  814, 1487,
1760
1761       813, 1481, 1488,  947,  947,  947,  955,  955,  955, 1493,
1762      1493, 1493, 1564, 1494,  811,  810, 1495,  809, 1496, 1496,
1763      1496,  949, 1497,  808,  957, 1498,  965,  965,  965, 1588,
1764      1588, 1588,  973,  973,  973,  979,  979,  979, 1595, 1595,
1765      1595, 1507, 1507, 1507,  967,  807, 1589, 1597, 1597, 1597,
1766       975,  806, 1584,  981,  805,  804, 1596, 1600, 1600, 1600,
1767      1587,  793,  793,  793,  803,  780, 1512, 1512, 1512, 1586,
1768      1513,  802,  801, 1514, 1516, 1516, 1516,  800,  799,  795,
1769      1602, 1602, 1602, 1519, 1519, 1519, 1604, 1604, 1604, 1605,
1770      1605, 1605, 1594,  792, 1592, 1522, 1522, 1522, 1524, 1524,
1771
1772      1524, 1526, 1526, 1526, 1609, 1609, 1609, 1531, 1531, 1531,
1773       791, 1533, 1533, 1533,  790, 1534,  789, 1601, 1535,  788,
1774       787, 1610,  845,  845,  845, 1532, 1547, 1547, 1547,  786,
1775      1548,  783,  781, 1549, 1550, 1550, 1550, 1560, 1560, 1560,
1776       847, 1561,  780,  778, 1562, 1633, 1633, 1633, 1568, 1568,
1777      1568, 1638, 1638, 1638, 1571, 1571, 1571,  776, 1572,  772,
1778       768, 1573,  766, 1634,  765,  764, 1569,  762, 1639, 1649,
1779      1649, 1649, 1651, 1651, 1651, 1653, 1653, 1653,  761,  760,
1780      1622,  955,  955,  955,  965,  965,  965, 1588, 1588, 1588,
1781      1652,  759, 1654,  758,  756, 1640, 1657, 1657, 1657,  957,
1782
1783      1658,  755,  967, 1659, 1589, 1660, 1660, 1660, 1663, 1663,
1784      1663, 1665, 1665, 1665,  979,  979,  979, 1595, 1595, 1595,
1785       754,  753, 1661, 1597, 1597, 1597, 1664, 1600, 1600, 1600,
1786       749,  748,  981,  746,  745, 1596,  744,  743, 1655,  742,
1787       741,  780, 1656, 1670, 1670, 1670, 1602, 1602, 1602, 1604,
1788      1604, 1604, 1605, 1605, 1605, 1609, 1609, 1609, 1676, 1676,
1789      1676, 1671, 1677,  739,  738, 1678,  845,  845,  845, 1696,
1790      1696, 1696, 1610, 1633, 1633, 1633,  737, 1666, 1638, 1638,
1791      1638,  736, 1667,  734,  847,  733, 1697, 1711, 1711, 1711,
1792       732, 1634, 1703, 1703, 1703, 1639, 1704,  729,  728, 1705,
1793
1794      1649, 1649, 1649,  724, 1712,  723, 1651, 1651, 1651, 1653,
1795      1653, 1653, 1715, 1715, 1715,  721, 1716,  720,  719, 1717,
1796      1718, 1718, 1718, 1690, 1652,  716, 1654,  965,  965,  965,
1797      1657, 1657, 1657,  715, 1658,  714,  712, 1659, 1719, 1660,
1798      1660, 1660, 1721, 1721, 1721,  967, 1722,  711,  710, 1723,
1799      1724, 1724, 1724, 1663, 1663, 1663, 1661, 1665, 1665, 1665,
1800      1726, 1726, 1726, 1670, 1670, 1670,  709, 1725, 1734, 1734,
1801      1734, 1664, 1676, 1676, 1676,  708, 1677,  707, 1727, 1678,
1802       704, 1671,  845,  845,  845, 1735, 1754, 1754, 1754,  701,
1803       700, 1720, 1696, 1696, 1696, 1756, 1756, 1756,  698, 1757,
1804
1805       847,  697, 1758, 1755, 1761, 1761, 1761,  692,  689, 1697,
1806      1764, 1764, 1764, 1703, 1703, 1703,  687, 1704,  686,  685,
1807      1705, 1762,  684, 1711, 1711, 1711,  683, 1765, 1769, 1769,
1808      1769,  681, 1770,  678,  676, 1771, 1772, 1772, 1772, 1751,
1809      1712, 1774, 1774, 1774, 1715, 1715, 1715,  675, 1716,  674,
1810       672, 1717,  670, 1773, 1718, 1718, 1718,  669, 1775,  965,
1811       965,  965, 1721, 1721, 1721,  668, 1722,  667,  664, 1723,
1812       663,  662, 1719, 1724, 1724, 1724,  659,  967, 1783, 1783,
1813      1783,  656, 1784,  654,  651, 1785, 1726, 1726, 1726,  649,
1814      1725, 1789, 1789, 1789, 1734, 1734, 1734,  643, 1792, 1792,
1815
1816      1792,  642, 1793,  639, 1727, 1794,  845,  845,  845,  638,
1817       637, 1735, 1809, 1809, 1809, 1810, 1810, 1810, 1754, 1754,
1818      1754,  636, 1782,  634,  847,  633, 1813, 1813, 1813,  632,
1819      1814,  631, 1811, 1815,  630, 1755, 1756, 1756, 1756,  629,
1820      1757,  624,  621, 1758, 1761, 1761, 1761, 1818, 1818, 1818,
1821       623, 1819,  618,  617, 1820, 1808, 1764, 1764, 1764, 1812,
1822       615, 1762, 1822, 1822, 1822,  484, 1823,  612,  610, 1824,
1823      1826, 1826, 1826, 1765, 1769, 1769, 1769,  608, 1770,  606,
1824      2220, 1771, 1772, 1772, 1772,  603,  602, 1827, 1829, 1829,
1825      1829,  601, 1830,  600,  598, 1831, 1774, 1774, 1774, 1773,
1826
1827      1832, 1832, 1832,  597, 1833,  596,  595, 1834,  965,  965,
1828       965,  594,  592, 1775, 1783, 1783, 1783,  590, 1784,  589,
1829       587, 1785, 1844, 1844, 1844,  586,  967, 1789, 1789, 1789,
1830      1792, 1792, 1792,  583, 1793,  582,  580, 1794,  482, 1845,
1831      1142, 1852, 1852, 1852,  845,  845,  845, 1809, 1809, 1809,
1832      1810, 1810, 1810, 2220, 1826, 1826, 1826, 1841, 1853, 1863,
1833      1863, 1863,  847, 1864,  575,  573, 1865, 1811, 1813, 1813,
1834      1813, 1827, 1814,  569,  568, 1815, 1818, 1818, 1818,  567,
1835      1819,  565,  563, 1820,  562, 1822, 1822, 1822,  560, 1823,
1836       558, 1862, 1824, 1871, 1871, 1871,  557, 1872,  556,  555,
1837
1838      1873, 1829, 1829, 1829,  554, 1830,  553,  551, 1831, 1832,
1839      1832, 1832,  547, 1833,  544,  543, 1834, 1889, 1889, 1889,
1840      1892, 1892, 1892, 1844, 1844, 1844, 1894, 1894, 1894,  542,
1841      1895,  538,  536, 1896,  535, 1890,  534, 1893, 1142,  533,
1842      1845, 1142,  532,  530, 1142, 1897, 1897, 1897, 1898, 1898,
1843      1898, 1852, 1852, 1852, 1903, 1903, 1903, 2220, 1904,  487,
1844       525, 1905,  845,  845,  845, 1863, 1863, 1863, 1853, 1864,
1845       520,  519, 1865, 1915, 1915, 1915, 1917, 1917, 1917,  517,
1846       847, 1919, 1919, 1919, 1871, 1871, 1871,  515, 1872,  514,
1847      1916, 1873,  513, 1918, 1921, 1921, 1921,  511, 1920, 1889,
1848
1849      1889, 1889, 1892, 1892, 1892, 1936, 1936, 1936,  508, 1937,
1850       504, 1922, 1938,  503, 1894, 1894, 1894, 1890, 1895, 1893,
1851      1142, 1896,  501, 1142,  500, 1912, 1897, 1897, 1897, 1898,
1852      1898, 1898, 1142, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
1853      1140, 1140,  497,  496, 1140, 1951, 1951, 1951,  495, 1140,
1854      1140, 1140, 1142, 1140, 1903, 1903, 1903,  493, 1904,  492,
1855      2220, 1905,  486, 1952,  475,  473,  471,  465,  464,  465,
1856      1915, 1915, 1915, 1917, 1917, 1917, 1140, 1140, 1140, 1140,
1857      1140, 1140, 1140, 1140, 1140, 1140, 1140, 1916,  464, 1140,
1858      1918,  463,  462, 2220, 1140, 1140, 1140, 1142, 1140, 1955,
1859
1860      1955, 1955, 2220, 1956, 2220, 2220, 1957, 1958, 1958, 1958,
1861      2220, 1959, 2220, 2220, 1960, 1919, 1919, 1919, 1921, 1921,
1862      1921, 1140, 1140, 1961, 1961, 1961, 2220, 1962, 2220, 2220,
1863      1963, 2220, 1920, 2220, 2220, 1922, 1964, 1964, 1964, 2220,
1864      1965, 2220, 2220, 1966, 1936, 1936, 1936, 2220, 1937, 2220,
1865      2220, 1938, 2220, 2220, 1951, 1951, 1951, 2014, 2014, 2014,
1866      2220, 2220, 1142, 1140, 1140, 1140, 1140, 1140, 1985, 1140,
1867      1140, 1140, 1952, 2220, 1140, 1142, 1143, 2220, 2220, 1140,
1868      1140, 1140, 1142, 1140, 1955, 1955, 1955, 2220, 1956, 2220,
1869      2220, 1957, 1958, 1958, 1958, 2220, 1959, 2220, 2220, 1960,
1870
1871      2017, 2017, 2017, 2019, 2019, 2019, 1140, 1140, 1140, 1140,
1872      1140, 1140, 1140, 1140, 1140, 1140, 1985, 2018, 2220, 1140,
1873      2020, 2220, 2220, 2220, 1140, 1140, 1140, 1142, 1140, 1961,
1874      1961, 1961, 2220, 1962, 2220, 2220, 1963, 1964, 1964, 1964,
1875      2220, 1965, 2220, 2220, 1966, 2037, 2037, 2037, 2014, 2014,
1876      2014, 1140, 1140, 2017, 2017, 2017, 2220, 2041, 2041, 2041,
1877      2220, 2042, 2220,  780, 2043, 2220, 1142, 2019, 2019, 2019,
1878      2018, 2044, 2044, 2044, 2220, 2045, 2220, 2220, 2046, 2220,
1879      2037, 2037, 2037, 2220, 2020, 2041, 2041, 2041, 2220, 2042,
1880      2220, 2220, 2043, 2174, 2174, 2174, 2220, 1268,  780, 2044,
1881
1882      2044, 2044, 2220, 2045, 2220, 2220, 2046, 2218, 2218, 2218,
1883      2220,  780, 2174, 2174, 2174, 2063, 2185, 2220, 2220, 2186,
1884      2218, 2218, 2218, 2220, 2220, 2219, 2220, 2220, 2220, 2220,
1885       780, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2219,  186,
1886       186,  186,  186,  186,  186,  186,  186,  186,  187,  187,
1887       187,  187,  187,  187,  187,  187,  187,  192,  192,  192,
1888       192,  192,  192,  192,  192,  192,  195,  195,  195,  195,
1889       195,  195,  195,  195,  195,  198,  198,  198,  198,  198,
1890       198,  198,  198,  198,  201,  201,  201,  201,  201,  201,
1891       201,  201,  201,  208,  208,  208,  208,  208,  208,  208,
1892
1893       208,  208,  216,  216,  216,  216,  216,  216,  216,  216,
1894       216,  220,  220,  220,  220,  220,  220,  220,  220,  220,
1895       231,  231,  231,  231,  231,  231,  231,  231,  231,  242,
1896       242,  242,  242,  242,  242,  242,  242,  242,  249,  249,
1897       249,  249,  249,  249,  249,  249,  249,  257,  257,  257,
1898       257,  257,  257,  257,  257,  257,  263,  263,  263,  263,
1899       263,  263,  263,  263,  263,  269,  269,  269,  269,  269,
1900       269,  269,  269,  269,  274,  274,  274,  274,  274,  274,
1901       274,  274,  274,  291,  291,  291,  291,  291,  291,  291,
1902       291,  291,  299,  299,  299,  299,  299,  299,  299,  299,
1903
1904       299,  316,  316,  316,  316,  316,  316,  316,  316,  316,
1905       322,  322,  322,  322,  322,  322,  322,  322,  322,  331,
1906       331,  331,  331,  331,  331,  331,  331,  331,  337,  337,
1907       337,  337,  337,  337,  337,  337,  337,  342,  342,  342,
1908       342,  342,  342,  342,  342,  342,  348,  348,  348,  348,
1909       348,  348,  348,  348,  348,  355,  355,  355,  355,  355,
1910       355,  355,  355,  355,  362,  362,  362,  362,  362,  362,
1911       362,  362,  362,  367,  367,  367,  367,  367,  367,  367,
1912       367,  367,  375,  375,  375,  375,  375,  375,  375,  375,
1913       375,  381,  381,  381,  381,  381,  381,  381,  381,  381,
1914
1915       388,  388,  388,  388,  388,  388,  388,  388,  388,  393,
1916       393,  393,  393,  393,  393,  393,  393,  393,  399,  399,
1917       399,  399,  399,  399,  399,  399,  399,  405,  405,  405,
1918       405,  405,  405,  405,  405,  405,  412,  412,  412,  412,
1919       412,  412,  412,  412,  412,  419,  419,  419,  419,  419,
1920       419,  419,  419,  419,  427,  427,  427,  427,  427,  427,
1921       427,  427,  427,  431,  431,  431,  431,  431,  431,  431,
1922       431,  431,  437,  437,  437,  437,  437,  437,  437,  437,
1923       437,  441,  441,  441,  441,  441,  441,  441,  441,  441,
1924       449,  449,  449,  449,  449,  449,  449,  449,  449,  454,
1925
1926       454,  454,  454,  454,  454,  454,  454,  454,  474,  474,
1927       474, 2220, 2220, 2220,  474,  494,  494,  494, 2220, 2220,
1928      2220,  494,  502,  502,  502, 2220, 2220, 2220,  502,  512,
1929       512,  512, 2220, 2220, 2220,  512,  518,  518,  518, 2220,
1930      2220, 2220,  518,  531,  531,  531, 2220, 2220, 2220,  531,
1931       539,  539,  539, 2220, 2220, 2220,  539,  552,  552,  552,
1932      2220, 2220, 2220,  552,  561,  561,  561, 2220, 2220, 2220,
1933       561,  566,  566,  566, 2220, 2220, 2220,  566,  574,  574,
1934       574, 2220, 2220, 2220,  574,  581,  581,  581, 2220, 2220,
1935      2220,  581,  588,  588,  588, 2220, 2220, 2220,  588,  593,
1936
1937       593,  593, 2220, 2220, 2220,  593,  599,  599,  599, 2220,
1938      2220, 2220,  599,  607,  607,  607, 2220, 2220, 2220,  607,
1939       611,  611,  611, 2220, 2220, 2220,  611,  616,  616,  616,
1940      2220, 2220, 2220,  616,  620,  620,  620,  620,  620,  620,
1941       620, 2220,  620,  474,  474,  474, 2220, 2220, 2220,  474,
1942       635, 2220, 2220, 2220,  635,  494,  494,  494, 2220, 2220,
1943      2220,  494,  661, 2220, 2220, 2220,  661,  502,  502,  502,
1944      2220, 2220, 2220,  502,  671, 2220, 2220, 2220,  671,  512,
1945       512,  512, 2220, 2220, 2220,  512,  677, 2220, 2220, 2220,
1946       677,  518,  518,  518, 2220, 2220, 2220,  518,  682, 2220,
1947
1948      2220, 2220,  682,  699, 2220, 2220, 2220,  699,  539,  539,
1949       539, 2220, 2220, 2220,  539,  713, 2220, 2220, 2220,  713,
1950       552,  552,  552, 2220, 2220, 2220,  552,  722, 2220, 2220,
1951      2220,  722,  561,  561,  561, 2220, 2220, 2220,  561,  727,
1952      2220, 2220, 2220,  727,  566,  566,  566, 2220, 2220, 2220,
1953       566,  735, 2220, 2220, 2220,  735,  574,  574,  574, 2220,
1954      2220, 2220,  574,  740, 2220, 2220, 2220,  740,  581,  581,
1955       581, 2220, 2220, 2220,  581,  747, 2220, 2220, 2220,  747,
1956       588,  588,  588, 2220, 2220, 2220,  588,  752, 2220, 2220,
1957      2220,  752,  593,  593,  593, 2220, 2220, 2220,  593,  757,
1958
1959      2220, 2220, 2220,  757,  599,  599,  599, 2220, 2220, 2220,
1960       599,  763, 2220, 2220, 2220,  763,  607,  607,  607, 2220,
1961      2220, 2220,  607,  767, 2220, 2220, 2220,  767,  611,  611,
1962       611, 2220, 2220, 2220,  611,  771, 2220, 2220, 2220,  771,
1963       616,  616,  616, 2220, 2220, 2220,  616,  777, 2220, 2220,
1964      2220,  777,  779,  779,  779,  779,  779,  779,  779,  779,
1965       779,  785, 2220, 2220, 2220, 2220,  785,  474,  474,  474,
1966      2220, 2220, 2220,  474,  794,  794,  794,  794, 2220, 2220,
1967       794,  794,  494,  494,  494, 2220, 2220, 2220,  494,  824,
1968       824,  824,  824, 2220, 2220,  824,  824,  502,  502,  502,
1969
1970      2220, 2220, 2220,  502,  838,  838,  838,  838, 2220, 2220,
1971       838,  838,  512,  512,  512, 2220, 2220, 2220,  512,  846,
1972       846,  846,  846, 2220, 2220,  846,  846,  518,  518,  518,
1973      2220, 2220, 2220,  518,  854,  854,  854,  854, 2220, 2220,
1974       854,  854,  531,  531,  531, 2220, 2220, 2220,  531,  873,
1975       873,  873,  873, 2220, 2220,  873,  873,  539,  539,  539,
1976      2220, 2220, 2220,  539,  894,  894,  894,  894, 2220, 2220,
1977       894,  894,  552,  552,  552, 2220, 2220, 2220,  552,  908,
1978       908,  908,  908, 2220, 2220,  908,  908,  561,  561,  561,
1979      2220, 2220, 2220,  561,  916,  916,  916,  916, 2220, 2220,
1980
1981       916,  916,  566,  566,  566, 2220, 2220, 2220,  566,  927,
1982       927,  927,  927, 2220, 2220,  927,  927,  574,  574,  574,
1983       574, 2220,  574, 2220,  574,  936,  936,  936,  936, 2220,
1984      2220,  936,  936,  581,  581,  581,  581, 2220,  581, 2220,
1985       581,  948,  948,  948,  948, 2220, 2220,  948,  948,  588,
1986       588,  588, 2220, 2220, 2220,  588,  956,  956,  956,  956,
1987      2220, 2220,  956,  956,  593,  593,  593,  593, 2220,  593,
1988      2220,  593,  966,  966,  966,  966, 2220, 2220,  966,  966,
1989       599,  599,  599, 2220, 2220, 2220,  599,  974,  974,  974,
1990       974, 2220, 2220,  974,  974,  607,  607,  607, 2220, 2220,
1991
1992      2220,  607,  980,  980,  980,  980, 2220, 2220,  980,  980,
1993       987,  987,  987,  987, 2220, 2220,  987,  987,  616,  616,
1994       616, 2220, 2220, 2220,  616,  996,  996,  996,  996, 2220,
1995      2220,  996,  996,  779,  779,  779,  779,  779,  779,  779,
1996       779,  779,  785, 2220,  785, 2220, 2220,  785,  474,  474,
1997       474, 2220, 2220, 2220,  474,  794,  794,  794,  794, 2220,
1998      2220,  794,  794,  494,  494,  494,  494, 2220,  494, 2220,
1999       494,  824,  824,  824,  824, 2220, 2220,  824,  824,  502,
2000       502,  502, 2220, 2220, 2220,  502,  838,  838,  838,  838,
2001      2220, 2220,  838,  838,  512,  512,  512, 2220, 2220, 2220,
2002
2003       512,  846,  846,  846,  846, 2220, 2220,  846,  846,  518,
2004       518,  518, 2220, 2220, 2220,  518,  854,  854,  854,  854,
2005      2220, 2220,  854,  854,  531,  531,  531, 2220, 2220, 2220,
2006       531,  873,  873,  873,  873, 2220, 2220,  873,  873,  539,
2007       539,  539, 2220, 2220, 2220,  539,  894,  894,  894,  894,
2008      2220, 2220,  894,  894,  552,  552,  552, 2220, 2220, 2220,
2009       552,  908,  908,  908,  908, 2220, 2220,  908,  908,  561,
2010       561,  561, 2220, 2220, 2220,  561,  916,  916,  916,  916,
2011      2220, 2220,  916,  916,  566,  566,  566, 2220, 2220, 2220,
2012       566,  927,  927,  927,  927, 2220, 2220,  927,  927,  574,
2013
2014       574,  574, 2220, 2220, 2220,  574,  936,  936,  936,  936,
2015      2220, 2220,  936,  936,  581,  581,  581, 2220, 2220, 2220,
2016       581,  948,  948,  948,  948, 2220, 2220,  948,  948,  588,
2017       588,  588, 2220, 2220, 2220,  588,  956,  956,  956,  956,
2018      2220, 2220,  956,  956,  593,  593,  593, 2220, 2220, 2220,
2019       593,  966,  966,  966,  966, 2220, 2220,  966,  966,  599,
2020       599,  599, 2220, 2220, 2220,  599,  974,  974,  974,  974,
2021      2220, 2220,  974,  974,  607,  607,  607, 2220, 2220, 2220,
2022       607,  980,  980,  980,  980, 2220, 2220,  980,  980,  987,
2023       987,  987,  987, 2220, 2220,  987,  987,  616,  616,  616,
2024
2025      2220, 2220, 2220,  616,  996,  996,  996,  996, 2220, 2220,
2026       996,  996,  779,  779,  779,  779,  779,  779,  779,  779,
2027       779, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
2028       474,  474,  474, 2220, 2220, 2220,  474,  794,  794,  794,
2029       794, 2220, 2220,  794,  794,  494,  494,  494, 2220, 2220,
2030      2220,  494,  824,  824,  824,  824, 2220, 2220,  824,  824,
2031       502,  502,  502, 2220, 2220, 2220,  502,  838,  838,  838,
2032       838, 2220, 2220,  838,  838,  512,  512,  512, 2220, 2220,
2033      2220,  512,  846,  846,  846,  846, 2220, 2220,  846,  846,
2034       518,  518,  518, 2220, 2220, 2220,  518,  531,  531,  531,
2035
2036      2220, 2220, 2220,  531,  873,  873,  873,  873, 2220, 2220,
2037       873,  873,  539,  539,  539,  539, 2220,  539, 2220,  539,
2038       894,  894,  894,  894, 2220, 2220,  894,  894,  552,  552,
2039       552,  552, 2220,  552, 2220,  552,  908,  908,  908,  908,
2040      2220, 2220,  908,  908,  561,  561,  561, 2220, 2220, 2220,
2041       561,  916,  916,  916,  916, 2220, 2220,  916,  916,  566,
2042       566,  566, 2220, 2220, 2220,  566,  927,  927,  927,  927,
2043      2220, 2220,  927,  927,  574,  574,  574, 2220, 2220, 2220,
2044       574,  936,  936,  936,  936, 2220, 2220,  936,  936,  581,
2045       581,  581, 2220, 2220, 2220,  581,  948,  948,  948,  948,
2046
2047      2220, 2220,  948,  948,  588,  588,  588, 2220, 2220, 2220,
2048       588,  956,  956,  956,  956, 2220, 2220,  956,  956,  593,
2049       593,  593, 2220, 2220, 2220,  593,  966,  966,  966,  966,
2050      2220, 2220,  966,  966,  599,  599,  599, 2220, 2220, 2220,
2051       599,  974,  974,  974,  974, 2220, 2220,  974,  974,  607,
2052       607,  607,  607, 2220,  607, 2220,  607,  980,  980,  980,
2053       980, 2220, 2220,  980,  980,  987,  987,  987,  987, 2220,
2054      2220,  987,  987,  616,  616,  616,  616, 2220,  616, 2220,
2055       616,  996,  996,  996,  996, 2220, 2220,  996,  996,  779,
2056       779,  779,  779,  779,  779,  779,  779,  779, 1140, 1140,
2057
2058      1140, 1140, 1140, 1140, 1140, 1140, 1140,  474,  474,  474,
2059      2220, 2220, 2220,  474,  794,  794,  794,  794, 2220, 2220,
2060       794,  794,  494,  494,  494, 2220, 2220, 2220,  494,  824,
2061       824,  824,  824, 2220, 2220,  824,  824,  502,  502,  502,
2062      2220, 2220, 2220,  502,  838,  838,  838,  838, 2220, 2220,
2063       838,  838,  512,  512,  512, 2220, 2220, 2220,  512,  846,
2064       846,  846,  846, 2220, 2220,  846,  846,  518,  518,  518,
2065      2220, 2220, 2220,  518,  531,  531,  531, 2220, 2220, 2220,
2066       531,  873,  873,  873,  873, 2220, 2220,  873,  873,  539,
2067       539,  539,  539, 2220,  539, 2220,  539,  894,  894,  894,
2068
2069       894, 2220, 2220,  894,  894,  552,  552,  552,  552, 2220,
2070       552, 2220,  552,  908,  908,  908,  908, 2220, 2220,  908,
2071       908,  561,  561,  561, 2220, 2220, 2220,  561,  916,  916,
2072       916,  916, 2220, 2220,  916,  916,  566,  566,  566, 2220,
2073      2220, 2220,  566,  927,  927,  927,  927, 2220, 2220,  927,
2074       927,  574,  574,  574, 2220, 2220, 2220,  574,  936,  936,
2075       936,  936, 2220, 2220,  936,  936,  581,  581,  581,  581,
2076      2220,  581, 2220,  581,  948,  948,  948,  948, 2220, 2220,
2077       948,  948,  588,  588,  588, 2220, 2220, 2220,  588,  956,
2078       956,  956,  956, 2220, 2220,  956,  956,  593,  593,  593,
2079
2080       593, 2220,  593, 2220,  593,  966,  966,  966,  966, 2220,
2081      2220,  966,  966,  599,  599,  599, 2220, 2220, 2220,  599,
2082       974,  974,  974,  974, 2220, 2220,  974,  974,  980,  980,
2083       980,  980, 2220, 2220,  980,  980,  987,  987,  987,  987,
2084      2220, 2220,  987,  987,  996,  996,  996,  996, 2220, 2220,
2085       996,  996,  779,  779,  779,  779,  779,  779,  779,  779,
2086       779, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
2087       474,  474,  474,  474, 2220,  474, 2220,  474,  794,  794,
2088       794,  794, 2220, 2220,  794,  794,  494,  494,  494, 2220,
2089      2220, 2220,  494,  824,  824,  824,  824, 2220, 2220,  824,
2090
2091       824,  502,  502,  502, 2220, 2220, 2220,  502,  838,  838,
2092       838,  838, 2220, 2220,  838,  838,  512,  512,  512,  512,
2093      2220,  512, 2220,  512,  846,  846,  846,  846, 2220, 2220,
2094       846,  846,  518,  518,  518,  518, 2220,  518, 2220,  518,
2095       531,  531,  531, 2220, 2220, 2220,  531,  539,  539,  539,
2096      2220, 2220, 2220,  539,  894,  894,  894,  894, 2220, 2220,
2097       894,  894,  552,  552,  552, 2220, 2220, 2220,  552,  561,
2098       561,  561, 2220, 2220, 2220,  561,  916,  916,  916,  916,
2099      2220, 2220,  916,  916,  566,  566,  566, 2220, 2220, 2220,
2100       566,  574,  574,  574, 2220, 2220, 2220,  574,  936,  936,
2101
2102       936,  936, 2220, 2220,  936,  936,  581,  581,  581, 2220,
2103      2220, 2220,  581,  948,  948,  948,  948, 2220, 2220,  948,
2104       948,  588,  588,  588, 2220, 2220, 2220,  588,  956,  956,
2105       956,  956, 2220, 2220,  956,  956,  966,  966,  966,  966,
2106      2220, 2220,  966,  966,  599,  599,  599, 2220, 2220, 2220,
2107       599,  974,  974,  974,  974, 2220, 2220,  974,  974,  980,
2108       980,  980,  980, 2220, 2220,  980,  980,  987,  987,  987,
2109       987, 2220, 2220,  987,  987,  779,  779,  779,  779,  779,
2110       779,  779,  779,  779, 1140, 1140, 1140, 1140, 1140, 1140,
2111      1140, 1140, 1140, 1939, 1939, 1939, 1939, 1939, 1939, 1939,
2112
2113      1939, 1939, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940,
2114      1940, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980,
2115      1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 1983, 2011,
2116      2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2013, 2013,
2117      2013, 2013, 2013, 2013, 2013, 2013, 2013,  185, 2220, 2220,
2118      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2119      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2120      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2121      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2122      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2123
2124      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2125      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220
2126     } ;
2127
2128 static yyconst flex_int16_t yy_chk[7819] =
2129     {   0,
2130         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
2131         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
2132         4,   10,    0,    5,  251,    9,    6,  458,   10,    7,
2133         8,    8,    8,  190,   11,   13,   13,   12,   14,   14,
2134        13,   13,  458,   14,   14,  191,    8,   17,   17,  190,
2135        13,   15,   15,   14,   15,  194,   15,   16,   16, 1398,
2136        16,  191,   16,   18,   18, 1398,   15,   19,   19,   19,
2137       285,  194,   16,  251,   20,   20,   20,   23,   23,   23,
2138        24,   24,   24,   19,   25,   25,   25,  247,  212,   17,
2139        20,  247,  252,   23, 1502,  247,   24,  188,  188,  188,
2140
2141        25,  189,  189,  189,  212,   18,   21,   21,   21,   21,
2142        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
2143        21,  285,   21,   21,   21,   21,   21,   26,   26,   26,
2144        27,   27,   27,  279, 1504,   28,   28,   28,   29,   29,
2145        29,  252,  279,   26,  212,  287,   27,  287,  217,   21,
2146        21,   28,  253, 1518,   29,   30,   30,   30,  193,  193,
2147       193,  214,  214,  214,  217,  221,  221,  221,  229,  229,
2148       229,   30,   21,   22,   22,   22,   22,   22,   22,   22,
2149        22,   22,   22,   22,   22,   22,   22,   22,  301,   22,
2150        22,   22,   22,   22,   31,   31,   31,   32,   32,   32,
2151
2152       315,  253,   33,   33,   33,   34,   34,   34,  313,  281,
2153        31,  313,  315,   32,  309,  782,   22,   22,   33,  782,
2154       232,   34,   35,   35,   35,   36,   36,   36,   37,   37,
2155        37,   38,   38,   38,  309,  225,  232,  301,   35,   22,
2156       445,   36,  445,  498,   37,  281,  302,   38,   39,   39,
2157        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
2158        39,   39,   39,  282,   39,   39,   39,   39,   39,   45,
2159        45,   45,  225,  282,   46,   46,   46,  498,   47,   47,
2160        47, 1523,   41,   41,  225,   45,  423,   41,   42,   42,
2161        46,   39,   39,   42,   47,  302,  354,   41,  467,   39,
2162
2163       423,  467,   39,   42,  240,  240,  240,  354,   39,   40,
2164        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
2165        40,   40,   40,   40,   41,   40,   40,   40,   40,   40,
2166        42,   48,   48,   48,   49,   49,   49,  366,   50,   50,
2167        50,   51,   51,   51,  366,  243,  258,   48,  237,  265,
2168        49,  270,   40,   40,   50,  237,  265,   51, 1268,  357,
2169        40,  243,  258,   40,  237,  265,  204,  270,  358,   40,
2170        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
2171        43,   43,   43,   43,   43,  283,   43,   43,   43,   43,
2172        43,   52,   52,   52,   55,   55,   55, 1268,  380,   56,
2173
2174        56,   56,   59,   59,   59,  380,  204,   52,  357,  292,
2175        55,  283,  204,   43,   43,   56,  204,  358,   59,  484,
2176       480,  204,   43,  480,   43,  292,  283,   43,  250,  250,
2177       250,  384,  484,   43,   44,   44,   44,   44,   44,   44,
2178        44,   44,   44,   44,   44,   44,   44,   44,   44,  526,
2179        44,   44,   44,   44,   44,   60,   60,   60,   61,   61,
2180        61,  622,  526,   62,   62,   62,   63,   63,   63,  486,
2181      1525,   60,  486,  307,   61,  622,  384,   44,   44,   62,
2182       318,  408,   63,  255,  255,  255,   44,  318,   44,  307,
2183       715,   44,  264,  264,  264,  715,  318,   44,   53,   53,
2184
2185        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
2186        53,   53,   53,  224,   53,   53,   53,   53,   53,   64,
2187        64,   64,   65,   65,   65,  807,  408,   66,   66,   66,
2188        67,   67,   67,  488,  528,   64,  488,  807,   65,  323,
2189       224,   53,   53,   66,  338,  349,   67,  528,   53,  267,
2190       267,  267,  224,   53, 1527,  323,  224,  275,  275,  275,
2191       338,  349,   53,   54,   54,   54,   54,   54,   54,   54,
2192        54,   54,   54,   54,   54,   54,   54,   54,  529,   54,
2193        54,   54,   54,   54,   68,   68,   68,   69,   69,   69,
2194       816,  529,   70,   70,   70,   71,   71,   71,  533,  614,
2195
2196        68,  533,  816,   69,  999, 1530,   54,   54,   70,  363,
2197       333,   71,  614,   54,  289,  289,  289,  333,   54,  300,
2198       300,  300,  999, 1510,  284,  363,  333,   54,   57,   57,
2199        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
2200        57,   57,   57,  841,   57,   57,   57,   57,   57,   72,
2201        72,   72,   73,   73,   73,  841, 1301,   74,   74,   74,
2202        75,   75,   75, 1301,  376,   72,  284, 1510,   73,  284,
2203      1536,   57,   57,   74, 1267,  284,   75,  304,  304,  304,
2204       376,  369,   57,  317,  317,  317,  320,  320,  320, 1267,
2205        57,   58,   58,   58,   58,   58,   58,   58,   58,   58,
2206
2207        58,   58,   58,   58,   58,   58, 1139,   58,   58,   58,
2208        58,   58,   76,   76,   76,   77,   77,   77, 1400, 1537,
2209        78,   78,   78,   79,   79,   79,  369,  389,   76, 1139,
2210       369,   77, 1269, 1538,   58,   58,   78, 1539,  400,   79,
2211        80,   80,   80,  389,  413,   58,   81,   81,   81,   82,
2212        82,   82, 1399,   58,  400, 1540,   80,   83,   83,   83,
2213       413, 1400,   81, 1269,  428,   82,   84,   84,   84,   85,
2214        85,   85, 1541,   83,   86,   86,   86,   87,   87,   87,
2215       428, 1399,   84, 1447,  344,   85,   88,   88,   88, 1447,
2216        86,  344, 1542,   87,  332,  332,  332,  335,  335,  335,
2217
2218       344, 1509,   88,   89,   89,   89,   89,   89,   89,   89,
2219        89,   89,   89,   89,   89,   89,   89,   89, 1543,   89,
2220        89,   89,   89,   89,   91,   91,   91,   92,   92,   92,
2221      1544, 1545,   93,   93,   93, 1305,   94,   94,   94, 1551,
2222        91, 1509, 1305,   92,  483,  438,   89,   89,   93,   89,
2223       483,   89,   94,  343,  343,  343,  483,   89,  346,  346,
2224       346,  438, 1552,   89, 1553, 1554,   89,   90,   90,   90,
2225        90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
2226        90,   90, 1555,   90,   90,   90,   90,   90,   95,   95,
2227        95,   96,   96,   96, 1556, 1557,   97,   97,   97, 1448,
2228
2229        98,   98,   98, 1558,   95, 1448, 1559,   96,  489,  450,
2230        90,   90,   97,   90,  489,   90,   98,  356,  356,  356,
2231       489,   90,  360,  360,  360,  450, 1563,   90, 1565, 1566,
2232        90,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2233        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2234        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2235        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2236        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2237        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2238        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2239
2240        99,  101,  101,  101,  102,  102,  102,  368,  368,  368,
2241       373,  373,  373,  382,  382,  382, 1567,  101, 1574, 1575,
2242       102,  103,  103,  103,  103,  103,  103,  103,  103,  103,
2243       103,  103,  103,  103,  103,  103, 1576,  103,  103,  103,
2244       103,  103,  105,  105,  105,  106,  106,  106, 1577, 1578,
2245       109,  109,  109, 1476,  110,  110,  110, 1477,  105, 1476,
2246       395,  106, 1579, 1477,  103,  103,  109,  395,  103,  103,
2247       110,  386,  386,  386, 1580,  103,  395,  103,  394,  394,
2248       394,  103,  421, 1581,  103,  104,  104,  104,  104,  104,
2249       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
2250
2251      1583,  104,  104,  104,  104,  104,  113,  113,  113,  114,
2252       114,  114, 1591, 1603,  115,  115,  115,  421,  116,  116,
2253       116, 1606,  113, 1607, 1608,  114, 1611, 1612,  104,  104,
2254       115,  421,  104,  104,  116,  397,  397,  397, 1613,  104,
2255      1614,  104,  406,  406,  406,  104, 1598, 1615,  104,  107,
2256       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2257       107,  107,  107,  107, 1616,  107,  107,  107,  107,  107,
2258       117,  117,  117,  118,  118,  118, 1598, 1617,  119,  119,
2259       119, 1618,  120,  120,  120, 1619,  117, 1620, 1621,  118,
2260       491, 1623,  107,  107,  119, 1624,  491,  107,  120,  410,
2261
2262       410,  410,  491,  107,  108,  108,  108,  108,  108,  108,
2263       108,  108,  108,  108,  108,  108,  108,  108,  108, 1625,
2264       108,  108,  108,  108,  108,  123,  123,  123,  124,  124,
2265       124, 1626, 1628,  125,  125,  125, 1631,  126,  126,  126,
2266      1632,  123, 1635, 1636,  124,  492, 1637,  108,  108,  125,
2267      1640,  492,  108,  126,  420,  420,  420,  492,  108,  111,
2268       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
2269       111,  111,  111,  111, 1641,  111,  111,  111,  111,  111,
2270       127,  127,  127,  128,  128,  128, 1642, 1643,  129,  129,
2271       129,  130,  130,  130, 1645, 1648,  127, 1650,  433,  128,
2272
2273      1672, 1667,  111,  111,  129,  433,  111,  130,  425,  425,
2274       425, 1669, 1673,  111,  433,  111,  432,  432,  432,  435,
2275       435,  435,  111,  112,  112,  112,  112,  112,  112,  112,
2276       112,  112,  112,  112,  112,  112,  112,  112, 1667,  112,
2277       112,  112,  112,  112,  133,  133,  133,  134,  134,  134,
2278      1674, 1669,  135,  135,  135,  136,  136,  136, 1679, 1680,
2279       133, 1681,  456,  134, 1677, 1678,  112,  112,  135,  456,
2280       112,  136,  442,  442,  442, 1677, 1678,  112,  456,  112,
2281       447,  447,  447,  455,  455,  455,  112,  121,  121,  121,
2282       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
2283
2284       121,  121, 1682,  121,  121,  121,  121,  121,  137,  137,
2285       137,  138,  138,  138, 1599, 1683,  139,  139,  139,  140,
2286       140,  140,  510, 1684,  137, 1685, 1686,  138,  510, 1687,
2287       121,  121,  139, 1688,  510,  140,  121,  457,  457,  457,
2288      1689,  466,  466,  466,  625,  625,  625, 1691,  625, 1599,
2289       121,  122,  122,  122,  122,  122,  122,  122,  122,  122,
2290       122,  122,  122,  122,  122,  122, 1692,  122,  122,  122,
2291       122,  122,  143,  143,  143,  144,  144,  144, 1668, 1698,
2292       147,  147,  147,  148,  148,  148, 1699, 1701,  143, 1706,
2293      1707,  144, 1708, 1732,  122,  122,  147,  466, 1733,  148,
2294
2295       122,  637,  637,  637,  651,  651,  651,  797,  797,  797,
2296       684,  684,  684, 1668,  122,  131,  131,  131,  131,  131,
2297       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
2298      1736,  131,  131,  131,  131,  131,  149,  149,  149,  150,
2299       150,  150, 1716, 1737,  151,  151,  151,  152,  152,  152,
2300      1716, 1738,  149, 1739, 1740,  150, 1716,  701,  131,  131,
2301       151, 1741,  637,  152,  131,  651,  701,  131,  658,  658,
2302       658,  684,  658,  701, 1742,  658, 1729, 1743,  131,  132,
2303       132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
2304       132,  132,  132,  132, 1728,  132,  132,  132,  132,  132,
2305
2306       153,  153,  153,  154,  154,  154, 1717, 1744,  157,  157,
2307       157,  158,  158,  158, 1717, 1729,  153, 1746, 1747,  154,
2308      1717, 1728,  132,  132,  157, 1748, 1749,  158,  132, 1759,
2309      1760,  132,  666,  666,  666, 1763,  666, 1766, 1768,  666,
2310      1730, 1776,  132,  141,  141,  141,  141,  141,  141,  141,
2311       141,  141,  141,  141,  141,  141,  141,  141, 1777,  141,
2312       141,  141,  141,  141,  159,  159,  159,  160,  160,  160,
2313      1778, 1779,  161,  161,  161,  162,  162,  162, 1780, 1730,
2314       159, 1781, 1790,  160, 1791, 1795,  141,  141,  161, 1786,
2315      1796,  162,  141,  812,  812,  812, 1797,  141,  142,  142,
2316
2317       142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
2318       142,  142,  142, 1798,  142,  142,  142,  142,  142,  163,
2319       163,  163,  164,  164,  164, 1800, 1801,  167,  167,  167,
2320       168,  168,  168, 1802, 1786,  163, 1803, 1804,  164, 1805,
2321      1806,  142,  142,  167, 1807, 1812,  168,  142,  689,  689,
2322       689, 1816,  142,  145,  145,  145,  145,  145,  145,  145,
2323       145,  145,  145,  145,  145,  145,  145,  145, 1817,  145,
2324       145,  145,  145,  145,  171,  171,  171,  172,  172,  172,
2325      1821, 1787,  173,  173,  173,  174,  174,  174, 1825, 1828,
2326       171, 1835, 1836,  172, 1830, 1837,  145,  145,  173, 1838,
2327
2328      1839,  174,  145, 1840, 1830,  145,  680,  680,  680,  689,
2329       680, 1848, 1842,  680, 1787, 1849,  145,  146,  146,  146,
2330       146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
2331       146,  146, 1850,  146,  146,  146,  146,  146,  175,  175,
2332       175,  176,  176,  176, 1842, 1831,  177,  177,  177,  178,
2333       178,  178, 1851, 1833,  175, 1831, 1854,  176, 1834, 1855,
2334       146,  146,  177, 1833, 1857,  178,  146, 1858, 1834,  146,
2335       696,  696,  696, 1859,  696,  443, 1861,  696, 1866, 1867,
2336       146,  155,  155,  155,  155,  155,  155,  155,  155,  155,
2337       155,  155,  155,  155,  155,  155, 1875,  155,  155,  155,
2338
2339       155,  155,  181,  181,  181,  182,  182,  182, 1876, 1877,
2340       443,  496,  496,  496, 1878,  635,  635,  635,  181, 1879,
2341      1880,  182, 1881, 1882,  155,  155,  443, 1883,  496, 1884,
2342       276,  277,  155,  635,  155, 1886,  155, 1013, 1013, 1013,
2343       276,  277, 1887, 1899,  155,  156,  156,  156,  156,  156,
2344       156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
2345      1900,  156,  156,  156,  156,  156,  276,  277,  277,  504,
2346       504,  504,  276, 1901, 1902,  276,  519,  519,  519, 1906,
2347       277,  276,  534,  534,  534, 1907,  504, 1908,  156,  156,
2348       541,  541,  541,  519, 1909, 1910,  156, 1911,  156,  534,
2349
2350       156, 1913, 1014, 1014, 1014, 1914, 1923,  541,  156,  165,
2351       165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
2352       165,  165,  165,  165, 1891,  165,  165,  165,  165,  165,
2353       543,  543,  543,  555,  555,  555, 1924,  563,  563,  563,
2354       568,  568,  568,  590,  590,  590, 1014,  543, 1925, 1926,
2355       555, 1927,  165,  165,  563, 1928, 1929,  568, 1930, 1931,
2356       590,  703,  703,  703, 1891,  703, 1932, 1933,  703, 1015,
2357      1015, 1015, 1018, 1018, 1018,  165,  166,  166,  166,  166,
2358       166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
2359       166, 1934,  166,  166,  166,  166,  166,  612,  612,  612,
2360
2361       617,  617,  617,  636,  636,  636,  657,  657,  657,  661,
2362       661,  661, 1941, 1943,  612, 1946, 1947,  617, 1949,  166,
2363       166,  636, 1938,  657,  665,  665,  665,  661,  706,  706,
2364       706, 1950,  706, 1938, 1953,  706, 1024, 1024, 1024, 1954,
2365      1935,  665,  166,  169,  169,  169,  169,  169,  169,  169,
2366       169,  169,  169,  169,  169,  169,  169,  169,  636,  169,
2367       169,  169,  169,  169,  662,  662,  662,  667,  667,  667,
2368      1968,  669,  669,  669,  671,  671,  671,  672,  672,  672,
2369      1937, 1970,  662, 1935,  667, 1972,  169,  169,  669,  718,
2370       718,  718,  671,  718, 1937,  672,  718,  169,  170,  170,
2371
2372       170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
2373       170,  170,  170, 1956,  170,  170,  170,  170,  170,  677,
2374       677,  677,  672, 1956, 1974,  662,  678,  678,  678,  679,
2375       679,  679,  682,  682,  682, 1957, 1982,  677, 1043, 1043,
2376      1043,  170,  170, 1984,  678, 1957,  679, 1054, 1054, 1054,
2377       682, 1986,  170,  179,  179,  179,  179,  179,  179,  179,
2378       179,  179,  179,  179,  179,  179,  179,  179, 1987,  179,
2379       179,  179,  179,  179,  683,  683,  683,  695,  695,  695,
2380       699,  699,  699,  700,  700,  700, 1980,  678,  702,  702,
2381       702, 1995,  683, 1997,  695, 1998,  179,  179,  699, 1999,
2382
2383      1980,  700, 1154, 1154, 1154,  702, 1959,  179, 1960,  683,
2384       726,  726,  726, 2000,  726, 2001, 1959,  726, 1960,  179,
2385       180,  180,  180,  180,  180,  180,  180,  180,  180,  180,
2386       180,  180,  180,  180,  180, 1979,  180,  180,  180,  180,
2387       180,  700,  705,  705,  705,  707,  707,  707,  713,  713,
2388       713,  714,  714,  714,  717,  717,  717, 1965, 2003,  705,
2389      1184, 2005,  707,  180,  180, 1184,  713, 1965, 1184,  714,
2390      2011,  717, 1184, 1979,  180,  719,  719,  719,  722,  722,
2391       722, 1966, 1983,  723,  723,  723,  180,  222,  725,  725,
2392       725, 1966,  719, 1983,  222, 2012,  722,  727,  727,  727,
2393
2394      2013,  723, 2015,  222,  222,  725,  714,  728,  728,  728,
2395       730,  730,  730, 2016, 1185,  727,  731,  731,  731, 1185,
2396       731, 2021, 1185,  731, 2022,  728, 1185,  730, 2023,  222,
2397       222,  222,  723,  735,  735,  735,  222, 1981, 1981,  222,
2398       736,  736,  736,  222, 2024,  222, 2025,  222,  740,  740,
2399       740,  735,  737,  737,  737,  738,  738,  738,  736,  739,
2400       739,  739,  741,  741,  741,  728,  740, 2026, 2027,  737,
2401      2028, 2029,  738,  743,  743,  743,  739,  744,  744,  744,
2402       741,  745,  745,  745,  746,  746,  746,  747,  747,  747,
2403       743, 2030, 2031,  736,  744,  748,  748,  748,  745, 2032,
2404
2405      2033,  746,  750,  750,  750,  747, 2034,  751,  751,  751,
2406      2035,  751, 1994,  748,  751,  739,  752,  752,  752,  750,
2407       741,  754,  754,  754, 2036,  744,  753,  753,  753, 1994,
2408       748,  756,  756,  756,  752,  755,  755,  755,  754,  744,
2409       746,  757,  757,  757,  753,  758,  758,  758,  756,  763,
2410       763,  763,  755,  764,  764,  764,  767,  767,  767,  757,
2411       768,  768,  768,  758,  769,  769,  769,  763,  770,  770,
2412       770,  764,  770, 2038,  767,  770, 1996, 2047,  768,  753,
2413      2048,  769, 2002,  755,  771,  771,  771,  772,  772,  772,
2414       774,  774,  774, 1996,  775,  775,  775,  755,  775, 2002,
2415
2416      2049,  775,  771, 2050, 2051,  772, 2052,  774,  777,  777,
2417       777, 2053, 2054,  758,  764,  778,  778,  778,  793,  793,
2418       793,  768,  794,  794,  794, 2045,  777, 2004,  796,  796,
2419       796, 2055, 2056,  778, 2057, 2045,  793,  817,  817,  817,
2420       794,  821,  821,  821, 2004,  772,  796, 2046,  818,  818,
2421       818, 2058,  818, 2059,  817,  818, 2060, 2046,  821,  823,
2422       823,  823,  824,  824,  824,  826,  826,  826,  828,  828,
2423       828, 2061,  828,  796, 2062,  828,  778,  823, 2065, 2066,
2424       824, 2067, 2063,  826,  831,  831,  831,  832,  832,  832,
2425      2068,  832, 2069, 2070,  832,  833,  833,  833, 2071,  821,
2426
2427      2072,  831,  834,  834,  834, 2063, 2073,  835,  835,  835,
2428       826,  835,  833, 2074,  835,  837,  837,  837, 2075,  834,
2429       838,  838,  838,  840,  840,  840,  843,  843,  843,  845,
2430       845,  845, 2076,  837,  846,  846,  846, 2077,  838, 2078,
2431      2079,  840, 2080,  843,  848,  848,  848,  845, 2081,  849,
2432       849,  849,  846,  849, 2082, 2083,  849,  853,  853,  853,
2433      2084, 2085,  848,  854,  854,  854,  856,  856,  856,  866,
2434       866,  866,  867,  867,  867,  853,  867, 2086, 2085,  867,
2435       840,  854, 2087, 2088,  856, 2089,  866, 2090, 2091,  848,
2436       872,  872,  872,  873,  873,  873,  875,  875,  875,  879,
2437
2438       879,  879, 2092,  879, 2093, 2094,  879, 2095,  872, 2096,
2439      2097,  873, 2098, 2099,  875,  882,  882,  882,  883,  883,
2440       883, 2100,  883, 2101, 2102,  883,  886,  886,  886,  887,
2441       887,  887,  882,  887, 2103, 2104,  887,  893,  893,  893,
2442      1155, 1155, 1155,  886,  894,  894,  894,  896,  896,  896,
2443       900,  900,  900, 2105,  900,  893, 2106,  900,  875,  903,
2444       903,  903,  894, 2107, 2108,  896,  904,  904,  904, 2109,
2445       904, 2110, 2111,  904, 2106, 2112,  903,  907,  907,  907,
2446       908,  908,  908,  910,  910,  910,  912,  912,  912, 2113,
2447       912, 2114, 2115,  912, 2116,  907, 2117, 2118,  908, 2119,
2448
2449      2120,  910,  915,  915,  915,  916,  916,  916,  918,  918,
2450       918,  896,  920,  920,  920, 2121,  920, 2122, 2123,  920,
2451       915, 2124, 2125,  916, 2126, 2127,  918,  926,  926,  926,
2452      2128, 2127,  910,  927,  927,  927,  929,  929,  929,  930,
2453       930,  930,  931,  931,  931,  926,  931, 2129, 2130,  931,
2454      2131,  927, 2132, 2133,  929, 2135,  930,  932,  932,  932,
2455       933,  933,  933, 2136,  933, 2138, 2140,  933,  935,  935,
2456       935, 2142,  918, 2143,  932, 2145,  936,  936,  936,  938,
2457       938,  938,  940,  940,  940, 2146,  935, 2149,  941,  941,
2458       941, 2150,  941,  929,  936,  941, 2148,  938, 2151,  940,
2459
2460       944,  944,  944,  945,  945,  945, 2152,  945, 2148, 2154,
2461       945,  947,  947,  947,  948,  948,  948,  944,  950,  950,
2462       950,  952,  952,  952, 2156,  952, 2157, 2158,  952,  947,
2463      2160, 2162,  948,  955,  955,  955,  950,  956,  956,  956,
2464       958,  958,  958,  938,  959,  959,  959,  963,  963,  963,
2465      2164,  955,  960,  960,  960,  956,  960, 2165,  958,  960,
2466      2166,  959, 2167, 2168,  963,  964,  964,  964, 2169,  964,
2467      2170, 2171,  964,  965,  965,  965,  966,  966,  966,  950,
2468       968,  968,  968,  970,  970,  970,  973,  973,  973, 2172,
2469      2173,  965, 2175, 2177,  966, 2179, 2180,  958,  968, 2181,
2470
2471       970,  974,  974,  974,  973,  976,  976,  976,  979,  979,
2472       979,  980,  980,  980,  982,  982,  982, 2182, 2183,  974,
2473       983,  983,  983,  976,  983, 2184,  979,  983, 2185,  980,
2474      1501, 2199,  982,  986,  986,  986,  987,  987,  987,  968,
2475       989,  989,  989,  991,  991,  991, 1491,  991, 2197, 2211,
2476       991,  986, 2200, 1489,  987,  995,  995,  995,  989,  996,
2477       996,  996, 2186,  976, 2199,  982,  998,  998,  998, 1000,
2478      1000, 1000, 2185,  995, 1007, 1007, 1007,  996, 1027, 1027,
2479      1027, 1031, 1031, 1031,  998, 2200, 2197, 1000, 1000, 1028,
2480      1028, 1028, 1007, 1028, 2211, 1027, 1028,  989, 2198, 1031,
2481
2482      1033, 1033, 1033, 2201, 1033, 2202, 2186, 1033, 1036, 1036,
2483      1036, 1037, 1037, 1037, 2205, 1037, 2216, 1482, 1037, 1038,
2484      1038, 1038, 1479, 1038,  998, 1036, 1038, 2216, 1031, 1042,
2485      1042, 1042, 1045, 1045, 1045, 2206, 2198, 1007, 1046, 1046,
2486      1046, 2195, 1046, 2196, 2205, 1046, 2201, 1042, 2202, 1045,
2487      1047, 1047, 1047, 1048, 1048, 1048, 1050, 1050, 1050, 1055,
2488      1055, 1055, 1061, 1061, 1061, 2206, 1478, 1047, 1062, 1062,
2489      1062, 1048, 1062, 2203, 1050, 1062, 2195, 1042, 2196, 1061,
2490      1063, 1063, 1063, 1475, 1064, 1064, 1064, 1065, 1065, 1065,
2491      1066, 1066, 1066, 1067, 1067, 1067, 2204, 1063, 1474, 1471,
2492
2493      1048, 1064, 2207, 1055, 1469, 1065, 2209, 1066, 2203, 2210,
2494      1067, 2207, 1068, 1068, 1068, 1069, 1069, 1069, 1070, 1070,
2495      1070, 2208, 1070, 1468, 2215, 1070, 1467, 1459, 1064, 1068,
2496      2208, 2204, 1069, 1071, 1071, 1071, 2209, 1071, 2215, 2210,
2497      1071, 1074, 1074, 1074, 1075, 1075, 1075, 1076, 1076, 1076,
2498      1065, 1077, 1077, 1077, 2212, 1453, 1067, 1068, 1074, 1449,
2499      2213, 1075, 1446, 1445, 1076, 1078, 1078, 1078, 1077, 1079,
2500      1079, 1079, 1080, 1080, 1080, 1443, 1081, 1081, 1081, 1088,
2501      1088, 1088, 1078, 1082, 1082, 1082, 1438, 1079, 1437, 1080,
2502      2213, 2214, 1076, 1081, 1083, 1083, 1083, 1088, 1083, 2212,
2503
2504      1082, 1083, 1086, 1086, 1086, 1087, 1087, 1087, 1077, 1436,
2505      1435, 1075, 1090, 1090, 1090, 1434, 1094, 1094, 1094, 1086,
2506      1433, 2214, 1087, 1095, 1095, 1095, 1432, 1103, 1103, 1103,
2507      1090, 1079, 1078, 1094, 1431, 1430, 1082, 1429, 1425, 1081,
2508      1088, 1095, 1096, 1096, 1096, 1103, 1096, 1424, 1421, 1096,
2509      1099, 1099, 1099, 1420, 1099, 1418, 1415, 1099, 1411, 1410,
2510      1094, 1407, 1087, 1104, 1104, 1104, 1105, 1105, 1105, 1406,
2511      1105, 1401, 1386, 1105, 1384, 1090, 1383, 1095, 1110, 1110,
2512      1110, 1382, 1110, 1375, 1373, 1110, 1114, 1114, 1114, 1368,
2513      1103, 1116, 1116, 1116, 1117, 1117, 1117, 1366, 1117, 1363,
2514
2515      1362, 1117, 1361, 1359, 1114, 1357, 1355, 1104, 1352, 1116,
2516      1122, 1122, 1122, 1348, 1122, 1339, 1332, 1122, 1125, 1125,
2517      1125, 1127, 1127, 1127, 1128, 1128, 1128, 1324, 1128, 1323,
2518      1322, 1128, 1131, 1131, 1131, 1317, 1125, 1316, 1127, 1133,
2519      1133, 1133, 1313, 1312, 1114, 1116, 1134, 1134, 1134, 1306,
2520      1131, 1135, 1135, 1135, 1304, 1303, 1133, 1137, 1137, 1137,
2521      1138, 1138, 1138, 1125, 1134, 1141, 1141, 1141, 1302, 1135,
2522      1148, 1148, 1148, 1300, 1137, 1157, 1157, 1157, 1138, 1131,
2523      1160, 1160, 1160, 1141, 1162, 1162, 1162, 1299, 1148, 1163,
2524      1163, 1163, 1166, 1166, 1166, 1167, 1167, 1167, 1169, 1169,
2525
2526      1169, 1135, 1169, 1296, 1295, 1169, 1174, 1174, 1174, 1293,
2527      1134, 1176, 1176, 1176, 1141, 1176, 1292, 1291, 1176, 1138,
2528      1148, 1181, 1181, 1181, 1174, 1180, 1180, 1180, 1290, 1288,
2529      1141, 1286, 1281, 1163, 1183, 1183, 1183, 1280, 1183, 1167,
2530      1279, 1183, 1277, 1180, 1276, 1162, 1186, 1186, 1186, 1187,
2531      1187, 1187, 1275, 1187, 1274, 1174, 1187, 1188, 1188, 1188,
2532      1192, 1192, 1192, 1186, 1193, 1193, 1193, 1194, 1194, 1194,
2533      1195, 1195, 1195, 1271, 1263, 1188, 1196, 1196, 1196, 1258,
2534      1199, 1199, 1199, 1180, 1199, 1256, 1255, 1199, 1202, 1202,
2535      1202, 1203, 1203, 1203, 1251, 1203, 1246, 1241, 1203, 1204,
2536
2537      1204, 1204, 1207, 1207, 1207, 1202, 1188, 1205, 1205, 1205,
2538      1239, 1205, 1237, 1234, 1205, 1233, 1204, 1208, 1208, 1208,
2539      1207, 1232, 1209, 1209, 1209, 1230, 1209, 1206, 1194, 1209,
2540      1198, 1195, 1197, 1191, 1208, 1190, 1189, 1196, 1210, 1210,
2541      1210, 1211, 1211, 1211, 1212, 1212, 1212, 1182, 1212, 1179,
2542      1175, 1212, 1215, 1215, 1215, 1210, 1173, 1172, 1211, 1216,
2543      1216, 1216, 1168, 1216, 1165, 1164, 1216, 1161, 1159, 1215,
2544      1217, 1217, 1217, 1218, 1218, 1218, 1219, 1219, 1219, 1220,
2545      1220, 1220, 1221, 1221, 1221, 1158, 1156, 1217, 1153, 1152,
2546      1218, 1151, 1150, 1219, 1149, 1147, 1220, 1222, 1222, 1222,
2547
2548      1221, 1146, 1211, 1223, 1223, 1223, 1143, 1223, 1140, 1136,
2549      1223, 1278, 1278, 1278, 1222, 1224, 1224, 1224, 1225, 1225,
2550      1225, 1226, 1226, 1226, 1229, 1229, 1229, 1219, 1218, 1227,
2551      1227, 1227, 1224, 1227, 1132, 1225, 1227, 1130, 1226, 1228,
2552      1228, 1228, 1229, 1129, 1126, 1221, 1231, 1231, 1231, 1235,
2553      1235, 1235, 1121, 1236, 1236, 1236, 1228, 1236, 1120, 1115,
2554      1236, 1238, 1238, 1238, 1231, 1113, 1235, 1240, 1240, 1240,
2555      1242, 1242, 1242, 1109, 1108, 1225, 1243, 1243, 1243, 1238,
2556      1244, 1244, 1244, 1102, 1093, 1240, 1092, 1242, 1091, 1089,
2557      1228, 1060, 1059, 1243, 1058, 1231, 1057, 1244, 1056, 1245,
2558
2559      1245, 1245, 1247, 1247, 1247, 1248, 1248, 1248, 1249, 1249,
2560      1249, 1250, 1250, 1250, 1053, 1052, 1240, 1245, 1049, 1044,
2561      1247, 1041, 1248, 1032, 1030, 1249, 1252, 1252, 1252, 1250,
2562      1252, 1029, 1026, 1252, 1257, 1257, 1257, 1259, 1259, 1259,
2563      1025, 1244, 1023, 1260, 1260, 1260, 1247, 1260, 1022, 1021,
2564      1260, 1020, 1257, 1019, 1259, 1017, 1261, 1261, 1261, 1016,
2565      1262, 1262, 1262, 1245, 1264, 1264, 1264, 1012, 1265, 1265,
2566      1265, 1011, 1265, 1250, 1261, 1265, 1010, 1009, 1262, 1008,
2567      1006, 1264, 1005, 1257, 1266, 1266, 1266, 1272, 1272, 1272,
2568      1273, 1273, 1273, 1282, 1282, 1282, 1283, 1283, 1283, 1284,
2569
2570      1284, 1284, 1266, 1004, 1272, 1285, 1285, 1285, 1273, 1287,
2571      1287, 1287, 1261, 1262, 1289, 1289, 1289, 1294, 1294, 1294,
2572      1297, 1297, 1297, 1298, 1298, 1298, 1307, 1307, 1307, 1003,
2573      1307,  994,  990, 1307,  978, 1294,  977,  972, 1297,  971,
2574      1298, 1310, 1310, 1310, 1311, 1311, 1311,  969, 1273, 1314,
2575      1314, 1314, 1315, 1315, 1315,  962, 1318, 1318, 1318, 1310,
2576      1318, 1311,  961, 1318, 1321, 1321, 1321,  951, 1321,  946,
2577       943, 1321, 1325, 1325, 1325,  942, 1297, 1327, 1327, 1327,
2578       939, 1327,  934,  925, 1327, 1310, 1330, 1330, 1330,  924,
2579      1325, 1331, 1331, 1331,  923, 1331,  919,  911, 1331,  906,
2580
2581      1333, 1333, 1333, 1330, 1333,  905,  899, 1333, 1336, 1336,
2582      1336, 1337, 1337, 1337,  898, 1337,  897,  892, 1337, 1338,
2583      1338, 1338, 1340, 1340, 1340, 1336, 1341, 1341, 1341,  891,
2584      1341,  890,  889, 1341,  888,  878, 1338,  877,  876, 1340,
2585      1342, 1342, 1342, 1343, 1343, 1343,  871, 1343,  870,  865,
2586      1343, 1346, 1346, 1346,  864, 1347, 1347, 1347, 1342, 1347,
2587       863,  862, 1347, 1349, 1349, 1349,  861, 1349, 1346,  860,
2588      1349,  859, 1353, 1353, 1353, 1356, 1356, 1356, 1358, 1358,
2589      1358, 1360, 1360, 1360,  858, 1360,  857,  852, 1360, 1342,
2590      1353,  844,  842, 1356,  836, 1358, 1364, 1364, 1364, 1367,
2591
2592      1367, 1367, 1369, 1369, 1369, 1370, 1370, 1370,  827, 1370,
2593       822,  815, 1370,  814, 1364,  813,  811, 1367,  810, 1369,
2594       809,  808, 1358, 1371, 1371, 1371, 1372, 1372, 1372,  806,
2595      1372,  805,  804, 1372,  803,  802, 1356, 1374, 1374, 1374,
2596      1371, 1376, 1376, 1376, 1377, 1377, 1377, 1378, 1378, 1378,
2597       801, 1378,  800,  799, 1378, 1374, 1379, 1379, 1379, 1376,
2598       798, 1377, 1380, 1380, 1380,  792, 1380,  791,  790, 1380,
2599      1392, 1392, 1392, 1379, 1381, 1381, 1381, 1385, 1385, 1385,
2600      1387, 1387, 1387,  787, 1387,  786,  785, 1387, 1376, 1390,
2601      1390, 1390, 1381,  783,  779, 1385, 1391, 1391, 1391,  776,
2602
2603      1374, 1393, 1393, 1393,  773, 1393,  766, 1390, 1393, 1396,
2604      1396, 1396,  765,  762, 1391, 1402, 1402, 1402, 1403, 1403,
2605      1403,  761, 1403,  760,  759, 1403,  749, 1396, 1404, 1404,
2606      1404,  742, 1402, 1405, 1405, 1405, 1381,  734, 1390, 1385,
2607      1408, 1408, 1408, 1409, 1409, 1409, 1404, 1391, 1412, 1412,
2608      1412, 1413, 1413, 1413, 1414, 1414, 1414, 1416, 1416, 1416,
2609      1417, 1417, 1417, 1419, 1419, 1419, 1422, 1422, 1422, 1426,
2610      1426, 1426,  733, 1427, 1427, 1427, 1428, 1428, 1428,  732,
2611      1428,  729,  724, 1428, 1422,  721,  720, 1426,  716, 1404,
2612      1427, 1439, 1439, 1439, 1440, 1440, 1440, 1441, 1441, 1441,
2613
2614       712, 1441,  711,  710, 1441, 1442, 1442, 1442,  709, 1439,
2615       708, 1440, 1444, 1444, 1444, 1450, 1450, 1450,  704, 1450,
2616       698,  697, 1450, 1454, 1454, 1454,  694, 1454,  693,  692,
2617      1454, 1457, 1457, 1457,  691, 1458, 1458, 1458, 1439, 1458,
2618       690,  688, 1458, 1460, 1460, 1460,  687, 1460, 1457,  686,
2619      1460, 1463, 1463, 1463, 1464, 1464, 1464,  685, 1464,  681,
2620       676, 1464, 1470, 1470, 1470, 1472, 1472, 1472,  675, 1463,
2621      1473, 1473, 1473,  674, 1473,  673,  670, 1473,  668,  664,
2622      1470,  660, 1472, 1480, 1480, 1480, 1483, 1483, 1483,  659,
2623      1483,  656,  655, 1483,  654, 1486, 1486, 1486,  653, 1486,
2624
2625       652, 1480, 1486, 1490, 1490, 1490, 1492, 1492, 1492, 1493,
2626      1493, 1493, 1463, 1493,  650,  649, 1493,  648, 1496, 1496,
2627      1496, 1490, 1496,  647, 1492, 1496, 1499, 1499, 1499, 1500,
2628      1500, 1500, 1503, 1503, 1503, 1505, 1505, 1505, 1506, 1506,
2629      1506, 1507, 1507, 1507, 1499,  646, 1500, 1508, 1508, 1508,
2630      1503,  645, 1490, 1505,  644,  643, 1506, 1511, 1511, 1511,
2631      1499, 1515, 1515, 1515,  642, 1508, 1512, 1512, 1512, 1492,
2632      1512,  641,  640, 1512, 1516, 1516, 1516,  639,  638, 1515,
2633      1517, 1517, 1517, 1519, 1519, 1519, 1520, 1520, 1520, 1521,
2634      1521, 1521, 1505,  634, 1503, 1522, 1522, 1522, 1524, 1524,
2635
2636      1524, 1526, 1526, 1526, 1529, 1529, 1529, 1531, 1531, 1531,
2637       633, 1533, 1533, 1533,  631, 1533,  630, 1515, 1533,  629,
2638       628, 1529, 1546, 1546, 1546, 1531, 1547, 1547, 1547,  627,
2639      1547,  623,  621, 1547, 1550, 1550, 1550, 1560, 1560, 1560,
2640      1546, 1560,  620,  619, 1560, 1564, 1564, 1564, 1568, 1568,
2641      1568, 1570, 1570, 1570, 1571, 1571, 1571,  618, 1571,  613,
2642       609, 1571,  608, 1564,  605,  604, 1568,  603, 1570, 1582,
2643      1582, 1582, 1584, 1584, 1584, 1585, 1585, 1585,  602,  601,
2644      1546, 1586, 1586, 1586, 1587, 1587, 1587, 1588, 1588, 1588,
2645      1584,  600, 1585,  597,  596, 1570, 1589, 1589, 1589, 1586,
2646
2647      1589,  595, 1587, 1589, 1588, 1590, 1590, 1590, 1592, 1592,
2648      1592, 1593, 1593, 1593, 1594, 1594, 1594, 1595, 1595, 1595,
2649       594,  591, 1590, 1597, 1597, 1597, 1592, 1600, 1600, 1600,
2650       589,  586, 1594,  585,  584, 1595,  583,  582, 1586,  579,
2651       578, 1597, 1587, 1601, 1601, 1601, 1602, 1602, 1602, 1604,
2652      1604, 1604, 1605, 1605, 1605, 1609, 1609, 1609, 1610, 1610,
2653      1610, 1601, 1610,  577,  576, 1610, 1622, 1622, 1622, 1630,
2654      1630, 1630, 1609, 1633, 1633, 1633,  575, 1594, 1638, 1638,
2655      1638,  572, 1597,  571, 1622,  570, 1630, 1647, 1647, 1647,
2656       569, 1633, 1639, 1639, 1639, 1638, 1639,  567,  564, 1639,
2657
2658      1649, 1649, 1649,  562, 1647,  559, 1651, 1651, 1651, 1653,
2659      1653, 1653, 1654, 1654, 1654,  558, 1654,  557,  556, 1654,
2660      1655, 1655, 1655, 1622, 1651,  554, 1653, 1656, 1656, 1656,
2661      1657, 1657, 1657,  553, 1657,  550,  549, 1657, 1655, 1660,
2662      1660, 1660, 1661, 1661, 1661, 1656, 1661,  548,  547, 1661,
2663      1662, 1662, 1662, 1663, 1663, 1663, 1660, 1665, 1665, 1665,
2664      1666, 1666, 1666, 1670, 1670, 1670,  546, 1662, 1675, 1675,
2665      1675, 1663, 1676, 1676, 1676,  545, 1676,  544, 1666, 1676,
2666       542, 1670, 1690, 1690, 1690, 1675, 1693, 1693, 1693,  540,
2667       537, 1656, 1696, 1696, 1696, 1697, 1697, 1697,  536, 1697,
2668
2669      1690,  535, 1697, 1693, 1700, 1700, 1700,  532,  527, 1696,
2670      1702, 1702, 1702, 1703, 1703, 1703,  525, 1703,  524,  523,
2671      1703, 1700,  522, 1711, 1711, 1711,  521, 1702, 1712, 1712,
2672      1712,  520, 1712,  516,  515, 1712, 1713, 1713, 1713, 1690,
2673      1711, 1714, 1714, 1714, 1715, 1715, 1715,  514, 1715,  513,
2674       509, 1715,  508, 1713, 1718, 1718, 1718,  507, 1714, 1720,
2675      1720, 1720, 1721, 1721, 1721,  506, 1721,  505,  503, 1721,
2676       500,  499, 1718, 1724, 1724, 1724,  497, 1720, 1725, 1725,
2677      1725,  495, 1725,  490,  487, 1725, 1726, 1726, 1726,  485,
2678      1724, 1731, 1731, 1731, 1734, 1734, 1734,  482, 1735, 1735,
2679
2680      1735,  481, 1735,  479, 1726, 1735, 1751, 1751, 1751,  478,
2681       477, 1734, 1752, 1752, 1752, 1753, 1753, 1753, 1754, 1754,
2682      1754,  476, 1720,  475, 1751,  472, 1755, 1755, 1755,  471,
2683      1755,  470, 1753, 1755,  469, 1754, 1756, 1756, 1756,  468,
2684      1756,  462,  461, 1756, 1761, 1761, 1761, 1762, 1762, 1762,
2685       459, 1762,  453,  452, 1762, 1751, 1764, 1764, 1764, 1753,
2686       448, 1761, 1765, 1765, 1765,  444, 1765,  440,  436, 1765,
2687      1767, 1767, 1767, 1764, 1769, 1769, 1769,  430, 1769,  426,
2688       422, 1769, 1772, 1772, 1772,  418,  417, 1767, 1773, 1773,
2689      1773,  416, 1773,  415,  411, 1773, 1774, 1774, 1774, 1772,
2690
2691      1775, 1775, 1775,  407, 1775,  404,  403, 1775, 1782, 1782,
2692      1782,  402,  398, 1774, 1783, 1783, 1783,  392, 1783,  391,
2693       387, 1783, 1788, 1788, 1788,  383, 1782, 1789, 1789, 1789,
2694      1792, 1792, 1792,  379, 1792,  378,  374, 1792,  371, 1788,
2695      1788, 1799, 1799, 1799, 1808, 1808, 1808, 1809, 1809, 1809,
2696      1810, 1810, 1810,  370, 1826, 1826, 1826, 1782, 1799, 1811,
2697      1811, 1811, 1808, 1811,  365,  361, 1811, 1810, 1813, 1813,
2698      1813, 1826, 1813,  353,  352, 1813, 1818, 1818, 1818,  351,
2699      1818,  347,  341, 1818,  340, 1822, 1822, 1822,  336, 1822,
2700       330, 1808, 1822, 1827, 1827, 1827,  329, 1827,  328,  327,
2701
2702      1827, 1829, 1829, 1829,  326, 1829,  325,  321, 1829, 1832,
2703      1832, 1832,  314, 1832,  312,  311, 1832, 1841, 1841, 1841,
2704      1843, 1843, 1843, 1844, 1844, 1844, 1845, 1845, 1845,  310,
2705      1845,  305,  298, 1845,  297, 1841,  296, 1843, 1843,  295,
2706      1844, 1844,  294,  290, 1845, 1846, 1846, 1846, 1847, 1847,
2707      1847, 1852, 1852, 1852, 1853, 1853, 1853,  286, 1853,  280,
2708       278, 1853, 1862, 1862, 1862, 1863, 1863, 1863, 1852, 1863,
2709       273,  272, 1863, 1868, 1868, 1868, 1869, 1869, 1869,  268,
2710      1862, 1870, 1870, 1870, 1871, 1871, 1871,  262, 1871,  261,
2711      1868, 1871,  260, 1869, 1874, 1874, 1874,  256, 1870, 1889,
2712
2713      1889, 1889, 1892, 1892, 1892, 1893, 1893, 1893,  248, 1893,
2714       246, 1874, 1893,  245, 1894, 1894, 1894, 1889, 1894, 1892,
2715      1892, 1894,  241, 1893,  238, 1862, 1897, 1897, 1897, 1898,
2716      1898, 1898, 1894, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
2717      1895, 1895,  236,  235, 1895, 1912, 1912, 1912,  234, 1895,
2718      1895, 1895, 1895, 1895, 1903, 1903, 1903,  230, 1903,  227,
2719       226, 1903,  223, 1912,  219,  215,  211,  210,  209,  203,
2720      1915, 1915, 1915, 1917, 1917, 1917, 1895, 1895, 1896, 1896,
2721      1896, 1896, 1896, 1896, 1896, 1896, 1896, 1915,  202, 1896,
2722      1917,  200,  197,  185, 1896, 1896, 1896, 1896, 1896, 1916,
2723
2724      1916, 1916,    0, 1916,    0,    0, 1916, 1918, 1918, 1918,
2725         0, 1918,    0,    0, 1918, 1919, 1919, 1919, 1921, 1921,
2726      1921, 1896, 1896, 1920, 1920, 1920,    0, 1920,    0,    0,
2727      1920,    0, 1919,    0,    0, 1921, 1922, 1922, 1922,    0,
2728      1922,    0,    0, 1922, 1936, 1936, 1936,    0, 1936,    0,
2729         0, 1936,    0,    0, 1951, 1951, 1951, 1985, 1985, 1985,
2730         0,    0, 1936, 1939, 1939, 1939, 1939, 1939, 1939, 1939,
2731      1939, 1939, 1951,    0, 1939, 1985, 1985,    0,    0, 1939,
2732      1939, 1939, 1939, 1939, 1955, 1955, 1955,    0, 1955,    0,
2733         0, 1955, 1958, 1958, 1958,    0, 1958,    0,    0, 1958,
2734
2735      1992, 1992, 1992, 1993, 1993, 1993, 1939, 1939, 1940, 1940,
2736      1940, 1940, 1940, 1940, 1940, 1940, 1940, 1992,    0, 1940,
2737      1993,    0,    0,    0, 1940, 1940, 1940, 1940, 1940, 1961,
2738      1961, 1961,    0, 1961,    0,    0, 1961, 1964, 1964, 1964,
2739         0, 1964,    0,    0, 1964, 2010, 2010, 2010, 2014, 2014,
2740      2014, 1940, 1940, 2017, 2017, 2017,    0, 2018, 2018, 2018,
2741         0, 2018,    0, 2010, 2018,    0, 2014, 2019, 2019, 2019,
2742      2017, 2020, 2020, 2020,    0, 2020,    0,    0, 2020,    0,
2743      2037, 2037, 2037,    0, 2019, 2041, 2041, 2041,    0, 2041,
2744         0,    0, 2041, 2163, 2163, 2163,    0, 2014, 2037, 2044,
2745
2746      2044, 2044,    0, 2044,    0,    0, 2044, 2217, 2217, 2217,
2747         0, 2163, 2174, 2174, 2174, 2037, 2174,    0,    0, 2174,
2748      2218, 2218, 2218,    0,    0, 2217,    0,    0,    0,    0,
2749      2174,    0,    0,    0,    0,    0,    0,    0, 2218, 2221,
2750      2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2222, 2222,
2751      2222, 2222, 2222, 2222, 2222, 2222, 2222, 2223, 2223, 2223,
2752      2223, 2223, 2223, 2223, 2223, 2223, 2224, 2224, 2224, 2224,
2753      2224, 2224, 2224, 2224, 2224, 2225, 2225, 2225, 2225, 2225,
2754      2225, 2225, 2225, 2225, 2226, 2226, 2226, 2226, 2226, 2226,
2755      2226, 2226, 2226, 2227, 2227, 2227, 2227, 2227, 2227, 2227,
2756
2757      2227, 2227, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228,
2758      2228, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229,
2759      2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2231,
2760      2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2232, 2232,
2761      2232, 2232, 2232, 2232, 2232, 2232, 2232, 2233, 2233, 2233,
2762      2233, 2233, 2233, 2233, 2233, 2233, 2234, 2234, 2234, 2234,
2763      2234, 2234, 2234, 2234, 2234, 2235, 2235, 2235, 2235, 2235,
2764      2235, 2235, 2235, 2235, 2236, 2236, 2236, 2236, 2236, 2236,
2765      2236, 2236, 2236, 2237, 2237, 2237, 2237, 2237, 2237, 2237,
2766      2237, 2237, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2767
2768      2238, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239,
2769      2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2241,
2770      2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2242, 2242,
2771      2242, 2242, 2242, 2242, 2242, 2242, 2242, 2243, 2243, 2243,
2772      2243, 2243, 2243, 2243, 2243, 2243, 2244, 2244, 2244, 2244,
2773      2244, 2244, 2244, 2244, 2244, 2245, 2245, 2245, 2245, 2245,
2774      2245, 2245, 2245, 2245, 2246, 2246, 2246, 2246, 2246, 2246,
2775      2246, 2246, 2246, 2247, 2247, 2247, 2247, 2247, 2247, 2247,
2776      2247, 2247, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248,
2777      2248, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
2778
2779      2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2251,
2780      2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2252, 2252,
2781      2252, 2252, 2252, 2252, 2252, 2252, 2252, 2253, 2253, 2253,
2782      2253, 2253, 2253, 2253, 2253, 2253, 2254, 2254, 2254, 2254,
2783      2254, 2254, 2254, 2254, 2254, 2255, 2255, 2255, 2255, 2255,
2784      2255, 2255, 2255, 2255, 2256, 2256, 2256, 2256, 2256, 2256,
2785      2256, 2256, 2256, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
2786      2257, 2257, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2787      2258, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259,
2788      2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2261,
2789
2790      2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2262, 2262,
2791      2262,    0,    0,    0, 2262, 2263, 2263, 2263,    0,    0,
2792         0, 2263, 2264, 2264, 2264,    0,    0,    0, 2264, 2265,
2793      2265, 2265,    0,    0,    0, 2265, 2266, 2266, 2266,    0,
2794         0,    0, 2266, 2267, 2267, 2267,    0,    0,    0, 2267,
2795      2268, 2268, 2268,    0,    0,    0, 2268, 2269, 2269, 2269,
2796         0,    0,    0, 2269, 2270, 2270, 2270,    0,    0,    0,
2797      2270, 2271, 2271, 2271,    0,    0,    0, 2271, 2272, 2272,
2798      2272,    0,    0,    0, 2272, 2273, 2273, 2273,    0,    0,
2799         0, 2273, 2274, 2274, 2274,    0,    0,    0, 2274, 2275,
2800
2801      2275, 2275,    0,    0,    0, 2275, 2276, 2276, 2276,    0,
2802         0,    0, 2276, 2277, 2277, 2277,    0,    0,    0, 2277,
2803      2278, 2278, 2278,    0,    0,    0, 2278, 2279, 2279, 2279,
2804         0,    0,    0, 2279, 2280, 2280, 2280, 2280, 2280, 2280,
2805      2280,    0, 2280, 2281, 2281, 2281,    0,    0,    0, 2281,
2806      2282,    0,    0,    0, 2282, 2283, 2283, 2283,    0,    0,
2807         0, 2283, 2284,    0,    0,    0, 2284, 2285, 2285, 2285,
2808         0,    0,    0, 2285, 2286,    0,    0,    0, 2286, 2287,
2809      2287, 2287,    0,    0,    0, 2287, 2288,    0,    0,    0,
2810      2288, 2289, 2289, 2289,    0,    0,    0, 2289, 2290,    0,
2811
2812         0,    0, 2290, 2291,    0,    0,    0, 2291, 2292, 2292,
2813      2292,    0,    0,    0, 2292, 2293,    0,    0,    0, 2293,
2814      2294, 2294, 2294,    0,    0,    0, 2294, 2295,    0,    0,
2815         0, 2295, 2296, 2296, 2296,    0,    0,    0, 2296, 2297,
2816         0,    0,    0, 2297, 2298, 2298, 2298,    0,    0,    0,
2817      2298, 2299,    0,    0,    0, 2299, 2300, 2300, 2300,    0,
2818         0,    0, 2300, 2301,    0,    0,    0, 2301, 2302, 2302,
2819      2302,    0,    0,    0, 2302, 2303,    0,    0,    0, 2303,
2820      2304, 2304, 2304,    0,    0,    0, 2304, 2305,    0,    0,
2821         0, 2305, 2306, 2306, 2306,    0,    0,    0, 2306, 2307,
2822
2823         0,    0,    0, 2307, 2308, 2308, 2308,    0,    0,    0,
2824      2308, 2309,    0,    0,    0, 2309, 2310, 2310, 2310,    0,
2825         0,    0, 2310, 2311,    0,    0,    0, 2311, 2312, 2312,
2826      2312,    0,    0,    0, 2312, 2313,    0,    0,    0, 2313,
2827      2314, 2314, 2314,    0,    0,    0, 2314, 2315,    0,    0,
2828         0, 2315, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316,
2829      2316, 2317,    0,    0,    0,    0, 2317, 2318, 2318, 2318,
2830         0,    0,    0, 2318, 2319, 2319, 2319, 2319,    0,    0,
2831      2319, 2319, 2320, 2320, 2320,    0,    0,    0, 2320, 2321,
2832      2321, 2321, 2321,    0,    0, 2321, 2321, 2322, 2322, 2322,
2833
2834         0,    0,    0, 2322, 2323, 2323, 2323, 2323,    0,    0,
2835      2323, 2323, 2324, 2324, 2324,    0,    0,    0, 2324, 2325,
2836      2325, 2325, 2325,    0,    0, 2325, 2325, 2326, 2326, 2326,
2837         0,    0,    0, 2326, 2327, 2327, 2327, 2327,    0,    0,
2838      2327, 2327, 2328, 2328, 2328,    0,    0,    0, 2328, 2329,
2839      2329, 2329, 2329,    0,    0, 2329, 2329, 2330, 2330, 2330,
2840         0,    0,    0, 2330, 2331, 2331, 2331, 2331,    0,    0,
2841      2331, 2331, 2332, 2332, 2332,    0,    0,    0, 2332, 2333,
2842      2333, 2333, 2333,    0,    0, 2333, 2333, 2334, 2334, 2334,
2843         0,    0,    0, 2334, 2335, 2335, 2335, 2335,    0,    0,
2844
2845      2335, 2335, 2336, 2336, 2336,    0,    0,    0, 2336, 2337,
2846      2337, 2337, 2337,    0,    0, 2337, 2337, 2338, 2338, 2338,
2847      2338,    0, 2338,    0, 2338, 2339, 2339, 2339, 2339,    0,
2848         0, 2339, 2339, 2340, 2340, 2340, 2340,    0, 2340,    0,
2849      2340, 2341, 2341, 2341, 2341,    0,    0, 2341, 2341, 2342,
2850      2342, 2342,    0,    0,    0, 2342, 2343, 2343, 2343, 2343,
2851         0,    0, 2343, 2343, 2344, 2344, 2344, 2344,    0, 2344,
2852         0, 2344, 2345, 2345, 2345, 2345,    0,    0, 2345, 2345,
2853      2346, 2346, 2346,    0,    0,    0, 2346, 2347, 2347, 2347,
2854      2347,    0,    0, 2347, 2347, 2348, 2348, 2348,    0,    0,
2855
2856         0, 2348, 2349, 2349, 2349, 2349,    0,    0, 2349, 2349,
2857      2350, 2350, 2350, 2350,    0,    0, 2350, 2350, 2351, 2351,
2858      2351,    0,    0,    0, 2351, 2352, 2352, 2352, 2352,    0,
2859         0, 2352, 2352, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
2860      2353, 2353, 2354,    0, 2354,    0,    0, 2354, 2355, 2355,
2861      2355,    0,    0,    0, 2355, 2356, 2356, 2356, 2356,    0,
2862         0, 2356, 2356, 2357, 2357, 2357, 2357,    0, 2357,    0,
2863      2357, 2358, 2358, 2358, 2358,    0,    0, 2358, 2358, 2359,
2864      2359, 2359,    0,    0,    0, 2359, 2360, 2360, 2360, 2360,
2865         0,    0, 2360, 2360, 2361, 2361, 2361,    0,    0,    0,
2866
2867      2361, 2362, 2362, 2362, 2362,    0,    0, 2362, 2362, 2363,
2868      2363, 2363,    0,    0,    0, 2363, 2364, 2364, 2364, 2364,
2869         0,    0, 2364, 2364, 2365, 2365, 2365,    0,    0,    0,
2870      2365, 2366, 2366, 2366, 2366,    0,    0, 2366, 2366, 2367,
2871      2367, 2367,    0,    0,    0, 2367, 2368, 2368, 2368, 2368,
2872         0,    0, 2368, 2368, 2369, 2369, 2369,    0,    0,    0,
2873      2369, 2370, 2370, 2370, 2370,    0,    0, 2370, 2370, 2371,
2874      2371, 2371,    0,    0,    0, 2371, 2372, 2372, 2372, 2372,
2875         0,    0, 2372, 2372, 2373, 2373, 2373,    0,    0,    0,
2876      2373, 2374, 2374, 2374, 2374,    0,    0, 2374, 2374, 2375,
2877
2878      2375, 2375,    0,    0,    0, 2375, 2376, 2376, 2376, 2376,
2879         0,    0, 2376, 2376, 2377, 2377, 2377,    0,    0,    0,
2880      2377, 2378, 2378, 2378, 2378,    0,    0, 2378, 2378, 2379,
2881      2379, 2379,    0,    0,    0, 2379, 2380, 2380, 2380, 2380,
2882         0,    0, 2380, 2380, 2381, 2381, 2381,    0,    0,    0,
2883      2381, 2382, 2382, 2382, 2382,    0,    0, 2382, 2382, 2383,
2884      2383, 2383,    0,    0,    0, 2383, 2384, 2384, 2384, 2384,
2885         0,    0, 2384, 2384, 2385, 2385, 2385,    0,    0,    0,
2886      2385, 2386, 2386, 2386, 2386,    0,    0, 2386, 2386, 2387,
2887      2387, 2387, 2387,    0,    0, 2387, 2387, 2388, 2388, 2388,
2888
2889         0,    0,    0, 2388, 2389, 2389, 2389, 2389,    0,    0,
2890      2389, 2389, 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390,
2891      2390, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391,
2892      2392, 2392, 2392,    0,    0,    0, 2392, 2393, 2393, 2393,
2893      2393,    0,    0, 2393, 2393, 2394, 2394, 2394,    0,    0,
2894         0, 2394, 2395, 2395, 2395, 2395,    0,    0, 2395, 2395,
2895      2396, 2396, 2396,    0,    0,    0, 2396, 2397, 2397, 2397,
2896      2397,    0,    0, 2397, 2397, 2398, 2398, 2398,    0,    0,
2897         0, 2398, 2399, 2399, 2399, 2399,    0,    0, 2399, 2399,
2898      2400, 2400, 2400,    0,    0,    0, 2400, 2401, 2401, 2401,
2899
2900         0,    0,    0, 2401, 2402, 2402, 2402, 2402,    0,    0,
2901      2402, 2402, 2403, 2403, 2403, 2403,    0, 2403,    0, 2403,
2902      2404, 2404, 2404, 2404,    0,    0, 2404, 2404, 2405, 2405,
2903      2405, 2405,    0, 2405,    0, 2405, 2406, 2406, 2406, 2406,
2904         0,    0, 2406, 2406, 2407, 2407, 2407,    0,    0,    0,
2905      2407, 2408, 2408, 2408, 2408,    0,    0, 2408, 2408, 2409,
2906      2409, 2409,    0,    0,    0, 2409, 2410, 2410, 2410, 2410,
2907         0,    0, 2410, 2410, 2411, 2411, 2411,    0,    0,    0,
2908      2411, 2412, 2412, 2412, 2412,    0,    0, 2412, 2412, 2413,
2909      2413, 2413,    0,    0,    0, 2413, 2414, 2414, 2414, 2414,
2910
2911         0,    0, 2414, 2414, 2415, 2415, 2415,    0,    0,    0,
2912      2415, 2416, 2416, 2416, 2416,    0,    0, 2416, 2416, 2417,
2913      2417, 2417,    0,    0,    0, 2417, 2418, 2418, 2418, 2418,
2914         0,    0, 2418, 2418, 2419, 2419, 2419,    0,    0,    0,
2915      2419, 2420, 2420, 2420, 2420,    0,    0, 2420, 2420, 2421,
2916      2421, 2421, 2421,    0, 2421,    0, 2421, 2422, 2422, 2422,
2917      2422,    0,    0, 2422, 2422, 2423, 2423, 2423, 2423,    0,
2918         0, 2423, 2423, 2424, 2424, 2424, 2424,    0, 2424,    0,
2919      2424, 2425, 2425, 2425, 2425,    0,    0, 2425, 2425, 2426,
2920      2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2427, 2427,
2921
2922      2427, 2427, 2427, 2427, 2427, 2427, 2427, 2428, 2428, 2428,
2923         0,    0,    0, 2428, 2429, 2429, 2429, 2429,    0,    0,
2924      2429, 2429, 2430, 2430, 2430,    0,    0,    0, 2430, 2431,
2925      2431, 2431, 2431,    0,    0, 2431, 2431, 2432, 2432, 2432,
2926         0,    0,    0, 2432, 2433, 2433, 2433, 2433,    0,    0,
2927      2433, 2433, 2434, 2434, 2434,    0,    0,    0, 2434, 2435,
2928      2435, 2435, 2435,    0,    0, 2435, 2435, 2436, 2436, 2436,
2929         0,    0,    0, 2436, 2437, 2437, 2437,    0,    0,    0,
2930      2437, 2438, 2438, 2438, 2438,    0,    0, 2438, 2438, 2439,
2931      2439, 2439, 2439,    0, 2439,    0, 2439, 2440, 2440, 2440,
2932
2933      2440,    0,    0, 2440, 2440, 2441, 2441, 2441, 2441,    0,
2934      2441,    0, 2441, 2442, 2442, 2442, 2442,    0,    0, 2442,
2935      2442, 2443, 2443, 2443,    0,    0,    0, 2443, 2444, 2444,
2936      2444, 2444,    0,    0, 2444, 2444, 2445, 2445, 2445,    0,
2937         0,    0, 2445, 2446, 2446, 2446, 2446,    0,    0, 2446,
2938      2446, 2447, 2447, 2447,    0,    0,    0, 2447, 2448, 2448,
2939      2448, 2448,    0,    0, 2448, 2448, 2449, 2449, 2449, 2449,
2940         0, 2449,    0, 2449, 2450, 2450, 2450, 2450,    0,    0,
2941      2450, 2450, 2451, 2451, 2451,    0,    0,    0, 2451, 2452,
2942      2452, 2452, 2452,    0,    0, 2452, 2452, 2453, 2453, 2453,
2943
2944      2453,    0, 2453,    0, 2453, 2454, 2454, 2454, 2454,    0,
2945         0, 2454, 2454, 2455, 2455, 2455,    0,    0,    0, 2455,
2946      2456, 2456, 2456, 2456,    0,    0, 2456, 2456, 2457, 2457,
2947      2457, 2457,    0,    0, 2457, 2457, 2458, 2458, 2458, 2458,
2948         0,    0, 2458, 2458, 2459, 2459, 2459, 2459,    0,    0,
2949      2459, 2459, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
2950      2460, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461, 2461,
2951      2462, 2462, 2462, 2462,    0, 2462,    0, 2462, 2463, 2463,
2952      2463, 2463,    0,    0, 2463, 2463, 2464, 2464, 2464,    0,
2953         0,    0, 2464, 2465, 2465, 2465, 2465,    0,    0, 2465,
2954
2955      2465, 2466, 2466, 2466,    0,    0,    0, 2466, 2467, 2467,
2956      2467, 2467,    0,    0, 2467, 2467, 2468, 2468, 2468, 2468,
2957         0, 2468,    0, 2468, 2469, 2469, 2469, 2469,    0,    0,
2958      2469, 2469, 2470, 2470, 2470, 2470,    0, 2470,    0, 2470,
2959      2471, 2471, 2471,    0,    0,    0, 2471, 2472, 2472, 2472,
2960         0,    0,    0, 2472, 2473, 2473, 2473, 2473,    0,    0,
2961      2473, 2473, 2474, 2474, 2474,    0,    0,    0, 2474, 2475,
2962      2475, 2475,    0,    0,    0, 2475, 2476, 2476, 2476, 2476,
2963         0,    0, 2476, 2476, 2477, 2477, 2477,    0,    0,    0,
2964      2477, 2478, 2478, 2478,    0,    0,    0, 2478, 2479, 2479,
2965
2966      2479, 2479,    0,    0, 2479, 2479, 2480, 2480, 2480,    0,
2967         0,    0, 2480, 2481, 2481, 2481, 2481,    0,    0, 2481,
2968      2481, 2482, 2482, 2482,    0,    0,    0, 2482, 2483, 2483,
2969      2483, 2483,    0,    0, 2483, 2483, 2484, 2484, 2484, 2484,
2970         0,    0, 2484, 2484, 2485, 2485, 2485,    0,    0,    0,
2971      2485, 2486, 2486, 2486, 2486,    0,    0, 2486, 2486, 2487,
2972      2487, 2487, 2487,    0,    0, 2487, 2487, 2488, 2488, 2488,
2973      2488,    0,    0, 2488, 2488, 2489, 2489, 2489, 2489, 2489,
2974      2489, 2489, 2489, 2489, 2490, 2490, 2490, 2490, 2490, 2490,
2975      2490, 2490, 2490, 2491, 2491, 2491, 2491, 2491, 2491, 2491,
2976
2977      2491, 2491, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492,
2978      2492, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493,
2979      2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2495,
2980      2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2496, 2496,
2981      2496, 2496, 2496, 2496, 2496, 2496, 2496, 2220, 2220, 2220,
2982      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2983      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2984      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2985      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2986      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2987
2988      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220,
2989      2220, 2220, 2220, 2220, 2220, 2220, 2220, 2220
2990     } ;
2991
2992 /* Table of booleans, true if rule could match eol. */
2993 static yyconst flex_int32_t yy_rule_can_match_eol[381] =
2994     {   0,
2995 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
2996     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
2997     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
2998     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
2999     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
3000     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3001     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3002     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
3003     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3004     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
3005     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3006     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
3007     1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
3008     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 
3009     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3010     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
3011     0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 
3012     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 
3013     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 
3014     0,     };
3015
3016 static yy_state_type yy_last_accepting_state;
3017 static char *yy_last_accepting_cpos;
3018
3019 extern int surf_parse__flex_debug;
3020 int surf_parse__flex_debug = 0;
3021
3022 /* The intent behind this definition is that it'll catch
3023  * any uses of REJECT which flex missed.
3024  */
3025 #define REJECT reject_used_but_not_detected
3026 #define yymore() yymore_used_but_not_detected
3027 #define YY_MORE_ADJ 0
3028 #define YY_RESTORE_YY_MORE_OFFSET
3029 char *surf_parse_text;
3030 /* Validating XML processor for src/surf/simgrid.dtd.
3031  * Generated 2010/12/03 11:37:14.
3032  *
3033  * This program was generated with the FleXML XML processor generator.
3034  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
3035  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
3036  * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
3037  * 
3038  * There are two, intertwined parts to this program, part A and part B.
3039  *
3040  * Part A
3041  * ------
3042  * 
3043  * Some parts, here collectively called "Part A", are found in the 
3044  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
3045  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
3046  *
3047  * You can redistribute, use, perform, display and/or modify "Part A"
3048  * provided the following two conditions hold:
3049  *
3050  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
3051  *    FleXML; without even the implied warranty of MERCHANTABILITY or
3052  *    FITNESS FOR A PARTICULAR PURPOSE.
3053  *
3054  * 2. The program distribution conditions do not in any way affect the
3055  *    distribution conditions of the FleXML system used to generate this
3056  *    file or any version of FleXML derived from that system.
3057  *
3058  * Notice that these are explicit rights granted to you for files
3059  * generated by the FleXML system.  For your rights in connection with
3060  * the FleXML system itself please consult the GNU General Public License.
3061  * 
3062  * Part B
3063  * ------
3064  * 
3065  * The other parts, here collectively called "Part B", and which came 
3066  * from the DTD used by FleXML to generate this program, can be 
3067  * distributed (or not, as the case may be) under the terms of whoever
3068  * wrote them, provided these terms respect and obey the two conditions 
3069  * above under the heading "Part A".
3070  *
3071  * The author of and contributors to FleXML specifically disclaim
3072  * any copyright interest in "Part B", unless "Part B" was written 
3073  * by the author of or contributors to FleXML.
3074  * 
3075  */
3076
3077 /* Version strings. */
3078 const char rcs_surfxml_flexml_skeleton[] =
3079  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
3080 const char rcs_surfxml_flexml[] =
3081  "$" "Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp $";
3082
3083 /* ANSI headers. */
3084 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
3085 #include <stdio.h>
3086 #include <string.h>
3087 #include <assert.h>
3088 #include <stdarg.h>
3089 #include <ctype.h>
3090      
3091 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
3092 # ifndef __STRICT_ANSI__
3093 #  include <io.h>
3094 #  include <process.h>
3095 # endif
3096 #else
3097 # include <unistd.h>
3098 #endif
3099      
3100 #ifndef FLEXML_INDEXSTACKSIZE
3101 #define FLEXML_INDEXSTACKSIZE 1000
3102 #endif
3103
3104 /* Generated definitions. */
3105 #define FLEXML_yylineno
3106 #ifndef FLEXML_BUFFERSTACKSIZE
3107 #define FLEXML_BUFFERSTACKSIZE 1000000
3108 #endif
3109 #define FLEXML_NEED_BUFFERLIT
3110
3111 /* XML processor api. */
3112 /* FleXML-provided data. */
3113 int surfxml_pcdata_ix;
3114 extern char *surfxml_bufferstack;
3115 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
3116 AT_surfxml_random_generator AX_surfxml_random_generator;
3117 #define A_surfxml_random_generator AX_surfxml_random_generator
3118 AT_surfxml_ASroute_gw_dst AX_surfxml_ASroute_gw_dst;
3119 #define A_surfxml_ASroute_gw_dst (surfxml_bufferstack + AX_surfxml_ASroute_gw_dst)
3120 AT_surfxml_trace_connect_element AX_surfxml_trace_connect_element;
3121 #define A_surfxml_trace_connect_element (surfxml_bufferstack + AX_surfxml_trace_connect_element)
3122 AT_surfxml_prop_id AX_surfxml_prop_id;
3123 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
3124 AT_surfxml_host_id AX_surfxml_host_id;
3125 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
3126 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
3127 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
3128 AT_surfxml_peer_lat AX_surfxml_peer_lat;
3129 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
3130 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
3131 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
3132 AT_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction;
3133 #define A_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction
3134 AT_surfxml_host_state AX_surfxml_host_state;
3135 #define A_surfxml_host_state AX_surfxml_host_state
3136 AT_surfxml_AS_id AX_surfxml_AS_id;
3137 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
3138 AT_surfxml_host_power AX_surfxml_host_power;
3139 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
3140 AT_surfxml_router_id AX_surfxml_router_id;
3141 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
3142 AT_surfxml_process_start_time AX_surfxml_process_start_time;
3143 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
3144 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
3145 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
3146 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
3147 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
3148 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
3149 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
3150 AT_surfxml_trace_file AX_surfxml_trace_file;
3151 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
3152 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
3153 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
3154 AT_surfxml_random_min AX_surfxml_random_min;
3155 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
3156 AT_surfxml_link_ctn_id AX_surfxml_link_ctn_id;
3157 #define A_surfxml_link_ctn_id (surfxml_bufferstack + AX_surfxml_link_ctn_id)
3158 AT_surfxml_peer_bw_out AX_surfxml_peer_bw_out;
3159 #define A_surfxml_peer_bw_out (surfxml_bufferstack + AX_surfxml_peer_bw_out)
3160 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
3161 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
3162 AT_surfxml_cluster_bb_bw AX_surfxml_cluster_bb_bw;
3163 #define A_surfxml_cluster_bb_bw (surfxml_bufferstack + AX_surfxml_cluster_bb_bw)
3164 AT_surfxml_argument_value AX_surfxml_argument_value;
3165 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
3166 AT_surfxml_link_state AX_surfxml_link_state;
3167 #define A_surfxml_link_state AX_surfxml_link_state
3168 AT_surfxml_ASroute_gw_src AX_surfxml_ASroute_gw_src;
3169 #define A_surfxml_ASroute_gw_src (surfxml_bufferstack + AX_surfxml_ASroute_gw_src)
3170 AT_surfxml_AS_routing AX_surfxml_AS_routing;
3171 #define A_surfxml_AS_routing (surfxml_bufferstack + AX_surfxml_AS_routing)
3172 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
3173 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
3174 AT_surfxml_cluster_id AX_surfxml_cluster_id;
3175 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
3176 AT_surfxml_peer_bw_in AX_surfxml_peer_bw_in;
3177 #define A_surfxml_peer_bw_in (surfxml_bufferstack + AX_surfxml_peer_bw_in)
3178 AT_surfxml_random_mean AX_surfxml_random_mean;
3179 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
3180 AT_surfxml_cluster_bb_lat AX_surfxml_cluster_bb_lat;
3181 #define A_surfxml_cluster_bb_lat (surfxml_bufferstack + AX_surfxml_cluster_bb_lat)
3182 AT_surfxml_link_latency AX_surfxml_link_latency;
3183 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
3184 AT_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind;
3185 #define A_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind
3186 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
3187 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
3188 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
3189 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
3190 AT_surfxml_random_id AX_surfxml_random_id;
3191 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
3192 AT_surfxml_random_max AX_surfxml_random_max;
3193 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
3194 AT_surfxml_link_id AX_surfxml_link_id;
3195 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
3196 AT_surfxml_process_host AX_surfxml_process_host;
3197 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
3198 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
3199 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
3200 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
3201 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
3202 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
3203 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
3204 AT_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy;
3205 #define A_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy
3206 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
3207 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
3208 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
3209 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
3210 AT_surfxml_prop_value AX_surfxml_prop_value;
3211 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
3212 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
3213 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
3214 AT_surfxml_link_state_file AX_surfxml_link_state_file;
3215 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
3216 AT_surfxml_trace_connect_trace AX_surfxml_trace_connect_trace;
3217 #define A_surfxml_trace_connect_trace (surfxml_bufferstack + AX_surfxml_trace_connect_trace)
3218 AT_surfxml_cluster_power AX_surfxml_cluster_power;
3219 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
3220 AT_surfxml_process_function AX_surfxml_process_function;
3221 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
3222 AT_surfxml_peer_id AX_surfxml_peer_id;
3223 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
3224 AT_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy;
3225 #define A_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy
3226 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
3227 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
3228 AT_surfxml_host_core AX_surfxml_host_core;
3229 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
3230 AT_surfxml_host_availability AX_surfxml_host_availability;
3231 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
3232 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
3233 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
3234 AT_surfxml_route_src AX_surfxml_route_src;
3235 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
3236 AT_surfxml_bypassRoute_gw_dst AX_surfxml_bypassRoute_gw_dst;
3237 #define A_surfxml_bypassRoute_gw_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_gw_dst)
3238 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
3239 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
3240 AT_surfxml_trace_id AX_surfxml_trace_id;
3241 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
3242 AT_surfxml_peer_sharing_policy AX_surfxml_peer_sharing_policy;
3243 #define A_surfxml_peer_sharing_policy AX_surfxml_peer_sharing_policy
3244 AT_surfxml_peer_power AX_surfxml_peer_power;
3245 #define A_surfxml_peer_power (surfxml_bufferstack + AX_surfxml_peer_power)
3246 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
3247 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
3248 AT_surfxml_config_id AX_surfxml_config_id;
3249 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
3250 AT_surfxml_bypassRoute_gw_src AX_surfxml_bypassRoute_gw_src;
3251 #define A_surfxml_bypassRoute_gw_src (surfxml_bufferstack + AX_surfxml_bypassRoute_gw_src)
3252 AT_surfxml_cluster_core AX_surfxml_cluster_core;
3253 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
3254 AT_surfxml_random_std_deviation AX_surfxml_random_std_deviation;
3255 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
3256 AT_surfxml_host_state_file AX_surfxml_host_state_file;
3257 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
3258 AT_surfxml_route_dst AX_surfxml_route_dst;
3259 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
3260 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
3261 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
3262 AT_surfxml_platform_version AX_surfxml_platform_version;
3263 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
3264
3265 /* XML state. */
3266 #ifdef FLEX_DEBUG
3267 # define ENTER(state)   debug_enter(state,#state)
3268 # define LEAVE          debug_leave()
3269 # define SET(state)     debug_set(state,#state)
3270   static void debug_enter(int, const char*);
3271   static void debug_leave(void);
3272   static void debug_set(int, const char*);
3273 #else
3274 # define ENTER(state)   (yy_push_state(state))
3275 # define LEAVE          (yy_pop_state())
3276 # define SET(state)     BEGIN(state)
3277 #endif
3278
3279 /* Generic actions. */
3280 #define SKIP    /*skip*/
3281 #define SUCCEED        CLEANUP; return 0
3282
3283 #define FAIL    return fail
3284 static int fail(const char*, ...);
3285
3286 enum {flexml_max_err_msg_size = 512};
3287 static char flexml_err_msg[flexml_max_err_msg_size];
3288 const char * surfxml_parse_err_msg()
3289 {
3290     return flexml_err_msg;
3291 }
3292 static void reset_surfxml_parse_err_msg()
3293 {
3294     flexml_err_msg[0] = '\0';
3295 }
3296
3297 /* Cleanup */
3298 static void cleanup(void);
3299 #define CLEANUP  cleanup()
3300
3301 /* Text buffer stack handling. */
3302 char *surfxml_bufferstack = NULL;
3303 static int blimit = FLEXML_BUFFERSTACKSIZE;
3304 static int bnext = 1;
3305
3306 static int *indexstack = NULL;
3307 static int ilimit = FLEXML_INDEXSTACKSIZE;
3308 static int inext = 1;
3309
3310 #define BUFFERSET(P)  (P = bnext)
3311 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
3312 #define BUFFERDONE    (BUFFERPUTC('\0'))
3313
3314 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
3315
3316 /* after this is called, there are at least 2 slots left in the stack */
3317 static int ck_blimit()
3318 {
3319      if (bnext >= blimit) {
3320          blimit += FLEXML_BUFFERSTACKSIZE + 2;
3321          {
3322              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
3323              assert(temp);
3324              surfxml_bufferstack = temp;
3325          }
3326      }
3327      return 0;
3328 }
3329
3330 /* after this is called, there are at least 2 slots left in the stack */
3331 static int ck_ilimit()
3332 {
3333      if (inext >= ilimit) {
3334          ilimit += FLEXML_INDEXSTACKSIZE + 2;
3335          {
3336              int *temp = (int *) realloc(indexstack, ilimit);
3337              assert(temp);
3338              indexstack = temp;
3339          }
3340      }
3341      return 0;
3342 }
3343
3344 #ifdef FLEXML_NEED_BUFFERLIT
3345 static void surfxml_bufferliteral(char c, int* pp, const char* text)
3346 {
3347   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
3348   assert(s <= e); BUFFERSET(*pp);
3349   while (++s<e) {
3350     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
3351     else BUFFERPUTC(*s);
3352   }
3353   BUFFERDONE;
3354 }
3355 #endif
3356
3357 static void pushbuffer(int p)
3358 {
3359     ck_ilimit();
3360     indexstack[inext++] = p;
3361     indexstack[inext++] = bnext;    
3362 }
3363
3364 static int popbuffer(void)
3365 {
3366     assert(inext >= 2);
3367     bnext = indexstack[--inext];
3368     return indexstack[--inext];
3369 }
3370
3371 /* General internal entities are `unput' back onto the input stream... */
3372 #define ENTITYTEXT(T) \
3373   { char *s = (T), *e = s+strlen(s);\
3374     while (--e >= s) { unput(*e); }}
3375
3376 /* Flex standard options. */
3377 #define YY_NO_INPUT 1
3378 /* Flex user-requested options. */
3379 /* XML character classes (currently restricted to ASCII). */
3380 /* "Common syntactic structures." */
3381 /* "Names and Tokens." */
3382 /* Miscellaneous. */
3383 /* Parser states (flex `exclusive start conditions'):
3384  *
3385  * PROLOG       the XML prolog of the document before <?xml...>
3386  * DOCTYPE      the XML prolog of the document after <?xml...>
3387  * EPILOG       after the root element
3388  * INCOMMENT    inside an XML comment <!--....-->
3389  * INPI         inside an XML PI <?...?>
3390  * VALUE1       inside a '...'-delimited literal
3391  * VALUE2       inside a "..."-delimited literal
3392  * CDATA        inside a <![CDATA[...] ]> section.
3393  * ROOT_<tag>   expect root element <tag>
3394  * AL_<tag>     inside the attribute list for <tag>
3395  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
3396  * IMPOSSIBLE   dummy to permit disabling rules; must be last
3397  */
3398
3399 /* State names. */
3400 const char* *surfxml_statenames=NULL;
3401
3402 #define INITIAL 0
3403 #define PROLOG 1
3404 #define DOCTYPE 2
3405 #define EPILOG 3
3406 #define INCOMMENT 4
3407 #define INPI 5
3408 #define VALUE1 6
3409 #define VALUE2 7
3410 #define CDATA 8
3411 #define ROOT_surfxml_platform 9
3412 #define AL_surfxml_platform 10
3413 #define S_surfxml_platform 11
3414 #define S_surfxml_platform_1 12
3415 #define S_surfxml_platform_2 13
3416 #define S_surfxml_platform_3 14
3417 #define S_surfxml_platform_4 15
3418 #define S_surfxml_platform_5 16
3419 #define S_surfxml_platform_6 17
3420 #define E_surfxml_platform 18
3421 #define AL_surfxml_trace 19
3422 #define IN_trace 20
3423 #define AL_surfxml_random 21
3424 #define S_surfxml_random 22
3425 #define S_surfxml_random_1 23
3426 #define S_surfxml_random_2 24
3427 #define E_surfxml_random 25
3428 #define AL_surfxml_trace_connect 26
3429 #define E_surfxml_trace_connect 27
3430 #define AL_surfxml_AS 28
3431 #define S_surfxml_AS 29
3432 #define S_surfxml_AS_1 30
3433 #define S_surfxml_AS_2 31
3434 #define S_surfxml_AS_3 32
3435 #define S_surfxml_AS_4 33
3436 #define S_surfxml_AS_5 34
3437 #define S_surfxml_AS_6 35
3438 #define S_surfxml_AS_7 36
3439 #define S_surfxml_AS_8 37
3440 #define S_surfxml_AS_9 38
3441 #define S_surfxml_AS_10 39
3442 #define S_surfxml_AS_11 40
3443 #define S_surfxml_AS_12 41
3444 #define S_surfxml_AS_13 42
3445 #define E_surfxml_AS 43
3446 #define AL_surfxml_host 44
3447 #define S_surfxml_host 45
3448 #define S_surfxml_host_1 46
3449 #define S_surfxml_host_2 47
3450 #define E_surfxml_host 48
3451 #define AL_surfxml_cluster 49
3452 #define E_surfxml_cluster 50
3453 #define AL_surfxml_peer 51
3454 #define E_surfxml_peer 52
3455 #define AL_surfxml_router 53
3456 #define E_surfxml_router 54
3457 #define AL_surfxml_link 55
3458 #define S_surfxml_link 56
3459 #define S_surfxml_link_1 57
3460 #define S_surfxml_link_2 58
3461 #define E_surfxml_link 59
3462 #define AL_surfxml_route 60
3463 #define S_surfxml_route 61
3464 #define S_surfxml_route_1 62
3465 #define S_surfxml_route_2 63
3466 #define E_surfxml_route 64
3467 #define AL_surfxml_ASroute 65
3468 #define S_surfxml_ASroute 66
3469 #define S_surfxml_ASroute_1 67
3470 #define S_surfxml_ASroute_2 68
3471 #define E_surfxml_ASroute 69
3472 #define AL_surfxml_link_ctn 70
3473 #define E_surfxml_link_ctn 71
3474 #define AL_surfxml_bypassRoute 72
3475 #define S_surfxml_bypassRoute 73
3476 #define S_surfxml_bypassRoute_1 74
3477 #define S_surfxml_bypassRoute_2 75
3478 #define E_surfxml_bypassRoute 76
3479 #define AL_surfxml_process 77
3480 #define S_surfxml_process 78
3481 #define S_surfxml_process_1 79
3482 #define S_surfxml_process_2 80
3483 #define E_surfxml_process 81
3484 #define AL_surfxml_argument 82
3485 #define E_surfxml_argument 83
3486 #define AL_surfxml_config 84
3487 #define S_surfxml_config 85
3488 #define S_surfxml_config_1 86
3489 #define S_surfxml_config_2 87
3490 #define E_surfxml_config 88
3491 #define AL_surfxml_prop 89
3492 #define E_surfxml_prop 90
3493 #define IMPOSSIBLE 91
3494
3495 #ifndef YY_NO_UNISTD_H
3496 /* Special case for "unistd.h", since it is non-ANSI. We include it way
3497  * down here because we want the user's section 1 to have been scanned first.
3498  * The user has a chance to override it with an option.
3499  */
3500 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
3501 #  ifndef __STRICT_ANSI__
3502 #    include <io.h>
3503 #    include <process.h>
3504 #  endif
3505 #else
3506 #  include <unistd.h>
3507 #endif
3508 #endif
3509
3510 #ifndef YY_EXTRA_TYPE
3511 #define YY_EXTRA_TYPE void *
3512 #endif
3513
3514 static int yy_init_globals (void );
3515
3516 /* Accessor methods to globals.
3517    These are made visible to non-reentrant scanners for convenience. */
3518
3519 int surf_parse_lex_destroy (void );
3520
3521 int surf_parse_get_debug (void );
3522
3523 void surf_parse_set_debug (int debug_flag  );
3524
3525 YY_EXTRA_TYPE surf_parse_get_extra (void );
3526
3527 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
3528
3529 FILE *surf_parse_get_in (void );
3530
3531 void surf_parse_set_in  (FILE * in_str  );
3532
3533 FILE *surf_parse_get_out (void );
3534
3535 void surf_parse_set_out  (FILE * out_str  );
3536
3537 int surf_parse_get_leng (void );
3538
3539 char *surf_parse_get_text (void );
3540
3541 int surf_parse_get_lineno (void );
3542
3543 void surf_parse_set_lineno (int line_number  );
3544
3545 /* Macros after this point can all be overridden by user definitions in
3546  * section 1.
3547  */
3548
3549 #ifndef YY_SKIP_YYWRAP
3550 #ifdef __cplusplus
3551 extern "C" int surf_parse_wrap (void );
3552 #else
3553 extern int surf_parse_wrap (void );
3554 #endif
3555 #endif
3556
3557 #ifndef yytext_ptr
3558 static void yy_flex_strncpy (char *,yyconst char *,int );
3559 #endif
3560
3561 #ifdef YY_NEED_STRLEN
3562 static int yy_flex_strlen (yyconst char * );
3563 #endif
3564
3565 #ifndef YY_NO_INPUT
3566
3567 #ifdef __cplusplus
3568 static int yyinput (void );
3569 #else
3570 static int input (void );
3571 #endif
3572
3573 #endif
3574
3575         static int yy_start_stack_ptr = 0;
3576         static int yy_start_stack_depth = 0;
3577         static int *yy_start_stack = NULL;
3578     
3579     static void yy_push_state (int new_state );
3580     
3581     static void yy_pop_state (void );
3582     
3583 /* Amount of stuff to slurp up with each read. */
3584 #ifndef YY_READ_BUF_SIZE
3585 #ifdef __ia64__
3586 /* On IA-64, the buffer size is 16k, not 8k */
3587 #define YY_READ_BUF_SIZE 16384
3588 #else
3589 #define YY_READ_BUF_SIZE 8192
3590 #endif /* __ia64__ */
3591 #endif
3592
3593 /* Copy whatever the last rule matched to the standard output. */
3594 #ifndef ECHO
3595 /* This used to be an fputs(), but since the string might contain NUL's,
3596  * we now use fwrite().
3597  */
3598 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
3599 #endif
3600
3601 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3602  * is returned in "result".
3603  */
3604 #ifndef YY_INPUT
3605 #define YY_INPUT(buf,result,max_size) \
3606         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3607                 { \
3608                 int c = '*'; \
3609                 size_t n; \
3610                 for ( n = 0; n < max_size && \
3611                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
3612                         buf[n] = (char) c; \
3613                 if ( c == '\n' ) \
3614                         buf[n++] = (char) c; \
3615                 if ( c == EOF && ferror( surf_parse_in ) ) \
3616                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
3617                 result = n; \
3618                 } \
3619         else \
3620                 { \
3621                 errno=0; \
3622                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
3623                         { \
3624                         if( errno != EINTR) \
3625                                 { \
3626                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3627                                 break; \
3628                                 } \
3629                         errno=0; \
3630                         clearerr(surf_parse_in); \
3631                         } \
3632                 }\
3633 \
3634
3635 #endif
3636
3637 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3638  * we don't want an extra ';' after the "return" because that will cause
3639  * some compilers to complain about unreachable statements.
3640  */
3641 #ifndef yyterminate
3642 #define yyterminate() return YY_NULL
3643 #endif
3644
3645 /* Number of entries by which start-condition stack grows. */
3646 #ifndef YY_START_STACK_INCR
3647 #define YY_START_STACK_INCR 25
3648 #endif
3649
3650 /* Report a fatal error. */
3651 #ifndef YY_FATAL_ERROR
3652 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3653 #endif
3654
3655 /* end tables serialization structures and prototypes */
3656
3657 /* Default declaration of generated scanner - a define so the user can
3658  * easily add parameters.
3659  */
3660 #ifndef YY_DECL
3661 #define YY_DECL_IS_OURS 1
3662
3663 extern int surf_parse_lex (void);
3664
3665 #define YY_DECL int surf_parse_lex (void)
3666 #endif /* !YY_DECL */
3667
3668 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
3669  * have been set up.
3670  */
3671 #ifndef YY_USER_ACTION
3672 #define YY_USER_ACTION
3673 #endif
3674
3675 /* Code executed at the end of each rule. */
3676 #ifndef YY_BREAK
3677 #define YY_BREAK break;
3678 #endif
3679
3680 #define YY_RULE_SETUP \
3681         YY_USER_ACTION
3682
3683 /** The main scanner function which does all the work.
3684  */
3685 YY_DECL
3686 {
3687         register yy_state_type yy_current_state;
3688         register char *yy_cp, *yy_bp;
3689         register int yy_act;
3690     
3691  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
3692  SET(PROLOG);
3693  reset_surfxml_parse_err_msg();
3694  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
3695  assert(surfxml_bufferstack);
3696  #ifdef FLEX_DEBUG
3697  {
3698      int i;
3699      for (i = 0; i < blimit; i++) {
3700          surfxml_bufferstack[i] = '\377';
3701      }
3702  }
3703  #endif
3704  surfxml_bufferstack[0] = '\0';
3705  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
3706  assert(indexstack);
3707  indexstack[0] = 0;
3708
3709   /* FleXML_init */
3710   bnext = inext = 1;
3711   surfxml_bufferliteral('\0', &bnext, "0.0");
3712   surfxml_bufferliteral('\0', &bnext, "1");
3713   surfxml_bufferliteral('\0', &bnext, "1.0");
3714   surfxml_bufferliteral('\0', &bnext, "1");
3715   surfxml_bufferliteral('\0', &bnext, "0.0");
3716   surfxml_bufferliteral('\0', &bnext, "-1.0");
3717   surfxml_bufferliteral('\0', &bnext, "-1.0");
3718   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
3719   surfxml_statenames[PROLOG] = NULL;
3720   surfxml_statenames[DOCTYPE] = NULL;
3721   surfxml_statenames[EPILOG] = NULL;
3722   surfxml_statenames[INCOMMENT] = NULL;
3723   surfxml_statenames[INPI] = NULL;
3724   surfxml_statenames[VALUE1] = NULL;
3725   surfxml_statenames[VALUE2] = NULL;
3726   surfxml_statenames[CDATA] = NULL;
3727   surfxml_statenames[ROOT_surfxml_platform] = NULL;
3728   surfxml_statenames[AL_surfxml_platform] = NULL;
3729   surfxml_statenames[S_surfxml_platform] = "platform";
3730   surfxml_statenames[S_surfxml_platform_1] = "platform";
3731   surfxml_statenames[S_surfxml_platform_2] = "platform";
3732   surfxml_statenames[S_surfxml_platform_3] = "platform";
3733   surfxml_statenames[S_surfxml_platform_4] = "platform";
3734   surfxml_statenames[S_surfxml_platform_5] = "platform";
3735   surfxml_statenames[S_surfxml_platform_6] = "platform";
3736   surfxml_statenames[E_surfxml_platform] = "platform";
3737   surfxml_statenames[AL_surfxml_trace] = NULL;
3738   surfxml_statenames[IN_trace] = "trace";
3739   surfxml_statenames[AL_surfxml_random] = NULL;
3740   surfxml_statenames[S_surfxml_random] = "random";
3741   surfxml_statenames[S_surfxml_random_1] = "random";
3742   surfxml_statenames[S_surfxml_random_2] = "random";
3743   surfxml_statenames[E_surfxml_random] = "random";
3744   surfxml_statenames[AL_surfxml_trace_connect] = NULL;
3745   surfxml_statenames[E_surfxml_trace_connect] = "trace_connect";
3746   surfxml_statenames[AL_surfxml_AS] = NULL;
3747   surfxml_statenames[S_surfxml_AS] = "AS";
3748   surfxml_statenames[S_surfxml_AS_1] = "AS";
3749   surfxml_statenames[S_surfxml_AS_2] = "AS";
3750   surfxml_statenames[S_surfxml_AS_3] = "AS";
3751   surfxml_statenames[S_surfxml_AS_4] = "AS";
3752   surfxml_statenames[S_surfxml_AS_5] = "AS";
3753   surfxml_statenames[S_surfxml_AS_6] = "AS";
3754   surfxml_statenames[S_surfxml_AS_7] = "AS";
3755   surfxml_statenames[S_surfxml_AS_8] = "AS";
3756   surfxml_statenames[S_surfxml_AS_9] = "AS";
3757   surfxml_statenames[S_surfxml_AS_10] = "AS";
3758   surfxml_statenames[S_surfxml_AS_11] = "AS";
3759   surfxml_statenames[S_surfxml_AS_12] = "AS";
3760   surfxml_statenames[S_surfxml_AS_13] = "AS";
3761   surfxml_statenames[E_surfxml_AS] = "AS";
3762   surfxml_statenames[AL_surfxml_host] = NULL;
3763   surfxml_statenames[S_surfxml_host] = "host";
3764   surfxml_statenames[S_surfxml_host_1] = "host";
3765   surfxml_statenames[S_surfxml_host_2] = "host";
3766   surfxml_statenames[E_surfxml_host] = "host";
3767   surfxml_statenames[AL_surfxml_cluster] = NULL;
3768   surfxml_statenames[E_surfxml_cluster] = "cluster";
3769   surfxml_statenames[AL_surfxml_peer] = NULL;
3770   surfxml_statenames[E_surfxml_peer] = "peer";
3771   surfxml_statenames[AL_surfxml_router] = NULL;
3772   surfxml_statenames[E_surfxml_router] = "router";
3773   surfxml_statenames[AL_surfxml_link] = NULL;
3774   surfxml_statenames[S_surfxml_link] = "link";
3775   surfxml_statenames[S_surfxml_link_1] = "link";
3776   surfxml_statenames[S_surfxml_link_2] = "link";
3777   surfxml_statenames[E_surfxml_link] = "link";
3778   surfxml_statenames[AL_surfxml_route] = NULL;
3779   surfxml_statenames[S_surfxml_route] = "route";
3780   surfxml_statenames[S_surfxml_route_1] = "route";
3781   surfxml_statenames[S_surfxml_route_2] = "route";
3782   surfxml_statenames[E_surfxml_route] = "route";
3783   surfxml_statenames[AL_surfxml_ASroute] = NULL;
3784   surfxml_statenames[S_surfxml_ASroute] = "ASroute";
3785   surfxml_statenames[S_surfxml_ASroute_1] = "ASroute";
3786   surfxml_statenames[S_surfxml_ASroute_2] = "ASroute";
3787   surfxml_statenames[E_surfxml_ASroute] = "ASroute";
3788   surfxml_statenames[AL_surfxml_link_ctn] = NULL;
3789   surfxml_statenames[E_surfxml_link_ctn] = "link_ctn";
3790   surfxml_statenames[AL_surfxml_bypassRoute] = NULL;
3791   surfxml_statenames[S_surfxml_bypassRoute] = "bypassRoute";
3792   surfxml_statenames[S_surfxml_bypassRoute_1] = "bypassRoute";
3793   surfxml_statenames[S_surfxml_bypassRoute_2] = "bypassRoute";
3794   surfxml_statenames[E_surfxml_bypassRoute] = "bypassRoute";
3795   surfxml_statenames[AL_surfxml_process] = NULL;
3796   surfxml_statenames[S_surfxml_process] = "process";
3797   surfxml_statenames[S_surfxml_process_1] = "process";
3798   surfxml_statenames[S_surfxml_process_2] = "process";
3799   surfxml_statenames[E_surfxml_process] = "process";
3800   surfxml_statenames[AL_surfxml_argument] = NULL;
3801   surfxml_statenames[E_surfxml_argument] = "argument";
3802   surfxml_statenames[AL_surfxml_config] = NULL;
3803   surfxml_statenames[S_surfxml_config] = "config";
3804   surfxml_statenames[S_surfxml_config_1] = "config";
3805   surfxml_statenames[S_surfxml_config_2] = "config";
3806   surfxml_statenames[E_surfxml_config] = "config";
3807   surfxml_statenames[AL_surfxml_prop] = NULL;
3808   surfxml_statenames[E_surfxml_prop] = "prop";
3809   }
3810
3811  /* COMMENTS and PIs: handled uniformly for efficiency. */
3812
3813         if ( !(yy_init) )
3814                 {
3815                 (yy_init) = 1;
3816
3817 #ifdef YY_USER_INIT
3818                 YY_USER_INIT;
3819 #endif
3820
3821                 if ( ! (yy_start) )
3822                         (yy_start) = 1; /* first start state */
3823
3824                 if ( ! surf_parse_in )
3825                         surf_parse_in = stdin;
3826
3827                 if ( ! surf_parse_out )
3828                         surf_parse_out = stdout;
3829
3830                 if ( ! YY_CURRENT_BUFFER ) {
3831                         surf_parse_ensure_buffer_stack ();
3832                         YY_CURRENT_BUFFER_LVALUE =
3833                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
3834                 }
3835
3836                 surf_parse__load_buffer_state( );
3837                 }
3838
3839         while ( 1 )             /* loops until end-of-file is reached */
3840                 {
3841                 yy_cp = (yy_c_buf_p);
3842
3843                 /* Support of surf_parse_text. */
3844                 *yy_cp = (yy_hold_char);
3845
3846                 /* yy_bp points to the position in yy_ch_buf of the start of
3847                  * the current run.
3848                  */
3849                 yy_bp = yy_cp;
3850
3851                 yy_current_state = (yy_start);
3852 yy_match:
3853                 do
3854                         {
3855                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3856                         if ( yy_accept[yy_current_state] )
3857                                 {
3858                                 (yy_last_accepting_state) = yy_current_state;
3859                                 (yy_last_accepting_cpos) = yy_cp;
3860                                 }
3861                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3862                                 {
3863                                 yy_current_state = (int) yy_def[yy_current_state];
3864                                 if ( yy_current_state >= 2221 )
3865                                         yy_c = yy_meta[(unsigned int) yy_c];
3866                                 }
3867                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3868                         ++yy_cp;
3869                         }
3870                 while ( yy_base[yy_current_state] != 7748 );
3871
3872 yy_find_action:
3873                 yy_act = yy_accept[yy_current_state];
3874                 if ( yy_act == 0 )
3875                         { /* have to back up */
3876                         yy_cp = (yy_last_accepting_cpos);
3877                         yy_current_state = (yy_last_accepting_state);
3878                         yy_act = yy_accept[yy_current_state];
3879                         }
3880
3881                 YY_DO_BEFORE_ACTION;
3882
3883                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
3884                         {
3885                         int yyl;
3886                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
3887                                 if ( surf_parse_text[yyl] == '\n' )
3888                                            
3889     surf_parse_lineno++;
3890 ;
3891                         }
3892
3893 do_action:      /* This label is used only to access EOF actions. */
3894
3895                 switch ( yy_act )
3896         { /* beginning of action switch */
3897                         case 0: /* must back up */
3898                         /* undo the effects of YY_DO_BEFORE_ACTION */
3899                         *yy_cp = (yy_hold_char);
3900                         yy_cp = (yy_last_accepting_cpos);
3901                         yy_current_state = (yy_last_accepting_state);
3902                         goto yy_find_action;
3903
3904 case 1:
3905 YY_RULE_SETUP
3906 ENTER(INCOMMENT);
3907         YY_BREAK
3908 case 2:
3909 YY_RULE_SETUP
3910 ENTER(INPI);
3911         YY_BREAK
3912
3913 case 3:
3914 YY_RULE_SETUP
3915 LEAVE;
3916         YY_BREAK
3917 case 4:
3918 case 5:
3919 case 6:
3920 /* rule 6 can match eol */
3921 YY_RULE_SETUP
3922 SKIP;
3923         YY_BREAK
3924 case YY_STATE_EOF(INCOMMENT):
3925 FAIL("EOF in comment.");
3926         YY_BREAK
3927
3928 case 7:
3929 YY_RULE_SETUP
3930 LEAVE;
3931         YY_BREAK
3932 case 8:
3933 case 9:
3934 /* rule 9 can match eol */
3935 YY_RULE_SETUP
3936 SKIP;
3937         YY_BREAK
3938 case YY_STATE_EOF(INPI):
3939 FAIL("EOF in PI (processing instruction).");
3940         YY_BREAK
3941
3942 /* SPACES: skipped uniformly */
3943 case 10:
3944 /* rule 10 can match eol */
3945 YY_RULE_SETUP
3946 SKIP;
3947         YY_BREAK
3948 /* PROLOG: determine root element and process it. */
3949
3950 case 11:
3951 /* rule 11 can match eol */
3952 YY_RULE_SETUP
3953 SET(DOCTYPE); 
3954         YY_BREAK
3955 case 12:
3956 /* rule 12 can match eol */
3957 YY_RULE_SETUP
3958 FAIL("Bad declaration %s.",surf_parse_text);
3959         YY_BREAK
3960
3961 case 13:
3962 /* rule 13 can match eol */
3963 YY_RULE_SETUP
3964 SET(ROOT_surfxml_platform);
3965         YY_BREAK
3966 case 14:
3967 /* rule 14 can match eol */
3968 YY_RULE_SETUP
3969 FAIL("Bad declaration %s.",surf_parse_text);
3970         YY_BREAK
3971 case 15:
3972 YY_RULE_SETUP
3973 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
3974         YY_BREAK
3975 case YY_STATE_EOF(PROLOG):
3976 case YY_STATE_EOF(DOCTYPE):
3977 FAIL("EOF in prolog.");
3978         YY_BREAK
3979
3980 /* RULES DERIVED FROM DTD. */
3981 /* <!-- Small DTD for SURF based tools. -->  */
3982 case 16:
3983 /* rule 16 can match eol */
3984 YY_RULE_SETUP
3985 FAIL("Starting tag <platform> is not allowed here.");
3986         YY_BREAK
3987 case 17:
3988 /* rule 17 can match eol */
3989 YY_RULE_SETUP
3990 {
3991   AX_surfxml_platform_version = 1;
3992   ENTER(AL_surfxml_platform); pushbuffer(0);
3993   }
3994         YY_BREAK
3995
3996 case 18:
3997 /* rule 18 can match eol */
3998 YY_RULE_SETUP
3999 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
4000         YY_BREAK
4001 case 19:
4002 /* rule 19 can match eol */
4003 YY_RULE_SETUP
4004 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
4005         YY_BREAK
4006 case 20:
4007 YY_RULE_SETUP
4008 {
4009   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
4010  }
4011         YY_BREAK
4012 case 21:
4013 YY_RULE_SETUP
4014 {
4015   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
4016   switch (YY_START) {
4017    case ROOT_surfxml_platform: SET(EPILOG); break;
4018   }
4019  }
4020         YY_BREAK
4021 case 22:
4022 YY_RULE_SETUP
4023 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
4024         YY_BREAK
4025 case 23:
4026 YY_RULE_SETUP
4027 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
4028         YY_BREAK
4029 case YY_STATE_EOF(AL_surfxml_platform):
4030 FAIL("EOF in attribute list of `platform' element.");
4031         YY_BREAK
4032
4033 case 24:
4034 /* rule 24 can match eol */
4035 YY_RULE_SETUP
4036 {
4037   LEAVE;
4038   ETag_surfxml_platform();
4039   popbuffer(); /* attribute */
4040   switch (YY_START) {
4041    case ROOT_surfxml_platform: SET(EPILOG); break;
4042   }
4043  }
4044         YY_BREAK
4045 case 25:
4046 /* rule 25 can match eol */
4047 YY_RULE_SETUP
4048 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
4049         YY_BREAK
4050 case 26:
4051 YY_RULE_SETUP
4052 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
4053         YY_BREAK
4054 case YY_STATE_EOF(S_surfxml_platform_2):
4055 case YY_STATE_EOF(S_surfxml_platform_1):
4056 case YY_STATE_EOF(S_surfxml_platform):
4057 case YY_STATE_EOF(S_surfxml_platform_4):
4058 case YY_STATE_EOF(S_surfxml_platform_6):
4059 case YY_STATE_EOF(E_surfxml_platform):
4060 FAIL("Premature EOF: `</platform>' expected.");
4061         YY_BREAK
4062
4063 case 27:
4064 /* rule 27 can match eol */
4065 YY_RULE_SETUP
4066 FAIL("Starting tag <trace> is not allowed here.");
4067         YY_BREAK
4068 case 28:
4069 /* rule 28 can match eol */
4070 YY_RULE_SETUP
4071 {
4072   AX_surfxml_trace_id = 0;
4073   AX_surfxml_trace_file = 0;
4074   AX_surfxml_trace_periodicity = 0;
4075   ENTER(AL_surfxml_trace); pushbuffer(0);
4076   }
4077         YY_BREAK
4078
4079 case 29:
4080 /* rule 29 can match eol */
4081 YY_RULE_SETUP
4082 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
4083         YY_BREAK
4084 case 30:
4085 /* rule 30 can match eol */
4086 YY_RULE_SETUP
4087 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
4088         YY_BREAK
4089 case 31:
4090 /* rule 31 can match eol */
4091 YY_RULE_SETUP
4092 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
4093         YY_BREAK
4094 case 32:
4095 /* rule 32 can match eol */
4096 YY_RULE_SETUP
4097 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
4098         YY_BREAK
4099 case 33:
4100 /* rule 33 can match eol */
4101 YY_RULE_SETUP
4102 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
4103         YY_BREAK
4104 case 34:
4105 /* rule 34 can match eol */
4106 YY_RULE_SETUP
4107 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
4108         YY_BREAK
4109 case 35:
4110 YY_RULE_SETUP
4111 {
4112   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
4113   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
4114   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
4115  }
4116         YY_BREAK
4117 case 36:
4118 YY_RULE_SETUP
4119 {
4120   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
4121   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
4122   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
4123   switch (YY_START) {
4124    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4125    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4126    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4127    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4128    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4129    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4130   }
4131  }
4132         YY_BREAK
4133 case 37:
4134 YY_RULE_SETUP
4135 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
4136         YY_BREAK
4137 case 38:
4138 YY_RULE_SETUP
4139 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
4140         YY_BREAK
4141 case YY_STATE_EOF(AL_surfxml_trace):
4142 FAIL("EOF in attribute list of `trace' element.");
4143         YY_BREAK
4144
4145 case 39:
4146 /* rule 39 can match eol */
4147 YY_RULE_SETUP
4148 {
4149   LEAVE;
4150   BUFFERDONE;
4151   ETag_surfxml_trace();
4152   surfxml_pcdata_ix = popbuffer();
4153   popbuffer(); /* attribute */
4154   switch (YY_START) {
4155    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4156    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4157    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4158    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4159    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4160    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4161   }
4162  }
4163         YY_BREAK
4164 case 40:
4165 /* rule 40 can match eol */
4166 YY_RULE_SETUP
4167 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
4168         YY_BREAK
4169 case YY_STATE_EOF(IN_trace):
4170 FAIL("Premature EOF: `</trace>' expected.");
4171         YY_BREAK
4172
4173 case 41:
4174 /* rule 41 can match eol */
4175 YY_RULE_SETUP
4176 FAIL("Starting tag <random> is not allowed here.");
4177         YY_BREAK
4178 case 42:
4179 /* rule 42 can match eol */
4180 YY_RULE_SETUP
4181 {
4182   AX_surfxml_random_id = 0;
4183   AX_surfxml_random_min = 0;
4184   AX_surfxml_random_max = 0;
4185   AX_surfxml_random_mean = 0;
4186   AX_surfxml_random_std_deviation = 0;
4187   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
4188   ENTER(AL_surfxml_random); pushbuffer(0);
4189   }
4190         YY_BREAK
4191
4192 case 43:
4193 /* rule 43 can match eol */
4194 YY_RULE_SETUP
4195 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
4196         YY_BREAK
4197 case 44:
4198 /* rule 44 can match eol */
4199 YY_RULE_SETUP
4200 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
4201         YY_BREAK
4202 case 45:
4203 /* rule 45 can match eol */
4204 YY_RULE_SETUP
4205 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
4206         YY_BREAK
4207 case 46:
4208 /* rule 46 can match eol */
4209 YY_RULE_SETUP
4210 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
4211         YY_BREAK
4212 case 47:
4213 /* rule 47 can match eol */
4214 YY_RULE_SETUP
4215 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
4216         YY_BREAK
4217 case 48:
4218 /* rule 48 can match eol */
4219 YY_RULE_SETUP
4220 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
4221         YY_BREAK
4222 case 49:
4223 /* rule 49 can match eol */
4224 YY_RULE_SETUP
4225 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
4226         YY_BREAK
4227 case 50:
4228 /* rule 50 can match eol */
4229 YY_RULE_SETUP
4230 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
4231         YY_BREAK
4232 case 51:
4233 /* rule 51 can match eol */
4234 YY_RULE_SETUP
4235 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std_deviation);
4236         YY_BREAK
4237 case 52:
4238 /* rule 52 can match eol */
4239 YY_RULE_SETUP
4240 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std_deviation);
4241         YY_BREAK
4242 case 53:
4243 /* rule 53 can match eol */
4244 case 54:
4245 /* rule 54 can match eol */
4246 YY_RULE_SETUP
4247 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
4248         YY_BREAK
4249 case 55:
4250 /* rule 55 can match eol */
4251 case 56:
4252 /* rule 56 can match eol */
4253 YY_RULE_SETUP
4254 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
4255         YY_BREAK
4256 case 57:
4257 YY_RULE_SETUP
4258 {
4259   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
4260   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
4261   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
4262   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
4263   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
4264   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(S_surfxml_random);
4265  }
4266         YY_BREAK
4267 case 58:
4268 YY_RULE_SETUP
4269 {
4270   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
4271   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
4272   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
4273   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
4274   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
4275   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
4276   switch (YY_START) {
4277    case S_surfxml_config: SET(E_surfxml_config); break;
4278   }
4279  }
4280         YY_BREAK
4281 case 59:
4282 YY_RULE_SETUP
4283 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
4284         YY_BREAK
4285 case 60:
4286 YY_RULE_SETUP
4287 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
4288         YY_BREAK
4289 case YY_STATE_EOF(AL_surfxml_random):
4290 FAIL("EOF in attribute list of `random' element.");
4291         YY_BREAK
4292
4293 case 61:
4294 /* rule 61 can match eol */
4295 YY_RULE_SETUP
4296 {
4297   LEAVE;
4298   ETag_surfxml_random();
4299   popbuffer(); /* attribute */
4300   switch (YY_START) {
4301    case S_surfxml_config: SET(E_surfxml_config); break;
4302   }
4303  }
4304         YY_BREAK
4305 case 62:
4306 /* rule 62 can match eol */
4307 YY_RULE_SETUP
4308 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
4309         YY_BREAK
4310 case 63:
4311 YY_RULE_SETUP
4312 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
4313         YY_BREAK
4314 case YY_STATE_EOF(S_surfxml_random_2):
4315 case YY_STATE_EOF(S_surfxml_random):
4316 case YY_STATE_EOF(E_surfxml_random):
4317 FAIL("Premature EOF: `</random>' expected.");
4318         YY_BREAK
4319
4320 case 64:
4321 /* rule 64 can match eol */
4322 YY_RULE_SETUP
4323 FAIL("Starting tag <trace_connect> is not allowed here.");
4324         YY_BREAK
4325 case 65:
4326 /* rule 65 can match eol */
4327 YY_RULE_SETUP
4328 {
4329   AX_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
4330   AX_surfxml_trace_connect_trace = 0;
4331   AX_surfxml_trace_connect_element = 0;
4332   ENTER(AL_surfxml_trace_connect); pushbuffer(0);
4333   }
4334         YY_BREAK
4335
4336 case 66:
4337 /* rule 66 can match eol */
4338 case 67:
4339 /* rule 67 can match eol */
4340 YY_RULE_SETUP
4341 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
4342         YY_BREAK
4343 case 68:
4344 /* rule 68 can match eol */
4345 case 69:
4346 /* rule 69 can match eol */
4347 YY_RULE_SETUP
4348 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_POWER;
4349         YY_BREAK
4350 case 70:
4351 /* rule 70 can match eol */
4352 case 71:
4353 /* rule 71 can match eol */
4354 YY_RULE_SETUP
4355 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_LINK_AVAIL;
4356         YY_BREAK
4357 case 72:
4358 /* rule 72 can match eol */
4359 case 73:
4360 /* rule 73 can match eol */
4361 YY_RULE_SETUP
4362 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_BANDWIDTH;
4363         YY_BREAK
4364 case 74:
4365 /* rule 74 can match eol */
4366 case 75:
4367 /* rule 75 can match eol */
4368 YY_RULE_SETUP
4369 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_LATENCY;
4370         YY_BREAK
4371 case 76:
4372 /* rule 76 can match eol */
4373 YY_RULE_SETUP
4374 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_trace);
4375         YY_BREAK
4376 case 77:
4377 /* rule 77 can match eol */
4378 YY_RULE_SETUP
4379 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_trace);
4380         YY_BREAK
4381 case 78:
4382 /* rule 78 can match eol */
4383 YY_RULE_SETUP
4384 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_element);
4385         YY_BREAK
4386 case 79:
4387 /* rule 79 can match eol */
4388 YY_RULE_SETUP
4389 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_element);
4390         YY_BREAK
4391 case 80:
4392 YY_RULE_SETUP
4393 {
4394   if (!AX_surfxml_trace_connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
4395   if (!AX_surfxml_trace_connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
4396   LEAVE; STag_surfxml_trace_connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace_connect);
4397  }
4398         YY_BREAK
4399 case 81:
4400 YY_RULE_SETUP
4401 {
4402   if (!AX_surfxml_trace_connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
4403   if (!AX_surfxml_trace_connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
4404   LEAVE; STag_surfxml_trace_connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace_connect(); popbuffer(); /* attribute */
4405   switch (YY_START) {
4406    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4407    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4408    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4409    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4410    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4411    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4412   }
4413  }
4414         YY_BREAK
4415 case 82:
4416 YY_RULE_SETUP
4417 FAIL("Unexpected character `%c' in attribute list of trace_connect element.", surf_parse_text[0]);
4418         YY_BREAK
4419 case 83:
4420 YY_RULE_SETUP
4421 FAIL("Bad attribute `%s' in `trace_connect' element start tag.",surf_parse_text);
4422         YY_BREAK
4423 case YY_STATE_EOF(AL_surfxml_trace_connect):
4424 FAIL("EOF in attribute list of `trace_connect' element.");
4425         YY_BREAK
4426
4427 case 84:
4428 /* rule 84 can match eol */
4429 YY_RULE_SETUP
4430 {
4431   LEAVE;
4432   ETag_surfxml_trace_connect();
4433   popbuffer(); /* attribute */
4434   switch (YY_START) {
4435    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4436    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4437    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4438    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4439    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4440    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4441   }
4442  }
4443         YY_BREAK
4444 case 85:
4445 /* rule 85 can match eol */
4446 YY_RULE_SETUP
4447 FAIL("Unexpected end-tag `%s': `</trace_connect>' expected.",surf_parse_text);
4448         YY_BREAK
4449 case 86:
4450 YY_RULE_SETUP
4451 FAIL("Unexpected character `%c': `</trace_connect>' expected.",surf_parse_text[0]);
4452         YY_BREAK
4453 case YY_STATE_EOF(E_surfxml_trace_connect):
4454 FAIL("Premature EOF: `</trace_connect>' expected.");
4455         YY_BREAK
4456
4457 case 87:
4458 /* rule 87 can match eol */
4459 YY_RULE_SETUP
4460 FAIL("Starting tag <AS> is not allowed here.");
4461         YY_BREAK
4462 case 88:
4463 /* rule 88 can match eol */
4464 YY_RULE_SETUP
4465 {
4466   AX_surfxml_AS_id = 0;
4467   AX_surfxml_AS_routing = 0;
4468   ENTER(AL_surfxml_AS); pushbuffer(0);
4469   }
4470         YY_BREAK
4471
4472 case 89:
4473 /* rule 89 can match eol */
4474 YY_RULE_SETUP
4475 ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
4476         YY_BREAK
4477 case 90:
4478 /* rule 90 can match eol */
4479 YY_RULE_SETUP
4480 ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
4481         YY_BREAK
4482 case 91:
4483 /* rule 91 can match eol */
4484 YY_RULE_SETUP
4485 ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_routing);
4486         YY_BREAK
4487 case 92:
4488 /* rule 92 can match eol */
4489 YY_RULE_SETUP
4490 ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_routing);
4491         YY_BREAK
4492 case 93:
4493 YY_RULE_SETUP
4494 {
4495   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
4496   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
4497   LEAVE; STag_surfxml_AS();surfxml_pcdata_ix = 0; ENTER(S_surfxml_AS);
4498  }
4499         YY_BREAK
4500 case 94:
4501 YY_RULE_SETUP
4502 {
4503   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
4504   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
4505   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
4506   switch (YY_START) {
4507    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4508    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4509   }
4510  }
4511         YY_BREAK
4512 case 95:
4513 YY_RULE_SETUP
4514 FAIL("Unexpected character `%c' in attribute list of AS element.", surf_parse_text[0]);
4515         YY_BREAK
4516 case 96:
4517 YY_RULE_SETUP
4518 FAIL("Bad attribute `%s' in `AS' element start tag.",surf_parse_text);
4519         YY_BREAK
4520 case YY_STATE_EOF(AL_surfxml_AS):
4521 FAIL("EOF in attribute list of `AS' element.");
4522         YY_BREAK
4523
4524 case 97:
4525 /* rule 97 can match eol */
4526 YY_RULE_SETUP
4527 {
4528   LEAVE;
4529   ETag_surfxml_AS();
4530   popbuffer(); /* attribute */
4531   switch (YY_START) {
4532    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4533    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4534   }
4535  }
4536         YY_BREAK
4537 case 98:
4538 /* rule 98 can match eol */
4539 YY_RULE_SETUP
4540 FAIL("Unexpected end-tag `%s': `</AS>' expected.",surf_parse_text);
4541         YY_BREAK
4542 case 99:
4543 YY_RULE_SETUP
4544 FAIL("Unexpected character `%c': `</AS>' expected.",surf_parse_text[0]);
4545         YY_BREAK
4546 case YY_STATE_EOF(S_surfxml_AS_1):
4547 case YY_STATE_EOF(S_surfxml_AS_9):
4548 case YY_STATE_EOF(S_surfxml_AS_11):
4549 case YY_STATE_EOF(S_surfxml_AS_6):
4550 case YY_STATE_EOF(E_surfxml_AS):
4551 case YY_STATE_EOF(S_surfxml_AS_3):
4552 case YY_STATE_EOF(S_surfxml_AS_13):
4553 case YY_STATE_EOF(S_surfxml_AS_8):
4554 case YY_STATE_EOF(S_surfxml_AS):
4555 case YY_STATE_EOF(S_surfxml_AS_4):
4556 FAIL("Premature EOF: `</AS>' expected.");
4557         YY_BREAK
4558
4559 case 100:
4560 /* rule 100 can match eol */
4561 YY_RULE_SETUP
4562 FAIL("Starting tag <host> is not allowed here.");
4563         YY_BREAK
4564 case 101:
4565 /* rule 101 can match eol */
4566 YY_RULE_SETUP
4567 {
4568   AX_surfxml_host_id = 0;
4569   AX_surfxml_host_power = 0;
4570   AX_surfxml_host_core = 5;
4571   AX_surfxml_host_availability = 7;
4572   AX_surfxml_host_availability_file = 0;
4573   AX_surfxml_host_state = A_surfxml_host_state_ON;
4574   AX_surfxml_host_state_file = 0;
4575   AX_surfxml_host_coordinates = 0;
4576   ENTER(AL_surfxml_host); pushbuffer(0);
4577   }
4578         YY_BREAK
4579
4580 case 102:
4581 /* rule 102 can match eol */
4582 YY_RULE_SETUP
4583 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
4584         YY_BREAK
4585 case 103:
4586 /* rule 103 can match eol */
4587 YY_RULE_SETUP
4588 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
4589         YY_BREAK
4590 case 104:
4591 /* rule 104 can match eol */
4592 YY_RULE_SETUP
4593 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
4594         YY_BREAK
4595 case 105:
4596 /* rule 105 can match eol */
4597 YY_RULE_SETUP
4598 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
4599         YY_BREAK
4600 case 106:
4601 /* rule 106 can match eol */
4602 YY_RULE_SETUP
4603 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
4604         YY_BREAK
4605 case 107:
4606 /* rule 107 can match eol */
4607 YY_RULE_SETUP
4608 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
4609         YY_BREAK
4610 case 108:
4611 /* rule 108 can match eol */
4612 YY_RULE_SETUP
4613 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
4614         YY_BREAK
4615 case 109:
4616 /* rule 109 can match eol */
4617 YY_RULE_SETUP
4618 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
4619         YY_BREAK
4620 case 110:
4621 /* rule 110 can match eol */
4622 YY_RULE_SETUP
4623 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
4624         YY_BREAK
4625 case 111:
4626 /* rule 111 can match eol */
4627 YY_RULE_SETUP
4628 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
4629         YY_BREAK
4630 case 112:
4631 /* rule 112 can match eol */
4632 case 113:
4633 /* rule 113 can match eol */
4634 YY_RULE_SETUP
4635 A_surfxml_host_state = A_surfxml_host_state_ON;
4636         YY_BREAK
4637 case 114:
4638 /* rule 114 can match eol */
4639 case 115:
4640 /* rule 115 can match eol */
4641 YY_RULE_SETUP
4642 A_surfxml_host_state = A_surfxml_host_state_OFF;
4643         YY_BREAK
4644 case 116:
4645 /* rule 116 can match eol */
4646 YY_RULE_SETUP
4647 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
4648         YY_BREAK
4649 case 117:
4650 /* rule 117 can match eol */
4651 YY_RULE_SETUP
4652 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
4653         YY_BREAK
4654 case 118:
4655 /* rule 118 can match eol */
4656 YY_RULE_SETUP
4657 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
4658         YY_BREAK
4659 case 119:
4660 /* rule 119 can match eol */
4661 YY_RULE_SETUP
4662 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
4663         YY_BREAK
4664 case 120:
4665 YY_RULE_SETUP
4666 {
4667   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
4668   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
4669   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
4670  }
4671         YY_BREAK
4672 case 121:
4673 YY_RULE_SETUP
4674 {
4675   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
4676   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
4677   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
4678   switch (YY_START) {
4679    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4680   }
4681  }
4682         YY_BREAK
4683 case 122:
4684 YY_RULE_SETUP
4685 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
4686         YY_BREAK
4687 case 123:
4688 YY_RULE_SETUP
4689 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
4690         YY_BREAK
4691 case YY_STATE_EOF(AL_surfxml_host):
4692 FAIL("EOF in attribute list of `host' element.");
4693         YY_BREAK
4694
4695 case 124:
4696 /* rule 124 can match eol */
4697 YY_RULE_SETUP
4698 {
4699   LEAVE;
4700   ETag_surfxml_host();
4701   popbuffer(); /* attribute */
4702   switch (YY_START) {
4703    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4704   }
4705  }
4706         YY_BREAK
4707 case 125:
4708 /* rule 125 can match eol */
4709 YY_RULE_SETUP
4710 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
4711         YY_BREAK
4712 case 126:
4713 YY_RULE_SETUP
4714 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
4715         YY_BREAK
4716 case YY_STATE_EOF(S_surfxml_host):
4717 case YY_STATE_EOF(E_surfxml_host):
4718 case YY_STATE_EOF(S_surfxml_host_2):
4719 FAIL("Premature EOF: `</host>' expected.");
4720         YY_BREAK
4721
4722 case 127:
4723 /* rule 127 can match eol */
4724 YY_RULE_SETUP
4725 FAIL("Starting tag <cluster> is not allowed here.");
4726         YY_BREAK
4727 case 128:
4728 /* rule 128 can match eol */
4729 YY_RULE_SETUP
4730 {
4731   AX_surfxml_cluster_id = 0;
4732   AX_surfxml_cluster_prefix = 0;
4733   AX_surfxml_cluster_suffix = 0;
4734   AX_surfxml_cluster_radical = 0;
4735   AX_surfxml_cluster_power = 0;
4736   AX_surfxml_cluster_core = 11;
4737   AX_surfxml_cluster_bw = 0;
4738   AX_surfxml_cluster_lat = 0;
4739   AX_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_SHARED;
4740   AX_surfxml_cluster_bb_bw = 0;
4741   AX_surfxml_cluster_bb_lat = 0;
4742   AX_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
4743   ENTER(AL_surfxml_cluster); pushbuffer(0);
4744   }
4745         YY_BREAK
4746
4747 case 129:
4748 /* rule 129 can match eol */
4749 YY_RULE_SETUP
4750 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
4751         YY_BREAK
4752 case 130:
4753 /* rule 130 can match eol */
4754 YY_RULE_SETUP
4755 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
4756         YY_BREAK
4757 case 131:
4758 /* rule 131 can match eol */
4759 YY_RULE_SETUP
4760 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
4761         YY_BREAK
4762 case 132:
4763 /* rule 132 can match eol */
4764 YY_RULE_SETUP
4765 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
4766         YY_BREAK
4767 case 133:
4768 /* rule 133 can match eol */
4769 YY_RULE_SETUP
4770 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
4771         YY_BREAK
4772 case 134:
4773 /* rule 134 can match eol */
4774 YY_RULE_SETUP
4775 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
4776         YY_BREAK
4777 case 135:
4778 /* rule 135 can match eol */
4779 YY_RULE_SETUP
4780 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
4781         YY_BREAK
4782 case 136:
4783 /* rule 136 can match eol */
4784 YY_RULE_SETUP
4785 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
4786         YY_BREAK
4787 case 137:
4788 /* rule 137 can match eol */
4789 YY_RULE_SETUP
4790 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
4791         YY_BREAK
4792 case 138:
4793 /* rule 138 can match eol */
4794 YY_RULE_SETUP
4795 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
4796         YY_BREAK
4797 case 139:
4798 /* rule 139 can match eol */
4799 YY_RULE_SETUP
4800 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
4801         YY_BREAK
4802 case 140:
4803 /* rule 140 can match eol */
4804 YY_RULE_SETUP
4805 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
4806         YY_BREAK
4807 case 141:
4808 /* rule 141 can match eol */
4809 YY_RULE_SETUP
4810 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
4811         YY_BREAK
4812 case 142:
4813 /* rule 142 can match eol */
4814 YY_RULE_SETUP
4815 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
4816         YY_BREAK
4817 case 143:
4818 /* rule 143 can match eol */
4819 YY_RULE_SETUP
4820 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
4821         YY_BREAK
4822 case 144:
4823 /* rule 144 can match eol */
4824 YY_RULE_SETUP
4825 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
4826         YY_BREAK
4827 case 145:
4828 /* rule 145 can match eol */
4829 case 146:
4830 /* rule 146 can match eol */
4831 YY_RULE_SETUP
4832 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_SHARED;
4833         YY_BREAK
4834 case 147:
4835 /* rule 147 can match eol */
4836 case 148:
4837 /* rule 148 can match eol */
4838 YY_RULE_SETUP
4839 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FULLDUPLEX;
4840         YY_BREAK
4841 case 149:
4842 /* rule 149 can match eol */
4843 case 150:
4844 /* rule 150 can match eol */
4845 YY_RULE_SETUP
4846 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FATPIPE;
4847         YY_BREAK
4848 case 151:
4849 /* rule 151 can match eol */
4850 YY_RULE_SETUP
4851 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_bw);
4852         YY_BREAK
4853 case 152:
4854 /* rule 152 can match eol */
4855 YY_RULE_SETUP
4856 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_bw);
4857         YY_BREAK
4858 case 153:
4859 /* rule 153 can match eol */
4860 YY_RULE_SETUP
4861 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_lat);
4862         YY_BREAK
4863 case 154:
4864 /* rule 154 can match eol */
4865 YY_RULE_SETUP
4866 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_lat);
4867         YY_BREAK
4868 case 155:
4869 /* rule 155 can match eol */
4870 case 156:
4871 /* rule 156 can match eol */
4872 YY_RULE_SETUP
4873 A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
4874         YY_BREAK
4875 case 157:
4876 /* rule 157 can match eol */
4877 case 158:
4878 /* rule 158 can match eol */
4879 YY_RULE_SETUP
4880 A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_FATPIPE;
4881         YY_BREAK
4882 case 159:
4883 YY_RULE_SETUP
4884 {
4885   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
4886   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
4887   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
4888   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
4889   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
4890   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
4891   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
4892   if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4893   if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4894   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cluster);
4895  }
4896         YY_BREAK
4897 case 160:
4898 YY_RULE_SETUP
4899 {
4900   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
4901   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
4902   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
4903   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
4904   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
4905   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
4906   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
4907   if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4908   if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4909   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
4910   switch (YY_START) {
4911    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4912    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4913   }
4914  }
4915         YY_BREAK
4916 case 161:
4917 YY_RULE_SETUP
4918 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
4919         YY_BREAK
4920 case 162:
4921 YY_RULE_SETUP
4922 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
4923         YY_BREAK
4924 case YY_STATE_EOF(AL_surfxml_cluster):
4925 FAIL("EOF in attribute list of `cluster' element.");
4926         YY_BREAK
4927
4928 case 163:
4929 /* rule 163 can match eol */
4930 YY_RULE_SETUP
4931 {
4932   LEAVE;
4933   ETag_surfxml_cluster();
4934   popbuffer(); /* attribute */
4935   switch (YY_START) {
4936    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4937    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4938   }
4939  }
4940         YY_BREAK
4941 case 164:
4942 /* rule 164 can match eol */
4943 YY_RULE_SETUP
4944 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
4945         YY_BREAK
4946 case 165:
4947 YY_RULE_SETUP
4948 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
4949         YY_BREAK
4950 case YY_STATE_EOF(E_surfxml_cluster):
4951 FAIL("Premature EOF: `</cluster>' expected.");
4952         YY_BREAK
4953
4954 case 166:
4955 /* rule 166 can match eol */
4956 YY_RULE_SETUP
4957 FAIL("Starting tag <peer> is not allowed here.");
4958         YY_BREAK
4959 case 167:
4960 /* rule 167 can match eol */
4961 YY_RULE_SETUP
4962 {
4963   AX_surfxml_peer_id = 0;
4964   AX_surfxml_peer_power = 0;
4965   AX_surfxml_peer_bw_in = 0;
4966   AX_surfxml_peer_bw_out = 0;
4967   AX_surfxml_peer_lat = 0;
4968   AX_surfxml_peer_coordinates = 0;
4969   AX_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_FULLDUPLEX;
4970   ENTER(AL_surfxml_peer); pushbuffer(0);
4971   }
4972         YY_BREAK
4973
4974 case 168:
4975 /* rule 168 can match eol */
4976 YY_RULE_SETUP
4977 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
4978         YY_BREAK
4979 case 169:
4980 /* rule 169 can match eol */
4981 YY_RULE_SETUP
4982 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
4983         YY_BREAK
4984 case 170:
4985 /* rule 170 can match eol */
4986 YY_RULE_SETUP
4987 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_power);
4988         YY_BREAK
4989 case 171:
4990 /* rule 171 can match eol */
4991 YY_RULE_SETUP
4992 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_power);
4993         YY_BREAK
4994 case 172:
4995 /* rule 172 can match eol */
4996 YY_RULE_SETUP
4997 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_in);
4998         YY_BREAK
4999 case 173:
5000 /* rule 173 can match eol */
5001 YY_RULE_SETUP
5002 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_in);
5003         YY_BREAK
5004 case 174:
5005 /* rule 174 can match eol */
5006 YY_RULE_SETUP
5007 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_out);
5008         YY_BREAK
5009 case 175:
5010 /* rule 175 can match eol */
5011 YY_RULE_SETUP
5012 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_out);
5013         YY_BREAK
5014 case 176:
5015 /* rule 176 can match eol */
5016 YY_RULE_SETUP
5017 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
5018         YY_BREAK
5019 case 177:
5020 /* rule 177 can match eol */
5021 YY_RULE_SETUP
5022 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
5023         YY_BREAK
5024 case 178:
5025 /* rule 178 can match eol */
5026 YY_RULE_SETUP
5027 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
5028         YY_BREAK
5029 case 179:
5030 /* rule 179 can match eol */
5031 YY_RULE_SETUP
5032 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
5033         YY_BREAK
5034 case 180:
5035 /* rule 180 can match eol */
5036 case 181:
5037 /* rule 181 can match eol */
5038 YY_RULE_SETUP
5039 A_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_SHARED;
5040         YY_BREAK
5041 case 182:
5042 /* rule 182 can match eol */
5043 case 183:
5044 /* rule 183 can match eol */
5045 YY_RULE_SETUP
5046 A_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_FULLDUPLEX;
5047         YY_BREAK
5048 case 184:
5049 YY_RULE_SETUP
5050 {
5051   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
5052   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
5053   if (!AX_surfxml_peer_bw_in) FAIL("Required attribute `bw_in' not set for `peer' element.");
5054   if (!AX_surfxml_peer_bw_out) FAIL("Required attribute `bw_out' not set for `peer' element.");
5055   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
5056   LEAVE; STag_surfxml_peer();surfxml_pcdata_ix = 0; ENTER(E_surfxml_peer);
5057  }
5058         YY_BREAK
5059 case 185:
5060 YY_RULE_SETUP
5061 {
5062   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
5063   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
5064   if (!AX_surfxml_peer_bw_in) FAIL("Required attribute `bw_in' not set for `peer' element.");
5065   if (!AX_surfxml_peer_bw_out) FAIL("Required attribute `bw_out' not set for `peer' element.");
5066   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
5067   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
5068   switch (YY_START) {
5069    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5070    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
5071   }
5072  }
5073         YY_BREAK
5074 case 186:
5075 YY_RULE_SETUP
5076 FAIL("Unexpected character `%c' in attribute list of peer element.", surf_parse_text[0]);
5077         YY_BREAK
5078 case 187:
5079 YY_RULE_SETUP
5080 FAIL("Bad attribute `%s' in `peer' element start tag.",surf_parse_text);
5081         YY_BREAK
5082 case YY_STATE_EOF(AL_surfxml_peer):
5083 FAIL("EOF in attribute list of `peer' element.");
5084         YY_BREAK
5085
5086 case 188:
5087 /* rule 188 can match eol */
5088 YY_RULE_SETUP
5089 {
5090   LEAVE;
5091   ETag_surfxml_peer();
5092   popbuffer(); /* attribute */
5093   switch (YY_START) {
5094    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5095    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
5096   }
5097  }
5098         YY_BREAK
5099 case 189:
5100 /* rule 189 can match eol */
5101 YY_RULE_SETUP
5102 FAIL("Unexpected end-tag `%s': `</peer>' expected.",surf_parse_text);
5103         YY_BREAK
5104 case 190:
5105 YY_RULE_SETUP
5106 FAIL("Unexpected character `%c': `</peer>' expected.",surf_parse_text[0]);
5107         YY_BREAK
5108 case YY_STATE_EOF(E_surfxml_peer):
5109 FAIL("Premature EOF: `</peer>' expected.");
5110         YY_BREAK
5111
5112 case 191:
5113 /* rule 191 can match eol */
5114 YY_RULE_SETUP
5115 FAIL("Starting tag <router> is not allowed here.");
5116         YY_BREAK
5117 case 192:
5118 /* rule 192 can match eol */
5119 YY_RULE_SETUP
5120 {
5121   AX_surfxml_router_id = 0;
5122   AX_surfxml_router_coordinates = 0;
5123   ENTER(AL_surfxml_router); pushbuffer(0);
5124   }
5125         YY_BREAK
5126
5127 case 193:
5128 /* rule 193 can match eol */
5129 YY_RULE_SETUP
5130 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
5131         YY_BREAK
5132 case 194:
5133 /* rule 194 can match eol */
5134 YY_RULE_SETUP
5135 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
5136         YY_BREAK
5137 case 195:
5138 /* rule 195 can match eol */
5139 YY_RULE_SETUP
5140 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
5141         YY_BREAK
5142 case 196:
5143 /* rule 196 can match eol */
5144 YY_RULE_SETUP
5145 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
5146         YY_BREAK
5147 case 197:
5148 YY_RULE_SETUP
5149 {
5150   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
5151   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
5152  }
5153         YY_BREAK
5154 case 198:
5155 YY_RULE_SETUP
5156 {
5157   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
5158   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
5159   switch (YY_START) {
5160    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5161   }
5162  }
5163         YY_BREAK
5164 case 199:
5165 YY_RULE_SETUP
5166 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
5167         YY_BREAK
5168 case 200:
5169 YY_RULE_SETUP
5170 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
5171         YY_BREAK
5172 case YY_STATE_EOF(AL_surfxml_router):
5173 FAIL("EOF in attribute list of `router' element.");
5174         YY_BREAK
5175
5176 case 201:
5177 /* rule 201 can match eol */
5178 YY_RULE_SETUP
5179 {
5180   LEAVE;
5181   ETag_surfxml_router();
5182   popbuffer(); /* attribute */
5183   switch (YY_START) {
5184    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5185   }
5186  }
5187         YY_BREAK
5188 case 202:
5189 /* rule 202 can match eol */
5190 YY_RULE_SETUP
5191 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
5192         YY_BREAK
5193 case 203:
5194 YY_RULE_SETUP
5195 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
5196         YY_BREAK
5197 case YY_STATE_EOF(E_surfxml_router):
5198 FAIL("Premature EOF: `</router>' expected.");
5199         YY_BREAK
5200
5201 case 204:
5202 /* rule 204 can match eol */
5203 YY_RULE_SETUP
5204 FAIL("Starting tag <link> is not allowed here.");
5205         YY_BREAK
5206 case 205:
5207 /* rule 205 can match eol */
5208 YY_RULE_SETUP
5209 {
5210   AX_surfxml_link_id = 0;
5211   AX_surfxml_link_bandwidth = 0;
5212   AX_surfxml_link_bandwidth_file = 0;
5213   AX_surfxml_link_latency = 13;
5214   AX_surfxml_link_latency_file = 0;
5215   AX_surfxml_link_state = A_surfxml_link_state_ON;
5216   AX_surfxml_link_state_file = 0;
5217   AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
5218   ENTER(AL_surfxml_link); pushbuffer(0);
5219   }
5220         YY_BREAK
5221
5222 case 206:
5223 /* rule 206 can match eol */
5224 YY_RULE_SETUP
5225 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
5226         YY_BREAK
5227 case 207:
5228 /* rule 207 can match eol */
5229 YY_RULE_SETUP
5230 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
5231         YY_BREAK
5232 case 208:
5233 /* rule 208 can match eol */
5234 YY_RULE_SETUP
5235 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
5236         YY_BREAK
5237 case 209:
5238 /* rule 209 can match eol */
5239 YY_RULE_SETUP
5240 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
5241         YY_BREAK
5242 case 210:
5243 /* rule 210 can match eol */
5244 YY_RULE_SETUP
5245 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
5246         YY_BREAK
5247 case 211:
5248 /* rule 211 can match eol */
5249 YY_RULE_SETUP
5250 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
5251         YY_BREAK
5252 case 212:
5253 /* rule 212 can match eol */
5254 YY_RULE_SETUP
5255 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
5256         YY_BREAK
5257 case 213:
5258 /* rule 213 can match eol */
5259 YY_RULE_SETUP
5260 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
5261         YY_BREAK
5262 case 214:
5263 /* rule 214 can match eol */
5264 YY_RULE_SETUP
5265 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
5266         YY_BREAK
5267 case 215:
5268 /* rule 215 can match eol */
5269 YY_RULE_SETUP
5270 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
5271         YY_BREAK
5272 case 216:
5273 /* rule 216 can match eol */
5274 case 217:
5275 /* rule 217 can match eol */
5276 YY_RULE_SETUP
5277 A_surfxml_link_state = A_surfxml_link_state_ON;
5278         YY_BREAK
5279 case 218:
5280 /* rule 218 can match eol */
5281 case 219:
5282 /* rule 219 can match eol */
5283 YY_RULE_SETUP
5284 A_surfxml_link_state = A_surfxml_link_state_OFF;
5285         YY_BREAK
5286 case 220:
5287 /* rule 220 can match eol */
5288 YY_RULE_SETUP
5289 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
5290         YY_BREAK
5291 case 221:
5292 /* rule 221 can match eol */
5293 YY_RULE_SETUP
5294 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
5295         YY_BREAK
5296 case 222:
5297 /* rule 222 can match eol */
5298 case 223:
5299 /* rule 223 can match eol */
5300 YY_RULE_SETUP
5301 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
5302         YY_BREAK
5303 case 224:
5304 /* rule 224 can match eol */
5305 case 225:
5306 /* rule 225 can match eol */
5307 YY_RULE_SETUP
5308 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;
5309         YY_BREAK
5310 case 226:
5311 /* rule 226 can match eol */
5312 case 227:
5313 /* rule 227 can match eol */
5314 YY_RULE_SETUP
5315 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FULLDUPLEX;
5316         YY_BREAK
5317 case 228:
5318 YY_RULE_SETUP
5319 {
5320   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
5321   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
5322   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
5323  }
5324         YY_BREAK
5325 case 229:
5326 YY_RULE_SETUP
5327 {
5328   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
5329   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
5330   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
5331   switch (YY_START) {
5332    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5333    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5334   }
5335  }
5336         YY_BREAK
5337 case 230:
5338 YY_RULE_SETUP
5339 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
5340         YY_BREAK
5341 case 231:
5342 YY_RULE_SETUP
5343 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
5344         YY_BREAK
5345 case YY_STATE_EOF(AL_surfxml_link):
5346 FAIL("EOF in attribute list of `link' element.");
5347         YY_BREAK
5348
5349 case 232:
5350 /* rule 232 can match eol */
5351 YY_RULE_SETUP
5352 {
5353   LEAVE;
5354   ETag_surfxml_link();
5355   popbuffer(); /* attribute */
5356   switch (YY_START) {
5357    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5358    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5359   }
5360  }
5361         YY_BREAK
5362 case 233:
5363 /* rule 233 can match eol */
5364 YY_RULE_SETUP
5365 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
5366         YY_BREAK
5367 case 234:
5368 YY_RULE_SETUP
5369 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
5370         YY_BREAK
5371 case YY_STATE_EOF(E_surfxml_link):
5372 case YY_STATE_EOF(S_surfxml_link_2):
5373 case YY_STATE_EOF(S_surfxml_link):
5374 FAIL("Premature EOF: `</link>' expected.");
5375         YY_BREAK
5376
5377 case 235:
5378 /* rule 235 can match eol */
5379 YY_RULE_SETUP
5380 FAIL("Starting tag <route> is not allowed here.");
5381         YY_BREAK
5382 case 236:
5383 /* rule 236 can match eol */
5384 YY_RULE_SETUP
5385 {
5386   AX_surfxml_route_src = 0;
5387   AX_surfxml_route_dst = 0;
5388   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
5389   ENTER(AL_surfxml_route); pushbuffer(0);
5390   }
5391         YY_BREAK
5392
5393 case 237:
5394 /* rule 237 can match eol */
5395 YY_RULE_SETUP
5396 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
5397         YY_BREAK
5398 case 238:
5399 /* rule 238 can match eol */
5400 YY_RULE_SETUP
5401 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
5402         YY_BREAK
5403 case 239:
5404 /* rule 239 can match eol */
5405 YY_RULE_SETUP
5406 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
5407         YY_BREAK
5408 case 240:
5409 /* rule 240 can match eol */
5410 YY_RULE_SETUP
5411 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
5412         YY_BREAK
5413 case 241:
5414 /* rule 241 can match eol */
5415 case 242:
5416 /* rule 242 can match eol */
5417 YY_RULE_SETUP
5418 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
5419         YY_BREAK
5420 case 243:
5421 /* rule 243 can match eol */
5422 case 244:
5423 /* rule 244 can match eol */
5424 YY_RULE_SETUP
5425 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_NO;
5426         YY_BREAK
5427 case 245:
5428 YY_RULE_SETUP
5429 {
5430   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
5431   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
5432   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
5433  }
5434         YY_BREAK
5435 case 246:
5436 YY_RULE_SETUP
5437 {
5438   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
5439   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
5440   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
5441   switch (YY_START) {
5442    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_11: case S_surfxml_AS_13: case S_surfxml_AS: SET(S_surfxml_AS_13); break;
5443   }
5444  }
5445         YY_BREAK
5446 case 247:
5447 YY_RULE_SETUP
5448 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
5449         YY_BREAK
5450 case 248:
5451 YY_RULE_SETUP
5452 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
5453         YY_BREAK
5454 case YY_STATE_EOF(AL_surfxml_route):
5455 FAIL("EOF in attribute list of `route' element.");
5456         YY_BREAK
5457
5458 case 249:
5459 /* rule 249 can match eol */
5460 YY_RULE_SETUP
5461 {
5462   LEAVE;
5463   ETag_surfxml_route();
5464   popbuffer(); /* attribute */
5465   switch (YY_START) {
5466    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_11: case S_surfxml_AS_13: case S_surfxml_AS: SET(S_surfxml_AS_13); break;
5467   }
5468  }
5469         YY_BREAK
5470 case 250:
5471 /* rule 250 can match eol */
5472 YY_RULE_SETUP
5473 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
5474         YY_BREAK
5475 case 251:
5476 YY_RULE_SETUP
5477 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
5478         YY_BREAK
5479 case YY_STATE_EOF(S_surfxml_route):
5480 case YY_STATE_EOF(S_surfxml_route_2):
5481 case YY_STATE_EOF(E_surfxml_route):
5482 FAIL("Premature EOF: `</route>' expected.");
5483         YY_BREAK
5484
5485 case 252:
5486 /* rule 252 can match eol */
5487 YY_RULE_SETUP
5488 FAIL("Starting tag <ASroute> is not allowed here.");
5489         YY_BREAK
5490 case 253:
5491 /* rule 253 can match eol */
5492 YY_RULE_SETUP
5493 {
5494   AX_surfxml_ASroute_src = 0;
5495   AX_surfxml_ASroute_dst = 0;
5496   AX_surfxml_ASroute_gw_src = 0;
5497   AX_surfxml_ASroute_gw_dst = 0;
5498   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5499   ENTER(AL_surfxml_ASroute); pushbuffer(0);
5500   }
5501         YY_BREAK
5502
5503 case 254:
5504 /* rule 254 can match eol */
5505 YY_RULE_SETUP
5506 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
5507         YY_BREAK
5508 case 255:
5509 /* rule 255 can match eol */
5510 YY_RULE_SETUP
5511 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
5512         YY_BREAK
5513 case 256:
5514 /* rule 256 can match eol */
5515 YY_RULE_SETUP
5516 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
5517         YY_BREAK
5518 case 257:
5519 /* rule 257 can match eol */
5520 YY_RULE_SETUP
5521 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
5522         YY_BREAK
5523 case 258:
5524 /* rule 258 can match eol */
5525 YY_RULE_SETUP
5526 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_src);
5527         YY_BREAK
5528 case 259:
5529 /* rule 259 can match eol */
5530 YY_RULE_SETUP
5531 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_src);
5532         YY_BREAK
5533 case 260:
5534 /* rule 260 can match eol */
5535 YY_RULE_SETUP
5536 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_dst);
5537         YY_BREAK
5538 case 261:
5539 /* rule 261 can match eol */
5540 YY_RULE_SETUP
5541 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_dst);
5542         YY_BREAK
5543 case 262:
5544 /* rule 262 can match eol */
5545 case 263:
5546 /* rule 263 can match eol */
5547 YY_RULE_SETUP
5548 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5549         YY_BREAK
5550 case 264:
5551 /* rule 264 can match eol */
5552 case 265:
5553 /* rule 265 can match eol */
5554 YY_RULE_SETUP
5555 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_NO;
5556         YY_BREAK
5557 case 266:
5558 YY_RULE_SETUP
5559 {
5560   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5561   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5562   if (!AX_surfxml_ASroute_gw_src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5563   if (!AX_surfxml_ASroute_gw_dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5564   LEAVE; STag_surfxml_ASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_ASroute);
5565  }
5566         YY_BREAK
5567 case 267:
5568 YY_RULE_SETUP
5569 {
5570   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5571   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5572   if (!AX_surfxml_ASroute_gw_src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5573   if (!AX_surfxml_ASroute_gw_dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5574   LEAVE; STag_surfxml_ASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_ASroute(); popbuffer(); /* attribute */
5575   switch (YY_START) {
5576    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
5577   }
5578  }
5579         YY_BREAK
5580 case 268:
5581 YY_RULE_SETUP
5582 FAIL("Unexpected character `%c' in attribute list of ASroute element.", surf_parse_text[0]);
5583         YY_BREAK
5584 case 269:
5585 YY_RULE_SETUP
5586 FAIL("Bad attribute `%s' in `ASroute' element start tag.",surf_parse_text);
5587         YY_BREAK
5588 case YY_STATE_EOF(AL_surfxml_ASroute):
5589 FAIL("EOF in attribute list of `ASroute' element.");
5590         YY_BREAK
5591
5592 case 270:
5593 /* rule 270 can match eol */
5594 YY_RULE_SETUP
5595 {
5596   LEAVE;
5597   ETag_surfxml_ASroute();
5598   popbuffer(); /* attribute */
5599   switch (YY_START) {
5600    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
5601   }
5602  }
5603         YY_BREAK
5604 case 271:
5605 /* rule 271 can match eol */
5606 YY_RULE_SETUP
5607 FAIL("Unexpected end-tag `%s': `</ASroute>' expected.",surf_parse_text);
5608         YY_BREAK
5609 case 272:
5610 YY_RULE_SETUP
5611 FAIL("Unexpected character `%c': `</ASroute>' expected.",surf_parse_text[0]);
5612         YY_BREAK
5613 case YY_STATE_EOF(E_surfxml_ASroute):
5614 case YY_STATE_EOF(S_surfxml_ASroute):
5615 case YY_STATE_EOF(S_surfxml_ASroute_2):
5616 FAIL("Premature EOF: `</ASroute>' expected.");
5617         YY_BREAK
5618
5619 case 273:
5620 /* rule 273 can match eol */
5621 YY_RULE_SETUP
5622 FAIL("Starting tag <link_ctn> is not allowed here.");
5623         YY_BREAK
5624 case 274:
5625 /* rule 274 can match eol */
5626 YY_RULE_SETUP
5627 {
5628   AX_surfxml_link_ctn_id = 0;
5629   AX_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_NONE;
5630   ENTER(AL_surfxml_link_ctn); pushbuffer(0);
5631   }
5632         YY_BREAK
5633
5634 case 275:
5635 /* rule 275 can match eol */
5636 YY_RULE_SETUP
5637 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_ctn_id);
5638         YY_BREAK
5639 case 276:
5640 /* rule 276 can match eol */
5641 YY_RULE_SETUP
5642 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_ctn_id);
5643         YY_BREAK
5644 case 277:
5645 /* rule 277 can match eol */
5646 case 278:
5647 /* rule 278 can match eol */
5648 YY_RULE_SETUP
5649 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_UP;
5650         YY_BREAK
5651 case 279:
5652 /* rule 279 can match eol */
5653 case 280:
5654 /* rule 280 can match eol */
5655 YY_RULE_SETUP
5656 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_DOWN;
5657         YY_BREAK
5658 case 281:
5659 /* rule 281 can match eol */
5660 case 282:
5661 /* rule 282 can match eol */
5662 YY_RULE_SETUP
5663 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_NONE;
5664         YY_BREAK
5665 case 283:
5666 YY_RULE_SETUP
5667 {
5668   if (!AX_surfxml_link_ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
5669   LEAVE; STag_surfxml_link_ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link_ctn);
5670  }
5671         YY_BREAK
5672 case 284:
5673 YY_RULE_SETUP
5674 {
5675   if (!AX_surfxml_link_ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
5676   LEAVE; STag_surfxml_link_ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link_ctn(); popbuffer(); /* attribute */
5677   switch (YY_START) {
5678    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_2: case S_surfxml_bypassRoute_1: SET(S_surfxml_bypassRoute_2); break;
5679    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
5680    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
5681   }
5682  }
5683         YY_BREAK
5684 case 285:
5685 YY_RULE_SETUP
5686 FAIL("Unexpected character `%c' in attribute list of link_ctn element.", surf_parse_text[0]);
5687         YY_BREAK
5688 case 286:
5689 YY_RULE_SETUP
5690 FAIL("Bad attribute `%s' in `link_ctn' element start tag.",surf_parse_text);
5691         YY_BREAK
5692 case YY_STATE_EOF(AL_surfxml_link_ctn):
5693 FAIL("EOF in attribute list of `link_ctn' element.");
5694         YY_BREAK
5695
5696 case 287:
5697 /* rule 287 can match eol */
5698 YY_RULE_SETUP
5699 {
5700   LEAVE;
5701   ETag_surfxml_link_ctn();
5702   popbuffer(); /* attribute */
5703   switch (YY_START) {
5704    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_2: case S_surfxml_bypassRoute_1: SET(S_surfxml_bypassRoute_2); break;
5705    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
5706    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
5707   }
5708  }
5709         YY_BREAK
5710 case 288:
5711 /* rule 288 can match eol */
5712 YY_RULE_SETUP
5713 FAIL("Unexpected end-tag `%s': `</link_ctn>' expected.",surf_parse_text);
5714         YY_BREAK
5715 case 289:
5716 YY_RULE_SETUP
5717 FAIL("Unexpected character `%c': `</link_ctn>' expected.",surf_parse_text[0]);
5718         YY_BREAK
5719 case YY_STATE_EOF(E_surfxml_link_ctn):
5720 FAIL("Premature EOF: `</link_ctn>' expected.");
5721         YY_BREAK
5722
5723 case 290:
5724 /* rule 290 can match eol */
5725 YY_RULE_SETUP
5726 FAIL("Starting tag <bypassRoute> is not allowed here.");
5727         YY_BREAK
5728 case 291:
5729 /* rule 291 can match eol */
5730 YY_RULE_SETUP
5731 {
5732   AX_surfxml_bypassRoute_src = 0;
5733   AX_surfxml_bypassRoute_dst = 0;
5734   AX_surfxml_bypassRoute_gw_src = 0;
5735   AX_surfxml_bypassRoute_gw_dst = 0;
5736   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
5737   }
5738         YY_BREAK
5739
5740 case 292:
5741 /* rule 292 can match eol */
5742 YY_RULE_SETUP
5743 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
5744         YY_BREAK
5745 case 293:
5746 /* rule 293 can match eol */
5747 YY_RULE_SETUP
5748 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
5749         YY_BREAK
5750 case 294:
5751 /* rule 294 can match eol */
5752 YY_RULE_SETUP
5753 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
5754         YY_BREAK
5755 case 295:
5756 /* rule 295 can match eol */
5757 YY_RULE_SETUP
5758 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
5759         YY_BREAK
5760 case 296:
5761 /* rule 296 can match eol */
5762 YY_RULE_SETUP
5763 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_gw_src);
5764         YY_BREAK
5765 case 297:
5766 /* rule 297 can match eol */
5767 YY_RULE_SETUP
5768 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_gw_src);
5769         YY_BREAK
5770 case 298:
5771 /* rule 298 can match eol */
5772 YY_RULE_SETUP
5773 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_gw_dst);
5774         YY_BREAK
5775 case 299:
5776 /* rule 299 can match eol */
5777 YY_RULE_SETUP
5778 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_gw_dst);
5779         YY_BREAK
5780 case 300:
5781 YY_RULE_SETUP
5782 {
5783   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
5784   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
5785   if (!AX_surfxml_bypassRoute_gw_src) FAIL("Required attribute `gw_src' not set for `bypassRoute' element.");
5786   if (!AX_surfxml_bypassRoute_gw_dst) FAIL("Required attribute `gw_dst' not set for `bypassRoute' element.");
5787   LEAVE; STag_surfxml_bypassRoute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassRoute);
5788  }
5789         YY_BREAK
5790 case 301:
5791 YY_RULE_SETUP
5792 {
5793   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
5794   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
5795   if (!AX_surfxml_bypassRoute_gw_src) FAIL("Required attribute `gw_src' not set for `bypassRoute' element.");
5796   if (!AX_surfxml_bypassRoute_gw_dst) FAIL("Required attribute `gw_dst' not set for `bypassRoute' element.");
5797   LEAVE; STag_surfxml_bypassRoute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassRoute(); popbuffer(); /* attribute */
5798   switch (YY_START) {
5799    case S_surfxml_AS_1: case S_surfxml_AS: case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
5800   }
5801  }
5802         YY_BREAK
5803 case 302:
5804 YY_RULE_SETUP
5805 FAIL("Unexpected character `%c' in attribute list of bypassRoute element.", surf_parse_text[0]);
5806         YY_BREAK
5807 case 303:
5808 YY_RULE_SETUP
5809 FAIL("Bad attribute `%s' in `bypassRoute' element start tag.",surf_parse_text);
5810         YY_BREAK
5811 case YY_STATE_EOF(AL_surfxml_bypassRoute):
5812 FAIL("EOF in attribute list of `bypassRoute' element.");
5813         YY_BREAK
5814
5815 case 304:
5816 /* rule 304 can match eol */
5817 YY_RULE_SETUP
5818 {
5819   LEAVE;
5820   ETag_surfxml_bypassRoute();
5821   popbuffer(); /* attribute */
5822   switch (YY_START) {
5823    case S_surfxml_AS_1: case S_surfxml_AS: case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
5824   }
5825  }
5826         YY_BREAK
5827 case 305:
5828 /* rule 305 can match eol */
5829 YY_RULE_SETUP
5830 FAIL("Unexpected end-tag `%s': `</bypassRoute>' expected.",surf_parse_text);
5831         YY_BREAK
5832 case 306:
5833 YY_RULE_SETUP
5834 FAIL("Unexpected character `%c': `</bypassRoute>' expected.",surf_parse_text[0]);
5835         YY_BREAK
5836 case YY_STATE_EOF(S_surfxml_bypassRoute):
5837 case YY_STATE_EOF(S_surfxml_bypassRoute_2):
5838 case YY_STATE_EOF(E_surfxml_bypassRoute):
5839 FAIL("Premature EOF: `</bypassRoute>' expected.");
5840         YY_BREAK
5841
5842 case 307:
5843 /* rule 307 can match eol */
5844 YY_RULE_SETUP
5845 FAIL("Starting tag <process> is not allowed here.");
5846         YY_BREAK
5847 case 308:
5848 /* rule 308 can match eol */
5849 YY_RULE_SETUP
5850 {
5851   AX_surfxml_process_host = 0;
5852   AX_surfxml_process_function = 0;
5853   AX_surfxml_process_start_time = 17;
5854   AX_surfxml_process_kill_time = 22;
5855   ENTER(AL_surfxml_process); pushbuffer(0);
5856   }
5857         YY_BREAK
5858
5859 case 309:
5860 /* rule 309 can match eol */
5861 YY_RULE_SETUP
5862 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
5863         YY_BREAK
5864 case 310:
5865 /* rule 310 can match eol */
5866 YY_RULE_SETUP
5867 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
5868         YY_BREAK
5869 case 311:
5870 /* rule 311 can match eol */
5871 YY_RULE_SETUP
5872 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
5873         YY_BREAK
5874 case 312:
5875 /* rule 312 can match eol */
5876 YY_RULE_SETUP
5877 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
5878         YY_BREAK
5879 case 313:
5880 /* rule 313 can match eol */
5881 YY_RULE_SETUP
5882 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
5883         YY_BREAK
5884 case 314:
5885 /* rule 314 can match eol */
5886 YY_RULE_SETUP
5887 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
5888         YY_BREAK
5889 case 315:
5890 /* rule 315 can match eol */
5891 YY_RULE_SETUP
5892 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
5893         YY_BREAK
5894 case 316:
5895 /* rule 316 can match eol */
5896 YY_RULE_SETUP
5897 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
5898         YY_BREAK
5899 case 317:
5900 YY_RULE_SETUP
5901 {
5902   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
5903   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
5904   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
5905  }
5906         YY_BREAK
5907 case 318:
5908 YY_RULE_SETUP
5909 {
5910   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
5911   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
5912   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
5913   switch (YY_START) {
5914    case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_5: case S_surfxml_platform_2: case S_surfxml_platform_1: case S_surfxml_platform: SET(S_surfxml_platform_6); break;
5915   }
5916  }
5917         YY_BREAK
5918 case 319:
5919 YY_RULE_SETUP
5920 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
5921         YY_BREAK
5922 case 320:
5923 YY_RULE_SETUP
5924 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
5925         YY_BREAK
5926 case YY_STATE_EOF(AL_surfxml_process):
5927 FAIL("EOF in attribute list of `process' element.");
5928         YY_BREAK
5929
5930 case 321:
5931 /* rule 321 can match eol */
5932 YY_RULE_SETUP
5933 {
5934   LEAVE;
5935   ETag_surfxml_process();
5936   popbuffer(); /* attribute */
5937   switch (YY_START) {
5938    case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_5: case S_surfxml_platform_2: case S_surfxml_platform_1: case S_surfxml_platform: SET(S_surfxml_platform_6); break;
5939   }
5940  }
5941         YY_BREAK
5942 case 322:
5943 /* rule 322 can match eol */
5944 YY_RULE_SETUP
5945 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
5946         YY_BREAK
5947 case 323:
5948 YY_RULE_SETUP
5949 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
5950         YY_BREAK
5951 case YY_STATE_EOF(E_surfxml_process):
5952 case YY_STATE_EOF(S_surfxml_process):
5953 case YY_STATE_EOF(S_surfxml_process_2):
5954 FAIL("Premature EOF: `</process>' expected.");
5955         YY_BREAK
5956
5957 case 324:
5958 /* rule 324 can match eol */
5959 YY_RULE_SETUP
5960 FAIL("Starting tag <argument> is not allowed here.");
5961         YY_BREAK
5962 case 325:
5963 /* rule 325 can match eol */
5964 YY_RULE_SETUP
5965 {
5966   AX_surfxml_argument_value = 0;
5967   ENTER(AL_surfxml_argument); pushbuffer(0);
5968   }
5969         YY_BREAK
5970
5971 case 326:
5972 /* rule 326 can match eol */
5973 YY_RULE_SETUP
5974 ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
5975         YY_BREAK
5976 case 327:
5977 /* rule 327 can match eol */
5978 YY_RULE_SETUP
5979 ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
5980         YY_BREAK
5981 case 328:
5982 YY_RULE_SETUP
5983 {
5984   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5985   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
5986  }
5987         YY_BREAK
5988 case 329:
5989 YY_RULE_SETUP
5990 {
5991   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5992   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
5993   switch (YY_START) {
5994    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5995   }
5996  }
5997         YY_BREAK
5998 case 330:
5999 YY_RULE_SETUP
6000 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
6001         YY_BREAK
6002 case 331:
6003 YY_RULE_SETUP
6004 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
6005         YY_BREAK
6006 case YY_STATE_EOF(AL_surfxml_argument):
6007 FAIL("EOF in attribute list of `argument' element.");
6008         YY_BREAK
6009
6010 case 332:
6011 /* rule 332 can match eol */
6012 YY_RULE_SETUP
6013 {
6014   LEAVE;
6015   ETag_surfxml_argument();
6016   popbuffer(); /* attribute */
6017   switch (YY_START) {
6018    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
6019   }
6020  }
6021         YY_BREAK
6022 case 333:
6023 /* rule 333 can match eol */
6024 YY_RULE_SETUP
6025 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
6026         YY_BREAK
6027 case 334:
6028 YY_RULE_SETUP
6029 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
6030         YY_BREAK
6031 case YY_STATE_EOF(E_surfxml_argument):
6032 FAIL("Premature EOF: `</argument>' expected.");
6033         YY_BREAK
6034
6035 case 335:
6036 /* rule 335 can match eol */
6037 YY_RULE_SETUP
6038 FAIL("Starting tag <config> is not allowed here.");
6039         YY_BREAK
6040 case 336:
6041 /* rule 336 can match eol */
6042 YY_RULE_SETUP
6043 {
6044   AX_surfxml_config_id = 0;
6045   ENTER(AL_surfxml_config); pushbuffer(0);
6046   }
6047         YY_BREAK
6048
6049 case 337:
6050 /* rule 337 can match eol */
6051 YY_RULE_SETUP
6052 ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
6053         YY_BREAK
6054 case 338:
6055 /* rule 338 can match eol */
6056 YY_RULE_SETUP
6057 ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
6058         YY_BREAK
6059 case 339:
6060 YY_RULE_SETUP
6061 {
6062   LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
6063  }
6064         YY_BREAK
6065 case 340:
6066 YY_RULE_SETUP
6067 {
6068   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
6069   switch (YY_START) {
6070    case S_surfxml_platform: SET(S_surfxml_platform_1); break;
6071   }
6072  }
6073         YY_BREAK
6074 case 341:
6075 YY_RULE_SETUP
6076 FAIL("Unexpected character `%c' in attribute list of config element.", surf_parse_text[0]);
6077         YY_BREAK
6078 case 342:
6079 YY_RULE_SETUP
6080 FAIL("Bad attribute `%s' in `config' element start tag.",surf_parse_text);
6081         YY_BREAK
6082 case YY_STATE_EOF(AL_surfxml_config):
6083 FAIL("EOF in attribute list of `config' element.");
6084         YY_BREAK
6085
6086 case 343:
6087 /* rule 343 can match eol */
6088 YY_RULE_SETUP
6089 {
6090   LEAVE;
6091   ETag_surfxml_config();
6092   popbuffer(); /* attribute */
6093   switch (YY_START) {
6094    case S_surfxml_platform: SET(S_surfxml_platform_1); break;
6095   }
6096  }
6097         YY_BREAK
6098 case 344:
6099 /* rule 344 can match eol */
6100 YY_RULE_SETUP
6101 FAIL("Unexpected end-tag `%s': `</config>' expected.",surf_parse_text);
6102         YY_BREAK
6103 case 345:
6104 YY_RULE_SETUP
6105 FAIL("Unexpected character `%c': `</config>' expected.",surf_parse_text[0]);
6106         YY_BREAK
6107 case YY_STATE_EOF(S_surfxml_config):
6108 case YY_STATE_EOF(S_surfxml_config_2):
6109 case YY_STATE_EOF(E_surfxml_config):
6110 FAIL("Premature EOF: `</config>' expected.");
6111         YY_BREAK
6112
6113 /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
6114   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
6115 case 346:
6116 /* rule 346 can match eol */
6117 YY_RULE_SETUP
6118 FAIL("Starting tag <prop> is not allowed here.");
6119         YY_BREAK
6120 case 347:
6121 /* rule 347 can match eol */
6122 YY_RULE_SETUP
6123 {
6124   AX_surfxml_prop_id = 0;
6125   AX_surfxml_prop_value = 0;
6126   ENTER(AL_surfxml_prop); pushbuffer(0);
6127   }
6128         YY_BREAK
6129
6130 case 348:
6131 /* rule 348 can match eol */
6132 YY_RULE_SETUP
6133 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
6134         YY_BREAK
6135 case 349:
6136 /* rule 349 can match eol */
6137 YY_RULE_SETUP
6138 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
6139         YY_BREAK
6140 case 350:
6141 /* rule 350 can match eol */
6142 YY_RULE_SETUP
6143 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
6144         YY_BREAK
6145 case 351:
6146 /* rule 351 can match eol */
6147 YY_RULE_SETUP
6148 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
6149         YY_BREAK
6150 case 352:
6151 YY_RULE_SETUP
6152 {
6153   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
6154   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
6155   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
6156  }
6157         YY_BREAK
6158 case 353:
6159 YY_RULE_SETUP
6160 {
6161   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
6162   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
6163   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
6164   switch (YY_START) {
6165    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
6166    case S_surfxml_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
6167    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
6168    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
6169    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
6170   }
6171  }
6172         YY_BREAK
6173 case 354:
6174 YY_RULE_SETUP
6175 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
6176         YY_BREAK
6177 case 355:
6178 YY_RULE_SETUP
6179 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
6180         YY_BREAK
6181 case YY_STATE_EOF(AL_surfxml_prop):
6182 FAIL("EOF in attribute list of `prop' element.");
6183         YY_BREAK
6184
6185 case 356:
6186 /* rule 356 can match eol */
6187 YY_RULE_SETUP
6188 {
6189   LEAVE;
6190   ETag_surfxml_prop();
6191   popbuffer(); /* attribute */
6192   switch (YY_START) {
6193    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
6194    case S_surfxml_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
6195    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
6196    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
6197    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
6198   }
6199  }
6200         YY_BREAK
6201 case 357:
6202 /* rule 357 can match eol */
6203 YY_RULE_SETUP
6204 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
6205         YY_BREAK
6206 case 358:
6207 YY_RULE_SETUP
6208 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
6209         YY_BREAK
6210 case YY_STATE_EOF(E_surfxml_prop):
6211 FAIL("Premature EOF: `</prop>' expected.");
6212         YY_BREAK
6213
6214 /* EPILOG: after the root element. */
6215
6216 case 359:
6217 YY_RULE_SETUP
6218 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
6219         YY_BREAK
6220 case YY_STATE_EOF(EPILOG):
6221 SUCCEED;
6222         YY_BREAK
6223
6224 /* CHARACTER DATA. */
6225
6226 /* Non-defined standard entities... */
6227 case 360:
6228 YY_RULE_SETUP
6229 BUFFERPUTC('&');
6230         YY_BREAK
6231 case 361:
6232 YY_RULE_SETUP
6233 BUFFERPUTC('<');
6234         YY_BREAK
6235 case 362:
6236 YY_RULE_SETUP
6237 BUFFERPUTC('>');
6238         YY_BREAK
6239 case 363:
6240 YY_RULE_SETUP
6241 BUFFERPUTC('\'');
6242         YY_BREAK
6243 case 364:
6244 YY_RULE_SETUP
6245 BUFFERPUTC('"');
6246         YY_BREAK
6247 /* Character entities. */
6248 case 365:
6249 YY_RULE_SETUP
6250 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
6251         YY_BREAK
6252 case 366:
6253 YY_RULE_SETUP
6254 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
6255         YY_BREAK
6256
6257 case 367:
6258 /* rule 367 can match eol */
6259 case 368:
6260 /* rule 368 can match eol */
6261 case 369:
6262 /* rule 369 can match eol */
6263 case 370:
6264 /* rule 370 can match eol */
6265 YY_RULE_SETUP
6266 BUFFERPUTC('\n');
6267         YY_BREAK
6268
6269 case 371:
6270 YY_RULE_SETUP
6271 ENTER(CDATA);
6272         YY_BREAK
6273 case 372:
6274 YY_RULE_SETUP
6275 FAIL("Unexpected `]""]>' in character data.");
6276         YY_BREAK
6277
6278 case 373:
6279 YY_RULE_SETUP
6280 BUFFERDONE; LEAVE;
6281         YY_BREAK
6282 case YY_STATE_EOF(VALUE1):
6283 FAIL("EOF in literal (\"'\" expected).");
6284         YY_BREAK
6285
6286 case 374:
6287 YY_RULE_SETUP
6288 BUFFERDONE; LEAVE;
6289         YY_BREAK
6290 case YY_STATE_EOF(VALUE2):
6291 FAIL("EOF in literal (`\"' expected).");
6292         YY_BREAK
6293
6294 case 375:
6295 /* rule 375 can match eol */
6296 YY_RULE_SETUP
6297 BUFFERPUTC(surf_parse_text[0]);
6298         YY_BREAK
6299 case 376:
6300 YY_RULE_SETUP
6301 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
6302         YY_BREAK
6303
6304 case 377:
6305 YY_RULE_SETUP
6306 LEAVE;
6307         YY_BREAK
6308 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
6309 case 378:
6310 YY_RULE_SETUP
6311 BUFFERPUTC(surf_parse_text[0]);
6312         YY_BREAK
6313 case YY_STATE_EOF(CDATA):
6314 FAIL("EOF in CDATA section.");
6315         YY_BREAK
6316
6317 /* Impossible rules to avoid warnings from flex(1). */
6318 /* Ideally, this should be replaced by code in flexml.pl that
6319     generates just the states not covered by other rules. */
6320
6321 case 379:
6322 /* rule 379 can match eol */
6323 YY_RULE_SETUP
6324 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
6325         YY_BREAK
6326
6327 case 380:
6328 YY_RULE_SETUP
6329 ECHO;
6330         YY_BREAK
6331 case YY_STATE_EOF(INITIAL):
6332 case YY_STATE_EOF(ROOT_surfxml_platform):
6333 case YY_STATE_EOF(S_surfxml_platform_3):
6334 case YY_STATE_EOF(S_surfxml_platform_5):
6335 case YY_STATE_EOF(S_surfxml_random_1):
6336 case YY_STATE_EOF(S_surfxml_AS_2):
6337 case YY_STATE_EOF(S_surfxml_AS_5):
6338 case YY_STATE_EOF(S_surfxml_AS_7):
6339 case YY_STATE_EOF(S_surfxml_AS_10):
6340 case YY_STATE_EOF(S_surfxml_AS_12):
6341 case YY_STATE_EOF(S_surfxml_host_1):
6342 case YY_STATE_EOF(S_surfxml_link_1):
6343 case YY_STATE_EOF(S_surfxml_route_1):
6344 case YY_STATE_EOF(S_surfxml_ASroute_1):
6345 case YY_STATE_EOF(S_surfxml_bypassRoute_1):
6346 case YY_STATE_EOF(S_surfxml_process_1):
6347 case YY_STATE_EOF(S_surfxml_config_1):
6348 case YY_STATE_EOF(IMPOSSIBLE):
6349         yyterminate();
6350
6351         case YY_END_OF_BUFFER:
6352                 {
6353                 /* Amount of text matched not including the EOB char. */
6354                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
6355
6356                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
6357                 *yy_cp = (yy_hold_char);
6358                 YY_RESTORE_YY_MORE_OFFSET
6359
6360                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
6361                         {
6362                         /* We're scanning a new file or input source.  It's
6363                          * possible that this happened because the user
6364                          * just pointed surf_parse_in at a new source and called
6365                          * surf_parse_lex().  If so, then we have to assure
6366                          * consistency between YY_CURRENT_BUFFER and our
6367                          * globals.  Here is the right place to do so, because
6368                          * this is the first action (other than possibly a
6369                          * back-up) that will match for the new input source.
6370                          */
6371                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6372                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
6373                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
6374                         }
6375
6376                 /* Note that here we test for yy_c_buf_p "<=" to the position
6377                  * of the first EOB in the buffer, since yy_c_buf_p will
6378                  * already have been incremented past the NUL character
6379                  * (since all states make transitions on EOB to the
6380                  * end-of-buffer state).  Contrast this with the test
6381                  * in input().
6382                  */
6383                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6384                         { /* This was really a NUL. */
6385                         yy_state_type yy_next_state;
6386
6387                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
6388
6389                         yy_current_state = yy_get_previous_state(  );
6390
6391                         /* Okay, we're now positioned to make the NUL
6392                          * transition.  We couldn't have
6393                          * yy_get_previous_state() go ahead and do it
6394                          * for us because it doesn't know how to deal
6395                          * with the possibility of jamming (and we don't
6396                          * want to build jamming into it because then it
6397                          * will run more slowly).
6398                          */
6399
6400                         yy_next_state = yy_try_NUL_trans( yy_current_state );
6401
6402                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6403
6404                         if ( yy_next_state )
6405                                 {
6406                                 /* Consume the NUL. */
6407                                 yy_cp = ++(yy_c_buf_p);
6408                                 yy_current_state = yy_next_state;
6409                                 goto yy_match;
6410                                 }
6411
6412                         else
6413                                 {
6414                                 yy_cp = (yy_c_buf_p);
6415                                 goto yy_find_action;
6416                                 }
6417                         }
6418
6419                 else switch ( yy_get_next_buffer(  ) )
6420                         {
6421                         case EOB_ACT_END_OF_FILE:
6422                                 {
6423                                 (yy_did_buffer_switch_on_eof) = 0;
6424
6425                                 if ( surf_parse_wrap( ) )
6426                                         {
6427                                         /* Note: because we've taken care in
6428                                          * yy_get_next_buffer() to have set up
6429                                          * surf_parse_text, we can now set up
6430                                          * yy_c_buf_p so that if some total
6431                                          * hoser (like flex itself) wants to
6432                                          * call the scanner after we return the
6433                                          * YY_NULL, it'll still work - another
6434                                          * YY_NULL will get returned.
6435                                          */
6436                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
6437
6438                                         yy_act = YY_STATE_EOF(YY_START);
6439                                         goto do_action;
6440                                         }
6441
6442                                 else
6443                                         {
6444                                         if ( ! (yy_did_buffer_switch_on_eof) )
6445                                                 YY_NEW_FILE;
6446                                         }
6447                                 break;
6448                                 }
6449
6450                         case EOB_ACT_CONTINUE_SCAN:
6451                                 (yy_c_buf_p) =
6452                                         (yytext_ptr) + yy_amount_of_matched_text;
6453
6454                                 yy_current_state = yy_get_previous_state(  );
6455
6456                                 yy_cp = (yy_c_buf_p);
6457                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6458                                 goto yy_match;
6459
6460                         case EOB_ACT_LAST_MATCH:
6461                                 (yy_c_buf_p) =
6462                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
6463
6464                                 yy_current_state = yy_get_previous_state(  );
6465
6466                                 yy_cp = (yy_c_buf_p);
6467                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6468                                 goto yy_find_action;
6469                         }
6470                 break;
6471                 }
6472
6473         default:
6474                 YY_FATAL_ERROR(
6475                         "fatal flex scanner internal error--no action found" );
6476         } /* end of action switch */
6477                 } /* end of scanning one token */
6478 } /* end of surf_parse_lex */
6479
6480 /* yy_get_next_buffer - try to read in a new buffer
6481  *
6482  * Returns a code representing an action:
6483  *      EOB_ACT_LAST_MATCH -
6484  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
6485  *      EOB_ACT_END_OF_FILE - end of file
6486  */
6487 static int yy_get_next_buffer (void)
6488 {
6489         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
6490         register char *source = (yytext_ptr);
6491         register int number_to_move, i;
6492         int ret_val;
6493
6494         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
6495                 YY_FATAL_ERROR(
6496                 "fatal flex scanner internal error--end of buffer missed" );
6497
6498         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
6499                 { /* Don't try to fill the buffer, so this is an EOF. */
6500                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
6501                         {
6502                         /* We matched a single character, the EOB, so
6503                          * treat this as a final EOF.
6504                          */
6505                         return EOB_ACT_END_OF_FILE;
6506                         }
6507
6508                 else
6509                         {
6510                         /* We matched some text prior to the EOB, first
6511                          * process it.
6512                          */
6513                         return EOB_ACT_LAST_MATCH;
6514                         }
6515                 }
6516
6517         /* Try to read more data. */
6518
6519         /* First move last chars to start of buffer. */
6520         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
6521
6522         for ( i = 0; i < number_to_move; ++i )
6523                 *(dest++) = *(source++);
6524
6525         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
6526                 /* don't do the read, it's not guaranteed to return an EOF,
6527                  * just force an EOF
6528                  */
6529                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
6530
6531         else
6532                 {
6533                         int num_to_read =
6534                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6535
6536                 while ( num_to_read <= 0 )
6537                         { /* Not enough room in the buffer - grow it. */
6538
6539                         /* just a shorter name for the current buffer */
6540                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
6541
6542                         int yy_c_buf_p_offset =
6543                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
6544
6545                         if ( b->yy_is_our_buffer )
6546                                 {
6547                                 int new_size = b->yy_buf_size * 2;
6548
6549                                 if ( new_size <= 0 )
6550                                         b->yy_buf_size += b->yy_buf_size / 8;
6551                                 else
6552                                         b->yy_buf_size *= 2;
6553
6554                                 b->yy_ch_buf = (char *)
6555                                         /* Include room in for 2 EOB chars. */
6556                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
6557                                 }
6558                         else
6559                                 /* Can't grow it, we don't own it. */
6560                                 b->yy_ch_buf = 0;
6561
6562                         if ( ! b->yy_ch_buf )
6563                                 YY_FATAL_ERROR(
6564                                 "fatal error - scanner input buffer overflow" );
6565
6566                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
6567
6568                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
6569                                                 number_to_move - 1;
6570
6571                         }
6572
6573                 if ( num_to_read > YY_READ_BUF_SIZE )
6574                         num_to_read = YY_READ_BUF_SIZE;
6575
6576                 /* Read in more data. */
6577                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6578                         (yy_n_chars), (size_t) num_to_read );
6579
6580                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6581                 }
6582
6583         if ( (yy_n_chars) == 0 )
6584                 {
6585                 if ( number_to_move == YY_MORE_ADJ )
6586                         {
6587                         ret_val = EOB_ACT_END_OF_FILE;
6588                         surf_parse_restart(surf_parse_in  );
6589                         }
6590
6591                 else
6592                         {
6593                         ret_val = EOB_ACT_LAST_MATCH;
6594                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6595                                 YY_BUFFER_EOF_PENDING;
6596                         }
6597                 }
6598
6599         else
6600                 ret_val = EOB_ACT_CONTINUE_SCAN;
6601
6602         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6603                 /* Extend the array by 50%, plus the number we really need. */
6604                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
6605                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
6606                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6607                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
6608         }
6609
6610         (yy_n_chars) += number_to_move;
6611         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
6612         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
6613
6614         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6615
6616         return ret_val;
6617 }
6618
6619 /* yy_get_previous_state - get the state just before the EOB char was reached */
6620
6621     static yy_state_type yy_get_previous_state (void)
6622 {
6623         register yy_state_type yy_current_state;
6624         register char *yy_cp;
6625     
6626         yy_current_state = (yy_start);
6627
6628         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
6629                 {
6630                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
6631                 if ( yy_accept[yy_current_state] )
6632                         {
6633                         (yy_last_accepting_state) = yy_current_state;
6634                         (yy_last_accepting_cpos) = yy_cp;
6635                         }
6636                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6637                         {
6638                         yy_current_state = (int) yy_def[yy_current_state];
6639                         if ( yy_current_state >= 2221 )
6640                                 yy_c = yy_meta[(unsigned int) yy_c];
6641                         }
6642                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6643                 }
6644
6645         return yy_current_state;
6646 }
6647
6648 /* yy_try_NUL_trans - try to make a transition on the NUL character
6649  *
6650  * synopsis
6651  *      next_state = yy_try_NUL_trans( current_state );
6652  */
6653     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
6654 {
6655         register int yy_is_jam;
6656         register char *yy_cp = (yy_c_buf_p);
6657
6658         register YY_CHAR yy_c = 1;
6659         if ( yy_accept[yy_current_state] )
6660                 {
6661                 (yy_last_accepting_state) = yy_current_state;
6662                 (yy_last_accepting_cpos) = yy_cp;
6663                 }
6664         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6665                 {
6666                 yy_current_state = (int) yy_def[yy_current_state];
6667                 if ( yy_current_state >= 2221 )
6668                         yy_c = yy_meta[(unsigned int) yy_c];
6669                 }
6670         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6671         yy_is_jam = (yy_current_state == 2220);
6672
6673         return yy_is_jam ? 0 : yy_current_state;
6674 }
6675
6676 #ifndef YY_NO_INPUT
6677 #ifdef __cplusplus
6678     static int yyinput (void)
6679 #else
6680     static int input  (void)
6681 #endif
6682
6683 {
6684         int c;
6685     
6686         *(yy_c_buf_p) = (yy_hold_char);
6687
6688         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
6689                 {
6690                 /* yy_c_buf_p now points to the character we want to return.
6691                  * If this occurs *before* the EOB characters, then it's a
6692                  * valid NUL; if not, then we've hit the end of the buffer.
6693                  */
6694                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6695                         /* This was really a NUL. */
6696                         *(yy_c_buf_p) = '\0';
6697
6698                 else
6699                         { /* need more input */
6700                         int offset = (yy_c_buf_p) - (yytext_ptr);
6701                         ++(yy_c_buf_p);
6702
6703                         switch ( yy_get_next_buffer(  ) )
6704                                 {
6705                                 case EOB_ACT_LAST_MATCH:
6706                                         /* This happens because yy_g_n_b()
6707                                          * sees that we've accumulated a
6708                                          * token and flags that we need to
6709                                          * try matching the token before
6710                                          * proceeding.  But for input(),
6711                                          * there's no matching to consider.
6712                                          * So convert the EOB_ACT_LAST_MATCH
6713                                          * to EOB_ACT_END_OF_FILE.
6714                                          */
6715
6716                                         /* Reset buffer status. */
6717                                         surf_parse_restart(surf_parse_in );
6718
6719                                         /*FALLTHROUGH*/
6720
6721                                 case EOB_ACT_END_OF_FILE:
6722                                         {
6723                                         if ( surf_parse_wrap( ) )
6724                                                 return EOF;
6725
6726                                         if ( ! (yy_did_buffer_switch_on_eof) )
6727                                                 YY_NEW_FILE;
6728 #ifdef __cplusplus
6729                                         return yyinput();
6730 #else
6731                                         return input();
6732 #endif
6733                                         }
6734
6735                                 case EOB_ACT_CONTINUE_SCAN:
6736                                         (yy_c_buf_p) = (yytext_ptr) + offset;
6737                                         break;
6738                                 }
6739                         }
6740                 }
6741
6742         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
6743         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
6744         (yy_hold_char) = *++(yy_c_buf_p);
6745
6746         if ( c == '\n' )
6747                    
6748     surf_parse_lineno++;
6749 ;
6750
6751         return c;
6752 }
6753 #endif  /* ifndef YY_NO_INPUT */
6754
6755 /** Immediately switch to a different input stream.
6756  * @param input_file A readable stream.
6757  * 
6758  * @note This function does not reset the start condition to @c INITIAL .
6759  */
6760     void surf_parse_restart  (FILE * input_file )
6761 {
6762     
6763         if ( ! YY_CURRENT_BUFFER ){
6764         surf_parse_ensure_buffer_stack ();
6765                 YY_CURRENT_BUFFER_LVALUE =
6766             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
6767         }
6768
6769         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
6770         surf_parse__load_buffer_state( );
6771 }
6772
6773 /** Switch to a different input buffer.
6774  * @param new_buffer The new input buffer.
6775  * 
6776  */
6777     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
6778 {
6779     
6780         /* TODO. We should be able to replace this entire function body
6781          * with
6782          *              surf_parse_pop_buffer_state();
6783          *              surf_parse_push_buffer_state(new_buffer);
6784      */
6785         surf_parse_ensure_buffer_stack ();
6786         if ( YY_CURRENT_BUFFER == new_buffer )
6787                 return;
6788
6789         if ( YY_CURRENT_BUFFER )
6790                 {
6791                 /* Flush out information for old buffer. */
6792                 *(yy_c_buf_p) = (yy_hold_char);
6793                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6794                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6795                 }
6796
6797         YY_CURRENT_BUFFER_LVALUE = new_buffer;
6798         surf_parse__load_buffer_state( );
6799
6800         /* We don't actually know whether we did this switch during
6801          * EOF (surf_parse_wrap()) processing, but the only time this flag
6802          * is looked at is after surf_parse_wrap() is called, so it's safe
6803          * to go ahead and always set it.
6804          */
6805         (yy_did_buffer_switch_on_eof) = 1;
6806 }
6807
6808 static void surf_parse__load_buffer_state  (void)
6809 {
6810         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6811         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6812         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6813         (yy_hold_char) = *(yy_c_buf_p);
6814 }
6815
6816 /** Allocate and initialize an input buffer state.
6817  * @param file A readable stream.
6818  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6819  * 
6820  * @return the allocated buffer state.
6821  */
6822     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
6823 {
6824         YY_BUFFER_STATE b;
6825     
6826         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
6827         if ( ! b )
6828                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
6829
6830         b->yy_buf_size = size;
6831
6832         /* yy_ch_buf has to be 2 characters longer than the size given because
6833          * we need to put in 2 end-of-buffer characters.
6834          */
6835         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
6836         if ( ! b->yy_ch_buf )
6837                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
6838
6839         b->yy_is_our_buffer = 1;
6840
6841         surf_parse__init_buffer(b,file );
6842
6843         return b;
6844 }
6845
6846 /** Destroy the buffer.
6847  * @param b a buffer created with surf_parse__create_buffer()
6848  * 
6849  */
6850     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
6851 {
6852     
6853         if ( ! b )
6854                 return;
6855
6856         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6857                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6858
6859         if ( b->yy_is_our_buffer )
6860                 surf_parse_free((void *) b->yy_ch_buf  );
6861
6862         surf_parse_free((void *) b  );
6863 }
6864
6865 #ifndef __cplusplus
6866 extern int isatty (int );
6867 #endif /* __cplusplus */
6868     
6869 /* Initializes or reinitializes a buffer.
6870  * This function is sometimes called more than once on the same buffer,
6871  * such as during a surf_parse_restart() or at EOF.
6872  */
6873     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
6874
6875 {
6876         int oerrno = errno;
6877     
6878         surf_parse__flush_buffer(b );
6879
6880         b->yy_input_file = file;
6881         b->yy_fill_buffer = 1;
6882
6883     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
6884      * called from surf_parse_restart() or through yy_get_next_buffer.
6885      * In that case, we don't want to reset the lineno or column.
6886      */
6887     if (b != YY_CURRENT_BUFFER){
6888         b->yy_bs_lineno = 1;
6889         b->yy_bs_column = 0;
6890     }
6891
6892         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6893     
6894         errno = oerrno;
6895 }
6896
6897 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6898  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6899  * 
6900  */
6901     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
6902 {
6903         if ( ! b )
6904                 return;
6905
6906         b->yy_n_chars = 0;
6907
6908         /* We always need two end-of-buffer characters.  The first causes
6909          * a transition to the end-of-buffer state.  The second causes
6910          * a jam in that state.
6911          */
6912         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6913         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6914
6915         b->yy_buf_pos = &b->yy_ch_buf[0];
6916
6917         b->yy_at_bol = 1;
6918         b->yy_buffer_status = YY_BUFFER_NEW;
6919
6920         if ( b == YY_CURRENT_BUFFER )
6921                 surf_parse__load_buffer_state( );
6922 }
6923
6924 /** Pushes the new state onto the stack. The new state becomes
6925  *  the current state. This function will allocate the stack
6926  *  if necessary.
6927  *  @param new_buffer The new state.
6928  *  
6929  */
6930 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
6931 {
6932         if (new_buffer == NULL)
6933                 return;
6934
6935         surf_parse_ensure_buffer_stack();
6936
6937         /* This block is copied from surf_parse__switch_to_buffer. */
6938         if ( YY_CURRENT_BUFFER )
6939                 {
6940                 /* Flush out information for old buffer. */
6941                 *(yy_c_buf_p) = (yy_hold_char);
6942                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6943                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6944                 }
6945
6946         /* Only push if top exists. Otherwise, replace top. */
6947         if (YY_CURRENT_BUFFER)
6948                 (yy_buffer_stack_top)++;
6949         YY_CURRENT_BUFFER_LVALUE = new_buffer;
6950
6951         /* copied from surf_parse__switch_to_buffer. */
6952         surf_parse__load_buffer_state( );
6953         (yy_did_buffer_switch_on_eof) = 1;
6954 }
6955
6956 /** Removes and deletes the top of the stack, if present.
6957  *  The next element becomes the new top.
6958  *  
6959  */
6960 void surf_parse_pop_buffer_state (void)
6961 {
6962         if (!YY_CURRENT_BUFFER)
6963                 return;
6964
6965         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
6966         YY_CURRENT_BUFFER_LVALUE = NULL;
6967         if ((yy_buffer_stack_top) > 0)
6968                 --(yy_buffer_stack_top);
6969
6970         if (YY_CURRENT_BUFFER) {
6971                 surf_parse__load_buffer_state( );
6972                 (yy_did_buffer_switch_on_eof) = 1;
6973         }
6974 }
6975
6976 /* Allocates the stack if it does not exist.
6977  *  Guarantees space for at least one push.
6978  */
6979 static void surf_parse_ensure_buffer_stack (void)
6980 {
6981         int num_to_alloc;
6982     
6983         if (!(yy_buffer_stack)) {
6984
6985                 /* First allocation is just for 2 elements, since we don't know if this
6986                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
6987                  * immediate realloc on the next call.
6988          */
6989                 num_to_alloc = 1;
6990                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
6991                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
6992                                                                 );
6993                 if ( ! (yy_buffer_stack) )
6994                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
6995                                                                   
6996                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6997                                 
6998                 (yy_buffer_stack_max) = num_to_alloc;
6999                 (yy_buffer_stack_top) = 0;
7000                 return;
7001         }
7002
7003         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
7004
7005                 /* Increase the buffer to prepare for a possible push. */
7006                 int grow_size = 8 /* arbitrary grow size */;
7007
7008                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
7009                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
7010                                                                 ((yy_buffer_stack),
7011                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
7012                                                                 );
7013                 if ( ! (yy_buffer_stack) )
7014                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
7015
7016                 /* zero only the new slots.*/
7017                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
7018                 (yy_buffer_stack_max) = num_to_alloc;
7019         }
7020 }
7021
7022 /** Setup the input buffer state to scan directly from a user-specified character buffer.
7023  * @param base the character buffer
7024  * @param size the size in bytes of the character buffer
7025  * 
7026  * @return the newly allocated buffer state object. 
7027  */
7028 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
7029 {
7030         YY_BUFFER_STATE b;
7031     
7032         if ( size < 2 ||
7033              base[size-2] != YY_END_OF_BUFFER_CHAR ||
7034              base[size-1] != YY_END_OF_BUFFER_CHAR )
7035                 /* They forgot to leave room for the EOB's. */
7036                 return 0;
7037
7038         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
7039         if ( ! b )
7040                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
7041
7042         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
7043         b->yy_buf_pos = b->yy_ch_buf = base;
7044         b->yy_is_our_buffer = 0;
7045         b->yy_input_file = 0;
7046         b->yy_n_chars = b->yy_buf_size;
7047         b->yy_is_interactive = 0;
7048         b->yy_at_bol = 1;
7049         b->yy_fill_buffer = 0;
7050         b->yy_buffer_status = YY_BUFFER_NEW;
7051
7052         surf_parse__switch_to_buffer(b  );
7053
7054         return b;
7055 }
7056
7057 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
7058  * scan from a @e copy of @a str.
7059  * @param yystr a NUL-terminated string to scan
7060  * 
7061  * @return the newly allocated buffer state object.
7062  * @note If you want to scan bytes that may contain NUL values, then use
7063  *       surf_parse__scan_bytes() instead.
7064  */
7065 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
7066 {
7067     
7068         return surf_parse__scan_bytes(yystr,strlen(yystr) );
7069 }
7070
7071 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
7072  * scan from a @e copy of @a bytes.
7073  * @param yybytes the byte buffer to scan
7074  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
7075  * 
7076  * @return the newly allocated buffer state object.
7077  */
7078 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
7079 {
7080         YY_BUFFER_STATE b;
7081         char *buf;
7082         yy_size_t n;
7083         int i;
7084     
7085         /* Get memory for full buffer, including space for trailing EOB's. */
7086         n = _yybytes_len + 2;
7087         buf = (char *) surf_parse_alloc(n  );
7088         if ( ! buf )
7089                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
7090
7091         for ( i = 0; i < _yybytes_len; ++i )
7092                 buf[i] = yybytes[i];
7093
7094         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
7095
7096         b = surf_parse__scan_buffer(buf,n );
7097         if ( ! b )
7098                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
7099
7100         /* It's okay to grow etc. this buffer, and we should throw it
7101          * away when we're done.
7102          */
7103         b->yy_is_our_buffer = 1;
7104
7105         return b;
7106 }
7107
7108     static void yy_push_state (int  new_state )
7109 {
7110         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
7111                 {
7112                 yy_size_t new_size;
7113
7114                 (yy_start_stack_depth) += YY_START_STACK_INCR;
7115                 new_size = (yy_start_stack_depth) * sizeof( int );
7116
7117                 if ( ! (yy_start_stack) )
7118                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
7119
7120                 else
7121                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
7122
7123                 if ( ! (yy_start_stack) )
7124                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
7125                 }
7126
7127         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
7128
7129         BEGIN(new_state);
7130 }
7131
7132     static void yy_pop_state  (void)
7133 {
7134         if ( --(yy_start_stack_ptr) < 0 )
7135                 YY_FATAL_ERROR( "start-condition stack underflow" );
7136
7137         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
7138 }
7139
7140 #ifndef YY_EXIT_FAILURE
7141 #define YY_EXIT_FAILURE 2
7142 #endif
7143
7144 static void yy_fatal_error (yyconst char* msg )
7145 {
7146         (void) fprintf( stderr, "%s\n", msg );
7147         exit( YY_EXIT_FAILURE );
7148 }
7149
7150 /* Redefine yyless() so it works in section 3 code. */
7151
7152 #undef yyless
7153 #define yyless(n) \
7154         do \
7155                 { \
7156                 /* Undo effects of setting up surf_parse_text. */ \
7157         int yyless_macro_arg = (n); \
7158         YY_LESS_LINENO(yyless_macro_arg);\
7159                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
7160                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
7161                 (yy_hold_char) = *(yy_c_buf_p); \
7162                 *(yy_c_buf_p) = '\0'; \
7163                 surf_parse_leng = yyless_macro_arg; \
7164                 } \
7165         while ( 0 )
7166
7167 /* Accessor  methods (get/set functions) to struct members. */
7168
7169 /** Get the current line number.
7170  * 
7171  */
7172 int surf_parse_get_lineno  (void)
7173 {
7174         
7175     return surf_parse_lineno;
7176 }
7177
7178 /** Get the input stream.
7179  * 
7180  */
7181 FILE *surf_parse_get_in  (void)
7182 {
7183         return surf_parse_in;
7184 }
7185
7186 /** Get the output stream.
7187  * 
7188  */
7189 FILE *surf_parse_get_out  (void)
7190 {
7191         return surf_parse_out;
7192 }
7193
7194 /** Get the length of the current token.
7195  * 
7196  */
7197 int surf_parse_get_leng  (void)
7198 {
7199         return surf_parse_leng;
7200 }
7201
7202 /** Get the current token.
7203  * 
7204  */
7205
7206 char *surf_parse_get_text  (void)
7207 {
7208         return surf_parse_text;
7209 }
7210
7211 /** Set the current line number.
7212  * @param line_number
7213  * 
7214  */
7215 void surf_parse_set_lineno (int  line_number )
7216 {
7217     
7218     surf_parse_lineno = line_number;
7219 }
7220
7221 /** Set the input stream. This does not discard the current
7222  * input buffer.
7223  * @param in_str A readable stream.
7224  * 
7225  * @see surf_parse__switch_to_buffer
7226  */
7227 void surf_parse_set_in (FILE *  in_str )
7228 {
7229         surf_parse_in = in_str ;
7230 }
7231
7232 void surf_parse_set_out (FILE *  out_str )
7233 {
7234         surf_parse_out = out_str ;
7235 }
7236
7237 int surf_parse_get_debug  (void)
7238 {
7239         return surf_parse__flex_debug;
7240 }
7241
7242 void surf_parse_set_debug (int  bdebug )
7243 {
7244         surf_parse__flex_debug = bdebug ;
7245 }
7246
7247 static int yy_init_globals (void)
7248 {
7249         /* Initialization is the same as for the non-reentrant scanner.
7250      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
7251      */
7252
7253     /* We do not touch surf_parse_lineno unless the option is enabled. */
7254     surf_parse_lineno =  1;
7255     
7256     (yy_buffer_stack) = 0;
7257     (yy_buffer_stack_top) = 0;
7258     (yy_buffer_stack_max) = 0;
7259     (yy_c_buf_p) = (char *) 0;
7260     (yy_init) = 0;
7261     (yy_start) = 0;
7262
7263     (yy_start_stack_ptr) = 0;
7264     (yy_start_stack_depth) = 0;
7265     (yy_start_stack) =  NULL;
7266
7267 /* Defined in main.c */
7268 #ifdef YY_STDINIT
7269     surf_parse_in = stdin;
7270     surf_parse_out = stdout;
7271 #else
7272     surf_parse_in = (FILE *) 0;
7273     surf_parse_out = (FILE *) 0;
7274 #endif
7275
7276     /* For future reference: Set errno on error, since we are called by
7277      * surf_parse_lex_init()
7278      */
7279     return 0;
7280 }
7281
7282 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
7283 int surf_parse_lex_destroy  (void)
7284 {
7285     
7286     /* Pop the buffer stack, destroying each element. */
7287         while(YY_CURRENT_BUFFER){
7288                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
7289                 YY_CURRENT_BUFFER_LVALUE = NULL;
7290                 surf_parse_pop_buffer_state();
7291         }
7292
7293         /* Destroy the stack itself. */
7294         surf_parse_free((yy_buffer_stack) );
7295         (yy_buffer_stack) = NULL;
7296
7297     /* Destroy the start condition stack. */
7298         surf_parse_free((yy_start_stack)  );
7299         (yy_start_stack) = NULL;
7300
7301     /* Reset the globals. This is important in a non-reentrant scanner so the next time
7302      * surf_parse_lex() is called, initialization will occur. */
7303     yy_init_globals( );
7304
7305     return 0;
7306 }
7307
7308 /*
7309  * Internal utility routines.
7310  */
7311
7312 #ifndef yytext_ptr
7313 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
7314 {
7315         register int i;
7316         for ( i = 0; i < n; ++i )
7317                 s1[i] = s2[i];
7318 }
7319 #endif
7320
7321 #ifdef YY_NEED_STRLEN
7322 static int yy_flex_strlen (yyconst char * s )
7323 {
7324         register int n;
7325         for ( n = 0; s[n]; ++n )
7326                 ;
7327
7328         return n;
7329 }
7330 #endif
7331
7332 void *surf_parse_alloc (yy_size_t  size )
7333 {
7334         return (void *) malloc( size );
7335 }
7336
7337 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
7338 {
7339         /* The cast to (char *) in the following accommodates both
7340          * implementations that use char* generic pointers, and those
7341          * that use void* generic pointers.  It works with the latter
7342          * because both ANSI C and C++ allow castless assignment from
7343          * any pointer type to void*, and deal with argument conversions
7344          * as though doing an assignment.
7345          */
7346         return (void *) realloc( (char *) ptr, size );
7347 }
7348
7349 void surf_parse_free (void * ptr )
7350 {
7351         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
7352 }
7353
7354 #define YYTABLES_NAME "yytables"
7355
7356 /* Element context stack lookup. */
7357 int surfxml_element_context(int i)
7358 {
7359   return (0<i && i<yy_start_stack_depth
7360           ? yy_start_stack[yy_start_stack_ptr - i]
7361           : 0);
7362 }
7363
7364 #ifdef FLEX_DEBUG
7365 void print_yy_stack(char* fmt, ...)
7366 {
7367   int i = 0; va_list ap; va_start(ap, fmt);
7368   vfprintf(stderr, fmt, ap);
7369   if (surfxml_statenames) {
7370       for (i=1; i<yy_start_stack_ptr; i++) {
7371           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
7372       }
7373       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
7374   }
7375   va_end(ap);
7376 }
7377
7378 void print_surfxml_bufferstack()
7379 {
7380     int i;
7381     fputs("Buffer: ", stderr);
7382     for (i = 0; i < blimit; i++) {
7383        if ( surfxml_bufferstack[i] == '\377' ) break;
7384          putc(surfxml_bufferstack[i], stderr);
7385     }
7386     putc('\n', stderr);
7387 }
7388
7389 static void debug_enter(int state, const char* statename) {
7390   yy_push_state(state);
7391   if (surf_parse__flex_debug) {
7392        print_yy_stack("--ENTER(%s) : ",statename);
7393        print_surfxml_bufferstack();
7394   }
7395 }
7396
7397 static void debug_leave(void) {
7398     if (surf_parse__flex_debug) {
7399         print_yy_stack("--LEAVE : ");
7400         print_surfxml_bufferstack();
7401     }
7402   yy_pop_state();
7403 }
7404
7405 static void debug_set(int state, const char* statename) {
7406   BEGIN(state);
7407   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
7408 }
7409 #endif
7410
7411 static void cleanup(void)
7412 {
7413     if (surfxml_statenames) {
7414         free(surfxml_statenames);
7415         surfxml_statenames = NULL;
7416     }
7417     free(surfxml_bufferstack);
7418     surfxml_bufferstack = NULL;
7419
7420     free(indexstack);
7421     indexstack = NULL;
7422 }
7423
7424 static int fail(const char* fmt, ...)
7425 {
7426     int chars_left, used;
7427     va_list ap; va_start(ap, fmt);
7428 #ifdef FLEXML_yylineno
7429     used = sprintf(flexml_err_msg,
7430                    "Invalid XML (XML input line %d, state %d): ",
7431                    surf_parse_lineno, YY_START);
7432 #else
7433     used = sprintf(flexml_err_msg,
7434                    "Invalid XML (state %d): ",
7435                    YY_START);
7436 #endif
7437     chars_left = flexml_max_err_msg_size - used - 1;
7438     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
7439     va_end(ap);
7440
7441 #ifndef FLEXML_quiet_parser
7442     /* print directly to sdterr */
7443     fprintf(stderr, "%s\n", flexml_err_msg);
7444     flexml_err_msg[0] = '\0';
7445 #endif
7446
7447     cleanup();
7448
7449     return 1;
7450 }
7451