Просмотр исходного кода

Rename 'go' to 'golang', add 'golang' to top level README

Robin Maisch 4 лет назад
Родитель
Сommit
3fa91a49b8

+ 1 - 1
README.md

@@ -48,7 +48,7 @@ Usage: JPlag [ options ] [ <root-dir> ... ] [ -new <new-dir> ... ] [ -old <old-d
 
 named arguments:
   -h, --help       show this help message and exit
-  -l               {java,python3,cpp,csharp,char,text,scheme} Select the language to parse the submissions (default: java)
+  -l               {java,python3,cpp,csharp,rlang,golang,char,text,scheme} Select the language to parse the submissions (default: java)
   -bc BC           Path of the directory containing the base code (common framework used in all submissions)
   -v               {quiet,long} Verbosity of the logging (default: quiet)
   -d               Debug parser. Non-parsable files will be stored (default: false)

+ 0 - 862
jplag.frontend.golang/gen/GoLexer.java

@@ -1,862 +0,0 @@
-// Generated from C:/Users/robin/Documents/Masterstudium/Uni - FS 4/PISE/jPlag/jplag.frontend.go/src/main/antlr4/de/jplag/go/grammar\GoLexer.g4 by ANTLR 4.10.1
-import org.antlr.v4.runtime.Lexer;
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenStream;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.misc.*;
-
-@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
-public class GoLexer extends Lexer {
-	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }
-
-	protected static final DFA[] _decisionToDFA;
-	protected static final PredictionContextCache _sharedContextCache =
-		new PredictionContextCache();
-	public static final int
-		BREAK=1, DEFAULT=2, FUNC=3, INTERFACE=4, SELECT=5, CASE=6, DEFER=7, GO=8, 
-		MAP=9, STRUCT=10, CHAN=11, ELSE=12, GOTO=13, PACKAGE=14, SWITCH=15, CONST=16, 
-		FALLTHROUGH=17, IF=18, RANGE=19, TYPE=20, CONTINUE=21, FOR=22, IMPORT=23, 
-		RETURN=24, VAR=25, NIL_LIT=26, IDENTIFIER=27, L_PAREN=28, R_PAREN=29, 
-		L_CURLY=30, R_CURLY=31, L_BRACKET=32, R_BRACKET=33, ASSIGN=34, COMMA=35, 
-		SEMI=36, COLON=37, DOT=38, PLUS_PLUS=39, MINUS_MINUS=40, DECLARE_ASSIGN=41, 
-		ELLIPSIS=42, LOGICAL_OR=43, LOGICAL_AND=44, EQUALS=45, NOT_EQUALS=46, 
-		LESS=47, LESS_OR_EQUALS=48, GREATER=49, GREATER_OR_EQUALS=50, OR=51, DIV=52, 
-		MOD=53, LSHIFT=54, RSHIFT=55, BIT_CLEAR=56, EXCLAMATION=57, PLUS=58, MINUS=59, 
-		CARET=60, STAR=61, AMPERSAND=62, RECEIVE=63, DECIMAL_LIT=64, BINARY_LIT=65, 
-		OCTAL_LIT=66, HEX_LIT=67, FLOAT_LIT=68, DECIMAL_FLOAT_LIT=69, HEX_FLOAT_LIT=70, 
-		IMAGINARY_LIT=71, RUNE_LIT=72, BYTE_VALUE=73, OCTAL_BYTE_VALUE=74, HEX_BYTE_VALUE=75, 
-		LITTLE_U_VALUE=76, BIG_U_VALUE=77, RAW_STRING_LIT=78, INTERPRETED_STRING_LIT=79, 
-		WS=80, COMMENT=81, TERMINATOR=82, LINE_COMMENT=83, WS_NLSEMI=84, COMMENT_NLSEMI=85, 
-		LINE_COMMENT_NLSEMI=86, EOS=87, OTHER=88;
-	public static final int
-		NLSEMI=1;
-	public static String[] channelNames = {
-		"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
-	};
-
-	public static String[] modeNames = {
-		"DEFAULT_MODE", "NLSEMI"
-	};
-
-	private static String[] makeRuleNames() {
-		return new String[] {
-			"BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", "GO", 
-			"MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", 
-			"FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", 
-			"VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", 
-			"L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT", 
-			"PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR", 
-			"LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER", 
-			"GREATER_OR_EQUALS", "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR", 
-			"EXCLAMATION", "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE", 
-			"DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", 
-			"HEX_FLOAT_LIT", "HEX_MANTISSA", "HEX_EXPONENT", "IMAGINARY_LIT", "RUNE", 
-			"RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", "HEX_BYTE_VALUE", "LITTLE_U_VALUE", 
-			"BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", "WS", "COMMENT", 
-			"TERMINATOR", "LINE_COMMENT", "UNICODE_VALUE", "ESCAPED_VALUE", "DECIMALS", 
-			"OCTAL_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "EXPONENT", "LETTER", "UNICODE_DIGIT", 
-			"UNICODE_LETTER", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI", 
-			"EOS", "OTHER"
-		};
-	}
-	public static final String[] ruleNames = makeRuleNames();
-
-	private static String[] makeLiteralNames() {
-		return new String[] {
-			null, "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'", 
-			"'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'", 
-			"'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'", 
-			"'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'", 
-			null, "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'", 
-			"':'", "'.'", "'++'", "'--'", "':='", "'...'", "'||'", "'&&'", "'=='", 
-			"'!='", "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", "'>>'", 
-			"'&^'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'"
-		};
-	}
-	private static final String[] _LITERAL_NAMES = makeLiteralNames();
-	private static String[] makeSymbolicNames() {
-		return new String[] {
-			null, "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", 
-			"GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", 
-			"FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", 
-			"VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", 
-			"L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT", 
-			"PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR", 
-			"LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER", 
-			"GREATER_OR_EQUALS", "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR", 
-			"EXCLAMATION", "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE", 
-			"DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", 
-			"HEX_FLOAT_LIT", "IMAGINARY_LIT", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", 
-			"HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT", 
-			"INTERPRETED_STRING_LIT", "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT", 
-			"WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI", "EOS", "OTHER"
-		};
-	}
-	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
-	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
-
-	/**
-	 * @deprecated Use {@link #VOCABULARY} instead.
-	 */
-	@Deprecated
-	public static final String[] tokenNames;
-	static {
-		tokenNames = new String[_SYMBOLIC_NAMES.length];
-		for (int i = 0; i < tokenNames.length; i++) {
-			tokenNames[i] = VOCABULARY.getLiteralName(i);
-			if (tokenNames[i] == null) {
-				tokenNames[i] = VOCABULARY.getSymbolicName(i);
-			}
-
-			if (tokenNames[i] == null) {
-				tokenNames[i] = "<INVALID>";
-			}
-		}
-	}
-
-	@Override
-	@Deprecated
-	public String[] getTokenNames() {
-		return tokenNames;
-	}
-
-	@Override
-
-	public Vocabulary getVocabulary() {
-		return VOCABULARY;
-	}
-
-
-	public GoLexer(CharStream input) {
-		super(input);
-		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
-	}
-
-	@Override
-	public String getGrammarFileName() { return "GoLexer.g4"; }
-
-	@Override
-	public String[] getRuleNames() { return ruleNames; }
-
-	@Override
-	public String getSerializedATN() { return _serializedATN; }
-
-	@Override
-	public String[] getChannelNames() { return channelNames; }
-
-	@Override
-	public String[] getModeNames() { return modeNames; }
-
-	@Override
-	public ATN getATN() { return _ATN; }
-
-	public static final String _serializedATN =
-		"\u0004\u0000X\u0347\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007"+
-		"\u0000\u0002\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007"+
-		"\u0003\u0002\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007"+
-		"\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n"+
-		"\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002"+
-		"\u000e\u0007\u000e\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002"+
-		"\u0011\u0007\u0011\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002"+
-		"\u0014\u0007\u0014\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002"+
-		"\u0017\u0007\u0017\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002"+
-		"\u001a\u0007\u001a\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002"+
-		"\u001d\u0007\u001d\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002"+
-		" \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002"+
-		"%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002"+
-		"*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002"+
-		"/\u0007/\u00020\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u0002"+
-		"4\u00074\u00025\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u0002"+
-		"9\u00079\u0002:\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002"+
-		">\u0007>\u0002?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002"+
-		"C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002"+
-		"H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002"+
-		"M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002"+
-		"R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002"+
-		"W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002"+
-		"\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002"+
-		"a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002d\u0007d\u0001\u0000\u0001\u0000"+
-		"\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
-		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
-		"\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
-		"\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
-		"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004"+
-		"\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+
-		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006"+
-		"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
-		"\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001"+
-		"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001"+
-		"\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
-		"\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+
-		"\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e"+
-		"\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+
-		"\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010"+
-		"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
-		"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
-		"\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012"+
-		"\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013"+
-		"\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
-		"\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
-		"\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016"+
-		"\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
-		"\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+
-		"\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018"+
-		"\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+
-		"\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0005\u001a\u0178\b\u001a"+
-		"\n\u001a\f\u001a\u017b\t\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
-		"\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001"+
-		"\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001"+
-		"\u001f\u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001\"\u0001\"\u0001"+
-		"#\u0001#\u0001$\u0001$\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001"+
-		"&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001)"+
-		"\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001"+
-		",\u0001,\u0001,\u0001-\u0001-\u0001-\u0001.\u0001.\u0001/\u0001/\u0001"+
-		"/\u00010\u00010\u00011\u00011\u00011\u00012\u00012\u00013\u00013\u0001"+
-		"4\u00014\u00015\u00015\u00015\u00016\u00016\u00016\u00017\u00017\u0001"+
-		"7\u00018\u00018\u00019\u00019\u0001:\u0001:\u0001;\u0001;\u0001<\u0001"+
-		"<\u0001=\u0001=\u0001>\u0001>\u0001>\u0001?\u0001?\u0001?\u0003?\u01e3"+
-		"\b?\u0001?\u0005?\u01e6\b?\n?\f?\u01e9\t?\u0003?\u01eb\b?\u0001?\u0001"+
-		"?\u0001@\u0001@\u0001@\u0003@\u01f2\b@\u0001@\u0004@\u01f5\b@\u000b@\f"+
-		"@\u01f6\u0001@\u0001@\u0001A\u0001A\u0003A\u01fd\bA\u0001A\u0003A\u0200"+
-		"\bA\u0001A\u0004A\u0203\bA\u000bA\fA\u0204\u0001A\u0001A\u0001B\u0001"+
-		"B\u0001B\u0003B\u020c\bB\u0001B\u0004B\u020f\bB\u000bB\fB\u0210\u0001"+
-		"B\u0001B\u0001C\u0001C\u0003C\u0217\bC\u0001C\u0001C\u0001D\u0001D\u0001"+
-		"D\u0003D\u021e\bD\u0001D\u0003D\u0221\bD\u0001D\u0003D\u0224\bD\u0001"+
-		"D\u0001D\u0001D\u0003D\u0229\bD\u0003D\u022b\bD\u0001E\u0001E\u0001E\u0001"+
-		"E\u0001E\u0001F\u0003F\u0233\bF\u0001F\u0004F\u0236\bF\u000bF\fF\u0237"+
-		"\u0001F\u0001F\u0003F\u023c\bF\u0001F\u0005F\u023f\bF\nF\fF\u0242\tF\u0003"+
-		"F\u0244\bF\u0001F\u0001F\u0001F\u0003F\u0249\bF\u0001F\u0005F\u024c\b"+
-		"F\nF\fF\u024f\tF\u0003F\u0251\bF\u0001G\u0001G\u0003G\u0255\bG\u0001G"+
-		"\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0003H\u025e\bH\u0001H\u0001"+
-		"H\u0001H\u0001H\u0001I\u0001I\u0001I\u0003I\u0267\bI\u0001I\u0001I\u0001"+
-		"J\u0001J\u0001J\u0001J\u0001K\u0001K\u0003K\u0271\bK\u0001L\u0001L\u0001"+
-		"L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001"+
-		"N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001O\u0001O\u0001"+
-		"O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0005P\u0291\bP\nP"+
-		"\fP\u0294\tP\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0005Q\u029d"+
-		"\bQ\nQ\fQ\u02a0\tQ\u0001Q\u0001Q\u0001Q\u0001Q\u0001R\u0004R\u02a7\bR"+
-		"\u000bR\fR\u02a8\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0005S\u02b1"+
-		"\bS\nS\fS\u02b4\tS\u0001S\u0001S\u0001S\u0001S\u0001S\u0001T\u0004T\u02bc"+
-		"\bT\u000bT\fT\u02bd\u0001T\u0001T\u0001U\u0001U\u0001U\u0001U\u0005U\u02c6"+
-		"\bU\nU\fU\u02c9\tU\u0001U\u0001U\u0001V\u0001V\u0001V\u0001V\u0003V\u02d1"+
-		"\bV\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+
-		"W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+
-		"W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0003W\u02ed\bW\u0001X\u0001"+
-		"X\u0003X\u02f1\bX\u0001X\u0005X\u02f4\bX\nX\fX\u02f7\tX\u0001Y\u0001Y"+
-		"\u0001Z\u0001Z\u0001[\u0001[\u0001\\\u0001\\\u0003\\\u0301\b\\\u0001\\"+
-		"\u0001\\\u0001]\u0001]\u0003]\u0307\b]\u0001^\u0001^\u0001_\u0001_\u0001"+
-		"`\u0004`\u030e\b`\u000b`\f`\u030f\u0001`\u0001`\u0001a\u0001a\u0001a\u0001"+
-		"a\u0005a\u0318\ba\na\fa\u031b\ta\u0001a\u0001a\u0001a\u0001a\u0001a\u0001"+
-		"b\u0001b\u0001b\u0001b\u0005b\u0326\bb\nb\fb\u0329\tb\u0001b\u0001b\u0001"+
-		"c\u0004c\u032e\bc\u000bc\fc\u032f\u0001c\u0001c\u0001c\u0001c\u0001c\u0005"+
-		"c\u0337\bc\nc\fc\u033a\tc\u0001c\u0001c\u0001c\u0003c\u033f\bc\u0001c"+
-		"\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0003\u02b2\u0319\u0338\u0000"+
-		"e\u0002\u0001\u0004\u0002\u0006\u0003\b\u0004\n\u0005\f\u0006\u000e\u0007"+
-		"\u0010\b\u0012\t\u0014\n\u0016\u000b\u0018\f\u001a\r\u001c\u000e\u001e"+
-		"\u000f \u0010\"\u0011$\u0012&\u0013(\u0014*\u0015,\u0016.\u00170\u0018"+
-		"2\u00194\u001a6\u001b8\u001c:\u001d<\u001e>\u001f@ B!D\"F#H$J%L&N\'P("+
-		"R)T*V+X,Z-\\.^/`0b1d2f3h4j5l6n7p8r9t:v;x<z=|>~?\u0080@\u0082A\u0084B\u0086"+
-		"C\u0088D\u008aE\u008cF\u008e\u0000\u0090\u0000\u0092G\u0094\u0000\u0096"+
-		"H\u0098I\u009aJ\u009cK\u009eL\u00a0M\u00a2N\u00a4O\u00a6P\u00a8Q\u00aa"+
-		"R\u00acS\u00ae\u0000\u00b0\u0000\u00b2\u0000\u00b4\u0000\u00b6\u0000\u00b8"+
-		"\u0000\u00ba\u0000\u00bc\u0000\u00be\u0000\u00c0\u0000\u00c2T\u00c4U\u00c6"+
-		"V\u00c8W\u00caX\u0002\u0000\u0001\u0013\u0001\u000019\u0001\u000009\u0002"+
-		"\u0000BBbb\u0002\u0000OOoo\u0002\u0000XXxx\u0002\u0000PPpp\u0002\u0000"+
-		"++--\u0001\u0000``\u0002\u0000\"\"\\\\\u0002\u0000\t\t  \u0002\u0000\n"+
-		"\n\r\r\u0003\u0000\n\n\r\r\'\'\t\u0000\"\"\'\'\\\\abffnnrrttvv\u0001\u0000"+
-		"07\u0003\u000009AFaf\u0001\u000001\u0002\u0000EEee=\u000009\u0660\u0669"+
-		"\u06f0\u06f9\u07c0\u07c9\u0966\u096f\u09e6\u09ef\u0a66\u0a6f\u0ae6\u0aef"+
-		"\u0b66\u0b6f\u0be6\u0bef\u0c66\u0c6f\u0ce6\u0cef\u0d66\u0d6f\u0de6\u0def"+
-		"\u0e50\u0e59\u0ed0\u0ed9\u0f20\u0f29\u1040\u1049\u1090\u1099\u17e0\u17e9"+
-		"\u1810\u1819\u1946\u194f\u19d0\u19d9\u1a80\u1a89\u1a90\u1a99\u1b50\u1b59"+
-		"\u1bb0\u1bb9\u1c40\u1c49\u1c50\u1c59\u8000\ua620\u8000\ua629\u8000\ua8d0"+
-		"\u8000\ua8d9\u8000\ua900\u8000\ua909\u8000\ua9d0\u8000\ua9d9\u8000\ua9f0"+
-		"\u8000\ua9f9\u8000\uaa50\u8000\uaa59\u8000\uabf0\u8000\uabf9\u8000\uff10"+
-		"\u8000\uff19\u8001\u04a0\u8001\u04a9\u8001\u0d30\u8001\u0d39\u8001\u1066"+
-		"\u8001\u106f\u8001\u10f0\u8001\u10f9\u8001\u1136\u8001\u113f\u8001\u11d0"+
-		"\u8001\u11d9\u8001\u12f0\u8001\u12f9\u8001\u1450\u8001\u1459\u8001\u14d0"+
-		"\u8001\u14d9\u8001\u1650\u8001\u1659\u8001\u16c0\u8001\u16c9\u8001\u1730"+
-		"\u8001\u1739\u8001\u18e0\u8001\u18e9\u8001\u1950\u8001\u1959\u8001\u1c50"+
-		"\u8001\u1c59\u8001\u1d50\u8001\u1d59\u8001\u1da0\u8001\u1da9\u8001\u6a60"+
-		"\u8001\u6a69\u8001\u6b50\u8001\u6b59\u8001\ud7ce\u8001\ud7ff\u8001\ue140"+
-		"\u8001\ue149\u8001\ue2f0\u8001\ue2f9\u8001\ue950\u8001\ue959\u8001\ufbf0"+
-		"\u8001\ufbf9\u026e\u0000AZaz\u00aa\u00aa\u00b5\u00b5\u00ba\u00ba\u00c0"+
-		"\u00d6\u00d8\u00f6\u00f8\u02c1\u02c6\u02d1\u02e0\u02e4\u02ec\u02ec\u02ee"+
-		"\u02ee\u0370\u0374\u0376\u0377\u037a\u037d\u037f\u037f\u0386\u0386\u0388"+
-		"\u038a\u038c\u038c\u038e\u03a1\u03a3\u03f5\u03f7\u0481\u048a\u052f\u0531"+
-		"\u0556\u0559\u0559\u0560\u0588\u05d0\u05ea\u05ef\u05f2\u0620\u064a\u066e"+
-		"\u066f\u0671\u06d3\u06d5\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa\u06fc\u06ff"+
-		"\u06ff\u0710\u0710\u0712\u072f\u074d\u07a5\u07b1\u07b1\u07ca\u07ea\u07f4"+
-		"\u07f5\u07fa\u07fa\u0800\u0815\u081a\u081a\u0824\u0824\u0828\u0828\u0840"+
-		"\u0858\u0860\u086a\u08a0\u08b4\u08b6\u08c7\u0904\u0939\u093d\u093d\u0950"+
-		"\u0950\u0958\u0961\u0971\u0980\u0985\u098c\u098f\u0990\u0993\u09a8\u09aa"+
-		"\u09b0\u09b2\u09b2\u09b6\u09b9\u09bd\u09bd\u09ce\u09ce\u09dc\u09dd\u09df"+
-		"\u09e1\u09f0\u09f1\u09fc\u09fc\u0a05\u0a0a\u0a0f\u0a10\u0a13\u0a28\u0a2a"+
-		"\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59\u0a5c\u0a5e\u0a5e\u0a72"+
-		"\u0a74\u0a85\u0a8d\u0a8f\u0a91\u0a93\u0aa8\u0aaa\u0ab0\u0ab2\u0ab3\u0ab5"+
-		"\u0ab9\u0abd\u0abd\u0ad0\u0ad0\u0ae0\u0ae1\u0af9\u0af9\u0b05\u0b0c\u0b0f"+
-		"\u0b10\u0b13\u0b28\u0b2a\u0b30\u0b32\u0b33\u0b35\u0b39\u0b3d\u0b3d\u0b5c"+
-		"\u0b5d\u0b5f\u0b61\u0b71\u0b71\u0b83\u0b83\u0b85\u0b8a\u0b8e\u0b90\u0b92"+
-		"\u0b95\u0b99\u0b9a\u0b9c\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8\u0baa\u0bae"+
-		"\u0bb9\u0bd0\u0bd0\u0c05\u0c0c\u0c0e\u0c10\u0c12\u0c28\u0c2a\u0c39\u0c3d"+
-		"\u0c3d\u0c58\u0c5a\u0c60\u0c61\u0c80\u0c80\u0c85\u0c8c\u0c8e\u0c90\u0c92"+
-		"\u0ca8\u0caa\u0cb3\u0cb5\u0cb9\u0cbd\u0cbd\u0cde\u0cde\u0ce0\u0ce1\u0cf1"+
-		"\u0cf2\u0d04\u0d0c\u0d0e\u0d10\u0d12\u0d3a\u0d3d\u0d3d\u0d4e\u0d4e\u0d54"+
-		"\u0d56\u0d5f\u0d61\u0d7a\u0d7f\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd"+
-		"\u0dbd\u0dc0\u0dc6\u0e01\u0e30\u0e32\u0e33\u0e40\u0e46\u0e81\u0e82\u0e84"+
-		"\u0e84\u0e86\u0e8a\u0e8c\u0ea3\u0ea5\u0ea5\u0ea7\u0eb0\u0eb2\u0eb3\u0ebd"+
-		"\u0ebd\u0ec0\u0ec4\u0ec6\u0ec6\u0edc\u0edf\u0f00\u0f00\u0f40\u0f47\u0f49"+
-		"\u0f6c\u0f88\u0f8c\u1000\u102a\u103f\u103f\u1050\u1055\u105a\u105d\u1061"+
-		"\u1061\u1065\u1066\u106e\u1070\u1075\u1081\u108e\u108e\u10a0\u10c5\u10c7"+
-		"\u10c7\u10cd\u10cd\u10d0\u10fa\u10fc\u1248\u124a\u124d\u1250\u1256\u1258"+
-		"\u1258\u125a\u125d\u1260\u1288\u128a\u128d\u1290\u12b0\u12b2\u12b5\u12b8"+
-		"\u12be\u12c0\u12c0\u12c2\u12c5\u12c8\u12d6\u12d8\u1310\u1312\u1315\u1318"+
-		"\u135a\u1380\u138f\u13a0\u13f5\u13f8\u13fd\u1401\u166c\u166f\u167f\u1681"+
-		"\u169a\u16a0\u16ea\u16f1\u16f8\u1700\u170c\u170e\u1711\u1720\u1731\u1740"+
-		"\u1751\u1760\u176c\u176e\u1770\u1780\u17b3\u17d7\u17d7\u17dc\u17dc\u1820"+
-		"\u1878\u1880\u1884\u1887\u18a8\u18aa\u18aa\u18b0\u18f5\u1900\u191e\u1950"+
-		"\u196d\u1970\u1974\u1980\u19ab\u19b0\u19c9\u1a00\u1a16\u1a20\u1a54\u1aa7"+
-		"\u1aa7\u1b05\u1b33\u1b45\u1b4b\u1b83\u1ba0\u1bae\u1baf\u1bba\u1be5\u1c00"+
-		"\u1c23\u1c4d\u1c4f\u1c5a\u1c7d\u1c80\u1c88\u1c90\u1cba\u1cbd\u1cbf\u1ce9"+
-		"\u1cec\u1cee\u1cf3\u1cf5\u1cf6\u1cfa\u1cfa\u1d00\u1dbf\u1e00\u1f15\u1f18"+
-		"\u1f1d\u1f20\u1f45\u1f48\u1f4d\u1f50\u1f57\u1f59\u1f59\u1f5b\u1f5b\u1f5d"+
-		"\u1f5d\u1f5f\u1f7d\u1f80\u1fb4\u1fb6\u1fbc\u1fbe\u1fbe\u1fc2\u1fc4\u1fc6"+
-		"\u1fcc\u1fd0\u1fd3\u1fd6\u1fdb\u1fe0\u1fec\u1ff2\u1ff4\u1ff6\u1ffc\u2071"+
-		"\u2071\u207f\u207f\u2090\u209c\u2102\u2102\u2107\u2107\u210a\u2113\u2115"+
-		"\u2115\u2119\u211d\u2124\u2124\u2126\u2126\u2128\u2128\u212a\u212d\u212f"+
-		"\u2139\u213c\u213f\u2145\u2149\u214e\u214e\u2183\u2184\u2c00\u2c2e\u2c30"+
-		"\u2c5e\u2c60\u2ce4\u2ceb\u2cee\u2cf2\u2cf3\u2d00\u2d25\u2d27\u2d27\u2d2d"+
-		"\u2d2d\u2d30\u2d67\u2d6f\u2d6f\u2d80\u2d96\u2da0\u2da6\u2da8\u2dae\u2db0"+
-		"\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce\u2dd0\u2dd6\u2dd8\u2dde\u2e2f"+
-		"\u2e2f\u3005\u3006\u3031\u3035\u303b\u303c\u3041\u3096\u309d\u309f\u30a1"+
-		"\u30fa\u30fc\u30ff\u3105\u312f\u3131\u318e\u31a0\u31bf\u31f0\u31ff\u3400"+
-		"\u4dbf\u4e00\u8000\u9ffc\u8000\ua000\u8000\ua48c\u8000\ua4d0\u8000\ua4fd"+
-		"\u8000\ua500\u8000\ua60c\u8000\ua610\u8000\ua61f\u8000\ua62a\u8000\ua62b"+
-		"\u8000\ua640\u8000\ua66e\u8000\ua67f\u8000\ua69d\u8000\ua6a0\u8000\ua6e5"+
-		"\u8000\ua717\u8000\ua71f\u8000\ua722\u8000\ua788\u8000\ua78b\u8000\ua7bf"+
-		"\u8000\ua7c2\u8000\ua7ca\u8000\ua7f5\u8000\ua801\u8000\ua803\u8000\ua805"+
-		"\u8000\ua807\u8000\ua80a\u8000\ua80c\u8000\ua822\u8000\ua840\u8000\ua873"+
-		"\u8000\ua882\u8000\ua8b3\u8000\ua8f2\u8000\ua8f7\u8000\ua8fb\u8000\ua8fb"+
-		"\u8000\ua8fd\u8000\ua8fe\u8000\ua90a\u8000\ua925\u8000\ua930\u8000\ua946"+
-		"\u8000\ua960\u8000\ua97c\u8000\ua984\u8000\ua9b2\u8000\ua9cf\u8000\ua9cf"+
-		"\u8000\ua9e0\u8000\ua9e4\u8000\ua9e6\u8000\ua9ef\u8000\ua9fa\u8000\ua9fe"+
-		"\u8000\uaa00\u8000\uaa28\u8000\uaa40\u8000\uaa42\u8000\uaa44\u8000\uaa4b"+
-		"\u8000\uaa60\u8000\uaa76\u8000\uaa7a\u8000\uaa7a\u8000\uaa7e\u8000\uaaaf"+
-		"\u8000\uaab1\u8000\uaab1\u8000\uaab5\u8000\uaab6\u8000\uaab9\u8000\uaabd"+
-		"\u8000\uaac0\u8000\uaac0\u8000\uaac2\u8000\uaac2\u8000\uaadb\u8000\uaadd"+
-		"\u8000\uaae0\u8000\uaaea\u8000\uaaf2\u8000\uaaf4\u8000\uab01\u8000\uab06"+
-		"\u8000\uab09\u8000\uab0e\u8000\uab11\u8000\uab16\u8000\uab20\u8000\uab26"+
-		"\u8000\uab28\u8000\uab2e\u8000\uab30\u8000\uab5a\u8000\uab5c\u8000\uab69"+
-		"\u8000\uab70\u8000\uabe2\u8000\uac00\u8000\ud7a3\u8000\ud7b0\u8000\ud7c6"+
-		"\u8000\ud7cb\u8000\ud7fb\u8000\uf900\u8000\ufa6d\u8000\ufa70\u8000\ufad9"+
-		"\u8000\ufb00\u8000\ufb06\u8000\ufb13\u8000\ufb17\u8000\ufb1d\u8000\ufb1d"+
-		"\u8000\ufb1f\u8000\ufb28\u8000\ufb2a\u8000\ufb36\u8000\ufb38\u8000\ufb3c"+
-		"\u8000\ufb3e\u8000\ufb3e\u8000\ufb40\u8000\ufb41\u8000\ufb43\u8000\ufb44"+
-		"\u8000\ufb46\u8000\ufbb1\u8000\ufbd3\u8000\ufd3d\u8000\ufd50\u8000\ufd8f"+
-		"\u8000\ufd92\u8000\ufdc7\u8000\ufdf0\u8000\ufdfb\u8000\ufe70\u8000\ufe74"+
-		"\u8000\ufe76\u8000\ufefc\u8000\uff21\u8000\uff3a\u8000\uff41\u8000\uff5a"+
-		"\u8000\uff66\u8000\uffbe\u8000\uffc2\u8000\uffc7\u8000\uffca\u8000\uffcf"+
-		"\u8000\uffd2\u8000\uffd7\u8000\uffda\u8000\uffdc\u8001\u0000\u8001\u000b"+
-		"\u8001\r\u8001&\u8001(\u8001:\u8001<\u8001=\u8001?\u8001M\u8001P\u8001"+
-		"]\u8001\u0080\u8001\u00fa\u8001\u0280\u8001\u029c\u8001\u02a0\u8001\u02d0"+
-		"\u8001\u0300\u8001\u031f\u8001\u032d\u8001\u0340\u8001\u0342\u8001\u0349"+
-		"\u8001\u0350\u8001\u0375\u8001\u0380\u8001\u039d\u8001\u03a0\u8001\u03c3"+
-		"\u8001\u03c8\u8001\u03cf\u8001\u0400\u8001\u049d\u8001\u04b0\u8001\u04d3"+
-		"\u8001\u04d8\u8001\u04fb\u8001\u0500\u8001\u0527\u8001\u0530\u8001\u0563"+
-		"\u8001\u0600\u8001\u0736\u8001\u0740\u8001\u0755\u8001\u0760\u8001\u0767"+
-		"\u8001\u0800\u8001\u0805\u8001\u0808\u8001\u0808\u8001\u080a\u8001\u0835"+
-		"\u8001\u0837\u8001\u0838\u8001\u083c\u8001\u083c\u8001\u083f\u8001\u0855"+
-		"\u8001\u0860\u8001\u0876\u8001\u0880\u8001\u089e\u8001\u08e0\u8001\u08f2"+
-		"\u8001\u08f4\u8001\u08f5\u8001\u0900\u8001\u0915\u8001\u0920\u8001\u0939"+
-		"\u8001\u0980\u8001\u09b7\u8001\u09be\u8001\u09bf\u8001\u0a00\u8001\u0a00"+
-		"\u8001\u0a10\u8001\u0a13\u8001\u0a15\u8001\u0a17\u8001\u0a19\u8001\u0a35"+
-		"\u8001\u0a60\u8001\u0a7c\u8001\u0a80\u8001\u0a9c\u8001\u0ac0\u8001\u0ac7"+
-		"\u8001\u0ac9\u8001\u0ae4\u8001\u0b00\u8001\u0b35\u8001\u0b40\u8001\u0b55"+
-		"\u8001\u0b60\u8001\u0b72\u8001\u0b80\u8001\u0b91\u8001\u0c00\u8001\u0c48"+
-		"\u8001\u0c80\u8001\u0cb2\u8001\u0cc0\u8001\u0cf2\u8001\u0d00\u8001\u0d23"+
-		"\u8001\u0e80\u8001\u0ea9\u8001\u0eb0\u8001\u0eb1\u8001\u0f00\u8001\u0f1c"+
-		"\u8001\u0f27\u8001\u0f27\u8001\u0f30\u8001\u0f45\u8001\u0fb0\u8001\u0fc4"+
-		"\u8001\u0fe0\u8001\u0ff6\u8001\u1003\u8001\u1037\u8001\u1083\u8001\u10af"+
-		"\u8001\u10d0\u8001\u10e8\u8001\u1103\u8001\u1126\u8001\u1144\u8001\u1144"+
-		"\u8001\u1147\u8001\u1147\u8001\u1150\u8001\u1172\u8001\u1176\u8001\u1176"+
-		"\u8001\u1183\u8001\u11b2\u8001\u11c1\u8001\u11c4\u8001\u11da\u8001\u11da"+
-		"\u8001\u11dc\u8001\u11dc\u8001\u1200\u8001\u1211\u8001\u1213\u8001\u122b"+
-		"\u8001\u1280\u8001\u1286\u8001\u1288\u8001\u1288\u8001\u128a\u8001\u128d"+
-		"\u8001\u128f\u8001\u129d\u8001\u129f\u8001\u12a8\u8001\u12b0\u8001\u12de"+
-		"\u8001\u1305\u8001\u130c\u8001\u130f\u8001\u1310\u8001\u1313\u8001\u1328"+
-		"\u8001\u132a\u8001\u1330\u8001\u1332\u8001\u1333\u8001\u1335\u8001\u1339"+
-		"\u8001\u133d\u8001\u133d\u8001\u1350\u8001\u1350\u8001\u135d\u8001\u1361"+
-		"\u8001\u1400\u8001\u1434\u8001\u1447\u8001\u144a\u8001\u145f\u8001\u1461"+
-		"\u8001\u1480\u8001\u14af\u8001\u14c4\u8001\u14c5\u8001\u14c7\u8001\u14c7"+
-		"\u8001\u1580\u8001\u15ae\u8001\u15d8\u8001\u15db\u8001\u1600\u8001\u162f"+
-		"\u8001\u1644\u8001\u1644\u8001\u1680\u8001\u16aa\u8001\u16b8\u8001\u16b8"+
-		"\u8001\u1700\u8001\u171a\u8001\u1800\u8001\u182b\u8001\u18a0\u8001\u18df"+
-		"\u8001\u18ff\u8001\u1906\u8001\u1909\u8001\u1909\u8001\u190c\u8001\u1913"+
-		"\u8001\u1915\u8001\u1916\u8001\u1918\u8001\u192f\u8001\u193f\u8001\u193f"+
-		"\u8001\u1941\u8001\u1941\u8001\u19a0\u8001\u19a7\u8001\u19aa\u8001\u19d0"+
-		"\u8001\u19e1\u8001\u19e1\u8001\u19e3\u8001\u19e3\u8001\u1a00\u8001\u1a00"+
-		"\u8001\u1a0b\u8001\u1a32\u8001\u1a3a\u8001\u1a3a\u8001\u1a50\u8001\u1a50"+
-		"\u8001\u1a5c\u8001\u1a89\u8001\u1a9d\u8001\u1a9d\u8001\u1ac0\u8001\u1af8"+
-		"\u8001\u1c00\u8001\u1c08\u8001\u1c0a\u8001\u1c2e\u8001\u1c40\u8001\u1c40"+
-		"\u8001\u1c72\u8001\u1c8f\u8001\u1d00\u8001\u1d06\u8001\u1d08\u8001\u1d09"+
-		"\u8001\u1d0b\u8001\u1d30\u8001\u1d46\u8001\u1d46\u8001\u1d60\u8001\u1d65"+
-		"\u8001\u1d67\u8001\u1d68\u8001\u1d6a\u8001\u1d89\u8001\u1d98\u8001\u1d98"+
-		"\u8001\u1ee0\u8001\u1ef2\u8001\u1fb0\u8001\u1fb0\u8001\u2000\u8001\u2399"+
-		"\u8001\u2480\u8001\u2543\u8001\u3000\u8001\u342e\u8001\u4400\u8001\u4646"+
-		"\u8001\u6800\u8001\u6a38\u8001\u6a40\u8001\u6a5e\u8001\u6ad0\u8001\u6aed"+
-		"\u8001\u6b00\u8001\u6b2f\u8001\u6b40\u8001\u6b43\u8001\u6b63\u8001\u6b77"+
-		"\u8001\u6b7d\u8001\u6b8f\u8001\u6e40\u8001\u6e7f\u8001\u6f00\u8001\u6f4a"+
-		"\u8001\u6f50\u8001\u6f50\u8001\u6f93\u8001\u6f9f\u8001\u6fe0\u8001\u6fe1"+
-		"\u8001\u6fe3\u8001\u6fe3\u8001\u7000\u8001\u87f7\u8001\u8800\u8001\u8cd5"+
-		"\u8001\u8d00\u8001\u8d08\u8001\ub000\u8001\ub11e\u8001\ub150\u8001\ub152"+
-		"\u8001\ub164\u8001\ub167\u8001\ub170\u8001\ub2fb\u8001\ubc00\u8001\ubc6a"+
-		"\u8001\ubc70\u8001\ubc7c\u8001\ubc80\u8001\ubc88\u8001\ubc90\u8001\ubc99"+
-		"\u8001\ud400\u8001\ud454\u8001\ud456\u8001\ud49c\u8001\ud49e\u8001\ud49f"+
-		"\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5\u8001\ud4a6\u8001\ud4a9\u8001\ud4ac"+
-		"\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb\u8001\ud4bb\u8001\ud4bd\u8001\ud4c3"+
-		"\u8001\ud4c5\u8001\ud505\u8001\ud507\u8001\ud50a\u8001\ud50d\u8001\ud514"+
-		"\u8001\ud516\u8001\ud51c\u8001\ud51e\u8001\ud539\u8001\ud53b\u8001\ud53e"+
-		"\u8001\ud540\u8001\ud544\u8001\ud546\u8001\ud546\u8001\ud54a\u8001\ud550"+
-		"\u8001\ud552\u8001\ud6a5\u8001\ud6a8\u8001\ud6c0\u8001\ud6c2\u8001\ud6da"+
-		"\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc\u8001\ud714\u8001\ud716\u8001\ud734"+
-		"\u8001\ud736\u8001\ud74e\u8001\ud750\u8001\ud76e\u8001\ud770\u8001\ud788"+
-		"\u8001\ud78a\u8001\ud7a8\u8001\ud7aa\u8001\ud7c2\u8001\ud7c4\u8001\ud7cb"+
-		"\u8001\ue100\u8001\ue12c\u8001\ue137\u8001\ue13d\u8001\ue14e\u8001\ue14e"+
-		"\u8001\ue2c0\u8001\ue2eb\u8001\ue800\u8001\ue8c4\u8001\ue900\u8001\ue943"+
-		"\u8001\ue94b\u8001\ue94b\u8001\uee00\u8001\uee03\u8001\uee05\u8001\uee1f"+
-		"\u8001\uee21\u8001\uee22\u8001\uee24\u8001\uee24\u8001\uee27\u8001\uee27"+
-		"\u8001\uee29\u8001\uee32\u8001\uee34\u8001\uee37\u8001\uee39\u8001\uee39"+
-		"\u8001\uee3b\u8001\uee3b\u8001\uee42\u8001\uee42\u8001\uee47\u8001\uee47"+
-		"\u8001\uee49\u8001\uee49\u8001\uee4b\u8001\uee4b\u8001\uee4d\u8001\uee4f"+
-		"\u8001\uee51\u8001\uee52\u8001\uee54\u8001\uee54\u8001\uee57\u8001\uee57"+
-		"\u8001\uee59\u8001\uee59\u8001\uee5b\u8001\uee5b\u8001\uee5d\u8001\uee5d"+
-		"\u8001\uee5f\u8001\uee5f\u8001\uee61\u8001\uee62\u8001\uee64\u8001\uee64"+
-		"\u8001\uee67\u8001\uee6a\u8001\uee6c\u8001\uee72\u8001\uee74\u8001\uee77"+
-		"\u8001\uee79\u8001\uee7c\u8001\uee7e\u8001\uee7e\u8001\uee80\u8001\uee89"+
-		"\u8001\uee8b\u8001\uee9b\u8001\ueea1\u8001\ueea3\u8001\ueea5\u8001\ueea9"+
-		"\u8001\ueeab\u8001\ueebb\u8002\u0000\u8002\ua6dd\u8002\ua700\u8002\ub734"+
-		"\u8002\ub740\u8002\ub81d\u8002\ub820\u8002\ucea1\u8002\uceb0\u8002\uebe0"+
-		"\u8002\uf800\u8002\ufa1d\u8003\u0000\u8003\u134a\u0373\u0000\u0002\u0001"+
-		"\u0000\u0000\u0000\u0000\u0004\u0001\u0000\u0000\u0000\u0000\u0006\u0001"+
-		"\u0000\u0000\u0000\u0000\b\u0001\u0000\u0000\u0000\u0000\n\u0001\u0000"+
-		"\u0000\u0000\u0000\f\u0001\u0000\u0000\u0000\u0000\u000e\u0001\u0000\u0000"+
-		"\u0000\u0000\u0010\u0001\u0000\u0000\u0000\u0000\u0012\u0001\u0000\u0000"+
-		"\u0000\u0000\u0014\u0001\u0000\u0000\u0000\u0000\u0016\u0001\u0000\u0000"+
-		"\u0000\u0000\u0018\u0001\u0000\u0000\u0000\u0000\u001a\u0001\u0000\u0000"+
-		"\u0000\u0000\u001c\u0001\u0000\u0000\u0000\u0000\u001e\u0001\u0000\u0000"+
-		"\u0000\u0000 \u0001\u0000\u0000\u0000\u0000\"\u0001\u0000\u0000\u0000"+
-		"\u0000$\u0001\u0000\u0000\u0000\u0000&\u0001\u0000\u0000\u0000\u0000("+
-		"\u0001\u0000\u0000\u0000\u0000*\u0001\u0000\u0000\u0000\u0000,\u0001\u0000"+
-		"\u0000\u0000\u0000.\u0001\u0000\u0000\u0000\u00000\u0001\u0000\u0000\u0000"+
-		"\u00002\u0001\u0000\u0000\u0000\u00004\u0001\u0000\u0000\u0000\u00006"+
-		"\u0001\u0000\u0000\u0000\u00008\u0001\u0000\u0000\u0000\u0000:\u0001\u0000"+
-		"\u0000\u0000\u0000<\u0001\u0000\u0000\u0000\u0000>\u0001\u0000\u0000\u0000"+
-		"\u0000@\u0001\u0000\u0000\u0000\u0000B\u0001\u0000\u0000\u0000\u0000D"+
-		"\u0001\u0000\u0000\u0000\u0000F\u0001\u0000\u0000\u0000\u0000H\u0001\u0000"+
-		"\u0000\u0000\u0000J\u0001\u0000\u0000\u0000\u0000L\u0001\u0000\u0000\u0000"+
-		"\u0000N\u0001\u0000\u0000\u0000\u0000P\u0001\u0000\u0000\u0000\u0000R"+
-		"\u0001\u0000\u0000\u0000\u0000T\u0001\u0000\u0000\u0000\u0000V\u0001\u0000"+
-		"\u0000\u0000\u0000X\u0001\u0000\u0000\u0000\u0000Z\u0001\u0000\u0000\u0000"+
-		"\u0000\\\u0001\u0000\u0000\u0000\u0000^\u0001\u0000\u0000\u0000\u0000"+
-		"`\u0001\u0000\u0000\u0000\u0000b\u0001\u0000\u0000\u0000\u0000d\u0001"+
-		"\u0000\u0000\u0000\u0000f\u0001\u0000\u0000\u0000\u0000h\u0001\u0000\u0000"+
-		"\u0000\u0000j\u0001\u0000\u0000\u0000\u0000l\u0001\u0000\u0000\u0000\u0000"+
-		"n\u0001\u0000\u0000\u0000\u0000p\u0001\u0000\u0000\u0000\u0000r\u0001"+
-		"\u0000\u0000\u0000\u0000t\u0001\u0000\u0000\u0000\u0000v\u0001\u0000\u0000"+
-		"\u0000\u0000x\u0001\u0000\u0000\u0000\u0000z\u0001\u0000\u0000\u0000\u0000"+
-		"|\u0001\u0000\u0000\u0000\u0000~\u0001\u0000\u0000\u0000\u0000\u0080\u0001"+
-		"\u0000\u0000\u0000\u0000\u0082\u0001\u0000\u0000\u0000\u0000\u0084\u0001"+
-		"\u0000\u0000\u0000\u0000\u0086\u0001\u0000\u0000\u0000\u0000\u0088\u0001"+
-		"\u0000\u0000\u0000\u0000\u008a\u0001\u0000\u0000\u0000\u0000\u008c\u0001"+
-		"\u0000\u0000\u0000\u0000\u0092\u0001\u0000\u0000\u0000\u0000\u0096\u0001"+
-		"\u0000\u0000\u0000\u0000\u0098\u0001\u0000\u0000\u0000\u0000\u009a\u0001"+
-		"\u0000\u0000\u0000\u0000\u009c\u0001\u0000\u0000\u0000\u0000\u009e\u0001"+
-		"\u0000\u0000\u0000\u0000\u00a0\u0001\u0000\u0000\u0000\u0000\u00a2\u0001"+
-		"\u0000\u0000\u0000\u0000\u00a4\u0001\u0000\u0000\u0000\u0000\u00a6\u0001"+
-		"\u0000\u0000\u0000\u0000\u00a8\u0001\u0000\u0000\u0000\u0000\u00aa\u0001"+
-		"\u0000\u0000\u0000\u0000\u00ac\u0001\u0000\u0000\u0000\u0001\u00c2\u0001"+
-		"\u0000\u0000\u0000\u0001\u00c4\u0001\u0000\u0000\u0000\u0001\u00c6\u0001"+
-		"\u0000\u0000\u0000\u0001\u00c8\u0001\u0000\u0000\u0000\u0001\u00ca\u0001"+
-		"\u0000\u0000\u0000\u0002\u00cc\u0001\u0000\u0000\u0000\u0004\u00d4\u0001"+
-		"\u0000\u0000\u0000\u0006\u00dc\u0001\u0000\u0000\u0000\b\u00e1\u0001\u0000"+
-		"\u0000\u0000\n\u00eb\u0001\u0000\u0000\u0000\f\u00f2\u0001\u0000\u0000"+
-		"\u0000\u000e\u00f7\u0001\u0000\u0000\u0000\u0010\u00fd\u0001\u0000\u0000"+
-		"\u0000\u0012\u0100\u0001\u0000\u0000\u0000\u0014\u0104\u0001\u0000\u0000"+
-		"\u0000\u0016\u010b\u0001\u0000\u0000\u0000\u0018\u0110\u0001\u0000\u0000"+
-		"\u0000\u001a\u0115\u0001\u0000\u0000\u0000\u001c\u011a\u0001\u0000\u0000"+
-		"\u0000\u001e\u0122\u0001\u0000\u0000\u0000 \u0129\u0001\u0000\u0000\u0000"+
-		"\"\u012f\u0001\u0000\u0000\u0000$\u013d\u0001\u0000\u0000\u0000&\u0140"+
-		"\u0001\u0000\u0000\u0000(\u0146\u0001\u0000\u0000\u0000*\u014b\u0001\u0000"+
-		"\u0000\u0000,\u0156\u0001\u0000\u0000\u0000.\u015a\u0001\u0000\u0000\u0000"+
-		"0\u0161\u0001\u0000\u0000\u00002\u016a\u0001\u0000\u0000\u00004\u016e"+
-		"\u0001\u0000\u0000\u00006\u0174\u0001\u0000\u0000\u00008\u017e\u0001\u0000"+
-		"\u0000\u0000:\u0180\u0001\u0000\u0000\u0000<\u0184\u0001\u0000\u0000\u0000"+
-		">\u0186\u0001\u0000\u0000\u0000@\u018a\u0001\u0000\u0000\u0000B\u018c"+
-		"\u0001\u0000\u0000\u0000D\u0190\u0001\u0000\u0000\u0000F\u0192\u0001\u0000"+
-		"\u0000\u0000H\u0194\u0001\u0000\u0000\u0000J\u0196\u0001\u0000\u0000\u0000"+
-		"L\u0198\u0001\u0000\u0000\u0000N\u019a\u0001\u0000\u0000\u0000P\u019f"+
-		"\u0001\u0000\u0000\u0000R\u01a4\u0001\u0000\u0000\u0000T\u01a7\u0001\u0000"+
-		"\u0000\u0000V\u01ab\u0001\u0000\u0000\u0000X\u01ae\u0001\u0000\u0000\u0000"+
-		"Z\u01b1\u0001\u0000\u0000\u0000\\\u01b4\u0001\u0000\u0000\u0000^\u01b7"+
-		"\u0001\u0000\u0000\u0000`\u01b9\u0001\u0000\u0000\u0000b\u01bc\u0001\u0000"+
-		"\u0000\u0000d\u01be\u0001\u0000\u0000\u0000f\u01c1\u0001\u0000\u0000\u0000"+
-		"h\u01c3\u0001\u0000\u0000\u0000j\u01c5\u0001\u0000\u0000\u0000l\u01c7"+
-		"\u0001\u0000\u0000\u0000n\u01ca\u0001\u0000\u0000\u0000p\u01cd\u0001\u0000"+
-		"\u0000\u0000r\u01d0\u0001\u0000\u0000\u0000t\u01d2\u0001\u0000\u0000\u0000"+
-		"v\u01d4\u0001\u0000\u0000\u0000x\u01d6\u0001\u0000\u0000\u0000z\u01d8"+
-		"\u0001\u0000\u0000\u0000|\u01da\u0001\u0000\u0000\u0000~\u01dc\u0001\u0000"+
-		"\u0000\u0000\u0080\u01ea\u0001\u0000\u0000\u0000\u0082\u01ee\u0001\u0000"+
-		"\u0000\u0000\u0084\u01fa\u0001\u0000\u0000\u0000\u0086\u0208\u0001\u0000"+
-		"\u0000\u0000\u0088\u0216\u0001\u0000\u0000\u0000\u008a\u022a\u0001\u0000"+
-		"\u0000\u0000\u008c\u022c\u0001\u0000\u0000\u0000\u008e\u0250\u0001\u0000"+
-		"\u0000\u0000\u0090\u0252\u0001\u0000\u0000\u0000\u0092\u025d\u0001\u0000"+
-		"\u0000\u0000\u0094\u0263\u0001\u0000\u0000\u0000\u0096\u026a\u0001\u0000"+
-		"\u0000\u0000\u0098\u0270\u0001\u0000\u0000\u0000\u009a\u0272\u0001\u0000"+
-		"\u0000\u0000\u009c\u0277\u0001\u0000\u0000\u0000\u009e\u027c\u0001\u0000"+
-		"\u0000\u0000\u00a0\u0283\u0001\u0000\u0000\u0000\u00a2\u028e\u0001\u0000"+
-		"\u0000\u0000\u00a4\u0299\u0001\u0000\u0000\u0000\u00a6\u02a6\u0001\u0000"+
-		"\u0000\u0000\u00a8\u02ac\u0001\u0000\u0000\u0000\u00aa\u02bb\u0001\u0000"+
-		"\u0000\u0000\u00ac\u02c1\u0001\u0000\u0000\u0000\u00ae\u02d0\u0001\u0000"+
-		"\u0000\u0000\u00b0\u02d2\u0001\u0000\u0000\u0000\u00b2\u02ee\u0001\u0000"+
-		"\u0000\u0000\u00b4\u02f8\u0001\u0000\u0000\u0000\u00b6\u02fa\u0001\u0000"+
-		"\u0000\u0000\u00b8\u02fc\u0001\u0000\u0000\u0000\u00ba\u02fe\u0001\u0000"+
-		"\u0000\u0000\u00bc\u0306\u0001\u0000\u0000\u0000\u00be\u0308\u0001\u0000"+
-		"\u0000\u0000\u00c0\u030a\u0001\u0000\u0000\u0000\u00c2\u030d\u0001\u0000"+
-		"\u0000\u0000\u00c4\u0313\u0001\u0000\u0000\u0000\u00c6\u0321\u0001\u0000"+
-		"\u0000\u0000\u00c8\u033e\u0001\u0000\u0000\u0000\u00ca\u0342\u0001\u0000"+
-		"\u0000\u0000\u00cc\u00cd\u0005b\u0000\u0000\u00cd\u00ce\u0005r\u0000\u0000"+
-		"\u00ce\u00cf\u0005e\u0000\u0000\u00cf\u00d0\u0005a\u0000\u0000\u00d0\u00d1"+
-		"\u0005k\u0000\u0000\u00d1\u00d2\u0001\u0000\u0000\u0000\u00d2\u00d3\u0006"+
-		"\u0000\u0000\u0000\u00d3\u0003\u0001\u0000\u0000\u0000\u00d4\u00d5\u0005"+
-		"d\u0000\u0000\u00d5\u00d6\u0005e\u0000\u0000\u00d6\u00d7\u0005f\u0000"+
-		"\u0000\u00d7\u00d8\u0005a\u0000\u0000\u00d8\u00d9\u0005u\u0000\u0000\u00d9"+
-		"\u00da\u0005l\u0000\u0000\u00da\u00db\u0005t\u0000\u0000\u00db\u0005\u0001"+
-		"\u0000\u0000\u0000\u00dc\u00dd\u0005f\u0000\u0000\u00dd\u00de\u0005u\u0000"+
-		"\u0000\u00de\u00df\u0005n\u0000\u0000\u00df\u00e0\u0005c\u0000\u0000\u00e0"+
-		"\u0007\u0001\u0000\u0000\u0000\u00e1\u00e2\u0005i\u0000\u0000\u00e2\u00e3"+
-		"\u0005n\u0000\u0000\u00e3\u00e4\u0005t\u0000\u0000\u00e4\u00e5\u0005e"+
-		"\u0000\u0000\u00e5\u00e6\u0005r\u0000\u0000\u00e6\u00e7\u0005f\u0000\u0000"+
-		"\u00e7\u00e8\u0005a\u0000\u0000\u00e8\u00e9\u0005c\u0000\u0000\u00e9\u00ea"+
-		"\u0005e\u0000\u0000\u00ea\t\u0001\u0000\u0000\u0000\u00eb\u00ec\u0005"+
-		"s\u0000\u0000\u00ec\u00ed\u0005e\u0000\u0000\u00ed\u00ee\u0005l\u0000"+
-		"\u0000\u00ee\u00ef\u0005e\u0000\u0000\u00ef\u00f0\u0005c\u0000\u0000\u00f0"+
-		"\u00f1\u0005t\u0000\u0000\u00f1\u000b\u0001\u0000\u0000\u0000\u00f2\u00f3"+
-		"\u0005c\u0000\u0000\u00f3\u00f4\u0005a\u0000\u0000\u00f4\u00f5\u0005s"+
-		"\u0000\u0000\u00f5\u00f6\u0005e\u0000\u0000\u00f6\r\u0001\u0000\u0000"+
-		"\u0000\u00f7\u00f8\u0005d\u0000\u0000\u00f8\u00f9\u0005e\u0000\u0000\u00f9"+
-		"\u00fa\u0005f\u0000\u0000\u00fa\u00fb\u0005e\u0000\u0000\u00fb\u00fc\u0005"+
-		"r\u0000\u0000\u00fc\u000f\u0001\u0000\u0000\u0000\u00fd\u00fe\u0005g\u0000"+
-		"\u0000\u00fe\u00ff\u0005o\u0000\u0000\u00ff\u0011\u0001\u0000\u0000\u0000"+
-		"\u0100\u0101\u0005m\u0000\u0000\u0101\u0102\u0005a\u0000\u0000\u0102\u0103"+
-		"\u0005p\u0000\u0000\u0103\u0013\u0001\u0000\u0000\u0000\u0104\u0105\u0005"+
-		"s\u0000\u0000\u0105\u0106\u0005t\u0000\u0000\u0106\u0107\u0005r\u0000"+
-		"\u0000\u0107\u0108\u0005u\u0000\u0000\u0108\u0109\u0005c\u0000\u0000\u0109"+
-		"\u010a\u0005t\u0000\u0000\u010a\u0015\u0001\u0000\u0000\u0000\u010b\u010c"+
-		"\u0005c\u0000\u0000\u010c\u010d\u0005h\u0000\u0000\u010d\u010e\u0005a"+
-		"\u0000\u0000\u010e\u010f\u0005n\u0000\u0000\u010f\u0017\u0001\u0000\u0000"+
-		"\u0000\u0110\u0111\u0005e\u0000\u0000\u0111\u0112\u0005l\u0000\u0000\u0112"+
-		"\u0113\u0005s\u0000\u0000\u0113\u0114\u0005e\u0000\u0000\u0114\u0019\u0001"+
-		"\u0000\u0000\u0000\u0115\u0116\u0005g\u0000\u0000\u0116\u0117\u0005o\u0000"+
-		"\u0000\u0117\u0118\u0005t\u0000\u0000\u0118\u0119\u0005o\u0000\u0000\u0119"+
-		"\u001b\u0001\u0000\u0000\u0000\u011a\u011b\u0005p\u0000\u0000\u011b\u011c"+
-		"\u0005a\u0000\u0000\u011c\u011d\u0005c\u0000\u0000\u011d\u011e\u0005k"+
-		"\u0000\u0000\u011e\u011f\u0005a\u0000\u0000\u011f\u0120\u0005g\u0000\u0000"+
-		"\u0120\u0121\u0005e\u0000\u0000\u0121\u001d\u0001\u0000\u0000\u0000\u0122"+
-		"\u0123\u0005s\u0000\u0000\u0123\u0124\u0005w\u0000\u0000\u0124\u0125\u0005"+
-		"i\u0000\u0000\u0125\u0126\u0005t\u0000\u0000\u0126\u0127\u0005c\u0000"+
-		"\u0000\u0127\u0128\u0005h\u0000\u0000\u0128\u001f\u0001\u0000\u0000\u0000"+
-		"\u0129\u012a\u0005c\u0000\u0000\u012a\u012b\u0005o\u0000\u0000\u012b\u012c"+
-		"\u0005n\u0000\u0000\u012c\u012d\u0005s\u0000\u0000\u012d\u012e\u0005t"+
-		"\u0000\u0000\u012e!\u0001\u0000\u0000\u0000\u012f\u0130\u0005f\u0000\u0000"+
-		"\u0130\u0131\u0005a\u0000\u0000\u0131\u0132\u0005l\u0000\u0000\u0132\u0133"+
-		"\u0005l\u0000\u0000\u0133\u0134\u0005t\u0000\u0000\u0134\u0135\u0005h"+
-		"\u0000\u0000\u0135\u0136\u0005r\u0000\u0000\u0136\u0137\u0005o\u0000\u0000"+
-		"\u0137\u0138\u0005u\u0000\u0000\u0138\u0139\u0005g\u0000\u0000\u0139\u013a"+
-		"\u0005h\u0000\u0000\u013a\u013b\u0001\u0000\u0000\u0000\u013b\u013c\u0006"+
-		"\u0010\u0000\u0000\u013c#\u0001\u0000\u0000\u0000\u013d\u013e\u0005i\u0000"+
-		"\u0000\u013e\u013f\u0005f\u0000\u0000\u013f%\u0001\u0000\u0000\u0000\u0140"+
-		"\u0141\u0005r\u0000\u0000\u0141\u0142\u0005a\u0000\u0000\u0142\u0143\u0005"+
-		"n\u0000\u0000\u0143\u0144\u0005g\u0000\u0000\u0144\u0145\u0005e\u0000"+
-		"\u0000\u0145\'\u0001\u0000\u0000\u0000\u0146\u0147\u0005t\u0000\u0000"+
-		"\u0147\u0148\u0005y\u0000\u0000\u0148\u0149\u0005p\u0000\u0000\u0149\u014a"+
-		"\u0005e\u0000\u0000\u014a)\u0001\u0000\u0000\u0000\u014b\u014c\u0005c"+
-		"\u0000\u0000\u014c\u014d\u0005o\u0000\u0000\u014d\u014e\u0005n\u0000\u0000"+
-		"\u014e\u014f\u0005t\u0000\u0000\u014f\u0150\u0005i\u0000\u0000\u0150\u0151"+
-		"\u0005n\u0000\u0000\u0151\u0152\u0005u\u0000\u0000\u0152\u0153\u0005e"+
-		"\u0000\u0000\u0153\u0154\u0001\u0000\u0000\u0000\u0154\u0155\u0006\u0014"+
-		"\u0000\u0000\u0155+\u0001\u0000\u0000\u0000\u0156\u0157\u0005f\u0000\u0000"+
-		"\u0157\u0158\u0005o\u0000\u0000\u0158\u0159\u0005r\u0000\u0000\u0159-"+
-		"\u0001\u0000\u0000\u0000\u015a\u015b\u0005i\u0000\u0000\u015b\u015c\u0005"+
-		"m\u0000\u0000\u015c\u015d\u0005p\u0000\u0000\u015d\u015e\u0005o\u0000"+
-		"\u0000\u015e\u015f\u0005r\u0000\u0000\u015f\u0160\u0005t\u0000\u0000\u0160"+
-		"/\u0001\u0000\u0000\u0000\u0161\u0162\u0005r\u0000\u0000\u0162\u0163\u0005"+
-		"e\u0000\u0000\u0163\u0164\u0005t\u0000\u0000\u0164\u0165\u0005u\u0000"+
-		"\u0000\u0165\u0166\u0005r\u0000\u0000\u0166\u0167\u0005n\u0000\u0000\u0167"+
-		"\u0168\u0001\u0000\u0000\u0000\u0168\u0169\u0006\u0017\u0000\u0000\u0169"+
-		"1\u0001\u0000\u0000\u0000\u016a\u016b\u0005v\u0000\u0000\u016b\u016c\u0005"+
-		"a\u0000\u0000\u016c\u016d\u0005r\u0000\u0000\u016d3\u0001\u0000\u0000"+
-		"\u0000\u016e\u016f\u0005n\u0000\u0000\u016f\u0170\u0005i\u0000\u0000\u0170"+
-		"\u0171\u0005l\u0000\u0000\u0171\u0172\u0001\u0000\u0000\u0000\u0172\u0173"+
-		"\u0006\u0019\u0000\u0000\u01735\u0001\u0000\u0000\u0000\u0174\u0179\u0003"+
-		"\u00bc]\u0000\u0175\u0178\u0003\u00bc]\u0000\u0176\u0178\u0003\u00be^"+
-		"\u0000\u0177\u0175\u0001\u0000\u0000\u0000\u0177\u0176\u0001\u0000\u0000"+
-		"\u0000\u0178\u017b\u0001\u0000\u0000\u0000\u0179\u0177\u0001\u0000\u0000"+
-		"\u0000\u0179\u017a\u0001\u0000\u0000\u0000\u017a\u017c\u0001\u0000\u0000"+
-		"\u0000\u017b\u0179\u0001\u0000\u0000\u0000\u017c\u017d\u0006\u001a\u0000"+
-		"\u0000\u017d7\u0001\u0000\u0000\u0000\u017e\u017f\u0005(\u0000\u0000\u017f"+
-		"9\u0001\u0000\u0000\u0000\u0180\u0181\u0005)\u0000\u0000\u0181\u0182\u0001"+
-		"\u0000\u0000\u0000\u0182\u0183\u0006\u001c\u0000\u0000\u0183;\u0001\u0000"+
-		"\u0000\u0000\u0184\u0185\u0005{\u0000\u0000\u0185=\u0001\u0000\u0000\u0000"+
-		"\u0186\u0187\u0005}\u0000\u0000\u0187\u0188\u0001\u0000\u0000\u0000\u0188"+
-		"\u0189\u0006\u001e\u0000\u0000\u0189?\u0001\u0000\u0000\u0000\u018a\u018b"+
-		"\u0005[\u0000\u0000\u018bA\u0001\u0000\u0000\u0000\u018c\u018d\u0005]"+
-		"\u0000\u0000\u018d\u018e\u0001\u0000\u0000\u0000\u018e\u018f\u0006 \u0000"+
-		"\u0000\u018fC\u0001\u0000\u0000\u0000\u0190\u0191\u0005=\u0000\u0000\u0191"+
-		"E\u0001\u0000\u0000\u0000\u0192\u0193\u0005,\u0000\u0000\u0193G\u0001"+
-		"\u0000\u0000\u0000\u0194\u0195\u0005;\u0000\u0000\u0195I\u0001\u0000\u0000"+
-		"\u0000\u0196\u0197\u0005:\u0000\u0000\u0197K\u0001\u0000\u0000\u0000\u0198"+
-		"\u0199\u0005.\u0000\u0000\u0199M\u0001\u0000\u0000\u0000\u019a\u019b\u0005"+
-		"+\u0000\u0000\u019b\u019c\u0005+\u0000\u0000\u019c\u019d\u0001\u0000\u0000"+
-		"\u0000\u019d\u019e\u0006&\u0000\u0000\u019eO\u0001\u0000\u0000\u0000\u019f"+
-		"\u01a0\u0005-\u0000\u0000\u01a0\u01a1\u0005-\u0000\u0000\u01a1\u01a2\u0001"+
-		"\u0000\u0000\u0000\u01a2\u01a3\u0006\'\u0000\u0000\u01a3Q\u0001\u0000"+
-		"\u0000\u0000\u01a4\u01a5\u0005:\u0000\u0000\u01a5\u01a6\u0005=\u0000\u0000"+
-		"\u01a6S\u0001\u0000\u0000\u0000\u01a7\u01a8\u0005.\u0000\u0000\u01a8\u01a9"+
-		"\u0005.\u0000\u0000\u01a9\u01aa\u0005.\u0000\u0000\u01aaU\u0001\u0000"+
-		"\u0000\u0000\u01ab\u01ac\u0005|\u0000\u0000\u01ac\u01ad\u0005|\u0000\u0000"+
-		"\u01adW\u0001\u0000\u0000\u0000\u01ae\u01af\u0005&\u0000\u0000\u01af\u01b0"+
-		"\u0005&\u0000\u0000\u01b0Y\u0001\u0000\u0000\u0000\u01b1\u01b2\u0005="+
-		"\u0000\u0000\u01b2\u01b3\u0005=\u0000\u0000\u01b3[\u0001\u0000\u0000\u0000"+
-		"\u01b4\u01b5\u0005!\u0000\u0000\u01b5\u01b6\u0005=\u0000\u0000\u01b6]"+
-		"\u0001\u0000\u0000\u0000\u01b7\u01b8\u0005<\u0000\u0000\u01b8_\u0001\u0000"+
-		"\u0000\u0000\u01b9\u01ba\u0005<\u0000\u0000\u01ba\u01bb\u0005=\u0000\u0000"+
-		"\u01bba\u0001\u0000\u0000\u0000\u01bc\u01bd\u0005>\u0000\u0000\u01bdc"+
-		"\u0001\u0000\u0000\u0000\u01be\u01bf\u0005>\u0000\u0000\u01bf\u01c0\u0005"+
-		"=\u0000\u0000\u01c0e\u0001\u0000\u0000\u0000\u01c1\u01c2\u0005|\u0000"+
-		"\u0000\u01c2g\u0001\u0000\u0000\u0000\u01c3\u01c4\u0005/\u0000\u0000\u01c4"+
-		"i\u0001\u0000\u0000\u0000\u01c5\u01c6\u0005%\u0000\u0000\u01c6k\u0001"+
-		"\u0000\u0000\u0000\u01c7\u01c8\u0005<\u0000\u0000\u01c8\u01c9\u0005<\u0000"+
-		"\u0000\u01c9m\u0001\u0000\u0000\u0000\u01ca\u01cb\u0005>\u0000\u0000\u01cb"+
-		"\u01cc\u0005>\u0000\u0000\u01cco\u0001\u0000\u0000\u0000\u01cd\u01ce\u0005"+
-		"&\u0000\u0000\u01ce\u01cf\u0005^\u0000\u0000\u01cfq\u0001\u0000\u0000"+
-		"\u0000\u01d0\u01d1\u0005!\u0000\u0000\u01d1s\u0001\u0000\u0000\u0000\u01d2"+
-		"\u01d3\u0005+\u0000\u0000\u01d3u\u0001\u0000\u0000\u0000\u01d4\u01d5\u0005"+
-		"-\u0000\u0000\u01d5w\u0001\u0000\u0000\u0000\u01d6\u01d7\u0005^\u0000"+
-		"\u0000\u01d7y\u0001\u0000\u0000\u0000\u01d8\u01d9\u0005*\u0000\u0000\u01d9"+
-		"{\u0001\u0000\u0000\u0000\u01da\u01db\u0005&\u0000\u0000\u01db}\u0001"+
-		"\u0000\u0000\u0000\u01dc\u01dd\u0005<\u0000\u0000\u01dd\u01de\u0005-\u0000"+
-		"\u0000\u01de\u007f\u0001\u0000\u0000\u0000\u01df\u01eb\u00050\u0000\u0000"+
-		"\u01e0\u01e7\u0007\u0000\u0000\u0000\u01e1\u01e3\u0005_\u0000\u0000\u01e2"+
-		"\u01e1\u0001\u0000\u0000\u0000\u01e2\u01e3\u0001\u0000\u0000\u0000\u01e3"+
-		"\u01e4\u0001\u0000\u0000\u0000\u01e4\u01e6\u0007\u0001\u0000\u0000\u01e5"+
-		"\u01e2\u0001\u0000\u0000\u0000\u01e6\u01e9\u0001\u0000\u0000\u0000\u01e7"+
-		"\u01e5\u0001\u0000\u0000\u0000\u01e7\u01e8\u0001\u0000\u0000\u0000\u01e8"+
-		"\u01eb\u0001\u0000\u0000\u0000\u01e9\u01e7\u0001\u0000\u0000\u0000\u01ea"+
-		"\u01df\u0001\u0000\u0000\u0000\u01ea\u01e0\u0001\u0000\u0000\u0000\u01eb"+
-		"\u01ec\u0001\u0000\u0000\u0000\u01ec\u01ed\u0006?\u0000\u0000\u01ed\u0081"+
-		"\u0001\u0000\u0000\u0000\u01ee\u01ef\u00050\u0000\u0000\u01ef\u01f4\u0007"+
-		"\u0002\u0000\u0000\u01f0\u01f2\u0005_\u0000\u0000\u01f1\u01f0\u0001\u0000"+
-		"\u0000\u0000\u01f1\u01f2\u0001\u0000\u0000\u0000\u01f2\u01f3\u0001\u0000"+
-		"\u0000\u0000\u01f3\u01f5\u0003\u00b8[\u0000\u01f4\u01f1\u0001\u0000\u0000"+
-		"\u0000\u01f5\u01f6\u0001\u0000\u0000\u0000\u01f6\u01f4\u0001\u0000\u0000"+
-		"\u0000\u01f6\u01f7\u0001\u0000\u0000\u0000\u01f7\u01f8\u0001\u0000\u0000"+
-		"\u0000\u01f8\u01f9\u0006@\u0000\u0000\u01f9\u0083\u0001\u0000\u0000\u0000"+
-		"\u01fa\u01fc\u00050\u0000\u0000\u01fb\u01fd\u0007\u0003\u0000\u0000\u01fc"+
-		"\u01fb\u0001\u0000\u0000\u0000\u01fc\u01fd\u0001\u0000\u0000\u0000\u01fd"+
-		"\u0202\u0001\u0000\u0000\u0000\u01fe\u0200\u0005_\u0000\u0000\u01ff\u01fe"+
-		"\u0001\u0000\u0000\u0000\u01ff\u0200\u0001\u0000\u0000\u0000\u0200\u0201"+
-		"\u0001\u0000\u0000\u0000\u0201\u0203\u0003\u00b4Y\u0000\u0202\u01ff\u0001"+
-		"\u0000\u0000\u0000\u0203\u0204\u0001\u0000\u0000\u0000\u0204\u0202\u0001"+
-		"\u0000\u0000\u0000\u0204\u0205\u0001\u0000\u0000\u0000\u0205\u0206\u0001"+
-		"\u0000\u0000\u0000\u0206\u0207\u0006A\u0000\u0000\u0207\u0085\u0001\u0000"+
-		"\u0000\u0000\u0208\u0209\u00050\u0000\u0000\u0209\u020e\u0007\u0004\u0000"+
-		"\u0000\u020a\u020c\u0005_\u0000\u0000\u020b\u020a\u0001\u0000\u0000\u0000"+
-		"\u020b\u020c\u0001\u0000\u0000\u0000\u020c\u020d\u0001\u0000\u0000\u0000"+
-		"\u020d\u020f\u0003\u00b6Z\u0000\u020e\u020b\u0001\u0000\u0000\u0000\u020f"+
-		"\u0210\u0001\u0000\u0000\u0000\u0210\u020e\u0001\u0000\u0000\u0000\u0210"+
-		"\u0211\u0001\u0000\u0000\u0000\u0211\u0212\u0001\u0000\u0000\u0000\u0212"+
-		"\u0213\u0006B\u0000\u0000\u0213\u0087\u0001\u0000\u0000\u0000\u0214\u0217"+
-		"\u0003\u008aD\u0000\u0215\u0217\u0003\u008cE\u0000\u0216\u0214\u0001\u0000"+
-		"\u0000\u0000\u0216\u0215\u0001\u0000\u0000\u0000\u0217\u0218\u0001\u0000"+
-		"\u0000\u0000\u0218\u0219\u0006C\u0000\u0000\u0219\u0089\u0001\u0000\u0000"+
-		"\u0000\u021a\u0223\u0003\u00b2X\u0000\u021b\u021d\u0005.\u0000\u0000\u021c"+
-		"\u021e\u0003\u00b2X\u0000\u021d\u021c\u0001\u0000\u0000\u0000\u021d\u021e"+
-		"\u0001\u0000\u0000\u0000\u021e\u0220\u0001\u0000\u0000\u0000\u021f\u0221"+
-		"\u0003\u00ba\\\u0000\u0220\u021f\u0001\u0000\u0000\u0000\u0220\u0221\u0001"+
-		"\u0000\u0000\u0000\u0221\u0224\u0001\u0000\u0000\u0000\u0222\u0224\u0003"+
-		"\u00ba\\\u0000\u0223\u021b\u0001\u0000\u0000\u0000\u0223\u0222\u0001\u0000"+
-		"\u0000\u0000\u0224\u022b\u0001\u0000\u0000\u0000\u0225\u0226\u0005.\u0000"+
-		"\u0000\u0226\u0228\u0003\u00b2X\u0000\u0227\u0229\u0003\u00ba\\\u0000"+
-		"\u0228\u0227\u0001\u0000\u0000\u0000\u0228\u0229\u0001\u0000\u0000\u0000"+
-		"\u0229\u022b\u0001\u0000\u0000\u0000\u022a\u021a\u0001\u0000\u0000\u0000"+
-		"\u022a\u0225\u0001\u0000\u0000\u0000\u022b\u008b\u0001\u0000\u0000\u0000"+
-		"\u022c\u022d\u00050\u0000\u0000\u022d\u022e\u0007\u0004\u0000\u0000\u022e"+
-		"\u022f\u0003\u008eF\u0000\u022f\u0230\u0003\u0090G\u0000\u0230\u008d\u0001"+
-		"\u0000\u0000\u0000\u0231\u0233\u0005_\u0000\u0000\u0232\u0231\u0001\u0000"+
-		"\u0000\u0000\u0232\u0233\u0001\u0000\u0000\u0000\u0233\u0234\u0001\u0000"+
-		"\u0000\u0000\u0234\u0236\u0003\u00b6Z\u0000\u0235\u0232\u0001\u0000\u0000"+
-		"\u0000\u0236\u0237\u0001\u0000\u0000\u0000\u0237\u0235\u0001\u0000\u0000"+
-		"\u0000\u0237\u0238\u0001\u0000\u0000\u0000\u0238\u0243\u0001\u0000\u0000"+
-		"\u0000\u0239\u0240\u0005.\u0000\u0000\u023a\u023c\u0005_\u0000\u0000\u023b"+
-		"\u023a\u0001\u0000\u0000\u0000\u023b\u023c\u0001\u0000\u0000\u0000\u023c"+
-		"\u023d\u0001\u0000\u0000\u0000\u023d\u023f\u0003\u00b6Z\u0000\u023e\u023b"+
-		"\u0001\u0000\u0000\u0000\u023f\u0242\u0001\u0000\u0000\u0000\u0240\u023e"+
-		"\u0001\u0000\u0000\u0000\u0240\u0241\u0001\u0000\u0000\u0000\u0241\u0244"+
-		"\u0001\u0000\u0000\u0000\u0242\u0240\u0001\u0000\u0000\u0000\u0243\u0239"+
-		"\u0001\u0000\u0000\u0000\u0243\u0244\u0001\u0000\u0000\u0000\u0244\u0251"+
-		"\u0001\u0000\u0000\u0000\u0245\u0246\u0005.\u0000\u0000\u0246\u024d\u0003"+
-		"\u00b6Z\u0000\u0247\u0249\u0005_\u0000\u0000\u0248\u0247\u0001\u0000\u0000"+
-		"\u0000\u0248\u0249\u0001\u0000\u0000\u0000\u0249\u024a\u0001\u0000\u0000"+
-		"\u0000\u024a\u024c\u0003\u00b6Z\u0000\u024b\u0248\u0001\u0000\u0000\u0000"+
-		"\u024c\u024f\u0001\u0000\u0000\u0000\u024d\u024b\u0001\u0000\u0000\u0000"+
-		"\u024d\u024e\u0001\u0000\u0000\u0000\u024e\u0251\u0001\u0000\u0000\u0000"+
-		"\u024f\u024d\u0001\u0000\u0000\u0000\u0250\u0235\u0001\u0000\u0000\u0000"+
-		"\u0250\u0245\u0001\u0000\u0000\u0000\u0251\u008f\u0001\u0000\u0000\u0000"+
-		"\u0252\u0254\u0007\u0005\u0000\u0000\u0253\u0255\u0007\u0006\u0000\u0000"+
-		"\u0254\u0253\u0001\u0000\u0000\u0000\u0254\u0255\u0001\u0000\u0000\u0000"+
-		"\u0255\u0256\u0001\u0000\u0000\u0000\u0256\u0257\u0003\u00b2X\u0000\u0257"+
-		"\u0091\u0001\u0000\u0000\u0000\u0258\u025e\u0003\u0080?\u0000\u0259\u025e"+
-		"\u0003\u0082@\u0000\u025a\u025e\u0003\u0084A\u0000\u025b\u025e\u0003\u0086"+
-		"B\u0000\u025c\u025e\u0003\u0088C\u0000\u025d\u0258\u0001\u0000\u0000\u0000"+
-		"\u025d\u0259\u0001\u0000\u0000\u0000\u025d\u025a\u0001\u0000\u0000\u0000"+
-		"\u025d\u025b\u0001\u0000\u0000\u0000\u025d\u025c\u0001\u0000\u0000\u0000"+
-		"\u025e\u025f\u0001\u0000\u0000\u0000\u025f\u0260\u0005i\u0000\u0000\u0260"+
-		"\u0261\u0001\u0000\u0000\u0000\u0261\u0262\u0006H\u0000\u0000\u0262\u0093"+
-		"\u0001\u0000\u0000\u0000\u0263\u0266\u0005\'\u0000\u0000\u0264\u0267\u0003"+
-		"\u00aeV\u0000\u0265\u0267\u0003\u0098K\u0000\u0266\u0264\u0001\u0000\u0000"+
-		"\u0000\u0266\u0265\u0001\u0000\u0000\u0000\u0267\u0268\u0001\u0000\u0000"+
-		"\u0000\u0268\u0269\u0005\'\u0000\u0000\u0269\u0095\u0001\u0000\u0000\u0000"+
-		"\u026a\u026b\u0003\u0094I\u0000\u026b\u026c\u0001\u0000\u0000\u0000\u026c"+
-		"\u026d\u0006J\u0000\u0000\u026d\u0097\u0001\u0000\u0000\u0000\u026e\u0271"+
-		"\u0003\u009aL\u0000\u026f\u0271\u0003\u009cM\u0000\u0270\u026e\u0001\u0000"+
-		"\u0000\u0000\u0270\u026f\u0001\u0000\u0000\u0000\u0271\u0099\u0001\u0000"+
-		"\u0000\u0000\u0272\u0273\u0005\\\u0000\u0000\u0273\u0274\u0003\u00b4Y"+
-		"\u0000\u0274\u0275\u0003\u00b4Y\u0000\u0275\u0276\u0003\u00b4Y\u0000\u0276"+
-		"\u009b\u0001\u0000\u0000\u0000\u0277\u0278\u0005\\\u0000\u0000\u0278\u0279"+
-		"\u0005x\u0000\u0000\u0279\u027a\u0003\u00b6Z\u0000\u027a\u027b\u0003\u00b6"+
-		"Z\u0000\u027b\u009d\u0001\u0000\u0000\u0000\u027c\u027d\u0005\\\u0000"+
-		"\u0000\u027d\u027e\u0005u\u0000\u0000\u027e\u027f\u0003\u00b6Z\u0000\u027f"+
-		"\u0280\u0003\u00b6Z\u0000\u0280\u0281\u0003\u00b6Z\u0000\u0281\u0282\u0003"+
-		"\u00b6Z\u0000\u0282\u009f\u0001\u0000\u0000\u0000\u0283\u0284\u0005\\"+
-		"\u0000\u0000\u0284\u0285\u0005U\u0000\u0000\u0285\u0286\u0003\u00b6Z\u0000"+
-		"\u0286\u0287\u0003\u00b6Z\u0000\u0287\u0288\u0003\u00b6Z\u0000\u0288\u0289"+
-		"\u0003\u00b6Z\u0000\u0289\u028a\u0003\u00b6Z\u0000\u028a\u028b\u0003\u00b6"+
-		"Z\u0000\u028b\u028c\u0003\u00b6Z\u0000\u028c\u028d\u0003\u00b6Z\u0000"+
-		"\u028d\u00a1\u0001\u0000\u0000\u0000\u028e\u0292\u0005`\u0000\u0000\u028f"+
-		"\u0291\b\u0007\u0000\u0000\u0290\u028f\u0001\u0000\u0000\u0000\u0291\u0294"+
-		"\u0001\u0000\u0000\u0000\u0292\u0290\u0001\u0000\u0000\u0000\u0292\u0293"+
-		"\u0001\u0000\u0000\u0000\u0293\u0295\u0001\u0000\u0000\u0000\u0294\u0292"+
-		"\u0001\u0000\u0000\u0000\u0295\u0296\u0005`\u0000\u0000\u0296\u0297\u0001"+
-		"\u0000\u0000\u0000\u0297\u0298\u0006P\u0000\u0000\u0298\u00a3\u0001\u0000"+
-		"\u0000\u0000\u0299\u029e\u0005\"\u0000\u0000\u029a\u029d\b\b\u0000\u0000"+
-		"\u029b\u029d\u0003\u00b0W\u0000\u029c\u029a\u0001\u0000\u0000\u0000\u029c"+
-		"\u029b\u0001\u0000\u0000\u0000\u029d\u02a0\u0001\u0000\u0000\u0000\u029e"+
-		"\u029c\u0001\u0000\u0000\u0000\u029e\u029f\u0001\u0000\u0000\u0000\u029f"+
-		"\u02a1\u0001\u0000\u0000\u0000\u02a0\u029e\u0001\u0000\u0000\u0000\u02a1"+
-		"\u02a2\u0005\"\u0000\u0000\u02a2\u02a3\u0001\u0000\u0000\u0000\u02a3\u02a4"+
-		"\u0006Q\u0000\u0000\u02a4\u00a5\u0001\u0000\u0000\u0000\u02a5\u02a7\u0007"+
-		"\t\u0000\u0000\u02a6\u02a5\u0001\u0000\u0000\u0000\u02a7\u02a8\u0001\u0000"+
-		"\u0000\u0000\u02a8\u02a6\u0001\u0000\u0000\u0000\u02a8\u02a9\u0001\u0000"+
-		"\u0000\u0000\u02a9\u02aa\u0001\u0000\u0000\u0000\u02aa\u02ab\u0006R\u0001"+
-		"\u0000\u02ab\u00a7\u0001\u0000\u0000\u0000\u02ac\u02ad\u0005/\u0000\u0000"+
-		"\u02ad\u02ae\u0005*\u0000\u0000\u02ae\u02b2\u0001\u0000\u0000\u0000\u02af"+
-		"\u02b1\t\u0000\u0000\u0000\u02b0\u02af\u0001\u0000\u0000\u0000\u02b1\u02b4"+
-		"\u0001\u0000\u0000\u0000\u02b2\u02b3\u0001\u0000\u0000\u0000\u02b2\u02b0"+
-		"\u0001\u0000\u0000\u0000\u02b3\u02b5\u0001\u0000\u0000\u0000\u02b4\u02b2"+
-		"\u0001\u0000\u0000\u0000\u02b5\u02b6\u0005*\u0000\u0000\u02b6\u02b7\u0005"+
-		"/\u0000\u0000\u02b7\u02b8\u0001\u0000\u0000\u0000\u02b8\u02b9\u0006S\u0001"+
-		"\u0000\u02b9\u00a9\u0001\u0000\u0000\u0000\u02ba\u02bc\u0007\n\u0000\u0000"+
-		"\u02bb\u02ba\u0001\u0000\u0000\u0000\u02bc\u02bd\u0001\u0000\u0000\u0000"+
-		"\u02bd\u02bb\u0001\u0000\u0000\u0000\u02bd\u02be\u0001\u0000\u0000\u0000"+
-		"\u02be\u02bf\u0001\u0000\u0000\u0000\u02bf\u02c0\u0006T\u0001\u0000\u02c0"+
-		"\u00ab\u0001\u0000\u0000\u0000\u02c1\u02c2\u0005/\u0000\u0000\u02c2\u02c3"+
-		"\u0005/\u0000\u0000\u02c3\u02c7\u0001\u0000\u0000\u0000\u02c4\u02c6\b"+
-		"\n\u0000\u0000\u02c5\u02c4\u0001\u0000\u0000\u0000\u02c6\u02c9\u0001\u0000"+
-		"\u0000\u0000\u02c7\u02c5\u0001\u0000\u0000\u0000\u02c7\u02c8\u0001\u0000"+
-		"\u0000\u0000\u02c8\u02ca\u0001\u0000\u0000\u0000\u02c9\u02c7\u0001\u0000"+
-		"\u0000\u0000\u02ca\u02cb\u0006U\u0001\u0000\u02cb\u00ad\u0001\u0000\u0000"+
-		"\u0000\u02cc\u02d1\b\u000b\u0000\u0000\u02cd\u02d1\u0003\u009eN\u0000"+
-		"\u02ce\u02d1\u0003\u00a0O\u0000\u02cf\u02d1\u0003\u00b0W\u0000\u02d0\u02cc"+
-		"\u0001\u0000\u0000\u0000\u02d0\u02cd\u0001\u0000\u0000\u0000\u02d0\u02ce"+
-		"\u0001\u0000\u0000\u0000\u02d0\u02cf\u0001\u0000\u0000\u0000\u02d1\u00af"+
-		"\u0001\u0000\u0000\u0000\u02d2\u02ec\u0005\\\u0000\u0000\u02d3\u02d4\u0005"+
-		"u\u0000\u0000\u02d4\u02d5\u0003\u00b6Z\u0000\u02d5\u02d6\u0003\u00b6Z"+
-		"\u0000\u02d6\u02d7\u0003\u00b6Z\u0000\u02d7\u02d8\u0003\u00b6Z\u0000\u02d8"+
-		"\u02ed\u0001\u0000\u0000\u0000\u02d9\u02da\u0005U\u0000\u0000\u02da\u02db"+
-		"\u0003\u00b6Z\u0000\u02db\u02dc\u0003\u00b6Z\u0000\u02dc\u02dd\u0003\u00b6"+
-		"Z\u0000\u02dd\u02de\u0003\u00b6Z\u0000\u02de\u02df\u0003\u00b6Z\u0000"+
-		"\u02df\u02e0\u0003\u00b6Z\u0000\u02e0\u02e1\u0003\u00b6Z\u0000\u02e1\u02e2"+
-		"\u0003\u00b6Z\u0000\u02e2\u02ed\u0001\u0000\u0000\u0000\u02e3\u02ed\u0007"+
-		"\f\u0000\u0000\u02e4\u02e5\u0003\u00b4Y\u0000\u02e5\u02e6\u0003\u00b4"+
-		"Y\u0000\u02e6\u02e7\u0003\u00b4Y\u0000\u02e7\u02ed\u0001\u0000\u0000\u0000"+
-		"\u02e8\u02e9\u0005x\u0000\u0000\u02e9\u02ea\u0003\u00b6Z\u0000\u02ea\u02eb"+
-		"\u0003\u00b6Z\u0000\u02eb\u02ed\u0001\u0000\u0000\u0000\u02ec\u02d3\u0001"+
-		"\u0000\u0000\u0000\u02ec\u02d9\u0001\u0000\u0000\u0000\u02ec\u02e3\u0001"+
-		"\u0000\u0000\u0000\u02ec\u02e4\u0001\u0000\u0000\u0000\u02ec\u02e8\u0001"+
-		"\u0000\u0000\u0000\u02ed\u00b1\u0001\u0000\u0000\u0000\u02ee\u02f5\u0007"+
-		"\u0001\u0000\u0000\u02ef\u02f1\u0005_\u0000\u0000\u02f0\u02ef\u0001\u0000"+
-		"\u0000\u0000\u02f0\u02f1\u0001\u0000\u0000\u0000\u02f1\u02f2\u0001\u0000"+
-		"\u0000\u0000\u02f2\u02f4\u0007\u0001\u0000\u0000\u02f3\u02f0\u0001\u0000"+
-		"\u0000\u0000\u02f4\u02f7\u0001\u0000\u0000\u0000\u02f5\u02f3\u0001\u0000"+
-		"\u0000\u0000\u02f5\u02f6\u0001\u0000\u0000\u0000\u02f6\u00b3\u0001\u0000"+
-		"\u0000\u0000\u02f7\u02f5\u0001\u0000\u0000\u0000\u02f8\u02f9\u0007\r\u0000"+
-		"\u0000\u02f9\u00b5\u0001\u0000\u0000\u0000\u02fa\u02fb\u0007\u000e\u0000"+
-		"\u0000\u02fb\u00b7\u0001\u0000\u0000\u0000\u02fc\u02fd\u0007\u000f\u0000"+
-		"\u0000\u02fd\u00b9\u0001\u0000\u0000\u0000\u02fe\u0300\u0007\u0010\u0000"+
-		"\u0000\u02ff\u0301\u0007\u0006\u0000\u0000\u0300\u02ff\u0001\u0000\u0000"+
-		"\u0000\u0300\u0301\u0001\u0000\u0000\u0000\u0301\u0302\u0001\u0000\u0000"+
-		"\u0000\u0302\u0303\u0003\u00b2X\u0000\u0303\u00bb\u0001\u0000\u0000\u0000"+
-		"\u0304\u0307\u0003\u00c0_\u0000\u0305\u0307\u0005_\u0000\u0000\u0306\u0304"+
-		"\u0001\u0000\u0000\u0000\u0306\u0305\u0001\u0000\u0000\u0000\u0307\u00bd"+
-		"\u0001\u0000\u0000\u0000\u0308\u0309\u0007\u0011\u0000\u0000\u0309\u00bf"+
-		"\u0001\u0000\u0000\u0000\u030a\u030b\u0007\u0012\u0000\u0000\u030b\u00c1"+
-		"\u0001\u0000\u0000\u0000\u030c\u030e\u0007\t\u0000\u0000\u030d\u030c\u0001"+
-		"\u0000\u0000\u0000\u030e\u030f\u0001\u0000\u0000\u0000\u030f\u030d\u0001"+
-		"\u0000\u0000\u0000\u030f\u0310\u0001\u0000\u0000\u0000\u0310\u0311\u0001"+
-		"\u0000\u0000\u0000\u0311\u0312\u0006`\u0001\u0000\u0312\u00c3\u0001\u0000"+
-		"\u0000\u0000\u0313\u0314\u0005/\u0000\u0000\u0314\u0315\u0005*\u0000\u0000"+
-		"\u0315\u0319\u0001\u0000\u0000\u0000\u0316\u0318\b\n\u0000\u0000\u0317"+
-		"\u0316\u0001\u0000\u0000\u0000\u0318\u031b\u0001\u0000\u0000\u0000\u0319"+
-		"\u031a\u0001\u0000\u0000\u0000\u0319\u0317\u0001\u0000\u0000\u0000\u031a"+
-		"\u031c\u0001\u0000\u0000\u0000\u031b\u0319\u0001\u0000\u0000\u0000\u031c"+
-		"\u031d\u0005*\u0000\u0000\u031d\u031e\u0005/\u0000\u0000\u031e\u031f\u0001"+
-		"\u0000\u0000\u0000\u031f\u0320\u0006a\u0001\u0000\u0320\u00c5\u0001\u0000"+
-		"\u0000\u0000\u0321\u0322\u0005/\u0000\u0000\u0322\u0323\u0005/\u0000\u0000"+
-		"\u0323\u0327\u0001\u0000\u0000\u0000\u0324\u0326\b\n\u0000\u0000\u0325"+
-		"\u0324\u0001\u0000\u0000\u0000\u0326\u0329\u0001\u0000\u0000\u0000\u0327"+
-		"\u0325\u0001\u0000\u0000\u0000\u0327\u0328\u0001\u0000\u0000\u0000\u0328"+
-		"\u032a\u0001\u0000\u0000\u0000\u0329\u0327\u0001\u0000\u0000\u0000\u032a"+
-		"\u032b\u0006b\u0001\u0000\u032b\u00c7\u0001\u0000\u0000\u0000\u032c\u032e"+
-		"\u0007\n\u0000\u0000\u032d\u032c\u0001\u0000\u0000\u0000\u032e\u032f\u0001"+
-		"\u0000\u0000\u0000\u032f\u032d\u0001\u0000\u0000\u0000\u032f\u0330\u0001"+
-		"\u0000\u0000\u0000\u0330\u033f\u0001\u0000\u0000\u0000\u0331\u033f\u0005"+
-		";\u0000\u0000\u0332\u0333\u0005/\u0000\u0000\u0333\u0334\u0005*\u0000"+
-		"\u0000\u0334\u0338\u0001\u0000\u0000\u0000\u0335\u0337\t\u0000\u0000\u0000"+
-		"\u0336\u0335\u0001\u0000\u0000\u0000\u0337\u033a\u0001\u0000\u0000\u0000"+
-		"\u0338\u0339\u0001\u0000\u0000\u0000\u0338\u0336\u0001\u0000\u0000\u0000"+
-		"\u0339\u033b\u0001\u0000\u0000\u0000\u033a\u0338\u0001\u0000\u0000\u0000"+
-		"\u033b\u033c\u0005*\u0000\u0000\u033c\u033f\u0005/\u0000\u0000\u033d\u033f"+
-		"\u0005\u0000\u0000\u0001\u033e\u032d\u0001\u0000\u0000\u0000\u033e\u0331"+
-		"\u0001\u0000\u0000\u0000\u033e\u0332\u0001\u0000\u0000\u0000\u033e\u033d"+
-		"\u0001\u0000\u0000\u0000\u033f\u0340\u0001\u0000\u0000\u0000\u0340\u0341"+
-		"\u0006c\u0002\u0000\u0341\u00c9\u0001\u0000\u0000\u0000\u0342\u0343\u0001"+
-		"\u0000\u0000\u0000\u0343\u0344\u0001\u0000\u0000\u0000\u0344\u0345\u0006"+
-		"d\u0002\u0000\u0345\u0346\u0006d\u0001\u0000\u0346\u00cb\u0001\u0000\u0000"+
-		"\u00003\u0000\u0001\u0177\u0179\u01e2\u01e7\u01ea\u01f1\u01f6\u01fc\u01ff"+
-		"\u0204\u020b\u0210\u0216\u021d\u0220\u0223\u0228\u022a\u0232\u0237\u023b"+
-		"\u0240\u0243\u0248\u024d\u0250\u0254\u025d\u0266\u0270\u0292\u029c\u029e"+
-		"\u02a8\u02b2\u02bd\u02c7\u02d0\u02ec\u02f0\u02f5\u0300\u0306\u030f\u0319"+
-		"\u0327\u032f\u0338\u033e\u0003\u0002\u0001\u0000\u0000\u0001\u0000\u0002"+
-		"\u0000\u0000";
-	public static final ATN _ATN =
-		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
-	static {
-		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
-		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
-			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
-		}
-	}
-}

