@rubytech/create-maxy-code 0.1.138 → 0.1.142

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 (108) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/config/brand.json +1 -1
  3. package/payload/platform/lib/obsidian-parser/dist/index.d.ts +98 -0
  4. package/payload/platform/lib/obsidian-parser/dist/index.d.ts.map +1 -0
  5. package/payload/platform/lib/obsidian-parser/dist/index.js +480 -0
  6. package/payload/platform/lib/obsidian-parser/dist/index.js.map +1 -0
  7. package/payload/platform/lib/obsidian-parser/src/index.ts +572 -0
  8. package/payload/platform/lib/obsidian-parser/tsconfig.json +8 -0
  9. package/payload/platform/neo4j/schema.cypher +48 -67
  10. package/payload/platform/package.json +2 -2
  11. package/payload/platform/plugins/.claude-plugin/marketplace.json +15 -0
  12. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.d.ts.map +1 -1
  13. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js +14 -8
  14. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js.map +1 -1
  15. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts +1 -1
  16. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts.map +1 -1
  17. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js +10 -7
  18. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js.map +1 -1
  19. package/payload/platform/plugins/docs/references/internals.md +1 -1
  20. package/payload/platform/plugins/docs/references/neo4j.md +3 -3
  21. package/payload/platform/plugins/docs/references/plugins-guide.md +3 -0
  22. package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
  23. package/payload/platform/plugins/email/PLUGIN.md +3 -7
  24. package/payload/platform/plugins/email/mcp/dist/index.js +7 -46
  25. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  26. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
  27. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +4 -15
  28. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
  29. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +51 -43
  30. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -1
  31. package/payload/platform/plugins/email/mcp/dist/lib/graph.js +223 -229
  32. package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -1
  33. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +7 -4
  34. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
  35. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts +14 -4
  36. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts.map +1 -1
  37. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js +69 -84
  38. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js.map +1 -1
  39. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -1
  40. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +49 -64
  41. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -1
  42. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -1
  43. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +1 -2
  44. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
  45. package/payload/platform/plugins/memory/PLUGIN.md +3 -0
  46. package/payload/platform/plugins/memory/mcp/dist/index.js +89 -2
  47. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  48. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts +1 -0
  49. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts.map +1 -1
  50. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js +3 -0
  51. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js.map +1 -1
  52. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts +1 -1
  53. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts.map +1 -1
  54. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +1 -0
  55. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -1
  56. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts +3 -0
  57. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts.map +1 -0
  58. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js +101 -0
  59. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js.map +1 -0
  60. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -1
  61. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +7 -4
  62. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -1
  63. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts +122 -1
  64. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
  65. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +580 -0
  66. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  67. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts +127 -0
  68. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts.map +1 -0
  69. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js +477 -0
  70. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js.map +1 -0
  71. package/payload/platform/plugins/memory/references/schema-base.md +4 -4
  72. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +2 -1
  73. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +1 -0
  74. package/payload/platform/plugins/notion-import/.claude-plugin/plugin.json +8 -0
  75. package/payload/platform/plugins/notion-import/PLUGIN.md +27 -0
  76. package/payload/platform/plugins/notion-import/skills/notion-import/SKILL.md +114 -0
  77. package/payload/platform/plugins/notion-import/skills/notion-import/references/attachments.md +55 -0
  78. package/payload/platform/plugins/notion-import/skills/notion-import/references/databases.md +83 -0
  79. package/payload/platform/plugins/notion-import/skills/notion-import/references/page-tree.md +61 -0
  80. package/payload/platform/plugins/notion-import/skills/notion-import/references/workspace-export.md +41 -0
  81. package/payload/platform/plugins/obsidian-import/.claude-plugin/plugin.json +8 -0
  82. package/payload/platform/plugins/obsidian-import/PLUGIN.md +39 -0
  83. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/SKILL.md +92 -0
  84. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/attachments.md +80 -0
  85. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/daily-notes.md +31 -0
  86. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/vault-structure.md +46 -0
  87. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/wikilinks.md +70 -0
  88. package/payload/platform/plugins/scheduling/PLUGIN.md +18 -0
  89. package/payload/platform/plugins/scheduling/mcp/dist/index.js +93 -0
  90. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  91. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts +80 -0
  92. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts.map +1 -0
  93. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js +395 -0
  94. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js.map +1 -0
  95. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts +16 -0
  96. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts.map +1 -1
  97. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js +111 -2
  98. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js.map +1 -1
  99. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts +20 -0
  100. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts.map +1 -0
  101. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js +63 -0
  102. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js.map +1 -0
  103. package/payload/platform/plugins/x-import/.claude-plugin/plugin.json +8 -0
  104. package/payload/platform/plugins/x-import/PLUGIN.md +33 -0
  105. package/payload/platform/plugins/x-import/references/archive-shape.md +124 -0
  106. package/payload/platform/plugins/x-import/references/transcript-shape.md +121 -0
  107. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +123 -0
  108. package/payload/platform/templates/specialists/agents/database-operator.md +18 -2
@@ -23,6 +23,10 @@ import { withWriteEvent } from "../lib/log-ingest.js";
23
23
  const BATCH_SIZE = 500;
24
24
  const HANDLERS = {
25
25
  "linkedin-connections": linkedinConnectionsHandler(),
26
+ "obsidian-vault": obsidianVaultHandler(),
27
+ "notion-pages": notionPagesHandler(),
28
+ "notion-database-rows": notionDatabaseRowsHandler(),
29
+ "notion-relations-pass-2": notionRelationsPass2Handler(),
26
30
  };
27
31
  // ---------------------------------------------------------------------------
28
32
  // Entry point
@@ -215,6 +219,582 @@ function linkedinConnectionsHandler() {
215
219
  },
216
220
  };
217
221
  }
