indusagi 0.12.15 → 0.12.17

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,389 +0,0 @@
1
- /**
2
- * Types Test Suite
3
- *
4
- * This test file verifies all type guards, validators, and constants
5
- * defined in the types module.
6
- */
7
- import { describe, expect, it } from "vitest";
8
- import { API_NAMES, PROVIDER_NAMES, STOP_REASONS, isTextContent, isThinkingContent, isImageContent, isToolCall, isUserMessage, isAssistantMessage, isToolResultMessage, isMessage, validateTool, validateMessage, validateContext, } from "./types.js";
9
- describe("ai/types - Constants", () => {
10
- it("exposes API_NAMES constant", () => {
11
- expect(API_NAMES).toBeDefined();
12
- expect(Array.isArray(API_NAMES)).toBe(true);
13
- expect(API_NAMES.length).toBeGreaterThan(0);
14
- expect(API_NAMES).toContain("openai-completions");
15
- expect(API_NAMES).toContain("anthropic-messages");
16
- });
17
- it("exposes PROVIDER_NAMES constant", () => {
18
- expect(PROVIDER_NAMES).toBeDefined();
19
- expect(Array.isArray(PROVIDER_NAMES)).toBe(true);
20
- expect(PROVIDER_NAMES.length).toBeGreaterThan(0);
21
- expect(PROVIDER_NAMES).toContain("openai");
22
- expect(PROVIDER_NAMES).toContain("anthropic");
23
- });
24
- it("exposes STOP_REASONS constant", () => {
25
- expect(STOP_REASONS).toBeDefined();
26
- expect(Array.isArray(STOP_REASONS)).toBe(true);
27
- expect(STOP_REASONS.length).toBe(5);
28
- expect(STOP_REASONS).toContain("stop");
29
- expect(STOP_REASONS).toContain("length");
30
- expect(STOP_REASONS).toContain("toolUse");
31
- expect(STOP_REASONS).toContain("error");
32
- expect(STOP_REASONS).toContain("aborted");
33
- });
34
- });
35
- describe("ai/types - Content Type Guards", () => {
36
- it("detects TextContent correctly", () => {
37
- const textContent = { type: "text", text: "Hello, world!" };
38
- expect(isTextContent(textContent)).toBe(true);
39
- expect(isTextContent({ type: "text", text: "" })).toBe(true);
40
- expect(isTextContent({ type: "thinking", thinking: "test" })).toBe(false);
41
- expect(isTextContent(null)).toBe(false);
42
- expect(isTextContent(undefined)).toBe(false);
43
- expect(isTextContent("string")).toBe(false);
44
- });
45
- it("detects ThinkingContent correctly", () => {
46
- const thinkingContent = { type: "thinking", thinking: "Let me think..." };
47
- expect(isThinkingContent(thinkingContent)).toBe(true);
48
- expect(isThinkingContent({ type: "thinking", thinking: "" })).toBe(true);
49
- expect(isThinkingContent({ type: "text", text: "test" })).toBe(false);
50
- expect(isThinkingContent(null)).toBe(false);
51
- });
52
- it("detects ImageContent correctly", () => {
53
- const imageContent = {
54
- type: "image",
55
- data: "base64data",
56
- mimeType: "image/png",
57
- };
58
- expect(isImageContent(imageContent)).toBe(true);
59
- expect(isImageContent({
60
- type: "image",
61
- data: "data",
62
- mimeType: "image/jpeg",
63
- })).toBe(true);
64
- expect(isImageContent({ type: "text", text: "test" })).toBe(false);
65
- expect(isImageContent(null)).toBe(false);
66
- });
67
- it("detects ToolCall correctly", () => {
68
- const toolCall = {
69
- type: "toolCall",
70
- id: "call_123",
71
- name: "bash",
72
- arguments: { command: "ls" },
73
- };
74
- expect(isToolCall(toolCall)).toBe(true);
75
- expect(isToolCall({
76
- type: "toolCall",
77
- id: "1",
78
- name: "read",
79
- arguments: {},
80
- })).toBe(true);
81
- // Missing fields should fail
82
- expect(isToolCall({
83
- type: "toolCall",
84
- id: "1",
85
- })).toBe(false);
86
- expect(isToolCall(null)).toBe(false);
87
- });
88
- });
89
- describe("ai/types - Message Type Guards", () => {
90
- it("detects UserMessage correctly", () => {
91
- const userMessage = {
92
- role: "user",
93
- content: "Hello!",
94
- timestamp: Date.now(),
95
- };
96
- expect(isUserMessage(userMessage)).toBe(true);
97
- expect(isUserMessage({
98
- role: "user",
99
- content: [{ type: "text", text: "Hi" }],
100
- timestamp: Date.now(),
101
- })).toBe(true);
102
- expect(isUserMessage({ role: "assistant", content: [], api: "x", provider: "y", model: "z", usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } }, stopReason: "stop", timestamp: Date.now() })).toBe(false);
103
- expect(isUserMessage(null)).toBe(false);
104
- });
105
- it("detects AssistantMessage correctly", () => {
106
- const assistantMessage = {
107
- role: "assistant",
108
- content: [],
109
- api: "anthropic-messages",
110
- provider: "anthropic",
111
- model: "claude-sonnet-4-20250514",
112
- usage: { input: 10, output: 20, cacheRead: 0, cacheWrite: 0, totalTokens: 30, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
113
- stopReason: "stop",
114
- timestamp: Date.now(),
115
- };
116
- expect(isAssistantMessage(assistantMessage)).toBe(true);
117
- expect(isUserMessage(assistantMessage)).toBe(false);
118
- expect(isAssistantMessage(null)).toBe(false);
119
- });
120
- it("detects ToolResultMessage correctly", () => {
121
- const toolResult = {
122
- role: "toolResult",
123
- toolCallId: "call_123",
124
- toolName: "bash",
125
- content: [{ type: "text", text: "output" }],
126
- isError: false,
127
- timestamp: Date.now(),
128
- };
129
- expect(isToolResultMessage(toolResult)).toBe(true);
130
- expect(isToolResultMessage(null)).toBe(false);
131
- });
132
- it("isMessage detects all message types correctly", () => {
133
- const userMessage = {
134
- role: "user",
135
- content: "Hello!",
136
- timestamp: Date.now(),
137
- };
138
- const assistantMessage = {
139
- role: "assistant",
140
- content: [],
141
- api: "openai-completions",
142
- provider: "openai",
143
- model: "gpt-4",
144
- usage: { input: 10, output: 20, cacheRead: 0, cacheWrite: 0, totalTokens: 30, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
145
- stopReason: "stop",
146
- timestamp: Date.now(),
147
- };
148
- const toolResult = {
149
- role: "toolResult",
150
- toolCallId: "call_123",
151
- toolName: "bash",
152
- content: [],
153
- isError: false,
154
- timestamp: Date.now(),
155
- };
156
- expect(isMessage(userMessage)).toBe(true);
157
- expect(isMessage(assistantMessage)).toBe(true);
158
- expect(isMessage(toolResult)).toBe(true);
159
- expect(isMessage({ role: "invalid" })).toBe(false);
160
- expect(isMessage(null)).toBe(false);
161
- });
162
- });
163
- describe("ai/types - Validators", () => {
164
- describe("validateTool", () => {
165
- it("accepts valid tool definitions", () => {
166
- const validTool = {
167
- name: "bash",
168
- description: "Run bash commands",
169
- parameters: { type: "object", properties: {} },
170
- };
171
- expect(() => validateTool(validTool)).not.toThrow();
172
- });
173
- it("throws on null or undefined", () => {
174
- expect(() => validateTool(null)).toThrow("Invalid tool");
175
- expect(() => validateTool(undefined)).toThrow("Invalid tool");
176
- });
177
- it("throws on non-object", () => {
178
- expect(() => validateTool("string")).toThrow("Invalid tool");
179
- expect(() => validateTool(123)).toThrow("Invalid tool");
180
- });
181
- it("throws when name is missing or invalid", () => {
182
- expect(() => validateTool({
183
- description: "test",
184
- parameters: {},
185
- })).toThrow("name is required");
186
- expect(() => validateTool({
187
- name: "",
188
- description: "test",
189
- parameters: {},
190
- })).toThrow("name is required");
191
- });
192
- it("throws when description is missing or invalid", () => {
193
- expect(() => validateTool({
194
- name: "tool",
195
- parameters: {},
196
- })).toThrow("description is required");
197
- expect(() => validateTool({
198
- name: "tool",
199
- description: "",
200
- parameters: {},
201
- })).toThrow("description is required");
202
- });
203
- it("throws when parameters are missing", () => {
204
- expect(() => validateTool({
205
- name: "tool",
206
- description: "test",
207
- })).toThrow("parameters schema is required");
208
- });
209
- });
210
- describe("validateMessage", () => {
211
- it("accepts valid user messages", () => {
212
- expect(() => validateMessage({
213
- role: "user",
214
- content: "Hello",
215
- timestamp: Date.now(),
216
- })).not.toThrow();
217
- });
218
- it("accepts valid assistant messages", () => {
219
- expect(() => validateMessage({
220
- role: "assistant",
221
- content: [],
222
- api: "anthropic-messages",
223
- provider: "anthropic",
224
- model: "claude-sonnet-4-20250514",
225
- usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
226
- stopReason: "stop",
227
- timestamp: Date.now(),
228
- })).not.toThrow();
229
- });
230
- it("accepts valid tool result messages", () => {
231
- expect(() => validateMessage({
232
- role: "toolResult",
233
- toolCallId: "call_123",
234
- toolName: "bash",
235
- content: [],
236
- isError: false,
237
- timestamp: Date.now(),
238
- })).not.toThrow();
239
- });
240
- it("throws on invalid messages", () => {
241
- expect(() => validateMessage({ role: "invalid" })).toThrow("Invalid message");
242
- expect(() => validateMessage(null)).toThrow("Invalid message");
243
- });
244
- });
245
- describe("validateContext", () => {
246
- it("accepts valid context with messages only", () => {
247
- expect(() => validateContext({
248
- messages: [{
249
- role: "user",
250
- content: "Hello",
251
- timestamp: Date.now(),
252
- }],
253
- })).not.toThrow();
254
- });
255
- it("accepts valid context with tools", () => {
256
- expect(() => validateContext({
257
- messages: [{
258
- role: "user",
259
- content: "Hello",
260
- timestamp: Date.now(),
261
- }],
262
- tools: [{
263
- name: "bash",
264
- description: "Run bash",
265
- parameters: { type: "object" },
266
- }],
267
- })).not.toThrow();
268
- });
269
- it("accepts valid context with system prompt", () => {
270
- expect(() => validateContext({
271
- systemPrompt: "You are a helpful assistant",
272
- messages: [{
273
- role: "user",
274
- content: "Hello",
275
- timestamp: Date.now(),
276
- }],
277
- })).not.toThrow();
278
- });
279
- it("throws on null or undefined", () => {
280
- expect(() => validateContext(null)).toThrow("Invalid context");
281
- expect(() => validateContext(undefined)).toThrow("Invalid context");
282
- });
283
- it("throws when messages is not an array", () => {
284
- expect(() => validateContext({
285
- messages: "not an array",
286
- })).toThrow("messages must be an array");
287
- });
288
- it("throws when tools is not an array", () => {
289
- expect(() => validateContext({
290
- messages: [],
291
- tools: "not an array",
292
- })).toThrow("tools must be an array");
293
- });
294
- it("throws when message in context is invalid", () => {
295
- expect(() => validateContext({
296
- messages: [{ role: "invalid" }],
297
- })).toThrow("Invalid message");
298
- });
299
- it("throws when tool in context is invalid", () => {
300
- expect(() => validateContext({
301
- messages: [],
302
- tools: [{ name: "invalid" }],
303
- })).toThrow("Invalid tool");
304
- });
305
- });
306
- });
307
- describe("ai/types - Integration Tests", () => {
308
- it("can validate complete workflow context", () => {
309
- const validContext = {
310
- systemPrompt: "You are Claude",
311
- messages: [
312
- { role: "user", content: "Hello!", timestamp: Date.now() },
313
- {
314
- role: "assistant",
315
- content: [{ type: "text", text: "Hi there!" }],
316
- api: "anthropic-messages",
317
- provider: "anthropic",
318
- model: "claude-sonnet-4-20250514",
319
- usage: { input: 5, output: 3, cacheRead: 0, cacheWrite: 0, totalTokens: 8, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
320
- stopReason: "stop",
321
- timestamp: Date.now(),
322
- },
323
- ],
324
- tools: [
325
- {
326
- name: "bash",
327
- description: "Run commands",
328
- parameters: { type: "object", properties: {} },
329
- },
330
- ],
331
- };
332
- expect(() => validateContext(validContext)).not.toThrow();
333
- expect(isMessage(validContext.messages[0])).toBe(true);
334
- expect(isMessage(validContext.messages[1])).toBe(true);
335
- });
336
- });
337
- describe("ai/types - Edge Cases", () => {
338
- it("handles empty content arrays", () => {
339
- const assistantMsg = {
340
- role: "assistant",
341
- content: [],
342
- api: "openai-completions",
343
- provider: "openai",
344
- model: "gpt-4",
345
- usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
346
- stopReason: "stop",
347
- timestamp: Date.now(),
348
- };
349
- expect(isAssistantMessage(assistantMsg)).toBe(true);
350
- });
351
- it("handles complex content arrays", () => {
352
- const assistantMsg = {
353
- role: "assistant",
354
- content: [
355
- { type: "thinking", thinking: "Let me think..." },
356
- { type: "text", text: "Here's the answer" },
357
- {
358
- type: "toolCall",
359
- id: "call_123",
360
- name: "bash",
361
- arguments: { command: "ls" },
362
- },
363
- ],
364
- api: "anthropic-messages",
365
- provider: "anthropic",
366
- model: "claude-sonnet-4-20250514",
367
- usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
368
- stopReason: "toolUse",
369
- timestamp: Date.now(),
370
- };
371
- expect(isAssistantMessage(assistantMsg)).toBe(true);
372
- expect(isThinkingContent(assistantMsg.content[0])).toBe(true);
373
- expect(isTextContent(assistantMsg.content[1])).toBe(true);
374
- expect(isToolCall(assistantMsg.content[2])).toBe(true);
375
- });
376
- it("handles all stop reason values", () => {
377
- const stopReasons = [
378
- "stop",
379
- "length",
380
- "toolUse",
381
- "error",
382
- "aborted",
383
- ];
384
- stopReasons.forEach((reason) => {
385
- expect(STOP_REASONS).toContain(reason);
386
- });
387
- });
388
- });
389
- //# sourceMappingURL=types.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/ai/types.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACN,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,eAAe,GACf,MAAM,YAAY,CAAC;AAEpB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACxC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QACrE,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC5C,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;QACnF,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,MAAM,YAAY,GAAG;YACpB,IAAI,EAAE,OAAgB;YACtB,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,WAAW;SACrB,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC;YACrB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,YAAY;SACtB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACrC,MAAM,QAAQ,GAAG;YAChB,IAAI,EAAE,UAAmB;YACzB,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC5B,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC;YACjB,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,EAAE;SACb,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,6BAA6B;QAC7B,MAAM,CAAC,UAAU,CAAC;YACjB,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,GAAG;SACA,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACxC,MAAM,WAAW,GAAG;YACnB,IAAI,EAAE,MAAe;YACrB,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,aAAa,CAAC;YACpB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACvC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzS,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC7C,MAAM,gBAAgB,GAAG;YACxB,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,oBAA6B;YAClC,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,0BAA0B;YACjC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACpJ,UAAU,EAAE,MAAe;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC9C,MAAM,UAAU,GAAG;YAClB,IAAI,EAAE,YAAqB;YAC3B,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC3C,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,WAAW,GAAG;YACnB,IAAI,EAAE,MAAe;YACrB,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,gBAAgB,GAAG;YACxB,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,oBAA6B;YAClC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACpJ,UAAU,EAAE,MAAe;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,UAAU,GAAG;YAClB,IAAI,EAAE,YAAqB;YAC3B,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACtC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,SAAS,GAAG;gBACjB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,mBAAmB;gBAChC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;aAC9C,CAAC;YACF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,QAAe,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;gBACzB,WAAW,EAAE,MAAM;gBACnB,UAAU,EAAE,EAAE;aACP,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,EAAE;gBACR,WAAW,EAAE,MAAM;gBACnB,UAAU,EAAE,EAAE;aACd,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACxD,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,EAAE;aACP,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,EAAE;aACd,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,MAAM;aACZ,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;gBACX,GAAG,EAAE,oBAAoB;gBACzB,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,0BAA0B;gBACjC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACjJ,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACrF,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,CAAC;wBACV,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO;wBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;qBACrB,CAAC;aACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,CAAC;wBACV,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO;wBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;qBACrB,CAAC;gBACF,KAAK,EAAE,CAAC;wBACP,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,UAAU;wBACvB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC9B,CAAC;aACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,YAAY,EAAE,6BAA6B;gBAC3C,QAAQ,EAAE,CAAC;wBACV,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO;wBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;qBACrB,CAAC;aACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,cAAqB;aAC/B,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,cAAqB;aAC5B,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,SAAgB,EAAE,CAAC;aACtC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAgB,EAAE,CAAC;aACnC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,MAAM,YAAY,GAAG;YACpB,YAAY,EAAE,gBAAgB;YAC9B,QAAQ,EAAE;gBACT,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBACnE;oBACC,IAAI,EAAE,WAAoB;oBAC1B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;oBAC9C,GAAG,EAAE,oBAA6B;oBAClC,QAAQ,EAAE,WAAW;oBACrB,KAAK,EAAE,0BAA0B;oBACjC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACjJ,UAAU,EAAE,MAAM;oBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACrB;aACD;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,cAAc;oBAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;iBAC9C;aACD;SACD,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACvC,MAAM,YAAY,GAAG;YACpB,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,oBAA6B;YAClC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACjJ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,MAAM,YAAY,GAAG;YACpB,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE;gBACR,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;gBAC1D,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE;gBACpD;oBACC,IAAI,EAAE,UAAmB;oBACzB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;iBAC5B;aACD;YACD,GAAG,EAAE,oBAA6B;YAClC,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,0BAA0B;YACjC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACjJ,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,MAAM,WAAW,GAA+D;YAC/E,MAAM;YACN,QAAQ;YACR,SAAS;YACT,OAAO;YACP,SAAS;SACT,CAAC;QACF,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}