@nahisaho/yata-local 1.6.6

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 (77) hide show
  1. package/dist/auto-updater.d.ts +101 -0
  2. package/dist/auto-updater.d.ts.map +1 -0
  3. package/dist/auto-updater.js +402 -0
  4. package/dist/auto-updater.js.map +1 -0
  5. package/dist/database.d.ts +229 -0
  6. package/dist/database.d.ts.map +1 -0
  7. package/dist/database.js +959 -0
  8. package/dist/database.js.map +1 -0
  9. package/dist/index.d.ts +298 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +436 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/io.d.ts +77 -0
  14. package/dist/io.d.ts.map +1 -0
  15. package/dist/io.js +403 -0
  16. package/dist/io.js.map +1 -0
  17. package/dist/kgpr/diff-engine.d.ts +110 -0
  18. package/dist/kgpr/diff-engine.d.ts.map +1 -0
  19. package/dist/kgpr/diff-engine.js +335 -0
  20. package/dist/kgpr/diff-engine.js.map +1 -0
  21. package/dist/kgpr/index.d.ts +16 -0
  22. package/dist/kgpr/index.d.ts.map +1 -0
  23. package/dist/kgpr/index.js +14 -0
  24. package/dist/kgpr/index.js.map +1 -0
  25. package/dist/kgpr/kgpr-manager.d.ts +122 -0
  26. package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
  27. package/dist/kgpr/kgpr-manager.js +344 -0
  28. package/dist/kgpr/kgpr-manager.js.map +1 -0
  29. package/dist/kgpr/privacy-filter.d.ts +109 -0
  30. package/dist/kgpr/privacy-filter.d.ts.map +1 -0
  31. package/dist/kgpr/privacy-filter.js +295 -0
  32. package/dist/kgpr/privacy-filter.js.map +1 -0
  33. package/dist/kgpr/types.d.ts +234 -0
  34. package/dist/kgpr/types.d.ts.map +1 -0
  35. package/dist/kgpr/types.js +54 -0
  36. package/dist/kgpr/types.js.map +1 -0
  37. package/dist/query-engine.d.ts +78 -0
  38. package/dist/query-engine.d.ts.map +1 -0
  39. package/dist/query-engine.js +368 -0
  40. package/dist/query-engine.js.map +1 -0
  41. package/dist/reasoning.d.ts +112 -0
  42. package/dist/reasoning.d.ts.map +1 -0
  43. package/dist/reasoning.js +455 -0
  44. package/dist/reasoning.js.map +1 -0
  45. package/dist/types.d.ts +580 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +37 -0
  48. package/dist/types.js.map +1 -0
  49. package/dist/wake-sleep/cycle-manager.d.ts +76 -0
  50. package/dist/wake-sleep/cycle-manager.d.ts.map +1 -0
  51. package/dist/wake-sleep/cycle-manager.js +291 -0
  52. package/dist/wake-sleep/cycle-manager.js.map +1 -0
  53. package/dist/wake-sleep/index.d.ts +15 -0
  54. package/dist/wake-sleep/index.d.ts.map +1 -0
  55. package/dist/wake-sleep/index.js +19 -0
  56. package/dist/wake-sleep/index.js.map +1 -0
  57. package/dist/wake-sleep/pattern-compressor.d.ts +86 -0
  58. package/dist/wake-sleep/pattern-compressor.d.ts.map +1 -0
  59. package/dist/wake-sleep/pattern-compressor.js +333 -0
  60. package/dist/wake-sleep/pattern-compressor.js.map +1 -0
  61. package/dist/wake-sleep/sleep-phase.d.ts +79 -0
  62. package/dist/wake-sleep/sleep-phase.d.ts.map +1 -0
  63. package/dist/wake-sleep/sleep-phase.js +329 -0
  64. package/dist/wake-sleep/sleep-phase.js.map +1 -0
  65. package/dist/wake-sleep/types.d.ts +244 -0
  66. package/dist/wake-sleep/types.d.ts.map +1 -0
  67. package/dist/wake-sleep/types.js +35 -0
  68. package/dist/wake-sleep/types.js.map +1 -0
  69. package/dist/wake-sleep/wake-phase.d.ts +83 -0
  70. package/dist/wake-sleep/wake-phase.d.ts.map +1 -0
  71. package/dist/wake-sleep/wake-phase.js +457 -0
  72. package/dist/wake-sleep/wake-phase.js.map +1 -0
  73. package/dist/yata-bridge.d.ts +78 -0
  74. package/dist/yata-bridge.d.ts.map +1 -0
  75. package/dist/yata-bridge.js +193 -0
  76. package/dist/yata-bridge.js.map +1 -0
  77. package/package.json +60 -0
