code-auditor-mcp 3.6.0 → 3.8.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 (153) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +73 -0
  3. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  4. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +12 -1
  5. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  6. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  7. package/dist/analyzers/cross-language/SchemaValidator.js +122 -43
  8. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  9. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +2 -2
  10. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +6 -7
  11. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  12. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  13. package/dist/analyzers/ruleRegistry.js +152 -20
  14. package/dist/analyzers/ruleRegistry.js.map +1 -1
  15. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +38 -1
  16. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  17. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +437 -48
  18. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  19. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +6 -0
  20. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  21. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +117 -35
  22. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  23. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +86 -15
  25. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  26. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +32 -7
  27. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  28. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +104 -23
  29. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  30. package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts +55 -0
  31. package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts.map +1 -0
  32. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js +318 -0
  33. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js.map +1 -0
  34. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +2 -8
  35. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  36. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +54 -45
  37. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  38. package/dist/analyzers/universal/functionConcerns.d.ts +57 -0
  39. package/dist/analyzers/universal/functionConcerns.d.ts.map +1 -0
  40. package/dist/analyzers/universal/functionConcerns.js +239 -0
  41. package/dist/analyzers/universal/functionConcerns.js.map +1 -0
  42. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
  43. package/dist/analyzers/universal/schema/codeAnalysis.js +13 -7
  44. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
  45. package/dist/analyzers/universal/schema/jsonSchema.js +124 -11
  46. package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
  47. package/dist/auditRouter.d.ts.map +1 -1
  48. package/dist/auditRouter.js +4 -6
  49. package/dist/auditRouter.js.map +1 -1
  50. package/dist/auditRunner.d.ts.map +1 -1
  51. package/dist/auditRunner.js +74 -48
  52. package/dist/auditRunner.js.map +1 -1
  53. package/dist/cli.js +321 -98
  54. package/dist/cli.js.map +1 -1
  55. package/dist/config/configLoader.d.ts.map +1 -1
  56. package/dist/config/configLoader.js +23 -0
  57. package/dist/config/configLoader.js.map +1 -1
  58. package/dist/config/defaults.d.ts +6 -0
  59. package/dist/config/defaults.d.ts.map +1 -1
  60. package/dist/config/defaults.js +45 -10
  61. package/dist/config/defaults.js.map +1 -1
  62. package/dist/config/effectiveConfig.d.ts.map +1 -1
  63. package/dist/config/effectiveConfig.js +2 -0
  64. package/dist/config/effectiveConfig.js.map +1 -1
  65. package/dist/conventions/conventionMiner.d.ts +18 -3
  66. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  67. package/dist/conventions/conventionMiner.js +130 -12
  68. package/dist/conventions/conventionMiner.js.map +1 -1
  69. package/dist/daemon/core.d.ts +128 -0
  70. package/dist/daemon/core.d.ts.map +1 -0
  71. package/dist/daemon/core.js +700 -0
  72. package/dist/daemon/core.js.map +1 -0
  73. package/dist/daemon/lspServer.d.ts +51 -0
  74. package/dist/daemon/lspServer.d.ts.map +1 -0
  75. package/dist/daemon/lspServer.js +168 -0
  76. package/dist/daemon/lspServer.js.map +1 -0
  77. package/dist/daemon/main.d.ts +34 -0
  78. package/dist/daemon/main.d.ts.map +1 -0
  79. package/dist/daemon/main.js +147 -0
  80. package/dist/daemon/main.js.map +1 -0
  81. package/dist/daemon/resolve.d.ts +41 -0
  82. package/dist/daemon/resolve.d.ts.map +1 -0
  83. package/dist/daemon/resolve.js +90 -0
  84. package/dist/daemon/resolve.js.map +1 -0
  85. package/dist/daemon/socketClient.d.ts +21 -0
  86. package/dist/daemon/socketClient.d.ts.map +1 -0
  87. package/dist/daemon/socketClient.js +60 -0
  88. package/dist/daemon/socketClient.js.map +1 -0
  89. package/dist/daemon/socketServer.d.ts +33 -0
  90. package/dist/daemon/socketServer.d.ts.map +1 -0
  91. package/dist/daemon/socketServer.js +106 -0
  92. package/dist/daemon/socketServer.js.map +1 -0
  93. package/dist/daemon/types.d.ts +78 -0
  94. package/dist/daemon/types.d.ts.map +1 -0
  95. package/dist/daemon/types.js +10 -0
  96. package/dist/daemon/types.js.map +1 -0
  97. package/dist/dataPaths.d.ts +21 -0
  98. package/dist/dataPaths.d.ts.map +1 -1
  99. package/dist/dataPaths.js +27 -0
  100. package/dist/dataPaths.js.map +1 -1
  101. package/dist/graph/importGraph.d.ts +11 -0
  102. package/dist/graph/importGraph.d.ts.map +1 -1
  103. package/dist/graph/importGraph.js +11 -3
  104. package/dist/graph/importGraph.js.map +1 -1
  105. package/dist/hooks/core.d.ts.map +1 -1
  106. package/dist/hooks/core.js +21 -4
  107. package/dist/hooks/core.js.map +1 -1
  108. package/dist/installer.d.ts.map +1 -1
  109. package/dist/installer.js +2 -5
  110. package/dist/installer.js.map +1 -1
  111. package/dist/languages/RuntimeManager.js +10 -0
  112. package/dist/languages/RuntimeManager.js.map +1 -1
  113. package/dist/languages/go/analyzer +0 -0
  114. package/dist/languages/go/analyzer-src/analyzer.go +166 -35
  115. package/dist/languages/go/analyzer-src/solid.go +80 -172
  116. package/dist/languages/go/analyzer-src/types.go +18 -18
  117. package/dist/ledger.d.ts +1 -1
  118. package/dist/ledger.d.ts.map +1 -1
  119. package/dist/ledger.js +3 -3
  120. package/dist/ledger.js.map +1 -1
  121. package/dist/mcp.js +1 -1
  122. package/dist/mcp.js.map +1 -1
  123. package/dist/mcpAuditJobs.js +1 -1
  124. package/dist/mcpAuditJobs.js.map +1 -1
  125. package/dist/nextFileIncremental.d.ts +9 -3
  126. package/dist/nextFileIncremental.d.ts.map +1 -1
  127. package/dist/nextFileIncremental.js +32 -6
  128. package/dist/nextFileIncremental.js.map +1 -1
  129. package/dist/pipeline.d.ts +26 -0
  130. package/dist/pipeline.d.ts.map +1 -1
  131. package/dist/pipeline.js +86 -10
  132. package/dist/pipeline.js.map +1 -1
  133. package/dist/pipelineAdapters.d.ts +2 -1
  134. package/dist/pipelineAdapters.d.ts.map +1 -1
  135. package/dist/pipelineAdapters.js +228 -5
  136. package/dist/pipelineAdapters.js.map +1 -1
  137. package/dist/reporting/csvReportGenerator.js +1 -1
  138. package/dist/ruleAliases.d.ts.map +1 -1
  139. package/dist/ruleAliases.js +41 -2
  140. package/dist/ruleAliases.js.map +1 -1
  141. package/dist/styles/tailwindProbe.d.ts +8 -0
  142. package/dist/styles/tailwindProbe.d.ts.map +1 -1
  143. package/dist/styles/tailwindProbe.js +11 -1
  144. package/dist/styles/tailwindProbe.js.map +1 -1
  145. package/dist/types/crossLanguage.d.ts +1 -0
  146. package/dist/types/crossLanguage.d.ts.map +1 -1
  147. package/dist/types.d.ts +30 -1
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js.map +1 -1
  150. package/package.json +7 -3
  151. package/plugin/.claude-plugin/plugin.json +1 -1
  152. package/plugin/skills/code-auditor/SKILL-RULE-KINDS.md +4 -2
  153. package/plugin/skills/code-auditor/SKILL.md +19 -11
