@yalehwang/archguard 0.1.17 → 0.1.19

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/dist/analysis/test-analyzer.d.ts +19 -0
  2. package/dist/analysis/test-analyzer.d.ts.map +1 -0
  3. package/dist/analysis/test-analyzer.js +169 -0
  4. package/dist/analysis/test-analyzer.js.map +1 -0
  5. package/dist/analysis/test-coverage-mapper.d.ts +6 -0
  6. package/dist/analysis/test-coverage-mapper.d.ts.map +1 -0
  7. package/dist/analysis/test-coverage-mapper.js +42 -0
  8. package/dist/analysis/test-coverage-mapper.js.map +1 -0
  9. package/dist/analysis/test-issue-detector.d.ts +5 -0
  10. package/dist/analysis/test-issue-detector.d.ts.map +1 -0
  11. package/dist/analysis/test-issue-detector.js +45 -0
  12. package/dist/analysis/test-issue-detector.js.map +1 -0
  13. package/dist/cli/analyze/normalize-to-diagrams.d.ts.map +1 -1
  14. package/dist/cli/analyze/normalize-to-diagrams.js +3 -16
  15. package/dist/cli/analyze/normalize-to-diagrams.js.map +1 -1
  16. package/dist/cli/analyze/run-analysis.d.ts.map +1 -1
  17. package/dist/cli/analyze/run-analysis.js +61 -0
  18. package/dist/cli/analyze/run-analysis.js.map +1 -1
  19. package/dist/cli/cache-manager.d.ts +4 -0
  20. package/dist/cli/cache-manager.d.ts.map +1 -1
  21. package/dist/cli/cache-manager.js +20 -1
  22. package/dist/cli/cache-manager.js.map +1 -1
  23. package/dist/cli/commands/analyze.d.ts.map +1 -1
  24. package/dist/cli/commands/analyze.js +2 -2
  25. package/dist/cli/commands/analyze.js.map +1 -1
  26. package/dist/cli/mcp/mcp-server.d.ts.map +1 -1
  27. package/dist/cli/mcp/mcp-server.js +2 -0
  28. package/dist/cli/mcp/mcp-server.js.map +1 -1
  29. package/dist/cli/mcp/tools/test-analysis-tools.d.ts +3 -0
  30. package/dist/cli/mcp/tools/test-analysis-tools.d.ts.map +1 -0
  31. package/dist/cli/mcp/tools/test-analysis-tools.js +204 -0
  32. package/dist/cli/mcp/tools/test-analysis-tools.js.map +1 -0
  33. package/dist/cli/processors/diagram-processor.d.ts +5 -1
  34. package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
  35. package/dist/cli/processors/diagram-processor.js +27 -0
  36. package/dist/cli/processors/diagram-processor.js.map +1 -1
  37. package/dist/cli/query/engine-loader.d.ts.map +1 -1
  38. package/dist/cli/query/engine-loader.js +11 -0
  39. package/dist/cli/query/engine-loader.js.map +1 -1
  40. package/dist/cli/query/query-engine.d.ts +3 -1
  41. package/dist/cli/query/query-engine.d.ts.map +1 -1
  42. package/dist/cli/query/query-engine.js +6 -0
  43. package/dist/cli/query/query-engine.js.map +1 -1
  44. package/dist/cli/utils/test-output-writer.d.ts +7 -0
  45. package/dist/cli/utils/test-output-writer.d.ts.map +1 -0
  46. package/dist/cli/utils/test-output-writer.js +71 -0
  47. package/dist/cli/utils/test-output-writer.js.map +1 -0
  48. package/dist/core/interfaces/language-plugin.d.ts +16 -0
  49. package/dist/core/interfaces/language-plugin.d.ts.map +1 -1
  50. package/dist/mermaid/test-coverage-renderer.d.ts +8 -0
  51. package/dist/mermaid/test-coverage-renderer.d.ts.map +1 -0
  52. package/dist/mermaid/test-coverage-renderer.js +74 -0
  53. package/dist/mermaid/test-coverage-renderer.js.map +1 -0
  54. package/dist/parser/typescript-parser.d.ts +1 -1
  55. package/dist/parser/typescript-parser.d.ts.map +1 -1
  56. package/dist/parser/typescript-parser.js +8 -3
  57. package/dist/parser/typescript-parser.js.map +1 -1
  58. package/dist/plugins/cpp/index.d.ts +4 -1
  59. package/dist/plugins/cpp/index.d.ts.map +1 -1
  60. package/dist/plugins/cpp/index.js +88 -0
  61. package/dist/plugins/cpp/index.js.map +1 -1
  62. package/dist/plugins/golang/atlas/index.d.ts +3 -27
  63. package/dist/plugins/golang/atlas/index.d.ts.map +1 -1
  64. package/dist/plugins/golang/atlas/index.js +2 -167
  65. package/dist/plugins/golang/atlas/index.js.map +1 -1
  66. package/dist/plugins/golang/atlas/types.d.ts +1 -1
  67. package/dist/plugins/golang/atlas/types.d.ts.map +1 -1
  68. package/dist/plugins/golang/index.d.ts +20 -6
  69. package/dist/plugins/golang/index.d.ts.map +1 -1
  70. package/dist/plugins/golang/index.js +290 -91
  71. package/dist/plugins/golang/index.js.map +1 -1
  72. package/dist/plugins/java/index.d.ts +5 -1
  73. package/dist/plugins/java/index.d.ts.map +1 -1
  74. package/dist/plugins/java/index.js +99 -0
  75. package/dist/plugins/java/index.js.map +1 -1
  76. package/dist/plugins/python/index.d.ts +2 -0
  77. package/dist/plugins/python/index.d.ts.map +1 -1
  78. package/dist/plugins/python/index.js +6 -0
  79. package/dist/plugins/python/index.js.map +1 -1
  80. package/dist/plugins/typescript/index.d.ts +4 -1
  81. package/dist/plugins/typescript/index.d.ts.map +1 -1
  82. package/dist/plugins/typescript/index.js +102 -4
  83. package/dist/plugins/typescript/index.js.map +1 -1
  84. package/dist/types/config-cli.d.ts +2 -2
  85. package/dist/types/config-cli.d.ts.map +1 -1
  86. package/dist/types/extensions.d.ts +60 -0
  87. package/dist/types/extensions.d.ts.map +1 -1
  88. package/dist/types/extensions.js +1 -0
  89. package/dist/types/extensions.js.map +1 -1
  90. package/dist/types/index.d.ts +2 -2
  91. package/dist/types/index.d.ts.map +1 -1
  92. package/dist/types/index.js +1 -1
  93. package/dist/types/index.js.map +1 -1
  94. package/package.json +3 -1
