@usejunior/docx-mcp 0.9.1 → 0.11.0
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/LICENSE +202 -21
- package/NOTICE +2 -0
- package/README.md +47 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/commands/edit.d.ts.map +1 -1
- package/dist/cli/commands/edit.js +2 -1
- package/dist/cli/commands/edit.js.map +1 -1
- package/dist/cli/commands/grep.d.ts.map +1 -1
- package/dist/cli/commands/grep.js +2 -1
- package/dist/cli/commands/grep.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +1 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/tool_runner.d.ts +6 -0
- package/dist/cli/tool_runner.d.ts.map +1 -1
- package/dist/cli/tool_runner.js +10 -1
- package/dist/cli/tool_runner.js.map +1 -1
- package/dist/odf_loader.d.ts +2 -0
- package/dist/odf_loader.d.ts.map +1 -0
- package/dist/odf_loader.js +20 -0
- package/dist/odf_loader.js.map +1 -0
- package/dist/server.d.ts +8 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +113 -4
- package/dist/server.js.map +1 -1
- package/dist/session/manager.d.ts +48 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +175 -7
- package/dist/session/manager.js.map +1 -1
- package/dist/tool_catalog.d.ts +56 -12
- package/dist/tool_catalog.d.ts.map +1 -1
- package/dist/tool_catalog.js +69 -17
- package/dist/tool_catalog.js.map +1 -1
- package/dist/tools/accept_changes.js +1 -1
- package/dist/tools/accept_changes.js.map +1 -1
- package/dist/tools/add_comment.d.ts.map +1 -1
- package/dist/tools/add_comment.js +21 -5
- package/dist/tools/add_comment.js.map +1 -1
- package/dist/tools/add_footnote.d.ts.map +1 -1
- package/dist/tools/add_footnote.js +15 -3
- package/dist/tools/add_footnote.js.map +1 -1
- package/dist/tools/ai_revision_guard.d.ts +38 -0
- package/dist/tools/ai_revision_guard.d.ts.map +1 -0
- package/dist/tools/ai_revision_guard.js +115 -0
- package/dist/tools/ai_revision_guard.js.map +1 -0
- package/dist/tools/apply_plan.d.ts.map +1 -1
- package/dist/tools/apply_plan.js +55 -5
- package/dist/tools/apply_plan.js.map +1 -1
- package/dist/tools/clear_formatting.d.ts +2 -1
- package/dist/tools/clear_formatting.d.ts.map +1 -1
- package/dist/tools/clear_formatting.js +84 -61
- package/dist/tools/clear_formatting.js.map +1 -1
- package/dist/tools/compare_documents.d.ts.map +1 -1
- package/dist/tools/compare_documents.js +11 -2
- package/dist/tools/compare_documents.js.map +1 -1
- package/dist/tools/convert_to_odt.d.ts +20 -0
- package/dist/tools/convert_to_odt.d.ts.map +1 -0
- package/dist/tools/convert_to_odt.js +74 -0
- package/dist/tools/convert_to_odt.js.map +1 -0
- package/dist/tools/delete_comment.d.ts.map +1 -1
- package/dist/tools/delete_comment.js +12 -1
- package/dist/tools/delete_comment.js.map +1 -1
- package/dist/tools/delete_footnote.d.ts.map +1 -1
- package/dist/tools/delete_footnote.js +12 -1
- package/dist/tools/delete_footnote.js.map +1 -1
- package/dist/tools/export.d.ts +20 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +96 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/format_layout.d.ts.map +1 -1
- package/dist/tools/format_layout.js +21 -3
- package/dist/tools/format_layout.js.map +1 -1
- package/dist/tools/get_comments.d.ts.map +1 -1
- package/dist/tools/get_comments.js +9 -0
- package/dist/tools/get_comments.js.map +1 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +4 -115
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/grep_core.d.ts +49 -0
- package/dist/tools/grep_core.d.ts.map +1 -0
- package/dist/tools/grep_core.js +126 -0
- package/dist/tools/grep_core.js.map +1 -0
- package/dist/tools/insert_paragraph.d.ts +7 -1
- package/dist/tools/insert_paragraph.d.ts.map +1 -1
- package/dist/tools/insert_paragraph.js +39 -27
- package/dist/tools/insert_paragraph.js.map +1 -1
- package/dist/tools/odf/add_comment.d.ts +21 -0
- package/dist/tools/odf/add_comment.d.ts.map +1 -0
- package/dist/tools/odf/add_comment.js +64 -0
- package/dist/tools/odf/add_comment.js.map +1 -0
- package/dist/tools/odf/close_file.d.ts +4 -0
- package/dist/tools/odf/close_file.d.ts.map +1 -0
- package/dist/tools/odf/close_file.js +16 -0
- package/dist/tools/odf/close_file.js.map +1 -0
- package/dist/tools/odf/compare_documents.d.ts +39 -0
- package/dist/tools/odf/compare_documents.d.ts.map +1 -0
- package/dist/tools/odf/compare_documents.js +156 -0
- package/dist/tools/odf/compare_documents.js.map +1 -0
- package/dist/tools/odf/get_comments.d.ts +11 -0
- package/dist/tools/odf/get_comments.d.ts.map +1 -0
- package/dist/tools/odf/get_comments.js +32 -0
- package/dist/tools/odf/get_comments.js.map +1 -0
- package/dist/tools/odf/get_file_status.d.ts +4 -0
- package/dist/tools/odf/get_file_status.d.ts.map +1 -0
- package/dist/tools/odf/get_file_status.js +28 -0
- package/dist/tools/odf/get_file_status.js.map +1 -0
- package/dist/tools/odf/grep.d.ts +19 -0
- package/dist/tools/odf/grep.d.ts.map +1 -0
- package/dist/tools/odf/grep.js +81 -0
- package/dist/tools/odf/grep.js.map +1 -0
- package/dist/tools/odf/insert_paragraph.d.ts +19 -0
- package/dist/tools/odf/insert_paragraph.d.ts.map +1 -0
- package/dist/tools/odf/insert_paragraph.js +50 -0
- package/dist/tools/odf/insert_paragraph.js.map +1 -0
- package/dist/tools/odf/read_file.d.ts +9 -0
- package/dist/tools/odf/read_file.d.ts.map +1 -0
- package/dist/tools/odf/read_file.js +124 -0
- package/dist/tools/odf/read_file.js.map +1 -0
- package/dist/tools/odf/replace_text.d.ts +9 -0
- package/dist/tools/odf/replace_text.d.ts.map +1 -0
- package/dist/tools/odf/replace_text.js +41 -0
- package/dist/tools/odf/replace_text.js.map +1 -0
- package/dist/tools/odf/save.d.ts +7 -0
- package/dist/tools/odf/save.d.ts.map +1 -0
- package/dist/tools/odf/save.js +48 -0
- package/dist/tools/odf/save.js.map +1 -0
- package/dist/tools/open_document.d.ts.map +1 -1
- package/dist/tools/open_document.js +36 -4
- package/dist/tools/open_document.js.map +1 -1
- package/dist/tools/path_policy.d.ts +9 -0
- package/dist/tools/path_policy.d.ts.map +1 -1
- package/dist/tools/path_policy.js +66 -5
- package/dist/tools/path_policy.js.map +1 -1
- package/dist/tools/provider_guard.d.ts +1 -0
- package/dist/tools/provider_guard.d.ts.map +1 -1
- package/dist/tools/provider_guard.js +10 -0
- package/dist/tools/provider_guard.js.map +1 -1
- package/dist/tools/read_file.d.ts +3 -0
- package/dist/tools/read_file.d.ts.map +1 -1
- package/dist/tools/read_file.js +384 -52
- package/dist/tools/read_file.js.map +1 -1
- package/dist/tools/replace_text.d.ts +7 -1
- package/dist/tools/replace_text.d.ts.map +1 -1
- package/dist/tools/replace_text.js +74 -48
- package/dist/tools/replace_text.js.map +1 -1
- package/dist/tools/save.d.ts +19 -0
- package/dist/tools/save.d.ts.map +1 -1
- package/dist/tools/save.js +161 -13
- package/dist/tools/save.js.map +1 -1
- package/dist/tools/session_resolution.d.ts +25 -1
- package/dist/tools/session_resolution.d.ts.map +1 -1
- package/dist/tools/session_resolution.js +179 -2
- package/dist/tools/session_resolution.js.map +1 -1
- package/dist/tools/tag_parser.d.ts.map +1 -1
- package/dist/tools/tag_parser.js +69 -14
- package/dist/tools/tag_parser.js.map +1 -1
- package/dist/tools/update_footnote.d.ts.map +1 -1
- package/dist/tools/update_footnote.js +20 -7
- package/dist/tools/update_footnote.js.map +1 -1
- package/package.json +21 -16
package/dist/tools/read_file.js
CHANGED
|
@@ -1,27 +1,206 @@
|
|
|
1
1
|
import { errorMessage } from "../error_utils.js";
|
|
2
2
|
import { err, ok } from './types.js';
|
|
3
|
-
import { OOXML, W, renderToon, formatToonDataLine, collectTableMarkerInfo, formatTableMarker } from '@usejunior/docx-core';
|
|
3
|
+
import { OOXML, W, INLINE_COMMENT_MARKER_RUNTIME, renderToon, renderToonWithCommentEndnotes, formatToonDataLine, formatToonCommentLines, formatToonCommentsEndnotesBlock, collectInlineCommentMarkers, collectTableMarkerInfo, formatTableMarker, computeContentFingerprint, getParagraphBookmarkId, getParagraphText, } from '@usejunior/docx-core';
|
|
4
4
|
import { READ_SIMPLE_PREVIEW_CHARS, previewText } from './preview.js';
|
|
5
5
|
import { mergeSessionResolutionMetadata, resolveSessionForTool } from './session_resolution.js';
|
|
6
6
|
import { estimateTokens, DEFAULT_CONTENT_TOKEN_BUDGET, buildPaginationMeta } from './pagination.js';
|
|
7
7
|
function getWAttr(el, localName) {
|
|
8
8
|
return el.getAttributeNS(OOXML.W_NS, localName) ?? el.getAttribute(`w:${localName}`) ?? el.getAttribute(localName);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
var FieldState;
|
|
11
|
+
(function (FieldState) {
|
|
12
|
+
FieldState[FieldState["OUTSIDE_FIELD"] = 0] = "OUTSIDE_FIELD";
|
|
13
|
+
FieldState[FieldState["IN_FIELD_CODE"] = 1] = "IN_FIELD_CODE";
|
|
14
|
+
FieldState[FieldState["IN_FIELD_RESULT"] = 2] = "IN_FIELD_RESULT";
|
|
15
|
+
})(FieldState || (FieldState = {}));
|
|
16
|
+
function escapeCommentSuffixText(text) {
|
|
17
|
+
return text
|
|
18
|
+
.replaceAll('\r\n', '\\n')
|
|
19
|
+
.replaceAll('\r', '\\r')
|
|
20
|
+
.replaceAll('\n', '\\n')
|
|
21
|
+
.replaceAll('|', '\\|');
|
|
22
|
+
}
|
|
23
|
+
function getCommentAnchorParagraphId(comment) {
|
|
24
|
+
return comment.anchoredParagraphId ?? comment.endParagraphId ?? null;
|
|
25
|
+
}
|
|
26
|
+
function getParagraphRunVisibleLengths(paragraphEl) {
|
|
27
|
+
const runLengths = [];
|
|
28
|
+
const runElements = Array.from(paragraphEl.getElementsByTagNameNS(OOXML.W_NS, W.r));
|
|
29
|
+
let fieldState = FieldState.OUTSIDE_FIELD;
|
|
30
|
+
for (const runEl of runElements) {
|
|
31
|
+
let visibleLength = 0;
|
|
32
|
+
for (const child of Array.from(runEl.childNodes)) {
|
|
33
|
+
if (child.nodeType !== 1)
|
|
34
|
+
continue;
|
|
35
|
+
const el = child;
|
|
36
|
+
if (el.namespaceURI !== OOXML.W_NS)
|
|
37
|
+
continue;
|
|
38
|
+
if (el.localName === W.fldChar) {
|
|
39
|
+
const type = getWAttr(el, 'fldCharType') ?? '';
|
|
40
|
+
if (type === 'begin')
|
|
41
|
+
fieldState = FieldState.IN_FIELD_CODE;
|
|
42
|
+
else if (type === 'separate')
|
|
43
|
+
fieldState = FieldState.IN_FIELD_RESULT;
|
|
44
|
+
else if (type === 'end')
|
|
45
|
+
fieldState = FieldState.OUTSIDE_FIELD;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (fieldState === FieldState.IN_FIELD_CODE)
|
|
49
|
+
continue;
|
|
50
|
+
if (el.localName === W.t) {
|
|
51
|
+
visibleLength += (el.textContent ?? '').length;
|
|
52
|
+
}
|
|
53
|
+
else if (el.localName === W.tab || el.localName === W.br) {
|
|
54
|
+
visibleLength += 1;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
runLengths.push(visibleLength);
|
|
58
|
+
}
|
|
59
|
+
return runLengths;
|
|
60
|
+
}
|
|
61
|
+
function resolveCommentVisibleOffset(runVisibleLengths, runIndex, charOffset) {
|
|
62
|
+
if (runIndex == null || charOffset == null)
|
|
63
|
+
return undefined;
|
|
64
|
+
if (runIndex < 0 || runIndex >= runVisibleLengths.length)
|
|
65
|
+
return undefined;
|
|
66
|
+
const runVisibleLength = runVisibleLengths[runIndex];
|
|
67
|
+
if (runVisibleLength == null || charOffset < 0 || charOffset > runVisibleLength) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
let offset = charOffset;
|
|
71
|
+
for (let index = 0; index < runIndex; index++) {
|
|
72
|
+
offset += runVisibleLengths[index] ?? 0;
|
|
73
|
+
}
|
|
74
|
+
return offset;
|
|
75
|
+
}
|
|
76
|
+
function buildInlineCommentMarkerRuntime(comment, paragraphElementsById, paragraphRunLengthsById) {
|
|
77
|
+
if (!comment.anchoredParagraphId ||
|
|
78
|
+
!comment.endParagraphId ||
|
|
79
|
+
comment.startRunIndex == null ||
|
|
80
|
+
comment.startCharOffset == null ||
|
|
81
|
+
comment.endRunIndex == null ||
|
|
82
|
+
comment.endCharOffset == null) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
const getRunLengths = (paragraphId) => {
|
|
86
|
+
const cached = paragraphRunLengthsById.get(paragraphId);
|
|
87
|
+
if (cached)
|
|
88
|
+
return cached;
|
|
89
|
+
const paragraphEl = paragraphElementsById.get(paragraphId);
|
|
90
|
+
if (!paragraphEl)
|
|
91
|
+
return undefined;
|
|
92
|
+
const runLengths = getParagraphRunVisibleLengths(paragraphEl);
|
|
93
|
+
paragraphRunLengthsById.set(paragraphId, runLengths);
|
|
94
|
+
return runLengths;
|
|
95
|
+
};
|
|
96
|
+
const startRunLengths = getRunLengths(comment.anchoredParagraphId);
|
|
97
|
+
const endRunLengths = getRunLengths(comment.endParagraphId);
|
|
98
|
+
if (!startRunLengths || !endRunLengths)
|
|
99
|
+
return undefined;
|
|
100
|
+
const startVisibleOffset = resolveCommentVisibleOffset(startRunLengths, comment.startRunIndex, comment.startCharOffset);
|
|
101
|
+
const endVisibleOffset = resolveCommentVisibleOffset(endRunLengths, comment.endRunIndex, comment.endCharOffset);
|
|
102
|
+
if (startVisibleOffset == null || endVisibleOffset == null)
|
|
103
|
+
return undefined;
|
|
104
|
+
const endParagraphVisibleLength = endRunLengths.reduce((sum, length) => sum + length, 0);
|
|
105
|
+
return {
|
|
106
|
+
startVisibleOffset,
|
|
107
|
+
endVisibleOffset,
|
|
108
|
+
suppressInlineMarkers: comment.anchoredParagraphId === comment.endParagraphId &&
|
|
109
|
+
startVisibleOffset === 0 &&
|
|
110
|
+
endVisibleOffset === endParagraphVisibleLength,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function mapDocumentViewComment(comment, options) {
|
|
114
|
+
const mapped = {
|
|
115
|
+
id: comment.id,
|
|
116
|
+
author: comment.author,
|
|
117
|
+
date: comment.date || null,
|
|
118
|
+
initials: comment.initials,
|
|
119
|
+
text: comment.text,
|
|
120
|
+
replies: comment.replies.map((reply) => mapDocumentViewComment(reply, options)),
|
|
121
|
+
};
|
|
122
|
+
if (options?.includeRange && comment.anchoredParagraphId && comment.endParagraphId) {
|
|
123
|
+
mapped.range = {
|
|
124
|
+
startParagraphId: comment.anchoredParagraphId,
|
|
125
|
+
endParagraphId: comment.endParagraphId,
|
|
126
|
+
startRunIndex: comment.startRunIndex,
|
|
127
|
+
startCharOffset: comment.startCharOffset,
|
|
128
|
+
endRunIndex: comment.endRunIndex,
|
|
129
|
+
endCharOffset: comment.endCharOffset,
|
|
130
|
+
};
|
|
131
|
+
const runtime = options.paragraphElementsById && options.paragraphRunLengthsById
|
|
132
|
+
? buildInlineCommentMarkerRuntime(comment, options.paragraphElementsById, options.paragraphRunLengthsById)
|
|
133
|
+
: undefined;
|
|
134
|
+
if (runtime) {
|
|
135
|
+
Object.defineProperty(mapped, INLINE_COMMENT_MARKER_RUNTIME, {
|
|
136
|
+
value: runtime,
|
|
137
|
+
enumerable: false,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return mapped;
|
|
142
|
+
}
|
|
143
|
+
function attachParagraphComments(nodes, comments, options) {
|
|
144
|
+
const commentsByParagraph = new Map();
|
|
145
|
+
const paragraphRunLengthsById = new Map();
|
|
146
|
+
for (const comment of comments) {
|
|
147
|
+
const paragraphId = getCommentAnchorParagraphId(comment);
|
|
148
|
+
if (!paragraphId)
|
|
17
149
|
continue;
|
|
18
|
-
const
|
|
19
|
-
|
|
150
|
+
const rootComments = commentsByParagraph.get(paragraphId) ?? [];
|
|
151
|
+
rootComments.push(mapDocumentViewComment(comment, {
|
|
152
|
+
includeRange: options?.includeInlineMarkers,
|
|
153
|
+
paragraphElementsById: options?.paragraphElementsById,
|
|
154
|
+
paragraphRunLengthsById,
|
|
155
|
+
}));
|
|
156
|
+
commentsByParagraph.set(paragraphId, rootComments);
|
|
157
|
+
}
|
|
158
|
+
return nodes.map((node) => {
|
|
159
|
+
const nodeComments = commentsByParagraph.get(node.id);
|
|
160
|
+
return nodeComments && nodeComments.length > 0
|
|
161
|
+
? { ...node, comments: nodeComments }
|
|
162
|
+
: node;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
function attachParagraphFootnotes(nodes, footnotes) {
|
|
166
|
+
const footnotesByParagraph = new Map();
|
|
167
|
+
for (const footnote of footnotes) {
|
|
168
|
+
// Eligibility (#158): bootstrap scaffolding (display_number 0 / empty
|
|
169
|
+
// body) and orphaned notes (no anchored paragraph) never attach inline.
|
|
170
|
+
// get_footnotes stays the authoritative whole-document enumeration that
|
|
171
|
+
// still returns them.
|
|
172
|
+
if (footnote.displayNumber <= 0 || footnote.text.trim().length === 0)
|
|
173
|
+
continue;
|
|
174
|
+
if (!footnote.anchoredParagraphId)
|
|
20
175
|
continue;
|
|
21
|
-
const
|
|
22
|
-
|
|
176
|
+
const anchored = footnotesByParagraph.get(footnote.anchoredParagraphId) ?? [];
|
|
177
|
+
anchored.push({ id: footnote.id, display_number: footnote.displayNumber, text: footnote.text });
|
|
178
|
+
footnotesByParagraph.set(footnote.anchoredParagraphId, anchored);
|
|
23
179
|
}
|
|
24
|
-
return
|
|
180
|
+
return nodes.map((node) => {
|
|
181
|
+
const nodeFootnotes = footnotesByParagraph.get(String(node.id));
|
|
182
|
+
return nodeFootnotes && nodeFootnotes.length > 0
|
|
183
|
+
? { ...node, footnotes: nodeFootnotes }
|
|
184
|
+
: node;
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
function collectSimpleCommentSuffixes(comments, parentId) {
|
|
188
|
+
const suffixes = [];
|
|
189
|
+
for (const comment of comments) {
|
|
190
|
+
const text = escapeCommentSuffixText(comment.text);
|
|
191
|
+
suffixes.push(parentId == null
|
|
192
|
+
? `[c${comment.id}: ${text}]`
|
|
193
|
+
: `[c${comment.id}->c${parentId}: ${text}]`);
|
|
194
|
+
suffixes.push(...collectSimpleCommentSuffixes(comment.replies, comment.id));
|
|
195
|
+
}
|
|
196
|
+
return suffixes;
|
|
197
|
+
}
|
|
198
|
+
function formatSimpleTextLine(node) {
|
|
199
|
+
const preview = previewText(node.clean_text, READ_SIMPLE_PREVIEW_CHARS);
|
|
200
|
+
const commentSuffixes = node.comments ? collectSimpleCommentSuffixes(node.comments) : [];
|
|
201
|
+
return commentSuffixes.length > 0
|
|
202
|
+
? `${preview} ${commentSuffixes.join(' ')}`
|
|
203
|
+
: preview;
|
|
25
204
|
}
|
|
26
205
|
export async function readFile(manager, params) {
|
|
27
206
|
try {
|
|
@@ -33,6 +212,13 @@ export async function readFile(manager, params) {
|
|
|
33
212
|
if (format !== 'toon' && format !== 'json' && format !== 'simple') {
|
|
34
213
|
return err('INVALID_FORMAT', `Invalid format: ${params.format}`, "Use 'toon' (default), 'json', or 'simple'.");
|
|
35
214
|
}
|
|
215
|
+
const commentRendering = (params.comment_rendering ?? 'paragraph_notes').toLowerCase();
|
|
216
|
+
if (commentRendering !== 'none' &&
|
|
217
|
+
commentRendering !== 'paragraph_notes' &&
|
|
218
|
+
commentRendering !== 'endnotes' &&
|
|
219
|
+
commentRendering !== 'inline_markers') {
|
|
220
|
+
return err('INVALID_COMMENT_RENDERING', `Invalid comment_rendering: ${params.comment_rendering}`, "Use 'paragraph_notes' (default), 'inline_markers', 'endnotes', or 'none'.");
|
|
221
|
+
}
|
|
36
222
|
const showFormatting = params.show_formatting ?? true;
|
|
37
223
|
const { nodes } = session.doc.buildDocumentView({
|
|
38
224
|
includeSemanticTags: showFormatting,
|
|
@@ -60,54 +246,129 @@ export async function readFile(manager, params) {
|
|
|
60
246
|
const endIdx = hasExplicitLimit ? Math.min(totalParagraphs, startIdx + params.limit) : totalParagraphs;
|
|
61
247
|
filtered = nodes.slice(startIdx, endIdx);
|
|
62
248
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
249
|
+
// Build a single paragraph-element index up front. All downstream enrichment
|
|
250
|
+
// passes (comment inline markers, content_fingerprint) consult this map
|
|
251
|
+
// instead of calling getParagraphElementById() per node, which would be
|
|
252
|
+
// a linear scan and turn the read into O(N^2) on large documents.
|
|
253
|
+
const paragraphElementsById = (() => {
|
|
254
|
+
const map = new Map();
|
|
255
|
+
for (const p of session.doc.getParagraphs()) {
|
|
256
|
+
const id = getParagraphBookmarkId(p);
|
|
257
|
+
if (id)
|
|
258
|
+
map.set(id, p);
|
|
259
|
+
}
|
|
260
|
+
return map;
|
|
261
|
+
})();
|
|
262
|
+
// Footnote [^N] markers: the document view already injects them into
|
|
263
|
+
// tagged_text/text at the reference's visible offset AND exposes the same
|
|
264
|
+
// derivation as node.footnote_refs — one fldChar walk, one numbering
|
|
265
|
+
// authority, so the fields cannot disagree about which footnotes exist
|
|
266
|
+
// (#382's failure shape). @see #393. Only clean_text is enriched here —
|
|
267
|
+
// the view deliberately keeps it marker-free for core consumers (edit
|
|
268
|
+
// matching, signature-cluster detection), so the suffix is a read_file
|
|
269
|
+
// output concern. Appending to all three fields doubled every marker.
|
|
270
|
+
// @see #382
|
|
271
|
+
let enriched = filtered.map((node) => {
|
|
272
|
+
if (!node.footnote_refs || node.footnote_refs.length === 0)
|
|
273
|
+
return node;
|
|
274
|
+
const markerSuffix = node.footnote_refs.map(({ display }) => `[^${display}]`).join('');
|
|
275
|
+
return {
|
|
276
|
+
...node,
|
|
277
|
+
clean_text: `${node.clean_text}${markerSuffix}`,
|
|
278
|
+
};
|
|
279
|
+
});
|
|
280
|
+
// When comment loading fails after add_comment ran (e.g., a third-party docx ships a
|
|
281
|
+
// comments.xml lacking xmlns:w14 and our writer wrote w14:paraId into it — see #154),
|
|
282
|
+
// surface the cause via metadata. We still don't fail the read so the body content
|
|
283
|
+
// remains consumable, but the caller (and our smoke tests) can detect the silent drop.
|
|
284
|
+
let commentLoadError = null;
|
|
285
|
+
if (commentRendering !== 'none') {
|
|
286
|
+
try {
|
|
287
|
+
const comments = await session.doc.getComments();
|
|
288
|
+
// Inline-marker rendering also needs paragraph elements for comment anchor
|
|
289
|
+
// paragraphs that may not appear in `enriched` (e.g., when a comment range
|
|
290
|
+
// spans into a paragraph outside the visible window). The shared index covers
|
|
291
|
+
// those because we built it from the full document above.
|
|
292
|
+
enriched = attachParagraphComments(enriched, comments, {
|
|
293
|
+
includeInlineMarkers: commentRendering === 'inline_markers',
|
|
294
|
+
paragraphElementsById: commentRendering === 'inline_markers' ? paragraphElementsById : undefined,
|
|
84
295
|
});
|
|
85
296
|
}
|
|
297
|
+
catch (e) {
|
|
298
|
+
commentLoadError = errorMessage(e);
|
|
299
|
+
}
|
|
86
300
|
}
|
|
87
|
-
|
|
88
|
-
|
|
301
|
+
// Optional content_fingerprint for JSON output. Computed from raw visible text
|
|
302
|
+
// (the same surface used by the _bk_* fallback seed), NOT from node.clean_text
|
|
303
|
+
// which has list labels stripped and footnote markers appended above.
|
|
304
|
+
let jsonNodes = enriched;
|
|
305
|
+
if (params.include_fingerprint && format === 'json') {
|
|
306
|
+
jsonNodes = enriched.map((node) => {
|
|
307
|
+
const paragraphEl = paragraphElementsById.get(node.id);
|
|
308
|
+
if (!paragraphEl)
|
|
309
|
+
return node;
|
|
310
|
+
const fingerprint = computeContentFingerprint(getParagraphText(paragraphEl));
|
|
311
|
+
return { ...node, content_fingerprint: fingerprint };
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
// Opt-in inline footnote bodies (#158), JSON-only in v1. Attachment runs
|
|
315
|
+
// on the already-windowed slice, so pagination semantics come for free:
|
|
316
|
+
// a footnote appears exactly on the page whose slice contains its anchor
|
|
317
|
+
// paragraph. Attaching BEFORE the budget renderers means the payload
|
|
318
|
+
// counts toward the same token budget as the rest of the node — no
|
|
319
|
+
// exemption. Mirrors the comment_load_error contract: a footnote part
|
|
320
|
+
// that fails to parse degrades to metadata, never fails the read.
|
|
321
|
+
let footnoteLoadError = null;
|
|
322
|
+
if (params.include_footnotes && format === 'json') {
|
|
323
|
+
try {
|
|
324
|
+
// ODT and Google Doc sessions have no footnote primitive; the flag
|
|
325
|
+
// no-ops there (same contract as include_fingerprint) instead of
|
|
326
|
+
// reporting a missing-method as a load error.
|
|
327
|
+
if (typeof session.doc.getFootnotes === 'function') {
|
|
328
|
+
const footnotes = await session.doc.getFootnotes();
|
|
329
|
+
jsonNodes = attachParagraphFootnotes(jsonNodes, footnotes);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch (e) {
|
|
333
|
+
footnoteLoadError = errorMessage(e);
|
|
334
|
+
}
|
|
89
335
|
}
|
|
90
336
|
let content;
|
|
91
337
|
let paragraphsReturned;
|
|
92
338
|
if (!budgetActive) {
|
|
93
339
|
// Explicit limit/offset/node_ids — render everything, no budget
|
|
94
340
|
if (format === 'json') {
|
|
95
|
-
content = JSON.stringify(
|
|
341
|
+
content = JSON.stringify(jsonNodes, null, 2);
|
|
96
342
|
}
|
|
97
343
|
else if (format === 'simple') {
|
|
98
344
|
content = renderSimpleWithTableMarkers(enriched);
|
|
99
345
|
}
|
|
100
346
|
else {
|
|
101
|
-
content =
|
|
347
|
+
content = commentRendering === 'endnotes'
|
|
348
|
+
? renderToonWithCommentEndnotes(enriched)
|
|
349
|
+
: renderToon(enriched);
|
|
102
350
|
}
|
|
103
351
|
paragraphsReturned = enriched.length;
|
|
104
352
|
}
|
|
105
353
|
else {
|
|
106
354
|
// One-pass token-budget accumulation
|
|
107
355
|
const budget = DEFAULT_CONTENT_TOKEN_BUDGET;
|
|
108
|
-
const result =
|
|
356
|
+
const result = format === 'json'
|
|
357
|
+
? renderJsonWithBudget(jsonNodes, budget)
|
|
358
|
+
: renderWithBudget(enriched, format, budget, commentRendering);
|
|
109
359
|
content = result.content;
|
|
110
360
|
paragraphsReturned = result.count;
|
|
361
|
+
const paginationMeta = buildPaginationMeta(totalParagraphs, paragraphsReturned, startIdx);
|
|
362
|
+
return ok(mergeSessionResolutionMetadata({
|
|
363
|
+
file_path: manager.normalizePath(session.originalPath),
|
|
364
|
+
content,
|
|
365
|
+
total_paragraphs: totalParagraphs,
|
|
366
|
+
paragraphs_returned: paragraphsReturned,
|
|
367
|
+
...(result.warnings ? { warnings: result.warnings } : {}),
|
|
368
|
+
...paginationMeta,
|
|
369
|
+
...(commentLoadError != null ? { comment_load_error: commentLoadError } : {}),
|
|
370
|
+
...(footnoteLoadError != null ? { footnote_load_error: footnoteLoadError } : {}),
|
|
371
|
+
}, metadata));
|
|
111
372
|
}
|
|
112
373
|
const paginationMeta = buildPaginationMeta(totalParagraphs, paragraphsReturned, startIdx);
|
|
113
374
|
return ok(mergeSessionResolutionMetadata({
|
|
@@ -116,6 +377,8 @@ export async function readFile(manager, params) {
|
|
|
116
377
|
total_paragraphs: totalParagraphs,
|
|
117
378
|
paragraphs_returned: paragraphsReturned,
|
|
118
379
|
...paginationMeta,
|
|
380
|
+
...(commentLoadError != null ? { comment_load_error: commentLoadError } : {}),
|
|
381
|
+
...(footnoteLoadError != null ? { footnote_load_error: footnoteLoadError } : {}),
|
|
119
382
|
}, metadata));
|
|
120
383
|
}
|
|
121
384
|
catch (e) {
|
|
@@ -123,20 +386,33 @@ export async function readFile(manager, params) {
|
|
|
123
386
|
return err('READ_ERROR', msg, 'Check session status and try again.');
|
|
124
387
|
}
|
|
125
388
|
}
|
|
126
|
-
|
|
389
|
+
const BUDGET_EXCEEDED_BY_FIRST_NODE_WARNING = 'budget_exceeded_by_first_node';
|
|
390
|
+
function firstNodeOverflowWarnings(firstNodeOverflow) {
|
|
391
|
+
return firstNodeOverflow ? [BUDGET_EXCEEDED_BY_FIRST_NODE_WARNING] : undefined;
|
|
392
|
+
}
|
|
393
|
+
function renderWithBudget(enriched, format, budget, commentRendering) {
|
|
127
394
|
if (format === 'json') {
|
|
128
395
|
return renderJsonWithBudget(enriched, budget);
|
|
129
396
|
}
|
|
130
397
|
if (format === 'simple') {
|
|
131
398
|
return renderSimpleWithBudget(enriched, budget);
|
|
132
399
|
}
|
|
133
|
-
return renderToonWithBudget(enriched, budget);
|
|
400
|
+
return renderToonWithBudget(enriched, budget, commentRendering);
|
|
134
401
|
}
|
|
135
|
-
function renderToonWithBudget(enriched, budget) {
|
|
402
|
+
function renderToonWithBudget(enriched, budget, commentRendering) {
|
|
136
403
|
const headerLine = '#SCHEMA id | list_label | header | style | text';
|
|
137
404
|
let accumulated = headerLine;
|
|
138
405
|
let count = 0;
|
|
139
406
|
let currentTableIndex = null;
|
|
407
|
+
const includedNodes = [];
|
|
408
|
+
const useInlineMarkers = commentRendering === 'inline_markers';
|
|
409
|
+
const commentMarkers = useInlineMarkers ? collectInlineCommentMarkers(enriched) : undefined;
|
|
410
|
+
// Captured the moment node 0 is admitted, BEFORE post-loop closures
|
|
411
|
+
// (#END_TABLE, endnotes block) inflate `accumulated`. Computing this
|
|
412
|
+
// after the loop produces false positives when row 1 of a table fits but
|
|
413
|
+
// we break at row 2 — the closing #END_TABLE bumps the final size over
|
|
414
|
+
// budget, but node 1 itself was fine.
|
|
415
|
+
let firstNodeOverflow = false;
|
|
140
416
|
// Pre-scan: collect table marker info for #TABLE lines
|
|
141
417
|
const tableInfo = collectTableMarkerInfo(enriched);
|
|
142
418
|
for (const node of enriched) {
|
|
@@ -160,8 +436,24 @@ function renderToonWithBudget(enriched, budget) {
|
|
|
160
436
|
}
|
|
161
437
|
currentTableIndex = nodeTableIndex;
|
|
162
438
|
}
|
|
163
|
-
const dataLine =
|
|
164
|
-
|
|
439
|
+
const dataLine = useInlineMarkers
|
|
440
|
+
? formatToonDataLine(node, { commentMarkers })
|
|
441
|
+
: formatToonDataLine(node);
|
|
442
|
+
const commentLines = commentRendering === 'paragraph_notes' || useInlineMarkers
|
|
443
|
+
? formatToonCommentLines(node)
|
|
444
|
+
: [];
|
|
445
|
+
const nodeLines = [dataLine, ...commentLines].join('\n');
|
|
446
|
+
const candidateBase = accumulated + '\n' + nodeLines;
|
|
447
|
+
let candidate = candidateBase;
|
|
448
|
+
if (commentRendering === 'endnotes') {
|
|
449
|
+
if (nodeTableIndex !== null) {
|
|
450
|
+
candidate += '\n#END_TABLE';
|
|
451
|
+
}
|
|
452
|
+
const endnotesBlock = formatToonCommentsEndnotesBlock([...includedNodes, node]);
|
|
453
|
+
if (endnotesBlock.length > 0) {
|
|
454
|
+
candidate += '\n' + endnotesBlock.join('\n');
|
|
455
|
+
}
|
|
456
|
+
}
|
|
165
457
|
if (count > 0 && estimateTokens(candidate) > budget) {
|
|
166
458
|
// Close table before breaking
|
|
167
459
|
if (currentTableIndex !== null) {
|
|
@@ -169,14 +461,32 @@ function renderToonWithBudget(enriched, budget) {
|
|
|
169
461
|
}
|
|
170
462
|
break;
|
|
171
463
|
}
|
|
172
|
-
accumulated =
|
|
464
|
+
accumulated = candidateBase;
|
|
465
|
+
if (count === 0 && estimateTokens(candidate) > budget) {
|
|
466
|
+
// Use `candidate` (not `accumulated`) so endnotes-mode counts the
|
|
467
|
+
// endnotes block that's already part of node 1's first-page payload.
|
|
468
|
+
// This is substantive content, unlike the post-loop `#END_TABLE`
|
|
469
|
+
// structural closure that we deliberately exclude.
|
|
470
|
+
firstNodeOverflow = true;
|
|
471
|
+
}
|
|
472
|
+
includedNodes.push(node);
|
|
173
473
|
count++;
|
|
174
474
|
}
|
|
175
475
|
// Close any open table at end of loop
|
|
176
476
|
if (currentTableIndex !== null) {
|
|
177
477
|
accumulated += '\n#END_TABLE';
|
|
178
478
|
}
|
|
179
|
-
|
|
479
|
+
if (commentRendering === 'endnotes') {
|
|
480
|
+
const endnotesBlock = formatToonCommentsEndnotesBlock(includedNodes);
|
|
481
|
+
if (endnotesBlock.length > 0) {
|
|
482
|
+
accumulated += '\n' + endnotesBlock.join('\n');
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
return {
|
|
486
|
+
content: accumulated,
|
|
487
|
+
count,
|
|
488
|
+
warnings: firstNodeOverflowWarnings(firstNodeOverflow),
|
|
489
|
+
};
|
|
180
490
|
}
|
|
181
491
|
function renderSimpleWithTableMarkers(enriched) {
|
|
182
492
|
const lines = ['#TOON id | text'];
|
|
@@ -195,8 +505,7 @@ function renderSimpleWithTableMarkers(enriched) {
|
|
|
195
505
|
lines.push(formatTableMarker(info));
|
|
196
506
|
currentTableIndex = nodeTableIndex;
|
|
197
507
|
}
|
|
198
|
-
|
|
199
|
-
lines.push(`${n.id} | ${text}`);
|
|
508
|
+
lines.push(`${n.id} | ${formatSimpleTextLine(n)}`);
|
|
200
509
|
}
|
|
201
510
|
if (currentTableIndex !== null) {
|
|
202
511
|
lines.push('#END_TABLE');
|
|
@@ -208,6 +517,8 @@ function renderSimpleWithBudget(enriched, budget) {
|
|
|
208
517
|
let accumulated = headerLine;
|
|
209
518
|
let count = 0;
|
|
210
519
|
let currentTableIndex = null;
|
|
520
|
+
// Captured at admission of node 0; see comment in renderToonWithBudget.
|
|
521
|
+
let firstNodeOverflow = false;
|
|
211
522
|
const tableInfo = collectTableMarkerInfo(enriched);
|
|
212
523
|
for (const n of enriched) {
|
|
213
524
|
const tc = n.table_context;
|
|
@@ -227,8 +538,7 @@ function renderSimpleWithBudget(enriched, budget) {
|
|
|
227
538
|
}
|
|
228
539
|
currentTableIndex = nodeTableIndex;
|
|
229
540
|
}
|
|
230
|
-
const
|
|
231
|
-
const dataLine = `${n.id} | ${text}`;
|
|
541
|
+
const dataLine = `${n.id} | ${formatSimpleTextLine(n)}`;
|
|
232
542
|
const candidate = accumulated + '\n' + dataLine;
|
|
233
543
|
if (count > 0 && estimateTokens(candidate) > budget) {
|
|
234
544
|
if (currentTableIndex !== null) {
|
|
@@ -237,17 +547,26 @@ function renderSimpleWithBudget(enriched, budget) {
|
|
|
237
547
|
break;
|
|
238
548
|
}
|
|
239
549
|
accumulated = candidate;
|
|
550
|
+
if (count === 0 && estimateTokens(accumulated) > budget) {
|
|
551
|
+
firstNodeOverflow = true;
|
|
552
|
+
}
|
|
240
553
|
count++;
|
|
241
554
|
}
|
|
242
555
|
if (currentTableIndex !== null) {
|
|
243
556
|
accumulated += '\n#END_TABLE';
|
|
244
557
|
}
|
|
245
|
-
return {
|
|
558
|
+
return {
|
|
559
|
+
content: accumulated,
|
|
560
|
+
count,
|
|
561
|
+
warnings: firstNodeOverflowWarnings(firstNodeOverflow),
|
|
562
|
+
};
|
|
246
563
|
}
|
|
247
564
|
function renderJsonWithBudget(enriched, budget) {
|
|
248
565
|
const items = [];
|
|
249
566
|
let totalChars = 2; // for "[\n" and "]"
|
|
250
567
|
let count = 0;
|
|
568
|
+
// Captured at admission of node 0; see comment in renderToonWithBudget.
|
|
569
|
+
let firstNodeOverflow = false;
|
|
251
570
|
for (const node of enriched) {
|
|
252
571
|
const serialized = JSON.stringify(node, null, 2);
|
|
253
572
|
const overhead = items.length > 0 ? 2 : 0; // ",\n" between items
|
|
@@ -256,9 +575,22 @@ function renderJsonWithBudget(enriched, budget) {
|
|
|
256
575
|
break;
|
|
257
576
|
items.push(serialized);
|
|
258
577
|
totalChars = candidateChars;
|
|
578
|
+
if (count === 0) {
|
|
579
|
+
// Final render is `[\n${items.join(',\n')}\n]` — 4 chars of framing,
|
|
580
|
+
// not 2. The pagination break check uses the same approximation as
|
|
581
|
+
// the loop, but the warning needs to reflect the true final length.
|
|
582
|
+
const finalChars = candidateChars + 2; // closing `\n]`
|
|
583
|
+
if (Math.ceil(finalChars / 4) > budget) {
|
|
584
|
+
firstNodeOverflow = true;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
259
587
|
count++;
|
|
260
588
|
}
|
|
261
589
|
const content = '[\n' + items.join(',\n') + '\n]';
|
|
262
|
-
return {
|
|
590
|
+
return {
|
|
591
|
+
content,
|
|
592
|
+
count,
|
|
593
|
+
warnings: firstNodeOverflowWarnings(firstNodeOverflow),
|
|
594
|
+
};
|
|
263
595
|
}
|
|
264
596
|
//# sourceMappingURL=read_file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read_file.js","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"read_file.js","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAqB,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,KAAK,EACL,CAAC,EACD,6BAA6B,EAC7B,UAAU,EACV,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,GAKjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEpG,SAAS,QAAQ,CAAC,EAAW,EAAE,SAAiB;IAC9C,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACrH,CAAC;AAED,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,6DAAiB,CAAA;IACjB,6DAAiB,CAAA;IACjB,iEAAmB,CAAA;AACrB,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;SACzB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;SACvB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAQD,SAAS,2BAA2B,CAAC,OAAgB;IACnD,OAAO,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;AACvE,CAAC;AAED,SAAS,6BAA6B,CAAC,WAAoB;IACzD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,EAAE,GAAG,KAAgB,CAAC;YAC5B,IAAI,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI;gBAAE,SAAS;YAE7C,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,IAAI,KAAK,OAAO;oBAAE,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;qBACvD,IAAI,IAAI,KAAK,UAAU;oBAAE,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC;qBACjE,IAAI,IAAI,KAAK,KAAK;oBAAE,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;gBAC/D,SAAS;YACX,CAAC;YAED,IAAI,UAAU,KAAK,UAAU,CAAC,aAAa;gBAAE,SAAS;YAEtD,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,aAAa,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACjD,CAAC;iBAAM,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC3D,aAAa,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,2BAA2B,CAClC,iBAAoC,EACpC,QAA4B,EAC5B,UAA8B;IAE9B,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,iBAAiB,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE3E,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,gBAAgB,IAAI,IAAI,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,gBAAgB,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,GAAG,UAAU,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,+BAA+B,CACtC,OAAgB,EAChB,qBAAmD,EACnD,uBAA8C;IAE9C,IACE,CAAC,OAAO,CAAC,mBAAmB;QAC5B,CAAC,OAAO,CAAC,cAAc;QACvB,OAAO,CAAC,aAAa,IAAI,IAAI;QAC7B,OAAO,CAAC,eAAe,IAAI,IAAI;QAC/B,OAAO,CAAC,WAAW,IAAI,IAAI;QAC3B,OAAO,CAAC,aAAa,IAAI,IAAI,EAC7B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAwB,EAAE;QAClE,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,UAAU,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAC9D,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACrD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAEzD,MAAM,kBAAkB,GAAG,2BAA2B,CACpD,eAAe,EACf,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,eAAe,CACxB,CAAC;IACF,MAAM,gBAAgB,GAAG,2BAA2B,CAClD,aAAa,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,aAAa,CACtB,CAAC;IACF,IAAI,kBAAkB,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAE7E,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IACzF,OAAO;QACL,kBAAkB;QAClB,gBAAgB;QAChB,qBAAqB,EACnB,OAAO,CAAC,mBAAmB,KAAK,OAAO,CAAC,cAAc;YACtD,kBAAkB,KAAK,CAAC;YACxB,gBAAgB,KAAK,yBAAyB;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAgB,EAChB,OAIC;IAED,MAAM,MAAM,GAAwB;QAClC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAChF,CAAC;IAEF,IAAI,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QACnF,MAAM,CAAC,KAAK,GAAG;YACb,gBAAgB,EAAE,OAAO,CAAC,mBAAmB;YAC7C,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,uBAAuB;YAC9E,CAAC,CAAC,+BAA+B,CAC7B,OAAO,EACP,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,uBAAuB,CAChC;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,6BAA6B,EAAE;gBAC3D,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAkC,EAClC,QAA4B,EAC5B,OAAkG;IAElG,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAiC,CAAC;IACrE,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAChE,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;YAChD,YAAY,EAAE,OAAO,EAAE,oBAAoB;YAC3C,qBAAqB,EAAE,OAAO,EAAE,qBAAqB;YACrD,uBAAuB;SACxB,CAAC,CAAC,CAAC;QACJ,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE;YACrC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAID,SAAS,wBAAwB,CAC/B,KAAyC,EACzC,SAA8B;IAE9B,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA4B,CAAC;IACjE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,sBAAsB;QACtB,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/E,IAAI,CAAC,QAAQ,CAAC,mBAAmB;YAAE,SAAS;QAC5C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAChG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAC9C,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE;YACvC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAwC,EACxC,QAAiB;IAEjB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC5B,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG;YAC7B,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,MAAM,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAsB;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,GAAG,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3C,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAuB,EACvB,MAUC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAEvC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClE,OAAO,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,MAAM,CAAC,MAAM,EAAE,EAAE,4CAA4C,CAAC,CAAC;QACjH,CAAC;QAED,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QACvF,IACE,gBAAgB,KAAK,MAAM;YAC3B,gBAAgB,KAAK,iBAAiB;YACtC,gBAAgB,KAAK,UAAU;YAC/B,gBAAgB,KAAK,gBAAgB,EACrC,CAAC;YACD,OAAO,GAAG,CACR,2BAA2B,EAC3B,8BAA8B,MAAM,CAAC,iBAAiB,EAAE,EACxD,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QACtD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9C,mBAAmB,EAAE,cAAc;YACnC,cAAc;SACf,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;QAErC,yEAAyE;QACzE,MAAM,gBAAgB,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC1D,MAAM,iBAAiB,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC;QAE5E,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;YACtC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,MAAO,GAAG,CAAC;oBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAO,GAAG,CAAC,CAAC,CAAC;gBACnE,IAAI,MAAM,CAAC,MAAO,GAAG,CAAC;oBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAO,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;YACxG,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,6EAA6E;QAC7E,wEAAwE;QACxE,wEAAwE;QACxE,kEAAkE;QAClE,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;YACvC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC5C,MAAM,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,EAAE;oBAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,EAAE,CAAC;QAEL,qEAAqE;QACrE,0EAA0E;QAC1E,qEAAqE;QACrE,uEAAuE;QACvE,wEAAwE;QACxE,sEAAsE;QACtE,uEAAuE;QACvE,sEAAsE;QACtE,YAAY;QACZ,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxE,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,OAAO;gBACL,GAAG,IAAI;gBACP,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY,EAAE;aAChD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,qFAAqF;QACrF,sFAAsF;QACtF,mFAAmF;QACnF,uFAAuF;QACvF,IAAI,gBAAgB,GAAkB,IAAI,CAAC;QAC3C,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACjD,2EAA2E;gBAC3E,2EAA2E;gBAC3E,8EAA8E;gBAC9E,0DAA0D;gBAC1D,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE;oBACrD,oBAAoB,EAAE,gBAAgB,KAAK,gBAAgB;oBAC3D,qBAAqB,EACnB,gBAAgB,KAAK,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;iBAC5E,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,+EAA+E;QAC/E,sEAAsE;QACtE,IAAI,SAAS,GAAuC,QAAQ,CAAC;QAC7D,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpD,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,WAAW;oBAAE,OAAO,IAAI,CAAC;gBAC9B,MAAM,WAAW,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7E,OAAO,EAAE,GAAG,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,qEAAqE;QACrE,mEAAmE;QACnE,sEAAsE;QACtE,kEAAkE;QAClE,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAC5C,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,mEAAmE;gBACnE,iEAAiE;gBACjE,8CAA8C;gBAC9C,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;oBACnD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;oBACnD,SAAS,GAAG,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,iBAAiB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,OAAe,CAAC;QACpB,IAAI,kBAA0B,CAAC;QAE/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,gEAAgE;YAChE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,gBAAgB,KAAK,UAAU;oBACvC,CAAC,CAAC,6BAA6B,CAAC,QAAQ,CAAC;oBACzC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,MAAM,MAAM,GAAG,4BAA4B,CAAC;YAC5C,MAAM,MAAM,GACV,MAAM,KAAK,MAAM;gBACf,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC;gBACzC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACnE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC;YAElC,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAE1F,OAAO,EAAE,CAAC,8BAA8B,CAAC;gBACvC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;gBACtD,OAAO;gBACP,gBAAgB,EAAE,eAAe;gBACjC,mBAAmB,EAAE,kBAAkB;gBACvC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,GAAG,cAAc;gBACjB,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjF,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChB,CAAC;QAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAE1F,OAAO,EAAE,CAAC,8BAA8B,CAAC;YACvC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;YACtD,OAAO;YACP,gBAAgB,EAAE,eAAe;YACjC,mBAAmB,EAAE,kBAAkB;YACvC,GAAG,cAAc;YACjB,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,qCAAqC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAQD,MAAM,qCAAqC,GAAG,+BAA+B,CAAC;AAE9E,SAAS,yBAAyB,CAAC,iBAA0B;IAC3D,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAqC,EACrC,MAAc,EACd,MAAc,EACd,gBAAwB;IAExB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAqC,EACrC,MAAc,EACd,gBAAwB;IAExB,MAAM,UAAU,GAAG,iDAAiD,CAAC;IACrE,IAAI,WAAW,GAAG,UAAU,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,gBAAgB,KAAK,gBAAgB,CAAC;IAC/D,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,oEAAoE;IACpE,qEAAqE;IACrE,yEAAyE;IACzE,uEAAuE;IACvE,sCAAsC;IACtC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,uDAAuD;IACvD,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAC9B,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAElD,mEAAmE;QACnE,IAAI,iBAAiB,KAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;YACvE,WAAW,IAAI,cAAc,CAAC;YAC9B,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,iCAAiC;QACjC,IAAI,cAAc,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,mBAAmB,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;gBACxD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,MAAM,EAAE,CAAC;oBAC9D,MAAM;gBACR,CAAC;gBACD,WAAW,GAAG,mBAAmB,CAAC;YACpC,CAAC;YACD,iBAAiB,GAAG,cAAc,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB;YAC/B,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC;YAC9C,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,YAAY,GAChB,gBAAgB,KAAK,iBAAiB,IAAI,gBAAgB;YACxD,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;QACrD,IAAI,SAAS,GAAG,aAAa,CAAC;QAC9B,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,SAAS,IAAI,cAAc,CAAC;YAC9B,CAAC;YACD,MAAM,aAAa,GAAG,+BAA+B,CAAC,CAAC,GAAG,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;YAChF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,SAAS,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC;YACpD,8BAA8B;YAC9B,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,WAAW,IAAI,cAAc,CAAC;YAChC,CAAC;YACD,MAAM;QACR,CAAC;QACD,WAAW,GAAG,aAAa,CAAC;QAC5B,IAAI,KAAK,KAAK,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC;YACtD,kEAAkE;YAClE,qEAAqE;YACrE,iEAAiE;YACjE,mDAAmD;YACnD,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC;IACV,CAAC;IAED,sCAAsC;IACtC,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,WAAW,IAAI,cAAc,CAAC;IAChC,CAAC;IAED,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,+BAA+B,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,WAAW,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,KAAK;QACL,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAqC;IAErC,MAAM,KAAK,GAAa,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAE5C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC;QAC3B,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAElD,IAAI,iBAAiB,KAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,iBAAiB,GAAG,cAAc,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAqC,EACrC,MAAc;IAEd,MAAM,UAAU,GAAG,iBAAiB,CAAC;IACrC,IAAI,WAAW,GAAG,UAAU,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,wEAAwE;IACxE,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC;QAC3B,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAElD,IAAI,iBAAiB,KAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;YACvE,WAAW,IAAI,cAAc,CAAC;YAC9B,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,mBAAmB,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;gBACxD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,MAAM;oBAAE,MAAM;gBACrE,WAAW,GAAG,mBAAmB,CAAC;YACpC,CAAC;YACD,iBAAiB,GAAG,cAAc,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC;YACpD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,WAAW,IAAI,cAAc,CAAC;YAChC,CAAC;YACD,MAAM;QACR,CAAC;QACD,WAAW,GAAG,SAAS,CAAC;QACxB,IAAI,KAAK,KAAK,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE,CAAC;YACxD,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;IAED,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,WAAW,IAAI,cAAc,CAAC;IAChC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,KAAK;QACL,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA4C,EAC5C,MAAc;IAEd,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,oBAAoB;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,wEAAwE;IACxE,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;QACjE,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;QACjE,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,MAAM;YAAE,MAAM;QAC/D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,UAAU,GAAG,cAAc,CAAC;QAC5B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,qEAAqE;YACrE,mEAAmE;YACnE,oEAAoE;YACpE,MAAM,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,gBAAgB;YACvD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;gBACvC,iBAAiB,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAClD,OAAO;QACL,OAAO;QACP,KAAK;QACL,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,CAAC;KACvD,CAAC;AACJ,CAAC"}
|