call-ai 0.0.0-dev-prompts

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.
Files changed (55) hide show
  1. package/LICENSE.md +232 -0
  2. package/README.md +264 -0
  3. package/api-core.d.ts +13 -0
  4. package/api-core.js +238 -0
  5. package/api-core.js.map +1 -0
  6. package/api.d.ts +4 -0
  7. package/api.js +365 -0
  8. package/api.js.map +1 -0
  9. package/api.ts.off +595 -0
  10. package/env.d.ts +22 -0
  11. package/env.js +65 -0
  12. package/env.js.map +1 -0
  13. package/error-handling.d.ts +14 -0
  14. package/error-handling.js +144 -0
  15. package/error-handling.js.map +1 -0
  16. package/image.d.ts +2 -0
  17. package/image.js +72 -0
  18. package/image.js.map +1 -0
  19. package/index.d.ts +7 -0
  20. package/index.js +8 -0
  21. package/index.js.map +1 -0
  22. package/index.ts.bak +16 -0
  23. package/key-management.d.ts +29 -0
  24. package/key-management.js +190 -0
  25. package/key-management.js.map +1 -0
  26. package/non-streaming.d.ts +7 -0
  27. package/non-streaming.js +206 -0
  28. package/non-streaming.js.map +1 -0
  29. package/package.json +43 -0
  30. package/response-metadata.d.ts +6 -0
  31. package/response-metadata.js +22 -0
  32. package/response-metadata.js.map +1 -0
  33. package/strategies/index.d.ts +2 -0
  34. package/strategies/index.js +3 -0
  35. package/strategies/index.js.map +1 -0
  36. package/strategies/model-strategies.d.ts +6 -0
  37. package/strategies/model-strategies.js +138 -0
  38. package/strategies/model-strategies.js.map +1 -0
  39. package/strategies/strategy-selector.d.ts +2 -0
  40. package/strategies/strategy-selector.js +66 -0
  41. package/strategies/strategy-selector.js.map +1 -0
  42. package/streaming.d.ts +4 -0
  43. package/streaming.js +365 -0
  44. package/streaming.js.map +1 -0
  45. package/streaming.ts.off +571 -0
  46. package/tsconfig.json +18 -0
  47. package/types.d.ts +228 -0
  48. package/types.js +33 -0
  49. package/types.js.map +1 -0
  50. package/utils.d.ts +8 -0
  51. package/utils.js +42 -0
  52. package/utils.js.map +1 -0
  53. package/version.d.ts +1 -0
  54. package/version.js +2 -0
  55. package/version.js.map +1 -0
