@cplace/test-mcp-server 0.1.15 → 1.0.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/README.md +248 -113
- package/dist/conditional-registration.d.ts.map +1 -1
- package/dist/conditional-registration.js +19 -3
- package/dist/conditional-registration.js.map +1 -1
- package/dist/index.js +21 -93
- package/dist/index.js.map +1 -1
- package/dist/preference-file.d.ts +16 -0
- package/dist/preference-file.d.ts.map +1 -0
- package/dist/preference-file.js +133 -0
- package/dist/preference-file.js.map +1 -0
- package/dist/profiles.d.ts +1 -3
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +60 -112
- package/dist/profiles.js.map +1 -1
- package/dist/searchConversion.d.ts.map +1 -1
- package/dist/searchConversion.js +18 -5
- package/dist/searchConversion.js.map +1 -1
- package/dist/searchSchema.d.ts +25 -25
- package/dist/searchSchema.d.ts.map +1 -1
- package/dist/searchSchema.js +5 -5
- package/dist/searchSchema.js.map +1 -1
- package/dist/token-hashing.d.ts +3 -0
- package/dist/token-hashing.d.ts.map +1 -0
- package/dist/token-hashing.js +18 -0
- package/dist/token-hashing.js.map +1 -0
- package/dist/tool-metadata.d.ts +2 -0
- package/dist/tool-metadata.d.ts.map +1 -0
- package/dist/tool-metadata.js +43 -0
- package/dist/tool-metadata.js.map +1 -0
- package/dist/tools/change-listeners.d.ts +30 -0
- package/dist/tools/change-listeners.d.ts.map +1 -1
- package/dist/tools/change-listeners.js +24 -18
- package/dist/tools/change-listeners.js.map +1 -1
- package/dist/tools/common-schemas.d.ts +2 -0
- package/dist/tools/common-schemas.d.ts.map +1 -1
- package/dist/tools/common-schemas.js +16 -0
- package/dist/tools/common-schemas.js.map +1 -1
- package/dist/tools/csv-export.d.ts +1849 -0
- package/dist/tools/csv-export.d.ts.map +1 -0
- package/dist/tools/csv-export.js +61 -0
- package/dist/tools/csv-export.js.map +1 -0
- package/dist/tools/generic-layouts.d.ts +302 -0
- package/dist/tools/generic-layouts.d.ts.map +1 -1
- package/dist/tools/generic-layouts.js +102 -70
- package/dist/tools/generic-layouts.js.map +1 -1
- package/dist/tools/get-operations.d.ts +16 -0
- package/dist/tools/get-operations.d.ts.map +1 -0
- package/dist/tools/get-operations.js +63 -0
- package/dist/tools/get-operations.js.map +1 -0
- package/dist/tools/pages.d.ts +55 -0
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +173 -257
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/ppt-export-schemas.d.ts +16 -16
- package/dist/tools/ppt-export.d.ts +1493 -0
- package/dist/tools/ppt-export.d.ts.map +1 -1
- package/dist/tools/ppt-export.js +23 -17
- package/dist/tools/ppt-export.js.map +1 -1
- package/dist/tools/profile-management.d.ts +20 -0
- package/dist/tools/profile-management.d.ts.map +1 -0
- package/dist/tools/profile-management.js +250 -0
- package/dist/tools/profile-management.js.map +1 -0
- package/dist/tools/references.d.ts +36 -0
- package/dist/tools/references.d.ts.map +1 -1
- package/dist/tools/references.js +48 -45
- package/dist/tools/references.js.map +1 -1
- package/dist/tools/richstring-widgets.d.ts +51 -0
- package/dist/tools/richstring-widgets.d.ts.map +1 -0
- package/dist/tools/richstring-widgets.js +173 -0
- package/dist/tools/richstring-widgets.js.map +1 -0
- package/dist/tools/schedule.d.ts +14 -0
- package/dist/tools/schedule.d.ts.map +1 -1
- package/dist/tools/schedule.js +7 -3
- package/dist/tools/schedule.js.map +1 -1
- package/dist/tools/script-logs.d.ts +29 -0
- package/dist/tools/script-logs.d.ts.map +1 -0
- package/dist/tools/script-logs.js +144 -0
- package/dist/tools/script-logs.js.map +1 -0
- package/dist/tools/search.d.ts +1870 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +49 -75
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/system.d.ts.map +1 -1
- package/dist/tools/system.js +4 -2
- package/dist/tools/system.js.map +1 -1
- package/dist/tools/type-layouts.d.ts +37 -0
- package/dist/tools/type-layouts.d.ts.map +1 -1
- package/dist/tools/type-layouts.js +30 -22
- package/dist/tools/type-layouts.js.map +1 -1
- package/dist/tools/type-management.d.ts +134 -0
- package/dist/tools/type-management.d.ts.map +1 -0
- package/dist/tools/{workspace.js → type-management.js} +67 -307
- package/dist/tools/type-management.js.map +1 -0
- package/dist/tools/users.d.ts +19 -0
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +14 -28
- package/dist/tools/users.js.map +1 -1
- package/dist/tools/validators.d.ts +28 -0
- package/dist/tools/validators.d.ts.map +1 -1
- package/dist/tools/validators.js +21 -15
- package/dist/tools/validators.js.map +1 -1
- package/dist/tools/version-check.d.ts.map +1 -1
- package/dist/tools/version-check.js +11 -9
- package/dist/tools/version-check.js.map +1 -1
- package/dist/tools/version-history.d.ts +48 -0
- package/dist/tools/version-history.d.ts.map +1 -1
- package/dist/tools/version-history.js +39 -29
- package/dist/tools/version-history.js.map +1 -1
- package/dist/tools/widgets.d.ts +182 -0
- package/dist/tools/widgets.d.ts.map +1 -1
- package/dist/tools/widgets.js +122 -343
- package/dist/tools/widgets.js.map +1 -1
- package/dist/tools/workflow-scripts.d.ts +40 -0
- package/dist/tools/workflow-scripts.d.ts.map +1 -0
- package/dist/tools/workflow-scripts.js +186 -0
- package/dist/tools/workflow-scripts.js.map +1 -0
- package/dist/tools/workflow.d.ts +70 -0
- package/dist/tools/workflow.d.ts.map +1 -0
- package/dist/tools/workflow.js +259 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/tools/workspace-admin.d.ts +40 -0
- package/dist/tools/workspace-admin.d.ts.map +1 -0
- package/dist/tools/workspace-admin.js +125 -0
- package/dist/tools/workspace-admin.js.map +1 -0
- package/dist/tools/workspace-core.d.ts +45 -0
- package/dist/tools/workspace-core.d.ts.map +1 -0
- package/dist/tools/workspace-core.js +153 -0
- package/dist/tools/workspace-core.js.map +1 -0
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/dateValidation.d.ts +5 -0
- package/dist/utils/dateValidation.d.ts.map +1 -0
- package/dist/utils/dateValidation.js +57 -0
- package/dist/utils/dateValidation.js.map +1 -0
- package/dist/utils.js +7 -7
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/tools/workspace.d.ts +0 -4
- package/dist/tools/workspace.d.ts.map +0 -1
- package/dist/tools/workspace.js.map +0 -1
package/dist/tools/pages.js
CHANGED
|
@@ -1,48 +1,61 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { debugLogWithTag } from "../logger.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import { DATE_TIME_FORMAT_DESCRIPTION } from "./common-schemas.js";
|
|
4
|
+
const TOOL_DELETE_PAGE = 'cplace_delete_page';
|
|
5
|
+
const TOOL_DELETE_PAGE_WITH_CHILDREN = 'cplace_delete_page_with_children';
|
|
6
|
+
const TOOL_COPY_PAGE = 'cplace_copy_page';
|
|
7
|
+
const TOOL_MANAGE_PAGE = 'cplace_manage_page';
|
|
8
|
+
export const PAGE_TOOL_DEFINITIONS = {
|
|
9
|
+
[TOOL_DELETE_PAGE]: {
|
|
10
|
+
description: "⚠️ DESTRUCTIVE OPERATION: Permanently delete a single page. Only works for leaf pages (pages without children). For pages with children, use cplace_delete_page_with_children.",
|
|
7
11
|
inputSchema: {
|
|
8
|
-
|
|
12
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page to delete (e.g., 'page/abc123def456')")
|
|
9
13
|
},
|
|
10
|
-
annotations: { title: "
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (result.documents && Array.isArray(result.documents)) {
|
|
15
|
-
result.documents = truncateDocumentSummaries(result.documents);
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
return {
|
|
23
|
-
content: [{ type: "text", text: `Error retrieving page: ${error instanceof Error ? error.message : String(error)}` }],
|
|
24
|
-
isError: true
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
server.registerTool("cplace_create_page", {
|
|
29
|
-
description: "Create a new page with specified attributes and content using the POST /page/create endpoint",
|
|
14
|
+
annotations: { title: "Delete Page" }
|
|
15
|
+
},
|
|
16
|
+
[TOOL_DELETE_PAGE_WITH_CHILDREN]: {
|
|
17
|
+
description: "⚠️ DESTRUCTIVE OPERATION: Permanently delete a page and optionally all its children. Uses a two-phase workflow: first call shows preview, second call with confirmation performs deletion.",
|
|
30
18
|
inputSchema: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
pageUID: z.string().describe("The unique identifier (UID) of the page to delete"),
|
|
20
|
+
confirmDeleteChildren: z.boolean().optional().default(false).describe("Explicit confirmation flag for bulk deletion. Set to true to confirm deletion of page and all children.")
|
|
21
|
+
},
|
|
22
|
+
annotations: { title: "Delete Page with Children" }
|
|
23
|
+
},
|
|
24
|
+
[TOOL_COPY_PAGE]: {
|
|
25
|
+
description: "Copy a page with optional hierarchical copy. Set includeChildren=false for single page copy (leaf pages only), or includeChildren=true for copying page with all children. When includeChildren=true, uses a two-phase workflow: first call shows preview, second call with confirmCopyChildren=true performs the copy.",
|
|
26
|
+
inputSchema: {
|
|
27
|
+
sourcePageUID: z.string().describe("The UID of the page to copy (e.g., 'page/abc123def456')"),
|
|
28
|
+
includeChildren: z.boolean().describe("Whether to copy child pages. false (default) for single page copy (will fail if page has children), true for hierarchical copy with all descendants."),
|
|
29
|
+
confirmCopyChildren: z.boolean().optional().describe("Required confirmation when includeChildren=true. Set to false (or omit) for preview showing child count, set to true to perform the actual bulk copy operation. Ignored when includeChildren=false."),
|
|
30
|
+
targetWorkspaceId: z.string().optional().describe("Target workspace ID (e.g., 'workspace789'). Exactly one of targetWorkspaceId or targetParentUID must be provided."),
|
|
31
|
+
targetParentUID: z.string().optional().describe("UID of target parent page (e.g., 'page/parent123xyz'). Exactly one of targetWorkspaceId or targetParentUID must be provided."),
|
|
32
|
+
newName: z.string().optional().describe("New name for the copied page (optional). If not provided, uses original page name. When includeChildren=true, only the root page is renamed; children retain their original names."),
|
|
33
|
+
includeComments: z.boolean().optional().default(false).describe("Whether to copy comments from the page(s). Default: false for single page copy, false for hierarchical copy. Comments add context but increase copy time significantly for large hierarchies."),
|
|
34
|
+
includeFiles: z.boolean().optional().default(true).describe("Whether to copy files attached to the page(s). Default: true for single page copy, true for hierarchical copy. Files are typically needed for complete page copies but increase copy time and storage usage.")
|
|
35
|
+
},
|
|
36
|
+
annotations: { title: "Copy Page" }
|
|
37
|
+
},
|
|
38
|
+
[TOOL_MANAGE_PAGE]: {
|
|
39
|
+
description: "Create or update a page. Use operation='create' to create new pages with workspace and type. Use operation='update' to modify existing pages by UID. 🔍 IMPORTANT: Use 'cplace_get_type_datamodel' before creating pages to understand attribute requirements.",
|
|
40
|
+
inputSchema: {
|
|
41
|
+
operation: z.enum(["create", "update"]).describe("Operation to perform: 'create' for new pages, 'update' for existing pages"),
|
|
42
|
+
workspaceId: z.string().optional().describe("Required for create: The workspace ID where the page should be created (e.g., 'abc123')"),
|
|
43
|
+
typeInternalName: z.string().optional().describe("Required for create: The type internal name (e.g., 'cf.example.myType')"),
|
|
44
|
+
pageUID: z.string().optional().describe("Required for update: The UID of the page to update (e.g., 'page/abc123def456')"),
|
|
45
|
+
name: z.string().optional().describe("Page name. For create operations: optional if type has name generation pattern (auto-generates from pattern), otherwise required. For update operations: optional. Name generation pattern syntax: <attributeName> for attribute values, {###} for sequential counter, {0000} for zero-padded counter. Example: '<title>-{0000}' generates 'ProjectAlpha-0001'. Provide explicit name to override pattern. Use cplace_get_type_datamodel to check if type supports name generation."),
|
|
46
|
+
parentUID: z.string().optional().describe("Parent page UID for hierarchy. For create: sets initial parent. For update: moves page (use empty string to remove parent)."),
|
|
47
|
+
content: z.string().optional().describe("HTML content for the page. Use HTML markup, not markdown - e.g. '<strong>bold</strong>' not '**bold**'. For update: use empty string to remove content."),
|
|
36
48
|
attributes: z.record(z.any()).optional().describe(`Custom attribute values as key-value pairs. 🔍 IMPORTANT: Use 'cplace_get_type_datamodel' tool first to understand attribute requirements and constraints. Supports:
|
|
37
49
|
- String values: "text"
|
|
38
50
|
- Numeric values: 42 or 3.14
|
|
39
51
|
- Boolean values: true/false
|
|
40
|
-
- Date values:
|
|
52
|
+
- Date values: ${DATE_TIME_FORMAT_DESCRIPTION}
|
|
41
53
|
- Array values: ["value1", "value2"] for multi-valued attributes
|
|
42
54
|
- Reference values: "page/ref123" for page references
|
|
43
55
|
- RichString values: "<p><strong>HTML markup</strong></p>" (use HTML, not markdown or plain text)
|
|
44
56
|
- Localized string values: {"en": "English text", "de": "German text", "fr": "French text"}
|
|
45
57
|
- Multi-valued localized strings: [{"en": "Text 1", "de": "Text 1"}, {"en": "Text 2", "de": "Text 2"}]
|
|
58
|
+
- For update only: null (removes the attribute value), [] (removes all values for multi-valued attributes)
|
|
46
59
|
|
|
47
60
|
The system automatically detects attribute types from the page type definition and handles:
|
|
48
61
|
- Type-aware processing based on actual attribute definitions
|
|
@@ -50,8 +63,8 @@ The system automatically detects attribute types from the page type definition a
|
|
|
50
63
|
- Automatic type conversion and validation
|
|
51
64
|
- Enhanced error messages with attribute-specific details`),
|
|
52
65
|
builtinAttributes: z.record(z.any()).optional().describe(`Builtin/mixin-provided attributes (optional for schedules). Supports:
|
|
53
|
-
- owner: Person UID as string (e.g., "person/123abc456") - Sets the page owner for schedules
|
|
54
|
-
- Use null to remove builtin attribute values
|
|
66
|
+
- owner: Person UID as string (e.g., "person/123abc456") - Sets/updates the page owner for schedules
|
|
67
|
+
- For update only: Use null to remove builtin attribute values
|
|
55
68
|
|
|
56
69
|
Supported page type:
|
|
57
70
|
- Schedule (cf.schedule): supports owner attribute
|
|
@@ -59,133 +72,103 @@ Supported page type:
|
|
|
59
72
|
Example for schedule:
|
|
60
73
|
{"owner": "person/123abc456"}`)
|
|
61
74
|
},
|
|
62
|
-
annotations: { title: "
|
|
63
|
-
}
|
|
64
|
-
|
|
75
|
+
annotations: { title: "Manage Page" }
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
export function registerPageTools(server, client) {
|
|
79
|
+
server.registerTool(TOOL_MANAGE_PAGE, PAGE_TOOL_DEFINITIONS[TOOL_MANAGE_PAGE], async (params) => {
|
|
80
|
+
const { operation } = params;
|
|
81
|
+
debugLogWithTag('MANAGE_PAGE', `${operation} page operation`);
|
|
65
82
|
try {
|
|
66
|
-
|
|
67
|
-
workspaceId
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
requestBody
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
if (operation === "create") {
|
|
84
|
+
if (!params.workspaceId || !params.typeInternalName) {
|
|
85
|
+
return {
|
|
86
|
+
content: [{
|
|
87
|
+
type: "text",
|
|
88
|
+
text: "Error: workspaceId and typeInternalName are required when operation='create'."
|
|
89
|
+
}],
|
|
90
|
+
isError: true
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const requestBody = {
|
|
94
|
+
workspaceId: params.workspaceId,
|
|
95
|
+
typeInternalName: params.typeInternalName
|
|
96
|
+
};
|
|
97
|
+
if (params.name !== undefined && params.name !== null && params.name !== "") {
|
|
98
|
+
requestBody.name = params.name;
|
|
99
|
+
}
|
|
100
|
+
if (params.parentUID) {
|
|
101
|
+
requestBody.parentUID = params.parentUID;
|
|
102
|
+
debugLogWithTag('MANAGE_PAGE', `Including parentUID: ${params.parentUID}`);
|
|
103
|
+
}
|
|
104
|
+
if (params.content) {
|
|
105
|
+
requestBody.content = params.content;
|
|
106
|
+
debugLogWithTag('MANAGE_PAGE', `Including content (${params.content.length} chars)`);
|
|
107
|
+
}
|
|
108
|
+
if (params.attributes && Object.keys(params.attributes).length > 0) {
|
|
109
|
+
requestBody.attributes = params.attributes;
|
|
110
|
+
debugLogWithTag('MANAGE_PAGE', `Including attributes: ${JSON.stringify(Object.keys(params.attributes))}`);
|
|
111
|
+
}
|
|
112
|
+
if (params.builtinAttributes && Object.keys(params.builtinAttributes).length > 0) {
|
|
113
|
+
requestBody.builtinAttributes = params.builtinAttributes;
|
|
114
|
+
debugLogWithTag('MANAGE_PAGE', `Including builtinAttributes: ${JSON.stringify(Object.keys(params.builtinAttributes))}`);
|
|
115
|
+
}
|
|
116
|
+
debugLogWithTag('MANAGE_PAGE', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
117
|
+
const result = await client.makeApiRequest('json/page/create', 'POST', undefined, requestBody);
|
|
118
|
+
debugLogWithTag('MANAGE_PAGE', `Successfully created page: ${params.name}`);
|
|
119
|
+
return {
|
|
120
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
121
|
+
};
|
|
82
122
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
123
|
+
else {
|
|
124
|
+
if (!params.pageUID) {
|
|
125
|
+
return {
|
|
126
|
+
content: [{
|
|
127
|
+
type: "text",
|
|
128
|
+
text: "Error: pageUID is required when operation='update'. Specify the UID of the page to update."
|
|
129
|
+
}],
|
|
130
|
+
isError: true
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const requestBody = {
|
|
134
|
+
pageUID: params.pageUID
|
|
135
|
+
};
|
|
136
|
+
if (params.name !== undefined)
|
|
137
|
+
requestBody.name = params.name;
|
|
138
|
+
if (params.content !== undefined)
|
|
139
|
+
requestBody.content = params.content;
|
|
140
|
+
if (params.parentUID !== undefined)
|
|
141
|
+
requestBody.parentUID = params.parentUID;
|
|
142
|
+
if (params.attributes && Object.keys(params.attributes).length > 0) {
|
|
143
|
+
requestBody.attributes = params.attributes;
|
|
144
|
+
}
|
|
145
|
+
if (params.builtinAttributes && Object.keys(params.builtinAttributes).length > 0) {
|
|
146
|
+
requestBody.builtinAttributes = params.builtinAttributes;
|
|
147
|
+
}
|
|
148
|
+
if (Object.keys(requestBody).length === 1) {
|
|
149
|
+
return {
|
|
150
|
+
content: [{ type: "text", text: "No updates specified. At least one of name, content, parentUID, attributes, or builtinAttributes must be provided." }]
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const result = await client.makeApiRequest('json/page', 'PATCH', undefined, requestBody);
|
|
154
|
+
debugLogWithTag('MANAGE_PAGE', `Successfully updated page: ${params.pageUID}`);
|
|
155
|
+
return {
|
|
156
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
157
|
+
};
|
|
86
158
|
}
|
|
87
|
-
debugLogWithTag('CREATE_PAGE', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
88
|
-
const result = await client.makeApiRequest('json/page/create', 'POST', undefined, requestBody);
|
|
89
|
-
debugLogWithTag('CREATE_PAGE', `Successfully created page: ${name}`);
|
|
90
|
-
return {
|
|
91
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
92
|
-
};
|
|
93
159
|
}
|
|
94
160
|
catch (error) {
|
|
95
|
-
debugLogWithTag('
|
|
161
|
+
debugLogWithTag('MANAGE_PAGE', `Error ${operation} page: ${error instanceof Error ? error.message : String(error)}`);
|
|
96
162
|
return {
|
|
97
163
|
content: [{
|
|
98
164
|
type: "text",
|
|
99
|
-
text: `Error
|
|
165
|
+
text: `Error ${operation} page: ${error instanceof Error ? error.message : String(error)}`
|
|
100
166
|
}],
|
|
101
167
|
isError: true
|
|
102
168
|
};
|
|
103
169
|
}
|
|
104
170
|
});
|
|
105
|
-
server.registerTool(
|
|
106
|
-
description: "Update an existing page's attributes, content, or structure",
|
|
107
|
-
inputSchema: {
|
|
108
|
-
pageUID: z.string().describe("The unique identifier (UID) of the page to update"),
|
|
109
|
-
name: z.string().optional().describe("New name for the page (optional)"),
|
|
110
|
-
content: z.string().optional().describe("New HTML content (optional). Use HTML markup, not markdown - e.g. '<em>italic</em>' not '*italic*'. Use empty string to remove content."),
|
|
111
|
-
parentUID: z.string().optional().describe("New parent page UID (optional - for moving pages). Use empty string to remove parent."),
|
|
112
|
-
attributes: z.record(z.any()).optional().describe(`Custom attributes to update as key-value pairs. 🔍 IMPORTANT: Use 'cplace_get_type_datamodel' tool first to understand attribute requirements and constraints. Supports:
|
|
113
|
-
- String values: "text"
|
|
114
|
-
- Numeric values: 42 or 3.14
|
|
115
|
-
- Boolean values: true/false
|
|
116
|
-
- Date values: "2024-01-15" or "2024-01-15T10:30:00"
|
|
117
|
-
- Array values: ["value1", "value2"] for multi-valued attributes
|
|
118
|
-
- Reference values: "page/ref123" for page references
|
|
119
|
-
- RichString values: "<p><strong>HTML markup</strong></p>" (use HTML, not markdown or plain text)
|
|
120
|
-
- Localized string values: {"en": "English text", "de": "German text", "fr": "French text"}
|
|
121
|
-
- Multi-valued localized strings: [{"en": "Text 1", "de": "Text 1"}, {"en": "Text 2", "de": "Text 2"}]
|
|
122
|
-
- Null values: null (removes the attribute value)
|
|
123
|
-
- Empty arrays: [] (removes all values for multi-valued attributes)
|
|
124
|
-
- New attributes: will be added to the page
|
|
125
|
-
|
|
126
|
-
The system automatically detects attribute types from the page type definition and handles:
|
|
127
|
-
- Type-aware processing based on actual attribute definitions
|
|
128
|
-
- Proper multiplicity validation (single vs multi-valued)
|
|
129
|
-
- Automatic type conversion and validation
|
|
130
|
-
- Enhanced error messages with attribute-specific details`),
|
|
131
|
-
builtinAttributes: z.record(z.any()).optional().describe(`Builtin/mixin-provided attributes to update (optional for schedules). Supports:
|
|
132
|
-
- owner: Person UID as string (e.g., "person/456def789") - Updates the page owner for schedules
|
|
133
|
-
- Use null to remove builtin attribute values
|
|
134
|
-
|
|
135
|
-
Supported page type:
|
|
136
|
-
- Schedule (cf.schedule): supports owner attribute
|
|
137
|
-
|
|
138
|
-
Example for schedule:
|
|
139
|
-
{"owner": "person/123abc456"}`)
|
|
140
|
-
},
|
|
141
|
-
annotations: { title: "Update Page" }
|
|
142
|
-
}, async ({ pageUID, name, content, parentUID, attributes, builtinAttributes }) => {
|
|
143
|
-
debugLogWithTag('UPDATE_PAGE', `Starting page update for: ${pageUID}`);
|
|
144
|
-
try {
|
|
145
|
-
const requestBody = {
|
|
146
|
-
pageUID
|
|
147
|
-
};
|
|
148
|
-
if (name !== undefined) {
|
|
149
|
-
requestBody.name = name;
|
|
150
|
-
}
|
|
151
|
-
if (content !== undefined) {
|
|
152
|
-
requestBody.content = content;
|
|
153
|
-
}
|
|
154
|
-
if (parentUID !== undefined) {
|
|
155
|
-
requestBody.parentUID = parentUID;
|
|
156
|
-
}
|
|
157
|
-
if (attributes && Object.keys(attributes).length > 0) {
|
|
158
|
-
requestBody.attributes = attributes;
|
|
159
|
-
}
|
|
160
|
-
if (builtinAttributes && Object.keys(builtinAttributes).length > 0) {
|
|
161
|
-
requestBody.builtinAttributes = builtinAttributes;
|
|
162
|
-
}
|
|
163
|
-
if (Object.keys(requestBody).length === 1) {
|
|
164
|
-
return {
|
|
165
|
-
content: [{ type: "text", text: "No updates specified. At least one of name, content, parentId, or attributes must be provided." }]
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
const result = await client.makeApiRequest('json/page', 'PATCH', undefined, requestBody);
|
|
169
|
-
debugLogWithTag('UPDATE_PAGE', `Successfully updated page: ${pageUID}`);
|
|
170
|
-
return {
|
|
171
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
debugLogWithTag('UPDATE_PAGE', `Error updating page: ${error instanceof Error ? error.message : String(error)}`);
|
|
176
|
-
return {
|
|
177
|
-
content: [{ type: "text", text: `Error updating page: ${error instanceof Error ? error.message : String(error)}` }],
|
|
178
|
-
isError: true
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
server.registerTool("cplace_delete_page", {
|
|
183
|
-
description: "⚠️ DESTRUCTIVE OPERATION: Permanently delete a single page. Only works for leaf pages (pages without children). For pages with children, use cplace_delete_page_with_children.",
|
|
184
|
-
inputSchema: {
|
|
185
|
-
pageUID: z.string().describe("The unique identifier (UID) of the page to delete (e.g., 'page/abc123def456')")
|
|
186
|
-
},
|
|
187
|
-
annotations: { title: "Delete Page" }
|
|
188
|
-
}, async ({ pageUID }) => {
|
|
171
|
+
server.registerTool(TOOL_DELETE_PAGE, PAGE_TOOL_DEFINITIONS[TOOL_DELETE_PAGE], async ({ pageUID }) => {
|
|
189
172
|
debugLogWithTag('DELETE_PAGE', `Starting single page deletion for: ${pageUID}`);
|
|
190
173
|
try {
|
|
191
174
|
const result = await client.makeApiRequest(`page?pageUID=${pageUID}`, 'DELETE');
|
|
@@ -214,14 +197,7 @@ Example for schedule:
|
|
|
214
197
|
};
|
|
215
198
|
}
|
|
216
199
|
});
|
|
217
|
-
server.registerTool(
|
|
218
|
-
description: "⚠️ DESTRUCTIVE OPERATION: Permanently delete a page and optionally all its children. Uses a two-phase workflow: first call shows preview, second call with confirmation performs deletion.",
|
|
219
|
-
inputSchema: {
|
|
220
|
-
pageUID: z.string().describe("The unique identifier (UID) of the page to delete"),
|
|
221
|
-
confirmDeleteChildren: z.boolean().optional().default(false).describe("Explicit confirmation flag for bulk deletion. Set to true to confirm deletion of page and all children.")
|
|
222
|
-
},
|
|
223
|
-
annotations: { title: "Delete Page with Children" }
|
|
224
|
-
}, async ({ pageUID, confirmDeleteChildren = false }) => {
|
|
200
|
+
server.registerTool(TOOL_DELETE_PAGE_WITH_CHILDREN, PAGE_TOOL_DEFINITIONS[TOOL_DELETE_PAGE_WITH_CHILDREN], async ({ pageUID, confirmDeleteChildren = false }) => {
|
|
225
201
|
debugLogWithTag('DELETE_PAGE_WITH_CHILDREN', `Starting page deletion with children for: ${pageUID}, confirm: ${confirmDeleteChildren}`);
|
|
226
202
|
try {
|
|
227
203
|
const requestBody = {
|
|
@@ -254,42 +230,18 @@ Example for schedule:
|
|
|
254
230
|
};
|
|
255
231
|
}
|
|
256
232
|
});
|
|
257
|
-
server.registerTool(
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
sourcePageUID: z.string().describe("The UID of the page to copy (e.g., 'page/abc123def456')"),
|
|
261
|
-
targetWorkspaceId: z.string().optional().describe("Target workspace ID (e.g., 'workspace789'). Exactly one of targetWorkspaceId or targetParentUID must be provided."),
|
|
262
|
-
targetParentUID: z.string().optional().describe("UID of target parent page (e.g., 'page/parent123xyz'). Exactly one of targetWorkspaceId or targetParentUID must be provided."),
|
|
263
|
-
newName: z.string().optional().describe("New name for the copied page (optional). If not provided, the original page name will be used."),
|
|
264
|
-
includeComments: z.boolean().describe("Whether to copy comments from the page (required). Comments can add context but increase copy time."),
|
|
265
|
-
includeFiles: z.boolean().describe("Whether to copy files attached to the page (required). Files are typically needed for complete page copies but increase copy time and storage usage.")
|
|
266
|
-
},
|
|
267
|
-
annotations: { title: "Copy Page" }
|
|
268
|
-
}, async ({ sourcePageUID, targetWorkspaceId, targetParentUID, newName, includeComments, includeFiles }) => {
|
|
269
|
-
debugLogWithTag('COPY_PAGE', `Starting page copy for: ${sourcePageUID}, includeComments: ${includeComments}, includeFiles: ${includeFiles}`);
|
|
233
|
+
server.registerTool(TOOL_COPY_PAGE, PAGE_TOOL_DEFINITIONS[TOOL_COPY_PAGE], async (params) => {
|
|
234
|
+
const { includeChildren = false } = params;
|
|
235
|
+
debugLogWithTag('COPY_PAGE', `Copying page ${params.sourcePageUID}, includeChildren=${includeChildren}, confirmCopyChildren=${params.confirmCopyChildren}`);
|
|
270
236
|
try {
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
includeComments,
|
|
274
|
-
includeFiles
|
|
275
|
-
};
|
|
276
|
-
if (targetWorkspaceId) {
|
|
277
|
-
requestBody.targetWorkspaceId = targetWorkspaceId;
|
|
278
|
-
}
|
|
279
|
-
if (targetParentUID) {
|
|
280
|
-
requestBody.targetParentUID = targetParentUID;
|
|
281
|
-
}
|
|
282
|
-
if (newName) {
|
|
283
|
-
requestBody.newName = newName;
|
|
284
|
-
}
|
|
285
|
-
const hasWorkspace = !!targetWorkspaceId;
|
|
286
|
-
const hasParent = !!targetParentUID;
|
|
237
|
+
const hasWorkspace = !!params.targetWorkspaceId;
|
|
238
|
+
const hasParent = !!params.targetParentUID;
|
|
287
239
|
if (!hasWorkspace && !hasParent) {
|
|
288
240
|
debugLogWithTag('COPY_PAGE', 'Validation failed: No target specified');
|
|
289
241
|
return {
|
|
290
242
|
content: [{
|
|
291
243
|
type: "text",
|
|
292
|
-
text: "Either targetWorkspaceId or targetParentUID must be provided"
|
|
244
|
+
text: "Error: Either targetWorkspaceId or targetParentUID must be provided. Specify exactly one target location for the copied page."
|
|
293
245
|
}],
|
|
294
246
|
isError: true
|
|
295
247
|
};
|
|
@@ -299,99 +251,63 @@ Example for schedule:
|
|
|
299
251
|
return {
|
|
300
252
|
content: [{
|
|
301
253
|
type: "text",
|
|
302
|
-
text: "Only one of targetWorkspaceId or targetParentUID can be provided, not both"
|
|
254
|
+
text: "Error: Only one of targetWorkspaceId or targetParentUID can be provided, not both. Choose a single target location."
|
|
303
255
|
}],
|
|
304
256
|
isError: true
|
|
305
257
|
};
|
|
306
258
|
}
|
|
259
|
+
const endpoint = includeChildren
|
|
260
|
+
? 'json/page/copy-with-children'
|
|
261
|
+
: 'json/page/copy';
|
|
262
|
+
const requestBody = {
|
|
263
|
+
sourcePageUID: params.sourcePageUID,
|
|
264
|
+
includeComments: params.includeComments ?? false,
|
|
265
|
+
includeFiles: params.includeFiles ?? true
|
|
266
|
+
};
|
|
267
|
+
if (params.targetWorkspaceId)
|
|
268
|
+
requestBody.targetWorkspaceId = params.targetWorkspaceId;
|
|
269
|
+
if (params.targetParentUID)
|
|
270
|
+
requestBody.targetParentUID = params.targetParentUID;
|
|
271
|
+
if (params.newName)
|
|
272
|
+
requestBody.newName = params.newName;
|
|
273
|
+
if (includeChildren) {
|
|
274
|
+
requestBody.confirmCopyChildren = params.confirmCopyChildren ?? false;
|
|
275
|
+
}
|
|
307
276
|
debugLogWithTag('COPY_PAGE', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
308
|
-
const result = await client.makeApiRequest(
|
|
309
|
-
|
|
277
|
+
const result = await client.makeApiRequest(endpoint, 'POST', undefined, requestBody);
|
|
278
|
+
if (includeChildren) {
|
|
279
|
+
if (params.confirmCopyChildren) {
|
|
280
|
+
debugLogWithTag('COPY_PAGE', `Successfully copied page with children: ${params.sourcePageUID}`);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
debugLogWithTag('COPY_PAGE', `Retrieved copy preview for: ${params.sourcePageUID}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
debugLogWithTag('COPY_PAGE', `Successfully copied page: ${params.sourcePageUID}`);
|
|
288
|
+
}
|
|
310
289
|
return {
|
|
311
290
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
312
291
|
};
|
|
313
292
|
}
|
|
314
293
|
catch (error) {
|
|
315
294
|
debugLogWithTag('COPY_PAGE', `Error copying page: ${error instanceof Error ? error.message : String(error)}`);
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
}],
|
|
321
|
-
isError: true
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
});
|
|
325
|
-
server.registerTool("cplace_copy_page_with_children", {
|
|
326
|
-
description: "Copy a page including all its children using the POST /page/copy-with-children endpoint. Uses a two-phase workflow: first call (confirmCopyChildren: false) shows preview with child count, second call (confirmCopyChildren: true) performs the actual copy operation.",
|
|
327
|
-
inputSchema: {
|
|
328
|
-
sourcePageUID: z.string().describe("The UID of the page to copy (e.g., 'page/project123abc')"),
|
|
329
|
-
targetWorkspaceId: z.string().optional().describe("Target workspace ID (e.g., 'workspace789'). Exactly one of targetWorkspaceId or targetParentUID must be provided."),
|
|
330
|
-
targetParentUID: z.string().optional().describe("UID of target parent page (e.g., 'page/parent123xyz'). Exactly one of targetWorkspaceId or targetParentUID must be provided."),
|
|
331
|
-
newName: z.string().optional().describe("New name for the copied root page (optional). Children retain their original names."),
|
|
332
|
-
confirmCopyChildren: z.boolean().optional().default(false).describe("Explicit confirmation flag for copying children. Set to false (default) for preview, set to true to perform the actual copy operation."),
|
|
333
|
-
includeComments: z.boolean().optional().default(false).describe("Whether to copy comments from pages (default: false). Comments can significantly increase copy time."),
|
|
334
|
-
includeFiles: z.boolean().optional().default(true).describe("Whether to copy files attached to pages (default: true). Files are typically needed for complete page copies.")
|
|
335
|
-
},
|
|
336
|
-
annotations: { title: "Copy Page with Children" }
|
|
337
|
-
}, async ({ sourcePageUID, targetWorkspaceId, targetParentUID, newName, confirmCopyChildren = false, includeComments = false, includeFiles = true }) => {
|
|
338
|
-
debugLogWithTag('COPY_PAGE_WITH_CHILDREN', `Starting page copy with children for: ${sourcePageUID}, confirm: ${confirmCopyChildren}, includeComments: ${includeComments}, includeFiles: ${includeFiles}`);
|
|
339
|
-
try {
|
|
340
|
-
const requestBody = {
|
|
341
|
-
sourcePageUID,
|
|
342
|
-
confirmCopyChildren,
|
|
343
|
-
includeComments,
|
|
344
|
-
includeFiles
|
|
345
|
-
};
|
|
346
|
-
if (targetWorkspaceId) {
|
|
347
|
-
requestBody.targetWorkspaceId = targetWorkspaceId;
|
|
348
|
-
}
|
|
349
|
-
if (targetParentUID) {
|
|
350
|
-
requestBody.targetParentUID = targetParentUID;
|
|
351
|
-
}
|
|
352
|
-
if (newName) {
|
|
353
|
-
requestBody.newName = newName;
|
|
354
|
-
}
|
|
355
|
-
const hasWorkspace = !!targetWorkspaceId;
|
|
356
|
-
const hasParent = !!targetParentUID;
|
|
357
|
-
if (!hasWorkspace && !hasParent) {
|
|
358
|
-
debugLogWithTag('COPY_PAGE_WITH_CHILDREN', 'Validation failed: No target specified');
|
|
359
|
-
return {
|
|
360
|
-
content: [{
|
|
361
|
-
type: "text",
|
|
362
|
-
text: "Either targetWorkspaceId or targetParentUID must be provided"
|
|
363
|
-
}],
|
|
364
|
-
isError: true
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
if (hasWorkspace && hasParent) {
|
|
368
|
-
debugLogWithTag('COPY_PAGE_WITH_CHILDREN', 'Validation failed: Both targets specified');
|
|
295
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
296
|
+
const childMatch = errorMessage.match(/Found (\d+) child items/);
|
|
297
|
+
if (childMatch) {
|
|
298
|
+
const childCount = childMatch[1];
|
|
369
299
|
return {
|
|
370
300
|
content: [{
|
|
371
301
|
type: "text",
|
|
372
|
-
text:
|
|
302
|
+
text: `This page has ${childCount} children. Retry with includeChildren: true and confirmCopyChildren: false to preview.`
|
|
373
303
|
}],
|
|
374
304
|
isError: true
|
|
375
305
|
};
|
|
376
306
|
}
|
|
377
|
-
debugLogWithTag('COPY_PAGE_WITH_CHILDREN', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
378
|
-
const result = await client.makeApiRequest('json/page/copy-with-children', 'POST', undefined, requestBody);
|
|
379
|
-
if (confirmCopyChildren) {
|
|
380
|
-
debugLogWithTag('COPY_PAGE_WITH_CHILDREN', `Successfully copied page with children: ${sourcePageUID}`);
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
debugLogWithTag('COPY_PAGE_WITH_CHILDREN', `Retrieved copy preview for: ${sourcePageUID}`);
|
|
384
|
-
}
|
|
385
|
-
return {
|
|
386
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
catch (error) {
|
|
390
|
-
debugLogWithTag('COPY_PAGE_WITH_CHILDREN', `Error copying page with children: ${error instanceof Error ? error.message : String(error)}`);
|
|
391
307
|
return {
|
|
392
308
|
content: [{
|
|
393
309
|
type: "text",
|
|
394
|
-
text: `Error copying page
|
|
310
|
+
text: `Error copying page: ${errorMessage}`
|
|
395
311
|
}],
|
|
396
312
|
isError: true
|
|
397
313
|
};
|
package/dist/tools/pages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAuB;IAE1E,MAAM,CAAC,YAAY,CAAC,uBAAuB,EACzC;QACE,WAAW,EAAE,yEAAyE;QACtF,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;SAC5F;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;KACzC,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAGhF,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,MAAM,CAAC,SAAS,GAAG,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjE,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACrH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAGF,MAAM,CAAC,YAAY,CAAC,oBAAoB,EACtC;QACE,WAAW,EAAE,8FAA8F;QAC3G,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;YAClG,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;YACvG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAChG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mHAAmH,CAAC;YAC5J,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;0DAeA,CAAC;YACnD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;;;;;;8BAQnC,CAAC;SACxB;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;KACtC,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE;QACnG,eAAe,CAAC,aAAa,EAAE,2BAA2B,IAAI,YAAY,gBAAgB,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAE1H,IAAI,CAAC;YACH,MAAM,WAAW,GAAQ;gBACvB,WAAW;gBACX,gBAAgB;gBAChB,IAAI;aACL,CAAC;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;gBAClC,eAAe,CAAC,aAAa,EAAE,wBAAwB,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC9B,eAAe,CAAC,aAAa,EAAE,sBAAsB,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;YAChF,CAAC;YAED,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gBACpC,eAAe,CAAC,aAAa,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;YACrG,CAAC;YAED,IAAI,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;gBAClD,eAAe,CAAC,aAAa,EAAE,gCAAgC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;YACnH,CAAC;YAED,eAAe,CAAC,aAAa,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAExF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAE/F,eAAe,CAAC,aAAa,EAAE,8BAA8B,IAAI,EAAE,CAAC,CAAC;YAErE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,aAAa,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/G,OAAO;gBACH,OAAO,EAAE,CAAC;wBACN,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACzF,CAAC;gBACF,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;IACH,CAAC,CACF,CAAC;IAGF,MAAM,CAAC,YAAY,CAAC,oBAAoB,EACtC;QACE,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACjF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yIAAyI,CAAC;YAClL,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;YAClI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;0DAkBA,CAAC;YACnD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;;;;;;8BAQnC,CAAC;SACxB;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;KACtC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE;QAC7E,eAAe,CAAC,aAAa,EAAE,6BAA6B,OAAO,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,WAAW,GAAQ;gBACvB,OAAO;aACR,CAAC;YAEF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;YAChC,CAAC;YAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;YACpC,CAAC;YAED,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;YACtC,CAAC;YAED,IAAI,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YACpD,CAAC;YAGD,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1C,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gGAAgG,EAAE,CAAC;iBACpI,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAEzF,eAAe,CAAC,aAAa,EAAE,8BAA8B,OAAO,EAAE,CAAC,CAAC;YAExE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,aAAa,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACjH,OAAO,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAIF,MAAM,CAAC,YAAY,CAAC,oBAAoB,EACtC;QACE,WAAW,EAAE,gLAAgL;QAC7L,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;SAC9G;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;KACtC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,eAAe,CAAC,aAAa,EAAE,sCAAsC,OAAO,EAAE,CAAC,CAAC;QAEhF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,gBAAgB,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;YAGhF,IAAI,YAAY,CAAC;YACjB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY,GAAG,MAAM,CAAC;gBACxB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,MAAM,CAAC;YACxB,CAAC;YAED,eAAe,CAAC,aAAa,EAAE,8BAA8B,OAAO,EAAE,CAAC,CAAC;YAExE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;aACnI,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,aAAa,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACjH,OAAO,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAGF,MAAM,CAAC,YAAY,CAAC,kCAAkC,EACpD;QACE,WAAW,EAAE,4LAA4L;QACzM,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACjF,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yGAAyG,CAAC;SACjL;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE;KACpD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,qBAAqB,GAAG,KAAK,EAAE,EAAE,EAAE;QACnD,eAAe,CAAC,2BAA2B,EAAE,6CAA6C,OAAO,cAAc,qBAAqB,EAAE,CAAC,CAAC;QAExI,IAAI,CAAC;YACH,MAAM,WAAW,GAAG;gBAClB,OAAO;gBACP,qBAAqB;aACtB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAGnG,IAAI,YAAY,CAAC;YACjB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY,GAAG,MAAM,CAAC;gBACxB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,MAAM,CAAC;YACxB,CAAC;YAED,eAAe,CAAC,2BAA2B,EAAE,qCAAqC,OAAO,EAAE,CAAC,CAAC;YAE7F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;aACnI,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,2BAA2B,EAAE,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7I,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC/H,OAAO,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAGF,MAAM,CAAC,YAAY,CAAC,kBAAkB,EACpC;QACE,WAAW,EAAE,0NAA0N;QACvO,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YAC7F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mHAAmH,CAAC;YACtK,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8HAA8H,CAAC;YAC/K,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gGAAgG,CAAC;YACzI,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,qGAAqG,CAAC;YAC5I,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,sJAAsJ,CAAC;SAC3L;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;KACpC,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE;QACtG,eAAe,CAAC,WAAW,EAAE,2BAA2B,aAAa,sBAAsB,eAAe,mBAAmB,YAAY,EAAE,CAAC,CAAC;QAE7I,IAAI,CAAC;YAEH,MAAM,WAAW,GAAQ;gBACvB,aAAa;gBACb,eAAe;gBACf,YAAY;aACb,CAAC;YAEF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YACpD,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBACpB,WAAW,CAAC,eAAe,GAAG,eAAe,CAAC;YAChD,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;YAChC,CAAC;YAGD,MAAM,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC;YACzC,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe,CAAC;YAEpC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,eAAe,CAAC,WAAW,EAAE,wCAAwC,CAAC,CAAC;gBACvE,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,8DAA8D;yBACrE,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;gBAC9B,eAAe,CAAC,WAAW,EAAE,2CAA2C,CAAC,CAAC;gBAC1E,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,4EAA4E;yBACnF,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,eAAe,CAAC,WAAW,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAEtF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAE7F,eAAe,CAAC,WAAW,EAAE,6BAA6B,aAAa,EAAE,CAAC,CAAC;YAE3E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,WAAW,EAAE,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9G,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACtF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAGF,MAAM,CAAC,YAAY,CAAC,gCAAgC,EAClD;QACE,WAAW,EAAE,yQAAyQ;QACtR,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YAC9F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mHAAmH,CAAC;YACtK,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8HAA8H,CAAC;YAC/K,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;YAC9H,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wIAAwI,CAAC;YAC7M,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sGAAsG,CAAC;YACvK,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,+GAA+G,CAAC;SAC7K;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE;KAClD,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,EAAE,EAAE;QAClJ,eAAe,CAAC,yBAAyB,EAAE,yCAAyC,aAAa,cAAc,mBAAmB,sBAAsB,eAAe,mBAAmB,YAAY,EAAE,CAAC,CAAC;QAE1M,IAAI,CAAC;YAEH,MAAM,WAAW,GAAQ;gBACvB,aAAa;gBACb,mBAAmB;gBACnB,eAAe;gBACf,YAAY;aACb,CAAC;YAEF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YACpD,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBACpB,WAAW,CAAC,eAAe,GAAG,eAAe,CAAC;YAChD,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;YAChC,CAAC;YAGD,MAAM,YAAY,GAAG,CAAC,CAAC,iBAAiB,CAAC;YACzC,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe,CAAC;YAEpC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,eAAe,CAAC,yBAAyB,EAAE,wCAAwC,CAAC,CAAC;gBACrF,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,8DAA8D;yBACrE,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;gBAC9B,eAAe,CAAC,yBAAyB,EAAE,2CAA2C,CAAC,CAAC;gBACxF,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,4EAA4E;yBACnF,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,eAAe,CAAC,yBAAyB,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAEpG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,8BAA8B,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAE3G,IAAI,mBAAmB,EAAE,CAAC;gBACxB,eAAe,CAAC,yBAAyB,EAAE,2CAA2C,aAAa,EAAE,CAAC,CAAC;YACzG,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,yBAAyB,EAAE,+BAA+B,aAAa,EAAE,CAAC,CAAC;YAC7F,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,yBAAyB,EAAE,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1I,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACpG,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"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"}
|