@enokdev/springdocs-mcp 1.2.5 → 1.2.8
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.
- package/README.md +28 -3
- package/build/index.js +8 -7
- package/build/index.js.map +1 -1
- package/build/services/advanced-features.d.ts +10 -1
- package/build/services/advanced-features.d.ts.map +1 -1
- package/build/services/advanced-features.js +125 -10
- package/build/services/advanced-features.js.map +1 -1
- package/build/services/spring-projects-config.d.ts +105 -0
- package/build/services/spring-projects-config.d.ts.map +1 -0
- package/build/services/spring-projects-config.js +228 -0
- package/build/services/spring-projects-config.js.map +1 -0
- package/build/services/springboot-docs-optimized.d.ts +23 -8
- package/build/services/springboot-docs-optimized.d.ts.map +1 -1
- package/build/services/springboot-docs-optimized.js +131 -32
- package/build/services/springboot-docs-optimized.js.map +1 -1
- package/build/tools/index.d.ts +39 -0
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +25 -7
- package/build/tools/index.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spring Projects Configuration Service
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all Spring project metadata, enabling generic multi-project
|
|
5
|
+
* architecture without hardcoding specific projects in service implementations.
|
|
6
|
+
*
|
|
7
|
+
* This configuration-driven approach allows adding new Spring projects (Security,
|
|
8
|
+
* Data, Cloud, etc.) with zero code changes - only configuration updates.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Spring Projects Registry
|
|
12
|
+
*
|
|
13
|
+
* Single source of truth for all supported Spring projects.
|
|
14
|
+
* To add a new Spring project, simply add a new entry here - no code changes required.
|
|
15
|
+
*/
|
|
16
|
+
export const SPRING_PROJECTS = new Map([
|
|
17
|
+
[
|
|
18
|
+
'boot',
|
|
19
|
+
{
|
|
20
|
+
id: 'boot',
|
|
21
|
+
displayName: 'Spring Boot',
|
|
22
|
+
baseDocUrl: 'https://docs.spring.io/spring-boot/docs',
|
|
23
|
+
latestVersion: '3.5.6',
|
|
24
|
+
apiPath: '/api',
|
|
25
|
+
hasVersionedDocs: true,
|
|
26
|
+
cacheStrategy: 'long', // Stable releases, cache aggressively
|
|
27
|
+
scopes: ['boot', 'web', 'data', 'actuator', 'starters', 'autoconfiguration'],
|
|
28
|
+
referenceSections: [
|
|
29
|
+
'web',
|
|
30
|
+
'data',
|
|
31
|
+
'messaging',
|
|
32
|
+
'io',
|
|
33
|
+
'actuator',
|
|
34
|
+
'deployment',
|
|
35
|
+
'native-image',
|
|
36
|
+
'testing',
|
|
37
|
+
'application-properties'
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
'ai',
|
|
43
|
+
{
|
|
44
|
+
id: 'ai',
|
|
45
|
+
displayName: 'Spring AI',
|
|
46
|
+
baseDocUrl: 'https://docs.spring.io/spring-ai/reference/api', // Sections are under /api/
|
|
47
|
+
latestVersion: '1.1.2',
|
|
48
|
+
apiPath: '/api',
|
|
49
|
+
hasVersionedDocs: false, // Spring AI docs don't have version in URL path
|
|
50
|
+
cacheStrategy: 'short', // AI documentation evolves rapidly, shorter cache
|
|
51
|
+
scopes: [
|
|
52
|
+
'ai',
|
|
53
|
+
'llm',
|
|
54
|
+
'rag',
|
|
55
|
+
'embeddings',
|
|
56
|
+
'vector',
|
|
57
|
+
'chatclient',
|
|
58
|
+
'openai',
|
|
59
|
+
'azure',
|
|
60
|
+
'anthropic',
|
|
61
|
+
'ollama',
|
|
62
|
+
'chroma',
|
|
63
|
+
'pinecone',
|
|
64
|
+
'pgvector'
|
|
65
|
+
],
|
|
66
|
+
referenceSections: [
|
|
67
|
+
'chatclient',
|
|
68
|
+
'chat-model',
|
|
69
|
+
'embedding-model',
|
|
70
|
+
'vector-stores',
|
|
71
|
+
'retrieval-augmented-generation',
|
|
72
|
+
'function-calling',
|
|
73
|
+
'prompt-templates',
|
|
74
|
+
'output-parsing'
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
[
|
|
79
|
+
'framework',
|
|
80
|
+
{
|
|
81
|
+
id: 'framework',
|
|
82
|
+
displayName: 'Spring Framework',
|
|
83
|
+
baseDocUrl: 'https://docs.spring.io/spring-framework/docs',
|
|
84
|
+
latestVersion: '6.2.6',
|
|
85
|
+
apiPath: '/javadoc-api',
|
|
86
|
+
hasVersionedDocs: true,
|
|
87
|
+
cacheStrategy: 'long',
|
|
88
|
+
scopes: ['core', 'context', 'beans', 'aop', 'web', 'webflux', 'data-access'],
|
|
89
|
+
referenceSections: [
|
|
90
|
+
'core',
|
|
91
|
+
'web',
|
|
92
|
+
'web-reactive',
|
|
93
|
+
'data-access',
|
|
94
|
+
'integration',
|
|
95
|
+
'languages',
|
|
96
|
+
'testing'
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
// Future projects can be added here:
|
|
101
|
+
// 'security', 'data-jpa', 'cloud', 'batch', 'integration', etc.
|
|
102
|
+
]);
|
|
103
|
+
/**
|
|
104
|
+
* Spring Projects Configuration Manager
|
|
105
|
+
*
|
|
106
|
+
* Provides type-safe access to Spring project configurations with validation
|
|
107
|
+
* and helper methods for URL construction.
|
|
108
|
+
*/
|
|
109
|
+
export class SpringProjectsConfig {
|
|
110
|
+
projects;
|
|
111
|
+
constructor(projectsMap = SPRING_PROJECTS) {
|
|
112
|
+
this.projects = projectsMap;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get configuration for a specific Spring project
|
|
116
|
+
* @throws Error if project not found
|
|
117
|
+
*/
|
|
118
|
+
getProject(projectId) {
|
|
119
|
+
const project = this.projects.get(projectId);
|
|
120
|
+
if (!project) {
|
|
121
|
+
const availableProjects = Array.from(this.projects.keys()).join(', ');
|
|
122
|
+
throw new Error(`Unknown Spring project: "${projectId}". Available projects: ${availableProjects}`);
|
|
123
|
+
}
|
|
124
|
+
return project;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if a project is supported
|
|
128
|
+
*/
|
|
129
|
+
hasProject(projectId) {
|
|
130
|
+
return this.projects.has(projectId);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get all supported project IDs
|
|
134
|
+
*/
|
|
135
|
+
getAllProjectIds() {
|
|
136
|
+
return Array.from(this.projects.keys());
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get all project configurations
|
|
140
|
+
*/
|
|
141
|
+
getAllProjects() {
|
|
142
|
+
return Array.from(this.projects.values());
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Build documentation reference URL for a project
|
|
146
|
+
*
|
|
147
|
+
* @param projectId - Project identifier
|
|
148
|
+
* @param section - Documentation section (e.g., "web", "chatclient")
|
|
149
|
+
* @param version - Optional version override (defaults to latest)
|
|
150
|
+
* @returns Complete URL to documentation section
|
|
151
|
+
*/
|
|
152
|
+
buildReferenceUrl(projectId, section, version) {
|
|
153
|
+
const project = this.getProject(projectId);
|
|
154
|
+
const targetVersion = version || project.latestVersion;
|
|
155
|
+
if (project.hasVersionedDocs) {
|
|
156
|
+
return `${project.baseDocUrl}/${targetVersion}/reference/html/${section}.html`;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
return `${project.baseDocUrl}/${section}.html`;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Build API documentation URL for a project
|
|
164
|
+
*
|
|
165
|
+
* @param projectId - Project identifier
|
|
166
|
+
* @param version - Optional version override (defaults to latest)
|
|
167
|
+
* @returns Complete URL to API documentation
|
|
168
|
+
*/
|
|
169
|
+
buildApiUrl(projectId, version) {
|
|
170
|
+
const project = this.getProject(projectId);
|
|
171
|
+
if (!project.apiPath) {
|
|
172
|
+
throw new Error(`Project "${projectId}" does not have API documentation configured`);
|
|
173
|
+
}
|
|
174
|
+
const targetVersion = version || project.latestVersion;
|
|
175
|
+
if (project.hasVersionedDocs) {
|
|
176
|
+
return `${project.baseDocUrl}/${targetVersion}${project.apiPath}/`;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
return `${project.baseDocUrl}${project.apiPath}/`;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Find projects by scope/keyword
|
|
184
|
+
* Useful for routing queries to appropriate projects
|
|
185
|
+
*
|
|
186
|
+
* @param scope - Search scope keyword (e.g., "ai", "boot", "security")
|
|
187
|
+
* @returns Array of matching project configurations
|
|
188
|
+
*/
|
|
189
|
+
findProjectsByScope(scope) {
|
|
190
|
+
const scopeLower = scope.toLowerCase();
|
|
191
|
+
return this.getAllProjects().filter(project => project.scopes.some(s => s.toLowerCase().includes(scopeLower)));
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get cache TTL in milliseconds for a project
|
|
195
|
+
*
|
|
196
|
+
* @param projectId - Project identifier
|
|
197
|
+
* @returns TTL in milliseconds
|
|
198
|
+
*/
|
|
199
|
+
getCacheTTL(projectId) {
|
|
200
|
+
const project = this.getProject(projectId);
|
|
201
|
+
// Convert strategy to milliseconds
|
|
202
|
+
switch (project.cacheStrategy) {
|
|
203
|
+
case 'short':
|
|
204
|
+
return 30 * 60 * 1000; // 30 minutes
|
|
205
|
+
case 'long':
|
|
206
|
+
return 24 * 60 * 60 * 1000; // 24 hours
|
|
207
|
+
default:
|
|
208
|
+
return 30 * 60 * 1000; // Default to 30 minutes
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Validate if a section exists for a project
|
|
213
|
+
* Returns true if validation passes or if project doesn't define sections
|
|
214
|
+
*/
|
|
215
|
+
validateSection(projectId, section) {
|
|
216
|
+
const project = this.getProject(projectId);
|
|
217
|
+
// If project doesn't define sections, allow any section
|
|
218
|
+
if (!project.referenceSections || project.referenceSections.length === 0) {
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
return project.referenceSections.includes(section);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Singleton instance for application-wide use
|
|
226
|
+
*/
|
|
227
|
+
export const springProjectsConfig = new SpringProjectsConfig();
|
|
228
|
+
//# sourceMappingURL=spring-projects-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spring-projects-config.js","sourceRoot":"","sources":["../../src/services/spring-projects-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
+
import { SpringProjectsConfig } from './spring-projects-config.js';
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
3
|
+
* Spring Documentation Service - Supports multiple Spring projects (Boot, AI, Framework, etc.)
|
|
4
|
+
* Uses ONLY real Spring documentation APIs - no mock data
|
|
5
|
+
*
|
|
6
|
+
* Architecture: Configuration-driven multi-project support via SpringProjectsConfig
|
|
4
7
|
*/
|
|
5
8
|
export declare class SpringBootDocsServiceOptimized {
|
|
6
9
|
private readonly baseUrl;
|
|
7
10
|
private readonly springProjectsUrl;
|
|
8
11
|
private readonly springGuideUrl;
|
|
9
|
-
private
|
|
12
|
+
private projectsConfig;
|
|
10
13
|
private turndownService;
|
|
11
14
|
private cache;
|
|
12
15
|
private readonly REQUEST_TIMEOUT;
|
|
13
16
|
private readonly MAX_RETRIES;
|
|
14
|
-
constructor();
|
|
17
|
+
constructor(projectsConfig?: SpringProjectsConfig);
|
|
18
|
+
/**
|
|
19
|
+
* Extract content intelligently based on detail level
|
|
20
|
+
* Preserves code blocks, key sections, and structure
|
|
21
|
+
*/
|
|
22
|
+
private extractIntelligentContent;
|
|
15
23
|
/**
|
|
16
24
|
* Search Spring projects with caching and retry logic - REAL API ONLY
|
|
17
25
|
*/
|
|
@@ -27,15 +35,22 @@ export declare class SpringBootDocsServiceOptimized {
|
|
|
27
35
|
/**
|
|
28
36
|
* Get specific guide content - REAL API ONLY
|
|
29
37
|
*/
|
|
30
|
-
getGuide(guideId: string): Promise<string>;
|
|
38
|
+
getGuide(guideId: string, detailLevel?: string): Promise<string>;
|
|
31
39
|
/**
|
|
32
|
-
* Get Spring reference documentation -
|
|
40
|
+
* Get Spring reference documentation - backward compatibility (defaults to Spring Boot)
|
|
41
|
+
* @deprecated Use getSpringReference('boot', section) instead
|
|
33
42
|
*/
|
|
34
43
|
getReference(section: string, subsection?: string): Promise<string>;
|
|
35
44
|
/**
|
|
36
|
-
* Get Spring reference documentation
|
|
45
|
+
* Get Spring reference documentation for any Spring project
|
|
46
|
+
* Supports: Spring Boot, Spring AI, Spring Framework, and future projects
|
|
47
|
+
*
|
|
48
|
+
* @param projectId - Project identifier ('boot', 'ai', 'framework', etc.)
|
|
49
|
+
* @param section - Documentation section (e.g., 'web', 'chatclient', 'core')
|
|
50
|
+
* @param subsection - Optional subsection for deeper navigation
|
|
51
|
+
* @returns Formatted markdown documentation with source URL
|
|
37
52
|
*/
|
|
38
|
-
getSpringReference(section: string, subsection?: string): Promise<string>;
|
|
53
|
+
getSpringReference(projectId: string, section: string, subsection?: string): Promise<string>;
|
|
39
54
|
/**
|
|
40
55
|
* Search Spring concepts - alias for backward compatibility
|
|
41
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"springboot-docs-optimized.d.ts","sourceRoot":"","sources":["../../src/services/springboot-docs-optimized.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"springboot-docs-optimized.d.ts","sourceRoot":"","sources":["../../src/services/springboot-docs-optimized.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAwB,MAAM,6BAA6B,CAAC;AAEzF;;;;;GAKG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAK;gBAErB,cAAc,GAAE,oBAA2C;IAYvE;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA6DjC;;OAEG;IACG,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAkD5D;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsC5D;;OAEG;IACG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAmD/E;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDhF;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzE;;;;;;;;OAQG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;IAyDlB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkD/E;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIrG;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAoCpF,iBAAiB;IA+B/B,OAAO,CAAC,gBAAgB;YA0BV,cAAc;CA0B7B"}
|
|
@@ -2,20 +2,24 @@ import fetch from 'node-fetch';
|
|
|
2
2
|
import * as cheerio from 'cheerio';
|
|
3
3
|
import TurndownService from 'turndown';
|
|
4
4
|
import { CacheService } from './cache.js';
|
|
5
|
+
import { springProjectsConfig } from './spring-projects-config.js';
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* Spring Documentation Service - Supports multiple Spring projects (Boot, AI, Framework, etc.)
|
|
8
|
+
* Uses ONLY real Spring documentation APIs - no mock data
|
|
9
|
+
*
|
|
10
|
+
* Architecture: Configuration-driven multi-project support via SpringProjectsConfig
|
|
8
11
|
*/
|
|
9
12
|
export class SpringBootDocsServiceOptimized {
|
|
10
13
|
baseUrl = 'https://docs.spring.io';
|
|
11
14
|
springProjectsUrl = 'https://spring.io/projects';
|
|
12
15
|
springGuideUrl = 'https://spring.io/guides';
|
|
13
|
-
|
|
16
|
+
projectsConfig;
|
|
14
17
|
turndownService;
|
|
15
18
|
cache;
|
|
16
19
|
REQUEST_TIMEOUT = 10000;
|
|
17
20
|
MAX_RETRIES = 3;
|
|
18
|
-
constructor() {
|
|
21
|
+
constructor(projectsConfig = springProjectsConfig) {
|
|
22
|
+
this.projectsConfig = projectsConfig;
|
|
19
23
|
this.turndownService = new TurndownService({
|
|
20
24
|
headingStyle: 'atx',
|
|
21
25
|
codeBlockStyle: 'fenced',
|
|
@@ -24,6 +28,65 @@ export class SpringBootDocsServiceOptimized {
|
|
|
24
28
|
// Cleanup cache every hour
|
|
25
29
|
setInterval(() => this.cache.cleanup(), 60 * 60 * 1000);
|
|
26
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Extract content intelligently based on detail level
|
|
33
|
+
* Preserves code blocks, key sections, and structure
|
|
34
|
+
*/
|
|
35
|
+
extractIntelligentContent(markdown, detailLevel = 'medium') {
|
|
36
|
+
const limits = {
|
|
37
|
+
'summary': 1500,
|
|
38
|
+
'medium': 4000,
|
|
39
|
+
'full': 8000
|
|
40
|
+
};
|
|
41
|
+
const maxLength = limits[detailLevel] || limits['medium'];
|
|
42
|
+
// If content is smaller than limit, return as-is
|
|
43
|
+
if (markdown.length <= maxLength) {
|
|
44
|
+
return markdown;
|
|
45
|
+
}
|
|
46
|
+
// Extract important sections
|
|
47
|
+
const lines = markdown.split('\n');
|
|
48
|
+
let result = '';
|
|
49
|
+
let inCodeBlock = false;
|
|
50
|
+
let codeBlockContent = '';
|
|
51
|
+
let currentLength = 0;
|
|
52
|
+
for (const line of lines) {
|
|
53
|
+
// Track code blocks
|
|
54
|
+
if (line.trim().startsWith('```')) {
|
|
55
|
+
inCodeBlock = !inCodeBlock;
|
|
56
|
+
if (!inCodeBlock && codeBlockContent) {
|
|
57
|
+
// Keep complete code blocks
|
|
58
|
+
const blockToAdd = codeBlockContent + line + '\n';
|
|
59
|
+
if (currentLength + blockToAdd.length <= maxLength * 0.8) { // Reserve 20% for text
|
|
60
|
+
result += blockToAdd;
|
|
61
|
+
currentLength += blockToAdd.length;
|
|
62
|
+
}
|
|
63
|
+
codeBlockContent = '';
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
codeBlockContent = line + '\n';
|
|
67
|
+
}
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (inCodeBlock) {
|
|
71
|
+
codeBlockContent += line + '\n';
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
// Keep headers, important lines
|
|
75
|
+
if (line.startsWith('#') || line.startsWith('-') || line.startsWith('*') || line.trim().startsWith('>')) {
|
|
76
|
+
if (currentLength + line.length + 1 <= maxLength) {
|
|
77
|
+
result += line + '\n';
|
|
78
|
+
currentLength += line.length + 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else if (line.trim() && currentLength + line.length + 1 <= maxLength) {
|
|
82
|
+
result += line + '\n';
|
|
83
|
+
currentLength += line.length + 1;
|
|
84
|
+
}
|
|
85
|
+
if (currentLength >= maxLength)
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
return result.trim();
|
|
89
|
+
}
|
|
27
90
|
/**
|
|
28
91
|
* Search Spring projects with caching and retry logic - REAL API ONLY
|
|
29
92
|
*/
|
|
@@ -92,7 +155,8 @@ export class SpringBootDocsServiceOptimized {
|
|
|
92
155
|
throw new Error('No content found for project');
|
|
93
156
|
}
|
|
94
157
|
const markdown = this.turndownService.turndown(content.html() || '');
|
|
95
|
-
const
|
|
158
|
+
const projectUrl = `${this.springProjectsUrl}/${projectName.toLowerCase().replace(/\s+/g, '-')}`;
|
|
159
|
+
const result = `# ${projectName}\n\n${markdown.substring(0, 1500)}...\n\nFor complete project info, visit: ${projectUrl}`;
|
|
96
160
|
this.cache.setLongTerm(cacheKey, result);
|
|
97
161
|
return result;
|
|
98
162
|
}
|
|
@@ -151,14 +215,14 @@ export class SpringBootDocsServiceOptimized {
|
|
|
151
215
|
/**
|
|
152
216
|
* Get specific guide content - REAL API ONLY
|
|
153
217
|
*/
|
|
154
|
-
async getGuide(guideId) {
|
|
155
|
-
const cacheKey = `guide:${guideId}`;
|
|
218
|
+
async getGuide(guideId, detailLevel = 'medium') {
|
|
219
|
+
const cacheKey = `guide:${guideId}:${detailLevel}`;
|
|
156
220
|
const cached = this.cache.get(cacheKey);
|
|
157
221
|
if (cached) {
|
|
158
|
-
console.error(`✅ Cache hit for guide: ${guideId}`);
|
|
222
|
+
console.error(`✅ Cache hit for guide: ${guideId} (${detailLevel})`);
|
|
159
223
|
return cached;
|
|
160
224
|
}
|
|
161
|
-
console.error(`🔍 Fetching guide: ${guideId}`);
|
|
225
|
+
console.error(`🔍 Fetching guide: ${guideId} with detail level: ${detailLevel}`);
|
|
162
226
|
// Try multiple sources for guides
|
|
163
227
|
const sources = [
|
|
164
228
|
{ name: 'Spring.io', url: `${this.springGuideUrl}/${guideId}/` },
|
|
@@ -189,7 +253,7 @@ export class SpringBootDocsServiceOptimized {
|
|
|
189
253
|
throw new Error(`Guide not found: ${guideId}`);
|
|
190
254
|
}
|
|
191
255
|
try {
|
|
192
|
-
const result = this.processHtmlGuide(content, guideId, sourceUrl);
|
|
256
|
+
const result = this.processHtmlGuide(content, guideId, sourceUrl, detailLevel);
|
|
193
257
|
this.cache.setLongTerm(cacheKey, result);
|
|
194
258
|
return result;
|
|
195
259
|
}
|
|
@@ -199,41 +263,65 @@ export class SpringBootDocsServiceOptimized {
|
|
|
199
263
|
}
|
|
200
264
|
}
|
|
201
265
|
/**
|
|
202
|
-
* Get Spring reference documentation -
|
|
266
|
+
* Get Spring reference documentation - backward compatibility (defaults to Spring Boot)
|
|
267
|
+
* @deprecated Use getSpringReference('boot', section) instead
|
|
203
268
|
*/
|
|
204
269
|
async getReference(section, subsection) {
|
|
205
|
-
|
|
270
|
+
console.warn('getReference() is deprecated. Use getSpringReference("boot", section) instead');
|
|
271
|
+
return this.getSpringReference('boot', section, subsection);
|
|
206
272
|
}
|
|
207
273
|
/**
|
|
208
|
-
* Get Spring reference documentation
|
|
274
|
+
* Get Spring reference documentation for any Spring project
|
|
275
|
+
* Supports: Spring Boot, Spring AI, Spring Framework, and future projects
|
|
276
|
+
*
|
|
277
|
+
* @param projectId - Project identifier ('boot', 'ai', 'framework', etc.)
|
|
278
|
+
* @param section - Documentation section (e.g., 'web', 'chatclient', 'core')
|
|
279
|
+
* @param subsection - Optional subsection for deeper navigation
|
|
280
|
+
* @returns Formatted markdown documentation with source URL
|
|
209
281
|
*/
|
|
210
|
-
async getSpringReference(section, subsection) {
|
|
211
|
-
const cacheKey = `reference:${section}:${subsection || 'main'}`;
|
|
282
|
+
async getSpringReference(projectId, section, subsection) {
|
|
283
|
+
const cacheKey = `reference:${projectId}:${section}:${subsection || 'main'}`;
|
|
212
284
|
const cached = this.cache.get(cacheKey);
|
|
213
285
|
if (cached) {
|
|
214
|
-
console.error(`✅ Cache hit for reference: ${section}`);
|
|
286
|
+
console.error(`✅ Cache hit for reference: ${projectId}/${section}`);
|
|
215
287
|
return cached;
|
|
216
288
|
}
|
|
217
|
-
console.error(`🔍 Fetching reference: ${section}`);
|
|
289
|
+
console.error(`🔍 Fetching reference: ${projectId}/${section}`);
|
|
218
290
|
try {
|
|
219
|
-
|
|
291
|
+
// Validate project exists
|
|
292
|
+
const project = this.projectsConfig.getProject(projectId);
|
|
293
|
+
// Validate section if project defines allowed sections
|
|
294
|
+
if (!this.projectsConfig.validateSection(projectId, section)) {
|
|
295
|
+
const availableSections = project.referenceSections?.join(', ') || 'any';
|
|
296
|
+
throw new Error(`Invalid section "${section}" for ${project.displayName}. Available sections: ${availableSections}`);
|
|
297
|
+
}
|
|
298
|
+
// Build URL using configuration
|
|
299
|
+
const url = this.projectsConfig.buildReferenceUrl(projectId, section);
|
|
220
300
|
const response = await this.fetchWithRetry(url);
|
|
221
301
|
if (!response.ok) {
|
|
222
|
-
throw new Error(`Reference section not found: ${section}`);
|
|
302
|
+
throw new Error(`Reference section not found: ${project.displayName} / ${section}`);
|
|
223
303
|
}
|
|
224
304
|
const html = await response.text();
|
|
225
305
|
const $ = cheerio.load(html);
|
|
226
|
-
|
|
306
|
+
// Extract content (selector may vary by project)
|
|
307
|
+
const content = $('.content, .section, main, article').first();
|
|
227
308
|
if (content.length === 0) {
|
|
228
|
-
throw new Error(
|
|
309
|
+
throw new Error(`No content found in ${project.displayName} reference documentation`);
|
|
229
310
|
}
|
|
230
311
|
const markdown = this.turndownService.turndown(content.html() || '');
|
|
231
|
-
const result = `#
|
|
232
|
-
|
|
312
|
+
const result = `# ${project.displayName} Reference: ${section}\n\n${markdown.substring(0, 1500)}...\n\nFor complete reference, visit: ${url}`;
|
|
313
|
+
// Use project-specific cache strategy
|
|
314
|
+
const cacheTTL = this.projectsConfig.getCacheTTL(projectId);
|
|
315
|
+
if (project.cacheStrategy === 'long') {
|
|
316
|
+
this.cache.setLongTerm(cacheKey, result);
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
this.cache.set(cacheKey, result, cacheTTL);
|
|
320
|
+
}
|
|
233
321
|
return result;
|
|
234
322
|
}
|
|
235
323
|
catch (error) {
|
|
236
|
-
console.error(`Error fetching reference ${section}:`, error);
|
|
324
|
+
console.error(`Error fetching reference ${projectId}/${section}:`, error);
|
|
237
325
|
throw error;
|
|
238
326
|
}
|
|
239
327
|
}
|
|
@@ -262,19 +350,25 @@ export class SpringBootDocsServiceOptimized {
|
|
|
262
350
|
const $ = cheerio.load(html);
|
|
263
351
|
// Look for concept in documentation
|
|
264
352
|
let conceptContent = '';
|
|
353
|
+
let foundSections = 0;
|
|
354
|
+
const maxSections = 3;
|
|
265
355
|
$('h1, h2, h3, h4').each((_, element) => {
|
|
356
|
+
if (foundSections >= maxSections)
|
|
357
|
+
return false; // Stop after 3 sections
|
|
266
358
|
const heading = $(element);
|
|
267
359
|
const headingText = heading.text().toLowerCase();
|
|
268
360
|
if (headingText.includes(concept.toLowerCase())) {
|
|
269
361
|
const section = heading.parent();
|
|
270
|
-
|
|
362
|
+
const sectionMarkdown = this.turndownService.turndown(section.html() || '');
|
|
363
|
+
conceptContent += sectionMarkdown.substring(0, 500) + '\n\n';
|
|
364
|
+
foundSections++;
|
|
271
365
|
}
|
|
272
366
|
});
|
|
273
367
|
if (!conceptContent) {
|
|
274
368
|
conceptContent = `# Spring Concept: ${concept}\n\nConcept not found in documentation. Try searching for more specific terms.`;
|
|
275
369
|
}
|
|
276
370
|
else {
|
|
277
|
-
conceptContent = `# Spring Concept: ${concept}\n\n${conceptContent}`;
|
|
371
|
+
conceptContent = `# Spring Concept: ${concept}\n\n${conceptContent}\n\nFor complete documentation, visit: ${searchUrl}`;
|
|
278
372
|
}
|
|
279
373
|
this.cache.set(cacheKey, conceptContent);
|
|
280
374
|
return conceptContent;
|
|
@@ -351,21 +445,26 @@ export class SpringBootDocsServiceOptimized {
|
|
|
351
445
|
return [];
|
|
352
446
|
}
|
|
353
447
|
}
|
|
354
|
-
processHtmlGuide(content, guideId, sourceUrl) {
|
|
355
|
-
console.log(
|
|
448
|
+
processHtmlGuide(content, guideId, sourceUrl, detailLevel = 'medium') {
|
|
449
|
+
console.log(`Processing HTML content with detail level: ${detailLevel}...`);
|
|
356
450
|
const $ = cheerio.load(content);
|
|
357
451
|
// Remove navigation and footer elements
|
|
358
452
|
$('nav, footer, .navbar, .sidebar, #js-sidebar').remove();
|
|
359
453
|
// Get main content
|
|
360
454
|
const mainContent = $('.content, .guide-content, main, .markdown-body, .guide-body, article').first();
|
|
455
|
+
let markdown;
|
|
361
456
|
if (mainContent.length === 0) {
|
|
362
457
|
console.log('No main content found, using body');
|
|
363
458
|
$('script, style').remove();
|
|
364
|
-
|
|
365
|
-
|
|
459
|
+
markdown = this.turndownService.turndown($('body').html() || '');
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
markdown = this.turndownService.turndown(mainContent.html() || '');
|
|
366
463
|
}
|
|
367
|
-
|
|
368
|
-
|
|
464
|
+
// Use intelligent extraction
|
|
465
|
+
const extractedContent = this.extractIntelligentContent(markdown, detailLevel);
|
|
466
|
+
const needsTruncation = markdown.length > extractedContent.length;
|
|
467
|
+
return `# Spring Guide: ${guideId}\n\n**Source:** ${sourceUrl}\n**Detail Level:** ${detailLevel}\n\n${extractedContent}${needsTruncation ? '\n\n---\n*Content truncated for brevity. Use detail_level="full" for complete guide or visit the link above.*' : ''}`;
|
|
369
468
|
}
|
|
370
469
|
async fetchWithRetry(url, timeout = this.REQUEST_TIMEOUT, retries = this.MAX_RETRIES) {
|
|
371
470
|
for (let attempt = 1; attempt <= retries; attempt++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"springboot-docs-optimized.js","sourceRoot":"","sources":["../../src/services/springboot-docs-optimized.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"springboot-docs-optimized.js","sourceRoot":"","sources":["../../src/services/springboot-docs-optimized.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,eAAe,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAwB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,OAAO,8BAA8B;IACxB,OAAO,GAAG,wBAAwB,CAAC;IACnC,iBAAiB,GAAG,4BAA4B,CAAC;IACjD,cAAc,GAAG,0BAA0B,CAAC;IACrD,cAAc,CAAuB;IACrC,eAAe,CAAkB;IACjC,KAAK,CAAe;IACX,eAAe,GAAG,KAAK,CAAC;IACxB,WAAW,GAAG,CAAC,CAAC;IAEjC,YAAY,iBAAuC,oBAAoB;QACrE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;YACzC,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,QAAQ;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QAEhC,2BAA2B;QAC3B,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACK,yBAAyB,CAAC,QAAgB,EAAE,cAAsB,QAAQ;QAChF,MAAM,MAAM,GAA8B;YACxC,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE1D,iDAAiD;QACjD,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,oBAAoB;YACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,WAAW,GAAG,CAAC,WAAW,CAAC;gBAC3B,IAAI,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC;oBACrC,4BAA4B;oBAC5B,MAAM,UAAU,GAAG,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;oBAClD,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,uBAAuB;wBACjF,MAAM,IAAI,UAAU,CAAC;wBACrB,aAAa,IAAI,UAAU,CAAC,MAAM,CAAC;oBACrC,CAAC;oBACD,gBAAgB,GAAG,EAAE,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;gBACjC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChC,SAAS;YACX,CAAC;YAED,gCAAgC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxG,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;oBACjD,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;oBACtB,aAAa,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;gBACvE,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;gBACtB,aAAa,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,aAAa,IAAI,SAAS;gBAAE,MAAM;QACxC,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAAa,EAAE,QAAgB,EAAE;QAC1D,MAAM,QAAQ,GAAG,YAAY,KAAK,IAAI,KAAK,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAQ,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEnE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,MAAM,QAAQ,GAAU,EAAE,CAAC;YAE3B,oCAAoC;YACpC,CAAC,CAAC,uEAAuE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAY,EAAE,EAAE;gBAClG,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACpF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACrF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAErD,IAAI,KAAK,IAAI,CACX,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBACjD,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACxD,EAAE,CAAC;oBACF,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,gBAAgB;wBACtB,KAAK,EAAE,KAAK;wBACZ,WAAW,EAAE,WAAW;wBACxB,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE;qBAClE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,MAAM,QAAQ,GAAG,WAAW,WAAW,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAEhD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,MAAM,OAAO,GAAG,CAAC,CAAC,qDAAqD,CAAC,CAAC,KAAK,EAAE,CAAC;YAEjF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,iBAAiB,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACjG,MAAM,MAAM,GAAG,KAAK,WAAW,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,4CAA4C,UAAU,EAAE,CAAC;YAE1H,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAiB,EAAE,QAAgB,EAAE;QAC5D,MAAM,QAAQ,GAAG,UAAU,QAAQ,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAQ,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;YAC9D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,oCAAoC,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAEhE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,MAAM,MAAM,GAAU,EAAE,CAAC;YAEzB,kCAAkC;YAClC,CAAC,CAAC,qDAAqD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAY,EAAE,EAAE;gBAChF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACnF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACnF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACrF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEnD,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;wBAC9E,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,cAAc;4BACpB,KAAK,EAAE,KAAK;4BACZ,WAAW,EAAE,WAAW,IAAI,cAAc;4BAC1C,QAAQ,EAAE,aAAa,IAAI,SAAS;4BACpC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE;yBAClE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,cAAsB,QAAQ;QAC5D,MAAM,QAAQ,GAAG,SAAS,OAAO,IAAI,WAAW,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,KAAK,WAAW,GAAG,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,uBAAuB,WAAW,EAAE,CAAC,CAAC;QAEjF,kCAAkC;QAClC,MAAM,OAAO,GAAG;YACd,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,EAAE;YAChE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,oCAAoC,OAAO,EAAE,EAAE;YACtE,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,OAAO,OAAO,GAAG,EAAE;SACxE,CAAC;QAEF,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEvD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAChC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;oBACzE,MAAM;gBACR,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,UAAmB;QACrD,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,kBAAkB,CACtB,SAAiB,EACjB,OAAe,EACf,UAAmB;QAEnB,MAAM,QAAQ,GAAG,aAAa,SAAS,IAAI,OAAO,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,0BAA0B,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAE1D,uDAAuD;YACvD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC7D,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;gBACzE,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,SAAS,OAAO,CAAC,WAAW,yBAAyB,iBAAiB,EAAE,CACpG,CAAC;YACJ,CAAC;YAED,gCAAgC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAEhD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,CAAC,WAAW,MAAM,OAAO,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,iDAAiD;YACjD,MAAM,OAAO,GAAG,CAAC,CAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAC;YAE/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,WAAW,0BAA0B,CAAC,CAAC;YACxF,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,KAAK,OAAO,CAAC,WAAW,eAAe,OAAO,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,yCAAyC,GAAG,EAAE,CAAC;YAE9I,sCAAsC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,OAAO,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,SAAS,IAAI,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,QAAiB;QACrD,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAAe,EAAE,QAAiB;QAC3D,MAAM,QAAQ,GAAG,YAAY,OAAO,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,IAAI,CAAC;YACH,gDAAgD;YAChD,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,OAAO,2CAA2C,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAEtD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,oCAAoC;YACpC,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,MAAM,WAAW,GAAG,CAAC,CAAC;YAEtB,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;gBACtC,IAAI,aAAa,IAAI,WAAW;oBAAE,OAAO,KAAK,CAAC,CAAC,wBAAwB;gBAExE,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAEjD,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAChD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;oBACjC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC5E,cAAc,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;oBAC7D,aAAa,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,cAAc,GAAG,qBAAqB,OAAO,gFAAgF,CAAC;YAChI,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,qBAAqB,OAAO,OAAO,cAAc,0CAA0C,SAAS,EAAE,CAAC;YAC1H,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACzC,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,kEAAkE,OAAO,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACnJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,KAAa,EAAE,UAAkB,KAAK,EAAE,QAAgB,EAAE;QAClF,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,UAAkB,KAAK,EAAE,QAAgB,EAAE;QAC/E,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAQ,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,OAAO,GAAU,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC/D,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC3C,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBACvD,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAC9D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBACjD,oCAAoC;gBACpC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,KAAa,EAAE,KAAa;QAC1D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,2CAA2C,CAAC,CAAC;YACvG,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,EAAE,CAAC;YAE5B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAU,EAAE,CAAC;YAE1B,CAAC,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;gBAChD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE/B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACrE,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,gBAAgB,IAAI,EAAE;wBAC7B,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,4CAA4C,IAAI,EAAE;wBACvG,WAAW,EAAE,iCAAiC;qBAC/C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAe,EAAE,OAAe,EAAE,SAAiB,EAAE,cAAsB,QAAQ;QAC1G,OAAO,CAAC,GAAG,CAAC,8CAA8C,WAAW,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhC,wCAAwC;QACxC,CAAC,CAAC,6CAA6C,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1D,mBAAmB;QACnB,MAAM,WAAW,GAAG,CAAC,CAAC,sEAAsE,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtG,IAAI,QAAgB,CAAC;QACrB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,6BAA6B;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC/E,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAElE,OAAO,mBAAmB,OAAO,mBAAmB,SAAS,uBAAuB,WAAW,OAAO,gBAAgB,GAAG,eAAe,CAAC,CAAC,CAAC,+GAA+G,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpQ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC,WAAW;QAClG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAEhE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAChC,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,OAAO,EAAE;wBACP,YAAY,EAAE,uBAAuB;wBACrC,QAAQ,EAAE,iEAAiE;wBAC3E,iBAAiB,EAAE,gBAAgB;qBACpC;iBACF,CAAC,CAAC;gBACH,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,IAAI,OAAO,KAAK,OAAO;oBAAE,MAAM,KAAK,CAAC;gBAErC,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,IAAI,OAAO,QAAQ,GAAG,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBACnH,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,sBAAsB;YAC3F,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;CACF"}
|