{"version":3,"sources":["../src/openai-provider.ts","../src/chat/openai-chat-language-model.ts","../src/openai-error.ts","../src/openai-language-model-capabilities.ts","../src/chat/convert-openai-chat-usage.ts","../src/chat/convert-to-openai-chat-messages.ts","../src/chat/get-response-metadata.ts","../src/chat/map-openai-finish-reason.ts","../src/chat/openai-chat-api.ts","../src/chat/openai-chat-options.ts","../src/chat/openai-chat-prepare-tools.ts","../src/completion/openai-completion-language-model.ts","../src/completion/convert-openai-completion-usage.ts","../src/completion/convert-to-openai-completion-prompt.ts","../src/completion/get-response-metadata.ts","../src/completion/map-openai-finish-reason.ts","../src/completion/openai-completion-api.ts","../src/completion/openai-completion-options.ts","../src/embedding/openai-embedding-model.ts","../src/embedding/openai-embedding-options.ts","../src/embedding/openai-embedding-api.ts","../src/image/openai-image-model.ts","../src/image/openai-image-api.ts","../src/image/openai-image-model-options.ts","../src/tool/apply-patch.ts","../src/tool/code-interpreter.ts","../src/tool/custom.ts","../src/tool/file-search.ts","../src/tool/image-generation.ts","../src/tool/local-shell.ts","../src/tool/shell.ts","../src/tool/tool-search.ts","../src/tool/web-search.ts","../src/tool/web-search-preview.ts","../src/tool/mcp.ts","../src/openai-tools.ts","../src/responses/openai-responses-language-model.ts","../src/responses/convert-openai-responses-usage.ts","../src/responses/convert-to-openai-responses-input.ts","../src/responses/map-openai-responses-finish-reason.ts","../src/responses/openai-responses-api.ts","../src/responses/openai-responses-options.ts","../src/responses/openai-responses-prepare-tools.ts","../src/speech/openai-speech-model.ts","../src/speech/openai-speech-options.ts","../src/transcription/openai-transcription-model.ts","../src/transcription/openai-transcription-api.ts","../src/transcription/openai-transcription-options.ts","../src/version.ts"],"sourcesContent":["import type {\n  EmbeddingModelV3,\n  ImageModelV3,\n  LanguageModelV3,\n  ProviderV3,\n  SpeechModelV3,\n  TranscriptionModelV3,\n} from '@ai-sdk/provider';\nimport {\n  loadApiKey,\n  loadOptionalSetting,\n  withoutTrailingSlash,\n  withUserAgentSuffix,\n  type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIChatLanguageModel } from './chat/openai-chat-language-model';\nimport type { OpenAIChatModelId } from './chat/openai-chat-options';\nimport { OpenAICompletionLanguageModel } from './completion/openai-completion-language-model';\nimport type { OpenAICompletionModelId } from './completion/openai-completion-options';\nimport { OpenAIEmbeddingModel } from './embedding/openai-embedding-model';\nimport type { OpenAIEmbeddingModelId } from './embedding/openai-embedding-options';\nimport { OpenAIImageModel } from './image/openai-image-model';\nimport type { OpenAIImageModelId } from './image/openai-image-model-options';\nimport { openaiTools } from './openai-tools';\nimport { OpenAIResponsesLanguageModel } from './responses/openai-responses-language-model';\nimport type { OpenAIResponsesModelId } from './responses/openai-responses-options';\nimport { OpenAISpeechModel } from './speech/openai-speech-model';\nimport type { OpenAISpeechModelId } from './speech/openai-speech-options';\nimport { OpenAITranscriptionModel } from './transcription/openai-transcription-model';\nimport type { OpenAITranscriptionModelId } from './transcription/openai-transcription-options';\nimport { VERSION } from './version';\n\nexport interface OpenAIProvider extends ProviderV3 {\n  (modelId: OpenAIResponsesModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI model for text generation.\n   */\n  languageModel(modelId: OpenAIResponsesModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI chat model for text generation.\n   */\n  chat(modelId: OpenAIChatModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI responses API model for text generation.\n   */\n  responses(modelId: OpenAIResponsesModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI completion model for text generation.\n   */\n  completion(modelId: OpenAICompletionModelId): LanguageModelV3;\n\n  /**\n   * Creates a model for text embeddings.\n   */\n  embedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * Creates a model for text embeddings.\n   */\n  embeddingModel(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embedding` instead.\n   */\n  textEmbedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embeddingModel` instead.\n   */\n  textEmbeddingModel(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * Creates a model for image generation.\n   */\n  image(modelId: OpenAIImageModelId): ImageModelV3;\n\n  /**\n   * Creates a model for image generation.\n   */\n  imageModel(modelId: OpenAIImageModelId): ImageModelV3;\n\n  /**\n   * Creates a model for transcription.\n   */\n  transcription(modelId: OpenAITranscriptionModelId): TranscriptionModelV3;\n\n  /**\n   * Creates a model for speech generation.\n   */\n  speech(modelId: OpenAISpeechModelId): SpeechModelV3;\n\n  /**\n   * OpenAI-specific tools.\n   */\n  tools: typeof openaiTools;\n}\n\nexport interface OpenAIProviderSettings {\n  /**\n   * Base URL for the OpenAI API calls.\n   */\n  baseURL?: string;\n\n  /**\n   * API key for authenticating requests.\n   */\n  apiKey?: string;\n\n  /**\n   * OpenAI Organization.\n   */\n  organization?: string;\n\n  /**\n   * OpenAI project.\n   */\n  project?: string;\n\n  /**\n   * Custom headers to include in the requests.\n   */\n  headers?: Record<string, string>;\n\n  /**\n   * Provider name. Overrides the `openai` default name for 3rd party providers.\n   */\n  name?: string;\n\n  /**\n   * Custom fetch implementation. You can use it as a middleware to intercept requests,\n   * or to provide a custom fetch implementation for e.g. testing.\n   */\n  fetch?: FetchFunction;\n}\n\n/**\n * Create an OpenAI provider instance.\n */\nexport function createOpenAI(\n  options: OpenAIProviderSettings = {},\n): OpenAIProvider {\n  const baseURL =\n    withoutTrailingSlash(\n      loadOptionalSetting({\n        settingValue: options.baseURL,\n        environmentVariableName: 'OPENAI_BASE_URL',\n      }),\n    ) ?? 'https://api.openai.com/v1';\n\n  const providerName = options.name ?? 'openai';\n\n  const getHeaders = () =>\n    withUserAgentSuffix(\n      {\n        Authorization: `Bearer ${loadApiKey({\n          apiKey: options.apiKey,\n          environmentVariableName: 'OPENAI_API_KEY',\n          description: 'OpenAI',\n        })}`,\n        'OpenAI-Organization': options.organization,\n        'OpenAI-Project': options.project,\n        ...options.headers,\n      },\n      `ai-sdk/openai/${VERSION}`,\n    );\n\n  const createChatModel = (modelId: OpenAIChatModelId) =>\n    new OpenAIChatLanguageModel(modelId, {\n      provider: `${providerName}.chat`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createCompletionModel = (modelId: OpenAICompletionModelId) =>\n    new OpenAICompletionLanguageModel(modelId, {\n      provider: `${providerName}.completion`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createEmbeddingModel = (modelId: OpenAIEmbeddingModelId) =>\n    new OpenAIEmbeddingModel(modelId, {\n      provider: `${providerName}.embedding`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createImageModel = (modelId: OpenAIImageModelId) =>\n    new OpenAIImageModel(modelId, {\n      provider: `${providerName}.image`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createTranscriptionModel = (modelId: OpenAITranscriptionModelId) =>\n    new OpenAITranscriptionModel(modelId, {\n      provider: `${providerName}.transcription`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createSpeechModel = (modelId: OpenAISpeechModelId) =>\n    new OpenAISpeechModel(modelId, {\n      provider: `${providerName}.speech`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createLanguageModel = (modelId: OpenAIResponsesModelId) => {\n    if (new.target) {\n      throw new Error(\n        'The OpenAI model function cannot be called with the new keyword.',\n      );\n    }\n\n    return createResponsesModel(modelId);\n  };\n\n  const createResponsesModel = (modelId: OpenAIResponsesModelId) => {\n    return new OpenAIResponsesLanguageModel(modelId, {\n      provider: `${providerName}.responses`,\n      url: ({ path }) => `${baseURL}${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n      fileIdPrefixes: ['file-'],\n    });\n  };\n\n  const provider = function (modelId: OpenAIResponsesModelId) {\n    return createLanguageModel(modelId);\n  };\n\n  provider.specificationVersion = 'v3' as const;\n  provider.languageModel = createLanguageModel;\n  provider.chat = createChatModel;\n  provider.completion = createCompletionModel;\n  provider.responses = createResponsesModel;\n  provider.embedding = createEmbeddingModel;\n  provider.embeddingModel = createEmbeddingModel;\n  provider.textEmbedding = createEmbeddingModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n\n  provider.image = createImageModel;\n  provider.imageModel = createImageModel;\n\n  provider.transcription = createTranscriptionModel;\n  provider.transcriptionModel = createTranscriptionModel;\n\n  provider.speech = createSpeechModel;\n  provider.speechModel = createSpeechModel;\n\n  provider.tools = openaiTools;\n\n  return provider as OpenAIProvider;\n}\n\n/**\n * Default OpenAI provider instance.\n */\nexport const openai = createOpenAI();\n","import {\n  InvalidResponseDataError,\n  type LanguageModelV3,\n  type LanguageModelV3CallOptions,\n  type LanguageModelV3Content,\n  type LanguageModelV3FinishReason,\n  type LanguageModelV3GenerateResult,\n  type LanguageModelV3StreamPart,\n  type LanguageModelV3StreamResult,\n  type SharedV3ProviderMetadata,\n  type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  generateId,\n  isParsableJson,\n  parseProviderOptions,\n  postJsonToApi,\n  type FetchFunction,\n  type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\nimport {\n  convertOpenAIChatUsage,\n  type OpenAIChatUsage,\n} from './convert-openai-chat-usage';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n  openaiChatChunkSchema,\n  openaiChatResponseSchema,\n  type OpenAIChatChunk,\n} from './openai-chat-api';\nimport {\n  openaiLanguageModelChatOptions,\n  type OpenAIChatModelId,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n  provider: string;\n  headers: () => Record<string, string | undefined>;\n  url: (options: { modelId: string; path: string }) => string;\n  fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  readonly modelId: OpenAIChatModelId;\n\n  readonly supportedUrls = {\n    'image/*': [/^https?:\\/\\/.*$/],\n  };\n\n  private readonly config: OpenAIChatConfig;\n\n  constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  private async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences,\n    responseFormat,\n    seed,\n    tools,\n    toolChoice,\n    providerOptions,\n  }: LanguageModelV3CallOptions) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openaiOptions =\n      (await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiLanguageModelChatOptions,\n      })) ?? {};\n\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n    const isReasoningModel =\n      openaiOptions.forceReasoning ?? modelCapabilities.isReasoningModel;\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported', feature: 'topK' });\n    }\n\n    const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n      {\n        prompt,\n        systemMessageMode:\n          openaiOptions.systemMessageMode ??\n          (isReasoningModel\n            ? 'developer'\n            : modelCapabilities.systemMessageMode),\n      },\n    );\n\n    warnings.push(...messageWarnings);\n\n    const strictJsonSchema = openaiOptions.strictJsonSchema ?? true;\n\n    const baseArgs = {\n      // model id:\n      model: this.modelId,\n\n      // model specific settings:\n      logit_bias: openaiOptions.logitBias,\n      logprobs:\n        openaiOptions.logprobs === true ||\n        typeof openaiOptions.logprobs === 'number'\n          ? true\n          : undefined,\n      top_logprobs:\n        typeof openaiOptions.logprobs === 'number'\n          ? openaiOptions.logprobs\n          : typeof openaiOptions.logprobs === 'boolean'\n            ? openaiOptions.logprobs\n              ? 0\n              : undefined\n            : undefined,\n      user: openaiOptions.user,\n      parallel_tool_calls: openaiOptions.parallelToolCalls,\n\n      // standardized settings:\n      max_tokens: maxOutputTokens,\n      temperature,\n      top_p: topP,\n      frequency_penalty: frequencyPenalty,\n      presence_penalty: presencePenalty,\n      response_format:\n        responseFormat?.type === 'json'\n          ? responseFormat.schema != null\n            ? {\n                type: 'json_schema',\n                json_schema: {\n                  schema: responseFormat.schema,\n                  strict: strictJsonSchema,\n                  name: responseFormat.name ?? 'response',\n                  description: responseFormat.description,\n                },\n              }\n            : { type: 'json_object' }\n          : undefined,\n      stop: stopSequences,\n      seed,\n      verbosity: openaiOptions.textVerbosity,\n\n      // openai specific settings:\n      // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n      max_completion_tokens: openaiOptions.maxCompletionTokens,\n      store: openaiOptions.store,\n      metadata: openaiOptions.metadata,\n      prediction: openaiOptions.prediction,\n      reasoning_effort: openaiOptions.reasoningEffort,\n      service_tier: openaiOptions.serviceTier,\n      prompt_cache_key: openaiOptions.promptCacheKey,\n      prompt_cache_retention: openaiOptions.promptCacheRetention,\n      safety_identifier: openaiOptions.safetyIdentifier,\n\n      // messages:\n      messages,\n    };\n\n    // remove unsupported settings for reasoning models\n    // see https://platform.openai.com/docs/guides/reasoning#limitations\n    if (isReasoningModel) {\n      // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n      //  https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n      if (\n        openaiOptions.reasoningEffort !== 'none' ||\n        !modelCapabilities.supportsNonReasoningParameters\n      ) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = undefined;\n          warnings.push({\n            type: 'unsupported',\n            feature: 'temperature',\n            details: 'temperature is not supported for reasoning models',\n          });\n        }\n        if (baseArgs.top_p != null) {\n          baseArgs.top_p = undefined;\n          warnings.push({\n            type: 'unsupported',\n            feature: 'topP',\n            details: 'topP is not supported for reasoning models',\n          });\n        }\n        if (baseArgs.logprobs != null) {\n          baseArgs.logprobs = undefined;\n          warnings.push({\n            type: 'other',\n            message: 'logprobs is not supported for reasoning models',\n          });\n        }\n      }\n\n      if (baseArgs.frequency_penalty != null) {\n        baseArgs.frequency_penalty = undefined;\n        warnings.push({\n          type: 'unsupported',\n          feature: 'frequencyPenalty',\n          details: 'frequencyPenalty is not supported for reasoning models',\n        });\n      }\n      if (baseArgs.presence_penalty != null) {\n        baseArgs.presence_penalty = undefined;\n        warnings.push({\n          type: 'unsupported',\n          feature: 'presencePenalty',\n          details: 'presencePenalty is not supported for reasoning models',\n        });\n      }\n      if (baseArgs.logit_bias != null) {\n        baseArgs.logit_bias = undefined;\n        warnings.push({\n          type: 'other',\n          message: 'logitBias is not supported for reasoning models',\n        });\n      }\n\n      if (baseArgs.top_logprobs != null) {\n        baseArgs.top_logprobs = undefined;\n        warnings.push({\n          type: 'other',\n          message: 'topLogprobs is not supported for reasoning models',\n        });\n      }\n\n      // reasoning models use max_completion_tokens instead of max_tokens:\n      if (baseArgs.max_tokens != null) {\n        if (baseArgs.max_completion_tokens == null) {\n          baseArgs.max_completion_tokens = baseArgs.max_tokens;\n        }\n        baseArgs.max_tokens = undefined;\n      }\n    } else if (\n      this.modelId.startsWith('gpt-4o-search-preview') ||\n      this.modelId.startsWith('gpt-4o-mini-search-preview')\n    ) {\n      if (baseArgs.temperature != null) {\n        baseArgs.temperature = undefined;\n        warnings.push({\n          type: 'unsupported',\n          feature: 'temperature',\n          details:\n            'temperature is not supported for the search preview models and has been removed.',\n        });\n      }\n    }\n\n    // Validate flex processing support\n    if (\n      openaiOptions.serviceTier === 'flex' &&\n      !modelCapabilities.supportsFlexProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'flex processing is only available for o3, o4-mini, and gpt-5 models',\n      });\n      baseArgs.service_tier = undefined;\n    }\n\n    // Validate priority processing support\n    if (\n      openaiOptions.serviceTier === 'priority' &&\n      !modelCapabilities.supportsPriorityProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n      });\n      baseArgs.service_tier = undefined;\n    }\n\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings,\n    } = prepareChatTools({\n      tools,\n      toolChoice,\n    });\n\n    return {\n      args: {\n        ...baseArgs,\n        tools: openaiTools,\n        tool_choice: openaiToolChoice,\n      },\n      warnings: [...warnings, ...toolWarnings],\n    };\n  }\n\n  async doGenerate(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const { args: body, warnings } = await this.getArgs(options);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/chat/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiChatResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const choice = response.choices[0];\n    const content: Array<LanguageModelV3Content> = [];\n\n    // text content:\n    const text = choice.message.content;\n    if (text != null && text.length > 0) {\n      content.push({ type: 'text', text });\n    }\n\n    // tool calls:\n    for (const toolCall of choice.message.tool_calls ?? []) {\n      content.push({\n        type: 'tool-call' as const,\n        toolCallId: toolCall.id ?? generateId(),\n        toolName: toolCall.function.name,\n        input: toolCall.function.arguments!,\n      });\n    }\n\n    // annotations/citations:\n    for (const annotation of choice.message.annotations ?? []) {\n      content.push({\n        type: 'source',\n        sourceType: 'url',\n        id: generateId(),\n        url: annotation.url_citation.url,\n        title: annotation.url_citation.title,\n      });\n    }\n\n    // provider metadata:\n    const completionTokenDetails = response.usage?.completion_tokens_details;\n    const promptTokenDetails = response.usage?.prompt_tokens_details;\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n    if (completionTokenDetails?.accepted_prediction_tokens != null) {\n      providerMetadata.openai.acceptedPredictionTokens =\n        completionTokenDetails?.accepted_prediction_tokens;\n    }\n    if (completionTokenDetails?.rejected_prediction_tokens != null) {\n      providerMetadata.openai.rejectedPredictionTokens =\n        completionTokenDetails?.rejected_prediction_tokens;\n    }\n    if (choice.logprobs?.content != null) {\n      providerMetadata.openai.logprobs = choice.logprobs.content;\n    }\n\n    return {\n      content,\n      finishReason: {\n        unified: mapOpenAIFinishReason(choice.finish_reason),\n        raw: choice.finish_reason ?? undefined,\n      },\n      usage: convertOpenAIChatUsage(response.usage),\n      request: { body },\n      response: {\n        ...getResponseMetadata(response),\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      warnings,\n      providerMetadata,\n    };\n  }\n\n  async doStream(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const body = {\n      ...args,\n      stream: true,\n      stream_options: {\n        include_usage: true,\n      },\n    };\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/chat/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiChatChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const toolCalls: Array<{\n      id: string;\n      type: 'function';\n      function: {\n        name: string;\n        arguments: string;\n      };\n      hasFinished: boolean;\n    }> = [];\n\n    let finishReason: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    let usage: OpenAIChatUsage | undefined = undefined;\n    let metadataExtracted = false;\n    let isActiveText = false;\n\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAIChatChunk>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = { unified: 'error', raw: undefined };\n              controller.enqueue({ type: 'error', error: chunk.error });\n              return;\n            }\n\n            const value = chunk.value;\n\n            // handle error chunks:\n            if ('error' in value) {\n              finishReason = { unified: 'error', raw: undefined };\n              controller.enqueue({ type: 'error', error: value.error });\n              return;\n            }\n\n            // extract and emit response metadata once. Usually it comes in the first chunk.\n            // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n            // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n            if (!metadataExtracted) {\n              const metadata = getResponseMetadata(value);\n              if (Object.values(metadata).some(Boolean)) {\n                metadataExtracted = true;\n                controller.enqueue({\n                  type: 'response-metadata',\n                  ...getResponseMetadata(value),\n                });\n              }\n            }\n\n            if (value.usage != null) {\n              usage = value.usage;\n\n              if (\n                value.usage.completion_tokens_details\n                  ?.accepted_prediction_tokens != null\n              ) {\n                providerMetadata.openai.acceptedPredictionTokens =\n                  value.usage.completion_tokens_details?.accepted_prediction_tokens;\n              }\n              if (\n                value.usage.completion_tokens_details\n                  ?.rejected_prediction_tokens != null\n              ) {\n                providerMetadata.openai.rejectedPredictionTokens =\n                  value.usage.completion_tokens_details?.rejected_prediction_tokens;\n              }\n            }\n\n            const choice = value.choices[0];\n\n            if (choice?.finish_reason != null) {\n              finishReason = {\n                unified: mapOpenAIFinishReason(choice.finish_reason),\n                raw: choice.finish_reason,\n              };\n            }\n\n            if (choice?.logprobs?.content != null) {\n              providerMetadata.openai.logprobs = choice.logprobs.content;\n            }\n\n            if (choice?.delta == null) {\n              return;\n            }\n\n            const delta = choice.delta;\n\n            if (delta.content != null) {\n              if (!isActiveText) {\n                controller.enqueue({ type: 'text-start', id: '0' });\n                isActiveText = true;\n              }\n\n              controller.enqueue({\n                type: 'text-delta',\n                id: '0',\n                delta: delta.content,\n              });\n            }\n\n            if (delta.tool_calls != null) {\n              for (const toolCallDelta of delta.tool_calls) {\n                const index = toolCallDelta.index;\n\n                // Tool call start. OpenAI returns all information except the arguments in the first chunk.\n                if (toolCalls[index] == null) {\n                  if (\n                    toolCallDelta.type != null &&\n                    toolCallDelta.type !== 'function'\n                  ) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function' type.`,\n                    });\n                  }\n\n                  if (toolCallDelta.id == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'id' to be a string.`,\n                    });\n                  }\n\n                  if (toolCallDelta.function?.name == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function.name' to be a string.`,\n                    });\n                  }\n\n                  controller.enqueue({\n                    type: 'tool-input-start',\n                    id: toolCallDelta.id,\n                    toolName: toolCallDelta.function.name,\n                  });\n\n                  toolCalls[index] = {\n                    id: toolCallDelta.id,\n                    type: 'function',\n                    function: {\n                      name: toolCallDelta.function.name,\n                      arguments: toolCallDelta.function.arguments ?? '',\n                    },\n                    hasFinished: false,\n                  };\n\n                  const toolCall = toolCalls[index];\n\n                  if (\n                    toolCall.function?.name != null &&\n                    toolCall.function?.arguments != null\n                  ) {\n                    // send delta if the argument text has already started:\n                    if (toolCall.function.arguments.length > 0) {\n                      controller.enqueue({\n                        type: 'tool-input-delta',\n                        id: toolCall.id,\n                        delta: toolCall.function.arguments,\n                      });\n                    }\n\n                    // check if tool call is complete\n                    // (some providers send the full tool call in one chunk):\n                    if (isParsableJson(toolCall.function.arguments)) {\n                      controller.enqueue({\n                        type: 'tool-input-end',\n                        id: toolCall.id,\n                      });\n\n                      controller.enqueue({\n                        type: 'tool-call',\n                        toolCallId: toolCall.id ?? generateId(),\n                        toolName: toolCall.function.name,\n                        input: toolCall.function.arguments,\n                      });\n                      toolCall.hasFinished = true;\n                    }\n                  }\n\n                  continue;\n                }\n\n                // existing tool call, merge if not finished\n                const toolCall = toolCalls[index];\n\n                if (toolCall.hasFinished) {\n                  continue;\n                }\n\n                if (toolCallDelta.function?.arguments != null) {\n                  toolCall.function!.arguments +=\n                    toolCallDelta.function?.arguments ?? '';\n                }\n\n                // send delta\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.id,\n                  delta: toolCallDelta.function.arguments ?? '',\n                });\n\n                // check if tool call is complete\n                if (\n                  toolCall.function?.name != null &&\n                  toolCall.function?.arguments != null &&\n                  isParsableJson(toolCall.function.arguments)\n                ) {\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: toolCall.id,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId: toolCall.id ?? generateId(),\n                    toolName: toolCall.function.name,\n                    input: toolCall.function.arguments,\n                  });\n                  toolCall.hasFinished = true;\n                }\n              }\n            }\n\n            // annotations/citations:\n            if (delta.annotations != null) {\n              for (const annotation of delta.annotations) {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: generateId(),\n                  url: annotation.url_citation.url,\n                  title: annotation.url_citation.title,\n                });\n              }\n            }\n          },\n\n          flush(controller) {\n            if (isActiveText) {\n              controller.enqueue({ type: 'text-end', id: '0' });\n            }\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage: convertOpenAIChatUsage(usage),\n              ...(providerMetadata != null ? { providerMetadata } : {}),\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n  error: z.object({\n    message: z.string(),\n\n    // The additional information below is handled loosely to support\n    // OpenAI-compatible providers that have slightly different error\n    // responses:\n    type: z.string().nullish(),\n    param: z.any().nullish(),\n    code: z.union([z.string(), z.number()]).nullish(),\n  }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n  errorSchema: openaiErrorDataSchema,\n  errorToMessage: data => data.error.message,\n});\n","export type OpenAILanguageModelCapabilities = {\n  isReasoningModel: boolean;\n  systemMessageMode: 'remove' | 'system' | 'developer';\n  supportsFlexProcessing: boolean;\n  supportsPriorityProcessing: boolean;\n\n  /**\n   * Allow temperature, topP, logProbs when reasoningEffort is none.\n   */\n  supportsNonReasoningParameters: boolean;\n};\n\nexport function getOpenAILanguageModelCapabilities(\n  modelId: string,\n): OpenAILanguageModelCapabilities {\n  const supportsFlexProcessing =\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini') ||\n    (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n\n  const supportsPriorityProcessing =\n    modelId.startsWith('gpt-4') ||\n    (modelId.startsWith('gpt-5') &&\n      !modelId.startsWith('gpt-5-nano') &&\n      !modelId.startsWith('gpt-5-chat') &&\n      !modelId.startsWith('gpt-5.4-nano')) ||\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini');\n\n  // Use allowlist approach: only known reasoning models should use 'developer' role\n  // This prevents issues with fine-tuned models, third-party models, and custom models\n  const isReasoningModel =\n    modelId.startsWith('o1') ||\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini') ||\n    (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n\n  // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n  // GPT-5.1 and later model families support temperature, topP, logProbs when reasoningEffort is none.\n  const supportsNonReasoningParameters =\n    modelId.startsWith('gpt-5.1') ||\n    modelId.startsWith('gpt-5.2') ||\n    modelId.startsWith('gpt-5.3') ||\n    modelId.startsWith('gpt-5.4') ||\n    modelId.startsWith('gpt-5.5');\n\n  const systemMessageMode = isReasoningModel ? 'developer' : 'system';\n\n  return {\n    supportsFlexProcessing,\n    supportsPriorityProcessing,\n    isReasoningModel,\n    systemMessageMode,\n    supportsNonReasoningParameters,\n  };\n}\n","import type { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type OpenAIChatUsage = {\n  prompt_tokens?: number | null;\n  completion_tokens?: number | null;\n  total_tokens?: number | null;\n  prompt_tokens_details?: {\n    cached_tokens?: number | null;\n  } | null;\n  completion_tokens_details?: {\n    reasoning_tokens?: number | null;\n    accepted_prediction_tokens?: number | null;\n    rejected_prediction_tokens?: number | null;\n  } | null;\n};\n\nexport function convertOpenAIChatUsage(\n  usage: OpenAIChatUsage | undefined | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const promptTokens = usage.prompt_tokens ?? 0;\n  const completionTokens = usage.completion_tokens ?? 0;\n  const cachedTokens = usage.prompt_tokens_details?.cached_tokens ?? 0;\n  const reasoningTokens =\n    usage.completion_tokens_details?.reasoning_tokens ?? 0;\n\n  return {\n    inputTokens: {\n      total: promptTokens,\n      noCache: promptTokens - cachedTokens,\n      cacheRead: cachedTokens,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: completionTokens,\n      text: completionTokens - reasoningTokens,\n      reasoning: reasoningTokens,\n    },\n    raw: usage,\n  };\n}\n","import {\n  UnsupportedFunctionalityError,\n  type SharedV3Warning,\n  type LanguageModelV3Prompt,\n} from '@ai-sdk/provider';\nimport type { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nfunction serializeToolCallArguments(input: unknown): string {\n  return JSON.stringify(input === undefined ? {} : input);\n}\n\nexport function convertToOpenAIChatMessages({\n  prompt,\n  systemMessageMode = 'system',\n}: {\n  prompt: LanguageModelV3Prompt;\n  systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n  messages: OpenAIChatPrompt;\n  warnings: Array<SharedV3Warning>;\n} {\n  const messages: OpenAIChatPrompt = [];\n  const warnings: Array<SharedV3Warning> = [];\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        switch (systemMessageMode) {\n          case 'system': {\n            messages.push({ role: 'system', content });\n            break;\n          }\n          case 'developer': {\n            messages.push({ role: 'developer', content });\n            break;\n          }\n          case 'remove': {\n            warnings.push({\n              type: 'other',\n              message: 'system messages are removed for this model',\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck: never = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`,\n            );\n          }\n        }\n        break;\n      }\n\n      case 'user': {\n        if (content.length === 1 && content[0].type === 'text') {\n          messages.push({ role: 'user', content: content[0].text });\n          break;\n        }\n\n        messages.push({\n          role: 'user',\n          content: content.map((part, index) => {\n            switch (part.type) {\n              case 'text': {\n                return { type: 'text', text: part.text };\n              }\n              case 'file': {\n                if (part.mediaType.startsWith('image/')) {\n                  const mediaType =\n                    part.mediaType === 'image/*'\n                      ? 'image/jpeg'\n                      : part.mediaType;\n\n                  return {\n                    type: 'image_url',\n                    image_url: {\n                      url:\n                        part.data instanceof URL\n                          ? part.data.toString()\n                          : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n                      // OpenAI specific extension: image detail\n                      detail: part.providerOptions?.openai?.imageDetail,\n                    },\n                  };\n                } else if (part.mediaType.startsWith('audio/')) {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: 'audio file parts with URLs',\n                    });\n                  }\n\n                  switch (part.mediaType) {\n                    case 'audio/wav': {\n                      return {\n                        type: 'input_audio',\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: 'wav',\n                        },\n                      };\n                    }\n                    case 'audio/mp3':\n                    case 'audio/mpeg': {\n                      return {\n                        type: 'input_audio',\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: 'mp3',\n                        },\n                      };\n                    }\n\n                    default: {\n                      throw new UnsupportedFunctionalityError({\n                        functionality: `audio content parts with media type ${part.mediaType}`,\n                      });\n                    }\n                  }\n                } else if (part.mediaType === 'application/pdf') {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: 'PDF file parts with URLs',\n                    });\n                  }\n\n                  return {\n                    type: 'file',\n                    file:\n                      typeof part.data === 'string' &&\n                      part.data.startsWith('file-')\n                        ? { file_id: part.data }\n                        : {\n                            filename: part.filename ?? `part-${index}.pdf`,\n                            file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n                          },\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`,\n                  });\n                }\n              }\n            }\n          }),\n        });\n\n        break;\n      }\n\n      case 'assistant': {\n        let text = '';\n        const toolCalls: Array<{\n          id: string;\n          type: 'function';\n          function: { name: string; arguments: string };\n        }> = [];\n\n        for (const part of content) {\n          switch (part.type) {\n            case 'text': {\n              text += part.text;\n              break;\n            }\n            case 'tool-call': {\n              toolCalls.push({\n                id: part.toolCallId,\n                type: 'function',\n                function: {\n                  name: part.toolName,\n                  arguments: serializeToolCallArguments(part.input),\n                },\n              });\n              break;\n            }\n          }\n        }\n\n        messages.push({\n          role: 'assistant',\n          content: toolCalls.length > 0 ? text || null : text,\n          tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n        });\n\n        break;\n      }\n\n      case 'tool': {\n        for (const toolResponse of content) {\n          if (toolResponse.type === 'tool-approval-response') {\n            continue;\n          }\n          const output = toolResponse.output;\n\n          let contentValue: string;\n          switch (output.type) {\n            case 'text':\n            case 'error-text':\n              contentValue = output.value;\n              break;\n            case 'execution-denied':\n              contentValue = output.reason ?? 'Tool execution denied.';\n              break;\n            case 'content':\n            case 'json':\n            case 'error-json':\n              contentValue = JSON.stringify(output.value);\n              break;\n          }\n\n          messages.push({\n            role: 'tool',\n            tool_call_id: toolResponse.toolCallId,\n            content: contentValue,\n          });\n        }\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  return { messages, warnings };\n}\n","export function getResponseMetadata({\n  id,\n  model,\n  created,\n}: {\n  id?: string | undefined | null;\n  created?: number | undefined | null;\n  model?: string | undefined | null;\n}) {\n  return {\n    id: id ?? undefined,\n    modelId: model ?? undefined,\n    timestamp: created ? new Date(created * 1000) : undefined,\n  };\n}\n","import type { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n  switch (finishReason) {\n    case 'stop':\n      return 'stop';\n    case 'length':\n      return 'length';\n    case 'content_filter':\n      return 'content-filter';\n    case 'function_call':\n    case 'tool_calls':\n      return 'tool-calls';\n    default:\n      return 'other';\n  }\n}\n","import type { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n  type: 'function';\n  function: {\n    name: string;\n    description: string | undefined;\n    parameters: JSONSchema7;\n    strict?: boolean;\n  };\n}\n\nexport type OpenAIChatToolChoice =\n  | 'auto'\n  | 'none'\n  | 'required'\n  | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      id: z.string().nullish(),\n      created: z.number().nullish(),\n      model: z.string().nullish(),\n      choices: z.array(\n        z.object({\n          message: z.object({\n            role: z.literal('assistant').nullish(),\n            content: z.string().nullish(),\n            tool_calls: z\n              .array(\n                z.object({\n                  id: z.string().nullish(),\n                  type: z.literal('function'),\n                  function: z.object({\n                    name: z.string(),\n                    arguments: z.string(),\n                  }),\n                }),\n              )\n              .nullish(),\n            annotations: z\n              .array(\n                z.object({\n                  type: z.literal('url_citation'),\n                  url_citation: z.object({\n                    start_index: z.number(),\n                    end_index: z.number(),\n                    url: z.string(),\n                    title: z.string(),\n                  }),\n                }),\n              )\n              .nullish(),\n          }),\n          index: z.number(),\n          logprobs: z\n            .object({\n              content: z\n                .array(\n                  z.object({\n                    token: z.string(),\n                    logprob: z.number(),\n                    top_logprobs: z.array(\n                      z.object({\n                        token: z.string(),\n                        logprob: z.number(),\n                      }),\n                    ),\n                  }),\n                )\n                .nullish(),\n            })\n            .nullish(),\n          finish_reason: z.string().nullish(),\n        }),\n      ),\n      usage: z\n        .object({\n          prompt_tokens: z.number().nullish(),\n          completion_tokens: z.number().nullish(),\n          total_tokens: z.number().nullish(),\n          prompt_tokens_details: z\n            .object({\n              cached_tokens: z.number().nullish(),\n            })\n            .nullish(),\n          completion_tokens_details: z\n            .object({\n              reasoning_tokens: z.number().nullish(),\n              accepted_prediction_tokens: z.number().nullish(),\n              rejected_prediction_tokens: z.number().nullish(),\n            })\n            .nullish(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazySchema(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        id: z.string().nullish(),\n        created: z.number().nullish(),\n        model: z.string().nullish(),\n        choices: z.array(\n          z.object({\n            delta: z\n              .object({\n                role: z.enum(['assistant']).nullish(),\n                content: z.string().nullish(),\n                tool_calls: z\n                  .array(\n                    z.object({\n                      index: z.number(),\n                      id: z.string().nullish(),\n                      type: z.literal('function').nullish(),\n                      function: z.object({\n                        name: z.string().nullish(),\n                        arguments: z.string().nullish(),\n                      }),\n                    }),\n                  )\n                  .nullish(),\n                annotations: z\n                  .array(\n                    z.object({\n                      type: z.literal('url_citation'),\n                      url_citation: z.object({\n                        start_index: z.number(),\n                        end_index: z.number(),\n                        url: z.string(),\n                        title: z.string(),\n                      }),\n                    }),\n                  )\n                  .nullish(),\n              })\n              .nullish(),\n            logprobs: z\n              .object({\n                content: z\n                  .array(\n                    z.object({\n                      token: z.string(),\n                      logprob: z.number(),\n                      top_logprobs: z.array(\n                        z.object({\n                          token: z.string(),\n                          logprob: z.number(),\n                        }),\n                      ),\n                    }),\n                  )\n                  .nullish(),\n              })\n              .nullish(),\n            finish_reason: z.string().nullish(),\n            index: z.number(),\n          }),\n        ),\n        usage: z\n          .object({\n            prompt_tokens: z.number().nullish(),\n            completion_tokens: z.number().nullish(),\n            total_tokens: z.number().nullish(),\n            prompt_tokens_details: z\n              .object({\n                cached_tokens: z.number().nullish(),\n              })\n              .nullish(),\n            completion_tokens_details: z\n              .object({\n                reasoning_tokens: z.number().nullish(),\n                accepted_prediction_tokens: z.number().nullish(),\n                rejected_prediction_tokens: z.number().nullish(),\n              })\n              .nullish(),\n          })\n          .nullish(),\n      }),\n      openaiErrorDataSchema,\n    ]),\n  ),\n);\n\nexport type OpenAIChatResponse = InferSchema<typeof openaiChatResponseSchema>;\n\nexport type OpenAIChatChunk = InferSchema<typeof openaiChatChunkSchema>;\n","import {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n  | 'o1'\n  | 'o1-2024-12-17'\n  | 'o3-mini'\n  | 'o3-mini-2025-01-31'\n  | 'o3'\n  | 'o3-2025-04-16'\n  | 'o4-mini'\n  | 'o4-mini-2025-04-16'\n  | 'gpt-4.1'\n  | 'gpt-4.1-2025-04-14'\n  | 'gpt-4.1-mini'\n  | 'gpt-4.1-mini-2025-04-14'\n  | 'gpt-4.1-nano'\n  | 'gpt-4.1-nano-2025-04-14'\n  | 'gpt-4o'\n  | 'gpt-4o-2024-05-13'\n  | 'gpt-4o-2024-08-06'\n  | 'gpt-4o-2024-11-20'\n  | 'gpt-4o-audio-preview'\n  | 'gpt-4o-audio-preview-2024-12-17'\n  | 'gpt-4o-audio-preview-2025-06-03'\n  | 'gpt-4o-mini'\n  | 'gpt-4o-mini-2024-07-18'\n  | 'gpt-4o-mini-audio-preview'\n  | 'gpt-4o-mini-audio-preview-2024-12-17'\n  | 'gpt-4o-search-preview'\n  | 'gpt-4o-search-preview-2025-03-11'\n  | 'gpt-4o-mini-search-preview'\n  | 'gpt-4o-mini-search-preview-2025-03-11'\n  | 'gpt-3.5-turbo-0125'\n  | 'gpt-3.5-turbo'\n  | 'gpt-3.5-turbo-1106'\n  | 'gpt-3.5-turbo-16k'\n  | 'gpt-5'\n  | 'gpt-5-2025-08-07'\n  | 'gpt-5-mini'\n  | 'gpt-5-mini-2025-08-07'\n  | 'gpt-5-nano'\n  | 'gpt-5-nano-2025-08-07'\n  | 'gpt-5-chat-latest'\n  | 'gpt-5.1'\n  | 'gpt-5.1-2025-11-13'\n  | 'gpt-5.1-chat-latest'\n  | 'gpt-5.2'\n  | 'gpt-5.2-2025-12-11'\n  | 'gpt-5.2-chat-latest'\n  | 'gpt-5.2-pro'\n  | 'gpt-5.2-pro-2025-12-11'\n  | 'gpt-5.3-chat-latest'\n  | 'gpt-5.4'\n  | 'gpt-5.4-2026-03-05'\n  | 'gpt-5.4-mini'\n  | 'gpt-5.4-mini-2026-03-17'\n  | 'gpt-5.4-nano'\n  | 'gpt-5.4-nano-2026-03-17'\n  | 'gpt-5.4-pro'\n  | 'gpt-5.4-pro-2026-03-05'\n  | 'gpt-5.5'\n  | 'gpt-5.5-2026-04-23'\n  | (string & {});\n\nexport const openaiLanguageModelChatOptions = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * Modify the likelihood of specified tokens appearing in the completion.\n       *\n       * Accepts a JSON object that maps tokens (specified by their token ID in\n       * the GPT tokenizer) to an associated bias value from -100 to 100.\n       */\n      logitBias: z.record(z.coerce.number<string>(), z.number()).optional(),\n\n      /**\n       * Return the log probabilities of the tokens.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       */\n      logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n      /**\n       * Whether to enable parallel function calling during tool use. Default to true.\n       */\n      parallelToolCalls: z.boolean().optional(),\n\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse.\n       */\n      user: z.string().optional(),\n\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`.\n       */\n      reasoningEffort: z\n        .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh'])\n        .optional(),\n\n      /**\n       * Maximum number of completion tokens to generate. Useful for reasoning models.\n       */\n      maxCompletionTokens: z.number().optional(),\n\n      /**\n       * Whether to enable persistence in responses API.\n       */\n      store: z.boolean().optional(),\n\n      /**\n       * Metadata to associate with the request.\n       */\n      metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n      /**\n       * Parameters for prediction mode.\n       */\n      prediction: z.record(z.string(), z.any()).optional(),\n\n      /**\n       * Service tier for the request.\n       * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n       *           Project settings. Unless otherwise configured, the Project will use 'default'.\n       * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n       * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n       * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n       *\n       * @default 'auto'\n       */\n      serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n      /**\n       * Whether to use strict JSON schema validation.\n       *\n       * @default true\n       */\n      strictJsonSchema: z.boolean().optional(),\n\n      /**\n       * Controls the verbosity of the model's responses.\n       * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n       */\n      textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n      /**\n       * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n       * Useful for improving cache hit rates and working around automatic caching issues.\n       */\n      promptCacheKey: z.string().optional(),\n\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Currently only available for 5.1 series models.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n      /**\n       * A stable identifier used to help detect users of your application\n       * that may be violating OpenAI's usage policies. The IDs should be a\n       * string that uniquely identifies each user. We recommend hashing their\n       * username or email address, in order to avoid sending us any identifying\n       * information.\n       */\n      safetyIdentifier: z.string().optional(),\n\n      /**\n       * Override the system message mode for this model.\n       * - 'system': Use the 'system' role for system messages (default for most models)\n       * - 'developer': Use the 'developer' role for system messages (used by reasoning models)\n       * - 'remove': Remove system messages entirely\n       *\n       * If not specified, the mode is automatically determined based on the model.\n       */\n      systemMessageMode: z.enum(['system', 'developer', 'remove']).optional(),\n\n      /**\n       * Force treating this model as a reasoning model.\n       *\n       * This is useful for \"stealth\" reasoning models (e.g. via a custom baseURL)\n       * where the model ID is not recognized by the SDK's allowlist.\n       *\n       * When enabled, the SDK applies reasoning-model parameter compatibility rules\n       * and defaults `systemMessageMode` to `developer` unless overridden.\n       */\n      forceReasoning: z.boolean().optional(),\n    }),\n  ),\n);\n\nexport type OpenAILanguageModelChatOptions = InferSchema<\n  typeof openaiLanguageModelChatOptions\n>;\n","import {\n  UnsupportedFunctionalityError,\n  type LanguageModelV3CallOptions,\n  type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport type {\n  OpenAIChatToolChoice,\n  OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n  tools,\n  toolChoice,\n}: {\n  tools: LanguageModelV3CallOptions['tools'];\n  toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n  tools?: OpenAIChatFunctionTool[];\n  toolChoice?: OpenAIChatToolChoice;\n  toolWarnings: Array<SharedV3Warning>;\n} {\n  // when the tools array is empty, change it to undefined to prevent errors:\n  tools = tools?.length ? tools : undefined;\n\n  const toolWarnings: SharedV3Warning[] = [];\n\n  if (tools == null) {\n    return { tools: undefined, toolChoice: undefined, toolWarnings };\n  }\n\n  const openaiTools: OpenAIChatFunctionTool[] = [];\n\n  for (const tool of tools) {\n    switch (tool.type) {\n      case 'function':\n        openaiTools.push({\n          type: 'function',\n          function: {\n            name: tool.name,\n            description: tool.description,\n            parameters: tool.inputSchema,\n            ...(tool.strict != null ? { strict: tool.strict } : {}),\n          },\n        });\n        break;\n      default:\n        toolWarnings.push({\n          type: 'unsupported',\n          feature: `tool type: ${tool.type}`,\n        });\n        break;\n    }\n  }\n\n  if (toolChoice == null) {\n    return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n  }\n\n  const type = toolChoice.type;\n\n  switch (type) {\n    case 'auto':\n    case 'none':\n    case 'required':\n      return { tools: openaiTools, toolChoice: type, toolWarnings };\n    case 'tool':\n      return {\n        tools: openaiTools,\n        toolChoice: {\n          type: 'function',\n          function: {\n            name: toolChoice.toolName,\n          },\n        },\n        toolWarnings,\n      };\n    default: {\n      const _exhaustiveCheck: never = type;\n      throw new UnsupportedFunctionalityError({\n        functionality: `tool choice type: ${_exhaustiveCheck}`,\n      });\n    }\n  }\n}\n","import type {\n  LanguageModelV3,\n  LanguageModelV3CallOptions,\n  LanguageModelV3FinishReason,\n  LanguageModelV3GenerateResult,\n  LanguageModelV3StreamPart,\n  LanguageModelV3StreamResult,\n  SharedV3ProviderMetadata,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n  type FetchFunction,\n  type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n  convertOpenAICompletionUsage,\n  type OpenAICompletionUsage,\n} from './convert-openai-completion-usage';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n  openaiCompletionChunkSchema,\n  openaiCompletionResponseSchema,\n  type OpenAICompletionChunk,\n} from './openai-completion-api';\nimport {\n  openaiLanguageModelCompletionOptions,\n  type OpenAICompletionModelId,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n  provider: string;\n  headers: () => Record<string, string | undefined>;\n  url: (options: { modelId: string; path: string }) => string;\n  fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  readonly modelId: OpenAICompletionModelId;\n\n  private readonly config: OpenAICompletionConfig;\n\n  private get providerOptionsName(): string {\n    return this.config.provider.split('.')[0].trim();\n  }\n\n  constructor(\n    modelId: OpenAICompletionModelId,\n    config: OpenAICompletionConfig,\n  ) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  readonly supportedUrls: Record<string, RegExp[]> = {\n    // No URLs are supported for completion models.\n  };\n\n  private async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences: userStopSequences,\n    responseFormat,\n    tools,\n    toolChoice,\n    seed,\n    providerOptions,\n  }: LanguageModelV3CallOptions) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openaiOptions = {\n      ...(await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiLanguageModelCompletionOptions,\n      })),\n      ...(await parseProviderOptions({\n        provider: this.providerOptionsName,\n        providerOptions,\n        schema: openaiLanguageModelCompletionOptions,\n      })),\n    };\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported', feature: 'topK' });\n    }\n\n    if (tools?.length) {\n      warnings.push({ type: 'unsupported', feature: 'tools' });\n    }\n\n    if (toolChoice != null) {\n      warnings.push({ type: 'unsupported', feature: 'toolChoice' });\n    }\n\n    if (responseFormat != null && responseFormat.type !== 'text') {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'responseFormat',\n        details: 'JSON response format is not supported.',\n      });\n    }\n\n    const { prompt: completionPrompt, stopSequences } =\n      convertToOpenAICompletionPrompt({ prompt });\n\n    const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n    return {\n      args: {\n        // model id:\n        model: this.modelId,\n\n        // model specific settings:\n        echo: openaiOptions.echo,\n        logit_bias: openaiOptions.logitBias,\n        logprobs:\n          openaiOptions?.logprobs === true\n            ? 0\n            : openaiOptions?.logprobs === false\n              ? undefined\n              : openaiOptions?.logprobs,\n        suffix: openaiOptions.suffix,\n        user: openaiOptions.user,\n\n        // standardized settings:\n        max_tokens: maxOutputTokens,\n        temperature,\n        top_p: topP,\n        frequency_penalty: frequencyPenalty,\n        presence_penalty: presencePenalty,\n        seed,\n\n        // prompt:\n        prompt: completionPrompt,\n\n        // stop sequences:\n        stop: stop.length > 0 ? stop : undefined,\n      },\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: args,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiCompletionResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const choice = response.choices[0];\n\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n\n    if (choice.logprobs != null) {\n      providerMetadata.openai.logprobs = choice.logprobs;\n    }\n\n    return {\n      content: [{ type: 'text', text: choice.text }],\n      usage: convertOpenAICompletionUsage(response.usage),\n      finishReason: {\n        unified: mapOpenAIFinishReason(choice.finish_reason),\n        raw: choice.finish_reason ?? undefined,\n      },\n      request: { body: args },\n      response: {\n        ...getResponseMetadata(response),\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      providerMetadata,\n      warnings,\n    };\n  }\n\n  async doStream(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const body = {\n      ...args,\n      stream: true,\n\n      stream_options: {\n        include_usage: true,\n      },\n    };\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiCompletionChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    let finishReason: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n    let usage: OpenAICompletionUsage | undefined = undefined;\n    let isFirstChunk = true;\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAICompletionChunk>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = { unified: 'error', raw: undefined };\n              controller.enqueue({ type: 'error', error: chunk.error });\n              return;\n            }\n\n            const value = chunk.value;\n\n            // handle error chunks:\n            if ('error' in value) {\n              finishReason = { unified: 'error', raw: undefined };\n              controller.enqueue({ type: 'error', error: value.error });\n              return;\n            }\n\n            if (isFirstChunk) {\n              isFirstChunk = false;\n\n              controller.enqueue({\n                type: 'response-metadata',\n                ...getResponseMetadata(value),\n              });\n\n              controller.enqueue({ type: 'text-start', id: '0' });\n            }\n\n            if (value.usage != null) {\n              usage = value.usage;\n            }\n\n            const choice = value.choices[0];\n\n            if (choice?.finish_reason != null) {\n              finishReason = {\n                unified: mapOpenAIFinishReason(choice.finish_reason),\n                raw: choice.finish_reason,\n              };\n            }\n\n            if (choice?.logprobs != null) {\n              providerMetadata.openai.logprobs = choice.logprobs;\n            }\n\n            if (choice?.text != null && choice.text.length > 0) {\n              controller.enqueue({\n                type: 'text-delta',\n                id: '0',\n                delta: choice.text,\n              });\n            }\n          },\n\n          flush(controller) {\n            if (!isFirstChunk) {\n              controller.enqueue({ type: 'text-end', id: '0' });\n            }\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              providerMetadata,\n              usage: convertOpenAICompletionUsage(usage),\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n","import type { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type OpenAICompletionUsage = {\n  prompt_tokens?: number | null;\n  completion_tokens?: number | null;\n  total_tokens?: number | null;\n};\n\nexport function convertOpenAICompletionUsage(\n  usage: OpenAICompletionUsage | undefined | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const promptTokens = usage.prompt_tokens ?? 0;\n  const completionTokens = usage.completion_tokens ?? 0;\n\n  return {\n    inputTokens: {\n      total: usage.prompt_tokens ?? undefined,\n      noCache: promptTokens,\n      cacheRead: undefined,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: usage.completion_tokens ?? undefined,\n      text: completionTokens,\n      reasoning: undefined,\n    },\n    raw: usage,\n  };\n}\n","import {\n  InvalidPromptError,\n  UnsupportedFunctionalityError,\n  type LanguageModelV3Prompt,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n  prompt,\n  user = 'user',\n  assistant = 'assistant',\n}: {\n  prompt: LanguageModelV3Prompt;\n  user?: string;\n  assistant?: string;\n}): {\n  prompt: string;\n  stopSequences?: string[];\n} {\n  // transform to a chat message format:\n  let text = '';\n\n  // if first message is a system message, add it to the text:\n  if (prompt[0].role === 'system') {\n    text += `${prompt[0].content}\\n\\n`;\n    prompt = prompt.slice(1);\n  }\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        throw new InvalidPromptError({\n          message: 'Unexpected system message in prompt: ${content}',\n          prompt,\n        });\n      }\n\n      case 'user': {\n        const userMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n            }\n          })\n          .filter(Boolean)\n          .join('');\n\n        text += `${user}:\\n${userMessage}\\n\\n`;\n        break;\n      }\n\n      case 'assistant': {\n        const assistantMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n              case 'tool-call': {\n                throw new UnsupportedFunctionalityError({\n                  functionality: 'tool-call messages',\n                });\n              }\n            }\n          })\n          .join('');\n\n        text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n        break;\n      }\n\n      case 'tool': {\n        throw new UnsupportedFunctionalityError({\n          functionality: 'tool messages',\n        });\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  // Assistant message prefix:\n  text += `${assistant}:\\n`;\n\n  return {\n    prompt: text,\n    stopSequences: [`\\n${user}:`],\n  };\n}\n","export function getResponseMetadata({\n  id,\n  model,\n  created,\n}: {\n  id?: string | undefined | null;\n  created?: number | undefined | null;\n  model?: string | undefined | null;\n}) {\n  return {\n    id: id ?? undefined,\n    modelId: model ?? undefined,\n    timestamp: created != null ? new Date(created * 1000) : undefined,\n  };\n}\n","import type { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n  switch (finishReason) {\n    case 'stop':\n      return 'stop';\n    case 'length':\n      return 'length';\n    case 'content_filter':\n      return 'content-filter';\n    case 'function_call':\n    case 'tool_calls':\n      return 'tool-calls';\n    default:\n      return 'other';\n  }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      id: z.string().nullish(),\n      created: z.number().nullish(),\n      model: z.string().nullish(),\n      choices: z.array(\n        z.object({\n          text: z.string(),\n          finish_reason: z.string(),\n          logprobs: z\n            .object({\n              tokens: z.array(z.string()),\n              token_logprobs: z.array(z.number()),\n              top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n            })\n            .nullish(),\n        }),\n      ),\n      usage: z\n        .object({\n          prompt_tokens: z.number(),\n          completion_tokens: z.number(),\n          total_tokens: z.number(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazySchema(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        id: z.string().nullish(),\n        created: z.number().nullish(),\n        model: z.string().nullish(),\n        choices: z.array(\n          z.object({\n            text: z.string(),\n            finish_reason: z.string().nullish(),\n            index: z.number(),\n            logprobs: z\n              .object({\n                tokens: z.array(z.string()),\n                token_logprobs: z.array(z.number()),\n                top_logprobs: z\n                  .array(z.record(z.string(), z.number()))\n                  .nullish(),\n              })\n              .nullish(),\n          }),\n        ),\n        usage: z\n          .object({\n            prompt_tokens: z.number(),\n            completion_tokens: z.number(),\n            total_tokens: z.number(),\n          })\n          .nullish(),\n      }),\n      openaiErrorDataSchema,\n    ]),\n  ),\n);\n\nexport type OpenAICompletionChunk = InferSchema<\n  typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferSchema<\n  typeof openaiCompletionResponseSchema\n>;\n","import {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId =\n  | 'gpt-3.5-turbo-instruct'\n  | 'gpt-3.5-turbo-instruct-0914'\n  | (string & {});\n\nexport const openaiLanguageModelCompletionOptions = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * Echo back the prompt in addition to the completion.\n       */\n      echo: z.boolean().optional(),\n\n      /**\n       * Modify the likelihood of specified tokens appearing in the completion.\n       *\n       * Accepts a JSON object that maps tokens (specified by their token ID in\n       * the GPT tokenizer) to an associated bias value from -100 to 100. You\n       * can use this tokenizer tool to convert text to token IDs. Mathematically,\n       * the bias is added to the logits generated by the model prior to sampling.\n       * The exact effect will vary per model, but values between -1 and 1 should\n       * decrease or increase likelihood of selection; values like -100 or 100\n       * should result in a ban or exclusive selection of the relevant token.\n       *\n       * As an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\n       * token from being generated.\n       */\n      logitBias: z.record(z.string(), z.number()).optional(),\n\n      /**\n       * The suffix that comes after a completion of inserted text.\n       */\n      suffix: z.string().optional(),\n\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse. Learn more.\n       */\n      user: z.string().optional(),\n\n      /**\n       * Return the log probabilities of the tokens. Including logprobs will increase\n       * the response size and can slow down response times. However, it can\n       * be useful to better understand how the model is behaving.\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       */\n      logprobs: z.union([z.boolean(), z.number()]).optional(),\n    }),\n  ),\n);\n\nexport type OpenAILanguageModelCompletionOptions = InferSchema<\n  typeof openaiLanguageModelCompletionOptions\n>;\n","import {\n  TooManyEmbeddingValuesForCallError,\n  type EmbeddingModelV3,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n  openaiEmbeddingModelOptions,\n  type OpenAIEmbeddingModelId,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV3 {\n  readonly specificationVersion = 'v3';\n  readonly modelId: OpenAIEmbeddingModelId;\n  readonly maxEmbeddingsPerCall = 2048;\n  readonly supportsParallelCalls = true;\n\n  private readonly config: OpenAIConfig;\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  async doEmbed({\n    values,\n    headers,\n    abortSignal,\n    providerOptions,\n  }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n  > {\n    if (values.length > this.maxEmbeddingsPerCall) {\n      throw new TooManyEmbeddingValuesForCallError({\n        provider: this.provider,\n        modelId: this.modelId,\n        maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n        values,\n      });\n    }\n\n    // Parse provider options\n    const openaiOptions =\n      (await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiEmbeddingModelOptions,\n      })) ?? {};\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/embeddings',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), headers),\n      body: {\n        model: this.modelId,\n        input: values,\n        encoding_format: 'float',\n        dimensions: openaiOptions.dimensions,\n        user: openaiOptions.user,\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiTextEmbeddingResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      warnings: [],\n      embeddings: response.data.map(item => item.embedding),\n      usage: response.usage\n        ? { tokens: response.usage.prompt_tokens }\n        : undefined,\n      response: { headers: responseHeaders, body: rawValue },\n    };\n  }\n}\n","import {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n  | 'text-embedding-3-small'\n  | 'text-embedding-3-large'\n  | 'text-embedding-ada-002'\n  | (string & {});\n\nexport const openaiEmbeddingModelOptions = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * The number of dimensions the resulting output embeddings should have.\n       * Only supported in text-embedding-3 and later models.\n       */\n      dimensions: z.number().optional(),\n\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse. Learn more.\n       */\n      user: z.string().optional(),\n    }),\n  ),\n);\n\nexport type OpenAIEmbeddingModelOptions = InferSchema<\n  typeof openaiEmbeddingModelOptions\n>;\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      data: z.array(z.object({ embedding: z.array(z.number()) })),\n      usage: z.object({ prompt_tokens: z.number() }).nullish(),\n    }),\n  ),\n);\n","import type {\n  ImageModelV3,\n  ImageModelV3File,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertBase64ToUint8Array,\n  convertToFormData,\n  createJsonResponseHandler,\n  downloadBlob,\n  parseProviderOptions,\n  postFormDataToApi,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n  hasDefaultResponseFormat,\n  modelMaxImagesPerCall,\n  openaiImageModelEditOptions,\n  openaiImageModelGenerationOptions,\n  type OpenAIImageModelEditOptions,\n  type OpenAIImageModelId,\n} from './openai-image-model-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\nexport class OpenAIImageModel implements ImageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get maxImagesPerCall(): number {\n    return modelMaxImagesPerCall[this.modelId] ?? 1;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAIImageModelId,\n    private readonly config: OpenAIImageModelConfig,\n  ) {}\n\n  async doGenerate({\n    prompt,\n    files,\n    mask,\n    n,\n    size,\n    aspectRatio,\n    seed,\n    providerOptions,\n    headers,\n    abortSignal,\n  }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n    Awaited<ReturnType<ImageModelV3['doGenerate']>>\n  > {\n    const warnings: Array<SharedV3Warning> = [];\n\n    if (aspectRatio != null) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'aspectRatio',\n        details:\n          'This model does not support aspect ratio. Use `size` instead.',\n      });\n    }\n\n    if (seed != null) {\n      warnings.push({ type: 'unsupported', feature: 'seed' });\n    }\n\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n    if (files != null) {\n      const openaiOptions =\n        (await parseProviderOptions({\n          provider: 'openai',\n          providerOptions,\n          schema: openaiImageModelEditOptions,\n        })) ?? {};\n\n      const { value: response, responseHeaders } = await postFormDataToApi({\n        url: this.config.url({\n          path: '/images/edits',\n          modelId: this.modelId,\n        }),\n        headers: combineHeaders(this.config.headers(), headers),\n        formData: convertToFormData<OpenAIImageEditInput>({\n          model: this.modelId,\n          prompt,\n          image: await Promise.all(\n            files.map(file =>\n              file.type === 'file'\n                ? new Blob(\n                    [\n                      file.data instanceof Uint8Array\n                        ? new Blob([file.data as BlobPart], {\n                            type: file.mediaType,\n                          })\n                        : new Blob([convertBase64ToUint8Array(file.data)], {\n                            type: file.mediaType,\n                          }),\n                    ],\n                    { type: file.mediaType },\n                  )\n                : downloadBlob(file.url),\n            ),\n          ),\n          mask: mask != null ? await fileToBlob(mask) : undefined,\n          n,\n          size,\n          quality: openaiOptions.quality,\n          background: openaiOptions.background,\n          output_format: openaiOptions.outputFormat,\n          output_compression: openaiOptions.outputCompression,\n          input_fidelity: openaiOptions.inputFidelity,\n          user: openaiOptions.user,\n        }),\n        failedResponseHandler: openaiFailedResponseHandler,\n        successfulResponseHandler: createJsonResponseHandler(\n          openaiImageResponseSchema,\n        ),\n        abortSignal,\n        fetch: this.config.fetch,\n      });\n\n      return {\n        images: response.data.map(item => item.b64_json),\n        warnings,\n        usage:\n          response.usage != null\n            ? {\n                inputTokens: response.usage.input_tokens ?? undefined,\n                outputTokens: response.usage.output_tokens ?? undefined,\n                totalTokens: response.usage.total_tokens ?? undefined,\n              }\n            : undefined,\n        response: {\n          timestamp: currentDate,\n          modelId: this.modelId,\n          headers: responseHeaders,\n        },\n        providerMetadata: {\n          openai: {\n            images: response.data.map((item, index) => ({\n              ...(item.revised_prompt\n                ? { revisedPrompt: item.revised_prompt }\n                : {}),\n              created: response.created ?? undefined,\n              size: response.size ?? undefined,\n              quality: response.quality ?? undefined,\n              background: response.background ?? undefined,\n              outputFormat: response.output_format ?? undefined,\n              ...distributeTokenDetails(\n                response.usage?.input_tokens_details,\n                index,\n                response.data.length,\n              ),\n            })),\n          },\n        },\n      };\n    }\n\n    const openaiOptions =\n      (await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiImageModelGenerationOptions,\n      })) ?? {};\n\n    const { value: response, responseHeaders } = await postJsonToApi({\n      url: this.config.url({\n        path: '/images/generations',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), headers),\n      body: {\n        model: this.modelId,\n        prompt,\n        n,\n        size,\n        quality: openaiOptions.quality,\n        style: openaiOptions.style,\n        background: openaiOptions.background,\n        moderation: openaiOptions.moderation,\n        output_format: openaiOptions.outputFormat,\n        output_compression: openaiOptions.outputCompression,\n        user: openaiOptions.user,\n        ...(!hasDefaultResponseFormat(this.modelId)\n          ? { response_format: 'b64_json' }\n          : {}),\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiImageResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      images: response.data.map(item => item.b64_json),\n      warnings,\n      usage:\n        response.usage != null\n          ? {\n              inputTokens: response.usage.input_tokens ?? undefined,\n              outputTokens: response.usage.output_tokens ?? undefined,\n              totalTokens: response.usage.total_tokens ?? undefined,\n            }\n          : undefined,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n      },\n      providerMetadata: {\n        openai: {\n          images: response.data.map((item, index) => ({\n            ...(item.revised_prompt\n              ? { revisedPrompt: item.revised_prompt }\n              : {}),\n            created: response.created ?? undefined,\n            size: response.size ?? undefined,\n            quality: response.quality ?? undefined,\n            background: response.background ?? undefined,\n            outputFormat: response.output_format ?? undefined,\n            ...distributeTokenDetails(\n              response.usage?.input_tokens_details,\n              index,\n              response.data.length,\n            ),\n          })),\n        },\n      },\n    };\n  }\n}\n\n/**\n * Distributes input token details evenly across images, with the remainder\n * assigned to the last image so that summing across all entries gives the\n * exact total.\n */\nfunction distributeTokenDetails(\n  details:\n    | { image_tokens?: number | null; text_tokens?: number | null }\n    | null\n    | undefined,\n  index: number,\n  total: number,\n): { imageTokens?: number; textTokens?: number } {\n  if (details == null) {\n    return {};\n  }\n\n  const result: { imageTokens?: number; textTokens?: number } = {};\n\n  if (details.image_tokens != null) {\n    const base = Math.floor(details.image_tokens / total);\n    const remainder = details.image_tokens - base * (total - 1);\n    result.imageTokens = index === total - 1 ? remainder : base;\n  }\n\n  if (details.text_tokens != null) {\n    const base = Math.floor(details.text_tokens / total);\n    const remainder = details.text_tokens - base * (total - 1);\n    result.textTokens = index === total - 1 ? remainder : base;\n  }\n\n  return result;\n}\n\ntype OpenAIImageEditInput = {\n  model: OpenAIImageModelId;\n  prompt?: string;\n  image: Blob | Blob[];\n  mask?: Blob;\n  n?: number;\n  size?: `${number}x${number}`;\n  quality?: OpenAIImageModelEditOptions['quality'];\n  background?: OpenAIImageModelEditOptions['background'];\n  output_format?: OpenAIImageModelEditOptions['outputFormat'];\n  output_compression?: OpenAIImageModelEditOptions['outputCompression'];\n  input_fidelity?: OpenAIImageModelEditOptions['inputFidelity'];\n  user?: OpenAIImageModelEditOptions['user'];\n};\n\nasync function fileToBlob(\n  file: ImageModelV3File | undefined,\n): Promise<Blob | undefined> {\n  if (!file) return undefined;\n\n  if (file.type === 'url') {\n    return downloadBlob(file.url);\n  }\n\n  const data =\n    file.data instanceof Uint8Array\n      ? file.data\n      : convertBase64ToUint8Array(file.data);\n\n  return new Blob([data as BlobPart], { type: file.mediaType });\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      created: z.number().nullish(),\n      data: z.array(\n        z.object({\n          b64_json: z.string(),\n          revised_prompt: z.string().nullish(),\n        }),\n      ),\n      background: z.string().nullish(),\n      output_format: z.string().nullish(),\n      size: z.string().nullish(),\n      quality: z.string().nullish(),\n      usage: z\n        .object({\n          input_tokens: z.number().nullish(),\n          output_tokens: z.number().nullish(),\n          total_tokens: z.number().nullish(),\n          input_tokens_details: z\n            .object({\n              image_tokens: z.number().nullish(),\n              text_tokens: z.number().nullish(),\n            })\n            .nullish(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n","import {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIImageModelId =\n  | 'dall-e-3'\n  | 'dall-e-2'\n  | 'gpt-image-1'\n  | 'gpt-image-1-mini'\n  | 'gpt-image-1.5'\n  | 'gpt-image-2'\n  | 'chatgpt-image-latest'\n  | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record<OpenAIImageModelId, number> = {\n  'dall-e-3': 1,\n  'dall-e-2': 10,\n  'gpt-image-1': 10,\n  'gpt-image-1-mini': 10,\n  'gpt-image-1.5': 10,\n  'gpt-image-2': 10,\n  'chatgpt-image-latest': 10,\n};\n\nconst defaultResponseFormatPrefixes = [\n  'chatgpt-image-',\n  'gpt-image-1-mini',\n  'gpt-image-1.5',\n  'gpt-image-1',\n  'gpt-image-2',\n];\n\nexport function hasDefaultResponseFormat(modelId: string): boolean {\n  return defaultResponseFormatPrefixes.some(prefix =>\n    modelId.startsWith(prefix),\n  );\n}\n\nconst baseImageModelOptionsObject = z.object({\n  /**\n   * Quality of the generated image(s).\n   *\n   * Valid values: `standard`, `hd`, `low`, `medium`, `high`, `auto`.\n   */\n  quality: z\n    .enum(['standard', 'hd', 'low', 'medium', 'high', 'auto'])\n    .optional(),\n\n  /**\n   * Background behavior for the generated image(s).\n   *\n   * If `transparent`, the output format must support transparency\n   * (i.e. `png` or `webp`).\n   */\n  background: z.enum(['transparent', 'opaque', 'auto']).optional(),\n\n  /**\n   * Format in which the generated image(s) are returned.\n   */\n  outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n\n  /**\n   * Compression level (0-100) for the generated image(s). Applies to the\n   * `jpeg` and `webp` output formats.\n   */\n  outputCompression: z.number().int().min(0).max(100).optional(),\n\n  /**\n   * A unique identifier representing your end-user, which can help OpenAI\n   * to monitor and detect abuse.\n   */\n  user: z.string().optional(),\n});\n\nexport const openaiImageModelOptions = lazySchema(() =>\n  zodSchema(baseImageModelOptionsObject),\n);\n\nexport type OpenAIImageModelOptions = InferSchema<\n  typeof openaiImageModelOptions\n>;\n\nexport const openaiImageModelGenerationOptions = lazySchema(() =>\n  zodSchema(\n    baseImageModelOptionsObject.extend({\n      /**\n       * Style of the generated image. `vivid` produces hyper-real and\n       * dramatic images; `natural` produces more subdued, less hyper-real\n       * looking images.\n       */\n      style: z.enum(['vivid', 'natural']).optional(),\n\n      /**\n       * Content moderation level for the generated image(s). `low` applies\n       * less restrictive filtering.\n       */\n      moderation: z.enum(['auto', 'low']).optional(),\n    }),\n  ),\n);\n\nexport type OpenAIImageModelGenerationOptions = InferSchema<\n  typeof openaiImageModelGenerationOptions\n>;\n\nexport const openaiImageModelEditOptions = lazySchema(() =>\n  zodSchema(\n    baseImageModelOptionsObject.extend({\n      /**\n       * Fidelity of the output image(s) to the input image(s).\n       */\n      inputFidelity: z.enum(['high', 'low']).optional(),\n    }),\n  ),\n);\n\nexport type OpenAIImageModelEditOptions = InferSchema<\n  typeof openaiImageModelEditOptions\n>;\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for the apply_patch input - what the model sends.\n *\n * Refer the official spec here: https://platform.openai.com/docs/api-reference/responses/create#responses_create-input-input_item_list-item-apply_patch_tool_call\n *\n */\nexport const applyPatchInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      callId: z.string(),\n      operation: z.discriminatedUnion('type', [\n        z.object({\n          type: z.literal('create_file'),\n          path: z.string(),\n          diff: z.string(),\n        }),\n        z.object({\n          type: z.literal('delete_file'),\n          path: z.string(),\n        }),\n        z.object({\n          type: z.literal('update_file'),\n          path: z.string(),\n          diff: z.string(),\n        }),\n      ]),\n    }),\n  ),\n);\n\n/**\n * Schema for the apply_patch output - what we send back.\n */\nexport const applyPatchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      status: z.enum(['completed', 'failed']),\n      output: z.string().optional(),\n    }),\n  ),\n);\n\n/**\n * Schema for tool arguments (configuration options).\n * The apply_patch tool doesn't require any configuration options.\n */\nexport const applyPatchArgsSchema = lazySchema(() => zodSchema(z.object({})));\n\n/**\n * Type definitions for the apply_patch operations.\n */\nexport type ApplyPatchOperation =\n  | {\n      type: 'create_file';\n      /**\n       * Path of the file to create relative to the workspace root.\n       */\n      path: string;\n      /**\n       * Unified diff content to apply when creating the file.\n       */\n      diff: string;\n    }\n  | {\n      type: 'delete_file';\n      /**\n       * Path of the file to delete relative to the workspace root.\n       */\n      path: string;\n    }\n  | {\n      type: 'update_file';\n      /**\n       * Path of the file to update relative to the workspace root.\n       */\n      path: string;\n      /**\n       * Unified diff content to apply to the existing file.\n       */\n      diff: string;\n    };\n\n/**\n * The apply_patch tool lets GPT-5.1 create, update, and delete files in your\n * codebase using structured diffs. Instead of just suggesting edits, the model\n * emits patch operations that your application applies and then reports back on,\n * enabling iterative, multi-step code editing workflows.\n *\n * The tool factory creates a provider-defined tool that:\n * - Receives patch operations from the model (create_file, update_file, delete_file)\n * - Returns the status of applying those patches (completed or failed)\n *\n */\nexport const applyPatchToolFactory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The unique ID of the apply patch tool call generated by the model.\n     */\n    callId: string;\n\n    /**\n     * The specific create, delete, or update instruction for the apply_patch tool call.\n     */\n    operation: ApplyPatchOperation;\n  },\n  {\n    /**\n     * The status of the apply patch tool call output.\n     * - 'completed': The patch was applied successfully.\n     * - 'failed': The patch failed to apply.\n     */\n    status: 'completed' | 'failed';\n\n    /**\n     * Optional human-readable log text from the apply patch tool\n     * (e.g., patch results or errors).\n     */\n    output?: string;\n  },\n  // No configuration options for apply_patch\n  {}\n>({\n  id: 'openai.apply_patch',\n  inputSchema: applyPatchInputSchema,\n  outputSchema: applyPatchOutputSchema,\n});\n\n/**\n * The apply_patch tool lets GPT-5.1 create, update, and delete files in your\n * codebase using structured diffs. Instead of just suggesting edits, the model\n * emits patch operations that your application applies and then reports back on,\n * enabling iterative, multi-step code editing workflows.\n */\nexport const applyPatch = applyPatchToolFactory;\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      code: z.string().nullish(),\n      containerId: z.string(),\n    }),\n  ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      outputs: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({ type: z.literal('logs'), logs: z.string() }),\n            z.object({ type: z.literal('image'), url: z.string() }),\n          ]),\n        )\n        .nullish(),\n    }),\n  ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      container: z\n        .union([\n          z.string(),\n          z.object({\n            fileIds: z.array(z.string()).optional(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\ntype CodeInterpreterArgs = {\n  /**\n   * The code interpreter container.\n   * Can be a container ID\n   * or an object that specifies uploaded file IDs to make available to your code.\n   */\n  container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n  createProviderToolFactoryWithOutputSchema<\n    {\n      /**\n       * The code to run, or null if not available.\n       */\n      code?: string | null;\n\n      /**\n       * The ID of the container used to run the code.\n       */\n      containerId: string;\n    },\n    {\n      /**\n       * The outputs generated by the code interpreter, such as logs or images.\n       * Can be null if no outputs are available.\n       */\n      outputs?: Array<\n        | {\n            type: 'logs';\n\n            /**\n             * The logs output from the code interpreter.\n             */\n            logs: string;\n          }\n        | {\n            type: 'image';\n\n            /**\n             * The URL of the image output from the code interpreter.\n             */\n            url: string;\n          }\n      > | null;\n    },\n    CodeInterpreterArgs\n  >({\n    id: 'openai.code_interpreter',\n    inputSchema: codeInterpreterInputSchema,\n    outputSchema: codeInterpreterOutputSchema,\n  });\n\nexport const codeInterpreter = (\n  args: CodeInterpreterArgs = {}, // default\n) => {\n  return codeInterpreterToolFactory(args);\n};\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const customArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      name: z.string(),\n      description: z.string().optional(),\n      format: z\n        .union([\n          z.object({\n            type: z.literal('grammar'),\n            syntax: z.enum(['regex', 'lark']),\n            definition: z.string(),\n          }),\n          z.object({\n            type: z.literal('text'),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\nconst customInputSchema = lazySchema(() => zodSchema(z.string()));\n\nexport const customToolFactory = createProviderToolFactory<\n  string,\n  {\n    /**\n     * The name of the custom tool, used to identify it in the API.\n     */\n    name: string;\n\n    /**\n     * An optional description of what the tool does.\n     */\n    description?: string;\n\n    /**\n     * The output format specification for the tool.\n     * Omit for unconstrained text output.\n     */\n    format?:\n      | {\n          type: 'grammar';\n          syntax: 'regex' | 'lark';\n          definition: string;\n        }\n      | {\n          type: 'text';\n        };\n  }\n>({\n  id: 'openai.custom',\n  inputSchema: customInputSchema,\n});\n\nexport const customTool = (args: Parameters<typeof customToolFactory>[0]) =>\n  customToolFactory(args);\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type {\n  OpenAIResponsesFileSearchToolComparisonFilter,\n  OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n  key: z.string(),\n  type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin']),\n  value: z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n  type: z.enum(['and', 'or']),\n  filters: z.array(\n    z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n  ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      vectorStoreIds: z.array(z.string()),\n      maxNumResults: z.number().optional(),\n      ranking: z\n        .object({\n          ranker: z.string().optional(),\n          scoreThreshold: z.number().optional(),\n        })\n        .optional(),\n      filters: z\n        .union([comparisonFilterSchema, compoundFilterSchema])\n        .optional(),\n    }),\n  ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      queries: z.array(z.string()),\n      results: z\n        .array(\n          z.object({\n            attributes: z.record(z.string(), z.unknown()),\n            fileId: z.string(),\n            filename: z.string(),\n            score: z.number(),\n            text: z.string(),\n          }),\n        )\n        .nullable(),\n    }),\n  ),\n);\n\nexport const fileSearch = createProviderToolFactoryWithOutputSchema<\n  {},\n  {\n    /**\n     * The search query to execute.\n     */\n    queries: string[];\n\n    /**\n     * The results of the file search tool call.\n     */\n    results:\n      | null\n      | {\n          /**\n           * Set of 16 key-value pairs that can be attached to an object.\n           * This can be useful for storing additional information about the object\n           * in a structured format, and querying for objects via API or the dashboard.\n           * Keys are strings with a maximum length of 64 characters.\n           * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n           */\n          attributes: Record<string, unknown>;\n\n          /**\n           * The unique ID of the file.\n           */\n          fileId: string;\n\n          /**\n           * The name of the file.\n           */\n          filename: string;\n\n          /**\n           * The relevance score of the file - a value between 0 and 1.\n           */\n          score: number;\n\n          /**\n           * The text that was retrieved from the file.\n           */\n          text: string;\n        }[];\n  },\n  {\n    /**\n     * List of vector store IDs to search through.\n     */\n    vectorStoreIds: string[];\n\n    /**\n     * Maximum number of search results to return. Defaults to 10.\n     */\n    maxNumResults?: number;\n\n    /**\n     * Ranking options for the search.\n     */\n    ranking?: {\n      /**\n       * The ranker to use for the file search.\n       */\n      ranker?: string;\n\n      /**\n       * The score threshold for the file search, a number between 0 and 1.\n       * Numbers closer to 1 will attempt to return only the most relevant results,\n       * but may return fewer results.\n       */\n      scoreThreshold?: number;\n    };\n\n    /**\n     * A filter to apply.\n     */\n    filters?:\n      | OpenAIResponsesFileSearchToolComparisonFilter\n      | OpenAIResponsesFileSearchToolCompoundFilter;\n  }\n>({\n  id: 'openai.file_search',\n  inputSchema: z.object({}),\n  outputSchema: fileSearchOutputSchema,\n});\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n  zodSchema(\n    z\n      .object({\n        background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n        inputFidelity: z.enum(['low', 'high']).optional(),\n        inputImageMask: z\n          .object({\n            fileId: z.string().optional(),\n            imageUrl: z.string().optional(),\n          })\n          .optional(),\n        model: z.string().optional(),\n        moderation: z.enum(['auto']).optional(),\n        outputCompression: z.number().int().min(0).max(100).optional(),\n        outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n        partialImages: z.number().int().min(0).max(3).optional(),\n        quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n        size: z\n          .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n          .optional(),\n      })\n      .strict(),\n  ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n  zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n  /**\n   * Background type for the generated image. Default is 'auto'.\n   */\n  background?: 'auto' | 'opaque' | 'transparent';\n\n  /**\n   * Input fidelity for the generated image. Default is 'low'.\n   */\n  inputFidelity?: 'low' | 'high';\n\n  /**\n   * Optional mask for inpainting.\n   * Contains image_url (string, optional) and file_id (string, optional).\n   */\n  inputImageMask?: {\n    /**\n     * File ID for the mask image.\n     */\n    fileId?: string;\n\n    /**\n     * Base64-encoded mask image.\n     */\n    imageUrl?: string;\n  };\n\n  /**\n   * The image generation model to use. Default: gpt-image-1.\n   */\n  model?: string;\n\n  /**\n   * Moderation level for the generated image. Default: auto.\n   */\n  moderation?: 'auto';\n\n  /**\n   * Compression level for the output image. Default: 100.\n   */\n  outputCompression?: number;\n\n  /**\n   * The output format of the generated image. One of png, webp, or jpeg.\n   * Default: png\n   */\n  outputFormat?: 'png' | 'jpeg' | 'webp';\n\n  /**\n   * Number of partial images to generate in streaming mode, from 0 (default value) to 3.\n   */\n  partialImages?: number;\n\n  /**\n   * The quality of the generated image.\n   * One of low, medium, high, or auto. Default: auto.\n   */\n  quality?: 'auto' | 'low' | 'medium' | 'high';\n\n  /**\n   * The size of the generated image.\n   * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n   * Default: auto.\n   */\n  size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory = createProviderToolFactoryWithOutputSchema<\n  {},\n  {\n    /**\n     * The generated image encoded in base64.\n     */\n    result: string;\n  },\n  ImageGenerationArgs\n>({\n  id: 'openai.image_generation',\n  inputSchema: imageGenerationInputSchema,\n  outputSchema: imageGenerationOutputSchema,\n});\n\nexport const imageGeneration = (\n  args: ImageGenerationArgs = {}, // default\n) => {\n  return imageGenerationToolFactory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z.object({\n        type: z.literal('exec'),\n        command: z.array(z.string()),\n        timeoutMs: z.number().optional(),\n        user: z.string().optional(),\n        workingDirectory: z.string().optional(),\n        env: z.record(z.string(), z.string()).optional(),\n      }),\n    }),\n  ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n  zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * Execute a shell command on the server.\n     */\n    action: {\n      type: 'exec';\n\n      /**\n       * The command to run.\n       */\n      command: string[];\n\n      /**\n       * Optional timeout in milliseconds for the command.\n       */\n      timeoutMs?: number;\n\n      /**\n       * Optional user to run the command as.\n       */\n      user?: string;\n\n      /**\n       * Optional working directory to run the command in.\n       */\n      workingDirectory?: string;\n\n      /**\n       * Environment variables to set for the command.\n       */\n      env?: Record<string, string>;\n    };\n  },\n  {\n    /**\n     * The output of local shell tool call.\n     */\n    output: string;\n  },\n  {}\n>({\n  id: 'openai.local_shell',\n  inputSchema: localShellInputSchema,\n  outputSchema: localShellOutputSchema,\n});\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const shellInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z.object({\n        commands: z.array(z.string()),\n        timeoutMs: z.number().optional(),\n        maxOutputLength: z.number().optional(),\n      }),\n    }),\n  ),\n);\n\nexport const shellOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      output: z.array(\n        z.object({\n          stdout: z.string(),\n          stderr: z.string(),\n          outcome: z.discriminatedUnion('type', [\n            z.object({ type: z.literal('timeout') }),\n            z.object({ type: z.literal('exit'), exitCode: z.number() }),\n          ]),\n        }),\n      ),\n    }),\n  ),\n);\n\nconst shellSkillsSchema = z\n  .array(\n    z.discriminatedUnion('type', [\n      z.object({\n        type: z.literal('skillReference'),\n        skillId: z.string(),\n        version: z.string().optional(),\n      }),\n      z.object({\n        type: z.literal('inline'),\n        name: z.string(),\n        description: z.string(),\n        source: z.object({\n          type: z.literal('base64'),\n          mediaType: z.literal('application/zip'),\n          data: z.string(),\n        }),\n      }),\n    ]),\n  )\n  .optional();\n\nexport const shellArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      environment: z\n        .union([\n          z.object({\n            type: z.literal('containerAuto'),\n            fileIds: z.array(z.string()).optional(),\n            memoryLimit: z.enum(['1g', '4g', '16g', '64g']).optional(),\n            networkPolicy: z\n              .discriminatedUnion('type', [\n                z.object({ type: z.literal('disabled') }),\n                z.object({\n                  type: z.literal('allowlist'),\n                  allowedDomains: z.array(z.string()),\n                  domainSecrets: z\n                    .array(\n                      z.object({\n                        domain: z.string(),\n                        name: z.string(),\n                        value: z.string(),\n                      }),\n                    )\n                    .optional(),\n                }),\n              ])\n              .optional(),\n            skills: shellSkillsSchema,\n          }),\n          z.object({\n            type: z.literal('containerReference'),\n            containerId: z.string(),\n          }),\n          z.object({\n            type: z.literal('local').optional(),\n            skills: z\n              .array(\n                z.object({\n                  name: z.string(),\n                  description: z.string(),\n                  path: z.string(),\n                }),\n              )\n              .optional(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\ntype ShellArgs = {\n  environment?:\n    | {\n        type: 'containerAuto';\n        fileIds?: string[];\n        memoryLimit?: '1g' | '4g' | '16g' | '64g';\n        networkPolicy?:\n          | { type: 'disabled' }\n          | {\n              type: 'allowlist';\n              allowedDomains: string[];\n              domainSecrets?: Array<{\n                domain: string;\n                name: string;\n                value: string;\n              }>;\n            };\n        skills?: Array<\n          | { type: 'skillReference'; skillId: string; version?: string }\n          | {\n              type: 'inline';\n              name: string;\n              description: string;\n              source: {\n                type: 'base64';\n                mediaType: 'application/zip';\n                data: string;\n              };\n            }\n        >;\n      }\n    | {\n        type: 'containerReference';\n        containerId: string;\n      }\n    | {\n        type?: 'local';\n        skills?: Array<{\n          name: string;\n          description: string;\n          path: string;\n        }>;\n      };\n};\n\nexport const shell = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * Shell tool action containing commands to execute.\n     */\n    action: {\n      /**\n       * A list of shell commands to execute.\n       */\n      commands: string[];\n\n      /**\n       * Optional timeout in milliseconds for the commands.\n       */\n      timeoutMs?: number;\n\n      /**\n       * Optional maximum number of characters to return from each command.\n       */\n      maxOutputLength?: number;\n    };\n  },\n  {\n    /**\n     * An array of shell call output contents.\n     */\n    output: Array<{\n      /**\n       * Standard output from the command.\n       */\n      stdout: string;\n\n      /**\n       * Standard error from the command.\n       */\n      stderr: string;\n\n      /**\n       * The outcome of the shell execution - either timeout or exit with code.\n       */\n      outcome: { type: 'timeout' } | { type: 'exit'; exitCode: number };\n    }>;\n  },\n  ShellArgs\n>({\n  id: 'openai.shell',\n  inputSchema: shellInputSchema,\n  outputSchema: shellOutputSchema,\n});\n","import type { JSONObject } from '@ai-sdk/provider';\nimport {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n  type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const toolSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      execution: z.enum(['server', 'client']).optional(),\n      description: z.string().optional(),\n      parameters: z.record(z.string(), z.unknown()).optional(),\n    }),\n  ),\n);\n\nexport const toolSearchInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      arguments: z.unknown().optional(),\n      call_id: z.string().nullish(),\n    }),\n  ),\n);\n\nexport const toolSearchOutputSchema: FlexibleSchema<{\n  tools: Array<JSONObject>;\n}> = lazySchema(() =>\n  zodSchema(\n    z.object({\n      tools: z.array(z.record(z.string(), z.unknown())),\n    }),\n  ),\n) as FlexibleSchema<{ tools: Array<JSONObject> }>;\n\nconst toolSearchToolFactory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The arguments from the tool_search_call.\n     * This is preserved for multi-turn conversation reconstruction.\n     */\n    arguments?: unknown;\n\n    /**\n     * The call ID from the tool_search_call.\n     * Present for client-executed tool search; null for hosted.\n     */\n    call_id?: string | null;\n  },\n  {\n    /**\n     * The tools that were loaded by the tool search.\n     * These are the deferred tools that the model requested to load.\n     * Each tool is represented as a JSON object with properties depending on its type.\n     *\n     * Common properties include:\n     * - `type`: The type of the tool (e.g., 'function', 'web_search', etc.)\n     * - `name`: The name of the tool (for function tools)\n     * - `description`: A description of the tool\n     * - `deferLoading`: Whether this tool was deferred (had defer_loading: true)\n     * - `parameters`: The JSON Schema for the function parameters (for function tools)\n     * - `strict`: Whether to enable strict schema adherence (for function tools)\n     */\n    tools: Array<JSONObject>;\n  },\n  {\n    /**\n     * Whether the tool search is executed by the server (hosted) or client.\n     * - `'server'` (default): OpenAI performs the search across deferred tools.\n     * - `'client'`: The model emits a `tool_search_call` and your `execute`\n     *   function performs the lookup, returning the tools to load.\n     */\n    execution?: 'server' | 'client';\n\n    /**\n     * A description of the tool search capability.\n     * Only used for client-executed tool search.\n     */\n    description?: string;\n\n    /**\n     * JSON Schema for the search arguments your application expects.\n     * Only used for client-executed tool search.\n     */\n    parameters?: Record<string, unknown>;\n  }\n>({\n  id: 'openai.tool_search',\n  inputSchema: toolSearchInputSchema,\n  outputSchema: toolSearchOutputSchema,\n});\n\nexport const toolSearch = (\n  args: Parameters<typeof toolSearchToolFactory>[0] = {},\n) => toolSearchToolFactory(args);\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      externalWebAccess: z.boolean().optional(),\n      filters: z\n        .object({ allowedDomains: z.array(z.string()).optional() })\n        .optional(),\n      searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n      userLocation: z\n        .object({\n          type: z.literal('approximate'),\n          country: z.string().optional(),\n          city: z.string().optional(),\n          region: z.string().optional(),\n          timezone: z.string().optional(),\n        })\n        .optional(),\n    }),\n  ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z\n        .discriminatedUnion('type', [\n          z.object({\n            type: z.literal('search'),\n            query: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('openPage'),\n            url: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('findInPage'),\n            url: z.string().nullish(),\n            pattern: z.string().nullish(),\n          }),\n        ])\n        .optional(),\n      sources: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({ type: z.literal('url'), url: z.string() }),\n            z.object({ type: z.literal('api'), name: z.string() }),\n          ]),\n        )\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchToolFactory = createProviderToolFactoryWithOutputSchema<\n  {\n    // Web search doesn't take input parameters - it's controlled by the prompt\n  },\n  {\n    /**\n     * An object describing the specific action taken in this web search call.\n     * Includes details on how the model used the web (search, open_page, find_in_page).\n     */\n    action?:\n      | {\n          /**\n           * Action type \"search\" - Performs a web search query.\n           */\n          type: 'search';\n\n          /**\n           * The search query.\n           */\n          query?: string;\n        }\n      | {\n          /**\n           * Action type \"openPage\" - Opens a specific URL from search results.\n           */\n          type: 'openPage';\n\n          /**\n           * The URL opened by the model.\n           */\n          url?: string | null;\n        }\n      | {\n          /**\n           * Action type \"findInPage\": Searches for a pattern within a loaded page.\n           */\n          type: 'findInPage';\n\n          /**\n           * The URL of the page searched for the pattern.\n           */\n          url?: string | null;\n\n          /**\n           * The pattern or text to search for within the page.\n           */\n          pattern?: string | null;\n        };\n\n    /**\n     * Optional sources cited by the model for the web search call.\n     */\n    sources?: Array<\n      { type: 'url'; url: string } | { type: 'api'; name: string }\n    >;\n  },\n  {\n    /**\n     * Whether to use external web access for fetching live content.\n     * - true: Fetch live web content (default)\n     * - false: Use cached/indexed results\n     */\n    externalWebAccess?: boolean;\n\n    /**\n     * Filters for the search.\n     */\n    filters?: {\n      /**\n       * Allowed domains for the search.\n       * If not provided, all domains are allowed.\n       * Subdomains of the provided domains are allowed as well.\n       */\n      allowedDomains?: string[];\n    };\n\n    /**\n     * Search context size to use for the web search.\n     * - high: Most comprehensive context, highest cost, slower response\n     * - medium: Balanced context, cost, and latency (default)\n     * - low: Least context, lowest cost, fastest response\n     */\n    searchContextSize?: 'low' | 'medium' | 'high';\n\n    /**\n     * User location information to provide geographically relevant search results.\n     */\n    userLocation?: {\n      /**\n       * Type of location (always 'approximate')\n       */\n      type: 'approximate';\n      /**\n       * Two-letter ISO country code (e.g., 'US', 'GB')\n       */\n      country?: string;\n      /**\n       * City name (free text, e.g., 'Minneapolis')\n       */\n      city?: string;\n      /**\n       * Region name (free text, e.g., 'Minnesota')\n       */\n      region?: string;\n      /**\n       * IANA timezone (e.g., 'America/Chicago')\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'openai.web_search',\n  inputSchema: webSearchInputSchema,\n  outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n  args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n      userLocation: z\n        .object({\n          type: z.literal('approximate'),\n          country: z.string().optional(),\n          city: z.string().optional(),\n          region: z.string().optional(),\n          timezone: z.string().optional(),\n        })\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n  zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z\n        .discriminatedUnion('type', [\n          z.object({\n            type: z.literal('search'),\n            query: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('openPage'),\n            url: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('findInPage'),\n            url: z.string().nullish(),\n            pattern: z.string().nullish(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchPreview = createProviderToolFactoryWithOutputSchema<\n  {\n    // Web search preview doesn't take input parameters - it's controlled by the prompt\n  },\n  {\n    /**\n     * An object describing the specific action taken in this web search call.\n     * Includes details on how the model used the web (search, open_page, find_in_page).\n     */\n    action?:\n      | {\n          /**\n           * Action type \"search\" - Performs a web search query.\n           */\n          type: 'search';\n\n          /**\n           * The search query.\n           */\n          query?: string;\n        }\n      | {\n          /**\n           * Action type \"openPage\" - Opens a specific URL from search results.\n           */\n          type: 'openPage';\n\n          /**\n           * The URL opened by the model.\n           */\n          url?: string | null;\n        }\n      | {\n          /**\n           * Action type \"findInPage\": Searches for a pattern within a loaded page.\n           */\n          type: 'findInPage';\n\n          /**\n           * The URL of the page searched for the pattern.\n           */\n          url?: string | null;\n\n          /**\n           * The pattern or text to search for within the page.\n           */\n          pattern?: string | null;\n        };\n  },\n  {\n    /**\n     * Search context size to use for the web search.\n     * - high: Most comprehensive context, highest cost, slower response\n     * - medium: Balanced context, cost, and latency (default)\n     * - low: Least context, lowest cost, fastest response\n     */\n    searchContextSize?: 'low' | 'medium' | 'high';\n\n    /**\n     * User location information to provide geographically relevant search results.\n     */\n    userLocation?: {\n      /**\n       * Type of location (always 'approximate')\n       */\n      type: 'approximate';\n      /**\n       * Two-letter ISO country code (e.g., 'US', 'GB')\n       */\n      country?: string;\n      /**\n       * City name (free text, e.g., 'Minneapolis')\n       */\n      city?: string;\n      /**\n       * Region name (free text, e.g., 'Minnesota')\n       */\n      region?: string;\n      /**\n       * IANA timezone (e.g., 'America/Chicago')\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'openai.web_search_preview',\n  inputSchema: webSearchPreviewInputSchema,\n  outputSchema: webSearchPreviewOutputSchema,\n});\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport type { JSONValue } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nconst jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>\n  z.union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.null(),\n    z.array(jsonValueSchema),\n    z.record(z.string(), jsonValueSchema),\n  ]),\n);\n\nexport const mcpArgsSchema = lazySchema(() =>\n  zodSchema(\n    z\n      .object({\n        serverLabel: z.string(),\n        allowedTools: z\n          .union([\n            z.array(z.string()),\n            z.object({\n              readOnly: z.boolean().optional(),\n              toolNames: z.array(z.string()).optional(),\n            }),\n          ])\n          .optional(),\n        authorization: z.string().optional(),\n        connectorId: z.string().optional(),\n        headers: z.record(z.string(), z.string()).optional(),\n\n        requireApproval: z\n          .union([\n            z.enum(['always', 'never']),\n            z.object({\n              never: z\n                .object({\n                  toolNames: z.array(z.string()).optional(),\n                })\n                .optional(),\n            }),\n          ])\n          .optional(),\n        serverDescription: z.string().optional(),\n        serverUrl: z.string().optional(),\n      })\n      .refine(\n        v => v.serverUrl != null || v.connectorId != null,\n        'One of serverUrl or connectorId must be provided.',\n      ),\n  ),\n);\n\nconst mcpInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const mcpOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      type: z.literal('call'),\n      serverLabel: z.string(),\n      name: z.string(),\n      arguments: z.string(),\n      output: z.string().nullish(),\n      error: z.union([z.string(), jsonValueSchema]).optional(),\n    }),\n  ),\n);\n\ntype McpArgs = {\n  /** A label for this MCP server, used to identify it in tool calls. */\n  serverLabel: string;\n  /** List of allowed tool names or a filter object. */\n  allowedTools?:\n    | string[]\n    | {\n        readOnly?: boolean;\n        toolNames?: string[];\n      };\n  /** OAuth access token usable with the remote MCP server or connector. */\n  authorization?: string;\n  /** Identifier for a service connector. */\n  connectorId?: string;\n  /** Optional HTTP headers to send to the MCP server. */\n  headers?: Record<string, string>;\n  /**\n   * Which tools require approval before execution.\n   */\n  requireApproval?:\n    | 'always'\n    | 'never'\n    | {\n        never?: {\n          toolNames?: string[];\n        };\n      };\n  /** Optional description of the MCP server. */\n  serverDescription?: string;\n  /** URL for the MCP server. One of serverUrl or connectorId must be provided. */\n  serverUrl?: string;\n};\n\nexport const mcpToolFactory = createProviderToolFactoryWithOutputSchema<\n  {},\n  {\n    type: 'call';\n    serverLabel: string;\n    name: string;\n    arguments: string;\n    output?: string | null;\n    error?: JSONValue;\n  },\n  McpArgs\n>({\n  id: 'openai.mcp',\n  inputSchema: mcpInputSchema,\n  outputSchema: mcpOutputSchema,\n});\n\nexport const mcp = (args: McpArgs) => mcpToolFactory(args);\n","import { applyPatch } from './tool/apply-patch';\nimport { codeInterpreter } from './tool/code-interpreter';\nimport { customTool } from './tool/custom';\nimport { fileSearch } from './tool/file-search';\nimport { imageGeneration } from './tool/image-generation';\nimport { localShell } from './tool/local-shell';\nimport { shell } from './tool/shell';\nimport { toolSearch } from './tool/tool-search';\nimport { webSearch } from './tool/web-search';\nimport { webSearchPreview } from './tool/web-search-preview';\nimport { mcp } from './tool/mcp';\n\nexport const openaiTools = {\n  /**\n   * The apply_patch tool lets GPT-5.1 create, update, and delete files in your\n   * codebase using structured diffs. Instead of just suggesting edits, the model\n   * emits patch operations that your application applies and then reports back on,\n   * enabling iterative, multi-step code editing workflows.\n   *\n   */\n  applyPatch,\n\n  /**\n   * Custom tools let callers constrain model output to a grammar (regex or\n   * Lark syntax). The model returns a `custom_tool_call` output item whose\n   * `input` field is a string matching the specified grammar.\n   *\n   * @param name - The name of the custom tool.\n   * @param description - An optional description of the tool.\n   * @param format - The output format constraint (grammar type, syntax, and definition).\n   */\n  customTool,\n\n  /**\n   * The Code Interpreter tool allows models to write and run Python code in a\n   * sandboxed environment to solve complex problems in domains like data analysis,\n   * coding, and math.\n   *\n   * @param container - The container to use for the code interpreter.\n   */\n  codeInterpreter,\n\n  /**\n   * File search is a tool available in the Responses API. It enables models to\n   * retrieve information in a knowledge base of previously uploaded files through\n   * semantic and keyword search.\n   *\n   * @param vectorStoreIds - The vector store IDs to use for the file search.\n   * @param maxNumResults - The maximum number of results to return.\n   * @param ranking - The ranking options to use for the file search.\n   * @param filters - The filters to use for the file search.\n   */\n  fileSearch,\n\n  /**\n   * The image generation tool allows you to generate images using a text prompt,\n   * and optionally image inputs. It leverages the GPT Image model,\n   * and automatically optimizes text inputs for improved performance.\n   *\n   * @param background - Background type for the generated image. One of 'auto', 'opaque', or 'transparent'.\n   * @param inputFidelity - Input fidelity for the generated image. One of 'low' or 'high'.\n   * @param inputImageMask - Optional mask for inpainting. Contains fileId and/or imageUrl.\n   * @param model - The image generation model to use. Default: gpt-image-1.\n   * @param moderation - Moderation level for the generated image. Default: 'auto'.\n   * @param outputCompression - Compression level for the output image (0-100).\n   * @param outputFormat - The output format of the generated image. One of 'png', 'jpeg', or 'webp'.\n   * @param partialImages - Number of partial images to generate in streaming mode (0-3).\n   * @param quality - The quality of the generated image. One of 'auto', 'low', 'medium', or 'high'.\n   * @param size - The size of the generated image. One of 'auto', '1024x1024', '1024x1536', or '1536x1024'.\n   */\n  imageGeneration,\n\n  /**\n   * Local shell is a tool that allows agents to run shell commands locally\n   * on a machine you or the user provides.\n   *\n   * Supported models: `gpt-5-codex`\n   */\n  localShell,\n\n  /**\n   * The shell tool allows the model to interact with your local computer through\n   * a controlled command-line interface. The model proposes shell commands; your\n   * integration executes them and returns the outputs.\n   *\n   * Available through the Responses API for use with GPT-5.1.\n   *\n   * WARNING: Running arbitrary shell commands can be dangerous. Always sandbox\n   * execution or add strict allow-/deny-lists before forwarding a command to\n   * the system shell.\n   */\n  shell,\n\n  /**\n   * Web search allows models to access up-to-date information from the internet\n   * and provide answers with sourced citations.\n   *\n   * @param searchContextSize - The search context size to use for the web search.\n   * @param userLocation - The user location to use for the web search.\n   */\n  webSearchPreview,\n\n  /**\n   * Web search allows models to access up-to-date information from the internet\n   * and provide answers with sourced citations.\n   *\n   * @param filters - The filters to use for the web search.\n   * @param searchContextSize - The search context size to use for the web search.\n   * @param userLocation - The user location to use for the web search.\n   */\n  webSearch,\n\n  /**\n   * MCP (Model Context Protocol) allows models to call tools exposed by\n   * remote MCP servers or service connectors.\n   *\n   * @param serverLabel - Label to identify the MCP server.\n   * @param allowedTools - Allowed tool names or filter object.\n   * @param authorization - OAuth access token for the MCP server/connector.\n   * @param connectorId - Identifier for a service connector.\n   * @param headers - Optional headers to include in MCP requests.\n   * // param requireApproval - Approval policy ('always'|'never'|filter object). (Removed - always 'never')\n   * @param serverDescription - Optional description of the server.\n   * @param serverUrl - URL for the MCP server.\n   */\n  mcp,\n\n  /**\n   * Tool search allows the model to dynamically search for and load deferred\n   * tools into the model's context as needed. This helps reduce overall token\n   * usage, cost, and latency by only loading tools when the model needs them.\n   *\n   * To use tool search, mark functions or namespaces with `defer_loading: true`\n   * in the tools array. The model will use tool search to load these tools\n   * when it determines they are needed.\n   */\n  toolSearch,\n};\n","import {\n  APICallError,\n  type JSONValue,\n  type LanguageModelV3,\n  type LanguageModelV3Prompt,\n  type LanguageModelV3CallOptions,\n  type LanguageModelV3Content,\n  type LanguageModelV3FinishReason,\n  type LanguageModelV3GenerateResult,\n  type LanguageModelV3ProviderTool,\n  type LanguageModelV3StreamPart,\n  type LanguageModelV3StreamResult,\n  type LanguageModelV3ToolApprovalRequest,\n  type SharedV3ProviderMetadata,\n  type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  createToolNameMapping,\n  generateId,\n  parseProviderOptions,\n  postJsonToApi,\n  type InferSchema,\n  type ParseResult,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\nimport type { applyPatchInputSchema } from '../tool/apply-patch';\nimport type {\n  codeInterpreterInputSchema,\n  codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport type { fileSearchOutputSchema } from '../tool/file-search';\nimport type { imageGenerationOutputSchema } from '../tool/image-generation';\nimport type { localShellInputSchema } from '../tool/local-shell';\nimport type { mcpOutputSchema } from '../tool/mcp';\nimport type { shellInputSchema, shellOutputSchema } from '../tool/shell';\nimport type {\n  toolSearchInputSchema,\n  toolSearchOutputSchema,\n} from '../tool/tool-search';\nimport type { webSearchOutputSchema } from '../tool/web-search';\nimport {\n  convertOpenAIResponsesUsage,\n  type OpenAIResponsesUsage,\n} from './convert-openai-responses-usage';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n  openaiResponsesChunkSchema,\n  openaiResponsesResponseSchema,\n  type OpenAIResponsesChunk,\n  type OpenAIResponsesIncludeOptions,\n  type OpenAIResponsesIncludeValue,\n  type OpenAIResponsesLogprobs,\n  type OpenAIResponsesWebSearchAction,\n  type OpenAIResponsesApplyPatchOperationDiffDeltaChunk,\n  type OpenAIResponsesApplyPatchOperationDiffDoneChunk,\n} from './openai-responses-api';\nimport {\n  openaiLanguageModelResponsesOptionsSchema,\n  TOP_LOGPROBS_MAX,\n  type OpenAIResponsesModelId,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport type {\n  ResponsesProviderMetadata,\n  ResponsesReasoningProviderMetadata,\n  ResponsesSourceDocumentProviderMetadata,\n  ResponsesTextProviderMetadata,\n} from './openai-responses-provider-metadata';\n\n/**\n * Extracts a mapping from MCP approval request IDs to their corresponding tool call IDs\n * from the prompt. When an MCP tool requires approval, we generate a tool call ID to track\n * the pending approval in our system. When the user responds to the approval (and we\n * continue the conversation), we need to map the approval request ID back to our tool call ID\n * so that tool results reference the correct tool call.\n */\nfunction extractApprovalRequestIdToToolCallIdMapping(\n  prompt: LanguageModelV3Prompt,\n): Record<string, string> {\n  const mapping: Record<string, string> = {};\n  for (const message of prompt) {\n    if (message.role !== 'assistant') continue;\n    for (const part of message.content) {\n      if (part.type !== 'tool-call') continue;\n      const approvalRequestId = part.providerOptions?.openai\n        ?.approvalRequestId as string | undefined;\n      if (approvalRequestId != null) {\n        mapping[approvalRequestId] = part.toolCallId;\n      }\n    }\n  }\n  return mapping;\n}\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  readonly modelId: OpenAIResponsesModelId;\n\n  private readonly config: OpenAIConfig;\n\n  constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  readonly supportedUrls: Record<string, RegExp[]> = {\n    'image/*': [/^https?:\\/\\/.*$/],\n    'application/pdf': [/^https?:\\/\\/.*$/],\n  };\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  private async getArgs({\n    maxOutputTokens,\n    temperature,\n    stopSequences,\n    topP,\n    topK,\n    presencePenalty,\n    frequencyPenalty,\n    seed,\n    prompt,\n    providerOptions,\n    tools,\n    toolChoice,\n    responseFormat,\n  }: LanguageModelV3CallOptions) {\n    const warnings: SharedV3Warning[] = [];\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported', feature: 'topK' });\n    }\n\n    if (seed != null) {\n      warnings.push({ type: 'unsupported', feature: 'seed' });\n    }\n\n    if (presencePenalty != null) {\n      warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n    }\n\n    if (frequencyPenalty != null) {\n      warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n    }\n\n    if (stopSequences != null) {\n      warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n    }\n\n    const providerOptionsName = this.config.provider.includes('azure')\n      ? 'azure'\n      : 'openai';\n    let openaiOptions = await parseProviderOptions({\n      provider: providerOptionsName,\n      providerOptions,\n      schema: openaiLanguageModelResponsesOptionsSchema,\n    });\n\n    if (openaiOptions == null && providerOptionsName !== 'openai') {\n      openaiOptions = await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiLanguageModelResponsesOptionsSchema,\n      });\n    }\n\n    const isReasoningModel =\n      openaiOptions?.forceReasoning ?? modelCapabilities.isReasoningModel;\n\n    if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'conversation',\n        details: 'conversation and previousResponseId cannot be used together',\n      });\n    }\n\n    const toolNameMapping = createToolNameMapping({\n      tools,\n      providerToolNames: {\n        'openai.code_interpreter': 'code_interpreter',\n        'openai.file_search': 'file_search',\n        'openai.image_generation': 'image_generation',\n        'openai.local_shell': 'local_shell',\n        'openai.shell': 'shell',\n        'openai.web_search': 'web_search',\n        'openai.web_search_preview': 'web_search_preview',\n        'openai.mcp': 'mcp',\n        'openai.apply_patch': 'apply_patch',\n        'openai.tool_search': 'tool_search',\n      },\n      resolveProviderToolName: tool =>\n        tool.id === 'openai.custom'\n          ? (tool.args as { name?: string }).name\n          : undefined,\n    });\n\n    const customProviderToolNames = new Set<string>();\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings,\n    } = await prepareResponsesTools({\n      tools,\n      toolChoice,\n      allowedTools: openaiOptions?.allowedTools ?? undefined,\n      toolNameMapping,\n      customProviderToolNames,\n    });\n\n    const { input, warnings: inputWarnings } =\n      await convertToOpenAIResponsesInput({\n        prompt,\n        toolNameMapping,\n        systemMessageMode:\n          openaiOptions?.systemMessageMode ??\n          (isReasoningModel\n            ? 'developer'\n            : modelCapabilities.systemMessageMode),\n        providerOptionsName,\n        fileIdPrefixes: this.config.fileIdPrefixes,\n        store: openaiOptions?.store ?? true,\n        hasConversation: openaiOptions?.conversation != null,\n        hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n        hasShellTool: hasOpenAITool('openai.shell'),\n        hasApplyPatchTool: hasOpenAITool('openai.apply_patch'),\n        customProviderToolNames:\n          customProviderToolNames.size > 0\n            ? customProviderToolNames\n            : undefined,\n      });\n\n    warnings.push(...inputWarnings);\n\n    const strictJsonSchema = openaiOptions?.strictJsonSchema ?? true;\n\n    let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n    function addInclude(key: OpenAIResponsesIncludeValue) {\n      if (include == null) {\n        include = [key];\n      } else if (!include.includes(key)) {\n        include = [...include, key];\n      }\n    }\n\n    function hasOpenAITool(id: string) {\n      return (\n        tools?.find(tool => tool.type === 'provider' && tool.id === id) != null\n      );\n    }\n\n    // when logprobs are requested, automatically include them:\n    const topLogprobs =\n      typeof openaiOptions?.logprobs === 'number'\n        ? openaiOptions?.logprobs\n        : openaiOptions?.logprobs === true\n          ? TOP_LOGPROBS_MAX\n          : undefined;\n\n    if (topLogprobs) {\n      addInclude('message.output_text.logprobs');\n    }\n\n    // when a web search tool is present, automatically include the sources:\n    const webSearchToolName = (\n      tools?.find(\n        tool =>\n          tool.type === 'provider' &&\n          (tool.id === 'openai.web_search' ||\n            tool.id === 'openai.web_search_preview'),\n      ) as LanguageModelV3ProviderTool | undefined\n    )?.name;\n\n    if (webSearchToolName) {\n      addInclude('web_search_call.action.sources');\n    }\n\n    // when a code interpreter tool is present, automatically include the outputs:\n    if (hasOpenAITool('openai.code_interpreter')) {\n      addInclude('code_interpreter_call.outputs');\n    }\n\n    const store = openaiOptions?.store;\n\n    // store defaults to true in the OpenAI responses API, so check for false exactly:\n    if (store === false && isReasoningModel) {\n      addInclude('reasoning.encrypted_content');\n    }\n\n    const baseArgs = {\n      model: this.modelId,\n      input,\n      temperature,\n      top_p: topP,\n      max_output_tokens: maxOutputTokens,\n\n      ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n        text: {\n          ...(responseFormat?.type === 'json' && {\n            format:\n              responseFormat.schema != null\n                ? {\n                    type: 'json_schema',\n                    strict: strictJsonSchema,\n                    name: responseFormat.name ?? 'response',\n                    description: responseFormat.description,\n                    schema: responseFormat.schema,\n                  }\n                : { type: 'json_object' },\n          }),\n          ...(openaiOptions?.textVerbosity && {\n            verbosity: openaiOptions.textVerbosity,\n          }),\n        },\n      }),\n\n      // provider options:\n      conversation: openaiOptions?.conversation,\n      max_tool_calls: openaiOptions?.maxToolCalls,\n      metadata: openaiOptions?.metadata,\n      parallel_tool_calls: openaiOptions?.parallelToolCalls,\n      previous_response_id: openaiOptions?.previousResponseId,\n      store,\n      user: openaiOptions?.user,\n      instructions: openaiOptions?.instructions,\n      service_tier: openaiOptions?.serviceTier,\n      include,\n      prompt_cache_key: openaiOptions?.promptCacheKey,\n      prompt_cache_retention: openaiOptions?.promptCacheRetention,\n      safety_identifier: openaiOptions?.safetyIdentifier,\n      top_logprobs: topLogprobs,\n      truncation: openaiOptions?.truncation,\n\n      // model-specific settings:\n      ...(isReasoningModel &&\n        (openaiOptions?.reasoningEffort != null ||\n          openaiOptions?.reasoningSummary != null) && {\n          reasoning: {\n            ...(openaiOptions?.reasoningEffort != null && {\n              effort: openaiOptions.reasoningEffort,\n            }),\n            ...(openaiOptions?.reasoningSummary != null && {\n              summary: openaiOptions.reasoningSummary,\n            }),\n          },\n        }),\n    };\n\n    // remove unsupported settings for reasoning models\n    // see https://platform.openai.com/docs/guides/reasoning#limitations\n    if (isReasoningModel) {\n      // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n      //  https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n      if (\n        !(\n          openaiOptions?.reasoningEffort === 'none' &&\n          modelCapabilities.supportsNonReasoningParameters\n        )\n      ) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = undefined;\n          warnings.push({\n            type: 'unsupported',\n            feature: 'temperature',\n            details: 'temperature is not supported for reasoning models',\n          });\n        }\n\n        if (baseArgs.top_p != null) {\n          baseArgs.top_p = undefined;\n          warnings.push({\n            type: 'unsupported',\n            feature: 'topP',\n            details: 'topP is not supported for reasoning models',\n          });\n        }\n      }\n    } else {\n      if (openaiOptions?.reasoningEffort != null) {\n        warnings.push({\n          type: 'unsupported',\n          feature: 'reasoningEffort',\n          details: 'reasoningEffort is not supported for non-reasoning models',\n        });\n      }\n\n      if (openaiOptions?.reasoningSummary != null) {\n        warnings.push({\n          type: 'unsupported',\n          feature: 'reasoningSummary',\n          details: 'reasoningSummary is not supported for non-reasoning models',\n        });\n      }\n    }\n\n    // Validate flex processing support\n    if (\n      openaiOptions?.serviceTier === 'flex' &&\n      !modelCapabilities.supportsFlexProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'flex processing is only available for o3, o4-mini, and gpt-5 models',\n      });\n      // Remove from args if not supported\n      delete (baseArgs as any).service_tier;\n    }\n\n    // Validate priority processing support\n    if (\n      openaiOptions?.serviceTier === 'priority' &&\n      !modelCapabilities.supportsPriorityProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n      });\n      // Remove from args if not supported\n      delete (baseArgs as any).service_tier;\n    }\n\n    const shellToolEnvType = (\n      tools?.find(\n        tool => tool.type === 'provider' && tool.id === 'openai.shell',\n      ) as { args?: { environment?: { type?: string } } } | undefined\n    )?.args?.environment?.type;\n\n    const isShellProviderExecuted =\n      shellToolEnvType === 'containerAuto' ||\n      shellToolEnvType === 'containerReference';\n\n    return {\n      webSearchToolName,\n      args: {\n        ...baseArgs,\n        tools: openaiTools,\n        tool_choice: openaiToolChoice,\n      },\n      warnings: [...warnings, ...toolWarnings],\n      store,\n      toolNameMapping,\n      providerOptionsName,\n      isShellProviderExecuted,\n    };\n  }\n\n  async doGenerate(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const {\n      args: body,\n      warnings,\n      webSearchToolName,\n      toolNameMapping,\n      providerOptionsName,\n      isShellProviderExecuted,\n    } = await this.getArgs(options);\n    const url = this.config.url({\n      path: '/responses',\n      modelId: this.modelId,\n    });\n\n    const approvalRequestIdToDummyToolCallIdFromPrompt =\n      extractApprovalRequestIdToToolCallIdMapping(options.prompt);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url,\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiResponsesResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    if (response.error) {\n      throw new APICallError({\n        message: response.error.message,\n        url,\n        requestBodyValues: body,\n        statusCode: 400,\n        responseHeaders,\n        responseBody: rawResponse as string,\n        isRetryable: false,\n      });\n    }\n\n    const content: Array<LanguageModelV3Content> = [];\n    const logprobs: Array<OpenAIResponsesLogprobs> = [];\n\n    // flag that checks if there have been client-side tool calls (not executed by openai)\n    let hasFunctionCall = false;\n    const hostedToolSearchCallIds: string[] = [];\n\n    // map response content to content array (defined when there is no error)\n    for (const part of response.output!) {\n      switch (part.type) {\n        case 'reasoning': {\n          // when there are no summary parts, we need to add an empty reasoning part:\n          if (part.summary.length === 0) {\n            part.summary.push({ type: 'summary_text', text: '' });\n          }\n\n          for (const summary of part.summary) {\n            content.push({\n              type: 'reasoning' as const,\n              text: summary.text,\n              providerMetadata: {\n                [providerOptionsName]: {\n                  itemId: part.id,\n                  reasoningEncryptedContent: part.encrypted_content ?? null,\n                } satisfies ResponsesReasoningProviderMetadata,\n              },\n            });\n          }\n          break;\n        }\n\n        case 'image_generation_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('image_generation'),\n            input: '{}',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('image_generation'),\n            result: {\n              result: part.result,\n            } satisfies InferSchema<typeof imageGenerationOutputSchema>,\n          });\n\n          break;\n        }\n\n        case 'tool_search_call': {\n          const toolCallId = part.call_id ?? part.id;\n          const isHosted = part.execution === 'server';\n\n          if (isHosted) {\n            hostedToolSearchCallIds.push(toolCallId);\n          }\n\n          content.push({\n            type: 'tool-call',\n            toolCallId,\n            toolName: toolNameMapping.toCustomToolName('tool_search'),\n            input: JSON.stringify({\n              arguments: part.arguments,\n              call_id: part.call_id,\n            } satisfies InferSchema<typeof toolSearchInputSchema>),\n            ...(isHosted ? { providerExecuted: true } : {}),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'tool_search_output': {\n          const toolCallId =\n            part.call_id ?? hostedToolSearchCallIds.shift() ?? part.id;\n\n          content.push({\n            type: 'tool-result',\n            toolCallId,\n            toolName: toolNameMapping.toCustomToolName('tool_search'),\n            result: {\n              tools: part.tools,\n            } satisfies InferSchema<typeof toolSearchOutputSchema>,\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'local_shell_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('local_shell'),\n            input: JSON.stringify({\n              action: part.action,\n            } satisfies InferSchema<typeof localShellInputSchema>),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'shell_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('shell'),\n            input: JSON.stringify({\n              action: {\n                commands: part.action.commands,\n              },\n            } satisfies InferSchema<typeof shellInputSchema>),\n            ...(isShellProviderExecuted && { providerExecuted: true }),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'shell_call_output': {\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('shell'),\n            result: {\n              output: part.output.map(item => ({\n                stdout: item.stdout,\n                stderr: item.stderr,\n                outcome:\n                  item.outcome.type === 'exit'\n                    ? {\n                        type: 'exit' as const,\n                        exitCode: item.outcome.exit_code,\n                      }\n                    : { type: 'timeout' as const },\n              })),\n            } satisfies InferSchema<typeof shellOutputSchema>,\n          });\n          break;\n        }\n\n        case 'message': {\n          for (const contentPart of part.content) {\n            if (\n              options.providerOptions?.[providerOptionsName]?.logprobs &&\n              contentPart.logprobs\n            ) {\n              logprobs.push(contentPart.logprobs);\n            }\n\n            const providerMetadata: SharedV3ProviderMetadata[string] = {\n              itemId: part.id,\n              ...(part.phase != null && { phase: part.phase }),\n              ...(contentPart.annotations.length > 0 && {\n                annotations: contentPart.annotations,\n              }),\n            } satisfies ResponsesTextProviderMetadata;\n\n            content.push({\n              type: 'text',\n              text: contentPart.text,\n              providerMetadata: {\n                [providerOptionsName]: providerMetadata,\n              },\n            });\n\n            for (const annotation of contentPart.annotations) {\n              if (annotation.type === 'url_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: this.config.generateId?.() ?? generateId(),\n                  url: annotation.url,\n                  title: annotation.title,\n                });\n              } else if (annotation.type === 'file_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: annotation.filename,\n                  filename: annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: annotation.type,\n                      fileId: annotation.file_id,\n                      index: annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_citation' }\n                    >,\n                  },\n                });\n              } else if (annotation.type === 'container_file_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: annotation.filename,\n                  filename: annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: annotation.type,\n                      fileId: annotation.file_id,\n                      containerId: annotation.container_id,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'container_file_citation' }\n                    >,\n                  },\n                });\n              } else if (annotation.type === 'file_path') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'application/octet-stream',\n                  title: annotation.file_id,\n                  filename: annotation.file_id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: annotation.type,\n                      fileId: annotation.file_id,\n                      index: annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_path' }\n                    >,\n                  },\n                });\n              }\n            }\n          }\n\n          break;\n        }\n\n        case 'function_call': {\n          hasFunctionCall = true;\n\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: part.name,\n            input: part.arguments,\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n                ...(part.namespace != null && { namespace: part.namespace }),\n              },\n            },\n          });\n          break;\n        }\n\n        case 'custom_tool_call': {\n          hasFunctionCall = true;\n          const toolName = toolNameMapping.toCustomToolName(part.name);\n\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName,\n            input: JSON.stringify(part.input),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n          break;\n        }\n\n        case 'web_search_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName(\n              webSearchToolName ?? 'web_search',\n            ),\n            input: JSON.stringify({}),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName(\n              webSearchToolName ?? 'web_search',\n            ),\n            result: mapWebSearchOutput(part.action),\n          });\n\n          break;\n        }\n\n        case 'mcp_call': {\n          const toolCallId =\n            part.approval_request_id != null\n              ? (approvalRequestIdToDummyToolCallIdFromPrompt[\n                  part.approval_request_id\n                ] ?? part.id)\n              : part.id;\n\n          const toolName = `mcp.${part.name}`;\n\n          content.push({\n            type: 'tool-call',\n            toolCallId,\n            toolName,\n            input: part.arguments,\n            providerExecuted: true,\n            dynamic: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId,\n            toolName,\n            result: {\n              type: 'call',\n              serverLabel: part.server_label,\n              name: part.name,\n              arguments: part.arguments,\n              ...(part.output != null ? { output: part.output } : {}),\n              ...(part.error != null\n                ? { error: part.error as unknown as JSONValue }\n                : {}),\n            } satisfies InferSchema<typeof mcpOutputSchema>,\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n          break;\n        }\n\n        case 'mcp_list_tools': {\n          // skip\n          break;\n        }\n\n        case 'mcp_approval_request': {\n          const approvalRequestId = part.approval_request_id ?? part.id;\n          const dummyToolCallId = this.config.generateId?.() ?? generateId();\n          const toolName = `mcp.${part.name}`;\n\n          content.push({\n            type: 'tool-call',\n            toolCallId: dummyToolCallId,\n            toolName,\n            input: part.arguments,\n            providerExecuted: true,\n            dynamic: true,\n          });\n\n          content.push({\n            type: 'tool-approval-request',\n            approvalId: approvalRequestId,\n            toolCallId: dummyToolCallId,\n          } satisfies LanguageModelV3ToolApprovalRequest);\n          break;\n        }\n\n        case 'computer_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('computer_use'),\n            input: '',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('computer_use'),\n            result: {\n              type: 'computer_use_tool_result',\n              status: part.status || 'completed',\n            },\n          });\n          break;\n        }\n\n        case 'file_search_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('file_search'),\n            input: '{}',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('file_search'),\n            result: {\n              queries: part.queries,\n              results:\n                part.results?.map(result => ({\n                  attributes: result.attributes,\n                  fileId: result.file_id,\n                  filename: result.filename,\n                  score: result.score,\n                  text: result.text,\n                })) ?? null,\n            } satisfies InferSchema<typeof fileSearchOutputSchema>,\n          });\n          break;\n        }\n\n        case 'code_interpreter_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('code_interpreter'),\n            input: JSON.stringify({\n              code: part.code,\n              containerId: part.container_id,\n            } satisfies InferSchema<typeof codeInterpreterInputSchema>),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('code_interpreter'),\n            result: {\n              outputs: part.outputs,\n            } satisfies InferSchema<typeof codeInterpreterOutputSchema>,\n          });\n          break;\n        }\n\n        case 'apply_patch_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('apply_patch'),\n            input: JSON.stringify({\n              callId: part.call_id,\n              operation: part.operation,\n            } satisfies InferSchema<typeof applyPatchInputSchema>),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n      }\n    }\n\n    const providerMetadata: SharedV3ProviderMetadata = {\n      [providerOptionsName]: {\n        responseId: response.id,\n        ...(logprobs.length > 0 ? { logprobs } : {}),\n        ...(typeof response.service_tier === 'string'\n          ? { serviceTier: response.service_tier }\n          : {}),\n      } satisfies ResponsesProviderMetadata,\n    };\n\n    const usage = response.usage!; // defined when there is no error\n\n    return {\n      content,\n      finishReason: {\n        unified: mapOpenAIResponseFinishReason({\n          finishReason: response.incomplete_details?.reason,\n          hasFunctionCall,\n        }),\n        raw: response.incomplete_details?.reason ?? undefined,\n      },\n      usage: convertOpenAIResponsesUsage(usage),\n      request: { body },\n      response: {\n        id: response.id,\n        timestamp: new Date(response.created_at! * 1000),\n        modelId: response.model,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      providerMetadata,\n      warnings,\n    };\n  }\n\n  async doStream(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const {\n      args: body,\n      warnings,\n      webSearchToolName,\n      toolNameMapping,\n      store,\n      providerOptionsName,\n      isShellProviderExecuted,\n    } = await this.getArgs(options);\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/responses',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: {\n        ...body,\n        stream: true,\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiResponsesChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const self = this;\n\n    const approvalRequestIdToDummyToolCallIdFromPrompt =\n      extractApprovalRequestIdToToolCallIdMapping(options.prompt);\n\n    const approvalRequestIdToDummyToolCallIdFromStream = new Map<\n      string,\n      string\n    >();\n\n    let finishReason: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    let usage: OpenAIResponsesUsage | undefined = undefined;\n    const logprobs: Array<OpenAIResponsesLogprobs> = [];\n    let responseId: string | null = null;\n\n    const ongoingToolCalls: Record<\n      number,\n      | {\n          toolName: string;\n          toolCallId: string;\n          codeInterpreter?: {\n            containerId: string;\n          };\n          applyPatch?: {\n            hasDiff: boolean;\n            endEmitted: boolean;\n          };\n          toolSearchExecution?: 'server' | 'client';\n        }\n      | undefined\n    > = {};\n\n    // set annotations in 'text-end' part providerMetadata.\n    const ongoingAnnotations: Array<\n      Extract<\n        OpenAIResponsesChunk,\n        { type: 'response.output_text.annotation.added' }\n      >['annotation']\n    > = [];\n\n    // track the phase of the current message being streamed\n    let activeMessagePhase: 'commentary' | 'final_answer' | undefined;\n\n    // flag that checks if there have been client-side tool calls (not executed by openai)\n    let hasFunctionCall = false;\n\n    const activeReasoning: Record<\n      string,\n      {\n        encryptedContent?: string | null;\n        // summary index as string to reasoning part state:\n        summaryParts: Record<string, 'active' | 'can-conclude' | 'concluded'>;\n      }\n    > = {};\n\n    let serviceTier: string | undefined;\n    const hostedToolSearchCallIds: string[] = [];\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAIResponsesChunk>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = { unified: 'error', raw: undefined };\n              controller.enqueue({ type: 'error', error: chunk.error });\n              return;\n            }\n\n            const value = chunk.value;\n\n            if (isResponseOutputItemAddedChunk(value)) {\n              if (value.item.type === 'function_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: value.item.name,\n                  toolCallId: value.item.call_id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.call_id,\n                  toolName: value.item.name,\n                });\n              } else if (value.item.type === 'custom_tool_call') {\n                const toolName = toolNameMapping.toCustomToolName(\n                  value.item.name,\n                );\n                ongoingToolCalls[value.output_index] = {\n                  toolName,\n                  toolCallId: value.item.call_id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.call_id,\n                  toolName,\n                });\n              } else if (value.item.type === 'web_search_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  toolCallId: value.item.id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  input: JSON.stringify({}),\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'computer_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  toolCallId: value.item.id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'code_interpreter_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  toolCallId: value.item.id,\n                  codeInterpreter: {\n                    containerId: value.item.container_id,\n                  },\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: value.item.id,\n                  delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n                });\n              } else if (value.item.type === 'file_search_call') {\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('file_search'),\n                  input: '{}',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'image_generation_call') {\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('image_generation'),\n                  input: '{}',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'tool_search_call') {\n                const toolCallId = value.item.id;\n                const toolName =\n                  toolNameMapping.toCustomToolName('tool_search');\n                const isHosted = value.item.execution === 'server';\n\n                ongoingToolCalls[value.output_index] = {\n                  toolName,\n                  toolCallId,\n                  toolSearchExecution: value.item.execution ?? 'server',\n                };\n\n                if (isHosted) {\n                  controller.enqueue({\n                    type: 'tool-input-start',\n                    id: toolCallId,\n                    toolName,\n                    providerExecuted: true,\n                  });\n                }\n              } else if (value.item.type === 'tool_search_output') {\n                // handled on output_item.done so we can pair it with the call\n              } else if (\n                value.item.type === 'mcp_call' ||\n                value.item.type === 'mcp_list_tools' ||\n                value.item.type === 'mcp_approval_request'\n              ) {\n                // Emit MCP tool-call/approval parts on output_item.done instead, so we can:\n                // - alias mcp_call IDs when an approval_request_id is present\n                // - emit a proper tool-approval-request part for MCP approvals\n              } else if (value.item.type === 'apply_patch_call') {\n                const { call_id: callId, operation } = value.item;\n\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName('apply_patch'),\n                  toolCallId: callId,\n                  applyPatch: {\n                    // delete_file doesn't have diff\n                    hasDiff: operation.type === 'delete_file',\n                    endEmitted: operation.type === 'delete_file',\n                  },\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: callId,\n                  toolName: toolNameMapping.toCustomToolName('apply_patch'),\n                });\n\n                if (operation.type === 'delete_file') {\n                  const inputString = JSON.stringify({\n                    callId,\n                    operation,\n                  } satisfies InferSchema<typeof applyPatchInputSchema>);\n\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: callId,\n                    delta: inputString,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: callId,\n                  });\n                } else {\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: callId,\n                    delta: `{\"callId\":\"${escapeJSONDelta(callId)}\",\"operation\":{\"type\":\"${escapeJSONDelta(operation.type)}\",\"path\":\"${escapeJSONDelta(operation.path)}\",\"diff\":\"`,\n                  });\n                }\n              } else if (value.item.type === 'shell_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName('shell'),\n                  toolCallId: value.item.call_id,\n                };\n              } else if (value.item.type === 'shell_call_output') {\n                // shell_call_output is handled in output_item.done\n              } else if (value.item.type === 'message') {\n                ongoingAnnotations.splice(0, ongoingAnnotations.length);\n                activeMessagePhase = value.item.phase ?? undefined;\n                controller.enqueue({\n                  type: 'text-start',\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                      ...(value.item.phase != null && {\n                        phase: value.item.phase,\n                      }),\n                    },\n                  },\n                });\n              } else if (\n                isResponseOutputItemAddedChunk(value) &&\n                value.item.type === 'reasoning'\n              ) {\n                activeReasoning[value.item.id] = {\n                  encryptedContent: value.item.encrypted_content,\n                  summaryParts: { 0: 'active' },\n                };\n\n                controller.enqueue({\n                  type: 'reasoning-start',\n                  id: `${value.item.id}:0`,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                      reasoningEncryptedContent:\n                        value.item.encrypted_content ?? null,\n                    } satisfies ResponsesReasoningProviderMetadata,\n                  },\n                });\n              }\n            } else if (isResponseOutputItemDoneChunk(value)) {\n              if (value.item.type === 'message') {\n                const phase = value.item.phase ?? activeMessagePhase;\n                activeMessagePhase = undefined;\n                controller.enqueue({\n                  type: 'text-end',\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                      ...(phase != null && { phase }),\n                      ...(ongoingAnnotations.length > 0 && {\n                        annotations: ongoingAnnotations,\n                      }),\n                    } satisfies ResponsesTextProviderMetadata,\n                  },\n                });\n              } else if (value.item.type === 'function_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n                hasFunctionCall = true;\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.call_id,\n                  ...(value.item.namespace != null && {\n                    providerMetadata: {\n                      [providerOptionsName]: {\n                        namespace: value.item.namespace,\n                      },\n                    },\n                  }),\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: value.item.name,\n                  input: value.item.arguments,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                      ...(value.item.namespace != null && {\n                        namespace: value.item.namespace,\n                      }),\n                    },\n                  },\n                });\n              } else if (value.item.type === 'custom_tool_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n                hasFunctionCall = true;\n                const toolName = toolNameMapping.toCustomToolName(\n                  value.item.name,\n                );\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.call_id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName,\n                  input: JSON.stringify(value.item.input),\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'web_search_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  result: mapWebSearchOutput(value.item.action),\n                });\n              } else if (value.item.type === 'computer_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  input: '',\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  result: {\n                    type: 'computer_use_tool_result',\n                    status: value.item.status || 'completed',\n                  },\n                });\n              } else if (value.item.type === 'file_search_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('file_search'),\n                  result: {\n                    queries: value.item.queries,\n                    results:\n                      value.item.results?.map(result => ({\n                        attributes: result.attributes,\n                        fileId: result.file_id,\n                        filename: result.filename,\n                        score: result.score,\n                        text: result.text,\n                      })) ?? null,\n                  } satisfies InferSchema<typeof fileSearchOutputSchema>,\n                });\n              } else if (value.item.type === 'code_interpreter_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  result: {\n                    outputs: value.item.outputs,\n                  } satisfies InferSchema<typeof codeInterpreterOutputSchema>,\n                });\n              } else if (value.item.type === 'image_generation_call') {\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('image_generation'),\n                  result: {\n                    result: value.item.result,\n                  } satisfies InferSchema<typeof imageGenerationOutputSchema>,\n                });\n              } else if (value.item.type === 'tool_search_call') {\n                const toolCall = ongoingToolCalls[value.output_index];\n                const isHosted = value.item.execution === 'server';\n\n                if (toolCall != null) {\n                  const toolCallId = isHosted\n                    ? toolCall.toolCallId\n                    : (value.item.call_id ?? value.item.id);\n\n                  if (isHosted) {\n                    hostedToolSearchCallIds.push(toolCallId);\n                  } else {\n                    controller.enqueue({\n                      type: 'tool-input-start',\n                      id: toolCallId,\n                      toolName: toolCall.toolName,\n                    });\n                  }\n\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: toolCallId,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId,\n                    toolName: toolCall.toolName,\n                    input: JSON.stringify({\n                      arguments: value.item.arguments,\n                      call_id: isHosted ? null : toolCallId,\n                    } satisfies InferSchema<typeof toolSearchInputSchema>),\n                    ...(isHosted ? { providerExecuted: true } : {}),\n                    providerMetadata: {\n                      [providerOptionsName]: {\n                        itemId: value.item.id,\n                      },\n                    },\n                  });\n                }\n\n                ongoingToolCalls[value.output_index] = undefined;\n              } else if (value.item.type === 'tool_search_output') {\n                const toolCallId =\n                  value.item.call_id ??\n                  hostedToolSearchCallIds.shift() ??\n                  value.item.id;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId,\n                  toolName: toolNameMapping.toCustomToolName('tool_search'),\n                  result: {\n                    tools: value.item.tools,\n                  } satisfies InferSchema<typeof toolSearchOutputSchema>,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'mcp_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                const approvalRequestId =\n                  value.item.approval_request_id ?? undefined;\n\n                // when MCP tools require approval, we track them with our own\n                // tool call IDs and then map OpenAI's approval_request_id back to our ID so results match.\n                const aliasedToolCallId =\n                  approvalRequestId != null\n                    ? (approvalRequestIdToDummyToolCallIdFromStream.get(\n                        approvalRequestId,\n                      ) ??\n                      approvalRequestIdToDummyToolCallIdFromPrompt[\n                        approvalRequestId\n                      ] ??\n                      value.item.id)\n                    : value.item.id;\n\n                const toolName = `mcp.${value.item.name}`;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: aliasedToolCallId,\n                  toolName,\n                  input: value.item.arguments,\n                  providerExecuted: true,\n                  dynamic: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: aliasedToolCallId,\n                  toolName,\n                  result: {\n                    type: 'call',\n                    serverLabel: value.item.server_label,\n                    name: value.item.name,\n                    arguments: value.item.arguments,\n                    ...(value.item.output != null\n                      ? { output: value.item.output }\n                      : {}),\n                    ...(value.item.error != null\n                      ? { error: value.item.error as unknown as JSONValue }\n                      : {}),\n                  } satisfies InferSchema<typeof mcpOutputSchema>,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'mcp_list_tools') {\n                // Skip listTools - we don't expose this to the UI or send it back\n                ongoingToolCalls[value.output_index] = undefined;\n\n                // skip\n              } else if (value.item.type === 'apply_patch_call') {\n                const toolCall = ongoingToolCalls[value.output_index];\n                if (\n                  toolCall?.applyPatch &&\n                  !toolCall.applyPatch.endEmitted &&\n                  value.item.operation.type !== 'delete_file'\n                ) {\n                  if (!toolCall.applyPatch.hasDiff) {\n                    controller.enqueue({\n                      type: 'tool-input-delta',\n                      id: toolCall.toolCallId,\n                      delta: escapeJSONDelta(value.item.operation.diff),\n                    });\n                  }\n\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: toolCall.toolCallId,\n                    delta: '\"}}',\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: toolCall.toolCallId,\n                  });\n\n                  toolCall.applyPatch.endEmitted = true;\n                }\n\n                // Emit the final tool-call with complete diff when status is 'completed'\n                if (toolCall && value.item.status === 'completed') {\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId: toolCall.toolCallId,\n                    toolName: toolNameMapping.toCustomToolName('apply_patch'),\n                    input: JSON.stringify({\n                      callId: value.item.call_id,\n                      operation: value.item.operation,\n                    } satisfies InferSchema<typeof applyPatchInputSchema>),\n                    providerMetadata: {\n                      [providerOptionsName]: {\n                        itemId: value.item.id,\n                      },\n                    },\n                  });\n                }\n\n                ongoingToolCalls[value.output_index] = undefined;\n              } else if (value.item.type === 'mcp_approval_request') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                const dummyToolCallId =\n                  self.config.generateId?.() ?? generateId();\n                const approvalRequestId =\n                  value.item.approval_request_id ?? value.item.id;\n                approvalRequestIdToDummyToolCallIdFromStream.set(\n                  approvalRequestId,\n                  dummyToolCallId,\n                );\n\n                const toolName = `mcp.${value.item.name}`;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: dummyToolCallId,\n                  toolName,\n                  input: value.item.arguments,\n                  providerExecuted: true,\n                  dynamic: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-approval-request',\n                  approvalId: approvalRequestId,\n                  toolCallId: dummyToolCallId,\n                });\n              } else if (value.item.type === 'local_shell_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: toolNameMapping.toCustomToolName('local_shell'),\n                  input: JSON.stringify({\n                    action: {\n                      type: 'exec',\n                      command: value.item.action.command,\n                      timeoutMs: value.item.action.timeout_ms,\n                      user: value.item.action.user,\n                      workingDirectory: value.item.action.working_directory,\n                      env: value.item.action.env,\n                    },\n                  } satisfies InferSchema<typeof localShellInputSchema>),\n                  providerMetadata: {\n                    [providerOptionsName]: { itemId: value.item.id },\n                  },\n                });\n              } else if (value.item.type === 'shell_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: toolNameMapping.toCustomToolName('shell'),\n                  input: JSON.stringify({\n                    action: {\n                      commands: value.item.action.commands,\n                    },\n                  } satisfies InferSchema<typeof shellInputSchema>),\n                  ...(isShellProviderExecuted && {\n                    providerExecuted: true,\n                  }),\n                  providerMetadata: {\n                    [providerOptionsName]: { itemId: value.item.id },\n                  },\n                });\n              } else if (value.item.type === 'shell_call_output') {\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.call_id,\n                  toolName: toolNameMapping.toCustomToolName('shell'),\n                  result: {\n                    output: value.item.output.map(\n                      (item: {\n                        stdout: string;\n                        stderr: string;\n                        outcome:\n                          | { type: 'exit'; exit_code: number }\n                          | { type: 'timeout' };\n                      }) => ({\n                        stdout: item.stdout,\n                        stderr: item.stderr,\n                        outcome:\n                          item.outcome.type === 'exit'\n                            ? {\n                                type: 'exit' as const,\n                                exitCode: item.outcome.exit_code,\n                              }\n                            : { type: 'timeout' as const },\n                      }),\n                    ),\n                  } satisfies InferSchema<typeof shellOutputSchema>,\n                });\n              } else if (value.item.type === 'reasoning') {\n                const activeReasoningPart = activeReasoning[value.item.id];\n\n                // get all active or can-conclude summary parts' ids\n                // to conclude ongoing reasoning parts:\n                const summaryPartIndices = Object.entries(\n                  activeReasoningPart.summaryParts,\n                )\n                  .filter(\n                    ([_, status]) =>\n                      status === 'active' || status === 'can-conclude',\n                  )\n                  .map(([summaryIndex]) => summaryIndex);\n\n                for (const summaryIndex of summaryPartIndices) {\n                  controller.enqueue({\n                    type: 'reasoning-end',\n                    id: `${value.item.id}:${summaryIndex}`,\n                    providerMetadata: {\n                      [providerOptionsName]: {\n                        itemId: value.item.id,\n                        reasoningEncryptedContent:\n                          value.item.encrypted_content ?? null,\n                      } satisfies ResponsesReasoningProviderMetadata,\n                    },\n                  });\n                }\n\n                delete activeReasoning[value.item.id];\n              }\n            } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: value.delta,\n                });\n              }\n            } else if (isResponseCustomToolCallInputDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: value.delta,\n                });\n              }\n            } else if (isResponseApplyPatchCallOperationDiffDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall?.applyPatch) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: escapeJSONDelta(value.delta),\n                });\n\n                toolCall.applyPatch.hasDiff = true;\n              }\n            } else if (isResponseApplyPatchCallOperationDiffDoneChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall?.applyPatch && !toolCall.applyPatch.endEmitted) {\n                if (!toolCall.applyPatch.hasDiff) {\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: toolCall.toolCallId,\n                    delta: escapeJSONDelta(value.diff),\n                  });\n\n                  toolCall.applyPatch.hasDiff = true;\n                }\n\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: '\"}}',\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: toolCall.toolCallId,\n                });\n\n                toolCall.applyPatch.endEmitted = true;\n              }\n            } else if (isResponseImageGenerationCallPartialImageChunk(value)) {\n              controller.enqueue({\n                type: 'tool-result',\n                toolCallId: value.item_id,\n                toolName: toolNameMapping.toCustomToolName('image_generation'),\n                result: {\n                  result: value.partial_image_b64,\n                } satisfies InferSchema<typeof imageGenerationOutputSchema>,\n                preliminary: true,\n              });\n            } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: escapeJSONDelta(value.delta),\n                });\n              }\n            } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: '\"}',\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: toolCall.toolCallId,\n                });\n\n                // immediately send the tool call after the input end:\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: toolCall.toolCallId,\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  input: JSON.stringify({\n                    code: value.code,\n                    containerId: toolCall.codeInterpreter!.containerId,\n                  } satisfies InferSchema<typeof codeInterpreterInputSchema>),\n                  providerExecuted: true,\n                });\n              }\n            } else if (isResponseCreatedChunk(value)) {\n              responseId = value.response.id;\n              controller.enqueue({\n                type: 'response-metadata',\n                id: value.response.id,\n                timestamp: new Date(value.response.created_at * 1000),\n                modelId: value.response.model,\n              });\n            } else if (isTextDeltaChunk(value)) {\n              controller.enqueue({\n                type: 'text-delta',\n                id: value.item_id,\n                delta: value.delta,\n              });\n\n              if (\n                options.providerOptions?.[providerOptionsName]?.logprobs &&\n                value.logprobs\n              ) {\n                logprobs.push(value.logprobs);\n              }\n            } else if (value.type === 'response.reasoning_summary_part.added') {\n              // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n              if (value.summary_index > 0) {\n                const activeReasoningPart = activeReasoning[value.item_id]!;\n\n                activeReasoningPart.summaryParts[value.summary_index] =\n                  'active';\n\n                // since there is a new active summary part, we can conclude all can-conclude summary parts\n                for (const summaryIndex of Object.keys(\n                  activeReasoningPart.summaryParts,\n                )) {\n                  if (\n                    activeReasoningPart.summaryParts[summaryIndex] ===\n                    'can-conclude'\n                  ) {\n                    controller.enqueue({\n                      type: 'reasoning-end',\n                      id: `${value.item_id}:${summaryIndex}`,\n                      providerMetadata: {\n                        [providerOptionsName]: {\n                          itemId: value.item_id,\n                        } satisfies ResponsesReasoningProviderMetadata,\n                      },\n                    });\n                    activeReasoningPart.summaryParts[summaryIndex] =\n                      'concluded';\n                  }\n                }\n\n                controller.enqueue({\n                  type: 'reasoning-start',\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item_id,\n                      reasoningEncryptedContent:\n                        activeReasoning[value.item_id]?.encryptedContent ??\n                        null,\n                    } satisfies ResponsesReasoningProviderMetadata,\n                  },\n                });\n              }\n            } else if (value.type === 'response.reasoning_summary_text.delta') {\n              controller.enqueue({\n                type: 'reasoning-delta',\n                id: `${value.item_id}:${value.summary_index}`,\n                delta: value.delta,\n                providerMetadata: {\n                  [providerOptionsName]: {\n                    itemId: value.item_id,\n                  } satisfies ResponsesReasoningProviderMetadata,\n                },\n              });\n            } else if (value.type === 'response.reasoning_summary_part.done') {\n              // when OpenAI stores the message data, we can immediately conclude the reasoning part\n              // since we do not need to send the encrypted content.\n              if (store) {\n                controller.enqueue({\n                  type: 'reasoning-end',\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item_id,\n                    } satisfies ResponsesReasoningProviderMetadata,\n                  },\n                });\n\n                // mark the summary part as concluded\n                activeReasoning[value.item_id]!.summaryParts[\n                  value.summary_index\n                ] = 'concluded';\n              } else {\n                // mark the summary part as can-conclude only\n                // because we need to have a final summary part with the encrypted content\n                activeReasoning[value.item_id]!.summaryParts[\n                  value.summary_index\n                ] = 'can-conclude';\n              }\n            } else if (isResponseFinishedChunk(value)) {\n              finishReason = {\n                unified: mapOpenAIResponseFinishReason({\n                  finishReason: value.response.incomplete_details?.reason,\n                  hasFunctionCall,\n                }),\n                raw: value.response.incomplete_details?.reason ?? undefined,\n              };\n              usage = value.response.usage;\n              if (typeof value.response.service_tier === 'string') {\n                serviceTier = value.response.service_tier;\n              }\n            } else if (isResponseFailedChunk(value)) {\n              const incompleteReason =\n                value.response.incomplete_details?.reason;\n              finishReason = {\n                unified: incompleteReason\n                  ? mapOpenAIResponseFinishReason({\n                      finishReason: incompleteReason,\n                      hasFunctionCall,\n                    })\n                  : 'error',\n                raw: incompleteReason ?? 'error',\n              };\n              usage = value.response.usage ?? undefined;\n            } else if (isResponseAnnotationAddedChunk(value)) {\n              ongoingAnnotations.push(value.annotation);\n              if (value.annotation.type === 'url_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: self.config.generateId?.() ?? generateId(),\n                  url: value.annotation.url,\n                  title: value.annotation.title,\n                });\n              } else if (value.annotation.type === 'file_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: value.annotation.filename,\n                  filename: value.annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: value.annotation.type,\n                      fileId: value.annotation.file_id,\n                      index: value.annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_citation' }\n                    >,\n                  },\n                });\n              } else if (value.annotation.type === 'container_file_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: value.annotation.filename,\n                  filename: value.annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: value.annotation.type,\n                      fileId: value.annotation.file_id,\n                      containerId: value.annotation.container_id,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'container_file_citation' }\n                    >,\n                  },\n                });\n              } else if (value.annotation.type === 'file_path') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'application/octet-stream',\n                  title: value.annotation.file_id,\n                  filename: value.annotation.file_id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: value.annotation.type,\n                      fileId: value.annotation.file_id,\n                      index: value.annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_path' }\n                    >,\n                  },\n                });\n              }\n            } else if (isErrorChunk(value)) {\n              controller.enqueue({ type: 'error', error: value });\n            }\n          },\n\n          flush(controller) {\n            const providerMetadata: SharedV3ProviderMetadata = {\n              [providerOptionsName]: {\n                responseId: responseId,\n                ...(logprobs.length > 0 ? { logprobs } : {}),\n                ...(serviceTier !== undefined ? { serviceTier } : {}),\n              } satisfies ResponsesProviderMetadata,\n            };\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage: convertOpenAIResponsesUsage(usage),\n              providerMetadata,\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n\nfunction isTextDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n  return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n  return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.completed' | 'response.incomplete';\n} {\n  return (\n    chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n  );\n}\n\nfunction isResponseFailedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.failed' } {\n  return chunk.type === 'response.failed';\n}\n\nfunction isResponseCreatedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n  return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.function_call_arguments.delta';\n} {\n  return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCustomToolCallInputDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.custom_tool_call_input.delta';\n} {\n  return chunk.type === 'response.custom_tool_call_input.delta';\n}\n\nfunction isResponseImageGenerationCallPartialImageChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.image_generation_call.partial_image';\n} {\n  return chunk.type === 'response.image_generation_call.partial_image';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.code_interpreter_call_code.delta';\n} {\n  return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.code_interpreter_call_code.done';\n} {\n  return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseApplyPatchCallOperationDiffDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesApplyPatchOperationDiffDeltaChunk {\n  return chunk.type === 'response.apply_patch_call_operation_diff.delta';\n}\n\nfunction isResponseApplyPatchCallOperationDiffDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesApplyPatchOperationDiffDoneChunk {\n  return chunk.type === 'response.apply_patch_call_operation_diff.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n  return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.output_text.annotation.added';\n} {\n  return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n  return chunk.type === 'error';\n}\n\nfunction mapWebSearchOutput(\n  action: OpenAIResponsesWebSearchAction | null | undefined,\n): InferSchema<typeof webSearchOutputSchema> {\n  if (action == null) {\n    return {};\n  }\n\n  switch (action.type) {\n    case 'search':\n      return {\n        action: { type: 'search', query: action.query ?? undefined },\n        // include sources when provided by the Responses API (behind include flag)\n        ...(action.sources != null && { sources: action.sources }),\n      };\n    case 'open_page':\n      return { action: { type: 'openPage', url: action.url } };\n    case 'find_in_page':\n      return {\n        action: {\n          type: 'findInPage',\n          url: action.url,\n          pattern: action.pattern,\n        },\n      };\n  }\n}\n\n// The delta is embedded in a JSON string.\n// To escape it, we use JSON.stringify and slice to remove the outer quotes.\nfunction escapeJSONDelta(delta: string) {\n  return JSON.stringify(delta).slice(1, -1);\n}\n","import type { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type OpenAIResponsesUsage = {\n  input_tokens: number;\n  output_tokens: number;\n  input_tokens_details?: {\n    cached_tokens?: number | null;\n  } | null;\n  output_tokens_details?: {\n    reasoning_tokens?: number | null;\n  } | null;\n};\n\nexport function convertOpenAIResponsesUsage(\n  usage: OpenAIResponsesUsage | undefined | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const inputTokens = usage.input_tokens;\n  const outputTokens = usage.output_tokens;\n  const cachedTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n  const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n  return {\n    inputTokens: {\n      total: inputTokens,\n      noCache: inputTokens - cachedTokens,\n      cacheRead: cachedTokens,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: outputTokens,\n      text: outputTokens - reasoningTokens,\n      reasoning: reasoningTokens,\n    },\n    raw: usage,\n  };\n}\n","import {\n  UnsupportedFunctionalityError,\n  type LanguageModelV3Prompt,\n  type LanguageModelV3ToolApprovalResponsePart,\n  type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  convertToBase64,\n  isNonNullable,\n  parseJSON,\n  parseProviderOptions,\n  validateTypes,\n  type ToolNameMapping,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n  applyPatchInputSchema,\n  applyPatchOutputSchema,\n} from '../tool/apply-patch';\nimport {\n  localShellInputSchema,\n  localShellOutputSchema,\n} from '../tool/local-shell';\nimport { shellInputSchema, shellOutputSchema } from '../tool/shell';\nimport {\n  toolSearchInputSchema,\n  toolSearchOutputSchema,\n} from '../tool/tool-search';\nimport type {\n  OpenAIResponsesCustomToolCallOutput,\n  OpenAIResponsesFunctionCallOutput,\n  OpenAIResponsesInput,\n  OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\nfunction serializeToolCallArguments(input: unknown): string {\n  return JSON.stringify(input === undefined ? {} : input);\n}\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n  if (!prefixes) return false;\n  return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n  prompt,\n  toolNameMapping,\n  systemMessageMode,\n  providerOptionsName,\n  fileIdPrefixes,\n  store,\n  hasConversation = false,\n  hasLocalShellTool = false,\n  hasShellTool = false,\n  hasApplyPatchTool = false,\n  customProviderToolNames,\n}: {\n  prompt: LanguageModelV3Prompt;\n  toolNameMapping: ToolNameMapping;\n  systemMessageMode: 'system' | 'developer' | 'remove';\n  providerOptionsName: string;\n  fileIdPrefixes?: readonly string[];\n  store: boolean;\n  hasConversation?: boolean; // when true, skip assistant messages that already have item IDs\n  hasLocalShellTool?: boolean;\n  hasShellTool?: boolean;\n  hasApplyPatchTool?: boolean;\n  customProviderToolNames?: Set<string>;\n}): Promise<{\n  input: OpenAIResponsesInput;\n  warnings: Array<SharedV3Warning>;\n}> {\n  let input: OpenAIResponsesInput = [];\n  const warnings: Array<SharedV3Warning> = [];\n  const processedApprovalIds = new Set<string>();\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        switch (systemMessageMode) {\n          case 'system': {\n            input.push({ role: 'system', content });\n            break;\n          }\n          case 'developer': {\n            input.push({ role: 'developer', content });\n            break;\n          }\n          case 'remove': {\n            warnings.push({\n              type: 'other',\n              message: 'system messages are removed for this model',\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck: never = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`,\n            );\n          }\n        }\n        break;\n      }\n\n      case 'user': {\n        input.push({\n          role: 'user',\n          content: content.map((part, index) => {\n            switch (part.type) {\n              case 'text': {\n                return { type: 'input_text', text: part.text };\n              }\n              case 'file': {\n                if (part.mediaType.startsWith('image/')) {\n                  const mediaType =\n                    part.mediaType === 'image/*'\n                      ? 'image/jpeg'\n                      : part.mediaType;\n\n                  return {\n                    type: 'input_image',\n                    ...(part.data instanceof URL\n                      ? { image_url: part.data.toString() }\n                      : typeof part.data === 'string' &&\n                          isFileId(part.data, fileIdPrefixes)\n                        ? { file_id: part.data }\n                        : {\n                            image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n                          }),\n                    detail:\n                      part.providerOptions?.[providerOptionsName]?.imageDetail,\n                  };\n                } else if (part.mediaType === 'application/pdf') {\n                  if (part.data instanceof URL) {\n                    return {\n                      type: 'input_file',\n                      file_url: part.data.toString(),\n                    };\n                  }\n                  return {\n                    type: 'input_file',\n                    ...(typeof part.data === 'string' &&\n                    isFileId(part.data, fileIdPrefixes)\n                      ? { file_id: part.data }\n                      : {\n                          filename: part.filename ?? `part-${index}.pdf`,\n                          file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n                        }),\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`,\n                  });\n                }\n              }\n            }\n          }),\n        });\n\n        break;\n      }\n\n      case 'assistant': {\n        const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {};\n\n        for (const part of content) {\n          switch (part.type) {\n            case 'text': {\n              const providerOpts = part.providerOptions?.[providerOptionsName];\n              const id = providerOpts?.itemId as string | undefined;\n              const phase = providerOpts?.phase as\n                | 'commentary'\n                | 'final_answer'\n                | null\n                | undefined;\n\n              // when using conversation, skip items that already exist in the conversation context to avoid \"Duplicate item found\" errors\n              if (hasConversation && id != null) {\n                break;\n              }\n\n              // item references reduce the payload size\n              if (store && id != null) {\n                input.push({ type: 'item_reference', id });\n                break;\n              }\n\n              input.push({\n                role: 'assistant',\n                content: [{ type: 'output_text', text: part.text }],\n                id,\n                ...(phase != null && { phase }),\n              });\n\n              break;\n            }\n            case 'tool-call': {\n              const id = (part.providerOptions?.[providerOptionsName]?.itemId ??\n                (\n                  part as {\n                    providerMetadata?: {\n                      [providerOptionsName]?: { itemId?: string };\n                    };\n                  }\n                ).providerMetadata?.[providerOptionsName]?.itemId) as\n                | string\n                | undefined;\n\n              if (hasConversation && id != null) {\n                break;\n              }\n\n              const resolvedToolName = toolNameMapping.toProviderToolName(\n                part.toolName,\n              );\n\n              if (resolvedToolName === 'tool_search') {\n                if (store && id != null) {\n                  input.push({ type: 'item_reference', id });\n                  break;\n                }\n\n                const parsedInput =\n                  typeof part.input === 'string'\n                    ? await parseJSON({\n                        text: part.input,\n                        schema: toolSearchInputSchema,\n                      })\n                    : await validateTypes({\n                        value: part.input,\n                        schema: toolSearchInputSchema,\n                      });\n\n                const execution =\n                  parsedInput.call_id != null ? 'client' : 'server';\n\n                input.push({\n                  type: 'tool_search_call',\n                  id: id ?? part.toolCallId,\n                  execution,\n                  call_id: parsedInput.call_id ?? null,\n                  status: 'completed',\n                  arguments: parsedInput.arguments,\n                });\n                break;\n              }\n\n              if (part.providerExecuted) {\n                if (store && id != null) {\n                  input.push({ type: 'item_reference', id });\n                }\n                break;\n              }\n\n              if (store && id != null) {\n                input.push({ type: 'item_reference', id });\n                break;\n              }\n\n              if (hasLocalShellTool && resolvedToolName === 'local_shell') {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: localShellInputSchema,\n                });\n                input.push({\n                  type: 'local_shell_call',\n                  call_id: part.toolCallId,\n                  id: id!,\n                  action: {\n                    type: 'exec',\n                    command: parsedInput.action.command,\n                    timeout_ms: parsedInput.action.timeoutMs,\n                    user: parsedInput.action.user,\n                    working_directory: parsedInput.action.workingDirectory,\n                    env: parsedInput.action.env,\n                  },\n                });\n\n                break;\n              }\n\n              if (hasShellTool && resolvedToolName === 'shell') {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: shellInputSchema,\n                });\n                input.push({\n                  type: 'shell_call',\n                  call_id: part.toolCallId,\n                  id: id!,\n                  status: 'completed',\n                  action: {\n                    commands: parsedInput.action.commands,\n                    timeout_ms: parsedInput.action.timeoutMs,\n                    max_output_length: parsedInput.action.maxOutputLength,\n                  },\n                });\n\n                break;\n              }\n\n              if (hasApplyPatchTool && resolvedToolName === 'apply_patch') {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: applyPatchInputSchema,\n                });\n                input.push({\n                  type: 'apply_patch_call',\n                  call_id: parsedInput.callId,\n                  id: id!,\n                  status: 'completed',\n                  operation: parsedInput.operation,\n                });\n\n                break;\n              }\n\n              if (customProviderToolNames?.has(resolvedToolName)) {\n                input.push({\n                  type: 'custom_tool_call',\n                  call_id: part.toolCallId,\n                  name: resolvedToolName,\n                  input:\n                    typeof part.input === 'string'\n                      ? part.input\n                      : JSON.stringify(part.input),\n                  id,\n                });\n                break;\n              }\n\n              input.push({\n                type: 'function_call',\n                call_id: part.toolCallId,\n                name: resolvedToolName,\n                arguments: serializeToolCallArguments(part.input),\n                id,\n              });\n              break;\n            }\n\n            // assistant tool result parts are from provider-executed tools:\n            case 'tool-result': {\n              // Skip execution-denied results - these are synthetic results from denied\n              // approvals and have no corresponding item in OpenAI's store.\n              // Check both the direct type and if it was transformed to json with execution-denied inside\n              if (\n                part.output.type === 'execution-denied' ||\n                (part.output.type === 'json' &&\n                  typeof part.output.value === 'object' &&\n                  part.output.value != null &&\n                  'type' in part.output.value &&\n                  part.output.value.type === 'execution-denied')\n              ) {\n                break;\n              }\n\n              if (hasConversation) {\n                break;\n              }\n\n              const resolvedResultToolName = toolNameMapping.toProviderToolName(\n                part.toolName,\n              );\n\n              if (resolvedResultToolName === 'tool_search') {\n                const itemId =\n                  (\n                    part.providerOptions?.[providerOptionsName] as\n                      | { itemId?: string }\n                      | undefined\n                  )?.itemId ?? part.toolCallId;\n\n                if (store) {\n                  input.push({ type: 'item_reference', id: itemId });\n                } else if (part.output.type === 'json') {\n                  const parsedOutput = await validateTypes({\n                    value: part.output.value,\n                    schema: toolSearchOutputSchema,\n                  });\n\n                  input.push({\n                    type: 'tool_search_output',\n                    id: itemId,\n                    execution: 'server',\n                    call_id: null,\n                    status: 'completed',\n                    tools: parsedOutput.tools,\n                  });\n                }\n\n                break;\n              }\n\n              /*\n               * Shell tool results are separate output items (shell_call_output)\n               * with their own item IDs distinct from the shell_call's item ID.\n               * Since the pipeline only preserves the shell_call's item ID in\n               * callProviderMetadata, we reconstruct the full shell_call_output\n               * instead of using an item_reference with the wrong ID.\n               */\n              if (hasShellTool && resolvedResultToolName === 'shell') {\n                if (part.output.type === 'json') {\n                  const parsedOutput = await validateTypes({\n                    value: part.output.value,\n                    schema: shellOutputSchema,\n                  });\n                  input.push({\n                    type: 'shell_call_output',\n                    call_id: part.toolCallId,\n                    output: parsedOutput.output.map(item => ({\n                      stdout: item.stdout,\n                      stderr: item.stderr,\n                      outcome:\n                        item.outcome.type === 'timeout'\n                          ? { type: 'timeout' as const }\n                          : {\n                              type: 'exit' as const,\n                              exit_code: item.outcome.exitCode,\n                            },\n                    })),\n                  });\n                }\n                break;\n              }\n\n              if (store) {\n                const itemId =\n                  (\n                    part.providerOptions?.[providerOptionsName] as\n                      | { itemId?: string }\n                      | undefined\n                  )?.itemId ?? part.toolCallId;\n                input.push({ type: 'item_reference', id: itemId });\n              } else {\n                warnings.push({\n                  type: 'other',\n                  message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n                });\n              }\n\n              break;\n            }\n\n            case 'reasoning': {\n              const providerOptions = await parseProviderOptions({\n                provider: providerOptionsName,\n                providerOptions: part.providerOptions,\n                schema: openaiResponsesReasoningProviderOptionsSchema,\n              });\n\n              const reasoningId = providerOptions?.itemId;\n\n              if (hasConversation && reasoningId != null) {\n                break;\n              }\n\n              if (reasoningId != null) {\n                const reasoningMessage = reasoningMessages[reasoningId];\n\n                if (store) {\n                  // use item references to refer to reasoning (single reference)\n                  // when the first part is encountered\n                  if (reasoningMessage === undefined) {\n                    input.push({ type: 'item_reference', id: reasoningId });\n\n                    // store unused reasoning message to mark id as used\n                    reasoningMessages[reasoningId] = {\n                      type: 'reasoning',\n                      id: reasoningId,\n                      summary: [],\n                    };\n                  }\n                } else {\n                  const summaryParts: Array<{\n                    type: 'summary_text';\n                    text: string;\n                  }> = [];\n\n                  if (part.text.length > 0) {\n                    summaryParts.push({\n                      type: 'summary_text',\n                      text: part.text,\n                    });\n                  } else if (reasoningMessage !== undefined) {\n                    warnings.push({\n                      type: 'other',\n                      message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n                    });\n                  }\n\n                  if (reasoningMessage === undefined) {\n                    reasoningMessages[reasoningId] = {\n                      type: 'reasoning',\n                      id: reasoningId,\n                      encrypted_content:\n                        providerOptions?.reasoningEncryptedContent,\n                      summary: summaryParts,\n                    };\n                    input.push(reasoningMessages[reasoningId]);\n                  } else {\n                    reasoningMessage.summary.push(...summaryParts);\n\n                    // updated encrypted content to enable setting it in the last summary part:\n                    if (providerOptions?.reasoningEncryptedContent != null) {\n                      reasoningMessage.encrypted_content =\n                        providerOptions.reasoningEncryptedContent;\n                    }\n                  }\n                }\n              } else {\n                // No itemId — fall back to encrypted_content if available.\n                // The OpenAI Responses API accepts reasoning items without an\n                // id when encrypted_content is provided, enabling multi-turn\n                // reasoning even when server-side item persistence is not used\n                // or when itemId has been stripped from providerOptions.\n                const encryptedContent =\n                  providerOptions?.reasoningEncryptedContent;\n\n                if (encryptedContent != null) {\n                  const summaryParts: Array<{\n                    type: 'summary_text';\n                    text: string;\n                  }> = [];\n                  if (part.text.length > 0) {\n                    summaryParts.push({\n                      type: 'summary_text',\n                      text: part.text,\n                    });\n                  }\n                  input.push({\n                    type: 'reasoning',\n                    encrypted_content: encryptedContent,\n                    summary: summaryParts,\n                  });\n                } else {\n                  warnings.push({\n                    type: 'other',\n                    message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n                  });\n                }\n              }\n              break;\n            }\n          }\n        }\n\n        break;\n      }\n\n      case 'tool': {\n        for (const part of content) {\n          if (part.type === 'tool-approval-response') {\n            const approvalResponse =\n              part as LanguageModelV3ToolApprovalResponsePart;\n\n            if (processedApprovalIds.has(approvalResponse.approvalId)) {\n              continue;\n            }\n            processedApprovalIds.add(approvalResponse.approvalId);\n\n            if (store) {\n              input.push({\n                type: 'item_reference',\n                id: approvalResponse.approvalId,\n              });\n            }\n\n            input.push({\n              type: 'mcp_approval_response',\n              approval_request_id: approvalResponse.approvalId,\n              approve: approvalResponse.approved,\n            });\n            continue;\n          }\n\n          const output = part.output;\n\n          // Skip execution-denied with approvalId - already handled via tool-approval-response\n          if (output.type === 'execution-denied') {\n            const approvalId = (\n              output.providerOptions?.openai as { approvalId?: string }\n            )?.approvalId;\n\n            if (approvalId) {\n              continue;\n            }\n          }\n\n          const resolvedToolName = toolNameMapping.toProviderToolName(\n            part.toolName,\n          );\n\n          if (resolvedToolName === 'tool_search' && output.type === 'json') {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: toolSearchOutputSchema,\n            });\n\n            input.push({\n              type: 'tool_search_output',\n              execution: 'client',\n              call_id: part.toolCallId,\n              status: 'completed',\n              tools: parsedOutput.tools,\n            });\n            continue;\n          }\n\n          if (\n            hasLocalShellTool &&\n            resolvedToolName === 'local_shell' &&\n            output.type === 'json'\n          ) {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: localShellOutputSchema,\n            });\n\n            input.push({\n              type: 'local_shell_call_output',\n              call_id: part.toolCallId,\n              output: parsedOutput.output,\n            });\n            continue;\n          }\n\n          if (\n            hasShellTool &&\n            resolvedToolName === 'shell' &&\n            output.type === 'json'\n          ) {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: shellOutputSchema,\n            });\n\n            input.push({\n              type: 'shell_call_output',\n              call_id: part.toolCallId,\n              output: parsedOutput.output.map(item => ({\n                stdout: item.stdout,\n                stderr: item.stderr,\n                outcome:\n                  item.outcome.type === 'timeout'\n                    ? { type: 'timeout' as const }\n                    : {\n                        type: 'exit' as const,\n                        exit_code: item.outcome.exitCode,\n                      },\n              })),\n            });\n            continue;\n          }\n\n          if (\n            hasApplyPatchTool &&\n            part.toolName === 'apply_patch' &&\n            output.type === 'json'\n          ) {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: applyPatchOutputSchema,\n            });\n\n            input.push({\n              type: 'apply_patch_call_output',\n              call_id: part.toolCallId,\n              status: parsedOutput.status,\n              output: parsedOutput.output,\n            });\n            continue;\n          }\n\n          if (customProviderToolNames?.has(resolvedToolName)) {\n            let outputValue: OpenAIResponsesCustomToolCallOutput['output'];\n            switch (output.type) {\n              case 'text':\n              case 'error-text':\n                outputValue = output.value;\n                break;\n              case 'execution-denied':\n                outputValue = output.reason ?? 'Tool execution denied.';\n                break;\n              case 'json':\n              case 'error-json':\n                outputValue = JSON.stringify(output.value);\n                break;\n              case 'content':\n                outputValue = output.value\n                  .map(item => {\n                    switch (item.type) {\n                      case 'text':\n                        return { type: 'input_text' as const, text: item.text };\n                      case 'image-data':\n                        return {\n                          type: 'input_image' as const,\n                          image_url: `data:${item.mediaType};base64,${item.data}`,\n                          detail:\n                            item.providerOptions?.[providerOptionsName]\n                              ?.imageDetail,\n                        };\n                      case 'image-url':\n                        return {\n                          type: 'input_image' as const,\n                          image_url: item.url,\n                          detail:\n                            item.providerOptions?.[providerOptionsName]\n                              ?.imageDetail,\n                        };\n                      case 'file-data':\n                        return {\n                          type: 'input_file' as const,\n                          filename: item.filename ?? 'data',\n                          file_data: `data:${item.mediaType};base64,${item.data}`,\n                        };\n                      case 'file-url':\n                        return {\n                          type: 'input_file' as const,\n                          file_url: item.url,\n                        };\n                      default:\n                        warnings.push({\n                          type: 'other',\n                          message: `unsupported custom tool content part type: ${item.type}`,\n                        });\n                        return undefined;\n                    }\n                  })\n                  .filter(isNonNullable);\n                break;\n              default:\n                outputValue = '';\n            }\n            input.push({\n              type: 'custom_tool_call_output',\n              call_id: part.toolCallId,\n              output: outputValue,\n            } satisfies OpenAIResponsesCustomToolCallOutput);\n            continue;\n          }\n\n          let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n          switch (output.type) {\n            case 'text':\n            case 'error-text':\n              contentValue = output.value;\n              break;\n            case 'execution-denied':\n              contentValue = output.reason ?? 'Tool execution denied.';\n              break;\n            case 'json':\n            case 'error-json':\n              contentValue = JSON.stringify(output.value);\n              break;\n            case 'content':\n              contentValue = output.value\n                .map(item => {\n                  switch (item.type) {\n                    case 'text': {\n                      return { type: 'input_text' as const, text: item.text };\n                    }\n\n                    case 'image-data': {\n                      return {\n                        type: 'input_image' as const,\n                        image_url: `data:${item.mediaType};base64,${item.data}`,\n                        detail:\n                          item.providerOptions?.[providerOptionsName]\n                            ?.imageDetail,\n                      };\n                    }\n\n                    case 'image-url': {\n                      return {\n                        type: 'input_image' as const,\n                        image_url: item.url,\n                        detail:\n                          item.providerOptions?.[providerOptionsName]\n                            ?.imageDetail,\n                      };\n                    }\n\n                    case 'file-data': {\n                      return {\n                        type: 'input_file' as const,\n                        filename: item.filename ?? 'data',\n                        file_data: `data:${item.mediaType};base64,${item.data}`,\n                      };\n                    }\n\n                    case 'file-url': {\n                      return {\n                        type: 'input_file' as const,\n                        file_url: item.url,\n                      };\n                    }\n\n                    default: {\n                      warnings.push({\n                        type: 'other',\n                        message: `unsupported tool content part type: ${item.type}`,\n                      });\n                      return undefined;\n                    }\n                  }\n                })\n                .filter(isNonNullable);\n              break;\n          }\n\n          input.push({\n            type: 'function_call_output',\n            call_id: part.toolCallId,\n            output: contentValue,\n          });\n        }\n\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  // when store is false, remove reasoning parts without encrypted content\n  if (\n    !store &&\n    input.some(\n      item =>\n        'type' in item &&\n        item.type === 'reasoning' &&\n        item.encrypted_content == null,\n    )\n  ) {\n    warnings.push({\n      type: 'other',\n      message:\n        'Reasoning parts without encrypted content are not supported when store is false. Skipping reasoning parts.',\n    });\n    input = input.filter(\n      item =>\n        !('type' in item) ||\n        item.type !== 'reasoning' ||\n        item.encrypted_content != null,\n    );\n  }\n\n  return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n  itemId: z.string().nullish(),\n  reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n  typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import type { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n  finishReason,\n  hasFunctionCall,\n}: {\n  finishReason: string | null | undefined;\n  // flag that checks if there have been client-side tool calls (not executed by openai)\n  hasFunctionCall: boolean;\n}): LanguageModelV3FinishReason['unified'] {\n  switch (finishReason) {\n    case undefined:\n    case null:\n      return hasFunctionCall ? 'tool-calls' : 'stop';\n    case 'max_output_tokens':\n      return 'length';\n    case 'content_filter':\n      return 'content-filter';\n    default:\n      return hasFunctionCall ? 'tool-calls' : 'other';\n  }\n}\n","import type { JSONObject, JSONSchema7, JSONValue } from '@ai-sdk/provider';\nimport {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>\n  z.union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.null(),\n    z.array(jsonValueSchema),\n    z.record(z.string(), jsonValueSchema.optional()),\n  ]),\n);\n\nexport type OpenAIResponsesInput = Array<OpenAIResponsesInputItem>;\n\nexport type OpenAIResponsesInputItem =\n  | OpenAIResponsesSystemMessage\n  | OpenAIResponsesUserMessage\n  | OpenAIResponsesAssistantMessage\n  | OpenAIResponsesFunctionCall\n  | OpenAIResponsesFunctionCallOutput\n  | OpenAIResponsesCustomToolCall\n  | OpenAIResponsesCustomToolCallOutput\n  | OpenAIResponsesMcpApprovalResponse\n  | OpenAIResponsesComputerCall\n  | OpenAIResponsesLocalShellCall\n  | OpenAIResponsesLocalShellCallOutput\n  | OpenAIResponsesShellCall\n  | OpenAIResponsesShellCallOutput\n  | OpenAIResponsesApplyPatchCall\n  | OpenAIResponsesApplyPatchCallOutput\n  | OpenAIResponsesToolSearchCall\n  | OpenAIResponsesToolSearchOutput\n  | OpenAIResponsesReasoning\n  | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n  | 'web_search_call.action.sources'\n  | 'code_interpreter_call.outputs'\n  | 'computer_call_output.output.image_url'\n  | 'file_search_call.results'\n  | 'message.input_image.image_url'\n  | 'message.output_text.logprobs'\n  | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n  | Array<OpenAIResponsesIncludeValue>\n  | undefined\n  | null;\n\nexport type OpenAIResponsesApplyPatchOperationDiffDeltaChunk = {\n  type: 'response.apply_patch_call_operation_diff.delta';\n  item_id: string;\n  output_index: number;\n  delta: string;\n  obfuscation?: string | null;\n};\n\nexport type OpenAIResponsesApplyPatchOperationDiffDoneChunk = {\n  type: 'response.apply_patch_call_operation_diff.done';\n  item_id: string;\n  output_index: number;\n  diff: string;\n};\n\nexport type OpenAIResponsesSystemMessage = {\n  role: 'system' | 'developer';\n  content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n  role: 'user';\n  content: Array<\n    | { type: 'input_text'; text: string }\n    | { type: 'input_image'; image_url: string }\n    | { type: 'input_image'; file_id: string }\n    | { type: 'input_file'; file_url: string }\n    | { type: 'input_file'; filename: string; file_data: string }\n    | { type: 'input_file'; file_id: string }\n  >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n  role: 'assistant';\n  content: Array<{ type: 'output_text'; text: string }>;\n  id?: string;\n  phase?: 'commentary' | 'final_answer' | null;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n  type: 'function_call';\n  call_id: string;\n  name: string;\n  arguments: string;\n  id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n  type: 'function_call_output';\n  call_id: string;\n  output:\n    | string\n    | Array<\n        | { type: 'input_text'; text: string }\n        | { type: 'input_image'; image_url: string }\n        | { type: 'input_file'; filename: string; file_data: string }\n        | { type: 'input_file'; file_url: string }\n      >;\n};\n\nexport type OpenAIResponsesCustomToolCall = {\n  type: 'custom_tool_call';\n  id?: string;\n  call_id: string;\n  name: string;\n  input: string;\n};\n\nexport type OpenAIResponsesCustomToolCallOutput = {\n  type: 'custom_tool_call_output';\n  call_id: string;\n  output: OpenAIResponsesFunctionCallOutput['output'];\n};\n\nexport type OpenAIResponsesMcpApprovalResponse = {\n  type: 'mcp_approval_response';\n  approval_request_id: string;\n  approve: boolean;\n};\n\nexport type OpenAIResponsesComputerCall = {\n  type: 'computer_call';\n  id: string;\n  status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n  type: 'local_shell_call';\n  id: string;\n  call_id: string;\n  action: {\n    type: 'exec';\n    command: string[];\n    timeout_ms?: number;\n    user?: string;\n    working_directory?: string;\n    env?: Record<string, string>;\n  };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n  type: 'local_shell_call_output';\n  call_id: string;\n  output: string;\n};\n\n/**\n * Official OpenAI API Specifications: https://platform.openai.com/docs/api-reference/responses/object#responses-object-output-shell_tool_call\n */\nexport type OpenAIResponsesShellCall = {\n  type: 'shell_call';\n  id: string;\n  call_id: string;\n  status: 'in_progress' | 'completed' | 'incomplete';\n  action: {\n    commands: string[];\n    timeout_ms?: number;\n    max_output_length?: number;\n  };\n};\n\nexport type OpenAIResponsesShellCallOutput = {\n  type: 'shell_call_output';\n  id?: string;\n  call_id: string;\n  status?: 'in_progress' | 'completed' | 'incomplete';\n  max_output_length?: number | null;\n  output: Array<{\n    stdout: string;\n    stderr: string;\n    outcome: { type: 'timeout' } | { type: 'exit'; exit_code: number };\n  }>;\n};\n\nexport type OpenAIResponsesApplyPatchCall = {\n  type: 'apply_patch_call';\n  id?: string;\n  call_id: string;\n  status: 'in_progress' | 'completed';\n  operation:\n    | {\n        type: 'create_file';\n        path: string;\n        diff: string;\n      }\n    | {\n        type: 'delete_file';\n        path: string;\n      }\n    | {\n        type: 'update_file';\n        path: string;\n        diff: string;\n      };\n};\n\nexport type OpenAIResponsesApplyPatchCallOutput = {\n  type: 'apply_patch_call_output';\n  call_id: string;\n  status: 'completed' | 'failed';\n  output?: string;\n};\n\nexport type OpenAIResponsesToolSearchCall = {\n  type: 'tool_search_call';\n  id: string;\n  execution: 'server' | 'client';\n  call_id: string | null;\n  status: 'in_progress' | 'completed' | 'incomplete';\n  arguments: unknown;\n};\n\nexport type OpenAIResponsesToolSearchOutput = {\n  type: 'tool_search_output';\n  id?: string;\n  execution: 'server' | 'client';\n  call_id: string | null;\n  status: 'in_progress' | 'completed' | 'incomplete';\n  tools: Array<JSONObject>;\n};\n\nexport type OpenAIResponsesItemReference = {\n  type: 'item_reference';\n  id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n  /**\n   * The key to compare against the value.\n   */\n  key: string;\n\n  /**\n   * Specifies the comparison operator: eq, ne, gt, gte, lt, lte, in, nin.\n   */\n  type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin';\n\n  /**\n   * The value to compare against the attribute key; supports string, number, boolean, or array of string types.\n   */\n  value: string | number | boolean | string[];\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n  /**\n   * Type of operation: and or or.\n   */\n  type: 'and' | 'or';\n\n  /**\n   * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n   */\n  filters: Array<\n    | OpenAIResponsesFileSearchToolComparisonFilter\n    | OpenAIResponsesFileSearchToolCompoundFilter\n  >;\n};\n\nexport type OpenAIResponsesTool =\n  | {\n      type: 'function';\n      name: string;\n      description: string | undefined;\n      parameters: JSONSchema7;\n      strict?: boolean;\n      defer_loading?: boolean;\n    }\n  | {\n      type: 'apply_patch';\n    }\n  | {\n      type: 'web_search';\n      external_web_access: boolean | undefined;\n      filters: { allowed_domains: string[] | undefined } | undefined;\n      search_context_size: 'low' | 'medium' | 'high' | undefined;\n      user_location:\n        | {\n            type: 'approximate';\n            city?: string;\n            country?: string;\n            region?: string;\n            timezone?: string;\n          }\n        | undefined;\n    }\n  | {\n      type: 'web_search_preview';\n      search_context_size: 'low' | 'medium' | 'high' | undefined;\n      user_location:\n        | {\n            type: 'approximate';\n            city?: string;\n            country?: string;\n            region?: string;\n            timezone?: string;\n          }\n        | undefined;\n    }\n  | {\n      type: 'code_interpreter';\n      container: string | { type: 'auto'; file_ids: string[] | undefined };\n    }\n  | {\n      type: 'file_search';\n      vector_store_ids: string[];\n      max_num_results: number | undefined;\n      ranking_options:\n        | { ranker?: string; score_threshold?: number }\n        | undefined;\n      filters:\n        | OpenAIResponsesFileSearchToolComparisonFilter\n        | OpenAIResponsesFileSearchToolCompoundFilter\n        | undefined;\n    }\n  | {\n      type: 'image_generation';\n      background: 'auto' | 'opaque' | 'transparent' | undefined;\n      input_fidelity: 'low' | 'high' | undefined;\n      input_image_mask:\n        | {\n            file_id: string | undefined;\n            image_url: string | undefined;\n          }\n        | undefined;\n      model: string | undefined;\n      moderation: 'auto' | undefined;\n      output_compression: number | undefined;\n      output_format: 'png' | 'jpeg' | 'webp' | undefined;\n      partial_images: number | undefined;\n      quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n      size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n    }\n\n  /**\n   * Official OpenAI API Specifications: https://platform.openai.com/docs/api-reference/responses/create#responses_create-tools-mcp_tool\n   */\n  | {\n      type: 'mcp';\n      server_label: string;\n      allowed_tools:\n        | string[]\n        | {\n            read_only?: boolean;\n            tool_names?: string[];\n          }\n        | undefined;\n      authorization: string | undefined;\n      connector_id: string | undefined;\n      headers: Record<string, string> | undefined;\n      require_approval:\n        | 'always'\n        | 'never'\n        | {\n            never?: { tool_names?: string[] };\n          }\n        | undefined;\n      server_description: string | undefined;\n      server_url: string | undefined;\n    }\n  | {\n      type: 'custom';\n      name: string;\n      description?: string;\n      format?:\n        | {\n            type: 'grammar';\n            syntax: 'regex' | 'lark';\n            definition: string;\n          }\n        | {\n            type: 'text';\n          };\n    }\n  | {\n      type: 'local_shell';\n    }\n  | {\n      type: 'shell';\n      environment?:\n        | {\n            type: 'container_auto';\n            file_ids?: string[];\n            memory_limit?: '1g' | '4g' | '16g' | '64g';\n            network_policy?:\n              | { type: 'disabled' }\n              | {\n                  type: 'allowlist';\n                  allowed_domains: string[];\n                  domain_secrets?: Array<{\n                    domain: string;\n                    name: string;\n                    value: string;\n                  }>;\n                };\n            skills?: Array<\n              | {\n                  type: 'skill_reference';\n                  skill_id: string;\n                  version?: string;\n                }\n              | {\n                  type: 'inline';\n                  name: string;\n                  description: string;\n                  source: {\n                    type: 'base64';\n                    media_type: 'application/zip';\n                    data: string;\n                  };\n                }\n            >;\n          }\n        | {\n            type: 'container_reference';\n            container_id: string;\n          }\n        | {\n            type: 'local';\n            skills?: Array<{\n              name: string;\n              description: string;\n              path: string;\n            }>;\n          };\n    }\n  | {\n      type: 'tool_search';\n      execution?: 'server' | 'client';\n      description?: string;\n      parameters?: Record<string, unknown>;\n    };\n\nexport type OpenAIResponsesReasoning = {\n  type: 'reasoning';\n  id?: string;\n  encrypted_content?: string | null;\n  summary: Array<{\n    type: 'summary_text';\n    text: string;\n  }>;\n};\n\nexport const openaiResponsesChunkSchema = lazySchema(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        type: z.literal('response.output_text.delta'),\n        item_id: z.string(),\n        delta: z.string(),\n        logprobs: z\n          .array(\n            z.object({\n              token: z.string(),\n              logprob: z.number(),\n              top_logprobs: z.array(\n                z.object({\n                  token: z.string(),\n                  logprob: z.number(),\n                }),\n              ),\n            }),\n          )\n          .nullish(),\n      }),\n      z.object({\n        type: z.enum(['response.completed', 'response.incomplete']),\n        response: z.object({\n          incomplete_details: z.object({ reason: z.string() }).nullish(),\n          usage: z.object({\n            input_tokens: z.number(),\n            input_tokens_details: z\n              .object({ cached_tokens: z.number().nullish() })\n              .nullish(),\n            output_tokens: z.number(),\n            output_tokens_details: z\n              .object({ reasoning_tokens: z.number().nullish() })\n              .nullish(),\n          }),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.failed'),\n        response: z.object({\n          error: z\n            .object({\n              code: z.string().nullish(),\n              message: z.string(),\n            })\n            .nullish(),\n          incomplete_details: z.object({ reason: z.string() }).nullish(),\n          usage: z\n            .object({\n              input_tokens: z.number(),\n              input_tokens_details: z\n                .object({ cached_tokens: z.number().nullish() })\n                .nullish(),\n              output_tokens: z.number(),\n              output_tokens_details: z\n                .object({ reasoning_tokens: z.number().nullish() })\n                .nullish(),\n            })\n            .nullish(),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.created'),\n        response: z.object({\n          id: z.string(),\n          created_at: z.number(),\n          model: z.string(),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.output_item.added'),\n        output_index: z.number(),\n        item: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('message'),\n            id: z.string(),\n            phase: z.enum(['commentary', 'final_answer']).nullish(),\n          }),\n          z.object({\n            type: z.literal('reasoning'),\n            id: z.string(),\n            encrypted_content: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('function_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n            namespace: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('web_search_call'),\n            id: z.string(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('computer_call'),\n            id: z.string(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('file_search_call'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('image_generation_call'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('code_interpreter_call'),\n            id: z.string(),\n            container_id: z.string(),\n            code: z.string().nullable(),\n            outputs: z\n              .array(\n                z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('logs'), logs: z.string() }),\n                  z.object({ type: z.literal('image'), url: z.string() }),\n                ]),\n              )\n              .nullable(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_call'),\n            id: z.string(),\n            status: z.string(),\n            approval_request_id: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('mcp_list_tools'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_approval_request'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('apply_patch_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed']),\n            operation: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('create_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n              z.object({\n                type: z.literal('delete_file'),\n                path: z.string(),\n              }),\n              z.object({\n                type: z.literal('update_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n            ]),\n          }),\n          z.object({\n            type: z.literal('custom_tool_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            input: z.string(),\n          }),\n          z.object({\n            type: z.literal('shell_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            action: z.object({\n              commands: z.array(z.string()),\n            }),\n          }),\n          z.object({\n            type: z.literal('shell_call_output'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            output: z.array(\n              z.object({\n                stdout: z.string(),\n                stderr: z.string(),\n                outcome: z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('timeout') }),\n                  z.object({\n                    type: z.literal('exit'),\n                    exit_code: z.number(),\n                  }),\n                ]),\n              }),\n            ),\n          }),\n          z.object({\n            type: z.literal('tool_search_call'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            arguments: z.unknown(),\n          }),\n          z.object({\n            type: z.literal('tool_search_output'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            tools: z.array(z.record(z.string(), jsonValueSchema.optional())),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.output_item.done'),\n        output_index: z.number(),\n        item: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('message'),\n            id: z.string(),\n            phase: z.enum(['commentary', 'final_answer']).nullish(),\n          }),\n          z.object({\n            type: z.literal('reasoning'),\n            id: z.string(),\n            encrypted_content: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('function_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n            status: z.literal('completed'),\n            namespace: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('custom_tool_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            input: z.string(),\n            status: z.literal('completed'),\n          }),\n          z.object({\n            type: z.literal('code_interpreter_call'),\n            id: z.string(),\n            code: z.string().nullable(),\n            container_id: z.string(),\n            outputs: z\n              .array(\n                z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('logs'), logs: z.string() }),\n                  z.object({ type: z.literal('image'), url: z.string() }),\n                ]),\n              )\n              .nullable(),\n          }),\n          z.object({\n            type: z.literal('image_generation_call'),\n            id: z.string(),\n            result: z.string(),\n          }),\n          z.object({\n            type: z.literal('web_search_call'),\n            id: z.string(),\n            status: z.string(),\n            action: z\n              .discriminatedUnion('type', [\n                z.object({\n                  type: z.literal('search'),\n                  query: z.string().nullish(),\n                  sources: z\n                    .array(\n                      z.discriminatedUnion('type', [\n                        z.object({ type: z.literal('url'), url: z.string() }),\n                        z.object({ type: z.literal('api'), name: z.string() }),\n                      ]),\n                    )\n                    .nullish(),\n                }),\n                z.object({\n                  type: z.literal('open_page'),\n                  url: z.string().nullish(),\n                }),\n                z.object({\n                  type: z.literal('find_in_page'),\n                  url: z.string().nullish(),\n                  pattern: z.string().nullish(),\n                }),\n              ])\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('file_search_call'),\n            id: z.string(),\n            queries: z.array(z.string()),\n            results: z\n              .array(\n                z.object({\n                  attributes: z.record(\n                    z.string(),\n                    z.union([z.string(), z.number(), z.boolean()]),\n                  ),\n                  file_id: z.string(),\n                  filename: z.string(),\n                  score: z.number(),\n                  text: z.string(),\n                }),\n              )\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('local_shell_call'),\n            id: z.string(),\n            call_id: z.string(),\n            action: z.object({\n              type: z.literal('exec'),\n              command: z.array(z.string()),\n              timeout_ms: z.number().optional(),\n              user: z.string().optional(),\n              working_directory: z.string().optional(),\n              env: z.record(z.string(), z.string()).optional(),\n            }),\n          }),\n          z.object({\n            type: z.literal('computer_call'),\n            id: z.string(),\n            status: z.literal('completed'),\n          }),\n          z.object({\n            type: z.literal('mcp_call'),\n            id: z.string(),\n            status: z.string(),\n            arguments: z.string(),\n            name: z.string(),\n            server_label: z.string(),\n            output: z.string().nullish(),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .nullish(),\n            approval_request_id: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('mcp_list_tools'),\n            id: z.string(),\n            server_label: z.string(),\n            tools: z.array(\n              z.object({\n                name: z.string(),\n                description: z.string().optional(),\n                input_schema: z.any(),\n                annotations: z.record(z.string(), z.unknown()).optional(),\n              }),\n            ),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('mcp_approval_request'),\n            id: z.string(),\n            server_label: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n            approval_request_id: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('apply_patch_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed']),\n            operation: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('create_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n              z.object({\n                type: z.literal('delete_file'),\n                path: z.string(),\n              }),\n              z.object({\n                type: z.literal('update_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n            ]),\n          }),\n          z.object({\n            type: z.literal('shell_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            action: z.object({\n              commands: z.array(z.string()),\n            }),\n          }),\n          z.object({\n            type: z.literal('shell_call_output'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            output: z.array(\n              z.object({\n                stdout: z.string(),\n                stderr: z.string(),\n                outcome: z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('timeout') }),\n                  z.object({\n                    type: z.literal('exit'),\n                    exit_code: z.number(),\n                  }),\n                ]),\n              }),\n            ),\n          }),\n          z.object({\n            type: z.literal('tool_search_call'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            arguments: z.unknown(),\n          }),\n          z.object({\n            type: z.literal('tool_search_output'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            tools: z.array(z.record(z.string(), jsonValueSchema.optional())),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.function_call_arguments.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.custom_tool_call_input.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.image_generation_call.partial_image'),\n        item_id: z.string(),\n        output_index: z.number(),\n        partial_image_b64: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.code_interpreter_call_code.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.code_interpreter_call_code.done'),\n        item_id: z.string(),\n        output_index: z.number(),\n        code: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.output_text.annotation.added'),\n        annotation: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('url_citation'),\n            start_index: z.number(),\n            end_index: z.number(),\n            url: z.string(),\n            title: z.string(),\n          }),\n          z.object({\n            type: z.literal('file_citation'),\n            file_id: z.string(),\n            filename: z.string(),\n            index: z.number(),\n          }),\n          z.object({\n            type: z.literal('container_file_citation'),\n            container_id: z.string(),\n            file_id: z.string(),\n            filename: z.string(),\n            start_index: z.number(),\n            end_index: z.number(),\n          }),\n          z.object({\n            type: z.literal('file_path'),\n            file_id: z.string(),\n            index: z.number(),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_part.added'),\n        item_id: z.string(),\n        summary_index: z.number(),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_text.delta'),\n        item_id: z.string(),\n        summary_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_part.done'),\n        item_id: z.string(),\n        summary_index: z.number(),\n      }),\n      z.object({\n        type: z.literal('response.apply_patch_call_operation_diff.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n        obfuscation: z.string().nullish(),\n      }),\n      z.object({\n        type: z.literal('response.apply_patch_call_operation_diff.done'),\n        item_id: z.string(),\n        output_index: z.number(),\n        diff: z.string(),\n      }),\n      z.object({\n        type: z.literal('error'),\n        sequence_number: z.number(),\n        error: z.object({\n          type: z.string(),\n          code: z.string(),\n          message: z.string(),\n          param: z.string().nullish(),\n        }),\n      }),\n      z\n        .object({ type: z.string() })\n        .loose()\n        .transform(value => ({\n          type: 'unknown_chunk' as const,\n          message: value.type,\n        })), // fallback for unknown chunks\n    ]),\n  ),\n);\n\nexport type OpenAIResponsesChunk = InferSchema<\n  typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n  (OpenAIResponsesChunk & {\n    type: 'response.output_text.delta';\n  })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n  ((OpenAIResponsesChunk & {\n    type: 'response.output_item.done';\n  })['item'] & {\n    type: 'web_search_call';\n  })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      id: z.string().optional(),\n      created_at: z.number().optional(),\n      error: z\n        .object({\n          message: z.string(),\n          type: z.string(),\n          param: z.string().nullish(),\n          code: z.string(),\n        })\n        .nullish(),\n      model: z.string().optional(),\n      output: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({\n              type: z.literal('message'),\n              role: z.literal('assistant'),\n              id: z.string(),\n              phase: z.enum(['commentary', 'final_answer']).nullish(),\n              content: z.array(\n                z.object({\n                  type: z.literal('output_text'),\n                  text: z.string(),\n                  logprobs: z\n                    .array(\n                      z.object({\n                        token: z.string(),\n                        logprob: z.number(),\n                        top_logprobs: z.array(\n                          z.object({\n                            token: z.string(),\n                            logprob: z.number(),\n                          }),\n                        ),\n                      }),\n                    )\n                    .nullish(),\n                  annotations: z.array(\n                    z.discriminatedUnion('type', [\n                      z.object({\n                        type: z.literal('url_citation'),\n                        start_index: z.number(),\n                        end_index: z.number(),\n                        url: z.string(),\n                        title: z.string(),\n                      }),\n                      z.object({\n                        type: z.literal('file_citation'),\n                        file_id: z.string(),\n                        filename: z.string(),\n                        index: z.number(),\n                      }),\n                      z.object({\n                        type: z.literal('container_file_citation'),\n                        container_id: z.string(),\n                        file_id: z.string(),\n                        filename: z.string(),\n                        start_index: z.number(),\n                        end_index: z.number(),\n                      }),\n                      z.object({\n                        type: z.literal('file_path'),\n                        file_id: z.string(),\n                        index: z.number(),\n                      }),\n                    ]),\n                  ),\n                }),\n              ),\n            }),\n            z.object({\n              type: z.literal('web_search_call'),\n              id: z.string(),\n              status: z.string(),\n              action: z\n                .discriminatedUnion('type', [\n                  z.object({\n                    type: z.literal('search'),\n                    query: z.string().nullish(),\n                    sources: z\n                      .array(\n                        z.discriminatedUnion('type', [\n                          z.object({ type: z.literal('url'), url: z.string() }),\n                          z.object({\n                            type: z.literal('api'),\n                            name: z.string(),\n                          }),\n                        ]),\n                      )\n                      .nullish(),\n                  }),\n                  z.object({\n                    type: z.literal('open_page'),\n                    url: z.string().nullish(),\n                  }),\n                  z.object({\n                    type: z.literal('find_in_page'),\n                    url: z.string().nullish(),\n                    pattern: z.string().nullish(),\n                  }),\n                ])\n                .nullish(),\n            }),\n            z.object({\n              type: z.literal('file_search_call'),\n              id: z.string(),\n              queries: z.array(z.string()),\n              results: z\n                .array(\n                  z.object({\n                    attributes: z.record(\n                      z.string(),\n                      z.union([z.string(), z.number(), z.boolean()]),\n                    ),\n                    file_id: z.string(),\n                    filename: z.string(),\n                    score: z.number(),\n                    text: z.string(),\n                  }),\n                )\n                .nullish(),\n            }),\n            z.object({\n              type: z.literal('code_interpreter_call'),\n              id: z.string(),\n              code: z.string().nullable(),\n              container_id: z.string(),\n              outputs: z\n                .array(\n                  z.discriminatedUnion('type', [\n                    z.object({ type: z.literal('logs'), logs: z.string() }),\n                    z.object({ type: z.literal('image'), url: z.string() }),\n                  ]),\n                )\n                .nullable(),\n            }),\n            z.object({\n              type: z.literal('image_generation_call'),\n              id: z.string(),\n              result: z.string(),\n            }),\n            z.object({\n              type: z.literal('local_shell_call'),\n              id: z.string(),\n              call_id: z.string(),\n              action: z.object({\n                type: z.literal('exec'),\n                command: z.array(z.string()),\n                timeout_ms: z.number().optional(),\n                user: z.string().optional(),\n                working_directory: z.string().optional(),\n                env: z.record(z.string(), z.string()).optional(),\n              }),\n            }),\n            z.object({\n              type: z.literal('function_call'),\n              call_id: z.string(),\n              name: z.string(),\n              arguments: z.string(),\n              id: z.string(),\n              namespace: z.string().nullish(),\n            }),\n            z.object({\n              type: z.literal('custom_tool_call'),\n              call_id: z.string(),\n              name: z.string(),\n              input: z.string(),\n              id: z.string(),\n            }),\n            z.object({\n              type: z.literal('computer_call'),\n              id: z.string(),\n              status: z.string().optional(),\n            }),\n            z.object({\n              type: z.literal('reasoning'),\n              id: z.string(),\n              encrypted_content: z.string().nullish(),\n              summary: z.array(\n                z.object({\n                  type: z.literal('summary_text'),\n                  text: z.string(),\n                }),\n              ),\n            }),\n            z.object({\n              type: z.literal('mcp_call'),\n              id: z.string(),\n              status: z.string(),\n              arguments: z.string(),\n              name: z.string(),\n              server_label: z.string(),\n              output: z.string().nullish(),\n              error: z\n                .union([\n                  z.string(),\n                  z\n                    .object({\n                      type: z.string().optional(),\n                      code: z.union([z.number(), z.string()]).optional(),\n                      message: z.string().optional(),\n                    })\n                    .loose(),\n                ])\n                .nullish(),\n              approval_request_id: z.string().nullish(),\n            }),\n            z.object({\n              type: z.literal('mcp_list_tools'),\n              id: z.string(),\n              server_label: z.string(),\n              tools: z.array(\n                z.object({\n                  name: z.string(),\n                  description: z.string().optional(),\n                  input_schema: z.any(),\n                  annotations: z.record(z.string(), z.unknown()).optional(),\n                }),\n              ),\n              error: z\n                .union([\n                  z.string(),\n                  z\n                    .object({\n                      type: z.string().optional(),\n                      code: z.union([z.number(), z.string()]).optional(),\n                      message: z.string().optional(),\n                    })\n                    .loose(),\n                ])\n                .optional(),\n            }),\n            z.object({\n              type: z.literal('mcp_approval_request'),\n              id: z.string(),\n              server_label: z.string(),\n              name: z.string(),\n              arguments: z.string(),\n              approval_request_id: z.string().optional(),\n            }),\n            z.object({\n              type: z.literal('apply_patch_call'),\n              id: z.string(),\n              call_id: z.string(),\n              status: z.enum(['in_progress', 'completed']),\n              operation: z.discriminatedUnion('type', [\n                z.object({\n                  type: z.literal('create_file'),\n                  path: z.string(),\n                  diff: z.string(),\n                }),\n                z.object({\n                  type: z.literal('delete_file'),\n                  path: z.string(),\n                }),\n                z.object({\n                  type: z.literal('update_file'),\n                  path: z.string(),\n                  diff: z.string(),\n                }),\n              ]),\n            }),\n            z.object({\n              type: z.literal('shell_call'),\n              id: z.string(),\n              call_id: z.string(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              action: z.object({\n                commands: z.array(z.string()),\n              }),\n            }),\n            z.object({\n              type: z.literal('shell_call_output'),\n              id: z.string(),\n              call_id: z.string(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              output: z.array(\n                z.object({\n                  stdout: z.string(),\n                  stderr: z.string(),\n                  outcome: z.discriminatedUnion('type', [\n                    z.object({ type: z.literal('timeout') }),\n                    z.object({\n                      type: z.literal('exit'),\n                      exit_code: z.number(),\n                    }),\n                  ]),\n                }),\n              ),\n            }),\n            z.object({\n              type: z.literal('tool_search_call'),\n              id: z.string(),\n              execution: z.enum(['server', 'client']),\n              call_id: z.string().nullable(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              arguments: z.unknown(),\n            }),\n            z.object({\n              type: z.literal('tool_search_output'),\n              id: z.string(),\n              execution: z.enum(['server', 'client']),\n              call_id: z.string().nullable(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              tools: z.array(z.record(z.string(), jsonValueSchema.optional())),\n            }),\n          ]),\n        )\n        .optional(),\n      service_tier: z.string().nullish(),\n      incomplete_details: z.object({ reason: z.string() }).nullish(),\n      usage: z\n        .object({\n          input_tokens: z.number(),\n          input_tokens_details: z\n            .object({ cached_tokens: z.number().nullish() })\n            .nullish(),\n          output_tokens: z.number(),\n          output_tokens_details: z\n            .object({ reasoning_tokens: z.number().nullish() })\n            .nullish(),\n        })\n        .optional(),\n    }),\n  ),\n);\n","import {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n  'o1',\n  'o1-2024-12-17',\n  'o3',\n  'o3-2025-04-16',\n  'o3-mini',\n  'o3-mini-2025-01-31',\n  'o4-mini',\n  'o4-mini-2025-04-16',\n  'gpt-5',\n  'gpt-5-2025-08-07',\n  'gpt-5-codex',\n  'gpt-5-mini',\n  'gpt-5-mini-2025-08-07',\n  'gpt-5-nano',\n  'gpt-5-nano-2025-08-07',\n  'gpt-5-pro',\n  'gpt-5-pro-2025-10-06',\n  'gpt-5.1',\n  'gpt-5.1-chat-latest',\n  'gpt-5.1-codex-mini',\n  'gpt-5.1-codex',\n  'gpt-5.1-codex-max',\n  'gpt-5.2',\n  'gpt-5.2-chat-latest',\n  'gpt-5.2-pro',\n  'gpt-5.2-codex',\n  'gpt-5.3-chat-latest',\n  'gpt-5.3-codex',\n  'gpt-5.4',\n  'gpt-5.4-2026-03-05',\n  'gpt-5.4-mini',\n  'gpt-5.4-mini-2026-03-17',\n  'gpt-5.4-nano',\n  'gpt-5.4-nano-2026-03-17',\n  'gpt-5.4-pro',\n  'gpt-5.4-pro-2026-03-05',\n  'gpt-5.5',\n  'gpt-5.5-2026-04-23',\n] as const;\n\nexport const openaiResponsesModelIds = [\n  'gpt-4.1',\n  'gpt-4.1-2025-04-14',\n  'gpt-4.1-mini',\n  'gpt-4.1-mini-2025-04-14',\n  'gpt-4.1-nano',\n  'gpt-4.1-nano-2025-04-14',\n  'gpt-4o',\n  'gpt-4o-2024-05-13',\n  'gpt-4o-2024-08-06',\n  'gpt-4o-2024-11-20',\n  'gpt-4o-audio-preview',\n  'gpt-4o-audio-preview-2024-12-17',\n  'gpt-4o-search-preview',\n  'gpt-4o-search-preview-2025-03-11',\n  'gpt-4o-mini-search-preview',\n  'gpt-4o-mini-search-preview-2025-03-11',\n  'gpt-4o-mini',\n  'gpt-4o-mini-2024-07-18',\n  'gpt-3.5-turbo-0125',\n  'gpt-3.5-turbo',\n  'gpt-3.5-turbo-1106',\n  'gpt-5-chat-latest',\n  ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n  | 'gpt-3.5-turbo-0125'\n  | 'gpt-3.5-turbo-1106'\n  | 'gpt-3.5-turbo'\n  | 'gpt-4.1-2025-04-14'\n  | 'gpt-4.1-mini-2025-04-14'\n  | 'gpt-4.1-mini'\n  | 'gpt-4.1-nano-2025-04-14'\n  | 'gpt-4.1-nano'\n  | 'gpt-4.1'\n  | 'gpt-4o-2024-05-13'\n  | 'gpt-4o-2024-08-06'\n  | 'gpt-4o-2024-11-20'\n  | 'gpt-4o-mini-2024-07-18'\n  | 'gpt-4o-mini'\n  | 'gpt-4o'\n  | 'gpt-5.1'\n  | 'gpt-5.1-2025-11-13'\n  | 'gpt-5.1-chat-latest'\n  | 'gpt-5.1-codex-mini'\n  | 'gpt-5.1-codex'\n  | 'gpt-5.1-codex-max'\n  | 'gpt-5.2'\n  | 'gpt-5.2-2025-12-11'\n  | 'gpt-5.2-chat-latest'\n  | 'gpt-5.2-pro'\n  | 'gpt-5.2-pro-2025-12-11'\n  | 'gpt-5.2-codex'\n  | 'gpt-5.3-chat-latest'\n  | 'gpt-5.3-codex'\n  | 'gpt-5.4'\n  | 'gpt-5.4-2026-03-05'\n  | 'gpt-5.4-mini'\n  | 'gpt-5.4-mini-2026-03-17'\n  | 'gpt-5.4-nano'\n  | 'gpt-5.4-nano-2026-03-17'\n  | 'gpt-5.4-pro'\n  | 'gpt-5.4-pro-2026-03-05'\n  | 'gpt-5.5'\n  | 'gpt-5.5-2026-04-23'\n  | 'gpt-5-2025-08-07'\n  | 'gpt-5-chat-latest'\n  | 'gpt-5-codex'\n  | 'gpt-5-mini-2025-08-07'\n  | 'gpt-5-mini'\n  | 'gpt-5-nano-2025-08-07'\n  | 'gpt-5-nano'\n  | 'gpt-5-pro-2025-10-06'\n  | 'gpt-5-pro'\n  | 'gpt-5'\n  | 'o1-2024-12-17'\n  | 'o1'\n  | 'o3-2025-04-16'\n  | 'o3-mini-2025-01-31'\n  | 'o3-mini'\n  | 'o3'\n  | 'o4-mini'\n  | 'o4-mini-2025-04-16'\n  | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiLanguageModelResponsesOptionsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * The ID of the OpenAI Conversation to continue.\n       * You must create a conversation first via the OpenAI API.\n       * Cannot be used in conjunction with `previousResponseId`.\n       * Defaults to `undefined`.\n       * @see https://platform.openai.com/docs/api-reference/conversations/create\n       */\n      conversation: z.string().nullish(),\n\n      /**\n       * The set of extra fields to include in the response (advanced, usually not needed).\n       * Example values: 'reasoning.encrypted_content', 'file_search_call.results', 'message.output_text.logprobs'.\n       */\n      include: z\n        .array(\n          z.enum([\n            'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n            'file_search_call.results',\n            'message.output_text.logprobs',\n          ]),\n        )\n        .nullish(),\n\n      /**\n       * Instructions for the model.\n       * They can be used to change the system or developer message when continuing a conversation using the `previousResponseId` option.\n       * Defaults to `undefined`.\n       */\n      instructions: z.string().nullish(),\n\n      /**\n       * Return the log probabilities of the tokens. Including logprobs will increase\n       * the response size and can slow down response times. However, it can\n       * be useful to better understand how the model is behaving.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       *\n       * @see https://platform.openai.com/docs/api-reference/responses/create\n       * @see https://cookbook.openai.com/examples/using_logprobs\n       */\n      logprobs: z\n        .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n        .optional(),\n\n      /**\n       * The maximum number of total calls to built-in tools that can be processed in a response.\n       * This maximum number applies across all built-in tool calls, not per individual tool.\n       * Any further attempts to call a tool by the model will be ignored.\n       */\n      maxToolCalls: z.number().nullish(),\n\n      /**\n       * Additional metadata to store with the generation.\n       */\n      metadata: z.any().nullish(),\n\n      /**\n       * Whether to use parallel tool calls. Defaults to `true`.\n       */\n      parallelToolCalls: z.boolean().nullish(),\n\n      /**\n       * The ID of the previous response. You can use it to continue a conversation.\n       * Defaults to `undefined`.\n       */\n      previousResponseId: z.string().nullish(),\n\n      /**\n       * Sets a cache key to tie this prompt to cached prefixes for better caching performance.\n       */\n      promptCacheKey: z.string().nullish(),\n\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Currently only available for 5.1 series models.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`. If you use\n       * `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored.\n       * Valid values: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'\n       *\n       * The 'none' type for `reasoningEffort` is only available for OpenAI's GPT-5.1\n       * models. Also, the 'xhigh' type for `reasoningEffort` is only available for\n       * OpenAI's GPT-5.1-Codex-Max model. Setting `reasoningEffort` to 'none' or 'xhigh' with unsupported models will result in\n       * an error.\n       */\n      reasoningEffort: z.string().nullish(),\n\n      /**\n       * Controls reasoning summary output from the model.\n       * Set to \"auto\" to automatically receive the richest level available,\n       * or \"detailed\" for comprehensive summaries.\n       */\n      reasoningSummary: z.string().nullish(),\n\n      /**\n       * The identifier for safety monitoring and tracking.\n       */\n      safetyIdentifier: z.string().nullish(),\n\n      /**\n       * Service tier for the request.\n       * Set to 'flex' for 50% cheaper processing at the cost of increased latency (available for o3, o4-mini, and gpt-5 models).\n       * Set to 'priority' for faster processing with Enterprise access (available for gpt-4, gpt-5, gpt-5-mini, o3, o4-mini; gpt-5-nano is not supported).\n       *\n       * Defaults to 'auto'.\n       */\n      serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n\n      /**\n       * Whether to store the generation. Defaults to `true`.\n       */\n      store: z.boolean().nullish(),\n\n      /**\n       * Whether to use strict JSON schema validation.\n       * Defaults to `true`.\n       */\n      strictJsonSchema: z.boolean().nullish(),\n\n      /**\n       * Controls the verbosity of the model's responses. Lower values ('low') will result\n       * in more concise responses, while higher values ('high') will result in more verbose responses.\n       * Valid values: 'low', 'medium', 'high'.\n       */\n      textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n\n      /**\n       * Controls output truncation. 'auto' (default) performs truncation automatically;\n       * 'disabled' turns truncation off.\n       */\n      truncation: z.enum(['auto', 'disabled']).nullish(),\n\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse.\n       * Defaults to `undefined`.\n       * @see https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids\n       */\n      user: z.string().nullish(),\n\n      /**\n       * Override the system message mode for this model.\n       * - 'system': Use the 'system' role for system messages (default for most models)\n       * - 'developer': Use the 'developer' role for system messages (used by reasoning models)\n       * - 'remove': Remove system messages entirely\n       *\n       * If not specified, the mode is automatically determined based on the model.\n       */\n      systemMessageMode: z.enum(['system', 'developer', 'remove']).optional(),\n\n      /**\n       * Force treating this model as a reasoning model.\n       *\n       * This is useful for \"stealth\" reasoning models (e.g. via a custom baseURL)\n       * where the model ID is not recognized by the SDK's allowlist.\n       *\n       * When enabled, the SDK applies reasoning-model parameter compatibility rules\n       * and defaults `systemMessageMode` to `developer` unless overridden.\n       */\n      forceReasoning: z.boolean().optional(),\n\n      /**\n       * Restrict the callable tools to a subset while keeping the full tools\n       * list intact, so prompt caching is preserved across requests with\n       * different allowlists.\n       *\n       * When set, this overrides the request-level `toolChoice` and emits\n       * `tool_choice: { type: \"allowed_tools\", mode, tools }` on the wire.\n       *\n       * @see https://developers.openai.com/api/reference/resources/responses/methods/create#(resource)%20responses%20%3E%20(model)%20tool_choice_allowed%20%3E%20(schema)\n       */\n      allowedTools: z\n        .object({\n          toolNames: z.array(z.string()).min(1),\n          mode: z.enum(['auto', 'required']).optional(),\n        })\n        .optional(),\n    }),\n  ),\n);\n\nexport type OpenAILanguageModelResponsesOptions = InferSchema<\n  typeof openaiLanguageModelResponsesOptionsSchema\n>;\n","import {\n  UnsupportedFunctionalityError,\n  type LanguageModelV3CallOptions,\n  type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport { validateTypes, type ToolNameMapping } from '@ai-sdk/provider-utils';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { customArgsSchema } from '../tool/custom';\nimport { mcpArgsSchema } from '../tool/mcp';\nimport { shellArgsSchema } from '../tool/shell';\nimport { toolSearchArgsSchema } from '../tool/tool-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport type { OpenAIResponsesTool } from './openai-responses-api';\n\nexport async function prepareResponsesTools({\n  tools,\n  toolChoice,\n  allowedTools,\n  toolNameMapping,\n  customProviderToolNames,\n}: {\n  tools: LanguageModelV3CallOptions['tools'];\n  toolChoice: LanguageModelV3CallOptions['toolChoice'] | undefined;\n  allowedTools?: {\n    toolNames: string[];\n    mode?: 'auto' | 'required';\n  };\n  toolNameMapping?: ToolNameMapping;\n  customProviderToolNames?: Set<string>;\n}): Promise<{\n  tools?: Array<OpenAIResponsesTool>;\n  toolChoice?:\n    | 'auto'\n    | 'none'\n    | 'required'\n    | { type: 'file_search' }\n    | { type: 'web_search_preview' }\n    | { type: 'web_search' }\n    | { type: 'function'; name: string }\n    | { type: 'custom'; name: string }\n    | { type: 'code_interpreter' }\n    | { type: 'mcp' }\n    | { type: 'image_generation' }\n    | { type: 'apply_patch' }\n    | {\n        type: 'allowed_tools';\n        mode: 'auto' | 'required';\n        tools: Array<{ type: 'function'; name: string }>;\n      };\n  toolWarnings: SharedV3Warning[];\n}> {\n  // when the tools array is empty, change it to undefined to prevent errors:\n  tools = tools?.length ? tools : undefined;\n\n  const toolWarnings: SharedV3Warning[] = [];\n\n  if (tools == null) {\n    return { tools: undefined, toolChoice: undefined, toolWarnings };\n  }\n\n  const openaiTools: Array<OpenAIResponsesTool> = [];\n  const resolvedCustomProviderToolNames =\n    customProviderToolNames ?? new Set<string>();\n\n  for (const tool of tools) {\n    switch (tool.type) {\n      case 'function': {\n        const openaiOptions = tool.providerOptions?.openai as\n          | { deferLoading?: boolean }\n          | undefined;\n        const deferLoading = openaiOptions?.deferLoading;\n\n        openaiTools.push({\n          type: 'function',\n          name: tool.name,\n          description: tool.description,\n          parameters: tool.inputSchema,\n          ...(tool.strict != null ? { strict: tool.strict } : {}),\n          ...(deferLoading != null ? { defer_loading: deferLoading } : {}),\n        });\n        break;\n      }\n      case 'provider': {\n        switch (tool.id) {\n          case 'openai.file_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: fileSearchArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'file_search',\n              vector_store_ids: args.vectorStoreIds,\n              max_num_results: args.maxNumResults,\n              ranking_options: args.ranking\n                ? {\n                    ranker: args.ranking.ranker,\n                    score_threshold: args.ranking.scoreThreshold,\n                  }\n                : undefined,\n              filters: args.filters,\n            });\n\n            break;\n          }\n          case 'openai.local_shell': {\n            openaiTools.push({\n              type: 'local_shell',\n            });\n            break;\n          }\n          case 'openai.shell': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: shellArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'shell',\n              ...(args.environment && {\n                environment: mapShellEnvironment(args.environment),\n              }),\n            });\n            break;\n          }\n          case 'openai.apply_patch': {\n            openaiTools.push({\n              type: 'apply_patch',\n            });\n            break;\n          }\n          case 'openai.web_search_preview': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearchPreviewArgsSchema,\n            });\n            openaiTools.push({\n              type: 'web_search_preview',\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation,\n            });\n            break;\n          }\n          case 'openai.web_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearchArgsSchema,\n            });\n            openaiTools.push({\n              type: 'web_search',\n              filters:\n                args.filters != null\n                  ? { allowed_domains: args.filters.allowedDomains }\n                  : undefined,\n              external_web_access: args.externalWebAccess,\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation,\n            });\n            break;\n          }\n          case 'openai.code_interpreter': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: codeInterpreterArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'code_interpreter',\n              container:\n                args.container == null\n                  ? { type: 'auto', file_ids: undefined }\n                  : typeof args.container === 'string'\n                    ? args.container\n                    : { type: 'auto', file_ids: args.container.fileIds },\n            });\n            break;\n          }\n          case 'openai.image_generation': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: imageGenerationArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'image_generation',\n              background: args.background,\n              input_fidelity: args.inputFidelity,\n              input_image_mask: args.inputImageMask\n                ? {\n                    file_id: args.inputImageMask.fileId,\n                    image_url: args.inputImageMask.imageUrl,\n                  }\n                : undefined,\n              model: args.model,\n              moderation: args.moderation,\n              partial_images: args.partialImages,\n              quality: args.quality,\n              output_compression: args.outputCompression,\n              output_format: args.outputFormat,\n              size: args.size,\n            });\n            break;\n          }\n          case 'openai.mcp': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: mcpArgsSchema,\n            });\n\n            const mapApprovalFilter = (filter: { toolNames?: string[] }) => ({\n              tool_names: filter.toolNames,\n            });\n\n            const requireApproval = args.requireApproval;\n            const requireApprovalParam:\n              | 'always'\n              | 'never'\n              | {\n                  never?: { tool_names?: string[] };\n                }\n              | undefined =\n              requireApproval == null\n                ? undefined\n                : typeof requireApproval === 'string'\n                  ? requireApproval\n                  : requireApproval.never != null\n                    ? { never: mapApprovalFilter(requireApproval.never) }\n                    : undefined;\n\n            openaiTools.push({\n              type: 'mcp',\n              server_label: args.serverLabel,\n              allowed_tools: Array.isArray(args.allowedTools)\n                ? args.allowedTools\n                : args.allowedTools\n                  ? {\n                      read_only: args.allowedTools.readOnly,\n                      tool_names: args.allowedTools.toolNames,\n                    }\n                  : undefined,\n              authorization: args.authorization,\n              connector_id: args.connectorId,\n              headers: args.headers,\n              require_approval: requireApprovalParam ?? 'never',\n              server_description: args.serverDescription,\n              server_url: args.serverUrl,\n            });\n\n            break;\n          }\n          case 'openai.custom': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: customArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'custom',\n              name: args.name,\n              description: args.description,\n              format: args.format,\n            });\n            resolvedCustomProviderToolNames.add(args.name);\n            break;\n          }\n          case 'openai.tool_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: toolSearchArgsSchema,\n            });\n            openaiTools.push({\n              type: 'tool_search',\n              ...(args.execution != null ? { execution: args.execution } : {}),\n              ...(args.description != null\n                ? { description: args.description }\n                : {}),\n              ...(args.parameters != null\n                ? { parameters: args.parameters }\n                : {}),\n            });\n            break;\n          }\n        }\n        break;\n      }\n      default:\n        toolWarnings.push({\n          type: 'unsupported',\n          feature: `function tool ${tool}`,\n        });\n        break;\n    }\n  }\n\n  if (allowedTools != null) {\n    return {\n      tools: openaiTools,\n      toolChoice: {\n        type: 'allowed_tools',\n        mode: allowedTools.mode ?? 'auto',\n        tools: allowedTools.toolNames.map(name => ({\n          type: 'function',\n          name: toolNameMapping?.toProviderToolName(name) ?? name,\n        })),\n      },\n      toolWarnings,\n    };\n  }\n\n  if (toolChoice == null) {\n    return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n  }\n\n  const type = toolChoice.type;\n\n  switch (type) {\n    case 'auto':\n    case 'none':\n    case 'required':\n      return { tools: openaiTools, toolChoice: type, toolWarnings };\n    case 'tool': {\n      const resolvedToolName =\n        toolNameMapping?.toProviderToolName(toolChoice.toolName) ??\n        toolChoice.toolName;\n\n      return {\n        tools: openaiTools,\n        toolChoice:\n          resolvedToolName === 'code_interpreter' ||\n          resolvedToolName === 'file_search' ||\n          resolvedToolName === 'image_generation' ||\n          resolvedToolName === 'web_search_preview' ||\n          resolvedToolName === 'web_search' ||\n          resolvedToolName === 'mcp' ||\n          resolvedToolName === 'apply_patch'\n            ? { type: resolvedToolName }\n            : resolvedCustomProviderToolNames.has(resolvedToolName)\n              ? { type: 'custom', name: resolvedToolName }\n              : { type: 'function', name: resolvedToolName },\n        toolWarnings,\n      };\n    }\n    default: {\n      const _exhaustiveCheck: never = type;\n      throw new UnsupportedFunctionalityError({\n        functionality: `tool choice type: ${_exhaustiveCheck}`,\n      });\n    }\n  }\n}\n\nfunction mapShellEnvironment(environment: {\n  type?: string;\n  [key: string]: unknown;\n}): NonNullable<\n  Extract<OpenAIResponsesTool, { type: 'shell' }>['environment']\n> {\n  if (environment.type === 'containerReference') {\n    const env = environment as {\n      type: 'containerReference';\n      containerId: string;\n    };\n    return {\n      type: 'container_reference',\n      container_id: env.containerId,\n    };\n  }\n\n  if (environment.type === 'containerAuto') {\n    const env = environment as {\n      type: 'containerAuto';\n      fileIds?: string[];\n      memoryLimit?: '1g' | '4g' | '16g' | '64g';\n      networkPolicy?: {\n        type: string;\n        allowedDomains?: string[];\n        domainSecrets?: Array<{\n          domain: string;\n          name: string;\n          value: string;\n        }>;\n      };\n      skills?: Array<{\n        type: string;\n        skillId?: string;\n        version?: string;\n        name?: string;\n        description?: string;\n        source?: { type: string; mediaType: string; data: string };\n      }>;\n    };\n\n    return {\n      type: 'container_auto',\n      file_ids: env.fileIds,\n      memory_limit: env.memoryLimit,\n      network_policy:\n        env.networkPolicy == null\n          ? undefined\n          : env.networkPolicy.type === 'disabled'\n            ? { type: 'disabled' as const }\n            : {\n                type: 'allowlist' as const,\n                allowed_domains: env.networkPolicy.allowedDomains!,\n                domain_secrets: env.networkPolicy.domainSecrets,\n              },\n      skills: mapShellSkills(env.skills),\n    };\n  }\n\n  const env = environment as {\n    type?: 'local';\n    skills?: Array<{\n      name: string;\n      description: string;\n      path: string;\n    }>;\n  };\n  return {\n    type: 'local',\n    skills: env.skills,\n  };\n}\n\nfunction mapShellSkills(\n  skills:\n    | Array<{\n        type: string;\n        skillId?: string;\n        version?: string;\n        name?: string;\n        description?: string;\n        source?: { type: string; mediaType: string; data: string };\n      }>\n    | undefined,\n) {\n  return skills?.map(skill =>\n    skill.type === 'skillReference'\n      ? {\n          type: 'skill_reference' as const,\n          skill_id: skill.skillId!,\n          version: skill.version,\n        }\n      : {\n          type: 'inline' as const,\n          name: skill.name!,\n          description: skill.description!,\n          source: {\n            type: 'base64' as const,\n            media_type: skill.source!.mediaType as 'application/zip',\n            data: skill.source!.data,\n          },\n        },\n  );\n}\n","import type { SpeechModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createBinaryResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport type { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n  openaiSpeechModelOptionsSchema,\n  type OpenAISpeechModelId,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAISpeechModelId,\n    private readonly config: OpenAISpeechModelConfig,\n  ) {}\n\n  private async getArgs({\n    text,\n    voice = 'alloy',\n    outputFormat = 'mp3',\n    speed,\n    instructions,\n    language,\n    providerOptions,\n  }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openAIOptions = await parseProviderOptions({\n      provider: 'openai',\n      providerOptions,\n      schema: openaiSpeechModelOptionsSchema,\n    });\n\n    // Create request body\n    const requestBody: Record<string, unknown> = {\n      model: this.modelId,\n      input: text,\n      voice,\n      response_format: 'mp3',\n      speed,\n      instructions,\n    };\n\n    if (outputFormat) {\n      if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n        requestBody.response_format = outputFormat;\n      } else {\n        warnings.push({\n          type: 'unsupported',\n          feature: 'outputFormat',\n          details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n        });\n      }\n    }\n\n    // Add provider-specific options\n    if (openAIOptions) {\n      const speechModelOptions: OpenAISpeechAPITypes = {};\n\n      for (const key in speechModelOptions) {\n        const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n        if (value !== undefined) {\n          requestBody[key] = value;\n        }\n      }\n    }\n\n    if (language) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'language',\n        details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n      });\n    }\n\n    return {\n      requestBody,\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: Parameters<SpeechModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const { requestBody, warnings } = await this.getArgs(options);\n\n    const {\n      value: audio,\n      responseHeaders,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/audio/speech',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: requestBody,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createBinaryResponseHandler(),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      audio,\n      warnings,\n      request: {\n        body: JSON.stringify(requestBody),\n      },\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n    };\n  }\n}\n","import {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n  | 'tts-1'\n  | 'tts-1-1106'\n  | 'tts-1-hd'\n  | 'tts-1-hd-1106'\n  | 'gpt-4o-mini-tts'\n  | 'gpt-4o-mini-tts-2025-03-20'\n  | 'gpt-4o-mini-tts-2025-12-15'\n  | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechModelOptionsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      instructions: z.string().nullish(),\n      speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n    }),\n  ),\n);\n\nexport type OpenAISpeechModelOptions = InferSchema<\n  typeof openaiSpeechModelOptionsSchema\n>;\n","import type {\n  TranscriptionModelV3,\n  TranscriptionModelV3CallOptions,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertBase64ToUint8Array,\n  createJsonResponseHandler,\n  mediaTypeToExtension,\n  parseProviderOptions,\n  postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n  openAITranscriptionModelOptions,\n  type OpenAITranscriptionModelId,\n  type OpenAITranscriptionModelOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n  TranscriptionModelV3CallOptions,\n  'providerOptions'\n> & {\n  providerOptions?: {\n    openai?: OpenAITranscriptionModelOptions;\n  };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n  afrikaans: 'af',\n  arabic: 'ar',\n  armenian: 'hy',\n  azerbaijani: 'az',\n  belarusian: 'be',\n  bosnian: 'bs',\n  bulgarian: 'bg',\n  catalan: 'ca',\n  chinese: 'zh',\n  croatian: 'hr',\n  czech: 'cs',\n  danish: 'da',\n  dutch: 'nl',\n  english: 'en',\n  estonian: 'et',\n  finnish: 'fi',\n  french: 'fr',\n  galician: 'gl',\n  german: 'de',\n  greek: 'el',\n  hebrew: 'he',\n  hindi: 'hi',\n  hungarian: 'hu',\n  icelandic: 'is',\n  indonesian: 'id',\n  italian: 'it',\n  japanese: 'ja',\n  kannada: 'kn',\n  kazakh: 'kk',\n  korean: 'ko',\n  latvian: 'lv',\n  lithuanian: 'lt',\n  macedonian: 'mk',\n  malay: 'ms',\n  marathi: 'mr',\n  maori: 'mi',\n  nepali: 'ne',\n  norwegian: 'no',\n  persian: 'fa',\n  polish: 'pl',\n  portuguese: 'pt',\n  romanian: 'ro',\n  russian: 'ru',\n  serbian: 'sr',\n  slovak: 'sk',\n  slovenian: 'sl',\n  spanish: 'es',\n  swahili: 'sw',\n  swedish: 'sv',\n  tagalog: 'tl',\n  tamil: 'ta',\n  thai: 'th',\n  turkish: 'tr',\n  ukrainian: 'uk',\n  urdu: 'ur',\n  vietnamese: 'vi',\n  welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAITranscriptionModelId,\n    private readonly config: OpenAITranscriptionModelConfig,\n  ) {}\n\n  private async getArgs({\n    audio,\n    mediaType,\n    providerOptions,\n  }: OpenAITranscriptionCallOptions) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openAIOptions = await parseProviderOptions({\n      provider: 'openai',\n      providerOptions,\n      schema: openAITranscriptionModelOptions,\n    });\n\n    // Create form data with base fields\n    const formData = new FormData();\n    const blob =\n      audio instanceof Uint8Array\n        ? new Blob([audio])\n        : new Blob([convertBase64ToUint8Array(audio)]);\n\n    formData.append('model', this.modelId);\n    const fileExtension = mediaTypeToExtension(mediaType);\n    formData.append(\n      'file',\n      new File([blob], 'audio', { type: mediaType }),\n      `audio.${fileExtension}`,\n    );\n\n    // Add provider-specific options\n    if (openAIOptions) {\n      const transcriptionModelOptions = {\n        include: openAIOptions.include,\n        language: openAIOptions.language,\n        prompt: openAIOptions.prompt,\n        // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n        // prefer verbose_json to get segments for models that support it\n        response_format: [\n          'gpt-4o-transcribe',\n          'gpt-4o-mini-transcribe',\n        ].includes(this.modelId)\n          ? 'json'\n          : 'verbose_json',\n        temperature: openAIOptions.temperature,\n        timestamp_granularities: openAIOptions.timestampGranularities,\n      };\n\n      for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n        if (value != null) {\n          if (Array.isArray(value)) {\n            for (const item of value) {\n              formData.append(`${key}[]`, String(item));\n            }\n          } else {\n            formData.append(key, String(value));\n          }\n        }\n      }\n    }\n\n    return {\n      formData,\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: OpenAITranscriptionCallOptions,\n  ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const { formData, warnings } = await this.getArgs(options);\n\n    const {\n      value: response,\n      responseHeaders,\n      rawValue: rawResponse,\n    } = await postFormDataToApi({\n      url: this.config.url({\n        path: '/audio/transcriptions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      formData,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiTranscriptionResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const language =\n      response.language != null && response.language in languageMap\n        ? languageMap[response.language as keyof typeof languageMap]\n        : undefined;\n\n    return {\n      text: response.text,\n      segments:\n        response.segments?.map(segment => ({\n          text: segment.text,\n          startSecond: segment.start,\n          endSecond: segment.end,\n        })) ??\n        response.words?.map(word => ({\n          text: word.word,\n          startSecond: word.start,\n          endSecond: word.end,\n        })) ??\n        [],\n      language,\n      durationInSeconds: response.duration ?? undefined,\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n    };\n  }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      text: z.string(),\n      language: z.string().nullish(),\n      duration: z.number().nullish(),\n      words: z\n        .array(\n          z.object({\n            word: z.string(),\n            start: z.number(),\n            end: z.number(),\n          }),\n        )\n        .nullish(),\n      segments: z\n        .array(\n          z.object({\n            id: z.number(),\n            seek: z.number(),\n            start: z.number(),\n            end: z.number(),\n            text: z.string(),\n            tokens: z.array(z.number()),\n            temperature: z.number(),\n            avg_logprob: z.number(),\n            compression_ratio: z.number(),\n            no_speech_prob: z.number(),\n          }),\n        )\n        .nullish(),\n    }),\n  ),\n);\n","import {\n  lazySchema,\n  zodSchema,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n  | 'whisper-1'\n  | 'gpt-4o-mini-transcribe'\n  | 'gpt-4o-mini-transcribe-2025-03-20'\n  | 'gpt-4o-mini-transcribe-2025-12-15'\n  | 'gpt-4o-transcribe'\n  | 'gpt-4o-transcribe-diarize'\n  | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionModelOptions = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * Additional information to include in the transcription response.\n       */\n\n      include: z.array(z.string()).optional(),\n\n      /**\n       * The language of the input audio in ISO-639-1 format.\n       */\n      language: z.string().optional(),\n\n      /**\n       * An optional text to guide the model's style or continue a previous audio segment.\n       */\n      prompt: z.string().optional(),\n\n      /**\n       * The sampling temperature, between 0 and 1.\n       * @default 0\n       */\n      temperature: z.number().min(0).max(1).default(0).optional(),\n\n      /**\n       * The timestamp granularities to populate for this transcription.\n       * @default ['segment']\n       */\n      timestampGranularities: z\n        .array(z.enum(['word', 'segment']))\n        .default(['segment'])\n        .optional(),\n    }),\n  ),\n);\n\nexport type OpenAITranscriptionModelOptions = InferSchema<\n  typeof openAITranscriptionModelOptions\n>;\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n"],"mappings":";AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;;;ACdP;AAAA,EACE;AAAA,OAUK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;;;ACtBP,SAAS,SAAS;AAClB,SAAS,sCAAsC;AAExC,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,OAAO,EAAE,OAAO;AAAA,IACd,SAAS,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,IAKlB,MAAM,EAAE,OAAO,EAAE,QAAQ;AAAA,IACzB,OAAO,EAAE,IAAI,EAAE,QAAQ;AAAA,IACvB,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ;AAAA,EAClD,CAAC;AACH,CAAC;AAIM,IAAM,8BAA8B,+BAA+B;AAAA,EACxE,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK,MAAM;AACrC,CAAC;;;ACTM,SAAS,mCACd,SACiC;AACjC,QAAM,yBACJ,QAAQ,WAAW,IAAI,KACvB,QAAQ,WAAW,SAAS,KAC3B,QAAQ,WAAW,OAAO,KAAK,CAAC,QAAQ,WAAW,YAAY;AAElE,QAAM,6BACJ,QAAQ,WAAW,OAAO,KACzB,QAAQ,WAAW,OAAO,KACzB,CAAC,QAAQ,WAAW,YAAY,KAChC,CAAC,QAAQ,WAAW,YAAY,KAChC,CAAC,QAAQ,WAAW,cAAc,KACpC,QAAQ,WAAW,IAAI,KACvB,QAAQ,WAAW,SAAS;AAI9B,QAAM,mBACJ,QAAQ,WAAW,IAAI,KACvB,QAAQ,WAAW,IAAI,KACvB,QAAQ,WAAW,SAAS,KAC3B,QAAQ,WAAW,OAAO,KAAK,CAAC,QAAQ,WAAW,YAAY;AAIlE,QAAM,iCACJ,QAAQ,WAAW,SAAS,KAC5B,QAAQ,WAAW,SAAS,KAC5B,QAAQ,WAAW,SAAS,KAC5B,QAAQ,WAAW,SAAS,KAC5B,QAAQ,WAAW,SAAS;AAE9B,QAAM,oBAAoB,mBAAmB,cAAc;AAE3D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACvCO,SAAS,uBACd,OACsB;AAlBxB;AAmBE,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,MACL,aAAa;AAAA,QACX,OAAO;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,MACA,cAAc;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AAEA,QAAM,gBAAe,WAAM,kBAAN,YAAuB;AAC5C,QAAM,oBAAmB,WAAM,sBAAN,YAA2B;AACpD,QAAM,gBAAe,iBAAM,0BAAN,mBAA6B,kBAA7B,YAA8C;AACnE,QAAM,mBACJ,iBAAM,8BAAN,mBAAiC,qBAAjC,YAAqD;AAEvD,SAAO;AAAA,IACL,aAAa;AAAA,MACX,OAAO;AAAA,MACP,SAAS,eAAe;AAAA,MACxB,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,cAAc;AAAA,MACZ,OAAO;AAAA,MACP,MAAM,mBAAmB;AAAA,MACzB,WAAW;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AACF;;;ACxDA;AAAA,EACE;AAAA,OAGK;AAEP,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B,OAAwB;AAC1D,SAAO,KAAK,UAAU,UAAU,SAAY,CAAC,IAAI,KAAK;AACxD;AAEO,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,oBAAoB;AACtB,GAME;AArBF;AAsBE,QAAM,WAA6B,CAAC;AACpC,QAAM,WAAmC,CAAC;AAE1C,aAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AACtC,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,gBAAQ,mBAAmB;AAAA,UACzB,KAAK,UAAU;AACb,qBAAS,KAAK,EAAE,MAAM,UAAU,QAAQ,CAAC;AACzC;AAAA,UACF;AAAA,UACA,KAAK,aAAa;AAChB,qBAAS,KAAK,EAAE,MAAM,aAAa,QAAQ,CAAC;AAC5C;AAAA,UACF;AAAA,UACA,KAAK,UAAU;AACb,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,YACX,CAAC;AACD;AAAA,UACF;AAAA,UACA,SAAS;AACP,kBAAM,mBAA0B;AAChC,kBAAM,IAAI;AAAA,cACR,oCAAoC,gBAAgB;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AACA;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,YAAI,QAAQ,WAAW,KAAK,QAAQ,CAAC,EAAE,SAAS,QAAQ;AACtD,mBAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,QAAQ,CAAC,EAAE,KAAK,CAAC;AACxD;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,QAAQ,IAAI,CAAC,MAAM,UAAU;AA9DhD,gBAAAA,KAAA;AA+DY,oBAAQ,KAAK,MAAM;AAAA,cACjB,KAAK,QAAQ;AACX,uBAAO,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK;AAAA,cACzC;AAAA,cACA,KAAK,QAAQ;AACX,oBAAI,KAAK,UAAU,WAAW,QAAQ,GAAG;AACvC,wBAAM,YACJ,KAAK,cAAc,YACf,eACA,KAAK;AAEX,yBAAO;AAAA,oBACL,MAAM;AAAA,oBACN,WAAW;AAAA,sBACT,KACE,KAAK,gBAAgB,MACjB,KAAK,KAAK,SAAS,IACnB,QAAQ,SAAS,WAAW,gBAAgB,KAAK,IAAI,CAAC;AAAA;AAAA,sBAG5D,SAAQ,MAAAA,MAAA,KAAK,oBAAL,gBAAAA,IAAsB,WAAtB,mBAA8B;AAAA,oBACxC;AAAA,kBACF;AAAA,gBACF,WAAW,KAAK,UAAU,WAAW,QAAQ,GAAG;AAC9C,sBAAI,KAAK,gBAAgB,KAAK;AAC5B,0BAAM,IAAI,8BAA8B;AAAA,sBACtC,eAAe;AAAA,oBACjB,CAAC;AAAA,kBACH;AAEA,0BAAQ,KAAK,WAAW;AAAA,oBACtB,KAAK,aAAa;AAChB,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,aAAa;AAAA,0BACX,MAAM,gBAAgB,KAAK,IAAI;AAAA,0BAC/B,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,oBACF;AAAA,oBACA,KAAK;AAAA,oBACL,KAAK,cAAc;AACjB,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,aAAa;AAAA,0BACX,MAAM,gBAAgB,KAAK,IAAI;AAAA,0BAC/B,QAAQ;AAAA,wBACV;AAAA,sBACF;AAAA,oBACF;AAAA,oBAEA,SAAS;AACP,4BAAM,IAAI,8BAA8B;AAAA,wBACtC,eAAe,uCAAuC,KAAK,SAAS;AAAA,sBACtE,CAAC;AAAA,oBACH;AAAA,kBACF;AAAA,gBACF,WAAW,KAAK,cAAc,mBAAmB;AAC/C,sBAAI,KAAK,gBAAgB,KAAK;AAC5B,0BAAM,IAAI,8BAA8B;AAAA,sBACtC,eAAe;AAAA,oBACjB,CAAC;AAAA,kBACH;AAEA,yBAAO;AAAA,oBACL,MAAM;AAAA,oBACN,MACE,OAAO,KAAK,SAAS,YACrB,KAAK,KAAK,WAAW,OAAO,IACxB,EAAE,SAAS,KAAK,KAAK,IACrB;AAAA,sBACE,WAAU,UAAK,aAAL,YAAiB,QAAQ,KAAK;AAAA,sBACxC,WAAW,+BAA+B,gBAAgB,KAAK,IAAI,CAAC;AAAA,oBACtE;AAAA,kBACR;AAAA,gBACF,OAAO;AACL,wBAAM,IAAI,8BAA8B;AAAA,oBACtC,eAAe,wBAAwB,KAAK,SAAS;AAAA,kBACvD,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,YAAI,OAAO;AACX,cAAM,YAID,CAAC;AAEN,mBAAW,QAAQ,SAAS;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,sBAAQ,KAAK;AACb;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAChB,wBAAU,KAAK;AAAA,gBACb,IAAI,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,UAAU;AAAA,kBACR,MAAM,KAAK;AAAA,kBACX,WAAW,2BAA2B,KAAK,KAAK;AAAA,gBAClD;AAAA,cACF,CAAC;AACD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,UAAU,SAAS,IAAI,QAAQ,OAAO;AAAA,UAC/C,YAAY,UAAU,SAAS,IAAI,YAAY;AAAA,QACjD,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,mBAAW,gBAAgB,SAAS;AAClC,cAAI,aAAa,SAAS,0BAA0B;AAClD;AAAA,UACF;AACA,gBAAM,SAAS,aAAa;AAE5B,cAAI;AACJ,kBAAQ,OAAO,MAAM;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AACH,6BAAe,OAAO;AACtB;AAAA,YACF,KAAK;AACH,8BAAe,YAAO,WAAP,YAAiB;AAChC;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,6BAAe,KAAK,UAAU,OAAO,KAAK;AAC1C;AAAA,UACJ;AAEA,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,cAAc,aAAa;AAAA,YAC3B,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA;AAAA,MACF;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,UAAU,SAAS;AAC9B;;;ACpOO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SAAO;AAAA,IACL,IAAI,kBAAM;AAAA,IACV,SAAS,wBAAS;AAAA,IAClB,WAAW,UAAU,IAAI,KAAK,UAAU,GAAI,IAAI;AAAA,EAClD;AACF;;;ACZO,SAAS,sBACd,cACwC;AACxC,UAAQ,cAAc;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;ACjBA;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,KAAAC,UAAS;AAqBX,IAAM,2BAA2B;AAAA,EAAW,MACjD;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,MACvB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC5B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC1B,SAASA,GAAE;AAAA,QACTA,GAAE,OAAO;AAAA,UACP,SAASA,GAAE,OAAO;AAAA,YAChB,MAAMA,GAAE,QAAQ,WAAW,EAAE,QAAQ;AAAA,YACrC,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,YAC5B,YAAYA,GACT;AAAA,cACCA,GAAE,OAAO;AAAA,gBACP,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,gBACvB,MAAMA,GAAE,QAAQ,UAAU;AAAA,gBAC1B,UAAUA,GAAE,OAAO;AAAA,kBACjB,MAAMA,GAAE,OAAO;AAAA,kBACf,WAAWA,GAAE,OAAO;AAAA,gBACtB,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,QAAQ;AAAA,YACX,aAAaA,GACV;AAAA,cACCA,GAAE,OAAO;AAAA,gBACP,MAAMA,GAAE,QAAQ,cAAc;AAAA,gBAC9B,cAAcA,GAAE,OAAO;AAAA,kBACrB,aAAaA,GAAE,OAAO;AAAA,kBACtB,WAAWA,GAAE,OAAO;AAAA,kBACpB,KAAKA,GAAE,OAAO;AAAA,kBACd,OAAOA,GAAE,OAAO;AAAA,gBAClB,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,QAAQ;AAAA,UACb,CAAC;AAAA,UACD,OAAOA,GAAE,OAAO;AAAA,UAChB,UAAUA,GACP,OAAO;AAAA,YACN,SAASA,GACN;AAAA,cACCA,GAAE,OAAO;AAAA,gBACP,OAAOA,GAAE,OAAO;AAAA,gBAChB,SAASA,GAAE,OAAO;AAAA,gBAClB,cAAcA,GAAE;AAAA,kBACdA,GAAE,OAAO;AAAA,oBACP,OAAOA,GAAE,OAAO;AAAA,oBAChB,SAASA,GAAE,OAAO;AAAA,kBACpB,CAAC;AAAA,gBACH;AAAA,cACF,CAAC;AAAA,YACH,EACC,QAAQ;AAAA,UACb,CAAC,EACA,QAAQ;AAAA,UACX,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACpC,CAAC;AAAA,MACH;AAAA,MACA,OAAOA,GACJ,OAAO;AAAA,QACN,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAClC,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACtC,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACjC,uBAAuBA,GACpB,OAAO;AAAA,UACN,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACpC,CAAC,EACA,QAAQ;AAAA,QACX,2BAA2BA,GACxB,OAAO;AAAA,UACN,kBAAkBA,GAAE,OAAO,EAAE,QAAQ;AAAA,UACrC,4BAA4BA,GAAE,OAAO,EAAE,QAAQ;AAAA,UAC/C,4BAA4BA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACjD,CAAC,EACA,QAAQ;AAAA,MACb,CAAC,EACA,QAAQ;AAAA,IACb,CAAC;AAAA,EACH;AACF;AAIO,IAAM,wBAAwB;AAAA,EAAW,MAC9C;AAAA,IACEA,GAAE,MAAM;AAAA,MACNA,GAAE,OAAO;AAAA,QACP,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACvB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAC5B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAC1B,SAASA,GAAE;AAAA,UACTA,GAAE,OAAO;AAAA,YACP,OAAOA,GACJ,OAAO;AAAA,cACN,MAAMA,GAAE,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ;AAAA,cACpC,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,cAC5B,YAAYA,GACT;AAAA,gBACCA,GAAE,OAAO;AAAA,kBACP,OAAOA,GAAE,OAAO;AAAA,kBAChB,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,kBACvB,MAAMA,GAAE,QAAQ,UAAU,EAAE,QAAQ;AAAA,kBACpC,UAAUA,GAAE,OAAO;AAAA,oBACjB,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,oBACzB,WAAWA,GAAE,OAAO,EAAE,QAAQ;AAAA,kBAChC,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,QAAQ;AAAA,cACX,aAAaA,GACV;AAAA,gBACCA,GAAE,OAAO;AAAA,kBACP,MAAMA,GAAE,QAAQ,cAAc;AAAA,kBAC9B,cAAcA,GAAE,OAAO;AAAA,oBACrB,aAAaA,GAAE,OAAO;AAAA,oBACtB,WAAWA,GAAE,OAAO;AAAA,oBACpB,KAAKA,GAAE,OAAO;AAAA,oBACd,OAAOA,GAAE,OAAO;AAAA,kBAClB,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,QAAQ;AAAA,YACb,CAAC,EACA,QAAQ;AAAA,YACX,UAAUA,GACP,OAAO;AAAA,cACN,SAASA,GACN;AAAA,gBACCA,GAAE,OAAO;AAAA,kBACP,OAAOA,GAAE,OAAO;AAAA,kBAChB,SAASA,GAAE,OAAO;AAAA,kBAClB,cAAcA,GAAE;AAAA,oBACdA,GAAE,OAAO;AAAA,sBACP,OAAOA,GAAE,OAAO;AAAA,sBAChB,SAASA,GAAE,OAAO;AAAA,oBACpB,CAAC;AAAA,kBACH;AAAA,gBACF,CAAC;AAAA,cACH,EACC,QAAQ;AAAA,YACb,CAAC,EACA,QAAQ;AAAA,YACX,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,YAClC,OAAOA,GAAE,OAAO;AAAA,UAClB,CAAC;AAAA,QACH;AAAA,QACA,OAAOA,GACJ,OAAO;AAAA,UACN,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,UAClC,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,UACtC,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,UACjC,uBAAuBA,GACpB,OAAO;AAAA,YACN,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,UACpC,CAAC,EACA,QAAQ;AAAA,UACX,2BAA2BA,GACxB,OAAO;AAAA,YACN,kBAAkBA,GAAE,OAAO,EAAE,QAAQ;AAAA,YACrC,4BAA4BA,GAAE,OAAO,EAAE,QAAQ;AAAA,YAC/C,4BAA4BA,GAAE,OAAO,EAAE,QAAQ;AAAA,UACjD,CAAC,EACA,QAAQ;AAAA,QACb,CAAC,EACA,QAAQ;AAAA,MACb,CAAC;AAAA,MACD;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACrMA;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,UAAS;AAiEX,IAAM,iCAAiCF;AAAA,EAAW,MACvDC;AAAA,IACEC,GAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOP,WAAWA,GAAE,OAAOA,GAAE,OAAO,OAAe,GAAGA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWpE,UAAUA,GAAE,MAAM,CAACA,GAAE,QAAQ,GAAGA,GAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAKtD,mBAAmBA,GAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAMxC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAK1B,iBAAiBA,GACd,KAAK,CAAC,QAAQ,WAAW,OAAO,UAAU,QAAQ,OAAO,CAAC,EAC1D,SAAS;AAAA;AAAA;AAAA;AAAA,MAKZ,qBAAqBA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAKzC,OAAOA,GAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAK5B,UAAUA,GAAE,OAAOA,GAAE,OAAO,EAAE,IAAI,EAAE,GAAGA,GAAE,OAAO,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAKrE,YAAYA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYnD,aAAaA,GAAE,KAAK,CAAC,QAAQ,QAAQ,YAAY,SAAS,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOtE,kBAAkBA,GAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAMvC,eAAeA,GAAE,KAAK,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAM1D,gBAAgBA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUpC,sBAAsBA,GAAE,KAAK,CAAC,aAAa,KAAK,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAS5D,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUtC,mBAAmBA,GAAE,KAAK,CAAC,UAAU,aAAa,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWtE,gBAAgBA,GAAE,QAAQ,EAAE,SAAS;AAAA,IACvC,CAAC;AAAA,EACH;AACF;;;AC1MA;AAAA,EACE,iCAAAC;AAAA,OAGK;AAMA,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAOE;AAEA,WAAQ,+BAAO,UAAS,QAAQ;AAEhC,QAAM,eAAkC,CAAC;AAEzC,MAAI,SAAS,MAAM;AACjB,WAAO,EAAE,OAAO,QAAW,YAAY,QAAW,aAAa;AAAA,EACjE;AAEA,QAAMC,eAAwC,CAAC;AAE/C,aAAW,QAAQ,OAAO;AACxB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK;AACH,QAAAA,aAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,UAAU;AAAA,YACR,MAAM,KAAK;AAAA,YACX,aAAa,KAAK;AAAA,YAClB,YAAY,KAAK;AAAA,YACjB,GAAI,KAAK,UAAU,OAAO,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,UACvD;AAAA,QACF,CAAC;AACD;AAAA,MACF;AACE,qBAAa,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS,cAAc,KAAK,IAAI;AAAA,QAClC,CAAC;AACD;AAAA,IACJ;AAAA,EACF;AAEA,MAAI,cAAc,MAAM;AACtB,WAAO,EAAE,OAAOA,cAAa,YAAY,QAAW,aAAa;AAAA,EACnE;AAEA,QAAM,OAAO,WAAW;AAExB,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,OAAOA,cAAa,YAAY,MAAM,aAAa;AAAA,IAC9D,KAAK;AACH,aAAO;AAAA,QACL,OAAOA;AAAA,QACP,YAAY;AAAA,UACV,MAAM;AAAA,UACN,UAAU;AAAA,YACR,MAAM,WAAW;AAAA,UACnB;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF,SAAS;AACP,YAAM,mBAA0B;AAChC,YAAM,IAAID,+BAA8B;AAAA,QACtC,eAAe,qBAAqB,gBAAgB;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ATjCO,IAAM,0BAAN,MAAyD;AAAA,EAW9D,YAAY,SAA4B,QAA0B;AAVlE,SAAS,uBAAuB;AAIhC,SAAS,gBAAgB;AAAA,MACvB,WAAW,CAAC,iBAAiB;AAAA,IAC/B;AAKE,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA+B;AApFjC;AAqFI,UAAM,WAA8B,CAAC;AAGrC,UAAM,iBACH,WAAM,qBAAqB;AAAA,MAC1B,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC,MAJA,YAIM,CAAC;AAEV,UAAM,oBAAoB,mCAAmC,KAAK,OAAO;AACzE,UAAM,oBACJ,mBAAc,mBAAd,YAAgC,kBAAkB;AAEpD,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IACxD;AAEA,UAAM,EAAE,UAAU,UAAU,gBAAgB,IAAI;AAAA,MAC9C;AAAA,QACE;AAAA,QACA,oBACE,mBAAc,sBAAd,YACC,mBACG,cACA,kBAAkB;AAAA,MAC1B;AAAA,IACF;AAEA,aAAS,KAAK,GAAG,eAAe;AAEhC,UAAM,oBAAmB,mBAAc,qBAAd,YAAkC;AAE3D,UAAM,WAAW;AAAA;AAAA,MAEf,OAAO,KAAK;AAAA;AAAA,MAGZ,YAAY,cAAc;AAAA,MAC1B,UACE,cAAc,aAAa,QAC3B,OAAO,cAAc,aAAa,WAC9B,OACA;AAAA,MACN,cACE,OAAO,cAAc,aAAa,WAC9B,cAAc,WACd,OAAO,cAAc,aAAa,YAChC,cAAc,WACZ,IACA,SACF;AAAA,MACR,MAAM,cAAc;AAAA,MACpB,qBAAqB,cAAc;AAAA;AAAA,MAGnC,YAAY;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,MACP,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,kBACE,iDAAgB,UAAS,SACrB,eAAe,UAAU,OACvB;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,UACX,QAAQ,eAAe;AAAA,UACvB,QAAQ;AAAA,UACR,OAAM,oBAAe,SAAf,YAAuB;AAAA,UAC7B,aAAa,eAAe;AAAA,QAC9B;AAAA,MACF,IACA,EAAE,MAAM,cAAc,IACxB;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA,WAAW,cAAc;AAAA;AAAA;AAAA,MAIzB,uBAAuB,cAAc;AAAA,MACrC,OAAO,cAAc;AAAA,MACrB,UAAU,cAAc;AAAA,MACxB,YAAY,cAAc;AAAA,MAC1B,kBAAkB,cAAc;AAAA,MAChC,cAAc,cAAc;AAAA,MAC5B,kBAAkB,cAAc;AAAA,MAChC,wBAAwB,cAAc;AAAA,MACtC,mBAAmB,cAAc;AAAA;AAAA,MAGjC;AAAA,IACF;AAIA,QAAI,kBAAkB;AAGpB,UACE,cAAc,oBAAoB,UAClC,CAAC,kBAAkB,gCACnB;AACA,YAAI,SAAS,eAAe,MAAM;AAChC,mBAAS,cAAc;AACvB,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA,YAAI,SAAS,SAAS,MAAM;AAC1B,mBAAS,QAAQ;AACjB,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA,YAAI,SAAS,YAAY,MAAM;AAC7B,mBAAS,WAAW;AACpB,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAEA,UAAI,SAAS,qBAAqB,MAAM;AACtC,iBAAS,oBAAoB;AAC7B,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AACA,UAAI,SAAS,oBAAoB,MAAM;AACrC,iBAAS,mBAAmB;AAC5B,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AACA,UAAI,SAAS,cAAc,MAAM;AAC/B,iBAAS,aAAa;AACtB,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAEA,UAAI,SAAS,gBAAgB,MAAM;AACjC,iBAAS,eAAe;AACxB,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAGA,UAAI,SAAS,cAAc,MAAM;AAC/B,YAAI,SAAS,yBAAyB,MAAM;AAC1C,mBAAS,wBAAwB,SAAS;AAAA,QAC5C;AACA,iBAAS,aAAa;AAAA,MACxB;AAAA,IACF,WACE,KAAK,QAAQ,WAAW,uBAAuB,KAC/C,KAAK,QAAQ,WAAW,4BAA4B,GACpD;AACA,UAAI,SAAS,eAAe,MAAM;AAChC,iBAAS,cAAc;AACvB,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QACE,cAAc,gBAAgB,UAC9B,CAAC,kBAAkB,wBACnB;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AACD,eAAS,eAAe;AAAA,IAC1B;AAGA,QACE,cAAc,gBAAgB,cAC9B,CAAC,kBAAkB,4BACnB;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AACD,eAAS,eAAe;AAAA,IAC1B;AAEA,UAAM;AAAA,MACJ,OAAOE;AAAA,MACP,YAAY;AAAA,MACZ;AAAA,IACF,IAAI,iBAAiB;AAAA,MACnB;AAAA,MACA;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,OAAOA;AAAA,QACP,aAAa;AAAA,MACf;AAAA,MACA,UAAU,CAAC,GAAG,UAAU,GAAG,YAAY;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SACwC;AA7T5C;AA8TI,UAAM,EAAE,MAAM,MAAM,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAE3D,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,IAAI,MAAM,cAAc;AAAA,MACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAAS,eAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,SAAS,SAAS,QAAQ,CAAC;AACjC,UAAM,UAAyC,CAAC;AAGhD,UAAM,OAAO,OAAO,QAAQ;AAC5B,QAAI,QAAQ,QAAQ,KAAK,SAAS,GAAG;AACnC,cAAQ,KAAK,EAAE,MAAM,QAAQ,KAAK,CAAC;AAAA,IACrC;AAGA,eAAW,aAAY,YAAO,QAAQ,eAAf,YAA6B,CAAC,GAAG;AACtD,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,aAAY,cAAS,OAAT,YAAe,WAAW;AAAA,QACtC,UAAU,SAAS,SAAS;AAAA,QAC5B,OAAO,SAAS,SAAS;AAAA,MAC3B,CAAC;AAAA,IACH;AAGA,eAAW,eAAc,YAAO,QAAQ,gBAAf,YAA8B,CAAC,GAAG;AACzD,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,IAAI,WAAW;AAAA,QACf,KAAK,WAAW,aAAa;AAAA,QAC7B,OAAO,WAAW,aAAa;AAAA,MACjC,CAAC;AAAA,IACH;AAGA,UAAM,0BAAyB,cAAS,UAAT,mBAAgB;AAC/C,UAAM,sBAAqB,cAAS,UAAT,mBAAgB;AAC3C,UAAM,mBAA6C,EAAE,QAAQ,CAAC,EAAE;AAChE,SAAI,iEAAwB,+BAA8B,MAAM;AAC9D,uBAAiB,OAAO,2BACtB,iEAAwB;AAAA,IAC5B;AACA,SAAI,iEAAwB,+BAA8B,MAAM;AAC9D,uBAAiB,OAAO,2BACtB,iEAAwB;AAAA,IAC5B;AACA,UAAI,YAAO,aAAP,mBAAiB,YAAW,MAAM;AACpC,uBAAiB,OAAO,WAAW,OAAO,SAAS;AAAA,IACrD;AAEA,WAAO;AAAA,MACL;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,sBAAsB,OAAO,aAAa;AAAA,QACnD,MAAK,YAAO,kBAAP,YAAwB;AAAA,MAC/B;AAAA,MACA,OAAO,uBAAuB,SAAS,KAAK;AAAA,MAC5C,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU;AAAA,QACR,GAAG,oBAAoB,QAAQ;AAAA,QAC/B,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACsC;AACtC,UAAM,EAAE,MAAM,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAErD,UAAM,OAAO;AAAA,MACX,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,gBAAgB;AAAA,QACd,eAAe;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,EAAE,iBAAiB,OAAO,SAAS,IAAI,MAAM,cAAc;AAAA,MAC/D,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAAS,eAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,YAQD,CAAC;AAEN,QAAI,eAA4C;AAAA,MAC9C,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AACA,QAAI,QAAqC;AACzC,QAAI,oBAAoB;AACxB,QAAI,eAAe;AAEnB,UAAM,mBAA6C,EAAE,QAAQ,CAAC,EAAE;AAEhE,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,QACf,IAAI,gBAGF;AAAA,UACA,MAAM,YAAY;AAChB,uBAAW,QAAQ,EAAE,MAAM,gBAAgB,SAAS,CAAC;AAAA,UACvD;AAAA,UAEA,UAAU,OAAO,YAAY;AA7cvC;AA8cY,gBAAI,QAAQ,kBAAkB;AAC5B,yBAAW,QAAQ,EAAE,MAAM,OAAO,UAAU,MAAM,SAAS,CAAC;AAAA,YAC9D;AAGA,gBAAI,CAAC,MAAM,SAAS;AAClB,6BAAe,EAAE,SAAS,SAAS,KAAK,OAAU;AAClD,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC;AACxD;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM;AAGpB,gBAAI,WAAW,OAAO;AACpB,6BAAe,EAAE,SAAS,SAAS,KAAK,OAAU;AAClD,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC;AACxD;AAAA,YACF;AAKA,gBAAI,CAAC,mBAAmB;AACtB,oBAAM,WAAW,oBAAoB,KAAK;AAC1C,kBAAI,OAAO,OAAO,QAAQ,EAAE,KAAK,OAAO,GAAG;AACzC,oCAAoB;AACpB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,GAAG,oBAAoB,KAAK;AAAA,gBAC9B,CAAC;AAAA,cACH;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,MAAM;AACvB,sBAAQ,MAAM;AAEd,oBACE,WAAM,MAAM,8BAAZ,mBACI,+BAA8B,MAClC;AACA,iCAAiB,OAAO,4BACtB,WAAM,MAAM,8BAAZ,mBAAuC;AAAA,cAC3C;AACA,oBACE,WAAM,MAAM,8BAAZ,mBACI,+BAA8B,MAClC;AACA,iCAAiB,OAAO,4BACtB,WAAM,MAAM,8BAAZ,mBAAuC;AAAA,cAC3C;AAAA,YACF;AAEA,kBAAM,SAAS,MAAM,QAAQ,CAAC;AAE9B,iBAAI,iCAAQ,kBAAiB,MAAM;AACjC,6BAAe;AAAA,gBACb,SAAS,sBAAsB,OAAO,aAAa;AAAA,gBACnD,KAAK,OAAO;AAAA,cACd;AAAA,YACF;AAEA,kBAAI,sCAAQ,aAAR,mBAAkB,YAAW,MAAM;AACrC,+BAAiB,OAAO,WAAW,OAAO,SAAS;AAAA,YACrD;AAEA,iBAAI,iCAAQ,UAAS,MAAM;AACzB;AAAA,YACF;AAEA,kBAAM,QAAQ,OAAO;AAErB,gBAAI,MAAM,WAAW,MAAM;AACzB,kBAAI,CAAC,cAAc;AACjB,2BAAW,QAAQ,EAAE,MAAM,cAAc,IAAI,IAAI,CAAC;AAClD,+BAAe;AAAA,cACjB;AAEA,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI;AAAA,gBACJ,OAAO,MAAM;AAAA,cACf,CAAC;AAAA,YACH;AAEA,gBAAI,MAAM,cAAc,MAAM;AAC5B,yBAAW,iBAAiB,MAAM,YAAY;AAC5C,sBAAM,QAAQ,cAAc;AAG5B,oBAAI,UAAU,KAAK,KAAK,MAAM;AAC5B,sBACE,cAAc,QAAQ,QACtB,cAAc,SAAS,YACvB;AACA,0BAAM,IAAI,yBAAyB;AAAA,sBACjC,MAAM;AAAA,sBACN,SAAS;AAAA,oBACX,CAAC;AAAA,kBACH;AAEA,sBAAI,cAAc,MAAM,MAAM;AAC5B,0BAAM,IAAI,yBAAyB;AAAA,sBACjC,MAAM;AAAA,sBACN,SAAS;AAAA,oBACX,CAAC;AAAA,kBACH;AAEA,wBAAI,mBAAc,aAAd,mBAAwB,SAAQ,MAAM;AACxC,0BAAM,IAAI,yBAAyB;AAAA,sBACjC,MAAM;AAAA,sBACN,SAAS;AAAA,oBACX,CAAC;AAAA,kBACH;AAEA,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,cAAc;AAAA,oBAClB,UAAU,cAAc,SAAS;AAAA,kBACnC,CAAC;AAED,4BAAU,KAAK,IAAI;AAAA,oBACjB,IAAI,cAAc;AAAA,oBAClB,MAAM;AAAA,oBACN,UAAU;AAAA,sBACR,MAAM,cAAc,SAAS;AAAA,sBAC7B,YAAW,mBAAc,SAAS,cAAvB,YAAoC;AAAA,oBACjD;AAAA,oBACA,aAAa;AAAA,kBACf;AAEA,wBAAMC,YAAW,UAAU,KAAK;AAEhC,wBACE,KAAAA,UAAS,aAAT,mBAAmB,SAAQ,UAC3B,KAAAA,UAAS,aAAT,mBAAmB,cAAa,MAChC;AAEA,wBAAIA,UAAS,SAAS,UAAU,SAAS,GAAG;AAC1C,iCAAW,QAAQ;AAAA,wBACjB,MAAM;AAAA,wBACN,IAAIA,UAAS;AAAA,wBACb,OAAOA,UAAS,SAAS;AAAA,sBAC3B,CAAC;AAAA,oBACH;AAIA,wBAAI,eAAeA,UAAS,SAAS,SAAS,GAAG;AAC/C,iCAAW,QAAQ;AAAA,wBACjB,MAAM;AAAA,wBACN,IAAIA,UAAS;AAAA,sBACf,CAAC;AAED,iCAAW,QAAQ;AAAA,wBACjB,MAAM;AAAA,wBACN,aAAY,KAAAA,UAAS,OAAT,YAAe,WAAW;AAAA,wBACtC,UAAUA,UAAS,SAAS;AAAA,wBAC5B,OAAOA,UAAS,SAAS;AAAA,sBAC3B,CAAC;AACD,sBAAAA,UAAS,cAAc;AAAA,oBACzB;AAAA,kBACF;AAEA;AAAA,gBACF;AAGA,sBAAM,WAAW,UAAU,KAAK;AAEhC,oBAAI,SAAS,aAAa;AACxB;AAAA,gBACF;AAEA,sBAAI,mBAAc,aAAd,mBAAwB,cAAa,MAAM;AAC7C,2BAAS,SAAU,cACjB,yBAAc,aAAd,mBAAwB,cAAxB,YAAqC;AAAA,gBACzC;AAGA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,QAAO,mBAAc,SAAS,cAAvB,YAAoC;AAAA,gBAC7C,CAAC;AAGD,sBACE,cAAS,aAAT,mBAAmB,SAAQ,UAC3B,cAAS,aAAT,mBAAmB,cAAa,QAChC,eAAe,SAAS,SAAS,SAAS,GAC1C;AACA,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,SAAS;AAAA,kBACf,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,aAAY,cAAS,OAAT,YAAe,WAAW;AAAA,oBACtC,UAAU,SAAS,SAAS;AAAA,oBAC5B,OAAO,SAAS,SAAS;AAAA,kBAC3B,CAAC;AACD,2BAAS,cAAc;AAAA,gBACzB;AAAA,cACF;AAAA,YACF;AAGA,gBAAI,MAAM,eAAe,MAAM;AAC7B,yBAAW,cAAc,MAAM,aAAa;AAC1C,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,IAAI,WAAW;AAAA,kBACf,KAAK,WAAW,aAAa;AAAA,kBAC7B,OAAO,WAAW,aAAa;AAAA,gBACjC,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,UAEA,MAAM,YAAY;AAChB,gBAAI,cAAc;AAChB,yBAAW,QAAQ,EAAE,MAAM,YAAY,IAAI,IAAI,CAAC;AAAA,YAClD;AAEA,uBAAW,QAAQ;AAAA,cACjB,MAAM;AAAA,cACN;AAAA,cACA,OAAO,uBAAuB,KAAK;AAAA,cACnC,GAAI,oBAAoB,OAAO,EAAE,iBAAiB,IAAI,CAAC;AAAA,YACzD,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU,EAAE,SAAS,gBAAgB;AAAA,IACvC;AAAA,EACF;AACF;;;AUprBA;AAAA,EACE,kBAAAC;AAAA,EACA,oCAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,OAGK;;;ACVA,SAAS,6BACd,OACsB;AAVxB;AAWE,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,MACL,aAAa;AAAA,QACX,OAAO;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,MACA,cAAc;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AAEA,QAAM,gBAAe,WAAM,kBAAN,YAAuB;AAC5C,QAAM,oBAAmB,WAAM,sBAAN,YAA2B;AAEpD,SAAO;AAAA,IACL,aAAa;AAAA,MACX,QAAO,WAAM,kBAAN,YAAuB;AAAA,MAC9B,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,cAAc;AAAA,MACZ,QAAO,WAAM,sBAAN,YAA2B;AAAA,MAClC,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AACF;;;AC7CA;AAAA,EACE;AAAA,EACA,iCAAAC;AAAA,OAEK;AAEA,SAAS,gCAAgC;AAAA,EAC9C;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AACd,GAOE;AAEA,MAAI,OAAO;AAGX,MAAI,OAAO,CAAC,EAAE,SAAS,UAAU;AAC/B,YAAQ,GAAG,OAAO,CAAC,EAAE,OAAO;AAAA;AAAA;AAC5B,aAAS,OAAO,MAAM,CAAC;AAAA,EACzB;AAEA,aAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AACtC,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,cAAM,IAAI,mBAAmB;AAAA,UAC3B,SAAS;AAAA,UACT;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,KAAK,QAAQ;AACX,cAAM,cAAc,QACjB,IAAI,UAAQ;AACX,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,qBAAO,KAAK;AAAA,YACd;AAAA,UACF;AAAA,QACF,CAAC,EACA,OAAO,OAAO,EACd,KAAK,EAAE;AAEV,gBAAQ,GAAG,IAAI;AAAA,EAAM,WAAW;AAAA;AAAA;AAChC;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,cAAM,mBAAmB,QACtB,IAAI,UAAQ;AACX,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,qBAAO,KAAK;AAAA,YACd;AAAA,YACA,KAAK,aAAa;AAChB,oBAAM,IAAIA,+BAA8B;AAAA,gBACtC,eAAe;AAAA,cACjB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF,CAAC,EACA,KAAK,EAAE;AAEV,gBAAQ,GAAG,SAAS;AAAA,EAAM,gBAAgB;AAAA;AAAA;AAC1C;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,cAAM,IAAIA,+BAA8B;AAAA,UACtC,eAAe;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAGA,UAAQ,GAAG,SAAS;AAAA;AAEpB,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,eAAe,CAAC;AAAA,EAAK,IAAI,GAAG;AAAA,EAC9B;AACF;;;AC5FO,SAASC,qBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SAAO;AAAA,IACL,IAAI,kBAAM;AAAA,IACV,SAAS,wBAAS;AAAA,IAClB,WAAW,WAAW,OAAO,IAAI,KAAK,UAAU,GAAI,IAAI;AAAA,EAC1D;AACF;;;ACZO,SAASC,uBACd,cACwC;AACxC,UAAQ,cAAc;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;AClBA,SAAS,KAAAC,UAAS;AAElB;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AAIA,IAAM,iCAAiCD;AAAA,EAAW,MACvDC;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,MACvB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC5B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC1B,SAASA,GAAE;AAAA,QACTA,GAAE,OAAO;AAAA,UACP,MAAMA,GAAE,OAAO;AAAA,UACf,eAAeA,GAAE,OAAO;AAAA,UACxB,UAAUA,GACP,OAAO;AAAA,YACN,QAAQA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,YAC1B,gBAAgBA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,YAClC,cAAcA,GAAE,MAAMA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC,EAAE,QAAQ;AAAA,UAClE,CAAC,EACA,QAAQ;AAAA,QACb,CAAC;AAAA,MACH;AAAA,MACA,OAAOA,GACJ,OAAO;AAAA,QACN,eAAeA,GAAE,OAAO;AAAA,QACxB,mBAAmBA,GAAE,OAAO;AAAA,QAC5B,cAAcA,GAAE,OAAO;AAAA,MACzB,CAAC,EACA,QAAQ;AAAA,IACb,CAAC;AAAA,EACH;AACF;AAIO,IAAM,8BAA8BF;AAAA,EAAW,MACpDC;AAAA,IACEC,GAAE,MAAM;AAAA,MACNA,GAAE,OAAO;AAAA,QACP,IAAIA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACvB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAC5B,OAAOA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAC1B,SAASA,GAAE;AAAA,UACTA,GAAE,OAAO;AAAA,YACP,MAAMA,GAAE,OAAO;AAAA,YACf,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,YAClC,OAAOA,GAAE,OAAO;AAAA,YAChB,UAAUA,GACP,OAAO;AAAA,cACN,QAAQA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,cAC1B,gBAAgBA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,cAClC,cAAcA,GACX,MAAMA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC,EACtC,QAAQ;AAAA,YACb,CAAC,EACA,QAAQ;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,OAAOA,GACJ,OAAO;AAAA,UACN,eAAeA,GAAE,OAAO;AAAA,UACxB,mBAAmBA,GAAE,OAAO;AAAA,UAC5B,cAAcA,GAAE,OAAO;AAAA,QACzB,CAAC,EACA,QAAQ;AAAA,MACb,CAAC;AAAA,MACD;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC5EA;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,UAAS;AAQX,IAAM,uCAAuCF;AAAA,EAAW,MAC7DC;AAAA,IACEC,GAAE,OAAO;AAAA;AAAA;AAAA;AAAA,MAIP,MAAMA,GAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgB3B,WAAWA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAKrD,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAM5B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAW1B,UAAUA,GAAE,MAAM,CAACA,GAAE,QAAQ,GAAGA,GAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,CAAC;AAAA,EACH;AACF;;;ANhBO,IAAM,gCAAN,MAA+D;AAAA,EAWpE,YACE,SACA,QACA;AAbF,SAAS,uBAAuB;AAsBhC,SAAS,gBAA0C;AAAA;AAAA,IAEnD;AAVE,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAVA,IAAY,sBAA8B;AACxC,WAAO,KAAK,OAAO,SAAS,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAAA,EACjD;AAAA,EAUA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAMA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA+B;AAC7B,UAAM,WAA8B,CAAC;AAGrC,UAAM,gBAAgB;AAAA,MACpB,GAAI,MAAMC,sBAAqB;AAAA,QAC7B,UAAU;AAAA,QACV;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA,MACD,GAAI,MAAMA,sBAAqB;AAAA,QAC7B,UAAU,KAAK;AAAA,QACf;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IACxD;AAEA,QAAI,+BAAO,QAAQ;AACjB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,QAAQ,CAAC;AAAA,IACzD;AAEA,QAAI,cAAc,MAAM;AACtB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,aAAa,CAAC;AAAA,IAC9D;AAEA,QAAI,kBAAkB,QAAQ,eAAe,SAAS,QAAQ;AAC5D,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM,EAAE,QAAQ,kBAAkB,cAAc,IAC9C,gCAAgC,EAAE,OAAO,CAAC;AAE5C,UAAM,OAAO,CAAC,GAAI,wCAAiB,CAAC,GAAI,GAAI,gDAAqB,CAAC,CAAE;AAEpE,WAAO;AAAA,MACL,MAAM;AAAA;AAAA,QAEJ,OAAO,KAAK;AAAA;AAAA,QAGZ,MAAM,cAAc;AAAA,QACpB,YAAY,cAAc;AAAA,QAC1B,WACE,+CAAe,cAAa,OACxB,KACA,+CAAe,cAAa,QAC1B,SACA,+CAAe;AAAA,QACvB,QAAQ,cAAc;AAAA,QACtB,MAAM,cAAc;AAAA;AAAA,QAGpB,YAAY;AAAA,QACZ;AAAA,QACA,OAAO;AAAA,QACP,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB;AAAA;AAAA,QAGA,QAAQ;AAAA;AAAA,QAGR,MAAM,KAAK,SAAS,IAAI,OAAO;AAAA,MACjC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SACwC;AApK5C;AAqKI,UAAM,EAAE,MAAM,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAErD,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,IAAI,MAAMC,eAAc;AAAA,MACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D,MAAM;AAAA,MACN,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,SAAS,SAAS,QAAQ,CAAC;AAEjC,UAAM,mBAA6C,EAAE,QAAQ,CAAC,EAAE;AAEhE,QAAI,OAAO,YAAY,MAAM;AAC3B,uBAAiB,OAAO,WAAW,OAAO;AAAA,IAC5C;AAEA,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,OAAO,KAAK,CAAC;AAAA,MAC7C,OAAO,6BAA6B,SAAS,KAAK;AAAA,MAClD,cAAc;AAAA,QACZ,SAASC,uBAAsB,OAAO,aAAa;AAAA,QACnD,MAAK,YAAO,kBAAP,YAAwB;AAAA,MAC/B;AAAA,MACA,SAAS,EAAE,MAAM,KAAK;AAAA,MACtB,UAAU;AAAA,QACR,GAAGC,qBAAoB,QAAQ;AAAA,QAC/B,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACsC;AACtC,UAAM,EAAE,MAAM,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAErD,UAAM,OAAO;AAAA,MACX,GAAG;AAAA,MACH,QAAQ;AAAA,MAER,gBAAgB;AAAA,QACd,eAAe;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,EAAE,iBAAiB,OAAO,SAAS,IAAI,MAAMJ,eAAc;AAAA,MAC/D,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BI;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI,eAA4C;AAAA,MAC9C,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AACA,UAAM,mBAA6C,EAAE,QAAQ,CAAC,EAAE;AAChE,QAAI,QAA2C;AAC/C,QAAI,eAAe;AAEnB,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,QACf,IAAI,gBAGF;AAAA,UACA,MAAM,YAAY;AAChB,uBAAW,QAAQ,EAAE,MAAM,gBAAgB,SAAS,CAAC;AAAA,UACvD;AAAA,UAEA,UAAU,OAAO,YAAY;AAC3B,gBAAI,QAAQ,kBAAkB;AAC5B,yBAAW,QAAQ,EAAE,MAAM,OAAO,UAAU,MAAM,SAAS,CAAC;AAAA,YAC9D;AAGA,gBAAI,CAAC,MAAM,SAAS;AAClB,6BAAe,EAAE,SAAS,SAAS,KAAK,OAAU;AAClD,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC;AACxD;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM;AAGpB,gBAAI,WAAW,OAAO;AACpB,6BAAe,EAAE,SAAS,SAAS,KAAK,OAAU;AAClD,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC;AACxD;AAAA,YACF;AAEA,gBAAI,cAAc;AAChB,6BAAe;AAEf,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,GAAGD,qBAAoB,KAAK;AAAA,cAC9B,CAAC;AAED,yBAAW,QAAQ,EAAE,MAAM,cAAc,IAAI,IAAI,CAAC;AAAA,YACpD;AAEA,gBAAI,MAAM,SAAS,MAAM;AACvB,sBAAQ,MAAM;AAAA,YAChB;AAEA,kBAAM,SAAS,MAAM,QAAQ,CAAC;AAE9B,iBAAI,iCAAQ,kBAAiB,MAAM;AACjC,6BAAe;AAAA,gBACb,SAASD,uBAAsB,OAAO,aAAa;AAAA,gBACnD,KAAK,OAAO;AAAA,cACd;AAAA,YACF;AAEA,iBAAI,iCAAQ,aAAY,MAAM;AAC5B,+BAAiB,OAAO,WAAW,OAAO;AAAA,YAC5C;AAEA,iBAAI,iCAAQ,SAAQ,QAAQ,OAAO,KAAK,SAAS,GAAG;AAClD,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI;AAAA,gBACJ,OAAO,OAAO;AAAA,cAChB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UAEA,MAAM,YAAY;AAChB,gBAAI,CAAC,cAAc;AACjB,yBAAW,QAAQ,EAAE,MAAM,YAAY,IAAI,IAAI,CAAC;AAAA,YAClD;AAEA,uBAAW,QAAQ;AAAA,cACjB,MAAM;AAAA,cACN;AAAA,cACA;AAAA,cACA,OAAO,6BAA6B,KAAK;AAAA,YAC3C,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU,EAAE,SAAS,gBAAgB;AAAA,IACvC;AAAA,EACF;AACF;;;AO/UA;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE,kBAAAG;AAAA,EACA,6BAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,OACK;;;ACTP;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,UAAS;AAQX,IAAM,8BAA8BF;AAAA,EAAW,MACpDC;AAAA,IACEC,GAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKP,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAMhC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,CAAC;AAAA,EACH;AACF;;;AC7BA,SAAS,cAAAC,aAAY,aAAAC,kBAAiB;AACtC,SAAS,KAAAC,UAAS;AAIX,IAAM,oCAAoCF;AAAA,EAAW,MAC1DC;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,MAAMA,GAAE,MAAMA,GAAE,OAAO,EAAE,WAAWA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,MAC1D,OAAOA,GAAE,OAAO,EAAE,eAAeA,GAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AAAA,IACzD,CAAC;AAAA,EACH;AACF;;;AFMO,IAAM,uBAAN,MAAuD;AAAA,EAY5D,YAAY,SAAiC,QAAsB;AAXnE,SAAS,uBAAuB;AAEhC,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AAS/B,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAPA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AA1CJ;AA2CI,QAAI,OAAO,SAAS,KAAK,sBAAsB;AAC7C,YAAM,IAAI,mCAAmC;AAAA,QAC3C,UAAU,KAAK;AAAA,QACf,SAAS,KAAK;AAAA,QACd,sBAAsB,KAAK;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAGA,UAAM,iBACH,WAAMC,sBAAqB;AAAA,MAC1B,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC,MAJA,YAIM,CAAC;AAEV,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,MAAMC,eAAc;AAAA,MACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,YAAY,cAAc;AAAA,QAC1B,MAAM,cAAc;AAAA,MACtB;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX,YAAY,SAAS,KAAK,IAAI,UAAQ,KAAK,SAAS;AAAA,MACpD,OAAO,SAAS,QACZ,EAAE,QAAQ,SAAS,MAAM,cAAc,IACvC;AAAA,MACJ,UAAU,EAAE,SAAS,iBAAiB,MAAM,SAAS;AAAA,IACvD;AAAA,EACF;AACF;;;AGzFA;AAAA,EACE,kBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA;AAAA,EACA,iBAAAC;AAAA,OACK;;;ACdP,SAAS,cAAAC,aAAY,aAAAC,kBAAiB;AACtC,SAAS,KAAAC,UAAS;AAIX,IAAM,4BAA4BF;AAAA,EAAW,MAClDC;AAAA,IACEC,GAAE,OAAO;AAAA,MACP,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC5B,MAAMA,GAAE;AAAA,QACNA,GAAE,OAAO;AAAA,UACP,UAAUA,GAAE,OAAO;AAAA,UACnB,gBAAgBA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACrC,CAAC;AAAA,MACH;AAAA,MACA,YAAYA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC/B,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAClC,MAAMA,GAAE,OAAO,EAAE,QAAQ;AAAA,MACzB,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA,MAC5B,OAAOA,GACJ,OAAO;AAAA,QACN,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACjC,eAAeA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAClC,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACjC,sBAAsBA,GACnB,OAAO;AAAA,UACN,cAAcA,GAAE,OAAO,EAAE,QAAQ;AAAA,UACjC,aAAaA,GAAE,OAAO,EAAE,QAAQ;AAAA,QAClC,CAAC,EACA,QAAQ;AAAA,MACb,CAAC,EACA,QAAQ;AAAA,IACb,CAAC;AAAA,EACH;AACF;;;AClCA;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,UAAS;AAaX,IAAM,wBAA4D;AAAA,EACvE,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,wBAAwB;AAC1B;AAEA,IAAM,gCAAgC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,yBAAyB,SAA0B;AACjE,SAAO,8BAA8B;AAAA,IAAK,YACxC,QAAQ,WAAW,MAAM;AAAA,EAC3B;AACF;AAEA,IAAM,8BAA8BA,GAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3C,SAASA,GACN,KAAK,CAAC,YAAY,MAAM,OAAO,UAAU,QAAQ,MAAM,CAAC,EACxD,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQZ,YAAYA,GAAE,KAAK,CAAC,eAAe,UAAU,MAAM,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,EAK/D,cAAcA,GAAE,KAAK,CAAC,OAAO,QAAQ,MAAM,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvD,mBAAmBA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7D,MAAMA,GAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAEM,IAAM,0BAA0BF;AAAA,EAAW,MAChDC,WAAU,2BAA2B;AACvC;AAMO,IAAM,oCAAoCD;AAAA,EAAW,MAC1DC;AAAA,IACE,4BAA4B,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMjC,OAAOC,GAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAM7C,YAAYA,GAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,SAAS;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;AAMO,IAAM,8BAA8BF;AAAA,EAAW,MACpDC;AAAA,IACE,4BAA4B,OAAO;AAAA;AAAA;AAAA;AAAA,MAIjC,eAAeC,GAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,SAAS;AAAA,IAClD,CAAC;AAAA,EACH;AACF;;;AFrFO,IAAM,mBAAN,MAA+C;AAAA,EAWpD,YACW,SACQ,QACjB;AAFS;AACQ;AAZnB,SAAS,uBAAuB;AAAA,EAa7B;AAAA,EAXH,IAAI,mBAA2B;AApCjC;AAqCI,YAAO,2BAAsB,KAAK,OAAO,MAAlC,YAAuC;AAAA,EAChD;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AA9DJ;AA+DI,UAAM,WAAmC,CAAC;AAE1C,QAAI,eAAe,MAAM;AACvB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IACxD;AAEA,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AAEvE,QAAI,SAAS,MAAM;AACjB,YAAMC,kBACH,WAAMC,sBAAqB;AAAA,QAC1B,UAAU;AAAA,QACV;AAAA,QACA,QAAQ;AAAA,MACV,CAAC,MAJA,YAIM,CAAC;AAEV,YAAM,EAAE,OAAOC,WAAU,iBAAAC,iBAAgB,IAAI,MAAM,kBAAkB;AAAA,QACnE,KAAK,KAAK,OAAO,IAAI;AAAA,UACnB,MAAM;AAAA,UACN,SAAS,KAAK;AAAA,QAChB,CAAC;AAAA,QACD,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,QACtD,UAAU,kBAAwC;AAAA,UAChD,OAAO,KAAK;AAAA,UACZ;AAAA,UACA,OAAO,MAAM,QAAQ;AAAA,YACnB,MAAM;AAAA,cAAI,UACR,KAAK,SAAS,SACV,IAAI;AAAA,gBACF;AAAA,kBACE,KAAK,gBAAgB,aACjB,IAAI,KAAK,CAAC,KAAK,IAAgB,GAAG;AAAA,oBAChC,MAAM,KAAK;AAAA,kBACb,CAAC,IACD,IAAI,KAAK,CAAC,0BAA0B,KAAK,IAAI,CAAC,GAAG;AAAA,oBAC/C,MAAM,KAAK;AAAA,kBACb,CAAC;AAAA,gBACP;AAAA,gBACA,EAAE,MAAM,KAAK,UAAU;AAAA,cACzB,IACA,aAAa,KAAK,GAAG;AAAA,YAC3B;AAAA,UACF;AAAA,UACA,MAAM,QAAQ,OAAO,MAAM,WAAW,IAAI,IAAI;AAAA,UAC9C;AAAA,UACA;AAAA,UACA,SAASJ,eAAc;AAAA,UACvB,YAAYA,eAAc;AAAA,UAC1B,eAAeA,eAAc;AAAA,UAC7B,oBAAoBA,eAAc;AAAA,UAClC,gBAAgBA,eAAc;AAAA,UAC9B,MAAMA,eAAc;AAAA,QACtB,CAAC;AAAA,QACD,uBAAuB;AAAA,QACvB,2BAA2BK;AAAA,UACzB;AAAA,QACF;AAAA,QACA;AAAA,QACA,OAAO,KAAK,OAAO;AAAA,MACrB,CAAC;AAED,aAAO;AAAA,QACL,QAAQH,UAAS,KAAK,IAAI,UAAQ,KAAK,QAAQ;AAAA,QAC/C;AAAA,QACA,OACEA,UAAS,SAAS,OACd;AAAA,UACE,cAAa,KAAAA,UAAS,MAAM,iBAAf,YAA+B;AAAA,UAC5C,eAAc,KAAAA,UAAS,MAAM,kBAAf,YAAgC;AAAA,UAC9C,cAAa,KAAAA,UAAS,MAAM,iBAAf,YAA+B;AAAA,QAC9C,IACA;AAAA,QACN,UAAU;AAAA,UACR,WAAW;AAAA,UACX,SAAS,KAAK;AAAA,UACd,SAASC;AAAA,QACX;AAAA,QACA,kBAAkB;AAAA,UAChB,QAAQ;AAAA,YACN,QAAQD,UAAS,KAAK,IAAI,CAAC,MAAM,UAAO;AAvJpD,kBAAAI,KAAAC,KAAAC,KAAAC,KAAAC,KAAAC;AAuJwD;AAAA,gBAC1C,GAAI,KAAK,iBACL,EAAE,eAAe,KAAK,eAAe,IACrC,CAAC;AAAA,gBACL,UAASL,MAAAJ,UAAS,YAAT,OAAAI,MAAoB;AAAA,gBAC7B,OAAMC,MAAAL,UAAS,SAAT,OAAAK,MAAiB;AAAA,gBACvB,UAASC,MAAAN,UAAS,YAAT,OAAAM,MAAoB;AAAA,gBAC7B,aAAYC,MAAAP,UAAS,eAAT,OAAAO,MAAuB;AAAA,gBACnC,eAAcC,MAAAR,UAAS,kBAAT,OAAAQ,MAA0B;AAAA,gBACxC,GAAG;AAAA,mBACDC,MAAAT,UAAS,UAAT,gBAAAS,IAAgB;AAAA,kBAChB;AAAA,kBACAT,UAAS,KAAK;AAAA,gBAChB;AAAA,cACF;AAAA,aAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,iBACH,WAAMD,sBAAqB;AAAA,MAC1B,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC,MAJA,YAIM,CAAC;AAEV,UAAM,EAAE,OAAO,UAAU,gBAAgB,IAAI,MAAMW,eAAc;AAAA,MAC/D,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAASR,gBAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,cAAc;AAAA,QACvB,OAAO,cAAc;AAAA,QACrB,YAAY,cAAc;AAAA,QAC1B,YAAY,cAAc;AAAA,QAC1B,eAAe,cAAc;AAAA,QAC7B,oBAAoB,cAAc;AAAA,QAClC,MAAM,cAAc;AAAA,QACpB,GAAI,CAAC,yBAAyB,KAAK,OAAO,IACtC,EAAE,iBAAiB,WAAW,IAC9B,CAAC;AAAA,MACP;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,QAAQ,SAAS,KAAK,IAAI,UAAQ,KAAK,QAAQ;AAAA,MAC/C;AAAA,MACA,OACE,SAAS,SAAS,OACd;AAAA,QACE,cAAa,cAAS,MAAM,iBAAf,YAA+B;AAAA,QAC5C,eAAc,cAAS,MAAM,kBAAf,YAAgC;AAAA,QAC9C,cAAa,cAAS,MAAM,iBAAf,YAA+B;AAAA,MAC9C,IACA;AAAA,MACN,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,MACA,kBAAkB;AAAA,QAChB,QAAQ;AAAA,UACN,QAAQ,SAAS,KAAK,IAAI,CAAC,MAAM,UAAO;AAlOlD,gBAAAC,KAAAC,KAAAC,KAAAC,KAAAC,KAAAC;AAkOsD;AAAA,cAC1C,GAAI,KAAK,iBACL,EAAE,eAAe,KAAK,eAAe,IACrC,CAAC;AAAA,cACL,UAASL,MAAA,SAAS,YAAT,OAAAA,MAAoB;AAAA,cAC7B,OAAMC,MAAA,SAAS,SAAT,OAAAA,MAAiB;AAAA,cACvB,UAASC,MAAA,SAAS,YAAT,OAAAA,MAAoB;AAAA,cAC7B,aAAYC,MAAA,SAAS,eAAT,OAAAA,MAAuB;AAAA,cACnC,eAAcC,MAAA,SAAS,kBAAT,OAAAA,MAA0B;AAAA,cACxC,GAAG;AAAA,iBACDC,MAAA,SAAS,UAAT,gBAAAA,IAAgB;AAAA,gBAChB;AAAA,gBACA,SAAS,KAAK;AAAA,cAChB;AAAA,YACF;AAAA,WAAE;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAOA,SAAS,uBACP,SAIA,OACA,OAC+C;AAC/C,MAAI,WAAW,MAAM;AACnB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAwD,CAAC;AAE/D,MAAI,QAAQ,gBAAgB,MAAM;AAChC,UAAM,OAAO,KAAK,MAAM,QAAQ,eAAe,KAAK;AACpD,UAAM,YAAY,QAAQ,eAAe,QAAQ,QAAQ;AACzD,WAAO,cAAc,UAAU,QAAQ,IAAI,YAAY;AAAA,EACzD;AAEA,MAAI,QAAQ,eAAe,MAAM;AAC/B,UAAM,OAAO,KAAK,MAAM,QAAQ,cAAc,KAAK;AACnD,UAAM,YAAY,QAAQ,cAAc,QAAQ,QAAQ;AACxD,WAAO,aAAa,UAAU,QAAQ,IAAI,YAAY;AAAA,EACxD;AAEA,SAAO;AACT;AAiBA,eAAe,WACb,MAC2B;AAC3B,MAAI,CAAC,KAAM,QAAO;AAElB,MAAI,KAAK,SAAS,OAAO;AACvB,WAAO,aAAa,KAAK,GAAG;AAAA,EAC9B;AAEA,QAAM,OACJ,KAAK,gBAAgB,aACjB,KAAK,OACL,0BAA0B,KAAK,IAAI;AAEzC,SAAO,IAAI,KAAK,CAAC,IAAgB,GAAG,EAAE,MAAM,KAAK,UAAU,CAAC;AAC9D;;;AGvTA;AAAA,EACE;AAAA,EACA,cAAAE;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAQX,IAAM,wBAAwBF;AAAA,EAAW,MAC9CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IAAE,OAAO;AAAA,MACjB,WAAWA,IAAE,mBAAmB,QAAQ;AAAA,QACtCA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,UAC7B,MAAMA,IAAE,OAAO;AAAA,UACf,MAAMA,IAAE,OAAO;AAAA,QACjB,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,UAC7B,MAAMA,IAAE,OAAO;AAAA,QACjB,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,UAC7B,MAAMA,IAAE,OAAO;AAAA,UACf,MAAMA,IAAE,OAAO;AAAA,QACjB,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAKO,IAAM,yBAAyBF;AAAA,EAAW,MAC/CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IAAE,KAAK,CAAC,aAAa,QAAQ,CAAC;AAAA,MACtC,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;AAMO,IAAM,uBAAuBF,YAAW,MAAMC,WAAUC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AA+CrE,IAAM,wBAAwB,0CA4BnC;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;AAQM,IAAM,aAAa;;;AC5I1B;AAAA,EACE,6CAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,6BAA6BF;AAAA,EAAW,MACnDC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO,EAAE,QAAQ;AAAA,MACzB,aAAaA,IAAE,OAAO;AAAA,IACxB,CAAC;AAAA,EACH;AACF;AAEO,IAAM,8BAA8BF;AAAA,EAAW,MACpDC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,SAASA,IACN;AAAA,QACCA,IAAE,mBAAmB,QAAQ;AAAA,UAC3BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,MAAM,GAAG,MAAMA,IAAE,OAAO,EAAE,CAAC;AAAA,UACtDA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,OAAO,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC;AAAA,QACxD,CAAC;AAAA,MACH,EACC,QAAQ;AAAA,IACb,CAAC;AAAA,EACH;AACF;AAEO,IAAM,4BAA4BF;AAAA,EAAW,MAClDC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,WAAWA,IACR,MAAM;AAAA,QACLA,IAAE,OAAO;AAAA,QACTA,IAAE,OAAO;AAAA,UACP,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,QACxC,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAWO,IAAM,6BACXH,2CAqCE;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;AAEI,IAAM,kBAAkB,CAC7B,OAA4B,CAAC,MAC1B;AACH,SAAO,2BAA2B,IAAI;AACxC;;;ACvGA;AAAA,EACE;AAAA,EACA,cAAAI;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,mBAAmBF;AAAA,EAAW,MACzCC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO;AAAA,MACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,MACjC,QAAQA,IACL,MAAM;AAAA,QACLA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,SAAS;AAAA,UACzB,QAAQA,IAAE,KAAK,CAAC,SAAS,MAAM,CAAC;AAAA,UAChC,YAAYA,IAAE,OAAO;AAAA,QACvB,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,MAAM;AAAA,QACxB,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEA,IAAM,oBAAoBF,aAAW,MAAMC,YAAUC,IAAE,OAAO,CAAC,CAAC;AAEzD,IAAM,oBAAoB,0BA2B/B;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AACf,CAAC;AAEM,IAAM,aAAa,CAAC,SACzB,kBAAkB,IAAI;;;AC/DxB;AAAA,EACE,6CAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAMlB,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EACtC,KAAKA,IAAE,OAAO;AAAA,EACd,MAAMA,IAAE,KAAK,CAAC,MAAM,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,KAAK,CAAC;AAAA,EAChE,OAAOA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,GAAGA,IAAE,QAAQ,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,IAAM,uBAAuCA,IAAE,OAAO;AAAA,EACpD,MAAMA,IAAE,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,EAC1B,SAASA,IAAE;AAAA,IACTA,IAAE,MAAM,CAAC,wBAAwBA,IAAE,KAAK,MAAM,oBAAoB,CAAC,CAAC;AAAA,EACtE;AACF,CAAC;AAEM,IAAM,uBAAuBF;AAAA,EAAW,MAC7CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,MAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,MACnC,SAASA,IACN,OAAO;AAAA,QACN,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC5B,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,MACtC,CAAC,EACA,SAAS;AAAA,MACZ,SAASA,IACN,MAAM,CAAC,wBAAwB,oBAAoB,CAAC,EACpD,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEO,IAAM,yBAAyBF;AAAA,EAAW,MAC/CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,MAC3B,SAASA,IACN;AAAA,QACCA,IAAE,OAAO;AAAA,UACP,YAAYA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC;AAAA,UAC5C,QAAQA,IAAE,OAAO;AAAA,UACjB,UAAUA,IAAE,OAAO;AAAA,UACnB,OAAOA,IAAE,OAAO;AAAA,UAChB,MAAMA,IAAE,OAAO;AAAA,QACjB,CAAC;AAAA,MACH,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEO,IAAM,aAAaH,2CA+ExB;AAAA,EACA,IAAI;AAAA,EACJ,aAAaG,IAAE,OAAO,CAAC,CAAC;AAAA,EACxB,cAAc;AAChB,CAAC;;;AChJD;AAAA,EACE,6CAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,4BAA4BF;AAAA,EAAW,MAClDC;AAAA,IACEC,IACG,OAAO;AAAA,MACN,YAAYA,IAAE,KAAK,CAAC,QAAQ,UAAU,aAAa,CAAC,EAAE,SAAS;AAAA,MAC/D,eAAeA,IAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;AAAA,MAChD,gBAAgBA,IACb,OAAO;AAAA,QACN,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC5B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,MAChC,CAAC,EACA,SAAS;AAAA,MACZ,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,YAAYA,IAAE,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS;AAAA,MACtC,mBAAmBA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,MAC7D,cAAcA,IAAE,KAAK,CAAC,OAAO,QAAQ,MAAM,CAAC,EAAE,SAAS;AAAA,MACvD,eAAeA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACvD,SAASA,IAAE,KAAK,CAAC,QAAQ,OAAO,UAAU,MAAM,CAAC,EAAE,SAAS;AAAA,MAC5D,MAAMA,IACH,KAAK,CAAC,aAAa,aAAa,aAAa,MAAM,CAAC,EACpD,SAAS;AAAA,IACd,CAAC,EACA,OAAO;AAAA,EACZ;AACF;AAEA,IAAM,6BAA6BF,aAAW,MAAMC,YAAUC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpE,IAAM,8BAA8BF;AAAA,EAAW,MACpDC,YAAUC,IAAE,OAAO,EAAE,QAAQA,IAAE,OAAO,EAAE,CAAC,CAAC;AAC5C;AAqEA,IAAM,6BAA6BH,2CASjC;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;AAEM,IAAM,kBAAkB,CAC7B,OAA4B,CAAC,MAC1B;AACH,SAAO,2BAA2B,IAAI;AACxC;;;AC7HA;AAAA,EACE,6CAAAI;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,wBAAwBF;AAAA,EAAW,MAC9CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IAAE,OAAO;AAAA,QACf,MAAMA,IAAE,QAAQ,MAAM;AAAA,QACtB,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,QAC3B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC/B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC1B,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,QACtC,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MACjD,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEO,IAAM,yBAAyBF;AAAA,EAAW,MAC/CC,YAAUC,IAAE,OAAO,EAAE,QAAQA,IAAE,OAAO,EAAE,CAAC,CAAC;AAC5C;AAEO,IAAM,aAAaH,2CAyCxB;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;;;ACvED;AAAA,EACE,6CAAAI;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,mBAAmBF;AAAA,EAAW,MACzCC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IAAE,OAAO;AAAA,QACf,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,QAC5B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC/B,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,MACvC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEO,IAAM,oBAAoBF;AAAA,EAAW,MAC1CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IAAE;AAAA,QACRA,IAAE,OAAO;AAAA,UACP,QAAQA,IAAE,OAAO;AAAA,UACjB,QAAQA,IAAE,OAAO;AAAA,UACjB,SAASA,IAAE,mBAAmB,QAAQ;AAAA,YACpCA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,SAAS,EAAE,CAAC;AAAA,YACvCA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,MAAM,GAAG,UAAUA,IAAE,OAAO,EAAE,CAAC;AAAA,UAC5D,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAM,oBAAoBA,IACvB;AAAA,EACCA,IAAE,mBAAmB,QAAQ;AAAA,IAC3BA,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,QAAQ,gBAAgB;AAAA,MAChC,SAASA,IAAE,OAAO;AAAA,MAClB,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,CAAC;AAAA,IACDA,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,QAAQ,QAAQ;AAAA,MACxB,MAAMA,IAAE,OAAO;AAAA,MACf,aAAaA,IAAE,OAAO;AAAA,MACtB,QAAQA,IAAE,OAAO;AAAA,QACf,MAAMA,IAAE,QAAQ,QAAQ;AAAA,QACxB,WAAWA,IAAE,QAAQ,iBAAiB;AAAA,QACtC,MAAMA,IAAE,OAAO;AAAA,MACjB,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,EACC,SAAS;AAEL,IAAM,kBAAkBF;AAAA,EAAW,MACxCC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,aAAaA,IACV,MAAM;AAAA,QACLA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,UAC/B,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,UACtC,aAAaA,IAAE,KAAK,CAAC,MAAM,MAAM,OAAO,KAAK,CAAC,EAAE,SAAS;AAAA,UACzD,eAAeA,IACZ,mBAAmB,QAAQ;AAAA,YAC1BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,UAAU,EAAE,CAAC;AAAA,YACxCA,IAAE,OAAO;AAAA,cACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,cAC3B,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,cAClC,eAAeA,IACZ;AAAA,gBACCA,IAAE,OAAO;AAAA,kBACP,QAAQA,IAAE,OAAO;AAAA,kBACjB,MAAMA,IAAE,OAAO;AAAA,kBACf,OAAOA,IAAE,OAAO;AAAA,gBAClB,CAAC;AAAA,cACH,EACC,SAAS;AAAA,YACd,CAAC;AAAA,UACH,CAAC,EACA,SAAS;AAAA,UACZ,QAAQ;AAAA,QACV,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,oBAAoB;AAAA,UACpC,aAAaA,IAAE,OAAO;AAAA,QACxB,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,OAAO,EAAE,SAAS;AAAA,UAClC,QAAQA,IACL;AAAA,YACCA,IAAE,OAAO;AAAA,cACP,MAAMA,IAAE,OAAO;AAAA,cACf,aAAaA,IAAE,OAAO;AAAA,cACtB,MAAMA,IAAE,OAAO;AAAA,YACjB,CAAC;AAAA,UACH,EACC,SAAS;AAAA,QACd,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AA+CO,IAAM,QAAQH,2CA4CnB;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;;;ACzMD;AAAA,EACE,6CAAAI;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,uBAAuBF;AAAA,EAAW,MAC7CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC,EAAE,SAAS;AAAA,MACjD,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,MACjC,YAAYA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,IACzD,CAAC;AAAA,EACH;AACF;AAEO,IAAM,wBAAwBF;AAAA,EAAW,MAC9CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,MAChC,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;AAEO,IAAM,yBAERF;AAAA,EAAW,MACdC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,OAAOA,IAAE,MAAMA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,CAAC;AAAA,IAClD,CAAC;AAAA,EACH;AACF;AAEA,IAAM,wBAAwBH,2CAmD5B;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;AAEM,IAAM,aAAa,CACxB,OAAoD,CAAC,MAClD,sBAAsB,IAAI;;;ACjG/B;AAAA,EACE,6CAAAI;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsBF;AAAA,EAAW,MAC5CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;AAAA,MACxC,SAASA,IACN,OAAO,EAAE,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EACzD,SAAS;AAAA,MACZ,mBAAmBA,IAAE,KAAK,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,SAAS;AAAA,MAC9D,cAAcA,IACX,OAAO;AAAA,QACN,MAAMA,IAAE,QAAQ,aAAa;AAAA,QAC7B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC7B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC1B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC5B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,MAChC,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEA,IAAM,uBAAuBF,aAAW,MAAMC,YAAUC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAE9D,IAAM,wBAAwBF;AAAA,EAAW,MAC9CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IACL,mBAAmB,QAAQ;AAAA,QAC1BA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,QAAQ;AAAA,UACxB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC7B,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,UAAU;AAAA,UAC1B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC1B,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,YAAY;AAAA,UAC5B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,UACxB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC9B,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,MACZ,SAASA,IACN;AAAA,QACCA,IAAE,mBAAmB,QAAQ;AAAA,UAC3BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,KAAK,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC;AAAA,UACpDA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,KAAK,GAAG,MAAMA,IAAE,OAAO,EAAE,CAAC;AAAA,QACvD,CAAC;AAAA,MACH,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEO,IAAM,uBAAuBH,2CA8GlC;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;AAEM,IAAM,YAAY,CACvB,OAAmD,CAAC,MACjD,qBAAqB,IAAI;;;ACpL9B;AAAA,EACE,6CAAAI;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,KAAAC,WAAS;AAEX,IAAM,6BAA6BF;AAAA,EAAW,MACnDC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,mBAAmBA,IAAE,KAAK,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,SAAS;AAAA,MAC9D,cAAcA,IACX,OAAO;AAAA,QACN,MAAMA,IAAE,QAAQ,aAAa;AAAA,QAC7B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC7B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC1B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC5B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,MAChC,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEO,IAAM,8BAA8BF;AAAA,EAAW,MACpDC,YAAUC,IAAE,OAAO,CAAC,CAAC,CAAC;AACxB;AAEA,IAAM,+BAA+BF;AAAA,EAAW,MAC9CC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,QAAQA,IACL,mBAAmB,QAAQ;AAAA,QAC1BA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,QAAQ;AAAA,UACxB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,QAC7B,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,UAAU;AAAA,UAC1B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC1B,CAAC;AAAA,QACDA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,QAAQ,YAAY;AAAA,UAC5B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,UACxB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC9B,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEO,IAAM,mBAAmBH,2CAoF9B;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;;;AC5ID;AAAA,EACE,6CAAAI;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AAEP,SAAS,KAAAC,WAAS;AAElB,IAAM,kBAAwCA,IAAE;AAAA,EAAK,MACnDA,IAAE,MAAM;AAAA,IACNA,IAAE,OAAO;AAAA,IACTA,IAAE,OAAO;AAAA,IACTA,IAAE,QAAQ;AAAA,IACVA,IAAE,KAAK;AAAA,IACPA,IAAE,MAAM,eAAe;AAAA,IACvBA,IAAE,OAAOA,IAAE,OAAO,GAAG,eAAe;AAAA,EACtC,CAAC;AACH;AAEO,IAAM,gBAAgBF;AAAA,EAAW,MACtCC;AAAA,IACEC,IACG,OAAO;AAAA,MACN,aAAaA,IAAE,OAAO;AAAA,MACtB,cAAcA,IACX,MAAM;AAAA,QACLA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,QAClBA,IAAE,OAAO;AAAA,UACP,UAAUA,IAAE,QAAQ,EAAE,SAAS;AAAA,UAC/B,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,QAC1C,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,MACZ,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,MACnC,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,MACjC,SAASA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAEnD,iBAAiBA,IACd,MAAM;AAAA,QACLA,IAAE,KAAK,CAAC,UAAU,OAAO,CAAC;AAAA,QAC1BA,IAAE,OAAO;AAAA,UACP,OAAOA,IACJ,OAAO;AAAA,YACN,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,UAC1C,CAAC,EACA,SAAS;AAAA,QACd,CAAC;AAAA,MACH,CAAC,EACA,SAAS;AAAA,MACZ,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,MACvC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,IACjC,CAAC,EACA;AAAA,MACC,OAAK,EAAE,aAAa,QAAQ,EAAE,eAAe;AAAA,MAC7C;AAAA,IACF;AAAA,EACJ;AACF;AAEA,IAAM,iBAAiBF,aAAW,MAAMC,YAAUC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAExD,IAAM,kBAAkBF;AAAA,EAAW,MACxCC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,QAAQ,MAAM;AAAA,MACtB,aAAaA,IAAE,OAAO;AAAA,MACtB,MAAMA,IAAE,OAAO;AAAA,MACf,WAAWA,IAAE,OAAO;AAAA,MACpB,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAAA,MAC3B,OAAOA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAG,eAAe,CAAC,EAAE,SAAS;AAAA,IACzD,CAAC;AAAA,EACH;AACF;AAmCO,IAAM,iBAAiBH,4CAW5B;AAAA,EACA,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,cAAc;AAChB,CAAC;AAEM,IAAM,MAAM,CAAC,SAAkB,eAAe,IAAI;;;AChHlD,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA;AACF;;;ACzIA;AAAA,EACE;AAAA,OAcK;AACP;AAAA,EACE,kBAAAI;AAAA,EACA,oCAAAC;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,OAGK;;;ACbA,SAAS,4BACd,OACsB;AAfxB;AAgBE,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,MACL,aAAa;AAAA,QACX,OAAO;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,MACA,cAAc;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AAEA,QAAM,cAAc,MAAM;AAC1B,QAAM,eAAe,MAAM;AAC3B,QAAM,gBAAe,iBAAM,yBAAN,mBAA4B,kBAA5B,YAA6C;AAClE,QAAM,mBAAkB,iBAAM,0BAAN,mBAA6B,qBAA7B,YAAiD;AAEzE,SAAO;AAAA,IACL,aAAa;AAAA,MACX,OAAO;AAAA,MACP,SAAS,cAAc;AAAA,MACvB,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,cAAc;AAAA,MACZ,OAAO;AAAA,MACP,MAAM,eAAe;AAAA,MACrB,WAAW;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AACF;;;ACpDA;AAAA,EACE,iCAAAC;AAAA,OAIK;AACP;AAAA,EACE,mBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAqBlB,SAASC,4BAA2B,OAAwB;AAC1D,SAAO,KAAK,UAAU,UAAU,SAAY,CAAC,IAAI,KAAK;AACxD;AAMA,SAAS,SAAS,MAAc,UAAuC;AACrE,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,SAAS,KAAK,YAAU,KAAK,WAAW,MAAM,CAAC;AACxD;AAEA,eAAsB,8BAA8B;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB;AACF,GAeG;AA3EH;AA4EE,MAAI,QAA8B,CAAC;AACnC,QAAM,WAAmC,CAAC;AAC1C,QAAM,uBAAuB,oBAAI,IAAY;AAE7C,aAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AACtC,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,gBAAQ,mBAAmB;AAAA,UACzB,KAAK,UAAU;AACb,kBAAM,KAAK,EAAE,MAAM,UAAU,QAAQ,CAAC;AACtC;AAAA,UACF;AAAA,UACA,KAAK,aAAa;AAChB,kBAAM,KAAK,EAAE,MAAM,aAAa,QAAQ,CAAC;AACzC;AAAA,UACF;AAAA,UACA,KAAK,UAAU;AACb,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,YACX,CAAC;AACD;AAAA,UACF;AAAA,UACA,SAAS;AACP,kBAAM,mBAA0B;AAChC,kBAAM,IAAI;AAAA,cACR,oCAAoC,gBAAgB;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AACA;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,SAAS,QAAQ,IAAI,CAAC,MAAM,UAAU;AAhHhD,gBAAAC,KAAAC,KAAAC;AAiHY,oBAAQ,KAAK,MAAM;AAAA,cACjB,KAAK,QAAQ;AACX,uBAAO,EAAE,MAAM,cAAc,MAAM,KAAK,KAAK;AAAA,cAC/C;AAAA,cACA,KAAK,QAAQ;AACX,oBAAI,KAAK,UAAU,WAAW,QAAQ,GAAG;AACvC,wBAAM,YACJ,KAAK,cAAc,YACf,eACA,KAAK;AAEX,yBAAO;AAAA,oBACL,MAAM;AAAA,oBACN,GAAI,KAAK,gBAAgB,MACrB,EAAE,WAAW,KAAK,KAAK,SAAS,EAAE,IAClC,OAAO,KAAK,SAAS,YACnB,SAAS,KAAK,MAAM,cAAc,IAClC,EAAE,SAAS,KAAK,KAAK,IACrB;AAAA,sBACE,WAAW,QAAQ,SAAS,WAAWC,iBAAgB,KAAK,IAAI,CAAC;AAAA,oBACnE;AAAA,oBACN,SACEF,OAAAD,MAAA,KAAK,oBAAL,gBAAAA,IAAuB,yBAAvB,gBAAAC,IAA6C;AAAA,kBACjD;AAAA,gBACF,WAAW,KAAK,cAAc,mBAAmB;AAC/C,sBAAI,KAAK,gBAAgB,KAAK;AAC5B,2BAAO;AAAA,sBACL,MAAM;AAAA,sBACN,UAAU,KAAK,KAAK,SAAS;AAAA,oBAC/B;AAAA,kBACF;AACA,yBAAO;AAAA,oBACL,MAAM;AAAA,oBACN,GAAI,OAAO,KAAK,SAAS,YACzB,SAAS,KAAK,MAAM,cAAc,IAC9B,EAAE,SAAS,KAAK,KAAK,IACrB;AAAA,sBACE,WAAUC,MAAA,KAAK,aAAL,OAAAA,MAAiB,QAAQ,KAAK;AAAA,sBACxC,WAAW,+BAA+BC,iBAAgB,KAAK,IAAI,CAAC;AAAA,oBACtE;AAAA,kBACN;AAAA,gBACF,OAAO;AACL,wBAAM,IAAIC,+BAA8B;AAAA,oBACtC,eAAe,wBAAwB,KAAK,SAAS;AAAA,kBACvD,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,cAAM,oBAA8D,CAAC;AAErE,mBAAW,QAAQ,SAAS;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,oBAAM,gBAAe,UAAK,oBAAL,mBAAuB;AAC5C,oBAAM,KAAK,6CAAc;AACzB,oBAAM,QAAQ,6CAAc;AAO5B,kBAAI,mBAAmB,MAAM,MAAM;AACjC;AAAA,cACF;AAGA,kBAAI,SAAS,MAAM,MAAM;AACvB,sBAAM,KAAK,EAAE,MAAM,kBAAkB,GAAG,CAAC;AACzC;AAAA,cACF;AAEA,oBAAM,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,SAAS,CAAC,EAAE,MAAM,eAAe,MAAM,KAAK,KAAK,CAAC;AAAA,gBAClD;AAAA,gBACA,GAAI,SAAS,QAAQ,EAAE,MAAM;AAAA,cAC/B,CAAC;AAED;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAChB,oBAAM,MAAM,sBAAK,oBAAL,mBAAuB,yBAAvB,mBAA6C,WAA7C,aAER,gBAKA,qBALA,mBAKmB,yBALnB,mBAKyC;AAI7C,kBAAI,mBAAmB,MAAM,MAAM;AACjC;AAAA,cACF;AAEA,oBAAM,mBAAmB,gBAAgB;AAAA,gBACvC,KAAK;AAAA,cACP;AAEA,kBAAI,qBAAqB,eAAe;AACtC,oBAAI,SAAS,MAAM,MAAM;AACvB,wBAAM,KAAK,EAAE,MAAM,kBAAkB,GAAG,CAAC;AACzC;AAAA,gBACF;AAEA,sBAAM,cACJ,OAAO,KAAK,UAAU,WAClB,MAAM,UAAU;AAAA,kBACd,MAAM,KAAK;AAAA,kBACX,QAAQ;AAAA,gBACV,CAAC,IACD,MAAM,cAAc;AAAA,kBAClB,OAAO,KAAK;AAAA,kBACZ,QAAQ;AAAA,gBACV,CAAC;AAEP,sBAAM,YACJ,YAAY,WAAW,OAAO,WAAW;AAE3C,sBAAM,KAAK;AAAA,kBACT,MAAM;AAAA,kBACN,IAAI,kBAAM,KAAK;AAAA,kBACf;AAAA,kBACA,UAAS,iBAAY,YAAZ,YAAuB;AAAA,kBAChC,QAAQ;AAAA,kBACR,WAAW,YAAY;AAAA,gBACzB,CAAC;AACD;AAAA,cACF;AAEA,kBAAI,KAAK,kBAAkB;AACzB,oBAAI,SAAS,MAAM,MAAM;AACvB,wBAAM,KAAK,EAAE,MAAM,kBAAkB,GAAG,CAAC;AAAA,gBAC3C;AACA;AAAA,cACF;AAEA,kBAAI,SAAS,MAAM,MAAM;AACvB,sBAAM,KAAK,EAAE,MAAM,kBAAkB,GAAG,CAAC;AACzC;AAAA,cACF;AAEA,kBAAI,qBAAqB,qBAAqB,eAAe;AAC3D,sBAAM,cAAc,MAAM,cAAc;AAAA,kBACtC,OAAO,KAAK;AAAA,kBACZ,QAAQ;AAAA,gBACV,CAAC;AACD,sBAAM,KAAK;AAAA,kBACT,MAAM;AAAA,kBACN,SAAS,KAAK;AAAA,kBACd;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,oBACN,SAAS,YAAY,OAAO;AAAA,oBAC5B,YAAY,YAAY,OAAO;AAAA,oBAC/B,MAAM,YAAY,OAAO;AAAA,oBACzB,mBAAmB,YAAY,OAAO;AAAA,oBACtC,KAAK,YAAY,OAAO;AAAA,kBAC1B;AAAA,gBACF,CAAC;AAED;AAAA,cACF;AAEA,kBAAI,gBAAgB,qBAAqB,SAAS;AAChD,sBAAM,cAAc,MAAM,cAAc;AAAA,kBACtC,OAAO,KAAK;AAAA,kBACZ,QAAQ;AAAA,gBACV,CAAC;AACD,sBAAM,KAAK;AAAA,kBACT,MAAM;AAAA,kBACN,SAAS,KAAK;AAAA,kBACd;AAAA,kBACA,QAAQ;AAAA,kBACR,QAAQ;AAAA,oBACN,UAAU,YAAY,OAAO;AAAA,oBAC7B,YAAY,YAAY,OAAO;AAAA,oBAC/B,mBAAmB,YAAY,OAAO;AAAA,kBACxC;AAAA,gBACF,CAAC;AAED;AAAA,cACF;AAEA,kBAAI,qBAAqB,qBAAqB,eAAe;AAC3D,sBAAM,cAAc,MAAM,cAAc;AAAA,kBACtC,OAAO,KAAK;AAAA,kBACZ,QAAQ;AAAA,gBACV,CAAC;AACD,sBAAM,KAAK;AAAA,kBACT,MAAM;AAAA,kBACN,SAAS,YAAY;AAAA,kBACrB;AAAA,kBACA,QAAQ;AAAA,kBACR,WAAW,YAAY;AAAA,gBACzB,CAAC;AAED;AAAA,cACF;AAEA,kBAAI,mEAAyB,IAAI,mBAAmB;AAClD,sBAAM,KAAK;AAAA,kBACT,MAAM;AAAA,kBACN,SAAS,KAAK;AAAA,kBACd,MAAM;AAAA,kBACN,OACE,OAAO,KAAK,UAAU,WAClB,KAAK,QACL,KAAK,UAAU,KAAK,KAAK;AAAA,kBAC/B;AAAA,gBACF,CAAC;AACD;AAAA,cACF;AAEA,oBAAM,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,SAAS,KAAK;AAAA,gBACd,MAAM;AAAA,gBACN,WAAWL,4BAA2B,KAAK,KAAK;AAAA,gBAChD;AAAA,cACF,CAAC;AACD;AAAA,YACF;AAAA;AAAA,YAGA,KAAK,eAAe;AAIlB,kBACE,KAAK,OAAO,SAAS,sBACpB,KAAK,OAAO,SAAS,UACpB,OAAO,KAAK,OAAO,UAAU,YAC7B,KAAK,OAAO,SAAS,QACrB,UAAU,KAAK,OAAO,SACtB,KAAK,OAAO,MAAM,SAAS,oBAC7B;AACA;AAAA,cACF;AAEA,kBAAI,iBAAiB;AACnB;AAAA,cACF;AAEA,oBAAM,yBAAyB,gBAAgB;AAAA,gBAC7C,KAAK;AAAA,cACP;AAEA,kBAAI,2BAA2B,eAAe;AAC5C,sBAAM,UAEF,sBAAK,oBAAL,mBAAuB,yBAAvB,mBAGC,WAHD,YAGW,KAAK;AAEpB,oBAAI,OAAO;AACT,wBAAM,KAAK,EAAE,MAAM,kBAAkB,IAAI,OAAO,CAAC;AAAA,gBACnD,WAAW,KAAK,OAAO,SAAS,QAAQ;AACtC,wBAAM,eAAe,MAAM,cAAc;AAAA,oBACvC,OAAO,KAAK,OAAO;AAAA,oBACnB,QAAQ;AAAA,kBACV,CAAC;AAED,wBAAM,KAAK;AAAA,oBACT,MAAM;AAAA,oBACN,IAAI;AAAA,oBACJ,WAAW;AAAA,oBACX,SAAS;AAAA,oBACT,QAAQ;AAAA,oBACR,OAAO,aAAa;AAAA,kBACtB,CAAC;AAAA,gBACH;AAEA;AAAA,cACF;AASA,kBAAI,gBAAgB,2BAA2B,SAAS;AACtD,oBAAI,KAAK,OAAO,SAAS,QAAQ;AAC/B,wBAAM,eAAe,MAAM,cAAc;AAAA,oBACvC,OAAO,KAAK,OAAO;AAAA,oBACnB,QAAQ;AAAA,kBACV,CAAC;AACD,wBAAM,KAAK;AAAA,oBACT,MAAM;AAAA,oBACN,SAAS,KAAK;AAAA,oBACd,QAAQ,aAAa,OAAO,IAAI,WAAS;AAAA,sBACvC,QAAQ,KAAK;AAAA,sBACb,QAAQ,KAAK;AAAA,sBACb,SACE,KAAK,QAAQ,SAAS,YAClB,EAAE,MAAM,UAAmB,IAC3B;AAAA,wBACE,MAAM;AAAA,wBACN,WAAW,KAAK,QAAQ;AAAA,sBAC1B;AAAA,oBACR,EAAE;AAAA,kBACJ,CAAC;AAAA,gBACH;AACA;AAAA,cACF;AAEA,kBAAI,OAAO;AACT,sBAAM,UAEF,sBAAK,oBAAL,mBAAuB,yBAAvB,mBAGC,WAHD,YAGW,KAAK;AACpB,sBAAM,KAAK,EAAE,MAAM,kBAAkB,IAAI,OAAO,CAAC;AAAA,cACnD,OAAO;AACL,yBAAS,KAAK;AAAA,kBACZ,MAAM;AAAA,kBACN,SAAS,2BAA2B,KAAK,QAAQ;AAAA,gBACnD,CAAC;AAAA,cACH;AAEA;AAAA,YACF;AAAA,YAEA,KAAK,aAAa;AAChB,oBAAM,kBAAkB,MAAMM,sBAAqB;AAAA,gBACjD,UAAU;AAAA,gBACV,iBAAiB,KAAK;AAAA,gBACtB,QAAQ;AAAA,cACV,CAAC;AAED,oBAAM,cAAc,mDAAiB;AAErC,kBAAI,mBAAmB,eAAe,MAAM;AAC1C;AAAA,cACF;AAEA,kBAAI,eAAe,MAAM;AACvB,sBAAM,mBAAmB,kBAAkB,WAAW;AAEtD,oBAAI,OAAO;AAGT,sBAAI,qBAAqB,QAAW;AAClC,0BAAM,KAAK,EAAE,MAAM,kBAAkB,IAAI,YAAY,CAAC;AAGtD,sCAAkB,WAAW,IAAI;AAAA,sBAC/B,MAAM;AAAA,sBACN,IAAI;AAAA,sBACJ,SAAS,CAAC;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF,OAAO;AACL,wBAAM,eAGD,CAAC;AAEN,sBAAI,KAAK,KAAK,SAAS,GAAG;AACxB,iCAAa,KAAK;AAAA,sBAChB,MAAM;AAAA,sBACN,MAAM,KAAK;AAAA,oBACb,CAAC;AAAA,kBACH,WAAW,qBAAqB,QAAW;AACzC,6BAAS,KAAK;AAAA,sBACZ,MAAM;AAAA,sBACN,SAAS,+FAA+F,KAAK,UAAU,IAAI,CAAC;AAAA,oBAC9H,CAAC;AAAA,kBACH;AAEA,sBAAI,qBAAqB,QAAW;AAClC,sCAAkB,WAAW,IAAI;AAAA,sBAC/B,MAAM;AAAA,sBACN,IAAI;AAAA,sBACJ,mBACE,mDAAiB;AAAA,sBACnB,SAAS;AAAA,oBACX;AACA,0BAAM,KAAK,kBAAkB,WAAW,CAAC;AAAA,kBAC3C,OAAO;AACL,qCAAiB,QAAQ,KAAK,GAAG,YAAY;AAG7C,yBAAI,mDAAiB,8BAA6B,MAAM;AACtD,uCAAiB,oBACf,gBAAgB;AAAA,oBACpB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,OAAO;AAML,sBAAM,mBACJ,mDAAiB;AAEnB,oBAAI,oBAAoB,MAAM;AAC5B,wBAAM,eAGD,CAAC;AACN,sBAAI,KAAK,KAAK,SAAS,GAAG;AACxB,iCAAa,KAAK;AAAA,sBAChB,MAAM;AAAA,sBACN,MAAM,KAAK;AAAA,oBACb,CAAC;AAAA,kBACH;AACA,wBAAM,KAAK;AAAA,oBACT,MAAM;AAAA,oBACN,mBAAmB;AAAA,oBACnB,SAAS;AAAA,kBACX,CAAC;AAAA,gBACH,OAAO;AACL,2BAAS,KAAK;AAAA,oBACZ,MAAM;AAAA,oBACN,SAAS,0EAA0E,KAAK,UAAU,IAAI,CAAC;AAAA,kBACzG,CAAC;AAAA,gBACH;AAAA,cACF;AACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,mBAAW,QAAQ,SAAS;AAC1B,cAAI,KAAK,SAAS,0BAA0B;AAC1C,kBAAM,mBACJ;AAEF,gBAAI,qBAAqB,IAAI,iBAAiB,UAAU,GAAG;AACzD;AAAA,YACF;AACA,iCAAqB,IAAI,iBAAiB,UAAU;AAEpD,gBAAI,OAAO;AACT,oBAAM,KAAK;AAAA,gBACT,MAAM;AAAA,gBACN,IAAI,iBAAiB;AAAA,cACvB,CAAC;AAAA,YACH;AAEA,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,qBAAqB,iBAAiB;AAAA,cACtC,SAAS,iBAAiB;AAAA,YAC5B,CAAC;AACD;AAAA,UACF;AAEA,gBAAM,SAAS,KAAK;AAGpB,cAAI,OAAO,SAAS,oBAAoB;AACtC,kBAAM,cACJ,kBAAO,oBAAP,mBAAwB,WAAxB,mBACC;AAEH,gBAAI,YAAY;AACd;AAAA,YACF;AAAA,UACF;AAEA,gBAAM,mBAAmB,gBAAgB;AAAA,YACvC,KAAK;AAAA,UACP;AAEA,cAAI,qBAAqB,iBAAiB,OAAO,SAAS,QAAQ;AAChE,kBAAM,eAAe,MAAM,cAAc;AAAA,cACvC,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,YACV,CAAC;AAED,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,WAAW;AAAA,cACX,SAAS,KAAK;AAAA,cACd,QAAQ;AAAA,cACR,OAAO,aAAa;AAAA,YACtB,CAAC;AACD;AAAA,UACF;AAEA,cACE,qBACA,qBAAqB,iBACrB,OAAO,SAAS,QAChB;AACA,kBAAM,eAAe,MAAM,cAAc;AAAA,cACvC,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,YACV,CAAC;AAED,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,SAAS,KAAK;AAAA,cACd,QAAQ,aAAa;AAAA,YACvB,CAAC;AACD;AAAA,UACF;AAEA,cACE,gBACA,qBAAqB,WACrB,OAAO,SAAS,QAChB;AACA,kBAAM,eAAe,MAAM,cAAc;AAAA,cACvC,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,YACV,CAAC;AAED,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,SAAS,KAAK;AAAA,cACd,QAAQ,aAAa,OAAO,IAAI,WAAS;AAAA,gBACvC,QAAQ,KAAK;AAAA,gBACb,QAAQ,KAAK;AAAA,gBACb,SACE,KAAK,QAAQ,SAAS,YAClB,EAAE,MAAM,UAAmB,IAC3B;AAAA,kBACE,MAAM;AAAA,kBACN,WAAW,KAAK,QAAQ;AAAA,gBAC1B;AAAA,cACR,EAAE;AAAA,YACJ,CAAC;AACD;AAAA,UACF;AAEA,cACE,qBACA,KAAK,aAAa,iBAClB,OAAO,SAAS,QAChB;AACA,kBAAM,eAAe,MAAM,cAAc;AAAA,cACvC,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,YACV,CAAC;AAED,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,SAAS,KAAK;AAAA,cACd,QAAQ,aAAa;AAAA,cACrB,QAAQ,aAAa;AAAA,YACvB,CAAC;AACD;AAAA,UACF;AAEA,cAAI,mEAAyB,IAAI,mBAAmB;AAClD,gBAAI;AACJ,oBAAQ,OAAO,MAAM;AAAA,cACnB,KAAK;AAAA,cACL,KAAK;AACH,8BAAc,OAAO;AACrB;AAAA,cACF,KAAK;AACH,+BAAc,YAAO,WAAP,YAAiB;AAC/B;AAAA,cACF,KAAK;AAAA,cACL,KAAK;AACH,8BAAc,KAAK,UAAU,OAAO,KAAK;AACzC;AAAA,cACF,KAAK;AACH,8BAAc,OAAO,MAClB,IAAI,UAAQ;AAvrB/B,sBAAAL,KAAAC,KAAAC,KAAAI,KAAAC;AAwrBoB,0BAAQ,KAAK,MAAM;AAAA,oBACjB,KAAK;AACH,6BAAO,EAAE,MAAM,cAAuB,MAAM,KAAK,KAAK;AAAA,oBACxD,KAAK;AACH,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,WAAW,QAAQ,KAAK,SAAS,WAAW,KAAK,IAAI;AAAA,wBACrD,SACEN,OAAAD,MAAA,KAAK,oBAAL,gBAAAA,IAAuB,yBAAvB,gBAAAC,IACI;AAAA,sBACR;AAAA,oBACF,KAAK;AACH,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,WAAW,KAAK;AAAA,wBAChB,SACEK,OAAAJ,MAAA,KAAK,oBAAL,gBAAAA,IAAuB,yBAAvB,gBAAAI,IACI;AAAA,sBACR;AAAA,oBACF,KAAK;AACH,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,WAAUC,MAAA,KAAK,aAAL,OAAAA,MAAiB;AAAA,wBAC3B,WAAW,QAAQ,KAAK,SAAS,WAAW,KAAK,IAAI;AAAA,sBACvD;AAAA,oBACF,KAAK;AACH,6BAAO;AAAA,wBACL,MAAM;AAAA,wBACN,UAAU,KAAK;AAAA,sBACjB;AAAA,oBACF;AACE,+BAAS,KAAK;AAAA,wBACZ,MAAM;AAAA,wBACN,SAAS,8CAA8C,KAAK,IAAI;AAAA,sBAClE,CAAC;AACD,6BAAO;AAAA,kBACX;AAAA,gBACF,CAAC,EACA,OAAO,aAAa;AACvB;AAAA,cACF;AACE,8BAAc;AAAA,YAClB;AACA,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,SAAS,KAAK;AAAA,cACd,QAAQ;AAAA,YACV,CAA+C;AAC/C;AAAA,UACF;AAEA,cAAI;AACJ,kBAAQ,OAAO,MAAM;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AACH,6BAAe,OAAO;AACtB;AAAA,YACF,KAAK;AACH,8BAAe,YAAO,WAAP,YAAiB;AAChC;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,6BAAe,KAAK,UAAU,OAAO,KAAK;AAC1C;AAAA,YACF,KAAK;AACH,6BAAe,OAAO,MACnB,IAAI,UAAQ;AA1vB7B,oBAAAP,KAAAC,KAAAC,KAAAI,KAAAC;AA2vBkB,wBAAQ,KAAK,MAAM;AAAA,kBACjB,KAAK,QAAQ;AACX,2BAAO,EAAE,MAAM,cAAuB,MAAM,KAAK,KAAK;AAAA,kBACxD;AAAA,kBAEA,KAAK,cAAc;AACjB,2BAAO;AAAA,sBACL,MAAM;AAAA,sBACN,WAAW,QAAQ,KAAK,SAAS,WAAW,KAAK,IAAI;AAAA,sBACrD,SACEN,OAAAD,MAAA,KAAK,oBAAL,gBAAAA,IAAuB,yBAAvB,gBAAAC,IACI;AAAA,oBACR;AAAA,kBACF;AAAA,kBAEA,KAAK,aAAa;AAChB,2BAAO;AAAA,sBACL,MAAM;AAAA,sBACN,WAAW,KAAK;AAAA,sBAChB,SACEK,OAAAJ,MAAA,KAAK,oBAAL,gBAAAA,IAAuB,yBAAvB,gBAAAI,IACI;AAAA,oBACR;AAAA,kBACF;AAAA,kBAEA,KAAK,aAAa;AAChB,2BAAO;AAAA,sBACL,MAAM;AAAA,sBACN,WAAUC,MAAA,KAAK,aAAL,OAAAA,MAAiB;AAAA,sBAC3B,WAAW,QAAQ,KAAK,SAAS,WAAW,KAAK,IAAI;AAAA,oBACvD;AAAA,kBACF;AAAA,kBAEA,KAAK,YAAY;AACf,2BAAO;AAAA,sBACL,MAAM;AAAA,sBACN,UAAU,KAAK;AAAA,oBACjB;AAAA,kBACF;AAAA,kBAEA,SAAS;AACP,6BAAS,KAAK;AAAA,sBACZ,MAAM;AAAA,sBACN,SAAS,uCAAuC,KAAK,IAAI;AAAA,oBAC3D,CAAC;AACD,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,cACF,CAAC,EACA,OAAO,aAAa;AACvB;AAAA,UACJ;AAEA,gBAAM,KAAK;AAAA,YACT,MAAM;AAAA,YACN,SAAS,KAAK;AAAA,YACd,QAAQ;AAAA,UACV,CAAC;AAAA,QACH;AAEA;AAAA,MACF;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAGA,MACE,CAAC,SACD,MAAM;AAAA,IACJ,UACE,UAAU,QACV,KAAK,SAAS,eACd,KAAK,qBAAqB;AAAA,EAC9B,GACA;AACA,aAAS,KAAK;AAAA,MACZ,MAAM;AAAA,MACN,SACE;AAAA,IACJ,CAAC;AACD,YAAQ,MAAM;AAAA,MACZ,UACE,EAAE,UAAU,SACZ,KAAK,SAAS,eACd,KAAK,qBAAqB;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO,EAAE,OAAO,SAAS;AAC3B;AAEA,IAAM,gDAAgDC,IAAE,OAAO;AAAA,EAC7D,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC3B,2BAA2BA,IAAE,OAAO,EAAE,QAAQ;AAChD,CAAC;;;AC51BM,SAAS,8BAA8B;AAAA,EAC5C;AAAA,EACA;AACF,GAI2C;AACzC,UAAQ,cAAc;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,kBAAkB,eAAe;AAAA,IAC1C,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO,kBAAkB,eAAe;AAAA,EAC5C;AACF;;;ACpBA;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAElB,IAAMC,mBAAwCD,IAAE;AAAA,EAAK,MACnDA,IAAE,MAAM;AAAA,IACNA,IAAE,OAAO;AAAA,IACTA,IAAE,OAAO;AAAA,IACTA,IAAE,QAAQ;AAAA,IACVA,IAAE,KAAK;AAAA,IACPA,IAAE,MAAMC,gBAAe;AAAA,IACvBD,IAAE,OAAOA,IAAE,OAAO,GAAGC,iBAAgB,SAAS,CAAC;AAAA,EACjD,CAAC;AACH;AA+bO,IAAM,6BAA6BH;AAAA,EAAW,MACnDC;AAAA,IACEC,IAAE,MAAM;AAAA,MACNA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,4BAA4B;AAAA,QAC5C,SAASA,IAAE,OAAO;AAAA,QAClB,OAAOA,IAAE,OAAO;AAAA,QAChB,UAAUA,IACP;AAAA,UACCA,IAAE,OAAO;AAAA,YACP,OAAOA,IAAE,OAAO;AAAA,YAChB,SAASA,IAAE,OAAO;AAAA,YAClB,cAAcA,IAAE;AAAA,cACdA,IAAE,OAAO;AAAA,gBACP,OAAOA,IAAE,OAAO;AAAA,gBAChB,SAASA,IAAE,OAAO;AAAA,cACpB,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH,EACC,QAAQ;AAAA,MACb,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,KAAK,CAAC,sBAAsB,qBAAqB,CAAC;AAAA,QAC1D,UAAUA,IAAE,OAAO;AAAA,UACjB,oBAAoBA,IAAE,OAAO,EAAE,QAAQA,IAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AAAA,UAC7D,OAAOA,IAAE,OAAO;AAAA,YACd,cAAcA,IAAE,OAAO;AAAA,YACvB,sBAAsBA,IACnB,OAAO,EAAE,eAAeA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAC9C,QAAQ;AAAA,YACX,eAAeA,IAAE,OAAO;AAAA,YACxB,uBAAuBA,IACpB,OAAO,EAAE,kBAAkBA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EACjD,QAAQ;AAAA,UACb,CAAC;AAAA,UACD,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA,QACnC,CAAC;AAAA,MACH,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,iBAAiB;AAAA,QACjC,UAAUA,IAAE,OAAO;AAAA,UACjB,OAAOA,IACJ,OAAO;AAAA,YACN,MAAMA,IAAE,OAAO,EAAE,QAAQ;AAAA,YACzB,SAASA,IAAE,OAAO;AAAA,UACpB,CAAC,EACA,QAAQ;AAAA,UACX,oBAAoBA,IAAE,OAAO,EAAE,QAAQA,IAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AAAA,UAC7D,OAAOA,IACJ,OAAO;AAAA,YACN,cAAcA,IAAE,OAAO;AAAA,YACvB,sBAAsBA,IACnB,OAAO,EAAE,eAAeA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAC9C,QAAQ;AAAA,YACX,eAAeA,IAAE,OAAO;AAAA,YACxB,uBAAuBA,IACpB,OAAO,EAAE,kBAAkBA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EACjD,QAAQ;AAAA,UACb,CAAC,EACA,QAAQ;AAAA,UACX,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA,QACnC,CAAC;AAAA,MACH,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,QAClC,UAAUA,IAAE,OAAO;AAAA,UACjB,IAAIA,IAAE,OAAO;AAAA,UACb,YAAYA,IAAE,OAAO;AAAA,UACrB,OAAOA,IAAE,OAAO;AAAA,UAChB,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA,QACnC,CAAC;AAAA,MACH,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,4BAA4B;AAAA,QAC5C,cAAcA,IAAE,OAAO;AAAA,QACvB,MAAMA,IAAE,mBAAmB,QAAQ;AAAA,UACjCA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,SAAS;AAAA,YACzB,IAAIA,IAAE,OAAO;AAAA,YACb,OAAOA,IAAE,KAAK,CAAC,cAAc,cAAc,CAAC,EAAE,QAAQ;AAAA,UACxD,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,YAC3B,IAAIA,IAAE,OAAO;AAAA,YACb,mBAAmBA,IAAE,OAAO,EAAE,QAAQ;AAAA,UACxC,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,YAC/B,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,MAAMA,IAAE,OAAO;AAAA,YACf,WAAWA,IAAE,OAAO;AAAA,YACpB,WAAWA,IAAE,OAAO,EAAE,QAAQ;AAAA,UAChC,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,iBAAiB;AAAA,YACjC,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,UACnB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,YAC/B,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,UACnB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,UACf,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,uBAAuB;AAAA,YACvC,IAAIA,IAAE,OAAO;AAAA,UACf,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,uBAAuB;AAAA,YACvC,IAAIA,IAAE,OAAO;AAAA,YACb,cAAcA,IAAE,OAAO;AAAA,YACvB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC1B,SAASA,IACN;AAAA,cACCA,IAAE,mBAAmB,QAAQ;AAAA,gBAC3BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,MAAM,GAAG,MAAMA,IAAE,OAAO,EAAE,CAAC;AAAA,gBACtDA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,OAAO,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC;AAAA,cACxD,CAAC;AAAA,YACH,EACC,SAAS;AAAA,YACZ,QAAQA,IAAE,OAAO;AAAA,UACnB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,UAAU;AAAA,YAC1B,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,YACjB,qBAAqBA,IAAE,OAAO,EAAE,QAAQ;AAAA,UAC1C,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,gBAAgB;AAAA,YAChC,IAAIA,IAAE,OAAO;AAAA,UACf,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,sBAAsB;AAAA,YACtC,IAAIA,IAAE,OAAO;AAAA,UACf,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,WAAW,CAAC;AAAA,YAC3C,WAAWA,IAAE,mBAAmB,QAAQ;AAAA,cACtCA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,gBACf,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,gBACf,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,MAAMA,IAAE,OAAO;AAAA,YACf,OAAOA,IAAE,OAAO;AAAA,UAClB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,YAAY;AAAA,YAC5B,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,QAAQA,IAAE,OAAO;AAAA,cACf,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,YAC9B,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,mBAAmB;AAAA,YACnC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,QAAQA,IAAE;AAAA,cACRA,IAAE,OAAO;AAAA,gBACP,QAAQA,IAAE,OAAO;AAAA,gBACjB,QAAQA,IAAE,OAAO;AAAA,gBACjB,SAASA,IAAE,mBAAmB,QAAQ;AAAA,kBACpCA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,SAAS,EAAE,CAAC;AAAA,kBACvCA,IAAE,OAAO;AAAA,oBACP,MAAMA,IAAE,QAAQ,MAAM;AAAA,oBACtB,WAAWA,IAAE,OAAO;AAAA,kBACtB,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,YACtC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC7B,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,WAAWA,IAAE,QAAQ;AAAA,UACvB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,oBAAoB;AAAA,YACpC,IAAIA,IAAE,OAAO;AAAA,YACb,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,YACtC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC7B,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,OAAOA,IAAE,MAAMA,IAAE,OAAOA,IAAE,OAAO,GAAGC,iBAAgB,SAAS,CAAC,CAAC;AAAA,UACjE,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,MACDD,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,2BAA2B;AAAA,QAC3C,cAAcA,IAAE,OAAO;AAAA,QACvB,MAAMA,IAAE,mBAAmB,QAAQ;AAAA,UACjCA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,SAAS;AAAA,YACzB,IAAIA,IAAE,OAAO;AAAA,YACb,OAAOA,IAAE,KAAK,CAAC,cAAc,cAAc,CAAC,EAAE,QAAQ;AAAA,UACxD,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,YAC3B,IAAIA,IAAE,OAAO;AAAA,YACb,mBAAmBA,IAAE,OAAO,EAAE,QAAQ;AAAA,UACxC,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,YAC/B,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,MAAMA,IAAE,OAAO;AAAA,YACf,WAAWA,IAAE,OAAO;AAAA,YACpB,QAAQA,IAAE,QAAQ,WAAW;AAAA,YAC7B,WAAWA,IAAE,OAAO,EAAE,QAAQ;AAAA,UAChC,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,MAAMA,IAAE,OAAO;AAAA,YACf,OAAOA,IAAE,OAAO;AAAA,YAChB,QAAQA,IAAE,QAAQ,WAAW;AAAA,UAC/B,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,uBAAuB;AAAA,YACvC,IAAIA,IAAE,OAAO;AAAA,YACb,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC1B,cAAcA,IAAE,OAAO;AAAA,YACvB,SAASA,IACN;AAAA,cACCA,IAAE,mBAAmB,QAAQ;AAAA,gBAC3BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,MAAM,GAAG,MAAMA,IAAE,OAAO,EAAE,CAAC;AAAA,gBACtDA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,OAAO,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC;AAAA,cACxD,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,uBAAuB;AAAA,YACvC,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,UACnB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,iBAAiB;AAAA,YACjC,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,YACjB,QAAQA,IACL,mBAAmB,QAAQ;AAAA,cAC1BA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,QAAQ;AAAA,gBACxB,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAAA,gBAC1B,SAASA,IACN;AAAA,kBACCA,IAAE,mBAAmB,QAAQ;AAAA,oBAC3BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,KAAK,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC;AAAA,oBACpDA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,KAAK,GAAG,MAAMA,IAAE,OAAO,EAAE,CAAC;AAAA,kBACvD,CAAC;AAAA,gBACH,EACC,QAAQ;AAAA,cACb,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,gBAC3B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,cAC1B,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,cAAc;AAAA,gBAC9B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,gBACxB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,cAC9B,CAAC;AAAA,YACH,CAAC,EACA,QAAQ;AAAA,UACb,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,YAC3B,SAASA,IACN;AAAA,cACCA,IAAE,OAAO;AAAA,gBACP,YAAYA,IAAE;AAAA,kBACZA,IAAE,OAAO;AAAA,kBACTA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,CAAC;AAAA,gBAC/C;AAAA,gBACA,SAASA,IAAE,OAAO;AAAA,gBAClB,UAAUA,IAAE,OAAO;AAAA,gBACnB,OAAOA,IAAE,OAAO;AAAA,gBAChB,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,YACH,EACC,QAAQ;AAAA,UACb,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,OAAO;AAAA,cACf,MAAMA,IAAE,QAAQ,MAAM;AAAA,cACtB,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,cAC3B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,cAChC,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,cAC1B,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,cACvC,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,YACjD,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,YAC/B,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,QAAQ,WAAW;AAAA,UAC/B,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,UAAU;AAAA,YAC1B,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,YACjB,WAAWA,IAAE,OAAO;AAAA,YACpB,MAAMA,IAAE,OAAO;AAAA,YACf,cAAcA,IAAE,OAAO;AAAA,YACvB,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAAA,YAC3B,OAAOA,IACJ,MAAM;AAAA,cACLA,IAAE,OAAO;AAAA,cACTA,IACG,OAAO;AAAA,gBACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,gBAC1B,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,gBACjD,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,cAC/B,CAAC,EACA,MAAM;AAAA,YACX,CAAC,EACA,QAAQ;AAAA,YACX,qBAAqBA,IAAE,OAAO,EAAE,QAAQ;AAAA,UAC1C,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,gBAAgB;AAAA,YAChC,IAAIA,IAAE,OAAO;AAAA,YACb,cAAcA,IAAE,OAAO;AAAA,YACvB,OAAOA,IAAE;AAAA,cACPA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,OAAO;AAAA,gBACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,gBACjC,cAAcA,IAAE,IAAI;AAAA,gBACpB,aAAaA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,cAC1D,CAAC;AAAA,YACH;AAAA,YACA,OAAOA,IACJ,MAAM;AAAA,cACLA,IAAE,OAAO;AAAA,cACTA,IACG,OAAO;AAAA,gBACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,gBAC1B,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,gBACjD,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,cAC/B,CAAC,EACA,MAAM;AAAA,YACX,CAAC,EACA,SAAS;AAAA,UACd,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,sBAAsB;AAAA,YACtC,IAAIA,IAAE,OAAO;AAAA,YACb,cAAcA,IAAE,OAAO;AAAA,YACvB,MAAMA,IAAE,OAAO;AAAA,YACf,WAAWA,IAAE,OAAO;AAAA,YACpB,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,UAC3C,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,WAAW,CAAC;AAAA,YAC3C,WAAWA,IAAE,mBAAmB,QAAQ;AAAA,cACtCA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,gBACf,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,gBACf,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,YAAY;AAAA,YAC5B,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,QAAQA,IAAE,OAAO;AAAA,cACf,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,YAC9B,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,mBAAmB;AAAA,YACnC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,QAAQA,IAAE;AAAA,cACRA,IAAE,OAAO;AAAA,gBACP,QAAQA,IAAE,OAAO;AAAA,gBACjB,QAAQA,IAAE,OAAO;AAAA,gBACjB,SAASA,IAAE,mBAAmB,QAAQ;AAAA,kBACpCA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,SAAS,EAAE,CAAC;AAAA,kBACvCA,IAAE,OAAO;AAAA,oBACP,MAAMA,IAAE,QAAQ,MAAM;AAAA,oBACtB,WAAWA,IAAE,OAAO;AAAA,kBACtB,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,YACtC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC7B,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,WAAWA,IAAE,QAAQ;AAAA,UACvB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,oBAAoB;AAAA,YACpC,IAAIA,IAAE,OAAO;AAAA,YACb,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,YACtC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC7B,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,OAAOA,IAAE,MAAMA,IAAE,OAAOA,IAAE,OAAO,GAAGC,iBAAgB,SAAS,CAAC,CAAC;AAAA,UACjE,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,MACDD,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,wCAAwC;AAAA,QACxD,SAASA,IAAE,OAAO;AAAA,QAClB,cAAcA,IAAE,OAAO;AAAA,QACvB,OAAOA,IAAE,OAAO;AAAA,MAClB,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,uCAAuC;AAAA,QACvD,SAASA,IAAE,OAAO;AAAA,QAClB,cAAcA,IAAE,OAAO;AAAA,QACvB,OAAOA,IAAE,OAAO;AAAA,MAClB,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,8CAA8C;AAAA,QAC9D,SAASA,IAAE,OAAO;AAAA,QAClB,cAAcA,IAAE,OAAO;AAAA,QACvB,mBAAmBA,IAAE,OAAO;AAAA,MAC9B,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,2CAA2C;AAAA,QAC3D,SAASA,IAAE,OAAO;AAAA,QAClB,cAAcA,IAAE,OAAO;AAAA,QACvB,OAAOA,IAAE,OAAO;AAAA,MAClB,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,0CAA0C;AAAA,QAC1D,SAASA,IAAE,OAAO;AAAA,QAClB,cAAcA,IAAE,OAAO;AAAA,QACvB,MAAMA,IAAE,OAAO;AAAA,MACjB,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,uCAAuC;AAAA,QACvD,YAAYA,IAAE,mBAAmB,QAAQ;AAAA,UACvCA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,cAAc;AAAA,YAC9B,aAAaA,IAAE,OAAO;AAAA,YACtB,WAAWA,IAAE,OAAO;AAAA,YACpB,KAAKA,IAAE,OAAO;AAAA,YACd,OAAOA,IAAE,OAAO;AAAA,UAClB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,YAC/B,SAASA,IAAE,OAAO;AAAA,YAClB,UAAUA,IAAE,OAAO;AAAA,YACnB,OAAOA,IAAE,OAAO;AAAA,UAClB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,yBAAyB;AAAA,YACzC,cAAcA,IAAE,OAAO;AAAA,YACvB,SAASA,IAAE,OAAO;AAAA,YAClB,UAAUA,IAAE,OAAO;AAAA,YACnB,aAAaA,IAAE,OAAO;AAAA,YACtB,WAAWA,IAAE,OAAO;AAAA,UACtB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,YAC3B,SAASA,IAAE,OAAO;AAAA,YAClB,OAAOA,IAAE,OAAO;AAAA,UAClB,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,uCAAuC;AAAA,QACvD,SAASA,IAAE,OAAO;AAAA,QAClB,eAAeA,IAAE,OAAO;AAAA,MAC1B,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,uCAAuC;AAAA,QACvD,SAASA,IAAE,OAAO;AAAA,QAClB,eAAeA,IAAE,OAAO;AAAA,QACxB,OAAOA,IAAE,OAAO;AAAA,MAClB,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,sCAAsC;AAAA,QACtD,SAASA,IAAE,OAAO;AAAA,QAClB,eAAeA,IAAE,OAAO;AAAA,MAC1B,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,gDAAgD;AAAA,QAChE,SAASA,IAAE,OAAO;AAAA,QAClB,cAAcA,IAAE,OAAO;AAAA,QACvB,OAAOA,IAAE,OAAO;AAAA,QAChB,aAAaA,IAAE,OAAO,EAAE,QAAQ;AAAA,MAClC,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,+CAA+C;AAAA,QAC/D,SAASA,IAAE,OAAO;AAAA,QAClB,cAAcA,IAAE,OAAO;AAAA,QACvB,MAAMA,IAAE,OAAO;AAAA,MACjB,CAAC;AAAA,MACDA,IAAE,OAAO;AAAA,QACP,MAAMA,IAAE,QAAQ,OAAO;AAAA,QACvB,iBAAiBA,IAAE,OAAO;AAAA,QAC1B,OAAOA,IAAE,OAAO;AAAA,UACd,MAAMA,IAAE,OAAO;AAAA,UACf,MAAMA,IAAE,OAAO;AAAA,UACf,SAASA,IAAE,OAAO;AAAA,UAClB,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC5B,CAAC;AAAA,MACH,CAAC;AAAA,MACDA,IACG,OAAO,EAAE,MAAMA,IAAE,OAAO,EAAE,CAAC,EAC3B,MAAM,EACN,UAAU,YAAU;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,MAAM;AAAA,MACjB,EAAE;AAAA;AAAA,IACN,CAAC;AAAA,EACH;AACF;AAoBO,IAAM,gCAAgCF;AAAA,EAAW,MACtDC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,IAAIA,IAAE,OAAO,EAAE,SAAS;AAAA,MACxB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,MAChC,OAAOA,IACJ,OAAO;AAAA,QACN,SAASA,IAAE,OAAO;AAAA,QAClB,MAAMA,IAAE,OAAO;AAAA,QACf,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAAA,QAC1B,MAAMA,IAAE,OAAO;AAAA,MACjB,CAAC,EACA,QAAQ;AAAA,MACX,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,QAAQA,IACL;AAAA,QACCA,IAAE,mBAAmB,QAAQ;AAAA,UAC3BA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,SAAS;AAAA,YACzB,MAAMA,IAAE,QAAQ,WAAW;AAAA,YAC3B,IAAIA,IAAE,OAAO;AAAA,YACb,OAAOA,IAAE,KAAK,CAAC,cAAc,cAAc,CAAC,EAAE,QAAQ;AAAA,YACtD,SAASA,IAAE;AAAA,cACTA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,gBACf,UAAUA,IACP;AAAA,kBACCA,IAAE,OAAO;AAAA,oBACP,OAAOA,IAAE,OAAO;AAAA,oBAChB,SAASA,IAAE,OAAO;AAAA,oBAClB,cAAcA,IAAE;AAAA,sBACdA,IAAE,OAAO;AAAA,wBACP,OAAOA,IAAE,OAAO;AAAA,wBAChB,SAASA,IAAE,OAAO;AAAA,sBACpB,CAAC;AAAA,oBACH;AAAA,kBACF,CAAC;AAAA,gBACH,EACC,QAAQ;AAAA,gBACX,aAAaA,IAAE;AAAA,kBACbA,IAAE,mBAAmB,QAAQ;AAAA,oBAC3BA,IAAE,OAAO;AAAA,sBACP,MAAMA,IAAE,QAAQ,cAAc;AAAA,sBAC9B,aAAaA,IAAE,OAAO;AAAA,sBACtB,WAAWA,IAAE,OAAO;AAAA,sBACpB,KAAKA,IAAE,OAAO;AAAA,sBACd,OAAOA,IAAE,OAAO;AAAA,oBAClB,CAAC;AAAA,oBACDA,IAAE,OAAO;AAAA,sBACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,sBAC/B,SAASA,IAAE,OAAO;AAAA,sBAClB,UAAUA,IAAE,OAAO;AAAA,sBACnB,OAAOA,IAAE,OAAO;AAAA,oBAClB,CAAC;AAAA,oBACDA,IAAE,OAAO;AAAA,sBACP,MAAMA,IAAE,QAAQ,yBAAyB;AAAA,sBACzC,cAAcA,IAAE,OAAO;AAAA,sBACvB,SAASA,IAAE,OAAO;AAAA,sBAClB,UAAUA,IAAE,OAAO;AAAA,sBACnB,aAAaA,IAAE,OAAO;AAAA,sBACtB,WAAWA,IAAE,OAAO;AAAA,oBACtB,CAAC;AAAA,oBACDA,IAAE,OAAO;AAAA,sBACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,sBAC3B,SAASA,IAAE,OAAO;AAAA,sBAClB,OAAOA,IAAE,OAAO;AAAA,oBAClB,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,iBAAiB;AAAA,YACjC,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,YACjB,QAAQA,IACL,mBAAmB,QAAQ;AAAA,cAC1BA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,QAAQ;AAAA,gBACxB,OAAOA,IAAE,OAAO,EAAE,QAAQ;AAAA,gBAC1B,SAASA,IACN;AAAA,kBACCA,IAAE,mBAAmB,QAAQ;AAAA,oBAC3BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,KAAK,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC;AAAA,oBACpDA,IAAE,OAAO;AAAA,sBACP,MAAMA,IAAE,QAAQ,KAAK;AAAA,sBACrB,MAAMA,IAAE,OAAO;AAAA,oBACjB,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH,EACC,QAAQ;AAAA,cACb,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,gBAC3B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,cAC1B,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,cAAc;AAAA,gBAC9B,KAAKA,IAAE,OAAO,EAAE,QAAQ;AAAA,gBACxB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,cAC9B,CAAC;AAAA,YACH,CAAC,EACA,QAAQ;AAAA,UACb,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,YAC3B,SAASA,IACN;AAAA,cACCA,IAAE,OAAO;AAAA,gBACP,YAAYA,IAAE;AAAA,kBACZA,IAAE,OAAO;AAAA,kBACTA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,CAAC;AAAA,gBAC/C;AAAA,gBACA,SAASA,IAAE,OAAO;AAAA,gBAClB,UAAUA,IAAE,OAAO;AAAA,gBACnB,OAAOA,IAAE,OAAO;AAAA,gBAChB,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,YACH,EACC,QAAQ;AAAA,UACb,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,uBAAuB;AAAA,YACvC,IAAIA,IAAE,OAAO;AAAA,YACb,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC1B,cAAcA,IAAE,OAAO;AAAA,YACvB,SAASA,IACN;AAAA,cACCA,IAAE,mBAAmB,QAAQ;AAAA,gBAC3BA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,MAAM,GAAG,MAAMA,IAAE,OAAO,EAAE,CAAC;AAAA,gBACtDA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,OAAO,GAAG,KAAKA,IAAE,OAAO,EAAE,CAAC;AAAA,cACxD,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,uBAAuB;AAAA,YACvC,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,UACnB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,OAAO;AAAA,cACf,MAAMA,IAAE,QAAQ,MAAM;AAAA,cACtB,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,cAC3B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,cAChC,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,cAC1B,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,cACvC,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,YACjD,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,YAC/B,SAASA,IAAE,OAAO;AAAA,YAClB,MAAMA,IAAE,OAAO;AAAA,YACf,WAAWA,IAAE,OAAO;AAAA,YACpB,IAAIA,IAAE,OAAO;AAAA,YACb,WAAWA,IAAE,OAAO,EAAE,QAAQ;AAAA,UAChC,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,SAASA,IAAE,OAAO;AAAA,YAClB,MAAMA,IAAE,OAAO;AAAA,YACf,OAAOA,IAAE,OAAO;AAAA,YAChB,IAAIA,IAAE,OAAO;AAAA,UACf,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,eAAe;AAAA,YAC/B,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,UAC9B,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,WAAW;AAAA,YAC3B,IAAIA,IAAE,OAAO;AAAA,YACb,mBAAmBA,IAAE,OAAO,EAAE,QAAQ;AAAA,YACtC,SAASA,IAAE;AAAA,cACTA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,cAAc;AAAA,gBAC9B,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,UAAU;AAAA,YAC1B,IAAIA,IAAE,OAAO;AAAA,YACb,QAAQA,IAAE,OAAO;AAAA,YACjB,WAAWA,IAAE,OAAO;AAAA,YACpB,MAAMA,IAAE,OAAO;AAAA,YACf,cAAcA,IAAE,OAAO;AAAA,YACvB,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAAA,YAC3B,OAAOA,IACJ,MAAM;AAAA,cACLA,IAAE,OAAO;AAAA,cACTA,IACG,OAAO;AAAA,gBACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,gBAC1B,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,gBACjD,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,cAC/B,CAAC,EACA,MAAM;AAAA,YACX,CAAC,EACA,QAAQ;AAAA,YACX,qBAAqBA,IAAE,OAAO,EAAE,QAAQ;AAAA,UAC1C,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,gBAAgB;AAAA,YAChC,IAAIA,IAAE,OAAO;AAAA,YACb,cAAcA,IAAE,OAAO;AAAA,YACvB,OAAOA,IAAE;AAAA,cACPA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,OAAO;AAAA,gBACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,gBACjC,cAAcA,IAAE,IAAI;AAAA,gBACpB,aAAaA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,cAC1D,CAAC;AAAA,YACH;AAAA,YACA,OAAOA,IACJ,MAAM;AAAA,cACLA,IAAE,OAAO;AAAA,cACTA,IACG,OAAO;AAAA,gBACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,gBAC1B,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,gBACjD,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,cAC/B,CAAC,EACA,MAAM;AAAA,YACX,CAAC,EACA,SAAS;AAAA,UACd,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,sBAAsB;AAAA,YACtC,IAAIA,IAAE,OAAO;AAAA,YACb,cAAcA,IAAE,OAAO;AAAA,YACvB,MAAMA,IAAE,OAAO;AAAA,YACf,WAAWA,IAAE,OAAO;AAAA,YACpB,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,UAC3C,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,WAAW,CAAC;AAAA,YAC3C,WAAWA,IAAE,mBAAmB,QAAQ;AAAA,cACtCA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,gBACf,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,cACDA,IAAE,OAAO;AAAA,gBACP,MAAMA,IAAE,QAAQ,aAAa;AAAA,gBAC7B,MAAMA,IAAE,OAAO;AAAA,gBACf,MAAMA,IAAE,OAAO;AAAA,cACjB,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,YAAY;AAAA,YAC5B,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,QAAQA,IAAE,OAAO;AAAA,cACf,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,YAC9B,CAAC;AAAA,UACH,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,mBAAmB;AAAA,YACnC,IAAIA,IAAE,OAAO;AAAA,YACb,SAASA,IAAE,OAAO;AAAA,YAClB,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,QAAQA,IAAE;AAAA,cACRA,IAAE,OAAO;AAAA,gBACP,QAAQA,IAAE,OAAO;AAAA,gBACjB,QAAQA,IAAE,OAAO;AAAA,gBACjB,SAASA,IAAE,mBAAmB,QAAQ;AAAA,kBACpCA,IAAE,OAAO,EAAE,MAAMA,IAAE,QAAQ,SAAS,EAAE,CAAC;AAAA,kBACvCA,IAAE,OAAO;AAAA,oBACP,MAAMA,IAAE,QAAQ,MAAM;AAAA,oBACtB,WAAWA,IAAE,OAAO;AAAA,kBACtB,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,kBAAkB;AAAA,YAClC,IAAIA,IAAE,OAAO;AAAA,YACb,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,YACtC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC7B,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,WAAWA,IAAE,QAAQ;AAAA,UACvB,CAAC;AAAA,UACDA,IAAE,OAAO;AAAA,YACP,MAAMA,IAAE,QAAQ,oBAAoB;AAAA,YACpC,IAAIA,IAAE,OAAO;AAAA,YACb,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,YACtC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,YAC7B,QAAQA,IAAE,KAAK,CAAC,eAAe,aAAa,YAAY,CAAC;AAAA,YACzD,OAAOA,IAAE,MAAMA,IAAE,OAAOA,IAAE,OAAO,GAAGC,iBAAgB,SAAS,CAAC,CAAC;AAAA,UACjE,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,cAAcD,IAAE,OAAO,EAAE,QAAQ;AAAA,MACjC,oBAAoBA,IAAE,OAAO,EAAE,QAAQA,IAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AAAA,MAC7D,OAAOA,IACJ,OAAO;AAAA,QACN,cAAcA,IAAE,OAAO;AAAA,QACvB,sBAAsBA,IACnB,OAAO,EAAE,eAAeA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAC9C,QAAQ;AAAA,QACX,eAAeA,IAAE,OAAO;AAAA,QACxB,uBAAuBA,IACpB,OAAO,EAAE,kBAAkBA,IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EACjD,QAAQ;AAAA,MACb,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;ACl2CA;AAAA,EACE,cAAAE;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AASX,IAAM,mBAAmB;AAEzB,IAAM,mCAAmC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL;AA+DO,IAAM,4CAA4CF;AAAA,EAAW,MAClEC;AAAA,IACEC,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQP,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMjC,SAASA,IACN;AAAA,QACCA,IAAE,KAAK;AAAA,UACL;AAAA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH,EACC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOX,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBjC,UAAUA,IACP,MAAM,CAACA,IAAE,QAAQ,GAAGA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,gBAAgB,CAAC,CAAC,EAC5D,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOZ,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKjC,UAAUA,IAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAK1B,mBAAmBA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMvC,oBAAoBA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKvC,gBAAgBA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUnC,sBAAsBA,IAAE,KAAK,CAAC,aAAa,KAAK,CAAC,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAY3D,iBAAiBA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOpC,kBAAkBA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKrC,kBAAkBA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASrC,aAAaA,IAAE,KAAK,CAAC,QAAQ,QAAQ,YAAY,SAAS,CAAC,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,MAKrE,OAAOA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAM3B,kBAAkBA,IAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOtC,eAAeA,IAAE,KAAK,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMzD,YAAYA,IAAE,KAAK,CAAC,QAAQ,UAAU,CAAC,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQjD,MAAMA,IAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUzB,mBAAmBA,IAAE,KAAK,CAAC,UAAU,aAAa,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWtE,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYrC,cAAcA,IACX,OAAO;AAAA,QACN,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,IAAI,CAAC;AAAA,QACpC,MAAMA,IAAE,KAAK,CAAC,QAAQ,UAAU,CAAC,EAAE,SAAS;AAAA,MAC9C,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;ACjVA;AAAA,EACE,iCAAAC;AAAA,OAGK;AACP,SAAS,iBAAAC,sBAA2C;AAYpD,eAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GA8BG;AArDH;AAuDE,WAAQ,+BAAO,UAAS,QAAQ;AAEhC,QAAM,eAAkC,CAAC;AAEzC,MAAI,SAAS,MAAM;AACjB,WAAO,EAAE,OAAO,QAAW,YAAY,QAAW,aAAa;AAAA,EACjE;AAEA,QAAMC,eAA0C,CAAC;AACjD,QAAM,kCACJ,4DAA2B,oBAAI,IAAY;AAE7C,aAAW,QAAQ,OAAO;AACxB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK,YAAY;AACf,cAAM,iBAAgB,UAAK,oBAAL,mBAAsB;AAG5C,cAAM,eAAe,+CAAe;AAEpC,QAAAA,aAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,MAAM,KAAK;AAAA,UACX,aAAa,KAAK;AAAA,UAClB,YAAY,KAAK;AAAA,UACjB,GAAI,KAAK,UAAU,OAAO,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,UACrD,GAAI,gBAAgB,OAAO,EAAE,eAAe,aAAa,IAAI,CAAC;AAAA,QAChE,CAAC;AACD;AAAA,MACF;AAAA,MACA,KAAK,YAAY;AACf,gBAAQ,KAAK,IAAI;AAAA,UACf,KAAK,sBAAsB;AACzB,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AAED,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,kBAAkB,KAAK;AAAA,cACvB,iBAAiB,KAAK;AAAA,cACtB,iBAAiB,KAAK,UAClB;AAAA,gBACE,QAAQ,KAAK,QAAQ;AAAA,gBACrB,iBAAiB,KAAK,QAAQ;AAAA,cAChC,IACA;AAAA,cACJ,SAAS,KAAK;AAAA,YAChB,CAAC;AAED;AAAA,UACF;AAAA,UACA,KAAK,sBAAsB;AACzB,YAAAA,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,YACR,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,gBAAgB;AACnB,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AAED,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,GAAI,KAAK,eAAe;AAAA,gBACtB,aAAa,oBAAoB,KAAK,WAAW;AAAA,cACnD;AAAA,YACF,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,sBAAsB;AACzB,YAAAA,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,YACR,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,6BAA6B;AAChC,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AACD,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,qBAAqB,KAAK;AAAA,cAC1B,eAAe,KAAK;AAAA,YACtB,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,qBAAqB;AACxB,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AACD,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,SACE,KAAK,WAAW,OACZ,EAAE,iBAAiB,KAAK,QAAQ,eAAe,IAC/C;AAAA,cACN,qBAAqB,KAAK;AAAA,cAC1B,qBAAqB,KAAK;AAAA,cAC1B,eAAe,KAAK;AAAA,YACtB,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,2BAA2B;AAC9B,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AAED,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,WACE,KAAK,aAAa,OACd,EAAE,MAAM,QAAQ,UAAU,OAAU,IACpC,OAAO,KAAK,cAAc,WACxB,KAAK,YACL,EAAE,MAAM,QAAQ,UAAU,KAAK,UAAU,QAAQ;AAAA,YAC3D,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,2BAA2B;AAC9B,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AAED,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,YAAY,KAAK;AAAA,cACjB,gBAAgB,KAAK;AAAA,cACrB,kBAAkB,KAAK,iBACnB;AAAA,gBACE,SAAS,KAAK,eAAe;AAAA,gBAC7B,WAAW,KAAK,eAAe;AAAA,cACjC,IACA;AAAA,cACJ,OAAO,KAAK;AAAA,cACZ,YAAY,KAAK;AAAA,cACjB,gBAAgB,KAAK;AAAA,cACrB,SAAS,KAAK;AAAA,cACd,oBAAoB,KAAK;AAAA,cACzB,eAAe,KAAK;AAAA,cACpB,MAAM,KAAK;AAAA,YACb,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,cAAc;AACjB,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AAED,kBAAM,oBAAoB,CAAC,YAAsC;AAAA,cAC/D,YAAY,OAAO;AAAA,YACrB;AAEA,kBAAM,kBAAkB,KAAK;AAC7B,kBAAM,uBAOJ,mBAAmB,OACf,SACA,OAAO,oBAAoB,WACzB,kBACA,gBAAgB,SAAS,OACvB,EAAE,OAAO,kBAAkB,gBAAgB,KAAK,EAAE,IAClD;AAEV,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,cAAc,KAAK;AAAA,cACnB,eAAe,MAAM,QAAQ,KAAK,YAAY,IAC1C,KAAK,eACL,KAAK,eACH;AAAA,gBACE,WAAW,KAAK,aAAa;AAAA,gBAC7B,YAAY,KAAK,aAAa;AAAA,cAChC,IACA;AAAA,cACN,eAAe,KAAK;AAAA,cACpB,cAAc,KAAK;AAAA,cACnB,SAAS,KAAK;AAAA,cACd,kBAAkB,sDAAwB;AAAA,cAC1C,oBAAoB,KAAK;AAAA,cACzB,YAAY,KAAK;AAAA,YACnB,CAAC;AAED;AAAA,UACF;AAAA,UACA,KAAK,iBAAiB;AACpB,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AAED,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,MAAM,KAAK;AAAA,cACX,aAAa,KAAK;AAAA,cAClB,QAAQ,KAAK;AAAA,YACf,CAAC;AACD,4CAAgC,IAAI,KAAK,IAAI;AAC7C;AAAA,UACF;AAAA,UACA,KAAK,sBAAsB;AACzB,kBAAM,OAAO,MAAMC,eAAc;AAAA,cAC/B,OAAO,KAAK;AAAA,cACZ,QAAQ;AAAA,YACV,CAAC;AACD,YAAAD,aAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,GAAI,KAAK,aAAa,OAAO,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;AAAA,cAC9D,GAAI,KAAK,eAAe,OACpB,EAAE,aAAa,KAAK,YAAY,IAChC,CAAC;AAAA,cACL,GAAI,KAAK,cAAc,OACnB,EAAE,YAAY,KAAK,WAAW,IAC9B,CAAC;AAAA,YACP,CAAC;AACD;AAAA,UACF;AAAA,QACF;AACA;AAAA,MACF;AAAA,MACA;AACE,qBAAa,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS,iBAAiB,IAAI;AAAA,QAChC,CAAC;AACD;AAAA,IACJ;AAAA,EACF;AAEA,MAAI,gBAAgB,MAAM;AACxB,WAAO;AAAA,MACL,OAAOA;AAAA,MACP,YAAY;AAAA,QACV,MAAM;AAAA,QACN,OAAM,kBAAa,SAAb,YAAqB;AAAA,QAC3B,OAAO,aAAa,UAAU,IAAI,UAAK;AA/S/C,cAAAE;AA+SmD;AAAA,YACzC,MAAM;AAAA,YACN,OAAMA,MAAA,mDAAiB,mBAAmB,UAApC,OAAAA,MAA6C;AAAA,UACrD;AAAA,SAAE;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,cAAc,MAAM;AACtB,WAAO,EAAE,OAAOF,cAAa,YAAY,QAAW,aAAa;AAAA,EACnE;AAEA,QAAM,OAAO,WAAW;AAExB,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,OAAOA,cAAa,YAAY,MAAM,aAAa;AAAA,IAC9D,KAAK,QAAQ;AACX,YAAM,oBACJ,wDAAiB,mBAAmB,WAAW,cAA/C,YACA,WAAW;AAEb,aAAO;AAAA,QACL,OAAOA;AAAA,QACP,YACE,qBAAqB,sBACrB,qBAAqB,iBACrB,qBAAqB,sBACrB,qBAAqB,wBACrB,qBAAqB,gBACrB,qBAAqB,SACrB,qBAAqB,gBACjB,EAAE,MAAM,iBAAiB,IACzB,gCAAgC,IAAI,gBAAgB,IAClD,EAAE,MAAM,UAAU,MAAM,iBAAiB,IACzC,EAAE,MAAM,YAAY,MAAM,iBAAiB;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AACP,YAAM,mBAA0B;AAChC,YAAM,IAAIG,+BAA8B;AAAA,QACtC,eAAe,qBAAqB,gBAAgB;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,aAK3B;AACA,MAAI,YAAY,SAAS,sBAAsB;AAC7C,UAAMC,OAAM;AAIZ,WAAO;AAAA,MACL,MAAM;AAAA,MACN,cAAcA,KAAI;AAAA,IACpB;AAAA,EACF;AAEA,MAAI,YAAY,SAAS,iBAAiB;AACxC,UAAMA,OAAM;AAuBZ,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAUA,KAAI;AAAA,MACd,cAAcA,KAAI;AAAA,MAClB,gBACEA,KAAI,iBAAiB,OACjB,SACAA,KAAI,cAAc,SAAS,aACzB,EAAE,MAAM,WAAoB,IAC5B;AAAA,QACE,MAAM;AAAA,QACN,iBAAiBA,KAAI,cAAc;AAAA,QACnC,gBAAgBA,KAAI,cAAc;AAAA,MACpC;AAAA,MACR,QAAQ,eAAeA,KAAI,MAAM;AAAA,IACnC;AAAA,EACF;AAEA,QAAM,MAAM;AAQZ,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,IAAI;AAAA,EACd;AACF;AAEA,SAAS,eACP,QAUA;AACA,SAAO,iCAAQ;AAAA,IAAI,WACjB,MAAM,SAAS,mBACX;AAAA,MACE,MAAM;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,SAAS,MAAM;AAAA,IACjB,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM,MAAM;AAAA,MACZ,aAAa,MAAM;AAAA,MACnB,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,YAAY,MAAM,OAAQ;AAAA,QAC1B,MAAM,MAAM,OAAQ;AAAA,MACtB;AAAA,IACF;AAAA;AAER;;;ANvXA,SAAS,4CACP,QACwB;AApF1B;AAqFE,QAAM,UAAkC,CAAC;AACzC,aAAW,WAAW,QAAQ;AAC5B,QAAI,QAAQ,SAAS,YAAa;AAClC,eAAW,QAAQ,QAAQ,SAAS;AAClC,UAAI,KAAK,SAAS,YAAa;AAC/B,YAAM,qBAAoB,gBAAK,oBAAL,mBAAsB,WAAtB,mBACtB;AACJ,UAAI,qBAAqB,MAAM;AAC7B,gBAAQ,iBAAiB,IAAI,KAAK;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,+BAAN,MAA8D;AAAA,EAOnE,YAAY,SAAiC,QAAsB;AANnE,SAAS,uBAAuB;AAWhC,SAAS,gBAA0C;AAAA,MACjD,WAAW,CAAC,iBAAiB;AAAA,MAC7B,mBAAmB,CAAC,iBAAiB;AAAA,IACvC;AAPE,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAOA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA+B;AAvIjC;AAwII,UAAM,WAA8B,CAAC;AACrC,UAAM,oBAAoB,mCAAmC,KAAK,OAAO;AAEzE,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IACxD;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,OAAO,CAAC;AAAA,IACxD;AAEA,QAAI,mBAAmB,MAAM;AAC3B,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,kBAAkB,CAAC;AAAA,IACnE;AAEA,QAAI,oBAAoB,MAAM;AAC5B,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,mBAAmB,CAAC;AAAA,IACpE;AAEA,QAAI,iBAAiB,MAAM;AACzB,eAAS,KAAK,EAAE,MAAM,eAAe,SAAS,gBAAgB,CAAC;AAAA,IACjE;AAEA,UAAM,sBAAsB,KAAK,OAAO,SAAS,SAAS,OAAO,IAC7D,UACA;AACJ,QAAI,gBAAgB,MAAMC,sBAAqB;AAAA,MAC7C,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,iBAAiB,QAAQ,wBAAwB,UAAU;AAC7D,sBAAgB,MAAMA,sBAAqB;AAAA,QACzC,UAAU;AAAA,QACV;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAEA,UAAM,oBACJ,oDAAe,mBAAf,YAAiC,kBAAkB;AAErD,SAAI,+CAAe,kBAAgB,+CAAe,qBAAoB;AACpE,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM,kBAAkB,sBAAsB;AAAA,MAC5C;AAAA,MACA,mBAAmB;AAAA,QACjB,2BAA2B;AAAA,QAC3B,sBAAsB;AAAA,QACtB,2BAA2B;AAAA,QAC3B,sBAAsB;AAAA,QACtB,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,6BAA6B;AAAA,QAC7B,cAAc;AAAA,QACd,sBAAsB;AAAA,QACtB,sBAAsB;AAAA,MACxB;AAAA,MACA,yBAAyB,UACvB,KAAK,OAAO,kBACP,KAAK,KAA2B,OACjC;AAAA,IACR,CAAC;AAED,UAAM,0BAA0B,oBAAI,IAAY;AAChD,UAAM;AAAA,MACJ,OAAOC;AAAA,MACP,YAAY;AAAA,MACZ;AAAA,IACF,IAAI,MAAM,sBAAsB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,eAAc,oDAAe,iBAAf,YAA+B;AAAA,MAC7C;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,EAAE,OAAO,UAAU,cAAc,IACrC,MAAM,8BAA8B;AAAA,MAClC;AAAA,MACA;AAAA,MACA,oBACE,oDAAe,sBAAf,YACC,mBACG,cACA,kBAAkB;AAAA,MACxB;AAAA,MACA,gBAAgB,KAAK,OAAO;AAAA,MAC5B,QAAO,oDAAe,UAAf,YAAwB;AAAA,MAC/B,kBAAiB,+CAAe,iBAAgB;AAAA,MAChD,mBAAmB,cAAc,oBAAoB;AAAA,MACrD,cAAc,cAAc,cAAc;AAAA,MAC1C,mBAAmB,cAAc,oBAAoB;AAAA,MACrD,yBACE,wBAAwB,OAAO,IAC3B,0BACA;AAAA,IACR,CAAC;AAEH,aAAS,KAAK,GAAG,aAAa;AAE9B,UAAM,oBAAmB,oDAAe,qBAAf,YAAmC;AAE5D,QAAI,UAAyC,+CAAe;AAE5D,aAAS,WAAW,KAAkC;AACpD,UAAI,WAAW,MAAM;AACnB,kBAAU,CAAC,GAAG;AAAA,MAChB,WAAW,CAAC,QAAQ,SAAS,GAAG,GAAG;AACjC,kBAAU,CAAC,GAAG,SAAS,GAAG;AAAA,MAC5B;AAAA,IACF;AAEA,aAAS,cAAc,IAAY;AACjC,cACE,+BAAO,KAAK,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO,QAAO;AAAA,IAEvE;AAGA,UAAM,cACJ,QAAO,+CAAe,cAAa,WAC/B,+CAAe,YACf,+CAAe,cAAa,OAC1B,mBACA;AAER,QAAI,aAAa;AACf,iBAAW,8BAA8B;AAAA,IAC3C;AAGA,UAAM,qBACJ,oCAAO;AAAA,MACL,UACE,KAAK,SAAS,eACb,KAAK,OAAO,uBACX,KAAK,OAAO;AAAA,UAJlB,mBAMC;AAEH,QAAI,mBAAmB;AACrB,iBAAW,gCAAgC;AAAA,IAC7C;AAGA,QAAI,cAAc,yBAAyB,GAAG;AAC5C,iBAAW,+BAA+B;AAAA,IAC5C;AAEA,UAAM,QAAQ,+CAAe;AAG7B,QAAI,UAAU,SAAS,kBAAkB;AACvC,iBAAW,6BAA6B;AAAA,IAC1C;AAEA,UAAM,WAAW;AAAA,MACf,OAAO,KAAK;AAAA,MACZ;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,mBAAmB;AAAA,MAEnB,KAAK,iDAAgB,UAAS,WAAU,+CAAe,mBAAkB;AAAA,QACvE,MAAM;AAAA,UACJ,IAAI,iDAAgB,UAAS,UAAU;AAAA,YACrC,QACE,eAAe,UAAU,OACrB;AAAA,cACE,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,OAAM,oBAAe,SAAf,YAAuB;AAAA,cAC7B,aAAa,eAAe;AAAA,cAC5B,QAAQ,eAAe;AAAA,YACzB,IACA,EAAE,MAAM,cAAc;AAAA,UAC9B;AAAA,UACA,IAAI,+CAAe,kBAAiB;AAAA,YAClC,WAAW,cAAc;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA;AAAA,MAGA,cAAc,+CAAe;AAAA,MAC7B,gBAAgB,+CAAe;AAAA,MAC/B,UAAU,+CAAe;AAAA,MACzB,qBAAqB,+CAAe;AAAA,MACpC,sBAAsB,+CAAe;AAAA,MACrC;AAAA,MACA,MAAM,+CAAe;AAAA,MACrB,cAAc,+CAAe;AAAA,MAC7B,cAAc,+CAAe;AAAA,MAC7B;AAAA,MACA,kBAAkB,+CAAe;AAAA,MACjC,wBAAwB,+CAAe;AAAA,MACvC,mBAAmB,+CAAe;AAAA,MAClC,cAAc;AAAA,MACd,YAAY,+CAAe;AAAA;AAAA,MAG3B,GAAI,sBACD,+CAAe,oBAAmB,SACjC,+CAAe,qBAAoB,SAAS;AAAA,QAC5C,WAAW;AAAA,UACT,IAAI,+CAAe,oBAAmB,QAAQ;AAAA,YAC5C,QAAQ,cAAc;AAAA,UACxB;AAAA,UACA,IAAI,+CAAe,qBAAoB,QAAQ;AAAA,YAC7C,SAAS,cAAc;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACJ;AAIA,QAAI,kBAAkB;AAGpB,UACE,GACE,+CAAe,qBAAoB,UACnC,kBAAkB,iCAEpB;AACA,YAAI,SAAS,eAAe,MAAM;AAChC,mBAAS,cAAc;AACvB,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAEA,YAAI,SAAS,SAAS,MAAM;AAC1B,mBAAS,QAAQ;AACjB,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAI,+CAAe,oBAAmB,MAAM;AAC1C,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAEA,WAAI,+CAAe,qBAAoB,MAAM;AAC3C,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF;AAGA,SACE,+CAAe,iBAAgB,UAC/B,CAAC,kBAAkB,wBACnB;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAED,aAAQ,SAAiB;AAAA,IAC3B;AAGA,SACE,+CAAe,iBAAgB,cAC/B,CAAC,kBAAkB,4BACnB;AACA,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAED,aAAQ,SAAiB;AAAA,IAC3B;AAEA,UAAM,oBACJ,gDAAO;AAAA,MACL,UAAQ,KAAK,SAAS,cAAc,KAAK,OAAO;AAAA,UADlD,mBAGC,SAHD,mBAGO,gBAHP,mBAGoB;AAEtB,UAAM,0BACJ,qBAAqB,mBACrB,qBAAqB;AAEvB,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,OAAOA;AAAA,QACP,aAAa;AAAA,MACf;AAAA,MACA,UAAU,CAAC,GAAG,UAAU,GAAG,YAAY;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SACwC;AA/c5C;AAgdI,UAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,MAAM,KAAK,QAAQ,OAAO;AAC9B,UAAM,MAAM,KAAK,OAAO,IAAI;AAAA,MAC1B,MAAM;AAAA,MACN,SAAS,KAAK;AAAA,IAChB,CAAC;AAED,UAAM,+CACJ,4CAA4C,QAAQ,MAAM;AAE5D,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,IAAI,MAAMC,eAAc;AAAA,MACtB;AAAA,MACA,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,QAAI,SAAS,OAAO;AAClB,YAAM,IAAI,aAAa;AAAA,QACrB,SAAS,SAAS,MAAM;AAAA,QACxB;AAAA,QACA,mBAAmB;AAAA,QACnB,YAAY;AAAA,QACZ;AAAA,QACA,cAAc;AAAA,QACd,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAEA,UAAM,UAAyC,CAAC;AAChD,UAAM,WAA2C,CAAC;AAGlD,QAAI,kBAAkB;AACtB,UAAM,0BAAoC,CAAC;AAG3C,eAAW,QAAQ,SAAS,QAAS;AACnC,cAAQ,KAAK,MAAM;AAAA,QACjB,KAAK,aAAa;AAEhB,cAAI,KAAK,QAAQ,WAAW,GAAG;AAC7B,iBAAK,QAAQ,KAAK,EAAE,MAAM,gBAAgB,MAAM,GAAG,CAAC;AAAA,UACtD;AAEA,qBAAW,WAAW,KAAK,SAAS;AAClC,oBAAQ,KAAK;AAAA,cACX,MAAM;AAAA,cACN,MAAM,QAAQ;AAAA,cACd,kBAAkB;AAAA,gBAChB,CAAC,mBAAmB,GAAG;AAAA,kBACrB,QAAQ,KAAK;AAAA,kBACb,4BAA2B,UAAK,sBAAL,YAA0B;AAAA,gBACvD;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AACA;AAAA,QACF;AAAA,QAEA,KAAK,yBAAyB;AAC5B,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,kBAAkB;AAAA,YAC7D,OAAO;AAAA,YACP,kBAAkB;AAAA,UACpB,CAAC;AAED,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,kBAAkB;AAAA,YAC7D,QAAQ;AAAA,cACN,QAAQ,KAAK;AAAA,YACf;AAAA,UACF,CAAC;AAED;AAAA,QACF;AAAA,QAEA,KAAK,oBAAoB;AACvB,gBAAM,cAAa,UAAK,YAAL,YAAgB,KAAK;AACxC,gBAAM,WAAW,KAAK,cAAc;AAEpC,cAAI,UAAU;AACZ,oCAAwB,KAAK,UAAU;AAAA,UACzC;AAEA,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN;AAAA,YACA,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,YACxD,OAAO,KAAK,UAAU;AAAA,cACpB,WAAW,KAAK;AAAA,cAChB,SAAS,KAAK;AAAA,YAChB,CAAqD;AAAA,YACrD,GAAI,WAAW,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAAA,YAC7C,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAC;AAED;AAAA,QACF;AAAA,QAEA,KAAK,sBAAsB;AACzB,gBAAM,cACJ,gBAAK,YAAL,YAAgB,wBAAwB,MAAM,MAA9C,YAAmD,KAAK;AAE1D,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN;AAAA,YACA,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,YACxD,QAAQ;AAAA,cACN,OAAO,KAAK;AAAA,YACd;AAAA,YACA,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAC;AAED;AAAA,QACF;AAAA,QAEA,KAAK,oBAAoB;AACvB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,YACxD,OAAO,KAAK,UAAU;AAAA,cACpB,QAAQ,KAAK;AAAA,YACf,CAAqD;AAAA,YACrD,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAC;AAED;AAAA,QACF;AAAA,QAEA,KAAK,cAAc;AACjB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,OAAO;AAAA,YAClD,OAAO,KAAK,UAAU;AAAA,cACpB,QAAQ;AAAA,gBACN,UAAU,KAAK,OAAO;AAAA,cACxB;AAAA,YACF,CAAgD;AAAA,YAChD,GAAI,2BAA2B,EAAE,kBAAkB,KAAK;AAAA,YACxD,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAC;AAED;AAAA,QACF;AAAA,QAEA,KAAK,qBAAqB;AACxB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,OAAO;AAAA,YAClD,QAAQ;AAAA,cACN,QAAQ,KAAK,OAAO,IAAI,WAAS;AAAA,gBAC/B,QAAQ,KAAK;AAAA,gBACb,QAAQ,KAAK;AAAA,gBACb,SACE,KAAK,QAAQ,SAAS,SAClB;AAAA,kBACE,MAAM;AAAA,kBACN,UAAU,KAAK,QAAQ;AAAA,gBACzB,IACA,EAAE,MAAM,UAAmB;AAAA,cACnC,EAAE;AAAA,YACJ;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,WAAW;AACd,qBAAW,eAAe,KAAK,SAAS;AACtC,kBACE,mBAAQ,oBAAR,mBAA0B,yBAA1B,mBAAgD,aAChD,YAAY,UACZ;AACA,uBAAS,KAAK,YAAY,QAAQ;AAAA,YACpC;AAEA,kBAAMC,oBAAqD;AAAA,cACzD,QAAQ,KAAK;AAAA,cACb,GAAI,KAAK,SAAS,QAAQ,EAAE,OAAO,KAAK,MAAM;AAAA,cAC9C,GAAI,YAAY,YAAY,SAAS,KAAK;AAAA,gBACxC,aAAa,YAAY;AAAA,cAC3B;AAAA,YACF;AAEA,oBAAQ,KAAK;AAAA,cACX,MAAM;AAAA,cACN,MAAM,YAAY;AAAA,cAClB,kBAAkB;AAAA,gBAChB,CAAC,mBAAmB,GAAGA;AAAA,cACzB;AAAA,YACF,CAAC;AAED,uBAAW,cAAc,YAAY,aAAa;AAChD,kBAAI,WAAW,SAAS,gBAAgB;AACtC,wBAAQ,KAAK;AAAA,kBACX,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BC,YAAW;AAAA,kBAC7C,KAAK,WAAW;AAAA,kBAChB,OAAO,WAAW;AAAA,gBACpB,CAAC;AAAA,cACH,WAAW,WAAW,SAAS,iBAAiB;AAC9C,wBAAQ,KAAK;AAAA,kBACX,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AAAA,kBAC7C,WAAW;AAAA,kBACX,OAAO,WAAW;AAAA,kBAClB,UAAU,WAAW;AAAA,kBACrB,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,MAAM,WAAW;AAAA,sBACjB,QAAQ,WAAW;AAAA,sBACnB,OAAO,WAAW;AAAA,oBACpB;AAAA,kBAIF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,WAAW,SAAS,2BAA2B;AACxD,wBAAQ,KAAK;AAAA,kBACX,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AAAA,kBAC7C,WAAW;AAAA,kBACX,OAAO,WAAW;AAAA,kBAClB,UAAU,WAAW;AAAA,kBACrB,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,MAAM,WAAW;AAAA,sBACjB,QAAQ,WAAW;AAAA,sBACnB,aAAa,WAAW;AAAA,oBAC1B;AAAA,kBAIF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,WAAW,SAAS,aAAa;AAC1C,wBAAQ,KAAK;AAAA,kBACX,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AAAA,kBAC7C,WAAW;AAAA,kBACX,OAAO,WAAW;AAAA,kBAClB,UAAU,WAAW;AAAA,kBACrB,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,MAAM,WAAW;AAAA,sBACjB,QAAQ,WAAW;AAAA,sBACnB,OAAO,WAAW;AAAA,oBACpB;AAAA,kBAIF;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAEA;AAAA,QACF;AAAA,QAEA,KAAK,iBAAiB;AACpB,4BAAkB;AAElB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,KAAK;AAAA,YACf,OAAO,KAAK;AAAA,YACZ,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,gBACb,GAAI,KAAK,aAAa,QAAQ,EAAE,WAAW,KAAK,UAAU;AAAA,cAC5D;AAAA,YACF;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,oBAAoB;AACvB,4BAAkB;AAClB,gBAAM,WAAW,gBAAgB,iBAAiB,KAAK,IAAI;AAE3D,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB;AAAA,YACA,OAAO,KAAK,UAAU,KAAK,KAAK;AAAA,YAChC,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,mBAAmB;AACtB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB;AAAA,cACxB,gDAAqB;AAAA,YACvB;AAAA,YACA,OAAO,KAAK,UAAU,CAAC,CAAC;AAAA,YACxB,kBAAkB;AAAA,UACpB,CAAC;AAED,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB;AAAA,cACxB,gDAAqB;AAAA,YACvB;AAAA,YACA,QAAQ,mBAAmB,KAAK,MAAM;AAAA,UACxC,CAAC;AAED;AAAA,QACF;AAAA,QAEA,KAAK,YAAY;AACf,gBAAM,aACJ,KAAK,uBAAuB,QACvB,kDACC,KAAK,mBACP,MAFC,YAEI,KAAK,KACV,KAAK;AAEX,gBAAM,WAAW,OAAO,KAAK,IAAI;AAEjC,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,OAAO,KAAK;AAAA,YACZ,kBAAkB;AAAA,YAClB,SAAS;AAAA,UACX,CAAC;AAED,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,cACN,MAAM;AAAA,cACN,aAAa,KAAK;AAAA,cAClB,MAAM,KAAK;AAAA,cACX,WAAW,KAAK;AAAA,cAChB,GAAI,KAAK,UAAU,OAAO,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,cACrD,GAAI,KAAK,SAAS,OACd,EAAE,OAAO,KAAK,MAA8B,IAC5C,CAAC;AAAA,YACP;AAAA,YACA,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,kBAAkB;AAErB;AAAA,QACF;AAAA,QAEA,KAAK,wBAAwB;AAC3B,gBAAM,qBAAoB,UAAK,wBAAL,YAA4B,KAAK;AAC3D,gBAAM,mBAAkB,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AACjE,gBAAM,WAAW,OAAO,KAAK,IAAI;AAEjC,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,YACZ;AAAA,YACA,OAAO,KAAK;AAAA,YACZ,kBAAkB;AAAA,YAClB,SAAS;AAAA,UACX,CAAC;AAED,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,YAAY;AAAA,UACd,CAA8C;AAC9C;AAAA,QACF;AAAA,QAEA,KAAK,iBAAiB;AACpB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,cAAc;AAAA,YACzD,OAAO;AAAA,YACP,kBAAkB;AAAA,UACpB,CAAC;AAED,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,cAAc;AAAA,YACzD,QAAQ;AAAA,cACN,MAAM;AAAA,cACN,QAAQ,KAAK,UAAU;AAAA,YACzB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,oBAAoB;AACvB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,YACxD,OAAO;AAAA,YACP,kBAAkB;AAAA,UACpB,CAAC;AAED,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,YACxD,QAAQ;AAAA,cACN,SAAS,KAAK;AAAA,cACd,UACE,gBAAK,YAAL,mBAAc,IAAI,aAAW;AAAA,gBAC3B,YAAY,OAAO;AAAA,gBACnB,QAAQ,OAAO;AAAA,gBACf,UAAU,OAAO;AAAA,gBACjB,OAAO,OAAO;AAAA,gBACd,MAAM,OAAO;AAAA,cACf,QANA,YAMO;AAAA,YACX;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,yBAAyB;AAC5B,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,kBAAkB;AAAA,YAC7D,OAAO,KAAK,UAAU;AAAA,cACpB,MAAM,KAAK;AAAA,cACX,aAAa,KAAK;AAAA,YACpB,CAA0D;AAAA,YAC1D,kBAAkB;AAAA,UACpB,CAAC;AAED,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,kBAAkB;AAAA,YAC7D,QAAQ;AAAA,cACN,SAAS,KAAK;AAAA,YAChB;AAAA,UACF,CAAC;AACD;AAAA,QACF;AAAA,QAEA,KAAK,oBAAoB;AACvB,kBAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,YACxD,OAAO,KAAK,UAAU;AAAA,cACpB,QAAQ,KAAK;AAAA,cACb,WAAW,KAAK;AAAA,YAClB,CAAqD;AAAA,YACrD,kBAAkB;AAAA,cAChB,CAAC,mBAAmB,GAAG;AAAA,gBACrB,QAAQ,KAAK;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAC;AAED;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,mBAA6C;AAAA,MACjD,CAAC,mBAAmB,GAAG;AAAA,QACrB,YAAY,SAAS;AAAA,QACrB,GAAI,SAAS,SAAS,IAAI,EAAE,SAAS,IAAI,CAAC;AAAA,QAC1C,GAAI,OAAO,SAAS,iBAAiB,WACjC,EAAE,aAAa,SAAS,aAAa,IACrC,CAAC;AAAA,MACP;AAAA,IACF;AAEA,UAAM,QAAQ,SAAS;AAEvB,WAAO;AAAA,MACL;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,8BAA8B;AAAA,UACrC,eAAc,cAAS,uBAAT,mBAA6B;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,QACD,MAAK,oBAAS,uBAAT,mBAA6B,WAA7B,YAAuC;AAAA,MAC9C;AAAA,MACA,OAAO,4BAA4B,KAAK;AAAA,MACxC,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU;AAAA,QACR,IAAI,SAAS;AAAA,QACb,WAAW,IAAI,KAAK,SAAS,aAAc,GAAI;AAAA,QAC/C,SAAS,SAAS;AAAA,QAClB,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SACsC;AACtC,UAAM;AAAA,MACJ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,MAAM,KAAK,QAAQ,OAAO;AAE9B,UAAM,EAAE,iBAAiB,OAAO,SAAS,IAAI,MAAMJ,eAAc;AAAA,MAC/D,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,QAAQ;AAAA,MACV;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BI;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,OAAO;AAEb,UAAM,+CACJ,4CAA4C,QAAQ,MAAM;AAE5D,UAAM,+CAA+C,oBAAI,IAGvD;AAEF,QAAI,eAA4C;AAAA,MAC9C,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AACA,QAAI,QAA0C;AAC9C,UAAM,WAA2C,CAAC;AAClD,QAAI,aAA4B;AAEhC,UAAM,mBAeF,CAAC;AAGL,UAAM,qBAKF,CAAC;AAGL,QAAI;AAGJ,QAAI,kBAAkB;AAEtB,UAAM,kBAOF,CAAC;AAEL,QAAI;AACJ,UAAM,0BAAoC,CAAC;AAE3C,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,QACf,IAAI,gBAGF;AAAA,UACA,MAAM,YAAY;AAChB,uBAAW,QAAQ,EAAE,MAAM,gBAAgB,SAAS,CAAC;AAAA,UACvD;AAAA,UAEA,UAAU,OAAO,YAAY;AArmCvC;AAsmCY,gBAAI,QAAQ,kBAAkB;AAC5B,yBAAW,QAAQ,EAAE,MAAM,OAAO,UAAU,MAAM,SAAS,CAAC;AAAA,YAC9D;AAGA,gBAAI,CAAC,MAAM,SAAS;AAClB,6BAAe,EAAE,SAAS,SAAS,KAAK,OAAU;AAClD,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC;AACxD;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM;AAEpB,gBAAI,+BAA+B,KAAK,GAAG;AACzC,kBAAI,MAAM,KAAK,SAAS,iBAAiB;AACvC,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC,UAAU,MAAM,KAAK;AAAA,kBACrB,YAAY,MAAM,KAAK;AAAA,gBACzB;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,UAAU,MAAM,KAAK;AAAA,gBACvB,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,sBAAM,WAAW,gBAAgB;AAAA,kBAC/B,MAAM,KAAK;AAAA,gBACb;AACA,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC;AAAA,kBACA,YAAY,MAAM,KAAK;AAAA,gBACzB;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,mBAAmB;AAChD,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC,UAAU,gBAAgB;AAAA,oBACxB,gDAAqB;AAAA,kBACvB;AAAA,kBACA,YAAY,MAAM,KAAK;AAAA,gBACzB;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,UAAU,gBAAgB;AAAA,oBACxB,gDAAqB;AAAA,kBACvB;AAAA,kBACA,kBAAkB;AAAA,gBACpB,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,gBACjB,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB;AAAA,oBACxB,gDAAqB;AAAA,kBACvB;AAAA,kBACA,OAAO,KAAK,UAAU,CAAC,CAAC;AAAA,kBACxB,kBAAkB;AAAA,gBACpB,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,iBAAiB;AAC9C,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC,UAAU,gBAAgB,iBAAiB,cAAc;AAAA,kBACzD,YAAY,MAAM,KAAK;AAAA,gBACzB;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,UAAU,gBAAgB,iBAAiB,cAAc;AAAA,kBACzD,kBAAkB;AAAA,gBACpB,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,yBAAyB;AACtD,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC,UACE,gBAAgB,iBAAiB,kBAAkB;AAAA,kBACrD,YAAY,MAAM,KAAK;AAAA,kBACvB,iBAAiB;AAAA,oBACf,aAAa,MAAM,KAAK;AAAA,kBAC1B;AAAA,gBACF;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,UACE,gBAAgB,iBAAiB,kBAAkB;AAAA,kBACrD,kBAAkB;AAAA,gBACpB,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,OAAO,mBAAmB,MAAM,KAAK,YAAY;AAAA,gBACnD,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,kBACxD,OAAO;AAAA,kBACP,kBAAkB;AAAA,gBACpB,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,yBAAyB;AACtD,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UACE,gBAAgB,iBAAiB,kBAAkB;AAAA,kBACrD,OAAO;AAAA,kBACP,kBAAkB;AAAA,gBACpB,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,sBAAM,aAAa,MAAM,KAAK;AAC9B,sBAAM,WACJ,gBAAgB,iBAAiB,aAAa;AAChD,sBAAM,WAAW,MAAM,KAAK,cAAc;AAE1C,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC;AAAA,kBACA;AAAA,kBACA,sBAAqB,WAAM,KAAK,cAAX,YAAwB;AAAA,gBAC/C;AAEA,oBAAI,UAAU;AACZ,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI;AAAA,oBACJ;AAAA,oBACA,kBAAkB;AAAA,kBACpB,CAAC;AAAA,gBACH;AAAA,cACF,WAAW,MAAM,KAAK,SAAS,sBAAsB;AAAA,cAErD,WACE,MAAM,KAAK,SAAS,cACpB,MAAM,KAAK,SAAS,oBACpB,MAAM,KAAK,SAAS,wBACpB;AAAA,cAIF,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,sBAAM,EAAE,SAAS,QAAQ,UAAU,IAAI,MAAM;AAE7C,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,kBACxD,YAAY;AAAA,kBACZ,YAAY;AAAA;AAAA,oBAEV,SAAS,UAAU,SAAS;AAAA,oBAC5B,YAAY,UAAU,SAAS;AAAA,kBACjC;AAAA,gBACF;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI;AAAA,kBACJ,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,gBAC1D,CAAC;AAED,oBAAI,UAAU,SAAS,eAAe;AACpC,wBAAM,cAAc,KAAK,UAAU;AAAA,oBACjC;AAAA,oBACA;AAAA,kBACF,CAAqD;AAErD,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI;AAAA,oBACJ,OAAO;AAAA,kBACT,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI;AAAA,kBACN,CAAC;AAAA,gBACH,OAAO;AACL,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI;AAAA,oBACJ,OAAO,cAAc,gBAAgB,MAAM,CAAC,0BAA0B,gBAAgB,UAAU,IAAI,CAAC,aAAa,gBAAgB,UAAU,IAAI,CAAC;AAAA,kBACnJ,CAAC;AAAA,gBACH;AAAA,cACF,WAAW,MAAM,KAAK,SAAS,cAAc;AAC3C,iCAAiB,MAAM,YAAY,IAAI;AAAA,kBACrC,UAAU,gBAAgB,iBAAiB,OAAO;AAAA,kBAClD,YAAY,MAAM,KAAK;AAAA,gBACzB;AAAA,cACF,WAAW,MAAM,KAAK,SAAS,qBAAqB;AAAA,cAEpD,WAAW,MAAM,KAAK,SAAS,WAAW;AACxC,mCAAmB,OAAO,GAAG,mBAAmB,MAAM;AACtD,sCAAqB,WAAM,KAAK,UAAX,YAAoB;AACzC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM,KAAK;AAAA,sBACnB,GAAI,MAAM,KAAK,SAAS,QAAQ;AAAA,wBAC9B,OAAO,MAAM,KAAK;AAAA,sBACpB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WACE,+BAA+B,KAAK,KACpC,MAAM,KAAK,SAAS,aACpB;AACA,gCAAgB,MAAM,KAAK,EAAE,IAAI;AAAA,kBAC/B,kBAAkB,MAAM,KAAK;AAAA,kBAC7B,cAAc,EAAE,GAAG,SAAS;AAAA,gBAC9B;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,GAAG,MAAM,KAAK,EAAE;AAAA,kBACpB,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM,KAAK;AAAA,sBACnB,4BACE,WAAM,KAAK,sBAAX,YAAgC;AAAA,oBACpC;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF,WAAW,8BAA8B,KAAK,GAAG;AAC/C,kBAAI,MAAM,KAAK,SAAS,WAAW;AACjC,sBAAM,SAAQ,WAAM,KAAK,UAAX,YAAoB;AAClC,qCAAqB;AACrB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM,KAAK;AAAA,sBACnB,GAAI,SAAS,QAAQ,EAAE,MAAM;AAAA,sBAC7B,GAAI,mBAAmB,SAAS,KAAK;AAAA,wBACnC,aAAa;AAAA,sBACf;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,iBAAiB;AAC9C,iCAAiB,MAAM,YAAY,IAAI;AACvC,kCAAkB;AAElB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,kBACf,GAAI,MAAM,KAAK,aAAa,QAAQ;AAAA,oBAClC,kBAAkB;AAAA,sBAChB,CAAC,mBAAmB,GAAG;AAAA,wBACrB,WAAW,MAAM,KAAK;AAAA,sBACxB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,MAAM,KAAK;AAAA,kBACrB,OAAO,MAAM,KAAK;AAAA,kBAClB,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM,KAAK;AAAA,sBACnB,GAAI,MAAM,KAAK,aAAa,QAAQ;AAAA,wBAClC,WAAW,MAAM,KAAK;AAAA,sBACxB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,iCAAiB,MAAM,YAAY,IAAI;AACvC,kCAAkB;AAClB,sBAAM,WAAW,gBAAgB;AAAA,kBAC/B,MAAM,KAAK;AAAA,gBACb;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,gBACjB,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB;AAAA,kBACA,OAAO,KAAK,UAAU,MAAM,KAAK,KAAK;AAAA,kBACtC,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM,KAAK;AAAA,oBACrB;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,mBAAmB;AAChD,iCAAiB,MAAM,YAAY,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB;AAAA,oBACxB,gDAAqB;AAAA,kBACvB;AAAA,kBACA,QAAQ,mBAAmB,MAAM,KAAK,MAAM;AAAA,gBAC9C,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,iBAAiB;AAC9C,iCAAiB,MAAM,YAAY,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,MAAM,KAAK;AAAA,gBACjB,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB,iBAAiB,cAAc;AAAA,kBACzD,OAAO;AAAA,kBACP,kBAAkB;AAAA,gBACpB,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB,iBAAiB,cAAc;AAAA,kBACzD,QAAQ;AAAA,oBACN,MAAM;AAAA,oBACN,QAAQ,MAAM,KAAK,UAAU;AAAA,kBAC/B;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,iCAAiB,MAAM,YAAY,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,kBACxD,QAAQ;AAAA,oBACN,SAAS,MAAM,KAAK;AAAA,oBACpB,UACE,iBAAM,KAAK,YAAX,mBAAoB,IAAI,aAAW;AAAA,sBACjC,YAAY,OAAO;AAAA,sBACnB,QAAQ,OAAO;AAAA,sBACf,UAAU,OAAO;AAAA,sBACjB,OAAO,OAAO;AAAA,sBACd,MAAM,OAAO;AAAA,oBACf,QANA,YAMO;AAAA,kBACX;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,yBAAyB;AACtD,iCAAiB,MAAM,YAAY,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UACE,gBAAgB,iBAAiB,kBAAkB;AAAA,kBACrD,QAAQ;AAAA,oBACN,SAAS,MAAM,KAAK;AAAA,kBACtB;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,yBAAyB;AACtD,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UACE,gBAAgB,iBAAiB,kBAAkB;AAAA,kBACrD,QAAQ;AAAA,oBACN,QAAQ,MAAM,KAAK;AAAA,kBACrB;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,sBAAM,WAAW,iBAAiB,MAAM,YAAY;AACpD,sBAAM,WAAW,MAAM,KAAK,cAAc;AAE1C,oBAAI,YAAY,MAAM;AACpB,wBAAM,aAAa,WACf,SAAS,cACR,WAAM,KAAK,YAAX,YAAsB,MAAM,KAAK;AAEtC,sBAAI,UAAU;AACZ,4CAAwB,KAAK,UAAU;AAAA,kBACzC,OAAO;AACL,+BAAW,QAAQ;AAAA,sBACjB,MAAM;AAAA,sBACN,IAAI;AAAA,sBACJ,UAAU,SAAS;AAAA,oBACrB,CAAC;AAAA,kBACH;AAEA,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI;AAAA,kBACN,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN;AAAA,oBACA,UAAU,SAAS;AAAA,oBACnB,OAAO,KAAK,UAAU;AAAA,sBACpB,WAAW,MAAM,KAAK;AAAA,sBACtB,SAAS,WAAW,OAAO;AAAA,oBAC7B,CAAqD;AAAA,oBACrD,GAAI,WAAW,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAAA,oBAC7C,kBAAkB;AAAA,sBAChB,CAAC,mBAAmB,GAAG;AAAA,wBACrB,QAAQ,MAAM,KAAK;AAAA,sBACrB;AAAA,oBACF;AAAA,kBACF,CAAC;AAAA,gBACH;AAEA,iCAAiB,MAAM,YAAY,IAAI;AAAA,cACzC,WAAW,MAAM,KAAK,SAAS,sBAAsB;AACnD,sBAAM,cACJ,iBAAM,KAAK,YAAX,YACA,wBAAwB,MAAM,MAD9B,YAEA,MAAM,KAAK;AAEb,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN;AAAA,kBACA,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,kBACxD,QAAQ;AAAA,oBACN,OAAO,MAAM,KAAK;AAAA,kBACpB;AAAA,kBACA,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM,KAAK;AAAA,oBACrB;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,YAAY;AACzC,iCAAiB,MAAM,YAAY,IAAI;AAEvC,sBAAM,qBACJ,WAAM,KAAK,wBAAX,YAAkC;AAIpC,sBAAM,oBACJ,qBAAqB,QAChB,wDAA6C;AAAA,kBAC5C;AAAA,gBACF,MAFC,YAGD,6CACE,iBACF,MALC,YAMD,MAAM,KAAK,KACX,MAAM,KAAK;AAEjB,sBAAM,WAAW,OAAO,MAAM,KAAK,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ;AAAA,kBACA,OAAO,MAAM,KAAK;AAAA,kBAClB,kBAAkB;AAAA,kBAClB,SAAS;AAAA,gBACX,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,oBACN,aAAa,MAAM,KAAK;AAAA,oBACxB,MAAM,MAAM,KAAK;AAAA,oBACjB,WAAW,MAAM,KAAK;AAAA,oBACtB,GAAI,MAAM,KAAK,UAAU,OACrB,EAAE,QAAQ,MAAM,KAAK,OAAO,IAC5B,CAAC;AAAA,oBACL,GAAI,MAAM,KAAK,SAAS,OACpB,EAAE,OAAO,MAAM,KAAK,MAA8B,IAClD,CAAC;AAAA,kBACP;AAAA,kBACA,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM,KAAK;AAAA,oBACrB;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,kBAAkB;AAE/C,iCAAiB,MAAM,YAAY,IAAI;AAAA,cAGzC,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,sBAAM,WAAW,iBAAiB,MAAM,YAAY;AACpD,qBACE,qCAAU,eACV,CAAC,SAAS,WAAW,cACrB,MAAM,KAAK,UAAU,SAAS,eAC9B;AACA,sBAAI,CAAC,SAAS,WAAW,SAAS;AAChC,+BAAW,QAAQ;AAAA,sBACjB,MAAM;AAAA,sBACN,IAAI,SAAS;AAAA,sBACb,OAAO,gBAAgB,MAAM,KAAK,UAAU,IAAI;AAAA,oBAClD,CAAC;AAAA,kBACH;AAEA,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,SAAS;AAAA,oBACb,OAAO;AAAA,kBACT,CAAC;AAED,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,SAAS;AAAA,kBACf,CAAC;AAED,2BAAS,WAAW,aAAa;AAAA,gBACnC;AAGA,oBAAI,YAAY,MAAM,KAAK,WAAW,aAAa;AACjD,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,YAAY,SAAS;AAAA,oBACrB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,oBACxD,OAAO,KAAK,UAAU;AAAA,sBACpB,QAAQ,MAAM,KAAK;AAAA,sBACnB,WAAW,MAAM,KAAK;AAAA,oBACxB,CAAqD;AAAA,oBACrD,kBAAkB;AAAA,sBAChB,CAAC,mBAAmB,GAAG;AAAA,wBACrB,QAAQ,MAAM,KAAK;AAAA,sBACrB;AAAA,oBACF;AAAA,kBACF,CAAC;AAAA,gBACH;AAEA,iCAAiB,MAAM,YAAY,IAAI;AAAA,cACzC,WAAW,MAAM,KAAK,SAAS,wBAAwB;AACrD,iCAAiB,MAAM,YAAY,IAAI;AAEvC,sBAAM,mBACJ,sBAAK,QAAO,eAAZ,4CAA8BD,YAAW;AAC3C,sBAAM,qBACJ,WAAM,KAAK,wBAAX,YAAkC,MAAM,KAAK;AAC/C,6DAA6C;AAAA,kBAC3C;AAAA,kBACA;AAAA,gBACF;AAEA,sBAAM,WAAW,OAAO,MAAM,KAAK,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ;AAAA,kBACA,OAAO,MAAM,KAAK;AAAA,kBAClB,kBAAkB;AAAA,kBAClB,SAAS;AAAA,gBACX,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,YAAY;AAAA,gBACd,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,oBAAoB;AACjD,iCAAiB,MAAM,YAAY,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB,iBAAiB,aAAa;AAAA,kBACxD,OAAO,KAAK,UAAU;AAAA,oBACpB,QAAQ;AAAA,sBACN,MAAM;AAAA,sBACN,SAAS,MAAM,KAAK,OAAO;AAAA,sBAC3B,WAAW,MAAM,KAAK,OAAO;AAAA,sBAC7B,MAAM,MAAM,KAAK,OAAO;AAAA,sBACxB,kBAAkB,MAAM,KAAK,OAAO;AAAA,sBACpC,KAAK,MAAM,KAAK,OAAO;AAAA,oBACzB;AAAA,kBACF,CAAqD;AAAA,kBACrD,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG,EAAE,QAAQ,MAAM,KAAK,GAAG;AAAA,kBACjD;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,cAAc;AAC3C,iCAAiB,MAAM,YAAY,IAAI;AAEvC,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB,iBAAiB,OAAO;AAAA,kBAClD,OAAO,KAAK,UAAU;AAAA,oBACpB,QAAQ;AAAA,sBACN,UAAU,MAAM,KAAK,OAAO;AAAA,oBAC9B;AAAA,kBACF,CAAgD;AAAA,kBAChD,GAAI,2BAA2B;AAAA,oBAC7B,kBAAkB;AAAA,kBACpB;AAAA,kBACA,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG,EAAE,QAAQ,MAAM,KAAK,GAAG;AAAA,kBACjD;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,qBAAqB;AAClD,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,MAAM,KAAK;AAAA,kBACvB,UAAU,gBAAgB,iBAAiB,OAAO;AAAA,kBAClD,QAAQ;AAAA,oBACN,QAAQ,MAAM,KAAK,OAAO;AAAA,sBACxB,CAAC,UAMM;AAAA,wBACL,QAAQ,KAAK;AAAA,wBACb,QAAQ,KAAK;AAAA,wBACb,SACE,KAAK,QAAQ,SAAS,SAClB;AAAA,0BACE,MAAM;AAAA,0BACN,UAAU,KAAK,QAAQ;AAAA,wBACzB,IACA,EAAE,MAAM,UAAmB;AAAA,sBACnC;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,KAAK,SAAS,aAAa;AAC1C,sBAAM,sBAAsB,gBAAgB,MAAM,KAAK,EAAE;AAIzD,sBAAM,qBAAqB,OAAO;AAAA,kBAChC,oBAAoB;AAAA,gBACtB,EACG;AAAA,kBACC,CAAC,CAAC,GAAG,MAAM,MACT,WAAW,YAAY,WAAW;AAAA,gBACtC,EACC,IAAI,CAAC,CAAC,YAAY,MAAM,YAAY;AAEvC,2BAAW,gBAAgB,oBAAoB;AAC7C,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,GAAG,MAAM,KAAK,EAAE,IAAI,YAAY;AAAA,oBACpC,kBAAkB;AAAA,sBAChB,CAAC,mBAAmB,GAAG;AAAA,wBACrB,QAAQ,MAAM,KAAK;AAAA,wBACnB,4BACE,WAAM,KAAK,sBAAX,YAAgC;AAAA,sBACpC;AAAA,oBACF;AAAA,kBACF,CAAC;AAAA,gBACH;AAEA,uBAAO,gBAAgB,MAAM,KAAK,EAAE;AAAA,cACtC;AAAA,YACF,WAAW,0CAA0C,KAAK,GAAG;AAC3D,oBAAM,WAAW,iBAAiB,MAAM,YAAY;AAEpD,kBAAI,YAAY,MAAM;AACpB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,OAAO,MAAM;AAAA,gBACf,CAAC;AAAA,cACH;AAAA,YACF,WAAW,wCAAwC,KAAK,GAAG;AACzD,oBAAM,WAAW,iBAAiB,MAAM,YAAY;AAEpD,kBAAI,YAAY,MAAM;AACpB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,OAAO,MAAM;AAAA,gBACf,CAAC;AAAA,cACH;AAAA,YACF,WAAW,gDAAgD,KAAK,GAAG;AACjE,oBAAM,WAAW,iBAAiB,MAAM,YAAY;AAEpD,kBAAI,qCAAU,YAAY;AACxB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,OAAO,gBAAgB,MAAM,KAAK;AAAA,gBACpC,CAAC;AAED,yBAAS,WAAW,UAAU;AAAA,cAChC;AAAA,YACF,WAAW,+CAA+C,KAAK,GAAG;AAChE,oBAAM,WAAW,iBAAiB,MAAM,YAAY;AAEpD,mBAAI,qCAAU,eAAc,CAAC,SAAS,WAAW,YAAY;AAC3D,oBAAI,CAAC,SAAS,WAAW,SAAS;AAChC,6BAAW,QAAQ;AAAA,oBACjB,MAAM;AAAA,oBACN,IAAI,SAAS;AAAA,oBACb,OAAO,gBAAgB,MAAM,IAAI;AAAA,kBACnC,CAAC;AAED,2BAAS,WAAW,UAAU;AAAA,gBAChC;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,OAAO;AAAA,gBACT,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,gBACf,CAAC;AAED,yBAAS,WAAW,aAAa;AAAA,cACnC;AAAA,YACF,WAAW,+CAA+C,KAAK,GAAG;AAChE,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,YAAY,MAAM;AAAA,gBAClB,UAAU,gBAAgB,iBAAiB,kBAAkB;AAAA,gBAC7D,QAAQ;AAAA,kBACN,QAAQ,MAAM;AAAA,gBAChB;AAAA,gBACA,aAAa;AAAA,cACf,CAAC;AAAA,YACH,WAAW,4CAA4C,KAAK,GAAG;AAC7D,oBAAM,WAAW,iBAAiB,MAAM,YAAY;AAEpD,kBAAI,YAAY,MAAM;AACpB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,OAAO,gBAAgB,MAAM,KAAK;AAAA,gBACpC,CAAC;AAAA,cACH;AAAA,YACF,WAAW,2CAA2C,KAAK,GAAG;AAC5D,oBAAM,WAAW,iBAAiB,MAAM,YAAY;AAEpD,kBAAI,YAAY,MAAM;AACpB,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,kBACb,OAAO;AAAA,gBACT,CAAC;AAED,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,SAAS;AAAA,gBACf,CAAC;AAGD,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY,SAAS;AAAA,kBACrB,UACE,gBAAgB,iBAAiB,kBAAkB;AAAA,kBACrD,OAAO,KAAK,UAAU;AAAA,oBACpB,MAAM,MAAM;AAAA,oBACZ,aAAa,SAAS,gBAAiB;AAAA,kBACzC,CAA0D;AAAA,kBAC1D,kBAAkB;AAAA,gBACpB,CAAC;AAAA,cACH;AAAA,YACF,WAAW,uBAAuB,KAAK,GAAG;AACxC,2BAAa,MAAM,SAAS;AAC5B,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI,MAAM,SAAS;AAAA,gBACnB,WAAW,IAAI,KAAK,MAAM,SAAS,aAAa,GAAI;AAAA,gBACpD,SAAS,MAAM,SAAS;AAAA,cAC1B,CAAC;AAAA,YACH,WAAW,iBAAiB,KAAK,GAAG;AAClC,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI,MAAM;AAAA,gBACV,OAAO,MAAM;AAAA,cACf,CAAC;AAED,oBACE,mBAAQ,oBAAR,mBAA0B,yBAA1B,mBAAgD,aAChD,MAAM,UACN;AACA,yBAAS,KAAK,MAAM,QAAQ;AAAA,cAC9B;AAAA,YACF,WAAW,MAAM,SAAS,yCAAyC;AAEjE,kBAAI,MAAM,gBAAgB,GAAG;AAC3B,sBAAM,sBAAsB,gBAAgB,MAAM,OAAO;AAEzD,oCAAoB,aAAa,MAAM,aAAa,IAClD;AAGF,2BAAW,gBAAgB,OAAO;AAAA,kBAChC,oBAAoB;AAAA,gBACtB,GAAG;AACD,sBACE,oBAAoB,aAAa,YAAY,MAC7C,gBACA;AACA,+BAAW,QAAQ;AAAA,sBACjB,MAAM;AAAA,sBACN,IAAI,GAAG,MAAM,OAAO,IAAI,YAAY;AAAA,sBACpC,kBAAkB;AAAA,wBAChB,CAAC,mBAAmB,GAAG;AAAA,0BACrB,QAAQ,MAAM;AAAA,wBAChB;AAAA,sBACF;AAAA,oBACF,CAAC;AACD,wCAAoB,aAAa,YAAY,IAC3C;AAAA,kBACJ;AAAA,gBACF;AAEA,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,GAAG,MAAM,OAAO,IAAI,MAAM,aAAa;AAAA,kBAC3C,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM;AAAA,sBACd,4BACE,2BAAgB,MAAM,OAAO,MAA7B,mBAAgC,qBAAhC,YACA;AAAA,oBACJ;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF,WAAW,MAAM,SAAS,yCAAyC;AACjE,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,IAAI,GAAG,MAAM,OAAO,IAAI,MAAM,aAAa;AAAA,gBAC3C,OAAO,MAAM;AAAA,gBACb,kBAAkB;AAAA,kBAChB,CAAC,mBAAmB,GAAG;AAAA,oBACrB,QAAQ,MAAM;AAAA,kBAChB;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH,WAAW,MAAM,SAAS,wCAAwC;AAGhE,kBAAI,OAAO;AACT,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,IAAI,GAAG,MAAM,OAAO,IAAI,MAAM,aAAa;AAAA,kBAC3C,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,QAAQ,MAAM;AAAA,oBAChB;AAAA,kBACF;AAAA,gBACF,CAAC;AAGD,gCAAgB,MAAM,OAAO,EAAG,aAC9B,MAAM,aACR,IAAI;AAAA,cACN,OAAO;AAGL,gCAAgB,MAAM,OAAO,EAAG,aAC9B,MAAM,aACR,IAAI;AAAA,cACN;AAAA,YACF,WAAW,wBAAwB,KAAK,GAAG;AACzC,6BAAe;AAAA,gBACb,SAAS,8BAA8B;AAAA,kBACrC,eAAc,WAAM,SAAS,uBAAf,mBAAmC;AAAA,kBACjD;AAAA,gBACF,CAAC;AAAA,gBACD,MAAK,iBAAM,SAAS,uBAAf,mBAAmC,WAAnC,YAA6C;AAAA,cACpD;AACA,sBAAQ,MAAM,SAAS;AACvB,kBAAI,OAAO,MAAM,SAAS,iBAAiB,UAAU;AACnD,8BAAc,MAAM,SAAS;AAAA,cAC/B;AAAA,YACF,WAAW,sBAAsB,KAAK,GAAG;AACvC,oBAAM,oBACJ,WAAM,SAAS,uBAAf,mBAAmC;AACrC,6BAAe;AAAA,gBACb,SAAS,mBACL,8BAA8B;AAAA,kBAC5B,cAAc;AAAA,kBACd;AAAA,gBACF,CAAC,IACD;AAAA,gBACJ,KAAK,8CAAoB;AAAA,cAC3B;AACA,uBAAQ,WAAM,SAAS,UAAf,YAAwB;AAAA,YAClC,WAAW,+BAA+B,KAAK,GAAG;AAChD,iCAAmB,KAAK,MAAM,UAAU;AACxC,kBAAI,MAAM,WAAW,SAAS,gBAAgB;AAC5C,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AAAA,kBAC7C,KAAK,MAAM,WAAW;AAAA,kBACtB,OAAO,MAAM,WAAW;AAAA,gBAC1B,CAAC;AAAA,cACH,WAAW,MAAM,WAAW,SAAS,iBAAiB;AACpD,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AAAA,kBAC7C,WAAW;AAAA,kBACX,OAAO,MAAM,WAAW;AAAA,kBACxB,UAAU,MAAM,WAAW;AAAA,kBAC3B,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,MAAM,MAAM,WAAW;AAAA,sBACvB,QAAQ,MAAM,WAAW;AAAA,sBACzB,OAAO,MAAM,WAAW;AAAA,oBAC1B;AAAA,kBAIF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,WAAW,SAAS,2BAA2B;AAC9D,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AAAA,kBAC7C,WAAW;AAAA,kBACX,OAAO,MAAM,WAAW;AAAA,kBACxB,UAAU,MAAM,WAAW;AAAA,kBAC3B,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,MAAM,MAAM,WAAW;AAAA,sBACvB,QAAQ,MAAM,WAAW;AAAA,sBACzB,aAAa,MAAM,WAAW;AAAA,oBAChC;AAAA,kBAIF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,MAAM,WAAW,SAAS,aAAa;AAChD,2BAAW,QAAQ;AAAA,kBACjB,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,KAAI,sBAAK,QAAO,eAAZ,4CAA8BA,YAAW;AAAA,kBAC7C,WAAW;AAAA,kBACX,OAAO,MAAM,WAAW;AAAA,kBACxB,UAAU,MAAM,WAAW;AAAA,kBAC3B,kBAAkB;AAAA,oBAChB,CAAC,mBAAmB,GAAG;AAAA,sBACrB,MAAM,MAAM,WAAW;AAAA,sBACvB,QAAQ,MAAM,WAAW;AAAA,sBACzB,OAAO,MAAM,WAAW;AAAA,oBAC1B;AAAA,kBAIF;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF,WAAW,aAAa,KAAK,GAAG;AAC9B,yBAAW,QAAQ,EAAE,MAAM,SAAS,OAAO,MAAM,CAAC;AAAA,YACpD;AAAA,UACF;AAAA,UAEA,MAAM,YAAY;AAChB,kBAAM,mBAA6C;AAAA,cACjD,CAAC,mBAAmB,GAAG;AAAA,gBACrB;AAAA,gBACA,GAAI,SAAS,SAAS,IAAI,EAAE,SAAS,IAAI,CAAC;AAAA,gBAC1C,GAAI,gBAAgB,SAAY,EAAE,YAAY,IAAI,CAAC;AAAA,cACrD;AAAA,YACF;AAEA,uBAAW,QAAQ;AAAA,cACjB,MAAM;AAAA,cACN;AAAA,cACA,OAAO,4BAA4B,KAAK;AAAA,cACxC;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,SAAS,EAAE,KAAK;AAAA,MAChB,UAAU,EAAE,SAAS,gBAAgB;AAAA,IACvC;AAAA,EACF;AACF;AAEA,SAAS,iBACP,OACwE;AACxE,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,8BACP,OACuE;AACvE,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,wBACP,OAGA;AACA,SACE,MAAM,SAAS,wBAAwB,MAAM,SAAS;AAE1D;AAEA,SAAS,sBACP,OAC6D;AAC7D,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,uBACP,OAC8D;AAC9D,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,0CACP,OAGA;AACA,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,wCACP,OAGA;AACA,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,+CACP,OAGA;AACA,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,4CACP,OAGA;AACA,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,2CACP,OAGA;AACA,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,gDACP,OAC2D;AAC3D,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,+CACP,OAC0D;AAC1D,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,+BACP,OACwE;AACxE,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,+BACP,OAGA;AACA,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,aACP,OACmD;AACnD,SAAO,MAAM,SAAS;AACxB;AAEA,SAAS,mBACP,QAC2C;AA9rE7C;AA+rEE,MAAI,UAAU,MAAM;AAClB,WAAO,CAAC;AAAA,EACV;AAEA,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO;AAAA,QACL,QAAQ,EAAE,MAAM,UAAU,QAAO,YAAO,UAAP,YAAgB,OAAU;AAAA;AAAA,QAE3D,GAAI,OAAO,WAAW,QAAQ,EAAE,SAAS,OAAO,QAAQ;AAAA,MAC1D;AAAA,IACF,KAAK;AACH,aAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,KAAK,OAAO,IAAI,EAAE;AAAA,IACzD,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,KAAK,OAAO;AAAA,UACZ,SAAS,OAAO;AAAA,QAClB;AAAA,MACF;AAAA,EACJ;AACF;AAIA,SAAS,gBAAgB,OAAe;AACtC,SAAO,KAAK,UAAU,KAAK,EAAE,MAAM,GAAG,EAAE;AAC1C;;;AO1tEA;AAAA,EACE,kBAAAE;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA,iBAAAC;AAAA,OACK;;;ACNP;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAaX,IAAM,iCAAiCF;AAAA,EAAW,MACvDC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,cAAcA,IAAE,OAAO,EAAE,QAAQ;AAAA,MACjC,OAAOA,IAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAG,EAAE,QAAQ,CAAG,EAAE,QAAQ;AAAA,IAC5D,CAAC;AAAA,EACH;AACF;;;ADJO,IAAM,oBAAN,MAAiD;AAAA,EAOtD,YACW,SACQ,QACjB;AAFS;AACQ;AARnB,SAAS,uBAAuB;AAAA,EAS7B;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA,QAAQ;AAAA,IACR,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA+C;AAC7C,UAAM,WAA8B,CAAC;AAGrC,UAAM,gBAAgB,MAAMC,sBAAqB;AAAA,MAC/C,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAGD,UAAM,cAAuC;AAAA,MAC3C,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,MACP;AAAA,MACA,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,IACF;AAEA,QAAI,cAAc;AAChB,UAAI,CAAC,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,EAAE,SAAS,YAAY,GAAG;AACvE,oBAAY,kBAAkB;AAAA,MAChC,OAAO;AACL,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS,8BAA8B,YAAY;AAAA,QACrD,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI,eAAe;AACjB,YAAM,qBAA2C,CAAC;AAElD,iBAAW,OAAO,oBAAoB;AACpC,cAAM,QAAQ,mBAAmB,GAAiC;AAClE,YAAI,UAAU,QAAW;AACvB,sBAAY,GAAG,IAAI;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,UAAU;AACZ,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,+EAA+E,QAAQ;AAAA,MAClG,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SAC2D;AArG/D;AAsGI,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,aAAa,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAE5D,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA,UAAU;AAAA,IACZ,IAAI,MAAMC,eAAc;AAAA,MACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D,MAAM;AAAA,MACN,uBAAuB;AAAA,MACvB,2BAA2B,4BAA4B;AAAA,MACvD,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,MAAM,KAAK,UAAU,WAAW;AAAA,MAClC;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AEnIA;AAAA,EACE,kBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA,qBAAAC;AAAA,OACK;;;ACZP,SAAS,cAAAC,cAAY,aAAAC,mBAAiB;AACtC,SAAS,KAAAC,WAAS;AAEX,IAAM,oCAAoCF;AAAA,EAAW,MAC1DC;AAAA,IACEC,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO;AAAA,MACf,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,MAC7B,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,MAC7B,OAAOA,IACJ;AAAA,QACCA,IAAE,OAAO;AAAA,UACP,MAAMA,IAAE,OAAO;AAAA,UACf,OAAOA,IAAE,OAAO;AAAA,UAChB,KAAKA,IAAE,OAAO;AAAA,QAChB,CAAC;AAAA,MACH,EACC,QAAQ;AAAA,MACX,UAAUA,IACP;AAAA,QACCA,IAAE,OAAO;AAAA,UACP,IAAIA,IAAE,OAAO;AAAA,UACb,MAAMA,IAAE,OAAO;AAAA,UACf,OAAOA,IAAE,OAAO;AAAA,UAChB,KAAKA,IAAE,OAAO;AAAA,UACd,MAAMA,IAAE,OAAO;AAAA,UACf,QAAQA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,UAC1B,aAAaA,IAAE,OAAO;AAAA,UACtB,aAAaA,IAAE,OAAO;AAAA,UACtB,mBAAmBA,IAAE,OAAO;AAAA,UAC5B,gBAAgBA,IAAE,OAAO;AAAA,QAC3B,CAAC;AAAA,MACH,EACC,QAAQ;AAAA,IACb,CAAC;AAAA,EACH;AACF;;;ACpCA;AAAA,EACE,cAAAC;AAAA,EACA,aAAAC;AAAA,OAEK;AACP,SAAS,KAAAC,WAAS;AAYX,IAAM,kCAAkCF;AAAA,EAAW,MACxDC;AAAA,IACEC,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA,MAKP,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAKtC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,MAK9B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAM5B,aAAaA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAM1D,wBAAwBA,IACrB,MAAMA,IAAE,KAAK,CAAC,QAAQ,SAAS,CAAC,CAAC,EACjC,QAAQ,CAAC,SAAS,CAAC,EACnB,SAAS;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;AFdA,IAAM,cAAc;AAAA,EAClB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AACT;AAEO,IAAM,2BAAN,MAA+D;AAAA,EAOpE,YACW,SACQ,QACjB;AAFS;AACQ;AARnB,SAAS,uBAAuB;AAAA,EAS7B;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAmC;AACjC,UAAM,WAA8B,CAAC;AAGrC,UAAM,gBAAgB,MAAMC,sBAAqB;AAAA,MAC/C,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAGD,UAAM,WAAW,IAAI,SAAS;AAC9B,UAAM,OACJ,iBAAiB,aACb,IAAI,KAAK,CAAC,KAAK,CAAC,IAChB,IAAI,KAAK,CAACC,2BAA0B,KAAK,CAAC,CAAC;AAEjD,aAAS,OAAO,SAAS,KAAK,OAAO;AACrC,UAAM,gBAAgB,qBAAqB,SAAS;AACpD,aAAS;AAAA,MACP;AAAA,MACA,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA,MAC7C,SAAS,aAAa;AAAA,IACxB;AAGA,QAAI,eAAe;AACjB,YAAM,4BAA4B;AAAA,QAChC,SAAS,cAAc;AAAA,QACvB,UAAU,cAAc;AAAA,QACxB,QAAQ,cAAc;AAAA;AAAA;AAAA,QAGtB,iBAAiB;AAAA,UACf;AAAA,UACA;AAAA,QACF,EAAE,SAAS,KAAK,OAAO,IACnB,SACA;AAAA,QACJ,aAAa,cAAc;AAAA,QAC3B,yBAAyB,cAAc;AAAA,MACzC;AAEA,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,yBAAyB,GAAG;AACpE,YAAI,SAAS,MAAM;AACjB,cAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,uBAAW,QAAQ,OAAO;AACxB,uBAAS,OAAO,GAAG,GAAG,MAAM,OAAO,IAAI,CAAC;AAAA,YAC1C;AAAA,UACF,OAAO;AACL,qBAAS,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SACkE;AAlLtE;AAmLI,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,UAAU,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAEzD,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA,UAAU;AAAA,IACZ,IAAI,MAAMC,mBAAkB;AAAA,MAC1B,KAAK,KAAK,OAAO,IAAI;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,MACD,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2BC;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,UAAM,WACJ,SAAS,YAAY,QAAQ,SAAS,YAAY,cAC9C,YAAY,SAAS,QAAoC,IACzD;AAEN,WAAO;AAAA,MACL,MAAM,SAAS;AAAA,MACf,WACE,0BAAS,aAAT,mBAAmB,IAAI,cAAY;AAAA,QACjC,MAAM,QAAQ;AAAA,QACd,aAAa,QAAQ;AAAA,QACrB,WAAW,QAAQ;AAAA,MACrB,QAJA,aAKA,cAAS,UAAT,mBAAgB,IAAI,WAAS;AAAA,QAC3B,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,MAClB,QATA,YAUA,CAAC;AAAA,MACH;AAAA,MACA,oBAAmB,cAAS,aAAT,YAAqB;AAAA,MACxC;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AGrOO,IAAM,UACX,OACI,WACA;;;AhDyIC,SAAS,aACd,UAAkC,CAAC,GACnB;AAhJlB;AAiJE,QAAM,WACJ;AAAA,IACE,oBAAoB;AAAA,MAClB,cAAc,QAAQ;AAAA,MACtB,yBAAyB;AAAA,IAC3B,CAAC;AAAA,EACH,MALA,YAKK;AAEP,QAAM,gBAAe,aAAQ,SAAR,YAAgB;AAErC,QAAM,aAAa,MACjB;AAAA,IACE;AAAA,MACE,eAAe,UAAU,WAAW;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,yBAAyB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC,CAAC;AAAA,MACF,uBAAuB,QAAQ;AAAA,MAC/B,kBAAkB,QAAQ;AAAA,MAC1B,GAAG,QAAQ;AAAA,IACb;AAAA,IACA,iBAAiB,OAAO;AAAA,EAC1B;AAEF,QAAM,kBAAkB,CAAC,YACvB,IAAI,wBAAwB,SAAS;AAAA,IACnC,UAAU,GAAG,YAAY;AAAA,IACzB,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,IACpC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,wBAAwB,CAAC,YAC7B,IAAI,8BAA8B,SAAS;AAAA,IACzC,UAAU,GAAG,YAAY;AAAA,IACzB,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,IACpC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,uBAAuB,CAAC,YAC5B,IAAI,qBAAqB,SAAS;AAAA,IAChC,UAAU,GAAG,YAAY;AAAA,IACzB,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,IACpC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,mBAAmB,CAAC,YACxB,IAAI,iBAAiB,SAAS;AAAA,IAC5B,UAAU,GAAG,YAAY;AAAA,IACzB,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,IACpC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,2BAA2B,CAAC,YAChC,IAAI,yBAAyB,SAAS;AAAA,IACpC,UAAU,GAAG,YAAY;AAAA,IACzB,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,IACpC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,oBAAoB,CAAC,YACzB,IAAI,kBAAkB,SAAS;AAAA,IAC7B,UAAU,GAAG,YAAY;AAAA,IACzB,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,IACpC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,sBAAsB,CAAC,YAAoC;AAC/D,QAAI,YAAY;AACd,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,qBAAqB,OAAO;AAAA,EACrC;AAEA,QAAM,uBAAuB,CAAC,YAAoC;AAChE,WAAO,IAAI,6BAA6B,SAAS;AAAA,MAC/C,UAAU,GAAG,YAAY;AAAA,MACzB,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB,CAAC,OAAO;AAAA,IAC1B,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,SAAU,SAAiC;AAC1D,WAAO,oBAAoB,OAAO;AAAA,EACpC;AAEA,WAAS,uBAAuB;AAChC,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,aAAa;AACtB,WAAS,YAAY;AACrB,WAAS,YAAY;AACrB,WAAS,iBAAiB;AAC1B,WAAS,gBAAgB;AACzB,WAAS,qBAAqB;AAE9B,WAAS,QAAQ;AACjB,WAAS,aAAa;AAEtB,WAAS,gBAAgB;AACzB,WAAS,qBAAqB;AAE9B,WAAS,SAAS;AAClB,WAAS,cAAc;AAEvB,WAAS,QAAQ;AAEjB,SAAO;AACT;AAKO,IAAM,SAAS,aAAa;","names":["_a","z","z","lazySchema","zodSchema","z","UnsupportedFunctionalityError","openaiTools","openaiTools","toolCall","combineHeaders","createEventSourceResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","UnsupportedFunctionalityError","getResponseMetadata","mapOpenAIFinishReason","z","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","mapOpenAIFinishReason","getResponseMetadata","createEventSourceResponseHandler","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","lazySchema","zodSchema","z","lazySchema","zodSchema","z","openaiOptions","parseProviderOptions","response","responseHeaders","combineHeaders","createJsonResponseHandler","_a","_b","_c","_d","_e","_f","postJsonToApi","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderToolFactoryWithOutputSchema","lazySchema","zodSchema","z","combineHeaders","createEventSourceResponseHandler","createJsonResponseHandler","generateId","parseProviderOptions","postJsonToApi","UnsupportedFunctionalityError","convertToBase64","parseProviderOptions","z","serializeToolCallArguments","_a","_b","_c","convertToBase64","UnsupportedFunctionalityError","parseProviderOptions","_d","_e","z","lazySchema","zodSchema","z","jsonValueSchema","lazySchema","zodSchema","z","UnsupportedFunctionalityError","validateTypes","openaiTools","validateTypes","_a","UnsupportedFunctionalityError","env","parseProviderOptions","openaiTools","postJsonToApi","combineHeaders","createJsonResponseHandler","providerMetadata","generateId","createEventSourceResponseHandler","combineHeaders","parseProviderOptions","postJsonToApi","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","combineHeaders","convertBase64ToUint8Array","createJsonResponseHandler","parseProviderOptions","postFormDataToApi","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","convertBase64ToUint8Array","postFormDataToApi","combineHeaders","createJsonResponseHandler"]}