fix typo in changelog
[debian/sudo] / lex.yy.c
1 /*      $OpenBSD: flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $ */
2
3 /* A lexical scanner generated by flex */
4
5 /* Scanner skeleton version:
6  * $Header: /home/cvs/courtesan/sudo/Attic/lex.yy.c,v 1.46.2.11 2008/06/26 11:53:49 millert Exp $
7  */
8
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12
13 #include <stdio.h>
14 #include <errno.h>
15
16
17 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
18 #ifdef c_plusplus
19 #ifndef __cplusplus
20 #define __cplusplus
21 #endif
22 #endif
23
24
25 #ifdef __cplusplus
26
27 #include <stdlib.h>
28 #include <unistd.h>
29
30 /* Use prototypes in function declarations. */
31 #define YY_USE_PROTOS
32
33 /* The "const" storage-class-modifier is valid. */
34 #define YY_USE_CONST
35
36 #else   /* ! __cplusplus */
37
38 #ifdef __STDC__
39
40 #define YY_USE_PROTOS
41 #define YY_USE_CONST
42
43 #endif  /* __STDC__ */
44 #endif  /* ! __cplusplus */
45
46 #ifdef __TURBOC__
47  #pragma warn -rch
48  #pragma warn -use
49 #include <io.h>
50 #include <stdlib.h>
51 #define YY_USE_CONST
52 #define YY_USE_PROTOS
53 #endif
54
55 #ifdef YY_USE_CONST
56 #define yyconst const
57 #else
58 #define yyconst
59 #endif
60
61
62 #ifdef YY_USE_PROTOS
63 #define YY_PROTO(proto) proto
64 #else
65 #define YY_PROTO(proto) ()
66 #endif
67
68 /* Returned upon end-of-file. */
69 #define YY_NULL 0
70
71 /* Promotes a possibly negative, possibly signed char to an unsigned
72  * integer for use as an array index.  If the signed char is negative,
73  * we want to instead treat it as an 8-bit unsigned char, hence the
74  * double cast.
75  */
76 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
77
78 /* Enter a start condition.  This macro really ought to take a parameter,
79  * but we do it the disgusting crufty way forced on us by the ()-less
80  * definition of BEGIN.
81  */
82 #define BEGIN yy_start = 1 + 2 *
83
84 /* Translate the current start state into a value that can be later handed
85  * to BEGIN to return to the state.  The YYSTATE alias is for lex
86  * compatibility.
87  */
88 #define YY_START ((yy_start - 1) / 2)
89 #define YYSTATE YY_START
90
91 /* Action number for EOF rule of a given start state. */
92 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
93
94 /* Special action meaning "start processing a new file". */
95 #define YY_NEW_FILE yyrestart( yyin )
96
97 #define YY_END_OF_BUFFER_CHAR 0
98
99 /* Size of default input buffer. */
100 #define YY_BUF_SIZE 16384
101
102 typedef struct yy_buffer_state *YY_BUFFER_STATE;
103
104 extern int yyleng;
105 extern FILE *yyin, *yyout;
106
107 #define EOB_ACT_CONTINUE_SCAN 0
108 #define EOB_ACT_END_OF_FILE 1
109 #define EOB_ACT_LAST_MATCH 2
110
111 /* The funky do-while in the following #define is used to turn the definition
112  * int a single C statement (which needs a semi-colon terminator).  This
113  * avoids problems with code like:
114  *
115  *      if ( condition_holds )
116  *              yyless( 5 );
117  *      else
118  *              do_something_else();
119  *
120  * Prior to using the do-while the compiler would get upset at the
121  * "else" because it interpreted the "if" statement as being all
122  * done when it reached the ';' after the yyless() call.
123  */
124
125 /* Return all but the first 'n' matched characters back to the input stream. */
126
127 #define yyless(n) \
128         do \
129                 { \
130                 /* Undo effects of setting up yytext. */ \
131                 *yy_cp = yy_hold_char; \
132                 YY_RESTORE_YY_MORE_OFFSET \
133                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
134                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
135                 } \
136         while ( 0 )
137
138 #define unput(c) yyunput( c, yytext_ptr )
139
140 /* The following is because we cannot portably get our hands on size_t
141  * (without autoconf's help, which isn't available because we want
142  * flex-generated scanners to compile on their own).
143  */
144 typedef unsigned int yy_size_t;
145
146
147 struct yy_buffer_state
148         {
149         FILE *yy_input_file;
150
151         char *yy_ch_buf;                /* input buffer */
152         char *yy_buf_pos;               /* current position in input buffer */
153
154         /* Size of input buffer in bytes, not including room for EOB
155          * characters.
156          */
157         yy_size_t yy_buf_size;
158
159         /* Number of characters read into yy_ch_buf, not including EOB
160          * characters.
161          */
162         int yy_n_chars;
163
164         /* Whether we "own" the buffer - i.e., we know we created it,
165          * and can realloc() it to grow it, and should free() it to
166          * delete it.
167          */
168         int yy_is_our_buffer;
169
170         /* Whether this is an "interactive" input source; if so, and
171          * if we're using stdio for input, then we want to use getc()
172          * instead of fread(), to make sure we stop fetching input after
173          * each newline.
174          */
175         int yy_is_interactive;
176
177         /* Whether we're considered to be at the beginning of a line.
178          * If so, '^' rules will be active on the next match, otherwise
179          * not.
180          */
181         int yy_at_bol;
182
183         /* Whether to try to fill the input buffer when we reach the
184          * end of it.
185          */
186         int yy_fill_buffer;
187
188         int yy_buffer_status;
189 #define YY_BUFFER_NEW 0
190 #define YY_BUFFER_NORMAL 1
191         /* When an EOF's been seen but there's still some text to process
192          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
193          * shouldn't try reading from the input source any more.  We might
194          * still have a bunch of tokens to match, though, because of
195          * possible backing-up.
196          *
197          * When we actually see the EOF, we change the status to "new"
198          * (via yyrestart()), so that the user can continue scanning by
199          * just pointing yyin at a new input file.
200          */
201 #define YY_BUFFER_EOF_PENDING 2
202         };
203
204 static YY_BUFFER_STATE yy_current_buffer = 0;
205
206 /* We provide macros for accessing buffer states in case in the
207  * future we want to put the buffer states in a more general
208  * "scanner state".
209  */
210 #define YY_CURRENT_BUFFER yy_current_buffer
211
212
213 /* yy_hold_char holds the character lost when yytext is formed. */
214 static char yy_hold_char;
215
216 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
217
218
219 int yyleng;
220
221 /* Points to current character in buffer. */
222 static char *yy_c_buf_p = (char *) 0;
223 static int yy_init = 1;         /* whether we need to initialize */
224 static int yy_start = 0;        /* start state number */
225
226 /* Flag which is used to allow yywrap()'s to do buffer switches
227  * instead of setting up a fresh yyin.  A bit of a hack ...
228  */
229 static int yy_did_buffer_switch_on_eof;
230
231 void yyrestart YY_PROTO(( FILE *input_file ));
232
233 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
234 void yy_load_buffer_state YY_PROTO(( void ));
235 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
236 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
237 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
238 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
239 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
240
241 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
242 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
243 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
244
245 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
246 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
247 static void yy_flex_free YY_PROTO(( void * ));
248
249 #define yy_new_buffer yy_create_buffer
250
251 #define yy_set_interactive(is_interactive) \
252         { \
253         if ( ! yy_current_buffer ) \
254                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
255         yy_current_buffer->yy_is_interactive = is_interactive; \
256         }
257
258 #define yy_set_bol(at_bol) \
259         { \
260         if ( ! yy_current_buffer ) \
261                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
262         yy_current_buffer->yy_at_bol = at_bol; \
263         }
264
265 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
266
267 typedef unsigned char YY_CHAR;
268 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
269 typedef int yy_state_type;
270 extern char *yytext;
271 #define yytext_ptr yytext
272
273 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
274 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
275 static int yy_get_next_buffer YY_PROTO(( void ));
276 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
277
278 /* Done after the current pattern has been matched and before the
279  * corresponding action - sets up yytext.
280  */
281 #define YY_DO_BEFORE_ACTION \
282         yytext_ptr = yy_bp; \
283         yyleng = (int) (yy_cp - yy_bp); \
284         yy_hold_char = *yy_cp; \
285         *yy_cp = '\0'; \
286         yy_c_buf_p = yy_cp;
287
288 #define YY_NUM_RULES 48
289 #define YY_END_OF_BUFFER 49
290 static yyconst short int yy_accept[610] =
291     {   0,
292         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
293         0,    0,    0,    0,   49,   38,   44,   43,   42,   47,
294        38,   31,   47,   38,   39,   38,   38,   38,   38,   41,
295        40,   32,   32,   32,   32,   32,   32,   47,   38,   38,
296        32,   32,   32,   32,   32,   33,   47,   33,   35,   33,
297        33,   33,   33,   33,   32,   32,   32,   32,   32,   32,
298        47,   33,   33,    1,   16,   15,   16,   15,   15,   47,
299        47,    2,    8,    7,    8,    3,    8,    4,   47,   12,
300        12,   12,   10,   11,   38,    0,   44,   42,    0,   46,
301        26,    0,   25,    0,   37,   37,    0,   38,   38,    0,
302
303        38,   38,   38,   38,    0,   29,   32,   32,   32,   32,
304        32,   32,   38,   45,   38,   38,   38,   38,   38,   38,
305        33,    0,    0,   33,   26,    0,   25,    0,   33,    0,
306        33,   33,   33,   33,   33,   33,   32,   32,   32,   32,
307        32,   32,   33,   33,    1,   16,   16,   14,   13,   14,
308         0,    2,    8,    0,    5,    6,    8,    8,   12,    0,
309        12,   12,    0,    9,    0,   38,   38,   38,   38,   38,
310         0,    0,   29,   29,   32,   32,   32,   32,   32,   32,
311        32,   38,   38,   38,   38,   38,   38,    0,   34,   33,
312        33,   33,   33,   33,   32,   32,   32,   32,   32,   32,
313
314        32,   33,    9,   38,   38,   38,   38,   38,   38,    0,
315        30,   30,   30,    0,    0,   29,   29,   29,   29,   29,
316        29,   29,   32,   32,   32,   32,   32,   32,   32,   38,
317        38,   38,   38,   33,   33,   33,   33,   33,   33,   32,
318        32,   32,   32,   32,   32,   32,   33,   38,   38,   38,
319         0,    0,   30,   30,   30,    0,   29,   29,    0,   29,
320        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
321         0,   22,   32,   32,   32,   32,   32,   38,   38,   38,
322        33,   33,   33,   32,   32,   32,   32,   32,   33,   38,
323        38,   38,   38,   38,    0,   30,    0,   29,   29,   29,
324
325         0,    0,    0,   29,   29,   29,   29,   29,   29,   29,
326        29,   29,   29,   29,   29,   29,   32,   32,   32,   32,
327        32,   38,   38,   38,   33,   33,   33,   33,   33,   32,
328        32,   32,   32,   32,   33,   27,   27,   27,    0,    0,
329        29,   29,   29,   29,   29,   29,   29,    0,    0,    0,
330         0,    0,   29,   29,   29,   29,   29,   29,   29,   29,
331        29,   29,   29,   29,   29,   29,    0,   21,   32,   32,
332         0,   20,    0,   23,   38,   38,   38,   27,   27,   27,
333        32,   32,   33,   38,   27,   27,   27,   27,    0,   29,
334         0,   29,   29,   29,   29,   29,   29,   29,   29,   29,
335
336        29,   29,    0,    0,    0,   29,   29,   29,   29,   29,
337        29,   29,   29,   29,   29,   29,   29,   29,   32,   32,
338        36,   38,   17,   33,   27,   27,   27,   27,   32,   32,
339        33,   38,   28,   28,   28,   29,    0,    0,    0,   29,
340        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
341        29,   29,    0,    0,    0,    0,    0,   29,   29,   29,
342        29,   29,   29,   29,   29,    0,   19,    0,   24,   38,
343        17,   33,   28,   28,   28,   38,   38,   28,   28,   28,
344        28,   28,    0,    0,    0,    0,    0,   29,   29,   29,
345        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
346
347        29,   29,   29,   29,   29,   29,   29,   18,   33,   33,
348        28,   28,   28,   28,   28,   38,   38,   38,   28,   28,
349         0,    0,    0,   29,   29,   29,   29,   29,   29,   29,
350        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
351        29,   33,   33,   33,   28,   28,   38,   38,   38,   38,
352        38,    0,    0,    0,    0,    0,   29,   29,   29,   29,
353        29,   29,   29,   29,   33,   33,   33,   33,   33,   38,
354        38,   38,   29,   29,   29,   29,   29,   29,   33,   33,
355        33,   38,   38,   38,   38,   38,   29,   29,   29,   29,
356        29,   33,   33,   33,   33,   33,   27,   27,   27,   27,
357
358        27,   27,   27,   27,   27,   27,   27,   27,    0
359     } ;
360
361 static yyconst int yy_ec[256] =
362     {   0,
363         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
364         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
365         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
366         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
367         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
368        19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
369        25,   26,   10,   26,   27,   28,   29,   30,   31,   28,
370        32,   33,   32,   32,   32,   32,   32,   34,   35,   36,
371        32,   37,   38,   39,   40,   41,   42,   43,   32,   32,
372        10,   44,   10,    1,   45,    1,   46,   47,   47,   48,
373
374        49,   50,   51,   51,   52,   51,   51,   53,   54,   55,
375        56,   51,   51,   57,   58,   59,   60,   51,   51,   51,
376        51,   51,    1,    1,    1,    1,    1,    1,    1,    1,
377         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
378         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
379         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
380         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
381         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
382         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
383         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
384
385         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
386         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
387         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
388         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
389         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
390         1,    1,    1,    1,    1
391     } ;
392
393 static yyconst int yy_meta[61] =
394     {   0,
395         1,    2,    3,    4,    5,    6,    1,    4,    4,    1,
396         1,    2,    7,    8,    9,   10,   10,   10,   10,   10,
397        10,   10,   10,   11,    6,    4,   12,   12,   12,   12,
398        12,    1,    1,    1,    1,    1,    1,    1,    1,    1,
399         1,    1,    1,   13,   14,   15,   15,   15,   15,   15,
400        14,   14,   14,   14,   14,   14,   14,   14,   14,   14
401     } ;
402
403 static yyconst short int yy_base[681] =
404     {   0,
405         0,   32,   72,    0,   62,  131,  132,  139,  182,  241,
406       300,  343,  145,  150, 3097, 3052, 3093, 3790, 3068, 3059,
407      3008, 3790, 3790, 2996, 3790,  161,  374,  179,  161, 3015,
408      3790,  424, 2995,  469, 3002, 3009, 2982,  518,  190,  102,
409      2949, 2944, 2927, 2913, 2905, 2909,  201, 2873, 3790, 2864,
410       306,  531,  232,  240,  581, 2855,  626, 2855, 2852, 2838,
411       675,  248,  114, 2847,    0, 3790, 2844,    0, 3790,  314,
412        64,    0, 2803, 3790,  115, 3790,  146, 3790,  158, 2802,
413       171,  275, 3790,  270, 2801,  355, 2836, 2818, 2808, 3790,
414      2757,  684, 2739,  709,  325, 2729,  718,  355,  729, 2739,
415
416      2739,  390,  485,  493, 2675,  151,  764,    0, 2665,  245,
417      2657, 2649,  338, 3790,  124,  148,  232,  219,  287,  278,
418      2633,  794, 2656,    0, 2605,  819, 2593,  828,  530,  853,
419       549,  864, 2622,  642,  745,  650,  899,    0, 2604,  292,
420      2596, 2571,  382,  230, 2566,    0, 2548,  305, 3790, 3790,
421       333,    0, 2507,  700, 3790, 3790, 2505,  492, 2489, 2527,
422       384,  339,  350, 2529,  844,  936,  880,  720,  967, 2484,
423      2460, 1002,  201, 1038, 1073, 2454, 2433, 2438, 2431, 2409,
424      2403,  265,  236, 2369,  356,  147,  370, 2411, 3790, 1110,
425       915,  753, 1141, 2399, 1176, 2354, 2315, 2302, 2283, 2275,
426
427      2281,  479, 2293,  947,  375,    0,    0,  343,  392, 2270,
428      2236,  955,  515, 2222, 2221,  513,  983, 1213, 1018,  854,
429      1249, 1056, 2214,  539, 2196, 2186, 2153, 2149, 2125,  540,
430       388,  764,  529, 1090,  532,    0,    0,  427,  661, 2133,
431       583, 2110, 2101, 2084, 2080, 2087,  645, 1121, 1159, 1194,
432      2095, 2080, 1129, 2080, 2033, 2032, 2021,  667, 1229,  683,
433      1265,  775, 1286,    0, 1304, 1323, 1339,  888, 1359, 1377,
434       729, 3790, 2009, 1999, 1972, 1972, 1948,  481,  513,  651,
435      1396, 1406, 1416, 1959, 1919, 1925, 1925, 1913,  675, 1424,
436       791, 1434, 1444, 1455, 1926, 1873, 1856, 1819, 1484,  792,
437
438      1811, 1810, 1463,  802,  824,  827, 1471,  852, 1521,    0,
439      1502, 1558, 1537,  923, 1594, 1576,  730, 1745, 1737,  958,
440      1040,   19,  805,  670, 1610,  819, 1639, 1649, 1631, 1081,
441      1711, 1718, 1112, 1251,  318, 1661, 1669,  991, 1694, 1677,
442      1615, 1677, 1692, 1708, 1273, 1727, 1745, 1762, 1624, 1621,
443      1620, 1772, 1056, 1101, 1387, 1622, 1778, 1788, 1799,    0,
444      1817, 1836, 1788, 1347, 1872, 1854, 1324, 3790, 1590, 1578,
445      1325, 3790, 1522, 3790,  984,  757,  771, 1908, 1888, 1545,
446      1572, 1543, 1038, 1916,  636,    0,    0,  866, 1559, 1505,
447      1924,  937, 1945, 1142, 1955,    0, 1966, 1977, 1993, 1716,
448
449      2012, 2030, 1496, 1482, 2049, 1150, 1185, 1934, 2040, 2057,
450      2067, 2078,    0, 2096, 2115, 2067, 1896, 2133, 1523, 1837,
451      1434,  879, 1194, 2150, 1377,    0,    0,  970, 1838, 1957,
452      1426, 2181, 2158, 2166, 1028, 1407, 1390, 1389, 2191, 1306,
453      1435, 1577, 2199, 1650, 2212,    0, 2223, 2234, 2250, 2001,
454      2269, 2287, 2304, 1260, 1244, 1225, 2314, 1745, 1854, 2322,
455      1084, 1103, 2333,    0, 2324, 1968, 3790, 2116, 3790, 1451,
456      3790, 2343, 2351, 2359, 1167, 2372,  846, 2380, 2388, 2401,
457      2409, 2419, 2422, 1172, 1153, 1101, 2432, 1057, 1039, 1693,
458      2134, 2438, 2182, 2450,    0, 2461, 2472, 2488, 2258, 2507,
459
460      2525, 1032, 1012, 2543, 2287,  947, 1187,  880, 2553, 1483,
461      2561, 2569, 2577, 2585, 2595, 2600, 2610, 2624, 2634, 2368,
462       850,  833, 2644,  798,  780, 2235, 2473, 2652, 2526, 2662,
463         0, 2673, 2684, 2700, 2496, 2721,  782,  740,  713, 2730,
464       701, 2738, 2748, 2758, 2768, 2692, 2776, 1484, 2786, 2796,
465      2807, 2813,  689,  638,  592, 2823,  566,  559, 2601,  550,
466       416, 2836,    0, 1232, 2844, 1659, 2854, 2864, 2875, 2883,
467      2893, 2904, 2912, 2920, 2928,  393,    0,  346, 2938, 2948,
468      2958, 2968, 2146, 2978, 2988, 2998, 3790, 3004, 3012, 2708,
469      3790, 3027, 2179, 3037, 3047, 3057, 3063, 3071, 3100, 3108,
470
471      3116, 3145,  293, 3153, 3137,  123, 3182, 3166, 3790, 3226,
472      3241, 3256, 3271, 3286, 3301, 3316, 3331, 3346, 3352, 3367,
473      3382, 3397, 3412, 3427, 3442, 1242, 3457, 3472, 3487, 3502,
474      3508, 3515, 3530, 1593, 3536, 3543, 3549, 3555, 3561, 3568,
475      3574, 3580, 3586, 3593, 3601, 3607, 3613, 3619, 1211, 1321,
476      3626, 3634, 3640, 3646, 3653, 3661, 3667, 3675, 1694, 1762,
477      3682, 3690, 1834, 1871, 3696, 3704, 3711, 3719, 3725, 3733,
478      1302, 1375, 3740, 1888, 1943, 3746, 3754, 3760, 3768, 3774
479     } ;
480
481 static yyconst short int yy_def[681] =
482     {   0,
483       609,    1,  609,    3,    1,    1,  610,  610,  611,  611,
484       612,  612,  613,  613,  609,  614,  609,  609,  609,  615,
485       616,  609,  609,  617,  609,  618,  614,   27,   27,  619,
486       609,  609,   32,   32,   34,   34,   34,  614,   27,  614,
487        32,   32,   34,   34,   34,  620,  621,  622,  609,  623,
488       624,  620,   52,   52,  609,   55,   55,   57,   57,   57,
489       620,   52,  620,  609,  625,  609,  625,  625,  609,  609,
490       609,  626,  627,  609,  627,  609,  627,  609,  628,  629,
491       629,  629,  609,  609,  614,  614,  609,  609,  615,  609,
492       616,  616,  617,  617,  618,  630,  614,  614,   27,  619,
493
494        99,   99,   99,   99,  631,  632,   32,   34,   34,   34,
495        34,   34,  614,  609,  614,  614,   99,  614,  614,  614,
496       620,  620,  633,  634,  622,  622,  623,  623,  624,  620,
497       620,   52,  132,  132,  132,  132,   55,   57,   57,   57,
498        57,   57,  620,  620,  609,  625,  625,  609,  609,  609,
499       609,  626,  627,  627,  609,  609,  627,  627,  629,  609,
500       629,  629,  609,  609,  609,  614,  166,  166,   99,  169,
501       635,  609,  636,  609,   32,   34,   34,   34,   34,   34,
502        34,  614,  614,  169,  614,  614,  614,  633,  609,  620,
503       190,  190,  132,  193,   55,   57,   57,   57,   57,   57,
504
505        57,  620,  609,  614,  614,  166,  166,  166,  614,  637,
506       638,  638,  212,  639,  638,  640,  174,  609,  218,  218,
507       609,  218,   34,   34,   34,   34,   34,   34,   34,  614,
508       614,  614,  614,  620,  620,  190,  190,  190,  620,   57,
509        57,   57,   57,   57,   57,   57,  620,  166,  166,  166,
510       609,  641,  641,  253,  641,  642,  643,  644,  609,  645,
511       221,  645,  609,  263,  645,  609,  266,  266,  609,  266,
512       609,  609,   34,   34,   34,   34,   34,  614,  614,  614,
513       190,  190,  190,   57,   57,   57,   57,   57,  620,  614,
514       614,  166,  166,  614,  646,  646,  647,  648,  609,  609,
515
516       649,  650,  609,  651,  651,  652,  269,  652,  609,  309,
517       652,  609,  312,  312,  609,  312,   34,   34,   34,   34,
518        34,  614,  614,  614,  620,  620,  190,  190,  620,   57,
519        57,   57,   57,   57,  620,  614,  336,  336,  609,  653,
520       654,  299,  609,  343,  343,  609,  343,  609,  609,  649,
521       649,  609,  609,  655,  655,  656,  315,  656,  609,  359,
522       656,  609,  362,  362,  609,  362,  609,  609,   34,   34,
523       609,  609,  609,  609,  614,  614,  614,  620,  378,  378,
524        57,   57,  620,  614,  614,  336,  336,  336,  609,  657,
525       609,  658,  346,  658,  658,  395,  658,  609,  398,  398,
526
527       609,  398,  659,  660,  609,  609,  661,  661,  662,  365,
528       662,  609,  412,  662,  609,  415,  415,  415,   34,   34,
529       614,  614,  614,  620,  620,  378,  378,  378,   57,   57,
530       620,  614,  432,  432,  432,  609,  663,  664,  609,  665,
531       665,  666,  401,  666,  666,  445,  666,  609,  448,  448,
532       609,  448,  609,  609,  659,  659,  609,  609,  667,  667,
533       668,  668,  668,  463,  668,  609,  609,  609,  609,  614,
534       609,  620,  472,  472,  472,  614,  614,  432,  432,  432,
535       432,  614,  609,  609,  663,  663,  609,  609,  669,  669,
536       670,  451,  670,  670,  494,  670,  609,  497,  497,  609,
537
538       497,  671,  672,  609,  609,  673,  673,  614,  472,  620,
539       472,  472,  472,  472,  620,  432,  432,  432,  432,  614,
540       674,  675,  609,  609,  676,  676,  677,  500,  677,  677,
541       530,  677,  609,  533,  533,  533,  609,  671,  671,  609,
542       609,  472,  472,  472,  472,  620,  614,  614,  432,  432,
543       614,  609,  609,  674,  674,  609,  609,  678,  678,  679,
544       679,  679,  562,  562,  620,  620,  472,  472,  620,  432,
545       432,  432,  609,  609,  609,  609,  680,  680,  472,  472,
546       472,  432,  614,  432,  432,  614,  609,  609,  609,  609,
547       609,  472,  620,  472,  472,  620,  614,  614,  614,  620,
548
549       620,  620,  614,  614,  614,  620,  620,  620,    0,  609,
550       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
551       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
552       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
553       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
554       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
555       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
556       609,  609,  609,  609,  609,  609,  609,  609,  609,  609
557     } ;
558
559 static yyconst short int yy_nxt[3851] =
560     {   0,
561        16,   17,   18,   19,   16,   20,   21,   22,   23,   16,
562        24,   25,   16,   16,   26,   27,   28,   29,   27,   27,
563        27,   27,   27,   30,   31,   23,   32,   32,   32,   32,
564        33,   34,   34,   35,   34,   36,   34,   37,   34,   34,
565        34,   34,   34,   38,   16,   39,   39,   39,   39,   39,
566        16,   16,   16,   16,   16,   16,   16,   40,   16,   16,
567        41,   42,   86,   64,   43,  151,  114,   23,   44,   23,
568       375,   45,   46,   17,   18,   19,   46,   47,   48,   23,
569        49,   46,   50,   25,   46,   46,   51,   52,   53,   54,
570        52,   52,   52,   52,   52,   30,   31,   23,   55,   55,
571
572        55,   55,   56,   57,   57,   58,   57,   59,   57,   60,
573        57,   57,   57,   57,   57,   61,   46,   62,   62,   62,
574        62,   62,   46,   46,   46,   46,   46,   46,   46,   63,
575        46,   46,   64,   17,   66,   67,   23,   68,   23,  155,
576        17,   66,   67,   69,   68,   86,   81,   18,   82,   83,
577        69,   81,   18,   82,   83,   69,   68,  122,  154,  158,
578       114,  115,   69,   68,   96,  172,  122,   86,   96,   96,
579       156,  182,  161,  144,  174,   70,  103,  103,  103,  103,
580       103,  104,   70,   17,   18,   19,   96,   20,   84,  154,
581        86,   86,  233,   84,  102,  102,  102,  102,  102,  102,
582
583       102,  102,  183,   85,   97,  101,  101,  101,  101,  101,
584       101,  101,  101,  124,  160,  172,  124,  124,  124,  124,
585       124,  124,  124,  124,  217,   71,   72,   72,   72,   72,
586        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
587        72,   72,   17,   18,   19,   85,   20,  134,  134,  134,
588       134,  134,  134,  134,  134,  135,  135,  135,  135,  135,
589       136,  121,   86,  133,  133,  133,  133,  133,  133,  133,
590       133,  163,  164,  122,  159,  177,  185,  202,  162,   86,
591       178,  184,  179,  231,   71,   72,   72,   72,   72,   72,
592        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
593
594        72,   17,   18,   19,   74,   20,  151,  114,   86,   96,
595        75,   76,   77,   96,   96,  148,  114,  149,  160,  150,
596       230,   86,  197,  149,   78,  150,  187,  198,   96,  199,
597        86,   96,   96,   96,  151,  114,   86,  150,  150,  151,
598       114,  186,  162,   79,   17,   18,   19,   74,   20,  130,
599        96,  163,  164,   75,   76,   77,   85,  150,   85,  391,
600        85,  122,   85,   85,   85,   85,   85,   78,   97,  383,
601       166,  167,  168,  166,  166,  166,  166,  166,   85,   85,
602        85,   86,  160,  151,  114,  161,   79,   98,  204,   99,
603        99,   99,   99,   99,   99,   99,   99,  100,   86,   86,
604
605       101,  101,  101,  101,  101,  170,  170,  170,  170,  170,
606       170,  170,  170,   86,  231,  100,  528,   86,   86,  101,
607       101,  101,  101,  101,   85,  122,  231,  160,   85,  609,
608        85,   86,  279,   85,   85,   86,   85,   85,   85,  107,
609       107,  107,  107,  107,  107,  107,  107,  100,  121,  121,
610       107,  107,  107,  107,  107,  108,  108,  108,  108,  108,
611       108,  108,  108,  108,  108,  108,  108,   86,  108,  101,
612       101,  101,  101,  101,   85,   85,   85,   85,   85,   85,
613        85,   85,   85,   85,  108,  108,  108,  108,  108,  108,
614       108,  108,  609,  151,  114,  108,  108,  108,  108,  108,
615
616       170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
617       170,  170,  170,  170,   85,   85,   85,   85,   85,  113,
618       114,   85,  122,   85,   86,   85,   85,  172,  322,   85,
619       255,  255,  255,   96,  247,  154,  217,   96,   96,  323,
620       271,   85,   85,   85,  131,  234,  132,  132,  132,  132,
621       132,  132,  132,  132,  100,   96,   86,  133,  133,  133,
622       133,  133,  272,  391,  190,  191,  192,  190,  190,  190,
623       190,  190,   86,  130,  122,  122,  133,  133,  133,  133,
624       133,  121,  528,   86,  271,  121,  231,  121,  278,  492,
625       121,  121,  122,  121,  121,  121,  137,  137,  137,  137,
626
627       137,  137,  137,  137,  100,  552,  272,  137,  137,  137,
628       137,  137,  138,  138,  138,  138,  138,  138,  138,  138,
629       138,  138,  138,  138,  122,  138,  133,  133,  133,  133,
630       133,  121,  121,  121,  121,  121,  121,  121,  121,  121,
631       121,  138,  138,  138,  138,  138,  138,  138,  138,  609,
632       384,  552,  138,  138,  138,  138,  138,  194,  194,  194,
633       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
634       194,  121,  121,  121,  121,  121,  143,  114,  121,   86,
635       121,  172,  121,  121,  100,   91,  121,   91,  122,   91,
636       217,   91,   91,  289,   86,   91,  259,  172,  121,  121,
637
638       121,  153,  552,  324,  122,  153,  261,   91,   91,   91,
639        93,  153,   93,   86,   93,  172,   93,   93,  122,   95,
640        93,   85,  335,   95,  153,   85,   85,  172,  377,   95,
641       271,  367,   93,   93,   93,  207,  207,  207,  207,  207,
642       208,   95,   95,   85,  169,  169,  169,  169,  169,  169,
643       169,  169,  272,  368,  172,  169,  169,  169,  169,  169,
644       194,  194,  194,  194,  194,  194,  194,  194,  237,  237,
645       237,  237,  237,  238,  169,  169,  169,  169,  169,  175,
646       175,  175,  175,  175,  175,  175,  175,  100,  609,  172,
647       175,  175,  175,  175,  175,  121,  172,  121,  261,  121,
648
649        86,  121,  121,  492,  290,  121,  172,   86,  422,  169,
650       169,  169,  169,  169,   86,  217,  172,  121,  121,  121,
651       125,  443,  125,  280,  125,  261,  125,  125,  423,  127,
652       125,  127,  325,  127,   86,  127,  127,  259,  172,  127,
653       259,  172,  125,  125,  125,   96,  552,  261,   86,   96,
654       307,  127,  127,  127,  129,   96,  121,  376,  129,  476,
655       121,  121,  122,  552,  129,  609,  172,   96,   96,  264,
656       264,  264,  264,  264,  265,  307,  129,  129,  121,  193,
657       193,  193,  193,  193,  193,  193,  193,   85,   85,   86,
658       193,  193,  193,  193,  193,  206,  206,  206,  206,  206,
659
660       206,  206,  206,  310,  310,  310,  310,  310,  311,  193,
661       193,  193,  193,  193,  195,  195,  195,  195,  195,  195,
662       195,  195,   86,   86,  470,  195,  195,  195,  195,  195,
663       236,  236,  236,  236,  236,  236,  236,  236,  360,  360,
664       360,  360,  360,  361,  193,  193,  193,  193,  193,  204,
665       391,  205,  205,  205,  205,  205,  205,  205,  205,  371,
666       393,  172,  248,  249,  250,  248,  248,  248,  248,  248,
667       253,  253,  254,  255,  255,  255,  255,  255,  214,   86,
668        85,  372,  209,  209,  209,  209,  209,  209,  209,  209,
669        86,  121,  121,  209,  209,  209,  209,  209,  222,  222,
670
671       222,  222,  222,  222,  222,  222,  387,  387,  387,  387,
672       387,  388,  209,  209,  209,  209,  209,  211,  212,  213,
673       213,  213,  213,  213,  213,  214,  172,   86,  215,  215,
674       215,  215,  215,  263,  263,  263,  263,  263,  263,  263,
675       263,  373,  421,  482,  482,  482,  172,  215,  215,  215,
676       215,  215,  172,  218,  219,  220,  218,  218,  218,  218,
677       218,  221,  443,  374,  222,  222,  222,  222,  222,  609,
678       172,  262,  262,  262,  262,  262,  262,  262,  262,  261,
679       393,  122,  367,  222,  222,  222,  222,  222,  223,  223,
680       223,  223,  223,  223,  223,  223,  431,  259,  172,  223,
681
682       223,  223,  223,  223,  368,  281,  282,  283,  281,  281,
683       281,  281,  281,  371,  483,  172,  609,  172,  209,  209,
684       209,  209,  209,  234,  307,  235,  235,  235,  235,  235,
685       235,  235,  235,  122,  290,  372,  291,  291,  291,  291,
686       291,  291,  291,  291,  296,  296,  296,  296,  296,  296,
687       296,  296,  214,  122,  121,  609,  239,  239,  239,  239,
688       239,  239,  239,  239,  172,  393,  483,  239,  239,  239,
689       239,  239,  290,  307,  292,  292,  292,  292,  292,  292,
690       292,  292,  515,  515,  515,  483,  239,  239,  239,  239,
691       239,  240,  240,  240,  240,  240,  240,  240,  240,  172,
692
693       259,  172,  240,  240,  240,  240,  240,  290,  357,  293,
694       293,  293,  293,  293,  294,  291,  291,  471,  349,  471,
695       349,  239,  239,  239,  239,  239,  259,  172,  260,  260,
696       260,  260,  260,  260,  260,  260,  261,   86,  453,  262,
697       262,  262,  262,  262,  301,  302,  303,  301,  301,  301,
698       301,  301,  373,  577,  577,  152,  152,  453,  262,  262,
699       262,  262,  262,  172,  266,  267,  268,  266,  266,  266,
700       266,  266,  269,  453,  374,  270,  270,  270,  270,  270,
701       270,  270,  270,  270,  270,  270,  270,  270,  396,  396,
702       396,  396,  396,  397,  270,  270,  270,  270,  270,  259,
703
704       172,  305,  305,  305,  305,  305,  305,  305,  305,  261,
705       537,  537,  304,  304,  304,  304,  304,  259,  172,  305,
706       305,  305,  305,  305,  305,  367,  371,  261,  350,  393,
707       350,  304,  304,  304,  304,  304,  259,  172,  306,  306,
708       306,  306,  306,  306,  306,  306,  307,  368,  372,  308,
709       308,  308,  308,  308,  309,  309,  309,  309,  309,  309,
710       309,  309,  413,  413,  413,  413,  413,  414,  308,  308,
711       308,  308,  308,  172,  312,  313,  314,  312,  312,  312,
712       312,  312,  315,  538,  538,  316,  316,  316,  316,  316,
713       609,  424,  308,  308,  308,  308,  308,  308,  308,  308,
714
715       259,  172,  483,  483,  316,  316,  316,  316,  316,  325,
716       307,  326,  326,  326,  326,  326,  326,  326,  326,  325,
717       122,  327,  327,  327,  327,  327,  327,  327,  327,  325,
718       342,  328,  328,  328,  328,  328,  329,  326,  326,  336,
719       337,  338,  336,  336,  336,  336,  336,  290,  391,  291,
720       291,  291,  291,  291,  291,  291,  291,  290,  393,  291,
721       291,  291,  291,  291,  291,  291,  291,   86,  290,  122,
722       291,  291,  291,  291,  291,  291,  348,   86,  351,  351,
723       351,  351,  351,  352,  349,  349,  316,  316,  316,  316,
724       316,  316,  316,  316,   86,  453,  509,  547,   86,  343,
725
726       344,  345,  343,  343,  343,  343,  343,  346,  508,  453,
727       347,  347,  347,  347,  347,  259,  172,  355,  355,  355,
728       355,  355,  355,  373,  466,  307,  122,   86,  342,  347,
729       347,  347,  347,  347,  259,  172,  355,  355,  355,  355,
730       355,  355,  355,  355,  307,  374,  467,  354,  354,  354,
731       354,  354,  359,  359,  359,  359,  359,  359,  359,  359,
732       427,  427,  427,  427,  427,  428,  354,  354,  354,  354,
733       354,  259,  172,  356,  356,  356,  356,  356,  356,  356,
734       356,  357,  257,  430,  358,  358,  358,  358,  358,  609,
735       391,  358,  358,  358,  358,  358,  358,  358,  358,  124,
736
737       443,  429,  124,  358,  358,  358,  358,  358,  172,  362,
738       363,  364,  362,  362,  362,  362,  362,  365,  420,  419,
739       366,  366,  366,  366,  366,  378,  379,  380,  378,  378,
740       378,  378,  378,  348,  348,  259,  172,  348,  342,  366,
741       366,  366,  366,  366,  325,  357,  326,  326,  326,  326,
742       326,  326,  325,  122,  326,  326,  326,  326,  326,  326,
743       326,  326,  325,  609,  326,  326,  326,  326,  326,  326,
744       326,  326,  565,  443,  122,  384,  385,  385,  385,  385,
745       385,  385,  385,  385,  386,  386,  386,  386,  386,  386,
746       386,  386,  347,  347,  347,  347,  347,  347,  347,  347,
747
748       257,  454,  122,  454,   86,  391,  391,  392,  392,  392,
749       392,  392,  392,  392,  392,  393,  443,  214,  394,  394,
750       394,  394,  394,  395,  395,  395,  395,  395,  395,  395,
751       395,  446,  446,  446,  446,  446,  447,  394,  394,  394,
752       394,  394,  398,  399,  400,  398,  398,  398,  398,  398,
753       401,  382,  381,  402,  402,  402,  402,  402,  609,  172,
754       394,  394,  394,  394,  394,  394,  394,  394,  357,  455,
755       370,  455,  402,  402,  402,  402,  402,  403,  404,  405,
756       403,  403,  403,  403,  403,  348,  369,  349,  349,  349,
757       349,  349,  349,  366,  366,  366,  366,  366,  366,  366,
758
759       366,  609,  172,  412,  412,  412,  412,  412,  412,  412,
760       412,  357,  259,  172,  408,  408,  408,  408,  408,  408,
761       408,  408,  357,  348,  348,  407,  407,  407,  407,  407,
762       259,  172,  408,  408,  408,  408,  408,  408,  468,  466,
763       357,  484,  342,  484,  407,  407,  407,  407,  407,  259,
764       172,  409,  409,  409,  409,  409,  409,  409,  409,  410,
765       469,  467,  411,  411,  411,  411,  411,  609,  172,  411,
766       411,  411,  411,  411,  411,  411,  411,  410,  485,  257,
767       485,  411,  411,  411,  411,  411,  172,  415,  416,  417,
768       415,  415,  415,  415,  415,  553,  214,  553,  418,  418,
769
770       418,  418,  418,  426,  426,  426,  426,  426,  426,  426,
771       426,  464,  464,  464,  464,  464,  465,  418,  418,  418,
772       418,  418,  424,  425,  425,  425,  425,  425,  425,  425,
773       425,  432,  433,  434,  435,  432,  432,  432,  432,  437,
774       438,  439,  437,  437,  437,  437,  437,  259,  172,  214,
775       554,  122,  554,  334,  333,  332,  331,  357,  468,   86,
776       402,  402,  402,  402,  402,  402,  402,  402,  391,  466,
777       441,  441,  441,  441,  441,  441,  441,  441,  393,  391,
778       469,  441,  441,  441,  441,  441,  441,  330,  321,  393,
779       391,  467,  442,  442,  442,  442,  442,  442,  442,  442,
780
781       443,  320,  319,  444,  444,  444,  444,  444,  445,  445,
782       445,  445,  445,  445,  445,  445,  495,  495,  495,  495,
783       495,  496,  444,  444,  444,  444,  444,  448,  449,  450,
784       448,  448,  448,  448,  448,  451,  318,  317,  452,  452,
785       452,  452,  452,  609,  299,  444,  444,  444,  444,  444,
786       444,  444,  444,  259,  172,  257,  214,  452,  452,  452,
787       452,  452,  453,  410,  456,  456,  456,  456,  456,  457,
788       454,  454,  418,  418,  418,  418,  418,  418,  418,  418,
789       609,  172,  463,  463,  463,  463,  463,  463,  463,  463,
790       410,  259,  172,  460,  460,  460,  460,  460,  460,  460,
791
792       460,  410,  295,  214,  459,  459,  459,  459,  459,  259,
793       172,  460,  460,  460,  460,  460,  460,  468,  106,  410,
794       288,  287,  286,  459,  459,  459,  459,  459,  259,  172,
795       461,  461,  461,  461,  461,  461,  461,  461,  285,  469,
796       284,  462,  462,  462,  462,  462,  609,  391,  462,  462,
797       462,  462,  462,  462,  462,  462,  100,  492,  277,  582,
798       462,  462,  462,  462,  462,  472,  473,  474,  475,  472,
799       472,  472,  472,  478,  478,  478,  478,  478,  478,  478,
800       478,  479,  479,  479,  479,  479,  480,  481,  481,   86,
801       276,  275,  592,  122,  476,  609,  477,  477,  477,  477,
802
803       477,  477,  477,  477,  483,  492,  486,  486,  486,  486,
804       486,  487,  484,  484,  452,  452,  452,  452,  452,  452,
805       452,  452,  122,  274,   86,  391,  273,  490,  490,  490,
806       490,  490,  490,  490,  490,  443,  391,  100,  490,  490,
807       490,  490,  490,  490,  214,  257,  443,  391,  391,  491,
808       491,  491,  491,  491,  491,  491,  491,  492,  492,  214,
809       493,  493,  493,  493,  493,  494,  494,  494,  494,  494,
810       494,  494,  494,  531,  531,  531,  531,  531,  532,  493,
811       493,  493,  493,  493,  497,  498,  499,  497,  497,  497,
812       497,  497,  500,  106,  203,  501,  501,  501,  501,  501,
813
814       609,  172,  493,  493,  493,  493,  493,  493,  493,  493,
815       410,  246,  245,  244,  501,  501,  501,  501,  501,  502,
816       503,  504,  502,  502,  502,  502,  502,  453,  243,  454,
817       454,  454,  454,  454,  454,  259,  172,  259,  172,  507,
818       507,  507,  507,  507,  507,  410,  259,  172,  507,  507,
819       507,  507,  507,  507,  507,  507,  509,  242,  510,  510,
820       510,  510,  510,  510,  510,  510,  511,  511,  511,  511,
821       511,  511,  511,  511,  512,  512,  512,  512,  512,  513,
822       514,  514,  241,  520,  520,  520,  122,  516,  517,  518,
823       516,  516,  516,  516,  516,  481,  481,  481,  481,  481,
824
825       481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
826       481,   86,  131,  189,  232,   86,  481,  481,  481,  481,
827       481,  481,  519,  519,  519,  519,  519,  519,  519,  519,
828       519,  519,  476,  229,  520,  520,  520,  521,  522,  523,
829       521,  521,  521,  521,  521,  483,  228,  484,  484,  484,
830       484,  484,  484,  501,  501,  501,  501,  501,  501,  501,
831       501,  227,   86,  391,  226,  526,  526,  526,  526,  526,
832       526,  526,  526,  492,  391,  225,  526,  526,  526,  526,
833       526,  526,  224,  106,  492,  391,  391,  527,  527,  527,
834       527,  527,  527,  527,  527,  528,  528,   98,  529,  529,
835
836       529,  529,  529,  530,  530,  530,  530,  530,  530,  530,
837       530,  563,  563,  563,  563,  563,  564,  529,  529,  529,
838       529,  529,  533,  534,  535,  533,  533,  533,  533,  533,
839       203,  159,  160,  536,  536,  536,  536,  536,  609,  609,
840       529,  529,  529,  529,  529,  529,  529,  529,  154,  528,
841       154,  147,  536,  536,  536,  536,  536,  172,  539,  539,
842       539,  539,  539,  540,  537,  537,  121,  145,  542,  543,
843       544,  542,  542,  542,  542,  542,  514,  514,  514,  514,
844       514,  514,  514,  514,  514,  514,  514,  514,  514,  514,
845       514,  514,  514,  514,  514,  514,  514,  514,  545,  545,
846
847       545,  545,  545,  545,  545,  545,  545,  545,  509,  201,
848       546,  546,  546,  547,  391,  548,  548,  548,  548,  548,
849       548,  548,  548,  547,  528,  549,  549,  549,  549,  549,
850       549,  549,  549,  200,  196,  121,  128,  547,  122,  550,
851       550,  550,  550,  550,  551,  548,  548,   85,  126,  519,
852       519,  519,  519,  519,  519,  519,  519,  552,  189,  555,
853       555,  555,  555,  555,  556,  553,  553,  536,  536,  536,
854       536,  536,  536,  536,  536,  391,  122,  559,  559,  559,
855       559,  559,  559,  559,  559,  528,  391,  181,  559,  559,
856       559,  559,  559,  559,  180,  176,  528,  391,  106,  560,
857
858       560,  560,  560,  560,  560,  560,  560,  546,  546,  546,
859       561,  561,  561,  561,  561,  562,  562,  562,  562,  562,
860       562,  562,  562,  587,  587,  587,  587,  587,  587,  561,
861       561,  561,  561,  561,  609,  122,  561,  561,  561,  561,
862       561,  561,  561,  561,  172,  537,  537,  537,  537,  537,
863       537,  565,   85,  566,  566,  566,  566,  566,  566,  566,
864       566,  565,  106,  567,  567,  567,  567,  567,  567,  567,
865       567,  565,  165,  568,  568,  568,  568,  568,  569,  566,
866       566,  121,   94,  545,  545,  545,  545,  545,  545,  545,
867       545,  570,  571,  572,  570,  570,  570,  570,  570,  547,
868
869        92,  548,  548,  548,  548,  548,  548,  548,  548,  547,
870        90,  548,  548,  548,  548,  548,  548,  548,  548,   86,
871       547,   88,  548,  548,  548,  548,  548,  548,  573,  574,
872       575,  573,  573,  573,  573,  573,  552,   87,  553,  553,
873       553,  553,  553,  553,   86,  160,  154,  147,  145,  391,
874        86,  578,  578,  578,  578,  578,  578,  578,  578,  579,
875       580,  581,  579,  579,  579,  579,  579,  565,  142,  566,
876       566,  566,  566,  566,  566,  566,  566,  565,  141,  566,
877       566,  566,  566,  566,  566,  566,  566,  122,  565,  140,
878       566,  566,  566,  566,  566,  566,  582,  139,  583,  583,
879
880       583,  583,  583,  583,  583,  583,  582,  128,  584,  584,
881       584,  584,  584,  584,  584,  584,  126,  582,  122,  585,
882       585,  585,  585,  585,  586,  583,  583,  587,  587,  587,
883       587,  587,  587,  587,  587,  588,  588,  588,  588,  588,
884       588,  588,  588,  589,  589,  589,  589,  589,  590,  587,
885       587,  592,  122,  593,  593,  593,  593,  593,  593,  593,
886       593,  592,  120,  594,  594,  594,  594,  594,  594,  594,
887       594,  592,  119,  595,  595,  595,  595,  595,  596,  593,
888       593,   85,  118,  597,  598,  599,  597,  597,  597,  597,
889       597,  582,  117,  583,  583,  583,  583,  583,  583,  583,
890
891       583,  582,  116,  583,  583,  583,  583,  583,  583,  583,
892       583,  582,  112,  583,  583,  583,  583,  583,  583,  587,
893       587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
894       587,  587,  587,  587,  587,  111,  110,  109,  106,   94,
895       121,   86,  600,  601,  602,  600,  600,  600,  600,  600,
896       592,   92,  593,  593,  593,  593,  593,  593,  593,  593,
897       592,   90,  593,  593,  593,  593,  593,  593,  593,  593,
898       592,   88,  593,  593,  593,  593,  593,  593,  603,  603,
899       603,  603,  603,  603,  603,  603,  597,  597,  597,  597,
900       597,  597,  597,  597,   87,   86,  609,  609,  609,  609,
901
902       122,  609,  609,  609,  609,  609,   86,  609,  609,  609,
903       609,  609,  609,  609,   86,  604,  604,  604,  604,  604,
904       605,  603,  603,  606,  606,  606,  606,  606,  606,  606,
905       606,  600,  600,  600,  600,  600,  600,  600,  600,  609,
906       609,  609,  609,   86,  609,  609,  609,  609,  609,  609,
907       609,  122,  603,  603,  603,  603,  603,  603,  609,  122,
908       607,  607,  607,  607,  607,  608,  606,  606,  603,  603,
909       603,  603,  603,  603,  603,  603,  609,  609,  609,  609,
910        86,  606,  606,  606,  606,  606,  606,  609,  122,  609,
911       609,  609,  609,  609,  609,  609,   86,  606,  606,  606,
912
913       606,  606,  606,  606,  606,  609,  609,  609,  609,  122,
914       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
915       609,  609,  609,  609,  609,  122,   65,   65,   65,   65,
916        65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
917        65,   23,   23,   23,   23,   23,   23,   23,   23,   23,
918        23,   23,   23,   23,   23,   23,   73,   73,   73,   73,
919        73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
920        73,   80,   80,   80,   80,   80,   80,   80,   80,   80,
921        80,   80,   80,   80,   80,   80,   85,  609,  609,  609,
922        85,  609,   85,   85,   85,   85,  609,   85,   85,   85,
923
924        85,   89,   89,   89,   89,   89,   89,   89,   89,   89,
925        89,   89,   89,   89,   89,   89,   91,  609,  609,  609,
926        91,  609,   91,   91,   91,   91,  609,   91,   91,   91,
927        91,   93,  609,  609,  609,   93,  609,   93,   93,   93,
928        93,  609,   93,   93,   93,   93,   95,  609,  609,   95,
929        95,  609,   95,   95,   95,   95,  609,   95,   95,   95,
930        95,  105,  105,  105,  609,  609,  105,  121,  609,  609,
931       609,  121,  609,  121,  121,  121,  121,  609,  121,  121,
932       121,  121,  123,  123,  123,  123,  123,  123,  123,  123,
933       123,  123,  123,  123,  123,  123,  123,  125,  609,  609,
934
935       609,  125,  609,  125,  125,  125,  125,  609,  125,  125,
936       125,  125,  127,  609,  609,  609,  127,  609,  127,  127,
937       127,  127,  609,  127,  127,  127,  127,  129,  609,  609,
938       129,  129,  609,  129,  129,  129,  129,  609,  129,  129,
939       129,  129,  146,  609,  609,  146,  146,  146,  146,  146,
940       146,  146,  609,  146,  609,  146,  146,  153,  609,  609,
941       153,  153,  609,  153,  153,  153,  153,  153,  153,  153,
942       153,  153,  157,  157,  157,  157,  157,  157,  157,  157,
943       157,  157,  157,  157,  157,  157,  157,  159,  159,  609,
944       159,  609,  159,  159,  159,  159,  159,  159,  159,  159,
945
946       159,  159,   96,  609,  609,   96,   96,  609,   96,   96,
947        96,   96,  609,   96,   96,   96,   96,  171,  171,  171,
948       609,  609,  171,  173,  173,  173,  173,  609,  609,  173,
949       188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
950       188,  188,  188,  188,  188,  210,  210,  210,  609,  609,
951       210,  216,  216,  216,  216,  609,  609,  216,  251,  251,
952       251,  609,  609,  251,  252,  252,  252,  609,  609,  252,
953       256,  256,  256,  609,  609,  256,  258,  258,  258,  258,
954       609,  609,  258,  295,  295,  295,  609,  609,  295,  297,
955       297,  297,  609,  609,  297,  298,  298,  298,  609,  609,
956
957       298,  300,  300,  300,  300,  609,  609,  300,  304,  304,
958       304,  304,  304,  609,  609,  304,  339,  339,  339,  609,
959       609,  339,  340,  340,  340,  609,  609,  340,  341,  341,
960       341,  609,  609,  341,  353,  353,  353,  353,  609,  609,
961       353,  354,  354,  354,  354,  354,  609,  609,  354,  389,
962       389,  389,  609,  609,  389,  390,  390,  390,  609,  609,
963       390,  406,  406,  406,  406,  609,  609,  406,  407,  407,
964       407,  407,  407,  609,  609,  407,  436,  436,  436,  609,
965       609,  436,  440,  609,  440,  440,  440,  609,  609,  440,
966       458,  458,  458,  458,  609,  609,  458,  459,  459,  459,
967
968       459,  459,  609,  609,  459,  488,  488,  488,  609,  609,
969       488,  489,  609,  489,  489,  489,  609,  609,  489,  505,
970       505,  505,  505,  609,  609,  505,  506,  506,  506,  609,
971       506,  609,  609,  506,  524,  524,  524,  609,  609,  524,
972       525,  609,  525,  525,  525,  609,  609,  525,  541,  541,
973       609,  541,  609,  609,  541,  557,  557,  557,  609,  609,
974       557,  558,  609,  558,  558,  558,  609,  609,  558,  576,
975       576,  576,  609,  609,  576,  577,  609,  577,  609,  577,
976       609,  609,  577,  591,  609,  591,  609,  609,  591,   15,
977       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
978
979       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
980       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
981       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
982       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
983       609,  609,  609,  609,  609,  609,  609,  609,  609,  609
984     } ;
985
986 static yyconst short int yy_chk[3851] =
987     {   0,
988         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
989         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
990         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
991         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
992         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
993         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
994         2,    2,  322,    5,    2,   71,   71,    5,    2,    5,
995       322,    2,    3,    3,    3,    3,    3,    3,    3,    3,
996         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
997         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
998
999         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1000         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1001         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1002         3,    3,    6,    7,    7,    7,    6,    7,    6,   75,
1003         8,    8,    8,    7,    8,   40,   13,   13,   13,   13,
1004         8,   14,   14,   14,   14,    7,    7,   63,   75,   79,
1005        79,   40,    8,    8,   26,  106,  606,  115,   26,   26,
1006        77,  115,   81,   63,  106,    7,   29,   29,   29,   29,
1007        29,   29,    8,    9,    9,    9,   26,    9,   13,   77,
1008       186,  116,  186,   14,   28,   28,   28,   28,   28,   28,
1009
1010        28,   28,  116,   39,   26,   39,   39,   39,   39,   39,
1011        39,   39,   39,   47,   81,  173,   47,   47,   47,   47,
1012        47,   47,   47,   47,  173,    9,    9,    9,    9,    9,
1013         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
1014         9,    9,   10,   10,   10,  117,   10,   53,   53,   53,
1015        53,   53,   53,   53,   53,   54,   54,   54,   54,   54,
1016        54,   62,  118,   62,   62,   62,   62,   62,   62,   62,
1017        62,   84,   84,  144,   84,  110,  118,  144,   82,  183,
1018       110,  117,  110,  183,   10,   10,   10,   10,   10,   10,
1019        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
1020
1021        10,   11,   11,   11,   11,   11,  148,  148,  182,   51,
1022        11,   11,   11,   51,   51,   70,   70,   70,   82,   70,
1023       182,  120,  140,   70,   11,   70,  120,  140,   95,  140,
1024       119,   51,   95,   95,  151,  151,  603,   70,   70,  113,
1025       113,  119,  162,   11,   12,   12,   12,   12,   12,   51,
1026        95,  163,  163,   12,   12,   12,   86,   70,   86,  578,
1027        86,  335,   86,   86,  208,  208,   86,   12,   95,  335,
1028        98,   98,   98,   98,   98,   98,   98,   98,   86,   86,
1029        86,  113,  162,  143,  143,  161,   12,   27,  205,   27,
1030        27,   27,   27,   27,   27,   27,   27,   27,   98,  185,
1031
1032        27,   27,   27,   27,   27,  102,  102,  102,  102,  102,
1033       102,  102,  102,  187,  185,  209,  576,   27,  205,   27,
1034        27,   27,   27,   27,   32,  143,  187,  161,   32,  561,
1035        32,  231,  231,   32,   32,  209,   32,   32,   32,   32,
1036        32,   32,   32,   32,   32,   32,   32,   32,  238,  238,
1037        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1038        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1039        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1040        32,   32,   32,   32,   34,   34,   34,   34,   34,   34,
1041        34,   34,   34,  158,  158,   34,   34,   34,   34,   34,
1042
1043       103,  103,  103,  103,  103,  103,  103,  103,  104,  104,
1044       104,  104,  104,  104,   34,   34,   34,   34,   34,   38,
1045        38,   38,  202,   38,  278,   38,   38,  216,  278,   38,
1046       213,  213,  213,  129,  202,  158,  216,  129,  129,  279,
1047       224,   38,   38,   38,   52,  235,   52,   52,   52,   52,
1048        52,   52,   52,   52,   52,  129,  279,   52,   52,   52,
1049        52,   52,  224,  560,  131,  131,  131,  131,  131,  131,
1050       131,  131,  233,  129,   52,  235,   52,   52,   52,   52,
1051        52,   55,  558,  230,  241,   55,  233,   55,  230,  557,
1052        55,   55,  131,   55,   55,   55,   55,   55,   55,   55,
1053
1054        55,   55,   55,   55,   55,  555,  241,   55,   55,   55,
1055        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
1056        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
1057        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
1058        55,   57,   57,   57,   57,   57,   57,   57,   57,   57,
1059       385,  554,   57,   57,   57,   57,   57,  134,  134,  134,
1060       134,  134,  134,  134,  134,  136,  136,  136,  136,  136,
1061       136,   57,   57,   57,   57,   57,   61,   61,   61,  385,
1062        61,  258,   61,   61,  239,   92,   61,   92,  247,   92,
1063       258,   92,   92,  247,  280,   92,  260,  260,   61,   61,
1064
1065        61,  154,  553,  280,  239,  154,  260,   92,   92,   92,
1066        94,  154,   94,  324,   94,  541,   94,   94,  289,   97,
1067        94,   97,  289,   97,  154,   97,   97,  539,  324,   97,
1068       271,  317,   94,   94,   94,  168,  168,  168,  168,  168,
1069       168,   97,   97,   97,   99,   99,   99,   99,   99,   99,
1070        99,   99,  271,  317,  538,   99,   99,   99,   99,   99,
1071       135,  135,  135,  135,  135,  135,  135,  135,  192,  192,
1072       192,  192,  192,  192,   99,   99,   99,   99,   99,  107,
1073       107,  107,  107,  107,  107,  107,  107,  232,  262,  262,
1074       107,  107,  107,  107,  107,  122,  537,  122,  262,  122,
1075
1076       376,  122,  122,  525,  291,  122,  300,  232,  376,  107,
1077       107,  107,  107,  107,  377,  300,  304,  122,  122,  122,
1078       126,  524,  126,  232,  126,  304,  126,  126,  377,  128,
1079       126,  128,  326,  128,  291,  128,  128,  305,  305,  128,
1080       306,  306,  126,  126,  126,  165,  522,  305,  323,  165,
1081       306,  128,  128,  128,  130,  165,  130,  323,  130,  477,
1082       130,  130,  326,  521,  130,  308,  308,  165,  165,  220,
1083       220,  220,  220,  220,  220,  308,  130,  130,  130,  132,
1084       132,  132,  132,  132,  132,  132,  132,  388,  388,  477,
1085       132,  132,  132,  132,  132,  167,  167,  167,  167,  167,
1086
1087       167,  167,  167,  268,  268,  268,  268,  268,  268,  132,
1088       132,  132,  132,  132,  137,  137,  137,  137,  137,  137,
1089       137,  137,  422,  508,  422,  137,  137,  137,  137,  137,
1090       191,  191,  191,  191,  191,  191,  191,  191,  314,  314,
1091       314,  314,  314,  314,  137,  137,  137,  137,  137,  166,
1092       392,  166,  166,  166,  166,  166,  166,  166,  166,  320,
1093       392,  506,  204,  204,  204,  204,  204,  204,  204,  204,
1094       212,  212,  212,  212,  212,  212,  212,  212,  212,  166,
1095       169,  320,  169,  169,  169,  169,  169,  169,  169,  169,
1096       204,  428,  428,  169,  169,  169,  169,  169,  217,  217,
1097
1098       217,  217,  217,  217,  217,  217,  338,  338,  338,  338,
1099       338,  338,  169,  169,  169,  169,  169,  172,  172,  172,
1100       172,  172,  172,  172,  172,  172,  503,  375,  172,  172,
1101       172,  172,  172,  219,  219,  219,  219,  219,  219,  219,
1102       219,  321,  375,  435,  435,  435,  502,  172,  172,  172,
1103       172,  172,  174,  174,  174,  174,  174,  174,  174,  174,
1104       174,  174,  489,  321,  174,  174,  174,  174,  174,  222,
1105       353,  222,  222,  222,  222,  222,  222,  222,  222,  353,
1106       488,  383,  330,  174,  174,  174,  174,  174,  175,  175,
1107       175,  175,  175,  175,  175,  175,  383,  461,  461,  175,
1108
1109       175,  175,  175,  175,  330,  234,  234,  234,  234,  234,
1110       234,  234,  234,  333,  486,  354,  462,  462,  175,  175,
1111       175,  175,  175,  190,  354,  190,  190,  190,  190,  190,
1112       190,  190,  190,  234,  248,  333,  248,  248,  248,  248,
1113       248,  248,  248,  248,  253,  253,  253,  253,  253,  253,
1114       253,  253,  253,  190,  193,  394,  193,  193,  193,  193,
1115       193,  193,  193,  193,  406,  394,  485,  193,  193,  193,
1116       193,  193,  249,  406,  249,  249,  249,  249,  249,  249,
1117       249,  249,  475,  475,  475,  484,  193,  193,  193,  193,
1118       193,  195,  195,  195,  195,  195,  195,  195,  195,  407,
1119
1120       507,  507,  195,  195,  195,  195,  195,  250,  407,  250,
1121       250,  250,  250,  250,  250,  250,  250,  423,  649,  423,
1122       649,  195,  195,  195,  195,  195,  218,  218,  218,  218,
1123       218,  218,  218,  218,  218,  218,  218,  423,  456,  218,
1124       218,  218,  218,  218,  259,  259,  259,  259,  259,  259,
1125       259,  259,  334,  564,  564,  626,  626,  455,  218,  218,
1126       218,  218,  218,  221,  221,  221,  221,  221,  221,  221,
1127       221,  221,  221,  454,  334,  221,  221,  221,  221,  221,
1128       261,  261,  261,  261,  261,  261,  261,  261,  345,  345,
1129       345,  345,  345,  345,  221,  221,  221,  221,  221,  263,
1130
1131       263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
1132       671,  671,  263,  263,  263,  263,  263,  265,  265,  265,
1133       265,  265,  265,  265,  265,  367,  371,  265,  650,  440,
1134       650,  263,  263,  263,  263,  263,  266,  266,  266,  266,
1135       266,  266,  266,  266,  266,  266,  266,  367,  371,  266,
1136       266,  266,  266,  266,  267,  267,  267,  267,  267,  267,
1137       267,  267,  364,  364,  364,  364,  364,  364,  266,  266,
1138       266,  266,  266,  269,  269,  269,  269,  269,  269,  269,
1139       269,  269,  269,  672,  672,  269,  269,  269,  269,  269,
1140       270,  425,  270,  270,  270,  270,  270,  270,  270,  270,
1141
1142       355,  355,  438,  437,  269,  269,  269,  269,  269,  281,
1143       355,  281,  281,  281,  281,  281,  281,  281,  281,  282,
1144       425,  282,  282,  282,  282,  282,  282,  282,  282,  283,
1145       436,  283,  283,  283,  283,  283,  283,  283,  283,  290,
1146       290,  290,  290,  290,  290,  290,  290,  292,  441,  292,
1147       292,  292,  292,  292,  292,  292,  292,  293,  441,  293,
1148       293,  293,  293,  293,  293,  293,  293,  290,  294,  431,
1149       294,  294,  294,  294,  294,  294,  303,  421,  303,  303,
1150       303,  303,  303,  303,  303,  303,  307,  307,  307,  307,
1151       307,  307,  307,  307,  470,  404,  510,  548,  294,  299,
1152
1153       299,  299,  299,  299,  299,  299,  299,  299,  470,  403,
1154       299,  299,  299,  299,  299,  311,  311,  311,  311,  311,
1155       311,  311,  311,  373,  419,  311,  510,  548,  390,  299,
1156       299,  299,  299,  299,  309,  309,  309,  309,  309,  309,
1157       309,  309,  309,  309,  309,  373,  419,  309,  309,  309,
1158       309,  309,  313,  313,  313,  313,  313,  313,  313,  313,
1159       380,  380,  380,  380,  380,  380,  309,  309,  309,  309,
1160       309,  312,  312,  312,  312,  312,  312,  312,  312,  312,
1161       312,  312,  389,  382,  312,  312,  312,  312,  312,  316,
1162       442,  316,  316,  316,  316,  316,  316,  316,  316,  634,
1163
1164       442,  381,  634,  312,  312,  312,  312,  312,  315,  315,
1165       315,  315,  315,  315,  315,  315,  315,  315,  370,  369,
1166       315,  315,  315,  315,  315,  325,  325,  325,  325,  325,
1167       325,  325,  325,  351,  350,  356,  356,  349,  341,  315,
1168       315,  315,  315,  315,  329,  356,  329,  329,  329,  329,
1169       329,  329,  327,  325,  327,  327,  327,  327,  327,  327,
1170       327,  327,  328,  444,  328,  328,  328,  328,  328,  328,
1171       328,  328,  566,  444,  329,  336,  336,  336,  336,  336,
1172       336,  336,  336,  336,  337,  337,  337,  337,  337,  337,
1173       337,  337,  342,  342,  342,  342,  342,  342,  342,  342,
1174
1175       340,  659,  566,  659,  336,  343,  490,  343,  343,  343,
1176       343,  343,  343,  343,  343,  343,  490,  339,  343,  343,
1177       343,  343,  343,  344,  344,  344,  344,  344,  344,  344,
1178       344,  400,  400,  400,  400,  400,  400,  343,  343,  343,
1179       343,  343,  346,  346,  346,  346,  346,  346,  346,  346,
1180       346,  332,  331,  346,  346,  346,  346,  346,  347,  458,
1181       347,  347,  347,  347,  347,  347,  347,  347,  458,  660,
1182       319,  660,  346,  346,  346,  346,  346,  348,  348,  348,
1183       348,  348,  348,  348,  348,  352,  318,  352,  352,  352,
1184       352,  352,  352,  357,  357,  357,  357,  357,  357,  357,
1185
1186       357,  358,  358,  363,  363,  363,  363,  363,  363,  363,
1187       363,  358,  359,  359,  359,  359,  359,  359,  359,  359,
1188       359,  359,  359,  302,  301,  359,  359,  359,  359,  359,
1189       361,  361,  361,  361,  361,  361,  361,  361,  420,  429,
1190       361,  663,  298,  663,  359,  359,  359,  359,  359,  362,
1191       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1192       420,  429,  362,  362,  362,  362,  362,  366,  459,  366,
1193       366,  366,  366,  366,  366,  366,  366,  459,  664,  297,
1194       664,  362,  362,  362,  362,  362,  365,  365,  365,  365,
1195       365,  365,  365,  365,  365,  674,  296,  674,  365,  365,
1196
1197       365,  365,  365,  379,  379,  379,  379,  379,  379,  379,
1198       379,  417,  417,  417,  417,  417,  417,  365,  365,  365,
1199       365,  365,  378,  378,  378,  378,  378,  378,  378,  378,
1200       378,  384,  384,  384,  384,  384,  384,  384,  384,  391,
1201       391,  391,  391,  391,  391,  391,  391,  408,  408,  295,
1202       675,  378,  675,  288,  287,  286,  285,  408,  430,  384,
1203       393,  393,  393,  393,  393,  393,  393,  393,  395,  466,
1204       395,  395,  395,  395,  395,  395,  395,  395,  395,  397,
1205       430,  397,  397,  397,  397,  397,  397,  284,  277,  397,
1206       398,  466,  398,  398,  398,  398,  398,  398,  398,  398,
1207
1208       398,  276,  275,  398,  398,  398,  398,  398,  399,  399,
1209       399,  399,  399,  399,  399,  399,  450,  450,  450,  450,
1210       450,  450,  398,  398,  398,  398,  398,  401,  401,  401,
1211       401,  401,  401,  401,  401,  401,  274,  273,  401,  401,
1212       401,  401,  401,  402,  257,  402,  402,  402,  402,  402,
1213       402,  402,  402,  409,  409,  256,  255,  401,  401,  401,
1214       401,  401,  405,  409,  405,  405,  405,  405,  405,  405,
1215       405,  405,  410,  410,  410,  410,  410,  410,  410,  410,
1216       411,  411,  416,  416,  416,  416,  416,  416,  416,  416,
1217       411,  412,  412,  412,  412,  412,  412,  412,  412,  412,
1218
1219       412,  412,  254,  252,  412,  412,  412,  412,  412,  414,
1220       414,  414,  414,  414,  414,  414,  414,  468,  251,  414,
1221       246,  245,  244,  412,  412,  412,  412,  412,  415,  415,
1222       415,  415,  415,  415,  415,  415,  415,  415,  243,  468,
1223       242,  415,  415,  415,  415,  415,  418,  491,  418,  418,
1224       418,  418,  418,  418,  418,  418,  240,  491,  229,  583,
1225       415,  415,  415,  415,  415,  424,  424,  424,  424,  424,
1226       424,  424,  424,  433,  433,  433,  433,  433,  433,  433,
1227       433,  434,  434,  434,  434,  434,  434,  434,  434,  583,
1228       228,  227,  593,  424,  432,  493,  432,  432,  432,  432,
1229
1230       432,  432,  432,  432,  439,  493,  439,  439,  439,  439,
1231       439,  439,  439,  439,  443,  443,  443,  443,  443,  443,
1232       443,  443,  593,  226,  432,  445,  225,  445,  445,  445,
1233       445,  445,  445,  445,  445,  445,  447,  223,  447,  447,
1234       447,  447,  447,  447,  215,  214,  447,  448,  526,  448,
1235       448,  448,  448,  448,  448,  448,  448,  448,  526,  211,
1236       448,  448,  448,  448,  448,  449,  449,  449,  449,  449,
1237       449,  449,  449,  499,  499,  499,  499,  499,  499,  448,
1238       448,  448,  448,  448,  451,  451,  451,  451,  451,  451,
1239       451,  451,  451,  210,  203,  451,  451,  451,  451,  451,
1240
1241       452,  505,  452,  452,  452,  452,  452,  452,  452,  452,
1242       505,  201,  200,  199,  451,  451,  451,  451,  451,  453,
1243       453,  453,  453,  453,  453,  453,  453,  457,  198,  457,
1244       457,  457,  457,  457,  457,  460,  460,  465,  465,  465,
1245       465,  465,  465,  465,  465,  460,  463,  463,  463,  463,
1246       463,  463,  463,  463,  463,  463,  472,  197,  472,  472,
1247       472,  472,  472,  472,  472,  472,  473,  473,  473,  473,
1248       473,  473,  473,  473,  474,  474,  474,  474,  474,  474,
1249       474,  474,  196,  520,  520,  520,  472,  476,  476,  476,
1250       476,  476,  476,  476,  476,  478,  478,  478,  478,  478,
1251
1252       478,  478,  478,  479,  479,  479,  479,  479,  479,  479,
1253       479,  520,  194,  188,  184,  476,  480,  480,  480,  480,
1254       480,  480,  480,  480,  481,  481,  481,  481,  481,  481,
1255       481,  481,  482,  181,  482,  482,  482,  483,  483,  483,
1256       483,  483,  483,  483,  483,  487,  180,  487,  487,  487,
1257       487,  487,  487,  492,  492,  492,  492,  492,  492,  492,
1258       492,  179,  482,  494,  178,  494,  494,  494,  494,  494,
1259       494,  494,  494,  494,  496,  177,  496,  496,  496,  496,
1260       496,  496,  176,  171,  496,  497,  527,  497,  497,  497,
1261       497,  497,  497,  497,  497,  497,  527,  170,  497,  497,
1262
1263       497,  497,  497,  498,  498,  498,  498,  498,  498,  498,
1264       498,  535,  535,  535,  535,  535,  535,  497,  497,  497,
1265       497,  497,  500,  500,  500,  500,  500,  500,  500,  500,
1266       164,  160,  159,  500,  500,  500,  500,  500,  501,  529,
1267       501,  501,  501,  501,  501,  501,  501,  501,  157,  529,
1268       153,  147,  500,  500,  500,  500,  500,  504,  504,  504,
1269       504,  504,  504,  504,  504,  504,  509,  145,  509,  509,
1270       509,  509,  509,  509,  509,  509,  511,  511,  511,  511,
1271       511,  511,  511,  511,  512,  512,  512,  512,  512,  512,
1272       512,  512,  513,  513,  513,  513,  513,  513,  513,  513,
1273
1274       514,  514,  514,  514,  514,  514,  514,  514,  515,  142,
1275       515,  515,  515,  516,  559,  516,  516,  516,  516,  516,
1276       516,  516,  516,  517,  559,  517,  517,  517,  517,  517,
1277       517,  517,  517,  141,  139,  133,  127,  518,  515,  518,
1278       518,  518,  518,  518,  518,  518,  518,  519,  125,  519,
1279       519,  519,  519,  519,  519,  519,  519,  523,  123,  523,
1280       523,  523,  523,  523,  523,  523,  523,  528,  528,  528,
1281       528,  528,  528,  528,  528,  530,  121,  530,  530,  530,
1282       530,  530,  530,  530,  530,  530,  532,  112,  532,  532,
1283       532,  532,  532,  532,  111,  109,  532,  533,  105,  533,
1284
1285       533,  533,  533,  533,  533,  533,  533,  546,  546,  546,
1286       533,  533,  533,  533,  533,  534,  534,  534,  534,  534,
1287       534,  534,  534,  590,  590,  590,  590,  590,  590,  533,
1288       533,  533,  533,  533,  536,  546,  536,  536,  536,  536,
1289       536,  536,  536,  536,  540,  540,  540,  540,  540,  540,
1290       540,  542,  101,  542,  542,  542,  542,  542,  542,  542,
1291       542,  543,  100,  543,  543,  543,  543,  543,  543,  543,
1292       543,  544,   96,  544,  544,  544,  544,  544,  544,  544,
1293       544,  545,   93,  545,  545,  545,  545,  545,  545,  545,
1294       545,  547,  547,  547,  547,  547,  547,  547,  547,  549,
1295
1296        91,  549,  549,  549,  549,  549,  549,  549,  549,  550,
1297        89,  550,  550,  550,  550,  550,  550,  550,  550,  547,
1298       551,   88,  551,  551,  551,  551,  551,  551,  552,  552,
1299       552,  552,  552,  552,  552,  552,  556,   87,  556,  556,
1300       556,  556,  556,  556,   85,   80,   73,   67,   64,  562,
1301       551,  562,  562,  562,  562,  562,  562,  562,  562,  565,
1302       565,  565,  565,  565,  565,  565,  565,  567,   60,  567,
1303       567,  567,  567,  567,  567,  567,  567,  568,   59,  568,
1304       568,  568,  568,  568,  568,  568,  568,  565,  569,   58,
1305       569,  569,  569,  569,  569,  569,  570,   56,  570,  570,
1306
1307       570,  570,  570,  570,  570,  570,  571,   50,  571,  571,
1308       571,  571,  571,  571,  571,  571,   48,  572,  569,  572,
1309       572,  572,  572,  572,  572,  572,  572,  573,  573,  573,
1310       573,  573,  573,  573,  573,  574,  574,  574,  574,  574,
1311       574,  574,  574,  575,  575,  575,  575,  575,  575,  575,
1312       575,  579,   46,  579,  579,  579,  579,  579,  579,  579,
1313       579,  580,   45,  580,  580,  580,  580,  580,  580,  580,
1314       580,  581,   44,  581,  581,  581,  581,  581,  581,  581,
1315       581,  582,   43,  582,  582,  582,  582,  582,  582,  582,
1316       582,  584,   42,  584,  584,  584,  584,  584,  584,  584,
1317
1318       584,  585,   41,  585,  585,  585,  585,  585,  585,  585,
1319       585,  586,   37,  586,  586,  586,  586,  586,  586,  588,
1320       588,  588,  588,  588,  588,  588,  588,  589,  589,  589,
1321       589,  589,  589,  589,  589,   36,   35,   33,   30,   24,
1322       592,  586,  592,  592,  592,  592,  592,  592,  592,  592,
1323       594,   21,  594,  594,  594,  594,  594,  594,  594,  594,
1324       595,   20,  595,  595,  595,  595,  595,  595,  595,  595,
1325       596,   19,  596,  596,  596,  596,  596,  596,  597,  597,
1326       597,  597,  597,  597,  597,  597,  598,  598,  598,  598,
1327       598,  598,  598,  598,   17,   16,   15,    0,    0,    0,
1328
1329       596,    0,    0,    0,    0,    0,  597,    0,    0,    0,
1330         0,    0,    0,    0,  598,  599,  599,  599,  599,  599,
1331       599,  599,  599,  600,  600,  600,  600,  600,  600,  600,
1332       600,  601,  601,  601,  601,  601,  601,  601,  601,    0,
1333         0,    0,    0,  599,    0,    0,    0,    0,    0,    0,
1334         0,  600,  605,  605,  605,  605,  605,  605,    0,  601,
1335       602,  602,  602,  602,  602,  602,  602,  602,  604,  604,
1336       604,  604,  604,  604,  604,  604,    0,    0,    0,    0,
1337       605,  608,  608,  608,  608,  608,  608,    0,  602,    0,
1338         0,    0,    0,    0,    0,    0,  604,  607,  607,  607,
1339
1340       607,  607,  607,  607,  607,    0,    0,    0,    0,  608,
1341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1342         0,    0,    0,    0,    0,  607,  610,  610,  610,  610,
1343       610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
1344       610,  611,  611,  611,  611,  611,  611,  611,  611,  611,
1345       611,  611,  611,  611,  611,  611,  612,  612,  612,  612,
1346       612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
1347       612,  613,  613,  613,  613,  613,  613,  613,  613,  613,
1348       613,  613,  613,  613,  613,  613,  614,    0,    0,    0,
1349       614,    0,  614,  614,  614,  614,    0,  614,  614,  614,
1350
1351       614,  615,  615,  615,  615,  615,  615,  615,  615,  615,
1352       615,  615,  615,  615,  615,  615,  616,    0,    0,    0,
1353       616,    0,  616,  616,  616,  616,    0,  616,  616,  616,
1354       616,  617,    0,    0,    0,  617,    0,  617,  617,  617,
1355       617,    0,  617,  617,  617,  617,  618,    0,    0,  618,
1356       618,    0,  618,  618,  618,  618,    0,  618,  618,  618,
1357       618,  619,  619,  619,    0,    0,  619,  620,    0,    0,
1358         0,  620,    0,  620,  620,  620,  620,    0,  620,  620,
1359       620,  620,  621,  621,  621,  621,  621,  621,  621,  621,
1360       621,  621,  621,  621,  621,  621,  621,  622,    0,    0,
1361
1362         0,  622,    0,  622,  622,  622,  622,    0,  622,  622,
1363       622,  622,  623,    0,    0,    0,  623,    0,  623,  623,
1364       623,  623,    0,  623,  623,  623,  623,  624,    0,    0,
1365       624,  624,    0,  624,  624,  624,  624,    0,  624,  624,
1366       624,  624,  625,    0,    0,  625,  625,  625,  625,  625,
1367       625,  625,    0,  625,    0,  625,  625,  627,    0,    0,
1368       627,  627,    0,  627,  627,  627,  627,  627,  627,  627,
1369       627,  627,  628,  628,  628,  628,  628,  628,  628,  628,
1370       628,  628,  628,  628,  628,  628,  628,  629,  629,    0,
1371       629,    0,  629,  629,  629,  629,  629,  629,  629,  629,
1372
1373       629,  629,  630,    0,    0,  630,  630,    0,  630,  630,
1374       630,  630,    0,  630,  630,  630,  630,  631,  631,  631,
1375         0,    0,  631,  632,  632,  632,  632,    0,    0,  632,
1376       633,  633,  633,  633,  633,  633,  633,  633,  633,  633,
1377       633,  633,  633,  633,  633,  635,  635,  635,    0,    0,
1378       635,  636,  636,  636,  636,    0,    0,  636,  637,  637,
1379       637,    0,    0,  637,  638,  638,  638,    0,    0,  638,
1380       639,  639,  639,    0,    0,  639,  640,  640,  640,  640,
1381         0,    0,  640,  641,  641,  641,    0,    0,  641,  642,
1382       642,  642,    0,    0,  642,  643,  643,  643,    0,    0,
1383
1384       643,  644,  644,  644,  644,    0,    0,  644,  645,  645,
1385       645,  645,  645,    0,    0,  645,  646,  646,  646,    0,
1386         0,  646,  647,  647,  647,    0,    0,  647,  648,  648,
1387       648,    0,    0,  648,  651,  651,  651,  651,    0,    0,
1388       651,  652,  652,  652,  652,  652,    0,    0,  652,  653,
1389       653,  653,    0,    0,  653,  654,  654,  654,    0,    0,
1390       654,  655,  655,  655,  655,    0,    0,  655,  656,  656,
1391       656,  656,  656,    0,    0,  656,  657,  657,  657,    0,
1392         0,  657,  658,    0,  658,  658,  658,    0,    0,  658,
1393       661,  661,  661,  661,    0,    0,  661,  662,  662,  662,
1394
1395       662,  662,    0,    0,  662,  665,  665,  665,    0,    0,
1396       665,  666,    0,  666,  666,  666,    0,    0,  666,  667,
1397       667,  667,  667,    0,    0,  667,  668,  668,  668,    0,
1398       668,    0,    0,  668,  669,  669,  669,    0,    0,  669,
1399       670,    0,  670,  670,  670,    0,    0,  670,  673,  673,
1400         0,  673,    0,    0,  673,  676,  676,  676,    0,    0,
1401       676,  677,    0,  677,  677,  677,    0,    0,  677,  678,
1402       678,  678,    0,    0,  678,  679,    0,  679,    0,  679,
1403         0,    0,  679,  680,    0,  680,    0,    0,  680,  609,
1404       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1405
1406       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1407       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1408       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1409       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1410       609,  609,  609,  609,  609,  609,  609,  609,  609,  609
1411     } ;
1412
1413 static yy_state_type yy_last_accepting_state;
1414 static char *yy_last_accepting_cpos;
1415
1416 /* The intent behind this definition is that it'll catch
1417  * any uses of REJECT which flex missed.
1418  */
1419 #define REJECT reject_used_but_not_detected
1420 #define yymore() yymore_used_but_not_detected
1421 #define YY_MORE_ADJ 0
1422 #define YY_RESTORE_YY_MORE_OFFSET
1423 char *yytext;
1424 #line 1 "parse.lex"
1425 #define INITIAL 0
1426 #line 2 "parse.lex"
1427 /*
1428  * Copyright (c) 1996, 1998-2004, 2007
1429  *      Todd C. Miller <Todd.Miller@courtesan.com>
1430  *
1431  * Permission to use, copy, modify, and distribute this software for any
1432  * purpose with or without fee is hereby granted, provided that the above
1433  * copyright notice and this permission notice appear in all copies.
1434  *
1435  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1436  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1437  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1438  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1439  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1440  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1441  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1442  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1443  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
1444  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1445  *
1446  * Sponsored in part by the Defense Advanced Research Projects
1447  * Agency (DARPA) and Air Force Research Laboratory, Air Force
1448  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
1449  */
1450
1451 #include <config.h>
1452
1453 #include <sys/types.h>
1454 #include <sys/param.h>
1455 #include <stdio.h>
1456 #ifdef STDC_HEADERS
1457 # include <stdlib.h>
1458 # include <stddef.h>
1459 #else
1460 # ifdef HAVE_STDLIB_H
1461 #  include <stdlib.h>
1462 # endif
1463 #endif /* STDC_HEADERS */
1464 #ifdef HAVE_STRING_H
1465 # include <string.h>
1466 #else
1467 # ifdef HAVE_STRINGS_H
1468 #  include <strings.h>
1469 # endif
1470 #endif /* HAVE_STRING_H */
1471 #ifdef HAVE_UNISTD_H
1472 # include <unistd.h>
1473 #endif /* HAVE_UNISTD_H */
1474 #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS)
1475 # include <malloc.h>
1476 #endif /* HAVE_MALLOC_H && !STDC_HEADERS */
1477 #include <ctype.h>
1478 #include "sudo.h"
1479 #include "parse.h"
1480 #include <sudo.tab.h>
1481
1482 #ifndef lint
1483 __unused static const char rcsid[] = "$Sudo: lex.yy.c,v 1.46.2.11 2008/06/26 11:53:49 millert Exp $";
1484 #endif /* lint */
1485
1486 #undef yywrap           /* guard against a yywrap macro */
1487
1488 extern YYSTYPE yylval;
1489 extern int clearaliases;
1490 int sudolineno = 1;
1491 static int sawspace = 0;
1492 static int arg_len = 0;
1493 static int arg_size = 0;
1494
1495 static int ipv6_valid           __P((const char *s));
1496 static void _fill               __P((char *, int, int));
1497 static void append              __P((char *, int));
1498 static void fill_cmnd           __P((char *, int));
1499 static void fill_args           __P((char *, int, int));
1500 extern void reset_aliases       __P((void));
1501 extern void yyerror             __P((char *));
1502
1503 #define fill(a, b)              _fill(a, b, 0)
1504
1505 /* realloc() to size + COMMANDARGINC to make room for command args */
1506 #define COMMANDARGINC   64
1507
1508 #ifdef TRACELEXER
1509 #define LEXTRACE(msg)   fputs(msg, stderr)
1510 #else
1511 #define LEXTRACE(msg)
1512 #endif
1513 /* XXX - convert GOTRUNAS to exclusive state (GOTDEFS cannot be) */
1514 #define GOTRUNAS 1
1515
1516 #define GOTDEFS 2
1517
1518 #define GOTCMND 3
1519
1520 #define STARTDEFS 4
1521
1522 #define INDEFS 5
1523
1524 #define INSTR 6
1525
1526 #line 1527 "lex.yy.c"
1527
1528 /* Macros after this point can all be overridden by user definitions in
1529  * section 1.
1530  */
1531
1532 #ifndef YY_SKIP_YYWRAP
1533 #ifdef __cplusplus
1534 extern "C" int yywrap YY_PROTO(( void ));
1535 #else
1536 extern int yywrap YY_PROTO(( void ));
1537 #endif
1538 #endif
1539
1540 #ifndef YY_NO_UNPUT
1541 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1542 #endif
1543
1544 #ifndef yytext_ptr
1545 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1546 #endif
1547
1548 #ifdef YY_NEED_STRLEN
1549 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1550 #endif
1551
1552 #ifndef YY_NO_INPUT
1553 #ifdef __cplusplus
1554 static int yyinput YY_PROTO(( void ));
1555 #else
1556 static int input YY_PROTO(( void ));
1557 #endif
1558 #endif
1559
1560 #if defined(YY_STACK_USED) && YY_STACK_USED
1561 static int yy_start_stack_ptr = 0;
1562 static int yy_start_stack_depth = 0;
1563 static int *yy_start_stack = 0;
1564 #ifndef YY_NO_PUSH_STATE
1565 static void yy_push_state YY_PROTO(( int new_state ));
1566 #endif
1567 #ifndef YY_NO_POP_STATE
1568 static void yy_pop_state YY_PROTO(( void ));
1569 #endif
1570 #ifndef YY_NO_TOP_STATE
1571 static int yy_top_state YY_PROTO(( void ));
1572 #endif
1573
1574 #else
1575 #define YY_NO_PUSH_STATE 1
1576 #define YY_NO_POP_STATE 1
1577 #define YY_NO_TOP_STATE 1
1578 #endif
1579
1580 #ifdef YY_MALLOC_DECL
1581 YY_MALLOC_DECL
1582 #else
1583 #ifdef __STDC__
1584 #ifndef __cplusplus
1585 #include <stdlib.h>
1586 #endif
1587 #else
1588 /* Just try to get by without declaring the routines.  This will fail
1589  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1590  * or sizeof(void*) != sizeof(int).
1591  */
1592 #endif
1593 #endif
1594
1595 /* Amount of stuff to slurp up with each read. */
1596 #ifndef YY_READ_BUF_SIZE
1597 #define YY_READ_BUF_SIZE 8192
1598 #endif
1599
1600 /* Copy whatever the last rule matched to the standard output. */
1601
1602 #ifndef ECHO
1603 /* This used to be an fputs(), but since the string might contain NUL's,
1604  * we now use fwrite().
1605  */
1606 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1607 #endif
1608
1609 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1610  * is returned in "result".
1611  */
1612 #ifndef YY_INPUT
1613 #define YY_INPUT(buf,result,max_size) \
1614         if ( yy_current_buffer->yy_is_interactive ) \
1615                 { \
1616                 int c = '*', n; \
1617                 for ( n = 0; n < max_size && \
1618                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1619                         buf[n] = (char) c; \
1620                 if ( c == '\n' ) \
1621                         buf[n++] = (char) c; \
1622                 if ( c == EOF && ferror( yyin ) ) \
1623                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1624                 result = n; \
1625                 } \
1626         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1627                   && ferror( yyin ) ) \
1628                 YY_FATAL_ERROR( "input in flex scanner failed" );
1629 #endif
1630
1631 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1632  * we don't want an extra ';' after the "return" because that will cause
1633  * some compilers to complain about unreachable statements.
1634  */
1635 #ifndef yyterminate
1636 #define yyterminate() return YY_NULL
1637 #endif
1638
1639 /* Number of entries by which start-condition stack grows. */
1640 #ifndef YY_START_STACK_INCR
1641 #define YY_START_STACK_INCR 25
1642 #endif
1643
1644 /* Report a fatal error. */
1645 #ifndef YY_FATAL_ERROR
1646 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1647 #endif
1648
1649 /* Default declaration of generated scanner - a define so the user can
1650  * easily add parameters.
1651  */
1652 #ifndef YY_DECL
1653 #define YY_DECL int yylex YY_PROTO(( void ))
1654 #endif
1655
1656 /* Code executed at the beginning of each rule, after yytext and yyleng
1657  * have been set up.
1658  */
1659 #ifndef YY_USER_ACTION
1660 #define YY_USER_ACTION
1661 #endif
1662
1663 /* Code executed at the end of each rule. */
1664 #ifndef YY_BREAK
1665 #define YY_BREAK break;
1666 #endif
1667
1668 #define YY_RULE_SETUP \
1669         if ( yyleng > 0 ) \
1670                 yy_current_buffer->yy_at_bol = \
1671                                 (yytext[yyleng - 1] == '\n'); \
1672         YY_USER_ACTION
1673
1674 YY_DECL
1675         {
1676         register yy_state_type yy_current_state;
1677         register char *yy_cp, *yy_bp;
1678         register int yy_act;
1679
1680 #line 108 "parse.lex"
1681
1682 #line 1683 "lex.yy.c"
1683
1684         if ( yy_init )
1685                 {
1686                 yy_init = 0;
1687
1688 #ifdef YY_USER_INIT
1689                 YY_USER_INIT;
1690 #endif
1691
1692                 if ( ! yy_start )
1693                         yy_start = 1;   /* first start state */
1694
1695                 if ( ! yyin )
1696                         yyin = stdin;
1697
1698                 if ( ! yyout )
1699                         yyout = stdout;
1700
1701                 if ( ! yy_current_buffer )
1702                         yy_current_buffer =
1703                                 yy_create_buffer( yyin, YY_BUF_SIZE );
1704
1705                 yy_load_buffer_state();
1706                 }
1707
1708         while ( 1 )             /* loops until end-of-file is reached */
1709                 {
1710                 yy_cp = yy_c_buf_p;
1711
1712                 /* Support of yytext. */
1713                 *yy_cp = yy_hold_char;
1714
1715                 /* yy_bp points to the position in yy_ch_buf of the start of
1716                  * the current run.
1717                  */
1718                 yy_bp = yy_cp;
1719
1720                 yy_current_state = yy_start;
1721                 yy_current_state += YY_AT_BOL();
1722 yy_match:
1723                 do
1724                         {
1725                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1726                         if ( yy_accept[yy_current_state] )
1727                                 {
1728                                 yy_last_accepting_state = yy_current_state;
1729                                 yy_last_accepting_cpos = yy_cp;
1730                                 }
1731                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1732                                 {
1733                                 yy_current_state = (int) yy_def[yy_current_state];
1734                                 if ( yy_current_state >= 610 )
1735                                         yy_c = yy_meta[(unsigned int) yy_c];
1736                                 }
1737                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1738                         ++yy_cp;
1739                         }
1740                 while ( yy_base[yy_current_state] != 3790 );
1741
1742 yy_find_action:
1743                 yy_act = yy_accept[yy_current_state];
1744                 if ( yy_act == 0 )
1745                         { /* have to back up */
1746                         yy_cp = yy_last_accepting_cpos;
1747                         yy_current_state = yy_last_accepting_state;
1748                         yy_act = yy_accept[yy_current_state];
1749                         }
1750
1751                 YY_DO_BEFORE_ACTION;
1752
1753
1754 do_action:      /* This label is used only to access EOF actions. */
1755
1756
1757                 switch ( yy_act )
1758         { /* beginning of action switch */
1759                         case 0: /* must back up */
1760                         /* undo the effects of YY_DO_BEFORE_ACTION */
1761                         *yy_cp = yy_hold_char;
1762                         yy_cp = yy_last_accepting_cpos;
1763                         yy_current_state = yy_last_accepting_state;
1764                         goto yy_find_action;
1765
1766 case 1:
1767 YY_RULE_SETUP
1768 #line 109 "parse.lex"
1769 BEGIN STARTDEFS;
1770         YY_BREAK
1771 case 2:
1772 YY_RULE_SETUP
1773 #line 111 "parse.lex"
1774 {
1775                             BEGIN INDEFS;
1776                             LEXTRACE("DEFVAR ");
1777                             fill(yytext, yyleng);
1778                             return(DEFVAR);
1779                         }
1780         YY_BREAK
1781
1782 case 3:
1783 YY_RULE_SETUP
1784 #line 119 "parse.lex"
1785 {
1786                             BEGIN STARTDEFS;
1787                             LEXTRACE(", ");
1788                             return(',');
1789                         }                       /* return ',' */
1790         YY_BREAK
1791 case 4:
1792 YY_RULE_SETUP
1793 #line 125 "parse.lex"
1794 {
1795                             LEXTRACE("= ");
1796                             return('=');
1797                         }                       /* return '=' */
1798         YY_BREAK
1799 case 5:
1800 YY_RULE_SETUP
1801 #line 130 "parse.lex"
1802 {
1803                             LEXTRACE("+= ");
1804                             return('+');
1805                         }                       /* return '+' */
1806         YY_BREAK
1807 case 6:
1808 YY_RULE_SETUP
1809 #line 135 "parse.lex"
1810 {
1811                             LEXTRACE("-= ");
1812                             return('-');
1813                         }                       /* return '-' */
1814         YY_BREAK
1815 case 7:
1816 YY_RULE_SETUP
1817 #line 140 "parse.lex"
1818 {
1819                             LEXTRACE("BEGINSTR ");
1820                             yylval.string = NULL;
1821                             BEGIN INSTR;
1822                         }
1823         YY_BREAK
1824 case 8:
1825 YY_RULE_SETUP
1826 #line 146 "parse.lex"
1827 {
1828                             LEXTRACE("WORD(2) ");
1829                             fill(yytext, yyleng);
1830                             return(WORD);
1831                         }
1832         YY_BREAK
1833
1834
1835 case 9:
1836 YY_RULE_SETUP
1837 #line 154 "parse.lex"
1838 {
1839                             /* Line continuation char followed by newline. */
1840                             ++sudolineno;
1841                             LEXTRACE("\n");
1842                         }
1843         YY_BREAK
1844 case 10:
1845 YY_RULE_SETUP
1846 #line 160 "parse.lex"
1847 {
1848                             LEXTRACE("ENDSTR ");
1849                             BEGIN INDEFS;
1850                             return(WORD);
1851                         }
1852         YY_BREAK
1853 case 11:
1854 YY_RULE_SETUP
1855 #line 166 "parse.lex"
1856 {
1857                             LEXTRACE("BACKSLASH ");
1858                             append(yytext, yyleng);
1859                         }
1860         YY_BREAK
1861 case 12:
1862 YY_RULE_SETUP
1863 #line 171 "parse.lex"
1864 {
1865                             LEXTRACE("STRBODY ");
1866                             append(yytext, yyleng);
1867                         }
1868         YY_BREAK
1869
1870
1871 case 13:
1872 YY_RULE_SETUP
1873 #line 178 "parse.lex"
1874 {
1875                             /* quoted fnmatch glob char, pass verbatim */
1876                             LEXTRACE("QUOTEDCHAR ");
1877                             fill_args(yytext, 2, sawspace);
1878                             sawspace = FALSE;
1879                         }
1880         YY_BREAK
1881 case 14:
1882 YY_RULE_SETUP
1883 #line 185 "parse.lex"
1884 {
1885                             /* quoted sudoers special char, strip backslash */
1886                             LEXTRACE("QUOTEDCHAR ");
1887                             fill_args(yytext + 1, 1, sawspace);
1888                             sawspace = FALSE;
1889                         }
1890         YY_BREAK
1891 case 15:
1892 YY_RULE_SETUP
1893 #line 192 "parse.lex"
1894 {
1895                             BEGIN INITIAL;
1896                             unput(*yytext);
1897                             return(COMMAND);
1898                         }                       /* end of command line args */
1899         YY_BREAK
1900 case 16:
1901 YY_RULE_SETUP
1902 #line 198 "parse.lex"
1903 {
1904                             LEXTRACE("ARG ");
1905                             fill_args(yytext, yyleng, sawspace);
1906                             sawspace = FALSE;
1907                         }                       /* a command line arg */
1908         YY_BREAK
1909
1910 case 17:
1911 YY_RULE_SETUP
1912 #line 205 "parse.lex"
1913 {
1914                             BEGIN GOTDEFS;
1915                             switch (yytext[8]) {
1916                                 case ':':
1917                                     LEXTRACE("DEFAULTS_USER ");
1918                                     return(DEFAULTS_USER);
1919                                 case '>':
1920                                     LEXTRACE("DEFAULTS_RUNAS ");
1921                                     return(DEFAULTS_RUNAS);
1922                                 case '@':
1923                                     LEXTRACE("DEFAULTS_HOST ");
1924                                     return(DEFAULTS_HOST);
1925                                 default:
1926                                     LEXTRACE("DEFAULTS ");
1927                                     return(DEFAULTS);
1928                             }
1929                         }
1930         YY_BREAK
1931 case 18:
1932 YY_RULE_SETUP
1933 #line 223 "parse.lex"
1934 {
1935                             fill(yytext, yyleng);
1936                             switch (*yytext) {
1937                                 case 'H':
1938                                     LEXTRACE("HOSTALIAS ");
1939                                     return(HOSTALIAS);
1940                                 case 'C':
1941                                     LEXTRACE("CMNDALIAS ");
1942                                     return(CMNDALIAS);
1943                                 case 'U':
1944                                     LEXTRACE("USERALIAS ");
1945                                     return(USERALIAS);
1946                                 case 'R':
1947                                     LEXTRACE("RUNASALIAS ");
1948                                     BEGIN GOTRUNAS;
1949                                     return(RUNASALIAS);
1950                             }
1951                         }
1952         YY_BREAK
1953 case 19:
1954 YY_RULE_SETUP
1955 #line 242 "parse.lex"
1956 {
1957                                 /* cmnd does not require passwd for this user */
1958                                 LEXTRACE("NOPASSWD ");
1959                                 return(NOPASSWD);
1960                         }
1961         YY_BREAK
1962 case 20:
1963 YY_RULE_SETUP
1964 #line 248 "parse.lex"
1965 {
1966                                 /* cmnd requires passwd for this user */
1967                                 LEXTRACE("PASSWD ");
1968                                 return(PASSWD);
1969                         }
1970         YY_BREAK
1971 case 21:
1972 YY_RULE_SETUP
1973 #line 254 "parse.lex"
1974 {
1975                                 LEXTRACE("NOEXEC ");
1976                                 return(NOEXEC);
1977                         }
1978         YY_BREAK
1979 case 22:
1980 YY_RULE_SETUP
1981 #line 259 "parse.lex"
1982 {
1983                                 LEXTRACE("EXEC ");
1984                                 return(EXEC);
1985                         }
1986         YY_BREAK
1987 case 23:
1988 YY_RULE_SETUP
1989 #line 264 "parse.lex"
1990 {
1991                                 LEXTRACE("SETENV ");
1992                                 return(SETENV);
1993                         }
1994         YY_BREAK
1995 case 24:
1996 YY_RULE_SETUP
1997 #line 269 "parse.lex"
1998 {
1999                                 LEXTRACE("NOSETENV ");
2000                                 return(NOSETENV);
2001                         }
2002         YY_BREAK
2003 case 25:
2004 YY_RULE_SETUP
2005 #line 274 "parse.lex"
2006 {
2007                             /* netgroup */
2008                             fill(yytext, yyleng);
2009                             LEXTRACE("NETGROUP ");
2010                             return(NETGROUP);
2011                         }
2012         YY_BREAK
2013 case 26:
2014 YY_RULE_SETUP
2015 #line 281 "parse.lex"
2016 {
2017                             /* UN*X group */
2018                             fill(yytext, yyleng);
2019                             LEXTRACE("GROUP ");
2020                             return(USERGROUP);
2021                         }
2022         YY_BREAK
2023 case 27:
2024 YY_RULE_SETUP
2025 #line 288 "parse.lex"
2026 {
2027                             fill(yytext, yyleng);
2028                             LEXTRACE("NTWKADDR ");
2029                             return(NTWKADDR);
2030                         }
2031         YY_BREAK
2032 case 28:
2033 YY_RULE_SETUP
2034 #line 294 "parse.lex"
2035 {
2036                             fill(yytext, yyleng);
2037                             LEXTRACE("NTWKADDR ");
2038                             return(NTWKADDR);
2039                         }
2040         YY_BREAK
2041 case 29:
2042 YY_RULE_SETUP
2043 #line 300 "parse.lex"
2044 {
2045                             if (!ipv6_valid(yytext)) {
2046                                 LEXTRACE("ERROR ");
2047                                 return(ERROR);
2048                             }
2049                             fill(yytext, yyleng);
2050                             LEXTRACE("NTWKADDR ");
2051                             return(NTWKADDR);
2052                         }
2053         YY_BREAK
2054 case 30:
2055 YY_RULE_SETUP
2056 #line 310 "parse.lex"
2057 {
2058                             if (!ipv6_valid(yytext)) {
2059                                 LEXTRACE("ERROR ");
2060                                 return(ERROR);
2061                             }
2062                             fill(yytext, yyleng);
2063                             LEXTRACE("NTWKADDR ");
2064                             return(NTWKADDR);
2065                         }
2066         YY_BREAK
2067 case 31:
2068 YY_RULE_SETUP
2069 #line 320 "parse.lex"
2070 {
2071                                 BEGIN GOTRUNAS;
2072                                 LEXTRACE("RUNAS ");
2073                                 return (RUNAS);
2074                         }
2075         YY_BREAK
2076 case 32:
2077 YY_RULE_SETUP
2078 #line 326 "parse.lex"
2079 {
2080                             if (strcmp(yytext, "ALL") == 0) {
2081                                 LEXTRACE("ALL ");
2082                                 return(ALL);
2083                             }
2084 #ifdef HAVE_SELINUX
2085                             /* XXX - restrict type/role to initial state */
2086                             if (strcmp(yytext, "TYPE") == 0) {
2087                                 LEXTRACE("TYPE ");
2088                                 return(TYPE);
2089                             }
2090                             if (strcmp(yytext, "ROLE") == 0) {
2091                                 LEXTRACE("ROLE ");
2092                                 return(ROLE);
2093                             }
2094 #endif /* HAVE_SELINUX */
2095                             fill(yytext, yyleng);
2096                             LEXTRACE("ALIAS ");
2097                             return(ALIAS);
2098                         }
2099         YY_BREAK
2100 case 33:
2101 YY_RULE_SETUP
2102 #line 347 "parse.lex"
2103 {
2104                             /* username/uid that user can run command as */
2105                             fill(yytext, yyleng);
2106                             LEXTRACE("WORD(3) ");
2107                             return(WORD);
2108                         }
2109         YY_BREAK
2110 case 34:
2111 YY_RULE_SETUP
2112 #line 354 "parse.lex"
2113 {
2114                             BEGIN INITIAL;
2115                             ++sudolineno;
2116                             LEXTRACE("\n");
2117                             return(COMMENT);
2118                         }
2119         YY_BREAK
2120 case 35:
2121 YY_RULE_SETUP
2122 #line 361 "parse.lex"
2123 {
2124                             BEGIN INITIAL;
2125                         }
2126         YY_BREAK
2127 case 36:
2128 YY_RULE_SETUP
2129 #line 365 "parse.lex"
2130 {
2131                             BEGIN GOTCMND;
2132                             LEXTRACE("COMMAND ");
2133                             fill_cmnd(yytext, yyleng);
2134                         }                       /* sudo -e */
2135         YY_BREAK
2136 case 37:
2137 YY_RULE_SETUP
2138 #line 371 "parse.lex"
2139 {
2140                             /* directories can't have args... */
2141                             if (yytext[yyleng - 1] == '/') {
2142                                 LEXTRACE("COMMAND ");
2143                                 fill_cmnd(yytext, yyleng);
2144                                 return(COMMAND);
2145                             } else {
2146                                 BEGIN GOTCMND;
2147                                 LEXTRACE("COMMAND ");
2148                                 fill_cmnd(yytext, yyleng);
2149                             }
2150                         }                       /* a pathname */
2151         YY_BREAK
2152 case 38:
2153 YY_RULE_SETUP
2154 #line 384 "parse.lex"
2155 {
2156                             /* a word */
2157                             fill(yytext, yyleng);
2158                             LEXTRACE("WORD(4) ");
2159                             return(WORD);
2160                         }
2161         YY_BREAK
2162 case 39:
2163 YY_RULE_SETUP
2164 #line 391 "parse.lex"
2165 {
2166                             LEXTRACE(", ");
2167                             return(',');
2168                         }                       /* return ',' */
2169         YY_BREAK
2170 case 40:
2171 YY_RULE_SETUP
2172 #line 396 "parse.lex"
2173 {
2174                             LEXTRACE("= ");
2175                             return('=');
2176                         }                       /* return '=' */
2177         YY_BREAK
2178 case 41:
2179 YY_RULE_SETUP
2180 #line 401 "parse.lex"
2181 {
2182                             LEXTRACE(": ");
2183                             return(':');
2184                         }                       /* return ':' */
2185         YY_BREAK
2186 case 42:
2187 YY_RULE_SETUP
2188 #line 406 "parse.lex"
2189 {
2190                             if (yyleng % 2 == 1)
2191                                 return('!');    /* return '!' */
2192                         }
2193         YY_BREAK
2194 case 43:
2195 YY_RULE_SETUP
2196 #line 411 "parse.lex"
2197 {
2198                             BEGIN INITIAL;
2199                             ++sudolineno;
2200                             LEXTRACE("\n");
2201                             return(COMMENT);
2202                         }                       /* return newline */
2203         YY_BREAK
2204 case 44:
2205 YY_RULE_SETUP
2206 #line 418 "parse.lex"
2207 {                       /* throw away space/tabs */
2208                             sawspace = TRUE;    /* but remember for fill_args */
2209                         }
2210         YY_BREAK
2211 case 45:
2212 YY_RULE_SETUP
2213 #line 422 "parse.lex"
2214 {
2215                             sawspace = TRUE;    /* remember for fill_args */
2216                             ++sudolineno;
2217                             LEXTRACE("\n\t");
2218                         }                       /* throw away EOL after \ */
2219         YY_BREAK
2220 case 46:
2221 YY_RULE_SETUP
2222 #line 428 "parse.lex"
2223 {
2224                             BEGIN INITIAL;
2225                             ++sudolineno;
2226                             LEXTRACE("\n");
2227                             return(COMMENT);
2228                         }                       /* return comments */
2229         YY_BREAK
2230 case 47:
2231 YY_RULE_SETUP
2232 #line 435 "parse.lex"
2233 {
2234                             LEXTRACE("ERROR ");
2235                             return(ERROR);
2236                         }       /* parse error */
2237         YY_BREAK
2238 case YY_STATE_EOF(INITIAL):
2239 case YY_STATE_EOF(GOTRUNAS):
2240 case YY_STATE_EOF(GOTDEFS):
2241 case YY_STATE_EOF(GOTCMND):
2242 case YY_STATE_EOF(STARTDEFS):
2243 case YY_STATE_EOF(INDEFS):
2244 case YY_STATE_EOF(INSTR):
2245 #line 440 "parse.lex"
2246 {
2247                             if (YY_START != INITIAL) {
2248                                 BEGIN INITIAL;
2249                                 LEXTRACE("ERROR ");
2250                                 return(ERROR);
2251                             }
2252                             yyterminate();
2253                         }
2254         YY_BREAK
2255 case 48:
2256 YY_RULE_SETUP
2257 #line 449 "parse.lex"
2258 ECHO;
2259         YY_BREAK
2260 #line 2261 "lex.yy.c"
2261
2262         case YY_END_OF_BUFFER:
2263                 {
2264                 /* Amount of text matched not including the EOB char. */
2265                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2266
2267                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2268                 *yy_cp = yy_hold_char;
2269                 YY_RESTORE_YY_MORE_OFFSET
2270
2271                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2272                         {
2273                         /* We're scanning a new file or input source.  It's
2274                          * possible that this happened because the user
2275                          * just pointed yyin at a new source and called
2276                          * yylex().  If so, then we have to assure
2277                          * consistency between yy_current_buffer and our
2278                          * globals.  Here is the right place to do so, because
2279                          * this is the first action (other than possibly a
2280                          * back-up) that will match for the new input source.
2281                          */
2282                         yy_n_chars = yy_current_buffer->yy_n_chars;
2283                         yy_current_buffer->yy_input_file = yyin;
2284                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2285                         }
2286
2287                 /* Note that here we test for yy_c_buf_p "<=" to the position
2288                  * of the first EOB in the buffer, since yy_c_buf_p will
2289                  * already have been incremented past the NUL character
2290                  * (since all states make transitions on EOB to the
2291                  * end-of-buffer state).  Contrast this with the test
2292                  * in input().
2293                  */
2294                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2295                         { /* This was really a NUL. */
2296                         yy_state_type yy_next_state;
2297
2298                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2299
2300                         yy_current_state = yy_get_previous_state();
2301
2302                         /* Okay, we're now positioned to make the NUL
2303                          * transition.  We couldn't have
2304                          * yy_get_previous_state() go ahead and do it
2305                          * for us because it doesn't know how to deal
2306                          * with the possibility of jamming (and we don't
2307                          * want to build jamming into it because then it
2308                          * will run more slowly).
2309                          */
2310
2311                         yy_next_state = yy_try_NUL_trans( yy_current_state );
2312
2313                         yy_bp = yytext_ptr + YY_MORE_ADJ;
2314
2315                         if ( yy_next_state )
2316                                 {
2317                                 /* Consume the NUL. */
2318                                 yy_cp = ++yy_c_buf_p;
2319                                 yy_current_state = yy_next_state;
2320                                 goto yy_match;
2321                                 }
2322
2323                         else
2324                                 {
2325                                 yy_cp = yy_c_buf_p;
2326                                 goto yy_find_action;
2327                                 }
2328                         }
2329
2330                 else switch ( yy_get_next_buffer() )
2331                         {
2332                         case EOB_ACT_END_OF_FILE:
2333                                 {
2334                                 yy_did_buffer_switch_on_eof = 0;
2335
2336                                 if ( yywrap() )
2337                                         {
2338                                         /* Note: because we've taken care in
2339                                          * yy_get_next_buffer() to have set up
2340                                          * yytext, we can now set up
2341                                          * yy_c_buf_p so that if some total
2342                                          * hoser (like flex itself) wants to
2343                                          * call the scanner after we return the
2344                                          * YY_NULL, it'll still work - another
2345                                          * YY_NULL will get returned.
2346                                          */
2347                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2348
2349                                         yy_act = YY_STATE_EOF(YY_START);
2350                                         goto do_action;
2351                                         }
2352
2353                                 else
2354                                         {
2355                                         if ( ! yy_did_buffer_switch_on_eof )
2356                                                 YY_NEW_FILE;
2357                                         }
2358                                 break;
2359                                 }
2360
2361                         case EOB_ACT_CONTINUE_SCAN:
2362                                 yy_c_buf_p =
2363                                         yytext_ptr + yy_amount_of_matched_text;
2364
2365                                 yy_current_state = yy_get_previous_state();
2366
2367                                 yy_cp = yy_c_buf_p;
2368                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2369                                 goto yy_match;
2370
2371                         case EOB_ACT_LAST_MATCH:
2372                                 yy_c_buf_p =
2373                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2374
2375                                 yy_current_state = yy_get_previous_state();
2376
2377                                 yy_cp = yy_c_buf_p;
2378                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2379                                 goto yy_find_action;
2380                         }
2381                 break;
2382                 }
2383
2384         default:
2385                 YY_FATAL_ERROR(
2386                         "fatal flex scanner internal error--no action found" );
2387         } /* end of action switch */
2388                 } /* end of scanning one token */
2389         } /* end of yylex */
2390
2391
2392 /* yy_get_next_buffer - try to read in a new buffer
2393  *
2394  * Returns a code representing an action:
2395  *      EOB_ACT_LAST_MATCH -
2396  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2397  *      EOB_ACT_END_OF_FILE - end of file
2398  */
2399
2400 static int yy_get_next_buffer()
2401         {
2402         register char *dest = yy_current_buffer->yy_ch_buf;
2403         register char *source = yytext_ptr;
2404         register int number_to_move, i;
2405         int ret_val;
2406
2407         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2408                 YY_FATAL_ERROR(
2409                 "fatal flex scanner internal error--end of buffer missed" );
2410
2411         if ( yy_current_buffer->yy_fill_buffer == 0 )
2412                 { /* Don't try to fill the buffer, so this is an EOF. */
2413                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2414                         {
2415                         /* We matched a single character, the EOB, so
2416                          * treat this as a final EOF.
2417                          */
2418                         return EOB_ACT_END_OF_FILE;
2419                         }
2420
2421                 else
2422                         {
2423                         /* We matched some text prior to the EOB, first
2424                          * process it.
2425                          */
2426                         return EOB_ACT_LAST_MATCH;
2427                         }
2428                 }
2429
2430         /* Try to read more data. */
2431
2432         /* First move last chars to start of buffer. */
2433         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2434
2435         for ( i = 0; i < number_to_move; ++i )
2436                 *(dest++) = *(source++);
2437
2438         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2439                 /* don't do the read, it's not guaranteed to return an EOF,
2440                  * just force an EOF
2441                  */
2442                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2443
2444         else
2445                 {
2446                 int num_to_read =
2447                         yy_current_buffer->yy_buf_size - number_to_move - 1;
2448
2449                 while ( num_to_read <= 0 )
2450                         { /* Not enough room in the buffer - grow it. */
2451 #ifdef YY_USES_REJECT
2452                         YY_FATAL_ERROR(
2453 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2454 #else
2455
2456                         /* just a shorter name for the current buffer */
2457                         YY_BUFFER_STATE b = yy_current_buffer;
2458
2459                         int yy_c_buf_p_offset =
2460                                 (int) (yy_c_buf_p - b->yy_ch_buf);
2461
2462                         if ( b->yy_is_our_buffer )
2463                                 {
2464                                 int new_size = b->yy_buf_size * 2;
2465
2466                                 if ( new_size <= 0 )
2467                                         b->yy_buf_size += b->yy_buf_size / 8;
2468                                 else
2469                                         b->yy_buf_size *= 2;
2470
2471                                 b->yy_ch_buf = (char *)
2472                                         /* Include room in for 2 EOB chars. */
2473                                         yy_flex_realloc( (void *) b->yy_ch_buf,
2474                                                          b->yy_buf_size + 2 );
2475                                 }
2476                         else
2477                                 /* Can't grow it, we don't own it. */
2478                                 b->yy_ch_buf = 0;
2479
2480                         if ( ! b->yy_ch_buf )
2481                                 YY_FATAL_ERROR(
2482                                 "fatal error - scanner input buffer overflow" );
2483
2484                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2485
2486                         num_to_read = yy_current_buffer->yy_buf_size -
2487                                                 number_to_move - 1;
2488 #endif
2489                         }
2490
2491                 if ( num_to_read > YY_READ_BUF_SIZE )
2492                         num_to_read = YY_READ_BUF_SIZE;
2493
2494                 /* Read in more data. */
2495                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2496                         yy_n_chars, num_to_read );
2497
2498                 yy_current_buffer->yy_n_chars = yy_n_chars;
2499                 }
2500
2501         if ( yy_n_chars == 0 )
2502                 {
2503                 if ( number_to_move == YY_MORE_ADJ )
2504                         {
2505                         ret_val = EOB_ACT_END_OF_FILE;
2506                         yyrestart( yyin );
2507                         }
2508
2509                 else
2510                         {
2511                         ret_val = EOB_ACT_LAST_MATCH;
2512                         yy_current_buffer->yy_buffer_status =
2513                                 YY_BUFFER_EOF_PENDING;
2514                         }
2515                 }
2516
2517         else
2518                 ret_val = EOB_ACT_CONTINUE_SCAN;
2519
2520         yy_n_chars += number_to_move;
2521         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2522         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2523
2524         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2525
2526         return ret_val;
2527         }
2528
2529
2530 /* yy_get_previous_state - get the state just before the EOB char was reached */
2531
2532 static yy_state_type yy_get_previous_state()
2533         {
2534         register yy_state_type yy_current_state;
2535         register char *yy_cp;
2536
2537         yy_current_state = yy_start;
2538         yy_current_state += YY_AT_BOL();
2539
2540         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2541                 {
2542                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2543                 if ( yy_accept[yy_current_state] )
2544                         {
2545                         yy_last_accepting_state = yy_current_state;
2546                         yy_last_accepting_cpos = yy_cp;
2547                         }
2548                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2549                         {
2550                         yy_current_state = (int) yy_def[yy_current_state];
2551                         if ( yy_current_state >= 610 )
2552                                 yy_c = yy_meta[(unsigned int) yy_c];
2553                         }
2554                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2555                 }
2556
2557         return yy_current_state;
2558         }
2559
2560
2561 /* yy_try_NUL_trans - try to make a transition on the NUL character
2562  *
2563  * synopsis
2564  *      next_state = yy_try_NUL_trans( current_state );
2565  */
2566
2567 #ifdef YY_USE_PROTOS
2568 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2569 #else
2570 static yy_state_type yy_try_NUL_trans( yy_current_state )
2571 yy_state_type yy_current_state;
2572 #endif
2573         {
2574         register int yy_is_jam;
2575         register char *yy_cp = yy_c_buf_p;
2576
2577         register YY_CHAR yy_c = 1;
2578         if ( yy_accept[yy_current_state] )
2579                 {
2580                 yy_last_accepting_state = yy_current_state;
2581                 yy_last_accepting_cpos = yy_cp;
2582                 }
2583         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2584                 {
2585                 yy_current_state = (int) yy_def[yy_current_state];
2586                 if ( yy_current_state >= 610 )
2587                         yy_c = yy_meta[(unsigned int) yy_c];
2588                 }
2589         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2590         yy_is_jam = (yy_current_state == 609);
2591
2592         return yy_is_jam ? 0 : yy_current_state;
2593         }
2594
2595
2596 #ifndef YY_NO_UNPUT
2597 #ifdef YY_USE_PROTOS
2598 static void yyunput( int c, register char *yy_bp )
2599 #else
2600 static void yyunput( c, yy_bp )
2601 int c;
2602 register char *yy_bp;
2603 #endif
2604         {
2605         register char *yy_cp = yy_c_buf_p;
2606
2607         /* undo effects of setting up yytext */
2608         *yy_cp = yy_hold_char;
2609
2610         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2611                 { /* need to shift things up to make room */
2612                 /* +2 for EOB chars. */
2613                 register int number_to_move = yy_n_chars + 2;
2614                 register char *dest = &yy_current_buffer->yy_ch_buf[
2615                                         yy_current_buffer->yy_buf_size + 2];
2616                 register char *source =
2617                                 &yy_current_buffer->yy_ch_buf[number_to_move];
2618
2619                 while ( source > yy_current_buffer->yy_ch_buf )
2620                         *--dest = *--source;
2621
2622                 yy_cp += (int) (dest - source);
2623                 yy_bp += (int) (dest - source);
2624                 yy_current_buffer->yy_n_chars =
2625                         yy_n_chars = yy_current_buffer->yy_buf_size;
2626
2627                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2628                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2629                 }
2630
2631         *--yy_cp = (char) c;
2632
2633
2634         yytext_ptr = yy_bp;
2635         yy_hold_char = *yy_cp;
2636         yy_c_buf_p = yy_cp;
2637         }
2638 #endif  /* ifndef YY_NO_UNPUT */
2639
2640
2641 #ifdef __cplusplus
2642 static int yyinput()
2643 #else
2644 static int input()
2645 #endif
2646         {
2647         int c;
2648
2649         *yy_c_buf_p = yy_hold_char;
2650
2651         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2652                 {
2653                 /* yy_c_buf_p now points to the character we want to return.
2654                  * If this occurs *before* the EOB characters, then it's a
2655                  * valid NUL; if not, then we've hit the end of the buffer.
2656                  */
2657                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2658                         /* This was really a NUL. */
2659                         *yy_c_buf_p = '\0';
2660
2661                 else
2662                         { /* need more input */
2663                         int offset = yy_c_buf_p - yytext_ptr;
2664                         ++yy_c_buf_p;
2665
2666                         switch ( yy_get_next_buffer() )
2667                                 {
2668                                 case EOB_ACT_LAST_MATCH:
2669                                         /* This happens because yy_g_n_b()
2670                                          * sees that we've accumulated a
2671                                          * token and flags that we need to
2672                                          * try matching the token before
2673                                          * proceeding.  But for input(),
2674                                          * there's no matching to consider.
2675                                          * So convert the EOB_ACT_LAST_MATCH
2676                                          * to EOB_ACT_END_OF_FILE.
2677                                          */
2678
2679                                         /* Reset buffer status. */
2680                                         yyrestart( yyin );
2681
2682                                         /* fall through */
2683
2684                                 case EOB_ACT_END_OF_FILE:
2685                                         {
2686                                         if ( yywrap() )
2687                                                 return EOF;
2688
2689                                         if ( ! yy_did_buffer_switch_on_eof )
2690                                                 YY_NEW_FILE;
2691 #ifdef __cplusplus
2692                                         return yyinput();
2693 #else
2694                                         return input();
2695 #endif
2696                                         }
2697
2698                                 case EOB_ACT_CONTINUE_SCAN:
2699                                         yy_c_buf_p = yytext_ptr + offset;
2700                                         break;
2701                                 }
2702                         }
2703                 }
2704
2705         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
2706         *yy_c_buf_p = '\0';     /* preserve yytext */
2707         yy_hold_char = *++yy_c_buf_p;
2708
2709         yy_current_buffer->yy_at_bol = (c == '\n');
2710
2711         return c;
2712         }
2713
2714
2715 #ifdef YY_USE_PROTOS
2716 void yyrestart( FILE *input_file )
2717 #else
2718 void yyrestart( input_file )
2719 FILE *input_file;
2720 #endif
2721         {
2722         if ( ! yy_current_buffer )
2723                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2724
2725         yy_init_buffer( yy_current_buffer, input_file );
2726         yy_load_buffer_state();
2727         }
2728
2729
2730 #ifdef YY_USE_PROTOS
2731 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2732 #else
2733 void yy_switch_to_buffer( new_buffer )
2734 YY_BUFFER_STATE new_buffer;
2735 #endif
2736         {
2737         if ( yy_current_buffer == new_buffer )
2738                 return;
2739
2740         if ( yy_current_buffer )
2741                 {
2742                 /* Flush out information for old buffer. */
2743                 *yy_c_buf_p = yy_hold_char;
2744                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2745                 yy_current_buffer->yy_n_chars = yy_n_chars;
2746                 }
2747
2748         yy_current_buffer = new_buffer;
2749         yy_load_buffer_state();
2750
2751         /* We don't actually know whether we did this switch during
2752          * EOF (yywrap()) processing, but the only time this flag
2753          * is looked at is after yywrap() is called, so it's safe
2754          * to go ahead and always set it.
2755          */
2756         yy_did_buffer_switch_on_eof = 1;
2757         }
2758
2759
2760 #ifdef YY_USE_PROTOS
2761 void yy_load_buffer_state( void )
2762 #else
2763 void yy_load_buffer_state()
2764 #endif
2765         {
2766         yy_n_chars = yy_current_buffer->yy_n_chars;
2767         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2768         yyin = yy_current_buffer->yy_input_file;
2769         yy_hold_char = *yy_c_buf_p;
2770         }
2771
2772
2773 #ifdef YY_USE_PROTOS
2774 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2775 #else
2776 YY_BUFFER_STATE yy_create_buffer( file, size )
2777 FILE *file;
2778 int size;
2779 #endif
2780         {
2781         YY_BUFFER_STATE b;
2782
2783         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2784         if ( ! b )
2785                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2786
2787         b->yy_buf_size = size;
2788
2789         /* yy_ch_buf has to be 2 characters longer than the size given because
2790          * we need to put in 2 end-of-buffer characters.
2791          */
2792         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2793         if ( ! b->yy_ch_buf )
2794                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2795
2796         b->yy_is_our_buffer = 1;
2797
2798         yy_init_buffer( b, file );
2799
2800         return b;
2801         }
2802
2803
2804 #ifdef YY_USE_PROTOS
2805 void yy_delete_buffer( YY_BUFFER_STATE b )
2806 #else
2807 void yy_delete_buffer( b )
2808 YY_BUFFER_STATE b;
2809 #endif
2810         {
2811         if ( ! b )
2812                 return;
2813
2814         if ( b == yy_current_buffer )
2815                 yy_current_buffer = (YY_BUFFER_STATE) 0;
2816
2817         if ( b->yy_is_our_buffer )
2818                 yy_flex_free( (void *) b->yy_ch_buf );
2819
2820         yy_flex_free( (void *) b );
2821         }
2822
2823
2824 #ifndef YY_ALWAYS_INTERACTIVE
2825 #ifndef YY_NEVER_INTERACTIVE
2826 #include <unistd.h>
2827 #endif
2828 #endif
2829
2830 #ifdef YY_USE_PROTOS
2831 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2832 #else
2833 void yy_init_buffer( b, file )
2834 YY_BUFFER_STATE b;
2835 FILE *file;
2836 #endif
2837
2838
2839         {
2840         int oerrno = errno;
2841
2842         yy_flush_buffer( b );
2843
2844         b->yy_input_file = file;
2845         b->yy_fill_buffer = 1;
2846
2847 #if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
2848         b->yy_is_interactive = 1;
2849 #else
2850 #if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
2851         b->yy_is_interactive = 0;
2852 #else
2853         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2854 #endif
2855 #endif
2856         errno = oerrno;
2857         }
2858
2859
2860 #ifdef YY_USE_PROTOS
2861 void yy_flush_buffer( YY_BUFFER_STATE b )
2862 #else
2863 void yy_flush_buffer( b )
2864 YY_BUFFER_STATE b;
2865 #endif
2866
2867         {
2868         if ( ! b )
2869                 return;
2870
2871         b->yy_n_chars = 0;
2872
2873         /* We always need two end-of-buffer characters.  The first causes
2874          * a transition to the end-of-buffer state.  The second causes
2875          * a jam in that state.
2876          */
2877         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2878         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2879
2880         b->yy_buf_pos = &b->yy_ch_buf[0];
2881
2882         b->yy_at_bol = 1;
2883         b->yy_buffer_status = YY_BUFFER_NEW;
2884
2885         if ( b == yy_current_buffer )
2886                 yy_load_buffer_state();
2887         }
2888
2889
2890 #ifndef YY_NO_SCAN_BUFFER
2891 #ifdef YY_USE_PROTOS
2892 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2893 #else
2894 YY_BUFFER_STATE yy_scan_buffer( base, size )
2895 char *base;
2896 yy_size_t size;
2897 #endif
2898         {
2899         YY_BUFFER_STATE b;
2900
2901         if ( size < 2 ||
2902              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2903              base[size-1] != YY_END_OF_BUFFER_CHAR )
2904                 /* They forgot to leave room for the EOB's. */
2905                 return 0;
2906
2907         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2908         if ( ! b )
2909                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2910
2911         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2912         b->yy_buf_pos = b->yy_ch_buf = base;
2913         b->yy_is_our_buffer = 0;
2914         b->yy_input_file = 0;
2915         b->yy_n_chars = b->yy_buf_size;
2916         b->yy_is_interactive = 0;
2917         b->yy_at_bol = 1;
2918         b->yy_fill_buffer = 0;
2919         b->yy_buffer_status = YY_BUFFER_NEW;
2920
2921         yy_switch_to_buffer( b );
2922
2923         return b;
2924         }
2925 #endif
2926
2927
2928 #ifndef YY_NO_SCAN_STRING
2929 #ifdef YY_USE_PROTOS
2930 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2931 #else
2932 YY_BUFFER_STATE yy_scan_string( yy_str )
2933 yyconst char *yy_str;
2934 #endif
2935         {
2936         int len;
2937         for ( len = 0; yy_str[len]; ++len )
2938                 ;
2939
2940         return yy_scan_bytes( yy_str, len );
2941         }
2942 #endif
2943
2944
2945 #ifndef YY_NO_SCAN_BYTES
2946 #ifdef YY_USE_PROTOS
2947 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2948 #else
2949 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2950 yyconst char *bytes;
2951 int len;
2952 #endif
2953         {
2954         YY_BUFFER_STATE b;
2955         char *buf;
2956         yy_size_t n;
2957         int i;
2958
2959         /* Get memory for full buffer, including space for trailing EOB's. */
2960         n = len + 2;
2961         buf = (char *) yy_flex_alloc( n );
2962         if ( ! buf )
2963                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2964
2965         for ( i = 0; i < len; ++i )
2966                 buf[i] = bytes[i];
2967
2968         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2969
2970         b = yy_scan_buffer( buf, n );
2971         if ( ! b )
2972                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2973
2974         /* It's okay to grow etc. this buffer, and we should throw it
2975          * away when we're done.
2976          */
2977         b->yy_is_our_buffer = 1;
2978
2979         return b;
2980         }
2981 #endif
2982
2983
2984 #ifndef YY_NO_PUSH_STATE
2985 #ifdef YY_USE_PROTOS
2986 static void yy_push_state( int new_state )
2987 #else
2988 static void yy_push_state( new_state )
2989 int new_state;
2990 #endif
2991         {
2992         if ( yy_start_stack_ptr >= yy_start_stack_depth )
2993                 {
2994                 yy_size_t new_size;
2995
2996                 yy_start_stack_depth += YY_START_STACK_INCR;
2997                 new_size = yy_start_stack_depth * sizeof( int );
2998
2999                 if ( ! yy_start_stack )
3000                         yy_start_stack = (int *) yy_flex_alloc( new_size );
3001
3002                 else
3003                         yy_start_stack = (int *) yy_flex_realloc(
3004                                         (void *) yy_start_stack, new_size );
3005
3006                 if ( ! yy_start_stack )
3007                         YY_FATAL_ERROR(
3008                         "out of memory expanding start-condition stack" );
3009                 }
3010
3011         yy_start_stack[yy_start_stack_ptr++] = YY_START;
3012
3013         BEGIN(new_state);
3014         }
3015 #endif
3016
3017
3018 #ifndef YY_NO_POP_STATE
3019 static void yy_pop_state()
3020         {
3021         if ( --yy_start_stack_ptr < 0 )
3022                 YY_FATAL_ERROR( "start-condition stack underflow" );
3023
3024         BEGIN(yy_start_stack[yy_start_stack_ptr]);
3025         }
3026 #endif
3027
3028
3029 #ifndef YY_NO_TOP_STATE
3030 static int yy_top_state()
3031         {
3032         return yy_start_stack[yy_start_stack_ptr - 1];
3033         }
3034 #endif
3035
3036 #ifndef YY_EXIT_FAILURE
3037 #define YY_EXIT_FAILURE 2
3038 #endif
3039
3040 #ifdef YY_USE_PROTOS
3041 static void yy_fatal_error( yyconst char msg[] )
3042 #else
3043 static void yy_fatal_error( msg )
3044 char msg[];
3045 #endif
3046         {
3047         (void) fprintf( stderr, "%s\n", msg );
3048         exit( YY_EXIT_FAILURE );
3049         }
3050
3051
3052
3053 /* Redefine yyless() so it works in section 3 code. */
3054
3055 #undef yyless
3056 #define yyless(n) \
3057         do \
3058                 { \
3059                 /* Undo effects of setting up yytext. */ \
3060                 yytext[yyleng] = yy_hold_char; \
3061                 yy_c_buf_p = yytext + n; \
3062                 yy_hold_char = *yy_c_buf_p; \
3063                 *yy_c_buf_p = '\0'; \
3064                 yyleng = n; \
3065                 } \
3066         while ( 0 )
3067
3068
3069 /* Internal utility routines. */
3070
3071 #ifndef yytext_ptr
3072 #ifdef YY_USE_PROTOS
3073 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3074 #else
3075 static void yy_flex_strncpy( s1, s2, n )
3076 char *s1;
3077 yyconst char *s2;
3078 int n;
3079 #endif
3080         {
3081         register int i;
3082         for ( i = 0; i < n; ++i )
3083                 s1[i] = s2[i];
3084         }
3085 #endif
3086
3087 #ifdef YY_NEED_STRLEN
3088 #ifdef YY_USE_PROTOS
3089 static int yy_flex_strlen( yyconst char *s )
3090 #else
3091 static int yy_flex_strlen( s )
3092 yyconst char *s;
3093 #endif
3094         {
3095         register int n;
3096         for ( n = 0; s[n]; ++n )
3097                 ;
3098
3099         return n;
3100         }
3101 #endif
3102
3103
3104 #ifdef YY_USE_PROTOS
3105 static void *yy_flex_alloc( yy_size_t size )
3106 #else
3107 static void *yy_flex_alloc( size )
3108 yy_size_t size;
3109 #endif
3110         {
3111         return (void *) malloc( size );
3112         }
3113
3114 #ifdef YY_USE_PROTOS
3115 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3116 #else
3117 static void *yy_flex_realloc( ptr, size )
3118 void *ptr;
3119 yy_size_t size;
3120 #endif
3121         {
3122         /* The cast to (char *) in the following accommodates both
3123          * implementations that use char* generic pointers, and those
3124          * that use void* generic pointers.  It works with the latter
3125          * because both ANSI C and C++ allow castless assignment from
3126          * any pointer type to void*, and deal with argument conversions
3127          * as though doing an assignment.
3128          */
3129         return (void *) realloc( (char *) ptr, size );
3130         }
3131
3132 #ifdef YY_USE_PROTOS
3133 static void yy_flex_free( void *ptr )
3134 #else
3135 static void yy_flex_free( ptr )
3136 void *ptr;
3137 #endif
3138         {
3139         free( ptr );
3140         }
3141
3142 #if defined(YY_MAIN) && YY_MAIN
3143 int main()
3144         {
3145         yylex();
3146         return 0;
3147         }
3148 #endif
3149 #line 449 "parse.lex"
3150
3151 static void
3152 _fill(src, len, olen)
3153     char *src;
3154     int len, olen;
3155 {
3156     int i, j;
3157     char *dst;
3158
3159     dst = olen ? realloc(yylval.string, olen + len + 1) : malloc(len + 1);
3160     if (dst == NULL) {
3161         yyerror("unable to allocate memory");
3162         return;
3163     }
3164     yylval.string = dst;
3165
3166     /* Copy the string and collapse any escaped characters. */
3167     dst += olen;
3168     for (i = 0, j = 0; i < len; i++, j++) {
3169         if (src[i] == '\\' && i != len - 1)
3170             dst[j] = src[++i];
3171         else
3172             dst[j] = src[i];
3173     }
3174     dst[j] = '\0';
3175 }
3176
3177 static void
3178 append(src, len)
3179     char *src;
3180     int len;
3181 {
3182     int olen = 0;
3183
3184     if (yylval.string != NULL)
3185         olen = strlen(yylval.string);
3186
3187     _fill(src, len, olen);
3188 }
3189
3190 static void
3191 fill_cmnd(s, len)
3192     char *s;
3193     int len;
3194 {
3195     arg_len = arg_size = 0;
3196
3197     yylval.command.cmnd = (char *) malloc(++len);
3198     if (yylval.command.cmnd == NULL) {
3199         yyerror("unable to allocate memory");
3200         return;
3201     }
3202
3203     /* copy the string and NULL-terminate it (escapes handled by fnmatch) */
3204     (void) strlcpy(yylval.command.cmnd, s, len);
3205
3206     yylval.command.args = NULL;
3207 }
3208
3209 static void
3210 fill_args(s, len, addspace)
3211     char *s;
3212     int len;
3213     int addspace;
3214 {
3215     int new_len;
3216     char *p;
3217
3218     if (yylval.command.args == NULL) {
3219         addspace = 0;
3220         new_len = len;
3221     } else
3222         new_len = arg_len + len + addspace;
3223
3224     if (new_len >= arg_size) {
3225         /* Allocate more space than we need for subsequent args */
3226         while (new_len >= (arg_size += COMMANDARGINC))
3227             ;
3228
3229         p = yylval.command.args ?
3230             (char *) realloc(yylval.command.args, arg_size) :
3231             (char *) malloc(arg_size);
3232         if (p == NULL) {
3233             efree(yylval.command.args);
3234             yyerror("unable to allocate memory");
3235             return;
3236         } else
3237             yylval.command.args = p;
3238     }
3239
3240     /* Efficiently append the arg (with a leading space if needed). */
3241     p = yylval.command.args + arg_len;
3242     if (addspace)
3243         *p++ = ' ';
3244     if (strlcpy(p, s, arg_size - (p - yylval.command.args)) != len)
3245         yyerror("fill_args: buffer overflow");  /* paranoia */
3246     arg_len = new_len;
3247 }
3248
3249 /*
3250  * Check to make sure an IPv6 address does not contain multiple instances
3251  * of the string "::".  Assumes strlen(s) >= 1.
3252  * Returns TRUE if address is valid else FALSE.
3253  */
3254 static int
3255 ipv6_valid(s)
3256     const char *s;
3257 {
3258     int nmatch = 0;
3259
3260     for (; *s != '\0'; s++) {
3261         if (s[0] == ':' && s[1] == ':') {
3262             if (++nmatch > 1)
3263                 break;
3264         }
3265         if (s[0] == '/')
3266             nmatch = 0;                 /* reset if we hit netmask */
3267     }
3268
3269     return (nmatch <= 1);
3270 }
3271
3272 int
3273 yywrap()
3274 {
3275
3276     /* Free space used by the aliases unless called by testsudoers. */
3277     if (clearaliases)
3278         reset_aliases();
3279
3280     return(TRUE);
3281 }