online-compiler-widget 0.0.4 → 1.0.3

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 (161) hide show
  1. package/dist/abap-CrvW7_qN.js +1398 -0
  2. package/dist/apex-BAOI8p1v.js +327 -0
  3. package/dist/assets/css.worker-Cb0JI69t.js +93 -0
  4. package/dist/assets/html.worker-BNFZMwEc.js +470 -0
  5. package/dist/assets/json.worker-BCybXpia.js +58 -0
  6. package/dist/assets/ts.worker-DAVh1bw1.js +67731 -0
  7. package/dist/azcli-BlCk_UqW.js +68 -0
  8. package/dist/bat-DPoEelVx.js +100 -0
  9. package/dist/bicep-Cp1F394l.js +102 -0
  10. package/dist/cameligo-CWqtSlQs.js +174 -0
  11. package/dist/clojure-CKBp32Gf.js +761 -0
  12. package/dist/coffee-CDo6vc-J.js +232 -0
  13. package/dist/cpp-DokufPgf.js +389 -0
  14. package/dist/csharp-BQi3szM0.js +326 -0
  15. package/dist/csp-BSGtCCZ-.js +53 -0
  16. package/dist/css-DEPFDJfb.js +187 -0
  17. package/dist/cssMode-nHrB9Mnr.js +141 -0
  18. package/dist/cypher-DAb1vOxS.js +263 -0
  19. package/dist/dart-C8p4jewR.js +281 -0
  20. package/dist/dockerfile-DP0iLFPN.js +130 -0
  21. package/dist/ecl-BDQHA6fi.js +456 -0
  22. package/dist/elixir-D4II6kDM.js +569 -0
  23. package/dist/flow9-StcnL-VB.js +142 -0
  24. package/dist/freemarker2-BoiXdkJM.js +982 -0
  25. package/dist/fsharp-DdUVp3EN.js +217 -0
  26. package/dist/go-D1-I258M.js +218 -0
  27. package/dist/graphql-DWkL3f8U.js +151 -0
  28. package/dist/handlebars-C7PJzkmo.js +412 -0
  29. package/dist/hcl-D_0MNifv.js +183 -0
  30. package/dist/html-D_xe_tUa.js +301 -0
  31. package/dist/htmlMode-Dk_luXu_.js +152 -0
  32. package/dist/index-Ds0EJmOd.js +129200 -0
  33. package/dist/index.js +14 -0
  34. package/dist/ini-C4I2-MT7.js +71 -0
  35. package/dist/java-OBvaP_SS.js +232 -0
  36. package/dist/javascript-CUK67ITD.js +70 -0
  37. package/dist/jsonMode-BIAYTpVF.js +569 -0
  38. package/dist/julia-BmDH8Kkf.js +511 -0
  39. package/dist/kotlin-Dhu5AGOD.js +252 -0
  40. package/dist/less-CzmjXREq.js +162 -0
  41. package/dist/lexon-CV2c4pN9.js +157 -0
  42. package/dist/liquid-Cgsk8EmK.js +233 -0
  43. package/dist/lspLanguageFeatures-HqO1l9Me.js +1458 -0
  44. package/dist/lua-CFY5U8qF.js +162 -0
  45. package/dist/m3-BL_AnZVh.js +210 -0
  46. package/dist/markdown-CWKQPXCv.js +229 -0
  47. package/dist/mdx-QboWmT4M.js +158 -0
  48. package/dist/mips-ButYmJ5E.js +198 -0
  49. package/dist/msdax-C3cnXqDh.js +375 -0
  50. package/dist/mysql-YlSHaf6G.js +878 -0
  51. package/dist/objective-c-Dwnlproe.js +183 -0
  52. package/dist/pascal-UzGbSWEN.js +251 -0
  53. package/dist/pascaligo-CslTgu68.js +164 -0
  54. package/dist/perl-oj6r_mgw.js +626 -0
  55. package/dist/pgsql-DSBO0Mev.js +851 -0
  56. package/dist/php-YzCD--7j.js +500 -0
  57. package/dist/pla-CmylB8vQ.js +137 -0
  58. package/dist/postiats-CLFW5gNY.js +907 -0
  59. package/dist/powerquery-CmOWUvlh.js +890 -0
  60. package/dist/powershell-fHQcmBLK.js +239 -0
  61. package/dist/protobuf-p5BArb-9.js +420 -0
  62. package/dist/pug-gVdUDvqf.js +402 -0
  63. package/dist/python-kIZaMFF7.js +294 -0
  64. package/dist/qsharp-DnrWSUlt.js +301 -0
  65. package/dist/r-Cv309K2z.js +243 -0
  66. package/dist/razor-ms2cCMGp.js +543 -0
  67. package/dist/redis-DTcS4wMj.js +302 -0
  68. package/dist/redshift-hLxZVESM.js +809 -0
  69. package/dist/restructuredtext-C898lK4f.js +174 -0
  70. package/dist/ruby-CgKtnJIQ.js +511 -0
  71. package/dist/rust-bj8oxVnh.js +343 -0
  72. package/dist/sb-DWynz26l.js +115 -0
  73. package/dist/scala-BL5z1UEd.js +370 -0
  74. package/dist/scheme-DUJsH6VU.js +108 -0
  75. package/dist/scss-CxjmhvaL.js +262 -0
  76. package/dist/shell-D14Zs1dF.js +221 -0
  77. package/dist/solidity-WyRm-BGK.js +1367 -0
  78. package/dist/sophia-CKk-_Oa5.js +199 -0
  79. package/dist/sparql-DHtmINMZ.js +201 -0
  80. package/dist/sql-Dqaj5JHC.js +853 -0
  81. package/dist/st-Bj2IIaop.js +416 -0
  82. package/dist/style.css +1 -0
  83. package/dist/swift-DwxP72iM.js +312 -0
  84. package/dist/systemverilog-D7wJfuql.js +576 -0
  85. package/dist/tcl-0ApMt-eC.js +232 -0
  86. package/dist/tsMode-BiXWAJYS.js +946 -0
  87. package/dist/twig-DxwbdmvQ.js +392 -0
  88. package/dist/typescript-ByMmjZ38.js +336 -0
  89. package/dist/typespec-Fd-JwSuS.js +117 -0
  90. package/dist/vb-CxuyYE1I.js +372 -0
  91. package/dist/wgsl-DoEGc31J.js +439 -0
  92. package/dist/xml-iOXTZgNN.js +88 -0
  93. package/dist/yaml-RRlyy-QW.js +199 -0
  94. package/package.json +41 -36
  95. package/FileStorage/obj/FileStorage.csproj.EntityFrameworkCore.targets +0 -28
  96. package/README.md +0 -1
  97. package/eslint.config.js +0 -26
  98. package/index.html +0 -13
  99. package/index.tsx +0 -3
  100. package/openapitools.json +0 -7
  101. package/pnpm-workspace.yaml +0 -2
  102. package/public/vite.svg +0 -1
  103. package/src/App.css +0 -49
  104. package/src/App.tsx +0 -84
  105. package/src/api/.openapi-generator/FILES +0 -25
  106. package/src/api/.openapi-generator/VERSION +0 -1
  107. package/src/api/.openapi-generator-ignore +0 -23
  108. package/src/api/api.ts +0 -1312
  109. package/src/api/base.ts +0 -62
  110. package/src/api/common.ts +0 -113
  111. package/src/api/configuration.ts +0 -121
  112. package/src/api/docs/CompilationError.md +0 -26
  113. package/src/api/docs/CompileRequest.md +0 -22
  114. package/src/api/docs/CompileResult.md +0 -28
  115. package/src/api/docs/CompilerApi.md +0 -263
  116. package/src/api/docs/CreateFileDto.md +0 -22
  117. package/src/api/docs/CreateProjectRequest.md +0 -20
  118. package/src/api/docs/FileApi.md +0 -274
  119. package/src/api/docs/ProcessStatus.md +0 -28
  120. package/src/api/docs/ProjectApi.md +0 -362
  121. package/src/api/docs/ProjectInfo.md +0 -24
  122. package/src/api/docs/ProjectStats.md +0 -28
  123. package/src/api/docs/RenameFileDto.md +0 -20
  124. package/src/api/docs/RenameProjectRequest.md +0 -20
  125. package/src/api/docs/RunRequest.md +0 -24
  126. package/src/api/docs/RunResult.md +0 -30
  127. package/src/api/docs/RunningProjectInfo.md +0 -26
  128. package/src/api/docs/UpdateFileDto.md +0 -20
  129. package/src/api/git_push.sh +0 -57
  130. package/src/api/index.ts +0 -18
  131. package/src/assets/Badge.svg +0 -17
  132. package/src/assets/closeIcon.svg +0 -20
  133. package/src/assets/documentIcon.svg +0 -11
  134. package/src/assets/history.svg +0 -11
  135. package/src/assets/output.svg +0 -12
  136. package/src/assets/plus.svg +0 -20
  137. package/src/assets/react.svg +0 -1
  138. package/src/assets/save-icon.svg +0 -11
  139. package/src/assets/shield.svg +0 -10
  140. package/src/assets/start.svg +0 -11
  141. package/src/assets/stop.svg +0 -11
  142. package/src/components/CompilerWidget.module.scss +0 -169
  143. package/src/components/CompilerWidget.tsx +0 -331
  144. package/src/components/FileExplorer.module.scss +0 -372
  145. package/src/components/FileExplorer.tsx +0 -285
  146. package/src/components/MonacoEditorWrapper.module.scss +0 -29
  147. package/src/components/MonacoEditorWrapper.tsx +0 -74
  148. package/src/components/OutputPanel.module.scss +0 -123
  149. package/src/components/OutputPanel.tsx +0 -53
  150. package/src/components/RunContainer.module.scss +0 -150
  151. package/src/components/RunContainer.tsx +0 -34
  152. package/src/hooks/useCompiler.ts +0 -228
  153. package/src/hooks/useInitialNodes.ts +0 -0
  154. package/src/index.css +0 -78
  155. package/src/main.tsx +0 -8
  156. package/src/types/EditorDocument.ts +0 -8
  157. package/swagger.json +0 -1020
  158. package/tsconfig.app.json +0 -29
  159. package/tsconfig.json +0 -7
  160. package/tsconfig.node.json +0 -26
  161. package/vite.config.ts +0 -8
