Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# Generated from \Python3.g4 by ANTLR 4.9 

2from antlr4 import * 

3from io import StringIO 

4from typing.io import TextIO 

5import sys 

6 

7 

8from antlr4.Token import CommonToken 

9import re 

10import importlib 

11 

12# Allow languages to extend the lexer and parser, by loading the parser dynamically 

13module_path = __name__[:-5] 

14language_name = __name__.split('.')[-1] 

15language_name = language_name[:-5] # Remove Lexer from name 

16LanguageParser = getattr(importlib.import_module( 

17 '{}Parser'.format(module_path)), '{}Parser'.format(language_name)) 

18 

19 

20def serializedATN(): 

21 with StringIO() as buf: 

22 buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2c") 

23 buf.write("\u0373\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") 

24 buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") 

25 buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") 

26 buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") 

27 buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") 

28 buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") 

29 buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") 

30 buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") 

31 buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") 

32 buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") 

33 buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") 

34 buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") 

35 buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") 

36 buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") 

37 buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") 

38 buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") 

39 buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\3\2\3\2\5\2\u00fe\n\2\3\3") 

40 buf.write("\3\3\3\3\5\3\u0103\n\3\3\4\3\4\3\4\3\4\5\4\u0109\n\4\3") 

41 buf.write("\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7") 

42 buf.write("\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3") 

43 buf.write("\t\3\t\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13") 

44 buf.write("\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3") 

45 buf.write("\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20") 

46 buf.write("\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\22") 

47 buf.write("\3\22\3\22\3\22\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\25") 

48 buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26") 

49 buf.write("\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30") 

50 buf.write("\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\32") 

51 buf.write("\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\3\35\3\35") 

52 buf.write("\3\35\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37") 

53 buf.write("\3\37\3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3\"\3\"\3\"") 

54 buf.write("\3\"\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3$\3$\3%\3%\3") 

55 buf.write("%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3") 

56 buf.write("(\3(\3(\5(\u01cc\n(\3(\3(\5(\u01d0\n(\3(\5(\u01d3\n(\5") 

57 buf.write("(\u01d5\n(\3(\3(\3)\3)\7)\u01db\n)\f)\16)\u01de\13)\3") 

58 buf.write("*\3*\3*\3*\3*\5*\u01e5\n*\3*\3*\5*\u01e9\n*\3+\3+\3+\3") 

59 buf.write("+\3+\5+\u01f0\n+\3+\3+\5+\u01f4\n+\3,\3,\7,\u01f8\n,\f") 

60 buf.write(",\16,\u01fb\13,\3,\6,\u01fe\n,\r,\16,\u01ff\5,\u0202\n") 

61 buf.write(",\3-\3-\3-\6-\u0207\n-\r-\16-\u0208\3.\3.\3.\6.\u020e") 

62 buf.write("\n.\r.\16.\u020f\3/\3/\3/\6/\u0215\n/\r/\16/\u0216\3\60") 

63 buf.write("\3\60\5\60\u021b\n\60\3\61\3\61\5\61\u021f\n\61\3\61\3") 

64 buf.write("\61\3\62\3\62\3\63\3\63\3\63\3\63\3\64\3\64\3\65\3\65") 

65 buf.write("\3\65\3\66\3\66\3\66\3\67\3\67\38\38\39\39\3:\3:\3:\3") 

66 buf.write(";\3;\3<\3<\3<\3=\3=\3=\3>\3>\3?\3?\3@\3@\3A\3A\3A\3B\3") 

67 buf.write("B\3B\3C\3C\3D\3D\3E\3E\3F\3F\3G\3G\3G\3H\3H\3I\3I\3I\3") 

68 buf.write("J\3J\3J\3K\3K\3L\3L\3M\3M\3M\3N\3N\3N\3O\3O\3O\3P\3P\3") 

69 buf.write("P\3Q\3Q\3Q\3R\3R\3S\3S\3S\3T\3T\3T\3U\3U\3U\3V\3V\3V\3") 

70 buf.write("W\3W\3W\3X\3X\3X\3Y\3Y\3Y\3Z\3Z\3Z\3[\3[\3[\3\\\3\\\3") 

71 buf.write("\\\3]\3]\3]\3]\3^\3^\3^\3^\3_\3_\3_\3_\3`\3`\3`\3`\3a") 

72 buf.write("\3a\3a\5a\u02a7\na\3a\3a\3b\3b\3c\3c\3c\7c\u02b0\nc\f") 

73 buf.write("c\16c\u02b3\13c\3c\3c\3c\3c\7c\u02b9\nc\fc\16c\u02bc\13") 

74 buf.write("c\3c\5c\u02bf\nc\3d\3d\3d\3d\3d\7d\u02c6\nd\fd\16d\u02c9") 

75 buf.write("\13d\3d\3d\3d\3d\3d\3d\3d\3d\7d\u02d3\nd\fd\16d\u02d6") 

76 buf.write("\13d\3d\3d\3d\5d\u02db\nd\3e\3e\5e\u02df\ne\3f\3f\3g\3") 

77 buf.write("g\3g\3g\5g\u02e7\ng\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\5") 

78 buf.write("m\u02f4\nm\3m\3m\3m\3m\5m\u02fa\nm\3n\3n\5n\u02fe\nn\3") 

79 buf.write("n\3n\3o\6o\u0303\no\ro\16o\u0304\3p\3p\6p\u0309\np\rp") 

80 buf.write("\16p\u030a\3q\3q\5q\u030f\nq\3q\6q\u0312\nq\rq\16q\u0313") 

81 buf.write("\3r\3r\3r\7r\u0319\nr\fr\16r\u031c\13r\3r\3r\3r\3r\7r") 

82 buf.write("\u0322\nr\fr\16r\u0325\13r\3r\5r\u0328\nr\3s\3s\3s\3s") 

83 buf.write("\3s\7s\u032f\ns\fs\16s\u0332\13s\3s\3s\3s\3s\3s\3s\3s") 

84 buf.write("\3s\7s\u033c\ns\fs\16s\u033f\13s\3s\3s\3s\5s\u0344\ns") 

85 buf.write("\3t\3t\5t\u0348\nt\3u\5u\u034b\nu\3v\5v\u034e\nv\3w\5") 

86 buf.write("w\u0351\nw\3x\3x\3x\3y\6y\u0357\ny\ry\16y\u0358\3z\3z") 

87 buf.write("\7z\u035d\nz\fz\16z\u0360\13z\3{\3{\5{\u0364\n{\3{\5{") 

88 buf.write("\u0367\n{\3{\3{\5{\u036b\n{\3|\5|\u036e\n|\3}\3}\5}\u0372") 

89 buf.write("\n}\6\u02c7\u02d4\u0330\u033d\2~\3\3\5\4\7\5\t\6\13\7") 

90 buf.write("\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21") 

91 buf.write("!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67") 

92 buf.write("\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61") 

93 buf.write("a\62c\63e\64g\65i\66k\67m8o9q:s;u<w=y>{?}@\177A\u0081") 

94 buf.write("B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091") 

95 buf.write("J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1") 

96 buf.write("R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1") 

97 buf.write("Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1") 

98 buf.write("b\u00c3c\u00c5\2\u00c7\2\u00c9\2\u00cb\2\u00cd\2\u00cf") 

99 buf.write("\2\u00d1\2\u00d3\2\u00d5\2\u00d7\2\u00d9\2\u00db\2\u00dd") 

100 buf.write("\2\u00df\2\u00e1\2\u00e3\2\u00e5\2\u00e7\2\u00e9\2\u00eb") 

101 buf.write("\2\u00ed\2\u00ef\2\u00f1\2\u00f3\2\u00f5\2\u00f7\2\u00f9") 

102 buf.write("\2\3\2\33\b\2HHTTWWhhttww\4\2HHhh\4\2TTtt\4\2DDdd\4\2") 

103 buf.write("QQqq\4\2ZZzz\4\2LLll\6\2\f\f\16\17))^^\6\2\f\f\16\17$") 

104 buf.write("$^^\3\2^^\3\2\63;\3\2\62;\3\2\629\5\2\62;CHch\3\2\62\63") 

105 buf.write("\4\2GGgg\4\2--//\7\2\2\13\r\16\20(*]_\u0081\7\2\2\13\r") 

106 buf.write("\16\20#%]_\u0081\4\2\2]_\u0081\3\2\2\u0081\4\2\13\13\"") 

107 buf.write("\"\4\2\f\f\16\17\u0129\2C\\aac|\u00ac\u00ac\u00b7\u00b7") 

108 buf.write("\u00bc\u00bc\u00c2\u00d8\u00da\u00f8\u00fa\u0243\u0252") 

109 buf.write("\u02c3\u02c8\u02d3\u02e2\u02e6\u02f0\u02f0\u037c\u037c") 

110 buf.write("\u0388\u0388\u038a\u038c\u038e\u038e\u0390\u03a3\u03a5") 

111 buf.write("\u03d0\u03d2\u03f7\u03f9\u0483\u048c\u04d0\u04d2\u04fb") 

112 buf.write("\u0502\u0511\u0533\u0558\u055b\u055b\u0563\u0589\u05d2") 

113 buf.write("\u05ec\u05f2\u05f4\u0623\u063c\u0642\u064c\u0670\u0671") 

114 buf.write("\u0673\u06d5\u06d7\u06d7\u06e7\u06e8\u06f0\u06f1\u06fc") 

115 buf.write("\u06fe\u0701\u0701\u0712\u0712\u0714\u0731\u074f\u076f") 

116 buf.write("\u0782\u07a7\u07b3\u07b3\u0906\u093b\u093f\u093f\u0952") 

