Coverage Report

Created: 2025-07-18 07:02

/src/sudo/plugins/sudoers/toke.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * This is an open source non-commercial project. Dear PVS-Studio, please check it.
3
 * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
4
 */
5
6
#include <config.h>
7
8
#line 3 "toke.c"
9
10
#define  YY_INT_ALIGNED short int
11
12
/* A lexical scanner generated by flex */
13
14
1
#define yy_create_buffer sudoers_create_buffer
15
0
#define yy_delete_buffer sudoers_delete_buffer
16
0
#define yy_scan_buffer sudoers_scan_buffer
17
#define yy_scan_string sudoers_scan_string
18
0
#define yy_scan_bytes sudoers_scan_bytes
19
15
#define yy_init_buffer sudoers_init_buffer
20
15
#define yy_flush_buffer sudoers_flush_buffer
21
29
#define yy_load_buffer_state sudoers_load_buffer_state
22
0
#define yy_switch_to_buffer sudoers_switch_to_buffer
23
#define yypush_buffer_state sudoerspush_buffer_state
24
0
#define yypop_buffer_state sudoerspop_buffer_state
25
1
#define yyensure_buffer_stack sudoersensure_buffer_stack
26
0
#define yy_flex_debug sudoers_flex_debug
27
45
#define yyin sudoersin
28
1.27M
#define yyleng sudoersleng
29
#define yylex sudoerslex
30
0
#define yylineno sudoerslineno
31
2
#define yyout sudoersout
32
7
#define yyrestart sudoersrestart
33
856k
#define yytext sudoerstext
34
7
#define yywrap sudoerswrap
35
3
#define yyalloc sudoersalloc
36
7
#define yyrealloc sudoersrealloc
37
0
#define yyfree sudoersfree
38
39
#define FLEX_SCANNER
40
#define YY_FLEX_MAJOR_VERSION 2
41
#define YY_FLEX_MINOR_VERSION 6
42
#define YY_FLEX_SUBMINOR_VERSION 4
43
#if YY_FLEX_SUBMINOR_VERSION > 0
44
#define FLEX_BETA
45
#endif
46
47
#ifdef yy_create_buffer
48
#define sudoers_create_buffer_ALREADY_DEFINED
49
#else
50
#define yy_create_buffer sudoers_create_buffer
51
#endif
52
53
#ifdef yy_delete_buffer
54
#define sudoers_delete_buffer_ALREADY_DEFINED
55
#else
56
#define yy_delete_buffer sudoers_delete_buffer
57
#endif
58
59
#ifdef yy_scan_buffer
60
#define sudoers_scan_buffer_ALREADY_DEFINED
61
#else
62
#define yy_scan_buffer sudoers_scan_buffer
63
#endif
64
65
#ifdef yy_scan_string
66
#define sudoers_scan_string_ALREADY_DEFINED
67
#else
68
#define yy_scan_string sudoers_scan_string
69
#endif
70
71
#ifdef yy_scan_bytes
72
#define sudoers_scan_bytes_ALREADY_DEFINED
73
#else
74
#define yy_scan_bytes sudoers_scan_bytes
75
#endif
76
77
#ifdef yy_init_buffer
78
#define sudoers_init_buffer_ALREADY_DEFINED
79
#else
80
#define yy_init_buffer sudoers_init_buffer
81
#endif
82
83
#ifdef yy_flush_buffer
84
#define sudoers_flush_buffer_ALREADY_DEFINED
85
#else
86
#define yy_flush_buffer sudoers_flush_buffer
87
#endif
88
89
#ifdef yy_load_buffer_state
90
#define sudoers_load_buffer_state_ALREADY_DEFINED
91
#else
92
#define yy_load_buffer_state sudoers_load_buffer_state
93
#endif
94
95
#ifdef yy_switch_to_buffer
96
#define sudoers_switch_to_buffer_ALREADY_DEFINED
97
#else
98
#define yy_switch_to_buffer sudoers_switch_to_buffer
99
#endif
100
101
#ifdef yypush_buffer_state
102
#define sudoerspush_buffer_state_ALREADY_DEFINED
103
#else
104
#define yypush_buffer_state sudoerspush_buffer_state
105
#endif
106
107
#ifdef yypop_buffer_state
108
#define sudoerspop_buffer_state_ALREADY_DEFINED
109
#else
110
#define yypop_buffer_state sudoerspop_buffer_state
111
#endif
112
113
#ifdef yyensure_buffer_stack
114
#define sudoersensure_buffer_stack_ALREADY_DEFINED
115
#else
116
#define yyensure_buffer_stack sudoersensure_buffer_stack
117
#endif
118
119
#ifdef yylex
120
#define sudoerslex_ALREADY_DEFINED
121
#else
122
#define yylex sudoerslex
123
#endif
124
125
#ifdef yyrestart
126
#define sudoersrestart_ALREADY_DEFINED
127
#else
128
#define yyrestart sudoersrestart
129
#endif
130
131
#ifdef yylex_init
132
#define sudoerslex_init_ALREADY_DEFINED
133
#else
134
#define yylex_init sudoerslex_init
135
#endif
136
137
#ifdef yylex_init_extra
138
#define sudoerslex_init_extra_ALREADY_DEFINED
139
#else
140
#define yylex_init_extra sudoerslex_init_extra
141
#endif
142
143
#ifdef yylex_destroy
144
#define sudoerslex_destroy_ALREADY_DEFINED
145
#else
146
#define yylex_destroy sudoerslex_destroy
147
#endif
148
149
#ifdef yyget_debug
150
#define sudoersget_debug_ALREADY_DEFINED
151
#else
152
#define yyget_debug sudoersget_debug
153
#endif
154
155
#ifdef yyset_debug
156
#define sudoersset_debug_ALREADY_DEFINED
157
#else
158
#define yyset_debug sudoersset_debug
159
#endif
160
161
#ifdef yyget_extra
162
#define sudoersget_extra_ALREADY_DEFINED
163
#else
164
#define yyget_extra sudoersget_extra
165
#endif
166
167
#ifdef yyset_extra
168
#define sudoersset_extra_ALREADY_DEFINED
169
#else
170
#define yyset_extra sudoersset_extra
171
#endif
172
173
#ifdef yyget_in
174
#define sudoersget_in_ALREADY_DEFINED
175
#else
176
#define yyget_in sudoersget_in
177
#endif
178
179
#ifdef yyset_in
180
#define sudoersset_in_ALREADY_DEFINED
181
#else
182
#define yyset_in sudoersset_in
183
#endif
184
185
#ifdef yyget_out
186
#define sudoersget_out_ALREADY_DEFINED
187
#else
188
#define yyget_out sudoersget_out
189
#endif
190
191
#ifdef yyset_out
192
#define sudoersset_out_ALREADY_DEFINED
193
#else
194
#define yyset_out sudoersset_out
195
#endif
196
197
#ifdef yyget_leng
198
#define sudoersget_leng_ALREADY_DEFINED
199
#else
200
#define yyget_leng sudoersget_leng
201
#endif
202
203
#ifdef yyget_text
204
#define sudoersget_text_ALREADY_DEFINED
205
#else
206
#define yyget_text sudoersget_text
207
#endif
208
209
#ifdef yyget_lineno
210
#define sudoersget_lineno_ALREADY_DEFINED
211
#else
212
#define yyget_lineno sudoersget_lineno
213
#endif
214
215
#ifdef yyset_lineno
216
#define sudoersset_lineno_ALREADY_DEFINED
217
#else
218
#define yyset_lineno sudoersset_lineno
219
#endif
220
221
#ifdef yywrap
222
#define sudoerswrap_ALREADY_DEFINED
223
#else
224
#define yywrap sudoerswrap
225
#endif
226
227
#ifdef yyalloc
228
#define sudoersalloc_ALREADY_DEFINED
229
#else
230
#define yyalloc sudoersalloc
231
#endif
232
233
#ifdef yyrealloc
234
#define sudoersrealloc_ALREADY_DEFINED
235
#else
236
#define yyrealloc sudoersrealloc
237
#endif
238
239
#ifdef yyfree
240
#define sudoersfree_ALREADY_DEFINED
241
#else
242
#define yyfree sudoersfree
243
#endif
244
245
#ifdef yytext
246
#define sudoerstext_ALREADY_DEFINED
247
#else
248
#define yytext sudoerstext
249
#endif
250
251
#ifdef yyleng
252
#define sudoersleng_ALREADY_DEFINED
253
#else
254
#define yyleng sudoersleng
255
#endif
256
257
#ifdef yyin
258
#define sudoersin_ALREADY_DEFINED
259
#else
260
#define yyin sudoersin
261
#endif
262
263
#ifdef yyout
264
#define sudoersout_ALREADY_DEFINED
265
#else
266
#define yyout sudoersout
267
#endif
268
269
#ifdef yy_flex_debug
270
#define sudoers_flex_debug_ALREADY_DEFINED
271
#else
272
#define yy_flex_debug sudoers_flex_debug
273
#endif
274
275
#ifdef yylineno
276
#define sudoerslineno_ALREADY_DEFINED
277
#else
278
#define yylineno sudoerslineno
279
#endif
280
281
/* First, we deal with  platform-specific or compiler-specific issues. */
282
283
/* begin standard C headers. */
284
#include <stdio.h>
285
#include <string.h>
286
#include <errno.h>
287
#include <stdlib.h>
288
289
/* end standard C headers. */
290
291
/* flex integer type definitions */
292
293
#ifndef FLEXINT_H
294
#define FLEXINT_H
295
296
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
297
298
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
299
300
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
301
 * if you want the limit (max/min) macros for int types. 
302
 */
303
#ifndef __STDC_LIMIT_MACROS
304
#define __STDC_LIMIT_MACROS 1
305
#endif
306
307
#include <inttypes.h>
308
typedef int8_t flex_int8_t;
309
typedef uint8_t flex_uint8_t;
310
typedef int16_t flex_int16_t;
311
typedef uint16_t flex_uint16_t;
312
typedef int32_t flex_int32_t;
313
typedef uint32_t flex_uint32_t;
314
#else
315
typedef signed char flex_int8_t;
316
typedef short int flex_int16_t;
317
typedef int flex_int32_t;
318
typedef unsigned char flex_uint8_t; 
319
typedef unsigned short int flex_uint16_t;
320
typedef unsigned int flex_uint32_t;
321
322
/* Limits of integral types. */
323
#ifndef INT8_MIN
324
#define INT8_MIN               (-128)
325
#endif
326
#ifndef INT16_MIN
327
#define INT16_MIN              (-32767-1)
328
#endif
329
#ifndef INT32_MIN
330
#define INT32_MIN              (-2147483647-1)
331
#endif
332
#ifndef INT8_MAX
333
#define INT8_MAX               (127)
334
#endif
335
#ifndef INT16_MAX
336
#define INT16_MAX              (32767)
337
#endif
338
#ifndef INT32_MAX
339
#define INT32_MAX              (2147483647)
340
#endif
341
#ifndef UINT8_MAX
342
#define UINT8_MAX              (255U)
343
#endif
344
#ifndef UINT16_MAX
345
#define UINT16_MAX             (65535U)
346
#endif
347
#ifndef UINT32_MAX
348
#define UINT32_MAX             (4294967295U)
349
#endif
350
351
#ifndef SIZE_MAX
352
#define SIZE_MAX               (~(size_t)0)
353
#endif
354
355
#endif /* ! C99 */
356
357
#endif /* ! FLEXINT_H */
358
359
/* begin standard C++ headers. */
360
361
/* TODO: this is always defined, so inline it */
362
#define yyconst const
363
364
#if defined(__GNUC__) && __GNUC__ >= 3
365
#define yynoreturn __attribute__((__noreturn__))
366
#else
367
#define yynoreturn
368
#endif
369
370
/* Returned upon end-of-file. */
371
7
#define YY_NULL 0
372
373
/* Promotes a possibly negative, possibly signed char to an
374
 *   integer in range [0..255] for use as an array index.
375
 */
376
79.8M
#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
377
378
/* Enter a start condition.  This macro really ought to take a parameter,
379
 * but we do it the disgusting crufty way forced on us by the ()-less
380
 * definition of BEGIN.
381
 */
382
50.9k
#define BEGIN (yy_start) = 1 + 2 *
383
/* Translate the current start state into a value that can be later handed
384
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
385
 * compatibility.
386
 */
387
37
#define YY_START (((yy_start) - 1) / 2)
388
#define YYSTATE YY_START
389
/* Action number for EOF rule of a given start state. */
390
74
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
391
/* Special action meaning "start processing a new file". */
392
0
#define YY_NEW_FILE yyrestart( yyin  )
393
1.13k
#define YY_END_OF_BUFFER_CHAR 0
394
395
/* Size of default input buffer. */
396
#ifndef YY_BUF_SIZE
397
#ifdef __ia64__
398
/* On IA-64, the buffer size is 16k, not 8k.
399
 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
400
 * Ditto for the __ia64__ case accordingly.
401
 */
402
#define YY_BUF_SIZE 32768
403
#else
404
1
#define YY_BUF_SIZE 16384
405
#endif /* __ia64__ */
406
#endif
407
408
/* The state buf must be large enough to hold one state per character in the main buffer.
409
 */
410
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
411
412
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
413
#define YY_TYPEDEF_YY_BUFFER_STATE
414
typedef struct yy_buffer_state *YY_BUFFER_STATE;
415
#endif
416
417
#ifndef YY_TYPEDEF_YY_SIZE_T
418
#define YY_TYPEDEF_YY_SIZE_T
419
typedef size_t yy_size_t;
420
#endif
421
422
extern int yyleng;
423
424
extern FILE *yyin, *yyout;
425
426
1.09k
#define EOB_ACT_CONTINUE_SCAN 0
427
14
#define EOB_ACT_END_OF_FILE 1
428
0
#define EOB_ACT_LAST_MATCH 2
429
    
430
    #define YY_LESS_LINENO(n)
431
    #define YY_LINENO_REWIND_TO(ptr)
432
    
433
/* Return all but the first "n" matched characters back to the input stream. */
434
#define yyless(n) \
435
4
  do \
436
4
    { \
437
4
    /* Undo effects of setting up yytext. */ \
438
4
        int yyless_macro_arg = (n); \
439
4
        YY_LESS_LINENO(yyless_macro_arg);\
440
4
    *yy_cp = (yy_hold_char); \
441
4
    YY_RESTORE_YY_MORE_OFFSET \
442
4
    (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
443
4
    YY_DO_BEFORE_ACTION; /* set up yytext again */ \
444
4
    } \
445
4
  while ( 0 )
446
#define unput(c) yyunput( c, (yytext_ptr)  )
447
448
#ifndef YY_STRUCT_YY_BUFFER_STATE
449
#define YY_STRUCT_YY_BUFFER_STATE
450
struct yy_buffer_state
451
  {
452
  FILE *yy_input_file;
453
454
  char *yy_ch_buf;    /* input buffer */
455
  char *yy_buf_pos;   /* current position in input buffer */
456
457
  /* Size of input buffer in bytes, not including room for EOB
458
   * characters.
459
   */
460
  int yy_buf_size;
461
462
  /* Number of characters read into yy_ch_buf, not including EOB
463
   * characters.
464
   */
465
  int yy_n_chars;
466
467
  /* Whether we "own" the buffer - i.e., we know we created it,
468
   * and can realloc() it to grow it, and should free() it to
469
   * delete it.
470
   */
471
  int yy_is_our_buffer;
472
473
  /* Whether this is an "interactive" input source; if so, and
474
   * if we're using stdio for input, then we want to use getc()
475
   * instead of fread(), to make sure we stop fetching input after
476
   * each newline.
477
   */
478
  int yy_is_interactive;
479
480
  /* Whether we're considered to be at the beginning of a line.
481
   * If so, '^' rules will be active on the next match, otherwise
482
   * not.
483
   */
484
  int yy_at_bol;
485
486
    int yy_bs_lineno; /**< The line count. */
487
    int yy_bs_column; /**< The column count. */
488
489
  /* Whether to try to fill the input buffer when we reach the
490
   * end of it.
491
   */
492
  int yy_fill_buffer;
493
494
  int yy_buffer_status;
495
496
569
#define YY_BUFFER_NEW 0
497
7
#define YY_BUFFER_NORMAL 1
498
  /* When an EOF's been seen but there's still some text to process
499
   * then we mark the buffer as YY_EOF_PENDING, to indicate that we
500
   * shouldn't try reading from the input source any more.  We might
501
   * still have a bunch of tokens to match, though, because of
502
   * possible backing-up.
503
   *
504
   * When we actually see the EOF, we change the status to "new"
505
   * (via yyrestart()), so that the user can continue scanning by
506
   * just pointing yyin at a new input file.
507
   */
508
554
#define YY_BUFFER_EOF_PENDING 2
509
510
  };
511
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
512
513
/* Stack of input buffers. */
514
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
515
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
516
static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
517
518
/* We provide macros for accessing buffer states in case in the
519
 * future we want to put the buffer states in a more general
520
 * "scanner state".
521
 *
522
 * Returns the top of the stack, or NULL.
523
 */
524
62
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
525
62
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
526
62
                          : NULL)
527
/* Same as previous macro, but useful when we know that the buffer stack is not
528
 * NULL or when we need an lvalue. For internal use only.
529
 */
530
859k
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
531
532
/* yy_hold_char holds the character lost when yytext is formed. */
533
static char yy_hold_char;
534
static int yy_n_chars;    /* number of characters read into yy_ch_buf */
535
int yyleng;
536
537
/* Points to current character in buffer. */
538
static char *yy_c_buf_p = NULL;
539
static int yy_init = 0;   /* whether we need to initialize */
540
static int yy_start = 0;  /* start state number */
541
542
/* Flag which is used to allow yywrap()'s to do buffer switches
543
 * instead of setting up a fresh yyin.  A bit of a hack ...
544
 */
545
static int yy_did_buffer_switch_on_eof;
546
547
void yyrestart ( FILE *input_file  );
548
void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
549
YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
550
void yy_delete_buffer ( YY_BUFFER_STATE b  );
551
void yy_flush_buffer ( YY_BUFFER_STATE b  );
552
void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
553
void yypop_buffer_state ( void );
554
555
static void yyensure_buffer_stack ( void );
556
static void yy_load_buffer_state ( void );
557
static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
558
#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
559
560
YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
561
YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
562
YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
563
564
void *yyalloc ( yy_size_t  );
565
void *yyrealloc ( void *, yy_size_t  );
566
void yyfree ( void *  );
567
568
#define yy_new_buffer yy_create_buffer
569
#define yy_set_interactive(is_interactive) \
570
  { \
571
  if ( ! YY_CURRENT_BUFFER ){ \
572
        yyensure_buffer_stack (); \
573
    YY_CURRENT_BUFFER_LVALUE =    \
574
            yy_create_buffer( yyin, YY_BUF_SIZE ); \
575
  } \
576
  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
577
  }
578
#define yy_set_bol(at_bol) \
579
3
  { \
580
3
  if ( ! YY_CURRENT_BUFFER ){\
581
0
        yyensure_buffer_stack (); \
582
0
    YY_CURRENT_BUFFER_LVALUE =    \
583
0
            yy_create_buffer( yyin, YY_BUF_SIZE ); \
584
0
  } \
585
3
  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
586
3
  }
587
426k
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
588
589
/* Begin user sect3 */
590
591
7
#define sudoerswrap() (/*CONSTCOND*/1)
592
#define YY_SKIP_YYWRAP
593
typedef flex_uint8_t YY_CHAR;
594
595
FILE *yyin = NULL, *yyout = NULL;
596
597
typedef int yy_state_type;
598
599
extern int yylineno;
600
int yylineno = 1;
601
602
extern char *yytext;
603
#ifdef yytext_ptr
604
#undef yytext_ptr
605
#endif
606
430k
#define yytext_ptr yytext
607
608
static yy_state_type yy_get_previous_state ( void );
609
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
610
static int yy_get_next_buffer ( void );
611
static void yynoreturn yy_fatal_error ( const char* msg  );
612
613
/* Done after the current pattern has been matched and before the
614
 * corresponding action - sets up yytext.
615
 */
616
#define YY_DO_BEFORE_ACTION \
617
426k
  (yytext_ptr) = yy_bp; \
618
426k
  yyleng = (int) (yy_cp - yy_bp); \
619
426k
  (yy_hold_char) = *yy_cp; \
620
426k
  *yy_cp = '\0'; \
621
426k
  (yy_c_buf_p) = yy_cp;
622
#define YY_NUM_RULES 89
623
628
#define YY_END_OF_BUFFER 90
624
/* This struct is not used in this scanner,
625
   but its presence is necessary. */
626
struct yy_trans_info
627
  {
628
  flex_int32_t yy_verify;
629
  flex_int32_t yy_nxt;
630
  };
631
static const flex_int16_t yy_accept[1242] =
632
    {   0,
633
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
634
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
635
       90,   75,   85,   84,   88,   83,   74,   87,   46,   78,
636
       79,   46,   80,   75,   75,   75,   75,   82,   81,   88,
637
       75,   64,   64,   64,   64,   64,   64,   64,   64,   64,
638
       64,   64,   64,   64,   64,   88,   75,   75,   75,   85,
639
       87,   64,   64,   64,   64,   64,    2,   88,    1,   75,
640
       64,   64,   64,   64,   75,   75,   17,   16,   16,   17,
641
       16,   16,   88,   21,   21,   19,   19,   21,   19,   20,
642
       88,   87,   88,    3,    9,    8,    9,    4,    9,    5,
643
644
       88,   13,   13,   13,   11,   12,   88,   23,   23,   22,
645
       22,   22,   23,   22,   22,   22,   22,   23,   23,   23,
646
       23,   23,   23,   23,   88,   22,   23,   23,   76,   76,
647
       77,   76,   71,   71,   71,   71,   71,   71,   71,   64,
648
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
649
       88,   71,   71,   71,   75,    0,   85,   84,   83,   87,
650
       87,    0,    0,   75,   48,    0,   46,    0,   47,    0,
651
       72,   72,    0,   75,   75,    0,   75,   75,   75,   75,
652
        0,   51,   75,   64,   64,   64,   64,   64,   64,   64,
653
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
654
655
       64,   64,    0,   86,   75,   75,   75,    0,   73,    0,
656
       75,   75,   85,    0,    0,    0,    0,    0,   87,   75,
657
       75,   75,   75,   75,    2,    1,    0,    1,   65,   65,
658
        0,   64,   75,    0,   65,    0,   75,   17,   17,   15,
659
        0,   14,   15,   21,   21,   21,   18,   18,    0,    3,
660
        9,    0,    6,    7,    9,    9,   13,    0,   13,   13,
661
        0,   10,    0,   48,    0,    0,   47,   23,   23,    0,
662
       23,    0,    0,   22,   22,   22,   22,   22,   22,   23,
663
       23,   64,   23,   23,   23,   23,   23,   23,   23,   23,
664
       73,    0,   23,   23,   76,   76,   76,   71,    0,   48,
665
666
        0,   47,    0,   71,   71,    0,   71,   71,   71,   71,
667
       71,   71,   64,   64,   64,   64,   64,   64,   64,   64,
668
       64,   64,   64,   71,   71,   71,   71,    0,   71,   71,
669
       87,   87,   87,    0,   48,   75,   75,   75,   75,   75,
670
        0,    0,   51,   51,   75,   64,   53,   64,   64,   57,
671
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
672
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
673
       73,   75,   75,   75,    0,    0,    0,    0,    0,   87,
674
       75,   75,   75,   75,   75,   75,    0,   65,    0,   65,
675
       75,   75,   10,    0,    0,    0,   22,   22,   22,   23,
676
677
       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
678
       23,   23,   23,   23,   73,   23,   23,    0,   71,   71,
679
       71,   71,   71,   64,   53,   64,   64,   64,   64,   64,
680
       64,   64,   64,   64,   64,   64,   64,   64,   64,   71,
681
       71,   71,   71,   87,   87,   87,   75,   75,   75,   75,
682
       75,   75,    0,   52,   52,   52,    0,    0,   51,   51,
683
       51,   51,   51,   51,   51,   75,   64,   64,   64,   64,
684
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
685
       64,   64,   64,   64,   64,   64,   59,   64,   64,   60,
686
       75,   75,   75,   75,    0,    0,    0,    0,    0,    0,
687
688
       87,   75,   75,   75,   65,   75,    0,    0,    0,    0,
689
        0,   22,   22,   23,   23,   23,   64,   23,   23,   23,
690
       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
691
       23,   71,   71,   71,   71,   71,   71,   64,   64,   64,
692
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
693
       64,   64,   71,   71,   71,   71,   75,   75,   75,    0,
694
        0,   52,   52,   52,    0,   51,   51,    0,   51,   51,
695
       51,   51,   51,   51,   51,   51,   51,   51,   51,   75,
696
       64,   64,    0,   33,   64,   64,   64,   64,   64,    0,
697
       42,   64,   64,   64,   64,   64,   64,   64,   64,   64,
698
699
       64,   62,   64,   64,   75,   75,   75,   75,   75,    0,
700
        0,    0,   87,   75,   75,   75,    0,    0,    0,   22,
701
       22,   23,   23,   64,   64,   23,   23,   23,   23,   23,
702
       23,   23,   23,   23,   23,   23,   23,   23,   23,   71,
703
       71,   71,   64,   64,   64,   64,   64,   64,   64,   64,
704
       64,   64,   64,   64,   64,   71,   71,   71,   71,   71,
705
       75,   75,   75,   75,   75,    0,   52,    0,   51,   51,
706
       51,    0,    0,    0,   51,   51,   51,   51,   51,   51,
707
       51,   51,   51,   51,   51,   51,   51,   75,   64,   58,
708
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
709
710
       64,   64,   64,   64,   64,   64,   64,   66,   67,   68,
711
       69,   75,    0,    0,   87,   75,   75,   75,    0,    0,
712
        0,    0,    0,   23,   23,   64,   64,   23,   23,   23,
713
       64,   23,   23,   23,   23,   23,   23,   23,   23,   23,
714
       23,   71,   71,   71,   71,   71,   64,   64,   64,   64,
715
       64,   64,   64,   64,   64,   64,   64,   64,   64,   66,
716
       67,   68,   69,   71,   49,   49,   49,    0,    0,   51,
717
       51,   51,   51,   51,   51,   51,    0,    0,    0,    0,
718
        0,   51,   51,   51,   51,   51,   51,   51,   51,   51,
719
       51,   51,   51,   51,   51,   75,   64,    0,   44,   64,
720
721
       64,   64,   64,    0,   32,   64,   64,   64,   64,    0,
722
       43,   64,   64,   64,   64,    0,   31,    0,   36,   54,
723
       75,    0,    0,   87,   75,   75,   75,   49,   49,   49,
724
       23,   64,   64,   23,   23,   64,   64,   23,   23,   23,
725
       49,   49,   49,   64,   64,   64,   64,   64,   64,   64,
726
       64,   64,   71,   75,   49,   49,   49,   49,    0,   51,
727
        0,   51,   51,   51,   51,   51,   51,   51,   51,   51,
728
       51,   51,    0,    0,    0,   51,   51,   51,   51,   51,
729
       51,   51,   51,   51,   51,   51,   51,   51,   24,   64,
730
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
731
732
       56,   64,   70,    0,    0,   87,   75,   28,   65,    0,
733
       49,   49,   49,   49,   23,   64,   64,   23,   23,   64,
734
       64,   23,   23,   23,   71,   49,   49,   49,   49,   64,
735
       64,   64,   64,   64,   64,   64,   64,   64,   70,   50,
736
       50,   50,   50,   51,    0,    0,    0,   51,   51,   51,
737
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
738
        0,    0,    0,    0,    0,   51,   51,   51,   51,   51,
739
       51,   51,   51,   75,   64,   64,   64,   64,   64,    0,
740
       45,   64,   64,   64,    0,   30,    0,   37,   55,    0,
741
       28,   26,   87,   29,    0,   75,   50,   50,   50,   50,
742
743
       23,   64,   64,   23,   64,   64,   50,   50,   50,   50,
744
       64,   64,   64,   64,   64,   64,   75,   75,   50,   50,
745
       50,   50,    0,    0,    0,    0,    0,   51,   51,   51,
746
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
747
       51,   51,   51,   51,   51,   51,   51,   75,   64,    0,
748
       34,   63,    0,   40,   64,   64,   64,   64,   29,   26,
749
       26,   26,   26,   87,   28,    0,    0,    0,    0,    0,
750
       28,    0,    0,    0,   50,   50,   50,   50,   64,   23,
751
       64,   64,   71,   71,   50,   50,   50,   50,   64,   64,
752
       64,   64,   75,   75,   75,    0,    0,    0,   51,   51,
753
754
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
755
       51,   51,   51,   51,   51,   51,   25,   64,    0,   38,
756
       64,   64,   64,   26,   87,    0,   28,    0,    0,    0,
757
       23,   64,   64,   71,   71,   71,   64,   64,   64,   75,
758
       75,   75,   75,   75,    0,    0,    0,    0,    0,   51,
759
       51,   51,   51,   51,   51,   51,   51,   64,    0,   35,
760
        0,   41,   64,   27,    0,    0,    0,    0,    0,   64,
761
       71,   71,   71,   71,   71,   64,   75,   75,   75,   51,
762
       51,   51,   51,   51,   51,   64,    0,   39,   27,   27,
763
       27,   27,    0,    0,    0,   71,   71,   71,   75,   75,
764
765
       75,   75,   75,   51,   51,   51,   51,   51,   64,   27,
766
        0,    0,    0,    0,    0,   71,   71,   71,   71,   71,
767
       49,   49,   49,   64,   49,   49,   49,   49,   49,   49,
768
       49,   49,   49,   61,   49,   49,   49,   49,   49,   49,
769
        0
770
    } ;
771
772
static const YY_CHAR yy_ec[256] =
773
    {   0,
774
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
775
        4,    4,    5,    1,    1,    1,    1,    1,    1,    1,
776
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
777
        1,    6,    7,    8,    9,   10,   11,    1,    1,   12,
778
       13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
779
       23,   24,   25,   26,   27,   28,   29,   30,    1,    1,
780
       31,   32,   14,   33,   34,   35,   36,   37,   38,   39,
781
       40,   41,   42,   43,   43,   44,   45,   46,   47,   48,
782
       43,   49,   50,   51,   52,   53,   54,   55,   56,   43,
783
       14,   57,   14,   58,   59,    1,   60,   61,   62,   63,
784
785
       64,   65,   66,   67,   68,   66,   66,   69,   70,   71,
786
       72,   66,   66,   73,   74,   75,   76,   66,   66,   66,
787
       66,   66,    1,    1,    1,    1,    1,    1,    1,    1,
788
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
789
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
790
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
791
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
792
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
793
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
794
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
795
796
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
797
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
798
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
799
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
800
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
801
        1,    1,    1,    1,    1
802
    } ;
803
804
static const YY_CHAR yy_meta[77] =
805
    {   0,
806
        1,    2,    3,    4,    3,    2,    5,    6,    7,    8,
807
        1,    9,    9,    1,   10,   11,    1,   12,   13,   14,
808
       14,   14,   14,   14,   14,   14,   14,   14,   14,   15,
809
       16,    9,    1,   14,   14,   14,   14,   14,   14,   17,
810
       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
811
       17,   17,   17,   17,   17,   17,   18,    1,   19,   20,
812
       20,   20,   20,   20,   20,   21,   21,   21,   21,   21,
813
       21,   21,   21,   21,   21,   21
814
    } ;
815
816
static const flex_int16_t yy_base[1366] =
817
    {   0,
818
        0,   75,  126,  199,   83,   91,   99,  180,  272,  347,
819
      422,  478,  131,  147,  535,    0,  189,  219,  611,    0,
820
     6517, 6458,   76, 9534, 6501, 6471, 9534,  685,  101, 9534,
821
     9534, 6409, 9534,  199,  697,  238,  143, 6428, 9534, 9534,
822
       23,  762,   35,  103,   71,  132,  819, 6411,   76, 6422,
823
     6385,  112, 6373, 6374,   61,  883,  914,  262,  152,  266,
824
      969,  251,  166, 6339,  122, 6336,  197,  338,  123,  369,
825
     6350, 6335, 6334, 6344, 1036,  177,    0, 9534, 6364, 6335,
826
     9534,    0, 1092,    0,  214, 9534, 6338, 6331, 9534, 9534,
827
      236, 1148,  249,    0, 6280, 9534,  239, 9534,  240, 9534,
828
829
      306, 6245,  311,  262, 9534,  320,  172, 1177, 1236, 1281,
830
      363,  349, 1340, 1391, 6257,   86,  254, 1448, 6231, 6215,
831
     6227, 6200, 6212, 6207,  294,  422,    0,  173, 6187,  323,
832
     9534,  397, 6180,  348, 6168,  450, 1496,  444,  373, 1561,
833
     6135,  272,  388, 1618, 6117, 6113, 6125, 6109, 6121, 6114,
834
     1682, 1713,  490,  421, 6089,  737,  304, 9534, 6138,  168,
835
     9534, 6141,  500,  671, 6086,  848,  446,  926, 6085,  971,
836
      893, 6064, 1769,  984, 1784, 6077, 6088,  939,  994,  887,
837
     6075,  422,  243, 1849, 1906, 6050, 6034, 6002, 6013, 5988,
838
     5981, 5972, 5966, 5970, 5967, 1012, 5912, 5905, 5900, 5892,
839
840
     5894, 5885,  496, 9534,  376, 1022, 1970,  449, 5868, 1024,
841
      417,  433, 1033, 5854, 5859, 5849, 5841, 5839,  847,  684,
842
      683,  418,  434,  673,  935,  318, 1089,  454, 1064, 5850,
843
     2026, 1086, 2057,  694, 5842, 1078,  707,    0, 5891,  528,
844
     5894, 9534, 9534,    0,  498, 5862, 9534, 1135, 1134,    0,
845
     5801, 1184, 9534, 9534, 5792, 1140, 5772, 5820,  860,  682,
846
     1177,  750, 5822,  943, 1075, 1250, 5767, 2114,    0, 1377,
847
     2173, 1196, 1196, 2215, 5793, 1250, 1263, 1208, 2266, 2323,
848
     5759,    0, 5764, 5757, 5732, 5726, 5715, 1451, 5705, 5692,
849
     9534, 1021, 5670, 5664, 5669,  891,  721, 5667, 1536, 5655,
850
851
     1725, 5654, 1756, 1660, 5646, 2387, 1679, 2402, 5670, 1769,
852
     1804, 1374, 2467, 2524, 5629, 5634, 5619, 5555, 5550, 5541,
853
     1621, 5532, 5528,  737, 1746, 2588, 5516, 1194,  714,  841,
854
      431,  856,  944, 1926, 1936, 2628, 2668, 2708, 2746, 5552,
855
     5529, 2792,  910, 2839,  866, 2904, 2961, 5517, 5503,    0,
856
     5511, 5489, 5494, 5489, 5436, 5450, 5438, 5445, 5424, 5392,
857
     5404, 5380, 5375,  259, 5361, 5346, 5360, 5359, 5290, 5288,
858
     3025, 3081, 1184,  830,   24, 5240, 5230, 5232, 5238, 1042,
859
      896,  912, 5235,  718,  925,  821, 1979, 9534, 1043, 3137,
860
     3193,  983,  858, 1993, 2023, 2054, 3231, 5269, 3282, 3339,
861
862
     5250, 5241, 5246, 5181, 5195, 5183, 5165, 5154, 5145, 5157,
863
     5156, 5126, 5102, 5106, 1063, 1036, 5071, 2089, 3387, 3427,
864
     3467, 3507, 5079, 3553,    0, 5048, 5027, 5031, 5008, 4998,
865
     4976, 4970, 4935, 4932, 4930, 4929, 4911, 4897, 4883, 3617,
866
     3673, 1480, 1018, 9534, 1086, 1124, 2113,  160, 3713, 3753,
867
     1969,  708, 4889, 4884, 2128, 1239, 4880, 4869,  924,  951,
868
     3793, 2139, 1814, 3840, 2174, 1050, 3905, 1103,  889, 1183,
869
     1056, 1117, 1308, 1508, 1498, 1342, 1208, 1341, 1062, 1449,
870
     1114, 1464, 1109, 1343, 1394, 1215, 4857, 1234, 1137, 4849,
871
     1366, 1008, 1506, 1424, 4818, 4813, 4815, 4786, 4792, 4778,
872
873
     1671,   86, 1516, 1240, 1330, 1472, 2187, 4814, 2199, 2237,
874
     2079, 3962, 4013, 4088, 2006, 2060, 1522, 1716, 2367, 2368,
875
     1973, 2361, 2374, 2404, 2405, 2444, 2562, 1189, 4798, 4793,
876
     4742, 2549, 1536, 4136, 4176, 2603, 1450, 4775, 1850, 4757,
877
     4708, 1628, 2268, 4698, 4691, 4682, 4687, 4676, 4660, 4658,
878
     4654, 4647, 1636, 1682, 1629, 1483, 4216, 4256, 4296, 4625,
879
     4624, 2609, 4605, 4584, 4583, 4575,  969, 2641, 1824, 2651,
880
     2066, 4336,    0, 2592, 4384, 2678, 2688, 4431, 2720, 1494,
881
     1268, 1728, 2442, 9534, 1681, 1717, 1679, 1720, 1810, 2443,
882
     9534, 1724, 1698, 1468, 1966, 1729, 1647, 1686, 1954, 1967,
883
884
     1821, 4534, 1977, 2041, 1759, 1758, 1980, 1517, 1798, 4489,
885
     4446, 4424, 2103, 2053, 2054, 1966, 2732, 2768, 2814, 4460,
886
     4459, 2445, 2877, 4442, 4430, 2880, 2999, 2842, 3000, 3006,
887
     3012, 2879, 3009, 2882, 4448, 4445, 4440, 4441, 4399, 4479,
888
     4519, 4559, 4389, 4389, 4371, 4364, 4333, 4324, 4329, 4287,
889
     4300, 4265, 4274, 4274, 4257, 2037, 2029, 2089, 1916, 1997,
890
     2694, 2050, 4599, 4639, 3043, 4257, 4242, 4240, 4217, 4677,
891
     2097, 2869, 3051, 3081, 2159, 2253, 2336, 3094, 2360, 4725,
892
        0, 3106, 4773, 3134, 3150, 4820, 3158, 2112, 2082, 4202,
893
     2577, 1827, 2199, 2096, 2216, 3014, 2146, 2326, 2226, 3135,
894
895
     1944, 2188, 2334, 2252, 3186, 3187, 2351, 4173, 4135, 4111,
896
     4098, 2314, 4078, 4077, 2577, 2385, 2358, 2401, 3206, 4111,
897
     3218, 3253, 3190, 3284, 3387, 4073, 4055, 3388, 3389, 3390,
898
     2366, 3427, 3428, 3429, 3435, 3436,    0,    0,    0,    0,
899
     4003, 3480, 2125, 4868, 4908, 3456, 3467, 4008, 3997, 3979,
900
     3508, 3973, 3869, 2367, 3509, 3863, 3868, 3510, 3517, 3856,
901
     3854, 3838, 3835, 2498, 4947, 4986, 5025, 3861, 3843, 3821,
902
     3359, 5065, 3528, 3538, 5111, 3575, 3614, 3808, 3632, 3644,
903
     3587, 2537, 2572, 2974, 3030, 3670, 3066, 5159,    0, 3688,
904
     5207, 3699, 3723, 5254, 3731, 2419, 5319, 3759, 9534, 2275,
905
906
     2756, 1190, 2412, 3760, 9534, 2403,  667, 2319, 2592, 3761,
907
     9534, 2406, 2068, 3776, 3758, 3762, 9534, 3794, 9534, 3745,
908
     2524, 3725, 3675, 2759, 2624, 2585, 2776, 3814, 3861, 3983,
909
     5381, 3680, 3668, 2549, 2557, 3669, 3649, 2610, 2634, 3625,
910
     5439, 5478, 5517, 5574, 2752, 3598, 2955, 2691, 1603, 2797,
911
     2980, 2858, 2977, 4075, 2073, 5632, 5671, 4114, 3614, 3601,
912
     4152, 2769, 4162, 2989, 5711,    0, 4188, 5724, 4199, 3763,
913
     5770, 4228, 4240, 4268, 4280, 3021, 3028, 3116, 3269, 4306,
914
     3442, 5818,    0, 4318, 5866, 4356, 3781, 4406, 3029, 5931,
915
     2506, 3089, 2994, 3081, 4479, 2787, 3022, 3139, 4519, 4559,
916
917
     3563, 2812, 3529, 3525, 3492, 3844, 3147, 3864, 3508, 4366,
918
     3502, 4491, 4531, 3994, 5993, 3466, 3416, 3842, 1729, 3415,
919
     3395, 4560, 4561,    0, 4572, 2744, 6051, 6090, 4417, 6147,
920
     3371, 2428, 4600, 3113, 2962, 3347, 4601, 4602, 3314, 6206,
921
     6246, 6286, 6326, 3218, 4506, 4615, 4651, 3192, 3189, 3219,
922
     4661, 3254, 6366,    0, 4699, 6379, 4745, 4120, 6425, 4795,
923
     4755, 3114, 4842, 4880, 4455, 3147, 3270, 3602, 2759, 3178,
924
     6473,    0, 4550, 3364, 3535, 4918, 3347, 4921, 3411, 3906,
925
     9534, 3628, 3412, 3629, 4229, 9534, 4269, 9534, 2995, 2920,
926
     3765, 3421, 3215, 2813, 4936, 4976, 4932, 4974, 4998, 5037,
927
928
     4823, 4726, 2796, 3047, 2772, 2754, 6485, 6525, 6565, 6605,
929
     4911, 5026, 2728, 3392, 3211, 3435, 5085, 3134, 6645, 6685,
930
     5016, 3410, 5095, 2706, 5133, 5181, 5145, 2653, 2613, 3633,
931
     3684, 5227, 3699, 6725,    0, 5276, 6738, 5237, 4625, 6784,
932
     5451, 5462, 5489, 5500, 3880, 2590, 3321, 2863, 3750, 4728,
933
     9534, 2411, 4909, 9534, 5528, 3467, 3970, 3793, 9534, 1934,
934
     4164, 9534, 3367, 4342, 5547, 5660, 5668, 5699, 5540, 5319,
935
     5707, 5906, 5658, 2403, 5747, 5792, 5193, 2359, 4910, 2196,
936
     2137, 1988, 5839, 3588, 6832, 6872, 5852, 3751, 5820, 1948,
937
     1830, 3447, 6912, 6952, 6992, 6063, 6075, 6102, 1787, 1666,
938
939
     4075, 4089, 6112, 4177, 7032,    0, 6218, 7045, 6229, 4966,
940
     6258, 1645, 6269, 6297, 5288, 1558, 1440, 4170, 4916, 9534,
941
     5546, 5904, 4069, 9534, 4481, 6307, 6336, 6348, 6401, 6447,
942
     5910, 5066, 1398, 7093, 7133, 7173, 6514, 6525, 1288, 6512,
943
     3880, 7213, 7253, 6501, 6575, 1183, 6587, 6617, 6413, 1096,
944
     1034, 4640, 1014,  885, 6629,    0, 4323, 3525, 5068, 9534,
945
     5821, 9534, 6618, 4689, 6658,  833, 6670, 6697, 6459, 6147,
946
     6712, 4013, 7293, 7333, 6760, 6784, 7373, 7413, 7453, 6804,
947
     6842, 6852,  699,    0,  514, 3256, 6148, 9534, 3517, 4825,
948
     9534, 3623, 6884, 6896, 6924, 7493, 7533, 7573, 6934, 4073,
949
950
     7613, 7653, 6965, 9534, 6972, 7003, 5698, 9534, 2225, 9534,
951
     7013,  471, 7067, 7105, 6539, 7115, 4074, 7693, 7733, 7146,
952
     7153, 7191, 7229, 3226, 7239, 7267, 7277, 7306, 7316, 7354,
953
      404, 7392, 7164,  316, 9534, 7430, 5757,  179, 7440, 7346,
954
     9534, 7790, 7811, 7832, 7853, 7874, 7895, 7916, 7937, 7958,
955
     7979, 8000, 4595, 8021, 8042, 8063, 8084, 8105, 8126, 3974,
956
     8147, 8168, 8189, 8210, 8231, 8252, 8273, 8294, 8315, 8336,
957
     8357, 8378, 8399, 8420, 8441, 8462, 8483, 8504, 8525, 8546,
958
     4711, 4858, 8555, 8575, 8596, 8617, 8638, 8659, 8680, 8701,
959
     8722, 4195, 8743, 8764, 8785, 8806, 8818, 8839, 5061, 8860,
960
961
     8881, 8902, 8923, 8944, 8965, 8986, 9007, 9028, 9049, 5015,
962
     9058, 9078, 9099, 9120, 9141, 5557, 5566, 5900, 9150, 9158,
963
     9178, 9199, 5062, 6245, 6285, 6325, 9208, 9217, 6365, 6552,
964
     6559, 9225, 9234, 6773, 6777, 9242, 9251, 9271, 5308, 9283,
965
     9304, 6822, 9314, 9322, 9331, 9351, 6561, 9363, 9384, 6868,
966
     9394, 9402, 9411, 9431, 9452, 9473, 6871, 9483, 5651, 6951,
967
     9492, 6988, 5690, 9512, 3664
968
    } ;
