1 /*  c2ps - C/C++ to Postscript Converter
2     Copyright (C)  1995-1997  Dmitri Shtilman, Dmitri Makarov
3 
4 c2ps is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8 
9 c2ps is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License
15 along with c2ps; see the file COPYING.  If not, write to
16 the Free Software Foundation, 59 Temple Place - Suite 330,
17 Boston, MA 02111-1307, USA.
18 
19 Send your comments, questions and bug reports to c2ps@geocities.com
20 */
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 #define FLEX_SCANNER
49 #define YY_FLEX_MAJOR_VERSION 2
50 #define YY_FLEX_MINOR_VERSION 5
51 
52 #include <stdio.h>
53 
54 
55 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
56 #ifdef c_plusplus
57 #ifndef __cplusplus
58 #define __cplusplus
59 #endif
60 #endif
61 
62 
63 #ifdef __cplusplus
64 
65 #include <stdlib.h>
66 #include <unistd.h>
67 
68 /* Use prototypes in function declarations. */
69 #define YY_USE_PROTOS
70 
71 /* The "const" storage-class-modifier is valid. */
72 #define YY_USE_CONST
73 
74 #else	/* ! __cplusplus */
75 
76 #if __STDC__
77 
78 #define YY_USE_PROTOS
79 #define YY_USE_CONST
80 
81 #endif	/* __STDC__ */
82 #endif	/* ! __cplusplus */
83 
84 #ifdef __TURBOC__
85  #pragma warn -rch
86  #pragma warn -use
87 #include <io.h>
88 #include <stdlib.h>
89 #define YY_USE_CONST
90 #define YY_USE_PROTOS
91 #endif
92 
93 #ifdef YY_USE_CONST
94 #define yyconst const
95 #else
96 #define yyconst
97 #endif
98 
99 
100 #ifdef YY_USE_PROTOS
101 #define YY_PROTO(proto) proto
102 #else
103 #define YY_PROTO(proto) ()
104 #endif
105 
106 /* Returned upon end-of-file. */
107 #define YY_NULL 0
108 
109 /* Promotes a possibly negative, possibly signed char to an unsigned
110  * integer for use as an array index.  If the signed char is negative,
111  * we want to instead treat it as an 8-bit unsigned char, hence the
112  * double cast.
113  */
114 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
115 
116 /* Enter a start condition.  This macro really ought to take a parameter,
117  * but we do it the disgusting crufty way forced on us by the ()-less
118  * definition of BEGIN.
119  */
120 #define BEGIN yy_start = 1 + 2 *
121 
122 /* Translate the current start state into a value that can be later handed
123  * to BEGIN to return to the state.  The YYSTATE alias is for lex
124  * compatibility.
125  */
126 #define YY_START ((yy_start - 1) / 2)
127 #define YYSTATE YY_START
128 
129 /* Action number for EOF rule of a given start state. */
130 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
131 
132 /* Special action meaning "start processing a new file". */
133 #define YY_NEW_FILE yyrestart( yyin )
134 
135 #define YY_END_OF_BUFFER_CHAR 0
136 
137 /* Size of default input buffer. */
138 #define YY_BUF_SIZE 16384
139 
140 typedef struct yy_buffer_state *YY_BUFFER_STATE;
141 
142 extern int yyleng;
143 extern FILE *yyin, *yyout;
144 
145 #define EOB_ACT_CONTINUE_SCAN 0
146 #define EOB_ACT_END_OF_FILE 1
147 #define EOB_ACT_LAST_MATCH 2
148 
149 /* The funky do-while in the following #define is used to turn the definition
150  * int a single C statement (which needs a semi-colon terminator).  This
151  * avoids problems with code like:
152  *
153  * 	if ( condition_holds )
154  *		yyless( 5 );
155  *	else
156  *		do_something_else();
157  *
158  * Prior to using the do-while the compiler would get upset at the
159  * "else" because it interpreted the "if" statement as being all
160  * done when it reached the ';' after the yyless() call.
161  */
162 
163 /* Return all but the first 'n' matched characters back to the input stream. */
164 
165 #define yyless(n) \
166 	do \
167 		{ \
168 		/* Undo effects of setting up yytext. */ \
169 		*yy_cp = yy_hold_char; \
170 		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
171 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
172 		} \
173 	while ( 0 )
174 
175 #define unput(c) yyunput( c, yytext_ptr )
176 
177 /* The following is because we cannot portably get our hands on size_t
178  * (without autoconf's help, which isn't available because we want
179  * flex-generated scanners to compile on their own).
180  */
181 typedef unsigned int yy_size_t;
182 
183 
184 struct yy_buffer_state
185 	{
186 	FILE *yy_input_file;
187 
188 	char *yy_ch_buf;		/* input buffer */
189 	char *yy_buf_pos;		/* current position in input buffer */
190 
191 	/* Size of input buffer in bytes, not including room for EOB
192 	 * characters.
193 	 */
194 	yy_size_t yy_buf_size;
195 
196 	/* Number of characters read into yy_ch_buf, not including EOB
197 	 * characters.
198 	 */
199 	int yy_n_chars;
200 
201 	/* Whether we "own" the buffer - i.e., we know we created it,
202 	 * and can realloc() it to grow it, and should free() it to
203 	 * delete it.
204 	 */
205 	int yy_is_our_buffer;
206 
207 	/* Whether this is an "interactive" input source; if so, and
208 	 * if we're using stdio for input, then we want to use getc()
209 	 * instead of fread(), to make sure we stop fetching input after
210 	 * each newline.
211 	 */
212 	int yy_is_interactive;
213 
214 	/* Whether we're considered to be at the beginning of a line.
215 	 * If so, '^' rules will be active on the next match, otherwise
216 	 * not.
217 	 */
218 	int yy_at_bol;
219 
220 	/* Whether to try to fill the input buffer when we reach the
221 	 * end of it.
222 	 */
223 	int yy_fill_buffer;
224 
225 	int yy_buffer_status;
226 #define YY_BUFFER_NEW 0
227 #define YY_BUFFER_NORMAL 1
228 	/* When an EOF's been seen but there's still some text to process
229 	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
230 	 * shouldn't try reading from the input source any more.  We might
231 	 * still have a bunch of tokens to match, though, because of
232 	 * possible backing-up.
233 	 *
234 	 * When we actually see the EOF, we change the status to "new"
235 	 * (via yyrestart()), so that the user can continue scanning by
236 	 * just pointing yyin at a new input file.
237 	 */
238 #define YY_BUFFER_EOF_PENDING 2
239 	};
240 
241 static YY_BUFFER_STATE yy_current_buffer = 0;
242 
243 /* We provide macros for accessing buffer states in case in the
244  * future we want to put the buffer states in a more general
245  * "scanner state".
246  */
247 #define YY_CURRENT_BUFFER yy_current_buffer
248 
249 
250 /* yy_hold_char holds the character lost when yytext is formed. */
251 static char yy_hold_char;
252 
253 static int yy_n_chars;		/* number of characters read into yy_ch_buf */
254 
255 
256 int yyleng;
257 
258 /* Points to current character in buffer. */
259 static char *yy_c_buf_p = (char *) 0;
260 static int yy_init = 1;		/* whether we need to initialize */
261 static int yy_start = 0;	/* start state number */
262 
263 /* Flag which is used to allow yywrap()'s to do buffer switches
264  * instead of setting up a fresh yyin.  A bit of a hack ...
265  */
266 static int yy_did_buffer_switch_on_eof;
267 
268 void yyrestart YY_PROTO(( FILE *input_file ));
269 
270 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
271 void yy_load_buffer_state YY_PROTO(( void ));
272 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
273 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
274 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
275 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
276 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
277 
278 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
279 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
280 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
281 
282 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
283 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
284 static void yy_flex_free YY_PROTO(( void * ));
285 
286 #define yy_new_buffer yy_create_buffer
287 
288 #define yy_set_interactive(is_interactive) \
289 	{ \
290 	if ( ! yy_current_buffer ) \
291 		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
292 	yy_current_buffer->yy_is_interactive = is_interactive; \
293 	}
294 
295 #define yy_set_bol(at_bol) \
296 	{ \
297 	if ( ! yy_current_buffer ) \
298 		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
299 	yy_current_buffer->yy_at_bol = at_bol; \
300 	}
301 
302 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
303 
304 
305 #define YY_USES_REJECT
306 typedef unsigned char YY_CHAR;
307 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
308 typedef int yy_state_type;
309 extern char *yytext;
310 #define yytext_ptr yytext
311 
312 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
313 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
314 static int yy_get_next_buffer YY_PROTO(( void ));
315 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
316 
317 /* Done after the current pattern has been matched and before the
318  * corresponding action - sets up yytext.
319  */
320 #define YY_DO_BEFORE_ACTION \
321 	yytext_ptr = yy_bp; \
322 	yytext_ptr -= yy_more_len; \
323 	yyleng = (int) (yy_cp - yytext_ptr); \
324 	yy_hold_char = *yy_cp; \
325 	*yy_cp = '\0'; \
326 	yy_c_buf_p = yy_cp;
327 
328 #define YY_NUM_RULES 24
329 #define YY_END_OF_BUFFER 25
330 static yyconst short int yy_acclist[450] =
331     {   0,
332         6,    6,    1,    1,   25,   23,   24,   22,   24,   23,
333        24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
334        24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
335        24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
336        24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
337        24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
338        24,    6,   24,    7,   24,   24,   12,   22,   24,   23,
339        24,   23,   24,16397,   23,   24,16397,   23,   24,16397,
340        23,   24,16397,   23,   24,16397,   23,   24,16397,   23,
341        24,16397,   23,   24,16397,   23,   24,16397,   23,   24,
342 
343     16397,   23,   24,16397,   23,   24,16397,   23,   24,16397,
344        23,   24,16397,   23,   24,16397,   23,   24,16397,   23,
345        24,16397,   23,   24,16397,   23,   24,16397,   23,   24,
346     16397,   23,   24,16397,    1,   24,    2,   24,    3,    4,
347         9,   10,    6,    8,    8,    5,   11,16397,16397,16397,
348     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
349     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
350     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
351     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
352     16397,16397,16397,16397,16397,16397,    1,    3,    3,    9,
353 
354         9,   10,   19,   21,16397,16397,16397,16397,16397,16397,
355     16397,16397,16397,16397,16397,16397,16397,   19,   19,   19,
356     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
357     16397,16397,16397,16397,16397,16397,16397,   21,   21,   21,
358     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
359     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
360     16397,16397,16397,16397,16397,16397,16397,   18,   20,   18,
361         3,   18,   18,   20,    3,   20,   20,   18,   18,   20,
362        20,    9,   10,   15, 8205, 8205, 8205,16397,16397,16397,
363     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
364 
365     16397,16397,16397,16397,16397,16397,16397,16397,   15,   15,
366        15,16397,16397,16397,16397,16397,16397,16397,16397,16397,
367     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
368     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
369        14,   14,    3,   14,   14,   14,   14,   10,   17,16397,
370     16397,16397,   17,   17,   17,16397,16397,16397,16397,16397,
371     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
372     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
373     16397,16397,16397,16397,16397,16397,16397,16397,16397,   16,
374        16,    3,   16,   16,   16,   16,16397,16397,16397,16397,
375 
376     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
377     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
378     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
379     16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
380     16397,16397,16397,16397,16397,16397,16397,16397,16397
381     } ;
382 
383 static yyconst short int yy_accept[1433] =
384     {   0,
385         1,    1,    1,    2,    3,    3,    3,    3,    3,    4,
386         5,    6,    8,   10,   12,   14,   16,   18,   20,   22,
387        24,   26,   28,   30,   32,   34,   36,   38,   40,   42,
388        44,   46,   48,   50,   52,   54,   56,   58,   60,   62,
389        64,   66,   67,   70,   72,   75,   78,   81,   84,   87,
390        90,   93,   96,   99,  102,  105,  108,  111,  114,  117,
391       120,  123,  126,  129,  132,  135,  137,  139,  139,  139,
392       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
393       139,  139,  139,  139,  139,  139,  139,  139,  139,  140,
394       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
395 
396       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
397       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
398       140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
399       140,  140,  140,  141,  142,  142,  142,  142,  143,  143,
400       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
401       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
402       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
403       143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
404       143,  143,  143,  143,  143,  143,  143,  144,  145,  146,
405       147,  148,  148,  148,  148,  149,  149,  150,  151,  152,
406 
407       153,  154,  155,  156,  157,  158,  159,  160,  161,  162,
408       163,  164,  165,  166,  167,  168,  169,  170,  171,  172,
409       173,  174,  175,  176,  177,  178,  179,  180,  181,  182,
410       183,  184,  185,  186,  187,  188,  189,  190,  191,  192,
411       193,  194,  195,  196,  197,  198,  198,  198,  198,  198,
412       198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
413       198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
414       198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
415       198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
416       198,  198,  198,  198,  198,  199,  199,  199,  199,  199,
417 
418       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
419       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
420       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
421       199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
422       199,  199,  199,  199,  199,  200,  200,  200,  200,  200,
423       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
424       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
425       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
426       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
427       200,  200,  200,  200,  200,  201,  202,  202,  203,  203,
428 
429       203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
430       203,  203,  203,  204,  204,  204,  204,  204,  204,  204,
431       204,  204,  204,  204,  204,  204,  204,  204,  204,  204,
432       204,  205,  205,  205,  205,  205,  205,  205,  205,  205,
433       205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
434       205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
435       205,  205,  205,  206,  207,  208,  209,  210,  211,  212,
436       213,  214,  215,  216,  217,  218,  219,  220,  221,  222,
437       223,  224,  225,  226,  227,  228,  229,  230,  231,  232,
438       233,  234,  235,  236,  237,  238,  239,  240,  241,  242,
439 
440       243,  244,  245,  246,  247,  248,  249,  250,  251,  252,
441       253,  254,  255,  256,  257,  258,  259,  260,  261,  262,
442       263,  264,  265,  266,  267,  268,  268,  268,  268,  268,
443       268,  268,  268,  268,  268,  268,  268,  268,  268,  269,
444       269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
445       269,  269,  269,  269,  269,  269,  269,  270,  270,  270,
446       270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
447       270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
448       270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
449       270,  270,  270,  270,  270,  270,  270,  270,  271,  273,
450 
451       274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
452       274,  274,  274,  274,  274,  274,  274,  274,  275,  277,
453       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
454       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
455       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
456       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
457       278,  279,  280,  280,  280,  280,  280,  280,  280,  280,
458       280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
459       281,  282,  282,  282,  282,  282,  282,  282,  282,  282,
460       282,  282,  282,  282,  282,  282,  282,  282,  282,  282,
461 
462       282,  282,  282,  282,  282,  282,  282,  282,  282,  283,
463       284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
464       284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
465       284,  285,  285,  285,  285,  285,  285,  285,  285,  285,
466       285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
467       285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
468       285,  286,  287,  288,  288,  289,  289,  290,  291,  292,
469       293,  294,  295,  296,  297,  298,  299,  300,  301,  302,
470       303,  304,  305,  306,  307,  308,  309,  310,  311,  312,
471       313,  314,  315,  316,  317,  318,  319,  320,  321,  322,
472 
473       323,  324,  325,  326,  327,  328,  329,  330,  331,  332,
474       333,  334,  335,  336,  337,  338,  339,  340,  341,  341,
475       341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
476       341,  341,  341,  341,  341,  341,  341,  341,  341,  342,
477       342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
478       342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
479       342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
480       342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
481       342,  342,  342,  342,  342,  342,  342,  342,  342,  343,
482       345,  346,  346,  346,  346,  346,  346,  346,  346,  346,
483 
484       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
485       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
486       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
487       346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
488       346,  347,  348,  348,  348,  348,  348,  348,  348,  348,
489       348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
490       348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
491       348,  348,  349,  349,  349,  350,  350,  350,  350,  350,
492       350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
493       350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
494 
495       350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
496       350,  351,  351,  352,  353,  354,  355,  356,  357,  358,
497       359,  360,  361,  362,  363,  364,  365,  366,  367,  368,
498       369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
499       379,  380,  381,  382,  383,  384,  385,  386,  387,  388,
500       389,  390,  390,  390,  391,  391,  391,  391,  391,  391,
501       391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
502       391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
503       391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
504       391,  392,  394,  395,  395,  395,  395,  395,  395,  395,
505 
506       395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
507       395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
508       395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
509       396,  397,  397,  397,  397,  397,  397,  397,  397,  397,
510       397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
511       397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
512       397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
513       397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
514       397,  397,  397,  397,  397,  397,  398,  399,  400,  401,
515       402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
516 
517       412,  413,  414,  415,  416,  417,  417,  417,  417,  417,
518       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
519       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
520       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
521       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
522       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
523       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
524       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
525       418,  419,  420,  421,  422,  423,  424,  425,  426,  427,
526       428,  429,  430,  431,  431,  431,  431,  431,  431,  431,
527 
528       431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
529       431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
530       431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
531       431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
532       431,  431,  432,  433,  434,  435,  436,  437,  437,  437,
533       437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
534       437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
535       438,  439,  440,  441,  441,  441,  441,  441,  441,  441,
536       441,  441,  441,  441,  441,  441,  441,  441,  441,  442,
537       443,  444,  444,  444,  444,  444,  444,  444,  444,  444,
538 
539       444,  444,  444,  445,  446,  446,  446,  446,  446,  446,
540       446,  446,  447,  447,  447,  447,  447,  448,  448,  448,
541       448,  448,  449,  449,  449,  449,  449,  450,  450,  450,
542       450,  450
543     } ;
544 
545 static yyconst int yy_ec[256] =
546     {   0,
547         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
548         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
549         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
550         1,    2,    1,    4,    5,    1,    1,    1,    6,    7,
551         8,    9,    1,   10,    1,    1,   11,   12,   12,   12,
552        12,   12,   12,   12,   12,   12,   12,   13,   14,    1,
553         1,    1,    1,    1,   15,   15,   15,   15,   15,   15,
554        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
555        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
556         1,   16,    1,    1,   17,    1,   18,   19,   20,   21,
557 
558        22,   23,   24,   25,   26,   15,   27,   28,   29,   30,
559        31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
560        41,   42,   43,    1,   43,   44,    1,    1,    1,    1,
561         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
562         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
563         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
564         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
565         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
566         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
567         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
568 
569         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
570         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
571         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
572         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
573         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
574         1,    1,    1,    1,    1
575     } ;
576 
577 static yyconst int yy_meta[45] =
578     {   0,
579         1,    2,    3,    4,    5,    4,    6,    1,    7,    1,
580         1,    8,    9,   10,   11,   12,   13,   11,   11,   11,
581        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
582        11,   11,   11,   11,   11,   11,   14,   11,   11,   11,
583        11,   11,    4,   15
584     } ;
585 
586 static yyconst short int yy_base[1458] =
587     {   0,
588         0,   44,    9,   12,   88,   14,  132,  176, 3123, 3122,
589      3124,  203,    0,  243, 3127,  287,   11,   21, 3121,    1,
590         1,   75,   83,   79,    6, 3091,   85, 3090, 3083,   11,
591         7,   76, 3097,   86,  125,   86,   92,  129, 3087,    0,
592      3127,  117,    0,  114,  149,  330,  134,  350,  314,  322,
593       338,  346,  311,  353,  137,  364,  364,  305,  375,  388,
594       406,  372,  385,  409,  418,    0, 3127,  400,  127,  375,
595       411,  426,  433, 3086,   97, 3085, 3078,  386,  123,  136,
596      3092,  432,  438,  323,  395,  425, 3082,  462, 3127,  466,
597       473,  478,  488,  483,  447,  489, 3081,  324, 3080, 3073,
598 
599       500,  196,  336, 3087,  500,  507,  443,  502,  510, 3077,
600       531,  230,  507,  512,  554,  542,  546,  559, 3076,  504,
601      3075, 3068,  566,  442,  342, 3082,  555,  567,  510,  569,
602       578, 3072, 3127, 3086,   23, 3099, 3098,    3, 3078, 3069,
603      3061, 3060, 3064, 3072,  569, 3075, 3074,  577,  586, 3054,
604      3060, 3054, 3051,  479, 3059, 3055, 3051, 3058, 3047, 3045,
605       574, 3051, 3044, 3050, 3039, 3041, 3054, 3058,  585, 3055,
606       589, 3042,  554,  594, 3046, 3042,  592,  580, 3038,  521,
607      3043, 3034,  594, 3042, 3040, 3031,    0, 3127,  618, 3127,
608      3127,  416,  628, 3056,  602, 3050,  603,  613,  616,  619,
609 
610       627,  637,  633,  643,  647,  646,  662,  699,  656,  659,
611       681,  687,  697,  698,  710,  711,  719, 3025,  722,  730,
612       733,  742,  743,  751,  754,  791,  780,  784,  800,  792,
613       807,  820,  783,  811,  826,  829,  837,  845,  851,  855,
614       865,  869,  875,  879,    0, 3040, 3031, 3023, 3022, 3026,
615      3034,  609, 3037, 3036,  658,  643, 3016, 3022, 3016, 3013,
616       587, 3021, 3017, 3013, 3020, 3009, 3007,  702, 3013, 3006,
617      3012, 3001, 3003, 3016, 3020,  695, 3017,  738, 3004,  788,
618       661, 3008, 3004,  705,  791, 3000,  740, 3005, 2996,  608,
619      3004, 3002, 2993,    0,    0, 3005, 2996, 2988, 2987, 2991,
620 
621      2999,  843, 3002, 3001,  854,  762,  916, 2988, 2982, 2979,
622       811, 2987, 2983, 2979, 2986, 2975, 2973,  725, 2979, 2972,
623      2978, 2967, 2969, 2982,  960,  827, 2984,  872, 2971,  809,
624       680, 2975, 2971,  839,  866, 2967,  902, 2972, 2963,  905,
625      2971, 2969, 2960,    0,    0,  881, 2972, 2963, 2955, 2954,
626      2958, 2966,  899, 2969, 2968,  909,  913, 1004, 2955, 2949,
627      2946,  879, 2954, 2950, 2946, 2953, 2942, 2940,  840, 2946,
628      2939, 2945, 2934, 2936, 2949, 1048,  914, 2951,  918, 2938,
629       923,  686, 2942, 2938,  917,  909, 2934,  922, 2939, 2930,
630       930, 2938, 2936, 2927, 2944,  644,  970,  973, 2956, 2941,
631 
632      2926,  765, 2928, 2937, 2932, 2933, 2918, 2916, 2918,  943,
633      2931, 2926, 3127, 2928, 2928, 2923, 2915, 2915, 2920, 2906,
634      2922, 2917, 2907, 2911,    0, 2912, 2917, 2912, 2916, 2898,
635      3127, 2909, 2892, 2893, 2900, 2901, 2896, 2888, 2890, 2893,
636      2900, 2885, 2883, 2883, 2886, 2882, 2885, 2893, 2892, 2882,
637      2886, 2881, 2874, 2888, 2890, 2889, 2878, 2888,  971, 2896,
638      1091,  981, 2886,  957,  991, 1003, 1005,  963, 1007, 1033,
639       960, 1008, 1036, 1051, 1052, 1077, 2894, 2888, 1081, 1084,
640      1087, 1048, 1075, 1093, 1090, 1108, 1107, 1116, 1122, 1159,
641      1147, 1146, 1119, 2883, 1155, 1184, 2891, 2885, 1158, 1169,
642 
643      1175, 1185, 1188, 1189, 1197, 1201, 1207, 1211, 1215, 1219,
644      1223, 1231, 1227, 1239, 1243, 1249, 1252, 1255, 1258, 1261,
645      1273, 1281, 1282, 1285, 2880, 2879, 2864, 1008, 2866, 2875,
646      2870, 2871, 2856, 2854, 2856,  966, 2869, 2864, 3127, 2866,
647      2866, 2861, 2853, 2853, 2858, 2844, 2860, 2855, 2845, 2849,
648         0, 2850, 2855, 2850, 2854, 2836, 3127, 2847, 2830, 2831,
649      2838, 2839, 2834, 2826, 2828, 2831, 2838, 2823, 2821, 2821,
650      2824, 2820, 2823, 2831, 2830, 2820, 2824, 2819, 2812, 2826,
651      2828, 2827, 2816, 2826, 2825, 2810, 1178, 2812, 2821, 2816,
652      2817, 2802, 2800, 2802, 1040, 2815, 2810,    0, 3127, 1128,
653 
654      2812, 2812, 2807, 2799, 2799, 2804, 2790, 2806, 2801, 2791,
655      2795, 1322, 2796, 2801, 2796, 2800, 2782,    0, 3127, 1132,
656      2793, 2776, 2777, 2784, 2785, 2780, 2772, 2774, 2777, 2784,
657      2769, 2767, 2767, 2770, 2766, 2769, 2777, 2776, 2766, 2770,
658      2765, 2758, 2772, 2774, 2773, 2762, 2772, 2771, 2756, 1190,
659      2758, 2767, 2762, 2763, 2748, 2746, 2748, 1104, 2761, 2756,
660         0,  975, 2758, 2758, 2753, 2745, 2745, 2750, 2736, 2752,
661      2747, 2737, 2741, 1366, 2742, 2747, 2742, 2746, 2728,    0,
662      1223, 2739, 2722, 2723, 2730, 2731, 2726, 2718, 2720, 2723,
663      2730, 2715, 2713, 2713, 2716, 2712, 2715, 2723, 2722, 2712,
664 
665      2716, 2711, 2704, 2718, 2720, 2719, 2708, 2718, 2718,    0,
666      2711, 2702, 2697,    0, 2703, 2704, 2693, 2699, 2690, 2699,
667      2687, 2687, 2694, 2691, 2693, 2683, 2692, 2675, 2674, 2672,
668      3127, 2682, 2664, 2675, 2678, 2659, 2673, 2667, 2660, 2648,
669      2640, 2640, 2637, 2648, 2638, 2641, 2644, 2641, 2625, 2612,
670      2633, 1313, 2619, 2624, 2623, 2609, 2609, 2603, 2614, 2604,
671      2617, 1409, 3127, 1302, 1299, 1339, 1315, 1314, 1323, 1452,
672      1351, 1359, 1324, 1362, 1365, 1392, 1368, 1396, 1393, 1405,
673      1411, 1437, 1414, 1440, 1408, 1443, 1479, 2615, 2607, 1464,
674      1454, 1463, 1472, 1473, 1486, 1483, 1489, 1492, 1495, 1503,
675 
676      1506, 1517, 1514, 1520, 1528, 1536, 1532, 1540, 2600, 1555,
677      1552, 1556, 1564, 1565, 1568, 1576, 1585, 1586, 2586, 2577,
678      2572,    0, 2578, 2579, 2568, 2574, 2565, 2572, 2558, 2556,
679      2561, 2553, 2554, 2543, 2552, 2528, 2533, 2529, 3127, 2539,
680      2518, 2528, 2529, 2511, 2519, 2513, 2506, 2494, 2484, 2485,
681      2481, 2494, 2484, 2488, 2493, 2479, 2456, 2430, 2447, 1538,
682      2432, 2435, 2433, 2419, 2394, 2392, 2399, 2397, 2396, 2387,
683      2382, 1623, 2388, 2389, 2378, 2384, 2311,  103,  126,  254,
684       310,  332,  365,  404,  437,  426,  435,  459,    0, 3127,
685      1175,  476,  486,  536,  557,  566,  733,  794,  819,  827,
686 
687       885,  915,  916,  933,  965,  973, 1004, 1009, 1004,  996,
688      1029, 1588, 1023, 1036, 1080, 1069, 1072, 1079, 1111, 1128,
689      1133, 1128, 1140, 1667, 1167, 1173, 1165, 1173, 1180, 1191,
690      1191, 1194, 1212, 1214, 1221, 1221, 1245, 1236, 1245, 1247,
691         0, 1441, 1288, 1274, 1292, 1303, 1294, 1322, 1325, 1322,
692      1320, 1320, 1328, 1327, 1342, 1340, 1359, 1367, 1371, 1365,
693      1365, 1389, 1614, 1377, 1384, 1396, 1387, 1403, 1416, 1442,
694      1447,    0, 1446, 1466, 3127, 1471, 1467, 1483, 1490, 1492,
695      1491, 1508, 1504, 1514, 1531, 1533, 1540, 1541, 1542, 1547,
696      1564, 1576, 1561, 1590, 1587, 1598, 1605, 1618, 1605, 1617,
697 
698      1625, 1623, 1625, 1629, 1618, 1631, 1624, 1634, 1619, 1651,
699      1653, 1659, 1649, 1664, 1685, 1649, 1646, 1646, 1660, 1672,
700      1682, 1683, 1695, 1694, 1698, 1706, 1712, 1709, 1718, 1721,
701      1727, 1730, 1739, 1748, 1745, 1749, 1757, 1767, 1766, 1770,
702      1776, 1784, 1780, 1794, 1797, 1805, 1806, 1815, 1818, 1821,
703      1824, 1631, 1644, 3127, 1655, 1659, 1663, 1671, 1674, 1680,
704      1688, 1685, 1695, 1700, 1695, 1694, 1705, 1704, 1709, 1732,
705      1741, 1734, 1750, 1743, 1756, 1768, 1773, 1759, 1774, 1790,
706      1798, 1801, 1807, 1796, 1810, 1804, 1820, 1806, 1813, 1826,
707         0, 3127, 1859, 1832, 1830, 1836, 1843, 1844, 1841, 1848,
708 
709      1839, 1849, 1849, 1844, 1841, 1841, 1839, 1840, 1857, 1858,
710      1843, 1858, 1851, 1861, 1860, 1864, 1849, 1861, 1869, 1866,
711      1868, 1872, 1861, 1874, 1867, 1877, 1862, 1863, 1876,    0,
712      1892, 1882, 1870, 1873, 1880, 1881, 1878, 1885, 1876, 1886,
713      1887, 1882, 1879, 1879, 1877, 1878, 1895, 1896, 1881, 1896,
714      1889, 1899, 1898, 1902, 1887, 1899, 1907, 1904, 1906, 1910,
715      1899, 1912, 1905, 1915, 1900, 1914, 1898, 1900, 1917, 1912,
716      1917, 1922, 1910, 1920, 1907, 1922, 1911, 1929, 1911, 1925,
717      1920, 1928, 1923, 1924, 1917, 1934, 1925, 1931, 1943, 1944,
718      1953, 1947, 1956, 1967, 1964, 1973, 1977, 1939, 1983, 1986,
719 
720      1995, 2004, 2001, 2005, 2013, 1937, 1921, 1923, 1952, 1950,
721      1963, 1974, 1965, 1976, 1969, 1984, 1981, 2000, 1986, 2004,
722      1999, 2015, 2016, 2017, 2010, 2027, 2014, 2016, 2033, 2028,
723      2033, 2038, 2026, 2036, 2023, 2038, 2027, 2045, 2027, 2041,
724      2036, 2044, 2039, 2040, 2033, 2050, 2034, 2036, 2053, 2048,
725      2053, 2058, 2046, 2056, 2043, 2058, 2047, 2065, 2047, 2061,
726      2056, 2064, 2059, 2060, 2053, 2072, 2069, 2075, 2057, 2074,
727      2061, 2074, 2063, 2066, 2079, 2078, 2079, 2081, 2081, 2086,
728      2083, 2089, 2092, 2095, 2077, 2109, 2103, 2113, 2121, 2112,
729      2130, 2133, 2139, 2090, 2087, 2093, 2081, 2115, 2102, 2131,
730 
731      2121, 2125, 2139, 2140, 2142, 2145, 2149, 2154, 2151, 2158,
732      2141, 2158, 2145, 2158, 2147, 2150, 2163, 2162, 2163, 2165,
733      2165, 2170, 2167, 2173, 2155, 2172, 2159, 2172, 2161, 2164,
734      2177, 2176, 2177, 2179, 2179, 2167, 2183, 2182, 2184, 2172,
735      2189, 2178, 2189, 2188, 2199, 2198, 2209, 2176, 2192, 2192,
736      2195, 2183, 2203, 2187, 2210, 2209, 2216, 2204, 2222, 2206,
737      2222, 2221, 2224, 2213, 2230, 2213, 2232, 2229, 2217, 2223,
738      2236, 2233, 2227, 2220, 2243, 2243, 2232, 2233, 2254, 2252,
739      2240, 2240, 2259, 2256, 2244, 2245, 2245, 2246, 2253, 2256,
740      2259, 2249, 2249, 2251, 2262, 2262, 2263, 2265, 2265, 2266,
741 
742      2267, 2287, 2275, 2289, 2271, 2291, 2273, 2296, 2278, 2298,
743      2296, 2297, 2298, 2300, 2301, 2304, 2305, 2307, 2310, 2311,
744      2295, 2301, 2298, 2302, 2304, 2305, 2313, 2308, 2309, 2310,
745      3127, 2350, 2365, 2380, 2395, 2409, 2423, 2438, 2452, 2466,
746      2481, 2496, 2510, 2524, 2539, 2554, 2569, 2584, 2598, 2612,
747      2627, 2641, 2656, 2664, 2678, 2692, 2706
748     } ;
749 
750 static yyconst short int yy_def[1458] =
751     {   0,
752      1432, 1431, 1433, 1433, 1432,    2, 1434, 1431, 1435, 1435,
753      1431, 1431,   12, 1431, 1431, 1431,   12,   12, 1436, 1431,
754      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
755      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1437,
756      1431, 1438,   12,   12, 1439, 1439,   46,   46,   46,   46,
757        48,   48,   46,   46,   46,   48,   46,   46,   46,   46,
758        46,   46,   46,   46,   46, 1440, 1431, 1431, 1431, 1431,
759      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
760      1431, 1431, 1431, 1431, 1431, 1431, 1431,   14, 1431,   88,
761        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
762 
763        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
764        16, 1441,  111,  111,  111,  111,  111,  111,  111,  111,
765       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
766       111,  111, 1431, 1442, 1431, 1436, 1436, 1443, 1431, 1431,
767      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1444,
768      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1444,
769      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1445, 1431, 1431,
770      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
771      1431, 1431, 1431, 1431, 1431, 1431, 1437, 1431, 1431, 1431,
772      1431, 1431, 1431, 1446,   46, 1431,   46,   46,   46,   46,
773 
774        46,   46,   46,   46,   46,   46,   46, 1439,   46,   46,
775        46,   46,   46,   46,   46,   46,   46,  208,   46,   46,
776        46,   46,   46,   46,   46, 1439,   46,   46,   60,   46,
777        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
778        46,   46,   46,   46, 1440, 1431, 1431, 1431, 1431, 1431,
779      1431, 1431, 1431, 1431, 1431, 1431, 1447, 1431, 1431, 1431,
780      1431, 1431, 1431, 1431, 1431, 1431, 1447, 1431, 1431, 1431,
781      1431, 1431, 1431, 1431, 1448, 1431, 1431, 1431, 1431, 1431,
782      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
783      1431, 1431, 1431,   88,   88,   88,   88,   88,   88,   88,
784 
785        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
786        88,   88,   88,   88,   88,   88,  307,   88,   88,   88,
787        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
788        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
789        88,   88,   88,  111,  111, 1441,  111,  111,  111,  111,
790       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
791       111,  111,  111,  111,  111,  111,  111,  358,  111,  111,
792       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
793       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
794       111,  111,  111,  111, 1442, 1442, 1449, 1443, 1431, 1445,
795 
796      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
797      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
798      1431, 1431, 1431, 1431, 1450, 1431, 1431, 1431, 1445, 1431,
799      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
800      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
801      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1445, 1431, 1446,
802      1451, 1452,  226,   46,   48,   48,   48,   46,   46,   46,
803        46,   46,   46,   46,   46, 1431, 1446, 1431,   46,   46,
804        46,   46,   46,   46,   46,   46,   46,   46,   46, 1439,
805        46,   46,   46,  226,   46, 1431, 1446, 1431,   46,   46,
806 
807        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
808        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
809        46,   46,   46,   46,  226, 1448, 1431, 1431, 1431, 1431,
810      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
811      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
812      1453, 1431, 1431, 1431, 1448, 1431, 1431, 1431, 1431, 1431,
813      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
814      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
815      1431, 1431, 1431, 1448,  325,   88,   88,   88,   88,   88,
816        88,   88,   88,   88,   88,   88,   88,   88, 1431,   88,
817 
818        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
819        88,   88,   88,   88,   88,  325,   88,   88, 1431,   88,
820        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
821        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
822        88,   88,   88,   88,   88,   88,  325,  376,  111,  111,
823       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
824       111, 1441,  111,  111,  111,  111,  111,  111,  111,  111,
825       111,  111,  111,  111,  111,  111,  111,  376,  111,  111,
826      1441,  111,  111,  111,  111,  111,  111,  111,  111,  111,
827       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
828 
829       111,  111,  111,  111,  111,  111,  111,  376, 1442, 1454,
830      1431, 1431, 1431, 1455, 1431, 1431, 1431, 1431, 1431, 1431,
831      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
832      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
833      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
834      1445, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
835      1446, 1451, 1431, 1452, 1456, 1452,   46,   46,   46, 1439,
836        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
837        46,   46,   46,   46,   46,   46, 1431, 1446, 1431,   46,
838        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
839 
840        46,   46,   46,   46,   46,   46,   46,   46,  226,   46,
841        46,   46,   46,   46,   46,   46,   46,   46, 1431, 1431,
842      1431, 1457, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
843      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
844      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
845      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1448, 1431,
846      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,   88,   88,
847        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
848        88,   88,   88,   88,   88,   88,   88,   88,   88, 1431,
849        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
850 
851        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
852       325,   88,   88,   88,   88,   88,   88,   88,   88,   88,
853       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
854       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
855       111, 1441,  111,  111,  111,  111,  111,  111,  111,  111,
856       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
857       111,  376,  111,  111,  111,  111,  111,  111,  111,  111,
858       111, 1454, 1431, 1431, 1431, 1450, 1431, 1431, 1431, 1431,
859      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
860      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
861 
862      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
863      1456, 1452,   46,   46, 1431, 1446, 1431,  490,   46,   46,
864        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
865        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
866        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
867        46, 1431, 1431, 1431, 1453, 1431, 1431, 1431, 1431, 1431,
868      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
869      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
870      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,   88,   88,
871        88, 1431,   88,  612,   88,   88,   88,   88,   88,   88,
872 
873        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
874        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
875        88,   88,   88,   88,   88,   88,   88,  111,  111,  111,
876      1441,  674,  111,  111,  111,  111,  111,  111,  111,  111,
877       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
878       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
879       111,  111,  111,  111,  111, 1431, 1431, 1431, 1431, 1431,
880      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1450, 1431, 1431,
881      1431, 1431, 1431, 1431, 1431,   46,   46,   46,   46,   46,
882        46,   46,   46,   46,   46,   46,   46,  490,   46,   46,
883 
884        46,   46,   46,   46,   46, 1431, 1431, 1431, 1431, 1431,
885      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1453, 1431, 1431,
886      1431, 1431, 1431, 1431, 1431,   88,   88,   88,   88,   88,
887        88,   88,   88,   88,   88,   88,   88,  612,   88,   88,
888        88,   88,   88,   88,   88,  111,  111,  111,  111,  111,
889       111,  111,  111,  111,  111,  111,  111,  674,  111,  111,
890       111,  111,  111,  111,  111, 1431, 1431, 1431, 1431, 1431,
891      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,   46,
892        46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
893        46,   46,   46, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
894 
895      1431, 1431, 1431, 1431, 1431, 1431, 1431,   88,   88,   88,
896        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
897        88,  111,  111,  111,  111,  111,  111,  111,  111,  111,
898       111,  111,  111,  111,  111, 1431, 1431, 1431, 1431, 1431,
899      1431,   46,   46,   46,   46,   46,   46, 1431, 1431, 1431,
900      1431, 1431, 1431,   88,   88,   88,   88,   88,   88,  111,
901       111,  111,  111,  111,  111, 1431, 1431, 1431, 1431,   46,
902        46,   46,   46, 1431, 1431, 1431, 1431,   88,   88,   88,
903        88,  111,  111,  111,  111, 1431, 1431, 1431,   46,   46,
904        46, 1431, 1431, 1431,   88,   88,   88,  111,  111,  111,
905 
906      1431, 1431,   46,   46, 1431, 1431,   88,   88,  111,  111,
907      1431,   46, 1431,   88,  111, 1431,   46, 1431,   88,  111,
908      1431,   46, 1431,   88,  111, 1431,   46, 1431,   88,  111,
909         0, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
910      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
911      1431, 1431, 1431, 1431, 1431, 1431, 1431
912     } ;
913 
914 static yyconst short int yy_nxt[3172] =
915     {   0,
916        12,   12,   13,   14,  397,   16,   12,   12,   12,   12,
917        17,   41,   12,   12,   41,   12,   43,   42,  399,  133,
918        42,  134,  135,  155,  135,  136,  142,  136,  164,   44,
919       139,  143,  165,  156,  144,  140,  157,  141,  167,  158,
920       168,  166,   12,   12,   12,   18,   13,   14,   19,   16,
921        12,   12,   12,   12,   17,   15,   12,   12,   15,   12,
922        15,   20,   21,   22,   23,   24,   25,   26,   15,   27,
923        15,   28,   29,   30,   31,   32,   15,   33,   34,   35,
924        36,   37,   38,   39,   15,   15,   12,   12,   12,   12,
925        43,   14,  145,   16,   12,   12,   12,   12,   17,  146,
926 
927        12,   12,  147,   44,  149,  148,  152,  160,  153,  169,
928       172,  173,  170,  150,  161,  180,  191,  182,  154,  267,
929       181,  174,  183,  151,  175,  189,  268,  190, 1095,  192,
930        12,   12,   12,   12,   13,   14,   15,   16,   12,   12,
931        12,   12,   17,   15,   12,   12,  176,   12,  184,  177,
932       193,  193,  249,  185,  274,  194,  275,  250,  178,  200,
933       251,  196, 1096,  195,  201,  179,  195,  202,  195,  276,
934       195,  195,  277,  221,   12,   12,   12,   18,   13,   14,
935        19,   16,   12,   12,   12,   12,   17,   15,   12,   12,
936        45,   12,   45,   46,   47,   48,   49,   50,   51,   52,
937 
938        45,   53,   45,   54,   55,   56,   57,   58,   45,   59,
939        60,   61,   62,   63,   64,   65,   45,   45,   12,   12,
940        68,   69,   70,   71,   72,   73,   74,  324,   75,  325,
941        76,   77,   78,   79,   80,  345,   81,   82,   83,   84,
942        85,   86,   87,   88,   88,  346,   89,   88,   88,   88,
943        88,   88,   88,   88,   88,   88,   88,   88,   90,   88,
944        91,   92,   93,   94,   95,   96,   97,   88,   98,   88,
945        99,  100,  101,  102,  103,   88,  104,  105,  106,  107,
946       108,  109,  110,   88,   88,   88,   88,  111,  111, 1097,
947       111,  111,   89,  111,  111,  111,  111,  111,  111,  111,
948 
949       111,  111,  112,  111,  113,  114,  115,  116,  117,  118,
950       119,  111,  120,  111,  121,  122,  123,  124,  125,  111,
951       126,  127,  128,  129,  130,  131,  132,  111,  111,  111,
952       111,  193,  193,  218,  195,  207,  194, 1098,  227,  195,
953       219,  228,  196,  195,  208,  195,  317,  195,  195,  210,
954       195,  211,  287,  318,  209,  213,  195,  288,  195,  197,
955      1099,  212,  195,  195,  198,  214,  199,  203,  215,  326,
956       195,  216,  327,  195,  204,  377,  217,  205,  378,  195,
957       206,  222,  195,  220,  195,  223,  195,  195,  195,  195,
958      1100,  195,  252,  195,  224,  225,  229,  226,  195,  253,
959 
960       195,  238,  254,  271,  195,  255,  239,  272,  195,  195,
961       240,  195,  230,  231,  195,  241,  273,  195,  191,  195,
962       289,  195,  195,  232,  195,  290,  233,  234,  242,  246,
963       235,  192,  256,  243,  247,  195,  248, 1101,  195,  236,
964       195,  257,  195,  195,  291,  195,  237,  195,  244,  292,
965       262,  258,  195,  259,  195,  260,  279,  280,  911,  283,
966       263,  612,  284,  264, 1102,  261,  265,  281,  294,  295,
967       282,  285,  337,  375,  309,  376,  310,  338,  286,   88,
968        88,   88,   88,   88,   88,   88,  311,   88, 1103,   88,
969        88,   88,   88,   88, 1104,   88,   88,   88,   88,   88,
970 
971        88,   88,  296,  299,  306,  302,  312,  297,  300,  298,
972       418,  301,  303,  307,  419,  304,  313,  321,  305,  314,
973      1105,  322,  315,  308,  329,  330,  368,  339,  333,  341,
974       323,  334,  340,  369,  342,  331,  347,  350,  332,  388,
975       335,  348,  351,  349,  389,  352,  450,  336,  111,  111,
976       111,  111,  111,  111,  111,  451,  111, 1106,  111,  111,
977       111,  111,  111,  357,  111,  111,  111,  111,  111,  111,
978       111,  353,  358,  360, 1107,  361,  363,  440,  354,  380,
979       381,  355,  359,  372,  356,  362,  364,  373,  384,  365,
980       382,  385,  366,  383,  390,  441,  374,  392,  911,  391,
981 
982       386,  424,  393,  405,  406,  409,  410,  387,  411,  425,
983       433,  442,  436,  412,  437,  434,  448,  446,  544,  454,
984       160,  455,  545,  463,  438,  447,  459,  443,  190,  193,
985       193,  195,  195,  580,  194,  581,  195,  195,  195,  195,
986       196,  218,  195,  531,  532,  195,  709,  195,  195,  195,
987       195,  464,  195,  195,  465,  195,  195,  466,  467,  396,
988       470,  195,  195,  195,  471,  537,  195,  468,  469,  195,
989       538,  195,  195,  195,  472,  473,  195,  195,  568,  195,
990       195,  195,  195,  195,  474,  480,  535,  536,  195,  475,
991       195,  195,  195,  481,  569,  195,  195,  631,  195,  413,
992 
993       476,  476,  413,  692,  413,  477,  413,  413,  413,  413,
994       195,  478,  413,  632,  413,  195,  195,  482,  483,  693,
995       559,  195,  484,  195,  485,  560,  195,  195,  486,  550,
996       572,  195,  195,  195,  195,  479,  487,  551,  573,  195,
997       195,  413,  413,  218,  195,  195,  195,  195,  195,  489,
998      1108,  195,  611,  195,  488,  195,  195,  490,  195,  491,
999       612,  562,  195,  563,  195,  576,  195,  195,  492,  195,
1000       493,  195,  195,  564,  577,  495,  195,  195,  195,  195,
1001       195,  218,  712,  195,  596,  195,  494,  195,  195,  597,
1002       195,  431,  496,  496,  431,  713,  431,  497,  431,  431,
1003 
1004       431,  431,  502,  498,  431,  500,  431,  499,  511,  195,
1005       501,  566,  195,  195,  195, 1109,  195,  195,  195,  195,
1006       195,  195,  506,  503,  195,  504,  195,  574,  195,  567,
1007       507,  267,  629,  431,  431,  505,  195,  509,  195,  512,
1008       195,  195,  605,  195, 1110,  195,  606,  195,  508,  195,
1009       630,  513,  622,  510,  195,  195,  195,  623,  195,  514,
1010       195, 1111,  195,  195,  635,  515,  195,  673,  516,  218,
1011       517,  195,  636,  195,  195,  674,  519,  590,  591,  518,
1012       195,  195,  594,  595,  195,  195,  345,  195,  520,  195,
1013       521,  195,  522,  523,  195,  625,  346,  626,  195,  195,
1014 
1015       524,  195,  637,  195,  195,  195,  317,  627,  195,  195,
1016       667,  195,  525,  195,  668,  195,  598,  598,  539,  599,
1017      1112,  598,  598,  598,  598,  598,  598,  639,  598,  598,
1018       643,  600,  644,  653,  654,  659,  640,  657,  658,  683,
1019       660,  686,  696,  687,  684,  698,  690,  700, 1113,  368,
1020       697,  612,  601,  688, 1114,  704,  701,  705,  598,  598,
1021       618,  618,  557,  619,  691,  618,  618,  618,  618,  618,
1022       618,  397,  618,  618,  397,  620,  621,  719,  720,  459,
1023       345,  190,  764,  764,  218,  399,  195,  490,  399,  195,
1024       346,  195,  195,  195,  773, 1115,  195,  195, 1116,  195,
1025 
1026       827,  828,  618,  618,  661,  661,  539,  661,  768,  599,
1027       661,  661,  661,  661,  661,  195,  661,  661,  195,  662,
1028       195,  769,  771, 1117,  766,  820,  772,  195, 1118,  195,
1029       770, 1119,  195,  195,  317,  195,  195,  195,  821,  774,
1030       663,  195,  195,  195,  195,   88,  661,  661,  680,  680,
1031       557,  680,  612,  619,  680,  680,  680,  680,  680, 1123,
1032       680,  680,  195,  681,  682,  195,  490,  195,  777,  195,
1033       775,  776,  195,  778,  877,  878,  490,  195,  193,  193,
1034       195,  195,  195,  194,  195,  195,  195,  195,  195,  196,
1035       680,  680,  762,  762,  763,  763,  763,  460,  461,  779,
1036 
1037       460,  780,  781,  911,  195, 1124,  460, 1125,  218,  195,
1038       195,  195, 1126,  195,  782,  195,  195,  195,  195,  195,
1039       195,  195,  195,  195,  783,  784,  195,  195,  785,  195,
1040       294,  295,  317,  763,  294,  295,  195,  195,  929,  930,
1041       791,  195,  195,  195,  195,  195,  218,  786,  195, 1127,
1042       195,  195,  195,  195, 1128,  195,  195, 1129,  195,  731,
1043       787,  787,  731,  790,  731,  788,  731,  731,  731,  731,
1044       490,  789,  731,  962,  731,  195,  195,  294,  295,  794,
1045       195,  195,  195,  195,  195,  193,  193,  195,  793,  195,
1046       194,  195,  195,  368,  195,  870,  196,  368,  195,  674,
1047 
1048       924,  731,  731,  195,  195,  195,  795,  922,  871,  195,
1049       796,  195,  797,  798,  195, 1132, 1133,  195,  799,  195,
1050       923,  195,  195,  195,  195,  195,  195, 1134,  345, 1135,
1051       195,  195,  803,  800,  801,  195,  802,  195,  346, 1136,
1052       195,  195, 1137,  195,  195,  195, 1138,  195,  195,  195,
1053       804,  195,  195,  195, 1139,  805,  195,  195,  806,  195,
1054       195,  218,  807,  195,  809,  195,  962,  195,  195,  808,
1055       810,  674,  195,  195, 1140,  195, 1141,  195,  195,  195,
1056       812,  195,  811,  195,  195,  195,  195,  813,  195,  195,
1057       195,  195,  195,  490,  195,  195,  814,  195,  815,  816,
1058 
1059      1010, 1010,  195,  764,  764,  194, 1142,  195, 1143,  195,
1060       195,  195,  817, 1144,  195,  195,  195,  195,  195,  195,
1061      1145,  195,  889,  889,  839,  890,  962,  889,  889,  889,
1062       889,  889,  889, 1002,  889,  889, 1013,  891, 1003, 1146,
1063      1012, 1012, 1004, 1014,  195,  766, 1147, 1148,  195,  195,
1064       195,  195,  195,  195, 1149, 1150,  809,  195,  490,  195,
1065       195, 1151,  674, 1152,  889,  889,  941,  941,  839,  941,
1066      1153,  890,  941,  941,  941,  941,  941,  218,  941,  941,
1067       195,  942, 1431,  218, 1154,  195, 1155,  195,  195,  770,
1068      1156,  195, 1157,  195,  195,  195,  195,  195,  195,  195,
1069 
1070      1018,  195,  195,  368, 1020,  111,  674, 1161,  941,  941,
1071       762,  762,  763,  763,  763,  460,  461, 1019,  460,  962,
1072      1022,  195,  195, 1162,  460,  195,  195,  195,  195,  195,
1073       195, 1021,  195, 1023,  195,  809, 1024, 1026, 1163,  195,
1074       195,  195,  195,  195,  195,  195,  345,  195,  195, 1164,
1075       195,  763,  975, 1015, 1015,  975,  346,  975, 1016,  975,
1076       975,  975,  975,  368, 1017,  975,  195,  975, 1165,  195,
1077      1025,  195, 1027,  195,  195,  490,  195,  195,  751,  195,
1078       193,  193, 1028,  195, 1030,  194,  751, 1166, 1029, 1031,
1079       195,  196,  195,  195,  975,  975, 1167,  195,  195,  195,
1080 
1081       195,  195,  195, 1032, 1033,  809,  195,  195,  195,  195,
1082      1168,  160,  195,  425, 1034,  195, 1169,  195,  195,  195,
1083       195,  195,  195,  195,  195,  195, 1035, 1170,  195,  195,
1084      1036,  195,  195,  425,  160,  195, 1037,  195, 1038,  195,
1085       195,  490,  195,  195, 1039, 1040,  195, 1041,  195,  195,
1086       195,  195,  425,  195,  195, 1042,  195,  195, 1081, 1043,
1087      1171,  195,  195, 1082,  195,  195,  195, 1083,  195,  195,
1088       195, 1172,  195,  751,  195, 1044,  195, 1173,  218, 1047,
1089      1045,  490, 1174, 1175, 1046,  195,  195,  809,  195,  195,
1090       195,  195,  195,  195,  195,  160, 1176,  195,  195,  195,
1091 
1092       195, 1048,  195, 1049,  195,  195,  218, 1051, 1120, 1050,
1093       195, 1177,  195, 1121,  195,  195,  160, 1122,  425,  195,
1094       195,  195,  195, 1091, 1091, 1054, 1092,  160, 1091, 1091,
1095      1091, 1091, 1091, 1091, 1158, 1091, 1091, 1178, 1093, 1159,
1096       425,  160, 1179, 1160, 1180,  751, 1181, 1182, 1183, 1184,
1097      1185,  751, 1010, 1010, 1010, 1010,  461,  194,  462,  194,
1098      1012, 1012, 1186,  859,  859, 1091, 1091, 1130, 1130, 1054,
1099      1130, 1206, 1092, 1130, 1130, 1130, 1130, 1130,  195, 1130,
1100      1130,  809, 1131,  195,  809,  195,  193,  193, 1207, 1187,
1101      1208,  194,  267,  195,  195,  551,  195,  196,  195, 1188,
1102 
1103       195,  195, 1431,  218,  490, 1209,  195, 1210,  195, 1130,
1104      1130,  195,  195, 1190,  551,  267,  195,  195,  195,  195,
1105      1189,  551, 1211,  195,  195, 1212,  218,  490,  195,  195,
1106       195,  195,  195,  490,  195,  195, 1191,  859,  195, 1213,
1107       195,  195,  195,  195, 1214,  195,  195,  195,  195, 1192,
1108       195, 1215,  195,  809,  195,  195,  195,  195, 1195,  195,
1109       267,  195, 1193,  195,  195, 1194,  195,  218,  195, 1216,
1110      1197, 1217,  267,  195,  195,  195,  551,  195,  195,  195,
1111      1196,  195,  195,  195,  195,  195,  218,  490,  218, 1198,
1112       267,  195, 1218,  195,  551,  195,  195, 1199,  267,  195,
1113 
1114       195,  195,  195,  195,  195,  195,  195, 1219,  218,  195,
1115       195,  490,  195,  195,  195, 1200,  195,  809,  195, 1220,
1116       195,  859, 1201,  195, 1221, 1222,  195, 1223,  195, 1224,
1117       195,  195, 1203,  195,  195, 1202, 1225, 1205,  859,  195,
1118       195,  195,  195, 1204,  195,  911,  911,  195, 1226,  195,
1119       195,  195,  195,  195,  195,  195,  809,  195,  195, 1227,
1120       195,  294,  295, 1228,  317,  612, 1229, 1230,  612,  317,
1121       612, 1231, 1232,  911, 1233, 1234, 1235,  317, 1236, 1237,
1122       317,  612,  317, 1238,  612,  317, 1239, 1240,  911, 1241,
1123      1242, 1243, 1244, 1245,  911,  962,  962,  345, 1246, 1247,
1124 
1125      1248,  368,  674, 1249, 1250,  674,  368,  346,  674, 1251,
1126      1252,  962, 1253, 1254, 1255,  368, 1256, 1257,  368,  674,
1127       368, 1258,  674,  368, 1259, 1260,  962, 1261, 1262, 1263,
1128      1264, 1265,  962, 1266, 1267,  160, 1268, 1269,  714, 1270,
1129      1271,  160, 1272, 1273, 1274, 1275, 1276,  425, 1277, 1278,
1130       425, 1279,  714, 1280,  195, 1289, 1294, 1295,  267,  195,
1131       195, 1281, 1282,  195, 1284,  195,  218,  195,  195, 1283,
1132       195, 1296,  195,  195,  770, 1297,  195,  195,  195,  195,
1133       195,  195,  195,  195,  822,  195, 1285,  195,  218,  195,
1134       195, 1298,  195,  195, 1287, 1299,  195,  267,  195, 1286,
1135 
1136       195,  195,  195,  195, 1300, 1301,  195,  195,  490,  195,
1137      1288,  195,  195,  195, 1302,  195, 1303,  195, 1290,  195,
1138       195, 1304,  195, 1291,  195, 1292,  551, 1305,  490,  195,
1139       195,  195, 1293,  195,  195,  195, 1306,  195,  195,  195,
1140       195,  195,  195,  551, 1307,  822, 1308,  195,  770,  195,
1141      1309,  317, 1310, 1311,  872, 1312, 1313,  317, 1314, 1315,
1142      1316, 1317, 1318,  612, 1319, 1320,  612, 1321,  872, 1322,
1143      1323,  368, 1324, 1325,  924, 1326, 1327,  368, 1328, 1329,
1144      1330, 1331, 1332,  674, 1333, 1334,  674, 1335,  924, 1336,
1145       160, 1337,  714, 1338,  425, 1339,  425, 1340, 1341,  425,
1146 
1147       714,  425,  425, 1342,  218, 1343,  195, 1348,  267, 1349,
1148       490,  195,  195,  195, 1344,  195,  822,  195,  195,  195,
1149       195,  195,  195,  195,  195,  195,  195,  770,  195,  195,
1150      1345,  195,  195,  490, 1350,  551,  490,  195,  195,  195,
1151      1347,  195,  195,  195, 1346,  195,  195,  195,  195,  195,
1152       195,  770, 1351,  490,  551,  195, 1352,  195, 1353,  195,
1153       490,  551,  195,  822,  195,  551,  195,  195,  195,  195,
1154       551, 1354,  317,  195, 1355,  195,  872, 1356,  612, 1357,
1155       612, 1358, 1359,  612,  872,  612,  612, 1360,  368, 1361,
1156       924, 1362,  674, 1363,  674, 1364, 1365,  674,  924,  674,
1157 
1158       674, 1366, 1367,  714,  160, 1368, 1369,  195, 1371,  770,
1159      1374, 1375, 1370,  822,  195,  267, 1376,  195,  195,  218,
1160      1377, 1378,  195,  195,  195,  195, 1373,  195,  195, 1379,
1161       872, 1372,  195,  195,  195,  195,  317, 1380,  195, 1381,
1162      1382, 1383,  924,  195,  368,  195, 1384, 1385,  751, 1386,
1163      1387, 1388,  195, 1389, 1390,  859,  195,  195,  809,  195,
1164      1392, 1391,  195,  195, 1393,  195, 1394,  195,  911,  195,
1165       195, 1395,  195, 1396, 1397,  962, 1398, 1399, 1400, 1401,
1166      1402,  751,  195, 1405, 1406,  195,  859, 1403,  195,  195,
1167       195, 1404,  195,  195,  809,  195, 1407, 1408,  911, 1409,
1168 
1169      1410,  962,  751, 1411,  195, 1412,  859, 1413,  911,  195,
1170       809,  195, 1414,  962, 1415, 1416, 1417, 1418,  195, 1419,
1171      1420, 1421, 1422,  195, 1423,  195,  195, 1424, 1425, 1426,
1172       195,  195, 1428,  195,  195, 1427, 1429,  195, 1430,  195,
1173       751,  195,  195,  859,  911,  962, 1094,  195,  809,  195,
1174        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
1175        15,   15,   15,   15,   15,   40,   40,   40,   40,   40,
1176        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1177        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1178        45,   45,   45,   45,   45,   66,   66,   66,   66,   66,
1179 
1180        66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
1181       138,  872,  612,  317,  317,  911, 1090, 1089, 1088,  138,
1182       267,  138,  138,  187,  187, 1087,  187,  187,  187, 1086,
1183       187,  187,  187,  187,  187,  187,  187,  187,  188,  188,
1184       188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
1185       188,  188,  188,  195,  195, 1085,  859,  195, 1084,  195,
1186       195,  551,  195, 1431,  195,  195,  245,  245,  267,  245,
1187       245,  245,  245,  245,  245,  245,  245,  245,  245,  245,
1188       245,  344,  344, 1080,  344,  344,  344,  344,  344,  344,
1189       344,  344,  344,  344,  344,  344,  395,  395, 1079,  395,
1190 
1191       395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
1192       395,  398, 1078, 1077, 1076, 1075,  551,  398, 1074, 1073,
1193       398,  398,  398,  398,  413,  413,  413,  413, 1072,  413,
1194       413, 1071,  413,  413, 1070,  413, 1069,  413,  413,  431,
1195       431,  431,  431,  859,  431,  431, 1068,  431,  431, 1067,
1196       431,  431, 1066,  431,  460,  460,  460, 1065, 1064,  460,
1197       460,  460, 1063,  551,  460,  460,  460,  460,  460,  539,
1198       539,  539,  539,  859,  539,  539, 1062,  539,  539, 1061,
1199       539, 1060,  539,  539,  557,  557,  557,  557, 1059,  557,
1200       557, 1058,  557,  557, 1057,  557,  557, 1056,  557,  710,
1201 
1202      1055,  822,  551,  267,  267,  859, 1053, 1052,  710,  710,
1203       710,  710,  731,  731,  731,  731,  195,  731,  731,  462,
1204       731,  731,  461,  731,  461, 1009,  731,  761,  761,  761,
1205       761,  761,  761,  761,  761,  160, 1008,  761,  761,  761,
1206       761,  761,  765,  765, 1007, 1006,  751, 1005,  425, 1431,
1207       160,  765, 1001,  765,  765,  765,  839,  839,  839,  839,
1208      1000,  839,  839,  999,  839,  839,  998,  839,  997,  996,
1209       839,  972,  425,  995,  972,  994,  972,  972,  975,  975,
1210       975,  975,  993,  975,  975,  992,  975,  975,  991,  975,
1211       990,  751,  975, 1011, 1011,  989,  988, 1011,  987, 1011,
1212 
1213       986,  985, 1011,  984, 1011, 1011, 1054, 1054, 1054, 1054,
1214       425, 1054, 1054,  751, 1054, 1054,  983, 1054,  982,  981,
1215      1054,  980,  979,  978,  977,  976,  714,  425,  160,  160,
1216       751,  974,  973,  396,  971,  970,  969,  968,  674,  967,
1217       966,  965,  964,  963,  962,  961,  368,  960,  959,  958,
1218       957,  956,  955,  954,  953,  952,  951,  950,  949,  948,
1219       947,  946,  945,  944,  943,  674,  940,  368,  939,  938,
1220       937,  936,  935,  674,  368,  934,  933,  932,  931,  928,
1221       927,  674,  926,  368,  925,  924,  674,  921,  920,  919,
1222       918,  917,  612,  916,  915,  914,  913,  912,  911,  910,
1223 
1224       317,  909,  908,  907,  906,  905,  904,  903,  902,  901,
1225       900,  899,  898,  897,  896,  895,  894,  893,  892,  612,
1226       888,  317,  887,  886,  885,  884,  883,  612,  317,  882,
1227       881,  880,  879,  876,  875,  612,  874,  317,  873,  872,
1228       612,  869,  868,  867,  866,  865,  551,  864,  863,  862,
1229       861,  860,  859,  858,  267,  857,  856,  855,  854,  853,
1230       852,  851,  850,  849,  848,  847,  846,  845,  844,  843,
1231       842,  841,  840,  551,  838,  267,  837,  836,  835,  834,
1232       833,  551,  267,  832,  831,  830,  829,  826,  825,  551,
1233       824,  267,  823,  822,  551,  819,  818,  462,  461,  792,
1234 
1235       462,  461,  767,  461,  760,  759,  758,  757,  425,  756,
1236       755,  754,  753,  752,  751,  750,  160,  749,  748,  747,
1237       746,  745,  744,  743,  742,  741,  740,  739,  738,  737,
1238       736,  735,  734,  733,  732,  425,  730,  160,  729,  728,
1239       727,  726,  725,  425,  160,  724,  723,  722,  721,  718,
1240       717,  425,  716,  160,  715,  714,  425,  711,  397,  396,
1241       708,  707,  706,  703,  702,  699,  695,  694,  689,  685,
1242       679,  678,  368,  677,  676,  675,  111,  672,  671,  368,
1243       670,  669,  666,  665,  664,  656,  655,  652,  651,  650,
1244       649,  368,  648,  647,  646,  645,  642,  641,  638,  634,
1245 
1246       633,  628,  624,  617,  616,  317,  615,  614,  613,   88,
1247       610,  609,  317,  608,  607,  604,  603,  602,  593,  592,
1248       589,  588,  587,  586,  317,  585,  584,  583,  582,  579,
1249       578,  575,  571,  570,  565,  561,  558,  556,  555,  267,
1250       554,  553,  552, 1431,  549,  548,  267,  547,  546,  543,
1251       542,  541,  540,  534,  533,  530,  529,  528,  527,  267,
1252       526,  195,  462,  461,  458,  457,  456,  453,  452,  449,
1253       445,  444,  439,  435,  432,  430,  429,  160,  428,  427,
1254       426, 1431,  423,  422,  160,  421,  420,  417,  416,  415,
1255       414,  408,  407,  404,  403,  402,  401,  160,  400,  137,
1256 
1257       137,  396,  394,  379,  371,  370,  367,  343,  328,  320,
1258       319,  316,  293,  278,  270,  269,  266,  186,  171,  163,
1259       162,  159,  137, 1431,   67,   67,   11, 1431, 1431, 1431,
1260      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1261      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1262      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1263      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1264      1431
1265     } ;
1266 
1267 static yyconst short int yy_chk[3172] =
1268     {   0,
1269         1,    1,    1,    1,  138,    1,    1,    1,    1,    1,
1270         1,    3,    1,    1,    4,    1,    6,    3,  138,   17,
1271         4,   17,   18,   25,  135,   18,   21,  135,   30,    6,
1272        20,   21,   30,   25,   21,   20,   25,   20,   31,   25,
1273        31,   30,    1,    1,    2,    2,    2,    2,    2,    2,
1274         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1275         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1276         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1277         2,    2,    2,    2,    2,    2,    2,    2,    5,    5,
1278         5,    5,   22,    5,    5,    5,    5,    5,    5,   22,
1279 
1280         5,    5,   22,    5,   23,   22,   24,   27,   24,   32,
1281        34,   34,   32,   23,   27,   36,   44,   37,   24,   75,
1282        36,   34,   37,   23,   34,   42,   75,   42,  878,   44,
1283         5,    5,    7,    7,    7,    7,    7,    7,    7,    7,
1284         7,    7,    7,    7,    7,    7,   35,    7,   38,   35,
1285        45,   45,   69,   38,   79,   45,   79,   69,   35,   47,
1286        69,   45,  879,   47,   47,   35,   55,   47,   47,   80,
1287        47,   55,   80,   55,    7,    7,    8,    8,    8,    8,
1288         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
1289         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
1290 
1291         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
1292         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
1293        12,   12,   12,   12,   12,   12,   12,  102,   12,  102,
1294        12,   12,   12,   12,   12,  112,   12,   12,   12,   12,
1295        12,   12,   12,   14,   14,  112,   14,   14,   14,   14,
1296        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
1297        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
1298        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
1299        14,   14,   14,   14,   14,   14,   14,   16,   16,  880,
1300        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
1301 
1302        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
1303        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
1304        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
1305        16,   46,   46,   53,   58,   49,   46,  881,   58,   58,
1306        53,   58,   46,   49,   49,   53,   98,   53,   49,   50,
1307        49,   50,   84,   98,   49,   51,   50,   84,   50,   46,
1308       882,   50,   51,   52,   46,   51,   46,   48,   51,  103,
1309        52,   51,  103,   52,   48,  125,   52,   48,  125,   48,
1310        48,   56,   54,   54,   48,   56,   48,   54,   56,   54,
1311       883,   56,   70,   57,   56,   57,   59,   57,   57,   70,
1312 
1313        57,   62,   70,   78,   59,   70,   62,   78,   62,   59,
1314        63,   59,   60,   60,   63,   63,   78,   60,  192,   63,
1315        85,   63,   60,   60,   60,   85,   60,   61,   64,   68,
1316        61,  192,   71,   64,   68,   61,   68,  884,   64,   61,
1317        61,   71,   61,   64,   86,   64,   61,   65,   65,   86,
1318        73,   71,   65,   72,   65,   72,   82,   82,  885,   83,
1319        73,  886,   83,   73,  887,   72,   73,   82,   90,   90,
1320        82,   83,  107,  124,   95,  124,   95,  107,   83,   88,
1321        88,   88,   88,   88,   88,   88,   95,   88,  888,   88,
1322        88,   88,   88,   88,  892,   88,   88,   88,   88,   88,
1323 
1324        88,   88,   91,   92,   94,   93,   96,   91,   92,   91,
1325       154,   92,   93,   94,  154,   93,   96,  101,   93,   96,
1326       893,  101,   96,   94,  105,  105,  120,  108,  106,  109,
1327       101,  106,  108,  120,  109,  105,  113,  114,  105,  129,
1328       106,  113,  114,  113,  129,  114,  180,  106,  111,  111,
1329       111,  111,  111,  111,  111,  180,  111,  894,  111,  111,
1330       111,  111,  111,  116,  111,  111,  111,  111,  111,  111,
1331       111,  115,  116,  117,  895,  117,  118,  173,  115,  127,
1332       127,  115,  116,  123,  115,  117,  118,  123,  128,  118,
1333       127,  128,  118,  127,  130,  173,  123,  131,  896,  130,
1334 
1335       128,  161,  131,  145,  145,  148,  148,  128,  149,  161,
1336       169,  174,  171,  149,  171,  169,  178,  177,  261,  183,
1337       178,  183,  261,  197,  171,  177,  189,  174,  189,  193,
1338       193,  195,  197,  290,  193,  290,  195,  197,  195,  197,
1339       193,  198,  198,  252,  252,  199,  396,  198,  200,  198,
1340       199,  199,  199,  200,  200,  200,  201,  201,  202,  396,
1341       204,  201,  203,  201,  205,  256,  202,  203,  203,  203,
1342       256,  202,  204,  202,  206,  206,  205,  204,  281,  204,
1343       206,  205,  206,  205,  207,  209,  255,  255,  210,  207,
1344       209,  207,  209,  210,  281,  210,  207,  331,  207,  208,
1345 
1346       208,  208,  208,  382,  208,  208,  208,  208,  208,  208,
1347       211,  208,  208,  331,  208,  211,  212,  211,  212,  382,
1348       276,  212,  212,  212,  213,  276,  213,  214,  214,  268,
1349       284,  213,  214,  213,  214,  208,  216,  268,  284,  215,
1350       216,  208,  208,  215,  215,  216,  215,  216,  217,  219,
1351       897,  219,  318,  217,  217,  217,  219,  219,  219,  220,
1352       318,  278,  221,  278,  220,  287,  220,  221,  221,  221,
1353       222,  222,  223,  278,  287,  225,  222,  223,  222,  223,
1354       224,  223,  402,  225,  306,  224,  224,  224,  225,  306,
1355       225,  226,  226,  226,  226,  402,  226,  226,  226,  226,
1356 
1357       226,  226,  228,  226,  226,  227,  226,  226,  233,  227,
1358       227,  280,  233,  228,  227,  898,  227,  233,  228,  233,
1359       228,  230,  230,  229,  229,  229,  230,  285,  230,  280,
1360       231,  285,  330,  226,  226,  229,  231,  232,  229,  234,
1361       234,  231,  311,  231,  899,  234,  311,  234,  231,  232,
1362       330,  235,  326,  232,  232,  235,  232,  326,  236,  235,
1363       235,  900,  235,  236,  334,  236,  237,  369,  237,  236,
1364       238,  237,  334,  237,  238,  369,  239,  302,  302,  238,
1365       239,  238,  305,  305,  240,  239,  346,  239,  240,  240,
1366       241,  240,  241,  242,  241,  328,  346,  328,  242,  241,
1367 
1368       243,  241,  335,  242,  243,  242,  335,  328,  244,  243,
1369       362,  243,  244,  244,  362,  244,  307,  307,  307,  307,
1370       901,  307,  307,  307,  307,  307,  307,  337,  307,  307,
1371       340,  307,  340,  353,  353,  357,  337,  356,  356,  377,
1372       357,  379,  385,  379,  377,  386,  381,  388,  902,  386,
1373       385,  903,  307,  379,  904,  391,  388,  391,  307,  307,
1374       325,  325,  325,  325,  381,  325,  325,  325,  325,  325,
1375       325,  397,  325,  325,  398,  325,  325,  410,  410,  459,
1376       662,  459,  462,  462,  468,  397,  464,  464,  398,  471,
1377       662,  464,  468,  464,  471,  905,  471,  468,  906,  468,
1378 
1379       536,  536,  325,  325,  358,  358,  358,  358,  465,  358,
1380       358,  358,  358,  358,  358,  465,  358,  358,  465,  358,
1381       466,  465,  467,  907,  462,  528,  469,  466,  908,  467,
1382       466,  909,  467,  466,  910,  467,  469,  472,  528,  472,
1383       358,  469,  472,  469,  472,  911,  358,  358,  376,  376,
1384       376,  376,  913,  376,  376,  376,  376,  376,  376,  914,
1385       376,  376,  470,  376,  376,  473,  470,  470,  474,  470,
1386       473,  473,  473,  475,  595,  595,  482,  482,  476,  476,
1387       474,  475,  482,  476,  482,  474,  475,  474,  475,  476,
1388       376,  376,  461,  461,  461,  461,  461,  461,  461,  479,
1389 
1390       461,  480,  483,  915,  483,  916,  461,  917,  481,  483,
1391       479,  483,  918,  480,  484,  479,  481,  479,  480,  485,
1392       480,  481,  484,  481,  485,  486,  485,  484,  487,  484,
1393       600,  600,  919,  461,  620,  620,  487,  486,  658,  658,
1394       493,  487,  486,  487,  486,  488,  488,  489,  493,  920,
1395       488,  489,  488,  493,  921,  493,  489,  922,  489,  490,
1396       490,  490,  490,  492,  490,  490,  490,  490,  490,  490,
1397       491,  490,  490,  923,  490,  492,  491,  891,  891,  499,
1398       492,  491,  492,  491,  495,  496,  496,  499,  495,  495,
1399       496,  495,  499,  925,  499,  587,  496,  926,  500,  927,
1400 
1401       928,  490,  490,  500,  501,  500,  500,  650,  587,  501,
1402       501,  501,  502,  503,  502,  929,  930,  503,  504,  502,
1403       650,  502,  503,  504,  503,  504,  505,  931,  681,  932,
1404       506,  505,  508,  505,  506,  506,  507,  506,  681,  933,
1405       508,  507,  934,  507,  509,  508,  935,  508,  510,  509,
1406       509,  509,  511,  510,  936,  510,  513,  511,  511,  511,
1407       512,  513,  512,  513,  515,  512,  937,  512,  514,  514,
1408       516,  938,  515,  514,  939,  514,  940,  515,  516,  515,
1409       518,  517,  517,  516,  518,  516,  517,  519,  517,  518,
1410       520,  518,  519,  521,  519,  520,  520,  520,  522,  523,
1411 
1412       765,  765,  521,  764,  764,  765,  943,  521,  944,  521,
1413       522,  523,  524,  945,  524,  522,  523,  522,  523,  524,
1414       946,  524,  612,  612,  612,  612,  947,  612,  612,  612,
1415       612,  612,  612,  752,  612,  612,  767,  612,  752,  948,
1416       766,  766,  752,  768,  767,  764,  949,  950,  768,  767,
1417       768,  767,  769,  773,  951,  952,  769,  769,  773,  769,
1418       773,  953,  954,  955,  612,  612,  674,  674,  674,  674,
1419       956,  674,  674,  674,  674,  674,  674,  771,  674,  674,
1420       771,  674,  766,  772,  957,  771,  958,  771,  772,  774,
1421       959,  774,  960,  772,  775,  772,  774,  777,  774,  775,
1422 
1423       775,  775,  777,  961,  777,  962,  964,  965,  674,  674,
1424       762,  762,  762,  762,  762,  762,  762,  776,  762,  966,
1425       779,  776,  779,  967,  762,  778,  776,  779,  776,  779,
1426       778,  778,  778,  780,  780,  783,  781,  785,  968,  780,
1427       781,  780,  785,  783,  785,  781,  942,  781,  783,  969,
1428       783,  762,  770,  770,  770,  770,  942,  770,  770,  770,
1429       770,  770,  770,  970,  770,  770,  782,  770,  971,  784,
1430       782,  782,  786,  782,  784,  784,  784,  786,  973,  786,
1431       787,  787,  790,  791,  792,  787,  974,  976,  791,  793,
1432       791,  787,  792,  790,  770,  770,  977,  792,  790,  792,
1433 
1434       790,  793,  794,  795,  796,  794,  793,  794,  793,  794,
1435       978,  979,  796,  980,  797,  795,  981,  796,  797,  796,
1436       795,  798,  795,  797,  799,  797,  798,  982,  798,  799,
1437       799,  799,  800,  983,  984,  801,  800,  800,  802,  800,
1438       801,  801,  801,  803,  803,  804,  802,  805,  803,  804,
1439       803,  802,  985,  802,  804,  806,  804,  805,  860,  807,
1440       986,  807,  805,  860,  805,  806,  807,  860,  807,  808,
1441       806,  987,  806,  988,  808,  810,  808,  989,  808,  812,
1442       810,  811,  990,  991,  810,  812,  811,  813,  811,  810,
1443       812,  810,  812,  813,  814,  992,  993,  815,  813,  814,
1444 
1445       813,  814,  815,  815,  815,  816,  817,  818,  912,  816,
1446       816,  994,  816,  912,  817,  818,  995,  912,  996,  817,
1447       818,  817,  818,  872,  872,  872,  872,  997,  872,  872,
1448       872,  872,  872,  872,  963,  872,  872,  998,  872,  963,
1449       999, 1000, 1001,  963, 1002, 1003, 1004, 1005, 1006, 1007,
1450      1008, 1009, 1010, 1010, 1011, 1011, 1016, 1010, 1017, 1011,
1451      1012, 1012, 1018, 1052, 1053,  872,  872,  924,  924,  924,
1452       924, 1055,  924,  924,  924,  924,  924,  924, 1013,  924,
1453       924, 1013,  924, 1013, 1014, 1013, 1015, 1015, 1056, 1019,
1454      1057, 1015, 1058, 1014, 1019, 1059, 1019, 1015, 1014, 1020,
1455 
1456      1014, 1020, 1012, 1021, 1022, 1060, 1020, 1061, 1020,  924,
1457       924, 1021, 1022, 1024, 1062, 1063, 1021, 1022, 1021, 1022,
1458      1023, 1064, 1065, 1024, 1023, 1066, 1026, 1025, 1024, 1023,
1459      1024, 1023, 1025, 1027, 1025, 1026, 1028, 1067, 1028, 1068,
1460      1026, 1027, 1026, 1028, 1069, 1028, 1027, 1029, 1027, 1029,
1461      1030, 1070, 1029, 1030, 1029, 1030, 1031, 1030, 1033, 1032,
1462      1071, 1031, 1031, 1031, 1032, 1032, 1032, 1034, 1033, 1072,
1463      1036, 1073, 1074, 1033, 1035, 1033, 1075, 1034, 1036, 1035,
1464      1035, 1035, 1034, 1036, 1034, 1036, 1037, 1038, 1039, 1040,
1465      1076, 1037, 1077, 1037, 1078, 1039, 1038, 1043, 1079, 1040,
1466 
1467      1039, 1038, 1039, 1038, 1040, 1041, 1040, 1080, 1042, 1043,
1468      1041, 1041, 1041, 1042, 1043, 1044, 1043, 1045, 1042, 1081,
1469      1042, 1082, 1046, 1044, 1083, 1084, 1045, 1085, 1044, 1086,
1470      1044, 1045, 1048, 1045, 1046, 1047, 1087, 1050, 1088, 1046,
1471      1047, 1046, 1047, 1049, 1048, 1089, 1090, 1049, 1094, 1048,
1472      1050, 1048, 1049, 1051, 1049, 1050, 1051, 1050, 1051, 1095,
1473      1051, 1093, 1093, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
1474      1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
1475      1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
1476      1123, 1124, 1125, 1126, 1127, 1128, 1129, 1131, 1132, 1133,
1477 
1478      1134, 1135, 1136, 1137, 1138, 1139, 1140, 1131, 1141, 1142,
1479      1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
1480      1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
1481      1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
1482      1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
1483      1183, 1184, 1185, 1186, 1187, 1198, 1206, 1207, 1208, 1187,
1484      1188, 1187, 1189, 1186, 1192, 1188, 1188, 1188, 1186, 1190,
1485      1186, 1209, 1189, 1190, 1191, 1210, 1192, 1189, 1190, 1189,
1486      1190, 1192, 1191, 1192, 1211, 1193, 1193, 1191, 1194, 1191,
1487      1193, 1212, 1193, 1195, 1196, 1213, 1194, 1214, 1195, 1195,
1488 
1489      1195, 1194, 1196, 1194, 1215, 1216, 1197, 1196, 1200, 1196,
1490      1197, 1197, 1199, 1197, 1217, 1200, 1218, 1199, 1199, 1199,
1491      1200, 1219, 1200, 1201, 1201, 1202, 1220, 1221, 1203, 1201,
1492      1203, 1201, 1204, 1202, 1204, 1203, 1222, 1203, 1202, 1204,
1493      1202, 1204, 1205, 1223, 1224, 1225, 1226, 1205, 1205, 1205,
1494      1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
1495      1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
1496      1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
1497      1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
1498      1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
1499 
1500      1277, 1278, 1279, 1280, 1281, 1282, 1285, 1294, 1295, 1296,
1501      1285, 1285, 1281, 1285, 1284, 1280, 1297, 1281, 1282, 1281,
1502      1280, 1283, 1280, 1282, 1284, 1282, 1283, 1283, 1283, 1284,
1503      1286, 1284, 1287, 1290, 1298, 1299, 1287, 1287, 1286, 1287,
1504      1289, 1290, 1288, 1286, 1288, 1286, 1290, 1288, 1290, 1288,
1505      1289, 1291, 1300, 1292, 1301, 1289, 1302, 1289, 1303, 1291,
1506      1293, 1304, 1292, 1305, 1291, 1306, 1291, 1292, 1293, 1292,
1507      1307, 1308, 1309, 1293, 1310, 1293, 1311, 1312, 1313, 1314,
1508      1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324,
1509      1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334,
1510 
1511      1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344,
1512      1348, 1349, 1342, 1350, 1342, 1351, 1352, 1344, 1343, 1345,
1513      1353, 1354, 1344, 1343, 1344, 1343, 1347, 1346, 1345, 1355,
1514      1356, 1346, 1346, 1345, 1346, 1345, 1357, 1358, 1347, 1359,
1515      1360, 1361, 1362, 1347, 1363, 1347, 1364, 1365, 1366, 1367,
1516      1368, 1369, 1370, 1371, 1372, 1374, 1373, 1370, 1370, 1370,
1517      1375, 1373, 1372, 1373, 1376, 1371, 1377, 1372, 1378, 1372,
1518      1371, 1379, 1371, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
1519      1387, 1388, 1389, 1392, 1393, 1390, 1394, 1389, 1391, 1389,
1520      1390, 1390, 1390, 1391, 1391, 1391, 1395, 1396, 1397, 1398,
1521 
1522      1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1403,
1523      1403, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1404, 1414,
1524      1415, 1416, 1417, 1404, 1418, 1404, 1412, 1419, 1420, 1421,
1525      1422, 1412, 1423, 1412, 1417, 1422, 1424, 1422, 1425, 1417,
1526      1426, 1417, 1427, 1428, 1429, 1430,  877, 1427, 1427, 1427,
1527      1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
1528      1432, 1432, 1432, 1432, 1432, 1433, 1433, 1433, 1433, 1433,
1529      1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
1530      1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
1531      1434, 1434, 1434, 1434, 1434, 1435, 1435, 1435, 1435, 1435,
1532 
1533      1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435,
1534      1436,  876,  875,  874,  873,  871,  870,  869,  868, 1436,
1535       867, 1436, 1436, 1437, 1437,  866, 1437, 1437, 1437,  865,
1536      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1438,
1537      1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438,
1538      1438, 1438, 1438, 1439, 1439,  864,  863, 1439,  862, 1439,
1539      1439,  861, 1439,  859, 1439, 1439, 1440, 1440,  858, 1440,
1540      1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
1541      1440, 1441, 1441,  857, 1441, 1441, 1441, 1441, 1441, 1441,
1542      1441, 1441, 1441, 1441, 1441, 1441, 1442, 1442,  856, 1442,
1543 
1544      1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442,
1545      1442, 1443,  855,  854,  853,  852,  851, 1443,  850,  849,
1546      1443, 1443, 1443, 1443, 1444, 1444, 1444, 1444,  848, 1444,
1547      1444,  847, 1444, 1444,  846, 1444,  845, 1444, 1444, 1445,
1548      1445, 1445, 1445,  844, 1445, 1445,  843, 1445, 1445,  842,
1549      1445, 1445,  841, 1445, 1446, 1446, 1446,  840,  838, 1446,
1550      1446, 1446,  837,  836, 1446, 1446, 1446, 1446, 1446, 1447,
1551      1447, 1447, 1447,  835, 1447, 1447,  834, 1447, 1447,  833,
1552      1447,  832, 1447, 1447, 1448, 1448, 1448, 1448,  831, 1448,
1553      1448,  830, 1448, 1448,  829, 1448, 1448,  828, 1448, 1449,
1554 
1555       827,  826,  825,  824,  823,  821,  820,  819, 1449, 1449,
1556      1449, 1449, 1450, 1450, 1450, 1450,  809, 1450, 1450,  789,
1557      1450, 1450,  788, 1450,  761,  760, 1450, 1451, 1451, 1451,
1558      1451, 1451, 1451, 1451, 1451,  759,  758, 1451, 1451, 1451,
1559      1451, 1451, 1452, 1452,  757,  756,  755,  754,  753,  751,
1560       750, 1452,  749, 1452, 1452, 1452, 1453, 1453, 1453, 1453,
1561       748, 1453, 1453,  747, 1453, 1453,  746, 1453,  745,  744,
1562      1453, 1454,  743,  742, 1454,  741, 1454, 1454, 1455, 1455,
1563      1455, 1455,  740, 1455, 1455,  739, 1455, 1455,  738, 1455,
1564       737,  736, 1455, 1456, 1456,  735,  734, 1456,  733, 1456,
1565 
1566       732,  730, 1456,  729, 1456, 1456, 1457, 1457, 1457, 1457,
1567       728, 1457, 1457,  727, 1457, 1457,  726, 1457,  725,  724,
1568      1457,  723,  722,  721,  720,  719,  718,  717,  716,  715,
1569       713,  712,  711,  709,  708,  707,  706,  705,  704,  703,
1570       702,  701,  700,  699,  698,  697,  696,  695,  694,  693,
1571       692,  691,  690,  689,  688,  687,  686,  685,  684,  683,
1572       682,  679,  678,  677,  676,  675,  673,  672,  671,  670,
1573       669,  668,  667,  666,  665,  664,  663,  660,  659,  657,
1574       656,  655,  654,  653,  652,  651,  649,  648,  647,  646,
1575       645,  644,  643,  642,  641,  640,  639,  638,  637,  636,
1576 
1577       635,  634,  633,  632,  631,  630,  629,  628,  627,  626,
1578       625,  624,  623,  622,  621,  617,  616,  615,  614,  613,
1579       611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
1580       601,  597,  596,  594,  593,  592,  591,  590,  589,  588,
1581       586,  585,  584,  583,  582,  581,  580,  579,  578,  577,
1582       576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
1583       566,  565,  564,  563,  562,  561,  560,  559,  558,  556,
1584       555,  554,  553,  552,  550,  549,  548,  547,  546,  545,
1585       544,  543,  542,  541,  540,  538,  537,  535,  534,  533,
1586       532,  531,  530,  529,  527,  526,  525,  498,  497,  494,
1587 
1588       478,  477,  463,  460,  458,  457,  456,  455,  454,  453,
1589       452,  451,  450,  449,  448,  447,  446,  445,  444,  443,
1590       442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
1591       432,  430,  429,  428,  427,  426,  424,  423,  422,  421,
1592       420,  419,  418,  417,  416,  415,  414,  412,  411,  409,
1593       408,  407,  406,  405,  404,  403,  401,  400,  399,  395,
1594       394,  393,  392,  390,  389,  387,  384,  383,  380,  378,
1595       375,  374,  373,  372,  371,  370,  368,  367,  366,  365,
1596       364,  363,  361,  360,  359,  355,  354,  352,  351,  350,
1597       349,  348,  347,  343,  342,  341,  339,  338,  336,  333,
1598 
1599       332,  329,  327,  324,  323,  322,  321,  320,  319,  317,
1600       316,  315,  314,  313,  312,  310,  309,  308,  304,  303,
1601       301,  300,  299,  298,  297,  296,  293,  292,  291,  289,
1602       288,  286,  283,  282,  279,  277,  275,  274,  273,  272,
1603       271,  270,  269,  267,  266,  265,  264,  263,  262,  260,
1604       259,  258,  257,  254,  253,  251,  250,  249,  248,  247,
1605       246,  218,  196,  194,  186,  185,  184,  182,  181,  179,
1606       176,  175,  172,  170,  168,  167,  166,  165,  164,  163,
1607       162,  160,  159,  158,  157,  156,  155,  153,  152,  151,
1608       150,  147,  146,  144,  143,  142,  141,  140,  139,  137,
1609 
1610       136,  134,  132,  126,  122,  121,  119,  110,  104,  100,
1611        99,   97,   87,   81,   77,   76,   74,   39,   33,   29,
1612        28,   26,   19,   11,   10,    9, 1431, 1431, 1431, 1431,
1613      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1614      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1615      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1616      1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1617      1431
1618     } ;
1619 
1620 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1621 static char *yy_full_match;
1622 static int yy_lp;
1623 static int yy_looking_for_trail_begin = 0;
1624 static int yy_full_lp;
1625 static int *yy_full_state;
1626 #define YY_TRAILING_MASK 0x2000
1627 #define YY_TRAILING_HEAD_MASK 0x4000
1628 #define REJECT \
1629 { \
1630 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1631 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1632 yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
1633 yy_state_ptr = yy_full_state; /* restore orig. state */ \
1634 yy_current_state = *yy_state_ptr; /* restore curr. state */ \
1635 ++yy_lp; \
1636 goto find_rule; \
1637 }
1638 static int yy_more_flag = 0;
1639 static int yy_more_len = 0;
1640 #define yymore() (yy_more_flag = 1)
1641 #define YY_MORE_ADJ yy_more_len
1642 char *yytext;
1643 #define INITIAL 0
1644 #define VERSION "4.0"
1645 
1646 #ifndef DEFAULT
1647 #define DEFAULT "Courier"
1648 #endif
1649 #ifndef COMMENT
1650 #define COMMENT "Helvetica-Oblique"
1651 #endif
1652 #ifndef PREPROC
1653 #define PREPROC "Courier-BoldOblique"
1654 #endif
1655 #ifndef KEYWORD
1656 #define KEYWORD "Courier-Bold"
1657 #endif
1658 #ifndef TYPE
1659 #define TYPE    "Courier-Bold"
1660 #endif
1661 #ifndef STRINGS
1662 #define STRINGS "Courier-Oblique"
1663 #endif
1664 #ifndef LNUMBER
1665 #define LNUMBER "Times-Roman"
1666 #endif
1667 #ifndef FUNCTION
1668 #define FUNCTION "Bookman-LightItalic"
1669 #endif
1670 #ifndef DIM
1671 #define DIM 0.75
1672 #endif
1673 
1674 #define ISO "\n"\
1675 "%%%%BeginProlog								\n"\
1676 "/reencdict 12 dict def /ReEncode { reencdict begin				\n"\
1677 "/newcodesandnames exch def /newfontname exch def /basefontname exch def	\n"\
1678 "/basefontdict basefontname findfont def /newfont basefontdict maxlength dict	\n"\
1679 "def basefontdict { exch dup /FID ne { dup /Encoding eq				\n"\
1680 "{ exch dup length array copy newfont 3 1 roll put }				\n"\
1681 "{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall		\n"\
1682 "newfont /FontName newfontname put newcodesandnames aload pop   		\n"\
1683 "128 1 255 { newfont /Encoding get exch /.notdef put } for			\n"\
1684 "newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat 	\n"\
1685 "newfontname newfont definefont pop end } def					\n"\
1686 "/isovec [									\n"\
1687 "8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde			\n"\
1688 "8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis			\n"\
1689 "8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron	\n"\
1690 "8#220 /dotlessi 8#230 /oe 8#231 /OE  						\n"\
1691 "8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling			\n"\
1692 "8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis	\n"\
1693 "8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot	\n"\
1694 "8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus	\n"\
1695 "8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph\n"\
1696 "8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine	\n"\
1697 "8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf				\n"\
1698 "8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute		\n"\
1699 "8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring			\n"\
1700 "8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute				\n"\
1701 "8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute		\n"\
1702 "8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve	\n"\
1703 "8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply\n"\
1704 "8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex			\n"\
1705 "8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave	\n"\
1706 "8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring	\n"\
1707 "8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute				\n"\
1708 "8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute		\n"\
1709 "8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve	\n"\
1710 "8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide	\n"\
1711 "8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex			\n"\
1712 "8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def		\n"\
1713 "%%%%EndProlog\n\n"
1714 
1715 #define FILLEDBOX "\n"\
1716 "/FilledBox {\n"\
1717 " gsave\n"\
1718 "  newpath\n"\
1719 "  moveto 2 copy\n"\
1720 "  0 exch rlineto\n"\
1721 "  0 rlineto\n"\
1722 "  2 copy\n"\
1723 "  neg 0 exch rlineto \n"\
1724 "  pop\n"\
1725 "  currentpoint\n"\
1726 "  closepath\n"\
1727 "  0.95 setgray fill\n"\
1728 " grestore\n"\
1729 " gsave\n"\
1730 "  newpath\n"\
1731 "  moveto\n"\
1732 "  dup 0 exch rlineto\n"\
1733 "  1 1 rlineto\n"\
1734 "  2 add neg 0 exch rlineto\n"\
1735 "  2 add neg 0 rlineto\n"\
1736 "  1 1 rlineto\n"\
1737 "  closepath\n"\
1738 "  0.85 setgray fill\n"\
1739 " grestore\n"\
1740 "} def\n"
1741 
1742 #define INOUTFUNCTIONS "\n"\
1743 "/DrawArrow { \n"\
1744 "  gsave 0.6 setlinewidth\n"\
1745 "  newpath\n"\
1746 "    moveto 1 setgray -5 3 rlineto currentpoint stroke\n"\
1747 "    moveto 0.83 setgray 17 -3 rlineto currentpoint stroke\n"\
1748 "    moveto 1 setgray -17 -3 rlineto currentpoint stroke\n"\
1749 "    moveto 0.83 setgray 5 3 rlineto stroke\n"\
1750 "  closepath\n"\
1751 "  grestore\n"\
1752 "} def\n\n"\
1753 "/InFunction {\ngsave 0 setgray \n"\
1754 "dup length 0 eq\n{ pop }\n{ 385 812 DrawArrow\ngsave\n"\
1755 "newpath 380 795 moveto 517 795 lineto 517 820 lineto 380 820 lineto "\
1756 "closepath clip\n/Times-Italic findfont 8 scalefont setfont\n"\
1757 "400 810 moveto s\ngrestore } ifelse\ngrestore\n} def\n\n"\
1758 "/OutFunction {\ngsave 0 setgray \n"\
1759 "\ndup length 0 eq\n{ pop }\n{507 803 DrawArrow\ngsave\n"\
1760 "newpath 380 795 moveto 517 795 lineto 517 820 lineto 380 820 lineto "\
1761 "closepath clip\n/Times-Italic findfont 8 scalefont setfont\n"\
1762 "dup stringwidth pop neg 500 add 801 moveto s\ngrestore } ifelse\n"\
1763 "grestore\n} def\n\n"
1764 
1765 #define FUNCTIONBOX \
1766 "/FunctionBox {\n"\
1767 "  gsave\n"\
1768 "  100 10 475 782 FilledBox\n"\
1769 "  0 setgray\n"\
1770 "  /Times-BoldItalic findfont 8 scalefont setfont\n"\
1771 "  (Functions) dup stringwidth pop 2 div neg 525 add 784 moveto s\n\n"\
1772 "  /inds exch def\n"\
1773 "  475 773 moveto\n"\
1774 "  counttomark 2 div cvi\n"\
1775 "  {\n"\
1776 "    currentpoint exch pop 575 exch moveto\n"\
1777 "    gsave currentpoint newpath moveto 0 -3 rmoveto 0 inds 1.25 mul rlineto\n"\
1778 "    -100 0 rlineto 0 inds 1.25 mul neg rlineto closepath 0.95 setgray fill\n"\
1779 "    grestore\n"\
1780 "    /Times-Roman findfont inds scalefont setfont\n"\
1781 "    currentpoint exch pop 1 index stringwidth pop neg dup 575 add exch\n"\
1782 "    4 1 roll exch moveto -0.5 0 rmoveto s\n"\
1783 "    /Times-Italic findfont inds scalefont setfont\n"\
1784 "    gsave -4 add currentpoint exch pop 476 exch \n"\
1785 "    newpath moveto\n"\
1786 "    0 -20 rlineto 100 add dup 0 rlineto 0 40 rlineto\n"\
1787 "    neg 0 rlineto 0 -20 rlineto closepath clip 0.5 0 rmoveto s\n"\
1788 "    grestore\n"\
1789 "    0 inds 1 add neg rmoveto\n"\
1790 "  } repeat\n"\
1791 "  grestore\n"\
1792 "  pop\n"\
1793 "} def\n"
1794 
1795 #define VERS "\n/ver {\n"\
1796 "  gsave 0 setgray 575 822 moveto\n"\
1797 "  /Bookman-Light findfont 5 scalefont setfont\n"\
1798 "  (c2ps v%s) dup stringwidth pop neg 0 rmoveto s\n"\
1799 "  grestore\n\n} def\n"
1800 
1801 #define VerMsg \
1802 "c2ps version %s\n"\
1803 "Copyright (C)  1995-1997  Dmitri Shtilman, Dmitri Makarov\n"
1804 
1805 #define HelpMsg \
1806 "Usage: c2ps  [ -?h124abceikmnruvwx ] [ -F default_font   ] [ -C comment_font  ]\n"\
1807 "             [ -K keyword_font     ] [ -N lnumber_font   ] [ -P preproc_font  ]\n"\
1808 "             [ -S string_font      ] [ -T type_font      ] [ -U function_font ]\n"\
1809 "             [ -X nonlatin_font    ] [ -d dim_comments   ] [ -f fontsize      ]\n"\
1810 "             [ -l lines            ] [ -o output_file    ] [ -p paper         ]\n"\
1811 "             [ -s space            ] [ -t tabsize        ] [ -_ fun_highlight ]\n"\
1812 "             [ -DPREPROC_VAR ...   ] [ -UPREPROC_VAR ... ] [ file ... ]\n"
1813 
1814 #define BUFL	8192		/* " buffer length  */
1815 #define PAGE	790.
1816 #define DUP(x,y)  x = (char*)malloc(strlen(y) + 1); strcpy(x,y)
1817 #include <stdio.h>
1818 #include <string.h>
1819 #include <fcntl.h>
1820 #include <time.h>
1821 #include <sys/types.h>
1822 #include <sys/stat.h>
1823 
1824 #include <math.h>
1825 #include <paper.h>
1826 
1827 struct {
1828 	char *name;
1829 	int width, height;
1830 } pspec;
1831 
1832 FILE* out;			/* output stream */
1833 
1834 struct fun {			/* strucure to hold info about fun id definition */
1835     char* name;
1836     long unsigned page;
1837     long unsigned line;
1838     struct fun *next;
1839 };
1840 
1841 
1842 /* FLAGS */
1843 unsigned noc = 0;	        /* global: disable c highlighting */
1844 unsigned number_lines = 1;	/* global: number lines */
1845 unsigned line_cut = 0;		/* global: cut long lines */
1846 unsigned ppl = 1;		/* global: columns per page */
1847 unsigned lpp = 0;		/* global: lines per page */
1848 unsigned frame = 0;		/* global: draw frame around each column */
1849 unsigned iso = 1;		/* global: support ISO Latin 1 encoding */
1850 unsigned last_modified = 1;	/* global: print the time when file was last modified */
1851 unsigned header = 1;		/* global: print header */
1852 unsigned adjust_comments = 1;	/* global: adjust multiple line comments */
1853 unsigned ext = 1;		/* global:  */
1854 unsigned c_ext = 0;		/* global: highlight files according to extension */
1855 unsigned fun_box = 1;		/* global:  */
1856 unsigned fun_entry_exit = 1;	/* global: print fun id's at entry and exit */
1857 unsigned fun_highlight_id = 2;	/* global:  fun id highlight: 0-none, 1-box,
1858 				   2-underline (default) */
1859 
1860 int tab = 8;			/* global: number of spaces in a tab */
1861 float fontsize = 10.;		/* global:  font size */
1862 float spacing = 0.;		/* global: space between the lines */
1863 float dim_comment = DIM;	/* global: comment dimming coefficient */
1864 
1865 static struct fun *first;	/* internal: list of fun structures */
1866 static struct fun *new_fun;
1867 static struct fun *fn;
1868 static struct fun *pr;
1869 
1870 static long unsigned line = 0;	/* internal: current line within a currently scanned file */
1871 static long unsigned line_on_page = 0; /* internal: line in a local page */
1872 static long unsigned page = 0;	/* internal: current page of a currently scanned file */
1873 static long unsigned total_page = 0; /* internal: currently printed page */
1874 
1875 static unsigned line_split = 0;	/* internal: we are in a subline of a wrapped line */
1876 static unsigned lc = 0;		/* internal:  */
1877 static unsigned str_length = 0;	/* internal: current string length in chars */
1878 static unsigned comment = 0;	/* internal: we are within a comment */
1879 static unsigned com_start = 0;	/* internal:  */
1880 static unsigned comment_many_lines; /* internal:  */
1881 static unsigned function_body_expected = 0; /* internal:  */
1882 static int nesting = 0;		/* internal: current nesting depth */
1883 static float x;			/* internal: current x coordinate */
1884 static float chw = 6.;		/* internal:  */
1885 
1886 static char buffer[BUFL];	/* internal */
1887 
1888 static char *c;			/* internal:  */
1889 static char *cur_fun = NULL;	/* internal: current function id */
1890 
1891 static char **fp = NULL;	/* list of names of files to print */
1892 static int fp_cur = -1;		/* internal: index of a current  file */
1893 static int fp_num = 0;		/* internal: number of files to print */
1894 
1895 static char **defs = NULL;	/* list of defined preprocessor vars */
1896 static int defs_num = 0;	/*  */
1897 static char **undefs = NULL;	/* list of undefined preprocessor vars */
1898 static int undefs_num = 0;	/*  */
1899 static unsigned dont_print[10];
1900 static unsigned prep_touch[10];
1901 static int pd = 0;
1902 
1903 static char date[25];		/* internal: current or last modified date */
1904 static time_t t;		/* internal:  */
1905 static struct stat b;		/* internal:  */
1906 
1907 static unsigned long processed;	/* internal:  */
1908 static char ratio[13] = "(          )";
1909 static unsigned nonlatin_text = 0;
1910 
1911 int PString	YY_PROTO((char*));
1912 char* PRatio	();
1913 int PFlush	();
1914 int PFill	YY_PROTO((char*));
1915 int PFunctionBox();
1916 int NextPage	();
1917 int NextLine	();
1918 int Version	();
1919 int Help	();
1920 int PCext	YY_PROTO((char*));
1921 int IsDefined	YY_PROTO((char*));
1922 int IsUndefined	YY_PROTO((char*));
1923 #define comm 1
1924 
1925 #define preps 2
1926 
1927 #define nnested 3
1928 
1929 #define dont_highlight 4
1930 
1931 
1932 /* Macros after this point can all be overridden by user definitions in
1933  * section 1.
1934  */
1935 
1936 #ifndef YY_SKIP_YYWRAP
1937 #ifdef __cplusplus
1938 extern "C" int yywrap YY_PROTO(( void ));
1939 #else
1940 extern int yywrap YY_PROTO(( void ));
1941 #endif
1942 #endif
1943 
1944 #ifndef YY_NO_UNPUT
1945 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1946 #endif
1947 
1948 #ifndef yytext_ptr
1949 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1950 #endif
1951 
1952 #ifndef YY_NO_INPUT
1953 #ifdef __cplusplus
1954 static int yyinput YY_PROTO(( void ));
1955 #else
1956 static int input YY_PROTO(( void ));
1957 #endif
1958 #endif
1959 
1960 #if YY_STACK_USED
1961 static int yy_start_stack_ptr = 0;
1962 static int yy_start_stack_depth = 0;
1963 static int *yy_start_stack = 0;
1964 #ifndef YY_NO_PUSH_STATE
1965 static void yy_push_state YY_PROTO(( int new_state ));
1966 #endif
1967 #ifndef YY_NO_POP_STATE
1968 static void yy_pop_state YY_PROTO(( void ));
1969 #endif
1970 #ifndef YY_NO_TOP_STATE
1971 static int yy_top_state YY_PROTO(( void ));
1972 #endif
1973 
1974 #else
1975 #define YY_NO_PUSH_STATE 1
1976 #define YY_NO_POP_STATE 1
1977 #define YY_NO_TOP_STATE 1
1978 #endif
1979 
1980 #ifdef YY_MALLOC_DECL
1981 YY_MALLOC_DECL
1982 #else
1983 #if __STDC__
1984 #ifndef __cplusplus
1985 #include <stdlib.h>
1986 #endif
1987 #else
1988 /* Just try to get by without declaring the routines.  This will fail
1989  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1990  * or sizeof(void*) != sizeof(int).
1991  */
1992 #endif
1993 #endif
1994 
1995 /* Amount of stuff to slurp up with each read. */
1996 #ifndef YY_READ_BUF_SIZE
1997 #define YY_READ_BUF_SIZE 8192
1998 #endif
1999 
2000 /* Copy whatever the last rule matched to the standard output. */
2001 
2002 #ifndef ECHO
2003 /* This used to be an fputs(), but since the string might contain NUL's,
2004  * we now use fwrite().
2005  */
2006 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
2007 #endif
2008 
2009 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2010  * is returned in "result".
2011  */
2012 #ifndef YY_INPUT
2013 #define YY_INPUT(buf,result,max_size) \
2014 	if ( yy_current_buffer->yy_is_interactive ) \
2015 		{ \
2016 		int c = '*', n; \
2017 		for ( n = 0; n < max_size && \
2018 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2019 			buf[n] = (char) c; \
2020 		if ( c == '\n' ) \
2021 			buf[n++] = (char) c; \
2022 		if ( c == EOF && ferror( yyin ) ) \
2023 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
2024 		result = n; \
2025 		} \
2026 	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
2027 		  && ferror( yyin ) ) \
2028 		YY_FATAL_ERROR( "input in flex scanner failed" );
2029 #endif
2030 
2031 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2032  * we don't want an extra ';' after the "return" because that will cause
2033  * some compilers to complain about unreachable statements.
2034  */
2035 #ifndef yyterminate
2036 #define yyterminate() return YY_NULL
2037 #endif
2038 
2039 /* Number of entries by which start-condition stack grows. */
2040 #ifndef YY_START_STACK_INCR
2041 #define YY_START_STACK_INCR 25
2042 #endif
2043 
2044 /* Report a fatal error. */
2045 #ifndef YY_FATAL_ERROR
2046 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2047 #endif
2048 
2049 /* Default declaration of generated scanner - a define so the user can
2050  * easily add parameters.
2051  */
2052 #ifndef YY_DECL
2053 #define YY_DECL int yylex YY_PROTO(( void ))
2054 #endif
2055 
2056 /* Code executed at the beginning of each rule, after yytext and yyleng
2057  * have been set up.
2058  */
2059 #ifndef YY_USER_ACTION
2060 #define YY_USER_ACTION
2061 #endif
2062 
2063 /* Code executed at the end of each rule. */
2064 #ifndef YY_BREAK
2065 #define YY_BREAK break;
2066 #endif
2067 
2068 #define YY_RULE_SETUP \
2069 	if ( yyleng > 0 ) \
2070 		yy_current_buffer->yy_at_bol = \
2071 				(yytext[yyleng - 1] == '\n'); \
2072 	YY_USER_ACTION
2073 
2074 YY_DECL
2075 	{
2076 	register yy_state_type yy_current_state;
2077 	register char *yy_cp, *yy_bp;
2078 	register int yy_act;
2079 
2080 
2081 
2082 	if ( yy_init )
2083 		{
2084 		yy_init = 0;
2085 
2086 #ifdef YY_USER_INIT
2087 		YY_USER_INIT;
2088 #endif
2089 
2090 		if ( ! yy_start )
2091 			yy_start = 1;	/* first start state */
2092 
2093 		if ( ! yyin )
2094 			yyin = stdin;
2095 
2096 		if ( ! yyout )
2097 			yyout = stdout;
2098 
2099 		if ( ! yy_current_buffer )
2100 			yy_current_buffer =
2101 				yy_create_buffer( yyin, YY_BUF_SIZE );
2102 
2103 		yy_load_buffer_state();
2104 		}
2105 
2106 	while ( 1 )		/* loops until end-of-file is reached */
2107 		{
2108 		yy_more_len = 0;
2109 		if ( yy_more_flag )
2110 			{
2111 			yy_more_len = yyleng;
2112 			yy_more_flag = 0;
2113 			}
2114 		yy_cp = yy_c_buf_p;
2115 
2116 		/* Support of yytext. */
2117 		*yy_cp = yy_hold_char;
2118 
2119 		/* yy_bp points to the position in yy_ch_buf of the start of
2120 		 * the current run.
2121 		 */
2122 		yy_bp = yy_cp;
2123 
2124 		yy_current_state = yy_start;
2125 		yy_current_state += YY_AT_BOL();
2126 		yy_state_ptr = yy_state_buf;
2127 		*yy_state_ptr++ = yy_current_state;
2128 yy_match:
2129 		do
2130 			{
2131 			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2132 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2133 				{
2134 				yy_current_state = (int) yy_def[yy_current_state];
2135 				if ( yy_current_state >= 1432 )
2136 					yy_c = yy_meta[(unsigned int) yy_c];
2137 				}
2138 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2139 			*yy_state_ptr++ = yy_current_state;
2140 			++yy_cp;
2141 			}
2142 		while ( yy_base[yy_current_state] != 3127 );
2143 
2144 yy_find_action:
2145 		yy_current_state = *--yy_state_ptr;
2146 		yy_lp = yy_accept[yy_current_state];
2147 find_rule: /* we branch to this label when backing up */
2148 		for ( ; ; ) /* until we find what rule we matched */
2149 			{
2150 			if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2151 				{
2152 				yy_act = yy_acclist[yy_lp];
2153 				if ( yy_act & YY_TRAILING_HEAD_MASK ||
2154 				     yy_looking_for_trail_begin )
2155 					{
2156 					if ( yy_act == yy_looking_for_trail_begin )
2157 						{
2158 						yy_looking_for_trail_begin = 0;
2159 						yy_act &= ~YY_TRAILING_HEAD_MASK;
2160 						break;
2161 						}
2162 					}
2163 				else if ( yy_act & YY_TRAILING_MASK )
2164 					{
2165 					yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
2166 					yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
2167 					yy_full_match = yy_cp;
2168 					yy_full_state = yy_state_ptr;
2169 					yy_full_lp = yy_lp;
2170 					}
2171 				else
2172 					{
2173 					yy_full_match = yy_cp;
2174 					yy_full_state = yy_state_ptr;
2175 					yy_full_lp = yy_lp;
2176 					break;
2177 					}
2178 				++yy_lp;
2179 				goto find_rule;
2180 				}
2181 			--yy_cp;
2182 			yy_current_state = *--yy_state_ptr;
2183 			yy_lp = yy_accept[yy_current_state];
2184 			}
2185 
2186 		YY_DO_BEFORE_ACTION;
2187 
2188 
2189 do_action:	/* This label is used only to access EOF actions. */
2190 
2191 
2192 		switch ( yy_act )
2193 	{ /* beginning of action switch */
2194 case 1:
2195 YY_RULE_SETUP
2196 {
2197                         PString(yytext);
2198                 }
2199 	YY_BREAK
2200 case 2:
2201 YY_RULE_SETUP
2202 {
2203                         NextLine();
2204                 }
2205 	YY_BREAK
2206 case 3:
2207 YY_RULE_SETUP
2208 { /*'*/
2209 			PFlush();
2210                         fprintf(out, "cf fst\n");
2211                         PString(yytext);
2212 			fprintf(out, "sf\n");
2213 		}
2214 	YY_BREAK
2215 case 4:
2216 YY_RULE_SETUP
2217 {
2218                         PFlush();
2219 			while (1)
2220 			  {
2221 			    if (pd > 0 &&
2222                                 dont_print[pd - 1])
2223 			      break;
2224 
2225                             comment = 1;
2226 			    comment_many_lines = 0;
2227                             fprintf(out, "cf fco %.2f setgray\n", dim_comment);
2228                             com_start = ++str_length;
2229 			    ++str_length;
2230                             fprintf(out, (adjust_comments) ?
2231                                          "(\\/)s  currentpoint pop (*) s " : "(\\/*) s ");
2232 			    BEGIN(comm);
2233 			    break;
2234 			  }
2235 		}
2236 	YY_BREAK
2237 case 5:
2238 YY_RULE_SETUP
2239 {
2240 			c = yytext;
2241 			if (adjust_comments)
2242 			  {
2243 			    if (comment_many_lines)
2244 			      {
2245                                 fprintf(out, " %.2f moveto ", x + fontsize + spacing);
2246 			        while (*c == ' ' || *c== '\t')
2247 				  c++;
2248 			        str_length = com_start;
2249 			       }
2250 			       else
2251 			       fprintf(out, " pop ");
2252 			   }
2253 			   PString(c);
2254                         fprintf(out, " sf 0 setgray\n");
2255                         comment = 0;
2256 			BEGIN((nesting<=0)? nnested : INITIAL);
2257 		}
2258 	YY_BREAK
2259 case 6:
2260 YY_RULE_SETUP
2261 {	yymore();		}
2262 	YY_BREAK
2263 case 7:
2264 YY_RULE_SETUP
2265 {
2266 			c = yytext;
2267                         if (adjust_comments && comment_many_lines++)
2268                           {
2269 			    fprintf(out," dup %.2f moveto ", x + fontsize + spacing);
2270 			    while(*c == ' ' || *c == '\t')
2271 			      c++;
2272 			    str_length = com_start;
2273                           }
2274                         PString(c);
2275 		}
2276 	YY_BREAK
2277 case 8:
2278 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2279 yy_c_buf_p = yy_cp = yy_bp + 1;
2280 YY_DO_BEFORE_ACTION; /* set up yytext again */
2281 YY_RULE_SETUP
2282 {	yymore();		}
2283 	YY_BREAK
2284 case 9:
2285 YY_RULE_SETUP
2286 {
2287 			PFlush();
2288 			while (1)
2289 			  {
2290 			    if (pd > 0 &&
2291 				prep_touch[pd - 1] &&
2292 				dont_print[pd])
2293 			      break;
2294 
2295 			     comment = 1;
2296                              fprintf(out, "cf fco %.2f setgray\n", dim_comment);
2297                              PString(yytext);
2298 			     fprintf(out, "sf 0 setgray\n");
2299 			     comment = 0;
2300 			     break;
2301 			  }
2302 		}
2303 	YY_BREAK
2304 case 10:
2305 YY_RULE_SETUP
2306 {
2307                         PFlush();
2308 			while (1)
2309 			  {
2310 			    if (! strncmp (yytext, "#ifdef", 6))
2311 			      {
2312 				if (IsDefined (& yytext[7]))
2313 				  {
2314 				    dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2315 				    prep_touch[pd] = 1;
2316 				    pd++;
2317 				    while (input() != '\n');
2318 				    break;
2319 				  }
2320 				else if (IsUndefined (& yytext[7]))
2321 				  {
2322 				    dont_print[pd] = 1;
2323 				    prep_touch[pd] = 1;
2324 				    pd++;
2325 				    while (input() != '\n');
2326 				    break;
2327 				  }
2328 
2329 				dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2330 				prep_touch[pd] = 0;
2331 				pd++;
2332 				if (dont_print[pd - 1])
2333 				  {
2334 				    while (input() != '\n');
2335 				    break;
2336 				  }
2337 			      }
2338 			    else if (! strncmp (yytext, "#ifndef", 7))
2339 			      {
2340 				if (IsUndefined (& yytext[8]))
2341 				  {
2342 				    dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2343 				    prep_touch[pd] = 1;
2344 				    pd++;
2345 				    while (input() != '\n');
2346 				    break;
2347 				  }
2348 				else if (IsDefined (& yytext[8]))
2349 				  {
2350 				    dont_print[pd] = 1;
2351 				    prep_touch[pd] = 1;
2352 				    pd++;
2353 				    while (input() != '\n');
2354 				    break;
2355 				  }
2356 
2357 				dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2358 				prep_touch[pd] = 0;
2359 				pd++;
2360 				if (dont_print[pd - 1])
2361 				  {
2362 				    while (input() != '\n');
2363 				    break;
2364 				  }
2365 			      }
2366 			    else if (! strncmp (yytext, "#endif", 6))
2367 			      {
2368 				--pd;
2369 				if (pd < 0)
2370 				  pd = 0;
2371 				if (prep_touch[pd])
2372 				  {
2373 				    while (input() != '\n');
2374 				    break;
2375 				  }
2376 			      }
2377 			    else if (! strncmp (yytext, "#else", 5))
2378 			      {
2379 				if (prep_touch[pd - 1])
2380 				  dont_print[pd - 1] =
2381 				      ! dont_print[pd - 1] ||
2382 				      ((pd > 1) && dont_print[pd - 2]);
2383 				if (prep_touch[pd - 1])
2384 				  {
2385 				    while (input() != '\n');
2386 				    break;
2387 				  }
2388 			      }
2389 
2390 			    BEGIN(preps);
2391 			    fprintf(out, "cf fpr\n");
2392 			    PString(yytext);
2393 			    fprintf(out, "sf\n");
2394 			    break;
2395 			  }
2396 		}
2397 	YY_BREAK
2398 case 11:
2399 YY_RULE_SETUP
2400 {
2401                         PFill("\\");
2402 			PFlush();
2403 			NextLine();
2404 		}
2405 	YY_BREAK
2406 case 12:
2407 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2408 yy_c_buf_p = yy_cp -= 1;
2409 YY_DO_BEFORE_ACTION; /* set up yytext again */
2410 YY_RULE_SETUP
2411 {
2412 			PFlush();
2413                         BEGIN((nesting <= 0) ? nnested : INITIAL);
2414 		}
2415 	YY_BREAK
2416 case 13:
2417 YY_RULE_SETUP
2418 {
2419 			if (pd > 0 &&
2420 			    prep_touch[pd - 1] &&
2421 			    dont_print[pd - 1])
2422 			  REJECT;
2423                         if (nesting || function_body_expected)
2424                           REJECT;
2425                         function_body_expected = 1;
2426 			if (cur_fun)
2427 			  free(cur_fun);
2428 			DUP(cur_fun, yytext);
2429 			if (fun_box)
2430 			  {
2431 			    new_fun = (struct fun*) malloc(sizeof(struct fun));
2432 			    DUP(new_fun->name, yytext);
2433 			    new_fun->page = page;
2434 			    new_fun->line = line;
2435 			    for(pr = NULL, fn = first;
2436 				fn && strcmp(fn->name, yytext) > 0;
2437 				pr=fn,fn=fn->next);
2438 			    if (pr == NULL)
2439 			      {
2440 				new_fun->next = first;
2441 				first = new_fun;
2442 			      }
2443 			    else
2444 			      {
2445 				new_fun->next = pr->next;
2446 				pr->next = new_fun;
2447 			      }
2448 			  }
2449 
2450 			PFlush();
2451                         fprintf(out, "cf ffu\n");
2452 			if (fun_highlight_id == 2) /* underline */
2453 			  {
2454 			    fprintf(out, "gsave %.2f %.2f rmoveto (%s) stringwidth "
2455 				    "pop 0 currentpoint newpath moveto rlineto "
2456 				    "closepath 0.01 setlinewidth stroke grestore\n",
2457 				    chw/12., -fontsize/5., yytext);
2458 			  }
2459 			else if (fun_highlight_id == 1)	/* box */
2460 			  {
2461 			    fprintf(out, "gsave (%s) stringwidth "
2462 				    "pop 2 add %.2f -1 -1 rmoveto "
2463 				    "currentpoint\nFilledBox grestore\n",
2464 				    yytext,fontsize);
2465 			  }
2466                         PString(yytext);
2467 			fprintf(out, "sf\n");
2468 		}
2469 	YY_BREAK
2470 case 14:
2471 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2472 yy_c_buf_p = yy_cp -= 1;
2473 YY_DO_BEFORE_ACTION; /* set up yytext again */
2474 YY_RULE_SETUP
2475 {
2476 			PFill(yytext);
2477 			PFlush();
2478                         fprintf(out, "cf fty\n");
2479                         PString(yytext + 1);
2480 			fprintf(out, "sf\n");
2481 		}
2482 	YY_BREAK
2483 case 15:
2484 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2485 yy_c_buf_p = yy_cp -= 1;
2486 YY_DO_BEFORE_ACTION; /* set up yytext again */
2487 YY_RULE_SETUP
2488 {
2489 			PFlush();
2490                         fprintf(out, "cf fty\n");
2491                         PString(yytext);
2492 			fprintf(out, "sf\n");
2493 		}
2494 	YY_BREAK
2495 case 16:
2496 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2497 yy_c_buf_p = yy_cp -= 1;
2498 YY_DO_BEFORE_ACTION; /* set up yytext again */
2499 YY_RULE_SETUP
2500 {
2501 			PFill(yytext);
2502 			PFlush();
2503                         fprintf(out, "cf %s\n", (ext) ? "fty" : "fdf");
2504                         PString(yytext + 1);
2505 			fprintf(out, "sf\n");
2506 		}
2507 	YY_BREAK
2508 case 17:
2509 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2510 yy_c_buf_p = yy_cp -= 1;
2511 YY_DO_BEFORE_ACTION; /* set up yytext again */
2512 YY_RULE_SETUP
2513 {
2514 			PFlush();
2515                         fprintf(out, "cf %s\n", (ext) ? "fty" : "fdf");
2516                         PString(yytext);
2517 			fprintf(out, "sf\n");
2518 		}
2519 	YY_BREAK
2520 case 18:
2521 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2522 yy_c_buf_p = yy_cp -= 1;
2523 YY_DO_BEFORE_ACTION; /* set up yytext again */
2524 YY_RULE_SETUP
2525 {
2526 			PFill(yytext);
2527 			PFlush();
2528                         fprintf(out, "cf fke\n");
2529                         PString(yytext + 1);
2530 			fprintf(out, "sf\n");
2531 		}
2532 	YY_BREAK
2533 case 19:
2534 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2535 yy_c_buf_p = yy_cp -= 1;
2536 YY_DO_BEFORE_ACTION; /* set up yytext again */
2537 YY_RULE_SETUP
2538 {
2539 			PFlush();
2540                         fprintf(out, "cf fke\n");
2541                         PString(yytext);
2542 			fprintf(out, "sf\n");
2543 		}
2544 	YY_BREAK
2545 case 20:
2546 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2547 yy_c_buf_p = yy_cp -= 1;
2548 YY_DO_BEFORE_ACTION; /* set up yytext again */
2549 YY_RULE_SETUP
2550 {
2551 			PFill(yytext);
2552 			PFlush();
2553                         fprintf(out, "cf %s\n", (ext) ? "fke" : "fdf");
2554                         PString(yytext + 1);
2555 			fprintf(out, "sf\n");
2556 		}
2557 	YY_BREAK
2558 case 21:
2559 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2560 yy_c_buf_p = yy_cp -= 1;
2561 YY_DO_BEFORE_ACTION; /* set up yytext again */
2562 YY_RULE_SETUP
2563 {
2564 			PFlush();
2565                         fprintf(out, "cf %s\n", (ext) ? "fke" : "fdf");
2566                         PString(yytext);
2567 			fprintf(out, "sf\n");
2568 		}
2569 	YY_BREAK
2570 case 22:
2571 YY_RULE_SETUP
2572 {
2573 			PFlush();
2574 			if (! (pd > 0 &&
2575 			       dont_print[pd - 1]))
2576 			  NextLine();
2577 		}
2578 	YY_BREAK
2579 case 23:
2580 YY_RULE_SETUP
2581 {
2582                         PFill(yytext);
2583 		}
2584 	YY_BREAK
2585 case 24:
2586 YY_RULE_SETUP
2587 ECHO;
2588 	YY_BREAK
2589 			case YY_STATE_EOF(INITIAL):
2590 			case YY_STATE_EOF(comm):
2591 			case YY_STATE_EOF(preps):
2592 			case YY_STATE_EOF(nnested):
2593 			case YY_STATE_EOF(dont_highlight):
2594 				yyterminate();
2595 
2596 	case YY_END_OF_BUFFER:
2597 		{
2598 		/* Amount of text matched not including the EOB char. */
2599 		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2600 
2601 		/* Undo the effects of YY_DO_BEFORE_ACTION. */
2602 		*yy_cp = yy_hold_char;
2603 
2604 		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2605 			{
2606 			/* We're scanning a new file or input source.  It's
2607 			 * possible that this happened because the user
2608 			 * just pointed yyin at a new source and called
2609 			 * yylex().  If so, then we have to assure
2610 			 * consistency between yy_current_buffer and our
2611 			 * globals.  Here is the right place to do so, because
2612 			 * this is the first action (other than possibly a
2613 			 * back-up) that will match for the new input source.
2614 			 */
2615 			yy_n_chars = yy_current_buffer->yy_n_chars;
2616 			yy_current_buffer->yy_input_file = yyin;
2617 			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2618 			}
2619 
2620 		/* Note that here we test for yy_c_buf_p "<=" to the position
2621 		 * of the first EOB in the buffer, since yy_c_buf_p will
2622 		 * already have been incremented past the NUL character
2623 		 * (since all states make transitions on EOB to the
2624 		 * end-of-buffer state).  Contrast this with the test
2625 		 * in input().
2626 		 */
2627 		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2628 			{ /* This was really a NUL. */
2629 			yy_state_type yy_next_state;
2630 
2631 			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2632 
2633 			yy_current_state = yy_get_previous_state();
2634 
2635 			/* Okay, we're now positioned to make the NUL
2636 			 * transition.  We couldn't have
2637 			 * yy_get_previous_state() go ahead and do it
2638 			 * for us because it doesn't know how to deal
2639 			 * with the possibility of jamming (and we don't
2640 			 * want to build jamming into it because then it
2641 			 * will run more slowly).
2642 			 */
2643 
2644 			yy_next_state = yy_try_NUL_trans( yy_current_state );
2645 
2646 			yy_bp = yytext_ptr + YY_MORE_ADJ;
2647 
2648 			if ( yy_next_state )
2649 				{
2650 				/* Consume the NUL. */
2651 				yy_cp = ++yy_c_buf_p;
2652 				yy_current_state = yy_next_state;
2653 				goto yy_match;
2654 				}
2655 
2656 			else
2657 				{
2658 				yy_cp = yy_c_buf_p;
2659 				goto yy_find_action;
2660 				}
2661 			}
2662 
2663 		else switch ( yy_get_next_buffer() )
2664 			{
2665 			case EOB_ACT_END_OF_FILE:
2666 				{
2667 				yy_did_buffer_switch_on_eof = 0;
2668 
2669 				if ( yywrap() )
2670 					{
2671 					/* Note: because we've taken care in
2672 					 * yy_get_next_buffer() to have set up
2673 					 * yytext, we can now set up
2674 					 * yy_c_buf_p so that if some total
2675 					 * hoser (like flex itself) wants to
2676 					 * call the scanner after we return the
2677 					 * YY_NULL, it'll still work - another
2678 					 * YY_NULL will get returned.
2679 					 */
2680 					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2681 
2682 					yy_act = YY_STATE_EOF(YY_START);
2683 					goto do_action;
2684 					}
2685 
2686 				else
2687 					{
2688 					if ( ! yy_did_buffer_switch_on_eof )
2689 						YY_NEW_FILE;
2690 					}
2691 				break;
2692 				}
2693 
2694 			case EOB_ACT_CONTINUE_SCAN:
2695 				yy_c_buf_p =
2696 					yytext_ptr + yy_amount_of_matched_text;
2697 
2698 				yy_current_state = yy_get_previous_state();
2699 
2700 				yy_cp = yy_c_buf_p;
2701 				yy_bp = yytext_ptr + YY_MORE_ADJ;
2702 				goto yy_match;
2703 
2704 			case EOB_ACT_LAST_MATCH:
2705 				yy_c_buf_p =
2706 				&yy_current_buffer->yy_ch_buf[yy_n_chars];
2707 
2708 				yy_current_state = yy_get_previous_state();
2709 
2710 				yy_cp = yy_c_buf_p;
2711 				yy_bp = yytext_ptr + YY_MORE_ADJ;
2712 				goto yy_find_action;
2713 			}
2714 		break;
2715 		}
2716 
2717 	default:
2718 		YY_FATAL_ERROR(
2719 			"fatal flex scanner internal error--no action found" );
2720 	} /* end of action switch */
2721 		} /* end of scanning one token */
2722 	} /* end of yylex */
2723 
2724 
2725 /* yy_get_next_buffer - try to read in a new buffer
2726  *
2727  * Returns a code representing an action:
2728  *	EOB_ACT_LAST_MATCH -
2729  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2730  *	EOB_ACT_END_OF_FILE - end of file
2731  */
2732 
yy_get_next_buffer()2733 static int yy_get_next_buffer()
2734 	{
2735 	register char *dest = yy_current_buffer->yy_ch_buf;
2736 	register char *source = yytext_ptr;
2737 	register int number_to_move, i;
2738 	int ret_val;
2739 
2740 	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2741 		YY_FATAL_ERROR(
2742 		"fatal flex scanner internal error--end of buffer missed" );
2743 
2744 	if ( yy_current_buffer->yy_fill_buffer == 0 )
2745 		{ /* Don't try to fill the buffer, so this is an EOF. */
2746 		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2747 			{
2748 			/* We matched a singled characater, the EOB, so
2749 			 * treat this as a final EOF.
2750 			 */
2751 			return EOB_ACT_END_OF_FILE;
2752 			}
2753 
2754 		else
2755 			{
2756 			/* We matched some text prior to the EOB, first
2757 			 * process it.
2758 			 */
2759 			return EOB_ACT_LAST_MATCH;
2760 			}
2761 		}
2762 
2763 	/* Try to read more data. */
2764 
2765 	/* First move last chars to start of buffer. */
2766 	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2767 
2768 	for ( i = 0; i < number_to_move; ++i )
2769 		*(dest++) = *(source++);
2770 
2771 	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2772 		/* don't do the read, it's not guaranteed to return an EOF,
2773 		 * just force an EOF
2774 		 */
2775 		yy_n_chars = 0;
2776 
2777 	else
2778 		{
2779 		int num_to_read =
2780 			yy_current_buffer->yy_buf_size - number_to_move - 1;
2781 
2782 		while ( num_to_read <= 0 )
2783 			{ /* Not enough room in the buffer - grow it. */
2784 #ifdef YY_USES_REJECT
2785 			YY_FATAL_ERROR(
2786 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2787 #else
2788 
2789 			/* just a shorter name for the current buffer */
2790 			YY_BUFFER_STATE b = yy_current_buffer;
2791 
2792 			int yy_c_buf_p_offset =
2793 				(int) (yy_c_buf_p - b->yy_ch_buf);
2794 
2795 			if ( b->yy_is_our_buffer )
2796 				{
2797 				int new_size = b->yy_buf_size * 2;
2798 
2799 				if ( new_size <= 0 )
2800 					b->yy_buf_size += b->yy_buf_size / 8;
2801 				else
2802 					b->yy_buf_size *= 2;
2803 
2804 				b->yy_ch_buf = (char *)
2805 					/* Include room in for 2 EOB chars. */
2806 					yy_flex_realloc( (void *) b->yy_ch_buf,
2807 							 b->yy_buf_size + 2 );
2808 				}
2809 			else
2810 				/* Can't grow it, we don't own it. */
2811 				b->yy_ch_buf = 0;
2812 
2813 			if ( ! b->yy_ch_buf )
2814 				YY_FATAL_ERROR(
2815 				"fatal error - scanner input buffer overflow" );
2816 
2817 			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2818 
2819 			num_to_read = yy_current_buffer->yy_buf_size -
2820 						number_to_move - 1;
2821 #endif
2822 			}
2823 
2824 		if ( num_to_read > YY_READ_BUF_SIZE )
2825 			num_to_read = YY_READ_BUF_SIZE;
2826 
2827 		/* Read in more data. */
2828 		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2829 			yy_n_chars, num_to_read );
2830 		}
2831 
2832 	if ( yy_n_chars == 0 )
2833 		{
2834 		if ( number_to_move == YY_MORE_ADJ )
2835 			{
2836 			ret_val = EOB_ACT_END_OF_FILE;
2837 			yyrestart( yyin );
2838 			}
2839 
2840 		else
2841 			{
2842 			ret_val = EOB_ACT_LAST_MATCH;
2843 			yy_current_buffer->yy_buffer_status =
2844 				YY_BUFFER_EOF_PENDING;
2845 			}
2846 		}
2847 
2848 	else
2849 		ret_val = EOB_ACT_CONTINUE_SCAN;
2850 
2851 	yy_n_chars += number_to_move;
2852 	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2853 	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2854 
2855 	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2856 
2857 	return ret_val;
2858 	}
2859 
2860 
2861 /* yy_get_previous_state - get the state just before the EOB char was reached */
2862 
yy_get_previous_state()2863 static yy_state_type yy_get_previous_state()
2864 	{
2865 	register yy_state_type yy_current_state;
2866 	register char *yy_cp;
2867 
2868 	yy_current_state = yy_start;
2869 	yy_current_state += YY_AT_BOL();
2870 	yy_state_ptr = yy_state_buf;
2871 	*yy_state_ptr++ = yy_current_state;
2872 
2873 	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2874 		{
2875 		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2876 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2877 			{
2878 			yy_current_state = (int) yy_def[yy_current_state];
2879 			if ( yy_current_state >= 1432 )
2880 				yy_c = yy_meta[(unsigned int) yy_c];
2881 			}
2882 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2883 		*yy_state_ptr++ = yy_current_state;
2884 		}
2885 
2886 	return yy_current_state;
2887 	}
2888 
2889 
2890 /* yy_try_NUL_trans - try to make a transition on the NUL character
2891  *
2892  * synopsis
2893  *	next_state = yy_try_NUL_trans( current_state );
2894  */
2895 
2896 #ifdef YY_USE_PROTOS
yy_try_NUL_trans(yy_state_type yy_current_state)2897 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2898 #else
2899 static yy_state_type yy_try_NUL_trans( yy_current_state )
2900 yy_state_type yy_current_state;
2901 #endif
2902 	{
2903 	register int yy_is_jam;
2904 
2905 	register YY_CHAR yy_c = 1;
2906 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2907 		{
2908 		yy_current_state = (int) yy_def[yy_current_state];
2909 		if ( yy_current_state >= 1432 )
2910 			yy_c = yy_meta[(unsigned int) yy_c];
2911 		}
2912 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2913 	*yy_state_ptr++ = yy_current_state;
2914 	yy_is_jam = (yy_current_state == 1431);
2915 
2916 	return yy_is_jam ? 0 : yy_current_state;
2917 	}
2918 
2919 
2920 #ifndef YY_NO_UNPUT
2921 #ifdef YY_USE_PROTOS
yyunput(int c,register char * yy_bp)2922 static void yyunput( int c, register char *yy_bp )
2923 #else
2924 static void yyunput( c, yy_bp )
2925 int c;
2926 register char *yy_bp;
2927 #endif
2928 	{
2929 	register char *yy_cp = yy_c_buf_p;
2930 
2931 	/* undo effects of setting up yytext */
2932 	*yy_cp = yy_hold_char;
2933 
2934 	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2935 		{ /* need to shift things up to make room */
2936 		/* +2 for EOB chars. */
2937 		register int number_to_move = yy_n_chars + 2;
2938 		register char *dest = &yy_current_buffer->yy_ch_buf[
2939 					yy_current_buffer->yy_buf_size + 2];
2940 		register char *source =
2941 				&yy_current_buffer->yy_ch_buf[number_to_move];
2942 
2943 		while ( source > yy_current_buffer->yy_ch_buf )
2944 			*--dest = *--source;
2945 
2946 		yy_cp += (int) (dest - source);
2947 		yy_bp += (int) (dest - source);
2948 		yy_n_chars = yy_current_buffer->yy_buf_size;
2949 
2950 		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2951 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
2952 		}
2953 
2954 	*--yy_cp = (char) c;
2955 
2956 
2957 	yytext_ptr = yy_bp;
2958 	yy_hold_char = *yy_cp;
2959 	yy_c_buf_p = yy_cp;
2960 	}
2961 #endif	/* ifndef YY_NO_UNPUT */
2962 
2963 
2964 #ifdef __cplusplus
yyinput()2965 static int yyinput()
2966 #else
2967 static int input()
2968 #endif
2969 	{
2970 	int c;
2971 
2972 	*yy_c_buf_p = yy_hold_char;
2973 
2974 	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2975 		{
2976 		/* yy_c_buf_p now points to the character we want to return.
2977 		 * If this occurs *before* the EOB characters, then it's a
2978 		 * valid NUL; if not, then we've hit the end of the buffer.
2979 		 */
2980 		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2981 			/* This was really a NUL. */
2982 			*yy_c_buf_p = '\0';
2983 
2984 		else
2985 			{ /* need more input */
2986 			yytext_ptr = yy_c_buf_p;
2987 			++yy_c_buf_p;
2988 
2989 			switch ( yy_get_next_buffer() )
2990 				{
2991 				case EOB_ACT_END_OF_FILE:
2992 					{
2993 					if ( yywrap() )
2994 						{
2995 						yy_c_buf_p =
2996 						yytext_ptr + YY_MORE_ADJ;
2997 						return EOF;
2998 						}
2999 
3000 					if ( ! yy_did_buffer_switch_on_eof )
3001 						YY_NEW_FILE;
3002 #ifdef __cplusplus
3003 					return yyinput();
3004 #else
3005 					return input();
3006 #endif
3007 					}
3008 
3009 				case EOB_ACT_CONTINUE_SCAN:
3010 					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
3011 					break;
3012 
3013 				case EOB_ACT_LAST_MATCH:
3014 #ifdef __cplusplus
3015 					YY_FATAL_ERROR(
3016 					"unexpected last match in yyinput()" );
3017 #else
3018 					YY_FATAL_ERROR(
3019 					"unexpected last match in input()" );
3020 #endif
3021 				}
3022 			}
3023 		}
3024 
3025 	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
3026 	*yy_c_buf_p = '\0';	/* preserve yytext */
3027 	yy_hold_char = *++yy_c_buf_p;
3028 
3029 	yy_current_buffer->yy_at_bol = (c == '\n');
3030 
3031 	return c;
3032 	}
3033 
3034 
3035 #ifdef YY_USE_PROTOS
yyrestart(FILE * input_file)3036 void yyrestart( FILE *input_file )
3037 #else
3038 void yyrestart( input_file )
3039 FILE *input_file;
3040 #endif
3041 	{
3042 	if ( ! yy_current_buffer )
3043 		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3044 
3045 	yy_init_buffer( yy_current_buffer, input_file );
3046 	yy_load_buffer_state();
3047 	}
3048 
3049 
3050 #ifdef YY_USE_PROTOS
yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)3051 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3052 #else
3053 void yy_switch_to_buffer( new_buffer )
3054 YY_BUFFER_STATE new_buffer;
3055 #endif
3056 	{
3057 	if ( yy_current_buffer == new_buffer )
3058 		return;
3059 
3060 	if ( yy_current_buffer )
3061 		{
3062 		/* Flush out information for old buffer. */
3063 		*yy_c_buf_p = yy_hold_char;
3064 		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3065 		yy_current_buffer->yy_n_chars = yy_n_chars;
3066 		}
3067 
3068 	yy_current_buffer = new_buffer;
3069 	yy_load_buffer_state();
3070 
3071 	/* We don't actually know whether we did this switch during
3072 	 * EOF (yywrap()) processing, but the only time this flag
3073 	 * is looked at is after yywrap() is called, so it's safe
3074 	 * to go ahead and always set it.
3075 	 */
3076 	yy_did_buffer_switch_on_eof = 1;
3077 	}
3078 
3079 
3080 #ifdef YY_USE_PROTOS
yy_load_buffer_state(void)3081 void yy_load_buffer_state( void )
3082 #else
3083 void yy_load_buffer_state()
3084 #endif
3085 	{
3086 	yy_n_chars = yy_current_buffer->yy_n_chars;
3087 	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3088 	yyin = yy_current_buffer->yy_input_file;
3089 	yy_hold_char = *yy_c_buf_p;
3090 	}
3091 
3092 
3093 #ifdef YY_USE_PROTOS
yy_create_buffer(FILE * file,int size)3094 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3095 #else
3096 YY_BUFFER_STATE yy_create_buffer( file, size )
3097 FILE *file;
3098 int size;
3099 #endif
3100 	{
3101 	YY_BUFFER_STATE b;
3102 
3103 	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3104 	if ( ! b )
3105 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3106 
3107 	b->yy_buf_size = size;
3108 
3109 	/* yy_ch_buf has to be 2 characters longer than the size given because
3110 	 * we need to put in 2 end-of-buffer characters.
3111 	 */
3112 	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3113 	if ( ! b->yy_ch_buf )
3114 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3115 
3116 	b->yy_is_our_buffer = 1;
3117 
3118 	yy_init_buffer( b, file );
3119 
3120 	return b;
3121 	}
3122 
3123 
3124 #ifdef YY_USE_PROTOS
yy_delete_buffer(YY_BUFFER_STATE b)3125 void yy_delete_buffer( YY_BUFFER_STATE b )
3126 #else
3127 void yy_delete_buffer( b )
3128 YY_BUFFER_STATE b;
3129 #endif
3130 	{
3131 	if ( ! b )
3132 		return;
3133 
3134 	if ( b == yy_current_buffer )
3135 		yy_current_buffer = (YY_BUFFER_STATE) 0;
3136 
3137 	if ( b->yy_is_our_buffer )
3138 		yy_flex_free( (void *) b->yy_ch_buf );
3139 
3140 	yy_flex_free( (void *) b );
3141 	}
3142 
3143 
3144 #ifndef YY_ALWAYS_INTERACTIVE
3145 #ifndef YY_NEVER_INTERACTIVE
3146 #ifndef DOS
3147 extern int isatty YY_PROTO(( int ));
3148 #endif
3149 #endif
3150 #endif
3151 
3152 #ifdef YY_USE_PROTOS
yy_init_buffer(YY_BUFFER_STATE b,FILE * file)3153 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3154 #else
3155 void yy_init_buffer( b, file )
3156 YY_BUFFER_STATE b;
3157 FILE *file;
3158 #endif
3159 
3160 
3161 	{
3162 	yy_flush_buffer( b );
3163 
3164 	b->yy_input_file = file;
3165 	b->yy_fill_buffer = 1;
3166 
3167 #if YY_ALWAYS_INTERACTIVE
3168 	b->yy_is_interactive = 1;
3169 #else
3170 #if YY_NEVER_INTERACTIVE
3171 	b->yy_is_interactive = 0;
3172 #else
3173 	b->yy_is_interactive =
3174 #ifndef DOS
3175             file ? (isatty( fileno(file) ) > 0) :
3176 #endif
3177             0;
3178 #endif
3179 #endif
3180 	}
3181 
3182 
3183 #ifdef YY_USE_PROTOS
yy_flush_buffer(YY_BUFFER_STATE b)3184 void yy_flush_buffer( YY_BUFFER_STATE b )
3185 #else
3186 void yy_flush_buffer( b )
3187 YY_BUFFER_STATE b;
3188 #endif
3189 
3190 	{
3191 	b->yy_n_chars = 0;
3192 
3193 	/* We always need two end-of-buffer characters.  The first causes
3194 	 * a transition to the end-of-buffer state.  The second causes
3195 	 * a jam in that state.
3196 	 */
3197 	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3198 	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3199 
3200 	b->yy_buf_pos = &b->yy_ch_buf[0];
3201 
3202 	b->yy_at_bol = 1;
3203 	b->yy_buffer_status = YY_BUFFER_NEW;
3204 
3205 	if ( b == yy_current_buffer )
3206 		yy_load_buffer_state();
3207 	}
3208 
3209 
3210 #ifndef YY_NO_SCAN_BUFFER
3211 #ifdef YY_USE_PROTOS
yy_scan_buffer(char * base,yy_size_t size)3212 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3213 #else
3214 YY_BUFFER_STATE yy_scan_buffer( base, size )
3215 char *base;
3216 yy_size_t size;
3217 #endif
3218 	{
3219 	YY_BUFFER_STATE b;
3220 
3221 	if ( size < 2 ||
3222 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
3223 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
3224 		/* They forgot to leave room for the EOB's. */
3225 		return 0;
3226 
3227 	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3228 	if ( ! b )
3229 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3230 
3231 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
3232 	b->yy_buf_pos = b->yy_ch_buf = base;
3233 	b->yy_is_our_buffer = 0;
3234 	b->yy_input_file = 0;
3235 	b->yy_n_chars = b->yy_buf_size;
3236 	b->yy_is_interactive = 0;
3237 	b->yy_at_bol = 1;
3238 	b->yy_fill_buffer = 0;
3239 	b->yy_buffer_status = YY_BUFFER_NEW;
3240 
3241 	yy_switch_to_buffer( b );
3242 
3243 	return b;
3244 	}
3245 #endif
3246 
3247 
3248 #ifndef YY_NO_SCAN_STRING
3249 #ifdef YY_USE_PROTOS
yy_scan_string(yyconst char * str)3250 YY_BUFFER_STATE yy_scan_string( yyconst char *str )
3251 #else
3252 YY_BUFFER_STATE yy_scan_string( str )
3253 yyconst char *str;
3254 #endif
3255 	{
3256 	int len;
3257 	for ( len = 0; str[len]; ++len )
3258 		;
3259 
3260 	return yy_scan_bytes( str, len );
3261 	}
3262 #endif
3263 
3264 
3265 #ifndef YY_NO_SCAN_BYTES
3266 #ifdef YY_USE_PROTOS
yy_scan_bytes(yyconst char * bytes,int len)3267 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3268 #else
3269 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3270 yyconst char *bytes;
3271 int len;
3272 #endif
3273 	{
3274 	YY_BUFFER_STATE b;
3275 	char *buf;
3276 	yy_size_t n;
3277 	int i;
3278 
3279 	/* Get memory for full buffer, including space for trailing EOB's. */
3280 	n = len + 2;
3281 	buf = (char *) yy_flex_alloc( n );
3282 	if ( ! buf )
3283 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3284 
3285 	for ( i = 0; i < len; ++i )
3286 		buf[i] = bytes[i];
3287 
3288 	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3289 
3290 	b = yy_scan_buffer( buf, n );
3291 	if ( ! b )
3292 		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3293 
3294 	/* It's okay to grow etc. this buffer, and we should throw it
3295 	 * away when we're done.
3296 	 */
3297 	b->yy_is_our_buffer = 1;
3298 
3299 	return b;
3300 	}
3301 #endif
3302 
3303 
3304 #ifndef YY_NO_PUSH_STATE
3305 #ifdef YY_USE_PROTOS
yy_push_state(int new_state)3306 static void yy_push_state( int new_state )
3307 #else
3308 static void yy_push_state( new_state )
3309 int new_state;
3310 #endif
3311 	{
3312 	if ( yy_start_stack_ptr >= yy_start_stack_depth )
3313 		{
3314 		yy_size_t new_size;
3315 
3316 		yy_start_stack_depth += YY_START_STACK_INCR;
3317 		new_size = yy_start_stack_depth * sizeof( int );
3318 
3319 		if ( ! yy_start_stack )
3320 			yy_start_stack = (int *) yy_flex_alloc( new_size );
3321 
3322 		else
3323 			yy_start_stack = (int *) yy_flex_realloc(
3324 					(void *) yy_start_stack, new_size );
3325 
3326 		if ( ! yy_start_stack )
3327 			YY_FATAL_ERROR(
3328 			"out of memory expanding start-condition stack" );
3329 		}
3330 
3331 	yy_start_stack[yy_start_stack_ptr++] = YY_START;
3332 
3333 	BEGIN(new_state);
3334 	}
3335 #endif
3336 
3337 
3338 #ifndef YY_NO_POP_STATE
yy_pop_state()3339 static void yy_pop_state()
3340 	{
3341 	if ( --yy_start_stack_ptr < 0 )
3342 		YY_FATAL_ERROR( "start-condition stack underflow" );
3343 
3344 	BEGIN(yy_start_stack[yy_start_stack_ptr]);
3345 	}
3346 #endif
3347 
3348 
3349 #ifndef YY_NO_TOP_STATE
yy_top_state()3350 static int yy_top_state()
3351 	{
3352 	return yy_start_stack[yy_start_stack_ptr - 1];
3353 	}
3354 #endif
3355 
3356 #ifndef YY_EXIT_FAILURE
3357 #define YY_EXIT_FAILURE 2
3358 #endif
3359 
3360 #ifdef YY_USE_PROTOS
yy_fatal_error(yyconst char msg[])3361 static void yy_fatal_error( yyconst char msg[] )
3362 #else
3363 static void yy_fatal_error( msg )
3364 char msg[];
3365 #endif
3366 	{
3367 	(void) fprintf( stderr, "%s\n", msg );
3368 	exit( YY_EXIT_FAILURE );
3369 	}
3370 
3371 
3372 
3373 /* Redefine yyless() so it works in section 3 code. */
3374 
3375 #undef yyless
3376 #define yyless(n) \
3377 	do \
3378 		{ \
3379 		/* Undo effects of setting up yytext. */ \
3380 		yytext[yyleng] = yy_hold_char; \
3381 		yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
3382 		yy_hold_char = *yy_c_buf_p; \
3383 		*yy_c_buf_p = '\0'; \
3384 		yyleng = n; \
3385 		} \
3386 	while ( 0 )
3387 
3388 
3389 /* Internal utility routines. */
3390 
3391 #ifndef yytext_ptr
3392 #ifdef YY_USE_PROTOS
yy_flex_strncpy(char * s1,yyconst char * s2,int n)3393 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3394 #else
3395 static void yy_flex_strncpy( s1, s2, n )
3396 char *s1;
3397 yyconst char *s2;
3398 int n;
3399 #endif
3400 	{
3401 	register int i;
3402 	for ( i = 0; i < n; ++i )
3403 		s1[i] = s2[i];
3404 	}
3405 #endif
3406 
3407 
3408 #ifdef YY_USE_PROTOS
yy_flex_alloc(yy_size_t size)3409 static void *yy_flex_alloc( yy_size_t size )
3410 #else
3411 static void *yy_flex_alloc( size )
3412 yy_size_t size;
3413 #endif
3414 	{
3415 	return (void *) malloc( size );
3416 	}
3417 
3418 #ifdef YY_USE_PROTOS
yy_flex_realloc(void * ptr,yy_size_t size)3419 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3420 #else
3421 static void *yy_flex_realloc( ptr, size )
3422 void *ptr;
3423 yy_size_t size;
3424 #endif
3425 	{
3426 	/* The cast to (char *) in the following accommodates both
3427 	 * implementations that use char* generic pointers, and those
3428 	 * that use void* generic pointers.  It works with the latter
3429 	 * because both ANSI C and C++ allow castless assignment from
3430 	 * any pointer type to void*, and deal with argument conversions
3431 	 * as though doing an assignment.
3432 	 */
3433 	return (void *) realloc( (char *) ptr, size );
3434 	}
3435 
3436 #ifdef YY_USE_PROTOS
yy_flex_free(void * ptr)3437 static void yy_flex_free( void *ptr )
3438 #else
3439 static void yy_flex_free( ptr )
3440 void *ptr;
3441 #endif
3442 	{
3443 	free( ptr );
3444 	}
3445 
3446 #if YY_MAIN
main()3447 int main()
3448 	{
3449 	yylex();
3450 	return 0;
3451 	}
3452 #endif
3453 
3454 
3455 #ifdef YY_USE_PROTOS
PString(char * str)3456 int PString(char *str)
3457 #else
3458 int PString(str)
3459 char *str;
3460 #endif
3461 {
3462   unsigned long s;
3463   unsigned char *p = (unsigned char *) str;
3464   int i;
3465   int t = 0;
3466 
3467 
3468   if (pd > 0 &&
3469       dont_print[pd - 1])
3470     return 0;
3471 
3472 
3473   if ((s = strlen(p)) <= 0)
3474     return 1;
3475   processed += s;
3476   while (*p == '\n')
3477     {
3478       NextLine();
3479       ++p;
3480     }
3481   fprintf(out, "(");
3482   while (*p)
3483     {
3484       ++str_length;
3485       if (line_cut == 0)
3486 	if (str_length > 550.*5./(3.*fontsize))
3487 	  {
3488 	    fprintf(out, ") s\n");
3489 	    line--;
3490 	    line_split = 1;
3491 	    NextLine();
3492 	    if(number_lines)
3493 	      {
3494 		fprintf(out, "%.2f 0 rmoveto\n", 6.*chw);
3495 		str_length = 6;
3496 	      }
3497 	    fprintf(out,"(");
3498 	  }
3499       if (*p == '\n')
3500       {
3501 	fprintf(out, ") s\n");
3502 	do
3503 	  NextLine();
3504 	while(*++p == '\n');
3505 	if (!*p)
3506 	  return 0;
3507 	fprintf(out, "(");
3508 	continue;
3509       }
3510       if (*p == '\f')
3511 	{
3512 	  fprintf(out, ") s\n");
3513 	  NextPage();
3514 	  fprintf(out, "(");
3515 	  p++;
3516 	  continue;
3517 	}
3518       if (*p == '\t')
3519 	{
3520 	  t = tab - (str_length - 1 - number_lines * 6) % tab;
3521 	  for (i = 0; i < t; i++)
3522 	    fprintf(out, " ");
3523 	  str_length += t - 1;
3524 	  p++;
3525 	  continue;
3526 	}
3527       if (*p < 32)
3528 	{
3529 	  fprintf(out, "\\%03o", *p++);
3530 	  continue;
3531 	}
3532       if (*p > 127)
3533 	{
3534 	  if (nonlatin_text)
3535 	    {
3536 	      fprintf(out, ") s cf fno (");
3537 	      do
3538 		fprintf(out, "\\%03o", *p++);
3539 	      while (*p > 127);
3540 	      fprintf(out, ") s sf (");
3541 	    }
3542 	  else
3543 	    fprintf(out, "\\%03o", *p++);
3544 	  continue;
3545 	}
3546       if (*p == '(' || *p == ')' || *p == '\\')
3547 	fprintf(out, "\\");
3548       fprintf(out, "%c", *p);
3549       p++;
3550     }
3551   fprintf(out, ") s\n");
3552   return 0;
3553 }
3554 
PRatio()3555 char* PRatio()
3556 {
3557   int r;
3558   int i;
3559 
3560   r = (10 * processed / b.st_size) + 1;
3561   for (i = 1; i <= 10 ; i++)
3562     ratio[i] = (i <= r) ? '.' : ' ';
3563   ratio[r + 1] = ')';
3564   return ratio;
3565 }
3566 
PFlush()3567 int PFlush()
3568 {
3569   if (lc > 0)
3570     {
3571       buffer[lc] = '\0';
3572       PString(buffer);
3573       buffer[lc = 0] = '\0';
3574     }
3575   return 0;
3576 }
3577 
3578 #ifdef YY_USE_PROTOS
PFill(char * c)3579 int PFill(char *c)
3580 #else
3581 int PFill(c)
3582 char *c;
3583 #endif
3584 {
3585   if (*c == '\n' && YYSTATE == preps)
3586     BEGIN((nesting > 0)? INITIAL : nnested);
3587   else if (*c == '{')
3588     {
3589       if (++nesting > 0 && YYSTATE == nnested)
3590 	BEGIN(INITIAL);
3591     }
3592   else if (*c == '}')
3593     {
3594       if (--nesting <= 0)
3595 	{
3596 	  if (YYSTATE == INITIAL)
3597 	    BEGIN(nnested);
3598 	  nesting = 0;
3599 	  function_body_expected = 0;
3600 	  if (cur_fun)
3601 	    {
3602 	      free(cur_fun);
3603 	      cur_fun = NULL;
3604 	    }
3605 	}
3606     }
3607   buffer[lc++] = *c;
3608   if (lc == BUFL - 1)
3609     PFlush();
3610   return 0;
3611 }
3612 
PFunctionBox()3613 int PFunctionBox()
3614 {
3615   struct fun *f;
3616   unsigned int i;
3617   float fs;
3618 
3619   if (first == NULL)
3620     return 1;
3621   fprintf(out, "\nmark\n");
3622   for (f = first, i = 1; f != NULL; f = f->next, i++)
3623     fprintf(out, "(%s) (%lu:%lu)\n", f->name, f->page, f->line);
3624   fs = (PAGE - 35.) / i;
3625   fprintf(out, "%.2f\n", (fs > 9.) ? 8. : fs - 1);
3626   fprintf(out, "FunctionBox\n");
3627   return 0;
3628 }
3629 
NextPage()3630 int NextPage()
3631 {
3632   x = PAGE - fontsize - spacing;
3633   line_on_page = 0;
3634 
3635   if(fun_box)
3636     PFunctionBox();
3637   if(fun_entry_exit && header && page>0 && cur_fun)
3638     fprintf(out, "\n(%s) OutFunction\n", cur_fun);
3639 
3640   switch (page % ppl)
3641     {
3642     case 0:
3643       if (page > 0 )
3644 	{
3645 	  fprintf(out, "\n%s showpage\n", (comment)? "currentgray" : "");
3646 	}
3647 
3648       fprintf(out, "\n%%%%Page: %s%lu %lu\n\n",
3649 	      (page  == 0 && fp_num > 1) ? "__" : "",
3650 	      page / ppl + 1, total_page / ppl +1);
3651       if (page > 0 && comment)
3652 	fprintf(out, "setgray\n");
3653       if (strncasecmp(pspec.name, "letter", 7) == 0)
3654 	fprintf(out, "0.93 0.93 scale 31 8 translate\n");
3655       switch(ppl)
3656 	{
3657 	case 1:
3658 	  break;
3659 	case 2:
3660 	  fprintf(out, "595 4 translate 90 rotate 0.7 0.7 scale\n");
3661 	  break;
3662 	case 4:
3663 	  fprintf(out, "0.47 0.47 scale 40 880 translate\n");
3664 	}
3665       break;
3666     case 1:
3667       fprintf(out, "590 0 translate\n");
3668       break;
3669     case 2:
3670       fprintf(out, "-590 -830 translate\n");
3671       break;
3672     case 3:
3673       fprintf(out, "590 0 translate\n");
3674     }
3675   fprintf(stderr, "%-25.25s Page %4lu, Column %1lu %s\r",
3676 	  (fp_num > 0) ? fp[fp_cur] : "stdin",
3677 	  page / ppl + 1,
3678 	  page % ppl + 1,
3679 	  (fp_num > 0) ? PRatio() : "");
3680   page++;
3681   total_page++;
3682 
3683   fprintf(out, "initclip ");
3684   if (header)
3685     {
3686       fprintf(out, "(%s) (%s)  DrawFrame gsave 0 setgray fhd 523 800 moveto \
3687 (%8lu) s grestore\n",
3688 	      date, (fp_num > 0) ? fp[fp_cur] : "stdin", page);
3689       if (fun_entry_exit && page > 0 && cur_fun)
3690 	fprintf(out, "(%s) InFunction", cur_fun);
3691     }
3692   /*  fprintf(out," ver "); */
3693 
3694   fprintf(out, " clp\n");
3695   NextLine();
3696   return 0;
3697 }
3698 
NextLine()3699 int NextLine()
3700 {
3701   str_length = 0;
3702   if (x > 20 + fontsize)
3703     {
3704       if (lpp > 0)
3705 	if(line_on_page++ == lpp)
3706 	  {
3707 	    NextPage();
3708 	    return 0;
3709 	  }
3710       fprintf(out, "%.2f nl ", x);
3711       line++;
3712       x -= fontsize + spacing;
3713       if (number_lines)
3714 	{
3715 	  if (line_split)
3716 	    line_split=0;
3717 	  else fprintf(out, "sn (%5lu) n\n", line);
3718 	  /*       else fprintf(out,"sn (%5d,%d) n\n",YYSTATE,nesting); */
3719 	  /* there may be any other useful info instead of line numbers such as
3720 	     nesting depth */
3721 	  str_length = 6;
3722 	}
3723     }
3724   else NextPage();
3725   return 0;
3726 }
3727 
Version()3728 int Version()
3729 {
3730   fprintf(stderr, VerMsg, VERSION);
3731   exit(0);
3732 }
3733 
Help()3734 int Help ()
3735 {
3736   fprintf(stderr, HelpMsg);
3737   exit(0);
3738 }
3739 
3740 #ifdef YY_USE_PROTOS
PCext(char * fn)3741 int PCext (char *fn)
3742 #else
3743 int PCext (fn)
3744 char *fn;
3745 #endif
3746 {
3747   int l = strlen(fn);
3748 
3749   return (
3750     ((l >= 2) && (!strcmp(&fn[l - 2], ".c")   || !strcmp(&fn[l - 2], ".h")))  ||
3751     ((l >= 3) && (!strcmp(&fn[l - 3], ".cc")  || !strcmp(&fn[l - 3], ".hh"))) ||
3752     ((l >= 4) && (!strcmp(&fn[l - 4], ".cpp") || !strcmp(&fn[l - 4], ".hpp"))));
3753 }
3754 
3755 #ifdef YY_USE_PROTOS
IsDefined(char * s)3756 int IsDefined (char *s)
3757 #else
3758 int IsDefined (s)
3759 char *s;
3760 #endif
3761 {
3762   int i;
3763   char *t = s;
3764 
3765   while (*t == ' ' || *t == '\t')
3766     t++;
3767   for (i = 0; i < defs_num; i++)
3768     if ((strlen(t) == strlen(defs[i])) &&
3769 	! strcmp (t, defs[i]))
3770       return 1;
3771   return 0;
3772 }
3773 
3774 #ifdef YY_USE_PROTOS
IsUndefined(char * s)3775 int IsUndefined (char *s)
3776 #else
3777 int IsUndefined (s)
3778 char *s;
3779 #endif
3780 {
3781   int i;
3782   char *t = s;
3783 
3784   while (*t == ' ' || *t == '\t')
3785     t++;
3786   for (i = 0; i < undefs_num; i++)
3787     if ((strlen(t) == strlen(undefs[i])) &&
3788 	! strcmp (t, undefs[i]))
3789       return 1;
3790   return 0;
3791 }
3792 
3793 #undef yywrap
3794 
yywrap()3795 int yywrap()
3796 {
3797   static FILE *file = NULL;
3798   struct fun *f;
3799   struct fun *p;
3800 
3801   if (fp_cur >= 0)		/* get done with current file */
3802     {
3803       if (file)
3804 	fclose(file);
3805       PFlush();
3806       if(fun_box)
3807 	PFunctionBox();
3808       if(fun_entry_exit && header && page>0 && cur_fun)
3809 	fprintf(out, "\n(%s) OutFunction\n", cur_fun);
3810       fprintf(out, "\nshowpage\n");
3811       fprintf(stderr, "%-25.25s %4lu pages printed                           \n",
3812 	      fp[fp_cur], (page-1)/ppl+1);
3813 
3814       total_page += (ppl - total_page % ppl) % ppl;
3815       page = 0;
3816       line = 0;
3817       nesting = 0;
3818       comment = 0;
3819       pd = 0;
3820 
3821       /* free function list */
3822       if (first)
3823 	{
3824 	  for (f = first; f; )
3825 	    {
3826 	      if (f->name)
3827 		free(f->name);
3828 	      p = f;
3829 	      f = f->next;
3830 	      free(p);
3831 	    }
3832 	  first = NULL;
3833 	}
3834        if (cur_fun)
3835 	 {
3836 	   free(cur_fun);
3837 	   cur_fun = NULL;
3838 	 }
3839     }
3840 
3841   while (++fp_cur < fp_num)
3842     {
3843       if ((file = fopen(fp[fp_cur], "r")) == NULL)
3844 	{
3845 	  fprintf(stderr, "%-25.25s Could not open file for reading   \n",
3846 		  fp[fp_cur]);
3847 	  continue;
3848 	}
3849 
3850       if (stat(fp[fp_cur], &b) == -1)
3851 	fprintf(stderr, "%-25.25s Couldn't get the file information\n",
3852 		fp[fp_cur]);
3853 #ifndef DOS
3854       if (S_ISDIR(b.st_mode))
3855 	{
3856 	  fprintf(stderr, "%-25.25s      Directory\n",
3857 		  fp[fp_cur]);
3858 	  continue;
3859 	}
3860 #endif
3861       if (b.st_size == 0)
3862 	{
3863 	  fprintf(stderr, "%-25.25s      Empty file\n",
3864 		  fp[fp_cur]);
3865 	  continue;
3866 	}
3867       if (last_modified)
3868 	{
3869 	  strcpy(date,ctime(&b.st_mtime));
3870 	}
3871       else
3872 	{
3873 	  time(&t);
3874 	  strcpy(date, ctime(&t));
3875 	}
3876 
3877       yyrestart(file);
3878 
3879       BEGIN((noc ||
3880 	     (c_ext && !PCext(fp[fp_cur]))) ? dont_highlight : nnested);
3881       processed = 0;
3882       date[24] = '\0';
3883       if (total_page > 0)
3884 	NextPage();
3885       return 0;
3886     }
3887   return 1;
3888 }
3889 
getpaper(char * name)3890 void getpaper(char *name)
3891 {
3892 	const struct paper *pp;
3893 
3894 	if (name == NULL) {
3895 		name = (char *)systempapername();
3896 		if (name == NULL)
3897 			name = (char *)defaultpapername();
3898 	}
3899 
3900 	/* Support only A4 or letter. */
3901 	if (strncasecmp(name, "a4", 3) != 0 &&
3902 	    strncasecmp(name, "letter", 7) != 0) {
3903 		fprintf(stderr, "Unsupported paper size: %s.  "
3904 		    "A4 size will be used instead.\n", name);
3905 		name = "a4";
3906 	}
3907 
3908 	paperinit();
3909 	for (pp = paperfirst(); pp; pp = papernext(pp)) {
3910 		if (strcmp(name, papername(pp)) == 0) {
3911 			pspec.name = strdup(name);
3912 			pspec.width = round(paperpswidth(pp));
3913 			pspec.height = round(paperpsheight(pp));
3914 		}
3915 	}
3916 }
3917 
3918 #define REENCODE(font) fprintf(out,"/%s /%s-iso isovec ReEncode\n",font,font)
3919 
3920 #ifdef YY_USE_PROTOS
main(int argc,char ** argv)3921 int main(int argc, char **argv)
3922 #else
3923 int main(argc, argv)
3924 int argc;
3925 char **argv;
3926 #endif
3927 {
3928   int i = 0;
3929   char *dftfont = NULL;
3930   char *preproc = NULL;
3931   char *comment = NULL;
3932   char *keyword = NULL;
3933   char *strings = NULL;
3934   char *type = NULL;
3935   char *lnumber = NULL;
3936   char *function = NULL;
3937   char *nonlatin = NULL;
3938   char *pflag = NULL;
3939 
3940   out = stdout;
3941   first = NULL;
3942   defs_num = 0;
3943   undefs_num = 0;
3944 
3945   fp = (char **) malloc (argc * sizeof(char *));
3946   defs = (char **) malloc (argc * sizeof(char *));
3947   undefs = (char **) malloc (argc * sizeof(char *));
3948 
3949   while (++i < argc)
3950     {
3951       if (argv[i][0] == '-')
3952 	{
3953 	  if (strlen(argv[i]) == 2)
3954 	    {
3955 	      switch (argv[i][1])
3956 		{
3957 		case '1': ppl = 1;					        break;
3958 		case '2': ppl = 2;					        break;
3959 		case '4': ppl = 4;					        break;
3960 		case 'a': adjust_comments = 0;				        break;
3961 		case 'b': fun_box = 0;					        break;
3962 		case 'c': noc = 1;					        break;
3963 		case 'e': fun_entry_exit = 0;				        break;
3964 		case 'i': iso = 0;					        break;
3965 		case 'k': ext = 0;					        break;
3966 		case 'm': last_modified = 0;				        break;
3967 		case 'n': number_lines = 0;				        break;
3968 		case 'r': frame = 1;					        break;
3969 		case 'u': header = 0;					        break;
3970 		case 'v': Version();					        break;
3971 		case 'w': line_cut = 1;					        break;
3972 		case 'x': c_ext = 1;					        break;
3973 		case '?': case 'h': Help();                                     break;
3974 		default: {
3975 		  if(++i < argc && argv[i][0] != '-')
3976 		    {
3977 		      switch(argv[i-1][1])
3978 			{
3979 			case 'o': if ((out = fopen(argv[i], "w")) == NULL)
3980 				    {
3981 				      fprintf(stderr,
3982 					      "Couldn't open file %s for writing\n",
3983 					      argv[i]);
3984 				      exit(0);
3985 				    }                                           break;
3986 			case 'p': DUP(pflag,      argv[i]);			break;
3987 			case 't': tab = abs(atoi (argv[i])); 			break;
3988 			case 'F': DUP(dftfont,    argv[i]);		        break;
3989 			case 'P': DUP(preproc,    argv[i]);		        break;
3990 			case 'C': DUP(comment,    argv[i]);		        break;
3991 			case 'U': DUP(function,   argv[i]);		        break;
3992 			case 'S': DUP(strings,    argv[i]);		        break;
3993 			case 'T': DUP(type,       argv[i]);                     break;
3994 			case 'K': DUP(keyword,    argv[i]);		        break;
3995 			case 'N': DUP(lnumber,    argv[i]);		        break;
3996 			case 'X': DUP(nonlatin,   argv[i]);		        break;
3997 			case 'd': sscanf(argv[i], "%f", &dim_comment);		break;
3998 			case 'f': sscanf(argv[i], "%f", &fontsize); 		break;
3999 			case 's': sscanf(argv[i], "%f", &spacing);		break;
4000 			case 'l': lpp = abs(atoi(argv[i]));			break;
4001 			case '_':
4002 			  if (!strcmp(argv[i], "none"))
4003 			    fun_highlight_id = 0;
4004 			  else if (!strcmp(argv[i], "box"))
4005 			    fun_highlight_id = 1;
4006 			  else
4007 			    fun_highlight_id = 2;
4008 			  break;
4009 			default:  Help();
4010 			}
4011 		    } else
4012 		      Help();
4013 		}
4014 		}
4015 	    }
4016 	  else
4017 	    {
4018 	      if (argv[i][1] == 'D')
4019 		{
4020 		  DUP (defs[defs_num], & argv[i][2]);
4021 		  defs_num++;
4022 		}
4023 	      else if (argv[i][1] == 'U')
4024 		{
4025 		  DUP (undefs[undefs_num], & argv[i][2]);
4026 		  undefs_num++;
4027 		}
4028 	      else
4029 		Help ();
4030 	    }
4031 	}
4032       else
4033 	{
4034 	  DUP(fp[fp_num], argv[i]);
4035 	  fp_num++;
4036 	}
4037     }
4038 
4039   BEGIN((noc) ? dont_highlight : nnested);
4040 
4041   if (fp_num > 0)		/* files to print */
4042     {
4043       if (yywrap())
4044 	{
4045 	  fprintf(stderr, "Nothing to print. Exiting...                    \n");
4046 	  exit(1);
4047 	}
4048     }
4049   else
4050     {
4051     time(&t);
4052     strcpy(date, ctime(&t));
4053     date[24] = '\0';
4054     }
4055 
4056   chw = 3. * fontsize / 5.;
4057 
4058   if (!dftfont)
4059     { DUP(dftfont, DEFAULT); }
4060   if (!preproc)
4061     { DUP(preproc, PREPROC); }
4062   if (!comment)
4063     { DUP(comment, COMMENT); }
4064   if (!keyword)
4065     { DUP(keyword, KEYWORD); }
4066   if (!strings)
4067     { DUP(strings, STRINGS); }
4068   if (!type)
4069     { DUP(type, TYPE); }
4070   if (!lnumber)
4071     { DUP(lnumber, LNUMBER); }
4072   if (!function)
4073     { DUP(function, FUNCTION); }
4074   if (nonlatin)
4075     {
4076       iso = 0;
4077       nonlatin_text = 1;
4078     }
4079 
4080   getpaper(pflag);
4081 
4082   fprintf(out, "%%!PS-Adobe-2.0\n%%%%Creator: c2ps version %s\n", VERSION);
4083   fprintf(out, "%%%%Orientation: %s\n", (ppl == 2) ? "Landscape" : "Portrait");
4084   fprintf(out, "%%%%Pages: (atend)\n");
4085   fprintf(out, "%%%%DocumentNeededFonts: Times-BoldItalic Times-Bold %s %s %s",
4086 	  dftfont,
4087 	  (number_lines || fun_box || fun_entry_exit) ? lnumber : "",
4088 	  (nonlatin) ? nonlatin : "");
4089   if (!noc)
4090     fprintf(out, " %s %s %s %s %s %s",
4091 	    keyword, strings, type, preproc, comment, function);
4092   fprintf(out, "\n%%%%DocumentMedia: %s\n%%%%EndComments\n\n",
4093 	    (strncasecmp(pspec.name, "letter", 7) == 0) ? "Letter 612 792" : "A4 595 842");
4094   if (iso)
4095     {
4096       fprintf(out, ISO);
4097       REENCODE(dftfont);
4098       if (!noc)
4099 	{
4100 	  REENCODE(strings);
4101 	  REENCODE(comment);
4102 	 }
4103     }
4104 
4105   fprintf(out, "/s {show} bind def /nl { 20 exch moveto } def\n ");
4106   fprintf(out, "/sf {setfont} bind def /cf {currentfont} bind def\n");
4107   fprintf(out, VERS, VERSION);
4108   fprintf(out, "/fdf { /%s%s findfont %.2f scalefont setfont } def\n",
4109 	  dftfont, (iso) ? "-iso" : "", fontsize);
4110   fprintf(out, "/fhd { /Times-Bold findfont 16 scalefont setfont } def\n");
4111   if (nonlatin)
4112     fprintf(out, "/fno { /%s findfont %.2f scalefont setfont } def\n",
4113 	    nonlatin, fontsize);
4114   if (number_lines)
4115     {
4116       fprintf(out, "/fnu { /%s findfont %.2f scalefont setfont } def\n",
4117 	      lnumber, fontsize);
4118       fprintf(out, "/sn { gsave fnu 0 setgray } def /n { s grestore "
4119 	      "%.2f 0 rmoveto } def\n",
4120 	      6. * chw);
4121     }
4122   if (!noc)
4123     {
4124       fprintf(out, "/fco { /%s%s findfont %.2f scalefont sf } def\n",
4125 	      comment, (!noc && iso) ? "-iso" : "", fontsize);
4126       fprintf(out, "/fke { /%s findfont %.2f scalefont sf } def\n", keyword, fontsize);
4127       fprintf(out, "/ffu { /%s findfont %.2f scalefont sf } def\n", function, fontsize);
4128       fprintf(out, "/fty { /%s findfont %.2f scalefont sf } def\n", type, fontsize);
4129       fprintf(out, "/fst { /%s%s findfont %.2f scalefont sf } def\n",
4130 	      strings, (!noc && iso) ? "-iso" : "", fontsize);
4131       fprintf(out, "/fpr { /%s findfont %.2f scalefont sf } def\n\n", preproc, fontsize);
4132 
4133       if (fun_entry_exit)
4134 	fprintf(out, "%s\n", INOUTFUNCTIONS);
4135       if (fun_box)
4136 	fprintf(out, "%s\n", FUNCTIONBOX);
4137     }
4138 
4139   fprintf(out, "%s\n", FILLEDBOX);
4140 
4141   fprintf(out, "/Modified {\n%s\n} def\n",
4142 	  (last_modified && header && fp_num > 0) ?
4143 	  "/Times-Bold findfont 24 scalefont setfont\n"
4144 	  "(MODIFIED) dup stringwidth pop 2 div neg 297.5 add 797 moveto\n"
4145 	  "currentpoint 1 setgray 0.5 -0.5 rmoveto 2 index s moveto\n"
4146 	  "currentpoint 0.84 setgray -0.5 0.5 rmoveto 2 index s moveto \n"
4147 	  "0.95 setgray s 0 setgray\n" : "");
4148   fprintf(out, "/DrawFrame {\n");
4149   if (header)
4150     {
4151       fprintf(out, "  gsave\n0 setgray\n");
4152       fprintf(out, "  555 25 20 795 FilledBox\n");
4153       fprintf(out, "  /Times-BoldItalic findfont 16 scalefont setfont\n");
4154       fprintf(out, "  gsave newpath 20 795 moveto 230 795 lineto 230 820\n");
4155       fprintf(out, "  lineto 20 820 lineto closepath clip 30 800 moveto s \n");
4156       fprintf(out, "  grestore\n");
4157       fprintf(out, "  Modified\n");
4158       fprintf(out, "  /Times-Bold findfont 9 scalefont setfont\n"
4159 	      "dup stringwidth pop 2 div neg 297.5 add 800 moveto s\n");
4160       fprintf(out, "  grestore\n");
4161     }
4162   fprintf(out, "} def\n");
4163 
4164   fprintf(out, "106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen\n");
4165   fprintf(out, "/clp { newpath 20 820 moveto 577 820 lineto 577 20\n");
4166   fprintf(out, "lineto 20 20 lineto closepath clip %s } def fdf\n",
4167 	  (frame) ? "0 setgray 0.05 setlinewidth stroke" : "");
4168   NextPage();
4169 
4170   yylex();
4171 
4172   if (fp_num == 0)
4173     {
4174       PFlush();
4175       if(fun_box)
4176 	PFunctionBox();
4177       if(fun_entry_exit && header && page>0 && cur_fun)
4178 	fprintf(out, "\n(%s) OutFunction\n", cur_fun);
4179       fprintf(out, "\nshowpage\n");
4180       fprintf(stderr, "%-25.25s %4lu pages printed                           \n",
4181 	      "stdin", (page - 1) / ppl + 1);
4182     }
4183   else
4184     if (fp_num > 1)
4185       fprintf(stderr,
4186 	      "____________________________________________\n"
4187 	      "%-25.25s %4lu pages printed                 \n",
4188 	      "Total", (total_page - 1) / ppl + 1);
4189 
4190   fprintf(out, "\n%%%%Pages: %lu\n", (total_page - 1) / ppl + 1);
4191   fclose(out);
4192   return 0;
4193 }
4194 
4195 
4196