comparison tests/agcl/contrib/good/plm.c @ 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 /*
2 * YACC grammar of PL/M
3 */
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include "plm-manifest.h"
7 #include "scope.h"
8
9 void yyerror ();
10
11 /* Cause the `yydebug' variable to be defined. */
12 #define YYDEBUG (1)
13
14
15
16 /*
17 * AnaGram, A System for Syntax Directed Programming
18 * File generated by: ...
19 *
20 * AnaGram Parsing Engine
21 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
22 *
23 * This software is provided 'as-is', without any express or implied
24 * warranty. In no event will the authors be held liable for any damages
25 * arising from the use of this software.
26 *
27 * Permission is granted to anyone to use this software for any purpose,
28 * including commercial applications, and to alter it and redistribute it
29 * freely, subject to the following restrictions:
30 *
31 * 1. The origin of this software must not be misrepresented; you must not
32 * claim that you wrote the original software. If you use this software
33 * in a product, an acknowledgment in the product documentation would be
34 * appreciated but is not required.
35 * 2. Altered source versions must be plainly marked as such, and must not be
36 * misrepresented as being the original software.
37 * 3. This notice may not be removed or altered from any source distribution.
38 */
39
40 #ifndef PLM_H
41 #include "plm.h"
42 #endif
43
44 #ifndef PLM_H
45 #error Mismatched header file
46 #endif
47
48 #include <ctype.h>
49 #include <stdio.h>
50
51 #define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
52 #define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
53 #define CONTEXT ((PCB).cs[(PCB).ssx])
54
55
56
57 plm_pcb_type plm_pcb;
58 #define PCB plm_pcb
59
60 /* Line -, plm.syn */
61 void
62 yyerror(char * s)
63 {
64 fprintf (stderr, "error at line %d: %s\n", lineno, s);
65 }
66
67 main()
68 {
69 init_scope();
70 return yyparse();
71 }
72
73
74 #ifndef CONVERT_CASE
75
76 static const char agCaseTable[31] = {
77 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
78 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
79 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0,
80 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
81 };
82
83 static int agConvertCase(int c) {
84 if (c >= 'a' && c <= 'z') return c ^= 0x20;
85 if (c >= 0xe0 && c < 0xff) c ^= agCaseTable[c-0xe0];
86 return c;
87 }
88
89 #define CONVERT_CASE(c) agConvertCase(c)
90
91 #endif
92
93
94 #ifndef TAB_SPACING
95 #define TAB_SPACING 8
96 #endif
97
98 static void ag_rp_1(void) {
99 /* Line -, plm.syn */
100 push_scope();
101
102 }
103
104 static void ag_rp_2(void) {
105 /* Line -, plm.syn */
106 push_scope();
107
108 }
109
110 static void ag_rp_3(void) {
111 /* Line -, plm.syn */
112 pop_scope();
113
114 }
115
116 static void ag_rp_4(void) {
117 /* Line -, plm.syn */
118 push_scope();
119
120 }
121
122 static void ag_rp_5(void) {
123 /* Line -, plm.syn */
124 enter_literal ($1, $3);
125
126 }
127
128 static void ag_rp_6(void) {
129 /* Line -, plm.syn */
130 push_scope();
131
132 }
133
134 static void ag_rp_7(void) {
135 /* Line -, plm.syn */
136 push_scope();
137
138 }
139
140
141 #define READ_COUNTS
142 #define WRITE_COUNTS
143 #undef V
144 #define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
145 #undef VS
146 #define VS(i) (PCB).vs[(PCB).ssx + i]
147
148 #ifndef GET_CONTEXT
149 #define GET_CONTEXT CONTEXT = (PCB).input_context
150 #endif
151
152 typedef enum {
153 ag_action_1,
154 ag_action_2,
155 ag_action_3,
156 ag_action_4,
157 ag_action_5,
158 ag_action_6,
159 ag_action_7,
160 ag_action_8,
161 ag_action_9,
162 ag_action_10,
163 ag_action_11,
164 ag_action_12
165 } ag_parser_action;
166
167
168 #ifndef NULL_VALUE_INITIALIZER
169 #define NULL_VALUE_INITIALIZER = 0
170 #endif
171
172 static int const ag_null_value NULL_VALUE_INITIALIZER;
173
174 static const unsigned char ag_rpx[] = {
175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
176 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
179 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0,
182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
186 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
187 0, 0, 7
188 };
189
190 static const unsigned char ag_key_itt[] = {
191 0
192 };
193
194 static const unsigned short ag_key_pt[] = {
195 0
196 };
197
198 static const unsigned char ag_key_ch[] = {
199 0, 47,255, 42,255, 61, 62,255, 68, 78, 84,255, 84,255, 65, 89,255, 76,
200 83, 85,255, 65, 72,255, 65, 69, 73, 79, 87,255, 65, 68,255, 76, 78, 79,
201 88,255, 84,255, 79,255, 65, 87,255, 71, 82,255, 69,255, 73, 84,255, 70,
202 78,255, 65, 73, 79,255, 73, 79,255, 70, 82,255, 76, 79, 82, 85,255, 65,
203 69, 84,255, 69,255, 69, 72, 84,255, 72, 79,255, 72, 79,255, 47, 58, 60,
204 62, 65, 66, 67, 68, 69, 71, 72, 73, 76, 77, 78, 79, 80, 81, 82, 83, 84,
205 87, 88,255, 61, 62,255, 47, 58, 60, 62,255, 69,255, 76, 85,255, 65, 72,
206 255, 73, 79, 87,255, 65, 68,255, 78,255, 84,255, 79,255, 65, 87,255, 70,
207 78,255, 79, 82,255, 65, 84,255, 69,255, 69, 72,255, 47, 65, 66, 67, 68,
208 69, 71, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 68,255, 47, 67, 87,255,
209 76, 85,255, 65, 72,255, 69, 73, 79, 87,255, 65, 68,255, 78,255, 84,255,
210 79,255, 65, 87,255, 70, 78,255, 65, 84,255, 69,255, 69, 72,255, 65, 66,
211 67, 68, 69, 71, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 76, 85,255, 65,
212 72,255, 69, 73, 79, 87,255, 65, 68,255, 76, 78, 79,255, 84,255, 79,255,
213 65, 87,255, 70, 78,255, 65, 84,255, 69,255, 69, 72,255, 47, 65, 66, 67,
214 68, 69, 71, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 73, 84,255, 78,255,
215 47, 65, 68, 69, 73, 80, 82,255, 69, 72,255, 47, 65, 66, 67, 68, 72, 73,
216 76, 78, 79, 80, 81, 82, 83, 87,255, 47, 84,255, 67, 87,255, 69, 72,255,
217 65, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 82, 83, 87,255, 84,255, 76,
218 85,255, 65, 72,255, 73, 79, 87,255, 65, 68,255, 78,255, 84,255, 79,255,
219 65, 87,255, 70, 78,255, 65, 84,255, 69,255, 69, 72,255, 65, 66, 67, 68,
220 69, 71, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 76, 85,255, 65, 72,255,
221 73, 79, 87,255, 84,255, 79,255, 65, 87,255, 70, 78,255, 65, 84,255, 69,
222 255, 69, 72,255, 65, 66, 67, 68, 69, 71, 72, 73, 76, 79, 80, 81, 82, 83,
223 87,255, 76, 85,255, 65, 72,255, 73, 79, 87,255, 65, 68,255, 78,255, 84,
224 255, 79,255, 65, 87,255, 70, 78,255, 79, 82,255, 65, 84,255, 69,255, 69,
225 72,255, 65, 66, 67, 68, 69, 71, 72, 73, 76, 79, 80, 81, 82, 83, 87,255,
226 69, 72, 84,255, 47, 65, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 82, 83,
227 87,255, 69, 72, 84,255, 65, 66, 67, 68, 72, 73, 76, 79, 80, 81, 82, 83,
228 87,255, 65, 89,255, 65, 73, 79,255, 69, 72, 84,255, 65, 66, 67, 68, 72,
229 73, 76, 79, 80, 81, 82, 83, 87,255, 61, 62,255, 73, 79,255, 72, 79,255,
230 47, 60, 62, 77, 79, 80, 84, 88,255, 61, 62,255, 73, 79,255, 72, 79,255,
231 47, 60, 62, 77, 80, 84, 88,255, 69, 72,255, 47, 65, 66, 67, 68, 72, 73,
232 76, 79, 80, 81, 82, 83, 87,255, 39,255, 61, 62,255, 73, 79,255, 72, 79,
233 255, 47, 60, 62, 65, 66, 77, 79, 80, 84, 88,255, 69, 72,255, 65, 66, 67,
234 68, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 61, 62,255, 73, 79,255, 72,
235 79,255, 60, 62, 65, 66, 77, 79, 80, 84, 88,255, 61, 62,255, 72, 79,255,
236 60, 62, 65, 66, 77, 79, 80, 84, 88,255, 61, 62,255, 73, 79,255, 72, 79,
237 255, 58, 60, 62, 65, 66, 77, 79, 80, 84, 88,255, 72, 79,255, 65, 66, 79,
238 84, 88,255, 72, 79,255, 66, 79, 84, 88,255, 84,255, 69,255, 76, 85,255,
239 65, 72,255, 73, 79, 87,255, 65, 68,255, 76, 78,255, 84,255, 79,255, 65,
240 87,255, 70, 78,255, 65, 84,255, 69,255, 69, 72,255, 65, 66, 67, 68, 69,
241 71, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 71, 82,255, 69,255, 84,255,
242 78,255, 79, 85,255, 65, 69,255, 69,255, 69, 72,255, 47, 65, 66, 67, 68,
243 69, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 71, 82,255, 69,255, 84,255,
244 78,255, 79, 85,255, 65, 69,255, 69,255, 69, 72,255, 65, 66, 67, 68, 69,
245 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 47, 69, 80,255, 69, 80,255, 66,
246 255, 66,255, 61, 62,255, 73, 79,255, 76, 85,255, 72, 79,255, 47, 60, 62,
247 77, 79, 80, 84, 88,255, 61, 62,255, 73, 79,255, 76, 85,255, 72, 79,255,
248 47, 60, 62, 77, 80, 84, 88,255, 47, 80,255, 76, 85,255, 65, 72,255, 73,
249 79, 87,255, 84,255, 79,255, 65, 87,255, 70, 78,255, 65, 84,255, 69,255,
250 69, 72,255, 47, 65, 66, 67, 68, 69, 71, 72, 73, 76, 79, 80, 81, 82, 83,
251 87,255, 65, 68, 69, 73, 80,255, 47, 68, 69, 73, 80, 82,255, 61, 62,255,
252 68, 78, 84,255, 84,255, 89,255, 65, 87,255, 71, 82,255, 69,255, 73, 84,
253 255, 78,255, 65, 79,255, 73, 79,255, 70, 82,255, 76, 79, 85,255, 65, 69,
254 255, 69,255, 69, 72, 84,255, 72, 79,255, 47, 58, 60, 62, 65, 66, 67, 68,
255 69, 72, 73, 76, 77, 79, 80, 81, 82, 83, 84, 87, 88,255, 65, 79,255, 69,
256 72, 84,255, 65, 66, 67, 68, 72, 73, 76, 79, 80, 81, 82, 83, 87,255, 72,
257 79,255, 65, 66, 77, 79, 80, 84, 88,255, 69, 73, 80, 82,255, 83,255, 68,
258 73,255, 65, 68, 73,255, 68,255, 47, 69, 73, 80, 82,255
259 };
260
261 static const unsigned char ag_key_act[] = {
262 0,3,4,3,4,0,0,4,3,3,0,4,3,4,3,1,4,3,3,3,4,2,3,4,3,3,3,0,3,4,3,0,4,3,2,
263 3,3,4,3,4,1,4,3,3,4,3,3,4,2,4,3,2,4,0,2,4,3,3,3,4,3,3,4,3,0,4,3,3,3,3,
264 4,3,3,3,4,2,4,3,3,3,4,3,0,4,3,3,4,3,3,2,3,2,2,2,2,2,2,2,2,2,2,3,2,2,3,
265 2,2,2,2,3,4,0,0,4,3,3,2,3,4,3,4,3,3,4,2,3,4,3,0,3,4,3,0,4,2,4,3,4,1,4,
266 3,3,4,0,3,4,3,3,4,3,3,4,2,4,3,3,4,3,3,3,2,2,2,2,2,2,3,3,2,3,2,2,3,4,3,
267 4,3,3,3,4,3,3,4,2,3,4,3,3,0,3,4,3,0,4,2,4,3,4,1,4,3,3,4,0,3,4,3,3,4,2,
268 4,3,3,4,3,3,2,2,2,2,2,2,3,3,3,3,2,2,3,4,3,3,4,2,3,4,3,3,0,3,4,3,0,4,3,
269 2,3,4,3,4,1,4,3,3,4,0,3,4,3,3,4,2,4,3,3,4,3,3,3,2,2,2,2,2,2,3,3,3,3,2,
270 2,3,4,3,3,4,2,4,3,3,3,3,2,3,3,4,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,4,
271 3,3,4,3,3,4,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,2,3,4,3,4,3,3,4,2,3,4,3,0,3,
272 4,3,0,4,2,4,3,4,1,4,3,3,4,0,3,4,3,3,4,2,4,3,3,4,3,3,2,2,2,2,2,2,3,3,3,
273 3,2,2,3,4,3,3,4,2,3,4,3,0,3,4,3,4,1,4,3,3,4,0,3,4,3,3,4,2,4,3,3,4,3,3,
274 2,2,3,2,2,2,3,3,3,3,2,2,3,4,3,3,4,2,3,4,3,0,3,4,3,0,4,2,4,3,4,1,4,3,3,
275 4,0,3,4,3,3,4,3,3,4,2,4,3,3,4,3,3,2,2,2,2,2,2,3,3,2,3,2,2,3,4,3,3,3,4,
276 3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,4,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,2,3,4,3,
277 3,4,3,3,3,4,3,3,3,4,3,2,3,3,3,3,2,3,3,3,3,2,3,4,0,0,4,3,3,4,3,0,4,3,2,
278 3,2,3,3,2,3,4,0,0,4,3,3,4,3,0,4,3,2,3,2,3,2,3,4,3,3,4,3,3,3,3,3,3,3,3,
279 3,3,3,3,2,3,4,3,4,0,0,4,3,3,4,3,0,4,3,2,3,3,3,2,3,3,2,3,4,3,3,4,3,3,3,
280 3,3,3,3,3,3,3,3,2,3,4,0,0,4,3,3,4,3,0,4,2,3,3,3,2,3,3,2,3,4,0,0,4,3,0,
281 4,2,3,3,3,3,3,3,2,3,4,0,0,4,3,3,4,3,0,4,3,2,3,3,3,2,3,3,2,3,4,3,0,4,3,
282 3,3,2,3,4,3,0,4,3,3,2,3,4,3,4,3,4,3,3,4,2,3,4,3,0,3,4,3,0,4,3,2,4,3,4,
283 1,4,3,3,4,0,3,4,3,3,4,2,4,3,3,4,3,3,2,2,2,2,2,2,3,3,3,3,2,2,3,4,3,3,4,
284 2,4,2,4,2,4,3,3,4,3,3,4,2,4,3,3,4,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,4,3,3,
285 4,2,4,2,4,2,4,3,3,4,3,3,4,2,4,3,3,4,3,3,3,3,3,3,2,3,3,2,3,2,2,3,4,3,3,
286 3,4,3,3,4,3,4,3,4,0,0,4,3,3,4,3,3,4,3,0,4,3,2,3,2,3,2,2,3,4,0,0,4,3,3,
287 4,3,3,4,3,0,4,3,2,3,2,2,2,3,4,3,3,4,3,3,4,2,3,4,3,0,3,4,3,4,1,4,3,3,4,
288 0,3,4,3,3,4,2,4,3,3,4,3,3,3,2,2,3,2,2,2,3,3,3,3,2,2,3,4,3,3,3,3,3,4,3,
289 3,3,3,3,3,4,0,0,4,3,3,0,4,3,4,1,4,3,3,4,3,3,4,2,4,3,2,4,2,4,3,3,4,3,3,
290 4,3,0,4,3,3,3,4,3,3,4,2,4,3,3,3,4,3,0,4,3,3,2,3,2,2,3,2,3,3,2,2,2,2,2,
291 3,2,2,2,3,3,4,3,3,4,3,3,3,4,3,3,3,3,3,3,2,3,3,3,3,2,3,4,3,0,4,3,3,3,3,
292 3,2,3,4,3,3,3,3,4,3,4,3,3,4,3,3,3,4,3,4,3,3,3,3,3,4
293 };
294
295 static const unsigned short ag_key_parm[] = {
296 0, 63, 0, 67, 0,324,326, 0,268,263,312, 0,269, 0,329,282, 0,283,
297 293,284, 0, 0,270, 0,289,291,292,294,271, 0,297,298, 0,286, 0,285,
298 316, 0,300, 0,302, 0,303,272, 0,273,309, 0, 0, 0,308, 0, 0,306,
299 0, 0,299,310,274, 0,260,314, 0,275,318, 0,261,276,321,317, 0,278,
300 320,328, 0, 0, 0,279,280,327, 0,305,301, 0,295,281, 0, 63,296, 0,
301 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,313, 0, 0,277, 0, 0, 0,
302 0,319, 0,324,326, 0, 63,296, 0,322, 0,285, 0,283,284, 0, 0,270,
303 0,292,294,271, 0,297,298, 0, 0, 0,300, 0,302, 0,303,272, 0,306,
304 273, 0,276,321, 0,278,328, 0, 0, 0,279,280, 0, 63,268,269, 0, 0,
305 0, 0, 0, 0,274,275, 0,277, 0, 0,281, 0,294, 0, 63,293,295, 0,
306 283,284, 0, 0,270, 0,291,292,294,271, 0,297,298, 0, 0, 0,300, 0,
307 302, 0,303,272, 0,306,273, 0,278,328, 0, 0, 0,279,280, 0,268,269,
308 0, 0, 0, 0, 0, 0,274,275,276,277, 0, 0,281, 0,283,284, 0, 0,
309 270, 0,291,292,294,271, 0,297,298, 0,286, 0,285, 0,300, 0,302, 0,
310 303,272, 0,306,273, 0,278,328, 0, 0, 0,279,280, 0, 63,268,269, 0,
311 0, 0, 0, 0, 0,274,275,276,277, 0, 0,281, 0,308,309, 0, 0, 0,
312 63,312,289,316, 0,317,320, 0,279,280, 0, 63,268,269,270,271,272,273,
313 274,313,275,276,277,278, 0,281, 0, 63,301, 0,293,295, 0,279,280, 0,
314 268,269,270,271,272,273,274,313,275,276,277,278, 0,281, 0,301, 0,283,
315 284, 0, 0,270, 0,292,294,271, 0,297,298, 0, 0, 0,300, 0,302, 0,
316 303,272, 0,306,273, 0,278,328, 0, 0, 0,279,280, 0,268,269, 0, 0,
317 0, 0, 0, 0,274,275,276,277, 0, 0,281, 0,283,284, 0, 0,270, 0,
318 292,294,271, 0,300, 0,302, 0,303,272, 0,306,273, 0,278,328, 0, 0,
319 0,279,280, 0,268,269, 0, 0,297, 0, 0, 0,274,275,276,277, 0, 0,
320 281, 0,283,284, 0, 0,270, 0,292,294,271, 0,297,298, 0, 0, 0,300,
321 0,302, 0,303,272, 0,306,273, 0,276,321, 0,278,328, 0, 0, 0,279,
322 280, 0,268,269, 0, 0, 0, 0, 0, 0,274,275, 0,277, 0, 0,281, 0,
323 279,280,327, 0, 63,268,269,270,271,272,273,274,313,275,276,277,278, 0,
324 281, 0,279,280,327, 0,268,269,270,271,272,273,274,275,276,277,278, 0,
325 281, 0,329,269, 0,299,310,274, 0,279,280,327, 0,268, 0,270,271,272,
326 273, 0,275,276,277,278, 0,281, 0,324,326, 0,260,314, 0,305,301, 0,
327 63, 0,322, 0,318,261, 0,319, 0,324,326, 0,260,314, 0,305,301, 0,
328 63, 0,322, 0,261, 0,319, 0,279,280, 0, 63,268,269,270,271,272,273,
329 274,275,276,277,278, 0,281, 0,245, 0,324,326, 0,260,314, 0,305,301,
330 0, 63, 0,322,263,282, 0,318,261, 0,319, 0,279,280, 0,268,269,270,
331 271,272,273,274,275,276,277,278, 0,281, 0,324,326, 0,260,314, 0,305,
332 301, 0, 0,322,263,282, 0,318,261, 0,319, 0,324,326, 0,305,301, 0,
333 0,322,263,282,260,318,261, 0,319, 0,324,326, 0,260,314, 0,305,301,
334 0,296, 0,322,263,282, 0,318,261, 0,319, 0,305,301, 0,263,282,318,
335 0,319, 0,305,301, 0,282,318, 0,319, 0,305, 0,286, 0,283,284, 0,
336 0,270, 0,292,294,271, 0,297,298, 0,286, 0, 0,300, 0,302, 0,303,
337 272, 0,306,273, 0,278,328, 0, 0, 0,279,280, 0,268,269, 0, 0, 0,
338 0, 0, 0,274,275,276,277, 0, 0,281, 0,273,309, 0, 0, 0, 0, 0,
339 0, 0,276,317, 0,278,320, 0, 0, 0,279,280, 0, 63,268,269,270,271,
340 316,272, 0,274,275, 0,277, 0, 0,281, 0,273,309, 0, 0, 0, 0, 0,
341 0, 0,276,317, 0,278,320, 0, 0, 0,279,280, 0,268,269,270,271,316,
342 272, 0,274,275, 0,277, 0, 0,281, 0, 63,316,317, 0,316,317, 0,329,
343 0,282, 0,324,326, 0,260,314, 0,261,317, 0,305,301, 0, 63, 0,322,
344 0,318, 0, 0,319, 0,324,326, 0,260,314, 0,261,317, 0,305,301, 0,
345 63, 0,322, 0, 0, 0,319, 0, 63,317, 0,283,284, 0, 0,270, 0,292,
346 294,271, 0,300, 0,302, 0,303,272, 0,306,273, 0,278,328, 0, 0, 0,
347 279,280, 0, 63,268,269, 0, 0,297, 0, 0, 0,274,275,276,277, 0, 0,
348 281, 0,312,289,316,308,317, 0, 63,289,316,309,317,320, 0,324,326, 0,
349 268,263,312, 0,269, 0,282, 0,289,271, 0,273,309, 0, 0, 0,308, 0,
350 0, 0, 0,299,274, 0,260,314, 0,275,318, 0,261,276,317, 0,278,320,
351 0, 0, 0,279,280,327, 0,305,301, 0, 63,296, 0,322, 0, 0,270, 0,
352 316,272, 0, 0, 0, 0, 0,277, 0, 0, 0,281,319, 0,299,274, 0,279,
353 280,327, 0,268,269,270,271,272,273, 0,275,276,277,278, 0,281, 0,305,
354 301, 0,263,282,260,318,261, 0,319, 0,316,309,317,320, 0,327, 0,289,
355 308, 0,312,289,308, 0,289, 0, 63,316,309,317,320, 0
356 };
357
358 static const unsigned short ag_key_jmp[] = {
359 0, 0, 0, 2, 0, 0, 0, 0, 10, 16, 0, 0, 22, 0, 18, 12, 0, 24,
360 26, 28, 0, 17, 40, 0, 46, 49, 55, 0, 61, 0, 68, 0, 0, 65, 30, 72,
361 74, 0, 81, 0, 38, 0, 83, 86, 0, 95, 98, 0, 45, 0, 90, 48, 0, 0,
362 50, 0,102,106,114, 0,120,124, 0,129, 0, 0,134,137,143,151, 0,161,
363 163,170, 0, 71, 0,174,181,188, 0,196, 0, 0,199,203, 0, 4, 6, 5,
364 8, 8, 14, 21, 24, 33, 40, 42, 53, 56, 60,126, 63, 66,156, 75, 77, 81,
365 84,206, 0, 0, 0, 0,209,211,111,213, 0,215, 0,231,233, 0,121,245,
366 0,251, 0,257, 0,261, 0, 0,131, 0,265, 0,136, 0,267,270, 0, 0,
367 274, 0,293,299, 0,312,314, 0,149, 0,318,325, 0,218,220,227,124,127,
368 134,138,140,143,280,287,146,307,152,154,332, 0,336, 0,338,340,344, 0,
369 360,362, 0,180,374, 0,380,386, 0,392, 0,396, 0, 0,191, 0,400, 0,
370 196, 0,402,405, 0, 0,409, 0,440,442, 0,206, 0,446,453, 0,349,356,
371 183,186,194,198,200,203,415,422,428,435,209,211,460, 0,477,479, 0,230,
372 491, 0,497,503, 0,509, 0,516, 0, 0,513,241,520, 0,522, 0,248, 0,
373 524,527, 0, 0,531, 0,562,564, 0,258, 0,568,575, 0,464,466,473,233,
374 236,244,250,252,255,537,544,550,557,261,263,582, 0,602,607, 0,283, 0,
375 586,588,590,594,286,613,619, 0,697,704, 0,628,630,637,641,648,653,658,
376 665,672,675,681,688,693,296,711, 0,715,717, 0,719,723, 0,795,802, 0,
377 728,735,739,746,751,756,763,770,773,779,786,791,321,809, 0,813, 0,826,
378 828, 0,341,840, 0,846, 0,852, 0,856, 0, 0,351, 0,860, 0,356, 0,
379 862,865, 0, 0,869, 0,900,902, 0,366, 0,906,913, 0,815,822,344,347,
380 354,358,360,363,875,882,888,895,369,371,920, 0,935,937, 0,390,949, 0,
381 955, 0,961, 0,971, 0,400, 0,973,976, 0, 0,980, 0,1011,1013, 0,
382 410, 0,1017,1024, 0,924,931,393,396,965,402,404,407,986,993,999,1006,
383 413,415,1031, 0,1046,1048, 0,434,1060, 0,1066, 0,1072, 0,1076, 0,
384 0,444, 0,1080, 0,449, 0,1082,1085, 0, 0,1089, 0,1108,1114, 0,
385 1127,1129, 0,462, 0,1133,1140, 0,1035,1042,437,440,447,451,453,456,
386 1095,1102,459,1122,465,467,1147, 0,1220,1227,1234, 0,1151,1153,1160,
387 1164,1171,1176,1181,1188,1195,1198,1204,1211,1216,486,1242, 0,1310,1317,
388 1324, 0,1246,1253,1257,1264,1269,1274,1281,1288,1294,1301,1306,506,1332,
389 0,1343,1347, 0,1374,1378,1386, 0,1414,1421,1428, 0,1336,524,1350,
390 1357,1362,1367,527,1392,1398,1405,1410,531,1436, 0, 0, 0, 0,1444,1448,
391 0,1456, 0, 0,1440,549,1442,552,1450,1452,555,1459, 0, 0, 0, 0,
392 1466,1470, 0,1476, 0, 0,1462,567,1464,570,1472,573,1479, 0,1548,1555,
393 0,1482,1484,1491,1495,1502,1507,1512,1519,1526,1532,1539,1544,584,1562,
394 0,1566, 0, 0, 0, 0,1577,1581, 0,1589, 0, 0,1568,604,1570,1572,
395 1575,607,1583,1585,610,1592, 0,1659,1666, 0,1595,1602,1606,1613,1618,
396 1623,1630,1637,1643,1650,1655,624,1673, 0, 0, 0, 0,1684,1688, 0,1696,
397 0, 0,641,1677,1679,1682,644,1690,1692,647,1699, 0, 0, 0, 0,1720,
398 0, 0,660,1702,1704,1707,1709,1714,1716,663,1723, 0, 0, 0, 0,1735,
399 1739, 0,1747, 0, 0,1726,676,1728,1730,1733,679,1741,1743,682,1750, 0,
400 1760, 0, 0,1753,1756,1758,696,1763, 0,1770, 0, 0,1766,1768,705,1773,
401 0,1776, 0,1780, 0,1795,1797, 0,717,1809, 0,1815, 0,1821, 0,1828,
402 0, 0,1825,727, 0,1832, 0,733, 0,1834,1837, 0, 0,1841, 0,1872,
403 1874, 0,743, 0,1878,1885, 0,1784,1791,720,723,730,735,737,740,1847,
404 1854,1860,1867,746,748,1892, 0,1934,1937, 0,767, 0,770, 0,772, 0,
405 1954,1960, 0,1970,1972, 0,779, 0,1979,1986, 0,1896,1898,1905,1909,
406 1916,1921,1929,774,1941,1948,776,1965,782,784,1993, 0,2033,2036, 0,803,
407 0,806, 0,808, 0,2053,2059, 0,2069,2071, 0,815, 0,2078,2085, 0,
408 1997,2004,2008,2015,2020,2028,810,2040,2047,812,2064,818,820,2092, 0,
409 2096,2098,2106, 0,2112,2120, 0,2126, 0,2131, 0, 0, 0, 0,2137,2141,
410 0,2145,2148, 0,2153, 0, 0,2133,849,2135,852,2143,855,858,2156, 0,
411 0, 0, 0,2163,2167, 0,2169,2172, 0,2177, 0, 0,2159,870,2161,873,
412 876,879,2180, 0,2183,2185, 0,2204,2206, 0,893,2218, 0,2224, 0,2230,
413 0,2240, 0,903, 0,2242,2245, 0, 0,2249, 0,2280,2282, 0,913, 0,
414 2286,2293, 0,2191,2193,2200,896,899,2234,905,907,910,2255,2262,2268,2275,
415 916,918,2300, 0,2304,2306,2310,2318,2325, 0,2331,2333,2337,2345,2353,
416 2359, 0, 0, 0, 0,2374,2380, 0, 0,2382, 0,958, 0,2391,2394, 0,
417 2416,2419, 0,965, 0,2411,968, 0,970, 0,2423,2427, 0,2433,2437, 0,
418 2439, 0, 0,2444,2447,2453, 0,2463,2465, 0,988, 0,2472,2479,2486, 0,
419 2494, 0, 0,2368,2370,951,2372,954,960,2384,962,2398,2406,973,975,978,
420 981,984,2458,991,993,997,2497,2501, 0,2539,2543, 0,2571,2578,2585, 0,
421 2504,2511,2515,2522,2527,2532,1022,2549,2555,2562,2567,1025,2593, 0,2613,
422 0, 0,2597,2600,2602,2607,2609,1043,2616, 0,2619,2627,2635,2641, 0,
423 2650, 0,2659,2663, 0,2670,2672,2676, 0,2683, 0,2687,2689,2697,2705,
424 2711, 0
425 };
426
427 static const unsigned short ag_key_index[] = {
428 1, 3, 87, 0, 3, 3,114, 0,119,157,174, 1, 0,176, 0,214,266, 1,
429 214, 0,214,288,288,288,288,288,288,288,288,288,288,288,288,288,288, 0,
430 299, 1, 1, 1, 1,315, 1,318,299,324, 0, 0, 0, 0,339, 1, 0,374,
431 374,374,324, 0, 0, 0,418,374, 0,470, 1, 0,374,374,214,490,510,535,
432 0, 0,374,324, 0, 0,339,299,324,299,324,558,576,576,587,602,587,587,
433 587,613,613,324,627,627,627,650,587,666,627,685,699,685,708, 0, 0,299,
434 490,627,374,374,374,713, 0, 0,299,324,715,751,751,418,324,685, 0,685,
435 787,823, 0,374, 0,510, 1, 0, 1, 0,838,842,845, 0, 0, 0, 0,324,
436 324,847, 0, 0,613, 0,558,861,861,576,882,861,576,882,602, 0, 0, 0,
437 0,587,587,587,627,587,587,587,587,587,627,587,587,627,299,324,299,324,
438 299,299,324,890,890,890,838, 0,921,324, 0, 0,921,418, 0,685,685, 0,
439 823, 0, 0, 1, 0,938,510,288,944, 0,1000,1029,299,324, 0, 0, 0,
440 0,861,882,882, 0, 0,1046,650,708,699, 0, 0,418,324, 0,1054,1059,
441 1, 1, 1, 0, 0, 0,1061,1064,1068, 0, 0,510,842,613,613, 0, 0,
442 838,842,1070,842,1054, 0,510, 0, 0,324,324,324,938,510, 0,1059, 0,
443 0, 0, 0,510,324,510
444 };
445
446 static const unsigned char ag_key_ends[] = {
447 42,0, 47,0, 42,0, 61,0, 61,0, 68,82,69,83,83,0, 68,0,
448 83,69,68,0, 69,0, 76,0, 69,0, 83,69,73,78,84,69,82,82,85,80,84,0,
449 65,82,73,78,84,0, 84,65,0, 67,76,65,82,69,0, 83,65,66,76,69,0,
450 79,82,68,0, 83,69,0, 66,76,69,0, 70,0, 84,69,82,78,65,76,0,
451 79,0, 76,84,0, 79,82,68,0, 84,73,65,76,0, 69,82,0, 85,80,84,0,
452 66,69,76,0, 84,69,82,65,76,76,89,0, 78,71,73,78,84,0, 78,85,83,0,
453 68,0, 79,84,0, 70,83,69,84,0, 85,83,0, 73,78,84,69,82,0,
454 79,67,69,68,85,82,69,0, 66,76,73,67,0, 87,79,82,68,0, 76,0,
455 78,84,82,65,78,84,0, 85,82,78,0, 76,69,67,84,79,82,0,
456 79,82,84,73,78,84,0, 82,85,67,84,85,82,69,0, 69,78,0, 73,76,69,0,
457 82,68,0, 79,82,0, 42,0, 61,0, 61,0, 79,70,0, 42,0,
458 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
459 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
460 83,65,66,76,69,0, 79,82,68,0, 66,76,69,0, 79,0, 76,84,0,
461 79,82,68,0, 84,69,71,69,82,0, 79,78,71,73,78,84,0,
462 70,70,83,69,84,0, 73,78,84,69,82,0, 79,67,69,68,85,82,69,0,
463 87,79,82,68,0, 76,0, 85,82,78,0, 76,69,67,84,79,82,0,
464 79,82,84,73,78,84,0, 79,82,68,0, 79,0, 42,0, 65,83,69,0,
465 72,73,76,69,0, 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
466 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
467 67,76,65,82,69,0, 83,65,66,76,69,0, 79,82,68,0, 66,76,69,0, 79,0,
468 76,84,0, 79,82,68,0, 84,69,71,69,82,0, 79,78,71,73,78,84,0,
469 70,70,83,69,84,0, 79,73,78,84,69,82,0, 87,79,82,68,0, 76,0,
470 85,82,78,0, 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0,
471 42,0, 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
472 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
473 67,76,65,82,69,0, 83,65,66,76,69,0, 79,82,68,0, 83,69,0,
474 66,76,69,0, 70,0, 79,0, 76,84,0, 79,82,68,0, 84,69,71,69,82,0,
475 79,78,71,73,78,84,0, 70,70,83,69,84,0, 79,73,78,84,69,82,0,
476 87,79,82,68,0, 76,0, 85,82,78,0, 76,69,67,84,79,82,0,
477 79,82,84,73,78,84,0, 79,82,68,0, 42,0, 84,0, 65,84,65,0,
478 88,84,69,82,78,65,76,0, 84,73,65,76,0, 69,82,85,80,84,0,
479 85,66,76,73,67,0, 69,69,78,84,82,65,78,84,0, 42,0,
480 68,68,82,69,83,83,0, 89,84,69,0, 72,65,82,73,78,84,0,
481 87,79,82,68,0, 87,79,82,68,0, 78,84,69,71,69,82,0,
482 79,78,71,73,78,84,0, 79,84,0, 70,70,83,69,84,0,
483 79,73,78,84,69,82,0, 87,79,82,68,0, 69,65,76,0,
484 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0, 42,0, 79,0,
485 65,83,69,0, 72,73,76,69,0, 68,68,82,69,83,83,0, 89,84,69,0,
486 72,65,82,73,78,84,0, 87,79,82,68,0, 87,79,82,68,0,
487 78,84,69,71,69,82,0, 79,78,71,73,78,84,0, 79,84,0,
488 70,70,83,69,84,0, 79,73,78,84,69,82,0, 87,79,82,68,0, 69,65,76,0,
489 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0, 79,0,
490 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
491 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
492 83,65,66,76,69,0, 79,82,68,0, 66,76,69,0, 79,0, 76,84,0,
493 79,82,68,0, 84,69,71,69,82,0, 79,78,71,73,78,84,0,
494 70,70,83,69,84,0, 79,73,78,84,69,82,0, 87,79,82,68,0, 76,0,
495 85,82,78,0, 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0,
496 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
497 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
498 83,65,66,76,69,0, 79,82,68,0, 78,65,66,76,69,0, 79,0, 76,84,0,
499 79,82,68,0, 84,69,71,69,82,0, 79,78,71,73,78,84,0,
500 70,70,83,69,84,0, 79,73,78,84,69,82,0, 87,79,82,68,0, 76,0,
501 85,82,78,0, 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0,
502 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
503 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
504 83,65,66,76,69,0, 79,82,68,0, 66,76,69,0, 79,0, 76,84,0,
505 79,82,68,0, 84,69,71,69,82,0, 79,78,71,73,78,84,0,
506 70,70,83,69,84,0, 73,78,84,69,82,0, 79,67,69,68,85,82,69,0,
507 87,79,82,68,0, 76,0, 85,82,78,0, 76,69,67,84,79,82,0,
508 79,82,84,73,78,84,0, 79,82,68,0, 42,0, 68,68,82,69,83,83,0,
509 89,84,69,0, 72,65,82,73,78,84,0, 87,79,82,68,0, 87,79,82,68,0,
510 78,84,69,71,69,82,0, 79,78,71,73,78,84,0, 79,84,0,
511 70,70,83,69,84,0, 79,73,78,84,69,82,0, 87,79,82,68,0, 69,65,76,0,
512 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 82,85,67,84,85,82,69,0,
513 79,82,68,0, 68,68,82,69,83,83,0, 89,84,69,0, 72,65,82,73,78,84,0,
514 87,79,82,68,0, 87,79,82,68,0, 78,84,69,71,69,82,0,
515 79,78,71,73,78,84,0, 70,70,83,69,84,0, 79,73,78,84,69,82,0,
516 87,79,82,68,0, 69,65,76,0, 76,69,67,84,79,82,0,
517 79,82,84,73,78,84,0, 82,85,67,84,85,82,69,0, 79,82,68,0,
518 68,68,82,69,83,83,0, 83,69,68,0, 84,69,0, 72,65,82,73,78,84,0,
519 87,79,82,68,0, 87,79,82,68,0, 78,84,69,71,69,82,0, 66,69,76,0,
520 84,69,82,65,76,76,89,0, 78,71,73,78,84,0, 70,70,83,69,84,0,
521 79,73,78,84,69,82,0, 87,79,82,68,0, 69,65,76,0,
522 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 82,85,67,84,85,82,69,0,
523 79,82,68,0, 42,0, 61,0, 78,85,83,0, 68,0, 82,0, 76,85,83,0,
524 69,78,0, 79,82,0, 42,0, 61,0, 78,85,83,0, 68,0, 76,85,83,0,
525 69,78,0, 79,82,0, 42,0, 68,68,82,69,83,83,0, 89,84,69,0,
526 72,65,82,73,78,84,0, 87,79,82,68,0, 87,79,82,68,0,
527 78,84,69,71,69,82,0, 79,78,71,73,78,84,0, 70,70,83,69,84,0,
528 79,73,78,84,69,82,0, 87,79,82,68,0, 69,65,76,0,
529 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0, 39,0, 42,0,
530 61,0, 78,68,0, 89,0, 78,85,83,0, 68,0, 82,0, 76,85,83,0,
531 69,78,0, 79,82,0, 68,68,82,69,83,83,0, 89,84,69,0,
532 72,65,82,73,78,84,0, 87,79,82,68,0, 87,79,82,68,0,
533 78,84,69,71,69,82,0, 79,78,71,73,78,84,0, 70,70,83,69,84,0,
534 79,73,78,84,69,82,0, 87,79,82,68,0, 69,65,76,0,
535 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0, 61,0,
536 78,68,0, 89,0, 78,85,83,0, 68,0, 82,0, 76,85,83,0, 69,78,0,
537 79,82,0, 61,0, 78,68,0, 89,0, 73,78,85,83,0, 82,0, 76,85,83,0,
538 69,78,0, 79,82,0, 61,0, 61,0, 78,68,0, 89,0, 78,85,83,0, 68,0,
539 82,0, 76,85,83,0, 69,78,0, 79,82,0, 78,68,0, 89,0, 82,0,
540 69,78,0, 79,82,0, 89,0, 82,0, 69,78,0, 79,82,0, 72,69,78,0,
541 76,83,69,0, 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
542 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
543 83,65,66,76,69,0, 79,82,68,0, 83,69,0, 66,76,69,0, 79,0,
544 76,84,0, 79,82,68,0, 84,69,71,69,82,0, 79,78,71,73,78,84,0,
545 70,70,83,69,84,0, 79,73,78,84,69,82,0, 87,79,82,68,0, 76,0,
546 85,82,78,0, 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0,
547 42,0, 68,68,82,69,83,83,0, 89,84,69,0, 72,65,82,73,78,84,0,
548 87,79,82,68,0, 88,84,69,82,78,65,76,0, 87,79,82,68,0, 69,82,0,
549 85,80,84,0, 79,78,71,73,78,84,0, 70,70,83,69,84,0,
550 73,78,84,69,82,0, 66,76,73,67,0, 87,79,82,68,0, 76,0,
551 78,84,82,65,78,84,0, 76,69,67,84,79,82,0, 79,82,84,73,78,84,0,
552 79,82,68,0, 68,68,82,69,83,83,0, 89,84,69,0, 72,65,82,73,78,84,0,
553 87,79,82,68,0, 88,84,69,82,78,65,76,0, 87,79,82,68,0, 69,82,0,
554 85,80,84,0, 79,78,71,73,78,84,0, 70,70,83,69,84,0,
555 73,78,84,69,82,0, 66,76,73,67,0, 87,79,82,68,0, 76,0,
556 78,84,82,65,78,84,0, 76,69,67,84,79,82,0, 79,82,84,73,78,84,0,
557 79,82,68,0, 42,0, 88,84,69,82,78,65,76,0, 85,66,76,73,67,0,
558 88,84,69,82,78,65,76,0, 85,66,76,73,67,0, 65,83,69,68,0, 89,0,
559 42,0, 61,0, 78,85,83,0, 68,0, 82,0, 85,83,0, 66,76,73,67,0,
560 69,78,0, 79,82,0, 42,0, 61,0, 78,85,83,0, 68,0, 85,83,0,
561 66,76,73,67,0, 69,78,0, 79,82,0, 42,0, 85,66,76,73,67,0, 42,0,
562 68,68,82,69,83,83,0, 89,84,69,0, 76,0,
563 83,69,73,78,84,69,82,82,85,80,84,0, 65,82,73,78,84,0,
564 83,65,66,76,69,0, 79,82,68,0, 78,65,66,76,69,0, 79,0, 76,84,0,
565 79,82,68,0, 84,69,71,69,82,0, 79,78,71,73,78,84,0,
566 70,70,83,69,84,0, 79,73,78,84,69,82,0, 87,79,82,68,0, 76,0,
567 85,82,78,0, 76,69,67,84,79,82,0, 79,82,84,73,78,84,0, 79,82,68,0,
568 84,0, 65,84,65,0, 88,84,69,82,78,65,76,0, 78,73,84,73,65,76,0,
569 85,66,76,73,67,0, 42,0, 65,84,65,0, 88,84,69,82,78,65,76,0,
570 78,84,69,82,85,80,84,0, 85,66,76,73,67,0,
571 69,69,78,84,82,65,78,84,0, 42,0, 61,0, 61,0, 68,82,69,83,83,0,
572 68,0, 69,0, 72,65,82,73,78,84,0, 84,65,0, 79,82,68,0,
573 88,84,69,82,78,65,76,0, 87,79,82,68,0, 84,73,65,76,0, 69,82,0,
574 85,80,84,0, 66,69,76,0, 78,71,73,78,84,0, 78,85,83,0, 68,0,
575 70,83,69,84,0, 85,83,0, 73,78,84,69,82,0, 66,76,73,67,0,
576 87,79,82,68,0, 76,0, 78,84,82,65,78,84,0, 76,69,67,84,79,82,0,
577 79,82,84,73,78,84,0, 82,85,67,84,85,82,69,0, 69,78,0, 79,82,68,0,
578 79,82,0, 68,68,82,69,83,83,0, 89,84,69,0, 72,65,82,73,78,84,0,
579 87,79,82,68,0, 87,79,82,68,0, 78,84,69,71,69,82,0, 66,69,76,0,
580 78,71,73,78,84,0, 70,70,83,69,84,0, 79,73,78,84,69,82,0,
581 87,79,82,68,0, 69,65,76,0, 76,69,67,84,79,82,0,
582 79,82,84,73,78,84,0, 82,85,67,84,85,82,69,0, 79,82,68,0, 78,68,0,
583 89,0, 73,78,85,83,0, 82,0, 76,85,83,0, 69,78,0, 79,82,0,
584 88,84,69,82,78,65,76,0, 78,84,69,82,85,80,84,0, 85,66,76,73,67,0,
585 69,69,78,84,82,65,78,84,0, 84,82,85,67,84,85,82,69,0, 65,84,65,0,
586 78,73,84,73,65,76,0, 84,0, 65,84,65,0, 78,73,84,73,65,76,0,
587 65,84,65,0, 42,0, 88,84,69,82,78,65,76,0, 78,84,69,82,85,80,84,0,
588 85,66,76,73,67,0, 69,69,78,84,82,65,78,84,0,
589 };
590 #define AG_TCV(x) (((int)(x) >= -1 && (int)(x) <= 255) ? ag_tcv[(x) + 1] : 0)
591
592 static const unsigned short ag_tcv[] = {
593 103,103,249,249,249,103,249,249,249,249, 62, 62, 62, 62, 62,249,249,249,
594 249,249,249,249,249,249,249,249,249,103,249,249,249,249,249, 62,249,249,
595 249,225,249,249,243,259,258,307,262,290,330,267,315,228,228,250,250,250,
596 250,250,250,251,251,304,264,325,265,323,249,311,252,227,252,223,253,252,
597 254,233,254,254,254,254,254,254,230,254,230,254,254,254,254,254,254,254,
598 254,254,249,249,249,249,255,311,252,227,252,223,253,252,254,233,254,254,
599 254,254,254,254,230,254,230,254,254,254,254,254,254,254,254,254,249,249,
600 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,
601 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,
602 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,
603 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,
604 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,
605 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,
606 249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,
607 249,249,249,249,249
608 };
609
610 #ifndef SYNTAX_ERROR
611 #define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
612 (PCB).error_message, (PCB).line, (PCB).column)
613 #endif
614
615 #ifndef FIRST_LINE
616 #define FIRST_LINE 1
617 #endif
618
619 #ifndef FIRST_COLUMN
620 #define FIRST_COLUMN 1
621 #endif
622
623 #ifndef PARSER_STACK_OVERFLOW
624 #define PARSER_STACK_OVERFLOW {fprintf(stderr, \
625 "\nParser stack overflow, line %d, column %d\n",\
626 (PCB).line, (PCB).column);}
627 #endif
628
629 #ifndef REDUCTION_TOKEN_ERROR
630 #define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
631 "\nReduction token error, line %d, column %d\n", \
632 (PCB).line, (PCB).column);}
633 #endif
634
635
636 typedef enum
637 {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
638 ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
639
640 #ifndef GET_INPUT
641 #define GET_INPUT ((PCB).input_code = getchar())
642 #endif
643
644
645 static int ag_look_ahead(void) {
646 if ((PCB).rx < (PCB).fx) {
647 return CONVERT_CASE((PCB).lab[(PCB).rx++]);
648 }
649 GET_INPUT;
650 (PCB).fx++;
651 return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code);
652 }
653
654 static void ag_get_key_word(int ag_k) {
655 int save_index = (PCB).rx;
656 const unsigned char *sp;
657 int ag_ch;
658 while (1) {
659 switch (ag_key_act[ag_k]) {
660 case ag_cf_end_key:
661 sp = ag_key_ends + ag_key_jmp[ag_k];
662 do {
663 if ((ag_ch = *sp++) == 0) {
664 int ag_k1 = ag_key_parm[ag_k];
665 int ag_k2 = ag_key_pt[ag_k1];
666 if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail;
667 (PCB).rx--;
668 (PCB).token_number = (plm_token_type) ag_key_pt[ag_k1 + 1];
669 return;
670 }
671 } while (ag_look_ahead() == ag_ch);
672 goto ag_fail;
673 case ag_end_key:
674 sp = ag_key_ends + ag_key_jmp[ag_k];
675 do {
676 if ((ag_ch = *sp++) == 0) {
677 (PCB).token_number = (plm_token_type) ag_key_parm[ag_k];
678 return;
679 }
680 } while (ag_look_ahead() == ag_ch);
681 case ag_no_match_key:
682 ag_fail:
683 (PCB).rx = save_index;
684 return;
685 case ag_cf_set_key: {
686 int ag_k1 = ag_key_parm[ag_k];
687 int ag_k2 = ag_key_pt[ag_k1];
688 ag_k = ag_key_jmp[ag_k];
689 if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break;
690 save_index = --(PCB).rx;
691 (PCB).token_number = (plm_token_type) ag_key_pt[ag_k1+1];
692 break;
693 }
694 case ag_set_key:
695 save_index = (PCB).rx;
696 (PCB).token_number = (plm_token_type) ag_key_parm[ag_k];
697 case ag_jmp_key:
698 ag_k = ag_key_jmp[ag_k];
699 ag_ch = ag_look_ahead();
700 break;
701 case ag_accept_key:
702 (PCB).token_number = (plm_token_type) ag_key_parm[ag_k];
703 return;
704 case ag_cf_accept_key: {
705 int ag_k1 = ag_key_parm[ag_k];
706 int ag_k2 = ag_key_pt[ag_k1];
707 if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index;
708 else {
709 (PCB).rx--;
710 (PCB).token_number = (plm_token_type) ag_key_pt[ag_k1+1];
711 }
712 return;
713 }
714 default:
715 /* not reachable; here to suppress compiler warnings */
716 goto ag_fail;
717 }
718 if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++;
719 if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) {
720 (PCB).rx = save_index;
721 return;
722 }
723 }
724 }
725
726
727 #ifndef AG_NEWLINE
728 #define AG_NEWLINE 10
729 #endif
730
731 #ifndef AG_RETURN
732 #define AG_RETURN 13
733 #endif
734
735 #ifndef AG_FORMFEED
736 #define AG_FORMFEED 12
737 #endif
738
739 #ifndef AG_TABCHAR
740 #define AG_TABCHAR 9
741 #endif
742
743 static void ag_track(void) {
744 int ag_k = 0;
745 while (ag_k < (PCB).rx) {
746 int ag_ch = (PCB).lab[ag_k++];
747 switch (ag_ch) {
748 case AG_NEWLINE:
749 (PCB).column = 1, (PCB).line++;
750 case AG_RETURN:
751 case AG_FORMFEED:
752 break;
753 case AG_TABCHAR:
754 (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
755 break;
756 default:
757 (PCB).column++;
758 }
759 }
760 ag_k = 0;
761 while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++];
762 (PCB).fx = ag_k;
763 (PCB).rx = 0;
764 }
765
766
767 static void ag_prot(void) {
768 int ag_k;
769 ag_k = 128 - ++(PCB).btsx;
770 if (ag_k <= (PCB).ssx) {
771 (PCB).exit_flag = AG_STACK_ERROR_CODE;
772 PARSER_STACK_OVERFLOW;
773 return;
774 }
775 (PCB).bts[(PCB).btsx] = (PCB).sn;
776 (PCB).bts[ag_k] = (PCB).ssx;
777 (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
778 (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
779 }
780
781 static void ag_undo(void) {
782 if ((PCB).drt == -1) return;
783 while ((PCB).btsx) {
784 int ag_k = 128 - (PCB).btsx;
785 (PCB).sn = (PCB).bts[(PCB).btsx--];
786 (PCB).ssx = (PCB).bts[ag_k];
787 (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
788 (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
789 }
790 (PCB).token_number = (plm_token_type) (PCB).drt;
791 (PCB).ssx = (PCB).dssx;
792 (PCB).sn = (PCB).dsn;
793 (PCB).drt = -1;
794 }
795
796
797 static const unsigned short ag_tstt[] = {
798 254,253,252,233,230,227,223,63,62,0,58,256,257,
799 330,325,323,315,311,307,304,290,267,265,264,262,259,258,255,254,253,252,251,
800 250,249,243,233,230,228,227,225,223,67,62,0,65,66,
801 63,62,0,58,
802 254,253,252,233,230,227,223,0,57,60,102,193,266,
803 330,325,323,315,311,307,304,290,267,265,264,262,259,258,255,254,253,252,251,
804 250,249,243,233,230,228,227,225,223,62,0,
805 67,0,
806 330,326,325,324,323,322,315,307,304,296,290,267,265,264,262,259,258,255,254,
807 253,252,251,250,233,230,228,227,225,223,63,62,0,58,256,257,
808 304,0,154,
809 285,103,0,20,
810 328,321,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,
811 274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,63,62,0,58,
812 256,257,
813 294,0,15,126,214,
814 103,63,62,0,58,256,257,
815 103,0,
816 295,293,264,254,253,252,233,230,227,223,63,62,0,58,256,257,
817 264,0,85,
818 328,306,303,302,300,298,297,294,292,291,284,283,281,280,279,278,277,276,275,
819 274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,
820 11,13,14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,
821 82,85,88,89,90,91,92,93,94,99,100,104,105,113,114,115,116,121,122,123,
822 124,125,126,127,128,129,130,132,134,135,137,147,151,152,153,169,172,174,
823 207,210,211,214,220,266,
824 328,306,303,302,300,298,297,294,292,291,286,285,284,283,281,280,279,278,277,
825 276,275,274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,103,
826 63,62,0,58,256,257,
827 259,254,253,252,233,230,227,223,63,62,0,58,256,257,
828 328,306,303,302,300,298,297,294,292,291,284,283,281,280,279,278,277,276,275,
829 274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,
830 11,13,14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,
831 82,85,88,89,90,91,92,93,94,99,100,104,105,113,114,115,116,121,122,123,
832 124,125,126,127,128,129,130,132,134,135,137,147,151,152,153,169,172,174,
833 207,210,211,214,220,266,
834 259,254,253,252,233,230,227,223,0,60,69,117,118,119,120,138,139,173,175,219,
835 221,266,
836 328,306,303,302,300,298,297,294,292,291,284,283,281,280,279,278,277,276,275,
837 274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,
838 11,13,14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,
839 82,85,88,89,90,91,92,93,94,99,100,104,105,113,114,115,121,122,123,124,
840 125,126,127,128,129,130,132,134,135,137,147,151,152,153,169,172,174,207,
841 210,211,214,220,266,
842 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
843 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
844 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
845 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
846 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
847 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
848 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
849 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
850 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
851 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
852 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
853 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
854 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
855 320,317,316,312,309,308,290,289,264,259,258,63,62,0,58,256,257,
856 259,0,69,191,
857 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,264,
858 262,259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
859 264,63,62,0,58,256,257,
860 264,63,62,0,58,256,257,
861 264,63,62,0,58,256,257,
862 259,63,62,0,58,256,257,
863 301,63,62,0,58,256,257,
864 254,253,252,233,230,227,223,63,62,0,58,256,257,
865 295,293,264,254,253,252,233,230,227,223,0,9,54,60,85,98,156,157,266,
866 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
867 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
868 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,264,
869 262,259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,
870 34,38,39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,85,87,94,99,109,
871 131,132,133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,
872 218,240,266,287,288,331,
873 264,0,85,
874 264,0,85,
875 264,0,85,
876 259,0,69,
877 301,0,53,
878 254,253,252,233,230,227,223,63,62,0,58,256,257,
879 290,0,112,
880 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
881 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
882 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
883 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,129,
884 130,132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
885 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
886 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
887 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
888 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,129,
889 130,132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
890 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
891 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
892 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
893 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,129,
894 130,132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
895 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
896 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
897 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
898 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
899 266,287,288,331,
900 254,253,252,233,230,227,223,0,60,266,
901 254,253,252,233,230,227,223,0,60,98,266,
902 265,0,83,
903 328,306,303,302,300,297,294,292,284,283,281,280,279,278,277,276,275,274,273,
904 272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,14,15,
905 16,18,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,88,89,90,
906 91,92,93,94,99,100,104,105,106,107,121,122,123,124,125,126,127,130,132,
907 134,137,147,151,152,153,169,172,174,210,211,214,216,220,266,
908 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
909 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
910 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
911 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,130,
912 132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
913 304,267,259,0,69,87,154,190,192,215,
914 321,0,43,
915 264,254,253,252,233,230,227,223,63,62,0,58,256,257,
916 264,254,253,252,233,230,227,223,0,60,136,266,
917 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
918 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
919 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
920 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,130,132,
921 134,135,151,152,153,169,172,174,210,211,214,220,266,
922 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
923 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
924 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
925 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,130,
926 132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
927 328,306,303,302,300,298,297,294,292,291,284,283,281,280,279,278,277,276,275,
928 274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,
929 11,13,14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,
930 82,85,88,89,90,91,92,93,94,99,100,104,105,113,114,115,121,122,123,124,
931 125,126,127,128,129,130,132,134,135,137,147,151,152,153,169,172,174,207,
932 210,211,214,220,266,
933 330,327,313,311,307,281,280,279,278,277,276,275,274,273,272,271,270,269,268,
934 267,262,259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,
935 257,
936 327,281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,0,69,78,79,
937 80,197,
938 329,310,299,0,5,31,33,
939 254,253,252,233,230,227,223,0,60,140,221,266,
940 290,264,0,85,112,
941 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
942 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
943 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
944 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,130,
945 132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
946 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
947 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
948 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
949 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
950 266,287,288,331,
951 267,0,87,
952 265,0,83,
953 301,0,53,170,
954 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
955 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
956 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
957 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
958 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
959 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
960 266,287,288,331,
961 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
962 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
963 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
964 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
965 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
966 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
967 266,287,288,331,
968 330,326,325,324,323,322,319,318,315,314,307,305,301,290,267,265,264,262,261,
969 260,258,253,252,251,250,233,228,227,225,223,63,62,0,222,232,235,236,
970 330,326,325,324,323,322,319,315,314,307,305,301,290,267,265,264,262,261,260,
971 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,229,232,235,236,
972 330,326,325,324,323,322,319,315,314,307,305,301,290,267,265,264,262,261,260,
973 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,226,229,232,235,
974 236,
975 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
976 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
977 330,325,323,315,311,307,304,290,267,265,264,262,259,258,255,254,253,252,251,
978 250,249,245,243,233,230,228,227,225,223,62,0,246,247,248,
979 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
980 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
981 281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,254,253,252,233,
982 230,227,223,63,62,0,58,256,257,
983 281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,254,253,252,233,
984 230,227,223,63,62,0,58,256,257,
985 330,326,325,324,323,322,319,318,315,314,307,305,301,290,282,265,264,263,262,
986 261,260,258,63,62,0,58,256,257,
987 330,326,325,324,323,322,319,318,315,314,307,305,301,290,282,265,264,263,262,
988 261,260,258,63,62,0,58,256,257,
989 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
990 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
991 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
992 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
993 266,287,288,331,
994 281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,254,253,252,233,
995 230,227,223,0,1,7,11,16,26,29,34,39,42,45,46,49,50,55,60,69,94,99,132,
996 266,
997 281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,254,253,252,233,
998 230,227,223,0,1,7,11,16,26,29,34,39,42,45,46,49,50,55,60,69,94,99,132,
999 266,
1000 311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,259,254,253,
1001 252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,39,42,45,46,49,
1002 50,55,59,60,61,69,87,94,99,109,132,162,163,164,165,176,177,196,204,205,
1003 266,287,288,331,
1004 315,314,307,0,36,155,194,195,
1005 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1006 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1007 330,326,325,324,323,322,265,262,261,260,0,22,32,35,37,41,72,73,74,83,184,
1008 208,209,240,
1009 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1010 254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,39,42,
1011 45,46,49,50,55,59,60,61,69,73,74,76,77,87,94,99,109,132,162,163,164,165,
1012 176,177,183,196,204,205,212,213,217,218,240,266,287,288,331,
1013 267,259,0,69,87,190,192,215,
1014 263,0,2,75,
1015 296,0,3,
1016 319,318,0,40,56,181,
1017 264,0,85,
1018 251,250,228,0,101,162,163,164,165,331,
1019 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1020 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1021 330,327,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,
1022 262,259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1023 281,280,279,278,277,276,275,274,273,272,271,270,269,268,254,253,252,233,230,
1024 227,223,0,1,7,11,16,26,29,34,39,42,45,46,49,50,55,60,94,99,132,266,
1025 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
1026 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
1027 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
1028 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,130,
1029 132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
1030 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
1031 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
1032 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
1033 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,130,
1034 132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
1035 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
1036 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
1037 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
1038 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,130,
1039 132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
1040 305,0,52,
1041 264,0,85,
1042 264,259,0,68,69,85,
1043 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1044 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1045 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1046 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1047 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
1048 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
1049 266,287,288,331,
1050 286,0,17,
1051 328,306,303,302,300,298,297,294,292,286,284,283,281,280,279,278,277,276,275,
1052 274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,
1053 328,306,303,302,300,298,297,294,292,286,284,283,281,280,279,278,277,276,275,
1054 274,273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,
1055 328,306,303,302,300,297,294,292,284,283,281,280,279,278,277,276,275,274,273,
1056 272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,14,15,
1057 16,18,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,88,89,90,
1058 91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,130,132,134,151,
1059 152,153,169,172,174,210,211,214,216,220,266,
1060 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1061 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1062 39,42,45,46,49,50,55,59,60,61,69,70,73,74,76,77,84,87,94,99,109,131,132,
1063 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
1064 266,287,288,331,
1065 267,0,87,190,192,
1066 254,253,252,233,230,227,223,0,60,189,266,
1067 267,0,87,190,
1068 320,317,316,309,281,280,279,278,277,276,275,274,273,272,271,270,269,268,264,
1069 259,63,62,0,58,256,257,
1070 320,317,316,309,281,280,279,278,277,276,275,274,273,272,271,270,269,268,264,
1071 259,0,69,150,198,
1072 264,0,85,
1073 328,306,303,302,300,298,297,294,292,284,283,281,280,279,278,277,276,275,274,
1074 273,272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,
1075 14,15,16,18,19,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,
1076 88,89,90,91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,128,130,
1077 132,134,135,137,147,151,152,153,169,172,174,210,211,214,220,266,
1078 307,251,250,228,0,59,155,162,163,164,165,196,288,331,
1079 327,281,280,279,278,277,276,275,274,273,272,271,270,269,268,0,1,7,11,16,26,
1080 29,34,39,42,45,46,49,50,51,55,94,145,186,
1081 254,253,252,233,230,227,223,63,62,0,58,256,257,
1082 254,253,252,233,230,227,223,0,60,86,266,
1083 243,63,62,0,58,256,257,
1084 243,0,61,287,
1085 317,316,290,264,63,62,0,58,256,257,
1086 317,316,290,264,0,21,44,141,
1087 329,0,5,
1088 290,258,0,71,112,
1089 259,254,253,252,233,230,227,223,0,60,69,117,118,119,138,139,173,175,219,221,
1090 266,
1091 258,0,71,
1092 254,253,252,233,230,227,223,0,60,266,
1093 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1094 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1095 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
1096 133,158,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,
1097 240,266,287,288,331,
1098 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1099 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1100 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,95,99,109,131,132,
1101 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
1102 266,287,288,331,
1103 282,264,0,6,96,171,
1104 264,0,85,
1105 264,0,85,
1106 330,262,253,251,250,228,0,237,
1107 253,252,251,250,233,228,227,225,223,0,232,
1108 330,326,325,324,323,322,319,318,315,314,307,305,301,290,267,265,264,262,261,
1109 260,258,253,252,251,250,233,228,227,225,223,63,62,0,222,232,235,236,
1110 330,326,325,324,323,322,319,318,317,315,314,307,305,301,290,265,264,262,261,
1111 260,258,253,252,251,250,233,228,227,225,223,63,62,0,222,232,
1112 253,252,251,250,233,228,227,225,223,0,232,
1113 330,326,325,324,323,322,319,315,314,307,305,301,290,267,265,264,262,261,260,
1114 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,229,232,235,236,
1115 330,326,325,324,323,322,319,317,315,314,307,305,301,290,265,264,262,261,260,
1116 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,229,232,
1117 253,252,251,250,233,228,227,225,223,0,232,
1118 330,326,325,324,323,322,319,315,314,307,305,301,290,267,265,264,262,261,260,
1119 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,226,229,232,235,
1120 236,
1121 330,326,325,324,323,322,319,317,315,314,307,305,301,290,265,264,262,261,260,
1122 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,226,229,232,
1123 330,325,323,315,311,307,304,290,267,265,264,262,259,258,255,254,253,252,251,
1124 250,249,245,233,230,228,227,225,223,62,0,246,
1125 243,0,
1126 258,0,71,
1127 251,250,243,228,0,59,61,109,111,162,163,164,165,196,287,288,331,
1128 251,250,243,228,0,59,61,109,111,162,163,164,165,196,287,288,331,
1129 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1130 258,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1131 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1132 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1133 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1134 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1135 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1136 254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,39,42,
1137 45,46,49,50,55,59,60,61,69,73,74,87,94,99,109,132,162,163,164,165,176,
1138 177,196,204,205,212,213,217,218,240,266,287,288,331,
1139 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1140 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1141 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1142 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1143 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1144 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1145 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1146 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1147 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1148 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1149 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1150 254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,39,42,
1151 45,46,49,50,55,59,60,61,69,73,74,76,77,87,94,99,109,132,162,163,164,165,
1152 176,177,196,204,205,212,213,217,218,240,266,287,288,331,
1153 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1154 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1155 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1156 254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1157 330,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,259,
1158 254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,39,42,
1159 45,46,49,50,55,59,60,61,69,73,74,77,87,94,99,109,132,162,163,164,165,
1160 176,177,196,204,205,212,213,217,218,240,266,287,288,331,
1161 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1162 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1163 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1164 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1165 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,87,94,99,109,132,162,163,
1166 164,165,176,177,182,183,196,204,205,212,213,217,218,240,266,287,288,331,
1167 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1168 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1169 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1170 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1171 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,87,94,99,109,132,133,162,
1172 163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,266,287,
1173 288,331,
1174 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1175 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1176 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1177 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1178 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1179 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1180 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,87,94,99,109,132,162,163,
1181 164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,266,287,288,
1182 331,
1183 317,258,253,252,251,250,233,228,227,225,223,63,62,0,222,232,
1184 317,258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,229,232,
1185 317,258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,226,229,232,
1186 317,316,258,63,62,0,58,256,257,
1187 258,0,71,
1188 328,306,303,302,300,297,294,292,284,283,281,280,279,278,277,276,275,274,273,
1189 272,271,270,269,268,264,254,253,252,233,230,227,223,63,62,0,58,256,257,
1190 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1191 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1192 39,42,45,46,49,50,55,59,60,61,69,70,73,74,76,77,84,87,94,99,109,131,132,
1193 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
1194 266,287,288,331,
1195 264,0,85,
1196 264,0,85,
1197 328,306,303,302,300,297,294,292,284,283,281,280,279,278,277,276,275,274,273,
1198 272,271,270,269,268,264,254,253,252,233,230,227,223,63,62,0,58,256,257,
1199 328,306,303,302,300,297,294,292,284,283,281,280,279,278,277,276,275,274,273,
1200 272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,14,15,
1201 16,18,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,88,89,90,
1202 91,92,93,94,99,100,104,105,108,121,122,123,124,125,126,127,130,132,134,
1203 137,147,151,152,153,169,172,174,210,211,214,220,266,
1204 290,258,0,71,112,
1205 267,0,87,190,
1206 259,0,69,191,
1207 254,253,252,233,230,227,223,0,60,148,149,266,
1208 320,317,316,309,281,280,279,278,277,276,275,274,273,272,271,270,269,268,264,
1209 0,1,7,11,16,26,29,34,39,42,45,46,49,50,55,94,201,202,
1210 258,0,71,
1211 258,0,71,
1212 259,63,62,0,58,256,257,
1213 259,0,69,
1214 317,316,312,308,290,289,264,0,4,12,21,28,44,146,161,178,179,203,
1215 267,0,87,
1216 320,317,316,312,309,308,290,289,264,63,62,0,58,256,257,
1217 320,317,316,309,290,289,264,63,62,0,58,256,257,
1218 254,253,252,233,230,227,223,0,60,221,266,
1219 330,327,326,325,324,323,322,320,319,318,317,316,315,314,312,309,308,307,305,
1220 301,299,296,290,289,282,281,280,279,278,277,276,275,274,273,272,271,270,
1221 269,268,267,265,264,263,262,261,260,259,258,63,62,0,58,256,257,
1222 327,299,281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,0,31,69,
1223 79,144,
1224 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1225 259,254,253,252,251,250,243,233,230,228,227,223,63,62,0,58,256,257,
1226 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1227 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1228 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,97,99,109,131,132,
1229 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
1230 266,287,288,331,
1231 264,0,85,
1232 251,250,228,0,239,
1233 251,250,228,0,239,
1234 253,252,251,250,233,228,227,225,223,0,232,
1235 330,326,325,324,323,322,319,318,317,315,314,307,305,301,290,265,264,262,261,
1236 260,258,253,252,251,250,233,228,227,225,223,63,62,0,222,232,
1237 330,326,325,324,323,322,319,317,315,314,307,305,301,290,265,264,262,261,260,
1238 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,229,232,
1239 330,326,325,324,323,322,319,317,315,314,307,305,301,290,265,264,262,261,260,
1240 258,253,252,251,250,233,230,228,227,225,223,63,62,0,222,226,229,232,
1241 290,258,0,71,112,
1242 290,258,0,71,112,
1243 330,262,261,260,0,35,41,72,73,74,240,
1244 315,314,307,0,36,155,194,195,
1245 319,318,0,40,56,181,
1246 263,0,2,75,
1247 264,0,85,
1248 290,258,0,71,112,
1249 328,306,303,302,300,297,294,292,284,283,281,280,279,278,277,276,275,274,273,
1250 272,271,270,269,268,264,254,253,252,233,230,227,223,0,1,7,8,10,11,14,15,
1251 16,18,23,24,25,26,27,29,34,39,42,45,46,48,49,50,55,60,81,82,85,88,89,90,
1252 91,92,93,94,99,100,104,105,121,122,123,124,125,126,127,130,132,134,151,
1253 152,153,169,172,174,210,211,214,220,266,
1254 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1255 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1256 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
1257 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
1258 266,287,288,331,
1259 290,258,0,71,112,
1260 320,317,316,309,264,0,21,30,44,47,166,199,200,206,
1261 327,259,254,253,252,233,230,227,223,0,51,60,69,142,185,186,187,188,189,266,
1262 259,63,62,0,58,256,257,
1263 290,264,259,63,62,0,58,256,257,
1264 259,63,62,0,58,256,257,
1265 259,0,69,
1266 259,0,69,
1267 259,0,69,
1268 308,289,0,12,28,161,
1269 312,308,289,0,4,12,28,161,178,179,
1270 289,0,12,110,
1271 254,253,252,233,230,227,223,0,60,266,
1272 251,250,228,0,59,162,163,164,165,196,288,331,
1273 327,281,280,279,278,277,276,275,274,273,272,271,270,269,268,0,1,7,11,16,26,
1274 29,34,39,42,45,46,49,50,51,55,94,145,186,
1275 317,316,290,264,0,21,44,141,
1276 251,250,228,0,
1277 251,250,228,0,
1278 251,250,243,228,0,59,61,109,162,163,164,165,196,287,288,331,
1279 254,253,252,233,230,227,223,0,60,148,266,
1280 317,316,251,250,228,63,62,0,58,256,257,
1281 317,316,251,250,228,0,101,162,163,164,165,167,168,331,
1282 320,317,316,309,264,63,62,0,58,256,257,
1283 317,316,0,21,44,
1284 320,317,316,309,0,21,30,44,47,166,206,
1285 264,0,85,
1286 327,281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,0,69,79,144,
1287 254,253,252,233,230,227,223,0,60,143,189,266,
1288 290,258,0,71,112,
1289 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1290 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1291 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
1292 133,159,160,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,
1293 218,240,266,287,288,331,
1294 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1295 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1296 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
1297 133,159,160,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,
1298 218,240,266,287,288,331,
1299 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1300 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1301 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
1302 133,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,240,
1303 266,287,288,331,
1304 317,316,312,308,290,289,264,0,4,12,21,28,44,146,161,178,179,203,
1305 327,281,280,279,278,277,276,275,274,273,272,271,270,269,268,0,1,7,11,16,26,
1306 29,34,39,42,45,46,49,50,51,55,94,145,186,
1307 290,258,0,71,112,
1308 327,259,254,253,252,233,230,227,223,0,51,60,69,142,185,186,187,189,266,
1309 290,258,0,71,112,
1310 290,258,0,71,112,
1311 258,0,71,
1312 254,253,252,233,230,227,223,0,60,189,266,
1313 327,281,280,279,278,277,276,275,274,273,272,271,270,269,268,259,0,69,79,144,
1314 330,313,311,281,280,279,278,277,276,275,274,273,272,271,270,269,268,267,262,
1315 259,254,253,252,251,250,243,233,230,228,227,223,0,1,7,11,16,26,29,34,38,
1316 39,42,45,46,49,50,55,59,60,61,69,73,74,76,77,84,87,94,99,109,131,132,
1317 133,159,162,163,164,165,176,177,180,182,183,196,204,205,212,213,217,218,
1318 240,266,287,288,331,
1319 327,281,280,279,278,277,276,275,274,273,272,271,270,269,268,0,1,7,11,16,26,
1320 29,34,39,42,45,46,49,50,51,55,94,145,186,
1321
1322 };
1323
1324
1325 static unsigned const char ag_astt[7723] = {
1326 8,8,8,8,8,8,8,1,1,7,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,
1327 1,1,1,1,8,1,7,1,1,1,9,5,3,1,1,1,1,1,1,1,7,0,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,
1328 9,9,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,
1329 5,9,9,9,9,9,9,9,9,9,9,9,9,1,1,7,1,1,3,1,7,1,1,3,7,1,5,5,5,5,5,5,5,5,5,5,5,
1330 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,3,1,7,1,3,1,5,1,1,
1331 7,1,1,3,3,7,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,
1332 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1333 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,
1334 1,3,1,1,1,1,3,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,
1335 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,3,5,5,5,5,5,5,5,5,1,1,
1336 7,1,1,3,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,
1337 1,7,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,
1338 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1339 1,1,1,1,1,1,1,1,7,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,
1340 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1341 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,3,1,1,
1342 1,1,3,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,1,1,7,1,1,3,5,5,5,
1343 5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,
1344 5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,
1345 5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,
1346 1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,
1347 1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,
1348 5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,7,1,3,
1349 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,1,
1350 3,5,1,1,7,1,1,3,5,1,1,7,1,1,3,5,1,1,7,1,1,3,5,1,1,7,1,1,3,5,1,1,7,1,1,3,5,
1351 5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,1,7,1,1,1,2,1,1,1,1,5,5,5,5,5,5,
1352 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,3,1,1,1,1,1,1,
1353 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,7,1,1,1,1,1,1,1,1,1,1,
1354 1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1355 1,1,1,1,1,1,1,7,3,1,7,3,1,7,3,1,7,1,1,7,3,5,5,5,5,5,5,5,1,1,7,1,1,3,1,5,1,
1356 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,7,1,1,1,
1357 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,
1358 1,1,1,1,1,1,1,3,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1359 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1360 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,3,1,1,1,
1361 1,3,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,
1362 1,1,1,1,1,1,1,1,1,1,1,7,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,
1363 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,3,1,1,1,1,1,1,1,1,1,
1364 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,7,1,
1365 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,
1366 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,7,1,1,1,1,7,
1367 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,7,1,1,1,
1368 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,3,1,3,
1369 1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,
1370 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1371 1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,3,3,1,3,1,1,3,3,
1372 1,3,1,3,1,1,1,1,3,3,1,3,1,1,1,1,5,1,1,3,1,1,1,1,5,1,5,5,5,5,5,5,5,5,1,1,7,
1373 1,1,3,8,1,1,1,1,1,1,1,7,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,
1374 1,1,1,1,1,1,1,1,1,1,1,7,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,
1375 1,3,1,3,3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,3,3,1,1,1,3,3,1,3,3,1,3,1,3,3,1,3,1,
1376 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,7,1,1,1,
1377 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,1,1,3,3,1,
1378 3,3,3,3,3,3,1,3,1,1,3,3,1,3,1,3,1,1,1,1,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,
1379 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1380 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,3,3,3,1,1,1,1,1,1,1,
1381 3,1,1,1,1,3,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,5,
1382 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
1383 1,7,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,
1384 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,7,1,1,1,1,1,1,1,1,1,
1385 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,3,3,
1386 1,3,1,1,3,3,1,3,1,3,1,1,1,1,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1387 1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1388 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,5,1,1,7,1,1,7,
1389 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,5,5,5,5,5,5,1,1,7,1,
1390 1,3,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,7,1,1,1,
1391 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,
1392 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,5,5,5,5,5,5,5,5,5,
1393 5,5,5,5,5,5,1,1,7,1,1,3,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,
1394 1,1,1,1,1,1,7,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,
1395 1,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,1,
1396 5,5,5,5,5,5,1,1,1,1,3,1,1,1,1,5,5,7,3,3,3,1,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,
1397 5,5,5,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,3,1,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
1398 5,5,5,5,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,3,3,1,5,5,5,5,5,5,5,5,5,5,5,5,
1399 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,
1400 1,1,1,1,1,1,1,1,1,8,1,1,1,1,1,1,1,7,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1401 5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1402 5,5,5,5,5,1,1,7,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,1,1,7,1,
1403 1,3,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,3,5,5,5,5,5,5,5,
1404 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1405 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1406 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,
1407 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,
1408 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1409 1,1,1,1,3,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,7,1,1,
1410 1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,3,3,1,1,1,1,3,1,1,3,3,1,1,1,1,1,1,1,
1411 5,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,5,5,5,5,5,1,1,
1412 7,1,1,3,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1413 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1414 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,
1415 1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,1,7,3,1,1,1,7,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,
1416 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,3,5,5,5,5,5,5,5,5,5,
1417 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,3,1,1,1,1,1,1,1,1,
1418 1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,
1419 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,7,1,1,1,1,1,1,1,
1420 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,
1421 3,3,1,3,1,1,3,3,1,3,1,3,1,1,1,1,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1422 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1423 1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,3,3,1,3,1,1,3,3,1,3,1,3,
1424 1,1,1,1,3,3,1,3,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,
1425 1,1,1,1,1,7,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,3,1,3,3,3,
1426 3,3,3,3,1,1,3,3,1,3,3,3,3,3,3,1,3,1,1,3,3,1,3,1,3,1,1,1,1,3,3,1,3,1,1,7,3,
1427 1,7,3,1,1,7,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,
1428 5,5,5,1,1,7,1,1,3,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,
1429 1,1,1,7,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,
1430 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1431 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1432 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1433 1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1434 1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,3,3,
1435 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,7,1,1,1,1,
1436 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,
1437 1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,5,1,3,5,5,5,5,5,
1438 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,8,8,8,8,8,8,8,8,8,8,8,8,
1439 8,8,5,1,7,1,1,1,1,7,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,
1440 1,1,1,1,1,1,1,7,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,3,1,3,
1441 3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,3,3,1,3,1,1,3,3,1,3,1,3,1,1,1,1,3,3,1,3,1,1,
1442 1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,
1443 1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,7,1,3,1,5,1,1,
1444 7,1,1,3,1,7,2,1,5,5,5,5,1,1,7,1,1,3,1,1,5,5,7,3,3,3,1,5,1,1,1,7,1,1,1,1,1,
1445 1,1,1,1,1,7,1,1,3,3,3,3,3,3,3,3,1,1,1,7,3,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,
1446 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,7,1,1,1,1,1,1,1,1,1,1,1,
1447 1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,3,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1448 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,7,
1449 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,1,1,3,1,1,1,1,1,1,1,
1450 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,7,1,1,1,1,7,2,1,7,2,1,1,1,9,9,9,5,3,1,
1451 1,1,1,3,1,1,1,1,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,1,1,1,1,3,1,
1452 1,1,1,5,5,7,3,3,3,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,3,1,
1453 1,1,1,5,5,7,3,3,1,1,1,1,3,1,1,1,1,5,3,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,
1454 5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,3,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1455 5,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,1,1,1,1,3,1,1,1,1,5,3,5,5,5,5,5,5,5,
1456 5,5,5,5,5,5,1,5,5,5,5,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,3,3,1,5,5,5,5,5,
1457 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,3,9,9,9,9,9,
1458 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,3,3,7,1,7,3,1,1,1,1,7,1,
1459 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,
1460 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,3,5,5,5,5,5,5,5,5,5,
1461 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,3,5,5,5,5,5,5,5,5,5,5,
1462 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,3,1,1,1,1,1,1,1,1,1,1,1,
1463 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,
1464 1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,3,3,3,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,
1465 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,
1466 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,
1467 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1468 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1469 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1470 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1471 1,1,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,
1472 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1473 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1474 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1475 1,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,
1476 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1477 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1478 1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,
1479 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,3,1,1,1,1,1,1,1,1,1,
1480 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1481 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,5,
1482 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,3,5,
1483 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,3,1,
1484 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,7,1,1,1,1,1,1,
1485 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,
1486 1,1,1,1,1,1,5,5,1,1,1,1,3,1,1,1,1,5,5,7,3,3,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,
1487 3,3,3,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,3,5,5,5,1,1,7,1,1,3,1,7,1,5,5,5,
1488 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,3,1,1,
1489 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,7,1,1,1,1,1,1,1,
1490 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,
1491 1,1,1,1,1,1,1,1,1,1,7,3,1,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1492 5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1493 1,1,1,1,1,1,1,1,1,1,1,7,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,
1494 3,1,3,3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,3,3,3,1,1,1,3,1,3,1,3,1,1,1,1,3,3,1,3,
1495 1,1,1,7,3,1,1,5,1,3,1,5,1,3,1,1,1,1,1,1,1,7,1,1,1,1,8,8,8,8,1,1,1,1,1,1,1,
1496 1,1,1,1,1,1,1,5,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,7,3,5,1,1,7,1,
1497 1,3,1,7,1,1,1,1,1,5,1,5,7,1,1,1,1,1,3,3,1,3,3,1,5,1,5,5,5,5,5,5,5,5,5,1,1,
1498 7,1,1,3,5,5,5,5,5,5,5,1,1,7,1,1,3,1,1,1,1,1,1,1,7,1,3,1,5,5,5,5,5,5,5,5,5,
1499 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,
1500 5,5,1,1,7,1,1,3,8,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,7,1,1,1,1,5,5,5,5,5,5,5,
1501 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,3,1,1,1,1,1,1,1,
1502 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,
1503 1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1504 1,1,1,1,1,7,2,1,1,1,7,1,1,1,1,7,1,1,1,1,1,3,1,1,1,1,7,3,5,5,5,5,5,5,5,5,5,
1505 5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,3,1,1,1,1,5,5,7,3,3,5,5,5,5,5,5,5,5,5,5,5,
1506 5,5,5,5,5,5,5,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,
1507 5,5,5,5,5,5,5,5,1,1,1,1,3,3,1,1,1,1,5,5,7,3,3,3,3,1,1,7,3,1,1,1,7,3,1,1,1,
1508 1,1,5,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,5,1,1,1,1,5,1,1,1,7,3,1,1,7,3,1,1,1,
1509 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,7,1,1,1,1,1,1,
1510 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,1,1,3,3,1,3,3,3,3,
1511 3,3,1,1,1,3,1,3,3,1,3,1,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1512 1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,
1513 1,1,1,3,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,7,3,1,1,1,1,1,8,
1514 7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,5,1,1,7,1,1,3,5,
1515 5,5,1,1,7,1,1,3,5,1,1,7,1,1,3,1,7,1,1,7,1,1,7,1,1,1,5,1,1,3,1,1,1,5,1,1,1,
1516 3,1,3,1,5,3,3,1,1,1,1,1,1,1,7,3,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1517 1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,7,3,3,3,9,9,9,
1518 5,9,9,9,5,1,1,1,1,7,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,3,1,5,5,5,5,5,
1519 1,1,7,1,1,3,5,5,1,1,1,7,3,1,1,1,1,3,3,1,5,5,5,5,5,1,1,7,1,1,3,1,1,7,3,3,1,
1520 1,1,1,5,3,1,3,3,1,3,1,7,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,7,1,1,1,1,1,1,1,
1521 1,1,1,7,1,1,1,1,1,1,7,3,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,
1522 1,1,1,1,1,1,1,7,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,
1523 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,
1524 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1525 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,
1526 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,7,1,1,1,1,1,
1527 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,
1528 1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,5,7,1,1,1,1,1,3,3,1,3,3,1,1,1,1,1,1,1,1,1,
1529 1,1,1,1,1,1,7,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,1,1,7,1,1,1,1,1,1,1,1,1,
1530 1,1,7,1,1,1,3,3,3,3,1,1,1,1,7,3,1,1,1,7,3,1,1,7,3,1,1,1,1,1,1,1,7,3,3,1,8,
1531 8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1532 1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1533 3,1,1,1,1,3,1,1,3,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,
1534 1,1,1,1,1,1,1,1,7,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3
1535 };
1536
1537
1538 static const unsigned short ag_pstt[] = {
1539 3,3,3,3,3,3,3,1,2,0,2,2,3,
1540 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,4,4,4,5,4,1,4,5,
1541 1,399,401,399,
1542 6,6,6,6,6,6,6,3,0,7,8,7,6,
1543 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,
1544 6,5,
1545 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,299,299,
1546 299,299,299,299,299,299,299,299,299,299,1,2,6,2,2,410,
1547 9,7,10,
1548 11,46,8,12,
1549 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1550 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,1,2,9,2,2,
1551 448,
1552 13,10,14,156,15,
1553 400,1,2,11,2,2,429,
1554 47,12,
1555 400,400,400,400,400,400,400,400,400,400,1,2,13,2,2,438,
1556 16,14,218,
1557 36,44,37,41,42,64,38,13,39,17,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,
1558 34,16,6,6,6,6,6,6,6,15,35,35,58,49,35,19,48,43,35,47,65,50,57,46,35,56,
1559 35,35,35,35,35,35,45,35,35,35,62,61,59,61,61,61,61,61,61,61,35,35,61,61,
1560 60,20,20,20,20,61,61,61,61,61,61,55,214,61,54,52,61,214,66,61,57,61,63,
1561 53,66,52,18,61,61,15,61,6,
1562 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1563 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1564 1,2,16,2,2,408,
1565 400,400,400,400,400,400,400,400,1,2,17,2,2,435,
1566 36,44,37,41,42,64,38,13,39,17,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,
1567 34,16,6,6,6,6,6,6,6,18,35,35,58,49,35,19,48,43,35,47,65,50,57,46,35,56,
1568 35,35,35,35,35,35,45,35,35,35,62,67,59,67,67,67,67,67,67,67,35,35,67,67,
1569 60,68,68,68,68,67,67,67,67,67,67,55,198,67,54,52,67,198,66,67,57,67,63,
1570 53,66,52,18,67,67,15,67,6,
1571 69,6,6,6,6,6,6,6,19,71,72,73,73,73,73,73,73,73,73,73,70,6,
1572 36,44,37,41,42,64,38,13,39,17,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,
1573 34,16,6,6,6,6,6,6,6,20,35,35,58,49,35,19,48,43,35,47,65,50,57,46,35,56,
1574 35,35,35,35,35,35,45,35,35,35,62,74,59,74,74,74,74,74,74,74,35,35,74,74,
1575 60,58,58,58,74,74,74,74,74,74,55,216,74,54,52,74,216,66,74,57,74,63,53,
1576 66,52,18,74,74,15,74,6,
1577 400,400,400,400,400,400,400,400,400,400,400,1,2,21,2,2,425,
1578 400,400,400,400,400,400,400,400,400,400,400,1,2,22,2,2,424,
1579 400,400,400,400,400,400,400,400,400,400,400,1,2,23,2,2,423,
1580 400,400,400,400,400,400,400,400,400,400,400,1,2,24,2,2,422,
1581 400,400,400,400,400,400,400,400,400,400,400,1,2,25,2,2,421,
1582 400,400,400,400,400,400,400,400,400,400,400,1,2,26,2,2,420,
1583 400,400,400,400,400,400,400,400,400,400,400,1,2,27,2,2,419,
1584 400,400,400,400,400,400,400,400,400,400,400,1,2,28,2,2,418,
1585 400,400,400,400,400,400,400,400,400,400,400,1,2,29,2,2,417,
1586 400,400,400,400,400,400,400,400,400,400,400,1,2,30,2,2,416,
1587 400,400,400,400,400,400,400,400,400,400,400,1,2,31,2,2,415,
1588 400,400,400,400,400,400,400,400,400,400,400,1,2,32,2,2,414,
1589 400,400,400,400,400,400,400,400,400,400,400,1,2,33,2,2,413,
1590 400,400,400,400,400,400,400,400,400,400,400,1,2,34,2,2,412,
1591 69,35,75,264,
1592 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1593 400,400,400,400,400,400,400,400,400,400,400,400,400,1,2,36,2,2,472,
1594 400,1,2,37,2,2,447,
1595 400,1,2,38,2,2,441,
1596 400,1,2,39,2,2,436,
1597 400,1,2,40,2,2,428,
1598 400,1,2,41,2,2,446,
1599 400,400,400,400,400,400,400,1,2,42,2,2,444,
1600 79,81,16,6,6,6,6,6,6,6,43,82,80,76,218,77,78,77,6,
1601 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1602 400,400,400,400,400,400,400,400,400,400,400,400,1,2,44,2,2,450,
1603 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,16,88,69,6,6,6,83,84,
1604 87,6,6,85,6,6,45,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,
1605 97,93,96,96,99,97,105,251,94,35,35,97,105,103,104,91,91,91,91,97,95,102,
1606 102,102,91,97,97,97,96,96,96,96,6,92,91,91,
1607 16,46,98,
1608 16,47,76,
1609 16,48,64,
1610 69,49,106,
1611 107,50,96,
1612 400,400,400,400,400,400,400,1,2,51,2,2,427,
1613 108,122,109,
1614 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1615 16,6,6,6,6,6,6,6,53,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1616 35,35,35,35,45,35,35,35,62,110,59,110,110,110,110,110,110,110,35,35,110,
1617 110,60,110,110,110,110,110,110,55,115,110,54,52,110,115,66,110,57,110,
1618 66,53,66,52,110,110,15,110,6,
1619 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1620 16,6,6,6,6,6,6,6,54,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1621 35,35,35,35,45,35,35,35,62,111,59,111,111,111,111,111,111,111,35,35,111,
1622 111,60,111,111,111,111,111,111,55,72,111,54,52,111,72,66,111,57,111,66,
1623 53,66,52,111,111,15,111,6,
1624 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1625 16,6,6,6,6,6,6,6,55,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1626 35,35,35,35,45,35,35,35,62,112,59,112,112,112,112,112,112,112,35,35,112,
1627 112,60,112,112,112,112,112,112,55,69,112,54,52,112,69,66,112,57,112,66,
1628 53,66,52,112,112,15,112,6,
1629 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1630 6,6,85,6,6,56,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1631 93,96,96,99,97,113,94,35,35,97,113,103,104,91,91,91,91,97,95,102,102,
1632 102,91,97,97,97,96,96,96,96,6,92,91,91,
1633 6,6,6,6,6,6,6,57,114,6,
1634 6,6,6,6,6,6,6,58,76,115,6,
1635 116,59,117,
1636 36,44,37,41,42,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,16,
1637 6,6,6,6,6,6,6,60,35,35,58,49,35,48,43,35,47,50,57,46,35,56,35,35,35,35,
1638 35,35,45,35,35,35,62,120,59,120,120,120,120,120,120,120,35,35,120,48,60,
1639 48,118,120,119,119,119,119,119,55,54,52,120,121,48,57,120,121,53,121,52,
1640 120,120,15,118,48,6,
1641 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1642 16,6,6,6,6,6,6,6,61,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1643 35,35,35,35,45,35,35,35,62,250,59,250,250,250,250,250,250,250,35,35,250,
1644 250,60,250,250,250,250,250,250,55,215,54,52,250,215,66,250,57,250,66,53,
1645 66,52,250,250,15,250,6,
1646 9,89,69,262,122,124,99,125,125,123,
1647 126,118,127,
1648 400,400,400,400,400,400,400,400,1,2,64,2,2,442,
1649 128,6,6,6,6,6,6,6,65,128,128,6,
1650 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1651 16,6,6,6,6,6,6,6,66,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1652 35,35,35,35,45,35,35,35,62,245,59,245,245,245,245,245,245,245,35,35,245,
1653 245,60,245,245,245,245,245,245,55,54,52,245,79,57,245,120,53,120,52,245,
1654 245,15,245,6,
1655 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1656 16,6,6,6,6,6,6,6,67,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1657 35,35,35,35,45,35,35,35,62,250,59,250,250,250,250,250,250,250,35,35,250,
1658 250,60,250,250,250,250,250,250,55,200,54,52,250,200,66,250,57,250,66,53,
1659 66,52,250,250,15,250,6,
1660 36,44,37,41,42,64,38,13,39,17,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,
1661 34,16,6,6,6,6,6,6,6,68,35,35,58,49,35,19,48,43,35,47,65,50,57,46,35,56,
1662 35,35,35,35,35,35,45,35,35,35,62,129,59,129,129,129,129,129,129,129,35,
1663 35,129,129,60,58,58,58,129,129,129,129,129,129,55,199,129,54,52,129,199,
1664 66,129,57,129,63,53,66,52,18,129,129,15,129,6,
1665 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1666 400,400,400,400,400,400,400,400,400,400,400,400,400,400,1,2,69,2,2,403,
1667 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,69,70,130,131,
1668 131,131,131,
1669 132,134,136,258,133,137,135,
1670 6,6,6,6,6,6,6,72,138,139,139,6,
1671 108,16,73,63,140,
1672 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1673 16,6,6,6,6,6,6,6,74,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1674 35,35,35,35,45,35,35,35,62,250,59,250,250,250,250,250,250,250,35,35,250,
1675 250,60,250,250,250,250,250,250,55,217,54,52,250,217,66,250,57,250,66,53,
1676 66,52,250,250,15,250,6,
1677 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1678 6,6,85,6,6,75,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1679 93,96,96,99,97,141,94,35,35,97,141,103,104,91,91,91,91,97,95,102,102,
1680 102,91,97,97,97,96,96,96,96,6,92,91,91,
1681 89,219,142,
1682 116,77,143,
1683 107,78,144,145,
1684 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1685 400,400,400,400,400,400,400,400,400,400,400,400,1,2,79,2,2,439,
1686 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1687 6,6,85,6,6,80,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1688 93,96,96,99,97,146,94,35,35,97,146,103,104,91,91,91,91,97,95,102,102,
1689 102,91,97,97,97,96,96,96,96,6,92,91,91,
1690 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1691 400,400,400,400,400,400,400,400,400,400,400,400,1,2,81,2,2,437,
1692 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1693 6,6,85,6,6,82,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1694 93,96,96,99,97,147,94,35,35,97,147,103,104,91,91,91,91,97,95,102,102,
1695 102,91,97,97,97,96,96,96,96,6,92,91,91,
1696 271,271,271,271,271,271,271,271,271,271,271,271,271,271,148,271,271,271,271,
1697 271,271,149,149,150,150,287,150,149,151,152,271,271,83,275,287,291,148,
1698 271,271,271,271,271,271,271,271,271,271,271,271,271,148,271,271,271,271,271,
1699 271,149,149,150,153,287,283,153,149,154,152,271,271,84,275,283,287,291,
1700 148,
1701 271,271,271,271,271,271,271,271,271,271,271,271,271,148,271,271,271,271,271,
1702 271,149,149,150,153,287,283,156,155,157,152,271,271,85,275,279,283,287,
1703 291,148,
1704 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1705 400,400,400,400,400,400,400,400,400,400,400,1,2,86,2,2,474,
1706 158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,
1707 158,158,158,159,158,158,158,158,158,158,158,87,158,158,159,
1708 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1709 400,400,400,400,400,400,400,400,400,400,400,1,2,88,2,2,406,
1710 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1711 400,400,400,1,2,89,2,2,411,
1712 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1713 400,400,400,1,2,90,2,2,455,
1714 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1715 400,400,400,1,2,91,2,2,432,
1716 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1717 400,400,400,1,2,92,2,2,431,
1718 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1719 6,6,85,6,6,93,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1720 93,96,96,99,97,160,94,35,35,97,160,103,104,91,91,91,91,97,95,102,102,
1721 102,91,97,97,97,96,96,96,96,6,92,91,91,
1722 21,22,23,24,25,26,27,28,29,30,31,32,33,34,69,6,6,6,6,6,6,6,94,35,35,35,35,
1723 35,35,35,35,35,35,35,35,35,35,101,161,35,35,126,6,
1724 21,22,23,24,25,26,27,28,29,30,31,32,33,34,69,6,6,6,6,6,6,6,95,35,35,35,35,
1725 35,35,35,35,35,35,35,35,35,35,101,162,35,35,124,6,
1726 90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,69,6,6,6,83,84,87,6,6,85,6,
1727 6,96,35,35,35,35,35,35,35,35,35,35,35,35,35,35,213,101,213,93,94,35,35,
1728 213,213,91,91,91,91,213,95,91,213,213,6,92,91,91,
1729 164,165,163,13,166,166,166,166,
1730 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1731 400,400,400,400,400,400,400,400,400,400,400,1,2,98,2,2,457,
1732 86,167,168,169,170,171,116,88,173,174,136,172,172,175,172,175,175,175,175,
1733 172,172,172,172,175,
1734 86,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,6,6,
1735 85,6,6,100,35,35,35,35,35,35,35,35,35,35,35,35,35,35,97,101,97,93,96,96,
1736 99,97,94,35,35,97,97,91,91,91,91,97,95,139,91,97,97,97,96,96,96,96,6,92,
1737 91,91,
1738 89,69,262,122,124,125,125,123,
1739 176,132,177,177,
1740 178,190,179,
1741 180,181,82,182,182,182,
1742 16,105,235,
1743 183,184,185,106,187,186,186,186,186,186,
1744 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1745 400,400,400,400,400,400,400,400,400,400,400,400,1,2,107,2,2,445,
1746 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1747 400,400,400,400,400,400,400,400,400,400,400,400,400,1,2,108,2,2,434,
1748 21,22,23,24,25,26,27,28,29,30,31,32,33,34,6,6,6,6,6,6,6,109,35,35,35,35,35,
1749 35,35,35,35,35,35,35,35,35,101,35,35,268,6,
1750 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1751 16,6,6,6,6,6,6,6,110,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1752 35,35,35,35,45,35,35,35,62,250,59,250,250,250,250,250,250,250,35,35,250,
1753 250,60,250,250,250,250,250,250,55,116,54,52,250,116,66,250,57,250,66,53,
1754 66,52,250,250,15,250,6,
1755 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1756 16,6,6,6,6,6,6,6,111,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1757 35,35,35,35,45,35,35,35,62,250,59,250,250,250,250,250,250,250,35,35,250,
1758 250,60,250,250,250,250,250,250,55,73,54,52,250,73,66,250,57,250,66,53,
1759 66,52,250,250,15,250,6,
1760 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1761 16,6,6,6,6,6,6,6,112,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1762 35,35,35,35,45,35,35,35,62,250,59,250,250,250,250,250,250,250,35,35,250,
1763 250,60,250,250,250,250,250,250,55,70,54,52,250,70,66,250,57,250,66,53,
1764 66,52,250,250,15,250,6,
1765 188,113,100,
1766 16,114,97,
1767 16,69,115,190,189,42,
1768 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1769 400,400,400,400,400,400,400,400,400,400,400,400,1,2,116,2,2,409,
1770 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1771 6,6,85,6,6,117,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1772 93,96,96,99,97,191,94,35,35,97,191,103,104,91,91,91,91,97,95,102,102,
1773 102,91,97,97,97,96,96,96,96,6,92,91,91,
1774 192,118,193,
1775 248,248,248,248,248,248,248,248,248,232,248,248,248,248,248,248,248,248,248,
1776 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,119,
1777 246,246,246,246,246,246,246,246,246,233,246,246,246,246,246,246,246,246,246,
1778 246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,120,
1779 36,44,37,41,42,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,16,
1780 6,6,6,6,6,6,6,121,35,35,58,49,35,48,43,35,47,50,57,46,35,56,35,35,35,35,
1781 35,35,45,35,35,35,62,120,59,120,120,120,120,120,120,120,35,35,120,245,
1782 60,120,119,119,119,119,119,55,54,52,120,57,120,120,53,120,52,120,120,15,
1783 231,245,6,
1784 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1785 6,6,85,6,6,122,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1786 93,194,96,96,99,97,194,94,35,35,97,194,103,104,91,91,91,91,97,95,102,
1787 102,102,91,97,97,97,96,96,96,96,6,92,91,91,
1788 89,265,124,195,195,
1789 6,6,6,6,6,6,6,124,196,196,6,
1790 89,263,124,150,
1791 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1792 400,1,2,126,2,2,465,
1793 170,170,170,170,198,198,198,198,198,198,198,198,198,198,198,198,198,198,170,
1794 69,127,197,198,198,
1795 16,128,77,
1796 36,44,37,41,42,64,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
1797 16,6,6,6,6,6,6,6,129,35,35,58,49,35,48,43,35,47,65,50,57,46,35,56,35,35,
1798 35,35,35,35,45,35,35,35,62,250,59,250,250,250,250,250,250,250,35,35,250,
1799 250,60,250,250,250,250,250,250,55,201,54,52,250,201,66,250,57,250,66,53,
1800 66,52,250,250,15,250,6,
1801 163,83,84,85,130,200,199,91,91,91,91,91,91,91,
1802 201,21,22,23,24,25,26,27,28,29,30,31,32,33,34,131,203,203,203,203,203,203,
1803 203,203,203,203,203,203,203,202,203,203,203,203,
1804 400,400,400,400,400,400,400,1,2,132,2,2,473,
1805 6,6,6,6,6,6,6,133,204,259,6,
1806 400,1,2,134,2,2,454,
1807 87,135,123,92,
1808 400,400,400,400,1,2,136,2,2,443,
1809 205,206,180,180,137,121,121,121,
1810 132,258,133,
1811 108,208,139,209,207,
1812 69,6,6,6,6,6,6,6,140,71,72,62,62,62,62,62,62,62,62,70,6,
1813 208,141,225,
1814 6,6,6,6,6,6,6,142,220,6,
1815 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1816 6,6,85,6,6,143,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1817 93,96,96,99,97,102,94,35,35,97,102,103,104,102,91,91,91,91,97,95,102,
1818 102,102,91,97,97,97,96,96,96,96,6,92,91,91,
1819 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1820 6,6,85,6,6,144,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1821 93,96,96,99,97,229,94,35,229,35,97,229,103,104,91,91,91,91,97,95,102,
1822 102,102,91,97,97,97,96,96,96,96,6,92,91,91,
1823 210,212,145,211,212,212,
1824 16,146,74,
1825 16,147,71,
1826 214,213,213,293,293,293,288,289,
1827 149,149,149,149,285,149,149,215,149,149,285,
1828 271,271,271,271,271,271,271,271,271,271,271,271,271,271,148,271,271,271,271,
1829 271,271,149,149,150,150,285,150,149,151,152,271,271,150,273,285,290,148,
1830 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
1831 271,271,149,149,216,216,286,216,149,151,152,271,271,151,274,286,
1832 149,149,149,149,285,149,149,215,149,272,285,
1833 271,271,271,271,271,271,271,271,271,271,271,271,271,148,271,271,271,271,271,
1834 271,149,149,150,153,285,281,153,149,154,152,271,271,153,273,281,285,290,
1835 148,
1836 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
1837 271,149,149,216,217,286,282,217,149,154,152,271,271,154,274,282,286,
1838 149,149,149,149,285,149,149,215,149,276,285,
1839 271,271,271,271,271,271,271,271,271,271,271,271,271,148,271,271,271,271,271,
1840 271,149,149,150,153,285,281,156,155,157,152,271,271,156,273,277,281,285,
1841 290,148,
1842 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
1843 271,149,149,216,217,286,282,218,155,157,152,271,271,157,274,278,282,286,
1844 303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,
1845 303,303,303,303,303,303,303,303,303,303,305,303,
1846 306,159,
1847 208,160,224,
1848 83,84,87,85,161,219,219,219,219,91,91,91,91,91,92,91,91,
1849 83,84,87,85,162,220,220,220,220,91,91,91,91,91,92,91,91,
1850 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1851 400,400,400,400,400,400,400,400,400,400,400,400,1,2,163,2,2,451,
1852 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1853 400,400,400,400,400,400,400,400,400,400,400,1,2,164,2,2,459,
1854 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1855 400,400,400,400,400,400,400,400,400,400,400,1,2,165,2,2,458,
1856 86,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,6,6,
1857 85,6,6,166,35,35,35,35,35,35,35,35,35,35,35,35,35,35,228,101,228,93,96,
1858 96,94,35,35,228,228,91,91,91,91,228,95,91,228,228,228,96,96,96,96,6,92,
1859 91,91,
1860 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1861 400,400,400,400,400,400,400,400,400,400,400,1,2,167,2,2,470,
1862 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1863 400,400,400,400,400,400,400,400,400,400,400,1,2,168,2,2,469,
1864 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1865 400,400,400,400,400,400,400,400,400,400,400,1,2,169,2,2,468,
1866 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1867 400,400,400,400,400,400,400,400,400,400,400,1,2,170,2,2,467,
1868 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1869 400,400,400,400,400,400,400,400,400,400,400,1,2,171,2,2,466,
1870 86,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,6,6,
1871 85,6,6,172,35,35,35,35,35,35,35,35,35,35,35,35,35,35,97,101,97,93,96,96,
1872 221,97,94,35,35,97,97,91,91,91,91,97,95,91,97,97,97,96,96,96,96,6,92,91,
1873 91,
1874 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1875 400,400,400,400,400,400,400,400,400,400,400,1,2,173,2,2,405,
1876 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1877 400,400,400,400,400,400,400,400,400,400,400,1,2,174,2,2,404,
1878 86,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,6,6,
1879 85,6,6,175,35,35,35,35,35,35,35,35,35,35,35,35,35,35,222,101,222,93,96,
1880 96,222,94,35,35,222,222,91,91,91,91,222,95,91,222,222,222,96,96,96,96,6,
1881 92,91,91,
1882 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1883 400,400,400,400,400,400,400,400,400,400,400,400,1,2,176,2,2,407,
1884 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1885 6,6,85,6,6,177,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1886 93,96,96,99,97,94,35,35,97,97,91,91,91,91,97,95,135,135,91,97,97,97,96,
1887 96,96,96,6,92,91,91,
1888 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1889 400,400,400,400,400,400,400,400,400,400,400,400,1,2,178,2,2,440,
1890 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1891 6,6,85,6,6,179,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1892 93,96,96,99,97,94,35,35,97,97,223,91,91,91,91,97,95,102,102,102,91,97,
1893 97,97,96,96,96,96,6,92,91,91,
1894 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1895 400,400,400,400,400,400,400,400,400,400,400,400,1,2,180,2,2,463,
1896 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1897 400,400,400,400,400,400,400,400,400,400,400,400,1,2,181,2,2,462,
1898 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1899 6,6,85,6,6,182,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1900 93,96,96,99,97,94,35,35,97,97,91,91,91,91,97,95,224,224,224,91,97,97,97,
1901 96,96,96,96,6,92,91,91,
1902 271,271,149,149,216,216,287,216,149,151,152,271,271,183,275,287,
1903 271,271,149,149,216,217,287,283,217,149,154,152,271,271,184,275,283,287,
1904 271,271,149,149,216,217,287,283,218,155,157,152,271,271,185,275,279,283,287,
1905 400,400,400,1,2,186,2,2,475,
1906 208,187,225,
1907 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1908 400,400,400,400,400,400,400,400,400,400,400,400,400,1,2,188,2,2,449,
1909 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1910 6,6,85,6,6,189,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1911 93,226,96,96,99,97,226,94,35,35,97,226,103,104,91,91,91,91,97,95,102,
1912 102,102,91,97,97,97,96,96,96,96,6,92,91,91,
1913 16,190,43,
1914 16,191,17,
1915 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1916 400,400,400,400,400,400,400,400,400,400,400,400,400,1,2,192,2,2,430,
1917 36,44,37,41,42,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,16,
1918 6,6,6,6,6,6,6,193,35,35,58,49,35,48,43,35,47,50,57,46,35,56,35,35,35,35,
1919 35,35,45,35,35,35,62,49,59,49,49,49,49,49,49,49,35,35,49,49,60,49,49,49,
1920 49,49,49,49,55,54,52,49,227,49,57,49,227,53,227,52,49,49,15,49,6,
1921 108,208,194,226,228,
1922 89,266,124,150,
1923 69,148,75,149,
1924 6,6,6,6,6,6,6,197,229,229,229,6,
1925 230,230,230,230,21,22,23,24,25,26,27,28,29,30,31,32,33,34,178,198,230,230,
1926 230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
1927 208,199,101,
1928 208,200,80,
1929 400,1,2,201,2,2,471,
1930 69,202,231,
1931 205,206,234,232,183,233,183,203,237,236,240,235,239,257,257,238,257,257,
1932 89,18,241,
1933 400,400,400,400,400,400,400,400,400,1,2,205,2,2,461,
1934 400,400,400,400,400,400,400,1,2,206,2,2,460,
1935 6,6,6,6,6,6,6,207,138,261,6,
1936 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1937 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1938 400,400,400,400,400,400,400,400,400,400,400,1,2,208,2,2,402,
1939 243,136,243,243,243,243,243,243,243,243,243,243,243,243,243,243,69,209,244,
1940 242,243,243,
1941 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
1942 400,400,400,400,400,400,400,400,400,400,400,400,1,2,210,2,2,426,
1943 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1944 6,6,85,6,6,211,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1945 93,96,96,99,97,41,94,35,41,35,97,41,103,104,91,91,91,91,97,95,102,102,
1946 102,91,97,97,97,96,96,96,96,6,92,91,91,
1947 16,212,117,
1948 245,245,245,213,245,
1949 246,246,246,214,246,
1950 149,149,149,149,286,149,149,215,149,215,286,
1951 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
1952 271,271,149,149,216,216,285,216,149,151,152,271,271,216,273,285,
1953 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
1954 271,149,149,216,217,285,281,217,149,154,152,271,271,217,273,281,285,
1955 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,
1956 271,149,149,216,217,285,281,218,155,157,152,271,271,218,273,277,281,285,
1957 108,208,219,127,247,
1958 108,208,220,125,247,
1959 86,88,173,174,137,175,175,175,175,175,175,
1960 164,165,163,14,166,166,166,166,
1961 180,181,75,182,182,182,
1962 176,133,177,177,
1963 16,225,45,
1964 108,208,226,7,228,
1965 36,44,37,41,42,38,13,39,40,51,21,22,23,24,25,26,27,28,29,30,31,32,33,34,16,
1966 6,6,6,6,6,6,6,227,35,35,58,49,35,48,43,35,47,50,57,46,35,56,35,35,35,35,
1967 35,35,45,35,35,35,62,245,59,245,245,245,245,245,245,245,35,35,245,245,
1968 60,245,245,245,245,245,245,55,54,52,245,57,245,120,53,120,52,245,245,15,
1969 245,6,
1970 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
1971 6,6,85,6,6,228,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
1972 93,96,96,99,97,84,94,35,35,97,84,103,104,91,91,91,91,97,95,102,102,102,
1973 91,97,97,97,96,96,96,96,6,92,91,91,
1974 108,208,229,94,248,
1975 251,205,206,249,254,230,253,250,253,253,252,254,253,253,
1976 201,69,6,6,6,6,6,6,6,231,202,255,256,257,257,257,257,257,255,6,
1977 400,1,2,232,2,2,452,
1978 400,400,400,1,2,233,2,2,433,
1979 400,1,2,234,2,2,456,
1980 69,235,258,
1981 69,236,259,
1982 69,237,260,
1983 232,233,129,236,235,131,
1984 234,232,233,255,237,236,235,254,238,254,
1985 233,253,252,252,
1986 6,6,6,6,6,6,6,241,19,6,
1987 83,84,85,242,200,91,91,91,91,91,91,91,
1988 201,21,22,23,24,25,26,27,28,29,30,31,32,33,34,243,261,261,261,261,261,261,
1989 261,261,261,261,261,261,261,202,261,261,261,261,
1990 205,206,180,180,244,87,87,87,
1991 295,295,295,296,
1992 295,295,295,297,
1993 83,84,87,85,247,54,54,54,91,91,91,91,91,92,91,91,
1994 6,6,6,6,6,6,6,248,93,93,6,
1995 400,400,400,400,400,1,2,249,2,2,453,
1996 174,174,183,184,185,250,113,186,186,186,186,113,113,186,
1997 400,400,400,400,400,1,2,251,2,2,464,
1998 205,206,252,195,194,
1999 251,205,206,249,177,197,250,197,197,252,197,
2000 16,254,202,
2001 262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,69,255,242,262,
2002 262,
2003 6,6,6,6,6,6,6,256,263,263,263,6,
2004 108,208,257,223,264,
2005 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
2006 6,6,85,6,6,258,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
2007 93,96,96,99,97,265,94,35,35,97,265,103,104,265,265,91,91,91,91,97,95,
2008 102,102,102,91,97,97,97,96,96,96,96,6,92,91,91,
2009 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
2010 6,6,85,6,6,259,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
2011 93,96,96,99,97,266,94,35,35,97,266,103,104,266,266,91,91,91,91,97,95,
2012 102,102,102,91,97,97,97,96,96,96,96,6,92,91,91,
2013 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
2014 6,6,85,6,6,260,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
2015 93,96,96,99,97,267,94,35,35,97,267,103,104,91,91,91,91,97,95,102,102,
2016 102,91,97,97,97,96,96,96,96,6,92,91,91,
2017 205,206,234,232,183,233,183,261,237,236,240,235,239,89,89,238,89,89,
2018 201,21,22,23,24,25,26,27,28,29,30,31,32,33,34,262,243,243,243,243,243,243,
2019 243,243,243,243,243,243,243,202,243,243,243,243,
2020 108,208,263,269,268,
2021 201,69,6,6,6,6,6,6,6,264,202,255,256,144,144,144,144,255,6,
2022 108,208,265,108,270,
2023 108,208,266,107,270,
2024 208,267,128,
2025 6,6,6,6,6,6,6,268,147,147,6,
2026 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,69,269,242,271,
2027 271,
2028 86,98,90,21,22,23,24,25,26,27,28,29,30,31,32,33,34,89,88,69,6,6,6,83,84,87,
2029 6,6,85,6,6,270,35,35,35,35,35,35,35,100,35,35,35,35,35,35,35,97,101,97,
2030 93,96,96,99,97,106,94,35,35,97,106,103,104,106,91,91,91,91,97,95,102,
2031 102,102,91,97,97,97,96,96,96,96,6,92,91,91,
2032 201,21,22,23,24,25,26,27,28,29,30,31,32,33,34,271,88,88,88,88,88,88,88,88,
2033 88,88,88,88,88,202,88,88,88,88,
2034
2035 };
2036
2037
2038 static const unsigned short ag_sbt[] = {
2039 0, 13, 46, 50, 63, 93, 95, 130, 133, 137, 177, 182, 189, 191,
2040 207, 210, 317, 360, 374, 481, 503, 609, 626, 643, 660, 677, 694, 711,
2041 728, 745, 762, 779, 796, 813, 830, 847, 851, 889, 896, 903, 910, 917,
2042 924, 937, 956, 993,1079,1082,1085,1088,1091,1094,1107,1110,1210,1310,
2043 1410,1494,1504,1515,1518,1616,1715,1725,1728,1742,1754,1850,1949,2055,
2044 2094,2116,2123,2135,2140,2239,2323,2326,2329,2333,2370,2454,2491,2575,
2045 2612,2650,2689,2725,2759,2795,2823,2851,2879,2907,2991,3034,3077,3142,
2046 3150,3186,3210,3287,3295,3299,3302,3308,3311,3321,3358,3396,3437,3536,
2047 3635,3734,3737,3740,3746,3783,3867,3870,3905,3940,4034,4119,4124,4135,
2048 4139,4165,4189,4192,4291,4305,4339,4352,4363,4370,4374,4384,4392,4395,
2049 4400,4421,4424,4434,4519,4604,4610,4613,4616,4624,4635,4672,4707,4718,
2050 4756,4792,4803,4842,4879,4910,4912,4915,4932,4949,4986,5022,5058,5132,
2051 5168,5204,5240,5276,5312,5388,5424,5460,5535,5572,5652,5689,5771,5808,
2052 5845,5926,5942,5960,5979,5988,5991,6029,6114,6117,6120,6158,6254,6259,
2053 6263,6267,6279,6316,6319,6322,6329,6332,6350,6353,6368,6381,6392,6446,
2054 6468,6505,6590,6593,6598,6603,6614,6649,6685,6722,6727,6732,6743,6751,
2055 6757,6761,6764,6769,6862,6946,6951,6965,6985,6992,7001,7008,7011,7014,
2056 7017,7023,7033,7037,7047,7059,7093,7101,7105,7109,7125,7136,7147,7161,
2057 7172,7177,7188,7191,7211,7223,7228,7314,7400,7484,7502,7536,7541,7560,
2058 7565,7570,7573,7584,7604,7689,7723
2059 };
2060
2061
2062 static const unsigned short ag_sbe[] = {
2063 9, 43, 48, 57, 92, 94, 126, 131, 135, 173, 178, 185, 190, 203,
2064 208, 244, 356, 370, 408, 489, 537, 622, 639, 656, 673, 690, 707, 724,
2065 741, 758, 775, 792, 809, 826, 843, 848, 885, 892, 899, 906, 913, 920,
2066 933, 947, 989,1025,1080,1083,1086,1089,1092,1103,1108,1143,1243,1343,
2067 1441,1501,1511,1516,1550,1649,1718,1726,1738,1750,1787,1883,1983,2090,
2068 2110,2119,2130,2137,2173,2270,2324,2327,2330,2366,2401,2487,2522,2607,
2069 2644,2682,2721,2755,2791,2819,2847,2875,2903,2938,3013,3056,3105,3145,
2070 3182,3196,3240,3289,3296,3300,3304,3309,3314,3354,3392,3417,3470,3569,
2071 3668,3735,3738,3742,3779,3814,3868,3904,3939,3972,4065,4120,4131,4136,
2072 4161,4185,4190,4225,4295,4320,4348,4359,4366,4371,4380,4388,4393,4397,
2073 4408,4422,4431,4465,4550,4606,4611,4614,4622,4633,4667,4704,4716,4750,
2074 4788,4801,4835,4874,4908,4911,4913,4919,4936,4982,5018,5054,5088,5164,
2075 5200,5236,5272,5308,5342,5420,5456,5490,5568,5603,5685,5720,5804,5841,
2076 5876,5939,5956,5974,5984,5989,6025,6060,6115,6118,6154,6190,6256,6260,
2077 6264,6274,6298,6317,6320,6325,6330,6339,6351,6364,6377,6388,6442,6463,
2078 6501,6536,6591,6596,6601,6612,6646,6681,6717,6724,6729,6736,6746,6753,
2079 6758,6762,6766,6801,6893,6948,6956,6974,6988,6997,7004,7009,7012,7015,
2080 7019,7026,7034,7044,7050,7074,7097,7104,7108,7113,7132,7143,7152,7168,
2081 7174,7181,7189,7207,7218,7225,7259,7345,7431,7491,7517,7538,7550,7562,
2082 7567,7571,7580,7600,7635,7704,7723
2083 };
2084
2085
2086 static const unsigned char ag_fl[] = {
2087 2,1,1,2,0,1,3,3,1,1,1,1,1,1,3,1,1,4,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2088 1,1,1,1,1,1,2,3,4,1,5,2,3,2,4,1,1,1,1,3,1,1,1,2,1,1,1,3,3,2,1,1,1,1,2,
2089 3,4,2,3,4,3,2,3,1,2,3,1,1,1,3,1,1,5,5,6,1,1,1,3,3,1,2,3,2,2,3,3,3,1,1,
2090 1,3,4,4,1,1,1,1,2,1,2,3,5,1,1,2,3,1,3,2,4,2,4,4,1,1,2,1,3,1,3,1,3,1,2,
2091 1,1,1,1,3,1,1,3,2,3,2,1,1,1,1,1,3,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,
2092 1,0,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,3,3,4,6,1,1,1,1,1,1,1,
2093 1,1,1,2,2,3,3,4,2,1,3,1,1,4,3,3,3,1,3,2,1,2,1,1,1,3,1,1,1,1,1,1,1,3,1,
2094 2,1,1,1,1,2,2,2,1,2,1,1,4,1,3,1,3,1,2,2,2,3,1,3,1,1,0,1,2,2,2,1,2,2,2,
2095 1,2,2,2,1,2,2,2,1,2,2,2,1,2,1,2,2,2,1,2,1,1,1,2,0,1,3,1,1,1,1,1,1,1,1,
2096 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,
2097 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,
2098 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2099 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,
2100 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2101 };
2102
2103 static const unsigned short ag_ptt[] = {
2104 0, 58, 65, 65, 66, 66, 58, 68, 72, 72, 72, 72, 75, 76, 76, 78, 78, 81,
2105 86, 86, 88, 88, 88, 88, 88, 88, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
2106 94, 94, 94, 94, 95, 96, 89, 89, 99,100, 57, 57,104,104,109,109,110,111,
2107 111,113,113,116,116,117,117,120,120,114,121,122,122,122,122,123,123,127,
2108 124,124,130,131,134,135,128,128, 79, 84, 84, 70, 70,118,118,138,142,139,
2109 108,148,149,149,150,151,151, 90,152,153,105, 80,156,157,159,160,160,161,
2110 161,331,331,331,331,166,168,125,125,169,172,137,137,173, 82,175,176,176,
2111 176,176,178,179,179,179,133,133,180,180,183,183,182,182,185,185,185,188,
2112 188,189,143,143,190,190,192,192, 91, 91, 91, 91,102,193,194,194,194, 92,
2113 288,288,197,197,171,171,144,144,198,198,136,136,167,167,199,199,201,201,
2114 141,141,141,146,146,181,181,204,204,204,204,206,206,206,206,206,200,200,
2115 115,115,115,115,207,202,184,184,184,184,184,184, 93, 93,212,212,126,126,
2116 126,126,214, 98, 98,158, 97,186,205,191,215, 77, 77,170,107,107,216,216,
2117 106,210,217,218,213,213,119,119,119,187,147,147,220,220,220,129,129,211,
2118 203,203,203,203,203,219,221,221,140,140,132,132,132,132,132,174,174,145,
2119 145,222,222,222,222,163,226,226,226,162,229,229,229,165,232,232,232,164,
2120 235,235,235,196,236,236,239,239,237,237,266,266,246,246,247,247,248,248,
2121 287, 73, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
2122 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,224,224,224,231,231,
2123 234,234,234,234,234,234,234,238,238,241,241,241,241,241,241,241,242,242,
2124 242,242,242,242,242,242,242,242,242,242,244,244,244,244,244,244,244,244,
2125 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
2126 244,244,256,256,257,257, 71, 69, 35, 41, 74, 2, 85, 83, 60, 87, 1, 7,
2127 11, 16, 26, 29, 34, 39, 42, 45, 46, 49, 50, 55, 6, 8, 10, 20, 17, 61,
2128 59, 12,112, 13, 14, 9, 15, 54, 3, 18, 19, 31, 24, 53, 23, 25,154, 52,
2129 27,155, 28, 30, 33,177, 4, 38, 36,195, 21, 44, 40, 56, 47, 43, 22,208,
2130 32,209, 37, 51, 48, 5,240,101
2131 };
2132
2133
2134 static void ag_ra(void)
2135 {
2136 switch(ag_rpx[(PCB).ag_ap]) {
2137 case 1: ag_rp_1(); break;
2138 case 2: ag_rp_2(); break;
2139 case 3: ag_rp_3(); break;
2140 case 4: ag_rp_4(); break;
2141 case 5: ag_rp_5(); break;
2142 case 6: ag_rp_6(); break;
2143 case 7: ag_rp_7(); break;
2144 }
2145 }
2146
2147 #define TOKEN_NAMES plm_token_names
2148 const char *const plm_token_names[332] = {
2149 "compilation",
2150 "ADDRESS",
2151 "AND",
2152 "ASSIGN_OP",
2153 "AT",
2154 "BASED",
2155 "BY",
2156 "BYTE",
2157 "CALL",
2158 "CASE",
2159 "CAUSE_INTERRUPT",
2160 "CHARINT",
2161 "DATA",
2162 "DECLARE",
2163 "DISABLE",
2164 "DO",
2165 "DWORD",
2166 "ELSE",
2167 "ENABLE",
2168 "END",
2169 "EOF_KW",
2170 "EXTERNAL",
2171 "GE",
2172 "GO",
2173 "GOTO",
2174 "HALT",
2175 "HWORD",
2176 "IF",
2177 "INITIAL_KW",
2178 "INTEGER",
2179 "INTERRUPT",
2180 "LABEL",
2181 "LE",
2182 "LITERALLY",
2183 "LONGINT",
2184 "MINUS",
2185 "MOD",
2186 "NE",
2187 "NOT",
2188 "OFFSET",
2189 "OR",
2190 "PLUS",
2191 "POINTER",
2192 "PROCEDURE",
2193 "PUBLIC",
2194 "QWORD",
2195 "REAL",
2196 "REENTRANT",
2197 "RETURN",
2198 "SELECTOR",
2199 "SHORTINT",
2200 "STRUCTURE",
2201 "THEN",
2202 "TO",
2203 "WHILE",
2204 "WORD",
2205 "XOR",
2206 "compilation",
2207 "white space",
2208 "numeric_constant",
2209 "IDENTIFIER",
2210 "STRING",
2211 "",
2212 "\"/*\"",
2213 "",
2214 "",
2215 "",
2216 "\"*/\"",
2217 "actual_parameters",
2218 "LPAREN",
2219 "expression_list",
2220 "RPAREN",
2221 "adding_operator",
2222 "MINUS_SIGN",
2223 "PLUS_SIGN",
2224 "and_operator",
2225 "arithmetic_expression",
2226 "term",
2227 "array_specifier",
2228 "explicit_dimension",
2229 "implicit_dimension",
2230 "assignment_statement",
2231 "left_part",
2232 "EQ",
2233 "expression",
2234 "SEMI",
2235 "base_specifier",
2236 "DOT",
2237 "basic_statement",
2238 "call_statement",
2239 "goto_statement",
2240 "microprocessor_dependent_statement",
2241 "null_statement",
2242 "return_statement",
2243 "basic_type",
2244 "bound_expression",
2245 "by_part",
2246 "step_expression",
2247 "simple_variable",
2248 "cast_type",
2249 "cause_interrupt_statement",
2250 "integer_constant",
2251 "module",
2252 "eof",
2253 "conditional_clause",
2254 "if_condition",
2255 "true_unit",
2256 "true_element",
2257 "false_element",
2258 "constant",
2259 "constant_attribute",
2260 "constant_list",
2261 "COMMA",
2262 "declaration",
2263 "declare_statement",
2264 "procedure_definition",
2265 "declaration_sequence",
2266 "declare_element",
2267 "factored_element",
2268 "unfactored_element",
2269 "declare_element_list",
2270 "disable_statement",
2271 "do_block",
2272 "do_case_block",
2273 "do_while_block",
2274 "iterative_do_block",
2275 "simple_do_block",
2276 "do_case_statement",
2277 "ending",
2278 "unit_sequence",
2279 "do_while_statement",
2280 "embedded_assignment",
2281 "variable_reference",
2282 "logical_expression",
2283 "enable_statement",
2284 "end_statement",
2285 "opt_identifier",
2286 "label_definition_sequence",
2287 "factored_label_element",
2288 "factored_variable_element",
2289 "variable_name_specifier_list",
2290 "opt_public_or_external",
2291 "factored_member",
2292 "member_name_list",
2293 "opt_explicit_dimension",
2294 "variable_type",
2295 "opt_variable_attributes",
2296 "unit",
2297 "formal_parameter",
2298 "formal_parameter_list",
2299 "formal_parameter_specifier",
2300 "go_to",
2301 "halt_statement",
2302 "id_colon",
2303 "COLON",
2304 "STAR",
2305 "index_part",
2306 "index_variable",
2307 "start_expression",
2308 "initial_value",
2309 "initial_value_list",
2310 "initialization",
2311 "binary number",
2312 "decimal number",
2313 "hex number",
2314 "octal number",
2315 "interrupt",
2316 "opt_interrupt_number",
2317 "interrupt_number",
2318 "iterative_do_statement",
2319 "to_part",
2320 "opt_by_part",
2321 "label_definition",
2322 "label_element",
2323 "variable_reference_list",
2324 "literal_element",
2325 "location_reference",
2326 "AT_SIGN",
2327 "locator",
2328 "locator_initialization",
2329 "logical_factor",
2330 "or_operator",
2331 "logical_secondary",
2332 "logical_primary",
2333 "relation_operator",
2334 "member_element",
2335 "structure_type",
2336 "unfactored_member",
2337 "member_element_list",
2338 "member_name",
2339 "member_specifier",
2340 "subscript",
2341 "member_specifier_sequence",
2342 "module_name",
2343 "multiplying_operator",
2344 "SLASH",
2345 "floating point number",
2346 "opt_array_specifier",
2347 "opt_formal_parameter_specifier",
2348 "opt_procedure_attribute_sequence",
2349 "procedure_attribute_sequence",
2350 "opt_procedure_type",
2351 "procedure_type",
2352 "variable_attributes",
2353 "primary",
2354 "subexpression",
2355 "procedure_attribute",
2356 "procedure_statement",
2357 "GT",
2358 "LT",
2359 "typed_return",
2360 "untyped_return",
2361 "secondary",
2362 "unary_sign",
2363 "simple_do_statement",
2364 "subscript_or_actual_parameters",
2365 "true_statement",
2366 "unary_minus",
2367 "unary_plus",
2368 "variable_element",
2369 "unit_element",
2370 "variable_name_specifier",
2371 "decimal number tail",
2372 "'d'",
2373 "",
2374 "'$'",
2375 "binary number tail",
2376 "",
2377 "",
2378 "octal number tail",
2379 "",
2380 "",
2381 "hex number tail",
2382 "",
2383 "",
2384 "floating point number tail",
2385 "fraction part",
2386 "exponent",
2387 "",
2388 "",
2389 "'-'",
2390 "",
2391 "",
2392 "'\\''",
2393 "",
2394 "\"\\'\\'\"",
2395 "",
2396 "",
2397 "",
2398 "",
2399 "",
2400 "",
2401 "",
2402 "",
2403 "",
2404 "",
2405 "",
2406 "",
2407 "RPAREN",
2408 "LPAREN",
2409 "MINUS",
2410 "PLUS",
2411 "PLUS_SIGN",
2412 "AND",
2413 "SEMI",
2414 "EQ",
2415 "IDENTIFIER",
2416 "DOT",
2417 "ADDRESS",
2418 "BYTE",
2419 "CHARINT",
2420 "DWORD",
2421 "HWORD",
2422 "INTEGER",
2423 "LONGINT",
2424 "OFFSET",
2425 "POINTER",
2426 "QWORD",
2427 "REAL",
2428 "SELECTOR",
2429 "SHORTINT",
2430 "WORD",
2431 "BY",
2432 "CALL",
2433 "CAUSE_INTERRUPT",
2434 "EOF_KW",
2435 "ELSE",
2436 "STRING",
2437 "numeric_constant",
2438 "DATA",
2439 "COMMA",
2440 "DECLARE",
2441 "DISABLE",
2442 "CASE",
2443 "DO",
2444 "WHILE",
2445 "ASSIGN_OP",
2446 "ENABLE",
2447 "END",
2448 "LABEL",
2449 "GOTO",
2450 "TO",
2451 "GO",
2452 "HALT",
2453 "COLON",
2454 "THEN",
2455 "IF",
2456 "STAR",
2457 "INITIAL_KW",
2458 "INTERRUPT",
2459 "LITERALLY",
2460 "AT_SIGN",
2461 "AT",
2462 "NOT",
2463 "MOD",
2464 "SLASH",
2465 "EXTERNAL",
2466 "PUBLIC",
2467 "OR",
2468 "XOR",
2469 "REENTRANT",
2470 "PROCEDURE",
2471 "GE",
2472 "GT",
2473 "LE",
2474 "LT",
2475 "NE",
2476 "STRUCTURE",
2477 "RETURN",
2478 "BASED",
2479 "'-'",
2480 "integer_constant",
2481
2482 };
2483
2484 #ifndef MISSING_FORMAT
2485 #define MISSING_FORMAT "Missing %s"
2486 #endif
2487 #ifndef UNEXPECTED_FORMAT
2488 #define UNEXPECTED_FORMAT "Unexpected %s"
2489 #endif
2490 #ifndef UNNAMED_TOKEN
2491 #define UNNAMED_TOKEN "input"
2492 #endif
2493
2494
2495 static void ag_diagnose(void) {
2496 int ag_snd = (PCB).sn;
2497 int ag_k = ag_sbt[ag_snd];
2498
2499 if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
2500 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
2501 }
2502 else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
2503 && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
2504 && *TOKEN_NAMES[ag_tstt[ag_k]]) {
2505 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
2506 }
2507 else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
2508 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
2509 }
2510 else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') {
2511 char buf[20];
2512 sprintf(buf, "\'%c\'", (char) (*(PCB).lab));
2513 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
2514 }
2515 else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
2516 (PCB).error_message = (PCB).ag_msg;
2517
2518
2519 }
2520 static int ag_action_1_r_proc(void);
2521 static int ag_action_2_r_proc(void);
2522 static int ag_action_3_r_proc(void);
2523 static int ag_action_4_r_proc(void);
2524 static int ag_action_1_s_proc(void);
2525 static int ag_action_3_s_proc(void);
2526 static int ag_action_1_proc(void);
2527 static int ag_action_2_proc(void);
2528 static int ag_action_3_proc(void);
2529 static int ag_action_4_proc(void);
2530 static int ag_action_5_proc(void);
2531 static int ag_action_6_proc(void);
2532 static int ag_action_7_proc(void);
2533 static int ag_action_8_proc(void);
2534 static int ag_action_9_proc(void);
2535 static int ag_action_10_proc(void);
2536 static int ag_action_11_proc(void);
2537 static int ag_action_8_proc(void);
2538
2539
2540 static int (*const ag_r_procs_scan[])(void) = {
2541 ag_action_1_r_proc,
2542 ag_action_2_r_proc,
2543 ag_action_3_r_proc,
2544 ag_action_4_r_proc
2545 };
2546
2547 static int (*const ag_s_procs_scan[])(void) = {
2548 ag_action_1_s_proc,
2549 ag_action_2_r_proc,
2550 ag_action_3_s_proc,
2551 ag_action_4_r_proc
2552 };
2553
2554 static int (*const ag_gt_procs_scan[])(void) = {
2555 ag_action_1_proc,
2556 ag_action_2_proc,
2557 ag_action_3_proc,
2558 ag_action_4_proc,
2559 ag_action_5_proc,
2560 ag_action_6_proc,
2561 ag_action_7_proc,
2562 ag_action_8_proc,
2563 ag_action_9_proc,
2564 ag_action_10_proc,
2565 ag_action_11_proc,
2566 ag_action_8_proc
2567 };
2568
2569
2570 static int ag_action_10_proc(void) {
2571 int ag_t = (PCB).token_number;
2572 (PCB).btsx = 0, (PCB).drt = -1;
2573 do {
2574 ag_track();
2575 if ((PCB).rx < (PCB).fx) {
2576 (PCB).input_code = (PCB).lab[(PCB).rx++];
2577 (PCB).token_number = (plm_token_type) AG_TCV((PCB).input_code);}
2578 else {
2579 GET_INPUT;
2580 (PCB).lab[(PCB).fx++] = (PCB).input_code;
2581 (PCB).token_number = (plm_token_type) AG_TCV((PCB).input_code);
2582 (PCB).rx++;
2583 }
2584 if (ag_key_index[(PCB).sn]) {
2585 unsigned ag_k = ag_key_index[(PCB).sn];
2586 int ag_ch = CONVERT_CASE((PCB).input_code);
2587 if (ag_ch < 255) {
2588 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
2589 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
2590 }
2591 }
2592 } while ((PCB).token_number == (plm_token_type) ag_t);
2593 (PCB).rx = 0;
2594 return 1;
2595 }
2596
2597 static int ag_action_11_proc(void) {
2598 int ag_t = (PCB).token_number;
2599
2600 (PCB).btsx = 0, (PCB).drt = -1;
2601 do {
2602 (PCB).vs[(PCB).ssx] = *(PCB).lab;
2603 (PCB).ssx--;
2604 ag_track();
2605 ag_ra();
2606 if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
2607 (PCB).ssx++;
2608 if ((PCB).rx < (PCB).fx) {
2609 (PCB).input_code = (PCB).lab[(PCB).rx++];
2610 (PCB).token_number = (plm_token_type) AG_TCV((PCB).input_code);}
2611 else {
2612 GET_INPUT;
2613 (PCB).lab[(PCB).fx++] = (PCB).input_code;
2614 (PCB).token_number = (plm_token_type) AG_TCV((PCB).input_code);
2615 (PCB).rx++;
2616 }
2617 if (ag_key_index[(PCB).sn]) {
2618 unsigned ag_k = ag_key_index[(PCB).sn];
2619 int ag_ch = CONVERT_CASE((PCB).input_code);
2620 if (ag_ch < 255) {
2621 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
2622 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
2623 }
2624 }
2625 }
2626 while ((PCB).token_number == (plm_token_type) ag_t);
2627 (PCB).rx = 0;
2628 return 1;
2629 }
2630
2631 static int ag_action_3_r_proc(void) {
2632 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
2633 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
2634 (PCB).btsx = 0, (PCB).drt = -1;
2635 (PCB).reduction_token = (plm_token_type) ag_ptt[(PCB).ag_ap];
2636 ag_ra();
2637 return (PCB).exit_flag == AG_RUNNING_CODE;
2638 }
2639
2640 static int ag_action_3_s_proc(void) {
2641 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
2642 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
2643 (PCB).btsx = 0, (PCB).drt = -1;
2644 (PCB).reduction_token = (plm_token_type) ag_ptt[(PCB).ag_ap];
2645 ag_ra();
2646 return (PCB).exit_flag == AG_RUNNING_CODE;
2647 }
2648
2649 static int ag_action_4_r_proc(void) {
2650 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
2651 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
2652 (PCB).reduction_token = (plm_token_type) ag_ptt[(PCB).ag_ap];
2653 return 1;
2654 }
2655
2656 static int ag_action_2_proc(void) {
2657 (PCB).btsx = 0, (PCB).drt = -1;
2658 if ((PCB).ssx >= 128) {
2659 (PCB).exit_flag = AG_STACK_ERROR_CODE;
2660 PARSER_STACK_OVERFLOW;
2661 }
2662 (PCB).vs[(PCB).ssx] = *(PCB).lab;
2663 (PCB).ss[(PCB).ssx] = (PCB).sn;
2664 (PCB).ssx++;
2665 (PCB).sn = (PCB).ag_ap;
2666 ag_track();
2667 return 0;
2668 }
2669
2670 static int ag_action_9_proc(void) {
2671 if ((PCB).drt == -1) {
2672 (PCB).drt=(PCB).token_number;
2673 (PCB).dssx=(PCB).ssx;
2674 (PCB).dsn=(PCB).sn;
2675 }
2676 ag_prot();
2677 (PCB).vs[(PCB).ssx] = ag_null_value;
2678 (PCB).ss[(PCB).ssx] = (PCB).sn;
2679 (PCB).ssx++;
2680 (PCB).sn = (PCB).ag_ap;
2681 (PCB).rx = 0;
2682 return (PCB).exit_flag == AG_RUNNING_CODE;
2683 }
2684
2685 static int ag_action_2_r_proc(void) {
2686 (PCB).ssx++;
2687 (PCB).sn = (PCB).ag_ap;
2688 return 0;
2689 }
2690
2691 static int ag_action_7_proc(void) {
2692 --(PCB).ssx;
2693 (PCB).rx = 0;
2694 (PCB).exit_flag = AG_SUCCESS_CODE;
2695 return 0;
2696 }
2697
2698 static int ag_action_1_proc(void) {
2699 ag_track();
2700 (PCB).exit_flag = AG_SUCCESS_CODE;
2701 return 0;
2702 }
2703
2704 static int ag_action_1_r_proc(void) {
2705 (PCB).exit_flag = AG_SUCCESS_CODE;
2706 return 0;
2707 }
2708
2709 static int ag_action_1_s_proc(void) {
2710 (PCB).exit_flag = AG_SUCCESS_CODE;
2711 return 0;
2712 }
2713
2714 static int ag_action_4_proc(void) {
2715 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
2716 (PCB).reduction_token = (plm_token_type) ag_ptt[(PCB).ag_ap];
2717 (PCB).btsx = 0, (PCB).drt = -1;
2718 (PCB).vs[(PCB).ssx] = *(PCB).lab;
2719 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
2720 else (PCB).ss[(PCB).ssx] = (PCB).sn;
2721 ag_track();
2722 while ((PCB).exit_flag == AG_RUNNING_CODE) {
2723 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
2724 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
2725 do {
2726 unsigned ag_tx = (ag_t1 + ag_t2)/2;
2727 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
2728 else ag_t2 = ag_tx;
2729 } while (ag_t1 < ag_t2);
2730 (PCB).ag_ap = ag_pstt[ag_t1];
2731 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
2732 }
2733 return 0;
2734 }
2735
2736 static int ag_action_3_proc(void) {
2737 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
2738 (PCB).btsx = 0, (PCB).drt = -1;
2739 (PCB).vs[(PCB).ssx] = *(PCB).lab;
2740 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
2741 else (PCB).ss[(PCB).ssx] = (PCB).sn;
2742 ag_track();
2743 (PCB).reduction_token = (plm_token_type) ag_ptt[(PCB).ag_ap];
2744 ag_ra();
2745 while ((PCB).exit_flag == AG_RUNNING_CODE) {
2746 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
2747 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
2748 do {
2749 unsigned ag_tx = (ag_t1 + ag_t2)/2;
2750 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
2751 else ag_t2 = ag_tx;
2752 } while (ag_t1 < ag_t2);
2753 (PCB).ag_ap = ag_pstt[ag_t1];
2754 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
2755 }
2756 return 0;
2757 }
2758
2759 static int ag_action_8_proc(void) {
2760 ag_undo();
2761 (PCB).rx = 0;
2762 (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
2763 ag_diagnose();
2764 SYNTAX_ERROR;
2765 {(PCB).rx = 1; ag_track();}
2766 return (PCB).exit_flag == AG_RUNNING_CODE;
2767 }
2768
2769 static int ag_action_5_proc(void) {
2770 int ag_sd = ag_fl[(PCB).ag_ap];
2771 (PCB).btsx = 0, (PCB).drt = -1;
2772 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
2773 else {
2774 (PCB).ss[(PCB).ssx] = (PCB).sn;
2775 }
2776 (PCB).rx = 0;
2777 (PCB).reduction_token = (plm_token_type) ag_ptt[(PCB).ag_ap];
2778 ag_ra();
2779 while ((PCB).exit_flag == AG_RUNNING_CODE) {
2780 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
2781 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
2782 do {
2783 unsigned ag_tx = (ag_t1 + ag_t2)/2;
2784 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
2785 else ag_t2 = ag_tx;
2786 } while (ag_t1 < ag_t2);
2787 (PCB).ag_ap = ag_pstt[ag_t1];
2788 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
2789 }
2790 return (PCB).exit_flag == AG_RUNNING_CODE;
2791 }
2792
2793 static int ag_action_6_proc(void) {
2794 int ag_sd = ag_fl[(PCB).ag_ap];
2795 (PCB).reduction_token = (plm_token_type) ag_ptt[(PCB).ag_ap];
2796 if ((PCB).drt == -1) {
2797 (PCB).drt=(PCB).token_number;
2798 (PCB).dssx=(PCB).ssx;
2799 (PCB).dsn=(PCB).sn;
2800 }
2801 if (ag_sd) {
2802 (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
2803 }
2804 else {
2805 ag_prot();
2806 (PCB).vs[(PCB).ssx] = ag_null_value;
2807 (PCB).ss[(PCB).ssx] = (PCB).sn;
2808 }
2809 (PCB).rx = 0;
2810 while ((PCB).exit_flag == AG_RUNNING_CODE) {
2811 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
2812 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
2813 do {
2814 unsigned ag_tx = (ag_t1 + ag_t2)/2;
2815 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
2816 else ag_t2 = ag_tx;
2817 } while (ag_t1 < ag_t2);
2818 (PCB).ag_ap = ag_pstt[ag_t1];
2819 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
2820 }
2821 return (PCB).exit_flag == AG_RUNNING_CODE;
2822 }
2823
2824
2825 void init_plm(void) {
2826 (PCB).rx = (PCB).fx = 0;
2827 (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
2828 (PCB).exit_flag = AG_RUNNING_CODE;
2829 (PCB).line = FIRST_LINE;
2830 (PCB).column = FIRST_COLUMN;
2831 (PCB).btsx = 0, (PCB).drt = -1;
2832 }
2833
2834 void plm(void) {
2835 init_plm();
2836 (PCB).exit_flag = AG_RUNNING_CODE;
2837 while ((PCB).exit_flag == AG_RUNNING_CODE) {
2838 unsigned ag_t1 = ag_sbt[(PCB).sn];
2839 if (ag_tstt[ag_t1]) {
2840 unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
2841 if ((PCB).rx < (PCB).fx) {
2842 (PCB).input_code = (PCB).lab[(PCB).rx++];
2843 (PCB).token_number = (plm_token_type) AG_TCV((PCB).input_code);}
2844 else {
2845 GET_INPUT;
2846 (PCB).lab[(PCB).fx++] = (PCB).input_code;
2847 (PCB).token_number = (plm_token_type) AG_TCV((PCB).input_code);
2848 (PCB).rx++;
2849 }
2850 if (ag_key_index[(PCB).sn]) {
2851 unsigned ag_k = ag_key_index[(PCB).sn];
2852 int ag_ch = CONVERT_CASE((PCB).input_code);
2853 if (ag_ch < 255) {
2854 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
2855 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
2856 }
2857 }
2858 do {
2859 unsigned ag_tx = (ag_t1 + ag_t2)/2;
2860 if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number)
2861 ag_t1 = ag_tx + 1;
2862 else ag_t2 = ag_tx;
2863 } while (ag_t1 < ag_t2);
2864 if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number)
2865 ag_t1 = ag_sbe[(PCB).sn];
2866 }
2867 (PCB).ag_ap = ag_pstt[ag_t1];
2868 (ag_gt_procs_scan[ag_astt[ag_t1]])();
2869 }
2870 }
2871
2872