969
970
static const flex_int16_t yy_def[1366] =
971
    {   0,
972
     1241,    1,    1,    1, 1242, 1242, 1243, 1243, 1244, 1244,
973
     1245, 1245, 1246, 1246, 1241,   15, 1247, 1247, 1241,   19,
974
     1241, 1248, 1241, 1241, 1241, 1241, 1241, 1249, 1250, 1241,
975
     1241, 1251, 1241, 1252, 1248,   35,   35, 1253, 1241, 1241,
976
     1248, 1241,   42,   42,   42,   42,   42,   47,   47,   47,
977
       47,   47,   47,   47,   47, 1248, 1254,   35, 1248, 1241,
978
     1249,   42,   42,   47,   47,   47, 1241, 1241, 1241, 1255,
979
       42,   47,   47,   47, 1256, 1248, 1257, 1241, 1241, 1257,
980
     1241, 1257, 1241, 1258, 1258, 1241, 1241, 1258, 1241, 1241,
981
     1259, 1249, 1241, 1260, 1261, 1241, 1261, 1241, 1261, 1241,
982
983
     1262, 1263, 1263, 1263, 1241, 1241, 1264, 1265, 1266, 1241,
984
      110,  110,  110, 1241,  114,  114,  114,  114,  118,  118,
985
      118,  118,  118,  118, 1267,  110,  113,  113, 1268, 1268,
986
     1241, 1268, 1269, 1270, 1271, 1272, 1269,  137,  137, 1241,
987
      140,  140,  140,  140,  144,  144,  144,  144,  144,  144,
988
     1269, 1273,  137, 1269, 1274, 1274, 1241, 1241, 1241, 1275,
989
     1241, 1241, 1276, 1241, 1277, 1241, 1264, 1277, 1278, 1278,
990
     1279, 1280, 1274, 1274, 1274, 1281,  175,  175,  175,  175,
991
     1282, 1283, 1274, 1241,  184,  185,  185,  185,  185,  185,
992
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
993
994
      185,  185, 1241, 1241, 1274, 1274, 1284, 1285, 1274, 1284,
995
     1274, 1274, 1241, 1241, 1241, 1241, 1241, 1241, 1275, 1274,
996
      175, 1274, 1274, 1274, 1241, 1241, 1241, 1241, 1286, 1287,
997
     1274,  185, 1288, 1289, 1274, 1288, 1274, 1290, 1290, 1241,
998
     1241, 1241, 1241, 1291, 1291, 1291, 1241, 1241, 1276, 1292,
999
     1293, 1293, 1241, 1241, 1293, 1293, 1294, 1241, 1294, 1294,
1000
     1241, 1241, 1241, 1264, 1264, 1264, 1295, 1296, 1297, 1295,
1001
     1298, 1241, 1241, 1297,  274,  274,  274,  274, 1241,  279,
1002
      280, 1299,  280,  280,  280,  280,  280,  280,  280,  280,
1003
     1241, 1285, 1297, 1297, 1300, 1300, 1300, 1301, 1301, 1302,
1004
1005
     1302, 1303, 1303, 1304, 1305, 1301, 1301, 1301,  308,  308,
1006
      308,  308, 1241,  313,  314,  314,  314,  314,  314,  314,
1007
      314,  314,  314, 1301, 1301, 1306, 1301, 1306, 1301, 1301,
1008
     1307, 1307, 1308, 1241, 1241, 1309, 1309, 1309, 1309,  339,
1009
     1310, 1241, 1311, 1241, 1309, 1241,  346,  347,  347,  347,
1010
      347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
1011
      347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
1012
     1312, 1312, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1307,
1013
     1309, 1309,  339, 1309, 1309, 1309, 1241, 1241, 1313, 1314,
1014
     1314, 1309, 1241, 1241, 1241, 1241, 1297,  397, 1241,  399,
1015
1016
      400,  400,  400,  400,  400,  400,  400,  400,  400,  400,
1017
      400,  400,  400,  400, 1315, 1297, 1297, 1241, 1301, 1301,
1018
     1301,  308,  422,  313,  314,  314,  314,  314,  314,  314,
1019
      314,  314,  314,  314,  314,  314,  314,  314,  314, 1306,
1020
     1306, 1301, 1301, 1241, 1308, 1308, 1309, 1309, 1309, 1309,
1021
     1309, 1309, 1316, 1317, 1317,  455, 1318, 1317, 1319, 1320,
1022
     1241,  461,  461, 1241,  461, 1309, 1241,  467,  467,  467,
1023
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1024
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1025
     1309, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241,
1026
1027
     1321, 1309, 1309, 1309, 1322, 1309, 1241, 1241, 1241, 1241,
1028
     1241, 1297, 1241,  513,  514,  514, 1323,  514,  514,  514,
1029
      514,  514,  514,  514,  514,  514,  514, 1297, 1297, 1297,
1030
     1297, 1301, 1301, 1301, 1301, 1301, 1301,  314,  314,  314,
1031
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1032
      314,  314, 1301, 1301, 1301, 1301, 1309, 1309, 1309, 1241,
1033
     1324, 1324,  562, 1324, 1325, 1326, 1327, 1241, 1328,  464,
1034
     1328, 1241,  572, 1328, 1241,  575,  575, 1241,  575, 1309,
1035
      467,  467, 1241, 1241,  467,  467,  467,  467,  467, 1241,
1036
     1241,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1037
1038
      467,  467,  467,  467, 1309, 1309, 1309, 1309, 1309, 1241,
1039
     1241, 1241, 1321, 1309, 1309, 1309, 1241, 1241, 1241,  512,
1040
      513,  514,  514, 1323, 1323,  514,  514,  514,  514,  514,
1041
      514,  514,  514,  514, 1297, 1297, 1297, 1297, 1297, 1301,
1042
     1301, 1301,  314,  314,  314,  314,  314,  314,  314,  314,
1043
      314,  314,  314,  314,  314, 1301, 1301, 1301, 1301, 1301,
1044
     1309, 1309, 1309, 1309, 1309, 1329, 1329, 1330, 1331, 1241,
1045
     1241, 1241, 1241, 1241, 1332, 1332, 1333,  578, 1333, 1241,
1046
      680, 1333, 1241,  683,  683, 1241,  683, 1309,  467,  467,
1047
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1048
1049
      467,  467,  467,  467,  467,  467,  467, 1309, 1309, 1309,
1050
     1309, 1309, 1241, 1241, 1321, 1309, 1309, 1309, 1241, 1241,
1051
     1241, 1241, 1241,  514,  514, 1323, 1323,  514,  514,  514,
1052
     1323,  514,  514,  514,  514,  514, 1297, 1297, 1297, 1297,
1053
     1297, 1301, 1301, 1301, 1301, 1301,  314,  314,  314,  314,
1054
      314,  314,  314,  314,  314,  314,  314,  314,  314, 1301,
1055
     1301, 1301, 1301, 1301, 1309, 1309, 1309, 1241, 1334, 1335,
1056
      670, 1241,  772,  772, 1241,  772, 1241, 1241, 1241, 1241,
1057
     1241, 1241, 1336, 1336, 1337,  686, 1337, 1241,  788, 1337,
1058
     1241,  791,  791, 1241,  791, 1309, 1241, 1241, 1241,  797,
1059
1060
      797,  797,  797, 1241, 1241,  797,  797,  797,  797, 1241,
1061
     1241,  797,  797,  797,  797, 1241, 1241, 1241, 1241,  797,
1062
     1309, 1241, 1241, 1338, 1309, 1309, 1309, 1241, 1241, 1241,
1063
     1241, 1339, 1339,  831,  831, 1339, 1339,  831,  831, 1340,
1064
     1341, 1341, 1341, 1241,  844,  844,  844,  844,  844,  844,
1065
      844,  844, 1341, 1309, 1309, 1309, 1309, 1309, 1241, 1342,
1066
     1241, 1343,  775, 1343, 1343,  865, 1343, 1241,  868,  868,
1067
     1241,  868, 1241, 1241, 1241, 1241, 1344, 1344, 1345,  794,
1068
     1345, 1241,  882, 1345, 1241,  885,  885,  885, 1309, 1241,
1069
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
1070
1071
      890,  890, 1309, 1241, 1241, 1346, 1309, 1309, 1309, 1241,
1072
     1241, 1241, 1241, 1241, 1241, 1347, 1347,  915,  915, 1347,
1073
     1347,  915,  915, 1348, 1349, 1349, 1349, 1349, 1349, 1241,
1074
      930,  930,  930,  930,  930,  930,  930,  930, 1349, 1309,
1075
     1309, 1309, 1309, 1241, 1241, 1241, 1241, 1350, 1350, 1351,
1076
      871, 1351, 1351,  953, 1351, 1241,  956,  956, 1241,  956,
1077
     1241, 1241, 1241, 1241, 1241, 1241, 1352, 1352, 1353, 1353,
1078
     1353,  971, 1353, 1309,  890,  890,  890,  890,  890, 1241,
1079
     1241,  890,  890,  890, 1241, 1241, 1241, 1241,  890, 1241,
1080
     1241, 1354, 1346, 1309, 1355, 1356, 1241, 1241, 1241, 1241,
1081
1082
      915, 1347, 1347,  915, 1347, 1347, 1349, 1349, 1349, 1349,
1083
      930,  930,  930,  930,  930,  930, 1309, 1309, 1309, 1309,
1084
     1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241, 1357, 1357,
1085
     1358,  959, 1358, 1358, 1034, 1358, 1241, 1037, 1037, 1241,
1086
     1037, 1241, 1241, 1241, 1241, 1359, 1359, 1309,  890, 1241,
1087
     1241,  890, 1241, 1241,  890,  890,  890,  890, 1241, 1354,
1088
     1354, 1241, 1354, 1346, 1355, 1355, 1355, 1355, 1241, 1355,
1089
     1356, 1356, 1241, 1241, 1241, 1241, 1241, 1241, 1347,  915,
1090
     1347, 1347, 1349, 1349, 1349, 1349, 1349, 1349,  930,  930,
1091
      930,  930, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1360,
1092
1093
     1360, 1361, 1040, 1361, 1361, 1105, 1361, 1241, 1108, 1108,
1094
     1108, 1241, 1241, 1241, 1241, 1241, 1309,  890, 1241, 1241,
1095
      890,  890,  890, 1241, 1346, 1241, 1241, 1241, 1241, 1241,
1096
      915, 1347, 1347, 1349, 1349, 1349,  930,  930,  930, 1309,
1097
     1309, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241,
1098
     1362, 1362, 1363, 1363, 1363, 1155, 1155,  890, 1241, 1241,
1099
     1241, 1241,  890, 1364, 1241, 1241, 1241, 1241, 1241, 1347,
1100
     1349, 1349, 1349, 1349, 1349,  930, 1309, 1309, 1309, 1241,
1101
     1241, 1241, 1241, 1365, 1365,  890, 1241, 1241, 1364, 1364,
1102
     1241, 1364, 1241, 1241, 1241, 1349, 1349, 1349, 1309, 1309,
1103
1104
     1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241,  890, 1241,
1105
     1241, 1241, 1241, 1241, 1241, 1349, 1349, 1349, 1349, 1349,
1106
     1309, 1309, 1309,  890, 1241, 1241, 1241, 1349, 1349, 1349,
1107
     1309, 1309, 1309,  890, 1241, 1241, 1241, 1349, 1349, 1349,
1108
        0, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1109
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1110
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1111
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1112
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1113
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1114
1115
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1116
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1117
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1118
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1119
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1120
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1121
     1241, 1241, 1241, 1241, 1241
1122
    } ;
