clefbase 2.0.7 → 2.0.9

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 (40) hide show
  1. package/README.md +748 -55
  2. package/dist/__tests__/full-feature-validation.test.d.ts +6 -0
  3. package/dist/__tests__/full-feature-validation.test.d.ts.map +1 -0
  4. package/dist/__tests__/full-feature-validation.test.js +329 -0
  5. package/dist/__tests__/full-feature-validation.test.js.map +1 -0
  6. package/dist/ai.d.ts +294 -9
  7. package/dist/ai.d.ts.map +1 -1
  8. package/dist/ai.js +198 -8
  9. package/dist/ai.js.map +1 -1
  10. package/dist/app.d.ts +7 -0
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/app.js +18 -3
  13. package/dist/app.js.map +1 -1
  14. package/dist/auth/index.d.ts +28 -3
  15. package/dist/auth/index.d.ts.map +1 -1
  16. package/dist/auth/index.js +71 -9
  17. package/dist/auth/index.js.map +1 -1
  18. package/dist/cli-src/cli/commands/init.js +30 -0
  19. package/dist/cli-src/cli/config.js +3 -0
  20. package/dist/cli.js +32 -1
  21. package/dist/db/index.d.ts +38 -1
  22. package/dist/db/index.d.ts.map +1 -1
  23. package/dist/db/index.js +55 -1
  24. package/dist/db/index.js.map +1 -1
  25. package/dist/index.d.ts +2 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/react/index.d.ts +0 -1
  30. package/dist/react/index.d.ts.map +1 -1
  31. package/dist/react/index.js +1 -3
  32. package/dist/react/index.js.map +1 -1
  33. package/dist/storage/index.d.ts +3 -1
  34. package/dist/storage/index.d.ts.map +1 -1
  35. package/dist/storage/index.js +11 -6
  36. package/dist/storage/index.js.map +1 -1
  37. package/dist/types.d.ts +6 -0
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Comprehensive feature validation test suite for clefbase SDK
3
+ * Tests all implemented features to ensure they work correctly
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=full-feature-validation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"full-feature-validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/full-feature-validation.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ /**
3
+ * Comprehensive feature validation test suite for clefbase SDK
4
+ * Tests all implemented features to ensure they work correctly
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const vitest_1 = require("vitest");
8
+ const index_1 = require("../index");
9
+ // ─── Test Configuration ──────────────────────────────────────────────────────
10
+ const TEST_CONFIG = {
11
+ serverUrl: "http://localhost:3000",
12
+ projectId: "test-project",
13
+ apiKey: "test-api-key",
14
+ gatewayUrl: "http://localhost:8080/auth",
15
+ };
16
+ let app;
17
+ (0, vitest_1.beforeEach)(() => {
18
+ app = (0, index_1.initClefbase)(TEST_CONFIG, `test-${Date.now()}`);
19
+ });
20
+ (0, vitest_1.afterEach)(() => {
21
+ vitest_1.vi.clearAllMocks();
22
+ });
23
+ // ─── Gateway URL Configuration ────────────────────────────────────────────────
24
+ (0, vitest_1.describe)("Gateway URL Configuration", () => {
25
+ (0, vitest_1.it)("should use default gateway URL when not specified", () => {
26
+ const defaultApp = (0, index_1.initClefbase)({
27
+ serverUrl: "http://localhost:3000",
28
+ projectId: "test",
29
+ apiKey: "key",
30
+ });
31
+ const auth = (0, index_1.getAuth)(defaultApp);
32
+ (0, vitest_1.expect)(auth.gatewayUrl).toBe("https://auth.cleforyx.com");
33
+ });
34
+ (0, vitest_1.it)("should use custom gateway URL from config", () => {
35
+ const customApp = (0, index_1.initClefbase)({
36
+ serverUrl: "http://localhost:3000",
37
+ projectId: "test",
38
+ apiKey: "key",
39
+ gatewayUrl: "https://custom-auth.example.com",
40
+ });
41
+ const auth = (0, index_1.getAuth)(customApp);
42
+ (0, vitest_1.expect)(auth.gatewayUrl).toBe("https://custom-auth.example.com");
43
+ });
44
+ (0, vitest_1.it)("should update gateway URL using setGatewayUrl()", () => {
45
+ const auth = (0, index_1.getAuth)(app);
46
+ const originalUrl = auth.gatewayUrl;
47
+ const newUrl = "https://new-auth.example.com";
48
+ (0, index_1.setGatewayUrl)(app, newUrl);
49
+ (0, vitest_1.expect)(auth.gatewayUrl).toBe(newUrl);
50
+ (0, vitest_1.expect)(auth.gatewayUrl).not.toBe(originalUrl);
51
+ });
52
+ (0, vitest_1.it)("should trim trailing slashes from gateway URL", () => {
53
+ const auth = (0, index_1.getAuth)(app);
54
+ (0, index_1.setGatewayUrl)(app, "https://auth.example.com///");
55
+ (0, vitest_1.expect)(auth.gatewayUrl).toBe("https://auth.example.com");
56
+ });
57
+ });
58
+ // ─── Public Auth Methods ──────────────────────────────────────────────────────
59
+ (0, vitest_1.describe)("Public Auth Methods", () => {
60
+ (0, vitest_1.it)("should have requestPasswordReset method", () => {
61
+ const auth = (0, index_1.getAuth)(app);
62
+ (0, vitest_1.expect)(auth.requestPasswordReset).toBeDefined();
63
+ (0, vitest_1.expect)(typeof auth.requestPasswordReset).toBe("function");
64
+ });
65
+ (0, vitest_1.it)("should have resetPassword method", () => {
66
+ const auth = (0, index_1.getAuth)(app);
67
+ (0, vitest_1.expect)(auth.resetPassword).toBeDefined();
68
+ (0, vitest_1.expect)(typeof auth.resetPassword).toBe("function");
69
+ });
70
+ (0, vitest_1.it)("should have requestEmailVerification method", () => {
71
+ const auth = (0, index_1.getAuth)(app);
72
+ (0, vitest_1.expect)(auth.requestEmailVerification).toBeDefined();
73
+ (0, vitest_1.expect)(typeof auth.requestEmailVerification).toBe("function");
74
+ });
75
+ (0, vitest_1.it)("should have verifyEmail method", () => {
76
+ const auth = (0, index_1.getAuth)(app);
77
+ (0, vitest_1.expect)(auth.verifyEmail).toBeDefined();
78
+ (0, vitest_1.expect)(typeof auth.verifyEmail).toBe("function");
79
+ });
80
+ (0, vitest_1.it)("methods should accept correct parameter types", async () => {
81
+ const auth = (0, index_1.getAuth)(app);
82
+ // These should return promises
83
+ (0, vitest_1.expect)(auth.requestPasswordReset("test@example.com")).toBeInstanceOf(Promise);
84
+ (0, vitest_1.expect)(auth.resetPassword("token", "newpass")).toBeInstanceOf(Promise);
85
+ });
86
+ });
87
+ // ─── Batch Delete ───────────────────────────────────────────────────────────
88
+ (0, vitest_1.describe)("Batch Delete", () => {
89
+ (0, vitest_1.it)("should have batchDelete method on collections", () => {
90
+ const db = (0, index_1.getDatabase)(app);
91
+ const collection = db.collection("test");
92
+ (0, vitest_1.expect)(collection.batchDelete).toBeDefined();
93
+ (0, vitest_1.expect)(typeof collection.batchDelete).toBe("function");
94
+ });
95
+ (0, vitest_1.it)("should require non-empty array of IDs", async () => {
96
+ const db = (0, index_1.getDatabase)(app);
97
+ const collection = db.collection("test");
98
+ await (0, vitest_1.expect)(collection.batchDelete([])).rejects.toThrow("ids must be a non-empty array");
99
+ });
100
+ (0, vitest_1.it)("should enforce max 500 documents per batch", async () => {
101
+ const db = (0, index_1.getDatabase)(app);
102
+ const collection = db.collection("test");
103
+ const tooManyIds = Array.from({ length: 501 }, (_, i) => `id-${i}`);
104
+ await (0, vitest_1.expect)(collection.batchDelete(tooManyIds)).rejects.toThrow("Cannot batch delete more than 500 documents at once");
105
+ });
106
+ (0, vitest_1.it)("should accept array of document IDs", async () => {
107
+ const db = (0, index_1.getDatabase)(app);
108
+ const collection = db.collection("test");
109
+ const ids = ["doc1", "doc2", "doc3"];
110
+ // This will fail with network error in test, but should validate the call
111
+ try {
112
+ await collection.batchDelete(ids);
113
+ }
114
+ catch (err) {
115
+ // Expected in test environment
116
+ (0, vitest_1.expect)(err.message).toContain("ECONNREFUSED");
117
+ }
118
+ });
119
+ });
120
+ // ─── Pagination Cursors ────────────────────────────────────────────────────
121
+ (0, vitest_1.describe)("Pagination Cursors", () => {
122
+ (0, vitest_1.it)("should have startAfter method", () => {
123
+ const db = (0, index_1.getDatabase)(app);
124
+ const query = db.collection("test").startAfter("doc123");
125
+ (0, vitest_1.expect)(query._startAfter).toBe("doc123");
126
+ });
127
+ (0, vitest_1.it)("should have endBefore method", () => {
128
+ const db = (0, index_1.getDatabase)(app);
129
+ const query = db.collection("test").endBefore("doc456");
130
+ (0, vitest_1.expect)(query._endBefore).toBe("doc456");
131
+ });
132
+ (0, vitest_1.it)("startAfter should clear endBefore", () => {
133
+ const db = (0, index_1.getDatabase)(app);
134
+ const query = db.collection("test")
135
+ .endBefore("doc456")
136
+ .startAfter("doc123");
137
+ (0, vitest_1.expect)(query._startAfter).toBe("doc123");
138
+ (0, vitest_1.expect)(query._endBefore).toBeUndefined();
139
+ });
140
+ (0, vitest_1.it)("endBefore should clear startAfter", () => {
141
+ const db = (0, index_1.getDatabase)(app);
142
+ const query = db.collection("test")
143
+ .startAfter("doc123")
144
+ .endBefore("doc456");
145
+ (0, vitest_1.expect)(query._endBefore).toBe("doc456");
146
+ (0, vitest_1.expect)(query._startAfter).toBeUndefined();
147
+ });
148
+ (0, vitest_1.it)("should chain with other query methods", () => {
149
+ const db = (0, index_1.getDatabase)(app);
150
+ const query = db.collection("test")
151
+ .where({ status: "active" })
152
+ .orderBy("createdAt", "desc")
153
+ .startAfter("doc123")
154
+ .limit(50);
155
+ (0, vitest_1.expect)(query._startAfter).toBe("doc123");
156
+ (0, vitest_1.expect)(query._limit).toBe(50);
157
+ (0, vitest_1.expect)(query._sort).toEqual({ field: "createdAt", dir: "desc" });
158
+ });
159
+ (0, vitest_1.it)("should support cursor pagination workflow", () => {
160
+ const db = (0, index_1.getDatabase)(app);
161
+ // First page
162
+ const page1 = db.collection("posts")
163
+ .orderBy("_createdAt", "desc")
164
+ .limit(10);
165
+ (0, vitest_1.expect)(page1._limit).toBe(10);
166
+ // Next page (cursor-based)
167
+ const page2 = db.collection("posts")
168
+ .orderBy("_createdAt", "desc")
169
+ .startAfter("last-doc-from-page1")
170
+ .limit(10);
171
+ (0, vitest_1.expect)(page2._startAfter).toBe("last-doc-from-page1");
172
+ (0, vitest_1.expect)(page2._limit).toBe(10);
173
+ // Previous page
174
+ const page3 = db.collection("posts")
175
+ .orderBy("_createdAt", "desc")
176
+ .endBefore("first-doc-from-page1")
177
+ .limit(10);
178
+ (0, vitest_1.expect)(page3._endBefore).toBe("first-doc-from-page1");
179
+ });
180
+ });
181
+ // ─── Real-time Subscriptions (SSE) ────────────────────────────────────────────
182
+ (0, vitest_1.describe)("Real-time Subscriptions", () => {
183
+ (0, vitest_1.it)("should have onSnapshot method on document references", () => {
184
+ const db = (0, index_1.getDatabase)(app);
185
+ const docRef = db.collection("test").doc("doc123");
186
+ (0, vitest_1.expect)(docRef.onSnapshot).toBeDefined();
187
+ (0, vitest_1.expect)(typeof docRef.onSnapshot).toBe("function");
188
+ });
189
+ (0, vitest_1.it)("should return an unsubscribe function", () => {
190
+ // Note: In a real environment, this would open an SSE connection
191
+ // For this test, we're just checking the method signature
192
+ const db = (0, index_1.getDatabase)(app);
193
+ const docRef = db.collection("test").doc("doc123");
194
+ // Mock EventSource to avoid actual SSE connection in test
195
+ const mockUnsubscribe = vitest_1.vi.fn();
196
+ globalThis.EventSource = vitest_1.vi.fn(() => ({
197
+ onmessage: null,
198
+ onerror: null,
199
+ close: mockUnsubscribe,
200
+ }));
201
+ const unsubscribe = docRef.onSnapshot(() => {
202
+ // callback
203
+ });
204
+ (0, vitest_1.expect)(typeof unsubscribe).toBe("function");
205
+ });
206
+ (0, vitest_1.it)("should support error callback", () => {
207
+ const db = (0, index_1.getDatabase)(app);
208
+ const docRef = db.collection("test").doc("doc123");
209
+ const errorCallback = vitest_1.vi.fn();
210
+ const unsubscribe = docRef.onSnapshot(() => { }, errorCallback);
211
+ (0, vitest_1.expect)(typeof unsubscribe).toBe("function");
212
+ });
213
+ (0, vitest_1.it)("should construct correct SSE endpoint", () => {
214
+ const db = (0, index_1.getDatabase)(app);
215
+ const docRef = db.collection("users").doc("alice");
216
+ // Mock EventSource to capture the URL
217
+ let ssePath = "";
218
+ globalThis.EventSource = vitest_1.vi.fn((url) => {
219
+ ssePath = url;
220
+ return {
221
+ onmessage: null,
222
+ onerror: null,
223
+ close: vitest_1.vi.fn(),
224
+ };
225
+ });
226
+ docRef.onSnapshot(() => { });
227
+ // Should construct path like: http://localhost:3000/db/users/alice/stream
228
+ (0, vitest_1.expect)(ssePath).toContain("/users/alice/stream");
229
+ });
230
+ });
231
+ // ─── Collection Operations ────────────────────────────────────────────────
232
+ (0, vitest_1.describe)("Database Collection Operations", () => {
233
+ (0, vitest_1.it)("should support batch operations alongside regular CRUD", () => {
234
+ const db = (0, index_1.getDatabase)(app);
235
+ const collection = db.collection("items");
236
+ // Should have all methods available
237
+ (0, vitest_1.expect)(collection.add).toBeDefined();
238
+ (0, vitest_1.expect)(collection.doc).toBeDefined();
239
+ (0, vitest_1.expect)(collection.where).toBeDefined();
240
+ (0, vitest_1.expect)(collection.orderBy).toBeDefined();
241
+ (0, vitest_1.expect)(collection.limit).toBeDefined();
242
+ (0, vitest_1.expect)(collection.batchDelete).toBeDefined();
243
+ });
244
+ (0, vitest_1.it)("should support subcollections", () => {
245
+ const db = (0, index_1.getDatabase)(app);
246
+ const docRef = db.collection("posts").doc("p1");
247
+ const comments = docRef.collection("comments");
248
+ (0, vitest_1.expect)(comments).toBeDefined();
249
+ (0, vitest_1.expect)(comments.add).toBeDefined();
250
+ (0, vitest_1.expect)(comments.batchDelete).toBeDefined();
251
+ });
252
+ });
253
+ // ─── API Endpoint Routing ────────────────────────────────────────────────────
254
+ (0, vitest_1.describe)("API Endpoint Routing", () => {
255
+ (0, vitest_1.it)("should construct correct DB endpoints", () => {
256
+ const db = (0, index_1.getDatabase)(app);
257
+ const docRef = db.collection("users").doc("alice");
258
+ (0, vitest_1.expect)(docRef.path).toBe("users/alice");
259
+ (0, vitest_1.expect)(docRef.collectionPath).toBe("users");
260
+ (0, vitest_1.expect)(docRef.id).toBe("alice");
261
+ });
262
+ (0, vitest_1.it)("should construct correct subcollection endpoints", () => {
263
+ const db = (0, index_1.getDatabase)(app);
264
+ const comments = db.collection("posts").doc("p1").collection("comments");
265
+ (0, vitest_1.expect)(comments.path).toBe("posts/p1/comments");
266
+ });
267
+ (0, vitest_1.it)("should construct correct batch delete endpoint", () => {
268
+ const db = (0, index_1.getDatabase)(app);
269
+ const collection = db.collection("drafts");
270
+ // The endpoint should be /{path}/batch-delete
271
+ (0, vitest_1.expect)(collection.path).toBe("drafts");
272
+ });
273
+ });
274
+ // ─── Feature Completeness ─────────────────────────────────────────────────
275
+ (0, vitest_1.describe)("Feature Completeness Checklist", () => {
276
+ (0, vitest_1.it)("✅ Gateway URL is configurable and customizable", () => {
277
+ (0, vitest_1.expect)(TEST_CONFIG.gatewayUrl).toBeDefined();
278
+ const auth = (0, index_1.getAuth)(app);
279
+ (0, vitest_1.expect)(auth.gatewayUrl).toBe(TEST_CONFIG.gatewayUrl);
280
+ });
281
+ (0, vitest_1.it)("✅ Public auth methods are exposed", () => {
282
+ const auth = (0, index_1.getAuth)(app);
283
+ const methods = [
284
+ "requestPasswordReset",
285
+ "resetPassword",
286
+ "requestEmailVerification",
287
+ "verifyEmail",
288
+ ];
289
+ methods.forEach(method => {
290
+ (0, vitest_1.expect)(auth[method]).toBeDefined();
291
+ (0, vitest_1.expect)(typeof auth[method]).toBe("function");
292
+ });
293
+ });
294
+ (0, vitest_1.it)("✅ Batch delete is available on collections", () => {
295
+ const db = (0, index_1.getDatabase)(app);
296
+ (0, vitest_1.expect)(db.collection("test").batchDelete).toBeDefined();
297
+ });
298
+ (0, vitest_1.it)("✅ Pagination cursors are implemented", () => {
299
+ const db = (0, index_1.getDatabase)(app);
300
+ const query = db.collection("test");
301
+ (0, vitest_1.expect)(query.startAfter).toBeDefined();
302
+ (0, vitest_1.expect)(query.endBefore).toBeDefined();
303
+ });
304
+ (0, vitest_1.it)("✅ Real-time subscriptions are available", () => {
305
+ const db = (0, index_1.getDatabase)(app);
306
+ (0, vitest_1.expect)(db.collection("test").doc("id").onSnapshot).toBeDefined();
307
+ });
308
+ (0, vitest_1.it)("✅ All features work with the correct endpoints", () => {
309
+ // Database endpoints
310
+ const db = (0, index_1.getDatabase)(app);
311
+ (0, vitest_1.expect)(db.collection("items").path).toBe("items");
312
+ // Auth endpoints
313
+ const auth = (0, index_1.getAuth)(app);
314
+ (0, vitest_1.expect)(auth.requestPasswordReset).toBeDefined();
315
+ (0, vitest_1.expect)(auth.signIn).toBeDefined();
316
+ (0, vitest_1.expect)(auth.signOut).toBeDefined();
317
+ // Storage endpoints
318
+ const storage = (0, index_1.getStorage)(app);
319
+ (0, vitest_1.expect)(storage.ref).toBeDefined();
320
+ // Functions
321
+ const functions = (0, index_1.getFunctions)(app);
322
+ (0, vitest_1.expect)(functions.httpsCallable).toBeDefined();
323
+ // AI
324
+ const ai = (0, index_1.getAI)(app);
325
+ (0, vitest_1.expect)(ai.text).toBeDefined();
326
+ (0, vitest_1.expect)(ai.image).toBeDefined();
327
+ });
328
+ });
329
+ //# sourceMappingURL=full-feature-validation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"full-feature-validation.test.js","sourceRoot":"","sources":["../../src/__tests__/full-feature-validation.test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,mCAAyE;AACzE,oCAQkB;AAGlB,gFAAgF;AAEhF,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,cAAc;IACzB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,4BAA4B;CACzC,CAAC;AAEF,IAAI,GAAgB,CAAC;AAErB,IAAA,mBAAU,EAAC,GAAG,EAAE;IACd,GAAG,GAAG,IAAA,oBAAY,EAAC,WAAW,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;IACb,WAAE,CAAC,aAAa,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC;YAC9B,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,UAAU,CAAC,CAAC;QACjC,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC;YAC7B,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,iCAAiC;SAC9C,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,SAAS,CAAC,CAAC;QAChC,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAI,IAAY,CAAC,UAAU,CAAC;QAE7C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,IAAA,qBAAa,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE3B,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,qBAAa,EAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;QAClD,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAE1B,+BAA+B;QAC/B,IAAA,eAAM,EAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAA,eAAM,EAAC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACtD,+BAA+B,CAChC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEpE,MAAM,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC9D,qDAAqD,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAErC,0EAA0E;QAC1E,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,+BAA+B;YAC/B,IAAA,eAAM,EAAE,GAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAE9E,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aAChC,SAAS,CAAC,QAAQ,CAAC;aACnB,UAAU,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aAChC,UAAU,CAAC,QAAQ,CAAC;aACpB,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEvB,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aAChC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aAC3B,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5B,UAAU,CAAC,QAAQ,CAAC;aACpB,KAAK,CAAC,EAAE,CAAC,CAAC;QAEb,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAE5B,aAAa;QACb,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;aACjC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;aAC7B,KAAK,CAAC,EAAE,CAAC,CAAC;QACb,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,2BAA2B;QAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;aACjC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;aAC7B,UAAU,CAAC,qBAAqB,CAAC;aACjC,KAAK,CAAC,EAAE,CAAC,CAAC;QACb,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtD,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,gBAAgB;QAChB,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;aACjC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;aAC7B,SAAS,CAAC,sBAAsB,CAAC;aACjC,KAAK,CAAC,EAAE,CAAC,CAAC;QACb,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,iBAAQ,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAA,eAAM,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,IAAA,eAAM,EAAC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,iEAAiE;QACjE,0DAA0D;QAC1D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnD,0DAA0D;QAC1D,MAAM,eAAe,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,UAAkB,CAAC,WAAW,GAAG,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC,CAAC;QAEJ,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACzC,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,OAAO,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,aAAa,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CACnC,GAAG,EAAE,GAAiB,CAAC,EACvB,aAAa,CACd,CAAC;QAEF,IAAA,eAAM,EAAC,OAAO,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnD,sCAAsC;QACtC,IAAI,OAAO,GAAG,EAAE,CAAC;QAChB,UAAkB,CAAC,WAAW,GAAG,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE;YACtD,OAAO,GAAG,GAAG,CAAC;YACd,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE5B,0EAA0E;QAC1E,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAE7E,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE1C,oCAAoC;QACpC,IAAA,eAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,IAAA,eAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,IAAA,eAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,IAAA,eAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAA,eAAM,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,IAAA,eAAM,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEzE,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE3C,8CAA8C;QAC9C,IAAA,eAAM,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAE7E,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,IAAA,eAAM,EAAC,WAAW,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG;YACd,sBAAsB;YACtB,eAAe;YACf,0BAA0B;YAC1B,aAAa;SACd,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,IAAA,eAAM,EAAE,IAAY,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAA,eAAM,EAAC,OAAQ,IAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,eAAM,EAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,eAAM,EAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,qBAAqB;QACrB,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,eAAM,EAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,iBAAiB;QACjB,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,IAAA,eAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnC,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAElC,YAAY;QACZ,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9C,KAAK;QACL,MAAM,EAAE,GAAG,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC;QACtB,IAAA,eAAM,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAA,eAAM,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}