blend-kit 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/dist/helper/ApiHelper.js +0 -0
  2. package/dist/helper/BasicHelper.js +28 -0
  3. package/dist/helper/CommonHelper.js +10 -0
  4. package/dist/helper/DataHelper.js +241 -0
  5. package/dist/helper/ExpressHelper.js +728 -0
  6. package/dist/helper/FrontEndApiHelper.js +485 -0
  7. package/dist/helper/FrontEndReactApiHelper.js +483 -0
  8. package/dist/helper/MongoHelper.js +143 -0
  9. package/dist/helper/RNHelper.js +560 -0
  10. package/dist/helper/ReactHelper.js +524 -0
  11. package/dist/helper/SectionHelper.js +152 -0
  12. package/dist/helper/fileHelper.js +127 -0
  13. package/dist/helper/grammarHelper/BlendApiGrammarHelper.js +48 -0
  14. package/dist/helper/grammarHelper/BlendBasicGrammarHelper.js +98 -0
  15. package/dist/helper/grammarHelper/BlendDataGrammarHelper.js +47 -0
  16. package/dist/helper/grammarHelper/BlendMDPGrammarHelper.js +29 -0
  17. package/dist/helper/grammarHelper/BlendMongoGrammarHelper.js +51 -0
  18. package/dist/helper/grammarHelper/BlendRNGrammarHelper.js +56 -0
  19. package/dist/helper/grammarHelper/BlendReactGrammarHelper.js +55 -0
  20. package/dist/helper/grammarHelper/GrammarErrorHelper.js +16 -0
  21. package/dist/index.js +159 -0
  22. package/dist/parser/blendApi/src/grammar/BlendApiLexer.js +201 -0
  23. package/dist/parser/blendApi/src/grammar/BlendApiListener.js +3 -0
  24. package/dist/parser/blendApi/src/grammar/BlendApiParser.js +961 -0
  25. package/dist/parser/blendData/src/grammar/BlendDataLexer.js +154 -0
  26. package/dist/parser/blendData/src/grammar/BlendDataListener.js +3 -0
  27. package/dist/parser/blendData/src/grammar/BlendDataParser.js +641 -0
  28. package/dist/parser/blendMDP/src/grammar/BlendMDPLexer.js +151 -0
  29. package/dist/parser/blendMDP/src/grammar/BlendMDPListener.js +3 -0
  30. package/dist/parser/blendMDP/src/grammar/BlendMDPParser.js +490 -0
  31. package/dist/parser/blendMongo/src/grammar/BlendMongoLexer.js +187 -0
  32. package/dist/parser/blendMongo/src/grammar/BlendMongoListener.js +3 -0
  33. package/dist/parser/blendMongo/src/grammar/BlendMongoParser.js +848 -0
  34. package/dist/parser/blendRN/src/grammar/BlendRNLexer.js +172 -0
  35. package/dist/parser/blendRN/src/grammar/BlendRNListener.js +3 -0
  36. package/dist/parser/blendRN/src/grammar/BlendRNParser.js +657 -0
  37. package/dist/parser/blendReact/src/grammar/BlendReactLexer.js +159 -0
  38. package/dist/parser/blendReact/src/grammar/BlendReactListener.js +3 -0
  39. package/dist/parser/blendReact/src/grammar/BlendReactParser.js +644 -0
  40. package/dist/parser/blendbasic/src/grammar/BlendBasicLexer.js +147 -0
  41. package/dist/parser/blendbasic/src/grammar/BlendBasicListener.js +3 -0
  42. package/dist/parser/blendbasic/src/grammar/BlendBasicParser.js +747 -0
  43. package/dist/src/app.js +76 -0
  44. package/dist/src/app.ts +54 -0
  45. package/dist/types/apiOperationTypes.js +13 -0
  46. package/dist/types/basicOperationTypes.js +2 -0
  47. package/dist/types/dataOperationTypes.js +2 -0
  48. package/dist/types/frontendOperationTypes.js +4 -0
  49. package/dist/types/generalTypes.js +0 -0
  50. package/dist/types/mongoOperationTypes.js +12 -0
  51. package/package.json +29 -0
  52. package/src/grammar/.antlr/ApiModuleLexer.interp +71 -0
  53. package/src/grammar/.antlr/ApiModuleLexer.java +194 -0
  54. package/src/grammar/.antlr/ApiModuleLexer.tokens +32 -0
  55. package/src/grammar/.antlr/BlendApi.interp +70 -0
  56. package/src/grammar/.antlr/BlendApi.tokens +44 -0
  57. package/src/grammar/.antlr/BlendApiLexer.interp +89 -0
  58. package/src/grammar/.antlr/BlendApiLexer.java +237 -0
  59. package/src/grammar/.antlr/BlendApiLexer.tokens +44 -0
  60. package/src/grammar/.antlr/BlendApiParser.java +767 -0
  61. package/src/grammar/.antlr/BlendBasic.interp +41 -0
  62. package/src/grammar/.antlr/BlendBasic.tokens +20 -0
  63. package/src/grammar/.antlr/BlendBasicLexer.interp +50 -0
  64. package/src/grammar/.antlr/BlendBasicLexer.java +179 -0
  65. package/src/grammar/.antlr/BlendBasicLexer.tokens +20 -0
  66. package/src/grammar/.antlr/BlendBasicParser.java +599 -0
  67. package/src/grammar/.antlr/BlendData.interp +50 -0
  68. package/src/grammar/.antlr/BlendData.tokens +29 -0
  69. package/src/grammar/.antlr/BlendDataLexer.interp +65 -0
  70. package/src/grammar/.antlr/BlendDataLexer.java +181 -0
  71. package/src/grammar/.antlr/BlendDataLexer.tokens +29 -0
  72. package/src/grammar/.antlr/BlendDataParser.java +520 -0
  73. package/src/grammar/.antlr/BlendMDP.interp +45 -0
  74. package/src/grammar/.antlr/BlendMDP.tokens +25 -0
  75. package/src/grammar/.antlr/BlendMDPLexer.interp +59 -0
  76. package/src/grammar/.antlr/BlendMDPLexer.java +178 -0
  77. package/src/grammar/.antlr/BlendMDPLexer.tokens +25 -0
  78. package/src/grammar/.antlr/BlendMDPParser.java +386 -0
  79. package/src/grammar/.antlr/BlendMongo.interp +65 -0
  80. package/src/grammar/.antlr/BlendMongo.tokens +41 -0
  81. package/src/grammar/.antlr/BlendMongoLexer.interp +83 -0
  82. package/src/grammar/.antlr/BlendMongoLexer.java +219 -0
  83. package/src/grammar/.antlr/BlendMongoLexer.tokens +41 -0
  84. package/src/grammar/.antlr/BlendMongoParser.java +669 -0
  85. package/src/grammar/.antlr/BlendRN.interp +53 -0
  86. package/src/grammar/.antlr/BlendRN.tokens +31 -0
  87. package/src/grammar/.antlr/BlendRNLexer.interp +71 -0
  88. package/src/grammar/.antlr/BlendRNLexer.java +202 -0
  89. package/src/grammar/.antlr/BlendRNLexer.tokens +31 -0
  90. package/src/grammar/.antlr/BlendRNParser.java +542 -0
  91. package/src/grammar/.antlr/BlendReact.interp +49 -0
  92. package/src/grammar/.antlr/BlendReact.tokens +28 -0
  93. package/src/grammar/.antlr/BlendReactLexer.interp +65 -0
  94. package/src/grammar/.antlr/BlendReactLexer.java +188 -0
  95. package/src/grammar/.antlr/BlendReactLexer.tokens +28 -0
  96. package/src/grammar/.antlr/BlendReactParser.java +530 -0
  97. package/src/grammar/BlendApi.g4 +26 -0
  98. package/src/grammar/BlendBasic.g4 +16 -0
  99. package/src/grammar/BlendData.g4 +24 -0
  100. package/src/grammar/BlendMDP.g4 +12 -0
  101. package/src/grammar/BlendMongo.g4 +24 -0
  102. package/src/grammar/BlendRN.g4 +18 -0
  103. package/src/grammar/BlendReact.g4 +16 -0
  104. package/src/helper/BasicHelper.ts +35 -0
  105. package/src/helper/CommonHelper.ts +5 -0
  106. package/src/helper/DataHelper.ts +268 -0
  107. package/src/helper/ExpressHelper.ts +807 -0
  108. package/src/helper/FrontEndApiHelper.ts +526 -0
  109. package/src/helper/FrontEndReactApiHelper.ts +532 -0
  110. package/src/helper/MongoHelper.ts +165 -0
  111. package/src/helper/RNHelper.ts +651 -0
  112. package/src/helper/ReactHelper.ts +597 -0
  113. package/src/helper/SectionHelper.ts +154 -0
  114. package/src/helper/fileHelper.ts +111 -0
  115. package/src/helper/grammarHelper/BlendApiGrammarHelper.ts +45 -0
  116. package/src/helper/grammarHelper/BlendBasicGrammarHelper.ts +101 -0
  117. package/src/helper/grammarHelper/BlendDataGrammarHelper.ts +49 -0
  118. package/src/helper/grammarHelper/BlendMDPGrammarHelper.ts +33 -0
  119. package/src/helper/grammarHelper/BlendMongoGrammarHelper.ts +50 -0
  120. package/src/helper/grammarHelper/BlendRNGrammarHelper.ts +65 -0
  121. package/src/helper/grammarHelper/BlendReactGrammarHelper.ts +65 -0
  122. package/src/helper/grammarHelper/GrammarErrorHelper.ts +13 -0
  123. package/src/index.ts +168 -0
  124. package/src/parser/blendApi/src/grammar/BlendApi.interp +70 -0
  125. package/src/parser/blendApi/src/grammar/BlendApi.tokens +44 -0
  126. package/src/parser/blendApi/src/grammar/BlendApiLexer.interp +89 -0
  127. package/src/parser/blendApi/src/grammar/BlendApiLexer.tokens +44 -0
  128. package/src/parser/blendApi/src/grammar/BlendApiLexer.ts +193 -0
  129. package/src/parser/blendApi/src/grammar/BlendApiListener.ts +145 -0
  130. package/src/parser/blendApi/src/grammar/BlendApiParser.ts +968 -0
  131. package/src/parser/blendData/src/grammar/BlendData.interp +50 -0
  132. package/src/parser/blendData/src/grammar/BlendData.tokens +29 -0
  133. package/src/parser/blendData/src/grammar/BlendDataLexer.interp +65 -0
  134. package/src/parser/blendData/src/grammar/BlendDataLexer.tokens +29 -0
  135. package/src/parser/blendData/src/grammar/BlendDataLexer.ts +146 -0
  136. package/src/parser/blendData/src/grammar/BlendDataListener.ts +97 -0
  137. package/src/parser/blendData/src/grammar/BlendDataParser.ts +641 -0
  138. package/src/parser/blendMDP/src/grammar/BlendMDP.interp +45 -0
  139. package/src/parser/blendMDP/src/grammar/BlendMDP.tokens +25 -0
  140. package/src/parser/blendMDP/src/grammar/BlendMDPLexer.interp +59 -0
  141. package/src/parser/blendMDP/src/grammar/BlendMDPLexer.tokens +25 -0
  142. package/src/parser/blendMDP/src/grammar/BlendMDPLexer.ts +143 -0
  143. package/src/parser/blendMDP/src/grammar/BlendMDPListener.ts +85 -0
  144. package/src/parser/blendMDP/src/grammar/BlendMDPParser.ts +483 -0
  145. package/src/parser/blendMongo/src/grammar/BlendMongo.interp +65 -0
  146. package/src/parser/blendMongo/src/grammar/BlendMongo.tokens +41 -0
  147. package/src/parser/blendMongo/src/grammar/BlendMongoLexer.interp +83 -0
  148. package/src/parser/blendMongo/src/grammar/BlendMongoLexer.tokens +41 -0
  149. package/src/parser/blendMongo/src/grammar/BlendMongoLexer.ts +179 -0
  150. package/src/parser/blendMongo/src/grammar/BlendMongoListener.ts +133 -0
  151. package/src/parser/blendMongo/src/grammar/BlendMongoParser.ts +849 -0
  152. package/src/parser/blendRN/src/grammar/BlendRN.interp +53 -0
  153. package/src/parser/blendRN/src/grammar/BlendRN.tokens +31 -0
  154. package/src/parser/blendRN/src/grammar/BlendRNLexer.interp +71 -0
  155. package/src/parser/blendRN/src/grammar/BlendRNLexer.tokens +31 -0
  156. package/src/parser/blendRN/src/grammar/BlendRNLexer.ts +164 -0
  157. package/src/parser/blendRN/src/grammar/BlendRNListener.ts +85 -0
  158. package/src/parser/blendRN/src/grammar/BlendRNParser.ts +659 -0
  159. package/src/parser/blendReact/src/grammar/BlendReact.interp +49 -0
  160. package/src/parser/blendReact/src/grammar/BlendReact.tokens +28 -0
  161. package/src/parser/blendReact/src/grammar/BlendReactLexer.interp +65 -0
  162. package/src/parser/blendReact/src/grammar/BlendReactLexer.tokens +28 -0
  163. package/src/parser/blendReact/src/grammar/BlendReactLexer.ts +151 -0
  164. package/src/parser/blendReact/src/grammar/BlendReactListener.ts +85 -0
  165. package/src/parser/blendReact/src/grammar/BlendReactParser.ts +646 -0
  166. package/src/parser/blendbasic/src/grammar/BlendBasic.interp +41 -0
  167. package/src/parser/blendbasic/src/grammar/BlendBasic.tokens +20 -0
  168. package/src/parser/blendbasic/src/grammar/BlendBasicLexer.interp +50 -0
  169. package/src/parser/blendbasic/src/grammar/BlendBasicLexer.tokens +20 -0
  170. package/src/parser/blendbasic/src/grammar/BlendBasicLexer.ts +139 -0
  171. package/src/parser/blendbasic/src/grammar/BlendBasicListener.ts +109 -0
  172. package/src/parser/blendbasic/src/grammar/BlendBasicParser.ts +747 -0
  173. package/src/types/apiOperationTypes.ts +43 -0
  174. package/src/types/basicOperationTypes.ts +15 -0
  175. package/src/types/dataOperationTypes.ts +20 -0
  176. package/src/types/frontendOperationTypes.ts +92 -0
  177. package/src/types/generalTypes.ts +0 -0
  178. package/src/types/mongoOperationTypes.ts +36 -0
  179. package/template/.env.dev +1 -0
  180. package/template/package.json +36 -0
  181. package/template/src/app.js +76 -0
  182. package/template/src/app.ts +54 -0
  183. package/template/src/config/app.config.js +0 -0
  184. package/template/src/config/app.config.ts +0 -0
  185. package/template/src/config/database.config.js +6 -0
  186. package/template/src/config/database.config.ts +4 -0
  187. package/template/src/data/interfaces.js +2 -0
  188. package/template/src/data/interfaces.ts +23 -0
  189. package/template/src/middlewares/auth.js +22 -0
  190. package/template/src/middlewares/auth.ts +21 -0
  191. package/template/src/models/Database.js +10 -0
  192. package/template/src/models/Database.ts +8 -0
  193. package/template/src/models/User/Permission.model.js +13 -0
  194. package/template/src/models/User/Permission.model.ts +14 -0
  195. package/template/src/models/User/Role.model.js +13 -0
  196. package/template/src/models/User/Role.model.ts +14 -0
  197. package/template/src/models/User/User.model.js +17 -0
  198. package/template/src/models/User/User.model.ts +18 -0
  199. package/template/src/routes/User.routes.js +47 -0
  200. package/template/src/routes/User.routes.ts +41 -0
  201. package/template/src/routes/common/common.routes.config.js +14 -0
  202. package/template/src/routes/common/common.routes.config.ts +15 -0
  203. package/template/src/services/User/User.service.js +75 -0
  204. package/template/src/services/User/User.service.ts +68 -0
  205. package/template/src/services/User/api.data.js +72 -0
  206. package/template/src/services/User/api.data.ts +79 -0
  207. package/template/src/services/User/api.interface.js +3 -0
  208. package/template/src/services/User/api.interface.ts +10 -0
  209. package/template/tsconfig.json +10 -0
  210. package/tsconfig.json +13 -0