1123
1124
static const flex_int16_t yy_nxt[9611] =
1125
    {   0,
1126
       22,   23,   24,   22,   25,   23,   26,   27,   28,   22,
1127
       29,   30,   31,   22,   32,   33,   22,   22,   34,   35,
1128
       36,   37,   35,   35,   35,   35,   35,   35,   35,   38,
1129
       39,   40,   41,   42,   43,   44,   43,   45,   46,   47,
1130
       47,   48,   47,   49,   50,   51,   47,   52,   53,   54,
1131
       55,   47,   47,   47,   47,   47,   56,   57,   22,   58,
1132
       58,   58,   58,   58,   58,   22,   22,   22,   22,   22,
1133
       22,   22,   22,   59,   22,   22,   60,  157,  185,  156,
1134
       60,  157,  185,   61,   23,   78,  495,   79,   23,   80,
1135
      183,   81,   23,   78,  496,   79,   23,   80,   81,   81,
1136
1137
       85,   86,  201,   87,   85,   88,   81,   89,   90,  166,
1138
       62,   63,   81,   82,  185,   64,  202,  193,  185,  614,
1139
       81,   82,  194,   65,  228,  190,   66,   67,  228,  280,
1140
      167,   67,  103,   24,   68,   25,  103,  104,  105,   83,
1141
      283,   69,  156,  188,   70,  197,  185,   83,  103,   24,
1142
      185,   25,  103,  104,  105,   91,  189,  168,   22,   71,
1143
      198,   43,  179,  179,  179,  179,  179,  180,  199,   72,
1144
      161,   73,  332,   74,   47,  185,   47,  447,  191,  185,
1145
      166,   85,   86,   75,   87,   85,   88,  106,   89,   90,
1146
       23,   24,   40,   25,   23,  130,  131,  223,  225,   76,
1147
1148
       67,  265,  225,  106,   67,  172,  172,   68,  156,  185,
1149
      172,  172,  226,  185,   69,  245,  156,   70,  211,  245,
1150
       23,   24,   40,   25,   23,  130,  131,  212,  266,  221,
1151
      172,   22,   71,  156,   43,  299,   91,  248,  204,  293,
1152
      241,  248,   72,  211,   73,  132,   74,   47,  294,   47,
1153
      203,  204,  237,  241,  203,  173,   75,  178,  178,  178,
1154
      178,  178,  178,  178,  178,  178,  178,  213,  260,  253,
1155
      254,  213,   76,   23,   24,  132,   25,   23,   26,  155,
1156
       92,  177,  177,  177,  177,  177,  177,  177,  177,  177,
1157
      177,  188,  483,  484,  185,  252,  252,  280,  185,  156,
1158
1159
      284,  214,  215,  291,  189,  157,  216,  256,  204,  157,
1160
      241,  256,  259,  345,  217,  314,  259,  218,  258,  228,
1161
      220,  261,  262,  228,  263,  261,  316,  257,   93,  297,
1162
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
1163
       94,   94,   94,   94,   94,   94,   94,   94,   23,   24,
1164
      292,   25,   23,   26,  227,   92,  166,  164,  164,  164,
1165
      164,  164,  164,  164,  164,  164,  164,  258,  277,  277,
1166
      277,  277,  277,  278,  185,  230,  230,  265,  204,  296,
1167
      230,  230,  276,  276,  276,  276,  276,  276,  276,  276,
1168
      276,  276,  311,  311,  311,  311,  311,  312,  203,  204,
1169
1170
      230,  241,  203,   93,  301,   94,   94,   94,   94,   94,
1171
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
1172
       94,   94,   94,   23,   24,  231,   25,   23,   26,   96,
1173
       92,  314,  156,  161,  317,  332,   97,   98,   99, 1241,
1174
      342,  275,  275,  275,  275,  275,  275,  275,  275,  275,
1175
      275,  344,  100,  296,  166,  228,  305,  305,  291,  228,
1176
      156,  305,  305,  310,  310,  310,  310,  310,  310,  310,
1177
      310,  310,  310,  156,  156, 1241,  373,  299,  101,   23,
1178
       24,  305,   25,   23,   26,   96,   92,  329, 1211,  156,
1179
      156,  384,   97,   98,   99,  374,  330,  203,  204,  245,
1180
1181
      241,  203,  266,  245,  385,  292,  306,  298,  100,  309,
1182
      309,  309,  309,  309,  309,  309,  309,  309,  309,  164,
1183
      164,  164,  164,  164,  164,  164,  164,  164,  164,  203,
1184
      204,  861,  241,  203,  101,   40,   23,   24,   40,   25,
1185
       23,   26,   40,   40,   40,  107,   30,   31,   40,  108,
1186
       33,   40,   40,  109,  110,  111,  112,  110,  110,  110,
1187
      110,  110,  110,  110,   38,  113,   40,   40,  114,  115,
1188
      115,  115,  116,  117,  118,  118,  119,  118,  120,  121,
1189
      122,  118,  123,  118,  124,  118,  118,  118,  118,  118,
1190
      118,   93,  125,   40,  126,  126,  126,  126,  126,  126,
1191
1192
      127,  127,  127,  127,  127,  127,  127,  127,  128,  127,
1193
      127,  133,   23,   24,  133,   25,   23,   26,   27,   40,
1194
      133,  134,   30,   31,  133,  135,   33,  133,  133,  136,
1195
      137,  138,  139,  137,  137,  137,  137,  137,  137,  137,
1196
       38,   39,   40,  133,  140,  141,  141,  141,  142,  143,
1197
      144,  144,  145,  144,  146,  147,  148,  144,  149,  144,
1198
      150,  144,  144,  144,  144,  144,  144,  151,  152,  133,
1199
      153,  153,  153,  153,  153,  153,  133,  133,  133,  133,
1200
      133,  133,  133,  133,  154,  133,  133,  161,  260,  162,
1201
      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
1202
1203
      155,  163,  896,  388,  164,  164,  164,  164,  164,  164,
1204
      164,  164,  164,  164,  174,  185,  175,  175,  175,  175,
1205
      175,  175,  175,  175,  175,  175,  176,  297, 1103,  156,
1206
      177,  177,  177,  177,  177,  177,  386,  176,  258,  204,
1207
      156,  155,  155,  155,  155,  155,  381,  383,  155,  155,
1208
      389,  393,  155,  156,  382,  393,  177,  177,  177,  177,
1209
      177,  177,  155,  156,  156,  155,  155,  155,  155,  392,
1210
      299,  155,  155,  442,  156,  155,  155,  296,  155,  155,
1211
      155,  184,  184,  184,  184,  184,  184,  184,  184,  184,
1212
      184,  176,  381,  299,  155,  184,  184,  184,  184,  184,
1213
1214
      184,  185,  185,  185,  185,  186,  185,  185,  185,  187,
1215
      185,  185,  185,  185,  185,  185,  185,  185,  156,  155,
1216
      185,  177,  177,  177,  177,  177,  177,  155,  155,  155,
1217
      155,  155,  155,  155,  155,  155,  155,  155,  185,  185,
1218
      185,  185,  185,  185,  185,  185,  185,  185, 1241,  161,
1219
     1165,  332,  185,  185,  185,  185,  185,  185,  444,  393,
1220
      332,  259,  185,  393,  334,  259,  185,  335,  335,  335,
1221
      335,  335,  335,  335,  335,  335,  335,  156,  155,  155,
1222
      155,  155,  155,  155,  203,  204,  156,  205,  206,  155,
1223
      155,  155,  295,  381,  155,  155,  295,  299,  155,  172,
1224
1225
      172,  494, 1241,  443,  172,  172,  340,  340,  340,  340,
1226
      340,  340,  155,  155,  155,  208,  258,  380, 1241,  208,
1227
      208,  208,  156,  209,  172,  208,  208,  466,  342,  208,
1228
      165,  165,  165,  165,  165,  582,  225,  165,  165,  460,
1229
      225,  165,  342,  208,  208,  208,  161,  296,  446,  173,
1230
      226, 1241,  156,  460,  502,  165,  165,  165,  340,  340,
1231
      340,  340,  340,  340,  340,  340,  340,  340,  156,  342,
1232
      210,  161, 1241,  162,  381,  169,  169,  169,  169,  169,
1233
      464,  156,  169,  169,  504,  163,  169,  342,  164,  164,
1234
      164,  164,  164,  164,  164,  164,  164,  164,  460,  266,
1235
1236
      169,  169,  169,  336,  337,  338,  336,  336,  336,  336,
1237
      336,  336,  336,  340,  340,  340,  340,  340,  340,  340,
1238
      340,  340,  340,  203,  204,  208,  241,  203,  155,  208,
1239
      415,  861,  207,  371,  213,  607,  219,  234,  213,  156,
1240
      156,  234,  234,  234,  161,  235,  332,  234,  234,  357,
1241
      358,  234,  505,  359,  506,  360,  361,  528,  529,  362,
1242
      530,  363,  364, 1103,  156,  234,  234,  234,  214,  215,
1243
      230,  230,  291,  216,  299,  230,  230,  292,  156,  234,
1244
      372,  217,  155,  166,  218, 1241,  233,  390,  161,  556,
1245
      446, 1241,  236,  240,  204,  230,  241,  240,  242,  389,
1246
1247
      243,  595,  585,  501, 1241,  242,  156,  243,  164,  164,
1248
      164,  164,  164,  164,  164,  164,  164,  164,  580,  292,
1249
      231,  243,  243,  357,  358, 1032,  444,  359,  446,  360,
1250
      361,  266, 1241,  362,  391,  363,  203,  204, 1241,  241,
1251
      203,  203,  204, 1241,  241,  203, 1241,  599,  243,  242,
1252
      161,  581,  162, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1253
     1241, 1241, 1241,  597,  249,  586, 1241, 1241, 1241, 1241,
1254
     1241, 1241, 1241, 1241, 1241, 1241, 1241,  267,  261,  262,
1255
      267,  263,  261,  604,  583,  251,  267,  267,  583,  251,
1256
      267,  251,  251,  267,  267,  208,  252,  172,  298,  251,
1257
1258
     1145,  172,  326,  440,  172,  491,  492,  269,  493,  267,
1259
      635,  172,  584,  636,  251,  394,  395,  396,  394,  394,
1260
      394,  394,  394,  394,  394,  172,  172,  398,  398,  398,
1261
      398,  398,  398,  270,  267,  267,  172, 1241,  185,  172,
1262
      156,  893,  172,  172, 1241,  172,  172,  172,  172,  172,
1263
      441,  593,  172,  172,  264,  264,  264,  264,  564,  564,
1264
      564,  264,  264, 1241,  602,  264,  269,  172,  172,  398,
1265
      398,  398,  398,  398,  398,  398,  398,  398,  398,  603,
1266
      264,  264,  398,  398,  398,  398,  398,  398,  398,  398,
1267
      398,  398,  272,  172,  172,  269,  156, 1241,  273,  269,
1268
1269
      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
1270
      176,  269,  689,  381,  275,  275,  275,  275,  275,  275,
1271
      269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
1272
      269,  269,  269,  269,  269,  269,  269, 1241, 1176,  388,
1273
      275,  275,  275,  275,  275,  275,  269,  269,  269,  269,
1274
      269,  269,  269,  269,  269,  269,  269, 1241,  587,  269,
1275
      269,  269,  269,  269,  269,  269,  269,  269,  269, 1241,
1276
     1241, 1241, 1241,  269,  269,  269,  269,  269,  269,  592,
1277
      600,  267,  267,  267,  267,  267,  389,  605,  267,  267,
1278
      606,  594,  267,  423,  423,  423,  423,  423,  423,  269,
1279
1280
      269,  269,  269,  269,  269,  269,  267,  267,  267,  269,
1281
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
1282
      176,  269,  156, 1241,  279,  279,  279,  279,  279,  279,
1283
      280,  280,  280,  280,  281,  280,  280,  280,  280,  280,
1284
      280,  280,  280,  280,  280,  280,  280,  601, 1170,  282,
1285
      275,  275,  275,  275,  275,  275,  269,  269,  269,  269,
1286
      269,  269,  269,  269,  269,  269,  269,  280,  280,  280,
1287
      280,  280,  280,  280,  280,  280,  280, 1241, 1241,  176,
1288
      156,  280,  280,  280,  280,  280,  280,  609,  406,  407,
1289
      596,  280,  408, 1241,  409,  410,  156, 1241,  411,  590,
1290
1291
      412,  553,  554,  590,  555,  698,  299,  269,  269,  269,
1292
      269,  269,  269,  307,  598,  308,  308,  308,  308,  308,
1293
      308,  308,  308,  308,  308,  176,  608,  591,  156,  309,
1294
      309,  309,  309,  309,  309,  616,  299, 1241,  711,  299,
1295
      298,  298,  298,  298,  298,  176,  660,  298,  298,  588,
1296
      156,  298,  299,  532,  589,  309,  309,  309,  309,  309,
1297
      309,  298,  156,  624,  298,  298,  298,  298,  625,  688,
1298
      298,  298,  156,  156,  298,  298,  342,  298,  298,  298,
1299
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
1300
      176,  615,  299,  298,  313,  313,  313,  313,  313,  313,
1301
1302
      314,  314,  314,  314,  315,  314,  314,  314,  314,  314,
1303
      314,  314,  314,  314,  314,  314,  314,  299,  298,  314,
1304
      309,  309,  309,  309,  309,  309,  298,  298,  298,  298,
1305
      298,  298,  298,  298,  298,  298,  298,  314,  314,  314,
1306
      314,  314,  314,  314,  314,  314,  314, 1241,  935,  659,
1307
      314,  314,  314,  314,  314,  314,  314,  656,  431,  432,
1308
      657,  314,  433,  342,  434,  435,  305,  305,  436,  645,
1309
      437,  305,  305,  161,  646,  332, 1241,  298,  298,  298,
1310
      298,  298,  298,  203,  204,  299,  324,  325,  298,  298,
1311
      298,  305,  299,  298,  298, 1032,  701,  298,  419,  420,
1312
1313
      421,  419,  419,  419,  419,  419,  419,  419, 1241,  658,
1314
     1241,  298,  298,  298,  208, 1241,  306,  590,  208,  208,
1315
      208,  590,  327,  702,  208,  208,  693, 1241,  208,  300,
1316
      300,  300,  300,  300,  691,  299,  300,  300,  299,  613,
1317
      300,  697,  208,  208,  208,  591, 1241,  203,  204, 1241,
1318
      241,  203,  692, 1241,  300,  300,  300, 1241, 1241,  696,
1319
      302,  302,  302,  302,  302,  694, 1004,  302,  302,  328,
1320
      172,  302,  700,  155,  171,  155,  155,  171,  690,  280,
1321
      155,  155,  708,  709,  171,  302,  302,  302,  423,  423,
1322
      423,  423,  423,  423,  423,  423,  423,  423,  171,  171,
1323
1324
      155,  174,  299,  339,  339,  339,  339,  339,  339,  339,
1325
      339,  339,  339,  176,  156,  156,  951,  339,  339,  339,
1326
      339,  339,  339,  423,  423,  423,  423,  423,  423,  423,
1327
      423,  423,  423,  573,  573,  573,  573,  573,  574, 1241,
1328
      156,  568,  342,  339,  339,  339,  339,  339,  339,  155,
1329
     1241,  583,  155,  570,  156,  583, 1241,  705,  155,  155,
1330
      712,  695,  155,  155,  800,  155,  155,  155,  346,  346,
1331
      346,  346,  346,  346,  346,  346,  346,  346,  176,  584,
1332
     1138,  155,  346,  346,  346,  346,  346,  346,  185,  185,
1333
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1334
1335
      185,  185,  185,  185,  185,  156,  155,  185,  339,  339,
1336
      339,  339,  339,  339,  155,  155,  155,  155,  155,  155,
1337
      155,  155,  155,  155,  155,  185,  185,  185,  185,  185,
1338
      185,  185,  185,  185,  185, 1241, 1062,  763, 1063,  185,
1339
      185,  185,  185,  185,  185,  335,  335,  335,  335,  335,
1340
      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
1341
      335,  335,  335,  335,  335,  155,  155,  155,  155,  155,
1342
      155,  208,  299, 1241, 1241,  208,  208,  208, 1241,  209,
1343
      230,  208,  208, 1241,  230,  208,  447,  230,  448,  448,
1344
      448,  448,  448,  448,  230, 1241, 1241,  812, 1137,  208,
1345
1346
      208,  208, 1241,  710,  703,  704, 1241, 1241,  230,  230,
1347
      507, 1241,  508,  508,  508,  508,  508,  508,  508,  508,
1348
      508,  508,  156,  628,  699,  156,  210,  230,  718,  706,
1349
      155,  229,  155,  155,  229, 1241,  156,  155,  155, 1133,
1350
      507,  229,  509,  509,  509,  509,  509,  509,  509,  509,
1351
      509,  509,  622,  299,  761,  229,  229,  155,  234,  764,
1352
      760, 1241,  234,  234,  234, 1241,  235,  661,  234,  234,
1353
     1241,  507,  234,  510,  510,  510,  510,  510,  511,  508,
1354
      508,  508,  508, 1241,  342,  299,  234,  234,  234, 1241,
1355
      305,  854,  707,  299,  305,  570,  507,  305,  508,  508,
1356
1357
      508,  508,  508,  508,  305,  161,  156,  332,  623,  156,
1358
      156, 1241,  762,  236,  267,  342,  185,  267,  305,  305,
1359
      900,  716,  717,  267,  267, 1241,  460,  267,  797,  156,
1360
      267,  267,  557,  558,  559,  557,  557,  557,  557,  557,
1361
      557,  557,  742,  802,  269,  299,  267,  562,  562,  563,
1362
      564,  564,  564,  564,  564,  564,  564,  457,  572,  572,
1363
      572,  572,  572,  572,  572,  572,  572,  572,  156,  156,
1364
      270,  267,  267,  172,  796, 1241,  172,  342,  715,  172,
1365
      172,  299,  172,  172,  172,  172,  172, 1132,  570,  172,
1366
      172, 1241,  806,  571,  571,  571,  571,  571,  571,  571,
1367
1368
      571,  571,  571,  269,  172,  172,  617,  618,  619,  617,
1369
      617,  617,  617,  617,  617,  617,  507, 1241,  508,  508,
1370
      508,  508,  508,  508,  508,  508,  508,  508, 1241,  272,
1371
      172,  172,  273,  813,  397,  397,  397,  397,  397,  397,
1372
      397,  397,  397,  397,  176, 1241, 1131,  801,  397,  397,
1373
      397,  397,  397,  397,  507, 1241,  508,  508,  508,  508,
1374
      508,  508,  508,  508,  508,  508,  803,  808, 1224,  590,
1375
      568,  342,  809,  590,  397,  397,  397,  397,  397,  397,
1376
      269, 1241,  570,  185,  269,  399,  399,  399,  399,  399,
1377
      399,  399,  399,  399,  399,  176,  269,  591,  815,  399,
1378
1379
      399,  399,  399,  399,  399,  280,  280,  280,  280,  280,
1380
      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1381
      280,  280,  891,  185,  282,  397,  397,  397,  397,  397,
1382
      397,  269,  269,  269,  269,  269,  269,  269,  269,  269,
1383
      269,  269,  280,  280,  280,  280,  280,  280,  280,  280,
1384
      280,  280, 1241,  568,  342, 1241,  280,  280,  280,  280,
1385
      280,  280, 1241, 1241,  897,  678, 1241,  185, 1241, 1241,
1386
      156,  814, 1241, 1241,  807, 1241, 1073, 1241,  342, 1241,
1387
     1241,  821,  269,  269,  269,  269,  269,  269,  305,  678,
1388
     1241,  298,  304,  298,  298,  304, 1241, 1241,  298,  298,
1389
1390
      629,  820,  304, 1241,  626, 1241, 1241,  836,  849, 1241,
1391
     1241,  627,  837,  850,  156,  630,  304,  304,  298,  307,
1392
     1073,  422,  422,  422,  422,  422,  422,  422,  422,  422,
1393
      422,  176,  826, 1241, 1241,  422,  422,  422,  422,  422,
1394
      422,  156,  899,  583,  590, 1241, 1241,  583,  590, 1241,
1395
     1241,  185,  825,  631,  185,  632,  895,  156,  299,  894,
1396
      185,  422,  422,  422,  422,  422,  422,  298,  827,  185,
1397
      298,  584,  591, 1241, 1241,  156,  298,  298,  314, 1013,
1398
      298,  298,  889,  298,  298,  298,  424,  424,  424,  424,
1399
      424,  424,  424,  424,  424,  424,  176,  633,  724,  298,
1400
1401
      424,  424,  424,  424,  424,  424,  314,  314,  314,  314,
1402
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1403
      314,  314,  314,  299,  298,  314,  422,  422,  422,  422,
1404
      422,  422,  298,  298,  298,  298,  298,  298,  298,  298,
1405
      298,  298,  298,  314,  314,  314,  314,  314,  314,  314,
1406
      314,  314,  314, 1241,  299,  342,  976,  314,  314,  314,
1407
      314,  314,  314, 1241,  185,  853,  570, 1241,  640,  641,
1408
      642,  640,  640,  640,  640,  640,  640,  640,  798,  161,
1409
      156,  332,  798,  298,  298,  298,  298,  298,  298,  208,
1410
      342, 1241,  919,  208,  208,  208,  280,  327,  903,  208,
1411
1412
      208,  678,  918,  208,  280,  299,  799,  634,  342,  568,
1413
      342,  676,  676,  676,  676,  676,  676,  208,  208,  208,
1414
      532,  570,  533,  533,  533,  533,  533,  533,  667,  667,
1415
      667,  667,  667,  667,  667,  667,  667,  667,  457,  824,
1416
      185,  156,  951,  898,  328,  447,  922,  448,  448,  448,
1417
      448,  448,  448,  448,  448,  448,  448,  280,  908,  299,
1418
      672,  673,  674,  672,  672,  672,  672,  672,  672,  672,
1419
      579,  579,  579,  579,  579,  579,  579,  579,  579,  579,
1420
      156,  280,  863,  907,  156,  447,  923,  449,  449,  449,
1421
      449,  449,  449,  449,  449,  449,  449,  680,  680,  680,
1422
1423
      680,  680,  680,  680,  680,  680,  680,  681,  681,  681,
1424
      681,  681,  682,  765,  766,  767,  765,  765,  765,  765,
1425
      765,  765,  765, 1023,  156,  447,  934,  450,  450,  450,
1426
      450,  450,  451,  448,  448,  448,  448, 1241,  314,  679,
1427
      679,  679,  679,  679,  679,  679,  679,  679,  679,  719,
1428
      156,  720,  720,  720,  720,  720,  720,  720,  720,  720,
1429
      720,  161,  925,  332,  156,  452,  452,  452,  452,  452,
1430
      452,  452,  452,  452,  452,  176,  568,  342, 1089,  452,
1431
      452,  452,  452,  452,  452,  719,  861,  721,  721,  721,
1432
      721,  721,  721,  721,  721,  721,  721,  892,  863,  314,
1433
1434
      299, 1082,  156,  931,  185,  452,  452,  452,  452,  452,
1435
      452,  454,  455,  456,  456,  456,  456,  456,  456,  456,
1436
      456,  457,  906, 1081,  982,  458,  458,  458,  458,  458,
1437
      458,  719,  156,  722,  722,  722,  722,  722,  723,  720,
1438
      720,  720,  720, 1241,  314,  185, 1079, 1241,  936,  989,
1439
      909,  458,  458,  458,  458,  458,  458,  342,  461,  462,
1440
      463,  461,  461,  461,  461,  461,  461,  461,  464,  156,
1441
      185, 1241,  465,  465,  465,  465,  465,  465, 1241,  730,
1442
     1241, 1241, 1241, 1241, 1241, 1241,  777, 1241,  778,  778,
1443
      778,  778,  778,  778,  778,  778,  778,  778,  465,  465,
1444
1445
      465,  465,  465,  465,  155,  314, 1241,  155, 1241, 1241,
1446
      938, 1241,  725,  155,  155,  728,  734,  155,  155,  156,
1447
      155,  155,  155,  467,  467,  467,  467,  467,  467,  467,
1448
      467,  467,  467,  176,  736, 1117,  155,  467,  467,  467,
1449
      467,  467,  467,  185,  185,  185,  185,  185,  185,  185,
1450
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1451
      156,  155,  185,  452,  452,  452,  452,  452,  452,  155,
1452
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1453
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1454
     1241,  568,  342, 1059,  185,  185,  185,  185,  185,  185,
1455
1456
     1241, 1241,  314,  678, 1241, 1241, 1241, 1241,  933, 1015,
1457
     1241, 1241,  314, 1241, 1241,  804,  937, 1241,  863,  804,
1458
      155,  155,  155,  155,  155,  155,  208,  314, 1241, 1241,
1459
      208,  208,  208,  299,  209, 1241,  208,  208, 1241,  342,
1460
      208, 1241,  729,  805,  978,  735,  342,  568,  342,  732,
1461
      678,  939,  185,  185,  208,  208,  208,  786,  731,  786,
1462
      661,  733,  662,  662,  662,  662,  662,  662,  777,  983,
1463
      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
1464
      185,  210,  208, 1241,  342,  156,  208,  208,  208,  208,
1465
      371,  974,  208,  208, 1080,  786,  208,  280,  777,  156,
1466
1467
      780,  780,  780,  780,  780,  781,  778,  778,  778,  778,
1468
      208,  208,  208,  687,  687,  687,  687,  687,  687,  687,
1469
      687,  687,  687,  568,  342,  784,  784,  784,  784,  784,
1470
      784,  961,  979,  568,  342,  678,  810,  210,  234,  185,
1471
      810,  977,  234,  234,  234,  786,  235,  185,  234,  234,
1472
     1014, 1017,  234,  788,  788,  788,  788,  788,  788,  788,
1473
      788,  788,  788,  314,  811,  342,  234,  234,  234,  789,
1474
      789,  789,  789,  789,  790, 1241,  786,  787,  787,  787,
1475
      787,  787,  787,  787,  787,  787,  787,  816,  818,  984,
1476
      156,  816,  818,  236,  234, 1241,  342,  185,  234,  234,
1477
1478
      234,  234,  390,  156,  234,  234,  861,  719,  234,  720,
1479
      720,  720,  720,  720,  720,  817,  819,  161,  863,  332,
1480
      994,  863,  234,  234,  234,  828,  829,  830,  828,  828,
1481
      828,  828,  828,  828,  828,  719,  861,  720,  720,  720,
1482
      720,  720,  720,  720,  720,  720,  720,  771,  951,  236,
1483
      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
1484
      176,  314, 1091, 1234,  512,  512,  512,  512,  512,  512,
1485
      719, 1241,  720,  720,  720,  720,  720,  720,  720,  720,
1486
      720,  720, 1064,  951,  185,  798,  568,  342,  342,  798,
1487
      512,  512,  512,  512,  512,  512,  269, 1209,  880,  880,
1488
1489
      269,  513,  513,  513,  513,  513,  513,  513,  513,  513,
1490
      513,  176,  269,  799,  185,  513,  513,  513,  513,  513,
1491
      513,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1492
      280,  280,  280,  280,  280,  280,  280,  280,  568,  342,
1493
      282,  512,  512,  512,  512,  512,  512,  269,  269,  269,
1494
      269,  269,  269,  269,  269,  269,  269,  269,  280,  280,
1495
      280,  280,  280,  280,  280,  280,  280,  280, 1241, 1124,
1496
      299, 1063,  280,  280,  280,  280,  280,  280,  776,  776,
1497
      776,  776,  776,  776,  776,  776,  776,  776, 1241,  804,
1498
     1241, 1241, 1241,  804, 1241, 1241, 1052, 1016,  269,  269,
1499
1500
      269,  269,  269,  269,  532,  185,  533,  533,  533,  533,
1501
      533,  533,  533,  533,  533,  533, 1241,  805, 1241, 1241,
1502
      156, 1012, 1061, 1062,  831, 1063, 1061, 1017,  810, 1241,
1503
     1241, 1048,  810, 1241, 1241,  834,  816,  818,  835, 1090,
1504
      816,  818,  314,  299,  532, 1006,  534,  534,  534,  534,
1505
      534,  534,  534,  534,  534,  534,  811, 1241, 1241, 1241,
1506
      342, 1055, 1005, 1057,  817,  819,  156, 1003,  798,  185,
1507
      185,  880,  798,  742,  839,  743,  743,  743,  743,  743,
1508
      743,  838, 1092,  299,  532,  314,  535,  535,  535,  535,
1509
      535,  536,  533,  533,  533,  533,  799,  314, 1139,  841,
1510
1511
      842,  843,  841,  841,  841,  841,  841,  841,  841,  804,
1512
      810,  816,  299,  804,  810,  816, 1002, 1121,  818, 1191,
1513
      910, 1192,  818,  299,  298,  185,  537,  537,  537,  537,
1514
      537,  537,  537,  537,  537,  537,  299,  805,  811,  817,
1515
      537,  537,  537,  537,  537,  537,  819,  865,  865,  865,
1516
      865,  865,  865,  865,  865,  865,  865,  866,  866,  866,
1517
      866,  866,  867, 1186,  156,  991,  537,  537,  537,  537,
1518
      537,  537,  538,  538,  538,  538,  538,  538,  538,  538,
1519
      538,  538, 1049,  185,  990,  156,  538,  538,  538,  538,
1520
      538,  538, 1241,  185,  864,  864,  864,  864,  864,  864,
1521
1522
      864,  864,  864,  864,  777, 1083,  778,  778,  778,  778,
1523
      778,  778,  537,  537,  537,  537,  537,  537,  208,  568,
1524
      342,  185,  208,  208,  208, 1210,  327, 1192,  208,  208,
1525
      771,  880,  208,  873,  874,  875,  873,  873,  873,  873,
1526
      873,  873,  873,  566,  299,  932,  208,  208,  208,  777,
1527
      861,  778,  778,  778,  778,  778,  778,  778,  778,  778,
1528
      778,  777,  951,  778,  778,  778,  778,  778,  778,  778,
1529
      778,  778,  778,  328,  208, 1056, 1058, 1208,  208,  208,
1530
      208,  208,  440, 1208,  208,  208,  185,  185,  208,  795,
1531
      795,  795,  795,  795,  795,  795,  795,  795,  795,  924,
1532
1533
      921,  861,  208,  208,  208,  568,  342,  878,  878,  878,
1534
      878,  878,  878, 1032,  920,  917, 1241,  786,  882,  882,
1535
      882,  882,  882,  882,  882,  882,  882,  882, 1032,  328,
1536
      447,  916,  448,  448,  448,  448,  448,  448,  448,  448,
1537
      448,  448,  883,  883,  883,  883,  883,  884, 1241,  905,
1538
      881,  881,  881,  881,  881,  881,  881,  881,  881,  881,
1539
      798,  804,  810,  816,  798,  804,  810,  816, 1083,  156,
1540
      447,  995,  448,  448,  448,  448,  448,  448,  448,  448,
1541
      448,  448,  954,  954,  954,  954,  954,  955,  799,  805,
1542
      811,  817,  904,  185,  995,  818,  995,  995, 1118,  818,
1543
1544
      972,  972,  972,  972,  972,  973,  902,  299,  185,  156,
1545
      568,  342,  569,  569,  569,  569,  569,  569,  569,  569,
1546
      569,  569,  570,  819,  901,  777,  571,  571,  571,  571,
1547
      571,  571,  910,  911,  911,  911,  911,  911,  911,  911,
1548
      911,  911,  911,  980, 1123,  992,  161,  980,  332,  992,
1549
      771,  185,  571,  571,  571,  571,  571,  571,  342,  575,
1550
      576,  577,  575,  575,  575,  575,  575,  575,  575,  578,
1551
      995,  981,  566,  579,  579,  579,  579,  579,  579,  910,
1552
      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
1553
      457,  299,  280,  995,  299,  995,  996, 1140,  342,  579,
1554
1555
      579,  579,  579,  579,  579,  155,  993,  980,  155,  880,
1556
      299,  980,  299,  852,  155,  155,  851,  848,  155,  155,
1557
      156,  155,  155,  155,  185,  185,  185,  185,  185,  185,
1558
      185,  185,  185,  185,  176,  981,  156,  155,  185,  185,
1559
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1560
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1561
      185,  156,  155,  185,  155,  155,  155,  155,  155,  155,
1562
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1563
      155,  620,  620,  620,  620,  620,  620,  620,  620,  620,
1564
      620,  176,  250,  250,  250,  620,  620,  620,  620,  620,
1565
1566
      620,  910,  913,  913,  913,  913,  913,  914,  911,  911,
1567
      911,  911,  910,  911,  911,  911,  911,  911,  911,  847,
1568
     1122,  620,  620,  620,  620,  620,  620,  269,  185,  846,
1569
     1171,  269,  621,  621,  621,  621,  621,  621,  621,  621,
1570
      621,  621,  176,  269,  845,  844,  621,  621,  621,  621,
1571
      621,  621,  280,  280,  280,  280,  280,  280,  280,  280,
1572
      280,  280,  280,  280,  280,  280,  280,  280,  280,  299,
1573
      840,  282,  620,  620,  620,  620,  620,  620,  269,  269,
1574
      269,  269,  269,  269,  269,  269,  269,  269,  269,  583,
1575
     1199, 1216,  861,  583,  940,  941,  942,  943,  940,  940,
1576
1577
      940,  940,  940,  940, 1032,  833,  861,  280,  280,  280,
1578
      280,  280,  280,  280,  280,  280,  280,  584, 1103, 1163,
1579
      832,  280,  280,  280,  280,  280,  280,  185,  719,  156,
1580
      299,  156,  854,  855,  855,  855,  855,  855,  855, 1035,
1581
     1035, 1035, 1035, 1035, 1036,  823,  822,  269,  269,  269,
1582
      269,  269,  269,  532,  156,  533,  533,  533,  533,  533,
1583
      533,  533,  533,  533,  533, 1061, 1062,  156, 1063, 1061,
1584
      156,  945,  946,  947,  945,  945,  945,  945,  945,  945,
1585
      945,  872,  872,  872,  872,  872,  872,  872,  872,  872,
1586
      872,  156,  299,  532, 1241,  533,  533,  533,  533,  533,
1587
1588
      533,  533,  533,  533,  533,  861, 1103,  949,  949,  949,
1589
      949,  949,  949,  250,  250,  250, 1158,  863,  953,  953,
1590
      953,  953,  953,  953,  953,  953,  953,  953,  185,  156,
1591
      985, 1241,  299,  661,  985,  662,  662,  662,  662,  662,
1592
      662,  662,  662,  662,  662, 1241,  771,  952,  952,  952,
1593
      952,  952,  952,  952,  952,  952,  952,  961,  986,  962,
1594
      962,  962,  962,  962,  962,  962,  962,  962,  962,  566,
1595
      987,  457,  156,  661,  987,  663,  663,  663,  663,  663,
1596
      663,  663,  663,  663,  663,  961,  457,  963,  963,  963,
1597
      963,  963,  963,  963,  963,  963,  963,  961,  988,  964,
1598
1599
      964,  964,  964,  964,  965,  962,  962,  962,  962,  759,
1600
      758,  757,  156,  661,  756,  664,  664,  664,  664,  664,
1601
      665,  662,  662,  662,  662,  888,  888,  888,  888,  888,
1602
      888,  888,  888,  888,  888,  568,  342,  968,  968,  968,
1603
      968,  968,  968,  755,  161,  754,  332,  880, 1184, 1184,
1604
     1184, 1184,  156,  568,  342,  676,  676,  676,  676,  676,
1605
      676,  676,  676,  676,  676,  570,  753,  752,  751,  675,
1606
      675,  675,  675,  675,  675,  971,  971,  971,  971,  971,
1607
      971,  971,  971,  971,  971,  997,  998,  999, 1000,  997,
1608
      997,  997,  997,  997,  997,  675,  675,  675,  675,  675,
1609
1610
      675,  568,  342,  677,  677,  677,  677,  677,  677,  677,
1611
      677,  677,  677,  678, 1125,  750,  749,  679,  679,  679,
1612
      679,  679,  679, 1241,  748,  970,  970,  970,  970,  970,
1613
      970,  970,  970,  970,  970,  925,  926,  926,  926,  926,
1614
      926,  926,  747,  679,  679,  679,  679,  679,  679,  342,
1615
      683,  684,  685,  683,  683,  683,  683,  683,  683,  683,
1616
      686,  741,  740,  739,  687,  687,  687,  687,  687,  687,
1617
      738,  737,  961,  299,  962,  962,  962,  962,  962,  962,
1618
      980,  727, 1164,  161,  980,  332, 1164,  726, 1241, 1241,
1619
      687,  687,  687,  687,  687,  687,  742,  495,  743,  743,
1620
1621
      743,  743,  743,  743,  743,  743,  743,  743,  981,  910,
1622
      911,  911,  911,  911,  911,  911,  911,  911,  911,  911,
1623
      985,  714,  713, 1023,  985, 1024, 1024, 1024, 1024, 1024,
1624
     1024, 1024, 1024, 1024, 1024,  299,  742,  185,  744,  744,
1625
      744,  744,  744,  744,  744,  744,  744,  744,  986,  910,
1626
      911,  911,  911,  911,  911,  911,  911,  911,  911,  911,
1627
      987,  985,  987, 1241,  987,  985,  987,  568,  342, 1047,
1628
     1047, 1047, 1047, 1047, 1047,  299,  742,  185,  745,  745,
1629
      745,  745,  745,  746,  743,  743,  743,  743,  988,  986,
1630
      988, 1007, 1008, 1009, 1010, 1007, 1007, 1007, 1007, 1007,
1631
1632
     1007,  980,  985,  987,  670,  980,  985,  987,  181,  181,
1633
      280,  280,  566,  457,  181,  299,  661,  185,  662,  662,
1634
      662,  662,  662,  662,  662,  662,  662,  662,  299,  981,
1635
      986,  988, 1023,  666, 1025, 1025, 1025, 1025, 1025, 1025,
1636
     1025, 1025, 1025, 1025, 1106, 1106, 1106, 1106, 1106, 1107,
1637
      314,  314,  314,  457,  182,  156,  661,  861,  662,  662,
1638
      662,  662,  662,  662,  662,  662,  662,  662, 1023, 1103,
1639
     1026, 1026, 1026, 1026, 1026, 1027, 1024, 1024, 1024, 1024,
1640
      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
1641
     1190, 1191,  655, 1192, 1190,  156,  772,  773,  774,  772,
1642
1643
      772,  772,  772,  772,  772,  772,  775,  654,  653,  652,
1644
      776,  776,  776,  776,  776,  776,  861,  651, 1030, 1030,
1645
     1030, 1030, 1030, 1030,  181,  181,  650, 1053,  951, 1050,
1646
      181, 1053,  649, 1050,  648,  647,  776,  776,  776,  776,
1647
      776,  776,  568,  342,  784,  784,  784,  784,  784,  784,
1648
      784,  784,  784,  784,  678, 1054,  644, 1051,  783,  783,
1649
      783,  783,  783,  783, 1034, 1034, 1034, 1034, 1034, 1034,
1650
     1034, 1034, 1034, 1034, 1042, 1043, 1044, 1042, 1042, 1042,
1651
     1042, 1042, 1042, 1042,  783,  783,  783,  783,  783,  783,
1652
      568,  342,  785,  785,  785,  785,  785,  785,  785,  785,
1653
1654
      785,  785,  786,  643,  176,  639,  787,  787,  787,  787,
1655
      787,  787, 1241,  638, 1033, 1033, 1033, 1033, 1033, 1033,
1656
     1033, 1033, 1033, 1033, 1050,  637, 1190, 1191, 1050, 1192,
1657
     1190,  507,  787,  787,  787,  787,  787,  787,  342,  791,
1658
      792,  793,  791,  791,  791,  791,  791,  791,  791,  794,
1659
      495,  612, 1051,  795,  795,  795,  795,  795,  795,  961,
1660
      495,  962,  962,  962,  962,  962,  962,  962,  962,  962,
1661
      962,  341,  341,  280,  611,  495,  610,  341, 1241,  795,
1662
      795,  795,  795,  795,  795,  742, 1241,  743,  743,  743,
1663
      743,  743,  743,  743,  743,  743,  743,  961,  457,  962,
1664
1665
      962,  962,  962,  962,  962,  962,  962,  962,  962,  566,
1666
     1053, 1119, 1050,  457, 1053, 1119, 1050, 1119,  182, 1050,
1667
      552, 1119, 1053, 1050,  299,  742, 1053,  743,  743,  743,
1668
      743,  743,  743,  743,  743,  743,  743, 1066, 1054, 1120,
1669
     1051, 1066, 1067, 1068, 1069, 1120,  551, 1051,  550, 1073,
1670
     1054, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
1671
     1074,  314,  549,  548,  299,  854,  855,  855,  855,  855,
1672
      855,  855,  855,  855,  855,  855,  185, 1066,  547,  185,
1673
      546, 1066, 1067, 1068, 1069, 1156, 1156, 1156, 1156, 1156,
1674
     1157, 1073, 1070, 1075, 1075, 1075, 1075, 1075, 1075, 1075,
1675
1676
     1075, 1075, 1075,  156,  854,  856,  856,  856,  856,  856,
1677
      856,  856,  856,  856,  856, 1073,  545, 1076, 1076, 1076,
1678
     1076, 1076, 1077, 1078, 1078, 1078, 1078, 1053,  453,  453,
1679
      544, 1053, 1072, 1017,  453, 1018, 1018, 1018, 1018, 1018,
1680
     1018,  543,  156,  854,  857,  857,  857,  857,  857,  858,
1681
      855,  855,  855,  855, 1073, 1054, 1078, 1078, 1078, 1074,
1682
     1074, 1074, 1074, 1074, 1074, 1074,  542, 1161,  541, 1159,
1683
      540, 1161,  156, 1159,  282,  282,  314,  282,  282,  282,
1684
      282,  156,  861,  539,  862,  862,  862,  862,  862,  862,
1685
      862,  862,  862,  862,  863, 1162,  307, 1160,  864,  864,
1686
1687
      864,  864,  864,  864, 1093, 1094, 1095, 1093, 1093, 1093,
1688
     1093, 1093, 1093, 1093, 1096, 1097, 1098, 1096, 1096, 1096,
1689
     1096, 1096, 1096, 1096,  864,  864,  864,  864,  864,  864,
1690
      868,  869,  870,  868,  868,  868,  868,  868,  868,  868,
1691
      871,  156,  531,  527,  872,  872,  872,  872,  872,  872,
1692
     1023,  526, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1693
     1024, 1024, 1023,  525, 1024, 1024, 1024, 1024, 1024, 1024,
1694
      872,  872,  872,  872,  872,  872,  568,  342,  878,  878,
1695
      878,  878,  878,  878,  878,  878,  878,  878,  786,  524,
1696
      523,  522,  877,  877,  877,  877,  877,  877, 1023,  521,
1697
1698
     1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1699
     1073,  520, 1074, 1074, 1074, 1074, 1074, 1074,  877,  877,
1700
      877,  877,  877,  877,  568,  342,  879,  879,  879,  879,
1701
      879,  879,  879,  879,  879,  879,  880,  519,  518,  517,
1702
      881,  881,  881,  881,  881,  881, 1041, 1041, 1041, 1041,
1703
     1041, 1041, 1041, 1041, 1041, 1041, 1105, 1105, 1105, 1105,
1704
     1105, 1105, 1105, 1105, 1105, 1105,  881,  881,  881,  881,
1705
      881,  881,  342,  885,  886,  887,  885,  885,  885,  885,
1706
      885,  885,  885,  516,  515,  514,  273,  888,  888,  888,
1707
      888,  888,  888,  861,  503, 1101, 1101, 1101, 1101, 1101,
1708
1709
     1101,  500,  499,  498,  497, 1032,  342, 1112, 1112, 1112,
1710
     1112, 1112, 1112,  888,  888,  888,  888,  888,  888,  155,
1711
     1241,  282,  155, 1065,  282,  490,  282,  489,  155,  155,
1712
     1065, 1065,  155,  155, 1065,  155,  155,  155,  185,  185,
1713
      185,  185,  185,  185,  185,  185,  185,  185, 1065, 1065,
1714
     1065,  155,  185,  185,  185,  185,  185,  185,  185,  185,
1715
      185,  185,  185,  185,  185,  185,  185,  890,  185,  185,
1716
      185,  185,  185,  185,  185,  156,  155,  185,  155,  155,
1717
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1718
      155,  155,  155,  155,  155,  269,  488,  487,  486,  269,
1719
1720
      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1721
      485,  269,  482,  481,  280,  280,  280,  280,  280,  280,
1722
      280,  280,  280,  280,  280,  280,  280,  280,  915,  280,
1723
      280,  280,  280,  280,  280,  280,  280,  480,  479,  282,
1724
      269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
1725
      269,  269,  269,  269,  269,  269,  269,  925,  926,  926,
1726
      926,  926,  926,  926,  926,  926,  926,  926, 1241,  478,
1727
     1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
1728
      342, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
1729
     1112,  477,  476,  475,  474,  299,  925,  927,  927,  927,
1730
1731
      927,  927,  927,  927,  927,  927,  927,  342, 1113, 1113,
1732
     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,  342, 1114,
1733
     1114, 1114, 1114, 1114, 1115, 1112, 1112, 1112, 1112, 1119,
1734
      473,  472,  471, 1119,  299,  925,  928,  928,  928,  928,
1735
      928,  929,  926,  926,  926,  926,  470, 1159, 1241,  469,
1736
      468, 1159, 1241, 1241, 1241, 1241, 1126, 1120,  182, 1127,
1737
     1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,  174,
1738
      560,  560,  299,  299,  298, 1160,  560,  298,  439,  561,
1739
      561,  438,  430,  298,  298,  561,  185,  298,  298,  429,
1740
      298,  298,  298,  314,  314,  314,  314,  314,  314,  314,
1741
1742
      314,  314,  314, 1070,  185,  428,  298,  314,  314,  314,
1743
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1744
      314,  930,  314,  314,  314,  314,  314,  314,  314,  314,
1745
      299,  298,  314,  298,  298,  298,  298,  298,  298,  298,
1746
      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
1747
      854,  855,  855,  855,  855,  855,  855,  855,  855,  855,
1748
      855, 1066,  427, 1116, 1116, 1066, 1067, 1068, 1069, 1241,
1749
     1116,  426,  425, 1241, 1067, 1068, 1069, 1128, 1129, 1130,
1750
     1128, 1128, 1128, 1128, 1128, 1128, 1128,  298,  156,  854,
1751
      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
1752
1753
     1241, 1184,  418, 1184, 1241, 1241, 1241, 1069, 1241, 1184,
1754
      303,  301, 1241, 1241, 1241, 1241, 1070, 1204, 1204, 1204,
1755
     1204, 1204, 1204,  299, 1070,  296,  417,  156,  861,  416,
1756
      949,  949,  949,  949,  949,  949,  949,  949,  949,  949,
1757
      863,  861,  414,  950,  950,  950,  950,  950,  950,  950,
1758
      950,  950,  950,  951,  413, 1070,  405,  952,  952,  952,
1759
      952,  952,  952, 1072, 1073,  404, 1074, 1074, 1074, 1074,
1760
     1074, 1074, 1074, 1074, 1074, 1074, 1235, 1235, 1235, 1235,
1761
     1235, 1235,  403,  952,  952,  952,  952,  952,  952,  956,
1762
      957,  958,  956,  956,  956,  956,  956,  956,  956,  959,
1763
1764
      402,  401,  400,  960,  960,  960,  960,  960,  960, 1073,
1765
     1241, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
1766
     1074, 1119, 1161,  270,  262, 1119, 1161,  257,  258,  960,
1767
      960,  960,  960,  960,  960,  568,  342,  968,  968,  968,
1768
      968,  968,  968,  968,  968,  968,  968,  880,  252, 1120,
1769
     1162,  967,  967,  967,  967,  967,  967,  252, 1134, 1135,
1770
     1136, 1134, 1134, 1134, 1134, 1134, 1134, 1134,  246, 1083,
1771
      314, 1084, 1084, 1084, 1084, 1084, 1084,  967,  967,  967,
1772
      967,  967,  967,  568,  342,  969,  969,  969,  969,  969,
1773
      969,  969,  969,  969,  969,  299,  204,  239,  156,  970,
1774
1775
      970,  970,  970,  970,  970, 1161,  387, 1241,  299, 1161,
1776
     1071, 1159,  379,  565,  565, 1159,  378, 1071, 1071,  565,
1777
      377, 1071,  376,  375,  156,  970,  970,  970,  970,  970,
1778
      970,  155,  370, 1162,  155, 1071, 1071, 1071,  369, 1160,
1779
      155,  155,  368,  367,  155,  155,  366,  155,  155,  155,
1780
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1781
      280,  365,  185,  155,  185,  185,  185,  185,  185,  185,
1782
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1783
      185,  185,  185,  185,  185,  185,  185,  156,  155,  975,
1784
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1785
1786
      155,  155,  155,  155,  155,  155,  155,  269,  356,  355,
1787
      354,  269,  280,  280,  280,  280,  280,  280,  280,  280,
1788
      280,  280,  353,  269,  352,  351,  280,  280,  280,  280,
1789
      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1790
      280,  280,  280, 1001,  280,  280,  280,  280,  280,  350,
1791
      349,  282,  269,  269,  269,  269,  269,  269,  269,  269,
1792
      269,  269,  269,  269,  269,  269,  269,  269,  269,  925,
1793
      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
1794
     1145,  348, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
1795
     1146, 1146, 1145,  347, 1147, 1147, 1147, 1147, 1147, 1147,
1796
1797
     1147, 1147, 1147, 1147,  182,  155,  182,  299,  925,  926,
1798
      926,  926,  926,  926,  926,  926,  926,  926,  926, 1145,
1799
      272, 1148, 1148, 1148, 1148, 1148, 1149, 1146, 1146, 1146,
1800
     1146, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
1801
     1111,  170,  168,  161,  159,  156,  299,  298, 1187, 1187,
1802
      298,  323, 1187, 1187,  322,  321,  298,  298,  320,  319,
1803
      298,  298,  318,  298,  298,  298,  314,  314,  314,  314,
1804
      314,  314,  314,  314,  314,  314, 1188, 1188,  314,  298,
1805
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1806
      314,  314,  314,  314,  314,  314,  314, 1011,  314,  314,
1807
1808
      314,  314,  314,  299,  298,  314,  298,  298,  298,  298,
1809
      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
1810
      298,  298,  298, 1017,  303, 1018, 1018, 1018, 1018, 1018,
1811
     1018, 1018, 1018, 1018, 1018,  861,  299, 1152, 1152, 1152,
1812
     1152, 1152, 1152,  296,  290,  289,  288, 1103, 1155, 1155,
1813
     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,  666,  666,
1814
      287,  286,  156, 1017,  666, 1019, 1019, 1019, 1019, 1019,
1815
     1019, 1019, 1019, 1019, 1019, 1241,  285, 1154, 1154, 1154,
1816
     1154, 1154, 1154, 1154, 1154, 1154, 1154,  342, 1112, 1112,
1817
     1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,  668,  668,
1818
1819
      280,  258,  156, 1017,  668, 1020, 1020, 1020, 1020, 1020,
1820
     1021, 1022, 1022, 1022, 1022,  342, 1112, 1112, 1112, 1112,
1821
     1112, 1112, 1112, 1112, 1112, 1112, 1127, 1127, 1127, 1127,
1822
     1127, 1127, 1127, 1127, 1127, 1127,  252,  246,  669,  669,
1823
      158,  239,  156, 1017,  669, 1022, 1022, 1022, 1018, 1018,
1824
     1018, 1018, 1018, 1018, 1018, 1127, 1127, 1127, 1127, 1127,
1825
     1127, 1127, 1127, 1127, 1127, 1165,  158, 1166, 1166, 1166,
1826
     1166, 1166, 1166, 1166, 1166, 1166, 1166,  197,  768,  768,
1827
      232,  194,  156,  861,  768, 1030, 1030, 1030, 1030, 1030,
1828
     1030, 1030, 1030, 1030, 1030,  951,  861,  185, 1031, 1031,
1829
1830
     1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1032,  224,
1831
      222,  200, 1033, 1033, 1033, 1033, 1033, 1033, 1165,  199,
1832
     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
1833
     1145,  196, 1146, 1146, 1146, 1146, 1146, 1146, 1033, 1033,
1834
     1033, 1033, 1033, 1033, 1037, 1038, 1039, 1037, 1037, 1037,
1835
     1037, 1037, 1037, 1037, 1040,  195,  192,  182, 1041, 1041,
1836
     1041, 1041, 1041, 1041, 1165,  170, 1168, 1168, 1168, 1168,
1837
     1168, 1169, 1166, 1166, 1166, 1166, 1165,  159, 1166, 1166,
1838
     1166, 1166, 1166, 1166, 1041, 1041, 1041, 1041, 1041, 1041,
1839
      568,  342, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
1840
1841
     1047, 1047, 1083,  158, 1084, 1084, 1084, 1084, 1084, 1084,
1842
     1084, 1084, 1084, 1084,  156, 1159, 1241, 1241, 1140, 1159,
1843
     1141, 1141, 1141, 1141, 1141, 1141, 1161, 1241, 1241, 1241,
1844
     1161, 1177, 1178, 1179, 1177, 1177, 1177, 1177, 1177, 1177,
1845
     1177,  299, 1083, 1160, 1085, 1085, 1085, 1085, 1085, 1085,
1846
     1085, 1085, 1085, 1085, 1162, 1241, 1211,  156, 1212, 1212,
1847
     1212, 1212, 1212, 1212,  314,  769,  769, 1241,  156, 1241,
1848
     1241,  769,  770,  770,  282,  314, 1241,  282,  770,  282,
1849
     1241,  299, 1083, 1241, 1086, 1086, 1086, 1086, 1086, 1087,
1850
     1088, 1088, 1088, 1088, 1180, 1181, 1182, 1180, 1180, 1180,
1851
1852
     1180, 1180, 1180, 1180, 1145, 1241, 1146, 1146, 1146, 1146,
1853
     1146, 1146, 1146, 1146, 1146, 1146, 1241, 1241, 1241, 1187,
1854
     1241,  299, 1083, 1187, 1088, 1088, 1088, 1084, 1084, 1084,
1855
     1084, 1084, 1084, 1084, 1145, 1241, 1146, 1146, 1146, 1146,
1856
     1146, 1146, 1146, 1146, 1146, 1146,  861, 1188, 1185, 1185,
1857
     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1241, 1241,
1858
     1241,  299, 1017, 1241, 1018, 1018, 1018, 1018, 1018, 1018,
1859
     1018, 1018, 1018, 1018, 1241, 1241,  185, 1193, 1194, 1195,
1860
     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1165, 1241, 1166,
1861
     1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1241,
1862
1863
     1241,  156, 1017, 1241, 1018, 1018, 1018, 1018, 1018, 1018,
1864
     1018, 1018, 1018, 1018, 1165, 1241, 1166, 1166, 1166, 1166,
1865
     1166, 1166, 1166, 1166, 1166, 1166, 1241, 1241, 1241, 1241,
1866
     1241, 1196, 1197, 1198, 1196, 1196, 1196, 1196, 1196, 1196,
1867
     1196,  156,  861, 1241, 1101, 1101, 1101, 1101, 1101, 1101,
1868
     1101, 1101, 1101, 1101, 1032,  861, 1241, 1102, 1102, 1102,
1869
     1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,  299, 1241,
1870
     1241, 1104, 1104, 1104, 1104, 1104, 1104, 1171, 1241, 1172,
1871
     1172, 1172, 1172, 1172, 1172, 1187,  859,  859, 1241, 1187,
1872
      860,  860,  859, 1241, 1241, 1241,  860, 1104, 1104, 1104,
1873
1874
     1104, 1104, 1104, 1108, 1109, 1110, 1108, 1108, 1108, 1108,
1875
     1108, 1108, 1108, 1188, 1241, 1241,  299, 1111, 1111, 1111,
1876
     1111, 1111, 1111, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
1877
     1204, 1204, 1204, 1241,  314,  944,  944, 1241, 1241, 1241,
1878
     1241,  944, 1241, 1111, 1111, 1111, 1111, 1111, 1111, 1083,
1879
     1241, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
1880
     1084, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
1881
     1205, 1206, 1206, 1206, 1206, 1206, 1207, 1204, 1204, 1204,
1882
     1204, 1028, 1028, 1241, 1099, 1099, 1241, 1028,  299, 1083,
1883
     1099, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
1884
1885
     1084, 1211, 1241, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
1886
     1212, 1212, 1212, 1211, 1241, 1213, 1213, 1213, 1213, 1213,
1887
     1213, 1213, 1213, 1213, 1213, 1241, 1241, 1241,  299, 1140,
1888
     1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
1889
     1141, 1211, 1241, 1214, 1214, 1214, 1214, 1214, 1215, 1212,
1890
     1212, 1212, 1212, 1221, 1222, 1223, 1221, 1221, 1221, 1221,
1891
     1221, 1221, 1221, 1241, 1150, 1150, 1241, 1241,  156, 1140,
1892
     1150, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
1893
     1142, 1241, 1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200,
1894
      156, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
1895
1896
     1204, 1183, 1183, 1241, 1241, 1241, 1241, 1183,  156, 1140,
1897
     1241, 1143, 1143, 1143, 1143, 1143, 1144, 1141, 1141, 1141,
1898
     1141,  156, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
1899
     1204, 1204, 1225, 1226, 1227, 1225, 1225, 1225, 1225, 1225,
1900
     1225, 1225, 1241, 1241, 1241, 1241, 1241, 1241,  156,  861,
1901
     1241, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
1902
     1152, 1103,  861, 1241, 1153, 1153, 1153, 1153, 1153, 1153,
1903
     1153, 1153, 1153, 1153, 1241, 1241, 1241, 1241, 1154, 1154,
1904
     1154, 1154, 1154, 1154, 1211, 1241, 1212, 1212, 1212, 1212,
1905
     1212, 1212, 1212, 1212, 1212, 1212, 1241, 1241, 1241, 1241,
1906
1907
     1241, 1241, 1241, 1241, 1154, 1154, 1154, 1154, 1154, 1154,
1908
     1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
1909
     1172, 1172, 1211, 1241, 1212, 1212, 1212, 1212, 1212, 1212,
1910
     1212, 1212, 1212, 1212, 1228, 1229, 1230, 1228, 1228, 1228,
1911
     1228, 1228, 1228, 1228, 1241, 1241, 1241, 1241, 1241,  299,
1912
     1171, 1241, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
1913
     1173, 1173, 1241, 1216, 1241, 1217, 1217, 1217, 1217, 1217,
1914
     1217,  299, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1915
     1231, 1231, 1241, 1231, 1231, 1231, 1231, 1231, 1231,  299,
1916
     1171, 1241, 1174, 1174, 1174, 1174, 1174, 1175, 1172, 1172,
1917
1918
     1172, 1172,  299, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1919
     1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
1920
      156, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1921
     1140, 1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
1922
     1141, 1141, 1241, 1241, 1241, 1241, 1241,  156, 1232, 1232,
1923
     1232, 1232, 1232, 1233, 1231, 1231, 1231, 1231, 1235, 1235,
1924
     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1241,  156,
1925
     1140, 1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
1926
     1141, 1141, 1241, 1241, 1241,  156, 1225, 1225, 1225, 1225,
1927
     1225, 1225, 1225, 1225, 1225, 1225, 1236, 1236, 1236, 1236,
1928
1929
     1236, 1237, 1235, 1235, 1235, 1235, 1241, 1241, 1241,  156,
1930
     1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
1931
     1172, 1172, 1241, 1241, 1241, 1238, 1238, 1238, 1238, 1238,
1932
     1238, 1238, 1238, 1238, 1238, 1228, 1228, 1228, 1228, 1228,
1933
     1228, 1228, 1228, 1228, 1228, 1241, 1241, 1241, 1241,  299,
1934
     1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
1935
     1172, 1172,  299, 1241, 1241, 1238, 1238, 1238, 1238, 1238,
1936
     1238, 1241,  299, 1239, 1239, 1239, 1239, 1239, 1240, 1238,
1937
     1238, 1238, 1238, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1938
     1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
1939
1940
     1200, 1200,  299, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1941
      299, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1942
     1231, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1943
     1199, 1241, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
1944
     1201, 1201, 1241, 1241, 1241, 1241, 1241, 1241,  156, 1235,
1945
     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1238,
1946
     1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,  156,
1947
     1199, 1241, 1202, 1202, 1202, 1202, 1202, 1203, 1200, 1200,
1948
     1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1949
     1241, 1241, 1241, 1241, 1241, 1241,  299, 1241, 1241, 1241,
1950
1951
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1952
     1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
1953
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1954
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1955
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1956
     1216, 1241, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
1957
     1218, 1218, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1958
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1959
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1960
     1216, 1241, 1219, 1219, 1219, 1219, 1219, 1220, 1217, 1217,
1961
1962
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1963
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1964
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1965
     1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
1966
     1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1967
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1968
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1969
     1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
1970
     1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1971
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1972
1973
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1974
     1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
1975
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1976
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1977
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1978
     1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
1979
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1980
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1981
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1982
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
1983
1984
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
1985
       77,   84,   84,   84,   84,   84,   84,   84,   84,   84,
1986
       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
1987
       84,   84,   40,   40,   40,   40,   40,   40,   40,   40,
1988
       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1989
       40,   40,   40,   95,   95,   95,   95,   95,   95,   95,
1990
       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
1991
       95,   95,   95,   95,  102,  102,  102,  102,  102,  102,
1992
      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
1993
      102,  102,  102,  102,  102,  129,  129,  129,  129,  129,
1994
1995
      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
1996
      129,  129,  129,  129,  129,  129,  155, 1241, 1241,  155,
1997
     1241, 1241, 1241,  155, 1241,  155, 1241,  155,  155,  155,
1998
     1241, 1241,  155,  155,  155,  155,  155,  160,  160,  160,
1999
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
2000
      160,  160,  160,  160,  160,  160,  160,  160,  165, 1241,
2001
     1241,  165, 1241, 1241,  165,  165, 1241,  165, 1241,  165,
2002
      165,  165,  165, 1241,  165,  165,  165,  165,  165,  169,
2003
     1241, 1241,  169, 1241, 1241, 1241,  169, 1241,  169, 1241,
2004
      169,  169,  169, 1241, 1241,  169,  169,  169,  169,  169,
2005
2006
      171, 1241, 1241,  171,  171,  171, 1241,  171,  171,  171,
2007
     1241,  171,  171,  171, 1241, 1241,  171,  171,  171,  171,
2008
      171,  207,  207, 1241,  207,  207,  207, 1241,  207,  207,
2009
      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
2010
      207,  207,  229, 1241, 1241,  229,  229,  229, 1241,  229,
2011
      229,  229, 1241,  229,  229,  229, 1241, 1241,  229,  229,
2012
      229,  229,  229,  233,  233, 1241,  233,  233,  233, 1241,
2013
      233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
2014
      233,  233,  233,  233,  238, 1241, 1241,  238,  238,  238,
2015
     1241,  238,  238,  238, 1241,  238,  238,  238, 1241,  238,
2016
2017
      238, 1241,  238,  238,  238,  244,  244, 1241,  244,  244,
2018
      244, 1241, 1241,  244,  244,  244,  244,  244,  244,  244,
2019
      244,  244, 1241,  244,  244,  244,  247,  247,  247,  247,
2020
      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
2021
      247,  247,  247,  247,  247,  247,  247,  251, 1241, 1241,
2022
      251,  251, 1241, 1241,  251,  251,  251, 1241,  251,  251,
2023
      251,  251, 1241,  251,  251,  251,  251,  251,  255,  255,
2024
      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
2025
      255,  255,  255,  255,  255,  255,  255,  255,  255,  257,
2026
      257, 1241,  257,  257, 1241,  257,  257,  257,  257,  257,
2027
2028
      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
2029
      264, 1241, 1241,  264, 1241, 1241,  264,  264, 1241,  264,
2030
     1241,  264,  264,  264,  264, 1241,  264,  264,  264,  264,
2031
      264,  268, 1241, 1241,  268, 1241, 1241, 1241,  268, 1241,
2032
      268, 1241,  268,  268,  268, 1241,  268,  268,  268,  268,
2033
      268,  268,  271, 1241, 1241,  271,  271,  271, 1241,  271,
2034
      271,  271, 1241,  271,  271,  271, 1241,  271,  271,  271,
2035
      271,  271,  271,  208,  208, 1241,  208,  208,  208, 1241,
2036
      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
2037
      208,  208,  208,  208,  295, 1241, 1241, 1241,  295,  295,
2038
2039
      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
2040
      295,  295,  295,  295,  295,  298, 1241, 1241,  298, 1241,
2041
     1241, 1241,  298, 1241,  298, 1241,  298,  298,  298, 1241,
2042
     1241,  298,  298,  298,  298,  298,  300, 1241, 1241,  300,
2043
     1241, 1241,  300,  300, 1241,  300, 1241,  300,  300,  300,
2044
      300, 1241,  300,  300,  300,  300,  300,  302, 1241, 1241,
2045
      302, 1241, 1241, 1241,  302, 1241,  302, 1241,  302,  302,
2046
      302, 1241, 1241,  302,  302,  302,  302,  302,  304, 1241,
2047
     1241,  304,  304,  304, 1241,  304,  304,  304, 1241,  304,
2048
      304,  304, 1241, 1241,  304,  304,  304,  304,  304,  326,
2049
2050
      326, 1241,  326,  326,  326, 1241,  326,  326,  326,  326,
2051
      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
2052
      155, 1241, 1241,  155, 1241, 1241, 1241,  155, 1241,  155,
2053
     1241,  155,  155,  155, 1241, 1241,  155,  155,  155,  155,
2054
      155,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2055
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2056
      331,  331,  333,  333, 1241,  333,  333,  333,  333,  333,
2057
      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
2058
      333,  333,  333,  165, 1241, 1241,  165, 1241, 1241, 1241,
2059
      165, 1241,  165, 1241,  165,  165,  165, 1241, 1241,  165,
2060
2061
      165,  165,  165,  165,  169, 1241, 1241,  169, 1241, 1241,
2062
     1241,  169, 1241,  169, 1241,  169,  169,  169, 1241, 1241,
2063
      169,  169,  169,  169,  169,  171, 1241, 1241,  171,  171,
2064
      171, 1241,  171,  171,  171, 1241,  171,  171,  171, 1241,
2065
     1241,  171,  171,  171,  171,  171,  172, 1241, 1241,  172,
2066
      172,  172, 1241,  172,  172,  172, 1241,  172,  172,  172,
2067
     1241, 1241,  172,  172,  172,  172,  172,  343,  343,  343,
2068
     1241, 1241, 1241, 1241,  343,  207,  207, 1241,  207,  207,
2069
      207, 1241,  207,  207,  207,  207,  207,  207,  207,  207,
2070
      207,  207,  207,  207,  207,  207,  208,  208, 1241,  208,
2071
2072
      208,  208, 1241,  208,  208,  208,  208,  208,  208,  208,
2073
      208,  208,  208,  208,  208,  208,  208,  229, 1241, 1241,
2074
      229,  229,  229, 1241,  229,  229,  229, 1241,  229,  229,
2075
      229, 1241, 1241,  229,  229,  229,  229,  229,  230, 1241,
2076
     1241,  230,  230,  230, 1241,  230,  230,  230, 1241,  230,
2077
      230,  230, 1241, 1241,  230,  230,  230,  230,  230,  233,
2078
      233, 1241,  233,  233,  233, 1241,  233,  233,  233,  233,
2079
      233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
2080
      234,  234, 1241,  234,  234,  234, 1241,  234,  234,  234,
2081
      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
2082
2083
      234,  238, 1241, 1241,  238,  238,  238, 1241,  238,  238,
2084
      238, 1241,  238,  238,  238, 1241,  238,  238, 1241,  238,
2085
      238,  238,  244,  244, 1241,  244,  244,  244, 1241, 1241,
2086
      244,  244,  244,  244,  244,  244,  244,  244,  244, 1241,
2087
      244,  244,  244,  251, 1241, 1241,  251,  251, 1241, 1241,
2088
      251,  251,  251, 1241,  251,  251,  251,  251, 1241,  251,
2089
      251,  251,  251,  251,  257,  257, 1241,  257,  257, 1241,
2090
      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
2091
      257,  257,  257,  257,  257,  267, 1241, 1241,  267, 1241,
2092
     1241, 1241,  267, 1241,  267, 1241,  267,  267,  267, 1241,
2093
2094
     1241,  267,  267,  267,  267,  267,  268, 1241, 1241,  268,
2095
     1241, 1241, 1241,  268, 1241,  268, 1241,  268,  268,  268,
2096
     1241,  268,  268,  268,  268,  268,  268,  269, 1241, 1241,
2097
      269,  269, 1241,  269,  269, 1241, 1241,  269,  269,  271,
2098
     1241, 1241,  271,  271,  271, 1241,  271,  271,  271, 1241,
2099
      271,  271,  271, 1241,  271,  271,  271,  271,  271,  271,
2100
      295, 1241, 1241, 1241,  295,  295,  295,  295,  295,  295,
2101
      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
2102
      295,  298, 1241, 1241,  298, 1241, 1241, 1241,  298, 1241,
2103
      298, 1241,  298,  298,  298, 1241, 1241,  298,  298,  298,
2104
2105
      298,  298,  300, 1241, 1241,  300, 1241, 1241, 1241,  300,
2106
     1241,  300, 1241,  300,  300,  300, 1241, 1241,  300,  300,
2107
      300,  300,  300,  302, 1241, 1241,  302, 1241, 1241, 1241,
2108
      302, 1241,  302, 1241,  302,  302,  302, 1241, 1241,  302,
2109
      302,  302,  302,  302,  304, 1241, 1241,  304,  304,  304,
2110
     1241,  304,  304,  304, 1241,  304,  304,  304, 1241, 1241,
2111
      304,  304,  304,  304,  304,  305, 1241, 1241,  305,  305,
2112
      305, 1241,  305,  305,  305, 1241,  305,  305,  305, 1241,
2113
     1241,  305,  305,  305,  305,  305,  326,  326, 1241,  326,
2114
      326,  326, 1241,  326,  326,  326,  326,  326,  326,  326,
2115
2116
      326,  326,  326,  326,  326,  326,  326,  331,  331,  331,
2117
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2118
      331,  331,  331,  331,  331,  331,  331,  331,  445,  445,
2119
      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
2120
      445,  445,  445,  445,  445,  445,  445,  445,  445,  155,
2121
     1241, 1241,  155, 1241, 1241, 1241,  155, 1241,  155, 1241,
2122
      155,  155,  155, 1241, 1241,  155,  155,  155,  155,  155,
2123
      459,  459,  459, 1241, 1241, 1241, 1241,  459,  207,  207,
2124
     1241,  207,  207,  207, 1241,  207,  207,  207,  207,  207,
2125
      207,  207,  207,  207,  207,  207,  207,  207,  207,  234,
2126
2127
      234, 1241,  234,  234,  234,  234,  234,  234,  234,  234,
2128
      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
2129
      233,  233, 1241,  233,  233,  233, 1241,  233,  233,  233,
2130
      233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
2131
      233,  208,  208, 1241,  208,  208,  208, 1241,  208,  208,
2132
      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
2133
      208,  208,  567,  567,  567, 1241, 1241, 1241, 1241,  567,
2134
      465,  465,  465, 1241, 1241, 1241, 1241,  465,  331,  331,
2135
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2136
      331,  331,  331,  331,  331,  331,  331,  331,  331,  234,
2137
2138
      234, 1241,  234,  234,  234, 1241,  234,  234,  234,  234,
2139
      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
2140
      671,  671,  671, 1241, 1241, 1241, 1241,  671,  675,  675,
2141
      675,  675, 1241, 1241, 1241, 1241,  675,  782,  782,  782,
2142
     1241, 1241, 1241, 1241,  782,  783,  783,  783,  783, 1241,
2143
     1241, 1241, 1241,  783,  876,  876,  876, 1241, 1241, 1241,
2144
     1241,  876,  877,  877,  877,  877, 1241, 1241, 1241, 1241,
2145
      877,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2146
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2147
      331,  331,  269, 1241, 1241,  269,  269, 1241,  269,  269,
2148
2149
     1241, 1241,  269,  269,  298, 1241, 1241,  298, 1241, 1241,
2150
     1241,  298, 1241,  298, 1241,  298,  298,  298, 1241, 1241,
2151
      298,  298,  298,  298,  298,  948, 1241,  948,  948, 1241,
2152
     1241, 1241, 1241,  948,  966,  966,  966, 1241, 1241, 1241,
2153
     1241,  966,  967,  967,  967,  967, 1241, 1241, 1241, 1241,
2154
      967,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2155
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2156
      331,  331,  269, 1241, 1241,  269,  269, 1241,  269,  269,
2157
     1241, 1241,  269,  269,  298, 1241, 1241,  298, 1241, 1241,
2158
     1241,  298, 1241,  298, 1241,  298,  298,  298, 1241, 1241,
2159
2160
      298,  298,  298,  298,  298, 1029, 1241, 1029, 1029, 1241,
2161
     1241, 1241, 1241, 1029, 1045, 1045, 1045, 1241, 1241, 1241,
2162
     1241, 1045, 1046, 1046, 1046, 1241, 1241, 1241, 1241, 1241,
2163
     1046, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
2164
     1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
2165
     1060, 1060, 1065, 1065, 1241, 1065, 1065, 1065, 1065, 1065,
2166
     1241, 1065, 1241, 1065, 1065, 1065, 1241, 1241, 1065, 1065,
2167
     1065, 1065, 1065, 1071, 1071, 1241, 1071, 1071, 1071, 1071,
2168
     1071, 1241, 1071, 1241, 1071, 1071, 1071, 1241, 1241, 1071,
2169
     1071, 1071, 1071, 1071, 1100, 1241, 1100, 1100, 1241, 1241,
2170
2171
     1241, 1241, 1100, 1151, 1241, 1151, 1151, 1241, 1241, 1241,
2172
     1241, 1151, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
2173
     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
2174
     1189, 1189, 1189,   21, 1241, 1241, 1241, 1241, 1241, 1241,
2175
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2176
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2177
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2178
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2179
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2180
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2181
2182
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241
2183
    } ;