@@ -1,168 +1,3 @@
1
- import { GoPlugin } from '../index.js';
2
- import { BehaviorAnalyzer } from './behavior-analyzer.js';
3
- import { AtlasRenderer } from './renderers/atlas-renderer.js';
4
- import { GoModResolver } from './go-mod-resolver.js';
5
- import { FrameworkDetector } from './framework-detector.js';
6
- import { GO_ATLAS_EXTENSION_VERSION } from './types.js';
7
- function isTestPackage(fullName) {
8
- if (fullName.startsWith('tests/') || fullName === 'tests')
9
- return true;
10
- const segs = fullName.split('/');
11
- if (segs.some((s) => s === 'testutil' || s === 'hubtest'))
12
- return true;
13
- return false;
14
- }
15
- function inferBodyStrategy(layers, explicit) {
16
- if (explicit)
17
- return explicit;
18
- const needsBody = layers.some((l) => l === 'goroutine' || l === 'flow');
19
- return needsBody ? 'selective' : 'none';
20
- }
21
- export class GoAtlasPlugin {
22
- metadata = {
23
- name: 'golang',
24
- version: '5.0.0',
25
- displayName: 'Go Architecture Atlas',
26
- fileExtensions: ['.go'],
27
- author: 'ArchGuard Team',
28
- minCoreVersion: '2.0.0',
29
- capabilities: {
30
- singleFileParsing: true,
31
- incrementalParsing: false,
32
- dependencyExtraction: true,
33
- typeInference: true,
34
- },
35
- };
36
- supportedLevels = ['package', 'capability', 'goroutine', 'flow'];
37
- goPlugin;
38
- behaviorAnalyzer;
39
- atlasRenderer;
40
- goModResolver;
41
- dependencyExtractor;
42
- constructor() {
43
- this.goPlugin = new GoPlugin();
44
- this.goModResolver = new GoModResolver();
45
- this.behaviorAnalyzer = new BehaviorAnalyzer(this.goModResolver);
46
- this.atlasRenderer = new AtlasRenderer();
47
- this.dependencyExtractor = this.goPlugin.dependencyExtractor;
48
- }
49
- async initialize(config) {
50
- await this.goPlugin.initialize(config);
51
- }
52
- canHandle(targetPath) {
53
- return this.goPlugin.canHandle(targetPath);
54
- }
55
- parseCode(code, filePath) {
56
- return this.goPlugin.parseCode(code, filePath);
57
- }
58
- async parseFiles(filePaths) {
59
- return this.goPlugin.parseFiles(filePaths);
60
- }
61
- async parseProject(workspaceRoot, config) {
62
- const atlasConfig = config.languageSpecific?.['atlas'];
63
- if (atlasConfig?.enabled === false) {
64
- return this.goPlugin.parseProject(workspaceRoot, config);
65
- }
66
- const baseArchJSON = await this.goPlugin.parseProject(workspaceRoot, config);
67
- const layers = atlasConfig?.layers ?? ['package', 'capability', 'goroutine', 'flow'];
68
- const functionBodyStrategy = inferBodyStrategy(layers, atlasConfig?.functionBodyStrategy);
69
- const atlas = await this.generateAtlas(workspaceRoot, {
70
- functionBodyStrategy,
71
- includeTests: atlasConfig?.includeTests,
72
- excludeTests: atlasConfig?.excludeTests ?? true,
73
- includePatterns: config.includePatterns,
74
- excludePatterns: [...(config.excludePatterns ?? []), ...(atlasConfig?.excludePatterns ?? [])],
75
- protocols: atlasConfig?.protocols,
76
- customFrameworks: atlasConfig?.customFrameworks,
77
- entryPoints: atlasConfig?.entryPoints,
78
- followIndirectCalls: atlasConfig?.followIndirectCalls,
79
- });
80
- return {
81
- ...baseArchJSON,
82
- extensions: { goAtlas: atlas },
83
- };
84
- }
85
- async generateAtlas(rootPath, options = {}) {
86
- const startTime = performance.now();
87
- const excludePatterns = [
88
- ...(options.excludePatterns || []),
89
- '**/vendor/**',
90
- '**/testdata/**',
91
- ...(options.excludeTests ? ['**/*_test.go'] : []),
92
- ];
93
- let rawData = await this.goPlugin.parseToRawData(rootPath, {
94
- workspaceRoot: rootPath,
95
- includePatterns: options.includePatterns,
96
- excludePatterns,
97
- extractBodies: options.functionBodyStrategy !== 'none',
98
- selectiveExtraction: options.functionBodyStrategy === 'selective',
99
- });
100
- if (options.excludeTests) {
101
- rawData = {
102
- ...rawData,
103
- packages: rawData.packages.filter((pkg) => !isTestPackage(pkg.fullName)),
104
- };
105
- }
106
- const moduleInfo = await this.goModResolver.resolveProject(rootPath);
107
- const detectedFrameworks = new FrameworkDetector().detect(moduleInfo, rawData);
108
- const [packageGraph, capabilityGraph, goroutineTopology, flowGraph] = await Promise.all([
109
- this.behaviorAnalyzer.buildPackageGraph(rawData),
110
- this.behaviorAnalyzer.buildCapabilityGraph(rawData),
111
- this.behaviorAnalyzer.buildGoroutineTopology(rawData, {
112
- includeTests: options.includeTests,
113
- }),
114
- this.behaviorAnalyzer.buildFlowGraph(rawData, {
115
- detectedFrameworks,
116
- protocols: options.protocols,
117
- customFrameworks: options.customFrameworks,
118
- entryPoints: options.entryPoints,
119
- followIndirectCalls: options.followIndirectCalls,
120
- }),
121
- ]);
122
- const totalTime = performance.now() - startTime;
123
- const warnings = [];
124
- if (flowGraph.entryPoints.length === 0) {
125
- warnings.push(`Flow graph: no entry points detected. Frameworks found: ${[...detectedFrameworks].join(', ')}. ` +
126
- `Add 'customFrameworks' or 'entryPoints' to archguard.config.json to configure detection.`);
127
- }
128
- return {
129
- version: GO_ATLAS_EXTENSION_VERSION,
130
- layers: {
131
- package: packageGraph,
132
- capability: capabilityGraph,
133
- goroutine: goroutineTopology,
134
- flow: flowGraph,
135
- },
136
- metadata: {
137
- generatedAt: new Date().toISOString(),
138
- generationStrategy: {
139
- functionBodyStrategy: options.functionBodyStrategy ?? 'none',
140
- detectedFrameworks: [...detectedFrameworks],
141
- protocols: options.protocols,
142
- followIndirectCalls: options.followIndirectCalls ?? false,
143
- goplsEnabled: false,
144
- },
145
- completeness: {
146
- package: 1.0,
147
- capability: 0.85,
148
- goroutine: options.functionBodyStrategy === 'full' ? 0.7 : 0.5,
149
- flow: 0.6,
150
- },
151
- performance: {
152
- fileCount: rawData.packages.length,
153
- parseTime: totalTime,
154
- totalTime,
155
- memoryUsage: process.memoryUsage().heapUsed,
156
- },
157
- warnings: warnings.length > 0 ? warnings : undefined,
158
- },
159
- };
160
- }
161
- async renderLayer(atlas, layer = 'all', format = 'mermaid') {
162
- return this.atlasRenderer.render(atlas, layer, format);
163
- }
164
- async dispose() {
165
- await this.goPlugin.dispose();
166
- }
167
- }
1
+ export { GoPlugin as GoAtlasPlugin } from '../index.js';
2
+ export { GO_ATLAS_EXTENSION_VERSION } from './types.js';
168
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/golang/atlas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/golang/atlas/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAY,MAAM,aAAa,CAAC;AAWlE,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC"}
@@ -50,7 +50,7 @@ export interface AtlasGenerationOptions {
50
50
  followIndirectCalls?: boolean;
51
51
  }
