Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
3365f526431934025e699ac2268d90de01248cd1
[simgrid.git] / src / surf / surfxml.c
1
2 #line 3 "surf/surfxml.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 31
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15
16 /* First, we deal with  platform-specific or compiler-specific issues. */
17
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23
24 /* end standard C headers. */
25
26 /* flex integer type definitions */
27
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
34 #include <inttypes.h>
35 typedef int8_t flex_int8_t;
36 typedef uint8_t flex_uint8_t;
37 typedef int16_t flex_int16_t;
38 typedef uint16_t flex_uint16_t;
39 typedef int32_t flex_int32_t;
40 typedef uint32_t flex_uint32_t;
41 #else
42 typedef signed char flex_int8_t;
43 typedef short int flex_int16_t;
44 typedef int flex_int32_t;
45 typedef unsigned char flex_uint8_t; 
46 typedef unsigned short int flex_uint16_t;
47 typedef unsigned int flex_uint32_t;
48 #endif /* ! C99 */
49
50 /* Limits of integral types. */
51 #ifndef INT8_MIN
52 #define INT8_MIN               (-128)
53 #endif
54 #ifndef INT16_MIN
55 #define INT16_MIN              (-32767-1)
56 #endif
57 #ifndef INT32_MIN
58 #define INT32_MIN              (-2147483647-1)
59 #endif
60 #ifndef INT8_MAX
61 #define INT8_MAX               (127)
62 #endif
63 #ifndef INT16_MAX
64 #define INT16_MAX              (32767)
65 #endif
66 #ifndef INT32_MAX
67 #define INT32_MAX              (2147483647)
68 #endif
69 #ifndef UINT8_MAX
70 #define UINT8_MAX              (255U)
71 #endif
72 #ifndef UINT16_MAX
73 #define UINT16_MAX             (65535U)
74 #endif
75 #ifndef UINT32_MAX
76 #define UINT32_MAX             (4294967295U)
77 #endif
78
79 #endif /* ! FLEXINT_H */
80
81 #ifdef __cplusplus
82
83 /* The "const" storage-class-modifier is valid. */
84 #define YY_USE_CONST
85
86 #else   /* ! __cplusplus */
87
88 #if __STDC__
89
90 #define YY_USE_CONST
91
92 #endif  /* __STDC__ */
93 #endif  /* ! __cplusplus */
94
95 #ifdef YY_USE_CONST
96 #define yyconst const
97 #else
98 #define yyconst
99 #endif
100
101 /* Returned upon end-of-file. */
102 #define YY_NULL 0
103
104 /* Promotes a possibly negative, possibly signed char to an unsigned
105  * integer for use as an array index.  If the signed char is negative,
106  * we want to instead treat it as an 8-bit unsigned char, hence the
107  * double cast.
108  */
109 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
110
111 /* Enter a start condition.  This macro really ought to take a parameter,
112  * but we do it the disgusting crufty way forced on us by the ()-less
113  * definition of BEGIN.
114  */
115 #define BEGIN (yy_start) = 1 + 2 *
116
117 /* Translate the current start state into a value that can be later handed
118  * to BEGIN to return to the state.  The YYSTATE alias is for lex
119  * compatibility.
120  */
121 #define YY_START (((yy_start) - 1) / 2)
122 #define YYSTATE YY_START
123
124 /* Action number for EOF rule of a given start state. */
125 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
126
127 /* Special action meaning "start processing a new file". */
128 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
129
130 #define YY_END_OF_BUFFER_CHAR 0
131
132 /* Size of default input buffer. */
133 #ifndef YY_BUF_SIZE
134 #define YY_BUF_SIZE 16384
135 #endif
136
137 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
138 #define YY_TYPEDEF_YY_BUFFER_STATE
139 typedef struct yy_buffer_state *YY_BUFFER_STATE;
140 #endif
141
142 extern int surf_parse_leng;
143
144 extern FILE *surf_parse_in, *surf_parse_out;
145
146 #define EOB_ACT_CONTINUE_SCAN 0
147 #define EOB_ACT_END_OF_FILE 1
148 #define EOB_ACT_LAST_MATCH 2
149
150     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
151      *       access to the local variable yy_act. Since yyless() is a macro, it would break
152      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
153      *       One obvious solution it to make yy_act a global. I tried that, and saw
154      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
155      *       normally declared as a register variable-- so it is not worth it.
156      */
157     #define  YY_LESS_LINENO(n) \
158             do { \
159                 int yyl;\
160                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
161                     if ( surf_parse_text[yyl] == '\n' )\
162                         --surf_parse_lineno;\
163             }while(0)
164     
165 /* Return all but the first "n" matched characters back to the input stream. */
166 #define yyless(n) \
167         do \
168                 { \
169                 /* Undo effects of setting up surf_parse_text. */ \
170         int yyless_macro_arg = (n); \
171         YY_LESS_LINENO(yyless_macro_arg);\
172                 *yy_cp = (yy_hold_char); \
173                 YY_RESTORE_YY_MORE_OFFSET \
174                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
175                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
176                 } \
177         while ( 0 )
178
179 #define unput(c) yyunput( c, (yytext_ptr)  )
180
181 /* The following is because we cannot portably get our hands on size_t
182  * (without autoconf's help, which isn't available because we want
183  * flex-generated scanners to compile on their own).
184  */
185
186 #ifndef YY_TYPEDEF_YY_SIZE_T
187 #define YY_TYPEDEF_YY_SIZE_T
188 typedef unsigned int yy_size_t;
189 #endif
190
191 #ifndef YY_STRUCT_YY_BUFFER_STATE
192 #define YY_STRUCT_YY_BUFFER_STATE
193 struct yy_buffer_state
194         {
195         FILE *yy_input_file;
196
197         char *yy_ch_buf;                /* input buffer */
198         char *yy_buf_pos;               /* current position in input buffer */
199
200         /* Size of input buffer in bytes, not including room for EOB
201          * characters.
202          */
203         yy_size_t yy_buf_size;
204
205         /* Number of characters read into yy_ch_buf, not including EOB
206          * characters.
207          */
208         int yy_n_chars;
209
210         /* Whether we "own" the buffer - i.e., we know we created it,
211          * and can realloc() it to grow it, and should free() it to
212          * delete it.
213          */
214         int yy_is_our_buffer;
215
216         /* Whether this is an "interactive" input source; if so, and
217          * if we're using stdio for input, then we want to use getc()
218          * instead of fread(), to make sure we stop fetching input after
219          * each newline.
220          */
221         int yy_is_interactive;
222
223         /* Whether we're considered to be at the beginning of a line.
224          * If so, '^' rules will be active on the next match, otherwise
225          * not.
226          */
227         int yy_at_bol;
228
229     int yy_bs_lineno; /**< The line count. */
230     int yy_bs_column; /**< The column count. */
231     
232         /* Whether to try to fill the input buffer when we reach the
233          * end of it.
234          */
235         int yy_fill_buffer;
236
237         int yy_buffer_status;
238
239 #define YY_BUFFER_NEW 0
240 #define YY_BUFFER_NORMAL 1
241         /* When an EOF's been seen but there's still some text to process
242          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
243          * shouldn't try reading from the input source any more.  We might
244          * still have a bunch of tokens to match, though, because of
245          * possible backing-up.
246          *
247          * When we actually see the EOF, we change the status to "new"
248          * (via surf_parse_restart()), so that the user can continue scanning by
249          * just pointing surf_parse_in at a new input file.
250          */
251 #define YY_BUFFER_EOF_PENDING 2
252
253         };
254 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
255
256 /* Stack of input buffers. */
257 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
258 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
259 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
260
261 /* We provide macros for accessing buffer states in case in the
262  * future we want to put the buffer states in a more general
263  * "scanner state".
264  *
265  * Returns the top of the stack, or NULL.
266  */
267 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
268                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
269                           : NULL)
270
271 /* Same as previous macro, but useful when we know that the buffer stack is not
272  * NULL or when we need an lvalue. For internal use only.
273  */
274 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
275
276 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
277 static char yy_hold_char;
278 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
279 int surf_parse_leng;
280
281 /* Points to current character in buffer. */
282 static char *yy_c_buf_p = (char *) 0;
283 static int yy_init = 1;         /* whether we need to initialize */
284 static int yy_start = 0;        /* start state number */
285
286 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
287  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
288  */
289 static int yy_did_buffer_switch_on_eof;
290
291 void surf_parse_restart (FILE *input_file  );
292 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
293 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
294 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
295 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
296 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
297 void surf_parse_pop_buffer_state (void );
298
299 static void surf_parse_ensure_buffer_stack (void );
300 static void surf_parse__load_buffer_state (void );
301 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
302
303 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
304
305 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
306 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
307 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
308
309 void *surf_parse_alloc (yy_size_t  );
310 void *surf_parse_realloc (void *,yy_size_t  );
311 void surf_parse_free (void *  );
312
313 #define yy_new_buffer surf_parse__create_buffer
314
315 #define yy_set_interactive(is_interactive) \
316         { \
317         if ( ! YY_CURRENT_BUFFER ){ \
318         surf_parse_ensure_buffer_stack (); \
319                 YY_CURRENT_BUFFER_LVALUE =    \
320             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
321         } \
322         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
323         }
324
325 #define yy_set_bol(at_bol) \
326         { \
327         if ( ! YY_CURRENT_BUFFER ){\
328         surf_parse_ensure_buffer_stack (); \
329                 YY_CURRENT_BUFFER_LVALUE =    \
330             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
331         } \
332         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
333         }
334
335 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
336
337 /* Begin user sect3 */
338
339 #define surf_parse_wrap() 1
340 #define YY_SKIP_YYWRAP
341
342 typedef unsigned char YY_CHAR;
343
344 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
345
346 typedef int yy_state_type;
347
348 extern int surf_parse_lineno;
349
350 int surf_parse_lineno = 1;
351
352 extern char *surf_parse_text;
353 #define yytext_ptr surf_parse_text
354
355 static yy_state_type yy_get_previous_state (void );
356 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
357 static int yy_get_next_buffer (void );
358 static void yy_fatal_error (yyconst char msg[]  );
359
360 /* Done after the current pattern has been matched and before the
361  * corresponding action - sets up surf_parse_text.
362  */
363 #define YY_DO_BEFORE_ACTION \
364         (yytext_ptr) = yy_bp; \
365         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
366         (yy_hold_char) = *yy_cp; \
367         *yy_cp = '\0'; \
368         (yy_c_buf_p) = yy_cp;
369
370 #define YY_NUM_RULES 178
371 #define YY_END_OF_BUFFER 179
372 /* This struct is not used in this scanner,
373    but its presence is necessary. */
374 struct yy_trans_info
375         {
376         flex_int32_t yy_verify;
377         flex_int32_t yy_nxt;
378         };
379 static yyconst flex_int16_t yy_accept[1345] =
380     {   0,
381         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
382         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
383         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
384         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
385         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
386         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
387         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
388         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
389         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
390         0,    0,  179,  177,   22,   10,   10,   22,   22,  157,
391
392        10,  157,    5,    6,    5,    8,    9,    8,  173,  165,
393       166,  174,  171,  174,  172,  176,  165,  166,  176,  177,
394        28,   10,   28,   28,   28,   26,   28,   32,   10,   32,
395       177,   32,  177,   38,   10,   38,   38,   38,   36,   38,
396        42,   10,   42,   42,  177,   68,   10,   68,   68,   68,
397        66,   68,   68,   68,   68,   68,   68,   72,   10,   72,
398       177,   96,   10,   96,   96,   96,   94,   96,   96,   96,
399        96,  100,   10,  100,  177,  116,   10,  116,  116,  116,
400       114,  116,  116,  116,  120,   10,  120,  177,  120,  126,
401        10,  126,  126,  126,  124,  126,  130,   10,  130,  177,
402
403       142,   10,  142,  142,  142,  140,  142,  142,  142,  142,
404       146,   10,  146,  177,  146,  152,   10,  152,  152,  152,
405       150,  152,  156,   10,  156,  174,  173,   10,    0,    2,
406         2,    0,    4,    7,  168,  167,    0,    0,    0,    0,
407         0,    0,    0,   27,   29,   29,    0,    0,    0,    0,
408         0,    0,   37,   39,   39,    0,   67,   69,   69,   69,
409        69,   69,   69,   69,    0,   95,   97,   97,   97,   97,
410        97,   97,    0,  115,  117,  117,  117,  117,    0,    0,
411       125,  127,  127,    0,  141,  143,  143,  143,  143,  143,
412         0,    0,  151,  153,  153,    0,    0,    0,    0,    0,
413
414         0,    0,    3,    0,    0,    0,    0,    0,    0,    0,
415       175,    0,   29,    0,    0,    0,    0,    0,    0,    0,
416        39,    0,    0,   69,   69,   69,   69,   69,   69,    0,
417         0,   97,   97,   97,   97,   97,    0,    0,  117,  117,
418       117,    0,    0,    0,  127,    0,    0,  143,  143,  143,
419       143,    0,    0,    0,  153,    0,    0,    0,  170,    0,
420        21,    1,    0,    0,  163,    0,    0,    0,  160,  159,
421         0,    0,   29,    0,    0,   31,    0,   43,    0,    0,
422         0,    0,   39,    0,    0,   41,    0,   69,   69,   69,
423        69,   69,   69,    0,    0,   71,    0,   97,   97,   97,
424
425        97,   97,    0,    0,   99,    0,    0,    0,  117,    0,
426         0,    0,    0,  119,    0,    0,  127,    0,    0,  129,
427         0,  143,  143,  143,  143,    0,    0,  145,    0,    0,
428       153,    0,    0,  155,    0,    0,    0,    0,  164,  158,
429         0,    0,    0,   29,    0,   43,    0,    0,    0,    0,
430         0,    0,    0,   69,   69,   69,    0,    0,   69,   69,
431         0,   97,   97,    0,    0,   97,   97,    0,    0,  105,
432       104,  117,    0,  103,  102,    0,    0,    0,    0,    0,
433       143,    0,    0,  143,  143,    0,    0,  153,    0,    0,
434         0,    0,    0,   12,    0,  161,  162,    0,   29,    0,
435
436         0,    0,    0,  101,    0,   35,   34,    0,   69,   69,
437        69,    0,   45,   44,    0,    0,    0,    0,   69,    0,
438        70,   97,   97,    0,   75,   74,   97,    0,    0,   97,
439         0,  117,    0,    0,    0,  123,  122,    0,  143,    0,
440       133,  132,  143,  143,    0,    0,    0,    0,    0,    0,
441         0,    0,    0,   11,    0,   29,    0,    0,    0,    0,
442       101,    0,   69,   69,   69,    0,   47,   46,    0,    0,
443         0,   69,   97,   97,   97,    0,    0,    0,   97,    0,
444       117,    0,    0,    0,  143,  143,  143,    0,    0,    0,
445       149,  148,    0,    0,    0,    0,    0,    0,    0,    0,
446
447         0,   33,    0,  131,    0,   69,   69,   69,    0,    0,
448        69,   97,    0,    0,   97,   97,    0,    0,   97,    0,
449       117,    0,  118,    0,    0,  143,  143,  143,    0,    0,
450         0,    0,    0,    0,    0,    0,    0,   25,   24,    0,
451        33,    0,  131,    0,   69,   69,   69,    0,    0,    0,
452         0,   69,   97,    0,   81,   80,   97,   97,    0,    0,
453         0,    0,   97,    0,  117,    0,    0,    0,    0,  143,
454       143,    0,  147,    0,  169,    0,    0,    0,    0,    0,
455         0,    0,   40,   69,   69,   69,    0,   53,    0,   52,
456        69,    0,    0,   97,   97,   97,    0,   85,    0,   84,
457
458        97,    0,  117,    0,    0,    0,  135,  134,    0,    0,
459       143,    0,  144,  147,    0,    0,    0,    0,    0,    0,
460         0,    0,    0,    0,    0,    0,   69,   69,   69,   55,
461        54,    0,    0,    0,   77,   76,   97,   97,   97,   87,
462        86,    0,    0,    0,  117,  117,    0,    0,    0,  139,
463       138,    0,    0,    0,  154,    0,    0,    0,    0,    0,
464         0,    0,    0,    0,    0,    0,    0,   69,   69,   69,
465         0,   57,   56,   97,   97,   97,    0,   89,   88,    0,
466       117,  117,    0,    0,    0,  137,  136,    0,    0,    0,
467         0,    0,    0,    0,    0,    0,    0,    0,   73,    0,
468
469         0,   69,   69,   69,   97,    0,    0,   97,    0,  117,
470       117,    0,    0,    0,    0,    0,    0,    0,    0,    0,
471         0,    0,    0,    0,    0,   73,    0,   49,   48,   69,
472        69,   69,   69,   97,    0,   83,   82,   97,    0,    0,
473         0,  117,    0,    0,  117,  121,    0,    0,    0,    0,
474         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
475         0,   69,   69,   69,   69,    0,    0,    0,    0,    0,
476        98,    0,  109,  108,  117,    0,  107,  106,  117,  121,
477         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
478         0,    0,    0,    0,    0,    0,   69,   69,   69,   69,
479
480         0,   79,   78,    0,    0,    0,  117,  117,    0,  128,
481         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
482        12,    0,   12,    0,    0,    0,   69,   69,   69,   69,
483         0,    0,    0,    0,  117,  117,    0,    0,    0,    0,
484         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
485         0,    0,    0,    0,    0,    0,   69,    0,    0,    0,
486         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
487         0,    0,    0,    0,    0,    0,    0,   51,   50,    0,
488        61,   60,    0,   59,   58,   69,    0,   65,   64,    0,
489         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
490
491         0,    0,    0,   11,    0,    0,   69,    0,    0,    0,
492         0,  117,  117,    0,    0,    0,    0,    0,    0,    0,
493         0,   23,    0,   69,    0,    0,    0,    0,  117,  117,
494         0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
495         0,   69,    0,    0,    0,    0,  117,  117,    0,    0,
496         0,    0,    0,    0,    0,    0,    0,    0,   30,    0,
497         0,    0,   91,    0,   90,  117,  117,    0,    0,    0,
498         0,    0,    0,    0,    0,    0,    0,    0,   63,   62,
499        93,   92,  117,  117,    0,    0,    0,    0,    0,    0,
500         0,    0,    0,    0,  117,  117,    0,    0,    0,    0,
501
502         0,    0,    0,    0,    0,    0,    0,    0,  117,  117,
503         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
504         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
505         0,    0,    0,    0,    0,    0,    0,    0,  117,  117,
506         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
507         0,    0,    0,  117,  117,    0,    0,    0,    0,    0,
508         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
509         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
510         0,    0,    0,    0,    0,    0,    0,  113,  112,    0,
511       111,  110,    0,    0,    0,    0,    0,    0,    0,    0,
512
513         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
514         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
515         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
516         0,    0,    0,    0,    0,    0,    0,    0,    0,   15,
517         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
518         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
519         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
520         0,    0,    0,   17,    0,    0,    0,    0,    0,    0,
521         0,    0,    0,    0,    0,    0,    0,   16,    0,    0,
522         0,    0,    0,   20,    0,    0,    0,   13,    0,    0,
523
524         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
525         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
526         0,    0,   19,    0,    0,    0,    0,    0,    0,   14,
527         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
528         0,    0,   18,    0
529     } ;
530
531 static yyconst flex_int32_t yy_ec[256] =
532     {   0,
533         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
534         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
535         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
536         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
537         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
538        13,   13,   13,   13,   13,   13,   13,   14,   15,   16,
539        17,   18,   19,    1,   20,   21,   22,   23,   24,   25,
540        14,   26,   27,   14,   14,   14,   28,   29,   30,   31,
541        14,   32,   33,   34,   14,   14,   14,   14,   35,   14,
542        36,    1,   37,    1,   38,    1,   39,   40,   41,   42,
543
544        43,   44,   45,   46,   47,   14,   48,   49,   50,   51,
545        52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
546        62,   14,    1,    1,    1,    1,    1,    1,    1,    1,
547         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
548         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
549         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
550         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
551         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
552         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
553         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
554
555         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
556         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
557         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
558         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
559         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
560         1,    1,    1,    1,    1
561     } ;
562
563 static yyconst flex_int32_t yy_meta[63] =
564     {   0,
565         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
566         3,    1,    4,    5,    1,    1,    1,    6,    1,    7,
567         7,    7,    7,    7,    7,    5,    5,    5,    5,    5,
568         5,    5,    5,    5,    5,    1,    1,    5,    7,    7,
569         7,    7,    7,    7,    5,    5,    5,    5,    5,    5,
570         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
571         5,    5
572     } ;
573
574 static yyconst flex_int16_t yy_base[1401] =
575     {   0,
576         0,    0,    0,    3,    6,    9,   24,   27,   11,   14,
577        15,   17,   29,   38,   45,   52,   59,   61,   67,   70,
578        98,  157,   73,   76,  116,  120,  123,  126,  175,  179,
579       182,  185,  216,  260,  234,  238,  241,  278,  282,  285,
580       289,  304,  307,  310,  326,    0,  387,  390,  393,  396,
581       412,  468,  430,  434,  437,  440,  524,  580,  486,  490,
582       493,  496,  542,  546,  549,  552,  598,  602,  636,  687,
583       605,  608,  654,  658,  738,  794,  661,  664,  705,  709,
584       712,  715,  756,  760,  763,  767,  850,  909,  812,  816,
585       833,  868, 3674, 3675, 3675,   91,  141,   47,   62, 3675,
586
587       144,  132, 3675, 3675, 3663, 3675, 3675, 3654, 3675, 3667,
588      3667,  836, 3675, 3675, 3675, 3675, 3665, 3665, 3630,  194,
589      3675,  150, 3648,    0,  136, 3675, 3622, 3675,  200,  888,
590       889,  195,  192, 3675,  206, 3646,    0,  187, 3675, 3616,
591      3675,  313,  942,  446,  803, 3675,  511, 3644,    0,  440,
592      3675, 3602, 3609, 3620, 3619, 3605, 3599, 3675,  518,  558,
593       717, 3675,  570, 3637,    0,  559, 3675, 3615, 3614, 3613,
594        92, 3675,  626,  614,  768, 3675,  679, 3633,    0,  615,
595      3675, 3594, 3599, 3593, 3675,  682,  877,  772,  715, 3675,
596       786, 3629,    0,  773, 3675, 3607, 3675,  822,  883,  878,
597
598      3675,  831, 3627,    0,  859, 3675, 3586, 3591, 3595, 3584,
599      3675,  843,  943,  918,  887, 3675,  947, 3622,    0,  872,
600      3675, 3600, 3675,  956,  951, 3633, 3600,  962,   34, 3575,
601      3675, 3625, 3616, 3675, 3675, 3675,   26,   32, 3576, 3575,
602      3573, 3612, 3580, 3675,    0, 3573, 3574, 3573, 3574, 3581,
603      3568, 3570, 3675,    0, 3572, 3573, 3675,    0, 3580, 3561,
604      3556, 3566, 3555, 3575, 3572, 3675,    0, 3561, 3554, 3560,
605      3570, 3569, 3556, 3675,    0, 3549, 3552, 3563, 3548, 3550,
606      3675,    0, 3551, 3545, 3675,    0, 3548, 3542, 3548, 3557,
607      3542, 3539, 3675,    0, 3544, 3553, 3555, 3572, 3571, 3578,
608
609         5, 3537, 3675,   75,    0, 3533, 3533, 3569, 3568, 3530,
610      3675, 3542, 3524,  969,  972, 3521, 3537, 3520, 3524, 3517,
611      3531,  976,  982, 3526, 3529, 3533, 3527, 3526, 3511,  999,
612      1002, 3525, 3523, 3522, 3509, 3506, 1005, 1008, 1011, 3523,
613      1027, 1032, 1035, 3503, 3517, 1038, 1043, 3518, 3501, 3508,
614      3501, 1055, 1060, 3510, 3496, 1063, 1066, 3531, 3675, 3534,
615      3675, 3675,  233, 3502, 3675, 3535, 3534, 3492, 3675, 3675,
616      3490, 3489, 3498, 1072, 1089, 3675, 1094, 1097, 3495, 3483,
617      3501, 3484, 1100, 1106, 1116, 3675, 1123, 3491, 3484, 3486,
618      1126, 3482, 3493, 1133, 1136, 3675, 1142, 3475, 3483, 1145,
619
620      3486, 3489, 1153, 1163, 3675, 1166, 1170, 1173, 3490, 1186,
621      1189, 1202, 1206, 3675, 1209, 3473, 1212, 1215, 1228, 3675,
622      1232, 3472, 1235, 3490, 3470, 1238, 1241, 3675, 1245, 3468,
623      3482, 1251, 1258, 3675, 1262, 3501,  122, 1268, 3675, 3675,
624      3508, 3507, 3477, 3468, 1271, 1275, 3461, 3466, 3474, 3473,
625      1279, 1289, 1297, 3476, 3470, 3455, 1300, 1307, 1316, 1319,
626      1322, 3465, 3470, 1327, 1339, 3459, 1335, 1347, 1352, 3675,
627      3675, 3452, 1360, 3675, 3675, 1368, 3465, 1372, 1375, 1388,
628      3460, 1391, 1394, 3449, 3467, 1408, 3454, 1411, 1414, 3483,
629       115, 3484, 1417, 3675, 3483, 3675, 3675, 3448, 3448, 1420,
630
631      3456, 3442, 3440, 1427, 1437, 3675, 3675, 1448, 3455, 3451,
632      3436, 1452, 3675, 3675, 1465, 1471, 1481, 1484, 3448, 1492,
633      3675, 3449, 3428, 1498, 3675, 3675, 3444, 1509, 1512, 3444,
634      1520, 3449, 1525, 3448, 1528, 3675, 3675, 1537, 3433, 1542,
635      3675, 3675, 3437, 3426, 1555, 3439, 1550, 1560, 1572, 3447,
636        66,  197,  153, 3675, 3425, 1575, 1579, 3436, 3430, 3421,
637      1582, 1585, 3429, 3420, 3429, 1598, 3675, 3675, 1606, 3443,
638      3442, 3424, 3413, 1615, 3431, 1631, 3438, 3437, 3419, 1621,
639      3413, 1626, 3421, 1639, 3412, 3412, 3414, 1643, 3409, 1646,
640      3675, 3675, 1660, 3439,  300,  281,  194, 3408, 1656, 1663,
641
642      1677, 1591, 3419, 1680, 1683, 3407, 3412, 3402,  296,  376,
643      3404, 3406, 1687, 1703, 3407, 3397,  379,  382, 3400, 1690,
644      3397, 1711, 3675, 3398, 1715, 1694, 3403, 3395, 1718, 3387,
645      1721, 3407, 1738,  238,  408, 3404, 1741, 3675, 3675, 1749,
646      1757, 3392, 1760, 1766, 3393, 3388, 3391, 3412, 3430, 3410,
647      3425, 3390, 1773, 1776, 3675, 3675, 3385, 3379, 3405, 3423,
648      3403, 3418, 3383, 1784, 3387, 3381, 1789, 1792, 1810, 1801,
649      3380, 1821, 1824, 1827, 3675, 1883,  241,  256, 3380, 1830,
650      3374, 1833, 3675, 3363, 3378, 3367, 3411, 3675, 3407, 3675,
651      1838, 1850, 1854, 3371, 3365, 3364, 3406, 3675, 3402, 3675,
652
653      1862, 1870,  896, 3360, 1873, 1890, 3675, 3675, 1878, 1900,
654      1908, 1911, 3675, 1867, 1924,  240,  429,  384,  162,  520,
655       439,  500,  449, 3366, 1929, 3357, 3345, 3363, 3360, 3675,
656      3675, 1937, 1942, 1953, 3675, 3675, 3357, 3360, 3355, 3675,
657      3675, 1961, 1964, 1972, 3345, 3345, 3356, 1977, 1980, 3675,
658      3675, 1989, 1994, 2005, 3675,  549,   73,  660,  558,  632,
659       505,  172,  734,  883, 3342, 2008, 3349, 2011, 3358, 3357,
660      2027, 3675, 3675, 3345, 2018, 3352, 2035, 3675, 3675, 2014,
661      3335, 3350, 3339, 2043, 2050, 3675, 3675,  617, 2060,  661,
662       959,  935,  862,  970,  614, 2064, 3348, 2067, 2070, 2073,
663
664      2085, 3344,  399, 3332, 3245, 2093, 2096, 3225, 2104, 2109,
665      2112, 3220, 2115,  711, 2128,  763,  561,  830,  855,  861,
666      2136, 2139, 2156, 3219, 2165, 2132, 2169, 3675, 3675, 3224,
667      3225, 3222, 3223, 2177, 2182, 3675, 3675, 2193, 2196, 2199,
668      2209, 3199, 2205, 2217, 3196, 2225, 2228,  973,  284,  775,
669       448,  915,  613, 2231, 2234, 2238, 2255, 2285, 2322, 3206,
670      2263, 3197, 3200, 3185, 3174, 2251, 2268, 2303, 2306, 2280,
671      3675, 2340, 3675, 3675, 3179, 2348, 3675, 3675, 3174, 2276,
672      2358,  981,  963, 1000, 1004, 1030, 1076, 2361, 1006, 2364,
673      1054,   41, 2394, 2431, 3163, 2423, 3168, 2993, 3009, 3006,
674
675      2381, 3675, 3675, 2412, 1046, 1055, 2991, 2990, 2389, 3675,
676      1059, 1071, 2451,  585, 1036, 2454, 1088, 1064, 1179,  492,
677      3040,  103, 3036, 2457, 2985, 2460, 2477, 2480, 2483, 2486,
678      3021, 3014, 3012, 3000, 2979, 2977, 2489,  708, 2502, 1065,
679      1093, 2506, 1145, 1140, 3000, 2986, 2979, 2512, 2857, 2515,
680      2523, 2539, 2534, 2550, 2558, 2561, 2845, 2574, 2577, 2791,
681      2791, 2766, 2729, 2678, 2665, 2585,  811, 1124,  951, 1183,
682      1233, 1162, 1176, 2670, 2564, 2590, 2593, 3675, 3675, 2603,
683      3675, 3675, 2611, 3675, 3675, 2539, 2619, 3675, 3675, 2538,
684      2496, 2481, 2434, 2281, 2267, 1270, 2627, 1189, 1135, 1316,
685
686      1294, 1290, 1317, 3675, 2266, 2630, 2198, 2177, 2169, 2163,
687      2124, 2046, 2000, 1314, 2637, 1349, 1104, 1143, 1367, 1266,
688      1386, 2420, 2647, 1901, 1877, 1884, 1639, 1603, 1560, 1503,
689      1429, 1409, 1415, 1364, 2650, 1416, 1381, 2654, 1391, 2657,
690      2660, 2667, 1512, 1483, 1420, 1371, 1263, 1242, 1418, 1441,
691      1461, 1463, 2671, 1203, 1507, 2677, 2688, 2697, 3675, 2705,
692      2708, 1196, 3675, 1141, 3675,  970,  680, 1532, 1487, 1515,
693      2716, 1435, 1210, 2721, 1491, 1543, 2724, 2727, 3675, 3675,
694      3675, 3675,  695,  692, 2741, 1547, 1656, 2744, 1335, 1444,
695      2752, 1538, 1553, 1485,  620,  570, 2762,  498,  719, 1595,
696
697      1598, 1474, 1460, 1692, 1698, 1620, 1710, 1369,  464,  419,
698      1717, 1765, 1618, 1638, 1713, 1731, 1596, 1719, 1739, 1788,
699      1737, 1799, 1587,  409,  369, 1792, 1831, 1653, 1829, 1843,
700      1865, 1780, 1900, 1882, 1903, 1783, 1844, 1899,  258,  187,
701      1917, 1932, 1716, 1879, 1925, 1981, 2770, 1943, 2006, 2016,
702      1935, 2030, 2065, 2773, 2779, 2040, 2083, 1959, 2037, 2102,
703      2103, 2783, 2791, 2126, 2131, 2106, 2127, 2795, 2800, 2812,
704      2803, 2820, 2164, 2187, 1802, 1931, 2225, 2245, 1984, 1986,
705      2828, 2295, 2298, 2159, 2206, 2831, 2839, 3675, 3675, 2848,
706      3675, 3675, 2338, 2354, 2086, 2293, 2227, 2329, 2278, 2359,
707
708      2074, 2337, 2356, 2402, 2410, 1987, 2133, 2424, 2447, 2119,
709      2362, 2484, 2511, 2244, 2314, 1782, 2539, 2555, 2296, 2514,
710      2371, 2453, 2593, 2608, 2856, 2456, 2459, 2401, 2505, 1712,
711      2516, 2526, 2556, 2582, 2529, 2572, 2624, 2679, 2860, 3675,
712      2528, 2620, 2390, 2583, 2357, 2675, 2678, 2629, 2658, 2592,
713      2669, 2684, 2722, 2742, 2749, 2481, 2687, 2232, 2794, 2826,
714      2863, 2792, 2809, 2829, 2837, 2745, 2676, 2720, 2790, 2873,
715      2866, 2810, 2883, 3675, 2838, 2855, 2874, 2880, 2891, 2872,
716      2885, 2904, 2912, 2820, 2879, 2915, 2921, 3675, 2884, 2893,
717      2864, 2881, 2938, 3675, 2916, 2918, 2941, 3675, 2894, 2903,
718
719      2913, 2914, 2920, 2928, 2931, 2932, 2929, 2930, 2934, 2935,
720      2948, 2946, 2734, 2939, 2940, 2945, 2975, 2943, 2947, 2962,
721      2958, 2992, 3675, 2951, 2957, 2995, 2963, 2968, 3012, 3675,
722      2991, 3000, 2982, 2985, 2971, 2972, 3001, 3002, 3015, 3013,
723      3032, 3035, 3675, 3675, 3053, 3060, 3067, 3074, 3081, 3088,
724      3095, 3102, 3109, 3116, 3123, 3130, 3137, 3144, 3151, 3158,
725      3165, 3172, 3179, 3186, 3193, 3200, 3205, 3210, 3215, 3220,
726      3225, 3230, 3235, 3240, 3247, 3250, 3253, 3256, 3259, 3262,
727      3265, 3268, 3271, 3278, 3282, 3288, 3294, 3300, 3306, 3312,
728      3318, 3324, 3330, 3337, 3344, 3351, 3358, 3365, 3372, 3379
729
730     } ;
731
732 static yyconst flex_int16_t yy_def[1401] =
733     {   0,
734      1345, 1345, 1346, 1346, 1346, 1346, 1347, 1347, 1348, 1348,
735      1349, 1349, 1350, 1350, 1350, 1350, 1351, 1351, 1345, 1345,
736      1352, 1352, 1353, 1353, 1345, 1345, 1353, 1353, 1353, 1353,
737      1345, 1345, 1354, 1354, 1355, 1355, 1345, 1345, 1355, 1355,
738      1355, 1355, 1345, 1345, 1344,   45, 1356, 1356, 1345, 1345,
739      1357, 1357, 1358, 1358, 1345, 1345, 1359, 1359, 1360, 1360,
740      1345, 1345, 1360, 1360, 1360, 1360, 1345, 1345, 1361, 1361,
741      1362, 1362, 1345, 1345, 1363, 1363, 1364, 1364, 1345, 1345,
742      1364, 1364, 1364, 1364, 1345, 1345, 1365, 1365, 1366, 1366,
743      1350, 1350, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
744
745      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
746      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
747      1344, 1344, 1344, 1367, 1344, 1344, 1367, 1344, 1344, 1344,
748      1344, 1344, 1344, 1344, 1344, 1344, 1368, 1344, 1344, 1368,
749      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1369, 1344,
750      1344, 1369, 1369, 1369, 1369, 1369, 1369, 1344, 1344, 1344,
751      1344, 1344, 1344, 1344, 1370, 1344, 1344, 1370, 1370, 1370,
752      1370, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1371, 1344,
753      1344, 1371, 1371, 1371, 1344, 1344, 1344, 1344, 1344, 1344,
754      1344, 1344, 1372, 1344, 1344, 1372, 1344, 1344, 1344, 1344,
755
756      1344, 1344, 1344, 1373, 1344, 1344, 1373, 1373, 1373, 1373,
757      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1374, 1344,
758      1344, 1374, 1344, 1344, 1344, 1344, 1344, 1344, 1375, 1344,
759      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
760      1344, 1344, 1344, 1344, 1367, 1367, 1376, 1344, 1344, 1344,
761      1344, 1344, 1344, 1368, 1368, 1377, 1344, 1369, 1369, 1369,
762      1369, 1369, 1369, 1369, 1378, 1344, 1370, 1370, 1370, 1370,
763      1370, 1370, 1379, 1344, 1371, 1371, 1371, 1371, 1380, 1344,
764      1344, 1372, 1372, 1381, 1344, 1373, 1373, 1373, 1373, 1373,
765      1382, 1344, 1344, 1374, 1374, 1383, 1344, 1344, 1384, 1344,
766
767      1384, 1344, 1344, 1344, 1385, 1344, 1344, 1344, 1344, 1344,
768      1344, 1344, 1367, 1386, 1386, 1344, 1344, 1344, 1344, 1344,
769      1368, 1387, 1387, 1369, 1369, 1369, 1369, 1369, 1369, 1388,
770      1388, 1370, 1370, 1370, 1370, 1370, 1389, 1389, 1371, 1371,
771      1371, 1390, 1390, 1344, 1372, 1391, 1391, 1373, 1373, 1373,
772      1373, 1392, 1392, 1344, 1374, 1393, 1393, 1344, 1344, 1384,
773      1344, 1344, 1384, 1344, 1344, 1385, 1344, 1344, 1344, 1344,
774      1344, 1344, 1367, 1344, 1386, 1344, 1386, 1344, 1344, 1344,
775      1344, 1344, 1368, 1344, 1387, 1344, 1387, 1369, 1369, 1369,
776      1369, 1369, 1369, 1344, 1388, 1344, 1388, 1370, 1370, 1370,
777
778      1370, 1370, 1344, 1389, 1344, 1389, 1344, 1344, 1371, 1344,
779      1344, 1344, 1390, 1344, 1390, 1344, 1372, 1344, 1391, 1344,
780      1391, 1373, 1373, 1373, 1373, 1344, 1392, 1344, 1392, 1344,
781      1374, 1344, 1393, 1344, 1393, 1344, 1384, 1394, 1344, 1344,
782      1344, 1344, 1344, 1367, 1386, 1344, 1344, 1344, 1344, 1344,
783      1344, 1344, 1387, 1369, 1369, 1369, 1344, 1344, 1369, 1369,
784      1388, 1370, 1370, 1344, 1344, 1370, 1370, 1389, 1344, 1344,
785      1344, 1371, 1344, 1344, 1344, 1390, 1344, 1344, 1344, 1391,
786      1373, 1344, 1344, 1373, 1373, 1392, 1344, 1374, 1393, 1344,
787      1384, 1394, 1394, 1344, 1394, 1344, 1344, 1344, 1367, 1386,
788
789      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1387, 1369, 1369,
790      1369, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1369, 1344,
791      1344, 1370, 1370, 1344, 1344, 1344, 1370, 1344, 1344, 1370,
792      1389, 1371, 1390, 1344, 1344, 1344, 1344, 1391, 1373, 1344,
793      1344, 1344, 1373, 1373, 1392, 1344, 1344, 1344, 1393, 1344,
794      1384, 1394, 1394, 1344, 1344, 1367, 1386, 1344, 1344, 1344,
795      1344, 1387, 1369, 1369, 1369, 1344, 1344, 1344, 1344, 1344,
796      1344, 1369, 1370, 1370, 1370, 1344, 1344, 1344, 1370, 1389,
797      1371, 1390, 1344, 1391, 1373, 1373, 1373, 1392, 1344, 1344,
798      1344, 1344, 1393, 1344, 1384, 1394, 1394, 1344, 1344, 1344,
799
800      1386, 1344, 1344, 1344, 1387, 1369, 1369, 1369, 1344, 1344,
801      1369, 1370, 1344, 1344, 1370, 1370, 1344, 1344, 1370, 1389,
802      1371, 1344, 1344, 1344, 1391, 1373, 1373, 1373, 1392, 1344,
803      1393, 1344, 1384, 1394, 1394, 1344, 1344, 1344, 1344, 1386,
804      1344, 1344, 1344, 1387, 1369, 1369, 1369, 1344, 1344, 1344,
805      1344, 1369, 1370, 1344, 1344, 1344, 1370, 1370, 1344, 1344,
806      1344, 1344, 1370, 1389, 1371, 1344, 1391, 1344, 1344, 1373,
807      1373, 1392, 1344, 1393, 1344, 1384, 1394, 1394, 1344, 1386,
808      1344, 1344, 1344, 1369, 1369, 1369, 1344, 1344, 1344, 1344,
809      1369, 1344, 1344, 1370, 1370, 1370, 1344, 1344, 1344, 1344,
810
811      1370, 1389, 1371, 1344, 1391, 1344, 1344, 1344, 1344, 1344,
812      1373, 1344, 1344, 1344, 1393, 1384, 1384, 1384, 1384, 1384,
813      1384, 1394, 1394, 1344, 1386, 1344, 1369, 1369, 1369, 1344,
814      1344, 1344, 1344, 1344, 1344, 1344, 1370, 1370, 1370, 1344,
815      1344, 1344, 1344, 1389, 1371, 1371, 1344, 1391, 1344, 1344,
816      1344, 1344, 1344, 1344, 1344, 1384, 1384, 1384, 1384, 1384,
817      1384, 1384, 1394, 1394, 1344, 1386, 1344, 1369, 1369, 1369,
818      1344, 1344, 1344, 1370, 1370, 1370, 1344, 1344, 1344, 1389,
819      1371, 1371, 1344, 1391, 1344, 1344, 1344, 1384, 1384, 1384,
820      1384, 1384, 1384, 1384, 1394, 1394, 1344, 1386, 1344, 1344,
821
822      1344, 1369, 1369, 1369, 1370, 1344, 1344, 1370, 1389, 1371,
823      1371, 1344, 1391, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
824      1394, 1394, 1394, 1344, 1386, 1344, 1344, 1344, 1344, 1369,
825      1369, 1369, 1369, 1370, 1344, 1344, 1344, 1370, 1389, 1344,
826      1344, 1371, 1344, 1344, 1371, 1344, 1391, 1384, 1384, 1384,
827      1384, 1384, 1384, 1384, 1394, 1394, 1394, 1395, 1396, 1344,
828      1386, 1369, 1369, 1369, 1369, 1344, 1344, 1344, 1344, 1344,
829      1344, 1344, 1344, 1344, 1371, 1344, 1344, 1344, 1371, 1344,
830      1391, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1394,
831      1397, 1398, 1395, 1396, 1344, 1386, 1369, 1369, 1369, 1369,
832
833      1344, 1344, 1344, 1344, 1344, 1344, 1371, 1371, 1344, 1344,
834      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1397, 1394,
835      1399, 1398, 1400, 1394, 1344, 1386, 1369, 1369, 1369, 1369,
836      1344, 1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384,
837      1384, 1384, 1384, 1384, 1399, 1344, 1400, 1394, 1344, 1386,
838      1344, 1344, 1344, 1344, 1344, 1344, 1369, 1344, 1344, 1344,
839      1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
840      1384, 1384, 1384, 1344, 1344, 1386, 1344, 1344, 1344, 1344,
841      1344, 1344, 1344, 1344, 1344, 1369, 1344, 1344, 1344, 1344,
842      1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
843
844      1384, 1384, 1384, 1344, 1344, 1386, 1369, 1344, 1344, 1344,
845      1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
846      1384, 1344, 1386, 1369, 1344, 1344, 1344, 1344, 1371, 1371,
847      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344,
848      1386, 1369, 1344, 1344, 1344, 1344, 1371, 1371, 1384, 1384,
849      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344, 1344,
850      1344, 1344, 1344, 1344, 1344, 1371, 1371, 1384, 1384, 1384,
851      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344, 1344,
852      1344, 1344, 1371, 1371, 1384, 1384, 1384, 1384, 1384, 1384,
853      1384, 1384, 1384, 1384, 1371, 1371, 1384, 1384, 1384, 1384,
854
855      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1371, 1371,
856      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
857      1384, 1384, 1384, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
858      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1371, 1371,
859      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
860      1384, 1384, 1384, 1371, 1371, 1384, 1384, 1384, 1384, 1384,
861      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344,
862      1344, 1344, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
863      1384, 1384, 1384, 1384, 1384, 1384, 1344, 1344, 1344, 1344,
864      1344, 1344, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
865
866      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
867      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
868      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
869      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344,
870      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
871      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
872      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
873      1384, 1384, 1384, 1344, 1384, 1384, 1384, 1384, 1384, 1384,
874      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1344, 1384, 1384,
875      1384, 1384, 1384, 1344, 1384, 1384, 1384, 1344, 1384, 1384,
876
877      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
878      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
879      1384, 1384, 1344, 1384, 1384, 1384, 1384, 1384, 1384, 1344,
880      1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384,
881      1384, 1384, 1344,    0, 1344, 1344, 1344, 1344, 1344, 1344,
882      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
883      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
884      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
885      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
886      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344
887
888     } ;
889
890 static yyconst flex_int16_t yy_nxt[3738] =
891     {   0,
892      1344,   96,   97,   96,   96,   97,   96,   96,   97,   96,
893        96,   97,   96,  104, 1344,   98,  104,  107,   98,  107,
894       105,   99,  361,  105,   99,  101,   97,  101,  101,   97,
895       101,  110,  111,  108,  363,  108,  112,  113,  304,  102,
896       110,  111,  102,  300,  114,  112,  113,  110,  111,  920,
897       115,  229,  112,  114,  110,  111,  301,  115,  923,  112,
898       114,  117,  118,  117,  118,  230,  229,  114,   97,   97,
899        97,   97,   97,   97,  129,   97,  129,  129,   97,  129,
900       231,  306,  120,  361,  307,  120,  305,  304,  130,  365,
901       361,  130,  228,  228,  228,  119,  595,  119,  121,  122,
902
903        97,  122,  121,  121,  121,  121,  121,  121,  121,  123,
904       121,  920,  121,  125,  121,  126,  121,   97,   97,   97,
905       923,   97,   97,   97,  129,   97,  129,  129,   97,  129,
906       789,  131,  361,  121,  121,  131,  232,  271,  130,  361,
907       232,  130,  228,  228,  228,  228,  228,  228,  272,  551,
908       231,  228,  228,  228,  231,  491,  127,  121,  122,   97,
909       122,  121,  121,  121,  121,  121,  121,  121,  123,  121,
910       494,  121,  125,  121,  126,  121,  129,   97,  129,  361,
911       129,   97,  129,   97,   97,   97,   97,   97,   97,  361,
912       132,  232,  121,  121,  132,  597,  232,  133,  232,  232,
913
914       133,  228,  228,  228,  759,  231,  247,  228,  228,  228,
915       231,  494,  231,  231,  494,  127,  134,  135,   97,  135,
916       134,  134,  134,  134,  134,  134,  134,  136,  134,  794,
917       134,  138,  134,  139,  134,  142,   97,  142,  249,  142,
918        97,  142,   97,   97,   97, 1155,  243,  596,  635,  143,
919       361,  134,  134,  143,  437,  494,  131,  361,  494,  140,
920       134,  135,   97,  135,  134,  134,  134,  134,  134,  134,
921       134,  136,  134,  494,  134,  138,  134,  139,  134,   97,
922        97,   97,  722,  142,   97,  142,  142,   97,  142,  677,
923       142,   97,  142,  131,  756,  134,  134,  143,  494, 1154,
924
925       143,  361,  723,  140,  144,  142,   97,  142,   97,   97,
926        97,   97,   97,   97,  228,  228,  228,  361,  883,  144,
927       648,  634,  145,  633,  649,  145,  146,  147,   97,  147,
928       146,  146,  146,  146,  146,  146,  146,  148,  146,  149,
929       146,  150,  146,  151,  146,  149,  149,  149,  149,  149,
930       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
931       149,  146,  146,  149,  152,  149,  149,  149,  149,  149,
932       149,  149,  153,  149,  149,  154,  155,  149,  156,  149,
933       149,  157,  149,  149,  149,  149,  149,  149,  159,   97,
934       159,  159,   97,  159,   97,   97,   97,   97,   97,   97,
935
936       650,  361,  160,  659,  651,  160,  661,  660,  161, 1140,
937       662,  161,  162,  163,   97,  163,  162,  162,  162,  162,
938       162,  162,  162,  164,  162,  494,  162,  166,  162,  167,
939       162,  173,   97,  173,  758,  173,   97,  173,   97,   97,
940        97,   97,   97,   97,  232,  174,  361,  162,  162,  174,
941       232,  168,  175,  831,  832,  175,  361,  256,  231, 1139,
942       169, 1125,  170,  678,  231,  361,  494,  171,  162,  163,
943        97,  163,  162,  162,  162,  162,  162,  162,  162,  164,
944       162,  757,  162,  166,  162,  167,  162,  186,   97,  186,
945       762,  186,   97,  186,   97,   97,   97,   97,   97,   97,
946
947       764,  187,  885,  162,  162,  187, 1124,  168,  188,  494,
948       495,  188,  228,  228,  228,  361,  169,  494,  170,  228,
949       228,  228,  361,  171,  176,  177,   97,  177,  176,  176,
950       176,  176,  176,  176,  176,  178,  176,  361,  176,  180,
951       176,  181,  176,  186,   97,  186,  763,  186,   97,  186,
952       186,   97,  186,  186,   97,  186,  793,  187, 1113,  176,
953       176,  187,  232,  232,  189,  182,  361,  189,  760,  265,
954       183,  228,  228,  228,  761,  361,  231,  231,  361,  184,
955       176,  177,   97,  177,  176,  176,  176,  176,  176,  176,
956       176,  178,  176,  788,  176,  180,  176,  181,  176,   97,
957
958        97,   97,  361,   97,   97,   97,  198,   97,  198,  198,
959        97,  198,  851,  188,  791,  176,  176,  188,  232,  232,
960       199,  182,  940,  199, 1110,  273,  183,  228,  228,  228,
961       361,  494,  231,  231,  361,  184,  190,  191,   97,  191,
962       190,  190,  190,  190,  190,  190,  190,  192,  190,  361,
963       190,  194,  190,  195,  190,   97,   97,   97,  821,   97,
964        97,   97,  212,   97,  212,  212,   97,  212,  887,  200,
965       792,  190,  190,  200,  814, 1109,  213,  361,  361,  213,
966       228,  228,  228,  228,  228,  228,  196,  190,  191,   97,
967       191,  190,  190,  190,  190,  190,  190,  190,  192,  190,
968
969       790,  190,  194,  190,  195,  190,   97,   97,   97,  816,
970        97,   97,   97,  212,   97,  212,  212,   97,  212,  232,
971       214,  232,  190,  190,  214,  361,  279,  213,  361, 1096,
972       213,  967, 1095,  231, 1084,  231,  361,  196,  201,  202,
973        97,  202,  201,  201,  201,  201,  201,  201,  201,  203,
974       201,  494,  201,  205,  201,  206,  201,  212,   97,  212,
975       848,  212,   97,  212,   97,   97,   97,  250,   97,   97,
976        97,  215,  232,  201,  201,  215,  232,  232,  214, 1114,
977       361,  207,  214,  208,  795,  209,  231,  228,  228,  228,
978       231,  231,  361,  210,  201,  202,   97,  202,  201,  201,
979
980       201,  201,  201,  201,  201,  203,  201,  232,  201,  205,
981       201,  206,  201,  224,   97,  224,  884,  224,   97,  224,
982       850,  231,  252,  228,  228,  228,  280,  225,  361,  201,
983       201,  225,  228,  228,  228,  110,  111,  207,  997,  208,
984       112,  209,  237,  248,  228,  228,  228,  361,  226,  210,
985       216,  217,   97,  217,  216,  216,  216,  216,  216,  216,
986       216,  218,  216,  232,  216,  220,  216,  221,  216,  227,
987       110,  111,  361,  852,  238,  112,  232,  231,  361,  361,
988       239,  232,  232,  226,  240,  216,  216,  232,  279,  241,
989       231,  232,  232,  232,  284,  231,  231,  853,  291,  247,
990
991       494,  231,  819,  854,  227,  231,  231,  231,  222,  216,
992       217,   97,  217,  216,  216,  216,  216,  216,  216,  216,
993       218,  216,  232,  216,  220,  216,  221,  216,  248,  248,
994       251,  280,  361,  796,  249,  249,  231,  745,  250,  250,
995       251,  251,  252,  252,  216,  216,  232,  232,  228,  228,
996       228,  746,  361,  256,  291,  232,  292,  228,  228,  228,
997       231,  231,  296,  228,  228,  228,  886,  222,  361,  231,
998       374,  374,  374,  374,  374,  374,  361,  384,  384,  384,
999       361,  292,  248,  384,  384,  384,  376,  361,  249,  376,
1000       361,  818,  250,  386,  251,  912,  252,  999,  361,  386,
1001
1002       394,  394,  394,  394,  394,  394,  403,  403,  403,  403,
1003       403,  403,  407,  407,  407,  882,  396,  361,  817,  396,
1004       377,  361,  405,  361, 1083,  405,  820,  408,  410,  410,
1005       410,  911,  387,  412,  412,  412,  412,  412,  412,  418,
1006       418,  418,  913,  411,  418,  418,  418,  361,  918,  414,
1007       406,  914,  414,  361,  397,  420,  426,  426,  426,  920,
1008       420,  426,  426,  426,  432,  432,  432,  432,  432,  432,
1009       931,  921,  428,  374,  374,  374,  361,  428,  932,  933,
1010       434,  361,  361,  434,  915,  941,  415,  934,  361,  376,
1011       374,  374,  374,  361,  421,  374,  374,  374,  446,  446,
1012
1013       446,  451,  451,  451,  938,  361,  376,  384,  384,  384,
1014       361,  376,  944,  969,  429,  937,  452,  384,  384,  384,
1015       435,  361,  943,  386,  384,  384,  384,  457,  457,  457,
1016       970,  916,  445,  386,  394,  394,  394,  394,  394,  394,
1017       386,  361,  458,  394,  394,  394,  464,  464,  464, 1082,
1018       396, 1035,  361,  396,  403,  403,  403,  361,  998,  396,
1019       361,  465,  361,  453,  403,  403,  403,  403,  403,  403,
1020       405,  407,  407,  407,  469,  469,  469,  972,  470,  361,
1021       405,  471,  973,  405,  920, 1017,  408,  410,  410,  410,
1022       473,  473,  473,  361,  474, 1002,  921,  475, 1036,  461,
1023
1024       361, 1081,  411,  412,  412,  412,  361,  412,  412,  412,
1025       412,  412,  412,  478,  478,  478,  418,  418,  418,  414,
1026       361, 1016,  468,  414, 1000, 1003,  414,  361,  479,  418,
1027       418,  418,  420,  418,  418,  418,  482,  482,  482,  426,
1028       426,  426,  426,  426,  426,  420,  426,  426,  426,  420,
1029       361,  483,  432,  432,  432,  428, 1090, 1073,  428,  432,
1030       432,  432,  428,  432,  432,  432,  476, 1001,  434,  493,
1031       493,  493,  374,  374,  374,  434,  446,  446,  446,  434,
1032       451,  451,  451,  361, 1067,  494,  495,  361,  376,  480,
1033       505,  505,  505, 1038,  506,  452,  486,  507,  384,  384,
1034
1035       384,  457,  457,  457, 1014, 1066,  489,  361,  512,  512,
1036       512,  361,  513, 1020,  386,  514,  458,  515,  515,  515,
1037       517,  517,  517,  520,  520,  520, 1019,  500,  464,  464,
1038       464,  361,  516,  361,  361,  518,  528,  528,  528,  521,
1039       524,  524,  524,  465,  525,  508, 1031,  526,  403,  403,
1040       403,  529,  361,  469,  469,  469,  519,  470, 1018, 1021,
1041       471,  473,  473,  473,  405,  474,  361, 1102,  475,  412,
1042       412,  412,  530,  478,  478,  478,  535,  535,  535, 1065,
1043       536,  361, 1034,  537,  361,  414,  361, 1052,  479,  418,
1044       418,  418,  482,  482,  482,  540,  540,  540,  361,  541,
1045
1046      1037, 1123,  542,  361, 1055,  420,  531,  483,  361,  426,
1047       426,  426,  547,  547,  547,  432,  432,  432,  493,  493,
1048       493,  374,  374,  374,  533,  428,  361,  548,  561,  561,
1049       561,  434,  361,  361,  494,  361, 1039,  376,  505,  505,
1050       505, 1068,  506, 1064,  538,  507,  361, 1057,  545,  384,
1051       384,  384,  361,  512,  512,  512, 1054,  513,  361,  552,
1052       514,  361, 1049,  557, 1050,  386,  515,  515,  515, 1089,
1053      1051,  549,  566,  566,  566,  553,  567,  361,  361,  568,
1054       361,  516,  517,  517,  517,  569,  569,  569, 1063,  570,
1055      1071,  361,  571,  520,  520,  520, 1103,  518, 1069,  524,
1056
1057       524,  524,  361,  525,  361,  562,  526, 1117,  361,  521,
1058       528,  528,  528,  576,  576,  576, 1118,  577, 1070, 1108,
1059       578,  403,  403,  403,  361,  529,  412,  412,  412,  535,
1060       535,  535,  361,  536, 1074, 1062,  537,  405,  418,  418,
1061       418, 1086,  414,  540,  540,  540, 1092,  541, 1048,  361,
1062       542,  547,  547,  547,  420,  361,  426,  426,  426, 1085,
1063       361,  590,  590,  590,  361,  591,  548,  582,  592, 1087,
1064       361,  580,  428,  432,  432,  432,  599,  599,  599,  584,
1065       374,  374,  374,  561,  561,  561,  384,  384,  384,  434,
1066      1098,  600,  641,  641,  641, 1106,  376,  588, 1093,  566,
1067
1068       566,  566,  386,  567,  361, 1047,  568,  569,  569,  569,
1069      1107,  570,  361,  361,  571,  361,  613,  613,  613, 1132,
1070      1138,  593,  403,  403,  403, 1046,  605,  622,  622,  622,
1071       601,  614,  576,  576,  576,  361,  577,  361,  405,  578,
1072       418,  418,  418,  623,  426,  426,  426,  590,  590,  590,
1073      1115,  591,  615, 1116,  592,  361,  420,  599,  599,  599,
1074       428,  432,  432,  432,  637,  637,  637, 1128,  638, 1045,
1075       361,  639,  600,  361, 1121,  620,  625,  434,  374,  374,
1076       374,  643,  643,  643,  384,  384,  384, 1129,  613,  613,
1077       613,  403,  403,  403,  376,  668,  668,  668,  629, 1099,
1078
1079       386, 1143,  631,  614,  654,  654,  654,  405,  655,  361,
1080       669,  656,  622,  622,  622,  361,  418,  418,  418,  426,
1081       426,  426,  432,  432,  432,  644, 1158,  361,  623,  361,
1082       361,  640,  420,  361,  361,  428,  361,  664,  434,  676,
1083       676,  676,  637,  637,  637, 1245,  638, 1119,  361,  639,
1084       374,  374,  374, 1120,  361,  361,  361,  667,  641,  641,
1085       641,  643,  643,  643, 1122, 1133,  376,  682,  682,  682,
1086      1130,  674, 1126,  672,  692,  692,  692,  654,  654,  654,
1087      1136,  655,  361,  683,  656,  403,  403,  403, 1131,  693,
1088       418,  418,  418,  668,  668,  668, 1134,  361,  680,  361,
1089
1090       361,  405,  709,  709,  709,  361,  420, 1147,  669,  361,
1091       694,  706,  706,  706, 1230,  707,  361,  710,  708,  361,
1092      1127,  702,  712,  712,  712,  714,  714,  714,  432,  432,
1093       432,  374,  374,  374,  682,  682,  682,  705,  713,  732,
1094       732,  732, 1137, 1151,  434, 1135,  361,  376,  361, 1141,
1095       683,  692,  692,  692,  733,  734,  734,  734, 1195,  735,
1096       361,  361,  736,  742,  742,  742,  693,  725,  714,  714,
1097       714,  403,  403,  403,  418,  418,  418, 1144,  743,  709,
1098       709,  709,  361,  715,  676,  676,  676,  405, 1142, 1159,
1099       420,  706,  706,  706,  710,  707,  361, 1145,  708,  361,
1100
1101       361,  749,  749,  749, 1152,  750, 1044, 1043,  751,  752,
1102       752,  752,  712,  712,  712,  748,  361,  361,  744, 1146,
1103       361,  716, 1153,  717,  753,  754,  754,  754,  713,  718,
1104       374,  374,  374,  719,  361,  720, 1149,  721,  732,  732,
1105       732,  755,  361,  771,  771,  771,  376,  772,  361,  361,
1106       773, 1148,  361,  733,  734,  734,  734, 1150,  735, 1042,
1107       361,  736,  742,  742,  742,  777,  777,  777, 1160,  778,
1108       766, 1156,  779,  403,  403,  403,  361,  743,  418,  418,
1109       418,  749,  749,  749, 1166,  750, 1157, 1196,  751,  405,
1110       752,  752,  752, 1163,  420,  785,  785,  785,  361,  786,
1111
1112      1175,  361,  787,  361,  361,  753,  754,  754,  754,  374,
1113       374,  374,  800,  800,  800,  403,  403,  403,  780,  806,
1114       806,  806,  755,  361, 1161,  376,  784,  801,  771,  771,
1115       771,  405,  772,  361,  807,  773,  777,  777,  777, 1199,
1116       778, 1200, 1221,  779,  418,  418,  418,  361,  802, 1164,
1117       798,  785,  785,  785,  361,  786, 1030,  361,  787, 1165,
1118       420,  815,  815,  815,  809,  822,  822,  822,  374,  374,
1119       374,  826,  826,  826,  800,  800,  800,  361, 1176, 1167,
1120       823,  494,  361, 1173,  376,  813,  827,  827,  827,  801,
1121       828,  361, 1168,  829,  806,  806,  806,  835,  835,  835,
1122
1123       361,  836, 1029,  361,  837,  403,  403,  403, 1216,  807,
1124       840,  840,  840,  843,  843,  843,  418,  418,  418,  361,
1125       361,  405,  825,  361, 1225,  841, 1174, 1210,  844,  815,
1126       815,  815,  420,  826,  826,  826,  361,  855,  855,  855,
1127       822,  822,  822,  361,  361,  361,  842, 1028,  361,  845,
1128       361,  839,  856,  494, 1184,  823,  494,  857,  857,  857,
1129       849,  858, 1177, 1178,  859,  847,  374,  374,  374, 1204,
1130       827,  827,  827,  494,  828, 1185,  361,  829,  866,  866,
1131       866,  361,  376,  835,  835,  835, 1182,  836, 1222, 1027,
1132       837, 1183, 1026,  867,  868,  868,  868,  870,  870,  870,
1133
1134       840,  840,  840, 1025,  361,  861,  843,  843,  843,  869,
1135       872,  872,  872,  871,  873,  841, 1205,  874,  876,  876,
1136       876,  844,  877,  361, 1193,  878,  880,  880,  880,  418,
1137       418,  418,  888,  888,  888,  855,  855,  855, 1024,  890,
1138       890,  890,  361,  891,  361,  420,  892, 1194,  361,  361,
1139       856,  494,  866,  866,  866,  494,  857,  857,  857, 1270,
1140       858,  361,  361,  859,  374,  374,  374,  867,  889,  901,
1141       901,  901,  494,  902, 1197, 1212,  903,  880,  880,  880,
1142       376,  870,  870,  870,  881,  492,  492,  492,  492,  492,
1143       492,  492,  492,  492, 1198,  361,  492,  871, 1228,  492,
1144
1145       492,  492,  494,  492,  868,  868,  868,  904,  904,  904,
1146       361,  905,  361,  361,  906,  361, 1022,  896, 1013,  869,
1147       492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
1148       492,  361, 1012,  492, 1211, 1214,  492,  492,  492,  494,
1149       492,  872,  872,  872, 1202,  873,  361, 1203,  874,  876,
1150       876,  876, 1233,  877,  361,  361,  878,  492,  492,  909,
1151       909,  909,  888,  888,  888,  890,  890,  890, 1229,  891,
1152      1225,  361,  892,  361,  361,  910,  361, 1213,  361,  361,
1153      1258,  494,  901,  901,  901, 1217,  902, 1208,  361,  903,
1154       909,  909,  909,  917,  492,  492,  492,  492,  492,  924,
1155
1156       492,  492,  492, 1209, 1218,  492,  910,  361,  492,  492,
1157       492,  494,  492,  904,  904,  904, 1215,  905,  361,  361,
1158       906, 1040, 1040, 1040,  374,  374,  374,  361, 1235,  492,
1159       492,  492,  492,  492,  492,  492,  492,  492,  492,  924,
1160       376,  361,  492, 1219, 1243,  492,  492,  492,  494,  492,
1161      1256, 1220,  939,  939,  939,  942,  942,  942,  948,  948,
1162       948,  374,  374,  374,  361, 1011,  492,  492,  361,  926,
1163       361,  361, 1223,  361,  494,  495,  361,  376,  951,  951,
1164       951,  953,  953,  953,  955,  955,  955,  958,  958,  958,
1165       966,  966,  966,  952, 1226, 1224,  954, 1241,  361,  956,
1166
1167      1242,  361,  959,  939,  939,  939,  361,  942,  942,  942,
1168      1236, 1010,  950,  948,  948,  948,  374,  374,  374,  361,
1169       957, 1227,  361,  361,  951,  951,  951, 1009,  361,  494,
1170      1268,  361,  376,  361,  968,  953,  953,  953,  971,  952,
1171       977,  977,  977,  361,  978,  361,  361,  979, 1244, 1231,
1172       954,  980,  980,  980,  552,  981,  361, 1246,  982,  955,
1173       955,  955,  983,  983,  983, 1232,  984, 1247, 1008,  985,
1174      1234,  976,  361,  361,  956,  958,  958,  958,  987,  987,
1175       987, 1007,  988, 1250, 1254,  989,  966,  966,  966,  361,
1176       959,  374,  374,  374,  977,  977,  977, 1248,  978,  361,
1177
1178       361,  979,  361, 1237,  980,  980,  980,  376,  981,  361,
1179       361,  982,  983,  983,  983, 1005,  984,  996, 1238,  985,
1180       987,  987,  987, 1249,  988,  361, 1251,  989, 1015, 1015,
1181      1015,  374,  374,  374, 1261, 1262, 1006,  361, 1015, 1015,
1182      1015,  361, 1032, 1257,  361, 1033,  361,  376,  374,  374,
1183       374, 1053, 1053, 1053,  361, 1056, 1056, 1056, 1040, 1040,
1184      1040, 1058, 1058, 1058,  376, 1252, 1261,  361, 1060, 1060,
1185      1060,  361, 1053, 1053, 1053,  361, 1255, 1059, 1056, 1056,
1186      1056, 1023, 1075, 1061, 1279, 1076,  361, 1004,  361, 1077,
1187      1077, 1077,  361,  361,  361,  361,  361, 1041, 1058, 1058,
1188
1189      1058,  361,  995, 1072,  361,  361, 1060, 1060, 1060, 1078,
1190      1078, 1078, 1263, 1079, 1059,  994, 1080, 1088, 1088, 1088,
1191      1253, 1061, 1091, 1091, 1091, 1077, 1077, 1077, 1078, 1078,
1192      1078, 1259, 1079,  361, 1260, 1080, 1269,  361,  361,  361,
1193      1264,  361, 1097, 1097, 1097, 1088, 1088, 1088,  993, 1100,
1194      1279,  361, 1101, 1091, 1091, 1091, 1094, 1104,  361,  361,
1195      1105,  361,  361, 1097, 1097, 1097,  361, 1111, 1280,  361,
1196      1112, 1162, 1162, 1162, 1169, 1169, 1169, 1318, 1265,  361,
1197      1171, 1171, 1171, 1266, 1162, 1162, 1162,  361, 1179, 1170,
1198      1267, 1180, 1181, 1181, 1181, 1172, 1186, 1186, 1186,  992,
1199
1200       361, 1169, 1169, 1169, 1171, 1171, 1171,  361,  361,  361,
1201       991,  361,  361, 1187, 1187, 1187, 1170, 1188, 1283, 1172,
1202      1189, 1190, 1190, 1190,  990, 1191,  361,  361, 1192, 1181,
1203      1181, 1181, 1186, 1186, 1186, 1271, 1206,  361, 1281, 1207,
1204      1187, 1187, 1187,  361, 1188,  361,  361, 1189,  361, 1190,
1205      1190, 1190, 1275, 1191,  361,  361, 1192, 1239, 1239, 1239,
1206      1201, 1239, 1239, 1239, 1273, 1273, 1273, 1272, 1295, 1276,
1207      1277, 1283,  361, 1240, 1282, 1282, 1282, 1240, 1278, 1286,
1208      1274,  361, 1289,  361, 1273, 1273, 1273, 1284, 1286,  361,
1209       361,  361, 1287, 1287, 1287, 1290,  361,  361,  361,  986,
1210
1211      1274,  361,  361,  975, 1285, 1282, 1282, 1282, 1288, 1291,
1212       361,  361, 1292, 1293, 1293, 1293, 1297, 1297, 1297, 1301,
1213       361,  361, 1287, 1287, 1287, 1299, 1303, 1296, 1304, 1294,
1214       361,  361, 1298,  361, 1300,  361, 1302,  361, 1288, 1293,
1215      1293, 1293, 1297, 1297, 1297,  361,  361,  361,  361,  361,
1216      1305,  361,  361, 1317, 1317, 1294,  361,  361, 1298, 1306,
1217       361, 1309,  361,  361,  361,  361, 1326, 1326,  361, 1310,
1218      1307, 1308, 1311, 1312,  361,  361, 1322, 1322, 1322,  361,
1219       361, 1320, 1319, 1313, 1314,  361, 1321,  946,  361,  361,
1220      1315, 1316, 1323, 1322, 1322, 1322, 1329, 1329, 1329,  361,
1221
1222      1327, 1333,  361, 1324,  974,  946, 1328, 1325,  361, 1323,
1223      1334, 1331, 1330, 1329, 1329, 1329, 1332,  361,  361,  361,
1224      1341, 1341,  965, 1335,  964,  963, 1336, 1337, 1338, 1330,
1225       361,  962,  361, 1342, 1342, 1342, 1342, 1342, 1342,  961,
1226       960,  949, 1339, 1340,  946,  946,  936,  935,  930, 1343,
1227       929,  928, 1343,   94,   94,   94,   94,   94,   94,   94,
1228        95,   95,   95,   95,   95,   95,   95,  100,  100,  100,
1229       100,  100,  100,  100,  103,  103,  103,  103,  103,  103,
1230       103,  106,  106,  106,  106,  106,  106,  106,  109,  109,
1231       109,  109,  109,  109,  109,  116,  116,  116,  116,  116,
1232
1233       116,  116,  124,  124,  124,  124,  124,  124,  124,  128,
1234       128,  128,  128,  128,  128,  128,  137,  137,  137,  137,
1235       137,  137,  137,  141,  141,  141,  141,  141,  141,  141,
1236       158,  158,  158,  158,  158,  158,  158,  165,  165,  165,
1237       165,  165,  165,  165,  172,  172,  172,  172,  172,  172,
1238       172,  179,  179,  179,  179,  179,  179,  179,  185,  185,
1239       185,  185,  185,  185,  185,  193,  193,  193,  193,  193,
1240       193,  193,  197,  197,  197,  197,  197,  197,  197,  204,
1241       204,  204,  204,  204,  204,  204,  211,  211,  211,  211,
1242       211,  211,  211,  219,  219,  219,  219,  219,  219,  219,
1243
1244       223,  223,  223,  223,  223,  223,  223,  245,  245,  245,
1245       927,  245,  254,  254,  254,  925,  254,  258,  258,  258,
1246       908,  258,  267,  267,  267,  907,  267,  275,  275,  275,
1247       900,  275,  282,  282,  282,  899,  282,  286,  286,  286,
1248       898,  286,  294,  294,  294,  897,  294,  299,  299,  299,
1249       299,  299,  895,  299,  314,  879,  314,  322,  875,  322,
1250       330,  865,  330,  337,  864,  337,  342,  863,  342,  346,
1251       862,  346,  352,  860,  352,  356,  846,  356,  360,  360,
1252       360,  360,  360,  360,  360,  366,  838,  834,  366,  375,
1253       375,  375,  375,  375,  375,  385,  385,  385,  385,  385,
1254
1255       385,  395,  395,  395,  395,  395,  395,  404,  404,  404,
1256       404,  404,  404,  413,  413,  413,  413,  413,  413,  419,
1257       419,  419,  419,  419,  419,  427,  427,  427,  427,  427,
1258       427,  433,  433,  433,  433,  433,  433,  492,  492,  492,
1259       492,  492,  492,  492,  893,  893,  893,  893,  893,  893,
1260       893,  894,  894,  894,  894,  894,  894,  894,  919,  919,
1261       919,  919,  919,  919,  919,  922,  922,  922,  922,  922,
1262       922,  922,  945,  945,  945,  945,  945,  945,  945,  947,
1263       947,  947,  947,  947,  947,  947,  833,  830,  824,  812,
1264       811,  810,  808,  805,  804,  803,  799,  797,  783,  782,
1265
1266       781,  776,  775,  774,  770,  769,  768,  767,  765,  747,
1267       741,  740,  739,  738,  737,  731,  730,  729,  728,  727,
1268       726,  724,  711,  704,  703,  701,  700,  699,  698,  697,
1269       696,  695,  691,  690,  689,  688,  687,  686,  685,  684,
1270       681,  679,  675,  673,  671,  670,  666,  665,  663,  658,
1271       657,  653,  652,  647,  646,  645,  642,  636,  632,  630,
1272       628,  627,  626,  624,  621,  619,  618,  617,  616,  612,
1273       611,  610,  609,  608,  607,  606,  604,  603,  602,  598,
1274       594,  589,  587,  586,  585,  583,  581,  579,  575,  574,
1275       573,  572,  565,  564,  563,  560,  559,  558,  556,  555,
1276
1277       554,  494,  550,  546,  544,  543,  539,  534,  532,  527,
1278       523,  522,  511,  510,  509,  504,  503,  502,  501,  499,
1279       498,  497,  496,  490,  488,  487,  485,  484,  481,  477,
1280       472,  467,  466,  463,  462,  460,  459,  456,  455,  454,
1281       450,  449,  448,  447,  444,  443,  442,  441,  440,  439,
1282       438,  361,  436,  431,  430,  425,  424,  423,  422,  417,
1283       416,  409,  402,  401,  400,  399,  398,  393,  392,  391,
1284       390,  389,  388,  383,  382,  381,  380,  379,  378,  373,
1285       372,  371,  370,  369,  368,  367,  364,  362,  361,  359,
1286       358,  357,  355,  354,  353,  351,  350,  349,  348,  347,
1287
1288       345,  344,  343,  341,  340,  339,  338,  336,  335,  334,
1289       333,  332,  331,  329,  328,  327,  326,  325,  324,  323,
1290       321,  320,  319,  318,  317,  316,  315,  313,  312,  311,
1291       310,  309,  308,  303,  300,  302,  298,  297,  295,  293,
1292       290,  289,  288,  287,  285,  283,  281,  278,  277,  276,
1293       274,  270,  269,  268,  266,  264,  263,  262,  261,  260,
1294       259,  257,  255,  253,  246,  244,  242,  236,  235,  236,
1295       235,  234,  233, 1344,   93, 1344, 1344, 1344, 1344, 1344,
1296      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1297      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1298
1299      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1300      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1301      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1302      1344, 1344, 1344, 1344, 1344, 1344, 1344
1303     } ;
1304
1305 static yyconst flex_int16_t yy_chk[3738] =
1306     {   0,
1307         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
1308         6,    6,    6,    9,    0,    3,   10,   11,    4,   12,
1309         9,    5,  301,   10,    6,    7,    7,    7,    8,    8,
1310         8,   13,   13,   11,  301,   12,   13,   13,  237,    7,
1311        14,   14,    8,  229,   13,   14,   14,   15,   15,  892,
1312        15,   98,   15,   14,   16,   16,  229,   16,  892,   16,
1313        15,   17,   17,   18,   18,   98,   99,   16,   19,   19,
1314        19,   20,   20,   20,   23,   23,   23,   24,   24,   24,
1315        99,  238,   19,  551,  238,   20,  237,  304,   23,  304,
1316       757,   24,   96,   96,   96,   17,  551,   18,   21,   21,
1317
1318        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
1319        21,  922,   21,   21,   21,   21,   21,   25,   25,   25,
1320       922,   26,   26,   26,   27,   27,   27,   28,   28,   28,
1321       757,   25,  491,   21,   21,   26,  102,  171,   27,  437,
1322       125,   28,   97,   97,   97,  101,  101,  101,  171,  491,
1323       102,  122,  122,  122,  125,  437,   21,   22,   22,   22,
1324        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
1325       553,   22,   22,   22,   22,   22,   29,   29,   29,  719,
1326        30,   30,   30,   31,   31,   31,   32,   32,   32,  762,
1327        29,  138,   22,   22,   30,  553,  133,   31,  120,  132,
1328
1329        32,  129,  129,  129,  719,  138,  132,  135,  135,  135,
1330       133,  597,  120,  132,  552,   22,   33,   33,   33,   33,
1331        33,   33,   33,   33,   33,   33,   33,   33,   33,  762,
1332        33,   33,   33,   33,   33,   35,   35,   35,  133,   36,
1333        36,   36,   37,   37,   37, 1140,  120,  552,  597,   35,
1334       363,   33,   33,   36,  363,  634,   37,  716,  677,   33,
1335        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
1336        34,   34,   34,  678,   34,   34,   34,   34,   34,   38,
1337        38,   38,  677,   39,   39,   39,   40,   40,   40,  634,
1338        41,   41,   41,   38,  716,   34,   34,   39,  596, 1139,
1339
1340        40,  849,  678,   34,   41,   42,   42,   42,   43,   43,
1341        43,   44,   44,   44,  142,  142,  142,  595,  849,   42,
1342       609,  596,   43,  595,  609,   44,   45,   45,   45,   45,
1343        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1344        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1345        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1346        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1347        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1348        45,   45,   45,   45,   45,   45,   45,   45,   47,   47,
1349        47,   48,   48,   48,   49,   49,   49,   50,   50,   50,
1350
1351       610,  718,   47,  617,  610,   48,  618,  617,   49, 1125,
1352       618,   50,   51,   51,   51,   51,   51,   51,   51,   51,
1353        51,   51,   51,   51,   51,  635,   51,   51,   51,   51,
1354        51,   53,   53,   53,  718,   54,   54,   54,   55,   55,
1355        55,   56,   56,   56,  150,   53,  717,   51,   51,   54,
1356       144,   51,   55,  803,  803,   56,  721,  144,  150, 1124,
1357        51, 1110,   51,  635,  144,  851,  723,   51,   52,   52,
1358        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
1359        52,  717,   52,   52,   52,   52,   52,   59,   59,   59,
1360       721,   60,   60,   60,   61,   61,   61,   62,   62,   62,
1361
1362       723,   59,  851,   52,   52,   60, 1109,   52,   61,  920,
1363       920,   62,  147,  147,  147, 1098,   52,  722,   52,  159,
1364       159,  159,  761,   52,   57,   57,   57,   57,   57,   57,
1365        57,   57,   57,   57,   57,   57,   57,  720,   57,   57,
1366        57,   57,   57,   63,   63,   63,  722,   64,   64,   64,
1367        65,   65,   65,   66,   66,   66,  761,   63, 1098,   57,
1368        57,   64,  160,  166,   65,   57,  756,   66,  720,  160,
1369        57,  163,  163,  163,  720,  759,  160,  166,  817,   57,
1370        58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
1371        58,   58,   58,  756,   58,   58,   58,   58,   58,   67,
1372
1373        67,   67,  914,   68,   68,   68,   71,   71,   71,   72,
1374        72,   72,  817,   67,  759,   58,   58,   68,  174,  180,
1375        71,   58,  914,   72, 1096,  174,   58,  173,  173,  173,
1376       853,  795,  174,  180,  788,   58,   69,   69,   69,   69,
1377        69,   69,   69,   69,   69,   69,   69,   69,   69,  760,
1378        69,   69,   69,   69,   69,   73,   73,   73,  795,   74,
1379        74,   74,   77,   77,   77,   78,   78,   78,  853,   73,
1380       760,   69,   69,   74,  788, 1095,   77,  758,  790,   78,
1381       177,  177,  177,  186,  186,  186,   69,   70,   70,   70,
1382        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
1383
1384       758,   70,   70,   70,   70,   70,   79,   79,   79,  790,
1385        80,   80,   80,   81,   81,   81,   82,   82,   82,  189,
1386        79,  161,   70,   70,   80,  938,  189,   81,  814, 1084,
1387        82,  938, 1083,  189, 1067,  161, 1099,   70,   75,   75,
1388        75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
1389        75,  763,   75,   75,   75,   75,   75,   83,   83,   83,
1390       814,   84,   84,   84,   85,   85,   85,  161,   86,   86,
1391        86,   83,  175,   75,   75,   84,  188,  194,   85, 1099,
1392       816,   75,   86,   75,  763,   75,  175,  191,  191,  191,
1393       188,  194,  850,   75,   76,   76,   76,   76,   76,   76,
1394
1395        76,   76,   76,   76,   76,   76,   76,  145,   76,   76,
1396        76,   76,   76,   89,   89,   89,  850,   90,   90,   90,
1397       816,  145,  175,  198,  198,  198,  188,   89,  967,   76,
1398        76,   90,  202,  202,  202,   91,   91,   76,  967,   76,
1399        91,   76,  112,  145,  212,  212,  212,  818,   91,   76,
1400        87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
1401        87,   87,   87,  205,   87,   87,   87,   87,   87,   91,
1402        92,   92,  819,  818,  112,   92,  220,  205,  820,  793,
1403       112,  187,  200,   92,  112,   87,   87,  199,  187,  112,
1404       220,  215,  130,  131,  199,  187,  200,  819,  215,  130,
1405
1406       764,  199,  793,  820,   92,  215,  130,  131,   87,   88,
1407        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
1408        88,   88,  214,   88,   88,   88,   88,   88,  130,  131,
1409       200,  187,  852,  764,  130,  131,  214,  703,  130,  131,
1410       130,  131,  130,  131,   88,   88,  143,  213,  217,  217,
1411       217,  703,  792,  143,  213,  225,  214,  224,  224,  224,
1412       143,  213,  225,  228,  228,  228,  852,   88,  969,  225,
1413       314,  314,  314,  315,  315,  315,  791,  322,  322,  322,
1414       883,  213,  143,  323,  323,  323,  314,  794,  143,  315,
1415       848,  792,  143,  322,  143,  883,  143,  969,  882,  323,
1416
1417       330,  330,  330,  331,  331,  331,  337,  337,  337,  338,
1418       338,  338,  339,  339,  339,  848,  330,  884,  791,  331,
1419       315,  885,  337,  889, 1066,  338,  794,  339,  341,  341,
1420       341,  882,  323,  342,  342,  342,  343,  343,  343,  346,
1421       346,  346,  884,  341,  347,  347,  347,  886,  889,  342,
1422       338,  885,  343,  915,  331,  346,  352,  352,  352,  891,
1423       347,  353,  353,  353,  356,  356,  356,  357,  357,  357,
1424       905,  891,  352,  374,  374,  374,  911,  353,  905,  906,
1425       356,  918,  940,  357,  886,  915,  343,  906,  912,  374,
1426       375,  375,  375,  887,  347,  377,  377,  377,  378,  378,
1427
1428       378,  383,  383,  383,  912,  917,  375,  384,  384,  384,
1429       941,  377,  918,  940,  353,  911,  383,  385,  385,  385,
1430       357, 1017,  917,  384,  387,  387,  387,  391,  391,  391,
1431       941,  887,  377,  385,  394,  394,  394,  395,  395,  395,
1432       387,  968,  391,  397,  397,  397,  400,  400,  400, 1064,
1433       394, 1017,  999,  395,  403,  403,  403,  944,  968,  397,
1434      1018,  400,  943,  387,  404,  404,  404,  406,  406,  406,
1435       403,  407,  407,  407,  408,  408,  408,  943,  408,  972,
1436       404,  408,  944,  406,  919,  999,  407,  410,  410,  410,
1437       411,  411,  411,  973,  411,  972,  919,  411, 1018,  397,
1438
1439       970, 1062,  410,  412,  412,  412,  998,  413,  413,  413,
1440       415,  415,  415,  417,  417,  417,  418,  418,  418,  412,
1441      1054,  998,  406,  413,  970,  973,  415, 1073,  417,  419,
1442       419,  419,  418,  421,  421,  421,  423,  423,  423,  426,
1443       426,  426,  427,  427,  427,  419,  429,  429,  429,  421,
1444       971,  423,  432,  432,  432,  426, 1073, 1054,  427,  433,
1445       433,  433,  429,  435,  435,  435,  415,  971,  432,  438,
1446       438,  438,  445,  445,  445,  433,  446,  446,  446,  435,
1447       451,  451,  451, 1020, 1048,  438,  438,  996,  445,  421,
1448       452,  452,  452, 1020,  452,  451,  429,  452,  453,  453,
1449
1450       453,  457,  457,  457,  996, 1047,  435, 1002,  458,  458,
1451       458, 1001,  458, 1002,  453,  458,  457,  459,  459,  459,
1452       460,  460,  460,  461,  461,  461, 1001,  445,  464,  464,
1453       464, 1014,  459, 1000, 1003,  460,  467,  467,  467,  461,
1454       465,  465,  465,  464,  465,  453, 1014,  465,  468,  468,
1455       468,  467, 1089,  469,  469,  469,  460,  469, 1000, 1003,
1456       469,  473,  473,  473,  468,  473, 1016, 1089,  473,  476,
1457       476,  476,  467,  478,  478,  478,  479,  479,  479, 1046,
1458       479, 1034, 1016,  479, 1019,  476, 1108, 1034,  478,  480,
1459       480,  480,  482,  482,  482,  483,  483,  483, 1037,  483,
1460
1461      1019, 1108,  483, 1021, 1037,  480,  468,  482, 1039,  486,
1462       486,  486,  488,  488,  488,  489,  489,  489,  493,  493,
1463       493,  500,  500,  500,  476,  486, 1032,  488,  504,  504,
1464       504,  489, 1033, 1036,  493, 1049, 1021,  500,  505,  505,
1465       505, 1049,  505, 1045,  480,  505, 1031, 1039,  486,  508,
1466       508,  508, 1072,  512,  512,  512, 1036,  512, 1050,  493,
1467       512, 1090, 1031,  500, 1032,  508,  515,  515,  515, 1072,
1468      1033,  489,  516,  516,  516,  493,  516, 1103, 1051,  516,
1469      1052,  515,  517,  517,  517,  518,  518,  518, 1044,  518,
1470      1052, 1102,  518,  520,  520,  520, 1090,  517, 1050,  524,
1471
1472       524,  524, 1094,  524, 1069,  508,  524, 1102, 1075,  520,
1473       528,  528,  528,  529,  529,  529, 1103,  529, 1051, 1094,
1474       529,  531,  531,  531, 1055,  528,  533,  533,  533,  535,
1475       535,  535, 1070,  535, 1055, 1043,  535,  531,  538,  538,
1476       538, 1069,  533,  540,  540,  540, 1075,  540, 1030, 1068,
1477       540,  547,  547,  547,  538, 1092,  545,  545,  545, 1068,
1478      1076,  548,  548,  548, 1086,  548,  547,  533,  548, 1070,
1479      1093,  531,  545,  549,  549,  549,  556,  556,  556,  538,
1480       557,  557,  557,  561,  561,  561,  562,  562,  562,  549,
1481      1086,  556,  602,  602,  602, 1092,  557,  545, 1076,  566,
1482
1483       566,  566,  562,  566, 1123, 1029,  566,  569,  569,  569,
1484      1093,  569, 1100, 1117,  569, 1101,  574,  574,  574, 1117,
1485      1123,  549,  580,  580,  580, 1028,  562,  582,  582,  582,
1486       557,  574,  576,  576,  576, 1113,  576, 1106,  580,  576,
1487       584,  584,  584,  582,  588,  588,  588,  590,  590,  590,
1488      1100,  590,  574, 1101,  590, 1114,  584,  599,  599,  599,
1489       588,  593,  593,  593,  600,  600,  600, 1113,  600, 1027,
1490      1128,  600,  599, 1087, 1106,  580,  584,  593,  601,  601,
1491       601,  604,  604,  604,  605,  605,  605, 1114,  613,  613,
1492       613,  620,  620,  620,  601,  626,  626,  626,  588, 1087,
1493
1494       605, 1128,  593,  613,  614,  614,  614,  620,  614, 1104,
1495       626,  614,  622,  622,  622, 1105,  625,  625,  625,  629,
1496       629,  629,  631,  631,  631,  605, 1143, 1107,  622, 1230,
1497      1115,  601,  625, 1143, 1111,  629, 1118,  620,  631,  633,
1498       633,  633,  637,  637,  637, 1230,  637, 1104, 1116,  637,
1499       640,  640,  640, 1105, 1121,  633, 1119,  625,  641,  641,
1500       641,  643,  643,  643, 1107, 1118,  640,  644,  644,  644,
1501      1115,  631, 1111,  629,  653,  653,  653,  654,  654,  654,
1502      1121,  654, 1112,  644,  654,  664,  664,  664, 1116,  653,
1503       667,  667,  667,  668,  668,  668, 1119, 1132,  640, 1216,
1504
1505      1136,  664,  670,  670,  670, 1120,  667, 1132,  668, 1126,
1506       653,  669,  669,  669, 1216,  669, 1122,  670,  669, 1175,
1507      1112,  664,  672,  672,  672,  673,  673,  673,  674,  674,
1508       674,  680,  680,  680,  682,  682,  682,  667,  672,  691,
1509       691,  691, 1122, 1136,  674, 1120, 1129,  680, 1127, 1126,
1510       682,  692,  692,  692,  691,  693,  693,  693, 1175,  693,
1511      1130, 1137,  693,  701,  701,  701,  692,  680,  714,  714,
1512       714,  702,  702,  702,  705,  705,  705, 1129,  701,  709,
1513       709,  709, 1131,  674,  676,  676,  676,  702, 1127, 1144,
1514       705,  706,  706,  706,  709,  706, 1144, 1130,  706, 1134,
1515
1516       676,  710,  710,  710, 1137,  710, 1026, 1025,  710,  711,
1517       711,  711,  712,  712,  712,  705, 1138, 1133,  702, 1131,
1518      1135,  676, 1138,  676,  711,  715,  715,  715,  712,  676,
1519       725,  725,  725,  676, 1141,  676, 1134,  676,  732,  732,
1520       732,  715, 1145,  733,  733,  733,  725,  733, 1176, 1142,
1521       733, 1133, 1151,  732,  734,  734,  734, 1135,  734, 1024,
1522      1148,  734,  742,  742,  742,  743,  743,  743, 1145,  743,
1523       725, 1141,  743,  744,  744,  744, 1158,  742,  748,  748,
1524       748,  749,  749,  749, 1151,  749, 1142, 1176,  749,  744,
1525       752,  752,  752, 1148,  748,  753,  753,  753, 1146,  753,
1526
1527      1158, 1179,  753, 1180, 1206,  752,  754,  754,  754,  766,
1528       766,  766,  768,  768,  768,  780,  780,  780,  744,  775,
1529       775,  775,  754, 1149, 1146,  766,  748,  768,  771,  771,
1530       771,  780,  771, 1150,  775,  771,  777,  777,  777, 1179,
1531       777, 1180, 1206,  777,  784,  784,  784, 1152,  768, 1149,
1532       766,  785,  785,  785, 1159,  785, 1013, 1156,  785, 1150,
1533       784,  789,  789,  789,  780,  796,  796,  796,  798,  798,
1534       798,  799,  799,  799,  800,  800,  800,  789, 1159, 1152,
1535       796,  796, 1153, 1156,  798,  784,  801,  801,  801,  800,
1536       801, 1201, 1153,  801,  806,  806,  806,  807,  807,  807,
1537
1538      1157,  807, 1012, 1195,  807,  809,  809,  809, 1201,  806,
1539       810,  810,  810,  811,  811,  811,  813,  813,  813, 1160,
1540      1161,  809,  798, 1166, 1210,  810, 1157, 1195,  811,  815,
1541       815,  815,  813,  826,  826,  826, 1210,  821,  821,  821,
1542       822,  822,  822, 1164, 1167,  815,  810, 1011, 1165,  811,
1543      1207,  809,  821,  821, 1166,  822,  822,  823,  823,  823,
1544       815,  823, 1160, 1161,  823,  813,  825,  825,  825, 1184,
1545       827,  827,  827,  823,  827, 1167, 1184,  827,  834,  834,
1546       834, 1173,  825,  835,  835,  835, 1164,  835, 1207, 1010,
1547       835, 1165, 1009,  834,  838,  838,  838,  839,  839,  839,
1548
1549       840,  840,  840, 1008, 1174,  825,  843,  843,  843,  838,
1550       841,  841,  841,  839,  841,  840, 1185,  841,  844,  844,
1551       844,  843,  844, 1185, 1173,  844,  846,  846,  846,  847,
1552       847,  847,  854,  854,  854,  855,  855,  855, 1007,  856,
1553       856,  856, 1177,  856, 1197,  847,  856, 1174,  854, 1258,
1554       855,  855,  866,  866,  866,  856,  857,  857,  857, 1258,
1555       857, 1214, 1178,  857,  861,  861,  861,  866,  854,  867,
1556       867,  867,  857,  867, 1177, 1197,  867,  880,  880,  880,
1557       861,  870,  870,  870,  847,  858,  858,  858,  858,  858,
1558       858,  858,  858,  858, 1178, 1199,  858,  870, 1214,  858,
1559
1560       858,  858,  858,  858,  868,  868,  868,  869,  869,  869,
1561      1196,  869, 1182, 1219,  869, 1183, 1005,  861,  995,  868,
1562       858,  858,  859,  859,  859,  859,  859,  859,  859,  859,
1563       859, 1215,  994,  859, 1196, 1199,  859,  859,  859,  859,
1564       859,  872,  872,  872, 1182,  872, 1198, 1183,  872,  876,
1565       876,  876, 1219,  876, 1202, 1193,  876,  859,  859,  881,
1566       881,  881,  888,  888,  888,  890,  890,  890, 1215,  890,
1567      1211, 1194,  890, 1203, 1245,  881, 1200, 1198,  888, 1211,
1568      1245,  890,  901,  901,  901, 1202,  901, 1193, 1221,  901,
1569       909,  909,  909,  888,  893,  893,  893,  893,  893,  893,
1570
1571       893,  893,  893, 1194, 1203,  893,  909, 1243,  893,  893,
1572       893,  893,  893,  904,  904,  904, 1200,  904, 1228, 1204,
1573       904, 1022, 1022, 1022,  896,  896,  896, 1205, 1221,  893,
1574       893,  894,  894,  894,  894,  894,  894,  894,  894,  894,
1575       896, 1208,  894, 1204, 1228,  894,  894,  894,  894,  894,
1576      1243, 1205,  913,  913,  913,  916,  916,  916,  924,  924,
1577       924,  926,  926,  926, 1209,  993,  894,  894,  913,  896,
1578      1222,  916, 1208, 1226,  924,  924, 1227,  926,  927,  927,
1579       927,  928,  928,  928,  929,  929,  929,  930,  930,  930,
1580       937,  937,  937,  927, 1212, 1209,  928, 1226, 1256,  929,
1581
1582      1227, 1212,  930,  939,  939,  939,  937,  942,  942,  942,
1583      1222,  992,  926,  948,  948,  948,  950,  950,  950,  939,
1584       929, 1213, 1229,  942,  951,  951,  951,  991, 1213,  948,
1585      1256, 1220,  950, 1231,  939,  953,  953,  953,  942,  951,
1586       952,  952,  952, 1232,  952, 1241, 1235,  952, 1229, 1217,
1587       953,  954,  954,  954,  948,  954, 1217, 1231,  954,  955,
1588       955,  955,  956,  956,  956, 1218,  956, 1232,  990,  956,
1589      1220,  950, 1218, 1233,  955,  958,  958,  958,  959,  959,
1590       959,  986,  959, 1235, 1241,  959,  966,  966,  966, 1236,
1591       958,  976,  976,  976,  977,  977,  977, 1233,  977, 1234,
1592
1593      1244,  977,  966, 1223,  980,  980,  980,  976,  980, 1250,
1594      1223,  980,  983,  983,  983,  975,  983,  966, 1224,  983,
1595       987,  987,  987, 1234,  987, 1224, 1236,  987,  997,  997,
1596       997, 1006, 1006, 1006, 1248, 1250,  976, 1242, 1015, 1015,
1597      1015, 1237, 1015, 1244,  997, 1015, 1248, 1006, 1023, 1023,
1598      1023, 1035, 1035, 1035, 1015, 1038, 1038, 1038, 1040, 1040,
1599      1040, 1041, 1041, 1041, 1023, 1237, 1249, 1035, 1042, 1042,
1600      1042, 1038, 1053, 1053, 1053, 1249, 1242, 1041, 1056, 1056,
1601      1056, 1006, 1056, 1042, 1267, 1056, 1251,  974, 1053, 1057,
1602      1057, 1057, 1246, 1267, 1056, 1247, 1238, 1023, 1058, 1058,
1603
1604      1058, 1252,  965, 1053, 1257, 1057, 1060, 1060, 1060, 1061,
1605      1061, 1061, 1251, 1061, 1058,  964, 1061, 1071, 1071, 1071,
1606      1238, 1060, 1074, 1074, 1074, 1077, 1077, 1077, 1078, 1078,
1607      1078, 1246, 1078, 1071, 1247, 1078, 1257, 1268, 1074, 1253,
1608      1252, 1077, 1085, 1085, 1085, 1088, 1088, 1088,  963, 1088,
1609      1266, 1313, 1088, 1091, 1091, 1091, 1077, 1091, 1085, 1254,
1610      1091, 1088, 1266, 1097, 1097, 1097, 1255, 1097, 1268, 1091,
1611      1097, 1147, 1147, 1147, 1154, 1154, 1154, 1313, 1253, 1097,
1612      1155, 1155, 1155, 1254, 1162, 1162, 1162, 1147, 1162, 1154,
1613      1255, 1162, 1163, 1163, 1163, 1155, 1168, 1168, 1168,  962,
1614
1615      1162, 1169, 1169, 1169, 1171, 1171, 1171, 1269, 1163, 1262,
1616       961, 1259, 1168, 1170, 1170, 1170, 1169, 1170, 1272, 1171,
1617      1170, 1172, 1172, 1172,  960, 1172, 1263, 1272, 1172, 1181,
1618      1181, 1181, 1186, 1186, 1186, 1259, 1186, 1284, 1269, 1186,
1619      1187, 1187, 1187, 1260, 1187, 1181, 1264, 1187, 1186, 1190,
1620      1190, 1190, 1262, 1190, 1265, 1275, 1190, 1225, 1225, 1225,
1621      1181, 1239, 1239, 1239, 1261, 1261, 1261, 1260, 1284, 1263,
1622      1264, 1271, 1276, 1225, 1270, 1270, 1270, 1239, 1265, 1277,
1623      1261, 1291, 1280, 1271, 1273, 1273, 1273, 1275, 1278, 1280,
1624      1270, 1277, 1279, 1279, 1279, 1281, 1285, 1278, 1292,  957,
1625
1626      1273, 1289, 1281,  949, 1276, 1282, 1282, 1282, 1279, 1282,
1627      1290, 1299, 1282, 1283, 1283, 1283, 1286, 1286, 1286, 1291,
1628      1300, 1282, 1287, 1287, 1287, 1289, 1295, 1285, 1296, 1283,
1629      1301, 1302, 1286, 1295, 1290, 1296, 1292, 1303, 1287, 1293,
1630      1293, 1293, 1297, 1297, 1297, 1304, 1307, 1308, 1305, 1306,
1631      1299, 1309, 1310, 1311, 1312, 1293, 1314, 1315, 1297, 1300,
1632      1318, 1303, 1316, 1312, 1319, 1311, 1321, 1320, 1324, 1304,
1633      1301, 1302, 1305, 1306, 1325, 1321, 1317, 1317, 1317, 1320,
1634      1327, 1315, 1314, 1307, 1308, 1328, 1316,  947, 1335, 1336,
1635      1309, 1310, 1317, 1322, 1322, 1322, 1326, 1326, 1326, 1333,
1636
1637      1324, 1331, 1334, 1318,  946,  945, 1325, 1319, 1331, 1322,
1638      1332, 1327, 1326, 1329, 1329, 1329, 1328, 1332, 1337, 1338,
1639      1339, 1340,  936, 1333,  935,  934, 1334, 1335, 1336, 1329,
1640      1340,  933, 1339, 1341, 1341, 1341, 1342, 1342, 1342,  932,
1641       931,  925, 1337, 1338,  923,  921,  908,  907,  900, 1341,
1642       899,  898, 1342, 1345, 1345, 1345, 1345, 1345, 1345, 1345,
1643      1346, 1346, 1346, 1346, 1346, 1346, 1346, 1347, 1347, 1347,
1644      1347, 1347, 1347, 1347, 1348, 1348, 1348, 1348, 1348, 1348,
1645      1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1350, 1350,
1646      1350, 1350, 1350, 1350, 1350, 1351, 1351, 1351, 1351, 1351,
1647
1648      1351, 1351, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1353,
1649      1353, 1353, 1353, 1353, 1353, 1353, 1354, 1354, 1354, 1354,
1650      1354, 1354, 1354, 1355, 1355, 1355, 1355, 1355, 1355, 1355,
1651      1356, 1356, 1356, 1356, 1356, 1356, 1356, 1357, 1357, 1357,
1652      1357, 1357, 1357, 1357, 1358, 1358, 1358, 1358, 1358, 1358,
1653      1358, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1360, 1360,
1654      1360, 1360, 1360, 1360, 1360, 1361, 1361, 1361, 1361, 1361,
1655      1361, 1361, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1363,
1656      1363, 1363, 1363, 1363, 1363, 1363, 1364, 1364, 1364, 1364,
1657      1364, 1364, 1364, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
1658
1659      1366, 1366, 1366, 1366, 1366, 1366, 1366, 1367, 1367, 1367,
1660       897, 1367, 1368, 1368, 1368,  895, 1368, 1369, 1369, 1369,
1661       879, 1369, 1370, 1370, 1370,  875, 1370, 1371, 1371, 1371,
1662       865, 1371, 1372, 1372, 1372,  864, 1372, 1373, 1373, 1373,
1663       863, 1373, 1374, 1374, 1374,  862, 1374, 1375, 1375, 1375,
1664      1375, 1375,  860, 1375, 1376,  845, 1376, 1377,  842, 1377,
1665      1378,  833, 1378, 1379,  832, 1379, 1380,  831, 1380, 1381,
1666       830, 1381, 1382,  824, 1382, 1383,  812, 1383, 1384, 1384,
1667      1384, 1384, 1384, 1384, 1384, 1385,  808,  805, 1385, 1386,
1668      1386, 1386, 1386, 1386, 1386, 1387, 1387, 1387, 1387, 1387,
1669
1670      1387, 1388, 1388, 1388, 1388, 1388, 1388, 1389, 1389, 1389,
1671      1389, 1389, 1389, 1390, 1390, 1390, 1390, 1390, 1390, 1391,
1672      1391, 1391, 1391, 1391, 1391, 1392, 1392, 1392, 1392, 1392,
1673      1392, 1393, 1393, 1393, 1393, 1393, 1393, 1394, 1394, 1394,
1674      1394, 1394, 1394, 1394, 1395, 1395, 1395, 1395, 1395, 1395,
1675      1395, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1397, 1397,
1676      1397, 1397, 1397, 1397, 1397, 1398, 1398, 1398, 1398, 1398,
1677      1398, 1398, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1400,
1678      1400, 1400, 1400, 1400, 1400, 1400,  804,  802,  797,  783,
1679       782,  781,  776,  774,  770,  769,  767,  765,  747,  746,
1680
1681       745,  739,  738,  737,  729,  728,  727,  726,  724,  704,
1682       699,  697,  696,  695,  694,  689,  687,  686,  685,  684,
1683       681,  679,  671,  666,  665,  663,  662,  661,  660,  659,
1684       658,  657,  652,  651,  650,  649,  648,  647,  646,  645,
1685       642,  636,  632,  630,  628,  627,  624,  621,  619,  616,
1686       615,  612,  611,  608,  607,  606,  603,  598,  594,  589,
1687       587,  586,  585,  583,  581,  579,  578,  577,  575,  573,
1688       572,  571,  570,  565,  564,  563,  560,  559,  558,  555,
1689       550,  546,  544,  543,  539,  534,  532,  530,  527,  523,
1690       522,  519,  511,  510,  509,  503,  502,  501,  499,  498,
1691
1692       495,  492,  490,  487,  485,  484,  481,  477,  472,  466,
1693       463,  462,  456,  455,  454,  450,  449,  448,  447,  444,
1694       443,  442,  441,  436,  431,  430,  425,  424,  422,  416,
1695       409,  402,  401,  399,  398,  393,  392,  390,  389,  388,
1696       382,  381,  380,  379,  373,  372,  371,  368,  367,  366,
1697       364,  360,  358,  355,  354,  351,  350,  349,  348,  345,
1698       344,  340,  336,  335,  334,  333,  332,  329,  328,  327,
1699       326,  325,  324,  321,  320,  319,  318,  317,  316,  313,
1700       312,  310,  309,  308,  307,  306,  302,  300,  299,  298,
1701       297,  296,  295,  292,  291,  290,  289,  288,  287,  284,
1702
1703       283,  280,  279,  278,  277,  276,  273,  272,  271,  270,
1704       269,  268,  265,  264,  263,  262,  261,  260,  259,  256,
1705       255,  252,  251,  250,  249,  248,  247,  246,  243,  242,
1706       241,  240,  239,  233,  232,  230,  227,  226,  222,  218,
1707       210,  209,  208,  207,  203,  196,  192,  184,  183,  182,
1708       178,  170,  169,  168,  164,  157,  156,  155,  154,  153,
1709       152,  148,  140,  136,  127,  123,  119,  118,  117,  111,
1710       110,  108,  105,   93, 1344, 1344, 1344, 1344, 1344, 1344,
1711      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1712      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1713
1714      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1715      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1716      1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344,
1717      1344, 1344, 1344, 1344, 1344, 1344, 1344
1718     } ;
1719
1720 /* Table of booleans, true if rule could match eol. */
1721 static yyconst flex_int32_t yy_rule_can_match_eol[179] =
1722     {   0,
1723 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1724     1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 
1725     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1726     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 
1727     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
1728     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
1729     0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1730     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 
1731     0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,     };
1732
1733 static yy_state_type yy_last_accepting_state;
1734 static char *yy_last_accepting_cpos;
1735
1736 extern int surf_parse__flex_debug;
1737 int surf_parse__flex_debug = 0;
1738
1739 /* The intent behind this definition is that it'll catch
1740  * any uses of REJECT which flex missed.
1741  */
1742 #define REJECT reject_used_but_not_detected
1743 #define yymore() yymore_used_but_not_detected
1744 #define YY_MORE_ADJ 0
1745 #define YY_RESTORE_YY_MORE_OFFSET
1746 char *surf_parse_text;
1747 /* Validating XML processor for surf/surfxml.dtd.
1748  * Generated 2006/07/18 21:02:15.
1749  *
1750  * This program was generated with the FleXML XML processor generator.
1751  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
1752  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
1753  * (Id: flexml.pl,v 1.53 2006/07/18 12:12:06 mquinson Exp).
1754  * 
1755  * There are two, intertwined parts to this program, part A and part B.
1756  *
1757  * Part A
1758  * ------
1759  * 
1760  * Some parts, here collectively called "Part A", are found in the 
1761  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
1762  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
1763  *
1764  * You can redistribute, use, perform, display and/or modify "Part A"
1765  * provided the following two conditions hold:
1766  *
1767  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
1768  *    FleXML; without even the implied warranty of MERCHANTABILITY or
1769  *    FITNESS FOR A PARTICULAR PURPOSE.
1770  *
1771  * 2. The program distribution conditions do not in any way affect the
1772  *    distribution conditions of the FleXML system used to generate this
1773  *    file or any version of FleXML derived from that system.
1774  *
1775  * Notice that these are explicit rights granted to you for files
1776  * generated by the FleXML system.  For your rights in connection with
1777  * the FleXML system itself please consult the GNU General Public License.
1778  * 
1779  * Part B
1780  * ------
1781  * 
1782  * The other parts, here collectively called "Part B", and which came 
1783  * from the DTD used by FleXML to generate this program, can be 
1784  * distributed (or not, as the case may be) under the terms of whoever
1785  * wrote them, provided these terms respect and obey the two conditions 
1786  * above under the heading "Part A".
1787  *
1788  * The author of and contributors to FleXML specifically disclaim
1789  * any copyright interest in "Part B", unless "Part B" was written 
1790  * by the author of or contributors to FleXML.
1791  * 
1792  */
1793
1794 /* Version strings. */
1795 const char rcs_surfxml_flexml_skeleton[] =
1796  "$" "Id: skel,v 1.31 2006/07/18 18:21:13 mquinson Exp $";
1797 const char rcs_surfxml_flexml[] =
1798  "$" "Id: flexml.pl,v 1.53 2006/07/18 12:12:06 mquinson Exp $";
1799
1800 /* ANSI headers. */
1801 #include <unistd.h>
1802 #include <stdio.h>
1803 #include <string.h>
1804 #include <assert.h>
1805 #include <stdarg.h>
1806 #include <ctype.h>
1807
1808 /* Generated definitions. */
1809 #define FLEXML_yylineno
1810 #define FLEXML_BUFFERSTACKSIZE 1000000
1811
1812 /* XML processor api. */
1813 /* FleXML-provided data. */
1814 const char* surfxml_pcdata;
1815 AT_surfxml_network_link_bandwidth A_surfxml_network_link_bandwidth;
1816 AT_surfxml_process_host A_surfxml_process_host;
1817 AT_surfxml_network_link_latency_file A_surfxml_network_link_latency_file;
1818 AT_surfxml_route_impact_on_dst_with_other_send A_surfxml_route_impact_on_dst_with_other_send;
1819 AT_surfxml_cpu_interference_send_recv A_surfxml_cpu_interference_send_recv;
1820 AT_surfxml_route_impact_on_dst A_surfxml_route_impact_on_dst;
1821 AT_surfxml_platform_description_version A_surfxml_platform_description_version;
1822 AT_surfxml_route_impact_on_src_with_other_recv A_surfxml_route_impact_on_src_with_other_recv;
1823 AT_surfxml_route_element_name A_surfxml_route_element_name;
1824 AT_surfxml_process_start_time A_surfxml_process_start_time;
1825 AT_surfxml_process_function A_surfxml_process_function;
1826 AT_surfxml_cpu_state A_surfxml_cpu_state;
1827 AT_surfxml_cpu_interference_send A_surfxml_cpu_interference_send;
1828 AT_surfxml_network_link_bandwidth_file A_surfxml_network_link_bandwidth_file;
1829 AT_surfxml_cpu_name A_surfxml_cpu_name;
1830 AT_surfxml_process_kill_time A_surfxml_process_kill_time;
1831 AT_surfxml_network_link_state A_surfxml_network_link_state;
1832 AT_surfxml_cpu_availability_file A_surfxml_cpu_availability_file;
1833 AT_surfxml_argument_value A_surfxml_argument_value;
1834 AT_surfxml_route_src A_surfxml_route_src;
1835 AT_surfxml_route_impact_on_src A_surfxml_route_impact_on_src;
1836 AT_surfxml_cpu_max_outgoing_rate A_surfxml_cpu_max_outgoing_rate;
1837 AT_surfxml_cpu_availability A_surfxml_cpu_availability;
1838 AT_surfxml_cpu_interference_recv A_surfxml_cpu_interference_recv;
1839 AT_surfxml_network_link_name A_surfxml_network_link_name;
1840 AT_surfxml_cpu_power A_surfxml_cpu_power;
1841 AT_surfxml_include_file A_surfxml_include_file;
1842 AT_surfxml_network_link_sharing_policy A_surfxml_network_link_sharing_policy;
1843 AT_surfxml_route_dst A_surfxml_route_dst;
1844 AT_surfxml_network_link_latency A_surfxml_network_link_latency;
1845 AT_surfxml_cpu_state_file A_surfxml_cpu_state_file;
1846 AT_surfxml_network_link_state_file A_surfxml_network_link_state_file;
1847
1848 /* XML state. */
1849 #ifdef FLEX_DEBUG
1850 # define ENTER(state)   debug_enter(state,#state)
1851 # define LEAVE          debug_leave()
1852 # define SET(state)     debug_set(state,#state)
1853   static void debug_enter(int, const char*);
1854   static void debug_leave(void);
1855   static void debug_set(int, const char*);
1856 #else
1857 # define ENTER(state)   (yy_push_state(state))
1858 # define LEAVE          (yy_pop_state())
1859 # define SET(state)     BEGIN(state)
1860 #endif
1861
1862 /* Generic actions. */
1863 #define SKIP    /*skip*/
1864 #define SUCCEED        CLEANUP; return 0
1865
1866 #define FAIL    return fail
1867 static int fail(const char*, ...);
1868 const char * surfxml_parse_err_msg(void);
1869
1870 /* Cleanup */
1871 static void cleanup(void);
1872 #define CLEANUP  cleanup()
1873
1874 /* Text buffer stack handling. */
1875 static char bufferstack[FLEXML_BUFFERSTACKSIZE];
1876 static char* limit = bufferstack + FLEXML_BUFFERSTACKSIZE;
1877 typedef struct BufferLast_s {
1878   struct BufferLast_s *old; const char* saved; char new1[1];
1879 } BufferLast;
1880 #ifdef FLEXML_HasMixed
1881 static BufferLast* last = (BufferLast*)0;
1882 #endif
1883 static char* next = bufferstack;
1884
1885 #define BUFFERSET(P)  (P = next)
1886 #define BUFFERPUTC(C) (assert(next<limit), *(next++) = (C))
1887 #define BUFFERDONE    (BUFFERPUTC('\0'))
1888
1889 #define BUFFERLITERAL(C,P) bufferliteral(C,&(P),surf_parse_text)
1890 static void bufferliteral(char c, const char** pp, char* text)
1891 {
1892   char *s = strchr(text,c), *e = strrchr(text,c);
1893   assert(s <= e); BUFFERSET(*pp);
1894   while (++s<e) {
1895     if (isspace(*s)) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
1896     else BUFFERPUTC(*s);
1897   }
1898   BUFFERDONE;
1899 }
1900
1901 #ifdef FLEXML_HasMixed
1902 static void pushbuffer(const char* p)
1903 {
1904   BufferLast* l = (BufferLast*)next;
1905   assert(next < limit);
1906   l->old = last;
1907   l->saved = p;
1908   next = l->new1;
1909   last = l;
1910 }
1911
1912 static const char* popbuffer(void)
1913 {
1914   BufferLast* l = last;
1915   assert(last != (BufferLast*)0);
1916   last = l->old;
1917   next = (char*)l;
1918   return l->saved;
1919 }
1920 #endif
1921
1922 /* General internal entities are `unput' back onto the input stream... */
1923 #define ENTITYTEXT(T) \
1924   { char *s = (T), *e = s+strlen(s);\
1925     while (--e >= s) { unput(*e); }}
1926 /* Flex standard options. */
1927 #define YY_NO_INPUT 1
1928 /* Flex user-requested options. */
1929 /* XML character classes (currently restricted to ASCII). */
1930 /* "Common syntactic structures." */
1931 /* "Names and Tokens." */
1932 /* Miscellaneous. */
1933 /* Parser states (flex `exclusive start conditions'):
1934  *
1935  * PROLOG       the XML prolog of the document before <?xml...>
1936  * DOCTYPE      the XML prolog of the document after <?xml...>
1937  * EPILOG       after the root element
1938  * INCOMMENT    inside an XML comment <!--....-->
1939  * INPI         inside an XML PI <?...?>
1940  * VALUE1       inside a '...'-delimited literal
1941  * VALUE2       inside a "..."-delimited literal
1942  * CDATA        inside a <![CDATA[...] ]> section.
1943  * ROOT_<tag>   expect root element <tag>
1944  * AL_<tag>     inside the attribute list for <tag>
1945  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
1946  * IMPOSSIBLE   dummy to permit disabling rules; must be last
1947  */
1948
1949 /* State names. */
1950 const char* *surfxml_statenames=NULL;
1951
1952 #define INITIAL 0
1953 #define PROLOG 1
1954 #define DOCTYPE 2
1955 #define EPILOG 3
1956 #define INCOMMENT 4
1957 #define INPI 5
1958 #define VALUE1 6
1959 #define VALUE2 7
1960 #define CDATA 8
1961 #define ROOT_surfxml_platform_description 9
1962 #define AL_surfxml_platform_description 10
1963 #define S_surfxml_platform_description 11
1964 #define S_surfxml_platform_description_1 12
1965 #define S_surfxml_platform_description_2 13
1966 #define E_surfxml_platform_description 14
1967 #define ROOT_surfxml_include 15
1968 #define AL_surfxml_include 16
1969 #define S_surfxml_include 17
1970 #define S_surfxml_include_1 18
1971 #define S_surfxml_include_2 19
1972 #define E_surfxml_include 20
1973 #define ROOT_surfxml_cpu 21
1974 #define AL_surfxml_cpu 22
1975 #define E_surfxml_cpu 23
1976 #define ROOT_surfxml_network_link 24
1977 #define AL_surfxml_network_link 25
1978 #define E_surfxml_network_link 26
1979 #define ROOT_surfxml_route 27
1980 #define AL_surfxml_route 28
1981 #define S_surfxml_route 29
1982 #define S_surfxml_route_1 30
1983 #define S_surfxml_route_2 31
1984 #define E_surfxml_route 32
1985 #define ROOT_surfxml_route_element 33
1986 #define AL_surfxml_route_element 34
1987 #define E_surfxml_route_element 35
1988 #define ROOT_surfxml_process 36
1989 #define AL_surfxml_process 37
1990 #define S_surfxml_process 38
1991 #define S_surfxml_process_1 39
1992 #define S_surfxml_process_2 40
1993 #define E_surfxml_process 41
1994 #define ROOT_surfxml_argument 42
1995 #define AL_surfxml_argument 43
1996 #define E_surfxml_argument 44
1997 #define IMPOSSIBLE 45
1998
1999 #ifndef YY_NO_UNISTD_H
2000 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2001  * down here because we want the user's section 1 to have been scanned first.
2002  * The user has a chance to override it with an option.
2003  */
2004 #include <unistd.h>
2005 #endif
2006
2007 #ifndef YY_EXTRA_TYPE
2008 #define YY_EXTRA_TYPE void *
2009 #endif
2010
2011 /* Macros after this point can all be overridden by user definitions in
2012  * section 1.
2013  */
2014
2015 #ifndef YY_SKIP_YYWRAP
2016 #ifdef __cplusplus
2017 extern "C" int surf_parse_wrap (void );
2018 #else
2019 extern int surf_parse_wrap (void );
2020 #endif
2021 #endif
2022
2023 #ifndef yytext_ptr
2024 static void yy_flex_strncpy (char *,yyconst char *,int );
2025 #endif
2026
2027 #ifdef YY_NEED_STRLEN
2028 static int yy_flex_strlen (yyconst char * );
2029 #endif
2030
2031 #ifndef YY_NO_INPUT
2032
2033 #ifdef __cplusplus
2034 static int yyinput (void );
2035 #else
2036 static int input (void );
2037 #endif
2038
2039 #endif
2040
2041         static int yy_start_stack_ptr = 0;
2042         static int yy_start_stack_depth = 0;
2043         static int *yy_start_stack = 0;
2044     
2045     static void yy_push_state (int new_state );
2046     
2047     static void yy_pop_state (void );
2048     
2049 /* Amount of stuff to slurp up with each read. */
2050 #ifndef YY_READ_BUF_SIZE
2051 #define YY_READ_BUF_SIZE 8192
2052 #endif
2053
2054 /* Copy whatever the last rule matched to the standard output. */
2055 #ifndef ECHO
2056 /* This used to be an fputs(), but since the string might contain NUL's,
2057  * we now use fwrite().
2058  */
2059 #define ECHO (void) fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )
2060 #endif
2061
2062 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2063  * is returned in "result".
2064  */
2065 #ifndef YY_INPUT
2066 #define YY_INPUT(buf,result,max_size) \
2067         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2068                 { \
2069                 int c = '*'; \
2070                 size_t n; \
2071                 for ( n = 0; n < max_size && \
2072                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
2073                         buf[n] = (char) c; \
2074                 if ( c == '\n' ) \
2075                         buf[n++] = (char) c; \
2076                 if ( c == EOF && ferror( surf_parse_in ) ) \
2077                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
2078                 result = n; \
2079                 } \
2080         else \
2081                 { \
2082                 errno=0; \
2083                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
2084                         { \
2085                         if( errno != EINTR) \
2086                                 { \
2087                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2088                                 break; \
2089                                 } \
2090                         errno=0; \
2091                         clearerr(surf_parse_in); \
2092                         } \
2093                 }\
2094 \
2095
2096 #endif
2097
2098 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2099  * we don't want an extra ';' after the "return" because that will cause
2100  * some compilers to complain about unreachable statements.
2101  */
2102 #ifndef yyterminate
2103 #define yyterminate() return YY_NULL
2104 #endif
2105
2106 /* Number of entries by which start-condition stack grows. */
2107 #ifndef YY_START_STACK_INCR
2108 #define YY_START_STACK_INCR 25
2109 #endif
2110
2111 /* Report a fatal error. */
2112 #ifndef YY_FATAL_ERROR
2113 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2114 #endif
2115
2116 /* end tables serialization structures and prototypes */
2117
2118 /* Default declaration of generated scanner - a define so the user can
2119  * easily add parameters.
2120  */
2121 #ifndef YY_DECL
2122 #define YY_DECL_IS_OURS 1
2123
2124 extern int surf_parse_lex (void);
2125
2126 #define YY_DECL int surf_parse_lex (void)
2127 #endif /* !YY_DECL */
2128
2129 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
2130  * have been set up.
2131  */
2132 #ifndef YY_USER_ACTION
2133 #define YY_USER_ACTION
2134 #endif
2135
2136 /* Code executed at the end of each rule. */
2137 #ifndef YY_BREAK
2138 #define YY_BREAK break;
2139 #endif
2140
2141 #define YY_RULE_SETUP \
2142         YY_USER_ACTION
2143
2144 /** The main scanner function which does all the work.
2145  */
2146 YY_DECL
2147 {
2148         register yy_state_type yy_current_state;
2149         register char *yy_cp, *yy_bp;
2150         register int yy_act;
2151     
2152  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
2153  SET(PROLOG);
2154   /* FleXML_init */
2155   next = bufferstack;
2156   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
2157   surfxml_statenames[PROLOG] = NULL;
2158   surfxml_statenames[DOCTYPE] = NULL;
2159   surfxml_statenames[EPILOG] = NULL;
2160   surfxml_statenames[INCOMMENT] = NULL;
2161   surfxml_statenames[INPI] = NULL;
2162   surfxml_statenames[VALUE1] = NULL;
2163   surfxml_statenames[VALUE2] = NULL;
2164   surfxml_statenames[CDATA] = NULL;
2165   surfxml_statenames[ROOT_surfxml_platform_description] = NULL;
2166   surfxml_statenames[AL_surfxml_platform_description] = NULL;
2167   surfxml_statenames[S_surfxml_platform_description] = "platform_description";
2168   surfxml_statenames[S_surfxml_platform_description_1] = "platform_description";
2169   surfxml_statenames[S_surfxml_platform_description_2] = "platform_description";
2170   surfxml_statenames[E_surfxml_platform_description] = "platform_description";
2171   surfxml_statenames[ROOT_surfxml_include] = NULL;
2172   surfxml_statenames[AL_surfxml_include] = NULL;
2173   surfxml_statenames[S_surfxml_include] = "include";
2174   surfxml_statenames[S_surfxml_include_1] = "include";
2175   surfxml_statenames[S_surfxml_include_2] = "include";
2176   surfxml_statenames[E_surfxml_include] = "include";
2177   surfxml_statenames[ROOT_surfxml_cpu] = NULL;
2178   surfxml_statenames[AL_surfxml_cpu] = NULL;
2179   surfxml_statenames[E_surfxml_cpu] = "cpu";
2180   surfxml_statenames[ROOT_surfxml_network_link] = NULL;
2181   surfxml_statenames[AL_surfxml_network_link] = NULL;
2182   surfxml_statenames[E_surfxml_network_link] = "network_link";
2183   surfxml_statenames[ROOT_surfxml_route] = NULL;
2184   surfxml_statenames[AL_surfxml_route] = NULL;
2185   surfxml_statenames[S_surfxml_route] = "route";
2186   surfxml_statenames[S_surfxml_route_1] = "route";
2187   surfxml_statenames[S_surfxml_route_2] = "route";
2188   surfxml_statenames[E_surfxml_route] = "route";
2189   surfxml_statenames[ROOT_surfxml_route_element] = NULL;
2190   surfxml_statenames[AL_surfxml_route_element] = NULL;
2191   surfxml_statenames[E_surfxml_route_element] = "route_element";
2192   surfxml_statenames[ROOT_surfxml_process] = NULL;
2193   surfxml_statenames[AL_surfxml_process] = NULL;
2194   surfxml_statenames[S_surfxml_process] = "process";
2195   surfxml_statenames[S_surfxml_process_1] = "process";
2196   surfxml_statenames[S_surfxml_process_2] = "process";
2197   surfxml_statenames[E_surfxml_process] = "process";
2198   surfxml_statenames[ROOT_surfxml_argument] = NULL;
2199   surfxml_statenames[AL_surfxml_argument] = NULL;
2200   surfxml_statenames[E_surfxml_argument] = "argument";
2201   }
2202
2203  /* COMMENTS and PIs: handled uniformly for efficiency. */
2204
2205         if ( (yy_init) )
2206                 {
2207                 (yy_init) = 0;
2208
2209 #ifdef YY_USER_INIT
2210                 YY_USER_INIT;
2211 #endif
2212
2213                 if ( ! (yy_start) )
2214                         (yy_start) = 1; /* first start state */
2215
2216                 if ( ! surf_parse_in )
2217                         surf_parse_in = stdin;
2218
2219                 if ( ! surf_parse_out )
2220                         surf_parse_out = stdout;
2221
2222                 if ( ! YY_CURRENT_BUFFER ) {
2223                         surf_parse_ensure_buffer_stack ();
2224                         YY_CURRENT_BUFFER_LVALUE =
2225                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
2226                 }
2227
2228                 surf_parse__load_buffer_state( );
2229                 }
2230
2231         while ( 1 )             /* loops until end-of-file is reached */
2232                 {
2233                 yy_cp = (yy_c_buf_p);
2234
2235                 /* Support of surf_parse_text. */
2236                 *yy_cp = (yy_hold_char);
2237
2238                 /* yy_bp points to the position in yy_ch_buf of the start of
2239                  * the current run.
2240                  */
2241                 yy_bp = yy_cp;
2242
2243                 yy_current_state = (yy_start);
2244 yy_match:
2245                 do
2246                         {
2247                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2248                         if ( yy_accept[yy_current_state] )
2249                                 {
2250                                 (yy_last_accepting_state) = yy_current_state;
2251                                 (yy_last_accepting_cpos) = yy_cp;
2252                                 }
2253                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2254                                 {
2255                                 yy_current_state = (int) yy_def[yy_current_state];
2256                                 if ( yy_current_state >= 1345 )
2257                                         yy_c = yy_meta[(unsigned int) yy_c];
2258                                 }
2259                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2260                         ++yy_cp;
2261                         }
2262                 while ( yy_base[yy_current_state] != 3675 );
2263
2264 yy_find_action:
2265                 yy_act = yy_accept[yy_current_state];
2266                 if ( yy_act == 0 )
2267                         { /* have to back up */
2268                         yy_cp = (yy_last_accepting_cpos);
2269                         yy_current_state = (yy_last_accepting_state);
2270                         yy_act = yy_accept[yy_current_state];
2271                         }
2272
2273                 YY_DO_BEFORE_ACTION;
2274
2275                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2276                         {
2277                         int yyl;
2278                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
2279                                 if ( surf_parse_text[yyl] == '\n' )
2280                                            
2281     surf_parse_lineno++;
2282 ;
2283                         }
2284
2285 do_action:      /* This label is used only to access EOF actions. */
2286
2287                 switch ( yy_act )
2288         { /* beginning of action switch */
2289                         case 0: /* must back up */
2290                         /* undo the effects of YY_DO_BEFORE_ACTION */
2291                         *yy_cp = (yy_hold_char);
2292                         yy_cp = (yy_last_accepting_cpos);
2293                         yy_current_state = (yy_last_accepting_state);
2294                         goto yy_find_action;
2295
2296 case 1:
2297 YY_RULE_SETUP
2298 ENTER(INCOMMENT);
2299         YY_BREAK
2300 case 2:
2301 YY_RULE_SETUP
2302 ENTER(INPI);
2303         YY_BREAK
2304
2305 case 3:
2306 YY_RULE_SETUP
2307 LEAVE;
2308         YY_BREAK
2309 case 4:
2310 case 5:
2311 case 6:
2312 /* rule 6 can match eol */
2313 YY_RULE_SETUP
2314 SKIP;
2315         YY_BREAK
2316 case YY_STATE_EOF(INCOMMENT):
2317 FAIL("EOF in comment.");
2318         YY_BREAK
2319
2320 case 7:
2321 YY_RULE_SETUP
2322 LEAVE;
2323         YY_BREAK
2324 case 8:
2325 case 9:
2326 /* rule 9 can match eol */
2327 YY_RULE_SETUP
2328 SKIP;
2329         YY_BREAK
2330 case YY_STATE_EOF(INPI):
2331 FAIL("EOF in PI (processing instruction).");
2332         YY_BREAK
2333
2334 /* SPACES: skipped uniformly */
2335 case 10:
2336 /* rule 10 can match eol */
2337 YY_RULE_SETUP
2338 SKIP;
2339         YY_BREAK
2340 /* PROLOG: determine root element and process it. */
2341
2342 case 11:
2343 /* rule 11 can match eol */
2344 YY_RULE_SETUP
2345 SET(DOCTYPE); 
2346         YY_BREAK
2347 case 12:
2348 /* rule 12 can match eol */
2349 YY_RULE_SETUP
2350 FAIL("Bad declaration %s.",surf_parse_text);
2351         YY_BREAK
2352
2353 case 13:
2354 /* rule 13 can match eol */
2355 YY_RULE_SETUP
2356 SET(ROOT_surfxml_argument);
2357         YY_BREAK
2358 case 14:
2359 /* rule 14 can match eol */
2360 YY_RULE_SETUP
2361 SET(ROOT_surfxml_route_element);
2362         YY_BREAK
2363 case 15:
2364 /* rule 15 can match eol */
2365 YY_RULE_SETUP
2366 SET(ROOT_surfxml_cpu);
2367         YY_BREAK
2368 case 16:
2369 /* rule 16 can match eol */
2370 YY_RULE_SETUP
2371 SET(ROOT_surfxml_include);
2372         YY_BREAK
2373 case 17:
2374 /* rule 17 can match eol */
2375 YY_RULE_SETUP
2376 SET(ROOT_surfxml_route);
2377         YY_BREAK
2378 case 18:
2379 /* rule 18 can match eol */
2380 YY_RULE_SETUP
2381 SET(ROOT_surfxml_platform_description);
2382         YY_BREAK
2383 case 19:
2384 /* rule 19 can match eol */
2385 YY_RULE_SETUP
2386 SET(ROOT_surfxml_network_link);
2387         YY_BREAK
2388 case 20:
2389 /* rule 20 can match eol */
2390 YY_RULE_SETUP
2391 SET(ROOT_surfxml_process);
2392         YY_BREAK
2393 case 21:
2394 /* rule 21 can match eol */
2395 YY_RULE_SETUP
2396 FAIL("Bad declaration %s.",surf_parse_text);
2397         YY_BREAK
2398 case 22:
2399 YY_RULE_SETUP
2400 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
2401         YY_BREAK
2402 case YY_STATE_EOF(PROLOG):
2403 case YY_STATE_EOF(DOCTYPE):
2404 FAIL("EOF in prolog.");
2405         YY_BREAK
2406
2407 /* RULES DERIVED FROM DTD. */
2408 /* <!-- Small DTD for SURF based tools. -->  */
2409 case 23:
2410 /* rule 23 can match eol */
2411 YY_RULE_SETUP
2412 {
2413   A_surfxml_platform_description_version = "0.0";
2414   ENTER(AL_surfxml_platform_description);
2415   }
2416         YY_BREAK
2417
2418 case 24:
2419 /* rule 24 can match eol */
2420 YY_RULE_SETUP
2421 ENTER(VALUE1); BUFFERSET(A_surfxml_platform_description_version);
2422         YY_BREAK
2423 case 25:
2424 /* rule 25 can match eol */
2425 YY_RULE_SETUP
2426 ENTER(VALUE2); BUFFERSET(A_surfxml_platform_description_version);
2427         YY_BREAK
2428 case 26:
2429 YY_RULE_SETUP
2430 {
2431   LEAVE; STag_surfxml_platform_description();surfxml_pcdata = NULL; ENTER(S_surfxml_platform_description);
2432  }
2433         YY_BREAK
2434 case 27:
2435 YY_RULE_SETUP
2436 {
2437   LEAVE; STag_surfxml_platform_description(); surfxml_pcdata = NULL; ETag_surfxml_platform_description();
2438   switch (YY_START) {
2439    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2440   }
2441  }
2442         YY_BREAK
2443 case 28:
2444 YY_RULE_SETUP
2445 FAIL("Unexpected character `%c' in attribute list of platform_description element.", surf_parse_text[0]);
2446         YY_BREAK
2447 case 29:
2448 YY_RULE_SETUP
2449 FAIL("Bad attribute `%s' in `platform_description' element start tag.",surf_parse_text);
2450         YY_BREAK
2451 case YY_STATE_EOF(AL_surfxml_platform_description):
2452 FAIL("EOF in attribute list of `platform_description' element.");
2453         YY_BREAK
2454
2455 case 30:
2456 /* rule 30 can match eol */
2457 YY_RULE_SETUP
2458 {
2459   LEAVE;
2460   ETag_surfxml_platform_description();
2461   switch (YY_START) {
2462    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2463   }
2464  }
2465         YY_BREAK
2466 case 31:
2467 /* rule 31 can match eol */
2468 YY_RULE_SETUP
2469 FAIL("Unexpected end-tag `%s': `</platform_description>' expected.",surf_parse_text);
2470         YY_BREAK
2471 case 32:
2472 YY_RULE_SETUP
2473 FAIL("Unexpected character `%c': `</platform_description>' expected.",surf_parse_text[0]);
2474         YY_BREAK
2475 case YY_STATE_EOF(E_surfxml_platform_description):
2476 case YY_STATE_EOF(S_surfxml_platform_description_2):
2477 case YY_STATE_EOF(S_surfxml_platform_description):
2478 FAIL("Premature EOF: `</platform_description>' expected.");
2479         YY_BREAK
2480
2481 case 33:
2482 /* rule 33 can match eol */
2483 YY_RULE_SETUP
2484 {
2485   A_surfxml_include_file = NULL;
2486   ENTER(AL_surfxml_include);
2487   }
2488         YY_BREAK
2489
2490 case 34:
2491 /* rule 34 can match eol */
2492 YY_RULE_SETUP
2493 ENTER(VALUE1); BUFFERSET(A_surfxml_include_file);
2494         YY_BREAK
2495 case 35:
2496 /* rule 35 can match eol */
2497 YY_RULE_SETUP
2498 ENTER(VALUE2); BUFFERSET(A_surfxml_include_file);
2499         YY_BREAK
2500 case 36:
2501 YY_RULE_SETUP
2502 {
2503   if (!A_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2504   LEAVE; STag_surfxml_include();surfxml_pcdata = NULL; ENTER(S_surfxml_include);
2505  }
2506         YY_BREAK
2507 case 37:
2508 YY_RULE_SETUP
2509 {
2510   if (!A_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2511   LEAVE; STag_surfxml_include(); surfxml_pcdata = NULL; ETag_surfxml_include();
2512   switch (YY_START) {
2513    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2514    case ROOT_surfxml_include: SET(EPILOG); break;
2515    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2516   }
2517  }
2518         YY_BREAK
2519 case 38:
2520 YY_RULE_SETUP
2521 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
2522         YY_BREAK
2523 case 39:
2524 YY_RULE_SETUP
2525 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
2526         YY_BREAK
2527 case YY_STATE_EOF(AL_surfxml_include):
2528 FAIL("EOF in attribute list of `include' element.");
2529         YY_BREAK
2530
2531 case 40:
2532 /* rule 40 can match eol */
2533 YY_RULE_SETUP
2534 {
2535   LEAVE;
2536   ETag_surfxml_include();
2537   switch (YY_START) {
2538    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2539    case ROOT_surfxml_include: SET(EPILOG); break;
2540    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2541   }
2542  }
2543         YY_BREAK
2544 case 41:
2545 /* rule 41 can match eol */
2546 YY_RULE_SETUP
2547 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
2548         YY_BREAK
2549 case 42:
2550 YY_RULE_SETUP
2551 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
2552         YY_BREAK
2553 case YY_STATE_EOF(E_surfxml_include):
2554 case YY_STATE_EOF(S_surfxml_include):
2555 case YY_STATE_EOF(S_surfxml_include_2):
2556 FAIL("Premature EOF: `</include>' expected.");
2557         YY_BREAK
2558
2559 case 43:
2560 /* rule 43 can match eol */
2561 YY_RULE_SETUP
2562 {
2563   A_surfxml_cpu_name = NULL;
2564   A_surfxml_cpu_power = NULL;
2565   A_surfxml_cpu_availability = "1.0";
2566   A_surfxml_cpu_availability_file = NULL;
2567   A_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2568   A_surfxml_cpu_state_file = NULL;
2569   A_surfxml_cpu_interference_send = "1.0";
2570   A_surfxml_cpu_interference_recv = "1.0";
2571   A_surfxml_cpu_interference_send_recv = "1.0";
2572   A_surfxml_cpu_max_outgoing_rate = "-1.0";
2573   ENTER(AL_surfxml_cpu);
2574   }
2575         YY_BREAK
2576
2577 case 44:
2578 /* rule 44 can match eol */
2579 YY_RULE_SETUP
2580 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_name);
2581         YY_BREAK
2582 case 45:
2583 /* rule 45 can match eol */
2584 YY_RULE_SETUP
2585 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_name);
2586         YY_BREAK
2587 case 46:
2588 /* rule 46 can match eol */
2589 YY_RULE_SETUP
2590 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_power);
2591         YY_BREAK
2592 case 47:
2593 /* rule 47 can match eol */
2594 YY_RULE_SETUP
2595 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_power);
2596         YY_BREAK
2597 case 48:
2598 /* rule 48 can match eol */
2599 YY_RULE_SETUP
2600 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_availability);
2601         YY_BREAK
2602 case 49:
2603 /* rule 49 can match eol */
2604 YY_RULE_SETUP
2605 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_availability);
2606         YY_BREAK
2607 case 50:
2608 /* rule 50 can match eol */
2609 YY_RULE_SETUP
2610 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_availability_file);
2611         YY_BREAK
2612 case 51:
2613 /* rule 51 can match eol */
2614 YY_RULE_SETUP
2615 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_availability_file);
2616         YY_BREAK
2617 case 52:
2618 /* rule 52 can match eol */
2619 case 53:
2620 /* rule 53 can match eol */
2621 YY_RULE_SETUP
2622 A_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2623         YY_BREAK
2624 case 54:
2625 /* rule 54 can match eol */
2626 case 55:
2627 /* rule 55 can match eol */
2628 YY_RULE_SETUP
2629 A_surfxml_cpu_state = A_surfxml_cpu_state_OFF;
2630         YY_BREAK
2631 case 56:
2632 /* rule 56 can match eol */
2633 YY_RULE_SETUP
2634 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_state_file);
2635         YY_BREAK
2636 case 57:
2637 /* rule 57 can match eol */
2638 YY_RULE_SETUP
2639 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_state_file);
2640         YY_BREAK
2641 case 58:
2642 /* rule 58 can match eol */
2643 YY_RULE_SETUP
2644 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_send);
2645         YY_BREAK
2646 case 59:
2647 /* rule 59 can match eol */
2648 YY_RULE_SETUP
2649 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_send);
2650         YY_BREAK
2651 case 60:
2652 /* rule 60 can match eol */
2653 YY_RULE_SETUP
2654 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_recv);
2655         YY_BREAK
2656 case 61:
2657 /* rule 61 can match eol */
2658 YY_RULE_SETUP
2659 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_recv);
2660         YY_BREAK
2661 case 62:
2662 /* rule 62 can match eol */
2663 YY_RULE_SETUP
2664 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_interference_send_recv);
2665         YY_BREAK
2666 case 63:
2667 /* rule 63 can match eol */
2668 YY_RULE_SETUP
2669 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_interference_send_recv);
2670         YY_BREAK
2671 case 64:
2672 /* rule 64 can match eol */
2673 YY_RULE_SETUP
2674 ENTER(VALUE1); BUFFERSET(A_surfxml_cpu_max_outgoing_rate);
2675         YY_BREAK
2676 case 65:
2677 /* rule 65 can match eol */
2678 YY_RULE_SETUP
2679 ENTER(VALUE2); BUFFERSET(A_surfxml_cpu_max_outgoing_rate);
2680         YY_BREAK
2681 case 66:
2682 YY_RULE_SETUP
2683 {
2684   if (!A_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
2685   if (!A_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
2686   LEAVE; STag_surfxml_cpu();surfxml_pcdata = NULL; ENTER(E_surfxml_cpu);
2687  }
2688         YY_BREAK
2689 case 67:
2690 YY_RULE_SETUP
2691 {
2692   if (!A_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
2693   if (!A_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
2694   LEAVE; STag_surfxml_cpu(); surfxml_pcdata = NULL; ETag_surfxml_cpu();
2695   switch (YY_START) {
2696    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2697    case ROOT_surfxml_cpu: SET(EPILOG); break;
2698    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2699   }
2700  }
2701         YY_BREAK
2702 case 68:
2703 YY_RULE_SETUP
2704 FAIL("Unexpected character `%c' in attribute list of cpu element.", surf_parse_text[0]);
2705         YY_BREAK
2706 case 69:
2707 YY_RULE_SETUP
2708 FAIL("Bad attribute `%s' in `cpu' element start tag.",surf_parse_text);
2709         YY_BREAK
2710 case YY_STATE_EOF(AL_surfxml_cpu):
2711 FAIL("EOF in attribute list of `cpu' element.");
2712         YY_BREAK
2713
2714 case 70:
2715 /* rule 70 can match eol */
2716 YY_RULE_SETUP
2717 {
2718   LEAVE;
2719   ETag_surfxml_cpu();
2720   switch (YY_START) {
2721    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2722    case ROOT_surfxml_cpu: SET(EPILOG); break;
2723    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2724   }
2725  }
2726         YY_BREAK
2727 case 71:
2728 /* rule 71 can match eol */
2729 YY_RULE_SETUP
2730 FAIL("Unexpected end-tag `%s': `</cpu>' expected.",surf_parse_text);
2731         YY_BREAK
2732 case 72:
2733 YY_RULE_SETUP
2734 FAIL("Unexpected character `%c': `</cpu>' expected.",surf_parse_text[0]);
2735         YY_BREAK
2736 case YY_STATE_EOF(E_surfxml_cpu):
2737 FAIL("Premature EOF: `</cpu>' expected.");
2738         YY_BREAK
2739
2740 case 73:
2741 /* rule 73 can match eol */
2742 YY_RULE_SETUP
2743 {
2744   A_surfxml_network_link_name = NULL;
2745   A_surfxml_network_link_bandwidth = NULL;
2746   A_surfxml_network_link_bandwidth_file = NULL;
2747   A_surfxml_network_link_latency = "0.0";
2748   A_surfxml_network_link_latency_file = NULL;
2749   A_surfxml_network_link_state = A_surfxml_network_link_state_ON;
2750   A_surfxml_network_link_state_file = NULL;
2751   A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
2752   ENTER(AL_surfxml_network_link);
2753   }
2754         YY_BREAK
2755
2756 case 74:
2757 /* rule 74 can match eol */
2758 YY_RULE_SETUP
2759 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_name);
2760         YY_BREAK
2761 case 75:
2762 /* rule 75 can match eol */
2763 YY_RULE_SETUP
2764 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_name);
2765         YY_BREAK
2766 case 76:
2767 /* rule 76 can match eol */
2768 YY_RULE_SETUP
2769 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_bandwidth);
2770         YY_BREAK
2771 case 77:
2772 /* rule 77 can match eol */
2773 YY_RULE_SETUP
2774 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_bandwidth);
2775         YY_BREAK
2776 case 78:
2777 /* rule 78 can match eol */
2778 YY_RULE_SETUP
2779 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_bandwidth_file);
2780         YY_BREAK
2781 case 79:
2782 /* rule 79 can match eol */
2783 YY_RULE_SETUP
2784 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_bandwidth_file);
2785         YY_BREAK
2786 case 80:
2787 /* rule 80 can match eol */
2788 YY_RULE_SETUP
2789 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_latency);
2790         YY_BREAK
2791 case 81:
2792 /* rule 81 can match eol */
2793 YY_RULE_SETUP
2794 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_latency);
2795         YY_BREAK
2796 case 82:
2797 /* rule 82 can match eol */
2798 YY_RULE_SETUP
2799 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_latency_file);
2800         YY_BREAK
2801 case 83:
2802 /* rule 83 can match eol */
2803 YY_RULE_SETUP
2804 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_latency_file);
2805         YY_BREAK
2806 case 84:
2807 /* rule 84 can match eol */
2808 case 85:
2809 /* rule 85 can match eol */
2810 YY_RULE_SETUP
2811 A_surfxml_network_link_state = A_surfxml_network_link_state_ON;
2812         YY_BREAK
2813 case 86:
2814 /* rule 86 can match eol */
2815 case 87:
2816 /* rule 87 can match eol */
2817 YY_RULE_SETUP
2818 A_surfxml_network_link_state = A_surfxml_network_link_state_OFF;
2819         YY_BREAK
2820 case 88:
2821 /* rule 88 can match eol */
2822 YY_RULE_SETUP
2823 ENTER(VALUE1); BUFFERSET(A_surfxml_network_link_state_file);
2824         YY_BREAK
2825 case 89:
2826 /* rule 89 can match eol */
2827 YY_RULE_SETUP
2828 ENTER(VALUE2); BUFFERSET(A_surfxml_network_link_state_file);
2829         YY_BREAK
2830 case 90:
2831 /* rule 90 can match eol */
2832 case 91:
2833 /* rule 91 can match eol */
2834 YY_RULE_SETUP
2835 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
2836         YY_BREAK
2837 case 92:
2838 /* rule 92 can match eol */
2839 case 93:
2840 /* rule 93 can match eol */
2841 YY_RULE_SETUP
2842 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_FATPIPE;
2843         YY_BREAK
2844 case 94:
2845 YY_RULE_SETUP
2846 {
2847   if (!A_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
2848   if (!A_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
2849   LEAVE; STag_surfxml_network_link();surfxml_pcdata = NULL; ENTER(E_surfxml_network_link);
2850  }
2851         YY_BREAK
2852 case 95:
2853 YY_RULE_SETUP
2854 {
2855   if (!A_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
2856   if (!A_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
2857   LEAVE; STag_surfxml_network_link(); surfxml_pcdata = NULL; ETag_surfxml_network_link();
2858   switch (YY_START) {
2859    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2860    case ROOT_surfxml_network_link: SET(EPILOG); break;
2861    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2862   }
2863  }
2864         YY_BREAK
2865 case 96:
2866 YY_RULE_SETUP
2867 FAIL("Unexpected character `%c' in attribute list of network_link element.", surf_parse_text[0]);
2868         YY_BREAK
2869 case 97:
2870 YY_RULE_SETUP
2871 FAIL("Bad attribute `%s' in `network_link' element start tag.",surf_parse_text);
2872         YY_BREAK
2873 case YY_STATE_EOF(AL_surfxml_network_link):
2874 FAIL("EOF in attribute list of `network_link' element.");
2875         YY_BREAK
2876
2877 case 98:
2878 /* rule 98 can match eol */
2879 YY_RULE_SETUP
2880 {
2881   LEAVE;
2882   ETag_surfxml_network_link();
2883   switch (YY_START) {
2884    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2885    case ROOT_surfxml_network_link: SET(EPILOG); break;
2886    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2887   }
2888  }
2889         YY_BREAK
2890 case 99:
2891 /* rule 99 can match eol */
2892 YY_RULE_SETUP
2893 FAIL("Unexpected end-tag `%s': `</network_link>' expected.",surf_parse_text);
2894         YY_BREAK
2895 case 100:
2896 YY_RULE_SETUP
2897 FAIL("Unexpected character `%c': `</network_link>' expected.",surf_parse_text[0]);
2898         YY_BREAK
2899 case YY_STATE_EOF(E_surfxml_network_link):
2900 FAIL("Premature EOF: `</network_link>' expected.");
2901         YY_BREAK
2902
2903 case 101:
2904 /* rule 101 can match eol */
2905 YY_RULE_SETUP
2906 {
2907   A_surfxml_route_src = NULL;
2908   A_surfxml_route_dst = NULL;
2909   A_surfxml_route_impact_on_src = "0.0";
2910   A_surfxml_route_impact_on_dst = "0.0";
2911   A_surfxml_route_impact_on_src_with_other_recv = "0.0";
2912   A_surfxml_route_impact_on_dst_with_other_send = "0.0";
2913   ENTER(AL_surfxml_route);
2914   }
2915         YY_BREAK
2916
2917 case 102:
2918 /* rule 102 can match eol */
2919 YY_RULE_SETUP
2920 ENTER(VALUE1); BUFFERSET(A_surfxml_route_src);
2921         YY_BREAK
2922 case 103:
2923 /* rule 103 can match eol */
2924 YY_RULE_SETUP
2925 ENTER(VALUE2); BUFFERSET(A_surfxml_route_src);
2926         YY_BREAK
2927 case 104:
2928 /* rule 104 can match eol */
2929 YY_RULE_SETUP
2930 ENTER(VALUE1); BUFFERSET(A_surfxml_route_dst);
2931         YY_BREAK
2932 case 105:
2933 /* rule 105 can match eol */
2934 YY_RULE_SETUP
2935 ENTER(VALUE2); BUFFERSET(A_surfxml_route_dst);
2936         YY_BREAK
2937 case 106:
2938 /* rule 106 can match eol */
2939 YY_RULE_SETUP
2940 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_src);
2941         YY_BREAK
2942 case 107:
2943 /* rule 107 can match eol */
2944 YY_RULE_SETUP
2945 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_src);
2946         YY_BREAK
2947 case 108:
2948 /* rule 108 can match eol */
2949 YY_RULE_SETUP
2950 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_dst);
2951         YY_BREAK
2952 case 109:
2953 /* rule 109 can match eol */
2954 YY_RULE_SETUP
2955 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_dst);
2956         YY_BREAK
2957 case 110:
2958 /* rule 110 can match eol */
2959 YY_RULE_SETUP
2960 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_src_with_other_recv);
2961         YY_BREAK
2962 case 111:
2963 /* rule 111 can match eol */
2964 YY_RULE_SETUP
2965 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_src_with_other_recv);
2966         YY_BREAK
2967 case 112:
2968 /* rule 112 can match eol */
2969 YY_RULE_SETUP
2970 ENTER(VALUE1); BUFFERSET(A_surfxml_route_impact_on_dst_with_other_send);
2971         YY_BREAK
2972 case 113:
2973 /* rule 113 can match eol */
2974 YY_RULE_SETUP
2975 ENTER(VALUE2); BUFFERSET(A_surfxml_route_impact_on_dst_with_other_send);
2976         YY_BREAK
2977 case 114:
2978 YY_RULE_SETUP
2979 {
2980   if (!A_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
2981   if (!A_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
2982   LEAVE; STag_surfxml_route();surfxml_pcdata = NULL; ENTER(S_surfxml_route);
2983  }
2984         YY_BREAK
2985 case 115:
2986 YY_RULE_SETUP
2987 {
2988   if (!A_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
2989   if (!A_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
2990   LEAVE; STag_surfxml_route(); surfxml_pcdata = NULL; ETag_surfxml_route();
2991   switch (YY_START) {
2992    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
2993    case ROOT_surfxml_route: SET(EPILOG); break;
2994    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
2995   }
2996  }
2997         YY_BREAK
2998 case 116:
2999 YY_RULE_SETUP
3000 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
3001         YY_BREAK
3002 case 117:
3003 YY_RULE_SETUP
3004 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
3005         YY_BREAK
3006 case YY_STATE_EOF(AL_surfxml_route):
3007 FAIL("EOF in attribute list of `route' element.");
3008         YY_BREAK
3009
3010 case 118:
3011 /* rule 118 can match eol */
3012 YY_RULE_SETUP
3013 {
3014   LEAVE;
3015   ETag_surfxml_route();
3016   switch (YY_START) {
3017    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3018    case ROOT_surfxml_route: SET(EPILOG); break;
3019    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3020   }
3021  }
3022         YY_BREAK
3023 case 119:
3024 /* rule 119 can match eol */
3025 YY_RULE_SETUP
3026 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
3027         YY_BREAK
3028 case 120:
3029 YY_RULE_SETUP
3030 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
3031         YY_BREAK
3032 case YY_STATE_EOF(S_surfxml_route):
3033 case YY_STATE_EOF(S_surfxml_route_2):
3034 case YY_STATE_EOF(E_surfxml_route):
3035 FAIL("Premature EOF: `</route>' expected.");
3036         YY_BREAK
3037
3038 case 121:
3039 /* rule 121 can match eol */
3040 YY_RULE_SETUP
3041 {
3042   A_surfxml_route_element_name = NULL;
3043   ENTER(AL_surfxml_route_element);
3044   }
3045         YY_BREAK
3046
3047 case 122:
3048 /* rule 122 can match eol */
3049 YY_RULE_SETUP
3050 ENTER(VALUE1); BUFFERSET(A_surfxml_route_element_name);
3051         YY_BREAK
3052 case 123:
3053 /* rule 123 can match eol */
3054 YY_RULE_SETUP
3055 ENTER(VALUE2); BUFFERSET(A_surfxml_route_element_name);
3056         YY_BREAK
3057 case 124:
3058 YY_RULE_SETUP
3059 {
3060   if (!A_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3061   LEAVE; STag_surfxml_route_element();surfxml_pcdata = NULL; ENTER(E_surfxml_route_element);
3062  }
3063         YY_BREAK
3064 case 125:
3065 YY_RULE_SETUP
3066 {
3067   if (!A_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3068   LEAVE; STag_surfxml_route_element(); surfxml_pcdata = NULL; ETag_surfxml_route_element();
3069   switch (YY_START) {
3070    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3071    case ROOT_surfxml_route_element: SET(EPILOG); break;
3072   }
3073  }
3074         YY_BREAK
3075 case 126:
3076 YY_RULE_SETUP
3077 FAIL("Unexpected character `%c' in attribute list of route_element element.", surf_parse_text[0]);
3078         YY_BREAK
3079 case 127:
3080 YY_RULE_SETUP
3081 FAIL("Bad attribute `%s' in `route_element' element start tag.",surf_parse_text);
3082         YY_BREAK
3083 case YY_STATE_EOF(AL_surfxml_route_element):
3084 FAIL("EOF in attribute list of `route_element' element.");
3085         YY_BREAK
3086
3087 case 128:
3088 /* rule 128 can match eol */
3089 YY_RULE_SETUP
3090 {
3091   LEAVE;
3092   ETag_surfxml_route_element();
3093   switch (YY_START) {
3094    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3095    case ROOT_surfxml_route_element: SET(EPILOG); break;
3096   }
3097  }
3098         YY_BREAK
3099 case 129:
3100 /* rule 129 can match eol */
3101 YY_RULE_SETUP
3102 FAIL("Unexpected end-tag `%s': `</route_element>' expected.",surf_parse_text);
3103         YY_BREAK
3104 case 130:
3105 YY_RULE_SETUP
3106 FAIL("Unexpected character `%c': `</route_element>' expected.",surf_parse_text[0]);
3107         YY_BREAK
3108 case YY_STATE_EOF(E_surfxml_route_element):
3109 FAIL("Premature EOF: `</route_element>' expected.");
3110         YY_BREAK
3111
3112 case 131:
3113 /* rule 131 can match eol */
3114 YY_RULE_SETUP
3115 {
3116   A_surfxml_process_host = NULL;
3117   A_surfxml_process_function = NULL;
3118   A_surfxml_process_start_time = "-1.0";
3119   A_surfxml_process_kill_time = "-1.0";
3120   ENTER(AL_surfxml_process);
3121   }
3122         YY_BREAK
3123
3124 case 132:
3125 /* rule 132 can match eol */
3126 YY_RULE_SETUP
3127 ENTER(VALUE1); BUFFERSET(A_surfxml_process_host);
3128         YY_BREAK
3129 case 133:
3130 /* rule 133 can match eol */
3131 YY_RULE_SETUP
3132 ENTER(VALUE2); BUFFERSET(A_surfxml_process_host);
3133         YY_BREAK
3134 case 134:
3135 /* rule 134 can match eol */
3136 YY_RULE_SETUP
3137 ENTER(VALUE1); BUFFERSET(A_surfxml_process_function);
3138         YY_BREAK
3139 case 135:
3140 /* rule 135 can match eol */
3141 YY_RULE_SETUP
3142 ENTER(VALUE2); BUFFERSET(A_surfxml_process_function);
3143         YY_BREAK
3144 case 136:
3145 /* rule 136 can match eol */
3146 YY_RULE_SETUP
3147 ENTER(VALUE1); BUFFERSET(A_surfxml_process_start_time);
3148         YY_BREAK
3149 case 137:
3150 /* rule 137 can match eol */
3151 YY_RULE_SETUP
3152 ENTER(VALUE2); BUFFERSET(A_surfxml_process_start_time);
3153         YY_BREAK
3154 case 138:
3155 /* rule 138 can match eol */
3156 YY_RULE_SETUP
3157 ENTER(VALUE1); BUFFERSET(A_surfxml_process_kill_time);
3158         YY_BREAK
3159 case 139:
3160 /* rule 139 can match eol */
3161 YY_RULE_SETUP
3162 ENTER(VALUE2); BUFFERSET(A_surfxml_process_kill_time);
3163         YY_BREAK
3164 case 140:
3165 YY_RULE_SETUP
3166 {
3167   if (!A_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3168   if (!A_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3169   LEAVE; STag_surfxml_process();surfxml_pcdata = NULL; ENTER(S_surfxml_process);
3170  }
3171         YY_BREAK
3172 case 141:
3173 YY_RULE_SETUP
3174 {
3175   if (!A_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3176   if (!A_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3177   LEAVE; STag_surfxml_process(); surfxml_pcdata = NULL; ETag_surfxml_process();
3178   switch (YY_START) {
3179    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3180    case ROOT_surfxml_process: SET(EPILOG); break;
3181    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3182   }
3183  }
3184         YY_BREAK
3185 case 142:
3186 YY_RULE_SETUP
3187 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
3188         YY_BREAK
3189 case 143:
3190 YY_RULE_SETUP
3191 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
3192         YY_BREAK
3193 case YY_STATE_EOF(AL_surfxml_process):
3194 FAIL("EOF in attribute list of `process' element.");
3195         YY_BREAK
3196
3197 case 144:
3198 /* rule 144 can match eol */
3199 YY_RULE_SETUP
3200 {
3201   LEAVE;
3202   ETag_surfxml_process();
3203   switch (YY_START) {
3204    case S_surfxml_platform_description_2: case S_surfxml_platform_description_1: case S_surfxml_platform_description: SET(S_surfxml_platform_description_2); break;
3205    case ROOT_surfxml_process: SET(EPILOG); break;
3206    case S_surfxml_include: case S_surfxml_include_2: case S_surfxml_include_1: SET(S_surfxml_include_2); break;
3207   }
3208  }
3209         YY_BREAK
3210 case 145:
3211 /* rule 145 can match eol */
3212 YY_RULE_SETUP
3213 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
3214         YY_BREAK
3215 case 146:
3216 YY_RULE_SETUP
3217 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
3218         YY_BREAK
3219 case YY_STATE_EOF(S_surfxml_process):
3220 case YY_STATE_EOF(E_surfxml_process):
3221 case YY_STATE_EOF(S_surfxml_process_2):
3222 FAIL("Premature EOF: `</process>' expected.");
3223         YY_BREAK
3224
3225 case 147:
3226 /* rule 147 can match eol */
3227 YY_RULE_SETUP
3228 {
3229   A_surfxml_argument_value = NULL;
3230   ENTER(AL_surfxml_argument);
3231   }
3232         YY_BREAK
3233
3234 case 148:
3235 /* rule 148 can match eol */
3236 YY_RULE_SETUP
3237 ENTER(VALUE1); BUFFERSET(A_surfxml_argument_value);
3238         YY_BREAK
3239 case 149:
3240 /* rule 149 can match eol */
3241 YY_RULE_SETUP
3242 ENTER(VALUE2); BUFFERSET(A_surfxml_argument_value);
3243         YY_BREAK
3244 case 150:
3245 YY_RULE_SETUP
3246 {
3247   if (!A_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3248   LEAVE; STag_surfxml_argument();surfxml_pcdata = NULL; ENTER(E_surfxml_argument);
3249  }
3250         YY_BREAK
3251 case 151:
3252 YY_RULE_SETUP
3253 {
3254   if (!A_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3255   LEAVE; STag_surfxml_argument(); surfxml_pcdata = NULL; ETag_surfxml_argument();
3256   switch (YY_START) {
3257    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3258    case ROOT_surfxml_argument: SET(EPILOG); break;
3259   }
3260  }
3261         YY_BREAK
3262 case 152:
3263 YY_RULE_SETUP
3264 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
3265         YY_BREAK
3266 case 153:
3267 YY_RULE_SETUP
3268 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
3269         YY_BREAK
3270 case YY_STATE_EOF(AL_surfxml_argument):
3271 FAIL("EOF in attribute list of `argument' element.");
3272         YY_BREAK
3273
3274 case 154:
3275 /* rule 154 can match eol */
3276 YY_RULE_SETUP
3277 {
3278   LEAVE;
3279   ETag_surfxml_argument();
3280   switch (YY_START) {
3281    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3282    case ROOT_surfxml_argument: SET(EPILOG); break;
3283   }
3284  }
3285         YY_BREAK
3286 case 155:
3287 /* rule 155 can match eol */
3288 YY_RULE_SETUP
3289 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
3290         YY_BREAK
3291 case 156:
3292 YY_RULE_SETUP
3293 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
3294         YY_BREAK
3295 case YY_STATE_EOF(E_surfxml_argument):
3296 FAIL("Premature EOF: `</argument>' expected.");
3297         YY_BREAK
3298
3299 /* EPILOG: after the root element. */
3300
3301 case 157:
3302 YY_RULE_SETUP
3303 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
3304         YY_BREAK
3305 case YY_STATE_EOF(EPILOG):
3306 SUCCEED;
3307         YY_BREAK
3308
3309 /* CHARACTER DATA. */
3310
3311 /* Non-defined standard entities... */
3312 case 158:
3313 YY_RULE_SETUP
3314 BUFFERPUTC('&');
3315         YY_BREAK
3316 case 159:
3317 YY_RULE_SETUP
3318 BUFFERPUTC('<');
3319         YY_BREAK
3320 case 160:
3321 YY_RULE_SETUP
3322 BUFFERPUTC('>');
3323         YY_BREAK
3324 case 161:
3325 YY_RULE_SETUP
3326 BUFFERPUTC('\'');
3327         YY_BREAK
3328 case 162:
3329 YY_RULE_SETUP
3330 BUFFERPUTC('"');
3331         YY_BREAK
3332 /* Character entities. */
3333 case 163:
3334 YY_RULE_SETUP
3335 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
3336         YY_BREAK
3337 case 164:
3338 YY_RULE_SETUP
3339 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
3340         YY_BREAK
3341
3342 case 165:
3343 /* rule 165 can match eol */
3344 case 166:
3345 /* rule 166 can match eol */
3346 case 167:
3347 /* rule 167 can match eol */
3348 case 168:
3349 /* rule 168 can match eol */
3350 YY_RULE_SETUP
3351 BUFFERPUTC('\n');
3352         YY_BREAK
3353
3354 case 169:
3355 YY_RULE_SETUP
3356 ENTER(CDATA);
3357         YY_BREAK
3358 case 170:
3359 YY_RULE_SETUP
3360 FAIL("Unexpected `]""]>' in character data.");
3361         YY_BREAK
3362
3363 case 171:
3364 YY_RULE_SETUP
3365 BUFFERDONE; LEAVE;
3366         YY_BREAK
3367 case YY_STATE_EOF(VALUE1):
3368 FAIL("EOF in literal (\"'\" expected).");
3369         YY_BREAK
3370
3371 case 172:
3372 YY_RULE_SETUP
3373 BUFFERDONE; LEAVE;
3374         YY_BREAK
3375 case YY_STATE_EOF(VALUE2):
3376 FAIL("EOF in literal (`\"' expected).");
3377         YY_BREAK
3378
3379 case 173:
3380 /* rule 173 can match eol */
3381 YY_RULE_SETUP
3382 BUFFERPUTC(surf_parse_text[0]);
3383         YY_BREAK
3384 case 174:
3385 YY_RULE_SETUP
3386 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
3387         YY_BREAK
3388
3389 case 175:
3390 YY_RULE_SETUP
3391 LEAVE;
3392         YY_BREAK
3393 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
3394 case 176:
3395 YY_RULE_SETUP
3396 BUFFERPUTC(surf_parse_text[0]);
3397         YY_BREAK
3398 case YY_STATE_EOF(CDATA):
3399 FAIL("EOF in CDATA section.");
3400         YY_BREAK
3401
3402 /* Impossible rules to avoid warnings from flex(1). */
3403 /* Ideally, this should be replaced by code in flexml.pl that
3404     generates just the states not covered by other rules. */
3405
3406 case 177:
3407 /* rule 177 can match eol */
3408 YY_RULE_SETUP
3409 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
3410         YY_BREAK
3411
3412 case 178:
3413 YY_RULE_SETUP
3414 ECHO;
3415         YY_BREAK
3416 case YY_STATE_EOF(INITIAL):
3417 case YY_STATE_EOF(ROOT_surfxml_platform_description):
3418 case YY_STATE_EOF(S_surfxml_platform_description_1):
3419 case YY_STATE_EOF(ROOT_surfxml_include):
3420 case YY_STATE_EOF(S_surfxml_include_1):
3421 case YY_STATE_EOF(ROOT_surfxml_cpu):
3422 case YY_STATE_EOF(ROOT_surfxml_network_link):
3423 case YY_STATE_EOF(ROOT_surfxml_route):
3424 case YY_STATE_EOF(S_surfxml_route_1):
3425 case YY_STATE_EOF(ROOT_surfxml_route_element):
3426 case YY_STATE_EOF(ROOT_surfxml_process):
3427 case YY_STATE_EOF(S_surfxml_process_1):
3428 case YY_STATE_EOF(ROOT_surfxml_argument):
3429 case YY_STATE_EOF(IMPOSSIBLE):
3430         yyterminate();
3431
3432         case YY_END_OF_BUFFER:
3433                 {
3434                 /* Amount of text matched not including the EOB char. */
3435                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3436
3437                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3438                 *yy_cp = (yy_hold_char);
3439                 YY_RESTORE_YY_MORE_OFFSET
3440
3441                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3442                         {
3443                         /* We're scanning a new file or input source.  It's
3444                          * possible that this happened because the user
3445                          * just pointed surf_parse_in at a new source and called
3446                          * surf_parse_lex().  If so, then we have to assure
3447                          * consistency between YY_CURRENT_BUFFER and our
3448                          * globals.  Here is the right place to do so, because
3449                          * this is the first action (other than possibly a
3450                          * back-up) that will match for the new input source.
3451                          */
3452                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3453                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
3454                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3455                         }
3456
3457                 /* Note that here we test for yy_c_buf_p "<=" to the position
3458                  * of the first EOB in the buffer, since yy_c_buf_p will
3459                  * already have been incremented past the NUL character
3460                  * (since all states make transitions on EOB to the
3461                  * end-of-buffer state).  Contrast this with the test
3462                  * in input().
3463                  */
3464                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3465                         { /* This was really a NUL. */
3466                         yy_state_type yy_next_state;
3467
3468                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3469
3470                         yy_current_state = yy_get_previous_state(  );
3471
3472                         /* Okay, we're now positioned to make the NUL
3473                          * transition.  We couldn't have
3474                          * yy_get_previous_state() go ahead and do it
3475                          * for us because it doesn't know how to deal
3476                          * with the possibility of jamming (and we don't
3477                          * want to build jamming into it because then it
3478                          * will run more slowly).
3479                          */
3480
3481                         yy_next_state = yy_try_NUL_trans( yy_current_state );
3482
3483                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3484
3485                         if ( yy_next_state )
3486                                 {
3487                                 /* Consume the NUL. */
3488                                 yy_cp = ++(yy_c_buf_p);
3489                                 yy_current_state = yy_next_state;
3490                                 goto yy_match;
3491                                 }
3492
3493                         else
3494                                 {
3495                                 yy_cp = (yy_c_buf_p);
3496                                 goto yy_find_action;
3497                                 }
3498                         }
3499
3500                 else switch ( yy_get_next_buffer(  ) )
3501                         {
3502                         case EOB_ACT_END_OF_FILE:
3503                                 {
3504                                 (yy_did_buffer_switch_on_eof) = 0;
3505
3506                                 if ( surf_parse_wrap( ) )
3507                                         {
3508                                         /* Note: because we've taken care in
3509                                          * yy_get_next_buffer() to have set up
3510                                          * surf_parse_text, we can now set up
3511                                          * yy_c_buf_p so that if some total
3512                                          * hoser (like flex itself) wants to
3513                                          * call the scanner after we return the
3514                                          * YY_NULL, it'll still work - another
3515                                          * YY_NULL will get returned.
3516                                          */
3517                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3518
3519                                         yy_act = YY_STATE_EOF(YY_START);
3520                                         goto do_action;
3521                                         }
3522
3523                                 else
3524                                         {
3525                                         if ( ! (yy_did_buffer_switch_on_eof) )
3526                                                 YY_NEW_FILE;
3527                                         }
3528                                 break;
3529                                 }
3530
3531                         case EOB_ACT_CONTINUE_SCAN:
3532                                 (yy_c_buf_p) =
3533                                         (yytext_ptr) + yy_amount_of_matched_text;
3534
3535                                 yy_current_state = yy_get_previous_state(  );
3536
3537                                 yy_cp = (yy_c_buf_p);
3538                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3539                                 goto yy_match;
3540
3541                         case EOB_ACT_LAST_MATCH:
3542                                 (yy_c_buf_p) =
3543                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3544
3545                                 yy_current_state = yy_get_previous_state(  );
3546
3547                                 yy_cp = (yy_c_buf_p);
3548                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3549                                 goto yy_find_action;
3550                         }
3551                 break;
3552                 }
3553
3554         default:
3555                 YY_FATAL_ERROR(
3556                         "fatal flex scanner internal error--no action found" );
3557         } /* end of action switch */
3558                 } /* end of scanning one token */
3559 } /* end of surf_parse_lex */
3560
3561 /* yy_get_next_buffer - try to read in a new buffer
3562  *
3563  * Returns a code representing an action:
3564  *      EOB_ACT_LAST_MATCH -
3565  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3566  *      EOB_ACT_END_OF_FILE - end of file
3567  */
3568 static int yy_get_next_buffer (void)
3569 {
3570         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3571         register char *source = (yytext_ptr);
3572         register int number_to_move, i;
3573         int ret_val;
3574
3575         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3576                 YY_FATAL_ERROR(
3577                 "fatal flex scanner internal error--end of buffer missed" );
3578
3579         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3580                 { /* Don't try to fill the buffer, so this is an EOF. */
3581                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3582                         {
3583                         /* We matched a single character, the EOB, so
3584                          * treat this as a final EOF.
3585                          */
3586                         return EOB_ACT_END_OF_FILE;
3587                         }
3588
3589                 else
3590                         {
3591                         /* We matched some text prior to the EOB, first
3592                          * process it.
3593                          */
3594                         return EOB_ACT_LAST_MATCH;
3595                         }
3596                 }
3597
3598         /* Try to read more data. */
3599
3600         /* First move last chars to start of buffer. */
3601         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3602
3603         for ( i = 0; i < number_to_move; ++i )
3604                 *(dest++) = *(source++);
3605
3606         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3607                 /* don't do the read, it's not guaranteed to return an EOF,
3608                  * just force an EOF
3609                  */
3610                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3611
3612         else
3613                 {
3614                         int num_to_read =
3615                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3616
3617                 while ( num_to_read <= 0 )
3618                         { /* Not enough room in the buffer - grow it. */
3619
3620                         /* just a shorter name for the current buffer */
3621                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
3622
3623                         int yy_c_buf_p_offset =
3624                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
3625
3626                         if ( b->yy_is_our_buffer )
3627                                 {
3628                                 int new_size = b->yy_buf_size * 2;
3629
3630                                 if ( new_size <= 0 )
3631                                         b->yy_buf_size += b->yy_buf_size / 8;
3632                                 else
3633                                         b->yy_buf_size *= 2;
3634
3635                                 b->yy_ch_buf = (char *)
3636                                         /* Include room in for 2 EOB chars. */
3637                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
3638                                 }
3639                         else
3640                                 /* Can't grow it, we don't own it. */
3641                                 b->yy_ch_buf = 0;
3642
3643                         if ( ! b->yy_ch_buf )
3644                                 YY_FATAL_ERROR(
3645                                 "fatal error - scanner input buffer overflow" );
3646
3647                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
3648
3649                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3650                                                 number_to_move - 1;
3651
3652                         }
3653
3654                 if ( num_to_read > YY_READ_BUF_SIZE )
3655                         num_to_read = YY_READ_BUF_SIZE;
3656
3657                 /* Read in more data. */
3658                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3659                         (yy_n_chars), num_to_read );
3660
3661                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3662                 }
3663
3664         if ( (yy_n_chars) == 0 )
3665                 {
3666                 if ( number_to_move == YY_MORE_ADJ )
3667                         {
3668                         ret_val = EOB_ACT_END_OF_FILE;
3669                         surf_parse_restart(surf_parse_in  );
3670                         }
3671
3672                 else
3673                         {
3674                         ret_val = EOB_ACT_LAST_MATCH;
3675                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3676                                 YY_BUFFER_EOF_PENDING;
3677                         }
3678                 }
3679
3680         else
3681                 ret_val = EOB_ACT_CONTINUE_SCAN;
3682
3683         (yy_n_chars) += number_to_move;
3684         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3685         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3686
3687         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3688
3689         return ret_val;
3690 }
3691
3692 /* yy_get_previous_state - get the state just before the EOB char was reached */
3693
3694     static yy_state_type yy_get_previous_state (void)
3695 {
3696         register yy_state_type yy_current_state;
3697         register char *yy_cp;
3698     
3699         yy_current_state = (yy_start);
3700
3701         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3702                 {
3703                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3704                 if ( yy_accept[yy_current_state] )
3705                         {
3706                         (yy_last_accepting_state) = yy_current_state;
3707                         (yy_last_accepting_cpos) = yy_cp;
3708                         }
3709                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3710                         {
3711                         yy_current_state = (int) yy_def[yy_current_state];
3712                         if ( yy_current_state >= 1345 )
3713                                 yy_c = yy_meta[(unsigned int) yy_c];
3714                         }
3715                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3716                 }
3717
3718         return yy_current_state;
3719 }
3720
3721 /* yy_try_NUL_trans - try to make a transition on the NUL character
3722  *
3723  * synopsis
3724  *      next_state = yy_try_NUL_trans( current_state );
3725  */
3726     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
3727 {
3728         register int yy_is_jam;
3729         register char *yy_cp = (yy_c_buf_p);
3730
3731         register YY_CHAR yy_c = 1;
3732         if ( yy_accept[yy_current_state] )
3733                 {
3734                 (yy_last_accepting_state) = yy_current_state;
3735                 (yy_last_accepting_cpos) = yy_cp;
3736                 }
3737         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3738                 {
3739                 yy_current_state = (int) yy_def[yy_current_state];
3740                 if ( yy_current_state >= 1345 )
3741                         yy_c = yy_meta[(unsigned int) yy_c];
3742                 }
3743         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3744         yy_is_jam = (yy_current_state == 1344);
3745
3746         return yy_is_jam ? 0 : yy_current_state;
3747 }
3748
3749 #ifndef YY_NO_INPUT
3750 #ifdef __cplusplus
3751     static int yyinput (void)
3752 #else
3753     static int input  (void)
3754 #endif
3755
3756 {
3757         int c;
3758     
3759         *(yy_c_buf_p) = (yy_hold_char);
3760
3761         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3762                 {
3763                 /* yy_c_buf_p now points to the character we want to return.
3764                  * If this occurs *before* the EOB characters, then it's a
3765                  * valid NUL; if not, then we've hit the end of the buffer.
3766                  */
3767                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3768                         /* This was really a NUL. */
3769                         *(yy_c_buf_p) = '\0';
3770
3771                 else
3772                         { /* need more input */
3773                         int offset = (yy_c_buf_p) - (yytext_ptr);
3774                         ++(yy_c_buf_p);
3775
3776                         switch ( yy_get_next_buffer(  ) )
3777                                 {
3778                                 case EOB_ACT_LAST_MATCH:
3779                                         /* This happens because yy_g_n_b()
3780                                          * sees that we've accumulated a
3781                                          * token and flags that we need to
3782                                          * try matching the token before
3783                                          * proceeding.  But for input(),
3784                                          * there's no matching to consider.
3785                                          * So convert the EOB_ACT_LAST_MATCH
3786                                          * to EOB_ACT_END_OF_FILE.
3787                                          */
3788
3789                                         /* Reset buffer status. */
3790                                         surf_parse_restart(surf_parse_in );
3791
3792                                         /*FALLTHROUGH*/
3793
3794                                 case EOB_ACT_END_OF_FILE:
3795                                         {
3796                                         if ( surf_parse_wrap( ) )
3797                                                 return EOF;
3798
3799                                         if ( ! (yy_did_buffer_switch_on_eof) )
3800                                                 YY_NEW_FILE;
3801 #ifdef __cplusplus
3802                                         return yyinput();
3803 #else
3804                                         return input();
3805 #endif
3806                                         }
3807
3808                                 case EOB_ACT_CONTINUE_SCAN:
3809                                         (yy_c_buf_p) = (yytext_ptr) + offset;
3810                                         break;
3811                                 }
3812                         }
3813                 }
3814
3815         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
3816         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
3817         (yy_hold_char) = *++(yy_c_buf_p);
3818
3819         if ( c == '\n' )
3820                    
3821     surf_parse_lineno++;
3822 ;
3823
3824         return c;
3825 }
3826 #endif  /* ifndef YY_NO_INPUT */
3827
3828 /** Immediately switch to a different input stream.
3829  * @param input_file A readable stream.
3830  * 
3831  * @note This function does not reset the start condition to @c INITIAL .
3832  */
3833     void surf_parse_restart  (FILE * input_file )
3834 {
3835     
3836         if ( ! YY_CURRENT_BUFFER ){
3837         surf_parse_ensure_buffer_stack ();
3838                 YY_CURRENT_BUFFER_LVALUE =
3839             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
3840         }
3841
3842         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
3843         surf_parse__load_buffer_state( );
3844 }
3845
3846 /** Switch to a different input buffer.
3847  * @param new_buffer The new input buffer.
3848  * 
3849  */
3850     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
3851 {
3852     
3853         /* TODO. We should be able to replace this entire function body
3854          * with
3855          *              surf_parse_pop_buffer_state();
3856          *              surf_parse_push_buffer_state(new_buffer);
3857      */
3858         surf_parse_ensure_buffer_stack ();
3859         if ( YY_CURRENT_BUFFER == new_buffer )
3860                 return;
3861
3862         if ( YY_CURRENT_BUFFER )
3863                 {
3864                 /* Flush out information for old buffer. */
3865                 *(yy_c_buf_p) = (yy_hold_char);
3866                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3867                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3868                 }
3869
3870         YY_CURRENT_BUFFER_LVALUE = new_buffer;
3871         surf_parse__load_buffer_state( );
3872
3873         /* We don't actually know whether we did this switch during
3874          * EOF (surf_parse_wrap()) processing, but the only time this flag
3875          * is looked at is after surf_parse_wrap() is called, so it's safe
3876          * to go ahead and always set it.
3877          */
3878         (yy_did_buffer_switch_on_eof) = 1;
3879 }
3880
3881 static void surf_parse__load_buffer_state  (void)
3882 {
3883         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3884         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3885         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3886         (yy_hold_char) = *(yy_c_buf_p);
3887 }
3888
3889 /** Allocate and initialize an input buffer state.
3890  * @param file A readable stream.
3891  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3892  * 
3893  * @return the allocated buffer state.
3894  */
3895     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
3896 {
3897         YY_BUFFER_STATE b;
3898     
3899         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
3900         if ( ! b )
3901                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
3902
3903         b->yy_buf_size = size;
3904
3905         /* yy_ch_buf has to be 2 characters longer than the size given because
3906          * we need to put in 2 end-of-buffer characters.
3907          */
3908         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
3909         if ( ! b->yy_ch_buf )
3910                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
3911
3912         b->yy_is_our_buffer = 1;
3913
3914         surf_parse__init_buffer(b,file );
3915
3916         return b;
3917 }
3918
3919 /** Destroy the buffer.
3920  * @param b a buffer created with surf_parse__create_buffer()
3921  * 
3922  */
3923     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
3924 {
3925     
3926         if ( ! b )
3927                 return;
3928
3929         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3930                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3931
3932         if ( b->yy_is_our_buffer )
3933                 surf_parse_free((void *) b->yy_ch_buf  );
3934
3935         surf_parse_free((void *) b  );
3936 }
3937
3938 #ifndef __cplusplus
3939 extern int isatty (int );
3940 #endif /* __cplusplus */
3941     
3942 /* Initializes or reinitializes a buffer.
3943  * This function is sometimes called more than once on the same buffer,
3944  * such as during a surf_parse_restart() or at EOF.
3945  */
3946     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
3947
3948 {
3949         int oerrno = errno;
3950     
3951         surf_parse__flush_buffer(b );
3952
3953         b->yy_input_file = file;
3954         b->yy_fill_buffer = 1;
3955
3956     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
3957      * called from surf_parse_restart() or through yy_get_next_buffer.
3958      * In that case, we don't want to reset the lineno or column.
3959      */
3960     if (b != YY_CURRENT_BUFFER){
3961         b->yy_bs_lineno = 1;
3962         b->yy_bs_column = 0;
3963     }
3964
3965         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3966     
3967         errno = oerrno;
3968 }
3969
3970 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3971  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3972  * 
3973  */
3974     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
3975 {
3976         if ( ! b )
3977                 return;
3978
3979         b->yy_n_chars = 0;
3980
3981         /* We always need two end-of-buffer characters.  The first causes
3982          * a transition to the end-of-buffer state.  The second causes
3983          * a jam in that state.
3984          */
3985         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3986         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3987
3988         b->yy_buf_pos = &b->yy_ch_buf[0];
3989
3990         b->yy_at_bol = 1;
3991         b->yy_buffer_status = YY_BUFFER_NEW;
3992
3993         if ( b == YY_CURRENT_BUFFER )
3994                 surf_parse__load_buffer_state( );
3995 }
3996
3997 /** Pushes the new state onto the stack. The new state becomes
3998  *  the current state. This function will allocate the stack
3999  *  if necessary.
4000  *  @param new_buffer The new state.
4001  *  
4002  */
4003 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
4004 {
4005         if (new_buffer == NULL)
4006                 return;
4007
4008         surf_parse_ensure_buffer_stack();
4009
4010         /* This block is copied from surf_parse__switch_to_buffer. */
4011         if ( YY_CURRENT_BUFFER )
4012                 {
4013                 /* Flush out information for old buffer. */
4014                 *(yy_c_buf_p) = (yy_hold_char);
4015                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4016                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4017                 }
4018
4019         /* Only push if top exists. Otherwise, replace top. */
4020         if (YY_CURRENT_BUFFER)
4021                 (yy_buffer_stack_top)++;
4022         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4023
4024         /* copied from surf_parse__switch_to_buffer. */
4025         surf_parse__load_buffer_state( );
4026         (yy_did_buffer_switch_on_eof) = 1;
4027 }
4028
4029 /** Removes and deletes the top of the stack, if present.
4030  *  The next element becomes the new top.
4031  *  
4032  */
4033 void surf_parse_pop_buffer_state (void)
4034 {
4035         if (!YY_CURRENT_BUFFER)
4036                 return;
4037
4038         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
4039         YY_CURRENT_BUFFER_LVALUE = NULL;
4040         if ((yy_buffer_stack_top) > 0)
4041                 --(yy_buffer_stack_top);
4042
4043         if (YY_CURRENT_BUFFER) {
4044                 surf_parse__load_buffer_state( );
4045                 (yy_did_buffer_switch_on_eof) = 1;
4046         }
4047 }
4048
4049 /* Allocates the stack if it does not exist.
4050  *  Guarantees space for at least one push.
4051  */
4052 static void surf_parse_ensure_buffer_stack (void)
4053 {
4054         int num_to_alloc;
4055     
4056         if (!(yy_buffer_stack)) {
4057
4058                 /* First allocation is just for 2 elements, since we don't know if this
4059                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4060                  * immediate realloc on the next call.
4061          */
4062                 num_to_alloc = 1;
4063                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
4064                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
4065                                                                 );
4066                 
4067                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4068                                 
4069                 (yy_buffer_stack_max) = num_to_alloc;
4070                 (yy_buffer_stack_top) = 0;
4071                 return;
4072         }
4073
4074         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4075
4076                 /* Increase the buffer to prepare for a possible push. */
4077                 int grow_size = 8 /* arbitrary grow size */;
4078
4079                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4080                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
4081                                                                 ((yy_buffer_stack),
4082                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
4083                                                                 );
4084
4085                 /* zero only the new slots.*/
4086                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4087                 (yy_buffer_stack_max) = num_to_alloc;
4088         }
4089 }
4090
4091 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4092  * @param base the character buffer
4093  * @param size the size in bytes of the character buffer
4094  * 
4095  * @return the newly allocated buffer state object. 
4096  */
4097 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
4098 {
4099         YY_BUFFER_STATE b;
4100     
4101         if ( size < 2 ||
4102              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4103              base[size-1] != YY_END_OF_BUFFER_CHAR )
4104                 /* They forgot to leave room for the EOB's. */
4105                 return 0;
4106
4107         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4108         if ( ! b )
4109                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
4110
4111         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4112         b->yy_buf_pos = b->yy_ch_buf = base;
4113         b->yy_is_our_buffer = 0;
4114         b->yy_input_file = 0;
4115         b->yy_n_chars = b->yy_buf_size;
4116         b->yy_is_interactive = 0;
4117         b->yy_at_bol = 1;
4118         b->yy_fill_buffer = 0;
4119         b->yy_buffer_status = YY_BUFFER_NEW;
4120
4121         surf_parse__switch_to_buffer(b  );
4122
4123         return b;
4124 }
4125
4126 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
4127  * scan from a @e copy of @a str.
4128  * @param str a NUL-terminated string to scan
4129  * 
4130  * @return the newly allocated buffer state object.
4131  * @note If you want to scan bytes that may contain NUL values, then use
4132  *       surf_parse__scan_bytes() instead.
4133  */
4134 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yy_str )
4135 {
4136     
4137         return surf_parse__scan_bytes(yy_str,strlen(yy_str) );
4138 }
4139
4140 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
4141  * scan from a @e copy of @a bytes.
4142  * @param bytes the byte buffer to scan
4143  * @param len the number of bytes in the buffer pointed to by @a bytes.
4144  * 
4145  * @return the newly allocated buffer state object.
4146  */
4147 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * bytes, int  len )
4148 {
4149         YY_BUFFER_STATE b;
4150         char *buf;
4151         yy_size_t n;
4152         int i;
4153     
4154         /* Get memory for full buffer, including space for trailing EOB's. */
4155         n = len + 2;
4156         buf = (char *) surf_parse_alloc(n  );
4157         if ( ! buf )
4158                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
4159
4160         for ( i = 0; i < len; ++i )
4161                 buf[i] = bytes[i];
4162
4163         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
4164
4165         b = surf_parse__scan_buffer(buf,n );
4166         if ( ! b )
4167                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
4168
4169         /* It's okay to grow etc. this buffer, and we should throw it
4170          * away when we're done.
4171          */
4172         b->yy_is_our_buffer = 1;
4173
4174         return b;
4175 }
4176
4177     static void yy_push_state (int  new_state )
4178 {
4179         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4180                 {
4181                 yy_size_t new_size;
4182
4183                 (yy_start_stack_depth) += YY_START_STACK_INCR;
4184                 new_size = (yy_start_stack_depth) * sizeof( int );
4185
4186                 if ( ! (yy_start_stack) )
4187                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
4188
4189                 else
4190                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
4191
4192                 if ( ! (yy_start_stack) )
4193                         YY_FATAL_ERROR(
4194                         "out of memory expanding start-condition stack" );
4195                 }
4196
4197         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4198
4199         BEGIN(new_state);
4200 }
4201
4202     static void yy_pop_state  (void)
4203 {
4204         if ( --(yy_start_stack_ptr) < 0 )
4205                 YY_FATAL_ERROR( "start-condition stack underflow" );
4206
4207         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4208 }
4209
4210 #ifndef YY_EXIT_FAILURE
4211 #define YY_EXIT_FAILURE 2
4212 #endif
4213
4214 static void yy_fatal_error (yyconst char* msg )
4215 {
4216         (void) fprintf( stderr, "%s\n", msg );
4217         exit( YY_EXIT_FAILURE );
4218 }
4219
4220 /* Redefine yyless() so it works in section 3 code. */
4221
4222 #undef yyless
4223 #define yyless(n) \
4224         do \
4225                 { \
4226                 /* Undo effects of setting up surf_parse_text. */ \
4227         int yyless_macro_arg = (n); \
4228         YY_LESS_LINENO(yyless_macro_arg);\
4229                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
4230                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
4231                 (yy_hold_char) = *(yy_c_buf_p); \
4232                 *(yy_c_buf_p) = '\0'; \
4233                 surf_parse_leng = yyless_macro_arg; \
4234                 } \
4235         while ( 0 )
4236
4237 /* Accessor  methods (get/set functions) to struct members. */
4238
4239 /** Get the current line number.
4240  * 
4241  */
4242 int surf_parse_get_lineno  (void)
4243 {
4244         
4245     return surf_parse_lineno;
4246 }
4247
4248 /** Get the input stream.
4249  * 
4250  */
4251 FILE *surf_parse_get_in  (void)
4252 {
4253         return surf_parse_in;
4254 }
4255
4256 /** Get the output stream.
4257  * 
4258  */
4259 FILE *surf_parse_get_out  (void)
4260 {
4261         return surf_parse_out;
4262 }
4263
4264 /** Get the length of the current token.
4265  * 
4266  */
4267 int surf_parse_get_leng  (void)
4268 {
4269         return surf_parse_leng;
4270 }
4271
4272 /** Get the current token.
4273  * 
4274  */
4275
4276 char *surf_parse_get_text  (void)
4277 {
4278         return surf_parse_text;
4279 }
4280
4281 /** Set the current line number.
4282  * @param line_number
4283  * 
4284  */
4285 void surf_parse_set_lineno (int  line_number )
4286 {
4287     
4288     surf_parse_lineno = line_number;
4289 }
4290
4291 /** Set the input stream. This does not discard the current
4292  * input buffer.
4293  * @param in_str A readable stream.
4294  * 
4295  * @see surf_parse__switch_to_buffer
4296  */
4297 void surf_parse_set_in (FILE *  in_str )
4298 {
4299         surf_parse_in = in_str ;
4300 }
4301
4302 void surf_parse_set_out (FILE *  out_str )
4303 {
4304         surf_parse_out = out_str ;
4305 }
4306
4307 int surf_parse_get_debug  (void)
4308 {
4309         return surf_parse__flex_debug;
4310 }
4311
4312 void surf_parse_set_debug (int  bdebug )
4313 {
4314         surf_parse__flex_debug = bdebug ;
4315 }
4316
4317 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
4318 int surf_parse_lex_destroy  (void)
4319 {
4320     
4321     /* Pop the buffer stack, destroying each element. */
4322         while(YY_CURRENT_BUFFER){
4323                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
4324                 YY_CURRENT_BUFFER_LVALUE = NULL;
4325                 surf_parse_pop_buffer_state();
4326         }
4327
4328         /* Destroy the stack itself. */
4329         surf_parse_free((yy_buffer_stack) );
4330         (yy_buffer_stack) = NULL;
4331
4332     /* Destroy the start condition stack. */
4333         surf_parse_free((yy_start_stack)  );
4334         (yy_start_stack) = NULL;
4335
4336     return 0;
4337 }
4338
4339 /*
4340  * Internal utility routines.
4341  */
4342
4343 #ifndef yytext_ptr
4344 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4345 {
4346         register int i;
4347         for ( i = 0; i < n; ++i )
4348                 s1[i] = s2[i];
4349 }
4350 #endif
4351
4352 #ifdef YY_NEED_STRLEN
4353 static int yy_flex_strlen (yyconst char * s )
4354 {
4355         register int n;
4356         for ( n = 0; s[n]; ++n )
4357                 ;
4358
4359         return n;
4360 }
4361 #endif
4362
4363 void *surf_parse_alloc (yy_size_t  size )
4364 {
4365         return (void *) malloc( size );
4366 }
4367
4368 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
4369 {
4370         /* The cast to (char *) in the following accommodates both
4371          * implementations that use char* generic pointers, and those
4372          * that use void* generic pointers.  It works with the latter
4373          * because both ANSI C and C++ allow castless assignment from
4374          * any pointer type to void*, and deal with argument conversions
4375          * as though doing an assignment.
4376          */
4377         return (void *) realloc( (char *) ptr, size );
4378 }
4379
4380 void surf_parse_free (void * ptr )
4381 {
4382         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
4383 }
4384
4385 #define YYTABLES_NAME "yytables"
4386
4387 #undef YY_NEW_FILE
4388 #undef YY_FLUSH_BUFFER
4389 #undef yy_set_bol
4390 #undef yy_new_buffer
4391 #undef yy_set_interactive
4392 #undef yytext_ptr
4393 #undef YY_DO_BEFORE_ACTION
4394
4395 #ifdef YY_DECL_IS_OURS
4396 #undef YY_DECL_IS_OURS
4397 #undef YY_DECL
4398 #endif
4399
4400 /* Element context stack lookup. */
4401 int surfxml_element_context(int i)
4402 {
4403   return (0<i && i<yy_start_stack_depth
4404           ? yy_start_stack[yy_start_stack_ptr - i]
4405           : 0);
4406 }
4407
4408 #ifdef FLEX_DEBUG
4409 void print_yy_stack(char* fmt, ...)
4410 {
4411   int i = 0; va_list ap; va_start(ap, fmt);
4412   vfprintf(stderr, fmt, ap);
4413   for (i=1; i<yy_start_stack_ptr; i++)
4414     fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
4415   fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
4416   va_end(ap);
4417 }
4418
4419 static void debug_enter(int state, const char* statename) {
4420   yy_push_state(state);
4421   if (surf_parse__flex_debug) print_yy_stack("--ENTER(%s) : ",statename);
4422 }
4423
4424 static void debug_leave(void) {
4425   if (surf_parse__flex_debug) print_yy_stack("--LEAVE : ");
4426   yy_pop_state();
4427 }
4428
4429 static void debug_set(int state, const char* statename) {
4430   BEGIN(state);
4431   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
4432 }
4433 #endif
4434
4435 enum {flexml_max_err_msg_size = 512};
4436
4437 static char flexml_err_msg[flexml_max_err_msg_size];
4438 const char * surfxml_parse_err_msg()
4439 {
4440     return flexml_err_msg;
4441 }
4442
4443 static void reset_surfxml_parse_err_msg()
4444 {
4445     flexml_err_msg[0] = '\0';
4446 }
4447
4448 static void cleanup(void)
4449 {
4450     if (surfxml_statenames) {
4451         free(surfxml_statenames);
4452         surfxml_statenames = NULL;
4453     }
4454 }
4455
4456 static int fail(const char* fmt, ...)
4457 {
4458     int chars_left, used;
4459     va_list ap; va_start(ap, fmt);
4460 #ifdef FLEXML_yylineno
4461     used = sprintf(flexml_err_msg,
4462                    "Invalid XML (XML input line %d, state %d): ",
4463                    surf_parse_lineno, YY_START);
4464 #else
4465     used = sprintf(flexml_err_msg,
4466                    "Invalid XML (state %d): ",
4467                    YY_START);
4468 #endif
4469     chars_left = flexml_max_err_msg_size - used - 1;
4470     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
4471     va_end(ap);
4472
4473 #ifndef FLEXML_quiet_parser
4474     /* print directly to sdterr */
4475     fprintf(stderr, "%s\n", flexml_err_msg);
4476     flexml_err_msg[0] = '\0';
4477 #endif
4478
4479     cleanup();
4480
4481     return 1;
4482 }
4483