2184
2185
static const flex_int16_t yy_chk[9611] =
2186
    {   0,
2187
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2188
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2189
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2190
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2191
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2192
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2193
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2194
        1,    1,    1,    1,    1,    1,    2,   23,   43,   41,
2195
        2,   23,   43,    2,    5,    5,  375,    5,    5,    5,
2196
       41,    5,    6,    6,  375,    6,    6,    6,    5,    6,
2197
2198
        7,    7,   55,    7,    7,    7,    6,    7,    7,   29,
2199
        2,    2,    5,    5,   45,    2,   55,   49,   45,  502,
2200
        6,    6,   49,    2,   69,   45,    2,    3,   69,  116,
2201
       29,    3,   13,   13,    3,   13,   13,   13,   13,    5,
2202
      116,    3,  502,   44,    3,   52,   44,    6,   14,   14,
2203
       44,   14,   14,   14,   14,    7,   44,   29,    3,    3,
2204
       52,    3,   37,   37,   37,   37,   37,   37,   65,    3,
2205
      160,    3,  160,    3,    3,   46,    3,  448,   46,   46,
2206
      107,    8,    8,    3,    8,    8,    8,   13,    8,    8,
2207
       17,   17,   17,   17,   17,   17,   17,   65,   67,    3,
2208
2209
        4,  107,   67,   14,    4,   34,   34,    4,   59,   63,
2210
       34,   34,   67,   63,    4,   85,  448,    4,   59,   85,
2211
       18,   18,   18,   18,   18,   18,   18,   59,  107,   63,
2212
       34,    4,    4,   76,    4, 1238,    8,   91,   91,  128,
2213
       91,   91,    4,   76,    4,   17,    4,    4,  128,    4,
2214
       93,   93,   76,   93,   93,   34,    4,   36,   36,   36,
2215
       36,   36,   36,   36,   36,   36,   36,   60,  104,   97,
2216
       99,   60,    4,    9,    9,   18,    9,    9,    9,   58,
2217
        9,   58,   58,   58,   58,   58,   58,   58,   58,   58,
2218
       58,   62,  364,  364,   62,   97,   99,  117,   62,  183,
2219
2220
      117,   60,   60,  125,   62,  157,   60,  101,  101,  157,
2221
      101,  101,  103,  183,   60,  142,  103,   60,  104,  226,
2222
       62,  106,  106,  226,  106,  106,  142,  106,    9,  130,
2223
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
2224
        9,    9,    9,    9,    9,    9,    9,    9,   10,   10,
2225
      125,   10,   10,   10,   68,   10,  134,   68,   68,   68,
2226
       68,   68,   68,   68,   68,   68,   68,  103,  112,  112,
2227
      112,  112,  112,  112, 1234,   70,   70,  134,  205,  130,
2228
       70,   70,  111,  111,  111,  111,  111,  111,  111,  111,
2229
      111,  111,  139,  139,  139,  139,  139,  139,  132,  132,
2230
2231
       70,  132,  132,   10,  134,   10,   10,   10,   10,   10,
2232
       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
2233
       10,   10,   10,   11,   11,   70,   11,   11,   11,   11,
2234
       11,  143,  205,  331,  143,  331,   11,   11,   11,  126,
2235
      182,  126,  126,  126,  126,  126,  126,  126,  126,  126,
2236
      126,  182,   11,  132,  167,  228,  136,  136,  208,  228,
2237
     1231,  136,  136,  138,  138,  138,  138,  138,  138,  138,
2238
      138,  138,  138,  211,  222,  167,  211,  154,   11,   12,
2239
       12,  136,   12,   12,   12,   12,   12,  154, 1212,  212,
2240
      223,  222,   12,   12,   12,  212,  154,  203,  203,  245,
2241
2242
      203,  203,  167,  245,  223,  208,  136,  153,   12,  153,
2243
      153,  153,  153,  153,  153,  153,  153,  153,  153,  163,
2244
      163,  163,  163,  163,  163,  163,  163,  163,  163,  240,
2245
      240, 1185,  240,  240,   12,   15,   15,   15,   15,   15,
2246
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2247
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2248
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2249
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2250
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2251
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2252
2253
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2254
       15,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2255
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2256
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2257
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2258
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2259
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2260
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2261
       19,   19,   19,   19,   19,   19,   19,   28,  260,   28,
2262
      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
2263
2264
      221,   28,  807,  234,   28,   28,   28,   28,   28,   28,
2265
       28,   28,   28,   28,   35,  807,   35,   35,   35,   35,
2266
       35,   35,   35,   35,   35,   35,   35,  297, 1183,  224,
2267
       35,   35,   35,   35,   35,   35,  224,  452,  260,  324,
2268
      220,  156,  156,  156,  156,  156,  220,  221,  156,  156,
2269
      234,  262,  156,   35,  220,  262,   35,   35,   35,   35,
2270
       35,   35,   42,  237,  452,   42,  156,  156,  156,  237,
2271
      329,   42,   42,  329,  384,   42,   42,  297,   42,   42,
2272
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2273
       42,   42,  384,  324,   42,   42,   42,   42,   42,   42,
2274
2275
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2276
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2277
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2278
       42,   42,   42,   42,   42,   42,   42,   42,   47,   47,
2279
       47,   47,   47,   47,   47,   47,   47,   47,   47,  219,
2280
     1166,  219,   47,   47,   47,   47,   47,   47,  332,  393,
2281
      332,  259,   47,  393,  166,  259,   47,  166,  166,  166,
2282
      166,  166,  166,  166,  166,  166,  166,  386,   47,   47,
2283
       47,   47,   47,   47,   56,   56,  374,   56,   56,   56,
2284
       56,   56,  296,  386,   56,   56,  296,  330,   56,  171,
2285
2286
      171,  374, 1154,  330,  171,  171,  180,  180,  180,  180,
2287
      180,  180,   56,   56,   56,   57,  259,  219,  469,   57,
2288
       57,   57,  345,   57,  171,   57,   57,  345,  343,   57,
2289
      168,  168,  168,  168,  168,  469,  225,  168,  168,  343,
2290
      225,  168,  459,   57,   57,   57,  333,  296,  333,  171,
2291
      225,  264,  381,  459,  381,  168,  168,  168,  178,  178,
2292
      178,  178,  178,  178,  178,  178,  178,  178,  382,  460,
2293
       57,   61,  264,   61,  382,  170,  170,  170,  170,  170,
2294
      460,  385,  170,  170,  385,   61,  170,  567,   61,   61,
2295
       61,   61,   61,   61,   61,   61,   61,   61,  567,  264,
2296
2297
      170,  170,  170,  174,  174,  174,  174,  174,  174,  174,
2298
      174,  174,  174,  179,  179,  179,  179,  179,  179,  179,
2299
      179,  179,  179,  206,  206,  210,  206,  206,  210,  292,
2300
      292, 1153,  210,  210,  213,  492,   61,   75,  213,  392,
2301
      174,   75,   75,   75,  380,   75,  380,   75,   75,  196,
2302
      196,   75,  389,  196,  392,  196,  196,  416,  416,  196,
2303
      416,  196,  196, 1151,  492,   75,   75,   75,  213,  213,
2304
      229,  229,  415,  213,  443,  229,  229,  292,  206,  236,
2305
      210,  213,  236,  265,  213,  471,  236,  236,  445,  443,
2306
      445,  479,   75,   83,   83,  229,   83,   83,   83,  389,
2307
2308
       83,  479,  471,  380,  265,   83,  466,   83,  227,  227,
2309
      227,  227,  227,  227,  227,  227,  227,  227,  466,  415,
2310
      229,   83,   83,  232,  232, 1150,  446,  232,  446,  232,
2311
      232,  265,  468,  232,  236,  232,  248,  248,  483,  248,
2312
      248,  256,  256,  481,  256,  256,  472,  483,   83,   83,
2313
       92,  468,   92,  249,  249,  249,  249,  249,  249,  249,
2314
      249,  249,  249,  481,   92,  472,  489,   92,   92,   92,
2315
       92,   92,   92,   92,   92,   92,   92,  108,  261,  261,
2316
      108,  261,  261,  489,  470,  252,  108,  108,  470,  252,
2317
      108,  252,  252,  108,  108,  328,  256,  272,  328,  252,
2318
2319
     1146,  272,  328,  328,  272,  373,  373,  108,  373,  108,
2320
      528,  272,  470,  528,  252,  273,  273,  273,  273,  273,
2321
      273,  273,  273,  273,  273,  272,  272,  278,  278,  278,
2322
      278,  278,  278,  108,  108,  108,  109,  477,  802,  109,
2323
      373,  802,  109,  109,  486,  109,  109,  109,  109,  109,
2324
      328,  477,  109,  109,  266,  266,  266,  266,  456,  456,
2325
      456,  266,  266,  488,  486,  266,  109,  109,  109,  276,
2326
      276,  276,  276,  276,  276,  276,  276,  276,  276,  488,
2327
      266,  266,  277,  277,  277,  277,  277,  277,  277,  277,
2328
      277,  277,  109,  109,  109,  110,  504,  581,  110,  110,
2329
2330
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
2331
      110,  110,  581,  504,  110,  110,  110,  110,  110,  110,
2332
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
2333
      110,  110,  110,  110,  110,  110,  110,  473, 1139,  505,
2334
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
2335
      110,  110,  110,  110,  110,  110,  110,  113,  473,  113,
2336
      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
2337
      478,  476,  484,  113,  113,  113,  113,  113,  113,  476,
2338
      484,  270,  270,  270,  270,  270,  505,  491,  270,  270,
2339
      491,  478,  270,  312,  312,  312,  312,  312,  312,  113,
2340
2341
      113,  113,  113,  113,  113,  114,  270,  270,  270,  114,
2342
      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
2343
      114,  114,  491,  485,  114,  114,  114,  114,  114,  114,
2344
      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
2345
      114,  114,  114,  114,  114,  114,  114,  485, 1133,  114,
2346
      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
2347
      114,  114,  114,  114,  114,  114,  114,  118,  118,  118,
2348
      118,  118,  118,  118,  118,  118,  118,  118,  480,  537,
2349
      494,  118,  118,  118,  118,  118,  118,  494,  288,  288,
2350
      480,  118,  288,  482,  288,  288, 1117,  594,  288,  475,
2351
2352
      288,  442,  442,  475,  442,  594,  537,  118,  118,  118,
2353
      118,  118,  118,  137,  482,  137,  137,  137,  137,  137,
2354
      137,  137,  137,  137,  137,  137,  493,  475,  506,  137,
2355
      137,  137,  137,  137,  137,  506,  442,  474,  608,  556,
2356
      299,  299,  299,  299,  299,  503,  556,  299,  299,  474,
2357
      580,  299,  137,  533,  474,  137,  137,  137,  137,  137,
2358
      137,  140,  493,  517,  140,  299,  299,  299,  517,  580,
2359
      140,  140,  503,  608,  140,  140, 1116,  140,  140,  140,
2360
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2361
      140,  503,  533,  140,  140,  140,  140,  140,  140,  140,
2362
2363
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2364
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2365
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2366
      140,  140,  140,  140,  140,  140,  140,  144,  144,  144,
2367
      144,  144,  144,  144,  144,  144,  144,  144,  849,  555,
2368
      849,  144,  144,  144,  144,  144,  144,  553,  321,  321,
2369
      553,  144,  321, 1112,  321,  321,  304,  304,  321,  542,
2370
      321,  304,  304,  501,  542,  501,  597,  144,  144,  144,
2371
      144,  144,  144,  151,  151,  555,  151,  151,  151,  151,
2372
      151,  304,  553,  151,  151, 1100,  597,  151,  307,  307,
2373
2374
      307,  307,  307,  307,  307,  307,  307,  307,  587,  554,
2375
      585,  151,  151,  151,  152,  598,  304,  518,  152,  152,
2376
      152,  518,  152,  598,  152,  152,  587,  593,  152,  301,
2377
      301,  301,  301,  301,  585,  307,  301,  301,  554,  501,
2378
      301,  593,  152,  152,  152,  518,  586,  325,  325,  588,
2379
      325,  325,  586,  592,  301,  301,  301,  582,  596,  592,
2380
      303,  303,  303,  303,  303,  588,  919,  303,  303,  152,
2381
      173,  303,  596,  173,  173,  173,  173,  173,  582,  919,
2382
      173,  173,  605,  606,  173,  303,  303,  303,  310,  310,
2383
      310,  310,  310,  310,  310,  310,  310,  310,  173,  173,
2384
2385
      173,  175,  325,  175,  175,  175,  175,  175,  175,  175,
2386
      175,  175,  175,  175,  606,  605, 1099,  175,  175,  175,
2387
      175,  175,  175,  311,  311,  311,  311,  311,  311,  311,
2388
      311,  311,  311,  463,  463,  463,  463,  463,  463,  589,
2389
      175,  569,  569,  175,  175,  175,  175,  175,  175,  184,
2390
      601,  539,  184,  569,  609,  539,  692,  601,  184,  184,
2391
      609,  589,  184,  184,  692,  184,  184,  184,  184,  184,
2392
      184,  184,  184,  184,  184,  184,  184,  184,  184,  539,
2393
     1091,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2394
      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2395
2396
      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2397
      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2398
      184,  184,  184,  184,  184,  185,  185,  185,  185,  185,
2399
      185,  185,  185,  185,  185,  185, 1060,  659, 1060,  185,
2400
      185,  185,  185,  185,  185,  334,  334,  334,  334,  334,
2401
      334,  334,  334,  334,  334,  335,  335,  335,  335,  335,
2402
      335,  335,  335,  335,  335,  185,  185,  185,  185,  185,
2403
      185,  207,  659,  701,  521,  207,  207,  207,  521,  207,
2404
      387,  207,  207,  599,  387,  207,  451,  387,  451,  451,
2405
      451,  451,  451,  451,  387,  595,  600,  701, 1090,  207,
2406
2407
      207,  207,  521,  607,  599,  600,  603,  515,  387,  387,
2408
      394,  515,  394,  394,  394,  394,  394,  394,  394,  394,
2409
      394,  394,  616,  521,  595,  451,  207,  231,  616,  603,
2410
      231,  231,  231,  231,  231,  515,  607,  231,  231, 1082,
2411
      395,  231,  395,  395,  395,  395,  395,  395,  395,  395,
2412
      395,  395,  515,  660,  657,  231,  231,  231,  233,  660,
2413
      656,  516,  233,  233,  233,  516,  233,  662,  233,  233,
2414
      604,  396,  233,  396,  396,  396,  396,  396,  396,  396,
2415
      396,  396,  396,  571,  571,  657,  233,  233,  233,  516,
2416
      418,  855,  604,  656,  418,  571,  511,  418,  511,  511,
2417
2418
      511,  511,  511,  511,  418,  613,  662,  613,  516,  614,
2419
      615,  689,  658,  233,  268,  671,  813,  268,  418,  418,
2420
      813,  614,  615,  268,  268,  694,  671,  268,  689,  855,
2421
      268,  268,  447,  447,  447,  447,  447,  447,  447,  447,
2422
      447,  447,  743,  694,  268,  658,  268,  455,  455,  455,
2423
      455,  455,  455,  455,  455,  455,  455,  455,  462,  462,
2424
      462,  462,  462,  462,  462,  462,  462,  462,  688,  447,
2425
      268,  268,  268,  271,  688,  697,  271,  675,  613,  271,
2426
      271,  743,  271,  271,  271,  271,  271, 1081,  675,  271,
2427
      271,  465,  697,  465,  465,  465,  465,  465,  465,  465,
2428
2429
      465,  465,  465,  271,  271,  271,  507,  507,  507,  507,
2430
      507,  507,  507,  507,  507,  507,  509,  702,  509,  509,
2431
      509,  509,  509,  509,  509,  509,  509,  509,  693,  271,
2432
      271,  271,  274,  702,  274,  274,  274,  274,  274,  274,
2433
      274,  274,  274,  274,  274,  695, 1080,  693,  274,  274,
2434
      274,  274,  274,  274,  510,  699,  510,  510,  510,  510,
2435
      510,  510,  510,  510,  510,  510,  695,  699, 1209,  543,
2436
      676,  676,  699,  543,  274,  274,  274,  274,  274,  274,
2437
      279,  704,  676, 1209,  279,  279,  279,  279,  279,  279,
2438
      279,  279,  279,  279,  279,  279,  279,  543,  704,  279,
2439
2440
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
2441
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
2442
      279,  279,  800,  800,  279,  279,  279,  279,  279,  279,
2443
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
2444
      279,  279,  280,  280,  280,  280,  280,  280,  280,  280,
2445
      280,  280,  280,  677,  677,  698,  280,  280,  280,  280,
2446
      280,  280,  522,  703,  808,  677,  522,  808,  519,  520,
2447
      712,  703,  519,  520,  698,  523, 1078,  679,  679,  523,
2448
      707,  712,  280,  280,  280,  280,  280,  280,  306,  679,
2449
      522,  306,  306,  306,  306,  306,  519,  520,  306,  306,
2450
2451
      522,  707,  306,  523,  519,  524,  525,  731,  754,  524,
2452
      525,  520,  731,  754,  717,  523,  306,  306,  306,  308,
2453
     1074,  308,  308,  308,  308,  308,  308,  308,  308,  308,
2454
      308,  308,  717,  524,  525,  308,  308,  308,  308,  308,
2455
      308,  716,  812,  583,  590,  526,  622,  583,  590,  526,
2456
      622,  806,  716,  524,  812,  525,  806,  718,  308,  803,
2457
      803,  308,  308,  308,  308,  308,  308,  313,  718, 1052,
2458
      313,  583,  590,  526,  622,  796,  313,  313,  932,  932,
2459
      313,  313,  796,  313,  313,  313,  313,  313,  313,  313,
2460
      313,  313,  313,  313,  313,  313,  313,  526,  622,  313,
2461
2462
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2463
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2464
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2465
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2466
      313,  313,  313,  314,  314,  314,  314,  314,  314,  314,
2467
      314,  314,  314,  314,  764,  782,  891,  314,  314,  314,
2468
      314,  314,  314,  527,  891,  764,  782,  527,  532,  532,
2469
      532,  532,  532,  532,  532,  532,  532,  532,  691,  715,
2470
      821,  715,  691,  314,  314,  314,  314,  314,  314,  326,
2471
      783,  527,  835,  326,  326,  326,  834,  326,  821,  326,
2472
2473
      326,  783,  834,  326,  835,  532,  691,  527, 1046,  574,
2474
      574,  574,  574,  574,  574,  574,  574,  326,  326,  326,
2475
      536,  574,  536,  536,  536,  536,  536,  536,  562,  562,
2476
      562,  562,  562,  562,  562,  562,  562,  562,  562,  715,
2477
      809,  826, 1029,  809,  326,  336,  838,  336,  336,  336,
2478
      336,  336,  336,  336,  336,  336,  336,  838,  826,  536,
2479
      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
2480
      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
2481
      825,  839, 1028,  825,  336,  337,  839,  337,  337,  337,
2482
      337,  337,  337,  337,  337,  337,  337,  576,  576,  576,
2483
2484
      576,  576,  576,  576,  576,  576,  576,  577,  577,  577,
2485
      577,  577,  577,  661,  661,  661,  661,  661,  661,  661,
2486
      661,  661,  661, 1024,  337,  338,  848,  338,  338,  338,
2487
      338,  338,  338,  338,  338,  338,  338,  579,  848,  579,
2488
      579,  579,  579,  579,  579,  579,  579,  579,  579,  617,
2489
      661,  617,  617,  617,  617,  617,  617,  617,  617,  617,
2490
      617,  824,  926,  824,  338,  339,  339,  339,  339,  339,
2491
      339,  339,  339,  339,  339,  339,  969,  969, 1013,  339,
2492
      339,  339,  339,  339,  339,  618,  862,  618,  618,  618,
2493
      618,  618,  618,  618,  618,  618,  618,  801,  862,  845,
2494
2495
      926, 1006,  339,  845,  801,  339,  339,  339,  339,  339,
2496
      339,  342,  342,  342,  342,  342,  342,  342,  342,  342,
2497
      342,  342,  824, 1005,  896,  342,  342,  342,  342,  342,
2498
      342,  619,  827,  619,  619,  619,  619,  619,  619,  619,
2499
      619,  619,  619,  628,  850,  896, 1003,  628,  850,  902,
2500
      827,  342,  342,  342,  342,  342,  342,  344,  344,  344,
2501
      344,  344,  344,  344,  344,  344,  344,  344,  344,  994,
2502
      902,  628,  344,  344,  344,  344,  344,  344,  623,  628,
2503
      632,  626,  623,  634,  632,  626,  672,  634,  672,  672,
2504
      672,  672,  672,  672,  672,  672,  672,  672,  344,  344,
2505
2506
      344,  344,  344,  344,  346,  852,  623,  346,  632,  626,
2507
      852,  634,  623,  346,  346,  626,  632,  346,  346, 1048,
2508
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2509
      346,  346,  346,  346,  634, 1048,  346,  346,  346,  346,
2510
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2511
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2512
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2513
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2514
      347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
2515
      347,  784,  784,  990,  347,  347,  347,  347,  347,  347,
2516
2517
      627,  629,  847,  784,  627,  629,  864,  630,  847,  935,
2518
      633,  630,  935,  631,  633,  696,  851,  631,  864,  696,
2519
      347,  347,  347,  347,  347,  347,  371,  851,  627,  629,
2520
      371,  371,  371,  853,  371,  630,  371,  371,  633,  876,
2521
      371,  631,  627,  696,  893,  633,  877,  785,  785,  630,
2522
      876,  853,  893,  989,  371,  371,  371,  877,  629,  785,
2523
      665,  631,  665,  665,  665,  665,  665,  665,  673,  897,
2524
      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
2525
      897,  371,  372,  787,  787,  889,  372,  372,  372,  372,
2526
      372,  889,  372,  372, 1004,  787,  372, 1004,  674,  665,
2527
2528
      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
2529
      372,  372,  372,  678,  678,  678,  678,  678,  678,  678,
2530
      678,  678,  678,  682,  682,  682,  682,  682,  682,  682,
2531
      682,  962,  894,  878,  878,  682,  700,  372,  390,  894,
2532
      700,  892,  390,  390,  390,  878,  390,  892,  390,  390,
2533
      934, 1018,  390,  684,  684,  684,  684,  684,  684,  684,
2534
      684,  684,  684,  934,  700,  966,  390,  390,  390,  685,
2535
      685,  685,  685,  685,  685,  687,  966,  687,  687,  687,
2536
      687,  687,  687,  687,  687,  687,  687,  705,  706,  898,
2537
     1018,  705,  706,  390,  391,  970,  970,  898,  391,  391,
2538
2539
      391,  391,  391,  907,  391,  391,  949,  723,  391,  723,
2540
      723,  723,  723,  723,  723,  705,  706,  993,  949,  993,
2541
      907,  948,  391,  391,  391,  719,  719,  719,  719,  719,
2542
      719,  719,  719,  719,  719,  721,  950,  721,  721,  721,
2543
      721,  721,  721,  721,  721,  721,  721,  944,  950,  391,
2544
      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
2545
      397, 1015, 1015, 1224,  397,  397,  397,  397,  397,  397,
2546
      722,  952,  722,  722,  722,  722,  722,  722,  722,  722,
2547
      722,  722,  993,  952, 1224,  724,  879,  879,  967,  724,
2548
      397,  397,  397,  397,  397,  397,  399, 1186,  879,  967,
2549
2550
      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
2551
      399,  399,  399,  724, 1186,  399,  399,  399,  399,  399,
2552
      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
2553
      399,  399,  399,  399,  399,  399,  399,  399, 1047, 1047,
2554
      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
2555
      399,  399,  399,  399,  399,  399,  399,  399,  400,  400,
2556
      400,  400,  400,  400,  400,  400,  400,  400,  400, 1063,
2557
      939, 1063,  400,  400,  400,  400,  400,  400,  771,  771,
2558
      771,  771,  771,  771,  771,  771,  771,  771,  725,  728,
2559
      729,  730,  725,  728,  729,  730,  977,  936,  400,  400,
2560
2561
      400,  400,  400,  400,  419,  977,  419,  419,  419,  419,
2562
      419,  419,  419,  419,  419,  419,  725,  728,  729,  730,
2563
      974,  931,  992,  992,  725,  992,  992, 1022,  732,  733,
2564
      734,  974,  732,  733,  734,  729,  735,  736,  730, 1014,
2565
      735,  736, 1014,  419,  420,  921,  420,  420,  420,  420,
2566
      420,  420,  420,  420,  420,  420,  732,  733,  734,  881,
2567
      881,  979,  920,  983,  735,  736, 1022,  917,  747,  979,
2568
      983,  881,  747,  746,  734,  746,  746,  746,  746,  746,
2569
      746,  733, 1016,  420,  421, 1016,  421,  421,  421,  421,
2570
      421,  421,  421,  421,  421,  421,  747, 1092, 1092,  742,
2571
2572
      742,  742,  742,  742,  742,  742,  742,  742,  742,  751,
2573
      755,  758,  746,  751,  755,  758,  916, 1056,  759, 1189,
2574
      911, 1189,  759,  421,  422, 1056,  422,  422,  422,  422,
2575
      422,  422,  422,  422,  422,  422,  742,  751,  755,  758,
2576
      422,  422,  422,  422,  422,  422,  759,  773,  773,  773,
2577
      773,  773,  773,  773,  773,  773,  773,  774,  774,  774,
2578
      774,  774,  774, 1158,  909,  905,  422,  422,  422,  422,
2579
      422,  422,  424,  424,  424,  424,  424,  424,  424,  424,
2580
      424,  424,  975, 1158,  904,  903,  424,  424,  424,  424,
2581
      424,  424,  776,  975,  776,  776,  776,  776,  776,  776,
2582
2583
      776,  776,  776,  776,  781, 1084,  781,  781,  781,  781,
2584
      781,  781,  424,  424,  424,  424,  424,  424,  440,  968,
2585
      968,  901,  440,  440,  440, 1192,  440, 1192,  440,  440,
2586
      860,  968,  440,  777,  777,  777,  777,  777,  777,  777,
2587
      777,  777,  777,  859, 1084,  846,  440,  440,  440,  779,
2588
     1030,  779,  779,  779,  779,  779,  779,  779,  779,  779,
2589
      779,  780, 1030,  780,  780,  780,  780,  780,  780,  780,
2590
      780,  780,  780,  440,  441,  982,  984, 1365,  441,  441,
2591
      441,  441,  441, 1365,  441,  441,  982,  984,  441,  786,
2592
      786,  786,  786,  786,  786,  786,  786,  786,  786,  840,
2593
2594
      837, 1031,  441,  441,  441,  790,  790,  790,  790,  790,
2595
      790,  790,  790, 1031,  836,  833, 1033,  790,  792,  792,
2596
      792,  792,  792,  792,  792,  792,  792,  792, 1033,  441,
2597
      449,  832,  449,  449,  449,  449,  449,  449,  449,  449,
2598
      449,  449,  793,  793,  793,  793,  793,  793,  795,  823,
2599
      795,  795,  795,  795,  795,  795,  795,  795,  795,  795,
2600
      798,  804,  810,  816,  798,  804,  810,  816, 1088,  449,
2601
      450,  991,  450,  450,  450,  450,  450,  450,  450,  450,
2602
      450,  450,  870,  870,  870,  870,  870,  870,  798,  804,
2603
      810,  816,  822,  820,  991,  818,  991,  991, 1049,  818,
2604
2605
      887,  887,  887,  887,  887,  887,  815, 1088, 1049,  450,
2606
      461,  461,  461,  461,  461,  461,  461,  461,  461,  461,
2607
      461,  461,  461,  818,  814,  778,  461,  461,  461,  461,
2608
      461,  461,  828,  828,  828,  828,  828,  828,  828,  828,
2609
      828,  828,  828,  918, 1058,  906,  906,  918,  906,  906,
2610
      770, 1058,  461,  461,  461,  461,  461,  461,  464,  464,
2611
      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
2612
      908,  918,  769,  464,  464,  464,  464,  464,  464,  829,
2613
      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
2614
      768,  763,  918,  908,  762,  908,  908, 1141, 1045,  464,
2615
2616
      464,  464,  464,  464,  464,  467,  906,  980,  467, 1045,
2617
      761,  980,  760,  757,  467,  467,  756,  753,  467,  467,
2618
      908,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2619
      467,  467,  467,  467,  467,  980, 1141,  467,  467,  467,
2620
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2621
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2622
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2623
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2624
      467,  512,  512,  512,  512,  512,  512,  512,  512,  512,
2625
      512,  512, 1260, 1260, 1260,  512,  512,  512,  512,  512,
2626
2627
      512,  830,  830,  830,  830,  830,  830,  830,  830,  830,
2628
      830,  830,  914,  914,  914,  914,  914,  914,  914,  752,
2629
     1057,  512,  512,  512,  512,  512,  512,  513, 1057,  750,
2630
     1172,  513,  513,  513,  513,  513,  513,  513,  513,  513,
2631
      513,  513,  513,  513,  749,  748,  513,  513,  513,  513,
2632
      513,  513,  513,  513,  513,  513,  513,  513,  513,  513,
2633
      513,  513,  513,  513,  513,  513,  513,  513,  513, 1172,
2634
      741,  513,  513,  513,  513,  513,  513,  513,  513,  513,
2635
      513,  513,  513,  513,  513,  513,  513,  513,  513,  514,
2636
     1200, 1217, 1101,  514,  854,  854,  854,  854,  854,  854,
2637
2638
      854,  854,  854,  854, 1101,  727, 1102,  514,  514,  514,
2639
      514,  514,  514,  514,  514,  514,  514,  514, 1102, 1123,
2640
      726,  514,  514,  514,  514,  514,  514, 1123,  720, 1200,
2641
     1217,  854,  858,  858,  858,  858,  858,  858,  858,  958,
2642
      958,  958,  958,  958,  958,  714,  713,  514,  514,  514,
2643
      514,  514,  514,  534,  711,  534,  534,  534,  534,  534,
2644
      534,  534,  534,  534,  534, 1061, 1061,  710, 1061, 1061,
2645
      858,  861,  861,  861,  861,  861,  861,  861,  861,  861,
2646
      861,  863,  863,  863,  863,  863,  863,  863,  863,  863,
2647
      863,  709,  534,  535, 1104,  535,  535,  535,  535,  535,
2648
2649
      535,  535,  535,  535,  535,  867, 1104,  867,  867,  867,
2650
      867,  867,  867, 1292, 1292, 1292, 1118,  867,  869,  869,
2651
      869,  869,  869,  869,  869,  869,  869,  869, 1118,  708,
2652
      985,  690,  535,  557,  985,  557,  557,  557,  557,  557,
2653
      557,  557,  557,  557,  557,  872,  669,  872,  872,  872,
2654
      872,  872,  872,  872,  872,  872,  872,  873,  985,  873,
2655
      873,  873,  873,  873,  873,  873,  873,  873,  873,  668,
2656
      987,  667,  557,  558,  987,  558,  558,  558,  558,  558,
2657
      558,  558,  558,  558,  558,  874,  666,  874,  874,  874,
2658
      874,  874,  874,  874,  874,  874,  874,  875,  987,  875,
2659
2660
      875,  875,  875,  875,  875,  875,  875,  875,  875,  655,
2661
      654,  653,  558,  559,  652,  559,  559,  559,  559,  559,
2662
      559,  559,  559,  559,  559,  880,  880,  880,  880,  880,
2663
      880,  880,  880,  880,  880,  884,  884,  884,  884,  884,
2664
      884,  884,  884,  651, 1064,  650, 1064,  884, 1157, 1157,
2665
     1157, 1157,  559,  572,  572,  572,  572,  572,  572,  572,
2666
      572,  572,  572,  572,  572,  572,  649,  648,  647,  572,
2667
      572,  572,  572,  572,  572,  886,  886,  886,  886,  886,
2668
      886,  886,  886,  886,  886,  910,  910,  910,  910,  910,
2669
      910,  910,  910,  910,  910,  572,  572,  572,  572,  572,
2670
2671
      572,  575,  575,  575,  575,  575,  575,  575,  575,  575,
2672
      575,  575,  575,  575, 1064,  646,  645,  575,  575,  575,
2673
      575,  575,  575,  888,  644,  888,  888,  888,  888,  888,
2674
      888,  888,  888,  888,  888,  929,  929,  929,  929,  929,
2675
      929,  929,  643,  575,  575,  575,  575,  575,  575,  578,
2676
      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
2677
      578,  639,  638,  637,  578,  578,  578,  578,  578,  578,
2678
      636,  635,  965,  929,  965,  965,  965,  965,  965,  965,
2679
      895,  625, 1125, 1125,  895, 1125, 1125,  624,  621,  620,
2680
      578,  578,  578,  578,  578,  578,  640,  612,  640,  640,
2681
2682
      640,  640,  640,  640,  640,  640,  640,  640,  895,  912,
2683
      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
2684
      899,  611,  610,  945,  899,  945,  945,  945,  945,  945,
2685
      945,  945,  945,  945,  945,  640,  641,  895,  641,  641,
2686
      641,  641,  641,  641,  641,  641,  641,  641,  899,  913,
2687
      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
2688
      900,  922,  923,  602,  900,  922,  923,  973,  973,  973,
2689
      973,  973,  973,  973,  973,  641,  642,  899,  642,  642,
2690
      642,  642,  642,  642,  642,  642,  642,  642,  900,  922,
2691
      923,  925,  925,  925,  925,  925,  925,  925,  925,  925,
2692
2693
      925,  933,  937,  938,  566,  933,  937,  938, 1253, 1253,
2694
      922,  923,  565,  564, 1253,  642,  663,  900,  663,  663,
2695
      663,  663,  663,  663,  663,  663,  663,  663,  925,  933,
2696
      937,  938,  946,  563,  946,  946,  946,  946,  946,  946,
2697
      946,  946,  946,  946, 1039, 1039, 1039, 1039, 1039, 1039,
2698
      933,  937,  938,  561,  560,  663,  664, 1152,  664,  664,
2699
      664,  664,  664,  664,  664,  664,  664,  664,  947, 1152,
2700
      947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
2701
      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
2702
     1164, 1164,  552, 1164, 1164,  664,  670,  670,  670,  670,
2703
2704
      670,  670,  670,  670,  670,  670,  670,  551,  550,  549,
2705
      670,  670,  670,  670,  670,  670,  955,  548,  955,  955,
2706
      955,  955,  955,  955, 1281, 1281,  547, 1002,  955, 1050,
2707
     1281, 1002,  546, 1050,  545,  544,  670,  670,  670,  670,
2708
      670,  670,  680,  680,  680,  680,  680,  680,  680,  680,
2709
      680,  680,  680,  680,  680, 1002,  541, 1050,  680,  680,
2710
      680,  680,  680,  680,  957,  957,  957,  957,  957,  957,
2711
      957,  957,  957,  957,  961,  961,  961,  961,  961,  961,
2712
      961,  961,  961,  961,  680,  680,  680,  680,  680,  680,
2713
      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
2714
2715
      683,  683,  683,  540,  538,  531,  683,  683,  683,  683,
2716
      683,  683,  960,  530,  960,  960,  960,  960,  960,  960,
2717
      960,  960,  960,  960, 1001,  529, 1190, 1190, 1001, 1190,
2718
     1190,  508,  683,  683,  683,  683,  683,  683,  686,  686,
2719
      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
2720
      500,  499, 1001,  686,  686,  686,  686,  686,  686,  963,
2721
      498,  963,  963,  963,  963,  963,  963,  963,  963,  963,
2722
      963, 1282, 1282, 1001,  497,  496,  495, 1282,  490,  686,
2723
      686,  686,  686,  686,  686,  744,  487,  744,  744,  744,
2724
      744,  744,  744,  744,  744,  744,  744,  964,  458,  964,
2725
2726
      964,  964,  964,  964,  964,  964,  964,  964,  964,  457,
2727
     1053, 1079, 1011,  454, 1053, 1079, 1011, 1119,  453,  976,
2728
      439, 1119,  978,  976,  744,  745,  978,  745,  745,  745,
2729
      745,  745,  745,  745,  745,  745,  745,  995, 1053, 1079,
2730
     1011,  995,  995,  995,  995, 1119,  438,  976,  437,  997,
2731
      978,  997,  997,  997,  997,  997,  997,  997,  997,  997,
2732
      997, 1011,  436,  435,  745,  765,  765,  765,  765,  765,
2733
      765,  765,  765,  765,  765,  765,  976,  996,  434,  978,
2734
      433,  996,  996,  996,  996, 1110, 1110, 1110, 1110, 1110,
2735
     1110,  998,  995,  998,  998,  998,  998,  998,  998,  998,
2736
2737
      998,  998,  998,  765,  766,  766,  766,  766,  766,  766,
2738
      766,  766,  766,  766,  766,  999,  432,  999,  999,  999,
2739
      999,  999,  999,  999,  999,  999,  999, 1012, 1310, 1310,
2740
      431, 1012,  996, 1021, 1310, 1021, 1021, 1021, 1021, 1021,
2741
     1021,  430,  766,  767,  767,  767,  767,  767,  767,  767,
2742
      767,  767,  767,  767, 1000, 1012, 1000, 1000, 1000, 1000,
2743
     1000, 1000, 1000, 1000, 1000, 1000,  429, 1132,  428, 1159,
2744
      427, 1132, 1021, 1159, 1299, 1323, 1012, 1299, 1323, 1299,
2745
     1323,  767,  772,  426,  772,  772,  772,  772,  772,  772,
2746
      772,  772,  772,  772,  772, 1132,  423, 1159,  772,  772,
2747
2748
      772,  772,  772,  772, 1017, 1017, 1017, 1017, 1017, 1017,
2749
     1017, 1017, 1017, 1017, 1023, 1023, 1023, 1023, 1023, 1023,
2750
     1023, 1023, 1023, 1023,  772,  772,  772,  772,  772,  772,
2751
      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
2752
      775, 1017,  417,  414,  775,  775,  775,  775,  775,  775,
2753
     1025,  413, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
2754
     1025, 1025, 1027,  412, 1027, 1027, 1027, 1027, 1027, 1027,
2755
      775,  775,  775,  775,  775,  775,  788,  788,  788,  788,
2756
      788,  788,  788,  788,  788,  788,  788,  788,  788,  411,
2757
      410,  409,  788,  788,  788,  788,  788,  788, 1026,  408,
2758
2759
     1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
2760
     1077,  407, 1077, 1077, 1077, 1077, 1077, 1077,  788,  788,
2761
      788,  788,  788,  788,  791,  791,  791,  791,  791,  791,
2762
      791,  791,  791,  791,  791,  791,  791,  406,  405,  404,
2763
      791,  791,  791,  791,  791,  791, 1032, 1032, 1032, 1032,
2764
     1032, 1032, 1032, 1032, 1032, 1032, 1038, 1038, 1038, 1038,
2765
     1038, 1038, 1038, 1038, 1038, 1038,  791,  791,  791,  791,
2766
      791,  791,  794,  794,  794,  794,  794,  794,  794,  794,
2767
      794,  794,  794,  403,  402,  401,  398,  794,  794,  794,
2768
      794,  794,  794, 1036,  383, 1036, 1036, 1036, 1036, 1036,
2769
2770
     1036,  379,  378,  377,  376, 1036, 1115, 1115, 1115, 1115,
2771
     1115, 1115, 1115,  794,  794,  794,  794,  794,  794,  797,
2772
     1070, 1339,  797, 1070, 1339,  370, 1339,  369,  797,  797,
2773
     1070, 1070,  797,  797, 1070,  797,  797,  797,  797,  797,
2774
      797,  797,  797,  797,  797,  797,  797,  797, 1070, 1070,
2775
     1070,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2776
      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2777
      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2778
      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2779
      797,  797,  797,  797,  797,  831,  368,  367,  366,  831,
2780
2781
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
2782
      365,  831,  363,  362,  831,  831,  831,  831,  831,  831,
2783
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
2784
      831,  831,  831,  831,  831,  831,  831,  361,  360,  831,
2785
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
2786
      831,  831,  831,  831,  831,  831,  831,  841,  841,  841,
2787
      841,  841,  841,  841,  841,  841,  841,  841, 1041,  359,
2788
     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
2789
     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
2790
     1042,  358,  357,  356,  355,  841,  842,  842,  842,  842,
2791
2792
      842,  842,  842,  842,  842,  842,  842, 1043, 1043, 1043,
2793
     1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1044,
2794
     1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1055,
2795
      354,  353,  352, 1055,  842,  843,  843,  843,  843,  843,
2796
      843,  843,  843,  843,  843,  843,  351, 1121, 1065,  349,
2797
      348, 1121, 1065, 1065, 1065, 1065, 1069, 1055,  341, 1069,
2798
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,  340,
2799
     1316, 1316,  327,  843,  844, 1121, 1316,  844,  323, 1317,
2800
     1317,  322,  320,  844,  844, 1317, 1055,  844,  844,  319,
2801
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2802
2803
      844,  844,  844, 1065, 1121,  318,  844,  844,  844,  844,
2804
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2805
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2806
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2807
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2808
      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
2809
      856, 1066,  317, 1359, 1359, 1066, 1066, 1066, 1066, 1067,
2810
     1359,  316,  315, 1067, 1067, 1067, 1067, 1073, 1073, 1073,
2811
     1073, 1073, 1073, 1073, 1073, 1073, 1073,  309,  856,  857,
2812
      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
2813
2814
     1068, 1363,  305, 1363, 1068, 1068, 1068, 1068, 1071, 1363,
2815
      302,  300, 1071, 1071, 1071, 1071, 1066, 1207, 1207, 1207,
2816
     1207, 1207, 1207,  298, 1067,  295,  294,  857,  865,  293,
2817
      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
2818
      865,  868,  290,  868,  868,  868,  868,  868,  868,  868,
2819
      868,  868,  868,  868,  289, 1068,  287,  868,  868,  868,
2820
      868,  868,  868, 1071, 1075,  286, 1075, 1075, 1075, 1075,
2821
     1075, 1075, 1075, 1075, 1075, 1075, 1237, 1237, 1237, 1237,
2822
     1237, 1237,  285,  868,  868,  868,  868,  868,  868,  871,
2823
      871,  871,  871,  871,  871,  871,  871,  871,  871,  871,
2824
2825
      284,  283,  281,  871,  871,  871,  871,  871,  871, 1076,
2826
      275, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
2827
     1076, 1089, 1161,  267,  263, 1089, 1161,  258,  257,  871,
2828
      871,  871,  871,  871,  871,  882,  882,  882,  882,  882,
2829
      882,  882,  882,  882,  882,  882,  882,  882,  255, 1089,
2830
     1161,  882,  882,  882,  882,  882,  882,  251, 1083, 1083,
2831
     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,  246, 1087,
2832
     1089, 1087, 1087, 1087, 1087, 1087, 1087,  882,  882,  882,
2833
      882,  882,  882,  885,  885,  885,  885,  885,  885,  885,
2834
      885,  885,  885,  885,  885, 1083,  241,  239,  235,  885,
2835
2836
      885,  885,  885,  885,  885, 1122,  230, 1072, 1087, 1122,
2837
     1072, 1131,  218, 1318, 1318, 1131,  217, 1072, 1072, 1318,
2838
      216, 1072,  215,  214,  209,  885,  885,  885,  885,  885,
2839
      885,  890,  202, 1122,  890, 1072, 1072, 1072,  201, 1131,
2840
      890,  890,  200,  199,  890,  890,  198,  890,  890,  890,
2841
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2842
     1131,  197, 1122,  890,  890,  890,  890,  890,  890,  890,
2843
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2844
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2845
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2846
2847
      890,  890,  890,  890,  890,  890,  890,  915,  195,  194,
2848
      193,  915,  915,  915,  915,  915,  915,  915,  915,  915,
2849
      915,  915,  192,  915,  191,  190,  915,  915,  915,  915,
2850
      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
2851
      915,  915,  915,  915,  915,  915,  915,  915,  915,  189,
2852
      188,  915,  915,  915,  915,  915,  915,  915,  915,  915,
2853
      915,  915,  915,  915,  915,  915,  915,  915,  915,  927,
2854
      927,  927,  927,  927,  927,  927,  927,  927,  927,  927,
2855
     1096,  187, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096,
2856
     1096, 1096, 1097,  186, 1097, 1097, 1097, 1097, 1097, 1097,
2857
2858
     1097, 1097, 1097, 1097,  181,  177,  176,  927,  928,  928,
2859
      928,  928,  928,  928,  928,  928,  928,  928,  928, 1098,
2860
      172, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
2861
     1098, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
2862
     1103,  169,  165,  162,  159,  155,  928,  930, 1170, 1187,
2863
      930,  150, 1170, 1187,  149,  148,  930,  930,  147,  146,
2864
      930,  930,  145,  930,  930,  930,  930,  930,  930,  930,
2865
      930,  930,  930,  930,  930,  930, 1170, 1187,  141,  930,
2866
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2867
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2868
2869
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2870
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2871
      930,  930,  930,  940,  135,  940,  940,  940,  940,  940,
2872
      940,  940,  940,  940,  940, 1107,  133, 1107, 1107, 1107,
2873
     1107, 1107, 1107,  129,  124,  123,  122, 1107, 1109, 1109,
2874
     1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1324, 1324,
2875
      121,  120,  940,  941, 1324,  941,  941,  941,  941,  941,
2876
      941,  941,  941,  941,  941, 1111,  119, 1111, 1111, 1111,
2877
     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1113, 1113, 1113,
2878
     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1325, 1325,
2879
2880
      115,  102,  941,  942, 1325,  942,  942,  942,  942,  942,
2881
      942,  942,  942,  942,  942, 1114, 1114, 1114, 1114, 1114,
2882
     1114, 1114, 1114, 1114, 1114, 1114, 1126, 1126, 1126, 1126,
2883
     1126, 1126, 1126, 1126, 1126, 1126,   95,   88, 1326, 1326,
2884
       87,   80,  942,  943, 1326,  943,  943,  943,  943,  943,
2885
      943,  943,  943,  943,  943, 1127, 1127, 1127, 1127, 1127,
2886
     1127, 1127, 1127, 1127, 1127, 1128,   79, 1128, 1128, 1128,
2887
     1128, 1128, 1128, 1128, 1128, 1128, 1128,   74, 1329, 1329,
2888
       73,   72,  943,  953, 1329,  953,  953,  953,  953,  953,
2889
      953,  953,  953,  953,  953,  953,  956,   71,  956,  956,
2890
2891
      956,  956,  956,  956,  956,  956,  956,  956,  956,   66,
2892
       64,   54,  956,  956,  956,  956,  956,  956, 1129,   53,
2893
     1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
2894
     1149,   51, 1149, 1149, 1149, 1149, 1149, 1149,  956,  956,
2895
      956,  956,  956,  956,  959,  959,  959,  959,  959,  959,
2896
      959,  959,  959,  959,  959,   50,   48,   38,  959,  959,
2897
      959,  959,  959,  959, 1130,   32, 1130, 1130, 1130, 1130,
2898
     1130, 1130, 1130, 1130, 1130, 1130, 1169,   26, 1169, 1169,
2899
     1169, 1169, 1169, 1169,  959,  959,  959,  959,  959,  959,
2900
      971,  971,  971,  971,  971,  971,  971,  971,  971,  971,
2901
2902
      971,  971, 1007,   25, 1007, 1007, 1007, 1007, 1007, 1007,
2903
     1007, 1007, 1007, 1007,   22, 1137,   21,    0, 1144, 1137,
2904
     1144, 1144, 1144, 1144, 1144, 1144, 1138,    0,    0,    0,
2905
     1138, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
2906
     1140, 1007, 1008, 1137, 1008, 1008, 1008, 1008, 1008, 1008,
2907
     1008, 1008, 1008, 1008, 1138,    0, 1215, 1144, 1215, 1215,
2908
     1215, 1215, 1215, 1215, 1137, 1330, 1330,    0, 1140,    0,
2909
        0, 1330, 1331, 1331, 1347, 1138,    0, 1347, 1331, 1347,
2910
        0, 1008, 1009,    0, 1009, 1009, 1009, 1009, 1009, 1009,
2911
     1009, 1009, 1009, 1009, 1145, 1145, 1145, 1145, 1145, 1145,
2912
2913
     1145, 1145, 1145, 1145, 1147,    0, 1147, 1147, 1147, 1147,
2914
     1147, 1147, 1147, 1147, 1147, 1147,    0,    0,    0, 1163,
2915
        0, 1009, 1010, 1163, 1010, 1010, 1010, 1010, 1010, 1010,
2916
     1010, 1010, 1010, 1010, 1148,    0, 1148, 1148, 1148, 1148,
2917
     1148, 1148, 1148, 1148, 1148, 1148, 1155, 1163, 1155, 1155,
2918
     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,    0,    0,
2919
        0, 1010, 1019,    0, 1019, 1019, 1019, 1019, 1019, 1019,
2920
     1019, 1019, 1019, 1019,    0,    0, 1163, 1165, 1165, 1165,
2921
     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1167,    0, 1167,
2922
     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,    0,
2923
2924
        0, 1019, 1020,    0, 1020, 1020, 1020, 1020, 1020, 1020,
2925
     1020, 1020, 1020, 1020, 1168,    0, 1168, 1168, 1168, 1168,
2926
     1168, 1168, 1168, 1168, 1168, 1168,    0,    0,    0,    0,
2927
        0, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2928
     1171, 1020, 1034,    0, 1034, 1034, 1034, 1034, 1034, 1034,
2929
     1034, 1034, 1034, 1034, 1034, 1037,    0, 1037, 1037, 1037,
2930
     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1171,    0,
2931
        0, 1037, 1037, 1037, 1037, 1037, 1037, 1175,    0, 1175,
2932
     1175, 1175, 1175, 1175, 1175, 1176, 1334, 1334,    0, 1176,
2933
     1335, 1335, 1334,    0,    0,    0, 1335, 1037, 1037, 1037,
2934
2935
     1037, 1037, 1037, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
2936
     1040, 1040, 1040, 1176,    0,    0, 1175, 1040, 1040, 1040,
2937
     1040, 1040, 1040, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
2938
     1180, 1180, 1180,    0, 1176, 1342, 1342,    0,    0,    0,
2939
        0, 1342,    0, 1040, 1040, 1040, 1040, 1040, 1040, 1085,
2940
        0, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
2941
     1085, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
2942
     1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
2943
     1182, 1350, 1350,    0, 1357, 1357,    0, 1350, 1085, 1086,
2944
     1357, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
2945
2946
     1086, 1193,    0, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
2947
     1193, 1193, 1193, 1194,    0, 1194, 1194, 1194, 1194, 1194,
2948
     1194, 1194, 1194, 1194, 1194,    0,    0,    0, 1086, 1093,
2949
        0, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2950
     1093, 1195,    0, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
2951
     1195, 1195, 1195, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
2952
     1199, 1199, 1199,    0, 1360, 1360,    0,    0, 1093, 1094,
2953
     1360, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2954
     1094,    0, 1203,    0, 1203, 1203, 1203, 1203, 1203, 1203,
2955
     1199, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
2956
2957
     1205, 1362, 1362,    0,    0,    0,    0, 1362, 1094, 1095,
2958
        0, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
2959
     1095, 1203, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
2960
     1206, 1206, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
2961
     1211, 1211,    0,    0,    0,    0,    0,    0, 1095, 1105,
2962
        0, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
2963
     1105, 1105, 1108,    0, 1108, 1108, 1108, 1108, 1108, 1108,
2964
     1108, 1108, 1108, 1108,    0,    0,    0,    0, 1108, 1108,
2965
     1108, 1108, 1108, 1108, 1213,    0, 1213, 1213, 1213, 1213,
2966
     1213, 1213, 1213, 1213, 1213, 1213,    0,    0,    0,    0,
2967
2968
        0,    0,    0,    0, 1108, 1108, 1108, 1108, 1108, 1108,
2969
     1134,    0, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
2970
     1134, 1134, 1214,    0, 1214, 1214, 1214, 1214, 1214, 1214,
2971
     1214, 1214, 1214, 1214, 1216, 1216, 1216, 1216, 1216, 1216,
2972
     1216, 1216, 1216, 1216,    0,    0,    0,    0,    0, 1134,
2973
     1135,    0, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135,
2974
     1135, 1135,    0, 1220,    0, 1220, 1220, 1220, 1220, 1220,
2975
     1220, 1216, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
2976
     1221, 1221,    0, 1233, 1233, 1233, 1233, 1233, 1233, 1135,
2977
     1136,    0, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2978
2979
     1136, 1136, 1220,    0,    0,    0,    0,    0,    0, 1221,
2980
     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
2981
     1233,    0,    0,    0,    0,    0,    0,    0,    0, 1136,
2982
     1142,    0, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
2983
     1142, 1142,    0,    0,    0,    0,    0, 1222, 1223, 1223,
2984
     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1225,
2985
     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,    0, 1142,
2986
     1143,    0, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
2987
     1143, 1143,    0,    0,    0, 1223, 1226, 1226, 1226, 1226,
2988
     1226, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 1227, 1227,
2989
2990
     1227, 1227, 1227, 1227, 1227, 1227,    0,    0,    0, 1143,
2991
     1173,    0, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
2992
     1173, 1173,    0,    0,    0, 1228, 1228, 1228, 1228, 1228,
2993
     1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229, 1229, 1229,
2994
     1229, 1229, 1229, 1229, 1229,    0,    0,    0,    0, 1173,
2995
     1174,    0, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
2996
     1174, 1174, 1228,    0,    0, 1240, 1240, 1240, 1240, 1240,
2997
     1240,    0, 1229, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
2998
     1230, 1230, 1230,    0,    0,    0,    0,    0,    0, 1174,
2999
     1177,    0, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
3000
3001
     1177, 1177, 1240,    0,    0,    0,    0,    0,    0,    0,
3002
     1230, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
3003
     1232,    0,    0,    0,    0,    0,    0,    0,    0, 1177,
3004
     1178,    0, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
3005
     1178, 1178,    0,    0,    0,    0,    0,    0, 1232, 1236,
3006
     1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1239,
3007
     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1178,
3008
     1179,    0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
3009
     1179, 1179,    0,    0,    0,    0,    0,    0,    0,    0,
3010
        0,    0,    0,    0,    0,    0, 1239,    0,    0,    0,
3011
3012
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1179,
3013
     1196,    0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
3014
     1196, 1196,    0,    0,    0,    0,    0,    0,    0,    0,
3015
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3016
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1196,
3017
     1197,    0, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
3018
     1197, 1197,    0,    0,    0,    0,    0,    0,    0,    0,
3019
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3020
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1197,
3021
     1198,    0, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
3022
3023
     1198, 1198,    0,    0,    0,    0,    0,    0,    0,    0,
3024
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3025
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1198,
3026
     1201,    0, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
3027
     1201, 1201,    0,    0,    0,    0,    0,    0,    0,    0,
3028
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3029
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1201,
3030
     1202,    0, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
3031
     1202, 1202,    0,    0,    0,    0,    0,    0,    0,    0,
3032
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3033
3034
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1202,
3035
     1218,    0, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
3036
     1218, 1218,    0,    0,    0,    0,    0,    0,    0,    0,
3037
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3038
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1218,
3039
     1219,    0, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
3040
     1219, 1219,    0,    0,    0,    0,    0,    0,    0,    0,
3041
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3042
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1219,
3043
     1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
3044
3045
     1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
3046
     1242, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
3047
     1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
3048
     1243, 1243, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
3049
     1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
3050
     1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
3051
     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
3052
     1245, 1245, 1245, 1245, 1246, 1246, 1246, 1246, 1246, 1246,
3053
     1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
3054
     1246, 1246, 1246, 1246, 1246, 1247, 1247, 1247, 1247, 1247,
3055
3056
     1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
3057
     1247, 1247, 1247, 1247, 1247, 1247, 1248,    0,    0, 1248,
3058
        0,    0,    0, 1248,    0, 1248,    0, 1248, 1248, 1248,
3059
        0,    0, 1248, 1248, 1248, 1248, 1248, 1249, 1249, 1249,
3060
     1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,
3061
     1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1250,    0,
3062
        0, 1250,    0,    0, 1250, 1250,    0, 1250,    0, 1250,
3063
     1250, 1250, 1250,    0, 1250, 1250, 1250, 1250, 1250, 1251,
3064
        0,    0, 1251,    0,    0,    0, 1251,    0, 1251,    0,
3065
     1251, 1251, 1251,    0,    0, 1251, 1251, 1251, 1251, 1251,
3066
3067
     1252,    0,    0, 1252, 1252, 1252,    0, 1252, 1252, 1252,
3068
        0, 1252, 1252, 1252,    0,    0, 1252, 1252, 1252, 1252,
3069
     1252, 1254, 1254,    0, 1254, 1254, 1254,    0, 1254, 1254,
3070
     1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
3071
     1254, 1254, 1255,    0,    0, 1255, 1255, 1255,    0, 1255,
3072
     1255, 1255,    0, 1255, 1255, 1255,    0,    0, 1255, 1255,
3073
     1255, 1255, 1255, 1256, 1256,    0, 1256, 1256, 1256,    0,
3074
     1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
3075
     1256, 1256, 1256, 1256, 1257,    0,    0, 1257, 1257, 1257,
3076
        0, 1257, 1257, 1257,    0, 1257, 1257, 1257,    0, 1257,
3077
3078
     1257,    0, 1257, 1257, 1257, 1258, 1258,    0, 1258, 1258,
3079
     1258,    0,    0, 1258, 1258, 1258, 1258, 1258, 1258, 1258,
3080
     1258, 1258,    0, 1258, 1258, 1258, 1259, 1259, 1259, 1259,
3081
     1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
3082
     1259, 1259, 1259, 1259, 1259, 1259, 1259, 1261,    0,    0,
3083
     1261, 1261,    0,    0, 1261, 1261, 1261,    0, 1261, 1261,
3084
     1261, 1261,    0, 1261, 1261, 1261, 1261, 1261, 1262, 1262,
3085
     1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
3086
     1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263,
3087
     1263,    0, 1263, 1263,    0, 1263, 1263, 1263, 1263, 1263,
3088
3089
     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
3090
     1264,    0,    0, 1264,    0,    0, 1264, 1264,    0, 1264,
3091
        0, 1264, 1264, 1264, 1264,    0, 1264, 1264, 1264, 1264,
3092
     1264, 1265,    0,    0, 1265,    0,    0,    0, 1265,    0,
3093
     1265,    0, 1265, 1265, 1265,    0, 1265, 1265, 1265, 1265,
3094
     1265, 1265, 1266,    0,    0, 1266, 1266, 1266,    0, 1266,
3095
     1266, 1266,    0, 1266, 1266, 1266,    0, 1266, 1266, 1266,
3096
     1266, 1266, 1266, 1267, 1267,    0, 1267, 1267, 1267,    0,
3097
     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
3098
     1267, 1267, 1267, 1267, 1268,    0,    0,    0, 1268, 1268,
3099
3100
     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
3101
     1268, 1268, 1268, 1268, 1268, 1269,    0,    0, 1269,    0,
3102
        0,    0, 1269,    0, 1269,    0, 1269, 1269, 1269,    0,
3103
        0, 1269, 1269, 1269, 1269, 1269, 1270,    0,    0, 1270,
3104
        0,    0, 1270, 1270,    0, 1270,    0, 1270, 1270, 1270,
3105
     1270,    0, 1270, 1270, 1270, 1270, 1270, 1271,    0,    0,
3106
     1271,    0,    0,    0, 1271,    0, 1271,    0, 1271, 1271,
3107
     1271,    0,    0, 1271, 1271, 1271, 1271, 1271, 1272,    0,
3108
        0, 1272, 1272, 1272,    0, 1272, 1272, 1272,    0, 1272,
3109
     1272, 1272,    0,    0, 1272, 1272, 1272, 1272, 1272, 1273,
3110
3111
     1273,    0, 1273, 1273, 1273,    0, 1273, 1273, 1273, 1273,
3112
     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
3113
     1274,    0,    0, 1274,    0,    0,    0, 1274,    0, 1274,
3114
        0, 1274, 1274, 1274,    0,    0, 1274, 1274, 1274, 1274,
3115
     1274, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
3116
     1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
3117
     1275, 1275, 1276, 1276,    0, 1276, 1276, 1276, 1276, 1276,
3118
     1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276,
3119
     1276, 1276, 1276, 1277,    0,    0, 1277,    0,    0,    0,
3120
     1277,    0, 1277,    0, 1277, 1277, 1277,    0,    0, 1277,
3121
3122
     1277, 1277, 1277, 1277, 1278,    0,    0, 1278,    0,    0,
3123
        0, 1278,    0, 1278,    0, 1278, 1278, 1278,    0,    0,
3124
     1278, 1278, 1278, 1278, 1278, 1279,    0,    0, 1279, 1279,
3125
     1279,    0, 1279, 1279, 1279,    0, 1279, 1279, 1279,    0,
3126
        0, 1279, 1279, 1279, 1279, 1279, 1280,    0,    0, 1280,
3127
     1280, 1280,    0, 1280, 1280, 1280,    0, 1280, 1280, 1280,
3128
        0,    0, 1280, 1280, 1280, 1280, 1280, 1283, 1283, 1283,
3129
        0,    0,    0,    0, 1283, 1284, 1284,    0, 1284, 1284,
3130
     1284,    0, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
3131
     1284, 1284, 1284, 1284, 1284, 1284, 1285, 1285,    0, 1285,
3132
3133
     1285, 1285,    0, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
3134
     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1286,    0,    0,
3135
     1286, 1286, 1286,    0, 1286, 1286, 1286,    0, 1286, 1286,
3136
     1286,    0,    0, 1286, 1286, 1286, 1286, 1286, 1287,    0,
3137
        0, 1287, 1287, 1287,    0, 1287, 1287, 1287,    0, 1287,
3138
     1287, 1287,    0,    0, 1287, 1287, 1287, 1287, 1287, 1288,
3139
     1288,    0, 1288, 1288, 1288,    0, 1288, 1288, 1288, 1288,
3140
     1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288,
3141
     1289, 1289,    0, 1289, 1289, 1289,    0, 1289, 1289, 1289,
3142
     1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289,
3143
3144
     1289, 1290,    0,    0, 1290, 1290, 1290,    0, 1290, 1290,
3145
     1290,    0, 1290, 1290, 1290,    0, 1290, 1290,    0, 1290,
3146
     1290, 1290, 1291, 1291,    0, 1291, 1291, 1291,    0,    0,
3147
     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,    0,
3148
     1291, 1291, 1291, 1293,    0,    0, 1293, 1293,    0,    0,
3149
     1293, 1293, 1293,    0, 1293, 1293, 1293, 1293,    0, 1293,
3150
     1293, 1293, 1293, 1293, 1294, 1294,    0, 1294, 1294,    0,
3151
     1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
3152
     1294, 1294, 1294, 1294, 1294, 1295,    0,    0, 1295,    0,
3153
        0,    0, 1295,    0, 1295,    0, 1295, 1295, 1295,    0,
3154
3155
        0, 1295, 1295, 1295, 1295, 1295, 1296,    0,    0, 1296,
3156
        0,    0,    0, 1296,    0, 1296,    0, 1296, 1296, 1296,
3157
        0, 1296, 1296, 1296, 1296, 1296, 1296, 1297,    0,    0,
3158
     1297, 1297,    0, 1297, 1297,    0,    0, 1297, 1297, 1298,
3159
        0,    0, 1298, 1298, 1298,    0, 1298, 1298, 1298,    0,
3160
     1298, 1298, 1298,    0, 1298, 1298, 1298, 1298, 1298, 1298,
3161
     1300,    0,    0,    0, 1300, 1300, 1300, 1300, 1300, 1300,
3162
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
3163
     1300, 1301,    0,    0, 1301,    0,    0,    0, 1301,    0,
3164
     1301,    0, 1301, 1301, 1301,    0,    0, 1301, 1301, 1301,
3165
3166
     1301, 1301, 1302,    0,    0, 1302,    0,    0,    0, 1302,
3167
        0, 1302,    0, 1302, 1302, 1302,    0,    0, 1302, 1302,
3168
     1302, 1302, 1302, 1303,    0,    0, 1303,    0,    0,    0,
3169
     1303,    0, 1303,    0, 1303, 1303, 1303,    0,    0, 1303,
3170
     1303, 1303, 1303, 1303, 1304,    0,    0, 1304, 1304, 1304,
3171
        0, 1304, 1304, 1304,    0, 1304, 1304, 1304,    0,    0,
3172
     1304, 1304, 1304, 1304, 1304, 1305,    0,    0, 1305, 1305,
3173
     1305,    0, 1305, 1305, 1305,    0, 1305, 1305, 1305,    0,
3174
        0, 1305, 1305, 1305, 1305, 1305, 1306, 1306,    0, 1306,
3175
     1306, 1306,    0, 1306, 1306, 1306, 1306, 1306, 1306, 1306,
3176
3177
     1306, 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1307, 1307,
3178
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
3179
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
3180
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
3181
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1309,
3182
        0,    0, 1309,    0,    0,    0, 1309,    0, 1309,    0,
3183
     1309, 1309, 1309,    0,    0, 1309, 1309, 1309, 1309, 1309,
3184
     1311, 1311, 1311,    0,    0,    0,    0, 1311, 1312, 1312,
3185
        0, 1312, 1312, 1312,    0, 1312, 1312, 1312, 1312, 1312,
3186
     1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313,
3187
3188
     1313,    0, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313,
3189
     1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313,
3190
     1314, 1314,    0, 1314, 1314, 1314,    0, 1314, 1314, 1314,
3191
     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
3192
     1314, 1315, 1315,    0, 1315, 1315, 1315,    0, 1315, 1315,
3193
     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
3194
     1315, 1315, 1319, 1319, 1319,    0,    0,    0,    0, 1319,
3195
     1320, 1320, 1320,    0,    0,    0,    0, 1320, 1321, 1321,
3196
     1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321,
3197
     1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1322,
3198
3199
     1322,    0, 1322, 1322, 1322,    0, 1322, 1322, 1322, 1322,
3200
     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
3201
     1327, 1327, 1327,    0,    0,    0,    0, 1327, 1328, 1328,
3202
     1328, 1328,    0,    0,    0,    0, 1328, 1332, 1332, 1332,
3203
        0,    0,    0,    0, 1332, 1333, 1333, 1333, 1333,    0,
3204
        0,    0,    0, 1333, 1336, 1336, 1336,    0,    0,    0,
3205
        0, 1336, 1337, 1337, 1337, 1337,    0,    0,    0,    0,
3206
     1337, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338,
3207
     1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338,
3208
     1338, 1338, 1340,    0,    0, 1340, 1340,    0, 1340, 1340,
3209
3210
        0,    0, 1340, 1340, 1341,    0,    0, 1341,    0,    0,
3211
        0, 1341,    0, 1341,    0, 1341, 1341, 1341,    0,    0,
3212
     1341, 1341, 1341, 1341, 1341, 1343,    0, 1343, 1343,    0,
3213
        0,    0,    0, 1343, 1344, 1344, 1344,    0,    0,    0,
3214
        0, 1344, 1345, 1345, 1345, 1345,    0,    0,    0,    0,
3215
     1345, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
3216
     1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
3217
     1346, 1346, 1348,    0,    0, 1348, 1348,    0, 1348, 1348,
3218
        0,    0, 1348, 1348, 1349,    0,    0, 1349,    0,    0,
3219
        0, 1349,    0, 1349,    0, 1349, 1349, 1349,    0,    0,
3220
3221
     1349, 1349, 1349, 1349, 1349, 1351,    0, 1351, 1351,    0,
3222
        0,    0,    0, 1351, 1352, 1352, 1352,    0,    0,    0,
3223
        0, 1352, 1353, 1353, 1353,    0,    0,    0,    0,    0,
3224
     1353, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,
3225
     1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,
3226
     1354, 1354, 1355, 1355,    0, 1355, 1355, 1355, 1355, 1355,
3227
        0, 1355,    0, 1355, 1355, 1355,    0,    0, 1355, 1355,
3228
     1355, 1355, 1355, 1356, 1356,    0, 1356, 1356, 1356, 1356,
3229
     1356,    0, 1356,    0, 1356, 1356, 1356,    0,    0, 1356,
3230
     1356, 1356, 1356, 1356, 1358,    0, 1358, 1358,    0,    0,
3231
3232
        0,    0, 1358, 1361,    0, 1361, 1361,    0,    0,    0,
3233
        0, 1361, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,
3234
     1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,
3235
     1364, 1364, 1364, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3236
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3237
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3238
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3239
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3240
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3241
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3242
3243
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241
3244
    } ;
