Logo AND Algorithmique Numérique Distribuée

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