@@ -0,0 +1,659 @@
1
+ // Generated from src/grammar/BlendRN.g4 by ANTLR 4.9.0-SNAPSHOT
2
+
3
+
4
+ import { ATN } from "antlr4ts/atn/ATN";
5
+ import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
6
+ import { FailedPredicateException } from "antlr4ts/FailedPredicateException";
7
+ import { NotNull } from "antlr4ts/Decorators";
8
+ import { NoViableAltException } from "antlr4ts/NoViableAltException";
9
+ import { Override } from "antlr4ts/Decorators";
10
+ import { Parser } from "antlr4ts/Parser";
11
+ import { ParserRuleContext } from "antlr4ts/ParserRuleContext";
12
+ import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator";
13
+ import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener";
14
+ import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor";
15
+ import { RecognitionException } from "antlr4ts/RecognitionException";
16
+ import { RuleContext } from "antlr4ts/RuleContext";
17
+ //import { RuleVersion } from "antlr4ts/RuleVersion";
18
+ import { TerminalNode } from "antlr4ts/tree/TerminalNode";
19
+ import { Token } from "antlr4ts/Token";
20
+ import { TokenStream } from "antlr4ts/TokenStream";
21
+ import { Vocabulary } from "antlr4ts/Vocabulary";
22
+ import { VocabularyImpl } from "antlr4ts/VocabularyImpl";
23
+
24
+ import * as Utils from "antlr4ts/misc/Utils";
25
+
26
+ import { BlendRNListener } from "./BlendRNListener";
27
+
28
+ export class BlendRNParser extends Parser {
29
+ public static readonly T__0 = 1;
30
+ public static readonly T__1 = 2;
31
+ public static readonly T__2 = 3;
32
+ public static readonly T__3 = 4;
33
+ public static readonly T__4 = 5;
34
+ public static readonly T__5 = 6;
35
+ public static readonly T__6 = 7;
36
+ public static readonly T__7 = 8;
37
+ public static readonly T__8 = 9;
38
+ public static readonly T__9 = 10;
39
+ public static readonly T__10 = 11;
40
+ public static readonly T__11 = 12;
41
+ public static readonly T__12 = 13;
42
+ public static readonly LAYOUT_TYPE = 14;
43
+ public static readonly PATH_IDENTIFIER = 15;
44
+ public static readonly IDENTIFIER = 16;
45
+ public static readonly CAPITAL_IDENTIFIER = 17;
46
+ public static readonly WS = 18;
47
+ public static readonly RULE_program = 0;
48
+ public static readonly RULE_moduleDefinition = 1;
49
+ public static readonly RULE_screenDefenition = 2;
50
+ public static readonly RULE_componentDefenition = 3;
51
+ public static readonly RULE_layoutDefinition = 4;
52
+ public static readonly RULE_pageDefinition = 5;
53
+ // tslint:disable:no-trailing-whitespace
54
+ public static readonly ruleNames: string[] = [
55
+ "program", "moduleDefinition", "screenDefenition", "componentDefenition",
56
+ "layoutDefinition", "pageDefinition",
57
+ ];
58
+
59
+ private static readonly _LITERAL_NAMES: Array<string | undefined> = [
60
+ undefined, "'module'", "'screen'", "','", "'under'", "'component'", "'layout'",
61
+ "'('", "')'", "'type'", "'{'", "'}'", "'page'", "'view'",
62
+ ];
63
+ private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
64
+ undefined, undefined, undefined, undefined, undefined, undefined, undefined,
65
+ undefined, undefined, undefined, undefined, undefined, undefined, undefined,
66
+ "LAYOUT_TYPE", "PATH_IDENTIFIER", "IDENTIFIER", "CAPITAL_IDENTIFIER",
67
+ "WS",
68
+ ];
69
+ public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(BlendRNParser._LITERAL_NAMES, BlendRNParser._SYMBOLIC_NAMES, []);
70
+
71
+ // @Override
72
+ // @NotNull
73
+ public get vocabulary(): Vocabulary {
74
+ return BlendRNParser.VOCABULARY;
75
+ }
76
+ // tslint:enable:no-trailing-whitespace
77
+
78
+ // @Override
79
+ public get grammarFileName(): string { return "BlendRN.g4"; }
80
+
81
+ // @Override
82
+ public get ruleNames(): string[] { return BlendRNParser.ruleNames; }
83
+
84
+ // @Override
85
+ public get serializedATN(): string { return BlendRNParser._serializedATN; }
86
+
87
+ protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {
88
+ return new FailedPredicateException(this, predicate, message);
89
+ }
90
+
91
+ constructor(input: TokenStream) {
92
+ super(input);
93
+ this._interp = new ParserATNSimulator(BlendRNParser._ATN, this);
94
+ }
95
+ // @RuleVersion(0)
96
+ public program(): ProgramContext {
97
+ let _localctx: ProgramContext = new ProgramContext(this._ctx, this.state);
98
+ this.enterRule(_localctx, 0, BlendRNParser.RULE_program);
99
+ let _la: number;
100
+ try {
101
+ this.enterOuterAlt(_localctx, 1);
102
+ {
103
+ this.state = 12;
104
+ this.moduleDefinition();
105
+ this.state = 16;
106
+ this._errHandler.sync(this);
107
+ _la = this._input.LA(1);
108
+ while (_la === BlendRNParser.T__4) {
109
+ {
110
+ {
111
+ this.state = 13;
112
+ this.componentDefenition();
113
+ }
114
+ }
115
+ this.state = 18;
116
+ this._errHandler.sync(this);
117
+ _la = this._input.LA(1);
118
+ }
119
+ this.state = 22;
120
+ this._errHandler.sync(this);
121
+ _la = this._input.LA(1);
122
+ while (_la === BlendRNParser.T__1) {
123
+ {
124
+ {
125
+ this.state = 19;
126
+ this.screenDefenition();
127
+ }
128
+ }
129
+ this.state = 24;
130
+ this._errHandler.sync(this);
131
+ _la = this._input.LA(1);
132
+ }
133
+ this.state = 28;
134
+ this._errHandler.sync(this);
135
+ _la = this._input.LA(1);
136
+ while (_la === BlendRNParser.T__5) {
137
+ {
138
+ {
139
+ this.state = 25;
140
+ this.layoutDefinition();
141
+ }
142
+ }
143
+ this.state = 30;
144
+ this._errHandler.sync(this);
145
+ _la = this._input.LA(1);
146
+ }
147
+ }
148
+ }
149
+ catch (re) {
150
+ if (re instanceof RecognitionException) {
151
+ _localctx.exception = re;
152
+ this._errHandler.reportError(this, re);
153
+ this._errHandler.recover(this, re);
154
+ } else {
155
+ throw re;
156
+ }
157
+ }
158
+ finally {
159
+ this.exitRule();
160
+ }
161
+ return _localctx;
162
+ }
163
+ // @RuleVersion(0)
164
+ public moduleDefinition(): ModuleDefinitionContext {
165
+ let _localctx: ModuleDefinitionContext = new ModuleDefinitionContext(this._ctx, this.state);
166
+ this.enterRule(_localctx, 2, BlendRNParser.RULE_moduleDefinition);
167
+ try {
168
+ this.enterOuterAlt(_localctx, 1);
169
+ {
170
+ this.state = 31;
171
+ this.match(BlendRNParser.T__0);
172
+ this.state = 32;
173
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
174
+ }
175
+ }
176
+ catch (re) {
177
+ if (re instanceof RecognitionException) {
178
+ _localctx.exception = re;
179
+ this._errHandler.reportError(this, re);
180
+ this._errHandler.recover(this, re);
181
+ } else {
182
+ throw re;
183
+ }
184
+ }
185
+ finally {
186
+ this.exitRule();
187
+ }
188
+ return _localctx;
189
+ }
190
+ // @RuleVersion(0)
191
+ public screenDefenition(): ScreenDefenitionContext {
192
+ let _localctx: ScreenDefenitionContext = new ScreenDefenitionContext(this._ctx, this.state);
193
+ this.enterRule(_localctx, 4, BlendRNParser.RULE_screenDefenition);
194
+ let _la: number;
195
+ try {
196
+ this.enterOuterAlt(_localctx, 1);
197
+ {
198
+ this.state = 34;
199
+ this.match(BlendRNParser.T__1);
200
+ this.state = 35;
201
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
202
+ this.state = 40;
203
+ this._errHandler.sync(this);
204
+ _la = this._input.LA(1);
205
+ while (_la === BlendRNParser.T__2) {
206
+ {
207
+ {
208
+ this.state = 36;
209
+ this.match(BlendRNParser.T__2);
210
+ this.state = 37;
211
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
212
+ }
213
+ }
214
+ this.state = 42;
215
+ this._errHandler.sync(this);
216
+ _la = this._input.LA(1);
217
+ }
218
+ this.state = 43;
219
+ this.match(BlendRNParser.T__3);
220
+ this.state = 44;
221
+ this.match(BlendRNParser.PATH_IDENTIFIER);
222
+ }
223
+ }
224
+ catch (re) {
225
+ if (re instanceof RecognitionException) {
226
+ _localctx.exception = re;
227
+ this._errHandler.reportError(this, re);
228
+ this._errHandler.recover(this, re);
229
+ } else {
230
+ throw re;
231
+ }
232
+ }
233
+ finally {
234
+ this.exitRule();
235
+ }
236
+ return _localctx;
237
+ }
238
+ // @RuleVersion(0)
239
+ public componentDefenition(): ComponentDefenitionContext {
240
+ let _localctx: ComponentDefenitionContext = new ComponentDefenitionContext(this._ctx, this.state);
241
+ this.enterRule(_localctx, 6, BlendRNParser.RULE_componentDefenition);
242
+ let _la: number;
243
+ try {
244
+ this.enterOuterAlt(_localctx, 1);
245
+ {
246
+ this.state = 46;
247
+ this.match(BlendRNParser.T__4);
248
+ this.state = 47;
249
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
250
+ this.state = 52;
251
+ this._errHandler.sync(this);
252
+ _la = this._input.LA(1);
253
+ while (_la === BlendRNParser.T__2) {
254
+ {
255
+ {
256
+ this.state = 48;
257
+ this.match(BlendRNParser.T__2);
258
+ this.state = 49;
259
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
260
+ }
261
+ }
262
+ this.state = 54;
263
+ this._errHandler.sync(this);
264
+ _la = this._input.LA(1);
265
+ }
266
+ this.state = 55;
267
+ this.match(BlendRNParser.T__3);
268
+ this.state = 56;
269
+ this.match(BlendRNParser.PATH_IDENTIFIER);
270
+ }
271
+ }
272
+ catch (re) {
273
+ if (re instanceof RecognitionException) {
274
+ _localctx.exception = re;
275
+ this._errHandler.reportError(this, re);
276
+ this._errHandler.recover(this, re);
277
+ } else {
278
+ throw re;
279
+ }
280
+ }
281
+ finally {
282
+ this.exitRule();
283
+ }
284
+ return _localctx;
285
+ }
286
+ // @RuleVersion(0)
287
+ public layoutDefinition(): LayoutDefinitionContext {
288
+ let _localctx: LayoutDefinitionContext = new LayoutDefinitionContext(this._ctx, this.state);
289
+ this.enterRule(_localctx, 8, BlendRNParser.RULE_layoutDefinition);
290
+ let _la: number;
291
+ try {
292
+ this.enterOuterAlt(_localctx, 1);
293
+ {
294
+ this.state = 58;
295
+ this.match(BlendRNParser.T__5);
296
+ this.state = 59;
297
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
298
+ this.state = 60;
299
+ this.match(BlendRNParser.T__6);
300
+ this.state = 61;
301
+ this.match(BlendRNParser.PATH_IDENTIFIER);
302
+ this.state = 62;
303
+ this.match(BlendRNParser.T__7);
304
+ this.state = 63;
305
+ this.match(BlendRNParser.T__8);
306
+ this.state = 64;
307
+ this.match(BlendRNParser.T__6);
308
+ this.state = 65;
309
+ this.match(BlendRNParser.LAYOUT_TYPE);
310
+ this.state = 66;
311
+ this.match(BlendRNParser.T__7);
312
+ this.state = 67;
313
+ this.match(BlendRNParser.T__9);
314
+ this.state = 71;
315
+ this._errHandler.sync(this);
316
+ _la = this._input.LA(1);
317
+ while (_la === BlendRNParser.T__11) {
318
+ {
319
+ {
320
+ this.state = 68;
321
+ this.pageDefinition();
322
+ }
323
+ }
324
+ this.state = 73;
325
+ this._errHandler.sync(this);
326
+ _la = this._input.LA(1);
327
+ }
328
+ this.state = 77;
329
+ this._errHandler.sync(this);
330
+ _la = this._input.LA(1);
331
+ while (_la === BlendRNParser.T__5) {
332
+ {
333
+ {
334
+ this.state = 74;
335
+ this.layoutDefinition();
336
+ }
337
+ }
338
+ this.state = 79;
339
+ this._errHandler.sync(this);
340
+ _la = this._input.LA(1);
341
+ }
342
+ this.state = 80;
343
+ this.match(BlendRNParser.T__10);
344
+ }
345
+ }
346
+ catch (re) {
347
+ if (re instanceof RecognitionException) {
348
+ _localctx.exception = re;
349
+ this._errHandler.reportError(this, re);
350
+ this._errHandler.recover(this, re);
351
+ } else {
352
+ throw re;
353
+ }
354
+ }
355
+ finally {
356
+ this.exitRule();
357
+ }
358
+ return _localctx;
359
+ }
360
+ // @RuleVersion(0)
361
+ public pageDefinition(): PageDefinitionContext {
362
+ let _localctx: PageDefinitionContext = new PageDefinitionContext(this._ctx, this.state);
363
+ this.enterRule(_localctx, 10, BlendRNParser.RULE_pageDefinition);
364
+ try {
365
+ this.enterOuterAlt(_localctx, 1);
366
+ {
367
+ this.state = 82;
368
+ this.match(BlendRNParser.T__11);
369
+ this.state = 83;
370
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
371
+ this.state = 84;
372
+ this.match(BlendRNParser.T__6);
373
+ this.state = 85;
374
+ this.match(BlendRNParser.PATH_IDENTIFIER);
375
+ this.state = 86;
376
+ this.match(BlendRNParser.T__7);
377
+ this.state = 87;
378
+ this.match(BlendRNParser.T__12);
379
+ this.state = 88;
380
+ this.match(BlendRNParser.T__6);
381
+ this.state = 89;
382
+ this.match(BlendRNParser.CAPITAL_IDENTIFIER);
383
+ this.state = 90;
384
+ this.match(BlendRNParser.T__7);
385
+ }
386
+ }
387
+ catch (re) {
388
+ if (re instanceof RecognitionException) {
389
+ _localctx.exception = re;
390
+ this._errHandler.reportError(this, re);
391
+ this._errHandler.recover(this, re);
392
+ } else {
393
+ throw re;
394
+ }
395
+ }
396
+ finally {
397
+ this.exitRule();
398
+ }
399
+ return _localctx;
400
+ }
401
+
402
+ public static readonly _serializedATN: string =
403
+ "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x14_\x04\x02" +
404
+ "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" +
405
+ "\t\x07\x03\x02\x03\x02\x07\x02\x11\n\x02\f\x02\x0E\x02\x14\v\x02\x03\x02" +
406
+ "\x07\x02\x17\n\x02\f\x02\x0E\x02\x1A\v\x02\x03\x02\x07\x02\x1D\n\x02\f" +
407
+ "\x02\x0E\x02 \v\x02\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03" +
408
+ "\x04\x07\x04)\n\x04\f\x04\x0E\x04,\v\x04\x03\x04\x03\x04\x03\x04\x03\x05" +
409
+ "\x03\x05\x03\x05\x03\x05\x07\x055\n\x05\f\x05\x0E\x058\v\x05\x03\x05\x03" +
410
+ "\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" +
411
+ "\x06\x03\x06\x03\x06\x03\x06\x07\x06H\n\x06\f\x06\x0E\x06K\v\x06\x03\x06" +
412
+ "\x07\x06N\n\x06\f\x06\x0E\x06Q\v\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03" +
413
+ "\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x02" +
414
+ "\x02\x02\b\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x02\x02\x02_\x02" +
415
+ "\x0E\x03\x02\x02\x02\x04!\x03\x02\x02\x02\x06$\x03\x02\x02\x02\b0\x03" +
416
+ "\x02\x02\x02\n<\x03\x02\x02\x02\fT\x03\x02\x02\x02\x0E\x12\x05\x04\x03" +
417
+ "\x02\x0F\x11\x05\b\x05\x02\x10\x0F\x03\x02\x02\x02\x11\x14\x03\x02\x02" +
418
+ "\x02\x12\x10\x03\x02\x02\x02\x12\x13\x03\x02\x02\x02\x13\x18\x03\x02\x02" +
419
+ "\x02\x14\x12\x03\x02\x02\x02\x15\x17\x05\x06\x04\x02\x16\x15\x03\x02\x02" +
420
+ "\x02\x17\x1A\x03\x02\x02\x02\x18\x16\x03\x02\x02\x02\x18\x19\x03\x02\x02" +
421
+ "\x02\x19\x1E\x03\x02\x02\x02\x1A\x18\x03\x02\x02\x02\x1B\x1D\x05\n\x06" +
422
+ "\x02\x1C\x1B\x03\x02\x02\x02\x1D \x03\x02\x02\x02\x1E\x1C\x03\x02\x02" +
423
+ "\x02\x1E\x1F\x03\x02\x02\x02\x1F\x03\x03\x02\x02\x02 \x1E\x03\x02\x02" +
424
+ "\x02!\"\x07\x03\x02\x02\"#\x07\x13\x02\x02#\x05\x03\x02\x02\x02$%\x07" +
425
+ "\x04\x02\x02%*\x07\x13\x02\x02&\'\x07\x05\x02\x02\')\x07\x13\x02\x02(" +
426
+ "&\x03\x02\x02\x02),\x03\x02\x02\x02*(\x03\x02\x02\x02*+\x03\x02\x02\x02" +
427
+ "+-\x03\x02\x02\x02,*\x03\x02\x02\x02-.\x07\x06\x02\x02./\x07\x11\x02\x02" +
428
+ "/\x07\x03\x02\x02\x0201\x07\x07\x02\x0216\x07\x13\x02\x0223\x07\x05\x02" +
429
+ "\x0235\x07\x13\x02\x0242\x03\x02\x02\x0258\x03\x02\x02\x0264\x03\x02\x02" +
430
+ "\x0267\x03\x02\x02\x0279\x03\x02\x02\x0286\x03\x02\x02\x029:\x07\x06\x02" +
431
+ "\x02:;\x07\x11\x02\x02;\t\x03\x02\x02\x02<=\x07\b\x02\x02=>\x07\x13\x02" +
432
+ "\x02>?\x07\t\x02\x02?@\x07\x11\x02\x02@A\x07\n\x02\x02AB\x07\v\x02\x02" +
433
+ "BC\x07\t\x02\x02CD\x07\x10\x02\x02DE\x07\n\x02\x02EI\x07\f\x02\x02FH\x05" +
434
+ "\f\x07\x02GF\x03\x02\x02\x02HK\x03\x02\x02\x02IG\x03\x02\x02\x02IJ\x03" +
435
+ "\x02\x02\x02JO\x03\x02\x02\x02KI\x03\x02\x02\x02LN\x05\n\x06\x02ML\x03" +
436
+ "\x02\x02\x02NQ\x03\x02\x02\x02OM\x03\x02\x02\x02OP\x03\x02\x02\x02PR\x03" +
437
+ "\x02\x02\x02QO\x03\x02\x02\x02RS\x07\r\x02\x02S\v\x03\x02\x02\x02TU\x07" +
438
+ "\x0E\x02\x02UV\x07\x13\x02\x02VW\x07\t\x02\x02WX\x07\x11\x02\x02XY\x07" +
439
+ "\n\x02\x02YZ\x07\x0F\x02\x02Z[\x07\t\x02\x02[\\\x07\x13\x02\x02\\]\x07" +
440
+ "\n\x02\x02]\r\x03\x02\x02\x02\t\x12\x18\x1E*6IO";
441
+ public static __ATN: ATN;
442
+ public static get _ATN(): ATN {
443
+ if (!BlendRNParser.__ATN) {
444
+ BlendRNParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(BlendRNParser._serializedATN));
445
+ }
446
+
447
+ return BlendRNParser.__ATN;
448
+ }
449
+
450
+ }
451
+
452
+ export class ProgramContext extends ParserRuleContext {
453
+ public moduleDefinition(): ModuleDefinitionContext {
454
+ return this.getRuleContext(0, ModuleDefinitionContext);
455
+ }
456
+ public componentDefenition(): ComponentDefenitionContext[];
457
+ public componentDefenition(i: number): ComponentDefenitionContext;
458
+ public componentDefenition(i?: number): ComponentDefenitionContext | ComponentDefenitionContext[] {
459
+ if (i === undefined) {
460
+ return this.getRuleContexts(ComponentDefenitionContext);
461
+ } else {
462
+ return this.getRuleContext(i, ComponentDefenitionContext);
463
+ }
464
+ }
465
+ public screenDefenition(): ScreenDefenitionContext[];
466
+ public screenDefenition(i: number): ScreenDefenitionContext;
467
+ public screenDefenition(i?: number): ScreenDefenitionContext | ScreenDefenitionContext[] {
468
+ if (i === undefined) {
469
+ return this.getRuleContexts(ScreenDefenitionContext);
470
+ } else {
471
+ return this.getRuleContext(i, ScreenDefenitionContext);
472
+ }
473
+ }
474
+ public layoutDefinition(): LayoutDefinitionContext[];
475
+ public layoutDefinition(i: number): LayoutDefinitionContext;
476
+ public layoutDefinition(i?: number): LayoutDefinitionContext | LayoutDefinitionContext[] {
477
+ if (i === undefined) {
478
+ return this.getRuleContexts(LayoutDefinitionContext);
479
+ } else {
480
+ return this.getRuleContext(i, LayoutDefinitionContext);
481
+ }
482
+ }
483
+ constructor(parent: ParserRuleContext | undefined, invokingState: number) {
484
+ super(parent, invokingState);
485
+ }
486
+ // @Override
487
+ public get ruleIndex(): number { return BlendRNParser.RULE_program; }
488
+ // @Override
489
+ public enterRule(listener: BlendRNListener): void {
490
+ if (listener.enterProgram) {
491
+ listener.enterProgram(this);
492
+ }
493
+ }
494
+ // @Override
495
+ public exitRule(listener: BlendRNListener): void {
496
+ if (listener.exitProgram) {
497
+ listener.exitProgram(this);
498
+ }
499
+ }
500
+ }
501
+
502
+
503
+ export class ModuleDefinitionContext extends ParserRuleContext {
504
+ public CAPITAL_IDENTIFIER(): TerminalNode { return this.getToken(BlendRNParser.CAPITAL_IDENTIFIER, 0); }
505
+ constructor(parent: ParserRuleContext | undefined, invokingState: number) {
506
+ super(parent, invokingState);
507
+ }
508
+ // @Override
509
+ public get ruleIndex(): number { return BlendRNParser.RULE_moduleDefinition; }
510
+ // @Override
511
+ public enterRule(listener: BlendRNListener): void {
512
+ if (listener.enterModuleDefinition) {
513
+ listener.enterModuleDefinition(this);
514
+ }
515
+ }
516
+ // @Override
517
+ public exitRule(listener: BlendRNListener): void {
518
+ if (listener.exitModuleDefinition) {
519
+ listener.exitModuleDefinition(this);
520
+ }
521
+ }
522
+ }
523
+
524
+
525
+ export class ScreenDefenitionContext extends ParserRuleContext {
526
+ public CAPITAL_IDENTIFIER(): TerminalNode[];
527
+ public CAPITAL_IDENTIFIER(i: number): TerminalNode;
528
+ public CAPITAL_IDENTIFIER(i?: number): TerminalNode | TerminalNode[] {
529
+ if (i === undefined) {
530
+ return this.getTokens(BlendRNParser.CAPITAL_IDENTIFIER);
531
+ } else {
532
+ return this.getToken(BlendRNParser.CAPITAL_IDENTIFIER, i);
533
+ }
534
+ }
535
+ public PATH_IDENTIFIER(): TerminalNode { return this.getToken(BlendRNParser.PATH_IDENTIFIER, 0); }
536
+ constructor(parent: ParserRuleContext | undefined, invokingState: number) {
537
+ super(parent, invokingState);
538
+ }
539
+ // @Override
540
+ public get ruleIndex(): number { return BlendRNParser.RULE_screenDefenition; }
541
+ // @Override
542
+ public enterRule(listener: BlendRNListener): void {
543
+ if (listener.enterScreenDefenition) {
544
+ listener.enterScreenDefenition(this);
545
+ }
546
+ }
547
+ // @Override
548
+ public exitRule(listener: BlendRNListener): void {
549
+ if (listener.exitScreenDefenition) {
550
+ listener.exitScreenDefenition(this);
551
+ }
552
+ }
553
+ }
554
+
555
+
556
+ export class ComponentDefenitionContext extends ParserRuleContext {
557
+ public CAPITAL_IDENTIFIER(): TerminalNode[];
558
+ public CAPITAL_IDENTIFIER(i: number): TerminalNode;
559
+ public CAPITAL_IDENTIFIER(i?: number): TerminalNode | TerminalNode[] {
560
+ if (i === undefined) {
561
+ return this.getTokens(BlendRNParser.CAPITAL_IDENTIFIER);
562
+ } else {
563
+ return this.getToken(BlendRNParser.CAPITAL_IDENTIFIER, i);
564
+ }
565
+ }
566
+ public PATH_IDENTIFIER(): TerminalNode { return this.getToken(BlendRNParser.PATH_IDENTIFIER, 0); }
567
+ constructor(parent: ParserRuleContext | undefined, invokingState: number) {
568
+ super(parent, invokingState);
569
+ }
570
+ // @Override
571
+ public get ruleIndex(): number { return BlendRNParser.RULE_componentDefenition; }
572
+ // @Override
573
+ public enterRule(listener: BlendRNListener): void {
574
+ if (listener.enterComponentDefenition) {
575
+ listener.enterComponentDefenition(this);
576
+ }
577
+ }
578
+ // @Override
579
+ public exitRule(listener: BlendRNListener): void {
580
+ if (listener.exitComponentDefenition) {
581
+ listener.exitComponentDefenition(this);
582
+ }
583
+ }
584
+ }
585
+
586
+
587
+ export class LayoutDefinitionContext extends ParserRuleContext {
588
+ public CAPITAL_IDENTIFIER(): TerminalNode { return this.getToken(BlendRNParser.CAPITAL_IDENTIFIER, 0); }
589
+ public PATH_IDENTIFIER(): TerminalNode { return this.getToken(BlendRNParser.PATH_IDENTIFIER, 0); }
590
+ public LAYOUT_TYPE(): TerminalNode { return this.getToken(BlendRNParser.LAYOUT_TYPE, 0); }
591
+ public pageDefinition(): PageDefinitionContext[];
592
+ public pageDefinition(i: number): PageDefinitionContext;
593
+ public pageDefinition(i?: number): PageDefinitionContext | PageDefinitionContext[] {
594
+ if (i === undefined) {
595
+ return this.getRuleContexts(PageDefinitionContext);
596
+ } else {
597
+ return this.getRuleContext(i, PageDefinitionContext);
598
+ }
599
+ }
600
+ public layoutDefinition(): LayoutDefinitionContext[];
601
+ public layoutDefinition(i: number): LayoutDefinitionContext;
602
+ public layoutDefinition(i?: number): LayoutDefinitionContext | LayoutDefinitionContext[] {
603
+ if (i === undefined) {
604
+ return this.getRuleContexts(LayoutDefinitionContext);
605
+ } else {
606
+ return this.getRuleContext(i, LayoutDefinitionContext);
607
+ }
608
+ }
609
+ constructor(parent: ParserRuleContext | undefined, invokingState: number) {
610
+ super(parent, invokingState);
611
+ }
612
+ // @Override
613
+ public get ruleIndex(): number { return BlendRNParser.RULE_layoutDefinition; }
614
+ // @Override
615
+ public enterRule(listener: BlendRNListener): void {
616
+ if (listener.enterLayoutDefinition) {
617
+ listener.enterLayoutDefinition(this);
618
+ }
619
+ }
620
+ // @Override
621
+ public exitRule(listener: BlendRNListener): void {
622
+ if (listener.exitLayoutDefinition) {
623
+ listener.exitLayoutDefinition(this);
624
+ }
625
+ }
626
+ }
627
+
628
+
629
+ export class PageDefinitionContext extends ParserRuleContext {
630
+ public CAPITAL_IDENTIFIER(): TerminalNode[];
631
+ public CAPITAL_IDENTIFIER(i: number): TerminalNode;
632
+ public CAPITAL_IDENTIFIER(i?: number): TerminalNode | TerminalNode[] {
633
+ if (i === undefined) {
634
+ return this.getTokens(BlendRNParser.CAPITAL_IDENTIFIER);
635
+ } else {
636
+ return this.getToken(BlendRNParser.CAPITAL_IDENTIFIER, i);
637
+ }
638
+ }
639
+ public PATH_IDENTIFIER(): TerminalNode { return this.getToken(BlendRNParser.PATH_IDENTIFIER, 0); }
640
+ constructor(parent: ParserRuleContext | undefined, invokingState: number) {
641
+ super(parent, invokingState);
642
+ }
643
+ // @Override
644
+ public get ruleIndex(): number { return BlendRNParser.RULE_pageDefinition; }
645
+ // @Override
646
+ public enterRule(listener: BlendRNListener): void {
647
+ if (listener.enterPageDefinition) {
648
+ listener.enterPageDefinition(this);
649
+ }
650
+ }
651
+ // @Override
652
+ public exitRule(listener: BlendRNListener): void {
653
+ if (listener.exitPageDefinition) {
654
+ listener.exitPageDefinition(this);
655
+ }
656
+ }
657
+ }
658
+
659
+
@@ -0,0 +1,49 @@
1
+ token literal names:
2
+ null
3
+ 'module'
4
+ 'screen'
5
+ ','
6
+ 'under'
7
+ 'component'
8
+ 'layout'
9
+ '('
10
+ ')'
11
+ '{'
12
+ '}'
13
+ 'page'
14
+ 'view'
15
+ null
16
+ null
17
+ null
18
+ null
19
+
20
+ token symbolic names:
21
+ null
22
+ null
23
+ null
24
+ null
25
+ null
26
+ null
27
+ null
28
+ null
29
+ null
30
+ null
31
+ null
32
+ null
33
+ null
34
+ PATH_IDENTIFIER
35
+ IDENTIFIER
36
+ CAPITAL_IDENTIFIER
37
+ WS
38
+
39
+ rule names:
40
+ program
41
+ moduleDefinition
42
+ screenDefenition
43
+ componentDefenition
44
+ layoutDefinition
45
+ pageDefinition
46
+
47
+
48
+ atn:
49
+ [3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 18, 91, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 3, 2, 3, 2, 7, 2, 17, 10, 2, 12, 2, 14, 2, 20, 11, 2, 3, 2, 7, 2, 23, 10, 2, 12, 2, 14, 2, 26, 11, 2, 3, 2, 7, 2, 29, 10, 2, 12, 2, 14, 2, 32, 11, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 41, 10, 4, 12, 4, 14, 4, 44, 11, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 7, 5, 53, 10, 5, 12, 5, 14, 5, 56, 11, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 68, 10, 6, 12, 6, 14, 6, 71, 11, 6, 3, 6, 7, 6, 74, 10, 6, 12, 6, 14, 6, 77, 11, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 2, 2, 2, 8, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 2, 2, 2, 91, 2, 14, 3, 2, 2, 2, 4, 33, 3, 2, 2, 2, 6, 36, 3, 2, 2, 2, 8, 48, 3, 2, 2, 2, 10, 60, 3, 2, 2, 2, 12, 80, 3, 2, 2, 2, 14, 18, 5, 4, 3, 2, 15, 17, 5, 8, 5, 2, 16, 15, 3, 2, 2, 2, 17, 20, 3, 2, 2, 2, 18, 16, 3, 2, 2, 2, 18, 19, 3, 2, 2, 2, 19, 24, 3, 2, 2, 2, 20, 18, 3, 2, 2, 2, 21, 23, 5, 6, 4, 2, 22, 21, 3, 2, 2, 2, 23, 26, 3, 2, 2, 2, 24, 22, 3, 2, 2, 2, 24, 25, 3, 2, 2, 2, 25, 30, 3, 2, 2, 2, 26, 24, 3, 2, 2, 2, 27, 29, 5, 10, 6, 2, 28, 27, 3, 2, 2, 2, 29, 32, 3, 2, 2, 2, 30, 28, 3, 2, 2, 2, 30, 31, 3, 2, 2, 2, 31, 3, 3, 2, 2, 2, 32, 30, 3, 2, 2, 2, 33, 34, 7, 3, 2, 2, 34, 35, 7, 17, 2, 2, 35, 5, 3, 2, 2, 2, 36, 37, 7, 4, 2, 2, 37, 42, 7, 17, 2, 2, 38, 39, 7, 5, 2, 2, 39, 41, 7, 17, 2, 2, 40, 38, 3, 2, 2, 2, 41, 44, 3, 2, 2, 2, 42, 40, 3, 2, 2, 2, 42, 43, 3, 2, 2, 2, 43, 45, 3, 2, 2, 2, 44, 42, 3, 2, 2, 2, 45, 46, 7, 6, 2, 2, 46, 47, 7, 15, 2, 2, 47, 7, 3, 2, 2, 2, 48, 49, 7, 7, 2, 2, 49, 54, 7, 17, 2, 2, 50, 51, 7, 5, 2, 2, 51, 53, 7, 17, 2, 2, 52, 50, 3, 2, 2, 2, 53, 56, 3, 2, 2, 2, 54, 52, 3, 2, 2, 2, 54, 55, 3, 2, 2, 2, 55, 57, 3, 2, 2, 2, 56, 54, 3, 2, 2, 2, 57, 58, 7, 6, 2, 2, 58, 59, 7, 15, 2, 2, 59, 9, 3, 2, 2, 2, 60, 61, 7, 8, 2, 2, 61, 62, 7, 17, 2, 2, 62, 63, 7, 9, 2, 2, 63, 64, 7, 15, 2, 2, 64, 65, 7, 10, 2, 2, 65, 69, 7, 11, 2, 2, 66, 68, 5, 12, 7, 2, 67, 66, 3, 2, 2, 2, 68, 71, 3, 2, 2, 2, 69, 67, 3, 2, 2, 2, 69, 70, 3, 2, 2, 2, 70, 75, 3, 2, 2, 2, 71, 69, 3, 2, 2, 2, 72, 74, 5, 10, 6, 2, 73, 72, 3, 2, 2, 2, 74, 77, 3, 2, 2, 2, 75, 73, 3, 2, 2, 2, 75, 76, 3, 2, 2, 2, 76, 78, 3, 2, 2, 2, 77, 75, 3, 2, 2, 2, 78, 79, 7, 12, 2, 2, 79, 11, 3, 2, 2, 2, 80, 81, 7, 13, 2, 2, 81, 82, 7, 17, 2, 2, 82, 83, 7, 9, 2, 2, 83, 84, 7, 15, 2, 2, 84, 85, 7, 10, 2, 2, 85, 86, 7, 14, 2, 2, 86, 87, 7, 9, 2, 2, 87, 88, 7, 17, 2, 2, 88, 89, 7, 10, 2, 2, 89, 13, 3, 2, 2, 2, 9, 18, 24, 30, 42, 54, 69, 75]