Logo AND Algorithmique Numérique Distribuée

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