@iris-code/core 0.1.0

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 (94) hide show
  1. package/README.md +38 -0
  2. package/dist/config.d.ts +147 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +550 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/csharp/analyser.d.ts +14 -0
  7. package/dist/csharp/analyser.d.ts.map +1 -0
  8. package/dist/csharp/analyser.js +436 -0
  9. package/dist/csharp/analyser.js.map +1 -0
  10. package/dist/csharp/lexer.d.ts +29 -0
  11. package/dist/csharp/lexer.d.ts.map +1 -0
  12. package/dist/csharp/lexer.js +182 -0
  13. package/dist/csharp/lexer.js.map +1 -0
  14. package/dist/duplicates.d.ts +53 -0
  15. package/dist/duplicates.d.ts.map +1 -0
  16. package/dist/duplicates.js +491 -0
  17. package/dist/duplicates.js.map +1 -0
  18. package/dist/fileAnalyser.d.ts +4 -0
  19. package/dist/fileAnalyser.d.ts.map +1 -0
  20. package/dist/fileAnalyser.js +8 -0
  21. package/dist/fileAnalyser.js.map +1 -0
  22. package/dist/fileNaming.d.ts +68 -0
  23. package/dist/fileNaming.d.ts.map +1 -0
  24. package/dist/fileNaming.js +343 -0
  25. package/dist/fileNaming.js.map +1 -0
  26. package/dist/gate.d.ts +49 -0
  27. package/dist/gate.d.ts.map +1 -0
  28. package/dist/gate.js +242 -0
  29. package/dist/gate.js.map +1 -0
  30. package/dist/go/analyser.d.ts +5 -0
  31. package/dist/go/analyser.d.ts.map +1 -0
  32. package/dist/go/analyser.js +576 -0
  33. package/dist/go/analyser.js.map +1 -0
  34. package/dist/guards.d.ts +16 -0
  35. package/dist/guards.d.ts.map +1 -0
  36. package/dist/guards.js +355 -0
  37. package/dist/guards.js.map +1 -0
  38. package/dist/index.d.ts +22 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +110 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/languages.d.ts +46 -0
  43. package/dist/languages.d.ts.map +1 -0
  44. package/dist/languages.js +155 -0
  45. package/dist/languages.js.map +1 -0
  46. package/dist/lines.d.ts +9 -0
  47. package/dist/lines.d.ts.map +1 -0
  48. package/dist/lines.js +58 -0
  49. package/dist/lines.js.map +1 -0
  50. package/dist/python/analyser.d.ts +5 -0
  51. package/dist/python/analyser.d.ts.map +1 -0
  52. package/dist/python/analyser.js +630 -0
  53. package/dist/python/analyser.js.map +1 -0
  54. package/dist/qualitySignals.d.ts +30 -0
  55. package/dist/qualitySignals.d.ts.map +1 -0
  56. package/dist/qualitySignals.js +101 -0
  57. package/dist/qualitySignals.js.map +1 -0
  58. package/dist/ruby/analyser.d.ts +5 -0
  59. package/dist/ruby/analyser.d.ts.map +1 -0
  60. package/dist/ruby/analyser.js +450 -0
  61. package/dist/ruby/analyser.js.map +1 -0
  62. package/dist/scoring.d.ts +4 -0
  63. package/dist/scoring.d.ts.map +1 -0
  64. package/dist/scoring.js +37 -0
  65. package/dist/scoring.js.map +1 -0
  66. package/dist/secrets.d.ts +5 -0
  67. package/dist/secrets.d.ts.map +1 -0
  68. package/dist/secrets.js +245 -0
  69. package/dist/secrets.js.map +1 -0
  70. package/dist/securityContext.d.ts +2 -0
  71. package/dist/securityContext.d.ts.map +1 -0
  72. package/dist/securityContext.js +16 -0
  73. package/dist/securityContext.js.map +1 -0
  74. package/dist/sfc.d.ts +32 -0
  75. package/dist/sfc.d.ts.map +1 -0
  76. package/dist/sfc.js +228 -0
  77. package/dist/sfc.js.map +1 -0
  78. package/dist/slop.d.ts +37 -0
  79. package/dist/slop.d.ts.map +1 -0
  80. package/dist/slop.js +81 -0
  81. package/dist/slop.js.map +1 -0
  82. package/dist/suppressions.d.ts +19 -0
  83. package/dist/suppressions.d.ts.map +1 -0
  84. package/dist/suppressions.js +152 -0
  85. package/dist/suppressions.js.map +1 -0
  86. package/dist/ts/analyser.d.ts +4 -0
  87. package/dist/ts/analyser.d.ts.map +1 -0
  88. package/dist/ts/analyser.js +769 -0
  89. package/dist/ts/analyser.js.map +1 -0
  90. package/dist/types.d.ts +139 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +46 -0
  93. package/dist/types.js.map +1 -0
  94. package/package.json +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { IrisConfig } from '../config';