117 buf.write("\u0952\u095a\u0963\u097f\u097f\u0987\u098e\u0991\u0992") 

118 buf.write("\u0995\u09aa\u09ac\u09b2\u09b4\u09b4\u09b8\u09bb\u09bf") 

119 buf.write("\u09bf\u09d0\u09d0\u09de\u09df\u09e1\u09e3\u09f2\u09f3") 

120 buf.write("\u0a07\u0a0c\u0a11\u0a12\u0a15\u0a2a\u0a2c\u0a32\u0a34") 

121 buf.write("\u0a35\u0a37\u0a38\u0a3a\u0a3b\u0a5b\u0a5e\u0a60\u0a60") 

122 buf.write("\u0a74\u0a76\u0a87\u0a8f\u0a91\u0a93\u0a95\u0aaa\u0aac") 

123 buf.write("\u0ab2\u0ab4\u0ab5\u0ab7\u0abb\u0abf\u0abf\u0ad2\u0ad2") 

124 buf.write("\u0ae2\u0ae3\u0b07\u0b0e\u0b11\u0b12\u0b15\u0b2a\u0b2c") 

125 buf.write("\u0b32\u0b34\u0b35\u0b37\u0b3b\u0b3f\u0b3f\u0b5e\u0b5f") 

126 buf.write("\u0b61\u0b63\u0b73\u0b73\u0b85\u0b85\u0b87\u0b8c\u0b90") 

127 buf.write("\u0b92\u0b94\u0b97\u0b9b\u0b9c\u0b9e\u0b9e\u0ba0\u0ba1") 

128 buf.write("\u0ba5\u0ba6\u0baa\u0bac\u0bb0\u0bbb\u0c07\u0c0e\u0c10") 

129 buf.write("\u0c12\u0c14\u0c2a\u0c2c\u0c35\u0c37\u0c3b\u0c62\u0c63") 

130 buf.write("\u0c87\u0c8e\u0c90\u0c92\u0c94\u0caa\u0cac\u0cb5\u0cb7") 

131 buf.write("\u0cbb\u0cbf\u0cbf\u0ce0\u0ce0\u0ce2\u0ce3\u0d07\u0d0e") 

132 buf.write("\u0d10\u0d12\u0d14\u0d2a\u0d2c\u0d3b\u0d62\u0d63\u0d87") 

133 buf.write("\u0d98\u0d9c\u0db3\u0db5\u0dbd\u0dbf\u0dbf\u0dc2\u0dc8") 

134 buf.write("\u0e03\u0e32\u0e34\u0e35\u0e42\u0e48\u0e83\u0e84\u0e86") 

135 buf.write("\u0e86\u0e89\u0e8a\u0e8c\u0e8c\u0e8f\u0e8f\u0e96\u0e99") 

136 buf.write("\u0e9b\u0ea1\u0ea3\u0ea5\u0ea7\u0ea7\u0ea9\u0ea9\u0eac") 

137 buf.write("\u0ead\u0eaf\u0eb2\u0eb4\u0eb5\u0ebf\u0ebf\u0ec2\u0ec6") 

138 buf.write("\u0ec8\u0ec8\u0ede\u0edf\u0f02\u0f02\u0f42\u0f49\u0f4b") 

139 buf.write("\u0f6c\u0f8a\u0f8d\u1002\u1023\u1025\u1029\u102b\u102c") 

140 buf.write("\u1052\u1057\u10a2\u10c7\u10d2\u10fc\u10fe\u10fe\u1102") 

141 buf.write("\u115b\u1161\u11a4\u11aa\u11fb\u1202\u124a\u124c\u124f") 

142 buf.write("\u1252\u1258\u125a\u125a\u125c\u125f\u1262\u128a\u128c") 

143 buf.write("\u128f\u1292\u12b2\u12b4\u12b7\u12ba\u12c0\u12c2\u12c2") 

144 buf.write("\u12c4\u12c7\u12ca\u12d8\u12da\u1312\u1314\u1317\u131a") 

145 buf.write("\u135c\u1382\u1391\u13a2\u13f6\u1403\u166e\u1671\u1678") 

146 buf.write("\u1683\u169c\u16a2\u16ec\u16f0\u16f2\u1702\u170e\u1710") 

147 buf.write("\u1713\u1722\u1733\u1742\u1753\u1762\u176e\u1770\u1772") 

148 buf.write("\u1782\u17b5\u17d9\u17d9\u17de\u17de\u1822\u1879\u1882") 

149 buf.write("\u18aa\u1902\u191e\u1952\u196f\u1972\u1976\u1982\u19ab") 

150 buf.write("\u19c3\u19c9\u1a02\u1a18\u1d02\u1dc1\u1e02\u1e9d\u1ea2") 

151 buf.write("\u1efb\u1f02\u1f17\u1f1a\u1f1f\u1f22\u1f47\u1f4a\u1f4f") 

152 buf.write("\u1f52\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f5f\u1f61") 

153 buf.write("\u1f7f\u1f82\u1fb6\u1fb8\u1fbe\u1fc0\u1fc0\u1fc4\u1fc6") 

154 buf.write("\u1fc8\u1fce\u1fd2\u1fd5\u1fd8\u1fdd\u1fe2\u1fee\u1ff4") 

155 buf.write("\u1ff6\u1ff8\u1ffe\u2073\u2073\u2081\u2081\u2092\u2096") 

156 buf.write("\u2104\u2104\u2109\u2109\u210c\u2115\u2117\u2117\u211a") 

157 buf.write("\u211f\u2126\u2126\u2128\u2128\u212a\u212a\u212c\u2133") 

158 buf.write("\u2135\u213b\u213e\u2141\u2147\u214b\u2162\u2185\u2c02") 

159 buf.write("\u2c30\u2c32\u2c60\u2c82\u2ce6\u2d02\u2d27\u2d32\u2d67") 

160 buf.write("\u2d71\u2d71\u2d82\u2d98\u2da2\u2da8\u2daa\u2db0\u2db2") 

161 buf.write("\u2db8\u2dba\u2dc0\u2dc2\u2dc8\u2dca\u2dd0\u2dd2\u2dd8") 

162 buf.write("\u2dda\u2de0\u3007\u3009\u3023\u302b\u3033\u3037\u303a") 

163 buf.write("\u303e\u3043\u3098\u309d\u30a1\u30a3\u30fc\u30fe\u3101") 

164 buf.write("\u3107\u312e\u3133\u3190\u31a2\u31b9\u31f2\u3201\u3402") 

165 buf.write("\u4db7\u4e02\u9fbd\ua002\ua48e\ua802\ua803\ua805\ua807") 

166 buf.write("\ua809\ua80c\ua80e\ua824\uac02\ud7a5\uf902\ufa2f\ufa32") 

167 buf.write("\ufa6c\ufa72\ufadb\ufb02\ufb08\ufb15\ufb19\ufb1f\ufb1f") 

168 buf.write("\ufb21\ufb2a\ufb2c\ufb38\ufb3a\ufb3e\ufb40\ufb40\ufb42") 

169 buf.write("\ufb43\ufb45\ufb46\ufb48\ufbb3\ufbd5\ufd3f\ufd52\ufd91") 

170 buf.write("\ufd94\ufdc9\ufdf2\ufdfd\ufe72\ufe76\ufe78\ufefe\uff23") 

171 buf.write("\uff3c\uff43\uff5c\uff68\uffc0\uffc4\uffc9\uffcc\uffd1") 

172 buf.write("\uffd4\uffd9\uffdc\uffde\u0096\2\62;\u0302\u0371\u0485") 

173 buf.write("\u0488\u0593\u05bb\u05bd\u05bf\u05c1\u05c1\u05c3\u05c4") 

174 buf.write("\u05c6\u05c7\u05c9\u05c9\u0612\u0617\u064d\u0660\u0662") 

175 buf.write("\u066b\u0672\u0672\u06d8\u06de\u06e1\u06e6\u06e9\u06ea") 

176 buf.write("\u06ec\u06ef\u06f2\u06fb\u0713\u0713\u0732\u074c\u07a8") 

177 buf.write("\u07b2\u0903\u0905\u093e\u093e\u0940\u094f\u0953\u0956") 

178 buf.write("\u0964\u0965\u0968\u0971\u0983\u0985\u09be\u09be\u09c0") 

179 buf.write("\u09c6\u09c9\u09ca\u09cd\u09cf\u09d9\u09d9\u09e4\u09e5") 

180 buf.write("\u09e8\u09f1\u0a03\u0a05\u0a3e\u0a3e\u0a40\u0a44\u0a49") 

181 buf.write("\u0a4a\u0a4d\u0a4f\u0a68\u0a73\u0a83\u0a85\u0abe\u0abe") 

182 buf.write("\u0ac0\u0ac7\u0ac9\u0acb\u0acd\u0acf\u0ae4\u0ae5\u0ae8") 

183 buf.write("\u0af1\u0b03\u0b05\u0b3e\u0b3e\u0b40\u0b45\u0b49\u0b4a") 

184 buf.write("\u0b4d\u0b4f\u0b58\u0b59\u0b68\u0b71\u0b84\u0b84\u0bc0") 

185 buf.write("\u0bc4\u0bc8\u0bca\u0bcc\u0bcf\u0bd9\u0bd9\u0be8\u0bf1") 

186 buf.write("\u0c03\u0c05\u0c40\u0c46\u0c48\u0c4a\u0c4c\u0c4f\u0c57") 

187 buf.write("\u0c58\u0c68\u0c71\u0c84\u0c85\u0cbe\u0cbe\u0cc0\u0cc6") 

