/* The following code was generated by JFlex 1.3.5 on 10/8/01 7:44 PM */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* JFlex 1.3.5 *
* Copyright (C) 1998-2001 Gerwin Klein <lsf@jflex.de> *
* All rights reserved. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License. See the file *
* COPYRIGHT for more information. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package JFlex;
import java_cup.runtime.Symbol;
import java.util.Vector;
import java.io.*;
import java.util.Stack;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.3.5
* on 10/8/01 7:44 PM from the specification file
* <tt>file:/home/kleing/src/java/JFlex/export/JFlex/src/JFlex/LexScan.flex</tt>
*/
public final class LexScan implements sym, ErrorMessages, java_cup.runtime.Scanner {
/** This character denotes the end of file */
final public static int YYEOF = -1;
/** initial size of the lookahead buffer */
final private static int YY_BUFFERSIZE = 16384;
/** lexical states */
final public static int STRING_CONTENT = 16;
final public static int REGEXPSTART = 8;
final public static int MACROS = 6;
final public static int STATELIST = 4;
final public static int EATWSPNL = 24;
final public static int CHARCLASS = 18;
final public static int JAVA_CODE = 12;
final public static int REGEXP = 10;
final public static int YYINITIAL = 0;
final public static int REPEATEXP = 22;
final public static int COMMENT = 2;
final public static int STATES = 14;
final public static int COPY = 20;
/**
* YY_LEXSTATE[l] is the state in the DFA for the lexical state l
* YY_LEXSTATE[l+1] is the state in the DFA for the lexical state l
* at the beginning of a line
* l is of the form l = 2*k, k a non negative integer
*/
private final static int YY_LEXSTATE[] = {
0, 0, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8,
9, 9, 10, 10, 11, 11, 12, 12, 13, 13
};
/**
* Translates characters to character classes
*/
final private static String yycmap_packed =
"\10\21\1\22\1\10\1\13\2\11\1\12\16\21\4\0\1\10\1\74"+
"\1\26\1\0\1\102\1\31\1\0\1\27\1\76\1\77\1\24\1\100"+
"\1\15\1\105\1\14\1\25\1\7\1\62\2\7\2\3\1\63\1\60"+
"\1\61\1\1\1\104\1\0\1\66\1\65\1\72\1\101\1\0\4\2"+
"\1\67\1\71\10\20\1\70\13\20\1\16\1\4\1\17\1\103\1\20"+
"\1\0\1\47\1\53\1\51\1\56\1\42\1\43\1\57\1\36\1\33"+
"\1\54\1\64\1\45\1\52\1\34\1\40\1\55\1\20\1\37\1\50"+
"\1\35\1\6\1\46\1\41\1\5\1\44\1\20\1\32\1\73\1\30"+
"\1\75\6\21\1\23\32\21\2\0\4\20\4\0\1\20\12\0\1\20"+
"\4\0\1\20\5\0\27\20\1\0\37\20\1\0\u0128\20\2\0\22\20"+
"\34\0\136\20\2\0\11\20\2\0\7\20\16\0\2\20\16\0\5\20"+
"\11\0\1\20\21\0\117\21\21\0\3\21\27\0\1\20\13\0\1\20"+
"\1\0\3\20\1\0\1\20\1\0\24\20\1\0\54\20\1\0\10\20"+
"\2\0\32\20\14\0\202\20\1\0\4\21\5\0\71\20\2\0\2\20"+
"\2\0\2\20\3\0\46\20\2\0\2\20\67\0\46\20\2\0\1\20"+
"\7\0\47\20\11\0\21\21\1\0\27\21\1\0\3\21\1\0\1\21"+
"\1\0\2\21\1\0\1\21\13\0\33\20\5\0\3\20\56\0\32\20"+
"\5\0\13\20\13\21\12\0\12\21\6\0\1\21\143\20\1\0\1\20"+
"\7\21\2\0\6\21\2\20\2\21\1\0\4\21\2\0\12\21\3\20"+
"\22\0\1\21\1\20\1\21\33\20\3\0\33\21\65\0\46\20\13\21"+
"\u0150\0\3\21\1\0\65\20\2\0\1\21\1\20\20\21\2\0\1\20"+
"\4\21\3\0\12\20\2\21\2\0\12\21\21\0\3\21\1\0\10\20"+
"\2\0\2\20\2\0\26\20\1\0\7\20\1\0\1\20\3\0\4\20"+
"\2\0\1\21\1\0\7\21\2\0\2\21\2\0\3\21\11\0\1\21"+
"\4\0\2\20\1\0\3\20\2\21\2\0\12\21\4\20\16\0\1\21"+
"\2\0\6\20\4\0\2\20\2\0\26\20\1\0\7\20\1\0\2\20"+
"\1\0\2\20\1\0\2\20\2\0\1\21\1\0\5\21\4\0\2\21"+
"\2\0\3\21\13\0\4\20\1\0\1\20\7\0\14\21\3\20\14\0"+
"\3\21\1\0\7\20\1\0\1\20\1\0\3\20\1\0\26\20\1\0"+
"\7\20\1\0\2\20\1\0\5\20\2\0\1\21\1\20\10\21\1\0"+
"\3\21\1\0\3\21\2\0\1\20\17\0\1\20\5\0\12\21\21\0"+
"\3\21\1\0\10\20\2\0\2\20\2\0\26\20\1\0\7\20\1\0"+
"\2\20\2\0\4\20\2\0\1\21\1\20\6\21\3\0\2\21\2\0"+
"\3\21\10\0\2\21\4\0\2\20\1\0\3\20\4\0\12\21\22\0"+
"\2\21\1\0\6\20\3\0\3\20\1\0\4\20\3\0\2\20\1\0"+
"\1\20\1\0\2\20\3\0\2\20\3\0\3\20\3\0\10\20\1\0"+
"\3\20\4\0\5\21\3\0\3\21\1\0\4\21\11\0\1\21\17\0"+
"\11\21\21\0\3\21\1\0\10\20\1\0\3\20\1\0\27\20\1\0"+
"\12\20\1\0\5\20\4\0\7\21\1\0\3\21\1\0\4\21\7\0"+
"\2\21\11\0\2\20\4\0\12\21\22\0\2\21\1\0\10\20\1\0"+
"\3\20\1\0\27\20\1\0\12\20\1\0\5\20\4\0\7\21\1\0"+
"\3\21\1\0\4\21\7\0\2\21\7\0\1\20\1\0\2\20\4\0"+
"\12\21\22\0\2\21\1\0\10\20\1\0\3\20\1\0\27\20\1\0"+
"\20\20\4\0\6\21\2\0\3\21\1\0\4\21\11\0\1\21\10\0"+
"\2\20\4\0\12\21\22\0\2\21\1\0\22\20\3\0\30\20\1\0"+
"\11\20\1\0\1\20\2\0\7\20\3\0\1\21\4\0\6\21\1\0"+
"\1\21\1\0\10\21\22\0\2\21\15\0\60\20\1\21\2\20\7\21"+
"\4\0\10\20\10\21\1\0\12\21\47\0\2\20\1\0\1\20\2\0"+
"\2\20\1\0\1\20\2\0\1\20\6\0\4\20\1\0\7\20\1\0"+
"\3\20\1\0\1\20\1\0\1\20\2\0\2\20\1\0\4\20\1\21"+
"\2\20\6\21\1\0\2\21\1\20\2\0\5\20\1\0\1\20\1\0"+
"\6\21\2\0\12\21\2\0\2\20\42\0\1\20\27\0\2\21\6\0"+
"\12\21\13\0\1\21\1\0\1\21\1\0\1\21\4\0\2\21\10\20"+
"\1\0\42\20\6\0\24\21\1\0\2\21\4\20\4\0\10\21\1\0"+
"\44\21\11\0\1\21\71\0\42\20\1\0\5\20\1\0\2\20\1\0"+
"\7\21\3\0\4\21\6\0\12\21\6\0\6\20\4\21\106\0\46\20"+
"\12\0\47\20\11\0\132\20\5\0\104\20\5\0\122\20\6\0\7\20"+
"\1\0\77\20\1\0\1\20\1\0\4\20\2\0\7\20\1\0\1\20"+
"\1\0\4\20\2\0\47\20\1\0\1\20\1\0\4\20\2\0\37\20"+
"\1\0\1\20\1\0\4\20\2\0\7\20\1\0\1\20\1\0\4\20"+
"\2\0\7\20\1\0\7\20\1\0\27\20\1\0\37\20\1\0\1\20"+
"\1\0\4\20\2\0\7\20\1\0\47\20\1\0\23\20\16\0\11\21"+
"\56\0\125\20\14\0\u026c\20\2\0\10\20\12\0\32\20\5\0\113\20"+
"\225\0\64\20\40\21\7\0\1\20\4\0\12\21\41\0\4\21\1\0"+
"\12\21\6\0\130\20\10\0\51\20\1\21\u0556\0\234\20\4\0\132\20"+
"\6\0\26\20\2\0\6\20\2\0\46\20\2\0\6\20\2\0\10\20"+
"\1\0\1\20\1\0\1\20\1\0\1\20\1\0\37\20\2\0\65\20"+
"\1\0\7\20\1\0\1\20\3\0\3\20\1\0\7\20\3\0\4\20"+
"\2\0\6\20\4\0\15\20\5\0\3\20\1\0\7\20\17\0\4\21"+
"\30\0\2\11\5\21\20\0\2\20\51\0\6\21\17\0\1\20\40\0"+
"\20\20\40\0\15\21\4\0\1\21\40\0\1\20\4\0\1\20\2\0"+
"\12\20\1\0\1\20\3\0\5\20\6\0\1\20\1\0\1\20\1\0"+
"\1\20\1\0\4\20\1\0\3\20\1\0\7\20\46\0\44\20\u0e81\0"+
"\3\20\31\0\11\20\6\21\1\0\5\20\2\0\3\20\6\0\124\20"+
"\4\0\2\21\2\0\2\20\2\0\136\20\6\0\50\20\4\0\136\20"+
"\21\0\30\20\u0248\0\u19b6\20\112\0\u51a6\20\132\0\u048d\20\u0773\0\u2ba4\20"+
"\u215c\0\u012e\20\322\0\7\20\14\0\5\20\5\0\1\20\1\21\12\20"+
"\1\0\15\20\1\0\5\20\1\0\1\20\1\0\2\20\1\0\2\20"+
"\1\0\154\20\41\0\u016b\20\22\0\100\20\2\0\66\20\50\0\14\20"+
"\44\0\4\21\17\0\2\20\30\0\3\20\31\0\1\20\6\0\3\20"+
"\1\0\1\20\1\0\207\20\2\0\1\21\4\0\1\20\13\0\12\21"+
"\7\0\32\20\4\0\1\20\1\0\32\20\12\0\132\20\3\0\6\20"+
"\2\0\6\20\2\0\6\20\2\0\3\20\3\0\2\20\3\0\2\20"+
"\22\0\3\21\3\0\1\21";
/**
* Translates characters to character classes
*/
final private static char [] yycmap = yy_unpack_cmap(yycmap_packed);
/**
* Translates a state to a row index in the transition table
*/
final private static int yy_rowMap [] = {
0, 70, 140, 210, 280, 350, 420, 490, 560, 630,
700, 770, 840, 910, 980, 980, 1050, 1120, 1190, 1260,
1330, 1050, 1400, 1470, 1050, 1540, 1610, 1680, 1750, 1820,
1890, 1960, 2030, 2100, 2170, 2240, 2310, 1050, 2380, 1050,
2450, 2520, 2590, 2660, 1050, 2730, 1050, 2800, 1050, 2870,
2940, 3010, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
3080, 3150, 3220, 3290, 1050, 1050, 3360, 1050, 3430, 3500,
3570, 1050, 3640, 1050, 3710, 3710, 2730, 1050, 1050, 3780,
1050, 3850, 3920, 3920, 1050, 3990, 1050, 4060, 1050, 4130,
4200, 4270, 4340, 1260, 1050, 1050, 1330, 1050, 4410, 4480,
4550, 4620, 4690, 4760, 4830, 4900, 4970, 5040, 5110, 5180,
5250, 5320, 5390, 5460, 5530, 5600, 5670, 5740, 1050, 5810,
5880, 5950, 2310, 1050, 6020, 6090, 1050, 6160, 6230, 6300,
6370, 1050, 1050, 1050, 1050, 1050, 2590, 2870, 6440, 1050,
6510, 6580, 2870, 6650, 3010, 1050, 6720, 3150, 3220, 3290,
6790, 6860, 6930, 7000, 7070, 1050, 7140, 7210, 7280, 7350,
1050, 1050, 1050, 1050, 1050, 1050, 3710, 2730, 7420, 1050,
3920, 7490, 7560, 7630, 7700, 7770, 4060, 1050, 4410, 1050,
7840, 4620, 1050, 7910, 7980, 8050, 8120, 8190, 8260, 8330,
8400, 8470, 8540, 8610, 8680, 8750, 8820, 8890, 8960, 9030,
9100, 9170, 9240, 9310, 9380, 9450, 9520, 9590, 9660, 9730,
9800, 9870, 9940, 10010, 10080, 10150, 10220, 10290, 10360, 10430,
1050, 10500, 10570, 10640, 10710, 10780, 10850, 10920, 1050, 10990,
11060, 11130, 11200, 11270, 11340, 11410, 1050, 11480, 11550, 1050,
7490, 1050, 11620, 11690, 11760, 11830, 11900, 11970, 12040, 12110,
12180, 12250, 12320, 12390, 12460, 12530, 12600, 12670, 12740, 12810,
12880, 12950, 13020, 13090, 13160, 13230, 13300, 13370, 13440, 13510,
13580, 13650, 13720, 13790, 13860, 13930, 14000, 14070, 14140, 14210,
14280, 14350, 14420, 1050, 14490, 14560, 14630, 14700, 14770, 14840,
14910, 14980, 15050, 15120, 15190, 15260, 15330, 1050, 15400, 15470,
15540, 15610, 15680, 15750, 15820, 15890, 15960, 16030, 16100, 16170,
16240, 16310, 16380, 16450, 16520, 16590, 16660, 16730, 4480, 16800,
16870, 16940, 4480, 17010, 17080, 17150, 17220, 17290, 17360, 4480,
17430, 17500, 17570, 17640, 17710, 17780, 4480, 17850, 1050, 17920,
17990, 18060, 18130, 10500, 18200, 18270, 18340, 18410, 18480, 18550,
18620, 18690, 18760, 18830, 18900, 11480, 18970, 19040, 19110, 19180,
19250, 19320, 19390, 19460, 19530, 19600, 19670, 19740, 19810, 19880,
19950, 20020, 4480, 20090, 20160, 20230, 20300, 20370, 4480, 4480,
20440, 20510, 20580, 20650, 20720, 20790, 20860, 20930, 21000, 21070,
21140, 21210, 21280, 4480, 1050, 21350, 21420, 21490, 21560, 21630,
21700, 21770, 21840, 21910, 21980, 22050, 22120, 22190, 22260, 22330,
22400, 22470, 22540, 22610, 19040, 1050, 22680, 22750, 22820, 22890,
22960, 23030, 23100, 23170, 23240, 23310, 23380, 23450, 23520, 23590,
23660, 23730, 23800, 23870, 23940, 24010, 24080, 4480, 24150, 24220,
24290, 4480, 24360, 24430, 24500, 24570, 4480, 4480, 24640, 10290,
24710, 24780, 24850, 24920, 24990, 25060, 25130, 25200, 25270, 25340,
25410, 25480, 25550, 25620, 25690, 25760, 25830, 25900, 22540, 1050,
25970, 26040, 26110, 26180, 4480, 26250, 4480, 4480, 26320, 26390,
26460, 4480, 26530, 26600, 26670, 26740, 26810, 26880, 26950, 27020,
27090, 27160, 27230, 27300, 27370, 27440, 27510, 27580, 27650, 27720,
27790, 10080, 1050, 27860, 27930, 28000, 28070, 28140, 28210, 28280,
28350, 28420, 28490, 28560, 28630, 28700, 28770, 28840, 28910, 28980,
29050, 29120, 29190, 29260, 29330, 29400, 29470, 29540, 29610, 29680,
29750, 29820, 29890, 29960, 30030, 30100, 30170, 30240, 30310, 4480,
30380, 30450, 4480, 30520, 30590, 30660, 30730, 30800, 4480, 4480,
30870, 30940, 31010, 31080, 31150, 31220, 31290, 31360, 1050, 1050,
31430, 31500, 31570, 31640, 31710, 31780, 31850, 31920, 31990, 32060,
32130, 32200, 32270, 32340, 32410, 29470, 1050, 32480, 32550, 32620,
32690, 32760, 32830, 30100, 32900, 32970, 33040, 33110, 33180, 33250,
33320, 33390, 33460, 33530, 33600, 33670, 1050, 33740, 33810, 33880,
33950, 34020, 34090, 34160, 34230, 34300, 34370, 34440, 34510, 34580,
34650, 34720, 34790, 34860, 34930, 35000, 35070, 35140, 35210, 35280,
35350, 35420, 35490, 35560, 35630, 35700, 35770, 35840, 35910, 35980,
36050, 4480, 36120, 36190, 36260, 36330, 36400, 36470, 36540, 1050,
36610, 36680, 36750, 36820, 36890, 36960, 37030, 37100, 37170, 37240,
37310, 37380, 37450, 37520, 37590, 35210, 1050, 37660, 37730, 37800,
37870, 37940, 38010, 38080, 38150, 38220, 38290, 38360, 38430, 38500,
38570, 38640, 38710, 38780, 38850, 38920, 38990, 39060, 39130, 39200,
39270, 39340, 39410, 39480, 39550, 39620, 39690, 39760, 37590, 1050,
39830, 39900, 39970, 40040, 40110, 40180, 40250, 40320, 40390, 40460,
1050, 1050, 40530, 40600, 40670, 40740, 40810, 40880, 40950, 41020,
41090, 39830, 1050, 41160, 41230, 41300, 41370, 41440, 41510, 41580,
41650, 41720, 41790, 41860, 41930, 42000, 42070, 42140, 42210, 42280,
42350, 1050
};
/**
* The packed transition table of the DFA (part 0)
*/
final private static String yy_packed0 =
"\11\17\2\20\1\21\7\17\1\20\5\17\1\22\54\17"+
"\24\23\1\24\1\25\60\23\2\26\1\27\2\26\2\27"+
"\1\26\1\30\1\31\1\32\1\31\1\26\1\33\2\26"+
"\1\27\2\26\1\31\7\26\25\27\4\26\1\27\2\26"+
"\3\27\10\26\1\27\5\26\1\34\2\26\2\34\1\26"+
"\1\35\3\36\4\26\1\34\1\26\1\35\1\36\1\26"+
"\1\37\3\26\1\40\1\26\25\34\4\26\1\34\1\41"+
"\1\26\3\34\10\26\1\34\5\26\1\34\2\26\2\34"+
"\1\26\1\42\3\36\4\26\1\34\1\26\1\42\1\36"+
"\1\26\1\37\3\26\1\43\1\26\25\34\4\26\1\34"+
"\1\41\1\26\3\34\10\26\1\34\13\26\4\44\6\26"+
"\2\44\1\26\1\45\2\26\1\46\35\26\1\47\17\26"+
"\4\50\1\51\3\50\1\52\1\53\1\54\1\53\1\55"+
"\1\50\1\56\3\50\1\52\1\53\1\57\1\60\1\61"+
"\3\50\1\62\33\50\1\63\4\50\1\64\1\65\1\66"+
"\1\67\1\70\1\71\1\72\1\73\1\74\2\50\25\75"+
"\1\76\1\77\1\100\1\101\1\75\1\102\53\75\2\26"+
"\1\34\2\26\2\34\1\26\4\103\1\26\1\104\2\26"+
"\1\34\1\26\2\103\7\26\25\34\4\26\1\34\2\26"+
"\3\34\1\105\7\26\1\34\3\26\4\106\1\107\4\106"+
"\1\110\1\111\1\110\7\106\1\110\2\106\1\112\57\106"+
"\4\50\1\51\3\50\3\113\1\114\2\50\1\115\1\116"+
"\2\50\2\113\2\50\1\117\3\50\1\120\50\50\1\121"+
"\1\50\1\122\11\123\2\124\1\125\7\123\1\124\5\123"+
"\1\126\54\123\10\26\1\35\2\26\1\127\1\26\1\130"+
"\4\26\1\35\5\26\1\131\65\26\4\132\6\26\2\132"+
"\62\26\11\17\2\20\1\21\7\17\1\20\62\17\106\0"+
"\11\17\2\20\1\21\7\17\1\20\5\17\1\133\54\17"+
"\24\23\1\134\1\135\104\23\1\136\1\137\104\23\1\140"+
"\1\141\60\23\1\0\3\27\1\0\3\27\10\0\4\27"+
"\7\0\32\27\2\0\3\27\10\0\1\27\13\0\1\30"+
"\4\0\1\33\103\0\1\31\102\0\1\33\76\0\3\34"+
"\1\0\3\34\10\0\4\34\7\0\32\34\2\0\3\34"+
"\10\0\1\34\13\0\1\35\11\0\1\35\74\0\3\36"+
"\7\0\1\36\106\0\1\142\1\143\62\0\1\144\2\0"+
"\1\144\1\145\11\0\1\144\11\0\1\146\1\147\1\150"+
"\1\151\4\144\1\152\1\153\1\154\1\155\1\144\1\156"+
"\1\157\1\160\1\144\1\161\1\144\1\162\1\163\1\144"+
"\1\164\1\165\1\166\1\0\1\144\2\0\3\144\10\0"+
"\1\144\13\0\1\41\11\0\1\41\73\0\1\42\11\0"+
"\1\42\6\0\1\167\56\0\1\144\2\0\1\170\1\145"+
"\11\0\1\144\10\0\1\171\1\146\1\147\1\150\1\151"+
"\4\144\1\152\1\153\1\154\1\155\1\144\1\156\1\172"+
"\1\160\1\144\1\161\1\144\1\162\1\163\1\144\1\164"+
"\1\165\1\166\1\0\1\144\2\0\3\144\10\0\1\144"+
"\13\0\4\44\6\0\2\44\1\0\1\173\2\0\1\46"+
"\35\0\1\47\43\0\1\174\1\175\146\0\1\176\17\0"+
"\3\177\1\200\1\177\1\201\1\202\1\203\3\177\1\0"+
"\20\177\1\204\1\205\1\177\1\206\3\177\1\207\7\177"+
"\1\210\4\177\1\200\1\177\1\203\1\200\22\177\10\0"+
"\1\52\3\211\1\55\1\0\1\56\3\0\1\52\1\211"+
"\1\57\1\60\1\61\3\0\1\212\40\0\1\64\1\65"+
"\1\66\1\67\1\70\1\71\1\72\1\73\1\74\12\0"+
"\4\211\1\55\1\0\1\56\3\0\2\211\1\57\1\60"+
"\1\61\3\0\1\212\40\0\1\64\1\65\1\66\1\67"+
"\1\70\1\71\1\72\1\73\1\74\12\0\3\211\1\53"+
"\1\55\1\0\1\56\3\0\2\211\1\57\1\60\1\61"+
"\3\0\1\212\40\0\1\64\1\65\1\66\1\67\1\70"+
"\1\71\1\72\1\73\1\74\106\0\1\213\25\0\1\214"+
"\1\175\61\0\1\215\1\216\1\215\1\0\2\216\1\215"+
"\1\217\7\0\1\216\1\0\1\217\10\0\25\216\4\215"+
"\1\216\2\0\3\216\10\0\1\216\71\0\1\220\27\0"+
"\1\221\1\222\1\223\1\222\6\0\1\221\1\222\62\0"+
"\25\75\1\224\1\225\1\226\1\0\1\75\1\0\77\75"+
"\1\227\1\230\60\75\4\225\1\231\4\225\3\0\7\225"+
"\1\0\2\225\1\75\57\225\4\232\1\233\4\232\3\0"+
"\7\232\1\0\3\232\1\0\56\232\10\0\4\103\6\0"+
"\2\103\72\0\4\105\6\0\2\105\62\0\4\106\1\0"+
"\4\106\3\0\7\106\1\0\2\106\1\0\57\106\3\234"+
"\1\235\1\234\1\236\1\237\1\240\3\234\1\0\12\234"+
"\1\241\5\234\1\242\1\243\1\234\1\244\3\234\1\245"+
"\7\234\1\246\4\234\1\235\1\234\1\240\1\235\22\234"+
"\13\0\1\110\102\0\4\247\2\0\1\250\3\0\2\247"+
"\64\0\1\251\2\0\2\251\11\0\1\251\12\0\25\251"+
"\4\0\1\251\2\0\3\251\10\0\1\251\22\0\1\252"+
"\66\0\11\253\2\124\1\125\7\253\1\124\73\253\2\124"+
"\1\125\7\253\1\124\4\253\1\254\2\253\1\255\6\253"+
"\1\256\1\253\1\257\41\253\1\0\1\260\1\0\1\260"+
"\3\0\1\260\1\261\11\0\1\261\35\0\4\260\32\0"+
"\4\132\6\0\2\132\62\0\13\133\1\262\72\133\24\23"+
"\1\134\1\0\104\23\1\0\1\135\60\23\11\143\2\263"+
"\1\264\7\143\1\263\62\143\1\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\32\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\1\144"+
"\1\265\30\144\2\0\3\144\10\0\1\144\3\0\11\146"+
"\2\266\1\267\7\146\1\266\62\146\1\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\1\144\1\270\15\144\1\271"+
"\4\144\1\272\5\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\5\144\1\273"+
"\24\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\3\144\1\274\5\144\1\275"+
"\2\144\1\276\15\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\1\277\2\144\10\0\4\144\7\0\5\144"+
"\1\300\24\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\1\144\1\301\1\144\10\0\4\144\7\0\1\302"+
"\31\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\11\144\1\303\20\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\1\304\31\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\20\144"+
"\1\305\11\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\2\144\1\306\3\144"+
"\1\307\7\144\1\310\13\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\1\144\1\311\1\144\10\0\4\144"+
"\7\0\3\144\1\312\1\144\1\313\4\144\1\314\1\144"+
"\1\315\15\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\1\144\1\316\1\144\10\0\4\144\7\0\11\144"+
"\1\317\20\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\1\144\1\320\1\144\10\0\4\144\7\0\14\144"+
"\1\321\15\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\7\144\1\322\22\144"+
"\2\0\3\144\10\0\1\144\56\0\1\323\105\0\1\324"+
"\115\0\1\325\23\0\3\144\1\0\3\144\1\326\7\0"+
"\2\144\1\327\1\144\7\0\15\144\1\330\14\144\2\0"+
"\3\144\10\0\1\144\3\0\11\171\3\0\7\171\1\0"+
"\62\171\1\0\3\144\1\0\3\144\1\331\7\0\2\144"+
"\1\332\1\144\7\0\2\144\1\333\3\144\1\307\7\144"+
"\1\310\13\144\2\0\3\144\10\0\1\144\3\0\11\175"+
"\3\0\7\175\1\0\62\175\67\0\1\334\21\0\1\335"+
"\3\0\1\335\50\0\1\335\1\0\2\335\23\0\3\336"+
"\3\0\1\336\32\0\2\336\3\0\1\336\1\0\1\336"+
"\1\0\1\336\2\0\1\336\1\0\4\336\3\0\1\336"+
"\1\0\1\336\15\0\3\337\3\0\1\337\32\0\2\337"+
"\3\0\1\337\1\0\1\337\1\0\1\337\2\0\1\337"+
"\1\0\4\337\3\0\1\337\1\0\1\337\17\0\1\200"+
"\3\0\1\200\50\0\1\200\1\0\2\200\30\0\1\340"+
"\36\0\1\341\6\0\1\342\1\0\1\343\30\0\1\215"+
"\1\0\1\215\3\0\1\215\50\0\4\215\23\0\3\216"+
"\1\0\3\216\1\344\7\0\4\216\4\0\1\345\2\0"+
"\32\216\2\0\3\216\10\0\1\216\72\0\1\346\31\0"+
"\1\222\72\0\24\227\1\347\61\227\11\230\2\350\1\75"+
"\7\230\1\350\62\230\11\225\3\0\7\225\1\0\62\225"+
"\27\0\1\75\56\0\3\232\1\351\1\352\1\232\1\353"+
"\1\354\1\232\3\0\7\232\1\0\34\232\1\351\1\232"+
"\1\354\1\351\22\232\3\0\1\355\3\0\1\355\50\0"+
"\1\355\1\0\2\355\23\0\3\356\3\0\1\356\32\0"+
"\2\356\3\0\1\356\1\0\1\356\1\0\1\356\2\0"+
"\1\356\1\0\4\356\3\0\1\356\1\0\1\356\15\0"+
"\3\357\3\0\1\357\32\0\2\357\3\0\1\357\1\0"+
"\1\357\1\0\1\357\2\0\1\357\1\0\4\357\3\0"+
"\1\357\1\0\1\357\17\0\1\235\3\0\1\235\50\0"+
"\1\235\1\0\2\235\23\0\3\251\1\0\3\251\10\0"+
"\4\251\4\0\1\360\2\0\32\251\2\0\3\251\10\0"+
"\1\251\3\0\11\254\2\361\1\362\7\254\1\361\62\254"+
"\11\253\2\124\1\125\7\253\1\124\10\253\1\363\62\253"+
"\2\124\1\125\7\253\1\124\14\253\1\364\56\253\2\124"+
"\1\125\7\253\1\124\20\253\1\365\41\253\1\0\1\260"+
"\1\0\1\260\3\0\1\260\50\0\4\260\23\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\1\366\31\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\1\367\1\144\1\370\13\144\1\371\13\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\22\144\1\372\7\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\1\144\1\373\30\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\2\144"+
"\1\374\27\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\4\144\1\375\25\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\22\144\1\376\7\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\20\144\1\377\11\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\2\144"+
"\1\u0100\27\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\10\144\1\u0101\21\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\1\144\1\u0102\10\144\1\u0103\17\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\1\144\1\u0104\30\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\7\144\1\u0105\2\144\1\u0106\17\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\1\144\1\u0107\30\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\15\144"+
"\1\u0108\14\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\14\144\1\u0109\15\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\1\u010a\31\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\14\144\1\u010b\15\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\22\144\1\u010c"+
"\7\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\14\144\1\u010d\15\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\12\144\1\u010e\17\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\14\144\1\u010f\15\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\15\144\1\u0110"+
"\14\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\10\144\1\u0111\21\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\14\144\1\u0112\15\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\20\144\1\u0113\11\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\16\144\1\u0114"+
"\13\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\20\144\1\u0115\11\144\2\0"+
"\3\144\10\0\1\144\36\0\1\u0116\105\0\1\u0117\125\0"+
"\1\u0118\42\0\1\326\11\0\1\326\64\0\3\144\1\0"+
"\3\144\1\326\7\0\2\144\1\327\1\144\7\0\32\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\2\144\1\u0119\27\144\2\0\3\144"+
"\10\0\1\144\13\0\1\331\11\0\1\331\64\0\3\144"+
"\1\0\3\144\1\331\7\0\2\144\1\332\1\144\7\0"+
"\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\14\144\1\u011a\15\144\2\0"+
"\3\144\10\0\1\144\73\0\1\u011b\16\0\3\u011c\3\0"+
"\1\u011c\32\0\2\u011c\3\0\1\u011c\1\0\1\u011c\1\0"+
"\1\u011c\2\0\1\u011c\1\0\4\u011c\3\0\1\u011c\1\0"+
"\1\u011c\15\0\3\u011d\3\0\1\u011d\32\0\2\u011d\3\0"+
"\1\u011d\1\0\1\u011d\1\0\1\u011d\2\0\1\u011d\1\0"+
"\4\u011d\3\0\1\u011d\1\0\1\u011d\71\0\1\u011e\70\0"+
"\1\u011f\1\0\1\u0120\110\0\1\u0121\73\0\1\u0122\62\0"+
"\1\344\11\0\1\344\5\0\1\345\145\0\1\u0123\15\0"+
"\24\227\1\347\1\75\60\227\13\350\1\75\11\350\1\u0124"+
"\1\u0125\1\u0126\1\230\1\350\1\230\53\350\3\0\1\232"+
"\3\0\1\232\17\0\1\75\30\0\1\232\1\0\2\232"+
"\26\0\1\u0127\1\0\1\u0128\20\0\1\75\57\0\3\u0129"+
"\3\0\1\u0129\17\0\1\75\12\0\2\u0129\3\0\1\u0129"+
"\1\0\1\u0129\1\0\1\u0129\2\0\1\u0129\1\0\4\u0129"+
"\3\0\1\u0129\1\0\1\u0129\17\0\1\351\3\0\1\351"+
"\17\0\1\75\30\0\1\351\1\0\2\351\23\0\3\u012a"+
"\3\0\1\u012a\32\0\2\u012a\3\0\1\u012a\1\0\1\u012a"+
"\1\0\1\u012a\2\0\1\u012a\1\0\4\u012a\3\0\1\u012a"+
"\1\0\1\u012a\15\0\3\u012b\3\0\1\u012b\32\0\2\u012b"+
"\3\0\1\u012b\1\0\1\u012b\1\0\1\u012b\2\0\1\u012b"+
"\1\0\4\u012b\3\0\1\u012b\1\0\1\u012b\14\0\11\253"+
"\2\124\1\125\7\253\1\124\7\253\1\u012c\63\253\2\124"+
"\1\125\7\253\1\124\17\253\1\u012d\53\253\2\124\1\125"+
"\7\253\1\124\21\253\1\u012e\40\253\1\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\16\144\1\u012f\13\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\2\144\1\u0130\27\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\6\144\1\u0131\1\u0132\22\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\12\144"+
"\1\u0133\17\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\12\144\1\u0134\17\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\5\144\1\u0135\24\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\1\144\1\u0136\1\144"+
"\10\0\4\144\7\0\32\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\5\144"+
"\1\u0137\24\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\7\144\1\u0138\22\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\12\144\1\u0139\17\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\7\144\1\u013a\22\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\6\0\1\146"+
"\2\144\1\u013b\10\144\1\u013c\2\144\1\u013d\13\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\16\144\1\u013e\13\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\12\144\1\u013f\17\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\14\144\1\u0140"+
"\15\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\5\144\1\u0141\24\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\7\144\1\u0142\22\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\7\144\1\u0143\22\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\2\144\1\u0144"+
"\27\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\1\144\1\u0145\30\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\2\144\1\u0146\27\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\1\144\1\u0147\30\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\15\144\1\u0148"+
"\5\144\1\u0149\6\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\4\144\1\u014a"+
"\25\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\1\144\1\u014b\1\144\10\0\4\144\7\0\32\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\15\144\1\u014c\14\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\7\144\1\u014d\22\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\10\144\1\u014e"+
"\21\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\16\144\1\u014f\13\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\12\144\1\u0150\17\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\31\144\1\u0151\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\1\144\1\u0152\1\144\10\0\4\144\7\0\32\144"+
"\2\0\3\144\10\0\1\144\40\0\1\264\105\0\1\u0153"+
"\103\0\1\u0154\53\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\14\144\1\u0155\15\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\1\144"+
"\1\u0145\1\u0156\27\144\2\0\3\144\10\0\1\144\74\0"+
"\1\u0157\15\0\3\u0158\3\0\1\u0158\32\0\2\u0158\3\0"+
"\1\u0158\1\0\1\u0158\1\0\1\u0158\2\0\1\u0158\1\0"+
"\4\u0158\3\0\1\u0158\1\0\1\u0158\71\0\1\u0159\71\0"+
"\1\u015a\101\0\1\u015b\112\0\1\u015c\122\0\1\u015d\117\0"+
"\1\u015e\14\0\13\350\1\75\10\350\1\u015f\1\230\60\350"+
"\4\u0125\1\u0160\4\u0125\2\350\1\75\7\u0125\1\350\2\u0125"+
"\1\350\57\u0125\4\u0161\1\u0162\4\u0161\2\350\1\75\7\u0161"+
"\1\350\3\u0161\1\230\56\u0161\4\0\1\u0127\1\0\1\u0128"+
"\100\0\3\u0129\3\0\1\u0129\32\0\2\u0129\3\0\1\u0129"+
"\1\0\1\u0129\1\0\1\u0129\2\0\1\u0129\1\0\4\u0129"+
"\3\0\1\u0129\1\0\1\u0129\15\0\3\u0163\3\0\1\u0163"+
"\32\0\2\u0163\3\0\1\u0163\1\0\1\u0163\1\0\1\u0163"+
"\2\0\1\u0163\1\0\4\u0163\3\0\1\u0163\1\0\1\u0163"+
"\15\0\3\u0164\3\0\1\u0164\32\0\2\u0164\3\0\1\u0164"+
"\1\0\1\u0164\1\0\1\u0164\2\0\1\u0164\1\0\4\u0164"+
"\3\0\1\u0164\1\0\1\u0164\14\0\11\253\2\124\1\125"+
"\7\253\1\124\11\253\1\u0165\61\253\2\124\1\125\7\253"+
"\1\124\4\253\1\u0166\4\253\1\u0167\10\253\1\u0168\50\253"+
"\2\124\1\125\7\253\1\124\16\253\1\u0169\43\253\1\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\5\144\1\u016a"+
"\24\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\6\0\1\146\2\144\1\u016b\27\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\4\144\1\u016c\25\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\24\144\1\u016d\5\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\1\144\1\u016e\1\144\10\0\4\144"+
"\7\0\32\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\7\144\1\u016f\22\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\4\144\1\u0170\25\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\1\144\1\u0171\30\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\6\144"+
"\1\u0172\23\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\1\u0173\7\0\2\144\1\u0174\1\144\7\0"+
"\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\7\144\1\u0175\22\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\1\144\1\u0176\30\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\3\144\1\u0177\26\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\14\144\1\u0178"+
"\15\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\12\144\1\u0179\17\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\2\144\1\u017a\27\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\12\144\1\u017b\17\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\10\144\1\u017c"+
"\21\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\1\u017d\2\144\10\0\4\144\7\0\32\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\4\144\1\u017e\25\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\23\144"+
"\1\u017f\6\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\16\144\1\u0180\13\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\7\144\1\u0181\22\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\11\144\1\u0182\20\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\7\144"+
"\1\u0183\22\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\17\144\1\u0184\12\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\15\144\1\u0185\14\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\12\144\1\u0186\17\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\7\144"+
"\1\u0187\22\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\16\144\1\u0188\13\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\1\u0189\31\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\24\144\1\u018a\5\144\2\0\3\144\10\0\1\144\40\0"+
"\1\u018b\51\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\2\144\1\u018c\27\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\7\144\1\u018d"+
"\22\144\2\0\3\144\10\0\1\144\75\0\1\u018e\55\0"+
"\1\u018f\105\0\1\u0190\100\0\1\u0191\105\0\1\u0192\103\0"+
"\1\u0193\144\0\1\u0194\13\0\11\u015f\2\u0195\1\u0196\7\u015f"+
"\1\u0195\1\u0197\61\u015f\11\u0125\2\350\1\75\7\u0125\1\350"+
"\62\u0125\11\230\2\350\1\75\7\230\1\350\3\230\1\350"+
"\56\230\3\u0161\1\u0198\1\u0199\1\u0161\1\u019a\1\u019b\1\u0161"+
"\2\350\1\75\7\u0161\1\350\34\u0161\1\u0198\1\u0161\1\u019b"+
"\1\u0198\22\u0161\1\0\3\u019c\3\0\1\u019c\32\0\2\u019c"+
"\3\0\1\u019c\1\0\1\u019c\1\0\1\u019c\2\0\1\u019c"+
"\1\0\4\u019c\3\0\1\u019c\1\0\1\u019c\14\0\11\253"+
"\2\124\1\125\7\253\1\124\4\253\1\u019d\4\253\1\u019e"+
"\50\253\11\u0166\2\u019f\1\u01a0\7\u0166\1\u019f\62\u0166\11\253"+
"\2\124\1\125\7\253\1\124\12\253\1\u01a1\60\253\2\124"+
"\1\125\7\253\1\124\23\253\1\u01a2\43\253\1\u01a3\3\253"+
"\2\124\1\125\7\253\1\124\62\253\1\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\23\144\1\u01a4\6\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\3\144\1\u01a5\26\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\14\144\1\u01a6\15\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\7\144\1\u01a7"+
"\22\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\23\144\1\u01a8\6\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\17\144\1\u01a9\12\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\7\144\1\u01aa\22\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\1\u01ab\31\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\15\144\1\u01ac\14\144\2\0\3\144"+
"\10\0\1\144\5\0\1\u01ad\2\0\2\u01ad\1\0\1\u0173"+
"\7\0\1\u01ad\1\0\1\u0173\10\0\25\u01ad\4\0\1\u01ad"+
"\2\0\3\u01ad\10\0\1\u01ad\4\0\1\144\1\u01ad\1\144"+
"\1\0\2\u01ad\1\144\1\u0173\7\0\1\u01ad\1\144\1\u0174"+
"\1\144\7\0\25\u01ad\4\144\1\u01ad\2\0\3\u01ad\10\0"+
"\1\u01ad\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\23\144\1\u01ae\6\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\4\144\1\u01af"+
"\25\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\12\144\1\u01b0\17\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\5\144\1\u01b1\24\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\1\u01b2\31\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\2\144\1\u01b3\27\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\14\144\1\u01b4\15\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\14\144\1\u01b5\15\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\3\144"+
"\1\u01b6\26\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\4\144\1\u01b7\25\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\17\144\1\u01b8\12\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\20\144\1\u01b9\11\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\1\144"+
"\1\u01ba\30\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\1\u01bb\7\0\2\144\1\u01bc\1\144\7\0"+
"\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\7\144\1\u01bd\22\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\4\144\1\u01be\25\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\21\144\1\u01bf\10\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\16\144\1\u01c0"+
"\13\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\7\144\1\u01c1\22\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\1\331"+
"\7\0\2\144\1\332\1\144\7\0\15\144\1\u01c2\14\144"+
"\2\0\3\144\10\0\1\144\75\0\1\u01c3\52\0\1\u01c4"+
"\105\0\1\u01c5\110\0\1\u01c6\100\0\1\u01c7\105\0\1\u01c8"+
"\142\0\1\u01c9\13\0\13\u0195\1\u0196\10\u0195\1\u01ca\1\u01cb"+
"\1\u01cc\1\u01cd\1\u015f\1\u0195\1\u015f\53\u0195\24\u0196\1\u01ce"+
"\1\u01cf\1\u01d0\1\u01d1\1\227\1\u0196\1\227\53\u0196\11\u015f"+
"\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\1\350\60\u015f\3\230"+
"\1\u0161\3\230\1\u0161\1\230\2\350\1\75\7\230\1\350"+
"\3\230\1\350\30\230\1\u0161\1\230\2\u0161\26\230\1\u01d2"+
"\1\230\1\u01d3\2\230\2\350\1\75\7\230\1\350\3\230"+
"\1\350\57\230\3\u01d4\3\230\1\u01d4\1\230\2\350\1\75"+
"\7\230\1\350\3\230\1\350\12\230\2\u01d4\3\230\1\u01d4"+
"\1\230\1\u01d4\1\230\1\u01d4\2\230\1\u01d4\1\230\4\u01d4"+
"\3\230\1\u01d4\1\230\1\u01d4\17\230\1\u0198\3\230\1\u0198"+
"\1\230\2\350\1\75\7\230\1\350\3\230\1\350\30\230"+
"\1\u0198\1\230\2\u0198\22\230\1\0\3\232\3\0\1\232"+
"\32\0\2\232\3\0\1\232\1\0\1\232\1\0\1\232"+
"\2\0\1\232\1\0\4\232\3\0\1\232\1\0\1\232"+
"\14\0\11\u019d\2\u01d5\1\u01d6\7\u019d\1\u01d5\62\u019d\11\253"+
"\2\124\1\125\7\253\1\124\12\253\1\u01d7\60\253\2\124"+
"\1\125\7\253\1\124\13\253\1\u01d8\57\253\2\124\1\125"+
"\7\253\1\124\21\253\1\u01d9\51\253\2\124\1\125\7\253"+
"\1\124\11\253\1\u01da\50\253\1\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\7\144\1\u01db\22\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\4\144\1\u01dc\25\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\22\144"+
"\1\u01dd\7\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\4\144\1\u01de\25\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\7\144\1\u01df\22\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\7\144\1\u01e0\22\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\16\144"+
"\1\u01e1\13\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\1\u01e2\2\144\10\0\4\144\7\0\32\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\1\u01e3"+
"\7\0\2\144\1\u01e4\1\144\7\0\32\144\2\0\3\144"+
"\10\0\1\144\4\0\3\u01ad\1\0\3\u01ad\1\u01e5\3\0"+
"\1\u0173\1\0\1\u01e6\1\0\4\u01ad\7\0\32\u01ad\2\0"+
"\3\u01ad\10\0\1\u01ad\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\15\144\1\u01e7\14\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\5\144\1\u01e8\24\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\3\144\10\0\4\144\6\0\1\146\32\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\15\144\1\u01e9\14\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\5\144\1\u01ea\24\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\3\144"+
"\1\u01eb\26\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\16\144\1\u01ec\13\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\12\144\1\u01ed\17\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\4\144\1\u01ee\25\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\1\u01ef\7\0\2\144\1\u01f0"+
"\1\144\7\0\32\144\2\0\3\144\10\0\1\144\4\0"+
"\3\144\1\0\1\144\1\u01f1\1\144\10\0\4\144\7\0"+
"\32\144\2\0\3\144\10\0\1\144\5\0\1\u01f2\2\0"+
"\2\u01f2\1\0\1\u01bb\7\0\1\u01f2\1\0\1\u01bb\10\0"+
"\25\u01f2\4\0\1\u01f2\2\0\3\u01f2\10\0\1\u01f2\4\0"+
"\1\144\1\u01f2\1\144\1\0\2\u01f2\1\144\1\u01bb\7\0"+
"\1\u01f2\1\144\1\u01bc\1\144\7\0\25\u01f2\4\144\1\u01f2"+
"\2\0\3\u01f2\10\0\1\u01f2\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\15\144\1\u01f3\14\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\1\u01f4\7\0"+
"\2\144\1\u01f5\1\144\7\0\32\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\1\326\7\0\2\144"+
"\1\327\1\144\7\0\15\144\1\u01f6\14\144\2\0\3\144"+
"\10\0\1\144\13\0\4\u01c3\6\0\2\u01c3\6\0\1\u01f7"+
"\124\0\1\u01f8\105\0\1\u01f9\73\0\1\u01fa\110\0\1\u01fb"+
"\147\0\1\u01fc\11\0\4\u01fd\6\0\2\u01fd\62\0\13\u0195"+
"\1\u0196\10\u0195\1\u01ca\1\u01fe\1\u01cc\1\u01cd\1\u015f\1\u0195"+
"\1\u015f\66\u0195\1\u0196\10\u0195\1\u01ff\1\u015f\60\u0195\4\u01cc"+
"\1\u0200\4\u01cc\2\u0195\1\u0196\7\u01cc\1\u0195\1\u0201\1\u01cc"+
"\1\u0195\57\u01cc\4\u0202\1\u0203\4\u0202\2\u0195\1\u0196\7\u0202"+
"\1\u0195\1\u0204\2\u0202\1\u015f\56\u0202\24\u0196\1\u01ce\1\u0205"+
"\1\u01d0\1\u01d1\1\227\1\u0196\1\227\77\u0196\1\u0206\1\u015f"+
"\60\u0196\4\u01d0\1\u0207\4\u01d0\3\227\7\u01d0\1\227\1\u0208"+
"\1\u01d0\1\u0196\57\u01d0\4\u0209\1\u020a\4\u0209\3\227\7\u0209"+
"\1\227\1\u020b\2\u0209\1\227\56\u0209\4\230\1\u01d2\1\230"+
"\1\u01d3\2\230\2\350\1\75\7\230\1\350\63\230\3\u01d4"+
"\3\230\1\u01d4\1\230\2\350\1\75\7\230\1\350\16\230"+
"\2\u01d4\3\230\1\u01d4\1\230\1\u01d4\1\230\1\u01d4\2\230"+
"\1\u01d4\1\230\4\u01d4\3\230\1\u01d4\1\230\1\u01d4\15\230"+
"\3\u020c\3\230\1\u020c\1\230\2\350\1\75\7\230\1\350"+
"\16\230\2\u020c\3\230\1\u020c\1\230\1\u020c\1\230\1\u020c"+
"\2\230\1\u020c\1\230\4\u020c\3\230\1\u020c\1\230\1\u020c"+
"\14\230\11\253\2\124\1\125\7\253\1\124\13\253\1\u020d"+
"\57\253\2\124\1\125\7\253\1\124\14\253\1\u020e\56\253"+
"\2\124\1\125\7\253\1\124\4\253\1\u020f\66\253\2\124"+
"\1\125\7\253\1\124\12\253\1\u0210\47\253\1\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\5\144\1\u0211\24\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\1\u0212\7\0\2\144\1\u0212\1\144\7\0\32\144\2\0"+
"\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
"\4\144\7\0\1\144\1\u0213\30\144\2\0\3\144\10\0"+
"\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
"\14\144\1\u0214\15\144\2\0\3\144\10\0\1\144\3\0"+
"\2\u0215\1\u0216\2\u0215\2\u0216\1\u0215\1\u01e3\3\0\4\u0215"+
"\1\u0216\1\u0215\1\u01e3\1\0\7\u0215\25\u0216\4\u0215\1\u0216"+
"\2\u0215\3\u0216\10\u0215\1\u0216\4\u0215\1\u0217\1\u0216\1\u0217"+
"\1\u0215\2\u0216\1\u0217\1\u01e3\3\0\4\u0215\1\u0216\1\u0217"+
"\1\u01e4\1\144\7\u0215\25\u0216\4\u0217\1\u0216\2\u0215\3\u0216"+
"\10\u0215\1\u0216\3\u0215\10\0\1\u01e5\3\0\1\u0173\1\0"+
"\1\u01e6\3\0\1\u01e5\73\0\1\u01e6\6\0\1\u0218\2\0"+
"\1\u01e6\64\0\3\144\1\0\3\144\1\u0219\7\0\2\144"+
"\1\u021a\1\144\7\0\32\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\6\144"+
"\1\u021b\23\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\7\144\1\u021c\22\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\1\144\1\u021d\30\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\4\144\1\u021e\25\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\2\144"+
"\1\u021f\27\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\5\144\1\u0220\24\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\5\144\1\u0221\24\144\2\0\3\144"+
"\10\0\1\144\3\0\2\u0222\1\u0223\2\u0222\2\u0223\1\u0222"+
"\1\u01ef\3\0\4\u0222\1\u0223\1\u0222\1\u01ef\1\0\7\u0222"+
"\25\u0223\4\u0222\1\u0223\2\u0222\3\u0223\10\u0222\1\u0223\4\u0222"+
"\1\u0224\1\u0223\1\u0224\1\u0222\2\u0223\1\u0224\1\u01ef\3\0"+
"\4\u0222\1\u0223\1\u0224\1\u01f0\1\144\7\u0222\25\u0223\4\u0224"+
"\1\u0223\2\u0222\3\u0223\10\u0222\1\u0223\3\u0222\1\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\24\144\1\u0225\5\144"+
"\2\0\3\144\10\0\1\144\4\0\3\u01f2\1\0\3\u01f2"+
"\10\0\4\u01f2\7\0\32\u01f2\2\0\3\u01f2\10\0\1\u01f2"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\15\144"+
"\1\u0226\14\144\2\0\3\144\10\0\1\144\3\0\1\u0227"+
"\1\u0228\1\u0227\1\u0228\3\u0227\1\u0228\1\u01f4\3\0\6\u0227"+
"\1\u01f4\1\0\34\u0227\4\u0228\23\u0227\1\u0229\1\u022a\1\u0229"+
"\1\u0227\2\u022a\1\u0229\1\u01f4\3\0\4\u0227\2\u022a\1\u01f5"+
"\1\144\7\u0227\25\u022a\4\u0229\1\u022a\2\u0227\3\u022a\10\u0227"+
"\1\u022a\3\u0227\47\0\1\u022b\105\0\1\u022c\142\0\1\u022d"+
"\40\0\1\u022e\65\0\1\u022f\76\0\4\u01fd\6\0\2\u01fd"+
"\6\0\1\u0230\53\0\13\350\1\75\10\350\1\u0195\1\u0124"+
"\1\u0231\1\u0232\56\350\11\u015f\2\u0195\1\u0196\7\u015f\1\u0195"+
"\1\u0197\1\u0195\60\u015f\11\u01cc\2\u0195\1\u0196\7\u01cc\1\u0195"+
"\1\u0201\65\u01cc\1\u0200\4\u01cc\2\u0195\1\u0196\7\u01cc\1\u0195"+
"\1\u0201\1\u0231\1\u0195\57\u01cc\11\u015f\2\u0195\1\u0196\7\u015f"+
"\1\u0195\1\u0197\2\u015f\1\u0195\56\u015f\3\u0202\1\u0233\1\u0234"+
"\1\u0202\1\u0235\1\u0236\1\u0202\2\u0195\1\u0196\7\u0202\1\u0195"+
"\1\u0204\33\u0202\1\u0233\1\u0202\1\u0236\1\u0233\22\u0202\11\u015f"+
"\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\1\350\1\u015f\1\u0195"+
"\56\u015f\24\75\1\u0196\1\u0124\1\u0237\1\u0238\56\75\24\227"+
"\1\347\1\u0196\60\227\11\u01d0\3\227\7\u01d0\1\227\1\u0208"+
"\65\u01d0\1\u0207\4\u01d0\3\227\7\u01d0\1\227\1\u0208\1\u0237"+
"\1\u0196\57\u01d0\24\227\1\347\2\227\1\u0196\56\227\3\u0209"+
"\1\u0239\1\u023a\1\u0209\1\u023b\1\u023c\1\u0209\3\227\7\u0209"+
"\1\227\1\u020b\33\u0209\1\u0239\1\u0209\1\u023c\1\u0239\22\u0209"+
"\24\227\1\347\1\75\1\227\1\u0196\56\227\1\230\3\u023d"+
"\3\230\1\u023d\1\230\2\350\1\75\7\230\1\350\16\230"+
"\2\u023d\3\230\1\u023d\1\230\1\u023d\1\230\1\u023d\2\230"+
"\1\u023d\1\230\4\u023d\3\230\1\u023d\1\230\1\u023d\14\230"+
"\11\253\2\124\1\125\7\253\1\124\14\253\1\u023e\56\253"+
"\2\124\1\125\7\253\1\124\15\253\1\u023f\44\253\11\u020f"+
"\2\u0240\1\u0241\7\u020f\1\u0240\62\u020f\11\253\2\124\1\125"+
"\7\253\1\124\13\253\1\u0242\46\253\1\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\6\144\1\u0243\23\144\2\0"+
"\3\144\10\0\1\144\3\0\13\u0212\1\0\72\u0212\1\0"+
"\3\144\1\0\3\144\10\0\4\144\7\0\2\144\1\u0244"+
"\27\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\10\0\4\144\7\0\15\144\1\u0245\14\144\2\0"+
"\3\144\10\0\1\144\3\0\11\u0215\3\0\7\u0215\1\0"+
"\63\u0215\3\u0216\1\u0215\3\u0216\1\u0246\3\0\2\u01e3\2\u0215"+
"\3\u0216\1\u0247\7\u0215\32\u0216\2\u0215\3\u0216\10\u0215\1\u0216"+
"\4\u0215\3\u0217\1\u0215\3\u0217\1\u0215\3\0\4\u0215\3\u0217"+
"\1\144\7\u0215\32\u0217\2\u0215\3\u0217\10\u0215\1\u0217\3\u0215"+
"\10\0\1\u0248\5\0\1\u01e6\3\0\1\u0248\65\0\1\u0249"+
"\2\0\2\u0249\1\0\1\u0219\7\0\1\u0249\1\0\1\u0219"+
"\10\0\25\u0249\4\0\1\u0249\2\0\3\u0249\10\0\1\u0249"+
"\4\0\1\144\1\u0249\1\144\1\0\2\u0249\1\144\1\u0219"+
"\7\0\1\u0249\1\144\1\u021a\1\144\7\0\25\u0249\4\144"+
"\1\u0249\2\0\3\u0249\10\0\1\u0249\4\0\3\144\1\0"+
"\3\144\1\u024a\7\0\2\144\1\u024b\1\144\6\0\1\146"+
"\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
"\3\144\1\u024c\7\0\2\144\1\u024d\1\144\7\0\32\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\5\144\1\u024e\24\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\1\144\1\u024f\30\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\10\0\4\144\7\0\4\144"+
"\1\u0250\25\144\2\0\3\144\10\0\1\144\3\0\11\u0222"+
"\3\0\7\u0222\1\0\63\u0222\3\u0223\1\u0222\3\u0223\1\u0251"+
"\3\0\1\u01ef\3\u0222\3\u0223\1\u0252\7\u0222\32\u0223\2\u0222"+
"\3\u0223\10\u0222\1\u0223\4\u0222\3\u0224\1\u0222\3\u0224\1\u0222"+
"\3\0\4\u0222\3\u0224\1\144\7\u0222\32\u0224\2\u0222\3\u0224"+
"\10\u0222\1\u0224\3\u0222\11\u0227\3\0\7\u0227\1\0\63\u0227"+
"\1\u0228\1\u0227\1\u0228\3\u0227\1\u0228\1\u0227\3\0\7\u0227"+
"\1\0\34\u0227\4\u0228\23\u0227\1\u0229\1\u022a\1\u0229\1\u0227"+
"\2\u022a\1\u0229\1\u0227\3\0\4\u0227\3\u022a\1\144\7\u0227"+
"\25\u022a\4\u0229\1\u022a\2\u0227\3\u022a\10\u0227\1\u022a\4\u0227"+
"\3\u022a\1\u0227\3\u022a\1\u0227\3\0\4\u0227\3\u022a\1\144"+
"\7\u0227\32\u022a\2\u0227\3\u022a\10\u0227\1\u022a\3\u0227\50\0"+
"\1\u0253\105\0\1\u0254\54\0\1\u0255\144\0\1\u0256\25\0"+
"\1\u0257\1\0\4\u0231\1\u0258\4\u0231\2\350\1\75\7\u0231"+
"\1\350\1\u0231\1\u0259\1\u0231\1\u025a\1\u0125\1\u0231\1\u0125"+
"\53\u0231\4\u025b\1\u025c\4\u025b\2\350\1\75\7\u025b\1\350"+
"\1\u025b\1\u0124\1\u025d\1\u0126\1\u0161\1\u025b\1\u0161\53\u025b"+
"\3\u015f\1\u0202\3\u015f\1\u0202\1\u015f\2\u0195\1\u0196\7\u015f"+
"\1\u0195\1\u0197\2\u015f\1\u0195\30\u015f\1\u0202\1\u015f\2\u0202"+
"\26\u015f\1\u025e\1\u015f\1\u025f\2\u015f\2\u0195\1\u0196\7\u015f"+
"\1\u0195\1\u0197\2\u015f\1\u0195\57\u015f\3\u0260\3\u015f\1\u0260"+
"\1\u015f\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\2\u015f\1\u0195"+
"\12\u015f\2\u0260\3\u015f\1\u0260\1\u015f\1\u0260\1\u015f\1\u0260"+
"\2\u015f\1\u0260\1\u015f\4\u0260\3\u015f\1\u0260\1\u015f\1\u0260"+
"\17\u015f\1\u0233\3\u015f\1\u0233\1\u015f\2\u0195\1\u0196\7\u015f"+
"\1\u0195\1\u0197\2\u015f\1\u0195\30\u015f\1\u0233\1\u015f\2\u0233"+
"\22\u015f\4\u0237\1\u0261\4\u0237\3\75\7\u0237\1\75\1\u0237"+
"\1\u0262\1\u0237\1\u0263\1\225\1\u0237\1\225\53\u0237\4\u0264"+
"\1\u0265\4\u0264\3\75\7\u0264\1\75\1\u0264\1\224\1\u0266"+
"\1\226\1\232\1\u0264\1\232\53\u0264\3\227\1\u0209\3\227"+
"\1\u0209\14\227\1\347\2\227\1\u0196\30\227\1\u0209\1\227"+
"\2\u0209\26\227\1\u0267\1\227\1\u0268\15\227\1\347\2\227"+
"\1\u0196\57\227\3\u0269\3\227\1\u0269\14\227\1\347\2\227"+
"\1\u0196\12\227\2\u0269\3\227\1\u0269\1\227\1\u0269\1\227"+
"\1\u0269\2\227\1\u0269\1\227\4\u0269\3\227\1\u0269\1\227"+
"\1\u0269\17\227\1\u0239\3\227\1\u0239\14\227\1\347\2\227"+
"\1\u0196\30\227\1\u0239\1\227\2\u0239\22\227\1\230\3\u0161"+
"\3\230\1\u0161\1\230\2\350\1\75\7\230\1\350\16\230"+
"\2\u0161\3\230\1\u0161\1\230\1\u0161\1\230\1\u0161\2\230"+
"\1\u0161\1\230\4\u0161\3\230\1\u0161\1\230\1\u0161\14\230"+
"\11\253\2\124\1\125\7\253\1\124\15\253\1\u026a\55\253"+
"\2\124\1\125\7\253\1\124\4\253\1\u026b\66\253\2\124"+
"\1\125\7\253\1\124\14\253\1\u026c\45\253\1\0\3\144"+
"\1\0\3\144\1\u026d\7\0\2\144\1\u026e\1\144\6\0"+
"\1\146\32\144\2\0\3\144\10\0\1\144\4\0\3\144"+
"\1\0\3\144\10\0\4\144\7\0\15\144\1\u026f\14\144"+
"\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\7\144\1\u0226\22\144\2\0\3\144"+
"\10\0\1\144\3\0\10\u0215\1\u0246\3\0\2\u01e3\4\u0215"+
"\1\u0246\1\0\62\u0215\1\0\3\u0247\1\0\3\u0247\1\u0270"+
"\3\0\2\u0271\2\0\4\u0247\7\0\32\u0247\2\0\3\u0247"+
"\10\0\1\u0247\4\0\3\u0249\1\0\3\u0249\1\u0272\3\0"+
"\1\u0219\3\0\4\u0249\7\0\32\u0249\2\0\3\u0249\10\0"+
"\1\u0249\3\0\2\u0273\1\u0274\2\u0273\2\u0274\1\u0273\1\u024a"+
"\3\0\4\u0273\1\u0274\1\u0273\1\u024a\1\0\7\u0273\25\u0274"+
"\4\u0273\1\u0274\2\u0273\3\u0274\10\u0273\1\u0274\4\u0273\1\u0275"+
"\1\u0274\1\u0275\1\u0273\2\u0274\1\u0275\1\u024a\3\0\4\u0273"+
"\1\u0274\1\u0275\1\u024b\1\144\7\u0273\25\u0274\4\u0275\1\u0274"+
"\2\u0273\3\u0274\10\u0273\1\u0274\3\u0273\2\0\1\u0276\2\0"+
"\2\u0276\1\0\1\u024c\7\0\1\u0276\1\0\1\u024c\10\0"+
"\25\u0276\4\0\1\u0276\2\0\3\u0276\10\0\1\u0276\4\0"+
"\1\144\1\u0276\1\144\1\0\2\u0276\1\144\1\u024c\7\0"+
"\1\u0276\1\144\1\u024d\1\144\7\0\25\u0276\4\144\1\u0276"+
"\2\0\3\u0276\10\0\1\u0276\4\0\3\144\1\0\3\144"+
"\10\0\4\144\7\0\6\144\1\u0277\23\144\2\0\3\144"+
"\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
"\7\0\7\144\1\u0278\22\144\2\0\3\144\10\0\1\144"+
"\4\0\3\144\1\0\3\144\1\u0279\7\0\2\144\1\u027a"+
"\1\144\7\0\32\144\2\0\3\144\10\0\1\144\3\0"+
"\10\u0222\1\u0251\3\0\1\u01ef\5\u0222\1\u0251\1\0\62\u0222"+
"\1\0\3\u0252\1\0\3\u0252\1\u027b\3\0\1\u027c\3\0"+
"\4\u0252\7\0\32\u0252\2\0\3\u0252\10\0\1\u0252\45\0"+
"\1\u027d\105\0\1\u027e\76\0\1\u027f\71\0\1\u0280\66\0"+
"\11\u0231\2\350\1\75\7\u0231\1\350\1\u0231\1\u0259\1\u0125"+
"\1\u025a\1\u0125\1\u0231\1\u0125\57\u0231\1\u0258\4\u0231\2\350"+
"\1\75\7\u0231\1\350\1\u01cc\1\u0125\1\350\57\u0231\4\u025d"+
"\1\u0281\4\u025d\2\350\1\75\7\u025d\1\350\2\u025d\1\u025b"+
"\1\u0125\56\u025d\13\350\1\75\11\350\1\u0124\1\u0125\1\u0232"+
"\1\230\1\350\1\230\53\350\3\u025b\1\u0282\1\u0283\1\u025b"+
"\1\u0284\1\u0285\1\u025b\2\350\1\75\7\u025b\1\350\1\u025b"+
"\1\u0124\1\u025d\1\u0286\1\u0161\1\u025b\1\u0161\25\u025b\1\u0282"+
"\1\u025b\1\u0285\1\u0282\22\u025b\4\u0125\1\u0160\4\u0125\2\350"+
"\1\75\7\u0125\1\350\2\u0125\1\350\1\u0231\56\u0125\4\u015f"+
"\1\u025e\1\u015f\1\u025f\2\u015f\2\u0195\1\u0196\7\u015f\1\u0195"+
"\1\u0197\62\u015f\3\u0260\3\u015f\1\u0260\1\u015f\2\u0195\1\u0196"+
"\7\u015f\1\u0195\1\u0197\15\u015f\2\u0260\3\u015f\1\u0260\1\u015f"+
"\1\u0260\1\u015f\1\u0260\2\u015f\1\u0260\1\u015f\4\u0260\3\u015f"+
"\1\u0260\1\u015f\1\u0260\15\u015f\3\u0287\3\u015f\1\u0287\1\u015f"+
"\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\15\u015f\2\u0287\3\u015f"+
"\1\u0287\1\u015f\1\u0287\1\u015f\1\u0287\2\u015f\1\u0287\1\u015f"+
"\4\u0287\3\u015f\1\u0287\1\u015f\1\u0287\14\u015f\11\u0237\3\75"+
"\7\u0237\1\75\1\u0237\1\u0262\1\225\1\u0263\1\225\1\u0237"+
"\1\225\57\u0237\1\u0261\4\u0237\3\75\7\u0237\1\75\1\u01d0"+
"\1\u0125\1\75\57\u0237\4\u0266\1\u0288\4\u0266\3\0\7\u0266"+
"\1\0\2\u0266\1\u0264\1\225\56\u0266\25\75\1\224\1\225"+
"\1\u0238\1\0\1\75\1\0\53\75\3\u0264\1\u0289\1\u028a"+
"\1\u0264\1\u028b\1\u028c\1\u0264\3\75\7\u0264\1\75\1\u0264"+
"\1\224\1\u0266\1\u028d\1\232\1\u0264\1\232\25\u0264\1\u0289"+
"\1\u0264\1\u028c\1\u0289\22\u0264\4\225\1\231\4\225\3\0"+
"\7\225\1\0\2\225\1\75\1\u0237\56\225\4\227\1\u0267"+
"\1\227\1\u0268\15\227\1\347\62\227\3\u0269\3\227\1\u0269"+
"\14\227\1\347\15\227\2\u0269\3\227\1\u0269\1\227\1\u0269"+
"\1\227\1\u0269\2\227\1\u0269\1\227\4\u0269\3\227\1\u0269"+
"\1\227\1\u0269\15\227\3\u028e\3\227\1\u028e\14\227\1\347"+
"\15\227\2\u028e\3\227\1\u028e\1\227\1\u028e\1\227\1\u028e"+
"\2\227\1\u028e\1\227\4\u028e\3\227\1\u028e\1\227\1\u028e"+
"\14\227\11\253\2\124\1\125\7\253\1\124\4\253\1\u028f"+
"\55\253\11\u026b\2\u0290\1\u0291\7\u026b\1\u0290\62\u026b\11\253"+
"\2\124\1\125\7\253\1\124\15\253\1\u0292\44\253\2\u0293"+
"\1\u0294\2\u0293\2\u0294\1\u0293\1\u026d\3\0\4\u0293\1\u0294"+
"\1\u0293\1\u026d\1\0\7\u0293\25\u0294\4\u0293\1\u0294\2\u0293"+
"\3\u0294\10\u0293\1\u0294\4\u0293\1\u0295\1\u0294\1\u0295\1\u0293"+
"\2\u0294\1\u0295\1\u026d\3\0\4\u0293\1\u0294\1\u0295\1\u026e"+
"\1\144\7\u0293\25\u0294\4\u0295\1\u0294\2\u0293\3\u0294\10\u0293"+
"\1\u0294\3\u0293\1\0\3\144\1\0\3\144\1\u0296\7\0"+
"\2\144\1\u0296\1\144\7\0\32\144\2\0\3\144\10\0"+
"\1\144\13\0\1\u0270\3\0\2\u0271\4\0\1\u0270\65\0"+
"\1\u0247\2\0\2\u0247\1\0\1\u0271\7\0\1\u0247\1\0"+
"\1\u0271\10\0\25\u0247\4\0\1\u0247\2\0\3\u0247\10\0"+
"\1\u0247\13\0\1\u0272\3\0\1\u0219\5\0\1\u0272\63\0"+
"\11\u0273\3\0\7\u0273\1\0\63\u0273\3\u0274\1\u0273\3\u0274"+
"\1\u0297\3\0\2\u024a\2\u0273\3\u0274\1\u0298\7\u0273\32\u0274"+
"\2\u0273\3\u0274\10\u0273\1\u0274\4\u0273\3\u0275\1\u0273\3\u0275"+
"\1\u0273\3\0\4\u0273\3\u0275\1\144\7\u0273\32\u0275\2\u0273"+
"\3\u0275\10\u0273\1\u0275\3\u0273\1\0\3\u0276\1\0\3\u0276"+
"\10\0\4\u0276\7\0\32\u0276\2\0\3\u0276\10\0\1\u0276"+
"\4\0\3\144\1\0\3\144\1\u0299\7\0\2\144\1\u029a"+
"\1\144\6\0\1\146\32\144\2\0\3\144\10\0\1\144"+
"\3\0\2\u029b\1\u029c\2\u029b\2\u029c\1\u029b\1\u0279\3\0"+
"\4\u029b\1\u029c\1\u029b\1\u0279\1\0\7\u029b\25\u029c\4\u029b"+
"\1\u029c\2\u029b\3\u029c\10\u029b\1\u029c\4\u029b\1\u029d\1\u029c"+
"\1\u029d\1\u029b\2\u029c\1\u029d\1\u0279\3\0\4\u029b\1\u029c"+
"\1\u029d\1\u027a\1\144\7\u029b\25\u029c\4\u029d\1\u029c\2\u029b"+
"\3\u029c\10\u029b\1\u029c\3\u029b\10\0\1\u027b\3\0\1\u027c"+
"\5\0\1\u027b\65\0\1\u0252\2\0\2\u0252\1\0\1\u027c"+
"\7\0\1\u0252\1\0\1\u027c\10\0\25\u0252\4\0\1\u0252"+
"\2\0\3\u0252\10\0\1\u0252\107\0\1\u029e\105\0\1\u029f"+
"\60\0\1\u02a0\26\0\3\u025d\1\u02a1\1\u02a2\1\u025d\1\u02a3"+
"\1\u02a4\1\u025d\2\350\1\75\7\u025d\1\350\34\u025d\1\u02a1"+
"\1\u025d\1\u02a4\1\u02a1\22\u025d\3\350\1\u025b\3\350\1\u025b"+
"\3\350\1\75\11\350\1\u0124\1\u0125\1\u0232\1\230\1\350"+
"\1\230\25\350\1\u025b\1\350\2\u025b\26\350\1\u02a5\1\350"+
"\1\u02a6\4\350\1\75\11\350\1\u0124\1\u0125\1\u0232\1\230"+
"\1\350\1\230\54\350\3\u02a7\3\350\1\u02a7\3\350\1\75"+
"\11\350\1\u0124\1\u0125\1\u0232\1\230\1\350\1\230\7\350"+
"\2\u02a7\3\350\1\u02a7\1\350\1\u02a7\1\350\1\u02a7\2\350"+
"\1\u02a7\1\350\4\u02a7\3\350\1\u02a7\1\350\1\u02a7\17\350"+
"\1\u0282\3\350\1\u0282\3\350\1\75\11\350\1\u0124\1\u0125"+
"\1\u0232\1\230\1\350\1\230\25\350\1\u0282\1\350\2\u0282"+
"\22\350\4\u0161\1\u0162\4\u0161\2\350\1\75\7\u0161\1\350"+
"\3\u0161\1\350\56\u0161\1\u015f\3\u02a8\3\u015f\1\u02a8\1\u015f"+
"\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\15\u015f\2\u02a8\3\u015f"+
"\1\u02a8\1\u015f\1\u02a8\1\u015f\1\u02a8\2\u015f\1\u02a8\1\u015f"+
"\4\u02a8\3\u015f\1\u02a8\1\u015f\1\u02a8\14\u015f\3\u0266\1\u02a9"+
"\1\u02aa\1\u0266\1\u02ab\1\u02ac\1\u0266\3\0\7\u0266\1\0"+
"\34\u0266\1\u02a9\1\u0266\1\u02ac\1\u02a9\22\u0266\3\75\1\u0264"+
"\3\75\1\u0264\15\75\1\224\1\225\1\u0238\1\0\1\75"+
"\1\0\25\75\1\u0264\1\75\2\u0264\26\75\1\u02ad\1\75"+
"\1\u02ae\16\75\1\224\1\225\1\u0238\1\0\1\75\1\0"+
"\54\75\3\u02af\3\75\1\u02af\15\75\1\224\1\225\1\u0238"+
"\1\0\1\75\1\0\7\75\2\u02af\3\75\1\u02af\1\75"+
"\1\u02af\1\75\1\u02af\2\75\1\u02af\1\75\4\u02af\3\75"+
"\1\u02af\1\75\1\u02af\17\75\1\u0289\3\75\1\u0289\15\75"+
"\1\224\1\225\1\u0238\1\0\1\75\1\0\25\75\1\u0289"+
"\1\75\2\u0289\22\75\4\232\1\233\4\232\3\0\7\232"+
"\1\0\3\232\1\75\56\232\1\227\3\u02b0\3\227\1\u02b0"+
"\14\227\1\347\15\227\2\u02b0\3\227\1\u02b0\1\227\1\u02b0"+
"\1\227\1\u02b0\2\227\1\u02b0\1\227\4\u02b0\3\227\1\u02b0"+
"\1\227\1\u02b0\14\227\11\u028f\2\u02b1\1\u02b2\7\u028f\1\u02b1"+
"\62\u028f\11\253\2\124\1\125\7\253\1\124\4\253\1\u02b3"+
"\55\253\11\u0293\3\0\7\u0293\1\0\63\u0293\3\u0294\1\u0293"+
"\3\u0294\1\u02b4\3\0\2\u026d\2\u0293\3\u0294\1\u02b5\7\u0293"+
"\32\u0294\2\u0293\3\u0294\10\u0293\1\u0294\4\u0293\3\u0295\1\u0293"+
"\3\u0295\1\u0293\3\0\4\u0293\3\u0295\1\144\7\u0293\32\u0295"+
"\2\u0293\3\u0295\10\u0293\1\u0295\3\u0293\13\u0296\1\0\72\u0296"+
"\10\u0273\1\u0297\3\0\2\u024a\4\u0273\1\u0297\1\0\62\u0273"+
"\1\0\3\u0298\1\0\3\u0298\1\u02b6\3\0\2\u02b7\2\0"+
"\4\u0298\7\0\32\u0298\2\0\3\u0298\10\0\1\u0298\3\0"+
"\2\u02b8\1\u02b9\2\u02b8\2\u02b9\1\u02b8\1\u0299\3\0\4\u02b8"+
"\1\u02b9\1\u02b8\1\u0299\1\0\7\u02b8\25\u02b9\4\u02b8\1\u02b9"+
"\2\u02b8\3\u02b9\10\u02b8\1\u02b9\4\u02b8\1\u02ba\1\u02b9\1\u02ba"+
"\1\u02b8\2\u02b9\1\u02ba\1\u0299\3\0\4\u02b8\1\u02b9\1\u02ba"+
"\1\u029a\1\144\7\u02b8\25\u02b9\4\u02ba\1\u02b9\2\u02b8\3\u02b9"+
"\10\u02b8\1\u02b9\3\u02b8\11\u029b\3\0\7\u029b\1\0\63\u029b"+
"\3\u029c\1\u029b\3\u029c\1\u02bb\3\0\1\u0279\3\u029b\3\u029c"+
"\1\u02bc\7\u029b\32\u029c\2\u029b\3\u029c\10\u029b\1\u029c\4\u029b"+
"\3\u029d\1\u029b\3\u029d\1\u029b\3\0\4\u029b\3\u029d\1\144"+
"\7\u029b\32\u029d\2\u029b\3\u029d\10\u029b\1\u029d\3\u029b\17\0"+
"\1\u02bd\105\0\1\u02be\121\0\1\u02bf\52\0\3\u0125\1\u025d"+
"\1\u0160\2\u0125\1\u025d\1\u0125\2\350\1\75\7\u0125\1\350"+
"\2\u0125\1\350\1\u0231\30\u0125\1\u025d\1\u0125\2\u025d\26\u0125"+
"\1\u02c0\1\u0125\1\u02c1\2\u0125\2\350\1\75\7\u0125\1\350"+
"\2\u0125\1\350\1\u0231\57\u0125\3\u02c2\1\u0160\2\u0125\1\u02c2"+
"\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\1\u0231"+
"\12\u0125\2\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2\1\u0125\1\u02c2"+
"\2\u0125\1\u02c2\1\u0125\4\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2"+
"\17\u0125\1\u02a1\1\u0160\2\u0125\1\u02a1\1\u0125\2\350\1\75"+
"\7\u0125\1\350\2\u0125\1\350\1\u0231\30\u0125\1\u02a1\1\u0125"+
"\2\u02a1\22\u0125\4\350\1\u02a5\1\350\1\u02a6\4\350\1\75"+
"\11\350\1\u0124\1\u0125\1\u0126\1\230\1\350\1\230\54\350"+
"\3\u02a7\3\350\1\u02a7\3\350\1\75\11\350\1\u0124\1\u0125"+
"\1\u0126\1\230\1\350\1\230\7\350\2\u02a7\3\350\1\u02a7"+
"\1\350\1\u02a7\1\350\1\u02a7\2\350\1\u02a7\1\350\4\u02a7"+
"\3\350\1\u02a7\1\350\1\u02a7\15\350\3\u02c3\3\350\1\u02c3"+
"\3\350\1\75\11\350\1\u0124\1\u0125\1\u0126\1\230\1\350"+
"\1\230\7\350\2\u02c3\3\350\1\u02c3\1\350\1\u02c3\1\350"+
"\1\u02c3\2\350\1\u02c3\1\350\4\u02c3\3\350\1\u02c3\1\350"+
"\1\u02c3\14\350\1\u015f\3\u0202\3\u015f\1\u0202\1\u015f\2\u0195"+
"\1\u0196\7\u015f\1\u0195\1\u0197\15\u015f\2\u0202\3\u015f\1\u0202"+
"\1\u015f\1\u0202\1\u015f\1\u0202\2\u015f\1\u0202\1\u015f\4\u0202"+
"\3\u015f\1\u0202\1\u015f\1\u0202\14\u015f\3\225\1\u0266\1\231"+
"\2\225\1\u0266\1\225\3\0\7\225\1\0\2\225\1\75"+
"\1\u0237\30\225\1\u0266\1\225\2\u0266\26\225\1\u02c4\1\225"+
"\1\u02c5\2\225\3\0\7\225\1\0\2\225\1\75\1\u0237"+
"\57\225\3\u02c6\1\231\2\225\1\u02c6\1\225\3\0\7\225"+
"\1\0\2\225\1\75\1\u0237\12\225\2\u02c6\3\225\1\u02c6"+
"\1\225\1\u02c6\1\225\1\u02c6\2\225\1\u02c6\1\225\4\u02c6"+
"\3\225\1\u02c6\1\225\1\u02c6\17\225\1\u02a9\1\231\2\225"+
"\1\u02a9\1\225\3\0\7\225\1\0\2\225\1\75\1\u0237"+
"\30\225\1\u02a9\1\225\2\u02a9\22\225\4\75\1\u02ad\1\75"+
"\1\u02ae\16\75\1\224\1\225\1\226\1\0\1\75\1\0"+
"\54\75\3\u02af\3\75\1\u02af\15\75\1\224\1\225\1\226"+
"\1\0\1\75\1\0\7\75\2\u02af\3\75\1\u02af\1\75"+
"\1\u02af\1\75\1\u02af\2\75\1\u02af\1\75\4\u02af\3\75"+
"\1\u02af\1\75\1\u02af\15\75\3\u02c7\3\75\1\u02c7\15\75"+
"\1\224\1\225\1\226\1\0\1\75\1\0\7\75\2\u02c7"+
"\3\75\1\u02c7\1\75\1\u02c7\1\75\1\u02c7\2\75\1\u02c7"+
"\1\75\4\u02c7\3\75\1\u02c7\1\75\1\u02c7\14\75\1\227"+
"\3\u0209\3\227\1\u0209\14\227\1\347\15\227\2\u0209\3\227"+
"\1\u0209\1\227\1\u0209\1\227\1\u0209\2\227\1\u0209\1\227"+
"\4\u0209\3\227\1\u0209\1\227\1\u0209\14\227\11\u02b3\2\u02c8"+
"\1\u02c9\7\u02b3\1\u02c8\62\u02b3\10\u0293\1\u02b4\3\0\2\u026d"+
"\4\u0293\1\u02b4\1\0\62\u0293\1\0\3\u02b5\1\0\3\u02b5"+
"\1\u02ca\3\0\2\u02cb\2\0\4\u02b5\7\0\32\u02b5\2\0"+
"\3\u02b5\10\0\1\u02b5\13\0\1\u02b6\3\0\2\u02b7\4\0"+
"\1\u02b6\65\0\1\u0298\2\0\2\u0298\1\0\1\u02b7\7\0"+
"\1\u0298\1\0\1\u02b7\10\0\25\u0298\4\0\1\u0298\2\0"+
"\3\u0298\10\0\1\u0298\3\0\11\u02b8\3\0\7\u02b8\1\0"+
"\63\u02b8\3\u02b9\1\u02b8\3\u02b9\1\u02cc\3\0\2\u0299\2\u02b8"+
"\3\u02b9\1\u02cd\7\u02b8\32\u02b9\2\u02b8\3\u02b9\10\u02b8\1\u02b9"+
"\4\u02b8\3\u02ba\1\u02b8\3\u02ba\1\u02b8\3\0\4\u02b8\3\u02ba"+
"\1\144\7\u02b8\32\u02ba\2\u02b8\3\u02ba\10\u02b8\1\u02ba\3\u02b8"+
"\10\u029b\1\u02bb\3\0\1\u0279\5\u029b\1\u02bb\1\0\62\u029b"+
"\1\0\3\u02bc\1\0\3\u02bc\1\u02ce\3\0\1\u02cf\3\0"+
"\4\u02bc\7\0\32\u02bc\2\0\3\u02bc\10\0\1\u02bc\40\0"+
"\1\u02d0\50\0\4\u0125\1\u02d1\1\u0125\1\u02c1\2\u0125\2\350"+
"\1\75\7\u0125\1\350\63\u0125\3\u02c2\1\u0160\2\u0125\1\u02c2"+
"\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\13\u0125"+
"\2\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2\1\u0125\1\u02c2\2\u0125"+
"\1\u02c2\1\u0125\4\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2\15\u0125"+
"\3\u02d2\1\u0160\2\u0125\1\u02d2\1\u0125\2\350\1\75\7\u0125"+
"\1\350\2\u0125\1\350\13\u0125\2\u02d2\3\u0125\1\u02d2\1\u0125"+
"\1\u02d2\1\u0125\1\u02d2\2\u0125\1\u02d2\1\u0125\4\u02d2\3\u0125"+
"\1\u02d2\1\u0125\1\u02d2\14\u0125\1\350\3\u02d3\3\350\1\u02d3"+
"\3\350\1\75\11\350\1\u0124\1\u0125\1\u0126\1\230\1\350"+
"\1\230\7\350\2\u02d3\3\350\1\u02d3\1\350\1\u02d3\1\350"+
"\1\u02d3\2\350\1\u02d3\1\350\4\u02d3\3\350\1\u02d3\1\350"+
"\1\u02d3\14\350\4\225\1\u02d4\1\225\1\u02c5\2\225\3\0"+
"\7\225\1\0\63\225\3\u02c6\1\231\2\225\1\u02c6\1\225"+
"\3\0\7\225\1\0\2\225\1\75\13\225\2\u02c6\3\225"+
"\1\u02c6\1\225\1\u02c6\1\225\1\u02c6\2\225\1\u02c6\1\225"+
"\4\u02c6\3\225\1\u02c6\1\225\1\u02c6\15\225\3\u02d5\1\231"+
"\2\225\1\u02d5\1\225\3\0\7\225\1\0\2\225\1\75"+
"\13\225\2\u02d5\3\225\1\u02d5\1\225\1\u02d5\1\225\1\u02d5"+
"\2\225\1\u02d5\1\225\4\u02d5\3\225\1\u02d5\1\225\1\u02d5"+
"\14\225\1\75\3\u02d6\3\75\1\u02d6\15\75\1\224\1\225"+
"\1\226\1\0\1\75\1\0\7\75\2\u02d6\3\75\1\u02d6"+
"\1\75\1\u02d6\1\75\1\u02d6\2\75\1\u02d6\1\75\4\u02d6"+
"\3\75\1\u02d6\1\75\1\u02d6\14\75\10\0\1\u02ca\3\0"+
"\2\u02cb\4\0\1\u02ca\65\0\1\u02b5\2\0\2\u02b5\1\0"+
"\1\u02cb\7\0\1\u02b5\1\0\1\u02cb\10\0\25\u02b5\4\0"+
"\1\u02b5\2\0\3\u02b5\10\0\1\u02b5\3\0\10\u02b8\1\u02cc"+
"\3\0\2\u0299\4\u02b8\1\u02cc\1\0\62\u02b8\1\0\3\u02cd"+
"\1\0\3\u02cd\1\u02d7\3\0\2\u02d8\2\0\4\u02cd\7\0"+
"\32\u02cd\2\0\3\u02cd\10\0\1\u02cd\13\0\1\u02ce\3\0"+
"\1\u02cf\5\0\1\u02ce\65\0\1\u02bc\2\0\2\u02bc\1\0"+
"\1\u02cf\7\0\1\u02bc\1\0\1\u02cf\10\0\25\u02bc\4\0"+
"\1\u02bc\2\0\3\u02bc\10\0\1\u02bc\107\0\1\u02d9\1\0"+
"\4\u0125\1\u02c0\1\u0125\1\u02c1\2\u0125\2\350\1\75\7\u0125"+
"\1\350\2\u0125\1\350\60\u0125\3\u02da\1\u0160\2\u0125\1\u02da"+
"\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\13\u0125"+
"\2\u02da\3\u0125\1\u02da\1\u0125\1\u02da\1\u0125\1\u02da\2\u0125"+
"\1\u02da\1\u0125\4\u02da\3\u0125\1\u02da\1\u0125\1\u02da\14\u0125"+
"\1\350\3\u025b\3\350\1\u025b\3\350\1\75\11\350\1\u0124"+
"\1\u0125\1\u0126\1\230\1\350\1\230\7\350\2\u025b\3\350"+
"\1\u025b\1\350\1\u025b\1\350\1\u025b\2\350\1\u025b\1\350"+
"\4\u025b\3\350\1\u025b\1\350\1\u025b\14\350\4\225\1\u02c4"+
"\1\225\1\u02c5\2\225\3\0\7\225\1\0\2\225\1\75"+
"\60\225\3\u02db\1\231\2\225\1\u02db\1\225\3\0\7\225"+
"\1\0\2\225\1\75\13\225\2\u02db\3\225\1\u02db\1\225"+
"\1\u02db\1\225\1\u02db\2\225\1\u02db\1\225\4\u02db\3\225"+
"\1\u02db\1\225\1\u02db\14\225\1\75\3\u0264\3\75\1\u0264"+
"\15\75\1\224\1\225\1\226\1\0\1\75\1\0\7\75"+
"\2\u0264\3\75\1\u0264\1\75\1\u0264\1\75\1\u0264\2\75"+
"\1\u0264\1\75\4\u0264\3\75\1\u0264\1\75\1\u0264\14\75"+
"\10\0\1\u02d7\3\0\2\u02d8\4\0\1\u02d7\65\0\1\u02cd"+
"\2\0\2\u02cd\1\0\1\u02d8\7\0\1\u02cd\1\0\1\u02d8"+
"\10\0\25\u02cd\4\0\1\u02cd\2\0\3\u02cd\10\0\1\u02cd"+
"\22\0\1\u02dc\66\0\1\u0125\3\u025d\1\u0160\2\u0125\1\u025d"+
"\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\13\u0125"+
"\2\u025d\3\u0125\1\u025d\1\u0125\1\u025d\1\u0125\1\u025d\2\u0125"+
"\1\u025d\1\u0125\4\u025d\3\u0125\1\u025d\1\u0125\1\u025d\14\u0125"+
"\1\225\3\u0266\1\231\2\225\1\u0266\1\225\3\0\7\225"+
"\1\0\2\225\1\75\13\225\2\u0266\3\225\1\u0266\1\225"+
"\1\u0266\1\225\1\u0266\2\225\1\u0266\1\225\4\u0266\3\225"+
"\1\u0266\1\225\1\u0266\14\225";
/**
* The transition table of the DFA
*/
final private static int yytrans [] = yy_unpack();
/* error codes */
final private static int YY_UNKNOWN_ERROR = 0;
final private static int YY_ILLEGAL_STATE = 1;
final private static int YY_NO_MATCH = 2;
final private static int YY_PUSHBACK_2BIG = 3;
/* error messages for the codes above */
final private static String YY_ERROR_MSG[] = {
"Unkown internal scanner error",
"Internal error: unknown state",
"Error: could not match input",
"Error: pushback value was too large"
};
/**
* YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private final static byte YY_ATTRIBUTE[] = {
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
9, 1, 1, 1, 1, 9, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 9, 1, 9, 1, 1, 1, 1, 9, 1, 9, 1,
9, 1, 1, 3, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1,
9, 9, 1, 9, 1, 1, 1, 9, 1, 9, 1, 1, 1, 9, 9, 1,
9, 1, 1, 1, 9, 1, 9, 1, 9, 1, 1, 0, 0, 0, 9, 9,
0, 9, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 0, 0, 9, 1, 1, 1, 0, 9, 1, 0, 9, 1,
1, 1, 1, 9, 9, 9, 9, 9, 0, 1, 0, 9, 1, 0, 0, 0,
2, 13, 5, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 1, 1, 1,
9, 9, 9, 9, 9, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 1,
0, 9, 1, 9, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 9, 0, 1, 0,
0, 0, 0, 0, 9, 0, 0, 1, 0, 0, 0, 0, 9, 0, 1, 9,
1, 9, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 9, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 9, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 0, 0, 0,
0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9,
0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 1, 9, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 9, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 9, 9,
1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,
9, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1,
1, 1, 0, 0, 9, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0,
1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 9,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
1, 9, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 9, 9, 0, 0,
0, 0, 1, 0, 0, 0, 1, 1, 9, 0, 0, 1, 1, 0, 0, 0,
0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 9
};
/** the input device */
private java.io.Reader yy_reader;
/** the current state of the DFA */
private int yy_state;
/** the current lexical state */
private int yy_lexical_state = YYINITIAL;
/** this buffer contains the current text to be matched and is
the source of the yytext() string */
private char yy_buffer[] = new char[YY_BUFFERSIZE];
/** the textposition at the last accepting state */
private int yy_markedPos;
/** the textposition at the last state to be included in yytext */
private int yy_pushbackPos;
/** the current text position in the buffer */
private int yy_currentPos;
/** startRead marks the beginning of the yytext() string in the buffer */
private int yy_startRead;
/** endRead marks the last character in the buffer, that has been read
from input */
private int yy_endRead;
/** number of newlines encountered up to the start of the matched text */
private int yyline;
/** the number of characters up to the start of the matched text */
private int yychar;
/**
* the number of characters from the last newline up to the start of the
* matched text
*/
private int yycolumn;
/**
* yy_atBOL == true <=> the scanner is currently at the beginning of a line
*/
private boolean yy_atBOL = true;
/** yy_atEOF == true <=> the scanner is at the EOF */
private boolean yy_atEOF;
/** the stack of open (nested) input streams to read from */
private java.util.Stack yy_streams = new java.util.Stack();
/**
* inner class used to store info for nested
* input streams
*/
final private static class YY_StreamInfo {
java.io.Reader yy_reader;
int yy_endRead;
int yy_startRead;
int yy_currentPos;
int yy_markedPos;
int yy_pushbackPos;
int yyline;
int yycolumn;
char [] yy_buffer;
boolean yy_atEOF;
/** sets all values stored in this class */
YY_StreamInfo(java.io.Reader yy_reader, int yy_endRead, int yy_startRead,
int yy_currentPos, int yy_markedPos, int yy_pushbackPos,
char [] yy_buffer, boolean yy_atEOF, int yyline, int yycolumn) {
this.yy_reader = yy_reader;
this.yy_endRead = yy_endRead;
this.yy_startRead = yy_startRead;
this.yy_currentPos = yy_currentPos;
this.yy_markedPos = yy_markedPos;
this.yy_pushbackPos = yy_pushbackPos;
this.yy_buffer = yy_buffer;
this.yy_atEOF = yy_atEOF;
this.yyline = yyline;
this.yycolumn = yycolumn;
}
}
/** denotes if the user-EOF-code has already been executed */
private boolean yy_eof_done;
/* user code: */
int balance = 0;
int commentbalance = 0;
int action_line = 0;
int bufferSize = 16384;
File file;
Stack files = new Stack();
StringBuffer userCode = new StringBuffer();
String classCode;
String initCode;
String initThrow;
String eofCode;
String eofThrow;
String lexThrow;
String eofVal;
String scanErrorException;
String cupSymbol = "sym";
StringBuffer actionText = new StringBuffer();
StringBuffer string = new StringBuffer();
boolean charCount;
boolean lineCount;
boolean columnCount;
boolean cupCompatible;
boolean cupDebug;
boolean isInteger;
boolean isIntWrap;
boolean isYYEOF;
boolean notUnix;
boolean isPublic;
boolean isFinal;
boolean isAbstract;
boolean lookAheadUsed;
boolean bolUsed;
boolean standalone;
boolean debugOption;
boolean useRowMap = Main.gen_method == Main.PACK || Main.gen_method == Main.TABLE;
boolean packed = Main.gen_method == Main.PACK;
boolean caseless;
boolean inclusive_states;
String isImplementing;
String isExtending;
String className = "Yylex";
String functionName;
String tokenType;
LexicalStates states = new LexicalStates();
Vector actions = new Vector();
private int nextState;
boolean macroDefinition;
Timer t = new Timer();
public int currentLine() {
return yyline;
}
public void setFile(File file) {
this.file = file;
}
private Symbol symbol(int type, Object value) {
return new Symbol(type, yyline, yycolumn, value);
}
private Symbol symbol(int type) {
return new Symbol(type, yyline, yycolumn);
}
// updates line and column count to the beginning of the first
// non whitespace character in yytext, but leaves yyline+yycolumn
// untouched
private Symbol symbol_countUpdate(int type, Object value) {
int lc = yyline;
int cc = yycolumn;
String text = yytext();
for (int i=0; i < text.length(); i++) {
char c = text.charAt(i);
if (c != '\n' && c != '\r' && c != ' ' && c != '\t' )
return new Symbol(type, lc, cc, value);
if (c == '\n') {
lc++;
cc = 0;
}
else
cc++;
}
return new Symbol(type, yyline, yycolumn, value);
}
// updates yyline and yycolumn count to the beginning of the first
// non whitespace character in yytext
private void updateLineCount(String text) {
for (int i=0; i < text.length(); i++) {
char c = text.charAt(i);
if (c != '\n' && c != '\r' && c != ' ' && c != '\t' ) return;
if (c == '\n') {
yyline++;
yycolumn = 0;
}
else
yycolumn++;
}
}
private String makeMacroIdent() {
String matched = yytext().trim();
return matched.substring(1, matched.length()-1).trim();
}
private String conc(Object a, Object b) {
if (a == null && b == null) return null;
if (a == null) return b.toString();
if (b == null) return a.toString();
return a.toString()+b.toString();
}
private String concExc(Object a, Object b) {
if (a == null && b == null) return null;
if (a == null) return b.toString();
if (b == null) return a.toString();
return a.toString()+", "+b.toString();
}
/**
* Creates a new scanner
* There is also a java.io.InputStream version of this constructor.
*
* @param in the java.io.Reader to read input from.
*/
public LexScan(java.io.Reader in) {
states.insert("YYINITIAL", true);
this.yy_reader = in;
}
/**
* Creates a new scanner.
* There is also java.io.Reader version of this constructor.
*
* @param in the java.io.Inputstream to read input from.
*/
public LexScan(java.io.InputStream in) {
this(new java.io.InputStreamReader(in));
}
/**
* Unpacks the split, compressed DFA transition table.
*
* @return the unpacked transition table
*/
private static int [] yy_unpack() {
int [] trans = new int[42420];
int offset = 0;
offset = yy_unpack(yy_packed0, offset, trans);
return trans;
}
/**
* Unpacks the compressed DFA transition table.
*
* @param packed the packed transition table
* @return the index of the last entry
*/
private static int yy_unpack(String packed, int offset, int [] trans) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
value--;
do trans[j++] = value; while (--count > 0);
}
return j;
}
/**
* Unpacks the compressed character translation table.
*
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
private static char [] yy_unpack_cmap(String packed) {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 1668) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
}
return map;
}
/**
* Refills the input buffer.
*
* @return <code>false</code>, iff there was new input.
*
* @exception IOException if any I/O-Error occurs
*/
private boolean yy_refill() throws java.io.IOException {
/* first: make room (if you can) */
if (yy_startRead > 0) {
System.arraycopy(yy_buffer, yy_startRead,
yy_buffer, 0,
yy_endRead-yy_startRead);
/* translate stored positions */
yy_endRead-= yy_startRead;
yy_currentPos-= yy_startRead;
yy_markedPos-= yy_startRead;
yy_pushbackPos-= yy_startRead;
yy_startRead = 0;
}
/* is the buffer big enough? */
if (yy_currentPos >= yy_buffer.length) {
/* if not: blow it up */
char newBuffer[] = new char[yy_currentPos*2];
System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
yy_buffer = newBuffer;
}
/* finally: fill the buffer with new input */
int numRead = yy_reader.read(yy_buffer, yy_endRead,
yy_buffer.length-yy_endRead);
if (numRead < 0) {
return true;
}
else {
yy_endRead+= numRead;
return false;
}
}
/**
* Closes the input stream.
*/
final public void yyclose() throws java.io.IOException {
yy_atEOF = true; /* indicate end of file */
yy_endRead = yy_startRead; /* invalidate buffer */
if (yy_reader != null)
yy_reader.close();
}
/**
* Stores the current input stream on a stack, and
* reads from a new stream. Lexical state, line,
* char, and column counting remain untouched.
*
* The current input stream can be restored with
* yypopstream (usually in an <<EOF>> action).
*
* @param reader the new input stream to read from
*
* @see #yypopStream()
*/
final public void yypushStream(java.io.Reader reader) {
yy_streams.push(
new YY_StreamInfo(yy_reader, yy_endRead, yy_startRead, yy_currentPos,
yy_markedPos, yy_pushbackPos, yy_buffer, yy_atEOF,
yyline, yycolumn)
);
yy_atEOF = false;
yy_buffer = new char[YY_BUFFERSIZE];
yy_reader = reader;
yy_endRead = yy_startRead = 0;
yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
yyline = yycolumn = 0;
}
/**
* Closes the current input stream and continues to
* read from the one on top of the stream stack.
*
* @throws java.util.EmptyStackException
* if there is no further stream to read from.
*
* @throws java.io.IOException
* if there was an error in closing the stream.
*
* @see #yypushStream(java.io.Reader)
*/
final public void yypopStream() throws java.io.IOException {
yy_reader.close();
YY_StreamInfo s = (YY_StreamInfo) yy_streams.pop();
yy_buffer = s.yy_buffer;
yy_reader = s.yy_reader;
yy_endRead = s.yy_endRead;
yy_startRead = s.yy_startRead;
yy_currentPos = s.yy_currentPos;
yy_markedPos = s.yy_markedPos ;
yy_pushbackPos = s.yy_pushbackPos;
yy_atEOF = s.yy_atEOF;
yyline = s.yyline;
yycolumn = s.yycolumn;
}
/**
* Returns true iff there are still streams left
* to read from on the stream stack.
*/
final public boolean yymoreStreams() {
return !yy_streams.isEmpty();
}
/**
* Closes the current stream, and resets the
* scanner to read from a new input stream.
*
* All internal variables are reset, the old input stream
* <b>cannot</b> be reused (internal buffer is discarded and lost).
* Lexical state is set to <tt>YY_INITIAL</tt>.
*
* @param reader the new input stream
*
* @see #yypushStream(java.io.Reader)
* @see #yypopStream()
*/
final public void yyreset(java.io.Reader reader) throws java.io.IOException {
yyclose();
yy_reader = reader;
yy_atBOL = true;
yy_atEOF = false;
yy_endRead = yy_startRead = 0;
yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
yyline = yychar = yycolumn = 0;
yy_lexical_state = YYINITIAL;
}
/**
* Returns the current lexical state.
*/
final public int yystate() {
return yy_lexical_state;
}
/**
* Enters a new lexical state
*
* @param newState the new lexical state
*/
final public void yybegin(int newState) {
yy_lexical_state = newState;
}
/**
* Returns the text matched by the current regular expression.
*/
final public String yytext() {
return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
}
/**
* Returns the character at position <tt>pos</tt> from the
* matched text.
*
* It is equivalent to yytext().charAt(pos), but faster
*
* @param pos the position of the character to fetch.
* A value from 0 to yylength()-1.
*
* @return the character at position pos
*/
final public char yycharat(int pos) {
return yy_buffer[yy_startRead+pos];
}
/**
* Returns the length of the matched text region.
*/
final public int yylength() {
return yy_markedPos-yy_startRead;
}
/**
* Reports an error that occured while scanning.
*
* In a wellformed scanner (no or only correct usage of
* yypushback(int) and a match-all fallback rule) this method
* will only be called with things that "Can't Possibly Happen".
* If this method is called, something is seriously wrong
* (e.g. a JFlex bug producing a faulty scanner etc.).
*
* Usual syntax/scanner level error handling should be done
* in error fallback rules.
*
* @param errorCode the code of the errormessage to display
*/
private void yy_ScanError(int errorCode) {
String message;
try {
message = YY_ERROR_MSG[errorCode];
}
catch (ArrayIndexOutOfBoundsException e) {
message = YY_ERROR_MSG[YY_UNKNOWN_ERROR];
}
throw new Error(message);
}
/**
* Pushes the specified amount of characters back into the input stream.
*
* They will be read again by then next call of the scanning method
*
* @param number the number of characters to be read again.
* This number must not be greater than yylength()!
*/
private void yypushback(int number) {
if ( number > yylength() )
yy_ScanError(YY_PUSHBACK_2BIG);
yy_markedPos -= number;
}
/**
* Contains user EOF-code, which will be executed exactly once,
* when the end of file is reached
*/
private void yy_do_eof() throws java.io.IOException {
if (!yy_eof_done) {
yy_eof_done = true;
yyclose();
}
}
/**
* Resumes scanning until the next regular expression is matched,
* the end of input is encountered or an I/O-Error occurs.
*
* @return the next token
* @exception IOException if any I/O-Error occurs
*/
public Symbol next_token() throws java.io.IOException {
int yy_input;
int yy_action;
// cached fields:
int yy_currentPos_l;
int yy_startRead_l;
int yy_markedPos_l;
int yy_endRead_l = yy_endRead;
char [] yy_buffer_l = yy_buffer;
char [] yycmap_l = yycmap;
int [] yytrans_l = yytrans;
int [] yy_rowMap_l = yy_rowMap;
byte [] yy_attr_l = YY_ATTRIBUTE;
int yy_pushbackPos_l = yy_pushbackPos = -1;
boolean yy_was_pushback;
while (true) {
yy_markedPos_l = yy_markedPos;
boolean yy_r = false;
for (yy_currentPos_l = yy_startRead; yy_currentPos_l < yy_markedPos_l;
yy_currentPos_l++) {
switch (yy_buffer_l[yy_currentPos_l]) {
case '\u000B':
case '\u000C':
case '\u0085':
case '\u2028':
case '\u2029':
yyline++;
yycolumn = 0;
yy_r = false;
break;
case '\r':
yyline++;
yycolumn = 0;
yy_r = true;
break;
case '\n':
if (yy_r)
yy_r = false;
else {
yyline++;
yycolumn = 0;
}
break;
default:
yy_r = false;
yycolumn++;
}
}
if (yy_r) {
// peek one character ahead if it is \n (if we have counted one line too much)
boolean yy_peek;
if (yy_markedPos_l < yy_endRead_l)
yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
else if (yy_atEOF)
yy_peek = false;
else {
boolean eof = yy_refill();
yy_markedPos_l = yy_markedPos;
yy_buffer_l = yy_buffer;
if (eof)
yy_peek = false;
else
yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
}
if (yy_peek) yyline--;
}
if (yy_markedPos_l > yy_startRead) {
switch (yy_buffer_l[yy_markedPos_l-1]) {
case '\n':
case '\u000B':
case '\u000C':
case '\u0085':
case '\u2028':
case '\u2029':
yy_atBOL = true;
break;
case '\r':
if (yy_markedPos_l < yy_endRead_l)
yy_atBOL = yy_buffer_l[yy_markedPos_l] != '\n';
else if (yy_atEOF)
yy_atBOL = false;
else {
boolean eof = yy_refill();
yy_markedPos_l = yy_markedPos;
yy_buffer_l = yy_buffer;
if (eof)
yy_atBOL = false;
else
yy_atBOL = yy_buffer_l[yy_markedPos_l] != '\n';
}
break;
default:
yy_atBOL = false;
}
}
yy_action = -1;
yy_startRead_l = yy_currentPos_l = yy_currentPos =
yy_startRead = yy_markedPos_l;
if (yy_atBOL)
yy_state = YY_LEXSTATE[yy_lexical_state+1];
else
yy_state = YY_LEXSTATE[yy_lexical_state];
yy_was_pushback = false;
yy_forAction: {
while (true) {
if (yy_currentPos_l < yy_endRead_l)
yy_input = yy_buffer_l[yy_currentPos_l++];
else if (yy_atEOF) {
yy_input = YYEOF;
break yy_forAction;
}
else {
// store back cached positions
yy_currentPos = yy_currentPos_l;
yy_markedPos = yy_markedPos_l;
yy_pushbackPos = yy_pushbackPos_l;
boolean eof = yy_refill();
// get translated positions and possibly new buffer
yy_currentPos_l = yy_currentPos;
yy_markedPos_l = yy_markedPos;
yy_buffer_l = yy_buffer;
yy_endRead_l = yy_endRead;
yy_pushbackPos_l = yy_pushbackPos;
if (eof) {
yy_input = YYEOF;
break yy_forAction;
}
else {
yy_input = yy_buffer_l[yy_currentPos_l++];
}
}
int yy_next = yytrans_l[ yy_rowMap_l[yy_state] + yycmap_l[yy_input] ];
if (yy_next == -1) break yy_forAction;
yy_state = yy_next;
int yy_attributes = yy_attr_l[yy_state];
if ( (yy_attributes & 2) == 2 )
yy_pushbackPos_l = yy_currentPos_l;
if ( (yy_attributes & 1) == 1 ) {
yy_was_pushback = (yy_attributes & 4) == 4;
yy_action = yy_state;
yy_markedPos_l = yy_currentPos_l;
if ( (yy_attributes & 8) == 8 ) break yy_forAction;
}
}
}
// store back cached position
yy_markedPos = yy_markedPos_l;
if (yy_was_pushback)
yy_markedPos = yy_pushbackPos_l;
switch (yy_action) {
case 696:
case 716:
{ lexThrow = concExc(lexThrow,yytext().substring(12).trim()); }
case 733: break;
case 529:
{ File f = new File(yytext().substring(9).trim());
if ( !f.canRead() )
throw new ScannerException(file,NOT_READABLE, yyline);
// check for cycle
if (files.search(f) > 0)
throw new ScannerException(file,FILE_CYCLE, yyline);
try {
yypushStream( new FileReader(f) );
files.push(file);
file = f;
Out.println("Including \""+file+"\"");
}
catch (FileNotFoundException e) {
throw new ScannerException(file,NOT_READABLE, yyline);
}
}
case 734: break;
case 533:
case 582:
{ lexThrow = concExc(lexThrow,yytext().substring(8).trim()); }
case 735: break;
case 551:
case 552:
{ bufferSize = Integer.parseInt(yytext().substring(8).trim()); }
case 736: break;
case 627:
case 663:
{ eofThrow = concExc(eofThrow,yytext().substring(10).trim()); }
case 737: break;
case 659:
case 692:
{ initThrow = concExc(initThrow,yytext().substring(11).trim()); }
case 738: break;
case 667:
case 699:
{ scanErrorException = yytext().substring(11).trim(); }
case 739: break;
case 711:
case 712:
{ lexThrow = concExc(lexThrow,string); yybegin(MACROS); }
case 740: break;
case 688:
case 689:
{ initThrow = concExc(initThrow,string); yybegin(MACROS); }
case 741: break;
case 655:
case 656:
{ eofThrow = concExc(eofThrow,string); yybegin(MACROS); }
case 742: break;
case 68:
{ yybegin(REGEXP); return symbol(MORETHAN); }
case 743: break;
case 372:
{ packed = false; useRowMap = true; }
case 744: break;
case 137:
{ actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(REGEXPEND); }
case 745: break;
case 88:
{ yybegin(REGEXP); return symbol(RBRACE); }
case 746: break;
case 32:
{ yybegin(REGEXP); return symbol(EQUALS); }
case 747: break;
case 45:
{ yybegin(CHARCLASS); return symbol(OPENCLASS); }
case 748: break;
case 414:
case 415:
{ eofCode = conc(eofCode,string); yybegin(MACROS); }
case 749: break;
case 542:
{ isAbstract = true; }
case 750: break;
case 76:
{ balance++; return symbol(OPENCLASS); }
case 751: break;
case 213:
case 214:
{ inclusive_states = false; yybegin(STATELIST); }
case 752: break;
case 222:
case 284:
case 343:
{ return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16))); }
case 753: break;
case 239:
{ return symbol(MACROUSE, yytext().substring(1,yytext().length()-1)); }
case 754: break;
case 240:
case 241:
{ classCode = conc(classCode,string); yybegin(MACROS); }
case 755: break;
case 283:
{ return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16))); }
case 756: break;
case 336:
{ packed = true; useRowMap = true; }
case 757: break;
case 437:
{ packed = false; useRowMap = false; }
case 758: break;
case 497:
{ className = yytext().substring(7).trim(); }
case 759: break;
case 127:
case 130:
case 220:
{ return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8))); }
case 760: break;
case 126:
case 128:
case 129:
{ return symbol(CHAR, new Character(yytext().charAt(1))); }
case 761: break;
case 74:
case 79:
{ return symbol(CHAR, new Character(yytext().charAt(0))); }
case 762: break;
case 39:
case 40:
case 50:
{ return symbol(CHAR, new Character(yytext().charAt(0))); }
case 763: break;
case 49:
{ yybegin(REGEXPSTART); return symbol(LBRACE); }
case 764: break;
case 58:
{ lookAheadUsed = true; return symbol(DOLLAR); }
case 765: break;
case 175:
{ return symbol(REPEAT, new Integer(yytext().substring(1).trim())); }
case 766: break;
case 468:
case 469:
{ initCode = conc(initCode,string); yybegin(MACROS); }
case 767: break;
case 37:
{ return symbol_countUpdate(RBRACE, null); }
case 768: break;
case 1:
case 18:
{ /* ignore */ }
case 769: break;
case 393:
{ debugOption = true; }
case 770: break;
case 15:
case 16:
{ userCode.append(yytext()); }
case 771: break;
case 441:
{ columnCount = true; }
case 772: break;
case 575:
case 576:
{ eofVal = string.toString(); yybegin(MACROS); }
case 773: break;
case 80:
{ return symbol(HAT); }
case 774: break;
case 0:
case 14:
case 17:
{ return symbol(EOF); }
case 775: break;
case 51:
{ return symbol(BAR); }
case 776: break;
case 38:
{ yybegin(STATES); return symbol_countUpdate(LESSTHAN, null); }
case 777: break;
case 57:
{ return symbol(QUESTION); }
case 778: break;
case 394:
case 474:
{ return symbol(UNICODE); }
case 779: break;
case 664:
case 665:
case 695:
case 697:
case 715:
{ throw new ScannerException(file,QUIL_YYLEXTHROW, yyline); }
case 780: break;
case 77:
{ if (balance > 0) balance--; else yybegin(REGEXP); return symbol(CLOSECLASS); }
case 781: break;
case 456:
{ throw new ScannerException(file,EOF_WO_ACTION); }
case 782: break;
case 499:
case 500:
case 550:
case 553:
{ throw new ScannerException(file,NO_BUFFER_SIZE, yyline); }
case 783: break;
case 620:
case 621:
case 658:
case 660:
case 691:
{ throw new ScannerException(file,QUIL_INITTHROW, yyline); }
case 784: break;
case 632:
case 633:
case 666:
case 668:
case 698:
{ throw new ScannerException(file,QUIL_SCANERROR, yyline); }
case 785: break;
case 661:
{ isImplementing = concExc(isImplementing, yytext().substring(12).trim()); }
case 786: break;
case 539:
{ eofCode = conc(eofCode, " yyclose();");
eofThrow = concExc(eofThrow, "java.io.IOException");
}
case 787: break;
case 585:
case 586:
case 626:
case 628:
case 662:
{ throw new ScannerException(file,QUIL_EOFTHROW, yyline); }
case 788: break;
case 135:
{ return symbol(CHAR,new Character('\b')); }
case 789: break;
case 134:
{ return symbol(CHAR,new Character('\f')); }
case 790: break;
case 133:
{ return symbol(CHAR,new Character('\r')); }
case 791: break;
case 132:
{ return symbol(CHAR,new Character('\t')); }
case 792: break;
case 131:
{ return symbol(CHAR,new Character('\n')); }
case 793: break;
case 47:
{ lookAheadUsed = true; return symbol(LOOKAHEAD); }
case 794: break;
case 59:
{ bolUsed = true; return symbol(HAT); }
case 795: break;
case 60:
case 231:
case 404:
case 405:
case 457:
case 461:
case 509:
case 516:
case 560:
case 561:
case 566:
case 567:
case 599:
case 602:
case 603:
case 608:
case 611:
case 612:
case 641:
case 642:
case 643:
case 644:
case 648:
case 649:
case 650:
case 651:
case 676:
case 677:
case 678:
case 684:
case 685:
case 686:
case 706:
case 710:
case 722:
case 725:
{ actionText.append(yytext()); }
case 796: break;
case 155:
case 157:
case 158:
{ string.append(yytext().charAt(1)); }
case 797: break;
case 156:
case 159:
case 236:
{ string.append( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8)); }
case 798: break;
case 160:
{ string.append('\"'); }
case 799: break;
case 161:
{ string.append('\n'); }
case 800: break;
case 162:
{ string.append('\t'); }
case 801: break;
case 163:
{ string.append('\r'); }
case 802: break;
case 164:
{ string.append('\f'); }
case 803: break;
case 165:
{ string.append('\b'); }
case 804: break;
case 216:
case 217:
{ inclusive_states = true; yybegin(STATELIST); }
case 805: break;
case 238:
case 298:
case 355:
{ string.append( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16)); }
case 806: break;
case 297:
{ string.append( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16)); }
case 807: break;
case 83:
case 84:
{ string.append(yytext()); }
case 808: break;
case 69:
{ string.append(yytext()); }
case 809: break;
case 559:
{ actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(EOFRULE); }
case 810: break;
case 81:
{ return symbol(DASH); }
case 811: break;
case 73:
{ yybegin(nextState); return symbol(STRING, string.toString()); }
case 812: break;
case 67:
{ return symbol(COMMA); }
case 813: break;
case 44:
{ return symbol(POINT); }
case 814: break;
case 46:
{ return symbol(STAR); }
case 815: break;
case 52:
{ return symbol(BANG); }
case 816: break;
case 53:
{ return symbol(TILDE); }
case 817: break;
case 56:
{ return symbol(PLUS); }
case 818: break;
case 318:
case 338:
{ return symbol(FULL); }
case 819: break;
case 95:
{ commentbalance++; }
case 820: break;
case 86:
{ throw new ScannerException(file,UNEXPECTED_NL, yyline, yycolumn); }
case 821: break;
case 71:
case 72:
{ throw new ScannerException(file,UNTERMINATED_STR, yyline, yycolumn); }
case 822: break;
case 65:
{ balance++; actionText.append('{'); }
case 823: break;
case 123:
{ nextState = REGEXPSTART; yybegin(COMMENT); }
case 824: break;
case 89:
{ yybegin(REGEXP); }
case 825: break;
case 35:
{ yybegin(REGEXP); }
case 826: break;
case 75:
{ throw new ScannerException(file,EOL_IN_CHARCLASS,yyline,yycolumn); }
case 827: break;
case 99:
case 100:
case 102:
case 103:
case 104:
case 105:
case 106:
case 107:
case 108:
case 109:
case 110:
case 111:
case 112:
case 113:
case 114:
case 119:
case 121:
case 180:
case 183:
case 184:
case 185:
case 186:
case 187:
case 188:
case 189:
case 190:
case 191:
case 192:
case 193:
case 194:
case 195:
case 196:
case 197:
case 198:
case 199:
case 200:
case 201:
case 202:
case 203:
case 204:
case 205:
case 206:
case 207:
case 208:
case 209:
case 215:
case 218:
case 245:
case 246:
case 248:
case 249:
case 250:
case 251:
case 252:
case 253:
case 254:
case 255:
case 256:
case 257:
case 258:
case 259:
case 260:
case 261:
case 262:
case 263:
case 264:
case 265:
case 266:
case 268:
case 269:
case 270:
case 271:
case 272:
case 273:
case 274:
case 275:
case 276:
case 280:
case 281:
case 302:
case 303:
case 304:
case 305:
case 306:
case 307:
case 308:
case 309:
case 310:
case 311:
case 312:
case 313:
case 314:
case 315:
case 316:
case 317:
case 319:
case 320:
case 321:
case 323:
case 324:
case 325:
case 326:
case 327:
case 328:
case 330:
case 331:
case 332:
case 333:
case 334:
case 335:
case 337:
case 340:
case 341:
case 361:
case 362:
case 363:
case 364:
case 365:
case 366:
case 367:
case 368:
case 369:
case 371:
case 373:
case 374:
case 375:
case 376:
case 377:
case 380:
case 381:
case 382:
case 383:
case 384:
case 385:
case 386:
case 387:
case 388:
case 389:
case 390:
case 391:
case 392:
case 395:
case 396:
case 419:
case 420:
case 421:
case 422:
case 423:
case 424:
case 425:
case 426:
case 427:
case 429:
case 430:
case 431:
case 432:
case 433:
case 434:
case 435:
case 436:
case 438:
case 439:
case 440:
case 443:
case 444:
case 445:
case 448:
case 449:
case 475:
case 478:
case 479:
case 480:
case 486:
case 487:
case 488:
case 489:
case 490:
case 491:
case 492:
case 493:
case 496:
case 498:
case 501:
case 528:
case 530:
case 531:
case 537:
case 538:
case 540:
case 541:
case 543:
case 544:
case 578:
case 579:
case 580:
case 588:
case 589:
case 590:
case 591:
case 622:
case 630:
{ throw new ScannerException(file,UNKNOWN_OPTION, yyline, yycolumn); }
case 828: break;
case 31:
case 34:
{ throw new ScannerException(file,UNKNOWN_OPTION, yyline, yycolumn); }
case 829: break;
case 19:
case 20:
case 21:
case 30:
case 36:
case 61:
case 62:
case 63:
case 70:
case 82:
case 85:
case 87:
{ throw new ScannerException(file,UNEXPECTED_CHAR, yyline, yycolumn); }
case 830: break;
case 24:
case 25:
{ yybegin(MACROS); }
case 831: break;
case 639:
{ return symbol(JLETTERCLASS); }
case 832: break;
case 140:
{ yybegin(REPEATEXP); return symbol(REPEAT, new Integer(yytext().trim().substring(1).trim())); }
case 833: break;
case 78:
{ string.setLength(0); nextState = CHARCLASS; yybegin(STRING_CONTENT); }
case 834: break;
case 731:
{ return symbol(JLETTERDIGITCLASS); }
case 835: break;
case 120:
{ macroDefinition = false; yybegin(REGEXPSTART); return symbol(DELIMITER); }
case 836: break;
case 27:
{ return symbol(IDENT, yytext()); }
case 837: break;
case 42:
case 43:
{ if (macroDefinition) { yybegin(MACROS); } return symbol(REGEXPEND); }
case 838: break;
case 55:
{ return symbol(CLOSEBRACKET); }
case 839: break;
case 169:
{ yypushback(1); yycolumn--; return symbol(CHAR, new Character(yytext().charAt(0))); }
case 840: break;
case 228:
{ return symbol_countUpdate(MACROUSE, makeMacroIdent()); }
case 841: break;
case 379:
{ isYYEOF = true; }
case 842: break;
case 481:
{ notUnix = true; }
case 843: break;
case 139:
{ nextState = REGEXP; yybegin(COMMENT); }
case 844: break;
case 97:
{ nextState = MACROS; yybegin(COMMENT); }
case 845: break;
case 181:
case 182:
{ string.setLength(0); yybegin(COPY); }
case 846: break;
case 267:
{ cupCompatible = true;
isImplementing = concExc(isImplementing, "java_cup.runtime.Scanner");
if (functionName == null)
functionName = "next_token";
if (tokenType == null)
tokenType = "java_cup.runtime.Symbol";
if (eofVal == null)
eofVal = "return new java_cup.runtime.Symbol("+cupSymbol+".EOF);";
eofCode = conc(eofCode, " yyclose();");
eofThrow = concExc(eofThrow, "java.io.IOException");
}
case 847: break;
case 428:
case 535:
{ tokenType = yytext().substring(6).trim(); }
case 848: break;
case 584:
{ isExtending = yytext().substring(9).trim(); }
case 849: break;
case 629:
{ functionName = yytext().substring(10).trim(); }
case 850: break;
case 701:
{ return symbol(LOWERCLASS); }
case 851: break;
case 700:
{ return symbol(UPPERCLASS); }
case 852: break;
case 22:
{ states.insert(yytext(),inclusive_states); }
case 853: break;
case 54:
{ return symbol(OPENBRACKET); }
case 854: break;
case 482:
case 483:
case 532:
case 534:
case 581:
{ throw new ScannerException(file,QUIL_THROW, yyline); }
case 855: break;
case 494:
case 495:
case 545:
case 547:
case 592:
{ throw new ScannerException(file,QUIL_CUPSYM, yyline); }
case 856: break;
case 558:
{ return symbol(DIGITCLASS); }
case 857: break;
case 596:
{ return symbol(LETTERCLASS); }
case 858: break;
case 124:
{ }
case 859: break;
case 118:
{ Out.warning(NOT_AT_BOL, yyline); yypushback(1); }
case 860: break;
case 94:
{ if (commentbalance > 0)
commentbalance--;
else
yybegin(nextState);
}
case 861: break;
case 90:
case 177:
{
t.start();
yybegin(MACROS);
macroDefinition = true;
return symbol(USERCODE,userCode);
}
case 862: break;
case 66:
{ }
case 863: break;
case 41:
{ }
case 864: break;
case 29:
{ }
case 865: break;
case 28:
case 33:
{ }
case 866: break;
case 23:
case 26:
{ }
case 867: break;
case 48:
{ string.setLength(0); nextState = REGEXP; yybegin(STRING_CONTENT); }
case 868: break;
case 64:
{ if (balance > 0) {
balance--;
actionText.append('}');
}
else {
yybegin(REGEXPSTART);
Action a = new Action(actionText.toString(), action_line);
actions.addElement(a);
return symbol(ACTION, a);
}
}
case 869: break;
case 145:
case 146:
{ if (macroDefinition) {
yybegin(EATWSPNL);
return symbol(BAR);
}
else {
yybegin(REGEXPSTART);
return symbol(NOACTION);
}
}
case 870: break;
case 178:
case 179:
{ }
case 871: break;
case 247:
case 477:
{ isInteger = true; }
case 872: break;
case 322:
{ lineCount = true; }
case 873: break;
case 329:
{ charCount = true; }
case 874: break;
case 378:
{ isFinal = true; }
case 875: break;
case 446:
{ isInteger = true;
if (eofVal == null)
eofVal = "return 0;";
eofCode = conc(eofCode, " yyclose();");
eofThrow = concExc(eofThrow, "java.io.IOException");
}
case 876: break;
case 447:
{ isPublic = true; }
case 877: break;
case 476:
{ isIntWrap = true; }
case 878: break;
case 502:
{ actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1;
return symbol_countUpdate(EOFRULE, null); }
case 879: break;
case 546:
case 593:
{ cupSymbol = yytext().substring(8).trim();
if (cupCompatible) Out.warning(CUPSYM_AFTER_CUP, yyline); }
case 880: break;
case 548:
{ cupDebug = true; }
case 881: break;
case 549:
{ caseless = true; }
case 882: break;
case 631:
{ standalone = true; isInteger = true; }
case 883: break;
default:
if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
yy_atEOF = true;
yy_do_eof();
switch (yy_lexical_state) {
case STRING_CONTENT:
{ throw new ScannerException(file,EOF_IN_STRING); }
case 733: break;
case MACROS:
{ if ( yymoreStreams() ) {
file = (File) files.pop();
yypopStream();
}
else
throw new ScannerException(file,EOF_IN_MACROS);
}
case 734: break;
case STATELIST:
{ throw new ScannerException(file,EOF_IN_MACROS); }
case 735: break;
case CHARCLASS:
{ throw new ScannerException(file,EOF_IN_REGEXP); }
case 736: break;
case JAVA_CODE:
{ throw new ScannerException(file,EOF_IN_ACTION); }
case 737: break;
case REPEATEXP:
{ throw new ScannerException(file,EOF_IN_REGEXP); }
case 738: break;
case COMMENT:
{ throw new ScannerException(file,EOF_IN_COMMENT); }
case 739: break;
case STATES:
{ throw new ScannerException(file,EOF_IN_STATES); }
case 740: break;
case COPY:
{ throw new ScannerException(file,EOF_IN_MACROS); }
case 741: break;
default:
{ if ( yymoreStreams() ) {
file = (File) files.pop();
yypopStream();
}
else
return symbol(EOF); }
}
}
else {
yy_ScanError(YY_NO_MATCH);
}
}
}
}
/**
* Converts an int token code into the name of the
* token by reflection on the cup symbol class/interface sym
*
* This code was contributed by Karl Meissner <meissnersd@yahoo.com>
* <a href="http://meissner.v0.net/msd.htm">meissner.v0.net/msd.htm</a>
*/
private String getTokenName(int token) {
try {
java.lang.reflect.Field [] class_fields = sym.class.getFields();
for (int i = 0; i < class_fields.length; i++) {
if (class_fields[i].getInt(null) == token) {
return class_fields[i].getName();
}
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
return "UNKNOWN TOKEN";
}
/**
* Same as next_token but also prints the token to standard out
* for debugging.
*
* This code was contributed by Karl Meissner <meissnersd@yahoo.com>
* <a href="http://meissner.v0.net/msd.htm">meissner.v0.net/msd.htm</a>
*/
public Symbol debug_next_token() throws java.io.IOException {
java_cup.runtime.Symbol s = next_token();
System.out.println( "line:" + (yyline+1) + " col:" + (yycolumn+1) + " --"+ yytext() + "--" + getTokenName(s.sym) + "--");
return s;
}
/**
* Runs the scanner on input files.
*
* This main method is the debugging routine for the scanner.
* It prints debugging information about each returned token to
* System.out until the end of file is reached, or an error occured.
*
* @param argv the command line, contains the filenames to run
* the scanner on.
*/
public static void main(String argv[]) {
if (argv.length == 0) {
System.out.println("Usage : java LexScan <inputfile>");
}
else {
for (int i = 0; i < argv.length; i++) {
LexScan scanner = null;
try {
scanner = new LexScan( new java.io.FileReader(argv[i]) );
while ( !scanner.yy_atEOF ) scanner.debug_next_token();
}
catch (java.io.FileNotFoundException e) {
System.out.println("File not found : \""+argv[i]+"\"");
}
catch (java.io.IOException e) {
System.out.println("IO error scanning file \""+argv[i]+"\"");
System.out.println(e);
}
catch (Exception e) {
System.out.println("Unexpected exception:");
e.printStackTrace();
}
}
}
}
}