Logo AND Algorithmique Numérique Distribuée

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