188 buf.write("\u0cc8\u0cca\u0ccc\u0ccf\u0cd7\u0cd8\u0ce8\u0cf1\u0d04") 

189 buf.write("\u0d05\u0d40\u0d45\u0d48\u0d4a\u0d4c\u0d4f\u0d59\u0d59") 

190 buf.write("\u0d68\u0d71\u0d84\u0d85\u0dcc\u0dcc\u0dd1\u0dd6\u0dd8") 

191 buf.write("\u0dd8\u0dda\u0de1\u0df4\u0df5\u0e33\u0e33\u0e36\u0e3c") 

192 buf.write("\u0e49\u0e50\u0e52\u0e5b\u0eb3\u0eb3\u0eb6\u0ebb\u0ebd") 

193 buf.write("\u0ebe\u0eca\u0ecf\u0ed2\u0edb\u0f1a\u0f1b\u0f22\u0f2b") 

194 buf.write("\u0f37\u0f37\u0f39\u0f39\u0f3b\u0f3b\u0f40\u0f41\u0f73") 

195 buf.write("\u0f86\u0f88\u0f89\u0f92\u0f99\u0f9b\u0fbe\u0fc8\u0fc8") 

196 buf.write("\u102e\u1034\u1038\u103b\u1042\u104b\u1058\u105b\u1361") 

197 buf.write("\u1361\u136b\u1373\u1714\u1716\u1734\u1736\u1754\u1755") 

198 buf.write("\u1774\u1775\u17b8\u17d5\u17df\u17df\u17e2\u17eb\u180d") 

199 buf.write("\u180f\u1812\u181b\u18ab\u18ab\u1922\u192d\u1932\u193d") 

200 buf.write("\u1948\u1951\u19b2\u19c2\u19ca\u19cb\u19d2\u19db\u1a19") 

201 buf.write("\u1a1d\u1dc2\u1dc5\u2041\u2042\u2056\u2056\u20d2\u20de") 

202 buf.write("\u20e3\u20e3\u20e7\u20ed\u302c\u3031\u309b\u309c\ua804") 

203 buf.write("\ua804\ua808\ua808\ua80d\ua80d\ua825\ua829\ufb20\ufb20") 

204 buf.write("\ufe02\ufe11\ufe22\ufe25\ufe35\ufe36\ufe4f\ufe51\uff12") 

205 buf.write("\uff1b\uff41\uff41\2\u0393\2\3\3\2\2\2\2\5\3\2\2\2\2\7") 

206 buf.write("\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2") 

207 buf.write("\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2") 

208 buf.write("\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2") 

209 buf.write("\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2") 

210 buf.write("\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63") 

211 buf.write("\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2") 

212 buf.write("\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2") 

213 buf.write("\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3") 

214 buf.write("\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y") 

215 buf.write("\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2") 

216 buf.write("c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2") 

217 buf.write("\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2") 

218 buf.write("\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3") 

219 buf.write("\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2") 

220 buf.write("\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") 

221 buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2") 

222 buf.write("\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b") 

223 buf.write("\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2") 

224 buf.write("\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9") 

225 buf.write("\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2") 

226 buf.write("\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7") 

227 buf.write("\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2") 

228 buf.write("\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\3\u00fd") 

229 buf.write("\3\2\2\2\5\u0102\3\2\2\2\7\u0108\3\2\2\2\t\u010a\3\2\2") 

230 buf.write("\2\13\u010e\3\2\2\2\r\u0115\3\2\2\2\17\u011b\3\2\2\2\21") 

231 buf.write("\u0120\3\2\2\2\23\u0127\3\2\2\2\25\u012a\3\2\2\2\27\u0131") 

232 buf.write("\3\2\2\2\31\u013a\3\2\2\2\33\u0141\3\2\2\2\35\u0144\3") 

233 buf.write("\2\2\2\37\u0149\3\2\2\2!\u014e\3\2\2\2#\u0154\3\2\2\2") 

234 buf.write("%\u0158\3\2\2\2\'\u015b\3\2\2\2)\u015f\3\2\2\2+\u0167") 

235 buf.write("\3\2\2\2-\u016c\3\2\2\2/\u0173\3\2\2\2\61\u017a\3\2\2") 

236 buf.write("\2\63\u017d\3\2\2\2\65\u0181\3\2\2\2\67\u0185\3\2\2\2") 

237 buf.write("9\u0188\3\2\2\2;\u018d\3\2\2\2=\u0192\3\2\2\2?\u0198\3") 

238 buf.write("\2\2\2A\u019e\3\2\2\2C\u01a4\3\2\2\2E\u01a8\3\2\2\2G\u01ad") 

239 buf.write("\3\2\2\2I\u01b6\3\2\2\2K\u01bc\3\2\2\2M\u01c2\3\2\2\2") 

240 buf.write("O\u01d4\3\2\2\2Q\u01d8\3\2\2\2S\u01e4\3\2\2\2U\u01ef\3") 

241 buf.write("\2\2\2W\u0201\3\2\2\2Y\u0203\3\2\2\2[\u020a\3\2\2\2]\u0211") 

242 buf.write("\3\2\2\2_\u021a\3\2\2\2a\u021e\3\2\2\2c\u0222\3\2\2\2") 

243 buf.write("e\u0224\3\2\2\2g\u0228\3\2\2\2i\u022a\3\2\2\2k\u022d\3") 

244 buf.write("\2\2\2m\u0230\3\2\2\2o\u0232\3\2\2\2q\u0234\3\2\2\2s\u0236") 

245 buf.write("\3\2\2\2u\u0239\3\2\2\2w\u023b\3\2\2\2y\u023e\3\2\2\2") 

246 buf.write("{\u0241\3\2\2\2}\u0243\3\2\2\2\177\u0245\3\2\2\2\u0081") 

247 buf.write("\u0247\3\2\2\2\u0083\u024a\3\2\2\2\u0085\u024d\3\2\2\2") 

248 buf.write("\u0087\u024f\3\2\2\2\u0089\u0251\3\2\2\2\u008b\u0253\3") 

249 buf.write("\2\2\2\u008d\u0255\3\2\2\2\u008f\u0258\3\2\2\2\u0091\u025a") 

250 buf.write("\3\2\2\2\u0093\u025d\3\2\2\2\u0095\u0260\3\2\2\2\u0097") 

251 buf.write("\u0262\3\2\2\2\u0099\u0264\3\2\2\2\u009b\u0267\3\2\2\2") 

252 buf.write("\u009d\u026a\3\2\2\2\u009f\u026d\3\2\2\2\u00a1\u0270\3") 

253 buf.write("\2\2\2\u00a3\u0273\3\2\2\2\u00a5\u0275\3\2\2\2\u00a7\u0278") 

254 buf.write("\3\2\2\2\u00a9\u027b\3\2\2\2\u00ab\u027e\3\2\2\2\u00ad") 

255 buf.write("\u0281\3\2\2\2\u00af\u0284\3\2\2\2\u00b1\u0287\3\2\2\2") 

256 buf.write("\u00b3\u028a\3\2\2\2\u00b5\u028d\3\2\2\2\u00b7\u0290\3") 

257 buf.write("\2\2\2\u00b9\u0293\3\2\2\2\u00bb\u0297\3\2\2\2\u00bd\u029b") 

258 buf.write("\3\2\2\2\u00bf\u029f\3\2\2\2\u00c1\u02a6\3\2\2\2\u00c3") 

259 buf.write("\u02aa\3\2\2\2\u00c5\u02be\3\2\2\2\u00c7\u02da\3\2\2\2") 

260 buf.write("\u00c9\u02de\3\2\2\2\u00cb\u02e0\3\2\2\2\u00cd\u02e6\3") 

261 buf.write("\2\2\2\u00cf\u02e8\3\2\2\2\u00d1\u02ea\3\2\2\2\u00d3\u02ec") 

262 buf.write("\3\2\2\2\u00d5\u02ee\3\2\2\2\u00d7\u02f0\3\2\2\2\u00d9") 

263 buf.write("\u02f9\3\2\2\2\u00db\u02fd\3\2\2\2\u00dd\u0302\3\2\2\2") 

264 buf.write("\u00df\u0306\3\2\2\2\u00e1\u030c\3\2\2\2\u00e3\u0327\3") 

265 buf.write("\2\2\2\u00e5\u0343\3\2\2\2\u00e7\u0347\3\2\2\2\u00e9\u034a") 

266 buf.write("\3\2\2\2\u00eb\u034d\3\2\2\2\u00ed\u0350\3\2\2\2\u00ef") 

267 buf.write("\u0352\3\2\2\2\u00f1\u0356\3\2\2\2\u00f3\u035a\3\2\2\2") 

268 buf.write("\u00f5\u0361\3\2\2\2\u00f7\u036d\3\2\2\2\u00f9\u0371\3") 

269 buf.write("\2\2\2\u00fb\u00fe\5S*\2\u00fc\u00fe\5U+\2\u00fd\u00fb") 

270 buf.write("\3\2\2\2\u00fd\u00fc\3\2\2\2\u00fe\4\3\2\2\2\u00ff\u0103") 

271 buf.write("\5\7\4\2\u0100\u0103\5_\60\2\u0101\u0103\5a\61\2\u0102") 

272 buf.write("\u00ff\3\2\2\2\u0102\u0100\3\2\2\2\u0102\u0101\3\2\2\2") 

273 buf.write("\u0103\6\3\2\2\2\u0104\u0109\5W,\2\u0105\u0109\5Y-\2\u0106") 

274 buf.write("\u0109\5[.\2\u0107\u0109\5]/\2\u0108\u0104\3\2\2\2\u0108") 

