@a2anet/a2a-utils 0.4.0 → 0.6.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,11 +1,123 @@
1
+ import { z } from "zod";
1
2
  import { ArtifactSettings } from "../types.js";
2
3
  import type { A2ASession } from "./a2a-session.js";
3
4
  export declare const TEXT_MINIMIZED_TIP = "Text was minimized. Call view_text_artifact() to view specific line ranges.";
4
5
  export declare const DATA_MINIMIZED_TIP = "Data was minimized. Call view_data_artifact() to navigate to specific data.";
6
+ declare const getAgentSchema: z.ZodObject<{
7
+ agentId: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ agentId: string;
10
+ }, {
11
+ agentId: string;
12
+ }>;
13
+ declare const sendMessageSchema: z.ZodObject<{
14
+ agentId: z.ZodString;
15
+ message: z.ZodString;
16
+ contextId: z.ZodOptional<z.ZodString>;
17
+ taskId: z.ZodOptional<z.ZodString>;
18
+ timeout: z.ZodOptional<z.ZodNumber>;
19
+ data: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
20
+ files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ message: string;
23
+ agentId: string;
24
+ data?: unknown[] | undefined;
25
+ files?: string[] | undefined;
26
+ taskId?: string | undefined;
27
+ timeout?: number | undefined;
28
+ contextId?: string | undefined;
29
+ }, {
30
+ message: string;
31
+ agentId: string;
32
+ data?: unknown[] | undefined;
33
+ files?: string[] | undefined;
34
+ taskId?: string | undefined;
35
+ timeout?: number | undefined;
36
+ contextId?: string | undefined;
37
+ }>;
38
+ declare const getTaskSchema: z.ZodObject<{
39
+ agentId: z.ZodString;
40
+ taskId: z.ZodString;
41
+ timeout: z.ZodOptional<z.ZodNumber>;
42
+ pollInterval: z.ZodOptional<z.ZodNumber>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ agentId: string;
45
+ taskId: string;
46
+ timeout?: number | undefined;
47
+ pollInterval?: number | undefined;
48
+ }, {
49
+ agentId: string;
50
+ taskId: string;
51
+ timeout?: number | undefined;
52
+ pollInterval?: number | undefined;
53
+ }>;
54
+ declare const viewTextArtifactSchema: z.ZodObject<{
55
+ agentId: z.ZodString;
56
+ taskId: z.ZodString;
57
+ artifactId: z.ZodString;
58
+ lineStart: z.ZodOptional<z.ZodNumber>;
59
+ lineEnd: z.ZodOptional<z.ZodNumber>;
60
+ characterStart: z.ZodOptional<z.ZodNumber>;
61
+ characterEnd: z.ZodOptional<z.ZodNumber>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ agentId: string;
64
+ taskId: string;
65
+ artifactId: string;
66
+ lineStart?: number | undefined;
67
+ lineEnd?: number | undefined;
68
+ characterStart?: number | undefined;
69
+ characterEnd?: number | undefined;
70
+ }, {
71
+ agentId: string;
72
+ taskId: string;
73
+ artifactId: string;
74
+ lineStart?: number | undefined;
75
+ lineEnd?: number | undefined;
76
+ characterStart?: number | undefined;
77
+ characterEnd?: number | undefined;
78
+ }>;
79
+ declare const viewDataArtifactSchema: z.ZodObject<{
80
+ agentId: z.ZodString;
81
+ taskId: z.ZodString;
82
+ artifactId: z.ZodString;
83
+ jsonPath: z.ZodOptional<z.ZodString>;
84
+ rows: z.ZodOptional<z.ZodString>;
85
+ columns: z.ZodOptional<z.ZodString>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ agentId: string;
88
+ taskId: string;
89
+ artifactId: string;
90
+ jsonPath?: string | undefined;
91
+ rows?: string | undefined;
92
+ columns?: string | undefined;
93
+ }, {
94
+ agentId: string;
95
+ taskId: string;
96
+ artifactId: string;
97
+ jsonPath?: string | undefined;
98
+ rows?: string | undefined;
99
+ columns?: string | undefined;
100
+ }>;
101
+ /**
102
+ * A tool definition with name, description, Zod schema, and execute function.
103
+ *
104
+ * Individual tool properties on `A2ATools` are more specifically typed via
105
+ * inference. This interface is used for the `toolDefinitions` array where
106
+ * the concrete schema type is erased.
107
+ */
108
+ export interface A2AToolDefinition {
109
+ readonly name: string;
110
+ readonly description: string;
111
+ readonly schema: z.ZodObject<z.ZodRawShape>;
112
+ readonly execute: (params: any) => Promise<Record<string, unknown>>;
113
+ }
5
114
  /**
6
115
  * LLM-friendly tools that can be used out-of-the-box with agent frameworks.
7
116
  *
8
- * Each method has LLM-friendly docstrings, returns JSON-serialisable objects, and returns actionable error messages.
117
+ * Each tool has LLM-friendly docstrings, returns JSON-serialisable objects, and returns actionable error messages.
118
+ *
119
+ * Each tool is an instance property with `name`, `description`, `schema` (Zod),
120
+ * and `execute`. Use the `toolDefinitions` getter for the full array.
9
121
  */