+ 0 - 0
jplag.frontend.golang/src/main/antlr4/de/jplag/go/grammar/GoLexer.g4 → jplag.frontend.golang/src/main/antlr4/de/jplag/golang/grammar/GoLexer.g4


+ 0 - 0
jplag.frontend.golang/src/main/antlr4/de/jplag/go/grammar/GoParser.g4 → jplag.frontend.golang/src/main/antlr4/de/jplag/golang/grammar/GoParser.g4


+ 104 - 102
jplag.frontend.golang/src/main/java/de/jplag/go/GoListener.java → jplag.frontend.golang/src/main/java/de/jplag/golang/GoListener.java

@@ -1,6 +1,6 @@
-package de.jplag.go;
+package de.jplag.golang;
 
-import static de.jplag.go.GoTokenConstants.*;
+import static de.jplag.golang.GoTokenConstants.*;
 
 import java.util.Arrays;
 import java.util.Stack;
@@ -8,8 +8,8 @@ import java.util.Stack;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.tree.TerminalNode;
 
-import de.jplag.go.grammar.GoParser;
-import de.jplag.go.grammar.GoParserBaseListener;
+import de.jplag.golang.grammar.GoParser;
+import de.jplag.golang.grammar.GoParserBaseListener;
 
 public class GoListener extends GoParserBaseListener {
 
@@ -47,7 +47,7 @@ public class GoListener extends GoParserBaseListener {
 
     private void expectAndLeave(GoBlockContext... contexts) {
         GoBlockContext topContext = blockContexts.pop();
-        assert Arrays.stream(contexts).anyMatch(ctx -> ctx == topContext);
+        assert Arrays.stream(contexts).anyMatch(context -> context == topContext);
     }
 
     /* TOP LEVEL STRUCTURES */
@@ -55,239 +55,241 @@ public class GoListener extends GoParserBaseListener {
     /* STRUCT */
 
     @Override
-    public void enterStructType(GoParser.StructTypeContext ctx) {
-        transformToken(STRUCT_DECLARATION_BEGIN, ctx.getStart());
+    public void enterStructType(GoParser.StructTypeContext context) {
+        transformToken(STRUCT_DECLARATION_BEGIN, context.getStart());
         enterContext(GoBlockContext.STRUCT_BODY);
-        super.enterStructType(ctx);
+        super.enterStructType(context);
     }
 
     @Override
-    public void exitStructType(GoParser.StructTypeContext ctx) {
+    public void exitStructType(GoParser.StructTypeContext context) {
         expectAndLeave(GoBlockContext.STRUCT_BODY);
-        super.exitStructType(ctx);
+        super.exitStructType(context);
     }
 
     @Override
-    public void enterFieldDecl(GoParser.FieldDeclContext ctx) {
-        transformToken(MEMBER_DECLARATION, ctx.getStart(), ctx.getStop());
-        super.enterFieldDecl(ctx);
+    public void enterFieldDecl(GoParser.FieldDeclContext context) {
+        transformToken(MEMBER_DECLARATION, context.getStart(), context.getStop());
+        super.enterFieldDecl(context);
     }
 
     /* FUNCTION */
 
     @Override
-    public void enterFunctionDecl(GoParser.FunctionDeclContext ctx) {
-        transformToken(FUNCTION_DECLARATION, ctx.getStart());
+    public void enterFunctionDecl(GoParser.FunctionDeclContext context) {
+        transformToken(FUNCTION_DECLARATION, context.getStart());
         enterContext(GoBlockContext.FUNCTION_BODY);
-        super.enterFunctionDecl(ctx);
+        super.enterFunctionDecl(context);
     }
 
     @Override
-    public void exitFunctionDecl(GoParser.FunctionDeclContext ctx) {
+    public void exitFunctionDecl(GoParser.FunctionDeclContext context) {
         expectAndLeave(GoBlockContext.FUNCTION_BODY);
-        super.exitFunctionDecl(ctx);
+        super.exitFunctionDecl(context);
     }
 
     @Override
-    public void enterMethodDecl(GoParser.MethodDeclContext ctx) {
-        transformToken(METHOD_DECLARATION, ctx.getStart());
+    public void enterMethodDecl(GoParser.MethodDeclContext context) {
+        transformToken(METHOD_DECLARATION, context.getStart());
         enterContext(GoBlockContext.FUNCTION_BODY);
-        super.enterMethodDecl(ctx);
+        super.enterMethodDecl(context);
     }
 
     @Override
-    public void exitMethodDecl(GoParser.MethodDeclContext ctx) {
+    public void exitMethodDecl(GoParser.MethodDeclContext context) {
         expectAndLeave(GoBlockContext.FUNCTION_BODY);
-        super.exitMethodDecl(ctx);
+        super.exitMethodDecl(context);
     }
 
     @Override
-    public void enterParameterDecl(GoParser.ParameterDeclContext ctx) {
-        transformToken(FUNCTION_PARAMETER, ctx.getStart(), ctx.getStop());
-        super.enterParameterDecl(ctx);
+    public void enterParameterDecl(GoParser.ParameterDeclContext context) {
+        transformToken(FUNCTION_PARAMETER, context.getStart(), context.getStop());
+        super.enterParameterDecl(context);
     }
 
     @Override
-    public void enterBlock(GoParser.BlockContext ctx) {
+    public void enterBlock(GoParser.BlockContext context) {
         int tokenType = blockContexts.peek().getBegin();
-        transformToken(tokenType, ctx.getStart());
-        super.enterBlock(ctx);
+        transformToken(tokenType, context.getStart());
+        super.enterBlock(context);
     }
 
     @Override
-    public void exitBlock(GoParser.BlockContext ctx) {
+    public void exitBlock(GoParser.BlockContext context) {
         int tokenType = blockContexts.peek().getEnd();
-        transformToken(tokenType, ctx.getStop());
-        super.enterBlock(ctx);
+        transformToken(tokenType, context.getStop());
+        super.enterBlock(context);
     }
 
     /* CONTROL FLOW STATEMENTS */
 
     @Override
-    public void enterIfStmt(GoParser.IfStmtContext ctx) {
-        transformToken(IF_STATEMENT, ctx.getStart());
+    public void enterIfStmt(GoParser.IfStmtContext context) {
+        transformToken(IF_STATEMENT, context.getStart());
         enterContext(GoBlockContext.IF_BLOCK);
-        super.enterIfStmt(ctx);
+        super.enterIfStmt(context);
     }
 
     @Override
-    public void exitIfStmt(GoParser.IfStmtContext ctx) {
+    public void exitIfStmt(GoParser.IfStmtContext context) {
         expectAndLeave(GoBlockContext.IF_BLOCK, GoBlockContext.ELSE_BLOCK);
-        super.exitIfStmt(ctx);
+        super.exitIfStmt(context);
     }
 
     @Override
-    public void enterForStmt(GoParser.ForStmtContext ctx) {
-        transformToken(FOR_STATEMENT, ctx.getStart());
+    public void enterForStmt(GoParser.ForStmtContext context) {
+        transformToken(FOR_STATEMENT, context.getStart());
         enterContext(GoBlockContext.FOR_BLOCK);
-        super.enterForStmt(ctx);
+        super.enterForStmt(context);
     }
 
     @Override
-    public void exitForStmt(GoParser.ForStmtContext ctx) {
+    public void exitForStmt(GoParser.ForStmtContext context) {
         expectAndLeave(GoBlockContext.FOR_BLOCK);
-        super.exitForStmt(ctx);
+        super.exitForStmt(context);
     }
 
     @Override
-    public void enterSwitchStmt(GoParser.SwitchStmtContext ctx) {
-        transformToken(SWITCH_STATEMENT, ctx.getStart());
+    public void enterSwitchStmt(GoParser.SwitchStmtContext context) {
+        transformToken(SWITCH_STATEMENT, context.getStart());
         enterContext(GoBlockContext.SWITCH_BLOCK);
-        super.enterSwitchStmt(ctx);
+        super.enterSwitchStmt(context);
     }
 
     @Override
-    public void exitSwitchStmt(GoParser.SwitchStmtContext ctx) {
+    public void exitSwitchStmt(GoParser.SwitchStmtContext context) {
         expectAndLeave(GoBlockContext.SWITCH_BLOCK);
-        super.exitSwitchStmt(ctx);
+        super.exitSwitchStmt(context);
     }
 
     @Override
-    public void enterExprSwitchCase(GoParser.ExprSwitchCaseContext ctx) {
-        transformToken(SWITCH_CASE, ctx.getStart());
+    public void enterExprSwitchCase(GoParser.ExprSwitchCaseContext context) {
+        transformToken(SWITCH_CASE, context.getStart());
         enterContext(GoBlockContext.CASE_BLOCK);
-        super.enterExprSwitchCase(ctx);
+        super.enterExprSwitchCase(context);
     }
 
     @Override
-    public void exitExprSwitchCase(GoParser.ExprSwitchCaseContext ctx) {
+    public void exitExprSwitchCase(GoParser.ExprSwitchCaseContext context) {
         expectAndLeave(GoBlockContext.CASE_BLOCK);
-        super.exitExprSwitchCase(ctx);
+        super.exitExprSwitchCase(context);
     }
 
     /* STATEMENTS */
 
     @Override
-    public void enterFunctionLit(GoParser.FunctionLitContext ctx) {
-        transformToken(FUNCTION_LITERAL, ctx.getStart());
+    public void enterFunctionLit(GoParser.FunctionLitContext context) {
+        transformToken(FUNCTION_LITERAL, context.getStart());
         enterContext(GoBlockContext.FUNCTION_BODY);
-        super.enterFunctionLit(ctx);
+        super.enterFunctionLit(context);
     }
 
     @Override
-    public void exitFunctionLit(GoParser.FunctionLitContext ctx) {
+    public void exitFunctionLit(GoParser.FunctionLitContext context) {
         expectAndLeave(GoBlockContext.FUNCTION_BODY);
-        super.exitFunctionLit(ctx);
+        super.exitFunctionLit(context);
     }
 
     @Override
-    public void enterAssignment(GoParser.AssignmentContext ctx) {
-        transformToken(ASSIGNMENT, ctx.getStart(), ctx.getStop());
-        super.enterAssignment(ctx);
+    public void enterAssignment(GoParser.AssignmentContext context) {
+        transformToken(ASSIGNMENT, context.getStart(), context.getStop());
+        super.enterAssignment(context);
     }
 
     @Override
-    public void enterArguments(GoParser.ArgumentsContext ctx) {
-        transformToken(INVOCATION, ctx.getStart(), ctx.getStop());
+    public void enterArguments(GoParser.ArgumentsContext context) {
+        transformToken(INVOCATION, context.getStart(), context.getStop());
 
         // Arguments consist of ExpressionLists, which consist of Expressions
         // Get all Expressions of all ExpressionLists in this ArgumentsContext
-        ctx.children.stream().filter(child -> child instanceof GoParser.ExpressionListContext).map(child -> (GoParser.ExpressionListContext) child)
+        context.children.stream().filter(child -> child instanceof GoParser.ExpressionListContext)
+                .map(child -> (GoParser.ExpressionListContext) child)
                 .flatMap(child -> child.children.stream()).filter(child -> child instanceof GoParser.ExpressionContext)
-                .map(child -> (GoParser.ExpressionContext) child).forEachOrdered(arg -> transformToken(ARGUMENT, arg.getStart(), arg.getStop()));
-        super.enterArguments(ctx);
+                .map(child -> (GoParser.ExpressionContext) child)
+                .forEachOrdered(arg -> transformToken(ARGUMENT, arg.getStart(), arg.getStop()));
+        super.enterArguments(context);
     }
 
     @Override
-    public void enterStatement(GoParser.StatementContext ctx) {
+    public void enterStatement(GoParser.StatementContext context) {
         enterContext(GoBlockContext.STATEMENT_BLOCK);
-        super.enterStatement(ctx);
+        super.enterStatement(context);
     }
 
     @Override
-    public void exitStatement(GoParser.StatementContext ctx) {
+    public void exitStatement(GoParser.StatementContext context) {
         expectAndLeave(GoBlockContext.STATEMENT_BLOCK);
-        super.exitStatement(ctx);
+        super.exitStatement(context);
     }
 
     /* OBJECT CREATION */
 
     @Override
-    public void enterCompositeLit(GoParser.CompositeLitContext ctx) {
-        transformToken(STRUCT_CONSTRUCTOR, ctx.getStart());
-        super.enterCompositeLit(ctx);
+    public void enterCompositeLit(GoParser.CompositeLitContext context) {
+        transformToken(STRUCT_CONSTRUCTOR, context.getStart());
+        super.enterCompositeLit(context);
     }
 
     @Override
-    public void enterKeyedElement(GoParser.KeyedElementContext ctx) {
-        transformToken(STRUCT_VALUE, ctx.getStart(), ctx.getStop());
-        super.enterKeyedElement(ctx);
+    public void enterKeyedElement(GoParser.KeyedElementContext context) {
+        transformToken(STRUCT_VALUE, context.getStart(), context.getStop());
+        super.enterKeyedElement(context);
     }
 
     @Override
-    public void enterArrayType(GoParser.ArrayTypeContext ctx) {
-        transformToken(ARRAY_CONSTRUCTOR, ctx.getStart(), ctx.getStop());
-        super.enterArrayType(ctx);
+    public void enterArrayType(GoParser.ArrayTypeContext context) {
+        transformToken(ARRAY_CONSTRUCTOR, context.getStart(), context.getStop());
+        super.enterArrayType(context);
     }
 
     @Override
-    public void enterSliceType(GoParser.SliceTypeContext ctx) {
-        transformToken(SLICE_CONSTRUCTOR, ctx.getStart(), ctx.getStop());
-        super.enterSliceType(ctx);
+    public void enterSliceType(GoParser.SliceTypeContext context) {
+        transformToken(SLICE_CONSTRUCTOR, context.getStart(), context.getStop());
+        super.enterSliceType(context);
     }
 
     @Override
-    public void enterMapType(GoParser.MapTypeContext ctx) {
-        transformToken(MAP_CONSTRUCTOR, ctx.getStart(), ctx.getStop());
-        super.enterMapType(ctx);
+    public void enterMapType(GoParser.MapTypeContext context) {
+        transformToken(MAP_CONSTRUCTOR, context.getStart(), context.getStop());
+        super.enterMapType(context);
     }
 
     /* CONTROL FLOW KEYWORDS */
 
     @Override
-    public void enterReturnStmt(GoParser.ReturnStmtContext ctx) {
-        transformToken(RETURN, ctx.getStart(), ctx.getStop());
-        super.enterReturnStmt(ctx);
+    public void enterReturnStmt(GoParser.ReturnStmtContext context) {
+        transformToken(RETURN, context.getStart(), context.getStop());
+        super.enterReturnStmt(context);
     }
 
     @Override
-    public void enterBreakStmt(GoParser.BreakStmtContext ctx) {
-        transformToken(BREAK, ctx.getStart(), ctx.getStop());
-        super.enterBreakStmt(ctx);
+    public void enterBreakStmt(GoParser.BreakStmtContext context) {
+        transformToken(BREAK, context.getStart(), context.getStop());
+        super.enterBreakStmt(context);
     }
 
     @Override
-    public void enterContinueStmt(GoParser.ContinueStmtContext ctx) {
-        transformToken(CONTINUE, ctx.getStart(), ctx.getStop());
-        super.enterContinueStmt(ctx);
+    public void enterContinueStmt(GoParser.ContinueStmtContext context) {
+        transformToken(CONTINUE, context.getStart(), context.getStop());
+        super.enterContinueStmt(context);
     }
 
     @Override
-    public void enterGotoStmt(GoParser.GotoStmtContext ctx) {
-        transformToken(GOTO, ctx.getStart(), ctx.getStop());
-        super.enterGotoStmt(ctx);
+    public void enterGotoStmt(GoParser.GotoStmtContext context) {
+        transformToken(GOTO, context.getStart(), context.getStop());
+        super.enterGotoStmt(context);
     }
 
     @Override
-    public void enterGoStmt(GoParser.GoStmtContext ctx) {
-        transformToken(GO, ctx.getStart(), ctx.getStop());
-        super.enterGoStmt(ctx);
+    public void enterGoStmt(GoParser.GoStmtContext context) {
+        transformToken(GO, context.getStart(), context.getStop());
+        super.enterGoStmt(context);
     }
 
     @Override
-    public void enterDeferStmt(GoParser.DeferStmtContext ctx) {
-        transformToken(DEFER, ctx.getStart(), ctx.getStop());
-        super.enterDeferStmt(ctx);
+    public void enterDeferStmt(GoParser.DeferStmtContext context) {
+        transformToken(DEFER, context.getStart(), context.getStop());
+        super.enterDeferStmt(context);
     }
 
     @Override

+ 3 - 3
jplag.frontend.golang/src/main/java/de/jplag/go/GoParserAdapter.java → jplag.frontend.golang/src/main/java/de/jplag/golang/GoParserAdapter.java

@@ -1,4 +1,4 @@
-package de.jplag.go;
+package de.jplag.golang;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -13,8 +13,8 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker;
 import de.jplag.AbstractParser;
 import de.jplag.ErrorConsumer;
 import de.jplag.TokenList;
-import de.jplag.go.grammar.GoLexer;
-import de.jplag.go.grammar.GoParser;
+import de.jplag.golang.grammar.GoLexer;
+import de.jplag.golang.grammar.GoParser;
 
 public class GoParserAdapter extends AbstractParser {
     private String currentFile;

+ 3 - 3
jplag.frontend.golang/src/main/java/de/jplag/go/GoToken.java → jplag.frontend.golang/src/main/java/de/jplag/golang/GoToken.java

@@ -1,6 +1,6 @@
-package de.jplag.go;
+package de.jplag.golang;
 
-import static de.jplag.go.GoTokenConstants.*;
+import static de.jplag.golang.GoTokenConstants.*;
 
 import de.jplag.Token;
 
@@ -14,7 +14,7 @@ public class GoToken extends Token {
     protected String type2string() {
         return switch (type) {
             case FILE_END -> "<EOF>";
-            case SEPARATOR_TOKEN -> "-----";
+            case SEPARATOR_TOKEN -> "---------";
 
             case STRUCT_DECLARATION_BEGIN -> "STRUCT";
             case STRUCT_BODY_BEGIN -> "STRUCT{";

+ 1 - 1
jplag.frontend.golang/src/main/java/de/jplag/go/GoTokenConstants.java → jplag.frontend.golang/src/main/java/de/jplag/golang/GoTokenConstants.java

@@ -1,4 +1,4 @@
-package de.jplag.go;
+package de.jplag.golang;
 
 import de.jplag.TokenConstants;
 

+ 2 - 2
jplag.frontend.golang/src/main/java/de/jplag/go/Language.java → jplag.frontend.golang/src/main/java/de/jplag/golang/Language.java

@@ -1,4 +1,4 @@
-package de.jplag.go;
+package de.jplag.golang;
 
 import java.io.File;
 
@@ -58,7 +58,7 @@ public class Language implements de.jplag.Language {
 
     @Override
     public boolean usesIndex() {
-        return true;
+        return false;
     }
 
     @Override

+ 1 - 1
jplag.frontend.golang/src/main/java/de/jplag/go/grammar/GoParserBase.java → jplag.frontend.golang/src/main/java/de/jplag/golang/grammar/GoParserBase.java

@@ -1,4 +1,4 @@
-package de.jplag.go.grammar;
+package de.jplag.golang.grammar;
 
 import org.antlr.v4.runtime.BufferedTokenStream;
 import org.antlr.v4.runtime.Parser;

+ 1 - 1
jplag/src/main/java/de/jplag/options/LanguageOption.java

@@ -14,7 +14,7 @@ public enum LanguageOption {
     C_CPP("cpp", "de.jplag.cpp.Language"),
     C_SHARP("csharp", "de.jplag.csharp.Language"),
     R_LANG("rlang", "de.jplag.rlang.Language"),
-    GO("go", "de.jplag.go.Language"),
+    GO_LANG("golang", "de.jplag.golang.Language"),
     CHAR("char", "de.jplag.chars.Language"),
     TEXT("text", "de.jplag.text.Language"),
     SCHEME("scheme", "de.jplag.scheme.Language");

+ 1 - 1
jplag/src/test/java/de/jplag/special/TokenPrinterTest.java

@@ -55,7 +55,7 @@ public class TokenPrinterTest extends TestBase {
     @Disabled
     @Test
     public void printGoFiles() {
-        printSubmissions(options -> options.setLanguageOption(LanguageOption.GO));
+        printSubmissions(options -> options.setLanguageOption(LanguageOption.GO_LANG));
     }
 
     private void printSubmissions(Consumer<JPlagOptions> optionsCustomization) {