OSParseosol.cpp
Go to the documentation of this file.
1 #line 2 "../../../../OS/src/OSParsers/OSParseosol.cpp"
2 
3 #line 4 "../../../../OS/src/OSParsers/OSParseosol.cpp"
4 
5 #define YY_INT_ALIGNED short int
6 
7 /* A lexical scanner generated by flex */
8 
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12 #define YY_FLEX_SUBMINOR_VERSION 35
13 #if YY_FLEX_SUBMINOR_VERSION > 0
14 #define FLEX_BETA
15 #endif
16 
17 /* First, we deal with platform-specific or compiler-specific issues. */
18 
19 /* begin standard C headers. */
20 #include <stdio.h>
21 #include <string.h>
22 #include <errno.h>
23 #include <stdlib.h>
24 
25 /* end standard C headers. */
26 
27 /* flex integer type definitions */
28 
29 #ifndef FLEXINT_H
30 #define FLEXINT_H
31 
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33 
34 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35 
36 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37  * if you want the limit (max/min) macros for int types.
38  */
39 #ifndef __STDC_LIMIT_MACROS
40 #define __STDC_LIMIT_MACROS 1
41 #endif
42 
43 #include <inttypes.h>
44 typedef int8_t flex_int8_t;
45 typedef uint8_t flex_uint8_t;
46 typedef int16_t flex_int16_t;
47 typedef uint16_t flex_uint16_t;
48 typedef int32_t flex_int32_t;
49 typedef uint32_t flex_uint32_t;
50 #else
51 typedef signed char flex_int8_t;
52 typedef short int flex_int16_t;
53 typedef int flex_int32_t;
54 typedef unsigned char flex_uint8_t;
55 typedef unsigned short int flex_uint16_t;
56 typedef unsigned int flex_uint32_t;
57 
58 /* Limits of integral types. */
59 #ifndef INT8_MIN
60 #define INT8_MIN (-128)
61 #endif
62 #ifndef INT16_MIN
63 #define INT16_MIN (-32767-1)
64 #endif
65 #ifndef INT32_MIN
66 #define INT32_MIN (-2147483647-1)
67 #endif
68 #ifndef INT8_MAX
69 #define INT8_MAX (127)
70 #endif
71 #ifndef INT16_MAX
72 #define INT16_MAX (32767)
73 #endif
74 #ifndef INT32_MAX
75 #define INT32_MAX (2147483647)
76 #endif
77 #ifndef UINT8_MAX
78 #define UINT8_MAX (255U)
79 #endif
80 #ifndef UINT16_MAX
81 #define UINT16_MAX (65535U)
82 #endif
83 #ifndef UINT32_MAX
84 #define UINT32_MAX (4294967295U)
85 #endif
86 
87 #endif /* ! C99 */
88 
89 #endif /* ! FLEXINT_H */
90 
91 #ifdef __cplusplus
92 
93 /* The "const" storage-class-modifier is valid. */
94 #define YY_USE_CONST
95 
96 #else /* ! __cplusplus */
97 
98 /* C99 requires __STDC__ to be defined as 1. */
99 #if defined (__STDC__)
100 
101 #define YY_USE_CONST
102 
103 #endif /* defined (__STDC__) */
104 #endif /* ! __cplusplus */
105 
106 #ifdef YY_USE_CONST
107 #define yyconst const
108 #else
109 #define yyconst
110 #endif
111 
112 /* Returned upon end-of-file. */
113 #define YY_NULL 0
114 
115 /* Promotes a possibly negative, possibly signed char to an unsigned
116  * integer for use as an array index. If the signed char is negative,
117  * we want to instead treat it as an 8-bit unsigned char, hence the
118  * double cast.
119  */
120 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
121 
122 /* An opaque pointer. */
123 #ifndef YY_TYPEDEF_YY_SCANNER_T
124 #define YY_TYPEDEF_YY_SCANNER_T
125 typedef void* yyscan_t;
126 #endif
127 
128 /* For convenience, these vars (plus the bison vars far below)
129  are macros in the reentrant scanner. */
130 #define yyin yyg->yyin_r
131 #define yyout yyg->yyout_r
132 #define yyextra yyg->yyextra_r
133 #define yyleng yyg->yyleng_r
134 #define yytext yyg->yytext_r
135 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
136 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
137 #define yy_flex_debug yyg->yy_flex_debug_r
138 
139 /* Enter a start condition. This macro really ought to take a parameter,
140  * but we do it the disgusting crufty way forced on us by the ()-less
141  * definition of BEGIN.
142  */
143 #define BEGIN yyg->yy_start = 1 + 2 *
144 
145 /* Translate the current start state into a value that can be later handed
146  * to BEGIN to return to the state. The YYSTATE alias is for lex
147  * compatibility.
148  */
149 #define YY_START ((yyg->yy_start - 1) / 2)
150 #define YYSTATE YY_START
151 
152 /* Action number for EOF rule of a given start state. */
153 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154 
155 /* Special action meaning "start processing a new file". */
156 #define YY_NEW_FILE osolrestart(yyin ,yyscanner )
157 
158 #define YY_END_OF_BUFFER_CHAR 0
159 
160 /* Size of default input buffer. */
161 #ifndef YY_BUF_SIZE
162 #ifdef __ia64__
163 /* On IA-64, the buffer size is 16k, not 8k.
164  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
165  * Ditto for the __ia64__ case accordingly.
166  */
167 #define YY_BUF_SIZE 32768
168 #else
169 #define YY_BUF_SIZE 16384
170 #endif /* __ia64__ */
171 #endif
172 
173 /* The state buf must be large enough to hold one state per character in the main buffer.
174  */
175 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
176 
177 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
178 #define YY_TYPEDEF_YY_BUFFER_STATE
180 #endif
181 
182 #define EOB_ACT_CONTINUE_SCAN 0
183 #define EOB_ACT_END_OF_FILE 1
184 #define EOB_ACT_LAST_MATCH 2
185 
186  /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
187  * access to the local variable yy_act. Since yyless() is a macro, it would break
188  * existing scanners that call yyless() from OUTSIDE osollex.
189  * One obvious solution it to make yy_act a global. I tried that, and saw
190  * a 5% performance hit in a non-yylineno scanner, because yy_act is
191  * normally declared as a register variable-- so it is not worth it.
192  */
193  #define YY_LESS_LINENO(n) \
194  do { \
195  int yyl;\
196  for ( yyl = n; yyl < yyleng; ++yyl )\
197  if ( yytext[yyl] == '\n' )\
198  --yylineno;\
199  }while(0)
200 
201 /* Return all but the first "n" matched characters back to the input stream. */
202 #define yyless(n) \
203  do \
204  { \
205  /* Undo effects of setting up yytext. */ \
206  int yyless_macro_arg = (n); \
207  YY_LESS_LINENO(yyless_macro_arg);\
208  *yy_cp = yyg->yy_hold_char; \
209  YY_RESTORE_YY_MORE_OFFSET \
210  yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
211  YY_DO_BEFORE_ACTION; /* set up yytext again */ \
212  } \
213  while ( 0 )
214 
215 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
216 
217 #ifndef YY_TYPEDEF_YY_SIZE_T
218 #define YY_TYPEDEF_YY_SIZE_T
219 typedef size_t yy_size_t;
220 #endif
221 
222 #ifndef YY_STRUCT_YY_BUFFER_STATE
223 #define YY_STRUCT_YY_BUFFER_STATE
224 struct yy_buffer_state
225  {
226  FILE *yy_input_file;
227 
228  char *yy_ch_buf; /* input buffer */
229  char *yy_buf_pos; /* current position in input buffer */
230 
231  /* Size of input buffer in bytes, not including room for EOB
232  * characters.
233  */
235 
236  /* Number of characters read into yy_ch_buf, not including EOB
237  * characters.
238  */
239  int yy_n_chars;
240 
241  /* Whether we "own" the buffer - i.e., we know we created it,
242  * and can realloc() it to grow it, and should free() it to
243  * delete it.
244  */
245  int yy_is_our_buffer;
246 
247  /* Whether this is an "interactive" input source; if so, and
248  * if we're using stdio for input, then we want to use getc()
249  * instead of fread(), to make sure we stop fetching input after
250  * each newline.
251  */
252  int yy_is_interactive;
253 
254  /* Whether we're considered to be at the beginning of a line.
255  * If so, '^' rules will be active on the next match, otherwise
256  * not.
257  */
258  int yy_at_bol;
259 
260  int yy_bs_lineno;
261  int yy_bs_column;
263  /* Whether to try to fill the input buffer when we reach the
264  * end of it.
265  */
266  int yy_fill_buffer;
267 
268  int yy_buffer_status;
269 
270 #define YY_BUFFER_NEW 0
271 #define YY_BUFFER_NORMAL 1
272  /* When an EOF's been seen but there's still some text to process
273  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
274  * shouldn't try reading from the input source any more. We might
275  * still have a bunch of tokens to match, though, because of
276  * possible backing-up.
277  *
278  * When we actually see the EOF, we change the status to "new"
279  * (via osolrestart()), so that the user can continue scanning by
280  * just pointing yyin at a new input file.
281  */
282 #define YY_BUFFER_EOF_PENDING 2
283 
284  };
285 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
286 
287 /* We provide macros for accessing buffer states in case in the
288  * future we want to put the buffer states in a more general
289  * "scanner state".
290  *
291  * Returns the top of the stack, or NULL.
292  */
293 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
294  ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
295  : NULL)
296 
297 /* Same as previous macro, but useful when we know that the buffer stack is not
298  * NULL or when we need an lvalue. For internal use only.
299  */
300 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
301 
302 void osolrestart (FILE *input_file ,yyscan_t yyscanner );
303 void osol_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
304 YY_BUFFER_STATE osol_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
305 void osol_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
306 void osol_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
307 void osolpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
308 void osolpop_buffer_state (yyscan_t yyscanner );
309 
310 static void osolensure_buffer_stack (yyscan_t yyscanner );
311 static void osol_load_buffer_state (yyscan_t yyscanner );
312 static void osol_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
313 
314 #define YY_FLUSH_BUFFER osol_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
315 
316 YY_BUFFER_STATE osol_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
317 YY_BUFFER_STATE osol_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
318 YY_BUFFER_STATE osol_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
319 
320 void *osolalloc (yy_size_t ,yyscan_t yyscanner );
321 void *osolrealloc (void *,yy_size_t ,yyscan_t yyscanner );
322 void osolfree (void * ,yyscan_t yyscanner );
323 
324 #define yy_new_buffer osol_create_buffer
325 
326 #define yy_set_interactive(is_interactive) \
327  { \
328  if ( ! YY_CURRENT_BUFFER ){ \
329  osolensure_buffer_stack (yyscanner); \
330  YY_CURRENT_BUFFER_LVALUE = \
331  osol_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
332  } \
333  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
334  }
335 
336 #define yy_set_bol(at_bol) \
337  { \
338  if ( ! YY_CURRENT_BUFFER ){\
339  osolensure_buffer_stack (yyscanner); \
340  YY_CURRENT_BUFFER_LVALUE = \
341  osol_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
342  } \
343  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
344  }
345 
346 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
347 
348 /* Begin user sect3 */
349 
350 #define osolwrap(n) 1
351 #define YY_SKIP_YYWRAP
352 
353 typedef unsigned char YY_CHAR;
354 
355 typedef int yy_state_type;
356 
357 #define yytext_ptr yytext_r
358 
359 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
360 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
361 static int yy_get_next_buffer (yyscan_t yyscanner );
362 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
363 
364 /* Done after the current pattern has been matched and before the
365  * corresponding action - sets up yytext.
366  */
367 #define YY_DO_BEFORE_ACTION \
368  yyg->yytext_ptr = yy_bp; \
369  yyleng = (size_t) (yy_cp - yy_bp); \
370  yyg->yy_hold_char = *yy_cp; \
371  *yy_cp = '\0'; \
372  yyg->yy_c_buf_p = yy_cp;
373 
374 #define YY_NUM_RULES 513
375 #define YY_END_OF_BUFFER 514
376 /* This struct is not used in this scanner,
377  but its presence is necessary. */
378 struct yy_trans_info
379  {
382  };
384  { 0,
385  1, 1, 511, 511, 509, 509, 510, 510, 0, 0,
386  0, 0, 0, 0, 0, 0, 0, 0, 514, 512,
387  1, 2, 499, 2, 499, 6, 499, 5, 512, 4,
388  499, 499, 2, 511, 513, 509, 510, 500, 502, 503,
389  502, 506, 507, 506, 1, 499, 499, 6, 499, 5,
390  0, 4, 499, 499, 499, 499, 499, 499, 499, 499,
391  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
392  499, 3, 6, 6, 499, 7, 5, 0, 0, 505,
393  439, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
395 
396  0, 499, 499, 511, 509, 510, 500, 0, 508, 499,
397  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
398  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
399  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
400  499, 6, 0, 0, 0, 0, 0, 0, 0, 0,
401  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
402  0, 0, 0, 0, 441, 0, 0, 0, 0, 0,
403  0, 0, 0, 139, 0, 0, 0, 0, 0, 0,
404  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
405  0, 393, 0, 0, 0, 0, 0, 0, 0, 0,
406 
407  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
408  0, 0, 0, 0, 0, 0, 0, 0, 6, 504,
409  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
410  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
411  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
412  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
413  501, 0, 440, 0, 0, 0, 0, 0, 0, 0,
414  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
415  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
416  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
417 
418  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
419  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
420  0, 0, 0, 0, 0, 342, 0, 0, 0, 0,
421  0, 0, 0, 0, 0, 0, 0, 0, 0, 425,
422  0, 0, 0, 0, 0, 0, 0, 360, 0, 0,
423  0, 407, 0, 0, 0, 0, 0, 0, 0, 346,
424  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
425  0, 0, 0, 0, 121, 0, 0, 0, 0, 0,
426  0, 0, 0, 0, 0, 0, 0, 0, 0, 350,
427  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
428 
429  499, 493, 494, 499, 277, 499, 499, 499, 499, 499,
430  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
431  499, 499, 499, 499, 499, 22, 23, 499, 499, 499,
432  499, 499, 499, 499, 499, 440, 0, 442, 0, 0,
433  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
434  0, 0, 0, 140, 0, 0, 0, 0, 0, 0,
435  0, 0, 426, 0, 0, 0, 0, 0, 0, 0,
436  0, 0, 0, 0, 408, 0, 0, 0, 0, 0,
437  0, 394, 0, 0, 0, 0, 0, 0, 0, 0,
438  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
439 
440  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
441  0, 0, 0, 0, 0, 0, 421, 0, 0, 0,
442  0, 0, 0, 0, 0, 0, 0, 0, 0, 417,
443  0, 0, 0, 0, 0, 0, 0, 423, 0, 419,
444  448, 0, 0, 0, 425, 0, 0, 0, 0, 0,
445  0, 0, 0, 0, 0, 407, 0, 0, 427, 0,
446  0, 429, 0, 0, 0, 0, 0, 0, 0, 0,
447  0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
448  0, 0, 0, 0, 0, 0, 0, 415, 0, 0,
449  0, 0, 0, 0, 0, 0, 431, 0, 0, 0,
450 
451  0, 75, 0, 0, 0, 0, 0, 0, 499, 499,
452  499, 499, 499, 280, 499, 499, 499, 499, 499, 499,
453  499, 491, 492, 277, 499, 499, 278, 499, 499, 499,
454  499, 499, 499, 279, 499, 499, 499, 499, 499, 499,
455  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
456  499, 499, 499, 499, 499, 499, 442, 0, 422, 0,
457  0, 0, 0, 0, 0, 0, 0, 0, 343, 0,
458  0, 0, 0, 418, 0, 0, 0, 0, 140, 0,
459  0, 0, 424, 0, 420, 0, 0, 0, 0, 426,
460  0, 0, 0, 0, 0, 0, 0, 0, 361, 0,
461 
462  0, 0, 408, 0, 0, 428, 0, 0, 430, 0,
463  0, 0, 0, 0, 0, 394, 0, 0, 0, 0,
464  347, 0, 0, 0, 0, 0, 0, 0, 0, 0,
465  0, 0, 0, 0, 0, 0, 0, 416, 0, 0,
466  122, 0, 0, 0, 0, 0, 0, 0, 432, 0,
467  0, 0, 0, 0, 0, 0, 0, 0, 351, 0,
468  0, 0, 421, 0, 0, 0, 0, 0, 0, 370,
469  290, 0, 0, 0, 0, 417, 0, 0, 0, 0,
470  0, 0, 423, 419, 0, 0, 0, 0, 310, 0,
471  0, 0, 0, 0, 0, 0, 142, 384, 0, 0,
472 
473  0, 427, 0, 429, 0, 0, 0, 0, 0, 0,
474  146, 0, 0, 0, 0, 0, 0, 0, 0, 51,
475  50, 388, 0, 0, 0, 0, 399, 0, 0, 0,
476  0, 0, 0, 0, 415, 0, 0, 0, 0, 411,
477  0, 308, 0, 431, 0, 0, 0, 0, 0, 0,
478  312, 0, 0, 0, 499, 499, 499, 499, 499, 280,
479  499, 499, 499, 499, 499, 20, 21, 499, 499, 278,
480  499, 499, 499, 499, 499, 279, 499, 203, 204, 499,
481  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
482  499, 499, 227, 228, 499, 499, 499, 231, 232, 499,
483 
484  499, 499, 499, 499, 422, 0, 0, 0, 0, 0,
485  0, 0, 0, 0, 343, 0, 0, 0, 418, 0,
486  0, 0, 0, 0, 0, 424, 420, 0, 449, 0,
487  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
488  143, 361, 0, 0, 0, 0, 428, 0, 430, 0,
489  0, 0, 0, 0, 147, 0, 0, 0, 0, 347,
490  0, 0, 0, 0, 0, 52, 0, 0, 0, 0,
491  86, 0, 0, 400, 0, 0, 0, 0, 0, 0,
492  0, 416, 0, 122, 0, 0, 0, 412, 0, 0,
493  0, 432, 0, 0, 0, 0, 0, 76, 0, 0,
494 
495  0, 351, 0, 0, 0, 0, 0, 0, 0, 0,
496  0, 288, 0, 0, 0, 0, 0, 0, 0, 0,
497  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
498  0, 0, 0, 372, 144, 142, 0, 0, 0, 0,
499  0, 284, 0, 0, 0, 0, 0, 401, 148, 146,
500  0, 0, 0, 0, 437, 0, 0, 0, 0, 0,
501  0, 0, 0, 399, 0, 405, 0, 0, 0, 0,
502  0, 0, 0, 0, 0, 411, 0, 0, 0, 356,
503  0, 395, 0, 0, 0, 318, 324, 0, 0, 499,
504  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
505 
506  499, 499, 499, 499, 499, 499, 499, 499, 201, 202,
507  499, 499, 499, 499, 499, 215, 216, 499, 281, 499,
508  499, 499, 46, 499, 499, 499, 225, 226, 499, 499,
509  229, 230, 499, 235, 236, 499, 499, 499, 499, 0,
510  0, 0, 0, 0, 0, 0, 371, 0, 291, 0,
511  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
512  0, 449, 0, 0, 0, 0, 0, 311, 0, 0,
513  0, 0, 0, 0, 0, 143, 0, 385, 0, 0,
514  0, 0, 0, 0, 0, 0, 0, 0, 402, 147,
515  0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
516 
517  389, 0, 0, 0, 86, 0, 400, 0, 406, 0,
518  0, 0, 0, 0, 0, 0, 0, 0, 412, 0,
519  0, 309, 0, 0, 0, 0, 396, 0, 76, 0,
520  0, 0, 313, 0, 0, 0, 0, 0, 0, 366,
521  368, 0, 0, 0, 0, 0, 0, 65, 0, 0,
522  0, 0, 397, 0, 0, 0, 0, 354, 0, 316,
523  0, 0, 0, 0, 0, 144, 0, 0, 59, 0,
524  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
525  0, 0, 0, 0, 0, 77, 0, 0, 0, 0,
526  401, 148, 0, 0, 403, 0, 0, 0, 0, 0,
527 
528  0, 0, 0, 0, 0, 0, 405, 109, 0, 0,
529  0, 0, 358, 0, 0, 0, 0, 0, 150, 0,
530  413, 0, 0, 0, 395, 0, 376, 0, 0, 0,
531  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
532  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
533  499, 499, 499, 499, 499, 499, 213, 214, 281, 499,
534  219, 220, 46, 499, 499, 499, 499, 499, 499, 233,
535  234, 499, 499, 499, 499, 18, 19, 0, 0, 0,
536  0, 0, 0, 371, 291, 0, 289, 0, 0, 0,
537  0, 0, 0, 0, 0, 0, 398, 0, 0, 0,
538 
539  0, 0, 0, 311, 0, 0, 0, 0, 0, 0,
540  0, 373, 385, 0, 0, 0, 0, 0, 285, 0,
541  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
542  0, 0, 0, 0, 0, 0, 0, 0, 402, 0,
543  404, 0, 0, 0, 438, 0, 0, 0, 0, 389,
544  0, 0, 0, 0, 0, 406, 0, 0, 0, 0,
545  0, 0, 0, 0, 0, 0, 151, 0, 414, 0,
546  309, 0, 0, 0, 357, 396, 0, 0, 0, 313,
547  0, 319, 0, 325, 0, 0, 0, 433, 0, 0,
548  0, 0, 0, 0, 0, 0, 0, 0, 397, 292,
549 
550  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
551  0, 0, 0, 0, 0, 0, 0, 0, 162, 0,
552  282, 0, 0, 0, 0, 0, 0, 0, 0, 0,
553  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
554  0, 0, 0, 0, 0, 0, 0, 0, 403, 0,
555  314, 0, 0, 0, 0, 0, 0, 0, 63, 97,
556  0, 0, 435, 0, 0, 0, 0, 0, 0, 0,
557  0, 152, 150, 0, 413, 0, 0, 0, 0, 61,
558  0, 443, 499, 499, 499, 499, 499, 499, 499, 175,
559  176, 499, 273, 499, 499, 499, 499, 499, 499, 499,
560 
561  10, 11, 499, 499, 499, 499, 499, 499, 499, 499,
562  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
563  499, 499, 207, 208, 499, 499, 499, 217, 218, 499,
564  499, 499, 499, 499, 499, 14, 15, 499, 499, 239,
565  240, 16, 17, 0, 434, 0, 0, 367, 0, 369,
566  0, 0, 289, 0, 0, 0, 0, 0, 66, 0,
567  0, 0, 398, 0, 0, 0, 0, 0, 0, 355,
568  0, 0, 0, 317, 0, 0, 0, 0, 0, 0,
569  0, 0, 0, 373, 0, 163, 0, 60, 0, 0,
570  285, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571 
572  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573  0, 0, 0, 0, 78, 0, 0, 0, 0, 404,
574  0, 0, 438, 0, 0, 0, 0, 0, 0, 0,
575  0, 0, 0, 110, 0, 0, 436, 0, 0, 0,
576  0, 359, 0, 0, 0, 0, 0, 151, 414, 0,
577  0, 0, 357, 0, 0, 377, 0, 319, 325, 0,
578  0, 433, 0, 0, 0, 320, 0, 0, 0, 0,
579  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
580  0, 0, 0, 0, 0, 0, 0, 0, 0, 164,
581  162, 0, 0, 340, 0, 0, 0, 0, 0, 0,
582 
583  0, 0, 0, 336, 0, 0, 0, 0, 0, 0,
584  0, 0, 0, 0, 332, 0, 0, 0, 0, 0,
585  0, 0, 0, 0, 0, 0, 0, 0, 0, 435,
586  0, 0, 0, 322, 0, 0, 0, 0, 0, 152,
587  0, 0, 0, 0, 0, 0, 352, 499, 499, 499,
588  499, 499, 171, 172, 173, 174, 273, 499, 499, 183,
589  184, 499, 499, 499, 8, 9, 499, 499, 24, 25,
590  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
591  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
592  499, 499, 499, 499, 205, 206, 499, 211, 212, 499,
593 
594  499, 223, 224, 499, 499, 499, 12, 13, 499, 499,
595  237, 238, 434, 0, 367, 369, 0, 0, 0, 0,
596  0, 0, 66, 0, 0, 0, 0, 293, 0, 0,
597  0, 0, 355, 0, 0, 317, 0, 0, 0, 0,
598  0, 0, 0, 0, 0, 0, 163, 60, 0, 0,
599  283, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601  0, 0, 0, 78, 0, 0, 0, 0, 0, 0,
602  315, 0, 0, 0, 0, 0, 0, 0, 0, 64,
603  0, 98, 110, 0, 436, 0, 0, 0, 0, 359,
604 
605  0, 0, 0, 0, 0, 0, 0, 0, 0, 377,
606  0, 62, 0, 0, 444, 0, 364, 0, 286, 0,
607  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
608  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
609  0, 0, 164, 0, 0, 0, 0, 0, 0, 0,
610  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
611  0, 0, 457, 0, 0, 0, 0, 0, 0, 0,
612  0, 0, 0, 0, 0, 0, 348, 0, 0, 0,
613  0, 0, 0, 0, 0, 0, 0, 378, 0, 0,
614  0, 0, 0, 0, 374, 0, 0, 499, 499, 499,
615 
616  499, 499, 499, 169, 170, 499, 181, 182, 499, 499,
617  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
618  499, 499, 499, 499, 249, 499, 499, 499, 499, 499,
619  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
620  209, 210, 499, 221, 222, 499, 499, 499, 499, 243,
621  244, 0, 0, 0, 0, 321, 0, 0, 0, 0,
622  0, 0, 293, 0, 0, 0, 0, 0, 0, 0,
623  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624  283, 0, 341, 0, 0, 0, 0, 0, 0, 0,
625  0, 0, 0, 0, 337, 0, 0, 0, 0, 0,
626 
627  0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
628  0, 0, 0, 0, 0, 0, 315, 0, 0, 0,
629  0, 0, 0, 0, 64, 98, 0, 0, 0, 0,
630  0, 323, 0, 0, 0, 0, 0, 0, 0, 0,
631  0, 62, 0, 444, 0, 353, 0, 0, 0, 344,
632  0, 0, 0, 386, 0, 0, 91, 0, 0, 0,
633  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
634  0, 0, 0, 0, 0, 0, 0, 0, 0, 471,
635  0, 0, 0, 0, 477, 0, 0, 0, 0, 0,
636  0, 0, 0, 0, 0, 0, 0, 71, 0, 0,
637 
638  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
639  0, 0, 380, 0, 0, 0, 0, 0, 409, 0,
640  0, 0, 499, 499, 499, 499, 499, 272, 499, 271,
641  499, 499, 499, 47, 499, 499, 48, 499, 499, 499,
642  499, 499, 499, 195, 196, 499, 499, 499, 499, 499,
643  247, 499, 249, 499, 499, 499, 499, 499, 499, 499,
644  256, 499, 499, 499, 499, 499, 499, 44, 499, 499,
645  499, 260, 499, 499, 499, 499, 499, 499, 49, 241,
646  242, 0, 365, 0, 0, 287, 321, 0, 0, 0,
647  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 
649  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
650  341, 0, 0, 0, 0, 0, 0, 0, 0, 0,
651  0, 337, 0, 0, 478, 0, 0, 0, 0, 0,
652  0, 458, 0, 0, 0, 0, 0, 333, 0, 0,
653  0, 0, 0, 0, 0, 0, 349, 0, 0, 0,
654  0, 0, 0, 0, 0, 0, 323, 0, 0, 379,
655  0, 0, 0, 0, 410, 0, 0, 375, 0, 0,
656  353, 0, 0, 0, 81, 0, 0, 154, 0, 0,
657  0, 158, 0, 0, 0, 0, 0, 0, 0, 0,
658  0, 0, 0, 382, 0, 0, 141, 0, 0, 0,
659 
660  0, 0, 0, 0, 0, 0, 0, 473, 0, 0,
661  477, 0, 0, 0, 0, 0, 0, 479, 0, 0,
662  452, 0, 0, 0, 73, 67, 0, 0, 145, 0,
663  0, 362, 53, 135, 0, 0, 0, 0, 0, 0,
664  133, 0, 0, 0, 409, 0, 0, 0, 499, 499,
665  499, 499, 272, 271, 499, 179, 180, 47, 499, 48,
666  499, 499, 499, 276, 499, 499, 275, 499, 193, 194,
667  499, 274, 499, 499, 499, 247, 499, 499, 499, 447,
668  499, 499, 499, 499, 256, 499, 499, 499, 499, 499,
669  499, 258, 44, 499, 499, 260, 499, 499, 499, 499,
670 
671  499, 49, 365, 0, 287, 0, 0, 0, 345, 0,
672  0, 155, 0, 0, 387, 0, 159, 0, 0, 92,
673  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
674  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675  0, 472, 0, 474, 0, 0, 478, 0, 0, 0,
676  0, 0, 458, 0, 480, 0, 0, 453, 0, 0,
677  0, 0, 0, 72, 0, 0, 0, 0, 349, 0,
678  0, 0, 0, 0, 0, 0, 0, 0, 0, 381,
679  379, 0, 0, 0, 410, 0, 375, 0, 0, 0,
680  0, 0, 156, 154, 0, 0, 160, 158, 0, 105,
681 
682  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
683  0, 141, 0, 0, 0, 0, 0, 0, 0, 0,
684  0, 473, 0, 475, 0, 0, 0, 0, 0, 0,
685  479, 0, 452, 0, 0, 0, 69, 145, 0, 0,
686  0, 0, 0, 0, 0, 87, 131, 0, 0, 0,
687  0, 0, 0, 499, 499, 499, 263, 499, 499, 499,
688  177, 178, 499, 499, 27, 26, 276, 499, 499, 275,
689  499, 499, 274, 499, 499, 499, 499, 499, 499, 447,
690  499, 251, 499, 499, 499, 499, 499, 499, 499, 499,
691  499, 499, 41, 499, 258, 499, 499, 499, 499, 499,
692 
693  499, 499, 499, 0, 0, 0, 345, 0, 82, 155,
694  0, 387, 159, 0, 92, 0, 0, 0, 0, 0,
695  0, 0, 0, 0, 0, 0, 383, 0, 0, 0,
696  0, 0, 0, 0, 0, 0, 472, 474, 0, 476,
697  0, 0, 0, 0, 0, 0, 480, 0, 453, 0,
698  0, 0, 0, 74, 72, 0, 68, 0, 0, 0,
699  0, 363, 0, 54, 0, 136, 0, 0, 0, 0,
700  0, 0, 381, 0, 134, 0, 0, 0, 0, 0,
701  0, 0, 0, 0, 156, 0, 0, 0, 160, 0,
702  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
703 
704  0, 0, 302, 0, 0, 0, 0, 0, 0, 465,
705  0, 475, 0, 0, 481, 0, 0, 0, 0, 0,
706  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
707  57, 0, 0, 0, 326, 0, 499, 499, 263, 499,
708  499, 167, 168, 499, 499, 187, 188, 499, 191, 192,
709  499, 199, 200, 499, 245, 499, 499, 499, 251, 499,
710  36, 499, 499, 499, 499, 499, 499, 499, 499, 499,
711  499, 499, 499, 41, 499, 499, 499, 259, 499, 262,
712  499, 499, 499, 499, 29, 28, 0, 0, 0, 82,
713  0, 0, 0, 106, 0, 0, 0, 0, 0, 0,
714 
715  0, 0, 0, 0, 383, 0, 0, 0, 0, 0,
716  0, 0, 0, 466, 0, 476, 0, 0, 482, 0,
717  0, 0, 0, 0, 0, 0, 0, 74, 68, 0,
718  70, 0, 0, 363, 54, 136, 0, 0, 0, 0,
719  0, 0, 88, 134, 0, 132, 0, 0, 0, 0,
720  0, 0, 0, 0, 0, 0, 0, 0, 304, 0,
721  489, 0, 0, 0, 0, 0, 0, 0, 0, 0,
722  0, 0, 0, 0, 461, 0, 463, 0, 465, 0,
723  0, 481, 0, 459, 0, 0, 0, 454, 0, 0,
724  330, 0, 0, 0, 0, 107, 0, 0, 0, 0,
725 
726  0, 0, 499, 499, 499, 499, 165, 166, 499, 499,
727  185, 186, 189, 190, 197, 198, 245, 499, 246, 499,
728  499, 36, 499, 499, 499, 499, 499, 499, 499, 499,
729  499, 499, 499, 499, 499, 499, 259, 262, 499, 499,
730  499, 0, 0, 0, 0, 0, 106, 0, 0, 490,
731  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
732  303, 0, 0, 0, 462, 0, 464, 0, 466, 0,
733  0, 482, 0, 0, 0, 0, 0, 455, 0, 0,
734  0, 70, 0, 0, 0, 0, 0, 0, 0, 88,
735  132, 0, 58, 0, 0, 0, 327, 0, 137, 0,
736 
737  294, 0, 0, 0, 0, 489, 0, 0, 0, 0,
738  0, 0, 95, 55, 0, 0, 0, 0, 461, 463,
739  0, 0, 334, 0, 0, 0, 454, 0, 487, 0,
740  0, 0, 0, 0, 0, 0, 0, 0, 149, 0,
741  0, 499, 269, 499, 268, 499, 499, 499, 497, 498,
742  246, 499, 499, 499, 252, 499, 499, 499, 499, 499,
743  499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
744  270, 499, 0, 0, 0, 0, 0, 0, 305, 490,
745  0, 0, 0, 0, 0, 0, 0, 0, 0, 303,
746  0, 0, 462, 464, 0, 0, 0, 0, 0, 460,
747 
748  0, 0, 455, 0, 488, 0, 0, 331, 0, 0,
749  0, 0, 0, 108, 0, 0, 58, 0, 0, 327,
750  0, 0, 0, 0, 89, 0, 0, 0, 129, 0,
751  0, 0, 0, 0, 0, 338, 0, 445, 0, 328,
752  0, 0, 487, 0, 0, 0, 0, 101, 0, 0,
753  0, 149, 0, 0, 269, 268, 499, 499, 495, 496,
754  499, 499, 252, 499, 253, 499, 254, 499, 499, 255,
755  499, 499, 499, 499, 499, 499, 499, 42, 499, 43,
756  499, 499, 261, 270, 499, 499, 0, 138, 0, 0,
757  295, 0, 0, 305, 0, 0, 0, 0, 0, 0,
758 
759  0, 0, 96, 0, 56, 0, 0, 0, 0, 0,
760  0, 335, 0, 460, 0, 0, 488, 0, 331, 0,
761  0, 0, 0, 108, 0, 0, 0, 0, 0, 0,
762  0, 0, 0, 115, 0, 0, 0, 0, 0, 0,
763  0, 161, 0, 450, 0, 0, 483, 0, 485, 0,
764  0, 0, 0, 79, 0, 0, 0, 0, 499, 267,
765  499, 266, 499, 499, 253, 254, 499, 255, 499, 499,
766  257, 499, 499, 499, 499, 42, 43, 499, 261, 499,
767  499, 138, 0, 295, 0, 0, 90, 0, 0, 0,
768  130, 0, 0, 0, 0, 96, 56, 0, 0, 339,
769 
770  0, 451, 0, 446, 0, 335, 0, 329, 0, 484,
771  0, 486, 0, 0, 0, 0, 0, 102, 0, 0,
772  0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
773  0, 0, 0, 161, 450, 467, 483, 485, 469, 0,
774  0, 0, 83, 0, 0, 0, 267, 266, 499, 248,
775  499, 499, 456, 499, 257, 499, 499, 499, 499, 499,
776  499, 499, 0, 0, 90, 0, 116, 0, 130, 0,
777  0, 0, 0, 0, 339, 451, 446, 0, 329, 484,
778  486, 0, 0, 0, 0, 102, 0, 80, 0, 0,
779  0, 0, 300, 0, 0, 0, 0, 0, 0, 0,
780 
781  0, 390, 298, 0, 0, 306, 296, 248, 499, 250,
782  456, 499, 499, 499, 499, 37, 499, 499, 499, 265,
783  499, 264, 0, 0, 104, 116, 0, 0, 0, 0,
784  0, 0, 0, 468, 0, 470, 0, 0, 0, 80,
785  0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
786  111, 0, 0, 0, 0, 250, 499, 499, 499, 37,
787  499, 499, 45, 265, 264, 0, 301, 104, 0, 0,
788  0, 0, 0, 0, 468, 470, 0, 391, 0, 299,
789  0, 84, 0, 0, 307, 0, 297, 0, 0, 0,
790  125, 123, 0, 93, 0, 0, 0, 499, 499, 499,
791 
792  499, 45, 301, 0, 0, 0, 0, 112, 0, 0,
793  0, 391, 299, 0, 0, 307, 297, 0, 0, 127,
794  0, 0, 99, 0, 499, 499, 499, 499, 0, 0,
795  126, 0, 124, 112, 0, 0, 94, 0, 0, 0,
796  0, 0, 0, 0, 0, 499, 499, 499, 499, 0,
797  128, 126, 124, 0, 94, 0, 0, 100, 0, 0,
798  0, 0, 0, 0, 499, 499, 499, 499, 128, 0,
799  0, 100, 0, 0, 153, 0, 157, 0, 0, 0,
800  499, 499, 499, 499, 0, 0, 0, 153, 157, 113,
801  0, 119, 499, 499, 499, 499, 0, 0, 0, 0,
802 
803  499, 392, 499, 499, 499, 40, 0, 114, 0, 0,
804  120, 0, 392, 499, 499, 39, 40, 114, 0, 120,
805  0, 499, 38, 39, 0, 117, 38, 0, 0, 118,
806  118, 0
807  } ;
808 
810  { 0,
811  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
812  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
813  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
814  1, 2, 4, 5, 6, 6, 6, 6, 7, 6,
815  6, 6, 8, 6, 9, 10, 11, 12, 12, 12,
816  12, 13, 12, 14, 12, 12, 12, 6, 1, 15,
817  16, 17, 18, 6, 19, 20, 21, 22, 23, 24,
818  6, 25, 26, 27, 28, 29, 30, 31, 32, 33,
819  6, 34, 35, 36, 37, 38, 39, 6, 6, 6,
820  1, 6, 1, 1, 6, 1, 40, 41, 42, 43,
821 
822  44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
823  54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
824  64, 65, 1, 66, 1, 1, 1, 1, 1, 1,
825  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
826  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
827  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
828  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
829  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
830  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
831  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
832 
833  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
834  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
835  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
836  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
837  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
838  1, 1, 1, 1, 1
839  } ;
840 
842  { 0,
843  1, 1, 1, 1, 2, 1, 3, 1, 1, 1,
844  1, 1, 1, 1, 4, 1, 5, 1, 1, 1,
845  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
846  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
847  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
848  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
849  1, 1, 1, 1, 1, 1
850  } ;
851 
853  { 0,
854  0, 66, 6102, 6101, 6112, 6111, 6108, 6107, 0, 0,
855  0, 0, 6098, 6097, 13, 16, 3, 5, 6111, 6120,
856  131, 6105, 195, 6102, 20, 38, 6091, 86, 254, 6120,
857  6076, 6066, 6120, 0, 6120, 0, 0, 0, 6120, 6120,
858  6096, 6120, 6120, 6087, 0, 0, 46, 41, 6086, 91,
859  20, 6120, 6071, 6061, 23, 8, 6056, 6046, 6041, 6040,
860  4, 54, 5, 46, 6055, 6041, 65, 159, 49, 6054,
861  6049, 6120, 25, 248, 108, 6120, 33, 6083, 293, 6120,
862  6120, 6065, 77, 75, 6036, 43, 167, 6041, 6044, 174,
863  6033, 181, 83, 171, 223, 219, 191, 311, 227, 210,
864 
865  6046, 6061, 6053, 0, 0, 0, 0, 6066, 6120, 6024,
866  6027, 6021, 235, 6021, 6018, 6023, 6022, 264, 6033, 89,
867  6032, 251, 6022, 6020, 6019, 6021, 6007, 6028, 6027, 6001,
868  235, 6013, 6007, 122, 6023, 6007, 206, 6013, 266, 6012,
869  188, 316, 6050, 287, 6032, 281, 163, 6003, 276, 305,
870  6008, 6011, 321, 6000, 221, 309, 332, 336, 333, 277,
871  345, 321, 344, 6013, 6120, 5994, 6000, 377, 5992, 5995,
872  357, 305, 346, 6004, 5987, 6001, 5990, 5993, 5990, 5998,
873  409, 370, 6017, 5996, 5998, 374, 417, 358, 5985, 5985,
874  5990, 6120, 5982, 5982, 5984, 5973, 5977, 5983, 5970, 323,
875 
876  5968, 5965, 5972, 5969, 5962, 5966, 5969, 372, 376, 382,
877  383, 5963, 5968, 5979, 5963, 5967, 5972, 380, 438, 6120,
878  5971, 5972, 5969, 5967, 388, 5969, 5958, 5957, 5948, 440,
879  442, 448, 397, 5947, 5966, 5965, 5960, 5946, 5943, 5957,
880  5959, 5963, 5968, 5946, 5941, 5951, 5933, 5967, 5940, 5945,
881  450, 455, 5937, 5945, 5928, 5947, 5927, 5925, 5948, 5937,
882  6120, 465, 467, 469, 5924, 5930, 436, 5922, 5925, 423,
883  420, 422, 482, 5918, 5932, 5921, 5924, 5921, 5929, 485,
884  446, 5948, 5927, 5929, 438, 490, 437, 5916, 5916, 5921,
885  495, 5913, 5913, 5915, 5904, 5908, 5914, 5901, 450, 5899,
886 
887  5896, 5903, 5900, 5893, 5897, 5900, 455, 454, 463, 464,
888  5894, 5899, 5910, 5894, 5898, 5903, 404, 515, 5924, 5889,
889  5890, 5888, 477, 5900, 5909, 476, 520, 5896, 5897, 5894,
890  5889, 5884, 5883, 525, 527, 5890, 5889, 5879, 536, 538,
891  5887, 5871, 5869, 5869, 5883, 5869, 5873, 5898, 5879, 5878,
892  543, 545, 5864, 547, 549, 5876, 5879, 412, 5877, 5,
893  5869, 5865, 5871, 5859, 5855, 5865, 5853, 5866, 512, 5849,
894  5876, 5846, 555, 5845, 5867, 5847, 5844, 5862, 5844, 5852,
895  559, 5855, 5839, 5853, 5843, 5851, 5841, 5836, 5832, 533,
896  533, 5841, 5844, 571, 5825, 5829, 5830, 5850, 575, 5830,
897 
898  583, 5879, 5876, 590, 592, 5822, 594, 5841, 5829, 5820,
899  5857, 5829, 596, 598, 5832, 5811, 5834, 5833, 5828, 5839,
900  5826, 5826, 5824, 5823, 600, 6120, 6120, 5808, 613, 5825,
901  5813, 615, 5819, 5798, 5814, 617, 619, 621, 623, 5838,
902  5803, 5804, 5802, 560, 5814, 5823, 625, 630, 5810, 5811,
903  5808, 5803, 632, 635, 5798, 5797, 641, 643, 5804, 5803,
904  5793, 648, 650, 5801, 5785, 5783, 5783, 5797, 5783, 5787,
905  652, 5794, 5793, 654, 659, 5779, 665, 672, 5791, 5794,
906  670, 661, 517, 5792, 674, 5784, 5780, 5786, 5774, 5770,
907  5780, 5768, 5781, 637, 5764, 5791, 5761, 693, 5760, 695,
908 
909  5763, 5760, 5778, 5760, 5768, 702, 5771, 5755, 5769, 5759,
910  5767, 5757, 5752, 5748, 704, 711, 683, 5759, 5746, 5743,
911  5749, 685, 5761, 5752, 5756, 5756, 5740, 5758, 714, 720,
912  5744, 5739, 5753, 5751, 5749, 5748, 722, 724, 732, 734,
913  6120, 340, 5734, 5731, 738, 5726, 5740, 5728, 5746, 5739,
914  5740, 740, 5761, 5729, 5741, 742, 5732, 744, 751, 5731,
915  753, 756, 5745, 5729, 5732, 5717, 760, 5715, 5725, 5728,
916  5727, 5726, 5727, 479, 762, 5711, 5707, 5704, 5732, 764,
917  5707, 5719, 5702, 622, 5716, 5712, 766, 770, 5715, 5718,
918  5715, 772, 5699, 5696, 5701, 782, 784, 5696, 5708, 5693,
919 
920  5692, 6120, 5695, 5717, 5703, 5703, 5701, 5704, 5703, 5685,
921  8, 5687, 788, 790, 5685, 5699, 5690, 5673, 792, 795,
922  5697, 6120, 6120, 803, 5692, 807, 809, 5683, 5673, 5684,
923  5677, 5667, 811, 813, 815, 817, 5672, 5673, 5678, 5669,
924  823, 5680, 5667, 5660, 5663, 5662, 5665, 826, 830, 5668,
925  5658, 838, 841, 847, 5662, 5657, 849, 853, 855, 5667,
926  5654, 5651, 5657, 746, 5669, 5660, 5664, 857, 859, 5664,
927  5648, 5666, 862, 864, 5652, 5647, 5661, 5659, 866, 5657,
928  5656, 869, 873, 875, 878, 882, 522, 5642, 5639, 885,
929  5634, 5648, 5636, 5654, 5647, 5648, 887, 891, 893, 5669,
930 
931  5637, 5649, 895, 5640, 898, 900, 5639, 903, 907, 5653,
932  5637, 5640, 5625, 909, 5623, 911, 5633, 5636, 5635, 914,
933  916, 5634, 5635, 559, 919, 5619, 5615, 5612, 921, 925,
934  5616, 5628, 5611, 644, 5625, 5621, 927, 930, 5624, 932,
935  937, 5627, 5624, 943, 5608, 5605, 5610, 945, 948, 5605,
936  5617, 5602, 5601, 950, 5604, 5626, 5612, 953, 955, 5612,
937  5610, 5613, 961, 5607, 5611, 5606, 5605, 5635, 5607, 6120,
938  5588, 5600, 5599, 663, 5601, 963, 5599, 5593, 5581, 5595,
939  5585, 5580, 966, 969, 5579, 5599, 5594, 5585, 5588, 5591,
940  617, 5576, 5579, 5573, 971, 5553, 974, 6120, 738, 5511,
941 
942  648, 976, 5515, 978, 5529, 5507, 5512, 981, 983, 5541,
943  988, 66, 96, 185, 228, 280, 284, 340, 437, 990,
944  6120, 463, 465, 482, 516, 993, 999, 1002, 507, 533,
945  531, 573, 603, 639, 1006, 652, 672, 704, 1009, 1011,
946  706, 6120, 732, 1013, 741, 736, 1015, 756, 741, 767,
947  763, 767, 789, 795, 779, 805, 793, 799, 816, 1018,
948  838, 838, 852, 870, 1020, 6120, 6120, 893, 897, 1026,
949  905, 915, 907, 920, 1003, 1028, 1031, 982, 990, 967,
950  962, 983, 1010, 1040, 1042, 1048, 1050, 1052, 989, 1018,
951  1003, 1056, 1055, 1055, 1027, 1023, 1067, 1066, 1066, 1073,
952 
953  1075, 1015, 1037, 1081, 1083, 1042, 1048, 1046, 1047, 1079,
954  1053, 1092, 1096, 1051, 1098, 1057, 1063, 1062, 1103, 1064,
955  1060, 1051, 1067, 1059, 1057, 1113, 1115, 1119, 1121, 1062,
956  1089, 1086, 1079, 1126, 1090, 1109, 1079, 1090, 1091, 1135,
957  1137, 1139, 1142, 1104, 1090, 1106, 1147, 1099, 1153, 1116,
958  1099, 1106, 1158, 1161, 1163, 1123, 1115, 1114, 1115, 1171,
959  1131, 1118, 1131, 1127, 1179, 1181, 1183, 1128, 1134, 1187,
960  1189, 1153, 1192, 1195, 1199, 1141, 1161, 1147, 1149, 1162,
961  1166, 1208, 1155, 1211, 1160, 1174, 1217, 1219, 1179, 1222,
962  1180, 1225, 1188, 1178, 1229, 1188, 1233, 1235, 1178, 1201,
963 
964  1240, 1242, 1184, 1203, 1208, 1206, 1201, 1196, 1197, 1235,
965  1197, 6120, 1200, 1215, 1207, 1221, 1203, 1219, 1209, 1211,
966  1264, 1209, 1229, 1226, 1217, 1221, 1214, 1216, 1224, 1228,
967  1229, 1236, 1222, 6120, 1280, 1282, 1269, 1242, 1243, 1265,
968  1245, 1278, 1246, 1260, 1242, 1239, 1300, 1303, 1316, 1318,
969  1283, 1320, 1252, 1270, 6120, 1281, 1278, 1262, 1303, 1274,
970  1308, 1274, 1286, 1333, 1336, 1338, 1284, 1284, 1285, 1301,
971  1288, 1303, 1316, 1301, 1348, 1352, 1354, 1320, 1320, 6120,
972  1359, 1361, 1312, 1314, 1316, 6120, 6120, 1325, 1319, 1315,
973  1320, 1323, 1313, 1313, 1376, 1321, 1322, 1338, 1335, 1362,
974 
975  1345, 1384, 1336, 1326, 1337, 1352, 1330, 1355, 6120, 6120,
976  1351, 1395, 1342, 1341, 1400, 1399, 1399, 1406, 1410, 1412,
977  1414, 1421, 1423, 1346, 1378, 1363, 6120, 6120, 1387, 1427,
978  6120, 6120, 1429, 1428, 1428, 1383, 1437, 1439, 1442, 1401,
979  1397, 1393, 1394, 1432, 1395, 1454, 1456, 1458, 1460, 1462,
980  1408, 1423, 1415, 1429, 1411, 1428, 1418, 1420, 1474, 1419,
981  1440, 1479, 1439, 1430, 1434, 1427, 1485, 1487, 1434, 1442,
982  1446, 1447, 1454, 1440, 1496, 1498, 1501, 1503, 1463, 1464,
983  1486, 1466, 1517, 1467, 1481, 1464, 1461, 1519, 1521, 1523,
984  1525, 1473, 1475, 1528, 1488, 1485, 1470, 1512, 1554, 1556,
985 
986  1558, 1486, 1540, 1487, 1563, 1515, 1565, 1567, 1569, 1516,
987  1516, 1517, 1533, 1520, 1535, 1549, 1532, 1580, 1584, 1586,
988  1588, 1590, 1556, 1555, 1596, 1598, 1604, 1542, 1606, 1549,
989  1552, 1608, 1614, 1616, 1619, 1568, 1563, 1621, 1578, 6120,
990  6120, 1579, 1571, 1585, 1573, 1572, 1584, 6120, 1581, 1576,
991  1580, 1637, 1639, 1585, 1585, 1605, 1625, 1623, 1584, 6120,
992  1629, 1595, 1602, 1612, 1619, 1656, 1612, 1660, 6120, 1613,
993  1607, 1612, 1624, 1606, 1617, 1619, 1631, 1630, 1635, 1629,
994  1637, 1640, 1639, 1629, 1645, 6120, 1628, 1634, 1655, 1634,
995  1692, 1695, 1639, 1699, 1701, 1659, 1647, 1649, 1646, 1668,
996 
997  1665, 1651, 1663, 1664, 1670, 1657, 1715, 1671, 1717, 1677,
998  1679, 1679, 1693, 1670, 1672, 1687, 1726, 1714, 1730, 1733,
999  1736, 1686, 1701, 1684, 1744, 1687, 6120, 1704, 1692, 1707,
1000  1704, 1695, 1728, 1729, 1754, 1756, 1758, 1764, 1714, 1766,
1001  1718, 1723, 1722, 1772, 1774, 1742, 1781, 1732, 1737, 1732,
1002  1732, 1778, 1790, 1812, 1818, 1739, 6120, 6120, 1792, 1820,
1003  1786, 1789, 1800, 1826, 1741, 1748, 1767, 1828, 1830, 6120,
1004  6120, 1780, 1836, 1838, 1844, 1821, 1829, 1851, 1800, 1853,
1005  1855, 1802, 1802, 1858, 1860, 1862, 1864, 1825, 1814, 1814,
1006  1826, 1873, 1824, 1819, 1823, 1879, 1881, 1827, 1827, 1847,
1007 
1008  1867, 1889, 1824, 1891, 1896, 1882, 1838, 1849, 1857, 1867,
1009  1905, 1907, 1913, 1915, 1921, 1860, 1861, 1923, 1925, 1867,
1010  1885, 1867, 1878, 1880, 1893, 1891, 1895, 1891, 1899, 1902,
1011  1901, 1891, 1907, 1948, 1892, 1898, 1919, 1899, 1957, 1961,
1012  1964, 1917, 1903, 1966, 1968, 1915, 1912, 1934, 1931, 1974,
1013  1920, 1932, 1933, 1939, 1927, 1983, 1985, 1987, 1947, 1949,
1014  1949, 1993, 1939, 1943, 1958, 1997, 2003, 2005, 2009, 1947,
1015  2013, 1963, 1951, 2015, 2017, 2023, 1956, 2025, 1977, 2031,
1016  2033, 2035, 2037, 2041, 1966, 1987, 2043, 2045, 1982, 1996,
1017  2003, 1993, 2009, 2032, 2003, 2015, 2010, 2011, 2059, 6120,
1018 
1019  2015, 2005, 2021, 2026, 2016, 2038, 2029, 2016, 2011, 2031,
1020  2033, 2030, 2031, 2047, 2037, 2020, 2078, 2065, 2081, 2041,
1021  6120, 2033, 2028, 2048, 2031, 2036, 2031, 2031, 2037, 2044,
1022  2052, 2050, 2040, 2047, 2057, 2063, 2063, 2048, 2054, 2072,
1023  2068, 2054, 2053, 2059, 2068, 2058, 2050, 2075, 2114, 2061,
1024  6120, 2075, 2076, 2062, 2082, 2075, 2067, 2074, 6120, 6120,
1025  2068, 2125, 2127, 2088, 2110, 2074, 2095, 2102, 2078, 2112,
1026  2098, 2138, 2141, 2134, 2144, 2094, 2098, 2102, 2099, 6120,
1027  2108, 2095, 2091, 2100, 2114, 2115, 2157, 2159, 2165, 2158,
1028  2158, 2172, 2174, 2115, 2176, 2178, 2124, 2142, 2124, 2184,
1029 
1030  2185, 2186, 2130, 2193, 2195, 2175, 2177, 2155, 2178, 2154,
1031  2152, 2157, 2148, 2158, 2175, 2162, 2176, 2179, 2164, 2189,
1032  2182, 2221, 2220, 2220, 2228, 2235, 2170, 6120, 6120, 2230,
1033  2245, 2177, 2203, 2181, 2251, 2240, 2242, 2257, 2259, 2246,
1034  2248, 6120, 6120, 2265, 2267, 2198, 2269, 2272, 2274, 2276,
1035  2210, 2217, 2278, 2224, 2240, 2262, 2234, 2286, 2290, 2248,
1036  2246, 2247, 2294, 2296, 2252, 2242, 2258, 2264, 2303, 2305,
1037  2258, 2280, 2309, 2312, 2276, 2263, 2258, 2278, 2281, 2278,
1038  2279, 2296, 2284, 2326, 2328, 2330, 2332, 2334, 2294, 2337,
1039  2339, 2290, 2285, 2306, 2288, 2293, 2289, 2289, 2295, 2300,
1040 
1041  2309, 2307, 2297, 2304, 2314, 2320, 2320, 2305, 2311, 2329,
1042  2325, 2311, 2310, 2366, 2368, 2320, 2329, 2319, 2311, 2374,
1043  2321, 2377, 2379, 2340, 2341, 2327, 2347, 2340, 2332, 2339,
1044  2389, 2393, 2395, 2397, 2335, 2399, 2401, 2362, 2385, 2349,
1045  2411, 2415, 2371, 2381, 2360, 2394, 2380, 2420, 2422, 2372,
1046  2376, 2381, 2428, 2380, 2431, 2433, 2435, 2437, 2439, 2399,
1047  2442, 2444, 2385, 2410, 2388, 6120, 2400, 2403, 2396, 2408,
1048  2403, 2414, 2406, 2407, 2411, 2413, 2420, 2425, 2408, 2414,
1049  2428, 2420, 2413, 2429, 2414, 2419, 2434, 2418, 2432, 2475,
1050  2477, 2470, 2430, 2425, 2440, 2439, 2450, 2430, 2444, 2445,
1051 
1052  2444, 2431, 2453, 2450, 2437, 2453, 2453, 2447, 2449, 2450,
1053  2459, 2462, 2463, 2462, 2459, 2467, 2465, 2470, 2476, 2460,
1054  2490, 2461, 2457, 2469, 2475, 2465, 2476, 2477, 2486, 2521,
1055  2490, 2478, 2479, 6120, 2476, 2503, 2482, 2478, 2481, 2531,
1056  2477, 2477, 2477, 2496, 2499, 2487, 6120, 2518, 2488, 2480,
1057  2482, 2544, 2543, 2543, 6120, 6120, 2552, 2499, 2554, 2553,
1058  2553, 2503, 2517, 2520, 6120, 6120, 2510, 2564, 6120, 6120,
1059  2525, 2506, 2529, 2509, 2572, 2533, 2513, 2524, 2528, 2580,
1060  2520, 2529, 2541, 2545, 2528, 2536, 2541, 2544, 2533, 2539,
1061  2532, 2560, 2546, 2547, 6120, 6120, 2598, 2594, 2595, 2558,
1062 
1063  2605, 2604, 2604, 2565, 2550, 2571, 6120, 6120, 2614, 2616,
1064  6120, 6120, 2622, 2556, 2624, 2626, 2582, 2568, 2630, 2581,
1065  2584, 2577, 2635, 2591, 2586, 2597, 2640, 2642, 2592, 2594,
1066  2598, 2600, 2649, 2609, 2614, 2653, 2600, 2606, 2620, 2612,
1067  2605, 2621, 2606, 2611, 2626, 2610, 2666, 2668, 2620, 2671,
1068  2673, 2675, 2635, 2634, 2645, 2625, 2639, 2640, 2639, 2626,
1069  2647, 2687, 2633, 2650, 2650, 2644, 2645, 2646, 2655, 2658,
1070  2659, 2658, 2703, 2705, 2662, 2665, 2670, 2676, 2690, 2712,
1071  2714, 2665, 2661, 2673, 2679, 2669, 2680, 2681, 2724, 2732,
1072  2735, 2737, 2740, 2692, 2742, 2695, 2684, 2688, 2744, 2746,
1073 
1074  2698, 2727, 2706, 2702, 2705, 2698, 2698, 2717, 2720, 2760,
1075  2762, 2764, 2715, 2767, 2769, 2771, 6120, 2718, 6120, 2734,
1076  2733, 2720, 2736, 2728, 2724, 2730, 2728, 2742, 2743, 2737,
1077  2731, 2743, 2734, 2742, 2750, 2747, 2737, 2761, 2756, 2747,
1078  2752, 2749, 2800, 2753, 2761, 2747, 2750, 2754, 2761, 2766,
1079  2754, 2755, 2769, 2756, 2756, 2774, 2815, 2759, 2763, 2764,
1080  2782, 2783, 6120, 2766, 2785, 2782, 2769, 2771, 2789, 2786,
1081  2788, 2791, 2786, 2791, 2773, 2795, 6120, 2784, 2795, 2787,
1082  2799, 2784, 2789, 2785, 2788, 2795, 2803, 6120, 2794, 2788,
1083  2806, 2797, 2850, 2810, 6120, 2796, 2814, 2804, 2815, 2800,
1084 
1085  2802, 2859, 2861, 6120, 6120, 2863, 6120, 6120, 2866, 2816,
1086  2869, 2829, 2811, 2821, 2815, 2825, 2881, 2884, 2818, 2833,
1087  2848, 2832, 2891, 2893, 2896, 2848, 2844, 2850, 2877, 2847,
1088  2854, 2908, 2862, 2861, 2870, 2855, 2912, 2855, 2857, 2916,
1089  6120, 6120, 2865, 6120, 6120, 2858, 2867, 2923, 2928, 2918,
1090  2920, 2934, 2872, 2938, 2941, 2943, 2892, 2894, 2889, 2904,
1091  2897, 2895, 2954, 2901, 2902, 2916, 2917, 2910, 2904, 2917,
1092  2908, 2916, 2924, 2921, 2911, 2935, 2930, 2921, 2926, 2931,
1093  2974, 2976, 2978, 2923, 2926, 2930, 2937, 2942, 2930, 2931,
1094  2945, 2932, 2932, 2992, 2994, 2950, 2996, 2940, 2944, 2945,
1095 
1096  2963, 2964, 3003, 2949, 2968, 2966, 2953, 2955, 3012, 3014,
1097  2978, 2975, 2978, 2980, 2975, 2961, 3023, 2985, 3028, 2974,
1098  2988, 2980, 2992, 2977, 3034, 3036, 2986, 2982, 2985, 2992,
1099  3044, 3046, 3000, 3048, 2998, 2992, 3010, 3053, 3013, 3056,
1100  3001, 3060, 3022, 3064, 3066, 3069, 3010, 3031, 3024, 6120,
1101  3019, 3076, 3044, 6120, 3079, 3025, 6120, 3041, 3029, 3030,
1102  3030, 3053, 3050, 3054, 3041, 3043, 3058, 3055, 3060, 3099,
1103  3055, 3051, 3048, 3054, 3054, 3056, 3051, 3052, 3075, 6120,
1104  3110, 3070, 3056, 3115, 3117, 3079, 3082, 3079, 3067, 3066,
1105  3126, 3075, 3128, 3078, 3098, 3094, 3079, 6120, 3093, 3073,
1106 
1107  3137, 3086, 3098, 3091, 3089, 3089, 3089, 3113, 3122, 3111,
1108  3108, 3109, 6120, 3102, 3102, 3137, 3098, 3157, 3159, 3120,
1109  3116, 3121, 3123, 3104, 3128, 3125, 3168, 3170, 3173, 3175,
1110  3177, 3180, 3188, 3192, 3128, 3194, 3196, 3198, 3200, 3142,
1111  3203, 3144, 3206, 3187, 3200, 3215, 3168, 3165, 3168, 3219,
1112  3221, 3166, 3224, 3184, 3227, 3174, 3211, 3186, 3188, 3235,
1113  3237, 3199, 3185, 3211, 3201, 3244, 3246, 3250, 3206, 3210,
1114  3254, 3256, 3212, 3221, 3212, 3240, 3221, 3264, 3269, 6120,
1115  6120, 3271, 3273, 3204, 3275, 3279, 3281, 3235, 3233, 3284,
1116  3231, 3288, 3257, 3292, 3294, 3239, 3297, 3258, 3246, 3246,
1117 
1118  3247, 3269, 3266, 3270, 3258, 3259, 3275, 3272, 3277, 3265,
1119  3317, 3264, 3270, 3270, 3272, 3267, 3268, 3291, 3326, 3328,
1120  3288, 3331, 3276, 3334, 3336, 3298, 3301, 3298, 3287, 3287,
1121  3345, 3347, 3350, 3303, 3353, 3302, 3322, 3357, 3320, 3306,
1122  3362, 3322, 3303, 3314, 3327, 3370, 3372, 3323, 3320, 3320,
1123  3321, 3345, 3354, 3343, 3340, 3341, 3386, 3388, 3390, 3392,
1124  3333, 3342, 3377, 3396, 3398, 3359, 3401, 3406, 3358, 3366,
1125  3409, 3392, 3392, 3372, 6120, 3417, 3400, 3420, 3367, 3422,
1126  3409, 3427, 3383, 3378, 3384, 3401, 3380, 3398, 3381, 3400,
1127  3386, 3414, 3386, 6120, 3405, 3445, 3447, 3409, 3393, 3413,
1128 
1129  3406, 3415, 3412, 3399, 3414, 3402, 3458, 3461, 3463, 3419,
1130  3466, 3411, 3419, 3419, 3437, 3417, 3474, 3476, 3441, 3480,
1131  3482, 3432, 3430, 3437, 6120, 6120, 3445, 3490, 3492, 3433,
1132  3473, 6120, 6120, 6120, 3444, 3445, 3452, 3444, 3460, 3445,
1133  3446, 3455, 3449, 3451, 3507, 3488, 3458, 3490, 3493, 3513,
1134  3460, 3516, 3518, 3520, 3523, 3519, 3524, 3531, 3495, 3534,
1135  3536, 3538, 3544, 3546, 3548, 3551, 3553, 3555, 6120, 6120,
1136  3559, 3563, 3566, 3484, 3491, 3570, 3502, 3506, 3574, 3576,
1137  3578, 3512, 3532, 3530, 3582, 3527, 3566, 3548, 3589, 3531,
1138  3594, 3597, 3599, 3536, 3545, 3604, 3545, 3568, 3563, 3564,
1139 
1140  3611, 3613, 3615, 3597, 3618, 3599, 3579, 3622, 3626, 3628,
1141  3630, 3632, 3572, 3634, 3638, 3640, 3646, 3594, 3650, 3652,
1142  3591, 3598, 3615, 3599, 3618, 3600, 3619, 3604, 3632, 3604,
1143  3662, 3625, 3609, 3629, 3622, 3631, 3628, 3615, 3630, 3618,
1144  3674, 3678, 3680, 3682, 3684, 3630, 3686, 3631, 3640, 3640,
1145  3658, 3638, 3696, 3700, 3702, 3656, 3704, 3706, 3646, 3653,
1146  3660, 3710, 3712, 3716, 3720, 3672, 3663, 3701, 3723, 3728,
1147  3730, 3732, 3674, 3682, 3690, 3682, 3698, 3683, 3740, 3748,
1148  3750, 3752, 3694, 3689, 3756, 3725, 3758, 3702, 3739, 3723,
1149  3713, 3712, 3764, 3768, 3757, 3750, 3771, 3773, 3766, 6120,
1150 
1151  3719, 3716, 3722, 3742, 3733, 3737, 3735, 3739, 3735, 3742,
1152  3740, 3790, 3750, 3737, 3748, 3744, 3747, 3741, 3752, 3799,
1153  3755, 3802, 3804, 3806, 3750, 3810, 3762, 3773, 3769, 3770,
1154  3817, 3765, 3821, 3767, 3778, 3784, 6120, 3827, 3787, 3781,
1155  3776, 3804, 3784, 3777, 3778, 6120, 6120, 3794, 3799, 3798,
1156  3790, 3789, 3792, 3790, 3791, 3844, 3846, 3791, 3849, 3851,
1157  6120, 6120, 3804, 3859, 6120, 6120, 3865, 3867, 3869, 3875,
1158  3877, 3879, 3885, 3887, 3889, 3895, 3799, 3819, 3823, 3897,
1159  3899, 3902, 3904, 3829, 3887, 3831, 3837, 3841, 3869, 3869,
1160  3864, 3911, 3914, 3860, 3919, 3894, 3926, 3928, 3881, 3889,
1161 
1162  3877, 3933, 3936, 3897, 3889, 3892, 3944, 3948, 3950, 3952,
1163  3926, 3955, 3957, 3959, 3961, 3907, 3904, 3909, 3929, 3919,
1164  3923, 3921, 3925, 3920, 3927, 3975, 3977, 3930, 3924, 3935,
1165  3931, 3934, 3928, 3939, 3986, 3942, 3991, 3993, 3995, 3997,
1166  3930, 3999, 3952, 3963, 3958, 3959, 4006, 3953, 4011, 3953,
1167  3967, 3973, 4016, 4018, 4020, 4022, 4024, 4026, 3986, 3980,
1168  4032, 4034, 4038, 4042, 4044, 4048, 3975, 4008, 3991, 3989,
1169  3993, 4051, 4054, 4056, 4060, 4062, 4016, 4026, 4016, 4016,
1170  4019, 4012, 4028, 4015, 4073, 4034, 4034, 4040, 4079, 4038,
1171  4026, 4083, 4047, 4040, 4029, 4029, 4047, 4048, 4032, 4040,
1172 
1173  4051, 4043, 6120, 4044, 4058, 4099, 4101, 4045, 4103, 4105,
1174  4069, 4108, 4068, 4111, 4119, 4067, 4073, 4067, 4060, 4122,
1175  4082, 4087, 4071, 4072, 4087, 4084, 4079, 4083, 4099, 4082,
1176  6120, 4084, 4094, 4096, 6120, 4097, 4091, 4081, 4142, 4125,
1177  4145, 4144, 4144, 4151, 4153, 4152, 4154, 4161, 4157, 4158,
1178  4167, 4166, 4166, 4173, 4175, 4177, 4133, 4123, 4181, 4183,
1179  4185, 4132, 4137, 4151, 4150, 4155, 4156, 4136, 4145, 4151,
1180  4142, 4145, 4146, 4202, 4162, 4152, 4206, 4208, 4210, 4212,
1181  4172, 4160, 4160, 4218, 6120, 6120, 4160, 4180, 4168, 4226,
1182  4186, 4191, 4230, 4232, 4178, 4235, 4199, 4192, 4181, 4181,
1183 
1184  4199, 4200, 4184, 4192, 4246, 4206, 4251, 4198, 4215, 4254,
1185  4256, 4206, 4259, 4261, 4225, 4264, 4225, 4272, 4275, 4222,
1186  4228, 4227, 4217, 4279, 4239, 4244, 4227, 4284, 4288, 4290,
1187  4292, 4230, 4253, 4296, 4298, 4300, 4256, 4251, 4255, 4272,
1188  4255, 4308, 4310, 4312, 4314, 4316, 4318, 4269, 4279, 4324,
1189  4280, 4288, 4277, 4272, 4288, 4282, 4284, 4288, 6120, 4335,
1190  4337, 4283, 4290, 4300, 4301, 4308, 4289, 4304, 4296, 4330,
1191  4309, 4294, 4301, 4353, 4355, 4357, 4359, 4310, 4362, 4313,
1192  4309, 4366, 4318, 6120, 4328, 4354, 4373, 4375, 4377, 4328,
1193  6120, 4324, 4331, 4340, 4324, 6120, 4338, 4330, 4346, 4389,
1194 
1195  4337, 4341, 4393, 4395, 4345, 4346, 6120, 6120, 4399, 4405,
1196  6120, 6120, 6120, 6120, 6120, 6120, 4401, 4411, 4414, 4352,
1197  4370, 4417, 4419, 4370, 4375, 4368, 4369, 4371, 4385, 4372,
1198  4387, 4384, 4385, 4376, 4378, 4378, 4436, 4438, 4384, 4441,
1199  4386, 4406, 4395, 4390, 4398, 4400, 4449, 4451, 4453, 4456,
1200  4401, 4408, 4418, 4419, 4426, 4407, 4422, 4414, 4449, 4469,
1201  4471, 4416, 4423, 4475, 4477, 4479, 4481, 4432, 4485, 4436,
1202  4432, 4491, 4438, 4495, 4451, 4480, 4498, 4500, 4502, 4453,
1203  4505, 4507, 4453, 4461, 4470, 4455, 4515, 4472, 4464, 4521,
1204  4523, 4525, 4527, 4489, 4481, 4532, 4534, 4486, 6120, 4495,
1205 
1206  6120, 4482, 4497, 4499, 4493, 4543, 4487, 4489, 4492, 4531,
1207  4512, 4517, 6120, 6120, 4497, 4511, 4498, 4498, 4556, 4558,
1208  4504, 4517, 6120, 4518, 4507, 4507, 4565, 4568, 4570, 4528,
1209  4527, 4532, 4519, 4534, 4527, 4532, 4534, 4580, 4584, 4540,
1210  4544, 4587, 4589, 4591, 4593, 4547, 4537, 4599, 4595, 4598,
1211  4606, 4551, 4557, 4610, 4612, 4614, 4616, 4568, 4619, 4600,
1212  4566, 4566, 4585, 4574, 4589, 4631, 4634, 4583, 4636, 4638,
1213  4640, 4623, 4643, 4604, 4653, 4605, 4607, 4656, 4659, 4661,
1214  4593, 4606, 4608, 4647, 4628, 4633, 4669, 4672, 4619, 4675,
1215  4621, 4621, 4679, 4681, 4629, 4642, 4688, 4646, 4691, 4693,
1216 
1217  4639, 4639, 4697, 4699, 4701, 4660, 4707, 4709, 4659, 4669,
1218  4656, 4671, 4715, 4717, 4669, 4674, 4723, 4676, 4683, 4726,
1219  4686, 4678, 4691, 4675, 6120, 4691, 4678, 4699, 6120, 4684,
1220  4699, 4689, 4687, 4702, 4741, 6120, 4743, 6120, 4696, 6120,
1221  4746, 4748, 4750, 4703, 4701, 4703, 4721, 6120, 4715, 4717,
1222  4714, 4764, 4711, 4715, 4767, 4769, 4771, 4773, 6120, 6120,
1223  4719, 4725, 4777, 4779, 4781, 4783, 4788, 4730, 4790, 4794,
1224  4731, 4798, 4741, 4743, 4750, 4763, 4805, 4807, 4809, 4813,
1225  4751, 4815, 4817, 4820, 4759, 4770, 4824, 4826, 4777, 4830,
1226  4832, 4777, 4835, 4837, 4784, 4805, 4842, 4792, 4808, 4798,
1227 
1228  4796, 4851, 4853, 4855, 4858, 4811, 4860, 4862, 4864, 4818,
1229  4868, 4871, 4873, 4880, 4884, 4886, 4889, 4827, 4891, 4826,
1230  4831, 4859, 4894, 4896, 4856, 4858, 4856, 4852, 4853, 4848,
1231  4851, 4865, 4889, 6120, 4872, 4853, 4863, 4855, 4886, 4864,
1232  4916, 4918, 4920, 4922, 4882, 4925, 4927, 4929, 4932, 4892,
1233  4885, 4880, 4886, 6120, 4883, 4890, 4885, 4886, 4945, 4947,
1234  4949, 4951, 4953, 4899, 4956, 4960, 4964, 4968, 4905, 4970,
1235  4972, 4924, 4920, 4918, 4926, 4976, 4979, 4930, 4982, 4936,
1236  4926, 4987, 4932, 4990, 4950, 4993, 4995, 4997, 4961, 5000,
1237  5002, 4946, 4956, 4948, 4979, 5009, 5013, 4960, 5016, 5018,
1238 
1239  5020, 5022, 5024, 5026, 4986, 5029, 5032, 5036, 5040, 5042,
1240  5044, 5048, 4992, 4987, 4989, 4998, 5051, 5053, 5056, 5002,
1241  5009, 5004, 5005, 5007, 5018, 6120, 5010, 5018, 5017, 5011,
1242  5028, 5020, 5033, 5074, 5076, 6120, 5078, 5080, 6120, 5026,
1243  5027, 5056, 6120, 5041, 5030, 5031, 5088, 5090, 5092, 5094,
1244  5096, 5098, 5100, 5047, 5103, 5059, 5048, 5108, 5069, 5057,
1245  5114, 5116, 5062, 5119, 5123, 5125, 5131, 5072, 5135, 5076,
1246  5071, 5091, 5085, 5098, 5141, 5143, 5145, 5147, 5149, 5151,
1247  5153, 5155, 5083, 5101, 5130, 5159, 5163, 5165, 5167, 5117,
1248  5113, 5115, 6120, 5119, 5131, 5116, 5134, 5134, 5121, 5120,
1249 
1250  5135, 6120, 6120, 5129, 5146, 6120, 6120, 5184, 5186, 5188,
1251  5190, 5150, 5142, 5152, 5195, 5197, 5169, 5201, 5203, 5205,
1252  5207, 5210, 5212, 5218, 5222, 5224, 5156, 5175, 5178, 5170,
1253  5169, 5184, 5230, 5234, 5236, 5238, 5240, 5242, 5180, 5246,
1254  5248, 5252, 5207, 5258, 5260, 5193, 5216, 5214, 5206, 5208,
1255  5232, 5224, 5221, 5209, 5227, 5270, 5216, 5217, 5246, 5277,
1256  5226, 5280, 5282, 5284, 5286, 5288, 5290, 5292, 5253, 5240,
1257  5241, 5298, 5258, 5255, 5304, 5306, 5308, 5310, 5314, 5316,
1258  5243, 5318, 5270, 5320, 5324, 5326, 5332, 5276, 5271, 5274,
1259  6120, 6120, 5277, 6120, 5285, 5295, 5292, 5283, 5310, 5289,
1260 
1261  5286, 5344, 5346, 5292, 5349, 5351, 5353, 5355, 5300, 5358,
1262  5309, 5361, 5369, 5321, 5319, 5371, 5374, 5315, 5324, 6120,
1263  5322, 5334, 6120, 5335, 5334, 5328, 5325, 5337, 5384, 5386,
1264  5388, 5390, 5392, 5394, 5341, 5397, 5402, 5356, 5406, 5360,
1265  5357, 5354, 5364, 5374, 5368, 5362, 5358, 5370, 5365, 5418,
1266  5422, 5424, 5426, 5374, 5428, 5393, 5431, 5434, 5391, 5437,
1267  5439, 5390, 5400, 5386, 5393, 5399, 5395, 5397, 5449, 5400,
1268  5411, 5455, 5400, 5458, 5460, 5462, 5464, 5422, 5421, 5412,
1269  5413, 5418, 5420, 5416, 5430, 5429, 5420, 5478, 5480, 6120,
1270  5438, 6120, 5483, 5434, 5430, 5487, 5489, 5447, 5492, 5449,
1271 
1272  5495, 5498, 5444, 5502, 5505, 5510, 5512, 5514, 5463, 5517,
1273  5520, 5465, 5523, 5525, 5528, 5530, 5533, 5535, 5480, 5540,
1274  5482, 5543, 5545, 5547, 5493, 6120, 5550, 5552, 5554, 5558,
1275  5560, 6120, 5571, 5576, 5581, 5586, 5591, 5596, 5601, 5606,
1276  5611, 5615, 5620, 5625
1277  } ;
1278 
1280  { 0,
1281  3833, 3833, 3834, 3834, 3835, 3835, 3836, 3836, 3837, 3837,
1282  3837, 3837, 3838, 3838, 3839, 3839, 3840, 3840, 3832, 3832,
1283  3832, 3832, 21, 3832, 23, 23, 23, 23, 3832, 3832,
1284  23, 23, 3832, 3841, 3832, 3842, 3843, 3844, 3832, 3832,
1285  3832, 3832, 3832, 3832, 21, 23, 23, 23, 23, 23,
1286  29, 3832, 23, 23, 23, 23, 23, 23, 23, 23,
1287  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1288  23, 3832, 23, 23, 23, 3832, 23, 3832, 3832, 3832,
1289  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1290  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1291 
1292  3832, 23, 23, 3841, 3842, 3843, 3844, 3832, 3832, 23,
1293  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1294  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1295  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1296  23, 23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1297  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1298  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1299  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1300  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1301  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1302 
1303  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1304  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 3832,
1305  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1306  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1307  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1308  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1309  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1310  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1311  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1312  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1313 
1314  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1315  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1316  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1317  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1318  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1319  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1320  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1321  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1322  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1323  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1324 
1325  23, 3832, 3832, 23, 23, 23, 23, 23, 23, 23,
1326  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1327  23, 23, 23, 23, 23, 3832, 3832, 23, 23, 23,
1328  23, 23, 23, 23, 23, 3832, 3832, 3832, 3832, 3832,
1329  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1330  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1331  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1332  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1333  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1334  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1335 
1336  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1337  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1338  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1339  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1340  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1341  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1342  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1343  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1344  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1345  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1346 
1347  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 23,
1348  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1349  23, 3832, 3832, 23, 23, 23, 23, 23, 23, 23,
1350  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1351  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1352  23, 23, 23, 23, 23, 23, 3832, 3832, 3832, 3832,
1353  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1354  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1355  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1356  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1357 
1358  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1359  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1360  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1361  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1362  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1363  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1364  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1365  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1366  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1367  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1368 
1369  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1370  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1371  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1372  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1373  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1374  3832, 3832, 3832, 3832, 23, 23, 23, 23, 23, 23,
1375  23, 23, 23, 23, 23, 3832, 3832, 23, 23, 23,
1376  23, 23, 23, 23, 23, 23, 23, 3832, 3832, 23,
1377  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1378  23, 23, 3832, 3832, 23, 23, 23, 3832, 3832, 23,
1379 
1380  23, 23, 23, 23, 3832, 3832, 3832, 3832, 3832, 3832,
1381  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1382  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1383  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1384  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1385  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1386  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1387  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1388  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1389  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1390 
1391  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1392  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1393  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1394  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1395  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1396  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1397  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1398  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1399  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 23,
1400  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1401 
1402  23, 23, 23, 23, 23, 23, 23, 23, 3832, 3832,
1403  23, 23, 23, 23, 23, 3832, 3832, 23, 23, 23,
1404  23, 23, 23, 23, 23, 23, 3832, 3832, 23, 23,
1405  3832, 3832, 23, 3832, 3832, 23, 23, 23, 23, 3832,
1406  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1407  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1408  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1409  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1410  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1411  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1412 
1413  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1414  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1415  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1416  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1417  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1418  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1419  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1420  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1421  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1422  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1423 
1424  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1425  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1426  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1427  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1428  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1429  23, 23, 23, 23, 23, 23, 3832, 3832, 23, 23,
1430  3832, 3832, 23, 23, 23, 23, 23, 23, 23, 3832,
1431  3832, 23, 23, 23, 23, 3832, 3832, 3832, 3832, 3832,
1432  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1433  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1434 
1435  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1436  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1437  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1438  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1439  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1440  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1441  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1442  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1443  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1444  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1445 
1446  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1447  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1448  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1449  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1450  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1451  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1452  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1453  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1454  3832, 3832, 23, 23, 23, 23, 23, 23, 23, 3832,
1455  3832, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1456 
1457  3832, 3832, 23, 23, 23, 23, 23, 23, 23, 23,
1458  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1459  23, 23, 3832, 3832, 23, 23, 23, 3832, 3832, 23,
1460  23, 23, 23, 23, 23, 3832, 3832, 23, 23, 3832,
1461  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1462  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1463  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1464  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1465  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1466  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1467 
1468  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1469  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1470  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1471  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1472  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1473  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1474  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1475  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1476  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1477  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1478 
1479  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1480  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1481  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1482  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1483  3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 23, 23,
1484  23, 23, 3832, 3832, 3832, 3832, 23, 23, 23, 3832,
1485  3832, 23, 23, 23, 3832, 3832, 23, 23, 3832, 3832,
1486  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1487  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1488  23, 23, 23, 23, 3832, 3832, 23, 3832, 3832, 23,
1489 
1490  23, 3832, 3832, 23, 23, 23, 3832, 3832, 23, 23,
1491  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1492  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1493  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1494  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1495  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1496  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1497  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1498  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1499  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1500 
1501  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1502  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1503  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1504  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1505  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1506  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1507  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1508  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1509  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1510  3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 23, 23,
1511 
1512  23, 23, 23, 3832, 3832, 23, 3832, 3832, 23, 23,
1513  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1514  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1515  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1516  3832, 3832, 23, 3832, 3832, 23, 23, 23, 23, 3832,
1517  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1518  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1519  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1520  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1521  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1522 
1523  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1524  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1525  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1526  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1527  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1528  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1529  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1530  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1531  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1532  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1533 
1534  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1535  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1536  3832, 3832, 23, 23, 23, 23, 23, 23, 23, 23,
1537  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1538  23, 23, 23, 3832, 3832, 23, 23, 23, 23, 23,
1539  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1540  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1541  23, 23, 23, 23, 23, 23, 23, 23, 23, 3832,
1542  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1543  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1544 
1545  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1546  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1547  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1548  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1549  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1550  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1551  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1552  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1553  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1554  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1555 
1556  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1557  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1558  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1559  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1560  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 23,
1561  23, 23, 23, 23, 23, 3832, 3832, 23, 23, 23,
1562  23, 23, 23, 23, 23, 23, 23, 23, 3832, 3832,
1563  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1564  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1565  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1566 
1567  23, 23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1568  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1569  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1570  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1571  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1572  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1573  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1574  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1575  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1576  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1577 
1578  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1579  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1580  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1581  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1582  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1583  3832, 3832, 3832, 23, 23, 23, 23, 23, 23, 23,
1584  3832, 3832, 23, 23, 3832, 3832, 23, 23, 23, 23,
1585  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1586  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1587  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1588 
1589  23, 23, 23, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1590  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1591  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1592  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1593  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1594  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1595  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1596  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1597  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1598  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1599 
1600  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1601  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1602  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1603  3832, 3832, 3832, 3832, 3832, 3832, 23, 23, 23, 23,
1604  23, 3832, 3832, 23, 23, 3832, 3832, 23, 3832, 3832,
1605  23, 3832, 3832, 23, 23, 23, 23, 23, 23, 23,
1606  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1607  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1608  23, 23, 23, 23, 3832, 3832, 3832, 3832, 3832, 3832,
1609  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1610 
1611  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1612  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1613  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1614  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1615  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1616  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1617  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1618  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1619  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1620  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1621 
1622  3832, 3832, 23, 23, 23, 23, 3832, 3832, 23, 23,
1623  3832, 3832, 3832, 3832, 3832, 3832, 23, 23, 23, 23,
1624  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1625  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1626  23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1627  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1628  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1629  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1630  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1631  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1632 
1633  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1634  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1635  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1636  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1637  3832, 23, 23, 23, 23, 23, 23, 23, 3832, 3832,
1638  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1639  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1640  23, 23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1641  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1642  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1643 
1644  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1645  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1646  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1647  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1648  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1649  3832, 3832, 3832, 3832, 23, 23, 23, 23, 3832, 3832,
1650  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1651  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1652  23, 23, 23, 23, 23, 23, 3832, 3832, 3832, 3832,
1653  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1654 
1655  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1656  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1657  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1658  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1659  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1660  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 23,
1661  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1662  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1663  23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1664  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1665 
1666  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1667  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1668  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1669  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1670  3832, 3832, 3832, 3832, 3832, 3832, 23, 23, 23, 23,
1671  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1672  23, 23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1673  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1674  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1675  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1676 
1677  3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 23, 23,
1678  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1679  23, 23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1680  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1681  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1682  3832, 3832, 3832, 3832, 3832, 23, 23, 23, 23, 23,
1683  23, 23, 23, 23, 23, 3832, 3832, 3832, 3832, 3832,
1684  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1685  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1686  3832, 3832, 3832, 3832, 3832, 3832, 3832, 23, 23, 23,
1687 
1688  23, 23, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1689  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1690  3832, 3832, 3832, 3832, 23, 23, 23, 23, 3832, 3832,
1691  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1692  3832, 3832, 3832, 3832, 3832, 23, 23, 23, 23, 3832,
1693  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1694  3832, 3832, 3832, 3832, 23, 23, 23, 23, 3832, 3832,
1695  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1696  23, 23, 23, 23, 3832, 3832, 3832, 3832, 3832, 3832,
1697  3832, 3832, 23, 23, 23, 23, 3832, 3832, 3832, 3832,
1698 
1699  23, 23, 23, 23, 23, 23, 3832, 3832, 3832, 3832,
1700  3832, 3832, 23, 23, 23, 23, 23, 3832, 3832, 3832,
1701  3832, 23, 23, 23, 3832, 3832, 23, 3832, 3832, 3832,
1702  3832, 0, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
1703  3832, 3832, 3832, 3832
1704  } ;
1705 
1707  { 0,
1708  20, 21, 21, 20, 22, 43, 24, 43, 25, 26,
1709  27, 28, 28, 28, 29, 40, 30, 20, 40, 3832,
1710  44, 41, 44, 3832, 41, 31, 73, 73, 857, 48,
1711  32, 50, 50, 50, 77, 77, 3832, 3832, 572, 73,
1712  73, 858, 73, 73, 122, 53, 118, 112, 573, 74,
1713  74, 74, 74, 74, 74, 48, 119, 50, 50, 50,
1714  75, 113, 110, 75, 123, 33, 20, 21, 21, 20,
1715  22, 53, 24, 111, 25, 26, 27, 28, 28, 28,
1716  29, 75, 30, 20, 75, 124, 172, 77, 77, 137,
1717  173, 31, 77, 77, 120, 48, 32, 50, 50, 50,
1718 
1719  48, 138, 50, 50, 50, 125, 128, 121, 75, 1052,
1720  234, 129, 130, 75, 169, 141, 141, 166, 131, 142,
1721  142, 142, 188, 251, 251, 170, 235, 167, 132, 75,
1722  189, 33, 45, 45, 75, 168, 46, 252, 46, 47,
1723  48, 49, 50, 50, 50, 51, 46, 52, 1053, 46,
1724  46, 46, 46, 46, 46, 46, 53, 46, 46, 46,
1725  46, 54, 46, 46, 46, 46, 46, 46, 46, 46,
1726  46, 55, 56, 57, 58, 59, 60, 46, 61, 46,
1727  46, 62, 63, 64, 65, 46, 46, 66, 67, 68,
1728  69, 70, 71, 46, 46, 46, 46, 46, 133, 142,
1729 
1730  142, 142, 268, 46, 46, 46, 46, 46, 46, 3832,
1731  190, 3832, 134, 269, 191, 135, 180, 174, 181, 175,
1732  46, 192, 136, 176, 193, 46, 182, 255, 186, 177,
1733  194, 183, 184, 187, 204, 46, 46, 46, 46, 46,
1734  46, 1054, 46, 256, 205, 46, 46, 46, 46, 73,
1735  73, 46, 46, 46, 46, 46, 46, 78, 200, 74,
1736  74, 74, 216, 195, 79, 230, 230, 217, 285, 201,
1737  75, 80, 202, 286, 213, 203, 81, 196, 224, 231,
1738  197, 198, 199, 214, 1055, 247, 82, 225, 262, 262,
1739  215, 75, 248, 83, 84, 85, 86, 87, 88, 89,
1740 
1741  237, 90, 91, 263, 92, 93, 94, 95, 96, 238,
1742  97, 98, 99, 100, 101, 144, 258, 73, 73, 271,
1743  303, 265, 259, 272, 1056, 145, 232, 142, 142, 142,
1744  304, 266, 146, 147, 148, 149, 150, 151, 152, 267,
1745  153, 154, 1057, 155, 156, 157, 158, 159, 287, 160,
1746  161, 162, 163, 164, 206, 273, 288, 274, 207, 328,
1747  785, 275, 329, 279, 208, 280, 209, 276, 312, 210,
1748  211, 289, 299, 281, 212, 290, 294, 313, 282, 283,
1749  365, 366, 291, 300, 314, 292, 301, 1058, 305, 302,
1750  295, 293, 306, 296, 297, 298, 315, 786, 307, 320,
1751 
1752  308, 316, 330, 309, 310, 321, 331, 325, 311, 326,
1753  339, 339, 341, 322, 327, 349, 353, 342, 351, 351,
1754  354, 379, 374, 395, 343, 340, 350, 344, 345, 375,
1755  389, 376, 377, 352, 381, 378, 390, 382, 380, 73,
1756  73, 230, 230, 401, 401, 396, 402, 406, 403, 404,
1757  404, 251, 251, 407, 514, 231, 425, 425, 441, 426,
1758  515, 427, 569, 405, 442, 252, 262, 262, 436, 436,
1759  437, 437, 443, 446, 449, 447, 570, 450, 451, 472,
1760  448, 263, 452, 453, 453, 438, 462, 462, 464, 1059,
1761  473, 474, 474, 465, 1060, 476, 481, 481, 454, 477,
1762 
1763  466, 463, 504, 467, 468, 499, 475, 490, 491, 526,
1764  502, 482, 500, 503, 501, 506, 516, 516, 507, 505,
1765  522, 529, 529, 1061, 523, 455, 537, 537, 539, 539,
1766  818, 517, 819, 527, 528, 1062, 530, 339, 339, 545,
1767  545, 538, 930, 540, 351, 351, 556, 556, 558, 558,
1768  561, 561, 340, 582, 583, 1063, 587, 587, 606, 352,
1769  596, 596, 609, 559, 1067, 562, 607, 717, 610, 563,
1770  564, 588, 613, 613, 1068, 597, 619, 619, 565, 931,
1771  608, 718, 560, 541, 401, 401, 614, 402, 1069, 403,
1772  620, 404, 404, 624, 624, 626, 626, 633, 633, 635,
1773 
1774  635, 425, 425, 664, 426, 405, 427, 665, 566, 627,
1775  963, 634, 964, 636, 648, 648, 652, 652, 436, 436,
1776  437, 437, 657, 657, 658, 658, 668, 668, 649, 1070,
1777  653, 673, 673, 453, 453, 438, 679, 679, 1030, 659,
1778  1031, 669, 682, 682, 684, 684, 674, 1071, 454, 462,
1779  462, 690, 690, 698, 698, 474, 474, 683, 670, 685,
1780  703, 703, 716, 716, 463, 831, 705, 705, 699, 832,
1781  475, 481, 481, 708, 708, 720, 720, 700, 732, 733,
1782  1072, 706, 671, 672, 763, 763, 482, 978, 709, 1041,
1783  721, 979, 710, 711, 737, 737, 740, 740, 768, 686,
1784 
1785  707, 712, 1015, 748, 748, 758, 758, 722, 1073, 738,
1786  1042, 741, 516, 516, 769, 529, 529, 723, 749, 1016,
1787  759, 776, 776, 537, 537, 783, 783, 517, 1074, 760,
1788  530, 713, 742, 539, 539, 784, 784, 761, 538, 545,
1789  545, 795, 795, 556, 556, 558, 558, 1075, 540, 1077,
1790  796, 762, 802, 802, 561, 561, 797, 804, 804, 910,
1791  559, 809, 809, 820, 820, 826, 826, 587, 587, 562,
1792  810, 835, 835, 839, 839, 911, 811, 1078, 821, 1038,
1793  827, 1079, 588, 596, 596, 844, 844, 1080, 840, 613,
1794  613, 860, 860, 619, 619, 1039, 865, 865, 597, 866,
1795 
1796  1083, 867, 1084, 614, 624, 624, 1085, 620, 626, 626,
1797  870, 870, 633, 633, 876, 876, 635, 635, 877, 877,
1798  1086, 878, 627, 879, 884, 884, 634, 648, 648, 1087,
1799  636, 892, 892, 1088, 893, 1089, 894, 1090, 885, 652,
1800  652, 649, 897, 897, 1091, 898, 1092, 899, 900, 900,
1801  657, 657, 1093, 653, 658, 658, 905, 905, 668, 668,
1802  915, 915, 901, 673, 673, 919, 919, 679, 679, 659,
1803  682, 682, 1094, 669, 926, 926, 684, 684, 674, 927,
1804  927, 1095, 902, 928, 928, 683, 690, 690, 940, 940,
1805  1096, 685, 698, 698, 942, 942, 703, 703, 929, 705,
1806 
1807  705, 947, 947, 941, 708, 708, 1097, 699, 949, 949,
1808  954, 954, 716, 716, 706, 720, 720, 960, 960, 709,
1809  965, 965, 970, 970, 1098, 955, 973, 973, 737, 737,
1810  721, 982, 982, 740, 740, 966, 1099, 971, 984, 984,
1811  1100, 974, 1101, 738, 987, 987, 748, 748, 741, 992,
1812  992, 997, 997, 972, 758, 758, 1002, 1002, 1102, 988,
1813  1103, 749, 763, 763, 776, 776, 998, 783, 783, 759,
1814  784, 784, 795, 795, 1104, 1036, 1036, 802, 802, 804,
1815  804, 796, 1047, 1047, 809, 809, 1109, 797, 1037, 1050,
1816  1050, 820, 820, 810, 826, 826, 1110, 1048, 1111, 811,
1817 
1818  1064, 1064, 1051, 1065, 1065, 1112, 821, 835, 835, 827,
1819  839, 839, 1076, 1076, 844, 844, 1081, 1081, 1066, 860,
1820  860, 865, 865, 1105, 866, 840, 867, 870, 870, 876,
1821  876, 1082, 877, 877, 1106, 878, 1113, 879, 1107, 1114,
1822  1108, 884, 884, 1115, 1115, 1124, 1116, 1125, 1117, 1118,
1823  1118, 1120, 1120, 1122, 1122, 885, 1126, 892, 892, 1127,
1824  893, 1128, 894, 1119, 1129, 1121, 1130, 1123, 897, 897,
1825  1131, 898, 1132, 899, 900, 900, 1133, 1133, 1136, 1134,
1826  1137, 1135, 1138, 1138, 905, 905, 1140, 1141, 901, 1142,
1827  1143, 1144, 1145, 1146, 1146, 1151, 1139, 1148, 1148, 915,
1828 
1829  915, 1152, 1153, 1155, 919, 919, 1156, 1157, 1147, 1158,
1830  1159, 1160, 1149, 1161, 926, 926, 927, 927, 1163, 1154,
1831  928, 928, 1162, 1162, 1164, 1165, 1166, 1167, 1167, 1170,
1832  1171, 1173, 1172, 1174, 1175, 929, 940, 940, 1176, 1176,
1833  942, 942, 1168, 1177, 1177, 1179, 1181, 1182, 947, 947,
1834  1184, 941, 1185, 1150, 949, 949, 1186, 1187, 1178, 1188,
1835  1188, 1180, 954, 954, 1190, 1190, 1191, 1192, 1183, 1169,
1836  1193, 1194, 960, 960, 1189, 1195, 1196, 955, 1197, 1198,
1837  965, 965, 1199, 1199, 1200, 1200, 1203, 1204, 970, 970,
1838  1205, 1205, 1206, 973, 973, 966, 1207, 1207, 1210, 1201,
1839 
1840  1208, 1208, 1211, 971, 1212, 1213, 1214, 1215, 974, 982,
1841  982, 1216, 984, 984, 1202, 1209, 1217, 1218, 987, 987,
1842  1219, 1219, 1220, 1221, 1221, 1223, 992, 992, 1224, 1225,
1843  1226, 1226, 1228, 988, 997, 997, 1229, 1229, 1222, 1230,
1844  1231, 1232, 1232, 1002, 1002, 1227, 1235, 1236, 1237, 998,
1845  1238, 1239, 1240, 1241, 1242, 1243, 1233, 1244, 1245, 1246,
1846  1247, 1248, 1249, 1250, 1251, 1252, 1252, 1254, 1255, 1256,
1847  1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1267,
1848  1253, 1266, 1266, 1036, 1036, 1268, 1269, 1270, 1271, 1286,
1849  1287, 1289, 1290, 1293, 1288, 1296, 1037, 1234, 1272, 1273,
1850 
1851  1274, 1047, 1047, 1275, 1291, 1291, 1276, 1277, 1278, 1279,
1852  1280, 1281, 1282, 1283, 1284, 1285, 1048, 1292, 1292, 1050,
1853  1050, 1294, 1294, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
1854  1305, 1304, 1051, 1306, 1064, 1064, 1295, 1065, 1065, 1307,
1855  1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1316, 1317,
1856  1317, 1315, 1066, 1076, 1076, 1320, 1320, 1323, 1318, 1324,
1857  1081, 1081, 1325, 1325, 1319, 1326, 1327, 1328, 1329, 1330,
1858  1321, 1331, 1332, 1333, 1334, 1082, 1335, 1336, 1336, 1338,
1859  1339, 1340, 1341, 1342, 1343, 1344, 1344, 1322, 1346, 1347,
1860  1348, 1337, 1349, 1350, 1351, 1352, 1353, 1353, 1355, 1345,
1861 
1862  1356, 1115, 1115, 1357, 1116, 1358, 1117, 1118, 1118, 1364,
1863  1354, 1359, 1359, 1120, 1120, 1360, 1360, 1365, 1361, 1366,
1864  1362, 1119, 1122, 1122, 1363, 1363, 1367, 1121, 1368, 1368,
1865  1133, 1133, 1370, 1134, 1371, 1135, 1123, 1372, 1373, 1373,
1866  1138, 1138, 1369, 1375, 1375, 1378, 1376, 1379, 1377, 1380,
1867  1381, 1382, 1374, 1383, 1139, 1146, 1146, 1384, 1384, 1148,
1868  1148, 1385, 1385, 1386, 1386, 1388, 1389, 1390, 1391, 1392,
1869  1147, 1393, 1394, 1395, 1149, 1396, 1396, 1398, 1387, 1399,
1870  1162, 1162, 1400, 1401, 1402, 1403, 1167, 1167, 1404, 1404,
1871  1397, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1411, 1176,
1872 
1873  1176, 1168, 1177, 1177, 1413, 1413, 1414, 1415, 1416, 1417,
1874  1434, 1435, 1412, 1437, 1438, 1436, 1442, 1178, 1418, 1418,
1875  1188, 1188, 1439, 1439, 1190, 1190, 1440, 1440, 1443, 1444,
1876  1444, 1446, 1447, 1419, 1448, 1189, 1449, 1420, 1421, 1422,
1877  1451, 1441, 1423, 1454, 1445, 1424, 1425, 1426, 1427, 1428,
1878  1429, 1430, 1431, 1432, 1433, 1199, 1199, 1200, 1200, 1450,
1879  1450, 1452, 1455, 1453, 1205, 1205, 1207, 1207, 1208, 1208,
1880  1456, 1456, 1201, 1457, 1458, 1459, 1460, 1461, 1462, 1465,
1881  1463, 1466, 1466, 1209, 1464, 1219, 1219, 1468, 1468, 1221,
1882  1221, 1471, 1471, 1472, 1473, 1477, 1467, 1474, 1474, 1226,
1883 
1884  1226, 1478, 1469, 1479, 1222, 1476, 1476, 1229, 1229, 1232,
1885  1232, 1485, 1475, 1486, 1227, 1480, 1480, 1481, 1481, 1470,
1886  1483, 1483, 1487, 1487, 1233, 1489, 1490, 1491, 1492, 1493,
1887  1494, 1495, 1482, 1496, 1497, 1484, 1498, 1488, 1252, 1252,
1888  1499, 1499, 1500, 1501, 1502, 1505, 1503, 1506, 1507, 1508,
1889  1509, 1512, 1513, 1253, 1504, 1514, 1515, 1266, 1266, 1516,
1890  1510, 1517, 1517, 1520, 1521, 1522, 1511, 1523, 1526, 1527,
1891  1518, 1524, 1528, 1531, 1529, 1532, 1519, 1525, 1530, 1533,
1892  1535, 1536, 1538, 1542, 1543, 1534, 1539, 1544, 1545, 1546,
1893  1547, 1548, 1540, 1291, 1291, 1541, 1292, 1292, 1550, 1537,
1894 
1895  1294, 1294, 1549, 1549, 1551, 1552, 1553, 1554, 1555, 1556,
1896  1557, 1558, 1559, 1560, 1561, 1295, 1307, 1307, 1562, 1562,
1897  1564, 1565, 1566, 1567, 1569, 1570, 1571, 1317, 1317, 1568,
1898  1572, 1573, 1573, 1563, 1320, 1320, 1318, 1575, 1575, 1576,
1899  1577, 1578, 1319, 1579, 1574, 1325, 1325, 1580, 1581, 1321,
1900  1582, 1583, 1584, 1585, 1586, 1587, 1587, 1336, 1336, 1589,
1901  1589, 1594, 1590, 1597, 1591, 1592, 1592, 1595, 1595, 1588,
1902  1598, 1337, 1599, 1344, 1344, 1600, 1600, 1603, 1601, 1593,
1903  1602, 1596, 1604, 1604, 1606, 1607, 1608, 1345, 1609, 1627,
1904  1628, 1353, 1353, 1359, 1359, 1629, 1605, 1610, 1611, 1632,
1905 
1906  1612, 1363, 1363, 1613, 1614, 1354, 1633, 1615, 1616, 1617,
1907  1618, 1619, 1620, 1622, 1622, 1621, 1623, 1634, 1624, 1625,
1908  1625, 1360, 1360, 1638, 1361, 1642, 1362, 1630, 1630, 1368,
1909  1368, 1635, 1635, 1626, 1636, 1643, 1637, 1373, 1373, 1639,
1910  1639, 1631, 1640, 1369, 1641, 1375, 1375, 1646, 1376, 1651,
1911  1377, 1374, 1644, 1644, 1647, 1647, 1649, 1649, 1652, 1384,
1912  1384, 1385, 1385, 1386, 1386, 1653, 1653, 1645, 1654, 1648,
1913  1655, 1650, 1656, 1657, 1658, 1658, 1660, 1661, 1387, 1662,
1914  1396, 1396, 1663, 1663, 1664, 1665, 1666, 1672, 1667, 1659,
1915  1669, 1669, 1404, 1404, 1680, 1397, 1668, 1673, 1673, 1681,
1916 
1917  1682, 1675, 1676, 1677, 1683, 1670, 1411, 1411, 1684, 1684,
1918  1689, 1671, 1674, 1678, 1413, 1413, 1685, 1685, 1690, 1679,
1919  1692, 1412, 1687, 1687, 1418, 1418, 1691, 1691, 1693, 1696,
1920  1697, 1686, 1694, 1698, 1701, 1702, 1699, 1688, 1695, 1419,
1921  1700, 1703, 1705, 1706, 1708, 1712, 1713, 1704, 1709, 1714,
1922  1714, 1716, 1717, 1718, 1710, 1719, 1721, 1711, 1439, 1439,
1923  1722, 1707, 1440, 1440, 1715, 1720, 1720, 1444, 1444, 1723,
1924  1723, 1724, 1725, 1726, 1727, 1450, 1450, 1441, 1728, 1729,
1925  1730, 1731, 1445, 1732, 1456, 1456, 1733, 1733, 1736, 1736,
1926  1738, 1739, 1740, 1745, 1741, 1741, 1746, 1747, 1466, 1466,
1927 
1928  1750, 1734, 1751, 1737, 1748, 1748, 1468, 1468, 1752, 1742,
1929  1749, 1749, 1754, 1467, 1471, 1471, 1474, 1474, 1753, 1753,
1930  1757, 1469, 1760, 1743, 1476, 1476, 1755, 1755, 1735, 1744,
1931  1761, 1475, 1480, 1480, 1481, 1481, 1758, 1758, 1483, 1483,
1932  1763, 1756, 1759, 1759, 1487, 1487, 1762, 1762, 1764, 1482,
1933  1765, 1766, 1767, 1484, 1768, 1769, 1770, 1771, 1772, 1488,
1934  1499, 1499, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780,
1935  1781, 1782, 1783, 1784, 1785, 1786, 1788, 1787, 1789, 1517,
1936  1517, 1790, 1791, 1791, 1793, 1794, 1795, 1796, 1518, 1797,
1937  1798, 1799, 1800, 1801, 1519, 1792, 1802, 1803, 1804, 1805,
1938 
1939  1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815,
1940  1816, 1817, 1818, 1819, 1820, 1549, 1549, 1821, 1822, 1823,
1941  1824, 1825, 1826, 1827, 1828, 1829, 1562, 1562, 1830, 1830,
1942  1831, 1832, 1834, 1833, 1835, 1836, 1837, 1838, 1839, 1840,
1943  1840, 1563, 1573, 1573, 1841, 1575, 1575, 1842, 1843, 1844,
1944  1845, 1846, 1847, 1848, 1849, 1574, 1850, 1851, 1587, 1587,
1945  1852, 1852, 1855, 1853, 1856, 1854, 1589, 1589, 1858, 1590,
1946  1862, 1591, 1588, 1592, 1592, 1857, 1857, 1595, 1595, 1859,
1947  1859, 1863, 1860, 1864, 1861, 1600, 1600, 1593, 1601, 1865,
1948  1602, 1596, 1866, 1867, 1604, 1604, 1868, 1868, 1875, 1869,
1949 
1950  1871, 1870, 1873, 1876, 1878, 1879, 1883, 1880, 1605, 1881,
1951  1872, 1884, 1874, 1877, 1885, 1886, 1887, 1891, 1889, 1882,
1952  1892, 1894, 1622, 1622, 1895, 1623, 1896, 1624, 1900, 1625,
1953  1625, 1630, 1630, 1904, 1888, 1890, 1897, 1897, 1905, 1898,
1954  1906, 1899, 1893, 1626, 1907, 1631, 1901, 1901, 1908, 1902,
1955  1911, 1903, 1635, 1635, 1912, 1636, 1914, 1637, 1909, 1909,
1956  1639, 1639, 1917, 1640, 1918, 1641, 1644, 1644, 1913, 1913,
1957  1647, 1647, 1910, 1915, 1915, 1649, 1649, 1916, 1916, 1653,
1958  1653, 1645, 1919, 1920, 1921, 1648, 1922, 1658, 1658, 1924,
1959  1650, 1923, 1923, 1925, 1926, 1663, 1663, 1927, 1927, 1929,
1960 
1961  1930, 1931, 1659, 1932, 1669, 1669, 1933, 1933, 1934, 1935,
1962  1673, 1673, 1928, 1936, 1936, 1937, 1938, 1939, 1940, 1670,
1963  1941, 1942, 1943, 1946, 1944, 1674, 1945, 1684, 1684, 1685,
1964  1685, 1947, 1947, 1687, 1687, 1948, 1948, 1949, 1950, 1950,
1965  1691, 1691, 1952, 1953, 1686, 1954, 1955, 1956, 1688, 1957,
1966  1958, 1959, 1960, 1951, 1961, 1962, 1963, 1964, 1965, 1966,
1967  1967, 1968, 1969, 1970, 1971, 1972, 1973, 1714, 1714, 1974,
1968  1974, 1975, 1976, 1977, 1978, 1720, 1720, 1979, 1980, 1980,
1969  1723, 1723, 1715, 1982, 1983, 1984, 1985, 1986, 1987, 1988,
1970  1989, 1989, 1994, 1981, 1991, 1991, 1733, 1733, 1993, 1993,
1971 
1972  1736, 1736, 1995, 1995, 1996, 1990, 1997, 1999, 1998, 1992,
1973  2001, 1734, 1741, 1741, 2002, 1737, 2000, 2000, 2003, 2004,
1974  2005, 1748, 1748, 1749, 1749, 2006, 2007, 1742, 2008, 1753,
1975  1753, 2009, 1755, 1755, 2010, 2010, 2011, 2011, 1758, 1758,
1976  1759, 1759, 2013, 2014, 2014, 1762, 1762, 1756, 2017, 2018,
1977  2019, 2012, 2020, 2021, 2022, 2023, 2024, 2025, 2015, 2026,
1978  2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036,
1979  2037, 2038, 2039, 2040, 2041, 2042, 2043, 2043, 1791, 1791,
1980  2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053,
1981  2054, 1792, 2055, 2056, 2057, 2058, 2060, 2061, 2059, 2016,
1982 
1983  2062, 2063, 2064, 2065, 2066, 2068, 2069, 2070, 2071, 2072,
1984  2073, 2074, 2075, 2076, 2077, 2067, 2078, 2079, 2080, 2081,
1985  2082, 2083, 1830, 1830, 2084, 2085, 2086, 2087, 2088, 2089,
1986  2090, 2091, 1840, 1840, 2092, 2093, 2094, 2095, 2096, 2097,
1987  2098, 2101, 2102, 2099, 2103, 1852, 1852, 2104, 1853, 2105,
1988  1854, 2106, 2100, 1857, 1857, 1859, 1859, 2107, 1860, 2108,
1989  1861, 2109, 2110, 2111, 2112, 1868, 1868, 2113, 1869, 2114,
1990  1870, 2115, 2116, 2117, 2117, 2119, 2120, 2121, 2122, 2126,
1991  2123, 2124, 2124, 2127, 2128, 2129, 2130, 2118, 2131, 2132,
1992  2133, 2134, 2135, 2136, 2137, 2125, 2138, 2139, 2141, 1897,
1993 
1994  1897, 2142, 1898, 2140, 1899, 2143, 1901, 1901, 2144, 1902,
1995  2145, 1903, 2146, 2147, 2148, 1909, 1909, 2149, 2149, 2152,
1996  2150, 2153, 2151, 1913, 1913, 1915, 1915, 1916, 1916, 1910,
1997  2154, 2155, 2155, 2157, 2158, 2159, 1923, 1923, 2160, 2161,
1998  2162, 1927, 1927, 2163, 2163, 2164, 2156, 2165, 2166, 2167,
1999  1933, 1933, 2168, 2169, 1936, 1936, 1928, 2170, 2171, 2172,
2000  2173, 2174, 2175, 2176, 2177, 2178, 2179, 1947, 1947, 1948,
2001  1948, 2180, 1950, 1950, 2181, 2181, 2182, 2182, 2185, 2186,
2002  2187, 2188, 2189, 2190, 2191, 2192, 2193, 1951, 2194, 2194,
2003  2197, 2183, 2198, 2200, 2201, 2199, 2202, 2203, 2204, 2205,
2004 
2005  2206, 2208, 2212, 2195, 2209, 2209, 1974, 1974, 2213, 2214,
2006  2215, 2207, 2216, 1980, 1980, 2217, 2217, 2218, 2219, 2210,
2007  2220, 2221, 2222, 2223, 2224, 1989, 1989, 2227, 1981, 2228,
2008  2196, 2229, 2184, 2225, 2225, 2230, 1991, 1991, 2226, 2226,
2009  1990, 1993, 1993, 1995, 1995, 2231, 2231, 2000, 2000, 2233,
2010  2211, 1992, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241,
2011  2232, 2010, 2010, 2011, 2011, 2242, 2242, 2243, 2014, 2014,
2012  2244, 2244, 2245, 2245, 2247, 2248, 2249, 2250, 2012, 2251,
2013  2252, 2253, 2254, 2015, 2255, 2256, 2257, 2246, 2258, 2259,
2014  2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269,
2015 
2016  2270, 2043, 2043, 2271, 2272, 2273, 2274, 2275, 2276, 2277,
2017  2278, 2279, 2280, 2281, 2282, 2283, 2284, 2284, 2286, 2287,
2018  2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297,
2019  2298, 2285, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306,
2020  2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316,
2021  2317, 2318, 2318, 2320, 2321, 2322, 2323, 2324, 2325, 2326,
2022  2327, 2327, 2329, 2329, 2331, 2331, 2319, 2333, 2333, 2335,
2023  2336, 2336, 2338, 2339, 2328, 2340, 2330, 2341, 2332, 2342,
2024  2346, 2334, 2117, 2117, 2337, 2343, 2343, 2347, 2344, 2348,
2025  2345, 2349, 2350, 2350, 2124, 2124, 2118, 2353, 2353, 2354,
2026 
2027  2355, 2356, 2357, 2358, 2359, 2363, 2351, 2364, 2125, 2360,
2028  2360, 2365, 2366, 2367, 2367, 2369, 2370, 2371, 2371, 2375,
2029  2376, 2377, 2380, 2361, 2378, 2378, 2381, 2368, 2384, 2149,
2030  2149, 2372, 2150, 2388, 2151, 2382, 2382, 2389, 2379, 2385,
2031  2385, 2373, 2155, 2155, 2387, 2387, 2390, 2391, 2352, 2392,
2032  2383, 2362, 2393, 2394, 2386, 2163, 2163, 2156, 2395, 2396,
2033  2397, 2398, 2399, 2374, 2400, 2401, 2402, 2403, 2404, 2405,
2034  2406, 2407, 2408, 2409, 2410, 2181, 2181, 2182, 2182, 2411,
2035  2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420,
2036  2421, 2423, 2183, 2194, 2194, 2422, 2422, 2424, 2424, 2426,
2037 
2038  2427, 2428, 2429, 2430, 2431, 2431, 2433, 2434, 2195, 2435,
2039  2436, 2437, 2425, 2209, 2209, 2438, 2438, 2439, 2440, 2432,
2040  2441, 2442, 2443, 2444, 2217, 2217, 2445, 2448, 2210, 2446,
2041  2446, 2449, 2450, 2451, 2452, 2225, 2225, 2226, 2226, 2453,
2042  2454, 2455, 2456, 2458, 2447, 2231, 2231, 2457, 2457, 2459,
2043  2459, 2461, 2462, 2463, 2464, 2464, 2466, 2467, 2467, 2469,
2044  2232, 2242, 2242, 2470, 2460, 2244, 2244, 2245, 2245, 2465,
2045  2471, 2471, 2468, 2472, 2473, 2474, 2475, 2476, 2476, 2479,
2046  2480, 2480, 2246, 2483, 2484, 2485, 2477, 2486, 2487, 2481,
2047  2488, 2489, 2478, 2490, 2491, 2482, 2492, 2493, 2494, 2495,
2048 
2049  2496, 2496, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505,
2050  2506, 2507, 2507, 2509, 2510, 2497, 2284, 2284, 2511, 2511,
2051  2512, 2513, 2514, 2515, 2516, 2519, 2508, 2517, 2517, 2520,
2052  2520, 2285, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2528,
2053  2530, 2531, 2518, 2532, 2521, 2533, 2534, 2535, 2536, 2537,
2054  2538, 2539, 2540, 2529, 2541, 2542, 2543, 2544, 2318, 2318,
2055  2545, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2327,
2056  2327, 2553, 2553, 2319, 2329, 2329, 2554, 2554, 2331, 2331,
2057  2559, 2555, 2555, 2328, 2556, 2565, 2557, 2568, 2330, 2333,
2058  2333, 2569, 2332, 2558, 2558, 2336, 2336, 2560, 2560, 2561,
2059 
2060  2561, 2563, 2563, 2334, 2566, 2566, 2570, 2343, 2343, 2337,
2061  2344, 2573, 2345, 2562, 2574, 2564, 2571, 2571, 2567, 2575,
2062  2350, 2350, 2576, 2576, 2577, 2353, 2353, 2578, 2579, 2579,
2063  2572, 2581, 2582, 2583, 2351, 2584, 2360, 2360, 2585, 2585,
2064  2586, 2587, 2580, 2588, 2590, 2591, 2591, 2367, 2367, 2594,
2065  2361, 2593, 2593, 2595, 2597, 2371, 2371, 2596, 2596, 2592,
2066  2598, 2368, 2599, 2600, 2601, 2378, 2378, 2604, 2589, 2372,
2067  2602, 2602, 2382, 2382, 2603, 2603, 2385, 2385, 2606, 2379,
2068  2605, 2605, 2387, 2387, 2607, 2608, 2608, 2383, 2610, 2611,
2069  2611, 2386, 2613, 2614, 2614, 2616, 2616, 2618, 2619, 2619,
2070 
2071  2609, 2621, 2622, 2623, 2612, 2624, 2625, 2626, 2615, 2627,
2072  2617, 2628, 2629, 2620, 2630, 2631, 2632, 2633, 2411, 2411,
2073  2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2641, 2643,
2074  2643, 2645, 2422, 2422, 2646, 2424, 2424, 2647, 2647, 2648,
2075  2649, 2650, 2642, 2651, 2644, 2652, 2431, 2431, 2653, 2653,
2076  2425, 2654, 2654, 2656, 2657, 2657, 2659, 2660, 2438, 2438,
2077  2661, 2432, 2662, 2663, 2663, 2665, 2655, 2666, 2667, 2658,
2078  2668, 2446, 2446, 2669, 2669, 2670, 2671, 2672, 2664, 2673,
2079  2674, 2675, 2676, 2677, 2678, 2682, 2447, 2457, 2457, 2679,
2080  2679, 2459, 2459, 2681, 2681, 2683, 2684, 2464, 2464, 2685,
2081 
2082  2685, 2686, 2467, 2467, 2680, 2688, 2460, 2687, 2687, 2689,
2083  2471, 2471, 2465, 2690, 2691, 2692, 2693, 2468, 2476, 2476,
2084  2696, 2694, 2694, 2480, 2480, 2697, 2700, 2477, 2698, 2698,
2085  2701, 2702, 2481, 2478, 2695, 2703, 2704, 2705, 2482, 2706,
2086  2707, 2699, 2708, 2709, 2710, 2711, 2496, 2496, 2712, 2712,
2087  2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2507,
2088  2507, 2497, 2722, 2722, 2723, 2723, 2725, 2511, 2511, 2726,
2089  2727, 2728, 2729, 2730, 2508, 2517, 2517, 2731, 2731, 2724,
2090  2732, 2520, 2520, 2733, 2733, 2734, 2735, 2736, 2737, 2739,
2091  2518, 2528, 2528, 2738, 2738, 2740, 2521, 2741, 2742, 2743,
2092 
2093  2744, 2745, 2746, 2747, 2748, 2749, 2529, 2750, 2545, 2545,
2094  2751, 2752, 2753, 2754, 2756, 2756, 2758, 2759, 2759, 2553,
2095  2553, 2554, 2554, 2761, 2555, 2555, 2755, 2556, 2757, 2557,
2096  2762, 2760, 2558, 2558, 2763, 2560, 2560, 2561, 2561, 2764,
2097  2764, 2776, 2765, 2777, 2766, 2563, 2563, 2767, 2767, 2768,
2098  2768, 2562, 2566, 2566, 2770, 2770, 2771, 2771, 2778, 2564,
2099  2571, 2571, 2779, 2769, 2773, 2773, 2567, 2774, 2774, 2783,
2100  2772, 2576, 2576, 2784, 2572, 2579, 2579, 2780, 2780, 2781,
2101  2781, 2775, 2786, 2585, 2585, 2787, 2788, 2791, 2794, 2580,
2102  2792, 2792, 2796, 2782, 2785, 2591, 2591, 2789, 2795, 2795,
2103 
2104  2593, 2593, 2797, 2790, 2793, 2596, 2596, 2798, 2799, 2592,
2105  2800, 2801, 2802, 2802, 2602, 2602, 2603, 2603, 2804, 2605,
2106  2605, 2805, 2806, 2608, 2608, 2811, 2803, 2807, 2807, 2808,
2107  2808, 2611, 2611, 2810, 2810, 2614, 2614, 2814, 2609, 2812,
2108  2812, 2616, 2616, 2816, 2809, 2817, 2612, 2813, 2813, 2818,
2109  2615, 2619, 2619, 2815, 2815, 2819, 2617, 2820, 2821, 2822,
2110  2823, 2824, 2825, 2826, 2826, 2828, 2620, 2829, 2830, 2831,
2111  2832, 2833, 2834, 2835, 2836, 2641, 2641, 2841, 2827, 2837,
2112  2837, 2643, 2643, 2838, 2838, 2839, 2839, 2647, 2647, 2842,
2113  2642, 2843, 2844, 2845, 2846, 2848, 2644, 2653, 2653, 2850,
2114 
2115  2840, 2654, 2654, 2847, 2847, 2657, 2657, 2849, 2849, 2851,
2116  2852, 2853, 2853, 2663, 2663, 2858, 2655, 2855, 2855, 2859,
2117  2658, 2856, 2856, 2860, 2669, 2669, 2854, 2867, 2664, 2861,
2118  2861, 2863, 2863, 2865, 2865, 2868, 2857, 2869, 2870, 2871,
2119  2872, 2679, 2679, 2877, 2862, 2878, 2864, 2879, 2866, 2873,
2120  2873, 2681, 2681, 2874, 2874, 2880, 2680, 2685, 2685, 2687,
2121  2687, 2881, 2882, 2883, 2884, 2885, 2885, 2886, 2875, 2694,
2122  2694, 2887, 2889, 2889, 2698, 2698, 2890, 2891, 2892, 2888,
2123  2893, 2894, 2695, 2895, 2896, 2897, 2898, 2699, 2899, 2900,
2124  2901, 2712, 2712, 2902, 2903, 2904, 2905, 2906, 2907, 2908,
2125 
2126  2909, 2909, 2911, 2722, 2722, 2723, 2723, 2912, 2912, 2876,
2127  2913, 2914, 2914, 2916, 2917, 2910, 2918, 2919, 2731, 2731,
2128  2724, 2920, 2733, 2733, 2921, 2922, 2915, 2923, 2738, 2738,
2129  2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933,
2130  2934, 2935, 2936, 2937, 2938, 2756, 2756, 2939, 2939, 2940,
2131  2759, 2759, 2941, 2941, 2944, 2942, 2956, 2943, 2957, 2757,
2132  2764, 2764, 2958, 2765, 2760, 2766, 2767, 2767, 2768, 2768,
2133  2945, 2945, 2962, 2946, 2967, 2947, 2770, 2770, 2771, 2771,
2134  2948, 2948, 2769, 2949, 2968, 2950, 2773, 2773, 2774, 2774,
2135  2951, 2951, 2772, 2952, 2969, 2953, 2954, 2954, 2780, 2780,
2136 
2137  2781, 2781, 2775, 2959, 2959, 2960, 2960, 2963, 2972, 2970,
2138  2955, 2973, 2792, 2792, 2782, 2974, 2974, 2975, 2964, 2961,
2139  2795, 2795, 2965, 2971, 2966, 2976, 2793, 2977, 2977, 2979,
2140  2979, 2981, 2982, 2983, 2802, 2802, 2987, 2984, 2984, 2988,
2141  2985, 2978, 2986, 2980, 2989, 2807, 2807, 2991, 2803, 2808,
2142  2808, 2990, 2990, 2810, 2810, 2992, 2812, 2812, 2813, 2813,
2143  2993, 2993, 2815, 2815, 2809, 2995, 2996, 2997, 2998, 2999,
2144  3000, 3001, 3002, 3003, 3004, 2994, 2826, 2826, 3005, 3005,
2145  3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3013, 3015,
2146  3017, 2827, 2837, 2837, 2838, 2838, 2839, 2839, 3016, 3016,
2147 
2148  3018, 3018, 3014, 3020, 3021, 3022, 3023, 2847, 2847, 3024,
2149  3025, 2840, 2849, 2849, 3026, 3019, 3027, 2853, 2853, 3028,
2150  3028, 2855, 2855, 2856, 2856, 3029, 3029, 3030, 3030, 3032,
2151  3033, 3037, 2854, 2861, 2861, 3034, 3034, 3038, 2857, 2863,
2152  2863, 3039, 3031, 3035, 3035, 2865, 2865, 3040, 2862, 3036,
2153  3036, 3041, 3042, 3042, 2864, 2873, 2873, 2874, 2874, 3047,
2154  2866, 3044, 3044, 3045, 3045, 3048, 3049, 3043, 3050, 3051,
2155  3052, 3053, 2875, 3054, 2885, 2885, 3055, 3056, 3046, 3057,
2156  2889, 2889, 3058, 3059, 3060, 3060, 3062, 3063, 3064, 3065,
2157  3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3078, 3061,
2158 
2159  3074, 3074, 3076, 3076, 2909, 2909, 3079, 3079, 3080, 2912,
2160  2912, 3081, 2914, 2914, 3083, 3075, 3084, 3077, 3085, 2910,
2161  3082, 3082, 3086, 3087, 3087, 3089, 3090, 2915, 3091, 3092,
2162  3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3088, 3101,
2163  3102, 3103, 3104, 2939, 2939, 3105, 2941, 2941, 3107, 2942,
2164  3108, 2943, 3109, 3109, 2945, 2945, 3111, 2946, 3106, 2947,
2165  3112, 3113, 2948, 2948, 3114, 2949, 3110, 2950, 2951, 2951,
2166  3115, 2952, 3116, 2953, 2954, 2954, 3117, 3117, 3118, 3118,
2167  3120, 3121, 2959, 2959, 2960, 2960, 3122, 3122, 2955, 3123,
2168  3124, 3125, 3119, 3126, 3127, 3128, 3129, 3130, 2961, 3131,
2169 
2170  3132, 3133, 3134, 2974, 2974, 3135, 3136, 2977, 2977, 3137,
2171  3137, 2979, 2979, 3138, 3138, 3139, 3140, 3141, 3142, 2984,
2172  2984, 2978, 2985, 3143, 2986, 2980, 3144, 2990, 2990, 3145,
2173  3146, 2993, 2993, 3147, 3147, 3148, 3149, 3149, 3151, 3152,
2174  3153, 3154, 3155, 3156, 3157, 3158, 2994, 3005, 3005, 3159,
2175  3162, 3150, 3160, 3160, 3163, 3164, 3164, 3166, 3166, 3168,
2176  3013, 3013, 3169, 3169, 3170, 3016, 3016, 3161, 3171, 3173,
2177  3165, 3174, 3167, 3018, 3018, 3014, 3172, 3172, 3175, 3176,
2178  3177, 3177, 3179, 3180, 3181, 3028, 3028, 3183, 3019, 3029,
2179  3029, 3030, 3030, 3182, 3182, 3178, 3184, 3034, 3034, 3035,
2180 
2181  3035, 3036, 3036, 3185, 3186, 3187, 3031, 3188, 3189, 3042,
2182  3042, 3190, 3190, 3044, 3044, 3045, 3045, 3191, 3191, 3192,
2183  3192, 3194, 3195, 3198, 3043, 3196, 3196, 3199, 3200, 3201,
2184  3046, 3202, 3203, 3204, 3193, 3205, 3060, 3060, 3206, 3206,
2185  3197, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215,
2186  3216, 3061, 3217, 3218, 3074, 3074, 3219, 3219, 3076, 3076,
2187  3220, 3220, 3221, 3079, 3079, 3222, 3223, 3082, 3082, 3075,
2188  3224, 3225, 3226, 3077, 3087, 3087, 3227, 3227, 3228, 3228,
2189  3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3240, 3088,
2190  3238, 3238, 3241, 3229, 3242, 3242, 3244, 3244, 3246, 3247,
2191 
2192  3109, 3109, 3117, 3117, 3252, 3239, 3248, 3248, 3243, 3249,
2193  3245, 3250, 3118, 3118, 3110, 3251, 3251, 3253, 3122, 3122,
2194  3254, 3254, 3256, 3257, 3258, 3259, 3119, 3260, 3261, 3262,
2195  3263, 3264, 3265, 3266, 3255, 3267, 3268, 3137, 3137, 3138,
2196  3138, 3269, 3270, 3270, 3272, 3273, 3274, 3275, 3276, 3277,
2197  3147, 3147, 3278, 3278, 3149, 3149, 3271, 3280, 3280, 3281,
2198  3282, 3283, 3284, 3285, 3286, 3287, 3288, 3279, 3289, 3150,
2199  3160, 3160, 3290, 3290, 3291, 3292, 3164, 3164, 3293, 3293,
2200  3166, 3166, 3294, 3294, 3295, 3161, 3169, 3169, 3296, 3297,
2201  3298, 3165, 3172, 3172, 3301, 3167, 3299, 3299, 3302, 3177,
2202 
2203  3177, 3303, 3303, 3304, 3304, 3306, 3307, 3307, 3182, 3182,
2204  3309, 3300, 3310, 3311, 3178, 3312, 3313, 3313, 3305, 3315,
2205  3316, 3308, 3190, 3190, 3191, 3191, 3192, 3192, 3317, 3317,
2206  3318, 3314, 3319, 3196, 3196, 3320, 3320, 3321, 3322, 3323,
2207  3324, 3193, 3325, 3326, 3206, 3206, 3327, 3328, 3197, 3329,
2208  3330, 3332, 3333, 3334, 3335, 3336, 3337, 3219, 3219, 3220,
2209  3220, 3338, 3339, 3340, 3341, 3342, 3227, 3227, 3331, 3228,
2210  3228, 3343, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350,
2211  3351, 3238, 3238, 3353, 3229, 3352, 3352, 3354, 3242, 3242,
2212  3355, 3355, 3244, 3244, 3356, 3356, 3239, 3357, 3358, 3359,
2213 
2214  3248, 3248, 3243, 3249, 3360, 3250, 3245, 3251, 3251, 3361,
2215  3362, 3254, 3254, 3363, 3363, 3364, 3364, 3366, 3366, 3368,
2216  3369, 3369, 3371, 3372, 3373, 3255, 3374, 3375, 3376, 3365,
2217  3381, 3367, 3377, 3377, 3370, 3379, 3379, 3382, 3382, 3270,
2218  3270, 3384, 3384, 3385, 3387, 3387, 3378, 3389, 3392, 3380,
2219  3393, 3383, 3395, 3271, 3390, 3390, 3386, 3278, 3278, 3388,
2220  3394, 3394, 3280, 3280, 3396, 3397, 3398, 3400, 3401, 3391,
2221  3402, 3402, 3279, 3404, 3404, 3406, 3290, 3290, 3407, 3408,
2222  3293, 3293, 3294, 3294, 3399, 3403, 3409, 3410, 3405, 3411,
2223  3411, 3413, 3299, 3299, 3414, 3414, 3415, 3416, 3303, 3303,
2224 
2225  3304, 3304, 3417, 3417, 3412, 3418, 3420, 3300, 3307, 3307,
2226  3419, 3419, 3421, 3422, 3423, 3305, 3313, 3313, 3424, 3424,
2227  3425, 3426, 3427, 3308, 3317, 3317, 3428, 3320, 3320, 3429,
2228  3430, 3314, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438,
2229  3439, 3440, 3441, 3441, 3443, 3443, 3445, 3446, 3446, 3448,
2230  3448, 3343, 3343, 3450, 3451, 3452, 3453, 3442, 3454, 3444,
2231  3455, 3456, 3447, 3457, 3449, 3352, 3352, 3458, 3355, 3355,
2232  3356, 3356, 3459, 3459, 3461, 3461, 3463, 3464, 3363, 3363,
2233  3364, 3364, 3465, 3465, 3366, 3366, 3460, 3467, 3462, 3466,
2234  3466, 3369, 3369, 3469, 3365, 3468, 3468, 3472, 3367, 3470,
2235 
2236  3470, 3473, 3474, 3475, 3478, 3370, 3377, 3377, 3476, 3476,
2237  3379, 3379, 3480, 3471, 3477, 3477, 3382, 3382, 3479, 3479,
2238  3378, 3384, 3384, 3481, 3380, 3387, 3387, 3482, 3482, 3483,
2239  3383, 3390, 3390, 3484, 3484, 3485, 3486, 3486, 3394, 3394,
2240  3388, 3488, 3489, 3490, 3490, 3492, 3391, 3493, 3494, 3495,
2241  3498, 3487, 3402, 3402, 3496, 3496, 3404, 3404, 3491, 3497,
2242  3497, 3499, 3499, 3501, 3501, 3503, 3503, 3403, 3505, 3411,
2243  3411, 3405, 3506, 3506, 3507, 3507, 3500, 3513, 3502, 3514,
2244  3504, 3414, 3414, 3515, 3412, 3509, 3509, 3511, 3511, 3508,
2245  3417, 3417, 3419, 3419, 3516, 3517, 3517, 3424, 3424, 3519,
2246 
2247  3510, 3520, 3512, 3521, 3522, 3523, 3524, 3525, 3526, 3527,
2248  3518, 3528, 3529, 3530, 3531, 3532, 3533, 3441, 3441, 3534,
2249  3534, 3443, 3443, 3535, 3535, 3536, 3446, 3446, 3537, 3537,
2250  3448, 3448, 3442, 3538, 3538, 3539, 3444, 3540, 3541, 3542,
2251  3543, 3447, 3544, 3545, 3546, 3449, 3459, 3459, 3547, 3547,
2252  3461, 3461, 3548, 3548, 3549, 3549, 3551, 3465, 3465, 3554,
2253  3460, 3466, 3466, 3556, 3462, 3552, 3552, 3557, 3550, 3468,
2254  3468, 3470, 3470, 3555, 3555, 3558, 3559, 3476, 3476, 3553,
2255  3477, 3477, 3560, 3479, 3479, 3471, 3561, 3562, 3482, 3482,
2256  3563, 3484, 3484, 3564, 3486, 3486, 3565, 3565, 3566, 3566,
2257 
2258  3568, 3490, 3490, 3569, 3569, 3570, 3571, 3572, 3573, 3487,
2259  3496, 3496, 3574, 3567, 3497, 3497, 3491, 3499, 3499, 3575,
2260  3575, 3501, 3501, 3576, 3576, 3503, 3503, 3577, 3577, 3578,
2261  3506, 3506, 3500, 3507, 3507, 3582, 3502, 3579, 3579, 3583,
2262  3504, 3509, 3509, 3580, 3580, 3511, 3511, 3584, 3508, 3581,
2263  3581, 3585, 3517, 3517, 3586, 3586, 3510, 3587, 3587, 3589,
2264  3512, 3590, 3591, 3592, 3593, 3594, 3595, 3518, 3596, 3597,
2265  3598, 3599, 3588, 3600, 3601, 3534, 3534, 3535, 3535, 3537,
2266  3537, 3538, 3538, 3602, 3603, 3604, 3605, 3606, 3607, 3547,
2267  3547, 3548, 3548, 3549, 3549, 3608, 3608, 3609, 3609, 3552,
2268 
2269  3552, 3611, 3611, 3612, 3555, 3555, 3613, 3550, 3614, 3615,
2270  3615, 3610, 3617, 3553, 3618, 3619, 3619, 3621, 3621, 3623,
2271  3624, 3624, 3627, 3616, 3565, 3565, 3566, 3566, 3628, 3620,
2272  3629, 3622, 3626, 3626, 3630, 3625, 3569, 3569, 3631, 3632,
2273  3637, 3567, 3575, 3575, 3576, 3576, 3577, 3577, 3633, 3633,
2274  3579, 3579, 3580, 3580, 3581, 3581, 3635, 3635, 3638, 3639,
2275  3586, 3586, 3643, 3634, 3587, 3587, 3640, 3640, 3641, 3641,
2276  3644, 3636, 3645, 3646, 3647, 3648, 3649, 3650, 3651, 3588,
2277  3652, 3653, 3654, 3642, 3655, 3608, 3608, 3609, 3609, 3656,
2278  3656, 3611, 3611, 3657, 3658, 3659, 3615, 3615, 3660, 3660,
2279 
2280  3661, 3610, 3662, 3662, 3619, 3619, 3664, 3664, 3621, 3621,
2281  3616, 3665, 3665, 3666, 3666, 3669, 3663, 3670, 3620, 3624,
2282  3624, 3671, 3622, 3668, 3668, 3626, 3626, 3672, 3667, 3673,
2283  3674, 3633, 3633, 3681, 3625, 3675, 3675, 3635, 3635, 3676,
2284  3676, 3677, 3677, 3679, 3679, 3683, 3634, 3640, 3640, 3641,
2285  3641, 3688, 3636, 3682, 3682, 3689, 3678, 3690, 3680, 3684,
2286  3684, 3686, 3686, 3691, 3642, 3692, 3693, 3694, 3695, 3696,
2287  3697, 3656, 3656, 3698, 3685, 3699, 3687, 3700, 3660, 3660,
2288  3701, 3662, 3662, 3702, 3702, 3664, 3664, 3665, 3665, 3666,
2289  3666, 3703, 3703, 3668, 3668, 3663, 3704, 3705, 3706, 3707,
2290 
2291  3707, 3710, 3711, 3714, 3667, 3675, 3675, 3676, 3676, 3677,
2292  3677, 3712, 3712, 3715, 3708, 3679, 3679, 3713, 3713, 3682,
2293  3682, 3684, 3684, 3718, 3678, 3716, 3716, 3686, 3686, 3719,
2294  3680, 3720, 3709, 3717, 3717, 3721, 3685, 3722, 3723, 3724,
2295  3725, 3726, 3687, 3727, 3728, 3702, 3702, 3703, 3703, 3729,
2296  3730, 3730, 3732, 3732, 3707, 3707, 3734, 3734, 3735, 3736,
2297  3736, 3738, 3712, 3712, 3739, 3731, 3740, 3733, 3741, 3708,
2298  3713, 3713, 3716, 3716, 3737, 3717, 3717, 3742, 3743, 3744,
2299  3745, 3746, 3747, 3748, 3749, 3750, 3750, 3730, 3730, 3752,
2300  3752, 3732, 3732, 3753, 3753, 3734, 3734, 3754, 3736, 3736,
2301 
2302  3751, 3756, 3731, 3755, 3755, 3759, 3733, 3757, 3757, 3760,
2303  3761, 3762, 3763, 3737, 3764, 3765, 3766, 3767, 3768, 3750,
2304  3750, 3770, 3758, 3769, 3769, 3752, 3752, 3753, 3753, 3755,
2305  3755, 3771, 3757, 3757, 3751, 3772, 3772, 3773, 3774, 3774,
2306  3776, 3776, 3778, 3779, 3780, 3781, 3782, 3758, 3783, 3784,
2307  3769, 3769, 3785, 3775, 3786, 3777, 3772, 3772, 3787, 3774,
2308  3774, 3788, 3788, 3776, 3776, 3789, 3789, 3790, 3791, 3792,
2309  3793, 3794, 3795, 3796, 3775, 3797, 3798, 3799, 3777, 3788,
2310  3788, 3789, 3789, 3800, 3801, 3801, 3803, 3804, 3805, 3805,
2311  3807, 3807, 3809, 3810, 3810, 3812, 3801, 3801, 3802, 3813,
2312 
2313  3813, 3814, 3806, 3815, 3815, 3808, 3805, 3805, 3811, 3819,
2314  3802, 3817, 3817, 3807, 3807, 3818, 3818, 3816, 3810, 3810,
2315  3806, 3820, 3820, 3821, 3813, 3813, 3822, 3822, 3808, 3815,
2316  3815, 3824, 3824, 3811, 3817, 3817, 3818, 3818, 3825, 3826,
2317  3823, 3820, 3820, 3816, 3822, 3822, 3827, 3827, 3824, 3824,
2318  3828, 3827, 3827, 3829, 3829, 3829, 3829, 1049, 3823, 3831,
2319  3831, 3831, 3831, 1046, 1045, 1044, 1043, 1040, 3830, 1035,
2320  3830, 23, 23, 23, 23, 23, 34, 34, 34, 34,
2321  34, 36, 36, 36, 36, 36, 37, 37, 37, 37,
2322  37, 35, 35, 35, 35, 35, 38, 38, 38, 38,
2323 
2324  38, 39, 39, 39, 39, 39, 42, 42, 42, 42,
2325  42, 104, 104, 104, 104, 105, 1034, 105, 105, 105,
2326  106, 106, 1033, 106, 106, 107, 107, 107, 1032, 107,
2327  1029, 1028, 1027, 1026, 1025, 1024, 1023, 1022, 1021, 1020,
2328  1019, 1018, 1017, 1014, 1013, 1012, 1011, 1010, 1009, 1008,
2329  1007, 1006, 1005, 1004, 1003, 1001, 1000, 999, 996, 995,
2330  994, 993, 991, 990, 989, 986, 985, 983, 981, 980,
2331  977, 976, 975, 969, 968, 967, 962, 961, 959, 958,
2332  957, 956, 953, 952, 951, 950, 948, 946, 945, 944,
2333  943, 939, 938, 937, 936, 935, 934, 933, 932, 925,
2334 
2335  924, 923, 922, 921, 920, 918, 917, 916, 914, 913,
2336  912, 909, 908, 907, 906, 904, 903, 896, 895, 891,
2337  890, 889, 888, 887, 886, 883, 882, 881, 880, 875,
2338  874, 873, 872, 871, 869, 868, 864, 863, 862, 861,
2339  859, 856, 855, 854, 853, 852, 851, 850, 849, 848,
2340  847, 846, 845, 843, 842, 841, 838, 837, 836, 834,
2341  833, 830, 829, 828, 825, 824, 823, 822, 817, 816,
2342  815, 814, 813, 812, 808, 807, 806, 805, 803, 801,
2343  800, 799, 798, 794, 793, 792, 791, 790, 789, 788,
2344  787, 782, 781, 780, 779, 778, 777, 775, 774, 773,
2345 
2346  772, 771, 770, 767, 766, 765, 764, 757, 756, 755,
2347  754, 753, 752, 751, 750, 747, 746, 745, 744, 743,
2348  739, 736, 735, 734, 731, 730, 729, 728, 727, 726,
2349  725, 724, 719, 715, 714, 704, 702, 701, 697, 696,
2350  695, 694, 693, 692, 691, 689, 688, 687, 681, 680,
2351  678, 677, 676, 675, 667, 666, 663, 662, 661, 660,
2352  656, 655, 654, 651, 650, 647, 646, 645, 644, 643,
2353  642, 641, 640, 639, 638, 637, 632, 631, 630, 629,
2354  628, 625, 623, 622, 621, 618, 617, 616, 615, 612,
2355  611, 605, 604, 603, 602, 601, 600, 599, 598, 595,
2356 
2357  594, 593, 592, 591, 590, 589, 586, 585, 584, 581,
2358  580, 579, 578, 577, 576, 575, 574, 571, 568, 567,
2359  557, 555, 554, 553, 552, 551, 550, 549, 548, 547,
2360  546, 544, 543, 542, 536, 535, 534, 533, 532, 531,
2361  525, 524, 521, 520, 519, 518, 513, 512, 511, 510,
2362  509, 508, 498, 497, 496, 495, 494, 493, 492, 489,
2363  488, 487, 486, 485, 484, 483, 480, 479, 478, 471,
2364  470, 469, 461, 460, 459, 458, 457, 456, 445, 444,
2365  440, 439, 435, 434, 433, 432, 431, 430, 429, 428,
2366  424, 423, 422, 421, 420, 419, 418, 417, 416, 415,
2367 
2368  414, 413, 412, 411, 410, 409, 408, 400, 399, 398,
2369  397, 394, 393, 392, 391, 388, 387, 386, 385, 384,
2370  383, 373, 372, 371, 370, 369, 368, 367, 364, 363,
2371  362, 361, 360, 359, 358, 357, 356, 355, 348, 347,
2372  346, 338, 337, 336, 335, 334, 333, 332, 324, 323,
2373  319, 318, 317, 284, 278, 277, 270, 264, 261, 260,
2374  257, 254, 253, 250, 249, 246, 245, 244, 243, 242,
2375  241, 240, 239, 236, 233, 229, 228, 227, 226, 223,
2376  222, 221, 220, 219, 219, 218, 185, 179, 178, 171,
2377  165, 143, 140, 139, 127, 126, 117, 116, 115, 114,
2378 
2379  103, 102, 76, 109, 108, 103, 102, 76, 72, 72,
2380  3832, 35, 35, 35, 35, 35, 35, 35, 35, 19,
2381  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
2382  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
2383  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
2384  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
2385  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
2386  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
2387  3832, 3832, 3832, 3832, 3832, 3832
2388  } ;
2389 
2391  { 0,
2392  1, 1, 1, 1, 1, 17, 1, 18, 1, 1,
2393  1, 1, 1, 1, 1, 15, 1, 1, 16, 0,
2394  17, 15, 18, 51, 16, 1, 73, 73, 611, 25,
2395  1, 25, 25, 25, 77, 77, 0, 51, 360, 26,
2396  26, 611, 48, 48, 63, 25, 61, 56, 360, 26,
2397  26, 26, 48, 48, 48, 47, 61, 47, 47, 47,
2398  26, 56, 55, 48, 63, 1, 2, 2, 2, 2,
2399  2, 47, 2, 55, 2, 2, 2, 2, 2, 2,
2400  2, 26, 2, 2, 48, 64, 86, 28, 28, 69,
2401  86, 2, 50, 50, 62, 28, 2, 28, 28, 28,
2402 
2403  50, 69, 50, 50, 50, 64, 67, 62, 28, 812,
2404  120, 67, 67, 50, 84, 75, 75, 83, 67, 75,
2405  75, 75, 93, 134, 134, 84, 120, 83, 67, 28,
2406  93, 2, 21, 21, 50, 83, 21, 134, 21, 21,
2407  21, 21, 21, 21, 21, 21, 21, 21, 813, 21,
2408  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
2409  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
2410  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
2411  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
2412  21, 21, 21, 21, 21, 21, 23, 23, 68, 141,
2413 
2414  141, 141, 147, 23, 23, 23, 23, 23, 23, 23,
2415  94, 23, 68, 147, 94, 68, 90, 87, 90, 87,
2416  23, 94, 68, 87, 94, 23, 90, 137, 92, 87,
2417  94, 90, 90, 92, 97, 23, 23, 23, 23, 23,
2418  23, 814, 23, 137, 97, 23, 23, 23, 23, 74,
2419  74, 23, 23, 23, 23, 23, 23, 29, 96, 74,
2420  74, 74, 100, 95, 29, 118, 118, 100, 155, 96,
2421  74, 29, 96, 155, 99, 96, 29, 95, 113, 118,
2422  95, 95, 95, 99, 815, 131, 29, 113, 144, 144,
2423  99, 74, 131, 29, 29, 29, 29, 29, 29, 29,
2424 
2425  122, 29, 29, 144, 29, 29, 29, 29, 29, 122,
2426  29, 29, 29, 29, 29, 79, 139, 142, 142, 149,
2427  160, 146, 139, 149, 816, 79, 118, 142, 142, 142,
2428  160, 146, 79, 79, 79, 79, 79, 79, 79, 146,
2429  79, 79, 817, 79, 79, 79, 79, 79, 156, 79,
2430  79, 79, 79, 79, 98, 150, 156, 150, 98, 172,
2431  542, 150, 172, 153, 98, 153, 98, 150, 162, 98,
2432  98, 157, 159, 153, 98, 157, 158, 162, 153, 153,
2433  200, 200, 157, 159, 162, 157, 159, 818, 161, 159,
2434  158, 157, 161, 158, 158, 158, 163, 542, 161, 168,
2435 
2436  161, 163, 173, 161, 161, 168, 173, 171, 161, 171,
2437  181, 181, 182, 168, 171, 186, 188, 182, 187, 187,
2438  188, 210, 208, 225, 182, 181, 186, 182, 182, 208,
2439  218, 208, 209, 187, 211, 209, 218, 211, 210, 219,
2440  219, 230, 230, 231, 231, 225, 231, 233, 231, 232,
2441  232, 251, 251, 233, 317, 230, 252, 252, 267, 252,
2442  317, 252, 358, 232, 267, 251, 262, 262, 263, 263,
2443  264, 264, 267, 270, 271, 270, 358, 271, 272, 285,
2444  270, 262, 272, 273, 273, 264, 280, 280, 281, 819,
2445  285, 286, 286, 281, 822, 287, 291, 291, 273, 287,
2446 
2447  281, 280, 309, 281, 281, 307, 286, 299, 299, 326,
2448  308, 291, 307, 308, 307, 310, 318, 318, 310, 309,
2449  323, 327, 327, 823, 323, 273, 334, 334, 335, 335,
2450  574, 318, 574, 326, 326, 824, 327, 339, 339, 340,
2451  340, 334, 687, 335, 351, 351, 352, 352, 354, 354,
2452  355, 355, 339, 369, 369, 825, 373, 373, 390, 351,
2453  381, 381, 391, 354, 829, 355, 390, 483, 391, 355,
2454  355, 373, 394, 394, 830, 381, 399, 399, 355, 687,
2455  390, 483, 354, 335, 401, 401, 394, 401, 831, 401,
2456  399, 404, 404, 405, 405, 407, 407, 413, 413, 414,
2457 
2458  414, 425, 425, 444, 425, 404, 425, 444, 355, 407,
2459  724, 413, 724, 414, 429, 429, 432, 432, 436, 436,
2460  437, 437, 438, 438, 439, 439, 447, 447, 429, 832,
2461  432, 448, 448, 453, 453, 437, 454, 454, 791, 439,
2462  791, 447, 457, 457, 458, 458, 448, 833, 453, 462,
2463  462, 463, 463, 471, 471, 474, 474, 457, 447, 458,
2464  475, 475, 482, 482, 462, 584, 477, 477, 471, 584,
2465  474, 481, 481, 478, 478, 485, 485, 471, 494, 494,
2466  834, 477, 447, 447, 517, 517, 481, 734, 478, 801,
2467  485, 734, 478, 478, 498, 498, 500, 500, 522, 458,
2468 
2469  477, 478, 774, 506, 506, 515, 515, 485, 836, 498,
2470  801, 500, 516, 516, 522, 529, 529, 485, 506, 774,
2471  515, 530, 530, 537, 537, 538, 538, 516, 837, 515,
2472  529, 478, 500, 539, 539, 540, 540, 515, 537, 545,
2473  545, 552, 552, 556, 556, 558, 558, 838, 539, 841,
2474  552, 515, 559, 559, 561, 561, 552, 562, 562, 664,
2475  558, 567, 567, 575, 575, 580, 580, 587, 587, 561,
2476  567, 588, 588, 592, 592, 664, 567, 843, 575, 799,
2477  580, 845, 587, 596, 596, 597, 597, 846, 592, 613,
2478  613, 614, 614, 619, 619, 799, 620, 620, 596, 620,
2479 
2480  848, 620, 849, 613, 624, 624, 850, 619, 626, 626,
2481  627, 627, 633, 633, 634, 634, 635, 635, 636, 636,
2482  851, 636, 626, 636, 641, 641, 633, 648, 648, 852,
2483  635, 649, 649, 853, 649, 854, 649, 855, 641, 652,
2484  652, 648, 653, 653, 856, 653, 857, 653, 654, 654,
2485  657, 657, 858, 652, 658, 658, 659, 659, 668, 668,
2486  669, 669, 654, 673, 673, 674, 674, 679, 679, 658,
2487  682, 682, 859, 668, 683, 683, 684, 684, 673, 685,
2488  685, 861, 654, 686, 686, 682, 690, 690, 697, 697,
2489  862, 684, 698, 698, 699, 699, 703, 703, 686, 705,
2490 
2491  705, 706, 706, 697, 708, 708, 863, 698, 709, 709,
2492  714, 714, 716, 716, 705, 720, 720, 721, 721, 708,
2493  725, 725, 729, 729, 864, 714, 730, 730, 737, 737,
2494  720, 738, 738, 740, 740, 725, 868, 729, 741, 741,
2495  869, 730, 871, 737, 744, 744, 748, 748, 740, 749,
2496  749, 754, 754, 729, 758, 758, 759, 759, 872, 744,
2497  873, 748, 763, 763, 776, 776, 754, 783, 783, 758,
2498  784, 784, 795, 795, 874, 797, 797, 802, 802, 804,
2499  804, 795, 808, 808, 809, 809, 878, 795, 797, 811,
2500  811, 820, 820, 809, 826, 826, 879, 808, 880, 809,
2501 
2502  827, 827, 811, 828, 828, 881, 820, 835, 835, 826,
2503  839, 839, 840, 840, 844, 844, 847, 847, 828, 860,
2504  860, 865, 865, 875, 865, 839, 865, 870, 870, 876,
2505  876, 847, 877, 877, 875, 877, 882, 877, 875, 883,
2506  875, 884, 884, 885, 885, 889, 885, 890, 885, 886,
2507  886, 887, 887, 888, 888, 884, 891, 892, 892, 893,
2508  892, 894, 892, 886, 895, 887, 896, 888, 897, 897,
2509  898, 897, 899, 897, 900, 900, 901, 901, 902, 901,
2510  903, 901, 904, 904, 905, 905, 906, 907, 900, 908,
2511  909, 910, 911, 912, 912, 914, 904, 913, 913, 915,
2512 
2513  915, 916, 917, 918, 919, 919, 920, 921, 912, 922,
2514  923, 924, 913, 925, 926, 926, 927, 927, 930, 917,
2515  928, 928, 929, 929, 931, 932, 933, 934, 934, 935,
2516  936, 937, 936, 938, 939, 928, 940, 940, 941, 941,
2517  942, 942, 934, 943, 943, 944, 945, 946, 947, 947,
2518  948, 940, 950, 913, 949, 949, 951, 952, 943, 953,
2519  953, 944, 954, 954, 955, 955, 956, 957, 946, 934,
2520  958, 959, 960, 960, 953, 961, 962, 954, 963, 964,
2521  965, 965, 966, 966, 967, 967, 968, 969, 970, 970,
2522  971, 971, 972, 973, 973, 965, 974, 974, 976, 967,
2523 
2524  975, 975, 977, 970, 978, 979, 980, 981, 973, 982,
2525  982, 983, 984, 984, 967, 975, 985, 986, 987, 987,
2526  988, 988, 989, 990, 990, 991, 992, 992, 993, 994,
2527  995, 995, 996, 987, 997, 997, 998, 998, 990, 999,
2528  1000, 1001, 1001, 1002, 1002, 995, 1003, 1004, 1005, 997,
2529  1006, 1007, 1008, 1009, 1010, 1011, 1001, 1013, 1014, 1015,
2530  1016, 1017, 1018, 1019, 1020, 1021, 1021, 1022, 1023, 1024,
2531  1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1037,
2532  1021, 1035, 1035, 1036, 1036, 1038, 1039, 1040, 1041, 1043,
2533  1044, 1045, 1046, 1051, 1044, 1053, 1036, 1001, 1042, 1042,
2534 
2535  1042, 1047, 1047, 1042, 1048, 1048, 1042, 1042, 1042, 1042,
2536  1042, 1042, 1042, 1042, 1042, 1042, 1047, 1049, 1049, 1050,
2537  1050, 1052, 1052, 1054, 1056, 1057, 1058, 1059, 1060, 1061,
2538  1062, 1061, 1050, 1063, 1064, 1064, 1052, 1065, 1065, 1066,
2539  1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
2540  1075, 1073, 1065, 1076, 1076, 1077, 1077, 1078, 1075, 1079,
2541  1081, 1081, 1082, 1082, 1075, 1083, 1084, 1085, 1088, 1089,
2542  1077, 1090, 1091, 1092, 1093, 1081, 1094, 1095, 1095, 1096,
2543  1097, 1098, 1099, 1100, 1101, 1102, 1102, 1077, 1103, 1104,
2544  1105, 1095, 1106, 1107, 1108, 1111, 1112, 1112, 1113, 1102,
2545 
2546  1114, 1115, 1115, 1116, 1115, 1117, 1115, 1118, 1118, 1124,
2547  1112, 1119, 1119, 1120, 1120, 1121, 1121, 1125, 1121, 1126,
2548  1121, 1118, 1122, 1122, 1123, 1123, 1129, 1120, 1130, 1130,
2549  1133, 1133, 1134, 1133, 1135, 1133, 1122, 1136, 1137, 1137,
2550  1138, 1138, 1130, 1139, 1139, 1140, 1139, 1141, 1139, 1142,
2551  1143, 1144, 1137, 1145, 1138, 1146, 1146, 1147, 1147, 1148,
2552  1148, 1149, 1149, 1150, 1150, 1151, 1152, 1153, 1154, 1155,
2553  1146, 1156, 1157, 1158, 1148, 1159, 1159, 1160, 1150, 1161,
2554  1162, 1162, 1163, 1164, 1165, 1166, 1167, 1167, 1168, 1168,
2555  1159, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1175, 1176,
2556 
2557  1176, 1167, 1177, 1177, 1178, 1178, 1179, 1180, 1181, 1182,
2558  1184, 1185, 1175, 1186, 1187, 1185, 1192, 1177, 1183, 1183,
2559  1188, 1188, 1189, 1189, 1190, 1190, 1191, 1191, 1193, 1194,
2560  1194, 1195, 1196, 1183, 1197, 1188, 1198, 1183, 1183, 1183,
2561  1202, 1191, 1183, 1204, 1194, 1183, 1183, 1183, 1183, 1183,
2562  1183, 1183, 1183, 1183, 1183, 1199, 1199, 1200, 1200, 1201,
2563  1201, 1203, 1206, 1203, 1205, 1205, 1207, 1207, 1208, 1208,
2564  1209, 1209, 1200, 1210, 1211, 1212, 1213, 1214, 1215, 1217,
2565  1216, 1218, 1218, 1208, 1216, 1219, 1219, 1220, 1220, 1221,
2566  1221, 1222, 1222, 1223, 1224, 1228, 1218, 1225, 1225, 1226,
2567 
2568  1226, 1230, 1220, 1231, 1221, 1227, 1227, 1229, 1229, 1232,
2569  1232, 1236, 1225, 1237, 1226, 1233, 1233, 1234, 1234, 1220,
2570  1235, 1235, 1238, 1238, 1232, 1239, 1242, 1243, 1244, 1245,
2571  1246, 1247, 1234, 1249, 1250, 1235, 1251, 1238, 1252, 1252,
2572  1253, 1253, 1254, 1255, 1256, 1258, 1257, 1259, 1261, 1261,
2573  1261, 1262, 1263, 1252, 1257, 1264, 1265, 1266, 1266, 1267,
2574  1261, 1268, 1268, 1270, 1271, 1272, 1261, 1273, 1274, 1275,
2575  1268, 1273, 1276, 1278, 1277, 1279, 1268, 1273, 1277, 1280,
2576  1281, 1282, 1283, 1284, 1285, 1280, 1283, 1287, 1288, 1289,
2577  1290, 1293, 1283, 1291, 1291, 1283, 1292, 1292, 1296, 1282,
2578 
2579  1294, 1294, 1295, 1295, 1297, 1298, 1299, 1300, 1301, 1302,
2580  1303, 1304, 1305, 1306, 1308, 1294, 1307, 1307, 1309, 1309,
2581  1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1317, 1313,
2582  1318, 1319, 1319, 1309, 1320, 1320, 1317, 1321, 1321, 1322,
2583  1323, 1324, 1317, 1326, 1319, 1325, 1325, 1328, 1329, 1320,
2584  1330, 1331, 1332, 1333, 1334, 1335, 1335, 1336, 1336, 1337,
2585  1337, 1339, 1337, 1341, 1337, 1338, 1338, 1340, 1340, 1335,
2586  1342, 1336, 1343, 1344, 1344, 1345, 1345, 1346, 1345, 1338,
2587  1345, 1340, 1347, 1347, 1348, 1349, 1350, 1344, 1351, 1356,
2588  1361, 1353, 1353, 1359, 1359, 1362, 1347, 1352, 1352, 1365,
2589 
2590  1352, 1363, 1363, 1352, 1352, 1353, 1366, 1352, 1352, 1352,
2591  1352, 1352, 1352, 1354, 1354, 1352, 1354, 1367, 1354, 1355,
2592  1355, 1360, 1360, 1372, 1360, 1376, 1360, 1364, 1364, 1368,
2593  1368, 1369, 1369, 1355, 1369, 1377, 1369, 1373, 1373, 1374,
2594  1374, 1364, 1374, 1368, 1374, 1375, 1375, 1379, 1375, 1382,
2595  1375, 1373, 1378, 1378, 1380, 1380, 1381, 1381, 1383, 1384,
2596  1384, 1385, 1385, 1386, 1386, 1387, 1387, 1378, 1388, 1380,
2597  1389, 1381, 1390, 1391, 1392, 1392, 1393, 1394, 1386, 1395,
2598  1396, 1396, 1397, 1397, 1398, 1399, 1400, 1403, 1401, 1392,
2599  1402, 1402, 1404, 1404, 1407, 1396, 1401, 1405, 1405, 1408,
2600 
2601  1409, 1406, 1406, 1406, 1410, 1402, 1411, 1411, 1412, 1412,
2602  1416, 1402, 1405, 1406, 1413, 1413, 1414, 1414, 1417, 1406,
2603  1420, 1411, 1415, 1415, 1418, 1418, 1419, 1419, 1421, 1422,
2604  1423, 1414, 1421, 1424, 1426, 1427, 1425, 1415, 1421, 1418,
2605  1425, 1428, 1429, 1430, 1431, 1432, 1433, 1428, 1431, 1434,
2606  1434, 1435, 1436, 1437, 1431, 1438, 1442, 1431, 1439, 1439,
2607  1443, 1430, 1440, 1440, 1434, 1441, 1441, 1444, 1444, 1445,
2608  1445, 1446, 1447, 1448, 1449, 1450, 1450, 1440, 1451, 1452,
2609  1453, 1454, 1444, 1455, 1456, 1456, 1457, 1457, 1458, 1458,
2610  1459, 1460, 1461, 1463, 1462, 1462, 1464, 1465, 1466, 1466,
2611 
2612  1470, 1457, 1472, 1458, 1467, 1467, 1468, 1468, 1473, 1462,
2613  1469, 1469, 1477, 1466, 1471, 1471, 1474, 1474, 1475, 1475,
2614  1479, 1468, 1485, 1462, 1476, 1476, 1478, 1478, 1457, 1462,
2615  1486, 1474, 1480, 1480, 1481, 1481, 1482, 1482, 1483, 1483,
2616  1489, 1478, 1484, 1484, 1487, 1487, 1488, 1488, 1490, 1481,
2617  1491, 1492, 1493, 1483, 1494, 1495, 1496, 1497, 1498, 1487,
2618  1499, 1499, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508,
2619  1509, 1510, 1511, 1512, 1513, 1514, 1515, 1514, 1516, 1517,
2620  1517, 1518, 1519, 1519, 1520, 1522, 1523, 1524, 1517, 1525,
2621  1526, 1527, 1528, 1529, 1517, 1519, 1530, 1531, 1532, 1533,
2622 
2623  1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543,
2624  1544, 1545, 1546, 1547, 1548, 1549, 1549, 1550, 1552, 1553,
2625  1554, 1555, 1556, 1557, 1558, 1561, 1562, 1562, 1563, 1563,
2626  1564, 1565, 1566, 1565, 1567, 1568, 1569, 1570, 1571, 1572,
2627  1572, 1562, 1573, 1573, 1574, 1575, 1575, 1576, 1577, 1578,
2628  1579, 1581, 1582, 1583, 1584, 1573, 1585, 1586, 1587, 1587,
2629  1588, 1588, 1590, 1588, 1591, 1588, 1589, 1589, 1594, 1589,
2630  1597, 1589, 1587, 1592, 1592, 1593, 1593, 1595, 1595, 1596,
2631  1596, 1598, 1596, 1599, 1596, 1600, 1600, 1592, 1600, 1601,
2632  1600, 1595, 1602, 1603, 1604, 1604, 1605, 1605, 1608, 1605,
2633 
2634  1606, 1605, 1607, 1609, 1610, 1611, 1613, 1612, 1604, 1612,
2635  1606, 1614, 1607, 1609, 1615, 1616, 1617, 1619, 1618, 1612,
2636  1620, 1621, 1622, 1622, 1623, 1622, 1624, 1622, 1627, 1625,
2637  1625, 1630, 1630, 1632, 1617, 1618, 1626, 1626, 1633, 1626,
2638  1634, 1626, 1620, 1625, 1636, 1630, 1631, 1631, 1637, 1631,
2639  1640, 1631, 1635, 1635, 1641, 1635, 1646, 1635, 1638, 1638,
2640  1639, 1639, 1651, 1639, 1652, 1639, 1644, 1644, 1645, 1645,
2641  1647, 1647, 1638, 1648, 1648, 1649, 1649, 1650, 1650, 1653,
2642  1653, 1644, 1654, 1655, 1656, 1647, 1657, 1658, 1658, 1660,
2643  1649, 1659, 1659, 1661, 1662, 1663, 1663, 1664, 1664, 1665,
2644 
2645  1666, 1667, 1658, 1668, 1669, 1669, 1670, 1670, 1671, 1672,
2646  1673, 1673, 1664, 1674, 1674, 1675, 1676, 1677, 1678, 1669,
2647  1679, 1680, 1681, 1683, 1682, 1673, 1682, 1684, 1684, 1685,
2648  1685, 1686, 1686, 1687, 1687, 1688, 1688, 1689, 1690, 1690,
2649  1691, 1691, 1692, 1693, 1685, 1694, 1695, 1696, 1687, 1697,
2650  1698, 1699, 1700, 1690, 1701, 1702, 1703, 1704, 1705, 1706,
2651  1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1714, 1715,
2652  1715, 1716, 1717, 1718, 1719, 1720, 1720, 1721, 1722, 1722,
2653  1723, 1723, 1714, 1724, 1725, 1726, 1727, 1728, 1729, 1730,
2654  1731, 1731, 1735, 1722, 1732, 1732, 1733, 1733, 1734, 1734,
2655 
2656  1736, 1736, 1737, 1737, 1738, 1731, 1739, 1740, 1739, 1732,
2657  1743, 1733, 1741, 1741, 1744, 1736, 1742, 1742, 1745, 1746,
2658  1747, 1748, 1748, 1749, 1749, 1750, 1751, 1741, 1752, 1753,
2659  1753, 1754, 1755, 1755, 1756, 1756, 1757, 1757, 1758, 1758,
2660  1759, 1759, 1760, 1761, 1761, 1762, 1762, 1755, 1763, 1764,
2661  1765, 1757, 1767, 1768, 1769, 1770, 1771, 1772, 1761, 1773,
2662  1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783,
2663  1784, 1785, 1786, 1787, 1788, 1789, 1790, 1790, 1791, 1791,
2664  1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801,
2665  1802, 1791, 1803, 1804, 1805, 1806, 1807, 1808, 1806, 1761,
2666 
2667  1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818,
2668  1819, 1820, 1821, 1822, 1823, 1813, 1824, 1825, 1826, 1827,
2669  1828, 1829, 1830, 1830, 1831, 1832, 1833, 1835, 1836, 1837,
2670  1838, 1839, 1840, 1840, 1841, 1842, 1843, 1844, 1845, 1846,
2671  1848, 1849, 1850, 1848, 1851, 1852, 1852, 1853, 1852, 1854,
2672  1852, 1858, 1848, 1857, 1857, 1859, 1859, 1860, 1859, 1861,
2673  1859, 1862, 1863, 1864, 1867, 1868, 1868, 1871, 1868, 1872,
2674  1868, 1873, 1874, 1875, 1875, 1876, 1877, 1878, 1879, 1881,
2675  1879, 1880, 1880, 1882, 1883, 1884, 1885, 1875, 1886, 1887,
2676  1888, 1889, 1890, 1891, 1892, 1880, 1893, 1894, 1898, 1897,
2677 
2678  1897, 1899, 1897, 1894, 1897, 1900, 1901, 1901, 1902, 1901,
2679  1903, 1901, 1904, 1905, 1906, 1909, 1909, 1910, 1910, 1914,
2680  1910, 1917, 1910, 1913, 1913, 1915, 1915, 1916, 1916, 1909,
2681  1918, 1919, 1919, 1920, 1921, 1922, 1923, 1923, 1924, 1925,
2682  1926, 1927, 1927, 1928, 1928, 1929, 1919, 1930, 1931, 1932,
2683  1933, 1933, 1934, 1935, 1936, 1936, 1927, 1937, 1938, 1939,
2684  1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1947, 1948,
2685  1948, 1949, 1950, 1950, 1951, 1951, 1952, 1952, 1953, 1954,
2686  1955, 1956, 1957, 1958, 1959, 1960, 1961, 1950, 1962, 1962,
2687  1963, 1952, 1964, 1965, 1966, 1964, 1967, 1968, 1969, 1970,
2688 
2689  1971, 1972, 1975, 1962, 1973, 1973, 1974, 1974, 1976, 1977,
2690  1978, 1971, 1979, 1980, 1980, 1981, 1981, 1982, 1983, 1973,
2691  1984, 1985, 1986, 1987, 1988, 1989, 1989, 1994, 1980, 1996,
2692  1962, 1997, 1952, 1990, 1990, 1998, 1991, 1991, 1992, 1992,
2693  1989, 1993, 1993, 1995, 1995, 1999, 1999, 2000, 2000, 2001,
2694  1973, 1991, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2695  1999, 2010, 2010, 2011, 2011, 2012, 2012, 2013, 2014, 2014,
2696  2015, 2015, 2016, 2016, 2018, 2020, 2021, 2022, 2011, 2023,
2697  2024, 2025, 2026, 2014, 2027, 2028, 2029, 2016, 2030, 2031,
2698  2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041,
2699 
2700  2042, 2043, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050,
2701  2051, 2052, 2053, 2054, 2055, 2056, 2057, 2057, 2058, 2059,
2702  2060, 2061, 2062, 2064, 2065, 2066, 2067, 2068, 2069, 2070,
2703  2071, 2057, 2072, 2073, 2074, 2075, 2076, 2078, 2079, 2080,
2704  2081, 2082, 2083, 2084, 2085, 2086, 2087, 2089, 2090, 2091,
2705  2092, 2093, 2093, 2094, 2096, 2097, 2098, 2099, 2100, 2101,
2706  2102, 2102, 2103, 2103, 2106, 2106, 2093, 2109, 2109, 2110,
2707  2111, 2111, 2112, 2113, 2102, 2114, 2103, 2115, 2106, 2116,
2708  2119, 2109, 2117, 2117, 2111, 2118, 2118, 2120, 2118, 2121,
2709  2118, 2122, 2123, 2123, 2124, 2124, 2117, 2125, 2125, 2126,
2710 
2711  2127, 2128, 2129, 2130, 2131, 2133, 2123, 2134, 2124, 2132,
2712  2132, 2135, 2136, 2137, 2137, 2138, 2139, 2140, 2140, 2143,
2713  2146, 2147, 2150, 2132, 2148, 2148, 2151, 2137, 2153, 2149,
2714  2149, 2140, 2149, 2157, 2149, 2152, 2152, 2158, 2148, 2154,
2715  2154, 2140, 2155, 2155, 2156, 2156, 2159, 2160, 2123, 2161,
2716  2152, 2132, 2162, 2164, 2154, 2163, 2163, 2155, 2165, 2166,
2717  2167, 2168, 2169, 2140, 2170, 2171, 2172, 2173, 2174, 2175,
2718  2176, 2177, 2178, 2179, 2180, 2181, 2181, 2182, 2182, 2183,
2719  2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192,
2720  2193, 2196, 2182, 2194, 2194, 2195, 2195, 2197, 2197, 2198,
2721 
2722  2199, 2200, 2201, 2202, 2203, 2203, 2204, 2205, 2194, 2206,
2723  2207, 2208, 2197, 2209, 2209, 2210, 2210, 2211, 2212, 2203,
2724  2213, 2214, 2215, 2216, 2217, 2217, 2218, 2220, 2209, 2219,
2725  2219, 2221, 2222, 2223, 2224, 2225, 2225, 2226, 2226, 2227,
2726  2228, 2229, 2230, 2233, 2219, 2231, 2231, 2232, 2232, 2234,
2727  2234, 2235, 2236, 2237, 2238, 2238, 2239, 2240, 2240, 2241,
2728  2231, 2242, 2242, 2243, 2234, 2244, 2244, 2245, 2245, 2238,
2729  2246, 2246, 2240, 2247, 2248, 2249, 2251, 2252, 2252, 2253,
2730  2255, 2255, 2245, 2256, 2258, 2259, 2252, 2260, 2261, 2255,
2731  2262, 2263, 2252, 2264, 2265, 2255, 2266, 2267, 2268, 2269,
2732 
2733  2270, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278,
2734  2279, 2281, 2281, 2282, 2283, 2270, 2284, 2284, 2285, 2285,
2735  2286, 2287, 2288, 2289, 2290, 2292, 2281, 2291, 2291, 2293,
2736  2293, 2284, 2294, 2295, 2296, 2297, 2299, 2300, 2301, 2301,
2737  2302, 2303, 2291, 2304, 2293, 2305, 2306, 2307, 2308, 2309,
2738  2310, 2311, 2312, 2301, 2314, 2315, 2316, 2317, 2318, 2318,
2739  2319, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327,
2740  2327, 2328, 2328, 2318, 2329, 2329, 2330, 2330, 2331, 2331,
2741  2335, 2332, 2332, 2327, 2332, 2340, 2332, 2342, 2329, 2333,
2742  2333, 2344, 2331, 2334, 2334, 2336, 2336, 2337, 2337, 2338,
2743 
2744  2338, 2339, 2339, 2333, 2341, 2341, 2345, 2343, 2343, 2336,
2745  2343, 2347, 2343, 2338, 2348, 2339, 2346, 2346, 2341, 2349,
2746  2350, 2350, 2351, 2351, 2352, 2353, 2353, 2354, 2355, 2355,
2747  2346, 2356, 2357, 2358, 2350, 2359, 2360, 2360, 2361, 2361,
2748  2362, 2363, 2355, 2364, 2365, 2366, 2366, 2367, 2367, 2369,
2749  2360, 2368, 2368, 2370, 2373, 2371, 2371, 2372, 2372, 2366,
2750  2374, 2367, 2375, 2376, 2377, 2378, 2378, 2384, 2364, 2371,
2751  2379, 2379, 2382, 2382, 2383, 2383, 2385, 2385, 2388, 2378,
2752  2386, 2386, 2387, 2387, 2389, 2390, 2390, 2382, 2391, 2392,
2753  2392, 2385, 2393, 2394, 2394, 2395, 2395, 2396, 2397, 2397,
2754 
2755  2390, 2398, 2399, 2400, 2392, 2401, 2402, 2403, 2394, 2404,
2756  2395, 2405, 2406, 2397, 2407, 2408, 2409, 2410, 2411, 2411,
2757  2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2419, 2420,
2758  2420, 2421, 2422, 2422, 2423, 2424, 2424, 2425, 2425, 2426,
2759  2427, 2428, 2419, 2429, 2420, 2430, 2431, 2431, 2432, 2432,
2760  2424, 2433, 2433, 2434, 2435, 2435, 2436, 2437, 2438, 2438,
2761  2439, 2431, 2440, 2441, 2441, 2442, 2433, 2443, 2444, 2435,
2762  2445, 2446, 2446, 2447, 2447, 2448, 2449, 2450, 2441, 2451,
2763  2452, 2453, 2454, 2455, 2456, 2461, 2446, 2457, 2457, 2458,
2764  2458, 2459, 2459, 2460, 2460, 2462, 2463, 2464, 2464, 2465,
2765 
2766  2465, 2466, 2467, 2467, 2458, 2469, 2459, 2468, 2468, 2470,
2767  2471, 2471, 2464, 2472, 2473, 2474, 2477, 2467, 2476, 2476,
2768  2479, 2478, 2478, 2480, 2480, 2481, 2483, 2476, 2482, 2482,
2769  2484, 2485, 2480, 2476, 2478, 2486, 2487, 2488, 2480, 2489,
2770  2490, 2482, 2491, 2492, 2493, 2495, 2496, 2496, 2497, 2497,
2771  2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507,
2772  2507, 2496, 2508, 2508, 2509, 2509, 2510, 2511, 2511, 2512,
2773  2513, 2514, 2515, 2516, 2507, 2517, 2517, 2518, 2518, 2509,
2774  2519, 2520, 2520, 2521, 2521, 2522, 2523, 2524, 2527, 2530,
2775  2517, 2528, 2528, 2529, 2529, 2531, 2520, 2535, 2536, 2537,
2776 
2777  2538, 2539, 2540, 2541, 2542, 2543, 2528, 2544, 2545, 2545,
2778  2546, 2547, 2548, 2549, 2550, 2550, 2551, 2552, 2552, 2553,
2779  2553, 2554, 2554, 2556, 2555, 2555, 2549, 2555, 2550, 2555,
2780  2557, 2552, 2558, 2558, 2559, 2560, 2560, 2561, 2561, 2562,
2781  2562, 2574, 2562, 2575, 2562, 2563, 2563, 2564, 2564, 2565,
2782  2565, 2561, 2566, 2566, 2567, 2567, 2568, 2568, 2577, 2563,
2783  2571, 2571, 2578, 2565, 2572, 2572, 2566, 2573, 2573, 2582,
2784  2568, 2576, 2576, 2583, 2571, 2579, 2579, 2580, 2580, 2581,
2785  2581, 2573, 2584, 2585, 2585, 2586, 2587, 2588, 2590, 2579,
2786  2589, 2589, 2594, 2581, 2583, 2591, 2591, 2587, 2592, 2592,
2787 
2788  2593, 2593, 2595, 2587, 2589, 2596, 2596, 2597, 2598, 2591,
2789  2599, 2600, 2601, 2601, 2602, 2602, 2603, 2603, 2604, 2605,
2790  2605, 2606, 2607, 2608, 2608, 2613, 2601, 2609, 2609, 2610,
2791  2610, 2611, 2611, 2612, 2612, 2614, 2614, 2618, 2608, 2615,
2792  2615, 2616, 2616, 2621, 2610, 2622, 2611, 2617, 2617, 2623,
2793  2614, 2619, 2619, 2620, 2620, 2624, 2616, 2625, 2626, 2627,
2794  2628, 2629, 2630, 2631, 2631, 2632, 2619, 2633, 2634, 2635,
2795  2636, 2637, 2638, 2639, 2640, 2641, 2641, 2646, 2631, 2642,
2796  2642, 2643, 2643, 2644, 2644, 2645, 2645, 2647, 2647, 2648,
2797  2641, 2649, 2650, 2651, 2652, 2656, 2643, 2653, 2653, 2659,
2798 
2799  2645, 2654, 2654, 2655, 2655, 2657, 2657, 2658, 2658, 2660,
2800  2661, 2662, 2662, 2663, 2663, 2666, 2654, 2664, 2664, 2667,
2801  2657, 2665, 2665, 2668, 2669, 2669, 2662, 2673, 2663, 2670,
2802  2670, 2671, 2671, 2672, 2672, 2674, 2665, 2675, 2676, 2677,
2803  2678, 2679, 2679, 2683, 2670, 2684, 2671, 2686, 2672, 2680,
2804  2680, 2681, 2681, 2682, 2682, 2688, 2679, 2685, 2685, 2687,
2805  2687, 2689, 2690, 2691, 2692, 2693, 2693, 2695, 2682, 2694,
2806  2694, 2696, 2697, 2697, 2698, 2698, 2699, 2701, 2702, 2696,
2807  2703, 2704, 2694, 2705, 2706, 2707, 2708, 2698, 2709, 2710,
2808  2711, 2712, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719,
2809 
2810  2720, 2720, 2721, 2722, 2722, 2723, 2723, 2724, 2724, 2682,
2811  2725, 2726, 2726, 2727, 2728, 2720, 2729, 2730, 2731, 2731,
2812  2723, 2732, 2733, 2733, 2734, 2735, 2726, 2736, 2738, 2738,
2813  2739, 2740, 2741, 2742, 2743, 2744, 2745, 2748, 2749, 2750,
2814  2751, 2752, 2753, 2754, 2755, 2756, 2756, 2757, 2757, 2758,
2815  2759, 2759, 2760, 2760, 2763, 2760, 2777, 2760, 2778, 2756,
2816  2764, 2764, 2779, 2764, 2759, 2764, 2767, 2767, 2768, 2768,
2817  2769, 2769, 2784, 2769, 2786, 2769, 2770, 2770, 2771, 2771,
2818  2772, 2772, 2768, 2772, 2787, 2772, 2773, 2773, 2774, 2774,
2819  2775, 2775, 2771, 2775, 2788, 2775, 2776, 2776, 2780, 2780,
2820 
2821  2781, 2781, 2774, 2782, 2782, 2783, 2783, 2785, 2790, 2789,
2822  2776, 2791, 2792, 2792, 2781, 2793, 2793, 2794, 2785, 2783,
2823  2795, 2795, 2785, 2789, 2785, 2796, 2792, 2797, 2797, 2798,
2824  2798, 2799, 2800, 2801, 2802, 2802, 2804, 2803, 2803, 2805,
2825  2803, 2797, 2803, 2798, 2806, 2807, 2807, 2811, 2802, 2808,
2826  2808, 2809, 2809, 2810, 2810, 2811, 2812, 2812, 2813, 2813,
2827  2814, 2814, 2815, 2815, 2808, 2816, 2817, 2818, 2819, 2820,
2828  2821, 2822, 2823, 2824, 2825, 2814, 2826, 2826, 2827, 2827,
2829  2828, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2835, 2836,
2830  2841, 2826, 2837, 2837, 2838, 2838, 2839, 2839, 2840, 2840,
2831 
2832  2842, 2842, 2835, 2843, 2844, 2845, 2846, 2847, 2847, 2848,
2833  2850, 2839, 2849, 2849, 2851, 2842, 2852, 2853, 2853, 2854,
2834  2854, 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2859,
2835  2860, 2867, 2853, 2861, 2861, 2862, 2862, 2868, 2856, 2863,
2836  2863, 2869, 2858, 2864, 2864, 2865, 2865, 2870, 2861, 2866,
2837  2866, 2871, 2872, 2872, 2863, 2873, 2873, 2874, 2874, 2877,
2838  2865, 2875, 2875, 2876, 2876, 2878, 2879, 2872, 2880, 2881,
2839  2882, 2883, 2874, 2884, 2885, 2885, 2886, 2887, 2876, 2888,
2840  2889, 2889, 2890, 2891, 2892, 2892, 2893, 2894, 2895, 2896,
2841  2897, 2898, 2899, 2900, 2901, 2902, 2904, 2905, 2908, 2892,
2842 
2843  2906, 2906, 2907, 2907, 2909, 2909, 2910, 2910, 2911, 2912,
2844  2912, 2913, 2914, 2914, 2916, 2906, 2917, 2907, 2918, 2909,
2845  2915, 2915, 2919, 2920, 2920, 2921, 2922, 2914, 2923, 2924,
2846  2925, 2926, 2927, 2928, 2929, 2930, 2932, 2933, 2920, 2934,
2847  2936, 2937, 2938, 2939, 2939, 2940, 2941, 2941, 2942, 2941,
2848  2943, 2941, 2944, 2944, 2945, 2945, 2946, 2945, 2940, 2945,
2849  2947, 2949, 2948, 2948, 2950, 2948, 2944, 2948, 2951, 2951,
2850  2952, 2951, 2953, 2951, 2954, 2954, 2955, 2955, 2956, 2956,
2851  2957, 2958, 2959, 2959, 2960, 2960, 2961, 2961, 2954, 2962,
2852  2963, 2964, 2956, 2965, 2966, 2967, 2968, 2969, 2960, 2970,
2853 
2854  2971, 2972, 2973, 2974, 2974, 2975, 2976, 2977, 2977, 2978,
2855  2978, 2979, 2979, 2980, 2980, 2981, 2982, 2983, 2987, 2984,
2856  2984, 2977, 2984, 2988, 2984, 2979, 2989, 2990, 2990, 2991,
2857  2992, 2993, 2993, 2994, 2994, 2995, 2996, 2996, 2997, 2998,
2858  2999, 3000, 3001, 3002, 3003, 3004, 2993, 3005, 3005, 3006,
2859  3008, 2996, 3007, 3007, 3009, 3010, 3010, 3011, 3011, 3012,
2860  3013, 3013, 3014, 3014, 3015, 3016, 3016, 3007, 3017, 3020,
2861  3010, 3021, 3011, 3018, 3018, 3013, 3019, 3019, 3022, 3023,
2862  3024, 3024, 3025, 3026, 3027, 3028, 3028, 3032, 3018, 3029,
2863  3029, 3030, 3030, 3031, 3031, 3024, 3033, 3034, 3034, 3035,
2864 
2865  3035, 3036, 3036, 3037, 3038, 3039, 3030, 3040, 3041, 3042,
2866  3042, 3043, 3043, 3044, 3044, 3045, 3045, 3046, 3046, 3047,
2867  3047, 3048, 3049, 3051, 3042, 3050, 3050, 3052, 3053, 3054,
2868  3045, 3055, 3056, 3057, 3047, 3058, 3060, 3060, 3061, 3061,
2869  3050, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070,
2870  3071, 3060, 3072, 3073, 3074, 3074, 3075, 3075, 3076, 3076,
2871  3077, 3077, 3078, 3079, 3079, 3080, 3081, 3082, 3082, 3074,
2872  3083, 3085, 3086, 3076, 3087, 3087, 3088, 3088, 3089, 3089,
2873  3090, 3092, 3093, 3094, 3095, 3097, 3098, 3099, 3101, 3087,
2874  3100, 3100, 3102, 3089, 3103, 3103, 3104, 3104, 3105, 3106,
2875 
2876  3109, 3109, 3117, 3117, 3120, 3100, 3110, 3110, 3103, 3110,
2877  3104, 3110, 3118, 3118, 3109, 3119, 3119, 3121, 3122, 3122,
2878  3123, 3123, 3124, 3125, 3126, 3127, 3118, 3128, 3129, 3130,
2879  3131, 3132, 3133, 3134, 3123, 3135, 3136, 3137, 3137, 3138,
2880  3138, 3139, 3140, 3140, 3141, 3142, 3143, 3144, 3145, 3146,
2881  3147, 3147, 3148, 3148, 3149, 3149, 3140, 3150, 3150, 3151,
2882  3152, 3153, 3154, 3155, 3156, 3157, 3158, 3148, 3159, 3149,
2883  3160, 3160, 3161, 3161, 3162, 3163, 3164, 3164, 3165, 3165,
2884  3166, 3166, 3167, 3167, 3168, 3160, 3169, 3169, 3170, 3171,
2885  3173, 3164, 3172, 3172, 3175, 3166, 3174, 3174, 3176, 3177,
2886 
2887  3177, 3178, 3178, 3179, 3179, 3180, 3181, 3181, 3182, 3182,
2888  3183, 3174, 3184, 3185, 3177, 3186, 3187, 3187, 3179, 3188,
2889  3189, 3181, 3190, 3190, 3191, 3191, 3192, 3192, 3193, 3193,
2890  3194, 3187, 3195, 3196, 3196, 3197, 3197, 3198, 3200, 3202,
2891  3203, 3192, 3204, 3205, 3206, 3206, 3207, 3208, 3196, 3209,
2892  3210, 3211, 3212, 3215, 3216, 3217, 3218, 3219, 3219, 3220,
2893  3220, 3221, 3222, 3224, 3225, 3226, 3227, 3227, 3210, 3228,
2894  3228, 3229, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236,
2895  3237, 3238, 3238, 3240, 3228, 3239, 3239, 3241, 3242, 3242,
2896  3243, 3243, 3244, 3244, 3245, 3245, 3238, 3246, 3247, 3249,
2897 
2898  3248, 3248, 3242, 3248, 3250, 3248, 3244, 3251, 3251, 3252,
2899  3253, 3254, 3254, 3255, 3255, 3256, 3256, 3257, 3257, 3258,
2900  3259, 3259, 3260, 3261, 3262, 3254, 3263, 3264, 3265, 3256,
2901  3268, 3257, 3266, 3266, 3259, 3267, 3267, 3269, 3269, 3270,
2902  3270, 3271, 3271, 3272, 3273, 3273, 3266, 3274, 3276, 3267,
2903  3277, 3269, 3281, 3270, 3275, 3275, 3272, 3278, 3278, 3273,
2904  3279, 3279, 3280, 3280, 3282, 3283, 3284, 3285, 3286, 3275,
2905  3287, 3287, 3278, 3288, 3288, 3289, 3290, 3290, 3291, 3292,
2906  3293, 3293, 3294, 3294, 3284, 3287, 3295, 3296, 3288, 3297,
2907  3297, 3298, 3299, 3299, 3300, 3300, 3301, 3302, 3303, 3303,
2908 
2909  3304, 3304, 3305, 3305, 3297, 3306, 3309, 3299, 3307, 3307,
2910  3308, 3308, 3310, 3311, 3312, 3304, 3313, 3313, 3314, 3314,
2911  3315, 3316, 3318, 3307, 3317, 3317, 3319, 3320, 3320, 3321,
2912  3322, 3313, 3323, 3324, 3326, 3327, 3328, 3330, 3331, 3332,
2913  3333, 3334, 3335, 3335, 3337, 3337, 3339, 3341, 3341, 3342,
2914  3342, 3343, 3343, 3344, 3345, 3346, 3347, 3335, 3349, 3337,
2915  3350, 3351, 3341, 3353, 3342, 3352, 3352, 3354, 3355, 3355,
2916  3356, 3356, 3357, 3357, 3358, 3358, 3361, 3362, 3363, 3363,
2917  3364, 3364, 3365, 3365, 3366, 3366, 3357, 3368, 3358, 3367,
2918  3367, 3369, 3369, 3371, 3364, 3370, 3370, 3373, 3366, 3372,
2919 
2920  3372, 3374, 3375, 3376, 3381, 3369, 3377, 3377, 3378, 3378,
2921  3379, 3379, 3385, 3372, 3380, 3380, 3382, 3382, 3383, 3383,
2922  3377, 3384, 3384, 3386, 3379, 3387, 3387, 3388, 3388, 3389,
2923  3382, 3390, 3390, 3391, 3391, 3392, 3393, 3393, 3394, 3394,
2924  3387, 3395, 3396, 3397, 3397, 3398, 3390, 3399, 3400, 3401,
2925  3406, 3393, 3402, 3402, 3403, 3403, 3404, 3404, 3397, 3405,
2926  3405, 3407, 3407, 3408, 3408, 3409, 3409, 3402, 3410, 3411,
2927  3411, 3404, 3412, 3412, 3413, 3413, 3407, 3418, 3408, 3420,
2928  3409, 3414, 3414, 3421, 3411, 3415, 3415, 3416, 3416, 3413,
2929  3417, 3417, 3419, 3419, 3422, 3423, 3423, 3424, 3424, 3425,
2930 
2931  3415, 3426, 3416, 3427, 3428, 3429, 3430, 3431, 3432, 3433,
2932  3423, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3441, 3442,
2933  3442, 3443, 3443, 3444, 3444, 3445, 3446, 3446, 3447, 3447,
2934  3448, 3448, 3441, 3449, 3449, 3450, 3443, 3451, 3452, 3453,
2935  3455, 3446, 3456, 3457, 3458, 3448, 3459, 3459, 3460, 3460,
2936  3461, 3461, 3462, 3462, 3463, 3463, 3464, 3465, 3465, 3469,
2937  3459, 3466, 3466, 3472, 3461, 3467, 3467, 3473, 3463, 3468,
2938  3468, 3470, 3470, 3471, 3471, 3474, 3475, 3476, 3476, 3467,
2939  3477, 3477, 3478, 3479, 3479, 3470, 3480, 3481, 3482, 3482,
2940  3483, 3484, 3484, 3485, 3486, 3486, 3487, 3487, 3488, 3488,
2941 
2942  3489, 3490, 3490, 3491, 3491, 3492, 3493, 3494, 3495, 3486,
2943  3496, 3496, 3498, 3488, 3497, 3497, 3490, 3499, 3499, 3500,
2944  3500, 3501, 3501, 3502, 3502, 3503, 3503, 3504, 3504, 3505,
2945  3506, 3506, 3499, 3507, 3507, 3513, 3501, 3508, 3508, 3514,
2946  3503, 3509, 3509, 3510, 3510, 3511, 3511, 3515, 3507, 3512,
2947  3512, 3516, 3517, 3517, 3518, 3518, 3509, 3519, 3519, 3520,
2948  3511, 3521, 3522, 3523, 3524, 3525, 3527, 3517, 3528, 3529,
2949  3530, 3531, 3519, 3532, 3533, 3534, 3534, 3535, 3535, 3537,
2950  3537, 3538, 3538, 3540, 3541, 3542, 3544, 3545, 3546, 3547,
2951  3547, 3548, 3548, 3549, 3549, 3550, 3550, 3551, 3551, 3552,
2952 
2953  3552, 3553, 3553, 3554, 3555, 3555, 3556, 3549, 3557, 3558,
2954  3558, 3551, 3559, 3552, 3560, 3561, 3561, 3562, 3562, 3563,
2955  3564, 3564, 3568, 3558, 3565, 3565, 3566, 3566, 3570, 3561,
2956  3571, 3562, 3567, 3567, 3572, 3564, 3569, 3569, 3573, 3574,
2957  3583, 3566, 3575, 3575, 3576, 3576, 3577, 3577, 3578, 3578,
2958  3579, 3579, 3580, 3580, 3581, 3581, 3582, 3582, 3584, 3585,
2959  3586, 3586, 3590, 3578, 3587, 3587, 3588, 3588, 3589, 3589,
2960  3591, 3582, 3592, 3594, 3595, 3596, 3597, 3598, 3599, 3587,
2961  3600, 3601, 3604, 3589, 3605, 3608, 3608, 3609, 3609, 3610,
2962  3610, 3611, 3611, 3612, 3613, 3614, 3615, 3615, 3616, 3616,
2963 
2964  3617, 3609, 3618, 3618, 3619, 3619, 3620, 3620, 3621, 3621,
2965  3615, 3622, 3622, 3623, 3623, 3627, 3618, 3628, 3619, 3624,
2966  3624, 3629, 3621, 3625, 3625, 3626, 3626, 3630, 3623, 3631,
2967  3632, 3633, 3633, 3639, 3624, 3634, 3634, 3635, 3635, 3636,
2968  3636, 3637, 3637, 3638, 3638, 3643, 3633, 3640, 3640, 3641,
2969  3641, 3646, 3635, 3642, 3642, 3647, 3637, 3648, 3638, 3644,
2970  3644, 3645, 3645, 3649, 3641, 3650, 3651, 3652, 3653, 3654,
2971  3655, 3656, 3656, 3657, 3644, 3658, 3645, 3659, 3660, 3660,
2972  3661, 3662, 3662, 3663, 3663, 3664, 3664, 3665, 3665, 3666,
2973  3666, 3667, 3667, 3668, 3668, 3662, 3669, 3670, 3671, 3672,
2974 
2975  3672, 3673, 3674, 3681, 3666, 3675, 3675, 3676, 3676, 3677,
2976  3677, 3678, 3678, 3683, 3672, 3679, 3679, 3680, 3680, 3682,
2977  3682, 3684, 3684, 3688, 3677, 3685, 3685, 3686, 3686, 3689,
2978  3679, 3690, 3672, 3687, 3687, 3693, 3684, 3695, 3696, 3697,
2979  3698, 3699, 3686, 3700, 3701, 3702, 3702, 3703, 3703, 3704,
2980  3705, 3705, 3706, 3706, 3707, 3707, 3708, 3708, 3709, 3710,
2981  3710, 3711, 3712, 3712, 3714, 3705, 3715, 3706, 3718, 3707,
2982  3713, 3713, 3716, 3716, 3710, 3717, 3717, 3719, 3721, 3722,
2983  3724, 3725, 3726, 3727, 3728, 3729, 3729, 3730, 3730, 3731,
2984  3731, 3732, 3732, 3733, 3733, 3734, 3734, 3735, 3736, 3736,
2985 
2986  3729, 3738, 3730, 3737, 3737, 3740, 3732, 3739, 3739, 3741,
2987  3742, 3743, 3744, 3736, 3745, 3746, 3747, 3748, 3749, 3750,
2988  3750, 3754, 3739, 3751, 3751, 3752, 3752, 3753, 3753, 3755,
2989  3755, 3756, 3757, 3757, 3750, 3758, 3758, 3759, 3760, 3760,
2990  3761, 3761, 3762, 3763, 3764, 3765, 3766, 3757, 3767, 3768,
2991  3769, 3769, 3770, 3760, 3771, 3761, 3772, 3772, 3773, 3774,
2992  3774, 3775, 3775, 3776, 3776, 3777, 3777, 3778, 3779, 3780,
2993  3781, 3782, 3783, 3784, 3774, 3785, 3786, 3787, 3776, 3788,
2994  3788, 3789, 3789, 3791, 3793, 3793, 3794, 3795, 3796, 3796,
2995  3797, 3797, 3798, 3799, 3799, 3800, 3801, 3801, 3793, 3802,
2996 
2997  3802, 3803, 3796, 3804, 3804, 3797, 3805, 3805, 3799, 3809,
2998  3801, 3806, 3806, 3807, 3807, 3808, 3808, 3804, 3810, 3810,
2999  3805, 3811, 3811, 3812, 3813, 3813, 3814, 3814, 3807, 3815,
3000  3815, 3816, 3816, 3810, 3817, 3817, 3818, 3818, 3819, 3821,
3001  3814, 3820, 3820, 3815, 3822, 3822, 3823, 3823, 3824, 3824,
3002  3825, 3827, 3827, 3828, 3828, 3829, 3829, 810, 3822, 3830,
3003  3830, 3831, 3831, 807, 806, 805, 803, 800, 3828, 796,
3004  3829, 3833, 3833, 3833, 3833, 3833, 3834, 3834, 3834, 3834,
3005  3834, 3835, 3835, 3835, 3835, 3835, 3836, 3836, 3836, 3836,
3006  3836, 3837, 3837, 3837, 3837, 3837, 3838, 3838, 3838, 3838,
3007 
3008  3838, 3839, 3839, 3839, 3839, 3839, 3840, 3840, 3840, 3840,
3009  3840, 3841, 3841, 3841, 3841, 3842, 794, 3842, 3842, 3842,
3010  3843, 3843, 793, 3843, 3843, 3844, 3844, 3844, 792, 3844,
3011  790, 789, 788, 787, 786, 785, 782, 781, 780, 779,
3012  778, 777, 775, 773, 772, 771, 769, 768, 767, 766,
3013  765, 764, 762, 761, 760, 757, 756, 755, 753, 752,
3014  751, 750, 747, 746, 745, 743, 742, 739, 736, 735,
3015  733, 732, 731, 728, 727, 726, 723, 722, 719, 718,
3016  717, 715, 713, 712, 711, 710, 707, 704, 702, 701,
3017  700, 696, 695, 694, 693, 692, 691, 689, 688, 681,
3018 
3019  680, 678, 677, 676, 675, 672, 671, 670, 667, 666,
3020  665, 663, 662, 661, 660, 656, 655, 651, 650, 647,
3021  646, 645, 644, 643, 642, 640, 639, 638, 637, 632,
3022  631, 630, 629, 628, 625, 621, 618, 617, 616, 615,
3023  612, 610, 609, 608, 607, 606, 605, 604, 603, 601,
3024  600, 599, 598, 595, 594, 593, 591, 590, 589, 586,
3025  585, 583, 582, 581, 579, 578, 577, 576, 573, 572,
3026  571, 570, 569, 568, 566, 565, 564, 563, 560, 557,
3027  555, 554, 553, 551, 550, 549, 548, 547, 546, 544,
3028  543, 536, 535, 534, 533, 532, 531, 528, 527, 526,
3029 
3030  525, 524, 523, 521, 520, 519, 518, 514, 513, 512,
3031  511, 510, 509, 508, 507, 505, 504, 503, 502, 501,
3032  499, 497, 496, 495, 493, 492, 491, 490, 489, 488,
3033  487, 486, 484, 480, 479, 476, 473, 472, 470, 469,
3034  468, 467, 466, 465, 464, 461, 460, 459, 456, 455,
3035  452, 451, 450, 449, 446, 445, 443, 442, 441, 440,
3036  435, 434, 433, 431, 430, 428, 424, 423, 422, 421,
3037  420, 419, 418, 417, 416, 415, 412, 411, 410, 409,
3038  408, 406, 403, 402, 400, 398, 397, 396, 395, 393,
3039  392, 389, 388, 387, 386, 385, 384, 383, 382, 380,
3040 
3041  379, 378, 377, 376, 375, 374, 372, 371, 370, 368,
3042  367, 366, 365, 364, 363, 362, 361, 359, 357, 356,
3043  353, 350, 349, 348, 347, 346, 345, 344, 343, 342,
3044  341, 338, 337, 336, 333, 332, 331, 330, 329, 328,
3045  325, 324, 322, 321, 320, 319, 316, 315, 314, 313,
3046  312, 311, 306, 305, 304, 303, 302, 301, 300, 298,
3047  297, 296, 295, 294, 293, 292, 290, 289, 288, 284,
3048  283, 282, 279, 278, 277, 276, 275, 274, 269, 268,
3049  266, 265, 260, 259, 258, 257, 256, 255, 254, 253,
3050  250, 249, 248, 247, 246, 245, 244, 243, 242, 241,
3051 
3052  240, 239, 238, 237, 236, 235, 234, 229, 228, 227,
3053  226, 224, 223, 222, 221, 217, 216, 215, 214, 213,
3054  212, 207, 206, 205, 204, 203, 202, 201, 199, 198,
3055  197, 196, 195, 194, 193, 191, 190, 189, 185, 184,
3056  183, 180, 179, 178, 177, 176, 175, 174, 170, 169,
3057  167, 166, 164, 154, 152, 151, 148, 145, 143, 140,
3058  138, 136, 135, 133, 132, 130, 129, 128, 127, 126,
3059  125, 124, 123, 121, 119, 117, 116, 115, 114, 112,
3060  111, 110, 108, 103, 102, 101, 91, 89, 88, 85,
3061  82, 78, 71, 70, 66, 65, 60, 59, 58, 57,
3062 
3063  54, 53, 49, 44, 41, 32, 31, 27, 24, 22,
3064  19, 14, 13, 8, 7, 6, 5, 4, 3, 3832,
3065  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
3066  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
3067  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
3068  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
3069  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
3070  3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832,
3071  3832, 3832, 3832, 3832, 3832, 3832
3072  } ;
3073 
3074 /* Table of booleans, true if rule could match eol. */
3076  { 0,
3077 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3078  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3079  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3080  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3081  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3082  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3083  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3084  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3085  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3086  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3087  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3088  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3089  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3090  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3091  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3092  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3093  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3094  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3095  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3096  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3097  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3098  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3099  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3100  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3101  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3102  1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, };
3103 
3104 /* The intent behind this definition is that it'll catch
3105  * any uses of REJECT which flex missed.
3106  */
3107 #define REJECT reject_used_but_not_detected
3108 #define yymore() yymore_used_but_not_detected
3109 #define YY_MORE_ADJ 0
3110 #define YY_RESTORE_YY_MORE_OFFSET
3111 #line 1 "../../../../OS/src/OSParsers/OSParseosol.l"
3112 /* $Id: OSParseosol.cpp 5284 2017-12-08 13:52:50Z stefan $ */
3133 #line 23 "../../../../OS/src/OSParsers/OSParseosol.l"
3134 //#define OSOLPARSERDEBUG
3135 
3136 #ifdef OSOLPARSERDEBUG
3137  #define YY_PRINT printf("%s", yytext)
3138 #else
3139  #define YY_PRINT
3140 #endif
3141 
3142 #include <iostream>
3143 #include <sstream>
3144 
3145 #include "OSConfig.h"
3146 #include "OSDataStructures.h"
3147 #include "OSErrorClass.h"
3148 #include "OSMathUtil.h"
3149 #include "OSoLParserData.h"
3150 #include "OSParseosol.tab.hpp"
3151 #include "OSOption.h"
3152 #include "OSGeneral.h"
3153 
3154 #ifdef HAVE_CSTDIO
3155 # include <cstdio>
3156 #else
3157 # ifdef HAVE_STDIO_H
3158 # include <stdio.h>
3159 # else
3160 # error "don't have header file for stdio"
3161 # endif
3162 #endif
3163 
3164 #ifdef HAVE_CTIME
3165 # include <ctime>
3166 #else
3167 # ifdef HAVE_TIME_H
3168 # include <time.h>
3169 # else
3170 # error "don't have header file for time"
3171 # endif
3172 #endif
3173 
3174 #ifdef HAVE_CMATH
3175 # include <cmath>
3176 #else
3177 # ifdef HAVE_MATH_H
3178 # include <math.h>
3179 # else
3180 # error "don't have header file for math"
3181 # endif
3182 #endif
3183 
3184 #ifdef HAVE_CSTRING
3185 # include <cstring>
3186 #else
3187 # ifdef HAVE_STRING_H
3188 # include <string.h>
3189 # else
3190 # error "don't have header file for string"
3191 # endif
3192 #endif
3193 
3194 
3195 #ifdef WIN_
3196  #define YY_NO_UNISTD_H
3197  #include <io.h>
3198  #include <process.h>
3199  #ifdef USE_OLD_UNISTD
3200  #include<sys/unistd.h>
3201  #endif
3202 #endif
3203 
3204 using std::cout;
3205 using std::endl;
3206 using std::ostringstream;
3207 
3208 
3209 
3210 
3211 
3212 
3213 
3214 
3215 
3216 #line 117 "../../../../OS/src/OSParsers/OSParseosol.l"
3217 #define YY_EXTRA_TYPE OSoLParserData*
3218 #line 3219 "../../../../OS/src/OSParsers/OSParseosol.cpp"
3219 
3220 #define INITIAL 0
3221 #define osolattributetext 1
3222 #define doublequoteattributetext 2
3223 #define singlequoteattributetext 3
3224 #define startelement 4
3225 #define elementtext 5
3226 #define itemtext 6
3227 #define comment 7
3228 #define xmldeclaration 8
3229 
3230 #ifndef YY_NO_UNISTD_H
3231 /* Special case for "unistd.h", since it is non-ANSI. We include it way
3232  * down here because we want the user's section 1 to have been scanned first.
3233  * The user has a chance to override it with an option.
3234  */
3235 #include <unistd.h>
3236 #endif
3237 
3238 #ifndef YY_EXTRA_TYPE
3239 #define YY_EXTRA_TYPE void *
3240 #endif
3241 
3242 /* Holds the entire state of the reentrant scanner. */
3243 struct yyguts_t
3244  {
3245 
3246  /* User-defined. Not touched by flex. */
3248 
3249  /* The rest are the same as the globals declared in the non-reentrant scanner. */
3250  FILE *yyin_r, *yyout_r;
3251  size_t yy_buffer_stack_top;
3252  size_t yy_buffer_stack_max;
3253  YY_BUFFER_STATE * yy_buffer_stack;
3254  char yy_hold_char;
3255  int yy_n_chars;
3256  int yyleng_r;
3257  char *yy_c_buf_p;
3258  int yy_init;
3259  int yy_start;
3261  int yy_start_stack_ptr;
3263  int *yy_start_stack;
3265  char* yy_last_accepting_cpos;
3266 
3267  int yylineno_r;
3268  int yy_flex_debug_r;
3269 
3270  char *yytext_r;
3271  int yy_more_flag;
3272  int yy_more_len;
3273 
3274  YYSTYPE * yylval_r;
3275 
3276  YYLTYPE * yylloc_r;
3277 
3278  }; /* end struct yyguts_t */
3279 
3280 static int yy_init_globals (yyscan_t yyscanner );
3281 
3282  /* This must go here because YYSTYPE and YYLTYPE are included
3283  * from bison output in section 1.*/
3284  # define yylval yyg->yylval_r
3285 
3286  # define yylloc yyg->yylloc_r
3287 
3289 
3290 int osollex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
3291 
3292 /* Accessor methods to globals.
3293  These are made visible to non-reentrant scanners for convenience. */
3294 
3295 int osollex_destroy (yyscan_t yyscanner );
3296 
3297 int osolget_debug (yyscan_t yyscanner );
3298 
3299 void osolset_debug (int debug_flag ,yyscan_t yyscanner );
3300 
3301 YY_EXTRA_TYPE osolget_extra (yyscan_t yyscanner );
3302 
3303 void osolset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
3304 
3305 FILE *osolget_in (yyscan_t yyscanner );
3306 
3307 void osolset_in (FILE * in_str ,yyscan_t yyscanner );
3308 
3309 FILE *osolget_out (yyscan_t yyscanner );
3310 
3311 void osolset_out (FILE * out_str ,yyscan_t yyscanner );
3312 
3313 int osolget_leng (yyscan_t yyscanner );
3314 
3315 char *osolget_text (yyscan_t yyscanner );
3316 
3317 int osolget_lineno (yyscan_t yyscanner );
3318 
3319 void osolset_lineno (int line_number ,yyscan_t yyscanner );
3320 
3321 YYSTYPE * osolget_lval (yyscan_t yyscanner );
3322 
3323 void osolset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
3324 
3325  YYLTYPE *osolget_lloc (yyscan_t yyscanner );
3326 
3327  void osolset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
3328 
3329 /* Macros after this point can all be overridden by user definitions in
3330  * section 1.
3331  */
3332 
3333 #ifndef YY_SKIP_YYWRAP
3334 #ifdef __cplusplus
3335 extern "C" int osolwrap (yyscan_t yyscanner );
3336 #else
3337 extern int osolwrap (yyscan_t yyscanner );
3338 #endif
3339 #endif
3340 
3341 #ifndef yytext_ptr
3342 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
3343 #endif
3344 
3345 #ifdef YY_NEED_STRLEN
3346 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
3347 #endif
3348 
3349 #ifndef YY_NO_INPUT
3350 
3351 #ifdef __cplusplus
3352 static int yyinput (yyscan_t yyscanner );
3353 #else
3354 static int input (yyscan_t yyscanner );
3355 #endif
3356 
3357 #endif
3358 
3359 /* Amount of stuff to slurp up with each read. */
3360 #ifndef YY_READ_BUF_SIZE
3361 #ifdef __ia64__
3362 /* On IA-64, the buffer size is 16k, not 8k */
3363 #define YY_READ_BUF_SIZE 16384
3364 #else
3365 #define YY_READ_BUF_SIZE 8192
3366 #endif /* __ia64__ */
3367 #endif
3368 
3369 /* Copy whatever the last rule matched to the standard output. */
3370 #ifndef ECHO
3371 /* This used to be an fputs(), but since the string might contain NUL's,
3372  * we now use fwrite().
3373  */
3374 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
3375 #endif
3376 
3377 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3378  * is returned in "result".
3379  */
3380 #ifndef YY_INPUT
3381 #define YY_INPUT(buf,result,max_size) \
3382  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3383  { \
3384  int c = '*'; \
3385  size_t n; \
3386  for ( n = 0; n < max_size && \
3387  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3388  buf[n] = (char) c; \
3389  if ( c == '\n' ) \
3390  buf[n++] = (char) c; \
3391  if ( c == EOF && ferror( yyin ) ) \
3392  YY_FATAL_ERROR( "input in flex scanner failed" ); \
3393  result = n; \
3394  } \
3395  else \
3396  { \
3397  errno=0; \
3398  while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
3399  { \
3400  if( errno != EINTR) \
3401  { \
3402  YY_FATAL_ERROR( "input in flex scanner failed" ); \
3403  break; \
3404  } \
3405  errno=0; \
3406  clearerr(yyin); \
3407  } \
3408  }\
3409 \
3410 
3411 #endif
3412 
3413 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3414  * we don't want an extra ';' after the "return" because that will cause
3415  * some compilers to complain about unreachable statements.
3416  */
3417 #ifndef yyterminate
3418 #define yyterminate() return YY_NULL
3419 #endif
3420 
3421 /* Number of entries by which start-condition stack grows. */
3422 #ifndef YY_START_STACK_INCR
3423 #define YY_START_STACK_INCR 25
3424 #endif
3425 
3426 /* Report a fatal error. */
3427 #ifndef YY_FATAL_ERROR
3428 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
3429 #endif
3430 
3431 /* end tables serialization structures and prototypes */
3432 
3433 /* Default declaration of generated scanner - a define so the user can
3434  * easily add parameters.
3435  */
3436 #ifndef YY_DECL
3437 #define YY_DECL_IS_OURS 1
3438 
3439 extern int osollex \
3440  (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
3441 
3442 #define YY_DECL int osollex \
3443  (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
3444 #endif /* !YY_DECL */
3445 
3446 /* Code executed at the beginning of each rule, after yytext and yyleng
3447  * have been set up.
3448  */
3449 #ifndef YY_USER_ACTION
3450 #define YY_USER_ACTION
3451 #endif
3452 
3453 /* Code executed at the end of each rule. */
3454 #ifndef YY_BREAK
3455 #define YY_BREAK break;
3456 #endif
3457 
3458 #define YY_RULE_SETUP \
3459  YY_USER_ACTION
3460 
3463 YY_DECL
3466  register char *yy_cp, *yy_bp;
3467  register int yy_act;
3468  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3469 
3470 #line 127 "../../../../OS/src/OSParsers/OSParseosol.l"
3471 
3472 
3473 #line 3474 "../../../../OS/src/OSParsers/OSParseosol.cpp"
3474 
3475  yylval = yylval_param;
3476 
3477  yylloc = yylloc_param;
3478 
3479  if ( !yyg->yy_init )
3480  {
3481  yyg->yy_init = 1;
3482 
3483 #ifdef YY_USER_INIT
3484  YY_USER_INIT;
3485 #endif
3486 
3487  if ( ! yyg->yy_start )
3488  yyg->yy_start = 1; /* first start state */
3489 
3490  if ( ! yyin )
3491  yyin = stdin;
3492 
3493  if ( ! yyout )
3494  yyout = stdout;
3495 
3496  if ( ! YY_CURRENT_BUFFER ) {
3497  osolensure_buffer_stack (yyscanner);
3499  osol_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
3500  }
3501 
3502  osol_load_buffer_state(yyscanner );
3503  }
3504 
3505  while ( 1 ) /* loops until end-of-file is reached */
3506  {
3507  yy_cp = yyg->yy_c_buf_p;
3508 
3509  /* Support of yytext. */
3510  *yy_cp = yyg->yy_hold_char;
3511 
3512  /* yy_bp points to the position in yy_ch_buf of the start of
3513  * the current run.
3514  */
3515  yy_bp = yy_cp;
3516 
3517  yy_current_state = yyg->yy_start;
3518 yy_match:
3519  do
3520  {
3521  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3522  if ( yy_accept[yy_current_state] )
3523  {
3526  }
3527  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3528  {
3529  yy_current_state = (int) yy_def[yy_current_state];
3530  if ( yy_current_state >= 3833 )
3531  yy_c = yy_meta[(unsigned int) yy_c];
3532  }
3533  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3534  ++yy_cp;
3535  }
3536  while ( yy_base[yy_current_state] != 6120 );
3537 
3538 yy_find_action:
3539  yy_act = yy_accept[yy_current_state];
3540  if ( yy_act == 0 )
3541  { /* have to back up */
3542  yy_cp = yyg->yy_last_accepting_cpos;
3543  yy_current_state = yyg->yy_last_accepting_state;
3544  yy_act = yy_accept[yy_current_state];
3545  }
3546 
3548 
3549  if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
3550  {
3551  int yyl;
3552  for ( yyl = 0; yyl < yyleng; ++yyl )
3553  if ( yytext[yyl] == '\n' )
3554 
3555  do{ yylineno++;
3556  yycolumn=0;
3557  }while(0)
3558 ;
3559  }
3560 
3561 do_action: /* This label is used only to access EOF actions. */
3562 
3563  switch ( yy_act )
3564  { /* beginning of action switch */
3565  case 0: /* must back up */
3566  /* undo the effects of YY_DO_BEFORE_ACTION */
3567  *yy_cp = yyg->yy_hold_char;
3568  yy_cp = yyg->yy_last_accepting_cpos;
3569  yy_current_state = yyg->yy_last_accepting_state;
3570  goto yy_find_action;
3571 
3572 case 1:
3573 /* rule 1 can match eol */
3575 #line 129 "../../../../OS/src/OSParsers/OSParseosol.l"
3576 
3577  YY_BREAK
3578 /* General patterns matched in more than one element */
3579 case 2:
3581 #line 133 "../../../../OS/src/OSParsers/OSParseosol.l"
3582 {YY_PRINT; yylval->sval = yytext; return(QUOTE);}
3583  YY_BREAK
3584 case 3:
3586 #line 134 "../../../../OS/src/OSParsers/OSParseosol.l"
3587 {YY_PRINT; yylval->sval = yytext; return(TWOQUOTES);}
3588  YY_BREAK
3589 case 4:
3590 /* rule 4 can match eol */
3592 #line 135 "../../../../OS/src/OSParsers/OSParseosol.l"
3593 {YY_PRINT; return(GREATERTHAN);}
3594  YY_BREAK
3595 case 5:
3596 /* rule 5 can match eol */
3598 #line 136 "../../../../OS/src/OSParsers/OSParseosol.l"
3599 {YY_PRINT; yylval->ival = atoi(yytext); return(INTEGER);}
3600  YY_BREAK
3601 case 6:
3602 /* rule 6 can match eol */
3604 #line 138 "../../../../OS/src/OSParsers/OSParseosol.l"
3605 {YY_PRINT;
3606 char *yytextEnd;
3607 yylval->dval = os_strtod_wrap( yytext, &yytextEnd);
3608 return(DOUBLE);}
3609  YY_BREAK
3610 case 7:
3611 /* rule 7 can match eol */
3613 #line 143 "../../../../OS/src/OSParsers/OSParseosol.l"
3614 {YY_PRINT; return(ENDOFELEMENT);}
3615  YY_BREAK
3616 /* patterns for attributes returning strings (that are potentially empty)*/
3617 case 8:
3618 /* rule 8 can match eol */
3620 #line 147 "../../../../OS/src/OSParsers/OSParseosol.l"
3621 {YY_PRINT; return(EMPTYLBVALUEATT);}
3622  YY_BREAK
3623 case 9:
3624 /* rule 9 can match eol */
3626 #line 148 "../../../../OS/src/OSParsers/OSParseosol.l"
3627 {YY_PRINT; return(EMPTYLBVALUEATT);}
3628  YY_BREAK
3629 case 10:
3630 /* rule 10 can match eol */
3632 #line 149 "../../../../OS/src/OSParsers/OSParseosol.l"
3634  YY_BREAK
3635 case 11:
3636 /* rule 11 can match eol */
3638 #line 150 "../../../../OS/src/OSParsers/OSParseosol.l"
3640  YY_BREAK
3641 case 12:
3642 /* rule 12 can match eol */
3644 #line 152 "../../../../OS/src/OSParsers/OSParseosol.l"
3645 {YY_PRINT; return(EMPTYUBVALUEATT);}
3646  YY_BREAK
3647 case 13:
3648 /* rule 13 can match eol */
3650 #line 153 "../../../../OS/src/OSParsers/OSParseosol.l"
3651 {YY_PRINT; return(EMPTYUBVALUEATT);}
3652  YY_BREAK
3653 case 14:
3654 /* rule 14 can match eol */
3656 #line 154 "../../../../OS/src/OSParsers/OSParseosol.l"
3658  YY_BREAK
3659 case 15:
3660 /* rule 15 can match eol */
3662 #line 155 "../../../../OS/src/OSParsers/OSParseosol.l"
3664  YY_BREAK
3665 case 16:
3666 /* rule 16 can match eol */
3668 #line 157 "../../../../OS/src/OSParsers/OSParseosol.l"
3669 {YY_PRINT; return(EMPTYWEIGHTATT);}
3670  YY_BREAK
3671 case 17:
3672 /* rule 17 can match eol */
3674 #line 158 "../../../../OS/src/OSParsers/OSParseosol.l"
3675 {YY_PRINT; return(EMPTYWEIGHTATT);}
3676  YY_BREAK
3677 case 18:
3678 /* rule 18 can match eol */
3680 #line 159 "../../../../OS/src/OSParsers/OSParseosol.l"
3682  YY_BREAK
3683 case 19:
3684 /* rule 19 can match eol */
3686 #line 160 "../../../../OS/src/OSParsers/OSParseosol.l"
3688  YY_BREAK
3689 case 20:
3690 /* rule 20 can match eol */
3692 #line 162 "../../../../OS/src/OSParsers/OSParseosol.l"
3694  YY_BREAK
3695 case 21:
3696 /* rule 21 can match eol */
3698 #line 163 "../../../../OS/src/OSParsers/OSParseosol.l"
3700  YY_BREAK
3701 case 22:
3702 /* rule 22 can match eol */
3704 #line 164 "../../../../OS/src/OSParsers/OSParseosol.l"
3706  YY_BREAK
3707 case 23:
3708 /* rule 23 can match eol */
3710 #line 165 "../../../../OS/src/OSParsers/OSParseosol.l"
3712  YY_BREAK
3713 case 24:
3714 /* rule 24 can match eol */
3716 #line 166 "../../../../OS/src/OSParsers/OSParseosol.l"
3718  YY_BREAK
3719 case 25:
3720 /* rule 25 can match eol */
3722 #line 167 "../../../../OS/src/OSParsers/OSParseosol.l"
3724  YY_BREAK
3725 case 26:
3726 /* rule 26 can match eol */
3728 #line 169 "../../../../OS/src/OSParsers/OSParseosol.l"
3730  YY_BREAK
3731 case 27:
3732 /* rule 27 can match eol */
3734 #line 170 "../../../../OS/src/OSParsers/OSParseosol.l"
3736  YY_BREAK
3737 case 28:
3738 /* rule 28 can match eol */
3740 #line 172 "../../../../OS/src/OSParsers/OSParseosol.l"
3742  YY_BREAK
3743 case 29:
3744 /* rule 29 can match eol */
3746 #line 173 "../../../../OS/src/OSParsers/OSParseosol.l"
3748  YY_BREAK
3749 case 30:
3750 /* rule 30 can match eol */
3752 #line 175 "../../../../OS/src/OSParsers/OSParseosol.l"
3754  YY_BREAK
3755 case 31:
3756 /* rule 31 can match eol */
3758 #line 176 "../../../../OS/src/OSParsers/OSParseosol.l"
3760  YY_BREAK
3761 case 32:
3762 /* rule 32 can match eol */
3764 #line 177 "../../../../OS/src/OSParsers/OSParseosol.l"
3766  YY_BREAK
3767 case 33:
3768 /* rule 33 can match eol */
3770 #line 178 "../../../../OS/src/OSParsers/OSParseosol.l"
3772  YY_BREAK
3773 case 34:
3774 /* rule 34 can match eol */
3776 #line 179 "../../../../OS/src/OSParsers/OSParseosol.l"
3778  YY_BREAK
3779 case 35:
3780 /* rule 35 can match eol */
3782 #line 180 "../../../../OS/src/OSParsers/OSParseosol.l"
3784  YY_BREAK
3785 /* Patterns for attributes returning numeric values*/
3786 case 36:
3787 /* rule 36 can match eol */
3789 #line 184 "../../../../OS/src/OSParsers/OSParseosol.l"
3790 {YY_PRINT; return(NUMBEROFJOBIDSATT);}
3791  YY_BREAK
3792 case 37:
3793 /* rule 37 can match eol */
3795 #line 185 "../../../../OS/src/OSParsers/OSParseosol.l"
3797  YY_BREAK
3798 case 38:
3799 /* rule 38 can match eol */
3801 #line 186 "../../../../OS/src/OSParsers/OSParseosol.l"
3803  YY_BREAK
3804 case 39:
3805 /* rule 39 can match eol */
3807 #line 187 "../../../../OS/src/OSParsers/OSParseosol.l"
3809  YY_BREAK
3810 case 40:
3811 /* rule 40 can match eol */
3813 #line 188 "../../../../OS/src/OSParsers/OSParseosol.l"
3815  YY_BREAK
3816 case 41:
3817 /* rule 41 can match eol */
3819 #line 189 "../../../../OS/src/OSParsers/OSParseosol.l"
3820 {YY_PRINT; return(NUMBEROFPATHSATT);}
3821  YY_BREAK
3822 case 42:
3823 /* rule 42 can match eol */
3825 #line 190 "../../../../OS/src/OSParsers/OSParseosol.l"
3826 {YY_PRINT; return(NUMBEROFPATHPAIRSATT);}
3827  YY_BREAK
3828 case 43:
3829 /* rule 43 can match eol */
3831 #line 191 "../../../../OS/src/OSParsers/OSParseosol.l"
3832 {YY_PRINT; return(NUMBEROFPROCESSESATT);}
3833  YY_BREAK
3834 case 44:
3835 /* rule 44 can match eol */
3837 #line 192 "../../../../OS/src/OSParsers/OSParseosol.l"
3838 {YY_PRINT; return(NUMBEROFSOSATT);}
3839  YY_BREAK
3840 case 45:
3841 /* rule 45 can match eol */
3843 #line 193 "../../../../OS/src/OSParsers/OSParseosol.l"
3845  YY_BREAK
3846 case 46:
3847 /* rule 46 can match eol */
3849 #line 195 "../../../../OS/src/OSParsers/OSParseosol.l"
3850 {YY_PRINT; return(SOSIDXATT);}
3851  YY_BREAK
3852 case 47:
3853 /* rule 47 can match eol */
3855 #line 196 "../../../../OS/src/OSParsers/OSParseosol.l"
3856 {YY_PRINT; return(GROUPWEIGHTATT);}
3857  YY_BREAK
3858 case 48:
3859 /* rule 48 can match eol */
3861 #line 197 "../../../../OS/src/OSParsers/OSParseosol.l"
3862 {YY_PRINT; return(LBDUALVALUEATT);}
3863  YY_BREAK
3864 case 49:
3865 /* rule 49 can match eol */
3867 #line 198 "../../../../OS/src/OSParsers/OSParseosol.l"
3868 {YY_PRINT; return(UBDUALVALUEATT);}
3869  YY_BREAK
3870 /* Patterns for top level elements */
3871 case 50:
3872 /* rule 50 can match eol */
3874 #line 202 "../../../../OS/src/OSParsers/OSParseosol.l"
3875 {return(OSOLSTARTEMPTY);}
3876  YY_BREAK
3877 case 51:
3878 /* rule 51 can match eol */
3880 #line 203 "../../../../OS/src/OSParsers/OSParseosol.l"
3882  YY_BREAK
3883 case 52:
3884 /* rule 52 can match eol */
3886 #line 204 "../../../../OS/src/OSParsers/OSParseosol.l"
3887 {YY_PRINT; return(OSOLEND);}
3888  YY_BREAK
3889 case 53:
3890 /* rule 53 can match eol */
3892 #line 205 "../../../../OS/src/OSParsers/OSParseosol.l"
3893 {YY_PRINT; return(HEADERSTART);}
3894  YY_BREAK
3895 case 54:
3896 /* rule 54 can match eol */
3898 #line 206 "../../../../OS/src/OSParsers/OSParseosol.l"
3899 {YY_PRINT; return(HEADEREND);}
3900  YY_BREAK
3901 /* Patterns for the <general> element */
3902 case 55:
3903 /* rule 55 can match eol */
3905 #line 210 "../../../../OS/src/OSParsers/OSParseosol.l"
3906 {YY_PRINT; return(INSTANCELOCATIONSTART);}
3907  YY_BREAK
3908 case 56:
3909 /* rule 56 can match eol */
3911 #line 211 "../../../../OS/src/OSParsers/OSParseosol.l"
3912 {YY_PRINT; return(INSTANCELOCATIONEND);}
3913  YY_BREAK
3914 case 57:
3915 /* rule 57 can match eol */
3917 #line 212 "../../../../OS/src/OSParsers/OSParseosol.l"
3918 {YY_PRINT; return(SOLVERTOINVOKESTART);}
3919  YY_BREAK
3920 case 58:
3921 /* rule 58 can match eol */
3923 #line 213 "../../../../OS/src/OSParsers/OSParseosol.l"
3924 {YY_PRINT; return(SOLVERTOINVOKEEND);}
3925  YY_BREAK
3926 case 59:
3927 /* rule 59 can match eol */
3929 #line 214 "../../../../OS/src/OSParsers/OSParseosol.l"
3930 {YY_PRINT; return(LICENSESTART);}
3931  YY_BREAK
3932 case 60:
3933 /* rule 60 can match eol */
3935 #line 215 "../../../../OS/src/OSParsers/OSParseosol.l"
3936 {YY_PRINT; return(LICENSEEND);}
3937  YY_BREAK
3938 case 61:
3939 /* rule 61 can match eol */
3941 #line 216 "../../../../OS/src/OSParsers/OSParseosol.l"
3942 {YY_PRINT; return(USERNAMESTART);}
3943  YY_BREAK
3944 case 62:
3945 /* rule 62 can match eol */
3947 #line 217 "../../../../OS/src/OSParsers/OSParseosol.l"
3948 {YY_PRINT; return(USERNAMEEND);}
3949  YY_BREAK
3950 case 63:
3951 /* rule 63 can match eol */
3953 #line 218 "../../../../OS/src/OSParsers/OSParseosol.l"
3954 {YY_PRINT; return(PASSWORDSTART);}
3955  YY_BREAK
3956 case 64:
3957 /* rule 64 can match eol */
3959 #line 219 "../../../../OS/src/OSParsers/OSParseosol.l"
3960 {YY_PRINT; return(PASSWORDEND);}
3961  YY_BREAK
3962 case 65:
3963 /* rule 65 can match eol */
3965 #line 220 "../../../../OS/src/OSParsers/OSParseosol.l"
3966 {YY_PRINT; return(CONTACTSTART);}
3967  YY_BREAK
3968 case 66:
3969 /* rule 66 can match eol */
3971 #line 221 "../../../../OS/src/OSParsers/OSParseosol.l"
3972 {YY_PRINT; return(CONTACTEND);}
3973  YY_BREAK
3974 /* Patterns for the <system> element */
3975 case 67:
3976 /* rule 67 can match eol */
3978 #line 225 "../../../../OS/src/OSParsers/OSParseosol.l"
3979 {YY_PRINT; return(MINDISKSPACESTART);}
3980  YY_BREAK
3981 case 68:
3982 /* rule 68 can match eol */
3984 #line 226 "../../../../OS/src/OSParsers/OSParseosol.l"
3985 {YY_PRINT; return(MINDISKSPACEEND);}
3986  YY_BREAK
3987 case 69:
3988 /* rule 69 can match eol */
3990 #line 227 "../../../../OS/src/OSParsers/OSParseosol.l"
3991 {YY_PRINT; return(MINMEMORYSTART);}
3992  YY_BREAK
3993 case 70:
3994 /* rule 70 can match eol */
3996 #line 228 "../../../../OS/src/OSParsers/OSParseosol.l"
3997 {YY_PRINT; return(MINMEMORYEND);}
3998  YY_BREAK
3999 case 71:
4000 /* rule 71 can match eol */
4002 #line 229 "../../../../OS/src/OSParsers/OSParseosol.l"
4003 {YY_PRINT; return(MINCPUSPEEDSTART);}
4004  YY_BREAK
4005 case 72:
4006 /* rule 72 can match eol */
4008 #line 230 "../../../../OS/src/OSParsers/OSParseosol.l"
4009 {YY_PRINT; return(MINCPUSPEEDEND);}
4010  YY_BREAK
4011 case 73:
4012 /* rule 73 can match eol */
4014 #line 231 "../../../../OS/src/OSParsers/OSParseosol.l"
4015 {YY_PRINT; return(MINCPUNUMBERSTART);}
4016  YY_BREAK
4017 case 74:
4018 /* rule 74 can match eol */
4020 #line 232 "../../../../OS/src/OSParsers/OSParseosol.l"
4021 {YY_PRINT; return(MINCPUNUMBEREND);}
4022  YY_BREAK
4023 /* Patterns for the <service> element */
4024 case 75:
4025 /* rule 75 can match eol */
4027 #line 236 "../../../../OS/src/OSParsers/OSParseosol.l"
4028 {YY_PRINT; return(SERVICETYPESTART);}
4029  YY_BREAK
4030 case 76:
4031 /* rule 76 can match eol */
4033 #line 237 "../../../../OS/src/OSParsers/OSParseosol.l"
4034 {YY_PRINT; return(SERVICETYPEEND);}
4035  YY_BREAK
4036 /* Patterns for the <job> element */
4037 case 77:
4038 /* rule 77 can match eol */
4040 #line 241 "../../../../OS/src/OSParsers/OSParseosol.l"
4041 {YY_PRINT; return(MAXTIMESTART);}
4042  YY_BREAK
4043 case 78:
4044 /* rule 78 can match eol */
4046 #line 242 "../../../../OS/src/OSParsers/OSParseosol.l"
4047 {YY_PRINT; return(MAXTIMEEND);}
4048  YY_BREAK
4049 case 79:
4050 /* rule 79 can match eol */
4052 #line 243 "../../../../OS/src/OSParsers/OSParseosol.l"
4054  YY_BREAK
4055 case 80:
4056 /* rule 80 can match eol */
4058 #line 244 "../../../../OS/src/OSParsers/OSParseosol.l"
4059 {YY_PRINT; return(REQUESTEDSTARTTIMEEND);}
4060  YY_BREAK
4061 case 81:
4062 /* rule 81 can match eol */
4064 #line 245 "../../../../OS/src/OSParsers/OSParseosol.l"
4065 {YY_PRINT; return(DEPENDENCIESSTART);}
4066  YY_BREAK
4067 case 82:
4068 /* rule 82 can match eol */
4070 #line 246 "../../../../OS/src/OSParsers/OSParseosol.l"
4071 {YY_PRINT; return(DEPENDENCIESEND);}
4072  YY_BREAK
4073 case 83:
4074 /* rule 83 can match eol */
4076 #line 247 "../../../../OS/src/OSParsers/OSParseosol.l"
4078  YY_BREAK
4079 case 84:
4080 /* rule 84 can match eol */
4082 #line 248 "../../../../OS/src/OSParsers/OSParseosol.l"
4083 {YY_PRINT; return(REQUIREDDIRECTORIESEND);}
4084  YY_BREAK
4085 case 85:
4086 /* rule 85 can match eol */
4088 #line 249 "../../../../OS/src/OSParsers/OSParseosol.l"
4089 {YY_PRINT; return(PATHSTART);}
4090  YY_BREAK
4091 case 86:
4092 /* rule 86 can match eol */
4094 #line 250 "../../../../OS/src/OSParsers/OSParseosol.l"
4095 {YY_PRINT; return(PATHEND);}
4096  YY_BREAK
4097 case 87:
4098 /* rule 87 can match eol */
4100 #line 251 "../../../../OS/src/OSParsers/OSParseosol.l"
4101 {YY_PRINT; return(REQUIREDFILESSTART);}
4102  YY_BREAK
4103 case 88:
4104 /* rule 88 can match eol */
4106 #line 252 "../../../../OS/src/OSParsers/OSParseosol.l"
4107 {YY_PRINT; return(REQUIREDFILESEND);}
4108  YY_BREAK
4109 case 89:
4110 /* rule 89 can match eol */
4112 #line 253 "../../../../OS/src/OSParsers/OSParseosol.l"
4113 {YY_PRINT; return(DIRECTORIESTOMAKESTART);}
4114  YY_BREAK
4115 case 90:
4116 /* rule 90 can match eol */
4118 #line 254 "../../../../OS/src/OSParsers/OSParseosol.l"
4119 {YY_PRINT; return(DIRECTORIESTOMAKEEND);}
4120  YY_BREAK
4121 case 91:
4122 /* rule 91 can match eol */
4124 #line 255 "../../../../OS/src/OSParsers/OSParseosol.l"
4125 {YY_PRINT; return(FILESTOMAKESTART);}
4126  YY_BREAK
4127 case 92:
4128 /* rule 92 can match eol */
4130 #line 256 "../../../../OS/src/OSParsers/OSParseosol.l"
4131 {YY_PRINT; return(FILESTOMAKEEND);}
4132  YY_BREAK
4133 case 93:
4134 /* rule 93 can match eol */
4136 #line 257 "../../../../OS/src/OSParsers/OSParseosol.l"
4138  YY_BREAK
4139 case 94:
4140 /* rule 94 can match eol */
4142 #line 258 "../../../../OS/src/OSParsers/OSParseosol.l"
4144  YY_BREAK
4145 case 95:
4146 /* rule 95 can match eol */
4148 #line 259 "../../../../OS/src/OSParsers/OSParseosol.l"
4149 {YY_PRINT; return(INPUTFILESTOMOVESTART);}
4150  YY_BREAK
4151 case 96:
4152 /* rule 96 can match eol */
4154 #line 260 "../../../../OS/src/OSParsers/OSParseosol.l"
4155 {YY_PRINT; return(INPUTFILESTOMOVEEND);}
4156  YY_BREAK
4157 case 97:
4158 /* rule 97 can match eol */
4160 #line 261 "../../../../OS/src/OSParsers/OSParseosol.l"
4161 {YY_PRINT; return(PATHPAIRSTART);}
4162  YY_BREAK
4163 case 98:
4164 /* rule 98 can match eol */
4166 #line 262 "../../../../OS/src/OSParsers/OSParseosol.l"
4167 {YY_PRINT; return(PATHPAIREND);}
4168  YY_BREAK
4169 case 99:
4170 /* rule 99 can match eol */
4172 #line 263 "../../../../OS/src/OSParsers/OSParseosol.l"
4174  YY_BREAK
4175 case 100:
4176 /* rule 100 can match eol */
4178 #line 264 "../../../../OS/src/OSParsers/OSParseosol.l"
4180  YY_BREAK
4181 case 101:
4182 /* rule 101 can match eol */
4184 #line 265 "../../../../OS/src/OSParsers/OSParseosol.l"
4185 {YY_PRINT; return(OUTPUTFILESTOMOVESTART);}
4186  YY_BREAK
4187 case 102:
4188 /* rule 102 can match eol */
4190 #line 266 "../../../../OS/src/OSParsers/OSParseosol.l"
4191 {YY_PRINT; return(OUTPUTFILESTOMOVEEND);}
4192  YY_BREAK
4193 case 103:
4194 /* rule 103 can match eol */
4196 #line 267 "../../../../OS/src/OSParsers/OSParseosol.l"
4198  YY_BREAK
4199 case 104:
4200 /* rule 104 can match eol */
4202 #line 268 "../../../../OS/src/OSParsers/OSParseosol.l"
4203 {YY_PRINT; return(DIRECTORIESTODELETEEND);}
4204  YY_BREAK
4205 case 105:
4206 /* rule 105 can match eol */
4208 #line 269 "../../../../OS/src/OSParsers/OSParseosol.l"
4209 {YY_PRINT; return(FILESTODELETESTART);}
4210  YY_BREAK
4211 case 106:
4212 /* rule 106 can match eol */
4214 #line 270 "../../../../OS/src/OSParsers/OSParseosol.l"
4215 {YY_PRINT; return(FILESTODELETEEND);}
4216  YY_BREAK
4217 case 107:
4218 /* rule 107 can match eol */
4220 #line 271 "../../../../OS/src/OSParsers/OSParseosol.l"
4221 {YY_PRINT; return(PROCESSESTOKILLSTART);}
4222  YY_BREAK
4223 case 108:
4224 /* rule 108 can match eol */
4226 #line 272 "../../../../OS/src/OSParsers/OSParseosol.l"
4227 {YY_PRINT; return(PROCESSESTOKILLEND);}
4228  YY_BREAK
4229 case 109:
4230 /* rule 109 can match eol */
4232 #line 273 "../../../../OS/src/OSParsers/OSParseosol.l"
4233 {YY_PRINT; return(PROCESSSTART);}
4234  YY_BREAK
4235 case 110:
4236 /* rule 110 can match eol */
4238 #line 274 "../../../../OS/src/OSParsers/OSParseosol.l"
4239 {YY_PRINT; return(PROCESSEND);}
4240  YY_BREAK
4241 /* Patterns for the <optimization> element */
4242 case 111:
4243 /* rule 111 can match eol */
4245 #line 278 "../../../../OS/src/OSParsers/OSParseosol.l"
4247  YY_BREAK
4248 case 112:
4249 /* rule 112 can match eol */
4251 #line 279 "../../../../OS/src/OSParsers/OSParseosol.l"
4253  YY_BREAK
4254 case 113:
4255 /* rule 113 can match eol */
4257 #line 280 "../../../../OS/src/OSParsers/OSParseosol.l"
4259  YY_BREAK
4260 case 114:
4261 /* rule 114 can match eol */
4263 #line 281 "../../../../OS/src/OSParsers/OSParseosol.l"
4265  YY_BREAK
4266 case 115:
4267 /* rule 115 can match eol */
4269 #line 282 "../../../../OS/src/OSParsers/OSParseosol.l"
4271  YY_BREAK
4272 case 116:
4273 /* rule 116 can match eol */
4275 #line 283 "../../../../OS/src/OSParsers/OSParseosol.l"
4276 {YY_PRINT; return(INITIALBASISSTATUSEND);}
4277  YY_BREAK
4278 case 117:
4279 /* rule 117 can match eol */
4281 #line 284 "../../../../OS/src/OSParsers/OSParseosol.l"
4283  YY_BREAK
4284 case 118:
4285 /* rule 118 can match eol */
4287 #line 285 "../../../../OS/src/OSParsers/OSParseosol.l"
4289  YY_BREAK
4290 case 119:
4291 /* rule 119 can match eol */
4293 #line 286 "../../../../OS/src/OSParsers/OSParseosol.l"
4295  YY_BREAK
4296 case 120:
4297 /* rule 120 can match eol */
4299 #line 287 "../../../../OS/src/OSParsers/OSParseosol.l"
4301  YY_BREAK
4302 case 121:
4303 /* rule 121 can match eol */
4305 #line 288 "../../../../OS/src/OSParsers/OSParseosol.l"
4306 {YY_PRINT; return(SOSSTART);}
4307  YY_BREAK
4308 case 122:
4309 /* rule 122 can match eol */
4311 #line 289 "../../../../OS/src/OSParsers/OSParseosol.l"
4312 {YY_PRINT; return(SOSEND);}
4313  YY_BREAK
4314 case 123:
4315 /* rule 123 can match eol */
4317 #line 290 "../../../../OS/src/OSParsers/OSParseosol.l"
4319  YY_BREAK
4320 case 124:
4321 /* rule 124 can match eol */
4323 #line 291 "../../../../OS/src/OSParsers/OSParseosol.l"
4325  YY_BREAK
4326 case 125:
4327 /* rule 125 can match eol */
4329 #line 292 "../../../../OS/src/OSParsers/OSParseosol.l"
4331  YY_BREAK
4332 case 126:
4333 /* rule 126 can match eol */
4335 #line 293 "../../../../OS/src/OSParsers/OSParseosol.l"
4337  YY_BREAK
4338 case 127:
4339 /* rule 127 can match eol */
4341 #line 294 "../../../../OS/src/OSParsers/OSParseosol.l"
4343  YY_BREAK
4344 case 128:
4345 /* rule 128 can match eol */
4347 #line 295 "../../../../OS/src/OSParsers/OSParseosol.l"
4349  YY_BREAK
4350 case 129:
4351 /* rule 129 can match eol */
4353 #line 296 "../../../../OS/src/OSParsers/OSParseosol.l"
4354 {YY_PRINT; return(INITIALDUALVALUESSTART);}
4355  YY_BREAK
4356 case 130:
4357 /* rule 130 can match eol */
4359 #line 297 "../../../../OS/src/OSParsers/OSParseosol.l"
4360 {YY_PRINT; return(INITIALDUALVALUESEND);}
4361  YY_BREAK
4362 case 131:
4363 /* rule 131 can match eol */
4365 #line 298 "../../../../OS/src/OSParsers/OSParseosol.l"
4366 {YY_PRINT; return(SOLVEROPTIONSSTART);}
4367  YY_BREAK
4368 case 132:
4369 /* rule 132 can match eol */
4371 #line 299 "../../../../OS/src/OSParsers/OSParseosol.l"
4372 {YY_PRINT; return(SOLVEROPTIONSEND);}
4373  YY_BREAK
4374 case 133:
4375 /* rule 133 can match eol */
4377 #line 300 "../../../../OS/src/OSParsers/OSParseosol.l"
4378 {YY_PRINT; return(SOLVEROPTIONSTART);}
4379  YY_BREAK
4380 case 134:
4381 /* rule 134 can match eol */
4383 #line 301 "../../../../OS/src/OSParsers/OSParseosol.l"
4384 {YY_PRINT; return(SOLVEROPTIONEND);}
4385  YY_BREAK
4386 case 135:
4387 /* rule 135 can match eol */
4389 #line 302 "../../../../OS/src/OSParsers/OSParseosol.l"
4390 {YY_PRINT; return(OTHEROPTIONSSTART);}
4391  YY_BREAK
4392 case 136:
4393 /* rule 136 can match eol */
4395 #line 303 "../../../../OS/src/OSParsers/OSParseosol.l"
4396 {YY_PRINT; return(OTHEROPTIONSEND);}
4397  YY_BREAK
4398 /* include file OSParseosgl.l.patterns --- patterns for OSgL schema elements */
4399 case 137:
4400 /* rule 137 can match eol */
4402 #line 307 "../../../../OS/src/OSParsers/OSParseosol.l"
4403 {YY_PRINT; return(BASE64START);}
4404  YY_BREAK
4405 case 138:
4406 /* rule 138 can match eol */
4408 #line 308 "../../../../OS/src/OSParsers/OSParseosol.l"
4409 {YY_PRINT; return(BASE64END);}
4410  YY_BREAK
4411 case 139:
4412 /* rule 139 can match eol */
4414 #line 309 "../../../../OS/src/OSParsers/OSParseosol.l"
4415 {YY_PRINT; return(ELSTART);}
4416  YY_BREAK
4417 case 140:
4418 /* rule 140 can match eol */
4420 #line 310 "../../../../OS/src/OSParsers/OSParseosol.l"
4421 {YY_PRINT; return(ELEND);}
4422  YY_BREAK
4423 /* The <item> element and the children of the file header element are treated specially
4424  because they may legitimately contain special characters */
4425 case 141:
4426 /* rule 141 can match eol */
4428 #line 315 "../../../../OS/src/OSParsers/OSParseosol.l"
4429 { YY_PRINT; return(ITEMEMPTY);}
4430  YY_BREAK
4431 case 142:
4432 /* rule 142 can match eol */
4434 #line 316 "../../../../OS/src/OSParsers/OSParseosol.l"
4435 { YY_PRINT; BEGIN itemtext; return(ITEMSTART);}
4436  YY_BREAK
4437 case 143:
4438 /* rule 143 can match eol */
4440 #line 317 "../../../../OS/src/OSParsers/OSParseosol.l"
4441 { YY_PRINT; return(ITEMEND);}
4442  YY_BREAK
4443 case 144:
4444 /* rule 144 can match eol */
4446 #line 318 "../../../../OS/src/OSParsers/OSParseosol.l"
4447 { YY_PRINT; return(ITEMSTARTANDEND);}
4448  YY_BREAK
4449 case 145:
4450 /* rule 145 can match eol */
4452 #line 320 "../../../../OS/src/OSParsers/OSParseosol.l"
4453 { YY_PRINT; return(FILENAMEEMPTY);}
4454  YY_BREAK
4455 case 146:
4456 /* rule 146 can match eol */
4458 #line 321 "../../../../OS/src/OSParsers/OSParseosol.l"
4459 { YY_PRINT; BEGIN itemtext; return(FILENAMESTART);}
4460  YY_BREAK
4461 case 147:
4462 /* rule 147 can match eol */
4464 #line 322 "../../../../OS/src/OSParsers/OSParseosol.l"
4465 { YY_PRINT; return(FILENAMEEND);}
4466  YY_BREAK
4467 case 148:
4468 /* rule 148 can match eol */
4470 #line 323 "../../../../OS/src/OSParsers/OSParseosol.l"
4471 { YY_PRINT; return(FILENAMESTARTANDEND);}
4472  YY_BREAK
4473 case 149:
4474 /* rule 149 can match eol */
4476 #line 325 "../../../../OS/src/OSParsers/OSParseosol.l"
4477 { YY_PRINT; return(FILESOURCEEMPTY);}
4478  YY_BREAK
4479 case 150:
4480 /* rule 150 can match eol */
4482 #line 326 "../../../../OS/src/OSParsers/OSParseosol.l"
4483 { YY_PRINT; BEGIN itemtext; return(FILESOURCESTART);}
4484  YY_BREAK
4485 case 151:
4486 /* rule 151 can match eol */
4488 #line 327 "../../../../OS/src/OSParsers/OSParseosol.l"
4489 { YY_PRINT; return(FILESOURCEEND);}
4490  YY_BREAK
4491 case 152:
4492 /* rule 152 can match eol */
4494 #line 328 "../../../../OS/src/OSParsers/OSParseosol.l"
4495 { YY_PRINT; return(FILESOURCESTARTANDEND);}
4496  YY_BREAK
4497 case 153:
4498 /* rule 153 can match eol */
4500 #line 330 "../../../../OS/src/OSParsers/OSParseosol.l"
4501 { YY_PRINT; return(FILEDESCRIPTIONEMPTY);}
4502  YY_BREAK
4503 case 154:
4504 /* rule 154 can match eol */
4506 #line 331 "../../../../OS/src/OSParsers/OSParseosol.l"
4508  YY_BREAK
4509 case 155:
4510 /* rule 155 can match eol */
4512 #line 332 "../../../../OS/src/OSParsers/OSParseosol.l"
4513 { YY_PRINT; return(FILEDESCRIPTIONEND);}
4514  YY_BREAK
4515 case 156:
4516 /* rule 156 can match eol */
4518 #line 333 "../../../../OS/src/OSParsers/OSParseosol.l"
4520  YY_BREAK
4521 case 157:
4522 /* rule 157 can match eol */
4524 #line 335 "../../../../OS/src/OSParsers/OSParseosol.l"
4525 { YY_PRINT; return(FILECREATOREMPTY);}
4526  YY_BREAK
4527 case 158:
4528 /* rule 158 can match eol */
4530 #line 336 "../../../../OS/src/OSParsers/OSParseosol.l"
4532  YY_BREAK
4533 case 159:
4534 /* rule 159 can match eol */
4536 #line 337 "../../../../OS/src/OSParsers/OSParseosol.l"
4537 { YY_PRINT; return(FILECREATOREND);}
4538  YY_BREAK
4539 case 160:
4540 /* rule 160 can match eol */
4542 #line 338 "../../../../OS/src/OSParsers/OSParseosol.l"
4543 { YY_PRINT; return(FILECREATORSTARTANDEND);}
4544  YY_BREAK
4545 case 161:
4546 /* rule 161 can match eol */
4548 #line 340 "../../../../OS/src/OSParsers/OSParseosol.l"
4549 { YY_PRINT; return(FILELICENCEEMPTY);}
4550  YY_BREAK
4551 case 162:
4552 /* rule 162 can match eol */
4554 #line 341 "../../../../OS/src/OSParsers/OSParseosol.l"
4556  YY_BREAK
4557 case 163:
4558 /* rule 163 can match eol */
4560 #line 342 "../../../../OS/src/OSParsers/OSParseosol.l"
4561 { YY_PRINT; return(FILELICENCEEND);}
4562  YY_BREAK
4563 case 164:
4564 /* rule 164 can match eol */
4566 #line 343 "../../../../OS/src/OSParsers/OSParseosol.l"
4567 { YY_PRINT; return(FILELICENCESTARTANDEND);}
4568  YY_BREAK
4569 /* Patterns for attributes returning strings (that are potentially empty)*/
4570 case 165:
4571 /* rule 165 can match eol */
4573 #line 347 "../../../../OS/src/OSParsers/OSParseosol.l"
4574 {YY_PRINT; return(EMPTYBASETRANSPOSEATT);}
4575  YY_BREAK
4576 case 166:
4577 /* rule 166 can match eol */
4579 #line 348 "../../../../OS/src/OSParsers/OSParseosol.l"
4580 {YY_PRINT; return(EMPTYBASETRANSPOSEATT);}
4581  YY_BREAK
4582 case 167:
4583 /* rule 167 can match eol */
4585 #line 349 "../../../../OS/src/OSParsers/OSParseosol.l"
4587  YY_BREAK
4588 case 168:
4589 /* rule 168 can match eol */
4591 #line 350 "../../../../OS/src/OSParsers/OSParseosol.l"
4593  YY_BREAK
4594 case 169:
4595 /* rule 169 can match eol */
4597 #line 352 "../../../../OS/src/OSParsers/OSParseosol.l"
4598 {YY_PRINT; return(EMPTYCATEGORYATT);}
4599  YY_BREAK
4600 case 170:
4601 /* rule 170 can match eol */
4603 #line 353 "../../../../OS/src/OSParsers/OSParseosol.l"
4604 {YY_PRINT; return(EMPTYCATEGORYATT);}
4605  YY_BREAK
4606 case 171:
4607 /* rule 171 can match eol */
4609 #line 354 "../../../../OS/src/OSParsers/OSParseosol.l"
4611  YY_BREAK
4612 case 172:
4613 /* rule 172 can match eol */
4615 #line 355 "../../../../OS/src/OSParsers/OSParseosol.l"
4617  YY_BREAK
4618 case 173:
4619 /* rule 173 can match eol */
4621 #line 357 "../../../../OS/src/OSParsers/OSParseosol.l"
4622 {YY_PRINT; return(EMPTYCONTYPEATT);}
4623  YY_BREAK
4624 case 174:
4625 /* rule 174 can match eol */
4627 #line 358 "../../../../OS/src/OSParsers/OSParseosol.l"
4628 {YY_PRINT; return(EMPTYCONTYPEATT);}
4629  YY_BREAK
4630 case 175:
4631 /* rule 175 can match eol */
4633 #line 359 "../../../../OS/src/OSParsers/OSParseosol.l"
4635  YY_BREAK
4636 case 176:
4637 /* rule 176 can match eol */
4639 #line 360 "../../../../OS/src/OSParsers/OSParseosol.l"
4641  YY_BREAK
4642 case 177:
4643 /* rule 177 can match eol */
4645 #line 362 "../../../../OS/src/OSParsers/OSParseosol.l"
4646 {YY_PRINT; return(EMPTYDESCRIPTIONATT);}
4647  YY_BREAK
4648 case 178:
4649 /* rule 178 can match eol */
4651 #line 363 "../../../../OS/src/OSParsers/OSParseosol.l"
4652 {YY_PRINT; return(EMPTYDESCRIPTIONATT);}
4653  YY_BREAK
4654 case 179:
4655 /* rule 179 can match eol */
4657 #line 364 "../../../../OS/src/OSParsers/OSParseosol.l"
4659  YY_BREAK
4660 case 180:
4661 /* rule 180 can match eol */
4663 #line 365 "../../../../OS/src/OSParsers/OSParseosol.l"
4665  YY_BREAK
4666 case 181:
4667 /* rule 181 can match eol */
4669 #line 367 "../../../../OS/src/OSParsers/OSParseosol.l"
4670 {YY_PRINT; return(EMPTYENUMTYPEATT);}
4671  YY_BREAK
4672 case 182:
4673 /* rule 182 can match eol */
4675 #line 368 "../../../../OS/src/OSParsers/OSParseosol.l"
4676 {YY_PRINT; return(EMPTYENUMTYPEATT);}
4677  YY_BREAK
4678 case 183:
4679 /* rule 183 can match eol */
4681 #line 369 "../../../../OS/src/OSParsers/OSParseosol.l"
4683  YY_BREAK
4684 case 184:
4685 /* rule 184 can match eol */
4687 #line 370 "../../../../OS/src/OSParsers/OSParseosol.l"
4689  YY_BREAK
4690 case 185:
4691 /* rule 185 can match eol */
4693 #line 372 "../../../../OS/src/OSParsers/OSParseosol.l"
4694 {YY_PRINT; return(EMPTYMATRIXCONTYPEATT);}
4695  YY_BREAK
4696 case 186:
4697 /* rule 186 can match eol */
4699 #line 373 "../../../../OS/src/OSParsers/OSParseosol.l"
4700 {YY_PRINT; return(EMPTYMATRIXCONTYPEATT);}
4701  YY_BREAK
4702 case 187:
4703 /* rule 187 can match eol */
4705 #line 374 "../../../../OS/src/OSParsers/OSParseosol.l"
4707  YY_BREAK
4708 case 188:
4709 /* rule 188 can match eol */
4711 #line 375 "../../../../OS/src/OSParsers/OSParseosol.l"
4713  YY_BREAK
4714 case 189:
4715 /* rule 189 can match eol */
4717 #line 377 "../../../../OS/src/OSParsers/OSParseosol.l"
4718 {YY_PRINT; return(EMPTYMATRIXOBJTYPEATT);}
4719  YY_BREAK
4720 case 190:
4721 /* rule 190 can match eol */
4723 #line 378 "../../../../OS/src/OSParsers/OSParseosol.l"
4724 {YY_PRINT; return(EMPTYMATRIXOBJTYPEATT);}
4725  YY_BREAK
4726 case 191:
4727 /* rule 191 can match eol */
4729 #line 379 "../../../../OS/src/OSParsers/OSParseosol.l"
4731  YY_BREAK
4732 case 192:
4733 /* rule 192 can match eol */
4735 #line 380 "../../../../OS/src/OSParsers/OSParseosol.l"
4737  YY_BREAK
4738 case 193:
4739 /* rule 193 can match eol */
4741 #line 382 "../../../../OS/src/OSParsers/OSParseosol.l"
4742 {YY_PRINT; return(EMPTYMATRIXTYPEATT);}
4743  YY_BREAK
4744 case 194:
4745 /* rule 194 can match eol */
4747 #line 383 "../../../../OS/src/OSParsers/OSParseosol.l"
4748 {YY_PRINT; return(EMPTYMATRIXTYPEATT);}
4749  YY_BREAK
4750 case 195:
4751 /* rule 195 can match eol */
4753 #line 384 "../../../../OS/src/OSParsers/OSParseosol.l"
4755  YY_BREAK
4756 case 196:
4757 /* rule 196 can match eol */
4759 #line 385 "../../../../OS/src/OSParsers/OSParseosol.l"
4761  YY_BREAK
4762 case 197:
4763 /* rule 197 can match eol */
4765 #line 387 "../../../../OS/src/OSParsers/OSParseosol.l"
4766 {YY_PRINT; return(EMPTYMATRIXVARTYPEATT);}
4767  YY_BREAK
4768 case 198:
4769 /* rule 198 can match eol */
4771 #line 388 "../../../../OS/src/OSParsers/OSParseosol.l"
4772 {YY_PRINT; return(EMPTYMATRIXVARTYPEATT);}
4773  YY_BREAK
4774 case 199:
4775 /* rule 199 can match eol */
4777 #line 389 "../../../../OS/src/OSParsers/OSParseosol.l"
4779  YY_BREAK
4780 case 200:
4781 /* rule 200 can match eol */
4783 #line 390 "../../../../OS/src/OSParsers/OSParseosol.l"
4785  YY_BREAK
4786 case 201:
4787 /* rule 201 can match eol */
4789 #line 392 "../../../../OS/src/OSParsers/OSParseosol.l"
4790 {YY_PRINT; return(EMPTYNAMEATT);}
4791  YY_BREAK
4792 case 202:
4793 /* rule 202 can match eol */
4795 #line 393 "../../../../OS/src/OSParsers/OSParseosol.l"
4796 {YY_PRINT; return(EMPTYNAMEATT);}
4797  YY_BREAK
4798 case 203:
4799 /* rule 203 can match eol */
4801 #line 394 "../../../../OS/src/OSParsers/OSParseosol.l"
4803  YY_BREAK
4804 case 204:
4805 /* rule 204 can match eol */
4807 #line 395 "../../../../OS/src/OSParsers/OSParseosol.l"
4809  YY_BREAK
4810 case 205:
4811 /* rule 205 can match eol */
4813 #line 397 "../../../../OS/src/OSParsers/OSParseosol.l"
4814 {YY_PRINT; return(EMPTYOBJTYPEATT);}
4815  YY_BREAK
4816 case 206:
4817 /* rule 206 can match eol */
4819 #line 398 "../../../../OS/src/OSParsers/OSParseosol.l"
4820 {YY_PRINT; return(EMPTYOBJTYPEATT);}
4821  YY_BREAK
4822 case 207:
4823 /* rule 207 can match eol */
4825 #line 399 "../../../../OS/src/OSParsers/OSParseosol.l"
4827  YY_BREAK
4828 case 208:
4829 /* rule 208 can match eol */
4831 #line 400 "../../../../OS/src/OSParsers/OSParseosol.l"
4833  YY_BREAK
4834 case 209:
4835 /* rule 209 can match eol */
4837 #line 402 "../../../../OS/src/OSParsers/OSParseosol.l"
4838 {YY_PRINT; return(EMPTYROWMAJORATT);}
4839  YY_BREAK
4840 case 210:
4841 /* rule 210 can match eol */
4843 #line 403 "../../../../OS/src/OSParsers/OSParseosol.l"
4844 {YY_PRINT; return(EMPTYROWMAJORATT);}
4845  YY_BREAK
4846 case 211:
4847 /* rule 211 can match eol */
4849 #line 404 "../../../../OS/src/OSParsers/OSParseosol.l"
4851  YY_BREAK
4852 case 212:
4853 /* rule 212 can match eol */
4855 #line 405 "../../../../OS/src/OSParsers/OSParseosol.l"
4857  YY_BREAK
4858 case 213:
4859 /* rule 213 can match eol */
4861 #line 407 "../../../../OS/src/OSParsers/OSParseosol.l"
4862 {YY_PRINT; return(EMPTYSHAPEATT);}
4863  YY_BREAK
4864 case 214:
4865 /* rule 214 can match eol */
4867 #line 408 "../../../../OS/src/OSParsers/OSParseosol.l"
4868 {YY_PRINT; return(EMPTYSHAPEATT);}
4869  YY_BREAK
4870 case 215:
4871 /* rule 215 can match eol */
4873 #line 409 "../../../../OS/src/OSParsers/OSParseosol.l"
4875  YY_BREAK
4876 case 216:
4877 /* rule 216 can match eol */
4879 #line 410 "../../../../OS/src/OSParsers/OSParseosol.l"
4881  YY_BREAK
4882 case 217:
4883 /* rule 217 can match eol */
4885 #line 412 "../../../../OS/src/OSParsers/OSParseosol.l"
4886 {YY_PRINT; return(EMPTYSOLVERATT);}
4887  YY_BREAK
4888 case 218:
4889 /* rule 218 can match eol */
4891 #line 413 "../../../../OS/src/OSParsers/OSParseosol.l"
4892 {YY_PRINT; return(EMPTYSOLVERATT);}
4893  YY_BREAK
4894 case 219:
4895 /* rule 219 can match eol */
4897 #line 414 "../../../../OS/src/OSParsers/OSParseosol.l"
4899  YY_BREAK
4900 case 220:
4901 /* rule 220 can match eol */
4903 #line 415 "../../../../OS/src/OSParsers/OSParseosol.l"
4905  YY_BREAK
4906 case 221:
4907 /* rule 221 can match eol */
4909 #line 417 "../../../../OS/src/OSParsers/OSParseosol.l"
4910 {YY_PRINT; return(EMPTYSYMMETRYATT);}
4911  YY_BREAK
4912 case 222:
4913 /* rule 222 can match eol */
4915 #line 418 "../../../../OS/src/OSParsers/OSParseosol.l"
4916 {YY_PRINT; return(EMPTYSYMMETRYATT);}
4917  YY_BREAK
4918 case 223:
4919 /* rule 223 can match eol */
4921 #line 419 "../../../../OS/src/OSParsers/OSParseosol.l"
4923  YY_BREAK
4924 case 224:
4925 /* rule 224 can match eol */
4927 #line 420 "../../../../OS/src/OSParsers/OSParseosol.l"
4929  YY_BREAK
4930 case 225:
4931 /* rule 225 can match eol */
4933 #line 422 "../../../../OS/src/OSParsers/OSParseosol.l"
4934 {YY_PRINT; return(EMPTYTYPEATT);}
4935  YY_BREAK
4936 case 226:
4937 /* rule 226 can match eol */
4939 #line 423 "../../../../OS/src/OSParsers/OSParseosol.l"
4940 {YY_PRINT; return(EMPTYTYPEATT);}
4941  YY_BREAK
4942 case 227:
4943 /* rule 227 can match eol */
4945 #line 424 "../../../../OS/src/OSParsers/OSParseosol.l"
4947  YY_BREAK
4948 case 228:
4949 /* rule 228 can match eol */
4951 #line 425 "../../../../OS/src/OSParsers/OSParseosol.l"
4953  YY_BREAK
4954 case 229:
4955 /* rule 229 can match eol */
4957 #line 427 "../../../../OS/src/OSParsers/OSParseosol.l"
4958 {YY_PRINT; return(EMPTYUNITATT);}
4959  YY_BREAK
4960 case 230:
4961 /* rule 230 can match eol */
4963 #line 428 "../../../../OS/src/OSParsers/OSParseosol.l"
4964 {YY_PRINT; return(EMPTYUNITATT);}
4965  YY_BREAK
4966 case 231:
4967 /* rule 231 can match eol */
4969 #line 429 "../../../../OS/src/OSParsers/OSParseosol.l"
4971  YY_BREAK
4972 case 232:
4973 /* rule 232 can match eol */
4975 #line 430 "../../../../OS/src/OSParsers/OSParseosol.l"
4977  YY_BREAK
4978 case 233:
4979 /* rule 233 can match eol */
4981 #line 432 "../../../../OS/src/OSParsers/OSParseosol.l"
4982 {YY_PRINT; return(EMPTYVALUEATT);}
4983  YY_BREAK
4984 case 234:
4985 /* rule 234 can match eol */
4987 #line 433 "../../../../OS/src/OSParsers/OSParseosol.l"
4988 {YY_PRINT; return(EMPTYVALUEATT);}
4989  YY_BREAK
4990 case 235:
4991 /* rule 235 can match eol */
4993 #line 434 "../../../../OS/src/OSParsers/OSParseosol.l"
4995  YY_BREAK
4996 case 236:
4997 /* rule 236 can match eol */
4999 #line 435 "../../../../OS/src/OSParsers/OSParseosol.l"
5001  YY_BREAK
5002 case 237:
5003 /* rule 237 can match eol */
5005 #line 437 "../../../../OS/src/OSParsers/OSParseosol.l"
5006 {YY_PRINT; return(EMPTYVARTYPEATT);}
5007  YY_BREAK
5008 case 238:
5009 /* rule 238 can match eol */
5011 #line 438 "../../../../OS/src/OSParsers/OSParseosol.l"
5012 {YY_PRINT; return(EMPTYVARTYPEATT);}
5013  YY_BREAK
5014 case 239:
5015 /* rule 239 can match eol */
5017 #line 439 "../../../../OS/src/OSParsers/OSParseosol.l"
5019  YY_BREAK
5020 case 240:
5021 /* rule 240 can match eol */
5023 #line 440 "../../../../OS/src/OSParsers/OSParseosol.l"
5025  YY_BREAK
5026 case 241:
5027 /* rule 241 can match eol */
5029 #line 442 "../../../../OS/src/OSParsers/OSParseosol.l"
5030 {YY_PRINT; return(EMPTYVALUETYPEATT);}
5031  YY_BREAK
5032 case 242:
5033 /* rule 242 can match eol */
5035 #line 443 "../../../../OS/src/OSParsers/OSParseosol.l"
5036 {YY_PRINT; return(EMPTYVALUETYPEATT);}
5037  YY_BREAK
5038 case 243:
5039 /* rule 243 can match eol */
5041 #line 444 "../../../../OS/src/OSParsers/OSParseosol.l"
5043  YY_BREAK
5044 case 244:
5045 /* rule 244 can match eol */
5047 #line 445 "../../../../OS/src/OSParsers/OSParseosol.l"
5049  YY_BREAK
5050 /* Patterns for attributes returning numeric values*/
5051 case 245:
5052 /* rule 245 can match eol */
5054 #line 449 "../../../../OS/src/OSParsers/OSParseosol.l"
5055 {YY_PRINT; return(NUMBEROFBLOCKSATT);}
5056  YY_BREAK
5057 case 246:
5058 /* rule 246 can match eol */
5060 #line 450 "../../../../OS/src/OSParsers/OSParseosol.l"
5061 {YY_PRINT; return(NUMBEROFCOLUMNSATT);}
5062  YY_BREAK
5063 case 247:
5064 /* rule 247 can match eol */
5066 #line 451 "../../../../OS/src/OSParsers/OSParseosol.l"
5067 {YY_PRINT; return(NUMBEROFCONATT);}
5068  YY_BREAK
5069 case 248:
5070 /* rule 248 can match eol */
5072 #line 452 "../../../../OS/src/OSParsers/OSParseosol.l"
5073 {YY_PRINT; return(NUMBEROFCONSTRAINTSATT);}
5074  YY_BREAK
5075 case 249:
5076 /* rule 249 can match eol */
5078 #line 453 "../../../../OS/src/OSParsers/OSParseosol.l"
5079 {YY_PRINT; return(NUMBEROFELATT);}
5080  YY_BREAK
5081 case 250:
5082 /* rule 250 can match eol */
5084 #line 454 "../../../../OS/src/OSParsers/OSParseosol.l"
5086  YY_BREAK
5087 case 251:
5088 /* rule 251 can match eol */
5090 #line 455 "../../../../OS/src/OSParsers/OSParseosol.l"
5091 {YY_PRINT; return(NUMBEROFITEMSATT);}
5092  YY_BREAK
5093 case 252:
5094 /* rule 252 can match eol */
5096 #line 456 "../../../../OS/src/OSParsers/OSParseosol.l"
5097 {YY_PRINT; return(NUMBEROFMATRICESATT);}
5098  YY_BREAK
5099 case 253:
5100 /* rule 253 can match eol */
5102 #line 457 "../../../../OS/src/OSParsers/OSParseosol.l"
5103 {YY_PRINT; return(NUMBEROFMATRIXCONATT);}
5104  YY_BREAK
5105 case 254:
5106 /* rule 254 can match eol */
5108 #line 458 "../../../../OS/src/OSParsers/OSParseosol.l"
5109 {YY_PRINT; return(NUMBEROFMATRIXOBJATT);}
5110  YY_BREAK
5111 case 255:
5112 /* rule 255 can match eol */
5114 #line 459 "../../../../OS/src/OSParsers/OSParseosol.l"
5115 {YY_PRINT; return(NUMBEROFMATRIXVARATT);}
5116  YY_BREAK
5117 case 256:
5118 /* rule 256 can match eol */
5120 #line 460 "../../../../OS/src/OSParsers/OSParseosol.l"
5121 {YY_PRINT; return(NUMBEROFOBJATT);}
5122  YY_BREAK
5123 case 257:
5124 /* rule 257 can match eol */
5126 #line 461 "../../../../OS/src/OSParsers/OSParseosol.l"
5127 {YY_PRINT; return(NUMBEROFOBJECTIVESATT);}
5128  YY_BREAK
5129 case 258:
5130 /* rule 258 can match eol */
5132 #line 462 "../../../../OS/src/OSParsers/OSParseosol.l"
5133 {YY_PRINT; return(NUMBEROFROWSATT);}
5134  YY_BREAK
5135 case 259:
5136 /* rule 259 can match eol */
5138 #line 463 "../../../../OS/src/OSParsers/OSParseosol.l"
5139 {YY_PRINT; return(NUMBEROFVALUESATT);}
5140  YY_BREAK
5141 case 260:
5142 /* rule 260 can match eol */
5144 #line 464 "../../../../OS/src/OSParsers/OSParseosol.l"
5145 {YY_PRINT; return(NUMBEROFVARATT);}
5146  YY_BREAK
5147 case 261:
5148 /* rule 261 can match eol */
5150 #line 465 "../../../../OS/src/OSParsers/OSParseosol.l"
5151 {YY_PRINT; return(NUMBEROFVARIABLESATT);}
5152  YY_BREAK
5153 case 262:
5154 /* rule 262 can match eol */
5156 #line 466 "../../../../OS/src/OSParsers/OSParseosol.l"
5157 {YY_PRINT; return(NUMBEROFVARIDXATT);}
5158  YY_BREAK
5159 case 263:
5160 /* rule 263 can match eol */
5162 #line 468 "../../../../OS/src/OSParsers/OSParseosol.l"
5163 {YY_PRINT; return(BASEMATRIXIDXATT);}
5164  YY_BREAK
5165 case 264:
5166 /* rule 264 can match eol */
5168 #line 469 "../../../../OS/src/OSParsers/OSParseosol.l"
5170  YY_BREAK
5171 case 265:
5172 /* rule 265 can match eol */
5174 #line 470 "../../../../OS/src/OSParsers/OSParseosol.l"
5176  YY_BREAK
5177 case 266:
5178 /* rule 266 can match eol */
5180 #line 471 "../../../../OS/src/OSParsers/OSParseosol.l"
5181 {YY_PRINT; return(BASEMATRIXSTARTROWATT);}
5182  YY_BREAK
5183 case 267:
5184 /* rule 267 can match eol */
5186 #line 472 "../../../../OS/src/OSParsers/OSParseosol.l"
5187 {YY_PRINT; return(BASEMATRIXSTARTCOLATT);}
5188  YY_BREAK
5189 case 268:
5190 /* rule 268 can match eol */
5192 #line 473 "../../../../OS/src/OSParsers/OSParseosol.l"
5193 {YY_PRINT; return(BASEMATRIXENDROWATT);}
5194  YY_BREAK
5195 case 269:
5196 /* rule 269 can match eol */
5198 #line 474 "../../../../OS/src/OSParsers/OSParseosol.l"
5199 {YY_PRINT; return(BASEMATRIXENDCOLATT);}
5200  YY_BREAK
5201 case 270:
5202 /* rule 270 can match eol */
5204 #line 475 "../../../../OS/src/OSParsers/OSParseosol.l"
5205 {YY_PRINT; return(SCALARMULTIPLIERATT);}
5206  YY_BREAK
5207 case 271:
5208 /* rule 271 can match eol */
5210 #line 476 "../../../../OS/src/OSParsers/OSParseosol.l"
5211 {YY_PRINT; return(BLOCKROWIDXATT);}
5212  YY_BREAK
5213 case 272:
5214 /* rule 272 can match eol */
5216 #line 477 "../../../../OS/src/OSParsers/OSParseosol.l"
5217 {YY_PRINT; return(BLOCKCOLIDXATT);}
5218  YY_BREAK
5219 case 273:
5220 /* rule 273 can match eol */
5222 #line 478 "../../../../OS/src/OSParsers/OSParseosol.l"
5223 {YY_PRINT; return(CONSTANTATT);}
5224  YY_BREAK
5225 case 274:
5226 /* rule 274 can match eol */
5228 #line 480 "../../../../OS/src/OSParsers/OSParseosol.l"
5229 {YY_PRINT; return(MATRIXVARIDXATT);}
5230  YY_BREAK
5231 case 275:
5232 /* rule 275 can match eol */
5234 #line 481 "../../../../OS/src/OSParsers/OSParseosol.l"
5235 {YY_PRINT; return(MATRIXOBJIDXATT);}
5236  YY_BREAK
5237 case 276:
5238 /* rule 276 can match eol */
5240 #line 482 "../../../../OS/src/OSParsers/OSParseosol.l"
5241 {YY_PRINT; return(MATRIXCONIDXATT);}
5242  YY_BREAK
5243 case 277:
5244 /* rule 277 can match eol */
5246 #line 484 "../../../../OS/src/OSParsers/OSParseosol.l"
5247 {YY_PRINT; return(IDXATT);}
5248  YY_BREAK
5249 case 278:
5250 /* rule 278 can match eol */
5252 #line 485 "../../../../OS/src/OSParsers/OSParseosol.l"
5253 {YY_PRINT; return(INCRATT);}
5254  YY_BREAK
5255 case 279:
5256 /* rule 279 can match eol */
5258 #line 486 "../../../../OS/src/OSParsers/OSParseosol.l"
5259 {YY_PRINT; return(MULTATT);}
5260  YY_BREAK
5261 case 280:
5262 /* rule 280 can match eol */
5264 #line 487 "../../../../OS/src/OSParsers/OSParseosol.l"
5265 {YY_PRINT; return(COEFATT);}
5266  YY_BREAK
5267 case 281:
5268 /* rule 281 can match eol */
5270 #line 488 "../../../../OS/src/OSParsers/OSParseosol.l"
5271 {YY_PRINT; return(SIZEOFATT);}
5272  YY_BREAK
5273 /* Patterns for the <matrices> element */
5274 case 282:
5275 /* rule 282 can match eol */
5277 #line 492 "../../../../OS/src/OSParsers/OSParseosol.l"
5278 {YY_PRINT; return(MATRICESSTART);}
5279  YY_BREAK
5280 case 283:
5281 /* rule 283 can match eol */
5283 #line 493 "../../../../OS/src/OSParsers/OSParseosol.l"
5284 {YY_PRINT; return(MATRICESEND);}
5285  YY_BREAK
5286 case 284:
5287 /* rule 284 can match eol */
5289 #line 494 "../../../../OS/src/OSParsers/OSParseosol.l"
5290 {YY_PRINT; return(MATRIXSTART);}
5291  YY_BREAK
5292 case 285:
5293 /* rule 285 can match eol */
5295 #line 495 "../../../../OS/src/OSParsers/OSParseosol.l"
5296 {YY_PRINT; return(MATRIXEND);}
5297  YY_BREAK
5298 case 286:
5299 /* rule 286 can match eol */
5301 #line 496 "../../../../OS/src/OSParsers/OSParseosol.l"
5302 {YY_PRINT; return(BASEMATRIXSTART);}
5303  YY_BREAK
5304 case 287:
5305 /* rule 287 can match eol */
5307 #line 497 "../../../../OS/src/OSParsers/OSParseosol.l"
5308 {YY_PRINT; return(BASEMATRIXEND);}
5309  YY_BREAK
5310 case 288:
5311 /* rule 288 can match eol */
5313 #line 498 "../../../../OS/src/OSParsers/OSParseosol.l"
5314 {YY_PRINT; return(BLOCKSSTART);}
5315  YY_BREAK
5316 case 289:
5317 /* rule 289 can match eol */
5319 #line 499 "../../../../OS/src/OSParsers/OSParseosol.l"
5320 {YY_PRINT; return(BLOCKSEND);}
5321  YY_BREAK
5322 case 290:
5323 /* rule 290 can match eol */
5325 #line 500 "../../../../OS/src/OSParsers/OSParseosol.l"
5326 {YY_PRINT; return(BLOCKSTART);}
5327  YY_BREAK
5328 case 291:
5329 /* rule 291 can match eol */
5331 #line 501 "../../../../OS/src/OSParsers/OSParseosol.l"
5332 {YY_PRINT; return(BLOCKEND);}
5333  YY_BREAK
5334 case 292:
5335 /* rule 292 can match eol */
5337 #line 502 "../../../../OS/src/OSParsers/OSParseosol.l"
5338 {YY_PRINT; return(ELEMENTSSTART);}
5339  YY_BREAK
5340 case 293:
5341 /* rule 293 can match eol */
5343 #line 503 "../../../../OS/src/OSParsers/OSParseosol.l"
5344 {YY_PRINT; return(ELEMENTSEND);}
5345  YY_BREAK
5346 case 294:
5347 /* rule 294 can match eol */
5349 #line 504 "../../../../OS/src/OSParsers/OSParseosol.l"
5350 {YY_PRINT; return(CONSTANTELEMENTSSTART);}
5351  YY_BREAK
5352 case 295:
5353 /* rule 295 can match eol */
5355 #line 505 "../../../../OS/src/OSParsers/OSParseosol.l"
5356 {YY_PRINT; return(CONSTANTELEMENTSEND);}
5357  YY_BREAK
5358 case 296:
5359 /* rule 296 can match eol */
5361 #line 506 "../../../../OS/src/OSParsers/OSParseosol.l"
5363  YY_BREAK
5364 case 297:
5365 /* rule 297 can match eol */
5367 #line 507 "../../../../OS/src/OSParsers/OSParseosol.l"
5369  YY_BREAK
5370 case 298:
5371 /* rule 298 can match eol */
5373 #line 508 "../../../../OS/src/OSParsers/OSParseosol.l"
5375  YY_BREAK
5376 case 299:
5377 /* rule 299 can match eol */
5379 #line 509 "../../../../OS/src/OSParsers/OSParseosol.l"
5381  YY_BREAK
5382 case 300:
5383 /* rule 300 can match eol */
5385 #line 510 "../../../../OS/src/OSParsers/OSParseosol.l"
5387  YY_BREAK
5388 case 301:
5389 /* rule 301 can match eol */
5391 #line 511 "../../../../OS/src/OSParsers/OSParseosol.l"
5393  YY_BREAK
5394 case 302:
5395 /* rule 302 can match eol */
5397 #line 512 "../../../../OS/src/OSParsers/OSParseosol.l"
5398 {YY_PRINT; return(LINEARELEMENTSSTART);}
5399  YY_BREAK
5400 case 303:
5401 /* rule 303 can match eol */
5403 #line 513 "../../../../OS/src/OSParsers/OSParseosol.l"
5404 {YY_PRINT; return(LINEARELEMENTSEND);}
5405  YY_BREAK
5406 case 304:
5407 /* rule 304 can match eol */
5409 #line 514 "../../../../OS/src/OSParsers/OSParseosol.l"
5410 {YY_PRINT; return(GENERALELEMENTSSTART);}
5411  YY_BREAK
5412 case 305:
5413 /* rule 305 can match eol */
5415 #line 515 "../../../../OS/src/OSParsers/OSParseosol.l"
5416 {YY_PRINT; return(GENERALELEMENTSEND);}
5417  YY_BREAK
5418 case 306:
5419 /* rule 306 can match eol */
5421 #line 516 "../../../../OS/src/OSParsers/OSParseosol.l"
5423  YY_BREAK
5424 case 307:
5425 /* rule 307 can match eol */
5427 #line 517 "../../../../OS/src/OSParsers/OSParseosol.l"
5429  YY_BREAK
5430 case 308:
5431 /* rule 308 can match eol */
5433 #line 519 "../../../../OS/src/OSParsers/OSParseosol.l"
5434 {YY_PRINT; return(STARTVECTORSTART);}
5435  YY_BREAK
5436 case 309:
5437 /* rule 309 can match eol */
5439 #line 520 "../../../../OS/src/OSParsers/OSParseosol.l"
5440 {YY_PRINT; return(STARTVECTOREND);}
5441  YY_BREAK
5442 case 310:
5443 /* rule 310 can match eol */
5445 #line 521 "../../../../OS/src/OSParsers/OSParseosol.l"
5446 {YY_PRINT; return(INDEXSTART);}
5447  YY_BREAK
5448 case 311:
5449 /* rule 311 can match eol */
5451 #line 522 "../../../../OS/src/OSParsers/OSParseosol.l"
5452 {YY_PRINT; return(INDEXEND);}
5453  YY_BREAK
5454 case 312:
5455 /* rule 312 can match eol */
5457 #line 523 "../../../../OS/src/OSParsers/OSParseosol.l"
5458 {YY_PRINT; return(VALUESTART);}
5459  YY_BREAK
5460 case 313:
5461 /* rule 313 can match eol */
5463 #line 524 "../../../../OS/src/OSParsers/OSParseosol.l"
5464 {YY_PRINT; return(VALUEEND);}
5465  YY_BREAK
5466 case 314:
5467 /* rule 314 can match eol */
5469 #line 525 "../../../../OS/src/OSParsers/OSParseosol.l"
5470 {YY_PRINT; return(NONZEROSSTART);}
5471  YY_BREAK
5472 case 315:
5473 /* rule 315 can match eol */
5475 #line 526 "../../../../OS/src/OSParsers/OSParseosol.l"
5476 {YY_PRINT; return(NONZEROSEND);}
5477  YY_BREAK
5478 case 316:
5479 /* rule 316 can match eol */
5481 #line 527 "../../../../OS/src/OSParsers/OSParseosol.l"
5482 {YY_PRINT; return(INDEXESSTART);}
5483  YY_BREAK
5484 case 317:
5485 /* rule 317 can match eol */
5487 #line 528 "../../../../OS/src/OSParsers/OSParseosol.l"
5488 {YY_PRINT; return(INDEXESEND);}
5489  YY_BREAK
5490 case 318:
5491 /* rule 318 can match eol */
5493 #line 529 "../../../../OS/src/OSParsers/OSParseosol.l"
5494 {YY_PRINT; return(VALUESSTART);}
5495  YY_BREAK
5496 case 319:
5497 /* rule 319 can match eol */
5499 #line 530 "../../../../OS/src/OSParsers/OSParseosol.l"
5500 {YY_PRINT; return(VALUESEND);}
5501  YY_BREAK
5502 case 320:
5503 /* rule 320 can match eol */
5505 #line 531 "../../../../OS/src/OSParsers/OSParseosol.l"
5506 {YY_PRINT; return(COLOFFSETSTART);}
5507  YY_BREAK
5508 case 321:
5509 /* rule 321 can match eol */
5511 #line 532 "../../../../OS/src/OSParsers/OSParseosol.l"
5512 {YY_PRINT; return(COLOFFSETEND);}
5513  YY_BREAK
5514 case 322:
5515 /* rule 322 can match eol */
5517 #line 533 "../../../../OS/src/OSParsers/OSParseosol.l"
5518 {YY_PRINT; return(ROWOFFSETSTART);}
5519  YY_BREAK
5520 case 323:
5521 /* rule 323 can match eol */
5523 #line 534 "../../../../OS/src/OSParsers/OSParseosol.l"
5524 {YY_PRINT; return(ROWOFFSETEND);}
5525  YY_BREAK
5526 case 324:
5527 /* rule 324 can match eol */
5529 #line 535 "../../../../OS/src/OSParsers/OSParseosol.l"
5530 {YY_PRINT; return(VARIDXSTART);}
5531  YY_BREAK
5532 case 325:
5533 /* rule 325 can match eol */
5535 #line 536 "../../../../OS/src/OSParsers/OSParseosol.l"
5536 {YY_PRINT; return(VARIDXEND);}
5537  YY_BREAK
5538 case 326:
5539 /* rule 326 can match eol */
5541 #line 537 "../../../../OS/src/OSParsers/OSParseosol.l"
5542 {YY_PRINT; return(TRANSFORMATIONSTART);}
5543  YY_BREAK
5544 case 327:
5545 /* rule 327 can match eol */
5547 #line 538 "../../../../OS/src/OSParsers/OSParseosol.l"
5548 {YY_PRINT; return(TRANSFORMATIONEND);}
5549  YY_BREAK
5550 /* Patterns for <matrices> element */
5551 case 328:
5552 /* rule 328 can match eol */
5554 #line 543 "../../../../OS/src/OSParsers/OSParseosol.l"
5555 {YY_PRINT; return(MATRIXPROGRAMMINGSTART);}
5556  YY_BREAK
5557 case 329:
5558 /* rule 329 can match eol */
5560 #line 544 "../../../../OS/src/OSParsers/OSParseosol.l"
5561 {YY_PRINT; return(MATRIXPROGRAMMINGEND);}
5562  YY_BREAK
5563 case 330:
5564 /* rule 330 can match eol */
5566 #line 545 "../../../../OS/src/OSParsers/OSParseosol.l"
5567 {YY_PRINT; return(MATRIXVARIABLESSTART);}
5568  YY_BREAK
5569 case 331:
5570 /* rule 331 can match eol */
5572 #line 546 "../../../../OS/src/OSParsers/OSParseosol.l"
5573 {YY_PRINT; return(MATRIXVARIABLESEND);}
5574  YY_BREAK
5575 case 332:
5576 /* rule 332 can match eol */
5578 #line 547 "../../../../OS/src/OSParsers/OSParseosol.l"
5579 {YY_PRINT; return(MATRIXVARSTART);}
5580  YY_BREAK
5581 case 333:
5582 /* rule 333 can match eol */
5584 #line 548 "../../../../OS/src/OSParsers/OSParseosol.l"
5585 {YY_PRINT; return(MATRIXVAREND);}
5586  YY_BREAK
5587 case 334:
5588 /* rule 334 can match eol */
5590 #line 549 "../../../../OS/src/OSParsers/OSParseosol.l"
5591 {YY_PRINT; return(MATRIXOBJECTIVESSTART);}
5592  YY_BREAK
5593 case 335:
5594 /* rule 335 can match eol */
5596 #line 550 "../../../../OS/src/OSParsers/OSParseosol.l"
5597 {YY_PRINT; return(MATRIXOBJECTIVESEND);}
5598  YY_BREAK
5599 case 336:
5600 /* rule 336 can match eol */
5602 #line 551 "../../../../OS/src/OSParsers/OSParseosol.l"
5603 {YY_PRINT; return(MATRIXOBJSTART);}
5604  YY_BREAK
5605 case 337:
5606 /* rule 337 can match eol */
5608 #line 552 "../../../../OS/src/OSParsers/OSParseosol.l"
5609 {YY_PRINT; return(MATRIXOBJEND);}
5610  YY_BREAK
5611 case 338:
5612 /* rule 338 can match eol */
5614 #line 553 "../../../../OS/src/OSParsers/OSParseosol.l"
5615 {YY_PRINT; return(MATRIXCONSTRAINTSSTART);}
5616  YY_BREAK
5617 case 339:
5618 /* rule 339 can match eol */
5620 #line 554 "../../../../OS/src/OSParsers/OSParseosol.l"
5621 {YY_PRINT; return(MATRIXCONSTRAINTSEND);}
5622  YY_BREAK
5623 case 340:
5624 /* rule 340 can match eol */
5626 #line 555 "../../../../OS/src/OSParsers/OSParseosol.l"
5627 {YY_PRINT; return(MATRIXCONSTART);}
5628  YY_BREAK
5629 case 341:
5630 /* rule 341 can match eol */
5632 #line 556 "../../../../OS/src/OSParsers/OSParseosol.l"
5633 {YY_PRINT; return(MATRIXCONEND);}
5634  YY_BREAK
5635 /* Other patterns shared among all three major schemas */
5636 case 342:
5637 /* rule 342 can match eol */
5639 #line 560 "../../../../OS/src/OSParsers/OSParseosol.l"
5640 {YY_PRINT; return(CONSTART);}
5641  YY_BREAK
5642 case 343:
5643 /* rule 343 can match eol */
5645 #line 561 "../../../../OS/src/OSParsers/OSParseosol.l"
5646 {YY_PRINT; return(CONEND);}
5647  YY_BREAK
5648 case 344:
5649 /* rule 344 can match eol */
5651 #line 562 "../../../../OS/src/OSParsers/OSParseosol.l"
5652 {YY_PRINT; return(CONSTRAINTSSTART);}
5653  YY_BREAK
5654 case 345:
5655 /* rule 345 can match eol */
5657 #line 563 "../../../../OS/src/OSParsers/OSParseosol.l"
5658 {YY_PRINT; return(CONSTRAINTSEND);}
5659  YY_BREAK
5660 case 346:
5661 /* rule 346 can match eol */
5663 #line 564 "../../../../OS/src/OSParsers/OSParseosol.l"
5664 {YY_PRINT; return(OBJSTART);}
5665  YY_BREAK
5666 case 347:
5667 /* rule 347 can match eol */
5669 #line 565 "../../../../OS/src/OSParsers/OSParseosol.l"
5670 {YY_PRINT; return(OBJEND);}
5671  YY_BREAK
5672 case 348:
5673 /* rule 348 can match eol */
5675 #line 566 "../../../../OS/src/OSParsers/OSParseosol.l"
5676 {YY_PRINT; return(OBJECTIVESSTART);}
5677  YY_BREAK
5678 case 349:
5679 /* rule 349 can match eol */
5681 #line 567 "../../../../OS/src/OSParsers/OSParseosol.l"
5682 {YY_PRINT; return(OBJECTIVESEND);}
5683  YY_BREAK
5684 case 350:
5685 /* rule 350 can match eol */
5687 #line 568 "../../../../OS/src/OSParsers/OSParseosol.l"
5688 {YY_PRINT; return(VARSTART);}
5689  YY_BREAK
5690 case 351:
5691 /* rule 351 can match eol */
5693 #line 569 "../../../../OS/src/OSParsers/OSParseosol.l"
5694 {YY_PRINT; return(VAREND);}
5695  YY_BREAK
5696 case 352:
5697 /* rule 352 can match eol */
5699 #line 570 "../../../../OS/src/OSParsers/OSParseosol.l"
5700 {YY_PRINT; return(VARIABLESSTART);}
5701  YY_BREAK
5702 case 353:
5703 /* rule 353 can match eol */
5705 #line 571 "../../../../OS/src/OSParsers/OSParseosol.l"
5706 {YY_PRINT; return(VARIABLESEND);}
5707  YY_BREAK
5708 /* The remaining patterns are shared between OSoL and OSrL.
5709  Since they have similar structure, the patterns are grouped by schema elements */
5710 /* Patterns for major headings in OSoL and OSrL */
5711 case 354:
5712 /* rule 354 can match eol */
5714 #line 579 "../../../../OS/src/OSParsers/OSParseosol.l"
5715 {YY_PRINT; return(GENERALSTART);}
5716  YY_BREAK
5717 case 355:
5718 /* rule 355 can match eol */
5720 #line 580 "../../../../OS/src/OSParsers/OSParseosol.l"
5721 {YY_PRINT; return(GENERALEND);}
5722  YY_BREAK
5723 case 356:
5724 /* rule 356 can match eol */
5726 #line 582 "../../../../OS/src/OSParsers/OSParseosol.l"
5727 {YY_PRINT; return(SYSTEMSTART);}
5728  YY_BREAK
5729 case 357:
5730 /* rule 357 can match eol */
5732 #line 583 "../../../../OS/src/OSParsers/OSParseosol.l"
5733 {YY_PRINT; return(SYSTEMEND);}
5734  YY_BREAK
5735 case 358:
5736 /* rule 358 can match eol */
5738 #line 585 "../../../../OS/src/OSParsers/OSParseosol.l"
5739 {YY_PRINT; return(SERVICESTART);}
5740  YY_BREAK
5741 case 359:
5742 /* rule 359 can match eol */
5744 #line 586 "../../../../OS/src/OSParsers/OSParseosol.l"
5745 {YY_PRINT; return(SERVICEEND);}
5746  YY_BREAK
5747 case 360:
5748 /* rule 360 can match eol */
5750 #line 588 "../../../../OS/src/OSParsers/OSParseosol.l"
5751 {YY_PRINT; return(JOBSTART);}
5752  YY_BREAK
5753 case 361:
5754 /* rule 361 can match eol */
5756 #line 589 "../../../../OS/src/OSParsers/OSParseosol.l"
5757 {YY_PRINT; return(JOBEND);}
5758  YY_BREAK
5759 case 362:
5760 /* rule 362 can match eol */
5762 #line 591 "../../../../OS/src/OSParsers/OSParseosol.l"
5763 {YY_PRINT; return(OPTIMIZATIONSTART);}
5764  YY_BREAK
5765 case 363:
5766 /* rule 363 can match eol */
5768 #line 592 "../../../../OS/src/OSParsers/OSParseosol.l"
5769 {YY_PRINT; return(OPTIMIZATIONEND);}
5770  YY_BREAK
5771 /* Patterns for representing a basis in LP */
5772 case 364:
5773 /* rule 364 can match eol */
5775 #line 596 "../../../../OS/src/OSParsers/OSParseosol.l"
5776 {YY_PRINT; return(ATEQUALITYSTART);}
5777  YY_BREAK
5778 case 365:
5779 /* rule 365 can match eol */
5781 #line 597 "../../../../OS/src/OSParsers/OSParseosol.l"
5782 {YY_PRINT; return(ATEQUALITYEND);}
5783  YY_BREAK
5784 case 366:
5785 /* rule 366 can match eol */
5787 #line 598 "../../../../OS/src/OSParsers/OSParseosol.l"
5788 {YY_PRINT; return(ATLOWERSTART);}
5789  YY_BREAK
5790 case 367:
5791 /* rule 367 can match eol */
5793 #line 599 "../../../../OS/src/OSParsers/OSParseosol.l"
5794 {YY_PRINT; return(ATLOWEREND);}
5795  YY_BREAK
5796 case 368:
5797 /* rule 368 can match eol */
5799 #line 600 "../../../../OS/src/OSParsers/OSParseosol.l"
5800 {YY_PRINT; return(ATUPPERSTART);}
5801  YY_BREAK
5802 case 369:
5803 /* rule 369 can match eol */
5805 #line 601 "../../../../OS/src/OSParsers/OSParseosol.l"
5806 {YY_PRINT; return(ATUPPEREND);}
5807  YY_BREAK
5808 case 370:
5809 /* rule 370 can match eol */
5811 #line 602 "../../../../OS/src/OSParsers/OSParseosol.l"
5812 {YY_PRINT; return(BASICSTART);}
5813  YY_BREAK
5814 case 371:
5815 /* rule 371 can match eol */
5817 #line 603 "../../../../OS/src/OSParsers/OSParseosol.l"
5818 {YY_PRINT; return(BASICEND);}
5819  YY_BREAK
5820 case 372:
5821 /* rule 372 can match eol */
5823 #line 604 "../../../../OS/src/OSParsers/OSParseosol.l"
5824 {YY_PRINT; return(ISFREESTART);}
5825  YY_BREAK
5826 case 373:
5827 /* rule 373 can match eol */
5829 #line 605 "../../../../OS/src/OSParsers/OSParseosol.l"
5830 {YY_PRINT; return(ISFREEEND);}
5831  YY_BREAK
5832 case 374:
5833 /* rule 374 can match eol */
5835 #line 606 "../../../../OS/src/OSParsers/OSParseosol.l"
5836 {YY_PRINT; return(SUPERBASICSTART);}
5837  YY_BREAK
5838 case 375:
5839 /* rule 375 can match eol */
5841 #line 607 "../../../../OS/src/OSParsers/OSParseosol.l"
5842 {YY_PRINT; return(SUPERBASICEND);}
5843  YY_BREAK
5844 case 376:
5845 /* rule 376 can match eol */
5847 #line 608 "../../../../OS/src/OSParsers/OSParseosol.l"
5848 {YY_PRINT; return(UNKNOWNSTART);}
5849  YY_BREAK
5850 case 377:
5851 /* rule 377 can match eol */
5853 #line 609 "../../../../OS/src/OSParsers/OSParseosol.l"
5854 {YY_PRINT; return(UNKNOWNEND);}
5855  YY_BREAK
5856 /* Patterns for the <general> element */
5857 case 378:
5858 /* rule 378 can match eol */
5860 #line 613 "../../../../OS/src/OSParsers/OSParseosol.l"
5861 {YY_PRINT; return(SERVICEURISTART);}
5862  YY_BREAK
5863 case 379:
5864 /* rule 379 can match eol */
5866 #line 614 "../../../../OS/src/OSParsers/OSParseosol.l"
5867 {YY_PRINT; return(SERVICEURIEND);}
5868  YY_BREAK
5869 case 380:
5870 /* rule 380 can match eol */
5872 #line 615 "../../../../OS/src/OSParsers/OSParseosol.l"
5873 {YY_PRINT; return(SERVICENAMESTART);}
5874  YY_BREAK
5875 case 381:
5876 /* rule 381 can match eol */
5878 #line 616 "../../../../OS/src/OSParsers/OSParseosol.l"
5879 {YY_PRINT; return(SERVICENAMEEND);}
5880  YY_BREAK
5881 case 382:
5882 /* rule 382 can match eol */
5884 #line 617 "../../../../OS/src/OSParsers/OSParseosol.l"
5885 {YY_PRINT; return(INSTANCENAMESTART);}
5886  YY_BREAK
5887 case 383:
5888 /* rule 383 can match eol */
5890 #line 618 "../../../../OS/src/OSParsers/OSParseosol.l"
5891 {YY_PRINT; return(INSTANCENAMEEND);}
5892  YY_BREAK
5893 case 384:
5894 /* rule 384 can match eol */
5896 #line 619 "../../../../OS/src/OSParsers/OSParseosol.l"
5897 {YY_PRINT; return(JOBIDSTART);}
5898  YY_BREAK
5899 case 385:
5900 /* rule 385 can match eol */
5902 #line 620 "../../../../OS/src/OSParsers/OSParseosol.l"
5903 {YY_PRINT; return(JOBIDEND);}
5904  YY_BREAK
5905 /* Other patterns */
5906 case 386:
5907 /* rule 386 can match eol */
5909 #line 624 "../../../../OS/src/OSParsers/OSParseosol.l"
5910 {YY_PRINT; return(ENUMERATIONSTART);}
5911  YY_BREAK
5912 case 387:
5913 /* rule 387 can match eol */
5915 #line 625 "../../../../OS/src/OSParsers/OSParseosol.l"
5916 {YY_PRINT; return(ENUMERATIONEND);}
5917  YY_BREAK
5918 case 388:
5919 /* rule 388 can match eol */
5921 #line 626 "../../../../OS/src/OSParsers/OSParseosol.l"
5922 {YY_PRINT; return(OTHERSTART);}
5923  YY_BREAK
5924 case 389:
5925 /* rule 389 can match eol */
5927 #line 627 "../../../../OS/src/OSParsers/OSParseosol.l"
5928 {YY_PRINT; return(OTHEREND);}
5929  YY_BREAK
5930 /* include file OSParseosnl.l.patterns --- patterns for OSnL schema elements */
5931 /* patterns for <nonlinearExpressions> */
5932 case 390:
5933 /* rule 390 can match eol */
5935 #line 633 "../../../../OS/src/OSParsers/OSParseosol.l"
5937  YY_BREAK
5938 case 391:
5939 /* rule 391 can match eol */
5941 #line 634 "../../../../OS/src/OSParsers/OSParseosol.l"
5943  YY_BREAK
5944 case 392:
5945 /* rule 392 can match eol */
5947 #line 635 "../../../../OS/src/OSParsers/OSParseosol.l"
5949  YY_BREAK
5950 case 393:
5951 /* rule 393 can match eol */
5953 #line 636 "../../../../OS/src/OSParsers/OSParseosol.l"
5954 {YY_PRINT; return(NLSTART);}
5955  YY_BREAK
5956 case 394:
5957 /* rule 394 can match eol */
5959 #line 637 "../../../../OS/src/OSParsers/OSParseosol.l"
5960 {YY_PRINT; return(NLEND);}
5961  YY_BREAK
5962 case 395:
5963 /* rule 395 can match eol */
5965 #line 639 "../../../../OS/src/OSParsers/OSParseosol.l"
5966 {YY_PRINT; return(TIMESSTART);}
5967  YY_BREAK
5968 case 396:
5969 /* rule 396 can match eol */
5971 #line 640 "../../../../OS/src/OSParsers/OSParseosol.l"
5972 {YY_PRINT; return(TIMESEND);}
5973  YY_BREAK
5974 case 397:
5975 /* rule 397 can match eol */
5977 #line 641 "../../../../OS/src/OSParsers/OSParseosol.l"
5978 {YY_PRINT; return(DIVIDESTART);}
5979  YY_BREAK
5980 case 398:
5981 /* rule 398 can match eol */
5983 #line 642 "../../../../OS/src/OSParsers/OSParseosol.l"
5984 {YY_PRINT; return(DIVIDEEND);}
5985  YY_BREAK
5986 case 399:
5987 /* rule 399 can match eol */
5989 #line 643 "../../../../OS/src/OSParsers/OSParseosol.l"
5990 {YY_PRINT; return(PLUSSTART);}
5991  YY_BREAK
5992 case 400:
5993 /* rule 400 can match eol */
5995 #line 644 "../../../../OS/src/OSParsers/OSParseosol.l"
5996 {YY_PRINT; return(PLUSEND);}
5997  YY_BREAK
5998 case 401:
5999 /* rule 401 can match eol */
6001 #line 645 "../../../../OS/src/OSParsers/OSParseosol.l"
6002 {YY_PRINT; return(MINUSSTART);}
6003  YY_BREAK
6004 case 402:
6005 /* rule 402 can match eol */
6007 #line 646 "../../../../OS/src/OSParsers/OSParseosol.l"
6008 {YY_PRINT; return(MINUSEND);}
6009  YY_BREAK
6010 case 403:
6011 /* rule 403 can match eol */
6013 #line 647 "../../../../OS/src/OSParsers/OSParseosol.l"
6014 {YY_PRINT; return(NEGATESTART);}
6015  YY_BREAK
6016 case 404:
6017 /* rule 404 can match eol */
6019 #line 648 "../../../../OS/src/OSParsers/OSParseosol.l"
6020 {YY_PRINT; return(NEGATEEND);}
6021  YY_BREAK
6022 case 405:
6023 /* rule 405 can match eol */
6025 #line 649 "../../../../OS/src/OSParsers/OSParseosol.l"
6026 {YY_PRINT; return(POWERSTART);}
6027  YY_BREAK
6028 case 406:
6029 /* rule 406 can match eol */
6031 #line 650 "../../../../OS/src/OSParsers/OSParseosol.l"
6032 {YY_PRINT; return(POWEREND);}
6033  YY_BREAK
6034 case 407:
6035 /* rule 407 can match eol */
6037 #line 651 "../../../../OS/src/OSParsers/OSParseosol.l"
6038 {YY_PRINT; return(LNSTART);}
6039  YY_BREAK
6040 case 408:
6041 /* rule 408 can match eol */
6043 #line 652 "../../../../OS/src/OSParsers/OSParseosol.l"
6044 {YY_PRINT; return(LNEND);}
6045  YY_BREAK
6046 case 409:
6047 /* rule 409 can match eol */
6049 #line 653 "../../../../OS/src/OSParsers/OSParseosol.l"
6050 {YY_PRINT; return(SQRTSTART);}
6051  YY_BREAK
6052 case 410:
6053 /* rule 410 can match eol */
6055 #line 654 "../../../../OS/src/OSParsers/OSParseosol.l"
6056 {YY_PRINT; return(SQRTEND);}
6057  YY_BREAK
6058 case 411:
6059 /* rule 411 can match eol */
6061 #line 655 "../../../../OS/src/OSParsers/OSParseosol.l"
6062 {YY_PRINT; return(SQRTSTART);}
6063  YY_BREAK
6064 case 412:
6065 /* rule 412 can match eol */
6067 #line 656 "../../../../OS/src/OSParsers/OSParseosol.l"
6068 {YY_PRINT; return(SQRTEND);}
6069  YY_BREAK
6070 case 413:
6071 /* rule 413 can match eol */
6073 #line 657 "../../../../OS/src/OSParsers/OSParseosol.l"
6074 {YY_PRINT; return(SQUARESTART);}
6075  YY_BREAK
6076 case 414:
6077 /* rule 414 can match eol */
6079 #line 658 "../../../../OS/src/OSParsers/OSParseosol.l"
6080 {YY_PRINT; return(SQUAREEND);}
6081  YY_BREAK
6082 case 415:
6083 /* rule 415 can match eol */
6085 #line 659 "../../../../OS/src/OSParsers/OSParseosol.l"
6086 {YY_PRINT; return(SINSTART);}
6087  YY_BREAK
6088 case 416:
6089 /* rule 416 can match eol */
6091 #line 660 "../../../../OS/src/OSParsers/OSParseosol.l"
6092 {YY_PRINT; return(SINEND);}
6093  YY_BREAK
6094 case 417:
6095 /* rule 417 can match eol */
6097 #line 661 "../../../../OS/src/OSParsers/OSParseosol.l"
6098 {YY_PRINT; return(COSSTART);}
6099  YY_BREAK
6100 case 418:
6101 /* rule 418 can match eol */
6103 #line 662 "../../../../OS/src/OSParsers/OSParseosol.l"
6104 {YY_PRINT; return(COSEND);}
6105  YY_BREAK
6106 case 419:
6107 /* rule 419 can match eol */
6109 #line 663 "../../../../OS/src/OSParsers/OSParseosol.l"
6110 {YY_PRINT; return(EXPSTART);}
6111  YY_BREAK
6112 case 420:
6113 /* rule 420 can match eol */
6115 #line 664 "../../../../OS/src/OSParsers/OSParseosol.l"
6116 {YY_PRINT; return(EXPEND);}
6117  YY_BREAK
6118 case 421:
6119 /* rule 421 can match eol */
6121 #line 665 "../../../../OS/src/OSParsers/OSParseosol.l"
6122 {YY_PRINT; return(ABSSTART);}
6123  YY_BREAK
6124 case 422:
6125 /* rule 422 can match eol */
6127 #line 666 "../../../../OS/src/OSParsers/OSParseosol.l"
6128 {YY_PRINT; return(ABSEND);}
6129  YY_BREAK
6130 case 423:
6131 /* rule 423 can match eol */
6133 #line 667 "../../../../OS/src/OSParsers/OSParseosol.l"
6134 {YY_PRINT; return(ERFSTART);}
6135  YY_BREAK
6136 case 424:
6137 /* rule 424 can match eol */
6139 #line 668 "../../../../OS/src/OSParsers/OSParseosol.l"
6140 {YY_PRINT; return(ERFEND);}
6141  YY_BREAK
6142 case 425:
6143 /* rule 425 can match eol */
6145 #line 669 "../../../../OS/src/OSParsers/OSParseosol.l"
6146 {YY_PRINT; return(IFSTART);}
6147  YY_BREAK
6148 case 426:
6149 /* rule 426 can match eol */
6151 #line 670 "../../../../OS/src/OSParsers/OSParseosol.l"
6152 {YY_PRINT; return(IFEND);}
6153  YY_BREAK
6154 case 427:
6155 /* rule 427 can match eol */
6157 #line 671 "../../../../OS/src/OSParsers/OSParseosol.l"
6158 {YY_PRINT; return(MAXSTART);}
6159  YY_BREAK
6160 case 428:
6161 /* rule 428 can match eol */
6163 #line 672 "../../../../OS/src/OSParsers/OSParseosol.l"
6164 {YY_PRINT; return(MAXEND);}
6165  YY_BREAK
6166 case 429:
6167 /* rule 429 can match eol */
6169 #line 673 "../../../../OS/src/OSParsers/OSParseosol.l"
6170 {YY_PRINT; return(MINSTART);}
6171  YY_BREAK
6172 case 430:
6173 /* rule 430 can match eol */
6175 #line 674 "../../../../OS/src/OSParsers/OSParseosol.l"
6176 {YY_PRINT; return(MINEND);}
6177  YY_BREAK
6178 case 431:
6179 /* rule 431 can match eol */
6181 #line 675 "../../../../OS/src/OSParsers/OSParseosol.l"
6182 {YY_PRINT; return(SUMSTART);}
6183  YY_BREAK
6184 case 432:
6185 /* rule 432 can match eol */
6187 #line 676 "../../../../OS/src/OSParsers/OSParseosol.l"
6188 {YY_PRINT; return(SUMEND);}
6189  YY_BREAK
6190 case 433:
6191 /* rule 433 can match eol */
6193 #line 677 "../../../../OS/src/OSParsers/OSParseosol.l"
6194 {YY_PRINT; return(ALLDIFFSTART);}
6195  YY_BREAK
6196 case 434:
6197 /* rule 434 can match eol */
6199 #line 678 "../../../../OS/src/OSParsers/OSParseosol.l"
6200 {YY_PRINT; return(ALLDIFFEND);}
6201  YY_BREAK
6202 case 435:
6203 /* rule 435 can match eol */
6205 #line 679 "../../../../OS/src/OSParsers/OSParseosol.l"
6206 {YY_PRINT; return(PRODUCTSTART);}
6207  YY_BREAK
6208 case 436:
6209 /* rule 436 can match eol */
6211 #line 680 "../../../../OS/src/OSParsers/OSParseosol.l"
6212 {YY_PRINT; return(PRODUCTEND);}
6213  YY_BREAK
6214 case 437:
6215 /* rule 437 can match eol */
6217 #line 681 "../../../../OS/src/OSParsers/OSParseosol.l"
6218 {YY_PRINT; return(NUMBERSTART);}
6219  YY_BREAK
6220 case 438:
6221 /* rule 438 can match eol */
6223 #line 682 "../../../../OS/src/OSParsers/OSParseosol.l"
6224 {YY_PRINT; return(NUMBEREND);}
6225  YY_BREAK
6226 case 439:
6227 /* rule 439 can match eol */
6229 #line 683 "../../../../OS/src/OSParsers/OSParseosol.l"
6230 {YY_PRINT; return(ESTART);}
6231  YY_BREAK
6232 case 440:
6233 /* rule 440 can match eol */
6235 #line 684 "../../../../OS/src/OSParsers/OSParseosol.l"
6236 {YY_PRINT; return(EEND);}
6237  YY_BREAK
6238 case 441:
6239 /* rule 441 can match eol */
6241 #line 685 "../../../../OS/src/OSParsers/OSParseosol.l"
6242 {YY_PRINT; return(PISTART);}
6243  YY_BREAK
6244 case 442:
6245 /* rule 442 can match eol */
6247 #line 686 "../../../../OS/src/OSParsers/OSParseosol.l"
6248 {YY_PRINT; return(PIEND);}
6249  YY_BREAK
6250 case 443:
6251 /* rule 443 can match eol */
6253 #line 687 "../../../../OS/src/OSParsers/OSParseosol.l"
6254 {YY_PRINT; return(VARIABLESTART);}
6255  YY_BREAK
6256 case 444:
6257 /* rule 444 can match eol */
6259 #line 688 "../../../../OS/src/OSParsers/OSParseosol.l"
6260 {YY_PRINT; return(VARIABLEEND);}
6261  YY_BREAK
6262 /* patterns for <matrixExpressions> */
6263 case 445:
6264 /* rule 445 can match eol */
6266 #line 692 "../../../../OS/src/OSParsers/OSParseosol.l"
6267 {YY_PRINT; return(MATRIXEXPRESSIONSSTART);}
6268  YY_BREAK
6269 case 446:
6270 /* rule 446 can match eol */
6272 #line 693 "../../../../OS/src/OSParsers/OSParseosol.l"
6273 {YY_PRINT; return(MATRIXEXPRESSIONSEND);}
6274  YY_BREAK
6275 case 447:
6276 /* rule 447 can match eol */
6278 #line 694 "../../../../OS/src/OSParsers/OSParseosol.l"
6279 {YY_PRINT; return(NUMBEROFEXPR);}
6280  YY_BREAK
6281 case 448:
6282 /* rule 448 can match eol */
6284 #line 695 "../../../../OS/src/OSParsers/OSParseosol.l"
6285 {YY_PRINT; return(EXPRSTART);}
6286  YY_BREAK
6287 case 449:
6288 /* rule 449 can match eol */
6290 #line 696 "../../../../OS/src/OSParsers/OSParseosol.l"
6291 {YY_PRINT; return(EXPREND);}
6292  YY_BREAK
6293 case 450:
6294 /* rule 450 can match eol */
6296 #line 698 "../../../../OS/src/OSParsers/OSParseosol.l"
6297 {YY_PRINT; return(MATRIXDETERMINANTSTART);}
6298  YY_BREAK
6299 case 451:
6300 /* rule 451 can match eol */
6302 #line 699 "../../../../OS/src/OSParsers/OSParseosol.l"
6303 {YY_PRINT; return(MATRIXDETERMINANTEND);}
6304  YY_BREAK
6305 case 452:
6306 /* rule 452 can match eol */
6308 #line 700 "../../../../OS/src/OSParsers/OSParseosol.l"
6309 {YY_PRINT; return(MATRIXTRACESTART);}
6310  YY_BREAK
6311 case 453:
6312 /* rule 453 can match eol */
6314 #line 701 "../../../../OS/src/OSParsers/OSParseosol.l"
6315 {YY_PRINT; return(MATRIXTRACEEND);}
6316  YY_BREAK
6317 case 454:
6318 /* rule 454 can match eol */
6320 #line 702 "../../../../OS/src/OSParsers/OSParseosol.l"
6321 {YY_PRINT; return(MATRIXTOSCALARSTART);}
6322  YY_BREAK
6323 case 455:
6324 /* rule 455 can match eol */
6326 #line 703 "../../../../OS/src/OSParsers/OSParseosol.l"
6327 {YY_PRINT; return(MATRIXTOSCALAREND);}
6328  YY_BREAK
6329 /* patterns for <matrixTerms> in <matrixConstraints> and <matrixObjectives>*/
6330 case 456:
6331 /* rule 456 can match eol */
6333 #line 707 "../../../../OS/src/OSParsers/OSParseosol.l"
6334 {YY_PRINT; return(NUMBEROFMATRIXTERMSATT);}
6335  YY_BREAK
6336 case 457:
6337 /* rule 457 can match eol */
6339 #line 708 "../../../../OS/src/OSParsers/OSParseosol.l"
6340 {YY_PRINT; return(MATRIXTERMSTART);}
6341  YY_BREAK
6342 case 458:
6343 /* rule 458 can match eol */
6345 #line 709 "../../../../OS/src/OSParsers/OSParseosol.l"
6346 {YY_PRINT; return(MATRIXTERMEND);}
6347  YY_BREAK
6348 case 459:
6349 /* rule 459 can match eol */
6351 #line 711 "../../../../OS/src/OSParsers/OSParseosol.l"
6352 {YY_PRINT; return(MATRIXREFERENCESTART);}
6353  YY_BREAK
6354 case 460:
6355 /* rule 460 can match eol */
6357 #line 712 "../../../../OS/src/OSParsers/OSParseosol.l"
6358 {YY_PRINT; return(MATRIXREFERENCEEND);}
6359  YY_BREAK
6360 case 461:
6361 /* rule 461 can match eol */
6363 #line 713 "../../../../OS/src/OSParsers/OSParseosol.l"
6364 {YY_PRINT; return(MATRIXDIAGONALSTART);}
6365  YY_BREAK
6366 case 462:
6367 /* rule 462 can match eol */
6369 #line 714 "../../../../OS/src/OSParsers/OSParseosol.l"
6370 {YY_PRINT; return(MATRIXDIAGONALEND);}
6371  YY_BREAK
6372 case 463:
6373 /* rule 463 can match eol */
6375 #line 715 "../../../../OS/src/OSParsers/OSParseosol.l"
6376 {YY_PRINT; return(MATRIXDOTTIMESSTART);}
6377  YY_BREAK
6378 case 464:
6379 /* rule 464 can match eol */
6381 #line 716 "../../../../OS/src/OSParsers/OSParseosol.l"
6382 {YY_PRINT; return(MATRIXDOTTIMESEND);}
6383  YY_BREAK
6384 case 465:
6385 /* rule 465 can match eol */
6387 #line 717 "../../../../OS/src/OSParsers/OSParseosol.l"
6388 {YY_PRINT; return(MATRIXINVERSESTART);}
6389  YY_BREAK
6390 case 466:
6391 /* rule 466 can match eol */
6393 #line 718 "../../../../OS/src/OSParsers/OSParseosol.l"
6394 {YY_PRINT; return(MATRIXINVERSEEND);}
6395  YY_BREAK
6396 case 467:
6397 /* rule 467 can match eol */
6399 #line 719 "../../../../OS/src/OSParsers/OSParseosol.l"
6401  YY_BREAK
6402 case 468:
6403 /* rule 468 can match eol */
6405 #line 720 "../../../../OS/src/OSParsers/OSParseosol.l"
6406 {YY_PRINT; return(MATRIXLOWERTRIANGLEEND);}
6407  YY_BREAK
6408 case 469:
6409 /* rule 469 can match eol */
6411 #line 721 "../../../../OS/src/OSParsers/OSParseosol.l"
6413  YY_BREAK
6414 case 470:
6415 /* rule 470 can match eol */
6417 #line 722 "../../../../OS/src/OSParsers/OSParseosol.l"
6418 {YY_PRINT; return(MATRIXUPPERTRIANGLEEND);}
6419  YY_BREAK
6420 case 471:
6421 /* rule 471 can match eol */
6423 #line 723 "../../../../OS/src/OSParsers/OSParseosol.l"
6424 {YY_PRINT; return(MATRIXMERGESTART);}
6425  YY_BREAK
6426 case 472:
6427 /* rule 472 can match eol */
6429 #line 724 "../../../../OS/src/OSParsers/OSParseosol.l"
6430 {YY_PRINT; return(MATRIXMERGEEND);}
6431  YY_BREAK
6432 case 473:
6433 /* rule 473 can match eol */
6435 #line 725 "../../../../OS/src/OSParsers/OSParseosol.l"
6436 {YY_PRINT; return(MATRIXMINUSSTART);}
6437  YY_BREAK
6438 case 474:
6439 /* rule 474 can match eol */
6441 #line 726 "../../../../OS/src/OSParsers/OSParseosol.l"
6442 {YY_PRINT; return(MATRIXMINUSEND);}
6443  YY_BREAK
6444 case 475:
6445 /* rule 475 can match eol */
6447 #line 727 "../../../../OS/src/OSParsers/OSParseosol.l"
6448 {YY_PRINT; return(MATRIXNEGATESTART);}
6449  YY_BREAK
6450 case 476:
6451 /* rule 476 can match eol */
6453 #line 728 "../../../../OS/src/OSParsers/OSParseosol.l"
6454 {YY_PRINT; return(MATRIXNEGATEEND);}
6455  YY_BREAK
6456 case 477:
6457 /* rule 477 can match eol */
6459 #line 729 "../../../../OS/src/OSParsers/OSParseosol.l"
6460 {YY_PRINT; return(MATRIXPLUSSTART);}
6461  YY_BREAK
6462 case 478:
6463 /* rule 478 can match eol */
6465 #line 730 "../../../../OS/src/OSParsers/OSParseosol.l"
6466 {YY_PRINT; return(MATRIXPLUSEND);}
6467  YY_BREAK
6468 case 479:
6469 /* rule 479 can match eol */
6471 #line 731 "../../../../OS/src/OSParsers/OSParseosol.l"
6472 {YY_PRINT; return(MATRIXTIMESSTART);}
6473  YY_BREAK
6474 case 480:
6475 /* rule 480 can match eol */
6477 #line 732 "../../../../OS/src/OSParsers/OSParseosol.l"
6478 {YY_PRINT; return(MATRIXTIMESEND);}
6479  YY_BREAK
6480 case 481:
6481 /* rule 481 can match eol */
6483 #line 733 "../../../../OS/src/OSParsers/OSParseosol.l"
6484 {YY_PRINT; return(MATRIXPRODUCTSTART);}
6485  YY_BREAK
6486 case 482:
6487 /* rule 482 can match eol */
6489 #line 734 "../../../../OS/src/OSParsers/OSParseosol.l"
6490 {YY_PRINT; return(MATRIXPRODUCTEND);}
6491  YY_BREAK
6492 case 483:
6493 /* rule 483 can match eol */
6495 #line 735 "../../../../OS/src/OSParsers/OSParseosol.l"
6496 {YY_PRINT; return(MATRIXSCALARTIMESSTART);}
6497  YY_BREAK
6498 case 484:
6499 /* rule 484 can match eol */
6501 #line 736 "../../../../OS/src/OSParsers/OSParseosol.l"
6502 {YY_PRINT; return(MATRIXSCALARTIMESEND);}
6503  YY_BREAK
6504 case 485:
6505 /* rule 485 can match eol */
6507 #line 737 "../../../../OS/src/OSParsers/OSParseosol.l"
6508 {YY_PRINT; return(MATRIXSUBMATRIXATSTART);}
6509  YY_BREAK
6510 case 486:
6511 /* rule 486 can match eol */
6513 #line 738 "../../../../OS/src/OSParsers/OSParseosol.l"
6514 {YY_PRINT; return(MATRIXSUBMATRIXATEND);}
6515  YY_BREAK
6516 case 487:
6517 /* rule 487 can match eol */
6519 #line 739 "../../../../OS/src/OSParsers/OSParseosol.l"
6520 {YY_PRINT; return(MATRIXTRANSPOSESTART);}
6521  YY_BREAK
6522 case 488:
6523 /* rule 488 can match eol */
6525 #line 740 "../../../../OS/src/OSParsers/OSParseosol.l"
6526 {YY_PRINT; return(MATRIXTRANSPOSEEND);}
6527  YY_BREAK
6528 case 489:
6529 /* rule 489 can match eol */
6531 #line 741 "../../../../OS/src/OSParsers/OSParseosol.l"
6532 {YY_PRINT; return(IDENTITYMATRIXSTART);}
6533  YY_BREAK
6534 case 490:
6535 /* rule 490 can match eol */
6537 #line 742 "../../../../OS/src/OSParsers/OSParseosol.l"
6538 {YY_PRINT; return(IDENTITYMATRIXEND);}
6539  YY_BREAK
6540 /* attributes returning strings (that are potentially empty)*/
6541 case 491:
6542 /* rule 491 can match eol */
6544 #line 746 "../../../../OS/src/OSParsers/OSParseosol.l"
6545 {YY_PRINT; return(EMPTYIDATT);}
6546  YY_BREAK
6547 case 492:
6548 /* rule 492 can match eol */
6550 #line 747 "../../../../OS/src/OSParsers/OSParseosol.l"
6551 {YY_PRINT; return(EMPTYIDATT);}
6552  YY_BREAK
6553 case 493:
6554 /* rule 493 can match eol */
6556 #line 748 "../../../../OS/src/OSParsers/OSParseosol.l"
6558  YY_BREAK
6559 case 494:
6560 /* rule 494 can match eol */
6562 #line 749 "../../../../OS/src/OSParsers/OSParseosol.l"
6564  YY_BREAK
6565 case 495:
6566 /* rule 495 can match eol */
6568 #line 751 "../../../../OS/src/OSParsers/OSParseosol.l"
6570  YY_BREAK
6571 case 496:
6572 /* rule 496 can match eol */
6574 #line 752 "../../../../OS/src/OSParsers/OSParseosol.l"
6576  YY_BREAK
6577 case 497:
6578 /* rule 497 can match eol */
6580 #line 753 "../../../../OS/src/OSParsers/OSParseosol.l"
6582  YY_BREAK
6583 case 498:
6584 /* rule 498 can match eol */
6586 #line 754 "../../../../OS/src/OSParsers/OSParseosol.l"
6588  YY_BREAK
6589 /* last section of OSParseosol.l */
6590 /* environments and comments */
6591 case 499:
6592 /* rule 499 can match eol */
6594 #line 759 "../../../../OS/src/OSParsers/OSParseosol.l"
6595 { YY_PRINT; yylval->sval = strdup( yytext); yyextra->errorText = yylval->sval; /* yylval->sval = yytext;*/ return (ELEMENTTEXT); }
6596  YY_BREAK
6597 case 500:
6598 /* rule 500 can match eol */
6600 #line 760 "../../../../OS/src/OSParsers/OSParseosol.l"
6601 { YY_PRINT; yylval->sval = strdup( yytext); BEGIN 0; yyextra->errorText = yylval->sval; /*yylval->sval = yytext;*/ return (ITEMTEXT); }
6602  YY_BREAK
6603 case 501:
6605 #line 762 "../../../../OS/src/OSParsers/OSParseosol.l"
6606 BEGIN comment;
6607  YY_BREAK
6608 case 502:
6609 #line 764 "../../../../OS/src/OSParsers/OSParseosol.l"
6610 case 503:
6611 /* rule 503 can match eol */
6613 #line 764 "../../../../OS/src/OSParsers/OSParseosol.l"
6614 ;
6615  YY_BREAK
6616 case 504:
6618 #line 765 "../../../../OS/src/OSParsers/OSParseosol.l"
6619 BEGIN 0;
6620  YY_BREAK
6621 case 505:
6623 #line 767 "../../../../OS/src/OSParsers/OSParseosol.l"
6624 BEGIN xmldeclaration;
6625  YY_BREAK
6626 case 506:
6627 #line 769 "../../../../OS/src/OSParsers/OSParseosol.l"
6628 case 507:
6629 /* rule 507 can match eol */
6631 #line 769 "../../../../OS/src/OSParsers/OSParseosol.l"
6632 ;
6633  YY_BREAK
6634 case 508:
6636 #line 770 "../../../../OS/src/OSParsers/OSParseosol.l"
6637 BEGIN 0;
6638  YY_BREAK
6639 case 509:
6640 /* rule 509 can match eol */
6642 #line 773 "../../../../OS/src/OSParsers/OSParseosol.l"
6643 {YY_PRINT; BEGIN 0; yylval->sval = strdup(yytext); /*yylval->sval = yytext;*/ return(ATTRIBUTETEXT);}
6644  YY_BREAK
6645 case 510:
6646 /* rule 510 can match eol */
6648 #line 774 "../../../../OS/src/OSParsers/OSParseosol.l"
6649 {YY_PRINT; BEGIN 0; yylval->sval = strdup(yytext); /*yylval->sval = yytext;*/ return(ATTRIBUTETEXT);}
6650  YY_BREAK
6651 case 511:
6652 /* rule 511 can match eol */
6654 #line 775 "../../../../OS/src/OSParsers/OSParseosol.l"
6655 {YY_PRINT; BEGIN 0; /*yylval->sval = strdup(yytext);*/ yylval->sval = yytext; return(OSOLATTRIBUTETEXT);}
6656  YY_BREAK
6657 /* error trap */
6658 case 512:
6659 /* rule 512 can match eol */
6661 #line 779 "../../../../OS/src/OSParsers/OSParseosol.l"
6662 {
6663  std::string error;
6664  std::ostringstream outStr;
6665  outStr << "encountered a spurious character in the lexer" << std::endl;
6666  outStr << "The first character is: ";
6667  outStr << yytext;
6668  outStr << std::endl;
6669  outStr << "See line number: " << yylineno << std::endl;
6670  error = outStr.str();
6671  throw ErrorClass( error);
6672 }
6673  YY_BREAK
6674 case 513:
6676 #line 791 "../../../../OS/src/OSParsers/OSParseosol.l"
6677 ECHO;
6678  YY_BREAK
6679 #line 6680 "../../../../OS/src/OSParsers/OSParseosol.cpp"
6680 case YY_STATE_EOF(INITIAL):
6686 case YY_STATE_EOF(itemtext):
6687 case YY_STATE_EOF(comment):
6688 case YY_STATE_EOF(xmldeclaration):
6689  yyterminate();
6690 
6691  case YY_END_OF_BUFFER:
6692  {
6693  /* Amount of text matched not including the EOB char. */
6694  int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
6695 
6696  /* Undo the effects of YY_DO_BEFORE_ACTION. */
6697  *yy_cp = yyg->yy_hold_char;
6699 
6700  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
6701  {
6702  /* We're scanning a new file or input source. It's
6703  * possible that this happened because the user
6704  * just pointed yyin at a new source and called
6705  * osollex(). If so, then we have to assure
6706  * consistency between YY_CURRENT_BUFFER and our
6707  * globals. Here is the right place to do so, because
6708  * this is the first action (other than possibly a
6709  * back-up) that will match for the new input source.
6710  */
6711  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6712  YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
6713  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
6714  }
6715 
6716  /* Note that here we test for yy_c_buf_p "<=" to the position
6717  * of the first EOB in the buffer, since yy_c_buf_p will
6718  * already have been incremented past the NUL character
6719  * (since all states make transitions on EOB to the
6720  * end-of-buffer state). Contrast this with the test
6721  * in input().
6722  */
6723  if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
6724  { /* This was really a NUL. */
6725  yy_state_type yy_next_state;
6726 
6727  yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
6728 
6729  yy_current_state = yy_get_previous_state( yyscanner );
6730 
6731  /* Okay, we're now positioned to make the NUL
6732  * transition. We couldn't have
6733  * yy_get_previous_state() go ahead and do it
6734  * for us because it doesn't know how to deal
6735  * with the possibility of jamming (and we don't
6736  * want to build jamming into it because then it
6737  * will run more slowly).
6738  */
6739 
6740  yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
6741 
6742  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
6743 
6744  if ( yy_next_state )
6745  {
6746  /* Consume the NUL. */
6747  yy_cp = ++yyg->yy_c_buf_p;
6748  yy_current_state = yy_next_state;
6749  goto yy_match;
6750  }
6751 
6752  else
6753  {
6754  yy_cp = yyg->yy_c_buf_p;
6755  goto yy_find_action;
6756  }
6757  }
6758 
6759  else switch ( yy_get_next_buffer( yyscanner ) )
6760  {
6761  case EOB_ACT_END_OF_FILE:
6762  {
6763  yyg->yy_did_buffer_switch_on_eof = 0;
6764 
6765  if ( osolwrap(yyscanner ) )
6766  {
6767  /* Note: because we've taken care in
6768  * yy_get_next_buffer() to have set up
6769  * yytext, we can now set up
6770  * yy_c_buf_p so that if some total
6771  * hoser (like flex itself) wants to
6772  * call the scanner after we return the
6773  * YY_NULL, it'll still work - another
6774  * YY_NULL will get returned.
6775  */
6776  yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
6777 
6778  yy_act = YY_STATE_EOF(YY_START);
6779  goto do_action;
6780  }
6781 
6782  else
6783  {
6784  if ( ! yyg->yy_did_buffer_switch_on_eof )
6785  YY_NEW_FILE;
6786  }
6787  break;
6788  }
6789 
6790  case EOB_ACT_CONTINUE_SCAN:
6791  yyg->yy_c_buf_p =
6792  yyg->yytext_ptr + yy_amount_of_matched_text;
6793 
6794  yy_current_state = yy_get_previous_state( yyscanner );
6795 
6796  yy_cp = yyg->yy_c_buf_p;
6797  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
6798  goto yy_match;
6799 
6800  case EOB_ACT_LAST_MATCH:
6801  yyg->yy_c_buf_p =
6802  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
6803 
6804  yy_current_state = yy_get_previous_state( yyscanner );
6805 
6806  yy_cp = yyg->yy_c_buf_p;
6807  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
6808  goto yy_find_action;
6809  }
6810  break;
6811  }
6812 
6813  default:
6815  "fatal flex scanner internal error--no action found" );
6816  } /* end of action switch */
6817  } /* end of scanning one token */
6818 } /* end of osollex */
6819 
6820 /* yy_get_next_buffer - try to read in a new buffer
6821  *
6822  * Returns a code representing an action:
6823  * EOB_ACT_LAST_MATCH -
6824  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
6825  * EOB_ACT_END_OF_FILE - end of file
6826  */
6827 static int yy_get_next_buffer (yyscan_t yyscanner)
6828 {
6829  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
6830  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
6831  register char *source = yyg->yytext_ptr;
6832  register int number_to_move, i;
6833  int ret_val;
6834 
6835  if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
6837  "fatal flex scanner internal error--end of buffer missed" );
6838 
6839  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
6840  { /* Don't try to fill the buffer, so this is an EOF. */
6841  if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
6842  {
6843  /* We matched a single character, the EOB, so
6844  * treat this as a final EOF.
6845  */
6846  return EOB_ACT_END_OF_FILE;
6847  }
6848 
6849  else
6850  {
6851  /* We matched some text prior to the EOB, first
6852  * process it.
6853  */
6854  return EOB_ACT_LAST_MATCH;
6855  }
6856  }
6857 
6858  /* Try to read more data. */
6859 
6860  /* First move last chars to start of buffer. */
6861  number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
6862 
6863  for ( i = 0; i < number_to_move; ++i )
6864  *(dest++) = *(source++);
6865 
6866  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
6867  /* don't do the read, it's not guaranteed to return an EOF,
6868  * just force an EOF
6869  */
6870  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
6871 
6872  else
6873  {
6874  int num_to_read =
6875  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6876 
6877  while ( num_to_read <= 0 )
6878  { /* Not enough room in the buffer - grow it. */
6879 
6880  /* just a shorter name for the current buffer */
6881  YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
6882 
6883  int yy_c_buf_p_offset =
6884  (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
6885 
6886  if ( b->yy_is_our_buffer )
6887  {
6888  int new_size = b->yy_buf_size * 2;
6889 
6890  if ( new_size <= 0 )
6891  b->yy_buf_size += b->yy_buf_size / 8;
6892  else
6893  b->yy_buf_size *= 2;
6894 
6895  b->yy_ch_buf = (char *)
6896  /* Include room in for 2 EOB chars. */
6897  osolrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
6898  }
6899  else
6900  /* Can't grow it, we don't own it. */
6901  b->yy_ch_buf = 0;
6902 
6903  if ( ! b->yy_ch_buf )
6905  "fatal error - scanner input buffer overflow" );
6906 
6907  yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
6908 
6909  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
6910  number_to_move - 1;
6911 
6912  }
6913 
6914  if ( num_to_read > YY_READ_BUF_SIZE )
6915  num_to_read = YY_READ_BUF_SIZE;
6916 
6917  /* Read in more data. */
6918  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6919  yyg->yy_n_chars, (size_t) num_to_read );
6920 
6921  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
6922  }
6923 
6924  if ( yyg->yy_n_chars == 0 )
6925  {
6926  if ( number_to_move == YY_MORE_ADJ )
6927  {
6928  ret_val = EOB_ACT_END_OF_FILE;
6929  osolrestart(yyin ,yyscanner);
6930  }
6931 
6932  else
6933  {
6934  ret_val = EOB_ACT_LAST_MATCH;
6935  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6937  }
6938  }
6939 
6940  else
6941  ret_val = EOB_ACT_CONTINUE_SCAN;
6942 
6943  if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6944  /* Extend the array by 50%, plus the number we really need. */
6945  yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
6946  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) osolrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
6947  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6948  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
6949  }
6950 
6951  yyg->yy_n_chars += number_to_move;
6954 
6955  yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6956 
6957  return ret_val;
6958 }
6959 
6960 /* yy_get_previous_state - get the state just before the EOB char was reached */
6961 
6963 {
6965  register char *yy_cp;
6966  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
6967 
6968  yy_current_state = yyg->yy_start;
6969 
6970  for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
6971  {
6972  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
6973  if ( yy_accept[yy_current_state] )
6974  {
6977  }
6978  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6979  {
6980  yy_current_state = (int) yy_def[yy_current_state];
6981  if ( yy_current_state >= 3833 )
6982  yy_c = yy_meta[(unsigned int) yy_c];
6983  }
6984  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6985  }
6986 
6987  return yy_current_state;
6988 }
6989 
6990 /* yy_try_NUL_trans - try to make a transition on the NUL character
6991  *
6992  * synopsis
6993  * next_state = yy_try_NUL_trans( current_state );
6994  */
6995  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
6996 {
6997  register int yy_is_jam;
6998  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
6999  register char *yy_cp = yyg->yy_c_buf_p;
7000 
7001  register YY_CHAR yy_c = 1;
7002  if ( yy_accept[yy_current_state] )
7003  {
7006  }
7007  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
7008  {
7009  yy_current_state = (int) yy_def[yy_current_state];
7010  if ( yy_current_state >= 3833 )
7011  yy_c = yy_meta[(unsigned int) yy_c];
7012  }
7013  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
7014  yy_is_jam = (yy_current_state == 3832);
7015 
7016  return yy_is_jam ? 0 : yy_current_state;
7017 }
7018 
7019 #ifndef YY_NO_INPUT
7020 #ifdef __cplusplus
7021  static int yyinput (yyscan_t yyscanner)
7022 #else
7023  static int input (yyscan_t yyscanner)
7024 #endif
7025 
7026 {
7027  int c;
7028  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7029 
7030  *yyg->yy_c_buf_p = yyg->yy_hold_char;
7031 
7032  if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
7033  {
7034  /* yy_c_buf_p now points to the character we want to return.
7035  * If this occurs *before* the EOB characters, then it's a
7036  * valid NUL; if not, then we've hit the end of the buffer.
7037  */
7038  if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
7039  /* This was really a NUL. */
7040  *yyg->yy_c_buf_p = '\0';
7041 
7042  else
7043  { /* need more input */
7044  int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
7045  ++yyg->yy_c_buf_p;
7046 
7047  switch ( yy_get_next_buffer( yyscanner ) )
7048  {
7049  case EOB_ACT_LAST_MATCH:
7050  /* This happens because yy_g_n_b()
7051  * sees that we've accumulated a
7052  * token and flags that we need to
7053  * try matching the token before
7054  * proceeding. But for input(),
7055  * there's no matching to consider.
7056  * So convert the EOB_ACT_LAST_MATCH
7057  * to EOB_ACT_END_OF_FILE.
7058  */
7059 
7060  /* Reset buffer status. */
7061  osolrestart(yyin ,yyscanner);
7062 
7063  /*FALLTHROUGH*/
7064 
7065  case EOB_ACT_END_OF_FILE:
7066  {
7067  if ( osolwrap(yyscanner ) )
7068  return EOF;
7069 
7070  if ( ! yyg->yy_did_buffer_switch_on_eof )
7071  YY_NEW_FILE;
7072 #ifdef __cplusplus
7073  return yyinput(yyscanner);
7074 #else
7075  return input(yyscanner);
7076 #endif
7077  }
7078 
7079  case EOB_ACT_CONTINUE_SCAN:
7080  yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
7081  break;
7082  }
7083  }
7084  }
7085 
7086  c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
7087  *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
7088  yyg->yy_hold_char = *++yyg->yy_c_buf_p;
7089 
7090  if ( c == '\n' )
7091 
7092  do{ yylineno++;
7093  yycolumn=0;
7094  }while(0)
7095 ;
7096 
7097  return c;
7098 }
7099 #endif /* ifndef YY_NO_INPUT */
7100 
7106  void osolrestart (FILE * input_file , yyscan_t yyscanner)
7107 {
7108  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7109 
7110  if ( ! YY_CURRENT_BUFFER ){
7111  osolensure_buffer_stack (yyscanner);
7113  osol_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
7114  }
7115 
7116  osol_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
7117  osol_load_buffer_state(yyscanner );
7118 }
7119 
7124  void osol_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
7125 {
7126  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7127 
7128  /* TODO. We should be able to replace this entire function body
7129  * with
7130  * osolpop_buffer_state();
7131  * osolpush_buffer_state(new_buffer);
7132  */
7133  osolensure_buffer_stack (yyscanner);
7134  if ( YY_CURRENT_BUFFER == new_buffer )
7135  return;
7136 
7137  if ( YY_CURRENT_BUFFER )
7138  {
7139  /* Flush out information for old buffer. */
7140  *yyg->yy_c_buf_p = yyg->yy_hold_char;
7141  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
7142  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
7143  }
7144 
7145  YY_CURRENT_BUFFER_LVALUE = new_buffer;
7146  osol_load_buffer_state(yyscanner );
7147 
7148  /* We don't actually know whether we did this switch during
7149  * EOF (osolwrap()) processing, but the only time this flag
7150  * is looked at is after osolwrap() is called, so it's safe
7151  * to go ahead and always set it.
7152  */
7153  yyg->yy_did_buffer_switch_on_eof = 1;
7154 }
7155 
7156 static void osol_load_buffer_state (yyscan_t yyscanner)
7157 {
7158  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7159  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
7160  yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
7161  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
7162  yyg->yy_hold_char = *yyg->yy_c_buf_p;
7163 }
7164 
7171  YY_BUFFER_STATE osol_create_buffer (FILE * file, int size , yyscan_t yyscanner)
7172 {
7173  YY_BUFFER_STATE b;
7174 
7175  b = (YY_BUFFER_STATE) osolalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
7176  if ( ! b )
7177  YY_FATAL_ERROR( "out of dynamic memory in osol_create_buffer()" );
7178 
7179  b->yy_buf_size = size;
7180 
7181  /* yy_ch_buf has to be 2 characters longer than the size given because
7182  * we need to put in 2 end-of-buffer characters.
7183  */
7184  b->yy_ch_buf = (char *) osolalloc(b->yy_buf_size + 2 ,yyscanner );
7185  if ( ! b->yy_ch_buf )
7186  YY_FATAL_ERROR( "out of dynamic memory in osol_create_buffer()" );
7187 
7188  b->yy_is_our_buffer = 1;
7189 
7190  osol_init_buffer(b,file ,yyscanner);
7191 
7192  return b;
7193 }
7194 
7199  void osol_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
7200 {
7201  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7202 
7203  if ( ! b )
7204  return;
7205 
7206  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
7208 
7209  if ( b->yy_is_our_buffer )
7210  osolfree((void *) b->yy_ch_buf ,yyscanner );
7211 
7212  osolfree((void *) b ,yyscanner );
7213 }
7214 
7215 #ifndef __cplusplus
7216 extern int isatty (int );
7217 #endif /* __cplusplus */
7218 
7219 /* Initializes or reinitializes a buffer.
7220  * This function is sometimes called more than once on the same buffer,
7221  * such as during a osolrestart() or at EOF.
7222  */
7223  static void osol_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
7224 
7225 {
7226  int oerrno = errno;
7227  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7228 
7229  osol_flush_buffer(b ,yyscanner);
7230 
7231  b->yy_input_file = file;
7232  b->yy_fill_buffer = 1;
7233 
7234  /* If b is the current buffer, then osol_init_buffer was _probably_
7235  * called from osolrestart() or through yy_get_next_buffer.
7236  * In that case, we don't want to reset the lineno or column.
7237  */
7238  if (b != YY_CURRENT_BUFFER){
7239  b->yy_bs_lineno = 1;
7240  b->yy_bs_column = 0;
7241  }
7242 
7243  b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
7244 
7245  errno = oerrno;
7246 }
7247 
7252  void osol_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
7253 {
7254  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7255  if ( ! b )
7256  return;
7257 
7258  b->yy_n_chars = 0;
7259 
7260  /* We always need two end-of-buffer characters. The first causes
7261  * a transition to the end-of-buffer state. The second causes
7262  * a jam in that state.
7263  */
7266 
7267  b->yy_buf_pos = &b->yy_ch_buf[0];
7268 
7269  b->yy_at_bol = 1;
7271 
7272  if ( b == YY_CURRENT_BUFFER )
7273  osol_load_buffer_state(yyscanner );
7274 }
7275 
7282 void osolpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
7283 {
7284  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7285  if (new_buffer == NULL)
7286  return;
7287 
7288  osolensure_buffer_stack(yyscanner);
7289 
7290  /* This block is copied from osol_switch_to_buffer. */
7291  if ( YY_CURRENT_BUFFER )
7292  {
7293  /* Flush out information for old buffer. */
7294  *yyg->yy_c_buf_p = yyg->yy_hold_char;
7295  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
7296  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
7297  }
7298 
7299  /* Only push if top exists. Otherwise, replace top. */
7300  if (YY_CURRENT_BUFFER)
7301  yyg->yy_buffer_stack_top++;
7302  YY_CURRENT_BUFFER_LVALUE = new_buffer;
7303 
7304  /* copied from osol_switch_to_buffer. */
7305  osol_load_buffer_state(yyscanner );
7306  yyg->yy_did_buffer_switch_on_eof = 1;
7307 }
7308 
7314 {
7315  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7316  if (!YY_CURRENT_BUFFER)
7317  return;
7318 
7320  YY_CURRENT_BUFFER_LVALUE = NULL;
7321  if (yyg->yy_buffer_stack_top > 0)
7322  --yyg->yy_buffer_stack_top;
7323 
7324  if (YY_CURRENT_BUFFER) {
7325  osol_load_buffer_state(yyscanner );
7326  yyg->yy_did_buffer_switch_on_eof = 1;
7327  }
7328 }
7329 
7330 /* Allocates the stack if it does not exist.
7331  * Guarantees space for at least one push.
7332  */
7333 static void osolensure_buffer_stack (yyscan_t yyscanner)
7334 {
7335  int num_to_alloc;
7336  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7337 
7338  if (!yyg->yy_buffer_stack) {
7339 
7340  /* First allocation is just for 2 elements, since we don't know if this
7341  * scanner will even need a stack. We use 2 instead of 1 to avoid an
7342  * immediate realloc on the next call.
7343  */
7344  num_to_alloc = 1;
7345  yyg->yy_buffer_stack = (struct yy_buffer_state**)osolalloc
7346  (num_to_alloc * sizeof(struct yy_buffer_state*)
7347  , yyscanner);
7348  if ( ! yyg->yy_buffer_stack )
7349  YY_FATAL_ERROR( "out of dynamic memory in osolensure_buffer_stack()" );
7350 
7351  memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
7352 
7353  yyg->yy_buffer_stack_max = num_to_alloc;
7354  yyg->yy_buffer_stack_top = 0;
7355  return;
7356  }
7357 
7358  if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
7359 
7360  /* Increase the buffer to prepare for a possible push. */
7361  int grow_size = 8 /* arbitrary grow size */;
7362 
7363  num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
7365  (yyg->yy_buffer_stack,
7366  num_to_alloc * sizeof(struct yy_buffer_state*)
7367  , yyscanner);
7368  if ( ! yyg->yy_buffer_stack )
7369  YY_FATAL_ERROR( "out of dynamic memory in osolensure_buffer_stack()" );
7370 
7371  /* zero only the new slots.*/
7372  memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
7373  yyg->yy_buffer_stack_max = num_to_alloc;
7374  }
7375 }
7376 
7383 YY_BUFFER_STATE osol_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
7384 {
7385  YY_BUFFER_STATE b;
7386 
7387  if ( size < 2 ||
7388  base[size-2] != YY_END_OF_BUFFER_CHAR ||
7389  base[size-1] != YY_END_OF_BUFFER_CHAR )
7390  /* They forgot to leave room for the EOB's. */
7391  return 0;
7392 
7393  b = (YY_BUFFER_STATE) osolalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
7394  if ( ! b )
7395  YY_FATAL_ERROR( "out of dynamic memory in osol_scan_buffer()" );
7396 
7397  b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
7398  b->yy_buf_pos = b->yy_ch_buf = base;
7399  b->yy_is_our_buffer = 0;
7400  b->yy_input_file = 0;
7401  b->yy_n_chars = b->yy_buf_size;
7402  b->yy_is_interactive = 0;
7403  b->yy_at_bol = 1;
7404  b->yy_fill_buffer = 0;
7406 
7407  osol_switch_to_buffer(b ,yyscanner );
7408 
7409  return b;
7410 }
7411 
7420 YY_BUFFER_STATE osol_scan_string (yyconst char * yystr , yyscan_t yyscanner)
7421 {
7422 
7423  return osol_scan_bytes(yystr,strlen(yystr) ,yyscanner);
7424 }
7425 
7433 YY_BUFFER_STATE osol_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
7434 {
7435  YY_BUFFER_STATE b;
7436  char *buf;
7437  yy_size_t n;
7438  int i;
7439 
7440  /* Get memory for full buffer, including space for trailing EOB's. */
7441  n = _yybytes_len + 2;
7442  buf = (char *) osolalloc(n ,yyscanner );
7443  if ( ! buf )
7444  YY_FATAL_ERROR( "out of dynamic memory in osol_scan_bytes()" );
7445 
7446  for ( i = 0; i < _yybytes_len; ++i )
7447  buf[i] = yybytes[i];
7448 
7449  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
7450 
7451  b = osol_scan_buffer(buf,n ,yyscanner);
7452  if ( ! b )
7453  YY_FATAL_ERROR( "bad buffer in osol_scan_bytes()" );
7454 
7455  /* It's okay to grow etc. this buffer, and we should throw it
7456  * away when we're done.
7457  */
7458  b->yy_is_our_buffer = 1;
7459 
7460  return b;
7461 }
7462 
7463 #ifndef YY_EXIT_FAILURE
7464 #define YY_EXIT_FAILURE 2
7465 #endif
7466 
7467 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
7468 {
7469  (void) fprintf( stderr, "%s\n", msg );
7470  exit( YY_EXIT_FAILURE );
7471 }
7472 
7473 /* Redefine yyless() so it works in section 3 code. */
7474 
7475 #undef yyless
7476 #define yyless(n) \
7477  do \
7478  { \
7479  /* Undo effects of setting up yytext. */ \
7480  int yyless_macro_arg = (n); \
7481  YY_LESS_LINENO(yyless_macro_arg);\
7482  yytext[yyleng] = yyg->yy_hold_char; \
7483  yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
7484  yyg->yy_hold_char = *yyg->yy_c_buf_p; \
7485  *yyg->yy_c_buf_p = '\0'; \
7486  yyleng = yyless_macro_arg; \
7487  } \
7488  while ( 0 )
7489 
7490 /* Accessor methods (get/set functions) to struct members. */
7491 
7496 {
7497  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7498  return yyextra;
7499 }
7500 
7504 int osolget_lineno (yyscan_t yyscanner)
7505 {
7506  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7507 
7508  if (! YY_CURRENT_BUFFER)
7509  return 0;
7510 
7511  return yylineno;
7512 }
7513 
7517 int osolget_column (yyscan_t yyscanner)
7518 {
7519  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7520 
7521  if (! YY_CURRENT_BUFFER)
7522  return 0;
7523 
7524  return yycolumn;
7525 }
7526 
7530 FILE *osolget_in (yyscan_t yyscanner)
7531 {
7532  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7533  return yyin;
7534 }
7535 
7539 FILE *osolget_out (yyscan_t yyscanner)
7540 {
7541  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7542  return yyout;
7543 }
7544 
7548 int osolget_leng (yyscan_t yyscanner)
7549 {
7550  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7551  return yyleng;
7552 }
7553 
7558 char *osolget_text (yyscan_t yyscanner)
7559 {
7560  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7561  return yytext;
7562 }
7563 
7568 void osolset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
7569 {
7570  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7571  yyextra = user_defined ;
7572 }
7573 
7578 void osolset_lineno (int line_number , yyscan_t yyscanner)
7579 {
7580  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7581 
7582  /* lineno is only valid if an input buffer exists. */
7583  if (! YY_CURRENT_BUFFER )
7584  yy_fatal_error( "osolset_lineno called with no buffer" , yyscanner);
7585 
7586  yylineno = line_number;
7587 }
7588 
7593 void osolset_column (int column_no , yyscan_t yyscanner)
7594 {
7595  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7596 
7597  /* column is only valid if an input buffer exists. */
7598  if (! YY_CURRENT_BUFFER )
7599  yy_fatal_error( "osolset_column called with no buffer" , yyscanner);
7600 
7601  yycolumn = column_no;
7602 }
7603 
7610 void osolset_in (FILE * in_str , yyscan_t yyscanner)
7611 {
7612  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7613  yyin = in_str ;
7614 }
7615 
7616 void osolset_out (FILE * out_str , yyscan_t yyscanner)
7617 {
7618  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7619  yyout = out_str ;
7620 }
7621 
7622 int osolget_debug (yyscan_t yyscanner)
7623 {
7624  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7625  return yy_flex_debug;
7626 }
7627 
7628 void osolset_debug (int bdebug , yyscan_t yyscanner)
7629 {
7630  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7631  yy_flex_debug = bdebug ;
7632 }
7633 
7634 /* Accessor methods for yylval and yylloc */
7635 
7637 {
7638  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7639  return yylval;
7640 }
7641 
7642 void osolset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
7643 {
7644  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7645  yylval = yylval_param;
7646 }
7647 
7649 {
7650  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7651  return yylloc;
7652 }
7653 
7654 void osolset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner)
7655 {
7656  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7657  yylloc = yylloc_param;
7658 }
7659 
7660 /* User-visible API */
7661 
7662 /* osollex_init is special because it creates the scanner itself, so it is
7663  * the ONLY reentrant function that doesn't take the scanner as the last argument.
7664  * That's why we explicitly handle the declaration, instead of using our macros.
7665  */
7666 
7667 int osollex_init(yyscan_t* ptr_yy_globals)
7668 
7669 {
7670  if (ptr_yy_globals == NULL){
7671  errno = EINVAL;
7672  return 1;
7673  }
7674 
7675  *ptr_yy_globals = (yyscan_t) osolalloc ( sizeof( struct yyguts_t ), NULL );
7676 
7677  if (*ptr_yy_globals == NULL){
7678  errno = ENOMEM;
7679  return 1;
7680  }
7681 
7682  /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
7683  memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
7684 
7685  return yy_init_globals ( *ptr_yy_globals );
7686 }
7687 
7688 /* osollex_init_extra has the same functionality as osollex_init, but follows the
7689  * convention of taking the scanner as the last argument. Note however, that
7690  * this is a *pointer* to a scanner, as it will be allocated by this call (and
7691  * is the reason, too, why this function also must handle its own declaration).
7692  * The user defined value in the first argument will be available to osolalloc in
7693  * the yyextra field.
7694  */
7695 
7696 int osollex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
7697 
7698 {
7699  struct yyguts_t dummy_yyguts;
7700 
7701  osolset_extra (yy_user_defined, &dummy_yyguts);
7702 
7703  if (ptr_yy_globals == NULL){
7704  errno = EINVAL;
7705  return 1;
7706  }
7707 
7708  *ptr_yy_globals = (yyscan_t) osolalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
7709 
7710  if (*ptr_yy_globals == NULL){
7711  errno = ENOMEM;
7712  return 1;
7713  }
7714 
7715  /* By setting to 0xAA, we expose bugs in
7716  yy_init_globals. Leave at 0x00 for releases. */
7717  memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
7718 
7719  osolset_extra (yy_user_defined, *ptr_yy_globals);
7720 
7721  return yy_init_globals ( *ptr_yy_globals );
7722 }
7723 
7724 static int yy_init_globals (yyscan_t yyscanner)
7725 {
7726  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7727  /* Initialization is the same as for the non-reentrant scanner.
7728  * This function is called from osollex_destroy(), so don't allocate here.
7729  */
7730 
7731  yyg->yy_buffer_stack = 0;
7732  yyg->yy_buffer_stack_top = 0;
7733  yyg->yy_buffer_stack_max = 0;
7734  yyg->yy_c_buf_p = (char *) 0;
7735  yyg->yy_init = 0;
7736  yyg->yy_start = 0;
7737 
7738  yyg->yy_start_stack_ptr = 0;
7739  yyg->yy_start_stack_depth = 0;
7740  yyg->yy_start_stack = NULL;
7741 
7742 /* Defined in main.c */
7743 #ifdef YY_STDINIT
7744  yyin = stdin;
7745  yyout = stdout;
7746 #else
7747  yyin = (FILE *) 0;
7748  yyout = (FILE *) 0;
7749 #endif
7750 
7751  /* For future reference: Set errno on error, since we are called by
7752  * osollex_init()
7753  */
7754  return 0;
7755 }
7756 
7757 /* osollex_destroy is for both reentrant and non-reentrant scanners. */
7758 int osollex_destroy (yyscan_t yyscanner)
7759 {
7760  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
7761 
7762  /* Pop the buffer stack, destroying each element. */
7763  while(YY_CURRENT_BUFFER){
7765  YY_CURRENT_BUFFER_LVALUE = NULL;
7766  osolpop_buffer_state(yyscanner);
7767  }
7768 
7769  /* Destroy the stack itself. */
7770  osolfree(yyg->yy_buffer_stack ,yyscanner);
7771  yyg->yy_buffer_stack = NULL;
7772 
7773  /* Destroy the start condition stack. */
7774  osolfree(yyg->yy_start_stack ,yyscanner );
7775  yyg->yy_start_stack = NULL;
7776 
7777  /* Reset the globals. This is important in a non-reentrant scanner so the next time
7778  * osollex() is called, initialization will occur. */
7779  yy_init_globals( yyscanner);
7780 
7781  /* Destroy the main struct (reentrant only). */
7782  osolfree ( yyscanner , yyscanner );
7783  yyscanner = NULL;
7784  return 0;
7785 }
7786 
7787 /*
7788  * Internal utility routines.
7789  */
7790 
7791 #ifndef yytext_ptr
7792 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
7793 {
7794  register int i;
7795  for ( i = 0; i < n; ++i )
7796  s1[i] = s2[i];
7797 }
7798 #endif
7799 
7800 #ifdef YY_NEED_STRLEN
7801 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
7802 {
7803  register int n;
7804  for ( n = 0; s[n]; ++n )
7805  ;
7806 
7807  return n;
7808 }
7809 #endif
7810 
7811 void *osolalloc (yy_size_t size , yyscan_t yyscanner)
7812 {
7813  return (void *) malloc( size );
7814 }
7815 
7816 void *osolrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
7817 {
7818  /* The cast to (char *) in the following accommodates both
7819  * implementations that use char* generic pointers, and those
7820  * that use void* generic pointers. It works with the latter
7821  * because both ANSI C and C++ allow castless assignment from
7822  * any pointer type to void*, and deal with argument conversions
7823  * as though doing an assignment.
7824  */
7825  return (void *) realloc( (char *) ptr, size );
7826 }
7827 
7828 void osolfree (void * ptr , yyscan_t yyscanner)
7829 {
7830  free( (char *) ptr ); /* see osolrealloc() for (char *) cast */
7831 }
7832 
7833 #define YYTABLES_NAME "yytables"
7834 
7835 #line 791 "../../../../OS/src/OSParsers/OSParseosol.l"
7836 
7837 
7838 
7839 
7840 
#define BASEMATRIXSTARTCOLATT
#define EMPTYMATRIXTYPEATT
#define OTHEROPTIONSSTART
#define EMPTYLBVALUEATT
register char * yy_bp
#define MATRICESEND
#define GENERALEND
#define ELEMENTSSTART
#define EOB_ACT_LAST_MATCH
#define SYSTEMEND
#define ENUMTYPEATT
#define ABSSTART
#define SOLVEROPTIONEND
#define MINCPUNUMBEREND
#define PATHSTART
#define GROUPWEIGHTATT
#define BEGIN
#define yylval
#define INPUTFILESTOMOVEEND
#define INSTANCENAMEEND
#define INITIALOBJECTIVEBOUNDSEND
#define FILEDESCRIPTIONSTART
#define yyconst
#define INITIALDUALVALUESEND
#define FILECREATOREMPTY
#define INSTANCENAMESTART
#define YY_RULE_SETUP
#define UBVALUEATT
size_t yy_buffer_stack_top
index of top of stack.
#define EMPTYWEIGHTATT
#define yyterminate()
#define MATRIXOBJECTIVESSTART
#define SOLVEROPTIONSEND
#define NUMBEROFPATHPAIRSATT
#define CONSTRAINTSEND
#define UBDUALVALUEATT
#define EMPTYCATEGORYATT
#define EMPTYSOLVERATT
#define FILELICENCESTARTANDEND
#define SYMMETRYATT
int yy_start_stack_depth
FILE * osolget_out(yyscan_t yyscanner)
Get the output stream.
#define EMPTYROWMAJORATT
#define MATRIXNEGATEEND
#define SQUAREEND
#define DEPENDENCIESSTART
#define MATRIXSUBMATRIXATSTART
#define ELEND
#define FILESTOMAKEEND
#define NUMBEROFOTHEROBJECTIVEOPTIONSATT
#define SOSSTART
#define MATRIXMINUSSTART
#define ELSTART
#define LICENSESTART
#define MATRIXTOSCALARSTART
static yyconst flex_int16_t yy_nxt[6187]
#define DESCRIPTIONATT
#define NUMBEROFSOLVEROPTIONSATT
#define YY_EXIT_FAILURE
#define EMPTYVALUEATT
#define IDENTITYMATRIXEND
#define COEFATT
#define INITIALOBJECTIVEBOUNDSSTART
#define INSTANCELOCATIONSTART
#define NONZEROSSTART
#define YY_CURRENT_BUFFER
#define CONREFERENCEELEMENTSEND
#define YY_BUFFER_EOF_PENDING
#define startelement
#define MATRIXCONSTRAINTSSTART
#define VARIDXSTART
unsigned char flex_uint8_t
Definition: OSParseosil.cpp:78
#define MATRIXCONSTRAINTSEND
#define BLOCKSEND
#define EMPTYMATRIXVARTYPEATT
#define NUMBEREND
#define JOBEND
#define FILELICENCEEND
FILE * yyin_r
#define YY_START
#define UNKNOWNSTART
void osolset_column(int column_no, yyscan_t yyscanner)
Set the current column.
#define OUTPUTFILESTOMOVESTART
#define DIVIDESTART
#define scanner
#define LINEARELEMENTSEND
#define MATRIXOBJIDXATT
#define CONTACTEND
void osolpop_buffer_state(yyscan_t yyscanner)
Removes and deletes the top of the stack, if present.
#define BASEMATRIXSTART
#define NUMBEROFVALUESATT
#define VARIABLEEND
#define YY_SC_TO_UI(c)
#define BLOCKCOLIDXATT
#define MATRIXDIAGONALSTART
static int input(yyscan_t yyscanner)
int osolget_column(yyscan_t yyscanner)
Get the current column number.
int osollex_init(void **ptr_yy_globals)
#define yyextra
#define UNKNOWNEND
#define YY_NEW_FILE
#define ROWOFFSETEND
#define comment
#define NUMBEROFROWSATT
void osol_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner)
Switch to a different input buffer.
#define NUMBEROFOTHERVARIABLEOPTIONSATT
#define SOLVERTOINVOKESTART
#define MATRIXVARIDXATT
#define NUMBEROFPATHSATT
static void osol_init_buffer(YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner)
#define YY_BREAK
#define ENUMERATIONSTART
#define MATRIXREFERENCEEND
#define NUMBEROFCONATT
#define NUMBEROFMATRIXOBJATT
#define SOSVARIABLEBRANCHINGWEIGHTSSTART
#define HEADERSTART
#define FILENAMEEND
#define MATRIXTERMSTART
#define BASEMATRIXSTARTROWATT
#define MATRIXPLUSEND
char yy_hold_char
#define MATRIXMINUSEND
#define NUMBEROFELATT
#define NUMBEROFSOSATT
#define PISTART
FILE * osolget_in(yyscan_t yyscanner)
Get the input stream.
char * osolget_text(yyscan_t yyscanner)
Get the current token.
#define FROMATT
#define MATRIXVARSTART
static void yy_fatal_error(yyconst char msg[], yyscan_t yyscanner)
#define MATRIXEXPRESSIONSEND
#define MINEND
int yy_more_flag
#define ITEMTEXT
if(!yyg->yy_init)
#define MATRIXDETERMINANTSTART
#define VARIABLESTART
#define ROWMAJORATT
int yy_bs_lineno
The line count.
static yy_state_type yy_try_NUL_trans(yy_state_type current_state, yyscan_t yyscanner)
#define LNSTART
#define YY_READ_BUF_SIZE
#define INITIALCONSTRAINTVALUESEND
#define SOSVARIABLEBRANCHINGWEIGHTSEND
#define REQUIREDDIRECTORIESSTART
#define NUMBEROFMATRIXTERMSATT
#define OTHEREND
size_t yy_size_t
#define EXPEND
#define YY_EXTRA_TYPE
char * yytext_r
#define MATRIXMERGEEND
#define YY_BUF_SIZE
#define REQUIREDFILESSTART
#define ISFREESTART
static int yy_init_globals(yyscan_t yyscanner)
#define OUTPUTFILESTOMOVEEND
#define NEGATEEND
#define ESTART
#define EXPSTART
#define QUOTE
#define EOB_ACT_END_OF_FILE
#define doublequoteattributetext
int osollex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t *scanner)
#define POWEREND
#define TARGETMATRIXFIRSTCOLATT
#define YY_MORE_ADJ
#define DIVIDEEND
int osollex_destroy(void *scanner)
#define LINEARELEMENTSSTART
#define INITIALVARIABLEVALUESSTRINGEND
int isatty(int)
#define REQUIREDDIRECTORIESEND
size_t yy_buffer_stack_max
capacity of stack.
#define MATRIXSTART
#define EMPTYMATRIXCONTYPEATT
#define OTHEROPTIONSEND
static void osol_load_buffer_state(yyscan_t yyscanner)
#define INSTANCELOCATIONEND
#define MATRIXOBJECTIVESEND
#define SOSIDXATT
#define YY_INPUT(buf, result, max_size)
#define EMPTYNAMEATT
#define SYSTEMSTART
#define FILEDESCRIPTIONSTARTANDEND
#define NUMBEROFPROCESSESATT
YY_BUFFER_STATE osol_scan_bytes(yyconst char *bytes, int len, yyscan_t yyscanner)
Setup the input buffer state to scan the given bytes.
#define MATRIXTIMESSTART
int yy_state_type
#define INTEGERVARIABLEBRANCHINGWEIGHTSEND
#define PROCESSESTOKILLSTART
void osolset_in(FILE *in_str, yyscan_t yyscanner)
Set the input stream.
#define yylineno
yy_size_t yy_buf_size
#define DIRECTORIESTODELETEEND
#define VALUESTART
#define MATRIXINVERSEEND
YY_EXTRA_TYPE yyextra_r
#define yycolumn
#define COLOFFSETEND
#define EMPTYSHAPEATT
#define VARIABLESEND
#define BLOCKSTART
#define NAMEATT
static void osolensure_buffer_stack(yyscan_t yyscanner)
#define MATRIXDOTTIMESSTART
#define MATRIXREFERENCESTART
#define EMPTYTYPEATT
#define SOLVEROPTIONSSTART
register int yy_act
#define SINSTART
#define INTEGERVARIABLEBRANCHINGWEIGHTSSTART
#define TARGETMATRIXFIRSTROWATT
#define OBJTYPEATT
#define SQUARESTART
#define EMPTYVALUETYPEATT
unsigned int flex_uint32_t
Definition: OSParseosil.cpp:80
#define HEADEREND
#define POWERSTART
void osolset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner)
static int yy_get_next_buffer(yyscan_t yyscanner)
#define CONTACTSTART
double os_strtod_wrap(const char *str, char **strEnd)
Definition: OSMathUtil.cpp:125
#define BLOCKROWIDXATT
#define GENERALELEMENTSEND
#define INITIALVARIABLEVALUESSTRINGSTART
#define VALUESEND
char * yy_c_buf_p
#define PATHEND
struct yy_buffer_state * YY_BUFFER_STATE
#define TOATT
#define itemtext
#define CONSTART
#define OPTIMIZATIONEND
#define GREATERTHAN
#define SINEND
void * osolalloc(yy_size_t, yyscan_t yyscanner)
YY_BUFFER_STATE osol_scan_string(yyconst char *yy_str, yyscan_t yyscanner)
Setup the input buffer state to scan a string.
#define YY_RESTORE_YY_MORE_OFFSET
#define NLEND
#define MAXEND
#define MATRIXPRODUCTSTART
#define FILEDESCRIPTIONEND
void osolset_extra(OSoLParserData *parserData, void *yyscanner)
int osolget_lineno(yyscan_t yyscanner)
Get the current line number.
#define SERVICETYPESTART
#define MATRIXTRANSPOSEEND
#define MINCPUNUMBERSTART
#define OBJEND
#define CONSTRAINTSSTART
#define MATRIXVARTYPEATT
#define MATRIXEND
#define FILENAMESTARTANDEND
#define OBJREFERENCEELEMENTSEND
#define YY_DO_BEFORE_ACTION
#define MATRIXSCALARTIMESEND
#define BASEMATRIXENDROWATT
int yy_did_buffer_switch_on_eof
#define MATRIXCONSTART
#define INPUTFILESTOMOVESTART
#define REQUESTEDSTARTTIMEEND
#define NONLINEAREXPRESSIONSSTART
#define NUMBEROFVARIABLESATT
#define yyin
#define INDEXSTART
YY_BUFFER_STATE osol_create_buffer(FILE *file, int size, yyscan_t yyscanner)
Allocate and initialize an input buffer state.
#define ATLOWERSTART
int yy_bs_column
The column count.
#define CONTYPEATT
#define VAREND
#define MINCPUSPEEDEND
#define SERVICEURISTART
#define NUMBEROFENUMERATIONSATT
#define INITIALCONSTRAINTVALUESSTART
short int flex_int16_t
Definition: OSParseosil.cpp:76
#define MINUSEND
int osolget_leng(yyscan_t yyscanner)
Get the length of the current token.
#define MATRIXPRODUCTEND
void osolset_lineno(int line_number, yyscan_t yyscanner)
Set the current line number.
#define FILECREATORSTART
#define CATEGORYATT
#define SERVICENAMEEND
#define SOLVEROPTIONSTART
#define CONEND
#define FILENAMESTART
#define ITEMEMPTY
#define VARSTART
#define ITEMSTARTANDEND
#define IDXATT
#define NUMBEROFJOBIDSATT
void osolpush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner)
Pushes the new state onto the stack.
#define osolattributetext
#define OBJREFERENCEELEMENTSSTART
#define YY_BUFFER_NORMAL
#define MATRIXUPPERTRIANGLESTART
YY_BUFFER_STATE osol_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner)
Setup the input buffer state to scan directly from a user-specified character buffer.
#define DEPENDENCIESEND
#define MATRIXOBJSTART
#define JOBIDEND
#define EXPRSTART
#define xmldeclaration
#define FILESOURCESTART
#define MATRIXCONIDXATT
#define MATRIXCONTYPEATT
#define MATRIXPROGRAMMINGSTART
#define PLUSSTART
#define NUMBEROFMATRIXVARATT
#define INDEXEND
#define MINMEMORYEND
#define BASEMATRIXEND
CONST unsigned char * s1
Definition: OSdtoa.cpp:1814
#define MATRIXTRACESTART
#define MATRIXLOWERTRIANGLESTART
int yy_flex_debug_r
#define MINDISKSPACESTART
static yyconst flex_int16_t yy_accept[3833]
#define VARTYPEATT
YY_DECL register yy_state_type yy_current_state
The main scanner function which does all the work.
#define MATRIXVARIABLESSTART
void osol_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner)
Discard all buffered characters.
#define LOCATIONTYPEATT
#define BLOCKEND
#define FILESOURCEEMPTY
#define SERVICEEND
#define VALUEEND
#define OBJECTIVESSTART
#define TRANSPORTTYPEATT
#define PATHPAIREND
#define INITIALBASISSTATUSEND
#define ITEMEND
#define ISFREEEND
int yy_start_stack_ptr
#define EMPTYOBJTYPEATT
#define MATRIXINVERSESTART
#define FILESOURCEEND
#define EMPTYVARTYPEATT
#define SOLVERTOINVOKEEND
int * yy_start_stack
#define ERFSTART
#define FILECREATORSTARTANDEND
#define MATRIXMERGESTART
#define OPTIMIZATIONSTART
#define ABSEND
#define yyout
#define OBJSTART
#define YY_END_OF_BUFFER
#define SOLVERATT
#define elementtext
#define YY_FATAL_ERROR(msg)
#define ATLOWEREND
#define MATRICESSTART
#define NUMBEROFBLOCKSATT
#define MATRIXTERMEND
register char * yy_cp
void fint fint fint fint fint fint fint fint fint fint real real real real real real real real * s
#define SERVICEURIEND
#define OSOLATTRIBUTETEXT
#define VARIABLESSTART
#define MINSTART
#define NUMBEROFEXPR
#define OTHERSTART
#define SERVICESTART
#define MAXTIMESTART
#define NUMBEROFMATRIXCONATT
#define NEGATESTART
#define NUMBEROFNONLINEAREXPRESSIONS
#define PROCESSEND
#define VALUEATT
#define FILESOURCESTARTANDEND
#define INITIALDUALVALUESSTART
#define MATRIXDIAGONALEND
#define MATRIXTYPEATT
static int
Definition: OSdtoa.cpp:2173
static yy_state_type yy_get_previous_state(yyscan_t yyscanner)
#define WEIGHTATT
#define EMPTYSYMMETRYATT
#define EXPREND
#define REQUIREDFILESEND
#define OBJECTIVESEND
#define MATRIXTOSCALAREND
#define INITIALVARIABLEVALUESSTART
#define PRODUCTSTART
#define IDATT
#define FILEDESCRIPTIONEMPTY
#define INTEGER
#define BLOCKSSTART
#define ELEMENTTEXT
#define NLSTART
#define IDENTITYMATRIXSTART
int osollex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)
#define SUPERBASICSTART
yy_state_type yy_last_accepting_state
#define MATRIXNEGATESTART
#define osolwrap(n)
#define MATRIXCONEND
#define SCALARMULTIPLIERATT
#define NUMBEROFOTHEROPTIONSATT
#define EMPTYENUMTYPEATT
#define IFSTART
int flex_int32_t
Definition: OSParseosil.cpp:77
#define LNEND
#define YY_END_OF_BUFFER_CHAR
#define TRANSFORMATIONEND
#define INCLUDEDIAGONALATT
#define NUMBERSTART
#define SUMSTART
#define ENDOFELEMENT
#define GENERALELEMENTSSTART
#define BASE64START
#define MATRIXSUBMATRIXATEND
#define LICENSEEND
#define yytext
#define PASSWORDSTART
#define OSOLSTARTEMPTY
#define MINCPUSPEEDSTART
#define singlequoteattributetext
#define MAKECOPYATT
#define OUTPUTDIRECTORIESTOMOVEEND
#define yylloc
#define MATRIXOBJEND
#define MATRIXTIMESEND
#define REQUESTEDSTARTTIMESTART
#define INDEXESEND
#define FILELICENCESTART
#define MATRIXEXPRESSIONSSTART
void osol_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner)
Destroy the buffer.
#define MATRIXDOTTIMESEND
#define INPUTDIRECTORIESTOMOVEEND
#define STRINGVALUEDELEMENTSEND
#define FILELICENCEEMPTY
#define NUMBEROFOBJECTIVESATT
#define NUMBEROFVARATT
#define NUMBEROFOTHERCONSTRAINTOPTIONSATT
#define BASE64END
#define VARREFERENCEELEMENTSSTART
#define USERNAMESTART
YYLTYPE * yylloc_r
#define PROCESSSTART
unsigned short int flex_uint16_t
Definition: OSParseosil.cpp:79
#define EMPTYMATRIXOBJTYPEATT
flex_int32_t yy_verify
#define MINDISKSPACEEND
void * yyscan_t
#define YY_BUFFER_NEW
#define CONSTANTELEMENTSSTART
#define DOUBLE
#define COLOFFSETSTART
#define INITIALOBJECTIVEVALUESSTART
#define MATRIXPLUSSTART
#define LBVALUEATT
#define YY_DECL
#define YY_CURRENT_BUFFER_LVALUE
static yyconst flex_int32_t yy_ec[256]
YY_EXTRA_TYPE osolget_extra(yyscan_t yyscanner)
Get the user-defined data for this scanner.
#define MATRIXSCALARTIMESSTART
#define TRANSFORMATIONSTART
#define yy_flex_debug
#define GENERALSTART
#define NUMBEROFCOLUMNSATT
#define JOBIDSTART
void osolrestart(FILE *input_file, yyscan_t yyscanner)
Immediately switch to a different input stream.
#define ELEMENTSEND
#define EMPTYIDATT
#define VARREFERENCEELEMENTSEND
#define MATRIXLOWERTRIANGLEEND
static void
Definition: OSdtoa.cpp:1741
void osolfree(void *, yyscan_t yyscanner)
static yyconst flex_int32_t yy_meta[67]
#define MATRIXVARIABLESEND
YYLTYPE * osolget_lloc(yyscan_t yyscanner)
#define STARTVECTOREND
#define CONSTANTELEMENTSEND
static yyconst flex_int16_t yy_def[3845]
unsigned char YY_CHAR
#define TWOQUOTES
#define INITIALBASISSTATUSSTART
static yyconst flex_int16_t yy_base[3845]
#define PASSWORDEND
#define TIMESEND
void osolset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner)
#define VALUESSTART
static yyconst flex_int16_t yy_chk[6187]
#define CONREFERENCEELEMENTSSTART
#define MAXSTART
flex_int32_t yy_nxt
#define MATRIXPROGRAMMINGEND
#define INPUTDIRECTORIESTOMOVESTART
#define INCRATT
#define LBDUALVALUEATT
#define MATRIXOBJTYPEATT
#define MINMEMORYSTART
#define ENUMERATIONEND
#define NUMBEROFCONSTRAINTSATT
#define SQRTEND
#define PLUSEND
#define OSOLSTART
#define EMPTYUBVALUEATT
#define CONSTANTATT
#define ATUPPEREND
YYSTYPE * yylval_r
#define INITIAL
FILE * yyout_r
#define MATRIXDETERMINANTEND
#define SERVICENAMESTART
#define NONLINEAREXPRESSIONSEND
#define DIRECTORIESTOMAKEEND
void osolset_debug(int debug_flag, yyscan_t yyscanner)
#define PRODUCTEND
#define INITIALVARIABLEVALUESEND
#define MATRIXVAREND
#define EEND
#define UNITATT
#define BASICEND
void * osolrealloc(void *, yy_size_t, yyscan_t yyscanner)
#define ECHO
#define YY_STATE_EOF(state)
#define ROWOFFSETSTART
#define BASEMATRIXIDXATT
#define NUMBEROFVARIDXATT
#define SQRTSTART
#define OUTPUTDIRECTORIESTOMOVESTART
#define TIMESSTART
#define OSOLEND
#define INDEXESSTART
#define FILENAMEEMPTY
#define BASETRANSPOSEATT
#define SUPERBASICEND
#define EMPTYUNITATT
#define ATTRIBUTETEXT
int osolget_debug(yyscan_t yyscanner)
#define BASICSTART
#define VARIDXEND
void osolset_out(FILE *out_str, yyscan_t yyscanner)
#define COSSTART
#define USERNAMEEND
#define DIRECTORIESTOMAKESTART
#define PATHPAIRSTART
#define ALLDIFFEND
#define PIEND
YY_BUFFER_STATE * yy_buffer_stack
Stack as an array.
#define EMPTYINCLUDEDIAGONALATT
char * yy_last_accepting_cpos
#define EMPTYCONTYPEATT
#define SUMEND
#define NONZEROSEND
#define ATUPPERSTART
used for throwing exceptions.
Definition: OSErrorClass.h:31
#define SHAPEATT
void fint * n
#define JOBSTART
#define ATEQUALITYEND
#define ALLDIFFSTART
#define FILECREATOREND
return b
Definition: OSdtoa.cpp:1719
signed char flex_int8_t
Definition: OSParseosil.cpp:75
#define INITIALOBJECTIVEVALUESEND
#define FILESTODELETESTART
#define ERFEND
#define NUMBEROFITEMSATT
#define MINUSSTART
real c
#define MULTATT
#define ATEQUALITYSTART
#define SOSEND
#define NUMBEROFMATRICESATT
#define SERVICETYPEEND
#define EMPTYBASETRANSPOSEATT
#define MATRIXUPPERTRIANGLEEND
struct yyguts_t * yyg
#define PROCESSESTOKILLEND
#define MATRIXTRACEEND
static yyconst flex_int32_t yy_rule_can_match_eol[514]
#define EOB_ACT_CONTINUE_SCAN
#define FILESTOMAKESTART
#define TYPEATT
#define NUMBEROFOBJATT
static YYSIZE_T const char * yystr
#define STRINGVALUEDELEMENTSSTART
#define MAXTIMEEND
#define DIRECTORIESTODELETESTART
#define FILESTODELETEEND
#define SIZEOFATT
YYSTYPE * osolget_lval(yyscan_t yyscanner)
#define EMPTYDESCRIPTIONATT
#define VALUETYPEATT
#define yyleng
#define IFEND
#define BASEMATRIXENDCOLATT
#define ITEMSTART
#define YY_PRINT
#define STARTVECTORSTART
#define MATRIXTRANSPOSESTART
#define COSEND