@@ -0,0 +1,344 @@
1
+ /**
2
+ * YATA Local KGPR Manager
3
+ *
4
+ * Manages Knowledge Graph Pull Requests in local storage
5
+ *
6
+ * @packageDocumentation
7
+ * @module @nahisaho/yata-local/kgpr
8
+ *
9
+ * @see REQ-YL-EXT-KGPR-001
10
+ */
11
+ import { randomUUID } from 'crypto';
12
+ import { createLocalDiffEngine } from './diff-engine.js';
13
+ import { createLocalPrivacyFilter } from './privacy-filter.js';
14
+ /**
15
+ * KGPR Manager for local knowledge graphs
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const manager = createLocalKGPRManager(db);
20
+ *
21
+ * // Create a KGPR
22
+ * const kgpr = await manager.createKGPR({
23
+ * title: 'Add UserService patterns',
24
+ * description: 'Learned patterns from user authentication flow',
25
+ * namespace: 'app.services',
26
+ * privacyLevel: 'strict',
27
+ * });
28
+ *
29
+ * // Preview diff
30
+ * const diff = await manager.previewDiff(kgpr.id);
31
+ *
32
+ * // Submit for review
33
+ * await manager.submitKGPR(kgpr.id);
34
+ * ```
35
+ */
36
+ export class LocalKGPRManager {
37
+ db;
38
+ diffEngine;
39
+ snapshots = new Map();
40
+ constructor(db) {
41
+ this.db = db;
42
+ this.diffEngine = createLocalDiffEngine();
43
+ }
44
+ /**
45
+ * Create a new KGPR
46
+ *
47
+ * @param options - Creation options
48
+ * @returns Created KGPR info
49
+ */
50
+ async createKGPR(options) {
51
+ const id = `KGPR-${Date.now()}-${randomUUID().substring(0, 8)}`;
52
+ const now = new Date();
53
+ // Get current entities and relationships
54
+ const entities = await this.getEntities(options.namespace, options.entityTypes);
55
+ const relationships = await this.getRelationships();
56
+ // Generate diff from baseline (if provided) or full diff
57
+ const baseline = options.baselineId ? this.snapshots.get(options.baselineId) ?? null : null;
58
+ let diff = this.diffEngine.generateDiff(baseline, entities, relationships, {
59
+ namespace: options.namespace,
60
+ entityTypes: options.entityTypes,
61
+ });
62
+ // Apply privacy filter
63
+ const privacyLevel = options.privacyLevel || 'moderate';
64
+ const privacyFilter = createLocalPrivacyFilter(privacyLevel);
65
+ diff = privacyFilter.filterDiff(diff);
66
+ const kgprInfo = {
67
+ id,
68
+ title: options.title,
69
+ description: options.description || '',
70
+ status: 'draft',
71
+ namespace: options.namespace || '*',
72
+ diff,
73
+ privacyLevel,
74
+ entityTypes: options.entityTypes || [],
75
+ reviews: [],
76
+ createdAt: now,
77
+ updatedAt: now,
78
+ };
79
+ // Save to database
80
+ this.db.insertKGPR({
81
+ id: kgprInfo.id,
82
+ title: kgprInfo.title,
83
+ description: kgprInfo.description,
84
+ status: kgprInfo.status,
85
+ author: options.author || 'local',
86
+ namespace: kgprInfo.namespace,
87
+ diffJson: JSON.stringify(kgprInfo.diff),
88
+ privacyLevel: kgprInfo.privacyLevel,
89
+ entityTypesJson: JSON.stringify(kgprInfo.entityTypes),
90
+ createdAt: kgprInfo.createdAt.toISOString(),
91
+ updatedAt: kgprInfo.updatedAt.toISOString(),
92
+ });
93
+ return kgprInfo;
94
+ }
95
+ /**
96
+ * Get a KGPR by ID
97
+ *
98
+ * @param id - KGPR ID
99
+ * @returns KGPR info or null if not found
100
+ */
101
+ async getKGPR(id) {
102
+ const kgpr = this.db.getKGPR(id);
103
+ if (!kgpr)
104
+ return null;
105
+ const reviews = this.db.getKGPRReviews(id);
106
+ return this.dbKGPRToInfo(kgpr, reviews);
107
+ }
108
+ /**
109
+ * List KGPRs with filtering
110
+ *
111
+ * @param options - List options
112
+ * @returns Array of KGPRs
113
+ */
114
+ async listKGPRs(options) {
115
+ const kgprs = this.db.listKGPRs({
116
+ status: Array.isArray(options?.status) ? options?.status[0] : options?.status,
117
+ namespace: options?.namespace,
118
+ limit: options?.limit,
119
+ offset: options?.offset,
120
+ });
121
+ // Convert to LocalKGPRInfo format
122
+ const results = [];
123
+ for (const kgpr of kgprs) {
124
+ const reviews = this.db.getKGPRReviews(kgpr.id);
125
+ results.push(this.dbKGPRToInfo(kgpr, reviews));
126
+ }
127
+ // Apply search filter if provided
128
+ let filtered = results;
129
+ if (options?.search) {
130
+ const searchLower = options.search.toLowerCase();
131
+ filtered = results.filter((k) => k.title.toLowerCase().includes(searchLower) ||
132
+ k.description.toLowerCase().includes(searchLower));
133
+ }
134
+ // Sort
135
+ if (options?.sortBy) {
136
+ const sortOrder = options.sortOrder === 'desc' ? -1 : 1;
137
+ filtered.sort((a, b) => {
138
+ switch (options.sortBy) {
139
+ case 'created':
140
+ return (a.createdAt.getTime() - b.createdAt.getTime()) * sortOrder;
141
+ case 'updated':
142
+ return (a.updatedAt.getTime() - b.updatedAt.getTime()) * sortOrder;
143
+ case 'title':
144
+ return a.title.localeCompare(b.title) * sortOrder;
145
+ default:
146
+ return 0;
147
+ }
148
+ });
149
+ }
150
+ return filtered;
151
+ }
152
+ /**
153
+ * Preview diff for a KGPR (recalculate current state)
154
+ *
155
+ * @param id - KGPR ID
156
+ * @returns Current diff
157
+ */
158
+ async previewDiff(id) {
159
+ const kgpr = await this.getKGPR(id);
160
+ if (!kgpr)
161
+ return null;
162
+ // Get current state
163
+ const entities = await this.getEntities(kgpr.namespace !== '*' ? kgpr.namespace : undefined, kgpr.entityTypes.length > 0 ? kgpr.entityTypes : undefined);
164
+ const relationships = await this.getRelationships();
165
+ // Generate fresh diff
166
+ const diff = this.diffEngine.generateDiff(null, entities, relationships, {
167
+ namespace: kgpr.namespace !== '*' ? kgpr.namespace : undefined,
168
+ entityTypes: kgpr.entityTypes.length > 0 ? kgpr.entityTypes : undefined,
169
+ });
170
+ // Apply privacy filter
171
+ const privacyFilter = createLocalPrivacyFilter(kgpr.privacyLevel);
172
+ return privacyFilter.filterDiff(diff);
173
+ }
174
+ /**
175
+ * Update KGPR status
176
+ *
177
+ * @param id - KGPR ID
178
+ * @param status - New status
179
+ */
180
+ async updateStatus(id, status) {
181
+ this.db.updateKGPRStatus(id, status);
182
+ }
183
+ /**
184
+ * Submit a KGPR for review
185
+ *
186
+ * @param id - KGPR ID
187
+ */
188
+ async submitKGPR(id) {
189
+ const kgpr = await this.getKGPR(id);
190
+ if (!kgpr) {
191
+ throw new Error(`KGPR not found: ${id}`);
192
+ }
193
+ if (kgpr.status !== 'draft') {
194
+ throw new Error(`Cannot submit KGPR in status: ${kgpr.status}`);
195
+ }
196
+ this.db.updateKGPRStatus(id, 'open');
197
+ }
198
+ /**
199
+ * Add a review to a KGPR
200
+ *
201
+ * @param kgprId - KGPR ID
202
+ * @param review - Review data
203
+ */
204
+ async addReview(kgprId, review) {
205
+ const kgpr = await this.getKGPR(kgprId);
206
+ if (!kgpr) {
207
+ throw new Error(`KGPR not found: ${kgprId}`);
208
+ }
209
+ const reviewEntry = {
210
+ id: `REV-${Date.now()}-${randomUUID().substring(0, 8)}`,
211
+ kgprId,
212
+ reviewerId: review.reviewerId,
213
+ status: review.status,
214
+ comment: review.comment,
215
+ createdAt: new Date(),
216
+ };
217
+ this.db.insertKGPRReview({
218
+ id: reviewEntry.id,
219
+ kgprId: reviewEntry.kgprId,
220
+ reviewer: reviewEntry.reviewerId,
221
+ action: reviewEntry.status,
222
+ comment: reviewEntry.comment ?? null,
223
+ createdAt: reviewEntry.createdAt.toISOString(),
224
+ });
225
+ // Update KGPR status based on review
226
+ if (review.status === 'approved') {
227
+ this.db.updateKGPRStatus(kgprId, 'approved');
228
+ }
229
+ else if (review.status === 'changes_requested') {
230
+ this.db.updateKGPRStatus(kgprId, 'changes_requested');
231
+ }
232
+ return reviewEntry;
233
+ }
234
+ /**
235
+ * Close a KGPR
236
+ *
237
+ * @param id - KGPR ID
238
+ */
239
+ async closeKGPR(id) {
240
+ const kgpr = await this.getKGPR(id);
241
+ if (!kgpr) {
242
+ throw new Error(`KGPR not found: ${id}`);
243
+ }
244
+ this.db.updateKGPRStatus(id, 'merged');
245
+ }
246
+ /**
247
+ * Create a snapshot of current KG state
248
+ *
249
+ * @param description - Snapshot description
250
+ * @returns Snapshot ID
251
+ */
252
+ async createSnapshot(description) {
253
+ const entities = await this.getEntities();
254
+ const relationships = await this.getRelationships();
255
+ const snapshot = this.diffEngine.createSnapshot(entities, relationships, description);
256
+ this.snapshots.set(snapshot.id, snapshot);
257
+ return snapshot.id;
258
+ }
259
+ /**
260
+ * Convert DB KGPR to LocalKGPRInfo
261
+ */
262
+ dbKGPRToInfo(kgpr, reviews) {
263
+ return {
264
+ id: kgpr.id,
265
+ title: kgpr.title,
266
+ description: kgpr.description || '',
267
+ status: kgpr.status,
268
+ namespace: kgpr.namespace,
269
+ diff: JSON.parse(kgpr.diffJson),
270
+ privacyLevel: kgpr.privacyLevel,
271
+ entityTypes: kgpr.entityTypesJson ? JSON.parse(kgpr.entityTypesJson) : [],
272
+ reviews: reviews.map(r => ({
273
+ id: r.id,
274
+ kgprId: r.kgprId,
275
+ reviewerId: r.reviewer,
276
+ status: r.action === 'approve' ? 'approved' : r.action,
277
+ comment: r.comment,
278
+ createdAt: r.createdAt,
279
+ })),
280
+ createdAt: kgpr.createdAt,
281
+ updatedAt: kgpr.updatedAt,
282
+ submittedAt: kgpr.submittedAt,
283
+ };
284
+ }
285
+ /**
286
+ * Get entities from the database
287
+ */
288
+ async getEntities(namespace, entityTypes) {
289
+ // Use query engine to get entities
290
+ const db = this.db.getDb();
291
+ if (!db)
292
+ return [];
293
+ let query = 'SELECT * FROM entities WHERE 1=1';
294
+ const params = [];
295
+ if (namespace) {
296
+ query += ' AND namespace LIKE ?';
297
+ params.push(`${namespace}%`);
298
+ }
299
+ if (entityTypes && entityTypes.length > 0) {
300
+ query += ` AND type IN (${entityTypes.map(() => '?').join(',')})`;
301
+ params.push(...entityTypes);
302
+ }
303
+ const rows = db.prepare(query).all(...params);
304
+ return rows.map((row) => ({
305
+ id: row.id,
306
+ type: row.type,
307
+ name: row.name,
308
+ namespace: row.namespace,
309
+ filePath: row.file_path || undefined,
310
+ line: row.line || undefined,
311
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
312
+ createdAt: new Date(row.created_at),
313
+ updatedAt: new Date(row.updated_at),
314
+ }));
315
+ }
316
+ /**
317
+ * Get relationships from the database
318
+ */
319
+ async getRelationships() {
320
+ const db = this.db.getDb();
321
+ if (!db)
322
+ return [];
323
+ const rows = db.prepare('SELECT * FROM relationships').all();
324
+ return rows.map((row) => ({
325
+ id: row.id,
326
+ type: row.type,
327
+ sourceId: row.source_id,
328
+ targetId: row.target_id,
329
+ weight: row.weight,
330
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
331
+ createdAt: new Date(row.created_at),
332
+ }));
333
+ }
334
+ }
335
+ /**
336
+ * Create a new KGPR manager
337
+ *
338
+ * @param db - YataDatabase instance
339
+ * @returns New KGPR manager
340
+ */
341
+ export function createLocalKGPRManager(db) {
342
+ return new LocalKGPRManager(db);
343
+ }
344
+ //# sourceMappingURL=kgpr-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kgpr-manager.js","sourceRoot":"","sources":["../../src/kgpr/kgpr-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * YATA Local KGPR - Privacy Filter
3
+ *
4
+ * Removes sensitive information before sharing local knowledge graphs
5
+ *
6
+ * @packageDocumentation
7
+ * @module @nahisaho/yata-local/kgpr
8
+ *
9
+ * @see REQ-YL-EXT-KGPR-002
10
+ */
11
+ import type { LocalEntityChange, LocalRelationshipChange, LocalKGPRDiff, LocalPrivacyFilterConfig, PrivacyLevel } from './types.js';
12
+ /**
13
+ * Privacy filter for local KGPR
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const filter = createLocalPrivacyFilter('strict');
18
+ * const sanitizedDiff = filter.filterDiff(diff);
19
+ * ```
20
+ */
21
+ export declare class LocalPrivacyFilter {
22
+ private config;
23
+ private excludeRegexes;
24
+ constructor(config: LocalPrivacyFilterConfig);
25
+ /**
26
+ * Get the current configuration
27
+ */
28
+ getConfig(): LocalPrivacyFilterConfig;
29
+ /**
30
+ * Filter a complete diff
31
+ *
32
+ * @param diff - The diff to filter
33
+ * @returns Filtered diff with sensitive data removed
34
+ */
35
+ filterDiff(diff: LocalKGPRDiff): LocalKGPRDiff;
36
+ /**
37
+ * Filter entity changes
38
+ */
39
+ filterEntityChanges(changes: LocalEntityChange[]): LocalEntityChange[];
40
+ /**
41
+ * Filter relationship changes
42
+ */
43
+ filterRelationshipChanges(changes: LocalRelationshipChange[]): LocalRelationshipChange[];
44
+ /**
45
+ * Check if an entity should be included
46
+ */
47
+ shouldIncludeEntity(entity: LocalEntityChange): boolean;
48
+ /**
49
+ * Check if a relationship should be included
50
+ */
51
+ shouldIncludeRelationship(rel: LocalRelationshipChange): boolean;
52
+ /**
53
+ * Sanitize an entity change
54
+ */
55
+ private sanitizeEntity;
56
+ /**
57
+ * Sanitize a relationship change
58
+ */
59
+ private sanitizeRelationship;
60
+ /**
61
+ * Check if a namespace should be excluded
62
+ */
63
+ private isNamespaceExcluded;
64
+ /**
65
+ * Check if a name should be excluded
66
+ */
67
+ private isNameExcluded;
68
+ /**
69
+ * Check if a file path should be excluded
70
+ */
71
+ private isPathExcluded;
72
+ /**
73
+ * Sanitize a file path
74
+ */
75
+ private sanitizePath;
76
+ /**
77
+ * Sanitize metadata object
78
+ */
79
+ private sanitizeMetadata;
80
+ /**
81
+ * Apply configured string replacements
82
+ */
83
+ private applyReplacements;
84
+ /**
85
+ * Calculate stats from filtered changes
86
+ */
87
+ private calculateStats;
88
+ }
89
+ /**
90
+ * Create a privacy filter with a preset level
91
+ *
92
+ * @param level - Privacy level preset
93
+ * @param customConfig - Custom configuration to merge with preset
94
+ * @returns Configured privacy filter
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * // Use strict preset
99
+ * const strictFilter = createLocalPrivacyFilter('strict');
100
+ *
101
+ * // Use moderate with custom exclusions
102
+ * const customFilter = createLocalPrivacyFilter('moderate', {
103
+ * excludePatterns: [...DEFAULT_LOCAL_PRIVACY_MODERATE.excludePatterns, 'my_secret'],
104
+ * });
105
+ * ```
106
+ */
107
+ export declare function createLocalPrivacyFilter(level: PrivacyLevel, customConfig?: Partial<LocalPrivacyFilterConfig>): LocalPrivacyFilter;
108
+ export { DEFAULT_LOCAL_PRIVACY_STRICT, DEFAULT_LOCAL_PRIVACY_MODERATE, DEFAULT_LOCAL_PRIVACY_NONE, } from './types.js';
109
+ //# sourceMappingURL=privacy-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy-filter.d.ts","sourceRoot":"","sources":["../../src/kgpr/privacy-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,wBAAwB,EAExB,YAAY,EACb,MAAM,YAAY,CAAC;AAOpB;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,cAAc,CAAW;gBAErB,MAAM,EAAE,wBAAwB;IAO5C;;OAEG;IACH,SAAS,IAAI,wBAAwB;IAIrC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa;IAoB9C;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE;IAMtE;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,uBAAuB,EAAE,GAAG,uBAAuB,EAAE;IAMxF;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAmBvD;;OAEG;IACH,yBAAyB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO;IAchE;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,cAAc;CA2BvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,YAAY,EACnB,YAAY,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAC/C,kBAAkB,CAuCpB;AAGD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,YAAY,CAAC"}