2 /* static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; */
3 /* static char nhsccsid[] = "@(#)yaccpar 1.9.0-nh (NetHack) 12/03/2015"; */
8 #define YYSUBMINOR "0-nh"
10 #define yyclearin (yychar=(-1))
11 #define yyerrok (yyerrflag=0)
12 #define YYRECOVERING (yyerrflag!=0)
14 /* NetHack 3.6 lev_comp.y $NHDT-Date: 1551901401 2019/03/06 19:43:21 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.26 $ */
15 /* Copyright (c) 1989 by Jean-Christophe Collet */
16 /* NetHack may be freely redistributed. See license for details. */
19 * This file contains the Level Compiler code
20 * It may handle special mazes & special room-levels
23 /* In case we're using bison in AIX. This definition must be
24 * placed before any other C-language construct in the file
25 * excluding comments and preprocessor directives (thanks IBM
26 * for this wonderful feature...).
28 * Note: some cpps barf on this 'undefined control' (#pragma).
29 * Addition of the leading space seems to prevent barfage for now,
30 * and AIX will still see the directive.
33 #pragma alloca /* keep leading space! */
36 #define SPEC_LEV /* for USE_OLDARGS (sp_lev.h) */
41 /* many types of things are put in chars for transference to NetHack.
42 * since some systems will use signed chars, limit everybody to the
43 * same number for portability.
45 #define MAX_OF_TYPE 128
47 #define MAX_NESTED_IFS 20
48 #define MAX_SWITCH_CASES 20
51 (type *) memset((genericptr_t) alloc(sizeof (type)), 0, sizeof (type))
52 #define NewTab(type, size) (type **) alloc(sizeof (type *) * size)
53 #define Free(ptr) free((genericptr_t) ptr)
55 extern void VDECL(lc_error, (const char *, ...));
56 extern void VDECL(lc_warning, (const char *, ...));
57 extern void FDECL(yyerror, (const char *));
58 extern void FDECL(yywarning, (const char *));
59 extern int NDECL(yylex);
62 extern int FDECL(get_floor_type, (CHAR_P));
63 extern int FDECL(get_room_type, (char *));
64 extern int FDECL(get_trap_type, (char *));
65 extern int FDECL(get_monster_id, (char *,CHAR_P));
66 extern int FDECL(get_object_id, (char *,CHAR_P));
67 extern boolean FDECL(check_monster_char, (CHAR_P));
68 extern boolean FDECL(check_object_char, (CHAR_P));
69 extern char FDECL(what_map_char, (CHAR_P));
70 extern void FDECL(scan_map, (char *, sp_lev *));
71 extern void FDECL(add_opcode, (sp_lev *, int, genericptr_t));
72 extern genericptr_t FDECL(get_last_opcode_data1, (sp_lev *, int));
73 extern genericptr_t FDECL(get_last_opcode_data2, (sp_lev *, int, int));
74 extern boolean FDECL(check_subrooms, (sp_lev *));
75 extern boolean FDECL(write_level_file, (char *,sp_lev *));
76 extern struct opvar *FDECL(set_opvar_int, (struct opvar *, long));
77 extern void VDECL(add_opvars, (sp_lev *, const char *, ...));
78 extern void FDECL(start_level_def, (sp_lev * *, char *));
80 extern struct lc_funcdefs *FDECL(funcdef_new, (long,char *));
81 extern void FDECL(funcdef_free_all, (struct lc_funcdefs *));
82 extern struct lc_funcdefs *FDECL(funcdef_defined, (struct lc_funcdefs *,
84 extern char *FDECL(funcdef_paramtypes, (struct lc_funcdefs *));
85 extern char *FDECL(decode_parm_str, (char *));
87 extern struct lc_vardefs *FDECL(vardef_new, (long,char *));
88 extern void FDECL(vardef_free_all, (struct lc_vardefs *));
89 extern struct lc_vardefs *FDECL(vardef_defined, (struct lc_vardefs *,
92 extern void NDECL(break_stmt_start);
93 extern void FDECL(break_stmt_end, (sp_lev *));
94 extern void FDECL(break_stmt_new, (sp_lev *, long));
96 extern void FDECL(splev_add_from, (sp_lev *, sp_lev *));
98 extern void FDECL(check_vardef_type, (struct lc_vardefs *, char *, long));
99 extern void FDECL(vardef_used, (struct lc_vardefs *, char *));
100 extern struct lc_vardefs *FDECL(add_vardef_type, (struct lc_vardefs *,
103 extern int FDECL(reverse_jmp_opcode, (int));
114 static struct forloopdef forloop_list[MAX_NESTED_IFS];
115 static short n_forloops = 0;
118 sp_lev *splev = NULL;
120 static struct opvar *if_list[MAX_NESTED_IFS];
122 static short n_if_list = 0;
124 unsigned int max_x_map, max_y_map;
125 int obj_containment = 0;
127 int in_container_obj = 0;
129 /* integer value is possibly an inconstant value (eg. dice notation
131 int is_inconstant_number = 0;
133 int in_switch_statement = 0;
134 static struct opvar *switch_check_jump = NULL;
135 static struct opvar *switch_default_case = NULL;
136 static struct opvar *switch_case_list[MAX_SWITCH_CASES];
137 static long switch_case_value[MAX_SWITCH_CASES];
138 int n_switch_case_list = 0;
140 int allow_break_statements = 0;
141 struct lc_breakdef *break_list = NULL;
143 extern struct lc_vardefs *vardefs; /* variable definitions */
146 struct lc_vardefs *function_tmp_var_defs = NULL;
147 extern struct lc_funcdefs *function_definitions;
148 struct lc_funcdefs *curr_function = NULL;
149 struct lc_funcdefs_parm * curr_function_param = NULL;
150 int in_function_definition = 0;
151 sp_lev *function_splev_backup = NULL;
153 extern int fatal_error;
154 extern int got_errors;
155 extern int line_number;
156 extern const char *fname;
158 extern char curr_token[512];
202 #define MINUS_INTEGER 262
203 #define PLUS_INTEGER 263
204 #define MAZE_GRID_ID 264
205 #define SOLID_FILL_ID 265
207 #define ROGUELEV_ID 267
208 #define MESSAGE_ID 268
211 #define LEV_INIT_ID 271
212 #define GEOMETRY_ID 272
214 #define OBJECT_ID 274
215 #define COBJECT_ID 275
216 #define MONSTER_ID 276
219 #define DRAWBRIDGE_ID 279
220 #define object_ID 280
221 #define monster_ID 281
222 #define terrain_ID 282
223 #define MAZEWALK_ID 283
224 #define WALLIFY_ID 284
225 #define REGION_ID 285
227 #define IRREGULAR 287
230 #define LADDER_ID 290
232 #define NON_DIGGABLE_ID 292
233 #define NON_PASSWALL_ID 293
235 #define PORTAL_ID 295
236 #define TELEPRT_ID 296
237 #define BRANCH_ID 297
239 #define MINERALIZE_ID 299
240 #define CORRIDOR_ID 300
242 #define ENGRAVING_ID 302
243 #define FOUNTAIN_ID 303
247 #define RAND_CORRIDOR_ID 307
248 #define DOOR_STATE 308
249 #define LIGHT_STATE 309
250 #define CURSE_TYPE 310
251 #define ENGRAVING_TYPE 311
252 #define DIRECTION 312
253 #define RANDOM_TYPE 313
254 #define RANDOM_TYPE_BRACKET 314
255 #define A_REGISTER 315
256 #define ALIGNMENT 316
257 #define LEFT_OR_RIGHT 317
259 #define TOP_OR_BOT 319
260 #define ALTAR_TYPE 320
261 #define UP_OR_DOWN 321
262 #define SUBROOM_ID 322
265 #define FLAG_TYPE 325
266 #define MON_ATTITUDE 326
267 #define MON_ALERTNESS 327
268 #define MON_APPEARANCE 328
269 #define ROOMDOOR_ID 329
272 #define TERRAIN_ID 332
273 #define HORIZ_OR_VERT 333
274 #define REPLACE_TERRAIN_ID 334
276 #define SHUFFLE_ID 336
277 #define QUANTITY_ID 337
278 #define BURIED_ID 338
282 #define SWITCH_ID 342
285 #define DEFAULT_ID 345
286 #define ERODED_ID 346
287 #define TRAPPED_STATE 347
288 #define RECHARGED_ID 348
290 #define GREASED_ID 350
291 #define FEMALE_ID 351
292 #define CANCELLED_ID 352
293 #define REVIVED_ID 353
294 #define AVENGE_ID 354
295 #define FLEEING_ID 355
296 #define BLINDED_ID 356
297 #define PARALYZED_ID 357
298 #define STUNNED_ID 358
299 #define CONFUSED_ID 359
300 #define SEENTRAPS_ID 360
302 #define MONTYPE_ID 362
304 #define ERODEPROOF_ID 364
305 #define FUNCTION_ID 365
306 #define MSG_OUTPUT_TYPE 366
307 #define COMPARE_TYPE 367
308 #define UNKNOWN_TYPE 368
310 #define fillrect_ID 370
312 #define randline_ID 372
314 #define selection_ID 374
316 #define rndcoord_ID 376
317 #define circle_ID 377
318 #define ellipse_ID 378
319 #define filter_ID 379
320 #define complement_ID 380
321 #define gradient_ID 381
322 #define GRADIENT_TYPE 382
324 #define HUMIDITY_TYPE 384
328 #define VARSTRING 388
330 #define CFUNC_INT 390
331 #define CFUNC_STR 391
332 #define CFUNC_COORD 392
333 #define CFUNC_REGION 393
334 #define VARSTRING_INT 394
335 #define VARSTRING_INT_ARRAY 395
336 #define VARSTRING_STRING 396
337 #define VARSTRING_STRING_ARRAY 397
338 #define VARSTRING_VAR 398
339 #define VARSTRING_VAR_ARRAY 399
340 #define VARSTRING_COORD 400
341 #define VARSTRING_COORD_ARRAY 401
342 #define VARSTRING_REGION 402
343 #define VARSTRING_REGION_ARRAY 403
344 #define VARSTRING_MAPCHAR 404
345 #define VARSTRING_MAPCHAR_ARRAY 405
346 #define VARSTRING_MONST 406
347 #define VARSTRING_MONST_ARRAY 407
348 #define VARSTRING_OBJ 408
349 #define VARSTRING_OBJ_ARRAY 409
350 #define VARSTRING_SEL 410
351 #define VARSTRING_SEL_ARRAY 411
352 #define METHOD_INT 412
353 #define METHOD_INT_ARRAY 413
354 #define METHOD_STRING 414
355 #define METHOD_STRING_ARRAY 415
356 #define METHOD_VAR 416
357 #define METHOD_VAR_ARRAY 417
358 #define METHOD_COORD 418
359 #define METHOD_COORD_ARRAY 419
360 #define METHOD_REGION 420
361 #define METHOD_REGION_ARRAY 421
362 #define METHOD_MAPCHAR 422
363 #define METHOD_MAPCHAR_ARRAY 423
364 #define METHOD_MONST 424
365 #define METHOD_MONST_ARRAY 425
366 #define METHOD_OBJ 426
367 #define METHOD_OBJ_ARRAY 427
368 #define METHOD_SEL 428
369 #define METHOD_SEL_ARRAY 429
371 #define YYERRCODE 256
372 short yylhs[] = { -1,
373 0, 0, 73, 73, 74, 57, 57, 56, 56, 76,
374 76, 76, 76, 55, 55, 54, 54, 46, 46, 14,
375 14, 75, 75, 26, 26, 22, 22, 23, 78, 78,
376 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
377 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
378 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
379 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
380 78, 78, 59, 59, 59, 59, 59, 59, 59, 59,
381 59, 58, 58, 58, 58, 58, 58, 58, 58, 58,
382 60, 60, 60, 61, 61, 85, 84, 84, 84, 84,
383 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
384 84, 38, 38, 44, 44, 43, 43, 42, 42, 41,
385 41, 39, 39, 40, 40, 129, 130, 100, 101, 98,
386 45, 45, 31, 31, 31, 131, 133, 93, 134, 134,
387 136, 135, 137, 135, 99, 138, 138, 139, 140, 94,
388 141, 95, 142, 97, 144, 96, 143, 145, 143, 79,
389 110, 110, 110, 83, 83, 65, 146, 147, 113, 148,
390 112, 10, 10, 68, 68, 69, 69, 70, 70, 71,
391 71, 87, 87, 15, 15, 13, 13, 16, 16, 11,
392 11, 103, 103, 103, 1, 1, 2, 2, 105, 150,
393 105, 149, 20, 20, 21, 21, 21, 21, 21, 21,
394 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
395 35, 35, 35, 106, 152, 106, 151, 18, 18, 19,
396 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
397 19, 19, 19, 19, 120, 88, 104, 104, 121, 121,
398 102, 117, 118, 109, 119, 82, 17, 17, 91, 114,
399 108, 72, 72, 116, 115, 86, 107, 154, 111, 24,
400 24, 80, 81, 81, 81, 92, 89, 90, 90, 3,
401 3, 4, 4, 29, 29, 28, 28, 27, 27, 27,
402 5, 5, 6, 6, 7, 7, 7, 12, 12, 12,
403 8, 8, 9, 155, 155, 155, 132, 77, 77, 77,
404 77, 32, 32, 32, 30, 30, 127, 127, 127, 33,
405 124, 124, 124, 34, 34, 125, 125, 125, 36, 36,
406 36, 36, 126, 126, 126, 37, 37, 37, 37, 123,
407 123, 122, 122, 122, 122, 122, 122, 122, 122, 122,
408 122, 122, 50, 50, 157, 158, 158, 128, 128, 64,
409 64, 63, 63, 62, 62, 49, 49, 49, 49, 49,
410 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
411 49, 49, 49, 49, 48, 48, 156, 47, 47, 47,
412 153, 153, 153, 153, 51, 51, 52, 52, 53, 53,
416 0, 1, 1, 2, 3, 3, 5, 1, 1, 5,
417 5, 3, 16, 0, 2, 0, 2, 0, 2, 1,
418 1, 0, 3, 3, 1, 0, 2, 3, 1, 1,
419 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
420 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
421 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
422 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
423 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
424 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
425 1, 1, 1, 1, 1, 3, 3, 5, 3, 5,
426 5, 5, 3, 3, 5, 5, 5, 7, 7, 7,
427 5, 1, 3, 1, 3, 1, 3, 1, 3, 1,
428 3, 1, 3, 1, 3, 0, 0, 8, 4, 1,
429 0, 1, 1, 5, 3, 0, 0, 9, 0, 2,
430 0, 5, 0, 4, 1, 2, 1, 6, 0, 3,
431 0, 6, 0, 4, 0, 4, 1, 0, 4, 3,
432 1, 3, 3, 5, 5, 7, 4, 0, 10, 0,
433 12, 0, 2, 5, 1, 5, 1, 5, 1, 5,
434 1, 9, 5, 1, 1, 1, 1, 1, 3, 1,
435 1, 1, 7, 5, 1, 1, 1, 1, 3, 0,
436 5, 4, 0, 3, 1, 1, 1, 1, 2, 1,
437 1, 1, 1, 1, 3, 3, 3, 1, 1, 3,
438 1, 1, 3, 3, 0, 5, 2, 0, 3, 1,
439 3, 1, 3, 3, 1, 1, 3, 1, 1, 1,
440 3, 1, 1, 1, 5, 7, 5, 8, 1, 3,
441 5, 5, 7, 7, 6, 5, 0, 2, 3, 3,
442 3, 1, 5, 9, 5, 3, 3, 0, 10, 0,
443 1, 7, 5, 5, 3, 5, 7, 9, 1, 1,
444 1, 1, 1, 0, 2, 1, 3, 1, 1, 1,
445 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
446 1, 1, 4, 1, 1, 4, 1, 1, 4, 1,
447 4, 5, 1, 3, 1, 3, 1, 1, 4, 9,
448 1, 1, 4, 1, 5, 1, 1, 4, 1, 1,
449 5, 1, 1, 1, 4, 1, 1, 5, 1, 1,
450 3, 1, 1, 3, 1, 4, 3, 3, 3, 3,
451 3, 3, 1, 1, 3, 1, 3, 0, 1, 1,
452 1, 1, 3, 0, 1, 1, 2, 2, 4, 6,
453 4, 6, 6, 6, 6, 2, 6, 8, 8, 10,
454 14, 2, 1, 3, 1, 3, 1, 1, 1, 1,
455 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
458 short yydefred[] = { 0,
459 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
460 4, 0, 6, 0, 133, 0, 0, 0, 192, 0,
461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
464 130, 0, 0, 0, 136, 145, 0, 0, 0, 0,
465 93, 82, 73, 83, 74, 84, 75, 85, 76, 86,
466 77, 87, 78, 88, 79, 89, 80, 90, 81, 5,
467 0, 92, 91, 0, 30, 0, 29, 31, 32, 33,
468 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
469 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
470 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
471 64, 65, 66, 67, 68, 69, 70, 71, 72, 149,
472 0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
475 0, 0, 0, 0, 155, 0, 0, 0, 0, 94,
476 95, 0, 0, 0, 0, 342, 0, 345, 0, 387,
477 0, 343, 0, 153, 0, 27, 0, 9, 8, 7,
478 0, 304, 305, 0, 0, 340, 0, 0, 0, 12,
479 313, 0, 195, 196, 0, 0, 310, 0, 0, 308,
480 0, 337, 339, 0, 336, 334, 0, 333, 228, 224,
481 225, 330, 332, 0, 329, 327, 0, 326, 0, 0,
482 281, 280, 0, 291, 292, 0, 0, 0, 0, 0,
483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
484 383, 250, 0, 366, 0, 318, 0, 317, 0, 0,
485 0, 0, 0, 403, 0, 0, 266, 267, 283, 282,
486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
487 0, 0, 259, 261, 260, 390, 388, 389, 163, 162,
488 0, 184, 185, 0, 0, 0, 0, 96, 0, 0,
489 0, 0, 126, 0, 0, 0, 0, 135, 0, 0,
490 0, 0, 0, 0, 0, 362, 0, 0, 0, 396,
491 398, 395, 397, 399, 400, 0, 0, 0, 0, 0,
492 0, 103, 0, 0, 104, 0, 150, 24, 0, 0,
493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
495 0, 0, 0, 367, 368, 0, 0, 0, 376, 0,
496 0, 0, 382, 0, 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 132, 0, 0, 0, 0,
498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
499 156, 0, 0, 151, 0, 0, 0, 0, 344, 352,
500 0, 0, 0, 0, 349, 350, 351, 129, 0, 154,
501 0, 0, 120, 118, 0, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0, 341, 11, 262, 0, 10,
503 0, 0, 314, 0, 0, 0, 198, 197, 0, 173,
504 194, 0, 0, 0, 226, 0, 0, 203, 201, 245,
505 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506 324, 0, 0, 322, 0, 321, 0, 0, 0, 384,
507 386, 0, 0, 293, 294, 0, 297, 0, 295, 0,
508 296, 251, 0, 0, 0, 252, 0, 175, 0, 0,
509 0, 0, 0, 256, 0, 0, 165, 164, 276, 401,
510 402, 0, 177, 0, 0, 0, 0, 0, 265, 0,
511 0, 147, 0, 0, 137, 274, 0, 0, 0, 356,
512 0, 346, 134, 363, 98, 0, 0, 105, 0, 111,
513 0, 106, 0, 107, 0, 102, 0, 101, 0, 100,
514 28, 306, 0, 0, 316, 309, 0, 311, 0, 0,
515 335, 393, 391, 392, 239, 236, 230, 0, 0, 235,
516 0, 240, 0, 242, 243, 0, 238, 229, 244, 232,
517 394, 0, 328, 0, 0, 0, 369, 0, 0, 0,
518 371, 0, 0, 0, 0, 0, 0, 0, 0, 0,
519 319, 0, 0, 0, 0, 0, 0, 167, 0, 0,
520 0, 0, 0, 255, 0, 0, 0, 0, 0, 0,
521 0, 0, 152, 146, 0, 0, 0, 127, 0, 0,
522 0, 0, 121, 119, 112, 0, 114, 0, 116, 0,
523 0, 0, 312, 193, 338, 0, 0, 0, 0, 0,
524 331, 0, 246, 0, 0, 189, 0, 0, 0, 0,
525 0, 0, 0, 0, 0, 0, 0, 0, 302, 301,
526 272, 0, 0, 253, 0, 179, 0, 0, 254, 258,
527 0, 0, 0, 0, 181, 0, 0, 187, 0, 186,
528 159, 0, 0, 353, 354, 355, 0, 357, 0, 110,
529 0, 109, 0, 108, 0, 0, 0, 234, 237, 241,
530 231, 0, 298, 206, 207, 0, 211, 210, 212, 213,
531 214, 0, 0, 0, 218, 219, 0, 299, 208, 204,
532 0, 0, 248, 0, 372, 0, 377, 0, 373, 0,
533 323, 374, 375, 0, 0, 0, 268, 303, 0, 0,
534 0, 0, 0, 0, 190, 191, 0, 0, 0, 168,
535 0, 0, 0, 0, 0, 0, 128, 113, 115, 117,
536 263, 0, 0, 0, 0, 0, 0, 0, 19, 0,
537 0, 325, 0, 0, 288, 289, 290, 0, 285, 0,
538 0, 0, 174, 0, 0, 278, 166, 176, 0, 0,
539 182, 264, 0, 143, 138, 140, 0, 300, 215, 216,
540 217, 222, 0, 220, 378, 0, 379, 0, 0, 0,
541 271, 269, 0, 0, 0, 170, 0, 169, 141, 0,
542 0, 0, 0, 0, 0, 320, 287, 0, 405, 178,
543 0, 180, 0, 144, 0, 223, 380, 15, 0, 404,
544 171, 142, 0, 0, 0, 0, 20, 21, 0, 0,
547 short yydgoto[] = { 3,
548 209, 449, 233, 271, 236, 486, 490, 671, 491, 351,
549 757, 729, 689, 859, 294, 467, 614, 354, 578, 584,
550 730, 80, 337, 822, 512, 133, 788, 789, 747, 345,
551 81, 210, 258, 476, 814, 228, 218, 636, 425, 426,
552 427, 428, 640, 638, 387, 733, 290, 375, 253, 696,
553 329, 330, 331, 861, 835, 190, 4, 82, 83, 84,
554 172, 314, 315, 316, 280, 264, 265, 500, 515, 678,
555 687, 440, 5, 6, 10, 85, 254, 86, 87, 88,
556 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
557 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
558 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
559 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
560 129, 277, 318, 478, 229, 219, 259, 529, 408, 697,
561 173, 278, 626, 765, 766, 843, 830, 524, 130, 187,
562 521, 319, 401, 295, 517, 272, 800, 841, 230, 359,
563 220, 355, 580, 790, 196, 182, 530, 531,
565 short yysindex[] = { 68,
566 17, 31, 0, -217, 0, 68, -257, -226, 112, 5680,
567 0, 136, 0, -136, 0, 170, 185, 201, 0, 225,
568 229, 238, 244, 248, 251, 255, 266, 272, 275, 283,
569 304, 309, 346, 366, 378, 380, 382, 383, 396, 397,
570 398, 400, 401, 404, 405, 413, 415, -46, 417, 420,
571 0, 426, 108, 489, 0, 0, 428, 101, -35, 449,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
574 432, 0, 0, 430, 0, 5680, 0, 0, 0, 0,
575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
579 -190, 450, 0, -234, 62, -13, 41, 41, 40, -252,
580 -121, 109, 109, 1644, -34, 109, 109, 92, -34, -34,
581 -249, -20, -20, -20, -35, 458, -35, 109, 1644, 1644,
582 1644, -160, -249, -174, 0, 1644, -34, 288, -35, 0,
583 0, 439, 414, 109, 467, 0, -22, 0, 421, 0,
584 -9, 0, -14, 0, 163, 0, 385, 0, 0, 0,
585 -136, 0, 0, 423, 465, 0, 471, 473, 475, 0,
586 0, 137, 0, 0, 490, 271, 0, 441, 496, 0,
587 503, 0, 0, 276, 0, 0, 452, 0, 0, 0,
588 0, 0, 0, 292, 0, 0, 470, 0, 512, 0,
589 0, 0, 518, 0, 0, 523, 524, 526, -34, -34,
590 109, 109, 540, 109, 542, 544, 545, 1644, 548, 5537,
591 0, 0, 533, 0, 331, 0, 500, 0, 555, 558,
592 559, 564, 347, 0, 571, 582, 0, 0, 0, 0,
593 367, 584, 379, 592, 594, 595, 141, 596, 402, 597,
594 588, 611, 0, 0, 0, 0, 0, 0, 0, 0,
595 617, 0, 0, 628, 385, 638, 640, 0, 593, -35,
596 -35, 644, 0, 649, 159, -35, -35, 0, -35, -35,
597 -35, -35, -35, 651, 650, 0, 141, 465, 5680, 0,
598 0, 0, 0, 0, 0, 642, -1, 4, 643, 647,
599 653, 0, 141, 465, 0, 5680, 0, 0, -35, -234,
600 445, 14, 455, 654, 614, 1644, 678, -35, 38, 476,
601 338, 682, -35, 688, 385, 690, -35, 109, 385, 109,
602 1644, 424, 431, 0, 0, 694, 696, 1298, 0, 109,
603 109, 5435, 0, 360, 704, 1644, 702, -35, -165, -83,
604 429, 491, 703, -20, 433, 0, 707, -24, 708, -20,
605 -20, -20, -35, 709, 10, 109, -91, -19, -121, 0,
606 0, 9, 9, 0, 45, 655, -254, 560, 0, 0,
607 75, 148, 79, 79, 0, 0, 0, 0, -14, 0,
608 1644, 711, 0, 0, 16, 25, 27, 29, 141, 465,
609 22, -10, -28, 631, 427, 0, 0, 0, 501, 0,
610 715, 137, 0, 719, 505, 459, 0, 0, 503, 0,
611 0, 381, 499, 2, 0, 403, 508, 0, 0, 0,
612 0, 721, 723, 109, 109, 662, 743, 748, 746, 749,
613 0, 750, 5448, 0, 701, 0, 751, 752, 753, 0,
614 0, 554, 536, 0, 0, 754, 0, 726, 0, 774,
615 0, 0, 775, 579, 785, 0, -165, 0, 581, 796,
616 583, 798, 800, 0, 802, 535, 0, 0, 0, 0,
617 0, 804, 0, 591, 806, 807, 521, 598, 0, 810,
618 385, 0, 811, -35, 0, 0, 465, 801, 815, 0,
619 814, 0, 0, 0, 0, 604, -35, 0, -234, 0,
620 -21, 0, 824, 0, 57, 0, 98, 0, 23, 0,
621 0, 0, 825, 621, 0, 0, 827, 0, 493, 839,
622 0, 0, 0, 0, 0, 0, 0, 823, 826, 0,
623 828, 0, 830, 0, 0, 832, 0, 0, 0, 0,
624 0, 841, 0, 848, -121, 641, 0, 857, 590, 1644,
625 0, -35, -35, 1644, 859, -35, 1644, 1644, 864, 861,
626 0, -249, 648, -148, 652, 135, 586, 0, 867, -5,
627 868, 528, 587, 0, -35, 870, -234, 871, 6, 72,
628 385, 9, 0, 0, 141, 793, 1, 0, 560, 166,
629 141, 465, 0, 0, 0, 32, 0, 33, 0, 35,
630 -165, 873, 0, 0, 0, -234, -35, -35, -35, 40,
631 0, 5526, 0, 876, -35, 0, 880, 174, 686, 881,
632 -165, 569, 882, 883, -35, 685, 900, 852, 0, 0,
633 0, 902, 691, 0, 693, 0, 110, 908, 0, 0,
634 928, -184, 465, 716, 0, 717, 900, 0, 929, 0,
635 0, 932, 90, 0, 0, 0, 385, 0, 57, 0,
636 98, 0, 23, 0, 936, 722, 465, 0, 0, 0,
637 0, 56, 0, 0, 0, -234, 0, 0, 0, 0,
638 0, 920, 921, 924, 0, 0, 925, 0, 0, 0,
639 465, 727, 0, 141, 0, 699, 0, -35, 0, 945,
640 0, 0, 0, 481, 943, 59, 0, 0, 744, 957,
641 965, 963, 6, -35, 0, 0, 967, 977, 982, 0,
642 -184, 767, -50, 971, 905, 90, 0, 0, 0, 0,
643 0, 987, 724, 465, -35, -35, -35, -261, 0, 991,
644 576, 0, -35, 777, 0, 0, 0, 989, 0, 385,
645 992, 780, 0, 38, 900, 0, 0, 0, 781, 385,
646 0, 0, 983, 0, 0, 0, 784, 0, 0, 0,
647 0, 0, 916, 0, 0, 758, 0, 93, 1004, 59,
648 0, 0, 788, 1006, 1007, 0, 1010, 0, 0, 5680,
649 1009, -261, 1016, 675, 1020, 0, 0, 1025, 0, 0,
650 385, 0, 5680, 0, -165, 0, 0, 0, 1023, 0,
651 0, 0, 1024, 109, -149, 1026, 0, 0, 876, 109,
654 short yyrindex[] = { 1071,
655 0, 0, 0, 5225, 0, 1072, 0, 0, 0, 53,
656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
657 0, 0, 0, 0, 0, 0, 2985, 0, 0, 0,
658 0, 0, 0, 0, 0, 0, 0, 3174, 0, 0,
659 0, 0, 0, 0, 3331, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
668 0, 5382, 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
673 0, 0, 1032, 0, 0, 0, 0, 0, 0, 0,
674 0, 0, 0, 0, 3520, 0, 0, 0, 0, 0,
675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
676 689, 0, 0, 0, 0, 0, 0, 0, 0, 0,
677 0, 0, 0, 0, 0, 0, 0, 0, 0, 1947,
678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
680 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0,
681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
682 136, 0, 0, 0, 0, 0, 720, 0, 0, 0,
683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
685 0, 3677, 0, 0, 0, 0, 0, 0, 0, 0,
686 0, 0, 0, 0, 1033, 0, 241, 247, 0, 0,
687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
688 0, 0, 3866, 4023, 0, 951, 0, 0, 0, 0,
689 0, 0, 0, 984, 0, 0, 0, 0, 0, 0,
690 0, 0, 0, 2136, 0, 0, 0, 0, 0, 0,
691 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
693 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
694 0, 0, 0, 0, 0, 0, 0, 0, 0, 2293,
695 0, 0, 0, 0, 0, 0, 0, 1037, 0, 0,
696 0, 0, 374, 531, 0, 0, 0, 0, 0, 0,
697 0, 553, 0, 0, 0, 0, 0, 0, 42, 49,
698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
699 0, 0, 0, 0, 0, 0, 0, 0, 689, 0,
700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
701 0, 0, 4212, 0, 0, 1035, 0, 0, 0, 0,
702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
705 0, 0, 4369, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
707 0, 0, 0, 0, 0, 0, 4558, 0, 0, 0,
708 1039, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
713 0, 0, 0, 2482, 0, 0, 0, 0, 0, 0,
714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 0, 958, 0, 0, 0, 0, 0,
718 50, 52, 0, 0, 0, 0, 0, 0, 0, 0,
719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
720 0, 0, 0, 4715, 0, 0, 0, 0, 0, 0,
721 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0,
722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
723 0, 0, 4904, 0, 0, 0, 959, 0, 0, 0,
724 0, 0, 961, 0, 0, 0, 0, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 1255, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
728 1444, 0, 0, 909, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 961, 0, 0, 0, 0,
732 0, 0, 0, 1601, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 2828, 0, 5061,
734 0, 0, 0, 0, 959, 0, 0, 0, 0, 0,
735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736 0, 0, 1790, 0, 0, 0, 0, 128, 0, 0,
737 0, 0, 0, 0, 0, 0, 0, 0, 0, -69,
738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, -69, 0, 0, 0, 0, 0, 0, 0,
740 0, 0, 0, 0, 0, 1043, 0, 0, 4715, 0,
743 short yygindex[] = { 0,
744 410, 294, 0, 487, -329, -480, 0, 0, 438, 645,
745 330, 0, 0, 0, 0, -474, 0, 0, 0, 0,
746 0, -86, -287, 0, 0, 901, 0, 273, -629, 657,
747 1047, -296, -297, -509, 264, -504, -494, 0, 0, 0,
748 0, 0, 0, 0, 0, 242, -384, -137, 849, 0,
749 0, 0, 0, 0, 0, 0, 0, 1046, 934, -371,
750 0, 0, 0, 684, 710, 0, -48, 0, 0, 0,
751 351, 0, 1100, 0, 0, 0, -133, 790, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
756 0, -58, -130, -355, -375, 679, -84, 0, 0, 0,
757 0, -167, 0, 345, 0, 0, 0, 0, 0, 0,
758 0, 0, 0, 0, 0, 949, 0, 0, 0, 0,
759 975, 0, 0, 0, 792, 680, 504, 0,
761 #define YYTABLESIZE 6091
762 short yytable[] = { 186,
763 181, 299, 211, 195, 177, 255, 252, 400, 237, 238,
764 507, 518, 260, 261, 266, 499, 608, 177, 206, 273,
765 514, 283, 284, 285, 282, 177, 206, 313, 296, 224,
766 424, 423, 311, 309, 677, 310, 528, 312, 177, 639,
767 302, 206, 637, 327, 59, 686, 519, 520, 518, 279,
768 635, 332, 26, 439, 334, 26, 548, 760, 526, 537,
769 231, 214, 518, 269, 267, 268, 188, 455, 539, 516,
770 541, 459, 543, 755, 7, 699, 701, 550, 703, 224,
771 214, 313, 297, 308, 292, 122, 311, 309, 8, 310,
772 523, 312, 124, 123, 549, 125, 214, 286, 281, 812,
773 335, 287, 288, 274, 275, 276, 9, 366, 367, 857,
774 369, 313, 547, 773, 656, 313, 311, 309, 305, 310,
775 311, 312, 189, 813, 317, 312, 333, 12, 756, 313,
776 192, 263, 232, 406, 311, 270, 834, 224, 293, 312,
777 538, 193, 194, 484, 545, 690, 603, 485, 206, 540,
778 192, 542, 289, 544, 364, 365, 700, 702, 13, 704,
779 705, 193, 194, 858, 669, 826, 122, 532, 14, 14,
780 348, 670, 348, 124, 123, 643, 125, 313, 673, 131,
781 740, 26, 311, 309, 313, 310, 234, 312, 132, 311,
782 309, 235, 310, 770, 312, 313, 769, 430, 169, 410,
783 311, 309, 327, 310, 768, 312, 643, 286, 444, 666,
784 313, 287, 288, 15, 737, 311, 309, 736, 310, 510,
785 312, 511, 176, 461, 458, 505, 460, 134, 471, 487,
786 468, 488, 489, 623, 477, 176, 469, 470, 481, 304,
787 533, 405, 135, 176, 633, 634, 222, 411, 412, 434,
788 413, 414, 415, 416, 417, 653, 422, 528, 136, 562,
789 304, 176, 509, 563, 564, 471, 692, 286, 305, 429,
790 438, 287, 288, 26, 711, 26, 527, 262, 212, 471,
791 435, 360, 137, 535, 360, 328, 138, 361, 498, 446,
792 361, 201, 202, 513, 453, 139, 222, 212, 457, 201,
793 202, 140, 223, 203, 204, 141, 26, 676, 142, 565,
794 566, 567, 143, 212, 201, 202, 201, 202, 685, 483,
795 579, 26, 26, 144, 568, 197, 198, 199, 200, 145,
796 587, 588, 146, 691, 213, 495, 1, 2, 569, 570,
797 147, 502, 503, 504, 785, 786, 787, 571, 572, 573,
798 574, 575, 223, 213, 222, 447, 448, 307, 178, 179,
799 317, 148, 205, 576, 853, 577, 149, 256, 257, 213,
800 192, 178, 179, 347, 225, 474, 475, 205, 803, 178,
801 179, 193, 194, 466, 688, 522, 207, 208, 192, 262,
802 694, 695, 178, 179, 180, 226, 227, 178, 179, 193,
803 194, 207, 208, 150, 201, 202, 215, 180, 632, 767,
804 223, 347, 474, 475, 347, 180, 347, 347, 347, 347,
805 176, 201, 202, 151, 225, 215, 203, 204, 180, 216,
806 217, 180, 763, 180, 764, 152, 320, 153, 321, 154,
807 155, 215, 322, 323, 324, 226, 227, 681, 216, 217,
808 26, 26, 657, 156, 157, 158, 660, 159, 160, 663,
809 664, 161, 162, 313, 347, 625, 347, 205, 311, 309,
810 163, 310, 164, 312, 166, 201, 202, 167, 631, 708,
811 709, 710, 225, 168, 205, 174, 683, 175, 183, 184,
812 185, 207, 208, 191, 325, 313, 347, 279, 347, 300,
813 311, 309, 821, 310, 301, 312, 303, 336, 207, 208,
814 340, 306, 828, 339, 341, 707, 342, 313, 343, 552,
815 344, 731, 311, 309, 26, 783, 26, 312, 347, 346,
816 348, 348, 352, 658, 659, 313, 326, 662, 205, 349,
817 311, 309, 353, 310, 313, 312, 350, 192, 356, 311,
818 309, 558, 310, 851, 312, 358, 178, 179, 193, 194,
819 357, 360, 207, 208, 256, 257, 361, 362, 348, 363,
820 376, 348, 313, 348, 348, 348, 348, 311, 309, 368,
821 310, 370, 312, 371, 372, 774, 796, 374, 377, 342,
822 378, 561, 180, 342, 342, 342, 734, 342, 379, 342,
823 583, 380, 381, 382, 383, 313, 744, 809, 810, 811,
824 311, 309, 313, 310, 384, 312, 817, 311, 309, 816,
825 310, 348, 312, 348, 313, 385, 386, 388, 601, 311,
826 309, 396, 310, 347, 312, 390, 389, 391, 392, 393,
827 395, 347, 347, 347, 347, 347, 347, 347, 347, 347,
828 347, 347, 347, 348, 397, 348, 347, 347, 347, 394,
829 398, 741, 347, 347, 347, 347, 347, 347, 347, 347,
830 347, 399, 347, 347, 347, 347, 347, 347, 347, 781,
831 347, 402, 63, 403, 65, 404, 67, 407, 69, 409,
832 71, 418, 73, 419, 75, 347, 77, 442, 79, 421,
833 431, 437, 347, 347, 432, 347, 443, 347, 347, 347,
834 433, 441, 347, 347, 347, 347, 347, 347, 347, 307,
835 856, 445, 313, 451, 818, 452, 863, 311, 309, 738,
836 310, 454, 312, 456, 450, 462, 347, 464, 347, 465,
837 347, 479, 463, 844, 480, 482, 494, 525, 493, 492,
838 497, 501, 506, 496, 536, 551, 852, 553, 554, 556,
839 347, 347, 557, 307, 585, 560, 586, 347, 347, 347,
840 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
841 347, 347, 347, 347, 347, 589, 590, 582, 591, 592,
842 348, 596, 593, 594, 597, 598, 599, 602, 348, 348,
843 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
844 307, 600, 307, 348, 348, 348, 603, 604, 605, 348,
845 348, 348, 348, 348, 348, 348, 348, 348, 607, 348,
846 348, 348, 348, 348, 348, 348, 606, 348, 609, 610,
847 611, 612, 307, 613, 307, 615, 616, 617, 618, 619,
848 620, 621, 348, 622, 595, 628, 624, 629, 627, 348,
849 348, 630, 348, 255, 348, 348, 348, 643, 641, 348,
850 348, 348, 348, 348, 348, 348, 170, 642, 644, 645,
851 646, 651, 62, 647, 64, 648, 66, 649, 68, 650,
852 70, 652, 72, 348, 74, 348, 76, 348, 78, 654,
853 655, 466, 661, 665, 666, 668, 674, 680, 370, 672,
854 675, 673, 679, 682, 684, 693, 706, 348, 348, 732,
855 735, 739, 742, 743, 348, 348, 348, 348, 348, 348,
856 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
857 348, 348, 745, 746, 748, 749, 370, 61, 750, 370,
858 751, 753, 370, 62, 63, 64, 65, 66, 67, 68,
859 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
860 79, 754, 761, 758, 759, 762, 771, 775, 776, 307,
861 772, 777, 778, 779, 780, 782, 784, 307, 307, 307,
862 307, 307, 307, 307, 307, 307, 307, 307, 307, 370,
863 792, 791, 307, 307, 307, 793, 794, 797, 307, 307,
864 307, 307, 307, 307, 307, 307, 307, 798, 307, 307,
865 307, 307, 307, 307, 307, 799, 307, 802, 804, 805,
866 807, 815, 820, 370, 819, 823, 808, 824, 827, 832,
867 829, 307, 831, 833, 836, 838, 839, 840, 307, 307,
868 842, 307, 845, 307, 307, 307, 847, 848, 307, 307,
869 849, 307, 307, 307, 307, 850, 854, 855, 864, 860,
870 1, 3, 364, 365, 172, 26, 315, 358, 188, 359,
871 148, 284, 307, 16, 307, 139, 752, 825, 667, 728,
872 801, 338, 837, 559, 165, 846, 373, 385, 555, 171,
873 862, 298, 534, 795, 508, 11, 307, 307, 420, 546,
874 806, 291, 221, 307, 307, 307, 307, 307, 307, 307,
875 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
876 307, 436, 698, 581, 0, 0, 0, 0, 385, 0,
877 0, 385, 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 0, 0, 0, 0, 0, 0, 0, 0, 370, 0,
880 0, 0, 0, 0, 0, 0, 370, 370, 370, 370,
881 370, 370, 370, 370, 370, 370, 370, 370, 385, 0,
882 0, 370, 370, 370, 0, 0, 0, 370, 370, 370,
883 370, 370, 370, 370, 370, 370, 0, 370, 370, 370,
884 370, 370, 370, 370, 0, 370, 0, 0, 0, 0,
885 0, 0, 385, 0, 0, 0, 0, 0, 0, 0,
886 370, 0, 0, 0, 0, 0, 0, 370, 370, 0,
887 370, 0, 370, 370, 370, 0, 0, 370, 370, 0,
888 370, 370, 370, 370, 233, 0, 0, 0, 0, 0,
889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
890 0, 370, 0, 370, 0, 0, 0, 0, 0, 0,
891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
892 0, 0, 0, 0, 0, 370, 370, 0, 233, 0,
893 0, 0, 370, 370, 370, 370, 370, 370, 370, 370,
894 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
897 0, 0, 0, 0, 0, 233, 0, 0, 0, 0,
898 0, 0, 0, 0, 0, 0, 0, 385, 0, 0,
899 0, 0, 0, 0, 0, 385, 385, 385, 385, 385,
900 385, 385, 385, 385, 385, 385, 385, 233, 0, 233,
901 385, 385, 385, 0, 0, 0, 385, 385, 385, 385,
902 385, 385, 385, 385, 385, 0, 385, 385, 385, 385,
903 385, 385, 385, 0, 385, 0, 0, 0, 0, 0,
904 0, 0, 0, 0, 0, 0, 0, 0, 0, 385,
905 0, 0, 0, 0, 0, 0, 385, 385, 0, 385,
906 0, 385, 385, 385, 0, 0, 385, 385, 0, 385,
907 385, 385, 385, 205, 0, 0, 0, 0, 0, 0,
908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
909 385, 0, 385, 0, 0, 0, 0, 0, 0, 0,
910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911 0, 0, 0, 0, 385, 385, 0, 205, 0, 0,
912 0, 385, 385, 385, 385, 385, 385, 385, 385, 385,
913 385, 385, 385, 385, 385, 385, 385, 385, 385, 0,
914 0, 0, 0, 0, 233, 0, 0, 0, 0, 0,
915 0, 0, 233, 233, 233, 233, 233, 233, 233, 233,
916 233, 233, 233, 233, 205, 0, 0, 233, 233, 233,
917 0, 0, 0, 233, 233, 233, 233, 233, 233, 233,
918 233, 233, 0, 233, 233, 233, 233, 233, 233, 233,
919 0, 233, 0, 0, 0, 0, 205, 0, 205, 0,
920 0, 0, 0, 0, 0, 0, 233, 0, 0, 0,
921 0, 0, 0, 233, 233, 0, 233, 0, 233, 233,
922 233, 0, 0, 233, 233, 0, 233, 233, 233, 233,
923 209, 0, 0, 0, 0, 0, 0, 0, 0, 466,
924 201, 202, 0, 0, 0, 0, 0, 233, 0, 233,
925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
927 0, 233, 233, 0, 209, 0, 0, 0, 233, 233,
928 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
929 233, 233, 233, 233, 233, 233, 239, 240, 241, 242,
930 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
931 0, 0, 0, 250, 0, 0, 0, 0, 0, 0,
932 0, 209, 0, 0, 0, 0, 0, 207, 208, 0,
933 0, 0, 0, 205, 0, 0, 0, 251, 0, 0,
934 0, 205, 205, 205, 205, 205, 205, 205, 205, 205,
935 205, 205, 205, 209, 0, 209, 205, 205, 205, 0,
936 0, 0, 205, 205, 205, 205, 205, 205, 205, 205,
937 205, 0, 205, 205, 205, 205, 205, 205, 205, 0,
938 205, 0, 0, 0, 0, 0, 0, 0, 0, 0,
939 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
940 0, 0, 205, 205, 0, 205, 0, 205, 205, 205,
941 0, 0, 205, 205, 0, 205, 205, 205, 205, 221,
942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
943 0, 0, 0, 0, 0, 0, 205, 0, 205, 0,
944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
946 205, 205, 0, 221, 0, 0, 0, 205, 205, 205,
947 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
948 205, 205, 205, 205, 205, 0, 0, 0, 0, 0,
949 209, 0, 0, 0, 0, 0, 0, 0, 209, 209,
950 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
951 221, 0, 0, 209, 209, 209, 0, 0, 0, 209,
952 209, 209, 209, 209, 209, 209, 209, 209, 0, 209,
953 209, 209, 209, 209, 209, 209, 0, 209, 0, 0,
954 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
955 0, 0, 209, 0, 0, 0, 0, 0, 0, 209,
956 209, 0, 209, 0, 209, 209, 209, 0, 0, 209,
957 209, 0, 209, 209, 209, 209, 199, 0, 0, 0,
958 0, 0, 0, 0, 0, 0, 201, 202, 0, 0,
959 0, 0, 0, 209, 0, 209, 0, 0, 0, 0,
960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
961 0, 0, 0, 0, 0, 0, 0, 209, 209, 0,
962 0, 0, 0, 0, 209, 209, 209, 209, 209, 209,
963 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
964 209, 209, 239, 240, 241, 242, 243, 0, 244, 205,
965 245, 246, 247, 248, 249, 0, 0, 0, 0, 0,
966 0, 0, 0, 0, 0, 0, 0, 199, 0, 0,
967 0, 0, 0, 207, 208, 0, 0, 0, 0, 221,
968 0, 0, 0, 251, 0, 0, 0, 221, 221, 221,
969 221, 221, 221, 221, 221, 221, 221, 221, 221, 200,
970 0, 199, 221, 221, 221, 0, 0, 0, 221, 221,
971 221, 221, 221, 221, 221, 221, 221, 0, 221, 221,
972 221, 221, 221, 221, 221, 0, 221, 0, 0, 0,
973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
974 0, 221, 0, 0, 0, 0, 0, 0, 221, 221,
975 0, 221, 0, 221, 221, 221, 0, 0, 221, 221,
976 0, 221, 221, 221, 221, 227, 0, 0, 0, 0,
977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
978 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
980 0, 0, 0, 0, 0, 0, 221, 221, 0, 0,
981 0, 0, 0, 221, 221, 221, 221, 221, 221, 221,
982 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
983 221, 0, 0, 0, 0, 0, 199, 0, 0, 0,
984 0, 0, 0, 0, 199, 199, 199, 199, 199, 199,
985 199, 199, 199, 199, 199, 199, 227, 0, 0, 199,
986 199, 199, 0, 0, 0, 199, 199, 199, 199, 199,
987 199, 199, 199, 199, 0, 199, 199, 199, 199, 199,
988 199, 199, 0, 199, 0, 0, 0, 0, 227, 0,
989 227, 0, 0, 0, 0, 0, 0, 0, 199, 0,
990 0, 0, 0, 0, 0, 199, 199, 0, 199, 0,
991 199, 199, 199, 0, 0, 199, 199, 0, 199, 199,
992 199, 199, 157, 0, 0, 0, 0, 0, 0, 0,
993 0, 0, 0, 0, 0, 0, 0, 0, 0, 199,
994 0, 199, 0, 0, 0, 0, 0, 0, 0, 0,
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
996 0, 0, 0, 199, 199, 0, 0, 0, 0, 0,
997 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
998 199, 199, 199, 199, 199, 199, 199, 199, 0, 0,
999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1001 0, 0, 0, 157, 0, 0, 0, 0, 0, 0,
1002 0, 0, 0, 0, 0, 227, 0, 0, 0, 0,
1003 0, 0, 0, 227, 227, 227, 227, 227, 227, 227,
1004 227, 227, 227, 227, 227, 0, 0, 157, 227, 227,
1005 227, 0, 0, 0, 227, 227, 227, 227, 227, 227,
1006 227, 227, 227, 0, 227, 227, 227, 227, 227, 227,
1007 227, 0, 227, 0, 0, 0, 0, 0, 0, 0,
1008 0, 0, 0, 0, 0, 0, 0, 227, 0, 0,
1009 0, 0, 0, 0, 227, 227, 0, 227, 0, 227,
1010 227, 227, 0, 0, 227, 227, 0, 227, 227, 227,
1011 227, 202, 0, 0, 0, 0, 0, 0, 0, 0,
1012 0, 0, 0, 0, 0, 0, 0, 0, 227, 0,
1013 227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1015 0, 0, 227, 227, 0, 0, 0, 0, 0, 227,
1016 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1017 227, 227, 227, 227, 227, 227, 227, 0, 0, 0,
1018 0, 0, 157, 0, 0, 0, 0, 0, 0, 0,
1019 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1020 157, 157, 202, 0, 0, 157, 157, 157, 0, 0,
1021 0, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1022 0, 157, 157, 157, 157, 157, 157, 157, 0, 157,
1023 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1024 0, 0, 0, 0, 157, 0, 0, 0, 0, 0,
1025 0, 157, 157, 158, 157, 0, 157, 157, 157, 0,
1026 0, 157, 157, 0, 157, 157, 157, 157, 284, 0,
1027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1028 0, 0, 0, 0, 0, 157, 0, 157, 0, 0,
1029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1030 0, 0, 0, 0, 0, 0, 0, 0, 0, 157,
1031 157, 0, 0, 0, 0, 0, 157, 157, 157, 157,
1032 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1033 157, 157, 157, 157, 0, 0, 0, 0, 0, 0,
1034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1035 0, 0, 0, 0, 0, 0, 0, 0, 0, 284,
1036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1037 0, 202, 0, 0, 0, 0, 0, 0, 0, 202,
1038 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1039 202, 284, 0, 284, 202, 202, 202, 0, 0, 0,
1040 202, 202, 202, 202, 202, 202, 202, 202, 202, 0,
1041 202, 202, 202, 202, 202, 202, 202, 0, 202, 0,
1042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1043 0, 0, 0, 202, 0, 0, 0, 0, 0, 0,
1044 202, 202, 0, 202, 0, 202, 202, 202, 0, 0,
1045 202, 202, 0, 202, 202, 202, 202, 286, 0, 0,
1046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1047 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1049 0, 0, 0, 0, 0, 0, 0, 0, 202, 202,
1050 0, 0, 0, 0, 0, 202, 202, 202, 202, 202,
1051 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1052 202, 202, 202, 0, 0, 0, 0, 0, 284, 0,
1053 0, 0, 0, 0, 0, 0, 284, 284, 284, 284,
1054 284, 284, 284, 284, 284, 284, 284, 284, 286, 0,
1055 0, 284, 284, 284, 0, 0, 0, 284, 284, 284,
1056 284, 284, 284, 284, 284, 284, 0, 284, 284, 284,
1057 284, 284, 284, 284, 0, 284, 0, 0, 0, 0,
1058 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1059 284, 0, 0, 0, 0, 0, 0, 284, 284, 0,
1060 284, 0, 284, 284, 284, 0, 0, 284, 284, 0,
1061 284, 284, 284, 284, 249, 0, 0, 0, 0, 0,
1062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1063 0, 284, 0, 284, 0, 0, 0, 0, 0, 0,
1064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1065 0, 0, 0, 0, 0, 284, 284, 0, 0, 0,
1066 0, 0, 284, 284, 284, 284, 284, 284, 284, 284,
1067 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
1068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1070 0, 0, 0, 0, 0, 249, 0, 0, 0, 0,
1071 0, 0, 0, 0, 0, 0, 0, 286, 0, 0,
1072 0, 0, 0, 0, 0, 286, 286, 286, 286, 286,
1073 286, 286, 286, 286, 286, 286, 286, 0, 0, 249,
1074 286, 286, 286, 0, 0, 0, 286, 286, 286, 286,
1075 286, 286, 286, 286, 286, 0, 286, 286, 286, 286,
1076 286, 286, 286, 0, 286, 0, 0, 0, 0, 0,
1077 0, 0, 0, 0, 0, 0, 0, 0, 0, 286,
1078 0, 0, 0, 0, 0, 0, 286, 286, 0, 286,
1079 0, 286, 286, 286, 0, 0, 286, 286, 0, 286,
1080 286, 286, 286, 279, 0, 0, 0, 0, 0, 0,
1081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1082 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1084 0, 0, 0, 0, 286, 286, 0, 0, 0, 0,
1085 0, 286, 286, 286, 286, 286, 286, 286, 286, 286,
1086 286, 286, 286, 286, 286, 286, 286, 286, 286, 0,
1087 0, 0, 0, 0, 249, 0, 0, 0, 0, 0,
1088 0, 0, 249, 249, 249, 249, 249, 249, 249, 249,
1089 249, 249, 249, 249, 279, 0, 0, 249, 249, 249,
1090 0, 0, 0, 249, 249, 249, 249, 249, 249, 249,
1091 249, 249, 0, 249, 249, 249, 249, 249, 249, 249,
1092 0, 249, 0, 0, 0, 0, 0, 0, 279, 0,
1093 0, 0, 0, 0, 0, 0, 249, 0, 0, 0,
1094 0, 0, 0, 249, 249, 0, 249, 0, 249, 249,
1095 249, 0, 0, 249, 249, 0, 249, 249, 249, 249,
1096 161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1097 0, 0, 0, 0, 0, 0, 0, 249, 0, 249,
1098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1100 0, 249, 249, 0, 0, 0, 0, 0, 249, 249,
1101 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1102 249, 249, 249, 249, 249, 249, 0, 0, 0, 0,
1103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1105 0, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1106 0, 0, 0, 279, 0, 0, 0, 0, 0, 0,
1107 0, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1108 279, 279, 279, 0, 0, 161, 279, 279, 279, 0,
1109 0, 0, 279, 279, 279, 279, 279, 279, 279, 279,
1110 279, 0, 279, 279, 279, 279, 279, 279, 279, 0,
1111 279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1112 0, 0, 0, 0, 0, 279, 0, 0, 0, 0,
1113 0, 0, 279, 279, 0, 279, 0, 279, 279, 279,
1114 0, 0, 279, 279, 0, 279, 279, 279, 279, 160,
1115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1116 0, 0, 0, 0, 0, 0, 279, 0, 279, 0,
1117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1119 279, 279, 0, 0, 0, 0, 0, 279, 279, 279,
1120 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1121 279, 279, 279, 279, 279, 0, 0, 0, 0, 0,
1122 161, 0, 0, 0, 0, 0, 0, 0, 161, 161,
1123 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1124 160, 0, 0, 161, 161, 161, 0, 0, 0, 161,
1125 161, 161, 161, 161, 161, 161, 161, 161, 0, 161,
1126 161, 161, 161, 161, 161, 161, 0, 161, 0, 0,
1127 0, 0, 0, 0, 160, 0, 0, 0, 0, 0,
1128 0, 0, 161, 0, 0, 0, 0, 0, 0, 161,
1129 161, 0, 161, 0, 161, 161, 161, 0, 0, 161,
1130 161, 0, 161, 161, 161, 161, 275, 0, 0, 0,
1131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1132 0, 0, 0, 161, 0, 161, 0, 0, 0, 0,
1133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1134 0, 0, 0, 0, 0, 0, 0, 161, 161, 0,
1135 0, 0, 0, 0, 161, 161, 161, 161, 161, 161,
1136 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1137 161, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1139 0, 0, 0, 0, 0, 0, 0, 275, 0, 0,
1140 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
1141 0, 0, 0, 0, 0, 0, 0, 160, 160, 160,
1142 160, 160, 160, 160, 160, 160, 160, 160, 160, 0,
1143 0, 275, 160, 160, 160, 0, 0, 0, 160, 160,
1144 160, 160, 160, 160, 160, 160, 160, 0, 160, 160,
1145 160, 160, 160, 160, 160, 0, 160, 0, 0, 0,
1146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1147 0, 160, 0, 0, 0, 0, 0, 0, 160, 160,
1148 0, 160, 0, 160, 160, 160, 0, 0, 160, 160,
1149 0, 160, 160, 160, 160, 97, 0, 0, 0, 0,
1150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1151 0, 0, 160, 0, 160, 0, 0, 0, 0, 0,
1152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1153 0, 0, 0, 0, 0, 0, 160, 160, 0, 0,
1154 0, 0, 0, 160, 160, 160, 160, 160, 160, 160,
1155 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1156 160, 0, 0, 0, 0, 0, 275, 0, 0, 0,
1157 0, 0, 0, 0, 275, 275, 275, 275, 275, 275,
1158 275, 275, 275, 275, 275, 275, 97, 0, 0, 275,
1159 275, 275, 0, 0, 0, 275, 275, 275, 275, 275,
1160 275, 275, 275, 275, 0, 275, 275, 275, 275, 275,
1161 275, 275, 0, 275, 0, 0, 0, 0, 0, 0,
1162 97, 0, 0, 0, 0, 0, 0, 0, 275, 0,
1163 0, 0, 0, 0, 0, 275, 275, 0, 275, 0,
1164 275, 275, 275, 0, 0, 275, 275, 0, 275, 275,
1165 275, 275, 99, 0, 0, 0, 0, 0, 0, 0,
1166 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
1167 0, 275, 0, 0, 0, 0, 0, 0, 0, 0,
1168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1169 0, 0, 0, 275, 275, 0, 0, 0, 0, 0,
1170 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
1171 275, 275, 275, 275, 275, 275, 275, 275, 0, 0,
1172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1174 0, 0, 0, 99, 0, 0, 0, 0, 0, 0,
1175 0, 0, 0, 0, 0, 97, 0, 0, 0, 0,
1176 0, 0, 0, 97, 97, 97, 97, 97, 97, 97,
1177 97, 97, 97, 97, 97, 0, 0, 99, 97, 97,
1178 97, 0, 0, 0, 97, 97, 97, 97, 97, 97,
1179 97, 97, 97, 0, 97, 97, 97, 97, 97, 97,
1180 97, 0, 97, 0, 0, 0, 0, 0, 0, 0,
1181 0, 0, 0, 0, 0, 0, 0, 97, 0, 0,
1182 0, 0, 0, 0, 97, 97, 0, 97, 0, 97,
1183 97, 97, 0, 0, 97, 97, 0, 97, 97, 97,
1184 97, 247, 0, 0, 0, 0, 0, 0, 0, 0,
1185 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
1186 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1188 0, 0, 97, 97, 0, 0, 0, 0, 0, 97,
1189 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1190 97, 97, 97, 97, 97, 97, 97, 0, 0, 0,
1191 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
1192 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1193 99, 99, 247, 0, 0, 99, 99, 99, 0, 0,
1194 0, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1195 0, 99, 99, 99, 99, 99, 99, 99, 0, 99,
1196 0, 0, 0, 0, 0, 0, 247, 0, 0, 0,
1197 0, 0, 0, 0, 99, 0, 0, 0, 0, 0,
1198 0, 99, 99, 0, 99, 0, 99, 99, 99, 0,
1199 0, 99, 99, 0, 99, 99, 99, 99, 257, 0,
1200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1201 0, 0, 0, 0, 0, 99, 0, 99, 0, 0,
1202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1203 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
1204 99, 0, 0, 0, 0, 0, 99, 99, 99, 99,
1205 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1206 99, 99, 99, 99, 0, 0, 0, 0, 0, 0,
1207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1208 0, 0, 0, 0, 0, 0, 0, 0, 0, 257,
1209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1210 0, 247, 0, 0, 0, 0, 0, 0, 0, 247,
1211 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1212 247, 0, 0, 257, 247, 247, 247, 0, 0, 0,
1213 247, 247, 247, 247, 247, 247, 247, 247, 247, 0,
1214 247, 247, 247, 247, 247, 247, 247, 0, 247, 0,
1215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1216 0, 0, 0, 247, 0, 0, 0, 0, 0, 0,
1217 247, 247, 0, 247, 0, 247, 247, 247, 0, 0,
1218 247, 247, 0, 247, 247, 247, 247, 273, 0, 0,
1219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 247, 0, 247, 0, 0, 0,
1221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1222 0, 0, 0, 0, 0, 0, 0, 0, 247, 247,
1223 0, 0, 0, 0, 0, 247, 247, 247, 247, 247,
1224 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1225 247, 247, 247, 0, 0, 0, 0, 0, 257, 0,
1226 0, 0, 0, 0, 0, 0, 257, 257, 257, 257,
1227 257, 257, 257, 257, 257, 257, 257, 257, 273, 0,
1228 0, 257, 257, 257, 0, 0, 0, 257, 257, 257,
1229 257, 257, 257, 257, 257, 257, 0, 257, 257, 257,
1230 257, 257, 257, 257, 0, 257, 0, 0, 0, 0,
1231 0, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1232 257, 0, 0, 0, 0, 0, 0, 257, 257, 0,
1233 257, 0, 257, 257, 257, 0, 0, 257, 257, 0,
1234 257, 257, 257, 257, 18, 0, 0, 0, 0, 0,
1235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1236 0, 257, 0, 257, 0, 0, 0, 0, 0, 0,
1237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1238 0, 0, 0, 0, 0, 257, 257, 0, 0, 0,
1239 0, 0, 257, 257, 257, 257, 257, 257, 257, 257,
1240 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
1241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1243 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
1244 0, 0, 0, 0, 0, 0, 0, 273, 0, 0,
1245 0, 0, 0, 0, 0, 273, 273, 273, 273, 273,
1246 273, 273, 273, 273, 273, 273, 273, 0, 0, 18,
1247 273, 273, 273, 0, 0, 0, 273, 273, 273, 273,
1248 273, 273, 273, 273, 273, 0, 273, 273, 273, 273,
1249 273, 273, 273, 0, 273, 0, 0, 0, 0, 0,
1250 0, 0, 0, 0, 0, 0, 0, 0, 0, 273,
1251 0, 0, 0, 0, 0, 0, 273, 273, 0, 273,
1252 0, 273, 273, 273, 0, 0, 273, 273, 0, 273,
1253 273, 273, 273, 277, 0, 0, 0, 0, 0, 0,
1254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1255 273, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1257 0, 0, 0, 0, 273, 273, 0, 0, 0, 0,
1258 0, 273, 273, 273, 273, 273, 273, 273, 273, 273,
1259 273, 273, 273, 273, 273, 273, 273, 273, 273, 0,
1260 0, 0, 0, 0, 18, 0, 0, 0, 0, 0,
1261 0, 0, 18, 18, 18, 18, 18, 18, 18, 18,
1262 18, 18, 18, 18, 277, 0, 0, 18, 18, 18,
1263 0, 0, 0, 18, 18, 18, 18, 18, 18, 18,
1264 18, 18, 0, 18, 18, 18, 18, 18, 18, 18,
1265 0, 18, 0, 0, 0, 0, 0, 0, 277, 0,
1266 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
1267 0, 0, 0, 18, 18, 0, 18, 0, 18, 18,
1268 18, 0, 0, 18, 18, 0, 18, 18, 18, 18,
1269 270, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1270 0, 0, 0, 0, 0, 0, 0, 18, 0, 18,
1271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1273 0, 18, 18, 0, 0, 0, 0, 0, 18, 18,
1274 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1275 18, 18, 18, 18, 18, 18, 0, 0, 0, 0,
1276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1278 0, 270, 0, 0, 0, 0, 0, 0, 0, 0,
1279 0, 0, 0, 277, 0, 0, 0, 0, 0, 0,
1280 0, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1281 277, 277, 277, 0, 0, 270, 277, 277, 277, 0,
1282 0, 0, 277, 277, 277, 277, 277, 277, 277, 277,
1283 277, 0, 277, 277, 277, 277, 277, 277, 277, 0,
1284 277, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1285 0, 0, 0, 0, 22, 277, 0, 0, 0, 0,
1286 0, 0, 277, 277, 0, 277, 0, 277, 277, 277,
1287 0, 0, 277, 277, 0, 277, 277, 277, 277, 0,
1288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1289 0, 0, 0, 0, 0, 0, 277, 0, 277, 0,
1290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1292 277, 277, 0, 0, 0, 0, 0, 277, 277, 277,
1293 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1294 277, 277, 277, 277, 277, 22, 0, 0, 0, 0,
1295 270, 0, 0, 0, 0, 0, 0, 0, 270, 270,
1296 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1297 0, 0, 0, 270, 270, 270, 0, 0, 0, 270,
1298 270, 270, 270, 270, 270, 270, 270, 270, 0, 270,
1299 270, 270, 270, 270, 270, 270, 0, 270, 0, 0,
1300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1301 0, 25, 270, 0, 0, 0, 0, 0, 0, 270,
1302 270, 0, 270, 0, 270, 270, 270, 0, 0, 270,
1303 270, 0, 270, 270, 270, 270, 0, 0, 0, 0,
1304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1305 0, 0, 0, 270, 0, 270, 0, 0, 0, 0,
1306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1307 0, 0, 0, 0, 0, 0, 0, 270, 270, 0,
1308 0, 0, 0, 0, 270, 270, 270, 270, 270, 270,
1309 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1310 270, 270, 25, 0, 473, 0, 0, 0, 0, 0,
1311 0, 0, 0, 0, 22, 0, 0, 250, 0, 0,
1312 0, 0, 22, 22, 22, 22, 22, 22, 22, 22,
1313 22, 22, 22, 22, 0, 0, 0, 22, 22, 22,
1314 0, 0, 0, 22, 22, 22, 22, 22, 22, 22,
1315 22, 22, 0, 22, 22, 22, 22, 22, 22, 22,
1316 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
1317 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
1318 0, 0, 0, 22, 22, 0, 22, 0, 22, 22,
1319 22, 0, 0, 22, 22, 0, 22, 0, 22, 0,
1320 0, 0, 0, 0, 0, 0, 250, 0, 0, 0,
1321 0, 0, 0, 0, 0, 0, 0, 22, 0, 22,
1322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1324 0, 22, 22, 0, 0, 0, 0, 0, 22, 22,
1325 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1326 22, 22, 22, 22, 22, 22, 0, 0, 0, 0,
1327 0, 25, 0, 0, 0, 0, 0, 0, 0, 25,
1328 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1329 25, 0, 0, 0, 25, 25, 25, 0, 0, 0,
1330 25, 25, 25, 25, 25, 25, 25, 25, 25, 0,
1331 25, 25, 25, 25, 25, 25, 25, 0, 25, 0,
1332 0, 471, 0, 0, 0, 472, 0, 0, 0, 0,
1333 0, 0, 0, 25, 595, 347, 0, 0, 0, 0,
1334 25, 25, 0, 25, 0, 25, 25, 25, 0, 0,
1335 25, 25, 0, 25, 0, 25, 0, 0, 0, 0,
1336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1337 0, 0, 0, 0, 25, 0, 25, 201, 202, 0,
1338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1339 201, 202, 0, 0, 0, 0, 0, 0, 25, 25,
1340 59, 0, 0, 0, 0, 25, 25, 25, 25, 25,
1341 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1342 25, 25, 25, 0, 347, 0, 0, 0, 0, 0,
1343 0, 0, 0, 239, 240, 241, 242, 243, 0, 244,
1344 205, 245, 246, 247, 248, 249, 239, 240, 241, 242,
1345 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
1346 0, 0, 0, 0, 207, 208, 0, 0, 474, 475,
1347 712, 713, 0, 0, 251, 0, 0, 207, 208, 201,
1348 202, 714, 715, 716, 0, 0, 0, 251, 0, 0,
1349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1350 0, 0, 0, 0, 717, 0, 718, 719, 720, 721,
1351 722, 723, 724, 725, 726, 727, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1353 0, 0, 0, 0, 0, 239, 240, 241, 242, 243,
1354 192, 244, 205, 245, 246, 247, 248, 249, 0, 0,
1355 0, 193, 194, 0, 0, 0, 0, 0, 0, 0,
1356 0, 0, 0, 0, 0, 0, 207, 208, 0, 15,
1357 0, 0, 0, 0, 0, 0, 251, 16, 0, 0,
1358 17, 18, 19, 20, 21, 22, 23, 24, 25, 0,
1359 0, 0, 26, 27, 28, 0, 0, 0, 29, 30,
1360 31, 32, 33, 34, 35, 36, 37, 0, 38, 39,
1361 40, 41, 42, 43, 44, 0, 45, 0, 0, 0,
1362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1363 0, 46, 0, 0, 0, 0, 0, 0, 47, 48,
1364 0, 49, 0, 50, 51, 52, 0, 0, 53, 54,
1365 0, 55, 0, 56, 0, 0, 0, 0, 0, 0,
1366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 57, 0, 58, 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 0, 0, 60, 61, 0, 0,
1370 0, 0, 0, 62, 63, 64, 65, 66, 67, 68,
1371 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1374 short yycheck[] = { 86,
1375 59, 169, 136, 134, 40, 40, 144, 295, 142, 143,
1376 395, 40, 146, 147, 148, 40, 497, 40, 40, 40,
1377 40, 159, 160, 161, 158, 40, 40, 37, 166, 40,
1378 328, 328, 42, 43, 40, 45, 408, 47, 40, 549,
1379 174, 40, 547, 40, 91, 40, 402, 403, 40, 40,
1380 545, 185, 0, 40, 185, 125, 432, 687, 313, 44,
1381 313, 40, 40, 313, 149, 150, 257, 355, 44, 399,
1382 44, 359, 44, 258, 58, 44, 44, 433, 44, 40,
1383 40, 37, 167, 93, 259, 44, 42, 43, 58, 45,
1384 46, 47, 44, 44, 123, 44, 40, 258, 157, 361,
1385 185, 262, 263, 152, 153, 154, 324, 241, 242, 259,
1386 244, 37, 123, 58, 589, 37, 42, 43, 177, 45,
1387 42, 47, 313, 385, 183, 47, 185, 385, 313, 37,
1388 385, 40, 385, 301, 42, 385, 44, 40, 313, 47,
1389 125, 396, 397, 309, 123, 620, 91, 313, 40, 125,
1390 385, 125, 313, 125, 239, 240, 125, 125, 385, 125,
1391 641, 396, 397, 313, 313, 795, 125, 93, 41, 58,
1392 43, 320, 45, 125, 125, 41, 125, 37, 44, 44,
1393 661, 0, 42, 43, 37, 45, 308, 47, 325, 42,
1394 43, 313, 45, 703, 47, 37, 701, 328, 91, 41,
1395 42, 43, 40, 45, 699, 47, 41, 258, 346, 44,
1396 37, 262, 263, 260, 41, 42, 43, 44, 45, 311,
1397 47, 313, 258, 361, 358, 393, 360, 58, 257, 313,
1398 368, 315, 316, 521, 372, 258, 370, 371, 376, 262,
1399 93, 300, 58, 258, 541, 543, 257, 306, 307, 336,
1400 309, 310, 311, 312, 313, 585, 258, 629, 58, 258,
1401 262, 258, 396, 262, 263, 257, 622, 258, 327, 328,
1402 257, 262, 263, 343, 650, 345, 407, 298, 257, 257,
1403 339, 41, 58, 421, 44, 123, 58, 41, 313, 348,
1404 44, 313, 314, 313, 353, 58, 257, 257, 357, 313,
1405 314, 58, 313, 317, 318, 58, 125, 313, 58, 308,
1406 309, 310, 58, 257, 313, 314, 313, 314, 313, 378,
1407 454, 269, 270, 58, 323, 264, 265, 266, 267, 58,
1408 464, 465, 58, 621, 313, 384, 269, 270, 337, 338,
1409 58, 390, 391, 392, 286, 287, 288, 346, 347, 348,
1410 349, 350, 313, 313, 257, 318, 319, 367, 394, 395,
1411 419, 58, 376, 362, 845, 364, 58, 402, 403, 313,
1412 385, 394, 395, 0, 385, 404, 405, 376, 763, 394,
1413 395, 396, 397, 312, 313, 341, 400, 401, 385, 298,
1414 390, 391, 394, 395, 430, 406, 407, 394, 395, 396,
1415 397, 400, 401, 58, 313, 314, 385, 430, 539, 697,
1416 313, 38, 404, 405, 41, 430, 43, 44, 45, 46,
1417 258, 313, 314, 58, 385, 385, 317, 318, 430, 408,
1418 409, 430, 343, 430, 345, 58, 274, 58, 276, 58,
1419 58, 385, 280, 281, 282, 406, 407, 615, 408, 409,
1420 269, 270, 590, 58, 58, 58, 594, 58, 58, 597,
1421 598, 58, 58, 37, 91, 524, 93, 376, 42, 43,
1422 58, 45, 58, 47, 58, 313, 314, 58, 537, 647,
1423 648, 649, 385, 58, 376, 58, 617, 387, 40, 58,
1424 61, 400, 401, 44, 332, 37, 123, 40, 125, 61,
1425 42, 43, 790, 45, 91, 47, 40, 123, 400, 401,
1426 46, 91, 800, 91, 44, 646, 44, 37, 44, 93,
1427 384, 652, 42, 43, 343, 45, 345, 47, 258, 40,
1428 0, 91, 257, 592, 593, 37, 374, 596, 376, 44,
1429 42, 43, 91, 45, 37, 47, 44, 385, 257, 42,
1430 43, 93, 45, 841, 47, 44, 394, 395, 396, 397,
1431 91, 44, 400, 401, 402, 403, 44, 44, 38, 44,
1432 38, 41, 37, 43, 44, 45, 46, 42, 43, 40,
1433 45, 40, 47, 40, 40, 716, 754, 40, 258, 37,
1434 91, 93, 430, 41, 42, 43, 655, 45, 44, 47,
1435 93, 44, 44, 40, 258, 37, 665, 775, 776, 777,
1436 42, 43, 37, 45, 44, 47, 41, 42, 43, 44,
1437 45, 91, 47, 93, 37, 44, 260, 44, 93, 42,
1438 43, 44, 45, 260, 47, 44, 258, 44, 44, 44,
1439 44, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1440 277, 278, 279, 123, 44, 125, 283, 284, 285, 258,
1441 44, 93, 289, 290, 291, 292, 293, 294, 295, 296,
1442 297, 44, 299, 300, 301, 302, 303, 304, 305, 738,
1443 307, 44, 395, 44, 397, 93, 399, 44, 401, 41,
1444 403, 41, 405, 44, 407, 322, 409, 44, 411, 58,
1445 58, 257, 329, 330, 58, 332, 93, 334, 335, 336,
1446 58, 257, 339, 340, 341, 342, 343, 344, 345, 0,
1447 854, 44, 37, 386, 783, 44, 860, 42, 43, 44,
1448 45, 44, 47, 44, 259, 312, 363, 44, 365, 44,
1449 367, 382, 312, 830, 41, 44, 44, 93, 258, 321,
1450 44, 44, 44, 321, 44, 125, 843, 257, 44, 41,
1451 387, 388, 258, 44, 44, 385, 44, 394, 395, 396,
1452 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1453 407, 408, 409, 410, 411, 124, 44, 385, 41, 44,
1454 260, 91, 44, 44, 44, 44, 44, 44, 268, 269,
1455 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1456 91, 258, 93, 283, 284, 285, 91, 44, 44, 289,
1457 290, 291, 292, 293, 294, 295, 296, 297, 44, 299,
1458 300, 301, 302, 303, 304, 305, 258, 307, 258, 44,
1459 258, 44, 123, 44, 125, 44, 312, 44, 258, 44,
1460 44, 331, 322, 44, 257, 41, 46, 44, 58, 329,
1461 330, 258, 332, 40, 334, 335, 336, 41, 44, 339,
1462 340, 341, 342, 343, 344, 345, 388, 257, 386, 41,
1463 58, 41, 394, 58, 396, 58, 398, 58, 400, 58,
1464 402, 44, 404, 363, 406, 365, 408, 367, 410, 259,
1465 44, 312, 44, 40, 44, 258, 321, 321, 0, 258,
1466 44, 44, 385, 44, 44, 123, 44, 387, 388, 44,
1467 41, 41, 41, 41, 394, 395, 396, 397, 398, 399,
1468 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1469 410, 411, 258, 44, 93, 44, 38, 388, 258, 41,
1470 258, 44, 44, 394, 395, 396, 397, 398, 399, 400,
1471 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1472 411, 44, 44, 258, 258, 44, 41, 58, 58, 260,
1473 259, 58, 58, 257, 286, 41, 44, 268, 269, 270,
1474 271, 272, 273, 274, 275, 276, 277, 278, 279, 91,
1475 44, 258, 283, 284, 285, 41, 44, 41, 289, 290,
1476 291, 292, 293, 294, 295, 296, 297, 41, 299, 300,
1477 301, 302, 303, 304, 305, 44, 307, 261, 58, 125,
1478 44, 41, 44, 125, 258, 44, 313, 258, 258, 124,
1479 58, 322, 259, 286, 41, 258, 41, 41, 329, 330,
1480 41, 332, 44, 334, 335, 336, 41, 383, 339, 340,
1481 41, 342, 343, 344, 345, 41, 44, 44, 41, 44,
1482 0, 0, 41, 41, 386, 125, 93, 41, 44, 41,
1483 123, 123, 363, 41, 365, 125, 677, 794, 602, 652,
1484 761, 191, 820, 449, 48, 832, 248, 0, 442, 54,
1485 859, 168, 419, 753, 395, 6, 387, 388, 319, 431,
1486 766, 163, 138, 394, 395, 396, 397, 398, 399, 400,
1487 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1488 411, 340, 629, 454, -1, -1, -1, -1, 41, -1,
1489 -1, 44, -1, -1, -1, -1, -1, -1, -1, -1,
1490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1491 -1, -1, -1, -1, -1, -1, -1, -1, 260, -1,
1492 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1493 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1494 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1495 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1496 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1497 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1498 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1499 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1500 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1502 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1504 -1, -1, -1, -1, -1, 387, 388, -1, 44, -1,
1505 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1506 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1507 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1508 -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
1509 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1510 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1511 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1512 273, 274, 275, 276, 277, 278, 279, 123, -1, 125,
1513 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1514 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1515 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1516 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1517 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1518 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1519 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1521 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1522 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1523 -1, -1, -1, -1, 387, 388, -1, 44, -1, -1,
1524 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1525 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1526 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1527 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1528 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1529 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1530 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1531 -1, 307, -1, -1, -1, -1, 123, -1, 125, -1,
1532 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1533 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1534 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1535 0, -1, -1, -1, -1, -1, -1, -1, -1, 312,
1536 313, 314, -1, -1, -1, -1, -1, 363, -1, 365,
1537 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1539 -1, 387, 388, -1, 44, -1, -1, -1, 394, 395,
1540 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1541 406, 407, 408, 409, 410, 411, 369, 370, 371, 372,
1542 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1543 -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
1544 -1, 91, -1, -1, -1, -1, -1, 400, 401, -1,
1545 -1, -1, -1, 260, -1, -1, -1, 410, -1, -1,
1546 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1547 277, 278, 279, 123, -1, 125, 283, 284, 285, -1,
1548 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1549 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1550 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1551 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1552 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1553 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1554 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1555 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1556 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1557 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1558 387, 388, -1, 44, -1, -1, -1, 394, 395, 396,
1559 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1560 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1561 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1562 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1563 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1564 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1565 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1566 -1, -1, 123, -1, 125, -1, -1, -1, -1, -1,
1567 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1568 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1569 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1570 -1, -1, -1, -1, -1, -1, 313, 314, -1, -1,
1571 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1572 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1573 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1574 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1575 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1576 410, 411, 369, 370, 371, 372, 373, -1, 375, 376,
1577 377, 378, 379, 380, 381, -1, -1, -1, -1, -1,
1578 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1579 -1, -1, -1, 400, 401, -1, -1, -1, -1, 260,
1580 -1, -1, -1, 410, -1, -1, -1, 268, 269, 270,
1581 271, 272, 273, 274, 275, 276, 277, 278, 279, 123,
1582 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1583 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1584 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1585 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1586 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1587 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1588 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1590 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1591 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1592 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1593 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1594 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1595 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1596 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1597 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1598 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1599 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1600 304, 305, -1, 307, -1, -1, -1, -1, 123, -1,
1601 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1602 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1603 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1604 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1605 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1606 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1607 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1608 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1609 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1610 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1612 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1613 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1614 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1615 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1616 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1617 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1618 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1619 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1620 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1621 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1622 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1623 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1624 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1625 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1627 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1628 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1629 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1630 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1631 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1632 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1633 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1634 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1635 -1, -1, -1, -1, 123, -1, 125, -1, -1, -1,
1636 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1637 -1, 329, 330, 331, 332, -1, 334, 335, 336, -1,
1638 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1639 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1640 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1641 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1642 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1643 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1644 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1645 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1646 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1647 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1648 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1649 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1650 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1651 279, 123, -1, 125, 283, 284, 285, -1, -1, -1,
1652 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1653 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1655 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1656 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1657 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1659 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1660 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1661 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1662 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1663 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1664 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1665 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1666 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1667 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1668 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1669 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1670 123, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1671 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1672 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1673 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1674 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1675 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1677 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1678 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1679 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1681 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1682 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1683 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1684 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1685 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1686 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1687 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1688 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1689 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1690 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1691 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1692 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1694 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1696 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1697 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1698 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1699 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1700 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1701 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1702 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1703 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1704 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1705 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1706 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1707 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1708 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1709 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1712 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1713 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1714 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1717 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1718 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1719 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1720 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1721 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1722 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1723 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1724 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1725 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1726 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1727 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1728 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1730 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1731 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1732 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1733 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1734 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1735 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1736 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1737 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1738 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1739 -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
1740 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1741 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1742 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1744 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1745 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1746 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1747 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1748 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1749 410, 411, -1, -1, -1, -1, -1, -1, -1, -1,
1750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1751 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1752 -1, -1, -1, -1, -1, -1, -1, -1, -1, 260,
1753 -1, -1, -1, -1, -1, -1, -1, 268, 269, 270,
1754 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1755 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1756 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1757 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1759 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1760 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1761 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1763 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1764 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1765 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1766 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1767 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1768 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1769 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1770 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1771 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1772 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1773 304, 305, -1, 307, -1, -1, -1, -1, -1, -1,
1774 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1775 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1776 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1777 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1778 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1779 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1780 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1781 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1782 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1783 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1784 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1785 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1786 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1787 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1788 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1789 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1790 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1791 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1792 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1793 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1794 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1795 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1796 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1797 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1798 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1800 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1801 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1802 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1803 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1804 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1805 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1806 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1807 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1808 -1, -1, -1, -1, -1, -1, 125, -1, -1, -1,
1809 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1810 -1, 329, 330, -1, 332, -1, 334, 335, 336, -1,
1811 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1812 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1813 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1815 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1816 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1817 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1818 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1819 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1820 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1821 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1822 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1823 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1824 279, -1, -1, 125, 283, 284, 285, -1, -1, -1,
1825 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1826 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1828 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1829 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1830 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1832 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1833 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1834 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1835 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1836 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1837 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1838 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1839 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1840 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1841 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1842 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1843 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1844 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1845 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1846 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1848 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1849 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1850 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1851 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1852 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1853 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1854 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1855 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1856 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1857 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1858 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1859 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1860 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1861 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1862 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1863 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1864 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1865 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1866 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1867 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1869 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1870 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1871 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1872 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1873 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1874 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1875 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1876 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1877 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1878 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1879 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1880 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1881 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1882 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1885 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1886 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1887 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1890 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1891 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1892 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1893 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1894 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1895 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1896 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1897 -1, -1, -1, -1, 0, 322, -1, -1, -1, -1,
1898 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1899 -1, -1, 339, 340, -1, 342, 343, 344, 345, -1,
1900 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1901 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1902 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1903 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1904 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1905 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1906 407, 408, 409, 410, 411, 91, -1, -1, -1, -1,
1907 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1908 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1909 -1, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1910 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1911 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1913 -1, 0, 322, -1, -1, -1, -1, -1, -1, 329,
1914 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1915 340, -1, 342, 343, 344, 345, -1, -1, -1, -1,
1916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1917 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1919 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1920 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1921 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1922 410, 411, 91, -1, 40, -1, -1, -1, -1, -1,
1923 -1, -1, -1, -1, 260, -1, -1, 40, -1, -1,
1924 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1925 276, 277, 278, 279, -1, -1, -1, 283, 284, 285,
1926 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1927 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1928 -1, 307, -1, -1, -1, -1, -1, -1, -1, -1,
1929 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1930 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1931 336, -1, -1, 339, 340, -1, 342, -1, 344, -1,
1932 -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
1933 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1935 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1936 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1937 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1938 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1939 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1940 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1941 279, -1, -1, -1, 283, 284, 285, -1, -1, -1,
1942 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1943 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1944 -1, 257, -1, -1, -1, 261, -1, -1, -1, -1,
1945 -1, -1, -1, 322, 257, 258, -1, -1, -1, -1,
1946 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1947 339, 340, -1, 342, -1, 344, -1, -1, -1, -1,
1948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1949 -1, -1, -1, -1, 363, -1, 365, 313, 314, -1,
1950 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1951 313, 314, -1, -1, -1, -1, -1, -1, 387, 388,
1952 91, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1953 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1954 409, 410, 411, -1, 258, -1, -1, -1, -1, -1,
1955 -1, -1, -1, 369, 370, 371, 372, 373, -1, 375,
1956 376, 377, 378, 379, 380, 381, 369, 370, 371, 372,
1957 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1958 -1, -1, -1, -1, 400, 401, -1, -1, 404, 405,
1959 315, 316, -1, -1, 410, -1, -1, 400, 401, 313,
1960 314, 326, 327, 328, -1, -1, -1, 410, -1, -1,
1961 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1962 -1, -1, -1, -1, 349, -1, 351, 352, 353, 354,
1963 355, 356, 357, 358, 359, 360, -1, -1, -1, -1,
1964 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1965 -1, -1, -1, -1, -1, 369, 370, 371, 372, 373,
1966 385, 375, 376, 377, 378, 379, 380, 381, -1, -1,
1967 -1, 396, 397, -1, -1, -1, -1, -1, -1, -1,
1968 -1, -1, -1, -1, -1, -1, 400, 401, -1, 260,
1969 -1, -1, -1, -1, -1, -1, 410, 268, -1, -1,
1970 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1971 -1, -1, 283, 284, 285, -1, -1, -1, 289, 290,
1972 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1973 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1975 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1976 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1977 -1, 342, -1, 344, -1, -1, -1, -1, -1, -1,
1978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1979 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1981 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1982 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1983 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1990 #define YYMAXTOKEN 430
1993 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1994 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,
1995 0,0,0,0,"':'",0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1996 0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",
1997 "'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1998 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1999 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2000 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"CHAR","INTEGER","BOOLEAN","PERCENT",
2001 "SPERCENT","MINUS_INTEGER","PLUS_INTEGER","MAZE_GRID_ID","SOLID_FILL_ID",
2002 "MINES_ID","ROGUELEV_ID","MESSAGE_ID","MAZE_ID","LEVEL_ID","LEV_INIT_ID",
2003 "GEOMETRY_ID","NOMAP_ID","OBJECT_ID","COBJECT_ID","MONSTER_ID","TRAP_ID",
2004 "DOOR_ID","DRAWBRIDGE_ID","object_ID","monster_ID","terrain_ID","MAZEWALK_ID",
2005 "WALLIFY_ID","REGION_ID","FILLING","IRREGULAR","JOINED","ALTAR_ID","LADDER_ID",
2006 "STAIR_ID","NON_DIGGABLE_ID","NON_PASSWALL_ID","ROOM_ID","PORTAL_ID",
2007 "TELEPRT_ID","BRANCH_ID","LEV","MINERALIZE_ID","CORRIDOR_ID","GOLD_ID",
2008 "ENGRAVING_ID","FOUNTAIN_ID","POOL_ID","SINK_ID","NONE","RAND_CORRIDOR_ID",
2009 "DOOR_STATE","LIGHT_STATE","CURSE_TYPE","ENGRAVING_TYPE","DIRECTION",
2010 "RANDOM_TYPE","RANDOM_TYPE_BRACKET","A_REGISTER","ALIGNMENT","LEFT_OR_RIGHT",
2011 "CENTER","TOP_OR_BOT","ALTAR_TYPE","UP_OR_DOWN","SUBROOM_ID","NAME_ID",
2012 "FLAGS_ID","FLAG_TYPE","MON_ATTITUDE","MON_ALERTNESS","MON_APPEARANCE",
2013 "ROOMDOOR_ID","IF_ID","ELSE_ID","TERRAIN_ID","HORIZ_OR_VERT",
2014 "REPLACE_TERRAIN_ID","EXIT_ID","SHUFFLE_ID","QUANTITY_ID","BURIED_ID","LOOP_ID",
2015 "FOR_ID","TO_ID","SWITCH_ID","CASE_ID","BREAK_ID","DEFAULT_ID","ERODED_ID",
2016 "TRAPPED_STATE","RECHARGED_ID","INVIS_ID","GREASED_ID","FEMALE_ID",
2017 "CANCELLED_ID","REVIVED_ID","AVENGE_ID","FLEEING_ID","BLINDED_ID",
2018 "PARALYZED_ID","STUNNED_ID","CONFUSED_ID","SEENTRAPS_ID","ALL_ID","MONTYPE_ID",
2019 "GRAVE_ID","ERODEPROOF_ID","FUNCTION_ID","MSG_OUTPUT_TYPE","COMPARE_TYPE",
2020 "UNKNOWN_TYPE","rect_ID","fillrect_ID","line_ID","randline_ID","grow_ID",
2021 "selection_ID","flood_ID","rndcoord_ID","circle_ID","ellipse_ID","filter_ID",
2022 "complement_ID","gradient_ID","GRADIENT_TYPE","LIMITED","HUMIDITY_TYPE",
2023 "STRING","MAP_ID","NQSTRING","VARSTRING","CFUNC","CFUNC_INT","CFUNC_STR",
2024 "CFUNC_COORD","CFUNC_REGION","VARSTRING_INT","VARSTRING_INT_ARRAY",
2025 "VARSTRING_STRING","VARSTRING_STRING_ARRAY","VARSTRING_VAR",
2026 "VARSTRING_VAR_ARRAY","VARSTRING_COORD","VARSTRING_COORD_ARRAY",
2027 "VARSTRING_REGION","VARSTRING_REGION_ARRAY","VARSTRING_MAPCHAR",
2028 "VARSTRING_MAPCHAR_ARRAY","VARSTRING_MONST","VARSTRING_MONST_ARRAY",
2029 "VARSTRING_OBJ","VARSTRING_OBJ_ARRAY","VARSTRING_SEL","VARSTRING_SEL_ARRAY",
2030 "METHOD_INT","METHOD_INT_ARRAY","METHOD_STRING","METHOD_STRING_ARRAY",
2031 "METHOD_VAR","METHOD_VAR_ARRAY","METHOD_COORD","METHOD_COORD_ARRAY",
2032 "METHOD_REGION","METHOD_REGION_ARRAY","METHOD_MAPCHAR","METHOD_MAPCHAR_ARRAY",
2033 "METHOD_MONST","METHOD_MONST_ARRAY","METHOD_OBJ","METHOD_OBJ_ARRAY",
2034 "METHOD_SEL","METHOD_SEL_ARRAY","DICE",
2041 "levels : level levels",
2042 "level : level_def flags levstatements",
2043 "level_def : LEVEL_ID ':' STRING",
2044 "level_def : MAZE_ID ':' STRING ',' mazefiller",
2045 "mazefiller : RANDOM_TYPE",
2046 "mazefiller : CHAR",
2047 "lev_init : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type",
2048 "lev_init : LEV_INIT_ID ':' MAZE_GRID_ID ',' CHAR",
2049 "lev_init : LEV_INIT_ID ':' ROGUELEV_ID",
2050 "lev_init : LEV_INIT_ID ':' MINES_ID ',' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled opt_fillchar",
2052 "opt_limited : ',' LIMITED",
2053 "opt_coord_or_var :",
2054 "opt_coord_or_var : ',' coord_or_var",
2056 "opt_fillchar : ',' CHAR",
2058 "walled : RANDOM_TYPE",
2060 "flags : FLAGS_ID ':' flag_list",
2061 "flag_list : FLAG_TYPE ',' flag_list",
2062 "flag_list : FLAG_TYPE",
2064 "levstatements : levstatement levstatements",
2065 "stmt_block : '{' levstatements '}'",
2066 "levstatement : message",
2067 "levstatement : lev_init",
2068 "levstatement : altar_detail",
2069 "levstatement : grave_detail",
2070 "levstatement : branch_region",
2071 "levstatement : corridor",
2072 "levstatement : variable_define",
2073 "levstatement : shuffle_detail",
2074 "levstatement : diggable_detail",
2075 "levstatement : door_detail",
2076 "levstatement : drawbridge_detail",
2077 "levstatement : engraving_detail",
2078 "levstatement : mineralize",
2079 "levstatement : fountain_detail",
2080 "levstatement : gold_detail",
2081 "levstatement : switchstatement",
2082 "levstatement : forstatement",
2083 "levstatement : loopstatement",
2084 "levstatement : ifstatement",
2085 "levstatement : chancestatement",
2086 "levstatement : exitstatement",
2087 "levstatement : breakstatement",
2088 "levstatement : function_define",
2089 "levstatement : function_call",
2090 "levstatement : ladder_detail",
2091 "levstatement : map_definition",
2092 "levstatement : mazewalk_detail",
2093 "levstatement : monster_detail",
2094 "levstatement : object_detail",
2095 "levstatement : passwall_detail",
2096 "levstatement : pool_detail",
2097 "levstatement : portal_region",
2098 "levstatement : random_corridors",
2099 "levstatement : region_detail",
2100 "levstatement : room_def",
2101 "levstatement : subroom_def",
2102 "levstatement : sink_detail",
2103 "levstatement : terrain_detail",
2104 "levstatement : replace_terrain_detail",
2105 "levstatement : stair_detail",
2106 "levstatement : stair_region",
2107 "levstatement : teleprt_region",
2108 "levstatement : trap_detail",
2109 "levstatement : wallify_detail",
2110 "any_var_array : VARSTRING_INT_ARRAY",
2111 "any_var_array : VARSTRING_STRING_ARRAY",
2112 "any_var_array : VARSTRING_VAR_ARRAY",
2113 "any_var_array : VARSTRING_COORD_ARRAY",
2114 "any_var_array : VARSTRING_REGION_ARRAY",
2115 "any_var_array : VARSTRING_MAPCHAR_ARRAY",
2116 "any_var_array : VARSTRING_MONST_ARRAY",
2117 "any_var_array : VARSTRING_OBJ_ARRAY",
2118 "any_var_array : VARSTRING_SEL_ARRAY",
2119 "any_var : VARSTRING_INT",
2120 "any_var : VARSTRING_STRING",
2121 "any_var : VARSTRING_VAR",
2122 "any_var : VARSTRING_COORD",
2123 "any_var : VARSTRING_REGION",
2124 "any_var : VARSTRING_MAPCHAR",
2125 "any_var : VARSTRING_MONST",
2126 "any_var : VARSTRING_OBJ",
2127 "any_var : VARSTRING_SEL",
2128 "any_var_or_arr : any_var_array",
2129 "any_var_or_arr : any_var",
2130 "any_var_or_arr : VARSTRING",
2131 "any_var_or_unk : VARSTRING",
2132 "any_var_or_unk : any_var",
2133 "shuffle_detail : SHUFFLE_ID ':' any_var_array",
2134 "variable_define : any_var_or_arr '=' math_expr_var",
2135 "variable_define : any_var_or_arr '=' selection_ID ':' ter_selection",
2136 "variable_define : any_var_or_arr '=' string_expr",
2137 "variable_define : any_var_or_arr '=' terrainid ':' mapchar_or_var",
2138 "variable_define : any_var_or_arr '=' monsterid ':' monster_or_var",
2139 "variable_define : any_var_or_arr '=' objectid ':' object_or_var",
2140 "variable_define : any_var_or_arr '=' coord_or_var",
2141 "variable_define : any_var_or_arr '=' region_or_var",
2142 "variable_define : any_var_or_arr '=' '{' integer_list '}'",
2143 "variable_define : any_var_or_arr '=' '{' encodecoord_list '}'",
2144 "variable_define : any_var_or_arr '=' '{' encoderegion_list '}'",
2145 "variable_define : any_var_or_arr '=' terrainid ':' '{' mapchar_list '}'",
2146 "variable_define : any_var_or_arr '=' monsterid ':' '{' encodemonster_list '}'",
2147 "variable_define : any_var_or_arr '=' objectid ':' '{' encodeobj_list '}'",
2148 "variable_define : any_var_or_arr '=' '{' string_list '}'",
2149 "encodeobj_list : encodeobj",
2150 "encodeobj_list : encodeobj_list ',' encodeobj",
2151 "encodemonster_list : encodemonster",
2152 "encodemonster_list : encodemonster_list ',' encodemonster",
2153 "mapchar_list : mapchar",
2154 "mapchar_list : mapchar_list ',' mapchar",
2155 "encoderegion_list : encoderegion",
2156 "encoderegion_list : encoderegion_list ',' encoderegion",
2157 "encodecoord_list : encodecoord",
2158 "encodecoord_list : encodecoord_list ',' encodecoord",
2159 "integer_list : math_expr_var",
2160 "integer_list : integer_list ',' math_expr_var",
2161 "string_list : string_expr",
2162 "string_list : string_list ',' string_expr",
2165 "function_define : FUNCTION_ID NQSTRING '(' $$1 func_params_list ')' $$2 stmt_block",
2166 "function_call : NQSTRING '(' func_call_params_list ')'",
2167 "exitstatement : EXIT_ID",
2169 "opt_percent : PERCENT",
2170 "comparestmt : PERCENT",
2171 "comparestmt : '[' math_expr_var COMPARE_TYPE math_expr_var ']'",
2172 "comparestmt : '[' math_expr_var ']'",
2175 "switchstatement : SWITCH_ID $$3 '[' integer_or_var ']' $$4 '{' switchcases '}'",
2177 "switchcases : switchcase switchcases",
2179 "switchcase : CASE_ID all_integers ':' $$5 levstatements",
2181 "switchcase : DEFAULT_ID ':' $$6 levstatements",
2182 "breakstatement : BREAK_ID",
2183 "for_to_span : '.' '.'",
2184 "for_to_span : TO_ID",
2185 "forstmt_start : FOR_ID any_var_or_unk '=' math_expr_var for_to_span math_expr_var",
2187 "forstatement : forstmt_start $$7 stmt_block",
2189 "loopstatement : LOOP_ID '[' integer_or_var ']' $$8 stmt_block",
2191 "chancestatement : comparestmt ':' $$9 levstatement",
2193 "ifstatement : IF_ID comparestmt $$10 if_ending",
2194 "if_ending : stmt_block",
2196 "if_ending : stmt_block $$11 ELSE_ID stmt_block",
2197 "message : MESSAGE_ID ':' string_expr",
2198 "random_corridors : RAND_CORRIDOR_ID",
2199 "random_corridors : RAND_CORRIDOR_ID ':' all_integers",
2200 "random_corridors : RAND_CORRIDOR_ID ':' RANDOM_TYPE",
2201 "corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec",
2202 "corridor : CORRIDOR_ID ':' corr_spec ',' all_integers",
2203 "corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'",
2204 "room_begin : room_type opt_percent ',' light_state",
2206 "subroom_def : SUBROOM_ID ':' room_begin ',' subroom_pos ',' room_size optroomregionflags $$12 stmt_block",
2208 "room_def : ROOM_ID ':' room_begin ',' room_pos ',' room_align ',' room_size optroomregionflags $$13 stmt_block",
2210 "roomfill : ',' BOOLEAN",
2211 "room_pos : '(' INTEGER ',' INTEGER ')'",
2212 "room_pos : RANDOM_TYPE",
2213 "subroom_pos : '(' INTEGER ',' INTEGER ')'",
2214 "subroom_pos : RANDOM_TYPE",
2215 "room_align : '(' h_justif ',' v_justif ')'",
2216 "room_align : RANDOM_TYPE",
2217 "room_size : '(' INTEGER ',' INTEGER ')'",
2218 "room_size : RANDOM_TYPE",
2219 "door_detail : ROOMDOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos",
2220 "door_detail : DOOR_ID ':' door_state ',' ter_selection",
2222 "secret : RANDOM_TYPE",
2223 "door_wall : dir_list",
2224 "door_wall : RANDOM_TYPE",
2225 "dir_list : DIRECTION",
2226 "dir_list : DIRECTION '|' dir_list",
2227 "door_pos : INTEGER",
2228 "door_pos : RANDOM_TYPE",
2229 "map_definition : NOMAP_ID",
2230 "map_definition : GEOMETRY_ID ':' h_justif ',' v_justif roomfill MAP_ID",
2231 "map_definition : GEOMETRY_ID ':' coord_or_var roomfill MAP_ID",
2232 "h_justif : LEFT_OR_RIGHT",
2233 "h_justif : CENTER",
2234 "v_justif : TOP_OR_BOT",
2235 "v_justif : CENTER",
2236 "monster_detail : MONSTER_ID ':' monster_desc",
2238 "monster_detail : MONSTER_ID ':' monster_desc $$14 stmt_block",
2239 "monster_desc : monster_or_var ',' coord_or_var monster_infos",
2241 "monster_infos : monster_infos ',' monster_info",
2242 "monster_info : string_expr",
2243 "monster_info : MON_ATTITUDE",
2244 "monster_info : MON_ALERTNESS",
2245 "monster_info : alignment_prfx",
2246 "monster_info : MON_APPEARANCE string_expr",
2247 "monster_info : FEMALE_ID",
2248 "monster_info : INVIS_ID",
2249 "monster_info : CANCELLED_ID",
2250 "monster_info : REVIVED_ID",
2251 "monster_info : AVENGE_ID",
2252 "monster_info : FLEEING_ID ':' integer_or_var",
2253 "monster_info : BLINDED_ID ':' integer_or_var",
2254 "monster_info : PARALYZED_ID ':' integer_or_var",
2255 "monster_info : STUNNED_ID",
2256 "monster_info : CONFUSED_ID",
2257 "monster_info : SEENTRAPS_ID ':' seen_trap_mask",
2258 "seen_trap_mask : STRING",
2259 "seen_trap_mask : ALL_ID",
2260 "seen_trap_mask : STRING '|' seen_trap_mask",
2261 "object_detail : OBJECT_ID ':' object_desc",
2263 "object_detail : COBJECT_ID ':' object_desc $$15 stmt_block",
2264 "object_desc : object_or_var object_infos",
2266 "object_infos : object_infos ',' object_info",
2267 "object_info : CURSE_TYPE",
2268 "object_info : MONTYPE_ID ':' monster_or_var",
2269 "object_info : all_ints_push",
2270 "object_info : NAME_ID ':' string_expr",
2271 "object_info : QUANTITY_ID ':' integer_or_var",
2272 "object_info : BURIED_ID",
2273 "object_info : LIGHT_STATE",
2274 "object_info : ERODED_ID ':' integer_or_var",
2275 "object_info : ERODEPROOF_ID",
2276 "object_info : DOOR_STATE",
2277 "object_info : TRAPPED_STATE",
2278 "object_info : RECHARGED_ID ':' integer_or_var",
2279 "object_info : INVIS_ID",
2280 "object_info : GREASED_ID",
2281 "object_info : coord_or_var",
2282 "trap_detail : TRAP_ID ':' trap_name ',' coord_or_var",
2283 "drawbridge_detail : DRAWBRIDGE_ID ':' coord_or_var ',' DIRECTION ',' door_state",
2284 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION",
2285 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION ',' BOOLEAN opt_fillchar",
2286 "wallify_detail : WALLIFY_ID",
2287 "wallify_detail : WALLIFY_ID ':' ter_selection",
2288 "ladder_detail : LADDER_ID ':' coord_or_var ',' UP_OR_DOWN",
2289 "stair_detail : STAIR_ID ':' coord_or_var ',' UP_OR_DOWN",
2290 "stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN",
2291 "portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' STRING",
2292 "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail",
2293 "branch_region : BRANCH_ID ':' lev_region ',' lev_region",
2295 "teleprt_detail : ',' UP_OR_DOWN",
2296 "fountain_detail : FOUNTAIN_ID ':' ter_selection",
2297 "sink_detail : SINK_ID ':' ter_selection",
2298 "pool_detail : POOL_ID ':' ter_selection",
2299 "terrain_type : CHAR",
2300 "terrain_type : '(' CHAR ',' light_state ')'",
2301 "replace_terrain_detail : REPLACE_TERRAIN_ID ':' region_or_var ',' mapchar_or_var ',' mapchar_or_var ',' SPERCENT",
2302 "terrain_detail : TERRAIN_ID ':' ter_selection ',' mapchar_or_var",
2303 "diggable_detail : NON_DIGGABLE_ID ':' region_or_var",
2304 "passwall_detail : NON_PASSWALL_ID ':' region_or_var",
2306 "region_detail : REGION_ID ':' region_or_var ',' light_state ',' room_type optroomregionflags $$16 region_detail_end",
2307 "region_detail_end :",
2308 "region_detail_end : stmt_block",
2309 "altar_detail : ALTAR_ID ':' coord_or_var ',' alignment ',' altar_type",
2310 "grave_detail : GRAVE_ID ':' coord_or_var ',' string_expr",
2311 "grave_detail : GRAVE_ID ':' coord_or_var ',' RANDOM_TYPE",
2312 "grave_detail : GRAVE_ID ':' coord_or_var",
2313 "gold_detail : GOLD_ID ':' math_expr_var ',' coord_or_var",
2314 "engraving_detail : ENGRAVING_ID ':' coord_or_var ',' engraving_type ',' string_expr",
2315 "mineralize : MINERALIZE_ID ':' integer_or_var ',' integer_or_var ',' integer_or_var ',' integer_or_var",
2316 "mineralize : MINERALIZE_ID",
2317 "trap_name : STRING",
2318 "trap_name : RANDOM_TYPE",
2319 "room_type : STRING",
2320 "room_type : RANDOM_TYPE",
2321 "optroomregionflags :",
2322 "optroomregionflags : ',' roomregionflags",
2323 "roomregionflags : roomregionflag",
2324 "roomregionflags : roomregionflag ',' roomregionflags",
2325 "roomregionflag : FILLING",
2326 "roomregionflag : IRREGULAR",
2327 "roomregionflag : JOINED",
2328 "door_state : DOOR_STATE",
2329 "door_state : RANDOM_TYPE",
2330 "light_state : LIGHT_STATE",
2331 "light_state : RANDOM_TYPE",
2332 "alignment : ALIGNMENT",
2333 "alignment : a_register",
2334 "alignment : RANDOM_TYPE",
2335 "alignment_prfx : ALIGNMENT",
2336 "alignment_prfx : a_register",
2337 "alignment_prfx : A_REGISTER ':' RANDOM_TYPE",
2338 "altar_type : ALTAR_TYPE",
2339 "altar_type : RANDOM_TYPE",
2340 "a_register : A_REGISTER '[' INTEGER ']'",
2341 "string_or_var : STRING",
2342 "string_or_var : VARSTRING_STRING",
2343 "string_or_var : VARSTRING_STRING_ARRAY '[' math_expr_var ']'",
2344 "integer_or_var : math_expr_var",
2345 "coord_or_var : encodecoord",
2346 "coord_or_var : rndcoord_ID '(' ter_selection ')'",
2347 "coord_or_var : VARSTRING_COORD",
2348 "coord_or_var : VARSTRING_COORD_ARRAY '[' math_expr_var ']'",
2349 "encodecoord : '(' INTEGER ',' INTEGER ')'",
2350 "encodecoord : RANDOM_TYPE",
2351 "encodecoord : RANDOM_TYPE_BRACKET humidity_flags ']'",
2352 "humidity_flags : HUMIDITY_TYPE",
2353 "humidity_flags : HUMIDITY_TYPE ',' humidity_flags",
2354 "region_or_var : encoderegion",
2355 "region_or_var : VARSTRING_REGION",
2356 "region_or_var : VARSTRING_REGION_ARRAY '[' math_expr_var ']'",
2357 "encoderegion : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2358 "mapchar_or_var : mapchar",
2359 "mapchar_or_var : VARSTRING_MAPCHAR",
2360 "mapchar_or_var : VARSTRING_MAPCHAR_ARRAY '[' math_expr_var ']'",
2362 "mapchar : '(' CHAR ',' light_state ')'",
2363 "monster_or_var : encodemonster",
2364 "monster_or_var : VARSTRING_MONST",
2365 "monster_or_var : VARSTRING_MONST_ARRAY '[' math_expr_var ']'",
2366 "encodemonster : STRING",
2367 "encodemonster : CHAR",
2368 "encodemonster : '(' CHAR ',' STRING ')'",
2369 "encodemonster : RANDOM_TYPE",
2370 "object_or_var : encodeobj",
2371 "object_or_var : VARSTRING_OBJ",
2372 "object_or_var : VARSTRING_OBJ_ARRAY '[' math_expr_var ']'",
2373 "encodeobj : STRING",
2375 "encodeobj : '(' CHAR ',' STRING ')'",
2376 "encodeobj : RANDOM_TYPE",
2377 "string_expr : string_or_var",
2378 "string_expr : string_expr '.' string_or_var",
2379 "math_expr_var : INTEGER",
2380 "math_expr_var : dice",
2381 "math_expr_var : '(' MINUS_INTEGER ')'",
2382 "math_expr_var : VARSTRING_INT",
2383 "math_expr_var : VARSTRING_INT_ARRAY '[' math_expr_var ']'",
2384 "math_expr_var : math_expr_var '+' math_expr_var",
2385 "math_expr_var : math_expr_var '-' math_expr_var",
2386 "math_expr_var : math_expr_var '*' math_expr_var",
2387 "math_expr_var : math_expr_var '/' math_expr_var",
2388 "math_expr_var : math_expr_var '%' math_expr_var",
2389 "math_expr_var : '(' math_expr_var ')'",
2390 "func_param_type : CFUNC_INT",
2391 "func_param_type : CFUNC_STR",
2392 "func_param_part : any_var_or_arr ':' func_param_type",
2393 "func_param_list : func_param_part",
2394 "func_param_list : func_param_list ',' func_param_part",
2395 "func_params_list :",
2396 "func_params_list : func_param_list",
2397 "func_call_param_part : math_expr_var",
2398 "func_call_param_part : string_expr",
2399 "func_call_param_list : func_call_param_part",
2400 "func_call_param_list : func_call_param_list ',' func_call_param_part",
2401 "func_call_params_list :",
2402 "func_call_params_list : func_call_param_list",
2403 "ter_selection_x : coord_or_var",
2404 "ter_selection_x : rect_ID region_or_var",
2405 "ter_selection_x : fillrect_ID region_or_var",
2406 "ter_selection_x : line_ID coord_or_var ',' coord_or_var",
2407 "ter_selection_x : randline_ID coord_or_var ',' coord_or_var ',' math_expr_var",
2408 "ter_selection_x : grow_ID '(' ter_selection ')'",
2409 "ter_selection_x : grow_ID '(' dir_list ',' ter_selection ')'",
2410 "ter_selection_x : filter_ID '(' SPERCENT ',' ter_selection ')'",
2411 "ter_selection_x : filter_ID '(' ter_selection ',' ter_selection ')'",
2412 "ter_selection_x : filter_ID '(' mapchar_or_var ',' ter_selection ')'",
2413 "ter_selection_x : flood_ID coord_or_var",
2414 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ')'",
2415 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ',' FILLING ')'",
2416 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ')'",
2417 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ',' FILLING ')'",
2418 "ter_selection_x : gradient_ID '(' GRADIENT_TYPE ',' '(' math_expr_var '-' math_expr_var opt_limited ')' ',' coord_or_var opt_coord_or_var ')'",
2419 "ter_selection_x : complement_ID ter_selection_x",
2420 "ter_selection_x : VARSTRING_SEL",
2421 "ter_selection_x : '(' ter_selection ')'",
2422 "ter_selection : ter_selection_x",
2423 "ter_selection : ter_selection_x '&' ter_selection",
2425 "all_integers : MINUS_INTEGER",
2426 "all_integers : PLUS_INTEGER",
2427 "all_integers : INTEGER",
2428 "all_ints_push : MINUS_INTEGER",
2429 "all_ints_push : PLUS_INTEGER",
2430 "all_ints_push : INTEGER",
2431 "all_ints_push : dice",
2432 "objectid : object_ID",
2433 "objectid : OBJECT_ID",
2434 "monsterid : monster_ID",
2435 "monsterid : MONSTER_ID",
2436 "terrainid : terrain_ID",
2437 "terrainid : TERRAIN_ID",
2438 "engraving_type : ENGRAVING_TYPE",
2439 "engraving_type : RANDOM_TYPE",
2440 "lev_region : region",
2441 "lev_region : LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2442 "region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2447 #define YYMAXDEPTH YYSTACKSIZE
2450 #define YYSTACKSIZE YYMAXDEPTH
2452 #define YYSTACKSIZE 500
2453 #define YYMAXDEPTH 500
2464 short yyss[YYSTACKSIZE];
2465 YYSTYPE yyvs[YYSTACKSIZE];
2466 #define yystacksize YYSTACKSIZE
2469 #define YYABORT goto yyabort
2470 #define YYREJECT goto yyabort
2471 #define YYACCEPT goto yyaccept
2472 #define YYERROR goto yyerrlab
2476 register int yym, yyn, yystate;
2479 extern char *getenv();
2481 if ((yys = getenv("YYDEBUG")) != 0)
2484 if (yyn >= '0' && yyn <= '9')
2485 yydebug = yyn - '0';
2495 *yyssp = yystate = 0;
2498 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
2501 if ((yychar = yylex()) < 0) yychar = 0;
2506 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2507 if (!yys) yys = "illegal-symbol";
2508 printf("%sdebug: state %d, reading %d (%s)\n",
2509 YYPREFIX, yystate, yychar, yys);
2513 if ((yyn = yysindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2514 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2518 printf("%sdebug: state %d, shifting to state %d\n",
2519 YYPREFIX, yystate, yytable[yyn]);
2521 if (yyssp >= yyss + yystacksize - 1)
2525 *++yyssp = yystate = yytable[yyn];
2528 if (yyerrflag > 0) --yyerrflag;
2531 if ((yyn = yyrindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2532 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2537 if (yyerrflag) goto yyinrecovery;
2540 yyerror("syntax error");
2550 if ((yyn = yysindex[*yyssp]) != 0 && (yyn += YYERRCODE) >= 0 &&
2551 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
2555 printf("%sdebug: state %d, error recovery shifting\
2556 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
2558 if (yyssp >= yyss + yystacksize - 1)
2562 *++yyssp = yystate = yytable[yyn];
2570 printf("%sdebug: error recovery discarding state %d\n",
2573 if (yyssp <= yyss) goto yyabort;
2581 if (yychar == 0) goto yyabort;
2586 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2587 if (!yys) yys = "illegal-symbol";
2588 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2589 YYPREFIX, yystate, yychar, yys);
2598 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2599 YYPREFIX, yystate, yyn, yyrule[yyn]);
2602 yyval = yyvsp[1-yym];
2607 if (fatal_error > 0) {
2608 (void) fprintf(stderr,
2609 "%s: %d errors detected for level \"%s\". No output created!\n",
2610 fname, fatal_error, yyvsp[-2].map);
2613 } else if (!got_errors) {
2614 if (!write_level_file(yyvsp[-2].map, splev)) {
2615 lc_error("Can't write output file for '%s'!",
2620 Free(yyvsp[-2].map);
2623 vardef_free_all(vardefs);
2629 start_level_def(&splev, yyvsp[0].map);
2630 yyval.map = yyvsp[0].map;
2635 start_level_def(&splev, yyvsp[-2].map);
2636 if (yyvsp[0].i == -1) {
2637 add_opvars(splev, "iiiiiiiio",
2638 VA_PASS9(LVLINIT_MAZEGRID, HWALL, 0,0,
2639 0,0,0,0, SPO_INITLEVEL));
2641 int bg = (int) what_map_char((char) yyvsp[0].i);
2643 add_opvars(splev, "iiiiiiiio",
2644 VA_PASS9(LVLINIT_SOLIDFILL, bg, 0,0,
2645 0,0,0,0, SPO_INITLEVEL));
2647 add_opvars(splev, "io",
2648 VA_PASS2(MAZELEVEL, SPO_LEVEL_FLAGS));
2649 max_x_map = COLNO-1;
2651 yyval.map = yyvsp[-2].map;
2661 yyval.i = what_map_char((char) yyvsp[0].i);
2666 int filling = (int) yyvsp[0].terr.ter;
2668 if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2669 lc_error("INIT_MAP: Invalid fill char type.");
2670 add_opvars(splev, "iiiiiiiio",
2671 VA_PASS9(LVLINIT_SOLIDFILL, filling,
2672 0, (int) yyvsp[0].terr.lit,
2673 0,0,0,0, SPO_INITLEVEL));
2674 max_x_map = COLNO-1;
2680 int filling = (int) what_map_char((char) yyvsp[0].i);
2682 if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2683 lc_error("INIT_MAP: Invalid fill char type.");
2684 add_opvars(splev, "iiiiiiiio",
2685 VA_PASS9(LVLINIT_MAZEGRID, filling, 0,0,
2686 0,0,0,0, SPO_INITLEVEL));
2687 max_x_map = COLNO-1;
2693 add_opvars(splev, "iiiiiiiio",
2694 VA_PASS9(LVLINIT_ROGUE,0,0,0,
2695 0,0,0,0, SPO_INITLEVEL));
2700 int fg = (int) what_map_char((char) yyvsp[-11].i),
2701 bg = (int) what_map_char((char) yyvsp[-9].i);
2702 int smoothed = (int) yyvsp[-7].i,
2703 joined = (int) yyvsp[-5].i,
2704 lit = (int) yyvsp[-3].i,
2705 walled = (int) yyvsp[-1].i,
2706 filling = (int) yyvsp[0].i;
2708 if (fg == INVALID_TYPE || fg >= MAX_TYPE)
2709 lc_error("INIT_MAP: Invalid foreground type.");
2710 if (bg == INVALID_TYPE || bg >= MAX_TYPE)
2711 lc_error("INIT_MAP: Invalid background type.");
2712 if (joined && fg != CORR && fg != ROOM)
2713 lc_error("INIT_MAP: Invalid foreground type for joined map.");
2715 if (filling == INVALID_TYPE)
2716 lc_error("INIT_MAP: Invalid fill char type.");
2718 add_opvars(splev, "iiiiiiiio",
2719 VA_PASS9(LVLINIT_MINES, filling, walled, lit,
2720 joined, smoothed, bg, fg,
2722 max_x_map = COLNO-1;
2733 yyval.i = yyvsp[0].i;
2738 add_opvars(splev, "o", VA_PASS1(SPO_COPY));
2754 yyval.i = what_map_char((char) yyvsp[0].i);
2759 add_opvars(splev, "io", VA_PASS2(0, SPO_LEVEL_FLAGS));
2764 add_opvars(splev, "io",
2765 VA_PASS2((int) yyvsp[0].i, SPO_LEVEL_FLAGS));
2770 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
2775 yyval.i = yyvsp[0].i;
2785 yyval.i = 1 + yyvsp[0].i;
2790 yyval.i = yyvsp[-1].i;
2795 struct lc_vardefs *vd;
2797 if ((vd = vardef_defined(vardefs, yyvsp[0].map, 1))) {
2798 if (!(vd->var_type & SPOVAR_ARRAY))
2799 lc_error("Trying to shuffle non-array variable '%s'",
2802 lc_error("Trying to shuffle undefined variable '%s'",
2804 add_opvars(splev, "so", VA_PASS2(yyvsp[0].map, SPO_SHUFFLE_ARRAY));
2810 vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_INT);
2811 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2812 Free(yyvsp[-2].map);
2817 vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_SEL);
2818 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2819 Free(yyvsp[-4].map);
2824 vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_STRING);
2825 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2826 Free(yyvsp[-2].map);
2831 vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_MAPCHAR);
2832 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2833 Free(yyvsp[-4].map);
2838 vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_MONST);
2839 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2840 Free(yyvsp[-4].map);
2845 vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_OBJ);
2846 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2847 Free(yyvsp[-4].map);
2852 vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_COORD);
2853 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2854 Free(yyvsp[-2].map);
2859 vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_REGION);
2860 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2861 Free(yyvsp[-2].map);
2866 int n_items = (int) yyvsp[-1].i;
2868 vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
2869 SPOVAR_INT | SPOVAR_ARRAY);
2870 add_opvars(splev, "iso",
2871 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2872 Free(yyvsp[-4].map);
2877 int n_items = (int) yyvsp[-1].i;
2879 vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
2880 SPOVAR_COORD | SPOVAR_ARRAY);
2881 add_opvars(splev, "iso",
2882 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2883 Free(yyvsp[-4].map);
2888 int n_items = (int) yyvsp[-1].i;
2890 vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
2891 SPOVAR_REGION | SPOVAR_ARRAY);
2892 add_opvars(splev, "iso",
2893 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2894 Free(yyvsp[-4].map);
2899 int n_items = (int) yyvsp[-1].i;
2901 vardefs = add_vardef_type(vardefs, yyvsp[-6].map,
2902 SPOVAR_MAPCHAR | SPOVAR_ARRAY);
2903 add_opvars(splev, "iso",
2904 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2905 Free(yyvsp[-6].map);
2910 int n_items = (int) yyvsp[-1].i;
2912 vardefs = add_vardef_type(vardefs, yyvsp[-6].map,
2913 SPOVAR_MONST | SPOVAR_ARRAY);
2914 add_opvars(splev, "iso",
2915 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2916 Free(yyvsp[-6].map);
2921 int n_items = (int) yyvsp[-1].i;
2923 vardefs = add_vardef_type(vardefs, yyvsp[-6].map,
2924 SPOVAR_OBJ | SPOVAR_ARRAY);
2925 add_opvars(splev, "iso",
2926 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2927 Free(yyvsp[-6].map);
2932 int n_items = (int) yyvsp[-1].i;
2934 vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
2935 SPOVAR_STRING | SPOVAR_ARRAY);
2936 add_opvars(splev, "iso",
2937 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2938 Free(yyvsp[-4].map);
2943 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2949 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2950 yyval.i = 1 + yyvsp[-2].i;
2955 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2961 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2962 yyval.i = 1 + yyvsp[-2].i;
2967 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2973 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2974 yyval.i = 1 + yyvsp[-2].i;
2984 yyval.i = 1 + yyvsp[-2].i;
2989 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2995 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2996 yyval.i = 1 + yyvsp[-2].i;
3006 yyval.i = 1 + yyvsp[-2].i;
3016 yyval.i = 1 + yyvsp[-2].i;
3021 struct lc_funcdefs *funcdef;
3023 if (in_function_definition)
3024 lc_error("Recursively defined functions not allowed (function %s).", yyvsp[-1].map);
3026 in_function_definition++;
3028 if (funcdef_defined(function_definitions, yyvsp[-1].map, 1))
3029 lc_error("Function '%s' already defined once.", yyvsp[-1].map);
3031 funcdef = funcdef_new(-1, yyvsp[-1].map);
3032 funcdef->next = function_definitions;
3033 function_definitions = funcdef;
3034 function_splev_backup = splev;
3035 splev = &(funcdef->code);
3036 Free(yyvsp[-1].map);
3037 curr_function = funcdef;
3038 function_tmp_var_defs = vardefs;
3049 add_opvars(splev, "io", VA_PASS2(0, SPO_RETURN));
3050 splev = function_splev_backup;
3051 in_function_definition--;
3052 curr_function = NULL;
3053 vardef_free_all(vardefs);
3054 vardefs = function_tmp_var_defs;
3059 struct lc_funcdefs *tmpfunc;
3061 tmpfunc = funcdef_defined(function_definitions, yyvsp[-3].map, 1);
3064 int nparams = (int) strlen(yyvsp[-1].map);
3065 char *fparamstr = funcdef_paramtypes(tmpfunc);
3067 if (strcmp(yyvsp[-1].map, fparamstr)) {
3068 char *tmps = strdup(decode_parm_str(fparamstr));
3070 lc_error("Function '%s' requires params '%s', got '%s' instead.",
3071 yyvsp[-3].map, tmps, decode_parm_str(yyvsp[-1].map));
3075 Free(yyvsp[-1].map);
3076 if (!(tmpfunc->n_called)) {
3077 /* we haven't called the function yet, so insert it in the code */
3078 struct opvar *jmp = New(struct opvar);
3080 set_opvar_int(jmp, splev->n_opcodes+1);
3081 add_opcode(splev, SPO_PUSH, jmp);
3082 /* we must jump past it first, then CALL it, due to RETURN. */
3083 add_opcode(splev, SPO_JMP, NULL);
3085 tmpfunc->addr = splev->n_opcodes;
3087 { /* init function parameter variables */
3088 struct lc_funcdefs_parm *tfp = tmpfunc->params;
3090 add_opvars(splev, "iso",
3091 VA_PASS3(0, tfp->name,
3097 splev_add_from(splev, &(tmpfunc->code));
3099 splev->n_opcodes - jmp->vardata.l);
3101 l = (int) (tmpfunc->addr - splev->n_opcodes - 2);
3102 add_opvars(splev, "iio",
3103 VA_PASS3(nparams, l, SPO_CALL));
3104 tmpfunc->n_called++;
3106 lc_error("Function '%s' not defined.", yyvsp[-3].map);
3108 Free(yyvsp[-3].map);
3113 add_opcode(splev, SPO_EXIT, NULL);
3123 yyval.i = yyvsp[0].i;
3128 /* val > rn2(100) */
3129 add_opvars(splev, "iio",
3130 VA_PASS3((int) yyvsp[0].i, 100, SPO_RN2));
3136 yyval.i = yyvsp[-2].i;
3141 /* boolean, explicit foo != 0 */
3142 add_opvars(splev, "i", VA_PASS1(0));
3148 is_inconstant_number = 0;
3153 struct opvar *chkjmp;
3155 if (in_switch_statement > 0)
3156 lc_error("Cannot nest switch-statements.");
3158 in_switch_statement++;
3160 n_switch_case_list = 0;
3161 switch_default_case = NULL;
3163 if (!is_inconstant_number)
3164 add_opvars(splev, "o", VA_PASS1(SPO_RN2));
3165 is_inconstant_number = 0;
3167 chkjmp = New(struct opvar);
3168 set_opvar_int(chkjmp, splev->n_opcodes+1);
3169 switch_check_jump = chkjmp;
3170 add_opcode(splev, SPO_PUSH, chkjmp);
3171 add_opcode(splev, SPO_JMP, NULL);
3177 struct opvar *endjump = New(struct opvar);
3180 set_opvar_int(endjump, splev->n_opcodes+1);
3182 add_opcode(splev, SPO_PUSH, endjump);
3183 add_opcode(splev, SPO_JMP, NULL);
3185 set_opvar_int(switch_check_jump,
3186 splev->n_opcodes - switch_check_jump->vardata.l);
3188 for (i = 0; i < n_switch_case_list; i++) {
3189 add_opvars(splev, "oio",
3191 switch_case_value[i], SPO_CMP));
3192 set_opvar_int(switch_case_list[i],
3193 switch_case_list[i]->vardata.l - splev->n_opcodes-1);
3194 add_opcode(splev, SPO_PUSH, switch_case_list[i]);
3195 add_opcode(splev, SPO_JE, NULL);
3198 if (switch_default_case) {
3199 set_opvar_int(switch_default_case,
3200 switch_default_case->vardata.l - splev->n_opcodes-1);
3201 add_opcode(splev, SPO_PUSH, switch_default_case);
3202 add_opcode(splev, SPO_JMP, NULL);
3205 set_opvar_int(endjump, splev->n_opcodes - endjump->vardata.l);
3207 break_stmt_end(splev);
3209 add_opcode(splev, SPO_POP, NULL); /* get rid of the value in stack */
3210 in_switch_statement--;
3217 if (n_switch_case_list < MAX_SWITCH_CASES) {
3218 struct opvar *tmppush = New(struct opvar);
3220 set_opvar_int(tmppush, splev->n_opcodes);
3221 switch_case_value[n_switch_case_list] = yyvsp[-1].i;
3222 switch_case_list[n_switch_case_list++] = tmppush;
3223 } else lc_error("Too many cases in a switch.");
3232 struct opvar *tmppush = New(struct opvar);
3234 if (switch_default_case)
3235 lc_error("Switch default case already used.");
3237 set_opvar_int(tmppush, splev->n_opcodes);
3238 switch_default_case = tmppush;
3247 if (!allow_break_statements)
3248 lc_error("Cannot use BREAK outside a statement block.");
3250 break_stmt_new(splev, splev->n_opcodes);
3256 char buf[256], buf2[256];
3258 if (n_forloops >= MAX_NESTED_IFS) {
3259 lc_error("FOR: Too deeply nested loops.");
3260 n_forloops = MAX_NESTED_IFS - 1;
3263 /* first, define a variable for the for-loop end value */
3264 Sprintf(buf, "%s end", yyvsp[-4].map);
3265 /* the value of which is already in stack (the 2nd math_expr) */
3266 add_opvars(splev, "iso", VA_PASS3(0, buf, SPO_VAR_INIT));
3268 vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_INT);
3269 /* define the for-loop variable. value is in stack (1st math_expr) */
3270 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
3272 /* calculate value for the loop "step" variable */
3273 Sprintf(buf2, "%s step", yyvsp[-4].map);
3275 add_opvars(splev, "vvo",
3276 VA_PASS3(buf, yyvsp[-4].map, SPO_MATH_SUB));
3278 add_opvars(splev, "o", VA_PASS1(SPO_MATH_SIGN));
3279 /* save the sign into the step var */
3280 add_opvars(splev, "iso",
3281 VA_PASS3(0, buf2, SPO_VAR_INIT));
3283 forloop_list[n_forloops].varname = strdup(yyvsp[-4].map);
3284 forloop_list[n_forloops].jmp_point = splev->n_opcodes;
3287 Free(yyvsp[-4].map);
3299 char buf[256], buf2[256];
3302 Sprintf(buf, "%s step", forloop_list[n_forloops].varname);
3303 Sprintf(buf2, "%s end", forloop_list[n_forloops].varname);
3304 /* compare for-loop var to end value */
3305 add_opvars(splev, "vvo",
3306 VA_PASS3(forloop_list[n_forloops].varname,
3309 add_opvars(splev, "vvo",
3310 VA_PASS3(buf, forloop_list[n_forloops].varname,
3312 /* for-loop var = (for-loop var + step) */
3313 add_opvars(splev, "iso",
3314 VA_PASS3(0, forloop_list[n_forloops].varname,
3316 /* jump back if compared values were not equal */
3317 l = (int) (forloop_list[n_forloops].jmp_point
3318 - splev->n_opcodes - 1);
3319 add_opvars(splev, "io", VA_PASS2(l, SPO_JNE));
3320 Free(forloop_list[n_forloops].varname);
3321 break_stmt_end(splev);
3326 struct opvar *tmppush = New(struct opvar);
3328 if (n_if_list >= MAX_NESTED_IFS) {
3329 lc_error("LOOP: Too deeply nested conditionals.");
3330 n_if_list = MAX_NESTED_IFS - 1;
3332 set_opvar_int(tmppush, splev->n_opcodes);
3333 if_list[n_if_list++] = tmppush;
3335 add_opvars(splev, "o", VA_PASS1(SPO_DEC));
3341 struct opvar *tmppush;
3343 add_opvars(splev, "oio", VA_PASS3(SPO_COPY, 0, SPO_CMP));
3345 tmppush = (struct opvar *) if_list[--n_if_list];
3346 set_opvar_int(tmppush,
3347 tmppush->vardata.l - splev->n_opcodes-1);
3348 add_opcode(splev, SPO_PUSH, tmppush);
3349 add_opcode(splev, SPO_JG, NULL);
3350 add_opcode(splev, SPO_POP, NULL); /* discard count */
3351 break_stmt_end(splev);
3356 struct opvar *tmppush2 = New(struct opvar);
3358 if (n_if_list >= MAX_NESTED_IFS) {
3359 lc_error("IF: Too deeply nested conditionals.");
3360 n_if_list = MAX_NESTED_IFS - 1;
3363 add_opcode(splev, SPO_CMP, NULL);
3365 set_opvar_int(tmppush2, splev->n_opcodes+1);
3367 if_list[n_if_list++] = tmppush2;
3369 add_opcode(splev, SPO_PUSH, tmppush2);
3371 add_opcode(splev, reverse_jmp_opcode( yyvsp[-1].i ), NULL);
3377 if (n_if_list > 0) {
3378 struct opvar *tmppush;
3380 tmppush = (struct opvar *) if_list[--n_if_list];
3381 set_opvar_int(tmppush,
3382 splev->n_opcodes - tmppush->vardata.l);
3383 } else lc_error("IF: Huh?! No start address?");
3388 struct opvar *tmppush2 = New(struct opvar);
3390 if (n_if_list >= MAX_NESTED_IFS) {
3391 lc_error("IF: Too deeply nested conditionals.");
3392 n_if_list = MAX_NESTED_IFS - 1;
3395 add_opcode(splev, SPO_CMP, NULL);
3397 set_opvar_int(tmppush2, splev->n_opcodes+1);
3399 if_list[n_if_list++] = tmppush2;
3401 add_opcode(splev, SPO_PUSH, tmppush2);
3403 add_opcode(splev, reverse_jmp_opcode( yyvsp[0].i ), NULL);
3414 if (n_if_list > 0) {
3415 struct opvar *tmppush;
3417 tmppush = (struct opvar *) if_list[--n_if_list];
3418 set_opvar_int(tmppush,
3419 splev->n_opcodes - tmppush->vardata.l);
3420 } else lc_error("IF: Huh?! No start address?");
3425 if (n_if_list > 0) {
3426 struct opvar *tmppush = New(struct opvar);
3427 struct opvar *tmppush2;
3429 set_opvar_int(tmppush, splev->n_opcodes+1);
3430 add_opcode(splev, SPO_PUSH, tmppush);
3432 add_opcode(splev, SPO_JMP, NULL);
3434 tmppush2 = (struct opvar *) if_list[--n_if_list];
3436 set_opvar_int(tmppush2,
3437 splev->n_opcodes - tmppush2->vardata.l);
3438 if_list[n_if_list++] = tmppush;
3439 } else lc_error("IF: Huh?! No else-part address?");
3444 if (n_if_list > 0) {
3445 struct opvar *tmppush;
3446 tmppush = (struct opvar *) if_list[--n_if_list];
3447 set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3448 } else lc_error("IF: Huh?! No end address?");
3453 add_opvars(splev, "o", VA_PASS1(SPO_MESSAGE));
3458 add_opvars(splev, "iiiiiio",
3459 VA_PASS7(-1, 0, -1, -1, -1, -1, SPO_CORRIDOR));
3464 add_opvars(splev, "iiiiiio",
3465 VA_PASS7(-1, yyvsp[0].i, -1, -1, -1, -1, SPO_CORRIDOR));
3470 add_opvars(splev, "iiiiiio",
3471 VA_PASS7(-1, -1, -1, -1, -1, -1, SPO_CORRIDOR));
3476 add_opvars(splev, "iiiiiio",
3477 VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3478 yyvsp[0].corpos.room, yyvsp[0].corpos.door, yyvsp[0].corpos.wall,
3484 add_opvars(splev, "iiiiiio",
3485 VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3486 -1, -1, (long)yyvsp[0].i,
3492 yyval.corpos.room = yyvsp[-5].i;
3493 yyval.corpos.wall = yyvsp[-3].i;
3494 yyval.corpos.door = yyvsp[-1].i;
3499 if ((yyvsp[-2].i < 100) && (yyvsp[-3].i == OROOM))
3500 lc_error("Only typed rooms can have a chance.");
3502 add_opvars(splev, "iii",
3503 VA_PASS3((long)yyvsp[-3].i, (long)yyvsp[-2].i, (long)yyvsp[0].i));
3509 long rflags = yyvsp[0].i;
3511 if (rflags == -1) rflags = (1 << 0);
3512 add_opvars(splev, "iiiiiiio",
3513 VA_PASS8(rflags, ERR, ERR,
3514 yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-1].sze.width, yyvsp[-1].sze.height,
3521 break_stmt_end(splev);
3522 add_opcode(splev, SPO_ENDROOM, NULL);
3527 long rflags = yyvsp[-2].i;
3529 if (rflags == -1) rflags = (1 << 0);
3530 add_opvars(splev, "iiiiiiio",
3532 yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-5].crd.x, yyvsp[-5].crd.y,
3533 yyvsp[-1].sze.width, yyvsp[-1].sze.height, SPO_ROOM));
3539 break_stmt_end(splev);
3540 add_opcode(splev, SPO_ENDROOM, NULL);
3550 yyval.i = yyvsp[0].i;
3555 if ( yyvsp[-3].i < 1 || yyvsp[-3].i > 5 ||
3556 yyvsp[-1].i < 1 || yyvsp[-1].i > 5 ) {
3557 lc_error("Room positions should be between 1-5: (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3559 yyval.crd.x = yyvsp[-3].i;
3560 yyval.crd.y = yyvsp[-1].i;
3566 yyval.crd.x = yyval.crd.y = ERR;
3571 if ( yyvsp[-3].i < 0 || yyvsp[-1].i < 0) {
3572 lc_error("Invalid subroom position (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3574 yyval.crd.x = yyvsp[-3].i;
3575 yyval.crd.y = yyvsp[-1].i;
3581 yyval.crd.x = yyval.crd.y = ERR;
3586 yyval.crd.x = yyvsp[-3].i;
3587 yyval.crd.y = yyvsp[-1].i;
3592 yyval.crd.x = yyval.crd.y = ERR;
3597 yyval.sze.width = yyvsp[-3].i;
3598 yyval.sze.height = yyvsp[-1].i;
3603 yyval.sze.height = yyval.sze.width = ERR;
3608 /* ERR means random here */
3609 if (yyvsp[-2].i == ERR && yyvsp[0].i != ERR) {
3610 lc_error("If the door wall is random, so must be its pos!");
3612 add_opvars(splev, "iiiio",
3613 VA_PASS5((long)yyvsp[0].i, (long)yyvsp[-4].i, (long)yyvsp[-6].i,
3614 (long)yyvsp[-2].i, SPO_ROOM_DOOR));
3620 add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_DOOR));
3625 yyval.i = yyvsp[0].i;
3630 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
3635 add_opvars(splev, "ciisiio",
3636 VA_PASS7(0, 0, 1, (char *) 0, 0, 0, SPO_MAP));
3637 max_x_map = COLNO-1;
3643 add_opvars(splev, "cii",
3644 VA_PASS3(SP_COORD_PACK((yyvsp[-4].i), (yyvsp[-2].i)),
3645 1, (int) yyvsp[-1].i));
3646 scan_map(yyvsp[0].map, splev);
3652 add_opvars(splev, "ii", VA_PASS2(2, (int) yyvsp[-1].i));
3653 scan_map(yyvsp[0].map, splev);
3659 add_opvars(splev, "io", VA_PASS2(0, SPO_MONSTER));
3664 add_opvars(splev, "io", VA_PASS2(1, SPO_MONSTER));
3671 break_stmt_end(splev);
3673 add_opvars(splev, "o", VA_PASS1(SPO_END_MONINVENT));
3683 struct opvar *stopit = New(struct opvar);
3685 set_opvar_int(stopit, SP_M_V_END);
3686 add_opcode(splev, SPO_PUSH, stopit);
3692 if (( yyvsp[-2].i & yyvsp[0].i ))
3693 lc_error("MONSTER extra info defined twice.");
3694 yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3699 add_opvars(splev, "i", VA_PASS1(SP_M_V_NAME));
3705 add_opvars(splev, "ii",
3706 VA_PASS2((int) yyvsp[0].i, SP_M_V_PEACEFUL));
3712 add_opvars(splev, "ii",
3713 VA_PASS2((int) yyvsp[0].i, SP_M_V_ASLEEP));
3719 add_opvars(splev, "ii",
3720 VA_PASS2((int) yyvsp[0].i, SP_M_V_ALIGN));
3726 add_opvars(splev, "ii",
3727 VA_PASS2((int) yyvsp[-1].i, SP_M_V_APPEAR));
3733 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_FEMALE));
3739 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_INVIS));
3745 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CANCELLED));
3751 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_REVIVED));
3757 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_AVENGE));
3763 add_opvars(splev, "i", VA_PASS1(SP_M_V_FLEEING));
3769 add_opvars(splev, "i", VA_PASS1(SP_M_V_BLINDED));
3775 add_opvars(splev, "i", VA_PASS1(SP_M_V_PARALYZED));
3781 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_STUNNED));
3787 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CONFUSED));
3793 add_opvars(splev, "ii",
3794 VA_PASS2((int) yyvsp[0].i, SP_M_V_SEENTRAPS));
3800 int token = get_trap_type(yyvsp[0].map);
3802 if (token == ERR || token == 0)
3803 lc_error("Unknown trap type '%s'!", yyvsp[0].map);
3805 yyval.i = (1L << (token - 1));
3810 yyval.i = (long) ~0;
3815 int token = get_trap_type(yyvsp[-2].map);
3816 if (token == ERR || token == 0)
3817 lc_error("Unknown trap type '%s'!", yyvsp[-2].map);
3819 if ((1L << (token - 1)) & yyvsp[0].i)
3820 lc_error("Monster seen_traps, trap '%s' listed twice.", yyvsp[-2].map);
3821 Free(yyvsp[-2].map);
3822 yyval.i = ((1L << (token - 1)) | yyvsp[0].i);
3829 if (in_container_obj)
3830 cnt |= SP_OBJ_CONTENT;
3831 add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3836 int cnt = SP_OBJ_CONTAINER;
3838 if (in_container_obj)
3839 cnt |= SP_OBJ_CONTENT;
3840 add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3847 break_stmt_end(splev);
3849 add_opcode(splev, SPO_POP_CONTAINER, NULL);
3854 if (( yyvsp[0].i & 0x4000) && in_container_obj)
3855 lc_error("Object cannot have a coord when contained.");
3856 else if (!( yyvsp[0].i & 0x4000) && !in_container_obj)
3857 lc_error("Object needs a coord when not contained.");
3862 struct opvar *stopit = New(struct opvar);
3863 set_opvar_int(stopit, SP_O_V_END);
3864 add_opcode(splev, SPO_PUSH, stopit);
3870 if (( yyvsp[-2].i & yyvsp[0].i ))
3871 lc_error("OBJECT extra info '%s' defined twice.", curr_token);
3872 yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3877 add_opvars(splev, "ii",
3878 VA_PASS2((int) yyvsp[0].i, SP_O_V_CURSE));
3884 add_opvars(splev, "i", VA_PASS1(SP_O_V_CORPSENM));
3890 add_opvars(splev, "i", VA_PASS1(SP_O_V_SPE));
3896 add_opvars(splev, "i", VA_PASS1(SP_O_V_NAME));
3902 add_opvars(splev, "i", VA_PASS1(SP_O_V_QUAN));
3908 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BURIED));
3914 add_opvars(splev, "ii", VA_PASS2((int) yyvsp[0].i, SP_O_V_LIT));
3920 add_opvars(splev, "i", VA_PASS1(SP_O_V_ERODED));
3926 add_opvars(splev, "ii", VA_PASS2(-1, SP_O_V_ERODED));
3932 if (yyvsp[0].i == D_LOCKED) {
3933 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_LOCKED));
3935 } else if (yyvsp[0].i == D_BROKEN) {
3936 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BROKEN));
3939 lc_error("DOOR state can only be locked or broken.");
3944 add_opvars(splev, "ii",
3945 VA_PASS2((int) yyvsp[0].i, SP_O_V_TRAPPED));
3951 add_opvars(splev, "i", VA_PASS1(SP_O_V_RECHARGED));
3957 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_INVIS));
3963 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_GREASED));
3969 add_opvars(splev, "i", VA_PASS1(SP_O_V_COORD));
3975 add_opvars(splev, "io", VA_PASS2((int) yyvsp[-2].i, SPO_TRAP));
3980 long dir, state = 0;
3982 /* convert dir from a DIRECTION to a DB_DIR */
3985 case W_NORTH: dir = DB_NORTH; break;
3986 case W_SOUTH: dir = DB_SOUTH; break;
3987 case W_EAST: dir = DB_EAST; break;
3988 case W_WEST: dir = DB_WEST; break;
3990 lc_error("Invalid drawbridge direction.");
3994 if ( yyvsp[0].i == D_ISOPEN )
3996 else if ( yyvsp[0].i == D_CLOSED )
3998 else if ( yyvsp[0].i == -1 )
4001 lc_error("A drawbridge can only be open, closed or random!");
4002 add_opvars(splev, "iio",
4003 VA_PASS3(state, dir, SPO_DRAWBRIDGE));
4008 add_opvars(splev, "iiio",
4009 VA_PASS4((int) yyvsp[0].i, 1, 0, SPO_MAZEWALK));
4014 add_opvars(splev, "iiio",
4015 VA_PASS4((int) yyvsp[-3].i, (int) yyvsp[-1].i,
4016 (int) yyvsp[0].i, SPO_MAZEWALK));
4021 add_opvars(splev, "rio",
4022 VA_PASS3(SP_REGION_PACK(-1,-1,-1,-1),
4028 add_opvars(splev, "io", VA_PASS2(1, SPO_WALLIFY));
4033 add_opvars(splev, "io",
4034 VA_PASS2((int) yyvsp[0].i, SPO_LADDER));
4039 add_opvars(splev, "io",
4040 VA_PASS2((int) yyvsp[0].i, SPO_STAIR));
4045 add_opvars(splev, "iiiii iiiii iiso",
4046 VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
4047 yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4048 (long) ((yyvsp[0].i) ? LR_UPSTAIR : LR_DOWNSTAIR),
4049 0, (char *) 0, SPO_LEVREGION));
4054 add_opvars(splev, "iiiii iiiii iiso",
4055 VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
4056 yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4057 LR_PORTAL, 0, yyvsp[0].map, SPO_LEVREGION));
4064 switch(yyvsp[0].i) {
4065 case -1: rtyp = LR_TELE; break;
4066 case 0: rtyp = LR_DOWNTELE; break;
4067 case 1: rtyp = LR_UPTELE; break;
4069 add_opvars(splev, "iiiii iiiii iiso",
4070 VA_PASS14(yyvsp[-3].lregn.x1, yyvsp[-3].lregn.y1, yyvsp[-3].lregn.x2, yyvsp[-3].lregn.y2, yyvsp[-3].lregn.area,
4071 yyvsp[-1].lregn.x1, yyvsp[-1].lregn.y1, yyvsp[-1].lregn.x2, yyvsp[-1].lregn.y2, yyvsp[-1].lregn.area,
4072 rtyp, 0, (char *)0, SPO_LEVREGION));
4077 add_opvars(splev, "iiiii iiiii iiso",
4078 VA_PASS14(yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4079 yyvsp[0].lregn.x1, yyvsp[0].lregn.y1, yyvsp[0].lregn.x2, yyvsp[0].lregn.y2, yyvsp[0].lregn.area,
4080 (long) LR_BRANCH, 0,
4081 (char *) 0, SPO_LEVREGION));
4091 yyval.i = yyvsp[0].i;
4096 add_opvars(splev, "o", VA_PASS1(SPO_FOUNTAIN));
4101 add_opvars(splev, "o", VA_PASS1(SPO_SINK));
4106 add_opvars(splev, "o", VA_PASS1(SPO_POOL));
4111 yyval.terr.lit = -2;
4112 yyval.terr.ter = what_map_char((char) yyvsp[0].i);
4117 yyval.terr.lit = yyvsp[-1].i;
4118 yyval.terr.ter = what_map_char((char) yyvsp[-3].i);
4123 add_opvars(splev, "io",
4124 VA_PASS2(yyvsp[0].i, SPO_REPLACETERRAIN));
4129 add_opvars(splev, "o", VA_PASS1(SPO_TERRAIN));
4134 add_opvars(splev, "o", VA_PASS1(SPO_NON_DIGGABLE));
4139 add_opvars(splev, "o", VA_PASS1(SPO_NON_PASSWALL));
4145 long rt = yyvsp[-1].i;
4146 long rflags = yyvsp[0].i;
4148 if (rflags == -1) rflags = (1 << 0);
4149 if (!(rflags & 1)) rt += MAXRTYPE+1;
4150 irr = ((rflags & 2) != 0);
4151 add_opvars(splev, "iiio",
4152 VA_PASS4((long)yyvsp[-3].i, rt, rflags, SPO_REGION));
4153 yyval.i = (irr || (rflags & 1) || rt != OROOM);
4159 break_stmt_end(splev);
4160 if ( yyvsp[-1].i ) {
4161 add_opcode(splev, SPO_ENDROOM, NULL);
4162 } else if ( yyvsp[0].i )
4163 lc_error("Cannot use lev statements in non-permanent REGION");
4173 yyval.i = yyvsp[0].i;
4178 add_opvars(splev, "iio",
4179 VA_PASS3((long)yyvsp[0].i, (long)yyvsp[-2].i, SPO_ALTAR));
4184 add_opvars(splev, "io", VA_PASS2(2, SPO_GRAVE));
4189 add_opvars(splev, "sio",
4190 VA_PASS3((char *)0, 1, SPO_GRAVE));
4195 add_opvars(splev, "sio",
4196 VA_PASS3((char *)0, 0, SPO_GRAVE));
4201 add_opvars(splev, "o", VA_PASS1(SPO_GOLD));
4206 add_opvars(splev, "io",
4207 VA_PASS2((long)yyvsp[-2].i, SPO_ENGRAVING));
4212 add_opvars(splev, "o", VA_PASS1(SPO_MINERALIZE));
4217 add_opvars(splev, "iiiio",
4218 VA_PASS5(-1L, -1L, -1L, -1L, SPO_MINERALIZE));
4223 int token = get_trap_type(yyvsp[0].map);
4225 lc_error("Unknown trap type '%s'!", yyvsp[0].map);
4232 int token = get_room_type(yyvsp[0].map);
4234 lc_warning("Unknown room type \"%s\"! Making ordinary room...", yyvsp[0].map);
4248 yyval.i = yyvsp[0].i;
4253 yyval.i = yyvsp[0].i;
4258 yyval.i = yyvsp[-2].i | yyvsp[0].i;
4263 yyval.i = (yyvsp[0].i << 0);
4268 yyval.i = (yyvsp[0].i << 1);
4273 yyval.i = (yyvsp[0].i << 2);
4278 yyval.i = - MAX_REGISTERS - 1;
4283 yyval.i = - MAX_REGISTERS - 1;
4288 if ( yyvsp[-1].i >= 3 )
4289 lc_error("Register Index overflow!");
4291 yyval.i = - yyvsp[-1].i - 1;
4296 add_opvars(splev, "s", VA_PASS1(yyvsp[0].map));
4302 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_STRING);
4303 vardef_used(vardefs, yyvsp[0].map);
4304 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4310 check_vardef_type(vardefs, yyvsp[-3].map,
4311 SPOVAR_STRING | SPOVAR_ARRAY);
4312 vardef_used(vardefs, yyvsp[-3].map);
4313 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4314 Free(yyvsp[-3].map);
4324 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
4329 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDCOORD));
4334 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_COORD);
4335 vardef_used(vardefs, yyvsp[0].map);
4336 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4342 check_vardef_type(vardefs, yyvsp[-3].map,
4343 SPOVAR_COORD | SPOVAR_ARRAY);
4344 vardef_used(vardefs, yyvsp[-3].map);
4345 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4346 Free(yyvsp[-3].map);
4351 if (yyvsp[-3].i < 0 || yyvsp[-1].i < 0 || yyvsp[-3].i >= COLNO || yyvsp[-1].i >= ROWNO)
4352 lc_error("Coordinates (%li,%li) out of map range!",
4353 yyvsp[-3].i, yyvsp[-1].i);
4354 yyval.i = SP_COORD_PACK(yyvsp[-3].i, yyvsp[-1].i);
4359 yyval.i = SP_COORD_PACK_RANDOM(0);
4364 yyval.i = SP_COORD_PACK_RANDOM(yyvsp[-1].i);
4369 yyval.i = yyvsp[0].i;
4374 if ((yyvsp[-2].i & yyvsp[0].i))
4375 lc_warning("Humidity flag used twice.");
4376 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
4386 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_REGION);
4387 vardef_used(vardefs, yyvsp[0].map);
4388 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4394 check_vardef_type(vardefs, yyvsp[-3].map,
4395 SPOVAR_REGION | SPOVAR_ARRAY);
4396 vardef_used(vardefs, yyvsp[-3].map);
4397 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4398 Free(yyvsp[-3].map);
4403 long r = SP_REGION_PACK(yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4405 if (yyvsp[-7].i > yyvsp[-3].i || yyvsp[-5].i > yyvsp[-1].i)
4406 lc_error("Region start > end: (%ld,%ld,%ld,%ld)!",
4407 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4409 add_opvars(splev, "r", VA_PASS1(r));
4415 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
4420 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_MAPCHAR);
4421 vardef_used(vardefs, yyvsp[0].map);
4422 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4428 check_vardef_type(vardefs, yyvsp[-3].map,
4429 SPOVAR_MAPCHAR | SPOVAR_ARRAY);
4430 vardef_used(vardefs, yyvsp[-3].map);
4431 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4432 Free(yyvsp[-3].map);
4437 if (what_map_char((char) yyvsp[0].i) != INVALID_TYPE)
4438 yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[0].i), -2);
4440 lc_error("Unknown map char type '%c'!", yyvsp[0].i);
4441 yyval.i = SP_MAPCHAR_PACK(STONE, -2);
4447 if (what_map_char((char) yyvsp[-3].i) != INVALID_TYPE)
4448 yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[-3].i), yyvsp[-1].i);
4450 lc_error("Unknown map char type '%c'!", yyvsp[-3].i);
4451 yyval.i = SP_MAPCHAR_PACK(STONE, yyvsp[-1].i);
4457 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
4462 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_MONST);
4463 vardef_used(vardefs, yyvsp[0].map);
4464 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4470 check_vardef_type(vardefs, yyvsp[-3].map,
4471 SPOVAR_MONST | SPOVAR_ARRAY);
4472 vardef_used(vardefs, yyvsp[-3].map);
4473 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4474 Free(yyvsp[-3].map);
4479 long m = get_monster_id(yyvsp[0].map, (char)0);
4481 lc_error("Unknown monster \"%s\"!", yyvsp[0].map);
4484 yyval.i = SP_MONST_PACK(m,
4485 def_monsyms[(int) mons[m].mlet].sym);
4491 if (check_monster_char((char) yyvsp[0].i))
4492 yyval.i = SP_MONST_PACK(-1, yyvsp[0].i);
4494 lc_error("Unknown monster class '%c'!", yyvsp[0].i);
4501 long m = get_monster_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4503 lc_error("Unknown monster ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4506 yyval.i = SP_MONST_PACK(m, yyvsp[-3].i);
4507 Free(yyvsp[-1].map);
4517 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
4522 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_OBJ);
4523 vardef_used(vardefs, yyvsp[0].map);
4524 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4530 check_vardef_type(vardefs, yyvsp[-3].map,
4531 SPOVAR_OBJ | SPOVAR_ARRAY);
4532 vardef_used(vardefs, yyvsp[-3].map);
4533 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4534 Free(yyvsp[-3].map);
4539 long m = get_object_id(yyvsp[0].map, (char)0);
4541 lc_error("Unknown object \"%s\"!", yyvsp[0].map);
4544 /* obj class != 0 to force generation of a specific item */
4545 yyval.i = SP_OBJ_PACK(m, 1);
4551 if (check_object_char((char) yyvsp[0].i))
4552 yyval.i = SP_OBJ_PACK(-1, yyvsp[0].i);
4554 lc_error("Unknown object class '%c'!", yyvsp[0].i);
4561 long m = get_object_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4563 lc_error("Unknown object ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4566 yyval.i = SP_OBJ_PACK(m, yyvsp[-3].i);
4567 Free(yyvsp[-1].map);
4580 add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4585 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4590 is_inconstant_number = 1;
4595 add_opvars(splev, "i", VA_PASS1(yyvsp[-1].i));
4600 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_INT);
4601 vardef_used(vardefs, yyvsp[0].map);
4602 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4604 is_inconstant_number = 1;
4609 check_vardef_type(vardefs, yyvsp[-3].map,
4610 SPOVAR_INT | SPOVAR_ARRAY);
4611 vardef_used(vardefs, yyvsp[-3].map);
4612 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4613 Free(yyvsp[-3].map);
4614 is_inconstant_number = 1;
4619 add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4624 add_opvars(splev, "o", VA_PASS1(SPO_MATH_SUB));
4629 add_opvars(splev, "o", VA_PASS1(SPO_MATH_MUL));
4634 add_opvars(splev, "o", VA_PASS1(SPO_MATH_DIV));
4639 add_opvars(splev, "o", VA_PASS1(SPO_MATH_MOD));
4647 if (!strcmp("int", yyvsp[0].map) || !strcmp("integer", yyvsp[0].map)) {
4650 lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4655 if (!strcmp("str", yyvsp[0].map) || !strcmp("string", yyvsp[0].map)) {
4658 lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4663 struct lc_funcdefs_parm *tmp = New(struct lc_funcdefs_parm);
4665 if (!curr_function) {
4666 lc_error("Function parameters outside function definition.");
4668 lc_error("Could not alloc function params.");
4670 long vt = SPOVAR_NULL;
4672 tmp->name = strdup(yyvsp[-2].map);
4673 tmp->parmtype = (char) yyvsp[0].i;
4674 tmp->next = curr_function->params;
4675 curr_function->params = tmp;
4676 curr_function->n_params++;
4677 switch (tmp->parmtype) {
4685 lc_error("Unknown func param conversion.");
4688 vardefs = add_vardef_type( vardefs, yyvsp[-2].map, vt);
4690 Free(yyvsp[-2].map);
4706 tmpbuf[0] = (char) yyvsp[0].i;
4708 yyval.map = strdup(tmpbuf);
4713 long len = strlen( yyvsp[-2].map );
4714 char *tmp = (char *) alloc(len + 2);
4715 sprintf(tmp, "%c%s", (char) yyvsp[0].i, yyvsp[-2].map );
4716 Free( yyvsp[-2].map );
4722 yyval.map = strdup("");
4727 char *tmp = strdup( yyvsp[0].map );
4728 Free( yyvsp[0].map );
4734 add_opvars(splev, "o", VA_PASS1(SPO_SEL_POINT));
4739 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RECT));
4744 add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT));
4749 add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE));
4754 /* randline (x1,y1),(x2,y2), roughness */
4755 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE));
4760 add_opvars(splev, "io", VA_PASS2(W_ANY, SPO_SEL_GROW));
4765 add_opvars(splev, "io", VA_PASS2(yyvsp[-3].i, SPO_SEL_GROW));
4770 add_opvars(splev, "iio",
4771 VA_PASS3(yyvsp[-3].i, SPOFILTER_PERCENT, SPO_SEL_FILTER));
4776 add_opvars(splev, "io",
4777 VA_PASS2(SPOFILTER_SELECTION, SPO_SEL_FILTER));
4782 add_opvars(splev, "io",
4783 VA_PASS2(SPOFILTER_MAPCHAR, SPO_SEL_FILTER));
4788 add_opvars(splev, "o", VA_PASS1(SPO_SEL_FLOOD));
4793 add_opvars(splev, "oio",
4794 VA_PASS3(SPO_COPY, 1, SPO_SEL_ELLIPSE));
4799 add_opvars(splev, "oio",
4800 VA_PASS3(SPO_COPY, yyvsp[-1].i, SPO_SEL_ELLIPSE));
4805 add_opvars(splev, "io", VA_PASS2(1, SPO_SEL_ELLIPSE));
4810 add_opvars(splev, "io", VA_PASS2(yyvsp[-1].i, SPO_SEL_ELLIPSE));
4815 add_opvars(splev, "iio",
4816 VA_PASS3(yyvsp[-5].i, yyvsp[-11].i, SPO_SEL_GRADIENT));
4821 add_opvars(splev, "o", VA_PASS1(SPO_SEL_COMPLEMENT));
4826 check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_SEL);
4827 vardef_used(vardefs, yyvsp[0].map);
4828 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4844 add_opvars(splev, "o", VA_PASS1(SPO_SEL_ADD));
4849 add_opvars(splev, "iio",
4850 VA_PASS3(yyvsp[0].dice.num, yyvsp[0].dice.die, SPO_DICE));
4855 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4860 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4865 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4875 yyval.lregn = yyvsp[0].lregn;
4880 if (yyvsp[-7].i <= 0 || yyvsp[-7].i >= COLNO)
4882 "Region (%ld,%ld,%ld,%ld) out of level range (x1)!",
4883 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4884 else if (yyvsp[-5].i < 0 || yyvsp[-5].i >= ROWNO)
4886 "Region (%ld,%ld,%ld,%ld) out of level range (y1)!",
4887 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4888 else if (yyvsp[-3].i <= 0 || yyvsp[-3].i >= COLNO)
4890 "Region (%ld,%ld,%ld,%ld) out of level range (x2)!",
4891 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4892 else if (yyvsp[-1].i < 0 || yyvsp[-1].i >= ROWNO)
4894 "Region (%ld,%ld,%ld,%ld) out of level range (y2)!",
4895 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4896 yyval.lregn.x1 = yyvsp[-7].i;
4897 yyval.lregn.y1 = yyvsp[-5].i;
4898 yyval.lregn.x2 = yyvsp[-3].i;
4899 yyval.lregn.y2 = yyvsp[-1].i;
4900 yyval.lregn.area = 1;
4905 /* This series of if statements is a hack for MSC 5.1. It seems that its
4906 tiny little brain cannot compile if these are all one big if statement. */
4907 if (yyvsp[-7].i < 0 || yyvsp[-7].i > (int) max_x_map)
4909 "Region (%ld,%ld,%ld,%ld) out of map range (x1)!",
4910 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4911 else if (yyvsp[-5].i < 0 || yyvsp[-5].i > (int) max_y_map)
4913 "Region (%ld,%ld,%ld,%ld) out of map range (y1)!",
4914 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4915 else if (yyvsp[-3].i < 0 || yyvsp[-3].i > (int) max_x_map)
4917 "Region (%ld,%ld,%ld,%ld) out of map range (x2)!",
4918 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4919 else if (yyvsp[-1].i < 0 || yyvsp[-1].i > (int) max_y_map)
4921 "Region (%ld,%ld,%ld,%ld) out of map range (y2)!",
4922 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4923 yyval.lregn.area = 0;
4924 yyval.lregn.x1 = yyvsp[-7].i;
4925 yyval.lregn.y1 = yyvsp[-5].i;
4926 yyval.lregn.x2 = yyvsp[-3].i;
4927 yyval.lregn.y2 = yyvsp[-1].i;
4935 if (yystate == 0 && yym == 0)
4939 printf("%sdebug: after reduction, shifting from state 0 to\
4940 state %d\n", YYPREFIX, YYFINAL);
4947 if ((yychar = yylex()) < 0) yychar = 0;
4952 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
4953 if (!yys) yys = "illegal-symbol";
4954 printf("%sdebug: state %d, reading %d (%s)\n",
4955 YYPREFIX, YYFINAL, yychar, yys);
4959 if (yychar == 0) goto yyaccept;
4962 if ((yyn = yygindex[yym]) != 0 && (yyn += yystate) >= 0 &&
4963 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
4964 yystate = yytable[yyn];
4966 yystate = yydgoto[yym];
4969 printf("%sdebug: after reduction, shifting from state %d \
4970 to state %d\n", YYPREFIX, *yyssp, yystate);
4972 if (yyssp >= yyss + yystacksize - 1)
4980 yyerror("yacc stack overflow");