275 buf.write("\u0105\3\2\2\2\u0108\u0106\3\2\2\2\u0108\u0107\3\2\2\2") 

276 buf.write("\u0109\b\3\2\2\2\u010a\u010b\7f\2\2\u010b\u010c\7g\2\2") 

277 buf.write("\u010c\u010d\7h\2\2\u010d\n\3\2\2\2\u010e\u010f\7t\2\2") 

278 buf.write("\u010f\u0110\7g\2\2\u0110\u0111\7v\2\2\u0111\u0112\7w") 

279 buf.write("\2\2\u0112\u0113\7t\2\2\u0113\u0114\7p\2\2\u0114\f\3\2") 

280 buf.write("\2\2\u0115\u0116\7t\2\2\u0116\u0117\7c\2\2\u0117\u0118") 

281 buf.write("\7k\2\2\u0118\u0119\7u\2\2\u0119\u011a\7g\2\2\u011a\16") 

282 buf.write("\3\2\2\2\u011b\u011c\7h\2\2\u011c\u011d\7t\2\2\u011d\u011e") 

283 buf.write("\7q\2\2\u011e\u011f\7o\2\2\u011f\20\3\2\2\2\u0120\u0121") 

284 buf.write("\7k\2\2\u0121\u0122\7o\2\2\u0122\u0123\7r\2\2\u0123\u0124") 

285 buf.write("\7q\2\2\u0124\u0125\7t\2\2\u0125\u0126\7v\2\2\u0126\22") 

286 buf.write("\3\2\2\2\u0127\u0128\7c\2\2\u0128\u0129\7u\2\2\u0129\24") 

287 buf.write("\3\2\2\2\u012a\u012b\7i\2\2\u012b\u012c\7n\2\2\u012c\u012d") 

288 buf.write("\7q\2\2\u012d\u012e\7d\2\2\u012e\u012f\7c\2\2\u012f\u0130") 

289 buf.write("\7n\2\2\u0130\26\3\2\2\2\u0131\u0132\7p\2\2\u0132\u0133") 

290 buf.write("\7q\2\2\u0133\u0134\7p\2\2\u0134\u0135\7n\2\2\u0135\u0136") 

291 buf.write("\7q\2\2\u0136\u0137\7e\2\2\u0137\u0138\7c\2\2\u0138\u0139") 

292 buf.write("\7n\2\2\u0139\30\3\2\2\2\u013a\u013b\7c\2\2\u013b\u013c") 

293 buf.write("\7u\2\2\u013c\u013d\7u\2\2\u013d\u013e\7g\2\2\u013e\u013f") 

294 buf.write("\7t\2\2\u013f\u0140\7v\2\2\u0140\32\3\2\2\2\u0141\u0142") 

295 buf.write("\7k\2\2\u0142\u0143\7h\2\2\u0143\34\3\2\2\2\u0144\u0145") 

296 buf.write("\7g\2\2\u0145\u0146\7n\2\2\u0146\u0147\7k\2\2\u0147\u0148") 

297 buf.write("\7h\2\2\u0148\36\3\2\2\2\u0149\u014a\7g\2\2\u014a\u014b") 

298 buf.write("\7n\2\2\u014b\u014c\7u\2\2\u014c\u014d\7g\2\2\u014d \3") 

299 buf.write("\2\2\2\u014e\u014f\7y\2\2\u014f\u0150\7j\2\2\u0150\u0151") 

300 buf.write("\7k\2\2\u0151\u0152\7n\2\2\u0152\u0153\7g\2\2\u0153\"") 

301 buf.write("\3\2\2\2\u0154\u0155\7h\2\2\u0155\u0156\7q\2\2\u0156\u0157") 

302 buf.write("\7t\2\2\u0157$\3\2\2\2\u0158\u0159\7k\2\2\u0159\u015a") 

303 buf.write("\7p\2\2\u015a&\3\2\2\2\u015b\u015c\7v\2\2\u015c\u015d") 

304 buf.write("\7t\2\2\u015d\u015e\7{\2\2\u015e(\3\2\2\2\u015f\u0160") 

305 buf.write("\7h\2\2\u0160\u0161\7k\2\2\u0161\u0162\7p\2\2\u0162\u0163") 

306 buf.write("\7c\2\2\u0163\u0164\7n\2\2\u0164\u0165\7n\2\2\u0165\u0166") 

307 buf.write("\7{\2\2\u0166*\3\2\2\2\u0167\u0168\7y\2\2\u0168\u0169") 

308 buf.write("\7k\2\2\u0169\u016a\7v\2\2\u016a\u016b\7j\2\2\u016b,\3") 

309 buf.write("\2\2\2\u016c\u016d\7g\2\2\u016d\u016e\7z\2\2\u016e\u016f") 

310 buf.write("\7e\2\2\u016f\u0170\7g\2\2\u0170\u0171\7r\2\2\u0171\u0172") 

311 buf.write("\7v\2\2\u0172.\3\2\2\2\u0173\u0174\7n\2\2\u0174\u0175") 

312 buf.write("\7c\2\2\u0175\u0176\7o\2\2\u0176\u0177\7d\2\2\u0177\u0178") 

313 buf.write("\7f\2\2\u0178\u0179\7c\2\2\u0179\60\3\2\2\2\u017a\u017b") 

314 buf.write("\7q\2\2\u017b\u017c\7t\2\2\u017c\62\3\2\2\2\u017d\u017e") 

315 buf.write("\7c\2\2\u017e\u017f\7p\2\2\u017f\u0180\7f\2\2\u0180\64") 

316 buf.write("\3\2\2\2\u0181\u0182\7p\2\2\u0182\u0183\7q\2\2\u0183\u0184") 

317 buf.write("\7v\2\2\u0184\66\3\2\2\2\u0185\u0186\7k\2\2\u0186\u0187") 

318 buf.write("\7u\2\2\u01878\3\2\2\2\u0188\u0189\7P\2\2\u0189\u018a") 

319 buf.write("\7q\2\2\u018a\u018b\7p\2\2\u018b\u018c\7g\2\2\u018c:\3") 

320 buf.write("\2\2\2\u018d\u018e\7V\2\2\u018e\u018f\7t\2\2\u018f\u0190") 

321 buf.write("\7w\2\2\u0190\u0191\7g\2\2\u0191<\3\2\2\2\u0192\u0193") 

322 buf.write("\7H\2\2\u0193\u0194\7c\2\2\u0194\u0195\7n\2\2\u0195\u0196") 

323 buf.write("\7u\2\2\u0196\u0197\7g\2\2\u0197>\3\2\2\2\u0198\u0199") 

324 buf.write("\7e\2\2\u0199\u019a\7n\2\2\u019a\u019b\7c\2\2\u019b\u019c") 

325 buf.write("\7u\2\2\u019c\u019d\7u\2\2\u019d@\3\2\2\2\u019e\u019f") 

326 buf.write("\7{\2\2\u019f\u01a0\7k\2\2\u01a0\u01a1\7g\2\2\u01a1\u01a2") 

327 buf.write("\7n\2\2\u01a2\u01a3\7f\2\2\u01a3B\3\2\2\2\u01a4\u01a5") 

328 buf.write("\7f\2\2\u01a5\u01a6\7g\2\2\u01a6\u01a7\7n\2\2\u01a7D\3") 

329 buf.write("\2\2\2\u01a8\u01a9\7r\2\2\u01a9\u01aa\7c\2\2\u01aa\u01ab") 

330 buf.write("\7u\2\2\u01ab\u01ac\7u\2\2\u01acF\3\2\2\2\u01ad\u01ae") 

331 buf.write("\7e\2\2\u01ae\u01af\7q\2\2\u01af\u01b0\7p\2\2\u01b0\u01b1") 

332 buf.write("\7v\2\2\u01b1\u01b2\7k\2\2\u01b2\u01b3\7p\2\2\u01b3\u01b4") 

333 buf.write("\7w\2\2\u01b4\u01b5\7g\2\2\u01b5H\3\2\2\2\u01b6\u01b7") 

334 buf.write("\7d\2\2\u01b7\u01b8\7t\2\2\u01b8\u01b9\7g\2\2\u01b9\u01ba") 

335 buf.write("\7c\2\2\u01ba\u01bb\7m\2\2\u01bbJ\3\2\2\2\u01bc\u01bd") 

336 buf.write("\7c\2\2\u01bd\u01be\7u\2\2\u01be\u01bf\7{\2\2\u01bf\u01c0") 

337 buf.write("\7p\2\2\u01c0\u01c1\7e\2\2\u01c1L\3\2\2\2\u01c2\u01c3") 

338 buf.write("\7c\2\2\u01c3\u01c4\7y\2\2\u01c4\u01c5\7c\2\2\u01c5\u01c6") 

339 buf.write("\7k\2\2\u01c6\u01c7\7v\2\2\u01c7N\3\2\2\2\u01c8\u01c9") 

340 buf.write("\6(\2\2\u01c9\u01d5\5\u00f1y\2\u01ca\u01cc\7\17\2\2\u01cb") 

341 buf.write("\u01ca\3\2\2\2\u01cb\u01cc\3\2\2\2\u01cc\u01cd\3\2\2\2") 

342 buf.write("\u01cd\u01d0\7\f\2\2\u01ce\u01d0\4\16\17\2\u01cf\u01cb") 

343 buf.write("\3\2\2\2\u01cf\u01ce\3\2\2\2\u01d0\u01d2\3\2\2\2\u01d1") 

344 buf.write("\u01d3\5\u00f1y\2\u01d2\u01d1\3\2\2\2\u01d2\u01d3\3\2") 

345 buf.write("\2\2\u01d3\u01d5\3\2\2\2\u01d4\u01c8\3\2\2\2\u01d4\u01cf") 

