@steno-ai/supabase-adapter 0.1.5 → 0.1.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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/storage.d.ts +21 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +124 -21
- package/dist/storage.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/storage.ts +145 -33
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -13,9 +13,29 @@ export declare function toSnakeCase(obj: Record<string, unknown>): Record<string
|
|
|
13
13
|
* Arrays and null values are preserved.
|
|
14
14
|
*/
|
|
15
15
|
export declare function toCamelCase(obj: Record<string, unknown>): Record<string, unknown>;
|
|
16
|
+
export interface EncryptionConfig {
|
|
17
|
+
/**
|
|
18
|
+
* Encrypt a plaintext string. Called before inserting sensitive text fields.
|
|
19
|
+
* Must return a string in format: `iv:authTag:ciphertext` (all base64).
|
|
20
|
+
* If not provided, fields are stored as plaintext.
|
|
21
|
+
*/
|
|
22
|
+
encryptField: (plaintext: string) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Decrypt an encrypted string. Called after fetching sensitive text fields.
|
|
25
|
+
* Input format: `iv:authTag:ciphertext` (all base64).
|
|
26
|
+
* Must handle gracefully if the input is NOT encrypted (plaintext fallback).
|
|
27
|
+
* If not provided, fields are returned as-is.
|
|
28
|
+
*/
|
|
29
|
+
decryptField: (ciphertext: string) => string;
|
|
30
|
+
}
|
|
16
31
|
export declare class SupabaseStorageAdapter implements StorageAdapter {
|
|
17
32
|
private client;
|
|
18
|
-
|
|
33
|
+
private encryption?;
|
|
34
|
+
constructor(client: SupabaseClient, encryption?: EncryptionConfig);
|
|
35
|
+
private enc;
|
|
36
|
+
private dec;
|
|
37
|
+
private decryptFactRow;
|
|
38
|
+
private decryptEntityRow;
|
|
19
39
|
ping(): Promise<boolean>;
|
|
20
40
|
createTenant(tenant: CreateTenant & {
|
|
21
41
|
id: string;
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,MAAM,EACN,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,OAAO,EACP,aAAa,EACd,MAAM,kBAAkB,CAAC;AAsB1B;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMjF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMjF;AAcD,qBAAa,sBAAuB,YAAW,cAAc;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.js
CHANGED
|
@@ -50,8 +50,66 @@ function throwSupabaseError(method, error) {
|
|
|
50
50
|
// =============================================================================
|
|
51
51
|
export class SupabaseStorageAdapter {
|
|
52
52
|
client;
|
|
53
|
-
|
|
53
|
+
encryption;
|
|
54
|
+
constructor(client, encryption) {
|
|
54
55
|
this.client = client;
|
|
56
|
+
this.encryption = encryption;
|
|
57
|
+
}
|
|
58
|
+
// Encrypt a single field. Returns value as-is if no encryption configured or value is null.
|
|
59
|
+
enc(value) {
|
|
60
|
+
if (value == null || value === '')
|
|
61
|
+
return value;
|
|
62
|
+
if (!this.encryption)
|
|
63
|
+
return value;
|
|
64
|
+
return this.encryption.encryptField(value);
|
|
65
|
+
}
|
|
66
|
+
// Decrypt a single field. Returns value as-is if:
|
|
67
|
+
// - no encryption configured
|
|
68
|
+
// - value is null/empty
|
|
69
|
+
// - value does not match encrypted format (handles old plaintext rows gracefully)
|
|
70
|
+
dec(value) {
|
|
71
|
+
if (value == null || value === '')
|
|
72
|
+
return value;
|
|
73
|
+
if (!this.encryption)
|
|
74
|
+
return value;
|
|
75
|
+
// Encrypted format is always: iv:authTag:ciphertext (exactly 3 colon-separated parts)
|
|
76
|
+
// If the value does not match this pattern it is plaintext — return as-is
|
|
77
|
+
const parts = value.split(':');
|
|
78
|
+
if (parts.length !== 3)
|
|
79
|
+
return value;
|
|
80
|
+
try {
|
|
81
|
+
return this.encryption.decryptField(value);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return value; // decryption failed — return as-is, never crash
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Decrypt all sensitive text fields on a facts row.
|
|
88
|
+
// Call this on every row returned from any facts query.
|
|
89
|
+
decryptFactRow(row) {
|
|
90
|
+
if (row['content'] != null)
|
|
91
|
+
row['content'] = this.dec(row['content']);
|
|
92
|
+
if (row['source_chunk'] != null)
|
|
93
|
+
row['source_chunk'] = this.dec(row['source_chunk']);
|
|
94
|
+
if (row['original_content'] != null)
|
|
95
|
+
row['original_content'] = this.dec(row['original_content']);
|
|
96
|
+
return row;
|
|
97
|
+
}
|
|
98
|
+
// Decrypt all sensitive text fields on an entities row.
|
|
99
|
+
// NOTE: canonical_name is intentionally NOT decrypted — it stays plaintext for DB lookups.
|
|
100
|
+
decryptEntityRow(row) {
|
|
101
|
+
if (row['name'] != null)
|
|
102
|
+
row['name'] = this.dec(row['name']);
|
|
103
|
+
if (row['properties'] != null) {
|
|
104
|
+
const decrypted = this.dec(row['properties']);
|
|
105
|
+
try {
|
|
106
|
+
row['properties'] = decrypted ? JSON.parse(decrypted) : row['properties'];
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
row['properties'] = decrypted; // not valid JSON, keep as string
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return row;
|
|
55
113
|
}
|
|
56
114
|
async ping() {
|
|
57
115
|
const { error } = await this.client.from('tenants').select('id').limit(1);
|
|
@@ -254,6 +312,13 @@ export class SupabaseStorageAdapter {
|
|
|
254
312
|
async createFact(fact) {
|
|
255
313
|
const { embedding, ...rest } = fact;
|
|
256
314
|
const row = toSnakeCase(rest);
|
|
315
|
+
// Encrypt sensitive text fields before storing
|
|
316
|
+
if (row['content'] != null)
|
|
317
|
+
row['content'] = this.enc(row['content']);
|
|
318
|
+
if (row['source_chunk'] != null)
|
|
319
|
+
row['source_chunk'] = this.enc(row['source_chunk']);
|
|
320
|
+
if (row['original_content'] != null)
|
|
321
|
+
row['original_content'] = this.enc(row['original_content']);
|
|
257
322
|
// Version defaults to 1 for new facts
|
|
258
323
|
if (!('version' in row)) {
|
|
259
324
|
row['version'] = 1;
|
|
@@ -286,6 +351,7 @@ export class SupabaseStorageAdapter {
|
|
|
286
351
|
throwSupabaseError('getFact', error);
|
|
287
352
|
if (!data)
|
|
288
353
|
return null;
|
|
354
|
+
this.decryptFactRow(data);
|
|
289
355
|
return toCamelCase(data);
|
|
290
356
|
}
|
|
291
357
|
async getFactsByIds(tenantId, ids) {
|
|
@@ -298,7 +364,10 @@ export class SupabaseStorageAdapter {
|
|
|
298
364
|
.in('id', ids);
|
|
299
365
|
if (error)
|
|
300
366
|
throwSupabaseError('getFactsByIds', error);
|
|
301
|
-
return (data ?? []).map((row) =>
|
|
367
|
+
return (data ?? []).map((row) => {
|
|
368
|
+
this.decryptFactRow(row);
|
|
369
|
+
return toCamelCase(row);
|
|
370
|
+
});
|
|
302
371
|
}
|
|
303
372
|
async getFactsByLineage(tenantId, lineageId) {
|
|
304
373
|
const { data, error } = await this.client
|
|
@@ -309,7 +378,10 @@ export class SupabaseStorageAdapter {
|
|
|
309
378
|
.order('version', { ascending: true });
|
|
310
379
|
if (error)
|
|
311
380
|
throwSupabaseError('getFactsByLineage', error);
|
|
312
|
-
return (data ?? []).map((row) =>
|
|
381
|
+
return (data ?? []).map((row) => {
|
|
382
|
+
this.decryptFactRow(row);
|
|
383
|
+
return toCamelCase(row);
|
|
384
|
+
});
|
|
313
385
|
}
|
|
314
386
|
async invalidateFact(tenantId, id) {
|
|
315
387
|
const { error } = await this.client
|
|
@@ -326,6 +398,15 @@ export class SupabaseStorageAdapter {
|
|
|
326
398
|
async createEntity(entity) {
|
|
327
399
|
const { embedding, ...rest } = entity;
|
|
328
400
|
const row = toSnakeCase(rest);
|
|
401
|
+
// Encrypt display name and properties before persisting
|
|
402
|
+
// NOTE: canonical_name is intentionally NOT encrypted — it is used for DB equality lookups
|
|
403
|
+
if (row['name'] != null)
|
|
404
|
+
row['name'] = this.enc(row['name']);
|
|
405
|
+
if (row['properties'] != null) {
|
|
406
|
+
// Always JSON.stringify regardless of whether it is already a string.
|
|
407
|
+
// This ensures consistent round-trip: stringify on write, parse on read.
|
|
408
|
+
row['properties'] = this.enc(JSON.stringify(row['properties']));
|
|
409
|
+
}
|
|
329
410
|
if (embedding !== undefined) {
|
|
330
411
|
row['embedding'] = `[${embedding.join(',')}]`;
|
|
331
412
|
}
|
|
@@ -349,6 +430,7 @@ export class SupabaseStorageAdapter {
|
|
|
349
430
|
throwSupabaseError('getEntity', error);
|
|
350
431
|
if (!data)
|
|
351
432
|
return null;
|
|
433
|
+
this.decryptEntityRow(data);
|
|
352
434
|
return toCamelCase(data);
|
|
353
435
|
}
|
|
354
436
|
async findEntityByCanonicalName(tenantId, canonicalName, entityType) {
|
|
@@ -363,6 +445,7 @@ export class SupabaseStorageAdapter {
|
|
|
363
445
|
throwSupabaseError('findEntityByCanonicalName', error);
|
|
364
446
|
if (!data)
|
|
365
447
|
return null;
|
|
448
|
+
this.decryptEntityRow(data);
|
|
366
449
|
return toCamelCase(data);
|
|
367
450
|
}
|
|
368
451
|
async findEntitiesByEmbedding(tenantId, embedding, limit, minSimilarity = 0.3) {
|
|
@@ -374,10 +457,13 @@ export class SupabaseStorageAdapter {
|
|
|
374
457
|
});
|
|
375
458
|
if (error)
|
|
376
459
|
throwSupabaseError('findEntitiesByEmbedding', error);
|
|
377
|
-
return (data ?? []).map((row) =>
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
460
|
+
return (data ?? []).map((row) => {
|
|
461
|
+
this.decryptEntityRow(row);
|
|
462
|
+
return {
|
|
463
|
+
entity: toCamelCase(row),
|
|
464
|
+
similarity: row['similarity'],
|
|
465
|
+
};
|
|
466
|
+
});
|
|
381
467
|
}
|
|
382
468
|
// ---------------------------------------------------------------------------
|
|
383
469
|
// Fact-Entity junction
|
|
@@ -423,10 +509,13 @@ export class SupabaseStorageAdapter {
|
|
|
423
509
|
});
|
|
424
510
|
if (error)
|
|
425
511
|
throwSupabaseError('vectorSearch', error);
|
|
426
|
-
return (data ?? []).map((row) =>
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
512
|
+
return (data ?? []).map((row) => {
|
|
513
|
+
this.decryptFactRow(row);
|
|
514
|
+
return {
|
|
515
|
+
fact: toCamelCase(row),
|
|
516
|
+
similarity: row['similarity'],
|
|
517
|
+
};
|
|
518
|
+
});
|
|
430
519
|
}
|
|
431
520
|
// ---------------------------------------------------------------------------
|
|
432
521
|
// Usage
|
|
@@ -485,7 +574,10 @@ export class SupabaseStorageAdapter {
|
|
|
485
574
|
const rows = data ?? [];
|
|
486
575
|
const hasMore = rows.length > limit;
|
|
487
576
|
const page = hasMore ? rows.slice(0, limit) : rows;
|
|
488
|
-
const facts = page.map((row) =>
|
|
577
|
+
const facts = page.map((row) => {
|
|
578
|
+
this.decryptFactRow(row);
|
|
579
|
+
return toCamelCase(row);
|
|
580
|
+
});
|
|
489
581
|
const nextCursor = hasMore && page.length > 0
|
|
490
582
|
? page[page.length - 1]['created_at']
|
|
491
583
|
: null;
|
|
@@ -563,6 +655,11 @@ export class SupabaseStorageAdapter {
|
|
|
563
655
|
}
|
|
564
656
|
}
|
|
565
657
|
async keywordSearch(options) {
|
|
658
|
+
// Keyword search uses PostgreSQL to_tsquery which cannot match encrypted ciphertext.
|
|
659
|
+
// When encryption is configured, skip keyword search entirely.
|
|
660
|
+
// Vector search (vectorSearch / compoundSearch) still works correctly via embeddings.
|
|
661
|
+
if (this.encryption)
|
|
662
|
+
return [];
|
|
566
663
|
const { query, tenantId, scope, scopeId, limit, asOf } = options;
|
|
567
664
|
const { data, error } = await this.client.rpc('keyword_search_facts', {
|
|
568
665
|
search_query: query,
|
|
@@ -595,11 +692,14 @@ export class SupabaseStorageAdapter {
|
|
|
595
692
|
});
|
|
596
693
|
if (error)
|
|
597
694
|
throwSupabaseError('compoundSearch', error);
|
|
598
|
-
return (data ?? []).map((row) =>
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
695
|
+
return (data ?? []).map((row) => {
|
|
696
|
+
this.decryptFactRow(row);
|
|
697
|
+
return {
|
|
698
|
+
source: row['source'],
|
|
699
|
+
fact: toCamelCase(row),
|
|
700
|
+
relevanceScore: row['relevance_score'],
|
|
701
|
+
};
|
|
702
|
+
});
|
|
603
703
|
}
|
|
604
704
|
async getEntitiesForTenant(tenantId, options) {
|
|
605
705
|
const { limit, cursor } = options;
|
|
@@ -618,7 +718,10 @@ export class SupabaseStorageAdapter {
|
|
|
618
718
|
const rows = data ?? [];
|
|
619
719
|
const hasMore = rows.length > limit;
|
|
620
720
|
const page = hasMore ? rows.slice(0, limit) : rows;
|
|
621
|
-
const entities = page.map((row) =>
|
|
721
|
+
const entities = page.map((row) => {
|
|
722
|
+
this.decryptEntityRow(row);
|
|
723
|
+
return toCamelCase(row);
|
|
724
|
+
});
|
|
622
725
|
const nextCursor = hasMore && page.length > 0
|
|
623
726
|
? page[page.length - 1]['created_at']
|
|
624
727
|
: null;
|
|
@@ -946,7 +1049,7 @@ export class SupabaseStorageAdapter {
|
|
|
946
1049
|
session_id: msg.sessionId,
|
|
947
1050
|
tenant_id: msg.tenantId,
|
|
948
1051
|
role: msg.role,
|
|
949
|
-
content: msg.content,
|
|
1052
|
+
content: this.enc(msg.content),
|
|
950
1053
|
turn_number: msg.turnNumber,
|
|
951
1054
|
});
|
|
952
1055
|
if (error)
|
|
@@ -965,10 +1068,10 @@ export class SupabaseStorageAdapter {
|
|
|
965
1068
|
const { data, error } = await query;
|
|
966
1069
|
if (error)
|
|
967
1070
|
throwSupabaseError('getSessionMessages', error);
|
|
968
|
-
return (data ?? []).map(row => ({
|
|
1071
|
+
return (data ?? []).map((row) => ({
|
|
969
1072
|
id: row.id,
|
|
970
1073
|
role: row.role,
|
|
971
|
-
content: row.content,
|
|
1074
|
+
content: this.dec(row.content),
|
|
972
1075
|
turnNumber: row.turn_number,
|
|
973
1076
|
createdAt: new Date(row.created_at),
|
|
974
1077
|
}));
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAsCA,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAEhF;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAA4B;IACtD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAA4B;IACtD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAuBD,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,SAAS,kBAAkB,CAAC,MAAc,EAAE,KAAiC;IAC3E,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,cAAc,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;AACrG,CAAC;AAED,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF,MAAM,OAAO,sBAAsB;IAIvB;IAHF,UAAU,CAAoB;IAEtC,YACU,MAAsB,EAC9B,UAA6B;QADrB,WAAM,GAAN,MAAM,CAAgB;QAG9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,4FAA4F;IACpF,GAAG,CAAC,KAAgC;QAC1C,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,kDAAkD;IAClD,6BAA6B;IAC7B,wBAAwB;IACxB,kFAAkF;IAC1E,GAAG,CAAC,KAAgC;QAC1C,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACnC,sFAAsF;QACtF,0EAA0E;QAC1E,MAAM,KAAK,GAAI,KAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAe,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,gDAAgD;QAChE,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,wDAAwD;IAChD,cAAc,CAAC,GAA4B;QACjD,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAW,CAAC,CAAC;QAChF,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAW,CAAC,CAAC;QAC/F,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAW,CAAC,CAAC;QAC3G,OAAO,GAAG,CAAC;IACb,CAAC;IAED,wDAAwD;IACxD,2FAA2F;IACnF,gBAAgB,CAAC,GAA4B;QACnD,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAW,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAW,CAAC,CAAC;YACxD,IAAI,CAAC;gBACH,GAAG,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtF,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,iCAAiC;YAClE,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,UAAU;IACV,8EAA8E;IAE9E,KAAK,CAAC,YAAY,CAAC,MAAqC;QACtD,MAAM,GAAG,GAAG,WAAW,CAAC,MAA4C,CAAC,CAAC;QACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;aAChB,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,OAAwB;QACrD,MAAM,GAAG,GAAG,WAAW,CAAC,OAA6C,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,8EAA8E;IAC9E,WAAW;IACX,8EAA8E;IAE9E,KAAK,CAAC,YAAY,CAChB,MAAyE;QAEzE,MAAM,GAAG,GAAG,WAAW,CAAC,MAA4C,CAAC,CAAC;QACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;aACxB,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;aAClB,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7B,IAAI,KAAK;YAAE,kBAAkB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAAsB,CAC1E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,EAAU;QAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7B,IAAI,KAAK;YAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,EAAU;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;aAClD,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChB,IAAI,KAAK;YAAE,kBAAkB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,8EAA8E;IAC9E,cAAc;IACd,8EAA8E;IAE9E,KAAK,CAAC,gBAAgB,CAAC,UAA6C;QAClE,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,GAAI,UAAiD;YACrD,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,aAAa,CAAC;aACnB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,WAAW,CAAC,IAA+B,CAA0B,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,EAAU;QAC9C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,aAAa,CAAC;aACnB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAA0B,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,EAAU,EACV,OAA4B;QAE5B,MAAM,GAAG,GAAG,WAAW,CAAC,OAA6C,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,aAAa,CAAC;aACnB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,WAAW,CAAC,IAA+B,CAA0B,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,SAAiB;QAC3D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,aAAa,CAAC;aACnB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;aAC3B,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAA0B,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,EAAU;QACjD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,aAAa,CAAC;aACnB,MAAM,EAAE;aACR,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChB,IAAI,KAAK;YAAE,kBAAkB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,QAAgB,EAChB,OAA0B;QAE1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;aACpB,IAAI,CAAC,aAAa,CAAC;aACnB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACzC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEpB,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC;QACpC,IAAI,KAAK;YAAE,kBAAkB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAA0B,CAC9E,CAAC;QACF,MAAM,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA6B,CAAC,YAAY,CAAW;YAC5E,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC5D,CAAC;IAED,8EAA8E;IAC9E,QAAQ;IACR,8EAA8E;IAE9E,KAAK,CAAC,UAAU,CACd,IAMC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,GAAG,GAAG,WAAW,CAAC,IAA0C,CAAC,CAAC;QAEpE,+CAA+C;QAC/C,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAW,CAAC,CAAC;QAChF,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAW,CAAC,CAAC;QAC/F,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAW,CAAC,CAAC;QAE3G,sCAAsC;QACtC,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,6EAA6E;QAC7E,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,2CAA2C;QAC1E,CAAC;QAED,oFAAoF;QACpF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAChD,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC,IAA+B,CAAoB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,EAAU;QACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAA+B,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,IAA+B,CAAoB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,GAAa;QACjD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,cAAc,CAAC,GAA8B,CAAC,CAAC;YACpD,OAAO,WAAW,CAAC,GAA8B,CAAoB,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,SAAiB;QACzD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;aAC3B,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,KAAK;YAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,cAAc,CAAC,GAA8B,CAAC,CAAC;YACpD,OAAO,WAAW,CAAC,GAA8B,CAAoB,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,EAAU;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;aACjD,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChB,IAAI,KAAK;YAAE,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,8EAA8E;IAC9E,WAAW;IACX,8EAA8E;IAE9E,KAAK,CAAC,YAAY,CAChB,MAKC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACtC,MAAM,GAAG,GAAG,WAAW,CAAC,IAA0C,CAAC,CAAC;QAEpE,wDAAwD;QACxD,2FAA2F;QAC3F,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAW,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B,sEAAsE;YACtE,yEAAyE;YACzE,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAChD,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,EAAU;QAC1C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,IAA+B,CAAC,CAAC;QACvD,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,QAAgB,EAChB,aAAqB,EACrB,UAAkB;QAElB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;aACnC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;aAC7B,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,IAA+B,CAAC,CAAC;QACvD,OAAO,WAAW,CAAC,IAA+B,CAAsB,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,QAAgB,EAChB,SAAmB,EACnB,KAAa,EACb,gBAAwB,GAAG;QAE3B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAC9D,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC1C,eAAe,EAAE,QAAQ;YACzB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,aAAa;SAC9B,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,kBAAkB,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO;gBACL,MAAM,EAAE,WAAW,CAAC,GAAG,CAAsB;gBAC7C,UAAU,EAAE,GAAG,CAAC,YAAY,CAAW;aACxC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,uBAAuB;IACvB,8EAA8E;IAE9E,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAY;QACjE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;YAC/D,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,QAAQ;YACnB,IAAI;SACL,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,8EAA8E;IAC9E,QAAQ;IACR,8EAA8E;IAE9E,KAAK,CAAC,UAAU,CAAC,IAAiC;QAChD,MAAM,GAAG,GAAG,WAAW,CAAC,IAA0C,CAAC,CAAC;QACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC,IAA+B,CAAoB,CAAC;IACzE,CAAC;IAED,8EAA8E;IAC9E,gBAAgB;IAChB,8EAA8E;IAE9E,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;QAE9E,6EAA6E;QAC7E,8CAA8C;QAC9C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;YAC3D,eAAe,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAC3C,eAAe,EAAE,QAAQ;YACzB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,OAAO;YACvB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,aAAa,IAAI,CAAC;YAClC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI;SACjD,CAAC,CAAC;QAEH,IAAI,KAAK;YAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE;YACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO;gBACL,IAAI,EAAE,WAAW,CAAC,GAAG,CAAoB;gBACzC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAW;aACxC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,QAAQ;IACR,8EAA8E;IAE9E,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,MAAc,EACd,OAAe,EACf,WAAmB,EACnB,OAAe;QAEf,kEAAkE;QAClE,mEAAmE;QACnE,yEAAyE;QACzE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACzD,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,WAAW;YAC1B,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,WAAiB;QAChD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC;aAC7C,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAA2B,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,8EAA8E;IAC9E,mDAAmD;IACnD,8EAA8E;IAE9E,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,OAA0B;QAE1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;aACpB,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;aACvB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACzC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEpB,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC;QACpC,IAAI,KAAK;YAAE,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,GAA8B,CAAC,CAAC;YACpD,OAAO,WAAW,CAAC,GAA8B,CAAoB,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA6B,CAAC,YAAY,CAAW;YAC5E,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAe;QAC/D,6EAA6E;QAC7E,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAC5D,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,IAAI,CAAC;aACZ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,UAAU;YAAE,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAA+B,CAAC,IAAI,CAAW,CAAC,CAAC;QAChG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEnC,+BAA+B;QAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACzC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,EAAE;aACR,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO;YAAE,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEvD,qEAAqE;QACrE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAC3C,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,EAAE;aACR,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,SAAS;YAAE,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE3D,8BAA8B;QAC9B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAC7C,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,EAAE;aACR,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,WAAW;YAAE,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE/D,2FAA2F;QAC3F,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACjD,IAAI,CAAC,aAAa,CAAC;aACnB,MAAM,EAAE;aACR,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,eAAe;YAAE,kBAAkB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAEvE,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,KAA8G;QAE9G,6FAA6F;QAC7F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAA4B;gBACvC,WAAW,EAAE,IAAI,CAAC,UAAU;aAC7B,CAAC;YACF,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7D,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1C,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;iBAChC,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CAAC,OAAO,CAAC;iBACf,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;iBACzB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,KAAK;gBAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,qFAAqF;QACrF,+DAA+D;QAC/D,sFAAsF;QACtF,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE/B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAEjE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE;YACpE,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,QAAQ;YACzB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,OAAO;YACvB,WAAW,EAAE,KAAK;YAClB,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI;SACzC,CAAC,CAAC;QAEH,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAEtD,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE;YACvD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAW,CAAC;YAC9C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO;gBACL,IAAI,EAAE,SAA4B;gBAClC,SAAS;aACV,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA8B;QACjD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;YAC5D,eAAe,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YACnD,YAAY,EAAE,OAAO,CAAC,KAAK;YAC3B,eAAe,EAAE,OAAO,CAAC,QAAQ;YACjC,WAAW,EAAE,OAAO,CAAC,KAAK;YAC1B,cAAc,EAAE,OAAO,CAAC,OAAO;YAC/B,WAAW,EAAE,OAAO,CAAC,KAAK;YAC1B,cAAc,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,KAAK;YAAE,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAEvD,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE;YACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAyB;gBAC7C,IAAI,EAAE,WAAW,CAAC,GAAG,CAAoB;gBACzC,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAW;aACjD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,QAAgB,EAChB,OAA0B;QAE1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;aACpB,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aACxC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,uCAAuC;QAE5D,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC;QACpC,IAAI,KAAK;YAAE,kBAAkB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,IAAI,CAAC,gBAAgB,CAAC,GAA8B,CAAC,CAAC;YACtD,OAAO,WAAW,CAAC,GAA8B,CAAsB,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA6B,CAAC,YAAY,CAAW;YAC5E,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,gDAAgD;QAChD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACnE,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,WAAW,CAAC;aACnB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,aAAa;YAAE,kBAAkB,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC,CAAC;QAEjG,qCAAqC;QACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvB,IAAI,KAAK;YAAE,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAAsB,CAC1E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,QAAgB,EAChB,OAA0B;QAE1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAElC,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;aACpB,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,yBAAyB,CAAC;aACjC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC;aAC/B,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;aACnE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEpB,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC;QACpC,IAAI,KAAK;YAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,GAAG,EAAE,EAAE;YACN,uDAAuD;YACvD,MAAM,OAAO,GAAI,GAA+B,CAAC,OAAO,CAA4B,CAAC;YACrF,OAAO,WAAW,CAAC,OAAO,CAAoB,CAAC;QACjD,CAAC,CACF,CAAC;QACF,MAAM,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA6B,CAAC,OAAO,CAA6B,CAAC,YAAY,CAAW;YAClH,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,QAAgB,EAChB,SAAmB,EACnB,cAAsB;QAEtB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE;YACtE,eAAe,EAAE,QAAQ;YACzB,UAAU,EAAE,SAAS;YACrB,gBAAgB,EAAE,cAAc;SACjC,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,kBAAkB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAE5D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE;YACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAW,CAAC;YAC5C,0DAA0D;YAC1D,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO;gBACL,QAAQ;gBACR,IAAI,EAAE,WAAW,CAAC,OAAkC,CAAoB;aACzE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,QAAgB;QACxD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,gBAAgB,QAAQ,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK;YAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAAoB,CACxE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA8B;QACjD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAC9D,eAAe,EAAE,OAAO,CAAC,QAAQ;YACjC,eAAe,EAAE,OAAO,CAAC,SAAS;YAClC,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,YAAY,EAAE,OAAO,CAAC,WAAW;YACjC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI;SACjD,CAAC,CAAC;QAEH,IAAI,KAAK;YAAE,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAA8B,CAAC;QAEvD,6BAA6B;QAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAC;QAExC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAW,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACtB,EAAE,EAAE,QAAQ;oBACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,IAAI,EAAE,GAAG,CAAC,aAAa,CAAW;oBAClC,UAAU,EAAE,GAAG,CAAC,aAAa,CAAW;oBACxC,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAW;oBAC9C,UAAU,EAAG,GAAG,CAAC,YAAY,CAA6B,IAAI,EAAE;oBAChE,cAAc,EAAE,IAAI;oBACpB,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;oBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,yEAAyE;YACzE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAkB,CAAC;YAC/C,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;oBAClB,EAAE,EAAE,MAAM;oBACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,QAAQ,EAAE,GAAG,CAAC,gBAAgB,CAAW;oBACzC,QAAQ,EAAE,GAAG,CAAC,gBAAgB,CAAW;oBACzC,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAW;oBACxC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAqB;oBAC9C,MAAM,EAAG,GAAG,CAAC,aAAa,CAAY,IAAI,GAAG;oBAC7C,SAAS,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;oBAC3F,UAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAW,CAAC,CAAC,CAAC,CAAC,IAAI;oBACxF,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAG,GAAG,CAAC,iBAAiB,CAAY,IAAI,GAAG;oBACrD,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACxC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAuC;QACzD,MAAM,GAAG,GAAG,WAAW,CAAC,OAA6C,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,EAAU;QAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAe;QACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;aACvB,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;aAClB,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAI,KAAK;YAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAAuB,CAC3E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAAgB,EAChB,EAAU,EACV,OAAyB;QAEzB,MAAM,GAAG,GAAG,WAAW,CAAC,OAA6C,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,EAAU;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,EAAE;aACR,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChB,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,EAAU;QACtD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE;YACjE,WAAW,EAAE,QAAQ;YACrB,YAAY,EAAE,EAAE;SACjB,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,kBAAkB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,MAA2C;QAE3C,MAAM,GAAG,GAAG,WAAW,CAAC,MAA4C,CAAC,CAAC;QACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,iBAAiB,CAAC;aACvB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,IAA+B,CAA4B,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,MAAc,EACd,QAAuG;QAEvG,qDAAqD;QACrD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAC7D,IAAI,CAAC,iBAAiB,CAAC;aACvB,MAAM,CAAC,IAAI,CAAC;aACZ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aACrB,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aAC1C,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,SAAS;YAAE,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEnD,MAAM,QAAQ,GAAI,UAAU,CAAC,CAAC,CAA6B,CAAC,IAAI,CAAW,CAAC;QAC5E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,iBAAiB,CAAC;aACvB,MAAM,CAAC;YACN,UAAU,EAAE,QAAQ,CAAC,SAAS;YAC9B,aAAa,EAAE,QAAQ,CAAC,YAAY;YACpC,eAAe,EAAE,QAAQ,CAAC,cAAc,IAAI,IAAI;YAChD,aAAa,EAAE,QAAQ,CAAC,YAAY,IAAI,KAAK;SAC9C,CAAC;aACD,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtB,IAAI,KAAK;YAAE,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAuC;QACzD,MAAM,GAAG,GAAG,WAAW,CAAC,OAA6C,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,EAAU;QAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CACd,QAAgB,EAChB,EAAU,EACV,OAAgB,EAChB,MAAiB;QAEjB,MAAM,OAAO,GAA4B;YACvC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACnC,CAAC;QACF,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QACxD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAErD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,OAAO,CAAC;aACf,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,OAA0B;QAE1B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;aACpB,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;aAClB,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;aACvB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACzC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEpB,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC;QACpC,IAAI,KAAK;YAAE,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAAuB,CAC3E,CAAC;QACF,MAAM,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA6B,CAAC,YAAY,CAAW;YAC5E,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACzD,CAAC;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAE9E,KAAK,CAAC,iBAAiB,CAAC,GAOvB;QACC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,kBAAkB,CAAC;aACxB,MAAM,CAAC;YACN,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,UAAU,EAAE,GAAG,CAAC,SAAS;YACzB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAW;YACxC,WAAW,EAAE,GAAG,CAAC,UAAU;SAC5B,CAAC,CAAC;QACL,IAAI,KAAK;YAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,SAAiB,EACjB,OAAuC;QAEvC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM;aACpB,IAAI,CAAC,kBAAkB,CAAC;aACxB,MAAM,CAAC,4CAA4C,CAAC;aACpD,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;aAC3B,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;YAC7B,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC;QACpC,IAAI,KAAK;YAAE,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAE3D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,IAAI,EAAE,GAAG,CAAC,IAAc;YACxB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAiB,CAAW;YAClD,UAAU,EAAE,GAAG,CAAC,WAAqB;YACrC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,UAAoB,EACpB,YAAoB;QAEpB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACpC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,kBAAkB,CAAC;aACxB,MAAM,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;aACvC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxB,IAAI,KAAK;YAAE,kBAAkB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,8EAA8E;IAC9E,WAAW;IACX,8EAA8E;IAE9E,KAAK,CAAC,aAAa,CACjB,OAA+E;QAE/E,yFAAyF;QACzF,oEAAoE;QACpE,yDAAyD;QACzD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,IAA0C,CAAC,CAAC;QACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE;aACR,MAAM,EAAE,CAAC;QACZ,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,EAAU;QAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACZ,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK;YAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,WAAW,CAAC,IAA+B,CAAuB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7B,IAAI,KAAK;YAAE,kBAAkB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAAuB,CAC3E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,KAAa;QACtD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;aAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,IAAI,KAAK;YAAE,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACrB,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAA8B,CAAuB,CAC3E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,EAAU;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,EAAE;aACR,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChB,IAAI,KAAK;YAAE,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;CACF"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
package/src/storage.ts
CHANGED
|
@@ -82,6 +82,27 @@ export function toCamelCase(obj: Record<string, unknown>): Record<string, unknow
|
|
|
82
82
|
return result;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// Optional field-level encryption config
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
|
|
89
|
+
export interface EncryptionConfig {
|
|
90
|
+
/**
|
|
91
|
+
* Encrypt a plaintext string. Called before inserting sensitive text fields.
|
|
92
|
+
* Must return a string in format: `iv:authTag:ciphertext` (all base64).
|
|
93
|
+
* If not provided, fields are stored as plaintext.
|
|
94
|
+
*/
|
|
95
|
+
encryptField: (plaintext: string) => string;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Decrypt an encrypted string. Called after fetching sensitive text fields.
|
|
99
|
+
* Input format: `iv:authTag:ciphertext` (all base64).
|
|
100
|
+
* Must handle gracefully if the input is NOT encrypted (plaintext fallback).
|
|
101
|
+
* If not provided, fields are returned as-is.
|
|
102
|
+
*/
|
|
103
|
+
decryptField: (ciphertext: string) => string;
|
|
104
|
+
}
|
|
105
|
+
|
|
85
106
|
// =============================================================================
|
|
86
107
|
// Error helpers
|
|
87
108
|
// =============================================================================
|
|
@@ -95,7 +116,63 @@ function throwSupabaseError(method: string, error: { message: string } | null):
|
|
|
95
116
|
// =============================================================================
|
|
96
117
|
|
|
97
118
|
export class SupabaseStorageAdapter implements StorageAdapter {
|
|
98
|
-
|
|
119
|
+
private encryption?: EncryptionConfig;
|
|
120
|
+
|
|
121
|
+
constructor(
|
|
122
|
+
private client: SupabaseClient,
|
|
123
|
+
encryption?: EncryptionConfig,
|
|
124
|
+
) {
|
|
125
|
+
this.encryption = encryption;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Encrypt a single field. Returns value as-is if no encryption configured or value is null.
|
|
129
|
+
private enc(value: string | null | undefined): string | null | undefined {
|
|
130
|
+
if (value == null || value === '') return value;
|
|
131
|
+
if (!this.encryption) return value;
|
|
132
|
+
return this.encryption.encryptField(value);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Decrypt a single field. Returns value as-is if:
|
|
136
|
+
// - no encryption configured
|
|
137
|
+
// - value is null/empty
|
|
138
|
+
// - value does not match encrypted format (handles old plaintext rows gracefully)
|
|
139
|
+
private dec(value: string | null | undefined): string | null | undefined {
|
|
140
|
+
if (value == null || value === '') return value;
|
|
141
|
+
if (!this.encryption) return value;
|
|
142
|
+
// Encrypted format is always: iv:authTag:ciphertext (exactly 3 colon-separated parts)
|
|
143
|
+
// If the value does not match this pattern it is plaintext — return as-is
|
|
144
|
+
const parts = (value as string).split(':');
|
|
145
|
+
if (parts.length !== 3) return value;
|
|
146
|
+
try {
|
|
147
|
+
return this.encryption.decryptField(value as string);
|
|
148
|
+
} catch {
|
|
149
|
+
return value; // decryption failed — return as-is, never crash
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Decrypt all sensitive text fields on a facts row.
|
|
154
|
+
// Call this on every row returned from any facts query.
|
|
155
|
+
private decryptFactRow(row: Record<string, unknown>): Record<string, unknown> {
|
|
156
|
+
if (row['content'] != null) row['content'] = this.dec(row['content'] as string);
|
|
157
|
+
if (row['source_chunk'] != null) row['source_chunk'] = this.dec(row['source_chunk'] as string);
|
|
158
|
+
if (row['original_content'] != null) row['original_content'] = this.dec(row['original_content'] as string);
|
|
159
|
+
return row;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Decrypt all sensitive text fields on an entities row.
|
|
163
|
+
// NOTE: canonical_name is intentionally NOT decrypted — it stays plaintext for DB lookups.
|
|
164
|
+
private decryptEntityRow(row: Record<string, unknown>): Record<string, unknown> {
|
|
165
|
+
if (row['name'] != null) row['name'] = this.dec(row['name'] as string);
|
|
166
|
+
if (row['properties'] != null) {
|
|
167
|
+
const decrypted = this.dec(row['properties'] as string);
|
|
168
|
+
try {
|
|
169
|
+
row['properties'] = decrypted ? JSON.parse(decrypted as string) : row['properties'];
|
|
170
|
+
} catch {
|
|
171
|
+
row['properties'] = decrypted; // not valid JSON, keep as string
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return row;
|
|
175
|
+
}
|
|
99
176
|
|
|
100
177
|
async ping(): Promise<boolean> {
|
|
101
178
|
const { error } = await this.client.from('tenants').select('id').limit(1);
|
|
@@ -324,6 +401,11 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
324
401
|
const { embedding, ...rest } = fact;
|
|
325
402
|
const row = toSnakeCase(rest as unknown as Record<string, unknown>);
|
|
326
403
|
|
|
404
|
+
// Encrypt sensitive text fields before storing
|
|
405
|
+
if (row['content'] != null) row['content'] = this.enc(row['content'] as string);
|
|
406
|
+
if (row['source_chunk'] != null) row['source_chunk'] = this.enc(row['source_chunk'] as string);
|
|
407
|
+
if (row['original_content'] != null) row['original_content'] = this.enc(row['original_content'] as string);
|
|
408
|
+
|
|
327
409
|
// Version defaults to 1 for new facts
|
|
328
410
|
if (!('version' in row)) {
|
|
329
411
|
row['version'] = 1;
|
|
@@ -357,6 +439,7 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
357
439
|
.maybeSingle();
|
|
358
440
|
if (error) throwSupabaseError('getFact', error);
|
|
359
441
|
if (!data) return null;
|
|
442
|
+
this.decryptFactRow(data as Record<string, unknown>);
|
|
360
443
|
return toCamelCase(data as Record<string, unknown>) as unknown as Fact;
|
|
361
444
|
}
|
|
362
445
|
|
|
@@ -368,9 +451,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
368
451
|
.eq('tenant_id', tenantId)
|
|
369
452
|
.in('id', ids);
|
|
370
453
|
if (error) throwSupabaseError('getFactsByIds', error);
|
|
371
|
-
return (data ?? []).map(
|
|
372
|
-
(row
|
|
373
|
-
|
|
454
|
+
return (data ?? []).map((row) => {
|
|
455
|
+
this.decryptFactRow(row as Record<string, unknown>);
|
|
456
|
+
return toCamelCase(row as Record<string, unknown>) as unknown as Fact;
|
|
457
|
+
});
|
|
374
458
|
}
|
|
375
459
|
|
|
376
460
|
async getFactsByLineage(tenantId: string, lineageId: string): Promise<Fact[]> {
|
|
@@ -381,9 +465,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
381
465
|
.eq('lineage_id', lineageId)
|
|
382
466
|
.order('version', { ascending: true });
|
|
383
467
|
if (error) throwSupabaseError('getFactsByLineage', error);
|
|
384
|
-
return (data ?? []).map(
|
|
385
|
-
(row
|
|
386
|
-
|
|
468
|
+
return (data ?? []).map((row) => {
|
|
469
|
+
this.decryptFactRow(row as Record<string, unknown>);
|
|
470
|
+
return toCamelCase(row as Record<string, unknown>) as unknown as Fact;
|
|
471
|
+
});
|
|
387
472
|
}
|
|
388
473
|
|
|
389
474
|
async invalidateFact(tenantId: string, id: string): Promise<void> {
|
|
@@ -410,6 +495,15 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
410
495
|
const { embedding, ...rest } = entity;
|
|
411
496
|
const row = toSnakeCase(rest as unknown as Record<string, unknown>);
|
|
412
497
|
|
|
498
|
+
// Encrypt display name and properties before persisting
|
|
499
|
+
// NOTE: canonical_name is intentionally NOT encrypted — it is used for DB equality lookups
|
|
500
|
+
if (row['name'] != null) row['name'] = this.enc(row['name'] as string);
|
|
501
|
+
if (row['properties'] != null) {
|
|
502
|
+
// Always JSON.stringify regardless of whether it is already a string.
|
|
503
|
+
// This ensures consistent round-trip: stringify on write, parse on read.
|
|
504
|
+
row['properties'] = this.enc(JSON.stringify(row['properties']));
|
|
505
|
+
}
|
|
506
|
+
|
|
413
507
|
if (embedding !== undefined) {
|
|
414
508
|
row['embedding'] = `[${embedding.join(',')}]`;
|
|
415
509
|
}
|
|
@@ -432,6 +526,7 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
432
526
|
.maybeSingle();
|
|
433
527
|
if (error) throwSupabaseError('getEntity', error);
|
|
434
528
|
if (!data) return null;
|
|
529
|
+
this.decryptEntityRow(data as Record<string, unknown>);
|
|
435
530
|
return toCamelCase(data as Record<string, unknown>) as unknown as Entity;
|
|
436
531
|
}
|
|
437
532
|
|
|
@@ -449,6 +544,7 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
449
544
|
.maybeSingle();
|
|
450
545
|
if (error) throwSupabaseError('findEntityByCanonicalName', error);
|
|
451
546
|
if (!data) return null;
|
|
547
|
+
this.decryptEntityRow(data as Record<string, unknown>);
|
|
452
548
|
return toCamelCase(data as Record<string, unknown>) as unknown as Entity;
|
|
453
549
|
}
|
|
454
550
|
|
|
@@ -465,10 +561,13 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
465
561
|
min_similarity: minSimilarity,
|
|
466
562
|
});
|
|
467
563
|
if (error) throwSupabaseError('findEntitiesByEmbedding', error);
|
|
468
|
-
return (data ?? []).map((row: Record<string, unknown>) =>
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
564
|
+
return (data ?? []).map((row: Record<string, unknown>) => {
|
|
565
|
+
this.decryptEntityRow(row);
|
|
566
|
+
return {
|
|
567
|
+
entity: toCamelCase(row) as unknown as Entity,
|
|
568
|
+
similarity: row['similarity'] as number,
|
|
569
|
+
};
|
|
570
|
+
});
|
|
472
571
|
}
|
|
473
572
|
|
|
474
573
|
// ---------------------------------------------------------------------------
|
|
@@ -520,10 +619,13 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
520
619
|
|
|
521
620
|
if (error) throwSupabaseError('vectorSearch', error);
|
|
522
621
|
|
|
523
|
-
return (data ?? []).map((row: Record<string, unknown>) =>
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
622
|
+
return (data ?? []).map((row: Record<string, unknown>) => {
|
|
623
|
+
this.decryptFactRow(row);
|
|
624
|
+
return {
|
|
625
|
+
fact: toCamelCase(row) as unknown as Fact,
|
|
626
|
+
similarity: row['similarity'] as number,
|
|
627
|
+
};
|
|
628
|
+
});
|
|
527
629
|
}
|
|
528
630
|
|
|
529
631
|
// ---------------------------------------------------------------------------
|
|
@@ -598,9 +700,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
598
700
|
const rows = data ?? [];
|
|
599
701
|
const hasMore = rows.length > limit;
|
|
600
702
|
const page = hasMore ? rows.slice(0, limit) : rows;
|
|
601
|
-
const facts = page.map(
|
|
602
|
-
(row
|
|
603
|
-
|
|
703
|
+
const facts = page.map((row) => {
|
|
704
|
+
this.decryptFactRow(row as Record<string, unknown>);
|
|
705
|
+
return toCamelCase(row as Record<string, unknown>) as unknown as Fact;
|
|
706
|
+
});
|
|
604
707
|
const nextCursor = hasMore && page.length > 0
|
|
605
708
|
? (page[page.length - 1] as Record<string, unknown>)['created_at'] as string
|
|
606
709
|
: null;
|
|
@@ -685,6 +788,11 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
685
788
|
}
|
|
686
789
|
|
|
687
790
|
async keywordSearch(options: KeywordSearchOptions): Promise<KeywordSearchResult[]> {
|
|
791
|
+
// Keyword search uses PostgreSQL to_tsquery which cannot match encrypted ciphertext.
|
|
792
|
+
// When encryption is configured, skip keyword search entirely.
|
|
793
|
+
// Vector search (vectorSearch / compoundSearch) still works correctly via embeddings.
|
|
794
|
+
if (this.encryption) return [];
|
|
795
|
+
|
|
688
796
|
const { query, tenantId, scope, scopeId, limit, asOf } = options;
|
|
689
797
|
|
|
690
798
|
const { data, error } = await this.client.rpc('keyword_search_facts', {
|
|
@@ -721,11 +829,14 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
721
829
|
|
|
722
830
|
if (error) throwSupabaseError('compoundSearch', error);
|
|
723
831
|
|
|
724
|
-
return (data ?? []).map((row: Record<string, unknown>) =>
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
832
|
+
return (data ?? []).map((row: Record<string, unknown>) => {
|
|
833
|
+
this.decryptFactRow(row);
|
|
834
|
+
return {
|
|
835
|
+
source: row['source'] as 'vector' | 'keyword',
|
|
836
|
+
fact: toCamelCase(row) as unknown as Fact,
|
|
837
|
+
relevanceScore: row['relevance_score'] as number,
|
|
838
|
+
};
|
|
839
|
+
});
|
|
729
840
|
}
|
|
730
841
|
|
|
731
842
|
async getEntitiesForTenant(
|
|
@@ -750,9 +861,10 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
750
861
|
const rows = data ?? [];
|
|
751
862
|
const hasMore = rows.length > limit;
|
|
752
863
|
const page = hasMore ? rows.slice(0, limit) : rows;
|
|
753
|
-
const entities = page.map(
|
|
754
|
-
(row
|
|
755
|
-
|
|
864
|
+
const entities = page.map((row) => {
|
|
865
|
+
this.decryptEntityRow(row as Record<string, unknown>);
|
|
866
|
+
return toCamelCase(row as Record<string, unknown>) as unknown as Entity;
|
|
867
|
+
});
|
|
756
868
|
const nextCursor = hasMore && page.length > 0
|
|
757
869
|
? (page[page.length - 1] as Record<string, unknown>)['created_at'] as string
|
|
758
870
|
: null;
|
|
@@ -1140,7 +1252,7 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
1140
1252
|
session_id: msg.sessionId,
|
|
1141
1253
|
tenant_id: msg.tenantId,
|
|
1142
1254
|
role: msg.role,
|
|
1143
|
-
content: msg.content,
|
|
1255
|
+
content: this.enc(msg.content) as string,
|
|
1144
1256
|
turn_number: msg.turnNumber,
|
|
1145
1257
|
});
|
|
1146
1258
|
if (error) throwSupabaseError('addSessionMessage', error);
|
|
@@ -1165,12 +1277,12 @@ export class SupabaseStorageAdapter implements StorageAdapter {
|
|
|
1165
1277
|
const { data, error } = await query;
|
|
1166
1278
|
if (error) throwSupabaseError('getSessionMessages', error);
|
|
1167
1279
|
|
|
1168
|
-
return (data ?? []).map(row => ({
|
|
1169
|
-
id: row.id,
|
|
1170
|
-
role: row.role,
|
|
1171
|
-
content: row.content,
|
|
1172
|
-
turnNumber: row.turn_number,
|
|
1173
|
-
createdAt: new Date(row.created_at),
|
|
1280
|
+
return (data ?? []).map((row) => ({
|
|
1281
|
+
id: row.id as string,
|
|
1282
|
+
role: row.role as string,
|
|
1283
|
+
content: this.dec(row.content as string) as string,
|
|
1284
|
+
turnNumber: row.turn_number as number,
|
|
1285
|
+
createdAt: new Date(row.created_at as string),
|
|
1174
1286
|
}));
|
|
1175
1287
|
}
|
|
1176
1288
|
|