2
+ import { LanguageAnalysis } from '../types';
3
+ export declare function extractGoThirdPartyImports(source: string): string[];
4
+ export declare function analyseGo(source: string, config: IrisConfig, filePath?: string): LanguageAnalysis;
5
+ //# sourceMappingURL=analyser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyser.d.ts","sourceRoot":"","sources":["../../src/go/analyser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAGtC,OAAO,EAML,gBAAgB,EACjB,MAAM,UAAU,CAAA;AA2KjB,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBnE;AAwXD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,SAAK,GAAG,gBAAgB,CAqC7F"}
@@ -0,0 +1,576 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractGoThirdPartyImports = extractGoThirdPartyImports;
4
+ exports.analyseGo = analyseGo;
5
+ const lines_1 = require("../lines");
6
+ const secrets_1 = require("../secrets");
7
+ const securityContext_1 = require("../securityContext");
8
+ const guards_1 = require("../guards");
9
+ const scoring_1 = require("../scoring");
10
+ // --- regex constants ---
11
+ // Top-level functions: func FuncName(
12
+ const GO_FUNC_RE = /^func\s+([A-Za-z_]\w*)\s*\(/gm;
13
+ // Methods: func (r *Receiver) MethodName(
14
+ const GO_METHOD_RE = /^func\s+\(\w*\s*\*?\w+\)\s+([A-Za-z_]\w*)\s*\(/gm;
15
+ // --- zeroed TS metrics (not applicable to Go) ---
16
+ const ZEROED_TS_METRICS = {
17
+ anyUsages: [],
18
+ tsIgnoreCount: 0,
19
+ tsExpectErrorCount: 0,
20
+ nonNullAssertions: 0,
21
+ typeAssertions: 0,
22
+ missingReturnTypes: 0,
23
+ };
24
+ // --- helpers ---
25
+ function stripCStyleComments(source) {
26
+ let result = '';
27
+ let i = 0;
28
+ const len = source.length;
29
+ while (i < len) {
30
+ const ch = source[i];
31
+ if (ch === '"' || ch === '`') {
32
+ const q = ch;
33
+ result += ch;
34
+ i++;
35
+ while (i < len) {
36
+ const c = source[i];
37
+ if (c === '\\') {
38
+ result += c + (source[i + 1] ?? '');
39
+ i += 2;
40
+ }
41
+ else {
42
+ result += c;
43
+ i++;
44
+ if (c === q)
45
+ break;
46
+ }
47
+ }
48
+ }
49
+ else if (ch === '/' && source[i + 1] === '/') {
50
+ while (i < len && source[i] !== '\n') {
51
+ result += ' ';
52
+ i++;
53
+ }
54
+ }
55
+ else if (ch === '/' && source[i + 1] === '*') {
56
+ result += ' ';
57
+ i++;
58
+ result += ' ';
59
+ i++;
60
+ while (i < len) {
61
+ if (source[i] === '*' && source[i + 1] === '/') {
62
+ result += ' ';
63
+ i += 2;
64
+ break;
65
+ }
66
+ result += source[i] === '\n' ? '\n' : ' ';
67
+ i++;
68
+ }
69
+ }
70
+ else {
71
+ result += ch;
72
+ i++;
73
+ }
74
+ }
75
+ return result;
76
+ }
77
+ function stripQuotedTextPreserveNewlines(source, quotes) {
78
+ const quoteSet = new Set(quotes);
79
+ let result = '';
80
+ let i = 0;
81
+ while (i < source.length) {
82
+ const ch = source[i];
83
+ if (!quoteSet.has(ch)) {
84
+ result += ch;
85
+ i++;
86
+ continue;
87
+ }
88
+ result += ' ';
89
+ i++;
90
+ while (i < source.length) {
91
+ const current = source[i];
92
+ if (current === '\n') {
93
+ result += '\n';
94
+ i++;
95
+ continue;
96
+ }
97
+ if (current === '\\') {
98
+ result += ' ';
99
+ if (i + 1 < source.length) {
100
+ result += source[i + 1] === '\n' ? '\n' : ' ';
101
+ }
102
+ i += 2;
103
+ continue;
104
+ }
105
+ result += ' ';
106
+ i++;
107
+ if (current === ch)
108
+ break;
109
+ }
110
+ }
111
+ return result;
112
+ }
113
+ // Keeps only regex SOURCE - the string/backtick literal passed to a regexp
114
+ // compile/match call - and blanks everything else (newlines preserved so
115
+ // offsets stay exact). The ReDoS heuristic runs over this so ordinary
116
+ // arithmetic `(a+b)*c` is never mistaken for a nested-quantifier regex. Go has
117
+ // no regex literals, so only compile-call arguments count.
118
+ const GO_REGEX_CALL_RE = /regexp\.(?:MustCompile|Compile|MustCompilePOSIX|CompilePOSIX|MatchString|Match)\s*\(\s*$/;
119
+ function goRegexOnlySource(source) {
120
+ const out = [];
121
+ const n = source.length;
122
+ let i = 0;
123
+ const blank = (ch) => (ch === '\n' ? '\n' : ' ');
124
+ while (i < n) {
125
+ const ch = source[i];
126
+ if (ch === '/' && source[i + 1] === '/') {
127
+ while (i < n && source[i] !== '\n') {
128
+ out.push(' ');
129
+ i++;
130
+ }
131
+ continue;
132
+ }
133
+ if (ch === '/' && source[i + 1] === '*') {
134
+ out.push(' ', ' ');
135
+ i += 2;
136
+ while (i < n && !(source[i] === '*' && source[i + 1] === '/')) {
137
+ out.push(blank(source[i]));
138
+ i++;
139
+ }
140
+ if (i < n) {
141
+ out.push(' ', ' ');
142
+ i += 2;
143
+ }
144
+ continue;
145
+ }
146
+ if (ch === '"' || ch === '`') {
147
+ const q = ch;
148
+ const isRegexArg = GO_REGEX_CALL_RE.test(source.slice(Math.max(0, i - 48), i));
149
+ out.push(' ');
150
+ i++;
151
+ while (i < n) {
152
+ const c = source[i];
153
+ if (q === '"' && c === '\\') {
154
+ out.push(isRegexArg ? c : ' ');
155
+ if (i + 1 < n)
156
+ out.push(isRegexArg ? source[i + 1] : blank(source[i + 1]));
157
+ i += 2;
158
+ continue;
159
+ }
160
+ if (c === q) {
161
+ out.push(' ');
162
+ i++;
163
+ break;
164
+ }
165
+ out.push(isRegexArg ? (c === '\n' ? '\n' : c) : blank(c));
166
+ i++;
167
+ }
168
+ continue;
169
+ }
170
+ out.push(blank(ch));
171
+ i++;
172
+ }
173
+ return out.join('');
174
+ }
175
+ function findGoFunctionEnd(lines, startLine) {
176
+ let depth = 0;
177
+ let foundOpen = false;
178
+ for (let i = startLine - 1; i < lines.length; i++) {
179
+ for (const ch of lines[i]) {
180
+ if (ch === '{') {
181
+ depth++;
182
+ foundOpen = true;
183
+ }
184
+ else if (ch === '}' && foundOpen) {
185
+ depth--;
186
+ if (depth === 0)
187
+ return i + 1;
188
+ }
189
+ }
190
+ if (foundOpen && depth === 0)
191
+ break;
192
+ }
193
+ return startLine;
194
+ }
195
+ // --- import detection ---
196
+ function isGoThirdParty(pkg) {
197
+ // Third-party packages have a dot in the root path segment (e.g. github.com, golang.org)
198
+ return pkg.split('/')[0].includes('.');
199
+ }
200
+ function extractGoThirdPartyImports(source) {
201
+ const imports = new Set();
202
+ // Single import: import "pkg" or import alias "pkg"
203
+ const singleRe = /^\s*import\s+(?:\w+\s+)?"([^"]+)"/gm;
204
+ singleRe.lastIndex = 0;
205
+ let m;
206
+ while ((m = singleRe.exec(source)) !== null) {
207
+ if (isGoThirdParty(m[1]))
208
+ imports.add(m[1]);
209
+ }
210
+ // Block import: import ( ... )
211
+ const blockRe = /import\s*\(([^)]+)\)/gs;
212
+ blockRe.lastIndex = 0;
213
+ let bm;
214
+ while ((bm = blockRe.exec(source)) !== null) {
215
+ const pkgRe = /(?:^\s*\w+\s+)?"([^"]+)"/gm;
216
+ let pm;
217
+ while ((pm = pkgRe.exec(bm[1])) !== null) {
218
+ if (isGoThirdParty(pm[1]))
219
+ imports.add(pm[1]);
220
+ }
221
+ }
222
+ return [...imports].sort();
223
+ }
224
+ // --- function detection ---
225
+ function detectGoFunctions(source) {
226
+ const stripped = stripCStyleComments(source);
227
+ const results = [];
228
+ const seen = new Set();
229
+ for (const re of [GO_FUNC_RE, GO_METHOD_RE]) {
230
+ re.lastIndex = 0;
231
+ let match;
232
+ while ((match = re.exec(stripped)) !== null) {
233
+ const name = match[1];
234
+ const line = (0, lines_1.lineOf)(source, match.index);
235
+ const key = `${name}:${line}`;
236
+ if (!seen.has(key)) {
237
+ seen.add(key);
238
+ results.push({ name, line });
239
+ }
240
+ }
241
+ }
242
+ return results.sort((a, b) => a.line - b.line);
243
+ }
244
+ // --- helpers ---
245
+ function extractParamInner(lines, startLineIdx) {
246
+ let collected = '';
247
+ let depth = 0;
248
+ let started = false;
249
+ for (let i = startLineIdx; i < lines.length; i++) {
250
+ const line = lines[i];
251
+ for (const ch of line) {
252
+ if (ch === '(') {
253
+ if (!started) {
254
+ started = true;
255
+ depth = 1;
256
+ }
257
+ else
258
+ depth++;
259
+ }
260
+ else if (ch === ')' && started) {
261
+ depth--;
262
+ if (depth === 0)
263
+ return collected;
264
+ else
265
+ collected += ch;
266
+ }
267
+ else if (started) {
268
+ collected += ch;
269
+ }
270
+ }
271
+ if (started)
272
+ collected += ' ';
273
+ }
274
+ return null;
275
+ }
276
+ // --- code smells ---
277
+ function detectGoCodeSmells(source, functions, lineCount, config, isTest = false) {
278
+ const lines = source.split('\n');
279
+ // Go "debug prints" — fmt.Print*, log.Print*, log.Fatal*, log.Panic*
280
+ const consoleLogs = [];
281
+ if (config.enableConsoleLogWarnings) {
282
+ // Scan comment-stripped source so a print call quoted in a comment is
283
+ // not flagged; the stripper preserves offsets, so lineOf stays accurate.
284
+ const logSource = stripCStyleComments(source);
285
+ const logRe = /\b(?:fmt|log)\.(?:Print|Println|Printf|Fatal|Fatalf|Fatalln|Panic|Panicf|Panicln)\s*\(/g;
286
+ logRe.lastIndex = 0;
287
+ let lm;
288
+ while ((lm = logRe.exec(logSource)) !== null) {
289
+ consoleLogs.push({ line: (0, lines_1.lineOf)(source, lm.index) });
290
+ }
291
+ }
292
+ // TODOs — Go uses // comments
293
+ const todos = [];
294
+ if (config.enableTodoDetection) {
295
+ const todoRe = /\/\/.*\b(TODO|FIXME|HACK)\b[:\s]*(.*)/;
296
+ lines.forEach((line, i) => {
297
+ const m = todoRe.exec(line);
298
+ if (m)
299
+ todos.push({ text: `${m[1]}: ${m[2].trim()}`.trim(), line: i + 1 });
300
+ });
301
+ }
302
+ // Deep nesting (indentation ≥ 8 spaces)
303
+ let deepNesting = 0;
304
+ for (let i = 0; i < functions.length; i++) {
305
+ const startIdx = functions[i].line;
306
+ const endIdx = (functions[i + 1]?.line ?? lineCount + 1) - 1;
307
+ const body = lines.slice(startIdx, endIdx);
308
+ const maxIndent = body.reduce((max, l) => {
309
+ const t = l.trimStart();
310
+ return t ? Math.max(max, l.length - t.length) : max;
311
+ }, 0);
312
+ if (maxIndent >= 8)
313
+ deepNesting++;
314
+ }
315
+ // Long parameter lists
316
+ const longParameterLists = [];
317
+ if (config.enableLongParamDetection) {
318
+ for (const fn of functions) {
319
+ const inner = extractParamInner(lines, fn.line - 1);
320
+ if (inner) {
321
+ const paramCount = inner.split(',').filter(p => p.trim()).length;
322
+ if (paramCount >= config.maxParameterCount) {
323
+ longParameterLists.push({ name: fn.name, paramCount, line: fn.line });
324
+ }
325
+ }
326
+ }
327
+ }
328
+ // Magic numbers
329
+ const magicNumbers = [];
330
+ if (config.enableMagicNumberDetection) {
331
+ // Matches named assignments that should not be flagged:
332
+ // const/var Name[Type] = number (explicit keyword)
333
+ // name[Type] := number (short var decl)
334
+ // Name = number (grouped const/var block — no keyword on line)
335
+ const namedAssignRe = /^\s*(?:(?:const|var)\s+\w+(?:\s+[\w[\]*]+)?\s*=|\w+(?:\s+[\w[\]*]+)?\s*:=|\w+\s*=)\s*-?[\d.]+\s*$/;
336
+ const seen = new Set();
337
+ const sanitizedLines = stripQuotedTextPreserveNewlines(stripCStyleComments(source), [`"`, '`']).split('\n');
338
+ sanitizedLines.forEach((stripped, i) => {
339
+ if (namedAssignRe.test(stripped))
340
+ return;
341
+ const numRe = /\b(\d+(?:\.\d+)?)\b/g;
342
+ let nm;
343
+ while ((nm = numRe.exec(stripped)) !== null) {
344
+ const n = nm[1];
345
+ const key = `${i + 1}:${n}`;
346
+ if (n !== '0' && n !== '1' && !seen.has(key)) {
347
+ magicNumbers.push({ value: n, line: i + 1 });
348
+ seen.add(key);
349
+ }
350
+ }
351
+ });
352
+ }
353
+ // --- unused vars and functions ---
354
+ const { unusedVars, unusedFunctions } = config.enableUnusedDetection
355
+ ? detectGoUnusedDeclarations(source, functions)
356
+ : { unusedVars: [], unusedFunctions: [] };
357
+ // --- security smells ---
358
+ const evalUsage = [];
359
+ const sqlConcatenation = [];
360
+ const insecureRandom = [];
361
+ const unsafeRegex = [];
362
+ const hardcodedLocalhost = [];
363
+ const disabledTlsVerification = [];
364
+ const debugFlagsEnabled = [];
365
+ const weakHashing = [];
366
+ const openRedirect = [];
367
+ if (config.enableSecuritySmells) {
368
+ const stripped = stripCStyleComments(source);
369
+ // Go has no eval() — evalUsage always stays empty
370
+ const sqlRe = /['"`][^'"`\n]*\b(?:SELECT|INSERT|UPDATE|DELETE|DROP)\b[^'"`\n]*['"`]\s*\+/g;
371
+ sqlRe.lastIndex = 0;
372
+ let sq;
373
+ while ((sq = sqlRe.exec(source)) !== null) {
374
+ sqlConcatenation.push({ line: (0, lines_1.lineOf)(source, sq.index) });
375
+ }
376
+ // fmt.Sprintf SQL injection: fmt.Sprintf("SELECT ... %s", val)
377
+ const sqlFmtRe = /fmt\.Sprintf\s*\(\s*['"`][^'"`\n]*\b(?:SELECT|INSERT|UPDATE|DELETE|DROP)\b/g;
378
+ sqlFmtRe.lastIndex = 0;
379
+ let sqf;
380
+ while ((sqf = sqlFmtRe.exec(source)) !== null) {
381
+ sqlConcatenation.push({ line: (0, lines_1.lineOf)(source, sqf.index) });
382
+ }
383
+ const rngRe = /\brand\.(?:Intn|Int63n|Int31n|Float32|Float64|Perm|Shuffle)\s*\(/g;
384
+ rngRe.lastIndex = 0;
385
+ let rn;
386
+ while ((rn = rngRe.exec(stripped)) !== null) {
387
+ if ((0, securityContext_1.hasSecurityContext)(stripped, rn.index)) {
388
+ insecureRandom.push({ line: (0, lines_1.lineOf)(source, rn.index) });
389
+ }
390
+ }
391
+ // Confine the nested-quantifier heuristic to regex source (compile-call
392
+ // args) so arithmetic like `(a+b)*c` is never flagged.
393
+ const regexSource = goRegexOnlySource(source);
394
+ const reRe = /\([^)\n]*[+*][^)\n]*\)[+*]/g;
395
+ reRe.lastIndex = 0;
396
+ let rx;
397
+ while ((rx = reRe.exec(regexSource)) !== null) {
398
+ unsafeRegex.push({ line: (0, lines_1.lineOf)(source, rx.index) });
399
+ }
400
+ if (!isTest) {
401
+ const localRe = /\blocalhost\b|127\.0\.0\.1/g;
402
+ localRe.lastIndex = 0;
403
+ let lh;
404
+ while ((lh = localRe.exec(stripped)) !== null) {
405
+ hardcodedLocalhost.push({ line: (0, lines_1.lineOf)(source, lh.index) });
406
+ }
407
+ }
408
+ const tlsRe = /InsecureSkipVerify\s*:\s*true/g;
409
+ tlsRe.lastIndex = 0;
410
+ let tl;
411
+ while ((tl = tlsRe.exec(stripped)) !== null) {
412
+ disabledTlsVerification.push({ line: (0, lines_1.lineOf)(source, tl.index) });
413
+ }
414
+ if (!isTest) {
415
+ const dbgRe = /\bdebug\s*:=\s*true\b/gi;
416
+ dbgRe.lastIndex = 0;
417
+ let db;
418
+ while ((db = dbgRe.exec(stripped)) !== null) {
419
+ debugFlagsEnabled.push({ line: (0, lines_1.lineOf)(source, db.index) });
420
+ }
421
+ }
422
+ const hashRe = /\b(?:md5|sha1)\.New\s*\(/g;
423
+ hashRe.lastIndex = 0;
424
+ let wh;
425
+ while ((wh = hashRe.exec(stripped)) !== null) {
426
+ weakHashing.push({ line: (0, lines_1.lineOf)(source, wh.index) });
427
+ }
428
+ const redirectRe = /\bhttp\.Redirect\s*\([^,]+,\s*[^,]+,\s*r\.(?:URL\.Query|FormValue|PostFormValue)/g;
429
+ redirectRe.lastIndex = 0;
430
+ let or;
431
+ while ((or = redirectRe.exec(stripped)) !== null) {
432
+ openRedirect.push({ line: (0, lines_1.lineOf)(source, or.index) });
433
+ }
434
+ }
435
+ return { consoleLogs, todos, deepNesting, longParameterLists, magicNumbers, unusedVars, unusedFunctions, hardcodedSecrets: [], bareSuppressions: [], duplicateBlocks: [], fileNamingViolations: [], evalUsage, sqlConcatenation, insecureRandom, unsafeRegex, hardcodedLocalhost, disabledTlsVerification, debugFlagsEnabled, weakHashing, openRedirect };
436
+ }
437
+ function detectGoUnusedDeclarations(source, functions) {
438
+ const lines = source.split('\n');
439
+ const unusedVars = [];
440
+ const unusedFunctions = [];
441
+ // --- unused variables ---
442
+ // Short var decls: name := value or name, name2 := values
443
+ const shortDeclRe = /^[ \t]*(\w+(?:\s*,\s*\w+)*)\s*:=/gm;
444
+ shortDeclRe.lastIndex = 0;
445
+ let sm;
446
+ while ((sm = shortDeclRe.exec(source)) !== null) {
447
+ const line = (0, lines_1.lineOf)(source, sm.index);
448
+ const names = sm[1].split(',').map(n => n.trim()).filter(n => n !== '_' && n !== '');
449
+ for (const name of names) {
450
+ const bodyWithoutDecl = lines.map((l, i) => (i === line - 1 ? '' : l)).join('\n');
451
+ if (!new RegExp(`\\b${name}\\b`).test(bodyWithoutDecl)) {
452
+ unusedVars.push({ name, line });
453
+ }
454
+ }
455
+ }
456
+ // Explicit var declarations: var name [type]
457
+ const varDeclRe = /^[ \t]*var\s+(\w+)\s/gm;
458
+ varDeclRe.lastIndex = 0;
459
+ let vd;
460
+ while ((vd = varDeclRe.exec(source)) !== null) {
461
+ const name = vd[1];
462
+ if (name === '_')
463
+ continue;
464
+ const line = (0, lines_1.lineOf)(source, vd.index);
465
+ const bodyWithoutDecl = lines.map((l, i) => (i === line - 1 ? '' : l)).join('\n');
466
+ if (!new RegExp(`\\b${name}\\b`).test(bodyWithoutDecl)) {
467
+ unusedVars.push({ name, line });
468
+ }
469
+ }
470
+ // --- unused functions ---
471
+ for (const fn of functions) {
472
+ // Exported (uppercase) functions may be called from outside — skip
473
+ if (/^[A-Z]/.test(fn.name))
474
+ continue;
475
+ // Go runtime calls these implicitly
476
+ if (fn.name === 'main' || fn.name === 'init')
477
+ continue;
478
+ const bodyWithoutDecl = lines.map((l, i) => (i === fn.line - 1 ? '' : l)).join('\n');
479
+ if (!new RegExp(`\\b${fn.name}\\b`).test(bodyWithoutDecl)) {
480
+ unusedFunctions.push({ name: fn.name, line: fn.line });
481
+ }
482
+ }
483
+ return { unusedVars, unusedFunctions };
484
+ }
485
+ // --- warnings ---
486
+ function detectGoWarnings(lineCount, functions, thirdPartyImports, source, config) {
487
+ const warnings = [];
488
+ const sev = (type, fallback) => config.severityOverrides[type] ?? fallback;
489
+ const warnLine = Math.round(config.fileLengthThreshold * 2 / 3);
490
+ if (lineCount > config.fileLengthThreshold) {
491
+ warnings.push({ type: 'file-too-long', message: `File is ${lineCount} lines (>${config.fileLengthThreshold})`, severity: sev('file-too-long', 'error') });
492
+ }
493
+ else if (lineCount > warnLine) {
494
+ warnings.push({ type: 'file-too-long', message: `File is ${lineCount} lines (>${warnLine})`, severity: sev('file-too-long', 'warning') });
495
+ }
496
+ const srcLines = source.split('\n');
497
+ const errorThreshold = config.functionLengthThreshold * 2;
498
+ for (const fn of functions) {
499
+ const endLine = findGoFunctionEnd(srcLines, fn.line);
500
+ const span = endLine - fn.line + 1;
501
+ if (span > errorThreshold) {
502
+ warnings.push({ type: 'function-too-long', message: `${fn.name} is ~${span} lines (>${errorThreshold})`, severity: sev('function-too-long', 'error'), line: fn.line });
503
+ }
504
+ else if (span > config.functionLengthThreshold) {
505
+ warnings.push({ type: 'function-too-long', message: `${fn.name} is ~${span} lines (>${config.functionLengthThreshold})`, severity: sev('function-too-long', 'warning'), line: fn.line });
506
+ }
507
+ }
508
+ if (functions.length > config.maxFunctionsPerFile) {
509
+ warnings.push({ type: 'too-many-functions', message: `${functions.length} functions in one file (>${config.maxFunctionsPerFile})`, severity: sev('too-many-functions', 'warning') });
510
+ }
511
+ if (thirdPartyImports.length > config.maxImportsPerFile) {
512
+ warnings.push({ type: 'too-many-imports', message: `${thirdPartyImports.length} third-party imports (>${config.maxImportsPerFile})`, severity: sev('too-many-imports', 'warning') });
513
+ }
514
+ // In Go, exported identifiers start with an uppercase letter
515
+ const hasExports = functions.some(f => /^[A-Z]/.test(f.name));
516
+ if (!hasExports && functions.length > 0) {
517
+ warnings.push({ type: 'no-exports', message: 'No exported functions detected', severity: sev('no-exports', 'info') });
518
+ }
519
+ return warnings;
520
+ }
521
+ // --- complexity ---
522
+ function scoreGoComplexity(source, codeLines, functions, thirdPartyImports) {
523
+ let score = 1;
524
+ const fnDensity = codeLines > 0 ? functions.length / (codeLines / 50) : 0;
525
+ score += Math.min(3, Math.floor(fnDensity));
526
+ const maxIndent = source.split('\n').reduce((max, line) => {
527
+ const trimmed = line.trimStart();
528
+ if (!trimmed)
529
+ return max;
530
+ return Math.max(max, line.length - trimmed.length);
531
+ }, 0);
532
+ score += Math.min(2, Math.floor(Math.floor(maxIndent / 2) / 3));
533
+ const cfCount = (source.match(/\b(if|else|for|select|switch|case|go\s+func|defer)\b/g) ?? []).length;
534
+ score += Math.min(2, Math.floor(cfCount / 10));
535
+ score += Math.min(2, Math.floor(thirdPartyImports.length / 3));
536
+ return Math.max(1, Math.min(10, score));
537
+ }
538
+ // --- health score ---
539
+ // Shared scorer in ../scoring.ts — Go passes zeroed TypeScript metrics.
540
+ // --- main export ---
541
+ function analyseGo(source, config, filePath = '') {
542
+ const rawLines = source.split('\n');
543
+ const lineCount = rawLines.length;
544
+ const blankLines = rawLines.filter(l => l.trim() === '').length;
545
+ const codeLines = lineCount - blankLines;
546
+ const allFunctions = detectGoFunctions(source);
547
+ const functions = config.ignoreFunctions.length > 0
548
+ ? allFunctions.filter(f => !config.ignoreFunctions.includes(f.name))
549
+ : allFunctions;
550
+ const thirdPartyImports = extractGoThirdPartyImports(source);
551
+ const complexityScore = scoreGoComplexity(source, codeLines, functions, thirdPartyImports);
552
+ const warnings = detectGoWarnings(lineCount, functions, thirdPartyImports, source, config);
553
+ const baseSmells = detectGoCodeSmells(source, functions, lineCount, config, (0, guards_1.isTestFile)(filePath));
554
+ const hardcodedSecrets = (0, secrets_1.detectHardcodedSecrets)(source, config, 'go', filePath);
555
+ const secretLines = new Set(hardcodedSecrets.map(s => s.line));
556
+ const codeSmells = {
557
+ ...baseSmells,
558
+ unusedVars: baseSmells.unusedVars.filter(v => !secretLines.has(v.line)),
559
+ hardcodedSecrets,
560
+ };
561
+ const healthScore = (0, scoring_1.computeHealthScore)(warnings, ZEROED_TS_METRICS, codeSmells, config);
562
+ return {
563
+ lineCount,
564
+ blankLines,
565
+ codeLines,
566
+ functions,
567
+ thirdPartyImports,
568
+ unusedImports: [], // Go compiler enforces this; nothing to add
569
+ complexityScore,
570
+ warnings,
571
+ typeScriptMetrics: ZEROED_TS_METRICS,
572
+ codeSmells,
573
+ healthScore,
574
+ };
575
+ }
576
+ //# sourceMappingURL=analyser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyser.js","sourceRoot":"","sources":["../../src/go/analyser.ts"],"names":[],"mappings":";;AAqLA,gEAwBC;AAwXD,8BAqCC;AAxmBD,oCAAiC;AASjC,wCAAmD;AACnD,wDAAuD;AACvD,sCAAsC;AACtC,wCAA+C;AAE/C,0BAA0B;AAE1B,sCAAsC;AACtC,MAAM,UAAU,GAAG,+BAA+B,CAAA;AAClD,0CAA0C;AAC1C,MAAM,YAAY,GAAG,kDAAkD,CAAA;AAEvE,mDAAmD;AAEnD,MAAM,iBAAiB,GAAsB;IAC3C,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,CAAC;IAChB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,CAAC;IACjB,kBAAkB,EAAE,CAAC;CACtB,CAAA;AAED,kBAAkB;AAElB,SAAS,mBAAmB,CAAC,MAAc;IACzC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;IACzB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,EAAE,CAAA;YACZ,MAAM,IAAI,EAAE,CAAC;YAAC,CAAC,EAAE,CAAA;YACjB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAA;gBAAC,CAAC;qBAC1D,CAAC;oBAAC,MAAM,IAAI,CAAC,CAAC;oBAAC,CAAC,EAAE,CAAC;oBAAC,IAAI,CAAC,KAAK,CAAC;wBAAE,MAAK;gBAAC,CAAC;YAC/C,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAAC,MAAM,IAAI,GAAG,CAAC;gBAAC,CAAC,EAAE,CAAA;YAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,GAAG,CAAC;YAAC,CAAC,EAAE,CAAA;YACtC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;gBACf,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAAC,MAAM,IAAI,IAAI,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;oBAAC,MAAK;gBAAC,CAAC;gBACjF,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAC,CAAC,EAAE,CAAA;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,EAAE,CAAC;YAAC,CAAC,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,+BAA+B,CAAC,MAAc,EAAE,MAAgB;IACvE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,EAAE,CAAA;YACZ,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,GAAG,CAAA;QACb,CAAC,EAAE,CAAA;QACH,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,IAAI,CAAA;gBACd,CAAC,EAAE,CAAA;gBACH,SAAQ;YACV,CAAC;YACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,CAAA;gBACb,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA;gBAC/C,CAAC;gBACD,CAAC,IAAI,CAAC,CAAA;gBACN,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,CAAA;YACb,CAAC,EAAE,CAAA;YACH,IAAI,OAAO,KAAK,EAAE;gBAAE,MAAK;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAGD,2EAA2E;AAC3E,yEAAyE;AACzE,sEAAsE;AACtE,+EAA+E;AAC/E,2DAA2D;AAC3D,MAAM,gBAAgB,GAAG,0FAA0F,CAAA;AAEnH,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;IACvB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,MAAM,KAAK,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEhE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAEpB,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAA;YAAC,CAAC;YAC1D,SAAQ;QACV,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC,IAAI,CAAC,CAAA;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAA;YAAC,CAAC;YAClG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAAC,CAAC,IAAI,CAAC,CAAA;YAAC,CAAC;YACzC,SAAQ;QACV,CAAC;QAED,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,EAAE,CAAA;YACZ,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC9E,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,EAAE,CAAA;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;oBAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC1E,CAAC,IAAI,CAAC,CAAA;oBACN,SAAQ;gBACV,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAAC,CAAC,EAAE,CAAC;oBAAC,MAAK;gBAAC,CAAC;gBAC1C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzD,CAAC,EAAE,CAAA;YACL,CAAC;YACD,SAAQ;QACV,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACnB,CAAC,EAAE,CAAA;IACL,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe,EAAE,SAAiB;IAC3D,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAAC,KAAK,EAAE,CAAC;gBAAC,SAAS,GAAG,IAAI,CAAA;YAAC,CAAC;iBACxC,IAAI,EAAE,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;gBACjC,KAAK,EAAE,CAAA;gBACP,IAAI,KAAK,KAAK,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,SAAS,IAAI,KAAK,KAAK,CAAC;YAAE,MAAK;IACrC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,2BAA2B;AAE3B,SAAS,cAAc,CAAC,GAAW;IACjC,yFAAyF;IACzF,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAED,SAAgB,0BAA0B,CAAC,MAAc;IACvD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAEjC,sDAAsD;IACtD,MAAM,QAAQ,GAAG,qCAAqC,CAAA;IACtD,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAA;IACtB,IAAI,CAAyB,CAAA;IAC7B,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,wBAAwB,CAAA;IACxC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;IACrB,IAAI,EAA0B,CAAA;IAC9B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,4BAA4B,CAAA;QAC1C,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;AAC5B,CAAC;AAED,6BAA6B;AAE7B,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAmB,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,KAAK,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;QAC5C,EAAE,CAAC,SAAS,GAAG,CAAC,CAAA;QAChB,IAAI,KAA6B,CAAA;QACjC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,IAAI,GAAG,IAAA,cAAM,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACxC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACb,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AAChD,CAAC;AAED,kBAAkB;AAElB,SAAS,iBAAiB,CAAC,KAAe,EAAE,YAAoB;IAC9D,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,EAAE,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC;oBAAC,KAAK,GAAG,CAAC,CAAA;gBAAC,CAAC;;oBACtC,KAAK,EAAE,CAAA;YACd,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;gBACjC,KAAK,EAAE,CAAA;gBACP,IAAI,KAAK,KAAK,CAAC;oBAAE,OAAO,SAAS,CAAA;;oBAC5B,SAAS,IAAI,EAAE,CAAA;YACtB,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,SAAS,IAAI,EAAE,CAAA;YACjB,CAAC;QACH,CAAC;QACD,IAAI,OAAO;YAAE,SAAS,IAAI,GAAG,CAAA;IAC/B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,sBAAsB;AAEtB,SAAS,kBAAkB,CACzB,MAAc,EACd,SAAyB,EACzB,SAAiB,EACjB,MAAkB,EAClB,MAAM,GAAG,KAAK;IAEd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEhC,qEAAqE;IACrE,MAAM,WAAW,GAAuB,EAAE,CAAA;IAC1C,IAAI,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACpC,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,KAAK,GAAG,yFAAyF,CAAA;QACvG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;QACnB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,KAAK,GAAqC,EAAE,CAAA;IAClD,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,uCAAuC,CAAA;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3B,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,wCAAwC;IACxC,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAClC,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAA;YACvB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACrD,CAAC,EAAE,CAAC,CAAC,CAAA;QACL,IAAI,SAAS,IAAI,CAAC;YAAE,WAAW,EAAE,CAAA;IACnC,CAAC;IAED,uBAAuB;IACvB,MAAM,kBAAkB,GAAyD,EAAE,CAAA;IACnF,IAAI,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACpC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;gBAChE,IAAI,UAAU,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC3C,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;gBACvE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,YAAY,GAAsC,EAAE,CAAA;IAC1D,IAAI,MAAM,CAAC,0BAA0B,EAAE,CAAC;QACtC,wDAAwD;QACxD,sDAAsD;QACtD,oDAAoD;QACpD,kFAAkF;QAClF,MAAM,aAAa,GACjB,mGAAmG,CAAA;QACrG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,MAAM,cAAc,GAAG,+BAA+B,CACpD,mBAAmB,CAAC,MAAM,CAAC,EAC3B,CAAC,GAAG,EAAE,GAAG,CAAC,CACX,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACb,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAM;YACxC,MAAM,KAAK,GAAG,sBAAsB,CAAA;YACpC,IAAI,EAA0B,CAAA;YAC9B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;gBACf,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;gBAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7C,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACf,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,qBAAqB;QAClE,CAAC,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC;QAC/C,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAA;IAE3C,0BAA0B;IAC1B,MAAM,SAAS,GAAuB,EAAE,CAAA;IACxC,MAAM,gBAAgB,GAAuB,EAAE,CAAA;IAC/C,MAAM,cAAc,GAAuB,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAuB,EAAE,CAAA;IAC1C,MAAM,kBAAkB,GAAuB,EAAE,CAAA;IACjD,MAAM,uBAAuB,GAAuB,EAAE,CAAA;IACtD,MAAM,iBAAiB,GAAuB,EAAE,CAAA;IAChD,MAAM,WAAW,GAAuB,EAAE,CAAA;IAC1C,MAAM,YAAY,GAAuB,EAAE,CAAA;IAE3C,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAE5C,kDAAkD;QAElD,MAAM,KAAK,GAAG,4EAA4E,CAAA;QAC1F,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;QACnB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC3D,CAAC;QACD,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,6EAA6E,CAAA;QAC9F,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAA;QACtB,IAAI,GAA2B,CAAA;QAC/B,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,MAAM,KAAK,GAAG,mEAAmE,CAAA;QACjF,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;QACnB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAA,oCAAkB,EAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,uDAAuD;QACvD,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,6BAA6B,CAAA;QAC1C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACtD,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,6BAA6B,CAAA;YAC7C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;YACrB,IAAI,EAA0B,CAAA;YAC9B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9C,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,gCAAgC,CAAA;QAC9C,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;QACnB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5C,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,yBAAyB,CAAA;YACvC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;YACnB,IAAI,EAA0B,CAAA;YAC9B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5C,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,2BAA2B,CAAA;QAC1C,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;QACpB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,UAAU,GAAG,mFAAmF,CAAA;QACtG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAA;QACxB,IAAI,EAA0B,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,EAAuB,EAAE,gBAAgB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAChX,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAc,EACd,SAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,UAAU,GAAmB,EAAE,CAAA;IACrC,MAAM,eAAe,GAAmB,EAAE,CAAA;IAE1C,2BAA2B;IAC3B,4DAA4D;IAC5D,MAAM,WAAW,GAAG,oCAAoC,CAAA;IACxD,WAAW,CAAC,SAAS,GAAG,CAAC,CAAA;IACzB,IAAI,EAA0B,CAAA;IAC9B,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACpF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjF,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,SAAS,GAAG,wBAAwB,CAAA;IAC1C,SAAS,CAAC,SAAS,GAAG,CAAC,CAAA;IACvB,IAAI,EAA0B,CAAA;IAC9B,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,IAAI,KAAK,GAAG;YAAE,SAAQ;QAC1B,MAAM,IAAI,GAAG,IAAA,cAAM,EAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjF,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACvD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,mEAAmE;QACnE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,SAAQ;QACpC,oCAAoC;QACpC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;YAAE,SAAQ;QACtD,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpF,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1D,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA;AACxC,CAAC;AAED,mBAAmB;AAEnB,SAAS,gBAAgB,CACvB,SAAiB,EACjB,SAAyB,EACzB,iBAA2B,EAC3B,MAAc,EACd,MAAkB;IAElB,MAAM,QAAQ,GAAc,EAAE,CAAA;IAE9B,MAAM,GAAG,GAAG,CAAC,IAAqB,EAAE,QAA6B,EAAuB,EAAE,CACvF,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAyB,IAAI,QAAQ,CAAA;IAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,IAAI,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,SAAS,YAAY,MAAM,CAAC,mBAAmB,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAC3J,CAAC;SAAM,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,SAAS,YAAY,QAAQ,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;IAC3I,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,cAAc,GAAG,MAAM,CAAC,uBAAuB,GAAG,CAAC,CAAA;IACzD,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAA;QAClC,IAAI,IAAI,GAAG,cAAc,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,QAAQ,IAAI,YAAY,cAAc,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QACxK,CAAC;aAAM,IAAI,IAAI,GAAG,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,QAAQ,IAAI,YAAY,MAAM,CAAC,uBAAuB,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1L,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,4BAA4B,MAAM,CAAC,mBAAmB,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;IACtL,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,MAAM,0BAA0B,MAAM,CAAC,iBAAiB,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;IACtL,CAAC;IAED,6DAA6D;IAC7D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gCAAgC,EAAE,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;IACvH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,qBAAqB;AAErB,SAAS,iBAAiB,CACxB,MAAc,EACd,SAAiB,EACjB,SAAyB,EACzB,iBAA2B;IAE3B,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;IAE3C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAChC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAA;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC,EAAE,CAAC,CAAC,CAAA;IACL,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAE/D,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;IACpG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAA;IAE9C,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;AACzC,CAAC;AAED,uBAAuB;AAEvB,wEAAwE;AAExE,sBAAsB;AAEtB,SAAgB,SAAS,CAAC,MAAc,EAAE,MAAkB,EAAE,QAAQ,GAAG,EAAE;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA;IACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAA;IAC/D,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;IAExC,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QACjD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,YAAY,CAAA;IAEhB,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAC5D,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC1F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1F,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,CAAA;IACjG,MAAM,gBAAgB,GAAG,IAAA,gCAAsB,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC/E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAe;QAC7B,GAAG,UAAU;QACb,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvE,gBAAgB;KACjB,CAAA;IACD,MAAM,WAAW,GAAG,IAAA,4BAAkB,EAAC,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;IAEvF,OAAO;QACL,SAAS;QACT,UAAU;QACV,SAAS;QACT,SAAS;QACT,iBAAiB;QACjB,aAAa,EAAE,EAAE,EAAE,4CAA4C;QAC/D,eAAe;QACf,QAAQ;QACR,iBAAiB,EAAE,iBAAiB;QACpC,UAAU;QACV,WAAW;KACZ,CAAA;AACH,CAAC"}