346 buf.write("\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6\u01d7\b(\2\2\u01d7") 

347 buf.write("P\3\2\2\2\u01d8\u01dc\5\u00f7|\2\u01d9\u01db\5\u00f9}") 

348 buf.write("\2\u01da\u01d9\3\2\2\2\u01db\u01de\3\2\2\2\u01dc\u01da") 

349 buf.write("\3\2\2\2\u01dc\u01dd\3\2\2\2\u01ddR\3\2\2\2\u01de\u01dc") 

350 buf.write("\3\2\2\2\u01df\u01e5\t\2\2\2\u01e0\u01e1\t\3\2\2\u01e1") 

351 buf.write("\u01e5\t\4\2\2\u01e2\u01e3\t\4\2\2\u01e3\u01e5\t\3\2\2") 

352 buf.write("\u01e4\u01df\3\2\2\2\u01e4\u01e0\3\2\2\2\u01e4\u01e2\3") 

353 buf.write("\2\2\2\u01e4\u01e5\3\2\2\2\u01e5\u01e8\3\2\2\2\u01e6\u01e9") 

354 buf.write("\5\u00c5c\2\u01e7\u01e9\5\u00c7d\2\u01e8\u01e6\3\2\2\2") 

355 buf.write("\u01e8\u01e7\3\2\2\2\u01e9T\3\2\2\2\u01ea\u01f0\t\5\2") 

356 buf.write("\2\u01eb\u01ec\t\5\2\2\u01ec\u01f0\t\4\2\2\u01ed\u01ee") 

357 buf.write("\t\4\2\2\u01ee\u01f0\t\5\2\2\u01ef\u01ea\3\2\2\2\u01ef") 

358 buf.write("\u01eb\3\2\2\2\u01ef\u01ed\3\2\2\2\u01f0\u01f3\3\2\2\2") 

359 buf.write("\u01f1\u01f4\5\u00e3r\2\u01f2\u01f4\5\u00e5s\2\u01f3\u01f1") 

360 buf.write("\3\2\2\2\u01f3\u01f2\3\2\2\2\u01f4V\3\2\2\2\u01f5\u01f9") 

361 buf.write("\5\u00cfh\2\u01f6\u01f8\5\u00d1i\2\u01f7\u01f6\3\2\2\2") 

362 buf.write("\u01f8\u01fb\3\2\2\2\u01f9\u01f7\3\2\2\2\u01f9\u01fa\3") 

363 buf.write("\2\2\2\u01fa\u0202\3\2\2\2\u01fb\u01f9\3\2\2\2\u01fc\u01fe") 

364 buf.write("\7\62\2\2\u01fd\u01fc\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff") 

365 buf.write("\u01fd\3\2\2\2\u01ff\u0200\3\2\2\2\u0200\u0202\3\2\2\2") 

366 buf.write("\u0201\u01f5\3\2\2\2\u0201\u01fd\3\2\2\2\u0202X\3\2\2") 

367 buf.write("\2\u0203\u0204\7\62\2\2\u0204\u0206\t\6\2\2\u0205\u0207") 

368 buf.write("\5\u00d3j\2\u0206\u0205\3\2\2\2\u0207\u0208\3\2\2\2\u0208") 

369 buf.write("\u0206\3\2\2\2\u0208\u0209\3\2\2\2\u0209Z\3\2\2\2\u020a") 

370 buf.write("\u020b\7\62\2\2\u020b\u020d\t\7\2\2\u020c\u020e\5\u00d5") 

371 buf.write("k\2\u020d\u020c\3\2\2\2\u020e\u020f\3\2\2\2\u020f\u020d") 

372 buf.write("\3\2\2\2\u020f\u0210\3\2\2\2\u0210\\\3\2\2\2\u0211\u0212") 

373 buf.write("\7\62\2\2\u0212\u0214\t\5\2\2\u0213\u0215\5\u00d7l\2\u0214") 

374 buf.write("\u0213\3\2\2\2\u0215\u0216\3\2\2\2\u0216\u0214\3\2\2\2") 

375 buf.write("\u0216\u0217\3\2\2\2\u0217^\3\2\2\2\u0218\u021b\5\u00d9") 

376 buf.write("m\2\u0219\u021b\5\u00dbn\2\u021a\u0218\3\2\2\2\u021a\u0219") 

377 buf.write("\3\2\2\2\u021b`\3\2\2\2\u021c\u021f\5_\60\2\u021d\u021f") 

378 buf.write("\5\u00ddo\2\u021e\u021c\3\2\2\2\u021e\u021d\3\2\2\2\u021f") 

379 buf.write("\u0220\3\2\2\2\u0220\u0221\t\b\2\2\u0221b\3\2\2\2\u0222") 

380 buf.write("\u0223\7\60\2\2\u0223d\3\2\2\2\u0224\u0225\7\60\2\2\u0225") 

381 buf.write("\u0226\7\60\2\2\u0226\u0227\7\60\2\2\u0227f\3\2\2\2\u0228") 

382 buf.write("\u0229\7,\2\2\u0229h\3\2\2\2\u022a\u022b\7*\2\2\u022b") 

383 buf.write("\u022c\b\65\3\2\u022cj\3\2\2\2\u022d\u022e\7+\2\2\u022e") 

384 buf.write("\u022f\b\66\4\2\u022fl\3\2\2\2\u0230\u0231\7.\2\2\u0231") 

385 buf.write("n\3\2\2\2\u0232\u0233\7<\2\2\u0233p\3\2\2\2\u0234\u0235") 

386 buf.write("\7=\2\2\u0235r\3\2\2\2\u0236\u0237\7,\2\2\u0237\u0238") 

387 buf.write("\7,\2\2\u0238t\3\2\2\2\u0239\u023a\7?\2\2\u023av\3\2\2") 

388 buf.write("\2\u023b\u023c\7]\2\2\u023c\u023d\b<\5\2\u023dx\3\2\2") 

389 buf.write("\2\u023e\u023f\7_\2\2\u023f\u0240\b=\6\2\u0240z\3\2\2") 

390 buf.write("\2\u0241\u0242\7~\2\2\u0242|\3\2\2\2\u0243\u0244\7`\2") 

391 buf.write("\2\u0244~\3\2\2\2\u0245\u0246\7(\2\2\u0246\u0080\3\2\2") 

392 buf.write("\2\u0247\u0248\7>\2\2\u0248\u0249\7>\2\2\u0249\u0082\3") 

393 buf.write("\2\2\2\u024a\u024b\7@\2\2\u024b\u024c\7@\2\2\u024c\u0084") 

394 buf.write("\3\2\2\2\u024d\u024e\7-\2\2\u024e\u0086\3\2\2\2\u024f") 

395 buf.write("\u0250\7/\2\2\u0250\u0088\3\2\2\2\u0251\u0252\7\61\2\2") 

396 buf.write("\u0252\u008a\3\2\2\2\u0253\u0254\7\'\2\2\u0254\u008c\3") 

397 buf.write("\2\2\2\u0255\u0256\7\61\2\2\u0256\u0257\7\61\2\2\u0257") 

398 buf.write("\u008e\3\2\2\2\u0258\u0259\7\u0080\2\2\u0259\u0090\3\2") 

399 buf.write("\2\2\u025a\u025b\7}\2\2\u025b\u025c\bI\7\2\u025c\u0092") 

400 buf.write("\3\2\2\2\u025d\u025e\7\177\2\2\u025e\u025f\bJ\b\2\u025f") 

401 buf.write("\u0094\3\2\2\2\u0260\u0261\7>\2\2\u0261\u0096\3\2\2\2") 

402 buf.write("\u0262\u0263\7@\2\2\u0263\u0098\3\2\2\2\u0264\u0265\7") 

403 buf.write("?\2\2\u0265\u0266\7?\2\2\u0266\u009a\3\2\2\2\u0267\u0268") 

404 buf.write("\7@\2\2\u0268\u0269\7?\2\2\u0269\u009c\3\2\2\2\u026a\u026b") 

405 buf.write("\7>\2\2\u026b\u026c\7?\2\2\u026c\u009e\3\2\2\2\u026d\u026e") 

406 buf.write("\7>\2\2\u026e\u026f\7@\2\2\u026f\u00a0\3\2\2\2\u0270\u0271") 

407 buf.write("\7#\2\2\u0271\u0272\7?\2\2\u0272\u00a2\3\2\2\2\u0273\u0274") 

408 buf.write("\7B\2\2\u0274\u00a4\3\2\2\2\u0275\u0276\7/\2\2\u0276\u0277") 

409 buf.write("\7@\2\2\u0277\u00a6\3\2\2\2\u0278\u0279\7-\2\2\u0279\u027a") 

410 buf.write("\7?\2\2\u027a\u00a8\3\2\2\2\u027b\u027c\7/\2\2\u027c\u027d") 

411 buf.write("\7?\2\2\u027d\u00aa\3\2\2\2\u027e\u027f\7,\2\2\u027f\u0280") 

412 buf.write("\7?\2\2\u0280\u00ac\3\2\2\2\u0281\u0282\7B\2\2\u0282\u0283") 

413 buf.write("\7?\2\2\u0283\u00ae\3\2\2\2\u0284\u0285\7\61\2\2\u0285") 

414 buf.write("\u0286\7?\2\2\u0286\u00b0\3\2\2\2\u0287\u0288\7\'\2\2") 

415 buf.write("\u0288\u0289\7?\2\2\u0289\u00b2\3\2\2\2\u028a\u028b\7") 

416 buf.write("(\2\2\u028b\u028c\7?\2\2\u028c\u00b4\3\2\2\2\u028d\u028e") 