10
122
  export declare class A2ATools {
11
123
  private readonly session;
@@ -13,140 +125,148 @@ export declare class A2ATools {
13
125
  constructor(session: A2ASession, opts?: {
14
126
  artifactSettings?: ArtifactSettings | null;
15
127
  });
16
- /**
17
- * List all available agents with their names and descriptions.
18
- *
19
- * Use this first to discover what agents are available before sending messages.
20
- * Each agent has a unique ID (the key) that you'll need for other tools like
21
- * send_message and get_agent.
22
- *
23
- * Returns an object mapping agent IDs to their name and description.
24
- * If any agents failed to load, an "errors" field is included with details.
25
- */
26
- getAgents(): Promise<Record<string, unknown>>;
27
- /**
28
- * Get detailed information about a specific agent, including its skills.
29
- *
30
- * Use this after get_agents to learn more about what a specific agent can do.
31
- * The response includes the agent's name, description, and a list of skills
32
- * with their descriptions.
33
- *
34
- * @param agentId - The agent's unique identifier (from get_agents).
35
- */
36
- getAgent(agentId: string): Promise<Record<string, unknown>>;
37
- /**
38
- * Send a message to an agent and receive a structured response.
39
- *
40
- * This is the primary way to communicate with agents. The response includes
41
- * the agent's reply and any generated artifacts.
42
- *
43
- * Artifact data in responses may be minimized for display. Fields prefixed
44
- * with "_" indicate metadata about minimized content. Use view_text_artifact
45
- * or view_data_artifact to access full artifact data.
46
- *
47
- * If the task is still in progress after the timeout, the response includes
48
- * a task_id. Use get_task with that task_id to continue monitoring.
49
- *
50
- * @param agentId - ID of the agent to message (from get_agents).
51
- * @param message - The message content to send.
52
- * @param contextId - Continue an existing conversation by providing its context ID.
53
- * Omit to start a new conversation.
54
- * @param taskId - Attach to an existing task (for input_required flows).
55
- * @param timeout - Override the default timeout in seconds.
56
- */
57
- sendMessage(agentId: string, message: string, contextId?: string | null, taskId?: string | null, timeout?: number | null): Promise<Record<string, unknown>>;
58
- /**
59
- * Check the progress of a task that is still in progress.
60
- *
61
- * Use this after send_message returns a task in a non-terminal state
62
- * (e.g. "working") to monitor its progress.
63
- *
64
- * If the task is still running after the timeout, the current state is
65
- * returned. Call get_task again to continue monitoring.
66
- *
67
- * @param agentId - ID of the agent that owns the task.
68
- * @param taskId - Task ID from a previous send_message response.
69
- * @param timeout - Override the monitoring timeout in seconds.
70
- * @param pollInterval - Override the interval between status checks in seconds.
71
- */
72
- getTask(agentId: string, taskId: string, timeout?: number | null, pollInterval?: number | null): Promise<Record<string, unknown>>;
73
- /**
74
- * View text content from an artifact, optionally selecting a range.
75
- *
76
- * Use this for artifacts containing text (documents, logs, code, etc.).
77
- * You can select by line range OR character range, but not both.
78
- *
79
- * @param agentId - ID of the agent that produced the artifact.
80
- * @param taskId - Task ID containing the artifact.
81
- * @param artifactId - The artifact's unique identifier (from the task's artifacts list).
82
- * @param lineStart - Starting line number (1-based, inclusive).
83
- * @param lineEnd - Ending line number (1-based, inclusive).
84
- * @param characterStart - Starting character index (0-based, inclusive).
85
- * @param characterEnd - Ending character index (0-based, exclusive).
86
- */
87
- viewTextArtifact(agentId: string, taskId: string, artifactId: string, lineStart?: number | null, lineEnd?: number | null, characterStart?: number | null, characterEnd?: number | null): Promise<Record<string, unknown>>;
88
- /**
89
- * View structured data from an artifact with optional filtering.
90
- *
91
- * Use this for artifacts containing JSON data (objects, arrays, tables).
92
- * You can navigate to specific data with json_path, then filter with
93
- * rows and columns for tabular data.
94
- *
95
- * @param agentId - ID of the agent that produced the artifact.
96
- * @param taskId - Task ID containing the artifact.
97
- * @param artifactId - The artifact's unique identifier (from the task's artifacts list).
98
- * @param jsonPath - Dot-separated path to navigate into the data (e.g. "results.items").
99
- * @param rows - Row selection for list data. Examples: "0" (single row), "0-10" (range),
100
- * "0,2,5" (specific rows), "all" (every row).
101
- * @param columns - Column selection for tabular data (list of objects). Examples:
102
- * "name" (single column), "name,age" (multiple columns), "all" (every column).
103
- */
104
- viewDataArtifact(agentId: string, taskId: string, artifactId: string, jsonPath?: string | null, rows?: string | null, columns?: string | null): Promise<Record<string, unknown>>;
105
- /**
106
- * Convert an A2A Message to MessageForLLM.
107
- *
108
- * Combines all TextParts into a single TextPartForLLM.
109
- * FileParts are ignored; file handling is done at the artifact level.
110
- */
128
+ readonly getAgents: {
129
+ name: string;
130
+ description: string;
131
+ schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
132
+ execute: () => Promise<Record<string, Record<string, unknown>> | {
133
+ error: boolean;
134
+ error_message: string;
135
+ }>;
136
+ };
137
+ readonly getAgent: {
138
+ name: string;
139
+ description: string;
140
+ schema: z.ZodObject<{
141
+ agentId: z.ZodString;
142
+ }, "strip", z.ZodTypeAny, {
143
+ agentId: string;
144
+ }, {
145
+ agentId: string;
146
+ }>;
147
+ execute: ({ agentId }: z.infer<typeof getAgentSchema>) => Promise<Record<string, unknown>>;
148
+ };
149
+ readonly sendMessage: {
150
+ name: string;
151
+ description: string;
152
+ schema: z.ZodObject<{
153
+ agentId: z.ZodString;
154
+ message: z.ZodString;
155
+ contextId: z.ZodOptional<z.ZodString>;
156
+ taskId: z.ZodOptional<z.ZodString>;
157
+ timeout: z.ZodOptional<z.ZodNumber>;
158
+ data: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
159
+ files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
160
+ }, "strip", z.ZodTypeAny, {
161
+ message: string;
162
+ agentId: string;
163
+ data?: unknown[] | undefined;
164
+ files?: string[] | undefined;
165
+ taskId?: string | undefined;
166
+ timeout?: number | undefined;
167
+ contextId?: string | undefined;
168
+ }, {
169
+ message: string;
170
+ agentId: string;
171
+ data?: unknown[] | undefined;
172
+ files?: string[] | undefined;
173
+ taskId?: string | undefined;
174
+ timeout?: number | undefined;
175
+ contextId?: string | undefined;
176
+ }>;
177
+ execute: ({ agentId, message, contextId, taskId, timeout, data, files, }: z.infer<typeof sendMessageSchema>) => Promise<Record<string, unknown>>;
178
+ };
179
+ readonly getTask: {
180
+ name: string;
181
+ description: string;
182
+ schema: z.ZodObject<{
183
+ agentId: z.ZodString;
184
+ taskId: z.ZodString;
185
+ timeout: z.ZodOptional<z.ZodNumber>;
186
+ pollInterval: z.ZodOptional<z.ZodNumber>;
187
+ }, "strip", z.ZodTypeAny, {
188
+ agentId: string;
189
+ taskId: string;
190
+ timeout?: number | undefined;
191
+ pollInterval?: number | undefined;
192
+ }, {
193
+ agentId: string;
194
+ taskId: string;
195
+ timeout?: number | undefined;
196
+ pollInterval?: number | undefined;
197
+ }>;
198
+ execute: ({ agentId, taskId, timeout, pollInterval, }: z.infer<typeof getTaskSchema>) => Promise<Record<string, unknown>>;
199
+ };
200
+ readonly viewTextArtifact: {
201
+ name: string;
202
+ description: string;
203
+ schema: z.ZodObject<{
204
+ agentId: z.ZodString;
205
+ taskId: z.ZodString;
206
+ artifactId: z.ZodString;
207
+ lineStart: z.ZodOptional<z.ZodNumber>;
208
+ lineEnd: z.ZodOptional<z.ZodNumber>;
209
+ characterStart: z.ZodOptional<z.ZodNumber>;
210
+ characterEnd: z.ZodOptional<z.ZodNumber>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ agentId: string;
213
+ taskId: string;
214
+ artifactId: string;
215
+ lineStart?: number | undefined;
216
+ lineEnd?: number | undefined;
217
+ characterStart?: number | undefined;
218
+ characterEnd?: number | undefined;
219
+ }, {
220
+ agentId: string;
221
+ taskId: string;
222
+ artifactId: string;
223
+ lineStart?: number | undefined;
224
+ lineEnd?: number | undefined;
225
+ characterStart?: number | undefined;
226
+ characterEnd?: number | undefined;
227
+ }>;
228
+ execute: ({ agentId, taskId, artifactId, lineStart, lineEnd, characterStart, characterEnd, }: z.infer<typeof viewTextArtifactSchema>) => Promise<Record<string, unknown>>;
229
+ };
230
+ readonly viewDataArtifact: {
231
+ name: string;
232
+ description: string;
233
+ schema: z.ZodObject<{
234
+ agentId: z.ZodString;
235
+ taskId: z.ZodString;
236
+ artifactId: z.ZodString;
237
+ jsonPath: z.ZodOptional<z.ZodString>;
238
+ rows: z.ZodOptional<z.ZodString>;
239
+ columns: z.ZodOptional<z.ZodString>;
240
+ }, "strip", z.ZodTypeAny, {
241
+ agentId: string;
242
+ taskId: string;
243
+ artifactId: string;
244
+ jsonPath?: string | undefined;
245
+ rows?: string | undefined;
246
+ columns?: string | undefined;
247
+ }, {
248
+ agentId: string;
249
+ taskId: string;
250
+ artifactId: string;
251
+ jsonPath?: string | undefined;
252
+ rows?: string | undefined;
253
+ columns?: string | undefined;
254
+ }>;
255
+ execute: ({ agentId, taskId, artifactId, jsonPath, rows, columns, }: z.infer<typeof viewDataArtifactSchema>) => Promise<Record<string, unknown>>;
256
+ };
257
+ /** All tool definitions as an array. */
258
+ get toolDefinitions(): A2AToolDefinition[];
259
+ /** Convert an A2A Message to MessageForLLM. */
111
260
  private buildMessageForLlm;
112
261
  /** Convert a Task to TaskForLLM with artifact minimization and file path queries. */
113
262
  private buildTaskForLlm;
114
- /**
115
- * Look up an artifact through the resolution chain.
116
- *
117
- * 1. Check the task store (local cache)
118
- * 2. Fetch fresh via session.getTask (remote retrieval)
119
- *
120
- * @returns The Artifact.
121
- *
122
- * @throws Error if artifact cannot be found.
123
- */
263
+ /** Look up an artifact through the resolution chain. */
124
264
  private getArtifact;
125
- /**
126
- * Extract text content from artifact parts.
127
- *
128
- * @throws Error if artifact does not contain text content.
129
- */
130
265
  private static extractText;
131
- /**
132
- * Extract data content from artifact parts.
133
- *
134
- * @throws Error if artifact does not contain data content.
135
- */
136
266
  private static extractData;
137
- /**
138
- * Parse a rows string into the type expected by DataArtifacts.view.
139
- *
140
- * Accepts: "0" (single int), "0-10" (range string), "0,2,5" (comma-separated
141
- * list of ints), "all" (passthrough string), or null.
142
- */
143
- private static parseRows;
144
- /**
145
- * Parse a columns string into the type expected by DataArtifacts.view.
146
- *
147
- * Accepts: "name" (single column), "name,age" (comma-separated list),
148
- * "all" (passthrough string), or null.
149
- */
150
- private static parseColumns;
267
+ static parseRows(rows: string | null): number | number[] | string | null;
268
+ static parseColumns(columns: string | null): string | string[] | null;
269
+ private static buildFilePartForLlm;
151
270
  }
271
+ export {};
152
272
  //# sourceMappingURL=a2a-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-tools.d.ts","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAClF,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAElF;;;;GAIG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;KAAE;IAKtF;;;;;;;;;OASG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiBnD;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAgBjE;;;;;;;;;;;;;;;;;;;OAmBG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAkCnC;;;;;;;;;;;;;OAaG;IACG,OAAO,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA4BnC;;;;;;;;;;;;;OAaG;IACG,gBAAgB,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoCnC;;;;;;;;;;;;;;;OAeG;IACG,gBAAgB,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwCnC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA6B1B,qFAAqF;YACvE,eAAe;IAyC7B;;;;;;;;;OASG;YACW,WAAW;IA8BzB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IA2CxB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAmB9B"}
1
+ {"version":3,"file":"a2a-tools.d.ts","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAClF,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAMlF,QAAA,MAAM,cAAc;;;;;;EAElB,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EA2BrB,CAAC;AAEH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;EAQjB,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EAa1B,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAsB1B,CAAC;AAIH;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAE5C,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvE;AAED;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;KAAE;IAOtF,QAAQ,CAAC,SAAS;;;;;;;;MA0BhB;IAEF,QAAQ,CAAC,QAAQ;;;;;;;;;;+BAQgB,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC;MAe7D;IAEF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;kFAoBb,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;MAmCtC;IAEF,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;+DAcT,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC;MA2BlC;IAEF,QAAQ,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGAelB,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;MAmC3C;IAEF,QAAQ,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;6EAelB,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;MAqC3C;IAEF,wCAAwC;IACxC,IAAI,eAAe,IAAI,iBAAiB,EAAE,CASzC;IAID,+CAA+C;YACjC,kBAAkB;IA0ChC,qFAAqF;YACvE,eAAe;IA0C7B,wDAAwD;YAC1C,WAAW;IA4BzB,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI;IAwCxE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAkBrE,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAiDrC"}