3245
3246
static yy_state_type yy_last_accepting_state;
3247
static char *yy_last_accepting_cpos;
3248
3249
extern int yy_flex_debug;
3250
int yy_flex_debug = 0;
3251
3252
/* The intent behind this definition is that it'll catch
3253
 * any uses of REJECT which flex missed.
3254
 */
3255
#define REJECT reject_used_but_not_detected
3256
#define yymore() yymore_used_but_not_detected
3257
1.11k
#define YY_MORE_ADJ 0
3258
#define YY_RESTORE_YY_MORE_OFFSET
3259
char *yytext;
3260
#line 1 "toke.l"
3261
#line 2 "toke.l"
3262
/*
3263
 * SPDX-License-Identifier: ISC
3264
 *
3265
 * Copyright (c) 1996, 1998-2005, 2007-2025
3266
 *  Todd C. Miller <Todd.Miller@sudo.ws>
3267
 *
3268
 * Permission to use, copy, modify, and distribute this software for any
3269
 * purpose with or without fee is hereby granted, provided that the above
3270
 * copyright notice and this permission notice appear in all copies.
3271
 *
3272
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3273
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3274
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3275
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3276
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3277
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3278
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3279
 *
3280
 * Sponsored in part by the Defense Advanced Research Projects
3281
 * Agency (DARPA) and Air Force Research Laboratory, Air Force
3282
 * Materiel Command, USAF, under agreement number F39502-99-1-0512.
3283
 */