417 buf.write("\7~\2\2\u028e\u028f\7?\2\2\u028f\u00b6\3\2\2\2\u0290\u0291") 

418 buf.write("\7`\2\2\u0291\u0292\7?\2\2\u0292\u00b8\3\2\2\2\u0293\u0294") 

419 buf.write("\7>\2\2\u0294\u0295\7>\2\2\u0295\u0296\7?\2\2\u0296\u00ba") 

420 buf.write("\3\2\2\2\u0297\u0298\7@\2\2\u0298\u0299\7@\2\2\u0299\u029a") 

421 buf.write("\7?\2\2\u029a\u00bc\3\2\2\2\u029b\u029c\7,\2\2\u029c\u029d") 

422 buf.write("\7,\2\2\u029d\u029e\7?\2\2\u029e\u00be\3\2\2\2\u029f\u02a0") 

423 buf.write("\7\61\2\2\u02a0\u02a1\7\61\2\2\u02a1\u02a2\7?\2\2\u02a2") 

424 buf.write("\u00c0\3\2\2\2\u02a3\u02a7\5\u00f1y\2\u02a4\u02a7\5\u00f3") 

425 buf.write("z\2\u02a5\u02a7\5\u00f5{\2\u02a6\u02a3\3\2\2\2\u02a6\u02a4") 

426 buf.write("\3\2\2\2\u02a6\u02a5\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8") 

427 buf.write("\u02a9\ba\t\2\u02a9\u00c2\3\2\2\2\u02aa\u02ab\13\2\2\2") 

428 buf.write("\u02ab\u00c4\3\2\2\2\u02ac\u02b1\7)\2\2\u02ad\u02b0\5") 

429 buf.write("\u00cdg\2\u02ae\u02b0\n\t\2\2\u02af\u02ad\3\2\2\2\u02af") 

430 buf.write("\u02ae\3\2\2\2\u02b0\u02b3\3\2\2\2\u02b1\u02af\3\2\2\2") 

431 buf.write("\u02b1\u02b2\3\2\2\2\u02b2\u02b4\3\2\2\2\u02b3\u02b1\3") 

432 buf.write("\2\2\2\u02b4\u02bf\7)\2\2\u02b5\u02ba\7$\2\2\u02b6\u02b9") 

433 buf.write("\5\u00cdg\2\u02b7\u02b9\n\n\2\2\u02b8\u02b6\3\2\2\2\u02b8") 

434 buf.write("\u02b7\3\2\2\2\u02b9\u02bc\3\2\2\2\u02ba\u02b8\3\2\2\2") 

435 buf.write("\u02ba\u02bb\3\2\2\2\u02bb\u02bd\3\2\2\2\u02bc\u02ba\3") 

436 buf.write("\2\2\2\u02bd\u02bf\7$\2\2\u02be\u02ac\3\2\2\2\u02be\u02b5") 

437 buf.write("\3\2\2\2\u02bf\u00c6\3\2\2\2\u02c0\u02c1\7)\2\2\u02c1") 

438 buf.write("\u02c2\7)\2\2\u02c2\u02c3\7)\2\2\u02c3\u02c7\3\2\2\2\u02c4") 

439 buf.write("\u02c6\5\u00c9e\2\u02c5\u02c4\3\2\2\2\u02c6\u02c9\3\2") 

440 buf.write("\2\2\u02c7\u02c8\3\2\2\2\u02c7\u02c5\3\2\2\2\u02c8\u02ca") 

441 buf.write("\3\2\2\2\u02c9\u02c7\3\2\2\2\u02ca\u02cb\7)\2\2\u02cb") 

442 buf.write("\u02cc\7)\2\2\u02cc\u02db\7)\2\2\u02cd\u02ce\7$\2\2\u02ce") 

443 buf.write("\u02cf\7$\2\2\u02cf\u02d0\7$\2\2\u02d0\u02d4\3\2\2\2\u02d1") 

444 buf.write("\u02d3\5\u00c9e\2\u02d2\u02d1\3\2\2\2\u02d3\u02d6\3\2") 

445 buf.write("\2\2\u02d4\u02d5\3\2\2\2\u02d4\u02d2\3\2\2\2\u02d5\u02d7") 

446 buf.write("\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d7\u02d8\7$\2\2\u02d8") 

447 buf.write("\u02d9\7$\2\2\u02d9\u02db\7$\2\2\u02da\u02c0\3\2\2\2\u02da") 

448 buf.write("\u02cd\3\2\2\2\u02db\u00c8\3\2\2\2\u02dc\u02df\5\u00cb") 

449 buf.write("f\2\u02dd\u02df\5\u00cdg\2\u02de\u02dc\3\2\2\2\u02de\u02dd") 

450 buf.write("\3\2\2\2\u02df\u00ca\3\2\2\2\u02e0\u02e1\n\13\2\2\u02e1") 

451 buf.write("\u00cc\3\2\2\2\u02e2\u02e3\7^\2\2\u02e3\u02e7\13\2\2\2") 

452 buf.write("\u02e4\u02e5\7^\2\2\u02e5\u02e7\5O(\2\u02e6\u02e2\3\2") 

453 buf.write("\2\2\u02e6\u02e4\3\2\2\2\u02e7\u00ce\3\2\2\2\u02e8\u02e9") 

454 buf.write("\t\f\2\2\u02e9\u00d0\3\2\2\2\u02ea\u02eb\t\r\2\2\u02eb") 

455 buf.write("\u00d2\3\2\2\2\u02ec\u02ed\t\16\2\2\u02ed\u00d4\3\2\2") 

456 buf.write("\2\u02ee\u02ef\t\17\2\2\u02ef\u00d6\3\2\2\2\u02f0\u02f1") 

457 buf.write("\t\20\2\2\u02f1\u00d8\3\2\2\2\u02f2\u02f4\5\u00ddo\2\u02f3") 

458 buf.write("\u02f2\3\2\2\2\u02f3\u02f4\3\2\2\2\u02f4\u02f5\3\2\2\2") 

459 buf.write("\u02f5\u02fa\5\u00dfp\2\u02f6\u02f7\5\u00ddo\2\u02f7\u02f8") 

460 buf.write("\7\60\2\2\u02f8\u02fa\3\2\2\2\u02f9\u02f3\3\2\2\2\u02f9") 

461 buf.write("\u02f6\3\2\2\2\u02fa\u00da\3\2\2\2\u02fb\u02fe\5\u00dd") 

462 buf.write("o\2\u02fc\u02fe\5\u00d9m\2\u02fd\u02fb\3\2\2\2\u02fd\u02fc") 

463 buf.write("\3\2\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0300\5\u00e1q\2\u0300") 

464 buf.write("\u00dc\3\2\2\2\u0301\u0303\5\u00d1i\2\u0302\u0301\3\2") 

465 buf.write("\2\2\u0303\u0304\3\2\2\2\u0304\u0302\3\2\2\2\u0304\u0305") 

466 buf.write("\3\2\2\2\u0305\u00de\3\2\2\2\u0306\u0308\7\60\2\2\u0307") 

467 buf.write("\u0309\5\u00d1i\2\u0308\u0307\3\2\2\2\u0309\u030a\3\2") 

468 buf.write("\2\2\u030a\u0308\3\2\2\2\u030a\u030b\3\2\2\2\u030b\u00e0") 

469 buf.write("\3\2\2\2\u030c\u030e\t\21\2\2\u030d\u030f\t\22\2\2\u030e") 

470 buf.write("\u030d\3\2\2\2\u030e\u030f\3\2\2\2\u030f\u0311\3\2\2\2") 

471 buf.write("\u0310\u0312\5\u00d1i\2\u0311\u0310\3\2\2\2\u0312\u0313") 

472 buf.write("\3\2\2\2\u0313\u0311\3\2\2\2\u0313\u0314\3\2\2\2\u0314") 

473 buf.write("\u00e2\3\2\2\2\u0315\u031a\7)\2\2\u0316\u0319\5\u00e9") 

474 buf.write("u\2\u0317\u0319\5\u00efx\2\u0318\u0316\3\2\2\2\u0318\u0317") 

475 buf.write("\3\2\2\2\u0319\u031c\3\2\2\2\u031a\u0318\3\2\2\2\u031a") 

476 buf.write("\u031b\3\2\2\2\u031b\u031d\3\2\2\2\u031c\u031a\3\2\2\2") 

477 buf.write("\u031d\u0328\7)\2\2\u031e\u0323\7$\2\2\u031f\u0322\5\u00eb") 

478 buf.write("v\2\u0320\u0322\5\u00efx\2\u0321\u031f\3\2\2\2\u0321\u0320") 

479 buf.write("\3\2\2\2\u0322\u0325\3\2\2\2\u0323\u0321\3\2\2\2\u0323") 

480 buf.write("\u0324\3\2\2\2\u0324\u0326\3\2\2\2\u0325\u0323\3\2\2\2") 

481 buf.write("\u0326\u0328\7$\2\2\u0327\u0315\3\2\2\2\u0327\u031e\3") 

482 buf.write("\2\2\2\u0328\u00e4\3\2\2\2\u0329\u032a\7)\2\2\u032a\u032b") 

483 buf.write("\7)\2\2\u032b\u032c\7)\2\2\u032c\u0330\3\2\2\2\u032d\u032f") 

484 buf.write("\5\u00e7t\2\u032e\u032d\3\2\2\2\u032f\u0332\3\2\2\2\u0330") 

485 buf.write("\u0331\3\2\2\2\u0330\u032e\3\2\2\2\u0331\u0333\3\2\2\2") 

