comparison tests/agcl/oldagsrc/good/dsl.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 // C Prologue
2 /*
3 AnaGram, a System for Syntax Directed Programming
4
5 A Dos Script Language
6
7 Copyright (c) 1993, Parsifal Software.
8 All Rights Reserved.
9
10 */
11
12
13 #include "stack.h"
14 #include "charsink.h"
15 #include "strdict.h"
16 #include "array.h"
17 #include "symbol.h"
18 #include "query.h"
19 #include <conio.h>
20
21
22 // Define stacks for temporary storage
23
24 stack <action_pointer> as(25); // Stack actions
25 stack <int> is(100); // Stack string indices
26 stack <char *> ps(1000,20); // Stack parameter strings
27 stack <query_item> qs(23); // Stack query items
28
29
30 // Define data structures for symbol table
31
32 #define N_STRINGS 2000
33
34 string_accumulator sa(64000U,500);
35 string_dictionary sd(N_STRINGS);
36 array <symbol_table_entry> st(N_STRINGS);
37
38
39 /*
40 * AnaGram, A System for Syntax Directed Programming
41 * File generated by: ...
42 *
43 * AnaGram Parsing Engine
44 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
45 *
46 * This software is provided 'as-is', without any express or implied
47 * warranty. In no event will the authors be held liable for any damages
48 * arising from the use of this software.
49 *
50 * Permission is granted to anyone to use this software for any purpose,
51 * including commercial applications, and to alter it and redistribute it
52 * freely, subject to the following restrictions:
53 *
54 * 1. The origin of this software must not be misrepresented; you must not
55 * claim that you wrote the original software. If you use this software
56 * in a product, an acknowledgment in the product documentation would be
57 * appreciated but is not required.
58 * 2. Altered source versions must be plainly marked as such, and must not be
59 * misrepresented as being the original software.
60 * 3. This notice may not be removed or altered from any source distribution.
61 */
62
63 #ifndef DSL_H
64 #include "dsl.h"
65 #endif
66
67 #ifndef DSL_H
68 #error Mismatched header file
69 #endif
70
71 #include <ctype.h>
72 #include <stdio.h>
73
74 #define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
75 #define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
76 #define CONTEXT ((PCB).cs[(PCB).ssx])
77
78
79
80 dsl_pcb_type dsl_pcb;
81 #define PCB dsl_pcb
82 #define CHANGE_REDUCTION(x) dsl_change_reduction(dsl_##x##_token)
83 int dsl_change_reduction(dsl_token_type);
84
85
86 #line - "dsl.syn"
87 #include <process.h>
88 #include <stdlib.h>
89 #include <ctype.h>
90 #include <sys/stat.h>
91 #include <fcntl.h>
92 #include <io.h>
93 #include <conio.h>
94 #include <dir.h>
95 #include <dos.h>
96 #include <time.h>
97 #include "assert.h"
98
99 #include "edit.h"
100
101
102 #include "screen.h"
103 #include "util.h"
104 #include "redirect.h"
105
106 #define GET_CONTEXT CONTEXT.pointer = PCB.pointer;\
107 CONTEXT.line=PCB.line;\
108 CONTEXT.column = PCB.column;
109
110
111 int debug_switch = 0;
112 char *error_msg = NULL;
113 unsigned errorlevel_index;
114 int errorlevel;
115 int exitcode = 0;
116 int exitflag = 0;
117 int first_line = 1;
118 int first_column = 1;
119 unsigned stderr_index;
120
121 void display_queries(screen_descriptor *);
122
123 #define FIRST_LINE first_line
124 #define FIRST_COLUMN first_column
125
126
127 /*****
128
129 Internal Functions
130
131 *****/
132
133 long file_exists(void) {
134 FILE *f = fopen(sa--,"r");
135 if (f != NULL) fclose(f);
136 return f != NULL;
137 }
138
139 long directory_exists(void) {
140 struct ffblk ff;
141 int result;
142
143 sa << "\\*.*";
144 result = findfirst(sa--,&ff,FA_DIREC);
145 return result == 0;
146 }
147
148 long string_length(void) {
149 return size(sa--);
150 }
151
152 long get_file_length(void) {
153 int handle = open(sa--, O_RDONLY);
154 long length;
155 if (handle < 0) return 0;
156 length = filelength(handle);
157 close(handle);
158 return length;
159 }
160
161 long disk_space(void) {
162 struct dfree free;
163 int drive = toupper(*(char *)sa--) - 64;
164 long avail;
165
166 getdfree(drive, &free);
167 avail = (long) free.df_avail * (long) free.df_bsec * (long) free.df_sclus;
168 return avail;
169 }
170
171 long file_time(void) {
172 int handle = open(sa--, O_RDONLY);
173 struct ftime ft;
174 struct tm t;
175
176 if (handle < 0) return 0;
177 getftime(handle, &ft);
178 close(handle);
179 t.tm_year = ft.ft_year + 70;
180 t.tm_mon = ft.ft_month;
181 t.tm_mday = ft.ft_day;
182 t.tm_hour = ft.ft_hour;
183 t.tm_min = ft.ft_min;
184 t.tm_sec = ft.ft_tsec*2;
185 return mktime(&t);
186 }
187
188
189 // Support for reduction procecures
190
191 // Compare top strings on string accumulator
192
193 /*
194 pops top two strings from string accumulator using strcmp
195 and returns
196 -1 if first string is less than top string
197 0 if strings match
198 +1 if top string is greater than first string
199 */
200
201 int string_comp(void) {
202 int n = size(sa);
203 array<char> right_string(sa--, n+1);
204 return strcmp(sa--,right_string);
205 }
206
207 /*
208 replace the top string on the stack, with a substring where the index
209 of the first character in the substring is given by "first" and the index
210 of the last character is given by "last"
211 */
212
213 void extract(unsigned first, unsigned last) {
214 int n = last - first + 1;
215 assert (last >= first);
216 array <char> x((char *) sa-- + first, n+1);
217 x[n] = 0;
218 ++sa << x;
219 }
220
221 /*
222 Look up the top string on the accumulator stack in the string dictionary.
223 If it has a value in the symbol table, replace it with the symbol table
224 value. If the value is numeric, convert it to integer. Otherwise, leave the
225 string untouched on the stack.
226 */
227
228 void lookup(void) {
229 unsigned index = sd[sa];
230 if (index == 0) return;
231 switch (st[index].type) {
232 case string_type:
233 case value_type: {
234 --sa; // discard name
235 ++sa << st[index].data.text; // stack value
236 break;
237 }
238 case integer_type: {
239 --sa; // discard name
240 (++sa).printf("%ld", st[index].data.integer); // convert to ascii
241 break;
242 }
243 }
244 }
245
246 /*
247 Find the data type of a symbol and change the reduction accordingly.
248 Return the dictionary index for strings, and the value itself for integers.
249 */
250
251 long name_type(void) {
252 unsigned index = sd << sa--;
253 switch (st[index].type) {
254 case value_type:
255 case string_type: {
256 CHANGE_REDUCTION(string_name);
257 return index;
258 }
259 case built_in_function_type: {
260 CHANGE_REDUCTION(built_in_name);
261 return index;
262 }
263 case undefined_type: {
264 CHANGE_REDUCTION(undefined_name);
265 return index;
266 }
267 case integer_type: return st[index].data.integer;
268 }
269 return 0;
270 }
271
272 /*
273 Store a string formula. A string formula is a sequence of string identifiers
274 the values of which are to be concatenated. The parser has accumulated the
275 identifiers on the integer_stack, is. The formula is terminated by a zero
276 entry.
277 */
278
279 int *formula(void) {
280 int n = size(is << 0);
281 int *f = new int[n];
282 while (n--) is >> f[n];
283 return f;
284 }
285
286 /*
287 Make a copy of an action that has been identified in the text stream.
288 An action pointer was stacked at the beginning of the action text on the
289 action stack, as.
290 */
291
292 action_pointer copy_action(void) {
293 action_pointer ap;
294 as >> ap; // pop action descriptor
295 unsigned length = (unsigned) (PCB.pointer - ap.pointer);
296 unsigned char *action = memdup(ap.pointer,length + 1);
297 action[length] = 0;
298 ap.pointer = action;
299 return ap;
300 }
301
302
303 // Internal Commands
304
305 int echo(int n_args, char *args[]) {
306 int i;
307 char *cs = "";
308 for (i = 1; args[i]; i++) printf("%s%s", cs, args[i]), cs = " ";
309 printf("\n");
310 return 0;
311 }
312
313 int pause(int n_args, char *args[]) {
314 int c;
315 while (kbhit()) getch(); // Empty buffer
316 printf("Press any key to continue . . .\n");
317 c = getch();
318 if (c == 3) exit(1);
319 return c;
320 }
321
322 int exit_script(int n_args, char *args[]) {
323 if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
324 exit(exitcode);
325 return exitcode;
326 }
327
328 /*
329 int return_script(int n_args, char *args[]) {
330 if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
331 PCB.exit_flag = AG_SUCCESS_CODE;
332 return exitcode;
333 }
334 */
335
336 int subdirs(int n_args, char *args[]) {
337 ffblk file_block;
338 int flag;
339 int length = strlen(args[1]);
340 array <char> name(args[1],length + 5);
341
342 strcat(name, "\\*.*");
343 for(flag = findfirst(name, &file_block, FA_DIREC);
344 flag == 0; flag = findnext(&file_block)) {
345 if ((file_block.ff_attrib & FA_DIREC) == 0) continue;
346 if (strcmp(file_block.ff_name, ".") == 0) continue;
347 if (strcmp(file_block.ff_name, "..") == 0) continue;
348 puts(file_block.ff_name);
349 }
350 return 0;
351 }
352
353 int files(int n_args, char *args[]) {
354 ffblk file_block;
355 int flag;
356 int length = strlen(args[1]);
357 array<char> name(args[1],length + 5);
358
359 strcat(name, "\\*.*");
360 for(flag = findfirst(name, &file_block, 0);
361 flag == 0; flag = findnext(&file_block)) {
362 puts(file_block.ff_name);
363 }
364 return 0;
365 }
366
367
368 /*****
369
370 Execute Command Line
371
372 *****/
373
374
375 void perform_action(action_pointer ap) {
376 dsl_pcb_type save_pcb = PCB;
377
378 PCB.pointer = ap.pointer;
379 first_line = ap.line;
380 first_column = ap.column;
381 dsl();
382 exitflag = PCB.exit_flag != AG_SUCCESS_CODE;
383 PCB = save_pcb;
384 if (exitflag) PCB.exit_flag = AG_SEMANTIC_ERROR_CODE;
385 }
386
387 void exec(void) {
388 int n = size(ps << (char *) NULL);
389 int n_args = n - 1;
390 unsigned index;
391 char *cs;
392 int i;
393
394 array <char *> args(n);
395 while (n--) ps >> args[n];
396
397 cs = args[0];
398 for (i = 0; cs[i]; i++) cs[i] = toupper(cs[i]);
399 if (debug_switch) {
400 for (i = 0; args[i]; i++) fprintf(stderr, "%s ", args[i]);
401 fprintf(stderr,"\nPress any key to continue\n");
402 while (!kbhit());
403 getch();
404 }
405 index = sd[args[0]];
406 if (n_args == 1 && strlen(cs) == 2 && cs[1] == ':') {
407 errorlevel = system(args[0]);
408 }
409 else if ( *cs && index) switch (st[index].type) {
410 case internal_type: {
411 errorlevel = (*st[index].data.proc)(n_args, args);
412 break;
413 }
414 case dos_type: {
415 int i;
416 for (i = 1; args[i]; i++) args[i][-1] = ' ';
417 errorlevel = system(args[0]);
418 assert(errorlevel >= 0);
419 break;
420 }
421 case action_type: {
422 action_descriptor d = *st[index].data.action;
423 stack <symbol_table_entry> old_entries(d.n_args);
424 for (i = 0; i < d.n_args && args[i+1]; i++) {
425 old_entries << st[d.args[i]];
426 st[d.args[i]].type = value_type;
427 st[d.args[i]].data.text = memdup(args[i+1], 1 + strlen(args[i+1]));
428 }
429 perform_action(d.ap);
430 for (i = d.n_args; i--;) {
431 release(st[d.args[i]]);
432 old_entries >> st[d.args[i]];
433 }
434 }
435 }
436 else {
437 errorlevel = spawnvp(P_WAIT, args[0], args);
438 assert(errorlevel >= 0);
439 }
440 st[errorlevel_index].data.integer = errorlevel;
441 while (n_args--) --sa;
442 --ps;
443 if (kbhit()) {
444 int c = getch();
445 if (c == 3) exit(1);
446 ungetch(c);
447 }
448 }
449
450 void discard_temp_file(char *file_name) {
451 unlink(file_name); // Delete file
452 delete [] file_name; // Free storage for name
453 }
454
455
456 /*****
457
458 Execute Command with piped input
459
460 *****/
461
462
463 void exec_pipe_in(char *file_name) {
464 {
465 redirect sin(STDIN, file_name);
466 exec();
467 }
468 discard_temp_file(file_name);
469 }
470
471
472 /*****
473
474 Execute Command with redirected I/O
475
476 *****/
477
478 void exec_redirect_in(void) {
479 redirect sin(STDIN, sa--);
480 exec();
481 }
482
483 char *exec_pipe_out(void) {
484 redirect sout(STDOUT);
485 exec();
486 return save_file(sout);
487 }
488
489 char *exec_pipe_in_pipe_out(char *file_name) {
490 char *result;
491 {
492 redirect sin(STDIN, file_name);
493 redirect sout(STDOUT);
494 exec();
495 result = save_file(sout);
496 }
497 discard_temp_file(file_name);
498 return result;
499 }
500
501 char *exec_redirect_in_pipe_out(void) {
502 redirect sout(STDOUT);
503 exec_redirect_in();
504 return save_file(sout);
505 }
506
507 unsigned check_integer(void) {
508 unsigned index = sd << sa--;
509 if (st[index].type == integer_type) return index;
510 CHANGE_REDUCTION(undeclared_variable);
511 if (st[index].type == string_type) CHANGE_REDUCTION(string_variable);
512 return index;
513 }
514
515 void assign_value(unsigned index) {
516 char *text = copy(sa--);
517 release(st[index]);
518 st[index].type = value_type;
519 st[index].data.text = text;
520 }
521
522 void grab_output(char *temp_name) {
523 unlink(sa); // delete old file
524 rename(temp_name, sa--); // rename temp file
525 delete [] temp_name; // discard name string
526 }
527
528 void append_output(char *temp_name) {
529 redirect sout(STDOUT, sa--, 1); // append to file named on sa
530 redirect sin(STDIN, temp_name);
531 char *buf[2000];
532 int n;
533 while (1) {
534 n = read(STDIN, buf, 2000);
535 if (n == 0) break;
536 write(STDOUT, buf, n);
537 }
538 unlink(temp_name);
539 delete [] temp_name;
540 }
541
542 void action_string(void) {
543 action_pointer ap;
544 as >> ap;
545 unsigned length = (unsigned)(PCB.pointer - ap.pointer);
546 array <unsigned char> action(ap.pointer,length + 1);
547 action[length] = 0;
548 redirect sout(STDOUT);
549 char *result;
550
551 ap.pointer = action;
552 perform_action(ap);
553 result = content(sout);
554 ++sa << result;
555 delete [] result;
556 }
557
558
559 // Program Control functions
560
561 // If/else statement
562
563 int do_if(int pc, int cc) {
564 action_pointer ap;
565 as >> ap;
566 if (!pc && cc && exitflag == 0) {
567 unsigned length = (unsigned) (PCB.pointer - ap.pointer);
568 array<unsigned char> q(ap.pointer, length+1);
569 q[length] = 0;
570 ap.pointer = q;
571 perform_action(ap);
572 }
573 return pc || cc;
574 }
575
576 // While statement
577
578 void do_while(int cc) {
579 unsigned length;
580 action_pointer ap;
581 as >> ap;
582 if (cc == 0) return;
583 length = (unsigned) (PCB.pointer - ap.pointer);
584 array<unsigned char> q(ap.pointer, length+1);
585 q[length] = 0;
586 ap.pointer = q;
587 perform_action(ap);
588 if (exitflag) return;
589 PCB.pointer = CONTEXT.pointer;
590 PCB.line = CONTEXT.line;
591 PCB.column = CONTEXT.column;
592 }
593
594
595 // For Statement
596 // Note that this is the for statement in the DOS batch languange for, not C
597
598 void do_for_loop(void) {
599 int n,k;
600 char *q;
601 char *seps = " \t\v\f\r\n";
602 action_pointer ap;
603 as >> ap;
604 unsigned length = (unsigned)(PCB.pointer - ap.pointer);
605 array <unsigned char> action(ap.pointer, length + 1);
606 action[length] = 0;
607
608 ap.pointer = action;
609 n = size(sa);
610 array<char> text(sa--, n + 1);
611
612
613 unsigned index = sd << sa--;
614
615 ++ps;
616 for (q = strtok(text, seps); q != NULL; q = strtok(NULL,seps)) {
617 if (*q == '(') {
618 int k = strlen(q) - 1;
619 assert(q[k] == ')');
620 q[k] = 0;
621 q++;
622 }
623 else if (*q == '"') {
624 int k = strlen(q) - 1;
625 assert(q[k] == '"');
626 q[k] = 0;
627 q++;
628 }
629 ps << q;
630 }
631 k = n = size(ps);
632 array<char *> args(n);
633 while (k--) ps >> args[k];
634 --ps;
635 symbol_table_entry save_table_entry = st[index];
636 st[index].type = value_type;
637
638 for (k = 0; k < n && exitflag == 0; k++) {
639 st[index].data.text = args[k];
640 perform_action(ap);
641 }
642 st[index] = save_table_entry;
643 }
644
645 void invoke_script(void) {
646 int handle = open(sa, O_TEXT | O_RDONLY);
647 long size;
648 unsigned n;
649 action_pointer ap;
650
651 if (handle < 0) {
652 fprintf(stderr,"Cannot open %s\n", (char *) sa--);
653 exit(1);
654 }
655 --sa;
656 size = filelength(handle);
657 assert(size < 65536L);
658 array <unsigned char> data((unsigned) size+1);
659 n = (unsigned) read(handle,data,(unsigned) size);
660 data[n] = 0;
661 close(handle);
662 exitflag = 0;
663 ap.pointer = data;
664 ap.line = ap.column = 1;
665 perform_action(ap);
666 st[errorlevel_index].data.integer = exitcode;
667 exitflag = exitcode = 0;
668 return;
669 }
670
671 internal_commands_descriptor internal_commands[] = {
672 {"ECHO", echo},
673 {"EXIT", exit_script},
674 {"FILES", files},
675 {"PAUSE", pause},
676 // {"RETURN", return_script},
677 {"SUBDIRS", subdirs},
678 {NULL, NULL}
679 };
680
681 struct built_ins_descriptor built_ins[] = {
682 {"file_exists", file_exists},
683 {"directory_exists", directory_exists},
684 {"string_length", string_length},
685 {"file_length", get_file_length},
686 {"disk_space", disk_space},
687 {"file_time", file_time},
688 {NULL, NULL}
689 };
690
691 void set_extension(char *path, char *e) {
692 char s[MAXPATH];
693 char drive[MAXDRIVE];
694 char dir[MAXDIR];
695 char file[MAXFILE];
696 char ext[MAXEXT];
697
698 fnsplit(path,drive,dir,file,ext);
699 fnmerge(s, drive, dir, file, e);
700 ++sa << s;
701 }
702
703 /*
704 Note that if this program is called without any arguments, it looks for a
705 script with the same name as the executable. Thus, to make an install
706 program that picks up the install script without any arguments, you simply
707 rename DSL.EXE to INSTALL.EXE. Then when you run it without any arguments
708 it will run the INSTALL.DSL script.
709 */
710
711 void main(int argc, char *argv[]) {
712 int arg_number = 0;
713 int i = 1;
714 int j = 0;
715
716 init_dos_internals();
717 set_arg(j++, argv[0]);
718 if (argc > i && (argv[i][0] == '/' || argv[i][0] == '-')) {
719 if (toupper(argv[i][1]) != 'D') {
720 printf("Unrecognized switch -- /%s\n",argv[i][1]);
721 return;
722 }
723 debug_switch = 1;
724 i++;
725 }
726 if (argc > i) arg_number = i++;
727 set_extension(argv[arg_number], "DSL");
728 set_arg(j++,copy(sa));
729 while (i < argc) set_arg(j++, argv[i++]);
730 define_integer("argc", j);
731 invoke_script(); // Takes file name from sa
732 exit(exitcode);
733 }
734 #line - "dsl.cpp"
735
736 #ifndef CONVERT_CASE
737 #define CONVERT_CASE(c) (c)
738 #endif
739 #ifndef TAB_SPACING
740 #define TAB_SPACING 8
741 #endif
742
743 static void ag_rp_1(void) {
744 #line - "dsl.syn"
745 lookup();
746 #line - "dsl.cpp"
747 }
748
749 static void ag_rp_2(void) {
750 #line - "dsl.syn"
751 sa << '[';
752 #line - "dsl.cpp"
753 }
754
755 static void ag_rp_3(void) {
756 #line - "dsl.syn"
757 concat(sa) << ']', lookup();
758 #line - "dsl.cpp"
759 }
760
761 static void ag_rp_4(void) {
762 #line - "dsl.syn"
763 concat(sa);
764 #line - "dsl.cpp"
765 }
766
767 static void ag_rp_5(void) {
768 #line - "dsl.syn"
769 concat(sa);
770 #line - "dsl.cpp"
771 }
772
773 static void ag_rp_6(int c) {
774 #line - "dsl.syn"
775 ++sa << c;
776 #line - "dsl.cpp"
777 }
778
779 static void ag_rp_7(int c) {
780 #line - "dsl.syn"
781 sa << c;
782 #line - "dsl.cpp"
783 }
784
785 static void ag_rp_8(void) {
786 #line - "dsl.syn"
787 action_string();
788 #line - "dsl.cpp"
789 }
790
791 static void ag_rp_9(void) {
792 #line - "dsl.syn"
793 as << CONTEXT;
794 #line - "dsl.cpp"
795 }
796
797 static void ag_rp_10(void) {
798 #line - "dsl.syn"
799 --sa;
800 #line - "dsl.cpp"
801 }
802
803 static void ag_rp_11(void) {
804 #line - "dsl.syn"
805 action_pointer a; as >> a;
806 #line - "dsl.cpp"
807 }
808
809 static void ag_rp_12(void) {
810 #line - "dsl.syn"
811 ++sa;
812 #line - "dsl.cpp"
813 }
814
815 static void ag_rp_13(int c) {
816 #line - "dsl.syn"
817 sa << c;
818 #line - "dsl.cpp"
819 }
820
821 static void ag_rp_14(void) {
822 #line - "dsl.syn"
823 sa << '(';
824 #line - "dsl.cpp"
825 }
826
827 static void ag_rp_15(void) {
828 #line - "dsl.syn"
829 concat(sa) << ')';
830 #line - "dsl.cpp"
831 }
832
833 static void ag_rp_16(void) {
834 #line - "dsl.syn"
835 ++sa;
836 #line - "dsl.cpp"
837 }
838
839 static void ag_rp_17(int c) {
840 #line - "dsl.syn"
841 sa << c;
842 #line - "dsl.cpp"
843 }
844
845 static void ag_rp_18(int c) {
846 #line - "dsl.syn"
847 sa << c;
848 #line - "dsl.cpp"
849 }
850
851 static int ag_rp_19(void) {
852 #line - "dsl.syn"
853 return '\a';
854 #line - "dsl.cpp"
855 }
856
857 static int ag_rp_20(void) {
858 #line - "dsl.syn"
859 return '\b';
860 #line - "dsl.cpp"
861 }
862
863 static int ag_rp_21(void) {
864 #line - "dsl.syn"
865 return '\f';
866 #line - "dsl.cpp"
867 }
868
869 static int ag_rp_22(void) {
870 #line - "dsl.syn"
871 return '\n';
872 #line - "dsl.cpp"
873 }
874
875 static int ag_rp_23(void) {
876 #line - "dsl.syn"
877 return '\r';
878 #line - "dsl.cpp"
879 }
880
881 static int ag_rp_24(void) {
882 #line - "dsl.syn"
883 return '\t';
884 #line - "dsl.cpp"
885 }
886
887 static int ag_rp_25(void) {
888 #line - "dsl.syn"
889 return '\v';
890 #line - "dsl.cpp"
891 }
892
893 static int ag_rp_26(void) {
894 #line - "dsl.syn"
895 return '\\';
896 #line - "dsl.cpp"
897 }
898
899 static int ag_rp_27(void) {
900 #line - "dsl.syn"
901 return '\?';
902 #line - "dsl.cpp"
903 }
904
905 static int ag_rp_28(void) {
906 #line - "dsl.syn"
907 return '\'';
908 #line - "dsl.cpp"
909 }
910
911 static int ag_rp_29(void) {
912 #line - "dsl.syn"
913 return '"';
914 #line - "dsl.cpp"
915 }
916
917 static int ag_rp_30(int d) {
918 #line - "dsl.syn"
919 return d-'0';
920 #line - "dsl.cpp"
921 }
922
923 static int ag_rp_31(int n, int d) {
924 #line - "dsl.syn"
925 return 8*n + d-'0';
926 #line - "dsl.cpp"
927 }
928
929 static int ag_rp_32(int n, int d) {
930 #line - "dsl.syn"
931 return 8*n + d-'0';
932 #line - "dsl.cpp"
933 }
934
935 static int ag_rp_33(long n) {
936 #line - "dsl.syn"
937 return (int) n;
938 #line - "dsl.cpp"
939 }
940
941 static long ag_rp_34(long n, long d) {
942 #line - "dsl.syn"
943 return 16*n + d;
944 #line - "dsl.cpp"
945 }
946
947 static void ag_rp_35(void) {
948 #line - "dsl.syn"
949 exec();
950 #line - "dsl.cpp"
951 }
952
953 static void ag_rp_36(void) {
954 #line - "dsl.syn"
955 exec_redirect_in();
956 #line - "dsl.cpp"
957 }
958
959 static void ag_rp_37(char * file) {
960 #line - "dsl.syn"
961 exec_pipe_in(file);
962 #line - "dsl.cpp"
963 }
964
965 static void ag_rp_38(char * file) {
966 #line - "dsl.syn"
967 grab_output(file);
968 #line - "dsl.cpp"
969 }
970
971 static void ag_rp_39(char * file) {
972 #line - "dsl.syn"
973 append_output(file);
974 #line - "dsl.cpp"
975 }
976
977 static char * ag_rp_40(void) {
978 #line - "dsl.syn"
979 return exec_pipe_out();
980 #line - "dsl.cpp"
981 }
982
983 static char * ag_rp_41(void) {
984 #line - "dsl.syn"
985 return exec_redirect_in_pipe_out();
986 #line - "dsl.cpp"
987 }
988
989 static char * ag_rp_42(char * file) {
990 #line - "dsl.syn"
991 return exec_pipe_in_pipe_out(file);
992 #line - "dsl.cpp"
993 }
994
995 static void ag_rp_43(void) {
996 #line - "dsl.syn"
997 sa << 0, ++ps << sa;
998 #line - "dsl.cpp"
999 }
1000
1001 static void ag_rp_44(void) {
1002 #line - "dsl.syn"
1003 ps << sa, sa << 0;
1004 #line - "dsl.cpp"
1005 }
1006
1007 static void ag_rp_45(void) {
1008 #line - "dsl.syn"
1009 ps << sa, sa << 0;
1010 #line - "dsl.cpp"
1011 }
1012
1013 static void ag_rp_46(int pc) {
1014 #line - "dsl.syn"
1015 do_if(pc,1);
1016 #line - "dsl.cpp"
1017 }
1018
1019 static int ag_rp_47(int cc) {
1020 #line - "dsl.syn"
1021 return cc;
1022 #line - "dsl.cpp"
1023 }
1024
1025 static int ag_rp_48(int cc) {
1026 #line - "dsl.syn"
1027 return cc;
1028 #line - "dsl.cpp"
1029 }
1030
1031 static int ag_rp_49(int pc, int cc) {
1032 #line - "dsl.syn"
1033 return do_if(pc,cc!=0);
1034 #line - "dsl.cpp"
1035 }
1036
1037 static int ag_rp_50(long cc) {
1038 #line - "dsl.syn"
1039 return (int) cc;
1040 #line - "dsl.cpp"
1041 }
1042
1043 static int ag_rp_51(int cc) {
1044 #line - "dsl.syn"
1045 return do_if(0,cc != 0);
1046 #line - "dsl.cpp"
1047 }
1048
1049 static void ag_rp_52(unsigned v) {
1050 #line - "dsl.syn"
1051 assign_value(v);
1052 #line - "dsl.cpp"
1053 }
1054
1055 static void ag_rp_53(unsigned v, long x) {
1056 #line - "dsl.syn"
1057 st[v].data.integer = (int) x;
1058 #line - "dsl.cpp"
1059 }
1060
1061 static void ag_rp_54(unsigned v) {
1062 #line - "dsl.syn"
1063 st[v].data.text = copy(sa--);
1064 #line - "dsl.cpp"
1065 }
1066
1067 static void ag_rp_55(unsigned v, long n, long x) {
1068 #line - "dsl.syn"
1069 st[v].data.text[(unsigned)n] = (int) x;
1070 #line - "dsl.cpp"
1071 }
1072
1073 static unsigned ag_rp_56(void) {
1074 #line - "dsl.syn"
1075 return check_integer();
1076 #line - "dsl.cpp"
1077 }
1078
1079 static void ag_rp_57(long cc) {
1080 #line - "dsl.syn"
1081 do_while(cc != 0);
1082 #line - "dsl.cpp"
1083 }
1084
1085 static void ag_rp_58(void) {
1086 #line - "dsl.syn"
1087 do_for_loop();
1088 #line - "dsl.cpp"
1089 }
1090
1091 static void ag_rp_59(int n) {
1092 #line - "dsl.syn"
1093 define_action(n);
1094 #line - "dsl.cpp"
1095 }
1096
1097 static void ag_rp_60(long x) {
1098 #line - "dsl.syn"
1099 define_integer(sa--, x);
1100 #line - "dsl.cpp"
1101 }
1102
1103 static void ag_rp_61(void) {
1104 #line - "dsl.syn"
1105 define_string();
1106 #line - "dsl.cpp"
1107 }
1108
1109 static int ag_rp_62(void) {
1110 #line - "dsl.syn"
1111 return 0;
1112 #line - "dsl.cpp"
1113 }
1114
1115 static int ag_rp_63(int n) {
1116 #line - "dsl.syn"
1117 return n+1;
1118 #line - "dsl.cpp"
1119 }
1120
1121 static void ag_rp_64(int c) {
1122 #line - "dsl.syn"
1123 ++sa << c;
1124 #line - "dsl.cpp"
1125 }
1126
1127 static void ag_rp_65(int c) {
1128 #line - "dsl.syn"
1129 sa << c;
1130 #line - "dsl.cpp"
1131 }
1132
1133 static void ag_rp_66(int c) {
1134 #line - "dsl.syn"
1135 sa << c;
1136 #line - "dsl.cpp"
1137 }
1138
1139 static long ag_rp_67(long c, long x, long y) {
1140 #line - "dsl.syn"
1141 return c != 0 ? x : y;
1142 #line - "dsl.cpp"
1143 }
1144
1145 static long ag_rp_68(long x, long y) {
1146 #line - "dsl.syn"
1147 return x != 0 || y!=0;
1148 #line - "dsl.cpp"
1149 }
1150
1151 static long ag_rp_69(long x, long y) {
1152 #line - "dsl.syn"
1153 return x != 0 && y !=0;
1154 #line - "dsl.cpp"
1155 }
1156
1157 static long ag_rp_70(long x, long y) {
1158 #line - "dsl.syn"
1159 return x | y;
1160 #line - "dsl.cpp"
1161 }
1162
1163 static long ag_rp_71(long x, long y) {
1164 #line - "dsl.syn"
1165 return x ^ y;
1166 #line - "dsl.cpp"
1167 }
1168
1169 static long ag_rp_72(long x, long y) {
1170 #line - "dsl.syn"
1171 return x & y;
1172 #line - "dsl.cpp"
1173 }
1174
1175 static long ag_rp_73(long x, long y) {
1176 #line - "dsl.syn"
1177 return x == y;
1178 #line - "dsl.cpp"
1179 }
1180
1181 static long ag_rp_74(long x, long y) {
1182 #line - "dsl.syn"
1183 return x != y;
1184 #line - "dsl.cpp"
1185 }
1186
1187 static long ag_rp_75(void) {
1188 #line - "dsl.syn"
1189 return string_comp() == 0;
1190 #line - "dsl.cpp"
1191 }
1192
1193 static long ag_rp_76(void) {
1194 #line - "dsl.syn"
1195 return string_comp() != 0;
1196 #line - "dsl.cpp"
1197 }
1198
1199 static long ag_rp_77(long x, long y) {
1200 #line - "dsl.syn"
1201 return x < y;
1202 #line - "dsl.cpp"
1203 }
1204
1205 static long ag_rp_78(long x, long y) {
1206 #line - "dsl.syn"
1207 return x > y;
1208 #line - "dsl.cpp"
1209 }
1210
1211 static long ag_rp_79(long x, long y) {
1212 #line - "dsl.syn"
1213 return x <= y;
1214 #line - "dsl.cpp"
1215 }
1216
1217 static long ag_rp_80(long x, long y) {
1218 #line - "dsl.syn"
1219 return x >= y;
1220 #line - "dsl.cpp"
1221 }
1222
1223 static long ag_rp_81(void) {
1224 #line - "dsl.syn"
1225 return string_comp() < 0;
1226 #line - "dsl.cpp"
1227 }
1228
1229 static long ag_rp_82(void) {
1230 #line - "dsl.syn"
1231 return string_comp() > 0;
1232 #line - "dsl.cpp"
1233 }
1234
1235 static long ag_rp_83(void) {
1236 #line - "dsl.syn"
1237 return string_comp() <= 0;
1238 #line - "dsl.cpp"
1239 }
1240
1241 static long ag_rp_84(void) {
1242 #line - "dsl.syn"
1243 return string_comp() >= 0;
1244 #line - "dsl.cpp"
1245 }
1246
1247 static long ag_rp_85(long x, long y) {
1248 #line - "dsl.syn"
1249 return x << y;
1250 #line - "dsl.cpp"
1251 }
1252
1253 static long ag_rp_86(long x, long y) {
1254 #line - "dsl.syn"
1255 return x >> y;
1256 #line - "dsl.cpp"
1257 }
1258
1259 static long ag_rp_87(long x, long y) {
1260 #line - "dsl.syn"
1261 return x + y;
1262 #line - "dsl.cpp"
1263 }
1264
1265 static long ag_rp_88(long x, long y) {
1266 #line - "dsl.syn"
1267 return x - y;
1268 #line - "dsl.cpp"
1269 }
1270
1271 static long ag_rp_89(long x, long y) {
1272 #line - "dsl.syn"
1273 return x * y;
1274 #line - "dsl.cpp"
1275 }
1276
1277 static long ag_rp_90(long x, long y) {
1278 #line - "dsl.syn"
1279 return x / y;
1280 #line - "dsl.cpp"
1281 }
1282
1283 static long ag_rp_91(long x, long y) {
1284 #line - "dsl.syn"
1285 return x % y;
1286 #line - "dsl.cpp"
1287 }
1288
1289 static long ag_rp_92(long x) {
1290 #line - "dsl.syn"
1291 assert(x);
1292 return x;
1293
1294 #line - "dsl.cpp"
1295 }
1296
1297 static long ag_rp_93(long x) {
1298 #line - "dsl.syn"
1299 return x;
1300 #line - "dsl.cpp"
1301 }
1302
1303 static long ag_rp_94(long x) {
1304 #line - "dsl.syn"
1305 return -x;
1306 #line - "dsl.cpp"
1307 }
1308
1309 static long ag_rp_95(long x) {
1310 #line - "dsl.syn"
1311 return ~x;
1312 #line - "dsl.cpp"
1313 }
1314
1315 static long ag_rp_96(long x) {
1316 #line - "dsl.syn"
1317 return !x;
1318 #line - "dsl.cpp"
1319 }
1320
1321 static long ag_rp_97(long n) {
1322 #line - "dsl.syn"
1323 return ((unsigned char *) sa--)[(unsigned) n];
1324 #line - "dsl.cpp"
1325 }
1326
1327 static long ag_rp_98(void) {
1328 #line - "dsl.syn"
1329 long temp;
1330 sscanf(sa--, "%ld", &temp);
1331 return temp;
1332
1333 #line - "dsl.cpp"
1334 }
1335
1336 static long ag_rp_99(long x) {
1337 #line - "dsl.syn"
1338 return x;
1339 #line - "dsl.cpp"
1340 }
1341
1342 static long ag_rp_100(long x) {
1343 #line - "dsl.syn"
1344 return (*st[(unsigned)x].data.func)();
1345 #line - "dsl.cpp"
1346 }
1347
1348 static long ag_rp_101(void) {
1349 #line - "dsl.syn"
1350 return name_type();
1351 #line - "dsl.cpp"
1352 }
1353
1354 static void ag_rp_102(void) {
1355 #line - "dsl.syn"
1356 concat(sa);
1357 #line - "dsl.cpp"
1358 }
1359
1360 static void ag_rp_103(long first, long last) {
1361 #line - "dsl.syn"
1362 extract((unsigned)first, (unsigned) last);
1363 #line - "dsl.cpp"
1364 }
1365
1366 static void ag_rp_104(void) {
1367 #line - "dsl.syn"
1368 sa << '[';
1369 #line - "dsl.cpp"
1370 }
1371
1372 static void ag_rp_105(void) {
1373 #line - "dsl.syn"
1374 concat(sa) << ']', lookup();
1375 #line - "dsl.cpp"
1376 }
1377
1378 static void ag_rp_106(long x) {
1379 #line - "dsl.syn"
1380 ++sa << st[(unsigned)x].data.text;
1381 #line - "dsl.cpp"
1382 }
1383
1384 static void ag_rp_107(long x) {
1385 #line - "dsl.syn"
1386 ++sa << sd[(unsigned)x];
1387 #line - "dsl.cpp"
1388 }
1389
1390 static void ag_rp_108(void) {
1391 #line - "dsl.syn"
1392 action_string();
1393 #line - "dsl.cpp"
1394 }
1395
1396 static void ag_rp_109(long x) {
1397 #line - "dsl.syn"
1398 ++sa,sa.printf("%ld",x);
1399 #line - "dsl.cpp"
1400 }
1401
1402 static long ag_rp_110(void) {
1403 #line - "dsl.syn"
1404 return 0;
1405 #line - "dsl.cpp"
1406 }
1407
1408 static long ag_rp_111(long x, long d) {
1409 #line - "dsl.syn"
1410 return 16*x + d-'0';
1411 #line - "dsl.cpp"
1412 }
1413
1414 static long ag_rp_112(int d) {
1415 #line - "dsl.syn"
1416 return (d&7) + 9;
1417 #line - "dsl.cpp"
1418 }
1419
1420 static long ag_rp_113(void) {
1421 #line - "dsl.syn"
1422 return 0;
1423 #line - "dsl.cpp"
1424 }
1425
1426 static long ag_rp_114(long n, int d) {
1427 #line - "dsl.syn"
1428 return 8*n + d-'0';
1429 #line - "dsl.cpp"
1430 }
1431
1432 static long ag_rp_115(int d) {
1433 #line - "dsl.syn"
1434 return d-'0';
1435 #line - "dsl.cpp"
1436 }
1437
1438 static long ag_rp_116(long n, int d) {
1439 #line - "dsl.syn"
1440 return 10*n + d-'0';
1441 #line - "dsl.cpp"
1442 }
1443
1444 static int ag_rp_117(int c) {
1445 #line - "dsl.syn"
1446 return c;
1447 #line - "dsl.cpp"
1448 }
1449
1450 static void ag_rp_118(screen_descriptor * scd) {
1451 #line - "dsl.syn"
1452 display_queries(scd);
1453 #line - "dsl.cpp"
1454 }
1455
1456 static screen_descriptor * ag_rp_119(void) {
1457 #line - "dsl.syn"
1458 return reset(qs), new screen_descriptor;
1459 #line - "dsl.cpp"
1460 }
1461
1462 static screen_descriptor * ag_rp_120(screen_descriptor * scd) {
1463 #line - "dsl.syn"
1464 return scd->title = formula(), scd;
1465 #line - "dsl.cpp"
1466 }
1467
1468 static screen_descriptor * ag_rp_121(screen_descriptor * scd, int c) {
1469 #line - "dsl.syn"
1470 return scd->color = c, scd;
1471 #line - "dsl.cpp"
1472 }
1473
1474 static screen_descriptor * ag_rp_122(screen_descriptor * scd, int c) {
1475 #line - "dsl.syn"
1476 return scd->entry_color = c, scd;
1477 #line - "dsl.cpp"
1478 }
1479
1480 static screen_descriptor * ag_rp_123(screen_descriptor * scd, int c) {
1481 #line - "dsl.syn"
1482 return scd->highlight_color = c, scd;
1483 #line - "dsl.cpp"
1484 }
1485
1486 static screen_descriptor * ag_rp_124(screen_descriptor * scd, long w, long h) {
1487 #line - "dsl.syn"
1488 return scd->width = (unsigned)w, scd->height = (unsigned) h, scd;
1489 #line - "dsl.cpp"
1490 }
1491
1492 static screen_descriptor * ag_rp_125(screen_descriptor * scd, long x, long y) {
1493 #line - "dsl.syn"
1494 return scd->pos.x = (unsigned) x,scd->pos.y = (unsigned) y, scd;
1495 #line - "dsl.cpp"
1496 }
1497
1498 static screen_descriptor * ag_rp_126(screen_descriptor * scd, query_item * q) {
1499 #line - "dsl.syn"
1500 return qs << *q, delete q, scd;
1501 #line - "dsl.cpp"
1502 }
1503
1504 static screen_descriptor * ag_rp_127(screen_descriptor * scd, query_item * q) {
1505 #line - "dsl.syn"
1506 return qs << *q, delete q, scd;
1507 #line - "dsl.cpp"
1508 }
1509
1510 static int ag_rp_128(long fg, long bg) {
1511 #line - "dsl.syn"
1512 return COLOR((unsigned)fg,(unsigned)bg);
1513 #line - "dsl.cpp"
1514 }
1515
1516 static query_item * ag_rp_129(void) {
1517 #line - "dsl.syn"
1518 return clear(new query_item);
1519 #line - "dsl.cpp"
1520 }
1521
1522 static query_item * ag_rp_130(query_item * q) {
1523 #line - "dsl.syn"
1524 return q->id = sd << sa--, q;
1525 #line - "dsl.cpp"
1526 }
1527
1528 static query_item * ag_rp_131(query_item * q) {
1529 #line - "dsl.syn"
1530 return q->value = formula(), q;
1531 #line - "dsl.cpp"
1532 }
1533
1534 static query_item * ag_rp_132(query_item * q) {
1535 #line - "dsl.syn"
1536 return q->prompt = formula(), q;
1537 #line - "dsl.cpp"
1538 }
1539
1540 static query_item * ag_rp_133(query_item * q) {
1541 #line - "dsl.syn"
1542 return q->explanation = formula(),q;
1543 #line - "dsl.cpp"
1544 }
1545
1546 static query_item * ag_rp_134(void) {
1547 #line - "dsl.syn"
1548 return clear(new query_item);
1549 #line - "dsl.cpp"
1550 }
1551
1552 static query_item * ag_rp_135(query_item * q) {
1553 #line - "dsl.syn"
1554 return q->prompt = formula(), q;
1555 #line - "dsl.cpp"
1556 }
1557
1558 static query_item * ag_rp_136(query_item * q) {
1559 #line - "dsl.syn"
1560 return q->explanation = formula(),q;
1561 #line - "dsl.cpp"
1562 }
1563
1564 static query_item * ag_rp_137(query_item * q) {
1565 #line - "dsl.syn"
1566 return q->action = copy_action(), q;
1567 #line - "dsl.cpp"
1568 }
1569
1570 static void ag_rp_138(void) {
1571 #line - "dsl.syn"
1572 reset(is) << (sd << sa--);
1573 #line - "dsl.cpp"
1574 }
1575
1576 static void ag_rp_139(void) {
1577 #line - "dsl.syn"
1578 is << (sd << sa--);
1579 #line - "dsl.cpp"
1580 }
1581
1582 static void ag_rp_140(void) {
1583 #line - "dsl.syn"
1584 sa << '[';
1585 #line - "dsl.cpp"
1586 }
1587
1588 static void ag_rp_141(void) {
1589 #line - "dsl.syn"
1590 concat(sa) << ']';
1591 #line - "dsl.cpp"
1592 }
1593
1594
1595 #define READ_COUNTS
1596 #define WRITE_COUNTS
1597 #undef V
1598 #define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
1599 #undef VS
1600 #define VS(i) (PCB).vs[(PCB).ssx + i]
1601
1602 #ifndef GET_CONTEXT
1603 #define GET_CONTEXT CONTEXT = (PCB).input_context
1604 #endif
1605
1606 typedef enum {
1607 ag_action_1,
1608 ag_action_2,
1609 ag_action_3,
1610 ag_action_4,
1611 ag_action_5,
1612 ag_action_6,
1613 ag_action_7,
1614 ag_action_8,
1615 ag_action_9,
1616 ag_action_10,
1617 ag_action_11,
1618 ag_action_12
1619 } ag_parser_action;
1620
1621
1622 #ifndef NULL_VALUE_INITIALIZER
1623 #define NULL_VALUE_INITIALIZER = { 0 }
1624 #endif
1625
1626 static dsl_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
1627
1628 static const unsigned char far ag_rpx[] = {
1629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1630 0, 0, 0, 0, 0, 1, 2, 3, 0, 4, 0, 5, 6, 7, 0, 8, 0, 9,
1631 10, 0, 11, 0, 0, 12, 0, 13, 14, 15, 0, 16, 0, 17, 18, 19, 20, 21,
1632 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 30, 31, 32, 33, 0,
1633 34, 0, 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0,
1634 0, 0, 0, 0, 0, 0, 0, 46, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0,
1635 0, 0, 0, 0, 52, 0, 0, 53, 54, 55, 56, 57, 0, 0, 58, 59, 60, 61,
1636 62, 0, 0, 63, 64, 65, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, 71, 0,
1637 72, 0, 73, 74, 75, 76, 0, 77, 78, 79, 80, 81, 82, 83, 84, 0, 85, 86,
1638 0, 87, 88, 0, 89, 90, 91, 92, 0, 93, 94, 95, 96, 0, 0, 97, 98, 0,
1639 99,100, 0,101, 0,102, 0,103,104,105, 0,106,107,108,109, 0, 0, 0,
1640 0, 0, 0,110,111, 0,112,113,114,115,116,117, 0, 0,118,119, 0,120,
1641 121,122,123,124,125,126,127,128,129, 0,130,131,132,133,134, 0,135,136,
1642 137,138,139, 0, 0, 0,140,141
1643 };
1644
1645 static const unsigned char far ag_key_itt[] = {
1646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1648 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1649 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
1650 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1651 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1657 0
1658 };
1659
1660 static const unsigned short far ag_key_pt[] = {
1661 0,211, 0,214, 0,218, 0,221, 0,220, 0,219, 0,223, 0,224,
1662 0,225, 0,162, 0,163, 0,247, 0,248, 0,249, 0,250, 0,252,
1663 0,253, 0,254, 0,255, 0,256, 0,257, 0,258, 0,259, 0,260,
1664 0
1665 };
1666
1667 static const unsigned char far ag_key_ch[] = {
1668 0, 42, 47,255, 47, 97,105,115,255, 42, 47,255, 42, 47,255, 88,120,255,
1669 60, 61,255, 61, 62,255,101,111,255,108,110,120,255,105,111,255,116,255,
1670 102,110,255, 99,105,116,255, 33, 38, 46, 47, 48, 60, 61, 62, 97, 98, 99,
1671 100,101,102,104,105,108,112,115,116,118,119,124,255, 47, 97,105,115,255,
1672 47,255, 42, 47,255,110,120,255,105,111,255,102,110,255, 99,105,116,255,
1673 47, 97, 98, 99,100,101,102,104,105,108,112,115,116,118,119,255, 42, 47,
1674 255,108,110,120,255,105,111,255,102,110,255, 99,105,116,255, 47, 97, 98,
1675 99,100,101,102,104,105,108,112,115,116,118,119,255,102,110,255, 99,116,
1676 255, 47, 97,102,105,115,119,255, 42, 47,255, 60, 61,255, 61, 62,255,116,
1677 255,110,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,
1678 104,105,108,115,116,124,255,102,110,255, 99,116,255, 97,102,105,115,119,
1679 255, 42, 47,255, 88,120,255, 47, 48,255, 88,120,255, 48,255, 47,255, 34,
1680 39, 63, 92, 97, 98,102,110,114,116,118,120,255, 92,255, 42, 47,255, 60,
1681 61,255, 61, 62,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,
1682 101,102,104,105,108,115,116,124,255, 42, 47,255, 47,255, 47, 62,255, 47,
1683 98, 99,101,102,104,108,115,116,255, 62,255, 47,119,255, 47,101,255, 88,
1684 120,255, 47, 48,255, 60, 61,255, 61, 62,255, 33, 38, 46, 47, 60, 61, 62,
1685 124,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,
1686 105,108,115,116,124,255, 60, 61,255, 61, 62,255,105,116,255, 33, 38, 46,
1687 47, 60, 61, 62, 97, 98, 99,101,102,104,105,108,115,116,124,255, 33, 60,
1688 61, 62,255,105,116,255, 33, 38, 46, 47, 61, 97, 98, 99,101,102,104,105,
1689 108,115,116,124,255,105,116,255, 38, 46, 47, 97, 98, 99,101,102,104,105,
1690 108,115,116,124,255,105,116,255, 46, 47, 97, 98, 99,101,102,104,105,108,
1691 115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,255,108,110,255,105,116,
1692 255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,108,115,
1693 116,119,124,255, 47,101,112,255, 47,100,101,112,118,255, 47, 99,255, 99,
1694 255,105,255, 47, 62,100,255,102,110,255, 99,116,255, 47, 97,101,102,105,
1695 115,119,255,101,255, 42, 47,255, 47,105,255, 47,105,255, 60, 62,255,100,
1696 255,105,255, 46,255, 42, 47,255,105,116,255, 33, 38, 46, 47, 60, 61, 62,
1697 97, 98, 99,101,102,104,105,108,115,116,124,255
1698 };
1699
1700 static const unsigned char far ag_key_act[] = {
1701 0,0,0,4,2,7,7,7,4,3,3,4,0,0,4,5,5,4,0,0,4,0,0,4,7,5,4,7,7,7,4,7,7,4,5,
1702 4,5,6,4,7,7,7,4,3,3,3,2,2,2,3,2,7,7,7,2,2,2,7,2,7,7,2,7,7,7,3,4,3,7,7,
1703 7,4,3,4,0,0,4,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,
1704 4,0,0,4,7,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,4,5,
1705 7,4,7,7,4,3,7,7,2,2,7,4,0,0,4,0,0,4,0,0,4,5,4,6,4,7,7,4,3,3,3,2,2,3,2,
1706 7,7,7,7,7,7,2,7,2,7,3,4,5,7,4,7,7,4,7,7,2,2,7,4,0,0,4,5,5,4,2,2,4,5,5,
1707 4,2,4,3,4,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,4,0,0,4,0,0,4,7,7,4,3,3,3,
1708 2,2,3,2,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,2,4,3,3,4,3,7,7,7,7,7,7,7,7,4,3,
1709 4,3,7,4,3,7,4,5,5,4,3,2,4,0,0,4,0,0,4,3,3,3,3,2,3,2,3,4,7,7,4,3,3,3,3,
1710 3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,0,0,4,7,7,4,3,3,3,3,2,3,2,7,7,7,7,
1711 7,7,7,7,2,7,3,4,3,3,3,3,4,7,7,4,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,7,7,
1712 4,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,7,7,4,3,3,7,7,7,7,7,7,7,7,2,7,3,4,0,0,
1713 4,0,0,4,0,0,4,7,7,4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,2,7,7,7,7,2,7,7,3,4,3,
1714 7,7,4,3,7,7,7,7,4,3,7,4,7,4,7,4,3,3,7,4,5,7,4,7,7,4,3,7,7,7,2,2,7,4,7,
1715 4,0,0,4,2,7,4,3,7,4,3,3,4,7,4,7,4,3,4,0,0,4,7,7,4,3,3,3,2,3,3,3,7,7,7,
1716 7,7,7,7,7,2,7,3,4
1717 };
1718
1719 static const unsigned short far ag_key_parm[] = {
1720 0, 15, 18, 0, 0, 12, 14, 16, 0, 14, 15, 0, 15, 18, 0, 20, 18, 0,
1721 236,234, 0,235,210, 0, 40, 10, 0, 0, 26, 44, 0, 36, 6, 0, 14, 0,
1722 2, 8, 0, 22, 30, 16, 0,233,229,246, 0, 0, 0,232, 0, 12, 46, 34,
1723 0, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4,228, 0, 18, 12, 14, 16, 0,
1724 15, 0, 15, 18, 0, 26, 44, 0, 36, 6, 0, 2, 14, 0, 22, 30, 16, 0,
1725 0, 12, 46, 34, 40, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4, 0, 15, 18,
1726 0, 0, 26, 44, 0, 36, 6, 0, 2, 14, 0, 22, 30, 16, 0, 0, 12, 46,
1727 34, 40, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4, 0, 2, 14, 0, 22, 16,
1728 0, 18, 12, 6, 0, 0, 4, 0, 15, 18, 0,236,234, 0,235,210, 0, 14,
1729 0, 8, 0, 30, 16, 0,233,229,246, 0, 0,232, 0, 12, 46, 34, 26, 36,
1730 28, 0, 32, 0, 24,228, 0, 2, 14, 0, 22, 16, 0, 12, 6, 0, 0, 4,
1731 0, 15, 18, 0, 20, 18, 0, 0, 0, 0, 20, 18, 0, 0, 0, 18, 0, 64,
1732 63, 62, 61, 54, 55, 56, 57, 58, 59, 60, 72, 0, 0, 0, 15, 18, 0,236,
1733 234, 0,235,210, 0, 30, 16, 0,233,229,246, 0, 0,232, 0, 12, 46, 34,
1734 26, 36, 28, 14, 32, 0, 24,228, 0, 15, 18, 0, 0, 0, 18,210, 0, 18,
1735 46, 34, 26, 36, 28, 32, 30, 24, 0,210, 0, 18, 4, 0, 18, 0, 0, 20,
1736 18, 0, 15, 0, 0,236,234, 0,235,210, 0,233,229,246, 18, 0,232, 0,
1737 228, 0, 30, 16, 0,233,229,246, 18,234,232,235, 12, 46, 34, 26, 36, 28,
1738 14, 32, 0, 24,228, 0,236,234, 0,235,210, 0, 30, 16, 0,233,229,246,
1739 18, 0,232, 0, 12, 46, 34, 26, 36, 28, 14, 32, 0, 24,228, 0,233,234,
1740 232,235, 0, 30, 16, 0,233,229,246, 18,232, 12, 46, 34, 26, 36, 28, 14,
1741 32, 0, 24,228, 0, 30, 16, 0,229,246, 18, 12, 46, 34, 26, 36, 28, 14,
1742 32, 0, 24,228, 0, 30, 16, 0,246, 18, 12, 46, 34, 26, 36, 28, 14, 32,
1743 0, 24,228, 0, 15, 18, 0,236,234, 0,235,210, 0, 0, 26, 0, 30, 16,
1744 0,233,229,246, 0, 0,232, 0, 12, 46, 34, 10, 0, 36, 28, 14, 32, 0,
1745 24, 4,228, 0, 18, 44, 42, 0, 18, 40, 44, 42, 38, 0, 15, 34, 0, 34,
1746 0, 8, 0, 18,210, 10, 0, 2, 14, 0, 22, 16, 0, 18, 12, 0, 6, 0,
1747 0, 4, 0, 0, 0, 15, 18, 0, 0, 2, 0, 18, 2, 0,234,235, 0, 10,
1748 0, 2, 0,246, 0, 15, 18, 0, 30, 16, 0,233,229,246, 0,234,232,235,
1749 12, 46, 34, 26, 36, 28, 14, 32, 0, 24,228, 0
1750 };
1751
1752 static const unsigned short far ag_key_jmp[] = {
1753 0, 0, 0, 0, 1, 0, 6, 9, 0, 15, 17, 0, 0, 0, 0, 0, 0, 0,
1754 0, 0, 0, 0, 0, 0, 44, 0, 0, 50, 53, 57, 0, 67, 71, 0, 0, 0,
1755 0, 34, 0, 96,101,104, 0, 19, 21, 23, 12, 15, 18, 25, 21, 27, 33, 39,
1756 24, 27, 31, 73, 36, 82, 90, 39,109,114,122,127, 0,129,131,137,140, 0,
1757 146, 0, 0, 0, 0,172,176, 0,186,190, 0, 0,201, 0,217,222,225, 0,
1758 74,148,154,160,165, 77, 80,192, 83,203,211, 86,230,235,243, 0, 0, 0,
1759 0,272,275,279, 0,289,293, 0, 0,304, 0,320,325,328, 0,106,248,254,
1760 260,265,109,113,295,116,306,314,119,333,338,346, 0, 0,362, 0,364,369,
1761 0,351,353,359,139,142,374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1762 0,161, 0,431,434, 0,379,381,383,152,155,385,158,387,393,399,404,409,
1763 414,163,423,165,439,444, 0, 0,455, 0,457,462, 0,446,452,187,190,467,
1764 0, 0, 0, 0, 0, 0, 0,199,202, 0, 0, 0, 0,208, 0,472, 0, 0,
1765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0,
1766 0, 0, 0, 0, 0,529,532, 0,474,476,478,230,233,480,236,482,488,494,
1767 499,504,509,518,521,239,537,542, 0, 0, 0, 0,261, 0,544,546, 0,548,
1768 550,556,561,566,571,580,588,592, 0,597, 0,599,601, 0,606,608, 0, 0,
1769 0, 0,612,287, 0, 0, 0, 0, 0, 0, 0,614,616,618,620,293,622,296,
1770 624, 0,687,690, 0,626,628,630,632,634,636,638,640,646,652,657,662,667,
1771 676,679,308,695,700, 0, 0, 0, 0, 0, 0, 0,759,762, 0,702,704,706,
1772 708,330,710,333,712,718,724,729,734,739,748,751,336,767,772, 0,774,776,
1773 778,780, 0,839,842, 0,782,784,786,788,790,792,798,804,809,814,819,828,
1774 831,363,847,852, 0,907,910, 0,854,856,858,860,866,872,877,882,887,896,
1775 899,383,915,920, 0,973,976, 0,922,924,926,932,938,943,948,953,962,965,
1776 401,981,986, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1015,1018, 0,1047,
1777 1050, 0,988,990,992,418,421,994,424,996,1002,1008,1013,427,1022,1027,
1778 1036,1039,430,1055,1060,1065, 0,1067,1069,1080, 0,1086,1088,1095,1106,
1779 1112, 0,1120,1122, 0,1127, 0,1132, 0,1134,1136,1138, 0, 0,1155, 0,
1780 1157,1162, 0,1140,1142,1148,1152,475,478,1167, 0,1172, 0, 0, 0, 0,
1781 491,1176, 0,1178,1180, 0,1182,1184, 0,1186, 0,1188, 0,1190, 0, 0,
1782 0, 0,1251,1254, 0,1192,1194,1196,509,1198,1200,1202,1204,1210,1216,
1783 1221,1226,1231,1240,1243,512,1259,1264, 0
1784 };
1785
1786 static const unsigned short far ag_key_index[] = {
1787 4, 9, 43, 67, 0, 72, 72, 72, 90,123, 0, 0, 0,145, 67, 0, 0, 0,
1788 168,168, 0, 0, 0, 72, 0,145,193,205, 0,211, 72,213,228, 0,242,264,
1789 72, 72,264,266, 72, 0, 0, 72, 0,266, 0,269, 0, 0, 0, 0,279,266,
1790 0,281,284,213, 0,290,299, 0,211,311, 67,228,242,242,242,264,242,242,
1791 290,290,290,290, 0, 0,211,211,211,211,211,339,339,358,339,358,311,366,
1792 386,386,386,386,404, 67, 0,205,205,205,213,433, 0, 0,228,228, 0, 72,
1793 0,211, 0,211, 72, 0,454, 72, 0,458, 72, 0, 72, 0,464,467,464,467,
1794 72, 0,213, 72, 0,469,290,211, 0,211, 0,290, 0, 0, 0,471,266,266,
1795 266,481,489,145, 0, 0, 0, 0, 0, 4, 0, 0,358, 0,290,211,290,211,
1796 290,211,211,211,211,211,290,211,290, 0,290, 0, 0, 0,290, 0,290, 0,
1797 211,211,211,211,211,211,290,211,290,211,211,290,211,290,211,290,211,228,
1798 0, 0, 0,266, 0,213, 72, 0, 72, 0,213, 0, 0, 72, 0, 72, 0,213,
1799 211,211,213,213,211, 0, 72, 0, 0,213,213,213,213,213,266, 0,266, 0,
1800 494,497,242, 0,211,311, 0,339,339,211,339,339,311,311,311,311,366,366,
1801 339,339,339,339,500,311,311,366,386,386,386,386, 0, 0, 0, 0, 0, 0,
1802 0, 0, 0, 0, 0, 0,213,213,503,211,266,266,505, 0,507,507,290,211,
1803 515,213,213,213,213,213,213,290,211,211,211, 0, 0, 72, 0,213, 0,290,
1804 211, 0,213, 0, 0
1805 };
1806
1807 static const unsigned char far ag_key_ends[] = {
1808 99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 47,0,
1809 42,0, 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0,
1810 117,116,116,111,110,0, 111,108,111,114,0, 102,97,117,108,116,0,
1811 115,101,0, 116,114,121,0, 112,108,97,110,97,116,105,111,110,0,
1812 101,108,100,0, 114,0, 105,103,104,108,105,103,104,116,0,
1813 111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0,
1814 122,101,0, 114,105,110,103,0, 105,116,108,101,0,
1815 97,114,105,97,98,108,101,0, 104,105,108,101,0, 124,0, 47,0,
1816 99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 42,0,
1817 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1818 101,102,97,117,108,116,0, 116,114,121,0,
1819 112,108,97,110,97,116,105,111,110,0, 101,108,100,0, 114,0,
1820 105,103,104,108,105,103,104,116,0, 116,0, 111,99,97,116,105,111,110,0,
1821 114,111,109,112,116,0, 114,101,101,110,0, 122,101,0,
1822 114,105,110,103,0, 105,116,108,101,0, 97,114,105,97,98,108,101,0,
1823 104,105,108,101,0, 99,116,105,111,110,0, 117,116,116,111,110,0,
1824 111,108,111,114,0, 101,102,97,117,108,116,0, 115,101,0,
1825 116,114,121,0, 112,108,97,110,97,116,105,111,110,0, 101,108,100,0,
1826 114,0, 105,103,104,108,105,103,104,116,0, 116,0,
1827 111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0,
1828 122,101,0, 114,105,110,103,0, 105,116,108,101,0,
1829 97,114,105,97,98,108,101,0, 104,105,108,101,0, 47,0,
1830 99,116,105,111,110,0, 111,114,0, 116,0, 114,101,101,110,0,
1831 114,105,110,103,0, 104,105,108,101,0, 61,0, 38,0, 46,0, 61,0,
1832 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1833 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0,
1834 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1835 105,116,108,101,0, 124,0, 99,116,105,111,110,0, 111,114,0, 116,0,
1836 114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, 47,0,
1837 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0,
1838 111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0,
1839 105,103,104,108,105,103,104,116,0, 110,116,0,
1840 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1841 105,116,108,101,0, 124,0, 47,0, 62,0, 47,0, 117,116,116,111,110,0,
1842 111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0,
1843 105,103,104,108,105,103,104,116,0, 111,99,97,116,105,111,110,0,
1844 105,122,101,0, 105,116,108,101,0, 62,0, 47,0, 104,105,108,101,0,
1845 47,0, 108,115,101,0, 42,0, 61,0, 38,0, 46,0, 47,0, 61,0,
1846 124,0, 61,0, 38,0, 46,0, 47,0, 61,0, 61,0, 61,0,
1847 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1848 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0,
1849 110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1850 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 47,0, 61,0,
1851 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1852 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0,
1853 110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1854 105,116,108,101,0, 124,0, 61,0, 61,0, 61,0, 61,0, 61,0, 38,0,
1855 46,0, 47,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0,
1856 111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0,
1857 105,103,104,108,105,103,104,116,0, 110,116,0,
1858 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1859 105,116,108,101,0, 124,0, 38,0, 46,0, 47,0, 99,116,105,111,110,0,
1860 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0,
1861 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0,
1862 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1863 105,116,108,101,0, 124,0, 46,0, 47,0, 99,116,105,111,110,0,
1864 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0,
1865 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0,
1866 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1867 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0,
1868 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1869 111,0, 115,101,0, 116,114,121,0, 105,101,108,100,0,
1870 105,103,104,108,105,103,104,116,0, 110,116,0,
1871 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1872 105,116,108,101,0, 104,105,108,101,0, 124,0, 47,0,
1873 120,112,108,97,110,97,116,105,111,110,0, 114,111,109,112,116,0,
1874 47,0, 101,102,97,117,108,116,0, 120,112,108,97,110,97,116,105,111,110,0,
1875 114,111,109,112,116,0, 97,114,105,97,98,108,101,0, 42,0,
1876 111,108,111,114,0, 111,108,111,114,0, 110,0, 47,0, 62,0, 111,0,
1877 47,0, 99,116,105,111,110,0, 108,115,101,0, 111,114,0, 116,0,
1878 114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0,
1879 108,115,101,0, 102,0, 47,0, 102,0, 61,0, 61,0, 111,0, 102,0,
1880 46,0, 61,0, 38,0, 46,0, 61,0, 61,0, 61,0, 99,116,105,111,110,0,
1881 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0,
1882 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0,
1883 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1884 105,116,108,101,0, 124,0,
1885 };
1886
1887 #define AG_TCV(x) ag_tcv[(x)]
1888
1889 static const unsigned short far ag_tcv[] = {
1890 28,193,193,193,193,193,193,193,193, 11, 17, 11, 11, 11,193,193,193,193,
1891 193,193,193,193,193,193,193,193, 28,193,193,193,193,193, 11,243, 50,204,
1892 193,241,231,169,213,212,239,237,251,238,193,240,167,194,194,194,194,194,
1893 194,194,195,195,226,216,207,215,209,227,217,261,261,261,261,261,261,262,
1894 262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,
1895 262,203, 70,202,230,262,193,261,261,261,261,261,261,262,262,262,262,262,
1896 262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,206,208,205,
1897 242,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1898 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1899 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1900 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1901 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1902 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1903 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1904 193,193,193,193
1905 };
1906
1907 #ifndef SYNTAX_ERROR
1908 #define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
1909 (PCB).error_message, (PCB).line, (PCB).column)
1910 #endif
1911
1912 #ifndef FIRST_LINE
1913 #define FIRST_LINE 1
1914 #endif
1915
1916 #ifndef FIRST_COLUMN
1917 #define FIRST_COLUMN 1
1918 #endif
1919
1920 #ifndef PARSER_STACK_OVERFLOW
1921 #define PARSER_STACK_OVERFLOW {fprintf(stderr, \
1922 "\nParser stack overflow, line %d, column %d\n",\
1923 (PCB).line, (PCB).column);}
1924 #endif
1925
1926 #ifndef REDUCTION_TOKEN_ERROR
1927 #define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
1928 "\nReduction token error, line %d, column %d\n", \
1929 (PCB).line, (PCB).column);}
1930 #endif
1931
1932
1933 #ifndef INPUT_CODE
1934 #define INPUT_CODE(T) (T)
1935 #endif
1936
1937 typedef enum
1938 {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
1939 ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
1940
1941 static void ag_get_key_word(int ag_k) {
1942 int ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1943 const unsigned char *ag_p;
1944 int ag_ch;
1945 while (1) {
1946 switch (ag_key_act[ag_k]) {
1947 case ag_cf_end_key: {
1948 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
1949 do {
1950 if ((ag_ch = *sp++) == 0) {
1951 int ag_k1 = ag_key_parm[ag_k];
1952 int ag_k2 = ag_key_pt[ag_k1];
1953 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) goto ag_fail;
1954 (PCB).token_number = (dsl_token_type) ag_key_pt[ag_k1 + 1];
1955 return;
1956 }
1957 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
1958 goto ag_fail;
1959 }
1960 case ag_end_key: {
1961 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
1962 do {
1963 if ((ag_ch = *sp++) == 0) {
1964 (PCB).token_number = (dsl_token_type) ag_key_parm[ag_k];
1965 return;
1966 }
1967 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
1968 }
1969 case ag_no_match_key:
1970 ag_fail:
1971 (PCB).la_ptr = (PCB).pointer + ag_save;
1972 return;
1973 case ag_cf_set_key: {
1974 int ag_k1 = ag_key_parm[ag_k];
1975 int ag_k2 = ag_key_pt[ag_k1];
1976 ag_k = ag_key_jmp[ag_k];
1977 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) break;
1978 ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1979 (PCB).token_number = (dsl_token_type) ag_key_pt[ag_k1+1];
1980 break;
1981 }
1982 case ag_set_key:
1983 ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1984 (PCB).token_number = (dsl_token_type) ag_key_parm[ag_k];
1985 case ag_jmp_key:
1986 ag_k = ag_key_jmp[ag_k];
1987 break;
1988 case ag_accept_key:
1989 (PCB).token_number = (dsl_token_type) ag_key_parm[ag_k];
1990 return;
1991 case ag_cf_accept_key: {
1992 int ag_k1 = ag_key_parm[ag_k];
1993 int ag_k2 = ag_key_pt[ag_k1];
1994 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)])
1995 (PCB).la_ptr = (PCB).pointer + ag_save;
1996 else (PCB).token_number = (dsl_token_type) ag_key_pt[ag_k1+1];
1997 return;
1998 }
1999 }
2000 ag_ch = CONVERT_CASE(*(PCB).la_ptr++);
2001 ag_p = &ag_key_ch[ag_k];
2002 if (ag_ch <= 255) while (*ag_p < ag_ch) ag_p++;
2003 if (ag_ch > 255 || *ag_p != ag_ch) {
2004 (PCB).la_ptr = (PCB).pointer + ag_save;
2005 return;
2006 }
2007 ag_k = (int) (ag_p - ag_key_ch);
2008 }
2009 }
2010
2011
2012 #ifndef AG_NEWLINE
2013 #define AG_NEWLINE 10
2014 #endif
2015
2016 #ifndef AG_RETURN
2017 #define AG_RETURN 13
2018 #endif
2019
2020 #ifndef AG_FORMFEED
2021 #define AG_FORMFEED 12
2022 #endif
2023
2024 #ifndef AG_TABCHAR
2025 #define AG_TABCHAR 9
2026 #endif
2027
2028 static void ag_track(void) {
2029 int ag_k = (int) ((PCB).la_ptr - (PCB).pointer);
2030 while (ag_k--) {
2031 switch (*(PCB).pointer++) {
2032 case AG_NEWLINE:
2033 (PCB).column = 1, (PCB).line++;
2034 case AG_RETURN:
2035 case AG_FORMFEED:
2036 break;
2037 case AG_TABCHAR:
2038 (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
2039 break;
2040 default:
2041 (PCB).column++;
2042 }
2043 }
2044 }
2045
2046
2047 static void ag_prot(void) {
2048 int ag_k;
2049 ag_k = 128 - ++(PCB).btsx;
2050 if (ag_k <= (PCB).ssx) {
2051 (PCB).exit_flag = AG_STACK_ERROR_CODE;
2052 PARSER_STACK_OVERFLOW;
2053 return;
2054 }
2055 (PCB).bts[(PCB).btsx] = (PCB).sn;
2056 (PCB).bts[ag_k] = (PCB).ssx;
2057 (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
2058 (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
2059 (PCB).cs[ag_k] = (PCB).cs[(PCB).ssx];
2060 }
2061
2062 static void ag_undo(void) {
2063 if ((PCB).drt == -1) return;
2064 while ((PCB).btsx) {
2065 int ag_k = 128 - (PCB).btsx;
2066 (PCB).sn = (PCB).bts[(PCB).btsx--];
2067 (PCB).ssx = (PCB).bts[ag_k];
2068 (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
2069 (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
2070 (PCB).cs[(PCB).ssx] = (PCB).cs[ag_k];
2071 }
2072 (PCB).token_number = (dsl_token_type) (PCB).drt;
2073 (PCB).ssx = (PCB).dssx;
2074 (PCB).sn = (PCB).dsn;
2075 (PCB).drt = -1;
2076 }
2077
2078
2079
2080 static const int far ag_rtt[] = {
2081 102,105,100, 0,152,155,153,156, 0
2082 };
2083
2084 static const unsigned short far ag_tstt[] = {
2085 225,224,223,206,28,18,17,15,11,0,2,12,13,117,197,
2086 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
2087 209,208,207,206,205,204,203,202,195,194,193,169,167,70,50,17,15,14,11,0,
2088 12,13,
2089 15,11,0,2,12,13,
2090 225,224,223,206,28,18,17,0,8,22,23,24,25,26,27,41,114,115,116,198,
2091 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
2092 209,208,207,206,205,204,203,202,195,194,193,169,167,70,50,17,11,0,20,21,
2093 262,261,15,11,0,2,12,13,117,197,
2094 262,261,15,11,0,2,12,13,117,197,
2095 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,195,194,193,
2096 169,167,70,15,11,0,2,12,13,117,197,
2097 262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,243,242,241,
2098 240,239,238,237,231,230,227,226,225,224,223,221,218,217,216,215,214,213,
2099 209,208,207,206,205,204,195,194,193,169,167,70,50,18,17,15,11,0,2,12,13,
2100 117,197,
2101 262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,243,242,241,
2102 240,239,238,237,231,230,227,226,225,224,223,221,218,217,216,215,214,213,
2103 211,209,208,207,206,205,204,195,194,193,169,167,70,50,28,18,17,15,11,0,
2104 2,12,13,117,197,
2105 262,261,0,1,166,196,
2106 262,261,0,1,166,196,
2107 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,195,194,193,
2108 169,167,70,0,9,201,222,
2109 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
2110 218,217,216,214,213,205,195,194,193,169,167,70,50,18,17,0,8,84,85,198,
2111 225,224,223,206,18,17,0,8,23,24,25,41,114,115,116,198,
2112 28,0,
2113 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
2114 209,208,207,206,205,204,203,202,195,194,193,169,167,70,50,11,0,
2115 17,0,
2116 262,261,260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,
2117 234,233,232,231,230,229,228,227,226,225,224,223,220,217,216,215,213,212,
2118 210,209,208,207,206,205,204,203,195,194,167,28,18,17,15,11,0,2,12,13,
2119 117,197,
2120 262,261,260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,
2121 234,233,232,231,230,229,228,227,226,225,224,223,220,217,216,215,213,212,
2122 210,209,208,207,206,205,204,203,195,194,167,28,18,17,15,11,0,2,12,13,
2123 117,197,
2124 262,261,215,195,194,167,0,101,119,166,196,
2125 262,261,215,195,194,167,0,101,119,166,196,
2126 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
2127 167,70,0,
2128 15,11,0,2,12,13,117,197,
2129 206,0,38,39,41,
2130 18,17,0,8,198,
2131 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
2132 218,217,216,214,213,205,195,194,193,169,167,70,50,0,3,5,6,10,24,33,43,
2133 49,75,76,80,86,87,88,89,91,92,93,95,96,97,98,99,100,102,105,109,110,114,
2134 115,116,172,173,199,200,201,
2135 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,209,
2136 208,207,206,205,204,195,194,193,169,167,163,162,70,50,18,17,15,11,0,2,
2137 12,13,117,197,
2138 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2139 200,
2140 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2141 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2142 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2143 200,244,245,
2144 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,195,194,193,
2145 169,167,70,15,11,0,2,12,13,201,
2146 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,209,
2147 208,207,206,205,204,195,194,193,169,167,70,50,18,17,0,3,5,6,8,10,34,38,
2148 39,40,41,43,49,79,81,82,101,198,199,200,201,
2149 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
2150 209,208,207,206,205,204,203,202,195,194,193,169,167,72,70,64,63,62,61,
2151 60,59,58,57,56,55,54,50,11,0,51,53,65,66,67,68,69,
2152 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
2153 209,208,207,206,205,204,203,202,195,194,193,169,167,70,50,17,11,0,46,48,
2154 260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
2155 232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
2156 206,205,204,203,28,18,17,15,11,0,2,12,13,117,197,
2157 204,203,18,17,15,11,0,2,12,13,117,197,
2158 213,15,11,0,2,12,13,117,197,
2159 206,15,11,0,2,12,13,117,197,
2160 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,204,203,
2161 195,194,193,169,167,70,18,17,15,11,0,2,12,13,117,197,
2162 203,0,29,
2163 213,15,11,0,2,12,13,117,197,
2164 213,0,45,
2165 206,0,41,
2166 262,261,15,11,0,2,12,13,117,197,
2167 217,215,0,
2168 204,0,34,
2169 213,0,45,
2170 260,255,254,253,252,250,249,248,205,18,17,0,8,40,174,176,177,178,179,181,
2171 182,183,184,185,190,198,
2172 262,261,0,1,166,196,
2173 217,215,0,101,107,
2174 215,0,101,
2175 215,0,101,
2176 210,209,208,0,81,82,83,
2177 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,210,209,
2178 208,207,206,205,195,194,193,169,167,70,50,18,17,0,3,5,6,10,31,35,38,39,
2179 41,43,49,77,78,199,200,201,
2180 206,0,38,39,41,
2181 218,0,98,109,
2182 211,205,18,17,0,8,84,85,198,
2183 205,18,17,0,8,84,85,198,
2184 205,0,40,
2185 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,206,
2186 204,195,194,193,169,167,163,162,70,50,15,11,0,2,12,13,117,197,
2187 262,261,195,194,167,0,119,166,196,
2188 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2189 200,
2190 262,261,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,7,34,38,39,41,45,
2191 49,101,108,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2192 217,203,0,29,107,
2193 225,224,223,216,206,205,204,28,18,17,0,34,103,104,
2194 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
2195 209,208,207,206,205,204,203,202,195,194,193,167,72,70,64,63,62,61,60,59,
2196 58,57,56,55,54,50,11,0,53,65,66,67,68,69,170,
2197 195,194,167,0,
2198 194,167,0,
2199 261,195,194,167,0,74,
2200 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,209,
2201 208,207,206,205,204,195,194,193,169,167,70,50,18,17,15,11,0,2,12,13,117,
2202 197,
2203 260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
2204 232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
2205 206,205,204,203,28,18,17,15,11,0,2,12,13,117,197,
2206 260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
2207 232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
2208 206,205,204,203,28,18,17,15,11,0,2,12,13,117,197,
2209 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2210 2,12,13,117,197,
2211 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2212 2,12,13,117,197,
2213 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2214 2,12,13,117,197,
2215 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2216 2,12,13,117,197,
2217 213,0,45,154,
2218 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,151,155,156,166,196,200,
2219 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2220 7,34,38,39,41,45,49,101,108,141,142,143,148,149,150,151,152,153,155,156,
2221 159,160,161,164,166,196,200,244,245,
2222 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2223 7,34,38,39,41,45,49,101,108,141,142,143,148,149,150,151,152,153,155,156,
2224 159,160,161,164,166,196,200,244,245,
2225 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2226 7,34,38,39,41,45,49,101,108,141,142,143,148,149,150,151,152,153,155,156,
2227 159,160,161,164,166,196,200,244,245,
2228 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2229 7,34,38,39,41,45,49,101,108,141,142,143,148,149,150,151,152,153,155,156,
2230 159,160,161,164,166,196,200,244,245,
2231 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2232 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2233 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2234 200,244,245,
2235 241,240,239,0,144,145,147,
2236 238,237,0,141,142,
2237 217,203,0,29,107,
2238 236,210,0,83,139,
2239 235,234,233,232,209,207,204,0,34,79,82,133,134,136,137,
2240 235,234,209,207,0,79,82,136,137,
2241 233,232,0,133,134,
2242 231,0,131,
2243 230,0,129,
2244 208,0,81,
2245 229,0,126,
2246 228,227,0,121,124,
2247 225,224,223,216,206,205,28,18,17,0,103,104,
2248 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
2249 167,70,0,
2250 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,209,
2251 208,207,206,205,204,195,194,193,169,167,163,162,70,50,18,17,15,11,0,2,
2252 12,13,117,197,
2253 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,209,
2254 208,207,206,205,204,195,194,193,169,167,163,162,70,50,18,17,15,11,0,2,
2255 12,13,117,197,
2256 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,209,
2257 208,207,206,205,204,195,194,193,169,167,163,162,70,50,18,17,15,11,0,2,
2258 12,13,117,197,
2259 203,0,29,
2260 262,261,260,255,254,253,252,251,250,249,248,246,243,242,241,240,239,238,237,
2261 236,235,234,233,232,231,230,229,228,227,226,225,224,223,219,218,217,216,
2262 215,213,212,211,210,209,208,207,206,205,204,203,202,195,194,193,169,167,
2263 70,50,28,18,17,15,11,0,2,12,13,117,197,
2264 194,167,0,
2265 261,195,194,167,0,73,74,
2266 194,167,0,
2267 194,167,0,
2268 213,0,43,
2269 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2270 194,193,169,167,70,50,15,11,0,2,12,13,117,197,
2271 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2272 194,193,169,167,70,50,0,30,
2273 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2274 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2275 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2276 200,244,245,
2277 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2278 193,169,167,70,50,0,3,5,6,10,43,49,199,200,201,
2279 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2280 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2281 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2282 200,244,245,
2283 206,15,11,0,2,12,13,117,197,
2284 206,0,41,
2285 259,258,206,205,18,17,0,8,38,39,40,41,188,189,198,
2286 206,15,11,0,2,12,13,117,197,
2287 206,0,41,
2288 259,258,257,256,205,18,17,0,8,40,186,187,188,189,198,
2289 215,15,11,0,2,12,13,117,197,
2290 215,0,101,
2291 215,15,11,0,2,12,13,117,197,
2292 215,0,101,
2293 254,15,11,0,2,12,13,117,197,
2294 254,0,176,184,
2295 254,15,11,0,2,12,13,117,197,
2296 254,0,176,184,
2297 215,15,11,0,2,12,13,117,197,
2298 215,0,101,
2299 18,17,0,8,198,
2300 215,15,11,0,2,12,13,117,197,
2301 215,0,101,
2302 262,261,220,195,194,167,0,111,119,166,196,
2303 262,261,215,213,206,204,195,194,169,167,163,162,50,15,11,0,2,12,13,117,197,
2304 262,261,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,7,34,38,39,41,45,
2305 49,101,108,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2306 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2307 200,
2308 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2309 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2310 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2311 200,244,245,
2312 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2313 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2314 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,206,
2315 204,195,194,193,169,167,163,162,70,50,15,11,0,2,12,13,117,197,
2316 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2317 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2318 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2319 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2320 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2321 193,169,167,70,50,0,3,5,6,10,33,43,49,76,199,200,201,
2322 203,0,29,
2323 204,0,34,
2324 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2325 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2326 210,209,208,207,205,18,17,0,79,
2327 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
2328 218,217,216,214,213,195,194,193,169,167,70,50,18,17,0,3,5,6,8,10,24,33,
2329 43,49,75,76,80,89,91,92,93,95,96,97,98,99,100,102,105,109,110,114,115,
2330 116,172,173,198,199,200,201,
2331 211,0,90,
2332 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
2333 218,217,216,214,213,195,194,193,169,167,70,50,18,17,0,3,5,6,8,10,24,33,
2334 43,49,75,76,80,89,91,92,93,95,96,97,98,99,100,102,105,109,110,114,115,
2335 116,172,173,198,199,200,201,
2336 212,204,0,34,44,
2337 217,203,0,29,107,
2338 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2339 194,193,169,167,70,50,0,158,
2340 213,0,45,
2341 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,150,151,155,156,166,196,200,
2342 225,224,223,206,205,28,18,17,15,11,0,2,12,13,117,197,
2343 169,0,
2344 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2345 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2346 235,234,233,232,212,209,207,204,0,34,44,79,82,133,134,136,137,
2347 212,0,44,
2348 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2349 2,12,13,117,197,
2350 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2351 7,34,38,39,41,45,49,101,108,141,142,143,146,148,149,150,151,152,153,155,
2352 156,159,160,161,164,166,196,200,244,245,
2353 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2354 2,12,13,117,197,
2355 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2356 7,34,38,39,41,45,49,101,108,141,142,143,146,148,149,150,151,152,153,155,
2357 156,159,160,161,164,166,196,200,244,245,
2358 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2359 2,12,13,117,197,
2360 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2361 7,34,38,39,41,45,49,101,108,141,142,143,148,149,150,151,152,153,155,156,
2362 159,160,161,164,166,196,200,244,245,
2363 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2364 7,34,38,39,41,45,49,101,108,140,141,142,143,148,149,150,151,152,153,155,
2365 156,159,160,161,164,166,196,200,244,245,
2366 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2367 7,34,38,39,41,45,49,101,108,140,141,142,143,148,149,150,151,152,153,155,
2368 156,159,160,161,164,166,196,200,244,245,
2369 262,261,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,7,34,38,39,41,45,
2370 49,101,108,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2371 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2372 7,34,38,39,41,45,49,101,108,138,140,141,142,143,148,149,150,151,152,153,
2373 155,156,159,160,161,164,166,196,200,244,245,
2374 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2375 2,12,13,117,197,
2376 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2377 7,34,38,39,41,45,49,101,108,138,140,141,142,143,148,149,150,151,152,153,
2378 155,156,159,160,161,164,166,196,200,244,245,
2379 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2380 2,12,13,117,197,
2381 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2382 200,
2383 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2384 2,12,13,117,197,
2385 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2386 200,
2387 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2388 200,
2389 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2390 200,
2391 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2392 2,12,13,117,197,
2393 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2394 200,
2395 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2396 2,12,13,117,197,
2397 262,261,215,213,206,50,0,1,5,38,39,41,45,49,101,106,150,151,155,156,166,196,
2398 200,
2399 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2400 7,34,38,39,41,45,49,101,108,135,138,140,141,142,143,148,149,150,151,152,
2401 153,155,156,159,160,161,164,166,196,200,244,245,
2402 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2403 7,34,38,39,41,45,49,101,108,135,138,140,141,142,143,148,149,150,151,152,
2404 153,155,156,159,160,161,164,166,196,200,244,245,
2405 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2406 7,34,38,39,41,45,49,101,108,135,138,140,141,142,143,148,149,150,151,152,
2407 153,155,156,159,160,161,164,166,196,200,244,245,
2408 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2409 7,34,38,39,41,45,49,101,108,135,138,140,141,142,143,148,149,150,151,152,
2410 153,155,156,159,160,161,164,166,196,200,244,245,
2411 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2412 7,34,38,39,41,45,49,101,106,108,132,135,138,140,141,142,143,148,149,150,
2413 151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2414 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2415 7,34,38,39,41,45,49,101,106,108,132,135,138,140,141,142,143,148,149,150,
2416 151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2417 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2418 2,12,13,117,197,
2419 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2420 7,34,38,39,41,45,49,101,106,108,130,132,135,138,140,141,142,143,148,149,
2421 150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2422 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2423 2,12,13,117,197,
2424 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2425 7,34,38,39,41,45,49,101,106,108,128,130,132,135,138,140,141,142,143,148,
2426 149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2427 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2428 7,34,38,39,41,45,49,101,106,108,127,128,130,132,135,138,140,141,142,143,
2429 148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2430 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2431 2,12,13,117,197,
2432 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2433 7,34,38,39,41,45,49,101,106,108,125,127,128,130,132,135,138,140,141,142,
2434 143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
2435 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2436 2,12,13,117,197,
2437 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2438 7,34,38,39,41,45,49,101,106,108,123,125,127,128,130,132,135,138,140,141,
2439 142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
2440 245,
2441 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2442 2,12,13,117,197,
2443 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2444 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2445 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2446 200,244,245,
2447 261,195,194,167,0,74,
2448 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
2449 209,208,207,206,205,204,203,202,195,194,193,169,167,70,50,17,11,0,46,48,
2450 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2451 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2452 212,0,44,
2453 203,0,29,
2454 212,0,44,
2455 18,17,0,8,198,
2456 215,15,11,0,2,12,13,117,197,
2457 215,0,101,
2458 215,15,11,0,2,12,13,117,197,
2459 215,0,101,
2460 18,17,0,8,198,
2461 215,0,101,
2462 215,0,101,
2463 215,15,11,0,2,12,13,117,197,
2464 215,0,101,
2465 215,15,11,0,2,12,13,117,197,
2466 215,0,101,
2467 18,17,0,8,198,
2468 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2469 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2470 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2471 200,244,245,
2472 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2473 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2474 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2475 200,244,245,
2476 18,17,0,8,198,
2477 18,17,0,8,198,
2478 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2479 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2480 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2481 200,244,245,
2482 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2483 193,169,167,70,50,0,3,5,6,43,49,175,191,199,200,201,
2484 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2485 194,193,169,167,70,50,15,11,0,2,12,13,117,197,
2486 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2487 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2488 215,0,101,
2489 216,205,204,18,17,0,34,103,104,
2490 216,205,18,17,0,103,104,
2491 204,0,34,
2492 204,0,34,
2493 204,0,34,
2494 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,210,209,
2495 208,206,205,195,194,193,169,167,70,50,18,17,0,3,5,6,10,31,35,38,39,41,
2496 43,49,77,78,199,200,201,
2497 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2498 194,193,169,167,70,50,0,3,5,6,10,35,38,39,41,43,49,199,200,201,
2499 204,0,34,
2500 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2501 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2502 214,206,18,17,15,11,0,2,12,13,117,197,
2503 214,206,18,17,0,8,38,39,41,84,85,198,
2504 260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
2505 232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
2506 206,205,204,203,28,18,17,15,11,0,2,12,13,117,197,
2507 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2508 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2509 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2510 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2511 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2512 200,244,245,
2513 217,203,0,29,107,
2514 212,204,0,34,44,
2515 241,240,239,0,144,145,147,
2516 241,240,239,0,144,145,147,
2517 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2518 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2519 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2520 200,244,245,
2521 238,237,0,141,142,
2522 238,237,0,141,142,
2523 204,0,34,
2524 204,0,34,
2525 204,0,34,
2526 204,0,34,
2527 204,0,34,
2528 204,0,34,
2529 236,210,0,83,139,
2530 236,210,0,83,139,
2531 236,210,0,83,139,
2532 236,210,0,83,139,
2533 235,234,209,207,204,0,34,79,82,136,137,
2534 235,234,209,207,0,79,82,136,137,
2535 235,234,209,207,0,79,82,136,137,
2536 233,232,0,133,134,
2537 231,0,131,
2538 230,0,129,
2539 208,0,81,
2540 229,0,126,
2541 226,0,122,
2542 204,202,0,32,34,
2543 206,0,38,39,41,
2544 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2545 193,169,167,70,50,0,3,5,6,43,49,175,191,199,200,201,
2546 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2547 193,169,167,70,50,0,3,5,6,43,49,175,191,199,200,201,
2548 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2549 193,169,167,70,50,0,3,5,6,43,49,175,191,199,200,201,
2550 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2551 193,169,167,70,50,0,3,5,6,43,49,175,191,199,200,201,
2552 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2553 193,169,167,70,50,0,3,5,6,43,49,175,191,199,200,201,
2554 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,195,194,193,
2555 169,167,70,0,3,201,
2556 251,0,180,
2557 251,0,180,
2558 251,0,180,
2559 203,0,29,
2560 204,18,17,0,8,34,198,
2561 219,206,204,0,34,112,113,
2562 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2563 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2564 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2565 200,244,245,
2566 210,209,208,205,18,17,0,
2567 210,209,208,205,204,18,17,0,34,
2568 214,0,92,93,
2569 204,202,0,32,34,
2570 246,0,157,
2571 246,212,0,44,157,
2572 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2573 2,12,13,117,197,
2574 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2575 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2576 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2577 200,244,245,
2578 260,255,254,253,252,251,250,249,248,246,235,234,233,232,231,230,229,228,227,
2579 226,225,224,223,217,216,212,209,208,207,206,205,204,203,28,18,17,15,11,
2580 0,2,12,13,117,197,
2581 204,18,17,0,8,34,198,
2582 204,18,17,0,8,34,198,
2583 204,18,17,0,8,34,198,
2584 204,18,17,0,8,34,198,
2585 204,18,17,0,8,34,198,
2586 18,17,0,8,198,
2587 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2588 2,12,13,117,197,
2589 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2590 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2591 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2592 200,244,245,
2593 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2594 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2595 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2596 200,244,245,
2597 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2598 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2599 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2600 200,244,245,
2601 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2602 194,193,169,167,70,50,0,192,
2603 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,195,194,
2604 193,169,167,70,50,0,3,5,6,43,49,191,199,200,201,
2605 206,15,11,0,2,12,13,117,197,
2606 206,0,38,39,41,
2607 216,205,18,17,0,103,104,
2608 206,0,38,39,41,
2609 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,15,11,0,
2610 2,12,13,117,197,
2611 262,261,243,242,238,237,215,213,206,204,195,194,169,167,163,162,50,0,1,4,5,
2612 7,34,38,39,41,45,49,94,101,106,108,120,123,125,127,128,130,132,135,138,
2613 140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,
2614 200,244,245,
2615 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,213,206,195,
2616 194,193,169,167,70,50,0,3,5,6,10,31,35,38,39,41,43,49,199,200,201,
2617 203,0,29,
2618 212,0,44,
2619 204,202,0,32,34,
2620
2621 };
2622
2623
2624 static unsigned const char far ag_astt[6809] = {
2625 8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
2626 9,9,9,9,9,9,9,9,9,9,9,9,9,1,3,9,7,3,1,1,9,5,3,3,1,1,1,1,1,8,1,1,7,1,0,1,1,
2627 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2628 1,1,1,1,1,8,1,7,1,1,5,5,1,1,7,1,1,1,1,3,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,
2629 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2630 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2631 5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2632 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,7,
2633 1,2,2,1,1,7,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,8,8,
2634 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,8,8,8,8,8,8,8,1,1,7,1,1,1,1,
2635 1,1,1,1,1,1,5,3,3,3,3,1,1,1,1,1,3,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
2636 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2637 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,
2638 1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2639 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,10,10,10,7,1,2,2,
2640 2,1,1,1,10,10,10,7,1,2,2,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
2641 10,10,10,10,10,4,1,1,5,1,1,1,1,3,1,7,2,1,2,1,1,5,3,1,2,2,2,1,2,2,2,2,2,2,2,
2642 2,2,2,2,1,1,1,1,1,2,2,1,2,8,2,2,2,2,2,2,2,7,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,
2643 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2644 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,1,2,
2645 1,2,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,
2646 1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,
2647 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,9,5,3,3,1,1,2,2,2,2,2,2,2,
2648 2,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,7,2,3,3,3,1,3,2,1,3,2,
2649 1,1,3,3,3,3,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2650 2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,3,2,7,3,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,
2651 2,2,2,2,2,2,2,2,4,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,3,1,5,5,5,5,5,5,5,
2652 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2653 1,1,7,1,1,1,1,3,5,5,5,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1,1,1,
2654 3,10,10,10,10,10,10,10,10,10,10,10,10,10,10,5,10,5,5,5,10,10,10,10,10,10,5,
2655 5,1,1,7,1,1,1,1,3,1,5,1,5,1,1,7,1,1,1,1,3,1,7,1,1,7,2,5,5,1,1,7,1,1,1,1,3,
2656 4,4,4,1,4,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,7,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2657 7,1,2,2,1,1,7,1,1,1,7,1,1,7,1,1,1,1,7,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2658 2,2,5,5,5,8,1,5,2,2,2,2,2,2,2,5,5,7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,1,1,1,7,2,
2659 1,2,1,5,3,1,8,5,1,1,7,1,1,1,1,5,1,1,7,1,1,3,1,1,7,3,5,5,5,5,5,5,5,5,5,5,5,
2660 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,10,10,10,4,2,2,2,1,
2661 1,1,1,1,2,7,1,1,2,1,2,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,
2662 2,1,2,1,2,1,2,1,1,1,2,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,5,1,1,5,5,5,1,5,5,
2663 1,5,5,5,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2664 1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,7,1,1,1,1,1,1,1,10,10,10,5,10,10,5,2,10,
2665 10,10,5,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2666 5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2667 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,
2668 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,
2669 1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,
2670 5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,
2671 1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,7,1,2,1,1,1,1,1,
2672 2,7,1,2,2,1,2,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,2,1,
2673 2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,
2674 1,1,2,2,1,2,2,2,2,7,1,2,1,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,
2675 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,2,1,2,1,2,1,2,1,1,1,2,1,1,
2676 2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,
2677 2,1,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,
2678 1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2679 1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,5,1,1,1,1,1,5,1,1,1,1,5,1,1,1,
2680 1,5,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,5,1,1,1,5,1,1,
2681 5,1,1,5,1,1,5,1,1,1,5,1,1,5,5,5,1,5,5,5,5,5,7,2,2,10,10,10,10,10,10,10,10,
2682 10,10,10,10,10,10,10,10,10,10,10,10,10,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2683 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,
2684 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,
2685 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
2686 3,1,4,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2687 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,
2688 7,2,1,1,1,7,1,1,2,2,5,2,2,5,2,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2689 5,5,5,5,5,1,1,7,1,1,1,1,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2690 4,7,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,
2691 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,
2692 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2693 1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2694 1,1,2,2,1,1,1,2,2,2,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1,1,1,1,7,3,1,1,1,2,
2695 1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,5,1,1,7,1,1,1,
2696 1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,5,1,1,7,1,1,1,
2697 1,3,1,7,1,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,
2698 1,10,10,10,7,1,2,2,2,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,
2699 2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,
2700 1,1,1,2,7,1,1,2,1,2,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,
2701 2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2702 1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,3,
2703 3,1,1,1,2,1,2,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2704 5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,
2705 7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,
2706 2,2,2,7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2707 2,2,2,2,2,7,2,3,3,1,1,1,1,1,1,1,1,1,5,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2708 2,2,2,1,2,2,2,2,2,2,2,5,2,3,3,1,1,1,2,1,2,1,1,1,1,1,4,4,4,1,4,4,4,7,1,2,2,
2709 2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,1,1,5,1,3,3,3,1,
2710 3,1,1,1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,2,2,2,1,
2711 2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,1,1,5,1,3,3,3,1,3,1,
2712 1,1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,7,1,
2713 1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,1,1,1,2,
2714 7,1,1,2,1,2,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,7,2,2,2,
2715 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,
2716 1,1,1,1,1,1,1,1,7,1,3,1,1,1,1,1,1,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2717 1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,2,1,2,1,2,1,2,1,1,1,
2718 2,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2719 5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,2,1,2,1,2,1,2,1,
2720 1,1,2,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,
2721 5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,2,1,2,1,2,1,
2722 2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2723 1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
2724 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,
2725 1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,2,1,2,1,2,1,
2726 2,1,1,1,2,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,
2727 7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,
2728 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,
2729 2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,
2730 1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,1,2,1,
2731 2,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,
2732 1,1,1,1,1,2,7,1,1,2,1,2,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,2,7,1,1,2,1,2,1,1,
2733 1,1,1,1,2,2,2,2,1,1,1,1,1,1,2,7,1,1,2,1,2,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,
2734 5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,1,2,1,2,1,1,1,1,1,
2735 1,2,2,2,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,
2736 7,1,1,2,1,2,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,
2737 1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,
2738 1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2739 1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,
2740 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
2741 1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,
2742 1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,
2743 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2744 1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,
2745 2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,
2746 1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2747 1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
2748 3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,
2749 1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,
2750 2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
2751 2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,
2752 1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2753 1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,
2754 1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,
2755 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,
2756 5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,
2757 2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
2758 1,1,2,10,10,10,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,
2759 2,2,2,2,2,2,2,2,7,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,
2760 2,3,3,1,1,1,2,1,2,1,1,1,1,1,1,7,1,1,4,1,1,7,2,1,1,7,2,1,5,1,1,7,1,1,1,1,3,
2761 1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,7,1,1,7,1,5,1,1,7,1,1,1,1,3,1,7,
2762 1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,
2763 1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,
2764 2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,
2765 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,7,2,1,1,
2766 1,7,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,
2767 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,
2768 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,
2769 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2770 2,2,2,1,2,2,2,2,2,2,2,7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,1,7,1,1,5,1,5,5,7,1,2,
2771 2,1,5,5,5,7,2,2,1,4,1,1,4,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,
2772 1,5,2,2,2,2,2,2,2,5,5,7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,
2773 2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,3,3,1,2,2,1,2,1,1,1,1,1,1,4,1,2,2,2,2,
2774 2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,5,
2775 5,5,5,1,1,7,1,1,1,1,3,8,1,1,1,7,1,2,1,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2776 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
2777 3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,3,3,1,1,1,2,1,2,1,
2778 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,
2779 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,4,1,1,1,1,7,
2780 1,3,1,1,1,4,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,
2781 1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,
2782 2,1,1,1,1,1,4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,1,4,1,1,
2783 1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,
2784 1,1,4,1,1,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,7,1,1,1,7,2,1,1,7,2,1,2,
2785 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,
2786 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,
2787 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2788 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
2789 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
2790 2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,7,1,1,7,1,1,7,1,1,4,1,1,1,1,7,2,1,1,1,8,1,
2791 7,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,
2792 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,4,4,4,4,4,4,7,4,
2793 4,4,4,1,4,4,7,1,1,7,1,1,1,1,7,2,1,1,7,1,1,1,7,2,1,5,5,5,5,5,5,5,5,5,5,5,5,
2794 5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,
2795 1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,
2796 1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2797 1,1,7,1,1,1,1,3,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,
2798 1,1,7,2,1,1,1,1,7,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,
2799 1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,
2800 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
2801 2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2802 1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,
2803 2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,
2804 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,2,2,2,2,2,2,2,2,
2805 2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,
2806 2,1,5,5,5,7,2,2,1,7,2,1,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
2807 3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,
2808 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,
2809 2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,3,3,1,1,1,2,1,2,1,1,1,1,1,1,4,1,1,7,2,1,1,
2810 7,2,1
2811 };
2812
2813
2814 static const unsigned short far ag_pstt[] = {
2815 3,3,3,3,3,3,3,1,2,0,2,2,1,2,3,
2816 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,3,5,
2817 1,6,1,
2818 1,128,472,128,128,1,
2819 5,6,7,8,15,4,9,3,14,0,14,14,14,14,15,13,12,11,10,9,
2820 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
2821 16,16,16,16,16,16,16,16,16,17,16,4,16,17,
2822 471,471,1,2,5,2,2,1,2,500,
2823 471,471,1,2,6,2,2,1,2,499,
2824 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2825 471,471,471,1,2,7,2,2,1,2,498,
2826 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2827 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2828 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,8,2,2,1,
2829 2,481,
2830 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2831 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2832 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,
2833 9,2,2,1,2,473,
2834 18,19,10,20,130,130,
2835 18,19,11,21,130,130,
2836 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,12,24,22,
2837 23,
2838 26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,88,
2839 26,26,26,26,26,26,26,4,9,13,25,25,26,9,
2840 5,6,7,8,4,9,19,17,17,17,17,13,12,11,10,9,
2841 20,15,
2842 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,
2843 12,17,
2844 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2845 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2846 471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,18,2,2,1,2,
2847 537,
2848 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2849 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2850 471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,19,2,2,1,2,
2851 536,
2852 18,19,27,132,132,132,20,28,132,131,131,
2853 18,19,27,132,132,132,21,29,132,131,131,
2854 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,126,
2855 1,30,471,30,30,1,30,497,
2856 8,24,123,31,35,
2857 4,9,89,87,9,
2858 30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,30,40,41,58,30,
2859 30,30,30,30,30,47,26,44,22,21,39,57,45,33,32,57,53,52,57,56,58,57,56,54,
2860 46,57,57,57,55,55,51,50,49,41,48,12,11,10,47,42,35,34,38,
2861 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2862 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,27,
2863 2,2,1,2,490,
2864 18,19,27,59,8,47,28,60,63,193,31,35,61,32,62,64,63,63,191,192,130,130,34,
2865 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,29,60,83,85,83,77,
2866 193,31,35,82,32,95,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
2867 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
2868 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,1,128,472,
2869 128,128,1,96,
2870 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,27,41,98,97,99,8,101,69,30,
2871 30,30,30,30,30,47,4,9,31,23,22,21,37,100,39,38,31,34,35,33,32,39,39,39,
2872 39,9,35,34,38,
2873 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,
2874 49,49,49,49,49,49,49,103,102,61,60,59,58,57,56,55,54,53,52,51,46,49,32,
2875 48,50,50,50,105,104,50,
2876 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,40,43,43,43,43,43,43,
2877 43,43,43,43,43,43,43,43,43,43,43,33,42,106,
2878 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2879 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2880 471,471,471,471,471,471,471,1,2,34,2,2,1,2,475,
2881 471,471,471,471,1,2,35,2,2,1,2,474,
2882 471,1,2,36,2,2,1,2,493,
2883 471,1,2,37,2,2,1,2,522,
2884 31,31,31,31,31,31,31,31,31,31,31,31,31,31,471,31,471,471,471,31,31,31,31,31,
2885 31,471,471,1,2,38,2,2,1,2,476,
2886 107,26,108,
2887 471,1,2,40,2,2,1,2,489,
2888 59,41,109,
2889 8,42,213,
2890 471,471,1,2,43,2,2,1,2,496,
2891 118,118,23,
2892 69,83,110,
2893 59,46,111,
2894 112,115,126,118,120,122,124,129,101,4,9,47,214,212,130,128,125,123,121,119,
2895 117,114,127,116,113,9,
2896 18,19,48,131,130,130,
2897 132,27,49,134,133,
2898 27,50,135,
2899 27,51,136,
2900 137,98,97,52,140,139,138,
2901 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,73,73,73,144,8,73,30,30,
2902 30,30,30,30,47,73,73,53,23,22,21,141,142,142,33,31,35,33,32,143,144,35,
2903 34,38,
2904 8,54,103,31,35,
2905 36,111,110,41,
2906 146,88,4,9,56,145,145,146,9,
2907 88,4,9,57,147,147,91,9,
2908 101,58,93,
2909 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2910 471,471,471,471,471,471,471,471,471,471,1,2,59,2,2,1,2,488,
2911 18,19,132,132,132,183,132,131,131,
2912 18,19,27,59,8,47,61,60,63,193,31,35,61,32,62,148,63,63,191,192,130,130,34,
2913 18,19,27,59,8,69,207,207,65,205,201,201,47,62,60,194,149,194,77,193,31,35,
2914 82,32,62,194,149,149,194,76,191,192,68,67,66,201,130,130,34,71,70,
2915 132,107,184,150,151,
2916 113,113,113,153,113,113,69,113,113,113,64,152,125,125,
2917 154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,
2918 154,154,154,154,154,154,154,154,154,154,154,154,103,102,61,60,59,58,57,
2919 56,55,54,53,52,51,154,154,65,154,154,154,105,104,154,154,
2920 208,208,208,198,
2921 206,206,197,
2922 204,202,202,202,196,202,
2923 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2924 471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,69,2,2,1,2,
2925 479,
2926 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2927 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2928 471,471,471,471,471,471,471,1,2,70,2,2,1,2,520,
2929 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2930 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2931 471,471,471,471,471,471,471,1,2,71,2,2,1,2,519,
2932 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,72,
2933 2,2,1,2,518,
2934 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,73,
2935 2,2,1,2,517,
2936 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,74,
2937 2,2,1,2,513,
2938 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,75,
2939 2,2,1,2,512,
2940 59,76,155,181,
2941 18,19,27,59,8,47,77,60,178,193,31,35,61,32,62,178,191,192,130,130,34,
2942 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,78,60,174,149,174,77,
2943 193,31,35,82,32,62,174,81,80,174,79,78,149,149,174,76,191,192,68,67,66,
2944 201,130,130,34,71,70,
2945 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,79,60,173,149,173,77,
2946 193,31,35,82,32,62,173,81,80,173,79,78,149,149,173,76,191,192,68,67,66,
2947 201,130,130,34,71,70,
2948 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,80,60,172,149,172,77,
2949 193,31,35,82,32,62,172,81,80,172,79,78,149,149,172,76,191,192,68,67,66,
2950 201,130,130,34,71,70,
2951 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,81,60,171,149,171,77,
2952 193,31,35,82,32,62,171,81,80,171,79,78,149,149,171,76,191,192,68,67,66,
2953 201,130,130,34,71,70,
2954 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,82,60,83,85,83,77,
2955 193,31,35,82,32,157,62,156,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
2956 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
2957 158,160,162,162,163,161,159,
2958 74,75,159,165,164,
2959 132,107,184,150,166,
2960 168,137,150,167,169,
2961 170,172,176,178,98,99,69,87,152,175,174,179,177,173,171,
2962 170,172,98,99,145,183,182,181,180,
2963 176,178,143,185,184,
2964 186,141,187,
2965 188,139,189,
2966 97,137,190,
2967 191,135,192,
2968 193,195,133,196,194,
2969 113,113,113,153,113,113,113,113,113,95,124,124,
2970 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,129,
2971 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2972 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,97,
2973 2,2,1,2,483,
2974 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2975 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,98,
2976 2,2,1,2,484,
2977 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2978 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,99,
2979 2,2,1,2,482,
2980 107,36,108,
2981 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2982 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2983 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2984 471,471,471,471,471,1,2,101,2,2,1,2,480,
2985 67,67,102,
2986 204,197,197,197,103,197,197,
2987 69,69,65,
2988 68,68,64,
2989 41,106,198,
2990 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
2991 471,471,471,471,471,471,1,2,107,2,2,1,2,478,
2992 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,
2993 108,199,
2994 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,109,60,83,85,83,77,
2995 193,31,35,82,32,200,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
2996 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
2997 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,110,
2998 23,22,21,201,33,32,35,34,38,
2999 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,111,60,83,85,83,77,
3000 193,31,35,82,32,202,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3001 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3002 471,1,2,112,2,2,1,2,535,
3003 8,113,230,
3004 204,206,8,101,4,9,114,231,203,31,208,35,207,205,9,
3005 471,1,2,115,2,2,1,2,530,
3006 8,116,224,
3007 204,206,211,213,101,4,9,117,225,215,214,212,210,209,9,
3008 471,1,2,118,2,2,1,2,528,
3009 27,119,216,
3010 471,1,2,120,2,2,1,2,527,
3011 27,121,217,
3012 471,1,2,122,2,2,1,2,525,
3013 126,123,218,127,
3014 471,1,2,124,2,2,1,2,524,
3015 126,125,219,127,
3016 471,1,2,126,2,2,1,2,529,
3017 27,127,220,
3018 4,9,128,216,9,
3019 471,1,2,129,2,2,1,2,523,
3020 27,130,221,
3021 18,19,222,132,132,132,131,223,132,131,131,
3022 471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,132,2,2,1,2,492,
3023 18,19,27,59,8,69,207,207,65,205,201,201,47,133,60,224,149,224,77,193,31,35,
3024 82,32,62,224,149,149,224,76,191,192,68,67,66,201,130,130,34,71,70,
3025 18,19,27,59,8,47,134,60,63,193,31,35,61,32,62,225,63,63,191,192,130,130,34,
3026 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,135,60,83,85,83,77,
3027 193,31,35,82,32,226,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3028 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3029 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3030 136,23,22,21,141,227,227,33,31,35,33,32,35,34,38,
3031 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
3032 471,471,471,471,471,471,471,471,471,471,1,2,137,2,2,1,2,485,
3033 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3034 138,23,22,21,141,228,228,33,31,35,33,32,35,34,38,
3035 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3036 139,23,22,21,141,229,229,33,31,35,33,32,35,34,38,
3037 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,140,
3038 23,22,21,39,45,33,32,230,35,34,38,
3039 107,32,108,
3040 69,84,231,
3041 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3042 74,23,22,21,141,232,232,33,31,35,33,32,35,34,38,
3043 80,80,80,99,75,75,75,144,233,
3044 30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,30,40,41,30,30,
3045 30,30,30,30,47,4,9,89,44,22,21,87,39,96,45,33,32,96,53,52,96,99,54,46,
3046 96,96,96,55,55,51,50,49,41,48,12,11,10,47,42,9,35,34,38,
3047 234,92,235,
3048 30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,30,40,41,30,30,
3049 30,30,30,30,47,4,9,89,44,22,21,87,39,95,45,33,32,95,53,52,95,100,54,46,
3050 95,95,95,55,55,51,50,49,41,48,12,11,10,47,42,9,35,34,38,
3051 236,69,148,152,195,
3052 132,107,149,150,166,
3053 188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,
3054 188,188,188,188,188,188,150,237,
3055 59,151,238,
3056 18,19,27,59,8,47,152,60,239,193,31,35,61,32,62,239,239,191,192,130,130,34,
3057 471,471,471,471,471,471,471,471,1,2,153,2,2,1,2,491,
3058 209,154,
3059 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3060 155,23,22,21,141,240,240,33,31,35,33,32,35,34,38,
3061 170,172,176,178,236,98,99,69,156,152,195,175,174,179,177,173,171,
3062 236,157,180,
3063 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,158,
3064 2,2,1,2,516,
3065 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,159,60,169,149,169,
3066 77,193,31,35,82,32,62,169,81,80,169,168,79,78,149,149,169,76,191,192,68,
3067 67,66,201,130,130,34,71,70,
3068 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,160,
3069 2,2,1,2,515,
3070 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,161,60,169,149,169,
3071 77,193,31,35,82,32,62,169,81,80,169,167,79,78,149,149,169,76,191,192,68,
3072 67,66,201,130,130,34,71,70,
3073 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,162,
3074 2,2,1,2,514,
3075 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,163,60,166,149,166,
3076 77,193,31,35,82,32,62,166,81,80,166,79,78,149,149,166,76,191,192,68,67,
3077 66,201,130,130,34,71,70,
3078 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,164,60,241,149,241,
3079 77,193,31,35,82,32,62,241,241,81,80,241,79,78,149,149,241,76,191,192,68,
3080 67,66,201,130,130,34,71,70,
3081 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,165,60,242,149,242,
3082 77,193,31,35,82,32,62,242,242,81,80,242,79,78,149,149,242,76,191,192,68,
3083 67,66,201,130,130,34,71,70,
3084 18,19,27,59,8,69,207,207,65,205,201,201,47,166,60,177,149,177,77,193,31,35,
3085 243,32,62,177,149,149,177,76,191,192,68,67,66,201,130,130,34,71,70,
3086 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,167,60,83,149,83,77,
3087 193,31,35,82,32,62,83,244,83,81,80,83,79,78,149,149,83,76,191,192,68,67,
3088 66,201,130,130,34,71,70,
3089 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,168,
3090 2,2,1,2,511,
3091 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,169,60,83,149,83,77,
3092 193,31,35,82,32,62,83,245,83,81,80,83,79,78,149,149,83,76,191,192,68,67,
3093 66,201,130,130,34,71,70,
3094 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,170,
3095 2,2,1,2,510,
3096 18,19,27,59,8,47,171,60,63,193,31,35,61,32,62,246,63,63,191,192,130,130,34,
3097 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,172,
3098 2,2,1,2,509,
3099 18,19,27,59,8,47,173,60,63,193,31,35,61,32,62,247,63,63,191,192,130,130,34,
3100 18,19,27,59,8,47,174,60,63,193,31,35,61,32,62,248,63,63,191,192,130,130,34,
3101 18,19,27,59,8,47,175,60,63,193,31,35,61,32,62,249,63,63,191,192,130,130,34,
3102 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,176,
3103 2,2,1,2,508,
3104 18,19,27,59,8,47,177,60,63,193,31,35,61,32,62,250,63,63,191,192,130,130,34,
3105 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,178,
3106 2,2,1,2,507,
3107 18,19,27,59,8,47,179,60,63,193,31,35,61,32,62,251,63,63,191,192,130,130,34,
3108 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,180,60,83,149,83,77,
3109 193,31,35,82,32,62,83,252,84,83,81,80,83,79,78,149,149,83,76,191,192,68,
3110 67,66,201,130,130,34,71,70,
3111 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,181,60,83,149,83,77,
3112 193,31,35,82,32,62,83,253,84,83,81,80,83,79,78,149,149,83,76,191,192,68,
3113 67,66,201,130,130,34,71,70,
3114 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,182,60,83,149,83,77,
3115 193,31,35,82,32,62,83,254,84,83,81,80,83,79,78,149,149,83,76,191,192,68,
3116 67,66,201,130,130,34,71,70,
3117 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,183,60,83,149,83,77,
3118 193,31,35,82,32,62,83,255,84,83,81,80,83,79,78,149,149,83,76,191,192,68,
3119 67,66,201,130,130,34,71,70,
3120 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,184,60,83,85,83,77,
3121 193,31,35,82,32,62,256,83,257,86,84,83,81,80,83,79,78,85,85,83,76,191,
3122 192,68,67,66,201,130,130,34,71,70,
3123 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,185,60,83,85,83,77,
3124 193,31,35,82,32,62,256,83,258,86,84,83,81,80,83,79,78,85,85,83,76,191,
3125 192,68,67,66,201,130,130,34,71,70,
3126 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,186,
3127 2,2,1,2,506,
3128 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,187,60,83,85,83,77,
3129 193,31,35,82,32,62,87,83,259,88,86,84,83,81,80,83,79,78,85,85,83,76,191,
3130 192,68,67,66,201,130,130,34,71,70,
3131 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,188,
3132 2,2,1,2,505,
3133 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,189,60,83,85,83,77,
3134 193,31,35,82,32,62,87,83,260,89,88,86,84,83,81,80,83,79,78,85,85,83,76,
3135 191,192,68,67,66,201,130,130,34,71,70,
3136 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,190,60,83,85,83,77,
3137 193,31,35,82,32,62,87,83,261,90,89,88,86,84,83,81,80,83,79,78,85,85,83,
3138 76,191,192,68,67,66,201,130,130,34,71,70,
3139 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,191,
3140 2,2,1,2,504,
3141 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,192,60,83,85,83,77,
3142 193,31,35,82,32,62,87,83,262,91,90,89,88,86,84,83,81,80,83,79,78,85,85,
3143 83,76,191,192,68,67,66,201,130,130,34,71,70,
3144 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,193,
3145 2,2,1,2,503,
3146 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,194,60,83,85,83,77,
3147 193,31,35,82,32,62,87,83,263,92,91,90,89,88,86,84,83,81,80,83,79,78,85,
3148 85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3149 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,195,
3150 2,2,1,2,502,
3151 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,196,60,83,85,83,77,
3152 193,31,35,82,32,264,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3153 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3154 204,72,72,72,70,72,
3155 43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,45,43,43,43,43,43,43,
3156 43,43,43,43,43,43,43,43,43,43,43,198,42,106,
3157 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3158 199,23,22,21,141,265,265,33,31,35,33,32,35,34,38,
3159 236,200,266,
3160 107,27,108,
3161 236,202,102,
3162 4,9,203,234,9,
3163 471,1,2,204,2,2,1,2,534,
3164 27,205,267,
3165 471,1,2,206,2,2,1,2,533,
3166 27,207,268,
3167 4,9,208,222,9,
3168 27,209,269,
3169 27,210,270,
3170 471,1,2,211,2,2,1,2,532,
3171 27,212,271,
3172 471,1,2,213,2,2,1,2,531,
3173 27,214,272,
3174 4,9,215,221,9,
3175 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,216,60,83,85,83,77,
3176 193,31,35,82,32,273,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3177 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3178 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,217,60,83,85,83,77,
3179 193,31,35,82,32,274,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3180 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3181 4,9,218,218,9,
3182 4,9,219,217,9,
3183 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,220,60,83,85,83,77,
3184 193,31,35,82,32,275,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3185 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3186 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,221,
3187 276,276,276,33,32,277,276,35,34,38,
3188 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
3189 471,471,471,471,471,471,1,2,222,2,2,1,2,495,
3190 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3191 223,23,22,21,141,278,278,33,31,35,33,32,35,34,38,
3192 27,224,279,
3193 153,113,69,113,113,225,152,116,116,
3194 153,113,113,113,226,115,115,
3195 69,112,231,
3196 69,79,231,
3197 69,78,231,
3198 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,73,73,73,8,73,30,30,30,
3199 30,30,30,47,73,73,230,23,22,21,141,142,142,33,31,35,33,32,143,280,35,34,
3200 38,
3201 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3202 231,23,22,21,141,29,33,31,35,33,32,35,34,38,
3203 69,85,231,
3204 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3205 233,23,22,21,141,281,281,33,31,35,33,32,35,34,38,
3206 471,471,471,471,1,2,234,2,2,1,2,486,
3207 282,8,4,9,235,25,97,31,35,25,282,9,
3208 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
3209 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
3210 471,471,471,471,471,471,471,1,2,236,2,2,1,2,487,
3211 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3212 237,23,22,21,141,283,283,33,31,35,33,32,35,34,38,
3213 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,238,60,83,85,83,77,
3214 193,31,35,82,32,284,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3215 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3216 132,107,185,150,151,
3217 236,69,240,231,182,
3218 158,160,162,164,163,161,159,
3219 158,160,162,163,163,161,159,
3220 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,243,60,83,85,83,77,
3221 193,31,35,82,32,285,62,156,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3222 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3223 74,75,161,165,164,
3224 74,75,160,165,164,
3225 69,158,152,
3226 69,157,152,
3227 69,156,152,
3228 69,155,152,
3229 69,149,152,
3230 69,148,152,
3231 168,137,154,167,169,
3232 168,137,153,167,169,
3233 168,137,152,167,169,
3234 168,137,151,167,169,
3235 170,172,98,99,69,256,152,175,174,173,171,
3236 170,172,98,99,147,183,182,181,180,
3237 170,172,98,99,146,183,182,181,180,
3238 176,178,144,185,184,
3239 186,142,187,
3240 188,140,189,
3241 97,138,190,
3242 191,136,192,
3243 286,264,287,
3244 69,288,265,25,231,
3245 8,266,119,31,35,
3246 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,267,
3247 276,276,276,33,32,289,276,35,34,38,
3248 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,268,
3249 276,276,276,33,32,290,276,35,34,38,
3250 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,269,
3251 276,276,276,33,32,291,276,35,34,38,
3252 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,270,
3253 276,276,276,33,32,292,276,35,34,38,
3254 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,271,
3255 276,276,276,33,32,293,276,35,34,38,
3256 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,272,294,
3257 38,
3258 295,273,296,
3259 295,274,297,
3260 295,275,298,
3261 107,235,299,
3262 69,4,9,277,215,300,9,
3263 301,302,69,278,231,302,302,
3264 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,279,60,83,85,83,77,
3265 193,31,35,82,32,303,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3266 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3267 82,82,82,77,77,77,280,
3268 81,81,81,76,69,76,76,281,231,
3269 40,282,304,46,
3270 69,288,283,189,231,
3271 305,284,306,
3272 305,236,285,180,306,
3273 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,286,
3274 2,2,1,2,501,
3275 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,287,60,83,85,83,77,
3276 193,31,35,82,32,134,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3277 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3278 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,
3279 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,
3280 288,2,2,1,2,477,
3281 69,4,9,289,233,300,9,
3282 69,4,9,290,232,300,9,
3283 69,4,9,291,229,300,9,
3284 69,4,9,292,228,300,9,
3285 69,4,9,293,227,300,9,
3286 4,9,294,226,9,
3287 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,295,
3288 2,2,1,2,526,
3289 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,296,60,83,85,83,77,
3290 193,31,35,82,32,220,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3291 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3292 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,297,60,83,85,83,77,
3293 193,31,35,82,32,219,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3294 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3295 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,298,60,83,85,83,77,
3296 193,31,35,82,32,223,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3297 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3298 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,
3299 240,240,240,240,240,240,299,307,
3300 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,30,30,30,30,30,30,47,300,
3301 308,308,308,33,32,308,35,34,38,
3302 471,1,2,301,2,2,1,2,494,
3303 8,302,122,31,35,
3304 153,113,113,113,303,117,117,
3305 8,304,101,31,35,
3306 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,1,2,305,
3307 2,2,1,2,521,
3308 18,19,72,73,74,75,27,59,8,69,207,207,65,205,201,201,47,306,60,83,85,83,77,
3309 193,31,35,82,32,309,62,87,83,94,93,92,91,90,89,88,86,84,83,81,80,83,79,
3310 78,85,85,83,76,191,192,68,67,66,201,130,130,34,71,70,
3311 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,41,8,30,30,30,30,30,30,47,
3312 307,23,22,21,141,310,310,33,31,35,33,32,35,34,38,
3313 107,236,299,
3314 236,309,187,
3315 69,288,310,241,231,
3316
3317 };
3318
3319
3320 static const unsigned short far ag_sbt[] = {
3321 0, 15, 56, 62, 82, 121, 131, 141, 171, 231, 293, 299, 305, 331,
3322 370, 386, 388, 424, 426, 485, 544, 555, 566, 588, 596, 601, 606, 675,
3323 718, 741, 803, 832, 886, 941, 980,1032,1044,1053,1062,1097,1100,1109,
3324 1112,1115,1125,1128,1131,1134,1160,1166,1171,1174,1177,1184,1233,1238,
3325 1242,1251,1259,1262,1299,1308,1331,1372,1377,1391,1445,1449,1452,1458,
3326 1499,1551,1603,1628,1653,1678,1703,1707,1728,1778,1828,1878,1928,1990,
3327 1997,2002,2007,2012,2027,2036,2041,2044,2047,2050,2053,2058,2070,2092,
3328 2135,2178,2221,2224,2292,2295,2302,2305,2308,2311,2344,2371,2433,2467,
3329 2529,2538,2541,2556,2565,2568,2583,2592,2595,2604,2607,2616,2620,2629,
3330 2633,2642,2645,2650,2659,2662,2673,2694,2735,2758,2820,2860,2897,2937,
3331 2977,3013,3016,3019,3059,3068,3137,3140,3209,3214,3219,3246,3249,3271,
3332 3287,3289,3329,3346,3349,3374,3425,3450,3501,3526,3576,3627,3678,3719,
3333 3771,3796,3848,3873,3896,3921,3944,3967,3990,4015,4038,4063,4086,4139,
3334 4192,4245,4298,4353,4408,4433,4489,4514,4571,4629,4654,4713,4738,4798,
3335 4823,4885,4891,4930,4970,4973,4976,4979,4984,4993,4996,5005,5008,5013,
3336 5016,5019,5028,5031,5040,5043,5048,5110,5172,5177,5182,5244,5279,5312,
3337 5352,5355,5364,5371,5374,5377,5380,5428,5467,5470,5510,5522,5534,5586,
3338 5626,5688,5693,5698,5705,5712,5774,5779,5784,5787,5790,5793,5796,5799,
3339 5802,5807,5812,5817,5822,5833,5842,5851,5856,5859,5862,5865,5868,5871,
3340 5876,5881,5916,5951,5986,6021,6056,6081,6084,6087,6090,6093,6100,6107,
3341 6169,6176,6185,6189,6194,6197,6202,6227,6289,6333,6340,6347,6354,6361,
3342 6368,6373,6398,6460,6522,6584,6611,6645,6654,6659,6666,6671,6696,6758,
3343 6798,6801,6804,6809
3344 };
3345
3346
3347 static const unsigned short far ag_sbe[] = {
3348 9, 53, 58, 69, 118, 125, 135, 165, 225, 287, 295, 301, 327, 365,
3349 376, 387, 423, 425, 479, 538, 550, 561, 587, 590, 597, 603, 638, 712,
3350 724, 758, 827, 865, 933, 977,1026,1038,1047,1056,1091,1098,1103,1110,
3351 1113,1119,1127,1129,1132,1145,1162,1168,1172,1175,1180,1216,1234,1239,
3352 1246,1254,1260,1293,1304,1314,1344,1374,1387,1437,1448,1451,1456,1493,
3353 1545,1597,1622,1647,1672,1697,1704,1713,1745,1795,1845,1895,1945,1993,
3354 1999,2004,2009,2019,2031,2038,2042,2045,2048,2051,2055,2067,2091,2129,
3355 2172,2215,2222,2286,2294,2299,2304,2307,2309,2338,2369,2388,2457,2484,
3356 2532,2539,2547,2559,2566,2575,2586,2593,2598,2605,2610,2617,2623,2630,
3357 2636,2643,2647,2653,2660,2668,2688,2707,2741,2775,2845,2891,2922,2962,
3358 3001,3014,3017,3044,3066,3101,3138,3173,3211,3216,3244,3247,3255,3281,
3359 3288,3314,3337,3347,3368,3391,3444,3467,3520,3543,3593,3644,3691,3736,
3360 3790,3813,3867,3879,3915,3927,3950,3973,4009,4021,4057,4069,4103,4156,
3361 4209,4262,4315,4370,4427,4450,4508,4531,4588,4648,4671,4732,4755,4817,
3362 4840,4889,4927,4955,4971,4974,4977,4981,4987,4994,4999,5006,5010,5014,
3363 5017,5022,5029,5034,5041,5045,5065,5127,5174,5179,5199,5268,5306,5337,
3364 5353,5360,5368,5372,5375,5378,5411,5453,5468,5495,5516,5526,5580,5611,
3365 5643,5690,5695,5701,5708,5729,5776,5781,5785,5788,5791,5794,5797,5800,
3366 5804,5809,5814,5819,5827,5837,5846,5853,5857,5860,5863,5866,5869,5873,
3367 5877,5905,5940,5975,6010,6045,6078,6082,6085,6088,6091,6096,6103,6124,
3368 6175,6183,6186,6191,6195,6199,6221,6244,6327,6336,6343,6350,6357,6364,
3369 6370,6392,6415,6477,6539,6609,6635,6648,6655,6663,6667,6690,6713,6783,
3370 6799,6802,6806,6809
3371 };
3372
3373
3374 static const unsigned char far ag_fl[] = {
3375 2,1,1,2,1,2,2,1,1,2,0,1,3,1,1,1,1,2,0,1,2,1,1,1,0,5,1,3,1,3,1,2,1,1,2,
3376 1,2,2,2,2,2,1,2,1,0,3,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,
3377 2,1,2,0,1,2,4,4,3,3,2,4,4,1,1,2,1,2,0,1,0,2,2,4,1,3,3,4,1,3,3,6,4,2,1,
3378 1,1,1,1,1,2,1,3,0,1,4,4,6,1,5,0,1,6,3,5,5,1,1,2,3,1,2,2,1,5,1,3,1,3,1,
3379 3,1,3,1,3,1,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3,3,3,1,1,2,2,2,2,
3380 1,1,3,2,1,3,2,3,1,1,3,1,7,0,5,1,1,1,1,2,3,1,1,1,1,1,1,2,1,1,1,2,1,2,3,
3381 1,1,2,2,2,5,3,4,4,6,6,4,4,5,2,2,5,5,5,5,2,2,5,5,3,1,3,1,1,1,0,5,1,1,1,
3382 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
3383 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
3384 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
3385 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
3386 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
3387 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
3388 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3389 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3390 2,2,2,2,2,2,2,2,2,2,2,2,2
3391 };
3392
3393 static const unsigned short far ag_ptt[] = {
3394 0, 2, 2, 12, 13, 13, 13,198, 20, 20, 21, 21,198, 25, 25, 25, 26, 26,
3395 27, 27, 22, 10, 10, 10, 30, 10, 33, 33, 31, 31,201,201, 35, 35, 38, 39,
3396 39, 39, 39, 39,199, 43, 43, 46, 48, 46,200, 49, 49, 51, 51, 53, 53, 53,
3397 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 65, 65, 65, 67, 68, 69, 66, 73,
3398 73, 78, 78, 75, 75, 75, 75, 75, 80, 80, 80, 76, 77, 77, 84, 84, 85, 85,
3399 88, 88, 88, 23, 86, 86, 86, 86, 87, 87, 87, 87, 92, 91, 89, 89, 89, 89,
3400 89, 99, 99, 89, 95,104,104, 95, 95, 95,102, 98,113,113, 96, 24, 24, 24,
3401 222,117,117,222, 1, 1, 1, 94, 94,120,120,123,123,125,125,127,127,128,
3402 128,130,130,130,130,130,132,132,132,132,132,132,132,132,132,135,135,135,
3403 138,138,138,140,140,140,140,146,143,143,143,143,143,108,108,108,108,108,
3404 108,108,154,152,106,106,150,150,158,150,151,151,151,151,151,151,244,244,
3405 244,164,164,159,159, 74, 74,160,160,161,161,245,170,170, 97,172,172,172,
3406 172,172,172,172,172,172,172,176,182,182,182,182,182,182,183,183,183,183,
3407 183,175,175,191,191,191,192,191,119, 16, 16, 16, 16, 16, 16, 16, 16, 16,
3408 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
3409 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19, 19, 19, 19,
3410 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
3411 19, 19, 19, 19, 19, 19, 19, 19, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
3412 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37,
3413 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 42, 42, 42,
3414 42, 42, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
3415 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
3416 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
3417 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 71, 71,118,
3418 118,165,165,165,168,168,171,171,171,171,171,171,171,171,171,171,171,171,
3419 171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,
3420 171,171,171,197,197, 8, 6, 5, 3, 32, 29, 34, 40, 41, 79, 81, 82, 83,
3421 90, 44, 45, 93,101,103,107,109,112,111,110, 9,114,115,116,122,121,124,
3422 126,129,131,133,134,136,137,139,141,142,144,145,147,148,149, 4, 7,157,
3423 173,174,177,178,180,179,181,184,185,186,187,188,189,190,166,196
3424 };
3425
3426 static const unsigned short far *ag_valid(int ag_k) {
3427 const unsigned short far *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
3428 while (*--ag_tp != (unsigned short) ag_k) if (*ag_tp == 0) return NULL;
3429 return ag_tp;
3430 }
3431
3432 int dsl_change_reduction(dsl_token_type ag_k) {
3433 if (!ag_valid(ag_k)) return 0;
3434 (PCB).reduction_token = ag_k;
3435 return 1;
3436 }
3437
3438 static void ag_default(const int *ag_tp) {
3439 (PCB).ag_dsn = (PCB).sn;
3440 (PCB).ag_dtl = ag_tp;
3441 while (!ag_valid((dsl_token_type) *ag_tp)) ag_tp++;
3442 (PCB).reduction_token = (dsl_token_type) *ag_tp;
3443 }
3444
3445
3446
3447 static void ag_ra(void)
3448 {
3449 switch(ag_rpx[(PCB).ag_ap]) {
3450 case 1: ag_rp_1(); break;
3451 case 2: ag_rp_2(); break;
3452 case 3: ag_rp_3(); break;
3453 case 4: ag_rp_4(); break;
3454 case 5: ag_rp_5(); break;
3455 case 6: ag_rp_6(V(0,(int *))); break;
3456 case 7: ag_rp_7(V(1,(int *))); break;
3457 case 8: ag_rp_8(); break;
3458 case 9: ag_rp_9(); break;
3459 case 10: ag_rp_10(); break;
3460 case 11: ag_rp_11(); break;
3461 case 12: ag_rp_12(); break;
3462 case 13: ag_rp_13(V(0,(int *))); break;
3463 case 14: ag_rp_14(); break;
3464 case 15: ag_rp_15(); break;
3465 case 16: ag_rp_16(); break;
3466 case 17: ag_rp_17(V(0,(int *))); break;
3467 case 18: ag_rp_18(V(0,(int *))); break;
3468 case 19: V(0,(int *)) = ag_rp_19(); break;
3469 case 20: V(0,(int *)) = ag_rp_20(); break;
3470 case 21: V(0,(int *)) = ag_rp_21(); break;
3471 case 22: V(0,(int *)) = ag_rp_22(); break;
3472 case 23: V(0,(int *)) = ag_rp_23(); break;
3473 case 24: V(0,(int *)) = ag_rp_24(); break;
3474 case 25: V(0,(int *)) = ag_rp_25(); break;
3475 case 26: V(0,(int *)) = ag_rp_26(); break;
3476 case 27: V(0,(int *)) = ag_rp_27(); break;
3477 case 28: V(0,(int *)) = ag_rp_28(); break;
3478 case 29: V(0,(int *)) = ag_rp_29(); break;
3479 case 30: V(0,(int *)) = ag_rp_30(V(1,(int *))); break;
3480 case 31: V(0,(int *)) = ag_rp_31(V(0,(int *)), V(1,(int *))); break;
3481 case 32: V(0,(int *)) = ag_rp_32(V(0,(int *)), V(1,(int *))); break;
3482 case 33: V(0,(int *)) = ag_rp_33(V(1,(long *))); break;
3483 case 34: V(0,(long *)) = ag_rp_34(V(0,(long *)), V(1,(long *))); break;
3484 case 35: ag_rp_35(); break;
3485 case 36: ag_rp_36(); break;
3486 case 37: ag_rp_37(V(0,(char * *))); break;
3487 case 38: ag_rp_38(V(0,(char * *))); break;
3488 case 39: ag_rp_39(V(0,(char * *))); break;
3489 case 40: V(0,(char * *)) = ag_rp_40(); break;
3490 case 41: V(0,(char * *)) = ag_rp_41(); break;
3491 case 42: V(0,(char * *)) = ag_rp_42(V(0,(char * *))); break;
3492 case 43: ag_rp_43(); break;
3493 case 44: ag_rp_44(); break;
3494 case 45: ag_rp_45(); break;
3495 case 46: ag_rp_46(V(0,(int *))); break;
3496 case 47: V(0,(int *)) = ag_rp_47(V(2,(int *))); break;
3497 case 48: V(0,(int *)) = ag_rp_48(V(2,(int *))); break;
3498 case 49: V(0,(int *)) = ag_rp_49(V(0,(int *)), V(4,(int *))); break;
3499 case 50: V(0,(int *)) = ag_rp_50(V(2,(long *))); break;
3500 case 51: V(0,(int *)) = ag_rp_51(V(0,(int *))); break;
3501 case 52: ag_rp_52(V(0,(unsigned *))); break;
3502 case 53: ag_rp_53(V(0,(unsigned *)), V(2,(long *))); break;
3503 case 54: ag_rp_54(V(0,(unsigned *))); break;
3504 case 55: ag_rp_55(V(0,(unsigned *)), V(2,(long *)), V(4,(long *))); break;
3505 case 56: ag_default(&ag_rtt[0]); V(0,(unsigned *)) = ag_rp_56(); break;
3506 case 57: ag_rp_57(V(2,(long *))); break;
3507 case 58: ag_rp_58(); break;
3508 case 59: ag_rp_59(V(1,(int *))); break;
3509 case 60: ag_rp_60(V(3,(long *))); break;
3510 case 61: ag_rp_61(); break;
3511 case 62: V(0,(int *)) = ag_rp_62(); break;
3512 case 63: V(0,(int *)) = ag_rp_63(V(0,(int *))); break;
3513 case 64: ag_rp_64(V(0,(int *))); break;
3514 case 65: ag_rp_65(V(1,(int *))); break;
3515 case 66: ag_rp_66(V(1,(int *))); break;
3516 case 67: V(0,(long *)) = ag_rp_67(V(0,(long *)), V(2,(long *)), V(4,(long *))); break;
3517 case 68: V(0,(long *)) = ag_rp_68(V(0,(long *)), V(2,(long *))); break;
3518 case 69: V(0,(long *)) = ag_rp_69(V(0,(long *)), V(2,(long *))); break;
3519 case 70: V(0,(long *)) = ag_rp_70(V(0,(long *)), V(2,(long *))); break;
3520 case 71: V(0,(long *)) = ag_rp_71(V(0,(long *)), V(2,(long *))); break;
3521 case 72: V(0,(long *)) = ag_rp_72(V(0,(long *)), V(2,(long *))); break;
3522 case 73: V(0,(long *)) = ag_rp_73(V(0,(long *)), V(2,(long *))); break;
3523 case 74: V(0,(long *)) = ag_rp_74(V(0,(long *)), V(2,(long *))); break;
3524 case 75: V(0,(long *)) = ag_rp_75(); break;
3525 case 76: V(0,(long *)) = ag_rp_76(); break;
3526 case 77: V(0,(long *)) = ag_rp_77(V(0,(long *)), V(2,(long *))); break;
3527 case 78: V(0,(long *)) = ag_rp_78(V(0,(long *)), V(2,(long *))); break;
3528 case 79: V(0,(long *)) = ag_rp_79(V(0,(long *)), V(2,(long *))); break;
3529 case 80: V(0,(long *)) = ag_rp_80(V(0,(long *)), V(2,(long *))); break;
3530 case 81: V(0,(long *)) = ag_rp_81(); break;
3531 case 82: V(0,(long *)) = ag_rp_82(); break;
3532 case 83: V(0,(long *)) = ag_rp_83(); break;
3533 case 84: V(0,(long *)) = ag_rp_84(); break;
3534 case 85: V(0,(long *)) = ag_rp_85(V(0,(long *)), V(2,(long *))); break;
3535 case 86: V(0,(long *)) = ag_rp_86(V(0,(long *)), V(2,(long *))); break;
3536 case 87: V(0,(long *)) = ag_rp_87(V(0,(long *)), V(2,(long *))); break;
3537 case 88: V(0,(long *)) = ag_rp_88(V(0,(long *)), V(2,(long *))); break;
3538 case 89: V(0,(long *)) = ag_rp_89(V(0,(long *)), V(2,(long *))); break;
3539 case 90: V(0,(long *)) = ag_rp_90(V(0,(long *)), V(2,(long *))); break;
3540 case 91: V(0,(long *)) = ag_rp_91(V(0,(long *)), V(2,(long *))); break;
3541 case 92: V(0,(long *)) = ag_rp_92(V(0,(long *))); break;
3542 case 93: V(0,(long *)) = ag_rp_93(V(1,(long *))); break;
3543 case 94: V(0,(long *)) = ag_rp_94(V(1,(long *))); break;
3544 case 95: V(0,(long *)) = ag_rp_95(V(1,(long *))); break;
3545 case 96: V(0,(long *)) = ag_rp_96(V(1,(long *))); break;
3546 case 97: V(0,(long *)) = ag_rp_97(V(2,(long *))); break;
3547 case 98: V(0,(long *)) = ag_rp_98(); break;
3548 case 99: V(0,(long *)) = ag_rp_99(V(1,(long *))); break;
3549 case 100: V(0,(long *)) = ag_rp_100(V(0,(long *))); break;
3550 case 101: ag_default(&ag_rtt[4]); V(0,(long *)) = ag_rp_101(); break;
3551 case 102: ag_rp_102(); break;
3552 case 103: ag_rp_103(V(3,(long *)), V(5,(long *))); break;
3553 case 104: ag_rp_104(); break;
3554 case 105: ag_rp_105(); break;
3555 case 106: ag_rp_106(V(0,(long *))); break;
3556 case 107: ag_rp_107(V(0,(long *))); break;
3557 case 108: ag_rp_108(); break;
3558 case 109: ag_rp_109(V(1,(long *))); break;
3559 case 110: V(0,(long *)) = ag_rp_110(); break;
3560 case 111: V(0,(long *)) = ag_rp_111(V(0,(long *)), V(1,(long *))); break;
3561 case 112: V(0,(long *)) = ag_rp_112(V(0,(int *))); break;
3562 case 113: V(0,(long *)) = ag_rp_113(); break;
3563 case 114: V(0,(long *)) = ag_rp_114(V(0,(long *)), V(1,(int *))); break;
3564 case 115: V(0,(long *)) = ag_rp_115(V(0,(int *))); break;
3565 case 116: V(0,(long *)) = ag_rp_116(V(0,(long *)), V(1,(int *))); break;
3566 case 117: V(0,(int *)) = ag_rp_117(V(1,(int *))); break;
3567 case 118: ag_rp_118(V(0,(screen_descriptor * *))); break;
3568 case 119: V(0,(screen_descriptor * *)) = ag_rp_119(); break;
3569 case 120: V(0,(screen_descriptor * *)) = ag_rp_120(V(0,(screen_descriptor * *))); break;
3570 case 121: V(0,(screen_descriptor * *)) = ag_rp_121(V(0,(screen_descriptor * *)), V(1,(int *))); break;
3571 case 122: V(0,(screen_descriptor * *)) = ag_rp_122(V(0,(screen_descriptor * *)), V(2,(int *))); break;
3572 case 123: V(0,(screen_descriptor * *)) = ag_rp_123(V(0,(screen_descriptor * *)), V(2,(int *))); break;
3573 case 124: V(0,(screen_descriptor * *)) = ag_rp_124(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
3574 case 125: V(0,(screen_descriptor * *)) = ag_rp_125(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
3575 case 126: V(0,(screen_descriptor * *)) = ag_rp_126(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
3576 case 127: V(0,(screen_descriptor * *)) = ag_rp_127(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
3577 case 128: V(0,(int *)) = ag_rp_128(V(2,(long *)), V(4,(long *))); break;
3578 case 129: V(0,(query_item * *)) = ag_rp_129(); break;
3579 case 130: V(0,(query_item * *)) = ag_rp_130(V(0,(query_item * *))); break;
3580 case 131: V(0,(query_item * *)) = ag_rp_131(V(0,(query_item * *))); break;
3581 case 132: V(0,(query_item * *)) = ag_rp_132(V(0,(query_item * *))); break;
3582 case 133: V(0,(query_item * *)) = ag_rp_133(V(0,(query_item * *))); break;
3583 case 134: V(0,(query_item * *)) = ag_rp_134(); break;
3584 case 135: V(0,(query_item * *)) = ag_rp_135(V(0,(query_item * *))); break;
3585 case 136: V(0,(query_item * *)) = ag_rp_136(V(0,(query_item * *))); break;
3586 case 137: V(0,(query_item * *)) = ag_rp_137(V(0,(query_item * *))); break;
3587 case 138: ag_rp_138(); break;
3588 case 139: ag_rp_139(); break;
3589 case 140: ag_rp_140(); break;
3590 case 141: ag_rp_141(); break;
3591 }
3592 (PCB).la_ptr = (PCB).pointer;
3593 }
3594
3595 #define TOKEN_NAMES dsl_token_names
3596 const char *const dsl_token_names[263] = {
3597 "script file",
3598 "name",
3599 "ws",
3600 "literal",
3601 "integer constant",
3602 "string literal",
3603 "paren string",
3604 "character constant",
3605 "eol",
3606 "literals",
3607 "word",
3608 "white",
3609 "comment",
3610 "comment head",
3611 "\"*/\"",
3612 "\"/*\"",
3613 "",
3614 "'\\n'",
3615 "\"//\"",
3616 "not eol",
3617 "",
3618 "",
3619 "script file",
3620 "execution block",
3621 "declaration",
3622 "",
3623 "",
3624 "",
3625 "eof",
3626 "'['",
3627 "",
3628 "parameter string",
3629 "']'",
3630 "string",
3631 "'#'",
3632 "param word",
3633 "",
3634 "text char",
3635 "action text",
3636 "action text head",
3637 "'}'",
3638 "'{'",
3639 "operator",
3640 "paren string chars",
3641 "')'",
3642 "'('",
3643 "paren string char",
3644 "not paren",
3645 "",
3646 "string chars",
3647 "'\\\"'",
3648 "string char",
3649 "not double quote",
3650 "escape sequence",
3651 "\"\\\\a\"",
3652 "\"\\\\b\"",
3653 "\"\\\\f\"",
3654 "\"\\\\n\"",
3655 "\"\\\\r\"",
3656 "\"\\\\t\"",
3657 "\"\\\\v\"",
3658 "\"\\\\\\\\\"",
3659 "\"\\\\?\"",
3660 "\"\\\\\\'\"",
3661 "\"\\\\\\\"\"",
3662 "octal escape",
3663 "hex escape",
3664 "one octal",
3665 "two octal",
3666 "three octal",
3667 "'\\\\'",
3668 "",
3669 "\"\\\\x\"",
3670 "hex number",
3671 "hex digit",
3672 "command",
3673 "identifier",
3674 "parameters",
3675 "",
3676 "'<'",
3677 "piped command",
3678 "'|'",
3679 "'>'",
3680 "\">>\"",
3681 "",
3682 "",
3683 "command sequence",
3684 "if sequence",
3685 "",
3686 "statement",
3687 "\"else\"",
3688 "if statement",
3689 "if condition",
3690 "\"if\"",
3691 "conditional exp",
3692 "assignment",
3693 "for statement",
3694 "screen description",
3695 "while statement",
3696 "",
3697 "undeclared variable",
3698 "'='",
3699 "integer variable",
3700 "';'",
3701 "",
3702 "string variable",
3703 "string exp",
3704 "'@'",
3705 "primary exp",
3706 "\"while\"",
3707 "\"for\"",
3708 "\"in\"",
3709 "\"do\"",
3710 "",
3711 "\"action\"",
3712 "\"int\"",
3713 "\"string\"",
3714 "",
3715 "letter",
3716 "digit",
3717 "logical or exp",
3718 "'\\?'",
3719 "':'",
3720 "logical and exp",
3721 "\"||\"",
3722 "inclusive or exp",
3723 "\"&&\"",
3724 "exclusive or exp",
3725 "and exp",
3726 "'^'",
3727 "equality exp",
3728 "'&'",
3729 "relational exp",
3730 "\"==\"",
3731 "\"!=\"",
3732 "shift exp",
3733 "\"<=\"",
3734 "\">=\"",
3735 "additive exp",
3736 "\"<<\"",
3737 "multiplicative exp",
3738 "'+'",
3739 "'-'",
3740 "unary exp",
3741 "'*'",
3742 "'/'",
3743 "nonzero",
3744 "'%'",
3745 "'~'",
3746 "'!'",
3747 "string term",
3748 "string element",
3749 "numeric name",
3750 "built_in name",
3751 "built_in argument",
3752 "string name",
3753 "undefined name",
3754 "\"..\"",
3755 "",
3756 "hex constant",
3757 "octal constant",
3758 "decimal constant",
3759 "\"0x\"",
3760 "\"0X\"",
3761 "",
3762 "",
3763 "",
3764 "'0'",
3765 "",
3766 "'\\''",
3767 "char constant element",
3768 "not single quote",
3769 "screen items",
3770 "\"screen\"",
3771 "\"title\"",
3772 "formula",
3773 "color spec",
3774 "\"entry\"",
3775 "\"highlight\"",
3776 "\"size\"",
3777 "','",
3778 "\"location\"",
3779 "query line",
3780 "button line",
3781 "\"color\"",
3782 "\"field\"",
3783 "\"variable\"",
3784 "\"default\"",
3785 "\"prompt\"",
3786 "\"explanation\"",
3787 "\"button\"",
3788 "formula element",
3789 "",
3790 "",
3791 "",
3792 "",
3793 "",
3794 "",
3795 "eol",
3796 "paren string",
3797 "string literal",
3798 "literal",
3799 "']'",
3800 "'['",
3801 "'#'",
3802 "'}'",
3803 "'{'",
3804 "'<'",
3805 "'|'",
3806 "'>'",
3807 "\">>\"",
3808 "\"else\"",
3809 "')'",
3810 "'('",
3811 "\"if\"",
3812 "'='",
3813 "';'",
3814 "'@'",
3815 "\"while\"",
3816 "\"do\"",
3817 "\"in\"",
3818 "\"for\"",
3819 "literals",
3820 "\"action\"",
3821 "\"int\"",
3822 "\"string\"",
3823 "':'",
3824 "'\\?'",
3825 "\"||\"",
3826 "\"&&\"",
3827 "'^'",
3828 "'&'",
3829 "\"==\"",
3830 "\"!=\"",
3831 "\"<=\"",
3832 "\">=\"",
3833 "\"<<\"",
3834 "'+'",
3835 "'-'",
3836 "'*'",
3837 "'/'",
3838 "'%'",
3839 "'~'",
3840 "'!'",
3841 "integer constant",
3842 "character constant",
3843 "\"..\"",
3844 "\"screen\"",
3845 "\"title\"",
3846 "\"entry\"",
3847 "\"highlight\"",
3848 "','",
3849 "\"size\"",
3850 "\"location\"",
3851 "\"color\"",
3852 "\"field\"",
3853 "\"variable\"",
3854 "\"default\"",
3855 "\"prompt\"",
3856 "\"explanation\"",
3857 "\"button\"",
3858 "",
3859 "",
3860
3861 };
3862
3863 #ifndef MISSING_FORMAT
3864 #define MISSING_FORMAT "Missing %s"
3865 #endif
3866 #ifndef UNEXPECTED_FORMAT
3867 #define UNEXPECTED_FORMAT "Unexpected %s"
3868 #endif
3869 #ifndef UNNAMED_TOKEN
3870 #define UNNAMED_TOKEN "input"
3871 #endif
3872
3873
3874 static void ag_diagnose(void) {
3875 int ag_snd = (PCB).sn;
3876 int ag_k = ag_sbt[ag_snd];
3877
3878 if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
3879 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
3880 }
3881 else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
3882 && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
3883 && *TOKEN_NAMES[ag_tstt[ag_k]]) {
3884 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
3885 }
3886 else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
3887 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
3888 }
3889 else if (isprint(INPUT_CODE((*(PCB).pointer))) && INPUT_CODE((*(PCB).pointer)) != '\\') {
3890 char buf[20];
3891 sprintf(buf, "\'%c\'", (char) INPUT_CODE((*(PCB).pointer)));
3892 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
3893 }
3894 else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
3895 (PCB).error_message = (PCB).ag_msg;
3896
3897
3898 }
3899 static int ag_action_1_r_proc(void);
3900 static int ag_action_2_r_proc(void);
3901 static int ag_action_3_r_proc(void);
3902 static int ag_action_4_r_proc(void);
3903 static int ag_action_1_s_proc(void);
3904 static int ag_action_3_s_proc(void);
3905 static int ag_action_1_proc(void);
3906 static int ag_action_2_proc(void);
3907 static int ag_action_3_proc(void);
3908 static int ag_action_4_proc(void);
3909 static int ag_action_5_proc(void);
3910 static int ag_action_6_proc(void);
3911 static int ag_action_7_proc(void);
3912 static int ag_action_8_proc(void);
3913 static int ag_action_9_proc(void);
3914 static int ag_action_10_proc(void);
3915 static int ag_action_11_proc(void);
3916 static int ag_action_8_proc(void);
3917
3918
3919 static int (*const ag_r_procs_scan[])(void) = {
3920 ag_action_1_r_proc,
3921 ag_action_2_r_proc,
3922 ag_action_3_r_proc,
3923 ag_action_4_r_proc
3924 };
3925
3926 static int (*const ag_s_procs_scan[])(void) = {
3927 ag_action_1_s_proc,
3928 ag_action_2_r_proc,
3929 ag_action_3_s_proc,
3930 ag_action_4_r_proc
3931 };
3932
3933 static int (*const ag_gt_procs_scan[])(void) = {
3934 ag_action_1_proc,
3935 ag_action_2_proc,
3936 ag_action_3_proc,
3937 ag_action_4_proc,
3938 ag_action_5_proc,
3939 ag_action_6_proc,
3940 ag_action_7_proc,
3941 ag_action_8_proc,
3942 ag_action_9_proc,
3943 ag_action_10_proc,
3944 ag_action_11_proc,
3945 ag_action_8_proc
3946 };
3947
3948
3949 static int ag_action_10_proc(void) {
3950 int ag_t = (PCB).token_number;
3951 (PCB).btsx = 0, (PCB).drt = -1;
3952 do {
3953 ag_track();
3954 (PCB).token_number = (dsl_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3955 (PCB).la_ptr++;
3956 if (ag_key_index[(PCB).sn]) {
3957 unsigned ag_k = ag_key_index[(PCB).sn];
3958 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3959 if (ag_ch <= 255) {
3960 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3961 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3962 }
3963 }
3964 } while ((PCB).token_number == (dsl_token_type) ag_t);
3965 (PCB).la_ptr = (PCB).pointer;
3966 return 1;
3967 }
3968
3969 static int ag_action_11_proc(void) {
3970 int ag_t = (PCB).token_number;
3971
3972 (PCB).btsx = 0, (PCB).drt = -1;
3973 do {
3974 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3975 (PCB).ssx--;
3976 ag_track();
3977 ag_ra();
3978 if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
3979 (PCB).ssx++;
3980 (PCB).token_number = (dsl_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3981 (PCB).la_ptr++;
3982 if (ag_key_index[(PCB).sn]) {
3983 unsigned ag_k = ag_key_index[(PCB).sn];
3984 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3985 if (ag_ch <= 255) {
3986 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3987 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3988 }
3989 }
3990 }
3991 while ((PCB).token_number == (dsl_token_type) ag_t);
3992 (PCB).la_ptr = (PCB).pointer;
3993 return 1;
3994 }
3995
3996 static int ag_action_3_r_proc(void) {
3997 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3998 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3999 (PCB).btsx = 0, (PCB).drt = -1;
4000 (PCB).reduction_token = (dsl_token_type) ag_ptt[(PCB).ag_ap];
4001 ag_ra();
4002 return (PCB).exit_flag == AG_RUNNING_CODE;
4003 }
4004
4005 static int ag_action_3_s_proc(void) {
4006 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
4007 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
4008 (PCB).btsx = 0, (PCB).drt = -1;
4009 (PCB).reduction_token = (dsl_token_type) ag_ptt[(PCB).ag_ap];
4010 ag_ra();
4011 return (PCB).exit_flag == AG_RUNNING_CODE;
4012 }
4013
4014 static int ag_action_4_r_proc(void) {
4015 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
4016 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
4017 (PCB).reduction_token = (dsl_token_type) ag_ptt[(PCB).ag_ap];
4018 return 1;
4019 }
4020
4021 static int ag_action_2_proc(void) {
4022 (PCB).btsx = 0, (PCB).drt = -1;
4023 if ((PCB).ssx >= 128) {
4024 (PCB).exit_flag = AG_STACK_ERROR_CODE;
4025 PARSER_STACK_OVERFLOW;
4026 }
4027 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
4028 GET_CONTEXT;
4029 (PCB).ss[(PCB).ssx] = (PCB).sn;
4030 (PCB).ssx++;
4031 (PCB).sn = (PCB).ag_ap;
4032 ag_track();
4033 return 0;
4034 }
4035
4036 static int ag_action_9_proc(void) {
4037 if ((PCB).drt == -1) {
4038 (PCB).drt=(PCB).token_number;
4039 (PCB).dssx=(PCB).ssx;
4040 (PCB).dsn=(PCB).sn;
4041 }
4042 ag_prot();
4043 (PCB).vs[(PCB).ssx] = ag_null_value;
4044 GET_CONTEXT;
4045 (PCB).ss[(PCB).ssx] = (PCB).sn;
4046 (PCB).ssx++;
4047 (PCB).sn = (PCB).ag_ap;
4048 (PCB).la_ptr = (PCB).pointer;
4049 return (PCB).exit_flag == AG_RUNNING_CODE;
4050 }
4051
4052 static int ag_action_2_r_proc(void) {
4053 (PCB).ssx++;
4054 (PCB).sn = (PCB).ag_ap;
4055 return 0;
4056 }
4057
4058 static int ag_action_7_proc(void) {
4059 --(PCB).ssx;
4060 (PCB).la_ptr = (PCB).pointer;
4061 (PCB).exit_flag = AG_SUCCESS_CODE;
4062 return 0;
4063 }
4064
4065 static int ag_action_1_proc(void) {
4066 ag_track();
4067 (PCB).exit_flag = AG_SUCCESS_CODE;
4068 return 0;
4069 }
4070
4071 static int ag_action_1_r_proc(void) {
4072 (PCB).exit_flag = AG_SUCCESS_CODE;
4073 return 0;
4074 }
4075
4076 static int ag_action_1_s_proc(void) {
4077 (PCB).exit_flag = AG_SUCCESS_CODE;
4078 return 0;
4079 }
4080
4081 static int ag_action_4_proc(void) {
4082 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
4083 (PCB).reduction_token = (dsl_token_type) ag_ptt[(PCB).ag_ap];
4084 (PCB).btsx = 0, (PCB).drt = -1;
4085 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
4086 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
4087 else GET_CONTEXT;
4088 (PCB).ss[(PCB).ssx] = (PCB).sn;
4089 ag_track();
4090 while ((PCB).exit_flag == AG_RUNNING_CODE) {
4091 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
4092 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
4093 do {
4094 unsigned ag_tx = (ag_t1 + ag_t2)/2;
4095 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
4096 else ag_t2 = ag_tx;
4097 } while (ag_t1 < ag_t2);
4098 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
4099 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
4100 REDUCTION_TOKEN_ERROR; break;}
4101 (PCB).ag_ap = ag_pstt[ag_t1];
4102 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
4103 }
4104 return 0;
4105 }
4106
4107 static int ag_action_3_proc(void) {
4108 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
4109 (PCB).btsx = 0, (PCB).drt = -1;
4110 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
4111 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
4112 else GET_CONTEXT;
4113 (PCB).ss[(PCB).ssx] = (PCB).sn;
4114 ag_track();
4115 (PCB).reduction_token = (dsl_token_type) ag_ptt[(PCB).ag_ap];
4116 ag_ra();
4117 while ((PCB).exit_flag == AG_RUNNING_CODE) {
4118 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
4119 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
4120 do {
4121 unsigned ag_tx = (ag_t1 + ag_t2)/2;
4122 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
4123 else ag_t2 = ag_tx;
4124 } while (ag_t1 < ag_t2);
4125 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
4126 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
4127 REDUCTION_TOKEN_ERROR; break;}
4128 (PCB).ag_ap = ag_pstt[ag_t1];
4129 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
4130 }
4131 return 0;
4132 }
4133
4134 static int ag_action_8_proc(void) {
4135 ag_undo();
4136 (PCB).la_ptr = (PCB).pointer;
4137 (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
4138 ag_diagnose();
4139 SYNTAX_ERROR;
4140 {(PCB).la_ptr = (PCB).pointer + 1; ag_track();}
4141 return (PCB).exit_flag == AG_RUNNING_CODE;
4142 }
4143
4144 static int ag_action_5_proc(void) {
4145 int ag_sd = ag_fl[(PCB).ag_ap];
4146 (PCB).btsx = 0, (PCB).drt = -1;
4147 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
4148 else {
4149 GET_CONTEXT;
4150 (PCB).ss[(PCB).ssx] = (PCB).sn;
4151 }
4152 (PCB).la_ptr = (PCB).pointer;
4153 (PCB).reduction_token = (dsl_token_type) ag_ptt[(PCB).ag_ap];
4154 ag_ra();
4155 while ((PCB).exit_flag == AG_RUNNING_CODE) {
4156 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
4157 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
4158 do {
4159 unsigned ag_tx = (ag_t1 + ag_t2)/2;
4160 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
4161 else ag_t2 = ag_tx;
4162 } while (ag_t1 < ag_t2);
4163 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
4164 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
4165 REDUCTION_TOKEN_ERROR; break;}
4166 (PCB).ag_ap = ag_pstt[ag_t1];
4167 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
4168 }
4169 return (PCB).exit_flag == AG_RUNNING_CODE;
4170 }
4171
4172 static int ag_action_6_proc(void) {
4173 int ag_sd = ag_fl[(PCB).ag_ap];
4174 (PCB).reduction_token = (dsl_token_type) ag_ptt[(PCB).ag_ap];
4175 if ((PCB).drt == -1) {
4176 (PCB).drt=(PCB).token_number;
4177 (PCB).dssx=(PCB).ssx;
4178 (PCB).dsn=(PCB).sn;
4179 }
4180 if (ag_sd) {
4181 (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
4182 }
4183 else {
4184 ag_prot();
4185 (PCB).vs[(PCB).ssx] = ag_null_value;
4186 GET_CONTEXT;
4187 (PCB).ss[(PCB).ssx] = (PCB).sn;
4188 }
4189 (PCB).la_ptr = (PCB).pointer;
4190 while ((PCB).exit_flag == AG_RUNNING_CODE) {
4191 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
4192 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
4193 do {
4194 unsigned ag_tx = (ag_t1 + ag_t2)/2;
4195 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
4196 else ag_t2 = ag_tx;
4197 } while (ag_t1 < ag_t2);
4198 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
4199 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
4200 REDUCTION_TOKEN_ERROR; break;}
4201 (PCB).ag_ap = ag_pstt[ag_t1];
4202 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
4203 }
4204 return (PCB).exit_flag == AG_RUNNING_CODE;
4205 }
4206
4207
4208 void init_dsl(void) {
4209 (PCB).la_ptr = (PCB).pointer;
4210 (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
4211 (PCB).exit_flag = AG_RUNNING_CODE;
4212 (PCB).line = FIRST_LINE;
4213 (PCB).column = FIRST_COLUMN;
4214 (PCB).btsx = 0, (PCB).drt = -1;
4215 }
4216
4217 void dsl(void) {
4218 init_dsl();
4219 (PCB).exit_flag = AG_RUNNING_CODE;
4220 while ((PCB).exit_flag == AG_RUNNING_CODE) {
4221 unsigned ag_t1 = ag_sbt[(PCB).sn];
4222 if (ag_tstt[ag_t1]) {
4223 unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
4224 (PCB).token_number = (dsl_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
4225 (PCB).la_ptr++;
4226 if (ag_key_index[(PCB).sn]) {
4227 unsigned ag_k = ag_key_index[(PCB).sn];
4228 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
4229 if (ag_ch <= 255) {
4230 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
4231 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
4232 }
4233 }
4234 do {
4235 unsigned ag_tx = (ag_t1 + ag_t2)/2;
4236 if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number)
4237 ag_t1 = ag_tx + 1;
4238 else ag_t2 = ag_tx;
4239 } while (ag_t1 < ag_t2);
4240 if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number)
4241 ag_t1 = ag_sbe[(PCB).sn];
4242 }
4243 (PCB).ag_ap = ag_pstt[ag_t1];
4244 (ag_gt_procs_scan[ag_astt[ag_t1]])();
4245 }
4246 }
4247
4248