@modelcontextprotocol/sdk 1.0.4 → 1.1.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.
@@ -1,74 +0,0 @@
1
- import { InMemoryTransport } from "./inMemory.js";
2
- describe("InMemoryTransport", () => {
3
- let clientTransport;
4
- let serverTransport;
5
- beforeEach(() => {
6
- [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
7
- });
8
- test("should create linked pair", () => {
9
- expect(clientTransport).toBeDefined();
10
- expect(serverTransport).toBeDefined();
11
- });
12
- test("should start without error", async () => {
13
- await expect(clientTransport.start()).resolves.not.toThrow();
14
- await expect(serverTransport.start()).resolves.not.toThrow();
15
- });
16
- test("should send message from client to server", async () => {
17
- const message = {
18
- jsonrpc: "2.0",
19
- method: "test",
20
- id: 1,
21
- };
22
- let receivedMessage;
23
- serverTransport.onmessage = (msg) => {
24
- receivedMessage = msg;
25
- };
26
- await clientTransport.send(message);
27
- expect(receivedMessage).toEqual(message);
28
- });
29
- test("should send message from server to client", async () => {
30
- const message = {
31
- jsonrpc: "2.0",
32
- method: "test",
33
- id: 1,
34
- };
35
- let receivedMessage;
36
- clientTransport.onmessage = (msg) => {
37
- receivedMessage = msg;
38
- };
39
- await serverTransport.send(message);
40
- expect(receivedMessage).toEqual(message);
41
- });
42
- test("should handle close", async () => {
43
- let clientClosed = false;
44
- let serverClosed = false;
45
- clientTransport.onclose = () => {
46
- clientClosed = true;
47
- };
48
- serverTransport.onclose = () => {
49
- serverClosed = true;
50
- };
51
- await clientTransport.close();
52
- expect(clientClosed).toBe(true);
53
- expect(serverClosed).toBe(true);
54
- });
55
- test("should throw error when sending after close", async () => {
56
- await clientTransport.close();
57
- await expect(clientTransport.send({ jsonrpc: "2.0", method: "test", id: 1 })).rejects.toThrow("Not connected");
58
- });
59
- test("should queue messages sent before start", async () => {
60
- const message = {
61
- jsonrpc: "2.0",
62
- method: "test",
63
- id: 1,
64
- };
65
- let receivedMessage;
66
- serverTransport.onmessage = (msg) => {
67
- receivedMessage = msg;
68
- };
69
- await clientTransport.send(message);
70
- await serverTransport.start();
71
- expect(receivedMessage).toEqual(message);
72
- });
73
- });
74
- //# sourceMappingURL=inMemory.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inMemory.test.js","sourceRoot":"","sources":["../src/inMemory.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/server/index.test.ts"],"names":[],"mappings":""}
@@ -1,408 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
- /* eslint-disable no-constant-binary-expression */
3
- /* eslint-disable @typescript-eslint/no-unused-expressions */
4
- import { Server } from "./index.js";
5
- import { z } from "zod";
6
- import { RequestSchema, NotificationSchema, ResultSchema, LATEST_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, CreateMessageRequestSchema, ListPromptsRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, SetLevelRequestSchema, ErrorCode, } from "../types.js";
7
- import { InMemoryTransport } from "../inMemory.js";
8
- import { Client } from "../client/index.js";
9
- test("should accept latest protocol version", async () => {
10
- var _a;
11
- let sendPromiseResolve;
12
- const sendPromise = new Promise((resolve) => {
13
- sendPromiseResolve = resolve;
14
- });
15
- const serverTransport = {
16
- start: jest.fn().mockResolvedValue(undefined),
17
- close: jest.fn().mockResolvedValue(undefined),
18
- send: jest.fn().mockImplementation((message) => {
19
- if (message.id === 1 && message.result) {
20
- expect(message.result).toEqual({
21
- protocolVersion: LATEST_PROTOCOL_VERSION,
22
- capabilities: expect.any(Object),
23
- serverInfo: {
24
- name: "test server",
25
- version: "1.0",
26
- },
27
- });
28
- sendPromiseResolve(undefined);
29
- }
30
- return Promise.resolve();
31
- }),
32
- };
33
- const server = new Server({
34
- name: "test server",
35
- version: "1.0",
36
- }, {
37
- capabilities: {
38
- prompts: {},
39
- resources: {},
40
- tools: {},
41
- logging: {},
42
- },
43
- });
44
- await server.connect(serverTransport);
45
- // Simulate initialize request with latest version
46
- (_a = serverTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(serverTransport, {
47
- jsonrpc: "2.0",
48
- id: 1,
49
- method: "initialize",
50
- params: {
51
- protocolVersion: LATEST_PROTOCOL_VERSION,
52
- capabilities: {},
53
- clientInfo: {
54
- name: "test client",
55
- version: "1.0",
56
- },
57
- },
58
- });
59
- await expect(sendPromise).resolves.toBeUndefined();
60
- });
61
- test("should accept supported older protocol version", async () => {
62
- var _a;
63
- const OLD_VERSION = SUPPORTED_PROTOCOL_VERSIONS[1];
64
- let sendPromiseResolve;
65
- const sendPromise = new Promise((resolve) => {
66
- sendPromiseResolve = resolve;
67
- });
68
- const serverTransport = {
69
- start: jest.fn().mockResolvedValue(undefined),
70
- close: jest.fn().mockResolvedValue(undefined),
71
- send: jest.fn().mockImplementation((message) => {
72
- if (message.id === 1 && message.result) {
73
- expect(message.result).toEqual({
74
- protocolVersion: OLD_VERSION,
75
- capabilities: expect.any(Object),
76
- serverInfo: {
77
- name: "test server",
78
- version: "1.0",
79
- },
80
- });
81
- sendPromiseResolve(undefined);
82
- }
83
- return Promise.resolve();
84
- }),
85
- };
86
- const server = new Server({
87
- name: "test server",
88
- version: "1.0",
89
- }, {
90
- capabilities: {
91
- prompts: {},
92
- resources: {},
93
- tools: {},
94
- logging: {},
95
- },
96
- });
97
- await server.connect(serverTransport);
98
- // Simulate initialize request with older version
99
- (_a = serverTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(serverTransport, {
100
- jsonrpc: "2.0",
101
- id: 1,
102
- method: "initialize",
103
- params: {
104
- protocolVersion: OLD_VERSION,
105
- capabilities: {},
106
- clientInfo: {
107
- name: "test client",
108
- version: "1.0",
109
- },
110
- },
111
- });
112
- await expect(sendPromise).resolves.toBeUndefined();
113
- });
114
- test("should handle unsupported protocol version", async () => {
115
- var _a;
116
- let sendPromiseResolve;
117
- const sendPromise = new Promise((resolve) => {
118
- sendPromiseResolve = resolve;
119
- });
120
- const serverTransport = {
121
- start: jest.fn().mockResolvedValue(undefined),
122
- close: jest.fn().mockResolvedValue(undefined),
123
- send: jest.fn().mockImplementation((message) => {
124
- if (message.id === 1 && message.result) {
125
- expect(message.result).toEqual({
126
- protocolVersion: LATEST_PROTOCOL_VERSION,
127
- capabilities: expect.any(Object),
128
- serverInfo: {
129
- name: "test server",
130
- version: "1.0",
131
- },
132
- });
133
- sendPromiseResolve(undefined);
134
- }
135
- return Promise.resolve();
136
- }),
137
- };
138
- const server = new Server({
139
- name: "test server",
140
- version: "1.0",
141
- }, {
142
- capabilities: {
143
- prompts: {},
144
- resources: {},
145
- tools: {},
146
- logging: {},
147
- },
148
- });
149
- await server.connect(serverTransport);
150
- // Simulate initialize request with unsupported version
151
- (_a = serverTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(serverTransport, {
152
- jsonrpc: "2.0",
153
- id: 1,
154
- method: "initialize",
155
- params: {
156
- protocolVersion: "invalid-version",
157
- capabilities: {},
158
- clientInfo: {
159
- name: "test client",
160
- version: "1.0",
161
- },
162
- },
163
- });
164
- await expect(sendPromise).resolves.toBeUndefined();
165
- });
166
- test("should respect client capabilities", async () => {
167
- const server = new Server({
168
- name: "test server",
169
- version: "1.0",
170
- }, {
171
- capabilities: {
172
- prompts: {},
173
- resources: {},
174
- tools: {},
175
- logging: {},
176
- },
177
- enforceStrictCapabilities: true,
178
- });
179
- const client = new Client({
180
- name: "test client",
181
- version: "1.0",
182
- }, {
183
- capabilities: {
184
- sampling: {},
185
- },
186
- });
187
- // Implement request handler for sampling/createMessage
188
- client.setRequestHandler(CreateMessageRequestSchema, async (request) => {
189
- // Mock implementation of createMessage
190
- return {
191
- model: "test-model",
192
- role: "assistant",
193
- content: {
194
- type: "text",
195
- text: "This is a test response",
196
- },
197
- };
198
- });
199
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
200
- await Promise.all([
201
- client.connect(clientTransport),
202
- server.connect(serverTransport),
203
- ]);
204
- expect(server.getClientCapabilities()).toEqual({ sampling: {} });
205
- // This should work because sampling is supported by the client
206
- await expect(server.createMessage({
207
- messages: [],
208
- maxTokens: 10,
209
- })).resolves.not.toThrow();
210
- // This should still throw because roots are not supported by the client
211
- await expect(server.listRoots()).rejects.toThrow(/^Client does not support/);
212
- });
213
- test("should respect server notification capabilities", async () => {
214
- const server = new Server({
215
- name: "test server",
216
- version: "1.0",
217
- }, {
218
- capabilities: {
219
- logging: {},
220
- },
221
- enforceStrictCapabilities: true,
222
- });
223
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
224
- await server.connect(serverTransport);
225
- // This should work because logging is supported by the server
226
- await expect(server.sendLoggingMessage({
227
- level: "info",
228
- data: "Test log message",
229
- })).resolves.not.toThrow();
230
- // This should throw because resource notificaitons are not supported by the server
231
- await expect(server.sendResourceUpdated({ uri: "test://resource" })).rejects.toThrow(/^Server does not support/);
232
- });
233
- test("should only allow setRequestHandler for declared capabilities", () => {
234
- const server = new Server({
235
- name: "test server",
236
- version: "1.0",
237
- }, {
238
- capabilities: {
239
- prompts: {},
240
- resources: {},
241
- },
242
- });
243
- // These should work because the capabilities are declared
244
- expect(() => {
245
- server.setRequestHandler(ListPromptsRequestSchema, () => ({ prompts: [] }));
246
- }).not.toThrow();
247
- expect(() => {
248
- server.setRequestHandler(ListResourcesRequestSchema, () => ({
249
- resources: [],
250
- }));
251
- }).not.toThrow();
252
- // These should throw because the capabilities are not declared
253
- expect(() => {
254
- server.setRequestHandler(ListToolsRequestSchema, () => ({ tools: [] }));
255
- }).toThrow(/^Server does not support tools/);
256
- expect(() => {
257
- server.setRequestHandler(SetLevelRequestSchema, () => ({}));
258
- }).toThrow(/^Server does not support logging/);
259
- });
260
- /*
261
- Test that custom request/notification/result schemas can be used with the Server class.
262
- */
263
- test("should typecheck", () => {
264
- const GetWeatherRequestSchema = RequestSchema.extend({
265
- method: z.literal("weather/get"),
266
- params: z.object({
267
- city: z.string(),
268
- }),
269
- });
270
- const GetForecastRequestSchema = RequestSchema.extend({
271
- method: z.literal("weather/forecast"),
272
- params: z.object({
273
- city: z.string(),
274
- days: z.number(),
275
- }),
276
- });
277
- const WeatherForecastNotificationSchema = NotificationSchema.extend({
278
- method: z.literal("weather/alert"),
279
- params: z.object({
280
- severity: z.enum(["warning", "watch"]),
281
- message: z.string(),
282
- }),
283
- });
284
- const WeatherRequestSchema = GetWeatherRequestSchema.or(GetForecastRequestSchema);
285
- const WeatherNotificationSchema = WeatherForecastNotificationSchema;
286
- const WeatherResultSchema = ResultSchema.extend({
287
- temperature: z.number(),
288
- conditions: z.string(),
289
- });
290
- // Create a typed Server for weather data
291
- const weatherServer = new Server({
292
- name: "WeatherServer",
293
- version: "1.0.0",
294
- }, {
295
- capabilities: {
296
- prompts: {},
297
- resources: {},
298
- tools: {},
299
- logging: {},
300
- },
301
- });
302
- // Typecheck that only valid weather requests/notifications/results are allowed
303
- weatherServer.setRequestHandler(GetWeatherRequestSchema, (request) => {
304
- return {
305
- temperature: 72,
306
- conditions: "sunny",
307
- };
308
- });
309
- weatherServer.setNotificationHandler(WeatherForecastNotificationSchema, (notification) => {
310
- console.log(`Weather alert: ${notification.params.message}`);
311
- });
312
- });
313
- test("should handle server cancelling a request", async () => {
314
- const server = new Server({
315
- name: "test server",
316
- version: "1.0",
317
- }, {
318
- capabilities: {
319
- sampling: {},
320
- },
321
- });
322
- const client = new Client({
323
- name: "test client",
324
- version: "1.0",
325
- }, {
326
- capabilities: {
327
- sampling: {},
328
- },
329
- });
330
- // Set up client to delay responding to createMessage
331
- client.setRequestHandler(CreateMessageRequestSchema, async (_request, extra) => {
332
- await new Promise((resolve) => setTimeout(resolve, 1000));
333
- return {
334
- model: "test",
335
- role: "assistant",
336
- content: {
337
- type: "text",
338
- text: "Test response",
339
- },
340
- };
341
- });
342
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
343
- await Promise.all([
344
- client.connect(clientTransport),
345
- server.connect(serverTransport),
346
- ]);
347
- // Set up abort controller
348
- const controller = new AbortController();
349
- // Issue request but cancel it immediately
350
- const createMessagePromise = server.createMessage({
351
- messages: [],
352
- maxTokens: 10,
353
- }, {
354
- signal: controller.signal,
355
- });
356
- controller.abort("Cancelled by test");
357
- // Request should be rejected
358
- await expect(createMessagePromise).rejects.toBe("Cancelled by test");
359
- });
360
- test("should handle request timeout", async () => {
361
- const server = new Server({
362
- name: "test server",
363
- version: "1.0",
364
- }, {
365
- capabilities: {
366
- sampling: {},
367
- },
368
- });
369
- // Set up client that delays responses
370
- const client = new Client({
371
- name: "test client",
372
- version: "1.0",
373
- }, {
374
- capabilities: {
375
- sampling: {},
376
- },
377
- });
378
- client.setRequestHandler(CreateMessageRequestSchema, async (_request, extra) => {
379
- await new Promise((resolve, reject) => {
380
- const timeout = setTimeout(resolve, 100);
381
- extra.signal.addEventListener("abort", () => {
382
- clearTimeout(timeout);
383
- reject(extra.signal.reason);
384
- });
385
- });
386
- return {
387
- model: "test",
388
- role: "assistant",
389
- content: {
390
- type: "text",
391
- text: "Test response",
392
- },
393
- };
394
- });
395
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
396
- await Promise.all([
397
- client.connect(clientTransport),
398
- server.connect(serverTransport),
399
- ]);
400
- // Request with 0 msec timeout should fail immediately
401
- await expect(server.createMessage({
402
- messages: [],
403
- maxTokens: 10,
404
- }, { timeout: 0 })).rejects.toMatchObject({
405
- code: ErrorCode.RequestTimeout,
406
- });
407
- });
408
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/server/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=stdio.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdio.test.d.ts","sourceRoot":"","sources":["../../src/server/stdio.test.ts"],"names":[],"mappings":""}
@@ -1,87 +0,0 @@
1
- import { Readable, Writable } from "node:stream";
2
- import { ReadBuffer, serializeMessage } from "../shared/stdio.js";
3
- import { StdioServerTransport } from "./stdio.js";
4
- let input;
5
- let outputBuffer;
6
- let output;
7
- beforeEach(() => {
8
- input = new Readable({
9
- // We'll use input.push() instead.
10
- read: () => { },
11
- });
12
- outputBuffer = new ReadBuffer();
13
- output = new Writable({
14
- write(chunk, encoding, callback) {
15
- outputBuffer.append(chunk);
16
- callback();
17
- },
18
- });
19
- });
20
- test("should start then close cleanly", async () => {
21
- const server = new StdioServerTransport(input, output);
22
- server.onerror = (error) => {
23
- throw error;
24
- };
25
- let didClose = false;
26
- server.onclose = () => {
27
- didClose = true;
28
- };
29
- await server.start();
30
- expect(didClose).toBeFalsy();
31
- await server.close();
32
- expect(didClose).toBeTruthy();
33
- });
34
- test("should not read until started", async () => {
35
- const server = new StdioServerTransport(input, output);
36
- server.onerror = (error) => {
37
- throw error;
38
- };
39
- let didRead = false;
40
- const readMessage = new Promise((resolve) => {
41
- server.onmessage = (message) => {
42
- didRead = true;
43
- resolve(message);
44
- };
45
- });
46
- const message = {
47
- jsonrpc: "2.0",
48
- id: 1,
49
- method: "ping",
50
- };
51
- input.push(serializeMessage(message));
52
- expect(didRead).toBeFalsy();
53
- await server.start();
54
- expect(await readMessage).toEqual(message);
55
- });
56
- test("should read multiple messages", async () => {
57
- const server = new StdioServerTransport(input, output);
58
- server.onerror = (error) => {
59
- throw error;
60
- };
61
- const messages = [
62
- {
63
- jsonrpc: "2.0",
64
- id: 1,
65
- method: "ping",
66
- },
67
- {
68
- jsonrpc: "2.0",
69
- method: "notifications/initialized",
70
- },
71
- ];
72
- const readMessages = [];
73
- const finished = new Promise((resolve) => {
74
- server.onmessage = (message) => {
75
- readMessages.push(message);
76
- if (JSON.stringify(message) === JSON.stringify(messages[1])) {
77
- resolve();
78
- }
79
- };
80
- });
81
- input.push(serializeMessage(messages[0]));
82
- input.push(serializeMessage(messages[1]));
83
- await server.start();
84
- await finished;
85
- expect(readMessages).toEqual(messages);
86
- });
87
- //# sourceMappingURL=stdio.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdio.test.js","sourceRoot":"","sources":["../../src/server/stdio.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=stdio.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdio.test.d.ts","sourceRoot":"","sources":["../../src/shared/stdio.test.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- import { ReadBuffer } from "./stdio.js";
2
- const testMessage = {
3
- jsonrpc: "2.0",
4
- method: "foobar",
5
- };
6
- test("should have no messages after initialization", () => {
7
- const readBuffer = new ReadBuffer();
8
- expect(readBuffer.readMessage()).toBeNull();
9
- });
10
- test("should only yield a message after a newline", () => {
11
- const readBuffer = new ReadBuffer();
12
- readBuffer.append(Buffer.from(JSON.stringify(testMessage)));
13
- expect(readBuffer.readMessage()).toBeNull();
14
- readBuffer.append(Buffer.from("\n"));
15
- expect(readBuffer.readMessage()).toEqual(testMessage);
16
- expect(readBuffer.readMessage()).toBeNull();
17
- });
18
- test("should be reusable after clearing", () => {
19
- const readBuffer = new ReadBuffer();
20
- readBuffer.append(Buffer.from("foobar"));
21
- readBuffer.clear();
22
- expect(readBuffer.readMessage()).toBeNull();
23
- readBuffer.append(Buffer.from(JSON.stringify(testMessage)));
24
- readBuffer.append(Buffer.from("\n"));
25
- expect(readBuffer.readMessage()).toEqual(testMessage);
26
- });
27
- //# sourceMappingURL=stdio.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdio.test.js","sourceRoot":"","sources":["../../src/shared/stdio.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,GAAmB;IAClC,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACxD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACvD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEpC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC7C,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEpC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}