486 buf.write("\u0332\u0330\3\2\2\2\u0333\u0334\7)\2\2\u0334\u0335\7") 

487 buf.write(")\2\2\u0335\u0344\7)\2\2\u0336\u0337\7$\2\2\u0337\u0338") 

488 buf.write("\7$\2\2\u0338\u0339\7$\2\2\u0339\u033d\3\2\2\2\u033a\u033c") 

489 buf.write("\5\u00e7t\2\u033b\u033a\3\2\2\2\u033c\u033f\3\2\2\2\u033d") 

490 buf.write("\u033e\3\2\2\2\u033d\u033b\3\2\2\2\u033e\u0340\3\2\2\2") 

491 buf.write("\u033f\u033d\3\2\2\2\u0340\u0341\7$\2\2\u0341\u0342\7") 

492 buf.write("$\2\2\u0342\u0344\7$\2\2\u0343\u0329\3\2\2\2\u0343\u0336") 

493 buf.write("\3\2\2\2\u0344\u00e6\3\2\2\2\u0345\u0348\5\u00edw\2\u0346") 

494 buf.write("\u0348\5\u00efx\2\u0347\u0345\3\2\2\2\u0347\u0346\3\2") 

495 buf.write("\2\2\u0348\u00e8\3\2\2\2\u0349\u034b\t\23\2\2\u034a\u0349") 

496 buf.write("\3\2\2\2\u034b\u00ea\3\2\2\2\u034c\u034e\t\24\2\2\u034d") 

497 buf.write("\u034c\3\2\2\2\u034e\u00ec\3\2\2\2\u034f\u0351\t\25\2") 

498 buf.write("\2\u0350\u034f\3\2\2\2\u0351\u00ee\3\2\2\2\u0352\u0353") 

499 buf.write("\7^\2\2\u0353\u0354\t\26\2\2\u0354\u00f0\3\2\2\2\u0355") 

500 buf.write("\u0357\t\27\2\2\u0356\u0355\3\2\2\2\u0357\u0358\3\2\2") 

501 buf.write("\2\u0358\u0356\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u00f2") 

502 buf.write("\3\2\2\2\u035a\u035e\7%\2\2\u035b\u035d\n\30\2\2\u035c") 

503 buf.write("\u035b\3\2\2\2\u035d\u0360\3\2\2\2\u035e\u035c\3\2\2\2") 

504 buf.write("\u035e\u035f\3\2\2\2\u035f\u00f4\3\2\2\2\u0360\u035e\3") 

505 buf.write("\2\2\2\u0361\u0363\7^\2\2\u0362\u0364\5\u00f1y\2\u0363") 

506 buf.write("\u0362\3\2\2\2\u0363\u0364\3\2\2\2\u0364\u036a\3\2\2\2") 

507 buf.write("\u0365\u0367\7\17\2\2\u0366\u0365\3\2\2\2\u0366\u0367") 

508 buf.write("\3\2\2\2\u0367\u0368\3\2\2\2\u0368\u036b\7\f\2\2\u0369") 

509 buf.write("\u036b\4\16\17\2\u036a\u0366\3\2\2\2\u036a\u0369\3\2\2") 

510 buf.write("\2\u036b\u00f6\3\2\2\2\u036c\u036e\t\31\2\2\u036d\u036c") 

511 buf.write("\3\2\2\2\u036e\u00f8\3\2\2\2\u036f\u0372\5\u00f7|\2\u0370") 

512 buf.write("\u0372\t\32\2\2\u0371\u036f\3\2\2\2\u0371\u0370\3\2\2") 

513 buf.write("\2\u0372\u00fa\3\2\2\2<\2\u00fd\u0102\u0108\u01cb\u01cf") 

514 buf.write("\u01d2\u01d4\u01dc\u01e4\u01e8\u01ef\u01f3\u01f9\u01ff") 

515 buf.write("\u0201\u0208\u020f\u0216\u021a\u021e\u02a6\u02af\u02b1") 

516 buf.write("\u02b8\u02ba\u02be\u02c7\u02d4\u02da\u02de\u02e6\u02f3") 

517 buf.write("\u02f9\u02fd\u0304\u030a\u030e\u0313\u0318\u031a\u0321") 

518 buf.write("\u0323\u0327\u0330\u033d\u0343\u0347\u034a\u034d\u0350") 

519 buf.write("\u0358\u035e\u0363\u0366\u036a\u036d\u0371\n\3(\2\3\65") 

520 buf.write("\3\3\66\4\3<\5\3=\6\3I\7\3J\b\b\2\2") 

521 return buf.getvalue() 

522 

523 

524class Python3Lexer(Lexer): 

525 

526 atn = ATNDeserializer().deserialize(serializedATN()) 

527 

528 decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] 

529 

530 STRING = 1 

531 NUMBER = 2 

532 INTEGER = 3 

533 DEF = 4 

534 RETURN = 5 

535 RAISE = 6 

536 FROM = 7 

537 IMPORT = 8 

538 AS = 9 

539 GLOBAL = 10 

540 NONLOCAL = 11 

541 ASSERT = 12 

542 IF = 13 

543 ELIF = 14 

544 ELSE = 15 

545 WHILE = 16 

546 FOR = 17 

547 IN = 18 

548 TRY = 19 

549 FINALLY = 20 

550 WITH = 21 

551 EXCEPT = 22 

552 LAMBDA = 23 

553 OR = 24 

554 AND = 25 

555 NOT = 26 

556 IS = 27 

557 NONE = 28 

558 TRUE = 29 

559 FALSE = 30 

560 CLASS = 31 

561 YIELD = 32 

562 DEL = 33 

563 PASS = 34 

564 CONTINUE = 35 

565 BREAK = 36 

566 ASYNC = 37 

567 AWAIT = 38 

568 NEWLINE = 39 

569 NAME = 40 

570 STRING_LITERAL = 41 

571 BYTES_LITERAL = 42 

572 DECIMAL_INTEGER = 43 

573 OCT_INTEGER = 44 

574 HEX_INTEGER = 45 

575 BIN_INTEGER = 46 

576 FLOAT_NUMBER = 47 

577 IMAG_NUMBER = 48 

578 DOT = 49 

579 ELLIPSIS = 50 

580 STAR = 51 

581 OPEN_PAREN = 52 

582 CLOSE_PAREN = 53 

583 COMMA = 54 

584 COLON = 55 

585 SEMI_COLON = 56 

586 POWER = 57 

587 ASSIGN = 58 

588 OPEN_BRACK = 59 

589 CLOSE_BRACK = 60 

590 OR_OP = 61 

591 XOR = 62 

592 AND_OP = 63 

593 LEFT_SHIFT = 64 

594 RIGHT_SHIFT = 65 

595 ADD = 66 

596 MINUS = 67 

597 DIV = 68 

598 MOD = 69 

599 IDIV = 70 

600 NOT_OP = 71 

601 OPEN_BRACE = 72 

602 CLOSE_BRACE = 73 

603 LESS_THAN = 74 

604 GREATER_THAN = 75 

605 EQUALS = 76 

606 GT_EQ = 77 

607 LT_EQ = 78 

608 NOT_EQ_1 = 79 

609 NOT_EQ_2 = 80 

610 AT = 81 

611 ARROW = 82 

612 ADD_ASSIGN = 83 

613 SUB_ASSIGN = 84 

614 MULT_ASSIGN = 85 

615 AT_ASSIGN = 86 

616 DIV_ASSIGN = 87 

617 MOD_ASSIGN = 88 

618 AND_ASSIGN = 89 

619 OR_ASSIGN = 90 

620 XOR_ASSIGN = 91 

621 LEFT_SHIFT_ASSIGN = 92 

622 RIGHT_SHIFT_ASSIGN = 93 

623 POWER_ASSIGN = 94 

624 IDIV_ASSIGN = 95 

625 SKIP_ = 96 

626 UNKNOWN_CHAR = 97 

627 