3284
3285
#include <config.h>
3286
3287
#include <sys/types.h>
3288
#include <sys/stat.h>
3289
#include <stdio.h>
3290
#include <stdlib.h>
3291
#include <string.h>
3292
#if defined(HAVE_STDINT_H)
3293
# include <stdint.h>
3294
#elif defined(HAVE_INTTYPES_H)
3295
# include <inttypes.h>
3296
#endif
3297
#include <unistd.h>
3298
#include <dirent.h>
3299
#include <errno.h>
3300
#include <ctype.h>
3301
#include <sudoers.h>
3302
#include <toke.h>
3303
#include <gram.h>
3304
#include <sudo_digest.h>
3305
#include <sudo_lbuf.h>
3306
3307
#if defined(HAVE_STRUCT_DIRENT_D_NAMLEN) && HAVE_STRUCT_DIRENT_D_NAMLEN
3308
# define NAMLEN(dirent) (dirent)->d_namlen
3309
#else
3310
0
# define NAMLEN(dirent) strlen((dirent)->d_name)
3311
#endif
3312
3313
// PVS Studio suppression
3314
// -V::519, 547, 1004, 1037, 1048
3315
3316
int sudolineno;     /* current sudoers line number. */
3317
char *sudoers;      /* sudoers file being parsed. */
3318
char *sudoers_search_path;  /* colon-separated path of sudoers files. */
3319
const char *sudoers_errstr; /* description of last error from lexer. */
3320
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
3321
3322
static bool continued, sawspace;
3323
static int prev_state;
3324
static unsigned int digest_type = SUDO_DIGEST_INVALID;
3325
3326
static bool pop_include(void);
3327
static int sudoers_input(char *buf, yy_size_t max_size);
3328
3329
#ifndef TRACELEXER
3330
static struct sudo_lbuf trace_lbuf;
3331
#endif
3332
3333
int (*trace_print)(const char *msg) = sudoers_trace_print;
3334
3335
0
#define ECHO  ignore_result(fwrite(sudoerstext, (size_t)sudoersleng, 1, sudoersout))
3336
3337
554
#define YY_INPUT(buf, result, max_size) (result) = sudoers_input(buf, (yy_size_t)(max_size))
3338
3339
425k
#define YY_USER_ACTION do {         \
3340
425k
  sudolinebuf.toke_start = sudolinebuf.toke_end;    \
3341
425k
  sudolinebuf.toke_end += (size_t)sudoersleng;    \
3342
425k
} while (0);
3343
3344
4
#define sudoersless(n) do {         \
3345
4
  sudolinebuf.toke_end = sudolinebuf.toke_start + (size_t)(n);  \
3346
4
  yyless((int)n);           \
3347
4
} while (0);
3348
3349
#line 3344 "toke.c"
3350
#define YY_NO_INPUT 1
3351
3352
#line 3347 "toke.c"
3353
3354
101k
#define INITIAL 0
3355
0
#define GOTDEFS 1
3356
2
#define GOTCMND 2
3357
2
#define GOTREGEX 3
3358
0
#define STARTDEFS 4
3359
0
#define INDEFS 5
3360
36
#define INSTR 6
3361
0
#define WANTDIGEST 7
3362
0
#define GOTINC 8
3363
1
#define EXPECTPATH 9
3364
3365
#ifndef YY_NO_UNISTD_H
3366
/* Special case for "unistd.h", since it is non-ANSI. We include it way
3367
 * down here because we want the user's section 1 to have been scanned first.
3368
 * The user has a chance to override it with an option.
3369
 */
3370
#include <unistd.h>
3371
#endif
3372
3373
#ifndef YY_EXTRA_TYPE
3374
#define YY_EXTRA_TYPE void *
3375
#endif
3376
3377
static int yy_init_globals ( void );
3378
3379
/* Accessor methods to globals.
3380
   These are made visible to non-reentrant scanners for convenience. */
3381
3382
int yylex_destroy ( void );
3383
3384
int yyget_debug ( void );
3385
3386
void yyset_debug ( int debug_flag  );
3387
3388
YY_EXTRA_TYPE yyget_extra ( void );
3389
3390
void yyset_extra ( YY_EXTRA_TYPE user_defined  );
3391
3392
FILE *yyget_in ( void );
3393
3394
void yyset_in  ( FILE * _in_str  );
3395
3396
FILE *yyget_out ( void );
3397
3398
void yyset_out  ( FILE * _out_str  );
3399
3400
      int yyget_leng ( void );
3401
3402
char *yyget_text ( void );
3403
3404
int yyget_lineno ( void );
3405
3406
void yyset_lineno ( int _line_number  );
3407
3408
/* Macros after this point can all be overridden by user definitions in
3409
 * section 1.
3410
 */
3411
3412
#ifndef YY_SKIP_YYWRAP
3413
#ifdef __cplusplus
3414
extern "C" int yywrap ( void );
3415
#else
3416
extern int yywrap ( void );
3417
#endif
3418
#endif
3419
3420
#ifndef YY_NO_UNPUT
3421
    
3422
#endif
3423
3424
#ifndef yytext_ptr
3425
static void yy_flex_strncpy ( char *, const char *, int );
3426
#endif
3427
3428
#ifdef YY_NEED_STRLEN
3429
static int yy_flex_strlen ( const char * );
3430
#endif
3431
3432
#ifndef YY_NO_INPUT
3433
#ifdef __cplusplus
3434
static int yyinput ( void );
3435
#else
3436
static int input ( void );
3437
#endif
3438
3439
#endif
3440
3441
/* Amount of stuff to slurp up with each read. */
3442
#ifndef YY_READ_BUF_SIZE
3443
#ifdef __ia64__
3444
/* On IA-64, the buffer size is 16k, not 8k */
3445
#define YY_READ_BUF_SIZE 16384
3446
#else
3447
1.10k
#define YY_READ_BUF_SIZE 8192
3448
#endif /* __ia64__ */
3449
#endif
3450
3451
/* Copy whatever the last rule matched to the standard output. */
3452
#ifndef ECHO
3453
/* This used to be an fputs(), but since the string might contain NUL's,
3454
 * we now use fwrite().
3455
 */
3456
#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
3457
#endif
3458
3459
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3460
 * is returned in "result".
3461
 */
