@girardelli/architect 1.3.0 → 2.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 (58) hide show
  1. package/README.md +111 -112
  2. package/dist/agent-generator.d.ts +95 -0
  3. package/dist/agent-generator.d.ts.map +1 -0
  4. package/dist/agent-generator.js +1295 -0
  5. package/dist/agent-generator.js.map +1 -0
  6. package/dist/cli.js +76 -2
  7. package/dist/cli.js.map +1 -1
  8. package/dist/html-reporter.d.ts +8 -2
  9. package/dist/html-reporter.d.ts.map +1 -1
  10. package/dist/html-reporter.js +470 -5
  11. package/dist/html-reporter.js.map +1 -1
  12. package/dist/index.d.ts +26 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +25 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/refactor-engine.d.ts +18 -0
  17. package/dist/refactor-engine.d.ts.map +1 -0
  18. package/dist/refactor-engine.js +86 -0
  19. package/dist/refactor-engine.js.map +1 -0
  20. package/dist/refactor-reporter.d.ts +20 -0
  21. package/dist/refactor-reporter.d.ts.map +1 -0
  22. package/dist/refactor-reporter.js +389 -0
  23. package/dist/refactor-reporter.js.map +1 -0
  24. package/dist/rules/barrel-optimizer.d.ts +13 -0
  25. package/dist/rules/barrel-optimizer.d.ts.map +1 -0
  26. package/dist/rules/barrel-optimizer.js +77 -0
  27. package/dist/rules/barrel-optimizer.js.map +1 -0
  28. package/dist/rules/dead-code-detector.d.ts +21 -0
  29. package/dist/rules/dead-code-detector.d.ts.map +1 -0
  30. package/dist/rules/dead-code-detector.js +117 -0
  31. package/dist/rules/dead-code-detector.js.map +1 -0
  32. package/dist/rules/hub-splitter.d.ts +13 -0
  33. package/dist/rules/hub-splitter.d.ts.map +1 -0
  34. package/dist/rules/hub-splitter.js +110 -0
  35. package/dist/rules/hub-splitter.js.map +1 -0
  36. package/dist/rules/import-organizer.d.ts +13 -0
  37. package/dist/rules/import-organizer.d.ts.map +1 -0
  38. package/dist/rules/import-organizer.js +85 -0
  39. package/dist/rules/import-organizer.js.map +1 -0
  40. package/dist/rules/module-grouper.d.ts +13 -0
  41. package/dist/rules/module-grouper.d.ts.map +1 -0
  42. package/dist/rules/module-grouper.js +110 -0
  43. package/dist/rules/module-grouper.js.map +1 -0
  44. package/dist/types.d.ts +51 -0
  45. package/dist/types.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/src/agent-generator.ts +1401 -0
  48. package/src/cli.ts +83 -2
  49. package/src/html-reporter.ts +496 -6
  50. package/src/index.ts +39 -1
  51. package/src/refactor-engine.ts +117 -0
  52. package/src/refactor-reporter.ts +408 -0
  53. package/src/rules/barrel-optimizer.ts +97 -0
  54. package/src/rules/dead-code-detector.ts +132 -0
  55. package/src/rules/hub-splitter.ts +123 -0
  56. package/src/rules/import-organizer.ts +98 -0
  57. package/src/rules/module-grouper.ts +124 -0
  58. package/src/types.ts +52 -0
package/README.md CHANGED
@@ -1,32 +1,21 @@
1
1
  # Architect
2
2
 