628 channelNames = [u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN"] 

629 

630 modeNames = ["DEFAULT_MODE"] 

631 

632 literalNames = ["<INVALID>", 

633 "'def'", "'return'", "'raise'", "'from'", "'import'", "'as'", 

634 "'global'", "'nonlocal'", "'assert'", "'if'", "'elif'", "'else'", 

635 "'while'", "'for'", "'in'", "'try'", "'finally'", "'with'", 

636 "'except'", "'lambda'", "'or'", "'and'", "'not'", "'is'", "'None'", 

637 "'True'", "'False'", "'class'", "'yield'", "'del'", "'pass'", 

638 "'continue'", "'break'", "'async'", "'await'", "'.'", "'...'", 

639 "'*'", "'('", "')'", "','", "':'", "';'", "'**'", "'='", "'['", 

640 "']'", "'|'", "'^'", "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'", 

641 "'%'", "'//'", "'~'", "'{'", "'}'", "'<'", "'>'", "'=='", "'>='", 

642 "'<='", "'<>'", "'!='", "'@'", "'->'", "'+='", "'-='", "'*='", 

643 "'@='", "'/='", "'%='", "'&='", "'|='", "'^='", "'<<='", "'>>='", 

644 "'**='", "'//='"] 

645 

646 symbolicNames = ["<INVALID>", 

647 "STRING", "NUMBER", "INTEGER", "DEF", "RETURN", "RAISE", "FROM", 

648 "IMPORT", "AS", "GLOBAL", "NONLOCAL", "ASSERT", "IF", "ELIF", 

649 "ELSE", "WHILE", "FOR", "IN", "TRY", "FINALLY", "WITH", "EXCEPT", 

650 "LAMBDA", "OR", "AND", "NOT", "IS", "NONE", "TRUE", "FALSE", 

651 "CLASS", "YIELD", "DEL", "PASS", "CONTINUE", "BREAK", "ASYNC", 

652 "AWAIT", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL", 

653 "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", 

654 "FLOAT_NUMBER", "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", 

655 "CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", 

656 "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", 

657 "RIGHT_SHIFT", "ADD", "MINUS", "DIV", "MOD", "IDIV", "NOT_OP", 

658 "OPEN_BRACE", "CLOSE_BRACE", "LESS_THAN", "GREATER_THAN", "EQUALS", 

659 "GT_EQ", "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", 

660 "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", 

661 "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", 

662 "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", 

663 "UNKNOWN_CHAR"] 

664 

665 ruleNames = ["STRING", "NUMBER", "INTEGER", "DEF", "RETURN", "RAISE", 

666 "FROM", "IMPORT", "AS", "GLOBAL", "NONLOCAL", "ASSERT", 

667 "IF", "ELIF", "ELSE", "WHILE", "FOR", "IN", "TRY", "FINALLY", 

668 "WITH", "EXCEPT", "LAMBDA", "OR", "AND", "NOT", "IS", 

669 "NONE", "TRUE", "FALSE", "CLASS", "YIELD", "DEL", "PASS", 

670 "CONTINUE", "BREAK", "ASYNC", "AWAIT", "NEWLINE", "NAME", 

671 "STRING_LITERAL", "BYTES_LITERAL", "DECIMAL_INTEGER", 

672 "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER", 

673 "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", 

674 "CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON", "POWER", 

675 "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", "XOR", 

676 "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", 

677 "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", 

678 "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", 

679 "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", 

680 "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", 

681 "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", 

682 "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", 

683 "UNKNOWN_CHAR", "SHORT_STRING", "LONG_STRING", "LONG_STRING_ITEM", 

684 "LONG_STRING_CHAR", "STRING_ESCAPE_SEQ", "NON_ZERO_DIGIT", 

685 "DIGIT", "OCT_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "POINT_FLOAT", 

686 "EXPONENT_FLOAT", "INT_PART", "FRACTION", "EXPONENT", 

687 "SHORT_BYTES", "LONG_BYTES", "LONG_BYTES_ITEM", "SHORT_BYTES_CHAR_NO_SINGLE_QUOTE", 

688 "SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE", "LONG_BYTES_CHAR", 

689 "BYTES_ESCAPE_SEQ", "SPACES", "COMMENT", "LINE_JOINING", 

690 "ID_START", "ID_CONTINUE"] 

691 

692 grammarFileName = "Python3.g4" 

693 

694 def __init__(self, input=None, output: TextIO = sys.stdout): 

695 super().__init__(input, output) 

696 self.checkVersion("4.9") 

697 self._interp = LexerATNSimulator( 

698 self, self.atn, self.decisionsToDFA, PredictionContextCache()) 

699 self._actions = None 

700 self._predicates = None 

701 

702 @property 

703 def tokens(self): 

704 try: 

705 return self._tokens 

706 except AttributeError: 

707 self._tokens = [] 

708 return self._tokens 

709 

710 @property 

711 def indents(self): 

712 try: 

713 return self._indents 

714 except AttributeError: 

715 self._indents = [] 

716 return self._indents 

717 

718 @property 

719 def opened(self): 

720 try: 

721 return self._opened 

722 except AttributeError: 

723 self._opened = 0 

724 return self._opened 

725 

726 @opened.setter 

727 def opened(self, value): 

728 self._opened = value 

729 

730 @property 

731 def lastToken(self): 

732 try: 

733 return self._lastToken 

734 except AttributeError: 

735 self._lastToken = None 

736 return self._lastToken 

737 

738 @lastToken.setter 

739 def lastToken(self, value): 

740 self._lastToken = value 

741 

742 def reset(self): 

743 super().reset() 

744 self.tokens = [] 

745 self.indents = [] 

746 self.opened = 0 

747 self.lastToken = None 

748 

749 def emitToken(self, t): 

750 super().emitToken(t) 

751 self.tokens.append(t) 

752 

753 def nextToken(self): 

754 if self._input.LA(1) == Token.EOF and self.indents: 

755 for i in range(len(self.tokens) - 1, -1, -1): 

756 if self.tokens[i].type == Token.EOF: 

757 self.tokens.pop(i) 

758 

759 self.emitToken(self.commonToken(LanguageParser.NEWLINE, '\n')) 

760 while self.indents: 

761 self.emitToken(self.createDedent()) 

762 self.indents.pop() 

763 

764 self.emitToken(self.commonToken(LanguageParser.EOF, "<EOF>")) 

765 next = super().nextToken() 

766 if next.channel == Token.DEFAULT_CHANNEL: 

767 self.lastToken = next 

768 return next if not self.tokens else self.tokens.pop(0) 

769 

770 def createDedent(self): 

771 dedent = self.commonToken(LanguageParser.DEDENT, "") 

772 dedent.line = self.lastToken.line 

773 return dedent 

774 

775 def commonToken(self, type, text, indent=0): 

776 stop = self.getCharIndex() - 1 - indent 

777 start = (stop - len(text) + 1) if text else stop 

778 return CommonToken(self._tokenFactorySourcePair, type, super().DEFAULT_TOKEN_CHANNEL, start, stop) 

779 

780 @staticmethod 

781 def getIndentationCount(spaces): 

782 count = 0 

783 for ch in spaces: 

784 if ch == '\t': 

785 count += 8 - (count % 8) 

786 else: 

787 count += 1 

788 return count 

789 

790 def atStartOfInput(self): 

791 return Lexer.column.fget(self) == 0 and Lexer.line.fget(self) == 1 

792 

793 def action(self, localctx: RuleContext, ruleIndex: int, actionIndex: int): 

794 if self._actions is None: 

795 actions = dict() 

796 actions[38] = self.NEWLINE_action 

797 actions[51] = self.OPEN_PAREN_action 

798 actions[52] = self.CLOSE_PAREN_action 

799 actions[58] = self.OPEN_BRACK_action 

800 actions[59] = self.CLOSE_BRACK_action 

801 actions[71] = self.OPEN_BRACE_action 

802 actions[72] = self.CLOSE_BRACE_action 

803 self._actions = actions 

804 action = self._actions.get(ruleIndex, None) 

805 if action is not None: 

806 action(localctx, actionIndex) 

807 else: 

808 raise Exception("No registered action for:" + str(ruleIndex)) 

809 

810 def NEWLINE_action(self, localctx: RuleContext, actionIndex: int): 

811 if actionIndex == 0: 

812 

813 tempt = Lexer.text.fget(self) 

814 newLine = re.sub("[^\r\n\f]+", "", tempt) 

815 spaces = re.sub("[\r\n\f]+", "", tempt) 

816 la_char = "" 

817 try: 

818 la = self._input.LA(1) 

819 # Python does not compare char to ints directly 

820 la_char = chr(la) 

821 except ValueError: # End of file 

822 pass 

823 

824 # Strip newlines inside open clauses except if we are near EOF. We keep NEWLINEs near EOF to 

825 # satisfy the final newline needed by the single_put rule used by the REPL. 

826 try: 

827 nextnext_la = self._input.LA(2) 

828 nextnext_la_char = chr(nextnext_la) 

829 except ValueError: 

830 nextnext_eof = True 

831 else: 

832 nextnext_eof = False 

833 

834 if self.opened > 0 or nextnext_eof is False and (la_char == '\r' or la_char == '\n' or la_char == '\f' or la_char == '#'): 

835 self.skip() 

836 else: 

837 indent = self.getIndentationCount(spaces) 

838 previous = self.indents[-1] if self.indents else 0 

839 # NEWLINE is actually the '\n' char 

840 self.emitToken(self.commonToken( 

841 self.NEWLINE, newLine, indent=indent)) 

842 if indent == previous: 

843 self.skip() 

844 elif indent > previous: 

845 self.indents.append(indent) 

846 self.emitToken(self.commonToken( 

847 LanguageParser.INDENT, spaces)) 

848 else: 

849 while self.indents and self.indents[-1] > indent: 

850 self.emitToken(self.createDedent()) 

851 self.indents.pop() 

852 

853 def OPEN_PAREN_action(self, localctx: RuleContext, actionIndex: int): 

854 if actionIndex == 1: 

855 self.opened += 1 

856 

857 def CLOSE_PAREN_action(self, localctx: RuleContext, actionIndex: int): 

858 if actionIndex == 2: 

859 self.opened -= 1 

860 

861 def OPEN_BRACK_action(self, localctx: RuleContext, actionIndex: int): 

862 if actionIndex == 3: 

863 self.opened += 1 

864 

865 def CLOSE_BRACK_action(self, localctx: RuleContext, actionIndex: int): 

866 if actionIndex == 4: 

867 self.opened -= 1 

868 

869 def OPEN_BRACE_action(self, localctx: RuleContext, actionIndex: int): 

870 if actionIndex == 5: 

871 self.opened += 1 

872 

873 def CLOSE_BRACE_action(self, localctx: RuleContext, actionIndex: int): 

874 if actionIndex == 6: 

875 self.opened -= 1 

876 

877 def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): 

878 if self._predicates is None: 

879 preds = dict() 

880 preds[38] = self.NEWLINE_sempred 

881 self._predicates = preds 

882 pred = self._predicates.get(ruleIndex, None) 

883 if pred is not None: 

884 return pred(localctx, predIndex) 

885 else: 

886 raise Exception("No registered predicate for:" + str(ruleIndex)) 

887 

888 def NEWLINE_sempred(self, localctx: RuleContext, predIndex: int): 

889 if predIndex == 0: 

890 return self.atStartOfInput()