package/streaming.js ADDED
@@ -0,0 +1,365 @@
1
+ import { CallAIError } from "./types.js";
2
+ import { globalDebug } from "./key-management.js";
3
+ import { responseMetadata, boxString } from "./response-metadata.js";
4
+ import { checkForInvalidModelError } from "./error-handling.js";
5
+ import { PACKAGE_VERSION, FALLBACK_MODEL } from "./non-streaming.js";
6
+ async function* createStreamingGenerator(response, options, schemaStrategy, model) {
7
+ const meta = {
8
+ model,
9
+ endpoint: options.endpoint || "https://openrouter.ai/api/v1",
10
+ timing: {
11
+ startTime: Date.now(),
12
+ endTime: 0,
13
+ duration: 0,
14
+ },
15
+ };
16
+ let toolCallsAssembled = "";
17
+ let completeText = "";
18
+ let chunkCount = 0;
19
+ if (options.debug || globalDebug) {
20
+ console.log(`[callAi:${PACKAGE_VERSION}] Starting streaming generator with model: ${model}`);
21
+ }
22
+ try {
23
+ const reader = response.body?.getReader();
24
+ if (!reader) {
25
+ throw new Error("Response body is undefined - API endpoint may not support streaming");
26
+ }
27
+ const textDecoder = new TextDecoder();
28
+ let buffer = "";
29
+ while (true) {
30
+ const { done, value } = await reader.read();
31
+ if (done) {
32
+ if (options.debug || globalDebug) {
33
+ console.log(`[callAi-streaming:complete v${PACKAGE_VERSION}] Stream finished after ${chunkCount} chunks`);
34
+ }
35
+ break;
36
+ }
37
+ const chunk = textDecoder.decode(value, { stream: true });
38
+ buffer += chunk;
39
+ const messages = buffer.split(/\n\n/);
40
+ buffer = messages.pop() || "";
41
+ for (const message of messages) {
42
+ if (!message.trim() || !message.startsWith("data: ")) {
43
+ continue;
44
+ }
45
+ const jsonStr = message.slice(6);
46
+ if (jsonStr === "[DONE]") {
47
+ if (options.debug || globalDebug) {
48
+ console.log(`[callAi:${PACKAGE_VERSION}] Received [DONE] signal`);
49
+ }
50
+ continue;
51
+ }
52
+ chunkCount++;
53
+ try {
54
+ const json = JSON.parse(jsonStr);
55
+ if (json.error ||
56
+ json.type === "error" ||
57
+ (json.choices && json.choices.length > 0 && json.choices[0].finish_reason === "error")) {
58
+ const errorMessage = json.error?.message || json.error || json.choices?.[0]?.message?.content || "Unknown streaming error";
59
+ if (options.debug || globalDebug) {
60
+ console.error(`[callAi:${PACKAGE_VERSION}] Detected error in streaming response:`, json);
61
+ }
62
+ const detailedError = new CallAIError({
63
+ message: `API streaming error: ${errorMessage}`,
64
+ status: json.error?.status || 400,
65
+ statusText: json.error?.type || "Bad Request",
66
+ details: JSON.stringify(json.error || json),
67
+ contentType: "application/json",
68
+ });
69
+ console.error(`[callAi:${PACKAGE_VERSION}] Throwing stream error:`, detailedError);
70
+ throw detailedError;
71
+ }
72
+ const isClaudeWithSchema = /claude/i.test(model) && schemaStrategy.strategy === "tool_mode";
73
+ if (isClaudeWithSchema) {
74
+ if (json.choices && json.choices.length > 0) {
75
+ const choice = json.choices[0];
76
+ if (choice.finish_reason === "tool_calls") {
77
+ if (options.debug) {
78
+ console.log(`[callAi:${PACKAGE_VERSION}] Received tool_calls finish reason. Assembled JSON:`, toolCallsAssembled);
79
+ }
80
+ try {
81
+ if (toolCallsAssembled) {
82
+ try {
83
+ JSON.parse(toolCallsAssembled);
84
+ }
85
+ catch (parseError) {
86
+ if (options.debug) {
87
+ console.log(`[callAi:${PACKAGE_VERSION}] Attempting to fix malformed JSON in tool call:`, toolCallsAssembled);
88
+ }
89
+ let fixedJson = toolCallsAssembled;
90
+ fixedJson = fixedJson.replace(/,\s*([\}\]])/, "$1");
91
+ const openBraces = (fixedJson.match(/\{/g) || []).length;
92
+ const closeBraces = (fixedJson.match(/\}/g) || []).length;
93
+ if (openBraces > closeBraces) {
94
+ fixedJson += "}".repeat(openBraces - closeBraces);
95
+ }
96
+ if (!fixedJson.trim().startsWith("{")) {
97
+ fixedJson = "{" + fixedJson.trim();
98
+ }
99
+ if (!fixedJson.trim().endsWith("}")) {
100
+ fixedJson += "}";
101
+ }
102
+ fixedJson = fixedJson.replace(/"(\w+)"\s*:\s*$/g, '"$1":null');
103
+ fixedJson = fixedJson.replace(/"(\w+)"\s*:\s*,/g, '"$1":null,');
104
+ fixedJson = fixedJson.replace(/"(\w+)"\s*:\s*"(\w+)$/g, '"$1$2"');
105
+ const openBrackets = (fixedJson.match(/\[/g) || []).length;
106
+ const closeBrackets = (fixedJson.match(/\]/g) || []).length;
107
+ if (openBrackets > closeBrackets) {
108
+ fixedJson += "]".repeat(openBrackets - closeBrackets);
109
+ }
110
+ if (options.debug) {
111
+ console.log(`[callAi:${PACKAGE_VERSION}] Applied comprehensive JSON fixes:`, `\nBefore: ${toolCallsAssembled}`, `\nAfter: ${fixedJson}`);
112
+ }
113
+ toolCallsAssembled = fixedJson;
114
+ }
115
+ }
116
+ completeText = toolCallsAssembled;
117
+ yield completeText;
118
+ continue;
119
+ }
120
+ catch (e) {
121
+ console.error("[callAIStreaming] Error handling assembled tool call:", e);
122
+ }
123
+ }
124
+ if (choice && choice.delta && choice.delta.tool_calls) {
125
+ const toolCall = choice.delta.tool_calls[0];
126
+ if (toolCall && toolCall.function && toolCall.function.arguments !== undefined) {
127
+ toolCallsAssembled += toolCall.function.arguments;
128
+ if (options.debug) {
129
+ console.log(`[callAi:${PACKAGE_VERSION}] Accumulated tool call chunk:`, toolCall.function.arguments);
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ if (isClaudeWithSchema && (json.stop_reason === "tool_use" || json.type === "tool_use")) {
136
+ if (json.type === "tool_use") {
137
+ completeText = schemaStrategy.processResponse(json);
138
+ yield completeText;
139
+ continue;
140
+ }
141
+ if (json.content && Array.isArray(json.content)) {
142
+ const toolUseBlock = json.content.find((block) => block.type === "tool_use");
143
+ if (toolUseBlock) {
144
+ completeText = schemaStrategy.processResponse(toolUseBlock);
145
+ yield completeText;
146
+ continue;
147
+ }
148
+ }
149
+ if (json.choices && Array.isArray(json.choices)) {
150
+ const choice = json.choices[0];
151
+ if (choice.message && Array.isArray(choice.message.content)) {
152
+ const toolUseBlock = choice.message.content.find((block) => block.type === "tool_use");
153
+ if (toolUseBlock) {
154
+ completeText = schemaStrategy.processResponse(toolUseBlock);
155
+ yield completeText;
156
+ continue;
157
+ }
158
+ }
159
+ if (choice.delta && Array.isArray(choice.delta.content)) {
160
+ const toolUseBlock = choice.delta.content.find((block) => block.type === "tool_use");
161
+ if (toolUseBlock) {
162
+ completeText = schemaStrategy.processResponse(toolUseBlock);
163
+ yield completeText;
164
+ continue;
165
+ }
166
+ }
167
+ }
168
+ }
169
+ if (json.choices?.[0]?.delta?.content !== undefined) {
170
+ const content = json.choices[0].delta.content || "";
171
+ completeText += content;
172
+ yield schemaStrategy.processResponse(completeText);
173
+ }
174
+ // Handle message content format (non-streaming deltas)
175
+ else if (json.choices?.[0]?.message?.content !== undefined) {
176
+ const content = json.choices[0].message.content || "";
177
+ completeText += content;
178
+ yield schemaStrategy.processResponse(completeText);
179
+ }
180
+ // Handle content blocks for Claude/Anthropic response format
181
+ else if (json.choices?.[0]?.message?.content && Array.isArray(json.choices[0].message.content)) {
182
+ const contentBlocks = json.choices[0].message.content;
183
+ for (const block of contentBlocks) {
184
+ if (block.type === "text") {
185
+ completeText += block.text || "";
186
+ }
187
+ else if (isClaudeWithSchema && block.type === "tool_use") {
188
+ completeText = schemaStrategy.processResponse(block);
189
+ break;
190
+ }
191
+ }
192
+ yield schemaStrategy.processResponse(completeText);
193
+ }
194
+ if (json.type === "content_block_delta" && json.delta && json.delta.type === "text_delta" && json.delta.text) {
195
+ if (options.debug) {
196
+ console.log(`[callAi:${PACKAGE_VERSION}] Received text delta:`, json.delta.text);
197
+ }
198
+ completeText += json.delta.text;
199
+ if (!isClaudeWithSchema) {
200
+ yield schemaStrategy.processResponse(completeText);
201
+ }
202
+ }
203
+ }
204
+ catch (e) {
205
+ if (options.debug) {
206
+ console.error(`[callAIStreaming] Error parsing JSON chunk:`, e);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ if (toolCallsAssembled && (!completeText || completeText.length === 0)) {
212
+ let result = toolCallsAssembled;
213
+ try {
214
+ JSON.parse(result);
215
+ }
216
+ catch (e) {
217
+ if (options.debug) {
218
+ console.log(`[callAi:${PACKAGE_VERSION}] Final JSON validation failed:`, e, `\nAttempting to fix JSON:`, result);
219
+ }
220
+ result = result.replace(/,\s*([\}\]])/, "$1");
221
+ const openBraces = (result.match(/\{/g) || []).length;
222
+ const closeBraces = (result.match(/\}/g) || []).length;
223
+ if (openBraces > closeBraces) {
224
+ result += "}".repeat(openBraces - closeBraces);
225
+ }
226
+ if (!result.trim().startsWith("{")) {
227
+ result = "{" + result.trim();
228
+ }
229
+ if (!result.trim().endsWith("}")) {
230
+ result += "}";
231
+ }
232
+ result = result.replace(/"(\w+)"\s*:\s*$/g, '"$1":null');
233
+ result = result.replace(/"(\w+)"\s*:\s*,/g, '"$1":null,');
234
+ const openBrackets = (result.match(/\[/g) || []).length;
235
+ const closeBrackets = (result.match(/\]/g) || []).length;
236
+ if (openBrackets > closeBrackets) {
237
+ result += "]".repeat(openBrackets - closeBrackets);
238
+ }
239
+ if (options.debug) {
240
+ console.log(`[callAi:${PACKAGE_VERSION}] Applied final JSON fixes:`, result);
241
+ }
242
+ }
243
+ completeText = result;
244
+ try {
245
+ JSON.parse(completeText);
246
+ }
247
+ catch (finalParseError) {
248
+ if (options.debug) {
249
+ console.error(`[callAi:${PACKAGE_VERSION}] Final JSON validation still failed:`, finalParseError);
250
+ }
251
+ }
252
+ yield completeText;
253
+ }
254
+ const endTime = Date.now();
255
+ meta.timing.endTime = endTime;
256
+ meta.timing.duration = endTime - meta.timing.startTime;
257
+ meta.rawResponse = completeText;
258
+ const boxed = boxString(completeText);
259
+ responseMetadata.set(boxed, meta);
260
+ return completeText;
261
+ }
262
+ catch (error) {
263
+ if (options.debug || globalDebug) {
264
+ console.error(`[callAi:${PACKAGE_VERSION}] Streaming error:`, error);
265
+ }
266
+ throw error;
267
+ }
268
+ }
269
+ async function* callAIStreaming(prompt, options = {}, isRetry = false) {
270
+ const messages = Array.isArray(prompt) ? prompt : [{ role: "user", content: prompt }];
271
+ const apiKey = options.apiKey;
272
+ const model = options.model || "openai/gpt-3.5-turbo";
273
+ const endpoint = options.endpoint || "https://openrouter.ai/api/v1";
274
+ const url = `${endpoint}/chat/completions`;
275
+ const schemaStrategy = options.schemaStrategy;
276
+ const responseFormat = options.responseFormat || /gpt-4/.test(model) || /gpt-3.5/.test(model) ? "json" : undefined;
277
+ const debug = options.debug === undefined ? globalDebug : options.debug;
278
+ if (debug) {
279
+ console.log(`[callAi:${PACKAGE_VERSION}] Making streaming request to: ${url}`);
280
+ console.log(`[callAi:${PACKAGE_VERSION}] With model: ${model}`);
281
+ }
282
+ const requestBody = {
283
+ model,
284
+ messages,
285
+ max_tokens: options.maxTokens || 2048,
286
+ temperature: options.temperature !== undefined ? options.temperature : 0.7,
287
+ top_p: options.topP !== undefined ? options.topP : 1,
288
+ stream: true,
289
+ };
290
+ if (responseFormat === "json") {
291
+ requestBody.response_format = { type: "json_object" };
292
+ }
293
+ if (options.schema) {
294
+ Object.assign(requestBody, schemaStrategy?.prepareRequest(options.schema, messages));
295
+ }
296
+ const headers = {
297
+ Authorization: `Bearer ${apiKey}`,
298
+ "HTTP-Referer": options.referer || "https://vibes.diy",
299
+ "X-Title": options.title || "Vibes",
300
+ "Content-Type": "application/json",
301
+ };
302
+ if (options.headers) {
303
+ Object.assign(headers, options.headers);
304
+ }
305
+ Object.keys(options).forEach((key) => {
306
+ if (![
307
+ "apiKey",
308
+ "model",
309
+ "endpoint",
310
+ "stream",
311
+ "schema",
312
+ "maxTokens",
313
+ "temperature",
314
+ "topP",
315
+ "responseFormat",
316
+ "referer",
317
+ "title",
318
+ "headers",
319
+ "skipRefresh",
320
+ "debug",
321
+ ].includes(key)) {
322
+ requestBody[key] = options[key];
323
+ }
324
+ });
325
+ if (debug) {
326
+ console.log(`[callAi:${PACKAGE_VERSION}] Request headers:`, headers);
327
+ console.log(`[callAi:${PACKAGE_VERSION}] Request body:`, requestBody);
328
+ }
329
+ let response;
330
+ try {
331
+ response = await fetch(url, {
332
+ method: "POST",
333
+ headers,
334
+ body: JSON.stringify(requestBody),
335
+ });
336
+ if (!response.ok) {
337
+ const { isInvalidModel, errorData } = await checkForInvalidModelError(response, model, debug);
338
+ if (isInvalidModel && !isRetry && !options.skipRetry) {
339
+ if (debug) {
340
+ console.log(`[callAi:${PACKAGE_VERSION}] Invalid model "${model}", falling back to "${FALLBACK_MODEL}"`);
341
+ }
342
+ yield* callAIStreaming(prompt, {
343
+ ...options,
344
+ model: FALLBACK_MODEL,
345
+ }, true);
346
+ return "";
347
+ }
348
+ const errorText = errorData ? JSON.stringify(errorData) : `HTTP error! Status: ${response.status}`;
349
+ throw new Error(errorText);
350
+ }
351
+ if (!schemaStrategy) {
352
+ throw new Error("Schema strategy is required for streaming");
353
+ }
354
+ yield* createStreamingGenerator(response, options, schemaStrategy, model);
355
+ return "";
356
+ }
357
+ catch (fetchError) {
358
+ if (debug) {
359
+ console.error(`[callAi:${PACKAGE_VERSION}] Network error during fetch:`, fetchError);
360
+ }
361
+ throw fetchError;
362
+ }
363
+ }
364
+ export { createStreamingGenerator, callAIStreaming };
365
+ //# sourceMappingURL=streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../jsr/streaming.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAgF,MAAM,YAAY,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQrE,KAAK,SAAS,CAAC,CAAC,wBAAwB,CACtC,QAAkB,EAClB,OAAsB,EACtB,cAA8B,EAC9B,KAAa,EAC4B;IAEzC,MAAM,IAAI,GAAiB;QACzB,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,8BAA8B;QAC5D,MAAM,EAAE;YACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,CAAC;SACZ;KACF,CAAC;IAGF,IAAI,kBAAkB,GAAG,EAAE,CAAC;IAC5B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,8CAA8C,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,+BAA+B,eAAe,2BAA2B,UAAU,SAAS,CAAC,CAAC;gBAC5G,CAAC;gBACD,MAAM;YACR,CAAC;YAGD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC;YAGhB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrD,SAAS;gBACX,CAAC;gBAGD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACzB,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;wBACjC,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,0BAA0B,CAAC,CAAC;oBACpE,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,UAAU,EAAE,CAAC;gBAGb,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAGjC,IACE,IAAI,CAAC,KAAK;wBACV,IAAI,CAAC,IAAI,KAAK,OAAO;wBACrB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,OAAO,CAAC,EACtF,CAAC;wBAED,MAAM,YAAY,GAChB,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,yBAAyB,CAAC;wBAExG,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;4BACjC,OAAO,CAAC,KAAK,CAAC,WAAW,eAAe,yCAAyC,EAAE,IAAI,CAAC,CAAC;wBAC3F,CAAC;wBAGD,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC;4BACpC,OAAO,EAAE,wBAAwB,YAAY,EAAE;4BAC/C,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG;4BACjC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,aAAa;4BAC7C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;4BAC3C,WAAW,EAAE,kBAAkB;yBAChC,CAAC,CAAC;wBAEH,OAAO,CAAC,KAAK,CAAC,WAAW,eAAe,0BAA0B,EAAE,aAAa,CAAC,CAAC;wBACnF,MAAM,aAAa,CAAC;oBACtB,CAAC;oBAGD,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,QAAQ,KAAK,WAAW,CAAC;oBAE5F,IAAI,kBAAkB,EAAE,CAAC;wBAEvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BAG/B,IAAI,MAAM,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;gCAC1C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oCAClB,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,sDAAsD,EAAE,kBAAkB,CAAC,CAAC;gCACpH,CAAC;gCAGD,IAAI,CAAC;oCAGH,IAAI,kBAAkB,EAAE,CAAC;wCACvB,IAAI,CAAC;4CAEH,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;wCACjC,CAAC;wCAAC,OAAO,UAAU,EAAE,CAAC;4CACpB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gDAClB,OAAO,CAAC,GAAG,CACT,WAAW,eAAe,kDAAkD,EAC5E,kBAAkB,CACnB,CAAC;4CACJ,CAAC;4CAGD,IAAI,SAAS,GAAG,kBAAkB,CAAC;4CAInC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;4CAIpD,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;4CACzD,MAAM,WAAW,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;4CAC1D,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;gDAC7B,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;4CACpD,CAAC;4CAGD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gDACtC,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;4CACrC,CAAC;4CAGD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gDACpC,SAAS,IAAI,GAAG,CAAC;4CACnB,CAAC;4CAID,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;4CAG/D,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;4CAGhE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;4CAGlE,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;4CAC3D,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;4CAC5D,IAAI,YAAY,GAAG,aAAa,EAAE,CAAC;gDACjC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC;4CACxD,CAAC;4CAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gDAClB,OAAO,CAAC,GAAG,CACT,WAAW,eAAe,qCAAqC,EAC/D,aAAa,kBAAkB,EAAE,EACjC,YAAY,SAAS,EAAE,CACxB,CAAC;4CACJ,CAAC;4CAED,kBAAkB,GAAG,SAAS,CAAC;wCACjC,CAAC;oCACH,CAAC;oCAGD,YAAY,GAAG,kBAAkB,CAAC;oCAClC,MAAM,YAAY,CAAC;oCACnB,SAAS;gCACX,CAAC;gCAAC,OAAO,CAAC,EAAE,CAAC;oCACX,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,CAAC,CAAC,CAAC;gCAC5E,CAAC;4BACH,CAAC;4BAID,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gCACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gCAC5C,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oCAC/E,kBAAkB,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;oCAClD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wCAClB,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,gCAAgC,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oCACvG,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAGD,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;wBAExF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BAC7B,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;4BACpD,MAAM,YAAY,CAAC;4BACnB,SAAS;wBACX,CAAC;wBAGD,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;4BAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;4BAC/F,IAAI,YAAY,EAAE,CAAC;gCACjB,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gCAC5D,MAAM,YAAY,CAAC;gCACnB,SAAS;4BACX,CAAC;wBACH,CAAC;wBAGD,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;4BAChD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BAC/B,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gCAC5D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;gCACzG,IAAI,YAAY,EAAE,CAAC;oCACjB,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;oCAC5D,MAAM,YAAY,CAAC;oCACnB,SAAS;gCACX,CAAC;4BACH,CAAC;4BAGD,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gCACxD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;gCACvG,IAAI,YAAY,EAAE,CAAC;oCACjB,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;oCAC5D,MAAM,YAAY,CAAC;oCACnB,SAAS;gCACX,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAGD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;wBACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;wBAGpD,YAAY,IAAI,OAAO,CAAC;wBAExB,MAAM,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;oBACrD,CAAC;oBACD,uDAAuD;yBAClD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;wBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;wBACtD,YAAY,IAAI,OAAO,CAAC;wBACxB,MAAM,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;oBACrD,CAAC;oBACD,6DAA6D;yBACxD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC/F,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;wBAEtD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;4BAClC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gCAC1B,YAAY,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;4BACnC,CAAC;iCAAM,IAAI,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gCAC3D,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gCACrD,MAAM;4BACR,CAAC;wBACH,CAAC;wBAED,MAAM,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;oBACrD,CAAC;oBAGD,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC7G,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;4BAClB,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACnF,CAAC;wBACD,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;wBAGhC,IAAI,CAAC,kBAAkB,EAAE,CAAC;4BACxB,MAAM,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;wBACrD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBAClB,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAOD,IAAI,kBAAkB,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAEvE,IAAI,MAAM,GAAG,kBAAkB,CAAC;YAEhC,IAAI,CAAC;gBAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,iCAAiC,EAAE,CAAC,EAAE,2BAA2B,EAAE,MAAM,CAAC,CAAC;gBACnH,CAAC;gBAMD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBAI9C,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACtD,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACvD,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;gBACjD,CAAC;gBAGD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/B,CAAC;gBAGD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,CAAC;gBAChB,CAAC;gBAGD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;gBAGzD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;gBAG1D,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACxD,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACzD,IAAI,YAAY,GAAG,aAAa,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC;gBACrD,CAAC;gBAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,6BAA6B,EAAE,MAAM,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;YAGD,YAAY,GAAG,MAAM,CAAC;YAGtB,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,eAAe,EAAE,CAAC;gBACzB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,KAAK,CAAC,WAAW,eAAe,uCAAuC,EAAE,eAAe,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC;YAED,MAAM,YAAY,CAAC;QACrB,CAAC;QAGD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAIvD,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;QAGhC,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAGlC,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,WAAW,eAAe,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;QAGD,MAAM,KAAK,CAAC;IACd,CAAC;AAAA,CACF;AAMD,KAAK,SAAS,CAAC,CAAC,eAAe,CAC7B,MAA0B,EAC1B,OAAO,GAAkB,EAAE,EAC3B,OAAO,GAAG,KAAK,EAC0B;IAEzC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAa,CAAC,CAAC;IAGjG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAAC;IAGtD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,8BAA8B,CAAC;IAGpE,MAAM,GAAG,GAAG,GAAG,QAAQ,mBAAmB,CAAC;IAG3C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAG9C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAExE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,kCAAkC,GAAG,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,iBAAiB,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAGD,MAAM,WAAW,GAA2B;QAC1C,KAAK;QACL,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACrC,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;QAC1E,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,EAAE,IAAI;KACb,CAAC;IAGF,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC9B,WAAW,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACxD,CAAC;IAGD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC;IAGD,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,MAAM,EAAE;QACjC,cAAc,EAAE,OAAO,CAAC,OAAO,IAAI,mBAAmB;QACtD,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO;QACnC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAGF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAGD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACpC,IACE,CAAC;YACC,QAAQ;YACR,OAAO;YACP,UAAU;YACV,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,aAAa;YACb,MAAM;YACN,gBAAgB;YAChB,SAAS;YACT,OAAO;YACP,SAAS;YACT,aAAa;YACb,OAAO;SACR,CAAC,QAAQ,CAAC,GAAG,CAAC,EACf,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,iBAAiB,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QAEH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SAClC,CAAC,CAAC;QAGH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAEjB,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAE9F,IAAI,cAAc,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACrD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,WAAW,eAAe,oBAAoB,KAAK,uBAAuB,cAAc,GAAG,CAAC,CAAC;gBAC3G,CAAC;gBAGD,KAAK,CAAC,CAAC,eAAe,CACpB,MAAM,EACN;oBACE,GAAG,OAAO;oBACV,KAAK,EAAE,cAAc;iBACtB,EACD,IAAI,CACL,CAAC;gBAGF,OAAO,EAAE,CAAC;YACZ,CAAC;YAGD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnG,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAGD,KAAK,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QAG1E,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,UAAU,EAAE,CAAC;QAGpB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,WAAW,eAAe,+BAA+B,EAAE,UAAU,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,UAAU,CAAC;IACnB,CAAC;AAAA,CACF;AAED,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,CAAC"}