@anastops/mcp-server 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/handlers/index.d.ts +4 -3
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/index.js +47 -40
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/tool-definitions.d.ts +429 -5
- package/dist/handlers/tool-definitions.d.ts.map +1 -1
- package/dist/handlers/tool-definitions.js +181 -9
- package/dist/handlers/tool-definitions.js.map +1 -1
- package/dist/handlers/types.d.ts +33 -0
- package/dist/handlers/types.d.ts.map +1 -1
- package/dist/handlers/v3/session-tools.d.ts +35 -1
- package/dist/handlers/v3/session-tools.d.ts.map +1 -1
- package/dist/handlers/v3/session-tools.js +230 -1
- package/dist/handlers/v3/session-tools.js.map +1 -1
- package/dist/handlers/v3/task-tools.d.ts.map +1 -1
- package/dist/handlers/v3/task-tools.js +1124 -93
- package/dist/handlers/v3/task-tools.js.map +1 -1
- package/dist/handlers.d.ts +1 -1
- package/dist/handlers.d.ts.map +1 -1
- package/dist/handlers.js +1 -1
- package/dist/handlers.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/persistence.d.ts +11 -0
- package/dist/persistence.d.ts.map +1 -1
- package/dist/persistence.js +77 -0
- package/dist/persistence.js.map +1 -1
- package/dist/schemas.d.ts +95 -8
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +97 -2
- package/dist/schemas.js.map +1 -1
- package/package.json +3 -3
package/dist/handlers/index.d.ts
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* MCP Tool Handlers - Main Router
|
|
3
3
|
* Routes tool calls to specialized handler modules (v3.0 consolidated)
|
|
4
4
|
*/
|
|
5
|
+
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
5
6
|
import { toolDefinitions } from './tool-definitions.js';
|
|
6
7
|
export { toolDefinitions };
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Create tool call handler with server instance
|
|
10
|
+
* Factory function that creates a handler with access to the MCP server
|
|
10
11
|
*/
|
|
11
|
-
export declare function
|
|
12
|
+
export declare function createHandleToolCall(server: Server): (name: string, args: Record<string, unknown>) => Promise<{
|
|
12
13
|
content: Array<{
|
|
13
14
|
type: string;
|
|
14
15
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAoBxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAmBxD,OAAO,EAAE,eAAe,EAAE,CAAC;AAwL3B;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,GACb,CACD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAkDlF"}
|
package/dist/handlers/index.js
CHANGED
|
@@ -11,7 +11,7 @@ import { sanitizeErrorMessage, tasks, agents, artifacts, memoryStore, safePersis
|
|
|
11
11
|
import { handleDispatch, handleRoute, handleBroadcast, handleAggregate, } from './handlers.orchestration.js';
|
|
12
12
|
import { toolDefinitions } from './tool-definitions.js';
|
|
13
13
|
import { handleAgentManage, handleAgentQuery } from './v3/agent-tools.js';
|
|
14
|
-
import { handleSessionManage, handleSessionQuery, handleSessionQueueConfig, } from './v3/session-tools.js';
|
|
14
|
+
import { handleSessionManage, handleSessionQuery, handleSessionQueueConfig, handleSessionResume, } from './v3/session-tools.js';
|
|
15
15
|
import { handleTool as handleTaskTool } from './v3/task-tools.js';
|
|
16
16
|
import { handleDataManage, handleDataQuery, handleSystemQuery, handleLockManage, handleSessionMonitoring, handleConfigManage, } from './v3/utility-tools.js';
|
|
17
17
|
export { toolDefinitions };
|
|
@@ -26,7 +26,7 @@ export { toolDefinitions };
|
|
|
26
26
|
* Note: LRUCache is compatible with Map interface for our purposes.
|
|
27
27
|
* We cast to the expected types for HandlerContext compatibility.
|
|
28
28
|
*/
|
|
29
|
-
function createHandlerContext() {
|
|
29
|
+
function createHandlerContext(server) {
|
|
30
30
|
return {
|
|
31
31
|
sessions: new Map(), // Not needed for v3 handlers (session-tools manages its own)
|
|
32
32
|
tasks: tasks,
|
|
@@ -35,6 +35,7 @@ function createHandlerContext() {
|
|
|
35
35
|
memoryStore,
|
|
36
36
|
sessionManager: new SessionManager(),
|
|
37
37
|
registry: AdapterRegistry.getInstance(),
|
|
38
|
+
server,
|
|
38
39
|
getPersistence,
|
|
39
40
|
safePersist,
|
|
40
41
|
};
|
|
@@ -48,13 +49,13 @@ function getOutputFormat(args) {
|
|
|
48
49
|
/**
|
|
49
50
|
* Route tool handler to the correct module (v3.0 consolidated)
|
|
50
51
|
*/
|
|
51
|
-
async function executeToolHandler(name, args) {
|
|
52
|
+
async function executeToolHandler(name, args, server) {
|
|
52
53
|
// Create shared context for v3 handlers
|
|
53
|
-
const context = createHandlerContext();
|
|
54
|
+
const context = createHandlerContext(server);
|
|
54
55
|
// V3.0 Consolidated Tools Routing
|
|
55
56
|
switch (name) {
|
|
56
57
|
// ========================================================================
|
|
57
|
-
// SESSION MANAGEMENT (
|
|
58
|
+
// SESSION MANAGEMENT (4 tools)
|
|
58
59
|
// ========================================================================
|
|
59
60
|
case 'session_manage':
|
|
60
61
|
return handleSessionManage(args);
|
|
@@ -62,6 +63,8 @@ async function executeToolHandler(name, args) {
|
|
|
62
63
|
return handleSessionQuery(args);
|
|
63
64
|
case 'session_queue_config':
|
|
64
65
|
return handleSessionQueueConfig(args);
|
|
66
|
+
case 'session_resume':
|
|
67
|
+
return handleSessionResume(args);
|
|
65
68
|
// ========================================================================
|
|
66
69
|
// AGENT MANAGEMENT (2 tools)
|
|
67
70
|
// ========================================================================
|
|
@@ -70,12 +73,14 @@ async function executeToolHandler(name, args) {
|
|
|
70
73
|
case 'agent_query':
|
|
71
74
|
return handleAgentQuery(args);
|
|
72
75
|
// ========================================================================
|
|
73
|
-
// TASK MANAGEMENT (
|
|
76
|
+
// TASK MANAGEMENT (6 tools)
|
|
74
77
|
// ========================================================================
|
|
75
78
|
case 'task_manage':
|
|
76
79
|
case 'task_execute':
|
|
77
80
|
case 'task_query':
|
|
78
81
|
case 'task_retry':
|
|
82
|
+
case 'task_checklist':
|
|
83
|
+
case 'task_subscribe':
|
|
79
84
|
return handleTaskTool(name, args, context);
|
|
80
85
|
// ========================================================================
|
|
81
86
|
// DATA MANAGEMENT (2 tools)
|
|
@@ -152,42 +157,44 @@ function formatResultAsTable(toolName, result) {
|
|
|
152
157
|
return null;
|
|
153
158
|
}
|
|
154
159
|
/**
|
|
155
|
-
*
|
|
156
|
-
*
|
|
160
|
+
* Create tool call handler with server instance
|
|
161
|
+
* Factory function that creates a handler with access to the MCP server
|
|
157
162
|
*/
|
|
158
|
-
export
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
163
|
+
export function createHandleToolCall(server) {
|
|
164
|
+
return async function handleToolCall(name, args) {
|
|
165
|
+
try {
|
|
166
|
+
addBreadcrumb(`Tool invoked: ${name}`, { args: JSON.stringify(args).slice(0, 200) }, 'info', 'tool');
|
|
167
|
+
const validatedArgs = validateToolInput(name, args);
|
|
168
|
+
const result = await executeToolHandler(name, validatedArgs, server);
|
|
169
|
+
const format = getOutputFormat(validatedArgs);
|
|
170
|
+
if (format === 'table') {
|
|
171
|
+
const formatted = formatResultAsTable(name, result);
|
|
172
|
+
if (formatted !== null) {
|
|
173
|
+
return {
|
|
174
|
+
content: [{ type: 'text', text: formatted }],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
170
177
|
}
|
|
178
|
+
return {
|
|
179
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
180
|
+
isError: false,
|
|
181
|
+
};
|
|
171
182
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
content: [{ type: 'text', text: JSON.stringify({ error: message }) }],
|
|
189
|
-
isError: true,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
const message = sanitizeErrorMessage(error);
|
|
185
|
+
setErrorContext({
|
|
186
|
+
tool: name,
|
|
187
|
+
originalError: error instanceof Error ? error.message : String(error),
|
|
188
|
+
});
|
|
189
|
+
captureError(error, {
|
|
190
|
+
tool: name,
|
|
191
|
+
args: JSON.stringify(args).slice(0, 200),
|
|
192
|
+
});
|
|
193
|
+
return {
|
|
194
|
+
content: [{ type: 'text', text: JSON.stringify({ error: message }) }],
|
|
195
|
+
isError: true,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
};
|
|
192
199
|
}
|
|
193
200
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG9F,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EACL,oBAAoB,EACpB,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;;;;;;;;GAUG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO;QACL,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,6DAA6D;QAClF,KAAK,EAAE,KAA8D;QACrE,MAAM,EAAE,MAAgE;QACxE,SAAS,EAAE,SAAsE;QACjF,WAAW;QACX,cAAc,EAAE,IAAI,cAAc,EAAE;QACpC,QAAQ,EAAE,eAAe,CAAC,WAAW,EAAE;QACvC,MAAM;QACN,cAAc;QACd,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAA6B;IACpD,OAAQ,IAAI,CAAC,QAAQ,CAAY,IAAI,MAAM,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAY,EACZ,IAA6B,EAC7B,MAAc;IAEd,wCAAwC;IACxC,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7C,kCAAkC;IAClC,QAAQ,IAAI,EAAE,CAAC;QACb,2EAA2E;QAC3E,+BAA+B;QAC/B,2EAA2E;QAC3E,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,eAAe;YAClB,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,sBAAsB;YACzB,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEnC,2EAA2E;QAC3E,6BAA6B;QAC7B,2EAA2E;QAC3E,KAAK,cAAc;YACjB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEhC,2EAA2E;QAC3E,4BAA4B;QAC5B,2EAA2E;QAC3E,KAAK,aAAa,CAAC;QACnB,KAAK,cAAc,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7C,2EAA2E;QAC3E,4BAA4B;QAC5B,2EAA2E;QAC3E,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,KAAK,YAAY;YACf,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAExC,2EAA2E;QAC3E,0BAA0B;QAC1B,2EAA2E;QAC3E,KAAK,cAAc;YACjB,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,KAAK,oBAAoB;YACvB,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,KAAK,eAAe;YAClB,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE3C,2EAA2E;QAC3E,4CAA4C;QAC5C,2EAA2E;QAC3E,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAE/B;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,MAAe;IAC5D,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,MAAiC,CAAC;IAE/C,QAAQ,QAAQ,EAAE,CAAC;QACjB,yCAAyC;QACzC,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAOnB,CAAC;YACd,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,GAAG,CAAC;oBACJ,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE;iBACvC,CAAC,CAAC,CAAC;gBACJ,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM;QACR,CAAC;QAED,sCAAsC;QACtC,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAOb,CAAC;YACd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,MAAM;QACR,CAAC;QAED,uCAAuC;QACvC,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAOf,CAAC;YACd,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAc;IAKd,OAAO,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAA6B;QAE7B,IAAI,CAAC;YACH,aAAa,CACX,iBAAiB,IAAI,EAAE,EACvB,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAC5C,MAAM,EACN,MAAM,CACP,CAAC;YAEF,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;YAE9C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;qBAC7C,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzD,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE5C,eAAe,CAAC;gBACd,IAAI,EAAE,IAAI;gBACV,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACtE,CAAC,CAAC;YAEH,YAAY,CAAC,KAAK,EAAE;gBAClB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACzC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|