source: other-projects/rsyntax-textarea/devel-packages/jflex-1.4.3/src/JFlex/LexScan.java@ 25584

Last change on this file since 25584 was 25584, checked in by davidb, 12 years ago

Initial cut an a text edit area for GLI that supports color syntax highlighting

File size: 124.0 KB
Line 
1/* The following code was generated by JFlex 1.4.3 on 1/31/09 11:52 PM */
2
3/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4 * JFlex 1.4.3 *
5 * Copyright (C) 1998-2009 Gerwin Klein <[email protected]> *
6 * All rights reserved. *
7 * *
8 * This program is free software; you can redistribute it and/or modify *
9 * it under the terms of the GNU General Public License. See the file *
10 * COPYRIGHT for more information. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License along *
18 * with this program; if not, write to the Free Software Foundation, Inc., *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 * *
21 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
22
23package JFlex;
24
25import java_cup.runtime.Symbol;
26import java.util.Vector;
27import java.io.*;
28import java.util.Stack;
29
30/**
31 * The lexer of JFlex.
32 *
33 * Generated by <a href="http://www.jflex.de/">JFlex</a>.
34 *
35 * @author Gerwin Klein
36 * @version JFlex 1.4.3, $Revision: 433 $, $Date: 2009-01-31 19:52:34 +1100 (Sat, 31 Jan 2009) $
37 */
38
39public final class LexScan implements sym, java_cup.runtime.Scanner {
40
41 /** This character denotes the end of file */
42 public static final int YYEOF = -1;
43
44 /** initial size of the lookahead buffer */
45 private static final int ZZ_BUFFERSIZE = 16384;
46
47 /** lexical states */
48 public static final int STRING_CONTENT = 16;
49 public static final int REGEXPSTART = 8;
50 public static final int MACROS = 6;
51 public static final int STATELIST = 4;
52 public static final int CTOR_ARG = 26;
53 public static final int EATWSPNL = 24;
54 public static final int CHARCLASS = 18;
55 public static final int JAVA_CODE = 12;
56 public static final int REGEXP = 10;
57 public static final int YYINITIAL = 0;
58 public static final int REPEATEXP = 22;
59 public static final int COMMENT = 2;
60 public static final int STATES = 14;
61 public static final int COPY = 20;
62
63 /**
64 * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
65 * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
66 * at the beginning of a line
67 * l is of the form l = 2*k, k a non negative integer
68 */
69 private static final int ZZ_LEXSTATE[] = {
70 0, 0, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8,
71 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14
72 };
73
74 /**
75 * Translates characters to character classes
76 */
77 private static final String ZZ_CMAP_PACKED =
78 "\10\25\1\26\1\10\1\13\2\11\1\12\16\25\4\0\1\10\1\76"+
79 "\1\32\1\0\1\103\1\35\1\22\1\33\1\100\1\101\1\30\1\102"+
80 "\1\15\1\106\1\14\1\31\1\7\1\66\2\7\2\3\1\67\1\64"+
81 "\1\65\1\1\1\105\1\0\1\20\1\71\1\21\1\23\1\0\4\2"+
82 "\1\72\1\74\10\24\1\73\13\24\1\16\1\4\1\17\1\104\1\24"+
83 "\1\0\1\53\1\57\1\55\1\62\1\46\1\47\1\63\1\42\1\37"+
84 "\1\60\1\70\1\51\1\56\1\40\1\44\1\61\1\24\1\43\1\54"+
85 "\1\41\1\6\1\52\1\45\1\5\1\50\1\24\1\36\1\75\1\34"+
86 "\1\77\6\25\1\27\32\25\2\0\4\24\4\0\1\24\2\0\1\25"+
87 "\7\0\1\24\4\0\1\24\5\0\27\24\1\0\37\24\1\0\u013f\24"+
88 "\31\0\162\24\4\0\14\24\16\0\5\24\11\0\1\24\21\0\130\25"+
89 "\5\0\23\25\12\0\1\24\13\0\1\24\1\0\3\24\1\0\1\24"+
90 "\1\0\24\24\1\0\54\24\1\0\46\24\1\0\5\24\4\0\202\24"+
91 "\1\0\4\25\3\0\105\24\1\0\46\24\2\0\2\24\6\0\20\24"+
92 "\41\0\46\24\2\0\1\24\7\0\47\24\11\0\21\25\1\0\27\25"+
93 "\1\0\3\25\1\0\1\25\1\0\2\25\1\0\1\25\13\0\33\24"+
94 "\5\0\3\24\15\0\4\25\14\0\6\25\13\0\32\24\5\0\13\24"+
95 "\16\25\7\0\12\25\4\0\2\24\1\25\143\24\1\0\1\24\10\25"+
96 "\1\0\6\25\2\24\2\25\1\0\4\25\2\24\12\25\3\24\2\0"+
97 "\1\24\17\0\1\25\1\24\1\25\36\24\33\25\2\0\3\24\60\0"+
98 "\46\24\13\25\1\24\u014f\0\3\25\66\24\2\0\1\25\1\24\20\25"+
99 "\2\0\1\24\4\25\3\0\12\24\2\25\2\0\12\25\21\0\3\25"+
100 "\1\0\10\24\2\0\2\24\2\0\26\24\1\0\7\24\1\0\1\24"+
101 "\3\0\4\24\2\0\1\25\1\24\7\25\2\0\2\25\2\0\3\25"+
102 "\11\0\1\25\4\0\2\24\1\0\3\24\2\25\2\0\12\25\4\24"+
103 "\15\0\3\25\1\0\6\24\4\0\2\24\2\0\26\24\1\0\7\24"+
104 "\1\0\2\24\1\0\2\24\1\0\2\24\2\0\1\25\1\0\5\25"+
105 "\4\0\2\25\2\0\3\25\13\0\4\24\1\0\1\24\7\0\14\25"+
106 "\3\24\14\0\3\25\1\0\11\24\1\0\3\24\1\0\26\24\1\0"+
107 "\7\24\1\0\2\24\1\0\5\24\2\0\1\25\1\24\10\25\1\0"+
108 "\3\25\1\0\3\25\2\0\1\24\17\0\2\24\2\25\2\0\12\25"+
109 "\1\0\1\24\17\0\3\25\1\0\10\24\2\0\2\24\2\0\26\24"+
110 "\1\0\7\24\1\0\2\24\1\0\5\24\2\0\1\25\1\24\6\25"+
111 "\3\0\2\25\2\0\3\25\10\0\2\25\4\0\2\24\1\0\3\24"+
112 "\4\0\12\25\1\0\1\24\20\0\1\25\1\24\1\0\6\24\3\0"+
113 "\3\24\1\0\4\24\3\0\2\24\1\0\1\24\1\0\2\24\3\0"+
114 "\2\24\3\0\3\24\3\0\10\24\1\0\3\24\4\0\5\25\3\0"+
115 "\3\25\1\0\4\25\11\0\1\25\17\0\11\25\11\0\1\24\7\0"+
116 "\3\25\1\0\10\24\1\0\3\24\1\0\27\24\1\0\12\24\1\0"+
117 "\5\24\4\0\7\25\1\0\3\25\1\0\4\25\7\0\2\25\11\0"+
118 "\2\24\4\0\12\25\22\0\2\25\1\0\10\24\1\0\3\24\1\0"+
119 "\27\24\1\0\12\24\1\0\5\24\2\0\1\25\1\24\7\25\1\0"+
120 "\3\25\1\0\4\25\7\0\2\25\7\0\1\24\1\0\2\24\4\0"+
121 "\12\25\22\0\2\25\1\0\10\24\1\0\3\24\1\0\27\24\1\0"+
122 "\20\24\4\0\6\25\2\0\3\25\1\0\4\25\11\0\1\25\10\0"+
123 "\2\24\4\0\12\25\22\0\2\25\1\0\22\24\3\0\30\24\1\0"+
124 "\11\24\1\0\1\24\2\0\7\24\3\0\1\25\4\0\6\25\1\0"+
125 "\1\25\1\0\10\25\22\0\2\25\15\0\60\24\1\25\2\24\7\25"+
126 "\4\0\10\24\10\25\1\0\12\25\47\0\2\24\1\0\1\24\2\0"+
127 "\2\24\1\0\1\24\2\0\1\24\6\0\4\24\1\0\7\24\1\0"+
128 "\3\24\1\0\1\24\1\0\1\24\2\0\2\24\1\0\4\24\1\25"+
129 "\2\24\6\25\1\0\2\25\1\24\2\0\5\24\1\0\1\24\1\0"+
130 "\6\25\2\0\12\25\2\0\2\24\42\0\1\24\27\0\2\25\6\0"+
131 "\12\25\13\0\1\25\1\0\1\25\1\0\1\25\4\0\2\25\10\24"+
132 "\1\0\42\24\6\0\24\25\1\0\2\25\4\24\4\0\10\25\1\0"+
133 "\44\25\11\0\1\25\71\0\42\24\1\0\5\24\1\0\2\24\1\0"+
134 "\7\25\3\0\4\25\6\0\12\25\6\0\6\24\4\25\106\0\46\24"+
135 "\12\0\51\24\7\0\132\24\5\0\104\24\5\0\122\24\6\0\7\24"+
136 "\1\0\77\24\1\0\1\24\1\0\4\24\2\0\7\24\1\0\1\24"+
137 "\1\0\4\24\2\0\47\24\1\0\1\24\1\0\4\24\2\0\37\24"+
138 "\1\0\1\24\1\0\4\24\2\0\7\24\1\0\1\24\1\0\4\24"+
139 "\2\0\7\24\1\0\7\24\1\0\27\24\1\0\37\24\1\0\1\24"+
140 "\1\0\4\24\2\0\7\24\1\0\47\24\1\0\23\24\16\0\11\25"+
141 "\56\0\125\24\14\0\u026c\24\2\0\10\24\12\0\32\24\5\0\113\24"+
142 "\3\0\3\24\17\0\15\24\1\0\4\24\3\25\13\0\22\24\3\25"+
143 "\13\0\22\24\2\25\14\0\15\24\1\0\3\24\1\0\2\25\14\0"+
144 "\64\24\40\25\3\0\1\24\3\0\2\24\1\25\2\0\12\25\41\0"+
145 "\3\25\2\0\12\25\6\0\130\24\10\0\51\24\1\25\126\0\35\24"+
146 "\3\0\14\25\4\0\14\25\12\0\12\25\36\24\2\0\5\24\u038b\0"+
147 "\154\24\224\0\234\24\4\0\132\24\6\0\26\24\2\0\6\24\2\0"+
148 "\46\24\2\0\6\24\2\0\10\24\1\0\1\24\1\0\1\24\1\0"+
149 "\1\24\1\0\37\24\2\0\65\24\1\0\7\24\1\0\1\24\3\0"+
150 "\3\24\1\0\7\24\3\0\4\24\2\0\6\24\4\0\15\24\5\0"+
151 "\3\24\1\0\7\24\17\0\4\25\30\0\2\11\5\25\20\0\2\24"+
152 "\23\0\1\24\13\0\4\25\6\0\6\25\1\0\1\24\15\0\1\24"+
153 "\40\0\22\24\36\0\15\25\4\0\1\25\3\0\6\25\27\0\1\24"+
154 "\4\0\1\24\2\0\12\24\1\0\1\24\3\0\5\24\6\0\1\24"+
155 "\1\0\1\24\1\0\1\24\1\0\4\24\1\0\3\24\1\0\7\24"+
156 "\3\0\3\24\5\0\5\24\26\0\44\24\u0e81\0\3\24\31\0\11\24"+
157 "\6\25\1\0\5\24\2\0\5\24\4\0\126\24\2\0\2\25\2\0"+
158 "\3\24\1\0\137\24\5\0\50\24\4\0\136\24\21\0\30\24\70\0"+
159 "\20\24\u0200\0\u19b6\24\112\0\u51a6\24\132\0\u048d\24\u0773\0\u2ba4\24\u215c\0"+
160 "\u012e\24\2\0\73\24\225\0\7\24\14\0\5\24\5\0\1\24\1\25"+
161 "\12\24\1\0\15\24\1\0\5\24\1\0\1\24\1\0\2\24\1\0"+
162 "\2\24\1\0\154\24\41\0\u016b\24\22\0\100\24\2\0\66\24\50\0"+
163 "\15\24\3\0\20\25\20\0\4\25\17\0\2\24\30\0\3\24\31\0"+
164 "\1\24\6\0\5\24\1\0\207\24\2\0\1\25\4\0\1\24\13\0"+
165 "\12\25\7\0\32\24\4\0\1\24\1\0\32\24\12\0\132\24\3\0"+
166 "\6\24\2\0\6\24\2\0\6\24\2\0\3\24\3\0\2\24\3\0"+
167 "\2\24\22\0\3\25\4\0";
168
169 /**
170 * Translates characters to character classes
171 */
172 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
173
174 /**
175 * Translates DFA states to action switch labels.
176 */
177 private static final int [] ZZ_ACTION = zzUnpackAction();
178
179 private static final String ZZ_ACTION_PACKED_0 =
180 "\1\1\1\2\15\0\1\1\2\3\1\1\1\2\3\4"+
181 "\1\5\1\6\2\7\1\6\1\10\2\6\1\4\1\11"+
182 "\1\12\1\6\1\11\1\13\1\14\1\4\1\15\2\16"+
183 "\1\6\2\17\1\20\1\21\1\16\1\22\1\23\1\24"+
184 "\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34"+
185 "\1\35\1\36\1\37\3\4\1\40\1\41\1\6\1\42"+
186 "\1\43\1\44\1\4\2\45\1\46\1\16\1\47\1\50"+
187 "\1\51\1\52\1\16\1\53\1\54\1\4\2\44\1\4"+
188 "\1\55\1\4\1\56\1\13\1\57\1\60\1\61\3\0"+
189 "\1\62\1\63\1\0\1\64\1\0\2\11\1\0\15\11"+
190 "\3\0\1\65\1\11\1\66\1\11\2\0\1\67\1\6"+
191 "\1\70\1\71\2\70\1\71\1\72\1\73\1\74\1\75"+
192 "\1\76\1\0\1\77\2\0\1\100\1\101\3\0\2\102"+
193 "\10\0\1\103\1\104\2\103\1\104\1\105\1\106\1\107"+
194 "\1\110\1\111\1\112\3\0\1\113\5\0\1\114\1\0"+
195 "\1\60\1\61\2\6\1\11\2\115\35\11\3\0\2\116"+
196 "\1\11\2\117\1\11\1\0\1\71\1\0\1\120\6\0"+
197 "\1\121\1\122\1\0\1\37\4\0\1\104\1\0\1\123"+
198 "\1\124\2\125\3\0\2\11\1\126\24\11\1\127\12\11"+
199 "\3\0\2\11\1\0\2\120\14\0\2\123\3\0\20\11"+
200 "\1\130\3\11\1\131\10\11\1\132\6\11\1\133\1\11"+
201 "\1\134\1\130\1\0\2\11\1\0\1\120\13\0\1\123"+
202 "\5\0\11\11\1\0\1\11\1\135\5\11\1\136\1\137"+
203 "\17\11\1\140\1\141\2\11\7\0\2\37\10\0\2\142"+
204 "\3\0\11\11\1\143\1\0\11\11\1\144\4\11\1\145"+
205 "\1\0\3\11\1\146\1\147\2\11\6\0\1\150\1\37"+
206 "\3\0\1\37\6\0\2\151\4\0\1\141\1\11\1\152"+
207 "\1\126\3\11\1\153\2\154\1\143\4\0\11\11\2\155"+
208 "\2\11\1\156\1\11\2\157\1\11\1\160\6\0\1\37"+
209 "\6\0\1\37\13\0\1\11\1\161\2\11\1\154\1\162"+
210 "\1\154\1\143\3\0\2\11\1\163\2\11\1\164\3\11"+
211 "\1\155\1\165\1\155\1\166\1\0\1\11\1\156\1\0"+
212 "\1\167\1\157\2\170\1\157\4\0\1\171\1\172\2\37"+
213 "\4\0\2\37\7\0\2\173\1\0\3\11\2\162\2\143"+
214 "\1\174\2\175\1\0\1\11\1\0\5\11\2\165\2\0"+
215 "\1\11\1\0\2\170\2\0\1\176\2\0\1\37\2\0"+
216 "\2\37\4\0\1\37\2\0\2\37\7\0\2\177\1\11"+
217 "\1\162\1\0\1\143\1\0\1\174\1\0\1\175\1\200"+
218 "\1\175\2\0\2\11\1\201\1\11\1\202\1\203\2\204"+
219 "\1\165\1\0\1\205\3\0\1\205\1\0\1\205\1\156"+
220 "\3\0\1\206\1\0\4\37\3\0\4\37\3\0\2\207"+
221 "\1\0\1\177\1\210\1\177\1\211\3\0\2\200\2\0"+
222 "\2\11\1\201\2\212\1\204\1\213\1\204\12\0\3\37"+
223 "\5\0\3\37\1\0\2\214\1\0\2\210\2\143\1\174"+
224 "\1\200\3\0\2\11\1\212\1\215\1\212\2\213\1\205"+
225 "\2\0\1\216\1\217\4\0\1\37\3\0\1\37\2\220"+
226 "\1\210\1\0\1\143\1\163\1\0\1\163\1\11\2\215"+
227 "\1\213\1\0\2\205\1\0\1\205\3\0\1\37\2\0"+
228 "\1\37\2\221\1\215\10\0\1\222\3\205";
229
230 private static int [] zzUnpackAction() {
231 int [] result = new int[826];
232 int offset = 0;
233 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
234 return result;
235 }
236
237 private static int zzUnpackAction(String packed, int offset, int [] result) {
238 int i = 0; /* index in packed string */
239 int j = offset; /* index in unpacked array */
240 int l = packed.length();
241 while (i < l) {
242 int count = packed.charAt(i++);
243 int value = packed.charAt(i++);
244 do result[j++] = value; while (--count > 0);
245 }
246 return j;
247 }
248
249
250 /**
251 * Translates a state to a row index in the transition table
252 */
253 private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
254
255 private static final String ZZ_ROWMAP_PACKED_0 =
256 "\0\0\0\107\0\216\0\325\0\u011c\0\u0163\0\u01aa\0\u01f1"+
257 "\0\u0238\0\u027f\0\u02c6\0\u030d\0\u0354\0\u039b\0\u03e2\0\u0429"+
258 "\0\u0429\0\u0470\0\u04b7\0\u04fe\0\u0545\0\u058c\0\u0470\0\u05d3"+
259 "\0\u061a\0\u0470\0\u0661\0\u06a8\0\u06ef\0\u0736\0\u077d\0\u07c4"+
260 "\0\u080b\0\u0852\0\u0899\0\u08e0\0\u0927\0\u096e\0\u09b5\0\u0470"+
261 "\0\u0470\0\u09fc\0\u0a43\0\u0a8a\0\u0ad1\0\u0470\0\u0b18\0\u0b5f"+
262 "\0\u0470\0\u0470\0\u0ba6\0\u0470\0\u0bed\0\u0c34\0\u0470\0\u0470"+
263 "\0\u0470\0\u0470\0\u0470\0\u0470\0\u0470\0\u0c7b\0\u0cc2\0\u0d09"+
264 "\0\u0d50\0\u0470\0\u0470\0\u0d97\0\u0470\0\u0dde\0\u0e25\0\u0e6c"+
265 "\0\u0470\0\u0eb3\0\u0470\0\u0efa\0\u0efa\0\u0b18\0\u0470\0\u0470"+
266 "\0\u0f41\0\u0470\0\u0f88\0\u0fcf\0\u0fcf\0\u0470\0\u1016\0\u0470"+
267 "\0\u105d\0\u0470\0\u10a4\0\u0470\0\u10eb\0\u1132\0\u1179\0\u11c0"+
268 "\0\u0545\0\u0470\0\u0470\0\u058c\0\u0470\0\u1207\0\u124e\0\u1295"+
269 "\0\u12dc\0\u1323\0\u136a\0\u13b1\0\u13f8\0\u143f\0\u1486\0\u14cd"+
270 "\0\u1514\0\u155b\0\u15a2\0\u15e9\0\u1630\0\u1677\0\u16be\0\u1705"+
271 "\0\u174c\0\u0470\0\u1793\0\u17da\0\u1821\0\u09b5\0\u1868\0\u0470"+
272 "\0\u18af\0\u0470\0\u18f6\0\u193d\0\u1984\0\u19cb\0\u0470\0\u0470"+
273 "\0\u0470\0\u0470\0\u0470\0\u0a8a\0\u0bed\0\u1a12\0\u1a59\0\u0470"+
274 "\0\u1aa0\0\u1ae7\0\u0bed\0\u0c34\0\u0470\0\u1b2e\0\u0cc2\0\u0d09"+
275 "\0\u0d50\0\u1b75\0\u1bbc\0\u1c03\0\u1c4a\0\u1c91\0\u0470\0\u1cd8"+
276 "\0\u1d1f\0\u1d66\0\u1dad\0\u0470\0\u0470\0\u0470\0\u0470\0\u0470"+
277 "\0\u0470\0\u0efa\0\u0b18\0\u1df4\0\u0470\0\u0fcf\0\u1e3b\0\u1e82"+
278 "\0\u1ec9\0\u1f10\0\u1f57\0\u105d\0\u1f9e\0\u0470\0\u1207\0\u0470"+
279 "\0\u1fe5\0\u12dc\0\u0470\0\u202c\0\u2073\0\u20ba\0\u2101\0\u2148"+
280 "\0\u218f\0\u21d6\0\u221d\0\u2264\0\u22ab\0\u22f2\0\u2339\0\u2380"+
281 "\0\u23c7\0\u240e\0\u2455\0\u249c\0\u24e3\0\u252a\0\u2571\0\u25b8"+
282 "\0\u25ff\0\u2646\0\u268d\0\u26d4\0\u271b\0\u2762\0\u27a9\0\u27f0"+
283 "\0\u2837\0\u287e\0\u28c5\0\u290c\0\u2953\0\u299a\0\u29e1\0\u2a28"+
284 "\0\u2a6f\0\u2ab6\0\u0470\0\u2afd\0\u2b44\0\u2b8b\0\u2bd2\0\u2c19"+
285 "\0\u2c60\0\u2ca7\0\u2cee\0\u0470\0\u0470\0\u2d35\0\u2d7c\0\u2dc3"+
286 "\0\u2e0a\0\u2e51\0\u2e98\0\u0470\0\u2edf\0\u2f26\0\u0470\0\u1e3b"+
287 "\0\u0470\0\u2f6d\0\u2fb4\0\u2ffb\0\u3042\0\u3089\0\u30d0\0\u3117"+
288 "\0\u315e\0\u31a5\0\u31ec\0\u3233\0\u327a\0\u32c1\0\u3308\0\u334f"+
289 "\0\u3396\0\u33dd\0\u3424\0\u346b\0\u34b2\0\u34f9\0\u3540\0\u3587"+
290 "\0\u35ce\0\u3615\0\u365c\0\u36a3\0\u36ea\0\u3731\0\u3778\0\u37bf"+
291 "\0\u3806\0\u384d\0\u3894\0\u38db\0\u3922\0\u3969\0\u39b0\0\u39f7"+
292 "\0\u3a3e\0\u3a85\0\u3acc\0\u3b13\0\u0470\0\u3b5a\0\u3ba1\0\u3be8"+
293 "\0\u3c2f\0\u3c76\0\u3cbd\0\u3d04\0\u3d4b\0\u3d92\0\u3dd9\0\u3e20"+
294 "\0\u3e67\0\u3eae\0\u0470\0\u3ef5\0\u3f3c\0\u3f83\0\u3fca\0\u4011"+
295 "\0\u4058\0\u409f\0\u40e6\0\u412d\0\u4174\0\u41bb\0\u4202\0\u4249"+
296 "\0\u4290\0\u42d7\0\u431e\0\u4365\0\u43ac\0\u43f3\0\u443a\0\u124e"+
297 "\0\u4481\0\u44c8\0\u450f\0\u124e\0\u4556\0\u459d\0\u45e4\0\u462b"+
298 "\0\u4672\0\u46b9\0\u4700\0\u4747\0\u124e\0\u478e\0\u47d5\0\u481c"+
299 "\0\u4863\0\u48aa\0\u48f1\0\u124e\0\u4938\0\u0470\0\u0470\0\u497f"+
300 "\0\u49c6\0\u4a0d\0\u4a54\0\u2afd\0\u4a9b\0\u4ae2\0\u4b29\0\u4b70"+
301 "\0\u4bb7\0\u4bfe\0\u4c45\0\u4c8c\0\u4cd3\0\u4d1a\0\u4d61\0\u2edf"+
302 "\0\u4da8\0\u4def\0\u4e36\0\u4e7d\0\u4ec4\0\u4f0b\0\u4f52\0\u4f99"+
303 "\0\u4fe0\0\u5027\0\u506e\0\u50b5\0\u50fc\0\u5143\0\u518a\0\u51d1"+
304 "\0\u124e\0\u5218\0\u525f\0\u52a6\0\u52ed\0\u5334\0\u124e\0\u124e"+
305 "\0\u537b\0\u53c2\0\u5409\0\u5450\0\u5497\0\u54de\0\u5525\0\u556c"+
306 "\0\u55b3\0\u55fa\0\u5641\0\u5688\0\u56cf\0\u5716\0\u575d\0\u124e"+
307 "\0\u0470\0\u57a4\0\u57eb\0\u5832\0\u5879\0\u58c0\0\u5907\0\u594e"+
308 "\0\u5995\0\u59dc\0\u5a23\0\u5a6a\0\u5ab1\0\u5af8\0\u5b3f\0\u5b86"+
309 "\0\u5bcd\0\u5c14\0\u5c5b\0\u5ca2\0\u4def\0\u0470\0\u5ce9\0\u5d30"+
310 "\0\u5d77\0\u5dbe\0\u5e05\0\u5e4c\0\u5e93\0\u5eda\0\u5f21\0\u5f68"+
311 "\0\u5faf\0\u5ff6\0\u603d\0\u6084\0\u60cb\0\u6112\0\u6159\0\u61a0"+
312 "\0\u61e7\0\u622e\0\u6275\0\u62bc\0\u6303\0\u124e\0\u634a\0\u6391"+
313 "\0\u63d8\0\u641f\0\u124e\0\u6466\0\u64ad\0\u64f4\0\u653b\0\u124e"+
314 "\0\u124e\0\u6582\0\u2a28\0\u65c9\0\u6610\0\u6657\0\u669e\0\u66e5"+
315 "\0\u672c\0\u6773\0\u67ba\0\u6801\0\u6848\0\u688f\0\u68d6\0\u691d"+
316 "\0\u6964\0\u69ab\0\u69f2\0\u6a39\0\u6a80\0\u5c5b\0\u0470\0\u6ac7"+
317 "\0\u6b0e\0\u6b55\0\u6b9c\0\u124e\0\u6be3\0\u124e\0\u124e\0\u6c2a"+
318 "\0\u6c71\0\u6cb8\0\u124e\0\u6cff\0\u6d46\0\u6d8d\0\u6dd4\0\u6e1b"+
319 "\0\u6e62\0\u6ea9\0\u6ef0\0\u6f37\0\u6f7e\0\u6fc5\0\u700c\0\u7053"+
320 "\0\u709a\0\u70e1\0\u7128\0\u716f\0\u71b6\0\u71fd\0\u7244\0\u728b"+
321 "\0\u72d2\0\u7319\0\u7360\0\u2953\0\u0470\0\u73a7\0\u73ee\0\u7435"+
322 "\0\u747c\0\u74c3\0\u750a\0\u7551\0\u7598\0\u75df\0\u7626\0\u766d"+
323 "\0\u76b4\0\u76fb\0\u7742\0\u7789\0\u77d0\0\u7817\0\u785e\0\u78a5"+
324 "\0\u78ec\0\u7933\0\u797a\0\u79c1\0\u7a08\0\u7a4f\0\u7a96\0\u7add"+
325 "\0\u7b24\0\u7b6b\0\u7bb2\0\u7bf9\0\u7c40\0\u7c87\0\u7cce\0\u7d15"+
326 "\0\u7d5c\0\u7da3\0\u7dea\0\u7e31\0\u7e78\0\u7ebf\0\u124e\0\u7f06"+
327 "\0\u7f4d\0\u7f94\0\u7fdb\0\u8022\0\u8069\0\u124e\0\u80b0\0\u80f7"+
328 "\0\u813e\0\u8185\0\u124e\0\u81cc\0\u8213\0\u825a\0\u82a1\0\u82e8"+
329 "\0\u832f\0\u8376\0\u83bd\0\u0470\0\u0470\0\u8404\0\u844b\0\u8492"+
330 "\0\u84d9\0\u8520\0\u8567\0\u85ae\0\u85f5\0\u863c\0\u8683\0\u86ca"+
331 "\0\u8711\0\u8758\0\u879f\0\u87e6\0\u7a08\0\u0470\0\u882d\0\u8874"+
332 "\0\u88bb\0\u8902\0\u8949\0\u8990\0\u89d7\0\u8a1e\0\u8a65\0\u8aac"+
333 "\0\u8af3\0\u8b3a\0\u8b81\0\u8bc8\0\u8c0f\0\u8c56\0\u8c9d\0\u8ce4"+
334 "\0\u8d2b\0\u8d72\0\u8db9\0\u8e00\0\u8e47\0\u8e8e\0\u8ed5\0\u8f1c"+
335 "\0\u8f63\0\u8faa\0\u8ff1\0\u0470\0\u9038\0\u907f\0\u90c6\0\u910d"+
336 "\0\u9154\0\u919b\0\u91e2\0\u9229\0\u9270\0\u92b7\0\u92fe\0\u9345"+
337 "\0\u938c\0\u93d3\0\u941a\0\u9461\0\u94a8\0\u94ef\0\u9536\0\u957d"+
338 "\0\u95c4\0\u960b\0\u9652\0\u9699\0\u96e0\0\u9727\0\u976e\0\u97b5"+
339 "\0\u97fc\0\u9843\0\u988a\0\u98d1\0\u9918\0\u995f\0\u99a6\0\u99ed"+
340 "\0\u9a34\0\u9a7b\0\u9ac2\0\u9b09\0\u9b50\0\u124e\0\u124e\0\u9b97"+
341 "\0\u9bde\0\u9c25\0\u9c6c\0\u9cb3\0\u9cfa\0\u9d41\0\u9d88\0\u8e00"+
342 "\0\u9dcf\0\u8e8e\0\u9e16\0\u9e5d\0\u9ea4\0\u9eeb\0\u0470\0\u9f32"+
343 "\0\u9f79\0\u9fc0\0\ua007\0\ua04e\0\ua095\0\ua0dc\0\ua123\0\ua16a"+
344 "\0\ua1b1\0\ua1f8\0\ua23f\0\ua286\0\ua2cd\0\ua314\0\u960b\0\u0470"+
345 "\0\ua35b\0\ua3a2\0\ua3e9\0\ua430\0\ua477\0\ua4be\0\ua505\0\ua54c"+
346 "\0\ua593\0\ua5da\0\ua621\0\ua668\0\ua6af\0\ua6f6\0\ua73d\0\ua784"+
347 "\0\ua7cb\0\ua812\0\ua859\0\ua8a0\0\ua8e7\0\ua92e\0\ua975\0\ua9bc"+
348 "\0\uaa03\0\uaa4a\0\uaa91\0\uaad8\0\uab1f\0\uab66\0\uabad\0\uabf4"+
349 "\0\uac3b\0\uac82\0\uacc9\0\uad10\0\uad57\0\uad9e\0\uade5\0\uae2c"+
350 "\0\uae73\0\uaeba\0\ua314\0\u0470\0\uaf01\0\uaf48\0\uaf8f\0\uafd6"+
351 "\0\ub01d\0\ub064\0\ub0ab\0\ub0f2\0\ub139\0\ub180\0\ub1c7\0\ub20e"+
352 "\0\ub255\0\ub29c\0\ub2e3\0\ub32a\0\ub371\0\ua8e7\0\ub3b8\0\ub3ff"+
353 "\0\u0470\0\u0470\0\ub446\0\ub48d\0\ub4d4\0\ub51b\0\ub562\0\ub5a9"+
354 "\0\ub5f0\0\ub637\0\ub67e\0\uaf01\0\u0470\0\ub6c5\0\ub70c\0\ub753"+
355 "\0\u0470\0\ub79a\0\u124e\0\ub7e1\0\ub828\0\ub86f\0\ub8b6\0\ub8fd"+
356 "\0\ub3b8\0\ub944\0\ub98b\0\ub3ff\0\ub9d2\0\uba19\0\uba60\0\ubaa7"+
357 "\0\ubaee\0\ubb35\0\ubb7c\0\u0470\0\u124e\0\ubbc3\0\ubc0a\0\ubc51"+
358 "\0\ubc98\0\ubcdf\0\ubd26\0\ubd6d\0\ubdb4\0\ubdfb\0\u0470\0\ubdb4"+
359 "\0\ube42\0\ubdfb";
360
361 private static int [] zzUnpackRowMap() {
362 int [] result = new int[826];
363 int offset = 0;
364 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
365 return result;
366 }
367
368 private static int zzUnpackRowMap(String packed, int offset, int [] result) {
369 int i = 0; /* index in packed string */
370 int j = offset; /* index in unpacked array */
371 int l = packed.length();
372 while (i < l) {
373 int high = packed.charAt(i++) << 16;
374 result[j++] = high | packed.charAt(i++);
375 }
376 return j;
377 }
378
379 /**
380 * The transition table of the DFA
381 */
382 private static final int [] ZZ_TRANS = zzUnpackTrans();
383
384 private static final String ZZ_TRANS_PACKED_0 =
385 "\11\20\2\21\1\22\13\20\1\21\5\20\1\23\51\20"+
386 "\30\24\1\25\1\26\55\24\2\27\1\30\2\27\2\30"+
387 "\1\27\1\31\1\32\1\33\1\32\1\27\1\34\6\27"+
388 "\1\30\2\27\1\32\7\27\25\30\4\27\1\30\1\27"+
389 "\3\30\6\27\1\30\5\27\1\35\2\27\2\35\1\27"+
390 "\1\36\3\37\10\27\1\35\1\27\1\36\1\37\1\27"+
391 "\1\40\3\27\1\41\1\27\25\35\4\27\1\35\1\42"+
392 "\3\35\6\27\1\35\5\27\1\35\2\27\2\35\1\27"+
393 "\1\43\3\37\10\27\1\35\1\27\1\43\1\37\1\27"+
394 "\1\40\3\27\1\44\1\27\25\35\4\27\1\35\1\42"+
395 "\3\35\6\27\1\35\13\27\4\45\4\27\1\46\5\27"+
396 "\2\45\1\27\1\47\2\27\1\50\52\27\4\51\1\52"+
397 "\3\51\1\53\1\54\1\55\1\54\1\56\1\51\1\57"+
398 "\1\51\1\60\2\51\1\61\2\51\1\53\1\54\1\62"+
399 "\1\63\1\64\3\51\1\65\36\51\1\66\1\67\1\70"+
400 "\1\71\1\72\1\73\1\74\1\75\2\51\31\76\1\77"+
401 "\1\100\1\101\1\102\1\76\1\103\50\76\2\27\1\35"+
402 "\2\27\2\35\1\27\4\104\1\27\1\105\3\27\1\106"+
403 "\2\27\1\35\1\27\2\104\7\27\25\35\4\27\1\35"+
404 "\1\27\3\35\6\27\1\35\3\27\4\107\1\110\4\107"+
405 "\1\111\1\112\1\111\13\107\1\111\2\107\1\113\54\107"+
406 "\4\51\1\52\3\51\3\114\1\115\2\51\1\116\1\117"+
407 "\6\51\2\114\2\51\1\120\3\51\1\121\45\51\1\122"+
408 "\1\51\1\123\11\124\2\125\1\126\13\124\1\125\5\124"+
409 "\1\127\51\124\10\27\1\36\2\27\1\130\1\27\1\131"+
410 "\10\27\1\36\5\27\1\132\62\27\4\133\12\27\2\133"+
411 "\57\27\2\134\1\135\2\134\2\135\15\134\1\135\12\134"+
412 "\25\135\4\134\1\135\1\134\3\135\6\134\1\135\3\134"+
413 "\11\20\2\21\1\22\13\20\1\21\57\20\107\0\11\20"+
414 "\2\21\1\22\13\20\1\21\5\20\1\136\51\20\30\24"+
415 "\1\137\1\140\105\24\1\141\1\142\105\24\1\143\1\144"+
416 "\55\24\1\0\3\30\1\0\3\30\14\0\4\30\7\0"+
417 "\32\30\1\0\3\30\6\0\1\30\13\0\1\31\4\0"+
418 "\1\34\104\0\1\32\103\0\1\34\77\0\3\35\1\0"+
419 "\3\35\14\0\4\35\7\0\32\35\1\0\3\35\6\0"+
420 "\1\35\13\0\1\36\15\0\1\36\71\0\3\37\13\0"+
421 "\1\37\107\0\1\145\1\146\57\0\1\147\2\0\1\147"+
422 "\1\150\15\0\1\147\11\0\1\151\1\152\1\153\1\154"+
423 "\4\147\1\155\1\156\1\157\1\160\1\147\1\161\1\162"+
424 "\1\163\1\147\1\164\1\147\1\165\1\166\1\147\1\167"+
425 "\1\170\1\171\1\0\1\147\1\0\3\147\6\0\1\147"+
426 "\13\0\1\42\15\0\1\42\70\0\1\43\15\0\1\43"+
427 "\6\0\1\172\53\0\1\147\2\0\1\173\1\150\15\0"+
428 "\1\147\10\0\1\174\1\151\1\152\1\153\1\154\4\147"+
429 "\1\155\1\156\1\157\1\160\1\147\1\161\1\175\1\163"+
430 "\1\147\1\164\1\147\1\165\1\166\1\147\1\167\1\170"+
431 "\1\171\1\0\1\147\1\0\3\147\6\0\1\147\13\0"+
432 "\4\45\4\0\1\46\5\0\2\45\1\0\1\176\2\0"+
433 "\1\50\72\0\1\177\116\0\1\200\1\201\55\0\3\202"+
434 "\1\203\1\202\1\204\1\205\1\206\3\202\1\0\24\202"+
435 "\1\207\1\210\1\202\1\211\3\202\1\212\7\202\1\213"+
436 "\4\202\1\203\1\202\1\206\1\203\17\202\10\0\1\53"+
437 "\3\214\1\56\1\0\1\57\4\0\1\61\2\0\1\53"+
438 "\1\214\1\62\1\63\1\64\3\0\1\215\36\0\1\66"+
439 "\1\67\1\70\1\71\1\72\1\73\1\74\1\75\12\0"+
440 "\4\214\1\56\1\0\1\57\4\0\1\61\2\0\2\214"+
441 "\1\62\1\63\1\64\3\0\1\215\36\0\1\66\1\67"+
442 "\1\70\1\71\1\72\1\73\1\74\1\75\12\0\3\214"+
443 "\1\54\1\56\1\0\1\57\4\0\1\61\2\0\2\214"+
444 "\1\62\1\63\1\64\3\0\1\215\36\0\1\66\1\67"+
445 "\1\70\1\71\1\72\1\73\1\74\1\75\107\0\1\216"+
446 "\21\0\1\217\116\0\1\220\1\201\56\0\1\221\1\222"+
447 "\1\221\1\0\2\222\1\221\1\223\13\0\1\222\1\0"+
448 "\1\223\10\0\25\222\4\221\1\222\1\0\3\222\6\0"+
449 "\1\222\13\0\1\224\1\225\1\226\1\225\12\0\1\224"+
450 "\1\225\57\0\31\76\1\227\1\230\1\231\1\0\1\76"+
451 "\1\0\100\76\1\232\1\233\55\76\4\230\1\234\4\230"+
452 "\3\0\13\230\1\0\2\230\1\76\54\230\4\235\1\236"+
453 "\4\235\3\0\13\235\1\0\3\235\1\0\53\235\10\0"+
454 "\4\104\12\0\2\104\67\0\4\106\12\0\2\106\57\0"+
455 "\4\107\1\0\4\107\3\0\13\107\1\0\2\107\1\0"+
456 "\54\107\3\237\1\240\1\237\1\241\1\242\1\243\3\237"+
457 "\1\0\16\237\1\244\5\237\1\245\1\246\1\237\1\247"+
458 "\3\237\1\250\7\237\1\251\4\237\1\240\1\237\1\243"+
459 "\1\240\17\237\13\0\1\111\103\0\4\252\2\0\1\253"+
460 "\7\0\2\252\61\0\1\254\2\0\2\254\15\0\1\254"+
461 "\12\0\25\254\4\0\1\254\1\0\3\254\6\0\1\254"+
462 "\22\0\1\255\67\0\11\256\2\125\1\126\13\256\1\125"+
463 "\70\256\2\125\1\126\13\256\1\125\4\256\1\257\2\256"+
464 "\1\260\6\256\1\261\1\256\1\262\36\256\1\0\1\263"+
465 "\1\0\1\263\3\0\1\263\1\264\15\0\1\264\35\0"+
466 "\4\263\27\0\4\133\12\0\2\133\60\0\3\135\1\0"+
467 "\3\135\1\265\13\0\4\135\7\0\32\135\1\0\3\135"+
468 "\6\0\1\135\3\0\13\136\1\266\73\136\30\24\1\137"+
469 "\1\0\105\24\1\0\1\140\55\24\11\146\2\267\1\270"+
470 "\13\146\1\267\57\146\1\0\3\147\1\0\3\147\14\0"+
471 "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
472 "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\271"+
473 "\30\147\1\0\3\147\6\0\1\147\3\0\11\151\2\272"+
474 "\1\273\13\151\1\272\57\151\1\0\3\147\1\0\3\147"+
475 "\14\0\4\147\7\0\1\147\1\274\15\147\1\275\4\147"+
476 "\1\276\5\147\1\0\3\147\6\0\1\147\4\0\3\147"+
477 "\1\0\3\147\14\0\4\147\7\0\5\147\1\277\24\147"+
478 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
479 "\14\0\4\147\7\0\3\147\1\300\5\147\1\301\2\147"+
480 "\1\302\15\147\1\0\3\147\6\0\1\147\4\0\3\147"+
481 "\1\0\1\303\2\147\14\0\4\147\7\0\5\147\1\304"+
482 "\24\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
483 "\1\147\1\305\1\147\14\0\4\147\7\0\1\306\31\147"+
484 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
485 "\14\0\4\147\7\0\11\147\1\307\20\147\1\0\3\147"+
486 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
487 "\7\0\1\310\31\147\1\0\3\147\6\0\1\147\4\0"+
488 "\3\147\1\0\3\147\14\0\4\147\7\0\20\147\1\311"+
489 "\1\147\1\312\7\147\1\0\3\147\6\0\1\147\4\0"+
490 "\3\147\1\0\3\147\14\0\4\147\7\0\2\147\1\313"+
491 "\3\147\1\314\7\147\1\315\13\147\1\0\3\147\6\0"+
492 "\1\147\4\0\3\147\1\0\1\147\1\316\1\147\14\0"+
493 "\4\147\7\0\2\147\1\317\1\320\1\147\1\321\4\147"+
494 "\1\322\1\147\1\323\15\147\1\0\3\147\6\0\1\147"+
495 "\4\0\3\147\1\0\1\147\1\324\1\147\14\0\4\147"+
496 "\7\0\11\147\1\325\20\147\1\0\3\147\6\0\1\147"+
497 "\4\0\3\147\1\0\1\147\1\326\1\147\14\0\4\147"+
498 "\7\0\14\147\1\327\15\147\1\0\3\147\6\0\1\147"+
499 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
500 "\1\330\22\147\1\0\3\147\6\0\1\147\62\0\1\331"+
501 "\106\0\1\332\116\0\1\333\20\0\3\147\1\0\3\147"+
502 "\1\334\13\0\2\147\1\335\1\147\7\0\15\147\1\336"+
503 "\14\147\1\0\3\147\6\0\1\147\3\0\11\174\3\0"+
504 "\13\174\1\0\57\174\1\0\3\147\1\0\3\147\1\337"+
505 "\13\0\2\147\1\340\1\147\7\0\2\147\1\341\3\147"+
506 "\1\314\7\147\1\315\13\147\1\0\3\147\6\0\1\147"+
507 "\75\0\1\342\14\0\11\201\3\0\13\201\1\0\57\201"+
508 "\3\0\1\343\3\0\1\343\54\0\1\343\1\0\2\343"+
509 "\20\0\3\344\3\0\1\344\36\0\2\344\3\0\1\344"+
510 "\1\0\1\344\1\0\1\344\2\0\1\344\1\0\4\344"+
511 "\2\0\1\344\1\0\1\344\13\0\3\345\3\0\1\345"+
512 "\36\0\2\345\3\0\1\345\1\0\1\345\1\0\1\345"+
513 "\2\0\1\345\1\0\4\345\2\0\1\345\1\0\1\345"+
514 "\15\0\1\203\3\0\1\203\54\0\1\203\1\0\2\203"+
515 "\25\0\1\346\42\0\1\347\6\0\1\350\1\0\1\351"+
516 "\116\0\1\352\15\0\1\221\1\0\1\221\3\0\1\221"+
517 "\54\0\4\221\20\0\3\222\1\0\3\222\1\353\13\0"+
518 "\4\222\4\0\1\354\2\0\32\222\1\0\3\222\6\0"+
519 "\1\222\16\0\1\355\73\0\30\232\1\356\56\232\11\233"+
520 "\2\357\1\76\13\233\1\357\57\233\11\230\3\0\13\230"+
521 "\1\0\57\230\33\0\1\76\53\0\3\235\1\360\1\361"+
522 "\1\235\1\362\1\363\1\235\3\0\13\235\1\0\34\235"+
523 "\1\360\1\235\1\363\1\360\17\235\3\0\1\364\3\0"+
524 "\1\364\54\0\1\364\1\0\2\364\20\0\3\365\3\0"+
525 "\1\365\36\0\2\365\3\0\1\365\1\0\1\365\1\0"+
526 "\1\365\2\0\1\365\1\0\4\365\2\0\1\365\1\0"+
527 "\1\365\13\0\3\366\3\0\1\366\36\0\2\366\3\0"+
528 "\1\366\1\0\1\366\1\0\1\366\2\0\1\366\1\0"+
529 "\4\366\2\0\1\366\1\0\1\366\15\0\1\240\3\0"+
530 "\1\240\54\0\1\240\1\0\2\240\20\0\3\254\1\0"+
531 "\3\254\14\0\4\254\4\0\1\367\2\0\32\254\1\0"+
532 "\3\254\6\0\1\254\3\0\11\257\2\370\1\371\13\257"+
533 "\1\370\57\257\11\256\2\125\1\126\13\256\1\125\10\256"+
534 "\1\372\57\256\2\125\1\126\13\256\1\125\14\256\1\373"+
535 "\53\256\2\125\1\126\13\256\1\125\20\256\1\374\36\256"+
536 "\1\0\1\263\1\0\1\263\3\0\1\263\54\0\4\263"+
537 "\27\0\1\265\15\0\1\265\61\0\3\147\1\0\3\147"+
538 "\14\0\4\147\7\0\1\375\31\147\1\0\3\147\6\0"+
539 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
540 "\1\376\1\147\1\377\13\147\1\u0100\13\147\1\0\3\147"+
541 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
542 "\7\0\22\147\1\u0101\7\147\1\0\3\147\6\0\1\147"+
543 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
544 "\1\u0102\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
545 "\1\0\3\147\14\0\4\147\7\0\2\147\1\u0103\27\147"+
546 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
547 "\14\0\4\147\7\0\4\147\1\u0104\25\147\1\0\3\147"+
548 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
549 "\7\0\22\147\1\u0105\7\147\1\0\3\147\6\0\1\147"+
550 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\20\147"+
551 "\1\u0106\11\147\1\0\3\147\6\0\1\147\4\0\3\147"+
552 "\1\0\3\147\14\0\4\147\7\0\2\147\1\u0107\27\147"+
553 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
554 "\14\0\4\147\7\0\10\147\1\u0108\21\147\1\0\3\147"+
555 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
556 "\7\0\1\147\1\u0109\10\147\1\u010a\17\147\1\0\3\147"+
557 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
558 "\7\0\1\147\1\u010b\30\147\1\0\3\147\6\0\1\147"+
559 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
560 "\1\u010c\2\147\1\u010d\17\147\1\0\3\147\6\0\1\147"+
561 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
562 "\1\u010e\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
563 "\1\0\3\147\14\0\4\147\7\0\15\147\1\u010f\14\147"+
564 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
565 "\14\0\4\147\7\0\1\u0110\31\147\1\0\3\147\6\0"+
566 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
567 "\14\147\1\u0111\15\147\1\0\3\147\6\0\1\147\4\0"+
568 "\3\147\1\0\3\147\14\0\4\147\7\0\1\u0112\31\147"+
569 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
570 "\14\0\4\147\7\0\14\147\1\u0113\15\147\1\0\3\147"+
571 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
572 "\7\0\22\147\1\u0114\7\147\1\0\3\147\6\0\1\147"+
573 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\5\147"+
574 "\1\u0115\24\147\1\0\3\147\6\0\1\147\4\0\3\147"+
575 "\1\0\3\147\14\0\4\147\7\0\14\147\1\u0116\15\147"+
576 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
577 "\14\0\4\147\7\0\12\147\1\u0117\17\147\1\0\3\147"+
578 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
579 "\7\0\14\147\1\u0118\15\147\1\0\3\147\6\0\1\147"+
580 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
581 "\1\u0119\14\147\1\0\3\147\6\0\1\147\4\0\3\147"+
582 "\1\0\3\147\14\0\4\147\7\0\10\147\1\u011a\21\147"+
583 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
584 "\14\0\4\147\7\0\14\147\1\u011b\15\147\1\0\3\147"+
585 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
586 "\7\0\20\147\1\u011c\11\147\1\0\3\147\6\0\1\147"+
587 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\16\147"+
588 "\1\u011d\13\147\1\0\3\147\6\0\1\147\4\0\3\147"+
589 "\1\0\3\147\14\0\4\147\7\0\20\147\1\u011e\11\147"+
590 "\1\0\3\147\6\0\1\147\42\0\1\u011f\106\0\1\u0120"+
591 "\126\0\1\u0121\37\0\1\334\15\0\1\334\61\0\3\147"+
592 "\1\0\3\147\1\334\13\0\2\147\1\335\1\147\7\0"+
593 "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
594 "\3\147\14\0\4\147\7\0\2\147\1\u0122\27\147\1\0"+
595 "\3\147\6\0\1\147\13\0\1\337\15\0\1\337\61\0"+
596 "\3\147\1\0\3\147\1\337\13\0\2\147\1\340\1\147"+
597 "\7\0\32\147\1\0\3\147\6\0\1\147\4\0\3\147"+
598 "\1\0\3\147\14\0\4\147\7\0\14\147\1\u0123\15\147"+
599 "\1\0\3\147\6\0\1\147\76\0\1\u0124\14\0\3\u0125"+
600 "\3\0\1\u0125\36\0\2\u0125\3\0\1\u0125\1\0\1\u0125"+
601 "\1\0\1\u0125\2\0\1\u0125\1\0\4\u0125\2\0\1\u0125"+
602 "\1\0\1\u0125\13\0\3\u0126\3\0\1\u0126\36\0\2\u0126"+
603 "\3\0\1\u0126\1\0\1\u0126\1\0\1\u0126\2\0\1\u0126"+
604 "\1\0\4\u0126\2\0\1\u0126\1\0\1\u0126\73\0\1\u0127"+
605 "\71\0\1\u0128\1\0\1\u0129\111\0\1\u012a\74\0\1\u012b"+
606 "\142\0\1\u012c\23\0\1\353\15\0\1\353\5\0\1\354"+
607 "\52\0\30\232\1\356\1\76\55\232\13\357\1\76\15\357"+
608 "\1\u012d\1\u012e\1\u012f\1\233\1\357\1\233\50\357\3\0"+
609 "\1\235\3\0\1\235\23\0\1\76\30\0\1\235\1\0"+
610 "\2\235\23\0\1\u0130\1\0\1\u0131\24\0\1\76\54\0"+
611 "\3\u0132\3\0\1\u0132\23\0\1\76\12\0\2\u0132\3\0"+
612 "\1\u0132\1\0\1\u0132\1\0\1\u0132\2\0\1\u0132\1\0"+
613 "\4\u0132\2\0\1\u0132\1\0\1\u0132\15\0\1\360\3\0"+
614 "\1\360\23\0\1\76\30\0\1\360\1\0\2\360\20\0"+
615 "\3\u0133\3\0\1\u0133\36\0\2\u0133\3\0\1\u0133\1\0"+
616 "\1\u0133\1\0\1\u0133\2\0\1\u0133\1\0\4\u0133\2\0"+
617 "\1\u0133\1\0\1\u0133\13\0\3\u0134\3\0\1\u0134\36\0"+
618 "\2\u0134\3\0\1\u0134\1\0\1\u0134\1\0\1\u0134\2\0"+
619 "\1\u0134\1\0\4\u0134\2\0\1\u0134\1\0\1\u0134\12\0"+
620 "\11\256\2\125\1\126\13\256\1\125\7\256\1\u0135\60\256"+
621 "\2\125\1\126\13\256\1\125\17\256\1\u0136\50\256\2\125"+
622 "\1\126\13\256\1\125\21\256\1\u0137\35\256\1\0\3\147"+
623 "\1\0\3\147\14\0\4\147\7\0\16\147\1\u0138\13\147"+
624 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
625 "\14\0\4\147\7\0\2\147\1\u0139\27\147\1\0\3\147"+
626 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
627 "\7\0\6\147\1\u013a\1\u013b\22\147\1\0\3\147\6\0"+
628 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
629 "\12\147\1\u013c\17\147\1\0\3\147\6\0\1\147\4\0"+
630 "\3\147\1\0\3\147\14\0\4\147\7\0\12\147\1\u013d"+
631 "\17\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
632 "\3\147\14\0\4\147\7\0\5\147\1\u013e\24\147\1\0"+
633 "\3\147\6\0\1\147\4\0\3\147\1\0\1\147\1\u013f"+
634 "\1\147\14\0\4\147\7\0\32\147\1\0\3\147\6\0"+
635 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
636 "\5\147\1\u0140\24\147\1\0\3\147\6\0\1\147\4\0"+
637 "\3\147\1\0\3\147\14\0\4\147\7\0\7\147\1\u0141"+
638 "\22\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
639 "\3\147\14\0\4\147\7\0\12\147\1\u0142\17\147\1\0"+
640 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
641 "\4\147\7\0\7\147\1\u0143\22\147\1\0\3\147\6\0"+
642 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\6\0"+
643 "\1\151\2\147\1\u0144\10\147\1\u0145\2\147\1\u0146\13\147"+
644 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
645 "\14\0\4\147\7\0\16\147\1\u0147\13\147\1\0\3\147"+
646 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
647 "\7\0\12\147\1\u0148\17\147\1\0\3\147\6\0\1\147"+
648 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\14\147"+
649 "\1\u0149\15\147\1\0\3\147\6\0\1\147\4\0\3\147"+
650 "\1\0\3\147\14\0\4\147\7\0\5\147\1\u014a\24\147"+
651 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
652 "\14\0\4\147\7\0\7\147\1\u014b\22\147\1\0\3\147"+
653 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
654 "\7\0\7\147\1\u014c\22\147\1\0\3\147\6\0\1\147"+
655 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\2\147"+
656 "\1\u014d\27\147\1\0\3\147\6\0\1\147\4\0\3\147"+
657 "\1\0\3\147\14\0\4\147\7\0\22\147\1\u014e\7\147"+
658 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
659 "\14\0\4\147\7\0\1\147\1\u014f\30\147\1\0\3\147"+
660 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
661 "\7\0\2\147\1\u0150\27\147\1\0\3\147\6\0\1\147"+
662 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
663 "\1\u0151\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
664 "\1\0\3\147\14\0\4\147\7\0\15\147\1\u0152\5\147"+
665 "\1\u0153\6\147\1\0\3\147\6\0\1\147\4\0\3\147"+
666 "\1\0\3\147\14\0\4\147\7\0\4\147\1\u0154\25\147"+
667 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
668 "\14\0\4\147\7\0\4\147\1\u0155\25\147\1\0\3\147"+
669 "\6\0\1\147\4\0\3\147\1\0\1\147\1\u0156\1\147"+
670 "\14\0\4\147\7\0\32\147\1\0\3\147\6\0\1\147"+
671 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
672 "\1\u0157\14\147\1\0\3\147\6\0\1\147\4\0\3\147"+
673 "\1\0\3\147\14\0\4\147\7\0\7\147\1\u0158\22\147"+
674 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
675 "\14\0\4\147\7\0\10\147\1\u0159\21\147\1\0\3\147"+
676 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
677 "\7\0\16\147\1\u015a\13\147\1\0\3\147\6\0\1\147"+
678 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\12\147"+
679 "\1\u015b\17\147\1\0\3\147\6\0\1\147\4\0\3\147"+
680 "\1\0\3\147\14\0\4\147\7\0\31\147\1\u015c\1\0"+
681 "\3\147\6\0\1\147\4\0\3\147\1\0\1\147\1\u015d"+
682 "\1\147\14\0\4\147\7\0\32\147\1\0\3\147\6\0"+
683 "\1\147\44\0\1\u015e\106\0\1\u015f\104\0\1\u0160\50\0"+
684 "\3\147\1\0\3\147\14\0\4\147\7\0\14\147\1\u0161"+
685 "\15\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
686 "\3\147\14\0\4\147\7\0\1\147\1\u014f\1\u0162\27\147"+
687 "\1\0\3\147\6\0\1\147\77\0\1\u0163\13\0\3\u0164"+
688 "\3\0\1\u0164\36\0\2\u0164\3\0\1\u0164\1\0\1\u0164"+
689 "\1\0\1\u0164\2\0\1\u0164\1\0\4\u0164\2\0\1\u0164"+
690 "\1\0\1\u0164\73\0\1\u0165\72\0\1\u0166\102\0\1\u0167"+
691 "\113\0\1\u0168\123\0\1\u0169\117\0\1\u016a\12\0\13\357"+
692 "\1\76\14\357\1\u016b\1\233\55\357\4\u012e\1\u016c\4\u012e"+
693 "\2\357\1\76\13\u012e\1\357\2\u012e\1\357\54\u012e\4\u016d"+
694 "\1\u016e\4\u016d\2\357\1\76\13\u016d\1\357\3\u016d\1\233"+
695 "\53\u016d\4\0\1\u0130\1\0\1\u0131\101\0\3\u0132\3\0"+
696 "\1\u0132\36\0\2\u0132\3\0\1\u0132\1\0\1\u0132\1\0"+
697 "\1\u0132\2\0\1\u0132\1\0\4\u0132\2\0\1\u0132\1\0"+
698 "\1\u0132\13\0\3\u016f\3\0\1\u016f\36\0\2\u016f\3\0"+
699 "\1\u016f\1\0\1\u016f\1\0\1\u016f\2\0\1\u016f\1\0"+
700 "\4\u016f\2\0\1\u016f\1\0\1\u016f\13\0\3\u0170\3\0"+
701 "\1\u0170\36\0\2\u0170\3\0\1\u0170\1\0\1\u0170\1\0"+
702 "\1\u0170\2\0\1\u0170\1\0\4\u0170\2\0\1\u0170\1\0"+
703 "\1\u0170\12\0\11\256\2\125\1\126\13\256\1\125\11\256"+
704 "\1\u0171\56\256\2\125\1\126\13\256\1\125\4\256\1\u0172"+
705 "\4\256\1\u0173\10\256\1\u0174\45\256\2\125\1\126\13\256"+
706 "\1\125\16\256\1\u0175\40\256\1\0\3\147\1\0\3\147"+
707 "\14\0\4\147\7\0\5\147\1\u0176\24\147\1\0\3\147"+
708 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
709 "\6\0\1\151\2\147\1\u0177\27\147\1\0\3\147\6\0"+
710 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
711 "\4\147\1\u0178\25\147\1\0\3\147\6\0\1\147\4\0"+
712 "\3\147\1\0\3\147\14\0\4\147\7\0\24\147\1\u0179"+
713 "\5\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
714 "\1\147\1\u017a\1\147\14\0\4\147\7\0\32\147\1\0"+
715 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
716 "\4\147\7\0\7\147\1\u017b\22\147\1\0\3\147\6\0"+
717 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
718 "\4\147\1\u017c\25\147\1\0\3\147\6\0\1\147\4\0"+
719 "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u017d"+
720 "\30\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
721 "\3\147\14\0\4\147\7\0\6\147\1\u017e\23\147\1\0"+
722 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\1\u017f"+
723 "\13\0\2\147\1\u0180\1\147\7\0\32\147\1\0\3\147"+
724 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
725 "\7\0\7\147\1\u0181\22\147\1\0\3\147\6\0\1\147"+
726 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
727 "\1\u0182\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
728 "\1\0\3\147\14\0\4\147\7\0\3\147\1\u0183\26\147"+
729 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
730 "\14\0\4\147\7\0\14\147\1\u0184\15\147\1\0\3\147"+
731 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
732 "\7\0\12\147\1\u0185\17\147\1\0\3\147\6\0\1\147"+
733 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\2\147"+
734 "\1\u0186\27\147\1\0\3\147\6\0\1\147\4\0\3\147"+
735 "\1\0\3\147\14\0\4\147\7\0\12\147\1\u0187\17\147"+
736 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
737 "\14\0\4\147\7\0\10\147\1\u0188\21\147\1\0\3\147"+
738 "\6\0\1\147\4\0\3\147\1\0\1\u0189\2\147\14\0"+
739 "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
740 "\3\147\1\0\3\147\14\0\4\147\7\0\4\147\1\u018a"+
741 "\25\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
742 "\3\147\14\0\4\147\7\0\4\147\1\u018b\25\147\1\0"+
743 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
744 "\4\147\7\0\23\147\1\u018c\6\147\1\0\3\147\6\0"+
745 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
746 "\16\147\1\u018d\13\147\1\0\3\147\6\0\1\147\4\0"+
747 "\3\147\1\0\3\147\14\0\4\147\7\0\7\147\1\u018e"+
748 "\22\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
749 "\3\147\14\0\4\147\7\0\11\147\1\u018f\20\147\1\0"+
750 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
751 "\4\147\7\0\7\147\1\u0190\22\147\1\0\3\147\6\0"+
752 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
753 "\14\147\1\u0191\15\147\1\0\3\147\6\0\1\147\4\0"+
754 "\3\147\1\0\3\147\14\0\4\147\7\0\17\147\1\u0192"+
755 "\12\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
756 "\3\147\14\0\4\147\7\0\15\147\1\u0193\14\147\1\0"+
757 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
758 "\4\147\7\0\12\147\1\u0194\17\147\1\0\3\147\6\0"+
759 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
760 "\7\147\1\u0195\22\147\1\0\3\147\6\0\1\147\4\0"+
761 "\3\147\1\0\3\147\14\0\4\147\7\0\16\147\1\u0196"+
762 "\13\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
763 "\3\147\14\0\4\147\7\0\1\u0197\31\147\1\0\3\147"+
764 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
765 "\7\0\24\147\1\u0198\5\147\1\0\3\147\6\0\1\147"+
766 "\44\0\1\u0199\46\0\3\147\1\0\3\147\14\0\4\147"+
767 "\7\0\2\147\1\u019a\27\147\1\0\3\147\6\0\1\147"+
768 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
769 "\1\u019b\22\147\1\0\3\147\6\0\1\147\24\0\1\u019c"+
770 "\133\0\1\u019d\106\0\1\u019e\101\0\1\u019f\106\0\1\u01a0"+
771 "\104\0\1\u01a1\70\0\1\u01a2\65\0\11\u016b\2\u01a3\1\u01a4"+
772 "\13\u016b\1\u01a3\1\u01a5\56\u016b\11\u012e\2\357\1\76\13\u012e"+
773 "\1\357\57\u012e\11\233\2\357\1\76\13\233\1\357\3\233"+
774 "\1\357\53\233\3\u016d\1\u01a6\1\u01a7\1\u016d\1\u01a8\1\u01a9"+
775 "\1\u016d\2\357\1\76\13\u016d\1\357\34\u016d\1\u01a6\1\u016d"+
776 "\1\u01a9\1\u01a6\17\u016d\1\0\3\u01aa\3\0\1\u01aa\36\0"+
777 "\2\u01aa\3\0\1\u01aa\1\0\1\u01aa\1\0\1\u01aa\2\0"+
778 "\1\u01aa\1\0\4\u01aa\2\0\1\u01aa\1\0\1\u01aa\12\0"+
779 "\11\256\2\125\1\126\13\256\1\125\4\256\1\u01ab\4\256"+
780 "\1\u01ac\45\256\11\u0172\2\u01ad\1\u01ae\13\u0172\1\u01ad\57\u0172"+
781 "\11\256\2\125\1\126\13\256\1\125\12\256\1\u01af\55\256"+
782 "\2\125\1\126\13\256\1\125\23\256\1\u01b0\40\256\1\u01b1"+
783 "\3\256\2\125\1\126\13\256\1\125\57\256\1\0\3\147"+
784 "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01b2\6\147"+
785 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
786 "\14\0\4\147\7\0\3\147\1\u01b3\26\147\1\0\3\147"+
787 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
788 "\7\0\14\147\1\u01b4\15\147\1\0\3\147\6\0\1\147"+
789 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\7\147"+
790 "\1\u01b5\22\147\1\0\3\147\6\0\1\147\4\0\3\147"+
791 "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01b6\6\147"+
792 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
793 "\14\0\4\147\7\0\17\147\1\u01b7\12\147\1\0\3\147"+
794 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
795 "\7\0\7\147\1\u01b8\22\147\1\0\3\147\6\0\1\147"+
796 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\u01b9"+
797 "\31\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
798 "\3\147\14\0\4\147\7\0\15\147\1\u01ba\14\147\1\0"+
799 "\3\147\6\0\1\147\5\0\1\u01bb\2\0\2\u01bb\1\0"+
800 "\1\u017f\7\0\1\u01bc\3\0\1\u01bb\1\0\1\u017f\10\0"+
801 "\25\u01bb\4\0\1\u01bb\1\0\3\u01bb\6\0\1\u01bb\4\0"+
802 "\1\147\1\u01bb\1\147\1\0\2\u01bb\1\147\1\u017f\7\0"+
803 "\1\u01bc\3\0\1\u01bb\1\147\1\u0180\1\147\7\0\25\u01bb"+
804 "\4\147\1\u01bb\1\0\3\u01bb\6\0\1\u01bb\4\0\3\147"+
805 "\1\0\3\147\14\0\4\147\7\0\23\147\1\u01bd\6\147"+
806 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
807 "\14\0\4\147\7\0\4\147\1\u01be\25\147\1\0\3\147"+
808 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
809 "\7\0\12\147\1\u01bf\17\147\1\0\3\147\6\0\1\147"+
810 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\5\147"+
811 "\1\u01c0\24\147\1\0\3\147\6\0\1\147\4\0\3\147"+
812 "\1\0\3\147\14\0\4\147\7\0\1\u01c1\31\147\1\0"+
813 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
814 "\4\147\7\0\2\147\1\u01c2\27\147\1\0\3\147\6\0"+
815 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
816 "\14\147\1\u01c3\15\147\1\0\3\147\6\0\1\147\4\0"+
817 "\3\147\1\0\3\147\14\0\4\147\7\0\1\u01c4\31\147"+
818 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
819 "\14\0\4\147\7\0\14\147\1\u01c5\15\147\1\0\3\147"+
820 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
821 "\7\0\3\147\1\u01c6\26\147\1\0\3\147\6\0\1\147"+
822 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
823 "\1\u01c7\25\147\1\0\3\147\6\0\1\147\4\0\3\147"+
824 "\1\0\3\147\14\0\4\147\7\0\17\147\1\u01c8\12\147"+
825 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
826 "\14\0\4\147\7\0\20\147\1\u01c9\11\147\1\0\3\147"+
827 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
828 "\7\0\4\147\1\u01ca\25\147\1\0\3\147\6\0\1\147"+
829 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\1\147"+
830 "\1\u01cb\30\147\1\0\3\147\6\0\1\147\4\0\3\147"+
831 "\1\0\3\147\1\u01cc\13\0\2\147\1\u01cd\1\147\7\0"+
832 "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
833 "\3\147\14\0\4\147\7\0\7\147\1\u01ce\22\147\1\0"+
834 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
835 "\4\147\7\0\4\147\1\u01cf\25\147\1\0\3\147\6\0"+
836 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
837 "\21\147\1\u01d0\10\147\1\0\3\147\6\0\1\147\4\0"+
838 "\3\147\1\0\3\147\14\0\4\147\7\0\16\147\1\u01d1"+
839 "\13\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
840 "\3\147\14\0\4\147\7\0\7\147\1\u01d2\22\147\1\0"+
841 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\1\337"+
842 "\13\0\2\147\1\340\1\147\7\0\15\147\1\u01d3\14\147"+
843 "\1\0\3\147\6\0\1\147\24\0\1\u01d4\130\0\1\u01d5"+
844 "\106\0\1\u01d6\111\0\1\u01d7\101\0\1\u01d8\106\0\1\u01d9"+
845 "\66\0\1\u01da\65\0\13\u01a3\1\u01a4\14\u01a3\1\u01db\1\u01dc"+
846 "\1\u01dd\1\u01de\1\u016b\1\u01a3\1\u016b\50\u01a3\30\u01a4\1\u01df"+
847 "\1\u01e0\1\u01e1\1\u01e2\1\232\1\u01a4\1\232\50\u01a4\11\u016b"+
848 "\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\1\357\55\u016b\3\233"+
849 "\1\u016d\3\233\1\u016d\1\233\2\357\1\76\13\233\1\357"+
850 "\3\233\1\357\30\233\1\u016d\1\233\2\u016d\23\233\1\u01e3"+
851 "\1\233\1\u01e4\2\233\2\357\1\76\13\233\1\357\3\233"+
852 "\1\357\54\233\3\u01e5\3\233\1\u01e5\1\233\2\357\1\76"+
853 "\13\233\1\357\3\233\1\357\12\233\2\u01e5\3\233\1\u01e5"+
854 "\1\233\1\u01e5\1\233\1\u01e5\2\233\1\u01e5\1\233\4\u01e5"+
855 "\2\233\1\u01e5\1\233\1\u01e5\15\233\1\u01a6\3\233\1\u01a6"+
856 "\1\233\2\357\1\76\13\233\1\357\3\233\1\357\30\233"+
857 "\1\u01a6\1\233\2\u01a6\17\233\1\0\3\235\3\0\1\235"+
858 "\36\0\2\235\3\0\1\235\1\0\1\235\1\0\1\235"+
859 "\2\0\1\235\1\0\4\235\2\0\1\235\1\0\1\235"+
860 "\12\0\11\u01ab\2\u01e6\1\u01e7\13\u01ab\1\u01e6\57\u01ab\11\256"+
861 "\2\125\1\126\13\256\1\125\12\256\1\u01e8\55\256\2\125"+
862 "\1\126\13\256\1\125\13\256\1\u01e9\54\256\2\125\1\126"+
863 "\13\256\1\125\21\256\1\u01ea\46\256\2\125\1\126\13\256"+
864 "\1\125\11\256\1\u01eb\45\256\1\0\3\147\1\0\3\147"+
865 "\14\0\4\147\7\0\7\147\1\u01ec\22\147\1\0\3\147"+
866 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
867 "\7\0\4\147\1\u01ed\25\147\1\0\3\147\6\0\1\147"+
868 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\22\147"+
869 "\1\u01ee\7\147\1\0\3\147\6\0\1\147\4\0\3\147"+
870 "\1\0\3\147\14\0\4\147\7\0\4\147\1\u01ef\25\147"+
871 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
872 "\14\0\4\147\7\0\7\147\1\u01f0\22\147\1\0\3\147"+
873 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
874 "\7\0\7\147\1\u01f1\22\147\1\0\3\147\6\0\1\147"+
875 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\16\147"+
876 "\1\u01f2\13\147\1\0\3\147\6\0\1\147\4\0\3\147"+
877 "\1\0\1\u01f3\2\147\14\0\4\147\7\0\32\147\1\0"+
878 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\1\u01f4"+
879 "\13\0\2\147\1\u01f5\1\147\7\0\32\147\1\0\3\147"+
880 "\6\0\1\147\4\0\3\u01bb\1\0\3\u01bb\1\u01f6\3\0"+
881 "\1\u01f7\1\0\1\u01f8\1\0\1\u01f9\3\0\4\u01bb\7\0"+
882 "\32\u01bb\1\0\3\u01bb\6\0\1\u01bb\4\0\3\u01fa\1\0"+
883 "\4\u01fa\3\0\2\u01fa\2\0\10\u01fa\7\0\32\u01fa\1\0"+
884 "\3\u01fa\6\0\1\u01fa\4\0\3\147\1\0\3\147\14\0"+
885 "\4\147\7\0\15\147\1\u01fb\14\147\1\0\3\147\6\0"+
886 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
887 "\5\147\1\u01fc\24\147\1\0\3\147\6\0\1\147\4\0"+
888 "\3\147\1\0\3\147\14\0\4\147\6\0\1\151\32\147"+
889 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
890 "\14\0\4\147\7\0\15\147\1\u01fd\14\147\1\0\3\147"+
891 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
892 "\7\0\5\147\1\u01fe\24\147\1\0\3\147\6\0\1\147"+
893 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\3\147"+
894 "\1\u01ff\26\147\1\0\3\147\6\0\1\147\4\0\3\147"+
895 "\1\0\3\147\14\0\4\147\7\0\16\147\1\u0200\13\147"+
896 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
897 "\14\0\4\147\7\0\13\147\1\u0201\16\147\1\0\3\147"+
898 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
899 "\7\0\12\147\1\u0202\17\147\1\0\3\147\6\0\1\147"+
900 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
901 "\1\u0203\25\147\1\0\3\147\6\0\1\147\4\0\3\147"+
902 "\1\0\3\147\1\u0204\13\0\2\147\1\u0205\1\147\7\0"+
903 "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
904 "\1\147\1\u0206\1\147\14\0\4\147\7\0\32\147\1\0"+
905 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
906 "\4\147\7\0\24\147\1\u0207\5\147\1\0\3\147\6\0"+
907 "\1\147\5\0\1\u0208\2\0\2\u0208\1\0\1\u01cc\13\0"+
908 "\1\u0208\1\0\1\u01cc\10\0\25\u0208\4\0\1\u0208\1\0"+
909 "\3\u0208\6\0\1\u0208\4\0\1\147\1\u0208\1\147\1\0"+
910 "\2\u0208\1\147\1\u01cc\13\0\1\u0208\1\147\1\u01cd\1\147"+
911 "\7\0\25\u0208\4\147\1\u0208\1\0\3\u0208\6\0\1\u0208"+
912 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\15\147"+
913 "\1\u0209\14\147\1\0\3\147\6\0\1\147\4\0\3\147"+
914 "\1\0\3\147\1\u020a\13\0\2\147\1\u020b\1\147\7\0"+
915 "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
916 "\3\147\1\334\13\0\2\147\1\335\1\147\7\0\15\147"+
917 "\1\u020c\14\147\1\0\3\147\6\0\1\147\13\0\4\u01d4"+
918 "\12\0\2\u01d4\6\0\1\u020d\125\0\1\u020e\106\0\1\u020f"+
919 "\74\0\1\u0210\111\0\1\u0211\145\0\1\u0212\11\0\4\u0213"+
920 "\12\0\2\u0213\57\0\13\u01a3\1\u01a4\14\u01a3\1\u01db\1\u0214"+
921 "\1\u01dd\1\u01de\1\u016b\1\u01a3\1\u016b\63\u01a3\1\u01a4\14\u01a3"+
922 "\1\u0215\1\u016b\55\u01a3\4\u01dd\1\u0216\4\u01dd\2\u01a3\1\u01a4"+
923 "\13\u01dd\1\u01a3\1\u0217\1\u01dd\1\u01a3\54\u01dd\4\u0218\1\u0219"+
924 "\4\u0218\2\u01a3\1\u01a4\13\u0218\1\u01a3\1\u021a\2\u0218\1\u016b"+
925 "\53\u0218\30\u01a4\1\u01df\1\u021b\1\u01e1\1\u01e2\1\232\1\u01a4"+
926 "\1\232\100\u01a4\1\u021c\1\u016b\55\u01a4\4\u01e1\1\u021d\4\u01e1"+
927 "\3\232\13\u01e1\1\232\1\u021e\1\u01e1\1\u01a4\54\u01e1\4\u021f"+
928 "\1\u0220\4\u021f\3\232\13\u021f\1\232\1\u0221\2\u021f\1\232"+
929 "\53\u021f\4\233\1\u01e3\1\233\1\u01e4\2\233\2\357\1\76"+
930 "\13\233\1\357\60\233\3\u01e5\3\233\1\u01e5\1\233\2\357"+
931 "\1\76\13\233\1\357\16\233\2\u01e5\3\233\1\u01e5\1\233"+
932 "\1\u01e5\1\233\1\u01e5\2\233\1\u01e5\1\233\4\u01e5\2\233"+
933 "\1\u01e5\1\233\1\u01e5\13\233\3\u0222\3\233\1\u0222\1\233"+
934 "\2\357\1\76\13\233\1\357\16\233\2\u0222\3\233\1\u0222"+
935 "\1\233\1\u0222\1\233\1\u0222\2\233\1\u0222\1\233\4\u0222"+
936 "\2\233\1\u0222\1\233\1\u0222\12\233\11\256\2\125\1\126"+
937 "\13\256\1\125\13\256\1\u0223\54\256\2\125\1\126\13\256"+
938 "\1\125\14\256\1\u0224\53\256\2\125\1\126\13\256\1\125"+
939 "\4\256\1\u0225\63\256\2\125\1\126\13\256\1\125\12\256"+
940 "\1\u0226\44\256\1\0\3\147\1\0\3\147\14\0\4\147"+
941 "\7\0\5\147\1\u0227\24\147\1\0\3\147\6\0\1\147"+
942 "\4\0\3\147\1\0\3\147\1\u0228\13\0\2\147\1\u0228"+
943 "\1\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
944 "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u0229"+
945 "\30\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
946 "\3\147\14\0\4\147\7\0\14\147\1\u022a\15\147\1\0"+
947 "\3\147\6\0\1\147\3\0\2\u022b\1\u022c\2\u022b\2\u022c"+
948 "\1\u022b\1\u01f4\3\0\10\u022b\1\u022c\1\u022b\1\u01f4\1\0"+
949 "\7\u022b\25\u022c\4\u022b\1\u022c\1\u022b\3\u022c\6\u022b\1\u022c"+
950 "\4\u022b\1\u022d\1\u022c\1\u022d\1\u022b\2\u022c\1\u022d\1\u01f4"+
951 "\3\0\10\u022b\1\u022c\1\u022d\1\u01f5\1\147\7\u022b\25\u022c"+
952 "\4\u022d\1\u022c\1\u022b\3\u022c\6\u022b\1\u022c\3\u022b\10\0"+
953 "\1\u01f6\3\0\1\u01f7\1\0\1\u01f8\1\0\1\u01f9\5\0"+
954 "\1\u01f6\62\0\1\u01bb\2\0\2\u01bb\1\0\1\u01f7\13\0"+
955 "\1\u01bb\1\0\1\u01f7\10\0\25\u01bb\4\0\1\u01bb\1\0"+
956 "\3\u01bb\6\0\1\u01bb\13\0\1\u01f8\6\0\1\u022e\6\0"+
957 "\1\u01f8\61\0\3\u022f\1\0\4\u022f\3\0\2\u022f\2\0"+
958 "\10\u022f\7\0\32\u022f\1\0\3\u022f\6\0\1\u022f\4\0"+
959 "\3\u01fa\1\0\4\u01fa\3\0\2\u01fa\2\0\1\u01fa\1\u0230"+
960 "\6\u01fa\7\0\32\u01fa\1\0\3\u01fa\6\0\1\u01fa\4\0"+
961 "\3\147\1\0\3\147\1\u0231\13\0\2\147\1\u0232\1\147"+
962 "\7\0\32\147\1\0\3\147\6\0\1\147\4\0\3\147"+
963 "\1\0\3\147\14\0\4\147\7\0\6\147\1\u0233\23\147"+
964 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
965 "\14\0\4\147\7\0\7\147\1\u0234\22\147\1\0\3\147"+
966 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
967 "\7\0\1\147\1\u0235\30\147\1\0\3\147\6\0\1\147"+
968 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\4\147"+
969 "\1\u0236\25\147\1\0\3\147\6\0\1\147\4\0\3\147"+
970 "\1\0\3\147\14\0\4\147\7\0\2\147\1\u0237\27\147"+
971 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
972 "\14\0\4\147\7\0\14\147\1\u0238\15\147\1\0\3\147"+
973 "\6\0\1\147\4\0\3\147\1\0\3\147\14\0\4\147"+
974 "\7\0\5\147\1\u0239\24\147\1\0\3\147\6\0\1\147"+
975 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\5\147"+
976 "\1\u023a\24\147\1\0\3\147\6\0\1\147\3\0\2\u023b"+
977 "\1\u023c\2\u023b\2\u023c\1\u023b\1\u0204\3\0\10\u023b\1\u023c"+
978 "\1\u023b\1\u0204\1\0\7\u023b\25\u023c\4\u023b\1\u023c\1\u023b"+
979 "\3\u023c\6\u023b\1\u023c\4\u023b\1\u023d\1\u023c\1\u023d\1\u023b"+
980 "\2\u023c\1\u023d\1\u0204\3\0\10\u023b\1\u023c\1\u023d\1\u0205"+
981 "\1\147\7\u023b\25\u023c\4\u023d\1\u023c\1\u023b\3\u023c\6\u023b"+
982 "\1\u023c\3\u023b\1\0\3\147\1\0\3\147\14\0\4\147"+
983 "\7\0\24\147\1\u023e\5\147\1\0\3\147\6\0\1\147"+
984 "\4\0\3\147\1\0\3\147\1\u023f\13\0\2\147\1\u0240"+
985 "\1\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
986 "\3\u0208\1\0\3\u0208\1\u0241\7\0\1\u0242\3\0\4\u0208"+
987 "\7\0\32\u0208\1\0\3\u0208\6\0\1\u0208\4\0\3\147"+
988 "\1\0\3\147\14\0\4\147\7\0\15\147\1\u0243\14\147"+
989 "\1\0\3\147\6\0\1\147\3\0\1\u0244\1\u0245\1\u0244"+
990 "\1\u0245\3\u0244\1\u0245\1\u020a\3\0\12\u0244\1\u020a\1\0"+
991 "\34\u0244\4\u0245\20\u0244\1\u0246\1\u0247\1\u0246\1\u0244\2\u0247"+
992 "\1\u0246\1\u020a\3\0\10\u0244\2\u0247\1\u020b\1\147\7\u0244"+
993 "\25\u0247\4\u0246\1\u0247\1\u0244\3\u0247\6\u0244\1\u0247\3\u0244"+
994 "\53\0\1\u0248\106\0\1\u0249\140\0\1\u024a\44\0\1\u024b"+
995 "\62\0\1\u024c\77\0\4\u0213\12\0\2\u0213\6\0\1\u024d"+
996 "\50\0\13\357\1\76\14\357\1\u01a3\1\u012d\1\u024e\1\u024f"+
997 "\53\357\11\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\1\u01a3"+
998 "\55\u016b\11\u01dd\2\u01a3\1\u01a4\13\u01dd\1\u01a3\1\u0217\62\u01dd"+
999 "\1\u0216\4\u01dd\2\u01a3\1\u01a4\13\u01dd\1\u01a3\1\u0217\1\u024e"+
1000 "\1\u01a3\54\u01dd\11\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5"+
1001 "\2\u016b\1\u01a3\53\u016b\3\u0218\1\u0250\1\u0251\1\u0218\1\u0252"+
1002 "\1\u0253\1\u0218\2\u01a3\1\u01a4\13\u0218\1\u01a3\1\u021a\33\u0218"+
1003 "\1\u0250\1\u0218\1\u0253\1\u0250\17\u0218\11\u016b\2\u01a3\1\u01a4"+
1004 "\13\u016b\1\u01a3\1\u01a5\1\357\1\u016b\1\u01a3\53\u016b\30\76"+
1005 "\1\u01a4\1\u012d\1\u0254\1\u0255\53\76\30\232\1\356\1\u01a4"+
1006 "\55\232\11\u01e1\3\232\13\u01e1\1\232\1\u021e\62\u01e1\1\u021d"+
1007 "\4\u01e1\3\232\13\u01e1\1\232\1\u021e\1\u0254\1\u01a4\54\u01e1"+
1008 "\30\232\1\356\2\232\1\u01a4\53\232\3\u021f\1\u0256\1\u0257"+
1009 "\1\u021f\1\u0258\1\u0259\1\u021f\3\232\13\u021f\1\232\1\u0221"+
1010 "\33\u021f\1\u0256\1\u021f\1\u0259\1\u0256\17\u021f\30\232\1\356"+
1011 "\1\76\1\232\1\u01a4\53\232\1\233\3\u025a\3\233\1\u025a"+
1012 "\1\233\2\357\1\76\13\233\1\357\16\233\2\u025a\3\233"+
1013 "\1\u025a\1\233\1\u025a\1\233\1\u025a\2\233\1\u025a\1\233"+
1014 "\4\u025a\2\233\1\u025a\1\233\1\u025a\12\233\11\256\2\125"+
1015 "\1\126\13\256\1\125\14\256\1\u025b\53\256\2\125\1\126"+
1016 "\13\256\1\125\15\256\1\u025c\41\256\11\u0225\2\u025d\1\u025e"+
1017 "\13\u0225\1\u025d\57\u0225\11\256\2\125\1\126\13\256\1\125"+
1018 "\13\256\1\u025f\43\256\1\0\3\147\1\0\3\147\14\0"+
1019 "\4\147\7\0\6\147\1\u0260\23\147\1\0\3\147\6\0"+
1020 "\1\147\3\0\13\u0228\1\0\73\u0228\1\0\3\147\1\0"+
1021 "\3\147\14\0\4\147\7\0\2\147\1\u0261\27\147\1\0"+
1022 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
1023 "\4\147\7\0\15\147\1\u0262\14\147\1\0\3\147\6\0"+
1024 "\1\147\3\0\11\u022b\3\0\13\u022b\1\0\60\u022b\3\u022c"+
1025 "\1\u022b\3\u022c\1\u0263\3\0\2\u01f4\6\u022b\3\u022c\1\u0264"+
1026 "\7\u022b\32\u022c\1\u022b\3\u022c\6\u022b\1\u022c\4\u022b\3\u022d"+
1027 "\1\u022b\3\u022d\1\u022b\3\0\10\u022b\3\u022d\1\147\7\u022b"+
1028 "\32\u022d\1\u022b\3\u022d\6\u022b\1\u022d\3\u022b\10\0\1\u022e"+
1029 "\5\0\1\u01f8\7\0\1\u022e\61\0\3\u022f\1\0\4\u022f"+
1030 "\3\0\2\u022f\2\0\1\u022f\1\u0265\6\u022f\7\0\32\u022f"+
1031 "\1\0\3\u022f\6\0\1\u022f\4\0\1\u01fa\1\u0266\1\u01fa"+
1032 "\1\0\2\u0266\1\u01fa\1\u0230\3\0\2\u01fa\2\0\1\u01fa"+
1033 "\1\u0230\2\u01fa\1\u0266\1\u01fa\1\u0230\1\u01fa\7\0\25\u0266"+
1034 "\4\u01fa\1\u0266\1\0\3\u0266\6\0\1\u0266\5\0\1\u0267"+
1035 "\2\0\2\u0267\1\0\1\u0231\13\0\1\u0267\1\0\1\u0231"+
1036 "\10\0\25\u0267\4\0\1\u0267\1\0\3\u0267\6\0\1\u0267"+
1037 "\4\0\1\147\1\u0267\1\147\1\0\2\u0267\1\147\1\u0231"+
1038 "\13\0\1\u0267\1\147\1\u0232\1\147\7\0\25\u0267\4\147"+
1039 "\1\u0267\1\0\3\u0267\6\0\1\u0267\4\0\3\147\1\0"+
1040 "\3\147\1\u0268\13\0\2\147\1\u0269\1\147\6\0\1\151"+
1041 "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
1042 "\3\147\1\u026a\13\0\2\147\1\u026b\1\147\7\0\32\147"+
1043 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
1044 "\1\u026c\13\0\2\147\1\u026d\1\147\7\0\32\147\1\0"+
1045 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
1046 "\4\147\7\0\5\147\1\u026e\24\147\1\0\3\147\6\0"+
1047 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
1048 "\2\147\1\u026f\27\147\1\0\3\147\6\0\1\147\4\0"+
1049 "\3\147\1\0\3\147\14\0\4\147\7\0\1\147\1\u0270"+
1050 "\30\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
1051 "\3\147\14\0\4\147\7\0\4\147\1\u0271\25\147\1\0"+
1052 "\3\147\6\0\1\147\3\0\11\u023b\3\0\13\u023b\1\0"+
1053 "\60\u023b\3\u023c\1\u023b\3\u023c\1\u0272\3\0\1\u0204\7\u023b"+
1054 "\3\u023c\1\u0273\7\u023b\32\u023c\1\u023b\3\u023c\6\u023b\1\u023c"+
1055 "\4\u023b\3\u023d\1\u023b\3\u023d\1\u023b\3\0\10\u023b\3\u023d"+
1056 "\1\147\7\u023b\32\u023d\1\u023b\3\u023d\6\u023b\1\u023d\3\u023b"+
1057 "\2\0\1\u0274\2\0\2\u0274\1\0\1\u023f\7\0\1\u0275"+
1058 "\3\0\1\u0274\1\0\1\u023f\10\0\25\u0274\4\0\1\u0274"+
1059 "\1\0\3\u0274\6\0\1\u0274\4\0\1\147\1\u0276\1\147"+
1060 "\1\0\2\u0276\1\147\1\u023f\7\0\1\u0275\3\0\1\u0276"+
1061 "\1\147\1\u0240\1\147\7\0\25\u0276\4\147\1\u0276\1\0"+
1062 "\3\u0276\6\0\1\u0276\13\0\1\u0241\7\0\1\u0242\5\0"+
1063 "\1\u0241\61\0\3\u0277\1\0\4\u0277\3\0\2\u0277\2\0"+
1064 "\10\u0277\7\0\32\u0277\1\0\3\u0277\6\0\1\u0277\3\0"+
1065 "\11\u0244\3\0\13\u0244\1\0\60\u0244\1\u0245\1\u0244\1\u0245"+
1066 "\3\u0244\1\u0245\1\u0278\3\0\12\u0244\1\u0278\1\0\34\u0244"+
1067 "\4\u0245\20\u0244\1\u0246\1\u0247\1\u0246\1\u0244\2\u0247\1\u0246"+
1068 "\1\u0278\3\0\10\u0244\2\u0247\1\u0279\1\147\7\u0244\25\u0247"+
1069 "\4\u0246\1\u0247\1\u0244\3\u0247\6\u0244\1\u0247\4\u0244\3\u0247"+
1070 "\1\u0244\3\u0247\1\u0244\3\0\10\u0244\3\u0247\1\147\7\u0244"+
1071 "\32\u0247\1\u0244\3\u0247\6\u0244\1\u0247\3\u0244\54\0\1\u027a"+
1072 "\106\0\1\u027b\51\0\1\u027c\151\0\1\u027d\22\0\1\u027e"+
1073 "\1\0\4\u024e\1\u027f\4\u024e\2\357\1\76\13\u024e\1\357"+
1074 "\1\u024e\1\u0280\1\u024e\1\u0281\1\u012e\1\u024e\1\u012e\50\u024e"+
1075 "\4\u0282\1\u0283\4\u0282\2\357\1\76\13\u0282\1\357\1\u0282"+
1076 "\1\u012d\1\u0284\1\u012f\1\u016d\1\u0282\1\u016d\50\u0282\3\u016b"+
1077 "\1\u0218\3\u016b\1\u0218\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3"+
1078 "\1\u01a5\2\u016b\1\u01a3\30\u016b\1\u0218\1\u016b\2\u0218\23\u016b"+
1079 "\1\u0285\1\u016b\1\u0286\2\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3"+
1080 "\1\u01a5\2\u016b\1\u01a3\54\u016b\3\u0287\3\u016b\1\u0287\1\u016b"+
1081 "\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\2\u016b\1\u01a3\12\u016b"+
1082 "\2\u0287\3\u016b\1\u0287\1\u016b\1\u0287\1\u016b\1\u0287\2\u016b"+
1083 "\1\u0287\1\u016b\4\u0287\2\u016b\1\u0287\1\u016b\1\u0287\15\u016b"+
1084 "\1\u0250\3\u016b\1\u0250\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3"+
1085 "\1\u01a5\2\u016b\1\u01a3\30\u016b\1\u0250\1\u016b\2\u0250\17\u016b"+
1086 "\4\u0254\1\u0288\4\u0254\3\76\13\u0254\1\76\1\u0254\1\u0289"+
1087 "\1\u0254\1\u028a\1\230\1\u0254\1\230\50\u0254\4\u028b\1\u028c"+
1088 "\4\u028b\3\76\13\u028b\1\76\1\u028b\1\227\1\u028d\1\231"+
1089 "\1\235\1\u028b\1\235\50\u028b\3\232\1\u021f\3\232\1\u021f"+
1090 "\20\232\1\356\2\232\1\u01a4\30\232\1\u021f\1\232\2\u021f"+
1091 "\23\232\1\u028e\1\232\1\u028f\21\232\1\356\2\232\1\u01a4"+
1092 "\54\232\3\u0290\3\232\1\u0290\20\232\1\356\2\232\1\u01a4"+
1093 "\12\232\2\u0290\3\232\1\u0290\1\232\1\u0290\1\232\1\u0290"+
1094 "\2\232\1\u0290\1\232\4\u0290\2\232\1\u0290\1\232\1\u0290"+
1095 "\15\232\1\u0256\3\232\1\u0256\20\232\1\356\2\232\1\u01a4"+
1096 "\30\232\1\u0256\1\232\2\u0256\17\232\1\233\3\u016d\3\233"+
1097 "\1\u016d\1\233\2\357\1\76\13\233\1\357\16\233\2\u016d"+
1098 "\3\233\1\u016d\1\233\1\u016d\1\233\1\u016d\2\233\1\u016d"+
1099 "\1\233\4\u016d\2\233\1\u016d\1\233\1\u016d\12\233\11\256"+
1100 "\2\125\1\126\13\256\1\125\15\256\1\u0291\52\256\2\125"+
1101 "\1\126\13\256\1\125\4\256\1\u0292\63\256\2\125\1\126"+
1102 "\13\256\1\125\14\256\1\u0293\42\256\1\0\3\147\1\0"+
1103 "\3\147\1\u0294\13\0\2\147\1\u0295\1\147\6\0\1\151"+
1104 "\32\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
1105 "\3\147\14\0\4\147\7\0\15\147\1\u0296\14\147\1\0"+
1106 "\3\147\6\0\1\147\4\0\3\147\1\0\3\147\14\0"+
1107 "\4\147\7\0\7\147\1\u0243\22\147\1\0\3\147\6\0"+
1108 "\1\147\3\0\10\u022b\1\u0263\3\0\2\u01f4\10\u022b\1\u0263"+
1109 "\1\0\57\u022b\1\0\3\u0264\1\0\3\u0264\1\u0297\3\0"+
1110 "\2\u0298\6\0\4\u0264\7\0\32\u0264\1\0\3\u0264\6\0"+
1111 "\1\u0264\4\0\3\u022f\1\0\3\u022f\1\u0265\3\0\2\u022f"+
1112 "\1\u01f8\1\0\1\u022f\1\u0265\4\u022f\1\u0265\1\u022f\7\0"+
1113 "\32\u022f\1\0\3\u022f\6\0\1\u022f\4\0\3\u0266\1\0"+
1114 "\3\u0266\1\u0299\3\0\1\u0230\1\u01fa\1\u01f8\1\0\1\u029a"+
1115 "\1\u0230\2\u01fa\4\u0266\7\0\32\u0266\1\0\3\u0266\6\0"+
1116 "\1\u0266\4\0\3\u0267\1\0\3\u0267\1\u029b\3\0\1\u0231"+
1117 "\3\0\1\u029c\3\0\4\u0267\7\0\32\u0267\1\0\3\u0267"+
1118 "\6\0\1\u0267\3\0\2\u029d\1\u029e\2\u029d\2\u029e\1\u029d"+
1119 "\1\u0268\3\0\10\u029d\1\u029e\1\u029d\1\u0268\1\0\7\u029d"+
1120 "\25\u029e\4\u029d\1\u029e\1\u029d\3\u029e\6\u029d\1\u029e\4\u029d"+
1121 "\1\u029f\1\u029e\1\u029f\1\u029d\2\u029e\1\u029f\1\u0268\3\0"+
1122 "\10\u029d\1\u029e\1\u029f\1\u0269\1\147\7\u029d\25\u029e\4\u029f"+
1123 "\1\u029e\1\u029d\3\u029e\6\u029d\1\u029e\3\u029d\10\0\1\u026a"+
1124 "\15\0\1\u026a\12\0\1\u02a0\5\0\1\u02a1\40\0\3\147"+
1125 "\1\0\3\147\1\u026a\13\0\2\147\1\u026b\1\147\7\0"+
1126 "\2\147\1\u02a2\5\147\1\u02a3\21\147\1\0\3\147\6\0"+
1127 "\1\147\5\0\1\u02a4\2\0\2\u02a4\1\0\1\u026c\13\0"+
1128 "\1\u02a4\1\0\1\u026c\10\0\25\u02a4\4\0\1\u02a4\1\0"+
1129 "\3\u02a4\6\0\1\u02a4\4\0\1\147\1\u02a4\1\147\1\0"+
1130 "\2\u02a4\1\147\1\u026c\13\0\1\u02a4\1\147\1\u026d\1\147"+
1131 "\7\0\25\u02a4\4\147\1\u02a4\1\0\3\u02a4\6\0\1\u02a4"+
1132 "\4\0\3\147\1\0\3\147\14\0\4\147\7\0\6\147"+
1133 "\1\u02a5\23\147\1\0\3\147\6\0\1\147\4\0\3\147"+
1134 "\1\0\3\147\14\0\4\147\7\0\7\147\1\u02a6\22\147"+
1135 "\1\0\3\147\6\0\1\147\4\0\3\147\1\0\3\147"+
1136 "\14\0\4\147\7\0\7\147\1\u02a7\22\147\1\0\3\147"+
1137 "\6\0\1\147\4\0\3\147\1\0\3\147\1\u02a8\13\0"+
1138 "\2\147\1\u02a9\1\147\7\0\32\147\1\0\3\147\6\0"+
1139 "\1\147\3\0\10\u023b\1\u0272\3\0\1\u0204\11\u023b\1\u0272"+
1140 "\1\0\57\u023b\1\0\3\u0273\1\0\3\u0273\1\u02aa\3\0"+
1141 "\1\u02ab\7\0\4\u0273\7\0\32\u0273\1\0\3\u0273\6\0"+
1142 "\1\u0273\4\0\3\u0274\1\0\3\u0274\1\u02ac\3\0\1\u02ad"+
1143 "\1\0\1\u02ae\1\0\1\u02af\3\0\2\u0274\1\u02b0\1\u0274"+
1144 "\7\0\32\u0274\1\0\3\u0274\6\0\1\u0274\4\0\3\u02b1"+
1145 "\1\0\4\u02b1\3\0\2\u02b1\2\0\10\u02b1\7\0\32\u02b1"+
1146 "\1\0\3\u02b1\6\0\1\u02b1\4\0\3\u0276\1\0\3\u0276"+
1147 "\1\u02ac\3\0\1\u02ad\1\0\1\u02ae\1\0\1\u02af\3\0"+
1148 "\2\u0276\1\u02b2\1\u0276\7\0\32\u0276\1\0\3\u0276\6\0"+
1149 "\1\u0276\4\0\3\u0277\1\0\4\u0277\3\0\2\u0277\2\0"+
1150 "\1\u0277\1\u02b3\6\u0277\7\0\32\u0277\1\0\3\u0277\6\0"+
1151 "\1\u0277\3\0\10\u0244\1\u0278\3\0\12\u0244\1\u0278\1\0"+
1152 "\60\u0244\3\u0247\1\u0244\3\u0247\1\u0278\3\0\10\u0244\2\u0247"+
1153 "\1\u0279\1\147\7\u0244\32\u0247\1\u0244\3\u0247\6\u0244\1\u0247"+
1154 "\3\u0244\46\0\1\u02b4\106\0\1\u02b5\77\0\1\u02b6\66\0"+
1155 "\1\u02b7\67\0\11\u024e\2\357\1\76\13\u024e\1\357\1\u024e"+
1156 "\1\u0280\1\u012e\1\u0281\1\u012e\1\u024e\1\u012e\54\u024e\1\u027f"+
1157 "\4\u024e\2\357\1\76\13\u024e\1\357\1\u01dd\1\u012e\1\357"+
1158 "\54\u024e\4\u0284\1\u02b8\4\u0284\2\357\1\76\13\u0284\1\357"+
1159 "\2\u0284\1\u0282\1\u012e\53\u0284\13\357\1\76\15\357\1\u012d"+
1160 "\1\u012e\1\u024f\1\233\1\357\1\233\50\357\3\u0282\1\u02b9"+
1161 "\1\u02ba\1\u0282\1\u02bb\1\u02bc\1\u0282\2\357\1\76\13\u0282"+
1162 "\1\357\1\u0282\1\u012d\1\u0284\1\u02bd\1\u016d\1\u0282\1\u016d"+
1163 "\25\u0282\1\u02b9\1\u0282\1\u02bc\1\u02b9\17\u0282\4\u012e\1\u016c"+
1164 "\4\u012e\2\357\1\76\13\u012e\1\357\2\u012e\1\357\1\u024e"+
1165 "\53\u012e\4\u016b\1\u0285\1\u016b\1\u0286\2\u016b\2\u01a3\1\u01a4"+
1166 "\13\u016b\1\u01a3\1\u01a5\57\u016b\3\u0287\3\u016b\1\u0287\1\u016b"+
1167 "\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\15\u016b\2\u0287\3\u016b"+
1168 "\1\u0287\1\u016b\1\u0287\1\u016b\1\u0287\2\u016b\1\u0287\1\u016b"+
1169 "\4\u0287\2\u016b\1\u0287\1\u016b\1\u0287\13\u016b\3\u02be\3\u016b"+
1170 "\1\u02be\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\15\u016b"+
1171 "\2\u02be\3\u016b\1\u02be\1\u016b\1\u02be\1\u016b\1\u02be\2\u016b"+
1172 "\1\u02be\1\u016b\4\u02be\2\u016b\1\u02be\1\u016b\1\u02be\12\u016b"+
1173 "\11\u0254\3\76\13\u0254\1\76\1\u0254\1\u0289\1\230\1\u028a"+
1174 "\1\230\1\u0254\1\230\54\u0254\1\u0288\4\u0254\3\76\13\u0254"+
1175 "\1\76\1\u01e1\1\u012e\1\76\54\u0254\4\u028d\1\u02bf\4\u028d"+
1176 "\3\0\13\u028d\1\0\2\u028d\1\u028b\1\230\53\u028d\31\76"+
1177 "\1\227\1\230\1\u0255\1\0\1\76\1\0\50\76\3\u028b"+
1178 "\1\u02c0\1\u02c1\1\u028b\1\u02c2\1\u02c3\1\u028b\3\76\13\u028b"+
1179 "\1\76\1\u028b\1\227\1\u028d\1\u02c4\1\235\1\u028b\1\235"+
1180 "\25\u028b\1\u02c0\1\u028b\1\u02c3\1\u02c0\17\u028b\4\230\1\234"+
1181 "\4\230\3\0\13\230\1\0\2\230\1\76\1\u0254\53\230"+
1182 "\4\232\1\u028e\1\232\1\u028f\21\232\1\356\57\232\3\u0290"+
1183 "\3\232\1\u0290\20\232\1\356\15\232\2\u0290\3\232\1\u0290"+
1184 "\1\232\1\u0290\1\232\1\u0290\2\232\1\u0290\1\232\4\u0290"+
1185 "\2\232\1\u0290\1\232\1\u0290\13\232\3\u02c5\3\232\1\u02c5"+
1186 "\20\232\1\356\15\232\2\u02c5\3\232\1\u02c5\1\232\1\u02c5"+
1187 "\1\232\1\u02c5\2\232\1\u02c5\1\232\4\u02c5\2\232\1\u02c5"+
1188 "\1\232\1\u02c5\12\232\11\256\2\125\1\126\13\256\1\125"+
1189 "\4\256\1\u02c6\52\256\11\u0292\2\u02c7\1\u02c8\13\u0292\1\u02c7"+
1190 "\57\u0292\11\256\2\125\1\126\13\256\1\125\15\256\1\u02c9"+
1191 "\41\256\2\u02ca\1\u02cb\2\u02ca\2\u02cb\1\u02ca\1\u0294\3\0"+
1192 "\10\u02ca\1\u02cb\1\u02ca\1\u0294\1\0\7\u02ca\25\u02cb\4\u02ca"+
1193 "\1\u02cb\1\u02ca\3\u02cb\6\u02ca\1\u02cb\4\u02ca\1\u02cc\1\u02cb"+
1194 "\1\u02cc\1\u02ca\2\u02cb\1\u02cc\1\u0294\3\0\10\u02ca\1\u02cb"+
1195 "\1\u02cc\1\u0295\1\147\7\u02ca\25\u02cb\4\u02cc\1\u02cb\1\u02ca"+
1196 "\3\u02cb\6\u02ca\1\u02cb\3\u02ca\1\0\3\147\1\0\3\147"+
1197 "\1\u02cd\13\0\2\147\1\u02cd\1\147\7\0\32\147\1\0"+
1198 "\3\147\6\0\1\147\13\0\1\u0297\3\0\2\u0298\10\0"+
1199 "\1\u0297\62\0\1\u0264\2\0\2\u0264\1\0\1\u0298\13\0"+
1200 "\1\u0264\1\0\1\u0298\10\0\25\u0264\4\0\1\u0264\1\0"+
1201 "\3\u0264\6\0\1\u0264\4\0\3\u01fa\1\0\3\u01fa\1\u0299"+
1202 "\3\0\1\u0230\1\u01fa\1\u01f8\1\0\1\u029a\1\u0230\4\u01fa"+
1203 "\1\u0299\1\u01fa\7\0\32\u01fa\1\0\3\u01fa\6\0\1\u01fa"+
1204 "\4\0\3\u02ce\1\0\4\u02ce\3\0\2\u02ce\2\0\1\u02ce"+
1205 "\1\u02cf\6\u02ce\7\0\32\u02ce\1\0\3\u02ce\6\0\1\u02ce"+
1206 "\13\0\1\u029b\3\0\1\u0231\3\0\1\u029c\5\0\1\u029b"+
1207 "\61\0\3\u02d0\1\0\4\u02d0\3\0\2\u02d0\2\0\10\u02d0"+
1208 "\7\0\32\u02d0\1\0\3\u02d0\6\0\1\u02d0\3\0\11\u029d"+
1209 "\3\0\13\u029d\1\0\60\u029d\3\u029e\1\u029d\3\u029e\1\u02d1"+
1210 "\3\0\2\u0268\6\u029d\3\u029e\1\u02d2\7\u029d\32\u029e\1\u029d"+
1211 "\3\u029e\6\u029d\1\u029e\4\u029d\3\u029f\1\u029d\3\u029f\1\u029d"+
1212 "\3\0\10\u029d\3\u029f\1\147\7\u029d\32\u029f\1\u029d\3\u029f"+
1213 "\6\u029d\1\u029f\3\u029d\43\0\1\u02d3\116\0\1\u02d4\34\0"+
1214 "\3\147\1\0\3\147\14\0\4\147\7\0\4\147\1\u02d5"+
1215 "\25\147\1\0\3\147\6\0\1\147\4\0\3\147\1\0"+
1216 "\3\147\14\0\4\147\7\0\14\147\1\u02d6\15\147\1\0"+
1217 "\3\147\6\0\1\147\4\0\3\u02a4\1\0\3\u02a4\1\u02d7"+
1218 "\13\0\4\u02a4\7\0\32\u02a4\1\0\3\u02a4\6\0\1\u02a4"+
1219 "\4\0\3\147\1\0\3\147\1\u02d8\13\0\2\147\1\u02d9"+
1220 "\1\147\6\0\1\151\32\147\1\0\3\147\6\0\1\147"+
1221 "\3\0\2\u02da\1\u02db\2\u02da\2\u02db\1\u02da\1\u02a8\3\0"+
1222 "\10\u02da\1\u02db\1\u02da\1\u02a8\1\0\7\u02da\25\u02db\4\u02da"+
1223 "\1\u02db\1\u02da\3\u02db\6\u02da\1\u02db\4\u02da\1\u02dc\1\u02db"+
1224 "\1\u02dc\1\u02da\2\u02db\1\u02dc\1\u02a8\3\0\10\u02da\1\u02db"+
1225 "\1\u02dc\1\u02a9\1\147\7\u02da\25\u02db\4\u02dc\1\u02db\1\u02da"+
1226 "\3\u02db\6\u02da\1\u02db\3\u02da\10\0\1\u02aa\3\0\1\u02ab"+
1227 "\11\0\1\u02aa\62\0\1\u0273\2\0\2\u0273\1\0\1\u02ab"+
1228 "\13\0\1\u0273\1\0\1\u02ab\10\0\25\u0273\4\0\1\u0273"+
1229 "\1\0\3\u0273\6\0\1\u0273\13\0\1\u02ac\3\0\1\u02ad"+
1230 "\1\0\1\u02ae\1\0\1\u02af\5\0\1\u02ac\62\0\1\u0274"+
1231 "\2\0\2\u0274\1\0\1\u02ad\13\0\1\u0274\1\0\1\u02ad"+
1232 "\10\0\25\u0274\4\0\1\u0274\1\0\3\u0274\6\0\1\u0274"+
1233 "\13\0\1\u02ae\6\0\1\u02dd\6\0\1\u02ae\61\0\3\u02de"+
1234 "\1\0\4\u02de\3\0\2\u02de\2\0\10\u02de\7\0\32\u02de"+
1235 "\1\0\3\u02de\6\0\1\u02de\4\0\3\u02b1\1\0\4\u02b1"+
1236 "\3\0\2\u02b1\2\0\1\u02b1\1\u02df\6\u02b1\7\0\32\u02b1"+
1237 "\1\0\3\u02b1\6\0\1\u02b1\4\0\3\u0277\1\0\3\u0277"+
1238 "\1\u02b3\3\0\2\u0277\2\0\1\u0277\1\u02b3\4\u0277\1\u02b3"+
1239 "\1\u0277\7\0\32\u0277\1\0\3\u0277\6\0\1\u0277\110\0"+
1240 "\1\u02e0\106\0\1\u02e1\64\0\1\u02e2\23\0\3\u0284\1\u02e3"+
1241 "\1\u02e4\1\u0284\1\u02e5\1\u02e6\1\u0284\2\357\1\76\13\u0284"+
1242 "\1\357\34\u0284\1\u02e3\1\u0284\1\u02e6\1\u02e3\17\u0284\3\357"+
1243 "\1\u0282\3\357\1\u0282\3\357\1\76\15\357\1\u012d\1\u012e"+
1244 "\1\u024f\1\233\1\357\1\233\25\357\1\u0282\1\357\2\u0282"+
1245 "\23\357\1\u02e7\1\357\1\u02e8\4\357\1\76\15\357\1\u012d"+
1246 "\1\u012e\1\u024f\1\233\1\357\1\233\51\357\3\u02e9\3\357"+
1247 "\1\u02e9\3\357\1\76\15\357\1\u012d\1\u012e\1\u024f\1\233"+
1248 "\1\357\1\233\7\357\2\u02e9\3\357\1\u02e9\1\357\1\u02e9"+
1249 "\1\357\1\u02e9\2\357\1\u02e9\1\357\4\u02e9\2\357\1\u02e9"+
1250 "\1\357\1\u02e9\15\357\1\u02b9\3\357\1\u02b9\3\357\1\76"+
1251 "\15\357\1\u012d\1\u012e\1\u024f\1\233\1\357\1\233\25\357"+
1252 "\1\u02b9\1\357\2\u02b9\17\357\4\u016d\1\u016e\4\u016d\2\357"+
1253 "\1\76\13\u016d\1\357\3\u016d\1\357\53\u016d\1\u016b\3\u02ea"+
1254 "\3\u016b\1\u02ea\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5"+
1255 "\15\u016b\2\u02ea\3\u016b\1\u02ea\1\u016b\1\u02ea\1\u016b\1\u02ea"+
1256 "\2\u016b\1\u02ea\1\u016b\4\u02ea\2\u016b\1\u02ea\1\u016b\1\u02ea"+
1257 "\12\u016b\3\u028d\1\u02eb\1\u02ec\1\u028d\1\u02ed\1\u02ee\1\u028d"+
1258 "\3\0\13\u028d\1\0\34\u028d\1\u02eb\1\u028d\1\u02ee\1\u02eb"+
1259 "\17\u028d\3\76\1\u028b\3\76\1\u028b\21\76\1\227\1\230"+
1260 "\1\u0255\1\0\1\76\1\0\25\76\1\u028b\1\76\2\u028b"+
1261 "\23\76\1\u02ef\1\76\1\u02f0\22\76\1\227\1\230\1\u0255"+
1262 "\1\0\1\76\1\0\51\76\3\u02f1\3\76\1\u02f1\21\76"+
1263 "\1\227\1\230\1\u0255\1\0\1\76\1\0\7\76\2\u02f1"+
1264 "\3\76\1\u02f1\1\76\1\u02f1\1\76\1\u02f1\2\76\1\u02f1"+
1265 "\1\76\4\u02f1\2\76\1\u02f1\1\76\1\u02f1\15\76\1\u02c0"+
1266 "\3\76\1\u02c0\21\76\1\227\1\230\1\u0255\1\0\1\76"+
1267 "\1\0\25\76\1\u02c0\1\76\2\u02c0\17\76\4\235\1\236"+
1268 "\4\235\3\0\13\235\1\0\3\235\1\76\53\235\1\232"+
1269 "\3\u02f2\3\232\1\u02f2\20\232\1\356\15\232\2\u02f2\3\232"+
1270 "\1\u02f2\1\232\1\u02f2\1\232\1\u02f2\2\232\1\u02f2\1\232"+
1271 "\4\u02f2\2\232\1\u02f2\1\232\1\u02f2\12\232\11\u02c6\2\u02f3"+
1272 "\1\u02f4\13\u02c6\1\u02f3\57\u02c6\11\256\2\125\1\126\13\256"+
1273 "\1\125\4\256\1\u02f5\52\256\11\u02ca\3\0\13\u02ca\1\0"+
1274 "\60\u02ca\3\u02cb\1\u02ca\3\u02cb\1\u02f6\3\0\2\u0294\6\u02ca"+
1275 "\3\u02cb\1\u02f7\7\u02ca\32\u02cb\1\u02ca\3\u02cb\6\u02ca\1\u02cb"+
1276 "\4\u02ca\3\u02cc\1\u02ca\3\u02cc\1\u02ca\3\0\10\u02ca\3\u02cc"+
1277 "\1\147\7\u02ca\32\u02cc\1\u02ca\3\u02cc\6\u02ca\1\u02cc\3\u02ca"+
1278 "\13\u02cd\1\0\73\u02cd\1\0\3\u02ce\1\0\4\u02ce\3\0"+
1279 "\2\u02ce\2\0\1\u02ce\1\u02f8\6\u02ce\7\0\32\u02ce\1\0"+
1280 "\3\u02ce\6\0\1\u02ce\4\0\1\u02ce\1\u02f9\1\u02ce\1\0"+
1281 "\2\u02f9\1\u02ce\1\u02cf\3\0\2\u02ce\2\0\1\u02ce\1\u02f8"+
1282 "\2\u02ce\1\u02f9\1\u02ce\1\u02cf\1\u02ce\7\0\25\u02f9\4\u02ce"+
1283 "\1\u02f9\1\0\3\u02f9\6\0\1\u02f9\4\0\3\u02d0\1\0"+
1284 "\4\u02d0\3\0\2\u02d0\2\0\1\u02d0\1\u02fa\6\u02d0\7\0"+
1285 "\32\u02d0\1\0\3\u02d0\6\0\1\u02d0\3\0\10\u029d\1\u02d1"+
1286 "\3\0\2\u0268\10\u029d\1\u02d1\1\0\57\u029d\1\0\3\u02d2"+
1287 "\1\0\3\u02d2\1\u02fb\3\0\2\u02fc\6\0\4\u02d2\7\0"+
1288 "\32\u02d2\1\0\3\u02d2\6\0\1\u02d2\11\0\1\u02fd\151\0"+
1289 "\1\u02fe\36\0\3\147\1\0\1\147\1\u02ff\1\147\14\0"+
1290 "\4\147\7\0\32\147\1\0\3\147\6\0\1\147\4\0"+
1291 "\3\147\1\0\3\147\14\0\4\147\7\0\12\147\1\u0300"+
1292 "\17\147\1\0\3\147\6\0\1\147\13\0\1\u02d7\15\0"+
1293 "\1\u02d7\60\0\2\u0301\1\u0302\2\u0301\2\u0302\1\u0301\1\u02d8"+
1294 "\3\0\10\u0301\1\u0302\1\u0301\1\u02d8\1\0\7\u0301\25\u0302"+
1295 "\4\u0301\1\u0302\1\u0301\3\u0302\6\u0301\1\u0302\4\u0301\1\u0303"+
1296 "\1\u0302\1\u0303\1\u0301\2\u0302\1\u0303\1\u02d8\3\0\10\u0301"+
1297 "\1\u0302\1\u0303\1\u02d9\1\147\7\u0301\25\u0302\4\u0303\1\u0302"+
1298 "\1\u0301\3\u0302\6\u0301\1\u0302\3\u0301\11\u02da\3\0\13\u02da"+
1299 "\1\0\60\u02da\3\u02db\1\u02da\3\u02db\1\u0304\3\0\1\u02a8"+
1300 "\7\u02da\3\u02db\1\u0305\7\u02da\32\u02db\1\u02da\3\u02db\6\u02da"+
1301 "\1\u02db\4\u02da\3\u02dc\1\u02da\3\u02dc\1\u02da\3\0\10\u02da"+
1302 "\3\u02dc\1\147\7\u02da\32\u02dc\1\u02da\3\u02dc\6\u02da\1\u02dc"+
1303 "\3\u02da\10\0\1\u0306\5\0\1\u02ae\7\0\1\u0306\61\0"+
1304 "\3\u02de\1\0\4\u02de\3\0\2\u02de\2\0\1\u02de\1\u0307"+
1305 "\6\u02de\7\0\32\u02de\1\0\3\u02de\6\0\1\u02de\4\0"+
1306 "\1\u02b1\1\u0308\1\u02b1\1\0\2\u0308\1\u02b1\1\u02df\3\0"+
1307 "\2\u02b1\2\0\1\u02b1\1\u02df\2\u02b1\1\u0308\1\u02b1\1\u02df"+
1308 "\1\u02b1\7\0\25\u0308\4\u02b1\1\u0308\1\0\3\u0308\6\0"+
1309 "\1\u0308\22\0\1\u0309\106\0\1\u030a\126\0\1\u030b\47\0"+
1310 "\3\u012e\1\u0284\1\u016c\2\u012e\1\u0284\1\u012e\2\357\1\76"+
1311 "\13\u012e\1\357\2\u012e\1\357\1\u024e\30\u012e\1\u0284\1\u012e"+
1312 "\2\u0284\23\u012e\1\u030c\1\u012e\1\u030d\2\u012e\2\357\1\76"+
1313 "\13\u012e\1\357\2\u012e\1\357\1\u024e\54\u012e\3\u030e\1\u016c"+
1314 "\2\u012e\1\u030e\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e"+
1315 "\1\357\1\u024e\12\u012e\2\u030e\3\u012e\1\u030e\1\u012e\1\u030e"+
1316 "\1\u012e\1\u030e\2\u012e\1\u030e\1\u012e\4\u030e\2\u012e\1\u030e"+
1317 "\1\u012e\1\u030e\15\u012e\1\u02e3\1\u016c\2\u012e\1\u02e3\1\u012e"+
1318 "\2\357\1\76\13\u012e\1\357\2\u012e\1\357\1\u024e\30\u012e"+
1319 "\1\u02e3\1\u012e\2\u02e3\17\u012e\4\357\1\u02e7\1\357\1\u02e8"+
1320 "\4\357\1\76\15\357\1\u012d\1\u012e\1\u012f\1\233\1\357"+
1321 "\1\233\51\357\3\u02e9\3\357\1\u02e9\3\357\1\76\15\357"+
1322 "\1\u012d\1\u012e\1\u012f\1\233\1\357\1\233\7\357\2\u02e9"+
1323 "\3\357\1\u02e9\1\357\1\u02e9\1\357\1\u02e9\2\357\1\u02e9"+
1324 "\1\357\4\u02e9\2\357\1\u02e9\1\357\1\u02e9\13\357\3\u030f"+
1325 "\3\357\1\u030f\3\357\1\76\15\357\1\u012d\1\u012e\1\u012f"+
1326 "\1\233\1\357\1\233\7\357\2\u030f\3\357\1\u030f\1\357"+
1327 "\1\u030f\1\357\1\u030f\2\357\1\u030f\1\357\4\u030f\2\357"+
1328 "\1\u030f\1\357\1\u030f\12\357\1\u016b\3\u0218\3\u016b\1\u0218"+
1329 "\1\u016b\2\u01a3\1\u01a4\13\u016b\1\u01a3\1\u01a5\15\u016b\2\u0218"+
1330 "\3\u016b\1\u0218\1\u016b\1\u0218\1\u016b\1\u0218\2\u016b\1\u0218"+
1331 "\1\u016b\4\u0218\2\u016b\1\u0218\1\u016b\1\u0218\12\u016b\3\230"+
1332 "\1\u028d\1\234\2\230\1\u028d\1\230\3\0\13\230\1\0"+
1333 "\2\230\1\76\1\u0254\30\230\1\u028d\1\230\2\u028d\23\230"+
1334 "\1\u0310\1\230\1\u0311\2\230\3\0\13\230\1\0\2\230"+
1335 "\1\76\1\u0254\54\230\3\u0312\1\234\2\230\1\u0312\1\230"+
1336 "\3\0\13\230\1\0\2\230\1\76\1\u0254\12\230\2\u0312"+
1337 "\3\230\1\u0312\1\230\1\u0312\1\230\1\u0312\2\230\1\u0312"+
1338 "\1\230\4\u0312\2\230\1\u0312\1\230\1\u0312\15\230\1\u02eb"+
1339 "\1\234\2\230\1\u02eb\1\230\3\0\13\230\1\0\2\230"+
1340 "\1\76\1\u0254\30\230\1\u02eb\1\230\2\u02eb\17\230\4\76"+
1341 "\1\u02ef\1\76\1\u02f0\22\76\1\227\1\230\1\231\1\0"+
1342 "\1\76\1\0\51\76\3\u02f1\3\76\1\u02f1\21\76\1\227"+
1343 "\1\230\1\231\1\0\1\76\1\0\7\76\2\u02f1\3\76"+
1344 "\1\u02f1\1\76\1\u02f1\1\76\1\u02f1\2\76\1\u02f1\1\76"+
1345 "\4\u02f1\2\76\1\u02f1\1\76\1\u02f1\13\76\3\u0313\3\76"+
1346 "\1\u0313\21\76\1\227\1\230\1\231\1\0\1\76\1\0"+
1347 "\7\76\2\u0313\3\76\1\u0313\1\76\1\u0313\1\76\1\u0313"+
1348 "\2\76\1\u0313\1\76\4\u0313\2\76\1\u0313\1\76\1\u0313"+
1349 "\12\76\1\232\3\u021f\3\232\1\u021f\20\232\1\356\15\232"+
1350 "\2\u021f\3\232\1\u021f\1\232\1\u021f\1\232\1\u021f\2\232"+
1351 "\1\u021f\1\232\4\u021f\2\232\1\u021f\1\232\1\u021f\12\232"+
1352 "\11\u02f5\2\u0314\1\u0315\13\u02f5\1\u0314\57\u02f5\10\u02ca\1\u02f6"+
1353 "\3\0\2\u0294\10\u02ca\1\u02f6\1\0\57\u02ca\1\0\3\u02f7"+
1354 "\1\0\3\u02f7\1\u0316\3\0\2\u0317\6\0\4\u02f7\7\0"+
1355 "\32\u02f7\1\0\3\u02f7\6\0\1\u02f7\4\0\1\u02ce\1\u02f9"+
1356 "\1\u02ce\1\0\2\u02f9\1\u02ce\1\u02f8\3\0\2\u02ce\1\u01f8"+
1357 "\1\0\1\u02ce\1\u02f8\2\u02ce\1\u02f9\1\u02ce\1\u02f8\1\u02ce"+
1358 "\7\0\25\u02f9\4\u02ce\1\u02f9\1\0\3\u02f9\6\0\1\u02f9"+
1359 "\4\0\3\u02f9\1\0\3\u02f9\1\u0318\3\0\1\u02cf\1\u02ce"+
1360 "\1\u01f8\1\0\1\u02ce\1\u02f8\2\u02ce\4\u02f9\7\0\32\u02f9"+
1361 "\1\0\3\u02f9\6\0\1\u02f9\4\0\3\u02d0\1\0\3\u02d0"+
1362 "\1\u02fa\3\0\2\u02d0\2\0\1\u02d0\1\u02fa\4\u02d0\1\u02fa"+
1363 "\1\u02d0\7\0\32\u02d0\1\0\3\u02d0\6\0\1\u02d0\13\0"+
1364 "\1\u02fb\3\0\2\u02fc\10\0\1\u02fb\62\0\1\u02d2\2\0"+
1365 "\2\u02d2\1\0\1\u02fc\13\0\1\u02d2\1\0\1\u02fc\10\0"+
1366 "\25\u02d2\4\0\1\u02d2\1\0\3\u02d2\6\0\1\u02d2\51\0"+
1367 "\1\u0319\114\0\1\u031a\33\0\3\147\1\0\3\147\14\0"+
1368 "\4\147\7\0\7\147\1\u031b\22\147\1\0\3\147\6\0"+
1369 "\1\147\4\0\3\147\1\0\3\147\14\0\4\147\7\0"+
1370 "\15\147\1\u031c\14\147\1\0\3\147\6\0\1\147\3\0"+
1371 "\11\u0301\3\0\13\u0301\1\0\60\u0301\3\u0302\1\u0301\3\u0302"+
1372 "\1\u031d\3\0\2\u02d8\6\u0301\3\u0302\1\u031e\7\u0301\32\u0302"+
1373 "\1\u0301\3\u0302\6\u0301\1\u0302\4\u0301\3\u0303\1\u0301\3\u0303"+
1374 "\1\u0301\3\0\10\u0301\3\u0303\1\147\7\u0301\32\u0303\1\u0301"+
1375 "\3\u0303\6\u0301\1\u0303\3\u0301\10\u02da\1\u0304\3\0\1\u02a8"+
1376 "\11\u02da\1\u0304\1\0\57\u02da\1\0\3\u0305\1\0\3\u0305"+
1377 "\1\u031f\3\0\1\u0320\7\0\4\u0305\7\0\32\u0305\1\0"+
1378 "\3\u0305\6\0\1\u0305\4\0\3\u02de\1\0\3\u02de\1\u0321"+
1379 "\3\0\2\u02de\1\u02ae\1\0\1\u02de\1\u0307\4\u02de\1\u0321"+
1380 "\1\u02de\7\0\32\u02de\1\0\3\u02de\6\0\1\u02de\4\0"+
1381 "\3\u0308\1\0\3\u0308\1\u0322\3\0\1\u02df\1\u02b1\1\u02ae"+
1382 "\1\0\1\u0323\1\u02df\2\u02b1\2\u0308\1\u0324\1\u0308\7\0"+
1383 "\32\u0308\1\0\3\u0308\6\0\1\u0308\44\0\1\u0325\45\0"+
1384 "\4\u012e\1\u0326\1\u012e\1\u030d\2\u012e\2\357\1\76\13\u012e"+
1385 "\1\357\60\u012e\3\u030e\1\u016c\2\u012e\1\u030e\1\u012e\2\357"+
1386 "\1\76\13\u012e\1\357\2\u012e\1\357\13\u012e\2\u030e\3\u012e"+
1387 "\1\u030e\1\u012e\1\u030e\1\u012e\1\u030e\2\u012e\1\u030e\1\u012e"+
1388 "\4\u030e\2\u012e\1\u030e\1\u012e\1\u030e\13\u012e\3\u0327\1\u016c"+
1389 "\2\u012e\1\u0327\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e"+
1390 "\1\357\13\u012e\2\u0327\3\u012e\1\u0327\1\u012e\1\u0327\1\u012e"+
1391 "\1\u0327\2\u012e\1\u0327\1\u012e\4\u0327\2\u012e\1\u0327\1\u012e"+
1392 "\1\u0327\12\u012e\1\357\3\u0328\3\357\1\u0328\3\357\1\76"+
1393 "\15\357\1\u012d\1\u012e\1\u012f\1\233\1\357\1\233\7\357"+
1394 "\2\u0328\3\357\1\u0328\1\357\1\u0328\1\357\1\u0328\2\357"+
1395 "\1\u0328\1\357\4\u0328\2\357\1\u0328\1\357\1\u0328\12\357"+
1396 "\4\230\1\u0329\1\230\1\u0311\2\230\3\0\13\230\1\0"+
1397 "\60\230\3\u0312\1\234\2\230\1\u0312\1\230\3\0\13\230"+
1398 "\1\0\2\230\1\76\13\230\2\u0312\3\230\1\u0312\1\230"+
1399 "\1\u0312\1\230\1\u0312\2\230\1\u0312\1\230\4\u0312\2\230"+
1400 "\1\u0312\1\230\1\u0312\13\230\3\u032a\1\234\2\230\1\u032a"+
1401 "\1\230\3\0\13\230\1\0\2\230\1\76\13\230\2\u032a"+
1402 "\3\230\1\u032a\1\230\1\u032a\1\230\1\u032a\2\230\1\u032a"+
1403 "\1\230\4\u032a\2\230\1\u032a\1\230\1\u032a\12\230\1\76"+
1404 "\3\u032b\3\76\1\u032b\21\76\1\227\1\230\1\231\1\0"+
1405 "\1\76\1\0\7\76\2\u032b\3\76\1\u032b\1\76\1\u032b"+
1406 "\1\76\1\u032b\2\76\1\u032b\1\76\4\u032b\2\76\1\u032b"+
1407 "\1\76\1\u032b\12\76\10\0\1\u0316\3\0\2\u0317\10\0"+
1408 "\1\u0316\62\0\1\u02f7\2\0\2\u02f7\1\0\1\u0317\13\0"+
1409 "\1\u02f7\1\0\1\u0317\10\0\25\u02f7\4\0\1\u02f7\1\0"+
1410 "\3\u02f7\6\0\1\u02f7\4\0\3\u02ce\1\0\3\u02ce\1\u0318"+
1411 "\3\0\1\u02cf\1\u02ce\1\u01f8\1\0\1\u02ce\1\u02f8\4\u02ce"+
1412 "\1\u0318\1\u02ce\7\0\32\u02ce\1\0\3\u02ce\6\0\1\u02ce"+
1413 "\51\0\1\u032c\41\0\3\147\1\0\3\147\14\0\4\147"+
1414 "\7\0\7\147\1\u032d\22\147\1\0\3\147\6\0\1\147"+
1415 "\3\0\10\u0301\1\u031d\3\0\2\u02d8\10\u0301\1\u031d\1\0"+
1416 "\57\u0301\1\0\3\u031e\1\0\3\u031e\1\u032e\3\0\2\u032f"+
1417 "\6\0\4\u031e\7\0\32\u031e\1\0\3\u031e\6\0\1\u031e"+
1418 "\13\0\1\u031f\3\0\1\u0320\11\0\1\u031f\62\0\1\u0305"+
1419 "\2\0\2\u0305\1\0\1\u0320\13\0\1\u0305\1\0\1\u0320"+
1420 "\10\0\25\u0305\4\0\1\u0305\1\0\3\u0305\6\0\1\u0305"+
1421 "\4\0\3\u02b1\1\0\3\u02b1\1\u0322\3\0\1\u02df\1\u02b1"+
1422 "\1\u02ae\1\0\1\u0323\1\u02df\4\u02b1\1\u0322\1\u02b1\7\0"+
1423 "\32\u02b1\1\0\3\u02b1\6\0\1\u02b1\4\0\3\u0330\1\0"+
1424 "\4\u0330\3\0\2\u0330\2\0\1\u0330\1\u0331\6\u0330\7\0"+
1425 "\32\u0330\1\0\3\u0330\6\0\1\u0330\110\0\1\u0332\1\0"+
1426 "\4\u012e\1\u030c\1\u012e\1\u030d\2\u012e\2\357\1\76\13\u012e"+
1427 "\1\357\2\u012e\1\357\55\u012e\3\u0333\1\u016c\2\u012e\1\u0333"+
1428 "\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e\1\357\13\u012e"+
1429 "\2\u0333\3\u012e\1\u0333\1\u012e\1\u0333\1\u012e\1\u0333\2\u012e"+
1430 "\1\u0333\1\u012e\4\u0333\2\u012e\1\u0333\1\u012e\1\u0333\12\u012e"+
1431 "\1\357\3\u0282\3\357\1\u0282\3\357\1\76\15\357\1\u012d"+
1432 "\1\u012e\1\u012f\1\233\1\357\1\233\7\357\2\u0282\3\357"+
1433 "\1\u0282\1\357\1\u0282\1\357\1\u0282\2\357\1\u0282\1\357"+
1434 "\4\u0282\2\357\1\u0282\1\357\1\u0282\12\357\4\230\1\u0310"+
1435 "\1\230\1\u0311\2\230\3\0\13\230\1\0\2\230\1\76"+
1436 "\55\230\3\u0334\1\234\2\230\1\u0334\1\230\3\0\13\230"+
1437 "\1\0\2\230\1\76\13\230\2\u0334\3\230\1\u0334\1\230"+
1438 "\1\u0334\1\230\1\u0334\2\230\1\u0334\1\230\4\u0334\2\230"+
1439 "\1\u0334\1\230\1\u0334\12\230\1\76\3\u028b\3\76\1\u028b"+
1440 "\21\76\1\227\1\230\1\231\1\0\1\76\1\0\7\76"+
1441 "\2\u028b\3\76\1\u028b\1\76\1\u028b\1\76\1\u028b\2\76"+
1442 "\1\u028b\1\76\4\u028b\2\76\1\u028b\1\76\1\u028b\12\76"+
1443 "\10\0\1\u032e\3\0\2\u032f\10\0\1\u032e\62\0\1\u031e"+
1444 "\2\0\2\u031e\1\0\1\u032f\13\0\1\u031e\1\0\1\u032f"+
1445 "\10\0\25\u031e\4\0\1\u031e\1\0\3\u031e\6\0\1\u031e"+
1446 "\4\0\3\u0330\1\0\4\u0330\3\0\2\u0330\2\0\1\u0330"+
1447 "\1\u0335\6\u0330\7\0\32\u0330\1\0\3\u0330\6\0\1\u0330"+
1448 "\4\0\1\u0330\1\u0336\1\u0330\1\0\2\u0336\1\u0330\1\u0331"+
1449 "\3\0\2\u0330\2\0\1\u0330\1\u0335\2\u0330\1\u0336\1\u0330"+
1450 "\1\u0331\1\u0330\7\0\25\u0336\4\u0330\1\u0336\1\0\3\u0336"+
1451 "\6\0\1\u0336\22\0\1\u0337\67\0\1\u012e\3\u0284\1\u016c"+
1452 "\2\u012e\1\u0284\1\u012e\2\357\1\76\13\u012e\1\357\2\u012e"+
1453 "\1\357\13\u012e\2\u0284\3\u012e\1\u0284\1\u012e\1\u0284\1\u012e"+
1454 "\1\u0284\2\u012e\1\u0284\1\u012e\4\u0284\2\u012e\1\u0284\1\u012e"+
1455 "\1\u0284\12\u012e\1\230\3\u028d\1\234\2\230\1\u028d\1\230"+
1456 "\3\0\13\230\1\0\2\230\1\76\13\230\2\u028d\3\230"+
1457 "\1\u028d\1\230\1\u028d\1\230\1\u028d\2\230\1\u028d\1\230"+
1458 "\4\u028d\2\230\1\u028d\1\230\1\u028d\12\230\1\0\1\u0330"+
1459 "\1\u0336\1\u0330\1\0\2\u0336\1\u0330\1\u0338\3\0\2\u0330"+
1460 "\1\u02ae\1\0\1\u0330\1\u0335\2\u0330\1\u0336\1\u0330\1\u0338"+
1461 "\1\u0330\7\0\25\u0336\4\u0330\1\u0336\1\0\3\u0336\6\0"+
1462 "\1\u0336\4\0\3\u0336\1\0\3\u0336\1\u0339\3\0\1\u0331"+
1463 "\1\u0330\1\u02ae\1\0\1\u0330\1\u0335\2\u0330\2\u0336\1\u033a"+
1464 "\1\u0336\7\0\32\u0336\1\0\3\u0336\6\0\1\u0336\4\0"+
1465 "\3\u0330\1\0\3\u0330\1\u0339\3\0\1\u0331\1\u0330\1\u02ae"+
1466 "\1\0\1\u0330\1\u0335\4\u0330\1\u0339\1\u0330\7\0\32\u0330"+
1467 "\1\0\3\u0330\6\0\1\u0330\3\0";
1468
1469 private static int [] zzUnpackTrans() {
1470 int [] result = new int[48777];
1471 int offset = 0;
1472 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
1473 return result;
1474 }
1475
1476 private static int zzUnpackTrans(String packed, int offset, int [] result) {
1477 int i = 0; /* index in packed string */
1478 int j = offset; /* index in unpacked array */
1479 int l = packed.length();
1480 while (i < l) {
1481 int count = packed.charAt(i++);
1482 int value = packed.charAt(i++);
1483 value--;
1484 do result[j++] = value; while (--count > 0);
1485 }
1486 return j;
1487 }
1488
1489
1490 /* error codes */
1491 private static final int ZZ_UNKNOWN_ERROR = 0;
1492 private static final int ZZ_NO_MATCH = 1;
1493 private static final int ZZ_PUSHBACK_2BIG = 2;
1494
1495 /* error messages for the codes above */
1496 private static final String ZZ_ERROR_MSG[] = {
1497 "Unkown internal scanner error",
1498 "Error: could not match input",
1499 "Error: pushback value was too large"
1500 };
1501
1502 /**
1503 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
1504 */
1505 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
1506
1507 private static final String ZZ_ATTRIBUTE_PACKED_0 =
1508 "\2\1\15\0\2\1\1\11\4\1\1\11\2\1\1\11"+
1509 "\15\1\2\11\4\1\1\11\2\1\2\11\1\1\1\11"+
1510 "\2\1\7\11\4\1\2\11\1\1\1\11\3\1\1\11"+
1511 "\1\1\1\11\3\1\2\11\1\1\1\11\3\1\1\11"+
1512 "\1\1\1\11\1\1\1\11\1\1\1\11\2\1\3\0"+
1513 "\2\11\1\0\1\11\1\0\2\1\1\0\15\1\3\0"+
1514 "\1\11\3\1\2\0\1\11\1\1\1\11\4\1\5\11"+
1515 "\1\0\1\1\2\0\1\11\1\1\3\0\1\11\1\1"+
1516 "\10\0\1\11\4\1\6\11\3\0\1\11\5\0\1\1"+
1517 "\1\0\1\1\1\11\1\1\1\11\2\1\1\11\35\1"+
1518 "\3\0\6\1\1\0\1\11\1\0\1\1\6\0\2\11"+
1519 "\1\0\1\1\4\0\1\11\1\0\1\1\1\11\1\1"+
1520 "\1\11\3\0\42\1\3\0\2\1\1\0\1\11\1\1"+
1521 "\14\0\1\11\1\1\3\0\46\1\2\11\1\0\2\1"+
1522 "\1\0\1\1\13\0\1\1\5\0\11\1\1\0\31\1"+
1523 "\1\11\2\1\7\0\2\1\10\0\1\1\1\11\3\0"+
1524 "\12\1\1\0\17\1\1\0\7\1\6\0\2\1\3\0"+
1525 "\1\1\6\0\1\1\1\11\4\0\13\1\4\0\22\1"+
1526 "\1\11\6\0\1\1\6\0\1\1\13\0\10\1\3\0"+
1527 "\15\1\1\0\2\1\1\0\5\1\4\0\2\11\2\1"+
1528 "\4\0\2\1\7\0\1\1\1\11\1\0\12\1\1\0"+
1529 "\1\1\1\0\7\1\2\0\1\1\1\0\2\1\2\0"+
1530 "\1\11\2\0\1\1\2\0\2\1\4\0\1\1\2\0"+
1531 "\2\1\7\0\4\1\1\0\1\1\1\0\1\1\1\0"+
1532 "\3\1\2\0\11\1\1\0\1\1\3\0\1\1\1\0"+
1533 "\2\1\3\0\1\11\1\0\4\1\3\0\4\1\3\0"+
1534 "\1\1\1\11\1\0\4\1\3\0\2\1\2\0\10\1"+
1535 "\12\0\3\1\5\0\3\1\1\0\1\1\1\11\1\0"+
1536 "\6\1\3\0\10\1\2\0\2\11\4\0\1\1\3\0"+
1537 "\2\1\1\11\1\1\1\0\1\1\1\11\1\0\5\1"+
1538 "\1\0\2\1\1\0\1\1\3\0\1\1\2\0\1\1"+
1539 "\1\11\2\1\10\0\1\11\3\1";
1540
1541 private static int [] zzUnpackAttribute() {
1542 int [] result = new int[826];
1543 int offset = 0;
1544 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
1545 return result;
1546 }
1547
1548 private static int zzUnpackAttribute(String packed, int offset, int [] result) {
1549 int i = 0; /* index in packed string */
1550 int j = offset; /* index in unpacked array */
1551 int l = packed.length();
1552 while (i < l) {
1553 int count = packed.charAt(i++);
1554 int value = packed.charAt(i++);
1555 do result[j++] = value; while (--count > 0);
1556 }
1557 return j;
1558 }
1559
1560 /** the input device */
1561 private java.io.Reader zzReader;
1562
1563 /** the current state of the DFA */
1564 private int zzState;
1565
1566 /** the current lexical state */
1567 private int zzLexicalState = YYINITIAL;
1568
1569 /** this buffer contains the current text to be matched and is
1570 the source of the yytext() string */
1571 private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
1572
1573 /** the textposition at the last accepting state */
1574 private int zzMarkedPos;
1575
1576 /** the current text position in the buffer */
1577 private int zzCurrentPos;
1578
1579 /** startRead marks the beginning of the yytext() string in the buffer */
1580 private int zzStartRead;
1581
1582 /** endRead marks the last character in the buffer, that has been read
1583 from input */
1584 private int zzEndRead;
1585
1586 /** number of newlines encountered up to the start of the matched text */
1587 private int yyline;
1588
1589 /** the number of characters up to the start of the matched text */
1590 private int yychar;
1591
1592 /**
1593 * the number of characters from the last newline up to the start of the
1594 * matched text
1595 */
1596 private int yycolumn;
1597
1598 /**
1599 * zzAtBOL == true <=> the scanner is currently at the beginning of a line
1600 */
1601 private boolean zzAtBOL = true;
1602
1603 /** zzAtEOF == true <=> the scanner is at the EOF */
1604 private boolean zzAtEOF;
1605
1606 /** denotes if the user-EOF-code has already been executed */
1607 private boolean zzEOFDone;
1608
1609 /** the stack of open (nested) input streams to read from */
1610 private java.util.Stack zzStreams = new java.util.Stack();
1611
1612 /**
1613 * inner class used to store info for nested
1614 * input streams
1615 */
1616 private static final class ZzFlexStreamInfo {
1617 java.io.Reader zzReader;
1618 int zzEndRead;
1619 int zzStartRead;
1620 int zzCurrentPos;
1621 int zzMarkedPos;
1622 int yyline;
1623 int yycolumn;
1624 char [] zzBuffer;
1625 boolean zzAtEOF;
1626 boolean zzEOFDone;
1627
1628 /** sets all values stored in this class */
1629 ZzFlexStreamInfo(java.io.Reader zzReader, int zzEndRead, int zzStartRead,
1630 int zzCurrentPos, int zzMarkedPos,
1631 char [] zzBuffer, boolean zzAtEOF, int yyline, int yycolumn) {
1632 this.zzReader = zzReader;
1633 this.zzEndRead = zzEndRead;
1634 this.zzStartRead = zzStartRead;
1635 this.zzCurrentPos = zzCurrentPos;
1636 this.zzMarkedPos = zzMarkedPos;
1637 this.zzBuffer = zzBuffer;
1638 this.zzAtEOF = zzAtEOF;
1639 this.zzEOFDone = zzEOFDone;
1640 this.yyline = yyline;
1641 this.yycolumn = yycolumn;
1642 }
1643 }
1644
1645 /* user code: */
1646 int balance = 0;
1647 int commentbalance = 0;
1648 int action_line = 0;
1649 int bufferSize = 16384;
1650
1651 File file;
1652 Stack files = new Stack();
1653
1654 StringBuffer userCode = new StringBuffer();
1655
1656 String classCode;
1657 String initCode;
1658 String initThrow;
1659 String eofCode;
1660 String eofThrow;
1661 String lexThrow;
1662 String eofVal;
1663 String scanErrorException;
1664 String cupSymbol = "sym";
1665
1666 StringBuffer actionText = new StringBuffer();
1667 StringBuffer string = new StringBuffer();
1668
1669 boolean charCount;
1670 boolean lineCount;
1671 boolean columnCount;
1672 boolean cupCompatible;
1673 boolean cupDebug;
1674 boolean isInteger;
1675 boolean isIntWrap;
1676 boolean isYYEOF;
1677 boolean notUnix;
1678 boolean isPublic;
1679 boolean isFinal;
1680 boolean isAbstract;
1681 boolean bolUsed;
1682 boolean standalone;
1683 boolean debugOption;
1684 boolean useRowMap = Options.gen_method == Options.PACK || Options.gen_method == Options.TABLE;
1685 boolean packed = Options.gen_method == Options.PACK;
1686 boolean caseless;
1687 boolean inclusive_states;
1688 boolean eofclose;
1689
1690 String isImplementing;
1691 String isExtending;
1692 String className = "Yylex";
1693 String functionName;
1694 String tokenType;
1695 String visibility = "public";
1696
1697 Vector /* String */ ctorArgs = new Vector();
1698 Vector /* String */ ctorTypes = new Vector();
1699
1700 LexicalStates states = new LexicalStates();
1701
1702 Vector actions = new Vector();
1703
1704 private int nextState;
1705
1706 boolean macroDefinition;
1707
1708 Timer t = new Timer();
1709
1710 public int currentLine() {
1711 return yyline;
1712 }
1713
1714 public void setFile(File file) {
1715 this.file = file;
1716 }
1717
1718 private Symbol symbol(int type, Object value) {
1719 return new Symbol(type, yyline, yycolumn, value);
1720 }
1721
1722 private Symbol symbol(int type) {
1723 return new Symbol(type, yyline, yycolumn);
1724 }
1725
1726 // updates line and column count to the beginning of the first
1727 // non whitespace character in yytext, but leaves yyline+yycolumn
1728 // untouched
1729 private Symbol symbol_countUpdate(int type, Object value) {
1730 int lc = yyline;
1731 int cc = yycolumn;
1732 String text = yytext();
1733
1734 for (int i=0; i < text.length(); i++) {
1735 char c = text.charAt(i);
1736
1737 if (c != '\n' && c != '\r' && c != ' ' && c != '\t' )
1738 return new Symbol(type, lc, cc, value);
1739
1740 if (c == '\n') {
1741 lc++;
1742 cc = 0;
1743 }
1744 else
1745 cc++;
1746 }
1747
1748 return new Symbol(type, yyline, yycolumn, value);
1749 }
1750
1751 private String makeMacroIdent() {
1752 String matched = yytext().trim();
1753 return matched.substring(1, matched.length()-1).trim();
1754 }
1755
1756 public static String conc(Object a, Object b) {
1757 if (a == null && b == null) return null;
1758 if (a == null) return b.toString();
1759 if (b == null) return a.toString();
1760
1761 return a.toString()+b.toString();
1762 }
1763
1764 public static String concExc(Object a, Object b) {
1765 if (a == null && b == null) return null;
1766 if (a == null) return b.toString();
1767 if (b == null) return a.toString();
1768
1769 return a.toString()+", "+b.toString();
1770 }
1771
1772
1773 /**
1774 * Creates a new scanner
1775 * There is also a java.io.InputStream version of this constructor.
1776 *
1777 * @param in the java.io.Reader to read input from.
1778 */
1779 public LexScan(java.io.Reader in) {
1780 states.insert("YYINITIAL", true);
1781 this.zzReader = in;
1782 }
1783
1784 /**
1785 * Creates a new scanner.
1786 * There is also java.io.Reader version of this constructor.
1787 *
1788 * @param in the java.io.Inputstream to read input from.
1789 */
1790 public LexScan(java.io.InputStream in) {
1791 this(new java.io.InputStreamReader(in));
1792 }
1793
1794 /**
1795 * Unpacks the compressed character translation table.
1796 *
1797 * @param packed the packed character translation table
1798 * @return the unpacked character translation table
1799 */
1800 private static char [] zzUnpackCMap(String packed) {
1801 char [] map = new char[0x10000];
1802 int i = 0; /* index in packed string */
1803 int j = 0; /* index in unpacked array */
1804 while (i < 1788) {
1805 int count = packed.charAt(i++);
1806 char value = packed.charAt(i++);
1807 do map[j++] = value; while (--count > 0);
1808 }
1809 return map;
1810 }
1811
1812
1813 /**
1814 * Refills the input buffer.
1815 *
1816 * @return <code>false</code>, iff there was new input.
1817 *
1818 * @exception java.io.IOException if any I/O-Error occurs
1819 */
1820 private boolean zzRefill() throws java.io.IOException {
1821
1822 /* first: make room (if you can) */
1823 if (zzStartRead > 0) {
1824 System.arraycopy(zzBuffer, zzStartRead,
1825 zzBuffer, 0,
1826 zzEndRead-zzStartRead);
1827
1828 /* translate stored positions */
1829 zzEndRead-= zzStartRead;
1830 zzCurrentPos-= zzStartRead;
1831 zzMarkedPos-= zzStartRead;
1832 zzStartRead = 0;
1833 }
1834
1835 /* is the buffer big enough? */
1836 if (zzCurrentPos >= zzBuffer.length) {
1837 /* if not: blow it up */
1838 char newBuffer[] = new char[zzCurrentPos*2];
1839 System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
1840 zzBuffer = newBuffer;
1841 }
1842
1843 /* finally: fill the buffer with new input */
1844 int numRead = zzReader.read(zzBuffer, zzEndRead,
1845 zzBuffer.length-zzEndRead);
1846
1847 if (numRead > 0) {
1848 zzEndRead+= numRead;
1849 return false;
1850 }
1851 // unlikely but not impossible: read 0 characters, but not at end of stream
1852 if (numRead == 0) {
1853 int c = zzReader.read();
1854 if (c == -1) {
1855 return true;
1856 } else {
1857 zzBuffer[zzEndRead++] = (char) c;
1858 return false;
1859 }
1860 }
1861
1862 // numRead < 0)
1863 return true;
1864 }
1865
1866
1867 /**
1868 * Closes the input stream.
1869 */
1870 public final void yyclose() throws java.io.IOException {
1871 zzAtEOF = true; /* indicate end of file */
1872 zzEndRead = zzStartRead; /* invalidate buffer */
1873
1874 if (zzReader != null)
1875 zzReader.close();
1876 }
1877
1878
1879 /**
1880 * Stores the current input stream on a stack, and
1881 * reads from a new stream. Lexical state, line,
1882 * char, and column counting remain untouched.
1883 *
1884 * The current input stream can be restored with
1885 * yypopstream (usually in an <<EOF>> action).
1886 *
1887 * @param reader the new input stream to read from
1888 *
1889 * @see #yypopStream()
1890 */
1891 public final void yypushStream(java.io.Reader reader) {
1892 zzStreams.push(
1893 new ZzFlexStreamInfo(zzReader, zzEndRead, zzStartRead, zzCurrentPos,
1894 zzMarkedPos, zzBuffer, zzAtEOF,
1895 yyline, yycolumn)
1896 );
1897 zzAtEOF = false;
1898 zzBuffer = new char[ZZ_BUFFERSIZE];
1899 zzReader = reader;
1900 zzEndRead = zzStartRead = 0;
1901 zzCurrentPos = zzMarkedPos = 0;
1902 yyline = yycolumn = 0;
1903 }
1904
1905
1906 /**
1907 * Closes the current input stream and continues to
1908 * read from the one on top of the stream stack.
1909 *
1910 * @throws java.util.EmptyStackException
1911 * if there is no further stream to read from.
1912 *
1913 * @throws java.io.IOException
1914 * if there was an error in closing the stream.
1915 *
1916 * @see #yypushStream(java.io.Reader)
1917 */
1918 public final void yypopStream() throws java.io.IOException {
1919 zzReader.close();
1920 ZzFlexStreamInfo s = (ZzFlexStreamInfo) zzStreams.pop();
1921 zzBuffer = s.zzBuffer;
1922 zzReader = s.zzReader;
1923 zzEndRead = s.zzEndRead;
1924 zzStartRead = s.zzStartRead;
1925 zzCurrentPos = s.zzCurrentPos;
1926 zzMarkedPos = s.zzMarkedPos ;
1927 zzAtEOF = s.zzAtEOF;
1928 zzEOFDone = s.zzEOFDone;
1929 yyline = s.yyline;
1930 yycolumn = s.yycolumn;
1931 }
1932
1933
1934 /**
1935 * Returns true iff there are still streams left
1936 * to read from on the stream stack.
1937 */
1938 public final boolean yymoreStreams() {
1939 return !zzStreams.isEmpty();
1940 }
1941
1942
1943 /**
1944 * Resets the scanner to read from a new input stream.
1945 * Does not close the old reader.
1946 *
1947 * All internal variables are reset, the old input stream
1948 * <b>cannot</b> be reused (internal buffer is discarded and lost).
1949 * Lexical state is set to <tt>ZZ_INITIAL</tt>.
1950 *
1951 * @param reader the new input stream
1952 *
1953 * @see #yypushStream(java.io.Reader)
1954 * @see #yypopStream()
1955 */
1956 public final void yyreset(java.io.Reader reader) {
1957 zzReader = reader;
1958 zzAtBOL = true;
1959 zzAtEOF = false;
1960 zzEOFDone = false;
1961 zzEndRead = zzStartRead = 0;
1962 zzCurrentPos = zzMarkedPos = 0;
1963 yyline = yychar = yycolumn = 0;
1964 zzLexicalState = YYINITIAL;
1965 }
1966
1967
1968 /**
1969 * Returns the current lexical state.
1970 */
1971 public final int yystate() {
1972 return zzLexicalState;
1973 }
1974
1975
1976 /**
1977 * Enters a new lexical state
1978 *
1979 * @param newState the new lexical state
1980 */
1981 public final void yybegin(int newState) {
1982 zzLexicalState = newState;
1983 }
1984
1985
1986 /**
1987 * Returns the text matched by the current regular expression.
1988 */
1989 public final String yytext() {
1990 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
1991 }
1992
1993
1994 /**
1995 * Returns the character at position <tt>pos</tt> from the
1996 * matched text.
1997 *
1998 * It is equivalent to yytext().charAt(pos), but faster
1999 *
2000 * @param pos the position of the character to fetch.
2001 * A value from 0 to yylength()-1.
2002 *
2003 * @return the character at position pos
2004 */
2005 public final char yycharat(int pos) {
2006 return zzBuffer[zzStartRead+pos];
2007 }
2008
2009
2010 /**
2011 * Returns the length of the matched text region.
2012 */
2013 public final int yylength() {
2014 return zzMarkedPos-zzStartRead;
2015 }
2016
2017
2018 /**
2019 * Reports an error that occured while scanning.
2020 *
2021 * In a wellformed scanner (no or only correct usage of
2022 * yypushback(int) and a match-all fallback rule) this method
2023 * will only be called with things that "Can't Possibly Happen".
2024 * If this method is called, something is seriously wrong
2025 * (e.g. a JFlex bug producing a faulty scanner etc.).
2026 *
2027 * Usual syntax/scanner level error handling should be done
2028 * in error fallback rules.
2029 *
2030 * @param errorCode the code of the errormessage to display
2031 */
2032 private void zzScanError(int errorCode) {
2033 String message;
2034 try {
2035 message = ZZ_ERROR_MSG[errorCode];
2036 }
2037 catch (ArrayIndexOutOfBoundsException e) {
2038 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
2039 }
2040
2041 throw new Error(message);
2042 }
2043
2044
2045 /**
2046 * Pushes the specified amount of characters back into the input stream.
2047 *
2048 * They will be read again by then next call of the scanning method
2049 *
2050 * @param number the number of characters to be read again.
2051 * This number must not be greater than yylength()!
2052 */
2053 public void yypushback(int number) {
2054 if ( number > yylength() )
2055 zzScanError(ZZ_PUSHBACK_2BIG);
2056
2057 zzMarkedPos -= number;
2058 }
2059
2060
2061 /**
2062 * Contains user EOF-code, which will be executed exactly once,
2063 * when the end of file is reached
2064 */
2065 private void zzDoEOF() throws java.io.IOException {
2066 if (!zzEOFDone) {
2067 zzEOFDone = true;
2068 yyclose();
2069 }
2070 }
2071
2072
2073 /**
2074 * Resumes scanning until the next regular expression is matched,
2075 * the end of input is encountered or an I/O-Error occurs.
2076 *
2077 * @return the next token
2078 * @exception java.io.IOException if any I/O-Error occurs
2079 */
2080 public Symbol next_token() throws java.io.IOException {
2081 int zzInput;
2082 int zzAction;
2083
2084 int [] zzTransL = ZZ_TRANS;
2085 int [] zzRowMapL = ZZ_ROWMAP;
2086 int [] zzAttrL = ZZ_ATTRIBUTE;
2087
2088 while (true) {
2089 // cached fields:
2090 int zzCurrentPosL;
2091 int zzMarkedPosL = zzMarkedPos;
2092 int zzEndReadL = zzEndRead;
2093 char [] zzBufferL = zzBuffer;
2094 char [] zzCMapL = ZZ_CMAP;
2095
2096 boolean zzR = false;
2097 for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
2098 zzCurrentPosL++) {
2099 switch (zzBufferL[zzCurrentPosL]) {
2100 case '\u000B':
2101 case '\u000C':
2102 case '\u0085':
2103 case '\u2028':
2104 case '\u2029':
2105 yyline++;
2106 yycolumn = 0;
2107 zzR = false;
2108 break;
2109 case '\r':
2110 yyline++;
2111 yycolumn = 0;
2112 zzR = true;
2113 break;
2114 case '\n':
2115 if (zzR)
2116 zzR = false;
2117 else {
2118 yyline++;
2119 yycolumn = 0;
2120 }
2121 break;
2122 default:
2123 zzR = false;
2124 yycolumn++;
2125 }
2126 }
2127
2128 if (zzR) {
2129 // peek one character ahead if it is \n (if we have counted one line too much)
2130 boolean zzPeek;
2131 if (zzMarkedPosL < zzEndReadL)
2132 zzPeek = zzBufferL[zzMarkedPosL] == '\n';
2133 else if (zzAtEOF)
2134 zzPeek = false;
2135 else {
2136 boolean eof = zzRefill();
2137 zzEndReadL = zzEndRead;
2138 zzMarkedPosL = zzMarkedPos;
2139 zzBufferL = zzBuffer;
2140 if (eof)
2141 zzPeek = false;
2142 else
2143 zzPeek = zzBufferL[zzMarkedPosL] == '\n';
2144 }
2145 if (zzPeek) yyline--;
2146 }
2147 if (zzMarkedPosL > zzStartRead) {
2148 switch (zzBufferL[zzMarkedPosL-1]) {
2149 case '\n':
2150 case '\u000B':
2151 case '\u000C':
2152 case '\u0085':
2153 case '\u2028':
2154 case '\u2029':
2155 zzAtBOL = true;
2156 break;
2157 case '\r':
2158 if (zzMarkedPosL < zzEndReadL)
2159 zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
2160 else if (zzAtEOF)
2161 zzAtBOL = false;
2162 else {
2163 boolean eof = zzRefill();
2164 zzMarkedPosL = zzMarkedPos;
2165 zzEndReadL = zzEndRead;
2166 zzBufferL = zzBuffer;
2167 if (eof)
2168 zzAtBOL = false;
2169 else
2170 zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
2171 }
2172 break;
2173 default:
2174 zzAtBOL = false;
2175 }
2176 }
2177 zzAction = -1;
2178
2179 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
2180
2181 if (zzAtBOL)
2182 zzState = ZZ_LEXSTATE[zzLexicalState+1];
2183 else
2184 zzState = ZZ_LEXSTATE[zzLexicalState];
2185
2186
2187 zzForAction: {
2188 while (true) {
2189
2190 if (zzCurrentPosL < zzEndReadL)
2191 zzInput = zzBufferL[zzCurrentPosL++];
2192 else if (zzAtEOF) {
2193 zzInput = YYEOF;
2194 break zzForAction;
2195 }
2196 else {
2197 // store back cached positions
2198 zzCurrentPos = zzCurrentPosL;
2199 zzMarkedPos = zzMarkedPosL;
2200 boolean eof = zzRefill();
2201 // get translated positions and possibly new buffer
2202 zzCurrentPosL = zzCurrentPos;
2203 zzMarkedPosL = zzMarkedPos;
2204 zzBufferL = zzBuffer;
2205 zzEndReadL = zzEndRead;
2206 if (eof) {
2207 zzInput = YYEOF;
2208 break zzForAction;
2209 }
2210 else {
2211 zzInput = zzBufferL[zzCurrentPosL++];
2212 }
2213 }
2214 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
2215 if (zzNext == -1) break zzForAction;
2216 zzState = zzNext;
2217
2218 int zzAttributes = zzAttrL[zzState];
2219 if ( (zzAttributes & 1) == 1 ) {
2220 zzAction = zzState;
2221 zzMarkedPosL = zzCurrentPosL;
2222 if ( (zzAttributes & 8) == 8 ) break zzForAction;
2223 }
2224
2225 }
2226 }
2227
2228 // store back cached position
2229 zzMarkedPos = zzMarkedPosL;
2230
2231 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
2232 case 118:
2233 { cupDebug = true;
2234 }
2235 case 147: break;
2236 case 122:
2237 { actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(EOFRULE);
2238 }
2239 case 148: break;
2240 case 113:
2241 { File f = new File(yytext().substring(9).trim());
2242 if ( !f.canRead() )
2243 throw new ScannerException(file,ErrorMessages.NOT_READABLE, yyline);
2244 // check for cycle
2245 if (files.search(f) > 0)
2246 throw new ScannerException(file,ErrorMessages.FILE_CYCLE, yyline);
2247 try {
2248 yypushStream( new FileReader(f) );
2249 files.push(file);
2250 file = f;
2251 Out.println("Including \""+file+"\"");
2252 }
2253 catch (FileNotFoundException e) {
2254 throw new ScannerException(file,ErrorMessages.NOT_READABLE, yyline);
2255 }
2256 }
2257 case 149: break;
2258 case 88:
2259 { return symbol(FULL);
2260 }
2261 case 150: break;
2262 case 92:
2263 { return symbol(ASCII);
2264 }
2265 case 151: break;
2266 case 21:
2267 { string.setLength(0); nextState = REGEXP; yybegin(STRING_CONTENT);
2268 }
2269 case 152: break;
2270 case 142:
2271 { return symbol(UPPERCLASS);
2272 }
2273 case 153: break;
2274 case 34:
2275 { return symbol(COMMA);
2276 }
2277 case 154: break;
2278 case 61:
2279 { return symbol(CHAR,new Character('\f'));
2280 }
2281 case 155: break;
2282 case 111:
2283 { throw new ScannerException(file,ErrorMessages.NO_BUFFER_SIZE, yyline);
2284 }
2285 case 156: break;
2286 case 104:
2287 { throw new ScannerException(file,ErrorMessages.EOF_WO_ACTION);
2288 }
2289 case 157: break;
2290 case 143:
2291 { return symbol(LOWERCLASS);
2292 }
2293 case 158: break;
2294 case 72:
2295 { string.append('\r');
2296 }
2297 case 159: break;
2298 case 43:
2299 { return symbol(HAT);
2300 }
2301 case 160: break;
2302 case 48:
2303 { yybegin(MACROS); ctorArgs.add(yytext().trim());
2304 }
2305 case 161: break;
2306 case 1:
2307 { return symbol(EOF);
2308 }
2309 case 162: break;
2310 case 59:
2311 { return symbol(CHAR,new Character('\t'));
2312 }
2313 case 163: break;
2314 case 145:
2315 { eofclose = false;
2316 }
2317 case 164: break;
2318 case 103:
2319 { isPublic = true;
2320 }
2321 case 165: break;
2322 case 112:
2323 { actionText.setLength(0); yybegin(JAVA_CODE);
2324 Symbol s = symbol_countUpdate(EOFRULE, null);
2325 action_line = s.left+1;
2326 return s;
2327 }
2328 case 166: break;
2329 case 40:
2330 { balance++; return symbol(OPENCLASS);
2331 }
2332 case 167: break;
2333 case 11:
2334 { yybegin(REGEXP);
2335 }
2336 case 168: break;
2337 case 12:
2338 { yybegin(STATES); return symbol_countUpdate(LESSTHAN, null);
2339 }
2340 case 169: break;
2341 case 68:
2342 { string.append( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8));
2343 }
2344 case 170: break;
2345 case 62:
2346 { return symbol(CHAR,new Character('\b'));
2347 }
2348 case 171: break;
2349 case 39:
2350 { throw new ScannerException(file,ErrorMessages.EOL_IN_CHARCLASS,yyline,yycolumn);
2351 }
2352 case 172: break;
2353 case 5:
2354 { states.insert(yytext(),inclusive_states);
2355 }
2356 case 173: break;
2357 case 70:
2358 { string.append('\n');
2359 }
2360 case 174: break;
2361 case 10:
2362 { yybegin(REGEXP); return symbol(EQUALS);
2363 }
2364 case 175: break;
2365 case 146:
2366 { return symbol(JLETTERDIGITCLASS);
2367 }
2368 case 176: break;
2369 case 19:
2370 { return symbol(STAR);
2371 }
2372 case 177: break;
2373 case 42:
2374 { string.setLength(0); nextState = CHARCLASS; yybegin(STRING_CONTENT);
2375 }
2376 case 178: break;
2377 case 116:
2378 { isAbstract = true;
2379 }
2380 case 179: break;
2381 case 75:
2382 { yypushback(1); yycolumn--; return symbol(CHAR, new Character(yytext().charAt(0)));
2383 }
2384 case 180: break;
2385 case 114:
2386 { lexThrow = concExc(lexThrow,yytext().substring(8).trim());
2387 }
2388 case 181: break;
2389 case 109:
2390 { throw new ScannerException(file,ErrorMessages.QUIL_CUPSYM, yyline);
2391 }
2392 case 182: break;
2393 case 93:
2394 { packed = false; useRowMap = true;
2395 }
2396 case 183: break;
2397 case 87:
2398 { cupCompatible = true;
2399 isImplementing = concExc(isImplementing, "java_cup.runtime.Scanner");
2400 if (functionName == null)
2401 functionName = "next_token";
2402 if (tokenType == null)
2403 tokenType = "java_cup.runtime.Symbol";
2404 if (eofVal == null)
2405 eofVal = "return new java_cup.runtime.Symbol("+cupSymbol+".EOF);";
2406 if (!Options.jlex) eofclose = true;
2407 }
2408 case 184: break;
2409 case 30:
2410 { bolUsed = true; return symbol(HAT);
2411 }
2412 case 185: break;
2413 case 4:
2414 { throw new ScannerException(file,ErrorMessages.UNEXPECTED_CHAR, yyline, yycolumn);
2415 }
2416 case 186: break;
2417 case 35:
2418 { yybegin(REGEXP); return symbol(MORETHAN);
2419 }
2420 case 187: break;
2421 case 100:
2422 { packed = false; useRowMap = false;
2423 }
2424 case 188: break;
2425 case 119:
2426 { caseless = true;
2427 }
2428 case 189: break;
2429 case 38:
2430 { yybegin(nextState); return symbol(STRING, string.toString());
2431 }
2432 case 190: break;
2433 case 76:
2434 { return symbol(REPEAT, new Integer(yytext().substring(1).trim()));
2435 }
2436 case 191: break;
2437 case 13:
2438 { return symbol_countUpdate(RBRACE, null);
2439 }
2440 case 192: break;
2441 case 139:
2442 { scanErrorException = yytext().substring(11).trim();
2443 }
2444 case 193: break;
2445 case 141:
2446 { lexThrow = concExc(lexThrow,yytext().substring(12).trim());
2447 }
2448 case 194: break;
2449 case 84:
2450 { return symbol(MACROUSE, yytext().substring(1,yytext().length()-1));
2451 }
2452 case 195: break;
2453 case 2:
2454 { /* ignore */
2455 }
2456 case 196: break;
2457 case 127:
2458 { throw new ScannerException(file,ErrorMessages.QUIL_INITTHROW, yyline);
2459 }
2460 case 197: break;
2461 case 47:
2462 { throw new ScannerException(file,ErrorMessages.CTOR_ARG,yyline,yycolumn);
2463 }
2464 case 198: break;
2465 case 108:
2466 { throw new ScannerException(file,ErrorMessages.QUIL_THROW, yyline);
2467 }
2468 case 199: break;
2469 case 31:
2470 { actionText.append(yytext());
2471 }
2472 case 200: break;
2473 case 83:
2474 { string.append( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16));
2475 }
2476 case 201: break;
2477 case 107:
2478 { notUnix = true;
2479 }
2480 case 202: break;
2481 case 89:
2482 { lineCount = true;
2483 }
2484 case 203: break;
2485 case 136:
2486 { initThrow = concExc(initThrow,yytext().substring(11).trim());
2487 }
2488 case 204: break;
2489 case 131:
2490 { standalone = true; isInteger = true;
2491 }
2492 case 205: break;
2493 case 52:
2494 { nextState = MACROS; yybegin(COMMENT);
2495 }
2496 case 206: break;
2497 case 25:
2498 { return symbol(TILDE);
2499 }
2500 case 207: break;
2501 case 37:
2502 { throw new ScannerException(file,ErrorMessages.UNTERMINATED_STR, yyline, yycolumn);
2503 }
2504 case 208: break;
2505 case 110:
2506 { className = yytext().substring(7).trim();
2507 }
2508 case 209: break;
2509 case 9:
2510 { throw new ScannerException(file,ErrorMessages.UNKNOWN_OPTION, yyline, yycolumn);
2511 }
2512 case 210: break;
2513 case 55:
2514 { nextState = REGEXPSTART; yybegin(COMMENT);
2515 }
2516 case 211: break;
2517 case 16:
2518 { return symbol(POINT);
2519 }
2520 case 212: break;
2521 case 73:
2522 { string.append('\f');
2523 }
2524 case 213: break;
2525 case 65:
2526 { yybegin(REPEATEXP); return symbol(REPEAT, new Integer(yytext().trim().substring(1).trim()));
2527 }
2528 case 214: break;
2529 case 80:
2530 { return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16)));
2531 }
2532 case 215: break;
2533 case 140:
2534 { initThrow = concExc(initThrow,string); yybegin(MACROS);
2535 }
2536 case 216: break;
2537 case 135:
2538 { eofThrow = concExc(eofThrow,string); yybegin(MACROS);
2539 }
2540 case 217: break;
2541 case 71:
2542 { string.append('\t');
2543 }
2544 case 218: break;
2545 case 67:
2546 { string.append(yytext().charAt(1));
2547 }
2548 case 219: break;
2549 case 7:
2550 { yybegin(MACROS);
2551 }
2552 case 220: break;
2553 case 98:
2554 { eofCode = conc(eofCode,string); yybegin(MACROS);
2555 }
2556 case 221: break;
2557 case 56:
2558 { return symbol(CHAR, new Character(yytext().charAt(1)));
2559 }
2560 case 222: break;
2561 case 28:
2562 { return symbol(PLUS);
2563 }
2564 case 223: break;
2565 case 101:
2566 { columnCount = true;
2567 }
2568 case 224: break;
2569 case 124:
2570 { isExtending = yytext().substring(9).trim();
2571 }
2572 case 225: break;
2573 case 123:
2574 { eofVal = string.toString(); yybegin(MACROS);
2575 }
2576 case 226: break;
2577 case 36:
2578 { string.append(yytext());
2579 }
2580 case 227: break;
2581 case 97:
2582 { return symbol(UNICODE);
2583 }
2584 case 228: break;
2585 case 74:
2586 { string.append('\b');
2587 }
2588 case 229: break;
2589 case 24:
2590 { return symbol(BANG);
2591 }
2592 case 230: break;
2593 case 132:
2594 { throw new ScannerException(file,ErrorMessages.QUIL_SCANERROR, yyline);
2595 }
2596 case 231: break;
2597 case 91:
2598 { packed = true; useRowMap = true;
2599 }
2600 case 232: break;
2601 case 26:
2602 { return symbol(OPENBRACKET);
2603 }
2604 case 233: break;
2605 case 60:
2606 { return symbol(CHAR,new Character('\r'));
2607 }
2608 case 234: break;
2609 case 94:
2610 { isFinal = true;
2611 }
2612 case 235: break;
2613 case 27:
2614 { return symbol(CLOSEBRACKET);
2615 }
2616 case 236: break;
2617 case 86:
2618 { isInteger = true;
2619 }
2620 case 237: break;
2621 case 20:
2622 { return symbol(LOOKAHEAD);
2623 }
2624 case 238: break;
2625 case 51:
2626 { commentbalance++;
2627 }
2628 case 239: break;
2629 case 49:
2630 { t.start();
2631 yybegin(MACROS);
2632 macroDefinition = true;
2633 return symbol(USERCODE,userCode);
2634 }
2635 case 240: break;
2636 case 44:
2637 { return symbol(DASH);
2638 }
2639 case 241: break;
2640 case 138:
2641 { throw new ScannerException(file,ErrorMessages.QUIL_YYLEXTHROW, yyline);
2642 }
2643 case 242: break;
2644 case 96:
2645 { debugOption = true;
2646 }
2647 case 243: break;
2648 case 64:
2649 { nextState = REGEXP; yybegin(COMMENT);
2650 }
2651 case 244: break;
2652 case 32:
2653 { if (balance > 0) {
2654 balance--;
2655 actionText.append('}');
2656 }
2657 else {
2658 yybegin(REGEXPSTART);
2659 Action a = new Action(actionText.toString(), action_line);
2660 actions.addElement(a);
2661 return symbol(ACTION, a);
2662 }
2663 }
2664 case 245: break;
2665 case 29:
2666 { return symbol(DOLLAR);
2667 }
2668 case 246: break;
2669 case 17:
2670 { yybegin(CHARCLASS); return symbol(OPENCLASS);
2671 }
2672 case 247: break;
2673 case 105:
2674 { initCode = conc(initCode,string); yybegin(MACROS);
2675 }
2676 case 248: break;
2677 case 69:
2678 { string.append('\"');
2679 }
2680 case 249: break;
2681 case 137:
2682 { isImplementing = concExc(isImplementing, yytext().substring(12).trim());
2683 }
2684 case 250: break;
2685 case 126:
2686 { return symbol(LETTERCLASS);
2687 }
2688 case 251: break;
2689 case 102:
2690 { isInteger = true;
2691 if (eofVal == null)
2692 eofVal = "return 0;";
2693 eofclose = true;
2694 }
2695 case 252: break;
2696 case 41:
2697 { if (balance > 0) balance--; else yybegin(REGEXP); return symbol(CLOSECLASS);
2698 }
2699 case 253: break;
2700 case 77:
2701 { string.setLength(0); yybegin(COPY);
2702 }
2703 case 254: break;
2704 case 8:
2705 { return symbol(IDENT, yytext());
2706 }
2707 case 255: break;
2708 case 121:
2709 { return symbol(DIGITCLASS);
2710 }
2711 case 256: break;
2712 case 144:
2713 { lexThrow = concExc(lexThrow,string); yybegin(MACROS);
2714 }
2715 case 257: break;
2716 case 53:
2717 { Out.warning(ErrorMessages.NOT_AT_BOL, yyline); yypushback(1);
2718 }
2719 case 258: break;
2720 case 23:
2721 { return symbol(BAR);
2722 }
2723 case 259: break;
2724 case 45:
2725 { throw new ScannerException(file,ErrorMessages.UNEXPECTED_NL, yyline, yycolumn);
2726 }
2727 case 260: break;
2728 case 117:
2729 { cupSymbol = yytext().substring(8).trim();
2730 if (cupCompatible) Out.warning(ErrorMessages.CUPSYM_AFTER_CUP, yyline);
2731 }
2732 case 261: break;
2733 case 58:
2734 { return symbol(CHAR,new Character('\n'));
2735 }
2736 case 262: break;
2737 case 95:
2738 { isYYEOF = true;
2739 }
2740 case 263: break;
2741 case 14:
2742 { return symbol(CHAR, new Character(yytext().charAt(0)));
2743 }
2744 case 264: break;
2745 case 99:
2746 { tokenType = yytext().substring(6).trim();
2747 }
2748 case 265: break;
2749 case 33:
2750 { balance++; actionText.append('{');
2751 }
2752 case 266: break;
2753 case 128:
2754 { eofThrow = concExc(eofThrow,yytext().substring(10).trim());
2755 }
2756 case 267: break;
2757 case 63:
2758 { actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(REGEXPEND);
2759 }
2760 case 268: break;
2761 case 81:
2762 { return symbol_countUpdate(MACROUSE, makeMacroIdent());
2763 }
2764 case 269: break;
2765 case 15:
2766 { if (macroDefinition) { yybegin(MACROS); } return symbol(REGEXPEND);
2767 }
2768 case 270: break;
2769 case 125:
2770 { throw new ScannerException(file,ErrorMessages.QUIL_EOFTHROW, yyline);
2771 }
2772 case 271: break;
2773 case 90:
2774 { charCount = true;
2775 }
2776 case 272: break;
2777 case 130:
2778 { visibility = "private"; Skeleton.makePrivate();
2779 }
2780 case 273: break;
2781 case 134:
2782 { return symbol(JLETTERCLASS);
2783 }
2784 case 274: break;
2785 case 22:
2786 { yybegin(REGEXPSTART); return symbol(LBRACE);
2787 }
2788 case 275: break;
2789 case 115:
2790 { eofclose = true;
2791 }
2792 case 276: break;
2793 case 66:
2794 // lookahead expression with fixed lookahead length
2795 yypushback(1);
2796 { if (macroDefinition) {
2797 yybegin(EATWSPNL);
2798 return symbol(BAR);
2799 }
2800 else {
2801 yybegin(REGEXPSTART);
2802 return symbol(NOACTION);
2803 }
2804 }
2805 case 277: break;
2806 case 82:
2807 // lookahead expression with fixed lookahead length
2808 yypushback(2);
2809 { if (macroDefinition) {
2810 yybegin(EATWSPNL);
2811 return symbol(BAR);
2812 }
2813 else {
2814 yybegin(REGEXPSTART);
2815 return symbol(NOACTION);
2816 }
2817 }
2818 case 278: break;
2819 case 46:
2820 { yybegin(REGEXP); return symbol(RBRACE);
2821 }
2822 case 279: break;
2823 case 78:
2824 { inclusive_states = false; yybegin(STATELIST);
2825 }
2826 case 280: break;
2827 case 120:
2828 { bufferSize = Integer.parseInt(yytext().substring(8).trim());
2829 }
2830 case 281: break;
2831 case 106:
2832 { isIntWrap = true;
2833 }
2834 case 282: break;
2835 case 133:
2836 { yybegin(CTOR_ARG); ctorTypes.add(yytext().substring(8).trim());
2837 }
2838 case 283: break;
2839 case 3:
2840 { userCode.append(yytext());
2841 }
2842 case 284: break;
2843 case 54:
2844 { macroDefinition = false; yybegin(REGEXPSTART); return symbol(DELIMITER);
2845 }
2846 case 285: break;
2847 case 129:
2848 { functionName = yytext().substring(10).trim();
2849 }
2850 case 286: break;
2851 case 85:
2852 { classCode = conc(classCode,string); yybegin(MACROS);
2853 }
2854 case 287: break;
2855 case 18:
2856 { return symbol(QUESTION);
2857 }
2858 case 288: break;
2859 case 50:
2860 { if (commentbalance > 0)
2861 commentbalance--;
2862 else
2863 yybegin(nextState);
2864 }
2865 case 289: break;
2866 case 79:
2867 { inclusive_states = true; yybegin(STATELIST);
2868 }
2869 case 290: break;
2870 case 57:
2871 { return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8)));
2872 }
2873 case 291: break;
2874 case 6:
2875 {
2876 }
2877 case 292: break;
2878 default:
2879 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
2880 zzAtEOF = true;
2881 zzDoEOF();
2882 switch (zzLexicalState) {
2883 case STRING_CONTENT: {
2884 throw new ScannerException(file,ErrorMessages.EOF_IN_STRING);
2885 }
2886 case 827: break;
2887 case MACROS: {
2888 if ( yymoreStreams() ) {
2889 file = (File) files.pop();
2890 yypopStream();
2891 }
2892 else
2893 throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS);
2894 }
2895 case 828: break;
2896 case STATELIST: {
2897 throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS);
2898 }
2899 case 829: break;
2900 case CHARCLASS: {
2901 throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP);
2902 }
2903 case 830: break;
2904 case JAVA_CODE: {
2905 throw new ScannerException(file,ErrorMessages.EOF_IN_ACTION, action_line-1);
2906 }
2907 case 831: break;
2908 case REPEATEXP: {
2909 throw new ScannerException(file,ErrorMessages.EOF_IN_REGEXP);
2910 }
2911 case 832: break;
2912 case COMMENT: {
2913 throw new ScannerException(file,ErrorMessages.EOF_IN_COMMENT);
2914 }
2915 case 833: break;
2916 case STATES: {
2917 throw new ScannerException(file,ErrorMessages.EOF_IN_STATES);
2918 }
2919 case 834: break;
2920 case COPY: {
2921 throw new ScannerException(file,ErrorMessages.EOF_IN_MACROS);
2922 }
2923 case 835: break;
2924 default:
2925 {
2926 if ( yymoreStreams() ) {
2927 file = (File) files.pop();
2928 yypopStream();
2929 }
2930 else
2931 return symbol(EOF);
2932 }
2933 }
2934 }
2935 else {
2936 zzScanError(ZZ_NO_MATCH);
2937 }
2938 }
2939 }
2940 }
2941
2942 /**
2943 * Converts an int token code into the name of the
2944 * token by reflection on the cup symbol class/interface sym
2945 *
2946 * This code was contributed by Karl Meissner <[email protected]>
2947 */
2948 private String getTokenName(int token) {
2949 try {
2950 java.lang.reflect.Field [] classFields = sym.class.getFields();
2951 for (int i = 0; i < classFields.length; i++) {
2952 if (classFields[i].getInt(null) == token) {
2953 return classFields[i].getName();
2954 }
2955 }
2956 } catch (Exception e) {
2957 e.printStackTrace(System.err);
2958 }
2959
2960 return "UNKNOWN TOKEN";
2961 }
2962
2963 /**
2964 * Same as next_token but also prints the token to standard out
2965 * for debugging.
2966 *
2967 * This code was contributed by Karl Meissner <[email protected]>
2968 */
2969 public Symbol debug_next_token() throws java.io.IOException {
2970 java_cup.runtime.Symbol s = next_token();
2971 System.out.println( "line:" + (yyline+1) + " col:" + (yycolumn+1) + " --"+ yytext() + "--" + getTokenName(s.sym) + "--");
2972 return s;
2973 }
2974
2975 /**
2976 * Runs the scanner on input files.
2977 *
2978 * This main method is the debugging routine for the scanner.
2979 * It prints debugging information about each returned token to
2980 * System.out until the end of file is reached, or an error occured.
2981 *
2982 * @param argv the command line, contains the filenames to run
2983 * the scanner on.
2984 */
2985 public static void main(String argv[]) {
2986 if (argv.length == 0) {
2987 System.out.println("Usage : java LexScan <inputfile>");
2988 }
2989 else {
2990 for (int i = 0; i < argv.length; i++) {
2991 LexScan scanner = null;
2992 try {
2993 scanner = new LexScan( new java.io.FileReader(argv[i]) );
2994 while ( !scanner.zzAtEOF ) scanner.debug_next_token();
2995 }
2996 catch (java.io.FileNotFoundException e) {
2997 System.out.println("File not found : \""+argv[i]+"\"");
2998 }
2999 catch (java.io.IOException e) {
3000 System.out.println("IO error scanning file \""+argv[i]+"\"");
3001 System.out.println(e);
3002 }
3003 catch (Exception e) {
3004 System.out.println("Unexpected exception:");
3005 e.printStackTrace();
3006 }
3007 }
3008 }
3009 }
3010
3011
3012}
Note: See TracBrowser for help on using the repository browser.