52
52
  export interface AtlasConfig {
53
- enabled: boolean;
53
+ enabled?: boolean;
54
54
  functionBodyStrategy?: 'none' | 'selective' | 'full';
55
55
  layers?: AtlasLayer[];
56
56
  includeTests?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugins/golang/atlas/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugins/golang/atlas/types.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
- import type { ILanguagePlugin, PluginMetadata, PluginInitConfig } from '../../core/interfaces/language-plugin.js';
1
+ import type { ILanguagePlugin, PluginMetadata, PluginInitConfig, RawTestFile } from '../../core/interfaces/language-plugin.js';
2
+ import type { TestPatternConfig } from '../../types/extensions.js';
2
3
  import type { ParseConfig } from '../../core/interfaces/parser.js';
3
4
  import type { ArchJSON } from '../../types/index.js';
4
5
  import type { IDependencyExtractor } from '../../core/interfaces/dependency.js';
5
6
  import type { TreeSitterParseOptions } from './tree-sitter-bridge.js';
6
7
  import type { GoRawData } from './types.js';
8
+ import type { GoArchitectureAtlas, AtlasGenerationOptions, AtlasLayer, RenderFormat, RenderResult } from './atlas/types.js';
7
9
  export type { IDependencyExtractor } from '../../core/interfaces/dependency.js';
8
- export declare class GoPlugin implements ILanguagePlugin {
10
+ export interface IGoAtlas {
11
+ generateAtlas(rootPath: string, options?: AtlasGenerationOptions): Promise<GoArchitectureAtlas>;
12
+ renderLayer(atlas: GoArchitectureAtlas, layer: AtlasLayer, format: RenderFormat): Promise<RenderResult>;
13
+ }
14
+ export declare class GoPlugin implements ILanguagePlugin, IGoAtlas {
9
15
  readonly metadata: PluginMetadata;
10
- readonly supportedLevels: readonly ["package", "class", "method"];
16
+ readonly supportedLevels: readonly ["package", "capability", "goroutine", "flow"];
11
17
  readonly dependencyExtractor: IDependencyExtractor;
12
18
  private treeSitter;
13
19
  private matcher;
@@ -15,15 +21,23 @@ export declare class GoPlugin implements ILanguagePlugin {
15
21
  private goplsClient;
16
22
  private initialized;
17
23
  private workspaceRoot;
24
+ private behaviorAnalyzer;
25
+ private atlasRenderer;
26
+ private goModResolver;
18
27
  constructor();
19
28
  initialize(config: PluginInitConfig): Promise<void>;
20
29
  canHandle(targetPath: string): boolean;
21
- parseToRawData(workspaceRoot: string, config: ParseConfig & TreeSitterParseOptions): Promise<GoRawData>;
22
- parseProject(workspaceRoot: string, config: ParseConfig): Promise<ArchJSON>;
23
- private readModuleName;
24
30
  parseCode(code: string, filePath?: string): ArchJSON;
25
31
  parseFiles(filePaths: string[]): Promise<ArchJSON>;
32
+ parseProject(workspaceRoot: string, config: ParseConfig): Promise<ArchJSON>;
33
+ parseToRawData(workspaceRoot: string, config: ParseConfig & TreeSitterParseOptions): Promise<GoRawData>;
34
+ generateAtlas(rootPath: string, options?: AtlasGenerationOptions): Promise<GoArchitectureAtlas>;
35
+ renderLayer(atlas: GoArchitectureAtlas, layer?: AtlasLayer, format?: RenderFormat): Promise<RenderResult>;
26
36
  dispose(): Promise<void>;
37
+ private buildAtlasFromRawData;
27
38
  private ensureInitialized;
39
+ isTestFile(filePath: string, _patternConfig?: TestPatternConfig): boolean;
40
+ extractTestStructure(filePath: string, code: string, _patternConfig?: TestPatternConfig): RawTestFile | null;
41
+ private readModuleName;
28
42
  }
29
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/golang/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EACjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAKtE,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,YAAY,CAAC;AAG1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAS5E,qBAAa,QAAS,YAAW,eAAe;IAC9C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAc/B;IAEF,QAAQ,CAAC,eAAe,0CAA2C;IAEnE,QAAQ,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;IAEnD,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAM;;IASrB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IA4BhC,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,GAAG,sBAAsB,GAC3C,OAAO,CAAC,SAAS,CAAC;IAqGf,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;YAqCnE,cAAc;IAc5B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAoB,GAAG,QAAQ;IAyB3D,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2ElD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB9B,OAAO,CAAC,iBAAiB;CAK1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/golang/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,WAAW,EAEZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAKtE,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,YAAY,CAAC;AAK1D,OAAO,KAAK,EACV,mBAAmB,EAEnB,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,YAAY,EACb,MAAM,kBAAkB,CAAC;AAI1B,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AA2B5E,MAAM,WAAW,QAAQ;IACvB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChG,WAAW,CACT,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B;AAcD,qBAAa,QAAS,YAAW,eAAe,EAAE,QAAQ;IACxD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAe/B;IAEF,QAAQ,CAAC,eAAe,0DAA2D;IAEnF,QAAQ,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;IAGnD,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAM;IAG3B,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,aAAa,CAAiB;;IAShC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BzD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAyBtC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAoB,GAAG,QAAQ;IAyB3D,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkFlD,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoF3E,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,GAAG,sBAAsB,GAC3C,OAAO,CAAC,SAAS,CAAC;IA0Gf,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC;IAgCzB,WAAW,CACf,KAAK,EAAE,mBAAmB,EAC1B,KAAK,GAAE,UAAkB,EACzB,MAAM,GAAE,YAAwB,GAC/B,OAAO,CAAC,YAAY,CAAC;IAOlB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBhB,qBAAqB;IA6EnC,OAAO,CAAC,iBAAiB;IAMzB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,iBAAiB,GAAG,OAAO;IAIzE,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,iBAAiB,GACjC,WAAW,GAAG,IAAI;YA8DP,cAAc;CAS7B"}