zenstack 2.18.1 → 2.19.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.
@@ -0,0 +1,44 @@
1
+ import * as vscode from 'vscode';
2
+ import { LanguageClient } from 'vscode-languageclient/node';
3
+ import { DocumentationCache } from './documentation-cache';
4
+ /**
5
+ * ZModelPreview class handles ZModel file preview functionality
6
+ */
7
+ export declare class ZModelPreview implements vscode.Disposable {
8
+ private documentationCache;
9
+ private languageClient;
10
+ private static DocRequestSchema;
11
+ constructor(context: vscode.ExtensionContext, client: LanguageClient, cache: DocumentationCache);
12
+ /**
13
+ * Initialize and register commands
14
+ */
15
+ initialize(context: vscode.ExtensionContext): void;
16
+ /**
17
+ * Register ZModel preview commands
18
+ */
19
+ private registerCommands;
20
+ /**
21
+ * Preview a ZModel file
22
+ */
23
+ previewZModelFile(): Promise<void>;
24
+ /**
25
+ * Get all imported ZModel URIs using the language server
26
+ */
27
+ private getAllImportedZModelURIs;
28
+ /**
29
+ * Generate documentation for ZModel
30
+ */
31
+ private generateZModelDocumentation;
32
+ /**
33
+ * Open markdown preview
34
+ */
35
+ private openMarkdownPreview;
36
+ /**
37
+ * Check for Mermaid extensions
38
+ */
39
+ private checkForMermaidExtensions;
40
+ /**
41
+ * Dispose of resources
42
+ */
43
+ dispose(): void;
44
+ }
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.ZModelPreview = void 0;
46
+ const vscode = __importStar(require("vscode"));
47
+ const path = __importStar(require("path"));
48
+ const os = __importStar(require("os"));
49
+ const zod_1 = require("zod");
50
+ const extension_1 = require("./extension");
51
+ const zenstack_auth_provider_1 = require("./zenstack-auth-provider");
52
+ /**
53
+ * ZModelPreview class handles ZModel file preview functionality
54
+ */
55
+ class ZModelPreview {
56
+ constructor(context, client, cache) {
57
+ this.documentationCache = cache;
58
+ this.languageClient = client;
59
+ this.initialize(context);
60
+ }
61
+ /**
62
+ * Initialize and register commands
63
+ */
64
+ initialize(context) {
65
+ this.registerCommands(context);
66
+ }
67
+ /**
68
+ * Register ZModel preview commands
69
+ */
70
+ registerCommands(context) {
71
+ // Register the preview command for zmodel files
72
+ context.subscriptions.push(vscode.commands.registerCommand('zenstack.preview-zmodel', () => __awaiter(this, void 0, void 0, function* () {
73
+ yield this.previewZModelFile();
74
+ })));
75
+ // Register cache management commands
76
+ context.subscriptions.push(vscode.commands.registerCommand('zenstack.clear-documentation-cache', () => __awaiter(this, void 0, void 0, function* () {
77
+ yield this.documentationCache.clearAllCache();
78
+ vscode.window.showInformationMessage('ZenStack documentation cache cleared');
79
+ })));
80
+ }
81
+ /**
82
+ * Preview a ZModel file
83
+ */
84
+ previewZModelFile() {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ const editor = vscode.window.activeTextEditor;
87
+ if (!editor) {
88
+ vscode.window.showErrorMessage('No active editor found.');
89
+ return;
90
+ }
91
+ const document = editor.document;
92
+ if (!document.fileName.endsWith('.zmodel')) {
93
+ vscode.window.showErrorMessage('The active file is not a ZModel file.');
94
+ return;
95
+ }
96
+ // Check authentication before proceeding
97
+ const session = yield (0, extension_1.requireAuth)();
98
+ if (!session) {
99
+ return;
100
+ }
101
+ try {
102
+ this.checkForMermaidExtensions();
103
+ // Show progress indicator
104
+ yield vscode.window.withProgress({
105
+ location: vscode.ProgressLocation.Notification,
106
+ title: 'Generating ZModel documentation...',
107
+ cancellable: false,
108
+ }, () => __awaiter(this, void 0, void 0, function* () {
109
+ const markdownContent = yield this.generateZModelDocumentation(document);
110
+ if (markdownContent) {
111
+ yield this.openMarkdownPreview(markdownContent, document.fileName);
112
+ }
113
+ }));
114
+ }
115
+ catch (error) {
116
+ console.error('Error previewing ZModel:', error);
117
+ vscode.window.showErrorMessage(`Failed to preview ZModel: ${error instanceof Error ? error.message : String(error)}`);
118
+ }
119
+ });
120
+ }
121
+ /**
122
+ * Get all imported ZModel URIs using the language server
123
+ */
124
+ getAllImportedZModelURIs(document) {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ if (!this.languageClient) {
127
+ throw new Error('Language client not initialized');
128
+ }
129
+ try {
130
+ // Ensure the language server is ready
131
+ yield this.languageClient.start();
132
+ // Send the custom request to get all imported ZModel URIs
133
+ const result = yield this.languageClient.sendRequest('zenstack/getAllImportedZModelURIs', {
134
+ textDocument: {
135
+ uri: document.uri.toString(),
136
+ },
137
+ });
138
+ return result;
139
+ }
140
+ catch (error) {
141
+ console.error('Error getting AST from language server:', error);
142
+ throw error;
143
+ }
144
+ });
145
+ }
146
+ /**
147
+ * Generate documentation for ZModel
148
+ */
149
+ generateZModelDocumentation(document) {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ try {
152
+ const astInfo = yield this.getAllImportedZModelURIs(document);
153
+ if ((astInfo === null || astInfo === void 0 ? void 0 : astInfo.hasSyntaxErrors) !== false) {
154
+ vscode.window.showWarningMessage('Please fix the errors in the ZModel first');
155
+ return '';
156
+ }
157
+ const importedURIs = astInfo === null || astInfo === void 0 ? void 0 : astInfo.importedURIs;
158
+ // get vscode document from importedURIs
159
+ const importedModels = yield Promise.all(importedURIs.map((uri) => __awaiter(this, void 0, void 0, function* () {
160
+ try {
161
+ const fileUri = vscode.Uri.file(uri.path);
162
+ const fileContent = yield vscode.workspace.fs.readFile(fileUri);
163
+ const filePath = fileUri.path;
164
+ return { content: Buffer.from(fileContent).toString('utf8').trim(), path: filePath };
165
+ }
166
+ catch (error) {
167
+ throw new Error(`Failed to read imported ZModel file at ${uri.path}: ${error instanceof Error ? error.message : String(error)}`);
168
+ }
169
+ })));
170
+ const allModels = [{ content: document.getText().trim(), path: document.uri.path }, ...importedModels];
171
+ const session = yield (0, extension_1.requireAuth)();
172
+ if (!session) {
173
+ throw new Error('Authentication required to generate documentation');
174
+ }
175
+ // Prepare request body
176
+ const requestBody = {
177
+ models: allModels,
178
+ environments: {
179
+ vscodeAppName: vscode.env.appName,
180
+ vscodeVersion: vscode.version,
181
+ vscodeAppHost: vscode.env.appHost,
182
+ osRelease: os.release(),
183
+ osType: os.type(),
184
+ },
185
+ };
186
+ const allModelsContent = allModels.map((m) => m.content);
187
+ // Check cache first
188
+ const cachedResponse = yield this.documentationCache.getCachedResponse(allModelsContent);
189
+ if (cachedResponse) {
190
+ return cachedResponse;
191
+ }
192
+ // record the time spent
193
+ const startTime = Date.now();
194
+ const apiResponse = yield fetch(`${zenstack_auth_provider_1.API_URL}/api/doc`, {
195
+ method: 'POST',
196
+ headers: {
197
+ 'Content-Type': 'application/json',
198
+ authorization: session.accessToken,
199
+ },
200
+ body: JSON.stringify(requestBody),
201
+ });
202
+ console.log(`API request completed in ${Date.now() - startTime} ms`);
203
+ if (!apiResponse.ok) {
204
+ throw new Error(`API request failed: ${apiResponse.status} ${apiResponse.statusText}`);
205
+ }
206
+ const responseText = yield apiResponse.text();
207
+ // Cache the response
208
+ yield this.documentationCache.setCachedResponse(allModelsContent, responseText);
209
+ return responseText;
210
+ }
211
+ catch (error) {
212
+ console.error('Error generating documentation:', error);
213
+ const errorMessage = error instanceof Error ? error.message : String(error);
214
+ throw new Error(`Failed to generate documentation: ${errorMessage}`);
215
+ }
216
+ });
217
+ }
218
+ /**
219
+ * Open markdown preview
220
+ */
221
+ openMarkdownPreview(markdownContent, originalFileName) {
222
+ return __awaiter(this, void 0, void 0, function* () {
223
+ // Create a temporary markdown file with a descriptive name in the system temp folder
224
+ const baseName = path.basename(originalFileName, '.zmodel');
225
+ const tempFileName = `${baseName}-preview.md`;
226
+ const tempFilePath = path.join(os.tmpdir(), tempFileName);
227
+ const tempFile = vscode.Uri.file(tempFilePath);
228
+ try {
229
+ // Write the markdown content to the temp file
230
+ yield vscode.workspace.fs.writeFile(tempFile, new TextEncoder().encode(markdownContent));
231
+ // Open the markdown preview side by side
232
+ yield vscode.commands.executeCommand('markdown.showPreviewToSide', tempFile);
233
+ }
234
+ catch (error) {
235
+ console.error('Error creating markdown preview:', error);
236
+ throw new Error(`Failed to create markdown preview: ${error instanceof Error ? error.message : String(error)}`);
237
+ }
238
+ });
239
+ }
240
+ /**
241
+ * Check for Mermaid extensions
242
+ */
243
+ checkForMermaidExtensions() {
244
+ const setting = vscode.workspace.getConfiguration('zenstack').get('searchForExtensions');
245
+ if (setting !== false) {
246
+ const extensions = vscode.extensions.all.filter((extension) => ['markdown-mermaid', 'vscode-mermaid-chart', 'vscode-mermaid-preview'].some((name) => { var _a; return (_a = extension.packageJSON.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(name.toLowerCase()); }));
247
+ if (extensions.length === 0) {
248
+ const searchAction = 'Search';
249
+ const stopShowing = "Don't show again";
250
+ vscode.window
251
+ .showInformationMessage('Search for extensions to view mermaid chart in ZModel preview doc?', searchAction, stopShowing)
252
+ .then((selectedAction) => {
253
+ if (selectedAction === searchAction) {
254
+ vscode.commands.executeCommand('workbench.extensions.search', 'markdown-mermaid');
255
+ }
256
+ else if (selectedAction === stopShowing) {
257
+ vscode.workspace
258
+ .getConfiguration('zenstack')
259
+ .update('searchForExtensions', false, vscode.ConfigurationTarget.Global);
260
+ }
261
+ });
262
+ }
263
+ }
264
+ }
265
+ /**
266
+ * Dispose of resources
267
+ */
268
+ dispose() {
269
+ // Any cleanup if needed
270
+ }
271
+ }
272
+ exports.ZModelPreview = ZModelPreview;
273
+ // Schema for validating the request body
274
+ ZModelPreview.DocRequestSchema = zod_1.z.object({
275
+ models: zod_1.z.array(zod_1.z.object({
276
+ path: zod_1.z.string().optional(),
277
+ content: zod_1.z.string(),
278
+ })),
279
+ environments: zod_1.z
280
+ .object({
281
+ vscodeAppName: zod_1.z.string(),
282
+ vscodeVersion: zod_1.z.string(),
283
+ vscodeAppHost: zod_1.z.string(),
284
+ osRelease: zod_1.z.string(),
285
+ osType: zod_1.z.string(),
286
+ })
287
+ .optional(),
288
+ });
289
+ //# sourceMappingURL=zmodel-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zmodel-preview.js","sourceRoot":"","sources":["../src/zmodel-preview.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,2CAA6B;AAC7B,uCAAyB;AACzB,6BAAwB;AAIxB,2CAA0C;AAC1C,qEAAmD;AAEnD;;GAEG;AACH,MAAa,aAAa;IAuBtB,YAAY,OAAgC,EAAE,MAAsB,EAAE,KAAyB;QAC3F,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAgC;QACvC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAgC;QACrD,gDAAgD;QAChD,OAAO,CAAC,aAAa,CAAC,IAAI,CACtB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,yBAAyB,EAAE,GAAS,EAAE;YAClE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACnC,CAAC,CAAA,CAAC,CACL,CAAC;QAEF,qCAAqC;QACrC,OAAO,CAAC,aAAa,CAAC,IAAI,CACtB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,oCAAoC,EAAE,GAAS,EAAE;YAC7E,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,sCAAsC,CAAC,CAAC;QACjF,CAAC,CAAA,CAAC,CACL,CAAC;IACN,CAAC;IAED;;OAEG;IACG,iBAAiB;;YACnB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;gBAC1D,OAAO;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;gBACxE,OAAO;YACX,CAAC;YAED,yCAAyC;YACzC,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAW,GAAE,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,IAAI,CAAC;gBACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,0BAA0B;gBAC1B,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAC5B;oBACI,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;oBAC9C,KAAK,EAAE,oCAAoC;oBAC3C,WAAW,EAAE,KAAK;iBACrB,EACD,GAAS,EAAE;oBACP,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;oBAEzE,IAAI,eAAe,EAAE,CAAC;wBAClB,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACvE,CAAC;gBACL,CAAC,CAAA,CACJ,CAAC;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;gBACjD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAC1B,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;YACN,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACW,wBAAwB,CAAC,QAA6B;;YAIhE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC;gBACD,sCAAsC;gBACtC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAElC,0DAA0D;gBAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,mCAAmC,EAAE;oBACtF,YAAY,EAAE;wBACV,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;qBAC/B;iBACJ,CAAC,CAAC;gBAEH,OAAO,MAGN,CAAC;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAChE,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACW,2BAA2B,CAAC,QAA6B;;YACnE,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;gBAE9D,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,MAAK,KAAK,EAAE,CAAC;oBACrC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;oBAC9E,OAAO,EAAE,CAAC;gBACd,CAAC;gBAED,MAAM,YAAY,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC;gBAE3C,wCAAwC;gBACxC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,YAAY,CAAC,GAAG,CAAC,CAAO,GAAG,EAAE,EAAE;oBAC3B,IAAI,CAAC;wBACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC1C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;wBAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;oBACzF,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,MAAM,IAAI,KAAK,CACX,0CAA0C,GAAG,CAAC,IAAI,KAC9C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACzD,EAAE,CACL,CAAC;oBACN,CAAC;gBACL,CAAC,CAAA,CAAC,CACL,CAAC;gBAEF,MAAM,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,cAAc,CAAC,CAAC;gBAEvG,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAW,GAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACzE,CAAC;gBAED,uBAAuB;gBACvB,MAAM,WAAW,GAAmD;oBAChE,MAAM,EAAE,SAAS;oBACjB,YAAY,EAAE;wBACV,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO;wBACjC,aAAa,EAAE,MAAM,CAAC,OAAO;wBAC7B,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO;wBACjC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE;wBACvB,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE;qBACpB;iBACJ,CAAC;gBAEF,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAEzD,oBAAoB;gBACpB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;gBACzF,IAAI,cAAc,EAAE,CAAC;oBACjB,OAAO,cAAc,CAAC;gBAC1B,CAAC;gBAED,wBAAwB;gBACxB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,gCAAO,UAAU,EAAE;oBAClD,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACL,cAAc,EAAE,kBAAkB;wBAClC,aAAa,EAAE,OAAO,CAAC,WAAW;qBACrC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;iBACpC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;gBAErE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3F,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBAE9C,qBAAqB;gBACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;gBAEhF,OAAO,YAAY,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACW,mBAAmB,CAAC,eAAuB,EAAE,gBAAwB;;YAC/E,qFAAqF;YACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAG,GAAG,QAAQ,aAAa,CAAC;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE/C,IAAI,CAAC;gBACD,8CAA8C;gBAC9C,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;gBAEzF,yCAAyC;gBACzC,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;gBACzD,MAAM,IAAI,KAAK,CACX,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjG,CAAC;YACN,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACK,yBAAyB;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAC1D,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,WACjF,OAAA,MAAA,SAAS,CAAC,WAAW,CAAC,IAAI,0CAAE,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA,EAAA,CACzE,CACJ,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC;gBAC9B,MAAM,WAAW,GAAG,kBAAkB,CAAC;gBACvC,MAAM,CAAC,MAAM;qBACR,sBAAsB,CACnB,oEAAoE,EACpE,YAAY,EACZ,WAAW,CACd;qBACA,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;oBACrB,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;wBAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAC;oBACtF,CAAC;yBAAM,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;wBACxC,MAAM,CAAC,SAAS;6BACX,gBAAgB,CAAC,UAAU,CAAC;6BAC5B,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACjF,CAAC;gBACL,CAAC,CAAC,CAAC;YACX,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACH,wBAAwB;IAC5B,CAAC;;AA/RL,sCAgSC;AA5RG,yCAAyC;AAC1B,8BAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,KAAK,CACX,OAAC,CAAC,MAAM,CAAC;QACL,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;KACtB,CAAC,CACL;IACD,YAAY,EAAE,OAAC;SACV,MAAM,CAAC;QACJ,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;QACzB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;QACzB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;QACzB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;KACrB,CAAC;SACD,QAAQ,EAAE;CAClB,CAAC,CAAC"}