222
+ // ---------------------------------------------------------------------------
223
+ // obsidian-vault handler — Obsidian vault pages, wikilinks, tags, attachments
224
+ // ---------------------------------------------------------------------------
225
+ //
226
+ // Page MERGE natural key: (accountId, obsidianPath)
227
+ // Tag MERGE natural key: (accountId, category='obsidian-tag', name)
228
+ // Attachment MERGE key: (accountId, attachmentPath)
229
+ //
230
+ // Wikilinks split into three edge writes by target kind:
231
+ // page → (:KnowledgeDocument)-[:WIKILINKS_TO]->(:KnowledgeDocument)
232
+ // entity → (:KnowledgeDocument)-[:MENTIONS]->(node by elementId)
233
+ // stub → (:KnowledgeDocument)-[:MENTIONS]->(:Concept) with stub creation
234
+ //
235
+ // Owner anchor: each page MERGEd gets (:owner)-[:HAS_NOTE]->(page) so the
236
+ // page is reachable via the canonical hierarchy chain. Owner is either an
237
+ // :AdminUser (operator's own vault) or a :Person (external vault ingested
238
+ // for reference) — same shape as linkedin-import.
239
+ export const OBSIDIAN_PAGE_CYPHER = `
240
+ MATCH (owner) WHERE elementId(owner) = $ownerNodeId
241
+ WITH owner, $rows AS rows
242
+ UNWIND rows AS row
243
+ MERGE (k:KnowledgeDocument {accountId: $accountId, obsidianPath: row.obsidianPath})
244
+ ON CREATE SET
245
+ k.knowledgeDocId = randomUUID(),
246
+ k.source = 'obsidian',
247
+ k.createdByAgent = 'obsidian-import',
248
+ k.createdBySource = 'obsidian-import',
249
+ k.createdBySession = $sessionId,
250
+ k.createdAt = datetime(),
251
+ k.scope = 'admin'
252
+ SET
253
+ k.title = row.title,
254
+ k.contentHash = row.contentHash,
255
+ k.text = row.body,
256
+ k.aliases = row.aliases,
257
+ k.tags = row.tags,
258
+ k.obsidianMtime = datetime({ epochMillis: toInteger(row.mtimeMs) }),
259
+ k.updatedAt = datetime()
260
+ FOREACH (_ IN CASE WHEN row.noteDate IS NOT NULL THEN [1] ELSE [] END |
261
+ SET k.noteDate = date(row.noteDate)
262
+ )
263
+ MERGE (owner)-[h:HAS_NOTE]->(k)
264
+ ON CREATE SET
265
+ h.source = 'obsidian',
266
+ h.createdAt = datetime()
267
+ RETURN count(*) AS processed
268
+ `;
269
+ export const OBSIDIAN_TAG_CYPHER = `
270
+ UNWIND $rows AS row
271
+ MATCH (k:KnowledgeDocument {accountId: $accountId, obsidianPath: row.obsidianPath})
272
+ UNWIND row.tags AS tagName
273
+ WITH k, tagName WHERE tagName IS NOT NULL AND tagName <> ''
274
+ MERGE (t:DefinedTerm {accountId: $accountId, category: 'obsidian-tag', name: tagName})
275
+ ON CREATE SET
276
+ t.source = 'obsidian',
277
+ t.createdByAgent = 'obsidian-import',
278
+ t.createdBySource = 'obsidian-import',
279
+ t.createdBySession = $sessionId,
280
+ t.createdAt = datetime(),
281
+ t.scope = 'admin'
282
+ MERGE (k)-[r:TAGGED_WITH]->(t)
283
+ ON CREATE SET
284
+ r.source = 'obsidian',
285
+ r.createdAt = datetime()
286
+ RETURN count(*) AS processed
287
+ `;
288
+ export const OBSIDIAN_WIKILINK_PAGE_CYPHER = `
289
+ UNWIND $pageLinks AS wl
290
+ MATCH (src:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.fromPath})
291
+ MATCH (dst:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.toPath})
292
+ MERGE (src)-[r:WIKILINKS_TO]->(dst)
293
+ ON CREATE SET
294
+ r.linkText = wl.linkText,
295
+ r.alias = wl.alias,
296
+ r.anchor = wl.anchor,
297
+ r.source = 'obsidian',
298
+ r.createdAt = datetime()
299
+ RETURN count(*) AS processed
300
+ `;
301
+ export const OBSIDIAN_WIKILINK_ENTITY_CYPHER = `
302
+ UNWIND $entityLinks AS wl
303
+ MATCH (src:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.fromPath})
304
+ MATCH (dst) WHERE elementId(dst) = wl.toNodeId AND dst.accountId = $accountId
305
+ MERGE (src)-[r:MENTIONS]->(dst)
306
+ ON CREATE SET
307
+ r.linkText = wl.linkText,
308
+ r.alias = wl.alias,
309
+ r.source = 'obsidian',
310
+ r.createdAt = datetime()
311
+ RETURN count(*) AS processed
312
+ `;
313
+ export const OBSIDIAN_WIKILINK_STUB_CYPHER = `
314
+ UNWIND $stubLinks AS wl
315
+ MATCH (src:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.fromPath})
316
+ MERGE (c:Concept {accountId: $accountId, name: wl.stubName, source: 'obsidian-stub'})
317
+ ON CREATE SET
318
+ c.createdByAgent = 'obsidian-import',
319
+ c.createdBySource = 'obsidian-import',
320
+ c.createdBySession = $sessionId,
321
+ c.createdAt = datetime(),
322
+ c.scope = 'admin'
323
+ MERGE (src)-[r:MENTIONS]->(c)
324
+ ON CREATE SET
325
+ r.linkText = wl.linkText,
326
+ r.alias = wl.alias,
327
+ r.source = 'obsidian',
328
+ r.createdAt = datetime()
329
+ RETURN count(*) AS processed
330
+ `;
331
+ export const OBSIDIAN_ATTACHMENT_CYPHER = `
332
+ UNWIND $rows AS row
333
+ WITH row WHERE size(row.attachments) > 0
334
+ MATCH (k:KnowledgeDocument {accountId: $accountId, obsidianPath: row.obsidianPath})
335
+ UNWIND row.attachments AS att
336
+ MERGE (d:DigitalDocument {accountId: $accountId, attachmentPath: att.archivePath})
337
+ ON CREATE SET
338
+ d.digitalDocumentId = randomUUID(),
339
+ d.source = 'obsidian',
340
+ d.encodingFormat = att.encodingFormat,
341
+ d.alt = att.alt,
342
+ d.createdByAgent = 'obsidian-import',
343
+ d.createdBySource = 'obsidian-import',
344
+ d.createdBySession = $sessionId,
345
+ d.createdAt = datetime(),
346
+ d.scope = 'admin'
347
+ MERGE (d)-[e:EMBEDDED_IN]->(k)
348
+ ON CREATE SET
349
+ e.source = 'obsidian',
350
+ e.createdAt = datetime()
351
+ RETURN count(*) AS processed
352
+ `;
353
+ function obsidianVaultHandler() {
354
+ return {
355
+ async verifyArchive(session, params) {
356
+ const { ownerNodeId, accountId } = params;
357
+ const result = await session.run(`MATCH (n) WHERE elementId(n) = $ownerNodeId
358
+ RETURN labels(n) AS labels, n.accountId AS accountId LIMIT 1`, { ownerNodeId });
359
+ if (result.records.length === 0) {
360
+ throw new Error(`ownerNodeId ${ownerNodeId} not found. Re-run the archive-owner confirmation flow before invoking memory-archive-write.`);
361
+ }
362
+ const labels = result.records[0].get("labels") ?? [];
363
+ const ownerAccountId = result.records[0].get("accountId");
364
+ const isAdminUser = labels.includes("AdminUser");
365
+ const isPerson = labels.includes("Person");
366
+ if (!isAdminUser && !isPerson) {
367
+ throw new Error(`ownerNodeId ${ownerNodeId} has labels [${labels.join(", ")}]; expected :AdminUser or :Person.`);
368
+ }
369
+ if (ownerAccountId && ownerAccountId !== accountId) {
370
+ throw new Error(`ownerNodeId ${ownerNodeId} belongs to account ${ownerAccountId}, not ${accountId}. Cross-account vault ingest refused.`);
371
+ }
372
+ },
373
+ async writeBatch(session, ctx) {
374
+ const { params, batchRows, sessionId } = ctx;
375
+ const rows = batchRows.map(normaliseObsidianRow);
376
+ const pageLinks = [];
377
+ const entityLinks = [];
378
+ const stubLinks = [];
379
+ for (const row of rows) {
380
+ for (const wl of row.wikilinks ?? []) {
381
+ if (wl.target.kind === "page") {
382
+ pageLinks.push({
383
+ fromPath: row.obsidianPath,
384
+ toPath: wl.target.obsidianPath,
385
+ linkText: wl.linkText,
386
+ alias: wl.alias,
387
+ anchor: wl.anchor,
388
+ });
389
+ }
390
+ else if (wl.target.kind === "entity") {
391
+ entityLinks.push({
392
+ fromPath: row.obsidianPath,
393
+ toNodeId: wl.target.nodeId,
394
+ linkText: wl.linkText,
395
+ alias: wl.alias,
396
+ });
397
+ }
398
+ else {
399
+ stubLinks.push({
400
+ fromPath: row.obsidianPath,
401
+ stubName: wl.target.name,
402
+ linkText: wl.linkText,
403
+ alias: wl.alias,
404
+ });
405
+ }
406
+ }
407
+ }
408
+ const queryParams = {
409
+ ownerNodeId: params.ownerNodeId,
410
+ accountId: params.accountId,
411
+ sessionId,
412
+ rows,
413
+ pageLinks,
414
+ entityLinks,
415
+ stubLinks,
416
+ };
417
+ return await session.executeWrite(async (tx) => {
418
+ const pageRes = await tx.run(OBSIDIAN_PAGE_CYPHER, queryParams);
419
+ const pageCounters = pageRes.summary.counters.updates();
420
+ const tagRes = await tx.run(OBSIDIAN_TAG_CYPHER, queryParams);
421
+ const tagCounters = tagRes.summary.counters.updates();
422
+ const attRes = await tx.run(OBSIDIAN_ATTACHMENT_CYPHER, queryParams);
423
+ const attCounters = attRes.summary.counters.updates();
424
+ let wikilinkCountersCreated = 0;
425
+ if (pageLinks.length > 0) {
426
+ const r = await tx.run(OBSIDIAN_WIKILINK_PAGE_CYPHER, queryParams);
427
+ wikilinkCountersCreated += r.summary.counters.updates().relationshipsCreated;
428
+ }
429
+ if (entityLinks.length > 0) {
430
+ const r = await tx.run(OBSIDIAN_WIKILINK_ENTITY_CYPHER, queryParams);
431
+ wikilinkCountersCreated += r.summary.counters.updates().relationshipsCreated;
432
+ }
433
+ if (stubLinks.length > 0) {
434
+ const r = await tx.run(OBSIDIAN_WIKILINK_STUB_CYPHER, queryParams);
435
+ wikilinkCountersCreated += r.summary.counters.updates().relationshipsCreated;
436
+ }
437
+ return {
438
+ createdPages: pageCounters.nodesCreated,
439
+ mergedPages: rows.length - pageCounters.nodesCreated,
440
+ createdTags: tagCounters.nodesCreated,
441
+ createdTagEdges: tagCounters.relationshipsCreated,
442
+ createdAttachments: attCounters.nodesCreated,
443
+ createdAttachmentEdges: attCounters.relationshipsCreated,
444
+ createdWikilinkEdges: wikilinkCountersCreated,
445
+ pageLinksRequested: pageLinks.length,
446
+ entityLinksRequested: entityLinks.length,
447
+ stubLinksRequested: stubLinks.length,
448
+ };
449
+ });
450
+ },
451
+ };
452
+ }
453
+ function normaliseObsidianRow(row) {
454
+ if (!row.obsidianPath || !row.obsidianPath.trim()) {
455
+ throw new Error("obsidian-vault row missing obsidianPath (natural key).");
456
+ }
457
+ if (row.obsidianPath.split("/").includes("..")) {
458
+ throw new Error(`obsidian-vault row obsidianPath="${row.obsidianPath}" contains path-traversal segment.`);
459
+ }
460
+ if (!row.contentHash || !/^[0-9a-f]{64}$/i.test(row.contentHash)) {
461
+ throw new Error(`obsidian-vault row contentHash for ${row.obsidianPath} is not a hex SHA-256.`);
462
+ }
463
+ if (row.noteDate && !/^\d{4}-\d{2}-\d{2}$/.test(row.noteDate)) {
464
+ throw new Error(`obsidian-vault row noteDate="${row.noteDate}" is not ISO 8601 (YYYY-MM-DD).`);
465
+ }
466
+ return {
467
+ obsidianPath: row.obsidianPath.trim(),
468
+ title: (row.title ?? "").trim(),
469
+ aliases: Array.isArray(row.aliases) ? row.aliases : [],
470
+ tags: Array.isArray(row.tags) ? row.tags : [],
471
+ body: row.body ?? "",
472
+ contentHash: row.contentHash.toLowerCase(),
473
+ noteDate: row.noteDate ?? null,
474
+ mtimeMs: typeof row.mtimeMs === "number" ? row.mtimeMs : 0,
475
+ wikilinks: Array.isArray(row.wikilinks) ? row.wikilinks : [],
476
+ attachments: Array.isArray(row.attachments) ? row.attachments : [],
477
+ };
478
+ }
479
+ // ---------------------------------------------------------------------------
480
+ // notion-pages / notion-database-rows / notion-relations-pass-2 handlers
481
+ // ---------------------------------------------------------------------------
482
+ //
483
+ // Notion's export shape (page tree + DB schemas + typed relations + mentions)
484
+ // does not fit the linkedin flat-row model, so the import skill splits the
485
+ // write into three archiveType calls:
486
+ //
487
+ // 1. notion-pages — MERGE every :KnowledgeDocument page,
488
+ // stamp provenance, attach workspace-root
489
+ // HAS_SECTION at insert time, optional
490
+ // AUTHORED edge. Page-to-page HAS_SECTION
491
+ // is deferred to pass-2 so cross-batch
492
+ // forward references resolve cleanly.
493
+ // 2. notion-database-rows — MERGE typed-label nodes (Person, Org,
494
+ // Project, Task, Event, KnowledgeDocument
495
+ // fallback) and the
496
+ // (:notion-database)-[:HAS_SECTION]->(row)
497
+ // edge. Per-call `label` decides which
498
+ // Cypher template runs.
499
+ // 3. notion-relations-pass-2 — MERGE all deferred relations
500
+ // (page-to-page HAS_SECTION, MENTIONS,
501
+ // WORKS_FOR, OWNS, ASSIGNED_TO, PART_OF,
502
+ // ATTENDED, AUTHORED) once every node
503
+ // exists. Source/target located by
504
+ // (accountId, notionId); missing endpoints
505
+ // count as skippedUnknownTarget.
506
+ const NOTION_RELATION_EDGE_TYPES = new Set([
507
+ "MENTIONS",
508
+ "WORKS_FOR",
509
+ "OWNS",
510
+ "ASSIGNED_TO",
511
+ "PART_OF",
512
+ "ATTENDED",
513
+ "HAS_SECTION",
514
+ "AUTHORED",
515
+ ]);
516
+ const NOTION_ROW_LABELS = new Set([
517
+ "Person",
518
+ "Organization",
519
+ "Project",
520
+ "Task",
521
+ "Event",
522
+ "KnowledgeDocument",
523
+ ]);
524
+ const NOTION_ID_RE = /^[0-9a-f]{32}$/i;
525
+ async function verifyNotionWorkspaceOwner(session, params) {
526
+ const { ownerNodeId, accountId } = params;
527
+ const result = await session.run(`MATCH (n) WHERE elementId(n) = $ownerNodeId
528
+ RETURN labels(n) AS labels, n.accountId AS accountId LIMIT 1`, { ownerNodeId });
529
+ if (result.records.length === 0) {
530
+ throw new Error(`ownerNodeId ${ownerNodeId} not found. Confirm the :NotionWorkspace node before invoking memory-archive-write.`);
531
+ }
532
+ const labels = result.records[0].get("labels") ?? [];
533
+ if (!labels.includes("NotionWorkspace")) {
534
+ throw new Error(`ownerNodeId ${ownerNodeId} has labels [${labels.join(", ")}]; expected :NotionWorkspace.`);
535
+ }
536
+ const ownerAccountId = result.records[0].get("accountId");
537
+ if (ownerAccountId && ownerAccountId !== accountId) {
538
+ throw new Error(`ownerNodeId ${ownerNodeId} belongs to account ${ownerAccountId}, not ${accountId}. Cross-account Notion ingest refused.`);
539
+ }
540
+ }
541
+ // ---- notion-pages ---------------------------------------------------------
542
+ export const NOTION_PAGE_CYPHER = `
543
+ MATCH (workspace:NotionWorkspace) WHERE elementId(workspace) = $ownerNodeId
544
+ WITH workspace, $rows AS rows
545
+ UNWIND rows AS row
546
+ MERGE (k:KnowledgeDocument {accountId: $accountId, notionId: row.notionId})
547
+ ON CREATE SET
548
+ k.knowledgeDocId = randomUUID(),
549
+ k.kind = 'notion-page',
550
+ k.source = 'notion',
551
+ k.createdByAgent = 'notion-import',
552
+ k.createdBySource = 'notion-import',
553
+ k.createdBySession = $sessionId,
554
+ k.createdAt = datetime(),
555
+ k.scope = 'admin',
556
+ k.importId = $importId
557
+ SET
558
+ k.title = row.title,
559
+ k.text = row.text,
560
+ k.updatedAt = datetime()
561
+ FOREACH (_ IN CASE WHEN row.notionCreatedAt IS NOT NULL THEN [1] ELSE [] END |
562
+ SET k.notionCreatedAt = datetime(row.notionCreatedAt)
563
+ )
564
+ FOREACH (_ IN CASE WHEN row.notionLastEditedAt IS NOT NULL THEN [1] ELSE [] END |
565
+ SET k.notionLastEditedAt = datetime(row.notionLastEditedAt)
566
+ )
567
+ FOREACH (_ IN CASE WHEN row.parentNotionId IS NULL THEN [1] ELSE [] END |
568
+ MERGE (workspace)-[r:HAS_SECTION]->(k)
569
+ ON CREATE SET r.source = 'notion', r.createdAt = datetime()
570
+ )
571
+ RETURN count(*) AS processed
572
+ `;
573
+ export const NOTION_PAGE_AUTHOR_CYPHER = `
574
+ UNWIND $rows AS row
575
+ WITH row WHERE row.authorPersonNodeId IS NOT NULL
576
+ MATCH (page:KnowledgeDocument {accountId: $accountId, notionId: row.notionId})
577
+ MATCH (author) WHERE elementId(author) = row.authorPersonNodeId AND author.accountId = $accountId
578
+ MERGE (author)-[r:AUTHORED]->(page)
579
+ ON CREATE SET r.source = 'notion', r.createdAt = datetime()
580
+ RETURN count(*) AS processed
581
+ `;
582
+ function notionPagesHandler() {
583
+ return {
584
+ async verifyArchive(session, params) {
585
+ if (!params.importId || !params.importId.trim()) {
586
+ throw new Error("notion-pages: params.importId is required (UUID per import run).");
587
+ }
588
+ await verifyNotionWorkspaceOwner(session, params);
589
+ },
590
+ async writeBatch(session, ctx) {
591
+ const { params, batchRows, sessionId } = ctx;
592
+ const rows = batchRows.map(normaliseNotionPageRow);
593
+ const queryParams = {
594
+ ownerNodeId: params.ownerNodeId,
595
+ accountId: params.accountId,
596
+ sessionId,
597
+ importId: params.importId,
598
+ rows,
599
+ };
600
+ return await session.executeWrite(async (tx) => {
601
+ const pageRes = await tx.run(NOTION_PAGE_CYPHER, queryParams);
602
+ const pageCounters = pageRes.summary.counters.updates();
603
+ const authorRes = await tx.run(NOTION_PAGE_AUTHOR_CYPHER, queryParams);
604
+ const authorCounters = authorRes.summary.counters.updates();
605
+ return {
606
+ createdPages: pageCounters.nodesCreated,
607
+ mergedPages: rows.length - pageCounters.nodesCreated,
608
+ workspaceEdgesCreated: pageCounters.relationshipsCreated,
609
+ authoredEdgesCreated: authorCounters.relationshipsCreated,
610
+ };
611
+ });
612
+ },
613
+ };
614
+ }
615
+ function normaliseNotionPageRow(row) {
616
+ if (!row.notionId || !NOTION_ID_RE.test(row.notionId)) {
617
+ throw new Error(`notion-pages row notionId="${row.notionId}" is not a 32-hex Notion UUID.`);
618
+ }
619
+ if (row.parentNotionId !== null && !NOTION_ID_RE.test(row.parentNotionId)) {
620
+ throw new Error(`notion-pages row parentNotionId="${row.parentNotionId}" is not a 32-hex Notion UUID (use null for workspace-root pages).`);
621
+ }
622
+ return {
623
+ notionId: row.notionId.toLowerCase(),
624
+ title: (row.title ?? "").trim(),
625
+ text: row.text ?? "",
626
+ parentNotionId: row.parentNotionId ? row.parentNotionId.toLowerCase() : null,
627
+ notionCreatedAt: row.notionCreatedAt ?? null,
628
+ notionLastEditedAt: row.notionLastEditedAt ?? null,
629
+ authorPersonNodeId: row.authorPersonNodeId && row.authorPersonNodeId.trim()
630
+ ? row.authorPersonNodeId.trim()
631
+ : null,
632
+ };
633
+ }
634
+ // ---- notion-database-rows -------------------------------------------------
635
+ function notionRowCypher(label) {
636
+ // The label is dispatched at handler call time from the closed NOTION_ROW_LABELS
637
+ // allowlist; string interpolation here is safe because the value is validated
638
+ // in verifyArchive before this template is built.
639
+ const docIdStamp = label === "KnowledgeDocument"
640
+ ? "n.knowledgeDocId = randomUUID(),\n n.kind = 'notion-row',"
641
+ : "";
642
+ return `
643
+ MATCH (db:KnowledgeDocument {accountId: $accountId, notionId: $databaseNotionId, kind: 'notion-database'})
644
+ WITH db, $rows AS rows
645
+ UNWIND rows AS row
646
+ MERGE (n:${label} {accountId: $accountId, notionId: row.notionId})
647
+ ON CREATE SET
648
+ ${docIdStamp}
649
+ n.source = 'notion',
650
+ n.createdByAgent = 'notion-import',
651
+ n.createdBySource = 'notion-import',
652
+ n.createdBySession = $sessionId,
653
+ n.createdAt = datetime(),
654
+ n.scope = 'admin',
655
+ n.importId = $importId
656
+ SET n += row.properties, n.updatedAt = datetime()
657
+ MERGE (db)-[r:HAS_SECTION]->(n)
658
+ ON CREATE SET r.source = 'notion', r.createdAt = datetime()
659
+ RETURN count(*) AS processed
660
+ `;
661
+ }
662
+ function notionDatabaseRowsHandler() {
663
+ return {
664
+ async verifyArchive(session, params) {
665
+ if (!params.importId || !params.importId.trim()) {
666
+ throw new Error("notion-database-rows: params.importId is required (UUID per import run).");
667
+ }
668
+ if (!params.databaseNotionId || !NOTION_ID_RE.test(params.databaseNotionId)) {
669
+ throw new Error(`notion-database-rows: params.databaseNotionId="${params.databaseNotionId}" is not a 32-hex Notion UUID.`);
670
+ }
671
+ if (!params.label || !NOTION_ROW_LABELS.has(params.label)) {
672
+ throw new Error(`notion-database-rows: params.label="${params.label}" is not in the allowlist (${Array.from(NOTION_ROW_LABELS).join(", ")}).`);
673
+ }
674
+ await verifyNotionWorkspaceOwner(session, params);
675
+ // The parent database (:KnowledgeDocument {kind:'notion-database'}) must
676
+ // already exist — the skill MERGEs it before calling notion-database-rows.
677
+ const dbRes = await session.run(`MATCH (db:KnowledgeDocument {accountId: $accountId, notionId: $databaseNotionId, kind: 'notion-database'})
678
+ RETURN count(db) AS n LIMIT 1`, { accountId: params.accountId, databaseNotionId: params.databaseNotionId });
679
+ const n = dbRes.records[0]?.get("n");
680
+ const nNum = typeof n === "number" ? n : n?.toNumber?.() ?? 0;
681
+ if (nNum === 0) {
682
+ throw new Error(`notion-database-rows: parent database :KnowledgeDocument {kind:'notion-database', notionId:'${params.databaseNotionId}'} not found for account ${params.accountId}. MERGE the database node before calling notion-database-rows.`);
683
+ }
684
+ },
685
+ async writeBatch(session, ctx) {
686
+ const { params, batchRows, sessionId } = ctx;
687
+ const label = params.label;
688
+ const rows = batchRows.map(normaliseNotionDatabaseRow);
689
+ const queryParams = {
690
+ accountId: params.accountId,
691
+ sessionId,
692
+ importId: params.importId,
693
+ databaseNotionId: params.databaseNotionId,
694
+ rows,
695
+ };
696
+ return await session.executeWrite(async (tx) => {
697
+ const res = await tx.run(notionRowCypher(label), queryParams);
698
+ const counters = res.summary.counters.updates();
699
+ return {
700
+ createdRows: counters.nodesCreated,
701
+ mergedRows: rows.length - counters.nodesCreated,
702
+ createdHasSectionEdges: counters.relationshipsCreated,
703
+ };
704
+ });
705
+ },
706
+ };
707
+ }
708
+ function normaliseNotionDatabaseRow(row) {
709
+ if (!row.notionId || !NOTION_ID_RE.test(row.notionId)) {
710
+ throw new Error(`notion-database-rows row notionId="${row.notionId}" is not a 32-hex Notion UUID.`);
711
+ }
712
+ const properties = {};
713
+ for (const [k, v] of Object.entries(row.properties ?? {})) {
714
+ if (v === undefined)
715
+ continue;
716
+ properties[k] = v;
717
+ }
718
+ return {
719
+ notionId: row.notionId.toLowerCase(),
720
+ properties,
721
+ };
722
+ }
723
+ // ---- notion-relations-pass-2 ----------------------------------------------
724
+ function notionRelationsPass2Handler() {
725
+ return {
726
+ async verifyArchive(session, params) {
727
+ await verifyNotionWorkspaceOwner(session, params);
728
+ },
729
+ async writeBatch(session, ctx) {
730
+ const { params, batchRows } = ctx;
731
+ const relations = batchRows.map(normaliseNotionRelationRow);
732
+ const byType = {};
733
+ let skippedUnknownEdgeType = 0;
734
+ for (const r of relations) {
735
+ if (!NOTION_RELATION_EDGE_TYPES.has(r.edgeType)) {
736
+ skippedUnknownEdgeType += 1;
737
+ continue;
738
+ }
739
+ (byType[r.edgeType] ??= []).push(r);
740
+ }
741
+ return await session.executeWrite(async (tx) => {
742
+ let relationsCreated = 0;
743
+ let relationsMatched = 0;
744
+ let skippedUnknownTarget = 0;
745
+ for (const [edgeType, rels] of Object.entries(byType)) {
746
+ // edgeType is validated against NOTION_RELATION_EDGE_TYPES above, so
747
+ // interpolating it into the MERGE pattern is safe.
748
+ const cypher = `
749
+ UNWIND $relations AS rel
750
+ MATCH (src {accountId: $accountId, notionId: rel.sourceNotionId})
751
+ MATCH (tgt {accountId: $accountId, notionId: rel.targetNotionId})
752
+ MERGE (src)-[r:${edgeType}]->(tgt)
753
+ ON CREATE SET r.source = 'notion', r.createdAt = datetime()
754
+ SET r += coalesce(rel.properties, {})
755
+ RETURN count(*) AS matched
756
+ `;
757
+ const res = await tx.run(cypher, {
758
+ accountId: params.accountId,
759
+ relations: rels,
760
+ });
761
+ const matchedRaw = res.records[0]?.get("matched");
762
+ const matched = typeof matchedRaw === "number"
763
+ ? matchedRaw
764
+ : matchedRaw?.toNumber?.() ?? 0;
765
+ const created = res.summary.counters.updates().relationshipsCreated;
766
+ relationsCreated += created;
767
+ relationsMatched += matched - created;
768
+ skippedUnknownTarget += rels.length - matched;
769
+ }
770
+ return {
771
+ relationsCreated,
772
+ relationsMatched,
773
+ skippedUnknownTarget,
774
+ skippedUnknownEdgeType,
775
+ };
776
+ });
777
+ },
778
+ };
779
+ }
780
+ function normaliseNotionRelationRow(row) {
781
+ if (!row.sourceNotionId || !NOTION_ID_RE.test(row.sourceNotionId)) {
782
+ throw new Error(`notion-relations-pass-2 row sourceNotionId="${row.sourceNotionId}" is not a 32-hex Notion UUID.`);
783
+ }
784
+ if (!row.targetNotionId || !NOTION_ID_RE.test(row.targetNotionId)) {
785
+ throw new Error(`notion-relations-pass-2 row targetNotionId="${row.targetNotionId}" is not a 32-hex Notion UUID.`);
786
+ }
787
+ if (!row.edgeType || !row.edgeType.trim()) {
788
+ throw new Error(`notion-relations-pass-2 row edgeType is required (one of ${Array.from(NOTION_RELATION_EDGE_TYPES).join(", ")} — unknown values are counted, not thrown).`);
789
+ }
790
+ return {
791
+ sourceNotionId: row.sourceNotionId.toLowerCase(),
792
+ targetNotionId: row.targetNotionId.toLowerCase(),
793
+ edgeType: row.edgeType,
794
+ properties: row.properties,
795
+ };
796
+ }
797
+ // ---------------------------------------------------------------------------
218
798
  function normaliseLinkedinRow(row) {
219
799
  if (!row.linkedinUrl || !row.linkedinUrl.trim()) {
220
800
  throw new Error("linkedin-connections row missing linkedinUrl (natural key).");
@@ -1 +1 @@
1
- {"version":3,"file":"memory-archive-write.js","sourceRoot":"","sources":["../../src/tools/memory-archive-write.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,UAAU,GAAG,GAAG,CAAC;AA2EvB,MAAM,QAAQ,GAAmC;IAC/C,sBAAsB,EAAE,0BAA0B,EAAE;CACrD,CAAC;AAEF,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA0B;IAE1B,OAAO,cAAc,CACnB,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,EACvF,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAA0B;IAE1B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,8CAA8C,WAAW,aAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE7C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBACtD,MAAM;oBACN,SAAS;oBACT,SAAS;iBACV,CAAC,CAAC;gBACH,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,MAAM,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,WAAW,WAAW,MAAM,WAAW,MAAM,IAAI,CACrG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,eAAsD,CAAC;QAC3D,IAAI,eAAmC,CAAC;QACxC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACrD,MAAM;oBACN,SAAS;oBACT,cAAc,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;iBAClC,CAAC,CAAC;gBACH,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACjD,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;gBACxC,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,eAAe,GAAG,QAAQ,CAAC;gBAC3B,eAAe,GAAG,MAAM,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sDAAsD,WAAW,WAAW,MAAM,IAAI,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACxC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,SAAS,GAAG,eAAe;YAC/B,CAAC,CAAC,oBAAoB,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,WAAW,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7F,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,WAAW,SAAS,IAAI,CAAC,MAAM,IAAI,UAAU,WAAW,MAAM,CAAC,MAAM,GAAG,SAAS,OAAO,SAAS,IAAI,CAC5I,CAAC;QAEF,OAAO;YACL,WAAW;YACX,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,QAAQ;YACR,MAAM;YACN,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAA8B,EAAE,MAA8B;IACnF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B/C,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBvC,CAAC;AAEF,SAAS,0BAA0B;IACjC,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;YACjC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B;sEAC8D,EAC9D,EAAE,WAAW,EAAE,CAChB,CAAC;YACF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,8FAA8F,CACzH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAc,IAAI,EAAE,CAAC;YACnE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAkB,CAAC;YAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAChG,CAAC;YACJ,CAAC;YACD,IAAI,cAAc,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,uBAAuB,cAAc,SAAS,SAAS,yCAAyC,CAC3H,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG;YAC3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;YAC7C,MAAM,WAAW,GAAG;gBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS;gBACT,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAA0B,CAAC,CAAC;aAC7E,CAAC;YACF,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,gCAAgC,EAAE,WAAW,CAAC,CAAC;gBAC9E,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAE5D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAEtD,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC;gBACnD,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;gBAC7C,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;gBACtD,MAAM,YAAY,GAAG,cAAc,CAAC,oBAAoB,GAAG,WAAW,CAAC,oBAAoB,CAAC;gBAE5F,OAAO;oBACL,cAAc;oBACd,aAAa;oBACb,oBAAoB,EAAE,WAAW;oBACjC,mBAAmB,EAAE,CAAC;oBACtB,YAAY;iBACb,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,GAA0B;IACtD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,yCAAyC,GAAG,CAAC,WAAW,mFAAmF,CAC5I,CAAC;IACJ,CAAC;IACD,OAAO;QACL,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACvC,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACzC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE;QACnC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC9D,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QACtE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC9D,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"memory-archive-write.js","sourceRoot":"","sources":["../../src/tools/memory-archive-write.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,UAAU,GAAG,GAAG,CAAC;AAgMvB,MAAM,QAAQ,GAAmC;IAC/C,sBAAsB,EAAE,0BAA0B,EAAE;IACpD,gBAAgB,EAAE,oBAAoB,EAAE;IACxC,cAAc,EAAE,kBAAkB,EAAE;IACpC,sBAAsB,EAAE,yBAAyB,EAAE;IACnD,yBAAyB,EAAE,2BAA2B,EAAE;CACzD,CAAC;AAEF,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA0B;IAE1B,OAAO,cAAc,CACnB,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,EACvF,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAA0B;IAE1B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,8CAA8C,WAAW,aAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE7C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBACtD,MAAM;oBACN,SAAS;oBACT,SAAS;iBACV,CAAC,CAAC;gBACH,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,MAAM,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,WAAW,WAAW,MAAM,WAAW,MAAM,IAAI,CACrG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,eAAsD,CAAC;QAC3D,IAAI,eAAmC,CAAC;QACxC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACrD,MAAM;oBACN,SAAS;oBACT,cAAc,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;iBAClC,CAAC,CAAC;gBACH,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACjD,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;gBACxC,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,eAAe,GAAG,QAAQ,CAAC;gBAC3B,eAAe,GAAG,MAAM,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sDAAsD,WAAW,WAAW,MAAM,IAAI,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACxC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,SAAS,GAAG,eAAe;YAC/B,CAAC,CAAC,oBAAoB,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,WAAW,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7F,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,WAAW,SAAS,IAAI,CAAC,MAAM,IAAI,UAAU,WAAW,MAAM,CAAC,MAAM,GAAG,SAAS,OAAO,SAAS,IAAI,CAC5I,CAAC;QAEF,OAAO;YACL,WAAW;YACX,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,QAAQ;YACR,MAAM;YACN,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAA8B,EAAE,MAA8B;IACnF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B/C,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBvC,CAAC;AAEF,SAAS,0BAA0B;IACjC,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;YACjC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B;sEAC8D,EAC9D,EAAE,WAAW,EAAE,CAChB,CAAC;YACF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,8FAA8F,CACzH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAc,IAAI,EAAE,CAAC;YACnE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAkB,CAAC;YAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAChG,CAAC;YACJ,CAAC;YACD,IAAI,cAAc,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,uBAAuB,cAAc,SAAS,SAAS,yCAAyC,CAC3H,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG;YAC3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;YAC7C,MAAM,WAAW,GAAG;gBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS;gBACT,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAA0B,CAAC,CAAC;aAC7E,CAAC;YACF,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,gCAAgC,EAAE,WAAW,CAAC,CAAC;gBAC9E,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAE5D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAEtD,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC;gBACnD,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;gBAC7C,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;gBACtD,MAAM,YAAY,GAAG,cAAc,CAAC,oBAAoB,GAAG,WAAW,CAAC,oBAAoB,CAAC;gBAE5F,OAAO;oBACL,cAAc;oBACd,aAAa;oBACb,oBAAoB,EAAE,WAAW;oBACjC,mBAAmB,EAAE,CAAC;oBACtB,YAAY;iBACb,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,EAAE;AACF,qDAAqD;AACrD,sEAAsE;AACtE,uDAAuD;AACvD,EAAE;AACF,yDAAyD;AACzD,wEAAwE;AACxE,mEAAmE;AACnE,6EAA6E;AAC7E,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,kDAAkD;AAElD,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BnC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;CAkBlC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;CAY5C,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;;;;CAW9C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;CAiB5C,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBzC,CAAC;AAEF,SAAS,oBAAoB;IAC3B,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;YACjC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B;sEAC8D,EAC9D,EAAE,WAAW,EAAE,CAChB,CAAC;YACF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,8FAA8F,CACzH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAc,IAAI,EAAE,CAAC;YACnE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAkB,CAAC;YAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAChG,CAAC;YACJ,CAAC;YACD,IAAI,cAAc,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,uBAAuB,cAAc,SAAS,SAAS,uCAAuC,CACzH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG;YAC3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;YAC7C,MAAM,IAAI,GAAI,SAA+B,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAExE,MAAM,SAAS,GAMV,EAAE,CAAC;YACR,MAAM,WAAW,GAKZ,EAAE,CAAC;YACR,MAAM,SAAS,GAKV,EAAE,CAAC;YAER,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;oBACrC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC9B,SAAS,CAAC,IAAI,CAAC;4BACb,QAAQ,EAAE,GAAG,CAAC,YAAY;4BAC1B,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY;4BAC9B,QAAQ,EAAE,EAAE,CAAC,QAAQ;4BACrB,KAAK,EAAE,EAAE,CAAC,KAAK;4BACf,MAAM,EAAE,EAAE,CAAC,MAAM;yBAClB,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACvC,WAAW,CAAC,IAAI,CAAC;4BACf,QAAQ,EAAE,GAAG,CAAC,YAAY;4BAC1B,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM;4BAC1B,QAAQ,EAAE,EAAE,CAAC,QAAQ;4BACrB,KAAK,EAAE,EAAE,CAAC,KAAK;yBAChB,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,IAAI,CAAC;4BACb,QAAQ,EAAE,GAAG,CAAC,YAAY;4BAC1B,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI;4BACxB,QAAQ,EAAE,EAAE,CAAC,QAAQ;4BACrB,KAAK,EAAE,EAAE,CAAC,KAAK;yBAChB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG;gBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS;gBACT,IAAI;gBACJ,SAAS;gBACT,WAAW;gBACX,SAAS;aACV,CAAC;YAEF,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC7C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;gBAChE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAExD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;gBAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAEtD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC;gBACrE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAEtD,IAAI,uBAAuB,GAAG,CAAC,CAAC;gBAChC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;oBACnE,uBAAuB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/E,CAAC;gBACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAC;oBACrE,uBAAuB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/E,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;oBACnE,uBAAuB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/E,CAAC;gBAED,OAAO;oBACL,YAAY,EAAE,YAAY,CAAC,YAAY;oBACvC,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,YAAY;oBACpD,WAAW,EAAE,WAAW,CAAC,YAAY;oBACrC,eAAe,EAAE,WAAW,CAAC,oBAAoB;oBACjD,kBAAkB,EAAE,WAAW,CAAC,YAAY;oBAC5C,sBAAsB,EAAE,WAAW,CAAC,oBAAoB;oBACxD,oBAAoB,EAAE,uBAAuB;oBAC7C,kBAAkB,EAAE,SAAS,CAAC,MAAM;oBACpC,oBAAoB,EAAE,WAAW,CAAC,MAAM;oBACxC,kBAAkB,EAAE,SAAS,CAAC,MAAM;iBACrC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAoB;IAChD,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,CAAC,YAAY,oCAAoC,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,CAAC,YAAY,wBAAwB,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,CAAC,QAAQ,iCAAiC,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO;QACL,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;QACrC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACtD,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC7C,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE;QAC1C,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;QAC9B,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1D,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAC5D,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;KACnE,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,sCAAsC;AACtC,EAAE;AACF,wEAAwE;AACxE,2EAA2E;AAC3E,wEAAwE;AACxE,2EAA2E;AAC3E,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,qDAAqD;AACrD,4EAA4E;AAC5E,wEAAwE;AACxE,yDAAyD;AACzD,gEAAgE;AAChE,wEAAwE;AACxE,0EAA0E;AAC1E,uEAAuE;AACvE,oEAAoE;AACpE,4EAA4E;AAC5E,kEAAkE;AAElE,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAS;IACjD,UAAU;IACV,WAAW;IACX,MAAM;IACN,aAAa;IACb,SAAS;IACT,UAAU;IACV,aAAa;IACb,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IACxC,QAAQ;IACR,cAAc;IACd,SAAS;IACT,MAAM;IACN,OAAO;IACP,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,KAAK,UAAU,0BAA0B,CACvC,OAAgB,EAChB,MAA0B;IAE1B,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B;kEAC8D,EAC9D,EAAE,WAAW,EAAE,CAChB,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,qFAAqF,CAChH,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAc,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAC3F,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAkB,CAAC;IAC3E,IAAI,cAAc,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,uBAAuB,cAAc,SAAS,SAAS,wCAAwC,CAC1H,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;CAQxC,CAAC;AAEF,SAAS,kBAAkB;IACzB,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;YACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;YACJ,CAAC;YACD,MAAM,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG;YAC3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;YAC7C,MAAM,IAAI,GAAI,SAA6B,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG;gBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI;aACL,CAAC;YAEF,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC7C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;gBAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACxD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;gBACvE,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAE5D,OAAO;oBACL,YAAY,EAAE,YAAY,CAAC,YAAY;oBACvC,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,YAAY;oBACpD,qBAAqB,EAAE,YAAY,CAAC,oBAAoB;oBACxD,oBAAoB,EAAE,cAAc,CAAC,oBAAoB;iBAC1D,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAkB;IAChD,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,CAAC,QAAQ,gCAAgC,CAC3E,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,CAAC,cAAc,oEAAoE,CAC3H,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;QACpC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC/B,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;QACpB,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;QAC5E,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI;QAC5C,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,IAAI,IAAI;QAClD,kBAAkB,EAChB,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE;YACrD,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE;YAC/B,CAAC,CAAC,IAAI;KACX,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,eAAe,CAAC,KAAa;IACpC,iFAAiF;IACjF,8EAA8E;IAC9E,kDAAkD;IAClD,MAAM,UAAU,GACd,KAAK,KAAK,mBAAmB;QAC3B,CAAC,CAAC,0EAA0E;QAC5E,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;;;;WAIE,KAAK;;MAEV,UAAU;;;;;;;;;;;;CAYf,CAAC;AACF,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;YACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,KAAK,CACb,kDAAkD,MAAM,CAAC,gBAAgB,gCAAgC,CAC1G,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,CAAC,KAAK,8BAA8B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC9H,CAAC;YACJ,CAAC;YACD,MAAM,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAElD,yEAAyE;YACzE,2EAA2E;YAC3E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B;uCAC+B,EAC/B,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAC3E,CAAC;YACF,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,IAAI,GACR,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAiC,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;YACpF,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,+FAA+F,MAAM,CAAC,gBAAgB,4BAA4B,MAAM,CAAC,SAAS,gEAAgE,CACnO,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG;YAC3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;YAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAe,CAAC;YACrC,MAAM,IAAI,GAAI,SAAoC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACnF,MAAM,WAAW,GAAG;gBAClB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,IAAI;aACL,CAAC;YAEF,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC7C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;gBAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAChD,OAAO;oBACL,WAAW,EAAE,QAAQ,CAAC,YAAY;oBAClC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY;oBAC/C,sBAAsB,EAAE,QAAQ,CAAC,oBAAoB;iBACtD,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAyB;IAC3D,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,CAAC,QAAQ,gCAAgC,CACnF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAqD,EAAE,CAAC;IACxE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,UAAU,CAAC,CAAC,CAAC,GAAG,CAAqC,CAAC;IACxD,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;QACpC,UAAU;KACX,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,2BAA2B;IAClC,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;YACjC,MAAM,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG;YAC3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;YAClC,MAAM,SAAS,GAAI,SAAiC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAErF,MAAM,MAAM,GAAwC,EAAE,CAAC;YACvD,IAAI,sBAAsB,GAAG,CAAC,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,sBAAsB,IAAI,CAAC,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC7C,IAAI,gBAAgB,GAAG,CAAC,CAAC;gBACzB,IAAI,gBAAgB,GAAG,CAAC,CAAC;gBACzB,IAAI,oBAAoB,GAAG,CAAC,CAAC;gBAE7B,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtD,qEAAqE;oBACrE,mDAAmD;oBACnD,MAAM,MAAM,GAAG;;;;6BAII,QAAQ;;;;WAI1B,CAAC;oBACF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;wBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClD,MAAM,OAAO,GACX,OAAO,UAAU,KAAK,QAAQ;wBAC5B,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAE,UAA0C,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;oBACrE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBACpE,gBAAgB,IAAI,OAAO,CAAC;oBAC5B,gBAAgB,IAAI,OAAO,GAAG,OAAO,CAAC;oBACtC,oBAAoB,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;gBAChD,CAAC;gBAED,OAAO;oBACL,gBAAgB;oBAChB,gBAAgB;oBAChB,oBAAoB;oBACpB,sBAAsB;iBACvB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAsB;IACxD,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,+CAA+C,GAAG,CAAC,cAAc,gCAAgC,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,+CAA+C,GAAG,CAAC,cAAc,gCAAgC,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,4DAA4D,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAC3J,CAAC;IACJ,CAAC;IACD,OAAO;QACL,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE;QAChD,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,GAAG,CAAC,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED,8EAA8E;AAE9E,SAAS,oBAAoB,CAAC,GAA0B;IACtD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,yCAAyC,GAAG,CAAC,WAAW,mFAAmF,CAC5I,CAAC;IACJ,CAAC;IACD,OAAO;QACL,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACvC,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACzC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE;QACnC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC9D,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QACtE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC9D,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC"}