blob: 6a6eb44689ead4bb98692aa77106c9d7dadabc53 [file] [log] [blame]
vlmfa67ddc2004-06-03 03:38:44 +00001#define yy_create_buffer asn1p__create_buffer
2#define yy_delete_buffer asn1p__delete_buffer
3#define yy_scan_buffer asn1p__scan_buffer
4#define yy_scan_string asn1p__scan_string
5#define yy_scan_bytes asn1p__scan_bytes
6#define yy_flex_debug asn1p__flex_debug
7#define yy_init_buffer asn1p__init_buffer
8#define yy_flush_buffer asn1p__flush_buffer
9#define yy_load_buffer_state asn1p__load_buffer_state
10#define yy_switch_to_buffer asn1p__switch_to_buffer
11#define yyin asn1p_in
12#define yyleng asn1p_leng
13#define yylex asn1p_lex
14#define yyout asn1p_out
15#define yyrestart asn1p_restart
16#define yytext asn1p_text
17#define yylineno asn1p_lineno
18
19#line 20 "lex.yy.c"
20/* A lexical scanner generated by flex */
21
22/* Scanner skeleton version:
23 * $Header$
24 */
25
26#define FLEX_SCANNER
27#define YY_FLEX_MAJOR_VERSION 2
28#define YY_FLEX_MINOR_VERSION 5
29
30#include <stdio.h>
31
32
33/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
34#ifdef c_plusplus
35#ifndef __cplusplus
36#define __cplusplus
37#endif
38#endif
39
40
41#ifdef __cplusplus
42
43#include <stdlib.h>
44#include <unistd.h>
45
46/* Use prototypes in function declarations. */
47#define YY_USE_PROTOS
48
49/* The "const" storage-class-modifier is valid. */
50#define YY_USE_CONST
51
52#else /* ! __cplusplus */
53
54#if __STDC__
55
56#define YY_USE_PROTOS
57#define YY_USE_CONST
58
59#endif /* __STDC__ */
60#endif /* ! __cplusplus */
61
62#ifdef __TURBOC__
63 #pragma warn -rch
64 #pragma warn -use
65#include <io.h>
66#include <stdlib.h>
67#define YY_USE_CONST
68#define YY_USE_PROTOS
69#endif
70
71#ifdef YY_USE_CONST
72#define yyconst const
73#else
74#define yyconst
75#endif
76
77
78#ifdef YY_USE_PROTOS
79#define YY_PROTO(proto) proto
80#else
81#define YY_PROTO(proto) ()
82#endif
83
84/* Returned upon end-of-file. */
85#define YY_NULL 0
86
87/* Promotes a possibly negative, possibly signed char to an unsigned
88 * integer for use as an array index. If the signed char is negative,
89 * we want to instead treat it as an 8-bit unsigned char, hence the
90 * double cast.
91 */
92#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
93
94/* Enter a start condition. This macro really ought to take a parameter,
95 * but we do it the disgusting crufty way forced on us by the ()-less
96 * definition of BEGIN.
97 */
98#define BEGIN yy_start = 1 + 2 *
99
100/* Translate the current start state into a value that can be later handed
101 * to BEGIN to return to the state. The YYSTATE alias is for lex
102 * compatibility.
103 */
104#define YY_START ((yy_start - 1) / 2)
105#define YYSTATE YY_START
106
107/* Action number for EOF rule of a given start state. */
108#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
109
110/* Special action meaning "start processing a new file". */
111#define YY_NEW_FILE yyrestart( yyin )
112
113#define YY_END_OF_BUFFER_CHAR 0
114
115/* Size of default input buffer. */
116#define YY_BUF_SIZE 16384
117
118typedef struct yy_buffer_state *YY_BUFFER_STATE;
119
120extern int yyleng;
121extern FILE *yyin, *yyout;
122
123#define EOB_ACT_CONTINUE_SCAN 0
124#define EOB_ACT_END_OF_FILE 1
125#define EOB_ACT_LAST_MATCH 2
126
127/* The funky do-while in the following #define is used to turn the definition
128 * int a single C statement (which needs a semi-colon terminator). This
129 * avoids problems with code like:
130 *
131 * if ( condition_holds )
132 * yyless( 5 );
133 * else
134 * do_something_else();
135 *
136 * Prior to using the do-while the compiler would get upset at the
137 * "else" because it interpreted the "if" statement as being all
138 * done when it reached the ';' after the yyless() call.
139 */
140
141/* Return all but the first 'n' matched characters back to the input stream. */
142
143#define yyless(n) \
144 do \
145 { \
146 /* Undo effects of setting up yytext. */ \
147 *yy_cp = yy_hold_char; \
148 YY_RESTORE_YY_MORE_OFFSET \
149 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
150 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
151 } \
152 while ( 0 )
153
154#define unput(c) yyunput( c, yytext_ptr )
155
156/* The following is because we cannot portably get our hands on size_t
157 * (without autoconf's help, which isn't available because we want
158 * flex-generated scanners to compile on their own).
159 */
160typedef unsigned int yy_size_t;
161
162
163struct yy_buffer_state
164 {
165 FILE *yy_input_file;
166
167 char *yy_ch_buf; /* input buffer */
168 char *yy_buf_pos; /* current position in input buffer */
169
170 /* Size of input buffer in bytes, not including room for EOB
171 * characters.
172 */
173 yy_size_t yy_buf_size;
174
175 /* Number of characters read into yy_ch_buf, not including EOB
176 * characters.
177 */
178 int yy_n_chars;
179
180 /* Whether we "own" the buffer - i.e., we know we created it,
181 * and can realloc() it to grow it, and should free() it to
182 * delete it.
183 */
184 int yy_is_our_buffer;
185
186 /* Whether this is an "interactive" input source; if so, and
187 * if we're using stdio for input, then we want to use getc()
188 * instead of fread(), to make sure we stop fetching input after
189 * each newline.
190 */
191 int yy_is_interactive;
192
193 /* Whether we're considered to be at the beginning of a line.
194 * If so, '^' rules will be active on the next match, otherwise
195 * not.
196 */
197 int yy_at_bol;
198
199 /* Whether to try to fill the input buffer when we reach the
200 * end of it.
201 */
202 int yy_fill_buffer;
203
204 int yy_buffer_status;
205#define YY_BUFFER_NEW 0
206#define YY_BUFFER_NORMAL 1
207 /* When an EOF's been seen but there's still some text to process
208 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
209 * shouldn't try reading from the input source any more. We might
210 * still have a bunch of tokens to match, though, because of
211 * possible backing-up.
212 *
213 * When we actually see the EOF, we change the status to "new"
214 * (via yyrestart()), so that the user can continue scanning by
215 * just pointing yyin at a new input file.
216 */
217#define YY_BUFFER_EOF_PENDING 2
218 };
219
220static YY_BUFFER_STATE yy_current_buffer = 0;
221
222/* We provide macros for accessing buffer states in case in the
223 * future we want to put the buffer states in a more general
224 * "scanner state".
225 */
226#define YY_CURRENT_BUFFER yy_current_buffer
227
228
229/* yy_hold_char holds the character lost when yytext is formed. */
230static char yy_hold_char;
231
232static int yy_n_chars; /* number of characters read into yy_ch_buf */
233
234
235int yyleng;
236
237/* Points to current character in buffer. */
238static char *yy_c_buf_p = (char *) 0;
239static int yy_init = 1; /* whether we need to initialize */
240static int yy_start = 0; /* start state number */
241
242/* Flag which is used to allow yywrap()'s to do buffer switches
243 * instead of setting up a fresh yyin. A bit of a hack ...
244 */
245static int yy_did_buffer_switch_on_eof;
246
247void yyrestart YY_PROTO(( FILE *input_file ));
248
249void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
250void yy_load_buffer_state YY_PROTO(( void ));
251YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
252void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
253void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
254void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
255#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
256
257YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
258YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
259YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
260
261static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
262static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
263static void yy_flex_free YY_PROTO(( void * ));
264
265#define yy_new_buffer yy_create_buffer
266
267#define yy_set_interactive(is_interactive) \
268 { \
269 if ( ! yy_current_buffer ) \
270 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
271 yy_current_buffer->yy_is_interactive = is_interactive; \
272 }
273
274#define yy_set_bol(at_bol) \
275 { \
276 if ( ! yy_current_buffer ) \
277 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
278 yy_current_buffer->yy_at_bol = at_bol; \
279 }
280
281#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
282
283
284#define YY_USES_REJECT
285
286#define yywrap() 1
287#define YY_SKIP_YYWRAP
288
289#define FLEX_DEBUG
290typedef unsigned char YY_CHAR;
291FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
292typedef int yy_state_type;
293
294#define FLEX_DEBUG
295extern int yylineno;
296int yylineno = 1;
297extern char *yytext;
298#define yytext_ptr yytext
299
300static yy_state_type yy_get_previous_state YY_PROTO(( void ));
301static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
302static int yy_get_next_buffer YY_PROTO(( void ));
303static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
304
305/* Done after the current pattern has been matched and before the
306 * corresponding action - sets up yytext.
307 */
308#define YY_DO_BEFORE_ACTION \
309 yytext_ptr = yy_bp; \
310 yyleng = (int) (yy_cp - yy_bp); \
311 yy_hold_char = *yy_cp; \
312 *yy_cp = '\0'; \
313 yy_c_buf_p = yy_cp;
314
315#define YY_NUM_RULES 123
316#define YY_END_OF_BUFFER 124
317static yyconst short int yy_acclist[1196] =
318 { 0,
319 124, 122, 123, 117, 122, 123, 117, 123, 116, 122,
320 123, 15, 122, 123, 116, 122, 123, 122, 123, 116,
321 122, 123, 122, 123, 116, 122, 123, 122, 123, 23,
322 122, 123, 22, 122, 123, 116, 122, 123, 122, 123,
323 111, 112, 122, 123, 111, 112, 122, 123, 111, 112,
324 122, 123, 111, 112, 122, 123, 111, 112, 122, 123,
325 111, 112, 122, 123, 111, 112, 122, 123, 111, 112,
326 122, 123, 111, 112, 122, 123, 111, 112, 122, 123,
327 111, 112, 122, 123, 111, 112, 122, 123, 111, 112,
328 122, 123, 111, 112, 122, 123, 111, 112, 122, 123,
329
330 111, 112, 122, 123, 111, 112, 122, 123, 111, 112,
331 122, 123, 111, 112, 122, 123, 116, 122, 123, 110,
332 122, 123, 5, 122, 123, 2, 123, 2, 122, 123,
333 4, 122, 123, 7, 9, 122, 123, 7, 123, 9,
334 122, 123, 9, 122, 123, 17, 122, 123, 17, 123,
335 18, 122, 123, 12, 122, 123, 12, 123, 14, 122,
336 123, 14, 122, 123, 10, 122, 123, 11, 122, 123,
337 119, 122, 123, 120, 122, 123, 120, 123, 122, 123,
338 121, 122, 123, 117, 15, 15, 108, 109, 1, 21,
339 115, 6, 22, 111, 112, 111, 112, 111, 112, 111,
340
341 112, 111, 112, 111, 112, 112, 111, 112, 111, 112,
342 111, 112, 111, 112, 36, 111, 112, 111, 112, 111,
343 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
344 112, 111, 112, 111, 112, 112, 112, 111, 112, 111,
345 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
346 112, 111, 112, 112, 111, 112, 111, 112, 79, 111,
347 112, 111, 112, 112, 111, 112, 111, 112, 111, 112,
348 111, 112, 112, 111, 112, 111, 112, 111, 112, 111,
349 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
350 112, 112, 111, 112, 111, 112, 112, 112, 111, 112,
351
352 110, 5, 3, 8, 17, 16, 12, 119, 120, 118,
353 108, 109, 21, 114, 113, 111, 112, 28, 111, 112,
354 29, 111, 112, 111, 112, 111, 112, 111, 112, 33,
355 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
356 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
357 111, 112, 49, 111, 112, 111, 112, 111, 112, 111,
358 112, 111, 112, 111, 112, 111, 112, 112, 112, 111,
359 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
360 112, 111, 112, 71, 111, 112, 72, 111, 112, 111,
361 112, 112, 111, 112, 111, 112, 111, 112, 112, 111,
362
363 112, 82, 111, 112, 111, 112, 111, 112, 111, 112,
364 112, 111, 112, 111, 112, 111, 112, 90, 111, 112,
365 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
366 111, 112, 111, 112, 112, 111, 112, 111, 112, 111,
367 112, 112, 112, 112, 111, 112, 24, 13, 20, 19,
368 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
369 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
370 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
371 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
372 111, 112, 111, 112, 111, 112, 57, 111, 112, 112,
373
374 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
375 112, 111, 112, 111, 112, 111, 112, 111, 112, 74,
376 111, 112, 112, 111, 112, 111, 112, 111, 112, 112,
377 111, 112, 111, 112, 111, 112, 111, 112, 112, 87,
378 111, 112, 111, 112, 111, 112, 91, 111, 112, 111,
379 112, 111, 112, 111, 112, 95, 111, 112, 97, 111,
380 112, 111, 112, 112, 111, 112, 111, 112, 111, 112,
381 111, 112, 111, 112, 112, 112, 112, 107, 111, 112,
382 111, 112, 111, 112, 111, 112, 111, 112, 32, 111,
383 112, 112, 111, 112, 111, 112, 111, 112, 39, 111,
384
385 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
386 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
387 112, 111, 112, 111, 112, 111, 112, 56, 111, 112,
388 112, 112, 112, 111, 112, 111, 112, 111, 112, 111,
389 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
390 112, 112, 111, 112, 78, 111, 112, 111, 112, 112,
391 111, 112, 111, 112, 111, 112, 111, 112, 112, 111,
392 112, 111, 112, 111, 112, 111, 112, 112, 111, 112,
393 112, 99, 111, 112, 111, 112, 111, 112, 112, 111,
394 112, 112, 112, 112, 25, 26, 111, 112, 111, 112,
395
396 111, 112, 111, 112, 112, 111, 112, 111, 112, 38,
397 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
398 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
399 51, 111, 112, 111, 112, 111, 112, 111, 112, 111,
400 112, 112, 112, 112, 111, 112, 111, 112, 111, 112,
401 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
402 111, 112, 111, 112, 112, 76, 111, 112, 111, 112,
403 112, 111, 112, 111, 112, 111, 112, 111, 112, 112,
404 111, 112, 111, 112, 92, 111, 112, 93, 111, 112,
405 112, 111, 112, 112, 100, 111, 112, 111, 112, 112,
406
407 112, 112, 112, 112, 111, 112, 111, 112, 111, 112,
408 112, 35, 111, 112, 111, 112, 111, 112, 111, 112,
409 111, 112, 44, 111, 112, 45, 111, 112, 111, 112,
410 111, 112, 48, 111, 112, 111, 112, 111, 112, 53,
411 111, 112, 111, 112, 111, 112, 112, 112, 112, 111,
412 112, 111, 112, 64, 111, 112, 65, 111, 112, 111,
413 112, 111, 112, 68, 111, 112, 111, 112, 111, 112,
414 111, 112, 112, 111, 112, 112, 81, 111, 112, 111,
415 112, 84, 111, 112, 86, 111, 112, 112, 111, 112,
416 111, 112, 112, 111, 112, 112, 111, 112, 103, 112,
417
418 112, 112, 112, 112, 111, 112, 111, 112, 111, 112,
419 112, 111, 112, 111, 112, 111, 112, 111, 112, 111,
420 112, 47, 111, 112, 111, 112, 52, 111, 112, 111,
421 112, 55, 111, 112, 112, 112, 112, 112, 111, 112,
422 63, 111, 112, 66, 111, 112, 67, 111, 112, 111,
423 112, 112, 111, 112, 112, 80, 111, 112, 112, 111,
424 112, 112, 111, 112, 89, 111, 112, 112, 111, 112,
425 112, 111, 112, 112, 112, 112, 112, 111, 112, 111,
426 112, 31, 111, 112, 34, 112, 37, 111, 112, 40,
427 111, 112, 111, 112, 111, 112, 111, 112, 111, 112,
428
429 111, 112, 112, 112, 112, 61, 112, 111, 112, 111,
430 112, 112, 111, 112, 112, 112, 111, 112, 112, 111,
431 112, 94, 112, 111, 112, 112, 101, 111, 112, 112,
432 112, 112, 112, 111, 112, 111, 112, 41, 111, 112,
433 42, 111, 112, 43, 111, 112, 111, 112, 50, 111,
434 112, 111, 112, 112, 112, 112, 62, 111, 112, 111,
435 112, 112, 111, 112, 112, 112, 111, 112, 112, 111,
436 112, 111, 112, 112, 104, 112, 112, 112, 112, 111,
437 112, 30, 111, 112, 46, 111, 112, 111, 112, 112,
438 112, 112, 111, 112, 112, 111, 112, 112, 112, 111,
439
440 112, 112, 111, 112, 111, 112, 112, 112, 112, 112,
441 24, 25, 111, 112, 111, 112, 112, 112, 112, 69,
442 111, 112, 70, 112, 111, 112, 112, 112, 111, 112,
443 112, 88, 111, 112, 111, 112, 112, 112, 112, 112,
444 111, 112, 54, 111, 112, 59, 112, 112, 60, 112,
445 111, 112, 75, 112, 112, 83, 111, 112, 112, 111,
446 112, 96, 112, 112, 112, 106, 112, 111, 112, 112,
447 73, 111, 112, 112, 112, 111, 112, 112, 105, 112,
448 27, 111, 112, 58, 112, 112, 85, 112, 98, 111,
449 112, 102, 112, 77, 112
450
451 } ;
452
453static yyconst short int yy_accept[676] =
454 { 0,
455 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
456 1, 1, 1, 2, 4, 7, 9, 12, 15, 18,
457 20, 23, 25, 28, 30, 33, 36, 39, 41, 45,
458 49, 53, 57, 61, 65, 69, 73, 77, 81, 85,
459 89, 93, 97, 101, 105, 109, 113, 117, 120, 123,
460 126, 128, 131, 134, 138, 140, 143, 146, 149, 151,
461 154, 157, 159, 162, 165, 168, 171, 174, 177, 179,
462 181, 184, 184, 185, 186, 187, 187, 188, 188, 189,
463 189, 189, 190, 191, 192, 193, 194, 194, 196, 198,
464 200, 202, 204, 206, 207, 209, 211, 213, 215, 218,
465
466 220, 222, 224, 226, 228, 230, 232, 234, 236, 237,
467 238, 240, 242, 244, 246, 248, 250, 252, 254, 255,
468 257, 259, 262, 264, 265, 267, 269, 271, 273, 274,
469 276, 278, 280, 282, 284, 286, 288, 290, 292, 293,
470 295, 297, 298, 299, 301, 301, 301, 301, 301, 301,
471 302, 303, 304, 305, 306, 307, 308, 308, 309, 310,
472 311, 311, 312, 313, 313, 313, 314, 315, 316, 318,
473 321, 324, 326, 328, 330, 333, 335, 337, 339, 341,
474 343, 345, 347, 349, 351, 353, 356, 358, 360, 362,
475 364, 366, 368, 369, 370, 372, 374, 376, 378, 380,
476
477 382, 384, 387, 390, 392, 393, 395, 397, 399, 400,
478 402, 405, 407, 409, 411, 412, 414, 416, 418, 421,
479 423, 425, 427, 429, 431, 433, 435, 436, 438, 440,
480 442, 443, 444, 445, 447, 448, 448, 448, 448, 448,
481 449, 449, 450, 451, 453, 455, 457, 459, 461, 463,
482 465, 467, 469, 471, 473, 475, 477, 479, 481, 483,
483 485, 487, 489, 491, 493, 495, 497, 500, 501, 502,
484 504, 506, 508, 510, 512, 514, 516, 518, 520, 523,
485 524, 526, 528, 530, 531, 533, 535, 537, 539, 540,
486 543, 545, 547, 550, 552, 554, 556, 559, 562, 564,
487
488 565, 567, 569, 571, 573, 575, 576, 577, 578, 581,
489 581, 581, 581, 581, 583, 585, 587, 589, 592, 593,
490 595, 597, 599, 602, 604, 606, 608, 610, 612, 614,
491 616, 618, 620, 622, 624, 626, 628, 631, 632, 633,
492 634, 636, 638, 640, 642, 644, 646, 648, 650, 652,
493 653, 655, 658, 660, 661, 663, 665, 667, 669, 670,
494 672, 674, 676, 678, 679, 681, 682, 685, 687, 689,
495 690, 692, 693, 694, 695, 696, 696, 696, 696, 699,
496 701, 703, 705, 706, 708, 710, 713, 715, 717, 719,
497 721, 723, 725, 727, 729, 731, 734, 736, 738, 740,
498
499 742, 743, 744, 745, 747, 749, 751, 753, 755, 757,
500 759, 761, 763, 765, 766, 769, 771, 772, 774, 776,
501 778, 780, 781, 783, 785, 788, 791, 792, 794, 795,
502 798, 800, 801, 802, 803, 804, 805, 805, 805, 805,
503 807, 809, 811, 812, 815, 817, 819, 821, 823, 826,
504 829, 831, 833, 836, 838, 840, 843, 845, 847, 848,
505 849, 850, 852, 854, 857, 860, 862, 864, 867, 869,
506 871, 873, 874, 876, 877, 880, 882, 885, 888, 889,
507 891, 893, 894, 896, 897, 899, 901, 902, 903, 904,
508 905, 905, 905, 905, 907, 909, 911, 912, 914, 916,
509
510 918, 920, 922, 925, 927, 930, 932, 935, 936, 937,
511 938, 939, 941, 944, 947, 950, 952, 953, 955, 956,
512 959, 960, 962, 963, 965, 968, 969, 971, 972, 974,
513 975, 976, 977, 978, 978, 978, 978, 980, 982, 985,
514 987, 990, 993, 995, 997, 999, 1001, 1003, 1004, 1005,
515 1006, 1008, 1010, 1012, 1013, 1015, 1016, 1017, 1019, 1020,
516 1022, 1024, 1026, 1027, 1030, 1031, 1032, 1033, 1034, 1034,
517 1034, 1034, 1036, 1038, 1041, 1044, 1047, 1049, 1052, 1054,
518 1055, 1056, 1057, 1060, 1062, 1063, 1065, 1066, 1067, 1069,
519 1070, 1072, 1074, 1075, 1077, 1078, 1079, 1080, 1080, 1080,
520
521 1080, 1082, 1085, 1088, 1090, 1091, 1092, 1093, 1095, 1096,
522 1098, 1099, 1100, 1102, 1103, 1105, 1107, 1108, 1109, 1110,
523 1111, 1111, 1113, 1113, 1115, 1117, 1118, 1119, 1120, 1123,
524 1125, 1127, 1128, 1129, 1131, 1132, 1135, 1137, 1138, 1139,
525 1140, 1141, 1141, 1143, 1146, 1148, 1149, 1151, 1153, 1155,
526 1156, 1159, 1160, 1162, 1164, 1165, 1166, 1168, 1168, 1170,
527 1171, 1174, 1175, 1176, 1178, 1179, 1181, 1184, 1186, 1187,
528 1189, 1192, 1194, 1196, 1196
529 } ;
530
531static yyconst int yy_ec[256] =
532 { 0,
533 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
534 4, 4, 4, 1, 1, 1, 1, 1, 1, 1,
535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
536 1, 2, 5, 6, 1, 1, 1, 7, 8, 9,
537 9, 10, 1, 9, 11, 12, 13, 14, 15, 16,
538 16, 17, 18, 19, 16, 20, 16, 21, 22, 23,
539 24, 1, 1, 9, 25, 26, 27, 28, 29, 30,
540 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
541 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
542 51, 1, 52, 53, 1, 1, 54, 55, 56, 57,
543
544 58, 59, 60, 61, 62, 63, 59, 64, 65, 66,
545 67, 68, 59, 69, 70, 71, 72, 73, 59, 74,
546 59, 75, 76, 77, 78, 1, 1, 1, 1, 1,
547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
554
555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
556 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
557 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
558 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
559 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
560 1, 1, 1, 1, 1
561 } ;
562
563static yyconst int yy_meta[79] =
564 { 0,
565 1, 2, 3, 3, 1, 4, 5, 6, 1, 1,
566 7, 1, 1, 8, 8, 8, 8, 8, 8, 8,
567 9, 1, 1, 9, 8, 8, 8, 8, 8, 8,
568 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
569 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
570 1, 1, 1, 11, 11, 11, 11, 11, 11, 11,
571 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
572 11, 11, 11, 11, 11, 12, 1, 12
573 } ;
574
575static yyconst short int yy_base[691] =
576 { 0,
577 0, 0, 76, 78, 80, 81, 82, 89, 83, 93,
578 96, 106, 844, 833, 116, 119, 822, 821, 177, 126,
579 4166, 127, 816, 123, 4166, 134, 805, 4166, 242, 292,
580 141, 298, 152, 314, 322, 130, 338, 359, 360, 376,
581 382, 397, 410, 437, 440, 462, 463, 495, 0, 0,
582 4166, 4166, 811, 4166, 4166, 807, 807, 0, 0, 809,
583 0, 0, 787, 4166, 4166, 4166, 0, 160, 191, 104,
584 4166, 800, 261, 0, 798, 797, 0, 79, 0, 426,
585 793, 4166, 511, 787, 4166, 527, 771, 512, 513, 528,
586 529, 544, 550, 0, 561, 567, 578, 589, 595, 611,
587
588 617, 628, 641, 644, 664, 661, 672, 685, 727, 737,
589 696, 702, 713, 719, 730, 741, 747, 758, 725, 771,
590 774, 787, 795, 725, 798, 811, 822, 835, 720, 851,
591 857, 868, 874, 885, 900, 901, 916, 917, 716, 932,
592 933, 716, 45, 948, 980, 987, 736, 97, 120, 0,
593 0, 4166, 4166, 0, 4166, 0, 750, 0, 291, 4166,
594 761, 0, 0, 79, 739, 994, 4166, 4166, 990, 1003,
595 1011, 1014, 1027, 1035, 1038, 1051, 1059, 1067, 1075, 1088,
596 1096, 1099, 1120, 1121, 1136, 1142, 1153, 1159, 1170, 1176,
597 1187, 1198, 707, 693, 1211, 1219, 1222, 1237, 1240, 1243,
598
599 1267, 1261, 1264, 1282, 702, 1285, 1300, 1306, 696, 1317,
600 1328, 1334, 1345, 1356, 686, 1367, 1373, 1384, 1390, 1405,
601 1406, 1421, 1432, 1438, 1453, 1459, 692, 1470, 1481, 1492,
602 675, 686, 681, 1503, 4166, 1542, 697, 143, 158, 4166,
603 683, 4166, 4166, 1527, 1528, 1543, 1549, 1564, 1565, 1582,
604 1581, 1597, 1603, 1614, 1625, 1643, 1640, 1646, 1661, 1664,
605 1667, 1682, 1688, 1699, 1710, 1725, 1731, 664, 668, 1742,
606 1748, 1763, 1764, 1779, 1785, 1796, 1809, 1817, 1825, 658,
607 1840, 1843, 1856, 670, 1864, 1880, 1879, 1896, 649, 1897,
608 1912, 1925, 1933, 1936, 1954, 1951, 1957, 1972, 1975, 648,
609
610 1978, 1993, 1999, 2010, 2016, 660, 649, 660, 2031, 2063,
611 283, 280, 305, 2048, 2064, 2072, 2080, 2088, 644, 2096,
612 2104, 2117, 2125, 2128, 2146, 2143, 2149, 2164, 2170, 2185,
613 2186, 2201, 2216, 2222, 2233, 2239, 2254, 653, 641, 627,
614 2255, 2275, 2272, 2293, 2292, 2310, 2309, 2325, 2331, 633,
615 2342, 2353, 2359, 623, 2370, 2381, 2387, 2398, 639, 2411,
616 2414, 2422, 2435, 616, 2446, 625, 2452, 2467, 2468, 613,
617 2483, 607, 604, 610, 4166, 302, 321, 96, 2489, 2504,
618 2507, 2515, 610, 2530, 2536, 2547, 2553, 2564, 2570, 2581,
619 2592, 2598, 2615, 2621, 2637, 2638, 2653, 2654, 2669, 2675,
620
621 605, 607, 599, 2686, 2692, 2707, 2708, 2728, 2729, 2744,
622 2752, 2765, 2773, 604, 2776, 2794, 631, 2791, 2797, 2812,
623 2815, 603, 2823, 2838, 2841, 2844, 590, 2859, 574, 2862,
624 2865, 588, 576, 574, 583, 581, 317, 309, 328, 2880,
625 2883, 2896, 572, 2904, 2917, 2925, 2928, 2941, 2949, 2952,
626 2965, 2976, 2973, 2989, 3000, 3011, 3017, 3028, 54, 589,
627 564, 3034, 3045, 3056, 3062, 3073, 3079, 3094, 3095, 3110,
628 3111, 583, 3126, 566, 3127, 3144, 3147, 3150, 558, 3165,
629 3171, 554, 3186, 576, 3192, 0, 555, 559, 536, 566,
630 347, 226, 339, 3203, 3209, 3224, 548, 3230, 3241, 3254,
631
632 3262, 3265, 3280, 3283, 3291, 3304, 3307, 531, 525, 525,
633 531, 3322, 3328, 3339, 3345, 3356, 516, 3367, 512, 3373,
634 511, 3384, 521, 3395, 3401, 517, 3412, 504, 3418, 506,
635 507, 520, 466, 325, 465, 348, 3429, 3440, 3451, 0,
636 3457, 3468, 3479, 3490, 3496, 3511, 3512, 467, 476, 464,
637 0, 3527, 3528, 470, 3544, 450, 462, 3545, 474, 3560,
638 0, 3566, 447, 3577, 444, 454, 423, 424, 361, 3616,
639 353, 3601, 3602, 3617, 3618, 3633, 3634, 3649, 3650, 430,
640 434, 428, 3665, 3673, 421, 3681, 421, 412, 3689, 403,
641 3697, 3705, 410, 0, 400, 401, 403, 189, 3737, 519,
642
643 3722, 3723, 3738, 3746, 398, 417, 394, 3759, 398, 3767,
644 391, 391, 3770, 383, 3783, 3794, 383, 378, 383, 378,
645 371, 4166, 3833, 3818, 3819, 378, 363, 359, 3834, 0,
646 3840, 357, 347, 3851, 351, 3857, 3868, 330, 315, 305,
647 295, 558, 3884, 3881, 0, 282, 0, 3892, 0, 262,
648 3907, 256, 3910, 0, 188, 141, 0, 3954, 3939, 138,
649 3940, 120, 105, 3955, 95, 0, 3956, 0, 37, 0,
650 3972, 0, 0, 4166, 4017, 4029, 4041, 4053, 4065, 4077,
651 4088, 4089, 4093, 4104, 4116, 4128, 4139, 4144, 4149, 4154
652 } ;
653
654static yyconst short int yy_def[691] =
655 { 0,
656 674, 1, 675, 675, 676, 676, 677, 677, 678, 678,
657 679, 679, 674, 674, 674, 674, 674, 680, 674, 681,
658 674, 674, 674, 674, 674, 674, 674, 674, 674, 29,
659 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
660 29, 29, 29, 29, 29, 29, 29, 682, 683, 684,
661 674, 674, 674, 674, 674, 674, 674, 685, 685, 674,
662 686, 686, 674, 674, 674, 674, 687, 674, 674, 19,
663 674, 674, 674, 680, 680, 674, 688, 674, 689, 681,
664 681, 674, 674, 674, 674, 674, 674, 29, 29, 29,
665 29, 29, 29, 690, 29, 29, 29, 29, 29, 29,
666
667 29, 29, 29, 29, 29, 29, 29, 29, 690, 690,
668 29, 29, 29, 29, 29, 29, 29, 29, 690, 29,
669 29, 29, 29, 690, 29, 29, 29, 29, 690, 29,
670 29, 29, 29, 29, 29, 29, 29, 29, 690, 29,
671 29, 690, 690, 29, 674, 682, 146, 146, 146, 683,
672 684, 674, 674, 685, 674, 686, 674, 687, 674, 674,
673 674, 688, 689, 674, 674, 674, 674, 674, 29, 29,
674 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
675 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
676 29, 29, 690, 690, 29, 29, 29, 29, 29, 29,
677
678 29, 29, 29, 29, 690, 29, 29, 29, 690, 29,
679 29, 29, 29, 29, 690, 29, 29, 29, 29, 29,
680 29, 29, 29, 29, 29, 29, 690, 29, 29, 29,
681 690, 690, 690, 29, 674, 674, 146, 146, 146, 674,
682 674, 674, 674, 29, 29, 29, 29, 29, 29, 29,
683 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
684 29, 29, 29, 29, 29, 29, 29, 690, 690, 29,
685 29, 29, 29, 29, 29, 29, 29, 29, 29, 690,
686 29, 29, 29, 690, 29, 29, 29, 29, 690, 29,
687 29, 29, 29, 29, 29, 29, 29, 29, 29, 690,
688
689 29, 29, 29, 29, 29, 690, 690, 690, 29, 674,
690 146, 146, 146, 29, 29, 29, 29, 29, 690, 29,
691 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
692 29, 29, 29, 29, 29, 29, 29, 690, 690, 690,
693 29, 29, 29, 29, 29, 29, 29, 29, 29, 690,
694 29, 29, 29, 690, 29, 29, 29, 29, 690, 29,
695 29, 29, 29, 690, 29, 690, 29, 29, 29, 690,
696 29, 690, 690, 690, 674, 146, 146, 146, 29, 29,
697 29, 29, 690, 29, 29, 29, 29, 29, 29, 29,
698 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
699
700 690, 690, 690, 29, 29, 29, 29, 29, 29, 29,
701 29, 29, 29, 690, 29, 29, 690, 29, 29, 29,
702 29, 690, 29, 29, 29, 29, 690, 29, 690, 29,
703 29, 690, 690, 690, 690, 690, 146, 146, 146, 29,
704 29, 29, 690, 29, 29, 29, 29, 29, 29, 29,
705 29, 29, 29, 29, 29, 29, 29, 29, 690, 690,
706 690, 29, 29, 29, 29, 29, 29, 29, 29, 29,
707 29, 690, 29, 690, 29, 29, 29, 29, 690, 29,
708 29, 690, 29, 690, 29, 690, 690, 690, 690, 690,
709 146, 146, 146, 29, 29, 29, 690, 29, 29, 29,
710
711 29, 29, 29, 29, 29, 29, 29, 690, 690, 690,
712 690, 29, 29, 29, 29, 29, 690, 29, 690, 29,
713 690, 29, 690, 29, 29, 690, 29, 690, 29, 690,
714 690, 690, 690, 146, 146, 146, 29, 29, 29, 690,
715 29, 29, 29, 29, 29, 29, 29, 690, 690, 690,
716 690, 29, 29, 690, 29, 690, 690, 29, 690, 29,
717 690, 29, 690, 29, 690, 690, 690, 690, 146, 674,
718 146, 29, 29, 29, 29, 29, 29, 29, 29, 690,
719 690, 690, 29, 29, 690, 29, 690, 690, 29, 690,
720 29, 29, 690, 690, 690, 690, 690, 146, 674, 146,
721
722 29, 29, 29, 29, 690, 690, 690, 29, 690, 29,
723 690, 690, 29, 690, 29, 29, 690, 690, 690, 690,
724 146, 674, 674, 29, 29, 690, 690, 690, 29, 690,
725 29, 690, 690, 29, 690, 29, 29, 690, 690, 690,
726 690, 146, 29, 29, 690, 690, 690, 29, 690, 690,
727 29, 690, 29, 690, 690, 690, 690, 674, 29, 690,
728 29, 690, 690, 29, 690, 690, 29, 690, 690, 690,
729 29, 690, 690, 0, 674, 674, 674, 674, 674, 674,
730 674, 674, 674, 674, 674, 674, 674, 674, 674, 674
731 } ;
732
733static yyconst short int yy_nxt[4245] =
734 { 0,
735 14, 15, 16, 15, 17, 18, 19, 20, 21, 14,
736 22, 23, 24, 25, 26, 26, 26, 26, 26, 26,
737 27, 17, 28, 28, 29, 30, 31, 32, 33, 34,
738 35, 36, 37, 36, 36, 36, 38, 39, 40, 41,
739 36, 42, 43, 44, 45, 46, 47, 36, 36, 36,
740 48, 17, 14, 49, 49, 49, 49, 49, 49, 49,
741 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
742 49, 49, 49, 49, 49, 21, 17, 21, 51, 52,
743 51, 52, 55, 55, 59, 62, 53, 60, 53, 56,
744 56, 59, 57, 57, 60, 62, 508, 68, 69, 68,
745
746 76, 232, 70, 63, 242, 673, 64, 68, 69, 68,
747 243, 674, 70, 63, 233, 509, 64, 73, 73, 73,
748 73, 73, 73, 72, 439, 674, 72, 80, 80, 80,
749 72, 78, 85, 72, 72, 147, 147, 82, 238, 80,
750 80, 83, 83, 83, 83, 83, 83, 86, 86, 86,
751 86, 86, 86, 86, 672, 88, 674, 239, 65, 147,
752 66, 159, 159, 159, 670, 88, 88, 88, 65, 88,
753 66, 28, 100, 71, 88, 312, 101, 88, 88, 102,
754 88, 28, 147, 71, 72, 88, 669, 88, 104, 105,
755 313, 88, 159, 159, 159, 668, 88, 147, 76, 106,
756
757 666, 77, 77, 77, 77, 77, 77, 77, 77, 77,
758 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
759 77, 77, 77, 77, 77, 77, 77, 621, 147, 78,
760 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
761 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
762 79, 79, 88, 665, 535, 88, 88, 88, 88, 88,
763 88, 88, 73, 73, 73, 147, 88, 89, 88, 88,
764 88, 88, 88, 88, 88, 88, 88, 90, 88, 91,
765 88, 92, 88, 88, 88, 88, 93, 88, 88, 88,
766 88, 88, 159, 159, 159, 94, 94, 94, 94, 94,
767
768 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
769 94, 94, 94, 94, 94, 94, 94, 88, 376, 147,
770 95, 663, 147, 88, 96, 377, 103, 88, 97, 88,
771 98, 88, 662, 88, 437, 88, 88, 88, 107, 88,
772 99, 147, 88, 491, 147, 438, 660, 88, 147, 88,
773 378, 88, 492, 88, 657, 108, 147, 88, 88, 88,
774 147, 88, 111, 88, 147, 112, 88, 147, 569, 493,
775 656, 534, 571, 88, 113, 114, 655, 88, 147, 109,
776 115, 536, 88, 116, 88, 88, 147, 147, 600, 654,
777 110, 117, 147, 598, 88, 88, 88, 88, 88, 88,
778
779 147, 120, 121, 88, 118, 122, 125, 88, 642, 126,
780 147, 88, 652, 88, 650, 123, 649, 127, 647, 88,
781 88, 88, 88, 128, 646, 130, 88, 80, 80, 80,
782 124, 119, 88, 164, 88, 88, 88, 645, 131, 80,
783 80, 88, 132, 641, 640, 88, 639, 88, 638, 88,
784 129, 635, 633, 133, 88, 135, 632, 630, 134, 628,
785 627, 136, 88, 626, 620, 88, 570, 570, 570, 619,
786 618, 617, 88, 614, 88, 88, 88, 140, 137, 88,
787 612, 88, 611, 141, 88, 138, 609, 88, 88, 607,
788 606, 605, 597, 596, 139, 144, 595, 88, 88, 88,
789
790 88, 88, 88, 594, 147, 142, 88, 88, 145, 145,
791 145, 145, 145, 145, 145, 593, 590, 588, 587, 146,
792 623, 623, 623, 143, 166, 166, 166, 166, 166, 166,
793 166, 585, 582, 581, 148, 580, 568, 88, 88, 149,
794 86, 86, 86, 86, 86, 86, 86, 88, 88, 88,
795 88, 88, 88, 88, 88, 169, 88, 88, 147, 658,
796 658, 658, 567, 170, 88, 88, 88, 88, 88, 88,
797 566, 565, 88, 88, 563, 88, 561, 171, 559, 88,
798 557, 88, 556, 172, 554, 88, 88, 88, 88, 88,
799 551, 174, 88, 173, 88, 550, 88, 147, 88, 549,
800
801 88, 548, 88, 88, 88, 88, 88, 540, 533, 532,
802 175, 88, 531, 88, 88, 88, 530, 176, 528, 526,
803 88, 523, 88, 521, 88, 519, 88, 177, 88, 511,
804 88, 510, 88, 88, 88, 178, 88, 497, 490, 88,
805 489, 180, 88, 488, 487, 486, 88, 484, 88, 179,
806 88, 482, 88, 88, 88, 88, 88, 479, 474, 472,
807 461, 88, 460, 88, 181, 182, 88, 88, 459, 184,
808 183, 443, 88, 436, 435, 434, 88, 432, 88, 88,
809 88, 88, 429, 88, 427, 88, 88, 188, 88, 88,
810 185, 186, 422, 417, 414, 403, 88, 88, 88, 88,
811
812 189, 88, 402, 88, 190, 88, 401, 191, 187, 88,
813 88, 88, 383, 195, 374, 373, 88, 372, 366, 359,
814 88, 88, 88, 192, 88, 354, 350, 88, 339, 88,
815 196, 88, 338, 88, 160, 88, 311, 88, 88, 88,
816 88, 88, 308, 307, 88, 198, 88, 306, 88, 300,
817 88, 289, 197, 284, 88, 88, 88, 88, 88, 280,
818 269, 199, 200, 88, 268, 88, 88, 88, 201, 88,
819 243, 241, 88, 240, 88, 147, 88, 231, 88, 227,
820 88, 215, 88, 88, 203, 88, 88, 209, 202, 205,
821 194, 88, 193, 204, 168, 88, 88, 88, 167, 88,
822
823 165, 161, 88, 160, 206, 160, 88, 157, 88, 88,
824 88, 88, 88, 88, 155, 88, 85, 207, 88, 153,
825 88, 152, 88, 88, 88, 87, 88, 84, 75, 72,
826 88, 88, 88, 88, 88, 88, 88, 88, 208, 88,
827 72, 210, 88, 674, 674, 674, 88, 88, 88, 674,
828 88, 674, 674, 674, 674, 88, 211, 88, 674, 88,
829 88, 88, 674, 213, 674, 674, 212, 214, 674, 674,
830 88, 674, 88, 674, 88, 216, 88, 674, 674, 88,
831 674, 674, 88, 674, 674, 674, 217, 674, 88, 674,
832 88, 674, 88, 88, 88, 88, 88, 218, 674, 88,
833
834 219, 88, 674, 88, 674, 88, 674, 88, 674, 88,
835 88, 88, 88, 88, 223, 221, 674, 220, 88, 674,
836 88, 674, 222, 674, 88, 88, 88, 674, 674, 88,
837 674, 224, 674, 674, 674, 88, 88, 88, 88, 88,
838 88, 88, 88, 674, 88, 88, 674, 674, 674, 674,
839 674, 88, 88, 88, 88, 88, 226, 88, 88, 229,
840 225, 88, 230, 674, 228, 674, 674, 88, 88, 88,
841 88, 88, 88, 88, 674, 674, 88, 88, 674, 674,
842 674, 674, 674, 88, 674, 88, 674, 88, 236, 236,
843 236, 234, 88, 145, 145, 145, 145, 145, 145, 145,
844
845 674, 674, 674, 674, 674, 674, 674, 166, 166, 166,
846 166, 166, 166, 166, 674, 88, 674, 674, 244, 674,
847 674, 674, 674, 674, 674, 88, 237, 88, 88, 88,
848 674, 235, 674, 245, 88, 674, 88, 674, 88, 88,
849 88, 674, 88, 674, 674, 674, 88, 88, 88, 246,
850 88, 88, 88, 88, 674, 88, 674, 674, 88, 674,
851 88, 674, 88, 88, 88, 247, 88, 248, 674, 674,
852 88, 88, 88, 88, 88, 88, 88, 88, 674, 88,
853 674, 674, 88, 674, 88, 674, 88, 674, 88, 674,
854 88, 674, 88, 249, 250, 88, 88, 674, 88, 674,
855
856 88, 674, 88, 88, 88, 674, 88, 252, 251, 674,
857 88, 88, 88, 88, 88, 674, 674, 674, 674, 88,
858 674, 88, 674, 88, 88, 88, 674, 88, 674, 674,
859 253, 88, 88, 88, 88, 254, 88, 674, 88, 674,
860 88, 255, 256, 88, 257, 88, 88, 674, 674, 259,
861 674, 674, 258, 674, 674, 88, 88, 88, 88, 88,
862 88, 88, 674, 674, 88, 88, 674, 88, 674, 674,
863 674, 88, 674, 88, 260, 88, 674, 88, 88, 88,
864 88, 88, 674, 674, 88, 674, 88, 262, 88, 261,
865 88, 674, 88, 674, 88, 88, 88, 88, 88, 674,
866
867 674, 88, 674, 88, 265, 263, 674, 88, 264, 88,
868 674, 88, 88, 88, 88, 88, 674, 674, 674, 674,
869 88, 674, 88, 88, 88, 674, 88, 674, 674, 266,
870 674, 88, 674, 88, 267, 88, 88, 88, 674, 674,
871 674, 674, 88, 674, 88, 674, 88, 88, 88, 674,
872 88, 674, 674, 270, 88, 88, 271, 272, 88, 88,
873 273, 88, 88, 88, 674, 88, 88, 674, 88, 674,
874 674, 276, 274, 674, 88, 88, 88, 88, 88, 88,
875 88, 88, 88, 275, 88, 277, 88, 88, 674, 88,
876 674, 674, 88, 674, 674, 674, 88, 674, 88, 88,
877
878 88, 88, 88, 88, 88, 88, 88, 88, 278, 674,
879 88, 88, 674, 281, 674, 674, 674, 279, 674, 88,
880 88, 88, 88, 674, 88, 88, 88, 674, 282, 88,
881 674, 88, 674, 674, 674, 88, 674, 88, 283, 88,
882 674, 88, 88, 88, 88, 88, 674, 674, 674, 674,
883 88, 674, 88, 88, 88, 674, 88, 674, 674, 88,
884 285, 88, 674, 88, 674, 88, 674, 88, 674, 88,
885 88, 88, 88, 88, 674, 674, 286, 674, 88, 674,
886 88, 88, 88, 674, 88, 674, 674, 287, 674, 88,
887 674, 88, 88, 88, 674, 88, 674, 291, 88, 674,
888
889 88, 288, 290, 674, 88, 674, 88, 674, 88, 88,
890 88, 88, 88, 674, 674, 88, 674, 88, 674, 88,
891 674, 88, 674, 88, 674, 88, 674, 88, 292, 88,
892 88, 88, 674, 293, 88, 674, 674, 674, 294, 674,
893 88, 88, 88, 88, 88, 88, 88, 674, 674, 88,
894 88, 674, 674, 674, 674, 674, 88, 88, 88, 674,
895 88, 674, 674, 88, 295, 88, 674, 88, 674, 88,
896 674, 88, 674, 88, 296, 88, 88, 88, 88, 674,
897 297, 298, 88, 674, 88, 674, 674, 299, 88, 674,
898 88, 674, 88, 674, 88, 88, 88, 88, 88, 674,
899
900 674, 674, 674, 88, 674, 88, 88, 88, 301, 88,
901 302, 305, 674, 674, 88, 303, 88, 88, 88, 674,
902 88, 674, 674, 674, 304, 88, 674, 88, 88, 88,
903 674, 88, 674, 674, 309, 674, 88, 674, 88, 674,
904 88, 674, 88, 236, 236, 236, 674, 88, 674, 674,
905 674, 674, 88, 88, 674, 310, 310, 310, 310, 310,
906 310, 310, 88, 88, 314, 88, 88, 88, 88, 315,
907 674, 88, 88, 674, 88, 316, 674, 674, 88, 674,
908 88, 674, 88, 674, 88, 317, 88, 88, 88, 88,
909 88, 674, 674, 88, 674, 674, 674, 674, 674, 88,
910
911 88, 318, 88, 88, 88, 321, 88, 88, 88, 88,
912 320, 674, 674, 674, 674, 674, 88, 88, 88, 88,
913 88, 88, 88, 322, 674, 88, 88, 674, 88, 674,
914 674, 674, 88, 674, 88, 319, 88, 674, 88, 88,
915 88, 88, 88, 674, 674, 323, 674, 88, 674, 88,
916 88, 88, 324, 88, 674, 674, 674, 674, 88, 674,
917 88, 674, 88, 674, 88, 88, 325, 326, 88, 88,
918 674, 88, 674, 674, 674, 88, 674, 88, 88, 88,
919 88, 88, 88, 328, 327, 88, 88, 88, 329, 88,
920 88, 330, 88, 674, 674, 331, 88, 674, 88, 88,
921
922 88, 88, 88, 88, 88, 88, 88, 88, 88, 674,
923 674, 88, 674, 88, 674, 674, 674, 88, 674, 88,
924 333, 332, 674, 88, 88, 88, 88, 88, 674, 674,
925 674, 674, 88, 674, 88, 88, 88, 674, 88, 674,
926 334, 674, 674, 88, 674, 88, 674, 335, 674, 88,
927 88, 336, 674, 337, 88, 674, 88, 674, 674, 674,
928 88, 674, 88, 674, 88, 674, 88, 88, 88, 88,
929 88, 674, 674, 88, 674, 88, 674, 88, 674, 88,
930 674, 88, 674, 88, 674, 88, 88, 88, 88, 88,
931 674, 341, 88, 674, 674, 342, 674, 674, 88, 88,
932
933 88, 88, 88, 88, 88, 343, 674, 88, 88, 345,
934 88, 674, 340, 674, 88, 674, 88, 674, 88, 674,
935 88, 88, 88, 344, 88, 348, 346, 674, 674, 88,
936 674, 88, 674, 88, 88, 88, 674, 347, 674, 674,
937 88, 674, 88, 674, 88, 674, 88, 674, 88, 674,
938 88, 674, 88, 88, 88, 674, 88, 674, 674, 349,
939 88, 88, 88, 674, 88, 88, 351, 674, 88, 88,
940 674, 674, 674, 674, 674, 88, 674, 88, 88, 88,
941 88, 88, 88, 674, 88, 674, 352, 88, 674, 88,
942 356, 88, 355, 88, 353, 88, 674, 674, 674, 88,
943
944 88, 88, 674, 88, 88, 88, 674, 357, 88, 674,
945 674, 674, 674, 674, 88, 88, 88, 88, 88, 88,
946 358, 88, 88, 88, 88, 674, 674, 674, 674, 674,
947 674, 88, 88, 88, 88, 88, 88, 88, 674, 674,
948 88, 88, 674, 674, 674, 674, 674, 88, 674, 88,
949 88, 88, 674, 361, 674, 360, 88, 674, 88, 674,
950 88, 88, 88, 674, 88, 674, 674, 674, 88, 88,
951 88, 88, 88, 362, 674, 88, 88, 88, 363, 88,
952 88, 674, 88, 674, 674, 365, 88, 674, 88, 88,
953 88, 88, 88, 88, 88, 88, 88, 88, 88, 674,
954
955 88, 88, 674, 88, 674, 674, 674, 88, 674, 88,
956 88, 88, 88, 88, 88, 367, 88, 88, 88, 88,
957 674, 364, 88, 674, 88, 674, 674, 369, 88, 674,
958 88, 674, 88, 674, 88, 88, 88, 368, 88, 674,
959 674, 88, 674, 88, 674, 88, 674, 88, 674, 88,
960 674, 88, 674, 88, 88, 88, 88, 674, 371, 674,
961 88, 674, 674, 674, 674, 674, 88, 674, 88, 674,
962 88, 370, 674, 88, 674, 88, 310, 310, 310, 310,
963 310, 310, 310, 88, 674, 88, 674, 88, 380, 88,
964 674, 379, 88, 674, 674, 674, 674, 88, 381, 88,
965
966 674, 88, 674, 88, 382, 88, 674, 88, 88, 88,
967 674, 88, 674, 88, 375, 88, 88, 88, 674, 88,
968 384, 88, 674, 88, 88, 88, 674, 88, 674, 88,
969 385, 88, 88, 88, 674, 88, 674, 674, 674, 88,
970 88, 88, 88, 88, 674, 386, 674, 674, 88, 674,
971 88, 674, 88, 88, 88, 674, 88, 674, 674, 674,
972 88, 88, 88, 88, 88, 387, 674, 88, 88, 88,
973 388, 88, 88, 674, 88, 389, 674, 674, 88, 674,
974 88, 88, 88, 88, 390, 88, 88, 88, 88, 88,
975 88, 674, 391, 88, 674, 88, 392, 393, 674, 88,
976
977 674, 88, 674, 88, 674, 88, 674, 88, 88, 88,
978 88, 88, 674, 394, 88, 674, 674, 674, 674, 674,
979 88, 88, 88, 88, 88, 88, 88, 395, 674, 88,
980 88, 674, 674, 674, 674, 674, 88, 674, 88, 674,
981 88, 88, 397, 674, 396, 88, 674, 88, 674, 674,
982 674, 88, 674, 88, 674, 88, 674, 88, 88, 88,
983 88, 88, 674, 674, 88, 398, 88, 674, 88, 674,
984 88, 674, 88, 674, 88, 399, 400, 88, 88, 88,
985 88, 674, 674, 88, 674, 674, 674, 404, 674, 88,
986 88, 88, 88, 88, 88, 674, 674, 88, 88, 88,
987
988 88, 405, 674, 406, 674, 674, 674, 88, 674, 88,
989 88, 88, 88, 674, 88, 407, 88, 88, 88, 88,
990 408, 674, 674, 674, 674, 674, 674, 88, 88, 409,
991 88, 88, 88, 674, 88, 88, 88, 88, 410, 674,
992 674, 413, 674, 412, 88, 88, 88, 88, 88, 88,
993 88, 411, 674, 88, 88, 674, 88, 674, 674, 674,
994 88, 674, 88, 674, 88, 674, 88, 88, 88, 88,
995 88, 674, 674, 674, 674, 88, 674, 88, 88, 88,
996 674, 88, 674, 674, 88, 415, 88, 674, 88, 674,
997 88, 674, 88, 674, 88, 88, 416, 88, 88, 674,
998
999 674, 674, 674, 88, 674, 88, 88, 88, 674, 88,
1000 674, 418, 88, 419, 88, 674, 88, 674, 88, 674,
1001 88, 674, 88, 88, 420, 88, 88, 674, 674, 674,
1002 674, 88, 674, 88, 674, 88, 88, 88, 674, 88,
1003 674, 421, 88, 423, 674, 674, 88, 88, 88, 88,
1004 88, 424, 425, 88, 674, 88, 674, 88, 88, 88,
1005 88, 88, 674, 674, 674, 674, 88, 674, 674, 674,
1006 88, 88, 88, 674, 88, 674, 674, 88, 428, 88,
1007 674, 88, 426, 88, 674, 88, 674, 88, 674, 88,
1008 88, 88, 88, 88, 674, 430, 88, 674, 674, 674,
1009
1010 674, 674, 88, 88, 88, 88, 88, 88, 88, 431,
1011 674, 88, 88, 674, 88, 674, 674, 674, 88, 674,
1012 88, 674, 88, 674, 88, 674, 88, 88, 88, 88,
1013 440, 441, 88, 88, 674, 674, 674, 674, 674, 88,
1014 88, 88, 88, 88, 88, 674, 88, 674, 88, 674,
1015 88, 88, 88, 433, 88, 88, 674, 674, 442, 88,
1016 674, 88, 674, 674, 674, 88, 674, 444, 674, 88,
1017 674, 88, 88, 88, 88, 88, 674, 674, 88, 445,
1018 88, 446, 88, 674, 88, 674, 88, 674, 88, 88,
1019 88, 88, 88, 674, 674, 88, 447, 88, 674, 88,
1020
1021 674, 88, 674, 88, 674, 88, 88, 448, 88, 88,
1022 674, 674, 674, 674, 88, 674, 88, 88, 88, 450,
1023 88, 674, 674, 88, 449, 88, 674, 88, 674, 88,
1024 674, 88, 674, 88, 674, 88, 88, 88, 674, 674,
1025 88, 451, 88, 452, 674, 674, 88, 674, 453, 674,
1026 88, 674, 88, 674, 88, 674, 88, 674, 88, 88,
1027 88, 454, 88, 88, 674, 88, 674, 674, 674, 674,
1028 674, 674, 88, 88, 88, 88, 88, 88, 88, 88,
1029 674, 88, 88, 674, 674, 455, 674, 674, 88, 88,
1030 88, 88, 88, 88, 88, 674, 456, 88, 88, 458,
1031
1032 88, 457, 674, 674, 88, 674, 88, 674, 88, 674,
1033 88, 88, 88, 88, 88, 462, 674, 88, 674, 88,
1034 674, 88, 674, 88, 463, 88, 674, 88, 674, 88,
1035 88, 88, 88, 88, 464, 674, 88, 674, 674, 674,
1036 674, 674, 88, 88, 88, 88, 88, 88, 674, 674,
1037 465, 88, 88, 88, 88, 467, 466, 674, 674, 674,
1038 674, 674, 674, 88, 88, 88, 88, 88, 88, 88,
1039 674, 674, 88, 88, 674, 674, 674, 88, 674, 88,
1040 469, 88, 674, 88, 674, 468, 674, 88, 88, 88,
1041 88, 88, 674, 674, 674, 674, 88, 674, 88, 674,
1042
1043 88, 88, 88, 674, 88, 471, 674, 470, 88, 88,
1044 88, 88, 88, 88, 674, 88, 88, 88, 473, 88,
1045 88, 674, 88, 674, 674, 674, 88, 674, 475, 88,
1046 88, 88, 88, 88, 476, 88, 88, 88, 88, 674,
1047 88, 88, 674, 478, 674, 674, 674, 88, 88, 88,
1048 88, 88, 88, 674, 88, 477, 88, 674, 88, 88,
1049 88, 674, 88, 88, 481, 674, 88, 88, 480, 88,
1050 674, 674, 674, 88, 674, 88, 88, 88, 88, 88,
1051 88, 88, 88, 88, 88, 88, 483, 88, 88, 674,
1052 88, 674, 674, 674, 88, 674, 88, 88, 88, 88,
1053
1054 88, 88, 88, 88, 88, 88, 88, 485, 88, 88,
1055 674, 674, 674, 674, 674, 88, 674, 88, 88, 88,
1056 88, 88, 88, 494, 88, 674, 495, 88, 496, 88,
1057 674, 88, 674, 88, 674, 88, 674, 674, 674, 88,
1058 88, 88, 88, 88, 674, 498, 674, 674, 88, 674,
1059 88, 674, 88, 88, 88, 674, 88, 674, 674, 674,
1060 88, 88, 499, 88, 88, 500, 88, 88, 674, 88,
1061 674, 674, 88, 501, 88, 674, 88, 88, 88, 674,
1062 88, 674, 674, 674, 88, 88, 88, 88, 88, 88,
1063 88, 88, 674, 88, 674, 674, 88, 502, 88, 674,
1064
1065 88, 88, 88, 503, 88, 674, 674, 674, 88, 88,
1066 88, 88, 88, 88, 88, 88, 674, 88, 674, 674,
1067 88, 674, 674, 674, 88, 88, 88, 674, 88, 674,
1068 674, 674, 504, 88, 674, 88, 88, 88, 674, 88,
1069 674, 674, 506, 505, 88, 674, 88, 674, 88, 674,
1070 88, 674, 88, 88, 88, 88, 88, 674, 674, 88,
1071 674, 88, 674, 507, 674, 88, 512, 88, 674, 88,
1072 88, 88, 88, 88, 674, 674, 674, 674, 88, 674,
1073 88, 88, 88, 674, 88, 674, 674, 88, 513, 88,
1074 674, 88, 674, 88, 674, 88, 674, 88, 88, 88,
1075
1076 88, 88, 674, 674, 88, 674, 88, 515, 88, 674,
1077 88, 674, 88, 674, 88, 514, 88, 88, 88, 88,
1078 88, 516, 674, 88, 674, 674, 674, 674, 674, 88,
1079 88, 88, 88, 88, 88, 88, 88, 674, 88, 88,
1080 674, 674, 674, 674, 674, 88, 88, 88, 518, 88,
1081 88, 88, 88, 674, 88, 88, 674, 674, 674, 674,
1082 674, 520, 88, 88, 88, 88, 88, 674, 674, 88,
1083 88, 88, 88, 522, 674, 88, 674, 674, 674, 88,
1084 517, 88, 88, 88, 88, 88, 88, 88, 88, 88,
1085 88, 88, 674, 524, 88, 674, 88, 674, 674, 525,
1086
1087 88, 674, 88, 674, 88, 674, 88, 674, 88, 88,
1088 88, 88, 674, 537, 527, 88, 529, 88, 674, 674,
1089 674, 88, 674, 88, 674, 88, 674, 88, 88, 88,
1090 88, 88, 674, 674, 88, 674, 88, 674, 88, 674,
1091 88, 538, 88, 674, 88, 674, 88, 88, 88, 88,
1092 539, 674, 674, 88, 674, 88, 674, 674, 674, 88,
1093 674, 88, 674, 88, 674, 88, 88, 88, 88, 88,
1094 674, 541, 674, 674, 88, 674, 88, 674, 88, 88,
1095 88, 674, 543, 674, 542, 88, 674, 88, 674, 88,
1096 88, 88, 674, 88, 674, 674, 674, 88, 88, 544,
1097
1098 88, 88, 88, 545, 88, 88, 88, 674, 88, 88,
1099 674, 546, 674, 674, 674, 88, 88, 88, 88, 88,
1100 88, 674, 88, 674, 88, 674, 88, 88, 88, 88,
1101 88, 674, 88, 674, 674, 88, 547, 674, 674, 88,
1102 674, 88, 88, 88, 88, 674, 88, 88, 88, 674,
1103 552, 88, 674, 88, 674, 674, 674, 88, 674, 88,
1104 674, 88, 674, 88, 88, 88, 88, 88, 674, 674,
1105 88, 674, 88, 674, 88, 674, 88, 674, 88, 674,
1106 88, 88, 88, 88, 88, 674, 674, 674, 674, 88,
1107 674, 88, 88, 88, 674, 88, 555, 674, 88, 553,
1108
1109 88, 674, 88, 674, 88, 560, 88, 674, 88, 88,
1110 88, 88, 88, 674, 674, 674, 558, 88, 674, 88,
1111 88, 88, 674, 88, 674, 674, 88, 674, 88, 674,
1112 88, 674, 88, 674, 88, 674, 88, 88, 88, 88,
1113 88, 674, 674, 88, 674, 88, 674, 88, 674, 562,
1114 674, 88, 674, 564, 88, 88, 88, 88, 674, 674,
1115 674, 674, 88, 674, 88, 88, 88, 674, 88, 674,
1116 674, 572, 674, 88, 674, 88, 88, 88, 573, 88,
1117 674, 674, 88, 674, 88, 674, 88, 674, 88, 674,
1118 88, 674, 88, 88, 88, 88, 88, 674, 674, 674,
1119
1120 674, 88, 674, 88, 88, 88, 575, 88, 674, 674,
1121 574, 674, 88, 674, 88, 88, 88, 674, 88, 674,
1122 576, 88, 674, 88, 674, 88, 674, 88, 674, 88,
1123 674, 88, 674, 577, 88, 88, 88, 88, 578, 674,
1124 88, 674, 674, 674, 674, 674, 88, 579, 88, 88,
1125 88, 88, 88, 88, 674, 88, 88, 674, 674, 674,
1126 584, 674, 88, 88, 88, 88, 88, 88, 583, 88,
1127 88, 88, 88, 674, 674, 674, 586, 674, 674, 88,
1128 88, 88, 589, 88, 88, 88, 674, 674, 88, 88,
1129 674, 88, 674, 674, 674, 88, 674, 88, 591, 88,
1130
1131 674, 88, 88, 88, 88, 88, 674, 674, 674, 592,
1132 88, 674, 88, 674, 88, 674, 88, 570, 570, 570,
1133 674, 88, 674, 674, 674, 674, 88, 88, 674, 599,
1134 599, 599, 599, 599, 599, 599, 88, 88, 88, 602,
1135 88, 88, 88, 88, 674, 88, 88, 674, 674, 601,
1136 674, 674, 88, 88, 88, 88, 88, 88, 88, 88,
1137 674, 88, 88, 674, 674, 674, 674, 674, 88, 88,
1138 88, 88, 88, 88, 88, 88, 603, 88, 88, 674,
1139 674, 674, 604, 674, 88, 88, 88, 88, 88, 88,
1140 88, 674, 674, 88, 88, 674, 674, 674, 88, 674,
1141
1142 88, 674, 88, 674, 88, 674, 88, 674, 88, 88,
1143 88, 608, 88, 674, 88, 674, 88, 88, 610, 674,
1144 88, 613, 88, 674, 88, 88, 88, 674, 88, 615,
1145 88, 674, 88, 88, 88, 674, 88, 616, 674, 674,
1146 88, 88, 88, 674, 88, 674, 674, 88, 88, 88,
1147 599, 599, 599, 599, 599, 599, 599, 88, 88, 624,
1148 88, 88, 88, 88, 674, 674, 88, 88, 674, 674,
1149 674, 88, 674, 88, 674, 88, 674, 88, 674, 674,
1150 674, 88, 88, 88, 88, 88, 674, 674, 622, 625,
1151 88, 674, 88, 674, 88, 88, 629, 674, 88, 631,
1152
1153 674, 674, 88, 88, 88, 88, 88, 88, 88, 88,
1154 636, 88, 674, 634, 88, 674, 674, 674, 88, 88,
1155 88, 674, 88, 637, 674, 674, 674, 88, 674, 88,
1156 674, 88, 674, 88, 623, 623, 623, 674, 88, 674,
1157 674, 674, 674, 88, 88, 674, 599, 599, 599, 599,
1158 599, 599, 599, 88, 88, 88, 88, 88, 88, 88,
1159 674, 643, 88, 88, 674, 88, 674, 644, 674, 88,
1160 674, 88, 674, 88, 674, 88, 88, 88, 88, 88,
1161 674, 674, 88, 648, 88, 674, 88, 674, 88, 674,
1162 88, 674, 88, 88, 88, 88, 88, 674, 674, 651,
1163
1164 653, 88, 674, 88, 674, 88, 88, 88, 659, 88,
1165 674, 674, 88, 674, 674, 674, 88, 88, 88, 88,
1166 88, 88, 674, 88, 674, 88, 674, 88, 88, 88,
1167 674, 88, 88, 674, 674, 88, 88, 674, 664, 674,
1168 661, 674, 88, 674, 88, 88, 88, 88, 674, 88,
1169 674, 88, 674, 674, 88, 658, 658, 658, 674, 674,
1170 674, 674, 674, 674, 88, 88, 674, 599, 599, 599,
1171 599, 599, 599, 599, 88, 88, 88, 88, 88, 88,
1172 88, 88, 674, 88, 88, 674, 667, 674, 674, 674,
1173 88, 88, 88, 88, 88, 88, 671, 88, 674, 88,
1174
1175 88, 674, 674, 674, 674, 674, 674, 88, 674, 88,
1176 674, 88, 674, 674, 674, 674, 88, 50, 50, 50,
1177 50, 50, 50, 50, 50, 50, 50, 50, 50, 54,
1178 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
1179 54, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1180 58, 58, 58, 61, 61, 61, 61, 61, 61, 61,
1181 61, 61, 61, 61, 61, 67, 67, 67, 67, 67,
1182 67, 67, 67, 67, 67, 67, 67, 74, 74, 74,
1183 674, 74, 74, 74, 74, 74, 74, 74, 74, 81,
1184 81, 674, 674, 81, 674, 81, 147, 674, 147, 150,
1185
1186 150, 674, 150, 150, 151, 151, 674, 151, 151, 151,
1187 674, 151, 151, 151, 151, 151, 154, 154, 154, 674,
1188 154, 154, 154, 154, 154, 154, 154, 154, 156, 156,
1189 156, 156, 156, 156, 156, 156, 674, 156, 156, 158,
1190 674, 674, 158, 674, 158, 158, 158, 158, 158, 158,
1191 162, 162, 674, 162, 162, 163, 163, 674, 163, 163,
1192 94, 94, 674, 94, 94, 13, 674, 674, 674, 674,
1193 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1194 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1195 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1196
1197 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1198 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1199 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1200 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1201 674, 674, 674, 674
1202 } ;
1203
1204static yyconst short int yy_chk[4245] =
1205 { 0,
1206 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1207 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1208 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1209 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1210 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1211 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1212 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1213 1, 1, 1, 1, 1, 1, 1, 1, 3, 3,
1214 4, 4, 5, 6, 7, 9, 3, 7, 4, 5,
1215 6, 8, 5, 6, 8, 10, 459, 11, 11, 11,
1216
1217 78, 143, 11, 9, 164, 669, 9, 12, 12, 12,
1218 164, 70, 12, 10, 143, 459, 10, 15, 15, 15,
1219 16, 16, 16, 15, 378, 70, 16, 20, 20, 20,
1220 24, 78, 24, 20, 22, 378, 148, 22, 148, 20,
1221 20, 22, 22, 22, 22, 22, 22, 26, 26, 26,
1222 26, 26, 26, 26, 665, 36, 70, 149, 9, 149,
1223 9, 68, 68, 68, 663, 36, 31, 36, 10, 36,
1224 10, 11, 31, 11, 36, 238, 31, 33, 31, 31,
1225 31, 12, 238, 12, 19, 31, 662, 33, 33, 33,
1226 239, 33, 69, 69, 69, 660, 33, 239, 19, 33,
1227
1228 656, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1229 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1230 19, 19, 19, 19, 19, 19, 19, 598, 598, 19,
1231 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1232 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1233 19, 19, 29, 655, 492, 29, 29, 29, 29, 29,
1234 29, 29, 73, 73, 73, 492, 29, 29, 29, 29,
1235 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1236 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1237 29, 29, 159, 159, 159, 29, 29, 29, 29, 29,
1238
1239 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1240 29, 29, 29, 29, 29, 29, 29, 30, 311, 312,
1241 30, 652, 311, 32, 30, 312, 32, 30, 30, 30,
1242 30, 30, 650, 32, 376, 32, 30, 32, 34, 34,
1243 30, 376, 32, 437, 313, 377, 646, 35, 438, 34,
1244 313, 34, 438, 34, 641, 34, 437, 35, 34, 35,
1245 377, 35, 37, 37, 534, 37, 35, 439, 534, 439,
1246 640, 491, 536, 37, 37, 37, 639, 37, 493, 35,
1247 37, 493, 37, 38, 38, 39, 491, 536, 571, 638,
1248 35, 38, 571, 569, 38, 39, 38, 39, 38, 39,
1249
1250 569, 40, 40, 38, 39, 40, 41, 41, 621, 41,
1251 621, 40, 635, 40, 633, 40, 632, 41, 628, 41,
1252 40, 41, 42, 41, 627, 42, 41, 80, 80, 80,
1253 40, 39, 42, 80, 42, 43, 42, 626, 43, 80,
1254 80, 42, 43, 620, 619, 43, 618, 43, 617, 43,
1255 41, 614, 612, 43, 43, 44, 611, 609, 43, 607,
1256 606, 44, 44, 605, 597, 45, 535, 535, 535, 596,
1257 595, 593, 44, 590, 44, 45, 44, 45, 44, 45,
1258 588, 44, 587, 45, 45, 44, 585, 46, 47, 582,
1259 581, 580, 568, 567, 44, 47, 566, 46, 47, 46,
1260
1261 47, 46, 47, 565, 535, 45, 46, 47, 48, 48,
1262 48, 48, 48, 48, 48, 563, 559, 557, 556, 48,
1263 600, 600, 600, 46, 83, 83, 83, 83, 83, 83,
1264 83, 554, 550, 549, 48, 548, 533, 88, 89, 48,
1265 86, 86, 86, 86, 86, 86, 86, 88, 89, 88,
1266 89, 88, 89, 90, 91, 89, 88, 89, 600, 642,
1267 642, 642, 532, 90, 91, 90, 91, 90, 91, 92,
1268 531, 530, 90, 91, 528, 93, 526, 91, 523, 92,
1269 521, 92, 519, 92, 517, 93, 95, 93, 92, 93,
1270 511, 95, 96, 93, 93, 510, 95, 642, 95, 509,
1271
1272 95, 508, 96, 97, 96, 95, 96, 497, 490, 489,
1273 96, 96, 488, 97, 98, 97, 487, 97, 484, 482,
1274 99, 479, 97, 474, 98, 472, 98, 98, 98, 461,
1275 99, 460, 99, 98, 99, 100, 100, 443, 436, 99,
1276 435, 101, 101, 434, 433, 432, 100, 429, 100, 100,
1277 100, 427, 101, 102, 101, 100, 101, 422, 417, 414,
1278 403, 101, 402, 102, 102, 102, 103, 102, 401, 104,
1279 103, 383, 102, 374, 373, 372, 103, 370, 103, 104,
1280 103, 104, 366, 104, 364, 103, 106, 106, 104, 105,
1281 105, 105, 359, 354, 350, 340, 106, 107, 106, 105,
1282
1283 106, 105, 339, 105, 106, 106, 338, 107, 105, 107,
1284 108, 107, 319, 111, 308, 307, 107, 306, 300, 289,
1285 108, 111, 108, 108, 108, 284, 280, 112, 269, 108,
1286 112, 111, 268, 111, 241, 111, 237, 112, 113, 112,
1287 111, 112, 233, 232, 114, 114, 112, 231, 113, 227,
1288 113, 215, 113, 209, 114, 115, 114, 113, 114, 205,
1289 194, 114, 114, 114, 193, 115, 116, 115, 115, 115,
1290 165, 161, 117, 157, 115, 147, 116, 142, 116, 139,
1291 116, 129, 117, 118, 117, 116, 117, 124, 116, 119,
1292 110, 117, 109, 118, 87, 118, 120, 118, 84, 121,
1293
1294 81, 76, 118, 75, 120, 72, 120, 63, 120, 121,
1295 120, 121, 122, 121, 60, 120, 57, 121, 121, 56,
1296 123, 53, 122, 125, 122, 27, 122, 23, 18, 17,
1297 123, 122, 123, 125, 123, 125, 126, 125, 123, 123,
1298 14, 125, 125, 13, 0, 0, 126, 127, 126, 0,
1299 126, 0, 0, 0, 0, 126, 126, 127, 0, 127,
1300 128, 127, 0, 128, 0, 0, 127, 128, 0, 0,
1301 128, 0, 128, 0, 128, 130, 130, 0, 0, 128,
1302 0, 0, 131, 0, 0, 0, 130, 0, 130, 0,
1303 130, 0, 131, 132, 131, 130, 131, 131, 0, 133,
1304
1305 131, 131, 0, 132, 0, 132, 0, 132, 0, 133,
1306 134, 133, 132, 133, 135, 133, 0, 132, 133, 0,
1307 134, 0, 134, 0, 134, 135, 136, 0, 0, 134,
1308 0, 136, 0, 0, 0, 135, 136, 135, 136, 135,
1309 136, 137, 138, 0, 135, 136, 0, 0, 0, 0,
1310 0, 137, 138, 137, 138, 137, 138, 140, 141, 141,
1311 137, 138, 141, 0, 140, 0, 0, 140, 141, 140,
1312 141, 140, 141, 144, 0, 0, 140, 141, 0, 0,
1313 0, 0, 0, 144, 0, 144, 0, 144, 146, 146,
1314 146, 144, 144, 145, 145, 145, 145, 145, 145, 145,
1315
1316 146, 146, 146, 146, 146, 146, 146, 166, 166, 166,
1317 166, 166, 166, 166, 0, 169, 0, 0, 169, 0,
1318 0, 0, 0, 0, 0, 169, 146, 169, 170, 169,
1319 0, 145, 0, 169, 169, 0, 171, 0, 170, 172,
1320 170, 0, 170, 0, 0, 0, 171, 170, 171, 172,
1321 171, 172, 173, 172, 0, 171, 0, 0, 172, 0,
1322 174, 0, 173, 175, 173, 173, 173, 174, 0, 0,
1323 174, 173, 174, 175, 174, 175, 176, 175, 0, 174,
1324 0, 0, 175, 0, 177, 0, 176, 0, 176, 0,
1325 176, 0, 178, 176, 177, 176, 177, 0, 177, 0,
1326
1327 179, 0, 178, 177, 178, 0, 178, 179, 178, 0,
1328 179, 178, 179, 180, 179, 0, 0, 0, 0, 179,
1329 0, 181, 0, 180, 182, 180, 0, 180, 0, 0,
1330 180, 181, 180, 181, 182, 181, 182, 0, 182, 0,
1331 181, 182, 182, 182, 183, 183, 184, 0, 0, 184,
1332 0, 0, 183, 0, 0, 183, 184, 183, 184, 183,
1333 184, 185, 0, 0, 183, 184, 0, 186, 0, 0,
1334 0, 185, 0, 185, 185, 185, 0, 186, 187, 186,
1335 185, 186, 0, 0, 188, 0, 186, 188, 187, 187,
1336 187, 0, 187, 0, 188, 189, 188, 187, 188, 0,
1337
1338 0, 190, 0, 188, 190, 189, 0, 189, 189, 189,
1339 0, 190, 191, 190, 189, 190, 0, 0, 0, 0,
1340 190, 0, 191, 192, 191, 0, 191, 0, 0, 191,
1341 0, 191, 0, 192, 192, 192, 195, 192, 0, 0,
1342 0, 0, 192, 0, 196, 0, 195, 197, 195, 0,
1343 195, 0, 0, 195, 196, 195, 196, 197, 196, 197,
1344 197, 197, 198, 196, 0, 199, 197, 0, 200, 0,
1345 0, 200, 198, 0, 198, 199, 198, 199, 200, 199,
1346 200, 198, 200, 199, 199, 201, 202, 200, 0, 203,
1347 0, 0, 201, 0, 0, 0, 202, 0, 202, 203,
1348
1349 202, 203, 201, 203, 201, 202, 201, 204, 203, 0,
1350 206, 201, 0, 206, 0, 0, 0, 204, 0, 204,
1351 206, 204, 206, 0, 206, 207, 204, 0, 207, 206,
1352 0, 208, 0, 0, 0, 207, 0, 207, 208, 207,
1353 0, 208, 210, 208, 207, 208, 0, 0, 0, 0,
1354 208, 0, 210, 211, 210, 0, 210, 0, 0, 212,
1355 210, 210, 0, 211, 0, 211, 0, 211, 0, 212,
1356 213, 212, 211, 212, 0, 0, 212, 0, 212, 0,
1357 213, 214, 213, 0, 213, 0, 0, 213, 0, 213,
1358 0, 214, 216, 214, 0, 214, 0, 217, 217, 0,
1359
1360 214, 214, 216, 0, 216, 0, 216, 0, 217, 218,
1361 217, 216, 217, 0, 0, 219, 0, 217, 0, 218,
1362 0, 218, 0, 218, 0, 219, 0, 219, 218, 219,
1363 220, 221, 0, 220, 219, 0, 0, 0, 221, 0,
1364 220, 221, 220, 221, 220, 221, 222, 0, 0, 220,
1365 221, 0, 0, 0, 0, 0, 222, 223, 222, 0,
1366 222, 0, 0, 224, 222, 222, 0, 223, 0, 223,
1367 0, 223, 0, 224, 223, 224, 223, 224, 225, 0,
1368 224, 225, 224, 0, 226, 0, 0, 226, 225, 0,
1369 225, 0, 225, 0, 226, 228, 226, 225, 226, 0,
1370
1371 0, 0, 0, 226, 0, 228, 229, 228, 228, 228,
1372 228, 230, 0, 0, 228, 228, 229, 230, 229, 0,
1373 229, 0, 0, 0, 229, 229, 0, 230, 234, 230,
1374 0, 230, 0, 0, 234, 0, 230, 0, 234, 0,
1375 234, 0, 234, 236, 236, 236, 0, 234, 0, 0,
1376 0, 0, 244, 245, 0, 236, 236, 236, 236, 236,
1377 236, 236, 244, 245, 244, 245, 244, 245, 246, 245,
1378 0, 244, 245, 0, 247, 246, 0, 0, 246, 0,
1379 246, 0, 246, 0, 247, 247, 247, 246, 247, 248,
1380 249, 0, 0, 247, 0, 0, 0, 0, 0, 248,
1381
1382 249, 248, 249, 248, 249, 251, 251, 250, 248, 249,
1383 250, 0, 0, 0, 0, 0, 251, 250, 251, 250,
1384 251, 250, 252, 252, 0, 251, 250, 0, 253, 0,
1385 0, 0, 252, 0, 252, 249, 252, 0, 253, 254,
1386 253, 252, 253, 0, 0, 253, 0, 253, 0, 254,
1387 255, 254, 254, 254, 0, 0, 0, 0, 254, 0,
1388 255, 0, 255, 0, 255, 257, 255, 256, 256, 255,
1389 0, 258, 0, 0, 0, 257, 0, 257, 256, 257,
1390 256, 258, 256, 258, 257, 258, 259, 256, 259, 260,
1391 258, 260, 261, 0, 0, 261, 259, 0, 259, 260,
1392
1393 259, 260, 261, 260, 261, 259, 261, 262, 260, 0,
1394 0, 261, 0, 263, 0, 0, 0, 262, 0, 262,
1395 263, 262, 0, 263, 264, 263, 262, 263, 0, 0,
1396 0, 0, 263, 0, 264, 265, 264, 0, 264, 0,
1397 264, 0, 0, 264, 0, 265, 0, 265, 0, 265,
1398 266, 265, 0, 266, 265, 0, 267, 0, 0, 0,
1399 266, 0, 266, 0, 266, 0, 267, 270, 267, 266,
1400 267, 0, 0, 271, 0, 267, 0, 270, 0, 270,
1401 0, 270, 0, 271, 0, 271, 270, 271, 272, 273,
1402 0, 271, 271, 0, 0, 272, 0, 0, 272, 273,
1403
1404 272, 273, 272, 273, 274, 273, 0, 272, 273, 275,
1405 275, 0, 270, 0, 274, 0, 274, 0, 274, 0,
1406 275, 276, 275, 274, 275, 277, 276, 0, 0, 275,
1407 0, 276, 0, 276, 277, 276, 0, 276, 0, 0,
1408 276, 0, 278, 0, 277, 0, 277, 0, 277, 0,
1409 279, 0, 278, 277, 278, 0, 278, 0, 0, 278,
1410 279, 278, 279, 0, 279, 281, 281, 0, 282, 279,
1411 0, 0, 0, 0, 0, 281, 0, 281, 282, 281,
1412 282, 283, 282, 0, 281, 0, 282, 282, 0, 285,
1413 286, 283, 285, 283, 283, 283, 0, 0, 0, 285,
1414
1415 283, 285, 0, 285, 287, 286, 0, 287, 285, 0,
1416 0, 0, 0, 0, 287, 286, 287, 286, 287, 286,
1417 288, 288, 290, 287, 286, 0, 0, 0, 0, 0,
1418 0, 288, 290, 288, 290, 288, 290, 291, 0, 0,
1419 288, 290, 0, 0, 0, 0, 0, 291, 0, 291,
1420 292, 291, 0, 292, 0, 291, 291, 0, 293, 0,
1421 292, 294, 292, 0, 292, 0, 0, 0, 293, 292,
1422 293, 294, 293, 294, 0, 294, 296, 293, 295, 295,
1423 294, 0, 297, 0, 0, 299, 296, 0, 296, 295,
1424 296, 295, 297, 295, 297, 296, 297, 298, 295, 0,
1425
1426 299, 297, 0, 301, 0, 0, 0, 298, 0, 298,
1427 299, 298, 299, 301, 299, 301, 298, 301, 302, 299,
1428 0, 296, 301, 0, 303, 0, 0, 303, 302, 0,
1429 302, 0, 302, 0, 303, 304, 303, 302, 303, 0,
1430 0, 305, 0, 303, 0, 304, 0, 304, 0, 304,
1431 0, 305, 0, 305, 304, 305, 309, 0, 305, 0,
1432 305, 0, 0, 0, 0, 0, 309, 0, 309, 0,
1433 309, 304, 0, 314, 0, 309, 310, 310, 310, 310,
1434 310, 310, 310, 314, 0, 314, 0, 314, 315, 315,
1435 0, 314, 314, 0, 0, 0, 0, 316, 316, 315,
1436
1437 0, 315, 0, 315, 317, 317, 0, 316, 315, 316,
1438 0, 316, 0, 318, 310, 317, 316, 317, 0, 317,
1439 320, 320, 0, 318, 317, 318, 0, 318, 0, 321,
1440 321, 320, 318, 320, 0, 320, 0, 0, 0, 321,
1441 320, 321, 322, 321, 0, 322, 0, 0, 321, 0,
1442 323, 0, 322, 324, 322, 0, 322, 0, 0, 0,
1443 323, 322, 323, 324, 323, 324, 0, 324, 326, 323,
1444 325, 325, 324, 0, 327, 326, 0, 0, 326, 0,
1445 326, 325, 326, 325, 327, 325, 327, 326, 327, 328,
1446 325, 0, 328, 327, 0, 329, 328, 329, 0, 328,
1447
1448 0, 328, 0, 328, 0, 329, 0, 329, 328, 329,
1449 330, 331, 0, 330, 329, 0, 0, 0, 0, 0,
1450 330, 331, 330, 331, 330, 331, 332, 331, 0, 330,
1451 331, 0, 0, 0, 0, 0, 332, 0, 332, 0,
1452 332, 333, 333, 0, 332, 332, 0, 334, 0, 0,
1453 0, 333, 0, 333, 0, 333, 0, 334, 335, 334,
1454 333, 334, 0, 0, 336, 334, 334, 0, 335, 0,
1455 335, 0, 335, 0, 336, 335, 336, 335, 336, 337,
1456 341, 0, 0, 336, 0, 0, 0, 341, 0, 337,
1457 341, 337, 341, 337, 341, 0, 0, 343, 337, 341,
1458
1459 342, 342, 0, 342, 0, 0, 0, 343, 0, 343,
1460 342, 343, 342, 0, 342, 343, 343, 345, 344, 342,
1461 344, 0, 0, 0, 0, 0, 0, 345, 344, 345,
1462 344, 345, 344, 0, 347, 346, 345, 344, 346, 0,
1463 0, 349, 0, 348, 347, 346, 347, 346, 347, 346,
1464 348, 347, 0, 347, 346, 0, 349, 0, 0, 0,
1465 348, 0, 348, 0, 348, 0, 349, 351, 349, 348,
1466 349, 0, 0, 0, 0, 349, 0, 351, 352, 351,
1467 0, 351, 0, 0, 353, 351, 351, 0, 352, 0,
1468 352, 0, 352, 0, 353, 355, 353, 352, 353, 0,
1469
1470 0, 0, 0, 353, 0, 355, 356, 355, 0, 355,
1471 0, 355, 357, 356, 355, 0, 356, 0, 356, 0,
1472 356, 0, 357, 358, 357, 356, 357, 0, 0, 0,
1473 0, 357, 0, 358, 0, 358, 360, 358, 0, 361,
1474 0, 358, 358, 360, 0, 0, 360, 362, 360, 361,
1475 360, 361, 362, 361, 0, 360, 0, 362, 361, 362,
1476 363, 362, 0, 0, 0, 0, 362, 0, 0, 0,
1477 363, 365, 363, 0, 363, 0, 0, 367, 365, 363,
1478 0, 365, 363, 365, 0, 365, 0, 367, 0, 367,
1479 365, 367, 368, 369, 0, 368, 367, 0, 0, 0,
1480
1481 0, 0, 368, 369, 368, 369, 368, 369, 371, 369,
1482 0, 368, 369, 0, 379, 0, 0, 0, 371, 0,
1483 371, 0, 371, 0, 379, 0, 379, 371, 379, 380,
1484 380, 381, 381, 379, 0, 0, 0, 0, 0, 380,
1485 382, 380, 381, 380, 381, 0, 381, 0, 380, 0,
1486 382, 381, 382, 371, 382, 384, 0, 0, 382, 382,
1487 0, 385, 0, 0, 0, 384, 0, 384, 0, 384,
1488 0, 385, 386, 385, 384, 385, 0, 0, 387, 385,
1489 385, 387, 386, 0, 386, 0, 386, 0, 387, 388,
1490 387, 386, 387, 0, 0, 389, 388, 387, 0, 388,
1491
1492 0, 388, 0, 388, 0, 389, 390, 389, 388, 389,
1493 0, 0, 0, 0, 389, 0, 390, 391, 390, 391,
1494 390, 0, 0, 392, 390, 390, 0, 391, 0, 391,
1495 0, 391, 0, 392, 0, 392, 391, 392, 0, 0,
1496 393, 392, 392, 393, 0, 0, 394, 0, 394, 0,
1497 393, 0, 393, 0, 393, 0, 394, 0, 394, 393,
1498 394, 395, 395, 396, 0, 394, 0, 0, 0, 0,
1499 0, 0, 395, 396, 395, 396, 395, 396, 397, 398,
1500 0, 395, 396, 0, 0, 397, 0, 0, 397, 398,
1501 397, 398, 397, 398, 399, 0, 398, 397, 398, 400,
1502
1503 400, 399, 0, 0, 399, 0, 399, 0, 399, 0,
1504 400, 404, 400, 399, 400, 404, 0, 405, 0, 400,
1505 0, 404, 0, 404, 405, 404, 0, 405, 0, 405,
1506 404, 405, 406, 407, 406, 0, 405, 0, 0, 0,
1507 0, 0, 406, 407, 406, 407, 406, 407, 0, 0,
1508 407, 406, 407, 408, 409, 409, 408, 0, 0, 0,
1509 0, 0, 0, 408, 409, 408, 409, 408, 409, 410,
1510 0, 0, 408, 409, 0, 0, 0, 411, 0, 410,
1511 411, 410, 0, 410, 0, 410, 0, 411, 410, 411,
1512 412, 411, 0, 0, 0, 0, 411, 0, 413, 0,
1513
1514 412, 415, 412, 0, 412, 413, 0, 412, 413, 412,
1515 413, 415, 413, 415, 0, 415, 418, 413, 416, 416,
1516 415, 0, 419, 0, 0, 0, 418, 0, 418, 416,
1517 418, 416, 419, 416, 419, 418, 419, 420, 416, 0,
1518 421, 419, 0, 421, 0, 0, 0, 420, 423, 420,
1519 421, 420, 421, 0, 421, 420, 420, 0, 423, 421,
1520 423, 0, 423, 424, 424, 0, 425, 423, 423, 426,
1521 0, 0, 0, 424, 0, 424, 425, 424, 425, 426,
1522 425, 426, 424, 426, 428, 425, 428, 430, 426, 0,
1523 431, 0, 0, 0, 428, 0, 428, 430, 428, 430,
1524
1525 431, 430, 431, 428, 431, 440, 430, 431, 441, 431,
1526 0, 0, 0, 0, 0, 440, 0, 440, 441, 440,
1527 441, 442, 441, 440, 440, 0, 441, 441, 442, 444,
1528 0, 442, 0, 442, 0, 442, 0, 0, 0, 444,
1529 442, 444, 445, 444, 0, 445, 0, 0, 444, 0,
1530 446, 0, 445, 447, 445, 0, 445, 0, 0, 0,
1531 446, 445, 446, 447, 446, 447, 448, 447, 0, 446,
1532 0, 0, 447, 448, 449, 0, 448, 450, 448, 0,
1533 448, 0, 0, 0, 449, 448, 449, 450, 449, 450,
1534 451, 450, 0, 449, 0, 0, 450, 451, 453, 0,
1535
1536 451, 452, 451, 452, 451, 0, 0, 0, 453, 451,
1537 453, 452, 453, 452, 454, 452, 0, 453, 0, 0,
1538 452, 0, 0, 0, 454, 455, 454, 0, 454, 0,
1539 0, 0, 454, 454, 0, 455, 456, 455, 0, 455,
1540 0, 0, 457, 455, 455, 0, 456, 0, 456, 0,
1541 456, 0, 457, 458, 457, 456, 457, 0, 0, 462,
1542 0, 457, 0, 458, 0, 458, 462, 458, 0, 462,
1543 463, 462, 458, 462, 0, 0, 0, 0, 462, 0,
1544 463, 464, 463, 0, 463, 0, 0, 465, 463, 463,
1545 0, 464, 0, 464, 0, 464, 0, 465, 466, 465,
1546
1547 464, 465, 0, 0, 467, 0, 465, 467, 466, 0,
1548 466, 0, 466, 0, 467, 466, 467, 466, 467, 468,
1549 469, 469, 0, 467, 0, 0, 0, 0, 0, 468,
1550 469, 468, 469, 468, 469, 470, 471, 0, 468, 469,
1551 0, 0, 0, 0, 0, 470, 471, 470, 471, 470,
1552 471, 473, 475, 0, 470, 471, 0, 0, 0, 0,
1553 0, 473, 475, 473, 475, 473, 475, 0, 0, 476,
1554 473, 475, 477, 476, 0, 478, 0, 0, 0, 476,
1555 470, 476, 477, 476, 477, 478, 477, 478, 476, 478,
1556 480, 477, 0, 480, 478, 0, 481, 0, 0, 481,
1557
1558 480, 0, 480, 0, 480, 0, 481, 0, 481, 480,
1559 481, 483, 0, 494, 483, 481, 485, 485, 0, 0,
1560 0, 483, 0, 483, 0, 483, 0, 485, 494, 485,
1561 483, 485, 0, 0, 495, 0, 485, 0, 494, 0,
1562 494, 495, 494, 0, 495, 0, 495, 494, 495, 496,
1563 496, 0, 0, 495, 0, 498, 0, 0, 0, 496,
1564 0, 496, 0, 496, 0, 498, 499, 498, 496, 498,
1565 0, 498, 0, 0, 498, 0, 499, 0, 499, 500,
1566 499, 0, 500, 0, 499, 499, 0, 501, 0, 500,
1567 502, 500, 0, 500, 0, 0, 0, 501, 500, 501,
1568
1569 502, 501, 502, 502, 502, 503, 501, 0, 504, 502,
1570 0, 504, 0, 0, 0, 503, 505, 503, 504, 503,
1571 504, 0, 504, 0, 503, 0, 505, 504, 505, 506,
1572 505, 0, 507, 0, 0, 505, 506, 0, 0, 506,
1573 0, 506, 507, 506, 507, 0, 507, 512, 506, 0,
1574 512, 507, 0, 513, 0, 0, 0, 512, 0, 512,
1575 0, 512, 0, 513, 514, 513, 512, 513, 0, 0,
1576 515, 0, 513, 0, 514, 0, 514, 0, 514, 0,
1577 515, 516, 515, 514, 515, 0, 0, 0, 0, 515,
1578 0, 516, 518, 516, 0, 516, 518, 0, 520, 516,
1579
1580 516, 0, 518, 0, 518, 524, 518, 0, 520, 522,
1581 520, 518, 520, 0, 0, 0, 522, 520, 0, 522,
1582 524, 522, 0, 522, 0, 0, 525, 0, 522, 0,
1583 524, 0, 524, 0, 524, 0, 525, 527, 525, 524,
1584 525, 0, 0, 529, 0, 525, 0, 527, 0, 527,
1585 0, 527, 0, 529, 537, 529, 527, 529, 0, 0,
1586 0, 0, 529, 0, 537, 538, 537, 0, 537, 0,
1587 0, 537, 0, 537, 0, 538, 539, 538, 538, 538,
1588 0, 0, 541, 0, 538, 0, 539, 0, 539, 0,
1589 539, 0, 541, 542, 541, 539, 541, 0, 0, 0,
1590
1591 0, 541, 0, 542, 543, 542, 543, 542, 0, 0,
1592 542, 0, 542, 0, 543, 544, 543, 0, 543, 0,
1593 544, 545, 0, 543, 0, 544, 0, 544, 0, 544,
1594 0, 545, 0, 545, 544, 545, 546, 547, 546, 0,
1595 545, 0, 0, 0, 0, 0, 546, 547, 546, 547,
1596 546, 547, 552, 553, 0, 546, 547, 0, 0, 0,
1597 553, 0, 552, 553, 552, 553, 552, 553, 552, 555,
1598 558, 552, 553, 0, 0, 0, 555, 0, 0, 555,
1599 558, 555, 558, 555, 558, 560, 0, 0, 555, 558,
1600 0, 562, 0, 0, 0, 560, 0, 560, 560, 560,
1601
1602 0, 562, 564, 562, 560, 562, 0, 0, 0, 562,
1603 562, 0, 564, 0, 564, 0, 564, 570, 570, 570,
1604 0, 564, 0, 0, 0, 0, 572, 573, 0, 570,
1605 570, 570, 570, 570, 570, 570, 572, 573, 572, 573,
1606 572, 573, 574, 575, 0, 572, 573, 0, 0, 572,
1607 0, 0, 574, 575, 574, 575, 574, 575, 576, 577,
1608 0, 574, 575, 0, 0, 0, 0, 0, 576, 577,
1609 576, 577, 576, 577, 578, 579, 577, 576, 577, 0,
1610 0, 0, 579, 0, 578, 579, 578, 579, 578, 579,
1611 583, 0, 0, 578, 579, 0, 0, 0, 584, 0,
1612
1613 583, 0, 583, 0, 583, 0, 586, 0, 584, 583,
1614 584, 584, 584, 0, 589, 0, 586, 584, 586, 0,
1615 586, 589, 591, 0, 589, 586, 589, 0, 589, 591,
1616 592, 0, 591, 589, 591, 0, 591, 592, 0, 0,
1617 592, 591, 592, 0, 592, 0, 0, 601, 602, 592,
1618 599, 599, 599, 599, 599, 599, 599, 601, 602, 601,
1619 602, 601, 602, 603, 0, 0, 601, 602, 0, 0,
1620 0, 604, 0, 603, 0, 603, 0, 603, 0, 0,
1621 0, 604, 603, 604, 608, 604, 0, 0, 599, 604,
1622 604, 0, 610, 0, 608, 613, 608, 0, 608, 610,
1623
1624 0, 0, 610, 608, 610, 613, 610, 613, 615, 613,
1625 615, 610, 0, 613, 613, 0, 0, 0, 615, 616,
1626 615, 0, 615, 616, 0, 0, 0, 615, 0, 616,
1627 0, 616, 0, 616, 623, 623, 623, 0, 616, 0,
1628 0, 0, 0, 624, 625, 0, 623, 623, 623, 623,
1629 623, 623, 623, 624, 625, 624, 625, 624, 625, 629,
1630 0, 624, 624, 625, 0, 631, 0, 625, 0, 629,
1631 0, 629, 0, 629, 0, 631, 634, 631, 629, 631,
1632 0, 0, 636, 631, 631, 0, 634, 0, 634, 0,
1633 634, 0, 636, 637, 636, 634, 636, 0, 0, 634,
1634
1635 637, 636, 0, 637, 0, 637, 644, 637, 643, 643,
1636 0, 0, 637, 0, 0, 0, 644, 648, 644, 643,
1637 644, 643, 0, 643, 0, 644, 0, 648, 643, 648,
1638 0, 648, 651, 0, 0, 653, 648, 0, 653, 0,
1639 648, 0, 651, 0, 651, 653, 651, 653, 0, 653,
1640 0, 651, 0, 0, 653, 658, 658, 658, 0, 0,
1641 0, 0, 0, 0, 659, 661, 0, 658, 658, 658,
1642 658, 658, 658, 658, 659, 661, 659, 661, 659, 661,
1643 664, 667, 0, 659, 661, 0, 659, 0, 0, 0,
1644 664, 667, 664, 667, 664, 667, 664, 671, 0, 664,
1645
1646 667, 0, 0, 0, 0, 0, 0, 671, 0, 671,
1647 0, 671, 0, 0, 0, 0, 671, 675, 675, 675,
1648 675, 675, 675, 675, 675, 675, 675, 675, 675, 676,
1649 676, 676, 676, 676, 676, 676, 676, 676, 676, 676,
1650 676, 677, 677, 677, 677, 677, 677, 677, 677, 677,
1651 677, 677, 677, 678, 678, 678, 678, 678, 678, 678,
1652 678, 678, 678, 678, 678, 679, 679, 679, 679, 679,
1653 679, 679, 679, 679, 679, 679, 679, 680, 680, 680,
1654 0, 680, 680, 680, 680, 680, 680, 680, 680, 681,
1655 681, 0, 0, 681, 0, 681, 682, 0, 682, 683,
1656
1657 683, 0, 683, 683, 684, 684, 0, 684, 684, 684,
1658 0, 684, 684, 684, 684, 684, 685, 685, 685, 0,
1659 685, 685, 685, 685, 685, 685, 685, 685, 686, 686,
1660 686, 686, 686, 686, 686, 686, 0, 686, 686, 687,
1661 0, 0, 687, 0, 687, 687, 687, 687, 687, 687,
1662 688, 688, 0, 688, 688, 689, 689, 0, 689, 689,
1663 690, 690, 0, 690, 690, 674, 674, 674, 674, 674,
1664 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1665 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1666 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1667
1668 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1669 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1670 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1671 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1672 674, 674, 674, 674
1673 } ;
1674
1675extern int yy_flex_debug;
1676int yy_flex_debug = 1;
1677
1678static yyconst short int yy_rule_linenum[123] =
1679 { 0,
1680 101, 104, 106, 107, 108, 111, 113, 114, 115, 127,
1681 134, 141, 147, 156, 164, 172, 173, 175, 194, 200,
1682 207, 214, 221, 231, 265, 272, 273, 274, 275, 283,
1683 284, 285, 286, 287, 292, 293, 294, 295, 296, 297,
1684 298, 299, 300, 301, 302, 311, 312, 313, 314, 315,
1685 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
1686 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
1687 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
1688 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
1689 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
1690
1691 366, 367, 372, 373, 378, 379, 380, 383, 389, 396,
1692 405, 416, 422, 424, 425, 427, 429, 431, 444, 450,
1693 456, 464
1694 } ;
1695
1696static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1697static char *yy_full_match;
1698static int yy_lp;
1699#define REJECT \
1700{ \
1701*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1702yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1703++yy_lp; \
1704goto find_rule; \
1705}
1706#define yymore() yymore_used_but_not_detected
1707#define YY_MORE_ADJ 0
1708#define YY_RESTORE_YY_MORE_OFFSET
1709char *yytext;
1710#line 1 "asn1p_l.l"
1711#define INITIAL 0
1712#line 2 "asn1p_l.l"
1713
1714#include <string.h>
1715#include <errno.h>
1716#include <assert.h>
1717
1718#include "asn1parser.h"
1719#include "asn1p_y.h"
1720
1721int asn1p_lex(void);
1722void asn1p_lexer_hack_push_opaque_state(void); /* Used in .y */
1723void asn1p_lexer_hack_enable_with_syntax(void); /* Used in .y */
1724
1725#define YY_FATAL_ERROR(msg) do { \
1726 fprintf(stderr, \
1727 "lexer error at line %d, " \
1728 "text \"%s\"\n", \
1729 yylineno, yytext); \
1730 exit(1); \
1731 } while(0)
1732
1733int asn1p_lexer_pedantic_1990 = 0;
1734int asn1p_lexer_types_year = 0;
1735int asn1p_lexer_constructs_year = 0;
1736static int _check_dashes(char *ptr);
1737static asn1_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */
1738
1739/*
1740 * Check that the type is defined in the year of the standard choosen.
1741 */
1742#define TYPE_LIFETIME(fyr, lyr) \
1743 (!asn1p_lexer_types_year \
1744 || (fyr && fyr <= asn1p_lexer_types_year) \
1745 || (lyr && lyr > asn1p_lexer_types_year))
1746
1747/*
1748 * Check the the construction (or concept, i.e. CLASS) is defined in
1749 * a given year.
1750 */
1751#define CONSTRUCT_LIFETIME(fyr, lyr) \
1752 (!asn1p_lexer_constructs_year \
1753 || (fyr && fyr <= asn1p_lexer_constructs_year) \
1754 || (lyr && lyr > asn1p_lexer_constructs_year))
1755
1756/*
1757 * Make sure that the label is compliant with the naming rules.
1758 */
1759#define CHECK_DASHES do { \
1760 if(_check_dashes(yytext)) { \
1761 fprintf(stderr, \
1762 "%s: Identifier format invalid: " \
1763 "Improper dash location\n", yytext); \
1764 return -1; \
1765 } } while(0)
1766
1767/*
1768 * Append quoted string.
1769 */
1770#define QAPPEND(text, tlen) do { \
1771 char *prev_text = asn1p_lval.tv_opaque.buf; \
1772 int prev_len = asn1p_lval.tv_opaque.len; \
1773 char *p; \
1774 \
1775 p = malloc((tlen) + prev_len + 1); \
1776 if(p == NULL) return -1; \
1777 \
1778 if(prev_text) memcpy(p, prev_text, prev_len); \
1779 memcpy(p + prev_len, text, tlen); \
1780 p[prev_len + (tlen)] = '\0'; \
1781 \
1782 free(asn1p_lval.tv_opaque.buf); \
1783 asn1p_lval.tv_opaque.buf = p; \
1784 asn1p_lval.tv_opaque.len = (tlen) + prev_len; \
1785 } while(0)
1786
1787#define YY_NEVER_INTERACTIVE 1
1788#define YY_NO_INPUT 1
1789#define YY_NO_UNPUT 1
1790#define YY_STACK_USED 1
1791/* Performance penalty is OK */
1792/* Controlled from within application */
1793#define dash_comment 1
1794
1795#define cpp_comment 2
1796
1797#define quoted 3
1798
1799#define opaque 4
1800
1801#define with_syntax 5
1802
1803/* Newline */
1804/* White-space */
1805#line 1806 "lex.yy.c"
1806
1807/* Macros after this point can all be overridden by user definitions in
1808 * section 1.
1809 */
1810
1811#ifndef YY_SKIP_YYWRAP
1812#ifdef __cplusplus
1813extern "C" int yywrap YY_PROTO(( void ));
1814#else
1815extern int yywrap YY_PROTO(( void ));
1816#endif
1817#endif
1818
1819#ifndef YY_NO_UNPUT
1820static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1821#endif
1822
1823#ifndef yytext_ptr
1824static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1825#endif
1826
1827#ifdef YY_NEED_STRLEN
1828static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1829#endif
1830
1831#ifndef YY_NO_INPUT
1832#ifdef __cplusplus
1833static int yyinput YY_PROTO(( void ));
1834#else
1835static int input YY_PROTO(( void ));
1836#endif
1837#endif
1838
1839#if YY_STACK_USED
1840static int yy_start_stack_ptr = 0;
1841static int yy_start_stack_depth = 0;
1842static int *yy_start_stack = 0;
1843#ifndef YY_NO_PUSH_STATE
1844static void yy_push_state YY_PROTO(( int new_state ));
1845#endif
1846#ifndef YY_NO_POP_STATE
1847static void yy_pop_state YY_PROTO(( void ));
1848#endif
1849#ifndef YY_NO_TOP_STATE
1850static int yy_top_state YY_PROTO(( void ));
1851#endif
1852
1853#else
1854#define YY_NO_PUSH_STATE 1
1855#define YY_NO_POP_STATE 1
1856#define YY_NO_TOP_STATE 1
1857#endif
1858
1859#ifdef YY_MALLOC_DECL
1860YY_MALLOC_DECL
1861#else
1862#if __STDC__
1863#ifndef __cplusplus
1864#include <stdlib.h>
1865#endif
1866#else
1867/* Just try to get by without declaring the routines. This will fail
1868 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1869 * or sizeof(void*) != sizeof(int).
1870 */
1871#endif
1872#endif
1873
1874/* Amount of stuff to slurp up with each read. */
1875#ifndef YY_READ_BUF_SIZE
1876#define YY_READ_BUF_SIZE 8192
1877#endif
1878
1879/* Copy whatever the last rule matched to the standard output. */
1880
1881#ifndef ECHO
1882/* This used to be an fputs(), but since the string might contain NUL's,
1883 * we now use fwrite().
1884 */
1885#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1886#endif
1887
1888/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1889 * is returned in "result".
1890 */
1891#ifndef YY_INPUT
1892#define YY_INPUT(buf,result,max_size) \
1893 if ( yy_current_buffer->yy_is_interactive ) \
1894 { \
1895 int c = '*', n; \
1896 for ( n = 0; n < max_size && \
1897 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1898 buf[n] = (char) c; \
1899 if ( c == '\n' ) \
1900 buf[n++] = (char) c; \
1901 if ( c == EOF && ferror( yyin ) ) \
1902 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1903 result = n; \
1904 } \
1905 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1906 && ferror( yyin ) ) \
1907 YY_FATAL_ERROR( "input in flex scanner failed" );
1908#endif
1909
1910/* No semi-colon after return; correct usage is to write "yyterminate();" -
1911 * we don't want an extra ';' after the "return" because that will cause
1912 * some compilers to complain about unreachable statements.
1913 */
1914#ifndef yyterminate
1915#define yyterminate() return YY_NULL
1916#endif
1917
1918/* Number of entries by which start-condition stack grows. */
1919#ifndef YY_START_STACK_INCR
1920#define YY_START_STACK_INCR 25
1921#endif
1922
1923/* Report a fatal error. */
1924#ifndef YY_FATAL_ERROR
1925#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1926#endif
1927
1928/* Default declaration of generated scanner - a define so the user can
1929 * easily add parameters.
1930 */
1931#ifndef YY_DECL
1932#define YY_DECL int yylex YY_PROTO(( void ))
1933#endif
1934
1935/* Code executed at the beginning of each rule, after yytext and yyleng
1936 * have been set up.
1937 */
1938#ifndef YY_USER_ACTION
1939#define YY_USER_ACTION
1940#endif
1941
1942/* Code executed at the end of each rule. */
1943#ifndef YY_BREAK
1944#define YY_BREAK break;
1945#endif
1946
1947#define YY_RULE_SETUP \
1948 YY_USER_ACTION
1949
1950YY_DECL
1951 {
1952 register yy_state_type yy_current_state;
1953 register char *yy_cp, *yy_bp;
1954 register int yy_act;
1955
1956#line 99 "asn1p_l.l"
1957
1958
1959#line 1960 "lex.yy.c"
1960
1961 if ( yy_init )
1962 {
1963 yy_init = 0;
1964
1965#ifdef YY_USER_INIT
1966 YY_USER_INIT;
1967#endif
1968
1969 if ( ! yy_start )
1970 yy_start = 1; /* first start state */
1971
1972 if ( ! yyin )
1973 yyin = stdin;
1974
1975 if ( ! yyout )
1976 yyout = stdout;
1977
1978 if ( ! yy_current_buffer )
1979 yy_current_buffer =
1980 yy_create_buffer( yyin, YY_BUF_SIZE );
1981
1982 yy_load_buffer_state();
1983 }
1984
1985 while ( 1 ) /* loops until end-of-file is reached */
1986 {
1987 yy_cp = yy_c_buf_p;
1988
1989 /* Support of yytext. */
1990 *yy_cp = yy_hold_char;
1991
1992 /* yy_bp points to the position in yy_ch_buf of the start of
1993 * the current run.
1994 */
1995 yy_bp = yy_cp;
1996
1997 yy_current_state = yy_start;
1998 yy_state_ptr = yy_state_buf;
1999 *yy_state_ptr++ = yy_current_state;
2000yy_match:
2001 do
2002 {
2003 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2004 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2005 {
2006 yy_current_state = (int) yy_def[yy_current_state];
2007 if ( yy_current_state >= 675 )
2008 yy_c = yy_meta[(unsigned int) yy_c];
2009 }
2010 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2011 *yy_state_ptr++ = yy_current_state;
2012 ++yy_cp;
2013 }
2014 while ( yy_base[yy_current_state] != 4166 );
2015
2016yy_find_action:
2017 yy_current_state = *--yy_state_ptr;
2018 yy_lp = yy_accept[yy_current_state];
2019find_rule: /* we branch to this label when backing up */
2020 for ( ; ; ) /* until we find what rule we matched */
2021 {
2022 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2023 {
2024 yy_act = yy_acclist[yy_lp];
2025 {
2026 yy_full_match = yy_cp;
2027 break;
2028 }
2029 }
2030 --yy_cp;
2031 yy_current_state = *--yy_state_ptr;
2032 yy_lp = yy_accept[yy_current_state];
2033 }
2034
2035 YY_DO_BEFORE_ACTION;
2036
2037 if ( yy_act != YY_END_OF_BUFFER )
2038 {
2039 int yyl;
2040 for ( yyl = 0; yyl < yyleng; ++yyl )
2041 if ( yytext[yyl] == '\n' )
2042 ++yylineno;
2043 }
2044
2045do_action: /* This label is used only to access EOF actions. */
2046
2047 if ( yy_flex_debug )
2048 {
2049 if ( yy_act == 0 )
2050 fprintf( stderr, "--scanner backing up\n" );
2051 else if ( yy_act < 123 )
2052 fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
2053 yy_rule_linenum[yy_act], yytext );
2054 else if ( yy_act == 123 )
2055 fprintf( stderr, "--accepting default rule (\"%s\")\n",
2056 yytext );
2057 else if ( yy_act == 124 )
2058 fprintf( stderr, "--(end of buffer or a NUL)\n" );
2059 else
2060 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
2061 }
2062
2063 switch ( yy_act )
2064 { /* beginning of action switch */
2065case 1:
2066YY_RULE_SETUP
2067#line 101 "asn1p_l.l"
2068yy_push_state(dash_comment);
2069 YY_BREAK
2070
2071case 2:
2072YY_RULE_SETUP
2073#line 104 "asn1p_l.l"
2074yy_pop_state();
2075 YY_BREAK
2076case 3:
2077YY_RULE_SETUP
2078#line 106 "asn1p_l.l"
2079yy_pop_state(); /* End of comment */
2080 YY_BREAK
2081case 4:
2082YY_RULE_SETUP
2083#line 107 "asn1p_l.l"
2084/* Eat single dash */
2085 YY_BREAK
2086case 5:
2087YY_RULE_SETUP
2088#line 108 "asn1p_l.l"
2089/* Eat */
2090 YY_BREAK
2091
2092case 6:
2093YY_RULE_SETUP
2094#line 111 "asn1p_l.l"
2095yy_push_state(cpp_comment);
2096 YY_BREAK
2097
2098case 7:
2099YY_RULE_SETUP
2100#line 113 "asn1p_l.l"
2101/* Eat */
2102 YY_BREAK
2103case 8:
2104YY_RULE_SETUP
2105#line 114 "asn1p_l.l"
2106yy_pop_state();
2107 YY_BREAK
2108case 9:
2109YY_RULE_SETUP
2110#line 115 "asn1p_l.l"
2111/* Eat */
2112 YY_BREAK
2113
2114/*
2115 * This is state is being set from corresponding .y module when
2116 * higher-level data is necessary to make proper parsing of the
2117 * underlying data. Thus, we enter the <opaque> state and save
2118 * everything for later processing.
2119 */
2120
2121case 10:
2122YY_RULE_SETUP
2123#line 127 "asn1p_l.l"
2124{
2125 yy_push_state(opaque);
2126 asn1p_lval.tv_opaque.buf = strdup(yytext);
2127 asn1p_lval.tv_opaque.len = yyleng;
2128 return TOK_opaque;
2129 }
2130 YY_BREAK
2131case 11:
2132YY_RULE_SETUP
2133#line 134 "asn1p_l.l"
2134{
2135 yy_pop_state();
2136 asn1p_lval.tv_opaque.buf = strdup(yytext);
2137 asn1p_lval.tv_opaque.len = yyleng;
2138 return TOK_opaque;
2139 }
2140 YY_BREAK
2141case 12:
2142YY_RULE_SETUP
2143#line 141 "asn1p_l.l"
2144{
2145 asn1p_lval.tv_opaque.buf = strdup(yytext);
2146 asn1p_lval.tv_opaque.len = yyleng;
2147 return TOK_opaque;
2148 }
2149 YY_BREAK
2150case 13:
2151YY_RULE_SETUP
2152#line 147 "asn1p_l.l"
2153{
2154 fprintf(stderr,
2155 "ASN.1 Parser syncronization failure: "
2156 "\"%s\" at line %d must not appear "
2157 "inside value definition\n",
2158 yytext, yylineno);
2159 return -1;
2160 }
2161 YY_BREAK
2162case 14:
2163YY_RULE_SETUP
2164#line 156 "asn1p_l.l"
2165{
2166 asn1p_lval.tv_opaque.buf = strdup(yytext);
2167 asn1p_lval.tv_opaque.len = yyleng;
2168 return TOK_opaque;
2169 }
2170 YY_BREAK
2171
2172case 15:
2173YY_RULE_SETUP
2174#line 164 "asn1p_l.l"
2175{
2176 asn1p_lval.tv_opaque.buf = 0;
2177 asn1p_lval.tv_opaque.len = 0;
2178 QAPPEND(yytext+1, yyleng-1);
2179 yy_push_state(quoted);
2180 }
2181 YY_BREAK
2182
2183case 16:
2184YY_RULE_SETUP
2185#line 172 "asn1p_l.l"
2186{ QAPPEND(yytext, yyleng-1); } /* Add a single quote */
2187 YY_BREAK
2188case 17:
2189YY_RULE_SETUP
2190#line 173 "asn1p_l.l"
2191{ QAPPEND(yytext, yyleng); }
2192 YY_BREAK
2193case 18:
2194YY_RULE_SETUP
2195#line 175 "asn1p_l.l"
2196{
2197 yy_pop_state();
2198 /* Do not append last quote:
2199 // QAPPEND(yytext, yyleng); */
2200
2201 if(asn1p_lexer_pedantic_1990
2202 && strchr(yytext, '\n')) {
2203 fprintf(stderr, "%s: "
2204 "Newlines are prohibited by ASN.1:1990\n",
2205 asn1p_lval.tv_opaque.buf);
2206 return -1;
2207 }
2208
2209 return TOK_cstring;
2210 }
2211 YY_BREAK
2212
2213case 19:
2214YY_RULE_SETUP
2215#line 194 "asn1p_l.l"
2216{
2217 /* " \t\r\n" weren't allowed in ASN.1:1990. */
2218 asn1p_lval.tv_str = yytext;
2219 return TOK_hstring;
2220 }
2221 YY_BREAK
2222case 20:
2223YY_RULE_SETUP
2224#line 200 "asn1p_l.l"
2225{
2226 /* " \t\r\n" weren't allowed in ASN.1:1990. */
2227 asn1p_lval.tv_str = strdup(yytext);
2228 return TOK_bstring;
2229 }
2230 YY_BREAK
2231case 21:
2232YY_RULE_SETUP
2233#line 207 "asn1p_l.l"
2234{
2235 asn1p_lval.a_int = asn1p_atoi(yytext);
2236 if(errno == ERANGE)
2237 return -1;
2238 return TOK_number_negative;
2239 }
2240 YY_BREAK
2241case 22:
2242YY_RULE_SETUP
2243#line 214 "asn1p_l.l"
2244{
2245 asn1p_lval.a_int = asn1p_atoi(yytext);
2246 if(errno == ERANGE)
2247 return -1;
2248 return TOK_number;
2249 }
2250 YY_BREAK
2251case 23:
2252YY_RULE_SETUP
2253#line 221 "asn1p_l.l"
2254{
2255 asn1p_lval.a_int = asn1p_atoi(yytext);
2256 if(errno == ERANGE)
2257 return -1;
2258 return TOK_number;
2259 }
2260 YY_BREAK
2261/*
2262 * Tags
2263 */
2264case 24:
2265YY_RULE_SETUP
2266#line 231 "asn1p_l.l"
2267{
2268 char *p;
2269 memset(&asn1p_lval.a_tag, 0, sizeof(asn1p_lval.a_tag));
2270 switch(yytext[1]) {
2271 case 'U':
2272 asn1p_lval.a_tag.tag_class = TC_UNIVERSAL;
2273 p = yytext + sizeof("UNIVERSAL") + 1;
2274 break;
2275 case 'A':
2276 asn1p_lval.a_tag.tag_class = TC_APPLICATION;
2277 p = yytext + sizeof("APPLICATION") + 1;
2278 break;
2279 case 'P':
2280 asn1p_lval.a_tag.tag_class = TC_PRIVATE;
2281 p = yytext + sizeof("PRIVATE") + 1;
2282 break;
2283 default:
2284 assert(yytext[1] >= '0' && yytext[1] <= '9');
2285 asn1p_lval.a_tag.tag_class = TC_CONTEXT_SPECIFIC;
2286 p = yytext + 1;
2287 break;
2288 }
2289 asn1p_lval.a_tag.tag_value = asn1p_atoi(p);
2290 if(*p == '0' && asn1p_lval.a_tag.tag_value) {
2291 fprintf(stderr,
2292 "Tag value at line %d "
2293 "cannot start with zero "
2294 "and have multiple digits: \"%s\"\n",
2295 yylineno, yytext);
2296 return -1;
2297 }
2298 return TOK_tag;
2299 }
2300 YY_BREAK
2301case 25:
2302YY_RULE_SETUP
2303#line 265 "asn1p_l.l"
2304{
2305 fprintf(stderr,
2306 "Unsupported tag syntax at line %d: \"%s\"\n",
2307 yylineno, yytext);
2308 return -1;
2309 }
2310 YY_BREAK
2311case 26:
2312YY_RULE_SETUP
2313#line 272 "asn1p_l.l"
2314return TOK_ABSENT;
2315 YY_BREAK
2316case 27:
2317YY_RULE_SETUP
2318#line 273 "asn1p_l.l"
2319return TOK_ABSTRACT_SYNTAX;
2320 YY_BREAK
2321case 28:
2322YY_RULE_SETUP
2323#line 274 "asn1p_l.l"
2324return TOK_ALL;
2325 YY_BREAK
2326case 29:
2327YY_RULE_SETUP
2328#line 275 "asn1p_l.l"
2329{
2330 /* Appeared in 1990, removed in 1997 */
2331 if(TYPE_LIFETIME(1990, 1997))
2332 return TOK_ANY;
2333 fprintf(stderr, "Keyword \"%s\" at line %d "
2334 "is obsolete\n", yytext, yylineno);
2335 REJECT;
2336 }
2337 YY_BREAK
2338case 30:
2339YY_RULE_SETUP
2340#line 283 "asn1p_l.l"
2341return TOK_APPLICATION;
2342 YY_BREAK
2343case 31:
2344YY_RULE_SETUP
2345#line 284 "asn1p_l.l"
2346return TOK_AUTOMATIC;
2347 YY_BREAK
2348case 32:
2349YY_RULE_SETUP
2350#line 285 "asn1p_l.l"
2351return TOK_BEGIN;
2352 YY_BREAK
2353case 33:
2354YY_RULE_SETUP
2355#line 286 "asn1p_l.l"
2356return TOK_BIT;
2357 YY_BREAK
2358case 34:
2359YY_RULE_SETUP
2360#line 287 "asn1p_l.l"
2361{
2362 if(TYPE_LIFETIME(1994, 0))
2363 return TOK_BMPString;
2364 REJECT;
2365 }
2366 YY_BREAK
2367case 35:
2368YY_RULE_SETUP
2369#line 292 "asn1p_l.l"
2370return TOK_BOOLEAN;
2371 YY_BREAK
2372case 36:
2373YY_RULE_SETUP
2374#line 293 "asn1p_l.l"
2375return TOK_BY;
2376 YY_BREAK
2377case 37:
2378YY_RULE_SETUP
2379#line 294 "asn1p_l.l"
2380return TOK_CHARACTER;
2381 YY_BREAK
2382case 38:
2383YY_RULE_SETUP
2384#line 295 "asn1p_l.l"
2385return TOK_CHOICE;
2386 YY_BREAK
2387case 39:
2388YY_RULE_SETUP
2389#line 296 "asn1p_l.l"
2390return TOK_CLASS;
2391 YY_BREAK
2392case 40:
2393YY_RULE_SETUP
2394#line 297 "asn1p_l.l"
2395return TOK_COMPONENT;
2396 YY_BREAK
2397case 41:
2398YY_RULE_SETUP
2399#line 298 "asn1p_l.l"
2400return TOK_COMPONENTS;
2401 YY_BREAK
2402case 42:
2403YY_RULE_SETUP
2404#line 299 "asn1p_l.l"
2405return TOK_CONSTRAINED;
2406 YY_BREAK
2407case 43:
2408YY_RULE_SETUP
2409#line 300 "asn1p_l.l"
2410return TOK_CONTAINING;
2411 YY_BREAK
2412case 44:
2413YY_RULE_SETUP
2414#line 301 "asn1p_l.l"
2415return TOK_DEFAULT;
2416 YY_BREAK
2417case 45:
2418YY_RULE_SETUP
2419#line 302 "asn1p_l.l"
2420{
2421 /* Appeared in 1990, removed in 1997 */
2422 if(TYPE_LIFETIME(1990, 1997))
2423 return TOK_DEFINED;
2424 fprintf(stderr, "Keyword \"%s\" at line %d "
2425 "is obsolete\n", yytext, yylineno);
2426 /* Deprecated since */
2427 REJECT;
2428 }
2429 YY_BREAK
2430case 46:
2431YY_RULE_SETUP
2432#line 311 "asn1p_l.l"
2433return TOK_DEFINITIONS;
2434 YY_BREAK
2435case 47:
2436YY_RULE_SETUP
2437#line 312 "asn1p_l.l"
2438return TOK_EMBEDDED;
2439 YY_BREAK
2440case 48:
2441YY_RULE_SETUP
2442#line 313 "asn1p_l.l"
2443return TOK_ENCODED;
2444 YY_BREAK
2445case 49:
2446YY_RULE_SETUP
2447#line 314 "asn1p_l.l"
2448return TOK_END;
2449 YY_BREAK
2450case 50:
2451YY_RULE_SETUP
2452#line 315 "asn1p_l.l"
2453return TOK_ENUMERATED;
2454 YY_BREAK
2455case 51:
2456YY_RULE_SETUP
2457#line 316 "asn1p_l.l"
2458return TOK_EXCEPT;
2459 YY_BREAK
2460case 52:
2461YY_RULE_SETUP
2462#line 317 "asn1p_l.l"
2463return TOK_EXPLICIT;
2464 YY_BREAK
2465case 53:
2466YY_RULE_SETUP
2467#line 318 "asn1p_l.l"
2468return TOK_EXPORTS;
2469 YY_BREAK
2470case 54:
2471YY_RULE_SETUP
2472#line 319 "asn1p_l.l"
2473return TOK_EXTENSIBILITY;
2474 YY_BREAK
2475case 55:
2476YY_RULE_SETUP
2477#line 320 "asn1p_l.l"
2478return TOK_EXTERNAL;
2479 YY_BREAK
2480case 56:
2481YY_RULE_SETUP
2482#line 321 "asn1p_l.l"
2483return TOK_FALSE;
2484 YY_BREAK
2485case 57:
2486YY_RULE_SETUP
2487#line 322 "asn1p_l.l"
2488return TOK_FROM;
2489 YY_BREAK
2490case 58:
2491YY_RULE_SETUP
2492#line 323 "asn1p_l.l"
2493return TOK_GeneralizedTime;
2494 YY_BREAK
2495case 59:
2496YY_RULE_SETUP
2497#line 324 "asn1p_l.l"
2498return TOK_GeneralString;
2499 YY_BREAK
2500case 60:
2501YY_RULE_SETUP
2502#line 325 "asn1p_l.l"
2503return TOK_GraphicString;
2504 YY_BREAK
2505case 61:
2506YY_RULE_SETUP
2507#line 326 "asn1p_l.l"
2508return TOK_IA5String;
2509 YY_BREAK
2510case 62:
2511YY_RULE_SETUP
2512#line 327 "asn1p_l.l"
2513return TOK_IDENTIFIER;
2514 YY_BREAK
2515case 63:
2516YY_RULE_SETUP
2517#line 328 "asn1p_l.l"
2518return TOK_IMPLICIT;
2519 YY_BREAK
2520case 64:
2521YY_RULE_SETUP
2522#line 329 "asn1p_l.l"
2523return TOK_IMPLIED;
2524 YY_BREAK
2525case 65:
2526YY_RULE_SETUP
2527#line 330 "asn1p_l.l"
2528return TOK_IMPORTS;
2529 YY_BREAK
2530case 66:
2531YY_RULE_SETUP
2532#line 331 "asn1p_l.l"
2533return TOK_INCLUDES;
2534 YY_BREAK
2535case 67:
2536YY_RULE_SETUP
2537#line 332 "asn1p_l.l"
2538return TOK_INSTANCE;
2539 YY_BREAK
2540case 68:
2541YY_RULE_SETUP
2542#line 333 "asn1p_l.l"
2543return TOK_INTEGER;
2544 YY_BREAK
2545case 69:
2546YY_RULE_SETUP
2547#line 334 "asn1p_l.l"
2548return TOK_INTERSECTION;
2549 YY_BREAK
2550case 70:
2551YY_RULE_SETUP
2552#line 335 "asn1p_l.l"
2553return TOK_ISO646String;
2554 YY_BREAK
2555case 71:
2556YY_RULE_SETUP
2557#line 336 "asn1p_l.l"
2558return TOK_MAX;
2559 YY_BREAK
2560case 72:
2561YY_RULE_SETUP
2562#line 337 "asn1p_l.l"
2563return TOK_MIN;
2564 YY_BREAK
2565case 73:
2566YY_RULE_SETUP
2567#line 338 "asn1p_l.l"
2568return TOK_MINUS_INFINITY;
2569 YY_BREAK
2570case 74:
2571YY_RULE_SETUP
2572#line 339 "asn1p_l.l"
2573return TOK_NULL;
2574 YY_BREAK
2575case 75:
2576YY_RULE_SETUP
2577#line 340 "asn1p_l.l"
2578return TOK_NumericString;
2579 YY_BREAK
2580case 76:
2581YY_RULE_SETUP
2582#line 341 "asn1p_l.l"
2583return TOK_OBJECT;
2584 YY_BREAK
2585case 77:
2586YY_RULE_SETUP
2587#line 342 "asn1p_l.l"
2588return TOK_ObjectDescriptor;
2589 YY_BREAK
2590case 78:
2591YY_RULE_SETUP
2592#line 343 "asn1p_l.l"
2593return TOK_OCTET;
2594 YY_BREAK
2595case 79:
2596YY_RULE_SETUP
2597#line 344 "asn1p_l.l"
2598return TOK_OF;
2599 YY_BREAK
2600case 80:
2601YY_RULE_SETUP
2602#line 345 "asn1p_l.l"
2603return TOK_OPTIONAL;
2604 YY_BREAK
2605case 81:
2606YY_RULE_SETUP
2607#line 346 "asn1p_l.l"
2608return TOK_PATTERN;
2609 YY_BREAK
2610case 82:
2611YY_RULE_SETUP
2612#line 347 "asn1p_l.l"
2613return TOK_PDV;
2614 YY_BREAK
2615case 83:
2616YY_RULE_SETUP
2617#line 348 "asn1p_l.l"
2618return TOK_PLUS_INFINITY;
2619 YY_BREAK
2620case 84:
2621YY_RULE_SETUP
2622#line 349 "asn1p_l.l"
2623return TOK_PRESENT;
2624 YY_BREAK
2625case 85:
2626YY_RULE_SETUP
2627#line 350 "asn1p_l.l"
2628return TOK_PrintableString;
2629 YY_BREAK
2630case 86:
2631YY_RULE_SETUP
2632#line 351 "asn1p_l.l"
2633return TOK_PRIVATE;
2634 YY_BREAK
2635case 87:
2636YY_RULE_SETUP
2637#line 352 "asn1p_l.l"
2638return TOK_REAL;
2639 YY_BREAK
2640case 88:
2641YY_RULE_SETUP
2642#line 353 "asn1p_l.l"
2643return TOK_RELATIVE_OID;
2644 YY_BREAK
2645case 89:
2646YY_RULE_SETUP
2647#line 354 "asn1p_l.l"
2648return TOK_SEQUENCE;
2649 YY_BREAK
2650case 90:
2651YY_RULE_SETUP
2652#line 355 "asn1p_l.l"
2653return TOK_SET;
2654 YY_BREAK
2655case 91:
2656YY_RULE_SETUP
2657#line 356 "asn1p_l.l"
2658return TOK_SIZE;
2659 YY_BREAK
2660case 92:
2661YY_RULE_SETUP
2662#line 357 "asn1p_l.l"
2663return TOK_STRING;
2664 YY_BREAK
2665case 93:
2666YY_RULE_SETUP
2667#line 358 "asn1p_l.l"
2668return TOK_SYNTAX;
2669 YY_BREAK
2670case 94:
2671YY_RULE_SETUP
2672#line 359 "asn1p_l.l"
2673return TOK_T61String;
2674 YY_BREAK
2675case 95:
2676YY_RULE_SETUP
2677#line 360 "asn1p_l.l"
2678return TOK_TAGS;
2679 YY_BREAK
2680case 96:
2681YY_RULE_SETUP
2682#line 361 "asn1p_l.l"
2683return TOK_TeletexString;
2684 YY_BREAK
2685case 97:
2686YY_RULE_SETUP
2687#line 362 "asn1p_l.l"
2688return TOK_TRUE;
2689 YY_BREAK
2690case 98:
2691YY_RULE_SETUP
2692#line 363 "asn1p_l.l"
2693return TOK_TYPE_IDENTIFIER;
2694 YY_BREAK
2695case 99:
2696YY_RULE_SETUP
2697#line 364 "asn1p_l.l"
2698return TOK_UNION;
2699 YY_BREAK
2700case 100:
2701YY_RULE_SETUP
2702#line 365 "asn1p_l.l"
2703return TOK_UNIQUE;
2704 YY_BREAK
2705case 101:
2706YY_RULE_SETUP
2707#line 366 "asn1p_l.l"
2708return TOK_UNIVERSAL;
2709 YY_BREAK
2710case 102:
2711YY_RULE_SETUP
2712#line 367 "asn1p_l.l"
2713{
2714 if(TYPE_LIFETIME(1994, 0))
2715 return TOK_UniversalString;
2716 REJECT;
2717 }
2718 YY_BREAK
2719case 103:
2720YY_RULE_SETUP
2721#line 372 "asn1p_l.l"
2722return TOK_UTCTime;
2723 YY_BREAK
2724case 104:
2725YY_RULE_SETUP
2726#line 373 "asn1p_l.l"
2727{
2728 if(TYPE_LIFETIME(1994, 0))
2729 return TOK_UTF8String;
2730 REJECT;
2731 }
2732 YY_BREAK
2733case 105:
2734YY_RULE_SETUP
2735#line 378 "asn1p_l.l"
2736return TOK_VideotexString;
2737 YY_BREAK
2738case 106:
2739YY_RULE_SETUP
2740#line 379 "asn1p_l.l"
2741return TOK_VisibleString;
2742 YY_BREAK
2743case 107:
2744YY_RULE_SETUP
2745#line 380 "asn1p_l.l"
2746return TOK_WITH;
2747 YY_BREAK
2748case 108:
2749YY_RULE_SETUP
2750#line 383 "asn1p_l.l"
2751{
2752 CHECK_DASHES;
2753 asn1p_lval.tv_str = strdup(yytext);
2754 return TOK_typefieldreference;
2755 }
2756 YY_BREAK
2757case 109:
2758YY_RULE_SETUP
2759#line 389 "asn1p_l.l"
2760{
2761 CHECK_DASHES;
2762 asn1p_lval.tv_str = strdup(yytext);
2763 return TOK_valuefieldreference;
2764 }
2765 YY_BREAK
2766case 110:
2767YY_RULE_SETUP
2768#line 396 "asn1p_l.l"
2769{
2770 CHECK_DASHES;
2771 asn1p_lval.tv_str = strdup(yytext);
2772 return TOK_identifier;
2773 }
2774 YY_BREAK
2775/*
2776 * objectclassreference
2777 */
2778case 111:
2779YY_RULE_SETUP
2780#line 405 "asn1p_l.l"
2781{
2782 CHECK_DASHES;
2783 asn1p_lval.tv_str = strdup(yytext);
2784 return TOK_objectclassreference;
2785 }
2786 YY_BREAK
2787/*
2788 * typereference, modulereference
2789 * NOTE: TOK_objectclassreference must be combined
2790 * with this token to produce true typereference.
2791 */
2792case 112:
2793YY_RULE_SETUP
2794#line 416 "asn1p_l.l"
2795{
2796 CHECK_DASHES;
2797 asn1p_lval.tv_str = strdup(yytext);
2798 return TOK_typereference;
2799 }
2800 YY_BREAK
2801case 113:
2802YY_RULE_SETUP
2803#line 422 "asn1p_l.l"
2804return TOK_PPEQ;
2805 YY_BREAK
2806case 114:
2807YY_RULE_SETUP
2808#line 424 "asn1p_l.l"
2809return TOK_ThreeDots;
2810 YY_BREAK
2811case 115:
2812YY_RULE_SETUP
2813#line 425 "asn1p_l.l"
2814return TOK_TwoDots;
2815 YY_BREAK
2816case 116:
2817YY_RULE_SETUP
2818#line 427 "asn1p_l.l"
2819return yytext[0];
2820 YY_BREAK
2821case 117:
2822YY_RULE_SETUP
2823#line 429 "asn1p_l.l"
2824/* Ignore whitespace */
2825 YY_BREAK
2826case 118:
2827YY_RULE_SETUP
2828#line 431 "asn1p_l.l"
2829{
2830 if(TYPE_LIFETIME(1994, 0))
2831 fprintf(stderr, "ERROR: ");
2832 fprintf(stderr,
2833 "Symbol '%c' at line %d is prohibited "
2834 "by ASN.1:1994 and ASN.1:1997\n",
2835 yytext[0], yylineno);
2836 if(TYPE_LIFETIME(1994, 0))
2837 return -1;
2838 }
2839 YY_BREAK
2840
2841case 119:
2842YY_RULE_SETUP
2843#line 444 "asn1p_l.l"
2844{
2845 asn1p_lval.tv_opaque.buf = strdup(yytext);
2846 asn1p_lval.tv_opaque.len = yyleng;
2847 return TOK_opaque;
2848 }
2849 YY_BREAK
2850case 120:
2851YY_RULE_SETUP
2852#line 450 "asn1p_l.l"
2853{
2854 asn1p_lval.tv_opaque.buf = strdup(yytext);
2855 asn1p_lval.tv_opaque.len = yyleng;
2856 return TOK_opaque;
2857 }
2858 YY_BREAK
2859case 121:
2860YY_RULE_SETUP
2861#line 456 "asn1p_l.l"
2862{
2863 yy_pop_state();
2864 return '}';
2865 }
2866 YY_BREAK
2867
2868case 122:
2869YY_RULE_SETUP
2870#line 464 "asn1p_l.l"
2871{
2872 fprintf(stderr,
2873 "Unexpected token at line %d: \"%s\"\n",
2874 yylineno, yytext);
2875 while(YYSTATE != INITIAL)
2876 yy_pop_state();
2877 yy_top_state(); /* Just to use this function. */
2878 yyterminate();
2879 yy_fatal_error("Unexpected token");
2880 return -1;
2881}
2882 YY_BREAK
2883case YY_STATE_EOF(INITIAL):
2884case YY_STATE_EOF(dash_comment):
2885case YY_STATE_EOF(cpp_comment):
2886case YY_STATE_EOF(quoted):
2887case YY_STATE_EOF(opaque):
2888case YY_STATE_EOF(with_syntax):
2889#line 476 "asn1p_l.l"
2890{
2891 while(YYSTATE != INITIAL)
2892 yy_pop_state();
2893 yyterminate();
2894 }
2895 YY_BREAK
2896case 123:
2897YY_RULE_SETUP
2898#line 483 "asn1p_l.l"
2899YY_FATAL_ERROR( "flex scanner jammed" );
2900 YY_BREAK
2901#line 2902 "lex.yy.c"
2902
2903 case YY_END_OF_BUFFER:
2904 {
2905 /* Amount of text matched not including the EOB char. */
2906 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2907
2908 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2909 *yy_cp = yy_hold_char;
2910 YY_RESTORE_YY_MORE_OFFSET
2911
2912 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2913 {
2914 /* We're scanning a new file or input source. It's
2915 * possible that this happened because the user
2916 * just pointed yyin at a new source and called
2917 * yylex(). If so, then we have to assure
2918 * consistency between yy_current_buffer and our
2919 * globals. Here is the right place to do so, because
2920 * this is the first action (other than possibly a
2921 * back-up) that will match for the new input source.
2922 */
2923 yy_n_chars = yy_current_buffer->yy_n_chars;
2924 yy_current_buffer->yy_input_file = yyin;
2925 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2926 }
2927
2928 /* Note that here we test for yy_c_buf_p "<=" to the position
2929 * of the first EOB in the buffer, since yy_c_buf_p will
2930 * already have been incremented past the NUL character
2931 * (since all states make transitions on EOB to the
2932 * end-of-buffer state). Contrast this with the test
2933 * in input().
2934 */
2935 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2936 { /* This was really a NUL. */
2937 yy_state_type yy_next_state;
2938
2939 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2940
2941 yy_current_state = yy_get_previous_state();
2942
2943 /* Okay, we're now positioned to make the NUL
2944 * transition. We couldn't have
2945 * yy_get_previous_state() go ahead and do it
2946 * for us because it doesn't know how to deal
2947 * with the possibility of jamming (and we don't
2948 * want to build jamming into it because then it
2949 * will run more slowly).
2950 */
2951
2952 yy_next_state = yy_try_NUL_trans( yy_current_state );
2953
2954 yy_bp = yytext_ptr + YY_MORE_ADJ;
2955
2956 if ( yy_next_state )
2957 {
2958 /* Consume the NUL. */
2959 yy_cp = ++yy_c_buf_p;
2960 yy_current_state = yy_next_state;
2961 goto yy_match;
2962 }
2963
2964 else
2965 {
2966 yy_cp = yy_c_buf_p;
2967 goto yy_find_action;
2968 }
2969 }
2970
2971 else switch ( yy_get_next_buffer() )
2972 {
2973 case EOB_ACT_END_OF_FILE:
2974 {
2975 yy_did_buffer_switch_on_eof = 0;
2976
2977 if ( yywrap() )
2978 {
2979 /* Note: because we've taken care in
2980 * yy_get_next_buffer() to have set up
2981 * yytext, we can now set up
2982 * yy_c_buf_p so that if some total
2983 * hoser (like flex itself) wants to
2984 * call the scanner after we return the
2985 * YY_NULL, it'll still work - another
2986 * YY_NULL will get returned.
2987 */
2988 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2989
2990 yy_act = YY_STATE_EOF(YY_START);
2991 goto do_action;
2992 }
2993
2994 else
2995 {
2996 if ( ! yy_did_buffer_switch_on_eof )
2997 YY_NEW_FILE;
2998 }
2999 break;
3000 }
3001
3002 case EOB_ACT_CONTINUE_SCAN:
3003 yy_c_buf_p =
3004 yytext_ptr + yy_amount_of_matched_text;
3005
3006 yy_current_state = yy_get_previous_state();
3007
3008 yy_cp = yy_c_buf_p;
3009 yy_bp = yytext_ptr + YY_MORE_ADJ;
3010 goto yy_match;
3011
3012 case EOB_ACT_LAST_MATCH:
3013 yy_c_buf_p =
3014 &yy_current_buffer->yy_ch_buf[yy_n_chars];
3015
3016 yy_current_state = yy_get_previous_state();
3017
3018 yy_cp = yy_c_buf_p;
3019 yy_bp = yytext_ptr + YY_MORE_ADJ;
3020 goto yy_find_action;
3021 }
3022 break;
3023 }
3024
3025 default:
3026 YY_FATAL_ERROR(
3027 "fatal flex scanner internal error--no action found" );
3028 } /* end of action switch */
3029 } /* end of scanning one token */
3030 } /* end of yylex */
3031
3032
3033/* yy_get_next_buffer - try to read in a new buffer
3034 *
3035 * Returns a code representing an action:
3036 * EOB_ACT_LAST_MATCH -
3037 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3038 * EOB_ACT_END_OF_FILE - end of file
3039 */
3040
3041static int yy_get_next_buffer()
3042 {
3043 register char *dest = yy_current_buffer->yy_ch_buf;
3044 register char *source = yytext_ptr;
3045 register int number_to_move, i;
3046 int ret_val;
3047
3048 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
3049 YY_FATAL_ERROR(
3050 "fatal flex scanner internal error--end of buffer missed" );
3051
3052 if ( yy_current_buffer->yy_fill_buffer == 0 )
3053 { /* Don't try to fill the buffer, so this is an EOF. */
3054 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
3055 {
3056 /* We matched a single character, the EOB, so
3057 * treat this as a final EOF.
3058 */
3059 return EOB_ACT_END_OF_FILE;
3060 }
3061
3062 else
3063 {
3064 /* We matched some text prior to the EOB, first
3065 * process it.
3066 */
3067 return EOB_ACT_LAST_MATCH;
3068 }
3069 }
3070
3071 /* Try to read more data. */
3072
3073 /* First move last chars to start of buffer. */
3074 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
3075
3076 for ( i = 0; i < number_to_move; ++i )
3077 *(dest++) = *(source++);
3078
3079 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3080 /* don't do the read, it's not guaranteed to return an EOF,
3081 * just force an EOF
3082 */
3083 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
3084
3085 else
3086 {
3087 int num_to_read =
3088 yy_current_buffer->yy_buf_size - number_to_move - 1;
3089
3090 while ( num_to_read <= 0 )
3091 { /* Not enough room in the buffer - grow it. */
3092#ifdef YY_USES_REJECT
3093 YY_FATAL_ERROR(
3094"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3095#else
3096
3097 /* just a shorter name for the current buffer */
3098 YY_BUFFER_STATE b = yy_current_buffer;
3099
3100 int yy_c_buf_p_offset =
3101 (int) (yy_c_buf_p - b->yy_ch_buf);
3102
3103 if ( b->yy_is_our_buffer )
3104 {
3105 int new_size = b->yy_buf_size * 2;
3106
3107 if ( new_size <= 0 )
3108 b->yy_buf_size += b->yy_buf_size / 8;
3109 else
3110 b->yy_buf_size *= 2;
3111
3112 b->yy_ch_buf = (char *)
3113 /* Include room in for 2 EOB chars. */
3114 yy_flex_realloc( (void *) b->yy_ch_buf,
3115 b->yy_buf_size + 2 );
3116 }
3117 else
3118 /* Can't grow it, we don't own it. */
3119 b->yy_ch_buf = 0;
3120
3121 if ( ! b->yy_ch_buf )
3122 YY_FATAL_ERROR(
3123 "fatal error - scanner input buffer overflow" );
3124
3125 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3126
3127 num_to_read = yy_current_buffer->yy_buf_size -
3128 number_to_move - 1;
3129#endif
3130 }
3131
3132 if ( num_to_read > YY_READ_BUF_SIZE )
3133 num_to_read = YY_READ_BUF_SIZE;
3134
3135 /* Read in more data. */
3136 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
3137 yy_n_chars, num_to_read );
3138
3139 yy_current_buffer->yy_n_chars = yy_n_chars;
3140 }
3141
3142 if ( yy_n_chars == 0 )
3143 {
3144 if ( number_to_move == YY_MORE_ADJ )
3145 {
3146 ret_val = EOB_ACT_END_OF_FILE;
3147 yyrestart( yyin );
3148 }
3149
3150 else
3151 {
3152 ret_val = EOB_ACT_LAST_MATCH;
3153 yy_current_buffer->yy_buffer_status =
3154 YY_BUFFER_EOF_PENDING;
3155 }
3156 }
3157
3158 else
3159 ret_val = EOB_ACT_CONTINUE_SCAN;
3160
3161 yy_n_chars += number_to_move;
3162 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3163 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3164
3165 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
3166
3167 return ret_val;
3168 }
3169
3170
3171/* yy_get_previous_state - get the state just before the EOB char was reached */
3172
3173static yy_state_type yy_get_previous_state()
3174 {
3175 register yy_state_type yy_current_state;
3176 register char *yy_cp;
3177
3178 yy_current_state = yy_start;
3179 yy_state_ptr = yy_state_buf;
3180 *yy_state_ptr++ = yy_current_state;
3181
3182 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
3183 {
3184 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3185 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3186 {
3187 yy_current_state = (int) yy_def[yy_current_state];
3188 if ( yy_current_state >= 675 )
3189 yy_c = yy_meta[(unsigned int) yy_c];
3190 }
3191 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3192 *yy_state_ptr++ = yy_current_state;
3193 }
3194
3195 return yy_current_state;
3196 }
3197
3198
3199/* yy_try_NUL_trans - try to make a transition on the NUL character
3200 *
3201 * synopsis
3202 * next_state = yy_try_NUL_trans( current_state );
3203 */
3204
3205#ifdef YY_USE_PROTOS
3206static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
3207#else
3208static yy_state_type yy_try_NUL_trans( yy_current_state )
3209yy_state_type yy_current_state;
3210#endif
3211 {
3212 register int yy_is_jam;
3213
3214 register YY_CHAR yy_c = 1;
3215 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3216 {
3217 yy_current_state = (int) yy_def[yy_current_state];
3218 if ( yy_current_state >= 675 )
3219 yy_c = yy_meta[(unsigned int) yy_c];
3220 }
3221 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3222 yy_is_jam = (yy_current_state == 674);
3223 if ( ! yy_is_jam )
3224 *yy_state_ptr++ = yy_current_state;
3225
3226 return yy_is_jam ? 0 : yy_current_state;
3227 }
3228
3229
3230#ifndef YY_NO_UNPUT
3231#ifdef YY_USE_PROTOS
3232static void yyunput( int c, register char *yy_bp )
3233#else
3234static void yyunput( c, yy_bp )
3235int c;
3236register char *yy_bp;
3237#endif
3238 {
3239 register char *yy_cp = yy_c_buf_p;
3240
3241 /* undo effects of setting up yytext */
3242 *yy_cp = yy_hold_char;
3243
3244 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3245 { /* need to shift things up to make room */
3246 /* +2 for EOB chars. */
3247 register int number_to_move = yy_n_chars + 2;
3248 register char *dest = &yy_current_buffer->yy_ch_buf[
3249 yy_current_buffer->yy_buf_size + 2];
3250 register char *source =
3251 &yy_current_buffer->yy_ch_buf[number_to_move];
3252
3253 while ( source > yy_current_buffer->yy_ch_buf )
3254 *--dest = *--source;
3255
3256 yy_cp += (int) (dest - source);
3257 yy_bp += (int) (dest - source);
3258 yy_current_buffer->yy_n_chars =
3259 yy_n_chars = yy_current_buffer->yy_buf_size;
3260
3261 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3262 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3263 }
3264
3265 *--yy_cp = (char) c;
3266
3267 if ( c == '\n' )
3268 --yylineno;
3269
3270 yytext_ptr = yy_bp;
3271 yy_hold_char = *yy_cp;
3272 yy_c_buf_p = yy_cp;
3273 }
3274#endif /* ifndef YY_NO_UNPUT */
3275
3276
3277#ifdef __cplusplus
3278static int yyinput()
3279#else
3280static int input()
3281#endif
3282 {
3283 int c;
3284
3285 *yy_c_buf_p = yy_hold_char;
3286
3287 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3288 {
3289 /* yy_c_buf_p now points to the character we want to return.
3290 * If this occurs *before* the EOB characters, then it's a
3291 * valid NUL; if not, then we've hit the end of the buffer.
3292 */
3293 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3294 /* This was really a NUL. */
3295 *yy_c_buf_p = '\0';
3296
3297 else
3298 { /* need more input */
3299 int offset = yy_c_buf_p - yytext_ptr;
3300 ++yy_c_buf_p;
3301
3302 switch ( yy_get_next_buffer() )
3303 {
3304 case EOB_ACT_LAST_MATCH:
3305 /* This happens because yy_g_n_b()
3306 * sees that we've accumulated a
3307 * token and flags that we need to
3308 * try matching the token before
3309 * proceeding. But for input(),
3310 * there's no matching to consider.
3311 * So convert the EOB_ACT_LAST_MATCH
3312 * to EOB_ACT_END_OF_FILE.
3313 */
3314
3315 /* Reset buffer status. */
3316 yyrestart( yyin );
3317
3318 /* fall through */
3319
3320 case EOB_ACT_END_OF_FILE:
3321 {
3322 if ( yywrap() )
3323 return EOF;
3324
3325 if ( ! yy_did_buffer_switch_on_eof )
3326 YY_NEW_FILE;
3327#ifdef __cplusplus
3328 return yyinput();
3329#else
3330 return input();
3331#endif
3332 }
3333
3334 case EOB_ACT_CONTINUE_SCAN:
3335 yy_c_buf_p = yytext_ptr + offset;
3336 break;
3337 }
3338 }
3339 }
3340
3341 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
3342 *yy_c_buf_p = '\0'; /* preserve yytext */
3343 yy_hold_char = *++yy_c_buf_p;
3344
3345 if ( c == '\n' )
3346 ++yylineno;
3347
3348 return c;
3349 }
3350
3351
3352#ifdef YY_USE_PROTOS
3353void yyrestart( FILE *input_file )
3354#else
3355void yyrestart( input_file )
3356FILE *input_file;
3357#endif
3358 {
3359 if ( ! yy_current_buffer )
3360 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3361
3362 yy_init_buffer( yy_current_buffer, input_file );
3363 yy_load_buffer_state();
3364 }
3365
3366
3367#ifdef YY_USE_PROTOS
3368void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3369#else
3370void yy_switch_to_buffer( new_buffer )
3371YY_BUFFER_STATE new_buffer;
3372#endif
3373 {
3374 if ( yy_current_buffer == new_buffer )
3375 return;
3376
3377 if ( yy_current_buffer )
3378 {
3379 /* Flush out information for old buffer. */
3380 *yy_c_buf_p = yy_hold_char;
3381 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3382 yy_current_buffer->yy_n_chars = yy_n_chars;
3383 }
3384
3385 yy_current_buffer = new_buffer;
3386 yy_load_buffer_state();
3387
3388 /* We don't actually know whether we did this switch during
3389 * EOF (yywrap()) processing, but the only time this flag
3390 * is looked at is after yywrap() is called, so it's safe
3391 * to go ahead and always set it.
3392 */
3393 yy_did_buffer_switch_on_eof = 1;
3394 }
3395
3396
3397#ifdef YY_USE_PROTOS
3398void yy_load_buffer_state( void )
3399#else
3400void yy_load_buffer_state()
3401#endif
3402 {
3403 yy_n_chars = yy_current_buffer->yy_n_chars;
3404 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3405 yyin = yy_current_buffer->yy_input_file;
3406 yy_hold_char = *yy_c_buf_p;
3407 }
3408
3409
3410#ifdef YY_USE_PROTOS
3411YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3412#else
3413YY_BUFFER_STATE yy_create_buffer( file, size )
3414FILE *file;
3415int size;
3416#endif
3417 {
3418 YY_BUFFER_STATE b;
3419
3420 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3421 if ( ! b )
3422 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3423
3424 b->yy_buf_size = size;
3425
3426 /* yy_ch_buf has to be 2 characters longer than the size given because
3427 * we need to put in 2 end-of-buffer characters.
3428 */
3429 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3430 if ( ! b->yy_ch_buf )
3431 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3432
3433 b->yy_is_our_buffer = 1;
3434
3435 yy_init_buffer( b, file );
3436
3437 return b;
3438 }
3439
3440
3441#ifdef YY_USE_PROTOS
3442void yy_delete_buffer( YY_BUFFER_STATE b )
3443#else
3444void yy_delete_buffer( b )
3445YY_BUFFER_STATE b;
3446#endif
3447 {
3448 if ( ! b )
3449 return;
3450
3451 if ( b == yy_current_buffer )
3452 yy_current_buffer = (YY_BUFFER_STATE) 0;
3453
3454 if ( b->yy_is_our_buffer )
3455 yy_flex_free( (void *) b->yy_ch_buf );
3456
3457 yy_flex_free( (void *) b );
3458 }
3459
3460
3461#ifndef YY_ALWAYS_INTERACTIVE
3462#ifndef YY_NEVER_INTERACTIVE
3463extern int isatty YY_PROTO(( int ));
3464#endif
3465#endif
3466
3467#ifdef YY_USE_PROTOS
3468void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3469#else
3470void yy_init_buffer( b, file )
3471YY_BUFFER_STATE b;
3472FILE *file;
3473#endif
3474
3475
3476 {
3477 yy_flush_buffer( b );
3478
3479 b->yy_input_file = file;
3480 b->yy_fill_buffer = 1;
3481
3482#if YY_ALWAYS_INTERACTIVE
3483 b->yy_is_interactive = 1;
3484#else
3485#if YY_NEVER_INTERACTIVE
3486 b->yy_is_interactive = 0;
3487#else
3488 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3489#endif
3490#endif
3491 }
3492
3493
3494#ifdef YY_USE_PROTOS
3495void yy_flush_buffer( YY_BUFFER_STATE b )
3496#else
3497void yy_flush_buffer( b )
3498YY_BUFFER_STATE b;
3499#endif
3500
3501 {
3502 if ( ! b )
3503 return;
3504
3505 b->yy_n_chars = 0;
3506
3507 /* We always need two end-of-buffer characters. The first causes
3508 * a transition to the end-of-buffer state. The second causes
3509 * a jam in that state.
3510 */
3511 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3512 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3513
3514 b->yy_buf_pos = &b->yy_ch_buf[0];
3515
3516 b->yy_at_bol = 1;
3517 b->yy_buffer_status = YY_BUFFER_NEW;
3518
3519 if ( b == yy_current_buffer )
3520 yy_load_buffer_state();
3521 }
3522
3523
3524#ifndef YY_NO_SCAN_BUFFER
3525#ifdef YY_USE_PROTOS
3526YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3527#else
3528YY_BUFFER_STATE yy_scan_buffer( base, size )
3529char *base;
3530yy_size_t size;
3531#endif
3532 {
3533 YY_BUFFER_STATE b;
3534
3535 if ( size < 2 ||
3536 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3537 base[size-1] != YY_END_OF_BUFFER_CHAR )
3538 /* They forgot to leave room for the EOB's. */
3539 return 0;
3540
3541 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3542 if ( ! b )
3543 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3544
3545 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3546 b->yy_buf_pos = b->yy_ch_buf = base;
3547 b->yy_is_our_buffer = 0;
3548 b->yy_input_file = 0;
3549 b->yy_n_chars = b->yy_buf_size;
3550 b->yy_is_interactive = 0;
3551 b->yy_at_bol = 1;
3552 b->yy_fill_buffer = 0;
3553 b->yy_buffer_status = YY_BUFFER_NEW;
3554
3555 yy_switch_to_buffer( b );
3556
3557 return b;
3558 }
3559#endif
3560
3561
3562#ifndef YY_NO_SCAN_STRING
3563#ifdef YY_USE_PROTOS
3564YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3565#else
3566YY_BUFFER_STATE yy_scan_string( yy_str )
3567yyconst char *yy_str;
3568#endif
3569 {
3570 int len;
3571 for ( len = 0; yy_str[len]; ++len )
3572 ;
3573
3574 return yy_scan_bytes( yy_str, len );
3575 }
3576#endif
3577
3578
3579#ifndef YY_NO_SCAN_BYTES
3580#ifdef YY_USE_PROTOS
3581YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3582#else
3583YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3584yyconst char *bytes;
3585int len;
3586#endif
3587 {
3588 YY_BUFFER_STATE b;
3589 char *buf;
3590 yy_size_t n;
3591 int i;
3592
3593 /* Get memory for full buffer, including space for trailing EOB's. */
3594 n = len + 2;
3595 buf = (char *) yy_flex_alloc( n );
3596 if ( ! buf )
3597 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3598
3599 for ( i = 0; i < len; ++i )
3600 buf[i] = bytes[i];
3601
3602 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3603
3604 b = yy_scan_buffer( buf, n );
3605 if ( ! b )
3606 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3607
3608 /* It's okay to grow etc. this buffer, and we should throw it
3609 * away when we're done.
3610 */
3611 b->yy_is_our_buffer = 1;
3612
3613 return b;
3614 }
3615#endif
3616
3617
3618#ifndef YY_NO_PUSH_STATE
3619#ifdef YY_USE_PROTOS
3620static void yy_push_state( int new_state )
3621#else
3622static void yy_push_state( new_state )
3623int new_state;
3624#endif
3625 {
3626 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3627 {
3628 yy_size_t new_size;
3629
3630 yy_start_stack_depth += YY_START_STACK_INCR;
3631 new_size = yy_start_stack_depth * sizeof( int );
3632
3633 if ( ! yy_start_stack )
3634 yy_start_stack = (int *) yy_flex_alloc( new_size );
3635
3636 else
3637 yy_start_stack = (int *) yy_flex_realloc(
3638 (void *) yy_start_stack, new_size );
3639
3640 if ( ! yy_start_stack )
3641 YY_FATAL_ERROR(
3642 "out of memory expanding start-condition stack" );
3643 }
3644
3645 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3646
3647 BEGIN(new_state);
3648 }
3649#endif
3650
3651
3652#ifndef YY_NO_POP_STATE
3653static void yy_pop_state()
3654 {
3655 if ( --yy_start_stack_ptr < 0 )
3656 YY_FATAL_ERROR( "start-condition stack underflow" );
3657
3658 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3659 }
3660#endif
3661
3662
3663#ifndef YY_NO_TOP_STATE
3664static int yy_top_state()
3665 {
3666 return yy_start_stack[yy_start_stack_ptr - 1];
3667 }
3668#endif
3669
3670#ifndef YY_EXIT_FAILURE
3671#define YY_EXIT_FAILURE 2
3672#endif
3673
3674#ifdef YY_USE_PROTOS
3675static void yy_fatal_error( yyconst char msg[] )
3676#else
3677static void yy_fatal_error( msg )
3678char msg[];
3679#endif
3680 {
3681 (void) fprintf( stderr, "%s\n", msg );
3682 exit( YY_EXIT_FAILURE );
3683 }
3684
3685
3686
3687/* Redefine yyless() so it works in section 3 code. */
3688
3689#undef yyless
3690#define yyless(n) \
3691 do \
3692 { \
3693 /* Undo effects of setting up yytext. */ \
3694 yytext[yyleng] = yy_hold_char; \
3695 yy_c_buf_p = yytext + n; \
3696 yy_hold_char = *yy_c_buf_p; \
3697 *yy_c_buf_p = '\0'; \
3698 yyleng = n; \
3699 } \
3700 while ( 0 )
3701
3702
3703/* Internal utility routines. */
3704
3705#ifndef yytext_ptr
3706#ifdef YY_USE_PROTOS
3707static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3708#else
3709static void yy_flex_strncpy( s1, s2, n )
3710char *s1;
3711yyconst char *s2;
3712int n;
3713#endif
3714 {
3715 register int i;
3716 for ( i = 0; i < n; ++i )
3717 s1[i] = s2[i];
3718 }
3719#endif
3720
3721#ifdef YY_NEED_STRLEN
3722#ifdef YY_USE_PROTOS
3723static int yy_flex_strlen( yyconst char *s )
3724#else
3725static int yy_flex_strlen( s )
3726yyconst char *s;
3727#endif
3728 {
3729 register int n;
3730 for ( n = 0; s[n]; ++n )
3731 ;
3732
3733 return n;
3734 }
3735#endif
3736
3737
3738#ifdef YY_USE_PROTOS
3739static void *yy_flex_alloc( yy_size_t size )
3740#else
3741static void *yy_flex_alloc( size )
3742yy_size_t size;
3743#endif
3744 {
3745 return (void *) malloc( size );
3746 }
3747
3748#ifdef YY_USE_PROTOS
3749static void *yy_flex_realloc( void *ptr, yy_size_t size )
3750#else
3751static void *yy_flex_realloc( ptr, size )
3752void *ptr;
3753yy_size_t size;
3754#endif
3755 {
3756 /* The cast to (char *) in the following accommodates both
3757 * implementations that use char* generic pointers, and those
3758 * that use void* generic pointers. It works with the latter
3759 * because both ANSI C and C++ allow castless assignment from
3760 * any pointer type to void*, and deal with argument conversions
3761 * as though doing an assignment.
3762 */
3763 return (void *) realloc( (char *) ptr, size );
3764 }
3765
3766#ifdef YY_USE_PROTOS
3767static void yy_flex_free( void *ptr )
3768#else
3769static void yy_flex_free( ptr )
3770void *ptr;
3771#endif
3772 {
3773 free( ptr );
3774 }
3775
3776#if YY_MAIN
3777int main()
3778 {
3779 yylex();
3780 return 0;
3781 }
3782#endif
3783#line 483 "asn1p_l.l"
3784
3785
3786/*
3787 * Very dirty but wonderful hack allowing to rule states from within .y file.
3788 */
3789void
3790asn1p_lexer_hack_push_opaque_state() {
3791 yy_push_state(opaque);
3792}
3793
3794/*
3795 * Another hack which disables recognizing some tokens when inside WITH SYNTAX.
3796 */
3797void
3798asn1p_lexer_hack_enable_with_syntax() {
3799 yy_push_state(with_syntax);
3800}
3801
3802/*
3803 * Check that a token does not end with dash and does not contain
3804 * several dashes in succession.
3805 * "Name", "Type-Id", "T-y-p-e-i-d" are OK
3806 * "end-", "vustom--value" are INVALID
3807 */
3808static int
3809_check_dashes(char *ptr) {
3810 int prev_dash = 0;
3811
3812 assert(*ptr != '-');
3813
3814 for(;; ptr++) {
3815 switch(*ptr) {
3816 case '-':
3817 if(prev_dash++) /* No double dashes */
3818 return -1;
3819 continue;
3820 case '\0':
3821 if(prev_dash) /* No dashes at the end */
3822 return -1;
3823 break;
3824 default:
3825 prev_dash = 0;
3826 continue;
3827 }
3828 break;
3829 }
3830
3831 return 0;
3832}
3833
3834static asn1_integer_t
3835asn1p_atoi(char *ptr) {
3836 asn1_integer_t value;
3837 errno = 0; /* Clear the error code */
3838
3839 if(sizeof(value) <= sizeof(int)) {
3840 value = strtol(ptr, 0, 10);
3841 } else {
3842#ifdef HAVE_STRTOIMAX
3843 value = strtoimax(ptr, 0, 10);
3844#elif HAVE_STRTOLL
3845 value = strtoll(ptr, 0, 10);
3846#else
3847 value = strtol(ptr, 0, 10);
3848#endif
3849 }
3850
3851 if(errno == ERANGE) {
3852 fprintf(stderr,
3853 "Value \"%s\" at line %d is too large "
3854 "for this compiler! Please contact the vendor.",
3855 ptr, yylineno);
3856 errno = ERANGE; /* Restore potentially clobbered errno */
3857 }
3858
3859 return value;
3860}
3861