agent-recall-mcp 3.2.3 → 3.3.2

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 (164) hide show
  1. package/README.md +276 -218
  2. package/dist/helpers/journal-files.d.ts +30 -0
  3. package/dist/helpers/journal-files.d.ts.map +1 -0
  4. package/dist/helpers/journal-files.js +96 -0
  5. package/dist/helpers/journal-files.js.map +1 -0
  6. package/dist/helpers/sections.d.ts +12 -0
  7. package/dist/helpers/sections.d.ts.map +1 -0
  8. package/dist/helpers/sections.js +84 -0
  9. package/dist/helpers/sections.js.map +1 -0
  10. package/dist/index.js +59 -1199
  11. package/dist/index.js.map +1 -1
  12. package/dist/palace/awareness.d.ts +67 -0
  13. package/dist/palace/awareness.d.ts.map +1 -0
  14. package/dist/palace/awareness.js +231 -0
  15. package/dist/palace/awareness.js.map +1 -0
  16. package/dist/palace/consolidate.d.ts +28 -0
  17. package/dist/palace/consolidate.d.ts.map +1 -0
  18. package/dist/palace/consolidate.js +129 -0
  19. package/dist/palace/consolidate.js.map +1 -0
  20. package/dist/palace/fan-out.d.ts +15 -0
  21. package/dist/palace/fan-out.d.ts.map +1 -0
  22. package/dist/palace/fan-out.js +78 -0
  23. package/dist/palace/fan-out.js.map +1 -0
  24. package/dist/palace/graph.d.ts +11 -0
  25. package/dist/palace/graph.d.ts.map +1 -0
  26. package/dist/palace/graph.js +59 -0
  27. package/dist/palace/graph.js.map +1 -0
  28. package/dist/palace/identity.d.ts +6 -0
  29. package/dist/palace/identity.d.ts.map +1 -0
  30. package/dist/palace/identity.js +18 -0
  31. package/dist/palace/identity.js.map +1 -0
  32. package/dist/palace/index-manager.d.ts +7 -0
  33. package/dist/palace/index-manager.d.ts.map +1 -0
  34. package/dist/palace/index-manager.js +46 -0
  35. package/dist/palace/index-manager.js.map +1 -0
  36. package/dist/palace/insights-index.d.ts +39 -0
  37. package/dist/palace/insights-index.d.ts.map +1 -0
  38. package/dist/palace/insights-index.js +101 -0
  39. package/dist/palace/insights-index.js.map +1 -0
  40. package/dist/palace/log.d.ts +9 -0
  41. package/dist/palace/log.d.ts.map +1 -0
  42. package/dist/palace/log.js +28 -0
  43. package/dist/palace/log.js.map +1 -0
  44. package/dist/palace/obsidian.d.ts +12 -0
  45. package/dist/palace/obsidian.d.ts.map +1 -0
  46. package/dist/palace/obsidian.js +76 -0
  47. package/dist/palace/obsidian.js.map +1 -0
  48. package/dist/palace/rooms.d.ts +14 -0
  49. package/dist/palace/rooms.d.ts.map +1 -0
  50. package/dist/palace/rooms.js +117 -0
  51. package/dist/palace/rooms.js.map +1 -0
  52. package/dist/palace/salience.d.ts +15 -0
  53. package/dist/palace/salience.d.ts.map +1 -0
  54. package/dist/palace/salience.js +33 -0
  55. package/dist/palace/salience.js.map +1 -0
  56. package/dist/resources/journal-resources.d.ts +3 -0
  57. package/dist/resources/journal-resources.d.ts.map +1 -0
  58. package/dist/resources/journal-resources.js +72 -0
  59. package/dist/resources/journal-resources.js.map +1 -0
  60. package/dist/server.d.ts +4 -0
  61. package/dist/server.d.ts.map +1 -0
  62. package/dist/server.js +7 -0
  63. package/dist/server.js.map +1 -0
  64. package/dist/storage/fs-utils.d.ts +8 -0
  65. package/dist/storage/fs-utils.d.ts.map +1 -0
  66. package/dist/storage/fs-utils.js +28 -0
  67. package/dist/storage/fs-utils.js.map +1 -0
  68. package/dist/storage/paths.d.ts +21 -0
  69. package/dist/storage/paths.d.ts.map +1 -0
  70. package/dist/storage/paths.js +59 -0
  71. package/dist/storage/paths.js.map +1 -0
  72. package/dist/storage/project.d.ts +17 -0
  73. package/dist/storage/project.d.ts.map +1 -0
  74. package/dist/storage/project.js +130 -0
  75. package/dist/storage/project.js.map +1 -0
  76. package/dist/tools/alignment-check.d.ts +3 -0
  77. package/dist/tools/alignment-check.d.ts.map +1 -0
  78. package/dist/tools/alignment-check.js +73 -0
  79. package/dist/tools/alignment-check.js.map +1 -0
  80. package/dist/tools/awareness-update.d.ts +9 -0
  81. package/dist/tools/awareness-update.d.ts.map +1 -0
  82. package/dist/tools/awareness-update.js +90 -0
  83. package/dist/tools/awareness-update.js.map +1 -0
  84. package/dist/tools/context-synthesize.d.ts +3 -0
  85. package/dist/tools/context-synthesize.d.ts.map +1 -0
  86. package/dist/tools/context-synthesize.js +204 -0
  87. package/dist/tools/context-synthesize.js.map +1 -0
  88. package/dist/tools/journal-archive.d.ts +3 -0
  89. package/dist/tools/journal-archive.d.ts.map +1 -0
  90. package/dist/tools/journal-archive.js +62 -0
  91. package/dist/tools/journal-archive.js.map +1 -0
  92. package/dist/tools/journal-capture.d.ts +3 -0
  93. package/dist/tools/journal-capture.d.ts.map +1 -0
  94. package/dist/tools/journal-capture.js +87 -0
  95. package/dist/tools/journal-capture.js.map +1 -0
  96. package/dist/tools/journal-cold-start.d.ts +3 -0
  97. package/dist/tools/journal-cold-start.d.ts.map +1 -0
  98. package/dist/tools/journal-cold-start.js +70 -0
  99. package/dist/tools/journal-cold-start.js.map +1 -0
  100. package/dist/tools/journal-list.d.ts +3 -0
  101. package/dist/tools/journal-list.d.ts.map +1 -0
  102. package/dist/tools/journal-list.js +43 -0
  103. package/dist/tools/journal-list.js.map +1 -0
  104. package/dist/tools/journal-projects.d.ts +3 -0
  105. package/dist/tools/journal-projects.d.ts.map +1 -0
  106. package/dist/tools/journal-projects.js +25 -0
  107. package/dist/tools/journal-projects.js.map +1 -0
  108. package/dist/tools/journal-read.d.ts +3 -0
  109. package/dist/tools/journal-read.d.ts.map +1 -0
  110. package/dist/tools/journal-read.js +72 -0
  111. package/dist/tools/journal-read.js.map +1 -0
  112. package/dist/tools/journal-search.d.ts +3 -0
  113. package/dist/tools/journal-search.d.ts.map +1 -0
  114. package/dist/tools/journal-search.js +113 -0
  115. package/dist/tools/journal-search.js.map +1 -0
  116. package/dist/tools/journal-state.d.ts +6 -0
  117. package/dist/tools/journal-state.d.ts.map +1 -0
  118. package/dist/tools/journal-state.js +111 -0
  119. package/dist/tools/journal-state.js.map +1 -0
  120. package/dist/tools/journal-write.d.ts +3 -0
  121. package/dist/tools/journal-write.d.ts.map +1 -0
  122. package/dist/tools/journal-write.js +88 -0
  123. package/dist/tools/journal-write.js.map +1 -0
  124. package/dist/tools/knowledge-read.d.ts +3 -0
  125. package/dist/tools/knowledge-read.d.ts.map +1 -0
  126. package/dist/tools/knowledge-read.js +118 -0
  127. package/dist/tools/knowledge-read.js.map +1 -0
  128. package/dist/tools/knowledge-write.d.ts +3 -0
  129. package/dist/tools/knowledge-write.d.ts.map +1 -0
  130. package/dist/tools/knowledge-write.js +89 -0
  131. package/dist/tools/knowledge-write.js.map +1 -0
  132. package/dist/tools/nudge.d.ts +3 -0
  133. package/dist/tools/nudge.d.ts.map +1 -0
  134. package/dist/tools/nudge.js +41 -0
  135. package/dist/tools/nudge.js.map +1 -0
  136. package/dist/tools/palace-lint.d.ts +7 -0
  137. package/dist/tools/palace-lint.d.ts.map +1 -0
  138. package/dist/tools/palace-lint.js +149 -0
  139. package/dist/tools/palace-lint.js.map +1 -0
  140. package/dist/tools/palace-read.d.ts +6 -0
  141. package/dist/tools/palace-read.d.ts.map +1 -0
  142. package/dist/tools/palace-read.js +78 -0
  143. package/dist/tools/palace-read.js.map +1 -0
  144. package/dist/tools/palace-search.d.ts +6 -0
  145. package/dist/tools/palace-search.d.ts.map +1 -0
  146. package/dist/tools/palace-search.js +81 -0
  147. package/dist/tools/palace-search.js.map +1 -0
  148. package/dist/tools/palace-walk.d.ts +12 -0
  149. package/dist/tools/palace-walk.d.ts.map +1 -0
  150. package/dist/tools/palace-walk.js +167 -0
  151. package/dist/tools/palace-walk.js.map +1 -0
  152. package/dist/tools/palace-write.d.ts +6 -0
  153. package/dist/tools/palace-write.d.ts.map +1 -0
  154. package/dist/tools/palace-write.js +108 -0
  155. package/dist/tools/palace-write.js.map +1 -0
  156. package/dist/tools/recall-insight.d.ts +9 -0
  157. package/dist/tools/recall-insight.d.ts.map +1 -0
  158. package/dist/tools/recall-insight.js +51 -0
  159. package/dist/tools/recall-insight.js.map +1 -0
  160. package/dist/types.d.ts +112 -0
  161. package/dist/types.d.ts.map +1 -0
  162. package/dist/types.js +31 -0
  163. package/dist/types.js.map +1 -0
  164. package/package.json +8 -4
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Journal file listing, reading, and index maintenance.
3
+ */
4
+ import type { JournalEntry } from "../types.js";
5
+ /**
6
+ * List all .md journal files across all directories for a project.
7
+ * Returns sorted array with most recent first.
8
+ */
9
+ export declare function listJournalFiles(project: string): JournalEntry[];
10
+ /**
11
+ * Read a journal file. Checks primary dir first, then legacy.
12
+ */
13
+ export declare function readJournalFile(project: string, date: string): string | null;
14
+ /**
15
+ * Extract title from journal file content.
16
+ */
17
+ export declare function extractTitle(content: string): string;
18
+ /**
19
+ * Extract momentum indicator from journal content.
20
+ */
21
+ export declare function extractMomentum(content: string): string;
22
+ /**
23
+ * Count entries in a log file (for journal_capture entry numbering).
24
+ */
25
+ export declare function countLogEntries(logPath: string): number;
26
+ /**
27
+ * Update the index.md for a project.
28
+ */
29
+ export declare function updateIndex(project: string): void;
30
+ //# sourceMappingURL=journal-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-files.d.ts","sourceRoot":"","sources":["../../src/helpers/journal-files.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAmBhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAuBjD"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Journal file listing, reading, and index maintenance.
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { journalDir, journalDirs } from "../storage/paths.js";
7
+ import { ensureDir } from "../storage/fs-utils.js";
8
+ /**
9
+ * List all .md journal files across all directories for a project.
10
+ * Returns sorted array with most recent first.
11
+ */
12
+ export function listJournalFiles(project) {
13
+ const dirs = journalDirs(project);
14
+ const entries = [];
15
+ const seen = new Set();
16
+ for (const dir of dirs) {
17
+ if (!fs.existsSync(dir))
18
+ continue;
19
+ const files = fs.readdirSync(dir);
20
+ for (const file of files) {
21
+ const match = file.match(/^(\d{4}-\d{2}-\d{2})\.md$/);
22
+ if (match && !seen.has(match[1])) {
23
+ seen.add(match[1]);
24
+ entries.push({ date: match[1], file, dir });
25
+ }
26
+ }
27
+ }
28
+ entries.sort((a, b) => b.date.localeCompare(a.date));
29
+ return entries;
30
+ }
31
+ /**
32
+ * Read a journal file. Checks primary dir first, then legacy.
33
+ */
34
+ export function readJournalFile(project, date) {
35
+ const filename = `${date}.md`;
36
+ const dirs = journalDirs(project);
37
+ const primaryDir = journalDir(project);
38
+ const allDirs = [primaryDir, ...dirs.filter((d) => d !== primaryDir)];
39
+ for (const dir of allDirs) {
40
+ const filePath = path.join(dir, filename);
41
+ if (fs.existsSync(filePath)) {
42
+ return fs.readFileSync(filePath, "utf-8");
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ /**
48
+ * Extract title from journal file content.
49
+ */
50
+ export function extractTitle(content) {
51
+ const match = content.match(/^# (.+)$/m);
52
+ return match ? match[1].trim() : "(untitled)";
53
+ }
54
+ /**
55
+ * Extract momentum indicator from journal content.
56
+ */
57
+ export function extractMomentum(content) {
58
+ const patterns = [/[🟢🟡🔴⚪]\s*\S+/];
59
+ for (const pattern of patterns) {
60
+ const match = content.match(pattern);
61
+ if (match)
62
+ return match[0];
63
+ }
64
+ return "";
65
+ }
66
+ /**
67
+ * Count entries in a log file (for journal_capture entry numbering).
68
+ */
69
+ export function countLogEntries(logPath) {
70
+ if (!fs.existsSync(logPath))
71
+ return 0;
72
+ const content = fs.readFileSync(logPath, "utf-8");
73
+ const matches = content.match(/^### Q\d+/gm);
74
+ return matches ? matches.length : 0;
75
+ }
76
+ /**
77
+ * Update the index.md for a project.
78
+ */
79
+ export function updateIndex(project) {
80
+ const dir = journalDir(project);
81
+ ensureDir(dir);
82
+ const indexPath = path.join(dir, "index.md");
83
+ const entries = listJournalFiles(project);
84
+ let index = `# ${project} — Journal Index\n\n`;
85
+ index += `> Auto-generated. ${entries.length} entries.\n\n`;
86
+ index += `| Date | Title | Momentum |\n`;
87
+ index += `|------|-------|----------|\n`;
88
+ for (const entry of entries) {
89
+ const content = fs.readFileSync(path.join(entry.dir, entry.file), "utf-8");
90
+ const title = extractTitle(content);
91
+ const momentum = extractMomentum(content);
92
+ index += `| ${entry.date} | ${title} | ${momentum} |\n`;
93
+ }
94
+ fs.writeFileSync(indexPath, index, "utf-8");
95
+ }
96
+ //# sourceMappingURL=journal-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-files.js","sourceRoot":"","sources":["../../src/helpers/journal-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Markdown section extraction and manipulation.
3
+ */
4
+ /**
5
+ * Extract a section from a markdown journal entry.
6
+ */
7
+ export declare function extractSection(content: string, section: string): string | null;
8
+ /**
9
+ * Append content to a specific section in a journal file, or to end of file.
10
+ */
11
+ export declare function appendToSection(existingContent: string, newContent: string, section: string | null): string;
12
+ //# sourceMappingURL=sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../src/helpers/sections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsC9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CA0CR"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Markdown section extraction and manipulation.
3
+ */
4
+ import { SECTION_HEADERS } from "../types.js";
5
+ /**
6
+ * Extract a section from a markdown journal entry.
7
+ */
8
+ export function extractSection(content, section) {
9
+ if (section === "all")
10
+ return content;
11
+ if (section === "brief") {
12
+ const lines = content.split("\n");
13
+ const nonEmpty = [];
14
+ let pastTitle = false;
15
+ for (const line of lines) {
16
+ if (line.startsWith("# ")) {
17
+ pastTitle = true;
18
+ continue;
19
+ }
20
+ if (!pastTitle)
21
+ continue;
22
+ const trimmed = line.trim();
23
+ if (trimmed === "")
24
+ continue;
25
+ nonEmpty.push(trimmed);
26
+ if (nonEmpty.length >= 4)
27
+ break;
28
+ }
29
+ return nonEmpty.join("\n") || null;
30
+ }
31
+ const header = SECTION_HEADERS[section];
32
+ if (!header)
33
+ return null;
34
+ const idx = content.indexOf(header);
35
+ if (idx === -1)
36
+ return null;
37
+ const afterHeader = content.slice(idx);
38
+ const lines = afterHeader.split("\n");
39
+ const result = [lines[0]];
40
+ let inCodeFence = false;
41
+ for (let i = 1; i < lines.length; i++) {
42
+ if (lines[i].startsWith("```"))
43
+ inCodeFence = !inCodeFence;
44
+ if (!inCodeFence && lines[i].startsWith("## "))
45
+ break;
46
+ result.push(lines[i]);
47
+ }
48
+ return result.join("\n").trimEnd();
49
+ }
50
+ /**
51
+ * Append content to a specific section in a journal file, or to end of file.
52
+ */
53
+ export function appendToSection(existingContent, newContent, section) {
54
+ if (section === "replace_all") {
55
+ return newContent;
56
+ }
57
+ if (!section) {
58
+ return existingContent.trimEnd() + "\n\n" + newContent + "\n";
59
+ }
60
+ const header = SECTION_HEADERS[section];
61
+ if (!header) {
62
+ return existingContent.trimEnd() + "\n\n" + newContent + "\n";
63
+ }
64
+ const idx = existingContent.indexOf(header);
65
+ if (idx === -1) {
66
+ return (existingContent.trimEnd() + "\n\n" + header + "\n\n" + newContent + "\n");
67
+ }
68
+ const afterHeader = existingContent.slice(idx);
69
+ const lines = afterHeader.split("\n");
70
+ let insertAt = lines.length;
71
+ let inCodeFence = false;
72
+ for (let i = 1; i < lines.length; i++) {
73
+ if (lines[i].startsWith("```"))
74
+ inCodeFence = !inCodeFence;
75
+ if (!inCodeFence && lines[i].startsWith("## ")) {
76
+ insertAt = i;
77
+ break;
78
+ }
79
+ }
80
+ const before = existingContent.slice(0, idx + lines.slice(0, insertAt).join("\n").length);
81
+ const after = existingContent.slice(idx + lines.slice(0, insertAt).join("\n").length);
82
+ return before.trimEnd() + "\n\n" + newContent + "\n" + after;
83
+ }
84
+ //# sourceMappingURL=sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/helpers/sections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,OAAe;IAC7D,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IAEtC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,OAAO,KAAK,EAAE;gBAAE,SAAS;YAC7B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;QAClC,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,WAAW,GAAG,CAAC,WAAW,CAAC;QAC3D,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,MAAM;QACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,eAAuB,EACvB,UAAkB,EAClB,OAAsB;IAEtB,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,eAAe,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAChE,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,eAAe,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CACL,eAAe,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,WAAW,GAAG,CAAC,WAAW,CAAC;QAC3D,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAClC,CAAC,EACD,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CACjD,CAAC;IACF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CACjC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CACjD,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;AAC/D,CAAC"}