3462
#ifndef YY_INPUT
3463
#define YY_INPUT(buf,result,max_size) \
3464
  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3465
    { \
3466
    int c = '*'; \
3467
    int n; \
3468
    for ( n = 0; n < max_size && \
3469
           (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3470
      buf[n] = (char) c; \
3471
    if ( c == '\n' ) \
3472
      buf[n++] = (char) c; \
3473
    if ( c == EOF && ferror( yyin ) ) \
3474
      YY_FATAL_ERROR( "input in flex scanner failed" ); \
3475
    result = n; \
3476
    } \
3477
  else \
3478
    { \
3479
    errno=0; \
3480
    while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
3481
      { \
3482
      if( errno != EINTR) \
3483
        { \
3484
        YY_FATAL_ERROR( "input in flex scanner failed" ); \
3485
        break; \
3486
        } \
3487
      errno=0; \
3488
      clearerr(yyin); \
3489
      } \
3490
    }\
3491
\
3492
3493
#endif
3494
3495
/* No semi-colon after return; correct usage is to write "yyterminate();" -
3496
 * we don't want an extra ';' after the "return" because that will cause
3497
 * some compilers to complain about unreachable statements.
3498
 */
3499
#ifndef yyterminate
3500
7
#define yyterminate() return YY_NULL
3501
#endif
3502
3503
/* Number of entries by which start-condition stack grows. */
3504
#ifndef YY_START_STACK_INCR
3505
#define YY_START_STACK_INCR 25
3506
#endif
3507
3508
/* Report a fatal error. */
3509
#ifndef YY_FATAL_ERROR
3510
0
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3511
#endif
3512
3513
/* end tables serialization structures and prototypes */
3514
3515
/* Default declaration of generated scanner - a define so the user can
3516
 * easily add parameters.
3517
 */
3518
#ifndef YY_DECL
3519
#define YY_DECL_IS_OURS 1
3520
3521
extern int yylex (void);
3522
3523
#define YY_DECL int yylex (void)
3524
#endif /* !YY_DECL */
3525
3526
/* Code executed at the beginning of each rule, after yytext and yyleng
3527
 * have been set up.
3528
 */
3529
#ifndef YY_USER_ACTION
3530
#define YY_USER_ACTION
3531
#endif
3532
3533
/* Code executed at the end of each rule. */
3534
#ifndef YY_BREAK
3535
287k
#define YY_BREAK /*LINTED*/break;
3536
#endif
3537
3538
#define YY_RULE_SETUP \
3539
425k
  if ( yyleng > 0 ) \
3540
425k
    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
3541
425k
        (yytext[yyleng - 1] == '\n'); \
3542
425k
  YY_USER_ACTION
3543
3544
/** The main scanner function which does all the work.
3545
 */
3546
YY_DECL
3547
138k
{
3548
138k
  yy_state_type yy_current_state;
3549
138k
  char *yy_cp, *yy_bp;
3550
138k
  int yy_act;
3551
    
3552
138k
  if ( !(yy_init) )
3553
1
    {
3554
1
    (yy_init) = 1;
3555
3556
#ifdef YY_USER_INIT
3557
    YY_USER_INIT;
3558
#endif
3559
3560
1
    if ( ! (yy_start) )
3561
0
      (yy_start) = 1; /* first start state */
3562
3563
1
    if ( ! yyin )
3564
0
      yyin = stdin;
3565
3566
1
    if ( ! yyout )
3567
1
      yyout = stdout;
3568
3569
1
    if ( ! YY_CURRENT_BUFFER ) {
3570
0
      yyensure_buffer_stack ();
3571
0
      YY_CURRENT_BUFFER_LVALUE =
3572
0
        yy_create_buffer( yyin, YY_BUF_SIZE );
3573
0
    }
3574
3575
1
    yy_load_buffer_state(  );
3576
1
    }
3577
3578
138k
  {
3579
138k
#line 119 "toke.l"
3580
3581
138k
#line 3576 "toke.c"
3582
3583
425k
  while ( /*CONSTCOND*/1 )    /* loops until end-of-file is reached */
3584
425k
    {
3585
425k
    yy_cp = (yy_c_buf_p);
3586
3587
    /* Support of yytext. */
3588
425k
    *yy_cp = (yy_hold_char);
3589
3590
    /* yy_bp points to the position in yy_ch_buf of the start of
3591
     * the current run.
3592
     */
3593
425k
    yy_bp = yy_cp;
3594
3595
425k
    yy_current_state = (yy_start);
3596
425k
    yy_current_state += YY_AT_BOL();
3597
426k
yy_match:
3598
426k
    do
3599
4.53M
      {
3600
4.53M
      YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
3601
4.53M
      if ( yy_accept[yy_current_state] )
3602
4.11M
        {
3603
4.11M
        (yy_last_accepting_state) = yy_current_state;
3604
4.11M
        (yy_last_accepting_cpos) = yy_cp;
3605
4.11M
        }
3606
8.84M
      while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3607
4.30M
        {
3608
4.30M
        yy_current_state = (int) yy_def[yy_current_state];
3609
4.30M
        if ( yy_current_state >= 1242 )
3610
3.96M
          yy_c = yy_meta[yy_c];
3611
4.30M
        }
3612
4.53M
      yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3613
4.53M
      ++yy_cp;
3614
4.53M
      }
3615
4.53M
    while ( yy_base[yy_current_state] != 9534 );
3616
3617
426k
yy_find_action:
3618
426k
    yy_act = yy_accept[yy_current_state];
3619
426k
    if ( yy_act == 0 )
3620
340k
      { /* have to back up */
3621
340k
      yy_cp = (yy_last_accepting_cpos);
3622
340k
      yy_current_state = (yy_last_accepting_state);
3623
340k
      yy_act = yy_accept[yy_current_state];
3624
340k
      }
3625
3626
426k
    YY_DO_BEFORE_ACTION;
3627
3628
426k
do_action:  /* This label is used only to access EOF actions. */
3629
3630
426k
    switch ( yy_act )
3631
426k
  { /* beginning of action switch */
3632
0
      case 0: /* must back up */
3633
      /* undo the effects of YY_DO_BEFORE_ACTION */
3634
0
      *yy_cp = (yy_hold_char);
3635
0
      yy_cp = (yy_last_accepting_cpos);
3636
0
      yy_current_state = (yy_last_accepting_state);
3637
0
      goto yy_find_action;
3638
3639
0
case 1:
3640
0
YY_RULE_SETUP
3641
0
#line 120 "toke.l"
3642
0
{
3643
0
          LEXTRACE(", ");
3644
0
          return ',';
3645
0
      }     /* return ',' */
3646
0
  YY_BREAK
3647
0
case 2:
3648
0
YY_RULE_SETUP
3649
0
#line 125 "toke.l"
3650
0
BEGIN STARTDEFS;
3651
0
  YY_BREAK
3652
0
case 3:
3653
0
YY_RULE_SETUP
3654
0
#line 127 "toke.l"
3655
0
{
3656
0
          BEGIN INDEFS;
3657
0
          LEXTRACE("DEFVAR ");
3658
0
          if (!fill(sudoerstext, sudoersleng))
3659
0
        yyterminate();
3660
0
          return DEFVAR;
3661
0
      }
3662
0
  YY_BREAK
3663
3664
0
case 4:
3665
0
YY_RULE_SETUP
3666
0
#line 136 "toke.l"
3667
0
{
3668
0
          BEGIN STARTDEFS;
3669
0
          LEXTRACE(", ");
3670
0
          return ',';
3671
0
      }     /* return ',' */
3672
0
  YY_BREAK
3673
0
case 5:
3674
0
YY_RULE_SETUP
3675
0
#line 142 "toke.l"
3676
0
{
3677
0
          LEXTRACE("= ");
3678
0
          return '=';
3679
0
      }     /* return '=' */
3680
0
  YY_BREAK
3681
0
case 6:
3682
0
YY_RULE_SETUP
3683
0
#line 147 "toke.l"
3684
0
{
3685
0
          LEXTRACE("+= ");
3686
0
          return '+';
3687
0
      }     /* return '+' */
3688
0
  YY_BREAK
3689
0
case 7:
3690
0
YY_RULE_SETUP
3691
0
#line 152 "toke.l"
3692
0
{
3693
0
          LEXTRACE("-= ");
3694
0
          return '-';
3695
0
      }     /* return '-' */
3696
0
  YY_BREAK
3697
0
case 8:
3698
0
YY_RULE_SETUP
3699
0
#line 157 "toke.l"
3700
0
{
3701
0
          LEXTRACE("BEGINSTR ");
3702
0
          sudoerslval.string = NULL;
3703
0
          prev_state = YY_START;
3704
0
          BEGIN INSTR;
3705
0
      }
3706
0
  YY_BREAK
3707
0
case 9:
3708
0
YY_RULE_SETUP
3709
0
#line 164 "toke.l"
3710
0
{
3711
0
          LEXTRACE("WORD(2) ");
3712
0
          if (!fill(sudoerstext, sudoersleng))
3713
0
        yyterminate();
3714
0
          return WORD;
3715
0
      }
3716
0
  YY_BREAK
3717
3718
3719
0
case 10:
3720
/* rule 10 can match eol */
3721
0
YY_RULE_SETUP
3722
0
#line 173 "toke.l"
3723
0
{
3724
          /* Line continuation char followed by newline. */
3725
0
          sudolineno++;
3726
0
          continued = true;
3727
0
      }
3728
0
  YY_BREAK
3729
0
case 11:
3730
0
YY_RULE_SETUP
3731
0
#line 179 "toke.l"
3732
0
{
3733
0
          LEXTRACE("ENDSTR ");
3734
0
          BEGIN prev_state;
3735
3736
0
          if (sudoerslval.string == NULL) {
3737
0
        sudoers_errstr = N_("empty string");
3738
0
        LEXTRACE("ERROR ");
3739
0
        return ERROR;
3740
0
          }
3741
0
          if (prev_state == INITIAL || prev_state == GOTDEFS) {
3742
0
        switch (sudoerslval.string[0]) {
3743
0
        case '%':
3744
0
            if (sudoerslval.string[1] == '\0' ||
3745
0
          (sudoerslval.string[1] == ':' &&
3746
0
          sudoerslval.string[2] == '\0')) {
3747
0
          parser_leak_remove(LEAK_PTR, sudoerslval.string);
3748
0
          free(sudoerslval.string);
3749
0
          sudoers_errstr = N_("empty group");
3750
0
          LEXTRACE("ERROR ");
3751
0
          return ERROR;
3752
0
            }
3753
0
            LEXTRACE("USERGROUP ");
3754
0
            return USERGROUP;
3755
0
        case '+':
3756
0
            if (sudoerslval.string[1] == '\0') {
3757
0
          parser_leak_remove(LEAK_PTR, sudoerslval.string);
3758
0
          free(sudoerslval.string);
3759
0
          sudoers_errstr = N_("empty netgroup");
3760
0
          LEXTRACE("ERROR ");
3761
0
          return ERROR;
3762
0
            }
3763
0
            LEXTRACE("NETGROUP ");
3764
0
            return NETGROUP;
3765
0
        }
3766
0
          }
3767
0
          LEXTRACE("WORD(4) ");
3768
0
          return WORD;
3769
0
      }
3770
0
  YY_BREAK
3771
0
case 12:
3772
0
YY_RULE_SETUP
3773
0
#line 218 "toke.l"
3774
0
{
3775
0
          LEXTRACE("BACKSLASH ");
3776
0
          if (!append(sudoerstext, sudoersleng))
3777
0
        yyterminate();
3778
0
      }
3779
0
  YY_BREAK
3780
1
case 13:
3781
1
YY_RULE_SETUP
3782
1
#line 224 "toke.l"
3783
1
{
3784
1
          LEXTRACE("STRBODY ");
3785
1
          if (!append(sudoerstext, sudoersleng))
3786
0
        yyterminate();
3787
1
      }
3788
1
  YY_BREAK
3789
3790
3791
1
case 14:
3792
0
YY_RULE_SETUP
3793
0
#line 232 "toke.l"
3794
0
{
3795
          /* quoted fnmatch glob char, pass verbatim */
3796
0
          LEXTRACE("QUOTEDCHAR ");
3797
0
          if (!fill_args(sudoerstext, 2, sawspace))
3798
0
        yyterminate();
3799
0
          sawspace = false;
3800
0
      }
3801
0
  YY_BREAK
3802
0
case 15:
3803
0
YY_RULE_SETUP
3804
0
#line 240 "toke.l"
3805
0
{
3806
          /* quoted sudoers special char, strip backslash */
3807
0
          LEXTRACE("QUOTEDCHAR ");
3808
0
          if (!fill_args(sudoerstext + 1, 1, sawspace))
3809
0
        yyterminate();
3810
0
          sawspace = false;
3811
0
      }
3812
0
  YY_BREAK
3813
0
case 16:
3814
/* rule 16 can match eol */
3815
0
YY_RULE_SETUP
3816
0
#line 248 "toke.l"
3817
0
{
3818
0
          BEGIN INITIAL;
3819
0
          sudoersless(0);
3820
0
          yy_set_bol(0);
3821
0
          return COMMAND;
3822
0
      }     /* end of command line args */
3823
0
  YY_BREAK
3824
2
case 17:
3825
2
YY_RULE_SETUP
3826
2
#line 255 "toke.l"
3827
2
{
3828
2
          if (sudoerslval.command.args == NULL && sudoerstext[0] == '^') {
3829
2
        LEXTRACE("ARG REGEX ");
3830
2
        BEGIN GOTREGEX;
3831
2
        sudoersless(0);
3832
2
        yy_set_bol(0);
3833
2
          } else {
3834
0
        LEXTRACE("ARG ");
3835
0
        if (!fill_args(sudoerstext, sudoersleng, sawspace))
3836
0
            yyterminate();
3837
0
        sawspace = false;
3838
0
          }
3839
2
      }     /* a command line arg */
3840
2
  YY_BREAK
3841
3842
3843
86.1k
case 18:
3844
86.1k
YY_RULE_SETUP
3845
86.1k
#line 271 "toke.l"
3846
86.1k
{
3847
          /* quoted character, pass verbatim */
3848
86.1k
          LEXTRACE("QUOTEDCHAR ");
3849
86.1k
          if (!fill_args(sudoerstext, 2, false))
3850
0
        yyterminate();
3851
86.1k
      }
3852
86.1k
  YY_BREAK
3853
86.1k
case 19:
3854
/* rule 19 can match eol */
3855
1
YY_RULE_SETUP
3856
1
#line 278 "toke.l"
3857
1
{
3858
          /* Let the parser attempt to recover. */
3859
1
          sudoersless(0);
3860
1
          yy_set_bol(0);
3861
1
          BEGIN INITIAL;
3862
3863
1
          sudoers_errstr = N_("unterminated regular expression");
3864
1
          LEXTRACE("ERROR ");
3865
1
          return ERROR;
3866
86.1k
      }      /* illegal inside regex */
3867
0
  YY_BREAK
3868
0
case 20:
3869
0
YY_RULE_SETUP
3870
0
#line 289 "toke.l"
3871
0
{
3872
0
          if (!fill_args("$", 1, false))
3873
0
        yyterminate();
3874
0
          BEGIN INITIAL;
3875
0
          continued = false;
3876
0
          if (sudoers_strict()) {
3877
0
        if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) {
3878
0
            LEXTRACE("ERROR ");
3879
0
            return ERROR;
3880
0
        }
3881
0
          }
3882
0
          return COMMAND;
3883
0
      }
3884
0
  YY_BREAK
3885
62.0k
case 21:
3886
62.0k
YY_RULE_SETUP
3887
62.0k
#line 303 "toke.l"
3888
62.0k
{
3889
62.0k
          if (continued) {
3890
        /* remove whitespace after line continuation */
3891
0
        while (isblank((unsigned char)*sudoerstext)) {
3892
0
            sudoerstext++;
3893
0
            sudoersleng--;
3894
0
        }
3895
0
        continued = false;
3896
0
          }
3897
62.0k
          if (sudoersleng != 0) {
3898
62.0k
        if (!fill_args(sudoerstext, sudoersleng, false))
3899
0
            yyterminate();
3900
62.0k
          }
3901
62.0k
      }
3902
62.0k
  YY_BREAK
3903
3904
62.0k
case 22:
3905
0
YY_RULE_SETUP
3906
0
#line 319 "toke.l"
3907
0
{
3908
          /* Only return DIGEST if the length is correct. */
3909
0
          size_t digest_len =
3910
0
        sudo_digest_getlen(digest_type);
3911
0
          if ((size_t)sudoersleng == digest_len * 2) {
3912
0
        if (!fill(sudoerstext, sudoersleng))
3913
0
            yyterminate();
3914
0
        BEGIN INITIAL;
3915
0
        LEXTRACE("DIGEST ");
3916
0
        return DIGEST;
3917
0
          }
3918
0
          BEGIN INITIAL;
3919
0
          sudoersless(sudoersleng);
3920
0
      } /* hex digest */
3921
0
  YY_BREAK
3922
0
case 23:
3923
0
YY_RULE_SETUP
3924
0
#line 334 "toke.l"
3925
0
{
3926
          /* Only return DIGEST if the length is correct. */
3927
0
          size_t len, digest_len =
3928
0
        sudo_digest_getlen(digest_type);
3929
0
          if (sudoerstext[sudoersleng - 1] == '=') {
3930
        /* use padding */
3931
0
        len = 4 * ((digest_len + 2) / 3);
3932
0
          } else {
3933
        /* no padding */
3934
0
        len = (4 * digest_len + 2) / 3;
3935
0
          }
3936
0
          if ((size_t)sudoersleng == len) {
3937
0
        if (!fill(sudoerstext, sudoersleng))
3938
0
            yyterminate();
3939
0
        BEGIN INITIAL;
3940
0
        LEXTRACE("DIGEST ");
3941
0
        return DIGEST;
3942
0
          }
3943
0
          BEGIN INITIAL;
3944
0
          sudoersless(sudoersleng);
3945
0
      } /* base64 digest */
3946
0
  YY_BREAK
3947
0
case 24:
3948
0
YY_RULE_SETUP
3949
0
#line 356 "toke.l"
3950
0
{
3951
0
          if (continued) {
3952
0
        sudoers_errstr = N_("invalid line continuation");
3953
0
        LEXTRACE("ERROR ");
3954
0
        return ERROR;
3955
0
          }
3956
3957
0
          BEGIN GOTINC;
3958
0
          LEXTRACE("INCLUDE ");
3959
0
          return INCLUDE;
3960
0
      }
3961
0
  YY_BREAK
3962
0
case 25:
3963
0
YY_RULE_SETUP
3964
0
#line 368 "toke.l"
3965
0
{
3966
0
          if (continued) {
3967
0
        sudoers_errstr = N_("invalid line continuation");
3968
0
        LEXTRACE("ERROR ");
3969
0
        return ERROR;
3970
0
          }
3971
3972
0
          BEGIN GOTINC;
3973
0
          LEXTRACE("INCLUDEDIR ");
3974
0
          return INCLUDEDIR;
3975
0
      }
3976
0
  YY_BREAK
3977
0
case 26:
3978
/* rule 26 can match eol */
3979
0
YY_RULE_SETUP
3980
0
#line 380 "toke.l"
3981
0
{
3982
0
          if (continued) {
3983
0
        sudoers_errstr = N_("invalid line continuation");
3984
0
        LEXTRACE("ERROR ");
3985
0
        return ERROR;
3986
0
          }
3987
3988
          /* only consume #include */
3989
0
          sudoersless(sizeof("#include") - 1);
3990
0
          yy_set_bol(0);
3991
3992
0
          BEGIN GOTINC;
3993
0
          LEXTRACE("INCLUDE ");
3994
0
          return INCLUDE;
3995
0
      }
3996
0
  YY_BREAK
3997
0
case 27:
3998
/* rule 27 can match eol */
3999
0
YY_RULE_SETUP
4000
0
#line 396 "toke.l"
4001
0
{
4002
0
          if (continued) {
4003
0
        sudoers_errstr = N_("invalid line continuation");
4004
0
        LEXTRACE("ERROR ");
4005
0
        return ERROR;
4006
0
          }
4007
4008
          /* only consume #includedir */
4009
0
          sudoersless(sizeof("#includedir") - 1);
4010
0
          yy_set_bol(0);
4011
4012
0
          BEGIN GOTINC;
4013
0
          LEXTRACE("INCLUDEDIR ");
4014
0
          return INCLUDEDIR;
4015
0
      }
4016
0
  YY_BREAK
4017
0
case 28:
4018
0
YY_RULE_SETUP
4019
0
#line 412 "toke.l"
4020
0
{
4021
0
          char deftype;
4022
0
          size_t n;
4023
4024
0
          if (continued) {
4025
0
        sudoers_errstr = N_("invalid line continuation");
4026
0
        LEXTRACE("ERROR ");
4027
0
        return ERROR;
4028
0
          }
4029
4030
0
          for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
4031
0
        continue;
4032
0
          n += sizeof("Defaults") - 1;
4033
0
          if ((deftype = sudoerstext[n++]) != '\0') {
4034
0
        while (isblank((unsigned char)sudoerstext[n]))
4035
0
            n++;
4036
0
          }
4037
0
          BEGIN GOTDEFS;
4038
0
          switch (deftype) {
4039
0
        case ':':
4040
0
            sudoersless(n);
4041
0
            LEXTRACE("DEFAULTS_USER ");
4042
0
            return DEFAULTS_USER;
4043
0
        case '>':
4044
0
            sudoersless(n);
4045
0
            LEXTRACE("DEFAULTS_RUNAS ");
4046
0
            return DEFAULTS_RUNAS;
4047
0
        case '@':
4048
0
            sudoersless(n);
4049
0
            LEXTRACE("DEFAULTS_HOST ");
4050
0
            return DEFAULTS_HOST;
4051
0
        case '!':
4052
0
            sudoersless(n);
4053
0
            LEXTRACE("DEFAULTS_CMND ");
4054
0
            return DEFAULTS_CMND;
4055
0
        default:
4056
0
            LEXTRACE("DEFAULTS ");
4057
0
            return DEFAULTS;
4058
0
          }
4059
0
      }
4060
0
  YY_BREAK
4061
0
case 29:
4062
0
YY_RULE_SETUP
4063
0
#line 453 "toke.l"
4064
0
{
4065
0
          size_t n;
4066
4067
0
          if (continued) {
4068
0
        sudoers_errstr = N_("invalid line continuation");
4069
0
        LEXTRACE("ERROR ");
4070
0
        return ERROR;
4071
0
          }
4072
4073
0
          for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
4074
0
        continue;
4075
0
          switch (sudoerstext[n]) {
4076
0
        case 'H':
4077
0
            LEXTRACE("HOSTALIAS ");
4078
0
            return HOSTALIAS;
4079
0
        case 'C':
4080
0
            LEXTRACE("CMNDALIAS ");
4081
0
            return CMNDALIAS;
4082
0
        case 'U':
4083
0
            LEXTRACE("USERALIAS ");
4084
0
            return USERALIAS;
4085
0
        case 'R':
4086
0
            LEXTRACE("RUNASALIAS ");
4087
0
            return RUNASALIAS;
4088
0
          }
4089
0
      }
4090
0
  YY_BREAK
4091
0
case 30:
4092
0
YY_RULE_SETUP
4093
0
#line 480 "toke.l"
4094
0
{
4095
        /* cmnd does not require passwd for this user */
4096
0
            LEXTRACE("NOPASSWD ");
4097
0
            return NOPASSWD;
4098
0
      }
4099
0
  YY_BREAK
4100
0
case 31:
4101
0
YY_RULE_SETUP
4102
0
#line 486 "toke.l"
4103
0
{
4104
        /* cmnd requires passwd for this user */
4105
0
            LEXTRACE("PASSWD ");
4106
0
            return PASSWD;
4107
0
      }
4108
0
  YY_BREAK
4109
0
case 32:
4110
0
YY_RULE_SETUP
4111
0
#line 492 "toke.l"
4112
0
{
4113
0
            LEXTRACE("NOEXEC ");
4114
0
            return NOEXEC;
4115
0
      }
4116
0
  YY_BREAK
4117
0
case 33:
4118
0
YY_RULE_SETUP
4119
0
#line 497 "toke.l"
4120
0
{
4121
0
            LEXTRACE("EXEC ");
4122
0
            return EXEC;
4123
0
      }
4124
0
  YY_BREAK
4125
0
case 34:
4126
0
YY_RULE_SETUP
4127
0
#line 502 "toke.l"
4128
0
{
4129
0
            LEXTRACE("INTERCEPT ");
4130
0
            return INTERCEPT;
4131
0
      }
4132
0
  YY_BREAK
4133
0
case 35:
4134
0
YY_RULE_SETUP
4135
0
#line 507 "toke.l"
4136
0
{
4137
0
            LEXTRACE("NOINTERCEPT ");
4138
0
            return NOINTERCEPT;
4139
0
      }
4140
0
  YY_BREAK
4141
0
case 36:
4142
0
YY_RULE_SETUP
4143
0
#line 512 "toke.l"
4144
0
{
4145
0
            LEXTRACE("SETENV ");
4146
0
            return SETENV;
4147
0
      }
4148
0
  YY_BREAK
4149
0
case 37:
4150
0
YY_RULE_SETUP
4151
0
#line 517 "toke.l"
4152
0
{
4153
0
            LEXTRACE("NOSETENV ");
4154
0
            return NOSETENV;
4155
0
      }
4156
0
  YY_BREAK
4157
0
case 38:
4158
0
YY_RULE_SETUP
4159
0
#line 522 "toke.l"
4160
0
{
4161
0
            LEXTRACE("LOG_OUTPUT ");
4162
0
            return LOG_OUTPUT;
4163
0
      }
4164
0
  YY_BREAK
4165
0
case 39:
4166
0
YY_RULE_SETUP
4167
0
#line 527 "toke.l"
4168
0
{
4169
0
            LEXTRACE("NOLOG_OUTPUT ");
4170
0
            return NOLOG_OUTPUT;
4171
0
      }
4172
0
  YY_BREAK
4173
0
case 40:
4174
0
YY_RULE_SETUP
4175
0
#line 532 "toke.l"
4176
0
{
4177
0
            LEXTRACE("LOG_INPUT ");
4178
0
            return LOG_INPUT;
4179
0
      }
4180
0
  YY_BREAK
4181
0
case 41:
4182
0
YY_RULE_SETUP
4183
0
#line 537 "toke.l"
4184
0
{
4185
0
            LEXTRACE("NOLOG_INPUT ");
4186
0
            return NOLOG_INPUT;
4187
0
      }
4188
0
  YY_BREAK
4189
0
case 42:
4190
0
YY_RULE_SETUP
4191
0
#line 542 "toke.l"
4192
0
{
4193
0
            LEXTRACE("MAIL ");
4194
0
            return MAIL;
4195
0
      }
4196
0
  YY_BREAK
4197
0
case 43:
4198
0
YY_RULE_SETUP
4199
0
#line 547 "toke.l"
4200
0
{
4201
0
            LEXTRACE("NOMAIL ");
4202
0
            return NOMAIL;
4203
0
      }
4204
0
  YY_BREAK
4205
0
case 44:
4206
0
YY_RULE_SETUP
4207
0
#line 552 "toke.l"
4208
0
{
4209
0
            LEXTRACE("FOLLOW ");
4210
0
            return FOLLOWLNK;
4211
0
      }
4212
0
  YY_BREAK
4213
0
case 45:
4214
0
YY_RULE_SETUP
4215
0
#line 557 "toke.l"
4216
0
{
4217
0
            LEXTRACE("NOFOLLOW ");
4218
0
            return NOFOLLOWLNK;
4219
0
      }
4220
0
  YY_BREAK
4221
0
case 46:
4222
0
YY_RULE_SETUP
4223
0
#line 562 "toke.l"
4224
0
{
4225
0
          if (sudoerstext[0] == '+')
4226
0
        sudoers_errstr = N_("empty netgroup");
4227
0
          else
4228
0
        sudoers_errstr = N_("empty group");
4229
0
          LEXTRACE("ERROR ");
4230
0
          return ERROR;
4231
0
      }
4232
0
  YY_BREAK
4233
0
case 47:
4234
0
YY_RULE_SETUP
4235
0
#line 571 "toke.l"
4236
0
{
4237
          /* netgroup */
4238
0
          if (!fill(sudoerstext, sudoersleng))
4239
0
        yyterminate();
4240
0
          LEXTRACE("NETGROUP ");
4241
0
          return NETGROUP;
4242
0
      }
4243
0
  YY_BREAK
4244
0
case 48:
4245
0
YY_RULE_SETUP
4246
0
#line 579 "toke.l"
4247
0
{
4248
          /* group */
4249
0
          if (!fill(sudoerstext, sudoersleng))
4250
0
        yyterminate();
4251
0
          LEXTRACE("USERGROUP ");
4252
0
          return USERGROUP;
4253
0
      }
4254
0
  YY_BREAK
4255
0
case 49:
4256
0
YY_RULE_SETUP
4257
0
#line 587 "toke.l"
4258
0
{
4259
0
          if (!fill(sudoerstext, sudoersleng))
4260
0
        yyterminate();
4261
0
          LEXTRACE("NTWKADDR ");
4262
0
          return NTWKADDR;
4263
0
      }
4264
0
  YY_BREAK
4265
0
case 50:
4266
0
YY_RULE_SETUP
4267
0
#line 594 "toke.l"
4268
0
{
4269
0
          if (!fill(sudoerstext, sudoersleng))
4270
0
        yyterminate();
4271
0
          LEXTRACE("NTWKADDR ");
4272
0
          return NTWKADDR;
4273
0
      }
4274
0
  YY_BREAK
4275
0
case 51:
4276
0
YY_RULE_SETUP
4277
0
#line 601 "toke.l"
4278
0
{
4279
0
          if (!ipv6_valid(sudoerstext)) {
4280
0
        sudoers_errstr = N_("invalid IPv6 address");
4281
0
        LEXTRACE("ERROR ");
4282
0
        return ERROR;
4283
0
          }
4284
0
          if (!fill(sudoerstext, sudoersleng))
4285
0
        yyterminate();
4286
0
          LEXTRACE("NTWKADDR ");
4287
0
          return NTWKADDR;
4288
0
      }
4289
0
  YY_BREAK
4290
0
case 52:
4291
0
YY_RULE_SETUP
4292
0
#line 613 "toke.l"
4293
0
{
4294
0
          if (!ipv6_valid(sudoerstext)) {
4295
0
        sudoers_errstr = N_("invalid IPv6 address");
4296
0
        LEXTRACE("ERROR ");
4297
0
        return ERROR;
4298
0
          }
4299
0
          if (!fill(sudoerstext, sudoersleng))
4300
0
        yyterminate();
4301
0
          LEXTRACE("NTWKADDR ");
4302
0
          return NTWKADDR;
4303
0
      }
4304
0
  YY_BREAK
4305
0
case 53:
4306
0
YY_RULE_SETUP
4307
0
#line 625 "toke.l"
4308
0
{
4309
0
          LEXTRACE("ALL ");
4310
0
          return ALL;
4311
4312
0
      }
4313
0
  YY_BREAK
4314
0
case 54:
4315
0
YY_RULE_SETUP
4316
0
#line 631 "toke.l"
4317
0
{
4318
0
          LEXTRACE("CMND_TIMEOUT ");
4319
0
          return CMND_TIMEOUT;
4320
0
      }
4321
0
  YY_BREAK
4322
0
case 55:
4323
0
YY_RULE_SETUP
4324
0
#line 636 "toke.l"
4325
0
{
4326
0
          LEXTRACE("NOTBEFORE ");
4327
0
          return NOTBEFORE;
4328
0
      }
4329
0
  YY_BREAK
4330
0
case 56:
4331
0
YY_RULE_SETUP
4332
0
#line 641 "toke.l"
4333
0
{
4334
0
          LEXTRACE("NOTAFTER ");
4335
0
          return NOTAFTER;
4336
0
      }
4337
0
  YY_BREAK
4338
0
case 57:
4339
0
YY_RULE_SETUP
4340
0
#line 646 "toke.l"
4341
0
{
4342
0
          LEXTRACE("CWD ");
4343
0
          prev_state = YY_START;
4344
0
          BEGIN EXPECTPATH;
4345
0
          return CWD;
4346
0
      }
4347
0
  YY_BREAK
4348
0
case 58:
4349
0
YY_RULE_SETUP
4350
0
#line 653 "toke.l"
4351
0
{
4352
0
          LEXTRACE("CHROOT ");
4353
0
          prev_state = YY_START;
4354
0
          BEGIN EXPECTPATH;
4355
0
          return CHROOT;
4356
0
      }
4357
0
  YY_BREAK
4358
0
case 59:
4359
0
YY_RULE_SETUP
4360
0
#line 660 "toke.l"
4361
0
{
4362
0
          LEXTRACE("ROLE ");
4363
0
          return ROLE;
4364
0
      }
4365
0
  YY_BREAK
4366
0
case 60:
4367
0
YY_RULE_SETUP
4368
0
#line 665 "toke.l"
4369
0
{
4370
0
          LEXTRACE("TYPE ");
4371
0
          return TYPE;
4372
0
      }
4373
0
  YY_BREAK
4374
0
case 61:
4375
0
YY_RULE_SETUP
4376
0
#line 669 "toke.l"
4377
0
{
4378
0
          LEXTRACE("APPARMOR_PROFILE ");
4379
0
          return APPARMOR_PROFILE;
4380
0
      }
4381
0
  YY_BREAK
4382
0
case 62:
4383
0
YY_RULE_SETUP
4384
0
#line 673 "toke.l"
4385
0
{
4386
0
          LEXTRACE("PRIVS ");
4387
0
          return PRIVS;
4388
0
      }
4389
0
  YY_BREAK
4390
0
case 63:
4391
0
YY_RULE_SETUP
4392
0
#line 678 "toke.l"
4393
0
{
4394
0
          LEXTRACE("LIMITPRIVS ");
4395
0
          return LIMITPRIVS;
4396
0
      }
4397
0
  YY_BREAK
4398
1
case 64:
4399
1
YY_RULE_SETUP
4400
1
#line 683 "toke.l"
4401
1
{
4402
1
          if (!fill(sudoerstext, sudoersleng))
4403
0
        yyterminate();
4404
1
          LEXTRACE("ALIAS ");
4405
1
          return ALIAS;
4406
1
      }
4407
0
  YY_BREAK
4408
0
case 65:
4409
0
YY_RULE_SETUP
4410
0
#line 690 "toke.l"
4411
0
{
4412
          /* XXX - no way to specify digest for command */
4413
          /* no command args allowed for Defaults!/path */
4414
0
          if (!fill_cmnd(sudoerstext, sudoersleng))
4415
0
        yyterminate();
4416
0
          LEXTRACE("COMMAND ");
4417
0
          return COMMAND;
4418
0
      }
4419
0
  YY_BREAK
4420
0
case 66:
4421
0
YY_RULE_SETUP
4422
0
#line 699 "toke.l"
4423
0
{
4424
0
          digest_type = SUDO_DIGEST_SHA224;
4425
0
          BEGIN WANTDIGEST;
4426
0
          LEXTRACE("SHA224_TOK ");
4427
0
          return SHA224_TOK;
4428
0
      }
4429
0
  YY_BREAK
4430
0
case 67:
4431
0
YY_RULE_SETUP
4432
0
#line 706 "toke.l"
4433
0
{
4434
0
          digest_type = SUDO_DIGEST_SHA256;
4435
0
          BEGIN WANTDIGEST;
4436
0
          LEXTRACE("SHA256_TOK ");
4437
0
          return SHA256_TOK;
4438
0
      }
4439
0
  YY_BREAK
4440
0
case 68:
4441
0
YY_RULE_SETUP
4442
0
#line 713 "toke.l"
4443
0
{
4444
0
          digest_type = SUDO_DIGEST_SHA384;
4445
0
          BEGIN WANTDIGEST;
4446
0
          LEXTRACE("SHA384_TOK ");
4447
0
          return SHA384_TOK;
4448
0
      }
4449
0
  YY_BREAK
4450
0
case 69:
4451
0
YY_RULE_SETUP
4452
0
#line 720 "toke.l"
4453
0
{
4454
0
          digest_type = SUDO_DIGEST_SHA512;
4455
0
          BEGIN WANTDIGEST;
4456
0
          LEXTRACE("SHA512_TOK ");
4457
0
          return SHA512_TOK;
4458
0
      }
4459
0
  YY_BREAK
4460
0
case 70:
4461
0
YY_RULE_SETUP
4462
0
#line 727 "toke.l"
4463
0
{
4464
0
          BEGIN GOTCMND;
4465
0
          LEXTRACE("COMMAND ");
4466
0
          if (!fill_cmnd(sudoerstext, sudoersleng))
4467
0
        yyterminate();
4468
0
      }     /* sudo -e */
4469
0
  YY_BREAK
4470
0
case 71:
4471
0
YY_RULE_SETUP
4472
0
#line 734 "toke.l"
4473
0
{
4474
0
        BEGIN prev_state;
4475
0
        if (!fill(sudoerstext, sudoersleng))
4476
0
            yyterminate();
4477
0
        LEXTRACE("WORD(5) ");
4478
0
        return WORD;
4479
0
      }
4480
0
  YY_BREAK
4481
0
case 72:
4482
0
YY_RULE_SETUP
4483
0
#line 742 "toke.l"
4484
0
{
4485
          /* directories can't have args... */
4486
0
          if (sudoerstext[sudoersleng - 1] == '/') {
4487
0
        LEXTRACE("COMMAND ");
4488
0
        if (!fill_cmnd(sudoerstext, sudoersleng))
4489
0
            yyterminate();
4490
0
        return COMMAND;
4491
0
          }
4492
0
          BEGIN GOTCMND;
4493
0
          LEXTRACE("COMMAND ");
4494
0
          if (!fill_cmnd(sudoerstext, sudoersleng))
4495
0
        yyterminate();
4496
0
      }     /* a pathname */
4497
0
  YY_BREAK
4498
2
case 73:
4499
2
YY_RULE_SETUP
4500
2
#line 756 "toke.l"
4501
2
{
4502
2
          if (sudoers_strict()) {
4503
0
        if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) {
4504
0
            LEXTRACE("ERROR ");
4505
0
            return ERROR;
4506
0
        }
4507
0
          }
4508
2
          BEGIN GOTCMND;
4509
2
          LEXTRACE("COMMAND ");
4510
2
          if (!fill_cmnd(sudoerstext, sudoersleng))
4511
0
        yyterminate();
4512
2
      }     /* a regex */
4513
2
  YY_BREAK
4514
2
case 74:
4515
1
YY_RULE_SETUP
4516
1
#line 769 "toke.l"
4517
1
{
4518
1
          LEXTRACE("BEGINSTR ");
4519
1
          sudoerslval.string = NULL;
4520
1
          if (YY_START != EXPECTPATH)
4521
1
        prev_state = YY_START;
4522
1
          BEGIN INSTR;
4523
1
      }
4524
1
  YY_BREAK
4525
138k
case 75:
4526
138k
YY_RULE_SETUP
4527
138k
#line 777 "toke.l"
4528
138k
{
4529
          /* a word */
4530
138k
          if (!fill(sudoerstext, sudoersleng))
4531
0
        yyterminate();
4532
138k
          LEXTRACE("WORD(6) ");
4533
138k
          return WORD;
4534
138k
      }
4535
0
  YY_BREAK
4536
4537
0
case 76:
4538
0
YY_RULE_SETUP
4539
0
#line 786 "toke.l"
4540
0
{
4541
          /* include file/directory */
4542
0
          if (!fill(sudoerstext, sudoersleng))
4543
0
        yyterminate();
4544
0
          BEGIN INITIAL;
4545
0
          LEXTRACE("WORD(7) ");
4546
0
          return WORD;
4547
0
      }
4548
0
  YY_BREAK
4549
0
case 77:
4550
0
YY_RULE_SETUP
4551
0
#line 795 "toke.l"
4552
0
{
4553
0
          LEXTRACE("BEGINSTR ");
4554
0
          sudoerslval.string = NULL;
4555
0
          prev_state = INITIAL;
4556
0
          BEGIN INSTR;
4557
0
      }
4558
0
  YY_BREAK
4559
4560
0
case 78:
4561
0
YY_RULE_SETUP
4562
0
#line 803 "toke.l"
4563
0
{
4564
0
          LEXTRACE("( ");
4565
0
          return '(';
4566
0
      }
4567
0
  YY_BREAK
4568
0
case 79:
4569
0
YY_RULE_SETUP
4570
0
#line 808 "toke.l"
4571
0
{
4572
0
          LEXTRACE(") ");
4573
0
          return ')';
4574
0
      }
4575
0
  YY_BREAK
4576
16
case 80:
4577
16
YY_RULE_SETUP
4578
16
#line 813 "toke.l"
4579
16
{
4580
16
          LEXTRACE(", ");
4581
16
          return ',';
4582
0
      }     /* return ',' */
4583
0
  YY_BREAK
4584
2
case 81:
4585
2
YY_RULE_SETUP
4586
2
#line 818 "toke.l"
4587
2
{
4588
2
          LEXTRACE("= ");
4589
2
          return '=';
4590
0
      }     /* return '=' */
4591
0
  YY_BREAK
4592
7
case 82:
4593
7
YY_RULE_SETUP
4594
7
#line 823 "toke.l"
4595
7
{
4596
7
          LEXTRACE(": ");
4597
7
          return ':';
4598
0
      }     /* return ':' */
4599
0
  YY_BREAK
4600
69.6k
case 83:
4601
69.6k
YY_RULE_SETUP
4602
69.6k
#line 828 "toke.l"
4603
69.6k
{
4604
69.6k
          if (sudoersleng & 1) {
4605
3
        LEXTRACE("!");
4606
3
        return '!'; /* return '!' */
4607
3
          }
4608
69.6k
      }
4609
69.6k
  YY_BREAK
4610
69.6k
case 84:
4611
/* rule 84 can match eol */
4612
35
YY_RULE_SETUP
4613
35
#line 835 "toke.l"
4614
35
{
4615
35
          if (YY_START == INSTR) {
4616
        /* throw away old string */
4617
1
        parser_leak_remove(LEAK_PTR, sudoerslval.string);
4618
1
        free(sudoerslval.string);
4619
        /* re-scan after changing state */
4620
1
        BEGIN INITIAL;
4621
1
        sudoersless(0);
4622
1
        sudoers_errstr = N_("unexpected line break in string");
4623
1
        LEXTRACE("ERROR ");
4624
1
        return ERROR;
4625
1
          }
4626
34
          BEGIN INITIAL;
4627
34
          sudolineno++;
4628
34
          continued = false;
4629
34
          LEXTRACE("\n");
4630
34
          return '\n';
4631
35
      }      /* return newline */
4632
0
  YY_BREAK
4633
69.1k
case 85:
4634
69.1k
YY_RULE_SETUP
4635
69.1k
#line 854 "toke.l"
4636
69.1k
{     /* throw away space/tabs */
4637
69.1k
          sawspace = true;  /* but remember for fill_args */
4638
69.1k
      }
4639
69.1k
  YY_BREAK
4640
1
case 86:
4641
/* rule 86 can match eol */
4642
1
YY_RULE_SETUP
4643
1
#line 858 "toke.l"
4644
1
{
4645
1
          sawspace = true;  /* remember for fill_args */
4646
1
          sudolineno++;
4647
1
          continued = true;
4648
1
      }     /* throw away EOL after \ */
4649
1
  YY_BREAK
4650
0
case 87:
4651
/* rule 87 can match eol */
4652
0
YY_RULE_SETUP
4653
0
#line 864 "toke.l"
4654
0
{
4655
0
          if (sudoerstext[sudoersleng - 1] == '\n') {
4656
        /* comment ending in a newline */
4657
0
        BEGIN INITIAL;
4658
0
        sudolineno++;
4659
0
        continued = false;
4660
0
          } else if (!feof(sudoersin)) {
4661
0
        sudoers_errstr = strerror(errno);
4662
0
        LEXTRACE("ERROR ");
4663
0
        return ERROR;
4664
0
          }
4665
0
          LEXTRACE("#\n");
4666
0
          return '\n';
4667
0
      }     /* comment, not uid/gid */
4668
0
  YY_BREAK
4669
2
case 88:
4670
2
YY_RULE_SETUP
4671
2
#line 879 "toke.l"
4672
2
{
4673
2
          LEXTRACE("NOMATCH ");
4674
2
          return NOMATCH;
4675
0
      } /* parse error, no matching token */
4676
0
  YY_BREAK
4677
6
case YY_STATE_EOF(INITIAL):
4678
6
case YY_STATE_EOF(GOTDEFS):
4679
6
case YY_STATE_EOF(GOTCMND):
4680
7
case YY_STATE_EOF(GOTREGEX):
4681
7
case YY_STATE_EOF(STARTDEFS):
4682
7
case YY_STATE_EOF(INDEFS):
4683
7
case YY_STATE_EOF(INSTR):
4684
7
case YY_STATE_EOF(WANTDIGEST):
4685
7
case YY_STATE_EOF(GOTINC):
4686
7
case YY_STATE_EOF(EXPECTPATH):
4687
7
#line 884 "toke.l"
4688
7
{
4689
7
          if (!pop_include())
4690
7
        yyterminate();
4691
7
      }
4692
0
  YY_BREAK
4693
0
case 89:
4694
0
YY_RULE_SETUP
4695
0
#line 889 "toke.l"
4696
0
ECHO;
4697
0
  YY_BREAK
4698
0
#line 4693 "toke.c"
4699
4700
554
  case YY_END_OF_BUFFER:
4701
554
    {
4702
    /* Amount of text matched not including the EOB char. */
4703
554
    int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
4704
4705
    /* Undo the effects of YY_DO_BEFORE_ACTION. */
4706
554
    *yy_cp = (yy_hold_char);
4707
554
    YY_RESTORE_YY_MORE_OFFSET
4708
4709
554
    if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4710
7
      {
4711
      /* We're scanning a new file or input source.  It's
4712
       * possible that this happened because the user
4713
       * just pointed yyin at a new source and called
4714
       * yylex().  If so, then we have to assure
4715
       * consistency between YY_CURRENT_BUFFER and our
4716
       * globals.  Here is the right place to do so, because
4717
       * this is the first action (other than possibly a
4718
       * back-up) that will match for the new input source.
4719
       */
4720
7
      (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4721
7
      YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4722
7
      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4723
7
      }
4724
4725
    /* Note that here we test for yy_c_buf_p "<=" to the position
4726
     * of the first EOB in the buffer, since yy_c_buf_p will
4727
     * already have been incremented past the NUL character
4728
     * (since all states make transitions on EOB to the
4729
     * end-of-buffer state).  Contrast this with the test
4730
     * in input().
4731
     */
4732
554
    if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4733
0
      { /* This was really a NUL. */
4734
0
      yy_state_type yy_next_state;
4735
4736
0
      (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
4737
4738
0
      yy_current_state = yy_get_previous_state(  );
4739
4740
      /* Okay, we're now positioned to make the NUL
4741
       * transition.  We couldn't have
4742
       * yy_get_previous_state() go ahead and do it
4743
       * for us because it doesn't know how to deal
4744
       * with the possibility of jamming (and we don't
4745
       * want to build jamming into it because then it
4746
       * will run more slowly).
4747
       */
4748
4749
0
      yy_next_state = yy_try_NUL_trans( yy_current_state );
4750
4751
0
      yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4752
4753
0
      if ( yy_next_state )
4754
0
        {
4755
        /* Consume the NUL. */
4756
0
        yy_cp = ++(yy_c_buf_p);
4757
0
        yy_current_state = yy_next_state;
4758
0
        goto yy_match;
4759
0
        }
4760
4761
0
      else
4762
0
        {
4763
0
        yy_cp = (yy_c_buf_p);
4764
0
        goto yy_find_action;
4765
0
        }
4766
0
      }
4767
4768
554
    else switch ( yy_get_next_buffer(  ) )
4769
554
      {
4770
7
      case EOB_ACT_END_OF_FILE:
4771
7
        {
4772
7
        (yy_did_buffer_switch_on_eof) = 0;
4773
4774
7
        if ( yywrap(  ) )
4775
7
          {
4776
          /* Note: because we've taken care in
4777
           * yy_get_next_buffer() to have set up
4778
           * yytext, we can now set up
4779
           * yy_c_buf_p so that if some total
4780
           * hoser (like flex itself) wants to
4781
           * call the scanner after we return the
4782
           * YY_NULL, it'll still work - another
4783
           * YY_NULL will get returned.
4784
           */
4785
7
          (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
4786
4787
7
          yy_act = YY_STATE_EOF(YY_START);
4788
7
          goto do_action;
4789
7
          }
4790
4791
0
        else
4792
0
          {
4793
0
          if ( ! (yy_did_buffer_switch_on_eof) )
4794
0
            YY_NEW_FILE;
4795
0
          }
4796
0
        break;
4797
7
        }
4798
4799
547
      case EOB_ACT_CONTINUE_SCAN:
4800
547
        (yy_c_buf_p) =
4801
547
          (yytext_ptr) + yy_amount_of_matched_text;
4802
4803
547
        yy_current_state = yy_get_previous_state(  );
4804
4805
547
        yy_cp = (yy_c_buf_p);
4806
547
        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4807
547
        goto yy_match;
4808
4809
0
      case EOB_ACT_LAST_MATCH:
4810
0
        (yy_c_buf_p) =
4811
0
        &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
4812
4813
0
        yy_current_state = yy_get_previous_state(  );
4814
4815
0
        yy_cp = (yy_c_buf_p);
4816
0
        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4817
0
        goto yy_find_action;
4818
554
      }
4819
0
    break;
4820
554
    }
4821
4822
0
  default:
4823
0
    YY_FATAL_ERROR(
4824
426k
      "fatal flex scanner internal error--no action found" );
4825
426k
  } /* end of action switch */
4826
426k
    } /* end of scanning one token */
4827
138k
  } /* end of user's declarations */
4828
138k
} /* end of yylex */
4829
4830
/* yy_get_next_buffer - try to read in a new buffer
4831
 *
4832
 * Returns a code representing an action:
4833
 *  EOB_ACT_LAST_MATCH -
4834
 *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4835
 *  EOB_ACT_END_OF_FILE - end of file
4836
 */
4837
static int yy_get_next_buffer (void)
4838
554
{
4839
554
      char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4840
554
  char *source = (yytext_ptr);
4841
554
  int number_to_move, i;
4842
554
  int ret_val;
4843
4844
554
  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
4845
0
    YY_FATAL_ERROR(
4846
554
    "fatal flex scanner internal error--end of buffer missed" );
4847
4848
554
  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4849
0
    { /* Don't try to fill the buffer, so this is an EOF. */
4850
0
    if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
4851
0
      {
4852
      /* We matched a single character, the EOB, so
4853
       * treat this as a final EOF.
4854
       */
4855
0
      return EOB_ACT_END_OF_FILE;
4856
0
      }
4857
4858
0
    else
4859
0
      {
4860
      /* We matched some text prior to the EOB, first
4861
       * process it.
4862
       */
4863
0
      return EOB_ACT_LAST_MATCH;
4864
0
      }
4865
0
    }
4866
4867
  /* Try to read more data. */
4868
4869
  /* First move last chars to start of buffer. */
4870
554
  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
4871
4872
75.3M
  for ( i = 0; i < number_to_move; ++i )
4873
75.3M
    *(dest++) = *(source++);
4874
4875
554
  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4876
    /* don't do the read, it's not guaranteed to return an EOF,
4877
     * just force an EOF
4878
     */
4879
0
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
4880
4881
554
  else
4882
554
    {
4883
554
      int num_to_read =
4884
554
      YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4885
4886
561
    while ( num_to_read <= 0 )
4887
7
      { /* Not enough room in the buffer - grow it. */
4888
4889
      /* just a shorter name for the current buffer */
4890
7
      YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
4891
4892
7
      int yy_c_buf_p_offset =
4893
7
        (int) ((yy_c_buf_p) - b->yy_ch_buf);
4894
4895
7
      if ( b->yy_is_our_buffer )
4896
7
        {
4897
7
        int new_size = b->yy_buf_size * 2;
4898
4899
7
        if ( new_size <= 0 )
4900
0
          b->yy_buf_size += b->yy_buf_size / 8;
4901
7
        else
4902
7
          b->yy_buf_size *= 2;
4903
4904
7
        b->yy_ch_buf = (char *)
4905
          /* Include room in for 2 EOB chars. */
4906
7
          yyrealloc( (void *) b->yy_ch_buf,
4907
7
               (yy_size_t) (b->yy_buf_size + 2)  );
4908
7
        }
4909
0
      else
4910
        /* Can't grow it, we don't own it. */
4911
0
        b->yy_ch_buf = NULL;
4912
4913
7
      if ( ! b->yy_ch_buf )
4914
0
        YY_FATAL_ERROR(
4915
7
        "fatal error - scanner input buffer overflow" );
4916
4917
7
      (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
4918
4919
7
      num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4920
7
            number_to_move - 1;
4921
4922
7
      }
4923
4924
554
    if ( num_to_read > YY_READ_BUF_SIZE )
4925
547
      num_to_read = YY_READ_BUF_SIZE;
4926
4927
    /* Read in more data. */
4928
554
    YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4929
554
      (yy_n_chars), num_to_read );
4930
4931
554
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4932
554
    }
4933
4934
554
  if ( (yy_n_chars) == 0 )
4935
7
    {
4936
7
    if ( number_to_move == YY_MORE_ADJ )
4937
7
      {
4938
7
      ret_val = EOB_ACT_END_OF_FILE;
4939
7
      yyrestart( yyin  );
4940
7
      }
4941
4942
0
    else
4943
0
      {
4944
0
      ret_val = EOB_ACT_LAST_MATCH;
4945
0
      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4946
0
        YY_BUFFER_EOF_PENDING;
4947
0
      }
4948
7
    }
4949
4950
547
  else
4951
547
    ret_val = EOB_ACT_CONTINUE_SCAN;
4952
4953
554
  if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4954
    /* Extend the array by 50%, plus the number we really need. */
4955
0
    int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
4956
0
    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
4957
0
      (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
4958
0
    if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4959
0
      YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4960
    /* "- 2" to take care of EOB's */
4961
0
    YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
4962
0
  }
4963
4964
554
  (yy_n_chars) += number_to_move;
4965
554
  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
4966
554
  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
4967
4968
554
  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4969
4970
554
  return ret_val;
4971
554
}
4972
4973
/* yy_get_previous_state - get the state just before the EOB char was reached */
4974
4975
    static yy_state_type yy_get_previous_state (void)
4976
547
{
4977
547
  yy_state_type yy_current_state;
4978
547
  char *yy_cp;
4979
    
4980
547
  yy_current_state = (yy_start);
4981
547
  yy_current_state += YY_AT_BOL();
4982
4983
75.3M
  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
4984
75.3M
    {
4985
75.3M
    YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4986
75.3M
    if ( yy_accept[yy_current_state] )
4987
75.3M
      {
4988
75.3M
      (yy_last_accepting_state) = yy_current_state;
4989
75.3M
      (yy_last_accepting_cpos) = yy_cp;
4990
75.3M
      }
4991
150M
    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4992
75.3M
      {
4993
75.3M
      yy_current_state = (int) yy_def[yy_current_state];
4994
75.3M
      if ( yy_current_state >= 1242 )
4995
75.3M
        yy_c = yy_meta[yy_c];
4996
75.3M
      }
4997
75.3M
    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
4998
75.3M
    }
4999
5000
547
  return yy_current_state;
5001
547
}
5002
5003
/* yy_try_NUL_trans - try to make a transition on the NUL character
5004
 *
5005
 * synopsis
5006
 *  next_state = yy_try_NUL_trans( current_state );
5007
 */
5008
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
5009
0
{
5010
0
  int yy_is_jam;
5011
0
      char *yy_cp = (yy_c_buf_p);
5012
5013
0
  YY_CHAR yy_c = 1;
5014
0
  if ( yy_accept[yy_current_state] )
5015
0
    {
5016
0
    (yy_last_accepting_state) = yy_current_state;
5017
0
    (yy_last_accepting_cpos) = yy_cp;
5018
0
    }
5019
0
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5020
0
    {
5021
0
    yy_current_state = (int) yy_def[yy_current_state];
5022
0
    if ( yy_current_state >= 1242 )
5023
0
      yy_c = yy_meta[yy_c];
5024
0
    }
5025
0
  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
5026
0
  yy_is_jam = (yy_current_state == 1241);
5027
5028
0
    return yy_is_jam ? 0 : yy_current_state;
5029
0
}
5030
5031
#ifndef YY_NO_UNPUT
5032
5033
#endif
5034
5035
#ifndef YY_NO_INPUT
5036
#ifdef __cplusplus
5037
    static int yyinput (void)
5038
#else
5039
    static int input  (void)
5040
#endif
5041
5042
{
5043
  int c;
5044
    
5045
  *(yy_c_buf_p) = (yy_hold_char);
5046
5047
  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
5048
    {
5049
    /* yy_c_buf_p now points to the character we want to return.
5050
     * If this occurs *before* the EOB characters, then it's a
5051
     * valid NUL; if not, then we've hit the end of the buffer.
5052
     */
5053
    if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5054
      /* This was really a NUL. */
5055
      *(yy_c_buf_p) = '\0';
5056
5057
    else
5058
      { /* need more input */
5059
      int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
5060
      ++(yy_c_buf_p);
5061
5062
      switch ( yy_get_next_buffer(  ) )
5063
        {
5064
        case EOB_ACT_LAST_MATCH:
5065
          /* This happens because yy_g_n_b()
5066
           * sees that we've accumulated a
5067
           * token and flags that we need to
5068
           * try matching the token before
5069
           * proceeding.  But for input(),
5070
           * there's no matching to consider.
5071
           * So convert the EOB_ACT_LAST_MATCH
5072
           * to EOB_ACT_END_OF_FILE.
5073
           */
5074
5075
          /* Reset buffer status. */
5076
          yyrestart( yyin );
5077
5078
          FALLTHROUGH;
5079
5080
        case EOB_ACT_END_OF_FILE:
5081
          {
5082
          if ( yywrap(  ) )
5083
            return 0;
5084
5085
          if ( ! (yy_did_buffer_switch_on_eof) )
5086
            YY_NEW_FILE;
5087
#ifdef __cplusplus
5088
          return yyinput();
5089
#else
5090
          return input();
5091
#endif
5092
          }
5093
5094
        case EOB_ACT_CONTINUE_SCAN:
5095
          (yy_c_buf_p) = (yytext_ptr) + offset;
5096
          break;
5097
        }
5098
      }
5099
    }
5100
5101
  c = *(unsigned char *) (yy_c_buf_p);  /* cast for 8-bit char's */
5102
  *(yy_c_buf_p) = '\0'; /* preserve yytext */
5103
  (yy_hold_char) = *++(yy_c_buf_p);
5104
5105
  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
5106
5107
  return c;
5108
}
5109
#endif  /* ifndef YY_NO_INPUT */
5110
5111
/** Immediately switch to a different input stream.
5112
 * @param input_file A readable stream.
5113
 * 
5114
 * @note This function does not reset the start condition to @c INITIAL .
5115
 */
5116
    void yyrestart  (FILE * input_file )
5117
14
{
5118
    
5119
14
  if ( ! YY_CURRENT_BUFFER ){
5120
1
        yyensure_buffer_stack ();
5121
1
    YY_CURRENT_BUFFER_LVALUE =
5122
1
            yy_create_buffer( yyin, YY_BUF_SIZE );
5123
1
  }
5124
5125
14
  yy_init_buffer( YY_CURRENT_BUFFER, input_file );
5126
14
  yy_load_buffer_state(  );
5127
14
}
5128
5129
/** Switch to a different input buffer.
5130
 * @param new_buffer The new input buffer.
5131
 * 
5132
 */
5133
    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
5134
0
{
5135
    
5136
  /* TODO. We should be able to replace this entire function body
5137
   * with
5138
   *    yypop_buffer_state();
5139
   *    yypush_buffer_state(new_buffer);
5140
     */
5141
0
  yyensure_buffer_stack ();
5142
0
  if ( YY_CURRENT_BUFFER == new_buffer )
5143
0
    return;
5144
5145
0
  if ( YY_CURRENT_BUFFER )
5146
0
    {
5147
    /* Flush out information for old buffer. */
5148
0
    *(yy_c_buf_p) = (yy_hold_char);
5149
0
    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
5150
0
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5151
0
    }
5152
5153
0
  YY_CURRENT_BUFFER_LVALUE = new_buffer;
5154
0
  yy_load_buffer_state(  );
5155
5156
  /* We don't actually know whether we did this switch during
5157
   * EOF (yywrap()) processing, but the only time this flag
5158
   * is looked at is after yywrap() is called, so it's safe
5159
   * to go ahead and always set it.
5160
   */
5161
0
  (yy_did_buffer_switch_on_eof) = 1;
5162
0
}
5163
5164
static void yy_load_buffer_state  (void)
5165
29
{
5166
29
      (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5167
29
  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
5168
29
  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
5169
29
  (yy_hold_char) = *(yy_c_buf_p);
5170
29
}
5171
5172
/** Allocate and initialize an input buffer state.
5173
 * @param file A readable stream.
5174
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
5175
 * 
5176
 * @return the allocated buffer state.
5177
 */
5178
    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
5179
1
{
5180
1
  YY_BUFFER_STATE b;
5181
    
5182
1
  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
5183
1
  if ( ! b )
5184
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5185
5186
1
  b->yy_buf_size = size;
5187
5188
  /* yy_ch_buf has to be 2 characters longer than the size given because
5189
   * we need to put in 2 end-of-buffer characters.
5190
   */
5191
1
  b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
5192
1
  if ( ! b->yy_ch_buf )
5193
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5194
5195
1
  b->yy_is_our_buffer = 1;
5196
5197
1
  yy_init_buffer( b, file );
5198
5199
1
  return b;
5200
1
}
5201
5202
/** Destroy the buffer.
5203
 * @param b a buffer created with yy_create_buffer()
5204
 * 
5205
 */
5206
    void yy_delete_buffer (YY_BUFFER_STATE  b )
5207
0
{
5208
    
5209
0
  if ( ! b )
5210
0
    return;
5211
5212
0
  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
5213
0
    YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
5214
5215
0
  if ( b->yy_is_our_buffer )
5216
0
    yyfree( (void *) b->yy_ch_buf  );
5217
5218
0
  yyfree( (void *) b  );
5219
0
}
5220
5221
/* Initializes or reinitializes a buffer.
5222
 * This function is sometimes called more than once on the same buffer,
5223
 * such as during a yyrestart() or at EOF.
5224
 */
5225
    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
5226
5227
15
{
5228
15
  int oerrno = errno;
5229
    
5230
15
  yy_flush_buffer( b );
5231
5232
15
  b->yy_input_file = file;
5233
15
  b->yy_fill_buffer = 1;
5234
5235
    /* If b is the current buffer, then yy_init_buffer was _probably_
5236
     * called from yyrestart() or through yy_get_next_buffer.
5237
     * In that case, we don't want to reset the lineno or column.
5238
     */
5239
15
    if (b != YY_CURRENT_BUFFER){
5240
1
        b->yy_bs_lineno = 1;
5241
1
        b->yy_bs_column = 0;
5242
1
    }
5243
5244
15
        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
5245
    
5246
15
  errno = oerrno;
5247
15
}
5248
5249
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
5250
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
5251
 * 
5252
 */
5253
    void yy_flush_buffer (YY_BUFFER_STATE  b )
5254
15
{
5255
15
      if ( ! b )
5256
0
    return;
5257
5258
15
  b->yy_n_chars = 0;
5259
5260
  /* We always need two end-of-buffer characters.  The first causes
5261
   * a transition to the end-of-buffer state.  The second causes
5262
   * a jam in that state.
5263
   */
5264
15
  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
5265
15
  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
5266
5267
15
  b->yy_buf_pos = &b->yy_ch_buf[0];
5268
5269
15
  b->yy_at_bol = 1;
5270
15
  b->yy_buffer_status = YY_BUFFER_NEW;
5271
5272
15
  if ( b == YY_CURRENT_BUFFER )
5273
14
    yy_load_buffer_state(  );
5274
15
}
5275
5276
/** Pushes the new state onto the stack. The new state becomes
5277
 *  the current state. This function will allocate the stack
5278
 *  if necessary.
5279
 *  @param new_buffer The new state.
5280
 *  
5281
 */
5282
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
5283
0
{
5284
0
      if (new_buffer == NULL)
5285
0
    return;
5286
5287
0
  yyensure_buffer_stack();
5288
5289
  /* This block is copied from yy_switch_to_buffer. */
5290
0
  if ( YY_CURRENT_BUFFER )
5291
0
    {
5292
    /* Flush out information for old buffer. */
5293
0
    *(yy_c_buf_p) = (yy_hold_char);
5294
0
    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
5295
0
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5296
0
    }
5297
5298
  /* Only push if top exists. Otherwise, replace top. */
5299
0
  if (YY_CURRENT_BUFFER)
5300
0
    (yy_buffer_stack_top)++;
5301
0
  YY_CURRENT_BUFFER_LVALUE = new_buffer;
5302
5303
  /* copied from yy_switch_to_buffer. */
5304
0
  yy_load_buffer_state(  );
5305
0
  (yy_did_buffer_switch_on_eof) = 1;
5306
0
}
5307
5308
/** Removes and deletes the top of the stack, if present.
5309
 *  The next element becomes the new top.
5310
 *  
5311
 */
5312
void yypop_buffer_state (void)
5313
0
{
5314
0
      if (!YY_CURRENT_BUFFER)
5315
0
    return;
5316
5317
0
  yy_delete_buffer(YY_CURRENT_BUFFER );
5318
0
  YY_CURRENT_BUFFER_LVALUE = NULL;
5319
0
  if ((yy_buffer_stack_top) > 0)
5320
0
    --(yy_buffer_stack_top);
5321
5322
0
  if (YY_CURRENT_BUFFER) {
5323
0
    yy_load_buffer_state(  );
5324
0
    (yy_did_buffer_switch_on_eof) = 1;
5325
0
  }
5326
0
}
5327
5328
/* Allocates the stack if it does not exist.
5329
 *  Guarantees space for at least one push.
5330
 */
5331
static void yyensure_buffer_stack (void)
5332
1
{
5333
1
  yy_size_t num_to_alloc;
5334
    
5335
1
  if (!(yy_buffer_stack)) {
5336
5337
    /* First allocation is just for 2 elements, since we don't know if this
5338
     * scanner will even need a stack. We use 2 instead of 1 to avoid an
5339
     * immediate realloc on the next call.
5340
         */
5341
1
      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
5342
1
    (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
5343
1
                (num_to_alloc * sizeof(struct yy_buffer_state*)
5344
1
                );
5345
1
    if ( ! (yy_buffer_stack) )
5346
0
      YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
5347
5348
1
    memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
5349
5350
1
    (yy_buffer_stack_max) = num_to_alloc;
5351
1
    (yy_buffer_stack_top) = 0;
5352
1
    return;
5353
1
  }
5354
5355
0
  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
5356
5357
    /* Increase the buffer to prepare for a possible push. */
5358
0
    yy_size_t grow_size = 8 /* arbitrary grow size */;
5359
5360
0
    num_to_alloc = (yy_buffer_stack_max) + grow_size;
5361
0
    (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
5362
0
                ((yy_buffer_stack),
5363
0
                num_to_alloc * sizeof(struct yy_buffer_state*)
5364
0
                );
5365
0
    if ( ! (yy_buffer_stack) )
5366
0
      YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
5367
5368
    /* zero only the new slots.*/
5369
0
    memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
5370
0
    (yy_buffer_stack_max) = num_to_alloc;
5371
0
  }
5372
0
}
5373
5374
/** Setup the input buffer state to scan directly from a user-specified character buffer.
5375
 * @param base the character buffer
5376
 * @param size the size in bytes of the character buffer
5377
 * 
5378
 * @return the newly allocated buffer state object.
5379
 */
5380
YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
5381
0
{
5382
0
  YY_BUFFER_STATE b;
5383
    
5384
0
  if ( size < 2 ||
5385
0
       base[size-2] != YY_END_OF_BUFFER_CHAR ||
5386
0
       base[size-1] != YY_END_OF_BUFFER_CHAR )
5387
    /* They forgot to leave room for the EOB's. */
5388
0
    return NULL;
5389
5390
0
  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
5391
0
  if ( ! b )
5392
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
5393
5394
0
  b->yy_buf_size = (int) (size - 2);  /* "- 2" to take care of EOB's */
5395
0
  b->yy_buf_pos = b->yy_ch_buf = base;
5396
0
  b->yy_is_our_buffer = 0;
5397
0
  b->yy_input_file = NULL;
5398
0
  b->yy_n_chars = b->yy_buf_size;
5399
0
  b->yy_is_interactive = 0;
5400
0
  b->yy_at_bol = 1;
5401
0
  b->yy_fill_buffer = 0;
5402
0
  b->yy_buffer_status = YY_BUFFER_NEW;
5403
5404
0
  yy_switch_to_buffer( b  );
5405
5406
0
  return b;
5407
0
}
5408
5409
/** Setup the input buffer state to scan a string. The next call to yylex() will
5410
 * scan from a @e copy of @a str.
5411
 * @param yystr a NUL-terminated string to scan
5412
 * 
5413
 * @return the newly allocated buffer state object.
5414
 * @note If you want to scan bytes that may contain NUL values, then use
5415
 *       yy_scan_bytes() instead.
5416
 */
5417
YY_BUFFER_STATE yy_scan_string (const char * yystr )
5418
0
{
5419
    
5420
0
  return yy_scan_bytes( yystr, (int) strlen(yystr) );
5421
0
}
5422
5423
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
5424
 * scan from a @e copy of @a bytes.
5425
 * @param yybytes the byte buffer to scan
5426
 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
5427
 * 
5428
 * @return the newly allocated buffer state object.
5429
 */
5430
YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
5431
0
{
5432
0
  YY_BUFFER_STATE b;
5433
0
  char *buf;
5434
0
  yy_size_t n;
5435
0
  int i;
5436
    
5437
  /* Get memory for full buffer, including space for trailing EOB's. */
5438
0
  n = (yy_size_t) (_yybytes_len + 2);
5439
0
  buf = (char *) yyalloc( n  );
5440
0
  if ( ! buf )
5441
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
5442
5443
0
  for ( i = 0; i < _yybytes_len; ++i )
5444
0
    buf[i] = yybytes[i];
5445
5446
0
  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
5447
5448
0
  b = yy_scan_buffer( buf, n );
5449
0
  if ( ! b )
5450
0
    YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
5451
5452
  /* It's okay to grow etc. this buffer, and we should throw it
5453
   * away when we're done.
5454
   */
5455
0
  b->yy_is_our_buffer = 1;
5456
5457
0
  return b;
5458
0
}
5459
5460
#ifndef YY_EXIT_FAILURE
5461
0
#define YY_EXIT_FAILURE 2
5462
#endif
5463
5464
static void yynoreturn yy_fatal_error (const char* msg )
5465
0
{
5466
0
      fprintf( stderr, "%s\n", msg );
5467
0
  exit( YY_EXIT_FAILURE );
5468
0
}
5469
5470
/* Redefine yyless() so it works in section 3 code. */
5471
5472
#undef yyless
5473
#define yyless(n) \
5474
  do \
5475
    { \
5476
    /* Undo effects of setting up yytext. */ \
5477
        int yyless_macro_arg = (n); \
5478
        YY_LESS_LINENO(yyless_macro_arg);\
5479
    yytext[yyleng] = (yy_hold_char); \
5480
    (yy_c_buf_p) = yytext + yyless_macro_arg; \
5481
    (yy_hold_char) = *(yy_c_buf_p); \
5482
    *(yy_c_buf_p) = '\0'; \
5483
    yyleng = yyless_macro_arg; \
5484
    } \
5485
  while ( 0 )
5486
5487
/* Accessor  methods (get/set functions) to struct members. */
5488
5489
/** Get the current line number.
5490
 * 
5491
 */
5492
int yyget_lineno  (void)
5493
0
{
5494
    
5495
0
    return yylineno;
5496
0
}
5497
5498
/** Get the input stream.
5499
 * 
5500
 */
5501
FILE *yyget_in  (void)
5502
0
{
5503
0
        return yyin;
5504
0
}
5505
5506
/** Get the output stream.
5507
 * 
5508
 */
5509
FILE *yyget_out  (void)
5510
0
{
5511
0
        return yyout;
5512
0
}
5513
5514
/** Get the length of the current token.
5515
 * 
5516
 */
5517
int yyget_leng  (void)
5518
0
{
5519
0
        return yyleng;
5520
0
}
5521
5522
/** Get the current token.
5523
 * 
5524
 */
5525
5526
char *yyget_text  (void)
5527
0
{
5528
0
        return yytext;
5529
0
}
5530
5531
/** Set the current line number.
5532
 * @param _line_number line number
5533
 * 
5534
 */
5535
void yyset_lineno (int  _line_number )
5536
0
{
5537
    
5538
0
    yylineno = _line_number;
5539
0
}
5540
5541
/** Set the input stream. This does not discard the current
5542
 * input buffer.
5543
 * @param _in_str A readable stream.
5544
 * 
5545
 * @see yy_switch_to_buffer
5546
 */
5547
void yyset_in (FILE *  _in_str )
5548
0
{
5549
0
        yyin = _in_str ;
5550
0
}
5551
5552
void yyset_out (FILE *  _out_str )
5553
0
{
5554
0
        yyout = _out_str ;
5555
0
}
5556
5557
int yyget_debug  (void)
5558
0
{
5559
0
        return yy_flex_debug;
5560
0
}
5561
5562
void yyset_debug (int  _bdebug )
5563
0
{
5564
0
        yy_flex_debug = _bdebug ;
5565
0
}
5566
5567
static int yy_init_globals (void)
5568
0
{
5569
        /* Initialization is the same as for the non-reentrant scanner.
5570
     * This function is called from yylex_destroy(), so don't allocate here.
5571
     */
5572
5573
0
    (yy_buffer_stack) = NULL;
5574
0
    (yy_buffer_stack_top) = 0;
5575
0
    (yy_buffer_stack_max) = 0;
5576
0
    (yy_c_buf_p) = NULL;
5577
0
    (yy_init) = 0;
5578
0
    (yy_start) = 0;
5579
5580
/* Defined in main.c */
5581
#ifdef YY_STDINIT
5582
    yyin = stdin;
5583
    yyout = stdout;
5584
#else
5585
0
    yyin = NULL;
5586
0
    yyout = NULL;
5587
0
#endif
5588
5589
    /* For future reference: Set errno on error, since we are called by
5590
     * yylex_init()
5591
     */
5592
0
    return 0;
5593
0
}
5594
5595
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
5596
int yylex_destroy  (void)
5597
0
{
5598
    
5599
    /* Pop the buffer stack, destroying each element. */
5600
0
  while(YY_CURRENT_BUFFER){
5601
0
    yy_delete_buffer( YY_CURRENT_BUFFER  );
5602
0
    YY_CURRENT_BUFFER_LVALUE = NULL;
5603
0
    yypop_buffer_state();
5604
0
  }
5605
5606
  /* Destroy the stack itself. */
5607
0
  yyfree((yy_buffer_stack) );
5608
0
  (yy_buffer_stack) = NULL;
5609
5610
    /* Reset the globals. This is important in a non-reentrant scanner so the next time
5611
     * yylex() is called, initialization will occur. */
5612
0
    yy_init_globals( );
5613
5614
0
    return 0;
5615
0
}
5616
5617
/*
5618
 * Internal utility routines.
5619
 */
5620
5621
#ifndef yytext_ptr
5622
static void yy_flex_strncpy (char* s1, const char * s2, int n )
5623
{
5624
    
5625
  int i;
5626
  for ( i = 0; i < n; ++i )
5627
    s1[i] = s2[i];
5628
}
5629
#endif
5630
5631
#ifdef YY_NEED_STRLEN
5632
static int yy_flex_strlen (const char * s )
5633
{
5634
  int n;
5635
  for ( n = 0; s[n]; ++n )
5636
    ;
5637
5638
  return n;
5639
}
5640
#endif
5641
5642
void *yyalloc (yy_size_t  size )
5643
3
{
5644
3
      return malloc(size);
5645
3
}
5646
5647
void *yyrealloc  (void * ptr, yy_size_t  size )
5648
7
{
5649
    
5650
  /* The cast to (char *) in the following accommodates both
5651
   * implementations that use char* generic pointers, and those
5652
   * that use void* generic pointers.  It works with the latter
5653
   * because both ANSI C and C++ allow castless assignment from
5654
   * any pointer type to void*, and deal with argument conversions
5655
   * as though doing an assignment.
5656
   */
5657
7
  return realloc(ptr, size);
5658
7
}
5659
5660
void yyfree (void * ptr )
5661
0
{
5662
0
      free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
5663
0
}
5664
5665
#define YYTABLES_NAME "yytables"
5666
5667
#line 889 "toke.l"
5668
5669
struct path_list {
5670
    SLIST_ENTRY(path_list) entries;
5671
    char *path;
5672
};
5673
5674
SLIST_HEAD(path_list_head, path_list);
5675
5676
struct include_stack {
5677
    struct sudolinebuf line;
5678
    YY_BUFFER_STATE bs;
5679
    char *path; /* search path */
5680
    char *file;
5681
    struct path_list_head more; /* more files in case of includedir */
5682
    int lineno;
5683
    bool keepopen;
5684
};
5685
5686
/*
5687
 * Compare two struct path_list structs in reverse order.
5688
 */
5689
static int
5690
pl_compare(const void *v1, const void *v2)
5691
0
{
5692
0
    const struct path_list * const *p1 = v1;
5693
0
    const struct path_list * const *p2 = v2;
5694
5695
0
    return strcmp((*p2)->path, (*p1)->path);
5696
0
}
5697
5698
/*
5699
 * Open dirpath and fill in pathsp with an array of regular files
5700
 * that do not end in '~' or contain a '.'.
5701
 * Returns the number of files or SIZE_MAX (-1) on error.
5702
 * If zero files are found, NULL is stored in pathsp.
5703
 */
5704
static size_t
5705
read_dir_files(const char *dirpath, struct path_list ***pathsp, int verbose)
5706
0
{
5707
0
    DIR *dir;
5708
0
    size_t i, count = 0;
5709
0
    size_t max_paths = 32;
5710
0
    struct dirent *dent;
5711
0
    struct path_list **paths = NULL;
5712
0
    const size_t dirlen = strlen(dirpath);
5713
0
    debug_decl(read_dir_files, SUDOERS_DEBUG_PARSER);
5714
5715
    /* XXX - fdopendir */
5716
0
    dir = opendir(dirpath);
5717
0
    if (dir == NULL) {
5718
0
  if (errno == ENOENT)
5719
0
      goto done;
5720
0
  sudo_warn("%s", dirpath);
5721
0
  goto bad;
5722
0
    }
5723
0
    paths = reallocarray(NULL, max_paths, sizeof(*paths));
5724
0
    if (paths == NULL)
5725
0
  goto oom;
5726
0
    while ((dent = readdir(dir)) != NULL) {
5727
0
  const size_t namelen = NAMLEN(dent);
5728
0
  const char *name = dent->d_name;
5729
0
  struct path_list *pl;
5730
0
  struct stat sb;
5731
0
  size_t len;
5732
0
  char *path;
5733
5734
  /* Ignore files that end in '~' or have a '.' in them. */
5735
0
  if (namelen == 0 || name[namelen - 1] == '~' || strchr(name, '.') != NULL) {
5736
      /* Warn about ignored files not starting with '.' if verbose. */
5737
0
      if (namelen > 0 && name[0] != '.' && verbose > 1) {
5738
0
    if (name[namelen - 1] == '~' ||
5739
0
      (namelen > 4 && strcmp(&name[namelen - 4], ".bak") == 0)) {
5740
0
        fprintf(stderr, U_("%s/%s: %s"), dirpath, name,
5741
0
      U_("ignoring editor backup file"));
5742
0
    } else {
5743
0
        fprintf(stderr, U_("%s/%s: %s"), dirpath, name,
5744
0
      U_("ignoring file name containing '.'"));
5745
0
    }
5746
0
    fputc('\n', stderr);
5747
0
      }
5748
0
      continue;
5749
0
  }
5750
0
  len = dirlen + 1 + namelen;
5751
0
  if ((path = sudo_rcstr_alloc(len)) == NULL)
5752
0
      goto oom;
5753
0
  if ((size_t)snprintf(path, len + 1, "%s/%s", dirpath, name) != len) {
5754
0
      sudo_warnx(U_("internal error, %s overflow"), __func__);
5755
0
      sudo_rcstr_delref(path);
5756
0
      goto bad;
5757
0
  }
5758
0
  if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
5759
0
      sudo_rcstr_delref(path);
5760
0
      continue;
5761
0
  }
5762
0
  pl = malloc(sizeof(*pl));
5763
0
  if (pl == NULL) {
5764
0
      sudo_rcstr_delref(path);
5765
0
      goto oom;
5766
0
  }
5767
0
  pl->path = path;
5768
0
  if (count >= max_paths) {
5769
0
      struct path_list **tmp;
5770
0
      max_paths <<= 1;
5771
0
      tmp = reallocarray(paths, max_paths, sizeof(*paths));
5772
0
      if (tmp == NULL) {
5773
0
    sudo_rcstr_delref(path);
5774
0
    free(pl);
5775
0
    goto oom;
5776
0
      }
5777
0
      paths = tmp;
5778
0
  }
5779
0
  paths[count++] = pl;
5780
0
    }
5781
0
    closedir(dir);
5782
0
    if (count == 0) {
5783
0
  free(paths);
5784
0
  paths = NULL;
5785
0
    }
5786
0
done:
5787
0
    *pathsp = paths;
5788
0
    debug_return_size_t(count);
5789
0
oom:
5790
0
    sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
5791
0
bad:
5792
0
    sudoerserror(NULL);
5793
0
    if (dir != NULL)
5794
0
  closedir(dir);
5795
0
    for (i = 0; i < count; i++) {
5796
0
  sudo_rcstr_delref(paths[i]->path);
5797
0
  free(paths[i]);
5798
0
    }
5799
0
    free(paths);
5800
0
    debug_return_size_t(SIZE_MAX);
5801
0
}
5802
5803
/*
5804
 * Push a list of all files in dirpath onto stack.
5805
 * Returns the number of files or -1 on error.
5806
 */
5807
static size_t
5808
switch_dir(struct include_stack *stack, char *dirpath, int verbose)
5809
0
{
5810
0
    struct path_list **paths = NULL;
5811
0
    size_t count, i;
5812
0
    debug_decl(switch_dir, SUDOERS_DEBUG_PARSER);
5813
5814
0
    count = read_dir_files(dirpath, &paths, verbose);
5815
0
    if (count > 0) {
5816
  /* Sort the list as an array in reverse order. */
5817
0
  qsort(paths, count, sizeof(*paths), pl_compare);
5818
5819
  /* Build up the list in sorted order. */
5820
0
  for (i = 0; i < count; i++) {
5821
0
      SLIST_INSERT_HEAD(&stack->more, paths[i], entries);
5822
0
  }
5823
0
  free(paths);
5824
0
    }
5825
5826
0
    debug_return_size_t(count);
5827
0
}
5828
5829
0
#define MAX_SUDOERS_DEPTH 128
5830
0
#define SUDOERS_STACK_INCREMENT 16
5831
5832
static size_t istacksize, idepth;
5833
static struct include_stack *istack;
5834
static bool keepopen;
5835
5836
void
5837
init_lexer(void)
5838
50.8k
{
5839
50.8k
    struct path_list *pl;
5840
50.8k
    debug_decl(init_lexer, SUDOERS_DEBUG_PARSER);
5841
5842
50.8k
#ifndef TRACELEXER
5843
50.8k
    free(trace_lbuf.buf);
5844
50.8k
    sudo_lbuf_init(&trace_lbuf, NULL, 0, NULL, 0);
5845
50.8k
#endif
5846
5847
50.8k
    while (idepth) {
5848
0
  idepth--;
5849
0
  while ((pl = SLIST_FIRST(&istack[idepth].more)) != NULL) {
5850
0
      SLIST_REMOVE_HEAD(&istack[idepth].more, entries);
5851
0
      sudo_rcstr_delref(pl->path);
5852
0
      free(pl);
5853
0
  }
5854
0
  sudo_rcstr_delref(istack[idepth].path);
5855
0
  if (idepth && !istack[idepth].keepopen)
5856
0
      fclose(istack[idepth].bs->yy_input_file);
5857
0
  sudoers_delete_buffer(istack[idepth].bs);
5858
0
  free(istack[idepth].line.buf);
5859
0
    }
5860
50.8k
    free(istack);
5861
50.8k
    istack = NULL;
5862
50.8k
    istacksize = idepth = 0;
5863
50.8k
    free(sudolinebuf.buf);
5864
50.8k
    memset(&sudolinebuf, 0, sizeof(sudolinebuf));
5865
50.8k
    sudolineno = 1;
5866
50.8k
    keepopen = false;
5867
50.8k
    sawspace = false;
5868
50.8k
    continued = false;
5869
50.8k
    digest_type = SUDO_DIGEST_INVALID;
5870
50.8k
    prev_state = INITIAL;
5871
50.8k
    BEGIN INITIAL;
5872
5873
50.8k
    debug_return;
5874
50.8k
}
5875
5876
/*
5877
 * Like strlcpy() but expand %h escapes.
5878
 */
5879
static size_t
5880
strlcpy_expand_host(char * restrict dst, const char * restrict src,
5881
    const char * restrict host, size_t size)
5882
0
{
5883
0
    size_t len = 0;
5884
0
    char ch;
5885
0
    debug_decl(strlcpy_expand_host, SUDOERS_DEBUG_PARSER);
5886
5887
0
    while ((ch = *src++) != '\0') {
5888
0
  if (ch == '%' && *src == 'h') {
5889
0
      size_t n = strlcpy(dst, host, size);
5890
0
      len += n;
5891
0
      if (n >= size) {
5892
    /* truncated */
5893
0
    n = size ? size - 1 : 0;
5894
0
      }
5895
0
      dst += n;
5896
0
      size -= n;
5897
0
      src++;
5898
0
      continue;
5899
0
  }
5900
0
  if (size > 1) {
5901
0
      *dst++ = ch;
5902
0
      size--;
5903
0
      len++;
5904
0
  }
5905
0
    }
5906
0
    if (size > 0)
5907
0
  *dst = '\0';
5908
5909
0
    debug_return_size_t(len);
5910
0
}
5911
5912
/*
5913
 * Expand any embedded %h (host) escapes in the given path and makes
5914
 * a relative path fully-qualified based on the current sudoers file.
5915
 * Returns a reference-counted string on success or NULL on failure.
5916
 */
5917
static char *
5918
expand_include(const char *src, const char *host)
5919
0
{
5920
0
    const char *path = sudoers_search_path ? sudoers_search_path : sudoers;
5921
0
    const char *path_end = path + strlen(path);
5922
0
    char *dst, *dst0 = NULL, *dynamic_host = NULL;
5923
0
    const char *cp, *ep;
5924
0
    size_t dst_size, src_len;
5925
0
    size_t nhost = 0;
5926
0
    debug_decl(expand_include, SUDOERS_DEBUG_PARSER);
5927
5928
    /* Strip double quotes if present. */
5929
0
    src_len = strlen(src);
5930
0
    if (src_len > 1 && src[0] == '"' && src[src_len - 1] == '"') {
5931
0
  src++;
5932
0
  src_len -= 2;
5933
0
    }
5934
0
    if (src_len == 0)
5935
0
  debug_return_ptr(NULL);
5936
5937
    /* Check for %h escapes in src. */
5938
0
    cp = src;
5939
0
    ep = src + src_len;
5940
0
    while (cp < ep) {
5941
0
  if (cp[0] == '%' && cp[1] == 'h') {
5942
0
      nhost++;
5943
0
      cp += 2;
5944
0
      continue;
5945
0
  }
5946
0
  cp++;
5947
0
    }
5948
5949
    /* Check for a path separator in the host name, replace with '_'. */
5950
0
    if (nhost != 0 && strchr(host, '/') != NULL) {
5951
0
  dynamic_host = malloc(strlen(host) + 1);
5952
0
  if (dynamic_host == NULL) {
5953
0
      sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
5954
0
      goto bad;
5955
0
  }
5956
0
  for (dst = dynamic_host; *host != '\0'; host++) {
5957
0
      if (*host == '/') {
5958
0
    *dst++ = '_';
5959
0
    continue;
5960
0
      }
5961
0
      *dst++ = *host;
5962
0
  }
5963
0
  *dst = '\0';
5964
0
  host = dynamic_host;
5965
0
    }
5966
5967
0
    if (*src == '/') {
5968
  /* Fully-qualified path, make a copy and expand %h escapes. */
5969
0
  dst_size = src_len + (nhost * strlen(host)) - (nhost * 2) + 1;
5970
0
  dst0 = sudo_rcstr_alloc(dst_size - 1);
5971
0
  if (dst0 == NULL) {
5972
0
      sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
5973
0
      goto bad;
5974
0
  }
5975
0
  if (strlcpy_expand_host(dst0, src, host, dst_size) >= dst_size)
5976
0
      goto oflow;
5977
0
  goto done;
5978
0
    }
5979
5980
    /*
5981
     * Relative paths are located in the same dir as the sudoers file.
5982
     * If the current sudoers file was opened via a colon-separated path,
5983
     * use the same path when opening src.
5984
     */
5985
0
    dst_size = 1;
5986
0
    for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL;
5987
0
      cp = sudo_strsplit(NULL, path_end, ":", &ep)) {
5988
0
  char *dirend = memrchr(cp, '/', (size_t)(ep - cp));
5989
0
  if (dirend != NULL) {
5990
      /* Include space for trailing '/' separator. */
5991
0
      dst_size += (size_t)(dirend - cp) + 1;
5992
0
  }
5993
  /* Includes space for expanded host and ':' separator. */
5994
0
  dst_size += src_len + (nhost * strlen(host)) - (nhost * 2) + 1;
5995
0
    }
5996
5997
    /* Make a copy of the fully-qualified path and return it. */
5998
0
    dst = dst0 = sudo_rcstr_alloc(dst_size - 1);
5999
0
    if (dst0 == NULL) {
6000
0
  sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
6001
0
  goto bad;
6002
0
    }
6003
0
    for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL;
6004
0
      cp = sudo_strsplit(NULL, path_end, ":", &ep)) {
6005
0
  size_t len;
6006
0
  char *dirend;
6007
6008
0
  if (cp != path) {
6009
0
      if (dst_size < 2)
6010
0
    goto oflow;
6011
0
      *dst++ = ':';
6012
0
      dst_size--;
6013
0
  }
6014
6015
0
  dirend = memrchr(cp, '/', (size_t)(ep - cp));
6016
0
  if (dirend != NULL) {
6017
0
      len = (size_t)(dirend - cp) + 1;
6018
0
      if (len >= dst_size)
6019
0
    goto oflow;
6020
0
      memcpy(dst, cp, len);
6021
0
      dst += len;
6022
0
      dst_size -= len;
6023
0
  }
6024
6025
0
  len = strlcpy_expand_host(dst, src, host, dst_size);
6026
0
  if (len >= dst_size)
6027
0
      goto oflow;
6028
0
  dst += len;
6029
0
  dst_size -= len;
6030
0
    }
6031
0
    *dst = '\0';
6032
6033
0
done:
6034
0
    free(dynamic_host);
6035
0
    debug_return_str(dst0);
6036
0
oflow:
6037
0
    sudo_warnx(U_("internal error, %s overflow"), __func__);
6038
0
bad:
6039
0
    sudoerserror(NULL);
6040
0
    free(dynamic_host);
6041
0
    free(dst0);
6042
0
    debug_return_str(NULL);
6043
0
}
6044
6045
/*
6046
 * Open an include file (or file from a directory), push the old
6047
 * sudoers file buffer and switch to the new one.
6048
 * A missing or insecure include dir is simply ignored.
6049
 * Returns false on error, else true.
6050
 */
6051
static bool
6052
push_include_int(const char *opath, const char *host, bool isdir,
6053
     struct sudoers_parser_config *conf)
6054
0
{
6055
0
    struct path_list *pl;
6056
0
    char *file = NULL, *path;
6057
0
    FILE *fp;
6058
0
    debug_decl(push_include, SUDOERS_DEBUG_PARSER);
6059
6060
0
    if ((path = expand_include(opath, host)) == NULL)
6061
0
  debug_return_bool(false);
6062
6063
    /* push current state onto stack */
6064
0
    if (idepth >= istacksize) {
6065
0
  struct include_stack *new_istack;
6066
6067
0
  if (idepth > MAX_SUDOERS_DEPTH) {
6068
0
      if (conf->verbose > 0) {
6069
0
    fprintf(stderr, U_("%s: %s"), path,
6070
0
        U_("too many levels of includes"));
6071
0
    fputc('\n', stderr);
6072
0
      }
6073
0
      sudoerserror(NULL);
6074
0
      sudo_rcstr_delref(path);
6075
0
      debug_return_bool(false);
6076
0
  }
6077
0
  istacksize += SUDOERS_STACK_INCREMENT;
6078
0
  new_istack = reallocarray(istack, istacksize, sizeof(*istack));
6079
0
  if (new_istack == NULL) {
6080
0
      sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
6081
0
      sudoerserror(NULL);
6082
0
      sudo_rcstr_delref(path);
6083
0
      debug_return_bool(false);
6084
0
  }
6085
0
  istack = new_istack;
6086
0
    }
6087
0
    SLIST_INIT(&istack[idepth].more);
6088
0
    if (isdir) {
6089
0
  struct stat sb;
6090
0
  char dname[PATH_MAX];
6091
0
  int fd, status;
6092
0
  size_t count;
6093
6094
0
  fd = sudo_open_conf_path(path, dname, sizeof(dname), NULL);
6095
0
  if (conf->ignore_perms) {
6096
      /* Skip sudoers security checks when ignore_perms is set. */
6097
0
      if (fd == -1 || fstat(fd, &sb) == -1)
6098
0
    status = SUDO_PATH_MISSING;
6099
0
      else
6100
0
    status = SUDO_PATH_SECURE;
6101
0
  } else {
6102
0
      status = sudo_secure_fd(fd, S_IFDIR, sudoers_file_uid(),
6103
0
    sudoers_file_gid(), &sb);
6104
0
  }
6105
0
  if (fd != -1)
6106
0
      close(fd); /* XXX use in read_dir_files? */
6107
0
  if (status != SUDO_PATH_SECURE) {
6108
0
      if (conf->verbose > 0) {
6109
0
    switch (status) {
6110
0
    case SUDO_PATH_BAD_TYPE:
6111
0
        errno = ENOTDIR;
6112
0
        sudo_warn("%s", path);
6113
0
        break;
6114
0
    case SUDO_PATH_WRONG_OWNER:
6115
0
        sudo_warnx(U_("%s is owned by uid %u, should be %u"),   
6116
0
      path, (unsigned int) sb.st_uid,
6117
0
      (unsigned int) sudoers_file_uid());
6118
0
        break;
6119
0
    case SUDO_PATH_WORLD_WRITABLE:
6120
0
        sudo_warnx(U_("%s is world writable"), path);
6121
0
        break;
6122
0
    case SUDO_PATH_GROUP_WRITABLE:
6123
0
        sudo_warnx(U_("%s is owned by gid %u, should be %u"),
6124
0
      path, (unsigned int) sb.st_gid,
6125
0
      (unsigned int) sudoers_file_gid());
6126
0
        break;
6127
0
    default:
6128
0
        break;
6129
0
    }
6130
0
      }
6131
      /* A missing or insecure include dir is not a fatal error. */
6132
0
      sudo_rcstr_delref(path);
6133
0
      debug_return_bool(true);
6134
0
  }
6135
0
  count = switch_dir(&istack[idepth], dname, conf->verbose);
6136
0
  switch (count) {
6137
0
  case SIZE_MAX:
6138
0
  case 0:
6139
      /* switch_dir() called sudoerserror() for us */
6140
0
      sudo_rcstr_delref(path);
6141
0
      debug_return_bool(count ? false : true);
6142
0
  }
6143
6144
  /* Parse the first dir entry we can open, leave the rest for later. */
6145
0
  do {
6146
0
      sudo_rcstr_delref(file);
6147
0
      sudo_rcstr_delref(path);
6148
0
      if ((pl = SLIST_FIRST(&istack[idepth].more)) == NULL) {
6149
    /* Unable to open any files in include dir, not an error. */
6150
0
    debug_return_bool(true);
6151
0
      }
6152
0
      SLIST_REMOVE_HEAD(&istack[idepth].more, entries);
6153
0
      path = pl->path;
6154
0
      free(pl);
6155
      /* The file and path and the same for sudoers.d files. */
6156
0
      file = path;
6157
0
      sudo_rcstr_addref(file);
6158
0
  } while ((fp = open_sudoers(file, NULL, false, &keepopen)) == NULL);
6159
0
    } else {
6160
0
  if ((fp = open_sudoers(path, &file, true, &keepopen)) == NULL) {
6161
      /* The error was already printed by open_sudoers() */
6162
0
      sudoerserror(NULL);
6163
0
      sudo_rcstr_delref(path);
6164
0
      debug_return_bool(false);
6165
0
  }
6166
0
    }
6167
    /*
6168
     * Push the old (current) file and open the new one.
6169
     * We use the existing refs of sudoers and sudoers_search_path.
6170
     */
6171
0
    istack[idepth].file = sudoers;
6172
0
    istack[idepth].path = sudoers_search_path;
6173
0
    istack[idepth].line = sudolinebuf;
6174
0
    istack[idepth].bs = YY_CURRENT_BUFFER;
6175
0
    istack[idepth].lineno = sudolineno;
6176
0
    istack[idepth].keepopen = keepopen;
6177
0
    idepth++;
6178
0
    sudolineno = 1;
6179
0
    sudoers = file;
6180
0
    sudoers_search_path = path;
6181
0
    sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
6182
0
    memset(&sudolinebuf, 0, sizeof(sudolinebuf));
6183
6184
0
    debug_return_bool(true);
6185
0
}
6186
6187
bool
6188
push_include(const char *opath, const char *host,
6189
     struct sudoers_parser_config *conf)
6190
0
{
6191
0
    return push_include_int(opath, host, false, conf);
6192
0
}
6193
6194
bool
6195
push_includedir(const char *opath, const char *host,
6196
     struct sudoers_parser_config *conf)
6197
0
{
6198
0
    return push_include_int(opath, host, true, conf);
6199
0
}
6200
6201
/*
6202
 * Restore the previous sudoers file and buffer, or, in the case
6203
 * of an includedir, switch to the next file in the dir.
6204
 * Returns false if there is nothing to pop, else true.
6205
 */
6206
static bool
6207
pop_include(void)
6208
7
{
6209
7
    struct path_list *pl;
6210
7
    FILE *fp;
6211
7
    debug_decl(pop_include, SUDOERS_DEBUG_PARSER);
6212
6213
7
    if (idepth == 0 || YY_CURRENT_BUFFER == NULL)
6214
7
  debug_return_bool(false);
6215
6216
0
    if (!keepopen)
6217
0
  fclose(YY_CURRENT_BUFFER->yy_input_file);
6218
0
    sudoers_delete_buffer(YY_CURRENT_BUFFER);
6219
    /* If we are in an include dir, move to the next file. */
6220
0
    while ((pl = SLIST_FIRST(&istack[idepth - 1].more)) != NULL) {
6221
0
  SLIST_REMOVE_HEAD(&istack[idepth - 1].more, entries);
6222
0
  fp = open_sudoers(pl->path, NULL, false, &keepopen);
6223
0
  if (fp != NULL) {
6224
0
      sudolinebuf.len = sudolinebuf.off = 0;
6225
0
      sudolinebuf.toke_start = sudolinebuf.toke_end = 0;
6226
0
      sudo_rcstr_delref(sudoers);
6227
0
      sudo_rcstr_delref(sudoers_search_path);
6228
0
      sudoers_search_path = pl->path;
6229
0
      sudoers = sudoers_search_path;
6230
0
      sudo_rcstr_addref(sudoers);
6231
0
      sudolineno = 1;
6232
0
      sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
6233
0
      free(pl);
6234
0
      break;
6235
0
  }
6236
  /* Unable to open path in include dir, go to next one. */
6237
0
  sudo_rcstr_delref(pl->path);
6238
0
  free(pl);
6239
0
    }
6240
    /* If no path list, just pop the last dir on the stack. */
6241
0
    if (pl == NULL) {
6242
0
  idepth--;
6243
0
  sudoers_switch_to_buffer(istack[idepth].bs);
6244
0
  free(sudolinebuf.buf);
6245
0
  sudolinebuf = istack[idepth].line;
6246
0
  sudo_rcstr_delref(sudoers);
6247
0
  sudoers = istack[idepth].file;
6248
0
  sudo_rcstr_delref(sudoers_search_path);
6249
0
  sudoers_search_path = istack[idepth].path;
6250
0
  sudolineno = istack[idepth].lineno;
6251
0
  keepopen = istack[idepth].keepopen;
6252
0
    }
6253
0
    debug_return_bool(true);
6254
0
}
6255
6256
#ifdef TRACELEXER
6257
int
6258
sudoers_trace_print(const char *msg)
6259
{
6260
    return fputs(msg, stderr);
6261
}
6262
#else
6263
int
6264
sudoers_trace_print(const char *msg)
6265
225k
{
6266
225k
    debug_decl_vars(sudoers_trace_print, SUDOERS_DEBUG_PARSER);
6267
6268
225k
    if (sudo_debug_needed(SUDO_DEBUG_DEBUG)) {
6269
0
  sudo_lbuf_append(&trace_lbuf, "%s", msg);
6270
0
  if (strchr(msg, '\n') != NULL)
6271
0
  {
6272
      /* We already parsed the newline so sudolineno is off by one. */
6273
0
      sudo_debug_printf2(NULL, NULL, 0,
6274
0
    sudo_debug_subsys|SUDO_DEBUG_DEBUG, "sudoerslex: %s:%d: %s",
6275
0
    sudoers, sudolineno - 1, trace_lbuf.buf);
6276
0
      trace_lbuf.len = 0;
6277
0
  }
6278
0
    }
6279
225k
    return 0;
6280
225k
}
6281
#endif /* TRACELEXER */
6282
6283
/*
6284
 * Custom input function that uses getdelim(3) and stores the buffer
6285
 * where the error functions can access it for better reporting.
6286
 * On success, buf is guaranteed to end in a newline and not contain
6287
 * embedded NULs.  Calls YY_FATAL_ERROR on error.
6288
 */
6289
static int
6290
sudoers_input(char *buf, yy_size_t max_size)
6291
554
{
6292
554
    char *cp;
6293
554
    size_t avail = sudolinebuf.len - sudolinebuf.off;
6294
554
    debug_decl(sudoers_input, SUDOERS_DEBUG_PARSER);
6295
6296
    /* Refill line buffer if needed. */
6297
554
    if (avail == 0) {
6298
  /*
6299
   * Some getdelim(3) implementations write NUL to buf on EOF.
6300
   * We peek ahead one char to detect EOF and skip the getdelim() call.
6301
   * This will preserve the original value of the last line read.
6302
   */
6303
42
  int ch = getc(sudoersin);
6304
42
  if (ch == EOF)
6305
7
      goto sudoers_eof;
6306
35
  ungetc(ch, sudoersin);
6307
35
  avail = (size_t)getdelim(&sudolinebuf.buf, &sudolinebuf.size, '\n', sudoersin);
6308
35
  if (avail == (size_t)-1) {
6309
7
sudoers_eof:
6310
      /* EOF or error. */
6311
7
      if (feof(sudoersin))
6312
7
    debug_return_int(0);
6313
7
      YY_FATAL_ERROR("input in flex scanner failed");
6314
7
  }
6315
6316
  /* getdelim() can return embedded NULs, truncate if we find one. */
6317
35
  cp = memchr(sudolinebuf.buf, '\0', avail);
6318
35
  if (cp != NULL) {
6319
19
      *cp++ = '\n';
6320
19
      *cp = '\0';
6321
19
      avail = (size_t)(cp - sudolinebuf.buf);
6322
19
  }
6323
6324
  /* Add trailing newline if it is missing. */
6325
35
  if (sudolinebuf.buf[avail - 1] != '\n') {
6326
4
      if (avail + 2 >= sudolinebuf.size) {
6327
0
    cp = realloc(sudolinebuf.buf, avail + 2);
6328
0
    if (cp == NULL) {
6329
0
        YY_FATAL_ERROR("unable to allocate memory");
6330
0
        debug_return_int(0);
6331
0
    }
6332
0
    sudolinebuf.buf = cp;
6333
0
    sudolinebuf.size = avail + 2;
6334
0
      }
6335
4
      sudolinebuf.buf[avail++] = '\n';
6336
4
      sudolinebuf.buf[avail] = '\0';
6337
4
  }
6338
6339
35
  sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s:%d: %.*s", sudoers, sudolineno,
6340
35
      (int)(avail -1), sudolinebuf.buf);
6341
6342
35
  sudolinebuf.len = avail;
6343
35
  sudolinebuf.off = 0;
6344
35
  sudolinebuf.toke_start = sudolinebuf.toke_end = 0;
6345
35
    }
6346
6347
547
    if (avail > max_size)
6348
512
  avail = max_size;
6349
547
    memcpy(buf, sudolinebuf.buf + sudolinebuf.off, avail);
6350
547
    sudolinebuf.off += avail;
6351
6352
547
    debug_return_int((int)avail);
6353
547
}
6354