@@ -17,8 +17,11 @@ export const DEFAULT_DOCUMENTATION_CONFIG = {
17
17
  requireFunctionDocs: true,
18
18
  requireClassDocs: true,
19
19
  requireFileDocs: true,
20
- requireParamDocs: true,
21
- requireReturnDocs: true,
20
+ // #135 — a doc comment that exists but lacks exhaustive @param/@returns tags
21
+ // is not a default defect. Tag completeness is opt-in strict mode; enabling
22
+ // these re-surfaces parameter-documentation / return-documentation.
23
+ requireParamDocs: false,
24
+ requireReturnDocs: false,
22
25
  minDescriptionLength: 10,
23
26
  checkExportedOnly: false,
24
27
  exemptPatterns: [
@@ -29,6 +32,14 @@ export const DEFAULT_DOCUMENTATION_CONFIG = {
29
32
  'fixture',
30
33
  '__tests__',
31
34
  '/tests?/',
35
+ // #135 — UI component files and Next.js framework entry points are not
36
+ // library API surface: they are self-describing by name/location and belong
37
+ // to the react analyzer's concern space, not the documentation analyzer.
38
+ // Skip them by default so the documentation signal is undocumented *logic*
39
+ // (services, repositories, utilities), not undocumented markup.
40
+ '\\.tsx$',
41
+ '\\.jsx$',
42
+ '/(page|layout|loading|error|route|template|not-found|default|middleware)\\.(ts|tsx|js|jsx|mjs|cjs)$',
32
43
  ],
33
44
  // Spec-17 defaults
34
45
  scope: 'public',
@@ -130,7 +141,10 @@ function checkFileHeader(ast, adapter, config, fileHeaders) {
130
141
  if (matchesAnyGlob(ast.filePath, skipGlobs))
131
142
  return violations;
132
143
  const fileDoc = getFileDocumentation(ast, adapter);
133
- if (!fileDoc || fileDoc.length < config.minDescriptionLength) {
144
+ // Spec-49 a file header is a leading comment that documents the file's
145
+ // *purpose* (a @fileoverview/@file/@module/@overview/@purpose marker), not any
146
+ // comment of ≥N characters. A license block is not a header.
147
+ if (!fileDoc || !isFileHeaderDoc(fileDoc)) {
134
148
  violations.push(makeViolation(ast.filePath, { line: 1, column: 1 }, 'File lacks a leading documentation comment', { severity: 'warning', rule: 'file-documentation' }));
135
149
  }
136
150
  return violations;
@@ -171,18 +185,19 @@ function shouldSkipFunction(node, func, scan, ast) {
171
185
  function checkFunctionDocumentation(ast, adapter, config, func) {
172
186
  const violations = [];
173
187
  const doc = func.jsDoc || '';
174
- if (!doc || doc.length < config.minDescriptionLength) {
188
+ // Spec-49 the check measures whether the doc comment is substantive
189
+ // (descriptive prose, not a placeholder marker), not its character length.
190
+ if (!isSubstantiveDoc(doc)) {
175
191
  // Methods lacking any documentation are reported by the class loop as
176
192
  // method-documentation — skip here so a public method is not
177
193
  // double-reported as both function-documentation and method-documentation.
178
194
  if (func.isMethod) {
179
195
  return violations;
180
196
  }
181
- // R1.6 — Audience-reason message (a doc comment shorter than the minimum
182
- // length is reported as missing; the check measures presence + length).
197
+ // R1.6 — Audience-reason message.
183
198
  const reason = func.isExported
184
- ? `exported function '${func.name}' lacks a doc comment of at least ${config.minDescriptionLength} characters`
185
- : `function '${func.name}' lacks a doc comment of at least ${config.minDescriptionLength} characters`;
199
+ ? `exported function '${func.name}' lacks a documentation comment`
200
+ : `function '${func.name}' lacks a documentation comment`;
186
201
  violations.push(makeViolation(ast.filePath, func.location.start, reason, { severity: 'warning', rule: 'function-documentation', symbol: func.name }));
187
202
  return violations;
188
203
  }
@@ -242,8 +257,9 @@ function analyzeClassDocumentation(ast, scan) {
242
257
  continue;
243
258
  }
244
259
  const doc = cls.jsDoc || '';
245
- if (!doc || doc.length < config.minDescriptionLength) {
246
- violations.push(makeViolation(ast.filePath, cls.location.start, `Class '${cls.name}' lacks a doc comment of at least ${config.minDescriptionLength} characters`, { severity: 'warning', rule: 'class-documentation', symbol: cls.name }));
260
+ // Spec-49 substantive content, not character length.
261
+ if (!isSubstantiveDoc(doc)) {
262
+ violations.push(makeViolation(ast.filePath, cls.location.start, `Class '${cls.name}' lacks a documentation comment`, { severity: 'warning', rule: 'class-documentation', symbol: cls.name }));
247
263
  }
248
264
  // Method documentation
249
265
  violations.push(...checkClassMethodDocumentation(ast, cls, scan));
@@ -265,8 +281,9 @@ function checkClassMethodDocumentation(ast, cls, scan) {
265
281
  }
266
282
  }
267
283
  const methodDoc = method.jsDoc || '';
268
- if (!methodDoc || methodDoc.length < config.minDescriptionLength) {
269
- violations.push(makeViolation(ast.filePath, method.location.start, `public method '${cls.name}.${method.name}' lacks a doc comment of at least ${config.minDescriptionLength} characters`, { severity: 'warning', rule: 'method-documentation', symbol: `${cls.name}.${method.name}` }));
284
+ // Spec-49 substantive content, not character length.
285
+ if (!isSubstantiveDoc(methodDoc)) {
286
+ violations.push(makeViolation(ast.filePath, method.location.start, `public method '${cls.name}.${method.name}' lacks a documentation comment`, { severity: 'warning', rule: 'method-documentation', symbol: `${cls.name}.${method.name}` }));
270
287
  }
271
288
  }
272
289
  return violations;
@@ -500,10 +517,64 @@ function getFirstChildOfType(node, types) {
500
517
  */
501
518
  function getFileDocumentation(ast, adapter) {
502
519
  const firstChild = ast.root.children?.[0];
503
- if (firstChild) {
504
- return adapter.getDocumentation(firstChild);
520
+ if (!firstChild)
521
+ return null;
522
+ // When the leading node is itself a comment, that comment IS the candidate
523
+ // file header. `getDocumentation` looks for a comment *preceding* its
524
+ // argument, so passing the comment node itself would wrongly return null.
525
+ if (firstChild.type === 'comment') {
526
+ const text = firstChild.raw?.text;
527
+ return text ? text.trim() : null;
505
528
  }
506
- return null;
529
+ return adapter.getDocumentation(firstChild);
530
+ }
531
+ // ---------------------------------------------------------------------------
532
+ // Spec-49 — documentation substance. The four documentation rules previously
533
+ // reduced to `jsDoc.length < minDescriptionLength` (presence + character
534
+ // length). The real signal is *content*: a comment is documentation only when
535
+ // it says something descriptive, and a placeholder (`TODO`/`FIXME`/…) or a
536
+ // bare license block is not.
537
+ // ---------------------------------------------------------------------------
538
+ /**
539
+ * Placeholder markers that are never documentation, regardless of length.
540
+ * Anchored to the *start* of the stripped comment so a descriptive doc that
541
+ * merely mentions "placeholder"/"stub" mid-sentence (e.g. "falls back to the
542
+ * placeholder card") is not mistaken for a placeholder comment. A bare
543
+ * `/** TODO *​/` or `/** PLACEHOLDER *​/` leads with the marker and still fires.
544
+ */
545
+ const PLACEHOLDER_DOC_PATTERN = /^@?\s*(TODO|FIXME|XXX|TBD|WIP|STUB|PLACEHOLDER)\b/i;
546
+ /** File-header markers — the signal that a leading comment documents the file's purpose. */
547
+ const FILE_HEADER_PATTERN = /@(fileoverview|file|module|module-desc|overview|purpose)\b/i;
548
+ /** Stop words that do not by themselves constitute descriptive content. */
549
+ const DOC_STOP_WORDS = new Set([
550
+ 'the', 'a', 'an', 'this', 'that', 'these', 'those', 'and', 'or', 'of', 'to',
551
+ 'in', 'on', 'for', 'with', 'is', 'are', 'was', 'were', 'be', 'been', 'by',
552
+ 'as', 'at', 'from', 'it', 'its',
553
+ ]);
554
+ /** True when the leading comment carries a file-header marker. */
555
+ function isFileHeaderDoc(doc) {
556
+ return FILE_HEADER_PATTERN.test(doc);
557
+ }
558
+ /** True when the doc comment contains substantive descriptive prose. */
559
+ function isSubstantiveDoc(doc) {
560
+ // Raw prose: strip comment delimiters and leading asterisks only.
561
+ const raw = doc
562
+ .replace(/\/\*\*?|\*\//g, ' ')
563
+ .replace(/^\s*\*+\s?/gm, ' ');
564
+ const trimmed = raw.trim();
565
+ if (!trimmed)
566
+ return false;
567
+ // A placeholder marker — with or without the `@` sigil — is never documentation.
568
+ if (PLACEHOLDER_DOC_PATTERN.test(trimmed))
569
+ return false;
570
+ // Strip remaining @tags and punctuation, then require at least one
571
+ // descriptive word (≥2 chars, not a stop word).
572
+ const prose = trimmed
573
+ .replace(/@\w+\s*(\{[^}]*\})?/g, ' ')
574
+ .replace(/[^A-Za-z0-9]+/g, ' ')
575
+ .toLowerCase();
576
+ const words = prose.split(/\s+/).filter((w) => w.length >= 2 && !DOC_STOP_WORDS.has(w));
577
+ return words.length > 0;
507
578
  }
508
579
  /**
509
580
  * Find a node by its location via BFS.
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalDocumentationAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDocumentationAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UniversalDocumentationAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDocumentationAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export interface SOLIDAnalyzerConfig {
23
23
  classMethodsThreshold?: number;
24
24
  classAggregateComplexity?: number;
25
25
  checkDependencyInversion?: boolean;
26
- checkInterfaceSegregation?: boolean;
26
+ checkInterfaceSize?: boolean;
27
27
  checkLiskovSubstitution?: boolean;
28
28
  skipTestFiles?: boolean;
29
29
  }
@@ -53,24 +53,49 @@ export declare class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
53
53
  * Open/Closed Principle — check for modification patterns.
54
54
  */
55
55
  private checkOpenClosed;
56
- /**
57
- * Liskov Substitution Principle.
58
- */
59
- private checkLiskov;
60
56
  /**
61
57
  * Analyze a function for SOLID violations
62
58
  */
63
59
  private analyzeFunction;
64
60
  /**
65
- * R5.1/R5.2: Function size checks (parameter count + line count).
61
+ * #131: Function-size checks, split into two honest rule IDs.
62
+ *
63
+ * `parameter-count` (parameter count) and `function-length` (line count) say
64
+ * what they measure. Neither is a SOLID principle — a 52-line function is
65
+ * "2 lines over a length threshold," dismissible on its own terms, not an SRP
66
+ * violation. `solid/single-responsibility` is reserved for the mixed-concern
67
+ * check in {@link checkMixedResponsibilities}, which is the actual principle.
66
68
  */
67
69
  private checkFunctionSize;
70
+ /**
71
+ * #128/#131: Single-responsibility by mixed-concern detection.
72
+ *
73
+ * This is now the *only* signal under `solid/single-responsibility`. A function
74
+ * that spans three or more unrelated concern categories (data access,
75
+ * messaging, logging, rendering) is doing too much even when it is short. The
76
+ * concern taxonomy and the load-and-shape collapse live in `functionConcerns.ts`.
77
+ *
78
+ * The size proxies moved to their own rules in #131 — `parameter-count` and
79
+ * `function-length` — so a length finding no longer masquerades as an SRP
80
+ * violation.
81
+ */
82
+ private checkMixedResponsibilities;
68
83
  /**
69
84
  * R5.1: Cyclomatic complexity for a standalone function.
70
85
  */
71
86
  private checkFunctionComplexity;
72
87
  /**
73
- * Analyze an interface for Interface Segregation Principle
88
+ * Analyze an interface for size (`interface-size`).
89
+ *
90
+ * Spec-49: the old `solid/interface-segregation` rule claimed to detect the
91
+ * Interface Segregation Principle (clients forced to depend on methods they
92
+ * do not use) from a raw member count. Member count is a *size* reading, not
93
+ * a segregation reading — a 21-member interface may be perfectly segregated,
94
+ * and a 3-member interface may be unsegregated. The honest computation for
95
+ * ISP (client-usage sets: which callers use which disjoint subsets of an
96
+ * interface's methods) needs the call graph, which the per-file AST analyzer
97
+ * does not have, so that reading is blocked (see the ledger). What remains is
98
+ * the size signal under an honest name.
74
99
  */
75
100
  private analyzeInterface;
76
101
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalSOLIDAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAmD,MAAM,0BAA0B,CAAC;AAEtH;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAAE,mBAqBlC,CAAC;AA2DF;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,4CAA4C;IAChE,QAAQ,CAAC,QAAQ,kBAAkB;IAEnC,UAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAkCtB;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,OAAO,CAAC,cAAc;IA6CtB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;IAkC/B,6EAA6E;IAC7E,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAgBhC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,sBAAsB;CA+B/B"}
1
+ {"version":3,"file":"UniversalSOLIDAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAmD,MAAM,0BAA0B,CAAC;AAGtH;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAAE,mBAqBlC,CAAC;AAuEF;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,4CAA4C;IAChE,QAAQ,CAAC,QAAQ,kBAAkB;IAEnC,UAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAkCtB;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,cAAc;IA6CtB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,0BAA0B;IA6BlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;IAkC/B,6EAA6E;IAC7E,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAgBhC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,sBAAsB;CA+B/B"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
6
6
  import { withRuleTiming } from '../ruleTiming.js';
7
+ import { detectFunctionConcerns, countConcernGroups, votingConcerns, CONCERN_LABELS, isFunctionNodeType } from './functionConcerns.js';
7
8
  export const DEFAULT_SOLID_CONFIG = {
8
9
  maxMethodsPerClass: 15,
9
10
  // Confirmed by the Spec-11 R3 sweep; must match src/config/defaults.ts.
@@ -22,7 +23,7 @@ export const DEFAULT_SOLID_CONFIG = {
22
23
  classMethodsThreshold: 15,
23
24
  classAggregateComplexity: 100,
24
25
  checkDependencyInversion: true,
25
- checkInterfaceSegregation: true,
26
+ checkInterfaceSize: true,
26
27
  checkLiskovSubstitution: true,
27
28
  skipTestFiles: true
28
29
  };
@@ -50,6 +51,17 @@ const BUILTIN_TYPES = new Set([
50
51
  'URL', 'URLSearchParams', 'TextEncoder', 'TextDecoder', 'Buffer',
51
52
  'FormData', 'Blob', 'AbortController', 'AbortSignal',
52
53
  ]);
54
+ /**
55
+ * #128 — the single-responsibility rule fires on a function that spans two or
56
+ * more *irreducible* concerns (data access, messaging, rendering), not merely on
57
+ * size. Two is the floor: `data-transformation` and `logging` are glue and
58
+ * annotation, not responsibilities, so they never vote — "shape and send",
59
+ * "shape and render", and "fetch and log" are each one job. A repository method
60
+ * (load + shape) is one group; a handler that queries *and* emails is two. This
61
+ * is a qualitative heuristic with no config key, like the open-closed and
62
+ * dependency-inversion checks — see `functionConcerns.ts` for the taxonomy.
63
+ */
64
+ const MIN_MIXED_CONCERN_GROUPS = 2;
53
65
  /**
54
66
  * Stable per-function identity for the baseline fingerprint.
55
67
  *
@@ -112,7 +124,11 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
112
124
  const violations = [];
113
125
  this.checkClassSize(cls, ctx, violations);
114
126
  this.checkOpenClosed(cls, ctx, violations);
115
- this.checkLiskov(cls, ctx, violations);
127
+ // Liskov Substitution Principle — only when a superclass is declared and the
128
+ // check is enabled.
129
+ if (ctx.config.checkLiskovSubstitution && cls.extends) {
130
+ violations.push(...this.checkLiskovSubstitution(cls, ctx));
131
+ }
116
132
  this.checkDependencyInversion(cls, ctx, violations);
117
133
  return violations;
118
134
  }
@@ -183,20 +199,13 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
183
199
  violations.push(this.createViolation(ctx.ast.filePath, cls.location.start, `Class "${cls.name}" uses instanceof against a user-defined type. Consider composition or inheritance for extension.`, { severity: 'suggestion', rule: 'solid/open-closed', symbol: cls.name }));
184
200
  }
185
201
  }
186
- /**
187
- * Liskov Substitution Principle.
188
- */
189
- checkLiskov(cls, ctx, violations) {
190
- if (ctx.config.checkLiskovSubstitution && cls.extends) {
191
- violations.push(...this.checkLiskovSubstitution(cls, ctx));
192
- }
193
- }
194
202
  /**
195
203
  * Analyze a function for SOLID violations
196
204
  */
197
205
  analyzeFunction(func, ctx) {
198
206
  const violations = [];
199
207
  this.checkFunctionSize(func, ctx, violations);
208
+ this.checkMixedResponsibilities(func, ctx, violations);
200
209
  // R5.1: Cyclomatic complexity for standalone functions (not methods — those are
201
210
  // already checked in analyzeClass). Skip methods to avoid double-reporting.
202
211
  if (!func.isMethod) {
@@ -205,13 +214,19 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
205
214
  return violations;
206
215
  }
207
216
  /**
208
- * R5.1/R5.2: Function size checks (parameter count + line count).
217
+ * #131: Function-size checks, split into two honest rule IDs.
218
+ *
219
+ * `parameter-count` (parameter count) and `function-length` (line count) say
220
+ * what they measure. Neither is a SOLID principle — a 52-line function is
221
+ * "2 lines over a length threshold," dismissible on its own terms, not an SRP
222
+ * violation. `solid/single-responsibility` is reserved for the mixed-concern
223
+ * check in {@link checkMixedResponsibilities}, which is the actual principle.
209
224
  */
210
225
  checkFunctionSize(func, ctx, violations) {
211
226
  const { ast, config } = ctx;
212
- withRuleTiming('solid/single-responsibility', () => {
227
+ withRuleTiming('parameter-count', () => {
213
228
  if (func.parameters.length > (config.maxParametersPerMethod || 4)) {
214
- violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${func.parameters.length} parameters, exceeding the maximum of ${config.maxParametersPerMethod || 4}. Consider using an options object.`, { severity: 'warning', rule: 'solid/single-responsibility', symbol: functionSymbol(func),
229
+ violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${func.parameters.length} parameters, exceeding the maximum of ${config.maxParametersPerMethod || 4}. Consider using an options object.`, { severity: 'warning', rule: 'parameter-count', symbol: functionSymbol(func),
215
230
  resolution: {
216
231
  action: 'bundle-params',
217
232
  summary: `Bundle the ${func.parameters.length} parameters of "${func.name}" into an options object.`,
@@ -221,10 +236,10 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
221
236
  } }));
222
237
  }
223
238
  });
224
- withRuleTiming('solid/single-responsibility', () => {
239
+ withRuleTiming('function-length', () => {
225
240
  const lineCount = func.location.end.line - func.location.start.line + 1;
226
241
  if (lineCount > (config.maxLinesPerMethod || 50)) {
227
- violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${lineCount} lines, exceeding the maximum of ${config.maxLinesPerMethod || 50}. Consider breaking it down.`, { severity: 'warning', rule: 'solid/single-responsibility', symbol: functionSymbol(func),
242
+ violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${lineCount} lines, exceeding the maximum of ${config.maxLinesPerMethod || 50}. Consider breaking it down.`, { severity: 'warning', rule: 'function-length', symbol: functionSymbol(func),
228
243
  resolution: {
229
244
  action: 'break-down-function',
230
245
  summary: `Break "${func.name}" (${lineCount} lines) into smaller functions, extracting named helper blocks.`,
@@ -235,6 +250,41 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
235
250
  }
236
251
  });
237
252
  }
253
+ /**
254
+ * #128/#131: Single-responsibility by mixed-concern detection.
255
+ *
256
+ * This is now the *only* signal under `solid/single-responsibility`. A function
257
+ * that spans three or more unrelated concern categories (data access,
258
+ * messaging, logging, rendering) is doing too much even when it is short. The
259
+ * concern taxonomy and the load-and-shape collapse live in `functionConcerns.ts`.
260
+ *
261
+ * The size proxies moved to their own rules in #131 — `parameter-count` and
262
+ * `function-length` — so a length finding no longer masquerades as an SRP
263
+ * violation.
264
+ */
265
+ checkMixedResponsibilities(func, ctx, violations) {
266
+ const { ast, adapter, sourceCode } = ctx;
267
+ const funcNode = findFunctionNode(ast.root, func.location.start);
268
+ if (!funcNode)
269
+ return;
270
+ withRuleTiming('solid/single-responsibility', () => {
271
+ const concerns = detectFunctionConcerns(funcNode, (node) => adapter.getNodeText(node, sourceCode));
272
+ const groupCount = countConcernGroups(concerns);
273
+ if (groupCount < MIN_MIXED_CONCERN_GROUPS)
274
+ return;
275
+ // List only the *voting* concerns — transformation/logging are glue, not
276
+ // the reason the function is a god-function.
277
+ const labels = votingConcerns(concerns).map((c) => CONCERN_LABELS[c]);
278
+ violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" mixes ${groupCount} unrelated concerns (${labels.join(', ')}). Split it into one function per concern.`, { severity: 'warning', rule: 'solid/single-responsibility', symbol: functionSymbol(func),
279
+ resolution: {
280
+ action: 'split-function',
281
+ summary: `Split "${func.name}" into one function per concern (${labels.join(', ')}) and compose them at the call site.`,
282
+ symbols: [func.name],
283
+ files: [ast.filePath],
284
+ lines: [func.location.start.line],
285
+ } }));
286
+ });
287
+ }
238
288
  /**
239
289
  * R5.1: Cyclomatic complexity for a standalone function.
240
290
  */
@@ -251,25 +301,34 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
251
301
  }
252
302
  }
253
303
  /**
254
- * Analyze an interface for Interface Segregation Principle
304
+ * Analyze an interface for size (`interface-size`).
305
+ *
306
+ * Spec-49: the old `solid/interface-segregation` rule claimed to detect the
307
+ * Interface Segregation Principle (clients forced to depend on methods they
308
+ * do not use) from a raw member count. Member count is a *size* reading, not
309
+ * a segregation reading — a 21-member interface may be perfectly segregated,
310
+ * and a 3-member interface may be unsegregated. The honest computation for
311
+ * ISP (client-usage sets: which callers use which disjoint subsets of an
312
+ * interface's methods) needs the call graph, which the per-file AST analyzer
313
+ * does not have, so that reading is blocked (see the ledger). What remains is
314
+ * the size signal under an honest name.
255
315
  */
256
316
  analyzeInterface(iface, ctx) {
257
317
  const { ast, config } = ctx;
258
318
  const violations = [];
259
- if (!config.checkInterfaceSegregation) {
319
+ if (!config.checkInterfaceSize) {
260
320
  return violations;
261
321
  }
262
322
  const members = iface.members || [];
263
323
  const memberCount = members.length;
264
324
  const maxMembers = config.maxInterfaceMembers || 20;
265
- // ISP governs *behavior* contracts "clients should not be forced to
266
- // depend on methods they do not use." A pure data-shape interface (every
267
- // member is an optional `property_signature`, e.g. a config/options bag) is
268
- // a record type, not a fat behavior interface; flagging it is a false
269
- // positive. Only interfaces that expose methods carry the ISP smell.
325
+ // A pure data-shape interface (every member is a property signature, e.g. a
326
+ // config/options bag) is a record type, not a large behavior interface;
327
+ // flagging it as "large" is a false positive. Only interfaces that expose
328
+ // methods carry the interface-size smell.
270
329
  const hasMethodMembers = members.some(member => member.type === 'method');
271
330
  if (hasMethodMembers && memberCount > maxMembers) {
272
- violations.push(this.createViolation(ast.filePath, iface.location.start, `Interface "${iface.name}" has ${memberCount} members, exceeding the maximum of ${maxMembers}. Consider splitting into smaller interfaces.`, { severity: 'warning', rule: 'solid/interface-segregation', symbol: iface.name }));
331
+ violations.push(this.createViolation(ast.filePath, iface.location.start, `Interface "${iface.name}" has ${memberCount} members, exceeding the maximum of ${maxMembers}. Consider splitting this large interface into smaller interfaces.`, { severity: 'warning', rule: 'interface-size', symbol: iface.name }));
273
332
  }
274
333
  return violations;
275
334
  }
@@ -430,6 +489,28 @@ function findNodeByLocation(root, location) {
430
489
  }
431
490
  return null;
432
491
  }
492
+ /**
493
+ * Find the function/method node at `location`.
494
+ *
495
+ * `findNodeByLocation` is ambiguous when a function is the first token in a
496
+ * file: the root `program` node also starts at (1,1), and a breadth-first
497
+ * search returns it before the `function_declaration` it contains. Matching on
498
+ * the function node type disambiguates — the root is never a function node, so
499
+ * the outer function is returned even at the top of a file.
500
+ */
501
+ function findFunctionNode(root, location) {
502
+ let found = null;
503
+ walkAST(root, (node) => {
504
+ if (found)
505
+ return;
506
+ if (node.location.start.line === location.line &&
507
+ node.location.start.column === location.column &&
508
+ isFunctionNodeType(node.type)) {
509
+ found = node;
510
+ }
511
+ });
512
+ return found;
513
+ }
433
514
  /** Depth-first walk over a subtree, invoking `callback` on every node. */
434
515
  function walkAST(node, callback) {
435
516
  callback(node);
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalSOLIDAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA6BlD,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,kBAAkB,EAAE,EAAE;IACtB,wEAAwE;IACxE,iEAAiE;IACjE,+DAA+D;IAC/D,wEAAwE;IACxE,2EAA2E;IAC3E,8EAA8E;IAC9E,iBAAiB,EAAE,EAAE;IACrB,sBAAsB,EAAE,CAAC;IACzB,kBAAkB,EAAE,EAAE,EAAe,oCAAoC;IACzE,mBAAmB,EAAE,EAAE;IACvB,qDAAqD;IACrD,mBAAmB,EAAE,EAAE;IACvB,gCAAgC;IAChC,qBAAqB,EAAE,EAAE;IACzB,wBAAwB,EAAE,GAAG;IAC7B,wBAAwB,EAAE,IAAI;IAC9B,yBAAyB,EAAE,IAAI;IAC/B,uBAAuB,EAAE,IAAI;IAC7B,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;IACpC,2BAA2B;IAC3B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAC7D,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IACtE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAC9C,iEAAiE;IACjE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB;IACnE,WAAW,EAAE,UAAU,EAAE,gBAAgB;IACzC,yBAAyB;IACzB,aAAa,EAAE,UAAU,EAAE,mBAAmB;IAC9C,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY;IACtD,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc;IAC3D,eAAe,EAAE,gBAAgB,EAAE,mBAAmB;IACtD,4BAA4B;IAC5B,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ;IAChE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa;CACrD,CAAC,CAAC;AAcH;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAC,IAAkB;IACxC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7C,OAAO,GAAG,MAAM,aAAa,IAAI,IAAI,MAAM,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,iBAAiB;IAClD,IAAI,GAAG,OAAO,CAAC;IACf,WAAW,GAAG,wCAAwC,CAAC;IACvD,QAAQ,GAAG,cAAc,CAAC;IAEzB,KAAK,CAAC,UAAU,CACxB,GAAQ,EACR,OAAwB,EACxB,MAA2B,EAC3B,UAAkB;QAElB,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAAC;QAE3D,gCAAgC;QAChC,IAAI,WAAW,CAAC,aAAa,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,GAAG,GAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAE5E,kBAAkB;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,+BAA+B;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,sDAAsD;gBAC1E,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAClD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAc,EAAE,GAAiB;QACpD,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAEpD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,GAAc,EAAE,GAAiB,EAAE,UAAuB;QAC/E,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAE5B,cAAc,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;YACzF,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,QAAQ,CAAC,KAAK,EAClB,UAAU,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,sCAAsC,gBAAgB,4CAA4C,EAC/I,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAG,8BAA8B;oBACnG,UAAU,EAAE;wBACV,MAAM,EAAE,aAAa;wBACrB,OAAO,EAAE,gBAAgB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,gFAAgF;wBACzI,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;wBACxD,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;wBACrB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;qBACrD,EAAE,CACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAE3E,cAAc,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACtC,MAAM,YAAY,GAAG,MAAM,CAAC,wBAAwB,IAAI,GAAG,CAAC;YAC5D,IAAI,mBAAmB,GAAG,YAAY,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,QAAQ,CAAC,KAAK,EAClB,UAAU,GAAG,CAAC,IAAI,yCAAyC,mBAAmB,IAAI;oBAClF,4BAA4B,YAAY,iCAAiC,EACzE,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAG,8BAA8B;oBACnG,UAAU,EAAE;wBACV,MAAM,EAAE,aAAa;wBACrB,OAAO,EAAE,gBAAgB,GAAG,CAAC,IAAI,2BAA2B,mBAAmB,2DAA2D;wBAC1I,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;wBACxD,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;wBACrB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;qBACrD,EAAE,CACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,GAAc,EAAE,GAAiB,EAAE,UAAuB;QACpF,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QACrC,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,mDAAmD;YACnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC3D,mBAAmB,IAAI,gBAAgB,CAAC;gBAExC,MAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;gBACnD,IAAI,gBAAgB,GAAG,SAAS,EAAE,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,MAAM,CAAC,QAAQ,CAAC,KAAK,EACrB,WAAW,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,+BAA+B,gBAAgB,IAAI;wBACrF,4BAA4B,SAAS,8CAA8C,EACnF,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAE,kCAAkC;qBACnI,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,gDAAgD;YAChD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAc,EAAE,GAAiB,EAAE,UAAuB;QAChF,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAChB,GAAG,CAAC,QAAQ,CAAC,KAAK,EAClB,UAAU,GAAG,CAAC,IAAI,mGAAmG,EACrH,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,GAAc,EAAE,GAAiB,EAAE,UAAuB;QAC5E,IAAI,GAAG,CAAC,MAAM,CAAC,uBAAuB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACtD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAkB,EAAE,GAAiB;QAC3D,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAE9C,gFAAgF;QAChF,4EAA4E;QAC5E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAkB,EAAE,GAAiB,EAAE,UAAuB;QACtF,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAE5B,cAAc,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACjD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,aAAa,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,MAAM,yCAAyC,MAAM,CAAC,sBAAsB,IAAI,CAAC,qCAAqC,EACrK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;oBACtF,UAAU,EAAE;wBACV,MAAM,EAAE,eAAe;wBACvB,OAAO,EAAE,cAAc,IAAI,CAAC,UAAU,CAAC,MAAM,mBAAmB,IAAI,CAAC,IAAI,2BAA2B;wBACpG,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC3C,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;wBACrB,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;qBAClC,EAAE,CACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACxE,IAAI,SAAS,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAAE,CAAC;gBACjD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,aAAa,IAAI,CAAC,IAAI,SAAS,SAAS,oCAAoC,MAAM,CAAC,iBAAiB,IAAI,EAAE,8BAA8B,EACxI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;oBACtF,UAAU,EAAE;wBACV,MAAM,EAAE,qBAAqB;wBAC7B,OAAO,EAAE,UAAU,IAAI,CAAC,IAAI,MAAM,SAAS,iEAAiE;wBAC5G,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;wBACpB,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;wBACrB,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;qBAClC,EAAE,CACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,IAAkB,EAAE,GAAiB,EAAE,UAAuB;QAC5F,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;QACvD,IAAI,oBAAoB,GAAG,SAAS,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,aAAa,IAAI,CAAC,IAAI,+BAA+B,oBAAoB,IAAI;gBAC7E,4BAA4B,SAAS,gDAAgD,EACrF,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAE,kCAAkC;aAC3H,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAoB,EAAE,GAAiB;QAC9D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAC5B,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC;YACtC,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAEpD,sEAAsE;QACtE,yEAAyE;QACzE,4EAA4E;QAC5E,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE1E,IAAI,gBAAgB,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,KAAK,CAAC,QAAQ,CAAC,KAAK,EACpB,cAAc,KAAK,CAAC,IAAI,SAAS,WAAW,sCAAsC,UAAU,+CAA+C,EAC3I,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CACjF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;;;;OAUG;IACK,uBAAuB,CAC7B,GAAc,EACd,GAAQ,EACR,OAAwB,EACxB,UAAkB;QAElB,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAE7B,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;gBAAE,OAAO;YAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC;gBAAE,OAAO;YACf,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,eAAe,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;;;;;;;OAUG;IACK,uBAAuB,CAAC,GAAc,EAAE,GAAiB;QAC/D,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC;QAE/B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;gBAAE,SAAS;YAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY;gBAAE,SAAS,CAAC,gCAAgC;YAE7D,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7E,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;gBAAE,SAAS;YAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAE5D,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,MAAM,CAAC,QAAQ,CAAC,KAAK,EACrB,WAAW,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,gBAAgB,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,0FAA0F,EACtK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CACpG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,6EAA6E;IACrE,YAAY,CAAC,UAAmB,EAAE,OAAwB;QAChE,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACpC,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,GAAc,EAAE,GAAiB,EAAE,UAAuB;QACzF,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAChB,GAAG,CAAC,QAAQ,CAAC,KAAK,EAClB,UAAU,GAAG,CAAC,IAAI,oFAAoF,EACtG,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CACjF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,sBAAsB,CAAC,GAAc,EAAE,SAAkB,EAAE,GAAiB;QAClF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QAEpC,IAAI,sBAAsB,GAAG,KAAK,CAAC;QACnC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;gBAAE,OAAO;YAE3C,wEAAwE;YACxE,uEAAuE;YACvE,wEAAwE;YACxE,gEAAgE;YAChE,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAC3D,CAAC;YACF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAO;YAEhD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,wEAAwE;YACxE,iEAAiE;YACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAO;YACrC,sEAAsE;YACtE,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YACxC,sEAAsE;YACtE,cAAc;YACd,IAAI,QAAQ,KAAK,GAAG,CAAC,IAAI;gBAAE,OAAO;YAElC,sBAAsB,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,sBAAsB,CAAC;IAChC,CAAC;CACF;AAED,iFAAiF;AAEjF,8EAA8E;AAC9E,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,YAAY,GAAG;QACnB,kBAAkB;QAClB,kBAAkB;QAClB,aAAa;QACb,QAAQ;QACR,SAAS;KACV,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,iFAAiF;AACjF,SAAS,kBAAkB,CAAC,IAAa,EAAE,QAA0C;IACnF,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,CAAC;IAEhC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAE5B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;YAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0EAA0E;AAC1E,SAAS,OAAO,CAAC,IAAa,EAAE,QAAiC;IAC/D,QAAQ,CAAC,IAAI,CAAC,CAAC;IACf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"UniversalSOLIDAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"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"}