@@ -0,0 +1,416 @@
1
+ const e = {
2
+ comments: {
3
+ lineComment: "//",
4
+ blockComment: ["(*", "*)"]
5
+ },
6
+ brackets: [
7
+ ["{", "}"],
8
+ ["[", "]"],
9
+ ["(", ")"],
10
+ ["var", "end_var"],
11
+ ["var_input", "end_var"],
12
+ ["var_output", "end_var"],
13
+ ["var_in_out", "end_var"],
14
+ ["var_temp", "end_var"],
15
+ ["var_global", "end_var"],
16
+ ["var_access", "end_var"],
17
+ ["var_external", "end_var"],
18
+ ["type", "end_type"],
19
+ ["struct", "end_struct"],
20
+ ["program", "end_program"],
21
+ ["function", "end_function"],
22
+ ["function_block", "end_function_block"],
23
+ ["action", "end_action"],
24
+ ["step", "end_step"],
25
+ ["initial_step", "end_step"],
26
+ ["transaction", "end_transaction"],
27
+ ["configuration", "end_configuration"],
28
+ ["tcp", "end_tcp"],
29
+ ["recource", "end_recource"],
30
+ ["channel", "end_channel"],
31
+ ["library", "end_library"],
32
+ ["folder", "end_folder"],
33
+ ["binaries", "end_binaries"],
34
+ ["includes", "end_includes"],
35
+ ["sources", "end_sources"]
36
+ ],
37
+ autoClosingPairs: [
38
+ { open: "[", close: "]" },
39
+ { open: "{", close: "}" },
40
+ { open: "(", close: ")" },
41
+ { open: "/*", close: "*/" },
42
+ { open: "'", close: "'", notIn: ["string_sq"] },
43
+ { open: '"', close: '"', notIn: ["string_dq"] },
44
+ { open: "var_input", close: "end_var" },
45
+ { open: "var_output", close: "end_var" },
46
+ { open: "var_in_out", close: "end_var" },
47
+ { open: "var_temp", close: "end_var" },
48
+ { open: "var_global", close: "end_var" },
49
+ { open: "var_access", close: "end_var" },
50
+ { open: "var_external", close: "end_var" },
51
+ { open: "type", close: "end_type" },
52
+ { open: "struct", close: "end_struct" },
53
+ { open: "program", close: "end_program" },
54
+ { open: "function", close: "end_function" },
55
+ { open: "function_block", close: "end_function_block" },
56
+ { open: "action", close: "end_action" },
57
+ { open: "step", close: "end_step" },
58
+ { open: "initial_step", close: "end_step" },
59
+ { open: "transaction", close: "end_transaction" },
60
+ { open: "configuration", close: "end_configuration" },
61
+ { open: "tcp", close: "end_tcp" },
62
+ { open: "recource", close: "end_recource" },
63
+ { open: "channel", close: "end_channel" },
64
+ { open: "library", close: "end_library" },
65
+ { open: "folder", close: "end_folder" },
66
+ { open: "binaries", close: "end_binaries" },
67
+ { open: "includes", close: "end_includes" },
68
+ { open: "sources", close: "end_sources" }
69
+ ],
70
+ surroundingPairs: [
71
+ { open: "{", close: "}" },
72
+ { open: "[", close: "]" },
73
+ { open: "(", close: ")" },
74
+ { open: '"', close: '"' },
75
+ { open: "'", close: "'" },
76
+ { open: "var", close: "end_var" },
77
+ { open: "var_input", close: "end_var" },
78
+ { open: "var_output", close: "end_var" },
79
+ { open: "var_in_out", close: "end_var" },
80
+ { open: "var_temp", close: "end_var" },
81
+ { open: "var_global", close: "end_var" },
82
+ { open: "var_access", close: "end_var" },
83
+ { open: "var_external", close: "end_var" },
84
+ { open: "type", close: "end_type" },
85
+ { open: "struct", close: "end_struct" },
86
+ { open: "program", close: "end_program" },
87
+ { open: "function", close: "end_function" },
88
+ { open: "function_block", close: "end_function_block" },
89
+ { open: "action", close: "end_action" },
90
+ { open: "step", close: "end_step" },
91
+ { open: "initial_step", close: "end_step" },
92
+ { open: "transaction", close: "end_transaction" },
93
+ { open: "configuration", close: "end_configuration" },
94
+ { open: "tcp", close: "end_tcp" },
95
+ { open: "recource", close: "end_recource" },
96
+ { open: "channel", close: "end_channel" },
97
+ { open: "library", close: "end_library" },
98
+ { open: "folder", close: "end_folder" },
99
+ { open: "binaries", close: "end_binaries" },
100
+ { open: "includes", close: "end_includes" },
101
+ { open: "sources", close: "end_sources" }
102
+ ],
103
+ folding: {
104
+ markers: {
105
+ start: new RegExp("^\\s*#pragma\\s+region\\b"),
106
+ end: new RegExp("^\\s*#pragma\\s+endregion\\b")
107
+ }
108
+ }
109
+ }, n = {
110
+ defaultToken: "",
111
+ tokenPostfix: ".st",
112
+ ignoreCase: !0,
113
+ brackets: [
114
+ { token: "delimiter.curly", open: "{", close: "}" },
115
+ { token: "delimiter.parenthesis", open: "(", close: ")" },
116
+ { token: "delimiter.square", open: "[", close: "]" }
117
+ ],
118
+ keywords: [
119
+ "if",
120
+ "end_if",
121
+ "elsif",
122
+ "else",
123
+ "case",
124
+ "of",
125
+ "to",
126
+ "__try",
127
+ "__catch",
128
+ "__finally",
129
+ "do",
130
+ "with",
131
+ "by",
132
+ "while",
133
+ "repeat",
134
+ "end_while",
135
+ "end_repeat",
136
+ "end_case",
137
+ "for",
138
+ "end_for",
139
+ "task",
140
+ "retain",
141
+ "non_retain",
142
+ "constant",
143
+ "with",
144
+ "at",
145
+ "exit",
146
+ "return",
147
+ "interval",
148
+ "priority",
149
+ "address",
150
+ "port",
151
+ "on_channel",
152
+ "then",
153
+ "iec",
154
+ "file",
155
+ "uses",
156
+ "version",
157
+ "packagetype",
158
+ "displayname",
159
+ "copyright",
160
+ "summary",
161
+ "vendor",
162
+ "common_source",
163
+ "from",
164
+ "extends",
165
+ "implements"
166
+ ],
167
+ constant: ["false", "true", "null"],
168
+ defineKeywords: [
169
+ "var",
170
+ "var_input",
171
+ "var_output",
172
+ "var_in_out",
173
+ "var_temp",
174
+ "var_global",
175
+ "var_access",
176
+ "var_external",
177
+ "end_var",
178
+ "type",
179
+ "end_type",
180
+ "struct",
181
+ "end_struct",
182
+ "program",
183
+ "end_program",
184
+ "function",
185
+ "end_function",
186
+ "function_block",
187
+ "end_function_block",
188
+ "interface",
189
+ "end_interface",
190
+ "method",
191
+ "end_method",
192
+ "property",
193
+ "end_property",
194
+ "namespace",
195
+ "end_namespace",
196
+ "configuration",
197
+ "end_configuration",
198
+ "tcp",
199
+ "end_tcp",
200
+ "resource",
201
+ "end_resource",
202
+ "channel",
203
+ "end_channel",
204
+ "library",
205
+ "end_library",
206
+ "folder",
207
+ "end_folder",
208
+ "binaries",
209
+ "end_binaries",
210
+ "includes",
211
+ "end_includes",
212
+ "sources",
213
+ "end_sources",
214
+ "action",
215
+ "end_action",
216
+ "step",
217
+ "initial_step",
218
+ "end_step",
219
+ "transaction",
220
+ "end_transaction"
221
+ ],
222
+ typeKeywords: [
223
+ "int",
224
+ "sint",
225
+ "dint",
226
+ "lint",
227
+ "usint",
228
+ "uint",
229
+ "udint",
230
+ "ulint",
231
+ "real",
232
+ "lreal",
233
+ "time",
234
+ "date",
235
+ "time_of_day",
236
+ "date_and_time",
237
+ "string",
238
+ "bool",
239
+ "byte",
240
+ "word",
241
+ "dword",
242
+ "array",
243
+ "pointer",
244
+ "lword"
245
+ ],
246
+ operators: [
247
+ "=",
248
+ ">",
249
+ "<",
250
+ ":",
251
+ ":=",
252
+ "<=",
253
+ ">=",
254
+ "<>",
255
+ "&",
256
+ "+",
257
+ "-",
258
+ "*",
259
+ "**",
260
+ "MOD",
261
+ "^",
262
+ "or",
263
+ "and",
264
+ "not",
265
+ "xor",
266
+ "abs",
267
+ "acos",
268
+ "asin",
269
+ "atan",
270
+ "cos",
271
+ "exp",
272
+ "expt",
273
+ "ln",
274
+ "log",
275
+ "sin",
276
+ "sqrt",
277
+ "tan",
278
+ "sel",
279
+ "max",
280
+ "min",
281
+ "limit",
282
+ "mux",
283
+ "shl",
284
+ "shr",
285
+ "rol",
286
+ "ror",
287
+ "indexof",
288
+ "sizeof",
289
+ "adr",
290
+ "adrinst",
291
+ "bitadr",
292
+ "is_valid",
293
+ "ref",
294
+ "ref_to"
295
+ ],
296
+ builtinVariables: [],
297
+ builtinFunctions: [
298
+ "sr",
299
+ "rs",
300
+ "tp",
301
+ "ton",
302
+ "tof",
303
+ "eq",
304
+ "ge",
305
+ "le",
306
+ "lt",
307
+ "ne",
308
+ "round",
309
+ "trunc",
310
+ "ctd",
311
+ "сtu",
312
+ "ctud",
313
+ "r_trig",
314
+ "f_trig",
315
+ "move",
316
+ "concat",
317
+ "delete",
318
+ "find",
319
+ "insert",
320
+ "left",
321
+ "len",
322
+ "replace",
323
+ "right",
324
+ "rtc"
325
+ ],
326
+ // we include these common regular expressions
327
+ symbols: /[=><!~?:&|+\-*\/\^%]+/,
328
+ // C# style strings
329
+ escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
330
+ // The main tokenizer for our languages
331
+ tokenizer: {
332
+ root: [
333
+ [/(\.\.)/, "delimiter"],
334
+ [/\b(16#[0-9A-Fa-f\_]*)+\b/, "number.hex"],
335
+ [/\b(2#[01\_]+)+\b/, "number.binary"],
336
+ [/\b(8#[0-9\_]*)+\b/, "number.octal"],
337
+ [/\b\d*\.\d+([eE][\-+]?\d+)?\b/, "number.float"],
338
+ [/\b(L?REAL)#[0-9\_\.e]+\b/, "number.float"],
339
+ [/\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\_]+\b/, "number"],
340
+ [/\d+/, "number"],
341
+ [/\b(T|DT|TOD)#[0-9:-_shmyd]+\b/, "tag"],
342
+ [/\%(I|Q|M)(X|B|W|D|L)[0-9\.]+/, "tag"],
343
+ [/\%(I|Q|M)[0-9\.]*/, "tag"],
344
+ [/\b[A-Za-z]{1,6}#[0-9]+\b/, "tag"],
345
+ [/\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\b/, "predefined"],
346
+ [/\b[A_Za-z]+(_TO_)[A_Za-z]+\b/, "predefined"],
347
+ [/[;]/, "delimiter"],
348
+ [/[.]/, { token: "delimiter", next: "@params" }],
349
+ // identifiers and keywords
350
+ [
351
+ /[a-zA-Z_]\w*/,
352
+ {
353
+ cases: {
354
+ "@operators": "operators",
355
+ "@keywords": "keyword",
356
+ "@typeKeywords": "type",
357
+ "@defineKeywords": "variable",
358
+ "@constant": "constant",
359
+ "@builtinVariables": "predefined",
360
+ "@builtinFunctions": "predefined",
361
+ "@default": "identifier"
362
+ }
363
+ }
364
+ ],
365
+ { include: "@whitespace" },
366
+ [/[{}()\[\]]/, "@brackets"],
367
+ [/"([^"\\]|\\.)*$/, "string.invalid"],
368
+ // non-teminated string
369
+ [/"/, { token: "string.quote", bracket: "@open", next: "@string_dq" }],
370
+ [/'/, { token: "string.quote", bracket: "@open", next: "@string_sq" }],
371
+ [/'[^\\']'/, "string"],
372
+ [/(')(@escapes)(')/, ["string", "string.escape", "string"]],
373
+ [/'/, "string.invalid"]
374
+ ],
375
+ params: [
376
+ [/\b[A-Za-z0-9_]+\b(?=\()/, { token: "identifier", next: "@pop" }],
377
+ [/\b[A-Za-z0-9_]+\b/, "variable.name", "@pop"]
378
+ ],
379
+ comment: [
380
+ [/[^\/*]+/, "comment"],
381
+ [/\/\*/, "comment", "@push"],
382
+ // nested comment
383
+ ["\\*/", "comment", "@pop"],
384
+ [/[\/*]/, "comment"]
385
+ ],
386
+ comment2: [
387
+ [/[^\(*]+/, "comment"],
388
+ [/\(\*/, "comment", "@push"],
389
+ // nested comment
390
+ ["\\*\\)", "comment", "@pop"],
391
+ [/[\(*]/, "comment"]
392
+ ],
393
+ whitespace: [
394
+ [/[ \t\r\n]+/, "white"],
395
+ [/\/\/.*$/, "comment"],
396
+ [/\/\*/, "comment", "@comment"],
397
+ [/\(\*/, "comment", "@comment2"]
398
+ ],
399
+ string_dq: [
400
+ [/[^\\"]+/, "string"],
401
+ [/@escapes/, "string.escape"],
402
+ [/\\./, "string.escape.invalid"],
403
+ [/"/, { token: "string.quote", bracket: "@close", next: "@pop" }]
404
+ ],
405
+ string_sq: [
406
+ [/[^\\']+/, "string"],
407
+ [/@escapes/, "string.escape"],
408
+ [/\\./, "string.escape.invalid"],
409
+ [/'/, { token: "string.quote", bracket: "@close", next: "@pop" }]
410
+ ]
411
+ }
412
+ };
413
+ export {
414
+ e as conf,
415
+ n as language
416
+ };