3
- **AI-powered architecture analysis tool**
3
+ **AI-powered architecture analysis, refactoring, and agent system generator**
4
4
 
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)
6
6
  [![Node.js](https://img.shields.io/badge/Node.js-18+-339933.svg)](https://nodejs.org/)
7
+ [![npm](https://img.shields.io/npm/v/@girardelli/architect)](https://www.npmjs.com/package/@girardelli/architect)
7
8
  [![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
8
9
 
9
- Understand your codebase architecture in seconds. Detect anti-patterns, visualize dependencies, and get actionable refactoring suggestions — all from a single command.
10
+ Understand your codebase architecture in seconds. Detect anti-patterns, get refactoring plans, and generate AI agent configurations — all from a single command.
10
11
 
11
- ## Overview
12
+ ## What's New in v2.1
12
13
 
13
- Architect performs deep structural analysis of software projects. It generates visual architecture diagrams, calculates quality metrics, and identifies architectural anti-patterns that could indicate technical debt or design problems.
14
-
15
- ## Features
16
-
17
- - **Architecture Quality Score** — 0-100 score with weighted component breakdown (Modularity, Coupling, Cohesion, Layering)
18
- - **Premium HTML Reports** — Dark-themed visual reports with interactive Mermaid diagrams, score gauges, and responsive layout
19
- - **Anti-Pattern Detection**
20
- - God Class (excessive responsibilities and methods)
21
- - Circular Dependencies (mutual dependencies creating tight coupling)
22
- - Leaky Abstractions (internal implementation details exposed publicly)
23
- - Feature Envy (classes excessively using other class methods)
24
- - Shotgun Surgery (changes requiring scattered modifications)
25
- - **Layer Detection** — Automatically identifies architectural layers (API, Service, Data, UI, Infrastructure)
26
- - **Framework Detection** — Auto-detects NestJS, React, Angular, Vue.js, Express, Next.js, TypeORM, Prisma, Spring Boot, Django, and more
27
- - **Multi-Language Support** — TypeScript, JavaScript, Python, Java, Go, Ruby, PHP, Rust, SQL, and more
28
- - **Multiple Output Formats** — HTML, JSON, and Markdown
29
- - **NestJS-Aware** — Calibrated thresholds for NestJS module architecture (entities, DTOs, guards, pipes, interceptors)
14
+ - 🔧 **Unified `analyze` command** Architecture analysis + refactoring plan + agent system suggestions in one report
15
+ - 🤖 **AI Agent System Generator** — Suggests agents, rules, guards, workflows, and skills based on detected stack
16
+ - 🧠 **Skills from [skills.sh](https://skills.sh)** — Stack-specific skill recommendations with install commands
17
+ - 🎯 **Interactive UI** — Toggle cards with Select All/None, dynamic command builder, and copy-to-clipboard
18
+ - 📊 **Refactoring Plan** — Tier-based refactoring steps with score impact predictions
30
19
 
31
20
  ## Quick Start
32
21
 
@@ -39,90 +28,126 @@ npm install -g @girardelli/architect
39
28
  architect analyze ./src
40
29
  ```
41
30
 
31
+ ## Features
32
+
33
+ ### 📊 Architecture Analysis
34
+ - **Quality Score** — 0-100 score with weighted breakdown (Modularity, Coupling, Cohesion, Layering)
35
+ - **Anti-Pattern Detection** — God Class, Circular Dependencies, Leaky Abstractions, Feature Envy, Shotgun Surgery
36
+ - **Layer Detection** — Automatically identifies API, Service, Data, UI, and Infrastructure layers
37
+ - **Dependency Graph** — Interactive D3.js force-directed graph visualization
38
+ - **Framework Detection** — NestJS, React, Angular, Vue, Next.js, Express, Django, Flask, Spring Boot, and more
39
+ - **Multi-Language** — TypeScript, JavaScript, Python, Java, Go, Ruby, PHP, Rust, SQL
40
+
41
+ ### 🔧 Refactoring Plan
42
+ - **Tier 1 (Quick Wins)** — Low-risk improvements for immediate impact
43
+ - **Tier 2 (Strategic)** — Larger refactoring with architecture-level benefits
44
+ - **Score Impact** — Before/after predictions for each refactoring step
45
+ - **File Operations** — CREATE, MOVE, MODIFY, DELETE with detailed descriptions
46
+
47
+ ### 🤖 AI Agent System
48
+ - **Stack Detection** — Identifies languages, frameworks, backend/frontend/mobile/database
49
+ - **Agent Suggestions** — Orchestrator, Backend Developer, Frontend Developer, Database Engineer, Security Auditor, QA, Tech Debt Controller
50
+ - **Rules & Guards** — Architecture rules, security rules, preflight checks, quality gates
51
+ - **Workflows** — Development, bug-fix, code review workflows
52
+ - **Skills** — [skills.sh](https://skills.sh) recommendations mapped to your stack (TDD, debugging, security, performance, etc.)
53
+ - **Audit Mode** — If `.agent/` exists, audits and suggests improvements
54
+ - **Interactive UI** — Toggle cards for selecting which items to generate
55
+ - **Command Builder** — Dynamic CLI command updates based on selection
56
+
57
+ ### 📄 Premium HTML Report
58
+ - Dark-themed responsive design with Inter font
59
+ - Animated score gauge with gradient
60
+ - Interactive D3.js dependency graph
61
+ - Bubble chart for anti-pattern severity
62
+ - Collapsible refactoring steps with code previews
63
+ - Toggle cards for agent system selection
64
+ - Single self-contained HTML file (no external dependencies)
65
+
42
66
  ## CLI Commands
43
67
 
44
68
  ### `architect analyze [path]`
45
- Full architecture analysis with diagram generation, quality scoring, and anti-pattern detection.
69
+ **The unified command** runs architecture analysis, refactoring plan, and agent suggestions.
46
70
 
47
71
  ```bash
48
- # Generate HTML report (default)
72
+ # Full analysis with HTML report (default)
49
73
  architect analyze ./src
50
74
 
51
- # Generate specific format
52
- architect analyze ./src --format html --output report.html
75
+ # Custom output path
76
+ architect analyze ./src --output docs/report.html
77
+
78
+ # JSON or Markdown output
53
79
  architect analyze ./src --format json --output report.json
54
80
  architect analyze ./src --format markdown --output report.md
55
81
  ```
56
82
 
57
- ### `architect diagram [path]`
58
- Generate architecture diagram in Mermaid format.
83
+ ### `architect refactor [path]`
84
+ Generate a standalone refactoring plan.
59
85
 
60
86
  ```bash
61
- architect diagram ./src
87
+ architect refactor ./src --output refactor-plan.html
62
88
  ```
63
89
 
64
- ### `architect score [path]`
65
- Calculate architecture quality score with component breakdowns.
90
+ ### `architect agents [path]`
91
+ Generate or audit the `.agent/` directory for AI coding assistants.
66
92
 
67
93
  ```bash
68
- architect score ./src
69
- ```
94
+ # Generate agent configuration files
95
+ architect agents ./
70
96
 
71
- ### `architect anti-patterns [path]`
72
- Detect and report anti-patterns with severity levels and remediation suggestions.
73
-
74
- ```bash
75
- architect anti-patterns ./src
97
+ # With specific selections
98
+ architect agents ./ --agents ORCHESTRATOR,QA-TEST-ENGINEER --rules 00-general,01-architecture
76
99
  ```
77
100
 
78
- ### `architect layers [path]`
79
- Analyze layer structure and code distribution across architectural layers.
80
-
81
- ```bash
82
- architect layers ./src
83
- ```
101
+ ### `architect diagram [path]`
102
+ Generate architecture diagram in Mermaid format.
84
103
 
85
- ## How It Works
104
+ ### `architect score [path]`
105
+ Calculate architecture quality score.
86
106
 
87
- Architect uses a multi-agent pipeline to analyze your codebase:
107
+ ### `architect anti-patterns [path]`
108
+ Detect anti-patterns with severity levels.
88
109
 
89
- 1. **Scanner** Traverses project directory, identifies file types, counts lines of code, detects frameworks (including parent `package.json` files), and builds a file tree structure.
110
+ ### `architect layers [path]`
111
+ Analyze layer structure and distribution.
90
112
 
91
- 2. **Analyzer** — Parses import statements across JavaScript, TypeScript, Python, and Java. Builds a dependency graph and identifies architectural layers (API, Service, Data, UI, Infrastructure) with NestJS-aware heuristics.
113
+ ## Output Example
92
114
 
93
- 3. **Anti-Pattern Detector** — Scans for God Classes, Circular Dependencies, Leaky Abstractions, Feature Envy, and Shotgun Surgery with configurable thresholds calibrated for modern frameworks.
115
+ ```
116
+ 🏗️ Architect — Architecture Analysis
117
+ 📂 Path: /path/to/project/src
118
+ 📋 Command: analyze
119
+ 📄 Format: html
94
120
 
95
- 4. **Scorer** Evaluates architecture quality across four dimensions:
96
- - **Modularity (40%)** — Appropriate module boundaries and cohesion
97
- - **Coupling (25%)** — Dependencies between modules minimized
98
- - **Cohesion (20%)** — Related functionality grouped together
99
- - **Layering Compliance (15%)** — Proper separation of concerns
121
+ HTML report saved to: architect-report.html
122
+ 📊 Score: 82/100
123
+ ⚠️ Anti-patterns: 1
124
+ 🔧 Refactoring steps: 2
125
+ 🤖 Suggested agents: 6
100
126
 
101
- 5. **Reporter** — Generates comprehensive reports in HTML, Markdown, or JSON with diagrams, scores, findings, and suggestions.
127
+ ═══════════════════════════════════════
128
+ SCORE: 82/100
129
+ ═══════════════════════════════════════
130
+ ├─ Modularity: 95
131
+ ├─ Coupling: 50
132
+ ├─ Cohesion: 95
133
+ └─ Layering: 85
134
+
135
+ 📁 Files: 12 | 📝 Lines: 1,521
136
+ ⚠️ Anti-patterns: 1
137
+ 🤖 Agents: 6 suggested | No .agent/ found
138
+ ```
102
139
 
103
140
  ## Configuration
104
141
 
105
- Create a `.architect.json` file in your project root to customize analysis:
142
+ Create `.architect.json` in your project root:
106
143
 
107
144
  ```json
108
145
  {
109
- "ignore": [
110
- "node_modules",
111
- "dist",
112
- ".git",
113
- "coverage"
114
- ],
115
- "frameworks": {
116
- "detect": true
117
- },
146
+ "ignore": ["node_modules", "dist", ".git", "coverage"],
147
+ "frameworks": { "detect": true },
118
148
  "antiPatterns": {
119
- "godClass": {
120
- "linesThreshold": 500,
121
- "methodsThreshold": 10
122
- },
123
- "shotgunSurgery": {
124
- "changePropagationThreshold": 8
125
- }
149
+ "godClass": { "linesThreshold": 500, "methodsThreshold": 10 },
150
+ "shotgunSurgery": { "changePropagationThreshold": 8 }
126
151
  },
127
152
  "score": {
128
153
  "modularity": 0.40,
@@ -162,13 +187,11 @@ jobs:
162
187
  npm install -D @girardelli/architect
163
188
  ```
164
189
 
165
- Add to your `package.json` scripts:
166
-
167
190
  ```json
168
191
  {
169
192
  "scripts": {
170
- "architect": "architect analyze ./src --format html --output docs/architect-report.html",
171
- "architect:json": "architect analyze ./src --format json --output docs/architect-report.json"
193
+ "architect": "architect analyze ./src --output docs/architect-report.html",
194
+ "architect:json": "architect analyze ./src --format json --output docs/report.json"
172
195
  }
173
196
  }
174
197
  ```
@@ -176,40 +199,22 @@ Add to your `package.json` scripts:
176
199
  ## Programmatic Usage
177
200
 
178
201
  ```typescript
179
- import { architect, HtmlReportGenerator } from '@girardelli/architect';
180
-
181
- const report = await architect.analyze('./src');
202
+ import { Architect, HtmlReportGenerator } from '@girardelli/architect';
182
203
 
183
- console.log(`Score: ${report.score.overall}/100`);
184
- console.log(`Anti-patterns: ${report.antiPatterns.length}`);
185
- console.log(`Frameworks: ${report.projectInfo.frameworks.join(', ')}`);
204
+ const architect = new Architect();
186
205
 
187
- // Generate HTML
188
- const htmlGenerator = new HtmlReportGenerator();
189
- const html = htmlGenerator.generateHtml(report);
190
- ```
191
-
192
- ## Output Example
193
-
194
- ```
195
- 🏗️ Architect — Architecture Analysis
196
- 📂 Path: /path/to/project/src
197
- 📋 Command: analyze
198
- 📄 Format: html
206
+ // Full analysis
207
+ const report = await architect.analyze('./src');
199
208
 
200
- HTML report saved to: architect-report.html
201
- 📊 Score: 59/100
209
+ // Refactoring plan
210
+ const plan = architect.refactor(report, './src');
202
211
 
203
- ═══════════════════════════════════════
204
- SCORE: 59/100
205
- ═══════════════════════════════════════
206
- ├─ Modularity: 70
207
- ├─ Coupling: 85
208
- ├─ Cohesion: 30
209
- └─ Layering: 25
212
+ // Agent suggestions (dry-run, no files created)
213
+ const agents = architect.suggestAgents('./');
210
214
 
211
- 📁 Files: 1125 | 📝 Lines: 195,709
212
- ⚠️ Anti-patterns: 463
215
+ // Generate unified HTML report
216
+ const htmlGenerator = new HtmlReportGenerator();
217
+ const html = htmlGenerator.generateHtml(report, plan, agents);
213
218
  ```
214
219
 
215
220
  ## Supported Frameworks
@@ -227,18 +232,12 @@ const html = htmlGenerator.generateHtml(report);
227
232
  | Spring Boot | `spring-boot` in pom.xml |
228
233
  | Django | `django` in requirements.txt |
229
234
  | Flask | `flask` in requirements.txt |
230
-
231
- ## Installation
232
-
233
- ```bash
234
- npm install
235
- npm run build
236
- npm test
237
- ```
235
+ | Flutter | `flutter` in pubspec.yaml |
238
236
 
239
237
  ## Development
240
238
 
241
239
  ```bash
240
+ npm install
242
241
  npm run build # Compile TypeScript
243
242
  npm run dev # Watch mode
244
243
  npm test # Run tests
@@ -266,4 +265,4 @@ See [LICENSE](LICENSE) for details.
266
265
 
267
266
  ---
268
267
 
269
- **Architect** — Making software architecture analysis accessible to every developer.
268
+ **Architect** — Architecture analysis, refactoring plans, and AI agent generation for every developer.
@@ -0,0 +1,95 @@
1
+ import { AnalysisReport, RefactoringPlan } from './types.js';
2
+ /**
3
+ * Stack detection result from project analysis.
4
+ */
5
+ export interface StackInfo {
6
+ primary: string;
7
+ languages: string[];
8
+ frameworks: string[];
9
+ hasBackend: boolean;
10
+ hasFrontend: boolean;
11
+ hasMobile: boolean;
12
+ hasDatabase: boolean;
13
+ testFramework: string;
14
+ packageManager: string;
15
+ }
16
+ /**
17
+ * Audit finding for existing agent directories.
18
+ */
19
+ export interface AgentAuditFinding {
20
+ type: 'MISSING' | 'OUTDATED' | 'IMPROVEMENT' | 'OK';
21
+ category: string;
22
+ file: string;
23
+ description: string;
24
+ suggestion?: string;
25
+ }
26
+ /**
27
+ * Result from suggest() — no files written, just recommendations.
28
+ */
29
+ export interface AgentSuggestion {
30
+ stack: StackInfo;
31
+ hasExistingAgents: boolean;
32
+ suggestedAgents: string[];
33
+ suggestedRules: string[];
34
+ suggestedGuards: string[];
35
+ suggestedWorkflows: string[];
36
+ suggestedSkills: {
37
+ name: string;
38
+ source: string;
39
+ description: string;
40
+ }[];
41
+ audit: AgentAuditFinding[];
42
+ command: string;
43
+ }
44
+ /**
45
+ * Agent Generator — Creates or audits .agent/ directories
46
+ * customized to the analyzed project's stack and architecture.
47
+ */
48
+ export declare class AgentGenerator {
49
+ private stack;
50
+ private report;
51
+ private plan;
52
+ /**
53
+ * Suggest agents without writing files — for unified report.
54
+ */
55
+ suggest(report: AnalysisReport, plan: RefactoringPlan, projectPath: string): AgentSuggestion;
56
+ /**
57
+ * Main entry: generate or audit .agent/ for a project.
58
+ */
59
+ generate(report: AnalysisReport, plan: RefactoringPlan, projectPath: string, outputDir?: string): {
60
+ generated: string[];
61
+ audit: AgentAuditFinding[];
62
+ };
63
+ /**
64
+ * Detect technology stack from the analysis report.
65
+ */
66
+ private detectStack;
67
+ private auditExisting;
68
+ private findAgentByRole;
69
+ private generateMissing;
70
+ private generateFull;
71
+ private getTemplateFor;
72
+ private get projectName();
73
+ private get stackLabel();
74
+ private genIndex;
75
+ private genSchema;
76
+ private genOrchestrator;
77
+ private genBackendAgent;
78
+ private genFrontendAgent;
79
+ private genMobileAgent;
80
+ private genDatabaseAgent;
81
+ private genSecurityAgent;
82
+ private genQAAgent;
83
+ private genTechDebtAgent;
84
+ private genGeneralRules;
85
+ private genArchitectureRules;
86
+ private genSecurityRules;
87
+ private genStackRules;
88
+ private genPreflight;
89
+ private genQualityGates;
90
+ private genCodeReview;
91
+ private genDevelopWorkflow;
92
+ private genFixBugWorkflow;
93
+ private genReviewWorkflow;
94
+ }
95
+ //# sourceMappingURL=agent-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-generator.d.ts","sourceRoot":"","sources":["../src/agent-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,IAAI,CAAmB;IAE/B;;OAEG;IACH,OAAO,CACL,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,MAAM,GAClB,eAAe;IA2FlB;;OAEG;IACH,QAAQ,CACN,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;KAAE;IAkBtD;;OAEG;IACH,OAAO,CAAC,WAAW;IAiEnB,OAAO,CAAC,aAAa;IAgFrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,YAAY;IAoDpB,OAAO,CAAC,cAAc;IAgBtB,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,UAAU,GAKrB;IAED,OAAO,CAAC,QAAQ;IAkDhB,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,eAAe;IAmHvB,OAAO,CAAC,eAAe;IAiFvB,OAAO,CAAC,gBAAgB;IAiDxB,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,gBAAgB;IAoDxB,OAAO,CAAC,UAAU;IAkElB,OAAO,CAAC,gBAAgB;IAoDxB,OAAO,CAAC,eAAe;IA2EvB,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,aAAa;IAuCrB,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,iBAAiB;CAqB1B"}